<?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>175818</bug_id>
          
          <creation_ts>2017-08-22 02:20:26 -0700</creation_ts>
          <short_desc>Speedometer: Make React/Redux item order consistent</short_desc>
          <delta_ts>2017-08-23 14:40:53 -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="Ryosuke Niwa">rniwa</assigned_to>
          <cc>addyo</cc>
    
    <cc>buildbot</cc>
    
    <cc>cdumez</cc>
    
    <cc>joepeck</cc>
    
    <cc>koivisto</cc>
    
    <cc>mathias</cc>
    
    <cc>rniwa</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1341009</commentid>
    <comment_count>0</comment_count>
    <who name="Mathias Bynens">mathias</who>
    <bug_when>2017-08-22 02:20:26 -0700</bug_when>
    <thetext>Speedometer: Make React/Redux item order consistent</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1341011</commentid>
    <comment_count>1</comment_count>
      <attachid>318749</attachid>
    <who name="Mathias Bynens">mathias</who>
    <bug_when>2017-08-22 02:22:07 -0700</bug_when>
    <thetext>Created attachment 318749
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1341240</commentid>
    <comment_count>2</comment_count>
      <attachid>318749</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-08-22 13:51:06 -0700</bug_when>
    <thetext>Comment on attachment 318749
Patch

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

Don&apos;t you need to rebuild? We&apos;re loading bundle files in the actual test?

&gt; PerformanceTests/Speedometer/resources/todomvc/architecture-examples/react-redux/src/reducers/todos.js:14
&gt; +        ...state,
&gt;          {
&gt;            id: state.reduce((maxId, todo) =&gt; Math.max(todo.id, maxId), -1) + 1,
&gt;            completed: false,
&gt;            text: action.text
&gt; -        },
&gt; -        ...state
&gt; +        }

Hm... I swear I tried this and didn&apos;t work :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1341358</commentid>
    <comment_count>3</comment_count>
      <attachid>318749</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-08-22 16:57:35 -0700</bug_when>
    <thetext>Comment on attachment 318749
Patch

As I suspected, the problem is not fixed if I just apply the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1341464</commentid>
    <comment_count>4</comment_count>
      <attachid>318854</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-08-22 23:20:33 -0700</bug_when>
    <thetext>Created attachment 318854
Fixes the bug</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1341466</commentid>
    <comment_count>5</comment_count>
      <attachid>318854</attachid>
    <who name="Mathias Bynens">mathias</who>
    <bug_when>2017-08-22 23:41:30 -0700</bug_when>
    <thetext>Comment on attachment 318854
Fixes the bug

LGTM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1341467</commentid>
    <comment_count>6</comment_count>
    <who name="Mathias Bynens">mathias</who>
    <bug_when>2017-08-22 23:43:11 -0700</bug_when>
    <thetext>(In reply to Ryosuke Niwa from comment #2)
&gt; Comment on attachment 318749 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=318749&amp;action=review
&gt; 
&gt; Don&apos;t you need to rebuild? We&apos;re loading bundle files in the actual test?
&gt; 
&gt; &gt; PerformanceTests/Speedometer/resources/todomvc/architecture-examples/react-redux/src/reducers/todos.js:14
&gt; &gt; +        ...state,
&gt; &gt;          {
&gt; &gt;            id: state.reduce((maxId, todo) =&gt; Math.max(todo.id, maxId), -1) + 1,
&gt; &gt;            completed: false,
&gt; &gt;            text: action.text
&gt; &gt; -        },
&gt; &gt; -        ...state
&gt; &gt; +        }
&gt; 
&gt; Hm... I swear I tried this and didn&apos;t work :(

Yeah, I forgot to include the re-built files — sorry about that.

The code change is correct though. I’ve upstreamed it here along with tests: https://github.com/reactjs/redux/pull/2575</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1341706</commentid>
    <comment_count>7</comment_count>
      <attachid>318854</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2017-08-23 12:21:34 -0700</bug_when>
    <thetext>Comment on attachment 318854
Fixes the bug

rs=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1341738</commentid>
    <comment_count>8</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-08-23 13:08:37 -0700</bug_when>
    <thetext>There doesn&apos;t appears to be a measurable difference in score for this subtest (each number is the average of 10 iterations).

== Before ==
Safari
74.35
75.24
74.47
74.80

Chrome
88.20
88.38
88.29
89.68

Firefox
44.24
43.50
44.74
44.12

== After ==
Safari
75.19
74.88
74.22
74.57

Chrome
88.74
89.00
89.47
89.60

Firefox
41.47
44.09
43.42
44.12</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1341791</commentid>
    <comment_count>9</comment_count>
      <attachid>318854</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-08-23 14:39:58 -0700</bug_when>
    <thetext>Comment on attachment 318854
Fixes the bug

Clearing flags on attachment: 318854

Committed r221105: &lt;http://trac.webkit.org/changeset/221105&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1341792</commentid>
    <comment_count>10</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-08-23 14:40:00 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1341795</commentid>
    <comment_count>11</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-08-23 14:40:53 -0700</bug_when>
    <thetext>&lt;rdar://problem/34044454&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>318749</attachid>
            <date>2017-08-22 02:22:07 -0700</date>
            <delta_ts>2017-08-22 23:20:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-175818-20170822112205.patch</filename>
            <type>text/plain</type>
            <size>203765</size>
            <attacher name="Mathias Bynens">mathias</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxMDA2CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3Rz
L0NoYW5nZUxvZyBiL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCmluZGV4IGI4YWJkNzVhZWRk
ZWIyNjUyMDBlNjdlNWI3MDgyOTE5NzQ4NDFkNGQuLjY4MDc1YjBmZGUxOGFiZjY4YWIyZTlkNGM1
ODJhMWNjNmZhODAwMDkgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCisr
KyBiL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTctMDgt
MjIgIE1hdGhpYXMgQnluZW5zICA8bWF0aGlhc0BxaXdpLmJlPgorCisgICAgICAgIFNwZWVkb21l
dGVyOiBNYWtlIFJlYWN0L1JlZHV4IGl0ZW0gb3JkZXIgY29uc2lzdGVudAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1ODE4CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUHJldmlvdXNseSwgbmV3IFRPRE8g
aXRlbXMgYXJlIGFkZGVkIHRvIHRoZSB0b3AgaW5zdGVhZCBvZiBhdCB0aGUgYm90dG9tLgorICAg
ICAgICBUaGlzIHBhdGNoIGZpeGVzIHRoYXQuCisKKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3QtcmVkdXgvc3JjL3JlZHVj
ZXJzL3RvZG9zLmpzOiBGb3JjZWQgbmV3IGl0ZW1zIHRvIGJlIGFwcGVuZGVkIHJhdGhlciB0aGFu
IHByZXBlbmRlZC4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNo
aXRlY3R1cmUtZXhhbXBsZXMvcmVhY3QtcmVkdXgveWFybi5sb2NrOiBSZW1vdmVkIHVubmVjZXNz
YXJ5IGZpbGUuCisKIDIwMTctMDgtMTggIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgUkVHUkVTU0lPTihyMjE5NjQwKTogU3BlZWRvbWV0ZXIgbm8gbG9uZ2VyIHJ1
bnMgb24gU2FmYXJpIDcKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIv
cmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0LXJlZHV4L3NyYy9y
ZWR1Y2Vycy90b2Rvcy5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2Vz
L3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0LXJlZHV4L3NyYy9yZWR1Y2Vycy90
b2Rvcy5qcwppbmRleCA1NjE0NTI1MzRhNjI1OGM5ZGVjY2M2ZDJkOTBjMzQ1NWQ0OTUyYjAxLi44
NGQ5ODI2NjRkOWJkMWI5Yzg4ODRiYmFmN2E4Y2FmZjU4ZTkxMzU0IDEwMDY0NAotLS0gYS9QZXJm
b3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1l
eGFtcGxlcy9yZWFjdC1yZWR1eC9zcmMvcmVkdWNlcnMvdG9kb3MuanMKKysrIGIvUGVyZm9ybWFu
Y2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBs
ZXMvcmVhY3QtcmVkdXgvc3JjL3JlZHVjZXJzL3RvZG9zLmpzCkBAIC02LDEyICs2LDEyIEBAIGV4
cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHRvZG9zKHN0YXRlID0gaW5pdGlhbFN0YXRlLCBhY3Rpb24p
IHsKICAgc3dpdGNoIChhY3Rpb24udHlwZSkgewogICAgIGNhc2UgQUREX1RPRE86CiAgICAgICBy
ZXR1cm4gWworICAgICAgICAuLi5zdGF0ZSwKICAgICAgICAgewogICAgICAgICAgIGlkOiBzdGF0
ZS5yZWR1Y2UoKG1heElkLCB0b2RvKSA9PiBNYXRoLm1heCh0b2RvLmlkLCBtYXhJZCksIC0xKSAr
IDEsCiAgICAgICAgICAgY29tcGxldGVkOiBmYWxzZSwKICAgICAgICAgICB0ZXh0OiBhY3Rpb24u
dGV4dAotICAgICAgICB9LAotICAgICAgICAuLi5zdGF0ZQorICAgICAgICB9CiAgICAgICBdCiAK
ICAgICBjYXNlIERFTEVURV9UT0RPOgpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVl
ZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3QtcmVk
dXgveWFybi5sb2NrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3QtcmVkdXgveWFybi5sb2NrCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZGI1YjY4MzFlMWUwZTk3NGYyNTc1ZDBhNDkzMzc4MWYw
ZDQyZjZhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Bl
cmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJl
LWV4YW1wbGVzL3JlYWN0LXJlZHV4L3lhcm4ubG9jaworKysgL2Rldi9udWxsCkBAIC0xLDU1Mjgg
KzAsMCBAQAotIyBUSElTIElTIEFOIEFVVE9HRU5FUkFURUQgRklMRS4gRE8gTk9UIEVESVQgVEhJ
UyBGSUxFIERJUkVDVExZLgotIyB5YXJuIGxvY2tmaWxlIHYxCi1hYmFiQF4xLjAuMDoKLSAgdmVy
c2lvbiAiMS4wLjMiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2Fi
YWIvLS9hYmFiLTEuMC4zLnRneiNiODFkZTVmNzI3NGVjNGU3NTZkNzk3Y2Q4MzRmMzAzNjQyNzI0
ZTVkIgotCi1hYmJyZXZAMSwgYWJicmV2QDEuMC54OgotICB2ZXJzaW9uICIxLjAuOSIKLSAgcmVz
b2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYWJicmV2Ly0vYWJicmV2LTEuMC45
LnRneiM5MWI0NzkyNTg4YTc3MzhjMjVmMzVkZDZmNjM3NTJhMmY4Nzc2MTM1IgotCi1hY2NlcHRz
QH4xLjMuMzoKLSAgdmVyc2lvbiAiMS4zLjMiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5
Lnlhcm5wa2cuY29tL2FjY2VwdHMvLS9hY2NlcHRzLTEuMy4zLnRneiNjM2NhNzQzNDkzODY0OGMz
ZTBkOWMxZTMyOGRkNjhiNjIyYzI4NGNhIgotICBkZXBlbmRlbmNpZXM6Ci0gICAgbWltZS10eXBl
cyAifjIuMS4xMSIKLSAgICBuZWdvdGlhdG9yICIwLjYuMSIKLQotYWNvcm4tZ2xvYmFsc0BeMS4w
LjQ6Ci0gIHZlcnNpb24gIjEuMC45IgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJu
cGtnLmNvbS9hY29ybi1nbG9iYWxzLy0vYWNvcm4tZ2xvYmFscy0xLjAuOS50Z3ojNTViYjVlOTg2
OTE1MDdiNzQ1NzlkMDUxMzQxMzIxN2MzODBjNTRjZiIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGFj
b3JuICJeMi4xLjAiCi0KLWFjb3JuLWpzeEBeMy4wLjA6Ci0gIHZlcnNpb24gIjMuMC4xIgotICBy
ZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9hY29ybi1qc3gvLS9hY29ybi1q
c3gtMy4wLjEudGd6I2FmZGY5NDg4ZmIxZWNlZmM4MzQ4ZjZmYjIyZjQ2NGUzMmE1OGIzNmIiCi0g
IGRlcGVuZGVuY2llczoKLSAgICBhY29ybiAiXjMuMC40IgotCi1hY29ybkBeMi4xLjAsIGFjb3Ju
QF4yLjQuMDoKLSAgdmVyc2lvbiAiMi43LjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5
Lnlhcm5wa2cuY29tL2Fjb3JuLy0vYWNvcm4tMi43LjAudGd6I2FiNmU3ZDlkODg2YWFjYThiMDg1
YmMzMzEyYjc5YTE5ODQzM2YwZTciCi0KLWFjb3JuQF4zLjAuMCwgYWNvcm5AXjMuMC40OgotICB2
ZXJzaW9uICIzLjMuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20v
YWNvcm4vLS9hY29ybi0zLjMuMC50Z3ojNDVlMzdmYjM5ZThkYTNmMjViYWVlM2ZmNTM2OWUyYmI1
ZjIyMDE3YSIKLQotYWNvcm5AXjQuMC4xOgotICB2ZXJzaW9uICI0LjAuMyIKLSAgcmVzb2x2ZWQg
Imh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYWNvcm4vLS9hY29ybi00LjAuMy50Z3ojMWEz
ZTg1MGI0MjhlNzNiYTZiMDlkMWNjNTI3ZjVhYWFkNGQwM2VmMSIKLQotYWp2LWtleXdvcmRzQF4x
LjAuMDoKLSAgdmVyc2lvbiAiMS4xLjEiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlh
cm5wa2cuY29tL2Fqdi1rZXl3b3Jkcy8tL2Fqdi1rZXl3b3Jkcy0xLjEuMS50Z3ojMDI1NTBiYzYw
NWEzZTU3NjA0MTU2NTYyOGFmOTcyZTA2YzU0OWQ1MCIKLQotYWp2QF40LjcuMDoKLSAgdmVyc2lv
biAiNC43LjciCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2Fqdi8t
L2Fqdi00LjcuNy50Z3ojNDk4MGQ1ZjY1Y2U5MGEyNTc5NTMyZWVjNjY0MjlmMzIwZGVhMDMyMSIK
LSAgZGVwZW5kZW5jaWVzOgotICAgIGNvICJeNC42LjAiCi0gICAganNvbi1zdGFibGUtc3RyaW5n
aWZ5ICJeMS4wLjEiCi0KLWFsaWduLXRleHRAXjAuMS4xLCBhbGlnbi10ZXh0QF4wLjEuMzoKLSAg
dmVyc2lvbiAiMC4xLjQiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29t
L2FsaWduLXRleHQvLS9hbGlnbi10ZXh0LTAuMS40LnRneiMwY2Q5MGE1NjEwOTNmMzVkMGE5OTI1
NmMyMmI3MDY5NDMzZmFkMTE3IgotICBkZXBlbmRlbmNpZXM6Ci0gICAga2luZC1vZiAiXjMuMC4y
IgotICAgIGxvbmdlc3QgIl4xLjAuMSIKLSAgICByZXBlYXQtc3RyaW5nICJeMS41LjIiCi0KLWFs
cGhhbnVtLXNvcnRAXjEuMC4xLCBhbHBoYW51bS1zb3J0QF4xLjAuMjoKLSAgdmVyc2lvbiAiMS4w
LjIiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2FscGhhbnVtLXNv
cnQvLS9hbHBoYW51bS1zb3J0LTEuMC4yLnRneiM5N2ExMTE5NjQ5YjIxMWFkMzM2OTFkOWY5ZjQ4
NmE4ZWM5ZmJlMGEzIgotCi1hbWRlZmluZUA+PTAuMC40OgotICB2ZXJzaW9uICIxLjAuMCIKLSAg
cmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYW1kZWZpbmUvLS9hbWRlZmlu
ZS0xLjAuMC50Z3ojZmQxNzQ3NDcwMGNiNWNjOWMyYjcwOWYwYmU5ZDIzY2UzYzE5OGMzMyIKLQot
YW5zaS1lc2NhcGVzQF4xLjEuMCwgYW5zaS1lc2NhcGVzQF4xLjQuMDoKLSAgdmVyc2lvbiAiMS40
LjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2Fuc2ktZXNjYXBl
cy8tL2Fuc2ktZXNjYXBlcy0xLjQuMC50Z3ojZDNhOGE4M2IzMTlhYTY3NzkzNjYyYjEzZTc2MWM3
OTExNDIyMzA2ZSIKLQotYW5zaS1odG1sQDAuMC41OgotICB2ZXJzaW9uICIwLjAuNSIKLSAgcmVz
b2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYW5zaS1odG1sLy0vYW5zaS1odG1s
LTAuMC41LnRneiMwZGNhYTVhMDgxMjA2ODY2YmMyNDBhM2I3NzNhMTg0ZWEzYjg4YjY0IgotCi1h
bnNpLXJlZ2V4QF4yLjAuMDoKLSAgdmVyc2lvbiAiMi4wLjAiCi0gIHJlc29sdmVkICJodHRwczov
L3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2Fuc2ktcmVnZXgvLS9hbnNpLXJlZ2V4LTIuMC4wLnRneiNj
NTA2MWI2ZTBlZjhhODE3NzVlNTBmNWQ2NjE1MWJmNmJmMzcxMTA3IgotCi1hbnNpLXN0eWxlc0Be
Mi4yLjE6Ci0gIHZlcnNpb24gIjIuMi4xIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55
YXJucGtnLmNvbS9hbnNpLXN0eWxlcy8tL2Fuc2ktc3R5bGVzLTIuMi4xLnRneiNiNDMyZGQzMzU4
YjYzNGNmNzVlMWU0NjY0MzY4MjQwNTMzYzFkZGJlIgotCi1hbnNpY29sb3JzQH4wLjIuMToKLSAg
dmVyc2lvbiAiMC4yLjEiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29t
L2Fuc2ljb2xvcnMvLS9hbnNpY29sb3JzLTAuMi4xLnRneiNiZTA4OTU5OTA5N2I3NGE1YzljNGE4
NGEwY2RiY2RiNjJiZDg3YWVmIgotCi1hbnltYXRjaEBeMS4zLjA6Ci0gIHZlcnNpb24gIjEuMy4w
IgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9hbnltYXRjaC8tL2Fu
eW1hdGNoLTEuMy4wLnRneiNhM2U1MmZhMzkxNjhjODI1ZmY1N2IwMjQ4MTI2Y2U1YThmZjk1NTA3
IgotICBkZXBlbmRlbmNpZXM6Ci0gICAgYXJyaWZ5ICJeMS4wLjAiCi0gICAgbWljcm9tYXRjaCAi
XjIuMS41IgotCi1hcHBlbmQtdHJhbnNmb3JtQF4wLjMuMDoKLSAgdmVyc2lvbiAiMC4zLjAiCi0g
IHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2FwcGVuZC10cmFuc2Zvcm0v
LS9hcHBlbmQtdHJhbnNmb3JtLTAuMy4wLnRneiNkNjkzM2NlNGE4NWYwOTQ0NWQ5Y2NjNGNjMTE5
MDUxYjczODFhODEzIgotCi1hcHJvYmFAXjEuMC4zOgotICB2ZXJzaW9uICIxLjAuNCIKLSAgcmVz
b2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYXByb2JhLy0vYXByb2JhLTEuMC40
LnRneiMyNzEzNjgwNzc1ZTc2MTRjOGJhMTg2YzA2NWQ0ZTJlNTJkMTA3MmMwIgotCi1hcmUtd2Ut
dGhlcmUteWV0QH4xLjEuMjoKLSAgdmVyc2lvbiAiMS4xLjIiCi0gIHJlc29sdmVkICJodHRwczov
L3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2FyZS13ZS10aGVyZS15ZXQvLS9hcmUtd2UtdGhlcmUteWV0
LTEuMS4yLnRneiM4MGU0NzBlOTVhMDg0Nzk0ZmUxODk5MjYyYzU2NjdjNmU4OGRlMWIzIgotICBk
ZXBlbmRlbmNpZXM6Ci0gICAgZGVsZWdhdGVzICJeMS4wLjAiCi0gICAgcmVhZGFibGUtc3RyZWFt
ICJeMi4wLjAgfHwgXjEuMS4xMyIKLQotYXJncGFyc2VAXjEuMC43OgotICB2ZXJzaW9uICIxLjAu
OSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYXJncGFyc2UvLS9h
cmdwYXJzZS0xLjAuOS50Z3ojNzNkODNiYzI2M2Y4NmU5N2Y4Y2M0ZjZiYWUxYjBlOTBhN2QyMmM4
NiIKLSAgZGVwZW5kZW5jaWVzOgotICAgIHNwcmludGYtanMgIn4xLjAuMiIKLQotYXJyLWRpZmZA
XjIuMC4wOgotICB2ZXJzaW9uICIyLjAuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnku
eWFybnBrZy5jb20vYXJyLWRpZmYvLS9hcnItZGlmZi0yLjAuMC50Z3ojOGYzYjgyN2Y5NTVhOGJk
NjY5Njk3ZTRhNDI1NmFjM2NlYWUzNTZjZiIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGFyci1mbGF0
dGVuICJeMS4wLjEiCi0KLWFyci1mbGF0dGVuQF4xLjAuMToKLSAgdmVyc2lvbiAiMS4wLjEiCi0g
IHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2Fyci1mbGF0dGVuLy0vYXJy
LWZsYXR0ZW4tMS4wLjEudGd6I2U1ZmZlNTRkNDVlMTlmMzJmMjE2ZTkxZWI5OWM4Y2U4OTJiYjYw
NGIiCi0KLWFycmF5LWRpZmZlckBeMS4wLjA6Ci0gIHZlcnNpb24gIjEuMC4wIgotICByZXNvbHZl
ZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9hcnJheS1kaWZmZXIvLS9hcnJheS1kaWZm
ZXItMS4wLjAudGd6I2VmZjUyZTM3NTgyNDlkMzNiZTQwMmI4YmI4ZTU2NGJiMmI1ZDQwMzEiCi0K
LWFycmF5LWVxdWFsQF4xLjAuMDoKLSAgdmVyc2lvbiAiMS4wLjAiCi0gIHJlc29sdmVkICJodHRw
czovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2FycmF5LWVxdWFsLy0vYXJyYXktZXF1YWwtMS4wLjAu
dGd6IzhjMmE1ZWYyNDcyZmQ5ZWE3NDJiMDRjNzdhNzUwOTNiYTI3NTdjOTMiCi0KLWFycmF5LWZs
YXR0ZW5AMS4xLjE6Ci0gIHZlcnNpb24gIjEuMS4xIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdp
c3RyeS55YXJucGtnLmNvbS9hcnJheS1mbGF0dGVuLy0vYXJyYXktZmxhdHRlbi0xLjEuMS50Z3oj
OWE1ZjY5OTA1MWIxZTcwNzMzMjhmMmEwMDg5NjhiNjRlYTI5NTVkMiIKLQotYXJyYXktdW5pb25A
XjEuMC4xOgotICB2ZXJzaW9uICIxLjAuMiIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnku
eWFybnBrZy5jb20vYXJyYXktdW5pb24vLS9hcnJheS11bmlvbi0xLjAuMi50Z3ojOWEzNDQxMGU0
ZjRlM2RhMjNkZWEzNzViZTViZTcwZjI0Nzc4ZWMzOSIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGFy
cmF5LXVuaXEgIl4xLjAuMSIKLQotYXJyYXktdW5pcUBeMS4wLjE6Ci0gIHZlcnNpb24gIjEuMC4z
IgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9hcnJheS11bmlxLy0v
YXJyYXktdW5pcS0xLjAuMy50Z3ojYWY2YWM4NzdhMjVjYzdmNzRlMDU4ODk0NzUzODU4ZGZkYjI0
ZmRiNiIKLQotYXJyYXktdW5pcXVlQF4wLjIuMToKLSAgdmVyc2lvbiAiMC4yLjEiCi0gIHJlc29s
dmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2FycmF5LXVuaXF1ZS8tL2FycmF5LXVu
aXF1ZS0wLjIuMS50Z3ojYTFkOTdjY2FmY2JjMjYyNWNjNzBmYWRjZWIzNmE1MGM1OGIwMWE1MyIK
LQotYXJyaWZ5QF4xLjAuMCwgYXJyaWZ5QF4xLjAuMToKLSAgdmVyc2lvbiAiMS4wLjEiCi0gIHJl
c29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2FycmlmeS8tL2FycmlmeS0xLjAu
MS50Z3ojODk4NTA4ZGEyMjI2ZjM4MGRmOTA0NzI4NDU2ODQ5YzE1MDFhNGIwZCIKLQotYXNhcEB+
Mi4wLjM6Ci0gIHZlcnNpb24gIjIuMC41IgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55
YXJucGtnLmNvbS9hc2FwLy0vYXNhcC0yLjAuNS50Z3ojNTIyNzY1YjUwYzM1MTA0OTBlNTJkN2Rj
ZmUwODVlZjliYTk2OTU4ZiIKLQotYXNuMUB+MC4yLjM6Ci0gIHZlcnNpb24gIjAuMi4zIgotICBy
ZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9hc24xLy0vYXNuMS0wLjIuMy50
Z3ojZGFjODc4NzcxM2M5OTY2ODQ5ZmM4MTgwNzc3ZWJlOWMxZGRmM2I4NiIKLQotYXNzZXJ0LXBs
dXNAXjAuMi4wOgotICB2ZXJzaW9uICIwLjIuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0
cnkueWFybnBrZy5jb20vYXNzZXJ0LXBsdXMvLS9hc3NlcnQtcGx1cy0wLjIuMC50Z3ojZDc0ZTFi
ODdlN2FmZmMwZGI4YWFkYjcwMjFmM2ZlNDgxMDFhYjIzNCIKLQotYXNzZXJ0LXBsdXNAXjEuMC4w
OgotICB2ZXJzaW9uICIxLjAuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBr
Zy5jb20vYXNzZXJ0LXBsdXMvLS9hc3NlcnQtcGx1cy0xLjAuMC50Z3ojZjEyZTBmM2M1ZDc3YjBi
MWNkZDkxNDY5NDJlNGU5NmMxZTRkZDUyNSIKLQotYXNzZXJ0QF4xLjEuMToKLSAgdmVyc2lvbiAi
MS40LjEiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2Fzc2VydC8t
L2Fzc2VydC0xLjQuMS50Z3ojOTk5MTJkNTkxODM2YjVhNmY1YjM0NWMwZjA3ZWVmYzA4ZmM2NWQ5
MSIKLSAgZGVwZW5kZW5jaWVzOgotICAgIHV0aWwgIjAuMTAuMyIKLQotYXN5bmMtZWFjaEBeMS4w
LjA6Ci0gIHZlcnNpb24gIjEuMC4xIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJu
cGtnLmNvbS9hc3luYy1lYWNoLy0vYXN5bmMtZWFjaC0xLjAuMS50Z3ojMTlkMzg2YTFkOWVkYzZl
N2MxYzg1ZDM4OGFlZGJjYzU2ZDMzNjAyZCIKLQotYXN5bmNAXjAuOS4wOgotICB2ZXJzaW9uICIw
LjkuMiIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYXN5bmMvLS9h
c3luYy0wLjkuMi50Z3ojYWVhNzRkNWU2MWMxZjg5OTYxM2JmNjRiZGE2NmQ0Yzc4ZjJmZDE3ZCIK
LQotYXN5bmNAXjEuMy4wLCBhc3luY0BeMS40LjAsIGFzeW5jQF4xLjQuMiwgYXN5bmNAXjEuNS4w
LCBhc3luY0AxLng6Ci0gIHZlcnNpb24gIjEuNS4yIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdp
c3RyeS55YXJucGtnLmNvbS9hc3luYy8tL2FzeW5jLTEuNS4yLnRneiNlYzZhNjFhZTU2NDgwYzBj
M2NiMjQxYzk1NjE4ZTIwODkyZjk2NzJhIgotCi1hc3luY0B+MC4yLjY6Ci0gIHZlcnNpb24gIjAu
Mi4xMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYXN5bmMvLS9h
c3luYy0wLjIuMTAudGd6I2I2YmJlMGIwNjc0YjlkNzE5NzA4Y2EzOGRlOGMyMzdjYjUyNmMzZDEi
Ci0KLWFzeW5ja2l0QF4wLjQuMDoKLSAgdmVyc2lvbiAiMC40LjAiCi0gIHJlc29sdmVkICJodHRw
czovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2FzeW5ja2l0Ly0vYXN5bmNraXQtMC40LjAudGd6I2M3
OWVkOTdmN2YzNGNiOGYyYmExYmM5NzkwYmNjMzY2NDc0YjRiNzkiCi0KLWF1dG9wcmVmaXhlckBe
Ni4zLjE6Ci0gIHZlcnNpb24gIjYuNS4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55
YXJucGtnLmNvbS9hdXRvcHJlZml4ZXIvLS9hdXRvcHJlZml4ZXItNi41LjAudGd6IzkxMGRlMGFh
MGYyMmFmNGM3ZDUwMzY3Y2JjOWQ0ZDQxMjk0NTE2MmYiCi0gIGRlcGVuZGVuY2llczoKLSAgICBi
cm93c2Vyc2xpc3QgIn4xLjQuMCIKLSAgICBjYW5pdXNlLWRiICJeMS4wLjMwMDAwNTQwIgotICAg
IG5vcm1hbGl6ZS1yYW5nZSAiXjAuMS4yIgotICAgIG51bTJmcmFjdGlvbiAiXjEuMi4yIgotICAg
IHBvc3Rjc3MgIl41LjIuMiIKLSAgICBwb3N0Y3NzLXZhbHVlLXBhcnNlciAiXjMuMi4zIgotCi1h
dXRvcHJlZml4ZXJANi40LjE6Ci0gIHZlcnNpb24gIjYuNC4xIgotICByZXNvbHZlZCAiaHR0cHM6
Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9hdXRvcHJlZml4ZXIvLS9hdXRvcHJlZml4ZXItNi40LjEu
dGd6I2MxYmE4NDYxNzU5ZmFmNWZiNzczN2RiZGJlNWVhNDZhNzhjNjhhNmYiCi0gIGRlcGVuZGVu
Y2llczoKLSAgICBicm93c2Vyc2xpc3QgIn4xLjMuNiIKLSAgICBjYW5pdXNlLWRiICJeMS4wLjMw
MDAwNTI3IgotICAgIG5vcm1hbGl6ZS1yYW5nZSAiXjAuMS4yIgotICAgIG51bTJmcmFjdGlvbiAi
XjEuMi4yIgotICAgIHBvc3Rjc3MgIl41LjEuMiIKLSAgICBwb3N0Y3NzLXZhbHVlLXBhcnNlciAi
XjMuMi4zIgotCi1hd3Mtc2lnbjJAfjAuNi4wOgotICB2ZXJzaW9uICIwLjYuMCIKLSAgcmVzb2x2
ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYXdzLXNpZ24yLy0vYXdzLXNpZ24yLTAu
Ni4wLnRneiMxNDM0MmRkMzhkYmNjOTRkMGU1Yjg3ZDc2M2NkNjM2MTJjMGU3OTRmIgotCi1hd3M0
QF4xLjIuMToKLSAgdmVyc2lvbiAiMS40LjEiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5
Lnlhcm5wa2cuY29tL2F3czQvLS9hd3M0LTEuNC4xLnRneiNmZGU3ZDUyOTI0NjZkMjMwZTVlZTBm
NGUwMzhkOWRmYWFiMDhmYzYxIgotCi1iYWJlbC1jb2RlLWZyYW1lQF42LjExLjAsIGJhYmVsLWNv
ZGUtZnJhbWVAXjYuMTYuMCwgYmFiZWwtY29kZS1mcmFtZUBeNi44LjA6Ci0gIHZlcnNpb24gIjYu
MTYuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYmFiZWwtY29k
ZS1mcmFtZS8tL2JhYmVsLWNvZGUtZnJhbWUtNi4xNi4wLnRneiNmOTBlNjBkYTA4NjI5MDlkM2Nl
MDk4NzMzYjVkMzk4N2M5N2NiOGRlIgotICBkZXBlbmRlbmNpZXM6Ci0gICAgY2hhbGsgIl4xLjEu
MCIKLSAgICBlc3V0aWxzICJeMi4wLjIiCi0gICAganMtdG9rZW5zICJeMi4wLjAiCi0KLWJhYmVs
LWNvcmVAXjYuMC4wLCBiYWJlbC1jb3JlQF42LjExLjQsIGJhYmVsLWNvcmVAXjYuMTQuMCwgYmFi
ZWwtY29yZUBeNi4xNi4wOgotICB2ZXJzaW9uICI2LjE3LjAiCi0gIHJlc29sdmVkICJodHRwczov
L3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2JhYmVsLWNvcmUvLS9iYWJlbC1jb3JlLTYuMTcuMC50Z3oj
NmM0NTc2NDQ3ZGY0NzllMjQxZTU4YzgwN2U0YmM3ZGE0ZGI3ZjQyNSIKLSAgZGVwZW5kZW5jaWVz
OgotICAgIGJhYmVsLWNvZGUtZnJhbWUgIl42LjE2LjAiCi0gICAgYmFiZWwtZ2VuZXJhdG9yICJe
Ni4xNy4wIgotICAgIGJhYmVsLWhlbHBlcnMgIl42LjE2LjAiCi0gICAgYmFiZWwtbWVzc2FnZXMg
Il42LjguMCIKLSAgICBiYWJlbC1yZWdpc3RlciAiXjYuMTYuMCIKLSAgICBiYWJlbC1ydW50aW1l
ICJeNi45LjEiCi0gICAgYmFiZWwtdGVtcGxhdGUgIl42LjE2LjAiCi0gICAgYmFiZWwtdHJhdmVy
c2UgIl42LjE2LjAiCi0gICAgYmFiZWwtdHlwZXMgIl42LjE2LjAiCi0gICAgYmFieWxvbiAiXjYu
MTEuMCIKLSAgICBjb252ZXJ0LXNvdXJjZS1tYXAgIl4xLjEuMCIKLSAgICBkZWJ1ZyAiXjIuMS4x
IgotICAgIGpzb241ICJeMC40LjAiCi0gICAgbG9kYXNoICJeNC4yLjAiCi0gICAgbWluaW1hdGNo
ICJeMy4wLjIiCi0gICAgcGF0aC1leGlzdHMgIl4xLjAuMCIKLSAgICBwYXRoLWlzLWFic29sdXRl
ICJeMS4wLjAiCi0gICAgcHJpdmF0ZSAiXjAuMS42IgotICAgIHNoZWJhbmctcmVnZXggIl4xLjAu
MCIKLSAgICBzbGFzaCAiXjEuMC4wIgotICAgIHNvdXJjZS1tYXAgIl4wLjUuMCIKLQotYmFiZWwt
Y29yZUA2LjE0LjA6Ci0gIHZlcnNpb24gIjYuMTQuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVn
aXN0cnkueWFybnBrZy5jb20vYmFiZWwtY29yZS8tL2JhYmVsLWNvcmUtNi4xNC4wLnRneiNjOWUx
M2VkNGUyZjk3MzI5MjE1NDk2ZmQ5ZmI0OGYyYjNiY2I5YjQyIgotICBkZXBlbmRlbmNpZXM6Ci0g
ICAgYmFiZWwtY29kZS1mcmFtZSAiXjYuOC4wIgotICAgIGJhYmVsLWdlbmVyYXRvciAiXjYuMTQu
MCIKLSAgICBiYWJlbC1oZWxwZXJzICJeNi44LjAiCi0gICAgYmFiZWwtbWVzc2FnZXMgIl42Ljgu
MCIKLSAgICBiYWJlbC1yZWdpc3RlciAiXjYuMTQuMCIKLSAgICBiYWJlbC1ydW50aW1lICJeNi45
LjEiCi0gICAgYmFiZWwtdGVtcGxhdGUgIl42LjE0LjAiCi0gICAgYmFiZWwtdHJhdmVyc2UgIl42
LjE0LjAiCi0gICAgYmFiZWwtdHlwZXMgIl42LjE0LjAiCi0gICAgYmFieWxvbiAiXjYuOS4wIgot
ICAgIGNvbnZlcnQtc291cmNlLW1hcCAiXjEuMS4wIgotICAgIGRlYnVnICJeMi4xLjEiCi0gICAg
anNvbjUgIl4wLjQuMCIKLSAgICBsb2Rhc2ggIl40LjIuMCIKLSAgICBtaW5pbWF0Y2ggIl4zLjAu
MiIKLSAgICBwYXRoLWV4aXN0cyAiXjEuMC4wIgotICAgIHBhdGgtaXMtYWJzb2x1dGUgIl4xLjAu
MCIKLSAgICBwcml2YXRlICJeMC4xLjYiCi0gICAgc2hlYmFuZy1yZWdleCAiXjEuMC4wIgotICAg
IHNsYXNoICJeMS4wLjAiCi0gICAgc291cmNlLW1hcCAiXjAuNS4wIgotCi1iYWJlbC1lc2xpbnRA
Ni4xLjI6Ci0gIHZlcnNpb24gIjYuMS4yIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55
YXJucGtnLmNvbS9iYWJlbC1lc2xpbnQvLS9iYWJlbC1lc2xpbnQtNi4xLjIudGd6IzUyOTM0MTlm
ZTM2NzJkNjY1OThkMzI3ZGE5Njk0NTY3YmE2YTVmMmYiCi0gIGRlcGVuZGVuY2llczoKLSAgICBi
YWJlbC10cmF2ZXJzZSAiXjYuMC4yMCIKLSAgICBiYWJlbC10eXBlcyAiXjYuMC4xOSIKLSAgICBi
YWJ5bG9uICJeNi4wLjE4IgotICAgIGxvZGFzaC5hc3NpZ24gIl40LjAuMCIKLSAgICBsb2Rhc2gu
cGlja2J5ICJeNC4wLjAiCi0KLWJhYmVsLWdlbmVyYXRvckBeNi4xMS4zLCBiYWJlbC1nZW5lcmF0
b3JAXjYuMTQuMCwgYmFiZWwtZ2VuZXJhdG9yQF42LjE3LjA6Ci0gIHZlcnNpb24gIjYuMTcuMCIK
LSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYmFiZWwtZ2VuZXJhdG9y
Ly0vYmFiZWwtZ2VuZXJhdG9yLTYuMTcuMC50Z3ojYjg5NGUzODA4YmVlZjc4MDBmMjU1MDYzNWJm
ZTAyNGI2MjI2Y2YzMyIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGJhYmVsLW1lc3NhZ2VzICJeNi44
LjAiCi0gICAgYmFiZWwtcnVudGltZSAiXjYuOS4wIgotICAgIGJhYmVsLXR5cGVzICJeNi4xNi4w
IgotICAgIGRldGVjdC1pbmRlbnQgIl4zLjAuMSIKLSAgICBqc2VzYyAiXjEuMy4wIgotICAgIGxv
ZGFzaCAiXjQuMi4wIgotICAgIHNvdXJjZS1tYXAgIl4wLjUuMCIKLQotYmFiZWwtaGVscGVyLWJ1
aWxkZXItYmluYXJ5LWFzc2lnbm1lbnQtb3BlcmF0b3ItdmlzaXRvckBeNi44LjA6Ci0gIHZlcnNp
b24gIjYuMTUuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYmFi
ZWwtaGVscGVyLWJ1aWxkZXItYmluYXJ5LWFzc2lnbm1lbnQtb3BlcmF0b3ItdmlzaXRvci8tL2Jh
YmVsLWhlbHBlci1idWlsZGVyLWJpbmFyeS1hc3NpZ25tZW50LW9wZXJhdG9yLXZpc2l0b3ItNi4x
NS4wLnRneiMzOWU5ZWUxNDNmNzk3YjY0MjI2MmU0NjQ2YzY4MWMzMjA4OWVmMWFiIgotICBkZXBl
bmRlbmNpZXM6Ci0gICAgYmFiZWwtaGVscGVyLWV4cGxvZGUtYXNzaWduYWJsZS1leHByZXNzaW9u
ICJeNi44LjAiCi0gICAgYmFiZWwtcnVudGltZSAiXjYuMC4wIgotICAgIGJhYmVsLXR5cGVzICJe
Ni4xNS4wIgotCi1iYWJlbC1oZWxwZXItYnVpbGRlci1yZWFjdC1qc3hAXjYuOC4wOgotICB2ZXJz
aW9uICI2LjkuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYmFi
ZWwtaGVscGVyLWJ1aWxkZXItcmVhY3QtanN4Ly0vYmFiZWwtaGVscGVyLWJ1aWxkZXItcmVhY3Qt
anN4LTYuOS4wLnRneiNhNjMzOTc4ZDY2OWM0YzlkY2FkNzE2Y2M1NzdlZTNlMGJiOGFlNzIzIgot
ICBkZXBlbmRlbmNpZXM6Ci0gICAgYmFiZWwtcnVudGltZSAiXjYuOS4wIgotICAgIGJhYmVsLXR5
cGVzICJeNi45LjAiCi0gICAgZXN1dGlscyAiXjIuMC4wIgotICAgIGxvZGFzaCAiXjQuMi4wIgot
Ci1iYWJlbC1oZWxwZXItY2FsbC1kZWxlZ2F0ZUBeNi44LjA6Ci0gIHZlcnNpb24gIjYuOC4wIgot
ICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9iYWJlbC1oZWxwZXItY2Fs
bC1kZWxlZ2F0ZS8tL2JhYmVsLWhlbHBlci1jYWxsLWRlbGVnYXRlLTYuOC4wLnRneiM5ZDI4M2U3
NDg2Nzc5YjZiMDQ4MTg2NGExMWIzNzFlYTVjMDFmYTY0IgotICBkZXBlbmRlbmNpZXM6Ci0gICAg
YmFiZWwtaGVscGVyLWhvaXN0LXZhcmlhYmxlcyAiXjYuOC4wIgotICAgIGJhYmVsLXJ1bnRpbWUg
Il42LjAuMCIKLSAgICBiYWJlbC10cmF2ZXJzZSAiXjYuOC4wIgotICAgIGJhYmVsLXR5cGVzICJe
Ni44LjAiCi0KLWJhYmVsLWhlbHBlci1kZWZpbmUtbWFwQF42LjguMCwgYmFiZWwtaGVscGVyLWRl
ZmluZS1tYXBAXjYuOS4wOgotICB2ZXJzaW9uICI2LjkuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8v
cmVnaXN0cnkueWFybnBrZy5jb20vYmFiZWwtaGVscGVyLWRlZmluZS1tYXAvLS9iYWJlbC1oZWxw
ZXItZGVmaW5lLW1hcC02LjkuMC50Z3ojNjYyOWY5YjJhN2U1OGUxOGU4Mzc5YTU3ZDFlNmZiYjI5
Njk5MDJmYiIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGJhYmVsLWhlbHBlci1mdW5jdGlvbi1uYW1l
ICJeNi44LjAiCi0gICAgYmFiZWwtcnVudGltZSAiXjYuOS4wIgotICAgIGJhYmVsLXR5cGVzICJe
Ni45LjAiCi0gICAgbG9kYXNoICJeNC4yLjAiCi0KLWJhYmVsLWhlbHBlci1leHBsb2RlLWFzc2ln
bmFibGUtZXhwcmVzc2lvbkBeNi44LjA6Ci0gIHZlcnNpb24gIjYuOC4wIgotICByZXNvbHZlZCAi
aHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9iYWJlbC1oZWxwZXItZXhwbG9kZS1hc3NpZ25h
YmxlLWV4cHJlc3Npb24vLS9iYWJlbC1oZWxwZXItZXhwbG9kZS1hc3NpZ25hYmxlLWV4cHJlc3Np
b24tNi44LjAudGd6IzliMzUyNWUwNWI3NjFjM2I4ODkxOWQ3MzBhMjhiYWQxOTY3ZTY1NTYiCi0g
IGRlcGVuZGVuY2llczoKLSAgICBiYWJlbC1ydW50aW1lICJeNi4wLjAiCi0gICAgYmFiZWwtdHJh
dmVyc2UgIl42LjguMCIKLSAgICBiYWJlbC10eXBlcyAiXjYuOC4wIgotCi1iYWJlbC1oZWxwZXIt
ZnVuY3Rpb24tbmFtZUBeNi44LjA6Ci0gIHZlcnNpb24gIjYuOC4wIgotICByZXNvbHZlZCAiaHR0
cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9iYWJlbC1oZWxwZXItZnVuY3Rpb24tbmFtZS8tL2Jh
YmVsLWhlbHBlci1mdW5jdGlvbi1uYW1lLTYuOC4wLnRneiNhMDMzNmJhMTQ1MjZhMDc1Y2RmNTAy
ZmM1MmQzZmU4NGIxMmY3YTM0IgotICBkZXBlbmRlbmNpZXM6Ci0gICAgYmFiZWwtaGVscGVyLWdl
dC1mdW5jdGlvbi1hcml0eSAiXjYuOC4wIgotICAgIGJhYmVsLXJ1bnRpbWUgIl42LjAuMCIKLSAg
ICBiYWJlbC10ZW1wbGF0ZSAiXjYuOC4wIgotICAgIGJhYmVsLXRyYXZlcnNlICJeNi44LjAiCi0g
ICAgYmFiZWwtdHlwZXMgIl42LjguMCIKLQotYmFiZWwtaGVscGVyLWdldC1mdW5jdGlvbi1hcml0
eUBeNi44LjA6Ci0gIHZlcnNpb24gIjYuOC4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3Ry
eS55YXJucGtnLmNvbS9iYWJlbC1oZWxwZXItZ2V0LWZ1bmN0aW9uLWFyaXR5Ly0vYmFiZWwtaGVs
cGVyLWdldC1mdW5jdGlvbi1hcml0eS02LjguMC50Z3ojODgyNzZjMjRiZDI1MWNkZjZmNjFiNmY4
OWY3NDVmNDg2Y2VkOTJhZiIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGJhYmVsLXJ1bnRpbWUgIl42
LjAuMCIKLSAgICBiYWJlbC10eXBlcyAiXjYuOC4wIgotCi1iYWJlbC1oZWxwZXItaG9pc3QtdmFy
aWFibGVzQF42LjguMDoKLSAgdmVyc2lvbiAiNi44LjAiCi0gIHJlc29sdmVkICJodHRwczovL3Jl
Z2lzdHJ5Lnlhcm5wa2cuY29tL2JhYmVsLWhlbHBlci1ob2lzdC12YXJpYWJsZXMvLS9iYWJlbC1o
ZWxwZXItaG9pc3QtdmFyaWFibGVzLTYuOC4wLnRneiM4YjA3NjZkYzAyNmVhOWVhNDIzYmMyYjM0
ZTY2NWE0ZGE3MzczYWFmIgotICBkZXBlbmRlbmNpZXM6Ci0gICAgYmFiZWwtcnVudGltZSAiXjYu
MC4wIgotICAgIGJhYmVsLXR5cGVzICJeNi44LjAiCi0KLWJhYmVsLWhlbHBlci1vcHRpbWlzZS1j
YWxsLWV4cHJlc3Npb25AXjYuOC4wOgotICB2ZXJzaW9uICI2LjguMCIKLSAgcmVzb2x2ZWQgImh0
dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYmFiZWwtaGVscGVyLW9wdGltaXNlLWNhbGwtZXhw
cmVzc2lvbi8tL2JhYmVsLWhlbHBlci1vcHRpbWlzZS1jYWxsLWV4cHJlc3Npb24tNi44LjAudGd6
IzQxNzU2MjhlOWM4OWZjMzYxNzQ5MDRmMjcwNzBmMjlkMzg1NjdmMDYiCi0gIGRlcGVuZGVuY2ll
czoKLSAgICBiYWJlbC1ydW50aW1lICJeNi4wLjAiCi0gICAgYmFiZWwtdHlwZXMgIl42LjguMCIK
LQotYmFiZWwtaGVscGVyLXJlZ2V4QF42LjguMDoKLSAgdmVyc2lvbiAiNi45LjAiCi0gIHJlc29s
dmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2JhYmVsLWhlbHBlci1yZWdleC8tL2Jh
YmVsLWhlbHBlci1yZWdleC02LjkuMC50Z3ojYzc0MjY1ZmRlMTgwZmY5YTE2NzM1ZmVlMDVlNjNj
YWRiOWUwYjA1NyIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGJhYmVsLXJ1bnRpbWUgIl42LjkuMCIK
LSAgICBiYWJlbC10eXBlcyAiXjYuOS4wIgotICAgIGxvZGFzaCAiXjQuMi4wIgotCi1iYWJlbC1o
ZWxwZXItcmVtYXAtYXN5bmMtdG8tZ2VuZXJhdG9yQF42LjE2LjA6Ci0gIHZlcnNpb24gIjYuMTYu
MiIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYmFiZWwtaGVscGVy
LXJlbWFwLWFzeW5jLXRvLWdlbmVyYXRvci8tL2JhYmVsLWhlbHBlci1yZW1hcC1hc3luYy10by1n
ZW5lcmF0b3ItNi4xNi4yLnRneiMyNDMxNWJkZTgzMjZjNjAwMjJkYzA1M2NjZTg0Y2ZlMzhkNzI0
YjgyIgotICBkZXBlbmRlbmNpZXM6Ci0gICAgYmFiZWwtaGVscGVyLWZ1bmN0aW9uLW5hbWUgIl42
LjguMCIKLSAgICBiYWJlbC1ydW50aW1lICJeNi4wLjAiCi0gICAgYmFiZWwtdGVtcGxhdGUgIl42
LjE2LjAiCi0gICAgYmFiZWwtdHJhdmVyc2UgIl42LjE2LjAiCi0gICAgYmFiZWwtdHlwZXMgIl42
LjE2LjAiCi0KLWJhYmVsLWhlbHBlci1yZXBsYWNlLXN1cGVyc0BeNi4xNC4wLCBiYWJlbC1oZWxw
ZXItcmVwbGFjZS1zdXBlcnNAXjYuOC4wOgotICB2ZXJzaW9uICI2LjE2LjAiCi0gIHJlc29sdmVk
ICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2JhYmVsLWhlbHBlci1yZXBsYWNlLXN1cGVy
cy8tL2JhYmVsLWhlbHBlci1yZXBsYWNlLXN1cGVycy02LjE2LjAudGd6IzIxYzk3NjIzY2M3ZTQz
MDg1NTc1M2YyNTI3NDAxMjI2MjZhMzllNmIiCi0gIGRlcGVuZGVuY2llczoKLSAgICBiYWJlbC1o
ZWxwZXItb3B0aW1pc2UtY2FsbC1leHByZXNzaW9uICJeNi44LjAiCi0gICAgYmFiZWwtbWVzc2Fn
ZXMgIl42LjguMCIKLSAgICBiYWJlbC1ydW50aW1lICJeNi4wLjAiCi0gICAgYmFiZWwtdGVtcGxh
dGUgIl42LjE2LjAiCi0gICAgYmFiZWwtdHJhdmVyc2UgIl42LjE2LjAiCi0gICAgYmFiZWwtdHlw
ZXMgIl42LjE2LjAiCi0KLWJhYmVsLWhlbHBlcnNAXjYuMTYuMCwgYmFiZWwtaGVscGVyc0BeNi44
LjA6Ci0gIHZlcnNpb24gIjYuMTYuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFy
bnBrZy5jb20vYmFiZWwtaGVscGVycy8tL2JhYmVsLWhlbHBlcnMtNi4xNi4wLnRneiMxMDk1ZWMx
MGQ5OTI3OTQ2MDU1M2U2N2ViM2VlZTk5NzNkMzg2N2UzIgotICBkZXBlbmRlbmNpZXM6Ci0gICAg
YmFiZWwtcnVudGltZSAiXjYuMC4wIgotICAgIGJhYmVsLXRlbXBsYXRlICJeNi4xNi4wIgotCi1i
YWJlbC1qZXN0QF4xNS4wLjAsIGJhYmVsLWplc3RAMTUuMC4wOgotICB2ZXJzaW9uICIxNS4wLjAi
Ci0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2JhYmVsLWplc3QvLS9i
YWJlbC1qZXN0LTE1LjAuMC50Z3ojNmE5ZTJlMzk5OWYyNDEzODNkYjlhYjFlMmVmNjcwNDQwMWQ3
NDI0MiIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGJhYmVsLWNvcmUgIl42LjAuMCIKLSAgICBiYWJl
bC1wbHVnaW4taXN0YW5idWwgIl4yLjAuMCIKLSAgICBiYWJlbC1wcmVzZXQtamVzdCAiXjE1LjAu
MCIKLQotYmFiZWwtbG9hZGVyQDYuMi41OgotICB2ZXJzaW9uICI2LjIuNSIKLSAgcmVzb2x2ZWQg
Imh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYmFiZWwtbG9hZGVyLy0vYmFiZWwtbG9hZGVy
LTYuMi41LnRneiM1NzZkNTQ4NTIwNjg5YTVlNmI3MGM2NWI4NWQ3NmFmMWZmZWRkMDA1IgotICBk
ZXBlbmRlbmNpZXM6Ci0gICAgbG9hZGVyLXV0aWxzICJeMC4yLjExIgotICAgIG1rZGlycCAiXjAu
NS4xIgotICAgIG9iamVjdC1hc3NpZ24gIl40LjAuMSIKLQotYmFiZWwtbWVzc2FnZXNAXjYuOC4w
OgotICB2ZXJzaW9uICI2LjguMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBr
Zy5jb20vYmFiZWwtbWVzc2FnZXMvLS9iYWJlbC1tZXNzYWdlcy02LjguMC50Z3ojYmY1MDQ3MzZj
YTk2N2U2ZDY1ZWYwYWRiNWEyYTVmOTQ3YzhlMGViOSIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGJh
YmVsLXJ1bnRpbWUgIl42LjAuMCIKLQotYmFiZWwtcGx1Z2luLWNoZWNrLWVzMjAxNS1jb25zdGFu
dHNAXjYuMy4xMzoKLSAgdmVyc2lvbiAiNi44LjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lz
dHJ5Lnlhcm5wa2cuY29tL2JhYmVsLXBsdWdpbi1jaGVjay1lczIwMTUtY29uc3RhbnRzLy0vYmFi
ZWwtcGx1Z2luLWNoZWNrLWVzMjAxNS1jb25zdGFudHMtNi44LjAudGd6I2RiZjAyNGMzMmVkMzdi
ZmRhOGRlZTFlNzZkYTAyMzg2YThkMjZmZTciCi0gIGRlcGVuZGVuY2llczoKLSAgICBiYWJlbC1y
dW50aW1lICJeNi4wLjAiCi0KLWJhYmVsLXBsdWdpbi1pc3RhbmJ1bEBeMi4wLjA6Ci0gIHZlcnNp
b24gIjIuMC4yIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9iYWJl
bC1wbHVnaW4taXN0YW5idWwvLS9iYWJlbC1wbHVnaW4taXN0YW5idWwtMi4wLjIudGd6IzY2Yzk1
N2ZkM2IyYWNlNjkyMTU5NTVjMGVhNTkyMDk4MDk1OGNiZjMiCi0gIGRlcGVuZGVuY2llczoKLSAg
ICBmaW5kLXVwICJeMS4xLjIiCi0gICAgaXN0YW5idWwtbGliLWluc3RydW1lbnQgIl4xLjEuMSIK
LSAgICBsb2Rhc2guYXNzaWduICJeNC4yLjAiCi0gICAgdGVzdC1leGNsdWRlICJeMi4xLjEiCi0K
LWJhYmVsLXBsdWdpbi1qZXN0LWhvaXN0QF4xNS4wLjA6Ci0gIHZlcnNpb24gIjE1LjAuMCIKLSAg
cmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYmFiZWwtcGx1Z2luLWplc3Qt
aG9pc3QvLS9iYWJlbC1wbHVnaW4tamVzdC1ob2lzdC0xNS4wLjAudGd6IzdiMmZkYmQwY2QxMmZj
MzZhODRkM2Y1ZmYwMDFlYzUwNDI2MmJiNTkiCi0KLWJhYmVsLXBsdWdpbi1zeW50YXgtYXN5bmMt
ZnVuY3Rpb25zQF42LjguMDoKLSAgdmVyc2lvbiAiNi4xMy4wIgotICByZXNvbHZlZCAiaHR0cHM6
Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9iYWJlbC1wbHVnaW4tc3ludGF4LWFzeW5jLWZ1bmN0aW9u
cy8tL2JhYmVsLXBsdWdpbi1zeW50YXgtYXN5bmMtZnVuY3Rpb25zLTYuMTMuMC50Z3ojY2FkOWNh
ZDExOTFiNWFkNjM0YmYzMGFlMDg3MjM5MWUwNjQ3YmU5NSIKLQotYmFiZWwtcGx1Z2luLXN5bnRh
eC1jbGFzcy1wcm9wZXJ0aWVzQF42LjguMDoKLSAgdmVyc2lvbiAiNi4xMy4wIgotICByZXNvbHZl
ZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9iYWJlbC1wbHVnaW4tc3ludGF4LWNsYXNz
LXByb3BlcnRpZXMvLS9iYWJlbC1wbHVnaW4tc3ludGF4LWNsYXNzLXByb3BlcnRpZXMtNi4xMy4w
LnRneiNkN2ViMjNiNzlhMzE3Zjg1NDM5NjJjNTA1YjgyN2M3ZDZjYWMyN2RlIgotCi1iYWJlbC1w
bHVnaW4tc3ludGF4LWV4cG9uZW50aWF0aW9uLW9wZXJhdG9yQF42LjguMDoKLSAgdmVyc2lvbiAi
Ni4xMy4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9iYWJlbC1w
bHVnaW4tc3ludGF4LWV4cG9uZW50aWF0aW9uLW9wZXJhdG9yLy0vYmFiZWwtcGx1Z2luLXN5bnRh
eC1leHBvbmVudGlhdGlvbi1vcGVyYXRvci02LjEzLjAudGd6IzllZTdlODMzNzI5MGRhOTUyODgy
MDFhNmE1N2Y0MTcwMzE3ODMwZGUiCi0KLWJhYmVsLXBsdWdpbi1zeW50YXgtZmxvd0BeNi4zLjEz
LCBiYWJlbC1wbHVnaW4tc3ludGF4LWZsb3dAXjYuOC4wOgotICB2ZXJzaW9uICI2LjEzLjAiCi0g
IHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2JhYmVsLXBsdWdpbi1zeW50
YXgtZmxvdy8tL2JhYmVsLXBsdWdpbi1zeW50YXgtZmxvdy02LjEzLjAudGd6IzlhZjBjZDM5NjA4
N2JmNzY3NzA1M2UxYWZhNTJmMjA2YzA0MTZmMTciCi0KLWJhYmVsLXBsdWdpbi1zeW50YXgtanN4
QF42LjMuMTMsIGJhYmVsLXBsdWdpbi1zeW50YXgtanN4QF42LjguMDoKLSAgdmVyc2lvbiAiNi4x
My4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9iYWJlbC1wbHVn
aW4tc3ludGF4LWpzeC8tL2JhYmVsLXBsdWdpbi1zeW50YXgtanN4LTYuMTMuMC50Z3ojZTc0MWZm
Mzk5MmM1NzgzMTBiZTQ1YzU3MWJjZDkwYTJmOWM1NTg2ZSIKLQotYmFiZWwtcGx1Z2luLXN5bnRh
eC1vYmplY3QtcmVzdC1zcHJlYWRAXjYuOC4wOgotICB2ZXJzaW9uICI2LjEzLjAiCi0gIHJlc29s
dmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2JhYmVsLXBsdWdpbi1zeW50YXgtb2Jq
ZWN0LXJlc3Qtc3ByZWFkLy0vYmFiZWwtcGx1Z2luLXN5bnRheC1vYmplY3QtcmVzdC1zcHJlYWQt
Ni4xMy4wLnRneiNmZDY1MzZmMmJjZTEzODM2ZmZhM2E1NDU4YzQ5MDNhNTk3YmIzYmY1IgotCi1i
YWJlbC1wbHVnaW4tc3ludGF4LXRyYWlsaW5nLWZ1bmN0aW9uLWNvbW1hc0BeNi44LjA6Ci0gIHZl
cnNpb24gIjYuMTMuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20v
YmFiZWwtcGx1Z2luLXN5bnRheC10cmFpbGluZy1mdW5jdGlvbi1jb21tYXMvLS9iYWJlbC1wbHVn
aW4tc3ludGF4LXRyYWlsaW5nLWZ1bmN0aW9uLWNvbW1hcy02LjEzLjAudGd6IzJiODRiN2Q1M2Rk
NzQ0Zjk0ZmYxZmFkNzY2OTQwNjI3NGIyM2Y1NDEiCi0KLWJhYmVsLXBsdWdpbi10cmFuc2Zvcm0t
YXN5bmMtdG8tZ2VuZXJhdG9yQF42LjE2LjA6Ci0gIHZlcnNpb24gIjYuMTYuMCIKLSAgcmVzb2x2
ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1h
c3luYy10by1nZW5lcmF0b3IvLS9iYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWFzeW5jLXRvLWdlbmVy
YXRvci02LjE2LjAudGd6IzE5ZWMzNmNiMTQ4NmI1OWY5ZjQ2OGFkZmE0MmNlMTM5MDhjYTI5OTki
Ci0gIGRlcGVuZGVuY2llczoKLSAgICBiYWJlbC1oZWxwZXItcmVtYXAtYXN5bmMtdG8tZ2VuZXJh
dG9yICJeNi4xNi4wIgotICAgIGJhYmVsLXBsdWdpbi1zeW50YXgtYXN5bmMtZnVuY3Rpb25zICJe
Ni44LjAiCi0gICAgYmFiZWwtcnVudGltZSAiXjYuMC4wIgotCi1iYWJlbC1wbHVnaW4tdHJhbnNm
b3JtLWNsYXNzLXByb3BlcnRpZXNANi4xMS41OgotICB2ZXJzaW9uICI2LjExLjUiCi0gIHJlc29s
dmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2JhYmVsLXBsdWdpbi10cmFuc2Zvcm0t
Y2xhc3MtcHJvcGVydGllcy8tL2JhYmVsLXBsdWdpbi10cmFuc2Zvcm0tY2xhc3MtcHJvcGVydGll
cy02LjExLjUudGd6IzQyOWM3YTRlN2Q4YWM1MDA0NDhlYjE0ZWM1MDI2MDRiYzU2OGM5MWMiCi0g
IGRlcGVuZGVuY2llczoKLSAgICBiYWJlbC1oZWxwZXItZnVuY3Rpb24tbmFtZSAiXjYuOC4wIgot
ICAgIGJhYmVsLXBsdWdpbi1zeW50YXgtY2xhc3MtcHJvcGVydGllcyAiXjYuOC4wIgotICAgIGJh
YmVsLXJ1bnRpbWUgIl42LjkuMSIKLQotYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtYXJy
b3ctZnVuY3Rpb25zQF42LjMuMTM6Ci0gIHZlcnNpb24gIjYuOC4wIgotICByZXNvbHZlZCAiaHR0
cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9iYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAxNS1h
cnJvdy1mdW5jdGlvbnMvLS9iYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAxNS1hcnJvdy1mdW5j
dGlvbnMtNi44LjAudGd6IzViNjNhZmMzMTgxYmRjOWE4YzRkNDgxYjVhNGYzZjdkN2ZlZjNkOWQi
Ci0gIGRlcGVuZGVuY2llczoKLSAgICBiYWJlbC1ydW50aW1lICJeNi4wLjAiCi0KLWJhYmVsLXBs
dWdpbi10cmFuc2Zvcm0tZXMyMDE1LWJsb2NrLXNjb3BlZC1mdW5jdGlvbnNAXjYuMy4xMzoKLSAg
dmVyc2lvbiAiNi44LjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29t
L2JhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LWJsb2NrLXNjb3BlZC1mdW5jdGlvbnMvLS9i
YWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAxNS1ibG9jay1zY29wZWQtZnVuY3Rpb25zLTYuOC4w
LnRneiNlZDk1ZDYyOWM0YjVhNzFhZTI5NjgyYjk5OGY3MGQ5ODMzZWIzNjZkIgotICBkZXBlbmRl
bmNpZXM6Ci0gICAgYmFiZWwtcnVudGltZSAiXjYuMC4wIgotCi1iYWJlbC1wbHVnaW4tdHJhbnNm
b3JtLWVzMjAxNS1ibG9jay1zY29waW5nQF42LjE0LjA6Ci0gIHZlcnNpb24gIjYuMTUuMCIKLSAg
cmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYmFiZWwtcGx1Z2luLXRyYW5z
Zm9ybS1lczIwMTUtYmxvY2stc2NvcGluZy8tL2JhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1
LWJsb2NrLXNjb3BpbmctNi4xNS4wLnRneiM1YjQ0M2NhMTQyYmU4ZDFkYjZhOGMyYWU0MmY1MTk1
OGI2NmI3MGY2IgotICBkZXBlbmRlbmNpZXM6Ci0gICAgYmFiZWwtcnVudGltZSAiXjYuOS4wIgot
ICAgIGJhYmVsLXRlbXBsYXRlICJeNi4xNS4wIgotICAgIGJhYmVsLXRyYXZlcnNlICJeNi4xNS4w
IgotICAgIGJhYmVsLXR5cGVzICJeNi4xNS4wIgotICAgIGxvZGFzaCAiXjQuMi4wIgotCi1iYWJl
bC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAxNS1jbGFzc2VzQF42LjE0LjA6Ci0gIHZlcnNpb24gIjYu
MTQuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYmFiZWwtcGx1
Z2luLXRyYW5zZm9ybS1lczIwMTUtY2xhc3Nlcy8tL2JhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMy
MDE1LWNsYXNzZXMtNi4xNC4wLnRneiM4N2Q1MTQ5ZWU5MWZiNDc1OTIyNDA5ZjlhZjViMmJhNWQx
ZTM5Mjg3IgotICBkZXBlbmRlbmNpZXM6Ci0gICAgYmFiZWwtaGVscGVyLWRlZmluZS1tYXAgIl42
LjkuMCIKLSAgICBiYWJlbC1oZWxwZXItZnVuY3Rpb24tbmFtZSAiXjYuOC4wIgotICAgIGJhYmVs
LWhlbHBlci1vcHRpbWlzZS1jYWxsLWV4cHJlc3Npb24gIl42LjguMCIKLSAgICBiYWJlbC1oZWxw
ZXItcmVwbGFjZS1zdXBlcnMgIl42LjE0LjAiCi0gICAgYmFiZWwtbWVzc2FnZXMgIl42LjguMCIK
LSAgICBiYWJlbC1ydW50aW1lICJeNi45LjAiCi0gICAgYmFiZWwtdGVtcGxhdGUgIl42LjE0LjAi
Ci0gICAgYmFiZWwtdHJhdmVyc2UgIl42LjE0LjAiCi0gICAgYmFiZWwtdHlwZXMgIl42LjE0LjAi
Ci0KLWJhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LWNvbXB1dGVkLXByb3BlcnRpZXNAXjYu
My4xMzoKLSAgdmVyc2lvbiAiNi44LjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlh
cm5wa2cuY29tL2JhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LWNvbXB1dGVkLXByb3BlcnRp
ZXMvLS9iYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAxNS1jb21wdXRlZC1wcm9wZXJ0aWVzLTYu
OC4wLnRneiNmNTEwMTBmZDYxYjNiZDdiNmI2MGE1ZmRmZDMwN2JiN2E1Mjc5ODcwIgotICBkZXBl
bmRlbmNpZXM6Ci0gICAgYmFiZWwtaGVscGVyLWRlZmluZS1tYXAgIl42LjguMCIKLSAgICBiYWJl
bC1ydW50aW1lICJeNi4wLjAiCi0gICAgYmFiZWwtdGVtcGxhdGUgIl42LjguMCIKLQotYmFiZWwt
cGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtZGVzdHJ1Y3R1cmluZ0BeNi4xNi4wOgotICB2ZXJzaW9u
ICI2LjE2LjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2JhYmVs
LXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LWRlc3RydWN0dXJpbmcvLS9iYWJlbC1wbHVnaW4tdHJh
bnNmb3JtLWVzMjAxNS1kZXN0cnVjdHVyaW5nLTYuMTYuMC50Z3ojMDUwZmUwODY2ZjVkNTNiMzYw
NjJlZTEwY2RmNWJmZTY0ZjkyOTYyNyIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGJhYmVsLXJ1bnRp
bWUgIl42LjkuMCIKLQotYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtZHVwbGljYXRlLWtl
eXNAXjYuNi4wOgotICB2ZXJzaW9uICI2LjguMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0
cnkueWFybnBrZy5jb20vYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtZHVwbGljYXRlLWtl
eXMvLS9iYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAxNS1kdXBsaWNhdGUta2V5cy02LjguMC50
Z3ojZmQ4ZjdmNzE3MWZjMTA4Y2MxYzcwYzMxNjRiOWYxNWE4MWMyNWY3ZCIKLSAgZGVwZW5kZW5j
aWVzOgotICAgIGJhYmVsLXJ1bnRpbWUgIl42LjAuMCIKLSAgICBiYWJlbC10eXBlcyAiXjYuOC4w
IgotCi1iYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAxNS1mb3Itb2ZAXjYuNi4wLCBiYWJlbC1w
bHVnaW4tdHJhbnNmb3JtLWVzMjAxNS1mb3Itb2ZAXjYuOC4wOgotICB2ZXJzaW9uICI2LjguMCIK
LSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYmFiZWwtcGx1Z2luLXRy
YW5zZm9ybS1lczIwMTUtZm9yLW9mLy0vYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtZm9y
LW9mLTYuOC4wLnRneiM4MmVkYTEzOWJhNDI3MGRkYTEzNWMzZWMxYjFmMjgxM2ZhNjJmMjNjIgot
ICBkZXBlbmRlbmNpZXM6Ci0gICAgYmFiZWwtcnVudGltZSAiXjYuMC4wIgotCi1iYWJlbC1wbHVn
aW4tdHJhbnNmb3JtLWVzMjAxNS1mdW5jdGlvbi1uYW1lQF42LjkuMDoKLSAgdmVyc2lvbiAiNi45
LjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2JhYmVsLXBsdWdp
bi10cmFuc2Zvcm0tZXMyMDE1LWZ1bmN0aW9uLW5hbWUvLS9iYWJlbC1wbHVnaW4tdHJhbnNmb3Jt
LWVzMjAxNS1mdW5jdGlvbi1uYW1lLTYuOS4wLnRneiM4YzEzNWIxN2RiZDA2NGU1YmJhNTZlYzUx
MWJhYWVlMmZjYTgyNzE5IgotICBkZXBlbmRlbmNpZXM6Ci0gICAgYmFiZWwtaGVscGVyLWZ1bmN0
aW9uLW5hbWUgIl42LjguMCIKLSAgICBiYWJlbC1ydW50aW1lICJeNi45LjAiCi0gICAgYmFiZWwt
dHlwZXMgIl42LjkuMCIKLQotYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtbGl0ZXJhbHNA
XjYuMy4xMzoKLSAgdmVyc2lvbiAiNi44LjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5
Lnlhcm5wa2cuY29tL2JhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LWxpdGVyYWxzLy0vYmFi
ZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtbGl0ZXJhbHMtNi44LjAudGd6IzUwYWEyZTVjNzk1
OGZjMmFiMjVkNzRlYzExN2UwY2M5OGYwNDY0NjgiCi0gIGRlcGVuZGVuY2llczoKLSAgICBiYWJl
bC1ydW50aW1lICJeNi4wLjAiCi0KLWJhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LW1vZHVs
ZXMtYW1kQF42LjguMDoKLSAgdmVyc2lvbiAiNi44LjAiCi0gIHJlc29sdmVkICJodHRwczovL3Jl
Z2lzdHJ5Lnlhcm5wa2cuY29tL2JhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LW1vZHVsZXMt
YW1kLy0vYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtbW9kdWxlcy1hbWQtNi44LjAudGd6
IzI1ZDk1NGFhMGJmMDQwMzFmYzQ2ZDJhOGU2MjMwYmIxYWJiZGU0YTMiCi0gIGRlcGVuZGVuY2ll
czoKLSAgICBiYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAxNS1tb2R1bGVzLWNvbW1vbmpzICJe
Ni44LjAiCi0gICAgYmFiZWwtcnVudGltZSAiXjYuMC4wIgotICAgIGJhYmVsLXRlbXBsYXRlICJe
Ni44LjAiCi0KLWJhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LW1vZHVsZXMtY29tbW9uanNA
XjYuMTYuMCwgYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtbW9kdWxlcy1jb21tb25qc0Be
Ni44LjA6Ci0gIHZlcnNpb24gIjYuMTYuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnku
eWFybnBrZy5jb20vYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtbW9kdWxlcy1jb21tb25q
cy8tL2JhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LW1vZHVsZXMtY29tbW9uanMtNi4xNi4w
LnRneiMwYTM0YjQ0N2JjODhhZDFhNzA5ODhiNmQxOTljY2E2ZDBiOTZjODkyIgotICBkZXBlbmRl
bmNpZXM6Ci0gICAgYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1zdHJpY3QtbW9kZSAiXjYuOC4wIgot
ICAgIGJhYmVsLXJ1bnRpbWUgIl42LjAuMCIKLSAgICBiYWJlbC10ZW1wbGF0ZSAiXjYuMTYuMCIK
LSAgICBiYWJlbC10eXBlcyAiXjYuMTYuMCIKLQotYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIw
MTUtbW9kdWxlcy1zeXN0ZW1qc0BeNi4xNC4wOgotICB2ZXJzaW9uICI2LjE0LjAiCi0gIHJlc29s
dmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2JhYmVsLXBsdWdpbi10cmFuc2Zvcm0t
ZXMyMDE1LW1vZHVsZXMtc3lzdGVtanMvLS9iYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAxNS1t
b2R1bGVzLXN5c3RlbWpzLTYuMTQuMC50Z3ojYzUxOWI1YzczZTMyMzg4ZTY3OWM5YjFlZGY0MWIy
ZmMyM2RjMzMwMyIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGJhYmVsLWhlbHBlci1ob2lzdC12YXJp
YWJsZXMgIl42LjguMCIKLSAgICBiYWJlbC1ydW50aW1lICJeNi4xMS42IgotICAgIGJhYmVsLXRl
bXBsYXRlICJeNi4xNC4wIgotCi1iYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAxNS1tb2R1bGVz
LXVtZEBeNi4xMi4wOgotICB2ZXJzaW9uICI2LjEyLjAiCi0gIHJlc29sdmVkICJodHRwczovL3Jl
Z2lzdHJ5Lnlhcm5wa2cuY29tL2JhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LW1vZHVsZXMt
dW1kLy0vYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtbW9kdWxlcy11bWQtNi4xMi4wLnRn
eiM1ZDczNTU5ZWI0OTI2Njc3NWVkMjgxYzQwYmU4OGE0MjFiZDM3MWEzIgotICBkZXBlbmRlbmNp
ZXM6Ci0gICAgYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtbW9kdWxlcy1hbWQgIl42Ljgu
MCIKLSAgICBiYWJlbC1ydW50aW1lICJeNi4wLjAiCi0gICAgYmFiZWwtdGVtcGxhdGUgIl42Ljgu
MCIKLQotYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtb2JqZWN0LXN1cGVyQF42LjMuMTM6
Ci0gIHZlcnNpb24gIjYuOC4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtn
LmNvbS9iYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAxNS1vYmplY3Qtc3VwZXIvLS9iYWJlbC1w
bHVnaW4tdHJhbnNmb3JtLWVzMjAxNS1vYmplY3Qtc3VwZXItNi44LjAudGd6IzFiODU4NzQwYTVh
NDQwMDg4N2MyM2RjZmY2ZjRkNTZlZWE0YTI0YzUiCi0gIGRlcGVuZGVuY2llczoKLSAgICBiYWJl
bC1oZWxwZXItcmVwbGFjZS1zdXBlcnMgIl42LjguMCIKLSAgICBiYWJlbC1ydW50aW1lICJeNi4w
LjAiCi0KLWJhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LXBhcmFtZXRlcnNAXjYuMTYuMDoK
LSAgdmVyc2lvbiAiNi4xNy4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtn
LmNvbS9iYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAxNS1wYXJhbWV0ZXJzLy0vYmFiZWwtcGx1
Z2luLXRyYW5zZm9ybS1lczIwMTUtcGFyYW1ldGVycy02LjE3LjAudGd6I2UwNmQzMGNlZjg5N2Y0
NmFkYjQ3MzQ3MDdiYmUxMjhhMGQ0MjdkNTgiCi0gIGRlcGVuZGVuY2llczoKLSAgICBiYWJlbC1o
ZWxwZXItY2FsbC1kZWxlZ2F0ZSAiXjYuOC4wIgotICAgIGJhYmVsLWhlbHBlci1nZXQtZnVuY3Rp
b24tYXJpdHkgIl42LjguMCIKLSAgICBiYWJlbC1ydW50aW1lICJeNi45LjAiCi0gICAgYmFiZWwt
dGVtcGxhdGUgIl42LjE2LjAiCi0gICAgYmFiZWwtdHJhdmVyc2UgIl42LjE2LjAiCi0gICAgYmFi
ZWwtdHlwZXMgIl42LjE2LjAiCi0KLWJhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LXNob3J0
aGFuZC1wcm9wZXJ0aWVzQF42LjMuMTM6Ci0gIHZlcnNpb24gIjYuOC4wIgotICByZXNvbHZlZCAi
aHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9iYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAx
NS1zaG9ydGhhbmQtcHJvcGVydGllcy8tL2JhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LXNo
b3J0aGFuZC1wcm9wZXJ0aWVzLTYuOC4wLnRneiNmMGE0YzVmZDQ3MTYzMGFjZjMzM2MyZDk5YzNk
Njc3YmYwOTUyMTQ5IgotICBkZXBlbmRlbmNpZXM6Ci0gICAgYmFiZWwtcnVudGltZSAiXjYuMC4w
IgotICAgIGJhYmVsLXR5cGVzICJeNi44LjAiCi0KLWJhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMy
MDE1LXNwcmVhZEBeNi4zLjEzOgotICB2ZXJzaW9uICI2LjguMCIKLSAgcmVzb2x2ZWQgImh0dHBz
Oi8vcmVnaXN0cnkueWFybnBrZy5jb20vYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtc3By
ZWFkLy0vYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtc3ByZWFkLTYuOC4wLnRneiMwMjE3
ZjczN2UzYjgyMWZhNWE2NjlmMTg3YzZlZDU5MjA1ZjA1ZTljIgotICBkZXBlbmRlbmNpZXM6Ci0g
ICAgYmFiZWwtcnVudGltZSAiXjYuMC4wIgotCi1iYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAx
NS1zdGlja3ktcmVnZXhAXjYuMy4xMzoKLSAgdmVyc2lvbiAiNi44LjAiCi0gIHJlc29sdmVkICJo
dHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2JhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1
LXN0aWNreS1yZWdleC8tL2JhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LXN0aWNreS1yZWdl
eC02LjguMC50Z3ojZTczZDMwMGE0NDBhMzVkNWM2NGY1YzJhMzQ0ZGMyMzZlM2RmNDdiZSIKLSAg
ZGVwZW5kZW5jaWVzOgotICAgIGJhYmVsLWhlbHBlci1yZWdleCAiXjYuOC4wIgotICAgIGJhYmVs
LXJ1bnRpbWUgIl42LjAuMCIKLSAgICBiYWJlbC10eXBlcyAiXjYuOC4wIgotCi1iYWJlbC1wbHVn
aW4tdHJhbnNmb3JtLWVzMjAxNS10ZW1wbGF0ZS1saXRlcmFsc0BeNi42LjA6Ci0gIHZlcnNpb24g
IjYuOC4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9iYWJlbC1w
bHVnaW4tdHJhbnNmb3JtLWVzMjAxNS10ZW1wbGF0ZS1saXRlcmFscy8tL2JhYmVsLXBsdWdpbi10
cmFuc2Zvcm0tZXMyMDE1LXRlbXBsYXRlLWxpdGVyYWxzLTYuOC4wLnRneiM4NmViODc2ZDBhMmM2
MzVkYTRlYzA0OGI0ZjdkZTlkZmM4OTdlNjZiIgotICBkZXBlbmRlbmNpZXM6Ci0gICAgYmFiZWwt
cnVudGltZSAiXjYuMC4wIgotCi1iYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAxNS10eXBlb2Yt
c3ltYm9sQF42LjYuMDoKLSAgdmVyc2lvbiAiNi44LjAiCi0gIHJlc29sdmVkICJodHRwczovL3Jl
Z2lzdHJ5Lnlhcm5wa2cuY29tL2JhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LXR5cGVvZi1z
eW1ib2wvLS9iYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAxNS10eXBlb2Ytc3ltYm9sLTYuOC4w
LnRneiM4NGMyOWViMTIxOTM3MjQ4MDk1NWEwMjBmZWY3YTY1YzQ0ZjMwNTMzIgotICBkZXBlbmRl
bmNpZXM6Ci0gICAgYmFiZWwtcnVudGltZSAiXjYuMC4wIgotCi1iYWJlbC1wbHVnaW4tdHJhbnNm
b3JtLWVzMjAxNS11bmljb2RlLXJlZ2V4QF42LjMuMTM6Ci0gIHZlcnNpb24gIjYuMTEuMCIKLSAg
cmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYmFiZWwtcGx1Z2luLXRyYW5z
Zm9ybS1lczIwMTUtdW5pY29kZS1yZWdleC8tL2JhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1
LXVuaWNvZGUtcmVnZXgtNi4xMS4wLnRneiM2Mjk4Y2VhYmFhZDg4ZDUwYTNmNGYzOTJkOGRlOTk3
MjYwZjZlZjJjIgotICBkZXBlbmRlbmNpZXM6Ci0gICAgYmFiZWwtaGVscGVyLXJlZ2V4ICJeNi44
LjAiCi0gICAgYmFiZWwtcnVudGltZSAiXjYuMC4wIgotICAgIHJlZ2V4cHUtY29yZSAiXjIuMC4w
IgotCi1iYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWV4cG9uZW50aWF0aW9uLW9wZXJhdG9yQF42LjMu
MTM6Ci0gIHZlcnNpb24gIjYuOC4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJu
cGtnLmNvbS9iYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWV4cG9uZW50aWF0aW9uLW9wZXJhdG9yLy0v
YmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1leHBvbmVudGlhdGlvbi1vcGVyYXRvci02LjguMC50Z3oj
ZGIyNTc0MmU5MzM5ZWFkZTY3NmNhOWFjZWM0NmY5NTU1OTlhNjhhNCIKLSAgZGVwZW5kZW5jaWVz
OgotICAgIGJhYmVsLWhlbHBlci1idWlsZGVyLWJpbmFyeS1hc3NpZ25tZW50LW9wZXJhdG9yLXZp
c2l0b3IgIl42LjguMCIKLSAgICBiYWJlbC1wbHVnaW4tc3ludGF4LWV4cG9uZW50aWF0aW9uLW9w
ZXJhdG9yICJeNi44LjAiCi0gICAgYmFiZWwtcnVudGltZSAiXjYuMC4wIgotCi1iYWJlbC1wbHVn
aW4tdHJhbnNmb3JtLWZsb3ctc3RyaXAtdHlwZXNAXjYuMy4xMzoKLSAgdmVyc2lvbiAiNi4xNC4w
IgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9iYWJlbC1wbHVnaW4t
dHJhbnNmb3JtLWZsb3ctc3RyaXAtdHlwZXMvLS9iYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWZsb3ct
c3RyaXAtdHlwZXMtNi4xNC4wLnRneiMzNWNlYjAzZjg3NzA5MzQwNDRiYWIxYTc2ZjdlNGVlMGFh
OTIyMGY5IgotICBkZXBlbmRlbmNpZXM6Ci0gICAgYmFiZWwtcGx1Z2luLXN5bnRheC1mbG93ICJe
Ni44LjAiCi0gICAgYmFiZWwtcnVudGltZSAiXjYuMC4wIgotCi1iYWJlbC1wbHVnaW4tdHJhbnNm
b3JtLW9iamVjdC1yZXN0LXNwcmVhZEA2LjguMDoKLSAgdmVyc2lvbiAiNi44LjAiCi0gIHJlc29s
dmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2JhYmVsLXBsdWdpbi10cmFuc2Zvcm0t
b2JqZWN0LXJlc3Qtc3ByZWFkLy0vYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1vYmplY3QtcmVzdC1z
cHJlYWQtNi44LjAudGd6IzAzZDEzMDhlMjU3YTlkOGUxYTgxNWFlMWZkM2RiMjFiZGViZjA4ZDki
Ci0gIGRlcGVuZGVuY2llczoKLSAgICBiYWJlbC1wbHVnaW4tc3ludGF4LW9iamVjdC1yZXN0LXNw
cmVhZCAiXjYuOC4wIgotICAgIGJhYmVsLXJ1bnRpbWUgIl42LjAuMCIKLQotYmFiZWwtcGx1Z2lu
LXRyYW5zZm9ybS1yZWFjdC1jb25zdGFudC1lbGVtZW50c0A2LjkuMToKLSAgdmVyc2lvbiAiNi45
LjEiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2JhYmVsLXBsdWdp
bi10cmFuc2Zvcm0tcmVhY3QtY29uc3RhbnQtZWxlbWVudHMvLS9iYWJlbC1wbHVnaW4tdHJhbnNm
b3JtLXJlYWN0LWNvbnN0YW50LWVsZW1lbnRzLTYuOS4xLnRneiMxMjViODZkOTZjYjMyMmUyMTM5
YjYwN2ZkNzQ5YWQ1ZmJiMTdmMDA1IgotICBkZXBlbmRlbmNpZXM6Ci0gICAgYmFiZWwtcnVudGlt
ZSAiXjYuOS4xIgotCi1iYWJlbC1wbHVnaW4tdHJhbnNmb3JtLXJlYWN0LWRpc3BsYXktbmFtZUBe
Ni4zLjEzOgotICB2ZXJzaW9uICI2LjguMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnku
eWFybnBrZy5jb20vYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1yZWFjdC1kaXNwbGF5LW5hbWUvLS9i
YWJlbC1wbHVnaW4tdHJhbnNmb3JtLXJlYWN0LWRpc3BsYXktbmFtZS02LjguMC50Z3ojZjdhMDg0
OTc3MzgzZDcyOGJkYmRjMjgzNWJiYTAxNTk1NzdmNjYwZSIKLSAgZGVwZW5kZW5jaWVzOgotICAg
IGJhYmVsLXJ1bnRpbWUgIl42LjAuMCIKLQotYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1yZWFjdC1q
c3gtc2VsZkBeNi4xMS4wLCBiYWJlbC1wbHVnaW4tdHJhbnNmb3JtLXJlYWN0LWpzeC1zZWxmQDYu
MTEuMDoKLSAgdmVyc2lvbiAiNi4xMS4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55
YXJucGtnLmNvbS9iYWJlbC1wbHVnaW4tdHJhbnNmb3JtLXJlYWN0LWpzeC1zZWxmLy0vYmFiZWwt
cGx1Z2luLXRyYW5zZm9ybS1yZWFjdC1qc3gtc2VsZi02LjExLjAudGd6IzYwNWM5NDUwYzE0Mjlm
OTdhOTMwZjdlMWRmZTNmMGQ5ZDBkYmQwZjQiCi0gIGRlcGVuZGVuY2llczoKLSAgICBiYWJlbC1w
bHVnaW4tc3ludGF4LWpzeCAiXjYuOC4wIgotICAgIGJhYmVsLXJ1bnRpbWUgIl42LjkuMCIKLQot
YmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1yZWFjdC1qc3gtc291cmNlQF42LjMuMTMsIGJhYmVsLXBs
dWdpbi10cmFuc2Zvcm0tcmVhY3QtanN4LXNvdXJjZUA2LjkuMDoKLSAgdmVyc2lvbiAiNi45LjAi
Ci0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2JhYmVsLXBsdWdpbi10
cmFuc2Zvcm0tcmVhY3QtanN4LXNvdXJjZS8tL2JhYmVsLXBsdWdpbi10cmFuc2Zvcm0tcmVhY3Qt
anN4LXNvdXJjZS02LjkuMC50Z3ojYWY2ODRhMDVjMjA2N2E4NmUwOTU3ZDRmMzQzMjk1Y2NmNWRj
Y2YwMCIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGJhYmVsLXBsdWdpbi1zeW50YXgtanN4ICJeNi44
LjAiCi0gICAgYmFiZWwtcnVudGltZSAiXjYuOS4wIgotCi1iYWJlbC1wbHVnaW4tdHJhbnNmb3Jt
LXJlYWN0LWpzeEBeNi4zLjEzOgotICB2ZXJzaW9uICI2LjguMCIKLSAgcmVzb2x2ZWQgImh0dHBz
Oi8vcmVnaXN0cnkueWFybnBrZy5jb20vYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1yZWFjdC1qc3gv
LS9iYWJlbC1wbHVnaW4tdHJhbnNmb3JtLXJlYWN0LWpzeC02LjguMC50Z3ojOTQ3NTk5NDJmNzBh
ZjE4YzYxNzE4OWFhN2YzNTkzZjE2NDRhNzFhYiIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGJhYmVs
LWhlbHBlci1idWlsZGVyLXJlYWN0LWpzeCAiXjYuOC4wIgotICAgIGJhYmVsLXBsdWdpbi1zeW50
YXgtanN4ICJeNi44LjAiCi0gICAgYmFiZWwtcnVudGltZSAiXjYuMC4wIgotCi1iYWJlbC1wbHVn
aW4tdHJhbnNmb3JtLXJlZ2VuZXJhdG9yQF42LjE2LjA6Ci0gIHZlcnNpb24gIjYuMTYuMSIKLSAg
cmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYmFiZWwtcGx1Z2luLXRyYW5z
Zm9ybS1yZWdlbmVyYXRvci8tL2JhYmVsLXBsdWdpbi10cmFuc2Zvcm0tcmVnZW5lcmF0b3ItNi4x
Ni4xLnRneiNhNzVkZTZiMDQ4YTE0MTU0YWFlMTRiMDEyMjc1NmM1YmVkMzkyZjU5IgotICBkZXBl
bmRlbmNpZXM6Ci0gICAgYmFiZWwtcnVudGltZSAiXjYuOS4wIgotICAgIGJhYmVsLXR5cGVzICJe
Ni4xNi4wIgotICAgIHByaXZhdGUgIn4wLjEuNSIKLQotYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1y
ZWdlbmVyYXRvckA2LjE0LjA6Ci0gIHZlcnNpb24gIjYuMTQuMCIKLSAgcmVzb2x2ZWQgImh0dHBz
Oi8vcmVnaXN0cnkueWFybnBrZy5jb20vYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1yZWdlbmVyYXRv
ci8tL2JhYmVsLXBsdWdpbi10cmFuc2Zvcm0tcmVnZW5lcmF0b3ItNi4xNC4wLnRneiMxMTkxMTli
MjBjOGI0MjgzZjZjNzdmMDE3MGQ0MDRjM2M2NTRiZWM4IgotICBkZXBlbmRlbmNpZXM6Ci0gICAg
YmFiZWwtY29yZSAiXjYuMTQuMCIKLSAgICBiYWJlbC1wbHVnaW4tc3ludGF4LWFzeW5jLWZ1bmN0
aW9ucyAiXjYuOC4wIgotICAgIGJhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LWJsb2NrLXNj
b3BpbmcgIl42LjE0LjAiCi0gICAgYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtZm9yLW9m
ICJeNi44LjAiCi0gICAgYmFiZWwtcnVudGltZSAiXjYuOS4wIgotICAgIGJhYmVsLXRyYXZlcnNl
ICJeNi4xNC4wIgotICAgIGJhYmVsLXR5cGVzICJeNi4xNC4wIgotICAgIGJhYnlsb24gIl42Ljku
MCIKLSAgICBwcml2YXRlICJ+MC4xLjUiCi0KLWJhYmVsLXBsdWdpbi10cmFuc2Zvcm0tcnVudGlt
ZUA2LjE1LjA6Ci0gIHZlcnNpb24gIjYuMTUuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0
cnkueWFybnBrZy5jb20vYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1ydW50aW1lLy0vYmFiZWwtcGx1
Z2luLXRyYW5zZm9ybS1ydW50aW1lLTYuMTUuMC50Z3ojM2Q3NWI0ZDk0OWFkODFhZjE1NzU3MDI3
Mzg0NmZiNTlhZWIwZDU3YyIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGJhYmVsLXJ1bnRpbWUgIl42
LjkuMCIKLQotYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1zdHJpY3QtbW9kZUBeNi44LjA6Ci0gIHZl
cnNpb24gIjYuMTEuMyIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20v
YmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1zdHJpY3QtbW9kZS8tL2JhYmVsLXBsdWdpbi10cmFuc2Zv
cm0tc3RyaWN0LW1vZGUtNi4xMS4zLnRneiMxODM3NDEzMjUxMjZiYzdlYzljZjRjMGZjMjU3ZDNl
N2NhNWFmZDQwIgotICBkZXBlbmRlbmNpZXM6Ci0gICAgYmFiZWwtcnVudGltZSAiXjYuMC4wIgot
ICAgIGJhYmVsLXR5cGVzICJeNi44LjAiCi0KLWJhYmVsLXByZXNldC1lczIwMTVAXjYuMTQuMDoK
LSAgdmVyc2lvbiAiNi4xNi4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtn
LmNvbS9iYWJlbC1wcmVzZXQtZXMyMDE1Ly0vYmFiZWwtcHJlc2V0LWVzMjAxNS02LjE2LjAudGd6
IzU5YWNlY2QxZWZiZWJhZjQ4Zjg5NDA0ODQwZjJmZTc4YzRkMmFkNWMiCi0gIGRlcGVuZGVuY2ll
czoKLSAgICBiYWJlbC1wbHVnaW4tY2hlY2stZXMyMDE1LWNvbnN0YW50cyAiXjYuMy4xMyIKLSAg
ICBiYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAxNS1hcnJvdy1mdW5jdGlvbnMgIl42LjMuMTMi
Ci0gICAgYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtYmxvY2stc2NvcGVkLWZ1bmN0aW9u
cyAiXjYuMy4xMyIKLSAgICBiYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAxNS1ibG9jay1zY29w
aW5nICJeNi4xNC4wIgotICAgIGJhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LWNsYXNzZXMg
Il42LjE0LjAiCi0gICAgYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtY29tcHV0ZWQtcHJv
cGVydGllcyAiXjYuMy4xMyIKLSAgICBiYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAxNS1kZXN0
cnVjdHVyaW5nICJeNi4xNi4wIgotICAgIGJhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LWR1
cGxpY2F0ZS1rZXlzICJeNi42LjAiCi0gICAgYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUt
Zm9yLW9mICJeNi42LjAiCi0gICAgYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtZnVuY3Rp
b24tbmFtZSAiXjYuOS4wIgotICAgIGJhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LWxpdGVy
YWxzICJeNi4zLjEzIgotICAgIGJhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LW1vZHVsZXMt
YW1kICJeNi44LjAiCi0gICAgYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtbW9kdWxlcy1j
b21tb25qcyAiXjYuMTYuMCIKLSAgICBiYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAxNS1tb2R1
bGVzLXN5c3RlbWpzICJeNi4xNC4wIgotICAgIGJhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1
LW1vZHVsZXMtdW1kICJeNi4xMi4wIgotICAgIGJhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1
LW9iamVjdC1zdXBlciAiXjYuMy4xMyIKLSAgICBiYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAx
NS1wYXJhbWV0ZXJzICJeNi4xNi4wIgotICAgIGJhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1
LXNob3J0aGFuZC1wcm9wZXJ0aWVzICJeNi4zLjEzIgotICAgIGJhYmVsLXBsdWdpbi10cmFuc2Zv
cm0tZXMyMDE1LXNwcmVhZCAiXjYuMy4xMyIKLSAgICBiYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVz
MjAxNS1zdGlja3ktcmVnZXggIl42LjMuMTMiCi0gICAgYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1l
czIwMTUtdGVtcGxhdGUtbGl0ZXJhbHMgIl42LjYuMCIKLSAgICBiYWJlbC1wbHVnaW4tdHJhbnNm
b3JtLWVzMjAxNS10eXBlb2Ytc3ltYm9sICJeNi42LjAiCi0gICAgYmFiZWwtcGx1Z2luLXRyYW5z
Zm9ybS1lczIwMTUtdW5pY29kZS1yZWdleCAiXjYuMy4xMyIKLSAgICBiYWJlbC1wbHVnaW4tdHJh
bnNmb3JtLXJlZ2VuZXJhdG9yICJeNi4xNi4wIgotCi1iYWJlbC1wcmVzZXQtZXMyMDE2QF42LjEx
LjM6Ci0gIHZlcnNpb24gIjYuMTYuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFy
bnBrZy5jb20vYmFiZWwtcHJlc2V0LWVzMjAxNi8tL2JhYmVsLXByZXNldC1lczIwMTYtNi4xNi4w
LnRneiNjN2RhZjVmZWVkZWVlOTljODY3ODEzYmRmMGQ1NzNkOTRjYTEyODEyIgotICBkZXBlbmRl
bmNpZXM6Ci0gICAgYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1leHBvbmVudGlhdGlvbi1vcGVyYXRv
ciAiXjYuMy4xMyIKLQotYmFiZWwtcHJlc2V0LWVzMjAxN0BeNi4xNC4wOgotICB2ZXJzaW9uICI2
LjE2LjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2JhYmVsLXBy
ZXNldC1lczIwMTcvLS9iYWJlbC1wcmVzZXQtZXMyMDE3LTYuMTYuMC50Z3ojNTM2YzYyODc3Nzhh
NzU4OTQ4ZGRkMDkyYjQ2NmI2ZWY1MGI3ODZmYSIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGJhYmVs
LXBsdWdpbi1zeW50YXgtdHJhaWxpbmctZnVuY3Rpb24tY29tbWFzICJeNi44LjAiCi0gICAgYmFi
ZWwtcGx1Z2luLXRyYW5zZm9ybS1hc3luYy10by1nZW5lcmF0b3IgIl42LjE2LjAiCi0KLWJhYmVs
LXByZXNldC1qZXN0QF4xNS4wLjA6Ci0gIHZlcnNpb24gIjE1LjAuMCIKLSAgcmVzb2x2ZWQgImh0
dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYmFiZWwtcHJlc2V0LWplc3QvLS9iYWJlbC1wcmVz
ZXQtamVzdC0xNS4wLjAudGd6I2YyMzk4OGYxZjkxODY3M2ZmOWI0NzBmZGZkNjBmY2MxOWJjNjE4
ZjUiCi0gIGRlcGVuZGVuY2llczoKLSAgICBiYWJlbC1wbHVnaW4tamVzdC1ob2lzdCAiXjE1LjAu
MCIKLQotYmFiZWwtcHJlc2V0LWxhdGVzdEA2LjE0LjA6Ci0gIHZlcnNpb24gIjYuMTQuMCIKLSAg
cmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYmFiZWwtcHJlc2V0LWxhdGVz
dC8tL2JhYmVsLXByZXNldC1sYXRlc3QtNi4xNC4wLnRneiMxNjg0YWNlODE2Yzk5OGNlNzJkMjBl
NWM1ZjcxMDMyOWQ0MGY5MjQ2IgotICBkZXBlbmRlbmNpZXM6Ci0gICAgYmFiZWwtcHJlc2V0LWVz
MjAxNSAiXjYuMTQuMCIKLSAgICBiYWJlbC1wcmVzZXQtZXMyMDE2ICJeNi4xMS4zIgotICAgIGJh
YmVsLXByZXNldC1lczIwMTcgIl42LjE0LjAiCi0KLWJhYmVsLXByZXNldC1yZWFjdC1hcHBAXjAu
Mi4xOgotICB2ZXJzaW9uICIwLjIuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFy
bnBrZy5jb20vYmFiZWwtcHJlc2V0LXJlYWN0LWFwcC8tL2JhYmVsLXByZXNldC1yZWFjdC1hcHAt
MC4yLjEudGd6I2JmOTQ2MjMzODJhZGMyYzRjN2UwOThhNjYyMjljNjY3MWE3OWY4NDIiCi0gIGRl
cGVuZGVuY2llczoKLSAgICBiYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWNsYXNzLXByb3BlcnRpZXMg
IjYuMTEuNSIKLSAgICBiYWJlbC1wbHVnaW4tdHJhbnNmb3JtLW9iamVjdC1yZXN0LXNwcmVhZCAi
Ni44LjAiCi0gICAgYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1yZWFjdC1jb25zdGFudC1lbGVtZW50
cyAiNi45LjEiCi0gICAgYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1yZWFjdC1qc3gtc2VsZiAiNi4x
MS4wIgotICAgIGJhYmVsLXBsdWdpbi10cmFuc2Zvcm0tcmVhY3QtanN4LXNvdXJjZSAiNi45LjAi
Ci0gICAgYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1yZWdlbmVyYXRvciAiNi4xNC4wIgotICAgIGJh
YmVsLXBsdWdpbi10cmFuc2Zvcm0tcnVudGltZSAiNi4xNS4wIgotICAgIGJhYmVsLXByZXNldC1s
YXRlc3QgIjYuMTQuMCIKLSAgICBiYWJlbC1wcmVzZXQtcmVhY3QgIjYuMTEuMSIKLSAgICBiYWJl
bC1ydW50aW1lICI2LjExLjYiCi0KLWJhYmVsLXByZXNldC1yZWFjdEA2LjExLjE6Ci0gIHZlcnNp
b24gIjYuMTEuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYmFi
ZWwtcHJlc2V0LXJlYWN0Ly0vYmFiZWwtcHJlc2V0LXJlYWN0LTYuMTEuMS50Z3ojOThhYzJiZDNj
MWI3NmYzMDYyYWUwODI1ODBlYWRlMTU0YTE5YjU5MCIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGJh
YmVsLXBsdWdpbi1zeW50YXgtZmxvdyAiXjYuMy4xMyIKLSAgICBiYWJlbC1wbHVnaW4tc3ludGF4
LWpzeCAiXjYuMy4xMyIKLSAgICBiYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWZsb3ctc3RyaXAtdHlw
ZXMgIl42LjMuMTMiCi0gICAgYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1yZWFjdC1kaXNwbGF5LW5h
bWUgIl42LjMuMTMiCi0gICAgYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1yZWFjdC1qc3ggIl42LjMu
MTMiCi0gICAgYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1yZWFjdC1qc3gtc2VsZiAiXjYuMTEuMCIK
LSAgICBiYWJlbC1wbHVnaW4tdHJhbnNmb3JtLXJlYWN0LWpzeC1zb3VyY2UgIl42LjMuMTMiCi0K
LWJhYmVsLXJlZ2lzdGVyQF42LjE0LjAsIGJhYmVsLXJlZ2lzdGVyQF42LjE2LjA6Ci0gIHZlcnNp
b24gIjYuMTYuMyIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYmFi
ZWwtcmVnaXN0ZXIvLS9iYWJlbC1yZWdpc3Rlci02LjE2LjMudGd6IzdiMGMwY2E3YmZkZWI5MTg4
YmE0YzI3ZTVmY2I3NTk5YTQ5N2M2MjQiCi0gIGRlcGVuZGVuY2llczoKLSAgICBiYWJlbC1jb3Jl
ICJeNi4xNi4wIgotICAgIGJhYmVsLXJ1bnRpbWUgIl42LjExLjYiCi0gICAgY29yZS1qcyAiXjIu
NC4wIgotICAgIGhvbWUtb3ItdG1wICJeMS4wLjAiCi0gICAgbG9kYXNoICJeNC4yLjAiCi0gICAg
bWtkaXJwICJeMC41LjEiCi0gICAgcGF0aC1leGlzdHMgIl4xLjAuMCIKLSAgICBzb3VyY2UtbWFw
LXN1cHBvcnQgIl4wLjQuMiIKLQotYmFiZWwtcnVudGltZUBeNi4wLjAsIGJhYmVsLXJ1bnRpbWVA
XjYuMTEuNiwgYmFiZWwtcnVudGltZUBeNi45LjAsIGJhYmVsLXJ1bnRpbWVAXjYuOS4xLCBiYWJl
bC1ydW50aW1lQDYuMTEuNjoKLSAgdmVyc2lvbiAiNi4xMS42IgotICByZXNvbHZlZCAiaHR0cHM6
Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9iYWJlbC1ydW50aW1lLy0vYmFiZWwtcnVudGltZS02LjEx
LjYudGd6IzZkYjcwN2ZlZjJkNDljNDliZmEzY2I2NGVmZGI0MzZiNTE4YjgyMjIiCi0gIGRlcGVu
ZGVuY2llczoKLSAgICBjb3JlLWpzICJeMi40LjAiCi0gICAgcmVnZW5lcmF0b3ItcnVudGltZSAi
XjAuOS41IgotCi1iYWJlbC10ZW1wbGF0ZUBeNi4xNC4wLCBiYWJlbC10ZW1wbGF0ZUBeNi4xNS4w
LCBiYWJlbC10ZW1wbGF0ZUBeNi4xNi4wLCBiYWJlbC10ZW1wbGF0ZUBeNi44LjAsIGJhYmVsLXRl
bXBsYXRlQF42LjkuMDoKLSAgdmVyc2lvbiAiNi4xNi4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9y
ZWdpc3RyeS55YXJucGtnLmNvbS9iYWJlbC10ZW1wbGF0ZS8tL2JhYmVsLXRlbXBsYXRlLTYuMTYu
MC50Z3ojZTE0OWRkMWE5ZjAzYTM1ZjgxN2RkYmM0ZDA0ODE5ODhlN2ViYzhjYSIKLSAgZGVwZW5k
ZW5jaWVzOgotICAgIGJhYmVsLXJ1bnRpbWUgIl42LjkuMCIKLSAgICBiYWJlbC10cmF2ZXJzZSAi
XjYuMTYuMCIKLSAgICBiYWJlbC10eXBlcyAiXjYuMTYuMCIKLSAgICBiYWJ5bG9uICJeNi4xMS4w
IgotICAgIGxvZGFzaCAiXjQuMi4wIgotCi1iYWJlbC10cmF2ZXJzZUBeNi4wLjIwLCBiYWJlbC10
cmF2ZXJzZUBeNi4xNC4wLCBiYWJlbC10cmF2ZXJzZUBeNi4xNS4wLCBiYWJlbC10cmF2ZXJzZUBe
Ni4xNi4wLCBiYWJlbC10cmF2ZXJzZUBeNi44LjAsIGJhYmVsLXRyYXZlcnNlQF42LjkuMDoKLSAg
dmVyc2lvbiAiNi4xNi4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNv
bS9iYWJlbC10cmF2ZXJzZS8tL2JhYmVsLXRyYXZlcnNlLTYuMTYuMC50Z3ojZmJhODVhZTFmZDRk
MTA3ZGU5Y2UwMDMxNDljYzU3ZjUzYmVmMGM0ZiIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGJhYmVs
LWNvZGUtZnJhbWUgIl42LjE2LjAiCi0gICAgYmFiZWwtbWVzc2FnZXMgIl42LjguMCIKLSAgICBi
YWJlbC1ydW50aW1lICJeNi45LjAiCi0gICAgYmFiZWwtdHlwZXMgIl42LjE2LjAiCi0gICAgYmFi
eWxvbiAiXjYuMTEuMCIKLSAgICBkZWJ1ZyAiXjIuMi4wIgotICAgIGdsb2JhbHMgIl44LjMuMCIK
LSAgICBpbnZhcmlhbnQgIl4yLjIuMCIKLSAgICBsb2Rhc2ggIl40LjIuMCIKLQotYmFiZWwtdHlw
ZXNAXjYuMC4xOSwgYmFiZWwtdHlwZXNAXjYuMTAuMiwgYmFiZWwtdHlwZXNAXjYuMTQuMCwgYmFi
ZWwtdHlwZXNAXjYuMTUuMCwgYmFiZWwtdHlwZXNAXjYuMTYuMCwgYmFiZWwtdHlwZXNAXjYuOC4w
LCBiYWJlbC10eXBlc0BeNi45LjA6Ci0gIHZlcnNpb24gIjYuMTYuMCIKLSAgcmVzb2x2ZWQgImh0
dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYmFiZWwtdHlwZXMvLS9iYWJlbC10eXBlcy02LjE2
LjAudGd6IzcxY2NhMWRiZTUzMzc3NjYyMjVjNWMxOTMwNzFlOGViY2JjZmZjZmUiCi0gIGRlcGVu
ZGVuY2llczoKLSAgICBiYWJlbC1ydW50aW1lICJeNi45LjEiCi0gICAgZXN1dGlscyAiXjIuMC4y
IgotICAgIGxvZGFzaCAiXjQuMi4wIgotICAgIHRvLWZhc3QtcHJvcGVydGllcyAiXjEuMC4xIgot
Ci1iYWJ5bG9uQF42LjAuMTgsIGJhYnlsb25AXjYuMTEuMCwgYmFieWxvbkBeNi44LjEsIGJhYnls
b25AXjYuOS4wOgotICB2ZXJzaW9uICI2LjExLjQiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lz
dHJ5Lnlhcm5wa2cuY29tL2JhYnlsb24vLS9iYWJ5bG9uLTYuMTEuNC50Z3ojNzVlMWY1MjE4N2Vm
YTBjZGU1YTU0MWE3ZjdmZGRhMzhmNmViNWJkMiIKLQotYmFsYW5jZWQtbWF0Y2hAXjAuNC4xLCBi
YWxhbmNlZC1tYXRjaEBeMC40LjI6Ci0gIHZlcnNpb24gIjAuNC4yIgotICByZXNvbHZlZCAiaHR0
cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9iYWxhbmNlZC1tYXRjaC8tL2JhbGFuY2VkLW1hdGNo
LTAuNC4yLnRneiNjYjNmM2UzYzczMmRjMGYwMWVlNzBiNDAzZjMwMmU2MWQ3NzA5ODM4IgotCi1i
YWxhbmNlZC1tYXRjaEB+MC4xLjA6Ci0gIHZlcnNpb24gIjAuMS4wIgotICByZXNvbHZlZCAiaHR0
cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9iYWxhbmNlZC1tYXRjaC8tL2JhbGFuY2VkLW1hdGNo
LTAuMS4wLnRneiNiNTA0YmQwNTg2OWIzOTI1OWRkMGM1ZWZjMzVkODQzMTc2ZGNjYzRhIgotCi1i
YXNlNjQtanNAXjEuMC4yOgotICB2ZXJzaW9uICIxLjIuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8v
cmVnaXN0cnkueWFybnBrZy5jb20vYmFzZTY0LWpzLy0vYmFzZTY0LWpzLTEuMi4wLnRneiNhMzk5
OTJkNzIzNTg0ODExOTgyYmU1ZTI5MGJiNmE1M2Q4NjcwMGYxIgotCi1CYXNlNjRAfjAuMi4wOgot
ICB2ZXJzaW9uICIwLjIuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5j
b20vQmFzZTY0Ly0vQmFzZTY0LTAuMi4xLnRneiNiYTNhNDIzMDcwOGUxODY3MDUwNjVlNjZiYWJk
ZDRjMzVjZjYwMDI4IgotCi1iYXRjaEAwLjUuMzoKLSAgdmVyc2lvbiAiMC41LjMiCi0gIHJlc29s
dmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2JhdGNoLy0vYmF0Y2gtMC41LjMudGd6
IzNmMzQxNGYzODAzMjE3NDNiZmMxMDQyZjlhODNmZjFkNTgyNGQ0NjQiCi0KLWJjcnlwdC1wYmtk
ZkBeMS4wLjA6Ci0gIHZlcnNpb24gIjEuMC4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3Ry
eS55YXJucGtnLmNvbS9iY3J5cHQtcGJrZGYvLS9iY3J5cHQtcGJrZGYtMS4wLjAudGd6IzNjYTc2
Yjg1MjQxYzcxNzBiZjdkOTcwM2U3YjlhYTc0NjMwMDQwZDQiCi0gIGRlcGVuZGVuY2llczoKLSAg
ICB0d2VldG5hY2wgIl4wLjE0LjMiCi0KLWJpZy5qc0BeMy4xLjM6Ci0gIHZlcnNpb24gIjMuMS4z
IgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9iaWcuanMvLS9iaWcu
anMtMy4xLjMudGd6IzRjYWRhMjE5MzY1MmViM2NhOWVjOGU1NWM5MDE1NjY5Yzk4MDY5NzgiCi0K
LWJpbmFyeS1leHRlbnNpb25zQF4xLjAuMDoKLSAgdmVyc2lvbiAiMS43LjAiCi0gIHJlc29sdmVk
ICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2JpbmFyeS1leHRlbnNpb25zLy0vYmluYXJ5
LWV4dGVuc2lvbnMtMS43LjAudGd6IzZjMTYxMGRiMTYzYWJmYjM0ZWRmZTQyZmE0MjMzNDNhMWUw
MTE4NWQiCi0KLWJsQH4xLjEuMjoKLSAgdmVyc2lvbiAiMS4xLjIiCi0gIHJlc29sdmVkICJodHRw
czovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2JsLy0vYmwtMS4xLjIudGd6I2ZkY2E4NzFhOTk3MTNh
YTAwZDE5ZTNiYmJhNDFjNDQ3ODdhNjUzOTgiCi0gIGRlcGVuZGVuY2llczoKLSAgICByZWFkYWJs
ZS1zdHJlYW0gIn4yLjAuNSIKLQotYmxvY2stc3RyZWFtQCo6Ci0gIHZlcnNpb24gIjAuMC45Igot
ICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9ibG9jay1zdHJlYW0vLS9i
bG9jay1zdHJlYW0tMC4wLjkudGd6IzEzZWJmZTc3OGEwMzIwNWNmZTAzNzUxNDgxZWJiNGIzMzAw
YzEyNmEiCi0gIGRlcGVuZGVuY2llczoKLSAgICBpbmhlcml0cyAifjIuMC4wIgotCi1ibHVlYmly
ZEBeMy40LjE6Ci0gIHZlcnNpb24gIjMuNC42IgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3Ry
eS55YXJucGtnLmNvbS9ibHVlYmlyZC8tL2JsdWViaXJkLTMuNC42LnRneiMwMWRhOGQ4MjFkODc4
MTNkMTU4OTY3ZTc0M2Q1ZmU2YzYyY2Y4YzBmIgotCi1ib29sYmFzZUB+MS4wLjA6Ci0gIHZlcnNp
b24gIjEuMC4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9ib29s
YmFzZS8tL2Jvb2xiYXNlLTEuMC4wLnRneiM2OGRmZjVmYmU2MGM1MWViMzc3MjVlYTllM2VkMzEw
ZGNjMWU3NzZlIgotCi1ib29tQDIueC54OgotICB2ZXJzaW9uICIyLjEwLjEiCi0gIHJlc29sdmVk
ICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2Jvb20vLS9ib29tLTIuMTAuMS50Z3ojMzlj
ODkxOGNlZmY1Nzk5ZjgzZjk0OTJhODQ4ZjYyNWFkZDBjNzY2ZiIKLSAgZGVwZW5kZW5jaWVzOgot
ICAgIGhvZWsgIjIueC54IgotCi1icmFjZS1leHBhbnNpb25AXjEuMC4wOgotICB2ZXJzaW9uICIx
LjEuNiIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYnJhY2UtZXhw
YW5zaW9uLy0vYnJhY2UtZXhwYW5zaW9uLTEuMS42LnRneiM3MTk3ZDdlYWE5Yjg3ZTY0ODM5MGVh
NjFmYzY2Yzg0NDI3NDIwZGY5IgotICBkZXBlbmRlbmNpZXM6Ci0gICAgYmFsYW5jZWQtbWF0Y2gg
Il4wLjQuMSIKLSAgICBjb25jYXQtbWFwICIwLjAuMSIKLQotYnJhY2VzQF4xLjguMjoKLSAgdmVy
c2lvbiAiMS44LjUiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2Jy
YWNlcy8tL2JyYWNlcy0xLjguNS50Z3ojYmE3Nzk2MmUxMmRmZjk2OWQ2Yjc2NzExZTkxNGI3Mzc4
NTdiZjZhNyIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGV4cGFuZC1yYW5nZSAiXjEuOC4xIgotICAg
IHByZXNlcnZlICJeMC4yLjAiCi0gICAgcmVwZWF0LWVsZW1lbnQgIl4xLjEuMiIKLQotYnJvd3Nl
ci1yZXNvbHZlQF4xLjExLjI6Ci0gIHZlcnNpb24gIjEuMTEuMiIKLSAgcmVzb2x2ZWQgImh0dHBz
Oi8vcmVnaXN0cnkueWFybnBrZy5jb20vYnJvd3Nlci1yZXNvbHZlLy0vYnJvd3Nlci1yZXNvbHZl
LTEuMTEuMi50Z3ojOGZmMDliMGEyYzQyMTcxOGExMDUxYzI2MGIzMmU0OGY0NDI5MzhjZSIKLSAg
ZGVwZW5kZW5jaWVzOgotICAgIHJlc29sdmUgIjEuMS43IgotCi1icm93c2VyaWZ5LXpsaWJAfjAu
MS40OgotICB2ZXJzaW9uICIwLjEuNCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFy
bnBrZy5jb20vYnJvd3NlcmlmeS16bGliLy0vYnJvd3NlcmlmeS16bGliLTAuMS40LnRneiNiYjM1
ZjhhNTE5ZjYwMGUwZmE2Yjg0ODUyNDFjOTc5ZDAxNDFmYjJkIgotICBkZXBlbmRlbmNpZXM6Ci0g
ICAgcGFrbyAifjAuMi4wIgotCi1icm93c2Vyc2xpc3RAfjEuMy42OgotICB2ZXJzaW9uICIxLjMu
NiIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYnJvd3NlcnNsaXN0
Ly0vYnJvd3NlcnNsaXN0LTEuMy42LnRneiM5NTJmZjQ4ZDU2NDYzZDNiNTM4Zjg1ZWYyZjhlYWRk
ZmQyODRiMTMzIgotICBkZXBlbmRlbmNpZXM6Ci0gICAgY2FuaXVzZS1kYiAiXjEuMC4zMDAwMDUy
NSIKLQotYnJvd3NlcnNsaXN0QH4xLjQuMDoKLSAgdmVyc2lvbiAiMS40LjAiCi0gIHJlc29sdmVk
ICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2Jyb3dzZXJzbGlzdC8tL2Jyb3dzZXJzbGlz
dC0xLjQuMC50Z3ojOWNmZGNmNTM4NGQ5MTU4ZjViNzBkYTJhYTAwYjMwZThmZjAxOTA0OSIKLSAg
ZGVwZW5kZW5jaWVzOgotICAgIGNhbml1c2UtZGIgIl4xLjAuMzAwMDA1MzkiCi0KLWJzZXJAXjEu
MC4yOgotICB2ZXJzaW9uICIxLjAuMiIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFy
bnBrZy5jb20vYnNlci8tL2JzZXItMS4wLjIudGd6IzM4MTExNjk3MGIyYTZkZWVhNTY0NmRkMTVk
ZDcyNzg0NDRiNTYxNjkiCi0gIGRlcGVuZGVuY2llczoKLSAgICBub2RlLWludDY0ICJeMC40LjAi
Ci0KLWJ1ZmZlci1zaGltc0BeMS4wLjA6Ci0gIHZlcnNpb24gIjEuMC4wIgotICByZXNvbHZlZCAi
aHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9idWZmZXItc2hpbXMvLS9idWZmZXItc2hpbXMt
MS4wLjAudGd6Izk5NzhjZTMxNzM4OGM2NDlhZDg3OTMwMjhjMzQ3N2VmMDQ0YThiNTEiCi0KLWJ1
ZmZlckBeNC45LjA6Ci0gIHZlcnNpb24gIjQuOS4xIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdp
c3RyeS55YXJucGtnLmNvbS9idWZmZXIvLS9idWZmZXItNC45LjEudGd6IzZkMWJiNjAxYjA3YTRl
ZmNlZDk3MDk0MTMyMDkzMDI3Yzk1YmMyOTgiCi0gIGRlcGVuZGVuY2llczoKLSAgICBiYXNlNjQt
anMgIl4xLjAuMiIKLSAgICBpZWVlNzU0ICJeMS4xLjQiCi0gICAgaXNhcnJheSAiXjEuMC4wIgot
Ci1idWlsdGluLW1vZHVsZXNAXjEuMC4wLCBidWlsdGluLW1vZHVsZXNAXjEuMS4xOgotICB2ZXJz
aW9uICIxLjEuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYnVp
bHRpbi1tb2R1bGVzLy0vYnVpbHRpbi1tb2R1bGVzLTEuMS4xLnRneiMyNzBmMDc2YzVhNzJjMDJm
NWI2NWE0N2RmOTRjNWZlM2EyNzg4OTJmIgotCi1ieXRlc0AyLjMuMDoKLSAgdmVyc2lvbiAiMi4z
LjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2J5dGVzLy0vYnl0
ZXMtMi4zLjAudGd6I2Q1YjY4MGExNjViNjIwMTczOWFjYjYxMTU0MmFhYmMyZDhjZWIwNzAiCi0K
LWNhbGxlci1wYXRoQF4wLjEuMDoKLSAgdmVyc2lvbiAiMC4xLjAiCi0gIHJlc29sdmVkICJodHRw
czovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2NhbGxlci1wYXRoLy0vY2FsbGVyLXBhdGgtMC4xLjAu
dGd6Izk0MDg1ZWY2MzU4MWVjZDNkYWE5MjQ0NGE4ZmU5NGU4MjU3Nzc1MWYiCi0gIGRlcGVuZGVu
Y2llczoKLSAgICBjYWxsc2l0ZXMgIl4wLjIuMCIKLQotY2FsbHNpdGVzQF4wLjIuMDoKLSAgdmVy
c2lvbiAiMC4yLjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2Nh
bGxzaXRlcy8tL2NhbGxzaXRlcy0wLjIuMC50Z3ojYWZhYjk2MjYyOTEwYTdmMzNjMTlhNTc3NTgy
NWM2OWYzNGUzNTBjYSIKLQotY2FsbHNpdGVzQF4yLjAuMDoKLSAgdmVyc2lvbiAiMi4wLjAiCi0g
IHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2NhbGxzaXRlcy8tL2NhbGxz
aXRlcy0yLjAuMC50Z3ojMDZlYjg0ZjAwZWVhNDEzZGE4NmFmZmVmYWNiZmZiMzYwOTNiM2M1MCIK
LQotY2FtZWwtY2FzZUBeMy4wLjA6Ci0gIHZlcnNpb24gIjMuMC4wIgotICByZXNvbHZlZCAiaHR0
cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9jYW1lbC1jYXNlLy0vY2FtZWwtY2FzZS0zLjAuMC50
Z3ojY2EzYzM2ODhhNGU5Y2YzYTRjZGE3NzdkYzRkY2JjNzEzMjQ5Y2Y3MyIKLSAgZGVwZW5kZW5j
aWVzOgotICAgIG5vLWNhc2UgIl4yLjIuMCIKLSAgICB1cHBlci1jYXNlICJeMS4xLjEiCi0KLWNh
bWVsY2FzZUBeMS4wLjI6Ci0gIHZlcnNpb24gIjEuMi4xIgotICByZXNvbHZlZCAiaHR0cHM6Ly9y
ZWdpc3RyeS55YXJucGtnLmNvbS9jYW1lbGNhc2UvLS9jYW1lbGNhc2UtMS4yLjEudGd6IzliYjUz
MDRkMmUwYjU2Njk4YjJjNzU4YjA4YTNlYWE5ZGFhNThhMzkiCi0KLWNhbWVsY2FzZUBeMy4wLjA6
Ci0gIHZlcnNpb24gIjMuMC4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtn
LmNvbS9jYW1lbGNhc2UvLS9jYW1lbGNhc2UtMy4wLjAudGd6IzMyZmM0YjlmY2RhZjg0NWZjZGY3
ZTczYmI5N2NhYzIyNjFmMGFiMGEiCi0KLWNhbml1c2UtZGJAXjEuMC4zMDAwMDUyNSwgY2FuaXVz
ZS1kYkBeMS4wLjMwMDAwNTI3LCBjYW5pdXNlLWRiQF4xLjAuMzAwMDA1MzksIGNhbml1c2UtZGJA
XjEuMC4zMDAwMDU0MDoKLSAgdmVyc2lvbiAiMS4wLjMwMDAwNTUzIgotICByZXNvbHZlZCAiaHR0
cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9jYW5pdXNlLWRiLy0vY2FuaXVzZS1kYi0xLjAuMzAw
MDA1NTMudGd6I2U3ZTkwOGY0M2I3ODhlNmFjNzhmYzE2MWZlZGM0NjI2ZDZhMzlmMjQiCi0KLWNh
cmRpbmFsQF4xLjAuMDoKLSAgdmVyc2lvbiAiMS4wLjAiCi0gIHJlc29sdmVkICJodHRwczovL3Jl
Z2lzdHJ5Lnlhcm5wa2cuY29tL2NhcmRpbmFsLy0vY2FyZGluYWwtMS4wLjAudGd6IzUwZTIxYzFi
MGFhMzc3MjlmOTM3N2RlZjE5NmI1YTljZWM5MzJlZTkiCi0gIGRlcGVuZGVuY2llczoKLSAgICBh
bnNpY29sb3JzICJ+MC4yLjEiCi0gICAgcmVkZXllZCAifjEuMC4wIgotCi1jYXNlLXNlbnNpdGl2
ZS1wYXRocy13ZWJwYWNrLXBsdWdpbkAxLjEuNDoKLSAgdmVyc2lvbiAiMS4xLjQiCi0gIHJlc29s
dmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2Nhc2Utc2Vuc2l0aXZlLXBhdGhzLXdl
YnBhY2stcGx1Z2luLy0vY2FzZS1zZW5zaXRpdmUtcGF0aHMtd2VicGFjay1wbHVnaW4tMS4xLjQu
dGd6IzhhYWVkZDU2OTlhODZjYWMyYjM0Y2Y0MGQ5YjQxNDU3NTg5Nzg0NzIiCi0KLWNhc2VsZXNz
QH4wLjExLjA6Ci0gIHZlcnNpb24gIjAuMTEuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0
cnkueWFybnBrZy5jb20vY2FzZWxlc3MvLS9jYXNlbGVzcy0wLjExLjAudGd6IzcxNWI5NmVhOTg0
MTU5M2NjMzMwNjc5MjNmNWVjNjBlYmRhNGY3ZDciCi0KLWNlbnRlci1hbGlnbkBeMC4xLjE6Ci0g
IHZlcnNpb24gIjAuMS4zIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNv
bS9jZW50ZXItYWxpZ24vLS9jZW50ZXItYWxpZ24tMC4xLjMudGd6I2FhMGQzMjYyOWI2ZWU5NzIy
MDA0MTFjYmQ0NDYxYzkwN2JjMmI3YWQiCi0gIGRlcGVuZGVuY2llczoKLSAgICBhbGlnbi10ZXh0
ICJeMC4xLjMiCi0gICAgbGF6eS1jYWNoZSAiXjEuMC4zIgotCi1jaGFsa0BeMS4wLjAsIGNoYWxr
QF4xLjEuMCwgY2hhbGtAXjEuMS4xLCBjaGFsa0BeMS4xLjMsIGNoYWxrQDEuMS4zOgotICB2ZXJz
aW9uICIxLjEuMyIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vY2hh
bGsvLS9jaGFsay0xLjEuMy50Z3ojYTgxMTVjNTVlNGE3MDJmZTRkMTUwYWJkMzg3MjgyMmE3ZTA5
ZmM5OCIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGFuc2ktc3R5bGVzICJeMi4yLjEiCi0gICAgZXNj
YXBlLXN0cmluZy1yZWdleHAgIl4xLjAuMiIKLSAgICBoYXMtYW5zaSAiXjIuMC4wIgotICAgIHN0
cmlwLWFuc2kgIl4zLjAuMCIKLSAgICBzdXBwb3J0cy1jb2xvciAiXjIuMC4wIgotCi1jaGFuZ2Ut
Y2FzZUAzLjAueDoKLSAgdmVyc2lvbiAiMy4wLjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lz
dHJ5Lnlhcm5wa2cuY29tL2NoYW5nZS1jYXNlLy0vY2hhbmdlLWNhc2UtMy4wLjAudGd6IzZjOWM4
ZTM1Zjg3OTA4NzBhODJiNmIwNzQ1YmU4YzNjYmVmOWIwODEiCi0gIGRlcGVuZGVuY2llczoKLSAg
ICBjYW1lbC1jYXNlICJeMy4wLjAiCi0gICAgY29uc3RhbnQtY2FzZSAiXjIuMC4wIgotICAgIGRv
dC1jYXNlICJeMi4xLjAiCi0gICAgaGVhZGVyLWNhc2UgIl4xLjAuMCIKLSAgICBpcy1sb3dlci1j
YXNlICJeMS4xLjAiCi0gICAgaXMtdXBwZXItY2FzZSAiXjEuMS4wIgotICAgIGxvd2VyLWNhc2Ug
Il4xLjEuMSIKLSAgICBsb3dlci1jYXNlLWZpcnN0ICJeMS4wLjAiCi0gICAgbm8tY2FzZSAiXjIu
Mi4wIgotICAgIHBhcmFtLWNhc2UgIl4yLjEuMCIKLSAgICBwYXNjYWwtY2FzZSAiXjIuMC4wIgot
ICAgIHBhdGgtY2FzZSAiXjIuMS4wIgotICAgIHNlbnRlbmNlLWNhc2UgIl4yLjEuMCIKLSAgICBz
bmFrZS1jYXNlICJeMi4xLjAiCi0gICAgc3dhcC1jYXNlICJeMS4xLjAiCi0gICAgdGl0bGUtY2Fz
ZSAiXjIuMS4wIgotICAgIHVwcGVyLWNhc2UgIl4xLjEuMSIKLSAgICB1cHBlci1jYXNlLWZpcnN0
ICJeMS4xLjAiCi0KLWNoZWVyaW9AXjAuMjAuMDoKLSAgdmVyc2lvbiAiMC4yMC4wIgotICByZXNv
bHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9jaGVlcmlvLy0vY2hlZXJpby0wLjIw
LjAudGd6IzVjNzEwZjJiYWI5NTY1MzI3Mjg0MmJhMDFjNmVhNjFiMzU0NWVjMzUiCi0gIGRlcGVu
ZGVuY2llczoKLSAgICBjc3Mtc2VsZWN0ICJ+MS4yLjAiCi0gICAgZG9tLXNlcmlhbGl6ZXIgIn4w
LjEuMCIKLSAgICBlbnRpdGllcyAifjEuMS4xIgotICAgIGh0bWxwYXJzZXIyICJ+My44LjEiCi0g
ICAgbG9kYXNoICJeNC4xLjAiCi0gIG9wdGlvbmFsRGVwZW5kZW5jaWVzOgotICAgIGpzZG9tICJe
Ny4wLjIiCi0KLWNob2tpZGFyQF4xLjAuMDoKLSAgdmVyc2lvbiAiMS42LjAiCi0gIHJlc29sdmVk
ICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2Nob2tpZGFyLy0vY2hva2lkYXItMS42LjAu
dGd6IzkwYzMyYWQ0ODAyOTAxZDc3MTNkZTUzMmRjMjg0ZTk2YTYzYWQwNTgiCi0gIGRlcGVuZGVu
Y2llczoKLSAgICBhbnltYXRjaCAiXjEuMy4wIgotICAgIGFzeW5jLWVhY2ggIl4xLjAuMCIKLSAg
ICBnbG9iLXBhcmVudCAiXjIuMC4wIgotICAgIGluaGVyaXRzICJeMi4wLjEiCi0gICAgaXMtYmlu
YXJ5LXBhdGggIl4xLjAuMCIKLSAgICBpcy1nbG9iICJeMi4wLjAiCi0gICAgcGF0aC1pcy1hYnNv
bHV0ZSAiXjEuMC4wIgotICAgIHJlYWRkaXJwICJeMi4wLjAiCi0gIG9wdGlvbmFsRGVwZW5kZW5j
aWVzOgotICAgIGZzZXZlbnRzICJeMS4wLjAiCi0KLWNpcmN1bGFyLWpzb25AXjAuMy4wOgotICB2
ZXJzaW9uICIwLjMuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20v
Y2lyY3VsYXItanNvbi8tL2NpcmN1bGFyLWpzb24tMC4zLjEudGd6I2JlOGIzNmFlZmNjZGU4YjNj
YTdhYTJkNmFmYzA3YTM3MjQyYzBkMmQiCi0KLWNsYXBAXjEuMC45OgotICB2ZXJzaW9uICIxLjEu
MSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vY2xhcC8tL2NsYXAt
MS4xLjEudGd6I2E4YTkzZTBiZmI3NTgxYWMxOTljNGYwMDFhNTUyNWE3MjRjZTY5NmQiCi0gIGRl
cGVuZGVuY2llczoKLSAgICBjaGFsayAiXjEuMS4zIgotCi1jbGFzc25hbWVzQF4yLjIuNToKLSAg
dmVyc2lvbiAiMi4yLjUiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29t
L2NsYXNzbmFtZXMvLS9jbGFzc25hbWVzLTIuMi41LnRneiNmYjM4MDFkNDUzNDY3NjQ5ZWYzNjAz
YzdkNjFhMDJiZDEyOWJkZTZkIgotCi1jbGVhbi1jc3NAMy40Lng6Ci0gIHZlcnNpb24gIjMuNC4y
MCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vY2xlYW4tY3NzLy0v
Y2xlYW4tY3NzLTMuNC4yMC50Z3ojYzBkODk2M2I1NDQ4ZTAzMGYwYmNkM2RkZDBkYWM0ZGZlM2Rl
YTUwMSIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGNvbW1hbmRlciAiMi44LngiCi0gICAgc291cmNl
LW1hcCAiMC40LngiCi0KLWNsaS1jdXJzb3JAXjEuMC4xOgotICB2ZXJzaW9uICIxLjAuMiIKLSAg
cmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vY2xpLWN1cnNvci8tL2NsaS1j
dXJzb3ItMS4wLjIudGd6IzY0ZGEzZjdkNTZhNTQ0MTJlNTk3OTRiZDYyZGMzNTI5NWU4ZjI5ODci
Ci0gIGRlcGVuZGVuY2llczoKLSAgICByZXN0b3JlLWN1cnNvciAiXjEuMC4xIgotCi1jbGktdGFi
bGVAXjAuMy4xOgotICB2ZXJzaW9uICIwLjMuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0
cnkueWFybnBrZy5jb20vY2xpLXRhYmxlLy0vY2xpLXRhYmxlLTAuMy4xLnRneiNmNTNiMDUyNjZh
OGIxYTBiOTM0YjNkMDgyMWU2ZTJkYzU5MTRhZTIzIgotICBkZXBlbmRlbmNpZXM6Ci0gICAgY29s
b3JzICIxLjAuMyIKLQotY2xpLXVzYWdlQF4wLjEuMToKLSAgdmVyc2lvbiAiMC4xLjQiCi0gIHJl
c29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2NsaS11c2FnZS8tL2NsaS11c2Fn
ZS0wLjEuNC50Z3ojN2MwMWUwZGM3MDZjMjM0YjM5YzkzMzgzOGM4ZTIwYjIxNzU3NzZlMiIKLSAg
ZGVwZW5kZW5jaWVzOgotICAgIG1hcmtlZCAiXjAuMy42IgotICAgIG1hcmtlZC10ZXJtaW5hbCAi
XjEuNi4yIgotCi1jbGktd2lkdGhAXjIuMC4wOgotICB2ZXJzaW9uICIyLjEuMCIKLSAgcmVzb2x2
ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vY2xpLXdpZHRoLy0vY2xpLXdpZHRoLTIu
MS4wLnRneiNiMjM0Y2EyMDliMjllZjY2ZmM1MThkOWI5OGQ1ODQ3YjAwZWRmMDBhIgotCi1jbGl1
aUBeMi4xLjA6Ci0gIHZlcnNpb24gIjIuMS4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3Ry
eS55YXJucGtnLmNvbS9jbGl1aS8tL2NsaXVpLTIuMS4wLnRneiM0YjQ3NTc2MGZmODAyNjRjNzYy
YzNhMTcxOTAzMmU5MWM3ZmVhMGQxIgotICBkZXBlbmRlbmNpZXM6Ci0gICAgY2VudGVyLWFsaWdu
ICJeMC4xLjEiCi0gICAgcmlnaHQtYWxpZ24gIl4wLjEuMSIKLSAgICB3b3Jkd3JhcCAiMC4wLjIi
Ci0KLWNsaXVpQF4zLjIuMDoKLSAgdmVyc2lvbiAiMy4yLjAiCi0gIHJlc29sdmVkICJodHRwczov
L3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2NsaXVpLy0vY2xpdWktMy4yLjAudGd6IzEyMDYwMTUzN2E5
MTZkMjk5NDBmOTM0ZGEzYjQ4ZDU4NWEzOTIxM2QiCi0gIGRlcGVuZGVuY2llczoKLSAgICBzdHJp
bmctd2lkdGggIl4xLjAuMSIKLSAgICBzdHJpcC1hbnNpICJeMy4wLjEiCi0gICAgd3JhcC1hbnNp
ICJeMi4wLjAiCi0KLWNsb25lQF4xLjAuMjoKLSAgdmVyc2lvbiAiMS4wLjIiCi0gIHJlc29sdmVk
ICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2Nsb25lLy0vY2xvbmUtMS4wLjIudGd6IzI2
MGI3YTk5ZWJiMWVkZmUyNDc1MzgxNzVmNzgzMjQzY2IxOWQxNDkiCi0KLWNvQF40LjYuMDoKLSAg
dmVyc2lvbiAiNC42LjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29t
L2NvLy0vY28tNC42LjAudGd6IzZlYTZiZGYzZDg1M2FlNTRjY2I4ZTQ3YmZhMGJmM2Y5MDMxZmIx
ODQiCi0KLWNvYUB+MS4wLjE6Ci0gIHZlcnNpb24gIjEuMC4xIgotICByZXNvbHZlZCAiaHR0cHM6
Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9jb2EvLS9jb2EtMS4wLjEudGd6IzdmOTU5MzQ2Y2ZjODcx
OWUzZjcyMzNjZDY4NTI4NTRhN2M2N2Q4YTMiCi0gIGRlcGVuZGVuY2llczoKLSAgICBxICJeMS4x
LjIiCi0KLWNvZGUtcG9pbnQtYXRAXjEuMC4wOgotICB2ZXJzaW9uICIxLjAuMSIKLSAgcmVzb2x2
ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vY29kZS1wb2ludC1hdC8tL2NvZGUtcG9p
bnQtYXQtMS4wLjEudGd6IzExMDRjZDM0ZjliNWI0NWQzZWJhODhmMWJhYmMxOTI0ZTFjZTM1ZmIi
Ci0gIGRlcGVuZGVuY2llczoKLSAgICBudW1iZXItaXMtbmFuICJeMS4wLjAiCi0KLWNvbG9yLWNv
bnZlcnRAXjEuMy4wOgotICB2ZXJzaW9uICIxLjUuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVn
aXN0cnkueWFybnBrZy5jb20vY29sb3ItY29udmVydC8tL2NvbG9yLWNvbnZlcnQtMS41LjAudGd6
IzdhMmI0ZWZiNDQ4OGRmODViY2E2NDQzY2IwMzhiNzEwMGZiZTdkZTEiCi0KLWNvbG9yLW5hbWVA
XjEuMC4wOgotICB2ZXJzaW9uICIxLjEuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnku
eWFybnBrZy5jb20vY29sb3ItbmFtZS8tL2NvbG9yLW5hbWUtMS4xLjEudGd6IzRiMTQxNTMwNGNm
NTAwMjhlYTgxNjQzNjQzYmQ4MmVhMDU4MDM2ODkiCi0KLWNvbG9yLXN0cmluZ0BeMC4zLjA6Ci0g
IHZlcnNpb24gIjAuMy4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNv
bS9jb2xvci1zdHJpbmcvLS9jb2xvci1zdHJpbmctMC4zLjAudGd6IzI3ZDQ2ZmI2NzAyNWM1YzJm
YTI1OTkzYmZiZjU3OWU0Nzg0MWI5OTEiCi0gIGRlcGVuZGVuY2llczoKLSAgICBjb2xvci1uYW1l
ICJeMS4wLjAiCi0KLWNvbG9yQF4wLjExLjA6Ci0gIHZlcnNpb24gIjAuMTEuMyIKLSAgcmVzb2x2
ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vY29sb3IvLS9jb2xvci0wLjExLjMudGd6
IzRiYWQxZDBkNTI0OTlkZDAwZGJkNmYwODY4NDQyNDY3ZTQ5Mzk0ZTYiCi0gIGRlcGVuZGVuY2ll
czoKLSAgICBjbG9uZSAiXjEuMC4yIgotICAgIGNvbG9yLWNvbnZlcnQgIl4xLjMuMCIKLSAgICBj
b2xvci1zdHJpbmcgIl4wLjMuMCIKLQotY29sb3JtaW5AXjEuMC41OgotICB2ZXJzaW9uICIxLjEu
MiIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vY29sb3JtaW4vLS9j
b2xvcm1pbi0xLjEuMi50Z3ojZWEyZjc0MjBhNzJiOTY4ODFhMzhhYWU1OWVjMTI0YTZmNzI5ODEz
MyIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGNvbG9yICJeMC4xMS4wIgotICAgIGNzcy1jb2xvci1u
YW1lcyAiMC4wLjQiCi0gICAgaGFzICJeMS4wLjEiCi0KLWNvbG9yc0B+MS4xLjI6Ci0gIHZlcnNp
b24gIjEuMS4yIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9jb2xv
cnMvLS9jb2xvcnMtMS4xLjIudGd6IzE2OGE0NzAxNzU2YjZhN2Y1MWExMmNlMGM5N2JmYTI4YzA4
NGVkNjMiCi0KLWNvbG9yc0AxLjAuMzoKLSAgdmVyc2lvbiAiMS4wLjMiCi0gIHJlc29sdmVkICJo
dHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2NvbG9ycy8tL2NvbG9ycy0xLjAuMy50Z3ojMDQz
M2Y0NGQ4MDk2ODBmZGViNjBlZDI2MGYxYjBjMjYyZTgyYTQwYiIKLQotY29tYmluZWQtc3RyZWFt
QF4xLjAuNSwgY29tYmluZWQtc3RyZWFtQH4xLjAuNToKLSAgdmVyc2lvbiAiMS4wLjUiCi0gIHJl
c29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2NvbWJpbmVkLXN0cmVhbS8tL2Nv
bWJpbmVkLXN0cmVhbS0xLjAuNS50Z3ojOTM4MzcwYTU3YjRhNTFkZWEyYzc3YzE1ZDVjNWZkZjg5
NTE2NDAwOSIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGRlbGF5ZWQtc3RyZWFtICJ+MS4wLjAiCi0K
LWNvbW1hbmRlckBeMi45LjAsIGNvbW1hbmRlckAyLjkueDoKLSAgdmVyc2lvbiAiMi45LjAiCi0g
IHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2NvbW1hbmRlci8tL2NvbW1h
bmRlci0yLjkuMC50Z3ojOWM5OTA5NDE3NmUxMjI0MGNiMjJkNmM1MTQ2MDk4NDAwZmUwZjdkNCIK
LSAgZGVwZW5kZW5jaWVzOgotICAgIGdyYWNlZnVsLXJlYWRsaW5rICI+PSAxLjAuMCIKLQotY29t
bWFuZGVyQH4yLjguMSwgY29tbWFuZGVyQDIuOC54OgotICB2ZXJzaW9uICIyLjguMSIKLSAgcmVz
b2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vY29tbWFuZGVyLy0vY29tbWFuZGVy
LTIuOC4xLnRneiMwNmJlMzY3ZmViZmRhMGMzMzBhYTFlMmEwNzJkM2RjOTc2MjQyNWQ0IgotICBk
ZXBlbmRlbmNpZXM6Ci0gICAgZ3JhY2VmdWwtcmVhZGxpbmsgIj49IDEuMC4wIgotCi1jb21tb25k
aXJAXjEuMC4xOgotICB2ZXJzaW9uICIxLjAuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0
cnkueWFybnBrZy5jb20vY29tbW9uZGlyLy0vY29tbW9uZGlyLTEuMC4xLnRneiNkZGQ4MDBkYTBj
NjYxMjczOTNjY2E1OTUwZWE5NjhhM2FhZjEyNTNiIgotCi1jb21wcmVzc2libGVAfjIuMC44Ogot
ICB2ZXJzaW9uICIyLjAuOCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5j
b20vY29tcHJlc3NpYmxlLy0vY29tcHJlc3NpYmxlLTIuMC44LnRneiM3MTYyZTZjNDZkM2I5ZDIw
MGZmYjQ1Y2I0ZTRhMGY3ODMyNzMyNTAzIgotICBkZXBlbmRlbmNpZXM6Ci0gICAgbWltZS1kYiAi
Pj0gMS4yMy4wIDwgMiIKLQotY29tcHJlc3Npb25AXjEuNS4yOgotICB2ZXJzaW9uICIxLjYuMiIK
LSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vY29tcHJlc3Npb24vLS9j
b21wcmVzc2lvbi0xLjYuMi50Z3ojY2NlYjEyMWVjYzlkMDljNTJkN2FkMGMzMzUwZWE5M2RkZDQw
MmJjMyIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGFjY2VwdHMgIn4xLjMuMyIKLSAgICBieXRlcyAi
Mi4zLjAiCi0gICAgY29tcHJlc3NpYmxlICJ+Mi4wLjgiCi0gICAgZGVidWcgIn4yLjIuMCIKLSAg
ICBvbi1oZWFkZXJzICJ+MS4wLjEiCi0gICAgdmFyeSAifjEuMS4wIgotCi1jb25jYXQtbWFwQDAu
MC4xOgotICB2ZXJzaW9uICIwLjAuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFy
bnBrZy5jb20vY29uY2F0LW1hcC8tL2NvbmNhdC1tYXAtMC4wLjEudGd6I2Q4YTk2YmQ3N2ZkNjhk
Zjc3OTNhNzMwMzZhM2JhMGQ1NDA1ZDQ3N2IiCi0KLWNvbmNhdC1zdHJlYW1AXjEuNC42OgotICB2
ZXJzaW9uICIxLjUuMiIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20v
Y29uY2F0LXN0cmVhbS8tL2NvbmNhdC1zdHJlYW0tMS41LjIudGd6IzcwODk3ODYyNGQ4NTZhZjQx
YTVhNzQxZGVmZGQyNjFkYTc1MmMyNjYiCi0gIGRlcGVuZGVuY2llczoKLSAgICBpbmhlcml0cyAi
fjIuMC4xIgotICAgIHJlYWRhYmxlLXN0cmVhbSAifjIuMC4wIgotICAgIHR5cGVkYXJyYXkgIn4w
LjAuNSIKLQotY29ubmVjdC1oaXN0b3J5LWFwaS1mYWxsYmFja0BeMS4zLjAsIGNvbm5lY3QtaGlz
dG9yeS1hcGktZmFsbGJhY2tAMS4zLjA6Ci0gIHZlcnNpb24gIjEuMy4wIgotICByZXNvbHZlZCAi
aHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9jb25uZWN0LWhpc3RvcnktYXBpLWZhbGxiYWNr
Ly0vY29ubmVjdC1oaXN0b3J5LWFwaS1mYWxsYmFjay0xLjMuMC50Z3ojZTUxZDE3ZjhmMGVmMGRi
OTBhNjRmZGI0N2RlMzA1MTU1NmU5ZjE2OSIKLQotY29uc29sZS1icm93c2VyaWZ5QF4xLjEuMDoK
LSAgdmVyc2lvbiAiMS4xLjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cu
Y29tL2NvbnNvbGUtYnJvd3NlcmlmeS8tL2NvbnNvbGUtYnJvd3NlcmlmeS0xLjEuMC50Z3ojZjAy
NDFjNDU3MzBhOWZjNjMyM2IyMDZkYmYzOGVkYzc0MWQwYmIxMCIKLSAgZGVwZW5kZW5jaWVzOgot
ICAgIGRhdGUtbm93ICJeMC4xLjQiCi0KLWNvbnNvbGUtY29udHJvbC1zdHJpbmdzQF4xLjAuMCwg
Y29uc29sZS1jb250cm9sLXN0cmluZ3NAfjEuMS4wOgotICB2ZXJzaW9uICIxLjEuMCIKLSAgcmVz
b2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vY29uc29sZS1jb250cm9sLXN0cmlu
Z3MvLS9jb25zb2xlLWNvbnRyb2wtc3RyaW5ncy0xLjEuMC50Z3ojM2Q3Y2Y0NDY0ZGI2NDQ2ZWE2
NDRiZjRiMzk1MDdmOTg1MTAwOGU4ZSIKLQotY29uc3RhbnQtY2FzZUBeMi4wLjA6Ci0gIHZlcnNp
b24gIjIuMC4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9jb25z
dGFudC1jYXNlLy0vY29uc3RhbnQtY2FzZS0yLjAuMC50Z3ojNDE3NTc2NGQzODlkM2ZhOWM4ZWNk
MjkxODZlZDYwMDUyNDNiNmE0NiIKLSAgZGVwZW5kZW5jaWVzOgotICAgIHNuYWtlLWNhc2UgIl4y
LjEuMCIKLSAgICB1cHBlci1jYXNlICJeMS4xLjEiCi0KLWNvbnN0YW50cy1icm93c2VyaWZ5QDAu
MC4xOgotICB2ZXJzaW9uICIwLjAuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFy
bnBrZy5jb20vY29uc3RhbnRzLWJyb3dzZXJpZnkvLS9jb25zdGFudHMtYnJvd3NlcmlmeS0wLjAu
MS50Z3ojOTI1NzdkYjUyN2JhNmM0Y2YwYTQ1NjhkODRiYzAzMWY0NDFlMjFmMiIKLQotY29udGFp
bnMtcGF0aEBeMC4xLjA6Ci0gIHZlcnNpb24gIjAuMS4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9y
ZWdpc3RyeS55YXJucGtnLmNvbS9jb250YWlucy1wYXRoLy0vY29udGFpbnMtcGF0aC0wLjEuMC50
Z3ojZmU4Y2YxODRmZjY2NzBiNmJhZWYwMWE5ZDQ4NjFhNWNiZWM0MTIwYSIKLQotY29udGVudC1k
aXNwb3NpdGlvbkAwLjUuMToKLSAgdmVyc2lvbiAiMC41LjEiCi0gIHJlc29sdmVkICJodHRwczov
L3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2NvbnRlbnQtZGlzcG9zaXRpb24vLS9jb250ZW50LWRpc3Bv
c2l0aW9uLTAuNS4xLnRneiM4NzQ3NmM2YTY3YzhkYWE4N2UzMmU4NzYxNmRmODgzYmE3ZmIwNzFi
IgotCi1jb250ZW50LXR5cGVAfjEuMC4yOgotICB2ZXJzaW9uICIxLjAuMiIKLSAgcmVzb2x2ZWQg
Imh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vY29udGVudC10eXBlLy0vY29udGVudC10eXBl
LTEuMC4yLnRneiNiN2QxMTNhZWU3YThkZDI3YmQyMTEzM2M0ZGMyNTI5ZGYxNzIxZWVkIgotCi1j
b252ZXJ0LXNvdXJjZS1tYXBAXjEuMS4wOgotICB2ZXJzaW9uICIxLjMuMCIKLSAgcmVzb2x2ZWQg
Imh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vY29udmVydC1zb3VyY2UtbWFwLy0vY29udmVy
dC1zb3VyY2UtbWFwLTEuMy4wLnRneiNlOWYzZTljNmUyNzI4ZWZjMjY3NjY5NmE3MGViMzgyZjcz
MTA2YTY3IgotCi1jb29raWUtc2lnbmF0dXJlQDEuMC42OgotICB2ZXJzaW9uICIxLjAuNiIKLSAg
cmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vY29va2llLXNpZ25hdHVyZS8t
L2Nvb2tpZS1zaWduYXR1cmUtMS4wLjYudGd6I2UzMDNhODgyYjM0MmNjM2VlOGNhNTEzYTc5OTk5
NzM0ZGFiM2FlMmMiCi0KLWNvb2tpZUAwLjMuMToKLSAgdmVyc2lvbiAiMC4zLjEiCi0gIHJlc29s
dmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2Nvb2tpZS8tL2Nvb2tpZS0wLjMuMS50
Z3ojZTdlMGExZjllZjQzYjRjOGJhOTI1YzVjNWE5NmU4MDZkMTY4NzNiYiIKLQotY29yZS1qc0Be
MS4wLjA6Ci0gIHZlcnNpb24gIjEuMi43IgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55
YXJucGtnLmNvbS9jb3JlLWpzLy0vY29yZS1qcy0xLjIuNy50Z3ojNjUyMjk0YzE0NjUxZGIyOGZh
OTNiZDJkNWZmMjk4M2E0ZjA4YzYzNiIKLQotY29yZS1qc0BeMi40LjA6Ci0gIHZlcnNpb24gIjIu
NC4xIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9jb3JlLWpzLy0v
Y29yZS1qcy0yLjQuMS50Z3ojNGRlOTExZTY2N2IwZWFlOTEyNGUzNDI1NGI1M2FlYTZmYzYxOGQz
ZSIKLQotY29yZS11dGlsLWlzQH4xLjAuMDoKLSAgdmVyc2lvbiAiMS4wLjIiCi0gIHJlc29sdmVk
ICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2NvcmUtdXRpbC1pcy8tL2NvcmUtdXRpbC1p
cy0xLjAuMi50Z3ojYjVmZDU0MjIwYWEyYmM1YWI1N2FhYjcxNDBjOTQwNzU0NTAzYzFhNyIKLQot
Y3Jvc3Mtc3Bhd25ANC4wLjA6Ci0gIHZlcnNpb24gIjQuMC4wIgotICByZXNvbHZlZCAiaHR0cHM6
Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9jcm9zcy1zcGF3bi8tL2Nyb3NzLXNwYXduLTQuMC4wLnRn
eiM4MjU0Nzc0YWI0Nzg2YjhjNWIzY2Y0ZGZiYTY2Y2U1NjM5MzJjMjUyIgotICBkZXBlbmRlbmNp
ZXM6Ci0gICAgbHJ1LWNhY2hlICJeNC4wLjEiCi0gICAgd2hpY2ggIl4xLjIuOSIKLQotY3J5cHRp
bGVzQDIueC54OgotICB2ZXJzaW9uICIyLjAuNSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0
cnkueWFybnBrZy5jb20vY3J5cHRpbGVzLy0vY3J5cHRpbGVzLTIuMC41LnRneiMzYmRmZWNkYzYw
ODE0N2MxYzY3MjAyZmEyOTFlN2RjYTU5ZWFhM2I4IgotICBkZXBlbmRlbmNpZXM6Ci0gICAgYm9v
bSAiMi54LngiCi0KLWNyeXB0by1icm93c2VyaWZ5QH4zLjIuNjoKLSAgdmVyc2lvbiAiMy4yLjgi
Ci0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2NyeXB0by1icm93c2Vy
aWZ5Ly0vY3J5cHRvLWJyb3dzZXJpZnktMy4yLjgudGd6I2I5YjExZGJlNmQ5NjUxZGQ4ODJhMDFl
NmNjNDY3ZGY3MThlY2YxODkiCi0gIGRlcGVuZGVuY2llczoKLSAgICBwYmtkZjItY29tcGF0ICIy
LjAuMSIKLSAgICByaXBlbWQxNjAgIjAuMi4wIgotICAgIHNoYS5qcyAiMi4yLjYiCi0KLWNzcy1j
b2xvci1uYW1lc0AwLjAuNDoKLSAgdmVyc2lvbiAiMC4wLjQiCi0gIHJlc29sdmVkICJodHRwczov
L3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2Nzcy1jb2xvci1uYW1lcy8tL2Nzcy1jb2xvci1uYW1lcy0w
LjAuNC50Z3ojODA4YWRjMmU3OWNmODQ3MzgwNjliNjQ2Y2IyMGVjMjdiZWI2MjllMCIKLQotY3Nz
LWxvYWRlckAwLjI0LjA6Ci0gIHZlcnNpb24gIjAuMjQuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8v
cmVnaXN0cnkueWFybnBrZy5jb20vY3NzLWxvYWRlci8tL2Nzcy1sb2FkZXItMC4yNC4wLnRneiM3
YWZhYWZiNGMwZmIyZjkwYjMzNWVkMTBhMWM3N2IzNGQ2NDg0M2ZlIgotICBkZXBlbmRlbmNpZXM6
Ci0gICAgYmFiZWwtY29kZS1mcmFtZSAiXjYuMTEuMCIKLSAgICBjc3Mtc2VsZWN0b3ItdG9rZW5p
emVyICJeMC42LjAiCi0gICAgY3NzbmFubyAiPj0yLjYuMSA8NCIKLSAgICBsb2FkZXItdXRpbHMg
In4wLjIuMiIKLSAgICBsb2Rhc2guY2FtZWxjYXNlICJeMy4wLjEiCi0gICAgb2JqZWN0LWFzc2ln
biAiXjQuMC4xIgotICAgIHBvc3Rjc3MgIl41LjAuNiIKLSAgICBwb3N0Y3NzLW1vZHVsZXMtZXh0
cmFjdC1pbXBvcnRzICJeMS4wLjAiCi0gICAgcG9zdGNzcy1tb2R1bGVzLWxvY2FsLWJ5LWRlZmF1
bHQgIl4xLjAuMSIKLSAgICBwb3N0Y3NzLW1vZHVsZXMtc2NvcGUgIl4xLjAuMCIKLSAgICBwb3N0
Y3NzLW1vZHVsZXMtdmFsdWVzICJeMS4xLjAiCi0gICAgc291cmNlLWxpc3QtbWFwICJeMC4xLjQi
Ci0KLWNzcy1zZWxlY3RAXjEuMS4wLCBjc3Mtc2VsZWN0QH4xLjIuMDoKLSAgdmVyc2lvbiAiMS4y
LjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2Nzcy1zZWxlY3Qv
LS9jc3Mtc2VsZWN0LTEuMi4wLnRneiMyYjNhMTEwNTM5YzUzNTVmMWNkOGQzMTQ2MjNlODcwYjEy
MWVjODU4IgotICBkZXBlbmRlbmNpZXM6Ci0gICAgYm9vbGJhc2UgIn4xLjAuMCIKLSAgICBjc3Mt
d2hhdCAiMi4xIgotICAgIGRvbXV0aWxzICIxLjUuMSIKLSAgICBudGgtY2hlY2sgIn4xLjAuMSIK
LQotY3NzLXNlbGVjdG9yLXRva2VuaXplckBeMC42LjA6Ci0gIHZlcnNpb24gIjAuNi4wIgotICBy
ZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9jc3Mtc2VsZWN0b3ItdG9rZW5p
emVyLy0vY3NzLXNlbGVjdG9yLXRva2VuaXplci0wLjYuMC50Z3ojNjQ0NWY1ODJjNzkzMGQyNDFk
Y2M1MDA3YTQzZDZmY2I4ZjA3MzE1MiIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGNzc2VzYyAiXjAu
MS4wIgotICAgIGZhc3RwYXJzZSAiXjEuMS4xIgotICAgIHJlZ2V4cHUtY29yZSAiXjEuMC4wIgot
Ci1jc3Mtd2hhdEAyLjE6Ci0gIHZlcnNpb24gIjIuMS4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9y
ZWdpc3RyeS55YXJucGtnLmNvbS9jc3Mtd2hhdC8tL2Nzcy13aGF0LTIuMS4wLnRneiM5NDY3ZDAz
MmMzOGNmYWVmYjlmMmQ3OTUwMTI1MzA2MmY4N2ZhMWJkIgotCi1jc3Nlc2NAXjAuMS4wOgotICB2
ZXJzaW9uICIwLjEuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20v
Y3NzZXNjLy0vY3NzZXNjLTAuMS4wLnRneiNjODE0OTAzZTQ1NjIzMzcxYTA0NzdiNDAxMDlhYWFm
YmVlYWRkYmI0IgotCi0iY3NzbmFub0A+PTIuNi4xIDw0IjoKLSAgdmVyc2lvbiAiMy43LjciCi0g
IHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2Nzc25hbm8vLS9jc3NuYW5v
LTMuNy43LnRneiMyN2ZhYzYxMTM4MGM2YTQ5ZDZmNzIyYzA1MzdlNWE5ODhhNzg1MDEwIgotICBk
ZXBlbmRlbmNpZXM6Ci0gICAgYXV0b3ByZWZpeGVyICJeNi4zLjEiCi0gICAgZGVjYW1lbGl6ZSAi
XjEuMS4yIgotICAgIGRlZmluZWQgIl4xLjAuMCIKLSAgICBoYXMgIl4xLjAuMSIKLSAgICBvYmpl
Y3QtYXNzaWduICJeNC4wLjEiCi0gICAgcG9zdGNzcyAiXjUuMC4xNCIKLSAgICBwb3N0Y3NzLWNh
bGMgIl41LjIuMCIKLSAgICBwb3N0Y3NzLWNvbG9ybWluICJeMi4xLjgiCi0gICAgcG9zdGNzcy1j
b252ZXJ0LXZhbHVlcyAiXjIuMy40IgotICAgIHBvc3Rjc3MtZGlzY2FyZC1jb21tZW50cyAiXjIu
MC40IgotICAgIHBvc3Rjc3MtZGlzY2FyZC1kdXBsaWNhdGVzICJeMi4wLjEiCi0gICAgcG9zdGNz
cy1kaXNjYXJkLWVtcHR5ICJeMi4wLjEiCi0gICAgcG9zdGNzcy1kaXNjYXJkLW92ZXJyaWRkZW4g
Il4wLjEuMSIKLSAgICBwb3N0Y3NzLWRpc2NhcmQtdW51c2VkICJeMi4yLjEiCi0gICAgcG9zdGNz
cy1maWx0ZXItcGx1Z2lucyAiXjIuMC4wIgotICAgIHBvc3Rjc3MtbWVyZ2UtaWRlbnRzICJeMi4x
LjUiCi0gICAgcG9zdGNzcy1tZXJnZS1sb25naGFuZCAiXjIuMC4xIgotICAgIHBvc3Rjc3MtbWVy
Z2UtcnVsZXMgIl4yLjAuMyIKLSAgICBwb3N0Y3NzLW1pbmlmeS1mb250LXZhbHVlcyAiXjEuMC4y
IgotICAgIHBvc3Rjc3MtbWluaWZ5LWdyYWRpZW50cyAiXjEuMC4xIgotICAgIHBvc3Rjc3MtbWlu
aWZ5LXBhcmFtcyAiXjEuMC40IgotICAgIHBvc3Rjc3MtbWluaWZ5LXNlbGVjdG9ycyAiXjIuMC40
IgotICAgIHBvc3Rjc3Mtbm9ybWFsaXplLWNoYXJzZXQgIl4xLjEuMCIKLSAgICBwb3N0Y3NzLW5v
cm1hbGl6ZS11cmwgIl4zLjAuNyIKLSAgICBwb3N0Y3NzLW9yZGVyZWQtdmFsdWVzICJeMi4xLjAi
Ci0gICAgcG9zdGNzcy1yZWR1Y2UtaWRlbnRzICJeMi4yLjIiCi0gICAgcG9zdGNzcy1yZWR1Y2Ut
aW5pdGlhbCAiXjEuMC4wIgotICAgIHBvc3Rjc3MtcmVkdWNlLXRyYW5zZm9ybXMgIl4xLjAuMyIK
LSAgICBwb3N0Y3NzLXN2Z28gIl4yLjEuMSIKLSAgICBwb3N0Y3NzLXVuaXF1ZS1zZWxlY3RvcnMg
Il4yLjAuMiIKLSAgICBwb3N0Y3NzLXZhbHVlLXBhcnNlciAiXjMuMi4zIgotICAgIHBvc3Rjc3Mt
emluZGV4ICJeMi4wLjEiCi0KLWNzc29AfjIuMi4xOgotICB2ZXJzaW9uICIyLjIuMSIKLSAgcmVz
b2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vY3Nzby8tL2Nzc28tMi4yLjEudGd6
IzUxZmJiNTM0N2U1MGU4MWU2ZWQ1MTY2OGE0ODQ5MGFlNmZlMmFmZTIiCi0gIGRlcGVuZGVuY2ll
czoKLSAgICBjbGFwICJeMS4wLjkiCi0gICAgc291cmNlLW1hcCAiXjAuNS4zIgotCi0iY3Nzb21A
Pj0gMC4zLjAgPCAwLjQuMCIsIGNzc29tQDAuMy54OgotICB2ZXJzaW9uICIwLjMuMSIKLSAgcmVz
b2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vY3Nzb20vLS9jc3NvbS0wLjMuMS50
Z3ojYzllMzdlZjI0OTBlNjRmNmQxYmFhMTBmZGE4NTIyNTcwODJjMjVkMyIKLQotImNzc3N0eWxl
QD49IDAuMi4yOSA8IDAuMy4wIiwgImNzc3N0eWxlQD49IDAuMi4zNiA8IDAuMy4wIjoKLSAgdmVy
c2lvbiAiMC4yLjM3IgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9j
c3NzdHlsZS8tL2Nzc3N0eWxlLTAuMi4zNy50Z3ojNTQxMDk3MjM0Y2IyNTEzYzgzY2VlZDNhY2Rk
YzI3ZmYyNzk4N2Q1NCIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGNzc29tICIwLjMueCIKLQotZEBe
MC4xLjEsIGRAfjAuMS4xOgotICB2ZXJzaW9uICIwLjEuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8v
cmVnaXN0cnkueWFybnBrZy5jb20vZC8tL2QtMC4xLjEudGd6I2RhMTg0YzUzNWQxOGQ4ZWU3YmEy
YWEyMjliOTE0MDA5ZmFlMTEzMDkiCi0gIGRlcGVuZGVuY2llczoKLSAgICBlczUtZXh0ICJ+MC4x
MC4yIgotCi1kYW1lcmF1LWxldmVuc2h0ZWluQF4xLjAuMDoKLSAgdmVyc2lvbiAiMS4wLjMiCi0g
IHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2RhbWVyYXUtbGV2ZW5zaHRl
aW4vLS9kYW1lcmF1LWxldmVuc2h0ZWluLTEuMC4zLnRneiNhZTRmNGNlMGI2MmFjYWUxMGZmNjNh
MDFiYjA4ZjY1MmY1MjEzYWYyIgotCi1kYXNoZGFzaEBeMS4xMi4wOgotICB2ZXJzaW9uICIxLjE0
LjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2Rhc2hkYXNoLy0v
ZGFzaGRhc2gtMS4xNC4wLnRneiMyOWU0ODZjNTQxOGJmMGYzNTYwMzRhOTkzZDUxNjg2YTMzZTg0
MTQxIgotICBkZXBlbmRlbmNpZXM6Ci0gICAgYXNzZXJ0LXBsdXMgIl4xLjAuMCIKLQotZGF0ZS1u
b3dAXjAuMS40OgotICB2ZXJzaW9uICIwLjEuNCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0
cnkueWFybnBrZy5jb20vZGF0ZS1ub3cvLS9kYXRlLW5vdy0wLjEuNC50Z3ojZWFmNDM5ZmQ0ZDQ4
NDhhZDc0ZTVjYzdkYmVmMjAwNjcyYjllMzQ1YiIKLQotZGVidWdAXjIuMS4wLCBkZWJ1Z0BeMi4x
LjEsIGRlYnVnQF4yLjIuMCwgZGVidWdAfjIuMi4wOgotICB2ZXJzaW9uICIyLjIuMCIKLSAgcmVz
b2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZGVidWcvLS9kZWJ1Zy0yLjIuMC50
Z3ojZjg3MDU3ZTk5NWIxYTFmNmFlNmE0OTYwNjY0MTM3YmM1NmYwMzlkYSIKLSAgZGVwZW5kZW5j
aWVzOgotICAgIG1zICIwLjcuMSIKLQotZGVjYW1lbGl6ZUBeMS4wLjAsIGRlY2FtZWxpemVAXjEu
MS4xLCBkZWNhbWVsaXplQF4xLjEuMjoKLSAgdmVyc2lvbiAiMS4yLjAiCi0gIHJlc29sdmVkICJo
dHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2RlY2FtZWxpemUvLS9kZWNhbWVsaXplLTEuMi4w
LnRneiNmNjUzNGQxNTE0ODI2OWIyMDM1MmU3YmVlMjZmNTAxZjlhMTkxMjkwIgotCi1kZWVwLWV4
dGVuZEB+MC40LjA6Ci0gIHZlcnNpb24gIjAuNC4xIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdp
c3RyeS55YXJucGtnLmNvbS9kZWVwLWV4dGVuZC8tL2RlZXAtZXh0ZW5kLTAuNC4xLnRneiNlZmU0
MTEzZDA4MDg1ZjRlNmY5Njg3NzU5ODEwZjgwNzQ2OWUyMjUzIgotCi1kZWVwLWlzQH4wLjEuMzoK
LSAgdmVyc2lvbiAiMC4xLjMiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cu
Y29tL2RlZXAtaXMvLS9kZWVwLWlzLTAuMS4zLnRneiNiMzY5ZDZmYjVkYmMxM2VlY2Y1MjRmOTFi
MDcwZmVlZGMzNTdjZjM0IgotCi1kZWZpbmUtcHJvcGVydGllc0BeMS4xLjEsIGRlZmluZS1wcm9w
ZXJ0aWVzQF4xLjEuMjoKLSAgdmVyc2lvbiAiMS4xLjIiCi0gIHJlc29sdmVkICJodHRwczovL3Jl
Z2lzdHJ5Lnlhcm5wa2cuY29tL2RlZmluZS1wcm9wZXJ0aWVzLy0vZGVmaW5lLXByb3BlcnRpZXMt
MS4xLjIudGd6IzgzYTczZjJmZWE1Njk4OThmYjczNzE5M2M4Zjg3M2NhZjZkNDVjOTQiCi0gIGRl
cGVuZGVuY2llczoKLSAgICBmb3JlYWNoICJeMi4wLjUiCi0gICAgb2JqZWN0LWtleXMgIl4xLjAu
OCIKLQotZGVmaW5lZEBeMS4wLjA6Ci0gIHZlcnNpb24gIjEuMC4wIgotICByZXNvbHZlZCAiaHR0
cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9kZWZpbmVkLy0vZGVmaW5lZC0xLjAuMC50Z3ojYzk4
ZDliY2VmNzU2NzQxODhlMTEwOTY5MTUxMTk5ZTM5YjFmYTY5MyIKLQotZGVsQF4yLjAuMjoKLSAg
dmVyc2lvbiAiMi4yLjIiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29t
L2RlbC8tL2RlbC0yLjIuMi50Z3ojYzEyYzk4MWQwNjc4NDZjODRiY2FmODYyY2ZmOTMwZDkwN2Zm
ZDFhOCIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGdsb2JieSAiXjUuMC4wIgotICAgIGlzLXBhdGgt
Y3dkICJeMS4wLjAiCi0gICAgaXMtcGF0aC1pbi1jd2QgIl4xLjAuMCIKLSAgICBvYmplY3QtYXNz
aWduICJeNC4wLjEiCi0gICAgcGlmeSAiXjIuMC4wIgotICAgIHBpbmtpZS1wcm9taXNlICJeMi4w
LjAiCi0gICAgcmltcmFmICJeMi4yLjgiCi0KLWRlbGF5ZWQtc3RyZWFtQH4xLjAuMDoKLSAgdmVy
c2lvbiAiMS4wLjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2Rl
bGF5ZWQtc3RyZWFtLy0vZGVsYXllZC1zdHJlYW0tMS4wLjAudGd6I2RmM2FlMTk5YWNhZGZiN2Q0
NDBhYWFlMGIyOWUyMjcyYjI0ZWM2MTkiCi0KLWRlbGVnYXRlc0BeMS4wLjA6Ci0gIHZlcnNpb24g
IjEuMC4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9kZWxlZ2F0
ZXMvLS9kZWxlZ2F0ZXMtMS4wLjAudGd6Izg0YzZlMTU5YjgxOTA0ZmRjYTU5YTBlZjQ0Y2Q4NzBk
MzEyNTBmOWEiCi0KLWRlcGRAfjEuMS4wOgotICB2ZXJzaW9uICIxLjEuMCIKLSAgcmVzb2x2ZWQg
Imh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZGVwZC8tL2RlcGQtMS4xLjAudGd6I2UxYmQ4
MmM2YWFiNmNlZDk2NWI5N2I4OGIxN2VkM2U1MjhjYTE4YzMiCi0KLWRlc3Ryb3lAfjEuMC40Ogot
ICB2ZXJzaW9uICIxLjAuNCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5j
b20vZGVzdHJveS8tL2Rlc3Ryb3ktMS4wLjQudGd6Izk3ODg1NzQ0MmM0NDc0OWU0MjA2NjEzZTM3
OTQ2MjA1ODI2YWJkODAiCi0KLWRldGVjdC1pbmRlbnRAXjMuMC4xOgotICB2ZXJzaW9uICIzLjAu
MSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZGV0ZWN0LWluZGVu
dC8tL2RldGVjdC1pbmRlbnQtMy4wLjEudGd6IzlkYzVlNWRkYmNlZWY4MzI1NzY0Yjk0NTFiMDJi
YzZkNTQwODRmNzUiCi0gIGRlcGVuZGVuY2llczoKLSAgICBnZXQtc3RkaW4gIl40LjAuMSIKLSAg
ICBtaW5pbWlzdCAiXjEuMS4wIgotICAgIHJlcGVhdGluZyAiXjEuMS4wIgotCi1kZXRlY3QtcG9y
dEAxLjAuMDoKLSAgdmVyc2lvbiAiMS4wLjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5
Lnlhcm5wa2cuY29tL2RldGVjdC1wb3J0Ly0vZGV0ZWN0LXBvcnQtMS4wLjAudGd6IzEwZDBlMGJm
MDE3OTg2MmM1NTMxODcyNzNmN2EzYjQ1ZTdhOTA2MDciCi0gIGRlcGVuZGVuY2llczoKLSAgICBj
b21tYW5kZXIgIn4yLjguMSIKLQotZGlmZkBeMy4wLjA6Ci0gIHZlcnNpb24gIjMuMC4xIgotICBy
ZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9kaWZmLy0vZGlmZi0zLjAuMS50
Z3ojYTUyZDkwY2MwODk1Njk5NGJlMDA4NzdiZmY5NzExMDA2MjU4MmMzNSIKLQotZG9jdHJpbmVA
XjEuMi4yOgotICB2ZXJzaW9uICIxLjQuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnku
eWFybnBrZy5jb20vZG9jdHJpbmUvLS9kb2N0cmluZS0xLjQuMC50Z3ojZTJkYjMyZGVmYTc1MjQw
N2I5MzViMzgxZTg5ZjM3NDBlNDY5ZTU5OSIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGVzdXRpbHMg
Il4yLjAuMiIKLSAgICBpc2FycmF5ICJeMS4wLjAiCi0KLWRvY3RyaW5lQDEuMi54OgotICB2ZXJz
aW9uICIxLjIuMyIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZG9j
dHJpbmUvLS9kb2N0cmluZS0xLjIuMy50Z3ojNmFlYzZiYmQ2MmNmODlkZDQ5OGNhZTcwYzBlZDlm
NDlkYTg3M2E2YSIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGVzdXRpbHMgIl4yLjAuMiIKLSAgICBp
c2FycmF5ICJeMS4wLjAiCi0KLWRvbS1jb252ZXJ0ZXJAfjAuMToKLSAgdmVyc2lvbiAiMC4xLjQi
Ci0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2RvbS1jb252ZXJ0ZXIv
LS9kb20tY29udmVydGVyLTAuMS40LnRneiNhNDVlZjU3MjdiODkwYzliZmZlNmQ3Yzg3NmU3YjE5
Y2IwZTE3ZjNiIgotICBkZXBlbmRlbmNpZXM6Ci0gICAgdXRpbGEgIn4wLjMiCi0KLWRvbS1zZXJp
YWxpemVyQH4wLjEuMCwgZG9tLXNlcmlhbGl6ZXJAMDoKLSAgdmVyc2lvbiAiMC4xLjAiCi0gIHJl
c29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2RvbS1zZXJpYWxpemVyLy0vZG9t
LXNlcmlhbGl6ZXItMC4xLjAudGd6IzA3M2M2OTc1NDZjZTA3ODBjZTIzYmU0YTI4ZTI5M2U0MGJj
MzBjODIiCi0gIGRlcGVuZGVuY2llczoKLSAgICBkb21lbGVtZW50dHlwZSAifjEuMS4xIgotICAg
IGVudGl0aWVzICJ+MS4xLjEiCi0KLWRvbWFpbi1icm93c2VyQF4xLjEuMToKLSAgdmVyc2lvbiAi
MS4xLjciCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2RvbWFpbi1i
cm93c2VyLy0vZG9tYWluLWJyb3dzZXItMS4xLjcudGd6Izg2N2FhNGIwOTNmYWEwNWYxZGUwOGMw
NmY0ZDdiMjFmZGY4Njk4YmMiCi0KLWRvbWVsZW1lbnR0eXBlQH4xLjEuMToKLSAgdmVyc2lvbiAi
MS4xLjMiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2RvbWVsZW1l
bnR0eXBlLy0vZG9tZWxlbWVudHR5cGUtMS4xLjMudGd6I2JkMjg3NzNlMjY0Mjg4MWFlYzUxNTQ0
OTI0Mjk5YzVjZDgyMjE4NWIiCi0KLWRvbWVsZW1lbnR0eXBlQDE6Ci0gIHZlcnNpb24gIjEuMy4w
IgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9kb21lbGVtZW50dHlw
ZS8tL2RvbWVsZW1lbnR0eXBlLTEuMy4wLnRneiNiMTdhZWQ4MmU4YWI1OWU1MmRkOWMxOWIxNzU2
ZTBmYzE4NzIwNGMyIgotCi1kb21oYW5kbGVyQDIuMToKLSAgdmVyc2lvbiAiMi4xLjAiCi0gIHJl
c29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2RvbWhhbmRsZXIvLS9kb21oYW5k
bGVyLTIuMS4wLnRneiNkMjY0NmY1ZTU3ZjZjM2JhYjExY2Y2Y2IwNWQzYzBhY2Y3NDEyNTk0Igot
ICBkZXBlbmRlbmNpZXM6Ci0gICAgZG9tZWxlbWVudHR5cGUgIjEiCi0KLWRvbWhhbmRsZXJAMi4z
OgotICB2ZXJzaW9uICIyLjMuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBr
Zy5jb20vZG9taGFuZGxlci8tL2RvbWhhbmRsZXItMi4zLjAudGd6IzJkZTU5YTA4MjJkNTAyN2Zh
YmZmNmYwMzJjMmIyNWEyYThhYmU3MzgiCi0gIGRlcGVuZGVuY2llczoKLSAgICBkb21lbGVtZW50
dHlwZSAiMSIKLQotZG9tdXRpbHNAMS4xOgotICB2ZXJzaW9uICIxLjEuNiIKLSAgcmVzb2x2ZWQg
Imh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZG9tdXRpbHMvLS9kb211dGlscy0xLjEuNi50
Z3ojYmRkYzNkZTA5OWI5YTJlZmFjYzUxYzYyM2YyOGY0MTZlY2M1NzQ4NSIKLSAgZGVwZW5kZW5j
aWVzOgotICAgIGRvbWVsZW1lbnR0eXBlICIxIgotCi1kb211dGlsc0AxLjUsIGRvbXV0aWxzQDEu
NS4xOgotICB2ZXJzaW9uICIxLjUuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFy
bnBrZy5jb20vZG9tdXRpbHMvLS9kb211dGlscy0xLjUuMS50Z3ojZGNkODQ4OGEyNmY1NjNkNjEw
NzllNDhjOWY3YjdlMzIzNzM2ODJjZiIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGRvbS1zZXJpYWxp
emVyICIwIgotICAgIGRvbWVsZW1lbnR0eXBlICIxIgotCi1kb3QtY2FzZUBeMi4xLjA6Ci0gIHZl
cnNpb24gIjIuMS4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9k
b3QtY2FzZS8tL2RvdC1jYXNlLTIuMS4wLnRneiM0YjQzZGQwZDc0MDNjMzRjYjY0NTQyNGFkZDM5
N2U4MGJmZTg1Y2E2IgotICBkZXBlbmRlbmNpZXM6Ci0gICAgbm8tY2FzZSAiXjIuMi4wIgotCi1k
b3RlbnZAMi4wLjA6Ci0gIHZlcnNpb24gIjIuMC4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdp
c3RyeS55YXJucGtnLmNvbS9kb3RlbnYvLS9kb3RlbnYtMi4wLjAudGd6I2JkNzU5YzM1N2FhYTcw
MzY1ZTAxYzk2YjdiMGJlYzA4YTZlMGQ5NDkiCi0KLWR1cGxleGVyQF4wLjEuMToKLSAgdmVyc2lv
biAiMC4xLjEiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2R1cGxl
eGVyLy0vZHVwbGV4ZXItMC4xLjEudGd6I2FjZTZmZjgwOGMxY2U2NmI1N2QxZWJmOTc5NzdhY2Iw
MjMzNGNmYzEiCi0KLWVjYy1qc2JuQH4wLjEuMToKLSAgdmVyc2lvbiAiMC4xLjEiCi0gIHJlc29s
dmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2VjYy1qc2JuLy0vZWNjLWpzYm4tMC4x
LjEudGd6IzBmYzczYTllZDVmMGQ1M2MzODE5MzM5ODUyM2VmN2U1NDM3Nzc1MDUiCi0gIGRlcGVu
ZGVuY2llczoKLSAgICBqc2JuICJ+MC4xLjAiCi0KLWVlLWZpcnN0QDEuMS4xOgotICB2ZXJzaW9u
ICIxLjEuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZWUtZmly
c3QvLS9lZS1maXJzdC0xLjEuMS50Z3ojNTkwYzYxMTU2YjBhZTJmNGYwMjU1NzMyYTE1OGIyNjZi
YzU2YjIxZCIKLQotZW1vamlzLWxpc3RAXjIuMC4wOgotICB2ZXJzaW9uICIyLjEuMCIKLSAgcmVz
b2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZW1vamlzLWxpc3QvLS9lbW9qaXMt
bGlzdC0yLjEuMC50Z3ojNGRhYTRkOWRiMDBmOTgxOTg4MGM3OWZhNDU3YWU1YjA5YTFmZDM4OSIK
LQotZW5jb2RldXJsQH4xLjAuMToKLSAgdmVyc2lvbiAiMS4wLjEiCi0gIHJlc29sdmVkICJodHRw
czovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2VuY29kZXVybC8tL2VuY29kZXVybC0xLjAuMS50Z3oj
NzllM2Q1ODY1NTM0NjkwOWZlNmYwZjQ1YTVkZTY4MTAzYjI5NGQyMCIKLQotZW5jb2RpbmdAXjAu
MS4xMToKLSAgdmVyc2lvbiAiMC4xLjEyIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55
YXJucGtnLmNvbS9lbmNvZGluZy8tL2VuY29kaW5nLTAuMS4xMi50Z3ojNTM4YjY2ZjNlZTYyY2Qx
YWI1MWVjMzIzODI5ZDFmOTQ4MGM3NGJlYiIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGljb252LWxp
dGUgIn4wLjQuMTMiCi0KLWVuaGFuY2VkLXJlc29sdmVAfjAuOS4wOgotICB2ZXJzaW9uICIwLjku
MSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZW5oYW5jZWQtcmVz
b2x2ZS8tL2VuaGFuY2VkLXJlc29sdmUtMC45LjEudGd6IzRkNmU2ODliMzcyNWY4NjA5MDkyN2Nj
Yzg2Y2Q5ZjE2MzViODllMmUiCi0gIGRlcGVuZGVuY2llczoKLSAgICBncmFjZWZ1bC1mcyAiXjQu
MS4yIgotICAgIG1lbW9yeS1mcyAiXjAuMi4wIgotICAgIHRhcGFibGUgIl4wLjEuOCIKLQotZW50
aXRpZXNAfjEuMS4xOgotICB2ZXJzaW9uICIxLjEuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVn
aXN0cnkueWFybnBrZy5jb20vZW50aXRpZXMvLS9lbnRpdGllcy0xLjEuMS50Z3ojNmU1YzJkMGE1
NjIxYjVkYWRhZWNlZjgwYjkwZWRmYjVjZDc3NzJmMCIKLQotZW50aXRpZXNAMS4wOgotICB2ZXJz
aW9uICIxLjAuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZW50
aXRpZXMvLS9lbnRpdGllcy0xLjAuMC50Z3ojYjI5ODdhYTM4MjEzNDdmY2RlNjQyYjI0ZmRmYzll
NGZiNzEyYmYyNiIKLQotZW56eW1lQF4yLjQuMToKLSAgdmVyc2lvbiAiMi40LjEiCi0gIHJlc29s
dmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2VuenltZS8tL2VuenltZS0yLjQuMS50
Z3ojOTBmYTk4NjFkOTgyZDBjZWI5MmE5ZmQ1N2UzODQyNmEyZjc0ZDNiMSIKLSAgZGVwZW5kZW5j
aWVzOgotICAgIGNoZWVyaW8gIl4wLjIwLjAiCi0gICAgaXMtc3Vic2V0ICJeMC4xLjEiCi0gICAg
bG9kYXNoICJeNC4xMy4xIgotICAgIG9iamVjdC1pcyAiXjEuMC4xIgotICAgIG9iamVjdC5hc3Np
Z24gIl40LjAuMyIKLSAgICBvYmplY3QudmFsdWVzICJeMS4wLjMiCi0KLWVycm5vQF4wLjEuMywg
ImVycm5vQD49MC4xLjEgPDAuMi4wLTAiOgotICB2ZXJzaW9uICIwLjEuNCIKLSAgcmVzb2x2ZWQg
Imh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZXJybm8vLS9lcnJuby0wLjEuNC50Z3ojYjg5
NmUyM2E5ZTVlOGJhMzM4NzFmYzk5NmFiZDM2MzVmYzlhMWM3ZCIKLSAgZGVwZW5kZW5jaWVzOgot
ICAgIHByciAifjAuMC4wIgotCi1lcnJvci1leEBeMS4yLjA6Ci0gIHZlcnNpb24gIjEuMy4wIgot
ICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9lcnJvci1leC8tL2Vycm9y
LWV4LTEuMy4wLnRneiNlNjdiNDNmM2U4MmM5NmVhM2E1ODRmZmVlMGI5ZmMzMzI1ZDgwMmQ5Igot
ICBkZXBlbmRlbmNpZXM6Ci0gICAgaXMtYXJyYXlpc2ggIl4wLjIuMSIKLQotZXMtYWJzdHJhY3RA
XjEuMy4yOgotICB2ZXJzaW9uICIxLjYuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnku
eWFybnBrZy5jb20vZXMtYWJzdHJhY3QvLS9lcy1hYnN0cmFjdC0xLjYuMS50Z3ojYmI4YTIwNjQx
MjBhYmNmOTI4YTA4NmVhM2Q5MDQzMTE0Mjg1ZWM5OSIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGVz
LXRvLXByaW1pdGl2ZSAiXjEuMS4xIgotICAgIGZ1bmN0aW9uLWJpbmQgIl4xLjEuMCIKLSAgICBp
cy1jYWxsYWJsZSAiXjEuMS4zIgotICAgIGlzLXJlZ2V4ICJeMS4wLjMiCi0KLWVzLXRvLXByaW1p
dGl2ZUBeMS4xLjE6Ci0gIHZlcnNpb24gIjEuMS4xIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdp
c3RyeS55YXJucGtnLmNvbS9lcy10by1wcmltaXRpdmUvLS9lcy10by1wcmltaXRpdmUtMS4xLjEu
dGd6IzQ1MzU1MjQ4YTg4OTc5MDM0YjY3OTJlMTliYjgxZjJiNzk3NWRkMGQiCi0gIGRlcGVuZGVu
Y2llczoKLSAgICBpcy1jYWxsYWJsZSAiXjEuMS4xIgotICAgIGlzLWRhdGUtb2JqZWN0ICJeMS4w
LjEiCi0gICAgaXMtc3ltYm9sICJeMS4wLjEiCi0KLWVzNS1leHRAXjAuMTAuNywgZXM1LWV4dEBe
MC4xMC44LCBlczUtZXh0QH4wLjEwLjExLCBlczUtZXh0QH4wLjEwLjIsIGVzNS1leHRAfjAuMTAu
NzoKLSAgdmVyc2lvbiAiMC4xMC4xMiIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFy
bnBrZy5jb20vZXM1LWV4dC8tL2VzNS1leHQtMC4xMC4xMi50Z3ojYWE4NDY0MWQ0ZGI3NmI2MmFi
YmE1ZTQ1ZmQ4MDVlY2JhYjE0MDA0NyIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGVzNi1pdGVyYXRv
ciAiMiIKLSAgICBlczYtc3ltYm9sICJ+My4xIgotCi1lczYtaXRlcmF0b3JAMjoKLSAgdmVyc2lv
biAiMi4wLjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2VzNi1p
dGVyYXRvci8tL2VzNi1pdGVyYXRvci0yLjAuMC50Z3ojYmQ5Njg1NjdkNjE2MzVlMzNjMGI4MDcy
NzYxM2M5Y2I0YjA5NmJhYyIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGQgIl4wLjEuMSIKLSAgICBl
czUtZXh0ICJeMC4xMC43IgotICAgIGVzNi1zeW1ib2wgIjMiCi0KLWVzNi1tYXBAXjAuMS4zOgot
ICB2ZXJzaW9uICIwLjEuNCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5j
b20vZXM2LW1hcC8tL2VzNi1tYXAtMC4xLjQudGd6I2EzNGIxNDdiZTIyNDc3M2E0ZDdkYTgwNzI3
OTRjZWZhMzYzMmI4OTciCi0gIGRlcGVuZGVuY2llczoKLSAgICBkICJ+MC4xLjEiCi0gICAgZXM1
LWV4dCAifjAuMTAuMTEiCi0gICAgZXM2LWl0ZXJhdG9yICIyIgotICAgIGVzNi1zZXQgIn4wLjEu
MyIKLSAgICBlczYtc3ltYm9sICJ+My4xLjAiCi0gICAgZXZlbnQtZW1pdHRlciAifjAuMy40Igot
Ci1lczYtc2V0QF4wLjEuNCwgZXM2LXNldEB+MC4xLjM6Ci0gIHZlcnNpb24gIjAuMS40IgotICBy
ZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9lczYtc2V0Ly0vZXM2LXNldC0w
LjEuNC50Z3ojOTUxNmI2NzYxYzI5NjRiOTJmZjQ3OTQ1NjIzM2EyNDdkYzcwN2NlOCIKLSAgZGVw
ZW5kZW5jaWVzOgotICAgIGQgIn4wLjEuMSIKLSAgICBlczUtZXh0ICJ+MC4xMC4xMSIKLSAgICBl
czYtaXRlcmF0b3IgIjIiCi0gICAgZXM2LXN5bWJvbCAiMyIKLSAgICBldmVudC1lbWl0dGVyICJ+
MC4zLjQiCi0KLWVzNi1zeW1ib2xAfjMuMSwgZXM2LXN5bWJvbEB+My4xLjAsIGVzNi1zeW1ib2xA
MzoKLSAgdmVyc2lvbiAiMy4xLjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5w
a2cuY29tL2VzNi1zeW1ib2wvLS9lczYtc3ltYm9sLTMuMS4wLnRneiM5NDQ4MWM2NTVlN2E3Y2Fk
ODJlYmE4MzJkOTdkNTQzMzQ5NmQ3ZmZhIgotICBkZXBlbmRlbmNpZXM6Ci0gICAgZCAifjAuMS4x
IgotICAgIGVzNS1leHQgIn4wLjEwLjExIgotCi1lczYtd2Vhay1tYXBAXjIuMC4xOgotICB2ZXJz
aW9uICIyLjAuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZXM2
LXdlYWstbWFwLy0vZXM2LXdlYWstbWFwLTIuMC4xLnRneiMwZDJiYmQ4ODI3ZWI1ZmI0YmE4Zjk3
ZmJmZWE1MGQ0M2RiMjFlYTgxIgotICBkZXBlbmRlbmNpZXM6Ci0gICAgZCAiXjAuMS4xIgotICAg
IGVzNS1leHQgIl4wLjEwLjgiCi0gICAgZXM2LWl0ZXJhdG9yICIyIgotICAgIGVzNi1zeW1ib2wg
IjMiCi0KLWVzY2FwZS1odG1sQH4xLjAuMzoKLSAgdmVyc2lvbiAiMS4wLjMiCi0gIHJlc29sdmVk
ICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2VzY2FwZS1odG1sLy0vZXNjYXBlLWh0bWwt
MS4wLjMudGd6IzAyNThlYWU0ZDNkMGMwOTc0ZGUxYzE2OTE4OGVmMDA1MWQxZDE5ODgiCi0KLWVz
Y2FwZS1zdHJpbmctcmVnZXhwQF4xLjAuMiwgZXNjYXBlLXN0cmluZy1yZWdleHBAXjEuMC41LCBl
c2NhcGUtc3RyaW5nLXJlZ2V4cEAxLjAuNToKLSAgdmVyc2lvbiAiMS4wLjUiCi0gIHJlc29sdmVk
ICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2VzY2FwZS1zdHJpbmctcmVnZXhwLy0vZXNj
YXBlLXN0cmluZy1yZWdleHAtMS4wLjUudGd6IzFiNjFjMDU2MjE5MGE4ZGZmNmFlM2JiMmNmMDIw
MGNhMTMwYjg2ZDQiCi0KLWVzY29kZWdlbkBeMS42LjEsIGVzY29kZWdlbkAxLjgueDoKLSAgdmVy
c2lvbiAiMS44LjEiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2Vz
Y29kZWdlbi8tL2VzY29kZWdlbi0xLjguMS50Z3ojNWE1YjUzYWY0NjkzMTEwYmViYjA4NjdhYTM0
MzBkZDNiNzBhMTAxOCIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGVzcHJpbWEgIl4yLjcuMSIKLSAg
ICBlc3RyYXZlcnNlICJeMS45LjEiCi0gICAgZXN1dGlscyAiXjIuMC4yIgotICAgIG9wdGlvbmF0
b3IgIl4wLjguMSIKLSAgb3B0aW9uYWxEZXBlbmRlbmNpZXM6Ci0gICAgc291cmNlLW1hcCAifjAu
Mi4wIgotCi1lc2NvcGVAXjMuNi4wOgotICB2ZXJzaW9uICIzLjYuMCIKLSAgcmVzb2x2ZWQgImh0
dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZXNjb3BlLy0vZXNjb3BlLTMuNi4wLnRneiNlMDE5
NzVlODEyNzgxYTE2M2E2ZGFkZmRkODAzOThkYzY0Yzg4OWMzIgotICBkZXBlbmRlbmNpZXM6Ci0g
ICAgZXM2LW1hcCAiXjAuMS4zIgotICAgIGVzNi13ZWFrLW1hcCAiXjIuMC4xIgotICAgIGVzcmVj
dXJzZSAiXjQuMS4wIgotICAgIGVzdHJhdmVyc2UgIl40LjEuMSIKLQotZXNsaW50LWNvbmZpZy1y
ZWFjdC1hcHBAXjAuMi4xOgotICB2ZXJzaW9uICIwLjIuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8v
cmVnaXN0cnkueWFybnBrZy5jb20vZXNsaW50LWNvbmZpZy1yZWFjdC1hcHAvLS9lc2xpbnQtY29u
ZmlnLXJlYWN0LWFwcC0wLjIuMS50Z3ojYWQ1MTBkMGQwYWUxMTU3NWQwZWFiZTU0OTNiYTZlNjZm
YjkzZTY4ZSIKLQotZXNsaW50LWltcG9ydC1yZXNvbHZlci1ub2RlQF4wLjIuMDoKLSAgdmVyc2lv
biAiMC4yLjMiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2VzbGlu
dC1pbXBvcnQtcmVzb2x2ZXItbm9kZS8tL2VzbGludC1pbXBvcnQtcmVzb2x2ZXItbm9kZS0wLjIu
My50Z3ojNWFkZDgxMDZlOGM5MjhkYjJjYmEyMzJiY2Q5ZWZhODQ2ZTNkYTE2YyIKLSAgZGVwZW5k
ZW5jaWVzOgotICAgIGRlYnVnICJeMi4yLjAiCi0gICAgb2JqZWN0LWFzc2lnbiAiXjQuMC4xIgot
ICAgIHJlc29sdmUgIl4xLjEuNiIKLQotZXNsaW50LWxvYWRlckAxLjUuMDoKLSAgdmVyc2lvbiAi
MS41LjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2VzbGludC1s
b2FkZXIvLS9lc2xpbnQtbG9hZGVyLTEuNS4wLnRneiM4MjRiN2M5OTExYTYzM2ZjMTI2MGY4NjNj
NmVhNTcxMjI0ZDEwNDEyIgotICBkZXBlbmRlbmNpZXM6Ci0gICAgZmluZC1jYWNoZS1kaXIgIl4w
LjEuMSIKLSAgICBsb2FkZXItdXRpbHMgIl4wLjIuNyIKLSAgICBvYmplY3QtYXNzaWduICJeNC4w
LjEiCi0KLWVzbGludC1wbHVnaW4tZmxvd3R5cGVAMi4xOC4xOgotICB2ZXJzaW9uICIyLjE4LjEi
Ci0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2VzbGludC1wbHVnaW4t
Zmxvd3R5cGUvLS9lc2xpbnQtcGx1Z2luLWZsb3d0eXBlLTIuMTguMS50Z3ojZjAyNzUyNGM1OGI5
MGQyN2EwNTQ0ZTc0YzA4MmZiYTA3MGFmZDljOCIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGxvZGFz
aCAiXjQuMTUuMCIKLQotZXNsaW50LXBsdWdpbi1pbXBvcnRAMS4xMi4wOgotICB2ZXJzaW9uICIx
LjEyLjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2VzbGludC1w
bHVnaW4taW1wb3J0Ly0vZXNsaW50LXBsdWdpbi1pbXBvcnQtMS4xMi4wLnRneiMxMTMwN2ViMDgx
NzlmNDM2OTJmYTg0NWJhODU0MmU4MmZhMzMzZTIxIgotICBkZXBlbmRlbmNpZXM6Ci0gICAgYnVp
bHRpbi1tb2R1bGVzICJeMS4xLjEiCi0gICAgY29udGFpbnMtcGF0aCAiXjAuMS4wIgotICAgIGRl
YnVnICJeMi4yLjAiCi0gICAgZG9jdHJpbmUgIjEuMi54IgotICAgIGVzNi1tYXAgIl4wLjEuMyIK
LSAgICBlczYtc2V0ICJeMC4xLjQiCi0gICAgZXNsaW50LWltcG9ydC1yZXNvbHZlci1ub2RlICJe
MC4yLjAiCi0gICAgbG9kYXNoLmNvbmQgIl40LjMuMCIKLSAgICBsb2Rhc2guZW5kc3dpdGggIl40
LjAuMSIKLSAgICBsb2Rhc2guZmluZCAiXjQuMy4wIgotICAgIGxvZGFzaC5maW5kaW5kZXggIl40
LjMuMCIKLSAgICBvYmplY3QtYXNzaWduICJeNC4wLjEiCi0gICAgcGtnLWRpciAiXjEuMC4wIgot
ICAgIHBrZy11cCAiXjEuMC4wIgotCi1lc2xpbnQtcGx1Z2luLWpzeC1hMTF5QDIuMi4yOgotICB2
ZXJzaW9uICIyLjIuMiIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20v
ZXNsaW50LXBsdWdpbi1qc3gtYTExeS8tL2VzbGludC1wbHVnaW4tanN4LWExMXktMi4yLjIudGd6
I2FjODkzYjRmOWVjYjc1MzRiYzAzNzNmZjZhNDczODg4MzVkM2E4NTkiCi0gIGRlcGVuZGVuY2ll
czoKLSAgICBkYW1lcmF1LWxldmVuc2h0ZWluICJeMS4wLjAiCi0gICAganN4LWFzdC11dGlscyAi
XjEuMC4wIgotICAgIG9iamVjdC1hc3NpZ24gIl40LjAuMSIKLQotZXNsaW50LXBsdWdpbi1yZWFj
dEA2LjMuMDoKLSAgdmVyc2lvbiAiNi4zLjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5
Lnlhcm5wa2cuY29tL2VzbGludC1wbHVnaW4tcmVhY3QvLS9lc2xpbnQtcGx1Z2luLXJlYWN0LTYu
My4wLnRneiNmYWMzNTA0YTAyOTE3ZmM4YjE1ZjdmMjg1MTQwNThjZmZkZTljYjc2IgotICBkZXBl
bmRlbmNpZXM6Ci0gICAgZG9jdHJpbmUgIl4xLjIuMiIKLSAgICBqc3gtYXN0LXV0aWxzICJeMS4z
LjEiCi0KLWVzbGludEAzLjUuMDoKLSAgdmVyc2lvbiAiMy41LjAiCi0gIHJlc29sdmVkICJodHRw
czovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2VzbGludC8tL2VzbGludC0zLjUuMC50Z3ojMjJmYzlm
NzgwZWE1YmNhMTMwNmZhYjJiNmQzMzM2YjBmYTYyYzc1NCIKLSAgZGVwZW5kZW5jaWVzOgotICAg
IGNoYWxrICJeMS4xLjMiCi0gICAgY29uY2F0LXN0cmVhbSAiXjEuNC42IgotICAgIGRlYnVnICJe
Mi4xLjEiCi0gICAgZG9jdHJpbmUgIl4xLjIuMiIKLSAgICBlc2NvcGUgIl4zLjYuMCIKLSAgICBl
c3ByZWUgIl4zLjEuNiIKLSAgICBlc3RyYXZlcnNlICJeNC4yLjAiCi0gICAgZXN1dGlscyAiXjIu
MC4yIgotICAgIGZpbGUtZW50cnktY2FjaGUgIl4yLjAuMCIKLSAgICBnbG9iICJeNy4wLjMiCi0g
ICAgZ2xvYmFscyAiXjkuMi4wIgotICAgIGlnbm9yZSAiXjMuMS41IgotICAgIGltdXJtdXJoYXNo
ICJeMC4xLjQiCi0gICAgaW5xdWlyZXIgIl4wLjEyLjAiCi0gICAgaXMtbXktanNvbi12YWxpZCAi
XjIuMTAuMCIKLSAgICBpcy1yZXNvbHZhYmxlICJeMS4wLjAiCi0gICAganMteWFtbCAiXjMuNS4x
IgotICAgIGpzb24tc3RhYmxlLXN0cmluZ2lmeSAiXjEuMC4wIgotICAgIGxldm4gIl4wLjMuMCIK
LSAgICBsb2Rhc2ggIl40LjAuMCIKLSAgICBta2RpcnAgIl4wLjUuMCIKLSAgICBuYXR1cmFsLWNv
bXBhcmUgIl4xLjQuMCIKLSAgICBvcHRpb25hdG9yICJeMC44LjEiCi0gICAgcGF0aC1pcy1pbnNp
ZGUgIl4xLjAuMSIKLSAgICBwbHVyYWxpemUgIl4xLjIuMSIKLSAgICBwcm9ncmVzcyAiXjEuMS44
IgotICAgIHJlcXVpcmUtdW5jYWNoZWQgIl4xLjAuMiIKLSAgICBzaGVsbGpzICJeMC42LjAiCi0g
ICAgc3RyaXAtYm9tICJeMy4wLjAiCi0gICAgc3RyaXAtanNvbi1jb21tZW50cyAifjEuMC4xIgot
ICAgIHRhYmxlICJeMy43LjgiCi0gICAgdGV4dC10YWJsZSAifjAuMi4wIgotICAgIHVzZXItaG9t
ZSAiXjIuMC4wIgotCi1lc3ByZWVAXjMuMS42OgotICB2ZXJzaW9uICIzLjMuMiIKLSAgcmVzb2x2
ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZXNwcmVlLy0vZXNwcmVlLTMuMy4yLnRn
eiNkYmYzZmFkZWI0ZWNiNGQ0Nzc4MzAzZTUwMTAzYjNkMzZjODhiODljIgotICBkZXBlbmRlbmNp
ZXM6Ci0gICAgYWNvcm4gIl40LjAuMSIKLSAgICBhY29ybi1qc3ggIl4zLjAuMCIKLQotZXNwcmlt
YUBeMi42LjAsIGVzcHJpbWFAXjIuNy4xLCBlc3ByaW1hQH4yLjcuMCwgZXNwcmltYUAyLjcueDoK
LSAgdmVyc2lvbiAiMi43LjMiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cu
Y29tL2VzcHJpbWEvLS9lc3ByaW1hLTIuNy4zLnRneiM5NmUzYjcwZDU3NzlmNmFkNDljZDAzMjY3
M2QxYzMxMjc2N2JhNTgxIgotCi1lc3JlY3Vyc2VAXjQuMS4wOgotICB2ZXJzaW9uICI0LjEuMCIK
LSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZXNyZWN1cnNlLy0vZXNy
ZWN1cnNlLTQuMS4wLnRneiM0NzEzYjY1MzZhZGY3ZjJhYzRmMzI3ZDU1OWU3NzU2YmZmNjQ4MjIw
IgotICBkZXBlbmRlbmNpZXM6Ci0gICAgZXN0cmF2ZXJzZSAifjQuMS4wIgotICAgIG9iamVjdC1h
c3NpZ24gIl40LjAuMSIKLQotZXN0cmF2ZXJzZUBeMS45LjE6Ci0gIHZlcnNpb24gIjEuOS4zIgot
ICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9lc3RyYXZlcnNlLy0vZXN0
cmF2ZXJzZS0xLjkuMy50Z3ojYWY2N2YyZGM5MjI1ODI0MTU5NTA5MjYwOTFhNDAwNWQyOWM5YmI0
NCIKLQotZXN0cmF2ZXJzZUBeNC4xLjEsIGVzdHJhdmVyc2VAXjQuMi4wOgotICB2ZXJzaW9uICI0
LjIuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZXN0cmF2ZXJz
ZS8tL2VzdHJhdmVyc2UtNC4yLjAudGd6IzBkZWUzZmVkMzFmY2Q0Njk2MThjZTczNDIwOTlmYzFh
ZmEwYmRiMTMiCi0KLWVzdHJhdmVyc2VAfjQuMS4wOgotICB2ZXJzaW9uICI0LjEuMSIKLSAgcmVz
b2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZXN0cmF2ZXJzZS8tL2VzdHJhdmVy
c2UtNC4xLjEudGd6I2Y2Y2FjYTcyODkzM2E4NTBlZjkwNjYxZDBlMTc5ODJiYTQ3MTExYTIiCi0K
LWVzdXRpbHNAXjIuMC4wLCBlc3V0aWxzQF4yLjAuMjoKLSAgdmVyc2lvbiAiMi4wLjIiCi0gIHJl
c29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2VzdXRpbHMvLS9lc3V0aWxzLTIu
MC4yLnRneiMwYWJmNGYxY2FhNWJjYjFmN2E5ZDhhY2M2ZGVhNGZhYWEwNGJhYzliIgotCi1ldGFn
QH4xLjcuMDoKLSAgdmVyc2lvbiAiMS43LjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5
Lnlhcm5wa2cuY29tL2V0YWcvLS9ldGFnLTEuNy4wLnRneiMwM2QzMGI1ZjY3ZGQ2ZTYzMmQyOTQ1
ZDMwZDY2NTI3MzFhMzRkNWQ4IgotCi1ldmVudC1lbWl0dGVyQH4wLjMuNDoKLSAgdmVyc2lvbiAi
MC4zLjQiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2V2ZW50LWVt
aXR0ZXIvLS9ldmVudC1lbWl0dGVyLTAuMy40LnRneiM4ZDYzZGRmYjRjZmUxZmFlM2IzMmNhMjY1
YzRjNzIwMjIyMDgwYmI1IgotICBkZXBlbmRlbmNpZXM6Ci0gICAgZCAifjAuMS4xIgotICAgIGVz
NS1leHQgIn4wLjEwLjciCi0KLWV2ZW50ZW1pdHRlcjNAMS54Lng6Ci0gIHZlcnNpb24gIjEuMi4w
IgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9ldmVudGVtaXR0ZXIz
Ly0vZXZlbnRlbWl0dGVyMy0xLjIuMC50Z3ojMWM4Njk5MWQ4MTZhZDFlNTA0NzUwZTczODc0MjI0
ZWNmM2JlYzUwOCIKLQotZXZlbnRzQF4xLjAuMDoKLSAgdmVyc2lvbiAiMS4xLjEiCi0gIHJlc29s
dmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2V2ZW50cy8tL2V2ZW50cy0xLjEuMS50
Z3ojOWViZGI3NjM1YWQwOTljNzBkY2M0YzJhMWY1MDA0Mjg4ZThiZDkyNCIKLQotZXZlbnRzb3Vy
Y2VAXjAuMS4zLCBldmVudHNvdXJjZUB+MC4xLjY6Ci0gIHZlcnNpb24gIjAuMS42IgotICByZXNv
bHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9ldmVudHNvdXJjZS8tL2V2ZW50c291
cmNlLTAuMS42LnRneiMwYWNlZGU4NDllZDdkZDFjY2MzMmM4MTFiYjExYjk0NGQ0ZjI5MjMyIgot
ICBkZXBlbmRlbmNpZXM6Ci0gICAgb3JpZ2luYWwgIj49MC4wLjUiCi0KLWV4ZWMtc2hAXjAuMi4w
OgotICB2ZXJzaW9uICIwLjIuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBr
Zy5jb20vZXhlYy1zaC8tL2V4ZWMtc2gtMC4yLjAudGd6IzE0Zjc1ZGUzZjIwZDI4NmVmOTMzMDk5
YjJjZTUwYTkwMzU5Y2VmMTAiCi0gIGRlcGVuZGVuY2llczoKLSAgICBtZXJnZSAiXjEuMS4zIgot
Ci1leGl0LWhvb2tAXjEuMC4wOgotICB2ZXJzaW9uICIxLjEuMSIKLSAgcmVzb2x2ZWQgImh0dHBz
Oi8vcmVnaXN0cnkueWFybnBrZy5jb20vZXhpdC1ob29rLy0vZXhpdC1ob29rLTEuMS4xLnRneiNm
MDVjYTIzM2I0OGMwNWQ1NGZmZjA3NzY1ZGY4NTA3ZTk1YzAyZmY4IgotCi1leHBhbmQtYnJhY2tl
dHNAXjAuMS40OgotICB2ZXJzaW9uICIwLjEuNSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0
cnkueWFybnBrZy5jb20vZXhwYW5kLWJyYWNrZXRzLy0vZXhwYW5kLWJyYWNrZXRzLTAuMS41LnRn
eiNkZjA3Mjg0ZTM0MmE4MDdjZDczM2FjNWFmNzI0MTFlNTgxZDExNzdiIgotICBkZXBlbmRlbmNp
ZXM6Ci0gICAgaXMtcG9zaXgtYnJhY2tldCAiXjAuMS4wIgotCi1leHBhbmQtcmFuZ2VAXjEuOC4x
OgotICB2ZXJzaW9uICIxLjguMiIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBr
Zy5jb20vZXhwYW5kLXJhbmdlLy0vZXhwYW5kLXJhbmdlLTEuOC4yLnRneiNhMjk5ZWZmZDMzNWZl
MjcyMWViYWU4ZTI1N2VjNzk2NDRmYzg1MzM3IgotICBkZXBlbmRlbmNpZXM6Ci0gICAgZmlsbC1y
YW5nZSAiXjIuMS4wIgotCi1leHByZXNzQF40LjEzLjM6Ci0gIHZlcnNpb24gIjQuMTQuMCIKLSAg
cmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZXhwcmVzcy8tL2V4cHJlc3Mt
NC4xNC4wLnRneiNjMWVlM2Y0MmNkYzg5MWZiM2RjNjUwYTg5MjJkNTFlYzg0N2QwZDY2IgotICBk
ZXBlbmRlbmNpZXM6Ci0gICAgYWNjZXB0cyAifjEuMy4zIgotICAgIGFycmF5LWZsYXR0ZW4gIjEu
MS4xIgotICAgIGNvbnRlbnQtZGlzcG9zaXRpb24gIjAuNS4xIgotICAgIGNvbnRlbnQtdHlwZSAi
fjEuMC4yIgotICAgIGNvb2tpZSAiMC4zLjEiCi0gICAgY29va2llLXNpZ25hdHVyZSAiMS4wLjYi
Ci0gICAgZGVidWcgIn4yLjIuMCIKLSAgICBkZXBkICJ+MS4xLjAiCi0gICAgZW5jb2RldXJsICJ+
MS4wLjEiCi0gICAgZXNjYXBlLWh0bWwgIn4xLjAuMyIKLSAgICBldGFnICJ+MS43LjAiCi0gICAg
ZmluYWxoYW5kbGVyICIwLjUuMCIKLSAgICBmcmVzaCAiMC4zLjAiCi0gICAgbWVyZ2UtZGVzY3Jp
cHRvcnMgIjEuMC4xIgotICAgIG1ldGhvZHMgIn4xLjEuMiIKLSAgICBvbi1maW5pc2hlZCAifjIu
My4wIgotICAgIHBhcnNldXJsICJ+MS4zLjEiCi0gICAgcGF0aC10by1yZWdleHAgIjAuMS43Igot
ICAgIHByb3h5LWFkZHIgIn4xLjEuMiIKLSAgICBxcyAiNi4yLjAiCi0gICAgcmFuZ2UtcGFyc2Vy
ICJ+MS4yLjAiCi0gICAgc2VuZCAiMC4xNC4xIgotICAgIHNlcnZlLXN0YXRpYyAifjEuMTEuMSIK
LSAgICB0eXBlLWlzICJ+MS42LjEzIgotICAgIHV0aWxzLW1lcmdlICIxLjAuMCIKLSAgICB2YXJ5
ICJ+MS4xLjAiCi0KLWV4dGVuZEB+My4wLjA6Ci0gIHZlcnNpb24gIjMuMC4wIgotICByZXNvbHZl
ZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9leHRlbmQvLS9leHRlbmQtMy4wLjAudGd6
IzVhNDc0MzUzYjlmMzM1M2RkZDgxNzZkZmQzN2I5MWM4M2E0NmYxZDQiCi0KLWV4dGdsb2JAXjAu
My4xOgotICB2ZXJzaW9uICIwLjMuMiIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFy
bnBrZy5jb20vZXh0Z2xvYi8tL2V4dGdsb2ItMC4zLjIudGd6IzJlMThmZjNkMmY0OWFiMjc2NWNl
YzkwMjNmMDExZGFhOGQ4MzQ5YTEiCi0gIGRlcGVuZGVuY2llczoKLSAgICBpcy1leHRnbG9iICJe
MS4wLjAiCi0KLWV4dHJhY3QtdGV4dC13ZWJwYWNrLXBsdWdpbkAxLjAuMToKLSAgdmVyc2lvbiAi
MS4wLjEiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2V4dHJhY3Qt
dGV4dC13ZWJwYWNrLXBsdWdpbi8tL2V4dHJhY3QtdGV4dC13ZWJwYWNrLXBsdWdpbi0xLjAuMS50
Z3ojYzk1YmYzY2JhYWM0OWRjOTZmMWRjNmUwNzI1NDlmYmI2NTRjY2QyYyIKLSAgZGVwZW5kZW5j
aWVzOgotICAgIGFzeW5jICJeMS41LjAiCi0gICAgbG9hZGVyLXV0aWxzICJeMC4yLjMiCi0gICAg
d2VicGFjay1zb3VyY2VzICJeMC4xLjAiCi0KLWV4dHNwcmludGZAMS4wLjI6Ci0gIHZlcnNpb24g
IjEuMC4yIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9leHRzcHJp
bnRmLy0vZXh0c3ByaW50Zi0xLjAuMi50Z3ojZTEwODBlMDY1OGUzMDBiMDYyOTQ5OTBjYzcwZTE1
MDIyMzVmZDU1MCIKLQotZmFzdC1sZXZlbnNodGVpbkB+Mi4wLjQ6Ci0gIHZlcnNpb24gIjIuMC41
IgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9mYXN0LWxldmVuc2h0
ZWluLy0vZmFzdC1sZXZlbnNodGVpbi0yLjAuNS50Z3ojYmQzMzE0NTc0NDUxOWFiMWMzNmMzZWU5
ZjMxZjA4ZTkwNzliNjdmMiIKLQotZmFzdHBhcnNlQF4xLjEuMToKLSAgdmVyc2lvbiAiMS4xLjEi
Ci0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2Zhc3RwYXJzZS8tL2Zh
c3RwYXJzZS0xLjEuMS50Z3ojZDFlMjY0M2IzOGE5NGQ3NTgzYjQ3OTA2MGU2YzRhZmZjOTQwNzFm
OCIKLQotZmF5ZS13ZWJzb2NrZXRAXjAuMTAuMDoKLSAgdmVyc2lvbiAiMC4xMC4wIgotICByZXNv
bHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9mYXllLXdlYnNvY2tldC8tL2ZheWUt
d2Vic29ja2V0LTAuMTAuMC50Z3ojNGU0OTJmOGQwNGRmYjZmODkwMDM1MDdmNmVkYmYyZDUwMWU3
YzZmNCIKLSAgZGVwZW5kZW5jaWVzOgotICAgIHdlYnNvY2tldC1kcml2ZXIgIj49MC41LjEiCi0K
LWZheWUtd2Vic29ja2V0QH4wLjExLjA6Ci0gIHZlcnNpb24gIjAuMTEuMCIKLSAgcmVzb2x2ZWQg
Imh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZmF5ZS13ZWJzb2NrZXQvLS9mYXllLXdlYnNv
Y2tldC0wLjExLjAudGd6I2Q5Y2NmMGU3ODllN2RiNzI1ZDc0YmM0ODc3ZDIzYWE0Mjk3MmFjNTAi
Ci0gIGRlcGVuZGVuY2llczoKLSAgICB3ZWJzb2NrZXQtZHJpdmVyICI+PTAuNS4xIgotCi1mYXll
LXdlYnNvY2tldEB+MC43LjM6Ci0gIHZlcnNpb24gIjAuNy4zIgotICByZXNvbHZlZCAiaHR0cHM6
Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9mYXllLXdlYnNvY2tldC8tL2ZheWUtd2Vic29ja2V0LTAu
Ny4zLnRneiNjYzQwNzRjN2Y0YTRkZmQwM2FmNTRkZDY1YzM1NGIxMzUxMzJjZTExIgotICBkZXBl
bmRlbmNpZXM6Ci0gICAgd2Vic29ja2V0LWRyaXZlciAiPj0wLjMuNiIKLQotZmItd2F0Y2htYW5A
XjEuOC4wLCBmYi13YXRjaG1hbkBeMS45LjA6Ci0gIHZlcnNpb24gIjEuOS4wIgotICByZXNvbHZl
ZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9mYi13YXRjaG1hbi8tL2ZiLXdhdGNobWFu
LTEuOS4wLnRneiM2ZjI2OGYxZjM0N2E2YjNjODc1ZDFlODlkYTdlMWVkNzlhZGZjMGVjIgotICBk
ZXBlbmRlbmNpZXM6Ci0gICAgYnNlciAiXjEuMC4yIgotCi1mYmpzQF4wLjguNDoKLSAgdmVyc2lv
biAiMC44LjUiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2ZianMv
LS9mYmpzLTAuOC41LnRneiNmNjliYThhODc2MDk2Y2IxYjliZmZlNGQ3YzFlNzFjMTlkMzlkMDA4
IgotICBkZXBlbmRlbmNpZXM6Ci0gICAgY29yZS1qcyAiXjEuMC4wIgotICAgIGltbXV0YWJsZSAi
XjMuNy42IgotICAgIGlzb21vcnBoaWMtZmV0Y2ggIl4yLjEuMSIKLSAgICBsb29zZS1lbnZpZnkg
Il4xLjAuMCIKLSAgICBvYmplY3QtYXNzaWduICJeNC4xLjAiCi0gICAgcHJvbWlzZSAiXjcuMS4x
IgotICAgIHVhLXBhcnNlci1qcyAiXjAuNy45IgotCi1maWd1cmVzQF4xLjMuNToKLSAgdmVyc2lv
biAiMS43LjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2ZpZ3Vy
ZXMvLS9maWd1cmVzLTEuNy4wLnRneiNjYmUxZTNhZmZjZjFjZDQ0YjgwY2FkZmVkMjhkYzc5M2E5
NzAxZDJlIgotICBkZXBlbmRlbmNpZXM6Ci0gICAgZXNjYXBlLXN0cmluZy1yZWdleHAgIl4xLjAu
NSIKLSAgICBvYmplY3QtYXNzaWduICJeNC4xLjAiCi0KLWZpbGUtZW50cnktY2FjaGVAXjIuMC4w
OgotICB2ZXJzaW9uICIyLjAuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBr
Zy5jb20vZmlsZS1lbnRyeS1jYWNoZS8tL2ZpbGUtZW50cnktY2FjaGUtMi4wLjAudGd6I2MzOTI5
OTBjM2U2ODQ3ODNkODM4YjhjODRhNDVkOGEwNDg0NTgzNjEiCi0gIGRlcGVuZGVuY2llczoKLSAg
ICBmbGF0LWNhY2hlICJeMS4yLjEiCi0gICAgb2JqZWN0LWFzc2lnbiAiXjQuMC4xIgotCi1maWxl
LWxvYWRlckAwLjkuMDoKLSAgdmVyc2lvbiAiMC45LjAiCi0gIHJlc29sdmVkICJodHRwczovL3Jl
Z2lzdHJ5Lnlhcm5wa2cuY29tL2ZpbGUtbG9hZGVyLy0vZmlsZS1sb2FkZXItMC45LjAudGd6IzFk
MmRhZGRkNDI0Y2U2ZDFiMDdjZmUzZjc5NzMxYmVkMzYxN2FiNDIiCi0gIGRlcGVuZGVuY2llczoK
LSAgICBsb2FkZXItdXRpbHMgIn4wLjIuNSIKLQotZmlsZW5hbWUtcmVnZXhAXjIuMC4wOgotICB2
ZXJzaW9uICIyLjAuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20v
ZmlsZW5hbWUtcmVnZXgvLS9maWxlbmFtZS1yZWdleC0yLjAuMC50Z3ojOTk2ZTNlODA0NzliOThi
OTg5N2YxNWE4YTU4YjNkMDg0ZTkyNjc3NSIKLQotZmlsZXNldEAwLjIueDoKLSAgdmVyc2lvbiAi
MC4yLjEiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2ZpbGVzZXQv
LS9maWxlc2V0LTAuMi4xLnRneiM1ODhlZjg5NzNjNjYyM2IyYTc2ZGY0NjUxMDU2OTZiOTZhYWM4
MDY3IgotICBkZXBlbmRlbmNpZXM6Ci0gICAgZ2xvYiAiNS54IgotICAgIG1pbmltYXRjaCAiMi54
IgotCi1maWxlc2l6ZUAzLjMuMDoKLSAgdmVyc2lvbiAiMy4zLjAiCi0gIHJlc29sdmVkICJodHRw
czovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2ZpbGVzaXplLy0vZmlsZXNpemUtMy4zLjAudGd6IzUz
MTQ5ZWEzNDYwZTNiMmUwMjQ5NjJhNTE2NDhhYTU3MmNmOTgxMjIiCi0KLWZpbGwtcmFuZ2VAXjIu
MS4wOgotICB2ZXJzaW9uICIyLjIuMyIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFy
bnBrZy5jb20vZmlsbC1yYW5nZS8tL2ZpbGwtcmFuZ2UtMi4yLjMudGd6IzUwYjc3ZGZkN2U0Njli
Yzc0OTI0NzA5NjM2OTlmZTdhODQ4NWE3MjMiCi0gIGRlcGVuZGVuY2llczoKLSAgICBpcy1udW1i
ZXIgIl4yLjEuMCIKLSAgICBpc29iamVjdCAiXjIuMC4wIgotICAgIHJhbmRvbWF0aWMgIl4xLjEu
MyIKLSAgICByZXBlYXQtZWxlbWVudCAiXjEuMS4yIgotICAgIHJlcGVhdC1zdHJpbmcgIl4xLjUu
MiIKLQotZmluYWxoYW5kbGVyQDAuNS4wOgotICB2ZXJzaW9uICIwLjUuMCIKLSAgcmVzb2x2ZWQg
Imh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZmluYWxoYW5kbGVyLy0vZmluYWxoYW5kbGVy
LTAuNS4wLnRneiNlOTUwOGFiZWNlOWI2ZGJhODcxYTY5NDJhMWQ3OTExYjkxOTExYWM3IgotICBk
ZXBlbmRlbmNpZXM6Ci0gICAgZGVidWcgIn4yLjIuMCIKLSAgICBlc2NhcGUtaHRtbCAifjEuMC4z
IgotICAgIG9uLWZpbmlzaGVkICJ+Mi4zLjAiCi0gICAgc3RhdHVzZXMgIn4xLjMuMCIKLSAgICB1
bnBpcGUgIn4xLjAuMCIKLQotZmluZC1jYWNoZS1kaXJAXjAuMS4xLCBmaW5kLWNhY2hlLWRpckAw
LjEuMToKLSAgdmVyc2lvbiAiMC4xLjEiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlh
cm5wa2cuY29tL2ZpbmQtY2FjaGUtZGlyLy0vZmluZC1jYWNoZS1kaXItMC4xLjEudGd6I2M4ZGVm
YWU1N2M4YTUyYThhNzg0ZjllMzFjNTdjNzQyZTk5M2EwYjkiCi0gIGRlcGVuZGVuY2llczoKLSAg
ICBjb21tb25kaXIgIl4xLjAuMSIKLSAgICBta2RpcnAgIl4wLjUuMSIKLSAgICBwa2ctZGlyICJe
MS4wLjAiCi0KLWZpbmQtdXBAXjEuMC4wLCBmaW5kLXVwQF4xLjEuMjoKLSAgdmVyc2lvbiAiMS4x
LjIiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2ZpbmQtdXAvLS9m
aW5kLXVwLTEuMS4yLnRneiM2YjJlOTgyMmIxYTJjZTBhNjBhYjY0ZDYxMGVjY2FkNTNjYjI0ZDBm
IgotICBkZXBlbmRlbmNpZXM6Ci0gICAgcGF0aC1leGlzdHMgIl4yLjAuMCIKLSAgICBwaW5raWUt
cHJvbWlzZSAiXjIuMC4wIgotCi1mbGF0LWNhY2hlQF4xLjIuMToKLSAgdmVyc2lvbiAiMS4yLjEi
Ci0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2ZsYXQtY2FjaGUvLS9m
bGF0LWNhY2hlLTEuMi4xLnRneiM2YzgzN2Q2MjI1YTdkZTU2NTkzMjM3NDBiMzZkNTM2MWY3MTY5
MWZmIgotICBkZXBlbmRlbmNpZXM6Ci0gICAgY2lyY3VsYXItanNvbiAiXjAuMy4wIgotICAgIGRl
bCAiXjIuMC4yIgotICAgIGdyYWNlZnVsLWZzICJeNC4xLjIiCi0gICAgd3JpdGUgIl4wLjIuMSIK
LQotZmxhdHRlbkBeMS4wLjIsIGZsYXR0ZW5AMS4wLjI6Ci0gIHZlcnNpb24gIjEuMC4yIgotICBy
ZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9mbGF0dGVuLy0vZmxhdHRlbi0x
LjAuMi50Z3ojZGFlNDZhOWQ3OGZiZTI1MjkyMjU4Y2MxZTc4MGE0MWQ5NWMwMzc4MiIKLQotZm9y
LWluQF4wLjEuNToKLSAgdmVyc2lvbiAiMC4xLjYiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lz
dHJ5Lnlhcm5wa2cuY29tL2Zvci1pbi8tL2Zvci1pbi0wLjEuNi50Z3ojYzlmOTZlODliZmFkMThh
NTQ1YWY1ZWMzZWQzNTJhMWQ5ZTViNGRjOCIKLQotZm9yLW93bkBeMC4xLjM6Ci0gIHZlcnNpb24g
IjAuMS40IgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9mb3Itb3du
Ly0vZm9yLW93bi0wLjEuNC50Z3ojMDE0OWI0MWEzOTA4OGM3NTE1ZjUxZWJlMWMxMzg2ZDQ1Zjkz
NTA3MiIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGZvci1pbiAiXjAuMS41IgotCi1mb3JlYWNoQF4y
LjAuNToKLSAgdmVyc2lvbiAiMi4wLjUiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlh
cm5wa2cuY29tL2ZvcmVhY2gvLS9mb3JlYWNoLTIuMC41LnRneiMwYmVlMDA1MDE4YWViMjYwZDBh
M2FmM2FlNjU4ZGQwMTM2ZWMxYjk5IgotCi1mb3JldmVyLWFnZW50QH4wLjYuMToKLSAgdmVyc2lv
biAiMC42LjEiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2ZvcmV2
ZXItYWdlbnQvLS9mb3JldmVyLWFnZW50LTAuNi4xLnRneiNmYmM3MWYwYzQxYWRlYjM3Zjk2YzU3
N2FkMWVkNDJkOGZkYWNjYTkxIgotCi1mb3JtLWRhdGFAfjIuMC4wOgotICB2ZXJzaW9uICIyLjAu
MCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZm9ybS1kYXRhLy0v
Zm9ybS1kYXRhLTIuMC4wLnRneiM2ZjBhZWJhZGNjNWRhMTZjMTNlMWVjYzExMTM3ZDg1ZjliODgz
YjI1IgotICBkZXBlbmRlbmNpZXM6Ci0gICAgYXN5bmNraXQgIl4wLjQuMCIKLSAgICBjb21iaW5l
ZC1zdHJlYW0gIl4xLjAuNSIKLSAgICBtaW1lLXR5cGVzICJeMi4xLjExIgotCi1mb3J3YXJkZWRA
fjAuMS4wOgotICB2ZXJzaW9uICIwLjEuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnku
eWFybnBrZy5jb20vZm9yd2FyZGVkLy0vZm9yd2FyZGVkLTAuMS4wLnRneiMxOWVmOTg3NGM0YWUx
YzI5N2JjZjA3OGZkZTYzYTA5YjY2YTg0MzYzIgotCi1mcmVzaEAwLjMuMDoKLSAgdmVyc2lvbiAi
MC4zLjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2ZyZXNoLy0v
ZnJlc2gtMC4zLjAudGd6IzY1MWY4MzhlMjI0MjRlNzU2NmRlMTYxZDgzNThjYWExOTlmODNkNGYi
Ci0KLWZzLWV4dHJhQDAuMzAuMDoKLSAgdmVyc2lvbiAiMC4zMC4wIgotICByZXNvbHZlZCAiaHR0
cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9mcy1leHRyYS8tL2ZzLWV4dHJhLTAuMzAuMC50Z3oj
ZjIzM2ZmY2MwOGQ0ZGE3ZDQzMmRhYTQ0OTc3Njk4OWRiMWRmOTNmMCIKLSAgZGVwZW5kZW5jaWVz
OgotICAgIGdyYWNlZnVsLWZzICJeNC4xLjIiCi0gICAganNvbmZpbGUgIl4yLjEuMCIKLSAgICBr
bGF3ICJeMS4wLjAiCi0gICAgcGF0aC1pcy1hYnNvbHV0ZSAiXjEuMC4wIgotICAgIHJpbXJhZiAi
XjIuMi44IgotCi1mcy5yZWFscGF0aEBeMS4wLjA6Ci0gIHZlcnNpb24gIjEuMC4wIgotICByZXNv
bHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9mcy5yZWFscGF0aC8tL2ZzLnJlYWxw
YXRoLTEuMC4wLnRneiMxNTA0YWQyNTIzMTU4Y2FhNDBkYjRhMjc4N2NiMDE0MTE5OTRlYTRmIgot
Ci1mc2V2ZW50c0BeMS4wLjAsIGZzZXZlbnRzQDEuMC4xNDoKLSAgdmVyc2lvbiAiMS4wLjE0Igot
ICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9mc2V2ZW50cy8tL2ZzZXZl
bnRzLTEuMC4xNC50Z3ojNTU4ZThjYzM4NjQzZDhlZjQwZmU0NTE1ODQ4NmQwZDI1NzU4ZWVlNCIK
LSAgZGVwZW5kZW5jaWVzOgotICAgIG5hbiAiXjIuMy4wIgotICAgIG5vZGUtcHJlLWd5cCAiXjAu
Ni4yOSIKLQotZnN0cmVhbS1pZ25vcmVAfjEuMC41OgotICB2ZXJzaW9uICIxLjAuNSIKLSAgcmVz
b2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZnN0cmVhbS1pZ25vcmUvLS9mc3Ry
ZWFtLWlnbm9yZS0xLjAuNS50Z3ojOWMzMWRhZTM0NzY3MDE4ZmUxZDI0OWIyNGRhZGE2N2QwOTJk
YTEwNSIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGZzdHJlYW0gIl4xLjAuMCIKLSAgICBpbmhlcml0
cyAiMiIKLSAgICBtaW5pbWF0Y2ggIl4zLjAuMCIKLQotZnN0cmVhbUBeMS4wLjAsIGZzdHJlYW1A
XjEuMC4yLCBmc3RyZWFtQH4xLjAuMTA6Ci0gIHZlcnNpb24gIjEuMC4xMCIKLSAgcmVzb2x2ZWQg
Imh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZnN0cmVhbS8tL2ZzdHJlYW0tMS4wLjEwLnRn
eiM2MDRlOGE5MmZlMjZmZmQ5ZjZmYWUzMDM5OWQ0OTg0ZTFhYjIyODIyIgotICBkZXBlbmRlbmNp
ZXM6Ci0gICAgZ3JhY2VmdWwtZnMgIl40LjEuMiIKLSAgICBpbmhlcml0cyAifjIuMC4wIgotICAg
IG1rZGlycCAiPj0wLjUgMCIKLSAgICByaW1yYWYgIjIiCi0KLWZ1bmN0aW9uLWJpbmRAXjEuMC4y
LCBmdW5jdGlvbi1iaW5kQF4xLjEuMDoKLSAgdmVyc2lvbiAiMS4xLjAiCi0gIHJlc29sdmVkICJo
dHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2Z1bmN0aW9uLWJpbmQvLS9mdW5jdGlvbi1iaW5k
LTEuMS4wLnRneiMxNjE3NjcxNGM4MDE3OThlNGU4ZjJjZjdmNzUyOTQ2N2JiNGE1NzcxIgotCi1n
YXVnZUB+Mi42LjA6Ci0gIHZlcnNpb24gIjIuNi4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdp
c3RyeS55YXJucGtnLmNvbS9nYXVnZS8tL2dhdWdlLTIuNi4wLnRneiNkMzUzMDFhZDE4ZTk2OTAy
YjQ3NTFkY2JiZTQwZjQyMThiOTQyYTQ2IgotICBkZXBlbmRlbmNpZXM6Ci0gICAgYXByb2JhICJe
MS4wLjMiCi0gICAgY29uc29sZS1jb250cm9sLXN0cmluZ3MgIl4xLjAuMCIKLSAgICBoYXMtY29s
b3IgIl4wLjEuNyIKLSAgICBoYXMtdW5pY29kZSAiXjIuMC4wIgotICAgIG9iamVjdC1hc3NpZ24g
Il40LjEuMCIKLSAgICBzaWduYWwtZXhpdCAiXjMuMC4wIgotICAgIHN0cmluZy13aWR0aCAiXjEu
MC4xIgotICAgIHN0cmlwLWFuc2kgIl4zLjAuMSIKLSAgICB3aWRlLWFsaWduICJeMS4xLjAiCi0K
LWdlbmVyYXRlLWZ1bmN0aW9uQF4yLjAuMDoKLSAgdmVyc2lvbiAiMi4wLjAiCi0gIHJlc29sdmVk
ICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2dlbmVyYXRlLWZ1bmN0aW9uLy0vZ2VuZXJh
dGUtZnVuY3Rpb24tMi4wLjAudGd6IzY4NThmZTdjMDk2OWI3ZDRlOTA5MzMzNzY0N2FjNzlmNjBk
ZmJlNzQiCi0KLWdlbmVyYXRlLW9iamVjdC1wcm9wZXJ0eUBeMS4xLjA6Ci0gIHZlcnNpb24gIjEu
Mi4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9nZW5lcmF0ZS1v
YmplY3QtcHJvcGVydHkvLS9nZW5lcmF0ZS1vYmplY3QtcHJvcGVydHktMS4yLjAudGd6IzljMGUx
YzQwMzA4Y2U4MDRmNDc4MzYxOGI5MzdmYTg4Zjk5ZDUwZDAiCi0gIGRlcGVuZGVuY2llczoKLSAg
ICBpcy1wcm9wZXJ0eSAiXjEuMC4wIgotCi1nZXQtY2FsbGVyLWZpbGVAXjEuMC4xOgotICB2ZXJz
aW9uICIxLjAuMiIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZ2V0
LWNhbGxlci1maWxlLy0vZ2V0LWNhbGxlci1maWxlLTEuMC4yLnRneiNmNzAyZTYzMTI3ZTdlMjMx
YzE2MGE4MGMxNTU0YWNiNzBkNTA0N2U1IgotCi1nZXQtc3RkaW5AXjQuMC4xOgotICB2ZXJzaW9u
ICI0LjAuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZ2V0LXN0
ZGluLy0vZ2V0LXN0ZGluLTQuMC4xLnRneiNiOTY4YzZiMGEwNDM4NDMyNDkwMmU4YmYxYTVkZjMy
NTc5YTQ1MGZlIgotCi1nZXRwYXNzQF4wLjEuMToKLSAgdmVyc2lvbiAiMC4xLjYiCi0gIHJlc29s
dmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2dldHBhc3MvLS9nZXRwYXNzLTAuMS42
LnRneiMyODNmZmQ5ZmMxMjU2ODQwODc1MzExYzFiNjBlOGM0MDE4NzExMGU2IgotICBkZXBlbmRl
bmNpZXM6Ci0gICAgYXNzZXJ0LXBsdXMgIl4xLjAuMCIKLQotZ2xvYi1iYXNlQF4wLjMuMDoKLSAg
dmVyc2lvbiAiMC4zLjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29t
L2dsb2ItYmFzZS8tL2dsb2ItYmFzZS0wLjMuMC50Z3ojZGJiMTY0ZjYyMjFiMWMwYjFjY2Y4MmFl
YTMyOGI0OTdkZjBlYTNjNCIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGdsb2ItcGFyZW50ICJeMi4w
LjAiCi0gICAgaXMtZ2xvYiAiXjIuMC4wIgotCi1nbG9iLXBhcmVudEBeMi4wLjA6Ci0gIHZlcnNp
b24gIjIuMC4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9nbG9i
LXBhcmVudC8tL2dsb2ItcGFyZW50LTIuMC4wLnRneiM4MTM4M2Q3MmRiMDU0ZmNjY2Y1MzM2ZGFh
OTAyZjE4MmY2ZWRiYjI4IgotICBkZXBlbmRlbmNpZXM6Ci0gICAgaXMtZ2xvYiAiXjIuMC4wIgot
Ci1nbG9iQF41LjAuMTUsIGdsb2JANS54OgotICB2ZXJzaW9uICI1LjAuMTUiCi0gIHJlc29sdmVk
ICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2dsb2IvLS9nbG9iLTUuMC4xNS50Z3ojMWJj
OTM2YjllMDJmNGE2MDNmY2MyMjJlY2Y3NjMzZDMwYjhiOTNiMSIKLSAgZGVwZW5kZW5jaWVzOgot
ICAgIGluZmxpZ2h0ICJeMS4wLjQiCi0gICAgaW5oZXJpdHMgIjIiCi0gICAgbWluaW1hdGNoICIy
IHx8IDMiCi0gICAgb25jZSAiXjEuMy4wIgotICAgIHBhdGgtaXMtYWJzb2x1dGUgIl4xLjAuMCIK
LQotZ2xvYkBeNy4wLjMsIGdsb2JAXjcuMC41OgotICB2ZXJzaW9uICI3LjEuMSIKLSAgcmVzb2x2
ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZ2xvYi8tL2dsb2ItNy4xLjEudGd6Izgw
NTIxMWRmMDRmYWFmMWM2M2EzNjAwMzA2Y2RmNWFkZTUwYjJlYzgiCi0gIGRlcGVuZGVuY2llczoK
LSAgICBmcy5yZWFscGF0aCAiXjEuMC4wIgotICAgIGluZmxpZ2h0ICJeMS4wLjQiCi0gICAgaW5o
ZXJpdHMgIjIiCi0gICAgbWluaW1hdGNoICJeMy4wLjIiCi0gICAgb25jZSAiXjEuMy4wIgotICAg
IHBhdGgtaXMtYWJzb2x1dGUgIl4xLjAuMCIKLQotZ2xvYmFsc0BeOC4zLjA6Ci0gIHZlcnNpb24g
IjguMTguMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZ2xvYmFs
cy8tL2dsb2JhbHMtOC4xOC4wLnRneiM5M2Q0YTYyYmRjYWMzOGNmYWZhZmM0N2Q2YjAzNDc2OGNi
MGZmY2I0IgotCi1nbG9iYWxzQF45LjIuMDoKLSAgdmVyc2lvbiAiOS4xMi4wIgotICByZXNvbHZl
ZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9nbG9iYWxzLy0vZ2xvYmFscy05LjEyLjAu
dGd6Izk5MmNlOTA4MjhjM2E1NWZhOGYxNmZhZGExNzdhZGI2NDY2NGNmOWQiCi0KLWdsb2JieUBe
NS4wLjA6Ci0gIHZlcnNpb24gIjUuMC4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55
YXJucGtnLmNvbS9nbG9iYnkvLS9nbG9iYnktNS4wLjAudGd6I2ViZDg0NjY3Y2EwZGJiMzMwYjk5
YmNmYzY4ZWFjMmJjNTQzNzBlMGQiCi0gIGRlcGVuZGVuY2llczoKLSAgICBhcnJheS11bmlvbiAi
XjEuMC4xIgotICAgIGFycmlmeSAiXjEuMC4wIgotICAgIGdsb2IgIl43LjAuMyIKLSAgICBvYmpl
Y3QtYXNzaWduICJeNC4wLjEiCi0gICAgcGlmeSAiXjIuMC4wIgotICAgIHBpbmtpZS1wcm9taXNl
ICJeMi4wLjAiCi0KLWdyYWNlZnVsLWZzQF40LjEuMiwgZ3JhY2VmdWwtZnNAXjQuMS42OgotICB2
ZXJzaW9uICI0LjEuOSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20v
Z3JhY2VmdWwtZnMvLS9ncmFjZWZ1bC1mcy00LjEuOS50Z3ojYmFhY2JhMzdkMTlkMTFmOWQxNDZk
MzU3OGJjOTk5NThjMzc4N2UyOSIKLQotImdyYWNlZnVsLXJlYWRsaW5rQD49IDEuMC4wIjoKLSAg
dmVyc2lvbiAiMS4wLjEiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29t
L2dyYWNlZnVsLXJlYWRsaW5rLy0vZ3JhY2VmdWwtcmVhZGxpbmstMS4wLjEudGd6IzRjYWZhZDc2
YmM2MmYwMmZhMDM5YjJmOTRlOWEzZGQzYTM5MWE3MjUiCi0KLWdyb3dseUBeMS4yLjA6Ci0gIHZl
cnNpb24gIjEuMy4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9n
cm93bHkvLS9ncm93bHktMS4zLjAudGd6I2YxMDc0OGNiZTc2YWY5NjRiN2M5NmM5M2M2YmNjMjhh
ZjEyMGMwODEiCi0KLWd6aXAtc2l6ZUAzLjAuMDoKLSAgdmVyc2lvbiAiMy4wLjAiCi0gIHJlc29s
dmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2d6aXAtc2l6ZS8tL2d6aXAtc2l6ZS0z
LjAuMC50Z3ojNTQ2MTg4ZTliZGMzMzdmNjczNzcyZjgxNjYwNDY0YjM4OWRjZTUyMCIKLSAgZGVw
ZW5kZW5jaWVzOgotICAgIGR1cGxleGVyICJeMC4xLjEiCi0KLWhhbmRsZWJhcnNAXjQuMC4xLCBo
YW5kbGViYXJzQF40LjAuMzoKLSAgdmVyc2lvbiAiNC4wLjUiCi0gIHJlc29sdmVkICJodHRwczov
L3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2hhbmRsZWJhcnMvLS9oYW5kbGViYXJzLTQuMC41LnRneiM5
MmM2ZWQ2YmIxNjQxMTBjNTBkNGQ4ZDBmYmRkYzcwODA2YzZmOGU3IgotICBkZXBlbmRlbmNpZXM6
Ci0gICAgYXN5bmMgIl4xLjQuMCIKLSAgICBvcHRpbWlzdCAiXjAuNi4xIgotICAgIHNvdXJjZS1t
YXAgIl4wLjQuNCIKLSAgb3B0aW9uYWxEZXBlbmRlbmNpZXM6Ci0gICAgdWdsaWZ5LWpzICJeMi42
IgotCi1oYXItdmFsaWRhdG9yQH4yLjAuNjoKLSAgdmVyc2lvbiAiMi4wLjYiCi0gIHJlc29sdmVk
ICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2hhci12YWxpZGF0b3IvLS9oYXItdmFsaWRh
dG9yLTIuMC42LnRneiNjZGNiYzA4MTg4MjY1YWQxMTliNmE1YTdjOGFiNzBlZWNmYjVkMjdkIgot
ICBkZXBlbmRlbmNpZXM6Ci0gICAgY2hhbGsgIl4xLjEuMSIKLSAgICBjb21tYW5kZXIgIl4yLjku
MCIKLSAgICBpcy1teS1qc29uLXZhbGlkICJeMi4xMi40IgotICAgIHBpbmtpZS1wcm9taXNlICJe
Mi4wLjAiCi0KLWhhcy1hbnNpQF4yLjAuMDoKLSAgdmVyc2lvbiAiMi4wLjAiCi0gIHJlc29sdmVk
ICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2hhcy1hbnNpLy0vaGFzLWFuc2ktMi4wLjAu
dGd6IzM0ZjUwNDljZTFlY2RmMmIwNjQ5YWYzZWYyNGU0NWVkMzU0MTZkOTEiCi0gIGRlcGVuZGVu
Y2llczoKLSAgICBhbnNpLXJlZ2V4ICJeMi4wLjAiCi0KLWhhcy1jb2xvckBeMC4xLjc6Ci0gIHZl
cnNpb24gIjAuMS43IgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9o
YXMtY29sb3IvLS9oYXMtY29sb3ItMC4xLjcudGd6IzY3MTQ0YTUyNjBjMzRmYzNjY2E2NzdkMDQx
ZGFmNTJmZTdiNzhiMmYiCi0KLWhhcy1mbGFnQF4xLjAuMDoKLSAgdmVyc2lvbiAiMS4wLjAiCi0g
IHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2hhcy1mbGFnLy0vaGFzLWZs
YWctMS4wLjAudGd6IzlkOWU3OTMxNjVjZTAxN2EwMGYwMDQxOGM0M2Y5NDJhN2IxZDExZmEiCi0K
LWhhcy11bmljb2RlQF4yLjAuMDoKLSAgdmVyc2lvbiAiMi4wLjEiCi0gIHJlc29sdmVkICJodHRw
czovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2hhcy11bmljb2RlLy0vaGFzLXVuaWNvZGUtMi4wLjEu
dGd6I2UwZTZmZTZhMjhjZjUxMTM4ODU1ZTA4NmQxNjkxZTc3MWRlMmE4YjkiCi0KLWhhc0BeMS4w
LjE6Ci0gIHZlcnNpb24gIjEuMC4xIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJu
cGtnLmNvbS9oYXMvLS9oYXMtMS4wLjEudGd6Izg0NjE3MzNmNTM4YjA4MzdjOTM2MWUzOWE5YWI5
ZTk3MDRkYzJmMjgiCi0gIGRlcGVuZGVuY2llczoKLSAgICBmdW5jdGlvbi1iaW5kICJeMS4wLjIi
Ci0KLWhhd2tAfjMuMS4zOgotICB2ZXJzaW9uICIzLjEuMyIKLSAgcmVzb2x2ZWQgImh0dHBzOi8v
cmVnaXN0cnkueWFybnBrZy5jb20vaGF3ay8tL2hhd2stMy4xLjMudGd6IzA3ODQ0NGJkN2MxNjQw
YjBmZTU0MGQyYzliNzNkNTk2NzhlOGUxYzQiCi0gIGRlcGVuZGVuY2llczoKLSAgICBib29tICIy
LngueCIKLSAgICBjcnlwdGlsZXMgIjIueC54IgotICAgIGhvZWsgIjIueC54IgotICAgIHNudHAg
IjEueC54IgotCi1oZUAxLjEueDoKLSAgdmVyc2lvbiAiMS4xLjAiCi0gIHJlc29sdmVkICJodHRw
czovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2hlLy0vaGUtMS4xLjAudGd6IzI5MzE5ZDQ5YmVlYzEz
YTliMWYzYzRmOWIyYTZkZGU0ODU5YmIyYTciCi0KLWhlYWRlci1jYXNlQF4xLjAuMDoKLSAgdmVy
c2lvbiAiMS4wLjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2hl
YWRlci1jYXNlLy0vaGVhZGVyLWNhc2UtMS4wLjAudGd6I2Q5ZTMzNTkwOTUwNWQ1NjA1MWVjMTZh
MDEwNjgyMTg4OWU5MTA3ODEiCi0gIGRlcGVuZGVuY2llczoKLSAgICBuby1jYXNlICJeMi4yLjAi
Ci0gICAgdXBwZXItY2FzZSAiXjEuMS4zIgotCi1ob2VrQDIueC54OgotICB2ZXJzaW9uICIyLjE2
LjMiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2hvZWsvLS9ob2Vr
LTIuMTYuMy50Z3ojMjBiYjc0MDNkM2NlYTM5OGU5MWRjNDcxMGE4ZmYxYjgyNzRhMjVlZCIKLQot
aG9pc3Qtbm9uLXJlYWN0LXN0YXRpY3NAXjEuMC4zOgotICB2ZXJzaW9uICIxLjIuMCIKLSAgcmVz
b2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vaG9pc3Qtbm9uLXJlYWN0LXN0YXRp
Y3MvLS9ob2lzdC1ub24tcmVhY3Qtc3RhdGljcy0xLjIuMC50Z3ojYWE0NDhjZjA5ODZkNTVjYzQw
NzczYjE3MTc0YjdkZDA2NmNiN2NmYiIKLQotaG9tZS1vci10bXBAXjEuMC4wOgotICB2ZXJzaW9u
ICIxLjAuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vaG9tZS1v
ci10bXAvLS9ob21lLW9yLXRtcC0xLjAuMC50Z3ojNGI5ZjFlNDA4MDBjM2U1MGM2YzI3Zjc4MTY3
NmFmY2NlNzFmMzk4NSIKLSAgZGVwZW5kZW5jaWVzOgotICAgIG9zLXRtcGRpciAiXjEuMC4xIgot
ICAgIHVzZXItaG9tZSAiXjEuMS4xIgotCi1ob3N0ZWQtZ2l0LWluZm9AXjIuMS40OgotICB2ZXJz
aW9uICIyLjEuNSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vaG9z
dGVkLWdpdC1pbmZvLy0vaG9zdGVkLWdpdC1pbmZvLTIuMS41LnRneiMwYmE4MWQ5MGRhMmUyNWFi
MzRhMzMyZTZlYzc3OTM2ZTE1OTgxMThiIgotCi1odG1sLWNvbW1lbnQtcmVnZXhAXjEuMS4wOgot
ICB2ZXJzaW9uICIxLjEuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5j
b20vaHRtbC1jb21tZW50LXJlZ2V4Ly0vaHRtbC1jb21tZW50LXJlZ2V4LTEuMS4xLnRneiM2Njhi
OTM3NzZlYWFlNTVlYmRlOGYzYWQ0NjRiMzA3YTQ5NjM2MjVlIgotCi1odG1sLWVudGl0aWVzQDEu
Mi4wOgotICB2ZXJzaW9uICIxLjIuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFy
bnBrZy5jb20vaHRtbC1lbnRpdGllcy8tL2h0bWwtZW50aXRpZXMtMS4yLjAudGd6IzQxOTQ4Y2Fm
ODVjZTgyZmVkMzZlNGU2YTBlZDM3MWE2NjY0Mzc5ZTIiCi0KLWh0bWwtbWluaWZpZXJAXjIuMS42
OgotICB2ZXJzaW9uICIyLjEuNyIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBr
Zy5jb20vaHRtbC1taW5pZmllci8tL2h0bWwtbWluaWZpZXItMi4xLjcudGd6IzkwNTFkNmZjYmJj
ZjIxNGVkMzA3ZTFhZDc0ZjQzMmJiOWFkNjU1Y2MiCi0gIGRlcGVuZGVuY2llczoKLSAgICBjaGFu
Z2UtY2FzZSAiMy4wLngiCi0gICAgY2xlYW4tY3NzICIzLjQueCIKLSAgICBjb21tYW5kZXIgIjIu
OS54IgotICAgIGhlICIxLjEueCIKLSAgICBuY25hbWUgIjEuMC54IgotICAgIHJlbGF0ZXVybCAi
MC4yLngiCi0gICAgdWdsaWZ5LWpzICIyLjYueCIKLQotaHRtbC13ZWJwYWNrLXBsdWdpbkAyLjIy
LjA6Ci0gIHZlcnNpb24gIjIuMjIuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFy
bnBrZy5jb20vaHRtbC13ZWJwYWNrLXBsdWdpbi8tL2h0bWwtd2VicGFjay1wbHVnaW4tMi4yMi4w
LnRneiM3ZWIwMmZmOTAzOWRhODRlNWJhNzEwMDRkNDY5M2MwNGI5MmQyOTA1IgotICBkZXBlbmRl
bmNpZXM6Ci0gICAgYmx1ZWJpcmQgIl4zLjQuMSIKLSAgICBodG1sLW1pbmlmaWVyICJeMi4xLjYi
Ci0gICAgbG9hZGVyLXV0aWxzICJeMC4yLjE1IgotICAgIGxvZGFzaCAiXjQuMTMuMSIKLSAgICBw
cmV0dHktZXJyb3IgIl4yLjAuMCIKLSAgICB0b3Bvc29ydCAiXjEuMC4wIgotCi1odG1scGFyc2Vy
MkB+My4zLjA6Ci0gIHZlcnNpb24gIjMuMy4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3Ry
eS55YXJucGtnLmNvbS9odG1scGFyc2VyMi8tL2h0bWxwYXJzZXIyLTMuMy4wLnRneiNjYzcwZDA1
YTU5ZjY1NDJlNDNmMGU2ODVjOTgyZTE0YzkyNGE5ZWZlIgotICBkZXBlbmRlbmNpZXM6Ci0gICAg
ZG9tZWxlbWVudHR5cGUgIjEiCi0gICAgZG9taGFuZGxlciAiMi4xIgotICAgIGRvbXV0aWxzICIx
LjEiCi0gICAgcmVhZGFibGUtc3RyZWFtICIxLjAiCi0KLWh0bWxwYXJzZXIyQH4zLjguMToKLSAg
dmVyc2lvbiAiMy44LjMiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29t
L2h0bWxwYXJzZXIyLy0vaHRtbHBhcnNlcjItMy44LjMudGd6Izk5NmMyOGIxOTE1MTZhOGJlODY1
MDFhN2Q3OTc1N2U1YzcwYzEwNjgiCi0gIGRlcGVuZGVuY2llczoKLSAgICBkb21lbGVtZW50dHlw
ZSAiMSIKLSAgICBkb21oYW5kbGVyICIyLjMiCi0gICAgZG9tdXRpbHMgIjEuNSIKLSAgICBlbnRp
dGllcyAiMS4wIgotICAgIHJlYWRhYmxlLXN0cmVhbSAiMS4xIgotCi1odHRwLWJyb3dzZXJpZnlA
XjEuMy4yOgotICB2ZXJzaW9uICIxLjcuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnku
eWFybnBrZy5jb20vaHR0cC1icm93c2VyaWZ5Ly0vaHR0cC1icm93c2VyaWZ5LTEuNy4wLnRneiMz
Mzc5NWFkZTcyZGY4OGFjZmJmZDM2NzczY2VmZWRhNzY0NzM1YjIwIgotICBkZXBlbmRlbmNpZXM6
Ci0gICAgQmFzZTY0ICJ+MC4yLjAiCi0gICAgaW5oZXJpdHMgIn4yLjAuMSIKLQotaHR0cC1lcnJv
cnNAfjEuNS4wOgotICB2ZXJzaW9uICIxLjUuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0
cnkueWFybnBrZy5jb20vaHR0cC1lcnJvcnMvLS9odHRwLWVycm9ycy0xLjUuMC50Z3ojYjFjYjNk
ODI2MGZkOGUyMzg2Y2FkMzE4OTA0NTk0MzM3MmQ0ODIxMSIKLSAgZGVwZW5kZW5jaWVzOgotICAg
IGluaGVyaXRzICIyLjAuMSIKLSAgICBzZXRwcm90b3R5cGVvZiAiMS4wLjEiCi0gICAgc3RhdHVz
ZXMgIj49IDEuMy4wIDwgMiIKLQotaHR0cC1wcm94eS1taWRkbGV3YXJlQH4wLjE3LjE6Ci0gIHZl
cnNpb24gIjAuMTcuMiIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20v
aHR0cC1wcm94eS1taWRkbGV3YXJlLy0vaHR0cC1wcm94eS1taWRkbGV3YXJlLTAuMTcuMi50Z3oj
NTcyZDUxN2E2ZDJmYjEwNjNhNDY5ZGUyOTRlZWQ5NjA2NjM1MjAwNyIKLSAgZGVwZW5kZW5jaWVz
OgotICAgIGh0dHAtcHJveHkgIl4xLjE1LjEiCi0gICAgaXMtZ2xvYiAiXjMuMC4wIgotICAgIGxv
ZGFzaCAiXjQuMTYuMiIKLSAgICBtaWNyb21hdGNoICJeMi4zLjExIgotCi1odHRwLXByb3h5LW1p
ZGRsZXdhcmVAMC4xNy4xOgotICB2ZXJzaW9uICIwLjE3LjEiCi0gIHJlc29sdmVkICJodHRwczov
L3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2h0dHAtcHJveHktbWlkZGxld2FyZS8tL2h0dHAtcHJveHkt
bWlkZGxld2FyZS0wLjE3LjEudGd6I2UyYjg0N2FhOTk2MmQ4Y2UzMTJjYzgyYTNmNDQzZDUwMzlj
ZjE5N2EiCi0gIGRlcGVuZGVuY2llczoKLSAgICBodHRwLXByb3h5ICJeMS4xNC4wIgotICAgIGlz
LWdsb2IgIl4yLjAuMSIKLSAgICBsb2Rhc2ggIl40LjE0LjIiCi0gICAgbWljcm9tYXRjaCAiXjIu
My4xMSIKLQotaHR0cC1wcm94eUBeMS4xNC4wLCBodHRwLXByb3h5QF4xLjE1LjE6Ci0gIHZlcnNp
b24gIjEuMTUuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vaHR0
cC1wcm94eS8tL2h0dHAtcHJveHktMS4xNS4xLnRneiM5MWE2MDg4MTcyZTc5YmMwZTgyMWQ1ZWIw
NGNlNzAyZjMyNDQ2MzkzIgotICBkZXBlbmRlbmNpZXM6Ci0gICAgZXZlbnRlbWl0dGVyMyAiMS54
LngiCi0gICAgcmVxdWlyZXMtcG9ydCAiMS54LngiCi0KLWh0dHAtc2lnbmF0dXJlQH4xLjEuMDoK
LSAgdmVyc2lvbiAiMS4xLjEiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cu
Y29tL2h0dHAtc2lnbmF0dXJlLy0vaHR0cC1zaWduYXR1cmUtMS4xLjEudGd6I2RmNzJlMjY3MDY2
Y2QwYWM2N2ZiNzZhZGY4ZTEzNGE4ZmJjZjkxYmYiCi0gIGRlcGVuZGVuY2llczoKLSAgICBhc3Nl
cnQtcGx1cyAiXjAuMi4wIgotICAgIGpzcHJpbSAiXjEuMi4yIgotICAgIHNzaHBrICJeMS43LjAi
Ci0KLWh0dHBzLWJyb3dzZXJpZnlAMC4wLjA6Ci0gIHZlcnNpb24gIjAuMC4wIgotICByZXNvbHZl
ZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9odHRwcy1icm93c2VyaWZ5Ly0vaHR0cHMt
YnJvd3NlcmlmeS0wLjAuMC50Z3ojYjNmZmRmZTczNGIyYTNkNGE5ZWZkNThlODY1NGM5MWZjZTg2
ZWFmZCIKLQotaWNvbnYtbGl0ZUBeMC40LjEzLCBpY29udi1saXRlQH4wLjQuMTM6Ci0gIHZlcnNp
b24gIjAuNC4xMyIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vaWNv
bnYtbGl0ZS8tL2ljb252LWxpdGUtMC40LjEzLnRneiMxZjg4YWJhNGFiMGIxNTA4ZTgzMTJhY2Mz
OTM0NWYzNmU5OTJlMmYyIgotCi1pY3NzLXJlcGxhY2Utc3ltYm9sc0BeMS4wLjI6Ci0gIHZlcnNp
b24gIjEuMC4yIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9pY3Nz
LXJlcGxhY2Utc3ltYm9scy8tL2ljc3MtcmVwbGFjZS1zeW1ib2xzLTEuMC4yLnRneiNjYjBiNjA1
NGViM2FmNmVkYzlhYjFkNjJkMDE5MzNlMmQ0YzhiZmE1IgotCi1pZWVlNzU0QF4xLjEuNDoKLSAg
dmVyc2lvbiAiMS4xLjgiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29t
L2llZWU3NTQvLS9pZWVlNzU0LTEuMS44LnRneiNiZTMzZDQwYWMxMGVmMTkyNjcwMWY2ZjA4YTJk
ODZmYmZkMWFkM2U0IgotCi1pZ25vcmVAXjMuMS41OgotICB2ZXJzaW9uICIzLjIuMCIKLSAgcmVz
b2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vaWdub3JlLy0vaWdub3JlLTMuMi4w
LnRneiM4ZDg4ZjAzYzMwMDJhMGFjNTIxMTRkYjI1ZDJjNjczYjBiZjFlNDM1IgotCi1pbW11dGFi
bGVAXjMuNy42OgotICB2ZXJzaW9uICIzLjguMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0
cnkueWFybnBrZy5jb20vaW1tdXRhYmxlLy0vaW1tdXRhYmxlLTMuOC4xLnRneiMyMDA4MDdmMTFh
YjBmNzI3MTBlYTQ4NTU0MmRlMDg4MDc1ZjY4Y2QyIgotCi1pbXVybXVyaGFzaEBeMC4xLjQ6Ci0g
IHZlcnNpb24gIjAuMS40IgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNv
bS9pbXVybXVyaGFzaC8tL2ltdXJtdXJoYXNoLTAuMS40LnRneiM5MjE4YjliMmI5MjhhMjM4YjEz
ZGM0ZmI2YjZkNTc2ZjIzMTQ1M2VhIgotCi1pbmRleGVzLW9mQF4xLjAuMToKLSAgdmVyc2lvbiAi
MS4wLjEiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2luZGV4ZXMt
b2YvLS9pbmRleGVzLW9mLTEuMC4xLnRneiNmMzBmNzE2YzhlMmJkMzQ2YzdiNjdkM2RmMzkxNTU2
NmE3YzA1NjA3IgotCi1pbmRleG9mQDAuMC4xOgotICB2ZXJzaW9uICIwLjAuMSIKLSAgcmVzb2x2
ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vaW5kZXhvZi8tL2luZGV4b2YtMC4wLjEu
dGd6IzgyZGMzMzZkMjMyYjkwNjIxNzlkMDVhYjMyOTNhNjYwNTlmZDQzNWQiCi0KLWluZmxpZ2h0
QF4xLjAuNDoKLSAgdmVyc2lvbiAiMS4wLjUiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5
Lnlhcm5wa2cuY29tL2luZmxpZ2h0Ly0vaW5mbGlnaHQtMS4wLjUudGd6I2RiMzIwNGNkNWE5ZGUy
ZTZjZDg5MGI4NWM2ZTJmNjZiY2Y0ZjYyMGEiCi0gIGRlcGVuZGVuY2llczoKLSAgICBvbmNlICJe
MS4zLjAiCi0gICAgd3JhcHB5ICIxIgotCi1pbmhlcml0c0BeMi4wLjEsIGluaGVyaXRzQH4yLjAu
MCwgaW5oZXJpdHNAfjIuMC4xLCBpbmhlcml0c0AyOgotICB2ZXJzaW9uICIyLjAuMyIKLSAgcmVz
b2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vaW5oZXJpdHMvLS9pbmhlcml0cy0y
LjAuMy50Z3ojNjMzYzJjODNlM2RhNDJhNTAyZjUyNDY2MDIyNDgwZjQyMDgyNjFkZSIKLQotaW5o
ZXJpdHNAMi4wLjE6Ci0gIHZlcnNpb24gIjIuMC4xIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdp
c3RyeS55YXJucGtnLmNvbS9pbmhlcml0cy8tL2luaGVyaXRzLTIuMC4xLnRneiNiMTdkMDhkMzI2
YjQ0MjNlNTY4ZWZmNzE5ZjkxYjBiMWNiZGY2OWYxIgotCi1pbmlAfjEuMy4wOgotICB2ZXJzaW9u
ICIxLjMuNCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vaW5pLy0v
aW5pLTEuMy40LnRneiMwNTM3Y2I3OWRhZjU5YjU5YTFhNTE3ZGZmNzA2Yzg2ZWMwMzkxNjJlIgot
Ci1pbnF1aXJlckBeMC4xMi4wOgotICB2ZXJzaW9uICIwLjEyLjAiCi0gIHJlc29sdmVkICJodHRw
czovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2lucXVpcmVyLy0vaW5xdWlyZXItMC4xMi4wLnRneiMx
ZWYyYmZkNjM1MDRkZjBiYzc1Nzg1ZmZmOGMyYzQxZGYxMmYwNzdlIgotICBkZXBlbmRlbmNpZXM6
Ci0gICAgYW5zaS1lc2NhcGVzICJeMS4xLjAiCi0gICAgYW5zaS1yZWdleCAiXjIuMC4wIgotICAg
IGNoYWxrICJeMS4wLjAiCi0gICAgY2xpLWN1cnNvciAiXjEuMC4xIgotICAgIGNsaS13aWR0aCAi
XjIuMC4wIgotICAgIGZpZ3VyZXMgIl4xLjMuNSIKLSAgICBsb2Rhc2ggIl40LjMuMCIKLSAgICBy
ZWFkbGluZTIgIl4xLjAuMSIKLSAgICBydW4tYXN5bmMgIl4wLjEuMCIKLSAgICByeC1saXRlICJe
My4xLjIiCi0gICAgc3RyaW5nLXdpZHRoICJeMS4wLjEiCi0gICAgc3RyaXAtYW5zaSAiXjMuMC4w
IgotICAgIHRocm91Z2ggIl4yLjMuNiIKLQotaW50ZXJwcmV0QF4wLjYuNDoKLSAgdmVyc2lvbiAi
MC42LjYiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2ludGVycHJl
dC8tL2ludGVycHJldC0wLjYuNi50Z3ojZmVjZDdhMThlN2NlNWNhNmFiZmI5NTNlMWY4NjIxM2E0
OWYxNjI1YiIKLQotaW52YXJpYW50QF4yLjAuMCwgaW52YXJpYW50QF4yLjIuMDoKLSAgdmVyc2lv
biAiMi4yLjEiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2ludmFy
aWFudC8tL2ludmFyaWFudC0yLjIuMS50Z3ojYjA5NzAxMDU0NzY2OGM3ZTMzNzAyOGViZTgxNmVi
ZTM2YzhhOGQ1NCIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGxvb3NlLWVudmlmeSAiXjEuMC4wIgot
Ci1pbnZlcnQta3ZAXjEuMC4wOgotICB2ZXJzaW9uICIxLjAuMCIKLSAgcmVzb2x2ZWQgImh0dHBz
Oi8vcmVnaXN0cnkueWFybnBrZy5jb20vaW52ZXJ0LWt2Ly0vaW52ZXJ0LWt2LTEuMC4wLnRneiMx
MDRhOGU0YWFjYTZkM2Q4Y2QxNTdhOGVmOGJmYWIyZDdhM2ZmZGI2IgotCi1pcGFkZHIuanNAMS4x
LjE6Ci0gIHZlcnNpb24gIjEuMS4xIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJu
cGtnLmNvbS9pcGFkZHIuanMvLS9pcGFkZHIuanMtMS4xLjEudGd6I2M3OTFkOTVmNTJiMjljMTI0
N2Q1ZGY4MGFkYTM5YjhhNzM2NDcyMzAiCi0KLWlzLWFic29sdXRlLXVybEBeMi4wLjA6Ci0gIHZl
cnNpb24gIjIuMC4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9p
cy1hYnNvbHV0ZS11cmwvLS9pcy1hYnNvbHV0ZS11cmwtMi4wLjAudGd6IzljNGIyMGIwZTVjMGNi
ZWY5YTQ3OWEzNjdlZGU2Zjk5MTY3OWYzNTkiCi0KLWlzLWFycmF5aXNoQF4wLjIuMToKLSAgdmVy
c2lvbiAiMC4yLjEiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2lz
LWFycmF5aXNoLy0vaXMtYXJyYXlpc2gtMC4yLjEudGd6Izc3Yzk5ODQwNTI3YWE4ZWNiMWE4YmE2
OTdiODA2NDVhN2E5MjZhOWQiCi0KLWlzLWJpbmFyeS1wYXRoQF4xLjAuMDoKLSAgdmVyc2lvbiAi
MS4wLjEiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2lzLWJpbmFy
eS1wYXRoLy0vaXMtYmluYXJ5LXBhdGgtMS4wLjEudGd6Izc1ZjE2NjQyYjQ4MGYxODdhNzExYzgx
NDE2MWZkM2E0YTc2NTU4OTgiCi0gIGRlcGVuZGVuY2llczoKLSAgICBiaW5hcnktZXh0ZW5zaW9u
cyAiXjEuMC4wIgotCi1pcy1idWZmZXJAXjEuMC4yOgotICB2ZXJzaW9uICIxLjEuNCIKLSAgcmVz
b2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vaXMtYnVmZmVyLy0vaXMtYnVmZmVy
LTEuMS40LnRneiNjZmM4NmNjZDVkYzVhNTJmYTgwNDg5MTExYzY5MjBjNDU3ZTJkOThiIgotCi1p
cy1idWlsdGluLW1vZHVsZUBeMS4wLjA6Ci0gIHZlcnNpb24gIjEuMC4wIgotICByZXNvbHZlZCAi
aHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9pcy1idWlsdGluLW1vZHVsZS8tL2lzLWJ1aWx0
aW4tbW9kdWxlLTEuMC4wLnRneiM1NDA1NzJkMzRmN2FjMzExOWY4Zjc2YzMwY2JjMWIxZTAzN2Fm
ZmJlIgotICBkZXBlbmRlbmNpZXM6Ci0gICAgYnVpbHRpbi1tb2R1bGVzICJeMS4wLjAiCi0KLWlz
LWNhbGxhYmxlQF4xLjEuMSwgaXMtY2FsbGFibGVAXjEuMS4zOgotICB2ZXJzaW9uICIxLjEuMyIK
LSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vaXMtY2FsbGFibGUvLS9p
cy1jYWxsYWJsZS0xLjEuMy50Z3ojODZlYjc1MzkyODA1ZGRjMzNhZjcxYzkyYTBlZWRmNzRlZTc2
MDRiMiIKLQotaXMtZGF0ZS1vYmplY3RAXjEuMC4xOgotICB2ZXJzaW9uICIxLjAuMSIKLSAgcmVz
b2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vaXMtZGF0ZS1vYmplY3QvLS9pcy1k
YXRlLW9iamVjdC0xLjAuMS50Z3ojOWFhMjBlYjZhZWViYmZmNzdmYmQzM2U3NGNhMDFiMzM1ODFk
M2ExNiIKLQotaXMtZG90ZmlsZUBeMS4wLjA6Ci0gIHZlcnNpb24gIjEuMC4yIgotICByZXNvbHZl
ZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9pcy1kb3RmaWxlLy0vaXMtZG90ZmlsZS0x
LjAuMi50Z3ojMmMxMzIzODNmMzkxOTlmOGVkYzI2OGNhMDFiOWIwMDdkMjA1Y2M0ZCIKLQotaXMt
ZXF1YWwtc2hhbGxvd0BeMC4xLjM6Ci0gIHZlcnNpb24gIjAuMS4zIgotICByZXNvbHZlZCAiaHR0
cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9pcy1lcXVhbC1zaGFsbG93Ly0vaXMtZXF1YWwtc2hh
bGxvdy0wLjEuMy50Z3ojMjIzODA5OGZjMjIxZGUwYmNmYTVkOWVhYzRjNDVkNjM4YWExYzUzNCIK
LSAgZGVwZW5kZW5jaWVzOgotICAgIGlzLXByaW1pdGl2ZSAiXjIuMC4wIgotCi1pcy1leHRlbmRh
YmxlQF4wLjEuMToKLSAgdmVyc2lvbiAiMC4xLjEiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lz
dHJ5Lnlhcm5wa2cuY29tL2lzLWV4dGVuZGFibGUvLS9pcy1leHRlbmRhYmxlLTAuMS4xLnRneiM2
MmIxMTBlMjg5YTQ3MTQxOGUzZWMzNmE2MTdkNDcyZTMwMWRmYzg5IgotCi1pcy1leHRnbG9iQF4x
LjAuMDoKLSAgdmVyc2lvbiAiMS4wLjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlh
cm5wa2cuY29tL2lzLWV4dGdsb2IvLS9pcy1leHRnbG9iLTEuMC4wLnRneiNhYzQ2ODE3N2M0OTQz
NDA1YTA5MmZjOGYyOTc2MGM2ZmZjNjIwNmMwIgotCi1pcy1leHRnbG9iQF4yLjAuMDoKLSAgdmVy
c2lvbiAiMi4wLjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2lz
LWV4dGdsb2IvLS9pcy1leHRnbG9iLTIuMC4wLnRneiNhOWI5MmMxYWUyZDdhOTc1YWQzMDdiZTA3
MjIwNDljN2U0ZWEyZjEzIgotCi1pcy1maW5pdGVAXjEuMC4wOgotICB2ZXJzaW9uICIxLjAuMiIK
LSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vaXMtZmluaXRlLy0vaXMt
ZmluaXRlLTEuMC4yLnRneiNjYzY2Nzc2OTU2MDJiZTU1MGVmMTFlOGI0YWE2MzA1MzQyYjZkMGFh
IgotICBkZXBlbmRlbmNpZXM6Ci0gICAgbnVtYmVyLWlzLW5hbiAiXjEuMC4wIgotCi1pcy1mdWxs
d2lkdGgtY29kZS1wb2ludEBeMS4wLjA6Ci0gIHZlcnNpb24gIjEuMC4wIgotICByZXNvbHZlZCAi
aHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9pcy1mdWxsd2lkdGgtY29kZS1wb2ludC8tL2lz
LWZ1bGx3aWR0aC1jb2RlLXBvaW50LTEuMC4wLnRneiNlZjllMzEzODZmMDMxYTdmMGQ2NDNhZjgy
ZmRlNTBjNDU3ZWYwMGNiIgotICBkZXBlbmRlbmNpZXM6Ci0gICAgbnVtYmVyLWlzLW5hbiAiXjEu
MC4wIgotCi1pcy1nbG9iQF4yLjAuMCwgaXMtZ2xvYkBeMi4wLjE6Ci0gIHZlcnNpb24gIjIuMC4x
IgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9pcy1nbG9iLy0vaXMt
Z2xvYi0yLjAuMS50Z3ojZDA5NmY5MjZhM2RlZDU2MDBmM2ZkZmQ5MTE5OGNiMDg4OGMyZDg2MyIK
LSAgZGVwZW5kZW5jaWVzOgotICAgIGlzLWV4dGdsb2IgIl4xLjAuMCIKLQotaXMtZ2xvYkBeMy4w
LjA6Ci0gIHZlcnNpb24gIjMuMC4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJu
cGtnLmNvbS9pcy1nbG9iLy0vaXMtZ2xvYi0zLjAuMC50Z3ojZTQzM2MyMjJkYjlkNzc4NDQwODRk
NzJkYjFlZmYwNDc4NDU5ODVjMSIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGlzLWV4dGdsb2IgIl4y
LjAuMCIKLQotaXMtbG93ZXItY2FzZUBeMS4xLjA6Ci0gIHZlcnNpb24gIjEuMS4zIgotICByZXNv
bHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9pcy1sb3dlci1jYXNlLy0vaXMtbG93
ZXItY2FzZS0xLjEuMy50Z3ojN2UxNDdiZTQ3NjhkYzQ2NmRiM2JmYjIxY2M2MGIzMWU2YWQ2OTM5
MyIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGxvd2VyLWNhc2UgIl4xLjEuMCIKLQotaXMtbXktanNv
bi12YWxpZEBeMi4xMC4wLCBpcy1teS1qc29uLXZhbGlkQF4yLjEyLjQ6Ci0gIHZlcnNpb24gIjIu
MTUuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vaXMtbXktanNv
bi12YWxpZC8tL2lzLW15LWpzb24tdmFsaWQtMi4xNS4wLnRneiM5MzZlZGRhM2NhM2MyMTFmZDk4
ZjNiMmQzZTA4ZGE0M2Y3YjI5MTViIgotICBkZXBlbmRlbmNpZXM6Ci0gICAgZ2VuZXJhdGUtZnVu
Y3Rpb24gIl4yLjAuMCIKLSAgICBnZW5lcmF0ZS1vYmplY3QtcHJvcGVydHkgIl4xLjEuMCIKLSAg
ICBqc29ucG9pbnRlciAiXjQuMC4wIgotICAgIHh0ZW5kICJeNC4wLjAiCi0KLWlzLW51bWJlckBe
Mi4wLjIsIGlzLW51bWJlckBeMi4xLjA6Ci0gIHZlcnNpb24gIjIuMS4wIgotICByZXNvbHZlZCAi
aHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9pcy1udW1iZXIvLS9pcy1udW1iZXItMi4xLjAu
dGd6IzAxZmNiYmIzOTM0NjNhNTQ4ZjJmNDY2Y2NlMTZkZWNlNDlkYjkwOGYiCi0gIGRlcGVuZGVu
Y2llczoKLSAgICBraW5kLW9mICJeMy4wLjIiCi0KLWlzLXBhdGgtY3dkQF4xLjAuMDoKLSAgdmVy
c2lvbiAiMS4wLjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2lz
LXBhdGgtY3dkLy0vaXMtcGF0aC1jd2QtMS4wLjAudGd6I2QyMjVlYzIzMTMyZTg5ZWRkMzhmZGE3
Njc0NzJlNjJlNjVmMTEwNmQiCi0KLWlzLXBhdGgtaW4tY3dkQF4xLjAuMDoKLSAgdmVyc2lvbiAi
MS4wLjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2lzLXBhdGgt
aW4tY3dkLy0vaXMtcGF0aC1pbi1jd2QtMS4wLjAudGd6IzY0Nzc1ODJiODIxNGQ2MDIzNDYwOTQ1
NjcwMDNiZThhOWVhYzA0ZGMiCi0gIGRlcGVuZGVuY2llczoKLSAgICBpcy1wYXRoLWluc2lkZSAi
XjEuMC4wIgotCi1pcy1wYXRoLWluc2lkZUBeMS4wLjA6Ci0gIHZlcnNpb24gIjEuMC4wIgotICBy
ZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9pcy1wYXRoLWluc2lkZS8tL2lz
LXBhdGgtaW5zaWRlLTEuMC4wLnRneiNmYzA2ZTVhMTY4M2ZiZGExM2RlNjY3YWZmNzE3YmJjMTBh
NDhmMzdmIgotICBkZXBlbmRlbmNpZXM6Ci0gICAgcGF0aC1pcy1pbnNpZGUgIl4xLjAuMSIKLQot
aXMtcGxhaW4tb2JqQF4xLjAuMDoKLSAgdmVyc2lvbiAiMS4xLjAiCi0gIHJlc29sdmVkICJodHRw
czovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2lzLXBsYWluLW9iai8tL2lzLXBsYWluLW9iai0xLjEu
MC50Z3ojNzFhNTBjODQyOWRmY2E3NzNjOTJhMzkwYTRhMDNiMzlmY2Q1MWQzZSIKLQotaXMtcG9z
aXgtYnJhY2tldEBeMC4xLjA6Ci0gIHZlcnNpb24gIjAuMS4xIgotICByZXNvbHZlZCAiaHR0cHM6
Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9pcy1wb3NpeC1icmFja2V0Ly0vaXMtcG9zaXgtYnJhY2tl
dC0wLjEuMS50Z3ojMzMzNGRjNzk3NzQzNjhlOTJmMDE2ZTZmYmMwYTg4ZjVjZDZlNmJjNCIKLQot
aXMtcHJpbWl0aXZlQF4yLjAuMDoKLSAgdmVyc2lvbiAiMi4wLjAiCi0gIHJlc29sdmVkICJodHRw
czovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2lzLXByaW1pdGl2ZS8tL2lzLXByaW1pdGl2ZS0yLjAu
MC50Z3ojMjA3YmFiOTE2Mzg0OTljMDdiMmFkZjI0MGE0MWE4NzIxMDAzNDU3NSIKLQotaXMtcHJv
cGVydHlAXjEuMC4wOgotICB2ZXJzaW9uICIxLjAuMiIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVn
aXN0cnkueWFybnBrZy5jb20vaXMtcHJvcGVydHkvLS9pcy1wcm9wZXJ0eS0xLjAuMi50Z3ojNTdm
ZTFjNGU0ODQ3NGVkZDY1YjA5OTExZjI2YjFjZDQwOTVkZGE4NCIKLQotaXMtcmVnZXhAXjEuMC4z
OgotICB2ZXJzaW9uICIxLjAuMyIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBr
Zy5jb20vaXMtcmVnZXgvLS9pcy1yZWdleC0xLjAuMy50Z3ojMGQ1NTE4MmJkZGY5ZjJmZGUyNzgy
MjBhZWMzYTc1NjQyYzkwODYzNyIKLQotaXMtcmVzb2x2YWJsZUBeMS4wLjA6Ci0gIHZlcnNpb24g
IjEuMC4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9pcy1yZXNv
bHZhYmxlLy0vaXMtcmVzb2x2YWJsZS0xLjAuMC50Z3ojOGRmNTdjNjFlYTJlM2M1MDE0MDhkMTAw
ZmIwMTNjZjhkNmUwY2M2MiIKLSAgZGVwZW5kZW5jaWVzOgotICAgIHRyeWl0ICJeMS4wLjEiCi0K
LWlzLXN0cmVhbUBeMS4wLjE6Ci0gIHZlcnNpb24gIjEuMS4wIgotICByZXNvbHZlZCAiaHR0cHM6
Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9pcy1zdHJlYW0vLS9pcy1zdHJlYW0tMS4xLjAudGd6IzEy
ZDRhM2RkNGU2OGUwYjc5Y2ViOGRiYzg0MTczYWU4MGQ5MWNhNDQiCi0KLWlzLXN1YnNldEBeMC4x
LjE6Ci0gIHZlcnNpb24gIjAuMS4xIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJu
cGtnLmNvbS9pcy1zdWJzZXQvLS9pcy1zdWJzZXQtMC4xLjEudGd6IzhhNTkxMTdkOTMyZGUxZGUw
MGYyNDVmY2RkMzljZTQzZjFlOTM5YTYiCi0KLWlzLXN2Z0BeMi4wLjA6Ci0gIHZlcnNpb24gIjIu
MC4xIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9pcy1zdmcvLS9p
cy1zdmctMi4wLjEudGd6I2Y5M2FiM2JmMWQ2YmJjYTMwZTk3NTNjZDM0ODViMTMwMGVlYmMwMTMi
Ci0gIGRlcGVuZGVuY2llczoKLSAgICBodG1sLWNvbW1lbnQtcmVnZXggIl4xLjEuMCIKLQotaXMt
c3ltYm9sQF4xLjAuMToKLSAgdmVyc2lvbiAiMS4wLjEiCi0gIHJlc29sdmVkICJodHRwczovL3Jl
Z2lzdHJ5Lnlhcm5wa2cuY29tL2lzLXN5bWJvbC8tL2lzLXN5bWJvbC0xLjAuMS50Z3ojM2NjNTlm
MDAwMjUxOTRiNmFiMmUzOGRiYWU2Njg5MjU2YjY2MDU3MiIKLQotaXMtdHlwZWRhcnJheUB+MS4w
LjA6Ci0gIHZlcnNpb24gIjEuMC4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJu
cGtnLmNvbS9pcy10eXBlZGFycmF5Ly0vaXMtdHlwZWRhcnJheS0xLjAuMC50Z3ojZTQ3OWM4MDg1
OGRmMGMxYjExZGRkYTY5NDBmOTYwMTFmY2RhNGE5YSIKLQotaXMtdXBwZXItY2FzZUBeMS4xLjA6
Ci0gIHZlcnNpb24gIjEuMS4yIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtn
LmNvbS9pcy11cHBlci1jYXNlLy0vaXMtdXBwZXItY2FzZS0xLjEuMi50Z3ojOGQwYjFmYTdlNzkz
M2ExZTU4NDgzNjAwZWM3ZDk2NjFjYmFmNzU2ZiIKLSAgZGVwZW5kZW5jaWVzOgotICAgIHVwcGVy
LWNhc2UgIl4xLjEuMCIKLQotaXMtdXRmOEBeMC4yLjA6Ci0gIHZlcnNpb24gIjAuMi4xIgotICBy
ZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9pcy11dGY4Ly0vaXMtdXRmOC0w
LjIuMS50Z3ojNGIwZGExNDQyMTA0ZDFiMzM2MzQwZTgwNzk3ZTg2NWNmMzlmN2Q3MiIKLQotaXNh
cnJheUBeMS4wLjAsIGlzYXJyYXlAfjEuMC4wLCBpc2FycmF5QDEuMC4wOgotICB2ZXJzaW9uICIx
LjAuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vaXNhcnJheS8t
L2lzYXJyYXktMS4wLjAudGd6I2JiOTM1ZDQ4NTgyY2JhMTY4YzA2ODM0OTU3YTU0YTNlMDcxMjRm
MTEiCi0KLWlzYXJyYXlAMC4wLjE6Ci0gIHZlcnNpb24gIjAuMC4xIgotICByZXNvbHZlZCAiaHR0
cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9pc2FycmF5Ly0vaXNhcnJheS0wLjAuMS50Z3ojOGEx
OGFjZmNhOWE4ZjQxNzdlMDlhYmZjNjAzODkzOWIwNWQxZWVkZiIKLQotaXNleGVAXjEuMS4xOgot
ICB2ZXJzaW9uICIxLjEuMiIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5j
b20vaXNleGUvLS9pc2V4ZS0xLjEuMi50Z3ojMzZmM2UyMmU2MDc1MDkyMGY1ZTcyNDFhNDc2YThj
NmE0MjI3NWFkMCIKLQotaXNvYmplY3RAXjIuMC4wOgotICB2ZXJzaW9uICIyLjEuMCIKLSAgcmVz
b2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vaXNvYmplY3QvLS9pc29iamVjdC0y
LjEuMC50Z3ojZjA2NTU2MTA5NmEzZjFkYTJlZjQ2MjcyZjgxNWM4NDBkODdlMGM4OSIKLSAgZGVw
ZW5kZW5jaWVzOgotICAgIGlzYXJyYXkgIjEuMC4wIgotCi1pc29tb3JwaGljLWZldGNoQF4yLjEu
MToKLSAgdmVyc2lvbiAiMi4yLjEiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5w
a2cuY29tL2lzb21vcnBoaWMtZmV0Y2gvLS9pc29tb3JwaGljLWZldGNoLTIuMi4xLnRneiM2MTFh
ZTFhY2YxNGY1ZTgxZjcyOTUwNzQ3MjgxOWZlOTczMzU1OGE5IgotICBkZXBlbmRlbmNpZXM6Ci0g
ICAgbm9kZS1mZXRjaCAiXjEuMC4xIgotICAgIHdoYXR3Zy1mZXRjaCAiPj0wLjEwLjAiCi0KLWlz
c3RyZWFtQH4wLjEuMjoKLSAgdmVyc2lvbiAiMC4xLjIiCi0gIHJlc29sdmVkICJodHRwczovL3Jl
Z2lzdHJ5Lnlhcm5wa2cuY29tL2lzc3RyZWFtLy0vaXNzdHJlYW0tMC4xLjIudGd6IzQ3ZTYzZjdh
ZjU1YWZhNmY5MmUxNTAwZTY5MGViOGI4NTI5YzA5OWEiCi0KLWlzdGFuYnVsLWFwaUBeMS4wLjAt
YXBsaGEuMTA6Ci0gIHZlcnNpb24gIjEuMC4wLWFwbGhhLjEwIgotICByZXNvbHZlZCAiaHR0cHM6
Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9pc3RhbmJ1bC1hcGkvLS9pc3RhbmJ1bC1hcGktMS4wLjAt
YXBsaGEuMTAudGd6IzkwMmVkZjVjZjU0MDRlMGViYTdlMDBlZjQ2NDA4NDg4YTBkM2UzMzciCi0g
IGRlcGVuZGVuY2llczoKLSAgICBhc3luYyAiMS54IgotICAgIGNsb25lICJeMS4wLjIiCi0gICAg
ZmlsZXNldCAiMC4yLngiCi0gICAgaXN0YW5idWwtbGliLWNvdmVyYWdlICJeMS4wLjAtYWxwaGEi
Ci0gICAgaXN0YW5idWwtbGliLWhvb2sgIl4xLjAuMC1hbHBoYSIKLSAgICBpc3RhbmJ1bC1saWIt
aW5zdHJ1bWVudCAiXjEuMC4wLWFscGhhIgotICAgIGlzdGFuYnVsLWxpYi1yZXBvcnQgIl4xLjAu
MC1hbHBoYSIKLSAgICBpc3RhbmJ1bC1saWItc291cmNlLW1hcHMgIl4xLjAuMC1hbHBoYSIKLSAg
ICBpc3RhbmJ1bC1yZXBvcnRzICJeMS4wLjAtYWxwaGEiCi0gICAganMteWFtbCAiMy54IgotICAg
IG1rZGlycCAiMC41LngiCi0gICAgb25jZSAiMS54IgotCi1pc3RhbmJ1bC1saWItY292ZXJhZ2VA
XjEuMC4wLCBpc3RhbmJ1bC1saWItY292ZXJhZ2VAXjEuMC4wLWFscGhhLCBpc3RhbmJ1bC1saWIt
Y292ZXJhZ2VAXjEuMC4wLWFscGhhLjA6Ci0gIHZlcnNpb24gIjEuMC4wIgotICByZXNvbHZlZCAi
aHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9pc3RhbmJ1bC1saWItY292ZXJhZ2UvLS9pc3Rh
bmJ1bC1saWItY292ZXJhZ2UtMS4wLjAudGd6I2MzZjliNmQyMjZkYTEyNDI0MDY0Y2NlODdmY2Uw
ZmI1N2ZkZmE3YTIiCi0KLWlzdGFuYnVsLWxpYi1ob29rQF4xLjAuMC1hbHBoYToKLSAgdmVyc2lv
biAiMS4wLjAtYWxwaGEuNCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5j
b20vaXN0YW5idWwtbGliLWhvb2svLS9pc3RhbmJ1bC1saWItaG9vay0xLjAuMC1hbHBoYS40LnRn
eiM4YzViYjlmNmZiZDg1MjZlMGFlNmNmNjM5YWYyODI2NjkwNmI5MzhmIgotICBkZXBlbmRlbmNp
ZXM6Ci0gICAgYXBwZW5kLXRyYW5zZm9ybSAiXjAuMy4wIgotCi1pc3RhbmJ1bC1saWItaW5zdHJ1
bWVudEBeMS4wLjAtYWxwaGEsIGlzdGFuYnVsLWxpYi1pbnN0cnVtZW50QF4xLjEuMToKLSAgdmVy
c2lvbiAiMS4xLjMiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2lz
dGFuYnVsLWxpYi1pbnN0cnVtZW50Ly0vaXN0YW5idWwtbGliLWluc3RydW1lbnQtMS4xLjMudGd6
IzY2ZDUzNTNkMWY1OTJiOWUzNGQxY2Y5YWNkYTljM2YxYWI1MDk2OTYiCi0gIGRlcGVuZGVuY2ll
czoKLSAgICBiYWJlbC1nZW5lcmF0b3IgIl42LjExLjMiCi0gICAgYmFiZWwtdGVtcGxhdGUgIl42
LjkuMCIKLSAgICBiYWJlbC10cmF2ZXJzZSAiXjYuOS4wIgotICAgIGJhYmVsLXR5cGVzICJeNi4x
MC4yIgotICAgIGJhYnlsb24gIl42LjguMSIKLSAgICBpc3RhbmJ1bC1saWItY292ZXJhZ2UgIl4x
LjAuMCIKLQotaXN0YW5idWwtbGliLXJlcG9ydEBeMS4wLjAtYWxwaGE6Ci0gIHZlcnNpb24gIjEu
MC4wLWFscGhhLjMiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2lz
dGFuYnVsLWxpYi1yZXBvcnQvLS9pc3RhbmJ1bC1saWItcmVwb3J0LTEuMC4wLWFscGhhLjMudGd6
IzMyZDVmNmVjN2YzM2NhM2E2MDIyMDllMjc4YjJlNmZmMTQzNDk4YWYiCi0gIGRlcGVuZGVuY2ll
czoKLSAgICBhc3luYyAiXjEuNC4yIgotICAgIGlzdGFuYnVsLWxpYi1jb3ZlcmFnZSAiXjEuMC4w
LWFscGhhIgotICAgIG1rZGlycCAiXjAuNS4xIgotICAgIHBhdGgtcGFyc2UgIl4xLjAuNSIKLSAg
ICByaW1yYWYgIl4yLjQuMyIKLSAgICBzdXBwb3J0cy1jb2xvciAiXjMuMS4yIgotCi1pc3RhbmJ1
bC1saWItc291cmNlLW1hcHNAXjEuMC4wLWFscGhhOgotICB2ZXJzaW9uICIxLjAuMiIKLSAgcmVz
b2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vaXN0YW5idWwtbGliLXNvdXJjZS1t
YXBzLy0vaXN0YW5idWwtbGliLXNvdXJjZS1tYXBzLTEuMC4yLnRneiM5ZTkxYjBlNWFlNmVkMjAz
ZjY3YzY5YTM0ZTZlOThiMTBiYjY5YTQ5IgotICBkZXBlbmRlbmNpZXM6Ci0gICAgaXN0YW5idWwt
bGliLWNvdmVyYWdlICJeMS4wLjAtYWxwaGEuMCIKLSAgICBta2RpcnAgIl4wLjUuMSIKLSAgICBy
aW1yYWYgIl4yLjQuNCIKLSAgICBzb3VyY2UtbWFwICJeMC41LjMiCi0KLWlzdGFuYnVsLXJlcG9y
dHNAXjEuMC4wLWFscGhhOgotICB2ZXJzaW9uICIxLjAuMC1hbHBoYS44IgotICByZXNvbHZlZCAi
aHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9pc3RhbmJ1bC1yZXBvcnRzLy0vaXN0YW5idWwt
cmVwb3J0cy0xLjAuMC1hbHBoYS44LnRneiMwOTQ4MzBmNGM3ZjNkNDgyZTQ2NmFhYzhhYmRhMjQ5
NWY5YWU0Njg5IgotICBkZXBlbmRlbmNpZXM6Ci0gICAgaGFuZGxlYmFycyAiXjQuMC4zIgotCi1p
c3RhbmJ1bEBeMC40LjU6Ci0gIHZlcnNpb24gIjAuNC41IgotICByZXNvbHZlZCAiaHR0cHM6Ly9y
ZWdpc3RyeS55YXJucGtnLmNvbS9pc3RhbmJ1bC8tL2lzdGFuYnVsLTAuNC41LnRneiM2NWM3ZDcz
ZDRjNGRhODRkNGYzYWMzMTBiOTE4ZmIwYjgwMzM3MzNiIgotICBkZXBlbmRlbmNpZXM6Ci0gICAg
YWJicmV2ICIxLjAueCIKLSAgICBhc3luYyAiMS54IgotICAgIGVzY29kZWdlbiAiMS44LngiCi0g
ICAgZXNwcmltYSAiMi43LngiCi0gICAgZ2xvYiAiXjUuMC4xNSIKLSAgICBoYW5kbGViYXJzICJe
NC4wLjEiCi0gICAganMteWFtbCAiMy54IgotICAgIG1rZGlycCAiMC41LngiCi0gICAgbm9wdCAi
My54IgotICAgIG9uY2UgIjEueCIKLSAgICByZXNvbHZlICIxLjEueCIKLSAgICBzdXBwb3J0cy1j
b2xvciAiXjMuMS4wIgotICAgIHdoaWNoICJeMS4xLjEiCi0gICAgd29yZHdyYXAgIl4xLjAuMCIK
LQotamFzbWluZS1jaGVja0BeMC4xLjQ6Ci0gIHZlcnNpb24gIjAuMS41IgotICByZXNvbHZlZCAi
aHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9qYXNtaW5lLWNoZWNrLy0vamFzbWluZS1jaGVj
ay0wLjEuNS50Z3ojZGJhZDdlZWM1NjI2MWM0YjNkMTc1YWRhNTVmZTU5YjA5YWM5ZTQxNSIKLSAg
ZGVwZW5kZW5jaWVzOgotICAgIHRlc3RjaGVjayAiXjAuMS4wIgotCi1qZXN0LWNoYW5nZWQtZmls
ZXNAXjE1LjAuMDoKLSAgdmVyc2lvbiAiMTUuMC4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdp
c3RyeS55YXJucGtnLmNvbS9qZXN0LWNoYW5nZWQtZmlsZXMvLS9qZXN0LWNoYW5nZWQtZmlsZXMt
MTUuMC4wLnRneiMzYWM5OWQ5N2RjNGFjMDQ1YWQ0YWRhZThkOTY3Y2MxMzE3MzgyNTcxIgotCi1q
ZXN0LWNsaUBeMTUuMS4xOgotICB2ZXJzaW9uICIxNS4xLjEiCi0gIHJlc29sdmVkICJodHRwczov
L3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2plc3QtY2xpLy0vamVzdC1jbGktMTUuMS4xLnRneiM1M2Yy
NzEyODFmOTBkM2I0MDQzZWNhOWNlOWFmNjlkZDA0YmJkYTNlIgotICBkZXBlbmRlbmNpZXM6Ci0g
ICAgYW5zaS1lc2NhcGVzICJeMS40LjAiCi0gICAgY2FsbHNpdGVzICJeMi4wLjAiCi0gICAgY2hh
bGsgIl4xLjEuMSIKLSAgICBncmFjZWZ1bC1mcyAiXjQuMS42IgotICAgIGlzdGFuYnVsLWFwaSAi
XjEuMC4wLWFwbGhhLjEwIgotICAgIGlzdGFuYnVsLWxpYi1jb3ZlcmFnZSAiXjEuMC4wIgotICAg
IGlzdGFuYnVsLWxpYi1pbnN0cnVtZW50ICJeMS4xLjEiCi0gICAgamVzdC1jaGFuZ2VkLWZpbGVz
ICJeMTUuMC4wIgotICAgIGplc3QtY29uZmlnICJeMTUuMS4xIgotICAgIGplc3QtZW52aXJvbm1l
bnQtanNkb20gIl4xNS4xLjEiCi0gICAgamVzdC1maWxlLWV4aXN0cyAiXjE1LjAuMCIKLSAgICBq
ZXN0LWhhc3RlLW1hcCAiXjE1LjAuMSIKLSAgICBqZXN0LWphc21pbmUyICJeMTUuMS4xIgotICAg
IGplc3QtbW9jayAiXjE1LjAuMCIKLSAgICBqZXN0LXJlc29sdmUgIl4xNS4wLjEiCi0gICAgamVz
dC1yZXNvbHZlLWRlcGVuZGVuY2llcyAiXjE1LjAuMSIKLSAgICBqZXN0LXJ1bnRpbWUgIl4xNS4x
LjEiCi0gICAgamVzdC1zbmFwc2hvdCAiXjE1LjEuMSIKLSAgICBqZXN0LXV0aWwgIl4xNS4xLjEi
Ci0gICAganNvbi1zdGFibGUtc3RyaW5naWZ5ICJeMS4wLjAiCi0gICAgbm9kZS1ub3RpZmllciAi
XjQuNi4xIgotICAgIHNhbmUgIn4xLjQuMSIKLSAgICB3aGljaCAiXjEuMS4xIgotICAgIHdvcmtl
ci1mYXJtICJeMS4zLjEiCi0gICAgeWFyZ3MgIl41LjAuMCIKLQotamVzdC1jb25maWdAXjE1LjEu
MToKLSAgdmVyc2lvbiAiMTUuMS4xIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJu
cGtnLmNvbS9qZXN0LWNvbmZpZy8tL2plc3QtY29uZmlnLTE1LjEuMS50Z3ojYWJkYmU1YjRhNDlh
NDA0ZDA0NzU0ZDQyZDdkODhiOTRlNTgwMDlmNyIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGNoYWxr
ICJeMS4xLjEiCi0gICAgaXN0YW5idWwgIl4wLjQuNSIKLSAgICBqZXN0LWVudmlyb25tZW50LWpz
ZG9tICJeMTUuMS4xIgotICAgIGplc3QtZW52aXJvbm1lbnQtbm9kZSAiXjE1LjEuMSIKLSAgICBq
ZXN0LWphc21pbmUyICJeMTUuMS4xIgotICAgIGplc3QtbW9jayAiXjE1LjAuMCIKLSAgICBqZXN0
LXJlc29sdmUgIl4xNS4wLjEiCi0gICAgamVzdC11dGlsICJeMTUuMS4xIgotICAgIGpzb24tc3Rh
YmxlLXN0cmluZ2lmeSAiXjEuMC4wIgotCi1qZXN0LWRpZmZAXjE1LjEuMDoKLSAgdmVyc2lvbiAi
MTUuMS4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9qZXN0LWRp
ZmYvLS9qZXN0LWRpZmYtMTUuMS4wLnRneiNiZGE0MGFkNzdjNmJlZWMxZTZiOGI1ZTQ2ZTNiYmFl
ZDZlODFjOWY0IgotICBkZXBlbmRlbmNpZXM6Ci0gICAgY2hhbGsgIl4xLjEuMyIKLSAgICBkaWZm
ICJeMy4wLjAiCi0gICAgamVzdC1tYXRjaGVyLXV0aWxzICJeMTUuMS4wIgotICAgIHByZXR0eS1m
b3JtYXQgIl4zLjcuMCIKLQotamVzdC1lbnZpcm9ubWVudC1qc2RvbUBeMTUuMS4xOgotICB2ZXJz
aW9uICIxNS4xLjEiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2pl
c3QtZW52aXJvbm1lbnQtanNkb20vLS9qZXN0LWVudmlyb25tZW50LWpzZG9tLTE1LjEuMS50Z3oj
ZjAzNjhjMTNlOGUwYjgxYWRhZDEyM2EwNTFiOTQyOTQzMzhiOTdlMCIKLSAgZGVwZW5kZW5jaWVz
OgotICAgIGplc3QtdXRpbCAiXjE1LjEuMSIKLSAgICBqc2RvbSAiXjkuNC4wIgotCi1qZXN0LWVu
dmlyb25tZW50LW5vZGVAXjE1LjEuMToKLSAgdmVyc2lvbiAiMTUuMS4xIgotICByZXNvbHZlZCAi
aHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9qZXN0LWVudmlyb25tZW50LW5vZGUvLS9qZXN0
LWVudmlyb25tZW50LW5vZGUtMTUuMS4xLnRneiM3YThkNDg2OGUwMjdlNWQxNjAyNjQ2OGUyNDhk
ZDU5NDZmZTQzYzA0IgotICBkZXBlbmRlbmNpZXM6Ci0gICAgamVzdC11dGlsICJeMTUuMS4xIgot
Ci1qZXN0LWZpbGUtZXhpc3RzQF4xNS4wLjA6Ci0gIHZlcnNpb24gIjE1LjAuMCIKLSAgcmVzb2x2
ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vamVzdC1maWxlLWV4aXN0cy8tL2plc3Qt
ZmlsZS1leGlzdHMtMTUuMC4wLnRneiNiN2ZlZmRkM2Y0YjIyN2NiNjg2YmIxNTZlY2M3NjYxZWU2
OTM1YTg4IgotCi1qZXN0LWhhc3RlLW1hcEBeMTUuMC4xOgotICB2ZXJzaW9uICIxNS4wLjEiCi0g
IHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2plc3QtaGFzdGUtbWFwLy0v
amVzdC1oYXN0ZS1tYXAtMTUuMC4xLnRneiMxZDFjMzQyZmE2ZjZkNjJkOWJjMmFmNzY0MjhkMmUy
MGY3NGE0NGQzIgotICBkZXBlbmRlbmNpZXM6Ci0gICAgZmItd2F0Y2htYW4gIl4xLjkuMCIKLSAg
ICBncmFjZWZ1bC1mcyAiXjQuMS42IgotICAgIG11bHRpbWF0Y2ggIl4yLjEuMCIKLSAgICB3b3Jr
ZXItZmFybSAiXjEuMy4xIgotCi1qZXN0LWphc21pbmUyQF4xNS4xLjE6Ci0gIHZlcnNpb24gIjE1
LjEuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vamVzdC1qYXNt
aW5lMi8tL2plc3QtamFzbWluZTItMTUuMS4xLnRneiNjYWM4YjAxNmFiNmNlMTZkOTViMjkxODc1
NzczYzI0OTRhMWI0NjcyIgotICBkZXBlbmRlbmNpZXM6Ci0gICAgZ3JhY2VmdWwtZnMgIl40LjEu
NiIKLSAgICBqYXNtaW5lLWNoZWNrICJeMC4xLjQiCi0gICAgamVzdC1tYXRjaGVycyAiXjE1LjEu
MSIKLSAgICBqZXN0LXNuYXBzaG90ICJeMTUuMS4xIgotICAgIGplc3QtdXRpbCAiXjE1LjEuMSIK
LQotamVzdC1tYXRjaGVyLXV0aWxzQF4xNS4xLjA6Ci0gIHZlcnNpb24gIjE1LjEuMCIKLSAgcmVz
b2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vamVzdC1tYXRjaGVyLXV0aWxzLy0v
amVzdC1tYXRjaGVyLXV0aWxzLTE1LjEuMC50Z3ojMmM1MDZhYjlmMzk2ZDI4NmFmYTc0ODcyZjJh
M2FmZTNmZjQ1NDk4NiIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGNoYWxrICJeMS4xLjMiCi0KLWpl
c3QtbWF0Y2hlcnNAXjE1LjEuMToKLSAgdmVyc2lvbiAiMTUuMS4xIgotICByZXNvbHZlZCAiaHR0
cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9qZXN0LW1hdGNoZXJzLy0vamVzdC1tYXRjaGVycy0x
NS4xLjEudGd6I2ZhZmY1MGFjYmJmOTc0MzMyM2VjMjI3MGEyNDc0M2NiNTlkNjM4ZjAiCi0gIGRl
cGVuZGVuY2llczoKLSAgICBqZXN0LWRpZmYgIl4xNS4xLjAiCi0gICAgamVzdC1tYXRjaGVyLXV0
aWxzICJeMTUuMS4wIgotICAgIGplc3QtdXRpbCAiXjE1LjEuMSIKLQotamVzdC1tb2NrQF4xNS4w
LjA6Ci0gIHZlcnNpb24gIjE1LjAuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFy
bnBrZy5jb20vamVzdC1tb2NrLy0vamVzdC1tb2NrLTE1LjAuMC50Z3ojYjY2Mzk2OTllYjBmMDIx
YWEzNjQ4ODAzNDMyZWJkOTUwZjc1ZGMwMiIKLQotamVzdC1yZXNvbHZlLWRlcGVuZGVuY2llc0Be
MTUuMC4xOgotICB2ZXJzaW9uICIxNS4wLjEiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5
Lnlhcm5wa2cuY29tL2plc3QtcmVzb2x2ZS1kZXBlbmRlbmNpZXMvLS9qZXN0LXJlc29sdmUtZGVw
ZW5kZW5jaWVzLTE1LjAuMS50Z3ojNDNlYmM2OWI3ZDgxZDJjZGM3MDQ3NGQ0YmY2MzQzMDRiMDZl
YTQxMSIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGplc3QtZmlsZS1leGlzdHMgIl4xNS4wLjAiCi0g
ICAgamVzdC1yZXNvbHZlICJeMTUuMC4xIgotCi1qZXN0LXJlc29sdmVAXjE1LjAuMToKLSAgdmVy
c2lvbiAiMTUuMC4xIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9q
ZXN0LXJlc29sdmUvLS9qZXN0LXJlc29sdmUtMTUuMC4xLnRneiMxOGEzMmQ1ZWJmYjc4ODNjMmVh
YzE2ODMwOTE3YTM3YzUxMDJmZmExIgotICBkZXBlbmRlbmNpZXM6Ci0gICAgYnJvd3Nlci1yZXNv
bHZlICJeMS4xMS4yIgotICAgIGplc3QtZmlsZS1leGlzdHMgIl4xNS4wLjAiCi0gICAgamVzdC1o
YXN0ZS1tYXAgIl4xNS4wLjEiCi0gICAgcmVzb2x2ZSAiXjEuMS42IgotCi1qZXN0LXJ1bnRpbWVA
XjE1LjEuMToKLSAgdmVyc2lvbiAiMTUuMS4xIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3Ry
eS55YXJucGtnLmNvbS9qZXN0LXJ1bnRpbWUvLS9qZXN0LXJ1bnRpbWUtMTUuMS4xLnRneiMzOTA3
YjhkNDZlNWZlMjFiNDM5NWYzZjg4NDAzMWZhZTIyMjY3MTkxIgotICBkZXBlbmRlbmNpZXM6Ci0g
ICAgYmFiZWwtY29yZSAiXjYuMTEuNCIKLSAgICBiYWJlbC1qZXN0ICJeMTUuMC4wIgotICAgIGJh
YmVsLXBsdWdpbi1pc3RhbmJ1bCAiXjIuMC4wIgotICAgIGNoYWxrICJeMS4xLjMiCi0gICAgZ3Jh
Y2VmdWwtZnMgIl40LjEuNiIKLSAgICBqZXN0LWNvbmZpZyAiXjE1LjEuMSIKLSAgICBqZXN0LWZp
bGUtZXhpc3RzICJeMTUuMC4wIgotICAgIGplc3QtaGFzdGUtbWFwICJeMTUuMC4xIgotICAgIGpl
c3QtbW9jayAiXjE1LjAuMCIKLSAgICBqZXN0LXJlc29sdmUgIl4xNS4wLjEiCi0gICAgamVzdC1z
bmFwc2hvdCAiXjE1LjEuMSIKLSAgICBqZXN0LXV0aWwgIl4xNS4xLjEiCi0gICAganNvbi1zdGFi
bGUtc3RyaW5naWZ5ICJeMS4wLjAiCi0gICAgbXVsdGltYXRjaCAiXjIuMS4wIgotICAgIHlhcmdz
ICJeNS4wLjAiCi0KLWplc3Qtc25hcHNob3RAXjE1LjEuMToKLSAgdmVyc2lvbiAiMTUuMS4xIgot
ICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9qZXN0LXNuYXBzaG90Ly0v
amVzdC1zbmFwc2hvdC0xNS4xLjEudGd6Izk1ZDBkMjcyOTUxMmQ2NGQxYTFhNDI3MjRjYTU1MWMx
ZDIwNzlhNzEiCi0gIGRlcGVuZGVuY2llczoKLSAgICBqZXN0LWRpZmYgIl4xNS4xLjAiCi0gICAg
amVzdC1maWxlLWV4aXN0cyAiXjE1LjAuMCIKLSAgICBqZXN0LXV0aWwgIl4xNS4xLjEiCi0gICAg
cHJldHR5LWZvcm1hdCAiXjMuNy4wIgotCi1qZXN0LXV0aWxAXjE1LjEuMToKLSAgdmVyc2lvbiAi
MTUuMS4xIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9qZXN0LXV0
aWwvLS9qZXN0LXV0aWwtMTUuMS4xLnRneiM1ZTE5ZWRhYjJjNTczZjk5MmM5ZDQ1YmExMThmYThk
OTBmOWQyMjBlIgotICBkZXBlbmRlbmNpZXM6Ci0gICAgY2hhbGsgIl4xLjEuMSIKLSAgICBkaWZm
ICJeMy4wLjAiCi0gICAgZ3JhY2VmdWwtZnMgIl40LjEuNiIKLSAgICBqZXN0LWZpbGUtZXhpc3Rz
ICJeMTUuMC4wIgotICAgIGplc3QtbW9jayAiXjE1LjAuMCIKLSAgICBta2RpcnAgIl4wLjUuMSIK
LQotamVzdEAxNS4xLjE6Ci0gIHZlcnNpb24gIjE1LjEuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8v
cmVnaXN0cnkueWFybnBrZy5jb20vamVzdC8tL2plc3QtMTUuMS4xLnRneiNkMDI5NzJiM2JhMjcw
NjdiNzcxM2U0NDIxOWI0NzMxYWE0ODU0MGE2IgotICBkZXBlbmRlbmNpZXM6Ci0gICAgamVzdC1j
bGkgIl4xNS4xLjEiCi0KLWpvZGlkMjU1MTlAXjEuMC4wOgotICB2ZXJzaW9uICIxLjAuMiIKLSAg
cmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vam9kaWQyNTUxOS8tL2pvZGlk
MjU1MTktMS4wLjIudGd6IzA2ZDQ5MTIyNTUwOTM0MTk0NzdkNDI1NjMzNjA2ZTBlOTA3ODI5Njci
Ci0gIGRlcGVuZGVuY2llczoKLSAgICBqc2JuICJ+MC4xLjAiCi0KLWpzLWJhc2U2NEBeMi4xLjk6
Ci0gIHZlcnNpb24gIjIuMS45IgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtn
LmNvbS9qcy1iYXNlNjQvLS9qcy1iYXNlNjQtMi4xLjkudGd6I2YwZTgwYWUwMzlhNGJkNjU0YjVm
MjgxZmM5M2YwNGE5MTRhN2ZjY2UiCi0KLWpzLXRva2Vuc0BeMS4wLjE6Ci0gIHZlcnNpb24gIjEu
MC4zIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9qcy10b2tlbnMv
LS9qcy10b2tlbnMtMS4wLjMudGd6IzE0ZTU2ZWI2OGM4ZjFhOTJjNDNkNTlmNTAxNGVjMjlkYzIw
ZjJhZTEiCi0KLWpzLXRva2Vuc0BeMi4wLjA6Ci0gIHZlcnNpb24gIjIuMC4wIgotICByZXNvbHZl
ZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9qcy10b2tlbnMvLS9qcy10b2tlbnMtMi4w
LjAudGd6Izc5OTAzZjU1NjNlZTc3OGNjMTE2MmU2ZGNmMWEwMDI3Yzk3ZjljYjUiCi0KLWpzLXlh
bWxAXjMuNS4xLCBqcy15YW1sQH4zLjYuMSwganMteWFtbEAzLng6Ci0gIHZlcnNpb24gIjMuNi4x
IgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9qcy15YW1sLy0vanMt
eWFtbC0zLjYuMS50Z3ojNmU1ZmU2N2Q4YjIwNWNlNGQyMmZhZDA1Yjc3ODFlOGRhZGNjNGIzMCIK
LSAgZGVwZW5kZW5jaWVzOgotICAgIGFyZ3BhcnNlICJeMS4wLjciCi0gICAgZXNwcmltYSAiXjIu
Ni4wIgotCi1qc2JuQH4wLjEuMDoKLSAgdmVyc2lvbiAiMC4xLjAiCi0gIHJlc29sdmVkICJodHRw
czovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2pzYm4vLS9qc2JuLTAuMS4wLnRneiM2NTA5ODdkYTBk
ZDc0ZjRlYmY1YTExMzc3YTJhYTJkMjczZTk3ZGZkIgotCi1qc2RvbUBeNy4wLjI6Ci0gIHZlcnNp
b24gIjcuMi4yIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9qc2Rv
bS8tL2pzZG9tLTcuMi4yLnRneiM0MGI0MDI3NzBjMmJkYTIzNDY5MDk2YmVlOTFhYjY3NWUzYjFm
YzZlIgotICBkZXBlbmRlbmNpZXM6Ci0gICAgYWJhYiAiXjEuMC4wIgotICAgIGFjb3JuICJeMi40
LjAiCi0gICAgYWNvcm4tZ2xvYmFscyAiXjEuMC40IgotICAgIGNzc29tICI+PSAwLjMuMCA8IDAu
NC4wIgotICAgIGNzc3N0eWxlICI+PSAwLjIuMjkgPCAwLjMuMCIKLSAgICBlc2NvZGVnZW4gIl4x
LjYuMSIKLSAgICBud21hdGNoZXIgIj49IDEuMy43IDwgMi4wLjAiCi0gICAgcGFyc2U1ICJeMS41
LjEiCi0gICAgcmVxdWVzdCAiXjIuNTUuMCIKLSAgICBzYXggIl4xLjEuNCIKLSAgICBzeW1ib2wt
dHJlZSAiPj0gMy4xLjAgPCA0LjAuMCIKLSAgICB0b3VnaC1jb29raWUgIl4yLjIuMCIKLSAgICB3
ZWJpZGwtY29udmVyc2lvbnMgIl4yLjAuMCIKLSAgICB3aGF0d2ctdXJsLWNvbXBhdCAifjAuNi41
IgotICAgIHhtbC1uYW1lLXZhbGlkYXRvciAiPj0gMi4wLjEgPCAzLjAuMCIKLQotanNkb21AXjku
NC4wOgotICB2ZXJzaW9uICI5LjYuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFy
bnBrZy5jb20vanNkb20vLS9qc2RvbS05LjYuMC50Z3ojZTBlOWIxNWJhMDdlOTBiMWQ5ZWMwODNm
OWJlZGVlMGY2ODAwYTRmYiIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGFiYWIgIl4xLjAuMCIKLSAg
ICBhY29ybiAiXjIuNC4wIgotICAgIGFjb3JuLWdsb2JhbHMgIl4xLjAuNCIKLSAgICBhcnJheS1l
cXVhbCAiXjEuMC4wIgotICAgIGNzc29tICI+PSAwLjMuMCA8IDAuNC4wIgotICAgIGNzc3N0eWxl
ICI+PSAwLjIuMzYgPCAwLjMuMCIKLSAgICBlc2NvZGVnZW4gIl4xLjYuMSIKLSAgICBpY29udi1s
aXRlICJeMC40LjEzIgotICAgIG53bWF0Y2hlciAiPj0gMS4zLjcgPCAyLjAuMCIKLSAgICBwYXJz
ZTUgIl4xLjUuMSIKLSAgICByZXF1ZXN0ICJeMi41NS4wIgotICAgIHNheCAiXjEuMS40IgotICAg
IHN5bWJvbC10cmVlICI+PSAzLjEuMCA8IDQuMC4wIgotICAgIHRvdWdoLWNvb2tpZSAiXjIuMy4x
IgotICAgIHdlYmlkbC1jb252ZXJzaW9ucyAiXjMuMC4xIgotICAgIHdoYXR3Zy11cmwgIl4zLjAu
MCIKLSAgICB4bWwtbmFtZS12YWxpZGF0b3IgIj49IDIuMC4xIDwgMy4wLjAiCi0KLWpzZXNjQF4x
LjMuMDoKLSAgdmVyc2lvbiAiMS4zLjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlh
cm5wa2cuY29tL2pzZXNjLy0vanNlc2MtMS4zLjAudGd6IzQ2YzNmZWM4YzE4OTJiMTJiMDgzM2Ri
OWJjNzYyMjE3NmRiYWIzNGIiCi0KLWpzZXNjQH4wLjUuMDoKLSAgdmVyc2lvbiAiMC41LjAiCi0g
IHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2pzZXNjLy0vanNlc2MtMC41
LjAudGd6I2U3ZGVlNjZlMzVkNmZjMTZmNzEwZmU5MWQ1Y2Y2OWY3MGYwODkxMWQiCi0KLWpzb24t
bG9hZGVyQDAuNS40OgotICB2ZXJzaW9uICIwLjUuNCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVn
aXN0cnkueWFybnBrZy5jb20vanNvbi1sb2FkZXIvLS9qc29uLWxvYWRlci0wLjUuNC50Z3ojOGJh
YTEzNjVhNjMyZjU4YTNjNDZkMjAxNzVmYzYwMDJjOTZlMzdkZSIKLQotanNvbi1zY2hlbWFAMC4y
LjM6Ci0gIHZlcnNpb24gIjAuMi4zIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJu
cGtnLmNvbS9qc29uLXNjaGVtYS8tL2pzb24tc2NoZW1hLTAuMi4zLnRneiNiNDgwYzg5MmU1OWEy
ZjA1OTU0Y2U3MjdiZDNmMmE0ZTg4MmY5ZTEzIgotCi1qc29uLXN0YWJsZS1zdHJpbmdpZnlAXjEu
MC4wLCBqc29uLXN0YWJsZS1zdHJpbmdpZnlAXjEuMC4xOgotICB2ZXJzaW9uICIxLjAuMSIKLSAg
cmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vanNvbi1zdGFibGUtc3RyaW5n
aWZ5Ly0vanNvbi1zdGFibGUtc3RyaW5naWZ5LTEuMC4xLnRneiM5YTc1OWQzOWM1ZjJmZjUwM2Zk
NTMwMDY0NmVkNDQ1Zjg4YzRmOWFmIgotICBkZXBlbmRlbmNpZXM6Ci0gICAganNvbmlmeSAifjAu
MC4wIgotCi1qc29uLXN0cmluZ2lmeS1zYWZlQH41LjAuMToKLSAgdmVyc2lvbiAiNS4wLjEiCi0g
IHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2pzb24tc3RyaW5naWZ5LXNh
ZmUvLS9qc29uLXN0cmluZ2lmeS1zYWZlLTUuMC4xLnRneiMxMjk2YTJkNThmZDQ1ZjE5YTBmNmNl
MDFkNjU3MDFlMmM3MzViNmViIgotCi1qc29uM0BeMy4zLjI6Ci0gIHZlcnNpb24gIjMuMy4yIgot
ICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9qc29uMy8tL2pzb24zLTMu
My4yLnRneiMzYzA0MzQ3NDNkZjkzZTJmNWM0MmFlZTdiMTliY2I0ODM1NzVmNGUxIgotCi1qc29u
NUBeMC40LjA6Ci0gIHZlcnNpb24gIjAuNC4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3Ry
eS55YXJucGtnLmNvbS9qc29uNS8tL2pzb241LTAuNC4wLnRneiMwNTQzNTJlNGM0YzgwYzg2YzA5
MjM4NzdkNDQ5ZGUxNzZhNzMyYzhkIgotCi1qc29uNUBeMC41LjA6Ci0gIHZlcnNpb24gIjAuNS4w
IgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9qc29uNS8tL2pzb241
LTAuNS4wLnRneiM5YjIwNzE1YjAyNmNiZTM3NzhmZDc2OWVkY2NkODIyZDgzMzJhNWIyIgotCi1q
c29uZmlsZUBeMi4xLjA6Ci0gIHZlcnNpb24gIjIuNC4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9y
ZWdpc3RyeS55YXJucGtnLmNvbS9qc29uZmlsZS8tL2pzb25maWxlLTIuNC4wLnRneiMzNzM2YTJi
NDI4Yjg3YmJkYTBjYzgzYjUzZmEzZDYzM2EzNWMyYWU4IgotICBvcHRpb25hbERlcGVuZGVuY2ll
czoKLSAgICBncmFjZWZ1bC1mcyAiXjQuMS42IgotCi1qc29uaWZ5QH4wLjAuMDoKLSAgdmVyc2lv
biAiMC4wLjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2pzb25p
ZnkvLS9qc29uaWZ5LTAuMC4wLnRneiMyYzc0YjZlZTQxZDkzY2E1MWI3YjVhYWVlOGY1MDM2MzFk
MjUyYTczIgotCi1qc29ucG9pbnRlckBeNC4wLjA6Ci0gIHZlcnNpb24gIjQuMC4wIgotICByZXNv
bHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9qc29ucG9pbnRlci8tL2pzb25wb2lu
dGVyLTQuMC4wLnRneiM2NjYxZTE2MWQyZmM0NDVmMTlmOTg0MzAyMzEzNDM3MjJlMWZjYmQ1Igot
Ci1qc3ByaW1AXjEuMi4yOgotICB2ZXJzaW9uICIxLjMuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8v
cmVnaXN0cnkueWFybnBrZy5jb20vanNwcmltLy0vanNwcmltLTEuMy4xLnRneiMyYTcyNTZmNzA0
MTJhMjllZTM2NzBhYWNhNjI1OTk0YzRkY2ZmMjUyIgotICBkZXBlbmRlbmNpZXM6Ci0gICAgZXh0
c3ByaW50ZiAiMS4wLjIiCi0gICAganNvbi1zY2hlbWEgIjAuMi4zIgotICAgIHZlcnJvciAiMS4z
LjYiCi0KLWpzeC1hc3QtdXRpbHNAXjEuMC4wLCBqc3gtYXN0LXV0aWxzQF4xLjMuMToKLSAgdmVy
c2lvbiAiMS4zLjEiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2pz
eC1hc3QtdXRpbHMvLS9qc3gtYXN0LXV0aWxzLTEuMy4xLnRneiMxNDMxM2M1YzUwZGE1YjBjNDcw
MjBhZjVkMTU2MGMxN2U3ODFhMDVhIgotICBkZXBlbmRlbmNpZXM6Ci0gICAgb2JqZWN0LWFzc2ln
biAiXjQuMS4wIgotCi1raW5kLW9mQF4zLjAuMjoKLSAgdmVyc2lvbiAiMy4wLjQiCi0gIHJlc29s
dmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2tpbmQtb2YvLS9raW5kLW9mLTMuMC40
LnRneiM3YjhlY2YxOGE0ZTE3ZjgyNjlkNzNiNTAxYzlmMjMyYzk2ODg3YTc0IgotICBkZXBlbmRl
bmNpZXM6Ci0gICAgaXMtYnVmZmVyICJeMS4wLjIiCi0KLWtsYXdAXjEuMC4wOgotICB2ZXJzaW9u
ICIxLjMuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20va2xhdy8t
L2tsYXctMS4zLjAudGd6Izg4NTdiZmJjMWQ4MjRiYWRmMTNkM2QwMjQxZDhiYmU0NmZiMTJmNzMi
Ci0KLWxhenktY2FjaGVAXjEuMC4zOgotICB2ZXJzaW9uICIxLjAuNCIKLSAgcmVzb2x2ZWQgImh0
dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vbGF6eS1jYWNoZS8tL2xhenktY2FjaGUtMS4wLjQu
dGd6I2ExZDc4ZmMzYTUwNDc0Y2I4MDg0NWQzYjNiNmUxZGE0OWE0NDZlOGUiCi0KLWxjaWRAXjEu
MC4wOgotICB2ZXJzaW9uICIxLjAuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFy
bnBrZy5jb20vbGNpZC8tL2xjaWQtMS4wLjAudGd6IzMwOGFjY2FmYTBiYzQ4M2EzODY3YjRiNmYy
Yjk1MDYyNTFkMWI4MzUiCi0gIGRlcGVuZGVuY2llczoKLSAgICBpbnZlcnQta3YgIl4xLjAuMCIK
LQotbGV2bkBeMC4zLjAsIGxldm5AfjAuMy4wOgotICB2ZXJzaW9uICIwLjMuMCIKLSAgcmVzb2x2
ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vbGV2bi8tL2xldm4tMC4zLjAudGd6IzNi
MDk5MjRlZGY5ZjA4M2MwNDkwZmRkNGMwYmM0NDIxZTA0NzY0ZWUiCi0gIGRlcGVuZGVuY2llczoK
LSAgICBwcmVsdWRlLWxzICJ+MS4xLjIiCi0gICAgdHlwZS1jaGVjayAifjAuMy4yIgotCi1sb2Fk
LWpzb24tZmlsZUBeMS4wLjA6Ci0gIHZlcnNpb24gIjEuMS4wIgotICByZXNvbHZlZCAiaHR0cHM6
Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9sb2FkLWpzb24tZmlsZS8tL2xvYWQtanNvbi1maWxlLTEu
MS4wLnRneiM5NTY5MDU3MDhkNThiNGJhYjRjMjI2MWIwNGY1OWYzMWM5OTM3NGMwIgotICBkZXBl
bmRlbmNpZXM6Ci0gICAgZ3JhY2VmdWwtZnMgIl40LjEuMiIKLSAgICBwYXJzZS1qc29uICJeMi4y
LjAiCi0gICAgcGlmeSAiXjIuMC4wIgotICAgIHBpbmtpZS1wcm9taXNlICJeMi4wLjAiCi0gICAg
c3RyaXAtYm9tICJeMi4wLjAiCi0KLWxvYWRlci11dGlsc0BeMC4yLjExLCBsb2FkZXItdXRpbHNA
XjAuMi4xNSwgbG9hZGVyLXV0aWxzQF4wLjIuMywgbG9hZGVyLXV0aWxzQF4wLjIuNywgbG9hZGVy
LXV0aWxzQH4wLjIuMiwgbG9hZGVyLXV0aWxzQH4wLjIuNSwgbG9hZGVyLXV0aWxzQDAuMi54Ogot
ICB2ZXJzaW9uICIwLjIuMTYiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cu
Y29tL2xvYWRlci11dGlscy8tL2xvYWRlci11dGlscy0wLjIuMTYudGd6I2YwODYzMjA2NmVkODI4
MjgzNWRmZjg4ZGZiNTI3MDQ3NjVhZGVlNmQiCi0gIGRlcGVuZGVuY2llczoKLSAgICBiaWcuanMg
Il4zLjEuMyIKLSAgICBlbW9qaXMtbGlzdCAiXjIuMC4wIgotICAgIGpzb241ICJeMC41LjAiCi0g
ICAgb2JqZWN0LWFzc2lnbiAiXjQuMC4xIgotCi1sb2Rhc2gtZXNAXjQuMi4xOgotICB2ZXJzaW9u
ICI0LjE2LjQiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2xvZGFz
aC1lcy8tL2xvZGFzaC1lcy00LjE2LjQudGd6IzRkYzNlMmNmMzNhOGMzNDMwMjhhYTdmN2UwNmQx
Yzk2OTcwNDI1OTkiCi0KLWxvZGFzaC5fYXJyYXljb3B5QF4zLjAuMDoKLSAgdmVyc2lvbiAiMy4w
LjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2xvZGFzaC5fYXJy
YXljb3B5Ly0vbG9kYXNoLl9hcnJheWNvcHktMy4wLjAudGd6Izc2ZTdiN2MxZjFmYjkyNTQ3Mzc0
ODc4YTU2MmVkMDZhM2U1MGY2ZTEiCi0KLWxvZGFzaC5fYXJyYXllYWNoQF4zLjAuMDoKLSAgdmVy
c2lvbiAiMy4wLjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2xv
ZGFzaC5fYXJyYXllYWNoLy0vbG9kYXNoLl9hcnJheWVhY2gtMy4wLjAudGd6I2JhYjE1NmIyYTkw
ZDNmMWJiZDVjNjUzNDAzMzQ5ZTVlNTkzM2VmOWUiCi0KLWxvZGFzaC5fYmFzZWFzc2lnbkBeMy4w
LjA6Ci0gIHZlcnNpb24gIjMuMi4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJu
cGtnLmNvbS9sb2Rhc2guX2Jhc2Vhc3NpZ24vLS9sb2Rhc2guX2Jhc2Vhc3NpZ24tMy4yLjAudGd6
IzhjMzhhMDk5NTAwZjIxNWFkMDllNTlmMTcyMmZkMGM1MmJmZTBhNGUiCi0gIGRlcGVuZGVuY2ll
czoKLSAgICBsb2Rhc2guX2Jhc2Vjb3B5ICJeMy4wLjAiCi0gICAgbG9kYXNoLmtleXMgIl4zLjAu
MCIKLQotbG9kYXNoLl9iYXNlY2xvbmVAXjMuMC4wOgotICB2ZXJzaW9uICIzLjMuMCIKLSAgcmVz
b2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vbG9kYXNoLl9iYXNlY2xvbmUvLS9s
b2Rhc2guX2Jhc2VjbG9uZS0zLjMuMC50Z3ojMzAzNTE5YmY2MzkzZmU3ZTQyZjM0ZDhiNjMwZWY3
Nzk0ZTM1NDJiNyIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGxvZGFzaC5fYXJyYXljb3B5ICJeMy4w
LjAiCi0gICAgbG9kYXNoLl9hcnJheWVhY2ggIl4zLjAuMCIKLSAgICBsb2Rhc2guX2Jhc2Vhc3Np
Z24gIl4zLjAuMCIKLSAgICBsb2Rhc2guX2Jhc2Vmb3IgIl4zLjAuMCIKLSAgICBsb2Rhc2guaXNh
cnJheSAiXjMuMC4wIgotICAgIGxvZGFzaC5rZXlzICJeMy4wLjAiCi0KLWxvZGFzaC5fYmFzZWNv
cHlAXjMuMC4wOgotICB2ZXJzaW9uICIzLjAuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0
cnkueWFybnBrZy5jb20vbG9kYXNoLl9iYXNlY29weS8tL2xvZGFzaC5fYmFzZWNvcHktMy4wLjEu
dGd6IzhkYTBlNmE4NzZjZjM0NGMwYWQ4YTU0ODgyMTExZGQzYzVjN2NhMzYiCi0KLWxvZGFzaC5f
YmFzZWZvckBeMy4wLjA6Ci0gIHZlcnNpb24gIjMuMC4zIgotICByZXNvbHZlZCAiaHR0cHM6Ly9y
ZWdpc3RyeS55YXJucGtnLmNvbS9sb2Rhc2guX2Jhc2Vmb3IvLS9sb2Rhc2guX2Jhc2Vmb3ItMy4w
LjMudGd6Izc1NTBiNGU5MjE4ZWYwOWZhZDI0MzQzYjYxMjAyMWM3OWI0YzIwYzIiCi0KLWxvZGFz
aC5fYmluZGNhbGxiYWNrQF4zLjAuMDoKLSAgdmVyc2lvbiAiMy4wLjEiCi0gIHJlc29sdmVkICJo
dHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2xvZGFzaC5fYmluZGNhbGxiYWNrLy0vbG9kYXNo
Ll9iaW5kY2FsbGJhY2stMy4wLjEudGd6I2U1MzFjMjc2NDRjZjhiNTdhOTllMTdlZDk1YjM1Yzc0
ODc4OTM5MmUiCi0KLWxvZGFzaC5fY3JlYXRlY29tcG91bmRlckBeMy4wLjA6Ci0gIHZlcnNpb24g
IjMuMC4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9sb2Rhc2gu
X2NyZWF0ZWNvbXBvdW5kZXIvLS9sb2Rhc2guX2NyZWF0ZWNvbXBvdW5kZXItMy4wLjAudGd6IzVk
ZDJjYjU1MzcyZDZlNzBlMGUyMzkyZmIyMzA0ZDY2MzEwOTEwNzUiCi0gIGRlcGVuZGVuY2llczoK
LSAgICBsb2Rhc2guZGVidXJyICJeMy4wLjAiCi0gICAgbG9kYXNoLndvcmRzICJeMy4wLjAiCi0K
LWxvZGFzaC5fZ2V0bmF0aXZlQF4zLjAuMDoKLSAgdmVyc2lvbiAiMy45LjEiCi0gIHJlc29sdmVk
ICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2xvZGFzaC5fZ2V0bmF0aXZlLy0vbG9kYXNo
Ll9nZXRuYXRpdmUtMy45LjEudGd6IzU3MGJjN2RlZGU0NmQ2MWNkY2RlNjg3ZDY1ZDNlZWNiYWEz
YWFmZjUiCi0KLWxvZGFzaC5fcm9vdEBeMy4wLjA6Ci0gIHZlcnNpb24gIjMuMC4xIgotICByZXNv
bHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9sb2Rhc2guX3Jvb3QvLS9sb2Rhc2gu
X3Jvb3QtMy4wLjEudGd6I2ZiYTFjNDUyNGMxOWVlOWE1ZjgxMzZiNDYwOWYwMTdjZjRkZWQ2OTIi
Ci0KLWxvZGFzaC5hc3NpZ25AXjQuMC4wLCBsb2Rhc2guYXNzaWduQF40LjEuMCwgbG9kYXNoLmFz
c2lnbkBeNC4yLjA6Ci0gIHZlcnNpb24gIjQuMi4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdp
c3RyeS55YXJucGtnLmNvbS9sb2Rhc2guYXNzaWduLy0vbG9kYXNoLmFzc2lnbi00LjIuMC50Z3oj
MGQ5OWYzY2NkN2E2ZDI2MWQxOWJkYWViOTI0NTAwNWQyODU4MDhlNyIKLQotbG9kYXNoLmNhbWVs
Y2FzZUBeMy4wLjE6Ci0gIHZlcnNpb24gIjMuMC4xIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdp
c3RyeS55YXJucGtnLmNvbS9sb2Rhc2guY2FtZWxjYXNlLy0vbG9kYXNoLmNhbWVsY2FzZS0zLjAu
MS50Z3ojOTMyYzhiODdmOGE0Mzc3ODk3YzY3MTk3NTMzMjgyZjk3YWVhYzI5OCIKLSAgZGVwZW5k
ZW5jaWVzOgotICAgIGxvZGFzaC5fY3JlYXRlY29tcG91bmRlciAiXjMuMC4wIgotCi1sb2Rhc2gu
Y2xvbmVkZWVwQF4zLjAuMDoKLSAgdmVyc2lvbiAiMy4wLjIiCi0gIHJlc29sdmVkICJodHRwczov
L3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2xvZGFzaC5jbG9uZWRlZXAvLS9sb2Rhc2guY2xvbmVkZWVw
LTMuMC4yLnRneiNhMGExZTQwZDgyYTVlYTg5ZmY1YjE0N2I4NDQ0ZWQ2M2Q5MjgyN2RiIgotICBk
ZXBlbmRlbmNpZXM6Ci0gICAgbG9kYXNoLl9iYXNlY2xvbmUgIl4zLjAuMCIKLSAgICBsb2Rhc2gu
X2JpbmRjYWxsYmFjayAiXjMuMC4wIgotCi1sb2Rhc2guY29uZEBeNC4zLjA6Ci0gIHZlcnNpb24g
IjQuNS4yIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9sb2Rhc2gu
Y29uZC8tL2xvZGFzaC5jb25kLTQuNS4yLnRneiNmNDcxYTFkYTQ4NmJlNjBmNmFiOTU1ZDE3MTE1
NTIzZGQxZDI1NWQ1IgotCi1sb2Rhc2guZGVidXJyQF4zLjAuMDoKLSAgdmVyc2lvbiAiMy4yLjAi
Ci0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2xvZGFzaC5kZWJ1cnIv
LS9sb2Rhc2guZGVidXJyLTMuMi4wLnRneiM2ZGE4ZjU0MzM0YTM2NmE3Y2Y0YzRjNzZlZjhkODBh
YTFiMzY1ZWQ1IgotICBkZXBlbmRlbmNpZXM6Ci0gICAgbG9kYXNoLl9yb290ICJeMy4wLjAiCi0K
LWxvZGFzaC5lbmRzd2l0aEBeNC4wLjE6Ci0gIHZlcnNpb24gIjQuMi4xIgotICByZXNvbHZlZCAi
aHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9sb2Rhc2guZW5kc3dpdGgvLS9sb2Rhc2guZW5k
c3dpdGgtNC4yLjEudGd6I2ZlZDU5YWMxNzM4ZWQzZTIzNmVkZDcwNjRlYzQ1NjQ0OGIzN2JjMDki
Ci0KLWxvZGFzaC5maW5kQF40LjMuMDoKLSAgdmVyc2lvbiAiNC42LjAiCi0gIHJlc29sdmVkICJo
dHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2xvZGFzaC5maW5kLy0vbG9kYXNoLmZpbmQtNC42
LjAudGd6I2NiMDcwNGQ0N2FiNzE3ODlmZmEwZGU4Yjk3ZGQ5MjZmYjg4YjEzYjEiCi0KLWxvZGFz
aC5maW5kaW5kZXhAXjQuMy4wOgotICB2ZXJzaW9uICI0LjYuMCIKLSAgcmVzb2x2ZWQgImh0dHBz
Oi8vcmVnaXN0cnkueWFybnBrZy5jb20vbG9kYXNoLmZpbmRpbmRleC8tL2xvZGFzaC5maW5kaW5k
ZXgtNC42LjAudGd6I2EzMjQ1ZGVlNjFmYjliNmUwNjI0YjUzNTEyNTYyNGJiNjljMTExMDYiCi0K
LWxvZGFzaC5pbmRleG9mQF40LjAuNToKLSAgdmVyc2lvbiAiNC4wLjUiCi0gIHJlc29sdmVkICJo
dHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2xvZGFzaC5pbmRleG9mLy0vbG9kYXNoLmluZGV4
b2YtNC4wLjUudGd6IzUzNzE0YWRjMmNkZGQ2ZWQ4NzYzOGY4OTNhYTliNmMyNGUzMWVmM2MiCi0K
LWxvZGFzaC5pc2FyZ3VtZW50c0BeMy4wLjA6Ci0gIHZlcnNpb24gIjMuMS4wIgotICByZXNvbHZl
ZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9sb2Rhc2guaXNhcmd1bWVudHMvLS9sb2Rh
c2guaXNhcmd1bWVudHMtMy4xLjAudGd6IzJmNTczZDg1YzZhMjQyODlmZjAwNjYzYjQ5MWMxZDMz
OGZmMzQ1OGEiCi0KLWxvZGFzaC5pc2FycmF5QF4zLjAuMDoKLSAgdmVyc2lvbiAiMy4wLjQiCi0g
IHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2xvZGFzaC5pc2FycmF5Ly0v
bG9kYXNoLmlzYXJyYXktMy4wLjQudGd6Izc5ZTRlYjg4YzM2YTgxMjJhZjg2Zjg0NGFhOWJjZDg1
MWI1ZmJiNTUiCi0KLWxvZGFzaC5rZXlzQF4zLjAuMDoKLSAgdmVyc2lvbiAiMy4xLjIiCi0gIHJl
c29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2xvZGFzaC5rZXlzLy0vbG9kYXNo
LmtleXMtMy4xLjIudGd6IzRkYmMwNDcyYjE1NmJlNTBhMGIyODY4NTVkMWJkMGIwYzY1NjA5OGEi
Ci0gIGRlcGVuZGVuY2llczoKLSAgICBsb2Rhc2guX2dldG5hdGl2ZSAiXjMuMC4wIgotICAgIGxv
ZGFzaC5pc2FyZ3VtZW50cyAiXjMuMC4wIgotICAgIGxvZGFzaC5pc2FycmF5ICJeMy4wLjAiCi0K
LWxvZGFzaC5waWNrYnlAXjQuMC4wOgotICB2ZXJzaW9uICI0LjYuMCIKLSAgcmVzb2x2ZWQgImh0
dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vbG9kYXNoLnBpY2tieS8tL2xvZGFzaC5waWNrYnkt
NC42LjAudGd6IzdkZWEyMWQ4YzE4ZDc3MDNhMjdjNzA0YzE1ZDNiODRhNjdlMzNhZmYiCi0KLWxv
ZGFzaC53b3Jkc0BeMy4wLjA6Ci0gIHZlcnNpb24gIjMuMi4wIgotICByZXNvbHZlZCAiaHR0cHM6
Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9sb2Rhc2gud29yZHMvLS9sb2Rhc2gud29yZHMtMy4yLjAu
dGd6IzRlMmE4NjQ5YmMwODc0NWIxN2M2OTViMWEzY2U4ZmVlNTk2NjIzYjMiCi0gIGRlcGVuZGVu
Y2llczoKLSAgICBsb2Rhc2guX3Jvb3QgIl4zLjAuMCIKLQotbG9kYXNoQF40LjAuMCwgbG9kYXNo
QF40LjEuMCwgbG9kYXNoQF40LjEzLjEsIGxvZGFzaEBeNC4xNC4yLCBsb2Rhc2hAXjQuMTUuMCwg
bG9kYXNoQF40LjE2LjIsIGxvZGFzaEBeNC4yLjAsIGxvZGFzaEBeNC4yLjEsIGxvZGFzaEBeNC4z
LjA6Ci0gIHZlcnNpb24gIjQuMTYuNCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFy
bnBrZy5jb20vbG9kYXNoLy0vbG9kYXNoLTQuMTYuNC50Z3ojMDFjZTMwNmI5YmFkMTMxOWYyYTU1
Mjg2NzRmODgyOTdhZWI3MDEyNyIKLQotbG9uZ2VzdEBeMS4wLjE6Ci0gIHZlcnNpb24gIjEuMC4x
IgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9sb25nZXN0Ly0vbG9u
Z2VzdC0xLjAuMS50Z3ojMzBhMGIyZGEzOGY3Mzc3MGU4Mjk0YTBkMjJlNjYyNWVkNzdkMDA5NyIK
LQotbG9vc2UtZW52aWZ5QF4xLjAuMCwgbG9vc2UtZW52aWZ5QF4xLjEuMDoKLSAgdmVyc2lvbiAi
MS4yLjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2xvb3NlLWVu
dmlmeS8tL2xvb3NlLWVudmlmeS0xLjIuMC50Z3ojNjlhNjVhYWQzZGU1NDJjZjRlZTBmNGZlNzRl
OGUzM2M3MDljY2IwZiIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGpzLXRva2VucyAiXjEuMC4xIgot
Ci1sb3dlci1jYXNlLWZpcnN0QF4xLjAuMDoKLSAgdmVyc2lvbiAiMS4wLjIiCi0gIHJlc29sdmVk
ICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2xvd2VyLWNhc2UtZmlyc3QvLS9sb3dlci1j
YXNlLWZpcnN0LTEuMC4yLnRneiNlNWRhN2MyNmYyOWE3MDczYmUwMmQ1MmJhYzk5ODBlNTkyMmFk
ZmExIgotICBkZXBlbmRlbmNpZXM6Ci0gICAgbG93ZXItY2FzZSAiXjEuMS4yIgotCi1sb3dlci1j
YXNlQF4xLjEuMCwgbG93ZXItY2FzZUBeMS4xLjEsIGxvd2VyLWNhc2VAXjEuMS4yOgotICB2ZXJz
aW9uICIxLjEuMyIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vbG93
ZXItY2FzZS8tL2xvd2VyLWNhc2UtMS4xLjMudGd6I2M5MjM5M2Q5NzY3OTNlZWU1YmE0ZWRiNTgz
Y2Y4ZWFlMzViZDliZmIiCi0KLWxydS1jYWNoZUBeNC4wLjE6Ci0gIHZlcnNpb24gIjQuMC4xIgot
ICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9scnUtY2FjaGUvLS9scnUt
Y2FjaGUtNC4wLjEudGd6IzEzNDM5NTVlZGFmMmUzN2Q5YjllN2VlNzI0MWUyN2M0YjlmYjcyYmUi
Ci0gIGRlcGVuZGVuY2llczoKLSAgICBwc2V1ZG9tYXAgIl4xLjAuMSIKLSAgICB5YWxsaXN0ICJe
Mi4wLjAiCi0KLW1hY2FkZHJlc3NAXjAuMi44OgotICB2ZXJzaW9uICIwLjIuOCIKLSAgcmVzb2x2
ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vbWFjYWRkcmVzcy8tL21hY2FkZHJlc3Mt
MC4yLjgudGd6IzU5MDRkYzUzN2MzOWVjNmRiZWZlYWU5MDIzMjcxMzVmYTg1MTFmMTIiCi0KLW1h
a2VlcnJvckAxLjAueDoKLSAgdmVyc2lvbiAiMS4wLjExIgotICByZXNvbHZlZCAiaHR0cHM6Ly9y
ZWdpc3RyeS55YXJucGtnLmNvbS9tYWtlZXJyb3IvLS9tYWtlZXJyb3ItMS4wLjExLnRneiNlMDFh
NWM5MTA5ZjJhZjc5NjYwZTRlOGI5NTg3NzkwMTg0ZjVhOTZjIgotICBkZXBlbmRlbmNpZXM6Ci0g
ICAgdG1wbCAiMS4wLngiCi0KLW1hcmtlZC10ZXJtaW5hbEBeMS42LjI6Ci0gIHZlcnNpb24gIjEu
Ni4yIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9tYXJrZWQtdGVy
bWluYWwvLS9tYXJrZWQtdGVybWluYWwtMS42LjIudGd6IzQ0YzEyOGQ2OWI1ZDk3NzZjODQ4MzE0
Y2RmNjlkNGVjOTYzMjI5NzMiCi0gIGRlcGVuZGVuY2llczoKLSAgICBjYXJkaW5hbCAiXjEuMC4w
IgotICAgIGNoYWxrICJeMS4wLjAiCi0gICAgY2xpLXRhYmxlICJeMC4zLjEiCi0gICAgbG9kYXNo
LmFzc2lnbiAiXjQuMi4wIgotICAgIG5vZGUtZW1vamkgIl4xLjMuMSIKLQotbWFya2VkQF4wLjMu
NjoKLSAgdmVyc2lvbiAiMC4zLjYiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5w
a2cuY29tL21hcmtlZC8tL21hcmtlZC0wLjMuNi50Z3ojYjJjNmM2MThmY2NlY2U0ZWY4NmM0ZmM2
Y2I4YTdjYmY1YWVkYThkNyIKLQotbWF0aC1leHByZXNzaW9uLWV2YWx1YXRvckBeMS4yLjE0Ogot
ICB2ZXJzaW9uICIxLjIuMTQiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cu
Y29tL21hdGgtZXhwcmVzc2lvbi1ldmFsdWF0b3IvLS9tYXRoLWV4cHJlc3Npb24tZXZhbHVhdG9y
LTEuMi4xNC50Z3ojMzk1MTE3NzFlZDk2MDI0MDVmYmE5YWZmZmYxN2ViNGQyYTM4NDNhYiIKLSAg
ZGVwZW5kZW5jaWVzOgotICAgIGxvZGFzaC5pbmRleG9mICJeNC4wLjUiCi0KLW1lZGlhLXR5cGVy
QDAuMy4wOgotICB2ZXJzaW9uICIwLjMuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnku
eWFybnBrZy5jb20vbWVkaWEtdHlwZXIvLS9tZWRpYS10eXBlci0wLjMuMC50Z3ojODcxMGQ3YWYw
YWE2MjZmOGZmZmExY2UwMDE2ODU0NTI2MzI1NTc0OCIKLQotbWVtb3J5LWZzQF4wLjIuMDoKLSAg
dmVyc2lvbiAiMC4yLjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29t
L21lbW9yeS1mcy8tL21lbW9yeS1mcy0wLjIuMC50Z3ojZjJiYjI1MzY4YmMxMjFlMzkxYzI1MjBk
ZTkyOTY5Y2FlZTBhMDI5MCIKLQotbWVtb3J5LWZzQH4wLjMuMDoKLSAgdmVyc2lvbiAiMC4zLjAi
Ci0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL21lbW9yeS1mcy8tL21l
bW9yeS1mcy0wLjMuMC50Z3ojN2JjYzZiNjI5ZTNhNDNlODcxZDdlMjlhY2E2YWU4YTdmMTVjYmIy
MCIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGVycm5vICJeMC4xLjMiCi0gICAgcmVhZGFibGUtc3Ry
ZWFtICJeMi4wLjEiCi0KLW1lcmdlLWRlc2NyaXB0b3JzQDEuMC4xOgotICB2ZXJzaW9uICIxLjAu
MSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vbWVyZ2UtZGVzY3Jp
cHRvcnMvLS9tZXJnZS1kZXNjcmlwdG9ycy0xLjAuMS50Z3ojYjAwYWFhNTU2ZGQ4YjQ0NTY4MTUw
ZWM5ZDFiOTUzZjNmOTBjYmI2MSIKLQotbWVyZ2VAXjEuMS4zOgotICB2ZXJzaW9uICIxLjIuMCIK
LSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vbWVyZ2UvLS9tZXJnZS0x
LjIuMC50Z3ojNzUzMWUzOWQ0OTQ5YzI4MWE2NmI4YzVhNmUwMjY1ZThiMDU4OTRkYSIKLQotbWV0
aG9kc0B+MS4xLjI6Ci0gIHZlcnNpb24gIjEuMS4yIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdp
c3RyeS55YXJucGtnLmNvbS9tZXRob2RzLy0vbWV0aG9kcy0xLjEuMi50Z3ojNTUyOWE0ZDY3NjU0
MTM0ZWRjYzUyNjY2NTY4MzViMGY4NTFhZmNlZSIKLQotbWljcm9tYXRjaEBeMi4xLjUsIG1pY3Jv
bWF0Y2hAXjIuMy4xMToKLSAgdmVyc2lvbiAiMi4zLjExIgotICByZXNvbHZlZCAiaHR0cHM6Ly9y
ZWdpc3RyeS55YXJucGtnLmNvbS9taWNyb21hdGNoLy0vbWljcm9tYXRjaC0yLjMuMTEudGd6Izg2
Njc3Yzk3ZDE3MjBiMzYzNDMxZDA0ZDBkMTUyOTNiZDM4YzE1NjUiCi0gIGRlcGVuZGVuY2llczoK
LSAgICBhcnItZGlmZiAiXjIuMC4wIgotICAgIGFycmF5LXVuaXF1ZSAiXjAuMi4xIgotICAgIGJy
YWNlcyAiXjEuOC4yIgotICAgIGV4cGFuZC1icmFja2V0cyAiXjAuMS40IgotICAgIGV4dGdsb2Ig
Il4wLjMuMSIKLSAgICBmaWxlbmFtZS1yZWdleCAiXjIuMC4wIgotICAgIGlzLWV4dGdsb2IgIl4x
LjAuMCIKLSAgICBpcy1nbG9iICJeMi4wLjEiCi0gICAga2luZC1vZiAiXjMuMC4yIgotICAgIG5v
cm1hbGl6ZS1wYXRoICJeMi4wLjEiCi0gICAgb2JqZWN0Lm9taXQgIl4yLjAuMCIKLSAgICBwYXJz
ZS1nbG9iICJeMy4wLjQiCi0gICAgcmVnZXgtY2FjaGUgIl4wLjQuMiIKLQotIm1pbWUtZGJAPj0g
MS4yMy4wIDwgMiIsIG1pbWUtZGJAfjEuMjQuMDoKLSAgdmVyc2lvbiAiMS4yNC4wIgotICByZXNv
bHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9taW1lLWRiLy0vbWltZS1kYi0xLjI0
LjAudGd6I2UyZDEzZjkzOWYwMDE2YzZlNGU5YWQyNWE4NjUyZjEyNmM0NjdmMGMiCi0KLW1pbWUt
dHlwZXNAXjIuMS4xMSwgbWltZS10eXBlc0B+Mi4xLjExLCBtaW1lLXR5cGVzQH4yLjEuNzoKLSAg
dmVyc2lvbiAiMi4xLjEyIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNv
bS9taW1lLXR5cGVzLy0vbWltZS10eXBlcy0yLjEuMTIudGd6IzE1MmJhMjU2Nzc3MDIwZGQ0NjYz
ZjU0YzJlN2JjMjYzODFlNzE3MjkiCi0gIGRlcGVuZGVuY2llczoKLSAgICBtaW1lLWRiICJ+MS4y
NC4wIgotCi1taW1lQF4xLjMuNCwgbWltZUAxLjMuNDoKLSAgdmVyc2lvbiAiMS4zLjQiCi0gIHJl
c29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL21pbWUvLS9taW1lLTEuMy40LnRn
eiMxMTVmOWUzYjZiM2RhZjI5NTk5ODNjYjM4ZjE0OWEyZDQwZWI1ZDUzIgotCi1taW1lQDEuMi54
OgotICB2ZXJzaW9uICIxLjIuMTEiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5w
a2cuY29tL21pbWUvLS9taW1lLTEuMi4xMS50Z3ojNTgyMDNlZWQ4NmUzYTVlZjE3YWVkMmI3ZDll
YmQ0N2YwYTYwZGQxMCIKLQotbWluaW1hdGNoQF4zLjAuMCwgbWluaW1hdGNoQF4zLjAuMiwgIm1p
bmltYXRjaEAyIHx8IDMiOgotICB2ZXJzaW9uICIzLjAuMyIKLSAgcmVzb2x2ZWQgImh0dHBzOi8v
cmVnaXN0cnkueWFybnBrZy5jb20vbWluaW1hdGNoLy0vbWluaW1hdGNoLTMuMC4zLnRneiMyYTRl
NDA5MGI5NmIyZGIwNmE5ZDdkZjAxMDU1YTYyYTc3YzliNzc0IgotICBkZXBlbmRlbmNpZXM6Ci0g
ICAgYnJhY2UtZXhwYW5zaW9uICJeMS4wLjAiCi0KLW1pbmltYXRjaEAyLng6Ci0gIHZlcnNpb24g
IjIuMC4xMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vbWluaW1h
dGNoLy0vbWluaW1hdGNoLTIuMC4xMC50Z3ojOGQwODdjMzljNmIzOGMwMDFiOTdmY2E3Y2U2ZDBl
MWU4MGFmYmFjNyIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGJyYWNlLWV4cGFuc2lvbiAiXjEuMC4w
IgotCi1taW5pbWF0Y2hAMy4wLjI6Ci0gIHZlcnNpb24gIjMuMC4yIgotICByZXNvbHZlZCAiaHR0
cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9taW5pbWF0Y2gvLS9taW5pbWF0Y2gtMy4wLjIudGd6
IzBmMzk4YTczMDBlYTQ0MWU5YzM0OGM4M2Q5OGFiOGM5ZGJmOWM0MGEiCi0gIGRlcGVuZGVuY2ll
czoKLSAgICBicmFjZS1leHBhbnNpb24gIl4xLjAuMCIKLQotbWluaW1pc3RAXjEuMS4wLCBtaW5p
bWlzdEBeMS4xLjEsIG1pbmltaXN0QF4xLjIuMDoKLSAgdmVyc2lvbiAiMS4yLjAiCi0gIHJlc29s
dmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL21pbmltaXN0Ly0vbWluaW1pc3QtMS4y
LjAudGd6I2EzNTAwOGIyMGY0MTM4M2VlYzFmYjkxNGY0Y2Q1ZGY3OWEyNjQyODQiCi0KLW1pbmlt
aXN0QH4wLjAuMToKLSAgdmVyc2lvbiAiMC4wLjEwIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdp
c3RyeS55YXJucGtnLmNvbS9taW5pbWlzdC8tL21pbmltaXN0LTAuMC4xMC50Z3ojZGUzZjk4NTQz
ZGJmOTYwODJiZTQ4YWQxYTBjN2NkYTgzNjMwMWRjZiIKLQotbWluaW1pc3RAMC4wLjg6Ci0gIHZl
cnNpb24gIjAuMC44IgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9t
aW5pbWlzdC8tL21pbmltaXN0LTAuMC44LnRneiM4NTdmY2FiZmMzMzk3ZDI2MjViODIyODI2MmU4
NmFhN2EwMTFiMDVkIgotCi1ta2RpcnBAXjAuNS4wLCBta2RpcnBAXjAuNS4xLCAibWtkaXJwQD49
MC41IDAiLCBta2RpcnBAfjAuNS4wLCBta2RpcnBAfjAuNS4xLCBta2RpcnBAMC41Lng6Ci0gIHZl
cnNpb24gIjAuNS4xIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9t
a2RpcnAvLS9ta2RpcnAtMC41LjEudGd6IzMwMDU3NDM4ZWFjNmNmN2Y4YzQ3NjdmMzg2NDhkNjY5
N2Q3NWM5MDMiCi0gIGRlcGVuZGVuY2llczoKLSAgICBtaW5pbWlzdCAiMC4wLjgiCi0KLW1zQDAu
Ny4xOgotICB2ZXJzaW9uICIwLjcuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFy
bnBrZy5jb20vbXMvLS9tcy0wLjcuMS50Z3ojOWNkMTNjMDNhZGJmZjI1YjY1ZWZmZGU3Y2U4NjRl
ZTk1MjAxNzA5OCIKLQotbXVsdGltYXRjaEBeMi4xLjA6Ci0gIHZlcnNpb24gIjIuMS4wIgotICBy
ZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9tdWx0aW1hdGNoLy0vbXVsdGlt
YXRjaC0yLjEuMC50Z3ojOWM3OTA2YTIyZmI0YzAyOTE5ZTJmNWY3NTE2MWI0Y2RiZDRiMmEyYiIK
LSAgZGVwZW5kZW5jaWVzOgotICAgIGFycmF5LWRpZmZlciAiXjEuMC4wIgotICAgIGFycmF5LXVu
aW9uICJeMS4wLjEiCi0gICAgYXJyaWZ5ICJeMS4wLjAiCi0gICAgbWluaW1hdGNoICJeMy4wLjAi
Ci0KLW11dGUtc3RyZWFtQDAuMC41OgotICB2ZXJzaW9uICIwLjAuNSIKLSAgcmVzb2x2ZWQgImh0
dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vbXV0ZS1zdHJlYW0vLS9tdXRlLXN0cmVhbS0wLjAu
NS50Z3ojOGZiZmFiYjBhOThhMjUzZDMxODQzMzFmOWU4ZGViNzM3MmZhYzZjMCIKLQotbmFuQF4y
LjMuMDoKLSAgdmVyc2lvbiAiMi40LjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlh
cm5wa2cuY29tL25hbi8tL25hbi0yLjQuMC50Z3ojZmIzYzU5ZDQ1ZmU0ZWZmZTIxNWYwYjg5MGY4
YWRmNmViMzJkMjIzMiIKLQotbmF0dXJhbC1jb21wYXJlQF4xLjQuMDoKLSAgdmVyc2lvbiAiMS40
LjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL25hdHVyYWwtY29t
cGFyZS8tL25hdHVyYWwtY29tcGFyZS0xLjQuMC50Z3ojNGFiZWJmZWVkNzU0MWYyYzI3YWNmYjI5
YmRiYmQxNWM4ZDViYTRmNyIKLQotbmNuYW1lQDEuMC54OgotICB2ZXJzaW9uICIxLjAuMCIKLSAg
cmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vbmNuYW1lLy0vbmNuYW1lLTEu
MC4wLnRneiM1YjU3YWQxOGIxY2EwOTI4NjRlZjYyYjBiMWVkODE5NGYzODNiNzFjIgotICBkZXBl
bmRlbmNpZXM6Ci0gICAgeG1sLWNoYXItY2xhc3NlcyAiXjEuMC4wIgotCi1uZWdvdGlhdG9yQDAu
Ni4xOgotICB2ZXJzaW9uICIwLjYuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFy
bnBrZy5jb20vbmVnb3RpYXRvci8tL25lZ290aWF0b3ItMC42LjEudGd6IzJiMzI3MTg0ZTg5OTIx
MDExNzdiMjg1NjNmYjVlNzEwMmFjZDBjYTkiCi0KLW5vLWNhc2VAXjIuMi4wOgotICB2ZXJzaW9u
ICIyLjMuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vbm8tY2Fz
ZS8tL25vLWNhc2UtMi4zLjAudGd6I2NhMjgyNWNjYjc2YjE4ZTZmNzlkNTczZGNmYmYxZWFjZTMz
ZGQxNjQiCi0gIGRlcGVuZGVuY2llczoKLSAgICBsb3dlci1jYXNlICJeMS4xLjEiCi0KLW5vZGUt
ZW1vamlAXjEuMy4xOgotICB2ZXJzaW9uICIxLjQuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVn
aXN0cnkueWFybnBrZy5jb20vbm9kZS1lbW9qaS8tL25vZGUtZW1vamktMS40LjEudGd6I2M5ZmEw
Y2Y5MTA5NDMzNWJjYjk2N2E2ZjQyYjIzMDVjMTVhZjJlYmMiCi0gIGRlcGVuZGVuY2llczoKLSAg
ICBzdHJpbmcucHJvdG90eXBlLmNvZGVwb2ludGF0ICJeMC4yLjAiCi0KLW5vZGUtZmV0Y2hAXjEu
MC4xOgotICB2ZXJzaW9uICIxLjYuMyIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFy
bnBrZy5jb20vbm9kZS1mZXRjaC8tL25vZGUtZmV0Y2gtMS42LjMudGd6I2RjMjM0ZWRkNjQ4OTk4
MmQ1OGU4ZjBkYjRmNjk1MDI5YWJjZDhjMDQiCi0gIGRlcGVuZGVuY2llczoKLSAgICBlbmNvZGlu
ZyAiXjAuMS4xMSIKLSAgICBpcy1zdHJlYW0gIl4xLjAuMSIKLQotbm9kZS1pbnQ2NEBeMC40LjA6
Ci0gIHZlcnNpb24gIjAuNC4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtn
LmNvbS9ub2RlLWludDY0Ly0vbm9kZS1pbnQ2NC0wLjQuMC50Z3ojODdhOTA2NWNkYjM1NWQzMTgy
ZDhmOTRjZTExMTg4YjgyNWM2OGEzYiIKLQotbm9kZS1saWJzLWJyb3dzZXJAXjAuNi4wOgotICB2
ZXJzaW9uICIwLjYuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20v
bm9kZS1saWJzLWJyb3dzZXIvLS9ub2RlLWxpYnMtYnJvd3Nlci0wLjYuMC50Z3ojMjQ0ODA2ZDQ0
ZDMxOWUwNDhiYzg2MDdiNWNjNGVhZjlhMjlkMmUzYyIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGFz
c2VydCAiXjEuMS4xIgotICAgIGJyb3dzZXJpZnktemxpYiAifjAuMS40IgotICAgIGJ1ZmZlciAi
XjQuOS4wIgotICAgIGNvbnNvbGUtYnJvd3NlcmlmeSAiXjEuMS4wIgotICAgIGNvbnN0YW50cy1i
cm93c2VyaWZ5ICIwLjAuMSIKLSAgICBjcnlwdG8tYnJvd3NlcmlmeSAifjMuMi42IgotICAgIGRv
bWFpbi1icm93c2VyICJeMS4xLjEiCi0gICAgZXZlbnRzICJeMS4wLjAiCi0gICAgaHR0cC1icm93
c2VyaWZ5ICJeMS4zLjIiCi0gICAgaHR0cHMtYnJvd3NlcmlmeSAiMC4wLjAiCi0gICAgb3MtYnJv
d3NlcmlmeSAifjAuMS4yIgotICAgIHBhdGgtYnJvd3NlcmlmeSAiMC4wLjAiCi0gICAgcHJvY2Vz
cyAiXjAuMTEuMCIKLSAgICBwdW55Y29kZSAiXjEuMi40IgotICAgIHF1ZXJ5c3RyaW5nLWVzMyAi
fjAuMi4wIgotICAgIHJlYWRhYmxlLXN0cmVhbSAiXjEuMS4xMyIKLSAgICBzdHJlYW0tYnJvd3Nl
cmlmeSAiXjEuMC4wIgotICAgIHN0cmluZ19kZWNvZGVyICJ+MC4xMC4yNSIKLSAgICB0aW1lcnMt
YnJvd3NlcmlmeSAiXjEuMC4xIgotICAgIHR0eS1icm93c2VyaWZ5ICIwLjAuMCIKLSAgICB1cmwg
In4wLjEwLjEiCi0gICAgdXRpbCAifjAuMTAuMyIKLSAgICB2bS1icm93c2VyaWZ5ICIwLjAuNCIK
LQotbm9kZS1ub3RpZmllckBeNC42LjE6Ci0gIHZlcnNpb24gIjQuNi4xIgotICByZXNvbHZlZCAi
aHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9ub2RlLW5vdGlmaWVyLy0vbm9kZS1ub3RpZmll
ci00LjYuMS50Z3ojMDU2ZDE0MjQ0ZjNkY2MxY2VhZGZlNjhhZjljZmYwYzU0NzNhMzNmMyIKLSAg
ZGVwZW5kZW5jaWVzOgotICAgIGNsaS11c2FnZSAiXjAuMS4xIgotICAgIGdyb3dseSAiXjEuMi4w
IgotICAgIGxvZGFzaC5jbG9uZWRlZXAgIl4zLjAuMCIKLSAgICBtaW5pbWlzdCAiXjEuMS4xIgot
ICAgIHNlbXZlciAiXjUuMS4wIgotICAgIHNoZWxsd29yZHMgIl4wLjEuMCIKLSAgICB3aGljaCAi
XjEuMC41IgotCi1ub2RlLXByZS1neXBAXjAuNi4yOToKLSAgdmVyc2lvbiAiMC42LjMwIgotICBy
ZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9ub2RlLXByZS1neXAvLS9ub2Rl
LXByZS1neXAtMC42LjMwLnRneiM2NGQzMDczYTZmNTczMDAzNzE3Y2NmZTMwYzg5MDIzMjk3YmFi
YmExIgotICBkZXBlbmRlbmNpZXM6Ci0gICAgbWtkaXJwICJ+MC41LjAiCi0gICAgbm9wdCAifjMu
MC4xIgotICAgIG5wbWxvZyAiNC54IgotICAgIHJjICJ+MS4xLjAiCi0gICAgcmVxdWVzdCAiMi54
IgotICAgIHJpbXJhZiAifjIuNS4wIgotICAgIHNlbXZlciAifjUuMy4wIgotICAgIHRhciAifjIu
Mi4wIgotICAgIHRhci1wYWNrICJ+My4xLjAiCi0KLW5vZGUtdXVpZEB+MS40Ljc6Ci0gIHZlcnNp
b24gIjEuNC43IgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9ub2Rl
LXV1aWQvLS9ub2RlLXV1aWQtMS40LjcudGd6IzZkYTVhMTc2NjhjNGIzZGQ1OTYyM2JkYTExY2Y3
ZmE0YzFmNjBhNmYiCi0KLW5vcHRAfjMuMC4xLCBub3B0QDMueDoKLSAgdmVyc2lvbiAiMy4wLjYi
Ci0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL25vcHQvLS9ub3B0LTMu
MC42LnRneiNjNjQ2NWRiZjA4YWJjZDRkYjM1OTMxN2Y3OWFjNjhhNjQ2YjI4ZmY5IgotICBkZXBl
bmRlbmNpZXM6Ci0gICAgYWJicmV2ICIxIgotCi1ub3JtYWxpemUtcGFja2FnZS1kYXRhQF4yLjMu
MjoKLSAgdmVyc2lvbiAiMi4zLjUiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5w
a2cuY29tL25vcm1hbGl6ZS1wYWNrYWdlLWRhdGEvLS9ub3JtYWxpemUtcGFja2FnZS1kYXRhLTIu
My41LnRneiM4ZDkyNGYxNDI5NjBlMTc3N2U3ZmZlMTcwNTQzNjMxY2M3Y2IwMmRmIgotICBkZXBl
bmRlbmNpZXM6Ci0gICAgaG9zdGVkLWdpdC1pbmZvICJeMi4xLjQiCi0gICAgaXMtYnVpbHRpbi1t
b2R1bGUgIl4xLjAuMCIKLSAgICBzZW12ZXIgIjIgfHwgMyB8fCA0IHx8IDUiCi0gICAgdmFsaWRh
dGUtbnBtLXBhY2thZ2UtbGljZW5zZSAiXjMuMC4xIgotCi1ub3JtYWxpemUtcGF0aEBeMi4wLjE6
Ci0gIHZlcnNpb24gIjIuMC4xIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtn
LmNvbS9ub3JtYWxpemUtcGF0aC8tL25vcm1hbGl6ZS1wYXRoLTIuMC4xLnRneiM0Nzg4NmFjMTY2
Mjc2MGQ0MjYxYjdkOTc5ZDI0MTcwOWQzY2UzZjdhIgotCi1ub3JtYWxpemUtcmFuZ2VAXjAuMS4y
OgotICB2ZXJzaW9uICIwLjEuMiIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBr
Zy5jb20vbm9ybWFsaXplLXJhbmdlLy0vbm9ybWFsaXplLXJhbmdlLTAuMS4yLnRneiMyZDEwYzA2
YmRmZDMxMmVhOTc3NzY5NWE0ZDI4NDM5NDU2Yjc1OTQyIgotCi1ub3JtYWxpemUtdXJsQF4xLjQu
MDoKLSAgdmVyc2lvbiAiMS42LjEiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5w
a2cuY29tL25vcm1hbGl6ZS11cmwvLS9ub3JtYWxpemUtdXJsLTEuNi4xLnRneiNhOWYyNTRmYTA2
NWJiYzI5MzQ0NjFjMGMwOTQyMzgxNTk3NjE1NWEyIgotICBkZXBlbmRlbmNpZXM6Ci0gICAgb2Jq
ZWN0LWFzc2lnbiAiXjQuMC4xIgotICAgIHByZXBlbmQtaHR0cCAiXjEuMC4wIgotICAgIHF1ZXJ5
LXN0cmluZyAiXjQuMS4wIgotICAgIHNvcnQta2V5cyAiXjEuMC4wIgotCi1ucG1sb2dANC54Ogot
ICB2ZXJzaW9uICI0LjAuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5j
b20vbnBtbG9nLy0vbnBtbG9nLTQuMC4wLnRneiNlMDk0NTAzOTYxYzcwYzE3NzRlYjc2NjkyMDgw
ZThkNTc4YTlmODhmIgotICBkZXBlbmRlbmNpZXM6Ci0gICAgYXJlLXdlLXRoZXJlLXlldCAifjEu
MS4yIgotICAgIGNvbnNvbGUtY29udHJvbC1zdHJpbmdzICJ+MS4xLjAiCi0gICAgZ2F1Z2UgIn4y
LjYuMCIKLSAgICBzZXQtYmxvY2tpbmcgIn4yLjAuMCIKLQotbnRoLWNoZWNrQH4xLjAuMToKLSAg
dmVyc2lvbiAiMS4wLjEiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29t
L250aC1jaGVjay8tL250aC1jaGVjay0xLjAuMS50Z3ojOTkyOWFjZGY2MjhmYzJjNDEwOThkZWFi
ODJhYzU4MGNmMTQ5YWFlNCIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGJvb2xiYXNlICJ+MS4wLjAi
Ci0KLW51bTJmcmFjdGlvbkBeMS4yLjI6Ci0gIHZlcnNpb24gIjEuMi4yIgotICByZXNvbHZlZCAi
aHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9udW0yZnJhY3Rpb24vLS9udW0yZnJhY3Rpb24t
MS4yLjIudGd6IzZmNjgyYjZhMDI3YTRlOWRkZmE0NTY0Y2QyNTg5ZDFkNGU2NjllZGUiCi0KLW51
bWJlci1pcy1uYW5AXjEuMC4wOgotICB2ZXJzaW9uICIxLjAuMSIKLSAgcmVzb2x2ZWQgImh0dHBz
Oi8vcmVnaXN0cnkueWFybnBrZy5jb20vbnVtYmVyLWlzLW5hbi8tL251bWJlci1pcy1uYW4tMS4w
LjEudGd6IzA5N2I2MDJiNTM0MjJhNTIyYzFhZmI4NzkwMzE4MzM2OTQxYTAxMWQiCi0KLSJud21h
dGNoZXJAPj0gMS4zLjcgPCAyLjAuMCI6Ci0gIHZlcnNpb24gIjEuMy44IgotICByZXNvbHZlZCAi
aHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9ud21hdGNoZXIvLS9ud21hdGNoZXItMS4zLjgu
dGd6IzM0ZWRiOTNkZTFhYTZjYjQ0NDhiNTczYzlmMmEwNTkzMDAyNDExNTciCi0KLW9hdXRoLXNp
Z25AfjAuOC4xOgotICB2ZXJzaW9uICIwLjguMiIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0
cnkueWFybnBrZy5jb20vb2F1dGgtc2lnbi8tL29hdXRoLXNpZ24tMC44LjIudGd6IzQ2YTZhYjdm
MGFlYWQ4ZGVhZTllYzA1NjU3ODBiN2Q0ZWZlYjlkNDMiCi0KLW9iamVjdC1hc3NpZ25AXjQuMC4x
LCBvYmplY3QtYXNzaWduQF40LjEuMCwgb2JqZWN0LWFzc2lnbkA0LjEuMDoKLSAgdmVyc2lvbiAi
NC4xLjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL29iamVjdC1h
c3NpZ24vLS9vYmplY3QtYXNzaWduLTQuMS4wLnRneiM3YTNiM2QwZTk4MDYzZDQzZjRjMDNmMmU4
YWU2Y2Q1MWE4Njg4M2EwIgotCi1vYmplY3QtaXNAXjEuMC4xOgotICB2ZXJzaW9uICIxLjAuMSIK
LSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vb2JqZWN0LWlzLy0vb2Jq
ZWN0LWlzLTEuMC4xLnRneiMwYWE2MGVjOTk4OWEwYjNlZDc5NWNmNGQwNmY2MmNmMWFkNjUzOWI2
IgotCi1vYmplY3Qta2V5c0BeMS4wLjEwLCBvYmplY3Qta2V5c0BeMS4wLjg6Ci0gIHZlcnNpb24g
IjEuMC4xMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vb2JqZWN0
LWtleXMvLS9vYmplY3Qta2V5cy0xLjAuMTEudGd6I2M1NDYwMTc3OGFkNTYwZjExNDJjZTBlMDFi
Y2NhOGI1NmQxMzQyNmQiCi0KLW9iamVjdC5hc3NpZ25AXjQuMC4zOgotICB2ZXJzaW9uICI0LjAu
NCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vb2JqZWN0LmFzc2ln
bi8tL29iamVjdC5hc3NpZ24tNC4wLjQudGd6I2IxYzljYzA0NGVmMWI5ZmU2MzYwNmZjMTQxYWJi
YjMyZTE0NzMwY2MiCi0gIGRlcGVuZGVuY2llczoKLSAgICBkZWZpbmUtcHJvcGVydGllcyAiXjEu
MS4yIgotICAgIGZ1bmN0aW9uLWJpbmQgIl4xLjEuMCIKLSAgICBvYmplY3Qta2V5cyAiXjEuMC4x
MCIKLQotb2JqZWN0Lm9taXRAXjIuMC4wOgotICB2ZXJzaW9uICIyLjAuMCIKLSAgcmVzb2x2ZWQg
Imh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vb2JqZWN0Lm9taXQvLS9vYmplY3Qub21pdC0y
LjAuMC50Z3ojODY4NTk3MzMzZDU0ZTYwNjYyOTQwYmI0NTg2MDVkZDZhZTEyZmU5NCIKLSAgZGVw
ZW5kZW5jaWVzOgotICAgIGZvci1vd24gIl4wLjEuMyIKLSAgICBpcy1leHRlbmRhYmxlICJeMC4x
LjEiCi0KLW9iamVjdC52YWx1ZXNAXjEuMC4zOgotICB2ZXJzaW9uICIxLjAuMyIKLSAgcmVzb2x2
ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vb2JqZWN0LnZhbHVlcy8tL29iamVjdC52
YWx1ZXMtMS4wLjMudGd6I2E3Nzc0YmEwNTA4OTNmZTZhNWQ1OTU4YWNkMDU4MjNlMGY0MjZiZWYi
Ci0gIGRlcGVuZGVuY2llczoKLSAgICBkZWZpbmUtcHJvcGVydGllcyAiXjEuMS4xIgotICAgIGVz
LWFic3RyYWN0ICJeMS4zLjIiCi0gICAgZnVuY3Rpb24tYmluZCAiXjEuMC4yIgotICAgIGhhcyAi
XjEuMC4xIgotCi1vbi1maW5pc2hlZEB+Mi4zLjA6Ci0gIHZlcnNpb24gIjIuMy4wIgotICByZXNv
bHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9vbi1maW5pc2hlZC8tL29uLWZpbmlz
aGVkLTIuMy4wLnRneiMyMGYxMzM2NDgxYjA4M2NkNzUzMzc5OTJhMTY5NzFhYTJkOTA2OTQ3Igot
ICBkZXBlbmRlbmNpZXM6Ci0gICAgZWUtZmlyc3QgIjEuMS4xIgotCi1vbi1oZWFkZXJzQH4xLjAu
MToKLSAgdmVyc2lvbiAiMS4wLjEiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5w
a2cuY29tL29uLWhlYWRlcnMvLS9vbi1oZWFkZXJzLTEuMC4xLnRneiM5MjhmNWQwZjQ3MGQ0OTM0
MjY1MWVhNjc5NGIwODU3YzEwMDY5M2Y3IgotCi1vbmNlQF4xLjMuMCwgb25jZUAxLng6Ci0gIHZl
cnNpb24gIjEuNC4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9v
bmNlLy0vb25jZS0xLjQuMC50Z3ojNTgzYjFhYTc3NTk2MWQ0YjExM2FjMTdkOWM1MGJhZWY5ZGQ3
NmJkMSIKLSAgZGVwZW5kZW5jaWVzOgotICAgIHdyYXBweSAiMSIKLQotb25jZUB+MS4zLjM6Ci0g
IHZlcnNpb24gIjEuMy4zIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNv
bS9vbmNlLy0vb25jZS0xLjMuMy50Z3ojYjJlMjYxNTU3Y2U0YzMxNGVjODMwNGYzZmE4MjY2M2U0
Mjk3Y2EyMCIKLSAgZGVwZW5kZW5jaWVzOgotICAgIHdyYXBweSAiMSIKLQotb25ldGltZUBeMS4w
LjA6Ci0gIHZlcnNpb24gIjEuMS4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJu
cGtnLmNvbS9vbmV0aW1lLy0vb25ldGltZS0xLjEuMC50Z3ojYTFmNzgzOGY4MzE0YzUxNmYwNWVj
ZWZjYmM0Y2NmZTA0YjRlZDc4OSIKLQotb3BlbkAwLjAuNToKLSAgdmVyc2lvbiAiMC4wLjUiCi0g
IHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL29wZW4vLS9vcGVuLTAuMC41
LnRneiM0MmMzZTE4ZWM5NTQ2NmI2YmYwZGM0MmYzYTI5NDVjM2YwY2FkOGZjIgotCi1vcG5ANC4w
LjI6Ci0gIHZlcnNpb24gIjQuMC4yIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJu
cGtnLmNvbS9vcG4vLS9vcG4tNC4wLjIudGd6IzdhYmMyMmU2NDRkZmY2M2IwYTk2ZDVhYjdmMjc5
MGMwZjAxYWJjOTUiCi0gIGRlcGVuZGVuY2llczoKLSAgICBvYmplY3QtYXNzaWduICJeNC4wLjEi
Ci0gICAgcGlua2llLXByb21pc2UgIl4yLjAuMCIKLQotb3B0aW1pc3RAXjAuNi4xLCBvcHRpbWlz
dEB+MC42LjAsIG9wdGltaXN0QH4wLjYuMToKLSAgdmVyc2lvbiAiMC42LjEiCi0gIHJlc29sdmVk
ICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL29wdGltaXN0Ly0vb3B0aW1pc3QtMC42LjEu
dGd6I2RhM2VhNzQ2ODZmYTIxYTE5YTExMWMzMjZlOTBlYjE1YTAxOTY2ODYiCi0gIGRlcGVuZGVu
Y2llczoKLSAgICBtaW5pbWlzdCAifjAuMC4xIgotICAgIHdvcmR3cmFwICJ+MC4wLjIiCi0KLW9w
dGlvbmF0b3JAXjAuOC4xOgotICB2ZXJzaW9uICIwLjguMiIKLSAgcmVzb2x2ZWQgImh0dHBzOi8v
cmVnaXN0cnkueWFybnBrZy5jb20vb3B0aW9uYXRvci8tL29wdGlvbmF0b3ItMC44LjIudGd6IzM2
NGM1ZTQwOWQzZjRkNjMwMWQ2YzBiNGMwNWJiYTUwMTgwYWViNjQiCi0gIGRlcGVuZGVuY2llczoK
LSAgICBkZWVwLWlzICJ+MC4xLjMiCi0gICAgZmFzdC1sZXZlbnNodGVpbiAifjIuMC40IgotICAg
IGxldm4gIn4wLjMuMCIKLSAgICBwcmVsdWRlLWxzICJ+MS4xLjIiCi0gICAgdHlwZS1jaGVjayAi
fjAuMy4yIgotICAgIHdvcmR3cmFwICJ+MS4wLjAiCi0KLW9yaWdpbmFsQD49MC4wLjU6Ci0gIHZl
cnNpb24gIjEuMC4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9v
cmlnaW5hbC8tL29yaWdpbmFsLTEuMC4wLnRneiM5MTQ3ZjkzZmExNjk2ZDA0YmU2MWUwMWJkNTBi
YWVhY2E2NTZiZDNiIgotICBkZXBlbmRlbmNpZXM6Ci0gICAgdXJsLXBhcnNlICIxLjAueCIKLQot
b3MtYnJvd3NlcmlmeUB+MC4xLjI6Ci0gIHZlcnNpb24gIjAuMS4yIgotICByZXNvbHZlZCAiaHR0
cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9vcy1icm93c2VyaWZ5Ly0vb3MtYnJvd3NlcmlmeS0w
LjEuMi50Z3ojNDljYTAyOTNlMGIxOTU5MGE1ZjVkZTEwYzdmMjY1YTYxN2Q4ZmU1NCIKLQotb3Mt
aG9tZWRpckBeMS4wLjA6Ci0gIHZlcnNpb24gIjEuMC4yIgotICByZXNvbHZlZCAiaHR0cHM6Ly9y
ZWdpc3RyeS55YXJucGtnLmNvbS9vcy1ob21lZGlyLy0vb3MtaG9tZWRpci0xLjAuMi50Z3ojZmZi
YzQ5ODgzMzZlMGU4MzNkZTBjMTY4YzdlZjE1MjEyMWFhN2ZiMyIKLQotb3MtbG9jYWxlQF4xLjQu
MDoKLSAgdmVyc2lvbiAiMS40LjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5w
a2cuY29tL29zLWxvY2FsZS8tL29zLWxvY2FsZS0xLjQuMC50Z3ojMjBmOWYxN2FlMjllZDM0NWU4
YmRlNTgzYjEzZDIwMDk4MDNjMTRkOSIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGxjaWQgIl4xLjAu
MCIKLQotb3MtdG1wZGlyQF4xLjAuMToKLSAgdmVyc2lvbiAiMS4wLjIiCi0gIHJlc29sdmVkICJo
dHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL29zLXRtcGRpci8tL29zLXRtcGRpci0xLjAuMi50
Z3ojYmJlNjc0MDZjNzlhYTg1YzVjZmVjNzY2ZmU1NzM0NTU1ZGZhMTI3NCIKLQotcGFrb0B+MC4y
LjA6Ci0gIHZlcnNpb24gIjAuMi45IgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJu
cGtnLmNvbS9wYWtvLy0vcGFrby0wLjIuOS50Z3ojZjNmNzUyMmY0ZWY3ODIzNDhkYTgxNjFiYWQ5
ZWNmZDUxYmY4M2E3NSIKLQotcGFyYW0tY2FzZUBeMi4xLjA6Ci0gIHZlcnNpb24gIjIuMS4wIgot
ICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9wYXJhbS1jYXNlLy0vcGFy
YW0tY2FzZS0yLjEuMC50Z3ojMjYxOWY5MGZkNmM4MjllZDBiOTU4ZjFjODRlZDAzYTc0NWE2ZDcw
YSIKLSAgZGVwZW5kZW5jaWVzOgotICAgIG5vLWNhc2UgIl4yLjIuMCIKLQotcGFyc2UtZ2xvYkBe
My4wLjQ6Ci0gIHZlcnNpb24gIjMuMC40IgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55
YXJucGtnLmNvbS9wYXJzZS1nbG9iLy0vcGFyc2UtZ2xvYi0zLjAuNC50Z3ojYjJjMzc2Y2ZiMTFm
MzU1MTNiYWRkMTczZWYwYmI2ZTNhMzg4MzkxYyIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGdsb2It
YmFzZSAiXjAuMy4wIgotICAgIGlzLWRvdGZpbGUgIl4xLjAuMCIKLSAgICBpcy1leHRnbG9iICJe
MS4wLjAiCi0gICAgaXMtZ2xvYiAiXjIuMC4wIgotCi1wYXJzZS1qc29uQF4yLjIuMDoKLSAgdmVy
c2lvbiAiMi4yLjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3Bh
cnNlLWpzb24vLS9wYXJzZS1qc29uLTIuMi4wLnRneiNmNDgwZjQwNDM0ZWY4MDc0MWY4NDY5MDk5
ZjhkZWExOGY1NWE0ZGM5IgotICBkZXBlbmRlbmNpZXM6Ci0gICAgZXJyb3ItZXggIl4xLjIuMCIK
LQotcGFyc2U1QF4xLjUuMToKLSAgdmVyc2lvbiAiMS41LjEiCi0gIHJlc29sdmVkICJodHRwczov
L3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3BhcnNlNS8tL3BhcnNlNS0xLjUuMS50Z3ojOWI3ZjNiMGRl
MzJiZTc4ZGMyNDAxYjE3NTczY2NhZjBmNmY1OWQ5NCIKLQotcGFyc2V1cmxAfjEuMy4xOgotICB2
ZXJzaW9uICIxLjMuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20v
cGFyc2V1cmwvLS9wYXJzZXVybC0xLjMuMS50Z3ojYzhhYjhjOTIyM2JhMzQ4ODhhYTY0YTI5N2Iy
ODg1M2JlYzE4ZGE1NiIKLQotcGFzY2FsLWNhc2VAXjIuMC4wOgotICB2ZXJzaW9uICIyLjAuMCIK
LSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vcGFzY2FsLWNhc2UvLS9w
YXNjYWwtY2FzZS0yLjAuMC50Z3ojMzljMjQ4YmRlNWE4ZGMwMmQ1MTYwNjk2YmRiMDFlMDQ0ZDAx
NmVlMSIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGNhbWVsLWNhc2UgIl4zLjAuMCIKLSAgICB1cHBl
ci1jYXNlLWZpcnN0ICJeMS4xLjAiCi0KLXBhdGgtYnJvd3NlcmlmeUAwLjAuMDoKLSAgdmVyc2lv
biAiMC4wLjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3BhdGgt
YnJvd3NlcmlmeS8tL3BhdGgtYnJvd3NlcmlmeS0wLjAuMC50Z3ojYTBiODcwNzI5YWFlMjE0MDA1
YjdkNTAzMmVjMmNiYmIwZmI0NDUxYSIKLQotcGF0aC1jYXNlQF4yLjEuMDoKLSAgdmVyc2lvbiAi
Mi4xLjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3BhdGgtY2Fz
ZS8tL3BhdGgtY2FzZS0yLjEuMC50Z3ojNWFjNDkxZGU2NDI5MzZlNWRmZTBlMThkMTZjNDYxYjhi
ZThjZjA3MyIKLSAgZGVwZW5kZW5jaWVzOgotICAgIG5vLWNhc2UgIl4yLjIuMCIKLQotcGF0aC1l
eGlzdHNAXjEuMC4wOgotICB2ZXJzaW9uICIxLjAuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVn
aXN0cnkueWFybnBrZy5jb20vcGF0aC1leGlzdHMvLS9wYXRoLWV4aXN0cy0xLjAuMC50Z3ojZDVh
ODk5OGViNzFlZjM3YTc0YzM0ZWIwZDllYmE2ZTg3OGVlYTA4MSIKLQotcGF0aC1leGlzdHNAXjIu
MC4wLCBwYXRoLWV4aXN0c0AyLjEuMDoKLSAgdmVyc2lvbiAiMi4xLjAiCi0gIHJlc29sdmVkICJo
dHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3BhdGgtZXhpc3RzLy0vcGF0aC1leGlzdHMtMi4x
LjAudGd6IzBmZWI2YzY0ZjBmYzUxOGQ5YTc1NGRkNWVmYjYyYzcwMjI3NjFmNGIiCi0gIGRlcGVu
ZGVuY2llczoKLSAgICBwaW5raWUtcHJvbWlzZSAiXjIuMC4wIgotCi1wYXRoLWlzLWFic29sdXRl
QF4xLjAuMDoKLSAgdmVyc2lvbiAiMS4wLjEiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5
Lnlhcm5wa2cuY29tL3BhdGgtaXMtYWJzb2x1dGUvLS9wYXRoLWlzLWFic29sdXRlLTEuMC4xLnRn
eiMxNzRiOTI2ODczNTUzNGZmYmM3YWNlNmJmNTNhNWE5ZTFiNWM1ZjVmIgotCi1wYXRoLWlzLWlu
c2lkZUBeMS4wLjE6Ci0gIHZlcnNpb24gIjEuMC4yIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdp
c3RyeS55YXJucGtnLmNvbS9wYXRoLWlzLWluc2lkZS8tL3BhdGgtaXMtaW5zaWRlLTEuMC4yLnRn
eiMzNjU0MTdkZWRlNDQ0MzBkMWMxMWFmNjEwMjdmYWNmMDc0YmRmYzUzIgotCi1wYXRoLXBhcnNl
QF4xLjAuNToKLSAgdmVyc2lvbiAiMS4wLjUiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5
Lnlhcm5wa2cuY29tL3BhdGgtcGFyc2UvLS9wYXRoLXBhcnNlLTEuMC41LnRneiMzYzFhZGY4NzFl
YTljZDZjOTQzMWI2ZWEyYmQ3NGEwZmYwNTVjNGMxIgotCi1wYXRoLXRvLXJlZ2V4cEAwLjEuNzoK
LSAgdmVyc2lvbiAiMC4xLjciCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cu
Y29tL3BhdGgtdG8tcmVnZXhwLy0vcGF0aC10by1yZWdleHAtMC4xLjcudGd6I2RmNjA0MTc4MDA1
ZjUyMmYxNWViNDQ5MGU3MjQ3YTFiZmFhNjdmOGMiCi0KLXBhdGgtdHlwZUBeMS4wLjA6Ci0gIHZl
cnNpb24gIjEuMS4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9w
YXRoLXR5cGUvLS9wYXRoLXR5cGUtMS4xLjAudGd6IzU5YzQ0ZjdlZTQ5MWRhNzA0ZGE0MTVkYTVh
NDA3MGJhNGY4ZmU0NDEiCi0gIGRlcGVuZGVuY2llczoKLSAgICBncmFjZWZ1bC1mcyAiXjQuMS4y
IgotICAgIHBpZnkgIl4yLjAuMCIKLSAgICBwaW5raWUtcHJvbWlzZSAiXjIuMC4wIgotCi1wYmtk
ZjItY29tcGF0QDIuMC4xOgotICB2ZXJzaW9uICIyLjAuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8v
cmVnaXN0cnkueWFybnBrZy5jb20vcGJrZGYyLWNvbXBhdC8tL3Bia2RmMi1jb21wYXQtMi4wLjEu
dGd6I2I2ZTBjOGZhOTk0OTRkOTRlMDUxMTU3NTgwMmE1OWE1YzE0MmYyODgiCi0KLXBpZnlAXjIu
MC4wOgotICB2ZXJzaW9uICIyLjMuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFy
bnBrZy5jb20vcGlmeS8tL3BpZnktMi4zLjAudGd6I2VkMTQxYTZhYzA0M2E4NDllYTU4ODQ5OGU3
ZGNhOGIxNTMzMGU5MGMiCi0KLXBpbmtpZS1wcm9taXNlQF4yLjAuMDoKLSAgdmVyc2lvbiAiMi4w
LjEiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3BpbmtpZS1wcm9t
aXNlLy0vcGlua2llLXByb21pc2UtMi4wLjEudGd6IzIxMzVkNmRmYTdhMzU4YzA2OWFjOWIxNzg3
NzYyODgyMjg0NTBmZmEiCi0gIGRlcGVuZGVuY2llczoKLSAgICBwaW5raWUgIl4yLjAuMCIKLQot
cGlua2llQF4yLjAuMDoKLSAgdmVyc2lvbiAiMi4wLjQiCi0gIHJlc29sdmVkICJodHRwczovL3Jl
Z2lzdHJ5Lnlhcm5wa2cuY29tL3BpbmtpZS8tL3BpbmtpZS0yLjAuNC50Z3ojNzI1NTZiODBjZmEw
ZDQ4YTk3NGU4MGU3NzI0OGU4MGVkNGY3Zjg3MCIKLQotcGtnLWRpckBeMS4wLjA6Ci0gIHZlcnNp
b24gIjEuMC4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9wa2ct
ZGlyLy0vcGtnLWRpci0xLjAuMC50Z3ojN2E0YjUwOGE4ZDViYjJkNjI5ZDQ0NzA1NmZmNGU5Yzkz
MTRjZjNkNCIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGZpbmQtdXAgIl4xLjAuMCIKLQotcGtnLXVw
QF4xLjAuMDoKLSAgdmVyc2lvbiAiMS4wLjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5
Lnlhcm5wa2cuY29tL3BrZy11cC8tL3BrZy11cC0xLjAuMC50Z3ojM2UwOGZiNDYxNTI1YzQ0MjE2
MjRhMzNiOWY3ZTZkMGFmNWIwNWEyNiIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGZpbmQtdXAgIl4x
LjAuMCIKLQotcGx1cmFsaXplQF4xLjIuMToKLSAgdmVyc2lvbiAiMS4yLjEiCi0gIHJlc29sdmVk
ICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3BsdXJhbGl6ZS8tL3BsdXJhbGl6ZS0xLjIu
MS50Z3ojZDFhMjE0ODNmZDIyYmI0MWU1OGExMmZhMzQyMTgyMzE0MDg5N2M0NSIKLQotcG9zdGNz
cy1jYWxjQF41LjIuMDoKLSAgdmVyc2lvbiAiNS4zLjEiCi0gIHJlc29sdmVkICJodHRwczovL3Jl
Z2lzdHJ5Lnlhcm5wa2cuY29tL3Bvc3Rjc3MtY2FsYy8tL3Bvc3Rjc3MtY2FsYy01LjMuMS50Z3oj
NzdiYWU3Y2E5MjhhZDg1NzE2ZTJmZGE0MmYyNjFiZjdjMWQ2NWI1ZSIKLSAgZGVwZW5kZW5jaWVz
OgotICAgIHBvc3Rjc3MgIl41LjAuMiIKLSAgICBwb3N0Y3NzLW1lc3NhZ2UtaGVscGVycyAiXjIu
MC4wIgotICAgIHJlZHVjZS1jc3MtY2FsYyAiXjEuMi42IgotCi1wb3N0Y3NzLWNvbG9ybWluQF4y
LjEuODoKLSAgdmVyc2lvbiAiMi4yLjEiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlh
cm5wa2cuY29tL3Bvc3Rjc3MtY29sb3JtaW4vLS9wb3N0Y3NzLWNvbG9ybWluLTIuMi4xLnRneiNk
YzU0MjFiNmFlNmY3NzllZjZiZmQ0NzM1MmI5NGFiZTU5ZDAzMTZiIgotICBkZXBlbmRlbmNpZXM6
Ci0gICAgY29sb3JtaW4gIl4xLjAuNSIKLSAgICBwb3N0Y3NzICJeNS4wLjEzIgotICAgIHBvc3Rj
c3MtdmFsdWUtcGFyc2VyICJeMy4yLjMiCi0KLXBvc3Rjc3MtY29udmVydC12YWx1ZXNAXjIuMy40
OgotICB2ZXJzaW9uICIyLjQuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBr
Zy5jb20vcG9zdGNzcy1jb252ZXJ0LXZhbHVlcy8tL3Bvc3Rjc3MtY29udmVydC12YWx1ZXMtMi40
LjEudGd6IzQ1ZGNlNGQ0ZTMzYjdkOTY3Yjk3YTRkOTM3ZjI3MGVhOThkMmZlN2EiCi0gIGRlcGVu
ZGVuY2llczoKLSAgICBwb3N0Y3NzICJeNS4wLjExIgotICAgIHBvc3Rjc3MtdmFsdWUtcGFyc2Vy
ICJeMy4xLjIiCi0KLXBvc3Rjc3MtZGlzY2FyZC1jb21tZW50c0BeMi4wLjQ6Ci0gIHZlcnNpb24g
IjIuMC40IgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9wb3N0Y3Nz
LWRpc2NhcmQtY29tbWVudHMvLS9wb3N0Y3NzLWRpc2NhcmQtY29tbWVudHMtMi4wLjQudGd6I2Jl
ZmU4OWZhZmQ1YjNkYWNlNWNjY2U1MWI3NmI4MTUxNGJlMDBlM2QiCi0gIGRlcGVuZGVuY2llczoK
LSAgICBwb3N0Y3NzICJeNS4wLjE0IgotCi1wb3N0Y3NzLWRpc2NhcmQtZHVwbGljYXRlc0BeMi4w
LjE6Ci0gIHZlcnNpb24gIjIuMC4xIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJu
cGtnLmNvbS9wb3N0Y3NzLWRpc2NhcmQtZHVwbGljYXRlcy8tL3Bvc3Rjc3MtZGlzY2FyZC1kdXBs
aWNhdGVzLTIuMC4xLnRneiM1ZmFlM2YxYTcxZGYzZTE5Y2ZmYjM3MzA5ZDFhN2RiYTU2YzQ1ODlj
IgotICBkZXBlbmRlbmNpZXM6Ci0gICAgcG9zdGNzcyAiXjUuMC40IgotCi1wb3N0Y3NzLWRpc2Nh
cmQtZW1wdHlAXjIuMC4xOgotICB2ZXJzaW9uICIyLjEuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8v
cmVnaXN0cnkueWFybnBrZy5jb20vcG9zdGNzcy1kaXNjYXJkLWVtcHR5Ly0vcG9zdGNzcy1kaXNj
YXJkLWVtcHR5LTIuMS4wLnRneiNkMmI0YmQ5ZDVjZWQ1ZWJkOGRjYWRlNzY0MGM3ZDdjZDdmNGY5
MmI1IgotICBkZXBlbmRlbmNpZXM6Ci0gICAgcG9zdGNzcyAiXjUuMC4xNCIKLQotcG9zdGNzcy1k
aXNjYXJkLW92ZXJyaWRkZW5AXjAuMS4xOgotICB2ZXJzaW9uICIwLjEuMSIKLSAgcmVzb2x2ZWQg
Imh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vcG9zdGNzcy1kaXNjYXJkLW92ZXJyaWRkZW4v
LS9wb3N0Y3NzLWRpc2NhcmQtb3ZlcnJpZGRlbi0wLjEuMS50Z3ojOGIxZWFmNTU0ZjY4NmZiMjg4
Y2Q4NzRjNTU2NjdiMGFhMzY2OGQ1OCIKLSAgZGVwZW5kZW5jaWVzOgotICAgIHBvc3Rjc3MgIl41
LjAuMTYiCi0KLXBvc3Rjc3MtZGlzY2FyZC11bnVzZWRAXjIuMi4xOgotICB2ZXJzaW9uICIyLjIu
MSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vcG9zdGNzcy1kaXNj
YXJkLXVudXNlZC8tL3Bvc3Rjc3MtZGlzY2FyZC11bnVzZWQtMi4yLjEudGd6IzVkMDIxZjAyMWE2
ZWQ2Y2VjNzMxMGQ0NjAzNzk0YTc1ZGRkNTMyMzIiCi0gIGRlcGVuZGVuY2llczoKLSAgICBmbGF0
dGVuICIxLjAuMiIKLSAgICBwb3N0Y3NzICJeNS4wLjE0IgotICAgIHVuaXFzICJeMi4wLjAiCi0K
LXBvc3Rjc3MtZmlsdGVyLXBsdWdpbnNAXjIuMC4wOgotICB2ZXJzaW9uICIyLjAuMiIKLSAgcmVz
b2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vcG9zdGNzcy1maWx0ZXItcGx1Z2lu
cy8tL3Bvc3Rjc3MtZmlsdGVyLXBsdWdpbnMtMi4wLjIudGd6IzZkODU4NjI1MzRkNzM1YWM0MjBl
NGE4NTgwNmUxZjVkNDI4NmQ4NGMiCi0gIGRlcGVuZGVuY2llczoKLSAgICBwb3N0Y3NzICJeNS4w
LjQiCi0gICAgdW5pcWlkICJeNC4wLjAiCi0KLXBvc3Rjc3MtbG9hZGVyQDAuMTMuMDoKLSAgdmVy
c2lvbiAiMC4xMy4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9w
b3N0Y3NzLWxvYWRlci8tL3Bvc3Rjc3MtbG9hZGVyLTAuMTMuMC50Z3ojNzJmZGFmMGQyOTQ0NGRm
NzdkMzc1MWNlNGU2OWRjNDBiYzk5ZWQ4NSIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGxvYWRlci11
dGlscyAiXjAuMi4xNSIKLSAgICBwb3N0Y3NzICJeNS4yLjAiCi0KLXBvc3Rjc3MtbWVyZ2UtaWRl
bnRzQF4yLjEuNToKLSAgdmVyc2lvbiAiMi4xLjciCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lz
dHJ5Lnlhcm5wa2cuY29tL3Bvc3Rjc3MtbWVyZ2UtaWRlbnRzLy0vcG9zdGNzcy1tZXJnZS1pZGVu
dHMtMi4xLjcudGd6IzRjNTUzMDMxM2MwOGUxZDViM2JiZjNkMmJiYzc0N2UyNzhlZWEyNzAiCi0g
IGRlcGVuZGVuY2llczoKLSAgICBoYXMgIl4xLjAuMSIKLSAgICBwb3N0Y3NzICJeNS4wLjEwIgot
ICAgIHBvc3Rjc3MtdmFsdWUtcGFyc2VyICJeMy4xLjEiCi0KLXBvc3Rjc3MtbWVyZ2UtbG9uZ2hh
bmRAXjIuMC4xOgotICB2ZXJzaW9uICIyLjAuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0
cnkueWFybnBrZy5jb20vcG9zdGNzcy1tZXJnZS1sb25naGFuZC8tL3Bvc3Rjc3MtbWVyZ2UtbG9u
Z2hhbmQtMi4wLjEudGd6I2ZmNTliNWRlYzZkNTg2Y2UyY2VhMTgzMTM4ZjU1YzU4NzZmYTljZGMi
Ci0gIGRlcGVuZGVuY2llczoKLSAgICBwb3N0Y3NzICJeNS4wLjQiCi0KLXBvc3Rjc3MtbWVyZ2Ut
cnVsZXNAXjIuMC4zOgotICB2ZXJzaW9uICIyLjAuMTAiCi0gIHJlc29sdmVkICJodHRwczovL3Jl
Z2lzdHJ5Lnlhcm5wa2cuY29tL3Bvc3Rjc3MtbWVyZ2UtcnVsZXMvLS9wb3N0Y3NzLW1lcmdlLXJ1
bGVzLTIuMC4xMC50Z3ojNTRiMzYwYmU4MDRlN2U2OWE1YzcyMjI2MzUyNDdiOTJhMzU2OWU5YiIK
LSAgZGVwZW5kZW5jaWVzOgotICAgIHBvc3Rjc3MgIl41LjAuNCIKLSAgICB2ZW5kb3JzICJeMS4w
LjAiCi0KLXBvc3Rjc3MtbWVzc2FnZS1oZWxwZXJzQF4yLjAuMDoKLSAgdmVyc2lvbiAiMi4wLjAi
Ci0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3Bvc3Rjc3MtbWVzc2Fn
ZS1oZWxwZXJzLy0vcG9zdGNzcy1tZXNzYWdlLWhlbHBlcnMtMi4wLjAudGd6I2E0ZjJmNGZhYjZl
NGZlMDAyZjBhZWQwMDA0NzhjZGY1MmY5YmE2MGUiCi0KLXBvc3Rjc3MtbWluaWZ5LWZvbnQtdmFs
dWVzQF4xLjAuMjoKLSAgdmVyc2lvbiAiMS4wLjUiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lz
dHJ5Lnlhcm5wa2cuY29tL3Bvc3Rjc3MtbWluaWZ5LWZvbnQtdmFsdWVzLy0vcG9zdGNzcy1taW5p
ZnktZm9udC12YWx1ZXMtMS4wLjUudGd6IzRiNThlZGI1NjY0MWViYTdjODQ3NGFiMzUyNmNhZmQ3
YmJkZWNiNjkiCi0gIGRlcGVuZGVuY2llczoKLSAgICBvYmplY3QtYXNzaWduICJeNC4wLjEiCi0g
ICAgcG9zdGNzcyAiXjUuMC40IgotICAgIHBvc3Rjc3MtdmFsdWUtcGFyc2VyICJeMy4wLjIiCi0K
LXBvc3Rjc3MtbWluaWZ5LWdyYWRpZW50c0BeMS4wLjE6Ci0gIHZlcnNpb24gIjEuMC4zIgotICBy
ZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9wb3N0Y3NzLW1pbmlmeS1ncmFk
aWVudHMvLS9wb3N0Y3NzLW1pbmlmeS1ncmFkaWVudHMtMS4wLjMudGd6IzA5ZDIyODE0OGM5NDJm
YTgxMjY2NzlkZTlmZjc3MzhiNTQ5MTlmZTMiCi0gIGRlcGVuZGVuY2llczoKLSAgICBwb3N0Y3Nz
ICJeNS4wLjEyIgotICAgIHBvc3Rjc3MtdmFsdWUtcGFyc2VyICJeMy4xLjMiCi0KLXBvc3Rjc3Mt
bWluaWZ5LXBhcmFtc0BeMS4wLjQ6Ci0gIHZlcnNpb24gIjEuMC41IgotICByZXNvbHZlZCAiaHR0
cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9wb3N0Y3NzLW1pbmlmeS1wYXJhbXMvLS9wb3N0Y3Nz
LW1pbmlmeS1wYXJhbXMtMS4wLjUudGd6IzgyZDYwMjY0M2I4NjE2YTYxZmIzNjM0ZDdlZGUwMjg5
ODM2ZDY3ZjkiCi0gIGRlcGVuZGVuY2llczoKLSAgICBhbHBoYW51bS1zb3J0ICJeMS4wLjEiCi0g
ICAgcG9zdGNzcyAiXjUuMC4yIgotICAgIHBvc3Rjc3MtdmFsdWUtcGFyc2VyICJeMy4wLjIiCi0g
ICAgdW5pcXMgIl4yLjAuMCIKLQotcG9zdGNzcy1taW5pZnktc2VsZWN0b3JzQF4yLjAuNDoKLSAg
dmVyc2lvbiAiMi4wLjUiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29t
L3Bvc3Rjc3MtbWluaWZ5LXNlbGVjdG9ycy8tL3Bvc3Rjc3MtbWluaWZ5LXNlbGVjdG9ycy0yLjAu
NS50Z3ojNGUxZjk2NmZiNDljOTUyNjY4MDQwMTZiYTlhM2M2NjQ1YmI2MDFlMCIKLSAgZGVwZW5k
ZW5jaWVzOgotICAgIGFscGhhbnVtLXNvcnQgIl4xLjAuMiIKLSAgICBwb3N0Y3NzICJeNS4wLjE0
IgotICAgIHBvc3Rjc3Mtc2VsZWN0b3ItcGFyc2VyICJeMi4wLjAiCi0KLXBvc3Rjc3MtbW9kdWxl
cy1leHRyYWN0LWltcG9ydHNAXjEuMC4wOgotICB2ZXJzaW9uICIxLjAuMSIKLSAgcmVzb2x2ZWQg
Imh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vcG9zdGNzcy1tb2R1bGVzLWV4dHJhY3QtaW1w
b3J0cy8tL3Bvc3Rjc3MtbW9kdWxlcy1leHRyYWN0LWltcG9ydHMtMS4wLjEudGd6IzhmYjNmZWY5
YTZkZDA0MjBkM2Y2ZDQzNTNjZjFmZjczZjJiMmEzNDEiCi0gIGRlcGVuZGVuY2llczoKLSAgICBw
b3N0Y3NzICJeNS4wLjQiCi0KLXBvc3Rjc3MtbW9kdWxlcy1sb2NhbC1ieS1kZWZhdWx0QF4xLjAu
MToKLSAgdmVyc2lvbiAiMS4xLjEiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5w
a2cuY29tL3Bvc3Rjc3MtbW9kdWxlcy1sb2NhbC1ieS1kZWZhdWx0Ly0vcG9zdGNzcy1tb2R1bGVz
LWxvY2FsLWJ5LWRlZmF1bHQtMS4xLjEudGd6IzI5YTEwNjczZmEzN2QxOTI1MTI2NWNhMmJhMzE1
MGQ5MDQwZWI0Y2UiCi0gIGRlcGVuZGVuY2llczoKLSAgICBjc3Mtc2VsZWN0b3ItdG9rZW5pemVy
ICJeMC42LjAiCi0gICAgcG9zdGNzcyAiXjUuMC40IgotCi1wb3N0Y3NzLW1vZHVsZXMtc2NvcGVA
XjEuMC4wOgotICB2ZXJzaW9uICIxLjAuMiIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnku
eWFybnBrZy5jb20vcG9zdGNzcy1tb2R1bGVzLXNjb3BlLy0vcG9zdGNzcy1tb2R1bGVzLXNjb3Bl
LTEuMC4yLnRneiNmZjk3NzM5NWU1ZTA2MjAyZDczNjIyOTBiODhiMWU4Y2QwNDlkZTI5IgotICBk
ZXBlbmRlbmNpZXM6Ci0gICAgY3NzLXNlbGVjdG9yLXRva2VuaXplciAiXjAuNi4wIgotICAgIHBv
c3Rjc3MgIl41LjAuNCIKLQotcG9zdGNzcy1tb2R1bGVzLXZhbHVlc0BeMS4xLjA6Ci0gIHZlcnNp
b24gIjEuMi4yIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9wb3N0
Y3NzLW1vZHVsZXMtdmFsdWVzLy0vcG9zdGNzcy1tb2R1bGVzLXZhbHVlcy0xLjIuMi50Z3ojZjBl
N2Q0NzZmZTFlZDg4YzVlNGM3Zjk3NTMzYTNlNzcyYWQ5NGNhMSIKLSAgZGVwZW5kZW5jaWVzOgot
ICAgIGljc3MtcmVwbGFjZS1zeW1ib2xzICJeMS4wLjIiCi0gICAgcG9zdGNzcyAiXjUuMC4xNCIK
LQotcG9zdGNzcy1ub3JtYWxpemUtY2hhcnNldEBeMS4xLjA6Ci0gIHZlcnNpb24gIjEuMS4wIgot
ICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9wb3N0Y3NzLW5vcm1hbGl6
ZS1jaGFyc2V0Ly0vcG9zdGNzcy1ub3JtYWxpemUtY2hhcnNldC0xLjEuMC50Z3ojMmZiZDMwZTEy
MjQ4YzQ0Mjk4MWQzMWVhMjQ4NGQ0NmZkMDYyODk3MCIKLSAgZGVwZW5kZW5jaWVzOgotICAgIHBv
c3Rjc3MgIl41LjAuNSIKLQotcG9zdGNzcy1ub3JtYWxpemUtdXJsQF4zLjAuNzoKLSAgdmVyc2lv
biAiMy4wLjciCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3Bvc3Rj
c3Mtbm9ybWFsaXplLXVybC8tL3Bvc3Rjc3Mtbm9ybWFsaXplLXVybC0zLjAuNy50Z3ojNmJkOTBk
MGE0YmM1YTFkZjIyYzI2ZWE2NWM1MzI1N2RjMzgyOWY0ZSIKLSAgZGVwZW5kZW5jaWVzOgotICAg
IGlzLWFic29sdXRlLXVybCAiXjIuMC4wIgotICAgIG5vcm1hbGl6ZS11cmwgIl4xLjQuMCIKLSAg
ICBwb3N0Y3NzICJeNS4wLjE0IgotICAgIHBvc3Rjc3MtdmFsdWUtcGFyc2VyICJeMy4yLjMiCi0K
LXBvc3Rjc3Mtb3JkZXJlZC12YWx1ZXNAXjIuMS4wOgotICB2ZXJzaW9uICIyLjIuMiIKLSAgcmVz
b2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vcG9zdGNzcy1vcmRlcmVkLXZhbHVl
cy8tL3Bvc3Rjc3Mtb3JkZXJlZC12YWx1ZXMtMi4yLjIudGd6I2JlOGI1MTE3NDFmYWIyZGFjOGU2
MTRhMjMwMmU5ZDEwMjY3YjA3NzEiCi0gIGRlcGVuZGVuY2llczoKLSAgICBwb3N0Y3NzICJeNS4w
LjQiCi0gICAgcG9zdGNzcy12YWx1ZS1wYXJzZXIgIl4zLjAuMSIKLQotcG9zdGNzcy1yZWR1Y2Ut
aWRlbnRzQF4yLjIuMjoKLSAgdmVyc2lvbiAiMi4zLjAiCi0gIHJlc29sdmVkICJodHRwczovL3Jl
Z2lzdHJ5Lnlhcm5wa2cuY29tL3Bvc3Rjc3MtcmVkdWNlLWlkZW50cy8tL3Bvc3Rjc3MtcmVkdWNl
LWlkZW50cy0yLjMuMC50Z3ojYTY5N2I1Mjk1M2VkNjgyNWZmZWE0MDRlMjZhNGYxMDVkOGI4ZDU2
OSIKLSAgZGVwZW5kZW5jaWVzOgotICAgIHBvc3Rjc3MgIl41LjAuNCIKLSAgICBwb3N0Y3NzLXZh
bHVlLXBhcnNlciAiXjMuMC4yIgotCi1wb3N0Y3NzLXJlZHVjZS1pbml0aWFsQF4xLjAuMDoKLSAg
dmVyc2lvbiAiMS4wLjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29t
L3Bvc3Rjc3MtcmVkdWNlLWluaXRpYWwvLS9wb3N0Y3NzLXJlZHVjZS1pbml0aWFsLTEuMC4wLnRn
eiM4ZjczOWI5MzgyODllZjJlNDg5MzZkNzEwMTc4M2U0NzQxY2E5YmJiIgotICBkZXBlbmRlbmNp
ZXM6Ci0gICAgcG9zdGNzcyAiXjUuMC40IgotCi1wb3N0Y3NzLXJlZHVjZS10cmFuc2Zvcm1zQF4x
LjAuMzoKLSAgdmVyc2lvbiAiMS4wLjMiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlh
cm5wa2cuY29tL3Bvc3Rjc3MtcmVkdWNlLXRyYW5zZm9ybXMvLS9wb3N0Y3NzLXJlZHVjZS10cmFu
c2Zvcm1zLTEuMC4zLnRneiNmYzE5M2U0MzVhOTczYzEwZjk4MDFjNzQ3MDBhODMwZjc5NjQzMzQz
IgotICBkZXBlbmRlbmNpZXM6Ci0gICAgcG9zdGNzcyAiXjUuMC44IgotICAgIHBvc3Rjc3MtdmFs
dWUtcGFyc2VyICJeMy4wLjEiCi0KLXBvc3Rjc3Mtc2VsZWN0b3ItcGFyc2VyQF4yLjAuMDoKLSAg
dmVyc2lvbiAiMi4yLjEiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29t
L3Bvc3Rjc3Mtc2VsZWN0b3ItcGFyc2VyLy0vcG9zdGNzcy1zZWxlY3Rvci1wYXJzZXItMi4yLjEu
dGd6I2ZkYmY2OTYxMDNiMTJiMGE2NDA2MGU1NjEwNTA3ZjQxMDQ5MWY3YzgiCi0gIGRlcGVuZGVu
Y2llczoKLSAgICBmbGF0dGVuICJeMS4wLjIiCi0gICAgaW5kZXhlcy1vZiAiXjEuMC4xIgotICAg
IHVuaXEgIl4xLjAuMSIKLQotcG9zdGNzcy1zdmdvQF4yLjEuMToKLSAgdmVyc2lvbiAiMi4xLjUi
Ci0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3Bvc3Rjc3Mtc3Znby8t
L3Bvc3Rjc3Mtc3Znby0yLjEuNS50Z3ojNDZmYzAzNjNmMDFiYWI2YTM2YTlhYmIwMWMyMjlmY2M0
NTM2MzA5NCIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGlzLXN2ZyAiXjIuMC4wIgotICAgIHBvc3Rj
c3MgIl41LjAuMTQiCi0gICAgcG9zdGNzcy12YWx1ZS1wYXJzZXIgIl4zLjIuMyIKLSAgICBzdmdv
ICJeMC43LjAiCi0KLXBvc3Rjc3MtdW5pcXVlLXNlbGVjdG9yc0BeMi4wLjI6Ci0gIHZlcnNpb24g
IjIuMC4yIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9wb3N0Y3Nz
LXVuaXF1ZS1zZWxlY3RvcnMvLS9wb3N0Y3NzLXVuaXF1ZS1zZWxlY3RvcnMtMi4wLjIudGd6Izk4
MWQ1N2QyOWRkY2IzM2U3YjFkZmUxZmQ0M2I4NjQ5ZjkzM2NhMWQiCi0gIGRlcGVuZGVuY2llczoK
LSAgICBhbHBoYW51bS1zb3J0ICJeMS4wLjEiCi0gICAgcG9zdGNzcyAiXjUuMC40IgotICAgIHVu
aXFzICJeMi4wLjAiCi0KLXBvc3Rjc3MtdmFsdWUtcGFyc2VyQF4zLjAuMSwgcG9zdGNzcy12YWx1
ZS1wYXJzZXJAXjMuMC4yLCBwb3N0Y3NzLXZhbHVlLXBhcnNlckBeMy4xLjEsIHBvc3Rjc3MtdmFs
dWUtcGFyc2VyQF4zLjEuMiwgcG9zdGNzcy12YWx1ZS1wYXJzZXJAXjMuMS4zLCBwb3N0Y3NzLXZh
bHVlLXBhcnNlckBeMy4yLjM6Ci0gIHZlcnNpb24gIjMuMy4wIgotICByZXNvbHZlZCAiaHR0cHM6
Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9wb3N0Y3NzLXZhbHVlLXBhcnNlci8tL3Bvc3Rjc3MtdmFs
dWUtcGFyc2VyLTMuMy4wLnRneiM4N2YzOGY5ZjE4Zjc3NGE0YWI0YzhhMjMyZjVjNWNlODg3MmE5
ZDE1IgotCi1wb3N0Y3NzLXppbmRleEBeMi4wLjE6Ci0gIHZlcnNpb24gIjIuMS4xIgotICByZXNv
bHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9wb3N0Y3NzLXppbmRleC8tL3Bvc3Rj
c3MtemluZGV4LTIuMS4xLnRneiNlYTNmYmU2NTZjOTczOGFhODcyOWUyZWU5NmVjMmE0NjA4OWI3
MjBmIgotICBkZXBlbmRlbmNpZXM6Ci0gICAgcG9zdGNzcyAiXjUuMC40IgotICAgIHVuaXFzICJe
Mi4wLjAiCi0KLXBvc3Rjc3NAXjUuMC4xMCwgcG9zdGNzc0BeNS4wLjExLCBwb3N0Y3NzQF41LjAu
MTIsIHBvc3Rjc3NAXjUuMC4xMywgcG9zdGNzc0BeNS4wLjE0LCBwb3N0Y3NzQF41LjAuMTYsIHBv
c3Rjc3NAXjUuMC4yLCBwb3N0Y3NzQF41LjAuNCwgcG9zdGNzc0BeNS4wLjUsIHBvc3Rjc3NAXjUu
MC42LCBwb3N0Y3NzQF41LjAuOCwgcG9zdGNzc0BeNS4xLjIsIHBvc3Rjc3NAXjUuMi4wLCBwb3N0
Y3NzQF41LjIuMjoKLSAgdmVyc2lvbiAiNS4yLjQiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lz
dHJ5Lnlhcm5wa2cuY29tL3Bvc3Rjc3MvLS9wb3N0Y3NzLTUuMi40LnRneiM4ZWI0YmVlM2U1YzRl
MDkxNTg1YjExNmRmMzJkOGRiMjRhNTM1ZjIxIgotICBkZXBlbmRlbmNpZXM6Ci0gICAgY2hhbGsg
Il4xLjEuMyIKLSAgICBqcy1iYXNlNjQgIl4yLjEuOSIKLSAgICBzb3VyY2UtbWFwICJeMC41LjYi
Ci0gICAgc3VwcG9ydHMtY29sb3IgIl4zLjEuMiIKLQotcHJlbHVkZS1sc0B+MS4xLjI6Ci0gIHZl
cnNpb24gIjEuMS4yIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9w
cmVsdWRlLWxzLy0vcHJlbHVkZS1scy0xLjEuMi50Z3ojMjE5MzJhNTQ5ZjVlNTJmZmQ5YTgyN2Y1
NzBlMDRiZTYyYTk3ZGE1NCIKLQotcHJlcGVuZC1odHRwQF4xLjAuMDoKLSAgdmVyc2lvbiAiMS4w
LjQiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3ByZXBlbmQtaHR0
cC8tL3ByZXBlbmQtaHR0cC0xLjAuNC50Z3ojZDRmNDU2MmIwY2UzNjk2ZTQxYWM1MmQwZTAwMmU1
N2E2MzVkYzZkYyIKLQotcHJlc2VydmVAXjAuMi4wOgotICB2ZXJzaW9uICIwLjIuMCIKLSAgcmVz
b2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vcHJlc2VydmUvLS9wcmVzZXJ2ZS0w
LjIuMC50Z3ojODE1ZWQxZjZlYmM2NTkyNmY4NjViMzEwYzA3MTNiY2IzMzE1Y2U0YiIKLQotcHJl
dHR5LWVycm9yQF4yLjAuMDoKLSAgdmVyc2lvbiAiMi4wLjEiCi0gIHJlc29sdmVkICJodHRwczov
L3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3ByZXR0eS1lcnJvci8tL3ByZXR0eS1lcnJvci0yLjAuMS50
Z3ojOGE3Mzc1YjlmZTI2ZTQzYjUxMDE3OTRlNGRiZWFjMzYyYThkNjI5YSIKLSAgZGVwZW5kZW5j
aWVzOgotICAgIHJlbmRlcmtpZCAifjIuMC4wIgotICAgIHV0aWxhICJ+MC40IgotCi1wcmV0dHkt
Zm9ybWF0QF4zLjcuMDoKLSAgdmVyc2lvbiAiMy44LjAiCi0gIHJlc29sdmVkICJodHRwczovL3Jl
Z2lzdHJ5Lnlhcm5wa2cuY29tL3ByZXR0eS1mb3JtYXQvLS9wcmV0dHktZm9ybWF0LTMuOC4wLnRn
eiNiZmJlZDU2ZDVlOWE3NzY2NDVmNGIxZmY3YWExYTNhYzRmYTNjMzg1IgotCi1wcml2YXRlQF4w
LjEuNiwgcHJpdmF0ZUB+MC4xLjU6Ci0gIHZlcnNpb24gIjAuMS42IgotICByZXNvbHZlZCAiaHR0
cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9wcml2YXRlLy0vcHJpdmF0ZS0wLjEuNi50Z3ojNTVj
NmE5NzZkMGY5YmFmYjk5MjQ4NTEzNTBmZTQ3YjliNWZiYjdjMSIKLQotcHJvY2Vzcy1uZXh0aWNr
LWFyZ3NAfjEuMC42OgotICB2ZXJzaW9uICIxLjAuNyIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVn
aXN0cnkueWFybnBrZy5jb20vcHJvY2Vzcy1uZXh0aWNrLWFyZ3MvLS9wcm9jZXNzLW5leHRpY2st
YXJncy0xLjAuNy50Z3ojMTUwZTIwYjc1NjU5MGFkM2Y5MTA5M2YyNWE0ZjJhZDhiZmYzMGJhMyIK
LQotcHJvY2Vzc0BeMC4xMS4wLCBwcm9jZXNzQH4wLjExLjA6Ci0gIHZlcnNpb24gIjAuMTEuOSIK
LSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vcHJvY2Vzcy8tL3Byb2Nl
c3MtMC4xMS45LnRneiM3YmQ1YWQyMWFhNjI1M2U3ZGE4NjgyMjY0ZjFlMTFkMTFjMDMxOGMxIgot
Ci1wcm9ncmVzc0BeMS4xLjg6Ci0gIHZlcnNpb24gIjEuMS44IgotICByZXNvbHZlZCAiaHR0cHM6
Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9wcm9ncmVzcy8tL3Byb2dyZXNzLTEuMS44LnRneiNlMjYw
Yzc4ZjYxNjFjZGQ5YjBlNTZjYzNlMGE4NWRlMTdjN2E1N2JlIgotCi1wcm9taXNlQF43LjEuMSwg
cHJvbWlzZUA3LjEuMToKLSAgdmVyc2lvbiAiNy4xLjEiCi0gIHJlc29sdmVkICJodHRwczovL3Jl
Z2lzdHJ5Lnlhcm5wa2cuY29tL3Byb21pc2UvLS9wcm9taXNlLTcuMS4xLnRneiM0ODk2NTRjNjky
NjE2YjhhYTU1YjA3MjRmYTgwOWJiN2RiNDljNWJmIgotICBkZXBlbmRlbmNpZXM6Ci0gICAgYXNh
cCAifjIuMC4zIgotCi1wcm94eS1hZGRyQH4xLjEuMjoKLSAgdmVyc2lvbiAiMS4xLjIiCi0gIHJl
c29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3Byb3h5LWFkZHIvLS9wcm94eS1h
ZGRyLTEuMS4yLnRneiNiNGNjNWYyMjYxMGQ5NTM1ODI0YzEyM2FlZjlkM2NmNzNjNDBiYTM3Igot
ICBkZXBlbmRlbmNpZXM6Ci0gICAgZm9yd2FyZGVkICJ+MC4xLjAiCi0gICAgaXBhZGRyLmpzICIx
LjEuMSIKLQotcHJyQH4wLjAuMDoKLSAgdmVyc2lvbiAiMC4wLjAiCi0gIHJlc29sdmVkICJodHRw
czovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3Byci8tL3Byci0wLjAuMC50Z3ojMWE4NGI4NTkwODMy
NTUwMTQxMTg1M2QwMDgxZWUzZmE4NmUyOTI2YSIKLQotcHNldWRvbWFwQF4xLjAuMToKLSAgdmVy
c2lvbiAiMS4wLjIiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3Bz
ZXVkb21hcC8tL3BzZXVkb21hcC0xLjAuMi50Z3ojZjA1MmEyOGRhNzBlNjE4OTE3ZWYwYThhYzM0
YzFhZTVhNjgyODZiMyIKLQotcHVueWNvZGVAXjEuMi40OgotICB2ZXJzaW9uICIxLjQuMSIKLSAg
cmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vcHVueWNvZGUvLS9wdW55Y29k
ZS0xLjQuMS50Z3ojYzBkNWE2M2IyNzE4ODAwYWQ4ZTFlYjBmYTUyNjljODRkZDQxODQ1ZSIKLQot
cHVueWNvZGVAMS4zLjI6Ci0gIHZlcnNpb24gIjEuMy4yIgotICByZXNvbHZlZCAiaHR0cHM6Ly9y
ZWdpc3RyeS55YXJucGtnLmNvbS9wdW55Y29kZS8tL3B1bnljb2RlLTEuMy4yLnRneiM5NjUzYTAz
NmZiN2MxZWU0MjM0MmYyMzI1Y2NlZWZlYTM5MjZjNDhkIgotCi1xQF4xLjEuMjoKLSAgdmVyc2lv
biAiMS40LjEiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3EvLS9x
LTEuNC4xLnRneiM1NTcwNWJjZDkzYzVmMzY3MzUzMGMyYzJjYmMwYzJiM2FkZGMyODZlIgotCi1x
c0B+Ni4yLjA6Ci0gIHZlcnNpb24gIjYuMi4xIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3Ry
eS55YXJucGtnLmNvbS9xcy8tL3FzLTYuMi4xLnRneiNjZTAzYzVmZjA5MzViYzFkOWQ2OWE5ZjE0
Y2JkMThlNTY4ZDY3NjI1IgotCi1xc0A2LjIuMDoKLSAgdmVyc2lvbiAiNi4yLjAiCi0gIHJlc29s
dmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3FzLy0vcXMtNi4yLjAudGd6IzNiNzg0
OGMwM2MyZGVjZTY5YTk1MjJiMGZhZThjNDEyNmQ3NDVmM2IiCi0KLXF1ZXJ5LXN0cmluZ0BeNC4x
LjA6Ci0gIHZlcnNpb24gIjQuMi4zIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJu
cGtnLmNvbS9xdWVyeS1zdHJpbmcvLS9xdWVyeS1zdHJpbmctNC4yLjMudGd6IzlmMjcyNzNkMjA3
YTI1YThlZTRjN2I4Yzc0ZGNkNDVkNTU2ZGI4MjIiCi0gIGRlcGVuZGVuY2llczoKLSAgICBvYmpl
Y3QtYXNzaWduICJeNC4xLjAiCi0gICAgc3RyaWN0LXVyaS1lbmNvZGUgIl4xLjAuMCIKLQotcXVl
cnlzdHJpbmctZXMzQH4wLjIuMDoKLSAgdmVyc2lvbiAiMC4yLjEiCi0gIHJlc29sdmVkICJodHRw
czovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3F1ZXJ5c3RyaW5nLWVzMy8tL3F1ZXJ5c3RyaW5nLWVz
My0wLjIuMS50Z3ojOWVjNjFmNzkwNDk4NzU3MDdkNjk0MTQ1OTZmZDkwN2E0ZDcxMWU3MyIKLQot
cXVlcnlzdHJpbmdAMC4yLjA6Ci0gIHZlcnNpb24gIjAuMi4wIgotICByZXNvbHZlZCAiaHR0cHM6
Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9xdWVyeXN0cmluZy8tL3F1ZXJ5c3RyaW5nLTAuMi4wLnRn
eiNiMjA5ODQ5MjAzYmIyNWRmODIwZGE3NTZlNzQ3MDA1ODc4NTIxNjIwIgotCi1xdWVyeXN0cmlu
Z2lmeUAwLjAueDoKLSAgdmVyc2lvbiAiMC4wLjQiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lz
dHJ5Lnlhcm5wa2cuY29tL3F1ZXJ5c3RyaW5naWZ5Ly0vcXVlcnlzdHJpbmdpZnktMC4wLjQudGd6
IzBjZjdmODRmOTQ2M2ZmMGFlNTFjNGM0YjE0MmQ5NWJlMzc3MjRkOWMiCi0KLXJhbmRvbWF0aWNA
XjEuMS4zOgotICB2ZXJzaW9uICIxLjEuNSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnku
eWFybnBrZy5jb20vcmFuZG9tYXRpYy8tL3JhbmRvbWF0aWMtMS4xLjUudGd6IzVlOWVmNWYyZDU3
M2M2N2JkMmI4MTI0YWU5MGI1MTU2ZTQ1Nzg0MGIiCi0gIGRlcGVuZGVuY2llczoKLSAgICBpcy1u
dW1iZXIgIl4yLjAuMiIKLSAgICBraW5kLW9mICJeMy4wLjIiCi0KLXJhbmdlLXBhcnNlckBeMS4w
LjMsIHJhbmdlLXBhcnNlckB+MS4yLjA6Ci0gIHZlcnNpb24gIjEuMi4wIgotICByZXNvbHZlZCAi
aHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9yYW5nZS1wYXJzZXIvLS9yYW5nZS1wYXJzZXIt
MS4yLjAudGd6I2Y0OWJlNmI0ODc4OTRkZGM0MGRjYzk0YTMyMmY2MTEwOTJlMDBkNWUiCi0KLXJj
QH4xLjEuMDoKLSAgdmVyc2lvbiAiMS4xLjYiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5
Lnlhcm5wa2cuY29tL3JjLy0vcmMtMS4xLjYudGd6IzQzNjUxYjc2YjZhZTUzYjVjODAyZjExNTFm
YTNmYzNiMDU5OTY5YzkiCi0gIGRlcGVuZGVuY2llczoKLSAgICBkZWVwLWV4dGVuZCAifjAuNC4w
IgotICAgIGluaSAifjEuMy4wIgotICAgIG1pbmltaXN0ICJeMS4yLjAiCi0gICAgc3RyaXAtanNv
bi1jb21tZW50cyAifjEuMC40IgotCi1yZWFjdC1hZGRvbnMtdGVzdC11dGlsc0BeMTUuMy4wOgot
ICB2ZXJzaW9uICIxNS4zLjIiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cu
Y29tL3JlYWN0LWFkZG9ucy10ZXN0LXV0aWxzLy0vcmVhY3QtYWRkb25zLXRlc3QtdXRpbHMtMTUu
My4yLnRneiNjMDlhNDRmNTgzNDI1YTRhOWMxYjM4NDQ0ZDdhNmMzZTZmMGY0MWY2IgotCi1yZWFj
dC1kZXYtdXRpbHNAXjAuMi4xOgotICB2ZXJzaW9uICIwLjIuMSIKLSAgcmVzb2x2ZWQgImh0dHBz
Oi8vcmVnaXN0cnkueWFybnBrZy5jb20vcmVhY3QtZGV2LXV0aWxzLy0vcmVhY3QtZGV2LXV0aWxz
LTAuMi4xLnRneiNjMDE3ZDZmNTMwNTAyYjI4YjczNWRiYWMzODQxYTdiODY2NTgzOGY1IgotICBk
ZXBlbmRlbmNpZXM6Ci0gICAgYW5zaS1odG1sICIwLjAuNSIKLSAgICBjaGFsayAiMS4xLjMiCi0g
ICAgZXNjYXBlLXN0cmluZy1yZWdleHAgIjEuMC41IgotICAgIGh0bWwtZW50aXRpZXMgIjEuMi4w
IgotICAgIG9wbiAiNC4wLjIiCi0gICAgc29ja2pzLWNsaWVudCAiMS4wLjMiCi0gICAgc3RyaXAt
YW5zaSAiMy4wLjEiCi0KLXJlYWN0LWRvbUBeMTUuMy4wOgotICB2ZXJzaW9uICIxNS4zLjIiCi0g
IHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3JlYWN0LWRvbS8tL3JlYWN0
LWRvbS0xNS4zLjIudGd6I2M0NmIwYWE1MzgwZDdiODM4ZTdhNTljNGE3YmVmZjJlZDMxNTUzMWYi
Ci0KLXJlYWN0LXJlZHV4QF40LjQuNToKLSAgdmVyc2lvbiAiNC40LjUiCi0gIHJlc29sdmVkICJo
dHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3JlYWN0LXJlZHV4Ly0vcmVhY3QtcmVkdXgtNC40
LjUudGd6I2Y1MDlhMjk4MWJlMjI1MmQxMGM2MjllZjdjNTU5MzQ3YTRhZWM0NTciCi0gIGRlcGVu
ZGVuY2llczoKLSAgICBob2lzdC1ub24tcmVhY3Qtc3RhdGljcyAiXjEuMC4zIgotICAgIGludmFy
aWFudCAiXjIuMC4wIgotICAgIGxvZGFzaCAiXjQuMi4wIgotICAgIGxvb3NlLWVudmlmeSAiXjEu
MS4wIgotCi1yZWFjdC1zY3JpcHRzQF4wLjYuMDoKLSAgdmVyc2lvbiAiMC42LjEiCi0gIHJlc29s
dmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3JlYWN0LXNjcmlwdHMvLS9yZWFjdC1z
Y3JpcHRzLTAuNi4xLnRneiM1MjZjYzQ3MmFlMGMwZGU2YmM0ZmRjYmIxOThhZjJhNjJjNmQ0Njcx
IgotICBkZXBlbmRlbmNpZXM6Ci0gICAgYXV0b3ByZWZpeGVyICI2LjQuMSIKLSAgICBiYWJlbC1j
b3JlICI2LjE0LjAiCi0gICAgYmFiZWwtZXNsaW50ICI2LjEuMiIKLSAgICBiYWJlbC1qZXN0ICIx
NS4wLjAiCi0gICAgYmFiZWwtbG9hZGVyICI2LjIuNSIKLSAgICBiYWJlbC1wcmVzZXQtcmVhY3Qt
YXBwICJeMC4yLjEiCi0gICAgY2FzZS1zZW5zaXRpdmUtcGF0aHMtd2VicGFjay1wbHVnaW4gIjEu
MS40IgotICAgIGNoYWxrICIxLjEuMyIKLSAgICBjb25uZWN0LWhpc3RvcnktYXBpLWZhbGxiYWNr
ICIxLjMuMCIKLSAgICBjcm9zcy1zcGF3biAiNC4wLjAiCi0gICAgY3NzLWxvYWRlciAiMC4yNC4w
IgotICAgIGRldGVjdC1wb3J0ICIxLjAuMCIKLSAgICBkb3RlbnYgIjIuMC4wIgotICAgIGVzbGlu
dCAiMy41LjAiCi0gICAgZXNsaW50LWNvbmZpZy1yZWFjdC1hcHAgIl4wLjIuMSIKLSAgICBlc2xp
bnQtbG9hZGVyICIxLjUuMCIKLSAgICBlc2xpbnQtcGx1Z2luLWZsb3d0eXBlICIyLjE4LjEiCi0g
ICAgZXNsaW50LXBsdWdpbi1pbXBvcnQgIjEuMTIuMCIKLSAgICBlc2xpbnQtcGx1Z2luLWpzeC1h
MTF5ICIyLjIuMiIKLSAgICBlc2xpbnQtcGx1Z2luLXJlYWN0ICI2LjMuMCIKLSAgICBleHRyYWN0
LXRleHQtd2VicGFjay1wbHVnaW4gIjEuMC4xIgotICAgIGZpbGUtbG9hZGVyICIwLjkuMCIKLSAg
ICBmaWxlc2l6ZSAiMy4zLjAiCi0gICAgZmluZC1jYWNoZS1kaXIgIjAuMS4xIgotICAgIGZzLWV4
dHJhICIwLjMwLjAiCi0gICAgZ3ppcC1zaXplICIzLjAuMCIKLSAgICBodG1sLXdlYnBhY2stcGx1
Z2luICIyLjIyLjAiCi0gICAgaHR0cC1wcm94eS1taWRkbGV3YXJlICIwLjE3LjEiCi0gICAgamVz
dCAiMTUuMS4xIgotICAgIGpzb24tbG9hZGVyICIwLjUuNCIKLSAgICBvYmplY3QtYXNzaWduICI0
LjEuMCIKLSAgICBwYXRoLWV4aXN0cyAiMi4xLjAiCi0gICAgcG9zdGNzcy1sb2FkZXIgIjAuMTMu
MCIKLSAgICBwcm9taXNlICI3LjEuMSIKLSAgICByZWFjdC1kZXYtdXRpbHMgIl4wLjIuMSIKLSAg
ICByZWN1cnNpdmUtcmVhZGRpciAiMi4xLjAiCi0gICAgcmltcmFmICIyLjUuNCIKLSAgICBzdHJp
cC1hbnNpICIzLjAuMSIKLSAgICBzdHlsZS1sb2FkZXIgIjAuMTMuMSIKLSAgICB1cmwtbG9hZGVy
ICIwLjUuNyIKLSAgICB3ZWJwYWNrICIxLjEzLjIiCi0gICAgd2VicGFjay1kZXYtc2VydmVyICIx
LjE2LjEiCi0gICAgd2hhdHdnLWZldGNoICIxLjAuMCIKLSAgb3B0aW9uYWxEZXBlbmRlbmNpZXM6
Ci0gICAgZnNldmVudHMgIjEuMC4xNCIKLQotcmVhY3RAXjE1LjMuMDoKLSAgdmVyc2lvbiAiMTUu
My4yIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9yZWFjdC8tL3Jl
YWN0LTE1LjMuMi50Z3ojYTdiY2NkMmZlZThhZjEyNmIwMzE3ZTIyMmMyOGQxZDU0NTI4ZDA5ZSIK
LSAgZGVwZW5kZW5jaWVzOgotICAgIGZianMgIl4wLjguNCIKLSAgICBsb29zZS1lbnZpZnkgIl4x
LjEuMCIKLSAgICBvYmplY3QtYXNzaWduICJeNC4xLjAiCi0KLXJlYWQtcGtnLXVwQF4xLjAuMToK
LSAgdmVyc2lvbiAiMS4wLjEiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cu
Y29tL3JlYWQtcGtnLXVwLy0vcmVhZC1wa2ctdXAtMS4wLjEudGd6IzlkNjNjMTMyNzZjMDY1OTE4
ZDU3ZjAwMmE1N2Y0MGExYjY0M2ZiMDIiCi0gIGRlcGVuZGVuY2llczoKLSAgICBmaW5kLXVwICJe
MS4wLjAiCi0gICAgcmVhZC1wa2cgIl4xLjAuMCIKLQotcmVhZC1wa2dAXjEuMC4wOgotICB2ZXJz
aW9uICIxLjEuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vcmVh
ZC1wa2cvLS9yZWFkLXBrZy0xLjEuMC50Z3ojZjVmZmFhNWVjZDI5Y2IzMWMwNDc0YmNhN2Q3NTZi
NmJiMjllM2YyOCIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGxvYWQtanNvbi1maWxlICJeMS4wLjAi
Ci0gICAgbm9ybWFsaXplLXBhY2thZ2UtZGF0YSAiXjIuMy4yIgotICAgIHBhdGgtdHlwZSAiXjEu
MC4wIgotCi1yZWFkYWJsZS1zdHJlYW1AXjEuMC4yNy0xLCByZWFkYWJsZS1zdHJlYW1AXjEuMS4x
MzoKLSAgdmVyc2lvbiAiMS4xLjE0IgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJu
cGtnLmNvbS9yZWFkYWJsZS1zdHJlYW0vLS9yZWFkYWJsZS1zdHJlYW0tMS4xLjE0LnRneiM3Y2Y0
YzU0ZWY2NDhlMzgxMzA4NGM2MzZkZDIwNzllMTY2YzA4MWQ5IgotICBkZXBlbmRlbmNpZXM6Ci0g
ICAgY29yZS11dGlsLWlzICJ+MS4wLjAiCi0gICAgaW5oZXJpdHMgIn4yLjAuMSIKLSAgICBpc2Fy
cmF5ICIwLjAuMSIKLSAgICBzdHJpbmdfZGVjb2RlciAifjAuMTAueCIKLQotInJlYWRhYmxlLXN0
cmVhbUBeMi4wLjAgfHwgXjEuMS4xMyIsIHJlYWRhYmxlLXN0cmVhbUBeMi4wLjEsIHJlYWRhYmxl
LXN0cmVhbUBeMi4wLjIsIHJlYWRhYmxlLXN0cmVhbUB+Mi4xLjQ6Ci0gIHZlcnNpb24gIjIuMS41
IgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9yZWFkYWJsZS1zdHJl
YW0vLS9yZWFkYWJsZS1zdHJlYW0tMi4xLjUudGd6IzY2ZmE4YjcyMGUxNDM4YjM2NDY4MWYyYWQx
YTYzYzYxODQ0OGM5ZDAiCi0gIGRlcGVuZGVuY2llczoKLSAgICBidWZmZXItc2hpbXMgIl4xLjAu
MCIKLSAgICBjb3JlLXV0aWwtaXMgIn4xLjAuMCIKLSAgICBpbmhlcml0cyAifjIuMC4xIgotICAg
IGlzYXJyYXkgIn4xLjAuMCIKLSAgICBwcm9jZXNzLW5leHRpY2stYXJncyAifjEuMC42IgotICAg
IHN0cmluZ19kZWNvZGVyICJ+MC4xMC54IgotICAgIHV0aWwtZGVwcmVjYXRlICJ+MS4wLjEiCi0K
LXJlYWRhYmxlLXN0cmVhbUB+Mi4wLjAsIHJlYWRhYmxlLXN0cmVhbUB+Mi4wLjU6Ci0gIHZlcnNp
b24gIjIuMC42IgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9yZWFk
YWJsZS1zdHJlYW0vLS9yZWFkYWJsZS1zdHJlYW0tMi4wLjYudGd6IzhmOTAzNDFlNjhhNTNjY2M5
Mjg3ODhkYWNmY2QxMWIzNmViOWI3OGUiCi0gIGRlcGVuZGVuY2llczoKLSAgICBjb3JlLXV0aWwt
aXMgIn4xLjAuMCIKLSAgICBpbmhlcml0cyAifjIuMC4xIgotICAgIGlzYXJyYXkgIn4xLjAuMCIK
LSAgICBwcm9jZXNzLW5leHRpY2stYXJncyAifjEuMC42IgotICAgIHN0cmluZ19kZWNvZGVyICJ+
MC4xMC54IgotICAgIHV0aWwtZGVwcmVjYXRlICJ+MS4wLjEiCi0KLXJlYWRhYmxlLXN0cmVhbUAx
LjA6Ci0gIHZlcnNpb24gIjEuMC4zNCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFy
bnBrZy5jb20vcmVhZGFibGUtc3RyZWFtLy0vcmVhZGFibGUtc3RyZWFtLTEuMC4zNC50Z3ojMTI1
ODIwZTM0YmM4NDJkMmYyYWFhZmFmZTRjMjkxNmVlMzJjMTU3YyIKLSAgZGVwZW5kZW5jaWVzOgot
ICAgIGNvcmUtdXRpbC1pcyAifjEuMC4wIgotICAgIGluaGVyaXRzICJ+Mi4wLjEiCi0gICAgaXNh
cnJheSAiMC4wLjEiCi0gICAgc3RyaW5nX2RlY29kZXIgIn4wLjEwLngiCi0KLXJlYWRhYmxlLXN0
cmVhbUAxLjE6Ci0gIHZlcnNpb24gIjEuMS4xMyIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0
cnkueWFybnBrZy5jb20vcmVhZGFibGUtc3RyZWFtLy0vcmVhZGFibGUtc3RyZWFtLTEuMS4xMy50
Z3ojZjZlZWY3NjRmNTE0Yzg5ZTJiOWUyMzE0NmE3NWJhMTA2NzU2ZDIzZSIKLSAgZGVwZW5kZW5j
aWVzOgotICAgIGNvcmUtdXRpbC1pcyAifjEuMC4wIgotICAgIGluaGVyaXRzICJ+Mi4wLjEiCi0g
ICAgaXNhcnJheSAiMC4wLjEiCi0gICAgc3RyaW5nX2RlY29kZXIgIn4wLjEwLngiCi0KLXJlYWRk
aXJwQF4yLjAuMDoKLSAgdmVyc2lvbiAiMi4xLjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lz
dHJ5Lnlhcm5wa2cuY29tL3JlYWRkaXJwLy0vcmVhZGRpcnAtMi4xLjAudGd6IzRlZDBhZDA2MGRm
MzA3MzMwMGM0ODQ0MDM3M2Y3MmQxY2M2NDJkNzgiCi0gIGRlcGVuZGVuY2llczoKLSAgICBncmFj
ZWZ1bC1mcyAiXjQuMS4yIgotICAgIG1pbmltYXRjaCAiXjMuMC4yIgotICAgIHJlYWRhYmxlLXN0
cmVhbSAiXjIuMC4yIgotICAgIHNldC1pbW1lZGlhdGUtc2hpbSAiXjEuMC4xIgotCi1yZWFkbGlu
ZTJAXjEuMC4xOgotICB2ZXJzaW9uICIxLjAuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0
cnkueWFybnBrZy5jb20vcmVhZGxpbmUyLy0vcmVhZGxpbmUyLTEuMC4xLnRneiM0MTA1OTYwOGZm
YzE1NDc1N2I3MTVkOTk4OWQxOTlmZmJmMzcyZTM1IgotICBkZXBlbmRlbmNpZXM6Ci0gICAgY29k
ZS1wb2ludC1hdCAiXjEuMC4wIgotICAgIGlzLWZ1bGx3aWR0aC1jb2RlLXBvaW50ICJeMS4wLjAi
Ci0gICAgbXV0ZS1zdHJlYW0gIjAuMC41IgotCi1yZWN1cnNpdmUtcmVhZGRpckAyLjEuMDoKLSAg
dmVyc2lvbiAiMi4xLjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29t
L3JlY3Vyc2l2ZS1yZWFkZGlyLy0vcmVjdXJzaXZlLXJlYWRkaXItMi4xLjAudGd6Izc4YjdiZmQ3
OTU4MmQzZDc1OTZiOGZmMWJkMjlmYmQ1MDIyOWY2YWEiCi0gIGRlcGVuZGVuY2llczoKLSAgICBt
aW5pbWF0Y2ggIjMuMC4yIgotCi1yZWRleWVkQH4xLjAuMDoKLSAgdmVyc2lvbiAiMS4wLjAiCi0g
IHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3JlZGV5ZWQvLS9yZWRleWVk
LTEuMC4wLnRneiM2Y2UyNTA0NWM5ZTFmOWIyOGMwYWU3M2NlMjk2MGM4Y2I0ODE4NGIxIgotICBk
ZXBlbmRlbmNpZXM6Ci0gICAgZXNwcmltYSAifjIuNy4wIgotCi1yZWR1Y2UtY3NzLWNhbGNAXjEu
Mi42OgotICB2ZXJzaW9uICIxLjMuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFy
bnBrZy5jb20vcmVkdWNlLWNzcy1jYWxjLy0vcmVkdWNlLWNzcy1jYWxjLTEuMy4wLnRneiM3NDdj
OTE0ZTA0OTYxNGE0YzljZmJiYTYyOTg3MWFkMWQyOTI3NzE2IgotICBkZXBlbmRlbmNpZXM6Ci0g
ICAgYmFsYW5jZWQtbWF0Y2ggIl4wLjQuMiIKLSAgICBtYXRoLWV4cHJlc3Npb24tZXZhbHVhdG9y
ICJeMS4yLjE0IgotICAgIHJlZHVjZS1mdW5jdGlvbi1jYWxsICJeMS4wLjEiCi0KLXJlZHVjZS1m
dW5jdGlvbi1jYWxsQF4xLjAuMToKLSAgdmVyc2lvbiAiMS4wLjEiCi0gIHJlc29sdmVkICJodHRw
czovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3JlZHVjZS1mdW5jdGlvbi1jYWxsLy0vcmVkdWNlLWZ1
bmN0aW9uLWNhbGwtMS4wLjEudGd6I2ZhMDJlMTI2ZTY5NTgyNDI2M2NhYjkxZDNhNWIwZmRjMWRk
MjdhOWEiCi0gIGRlcGVuZGVuY2llczoKLSAgICBiYWxhbmNlZC1tYXRjaCAifjAuMS4wIgotCi1y
ZWR1eEBeMy41LjI6Ci0gIHZlcnNpb24gIjMuNi4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdp
c3RyeS55YXJucGtnLmNvbS9yZWR1eC8tL3JlZHV4LTMuNi4wLnRneiM4ODdjMmIzZDBiOWJkODZl
Y2EyYmU3MDU3MWMyNzY1NGMxOWUxODhkIgotICBkZXBlbmRlbmNpZXM6Ci0gICAgbG9kYXNoICJe
NC4yLjEiCi0gICAgbG9kYXNoLWVzICJeNC4yLjEiCi0gICAgbG9vc2UtZW52aWZ5ICJeMS4xLjAi
Ci0gICAgc3ltYm9sLW9ic2VydmFibGUgIl4xLjAuMiIKLQotcmVnZW5lcmF0ZUBeMS4yLjE6Ci0g
IHZlcnNpb24gIjEuMy4xIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNv
bS9yZWdlbmVyYXRlLy0vcmVnZW5lcmF0ZS0xLjMuMS50Z3ojMDMwMDIwM2E1ZDJmZGNmODkxMTZk
Y2U4NDI3NWQwMTFmNTkwM2YzMyIKLQotcmVnZW5lcmF0b3ItcnVudGltZUBeMC45LjU6Ci0gIHZl
cnNpb24gIjAuOS41IgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9y
ZWdlbmVyYXRvci1ydW50aW1lLy0vcmVnZW5lcmF0b3ItcnVudGltZS0wLjkuNS50Z3ojNDAzZDZk
NDBhNGJkZmY5YzMzMGRkOTM5MmRjYmIyZDlhOGJiYTFmYyIKLQotcmVnZXgtY2FjaGVAXjAuNC4y
OgotICB2ZXJzaW9uICIwLjQuMyIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBr
Zy5jb20vcmVnZXgtY2FjaGUvLS9yZWdleC1jYWNoZS0wLjQuMy50Z3ojOWIxYTZjMzVkNGQwZGZj
ZWY1NzExYWU2NTFlOGU5ZDNkNzExNDE0NSIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGlzLWVxdWFs
LXNoYWxsb3cgIl4wLjEuMyIKLSAgICBpcy1wcmltaXRpdmUgIl4yLjAuMCIKLQotcmVnZXhwdS1j
b3JlQF4xLjAuMDoKLSAgdmVyc2lvbiAiMS4wLjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lz
dHJ5Lnlhcm5wa2cuY29tL3JlZ2V4cHUtY29yZS8tL3JlZ2V4cHUtY29yZS0xLjAuMC50Z3ojODZh
NzYzZjU4ZWU0ZDdjMmY2YjEwMmU0NzY0MDUwZGU3ZWQ5MGM2YiIKLSAgZGVwZW5kZW5jaWVzOgot
ICAgIHJlZ2VuZXJhdGUgIl4xLjIuMSIKLSAgICByZWdqc2dlbiAiXjAuMi4wIgotICAgIHJlZ2pz
cGFyc2VyICJeMC4xLjQiCi0KLXJlZ2V4cHUtY29yZUBeMi4wLjA6Ci0gIHZlcnNpb24gIjIuMC4w
IgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9yZWdleHB1LWNvcmUv
LS9yZWdleHB1LWNvcmUtMi4wLjAudGd6IzQ5ZDAzODgzN2I4ZGNmOGJmYTViOWE0MjEzOTkzOGU2
ZWEyYWUyNDAiCi0gIGRlcGVuZGVuY2llczoKLSAgICByZWdlbmVyYXRlICJeMS4yLjEiCi0gICAg
cmVnanNnZW4gIl4wLjIuMCIKLSAgICByZWdqc3BhcnNlciAiXjAuMS40IgotCi1yZWdqc2dlbkBe
MC4yLjA6Ci0gIHZlcnNpb24gIjAuMi4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55
YXJucGtnLmNvbS9yZWdqc2dlbi8tL3JlZ2pzZ2VuLTAuMi4wLnRneiM2YzAxNmFkZWFjNTU0Zjc1
ODIzZmUzN2FjMDViOTJkNWE0ZWRiMWY3IgotCi1yZWdqc3BhcnNlckBeMC4xLjQ6Ci0gIHZlcnNp
b24gIjAuMS41IgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9yZWdq
c3BhcnNlci8tL3JlZ2pzcGFyc2VyLTAuMS41LnRneiM3ZWU4Zjg0ZGM2ZmE3OTJkM2ZkMGFlMjI4
ZDI0YmQ5NDllYWQyMDVjIgotICBkZXBlbmRlbmNpZXM6Ci0gICAganNlc2MgIn4wLjUuMCIKLQot
cmVsYXRldXJsQDAuMi54OgotICB2ZXJzaW9uICIwLjIuNyIKLSAgcmVzb2x2ZWQgImh0dHBzOi8v
cmVnaXN0cnkueWFybnBrZy5jb20vcmVsYXRldXJsLy0vcmVsYXRldXJsLTAuMi43LnRneiM1NGRi
ZjM3N2U1MTQ0MGFjYTkwYTRjZDI3NDYwMGQzZmYyZDg4OGE5IgotCi1yZW5kZXJraWRAfjIuMC4w
OgotICB2ZXJzaW9uICIyLjAuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBr
Zy5jb20vcmVuZGVya2lkLy0vcmVuZGVya2lkLTIuMC4wLnRneiMxODU5NzUzZTdhNWFkYmYzNTQ0
M2FiYTBkNGU0NTc5ZTc4YWJlZTg1IgotICBkZXBlbmRlbmNpZXM6Ci0gICAgY3NzLXNlbGVjdCAi
XjEuMS4wIgotICAgIGRvbS1jb252ZXJ0ZXIgIn4wLjEiCi0gICAgaHRtbHBhcnNlcjIgIn4zLjMu
MCIKLSAgICBzdHJpcC1hbnNpICJeMy4wLjAiCi0gICAgdXRpbGEgIn4wLjMiCi0KLXJlcGVhdC1l
bGVtZW50QF4xLjEuMjoKLSAgdmVyc2lvbiAiMS4xLjIiCi0gIHJlc29sdmVkICJodHRwczovL3Jl
Z2lzdHJ5Lnlhcm5wa2cuY29tL3JlcGVhdC1lbGVtZW50Ly0vcmVwZWF0LWVsZW1lbnQtMS4xLjIu
dGd6I2VmMDg5YTE3OGQxNDgzYmFhZTRkOTNlYjk4YjRmOWU0ZTExZDk5MGEiCi0KLXJlcGVhdC1z
dHJpbmdAXjEuNS4yOgotICB2ZXJzaW9uICIxLjUuNCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVn
aXN0cnkueWFybnBrZy5jb20vcmVwZWF0LXN0cmluZy8tL3JlcGVhdC1zdHJpbmctMS41LjQudGd6
IzY0ZWMwYzkxZTBmNGI0NzVmOTBkNWI2NDM2NTFlM2U2ZTViNmMyZDUiCi0KLXJlcGVhdGluZ0Be
MS4xLjA6Ci0gIHZlcnNpb24gIjEuMS4zIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55
YXJucGtnLmNvbS9yZXBlYXRpbmcvLS9yZXBlYXRpbmctMS4xLjMudGd6IzNkNDExNDIxODg3NzUz
NzQ5NGY5N2Y3N2Y5Nzg1ZmFiODEwZmE0YWMiCi0gIGRlcGVuZGVuY2llczoKLSAgICBpcy1maW5p
dGUgIl4xLjAuMCIKLQotcmVxdWVzdEBeMi41NS4wLCByZXF1ZXN0QDIueDoKLSAgdmVyc2lvbiAi
Mi43NS4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9yZXF1ZXN0
Ly0vcmVxdWVzdC0yLjc1LjAudGd6I2QyYjgyNjhhMjg2ZGExM2VhYTVkMDFhZGY1ZDE4Y2M5MGY2
NTdkOTMiCi0gIGRlcGVuZGVuY2llczoKLSAgICBhd3Mtc2lnbjIgIn4wLjYuMCIKLSAgICBhd3M0
ICJeMS4yLjEiCi0gICAgYmwgIn4xLjEuMiIKLSAgICBjYXNlbGVzcyAifjAuMTEuMCIKLSAgICBj
b21iaW5lZC1zdHJlYW0gIn4xLjAuNSIKLSAgICBleHRlbmQgIn4zLjAuMCIKLSAgICBmb3JldmVy
LWFnZW50ICJ+MC42LjEiCi0gICAgZm9ybS1kYXRhICJ+Mi4wLjAiCi0gICAgaGFyLXZhbGlkYXRv
ciAifjIuMC42IgotICAgIGhhd2sgIn4zLjEuMyIKLSAgICBodHRwLXNpZ25hdHVyZSAifjEuMS4w
IgotICAgIGlzLXR5cGVkYXJyYXkgIn4xLjAuMCIKLSAgICBpc3N0cmVhbSAifjAuMS4yIgotICAg
IGpzb24tc3RyaW5naWZ5LXNhZmUgIn41LjAuMSIKLSAgICBtaW1lLXR5cGVzICJ+Mi4xLjciCi0g
ICAgbm9kZS11dWlkICJ+MS40LjciCi0gICAgb2F1dGgtc2lnbiAifjAuOC4xIgotICAgIHFzICJ+
Ni4yLjAiCi0gICAgc3RyaW5nc3RyZWFtICJ+MC4wLjQiCi0gICAgdG91Z2gtY29va2llICJ+Mi4z
LjAiCi0gICAgdHVubmVsLWFnZW50ICJ+MC40LjEiCi0KLXJlcXVpcmUtZGlyZWN0b3J5QF4yLjEu
MToKLSAgdmVyc2lvbiAiMi4xLjEiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5w
a2cuY29tL3JlcXVpcmUtZGlyZWN0b3J5Ly0vcmVxdWlyZS1kaXJlY3RvcnktMi4xLjEudGd6Izhj
NjRhZDVmZDMwZGFiMWM5NzZlMjM0NGZmZTdmNzkyYTZhNmRmNDIiCi0KLXJlcXVpcmUtbWFpbi1m
aWxlbmFtZUBeMS4wLjE6Ci0gIHZlcnNpb24gIjEuMC4xIgotICByZXNvbHZlZCAiaHR0cHM6Ly9y
ZWdpc3RyeS55YXJucGtnLmNvbS9yZXF1aXJlLW1haW4tZmlsZW5hbWUvLS9yZXF1aXJlLW1haW4t
ZmlsZW5hbWUtMS4wLjEudGd6Izk3ZjcxN2I2OWQ0ODc4NGY1ZjUyNmE2YzVhYThmZmRkYTA1NWE0
ZDEiCi0KLXJlcXVpcmUtdW5jYWNoZWRAXjEuMC4yOgotICB2ZXJzaW9uICIxLjAuMiIKLSAgcmVz
b2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vcmVxdWlyZS11bmNhY2hlZC8tL3Jl
cXVpcmUtdW5jYWNoZWQtMS4wLjIudGd6IzY3ZGFkM2I3MzMwODllNzcwMzAxMjQ2NzhhNDU5NTg5
ZmFmNmE3ZWMiCi0gIGRlcGVuZGVuY2llczoKLSAgICBjYWxsZXItcGF0aCAiXjAuMS4wIgotICAg
IHJlc29sdmUtZnJvbSAiXjEuMC4wIgotCi1yZXF1aXJlcy1wb3J0QDEuMC54LCByZXF1aXJlcy1w
b3J0QDEueC54OgotICB2ZXJzaW9uICIxLjAuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0
cnkueWFybnBrZy5jb20vcmVxdWlyZXMtcG9ydC8tL3JlcXVpcmVzLXBvcnQtMS4wLjAudGd6Izky
NWQyNjAxZDM5YWM0ODVlMDkxY2YwZGE1YzZlNjk0ZGMzZGNhZmYiCi0KLXJlc29sdmUtZnJvbUBe
MS4wLjA6Ci0gIHZlcnNpb24gIjEuMC4xIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55
YXJucGtnLmNvbS9yZXNvbHZlLWZyb20vLS9yZXNvbHZlLWZyb20tMS4wLjEudGd6IzI2Y2JmZTkz
NWQxYWVlZWFiYjI5YmMzZmU1YWViMDFlOTNkNDQyMjYiCi0KLXJlc29sdmVAXjEuMS42LCByZXNv
bHZlQDEuMS43LCByZXNvbHZlQDEuMS54OgotICB2ZXJzaW9uICIxLjEuNyIKLSAgcmVzb2x2ZWQg
Imh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vcmVzb2x2ZS8tL3Jlc29sdmUtMS4xLjcudGd6
IzIwMzExNGQ4MmFkMmM1ZWQ5ZThlMDQxMWIzOTMyODc1ZTg4OWU5N2IiCi0KLXJlc3RvcmUtY3Vy
c29yQF4xLjAuMToKLSAgdmVyc2lvbiAiMS4wLjEiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lz
dHJ5Lnlhcm5wa2cuY29tL3Jlc3RvcmUtY3Vyc29yLy0vcmVzdG9yZS1jdXJzb3ItMS4wLjEudGd6
IzM0NjYxZjQ2ODg2MzI3ZmVkMjk5MTQ3OTE1MjI1MmRmOTJkYWE1NDEiCi0gIGRlcGVuZGVuY2ll
czoKLSAgICBleGl0LWhvb2sgIl4xLjAuMCIKLSAgICBvbmV0aW1lICJeMS4wLjAiCi0KLXJpZ2h0
LWFsaWduQF4wLjEuMToKLSAgdmVyc2lvbiAiMC4xLjMiCi0gIHJlc29sdmVkICJodHRwczovL3Jl
Z2lzdHJ5Lnlhcm5wa2cuY29tL3JpZ2h0LWFsaWduLy0vcmlnaHQtYWxpZ24tMC4xLjMudGd6IzYx
MzM5YjcyMmZlNmEzNTE1Njg5MjEwZDI0ZTE0Yzk2MTQ4NjEzZWYiCi0gIGRlcGVuZGVuY2llczoK
LSAgICBhbGlnbi10ZXh0ICJeMC4xLjEiCi0KLXJpbXJhZkBeMi4yLjgsIHJpbXJhZkBeMi40LjMs
IHJpbXJhZkBeMi40LjQsIHJpbXJhZkB+Mi41LjAsIHJpbXJhZkB+Mi41LjEsIHJpbXJhZkAyLCBy
aW1yYWZAMi41LjQ6Ci0gIHZlcnNpb24gIjIuNS40IgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdp
c3RyeS55YXJucGtnLmNvbS9yaW1yYWYvLS9yaW1yYWYtMi41LjQudGd6Izk2ODAwMDkzY2JmMWEw
Yzg2YmQ5NWI0NjI1NDY3NTM1YzI5ZGZhMDQiCi0gIGRlcGVuZGVuY2llczoKLSAgICBnbG9iICJe
Ny4wLjUiCi0KLXJpcGVtZDE2MEAwLjIuMDoKLSAgdmVyc2lvbiAiMC4yLjAiCi0gIHJlc29sdmVk
ICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3JpcGVtZDE2MC8tL3JpcGVtZDE2MC0wLjIu
MC50Z3ojMmJmMTk4YmRlMTY3Y2FjZmE1MWMwYTkyOGU4NGI2OGJiZTE3MWZjZSIKLQotcnVuLWFz
eW5jQF4wLjEuMDoKLSAgdmVyc2lvbiAiMC4xLjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lz
dHJ5Lnlhcm5wa2cuY29tL3J1bi1hc3luYy8tL3J1bi1hc3luYy0wLjEuMC50Z3ojYzhhZDRhNWUx
MTA2NjFlNDAyYTdkMjFiNTMwZTAwOWYyNWY4ZTM4OSIKLSAgZGVwZW5kZW5jaWVzOgotICAgIG9u
Y2UgIl4xLjMuMCIKLQotcngtbGl0ZUBeMy4xLjI6Ci0gIHZlcnNpb24gIjMuMS4yIgotICByZXNv
bHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9yeC1saXRlLy0vcngtbGl0ZS0zLjEu
Mi50Z3ojMTljZTUwMmNhNTcyNjY1ZjNiNjQ3YjEwOTM5Zjk3ZmQxNjE1ZjEwMiIKLQotc2FuZUB+
MS40LjE6Ci0gIHZlcnNpb24gIjEuNC4xIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55
YXJucGtnLmNvbS9zYW5lLy0vc2FuZS0xLjQuMS50Z3ojODhmNzYzZDc0MDQwZjVmMGMyNTZiNjE2
M2RiMzk5YmYxMTBhYzcxNSIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGV4ZWMtc2ggIl4wLjIuMCIK
LSAgICBmYi13YXRjaG1hbiAiXjEuOC4wIgotICAgIG1pbmltYXRjaCAiXjMuMC4yIgotICAgIG1p
bmltaXN0ICJeMS4xLjEiCi0gICAgd2Fsa2VyICJ+MS4wLjUiCi0gICAgd2F0Y2ggIn4wLjEwLjAi
Ci0KLXNheEBeMS4xLjQsIHNheEB+MS4yLjE6Ci0gIHZlcnNpb24gIjEuMi4xIgotICByZXNvbHZl
ZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9zYXgvLS9zYXgtMS4yLjEudGd6IzdiOGU2
NTYxOTBiMjI4ZTgxYTY2YWVhNzQ4NDgwZDgyOGNkMmQzN2EiCi0KLXNlbXZlckBeNS4xLjAsIHNl
bXZlckB+NS4zLjAsICJzZW12ZXJAMiB8fCAzIHx8IDQgfHwgNSI6Ci0gIHZlcnNpb24gIjUuMy4w
IgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9zZW12ZXIvLS9zZW12
ZXItNS4zLjAudGd6IzliMmNlNWQzZGUwMmQxN2M2MDEyYWQzMjZhYTZiNGQwY2Y1NGY5NGYiCi0K
LXNlbmRAMC4xNC4xOgotICB2ZXJzaW9uICIwLjE0LjEiCi0gIHJlc29sdmVkICJodHRwczovL3Jl
Z2lzdHJ5Lnlhcm5wa2cuY29tL3NlbmQvLS9zZW5kLTAuMTQuMS50Z3ojYTk1NDk4NDMyNTM5MmY1
MTUzMmE3NzYwNzYwZTQ1OTU5OGM4OWY3YSIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGRlYnVnICJ+
Mi4yLjAiCi0gICAgZGVwZCAifjEuMS4wIgotICAgIGRlc3Ryb3kgIn4xLjAuNCIKLSAgICBlbmNv
ZGV1cmwgIn4xLjAuMSIKLSAgICBlc2NhcGUtaHRtbCAifjEuMC4zIgotICAgIGV0YWcgIn4xLjcu
MCIKLSAgICBmcmVzaCAiMC4zLjAiCi0gICAgaHR0cC1lcnJvcnMgIn4xLjUuMCIKLSAgICBtaW1l
ICIxLjMuNCIKLSAgICBtcyAiMC43LjEiCi0gICAgb24tZmluaXNoZWQgIn4yLjMuMCIKLSAgICBy
YW5nZS1wYXJzZXIgIn4xLjIuMCIKLSAgICBzdGF0dXNlcyAifjEuMy4wIgotCi1zZW50ZW5jZS1j
YXNlQF4yLjEuMDoKLSAgdmVyc2lvbiAiMi4xLjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lz
dHJ5Lnlhcm5wa2cuY29tL3NlbnRlbmNlLWNhc2UvLS9zZW50ZW5jZS1jYXNlLTIuMS4wLnRneiNk
NTkyZmJlZDQ1N2ZkMWE1OWUzYWYwZWUxN2U5OWY2ZmQ3MGQ3ZWZkIgotICBkZXBlbmRlbmNpZXM6
Ci0gICAgbm8tY2FzZSAiXjIuMi4wIgotICAgIHVwcGVyLWNhc2UtZmlyc3QgIl4xLjEuMiIKLQot
c2VydmUtaW5kZXhAXjEuNy4yOgotICB2ZXJzaW9uICIxLjguMCIKLSAgcmVzb2x2ZWQgImh0dHBz
Oi8vcmVnaXN0cnkueWFybnBrZy5jb20vc2VydmUtaW5kZXgvLS9zZXJ2ZS1pbmRleC0xLjguMC50
Z3ojN2M1ZDk2YzEzZmIxMzExMDFmOTNjMWM1Nzc0Zjg1MTZhMWU3OGQzYiIKLSAgZGVwZW5kZW5j
aWVzOgotICAgIGFjY2VwdHMgIn4xLjMuMyIKLSAgICBiYXRjaCAiMC41LjMiCi0gICAgZGVidWcg
In4yLjIuMCIKLSAgICBlc2NhcGUtaHRtbCAifjEuMC4zIgotICAgIGh0dHAtZXJyb3JzICJ+MS41
LjAiCi0gICAgbWltZS10eXBlcyAifjIuMS4xMSIKLSAgICBwYXJzZXVybCAifjEuMy4xIgotCi1z
ZXJ2ZS1zdGF0aWNAfjEuMTEuMToKLSAgdmVyc2lvbiAiMS4xMS4xIgotICByZXNvbHZlZCAiaHR0
cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9zZXJ2ZS1zdGF0aWMvLS9zZXJ2ZS1zdGF0aWMtMS4x
MS4xLnRneiNkNmNjZTc2OTM1MDVmNzMzYzc1OWRlNTdiZWZjMWFmNzZjMGYwODA1IgotICBkZXBl
bmRlbmNpZXM6Ci0gICAgZW5jb2RldXJsICJ+MS4wLjEiCi0gICAgZXNjYXBlLWh0bWwgIn4xLjAu
MyIKLSAgICBwYXJzZXVybCAifjEuMy4xIgotICAgIHNlbmQgIjAuMTQuMSIKLQotc2V0LWJsb2Nr
aW5nQF4yLjAuMCwgc2V0LWJsb2NraW5nQH4yLjAuMDoKLSAgdmVyc2lvbiAiMi4wLjAiCi0gIHJl
c29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3NldC1ibG9ja2luZy8tL3NldC1i
bG9ja2luZy0yLjAuMC50Z3ojMDQ1Zjk3ODJkMDExYWU5YTY4MDNkZGQzODJiMjQzOTJiM2Q4OTBm
NyIKLQotc2V0LWltbWVkaWF0ZS1zaGltQF4xLjAuMToKLSAgdmVyc2lvbiAiMS4wLjEiCi0gIHJl
c29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3NldC1pbW1lZGlhdGUtc2hpbS8t
L3NldC1pbW1lZGlhdGUtc2hpbS0xLjAuMS50Z3ojNGIyYjFiMjdlYjgwOGE5ZjhkY2M0ODFhNThl
NWU1NmY1OTlmM2Y2MSIKLQotc2V0cHJvdG90eXBlb2ZAMS4wLjE6Ci0gIHZlcnNpb24gIjEuMC4x
IgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9zZXRwcm90b3R5cGVv
Zi8tL3NldHByb3RvdHlwZW9mLTEuMC4xLnRneiM1MjAwOWIyNzg4OGM0ZGM0OGY1OTE5NDljMGE4
Mjc1ODM0YzFjYTdlIgotCi1zaGEuanNAMi4yLjY6Ci0gIHZlcnNpb24gIjIuMi42IgotICByZXNv
bHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9zaGEuanMvLS9zaGEuanMtMi4yLjYu
dGd6IzE3ZGRlZGRjNWY3MjJmYjY2NTAxNjU4ODk1NDYxOTc3ODY3MzE1YmEiCi0KLXNoZWJhbmct
cmVnZXhAXjEuMC4wOgotICB2ZXJzaW9uICIxLjAuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVn
aXN0cnkueWFybnBrZy5jb20vc2hlYmFuZy1yZWdleC8tL3NoZWJhbmctcmVnZXgtMS4wLjAudGd6
I2RhNDJmNDk3NDBjMGI0MmRiMmNhOTcyODU3MWNiMTkwYzk4ZWZlYTMiCi0KLXNoZWxsanNAXjAu
Ni4wOgotICB2ZXJzaW9uICIwLjYuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFy
bnBrZy5jb20vc2hlbGxqcy8tL3NoZWxsanMtMC42LjEudGd6I2VjNjIxMWJlZDE5MjA0NDIwODhm
ZTBmNzBiMjgzNzIzMmVkMmM4YTgiCi0KLXNoZWxsd29yZHNAXjAuMS4wOgotICB2ZXJzaW9uICIw
LjEuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vc2hlbGx3b3Jk
cy8tL3NoZWxsd29yZHMtMC4xLjAudGd6IzY2YWZkNDdiNmExMjkzMmQ5MDcxY2JmZDk4YTUyZTc4
NWNkMGJhMTQiCi0KLXNpZ25hbC1leGl0QF4zLjAuMDoKLSAgdmVyc2lvbiAiMy4wLjEiCi0gIHJl
c29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3NpZ25hbC1leGl0Ly0vc2lnbmFs
LWV4aXQtMy4wLjEudGd6IzVhNGM4ODQ5OTJiNjNhN2FjZDliYWRiNzg5NGMzZWU5Y2ZjY2FkODEi
Ci0KLXNsYXNoQF4xLjAuMDoKLSAgdmVyc2lvbiAiMS4wLjAiCi0gIHJlc29sdmVkICJodHRwczov
L3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3NsYXNoLy0vc2xhc2gtMS4wLjAudGd6I2M0MWYyZjZjMzlm
YzE2ZDFjZDE3YWQ0YjVkODk2MTE0YWU0NzBkNTUiCi0KLXNsaWNlLWFuc2lAMC4wLjQ6Ci0gIHZl
cnNpb24gIjAuMC40IgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9z
bGljZS1hbnNpLy0vc2xpY2UtYW5zaS0wLjAuNC50Z3ojZWRiZjg5MDNmNjZmN2NlMmY4ZWFmZDZj
ZWVkNjVlMjY0YzgzMWIzNSIKLQotc25ha2UtY2FzZUBeMi4xLjA6Ci0gIHZlcnNpb24gIjIuMS4w
IgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9zbmFrZS1jYXNlLy0v
c25ha2UtY2FzZS0yLjEuMC50Z3ojNDFiZGIxYjczZjMwZWM2NmEwNGQ0ZTJjYWQxYjc2Mzg3ZDRk
NmQ5ZiIKLSAgZGVwZW5kZW5jaWVzOgotICAgIG5vLWNhc2UgIl4yLjIuMCIKLQotc250cEAxLngu
eDoKLSAgdmVyc2lvbiAiMS4wLjkiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5w
a2cuY29tL3NudHAvLS9zbnRwLTEuMC45LnRneiM2NTQxMTg0Y2M5MGFlZWE2YzZlN2IzNWUyNjU5
MDgyNDQzYzY2MTk4IgotICBkZXBlbmRlbmNpZXM6Ci0gICAgaG9layAiMi54LngiCi0KLXNvY2tq
cy1jbGllbnRAXjEuMC4zOgotICB2ZXJzaW9uICIxLjEuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8v
cmVnaXN0cnkueWFybnBrZy5jb20vc29ja2pzLWNsaWVudC8tL3NvY2tqcy1jbGllbnQtMS4xLjEu
dGd6IzI4NDg0M2U5YTk3ODRkN2M0NzRiMTU3MWIzMjQwZmNhOWRkYTRiYjAiCi0gIGRlcGVuZGVu
Y2llczoKLSAgICBkZWJ1ZyAiXjIuMi4wIgotICAgIGV2ZW50c291cmNlICJ+MC4xLjYiCi0gICAg
ZmF5ZS13ZWJzb2NrZXQgIn4wLjExLjAiCi0gICAgaW5oZXJpdHMgIl4yLjAuMSIKLSAgICBqc29u
MyAiXjMuMy4yIgotICAgIHVybC1wYXJzZSAiXjEuMS4xIgotCi1zb2NranMtY2xpZW50QDEuMC4z
OgotICB2ZXJzaW9uICIxLjAuMyIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBr
Zy5jb20vc29ja2pzLWNsaWVudC8tL3NvY2tqcy1jbGllbnQtMS4wLjMudGd6I2IwZDgyODA5OTg0
NjBlYjI1NjRjNWQ3OWQ3ZTNkN2NmZDhhMzUzYWQiCi0gIGRlcGVuZGVuY2llczoKLSAgICBkZWJ1
ZyAiXjIuMS4wIgotICAgIGV2ZW50c291cmNlICJeMC4xLjMiCi0gICAgZmF5ZS13ZWJzb2NrZXQg
In4wLjcuMyIKLSAgICBpbmhlcml0cyAiXjIuMC4xIgotICAgIGpzb24zICJeMy4zLjIiCi0gICAg
dXJsLXBhcnNlICJeMS4wLjEiCi0KLXNvY2tqc0BeMC4zLjE1OgotICB2ZXJzaW9uICIwLjMuMTgi
Ci0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3NvY2tqcy8tL3NvY2tq
cy0wLjMuMTgudGd6I2Q5YjI4OTMxNmNhN2RmNzc1OTVlZjI5OWUwNzVmMGY5MzdlYjQyMDciCi0g
IGRlcGVuZGVuY2llczoKLSAgICBmYXllLXdlYnNvY2tldCAiXjAuMTAuMCIKLSAgICB1dWlkICJe
Mi4wLjIiCi0KLXNvcnQta2V5c0BeMS4wLjA6Ci0gIHZlcnNpb24gIjEuMS4yIgotICByZXNvbHZl
ZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9zb3J0LWtleXMvLS9zb3J0LWtleXMtMS4x
LjIudGd6IzQ0MWI2ZDRkMzQ2Nzk4ZjFiNGU0OWU4OTIwYWRmYmEwZTU0M2Y5YWQiCi0gIGRlcGVu
ZGVuY2llczoKLSAgICBpcy1wbGFpbi1vYmogIl4xLjAuMCIKLQotc291cmNlLWxpc3QtbWFwQF4w
LjEuNCwgc291cmNlLWxpc3QtbWFwQH4wLjEuMDoKLSAgdmVyc2lvbiAiMC4xLjYiCi0gIHJlc29s
dmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3NvdXJjZS1saXN0LW1hcC8tL3NvdXJj
ZS1saXN0LW1hcC0wLjEuNi50Z3ojZTFlNmY5NGYwYjQwYzRkMjhkY2Y4ZjViODc2NmUwZTQ1NjM2
ODc3ZiIKLQotc291cmNlLW1hcC1zdXBwb3J0QF4wLjQuMjoKLSAgdmVyc2lvbiAiMC40LjMiCi0g
IHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3NvdXJjZS1tYXAtc3VwcG9y
dC8tL3NvdXJjZS1tYXAtc3VwcG9ydC0wLjQuMy50Z3ojNjkzYzgzODNkNDM4OWE0NTY5NDg2OTg3
YzIxOTc0NGRmYzYwMTY4NSIKLSAgZGVwZW5kZW5jaWVzOgotICAgIHNvdXJjZS1tYXAgIl4wLjUu
MyIKLQotc291cmNlLW1hcEBeMC40LjQsIHNvdXJjZS1tYXBAfjAuNC4xLCBzb3VyY2UtbWFwQDAu
NC54OgotICB2ZXJzaW9uICIwLjQuNCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFy
bnBrZy5jb20vc291cmNlLW1hcC8tL3NvdXJjZS1tYXAtMC40LjQudGd6I2ViYTRmNWRhOWMwZGM5
OTlkZTY4MDMyZDhiNGY3NjE3MzY1MjAzNmIiCi0gIGRlcGVuZGVuY2llczoKLSAgICBhbWRlZmlu
ZSAiPj0wLjAuNCIKLQotc291cmNlLW1hcEBeMC41LjAsIHNvdXJjZS1tYXBAXjAuNS4zLCBzb3Vy
Y2UtbWFwQF4wLjUuNiwgc291cmNlLW1hcEB+MC41LjEsIHNvdXJjZS1tYXBAfjAuNS4zOgotICB2
ZXJzaW9uICIwLjUuNiIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20v
c291cmNlLW1hcC8tL3NvdXJjZS1tYXAtMC41LjYudGd6Izc1Y2UzOGY1MmJmMDczM2M1YTdmMGMx
MThkODEzMzRhMmJiNWY0MTIiCi0KLXNvdXJjZS1tYXBAfjAuMi4wOgotICB2ZXJzaW9uICIwLjIu
MCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vc291cmNlLW1hcC8t
L3NvdXJjZS1tYXAtMC4yLjAudGd6I2RhYjczZmJjZmMyYmE4MTliNGRlMDNiZDZmNmVhYTQ4MTY0
YjNmOWQiCi0gIGRlcGVuZGVuY2llczoKLSAgICBhbWRlZmluZSAiPj0wLjAuNCIKLQotc3BkeC1j
b3JyZWN0QH4xLjAuMDoKLSAgdmVyc2lvbiAiMS4wLjIiCi0gIHJlc29sdmVkICJodHRwczovL3Jl
Z2lzdHJ5Lnlhcm5wa2cuY29tL3NwZHgtY29ycmVjdC8tL3NwZHgtY29ycmVjdC0xLjAuMi50Z3oj
NGIzMDczZDkzM2ZmNTFmMzkxMmYwM2FjNTUxOTQ5OGE0MTUwZGI0MCIKLSAgZGVwZW5kZW5jaWVz
OgotICAgIHNwZHgtbGljZW5zZS1pZHMgIl4xLjAuMiIKLQotc3BkeC1leHByZXNzaW9uLXBhcnNl
QH4xLjAuMDoKLSAgdmVyc2lvbiAiMS4wLjQiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5
Lnlhcm5wa2cuY29tL3NwZHgtZXhwcmVzc2lvbi1wYXJzZS8tL3NwZHgtZXhwcmVzc2lvbi1wYXJz
ZS0xLjAuNC50Z3ojOWJkZjJmMjBlMWY0MGVkNDQ3ZmJlMjczMjY2MTkxZmNlZDUxNjI2YyIKLQot
c3BkeC1saWNlbnNlLWlkc0BeMS4wLjI6Ci0gIHZlcnNpb24gIjEuMi4yIgotICByZXNvbHZlZCAi
aHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9zcGR4LWxpY2Vuc2UtaWRzLy0vc3BkeC1saWNl
bnNlLWlkcy0xLjIuMi50Z3ojYzlkZjdhMzQyNDU5NGFkZTZiZDExOTAwZDU5NjY5NmRjMDZiYWM1
NyIKLQotc3ByaW50Zi1qc0B+MS4wLjI6Ci0gIHZlcnNpb24gIjEuMC4zIgotICByZXNvbHZlZCAi
aHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9zcHJpbnRmLWpzLy0vc3ByaW50Zi1qcy0xLjAu
My50Z3ojMDRlNjkyNmY2NjI4OTUzNTRmM2RkMDE1MjAzNjMzYjg1NzI5N2UyYyIKLQotc3NocGtA
XjEuNy4wOgotICB2ZXJzaW9uICIxLjEwLjEiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5
Lnlhcm5wa2cuY29tL3NzaHBrLy0vc3NocGstMS4xMC4xLnRneiMzMGUxYTVkMzI5MjQ0OTc0YTFh
ZjYxNTExMzM5ZDU5NWFmNjYzOGIwIgotICBkZXBlbmRlbmNpZXM6Ci0gICAgYXNuMSAifjAuMi4z
IgotICAgIGFzc2VydC1wbHVzICJeMS4wLjAiCi0gICAgZGFzaGRhc2ggIl4xLjEyLjAiCi0gICAg
Z2V0cGFzcyAiXjAuMS4xIgotICBvcHRpb25hbERlcGVuZGVuY2llczoKLSAgICBiY3J5cHQtcGJr
ZGYgIl4xLjAuMCIKLSAgICBlY2MtanNibiAifjAuMS4xIgotICAgIGpvZGlkMjU1MTkgIl4xLjAu
MCIKLSAgICBqc2JuICJ+MC4xLjAiCi0gICAgdHdlZXRuYWNsICJ+MC4xNC4wIgotCi0ic3RhdHVz
ZXNAPj0gMS4zLjAgPCAyIiwgc3RhdHVzZXNAfjEuMy4wOgotICB2ZXJzaW9uICIxLjMuMCIKLSAg
cmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vc3RhdHVzZXMvLS9zdGF0dXNl
cy0xLjMuMC50Z3ojOGU1NTc1OGNiMjBlNzY4MmMxZjRmY2U4ZGNhYjMwYmYwMWQxZTA3YSIKLQot
c3RyZWFtLWJyb3dzZXJpZnlAXjEuMC4wOgotICB2ZXJzaW9uICIxLjAuMCIKLSAgcmVzb2x2ZWQg
Imh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vc3RyZWFtLWJyb3dzZXJpZnkvLS9zdHJlYW0t
YnJvd3NlcmlmeS0xLjAuMC50Z3ojYmY5YjRhYmZiNDJiMjc0ZDc1MTQ3OWU0NGUwZmYyNjU2YjZm
MTE5MyIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGluaGVyaXRzICJ+Mi4wLjEiCi0gICAgcmVhZGFi
bGUtc3RyZWFtICJeMS4wLjI3LTEiCi0KLXN0cmVhbS1jYWNoZUB+MC4wLjE6Ci0gIHZlcnNpb24g
IjAuMC4yIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9zdHJlYW0t
Y2FjaGUvLS9zdHJlYW0tY2FjaGUtMC4wLjIudGd6IzFhYzVhZDY4MzI0MjhjYTU1NjY3ZGJkZWUz
OTVkYWQ0ZTZkYjExOGYiCi0KLXN0cmljdC11cmktZW5jb2RlQF4xLjAuMDoKLSAgdmVyc2lvbiAi
MS4xLjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3N0cmljdC11
cmktZW5jb2RlLy0vc3RyaWN0LXVyaS1lbmNvZGUtMS4xLjAudGd6IzI3OWIyMjVkZjFkNTgyYjFm
NTRlNjVhZGRkNDM1MmUxOGZhYTA3MTMiCi0KLXN0cmluZ19kZWNvZGVyQH4wLjEwLjI1LCBzdHJp
bmdfZGVjb2RlckB+MC4xMC54OgotICB2ZXJzaW9uICIwLjEwLjMxIgotICByZXNvbHZlZCAiaHR0
cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9zdHJpbmdfZGVjb2Rlci8tL3N0cmluZ19kZWNvZGVy
LTAuMTAuMzEudGd6IzYyZTIwM2JjNDE3NjZjNmMyOGM5ZmM4NDMwMWRhYjFjNTMxMGZhOTQiCi0K
LXN0cmluZy13aWR0aEBeMS4wLjEsIHN0cmluZy13aWR0aEBeMS4wLjI6Ci0gIHZlcnNpb24gIjEu
MC4yIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9zdHJpbmctd2lk
dGgvLS9zdHJpbmctd2lkdGgtMS4wLjIudGd6IzExOGJkZjViOGNkYzUxYTJhN2U3MGQyMTFlMDdl
MmIwYjliMTA3ZDMiCi0gIGRlcGVuZGVuY2llczoKLSAgICBjb2RlLXBvaW50LWF0ICJeMS4wLjAi
Ci0gICAgaXMtZnVsbHdpZHRoLWNvZGUtcG9pbnQgIl4xLjAuMCIKLSAgICBzdHJpcC1hbnNpICJe
My4wLjAiCi0KLXN0cmluZy5wcm90b3R5cGUuY29kZXBvaW50YXRAXjAuMi4wOgotICB2ZXJzaW9u
ICIwLjIuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vc3RyaW5n
LnByb3RvdHlwZS5jb2RlcG9pbnRhdC8tL3N0cmluZy5wcm90b3R5cGUuY29kZXBvaW50YXQtMC4y
LjAudGd6IzZiMjZlOWJkM2FmY2FhN2JlM2I0MjY5YjUyNmRlMWI4MjAwMGFjNzgiCi0KLXN0cmlu
Z3N0cmVhbUB+MC4wLjQ6Ci0gIHZlcnNpb24gIjAuMC41IgotICByZXNvbHZlZCAiaHR0cHM6Ly9y
ZWdpc3RyeS55YXJucGtnLmNvbS9zdHJpbmdzdHJlYW0vLS9zdHJpbmdzdHJlYW0tMC4wLjUudGd6
IzRlNDg0Y2Q0ZGU1YTBiYmJlZTE4ZTQ2MzA3NzEwYThhODE2MjE4NzgiCi0KLXN0cmlwLWFuc2lA
XjMuMC4wLCBzdHJpcC1hbnNpQF4zLjAuMSwgc3RyaXAtYW5zaUAzLjAuMToKLSAgdmVyc2lvbiAi
My4wLjEiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3N0cmlwLWFu
c2kvLS9zdHJpcC1hbnNpLTMuMC4xLnRneiM2YTM4NWZiODg1M2Q5NTJkNWZmMDVkMGU4YWFmOTQy
NzhkYzYzZGNmIgotICBkZXBlbmRlbmNpZXM6Ci0gICAgYW5zaS1yZWdleCAiXjIuMC4wIgotCi1z
dHJpcC1ib21AXjIuMC4wOgotICB2ZXJzaW9uICIyLjAuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8v
cmVnaXN0cnkueWFybnBrZy5jb20vc3RyaXAtYm9tLy0vc3RyaXAtYm9tLTIuMC4wLnRneiM2MjE5
YTg1NjE2NTIwNDkxZjM1Nzg4YmRiZjE0NDdhOTljN2U2YjBlIgotICBkZXBlbmRlbmNpZXM6Ci0g
ICAgaXMtdXRmOCAiXjAuMi4wIgotCi1zdHJpcC1ib21AXjMuMC4wOgotICB2ZXJzaW9uICIzLjAu
MCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vc3RyaXAtYm9tLy0v
c3RyaXAtYm9tLTMuMC4wLnRneiMyMzM0YzE4ZTljNzU5ZjdiZGQ1NmZkZWY3ZTlhZTNkNTg4ZTY4
ZWQzIgotCi1zdHJpcC1qc29uLWNvbW1lbnRzQH4xLjAuMSwgc3RyaXAtanNvbi1jb21tZW50c0B+
MS4wLjQ6Ci0gIHZlcnNpb24gIjEuMC40IgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55
YXJucGtnLmNvbS9zdHJpcC1qc29uLWNvbW1lbnRzLy0vc3RyaXAtanNvbi1jb21tZW50cy0xLjAu
NC50Z3ojMWUxNWZiY2FjOTdkM2VlOTliZjJkNzNiNGM2NTZiMDgyYmJhZmI5MSIKLQotc3R5bGUt
bG9hZGVyQDAuMTMuMToKLSAgdmVyc2lvbiAiMC4xMy4xIgotICByZXNvbHZlZCAiaHR0cHM6Ly9y
ZWdpc3RyeS55YXJucGtnLmNvbS9zdHlsZS1sb2FkZXIvLS9zdHlsZS1sb2FkZXItMC4xMy4xLnRn
eiM0NjgyODBlZmJjMDQ3MzAyM2NkM2E2Y2Q1NmUzM2I1YTFkN2ZjM2E5IgotICBkZXBlbmRlbmNp
ZXM6Ci0gICAgbG9hZGVyLXV0aWxzICJeMC4yLjciCi0KLXN1cHBvcnRzLWNvbG9yQF4yLjAuMDoK
LSAgdmVyc2lvbiAiMi4wLjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cu
Y29tL3N1cHBvcnRzLWNvbG9yLy0vc3VwcG9ydHMtY29sb3ItMi4wLjAudGd6IzUzNWQwNDVjZTZi
NjM2M2ZhNDAxMTcwODQ2Mjk5OTVlOWRmMzI0YzciCi0KLXN1cHBvcnRzLWNvbG9yQF4zLjEuMCwg
c3VwcG9ydHMtY29sb3JAXjMuMS4xLCBzdXBwb3J0cy1jb2xvckBeMy4xLjI6Ci0gIHZlcnNpb24g
IjMuMS4yIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9zdXBwb3J0
cy1jb2xvci8tL3N1cHBvcnRzLWNvbG9yLTMuMS4yLnRneiM3MmEyNjI4OTRkOWQ0MDhiOTU2Y2Ew
NWZmMzdiMmVkOGE2ZTJhMmQ1IgotICBkZXBlbmRlbmNpZXM6Ci0gICAgaGFzLWZsYWcgIl4xLjAu
MCIKLQotc3Znb0BeMC43LjA6Ci0gIHZlcnNpb24gIjAuNy4xIgotICByZXNvbHZlZCAiaHR0cHM6
Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9zdmdvLy0vc3Znby0wLjcuMS50Z3ojMjg3MzIwZmVkOTcy
Y2IwOTdlNzJjMmJiMTY4NWY5NmZlMDhmODAzNCIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGNvYSAi
fjEuMC4xIgotICAgIGNvbG9ycyAifjEuMS4yIgotICAgIGNzc28gIn4yLjIuMSIKLSAgICBqcy15
YW1sICJ+My42LjEiCi0gICAgbWtkaXJwICJ+MC41LjEiCi0gICAgc2F4ICJ+MS4yLjEiCi0gICAg
d2hldC5leHRlbmQgIn4wLjkuOSIKLQotc3dhcC1jYXNlQF4xLjEuMDoKLSAgdmVyc2lvbiAiMS4x
LjIiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3N3YXAtY2FzZS8t
L3N3YXAtY2FzZS0xLjEuMi50Z3ojYzM5MjAzYTQ1ODczODVmYWQzYzg1MGEwYmQxYmNhZmEwODE5
NzRlMyIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGxvd2VyLWNhc2UgIl4xLjEuMSIKLSAgICB1cHBl
ci1jYXNlICJeMS4xLjEiCi0KLXN5bWJvbC1vYnNlcnZhYmxlQF4xLjAuMjoKLSAgdmVyc2lvbiAi
MS4wLjMiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3N5bWJvbC1v
YnNlcnZhYmxlLy0vc3ltYm9sLW9ic2VydmFibGUtMS4wLjMudGd6IzBmZGIwMDVlODRmMzQ2YTg5
OWQ0OTJiZWJhMjMwNjhiMzJkMTUyNWEiCi0KLSJzeW1ib2wtdHJlZUA+PSAzLjEuMCA8IDQuMC4w
IjoKLSAgdmVyc2lvbiAiMy4xLjQiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5w
a2cuY29tL3N5bWJvbC10cmVlLy0vc3ltYm9sLXRyZWUtMy4xLjQudGd6IzAyYjI3OTM0OGQzMzdk
ZWJjMzk2OTRjNWM5NWY4ODJkNDQ4YTMxMmEiCi0KLXRhYmxlQF4zLjcuODoKLSAgdmVyc2lvbiAi
My44LjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3RhYmxlLy0v
dGFibGUtMy44LjAudGd6IzI1MjE2NmM3ZjMyODY2ODRhOWQ1NjFiMGYzYTg5MjljYWYzYTk5N2Ii
Ci0gIGRlcGVuZGVuY2llczoKLSAgICBhanYgIl40LjcuMCIKLSAgICBhanYta2V5d29yZHMgIl4x
LjAuMCIKLSAgICBjaGFsayAiXjEuMS4xIgotICAgIGxvZGFzaCAiXjQuMC4wIgotICAgIHNsaWNl
LWFuc2kgIjAuMC40IgotICAgIHN0cmluZy13aWR0aCAiXjEuMC4xIgotCi10YXBhYmxlQF4wLjEu
OCwgdGFwYWJsZUB+MC4xLjg6Ci0gIHZlcnNpb24gIjAuMS4xMCIKLSAgcmVzb2x2ZWQgImh0dHBz
Oi8vcmVnaXN0cnkueWFybnBrZy5jb20vdGFwYWJsZS8tL3RhcGFibGUtMC4xLjEwLnRneiMyOWMz
NTcwN2MyYjcwZTUwZDA3NDgyYjVkMjAyZThlZDQ0NmRhZmQ0IgotCi10YXItcGFja0B+My4xLjA6
Ci0gIHZlcnNpb24gIjMuMS40IgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtn
LmNvbS90YXItcGFjay8tL3Rhci1wYWNrLTMuMS40LnRneiNiYzhjZjlhMjJmNTgzMjczOWYxMmYz
OTEwZGFjMWViOTdiNDk3MDhjIgotICBkZXBlbmRlbmNpZXM6Ci0gICAgZGVidWcgIn4yLjIuMCIK
LSAgICBmc3RyZWFtICJ+MS4wLjEwIgotICAgIGZzdHJlYW0taWdub3JlICJ+MS4wLjUiCi0gICAg
b25jZSAifjEuMy4zIgotICAgIHJlYWRhYmxlLXN0cmVhbSAifjIuMS40IgotICAgIHJpbXJhZiAi
fjIuNS4xIgotICAgIHRhciAifjIuMi4xIgotICAgIHVpZC1udW1iZXIgIn4wLjAuNiIKLQotdGFy
QH4yLjIuMCwgdGFyQH4yLjIuMToKLSAgdmVyc2lvbiAiMi4yLjEiCi0gIHJlc29sdmVkICJodHRw
czovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3Rhci8tL3Rhci0yLjIuMS50Z3ojOGU0ZDJhMjU2YzBl
MjE4NWM2YjE4YWQ2OTRhZWM5NjhiODNjYjFkMSIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGJsb2Nr
LXN0cmVhbSAiKiIKLSAgICBmc3RyZWFtICJeMS4wLjIiCi0gICAgaW5oZXJpdHMgIjIiCi0KLXRl
c3QtZXhjbHVkZUBeMi4xLjE6Ci0gIHZlcnNpb24gIjIuMS4zIgotICByZXNvbHZlZCAiaHR0cHM6
Ly9yZWdpc3RyeS55YXJucGtnLmNvbS90ZXN0LWV4Y2x1ZGUvLS90ZXN0LWV4Y2x1ZGUtMi4xLjMu
dGd6I2E4ZDg5NjhlMWRhODMyNjZmOTg2NGYyODUyYzU1ZTIyMGYwNjQzNGEiCi0gIGRlcGVuZGVu
Y2llczoKLSAgICBhcnJpZnkgIl4xLjAuMSIKLSAgICBtaWNyb21hdGNoICJeMi4zLjExIgotICAg
IG9iamVjdC1hc3NpZ24gIl40LjEuMCIKLSAgICByZWFkLXBrZy11cCAiXjEuMC4xIgotICAgIHJl
cXVpcmUtbWFpbi1maWxlbmFtZSAiXjEuMC4xIgotCi10ZXN0Y2hlY2tAXjAuMS4wOgotICB2ZXJz
aW9uICIwLjEuNCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vdGVz
dGNoZWNrLy0vdGVzdGNoZWNrLTAuMS40LnRneiM5MDA1NmVkZDQ4ZDExOTk3NzAyNjE2Y2U2NzE2
ZjE5N2Q4MTkwMTY0IgotCi10ZXh0LXRhYmxlQH4wLjIuMDoKLSAgdmVyc2lvbiAiMC4yLjAiCi0g
IHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3RleHQtdGFibGUvLS90ZXh0
LXRhYmxlLTAuMi4wLnRneiM3ZjVlZTgyM2FlODA1MjA3YzAwYWYyZGY0YTg0ZWMzZmNmYTU3MGI0
IgotCi10aHJvdWdoQF4yLjMuNjoKLSAgdmVyc2lvbiAiMi4zLjgiCi0gIHJlc29sdmVkICJodHRw
czovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3Rocm91Z2gvLS90aHJvdWdoLTIuMy44LnRneiMwZGQ0
YzlmZmFhYmMzNTc5NjBiMWI3MjQxMTVkN2UwZTg2YTJlMWY1IgotCi10aW1lcnMtYnJvd3Nlcmlm
eUBeMS4wLjE6Ci0gIHZlcnNpb24gIjEuNC4yIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3Ry
eS55YXJucGtnLmNvbS90aW1lcnMtYnJvd3NlcmlmeS8tL3RpbWVycy1icm93c2VyaWZ5LTEuNC4y
LnRneiNjOWM1OGI1NzViZTg0MDczNzVjYjVlMjQ2MmRhY2VlNzQzNTlmNDFkIgotICBkZXBlbmRl
bmNpZXM6Ci0gICAgcHJvY2VzcyAifjAuMTEuMCIKLQotdGl0bGUtY2FzZUBeMi4xLjA6Ci0gIHZl
cnNpb24gIjIuMS4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS90
aXRsZS1jYXNlLy0vdGl0bGUtY2FzZS0yLjEuMC50Z3ojYzY4Y2NiNDIzMjA3OWRlZDY0Zjk0Yjkx
YjQ5NDFhZGU5MTM5MTk3OSIKLSAgZGVwZW5kZW5jaWVzOgotICAgIG5vLWNhc2UgIl4yLjIuMCIK
LSAgICB1cHBlci1jYXNlICJeMS4wLjMiCi0KLXRtcGxAMS4wLng6Ci0gIHZlcnNpb24gIjEuMC40
IgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS90bXBsLy0vdG1wbC0x
LjAuNC50Z3ojMjM2NDBkZDdiNDJkMDA0MzM5MTExNDA4MjBlNWNmNDQwZTUyMWRkMSIKLQotdG8t
ZmFzdC1wcm9wZXJ0aWVzQF4xLjAuMToKLSAgdmVyc2lvbiAiMS4wLjIiCi0gIHJlc29sdmVkICJo
dHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3RvLWZhc3QtcHJvcGVydGllcy8tL3RvLWZhc3Qt
cHJvcGVydGllcy0xLjAuMi50Z3ojZjNmNWMwYzNiYTcyOTlhN2VmOTk0MjdlNDQ2MzMyNTdhZGU0
MzMyMCIKLQotdG9kb212Yy1hcHAtY3NzQF4yLjAuNjoKLSAgdmVyc2lvbiAiMi4wLjYiCi0gIHJl
c29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3RvZG9tdmMtYXBwLWNzcy8tL3Rv
ZG9tdmMtYXBwLWNzcy0yLjAuNi50Z3ojMGIzNjY3YzVlMTg5ZjE1NjhkOWE5YmY3OTQ3ZWJkOTI4
NDA2OTYxZCIKLQotdG9wb3NvcnRAXjEuMC4wOgotICB2ZXJzaW9uICIxLjAuMCIKLSAgcmVzb2x2
ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vdG9wb3NvcnQvLS90b3Bvc29ydC0xLjAu
MC50Z3ojYjY2Y2YzODVhMWE4YThlNjhlNDViODI1OWU3ZjU1ODc1ZThiMDZlZiIKLQotdG91Z2gt
Y29va2llQF4yLjIuMCwgdG91Z2gtY29va2llQF4yLjMuMSwgdG91Z2gtY29va2llQH4yLjMuMDoK
LSAgdmVyc2lvbiAiMi4zLjEiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cu
Y29tL3RvdWdoLWNvb2tpZS8tL3RvdWdoLWNvb2tpZS0yLjMuMS50Z3ojOTljNzdkZmJiN2Q4MDQy
NDllOGEyOTlkNGNiMGZkODFmZWYwODNmZCIKLQotdHI0NkB+MC4wLjEsIHRyNDZAfjAuMC4zOgot
ICB2ZXJzaW9uICIwLjAuMyIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5j
b20vdHI0Ni8tL3RyNDYtMC4wLjMudGd6IzgxODRmZDM0N2RhYzljZGMxODU5OTJmM2E2NjIyZTE0
YjlkOWFiNmEiCi0KLXRyeWl0QF4xLjAuMToKLSAgdmVyc2lvbiAiMS4wLjIiCi0gIHJlc29sdmVk
ICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3RyeWl0Ly0vdHJ5aXQtMS4wLjIudGd6I2Mx
OTZiMDA3M2U2YjFjNTk1ZDkzYzljODMwODU1YjdhY2MzMmE0NTMiCi0KLXR0eS1icm93c2VyaWZ5
QDAuMC4wOgotICB2ZXJzaW9uICIwLjAuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnku
eWFybnBrZy5jb20vdHR5LWJyb3dzZXJpZnkvLS90dHktYnJvd3NlcmlmeS0wLjAuMC50Z3ojYTE1
N2JhNDAyZGEyNGU5YmY5NTdmOWFhNjlkNTI0ZWVkNDI5MDFhNiIKLQotdHVubmVsLWFnZW50QH4w
LjQuMToKLSAgdmVyc2lvbiAiMC40LjMiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlh
cm5wa2cuY29tL3R1bm5lbC1hZ2VudC8tL3R1bm5lbC1hZ2VudC0wLjQuMy50Z3ojNjM3M2RiNzY5
MDlmZTU3MGUwOGQ3MzU4MzM2NWVkODI4YTc0ZWVlYiIKLQotdHdlZXRuYWNsQF4wLjE0LjMsIHR3
ZWV0bmFjbEB+MC4xNC4wOgotICB2ZXJzaW9uICIwLjE0LjMiCi0gIHJlc29sdmVkICJodHRwczov
L3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3R3ZWV0bmFjbC8tL3R3ZWV0bmFjbC0wLjE0LjMudGd6IzNk
YTM4MmY2NzBmMjVkZWQ3OGQ3YjNkMTc5MjExOWJjYTBiNzEzMmQiCi0KLXR5cGUtY2hlY2tAfjAu
My4yOgotICB2ZXJzaW9uICIwLjMuMiIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFy
bnBrZy5jb20vdHlwZS1jaGVjay8tL3R5cGUtY2hlY2stMC4zLjIudGd6IzU4ODRjYWI1MTJjZjFk
MzU1ZTNmYjc4NGYzMDgwNGIyYjUyMGRiNzIiCi0gIGRlcGVuZGVuY2llczoKLSAgICBwcmVsdWRl
LWxzICJ+MS4xLjIiCi0KLXR5cGUtaXNAfjEuNi4xMzoKLSAgdmVyc2lvbiAiMS42LjEzIgotICBy
ZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS90eXBlLWlzLy0vdHlwZS1pcy0x
LjYuMTMudGd6IzZlODNiYTdiYzMwY2QzM2E3YmIwYjdmYjAwNzM3YTIwODViZjlkMDgiCi0gIGRl
cGVuZGVuY2llczoKLSAgICBtZWRpYS10eXBlciAiMC4zLjAiCi0gICAgbWltZS10eXBlcyAifjIu
MS4xMSIKLQotdHlwZWRhcnJheUB+MC4wLjU6Ci0gIHZlcnNpb24gIjAuMC42IgotICByZXNvbHZl
ZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS90eXBlZGFycmF5Ly0vdHlwZWRhcnJheS0w
LjAuNi50Z3ojODY3YWM3NGUzODY0MTg3YjFkM2Q0N2Q5OTZhNzhlYzVjODgzMDc3NyIKLQotdWEt
cGFyc2VyLWpzQF4wLjcuOToKLSAgdmVyc2lvbiAiMC43LjEwIgotICByZXNvbHZlZCAiaHR0cHM6
Ly9yZWdpc3RyeS55YXJucGtnLmNvbS91YS1wYXJzZXItanMvLS91YS1wYXJzZXItanMtMC43LjEw
LnRneiM5MTc1NTlkZGNjZTA3Y2JjMDllY2U3ZDgwNDk1ZTRjMjY4ZjRlZjlmIgotCi11Z2xpZnkt
anNAXjIuNjoKLSAgdmVyc2lvbiAiMi43LjMiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5
Lnlhcm5wa2cuY29tL3VnbGlmeS1qcy8tL3VnbGlmeS1qcy0yLjcuMy50Z3ojMzliM2E3MzI5Yjg5
ZjVlYzUwN2UzNDRjNmUyMjU2ODY5OGVmNDg2OCIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGFzeW5j
ICJ+MC4yLjYiCi0gICAgc291cmNlLW1hcCAifjAuNS4xIgotICAgIHVnbGlmeS10by1icm93c2Vy
aWZ5ICJ+MS4wLjAiCi0gICAgeWFyZ3MgIn4zLjEwLjAiCi0KLXVnbGlmeS1qc0B+Mi42LjAsIHVn
bGlmeS1qc0AyLjYueDoKLSAgdmVyc2lvbiAiMi42LjQiCi0gIHJlc29sdmVkICJodHRwczovL3Jl
Z2lzdHJ5Lnlhcm5wa2cuY29tL3VnbGlmeS1qcy8tL3VnbGlmeS1qcy0yLjYuNC50Z3ojNjVlYTJm
YjMwNTljOTM5NDY5MmYxNWZlZDg3YzJiMzZjMTZiOWFkZiIKLSAgZGVwZW5kZW5jaWVzOgotICAg
IGFzeW5jICJ+MC4yLjYiCi0gICAgc291cmNlLW1hcCAifjAuNS4xIgotICAgIHVnbGlmeS10by1i
cm93c2VyaWZ5ICJ+MS4wLjAiCi0gICAgeWFyZ3MgIn4zLjEwLjAiCi0KLXVnbGlmeS10by1icm93
c2VyaWZ5QH4xLjAuMDoKLSAgdmVyc2lvbiAiMS4wLjIiCi0gIHJlc29sdmVkICJodHRwczovL3Jl
Z2lzdHJ5Lnlhcm5wa2cuY29tL3VnbGlmeS10by1icm93c2VyaWZ5Ly0vdWdsaWZ5LXRvLWJyb3dz
ZXJpZnktMS4wLjIudGd6IzZlMDkyNGQ2YmRhNmI1YWZlMzQ5ZTM5YTZkNjMyODUwYTBmODgyYjci
Ci0KLXVpZC1udW1iZXJAfjAuMC42OgotICB2ZXJzaW9uICIwLjAuNiIKLSAgcmVzb2x2ZWQgImh0
dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vdWlkLW51bWJlci8tL3VpZC1udW1iZXItMC4wLjYu
dGd6IzBlYTEwZTgwMzVlOGViNWI4ZTQ0NDlmMDZkYTFjNzMwNjYzYmFhODEiCi0KLXVuaXFAXjEu
MC4xOgotICB2ZXJzaW9uICIxLjAuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFy
bnBrZy5jb20vdW5pcS8tL3VuaXEtMS4wLjEudGd6I2IzMWM1YWU4MjU0ODQ0YTNhODI4MTU0MWNl
MmIwNGI4NjVhNzM0ZmYiCi0KLXVuaXFpZEBeNC4wLjA6Ci0gIHZlcnNpb24gIjQuMS4wIgotICBy
ZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS91bmlxaWQvLS91bmlxaWQtNC4x
LjAudGd6IzMzZDk2NzlmNjUwMjJmNDg5ODhhMDNmZDI0ZTdkY2FmOGYxMDllY2EiCi0gIGRlcGVu
ZGVuY2llczoKLSAgICBtYWNhZGRyZXNzICJeMC4yLjgiCi0KLXVuaXFzQF4yLjAuMDoKLSAgdmVy
c2lvbiAiMi4wLjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3Vu
aXFzLy0vdW5pcXMtMi4wLjAudGd6I2ZmZWRlNGIzNmIyNTI5MDY5NmU2ZTE2NWQ0YTU5ZWRiOTk4
ZTZiMDIiCi0KLXVucGlwZUB+MS4wLjA6Ci0gIHZlcnNpb24gIjEuMC4wIgotICByZXNvbHZlZCAi
aHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS91bnBpcGUvLS91bnBpcGUtMS4wLjAudGd6I2Iy
YmY0ZWU4NTE0YWFlNjE2NWI0ODE3ODI5ZDIxYjJlZjQ5OTA0ZWMiCi0KLXVwcGVyLWNhc2UtZmly
c3RAXjEuMS4wLCB1cHBlci1jYXNlLWZpcnN0QF4xLjEuMjoKLSAgdmVyc2lvbiAiMS4xLjIiCi0g
IHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3VwcGVyLWNhc2UtZmlyc3Qv
LS91cHBlci1jYXNlLWZpcnN0LTEuMS4yLnRneiM1ZDc5YmVkY2ZmMTQ0MTk1MThmZDJlZGIwYTA1
MDdjOWI2ODU5MTE1IgotICBkZXBlbmRlbmNpZXM6Ci0gICAgdXBwZXItY2FzZSAiXjEuMS4xIgot
Ci11cHBlci1jYXNlQF4xLjAuMywgdXBwZXItY2FzZUBeMS4xLjAsIHVwcGVyLWNhc2VAXjEuMS4x
LCB1cHBlci1jYXNlQF4xLjEuMzoKLSAgdmVyc2lvbiAiMS4xLjMiCi0gIHJlc29sdmVkICJodHRw
czovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3VwcGVyLWNhc2UvLS91cHBlci1jYXNlLTEuMS4zLnRn
eiNmNmI0NTAxYzJlYzRjZGQyNmJhNzhiZTcyMjI5NjFkZTc3NjIxNTk4IgotCi11cmwtbG9hZGVy
QDAuNS43OgotICB2ZXJzaW9uICIwLjUuNyIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnku
eWFybnBrZy5jb20vdXJsLWxvYWRlci8tL3VybC1sb2FkZXItMC41LjcudGd6IzY3ZTg3Nzk3NTlm
ODAwMGRhNzQ5OTQ5MDY2ODBjOTQzYTliMDkyNWQiCi0gIGRlcGVuZGVuY2llczoKLSAgICBsb2Fk
ZXItdXRpbHMgIjAuMi54IgotICAgIG1pbWUgIjEuMi54IgotCi11cmwtcGFyc2VAXjEuMC4xLCB1
cmwtcGFyc2VAXjEuMS4xOgotICB2ZXJzaW9uICIxLjEuNiIKLSAgcmVzb2x2ZWQgImh0dHBzOi8v
cmVnaXN0cnkueWFybnBrZy5jb20vdXJsLXBhcnNlLy0vdXJsLXBhcnNlLTEuMS42LnRneiNhYjhm
ZjVhZWExMzg4MDcxOTYxMjU1ZTIyMzYxNDdjNTJjYTVmYzQ4IgotICBkZXBlbmRlbmNpZXM6Ci0g
ICAgcXVlcnlzdHJpbmdpZnkgIjAuMC54IgotICAgIHJlcXVpcmVzLXBvcnQgIjEuMC54IgotCi11
cmwtcGFyc2VAMS4wLng6Ci0gIHZlcnNpb24gIjEuMC41IgotICByZXNvbHZlZCAiaHR0cHM6Ly9y
ZWdpc3RyeS55YXJucGtnLmNvbS91cmwtcGFyc2UvLS91cmwtcGFyc2UtMS4wLjUudGd6IzA4NTQ4
NjA0MjJhZmRjZmVmZWI2Yzk2NWM2NjJkNDgwMDE2OTkyN2IiCi0gIGRlcGVuZGVuY2llczoKLSAg
ICBxdWVyeXN0cmluZ2lmeSAiMC4wLngiCi0gICAgcmVxdWlyZXMtcG9ydCAiMS4wLngiCi0KLXVy
bEB+MC4xMC4xOgotICB2ZXJzaW9uICIwLjEwLjMiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lz
dHJ5Lnlhcm5wa2cuY29tL3VybC8tL3VybC0wLjEwLjMudGd6IzAyMWU0ZDljNzcwNWYyMWJiZjM3
ZDAzY2ViNTg3Njc0MDI3NzRjNjQiCi0gIGRlcGVuZGVuY2llczoKLSAgICBwdW55Y29kZSAiMS4z
LjIiCi0gICAgcXVlcnlzdHJpbmcgIjAuMi4wIgotCi11c2VyLWhvbWVAXjEuMS4xOgotICB2ZXJz
aW9uICIxLjEuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vdXNl
ci1ob21lLy0vdXNlci1ob21lLTEuMS4xLnRneiMyYjViZTIzYTMyYjYzYTdjOWRlYjhkMGYyOGQ0
ODU3MjRhM2RmMTkwIgotCi11c2VyLWhvbWVAXjIuMC4wOgotICB2ZXJzaW9uICIyLjAuMCIKLSAg
cmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vdXNlci1ob21lLy0vdXNlci1o
b21lLTIuMC4wLnRneiM5YzcwYmZkODE2OWJjMWRjYmY0ODYwNGUwZjA0YjhiNDljZGU5ZTlmIgot
ICBkZXBlbmRlbmNpZXM6Ci0gICAgb3MtaG9tZWRpciAiXjEuMC4wIgotCi11dGlsLWRlcHJlY2F0
ZUB+MS4wLjE6Ci0gIHZlcnNpb24gIjEuMC4yIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3Ry
eS55YXJucGtnLmNvbS91dGlsLWRlcHJlY2F0ZS8tL3V0aWwtZGVwcmVjYXRlLTEuMC4yLnRneiM0
NTBkNGRjOWZhNzBkZTczMjc2MmZiZDJkNGEyODk4MTQxOWEwY2NmIgotCi11dGlsQH4wLjEwLjMs
IHV0aWxAMC4xMC4zOgotICB2ZXJzaW9uICIwLjEwLjMiCi0gIHJlc29sdmVkICJodHRwczovL3Jl
Z2lzdHJ5Lnlhcm5wa2cuY29tL3V0aWwvLS91dGlsLTAuMTAuMy50Z3ojN2FmYjFhZmU1MDgwNTI0
NjQ4OWUzZGI3ZmUwZWQzNzkzMzZhYzBmOSIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGluaGVyaXRz
ICIyLjAuMSIKLQotdXRpbGFAfjAuMzoKLSAgdmVyc2lvbiAiMC4zLjMiCi0gIHJlc29sdmVkICJo
dHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3V0aWxhLy0vdXRpbGEtMC4zLjMudGd6I2Q3ZThl
N2Q3ZTMwOTEwNzA5MmIwNWY4ZDk2ODg4MjRkNjMzYTQyMjYiCi0KLXV0aWxhQH4wLjQ6Ci0gIHZl
cnNpb24gIjAuNC4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS91
dGlsYS8tL3V0aWxhLTAuNC4wLnRneiM4YTE2YTA1ZDQ0NTY1N2EzYWVhNWVlY2M1YjEyYTRmYTUz
Nzk3NzJjIgotCi11dGlscy1tZXJnZUAxLjAuMDoKLSAgdmVyc2lvbiAiMS4wLjAiCi0gIHJlc29s
dmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3V0aWxzLW1lcmdlLy0vdXRpbHMtbWVy
Z2UtMS4wLjAudGd6IzAyOTRmYjkyMmJiOTM3NTE1MzU0MWM0ZjcwOTYyMzFmMjg3YzhhZjgiCi0K
LXV1aWRAXjIuMC4yOgotICB2ZXJzaW9uICIyLjAuMyIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVn
aXN0cnkueWFybnBrZy5jb20vdXVpZC8tL3V1aWQtMi4wLjMudGd6IzY3ZTJlODYzNzk3MjE1NTMw
ZGZmMzE4ZTViZjlkY2ViZmQ0N2IyMWEiCi0KLXZhbGlkYXRlLW5wbS1wYWNrYWdlLWxpY2Vuc2VA
XjMuMC4xOgotICB2ZXJzaW9uICIzLjAuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnku
eWFybnBrZy5jb20vdmFsaWRhdGUtbnBtLXBhY2thZ2UtbGljZW5zZS8tL3ZhbGlkYXRlLW5wbS1w
YWNrYWdlLWxpY2Vuc2UtMy4wLjEudGd6IzI4MDRiYWJlNzEyYWQzMzc5NDU5YWNmYmUyNDc0NmFi
MmMzMDNmYmMiCi0gIGRlcGVuZGVuY2llczoKLSAgICBzcGR4LWNvcnJlY3QgIn4xLjAuMCIKLSAg
ICBzcGR4LWV4cHJlc3Npb24tcGFyc2UgIn4xLjAuMCIKLQotdmFyeUB+MS4xLjA6Ci0gIHZlcnNp
b24gIjEuMS4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS92YXJ5
Ly0vdmFyeS0xLjEuMC50Z3ojZTFlNWFmZmJiZDE2YWU3NjhkZDI2NzQzOTRiOWFkMzAyMjY1MzE0
MCIKLQotdmVuZG9yc0BeMS4wLjA6Ci0gIHZlcnNpb24gIjEuMC4xIgotICByZXNvbHZlZCAiaHR0
cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS92ZW5kb3JzLy0vdmVuZG9ycy0xLjAuMS50Z3ojMzdh
ZDczYzhlZTQxN2ZiM2Q1ODBlNzg1MzEyMzA3ZDI3NDg0N2YyMiIKLQotdmVycm9yQDEuMy42Ogot
ICB2ZXJzaW9uICIxLjMuNiIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5j
b20vdmVycm9yLy0vdmVycm9yLTEuMy42LnRneiNjZmY1ZGYxMjk0NmQyOTdkMmJhYWVmYWEyNjg5
ZTI1YmUwMWMwMDVjIgotICBkZXBlbmRlbmNpZXM6Ci0gICAgZXh0c3ByaW50ZiAiMS4wLjIiCi0K
LXZtLWJyb3dzZXJpZnlAMC4wLjQ6Ci0gIHZlcnNpb24gIjAuMC40IgotICByZXNvbHZlZCAiaHR0
cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS92bS1icm93c2VyaWZ5Ly0vdm0tYnJvd3NlcmlmeS0w
LjAuNC50Z3ojNWQ3ZWE0NWJiZWY5ZTRhNmZmNjVmOTU0MzhlMGE4N2MzNTdkNWE3MyIKLSAgZGVw
ZW5kZW5jaWVzOgotICAgIGluZGV4b2YgIjAuMC4xIgotCi13YWxrZXJAfjEuMC41OgotICB2ZXJz
aW9uICIxLjAuNyIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vd2Fs
a2VyLy0vd2Fsa2VyLTEuMC43LnRneiMyZjdmOWI4ZmQxMGQ2NzcyNjJiMThhODg0ZTI4ZDE5NjE4
ZTAyOGZiIgotICBkZXBlbmRlbmNpZXM6Ci0gICAgbWFrZWVycm9yICIxLjAueCIKLQotd2F0Y2hA
fjAuMTAuMDoKLSAgdmVyc2lvbiAiMC4xMC4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3Ry
eS55YXJucGtnLmNvbS93YXRjaC8tL3dhdGNoLTAuMTAuMC50Z3ojNzc3OThiMmRhMGY5OTEwZDU5
NWYxYWNlNWIwYzIyNTg1MjFmMjFkYyIKLQotd2F0Y2hwYWNrQF4wLjIuMToKLSAgdmVyc2lvbiAi
MC4yLjkiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3dhdGNocGFj
ay8tL3dhdGNocGFjay0wLjIuOS50Z3ojNjJlYWE0YWI1ZTViYTM1ZmRmYzAxODI3NTYyNmUzYzBm
NWUzZmIwYiIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGFzeW5jICJeMC45LjAiCi0gICAgY2hva2lk
YXIgIl4xLjAuMCIKLSAgICBncmFjZWZ1bC1mcyAiXjQuMS4yIgotCi13ZWJpZGwtY29udmVyc2lv
bnNAXjIuMC4wOgotICB2ZXJzaW9uICIyLjAuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0
cnkueWFybnBrZy5jb20vd2ViaWRsLWNvbnZlcnNpb25zLy0vd2ViaWRsLWNvbnZlcnNpb25zLTIu
MC4xLnRneiMzYmY4MjU4ZjdkMzE4Yzc0NDNjMzZmMmUxNjk0MDJhMWE2NzAzNTA2IgotCi13ZWJp
ZGwtY29udmVyc2lvbnNAXjMuMC4wLCB3ZWJpZGwtY29udmVyc2lvbnNAXjMuMC4xOgotICB2ZXJz
aW9uICIzLjAuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vd2Vi
aWRsLWNvbnZlcnNpb25zLy0vd2ViaWRsLWNvbnZlcnNpb25zLTMuMC4xLnRneiMyNDUzNDI3NWUy
YTdiYzZiZTdiYzg2NjExY2MxNmFlMGE1NjU0ODcxIgotCi13ZWJwYWNrLWNvcmVAfjAuNi4wOgot
ICB2ZXJzaW9uICIwLjYuOCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5j
b20vd2VicGFjay1jb3JlLy0vd2VicGFjay1jb3JlLTAuNi44LnRneiNlZGY5MTM1ZGUwMGE2YTNj
MjZkZDBmMTRiMjA4YWYwYWE0YWY4ZDBhIgotICBkZXBlbmRlbmNpZXM6Ci0gICAgc291cmNlLWxp
c3QtbWFwICJ+MC4xLjAiCi0gICAgc291cmNlLW1hcCAifjAuNC4xIgotCi13ZWJwYWNrLWRldi1t
aWRkbGV3YXJlQF4xLjQuMDoKLSAgdmVyc2lvbiAiMS44LjQiCi0gIHJlc29sdmVkICJodHRwczov
L3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3dlYnBhY2stZGV2LW1pZGRsZXdhcmUvLS93ZWJwYWNrLWRl
di1taWRkbGV3YXJlLTEuOC40LnRneiNlODc2NWM5MTIyODg3Y2U5ZTNhYmQ0Y2M5YzNlYjMxYjYx
ZTA5NDhkIgotICBkZXBlbmRlbmNpZXM6Ci0gICAgbWVtb3J5LWZzICJ+MC4zLjAiCi0gICAgbWlt
ZSAiXjEuMy40IgotICAgIHBhdGgtaXMtYWJzb2x1dGUgIl4xLjAuMCIKLSAgICByYW5nZS1wYXJz
ZXIgIl4xLjAuMyIKLQotd2VicGFjay1kZXYtc2VydmVyQDEuMTYuMToKLSAgdmVyc2lvbiAiMS4x
Ni4xIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS93ZWJwYWNrLWRl
di1zZXJ2ZXIvLS93ZWJwYWNrLWRldi1zZXJ2ZXItMS4xNi4xLnRneiNhZjU4ZTkzYjFkYzA0MDUy
MGQyOGRjZTQyNzU1YjNhNGM3Y2M4MjJiIgotICBkZXBlbmRlbmNpZXM6Ci0gICAgY29tcHJlc3Np
b24gIl4xLjUuMiIKLSAgICBjb25uZWN0LWhpc3RvcnktYXBpLWZhbGxiYWNrICJeMS4zLjAiCi0g
ICAgZXhwcmVzcyAiXjQuMTMuMyIKLSAgICBodHRwLXByb3h5LW1pZGRsZXdhcmUgIn4wLjE3LjEi
Ci0gICAgb3BlbiAiMC4wLjUiCi0gICAgb3B0aW1pc3QgIn4wLjYuMSIKLSAgICBzZXJ2ZS1pbmRl
eCAiXjEuNy4yIgotICAgIHNvY2tqcyAiXjAuMy4xNSIKLSAgICBzb2NranMtY2xpZW50ICJeMS4w
LjMiCi0gICAgc3RyZWFtLWNhY2hlICJ+MC4wLjEiCi0gICAgc3RyaXAtYW5zaSAiXjMuMC4wIgot
ICAgIHN1cHBvcnRzLWNvbG9yICJeMy4xLjEiCi0gICAgd2VicGFjay1kZXYtbWlkZGxld2FyZSAi
XjEuNC4wIgotCi13ZWJwYWNrLXNvdXJjZXNAXjAuMS4wOgotICB2ZXJzaW9uICIwLjEuMiIKLSAg
cmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vd2VicGFjay1zb3VyY2VzLy0v
d2VicGFjay1zb3VyY2VzLTAuMS4yLnRneiMwNTdhM2YzMjU1ZjhiYTU2MWI5MDFkOTE1MDU4OWFh
MTAzYTU3ZTY1IgotICBkZXBlbmRlbmNpZXM6Ci0gICAgc291cmNlLWxpc3QtbWFwICJ+MC4xLjAi
Ci0gICAgc291cmNlLW1hcCAifjAuNS4zIgotCi13ZWJwYWNrQDEuMTMuMjoKLSAgdmVyc2lvbiAi
MS4xMy4yIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS93ZWJwYWNr
Ly0vd2VicGFjay0xLjEzLjIudGd6I2YxMWE5NmY0NThlYjc1Mjk3MGE4NmFiZTc0NmMwNzA0ZmFi
YWZhZjMiCi0gIGRlcGVuZGVuY2llczoKLSAgICBhY29ybiAiXjMuMC4wIgotICAgIGFzeW5jICJe
MS4zLjAiCi0gICAgY2xvbmUgIl4xLjAuMiIKLSAgICBlbmhhbmNlZC1yZXNvbHZlICJ+MC45LjAi
Ci0gICAgaW50ZXJwcmV0ICJeMC42LjQiCi0gICAgbG9hZGVyLXV0aWxzICJeMC4yLjExIgotICAg
IG1lbW9yeS1mcyAifjAuMy4wIgotICAgIG1rZGlycCAifjAuNS4wIgotICAgIG5vZGUtbGlicy1i
cm93c2VyICJeMC42LjAiCi0gICAgb3B0aW1pc3QgIn4wLjYuMCIKLSAgICBzdXBwb3J0cy1jb2xv
ciAiXjMuMS4wIgotICAgIHRhcGFibGUgIn4wLjEuOCIKLSAgICB1Z2xpZnktanMgIn4yLjYuMCIK
LSAgICB3YXRjaHBhY2sgIl4wLjIuMSIKLSAgICB3ZWJwYWNrLWNvcmUgIn4wLjYuMCIKLQotd2Vi
c29ja2V0LWRyaXZlckA+PTAuMy42LCB3ZWJzb2NrZXQtZHJpdmVyQD49MC41LjE6Ci0gIHZlcnNp
b24gIjAuNi41IgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS93ZWJz
b2NrZXQtZHJpdmVyLy0vd2Vic29ja2V0LWRyaXZlci0wLjYuNS50Z3ojNWNiMjU1NmNlYjg1ZjQz
NzNjNmQ4MjM4YWE2OTFjODQ1NGUxM2EzNiIKLSAgZGVwZW5kZW5jaWVzOgotICAgIHdlYnNvY2tl
dC1leHRlbnNpb25zICI+PTAuMS4xIgotCi13ZWJzb2NrZXQtZXh0ZW5zaW9uc0A+PTAuMS4xOgot
ICB2ZXJzaW9uICIwLjEuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5j
b20vd2Vic29ja2V0LWV4dGVuc2lvbnMvLS93ZWJzb2NrZXQtZXh0ZW5zaW9ucy0wLjEuMS50Z3oj
NzY4OTk0OTljMTg0YjZlZjc1NDM3N2MyZGJiMGNkNmNiNTVkMjllNyIKLQotd2hhdHdnLWZldGNo
QD49MC4xMC4wLCB3aGF0d2ctZmV0Y2hAMS4wLjA6Ci0gIHZlcnNpb24gIjEuMC4wIgotICByZXNv
bHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS93aGF0d2ctZmV0Y2gvLS93aGF0d2ct
ZmV0Y2gtMS4wLjAudGd6IzAxYzJhYzRkZjQwZTIzNmFhYTE4NDgwZTNiZTc0YmQ1YzhlYjc5OGUi
Ci0KLXdoYXR3Zy11cmwtY29tcGF0QH4wLjYuNToKLSAgdmVyc2lvbiAiMC42LjUiCi0gIHJlc29s
dmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3doYXR3Zy11cmwtY29tcGF0Ly0vd2hh
dHdnLXVybC1jb21wYXQtMC42LjUudGd6IzAwODk4MTExYWY2ODliYjA5NzU0MWNkNWE0NWNhNmM4
Nzk4NDQ1YmYiCi0gIGRlcGVuZGVuY2llczoKLSAgICB0cjQ2ICJ+MC4wLjEiCi0KLXdoYXR3Zy11
cmxAXjMuMC4wOgotICB2ZXJzaW9uICIzLjAuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0
cnkueWFybnBrZy5jb20vd2hhdHdnLXVybC8tL3doYXR3Zy11cmwtMy4wLjAudGd6I2I5MDMzYzUw
YzdjZTc2M2U5MWQ3ODc3N2NlODI1YTZkN2Y1NmRhYzUiCi0gIGRlcGVuZGVuY2llczoKLSAgICB0
cjQ2ICJ+MC4wLjMiCi0gICAgd2ViaWRsLWNvbnZlcnNpb25zICJeMy4wLjAiCi0KLXdoZXQuZXh0
ZW5kQH4wLjkuOToKLSAgdmVyc2lvbiAiMC45LjkiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lz
dHJ5Lnlhcm5wa2cuY29tL3doZXQuZXh0ZW5kLy0vd2hldC5leHRlbmQtMC45LjkudGd6I2Y4Nzdk
NWJmNjQ4Yzk3ZTVhYTU0MmZhZGMxNmQ2YTI1OWI5YzExYTEiCi0KLXdoaWNoLW1vZHVsZUBeMS4w
LjA6Ci0gIHZlcnNpb24gIjEuMC4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJu
cGtnLmNvbS93aGljaC1tb2R1bGUvLS93aGljaC1tb2R1bGUtMS4wLjAudGd6I2JiYTYzY2E4NjE5
NDg5OTRmZjMwNzczNjA4OWUzYjk2MDI2YzJhNGYiCi0KLXdoaWNoQF4xLjAuNSwgd2hpY2hAXjEu
MS4xLCB3aGljaEBeMS4yLjk6Ci0gIHZlcnNpb24gIjEuMi4xMSIKLSAgcmVzb2x2ZWQgImh0dHBz
Oi8vcmVnaXN0cnkueWFybnBrZy5jb20vd2hpY2gvLS93aGljaC0xLjIuMTEudGd6I2M4YjJlZWVh
NmI4YzE2NTlmYTdjMWRkNGZkYWFiZTk1MzNkYzVlOGIiCi0gIGRlcGVuZGVuY2llczoKLSAgICBp
c2V4ZSAiXjEuMS4xIgotCi13aWRlLWFsaWduQF4xLjEuMDoKLSAgdmVyc2lvbiAiMS4xLjAiCi0g
IHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3dpZGUtYWxpZ24vLS93aWRl
LWFsaWduLTEuMS4wLnRneiM0MGVkZGU4MDJhNzFmZWExZjA3MGRhM2U2MmRjZGEyZTdhZGQ5NmFk
IgotICBkZXBlbmRlbmNpZXM6Ci0gICAgc3RyaW5nLXdpZHRoICJeMS4wLjEiCi0KLXdpbmRvdy1z
aXplQF4wLjIuMDoKLSAgdmVyc2lvbiAiMC4yLjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lz
dHJ5Lnlhcm5wa2cuY29tL3dpbmRvdy1zaXplLy0vd2luZG93LXNpemUtMC4yLjAudGd6I2I0MzE1
YmI0MjE0YTNkNzA1OGViZWVlODkyZTEzZmEyNGQ5OGIwNzUiCi0KLXdpbmRvdy1zaXplQDAuMS4w
OgotICB2ZXJzaW9uICIwLjEuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBr
Zy5jb20vd2luZG93LXNpemUvLS93aW5kb3ctc2l6ZS0wLjEuMC50Z3ojNTQzOGNkMmVhOTNiMjAy
ZWZhM2ExOWZlODg4N2FlZTdjOTRmOWM5ZCIKLQotd29yZHdyYXBAXjEuMC4wLCB3b3Jkd3JhcEB+
MS4wLjA6Ci0gIHZlcnNpb24gIjEuMC4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55
YXJucGtnLmNvbS93b3Jkd3JhcC8tL3dvcmR3cmFwLTEuMC4wLnRneiMyNzU4NDgxMDg5MTQ1NmE0
MTcxYzhkMDIyNjQ0MWFkZTkwY2JjYWViIgotCi13b3Jkd3JhcEB+MC4wLjI6Ci0gIHZlcnNpb24g
IjAuMC4zIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS93b3Jkd3Jh
cC8tL3dvcmR3cmFwLTAuMC4zLnRneiNhM2Q1ZGE2Y2Q1YzBiYzAwMDhkMzcyMzRiYmFmMWJlZDYz
MDU5MTA3IgotCi13b3Jkd3JhcEAwLjAuMjoKLSAgdmVyc2lvbiAiMC4wLjIiCi0gIHJlc29sdmVk
ICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3dvcmR3cmFwLy0vd29yZHdyYXAtMC4wLjIu
dGd6I2I3OTY2OWJiNDJlY2I0MDlmODNkNTgzY2FkNTJjYTE3ZWFhMTY0M2YiCi0KLXdvcmtlci1m
YXJtQF4xLjMuMToKLSAgdmVyc2lvbiAiMS4zLjEiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lz
dHJ5Lnlhcm5wa2cuY29tL3dvcmtlci1mYXJtLy0vd29ya2VyLWZhcm0tMS4zLjEudGd6IzQzMzMx
MTJiYjQ5YjE3YWEwNTBiODc4OTVjYTZiMmNhY2Y0MGU1ZmYiCi0gIGRlcGVuZGVuY2llczoKLSAg
ICBlcnJubyAiPj0wLjEuMSA8MC4yLjAtMCIKLSAgICB4dGVuZCAiPj00LjAuMCA8NC4xLjAtMCIK
LQotd3JhcC1hbnNpQF4yLjAuMDoKLSAgdmVyc2lvbiAiMi4wLjAiCi0gIHJlc29sdmVkICJodHRw
czovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3dyYXAtYW5zaS8tL3dyYXAtYW5zaS0yLjAuMC50Z3oj
N2QzMGY4Zjg3M2Y5YTViYmMzYTY0ZGFiYzhkMTc3ZTA3MWFlNDI2ZiIKLSAgZGVwZW5kZW5jaWVz
OgotICAgIHN0cmluZy13aWR0aCAiXjEuMC4xIgotCi13cmFwcHlAMToKLSAgdmVyc2lvbiAiMS4w
LjIiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3dyYXBweS8tL3dy
YXBweS0xLjAuMi50Z3ojYjUyNDNkOGYzZWMxYWEzNWYxMzY0NjA1YmMwZDEwMzZlMzBhYjY5ZiIK
LQotd3JpdGVAXjAuMi4xOgotICB2ZXJzaW9uICIwLjIuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8v
cmVnaXN0cnkueWFybnBrZy5jb20vd3JpdGUvLS93cml0ZS0wLjIuMS50Z3ojNWZjMDM4MjhlMjY0
Y2VhM2ZlOTE0NTU0NzZmN2EzYzU2NmNiMDc1NyIKLSAgZGVwZW5kZW5jaWVzOgotICAgIG1rZGly
cCAiXjAuNS4xIgotCi14bWwtY2hhci1jbGFzc2VzQF4xLjAuMDoKLSAgdmVyc2lvbiAiMS4wLjAi
Ci0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3htbC1jaGFyLWNsYXNz
ZXMvLS94bWwtY2hhci1jbGFzc2VzLTEuMC4wLnRneiM2NDY1Nzg0OGEyMGZmYzVkZjU4M2E0MmFk
OGEyNzdiNDUxMmJiYzRkIgotCi0ieG1sLW5hbWUtdmFsaWRhdG9yQD49IDIuMC4xIDwgMy4wLjAi
OgotICB2ZXJzaW9uICIyLjAuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBr
Zy5jb20veG1sLW5hbWUtdmFsaWRhdG9yLy0veG1sLW5hbWUtdmFsaWRhdG9yLTIuMC4xLnRneiM0
ZDhiOGYxZWNjZDM0MTlhYTM2MjA2MWJlY2VmNTE1ZTFlNTU5NjM1IgotCi14dGVuZEBeNC4wLjAs
ICJ4dGVuZEA+PTQuMC4wIDw0LjEuMC0wIjoKLSAgdmVyc2lvbiAiNC4wLjEiCi0gIHJlc29sdmVk
ICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3h0ZW5kLy0veHRlbmQtNC4wLjEudGd6I2E1
YzZkNTMyYmU2NTZlMjNkYjgyMGVmYjk0M2ExZjA0OTk4ZDYzYWYiCi0KLXkxOG5AXjMuMi4xOgot
ICB2ZXJzaW9uICIzLjIuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5j
b20veTE4bi8tL3kxOG4tMy4yLjEudGd6IzZkMTVmYmE4ODRjMDg2NzljMGQ3N2U4OGU3NzU5ZTgx
MWUwN2ZhNDEiCi0KLXlhbGxpc3RAXjIuMC4wOgotICB2ZXJzaW9uICIyLjAuMCIKLSAgcmVzb2x2
ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20veWFsbGlzdC8tL3lhbGxpc3QtMi4wLjAu
dGd6IzMwNmM1NDM4MzVmMDllZTFhNGNiMjNiN2JjZTlhYjM0MWM5MWNkZDQiCi0KLXlhcmdzLXBh
cnNlckBeMy4yLjA6Ci0gIHZlcnNpb24gIjMuMi4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdp
c3RyeS55YXJucGtnLmNvbS95YXJncy1wYXJzZXIvLS95YXJncy1wYXJzZXItMy4yLjAudGd6IzUw
ODEzNTVkMTlkOWQwYzhjNWQ4MWFkYTkwOGNiNGU2ZDE4NjY2NGYiCi0gIGRlcGVuZGVuY2llczoK
LSAgICBjYW1lbGNhc2UgIl4zLjAuMCIKLSAgICBsb2Rhc2guYXNzaWduICJeNC4xLjAiCi0KLXlh
cmdzQF41LjAuMDoKLSAgdmVyc2lvbiAiNS4wLjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lz
dHJ5Lnlhcm5wa2cuY29tL3lhcmdzLy0veWFyZ3MtNS4wLjAudGd6IzMzNTUxNDQ5NzdkMDU3NTdk
YmI4NmQ2ZTM4ZWMwNTYxMjNiM2E2NmUiCi0gIGRlcGVuZGVuY2llczoKLSAgICBjbGl1aSAiXjMu
Mi4wIgotICAgIGRlY2FtZWxpemUgIl4xLjEuMSIKLSAgICBnZXQtY2FsbGVyLWZpbGUgIl4xLjAu
MSIKLSAgICBsb2Rhc2guYXNzaWduICJeNC4yLjAiCi0gICAgb3MtbG9jYWxlICJeMS40LjAiCi0g
ICAgcmVhZC1wa2ctdXAgIl4xLjAuMSIKLSAgICByZXF1aXJlLWRpcmVjdG9yeSAiXjIuMS4xIgot
ICAgIHJlcXVpcmUtbWFpbi1maWxlbmFtZSAiXjEuMC4xIgotICAgIHNldC1ibG9ja2luZyAiXjIu
MC4wIgotICAgIHN0cmluZy13aWR0aCAiXjEuMC4yIgotICAgIHdoaWNoLW1vZHVsZSAiXjEuMC4w
IgotICAgIHdpbmRvdy1zaXplICJeMC4yLjAiCi0gICAgeTE4biAiXjMuMi4xIgotICAgIHlhcmdz
LXBhcnNlciAiXjMuMi4wIgotCi15YXJnc0B+My4xMC4wOgotICB2ZXJzaW9uICIzLjEwLjAiCi0g
IHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3lhcmdzLy0veWFyZ3MtMy4x
MC4wLnRneiNmN2VlN2JkODU3ZGQ3YzFkMmQzOGMwZTc0ZWZiZDY4MWQxNDMxZmQxIgotICBkZXBl
bmRlbmNpZXM6Ci0gICAgY2FtZWxjYXNlICJeMS4wLjIiCi0gICAgY2xpdWkgIl4yLjEuMCIKLSAg
ICBkZWNhbWVsaXplICJeMS4wLjAiCi0gICAgd2luZG93LXNpemUgIjAuMS4wIgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>318854</attachid>
            <date>2017-08-22 23:20:33 -0700</date>
            <delta_ts>2017-08-23 14:39:58 -0700</delta_ts>
            <desc>Fixes the bug</desc>
            <filename>bug-175818-20170822232025.patch</filename>
            <type>text/plain</type>
            <size>4666546</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1h
bmNlVGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjEwNjgpCisrKyBQZXJmb3JtYW5jZVRlc3Rz
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBACisyMDE3LTA4LTIyICBS
eW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFNwZWVkb21ldGVyOiBN
YWtlIFJlYWN0L1JlZHV4IGl0ZW0gb3JkZXIgY29uc2lzdGVudAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1ODE4CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQmFzZWQgb24gdGhlIHBhdGNoIG1hZGUgYnkg
TWF0aGlhcyBCeW5lbnMuIFJlLWdlbmVyYXRlZCBwcm9qZWN0IGZpbGVzLgorCisgICAgICAgIEFs
c28gdHdlYWtlZCB0aGUgaW5zdHJ1Y3Rpb24gaW4gcGFja2FnZS5qc29uIHNvIHRoYXQgbmV3bHkg
Z2VuZXJhdGVkIGZpbGVzIGluIGJ1aWxkLyogcmVwbGFjZSBkaXN0LyogaW5zdGVhZCBvZgorICAg
ICAgICBiZWluZyBtb3ZlZCB1bmRlciBkaXN0L2J1aWxkLyBieSBybSAtcmYnaW5nIGRpc3QgZGly
ZWN0b3J5IGZpcnN0LgorCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMv
YXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0LXJlZHV4L2Rpc3QvaW5kZXguaHRtbDoKKyAgICAg
ICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMv
cmVhY3QtcmVkdXgvZGlzdC9zdGF0aWMvanMvbWFpbi40M2EwOTQ4Yy5qczogUmVtb3ZlZC4KKyAg
ICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBs
ZXMvcmVhY3QtcmVkdXgvZGlzdC9zdGF0aWMvanMvbWFpbi40M2EwOTQ4Yy5qcy5tYXA6IFJlbW92
ZWQuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJl
LWV4YW1wbGVzL3JlYWN0LXJlZHV4L2Rpc3Qvc3RhdGljL2pzL21haW4uNjljZDk2NTUuanM6IEFk
ZGVkLgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVy
ZS1leGFtcGxlcy9yZWFjdC1yZWR1eC9kaXN0L3N0YXRpYy9qcy9tYWluLjY5Y2Q5NjU1LmpzLm1h
cDogQWRkZWQuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0
ZWN0dXJlLWV4YW1wbGVzL3JlYWN0LXJlZHV4L3BhY2thZ2UuanNvbjoKKyAgICAgICAgKiBTcGVl
ZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3QtcmVk
dXgvc3JjL3JlZHVjZXJzL3RvZG9zLmpzOiBGb3JjZWQgbmV3IGl0ZW1zIHRvIGJlIGFwcGVuZGVk
IHJhdGhlciB0aGFuIHByZXBlbmRlZC4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMv
dG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3QtcmVkdXgveWFybi5sb2NrOiBSZW1v
dmVkIHVubmVjZXNzYXJ5IGZpbGUuCisKIDIwMTctMDgtMjIgIFJ5b3N1a2UgTml3YSAgPHJuaXdh
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgUkVHUkVTU0lPTihSMjIwMDQzKTogU3BlZWRvbWV0ZXIg
Mi4wOiBGaXggdmFuaWxsYSBKUyBleGFtcGxlcwpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9TcGVl
ZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3QtcmVk
dXgvcGFja2FnZS5qc29uCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0
ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0LXJlZHV4L3Bh
Y2thZ2UuanNvbgkocmV2aXNpb24gMjIxMDY4KQorKysgUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3QtcmVkdXgv
cGFja2FnZS5qc29uCSh3b3JraW5nIGNvcHkpCkBAIC0xNSw3ICsxNSw3IEBACiAgIH0sCiAgICJz
Y3JpcHRzIjogewogICAgICJzdGFydCI6ICJyZWFjdC1zY3JpcHRzIHN0YXJ0IiwKLSAgICAiYnVp
bGQiOiAicmVhY3Qtc2NyaXB0cyBidWlsZCAmJiBtdiBidWlsZCBkaXN0IiwKKyAgICAiYnVpbGQi
OiAicm0gLXJmIGRpc3QgJiYgcmVhY3Qtc2NyaXB0cyBidWlsZCAmJiBtdiBidWlsZCBkaXN0IiwK
ICAgICAidGVzdCI6ICJyZWFjdC1zY3JpcHRzIHRlc3QiCiAgIH0sCiAgICJob21lcGFnZSI6ICIu
LyIKSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMv
YXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0LXJlZHV4L3lhcm4ubG9jawo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBQZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVj
dHVyZS1leGFtcGxlcy9yZWFjdC1yZWR1eC95YXJuLmxvY2sJKHJldmlzaW9uIDIyMTA2OCkKKysr
IFBlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0
dXJlLWV4YW1wbGVzL3JlYWN0LXJlZHV4L3lhcm4ubG9jawkobm9uZXhpc3RlbnQpCkBAIC0xLDU1
MjggKzAsMCBAQAotIyBUSElTIElTIEFOIEFVVE9HRU5FUkFURUQgRklMRS4gRE8gTk9UIEVESVQg
VEhJUyBGSUxFIERJUkVDVExZLgotIyB5YXJuIGxvY2tmaWxlIHYxCi1hYmFiQF4xLjAuMDoKLSAg
dmVyc2lvbiAiMS4wLjMiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29t
L2FiYWIvLS9hYmFiLTEuMC4zLnRneiNiODFkZTVmNzI3NGVjNGU3NTZkNzk3Y2Q4MzRmMzAzNjQy
NzI0ZTVkIgotCi1hYmJyZXZAMSwgYWJicmV2QDEuMC54OgotICB2ZXJzaW9uICIxLjAuOSIKLSAg
cmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYWJicmV2Ly0vYWJicmV2LTEu
MC45LnRneiM5MWI0NzkyNTg4YTc3MzhjMjVmMzVkZDZmNjM3NTJhMmY4Nzc2MTM1IgotCi1hY2Nl
cHRzQH4xLjMuMzoKLSAgdmVyc2lvbiAiMS4zLjMiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lz
dHJ5Lnlhcm5wa2cuY29tL2FjY2VwdHMvLS9hY2NlcHRzLTEuMy4zLnRneiNjM2NhNzQzNDkzODY0
OGMzZTBkOWMxZTMyOGRkNjhiNjIyYzI4NGNhIgotICBkZXBlbmRlbmNpZXM6Ci0gICAgbWltZS10
eXBlcyAifjIuMS4xMSIKLSAgICBuZWdvdGlhdG9yICIwLjYuMSIKLQotYWNvcm4tZ2xvYmFsc0Be
MS4wLjQ6Ci0gIHZlcnNpb24gIjEuMC45IgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55
YXJucGtnLmNvbS9hY29ybi1nbG9iYWxzLy0vYWNvcm4tZ2xvYmFscy0xLjAuOS50Z3ojNTViYjVl
OTg2OTE1MDdiNzQ1NzlkMDUxMzQxMzIxN2MzODBjNTRjZiIKLSAgZGVwZW5kZW5jaWVzOgotICAg
IGFjb3JuICJeMi4xLjAiCi0KLWFjb3JuLWpzeEBeMy4wLjA6Ci0gIHZlcnNpb24gIjMuMC4xIgot
ICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9hY29ybi1qc3gvLS9hY29y
bi1qc3gtMy4wLjEudGd6I2FmZGY5NDg4ZmIxZWNlZmM4MzQ4ZjZmYjIyZjQ2NGUzMmE1OGIzNmIi
Ci0gIGRlcGVuZGVuY2llczoKLSAgICBhY29ybiAiXjMuMC40IgotCi1hY29ybkBeMi4xLjAsIGFj
b3JuQF4yLjQuMDoKLSAgdmVyc2lvbiAiMi43LjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lz
dHJ5Lnlhcm5wa2cuY29tL2Fjb3JuLy0vYWNvcm4tMi43LjAudGd6I2FiNmU3ZDlkODg2YWFjYThi
MDg1YmMzMzEyYjc5YTE5ODQzM2YwZTciCi0KLWFjb3JuQF4zLjAuMCwgYWNvcm5AXjMuMC40Ogot
ICB2ZXJzaW9uICIzLjMuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5j
b20vYWNvcm4vLS9hY29ybi0zLjMuMC50Z3ojNDVlMzdmYjM5ZThkYTNmMjViYWVlM2ZmNTM2OWUy
YmI1ZjIyMDE3YSIKLQotYWNvcm5AXjQuMC4xOgotICB2ZXJzaW9uICI0LjAuMyIKLSAgcmVzb2x2
ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYWNvcm4vLS9hY29ybi00LjAuMy50Z3oj
MWEzZTg1MGI0MjhlNzNiYTZiMDlkMWNjNTI3ZjVhYWFkNGQwM2VmMSIKLQotYWp2LWtleXdvcmRz
QF4xLjAuMDoKLSAgdmVyc2lvbiAiMS4xLjEiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5
Lnlhcm5wa2cuY29tL2Fqdi1rZXl3b3Jkcy8tL2Fqdi1rZXl3b3Jkcy0xLjEuMS50Z3ojMDI1NTBi
YzYwNWEzZTU3NjA0MTU2NTYyOGFmOTcyZTA2YzU0OWQ1MCIKLQotYWp2QF40LjcuMDoKLSAgdmVy
c2lvbiAiNC43LjciCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2Fq
di8tL2Fqdi00LjcuNy50Z3ojNDk4MGQ1ZjY1Y2U5MGEyNTc5NTMyZWVjNjY0MjlmMzIwZGVhMDMy
MSIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGNvICJeNC42LjAiCi0gICAganNvbi1zdGFibGUtc3Ry
aW5naWZ5ICJeMS4wLjEiCi0KLWFsaWduLXRleHRAXjAuMS4xLCBhbGlnbi10ZXh0QF4wLjEuMzoK
LSAgdmVyc2lvbiAiMC4xLjQiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cu
Y29tL2FsaWduLXRleHQvLS9hbGlnbi10ZXh0LTAuMS40LnRneiMwY2Q5MGE1NjEwOTNmMzVkMGE5
OTI1NmMyMmI3MDY5NDMzZmFkMTE3IgotICBkZXBlbmRlbmNpZXM6Ci0gICAga2luZC1vZiAiXjMu
MC4yIgotICAgIGxvbmdlc3QgIl4xLjAuMSIKLSAgICByZXBlYXQtc3RyaW5nICJeMS41LjIiCi0K
LWFscGhhbnVtLXNvcnRAXjEuMC4xLCBhbHBoYW51bS1zb3J0QF4xLjAuMjoKLSAgdmVyc2lvbiAi
MS4wLjIiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2FscGhhbnVt
LXNvcnQvLS9hbHBoYW51bS1zb3J0LTEuMC4yLnRneiM5N2ExMTE5NjQ5YjIxMWFkMzM2OTFkOWY5
ZjQ4NmE4ZWM5ZmJlMGEzIgotCi1hbWRlZmluZUA+PTAuMC40OgotICB2ZXJzaW9uICIxLjAuMCIK
LSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYW1kZWZpbmUvLS9hbWRl
ZmluZS0xLjAuMC50Z3ojZmQxNzQ3NDcwMGNiNWNjOWMyYjcwOWYwYmU5ZDIzY2UzYzE5OGMzMyIK
LQotYW5zaS1lc2NhcGVzQF4xLjEuMCwgYW5zaS1lc2NhcGVzQF4xLjQuMDoKLSAgdmVyc2lvbiAi
MS40LjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2Fuc2ktZXNj
YXBlcy8tL2Fuc2ktZXNjYXBlcy0xLjQuMC50Z3ojZDNhOGE4M2IzMTlhYTY3NzkzNjYyYjEzZTc2
MWM3OTExNDIyMzA2ZSIKLQotYW5zaS1odG1sQDAuMC41OgotICB2ZXJzaW9uICIwLjAuNSIKLSAg
cmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYW5zaS1odG1sLy0vYW5zaS1o
dG1sLTAuMC41LnRneiMwZGNhYTVhMDgxMjA2ODY2YmMyNDBhM2I3NzNhMTg0ZWEzYjg4YjY0Igot
Ci1hbnNpLXJlZ2V4QF4yLjAuMDoKLSAgdmVyc2lvbiAiMi4wLjAiCi0gIHJlc29sdmVkICJodHRw
czovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2Fuc2ktcmVnZXgvLS9hbnNpLXJlZ2V4LTIuMC4wLnRn
eiNjNTA2MWI2ZTBlZjhhODE3NzVlNTBmNWQ2NjE1MWJmNmJmMzcxMTA3IgotCi1hbnNpLXN0eWxl
c0BeMi4yLjE6Ci0gIHZlcnNpb24gIjIuMi4xIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3Ry
eS55YXJucGtnLmNvbS9hbnNpLXN0eWxlcy8tL2Fuc2ktc3R5bGVzLTIuMi4xLnRneiNiNDMyZGQz
MzU4YjYzNGNmNzVlMWU0NjY0MzY4MjQwNTMzYzFkZGJlIgotCi1hbnNpY29sb3JzQH4wLjIuMToK
LSAgdmVyc2lvbiAiMC4yLjEiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cu
Y29tL2Fuc2ljb2xvcnMvLS9hbnNpY29sb3JzLTAuMi4xLnRneiNiZTA4OTU5OTA5N2I3NGE1Yzlj
NGE4NGEwY2RiY2RiNjJiZDg3YWVmIgotCi1hbnltYXRjaEBeMS4zLjA6Ci0gIHZlcnNpb24gIjEu
My4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9hbnltYXRjaC8t
L2FueW1hdGNoLTEuMy4wLnRneiNhM2U1MmZhMzkxNjhjODI1ZmY1N2IwMjQ4MTI2Y2U1YThmZjk1
NTA3IgotICBkZXBlbmRlbmNpZXM6Ci0gICAgYXJyaWZ5ICJeMS4wLjAiCi0gICAgbWljcm9tYXRj
aCAiXjIuMS41IgotCi1hcHBlbmQtdHJhbnNmb3JtQF4wLjMuMDoKLSAgdmVyc2lvbiAiMC4zLjAi
Ci0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2FwcGVuZC10cmFuc2Zv
cm0vLS9hcHBlbmQtdHJhbnNmb3JtLTAuMy4wLnRneiNkNjkzM2NlNGE4NWYwOTQ0NWQ5Y2NjNGNj
MTE5MDUxYjczODFhODEzIgotCi1hcHJvYmFAXjEuMC4zOgotICB2ZXJzaW9uICIxLjAuNCIKLSAg
cmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYXByb2JhLy0vYXByb2JhLTEu
MC40LnRneiMyNzEzNjgwNzc1ZTc2MTRjOGJhMTg2YzA2NWQ0ZTJlNTJkMTA3MmMwIgotCi1hcmUt
d2UtdGhlcmUteWV0QH4xLjEuMjoKLSAgdmVyc2lvbiAiMS4xLjIiCi0gIHJlc29sdmVkICJodHRw
czovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2FyZS13ZS10aGVyZS15ZXQvLS9hcmUtd2UtdGhlcmUt
eWV0LTEuMS4yLnRneiM4MGU0NzBlOTVhMDg0Nzk0ZmUxODk5MjYyYzU2NjdjNmU4OGRlMWIzIgot
ICBkZXBlbmRlbmNpZXM6Ci0gICAgZGVsZWdhdGVzICJeMS4wLjAiCi0gICAgcmVhZGFibGUtc3Ry
ZWFtICJeMi4wLjAgfHwgXjEuMS4xMyIKLQotYXJncGFyc2VAXjEuMC43OgotICB2ZXJzaW9uICIx
LjAuOSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYXJncGFyc2Uv
LS9hcmdwYXJzZS0xLjAuOS50Z3ojNzNkODNiYzI2M2Y4NmU5N2Y4Y2M0ZjZiYWUxYjBlOTBhN2Qy
MmM4NiIKLSAgZGVwZW5kZW5jaWVzOgotICAgIHNwcmludGYtanMgIn4xLjAuMiIKLQotYXJyLWRp
ZmZAXjIuMC4wOgotICB2ZXJzaW9uICIyLjAuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0
cnkueWFybnBrZy5jb20vYXJyLWRpZmYvLS9hcnItZGlmZi0yLjAuMC50Z3ojOGYzYjgyN2Y5NTVh
OGJkNjY5Njk3ZTRhNDI1NmFjM2NlYWUzNTZjZiIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGFyci1m
bGF0dGVuICJeMS4wLjEiCi0KLWFyci1mbGF0dGVuQF4xLjAuMToKLSAgdmVyc2lvbiAiMS4wLjEi
Ci0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2Fyci1mbGF0dGVuLy0v
YXJyLWZsYXR0ZW4tMS4wLjEudGd6I2U1ZmZlNTRkNDVlMTlmMzJmMjE2ZTkxZWI5OWM4Y2U4OTJi
YjYwNGIiCi0KLWFycmF5LWRpZmZlckBeMS4wLjA6Ci0gIHZlcnNpb24gIjEuMC4wIgotICByZXNv
bHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9hcnJheS1kaWZmZXIvLS9hcnJheS1k
aWZmZXItMS4wLjAudGd6I2VmZjUyZTM3NTgyNDlkMzNiZTQwMmI4YmI4ZTU2NGJiMmI1ZDQwMzEi
Ci0KLWFycmF5LWVxdWFsQF4xLjAuMDoKLSAgdmVyc2lvbiAiMS4wLjAiCi0gIHJlc29sdmVkICJo
dHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2FycmF5LWVxdWFsLy0vYXJyYXktZXF1YWwtMS4w
LjAudGd6IzhjMmE1ZWYyNDcyZmQ5ZWE3NDJiMDRjNzdhNzUwOTNiYTI3NTdjOTMiCi0KLWFycmF5
LWZsYXR0ZW5AMS4xLjE6Ci0gIHZlcnNpb24gIjEuMS4xIgotICByZXNvbHZlZCAiaHR0cHM6Ly9y
ZWdpc3RyeS55YXJucGtnLmNvbS9hcnJheS1mbGF0dGVuLy0vYXJyYXktZmxhdHRlbi0xLjEuMS50
Z3ojOWE1ZjY5OTA1MWIxZTcwNzMzMjhmMmEwMDg5NjhiNjRlYTI5NTVkMiIKLQotYXJyYXktdW5p
b25AXjEuMC4xOgotICB2ZXJzaW9uICIxLjAuMiIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0
cnkueWFybnBrZy5jb20vYXJyYXktdW5pb24vLS9hcnJheS11bmlvbi0xLjAuMi50Z3ojOWEzNDQx
MGU0ZjRlM2RhMjNkZWEzNzViZTViZTcwZjI0Nzc4ZWMzOSIKLSAgZGVwZW5kZW5jaWVzOgotICAg
IGFycmF5LXVuaXEgIl4xLjAuMSIKLQotYXJyYXktdW5pcUBeMS4wLjE6Ci0gIHZlcnNpb24gIjEu
MC4zIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9hcnJheS11bmlx
Ly0vYXJyYXktdW5pcS0xLjAuMy50Z3ojYWY2YWM4NzdhMjVjYzdmNzRlMDU4ODk0NzUzODU4ZGZk
YjI0ZmRiNiIKLQotYXJyYXktdW5pcXVlQF4wLjIuMToKLSAgdmVyc2lvbiAiMC4yLjEiCi0gIHJl
c29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2FycmF5LXVuaXF1ZS8tL2FycmF5
LXVuaXF1ZS0wLjIuMS50Z3ojYTFkOTdjY2FmY2JjMjYyNWNjNzBmYWRjZWIzNmE1MGM1OGIwMWE1
MyIKLQotYXJyaWZ5QF4xLjAuMCwgYXJyaWZ5QF4xLjAuMToKLSAgdmVyc2lvbiAiMS4wLjEiCi0g
IHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2FycmlmeS8tL2FycmlmeS0x
LjAuMS50Z3ojODk4NTA4ZGEyMjI2ZjM4MGRmOTA0NzI4NDU2ODQ5YzE1MDFhNGIwZCIKLQotYXNh
cEB+Mi4wLjM6Ci0gIHZlcnNpb24gIjIuMC41IgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3Ry
eS55YXJucGtnLmNvbS9hc2FwLy0vYXNhcC0yLjAuNS50Z3ojNTIyNzY1YjUwYzM1MTA0OTBlNTJk
N2RjZmUwODVlZjliYTk2OTU4ZiIKLQotYXNuMUB+MC4yLjM6Ci0gIHZlcnNpb24gIjAuMi4zIgot
ICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9hc24xLy0vYXNuMS0wLjIu
My50Z3ojZGFjODc4NzcxM2M5OTY2ODQ5ZmM4MTgwNzc3ZWJlOWMxZGRmM2I4NiIKLQotYXNzZXJ0
LXBsdXNAXjAuMi4wOgotICB2ZXJzaW9uICIwLjIuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVn
aXN0cnkueWFybnBrZy5jb20vYXNzZXJ0LXBsdXMvLS9hc3NlcnQtcGx1cy0wLjIuMC50Z3ojZDc0
ZTFiODdlN2FmZmMwZGI4YWFkYjcwMjFmM2ZlNDgxMDFhYjIzNCIKLQotYXNzZXJ0LXBsdXNAXjEu
MC4wOgotICB2ZXJzaW9uICIxLjAuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFy
bnBrZy5jb20vYXNzZXJ0LXBsdXMvLS9hc3NlcnQtcGx1cy0xLjAuMC50Z3ojZjEyZTBmM2M1ZDc3
YjBiMWNkZDkxNDY5NDJlNGU5NmMxZTRkZDUyNSIKLQotYXNzZXJ0QF4xLjEuMToKLSAgdmVyc2lv
biAiMS40LjEiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2Fzc2Vy
dC8tL2Fzc2VydC0xLjQuMS50Z3ojOTk5MTJkNTkxODM2YjVhNmY1YjM0NWMwZjA3ZWVmYzA4ZmM2
NWQ5MSIKLSAgZGVwZW5kZW5jaWVzOgotICAgIHV0aWwgIjAuMTAuMyIKLQotYXN5bmMtZWFjaEBe
MS4wLjA6Ci0gIHZlcnNpb24gIjEuMC4xIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55
YXJucGtnLmNvbS9hc3luYy1lYWNoLy0vYXN5bmMtZWFjaC0xLjAuMS50Z3ojMTlkMzg2YTFkOWVk
YzZlN2MxYzg1ZDM4OGFlZGJjYzU2ZDMzNjAyZCIKLQotYXN5bmNAXjAuOS4wOgotICB2ZXJzaW9u
ICIwLjkuMiIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYXN5bmMv
LS9hc3luYy0wLjkuMi50Z3ojYWVhNzRkNWU2MWMxZjg5OTYxM2JmNjRiZGE2NmQ0Yzc4ZjJmZDE3
ZCIKLQotYXN5bmNAXjEuMy4wLCBhc3luY0BeMS40LjAsIGFzeW5jQF4xLjQuMiwgYXN5bmNAXjEu
NS4wLCBhc3luY0AxLng6Ci0gIHZlcnNpb24gIjEuNS4yIgotICByZXNvbHZlZCAiaHR0cHM6Ly9y
ZWdpc3RyeS55YXJucGtnLmNvbS9hc3luYy8tL2FzeW5jLTEuNS4yLnRneiNlYzZhNjFhZTU2NDgw
YzBjM2NiMjQxYzk1NjE4ZTIwODkyZjk2NzJhIgotCi1hc3luY0B+MC4yLjY6Ci0gIHZlcnNpb24g
IjAuMi4xMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYXN5bmMv
LS9hc3luYy0wLjIuMTAudGd6I2I2YmJlMGIwNjc0YjlkNzE5NzA4Y2EzOGRlOGMyMzdjYjUyNmMz
ZDEiCi0KLWFzeW5ja2l0QF4wLjQuMDoKLSAgdmVyc2lvbiAiMC40LjAiCi0gIHJlc29sdmVkICJo
dHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2FzeW5ja2l0Ly0vYXN5bmNraXQtMC40LjAudGd6
I2M3OWVkOTdmN2YzNGNiOGYyYmExYmM5NzkwYmNjMzY2NDc0YjRiNzkiCi0KLWF1dG9wcmVmaXhl
ckBeNi4zLjE6Ci0gIHZlcnNpb24gIjYuNS4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3Ry
eS55YXJucGtnLmNvbS9hdXRvcHJlZml4ZXIvLS9hdXRvcHJlZml4ZXItNi41LjAudGd6IzkxMGRl
MGFhMGYyMmFmNGM3ZDUwMzY3Y2JjOWQ0ZDQxMjk0NTE2MmYiCi0gIGRlcGVuZGVuY2llczoKLSAg
ICBicm93c2Vyc2xpc3QgIn4xLjQuMCIKLSAgICBjYW5pdXNlLWRiICJeMS4wLjMwMDAwNTQwIgot
ICAgIG5vcm1hbGl6ZS1yYW5nZSAiXjAuMS4yIgotICAgIG51bTJmcmFjdGlvbiAiXjEuMi4yIgot
ICAgIHBvc3Rjc3MgIl41LjIuMiIKLSAgICBwb3N0Y3NzLXZhbHVlLXBhcnNlciAiXjMuMi4zIgot
Ci1hdXRvcHJlZml4ZXJANi40LjE6Ci0gIHZlcnNpb24gIjYuNC4xIgotICByZXNvbHZlZCAiaHR0
cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9hdXRvcHJlZml4ZXIvLS9hdXRvcHJlZml4ZXItNi40
LjEudGd6I2MxYmE4NDYxNzU5ZmFmNWZiNzczN2RiZGJlNWVhNDZhNzhjNjhhNmYiCi0gIGRlcGVu
ZGVuY2llczoKLSAgICBicm93c2Vyc2xpc3QgIn4xLjMuNiIKLSAgICBjYW5pdXNlLWRiICJeMS4w
LjMwMDAwNTI3IgotICAgIG5vcm1hbGl6ZS1yYW5nZSAiXjAuMS4yIgotICAgIG51bTJmcmFjdGlv
biAiXjEuMi4yIgotICAgIHBvc3Rjc3MgIl41LjEuMiIKLSAgICBwb3N0Y3NzLXZhbHVlLXBhcnNl
ciAiXjMuMi4zIgotCi1hd3Mtc2lnbjJAfjAuNi4wOgotICB2ZXJzaW9uICIwLjYuMCIKLSAgcmVz
b2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYXdzLXNpZ24yLy0vYXdzLXNpZ24y
LTAuNi4wLnRneiMxNDM0MmRkMzhkYmNjOTRkMGU1Yjg3ZDc2M2NkNjM2MTJjMGU3OTRmIgotCi1h
d3M0QF4xLjIuMToKLSAgdmVyc2lvbiAiMS40LjEiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lz
dHJ5Lnlhcm5wa2cuY29tL2F3czQvLS9hd3M0LTEuNC4xLnRneiNmZGU3ZDUyOTI0NjZkMjMwZTVl
ZTBmNGUwMzhkOWRmYWFiMDhmYzYxIgotCi1iYWJlbC1jb2RlLWZyYW1lQF42LjExLjAsIGJhYmVs
LWNvZGUtZnJhbWVAXjYuMTYuMCwgYmFiZWwtY29kZS1mcmFtZUBeNi44LjA6Ci0gIHZlcnNpb24g
IjYuMTYuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYmFiZWwt
Y29kZS1mcmFtZS8tL2JhYmVsLWNvZGUtZnJhbWUtNi4xNi4wLnRneiNmOTBlNjBkYTA4NjI5MDlk
M2NlMDk4NzMzYjVkMzk4N2M5N2NiOGRlIgotICBkZXBlbmRlbmNpZXM6Ci0gICAgY2hhbGsgIl4x
LjEuMCIKLSAgICBlc3V0aWxzICJeMi4wLjIiCi0gICAganMtdG9rZW5zICJeMi4wLjAiCi0KLWJh
YmVsLWNvcmVAXjYuMC4wLCBiYWJlbC1jb3JlQF42LjExLjQsIGJhYmVsLWNvcmVAXjYuMTQuMCwg
YmFiZWwtY29yZUBeNi4xNi4wOgotICB2ZXJzaW9uICI2LjE3LjAiCi0gIHJlc29sdmVkICJodHRw
czovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2JhYmVsLWNvcmUvLS9iYWJlbC1jb3JlLTYuMTcuMC50
Z3ojNmM0NTc2NDQ3ZGY0NzllMjQxZTU4YzgwN2U0YmM3ZGE0ZGI3ZjQyNSIKLSAgZGVwZW5kZW5j
aWVzOgotICAgIGJhYmVsLWNvZGUtZnJhbWUgIl42LjE2LjAiCi0gICAgYmFiZWwtZ2VuZXJhdG9y
ICJeNi4xNy4wIgotICAgIGJhYmVsLWhlbHBlcnMgIl42LjE2LjAiCi0gICAgYmFiZWwtbWVzc2Fn
ZXMgIl42LjguMCIKLSAgICBiYWJlbC1yZWdpc3RlciAiXjYuMTYuMCIKLSAgICBiYWJlbC1ydW50
aW1lICJeNi45LjEiCi0gICAgYmFiZWwtdGVtcGxhdGUgIl42LjE2LjAiCi0gICAgYmFiZWwtdHJh
dmVyc2UgIl42LjE2LjAiCi0gICAgYmFiZWwtdHlwZXMgIl42LjE2LjAiCi0gICAgYmFieWxvbiAi
XjYuMTEuMCIKLSAgICBjb252ZXJ0LXNvdXJjZS1tYXAgIl4xLjEuMCIKLSAgICBkZWJ1ZyAiXjIu
MS4xIgotICAgIGpzb241ICJeMC40LjAiCi0gICAgbG9kYXNoICJeNC4yLjAiCi0gICAgbWluaW1h
dGNoICJeMy4wLjIiCi0gICAgcGF0aC1leGlzdHMgIl4xLjAuMCIKLSAgICBwYXRoLWlzLWFic29s
dXRlICJeMS4wLjAiCi0gICAgcHJpdmF0ZSAiXjAuMS42IgotICAgIHNoZWJhbmctcmVnZXggIl4x
LjAuMCIKLSAgICBzbGFzaCAiXjEuMC4wIgotICAgIHNvdXJjZS1tYXAgIl4wLjUuMCIKLQotYmFi
ZWwtY29yZUA2LjE0LjA6Ci0gIHZlcnNpb24gIjYuMTQuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8v
cmVnaXN0cnkueWFybnBrZy5jb20vYmFiZWwtY29yZS8tL2JhYmVsLWNvcmUtNi4xNC4wLnRneiNj
OWUxM2VkNGUyZjk3MzI5MjE1NDk2ZmQ5ZmI0OGYyYjNiY2I5YjQyIgotICBkZXBlbmRlbmNpZXM6
Ci0gICAgYmFiZWwtY29kZS1mcmFtZSAiXjYuOC4wIgotICAgIGJhYmVsLWdlbmVyYXRvciAiXjYu
MTQuMCIKLSAgICBiYWJlbC1oZWxwZXJzICJeNi44LjAiCi0gICAgYmFiZWwtbWVzc2FnZXMgIl42
LjguMCIKLSAgICBiYWJlbC1yZWdpc3RlciAiXjYuMTQuMCIKLSAgICBiYWJlbC1ydW50aW1lICJe
Ni45LjEiCi0gICAgYmFiZWwtdGVtcGxhdGUgIl42LjE0LjAiCi0gICAgYmFiZWwtdHJhdmVyc2Ug
Il42LjE0LjAiCi0gICAgYmFiZWwtdHlwZXMgIl42LjE0LjAiCi0gICAgYmFieWxvbiAiXjYuOS4w
IgotICAgIGNvbnZlcnQtc291cmNlLW1hcCAiXjEuMS4wIgotICAgIGRlYnVnICJeMi4xLjEiCi0g
ICAganNvbjUgIl4wLjQuMCIKLSAgICBsb2Rhc2ggIl40LjIuMCIKLSAgICBtaW5pbWF0Y2ggIl4z
LjAuMiIKLSAgICBwYXRoLWV4aXN0cyAiXjEuMC4wIgotICAgIHBhdGgtaXMtYWJzb2x1dGUgIl4x
LjAuMCIKLSAgICBwcml2YXRlICJeMC4xLjYiCi0gICAgc2hlYmFuZy1yZWdleCAiXjEuMC4wIgot
ICAgIHNsYXNoICJeMS4wLjAiCi0gICAgc291cmNlLW1hcCAiXjAuNS4wIgotCi1iYWJlbC1lc2xp
bnRANi4xLjI6Ci0gIHZlcnNpb24gIjYuMS4yIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3Ry
eS55YXJucGtnLmNvbS9iYWJlbC1lc2xpbnQvLS9iYWJlbC1lc2xpbnQtNi4xLjIudGd6IzUyOTM0
MTlmZTM2NzJkNjY1OThkMzI3ZGE5Njk0NTY3YmE2YTVmMmYiCi0gIGRlcGVuZGVuY2llczoKLSAg
ICBiYWJlbC10cmF2ZXJzZSAiXjYuMC4yMCIKLSAgICBiYWJlbC10eXBlcyAiXjYuMC4xOSIKLSAg
ICBiYWJ5bG9uICJeNi4wLjE4IgotICAgIGxvZGFzaC5hc3NpZ24gIl40LjAuMCIKLSAgICBsb2Rh
c2gucGlja2J5ICJeNC4wLjAiCi0KLWJhYmVsLWdlbmVyYXRvckBeNi4xMS4zLCBiYWJlbC1nZW5l
cmF0b3JAXjYuMTQuMCwgYmFiZWwtZ2VuZXJhdG9yQF42LjE3LjA6Ci0gIHZlcnNpb24gIjYuMTcu
MCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYmFiZWwtZ2VuZXJh
dG9yLy0vYmFiZWwtZ2VuZXJhdG9yLTYuMTcuMC50Z3ojYjg5NGUzODA4YmVlZjc4MDBmMjU1MDYz
NWJmZTAyNGI2MjI2Y2YzMyIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGJhYmVsLW1lc3NhZ2VzICJe
Ni44LjAiCi0gICAgYmFiZWwtcnVudGltZSAiXjYuOS4wIgotICAgIGJhYmVsLXR5cGVzICJeNi4x
Ni4wIgotICAgIGRldGVjdC1pbmRlbnQgIl4zLjAuMSIKLSAgICBqc2VzYyAiXjEuMy4wIgotICAg
IGxvZGFzaCAiXjQuMi4wIgotICAgIHNvdXJjZS1tYXAgIl4wLjUuMCIKLQotYmFiZWwtaGVscGVy
LWJ1aWxkZXItYmluYXJ5LWFzc2lnbm1lbnQtb3BlcmF0b3ItdmlzaXRvckBeNi44LjA6Ci0gIHZl
cnNpb24gIjYuMTUuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20v
YmFiZWwtaGVscGVyLWJ1aWxkZXItYmluYXJ5LWFzc2lnbm1lbnQtb3BlcmF0b3ItdmlzaXRvci8t
L2JhYmVsLWhlbHBlci1idWlsZGVyLWJpbmFyeS1hc3NpZ25tZW50LW9wZXJhdG9yLXZpc2l0b3It
Ni4xNS4wLnRneiMzOWU5ZWUxNDNmNzk3YjY0MjI2MmU0NjQ2YzY4MWMzMjA4OWVmMWFiIgotICBk
ZXBlbmRlbmNpZXM6Ci0gICAgYmFiZWwtaGVscGVyLWV4cGxvZGUtYXNzaWduYWJsZS1leHByZXNz
aW9uICJeNi44LjAiCi0gICAgYmFiZWwtcnVudGltZSAiXjYuMC4wIgotICAgIGJhYmVsLXR5cGVz
ICJeNi4xNS4wIgotCi1iYWJlbC1oZWxwZXItYnVpbGRlci1yZWFjdC1qc3hAXjYuOC4wOgotICB2
ZXJzaW9uICI2LjkuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20v
YmFiZWwtaGVscGVyLWJ1aWxkZXItcmVhY3QtanN4Ly0vYmFiZWwtaGVscGVyLWJ1aWxkZXItcmVh
Y3QtanN4LTYuOS4wLnRneiNhNjMzOTc4ZDY2OWM0YzlkY2FkNzE2Y2M1NzdlZTNlMGJiOGFlNzIz
IgotICBkZXBlbmRlbmNpZXM6Ci0gICAgYmFiZWwtcnVudGltZSAiXjYuOS4wIgotICAgIGJhYmVs
LXR5cGVzICJeNi45LjAiCi0gICAgZXN1dGlscyAiXjIuMC4wIgotICAgIGxvZGFzaCAiXjQuMi4w
IgotCi1iYWJlbC1oZWxwZXItY2FsbC1kZWxlZ2F0ZUBeNi44LjA6Ci0gIHZlcnNpb24gIjYuOC4w
IgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9iYWJlbC1oZWxwZXIt
Y2FsbC1kZWxlZ2F0ZS8tL2JhYmVsLWhlbHBlci1jYWxsLWRlbGVnYXRlLTYuOC4wLnRneiM5ZDI4
M2U3NDg2Nzc5YjZiMDQ4MTg2NGExMWIzNzFlYTVjMDFmYTY0IgotICBkZXBlbmRlbmNpZXM6Ci0g
ICAgYmFiZWwtaGVscGVyLWhvaXN0LXZhcmlhYmxlcyAiXjYuOC4wIgotICAgIGJhYmVsLXJ1bnRp
bWUgIl42LjAuMCIKLSAgICBiYWJlbC10cmF2ZXJzZSAiXjYuOC4wIgotICAgIGJhYmVsLXR5cGVz
ICJeNi44LjAiCi0KLWJhYmVsLWhlbHBlci1kZWZpbmUtbWFwQF42LjguMCwgYmFiZWwtaGVscGVy
LWRlZmluZS1tYXBAXjYuOS4wOgotICB2ZXJzaW9uICI2LjkuMCIKLSAgcmVzb2x2ZWQgImh0dHBz
Oi8vcmVnaXN0cnkueWFybnBrZy5jb20vYmFiZWwtaGVscGVyLWRlZmluZS1tYXAvLS9iYWJlbC1o
ZWxwZXItZGVmaW5lLW1hcC02LjkuMC50Z3ojNjYyOWY5YjJhN2U1OGUxOGU4Mzc5YTU3ZDFlNmZi
YjI5Njk5MDJmYiIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGJhYmVsLWhlbHBlci1mdW5jdGlvbi1u
YW1lICJeNi44LjAiCi0gICAgYmFiZWwtcnVudGltZSAiXjYuOS4wIgotICAgIGJhYmVsLXR5cGVz
ICJeNi45LjAiCi0gICAgbG9kYXNoICJeNC4yLjAiCi0KLWJhYmVsLWhlbHBlci1leHBsb2RlLWFz
c2lnbmFibGUtZXhwcmVzc2lvbkBeNi44LjA6Ci0gIHZlcnNpb24gIjYuOC4wIgotICByZXNvbHZl
ZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9iYWJlbC1oZWxwZXItZXhwbG9kZS1hc3Np
Z25hYmxlLWV4cHJlc3Npb24vLS9iYWJlbC1oZWxwZXItZXhwbG9kZS1hc3NpZ25hYmxlLWV4cHJl
c3Npb24tNi44LjAudGd6IzliMzUyNWUwNWI3NjFjM2I4ODkxOWQ3MzBhMjhiYWQxOTY3ZTY1NTYi
Ci0gIGRlcGVuZGVuY2llczoKLSAgICBiYWJlbC1ydW50aW1lICJeNi4wLjAiCi0gICAgYmFiZWwt
dHJhdmVyc2UgIl42LjguMCIKLSAgICBiYWJlbC10eXBlcyAiXjYuOC4wIgotCi1iYWJlbC1oZWxw
ZXItZnVuY3Rpb24tbmFtZUBeNi44LjA6Ci0gIHZlcnNpb24gIjYuOC4wIgotICByZXNvbHZlZCAi
aHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9iYWJlbC1oZWxwZXItZnVuY3Rpb24tbmFtZS8t
L2JhYmVsLWhlbHBlci1mdW5jdGlvbi1uYW1lLTYuOC4wLnRneiNhMDMzNmJhMTQ1MjZhMDc1Y2Rm
NTAyZmM1MmQzZmU4NGIxMmY3YTM0IgotICBkZXBlbmRlbmNpZXM6Ci0gICAgYmFiZWwtaGVscGVy
LWdldC1mdW5jdGlvbi1hcml0eSAiXjYuOC4wIgotICAgIGJhYmVsLXJ1bnRpbWUgIl42LjAuMCIK
LSAgICBiYWJlbC10ZW1wbGF0ZSAiXjYuOC4wIgotICAgIGJhYmVsLXRyYXZlcnNlICJeNi44LjAi
Ci0gICAgYmFiZWwtdHlwZXMgIl42LjguMCIKLQotYmFiZWwtaGVscGVyLWdldC1mdW5jdGlvbi1h
cml0eUBeNi44LjA6Ci0gIHZlcnNpb24gIjYuOC4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdp
c3RyeS55YXJucGtnLmNvbS9iYWJlbC1oZWxwZXItZ2V0LWZ1bmN0aW9uLWFyaXR5Ly0vYmFiZWwt
aGVscGVyLWdldC1mdW5jdGlvbi1hcml0eS02LjguMC50Z3ojODgyNzZjMjRiZDI1MWNkZjZmNjFi
NmY4OWY3NDVmNDg2Y2VkOTJhZiIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGJhYmVsLXJ1bnRpbWUg
Il42LjAuMCIKLSAgICBiYWJlbC10eXBlcyAiXjYuOC4wIgotCi1iYWJlbC1oZWxwZXItaG9pc3Qt
dmFyaWFibGVzQF42LjguMDoKLSAgdmVyc2lvbiAiNi44LjAiCi0gIHJlc29sdmVkICJodHRwczov
L3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2JhYmVsLWhlbHBlci1ob2lzdC12YXJpYWJsZXMvLS9iYWJl
bC1oZWxwZXItaG9pc3QtdmFyaWFibGVzLTYuOC4wLnRneiM4YjA3NjZkYzAyNmVhOWVhNDIzYmMy
YjM0ZTY2NWE0ZGE3MzczYWFmIgotICBkZXBlbmRlbmNpZXM6Ci0gICAgYmFiZWwtcnVudGltZSAi
XjYuMC4wIgotICAgIGJhYmVsLXR5cGVzICJeNi44LjAiCi0KLWJhYmVsLWhlbHBlci1vcHRpbWlz
ZS1jYWxsLWV4cHJlc3Npb25AXjYuOC4wOgotICB2ZXJzaW9uICI2LjguMCIKLSAgcmVzb2x2ZWQg
Imh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYmFiZWwtaGVscGVyLW9wdGltaXNlLWNhbGwt
ZXhwcmVzc2lvbi8tL2JhYmVsLWhlbHBlci1vcHRpbWlzZS1jYWxsLWV4cHJlc3Npb24tNi44LjAu
dGd6IzQxNzU2MjhlOWM4OWZjMzYxNzQ5MDRmMjcwNzBmMjlkMzg1NjdmMDYiCi0gIGRlcGVuZGVu
Y2llczoKLSAgICBiYWJlbC1ydW50aW1lICJeNi4wLjAiCi0gICAgYmFiZWwtdHlwZXMgIl42Ljgu
MCIKLQotYmFiZWwtaGVscGVyLXJlZ2V4QF42LjguMDoKLSAgdmVyc2lvbiAiNi45LjAiCi0gIHJl
c29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2JhYmVsLWhlbHBlci1yZWdleC8t
L2JhYmVsLWhlbHBlci1yZWdleC02LjkuMC50Z3ojYzc0MjY1ZmRlMTgwZmY5YTE2NzM1ZmVlMDVl
NjNjYWRiOWUwYjA1NyIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGJhYmVsLXJ1bnRpbWUgIl42Ljku
MCIKLSAgICBiYWJlbC10eXBlcyAiXjYuOS4wIgotICAgIGxvZGFzaCAiXjQuMi4wIgotCi1iYWJl
bC1oZWxwZXItcmVtYXAtYXN5bmMtdG8tZ2VuZXJhdG9yQF42LjE2LjA6Ci0gIHZlcnNpb24gIjYu
MTYuMiIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYmFiZWwtaGVs
cGVyLXJlbWFwLWFzeW5jLXRvLWdlbmVyYXRvci8tL2JhYmVsLWhlbHBlci1yZW1hcC1hc3luYy10
by1nZW5lcmF0b3ItNi4xNi4yLnRneiMyNDMxNWJkZTgzMjZjNjAwMjJkYzA1M2NjZTg0Y2ZlMzhk
NzI0YjgyIgotICBkZXBlbmRlbmNpZXM6Ci0gICAgYmFiZWwtaGVscGVyLWZ1bmN0aW9uLW5hbWUg
Il42LjguMCIKLSAgICBiYWJlbC1ydW50aW1lICJeNi4wLjAiCi0gICAgYmFiZWwtdGVtcGxhdGUg
Il42LjE2LjAiCi0gICAgYmFiZWwtdHJhdmVyc2UgIl42LjE2LjAiCi0gICAgYmFiZWwtdHlwZXMg
Il42LjE2LjAiCi0KLWJhYmVsLWhlbHBlci1yZXBsYWNlLXN1cGVyc0BeNi4xNC4wLCBiYWJlbC1o
ZWxwZXItcmVwbGFjZS1zdXBlcnNAXjYuOC4wOgotICB2ZXJzaW9uICI2LjE2LjAiCi0gIHJlc29s
dmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2JhYmVsLWhlbHBlci1yZXBsYWNlLXN1
cGVycy8tL2JhYmVsLWhlbHBlci1yZXBsYWNlLXN1cGVycy02LjE2LjAudGd6IzIxYzk3NjIzY2M3
ZTQzMDg1NTc1M2YyNTI3NDAxMjI2MjZhMzllNmIiCi0gIGRlcGVuZGVuY2llczoKLSAgICBiYWJl
bC1oZWxwZXItb3B0aW1pc2UtY2FsbC1leHByZXNzaW9uICJeNi44LjAiCi0gICAgYmFiZWwtbWVz
c2FnZXMgIl42LjguMCIKLSAgICBiYWJlbC1ydW50aW1lICJeNi4wLjAiCi0gICAgYmFiZWwtdGVt
cGxhdGUgIl42LjE2LjAiCi0gICAgYmFiZWwtdHJhdmVyc2UgIl42LjE2LjAiCi0gICAgYmFiZWwt
dHlwZXMgIl42LjE2LjAiCi0KLWJhYmVsLWhlbHBlcnNAXjYuMTYuMCwgYmFiZWwtaGVscGVyc0Be
Ni44LjA6Ci0gIHZlcnNpb24gIjYuMTYuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnku
eWFybnBrZy5jb20vYmFiZWwtaGVscGVycy8tL2JhYmVsLWhlbHBlcnMtNi4xNi4wLnRneiMxMDk1
ZWMxMGQ5OTI3OTQ2MDU1M2U2N2ViM2VlZTk5NzNkMzg2N2UzIgotICBkZXBlbmRlbmNpZXM6Ci0g
ICAgYmFiZWwtcnVudGltZSAiXjYuMC4wIgotICAgIGJhYmVsLXRlbXBsYXRlICJeNi4xNi4wIgot
Ci1iYWJlbC1qZXN0QF4xNS4wLjAsIGJhYmVsLWplc3RAMTUuMC4wOgotICB2ZXJzaW9uICIxNS4w
LjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2JhYmVsLWplc3Qv
LS9iYWJlbC1qZXN0LTE1LjAuMC50Z3ojNmE5ZTJlMzk5OWYyNDEzODNkYjlhYjFlMmVmNjcwNDQw
MWQ3NDI0MiIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGJhYmVsLWNvcmUgIl42LjAuMCIKLSAgICBi
YWJlbC1wbHVnaW4taXN0YW5idWwgIl4yLjAuMCIKLSAgICBiYWJlbC1wcmVzZXQtamVzdCAiXjE1
LjAuMCIKLQotYmFiZWwtbG9hZGVyQDYuMi41OgotICB2ZXJzaW9uICI2LjIuNSIKLSAgcmVzb2x2
ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYmFiZWwtbG9hZGVyLy0vYmFiZWwtbG9h
ZGVyLTYuMi41LnRneiM1NzZkNTQ4NTIwNjg5YTVlNmI3MGM2NWI4NWQ3NmFmMWZmZWRkMDA1Igot
ICBkZXBlbmRlbmNpZXM6Ci0gICAgbG9hZGVyLXV0aWxzICJeMC4yLjExIgotICAgIG1rZGlycCAi
XjAuNS4xIgotICAgIG9iamVjdC1hc3NpZ24gIl40LjAuMSIKLQotYmFiZWwtbWVzc2FnZXNAXjYu
OC4wOgotICB2ZXJzaW9uICI2LjguMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFy
bnBrZy5jb20vYmFiZWwtbWVzc2FnZXMvLS9iYWJlbC1tZXNzYWdlcy02LjguMC50Z3ojYmY1MDQ3
MzZjYTk2N2U2ZDY1ZWYwYWRiNWEyYTVmOTQ3YzhlMGViOSIKLSAgZGVwZW5kZW5jaWVzOgotICAg
IGJhYmVsLXJ1bnRpbWUgIl42LjAuMCIKLQotYmFiZWwtcGx1Z2luLWNoZWNrLWVzMjAxNS1jb25z
dGFudHNAXjYuMy4xMzoKLSAgdmVyc2lvbiAiNi44LjAiCi0gIHJlc29sdmVkICJodHRwczovL3Jl
Z2lzdHJ5Lnlhcm5wa2cuY29tL2JhYmVsLXBsdWdpbi1jaGVjay1lczIwMTUtY29uc3RhbnRzLy0v
YmFiZWwtcGx1Z2luLWNoZWNrLWVzMjAxNS1jb25zdGFudHMtNi44LjAudGd6I2RiZjAyNGMzMmVk
MzdiZmRhOGRlZTFlNzZkYTAyMzg2YThkMjZmZTciCi0gIGRlcGVuZGVuY2llczoKLSAgICBiYWJl
bC1ydW50aW1lICJeNi4wLjAiCi0KLWJhYmVsLXBsdWdpbi1pc3RhbmJ1bEBeMi4wLjA6Ci0gIHZl
cnNpb24gIjIuMC4yIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9i
YWJlbC1wbHVnaW4taXN0YW5idWwvLS9iYWJlbC1wbHVnaW4taXN0YW5idWwtMi4wLjIudGd6IzY2
Yzk1N2ZkM2IyYWNlNjkyMTU5NTVjMGVhNTkyMDk4MDk1OGNiZjMiCi0gIGRlcGVuZGVuY2llczoK
LSAgICBmaW5kLXVwICJeMS4xLjIiCi0gICAgaXN0YW5idWwtbGliLWluc3RydW1lbnQgIl4xLjEu
MSIKLSAgICBsb2Rhc2guYXNzaWduICJeNC4yLjAiCi0gICAgdGVzdC1leGNsdWRlICJeMi4xLjEi
Ci0KLWJhYmVsLXBsdWdpbi1qZXN0LWhvaXN0QF4xNS4wLjA6Ci0gIHZlcnNpb24gIjE1LjAuMCIK
LSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYmFiZWwtcGx1Z2luLWpl
c3QtaG9pc3QvLS9iYWJlbC1wbHVnaW4tamVzdC1ob2lzdC0xNS4wLjAudGd6IzdiMmZkYmQwY2Qx
MmZjMzZhODRkM2Y1ZmYwMDFlYzUwNDI2MmJiNTkiCi0KLWJhYmVsLXBsdWdpbi1zeW50YXgtYXN5
bmMtZnVuY3Rpb25zQF42LjguMDoKLSAgdmVyc2lvbiAiNi4xMy4wIgotICByZXNvbHZlZCAiaHR0
cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9iYWJlbC1wbHVnaW4tc3ludGF4LWFzeW5jLWZ1bmN0
aW9ucy8tL2JhYmVsLXBsdWdpbi1zeW50YXgtYXN5bmMtZnVuY3Rpb25zLTYuMTMuMC50Z3ojY2Fk
OWNhZDExOTFiNWFkNjM0YmYzMGFlMDg3MjM5MWUwNjQ3YmU5NSIKLQotYmFiZWwtcGx1Z2luLXN5
bnRheC1jbGFzcy1wcm9wZXJ0aWVzQF42LjguMDoKLSAgdmVyc2lvbiAiNi4xMy4wIgotICByZXNv
bHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9iYWJlbC1wbHVnaW4tc3ludGF4LWNs
YXNzLXByb3BlcnRpZXMvLS9iYWJlbC1wbHVnaW4tc3ludGF4LWNsYXNzLXByb3BlcnRpZXMtNi4x
My4wLnRneiNkN2ViMjNiNzlhMzE3Zjg1NDM5NjJjNTA1YjgyN2M3ZDZjYWMyN2RlIgotCi1iYWJl
bC1wbHVnaW4tc3ludGF4LWV4cG9uZW50aWF0aW9uLW9wZXJhdG9yQF42LjguMDoKLSAgdmVyc2lv
biAiNi4xMy4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9iYWJl
bC1wbHVnaW4tc3ludGF4LWV4cG9uZW50aWF0aW9uLW9wZXJhdG9yLy0vYmFiZWwtcGx1Z2luLXN5
bnRheC1leHBvbmVudGlhdGlvbi1vcGVyYXRvci02LjEzLjAudGd6IzllZTdlODMzNzI5MGRhOTUy
ODgyMDFhNmE1N2Y0MTcwMzE3ODMwZGUiCi0KLWJhYmVsLXBsdWdpbi1zeW50YXgtZmxvd0BeNi4z
LjEzLCBiYWJlbC1wbHVnaW4tc3ludGF4LWZsb3dAXjYuOC4wOgotICB2ZXJzaW9uICI2LjEzLjAi
Ci0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2JhYmVsLXBsdWdpbi1z
eW50YXgtZmxvdy8tL2JhYmVsLXBsdWdpbi1zeW50YXgtZmxvdy02LjEzLjAudGd6IzlhZjBjZDM5
NjA4N2JmNzY3NzA1M2UxYWZhNTJmMjA2YzA0MTZmMTciCi0KLWJhYmVsLXBsdWdpbi1zeW50YXgt
anN4QF42LjMuMTMsIGJhYmVsLXBsdWdpbi1zeW50YXgtanN4QF42LjguMDoKLSAgdmVyc2lvbiAi
Ni4xMy4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9iYWJlbC1w
bHVnaW4tc3ludGF4LWpzeC8tL2JhYmVsLXBsdWdpbi1zeW50YXgtanN4LTYuMTMuMC50Z3ojZTc0
MWZmMzk5MmM1NzgzMTBiZTQ1YzU3MWJjZDkwYTJmOWM1NTg2ZSIKLQotYmFiZWwtcGx1Z2luLXN5
bnRheC1vYmplY3QtcmVzdC1zcHJlYWRAXjYuOC4wOgotICB2ZXJzaW9uICI2LjEzLjAiCi0gIHJl
c29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2JhYmVsLXBsdWdpbi1zeW50YXgt
b2JqZWN0LXJlc3Qtc3ByZWFkLy0vYmFiZWwtcGx1Z2luLXN5bnRheC1vYmplY3QtcmVzdC1zcHJl
YWQtNi4xMy4wLnRneiNmZDY1MzZmMmJjZTEzODM2ZmZhM2E1NDU4YzQ5MDNhNTk3YmIzYmY1Igot
Ci1iYWJlbC1wbHVnaW4tc3ludGF4LXRyYWlsaW5nLWZ1bmN0aW9uLWNvbW1hc0BeNi44LjA6Ci0g
IHZlcnNpb24gIjYuMTMuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5j
b20vYmFiZWwtcGx1Z2luLXN5bnRheC10cmFpbGluZy1mdW5jdGlvbi1jb21tYXMvLS9iYWJlbC1w
bHVnaW4tc3ludGF4LXRyYWlsaW5nLWZ1bmN0aW9uLWNvbW1hcy02LjEzLjAudGd6IzJiODRiN2Q1
M2RkNzQ0Zjk0ZmYxZmFkNzY2OTQwNjI3NGIyM2Y1NDEiCi0KLWJhYmVsLXBsdWdpbi10cmFuc2Zv
cm0tYXN5bmMtdG8tZ2VuZXJhdG9yQF42LjE2LjA6Ci0gIHZlcnNpb24gIjYuMTYuMCIKLSAgcmVz
b2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYmFiZWwtcGx1Z2luLXRyYW5zZm9y
bS1hc3luYy10by1nZW5lcmF0b3IvLS9iYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWFzeW5jLXRvLWdl
bmVyYXRvci02LjE2LjAudGd6IzE5ZWMzNmNiMTQ4NmI1OWY5ZjQ2OGFkZmE0MmNlMTM5MDhjYTI5
OTkiCi0gIGRlcGVuZGVuY2llczoKLSAgICBiYWJlbC1oZWxwZXItcmVtYXAtYXN5bmMtdG8tZ2Vu
ZXJhdG9yICJeNi4xNi4wIgotICAgIGJhYmVsLXBsdWdpbi1zeW50YXgtYXN5bmMtZnVuY3Rpb25z
ICJeNi44LjAiCi0gICAgYmFiZWwtcnVudGltZSAiXjYuMC4wIgotCi1iYWJlbC1wbHVnaW4tdHJh
bnNmb3JtLWNsYXNzLXByb3BlcnRpZXNANi4xMS41OgotICB2ZXJzaW9uICI2LjExLjUiCi0gIHJl
c29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2JhYmVsLXBsdWdpbi10cmFuc2Zv
cm0tY2xhc3MtcHJvcGVydGllcy8tL2JhYmVsLXBsdWdpbi10cmFuc2Zvcm0tY2xhc3MtcHJvcGVy
dGllcy02LjExLjUudGd6IzQyOWM3YTRlN2Q4YWM1MDA0NDhlYjE0ZWM1MDI2MDRiYzU2OGM5MWMi
Ci0gIGRlcGVuZGVuY2llczoKLSAgICBiYWJlbC1oZWxwZXItZnVuY3Rpb24tbmFtZSAiXjYuOC4w
IgotICAgIGJhYmVsLXBsdWdpbi1zeW50YXgtY2xhc3MtcHJvcGVydGllcyAiXjYuOC4wIgotICAg
IGJhYmVsLXJ1bnRpbWUgIl42LjkuMSIKLQotYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUt
YXJyb3ctZnVuY3Rpb25zQF42LjMuMTM6Ci0gIHZlcnNpb24gIjYuOC4wIgotICByZXNvbHZlZCAi
aHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9iYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAx
NS1hcnJvdy1mdW5jdGlvbnMvLS9iYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAxNS1hcnJvdy1m
dW5jdGlvbnMtNi44LjAudGd6IzViNjNhZmMzMTgxYmRjOWE4YzRkNDgxYjVhNGYzZjdkN2ZlZjNk
OWQiCi0gIGRlcGVuZGVuY2llczoKLSAgICBiYWJlbC1ydW50aW1lICJeNi4wLjAiCi0KLWJhYmVs
LXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LWJsb2NrLXNjb3BlZC1mdW5jdGlvbnNAXjYuMy4xMzoK
LSAgdmVyc2lvbiAiNi44LjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cu
Y29tL2JhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LWJsb2NrLXNjb3BlZC1mdW5jdGlvbnMv
LS9iYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAxNS1ibG9jay1zY29wZWQtZnVuY3Rpb25zLTYu
OC4wLnRneiNlZDk1ZDYyOWM0YjVhNzFhZTI5NjgyYjk5OGY3MGQ5ODMzZWIzNjZkIgotICBkZXBl
bmRlbmNpZXM6Ci0gICAgYmFiZWwtcnVudGltZSAiXjYuMC4wIgotCi1iYWJlbC1wbHVnaW4tdHJh
bnNmb3JtLWVzMjAxNS1ibG9jay1zY29waW5nQF42LjE0LjA6Ci0gIHZlcnNpb24gIjYuMTUuMCIK
LSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYmFiZWwtcGx1Z2luLXRy
YW5zZm9ybS1lczIwMTUtYmxvY2stc2NvcGluZy8tL2JhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMy
MDE1LWJsb2NrLXNjb3BpbmctNi4xNS4wLnRneiM1YjQ0M2NhMTQyYmU4ZDFkYjZhOGMyYWU0MmY1
MTk1OGI2NmI3MGY2IgotICBkZXBlbmRlbmNpZXM6Ci0gICAgYmFiZWwtcnVudGltZSAiXjYuOS4w
IgotICAgIGJhYmVsLXRlbXBsYXRlICJeNi4xNS4wIgotICAgIGJhYmVsLXRyYXZlcnNlICJeNi4x
NS4wIgotICAgIGJhYmVsLXR5cGVzICJeNi4xNS4wIgotICAgIGxvZGFzaCAiXjQuMi4wIgotCi1i
YWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAxNS1jbGFzc2VzQF42LjE0LjA6Ci0gIHZlcnNpb24g
IjYuMTQuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYmFiZWwt
cGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtY2xhc3Nlcy8tL2JhYmVsLXBsdWdpbi10cmFuc2Zvcm0t
ZXMyMDE1LWNsYXNzZXMtNi4xNC4wLnRneiM4N2Q1MTQ5ZWU5MWZiNDc1OTIyNDA5ZjlhZjViMmJh
NWQxZTM5Mjg3IgotICBkZXBlbmRlbmNpZXM6Ci0gICAgYmFiZWwtaGVscGVyLWRlZmluZS1tYXAg
Il42LjkuMCIKLSAgICBiYWJlbC1oZWxwZXItZnVuY3Rpb24tbmFtZSAiXjYuOC4wIgotICAgIGJh
YmVsLWhlbHBlci1vcHRpbWlzZS1jYWxsLWV4cHJlc3Npb24gIl42LjguMCIKLSAgICBiYWJlbC1o
ZWxwZXItcmVwbGFjZS1zdXBlcnMgIl42LjE0LjAiCi0gICAgYmFiZWwtbWVzc2FnZXMgIl42Ljgu
MCIKLSAgICBiYWJlbC1ydW50aW1lICJeNi45LjAiCi0gICAgYmFiZWwtdGVtcGxhdGUgIl42LjE0
LjAiCi0gICAgYmFiZWwtdHJhdmVyc2UgIl42LjE0LjAiCi0gICAgYmFiZWwtdHlwZXMgIl42LjE0
LjAiCi0KLWJhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LWNvbXB1dGVkLXByb3BlcnRpZXNA
XjYuMy4xMzoKLSAgdmVyc2lvbiAiNi44LjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5
Lnlhcm5wa2cuY29tL2JhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LWNvbXB1dGVkLXByb3Bl
cnRpZXMvLS9iYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAxNS1jb21wdXRlZC1wcm9wZXJ0aWVz
LTYuOC4wLnRneiNmNTEwMTBmZDYxYjNiZDdiNmI2MGE1ZmRmZDMwN2JiN2E1Mjc5ODcwIgotICBk
ZXBlbmRlbmNpZXM6Ci0gICAgYmFiZWwtaGVscGVyLWRlZmluZS1tYXAgIl42LjguMCIKLSAgICBi
YWJlbC1ydW50aW1lICJeNi4wLjAiCi0gICAgYmFiZWwtdGVtcGxhdGUgIl42LjguMCIKLQotYmFi
ZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtZGVzdHJ1Y3R1cmluZ0BeNi4xNi4wOgotICB2ZXJz
aW9uICI2LjE2LjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2Jh
YmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LWRlc3RydWN0dXJpbmcvLS9iYWJlbC1wbHVnaW4t
dHJhbnNmb3JtLWVzMjAxNS1kZXN0cnVjdHVyaW5nLTYuMTYuMC50Z3ojMDUwZmUwODY2ZjVkNTNi
MzYwNjJlZTEwY2RmNWJmZTY0ZjkyOTYyNyIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGJhYmVsLXJ1
bnRpbWUgIl42LjkuMCIKLQotYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtZHVwbGljYXRl
LWtleXNAXjYuNi4wOgotICB2ZXJzaW9uICI2LjguMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVn
aXN0cnkueWFybnBrZy5jb20vYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtZHVwbGljYXRl
LWtleXMvLS9iYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAxNS1kdXBsaWNhdGUta2V5cy02Ljgu
MC50Z3ojZmQ4ZjdmNzE3MWZjMTA4Y2MxYzcwYzMxNjRiOWYxNWE4MWMyNWY3ZCIKLSAgZGVwZW5k
ZW5jaWVzOgotICAgIGJhYmVsLXJ1bnRpbWUgIl42LjAuMCIKLSAgICBiYWJlbC10eXBlcyAiXjYu
OC4wIgotCi1iYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAxNS1mb3Itb2ZAXjYuNi4wLCBiYWJl
bC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAxNS1mb3Itb2ZAXjYuOC4wOgotICB2ZXJzaW9uICI2Ljgu
MCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYmFiZWwtcGx1Z2lu
LXRyYW5zZm9ybS1lczIwMTUtZm9yLW9mLy0vYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUt
Zm9yLW9mLTYuOC4wLnRneiM4MmVkYTEzOWJhNDI3MGRkYTEzNWMzZWMxYjFmMjgxM2ZhNjJmMjNj
IgotICBkZXBlbmRlbmNpZXM6Ci0gICAgYmFiZWwtcnVudGltZSAiXjYuMC4wIgotCi1iYWJlbC1w
bHVnaW4tdHJhbnNmb3JtLWVzMjAxNS1mdW5jdGlvbi1uYW1lQF42LjkuMDoKLSAgdmVyc2lvbiAi
Ni45LjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2JhYmVsLXBs
dWdpbi10cmFuc2Zvcm0tZXMyMDE1LWZ1bmN0aW9uLW5hbWUvLS9iYWJlbC1wbHVnaW4tdHJhbnNm
b3JtLWVzMjAxNS1mdW5jdGlvbi1uYW1lLTYuOS4wLnRneiM4YzEzNWIxN2RiZDA2NGU1YmJhNTZl
YzUxMWJhYWVlMmZjYTgyNzE5IgotICBkZXBlbmRlbmNpZXM6Ci0gICAgYmFiZWwtaGVscGVyLWZ1
bmN0aW9uLW5hbWUgIl42LjguMCIKLSAgICBiYWJlbC1ydW50aW1lICJeNi45LjAiCi0gICAgYmFi
ZWwtdHlwZXMgIl42LjkuMCIKLQotYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtbGl0ZXJh
bHNAXjYuMy4xMzoKLSAgdmVyc2lvbiAiNi44LjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lz
dHJ5Lnlhcm5wa2cuY29tL2JhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LWxpdGVyYWxzLy0v
YmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtbGl0ZXJhbHMtNi44LjAudGd6IzUwYWEyZTVj
Nzk1OGZjMmFiMjVkNzRlYzExN2UwY2M5OGYwNDY0NjgiCi0gIGRlcGVuZGVuY2llczoKLSAgICBi
YWJlbC1ydW50aW1lICJeNi4wLjAiCi0KLWJhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LW1v
ZHVsZXMtYW1kQF42LjguMDoKLSAgdmVyc2lvbiAiNi44LjAiCi0gIHJlc29sdmVkICJodHRwczov
L3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2JhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LW1vZHVs
ZXMtYW1kLy0vYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtbW9kdWxlcy1hbWQtNi44LjAu
dGd6IzI1ZDk1NGFhMGJmMDQwMzFmYzQ2ZDJhOGU2MjMwYmIxYWJiZGU0YTMiCi0gIGRlcGVuZGVu
Y2llczoKLSAgICBiYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAxNS1tb2R1bGVzLWNvbW1vbmpz
ICJeNi44LjAiCi0gICAgYmFiZWwtcnVudGltZSAiXjYuMC4wIgotICAgIGJhYmVsLXRlbXBsYXRl
ICJeNi44LjAiCi0KLWJhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LW1vZHVsZXMtY29tbW9u
anNAXjYuMTYuMCwgYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtbW9kdWxlcy1jb21tb25q
c0BeNi44LjA6Ci0gIHZlcnNpb24gIjYuMTYuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0
cnkueWFybnBrZy5jb20vYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtbW9kdWxlcy1jb21t
b25qcy8tL2JhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LW1vZHVsZXMtY29tbW9uanMtNi4x
Ni4wLnRneiMwYTM0YjQ0N2JjODhhZDFhNzA5ODhiNmQxOTljY2E2ZDBiOTZjODkyIgotICBkZXBl
bmRlbmNpZXM6Ci0gICAgYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1zdHJpY3QtbW9kZSAiXjYuOC4w
IgotICAgIGJhYmVsLXJ1bnRpbWUgIl42LjAuMCIKLSAgICBiYWJlbC10ZW1wbGF0ZSAiXjYuMTYu
MCIKLSAgICBiYWJlbC10eXBlcyAiXjYuMTYuMCIKLQotYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1l
czIwMTUtbW9kdWxlcy1zeXN0ZW1qc0BeNi4xNC4wOgotICB2ZXJzaW9uICI2LjE0LjAiCi0gIHJl
c29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2JhYmVsLXBsdWdpbi10cmFuc2Zv
cm0tZXMyMDE1LW1vZHVsZXMtc3lzdGVtanMvLS9iYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAx
NS1tb2R1bGVzLXN5c3RlbWpzLTYuMTQuMC50Z3ojYzUxOWI1YzczZTMyMzg4ZTY3OWM5YjFlZGY0
MWIyZmMyM2RjMzMwMyIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGJhYmVsLWhlbHBlci1ob2lzdC12
YXJpYWJsZXMgIl42LjguMCIKLSAgICBiYWJlbC1ydW50aW1lICJeNi4xMS42IgotICAgIGJhYmVs
LXRlbXBsYXRlICJeNi4xNC4wIgotCi1iYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAxNS1tb2R1
bGVzLXVtZEBeNi4xMi4wOgotICB2ZXJzaW9uICI2LjEyLjAiCi0gIHJlc29sdmVkICJodHRwczov
L3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2JhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LW1vZHVs
ZXMtdW1kLy0vYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtbW9kdWxlcy11bWQtNi4xMi4w
LnRneiM1ZDczNTU5ZWI0OTI2Njc3NWVkMjgxYzQwYmU4OGE0MjFiZDM3MWEzIgotICBkZXBlbmRl
bmNpZXM6Ci0gICAgYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtbW9kdWxlcy1hbWQgIl42
LjguMCIKLSAgICBiYWJlbC1ydW50aW1lICJeNi4wLjAiCi0gICAgYmFiZWwtdGVtcGxhdGUgIl42
LjguMCIKLQotYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtb2JqZWN0LXN1cGVyQF42LjMu
MTM6Ci0gIHZlcnNpb24gIjYuOC4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJu
cGtnLmNvbS9iYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAxNS1vYmplY3Qtc3VwZXIvLS9iYWJl
bC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAxNS1vYmplY3Qtc3VwZXItNi44LjAudGd6IzFiODU4NzQw
YTVhNDQwMDg4N2MyM2RjZmY2ZjRkNTZlZWE0YTI0YzUiCi0gIGRlcGVuZGVuY2llczoKLSAgICBi
YWJlbC1oZWxwZXItcmVwbGFjZS1zdXBlcnMgIl42LjguMCIKLSAgICBiYWJlbC1ydW50aW1lICJe
Ni4wLjAiCi0KLWJhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LXBhcmFtZXRlcnNAXjYuMTYu
MDoKLSAgdmVyc2lvbiAiNi4xNy4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJu
cGtnLmNvbS9iYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAxNS1wYXJhbWV0ZXJzLy0vYmFiZWwt
cGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtcGFyYW1ldGVycy02LjE3LjAudGd6I2UwNmQzMGNlZjg5
N2Y0NmFkYjQ3MzQ3MDdiYmUxMjhhMGQ0MjdkNTgiCi0gIGRlcGVuZGVuY2llczoKLSAgICBiYWJl
bC1oZWxwZXItY2FsbC1kZWxlZ2F0ZSAiXjYuOC4wIgotICAgIGJhYmVsLWhlbHBlci1nZXQtZnVu
Y3Rpb24tYXJpdHkgIl42LjguMCIKLSAgICBiYWJlbC1ydW50aW1lICJeNi45LjAiCi0gICAgYmFi
ZWwtdGVtcGxhdGUgIl42LjE2LjAiCi0gICAgYmFiZWwtdHJhdmVyc2UgIl42LjE2LjAiCi0gICAg
YmFiZWwtdHlwZXMgIl42LjE2LjAiCi0KLWJhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LXNo
b3J0aGFuZC1wcm9wZXJ0aWVzQF42LjMuMTM6Ci0gIHZlcnNpb24gIjYuOC4wIgotICByZXNvbHZl
ZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9iYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVz
MjAxNS1zaG9ydGhhbmQtcHJvcGVydGllcy8tL2JhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1
LXNob3J0aGFuZC1wcm9wZXJ0aWVzLTYuOC4wLnRneiNmMGE0YzVmZDQ3MTYzMGFjZjMzM2MyZDk5
YzNkNjc3YmYwOTUyMTQ5IgotICBkZXBlbmRlbmNpZXM6Ci0gICAgYmFiZWwtcnVudGltZSAiXjYu
MC4wIgotICAgIGJhYmVsLXR5cGVzICJeNi44LjAiCi0KLWJhYmVsLXBsdWdpbi10cmFuc2Zvcm0t
ZXMyMDE1LXNwcmVhZEBeNi4zLjEzOgotICB2ZXJzaW9uICI2LjguMCIKLSAgcmVzb2x2ZWQgImh0
dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUt
c3ByZWFkLy0vYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtc3ByZWFkLTYuOC4wLnRneiMw
MjE3ZjczN2UzYjgyMWZhNWE2NjlmMTg3YzZlZDU5MjA1ZjA1ZTljIgotICBkZXBlbmRlbmNpZXM6
Ci0gICAgYmFiZWwtcnVudGltZSAiXjYuMC4wIgotCi1iYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVz
MjAxNS1zdGlja3ktcmVnZXhAXjYuMy4xMzoKLSAgdmVyc2lvbiAiNi44LjAiCi0gIHJlc29sdmVk
ICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2JhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMy
MDE1LXN0aWNreS1yZWdleC8tL2JhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LXN0aWNreS1y
ZWdleC02LjguMC50Z3ojZTczZDMwMGE0NDBhMzVkNWM2NGY1YzJhMzQ0ZGMyMzZlM2RmNDdiZSIK
LSAgZGVwZW5kZW5jaWVzOgotICAgIGJhYmVsLWhlbHBlci1yZWdleCAiXjYuOC4wIgotICAgIGJh
YmVsLXJ1bnRpbWUgIl42LjAuMCIKLSAgICBiYWJlbC10eXBlcyAiXjYuOC4wIgotCi1iYWJlbC1w
bHVnaW4tdHJhbnNmb3JtLWVzMjAxNS10ZW1wbGF0ZS1saXRlcmFsc0BeNi42LjA6Ci0gIHZlcnNp
b24gIjYuOC4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9iYWJl
bC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAxNS10ZW1wbGF0ZS1saXRlcmFscy8tL2JhYmVsLXBsdWdp
bi10cmFuc2Zvcm0tZXMyMDE1LXRlbXBsYXRlLWxpdGVyYWxzLTYuOC4wLnRneiM4NmViODc2ZDBh
MmM2MzVkYTRlYzA0OGI0ZjdkZTlkZmM4OTdlNjZiIgotICBkZXBlbmRlbmNpZXM6Ci0gICAgYmFi
ZWwtcnVudGltZSAiXjYuMC4wIgotCi1iYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAxNS10eXBl
b2Ytc3ltYm9sQF42LjYuMDoKLSAgdmVyc2lvbiAiNi44LjAiCi0gIHJlc29sdmVkICJodHRwczov
L3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2JhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LXR5cGVv
Zi1zeW1ib2wvLS9iYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAxNS10eXBlb2Ytc3ltYm9sLTYu
OC4wLnRneiM4NGMyOWViMTIxOTM3MjQ4MDk1NWEwMjBmZWY3YTY1YzQ0ZjMwNTMzIgotICBkZXBl
bmRlbmNpZXM6Ci0gICAgYmFiZWwtcnVudGltZSAiXjYuMC4wIgotCi1iYWJlbC1wbHVnaW4tdHJh
bnNmb3JtLWVzMjAxNS11bmljb2RlLXJlZ2V4QF42LjMuMTM6Ci0gIHZlcnNpb24gIjYuMTEuMCIK
LSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYmFiZWwtcGx1Z2luLXRy
YW5zZm9ybS1lczIwMTUtdW5pY29kZS1yZWdleC8tL2JhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMy
MDE1LXVuaWNvZGUtcmVnZXgtNi4xMS4wLnRneiM2Mjk4Y2VhYmFhZDg4ZDUwYTNmNGYzOTJkOGRl
OTk3MjYwZjZlZjJjIgotICBkZXBlbmRlbmNpZXM6Ci0gICAgYmFiZWwtaGVscGVyLXJlZ2V4ICJe
Ni44LjAiCi0gICAgYmFiZWwtcnVudGltZSAiXjYuMC4wIgotICAgIHJlZ2V4cHUtY29yZSAiXjIu
MC4wIgotCi1iYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWV4cG9uZW50aWF0aW9uLW9wZXJhdG9yQF42
LjMuMTM6Ci0gIHZlcnNpb24gIjYuOC4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55
YXJucGtnLmNvbS9iYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWV4cG9uZW50aWF0aW9uLW9wZXJhdG9y
Ly0vYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1leHBvbmVudGlhdGlvbi1vcGVyYXRvci02LjguMC50
Z3ojZGIyNTc0MmU5MzM5ZWFkZTY3NmNhOWFjZWM0NmY5NTU1OTlhNjhhNCIKLSAgZGVwZW5kZW5j
aWVzOgotICAgIGJhYmVsLWhlbHBlci1idWlsZGVyLWJpbmFyeS1hc3NpZ25tZW50LW9wZXJhdG9y
LXZpc2l0b3IgIl42LjguMCIKLSAgICBiYWJlbC1wbHVnaW4tc3ludGF4LWV4cG9uZW50aWF0aW9u
LW9wZXJhdG9yICJeNi44LjAiCi0gICAgYmFiZWwtcnVudGltZSAiXjYuMC4wIgotCi1iYWJlbC1w
bHVnaW4tdHJhbnNmb3JtLWZsb3ctc3RyaXAtdHlwZXNAXjYuMy4xMzoKLSAgdmVyc2lvbiAiNi4x
NC4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9iYWJlbC1wbHVn
aW4tdHJhbnNmb3JtLWZsb3ctc3RyaXAtdHlwZXMvLS9iYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWZs
b3ctc3RyaXAtdHlwZXMtNi4xNC4wLnRneiMzNWNlYjAzZjg3NzA5MzQwNDRiYWIxYTc2ZjdlNGVl
MGFhOTIyMGY5IgotICBkZXBlbmRlbmNpZXM6Ci0gICAgYmFiZWwtcGx1Z2luLXN5bnRheC1mbG93
ICJeNi44LjAiCi0gICAgYmFiZWwtcnVudGltZSAiXjYuMC4wIgotCi1iYWJlbC1wbHVnaW4tdHJh
bnNmb3JtLW9iamVjdC1yZXN0LXNwcmVhZEA2LjguMDoKLSAgdmVyc2lvbiAiNi44LjAiCi0gIHJl
c29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2JhYmVsLXBsdWdpbi10cmFuc2Zv
cm0tb2JqZWN0LXJlc3Qtc3ByZWFkLy0vYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1vYmplY3QtcmVz
dC1zcHJlYWQtNi44LjAudGd6IzAzZDEzMDhlMjU3YTlkOGUxYTgxNWFlMWZkM2RiMjFiZGViZjA4
ZDkiCi0gIGRlcGVuZGVuY2llczoKLSAgICBiYWJlbC1wbHVnaW4tc3ludGF4LW9iamVjdC1yZXN0
LXNwcmVhZCAiXjYuOC4wIgotICAgIGJhYmVsLXJ1bnRpbWUgIl42LjAuMCIKLQotYmFiZWwtcGx1
Z2luLXRyYW5zZm9ybS1yZWFjdC1jb25zdGFudC1lbGVtZW50c0A2LjkuMToKLSAgdmVyc2lvbiAi
Ni45LjEiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2JhYmVsLXBs
dWdpbi10cmFuc2Zvcm0tcmVhY3QtY29uc3RhbnQtZWxlbWVudHMvLS9iYWJlbC1wbHVnaW4tdHJh
bnNmb3JtLXJlYWN0LWNvbnN0YW50LWVsZW1lbnRzLTYuOS4xLnRneiMxMjViODZkOTZjYjMyMmUy
MTM5YjYwN2ZkNzQ5YWQ1ZmJiMTdmMDA1IgotICBkZXBlbmRlbmNpZXM6Ci0gICAgYmFiZWwtcnVu
dGltZSAiXjYuOS4xIgotCi1iYWJlbC1wbHVnaW4tdHJhbnNmb3JtLXJlYWN0LWRpc3BsYXktbmFt
ZUBeNi4zLjEzOgotICB2ZXJzaW9uICI2LjguMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0
cnkueWFybnBrZy5jb20vYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1yZWFjdC1kaXNwbGF5LW5hbWUv
LS9iYWJlbC1wbHVnaW4tdHJhbnNmb3JtLXJlYWN0LWRpc3BsYXktbmFtZS02LjguMC50Z3ojZjdh
MDg0OTc3MzgzZDcyOGJkYmRjMjgzNWJiYTAxNTk1NzdmNjYwZSIKLSAgZGVwZW5kZW5jaWVzOgot
ICAgIGJhYmVsLXJ1bnRpbWUgIl42LjAuMCIKLQotYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1yZWFj
dC1qc3gtc2VsZkBeNi4xMS4wLCBiYWJlbC1wbHVnaW4tdHJhbnNmb3JtLXJlYWN0LWpzeC1zZWxm
QDYuMTEuMDoKLSAgdmVyc2lvbiAiNi4xMS4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3Ry
eS55YXJucGtnLmNvbS9iYWJlbC1wbHVnaW4tdHJhbnNmb3JtLXJlYWN0LWpzeC1zZWxmLy0vYmFi
ZWwtcGx1Z2luLXRyYW5zZm9ybS1yZWFjdC1qc3gtc2VsZi02LjExLjAudGd6IzYwNWM5NDUwYzE0
MjlmOTdhOTMwZjdlMWRmZTNmMGQ5ZDBkYmQwZjQiCi0gIGRlcGVuZGVuY2llczoKLSAgICBiYWJl
bC1wbHVnaW4tc3ludGF4LWpzeCAiXjYuOC4wIgotICAgIGJhYmVsLXJ1bnRpbWUgIl42LjkuMCIK
LQotYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1yZWFjdC1qc3gtc291cmNlQF42LjMuMTMsIGJhYmVs
LXBsdWdpbi10cmFuc2Zvcm0tcmVhY3QtanN4LXNvdXJjZUA2LjkuMDoKLSAgdmVyc2lvbiAiNi45
LjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2JhYmVsLXBsdWdp
bi10cmFuc2Zvcm0tcmVhY3QtanN4LXNvdXJjZS8tL2JhYmVsLXBsdWdpbi10cmFuc2Zvcm0tcmVh
Y3QtanN4LXNvdXJjZS02LjkuMC50Z3ojYWY2ODRhMDVjMjA2N2E4NmUwOTU3ZDRmMzQzMjk1Y2Nm
NWRjY2YwMCIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGJhYmVsLXBsdWdpbi1zeW50YXgtanN4ICJe
Ni44LjAiCi0gICAgYmFiZWwtcnVudGltZSAiXjYuOS4wIgotCi1iYWJlbC1wbHVnaW4tdHJhbnNm
b3JtLXJlYWN0LWpzeEBeNi4zLjEzOgotICB2ZXJzaW9uICI2LjguMCIKLSAgcmVzb2x2ZWQgImh0
dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1yZWFjdC1q
c3gvLS9iYWJlbC1wbHVnaW4tdHJhbnNmb3JtLXJlYWN0LWpzeC02LjguMC50Z3ojOTQ3NTk5NDJm
NzBhZjE4YzYxNzE4OWFhN2YzNTkzZjE2NDRhNzFhYiIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGJh
YmVsLWhlbHBlci1idWlsZGVyLXJlYWN0LWpzeCAiXjYuOC4wIgotICAgIGJhYmVsLXBsdWdpbi1z
eW50YXgtanN4ICJeNi44LjAiCi0gICAgYmFiZWwtcnVudGltZSAiXjYuMC4wIgotCi1iYWJlbC1w
bHVnaW4tdHJhbnNmb3JtLXJlZ2VuZXJhdG9yQF42LjE2LjA6Ci0gIHZlcnNpb24gIjYuMTYuMSIK
LSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYmFiZWwtcGx1Z2luLXRy
YW5zZm9ybS1yZWdlbmVyYXRvci8tL2JhYmVsLXBsdWdpbi10cmFuc2Zvcm0tcmVnZW5lcmF0b3It
Ni4xNi4xLnRneiNhNzVkZTZiMDQ4YTE0MTU0YWFlMTRiMDEyMjc1NmM1YmVkMzkyZjU5IgotICBk
ZXBlbmRlbmNpZXM6Ci0gICAgYmFiZWwtcnVudGltZSAiXjYuOS4wIgotICAgIGJhYmVsLXR5cGVz
ICJeNi4xNi4wIgotICAgIHByaXZhdGUgIn4wLjEuNSIKLQotYmFiZWwtcGx1Z2luLXRyYW5zZm9y
bS1yZWdlbmVyYXRvckA2LjE0LjA6Ci0gIHZlcnNpb24gIjYuMTQuMCIKLSAgcmVzb2x2ZWQgImh0
dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1yZWdlbmVy
YXRvci8tL2JhYmVsLXBsdWdpbi10cmFuc2Zvcm0tcmVnZW5lcmF0b3ItNi4xNC4wLnRneiMxMTkx
MTliMjBjOGI0MjgzZjZjNzdmMDE3MGQ0MDRjM2M2NTRiZWM4IgotICBkZXBlbmRlbmNpZXM6Ci0g
ICAgYmFiZWwtY29yZSAiXjYuMTQuMCIKLSAgICBiYWJlbC1wbHVnaW4tc3ludGF4LWFzeW5jLWZ1
bmN0aW9ucyAiXjYuOC4wIgotICAgIGJhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LWJsb2Nr
LXNjb3BpbmcgIl42LjE0LjAiCi0gICAgYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtZm9y
LW9mICJeNi44LjAiCi0gICAgYmFiZWwtcnVudGltZSAiXjYuOS4wIgotICAgIGJhYmVsLXRyYXZl
cnNlICJeNi4xNC4wIgotICAgIGJhYmVsLXR5cGVzICJeNi4xNC4wIgotICAgIGJhYnlsb24gIl42
LjkuMCIKLSAgICBwcml2YXRlICJ+MC4xLjUiCi0KLWJhYmVsLXBsdWdpbi10cmFuc2Zvcm0tcnVu
dGltZUA2LjE1LjA6Ci0gIHZlcnNpb24gIjYuMTUuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVn
aXN0cnkueWFybnBrZy5jb20vYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1ydW50aW1lLy0vYmFiZWwt
cGx1Z2luLXRyYW5zZm9ybS1ydW50aW1lLTYuMTUuMC50Z3ojM2Q3NWI0ZDk0OWFkODFhZjE1NzU3
MDI3Mzg0NmZiNTlhZWIwZDU3YyIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGJhYmVsLXJ1bnRpbWUg
Il42LjkuMCIKLQotYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1zdHJpY3QtbW9kZUBeNi44LjA6Ci0g
IHZlcnNpb24gIjYuMTEuMyIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5j
b20vYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1zdHJpY3QtbW9kZS8tL2JhYmVsLXBsdWdpbi10cmFu
c2Zvcm0tc3RyaWN0LW1vZGUtNi4xMS4zLnRneiMxODM3NDEzMjUxMjZiYzdlYzljZjRjMGZjMjU3
ZDNlN2NhNWFmZDQwIgotICBkZXBlbmRlbmNpZXM6Ci0gICAgYmFiZWwtcnVudGltZSAiXjYuMC4w
IgotICAgIGJhYmVsLXR5cGVzICJeNi44LjAiCi0KLWJhYmVsLXByZXNldC1lczIwMTVAXjYuMTQu
MDoKLSAgdmVyc2lvbiAiNi4xNi4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJu
cGtnLmNvbS9iYWJlbC1wcmVzZXQtZXMyMDE1Ly0vYmFiZWwtcHJlc2V0LWVzMjAxNS02LjE2LjAu
dGd6IzU5YWNlY2QxZWZiZWJhZjQ4Zjg5NDA0ODQwZjJmZTc4YzRkMmFkNWMiCi0gIGRlcGVuZGVu
Y2llczoKLSAgICBiYWJlbC1wbHVnaW4tY2hlY2stZXMyMDE1LWNvbnN0YW50cyAiXjYuMy4xMyIK
LSAgICBiYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAxNS1hcnJvdy1mdW5jdGlvbnMgIl42LjMu
MTMiCi0gICAgYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtYmxvY2stc2NvcGVkLWZ1bmN0
aW9ucyAiXjYuMy4xMyIKLSAgICBiYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAxNS1ibG9jay1z
Y29waW5nICJeNi4xNC4wIgotICAgIGJhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LWNsYXNz
ZXMgIl42LjE0LjAiCi0gICAgYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtY29tcHV0ZWQt
cHJvcGVydGllcyAiXjYuMy4xMyIKLSAgICBiYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAxNS1k
ZXN0cnVjdHVyaW5nICJeNi4xNi4wIgotICAgIGJhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1
LWR1cGxpY2F0ZS1rZXlzICJeNi42LjAiCi0gICAgYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIw
MTUtZm9yLW9mICJeNi42LjAiCi0gICAgYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtZnVu
Y3Rpb24tbmFtZSAiXjYuOS4wIgotICAgIGJhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LWxp
dGVyYWxzICJeNi4zLjEzIgotICAgIGJhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LW1vZHVs
ZXMtYW1kICJeNi44LjAiCi0gICAgYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtbW9kdWxl
cy1jb21tb25qcyAiXjYuMTYuMCIKLSAgICBiYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAxNS1t
b2R1bGVzLXN5c3RlbWpzICJeNi4xNC4wIgotICAgIGJhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMy
MDE1LW1vZHVsZXMtdW1kICJeNi4xMi4wIgotICAgIGJhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMy
MDE1LW9iamVjdC1zdXBlciAiXjYuMy4xMyIKLSAgICBiYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVz
MjAxNS1wYXJhbWV0ZXJzICJeNi4xNi4wIgotICAgIGJhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMy
MDE1LXNob3J0aGFuZC1wcm9wZXJ0aWVzICJeNi4zLjEzIgotICAgIGJhYmVsLXBsdWdpbi10cmFu
c2Zvcm0tZXMyMDE1LXNwcmVhZCAiXjYuMy4xMyIKLSAgICBiYWJlbC1wbHVnaW4tdHJhbnNmb3Jt
LWVzMjAxNS1zdGlja3ktcmVnZXggIl42LjMuMTMiCi0gICAgYmFiZWwtcGx1Z2luLXRyYW5zZm9y
bS1lczIwMTUtdGVtcGxhdGUtbGl0ZXJhbHMgIl42LjYuMCIKLSAgICBiYWJlbC1wbHVnaW4tdHJh
bnNmb3JtLWVzMjAxNS10eXBlb2Ytc3ltYm9sICJeNi42LjAiCi0gICAgYmFiZWwtcGx1Z2luLXRy
YW5zZm9ybS1lczIwMTUtdW5pY29kZS1yZWdleCAiXjYuMy4xMyIKLSAgICBiYWJlbC1wbHVnaW4t
dHJhbnNmb3JtLXJlZ2VuZXJhdG9yICJeNi4xNi4wIgotCi1iYWJlbC1wcmVzZXQtZXMyMDE2QF42
LjExLjM6Ci0gIHZlcnNpb24gIjYuMTYuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnku
eWFybnBrZy5jb20vYmFiZWwtcHJlc2V0LWVzMjAxNi8tL2JhYmVsLXByZXNldC1lczIwMTYtNi4x
Ni4wLnRneiNjN2RhZjVmZWVkZWVlOTljODY3ODEzYmRmMGQ1NzNkOTRjYTEyODEyIgotICBkZXBl
bmRlbmNpZXM6Ci0gICAgYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1leHBvbmVudGlhdGlvbi1vcGVy
YXRvciAiXjYuMy4xMyIKLQotYmFiZWwtcHJlc2V0LWVzMjAxN0BeNi4xNC4wOgotICB2ZXJzaW9u
ICI2LjE2LjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2JhYmVs
LXByZXNldC1lczIwMTcvLS9iYWJlbC1wcmVzZXQtZXMyMDE3LTYuMTYuMC50Z3ojNTM2YzYyODc3
NzhhNzU4OTQ4ZGRkMDkyYjQ2NmI2ZWY1MGI3ODZmYSIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGJh
YmVsLXBsdWdpbi1zeW50YXgtdHJhaWxpbmctZnVuY3Rpb24tY29tbWFzICJeNi44LjAiCi0gICAg
YmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1hc3luYy10by1nZW5lcmF0b3IgIl42LjE2LjAiCi0KLWJh
YmVsLXByZXNldC1qZXN0QF4xNS4wLjA6Ci0gIHZlcnNpb24gIjE1LjAuMCIKLSAgcmVzb2x2ZWQg
Imh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYmFiZWwtcHJlc2V0LWplc3QvLS9iYWJlbC1w
cmVzZXQtamVzdC0xNS4wLjAudGd6I2YyMzk4OGYxZjkxODY3M2ZmOWI0NzBmZGZkNjBmY2MxOWJj
NjE4ZjUiCi0gIGRlcGVuZGVuY2llczoKLSAgICBiYWJlbC1wbHVnaW4tamVzdC1ob2lzdCAiXjE1
LjAuMCIKLQotYmFiZWwtcHJlc2V0LWxhdGVzdEA2LjE0LjA6Ci0gIHZlcnNpb24gIjYuMTQuMCIK
LSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYmFiZWwtcHJlc2V0LWxh
dGVzdC8tL2JhYmVsLXByZXNldC1sYXRlc3QtNi4xNC4wLnRneiMxNjg0YWNlODE2Yzk5OGNlNzJk
MjBlNWM1ZjcxMDMyOWQ0MGY5MjQ2IgotICBkZXBlbmRlbmNpZXM6Ci0gICAgYmFiZWwtcHJlc2V0
LWVzMjAxNSAiXjYuMTQuMCIKLSAgICBiYWJlbC1wcmVzZXQtZXMyMDE2ICJeNi4xMS4zIgotICAg
IGJhYmVsLXByZXNldC1lczIwMTcgIl42LjE0LjAiCi0KLWJhYmVsLXByZXNldC1yZWFjdC1hcHBA
XjAuMi4xOgotICB2ZXJzaW9uICIwLjIuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnku
eWFybnBrZy5jb20vYmFiZWwtcHJlc2V0LXJlYWN0LWFwcC8tL2JhYmVsLXByZXNldC1yZWFjdC1h
cHAtMC4yLjEudGd6I2JmOTQ2MjMzODJhZGMyYzRjN2UwOThhNjYyMjljNjY3MWE3OWY4NDIiCi0g
IGRlcGVuZGVuY2llczoKLSAgICBiYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWNsYXNzLXByb3BlcnRp
ZXMgIjYuMTEuNSIKLSAgICBiYWJlbC1wbHVnaW4tdHJhbnNmb3JtLW9iamVjdC1yZXN0LXNwcmVh
ZCAiNi44LjAiCi0gICAgYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1yZWFjdC1jb25zdGFudC1lbGVt
ZW50cyAiNi45LjEiCi0gICAgYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1yZWFjdC1qc3gtc2VsZiAi
Ni4xMS4wIgotICAgIGJhYmVsLXBsdWdpbi10cmFuc2Zvcm0tcmVhY3QtanN4LXNvdXJjZSAiNi45
LjAiCi0gICAgYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1yZWdlbmVyYXRvciAiNi4xNC4wIgotICAg
IGJhYmVsLXBsdWdpbi10cmFuc2Zvcm0tcnVudGltZSAiNi4xNS4wIgotICAgIGJhYmVsLXByZXNl
dC1sYXRlc3QgIjYuMTQuMCIKLSAgICBiYWJlbC1wcmVzZXQtcmVhY3QgIjYuMTEuMSIKLSAgICBi
YWJlbC1ydW50aW1lICI2LjExLjYiCi0KLWJhYmVsLXByZXNldC1yZWFjdEA2LjExLjE6Ci0gIHZl
cnNpb24gIjYuMTEuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20v
YmFiZWwtcHJlc2V0LXJlYWN0Ly0vYmFiZWwtcHJlc2V0LXJlYWN0LTYuMTEuMS50Z3ojOThhYzJi
ZDNjMWI3NmYzMDYyYWUwODI1ODBlYWRlMTU0YTE5YjU5MCIKLSAgZGVwZW5kZW5jaWVzOgotICAg
IGJhYmVsLXBsdWdpbi1zeW50YXgtZmxvdyAiXjYuMy4xMyIKLSAgICBiYWJlbC1wbHVnaW4tc3lu
dGF4LWpzeCAiXjYuMy4xMyIKLSAgICBiYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWZsb3ctc3RyaXAt
dHlwZXMgIl42LjMuMTMiCi0gICAgYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1yZWFjdC1kaXNwbGF5
LW5hbWUgIl42LjMuMTMiCi0gICAgYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1yZWFjdC1qc3ggIl42
LjMuMTMiCi0gICAgYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1yZWFjdC1qc3gtc2VsZiAiXjYuMTEu
MCIKLSAgICBiYWJlbC1wbHVnaW4tdHJhbnNmb3JtLXJlYWN0LWpzeC1zb3VyY2UgIl42LjMuMTMi
Ci0KLWJhYmVsLXJlZ2lzdGVyQF42LjE0LjAsIGJhYmVsLXJlZ2lzdGVyQF42LjE2LjA6Ci0gIHZl
cnNpb24gIjYuMTYuMyIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20v
YmFiZWwtcmVnaXN0ZXIvLS9iYWJlbC1yZWdpc3Rlci02LjE2LjMudGd6IzdiMGMwY2E3YmZkZWI5
MTg4YmE0YzI3ZTVmY2I3NTk5YTQ5N2M2MjQiCi0gIGRlcGVuZGVuY2llczoKLSAgICBiYWJlbC1j
b3JlICJeNi4xNi4wIgotICAgIGJhYmVsLXJ1bnRpbWUgIl42LjExLjYiCi0gICAgY29yZS1qcyAi
XjIuNC4wIgotICAgIGhvbWUtb3ItdG1wICJeMS4wLjAiCi0gICAgbG9kYXNoICJeNC4yLjAiCi0g
ICAgbWtkaXJwICJeMC41LjEiCi0gICAgcGF0aC1leGlzdHMgIl4xLjAuMCIKLSAgICBzb3VyY2Ut
bWFwLXN1cHBvcnQgIl4wLjQuMiIKLQotYmFiZWwtcnVudGltZUBeNi4wLjAsIGJhYmVsLXJ1bnRp
bWVAXjYuMTEuNiwgYmFiZWwtcnVudGltZUBeNi45LjAsIGJhYmVsLXJ1bnRpbWVAXjYuOS4xLCBi
YWJlbC1ydW50aW1lQDYuMTEuNjoKLSAgdmVyc2lvbiAiNi4xMS42IgotICByZXNvbHZlZCAiaHR0
cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9iYWJlbC1ydW50aW1lLy0vYmFiZWwtcnVudGltZS02
LjExLjYudGd6IzZkYjcwN2ZlZjJkNDljNDliZmEzY2I2NGVmZGI0MzZiNTE4YjgyMjIiCi0gIGRl
cGVuZGVuY2llczoKLSAgICBjb3JlLWpzICJeMi40LjAiCi0gICAgcmVnZW5lcmF0b3ItcnVudGlt
ZSAiXjAuOS41IgotCi1iYWJlbC10ZW1wbGF0ZUBeNi4xNC4wLCBiYWJlbC10ZW1wbGF0ZUBeNi4x
NS4wLCBiYWJlbC10ZW1wbGF0ZUBeNi4xNi4wLCBiYWJlbC10ZW1wbGF0ZUBeNi44LjAsIGJhYmVs
LXRlbXBsYXRlQF42LjkuMDoKLSAgdmVyc2lvbiAiNi4xNi4wIgotICByZXNvbHZlZCAiaHR0cHM6
Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9iYWJlbC10ZW1wbGF0ZS8tL2JhYmVsLXRlbXBsYXRlLTYu
MTYuMC50Z3ojZTE0OWRkMWE5ZjAzYTM1ZjgxN2RkYmM0ZDA0ODE5ODhlN2ViYzhjYSIKLSAgZGVw
ZW5kZW5jaWVzOgotICAgIGJhYmVsLXJ1bnRpbWUgIl42LjkuMCIKLSAgICBiYWJlbC10cmF2ZXJz
ZSAiXjYuMTYuMCIKLSAgICBiYWJlbC10eXBlcyAiXjYuMTYuMCIKLSAgICBiYWJ5bG9uICJeNi4x
MS4wIgotICAgIGxvZGFzaCAiXjQuMi4wIgotCi1iYWJlbC10cmF2ZXJzZUBeNi4wLjIwLCBiYWJl
bC10cmF2ZXJzZUBeNi4xNC4wLCBiYWJlbC10cmF2ZXJzZUBeNi4xNS4wLCBiYWJlbC10cmF2ZXJz
ZUBeNi4xNi4wLCBiYWJlbC10cmF2ZXJzZUBeNi44LjAsIGJhYmVsLXRyYXZlcnNlQF42LjkuMDoK
LSAgdmVyc2lvbiAiNi4xNi4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtn
LmNvbS9iYWJlbC10cmF2ZXJzZS8tL2JhYmVsLXRyYXZlcnNlLTYuMTYuMC50Z3ojZmJhODVhZTFm
ZDRkMTA3ZGU5Y2UwMDMxNDljYzU3ZjUzYmVmMGM0ZiIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGJh
YmVsLWNvZGUtZnJhbWUgIl42LjE2LjAiCi0gICAgYmFiZWwtbWVzc2FnZXMgIl42LjguMCIKLSAg
ICBiYWJlbC1ydW50aW1lICJeNi45LjAiCi0gICAgYmFiZWwtdHlwZXMgIl42LjE2LjAiCi0gICAg
YmFieWxvbiAiXjYuMTEuMCIKLSAgICBkZWJ1ZyAiXjIuMi4wIgotICAgIGdsb2JhbHMgIl44LjMu
MCIKLSAgICBpbnZhcmlhbnQgIl4yLjIuMCIKLSAgICBsb2Rhc2ggIl40LjIuMCIKLQotYmFiZWwt
dHlwZXNAXjYuMC4xOSwgYmFiZWwtdHlwZXNAXjYuMTAuMiwgYmFiZWwtdHlwZXNAXjYuMTQuMCwg
YmFiZWwtdHlwZXNAXjYuMTUuMCwgYmFiZWwtdHlwZXNAXjYuMTYuMCwgYmFiZWwtdHlwZXNAXjYu
OC4wLCBiYWJlbC10eXBlc0BeNi45LjA6Ci0gIHZlcnNpb24gIjYuMTYuMCIKLSAgcmVzb2x2ZWQg
Imh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYmFiZWwtdHlwZXMvLS9iYWJlbC10eXBlcy02
LjE2LjAudGd6IzcxY2NhMWRiZTUzMzc3NjYyMjVjNWMxOTMwNzFlOGViY2JjZmZjZmUiCi0gIGRl
cGVuZGVuY2llczoKLSAgICBiYWJlbC1ydW50aW1lICJeNi45LjEiCi0gICAgZXN1dGlscyAiXjIu
MC4yIgotICAgIGxvZGFzaCAiXjQuMi4wIgotICAgIHRvLWZhc3QtcHJvcGVydGllcyAiXjEuMC4x
IgotCi1iYWJ5bG9uQF42LjAuMTgsIGJhYnlsb25AXjYuMTEuMCwgYmFieWxvbkBeNi44LjEsIGJh
Ynlsb25AXjYuOS4wOgotICB2ZXJzaW9uICI2LjExLjQiCi0gIHJlc29sdmVkICJodHRwczovL3Jl
Z2lzdHJ5Lnlhcm5wa2cuY29tL2JhYnlsb24vLS9iYWJ5bG9uLTYuMTEuNC50Z3ojNzVlMWY1MjE4
N2VmYTBjZGU1YTU0MWE3ZjdmZGRhMzhmNmViNWJkMiIKLQotYmFsYW5jZWQtbWF0Y2hAXjAuNC4x
LCBiYWxhbmNlZC1tYXRjaEBeMC40LjI6Ci0gIHZlcnNpb24gIjAuNC4yIgotICByZXNvbHZlZCAi
aHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9iYWxhbmNlZC1tYXRjaC8tL2JhbGFuY2VkLW1h
dGNoLTAuNC4yLnRneiNjYjNmM2UzYzczMmRjMGYwMWVlNzBiNDAzZjMwMmU2MWQ3NzA5ODM4Igot
Ci1iYWxhbmNlZC1tYXRjaEB+MC4xLjA6Ci0gIHZlcnNpb24gIjAuMS4wIgotICByZXNvbHZlZCAi
aHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9iYWxhbmNlZC1tYXRjaC8tL2JhbGFuY2VkLW1h
dGNoLTAuMS4wLnRneiNiNTA0YmQwNTg2OWIzOTI1OWRkMGM1ZWZjMzVkODQzMTc2ZGNjYzRhIgot
Ci1iYXNlNjQtanNAXjEuMC4yOgotICB2ZXJzaW9uICIxLjIuMCIKLSAgcmVzb2x2ZWQgImh0dHBz
Oi8vcmVnaXN0cnkueWFybnBrZy5jb20vYmFzZTY0LWpzLy0vYmFzZTY0LWpzLTEuMi4wLnRneiNh
Mzk5OTJkNzIzNTg0ODExOTgyYmU1ZTI5MGJiNmE1M2Q4NjcwMGYxIgotCi1CYXNlNjRAfjAuMi4w
OgotICB2ZXJzaW9uICIwLjIuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBr
Zy5jb20vQmFzZTY0Ly0vQmFzZTY0LTAuMi4xLnRneiNiYTNhNDIzMDcwOGUxODY3MDUwNjVlNjZi
YWJkZDRjMzVjZjYwMDI4IgotCi1iYXRjaEAwLjUuMzoKLSAgdmVyc2lvbiAiMC41LjMiCi0gIHJl
c29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2JhdGNoLy0vYmF0Y2gtMC41LjMu
dGd6IzNmMzQxNGYzODAzMjE3NDNiZmMxMDQyZjlhODNmZjFkNTgyNGQ0NjQiCi0KLWJjcnlwdC1w
YmtkZkBeMS4wLjA6Ci0gIHZlcnNpb24gIjEuMC4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdp
c3RyeS55YXJucGtnLmNvbS9iY3J5cHQtcGJrZGYvLS9iY3J5cHQtcGJrZGYtMS4wLjAudGd6IzNj
YTc2Yjg1MjQxYzcxNzBiZjdkOTcwM2U3YjlhYTc0NjMwMDQwZDQiCi0gIGRlcGVuZGVuY2llczoK
LSAgICB0d2VldG5hY2wgIl4wLjE0LjMiCi0KLWJpZy5qc0BeMy4xLjM6Ci0gIHZlcnNpb24gIjMu
MS4zIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9iaWcuanMvLS9i
aWcuanMtMy4xLjMudGd6IzRjYWRhMjE5MzY1MmViM2NhOWVjOGU1NWM5MDE1NjY5Yzk4MDY5Nzgi
Ci0KLWJpbmFyeS1leHRlbnNpb25zQF4xLjAuMDoKLSAgdmVyc2lvbiAiMS43LjAiCi0gIHJlc29s
dmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2JpbmFyeS1leHRlbnNpb25zLy0vYmlu
YXJ5LWV4dGVuc2lvbnMtMS43LjAudGd6IzZjMTYxMGRiMTYzYWJmYjM0ZWRmZTQyZmE0MjMzNDNh
MWUwMTE4NWQiCi0KLWJsQH4xLjEuMjoKLSAgdmVyc2lvbiAiMS4xLjIiCi0gIHJlc29sdmVkICJo
dHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2JsLy0vYmwtMS4xLjIudGd6I2ZkY2E4NzFhOTk3
MTNhYTAwZDE5ZTNiYmJhNDFjNDQ3ODdhNjUzOTgiCi0gIGRlcGVuZGVuY2llczoKLSAgICByZWFk
YWJsZS1zdHJlYW0gIn4yLjAuNSIKLQotYmxvY2stc3RyZWFtQCo6Ci0gIHZlcnNpb24gIjAuMC45
IgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9ibG9jay1zdHJlYW0v
LS9ibG9jay1zdHJlYW0tMC4wLjkudGd6IzEzZWJmZTc3OGEwMzIwNWNmZTAzNzUxNDgxZWJiNGIz
MzAwYzEyNmEiCi0gIGRlcGVuZGVuY2llczoKLSAgICBpbmhlcml0cyAifjIuMC4wIgotCi1ibHVl
YmlyZEBeMy40LjE6Ci0gIHZlcnNpb24gIjMuNC42IgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdp
c3RyeS55YXJucGtnLmNvbS9ibHVlYmlyZC8tL2JsdWViaXJkLTMuNC42LnRneiMwMWRhOGQ4MjFk
ODc4MTNkMTU4OTY3ZTc0M2Q1ZmU2YzYyY2Y4YzBmIgotCi1ib29sYmFzZUB+MS4wLjA6Ci0gIHZl
cnNpb24gIjEuMC4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9i
b29sYmFzZS8tL2Jvb2xiYXNlLTEuMC4wLnRneiM2OGRmZjVmYmU2MGM1MWViMzc3MjVlYTllM2Vk
MzEwZGNjMWU3NzZlIgotCi1ib29tQDIueC54OgotICB2ZXJzaW9uICIyLjEwLjEiCi0gIHJlc29s
dmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2Jvb20vLS9ib29tLTIuMTAuMS50Z3oj
MzljODkxOGNlZmY1Nzk5ZjgzZjk0OTJhODQ4ZjYyNWFkZDBjNzY2ZiIKLSAgZGVwZW5kZW5jaWVz
OgotICAgIGhvZWsgIjIueC54IgotCi1icmFjZS1leHBhbnNpb25AXjEuMC4wOgotICB2ZXJzaW9u
ICIxLjEuNiIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYnJhY2Ut
ZXhwYW5zaW9uLy0vYnJhY2UtZXhwYW5zaW9uLTEuMS42LnRneiM3MTk3ZDdlYWE5Yjg3ZTY0ODM5
MGVhNjFmYzY2Yzg0NDI3NDIwZGY5IgotICBkZXBlbmRlbmNpZXM6Ci0gICAgYmFsYW5jZWQtbWF0
Y2ggIl4wLjQuMSIKLSAgICBjb25jYXQtbWFwICIwLjAuMSIKLQotYnJhY2VzQF4xLjguMjoKLSAg
dmVyc2lvbiAiMS44LjUiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29t
L2JyYWNlcy8tL2JyYWNlcy0xLjguNS50Z3ojYmE3Nzk2MmUxMmRmZjk2OWQ2Yjc2NzExZTkxNGI3
Mzc4NTdiZjZhNyIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGV4cGFuZC1yYW5nZSAiXjEuOC4xIgot
ICAgIHByZXNlcnZlICJeMC4yLjAiCi0gICAgcmVwZWF0LWVsZW1lbnQgIl4xLjEuMiIKLQotYnJv
d3Nlci1yZXNvbHZlQF4xLjExLjI6Ci0gIHZlcnNpb24gIjEuMTEuMiIKLSAgcmVzb2x2ZWQgImh0
dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYnJvd3Nlci1yZXNvbHZlLy0vYnJvd3Nlci1yZXNv
bHZlLTEuMTEuMi50Z3ojOGZmMDliMGEyYzQyMTcxOGExMDUxYzI2MGIzMmU0OGY0NDI5MzhjZSIK
LSAgZGVwZW5kZW5jaWVzOgotICAgIHJlc29sdmUgIjEuMS43IgotCi1icm93c2VyaWZ5LXpsaWJA
fjAuMS40OgotICB2ZXJzaW9uICIwLjEuNCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnku
eWFybnBrZy5jb20vYnJvd3NlcmlmeS16bGliLy0vYnJvd3NlcmlmeS16bGliLTAuMS40LnRneiNi
YjM1ZjhhNTE5ZjYwMGUwZmE2Yjg0ODUyNDFjOTc5ZDAxNDFmYjJkIgotICBkZXBlbmRlbmNpZXM6
Ci0gICAgcGFrbyAifjAuMi4wIgotCi1icm93c2Vyc2xpc3RAfjEuMy42OgotICB2ZXJzaW9uICIx
LjMuNiIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYnJvd3NlcnNs
aXN0Ly0vYnJvd3NlcnNsaXN0LTEuMy42LnRneiM5NTJmZjQ4ZDU2NDYzZDNiNTM4Zjg1ZWYyZjhl
YWRkZmQyODRiMTMzIgotICBkZXBlbmRlbmNpZXM6Ci0gICAgY2FuaXVzZS1kYiAiXjEuMC4zMDAw
MDUyNSIKLQotYnJvd3NlcnNsaXN0QH4xLjQuMDoKLSAgdmVyc2lvbiAiMS40LjAiCi0gIHJlc29s
dmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2Jyb3dzZXJzbGlzdC8tL2Jyb3dzZXJz
bGlzdC0xLjQuMC50Z3ojOWNmZGNmNTM4NGQ5MTU4ZjViNzBkYTJhYTAwYjMwZThmZjAxOTA0OSIK
LSAgZGVwZW5kZW5jaWVzOgotICAgIGNhbml1c2UtZGIgIl4xLjAuMzAwMDA1MzkiCi0KLWJzZXJA
XjEuMC4yOgotICB2ZXJzaW9uICIxLjAuMiIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnku
eWFybnBrZy5jb20vYnNlci8tL2JzZXItMS4wLjIudGd6IzM4MTExNjk3MGIyYTZkZWVhNTY0NmRk
MTVkZDcyNzg0NDRiNTYxNjkiCi0gIGRlcGVuZGVuY2llczoKLSAgICBub2RlLWludDY0ICJeMC40
LjAiCi0KLWJ1ZmZlci1zaGltc0BeMS4wLjA6Ci0gIHZlcnNpb24gIjEuMC4wIgotICByZXNvbHZl
ZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9idWZmZXItc2hpbXMvLS9idWZmZXItc2hp
bXMtMS4wLjAudGd6Izk5NzhjZTMxNzM4OGM2NDlhZDg3OTMwMjhjMzQ3N2VmMDQ0YThiNTEiCi0K
LWJ1ZmZlckBeNC45LjA6Ci0gIHZlcnNpb24gIjQuOS4xIgotICByZXNvbHZlZCAiaHR0cHM6Ly9y
ZWdpc3RyeS55YXJucGtnLmNvbS9idWZmZXIvLS9idWZmZXItNC45LjEudGd6IzZkMWJiNjAxYjA3
YTRlZmNlZDk3MDk0MTMyMDkzMDI3Yzk1YmMyOTgiCi0gIGRlcGVuZGVuY2llczoKLSAgICBiYXNl
NjQtanMgIl4xLjAuMiIKLSAgICBpZWVlNzU0ICJeMS4xLjQiCi0gICAgaXNhcnJheSAiXjEuMC4w
IgotCi1idWlsdGluLW1vZHVsZXNAXjEuMC4wLCBidWlsdGluLW1vZHVsZXNAXjEuMS4xOgotICB2
ZXJzaW9uICIxLjEuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20v
YnVpbHRpbi1tb2R1bGVzLy0vYnVpbHRpbi1tb2R1bGVzLTEuMS4xLnRneiMyNzBmMDc2YzVhNzJj
MDJmNWI2NWE0N2RmOTRjNWZlM2EyNzg4OTJmIgotCi1ieXRlc0AyLjMuMDoKLSAgdmVyc2lvbiAi
Mi4zLjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2J5dGVzLy0v
Ynl0ZXMtMi4zLjAudGd6I2Q1YjY4MGExNjViNjIwMTczOWFjYjYxMTU0MmFhYmMyZDhjZWIwNzAi
Ci0KLWNhbGxlci1wYXRoQF4wLjEuMDoKLSAgdmVyc2lvbiAiMC4xLjAiCi0gIHJlc29sdmVkICJo
dHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2NhbGxlci1wYXRoLy0vY2FsbGVyLXBhdGgtMC4x
LjAudGd6Izk0MDg1ZWY2MzU4MWVjZDNkYWE5MjQ0NGE4ZmU5NGU4MjU3Nzc1MWYiCi0gIGRlcGVu
ZGVuY2llczoKLSAgICBjYWxsc2l0ZXMgIl4wLjIuMCIKLQotY2FsbHNpdGVzQF4wLjIuMDoKLSAg
dmVyc2lvbiAiMC4yLjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29t
L2NhbGxzaXRlcy8tL2NhbGxzaXRlcy0wLjIuMC50Z3ojYWZhYjk2MjYyOTEwYTdmMzNjMTlhNTc3
NTgyNWM2OWYzNGUzNTBjYSIKLQotY2FsbHNpdGVzQF4yLjAuMDoKLSAgdmVyc2lvbiAiMi4wLjAi
Ci0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2NhbGxzaXRlcy8tL2Nh
bGxzaXRlcy0yLjAuMC50Z3ojMDZlYjg0ZjAwZWVhNDEzZGE4NmFmZmVmYWNiZmZiMzYwOTNiM2M1
MCIKLQotY2FtZWwtY2FzZUBeMy4wLjA6Ci0gIHZlcnNpb24gIjMuMC4wIgotICByZXNvbHZlZCAi
aHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9jYW1lbC1jYXNlLy0vY2FtZWwtY2FzZS0zLjAu
MC50Z3ojY2EzYzM2ODhhNGU5Y2YzYTRjZGE3NzdkYzRkY2JjNzEzMjQ5Y2Y3MyIKLSAgZGVwZW5k
ZW5jaWVzOgotICAgIG5vLWNhc2UgIl4yLjIuMCIKLSAgICB1cHBlci1jYXNlICJeMS4xLjEiCi0K
LWNhbWVsY2FzZUBeMS4wLjI6Ci0gIHZlcnNpb24gIjEuMi4xIgotICByZXNvbHZlZCAiaHR0cHM6
Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9jYW1lbGNhc2UvLS9jYW1lbGNhc2UtMS4yLjEudGd6Izli
YjUzMDRkMmUwYjU2Njk4YjJjNzU4YjA4YTNlYWE5ZGFhNThhMzkiCi0KLWNhbWVsY2FzZUBeMy4w
LjA6Ci0gIHZlcnNpb24gIjMuMC4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJu
cGtnLmNvbS9jYW1lbGNhc2UvLS9jYW1lbGNhc2UtMy4wLjAudGd6IzMyZmM0YjlmY2RhZjg0NWZj
ZGY3ZTczYmI5N2NhYzIyNjFmMGFiMGEiCi0KLWNhbml1c2UtZGJAXjEuMC4zMDAwMDUyNSwgY2Fu
aXVzZS1kYkBeMS4wLjMwMDAwNTI3LCBjYW5pdXNlLWRiQF4xLjAuMzAwMDA1MzksIGNhbml1c2Ut
ZGJAXjEuMC4zMDAwMDU0MDoKLSAgdmVyc2lvbiAiMS4wLjMwMDAwNTUzIgotICByZXNvbHZlZCAi
aHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9jYW5pdXNlLWRiLy0vY2FuaXVzZS1kYi0xLjAu
MzAwMDA1NTMudGd6I2U3ZTkwOGY0M2I3ODhlNmFjNzhmYzE2MWZlZGM0NjI2ZDZhMzlmMjQiCi0K
LWNhcmRpbmFsQF4xLjAuMDoKLSAgdmVyc2lvbiAiMS4wLjAiCi0gIHJlc29sdmVkICJodHRwczov
L3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2NhcmRpbmFsLy0vY2FyZGluYWwtMS4wLjAudGd6IzUwZTIx
YzFiMGFhMzc3MjlmOTM3N2RlZjE5NmI1YTljZWM5MzJlZTkiCi0gIGRlcGVuZGVuY2llczoKLSAg
ICBhbnNpY29sb3JzICJ+MC4yLjEiCi0gICAgcmVkZXllZCAifjEuMC4wIgotCi1jYXNlLXNlbnNp
dGl2ZS1wYXRocy13ZWJwYWNrLXBsdWdpbkAxLjEuNDoKLSAgdmVyc2lvbiAiMS4xLjQiCi0gIHJl
c29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2Nhc2Utc2Vuc2l0aXZlLXBhdGhz
LXdlYnBhY2stcGx1Z2luLy0vY2FzZS1zZW5zaXRpdmUtcGF0aHMtd2VicGFjay1wbHVnaW4tMS4x
LjQudGd6IzhhYWVkZDU2OTlhODZjYWMyYjM0Y2Y0MGQ5YjQxNDU3NTg5Nzg0NzIiCi0KLWNhc2Vs
ZXNzQH4wLjExLjA6Ci0gIHZlcnNpb24gIjAuMTEuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVn
aXN0cnkueWFybnBrZy5jb20vY2FzZWxlc3MvLS9jYXNlbGVzcy0wLjExLjAudGd6IzcxNWI5NmVh
OTg0MTU5M2NjMzMwNjc5MjNmNWVjNjBlYmRhNGY3ZDciCi0KLWNlbnRlci1hbGlnbkBeMC4xLjE6
Ci0gIHZlcnNpb24gIjAuMS4zIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtn
LmNvbS9jZW50ZXItYWxpZ24vLS9jZW50ZXItYWxpZ24tMC4xLjMudGd6I2FhMGQzMjYyOWI2ZWU5
NzIyMDA0MTFjYmQ0NDYxYzkwN2JjMmI3YWQiCi0gIGRlcGVuZGVuY2llczoKLSAgICBhbGlnbi10
ZXh0ICJeMC4xLjMiCi0gICAgbGF6eS1jYWNoZSAiXjEuMC4zIgotCi1jaGFsa0BeMS4wLjAsIGNo
YWxrQF4xLjEuMCwgY2hhbGtAXjEuMS4xLCBjaGFsa0BeMS4xLjMsIGNoYWxrQDEuMS4zOgotICB2
ZXJzaW9uICIxLjEuMyIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20v
Y2hhbGsvLS9jaGFsay0xLjEuMy50Z3ojYTgxMTVjNTVlNGE3MDJmZTRkMTUwYWJkMzg3MjgyMmE3
ZTA5ZmM5OCIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGFuc2ktc3R5bGVzICJeMi4yLjEiCi0gICAg
ZXNjYXBlLXN0cmluZy1yZWdleHAgIl4xLjAuMiIKLSAgICBoYXMtYW5zaSAiXjIuMC4wIgotICAg
IHN0cmlwLWFuc2kgIl4zLjAuMCIKLSAgICBzdXBwb3J0cy1jb2xvciAiXjIuMC4wIgotCi1jaGFu
Z2UtY2FzZUAzLjAueDoKLSAgdmVyc2lvbiAiMy4wLjAiCi0gIHJlc29sdmVkICJodHRwczovL3Jl
Z2lzdHJ5Lnlhcm5wa2cuY29tL2NoYW5nZS1jYXNlLy0vY2hhbmdlLWNhc2UtMy4wLjAudGd6IzZj
OWM4ZTM1Zjg3OTA4NzBhODJiNmIwNzQ1YmU4YzNjYmVmOWIwODEiCi0gIGRlcGVuZGVuY2llczoK
LSAgICBjYW1lbC1jYXNlICJeMy4wLjAiCi0gICAgY29uc3RhbnQtY2FzZSAiXjIuMC4wIgotICAg
IGRvdC1jYXNlICJeMi4xLjAiCi0gICAgaGVhZGVyLWNhc2UgIl4xLjAuMCIKLSAgICBpcy1sb3dl
ci1jYXNlICJeMS4xLjAiCi0gICAgaXMtdXBwZXItY2FzZSAiXjEuMS4wIgotICAgIGxvd2VyLWNh
c2UgIl4xLjEuMSIKLSAgICBsb3dlci1jYXNlLWZpcnN0ICJeMS4wLjAiCi0gICAgbm8tY2FzZSAi
XjIuMi4wIgotICAgIHBhcmFtLWNhc2UgIl4yLjEuMCIKLSAgICBwYXNjYWwtY2FzZSAiXjIuMC4w
IgotICAgIHBhdGgtY2FzZSAiXjIuMS4wIgotICAgIHNlbnRlbmNlLWNhc2UgIl4yLjEuMCIKLSAg
ICBzbmFrZS1jYXNlICJeMi4xLjAiCi0gICAgc3dhcC1jYXNlICJeMS4xLjAiCi0gICAgdGl0bGUt
Y2FzZSAiXjIuMS4wIgotICAgIHVwcGVyLWNhc2UgIl4xLjEuMSIKLSAgICB1cHBlci1jYXNlLWZp
cnN0ICJeMS4xLjAiCi0KLWNoZWVyaW9AXjAuMjAuMDoKLSAgdmVyc2lvbiAiMC4yMC4wIgotICBy
ZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9jaGVlcmlvLy0vY2hlZXJpby0w
LjIwLjAudGd6IzVjNzEwZjJiYWI5NTY1MzI3Mjg0MmJhMDFjNmVhNjFiMzU0NWVjMzUiCi0gIGRl
cGVuZGVuY2llczoKLSAgICBjc3Mtc2VsZWN0ICJ+MS4yLjAiCi0gICAgZG9tLXNlcmlhbGl6ZXIg
In4wLjEuMCIKLSAgICBlbnRpdGllcyAifjEuMS4xIgotICAgIGh0bWxwYXJzZXIyICJ+My44LjEi
Ci0gICAgbG9kYXNoICJeNC4xLjAiCi0gIG9wdGlvbmFsRGVwZW5kZW5jaWVzOgotICAgIGpzZG9t
ICJeNy4wLjIiCi0KLWNob2tpZGFyQF4xLjAuMDoKLSAgdmVyc2lvbiAiMS42LjAiCi0gIHJlc29s
dmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2Nob2tpZGFyLy0vY2hva2lkYXItMS42
LjAudGd6IzkwYzMyYWQ0ODAyOTAxZDc3MTNkZTUzMmRjMjg0ZTk2YTYzYWQwNTgiCi0gIGRlcGVu
ZGVuY2llczoKLSAgICBhbnltYXRjaCAiXjEuMy4wIgotICAgIGFzeW5jLWVhY2ggIl4xLjAuMCIK
LSAgICBnbG9iLXBhcmVudCAiXjIuMC4wIgotICAgIGluaGVyaXRzICJeMi4wLjEiCi0gICAgaXMt
YmluYXJ5LXBhdGggIl4xLjAuMCIKLSAgICBpcy1nbG9iICJeMi4wLjAiCi0gICAgcGF0aC1pcy1h
YnNvbHV0ZSAiXjEuMC4wIgotICAgIHJlYWRkaXJwICJeMi4wLjAiCi0gIG9wdGlvbmFsRGVwZW5k
ZW5jaWVzOgotICAgIGZzZXZlbnRzICJeMS4wLjAiCi0KLWNpcmN1bGFyLWpzb25AXjAuMy4wOgot
ICB2ZXJzaW9uICIwLjMuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5j
b20vY2lyY3VsYXItanNvbi8tL2NpcmN1bGFyLWpzb24tMC4zLjEudGd6I2JlOGIzNmFlZmNjZGU4
YjNjYTdhYTJkNmFmYzA3YTM3MjQyYzBkMmQiCi0KLWNsYXBAXjEuMC45OgotICB2ZXJzaW9uICIx
LjEuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vY2xhcC8tL2Ns
YXAtMS4xLjEudGd6I2E4YTkzZTBiZmI3NTgxYWMxOTljNGYwMDFhNTUyNWE3MjRjZTY5NmQiCi0g
IGRlcGVuZGVuY2llczoKLSAgICBjaGFsayAiXjEuMS4zIgotCi1jbGFzc25hbWVzQF4yLjIuNToK
LSAgdmVyc2lvbiAiMi4yLjUiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cu
Y29tL2NsYXNzbmFtZXMvLS9jbGFzc25hbWVzLTIuMi41LnRneiNmYjM4MDFkNDUzNDY3NjQ5ZWYz
NjAzYzdkNjFhMDJiZDEyOWJkZTZkIgotCi1jbGVhbi1jc3NAMy40Lng6Ci0gIHZlcnNpb24gIjMu
NC4yMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vY2xlYW4tY3Nz
Ly0vY2xlYW4tY3NzLTMuNC4yMC50Z3ojYzBkODk2M2I1NDQ4ZTAzMGYwYmNkM2RkZDBkYWM0ZGZl
M2RlYTUwMSIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGNvbW1hbmRlciAiMi44LngiCi0gICAgc291
cmNlLW1hcCAiMC40LngiCi0KLWNsaS1jdXJzb3JAXjEuMC4xOgotICB2ZXJzaW9uICIxLjAuMiIK
LSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vY2xpLWN1cnNvci8tL2Ns
aS1jdXJzb3ItMS4wLjIudGd6IzY0ZGEzZjdkNTZhNTQ0MTJlNTk3OTRiZDYyZGMzNTI5NWU4ZjI5
ODciCi0gIGRlcGVuZGVuY2llczoKLSAgICByZXN0b3JlLWN1cnNvciAiXjEuMC4xIgotCi1jbGkt
dGFibGVAXjAuMy4xOgotICB2ZXJzaW9uICIwLjMuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVn
aXN0cnkueWFybnBrZy5jb20vY2xpLXRhYmxlLy0vY2xpLXRhYmxlLTAuMy4xLnRneiNmNTNiMDUy
NjZhOGIxYTBiOTM0YjNkMDgyMWU2ZTJkYzU5MTRhZTIzIgotICBkZXBlbmRlbmNpZXM6Ci0gICAg
Y29sb3JzICIxLjAuMyIKLQotY2xpLXVzYWdlQF4wLjEuMToKLSAgdmVyc2lvbiAiMC4xLjQiCi0g
IHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2NsaS11c2FnZS8tL2NsaS11
c2FnZS0wLjEuNC50Z3ojN2MwMWUwZGM3MDZjMjM0YjM5YzkzMzgzOGM4ZTIwYjIxNzU3NzZlMiIK
LSAgZGVwZW5kZW5jaWVzOgotICAgIG1hcmtlZCAiXjAuMy42IgotICAgIG1hcmtlZC10ZXJtaW5h
bCAiXjEuNi4yIgotCi1jbGktd2lkdGhAXjIuMC4wOgotICB2ZXJzaW9uICIyLjEuMCIKLSAgcmVz
b2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vY2xpLXdpZHRoLy0vY2xpLXdpZHRo
LTIuMS4wLnRneiNiMjM0Y2EyMDliMjllZjY2ZmM1MThkOWI5OGQ1ODQ3YjAwZWRmMDBhIgotCi1j
bGl1aUBeMi4xLjA6Ci0gIHZlcnNpb24gIjIuMS4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdp
c3RyeS55YXJucGtnLmNvbS9jbGl1aS8tL2NsaXVpLTIuMS4wLnRneiM0YjQ3NTc2MGZmODAyNjRj
NzYyYzNhMTcxOTAzMmU5MWM3ZmVhMGQxIgotICBkZXBlbmRlbmNpZXM6Ci0gICAgY2VudGVyLWFs
aWduICJeMC4xLjEiCi0gICAgcmlnaHQtYWxpZ24gIl4wLjEuMSIKLSAgICB3b3Jkd3JhcCAiMC4w
LjIiCi0KLWNsaXVpQF4zLjIuMDoKLSAgdmVyc2lvbiAiMy4yLjAiCi0gIHJlc29sdmVkICJodHRw
czovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2NsaXVpLy0vY2xpdWktMy4yLjAudGd6IzEyMDYwMTUz
N2E5MTZkMjk5NDBmOTM0ZGEzYjQ4ZDU4NWEzOTIxM2QiCi0gIGRlcGVuZGVuY2llczoKLSAgICBz
dHJpbmctd2lkdGggIl4xLjAuMSIKLSAgICBzdHJpcC1hbnNpICJeMy4wLjEiCi0gICAgd3JhcC1h
bnNpICJeMi4wLjAiCi0KLWNsb25lQF4xLjAuMjoKLSAgdmVyc2lvbiAiMS4wLjIiCi0gIHJlc29s
dmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2Nsb25lLy0vY2xvbmUtMS4wLjIudGd6
IzI2MGI3YTk5ZWJiMWVkZmUyNDc1MzgxNzVmNzgzMjQzY2IxOWQxNDkiCi0KLWNvQF40LjYuMDoK
LSAgdmVyc2lvbiAiNC42LjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cu
Y29tL2NvLy0vY28tNC42LjAudGd6IzZlYTZiZGYzZDg1M2FlNTRjY2I4ZTQ3YmZhMGJmM2Y5MDMx
ZmIxODQiCi0KLWNvYUB+MS4wLjE6Ci0gIHZlcnNpb24gIjEuMC4xIgotICByZXNvbHZlZCAiaHR0
cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9jb2EvLS9jb2EtMS4wLjEudGd6IzdmOTU5MzQ2Y2Zj
ODcxOWUzZjcyMzNjZDY4NTI4NTRhN2M2N2Q4YTMiCi0gIGRlcGVuZGVuY2llczoKLSAgICBxICJe
MS4xLjIiCi0KLWNvZGUtcG9pbnQtYXRAXjEuMC4wOgotICB2ZXJzaW9uICIxLjAuMSIKLSAgcmVz
b2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vY29kZS1wb2ludC1hdC8tL2NvZGUt
cG9pbnQtYXQtMS4wLjEudGd6IzExMDRjZDM0ZjliNWI0NWQzZWJhODhmMWJhYmMxOTI0ZTFjZTM1
ZmIiCi0gIGRlcGVuZGVuY2llczoKLSAgICBudW1iZXItaXMtbmFuICJeMS4wLjAiCi0KLWNvbG9y
LWNvbnZlcnRAXjEuMy4wOgotICB2ZXJzaW9uICIxLjUuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8v
cmVnaXN0cnkueWFybnBrZy5jb20vY29sb3ItY29udmVydC8tL2NvbG9yLWNvbnZlcnQtMS41LjAu
dGd6IzdhMmI0ZWZiNDQ4OGRmODViY2E2NDQzY2IwMzhiNzEwMGZiZTdkZTEiCi0KLWNvbG9yLW5h
bWVAXjEuMC4wOgotICB2ZXJzaW9uICIxLjEuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0
cnkueWFybnBrZy5jb20vY29sb3ItbmFtZS8tL2NvbG9yLW5hbWUtMS4xLjEudGd6IzRiMTQxNTMw
NGNmNTAwMjhlYTgxNjQzNjQzYmQ4MmVhMDU4MDM2ODkiCi0KLWNvbG9yLXN0cmluZ0BeMC4zLjA6
Ci0gIHZlcnNpb24gIjAuMy4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtn
LmNvbS9jb2xvci1zdHJpbmcvLS9jb2xvci1zdHJpbmctMC4zLjAudGd6IzI3ZDQ2ZmI2NzAyNWM1
YzJmYTI1OTkzYmZiZjU3OWU0Nzg0MWI5OTEiCi0gIGRlcGVuZGVuY2llczoKLSAgICBjb2xvci1u
YW1lICJeMS4wLjAiCi0KLWNvbG9yQF4wLjExLjA6Ci0gIHZlcnNpb24gIjAuMTEuMyIKLSAgcmVz
b2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vY29sb3IvLS9jb2xvci0wLjExLjMu
dGd6IzRiYWQxZDBkNTI0OTlkZDAwZGJkNmYwODY4NDQyNDY3ZTQ5Mzk0ZTYiCi0gIGRlcGVuZGVu
Y2llczoKLSAgICBjbG9uZSAiXjEuMC4yIgotICAgIGNvbG9yLWNvbnZlcnQgIl4xLjMuMCIKLSAg
ICBjb2xvci1zdHJpbmcgIl4wLjMuMCIKLQotY29sb3JtaW5AXjEuMC41OgotICB2ZXJzaW9uICIx
LjEuMiIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vY29sb3JtaW4v
LS9jb2xvcm1pbi0xLjEuMi50Z3ojZWEyZjc0MjBhNzJiOTY4ODFhMzhhYWU1OWVjMTI0YTZmNzI5
ODEzMyIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGNvbG9yICJeMC4xMS4wIgotICAgIGNzcy1jb2xv
ci1uYW1lcyAiMC4wLjQiCi0gICAgaGFzICJeMS4wLjEiCi0KLWNvbG9yc0B+MS4xLjI6Ci0gIHZl
cnNpb24gIjEuMS4yIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9j
b2xvcnMvLS9jb2xvcnMtMS4xLjIudGd6IzE2OGE0NzAxNzU2YjZhN2Y1MWExMmNlMGM5N2JmYTI4
YzA4NGVkNjMiCi0KLWNvbG9yc0AxLjAuMzoKLSAgdmVyc2lvbiAiMS4wLjMiCi0gIHJlc29sdmVk
ICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2NvbG9ycy8tL2NvbG9ycy0xLjAuMy50Z3oj
MDQzM2Y0NGQ4MDk2ODBmZGViNjBlZDI2MGYxYjBjMjYyZTgyYTQwYiIKLQotY29tYmluZWQtc3Ry
ZWFtQF4xLjAuNSwgY29tYmluZWQtc3RyZWFtQH4xLjAuNToKLSAgdmVyc2lvbiAiMS4wLjUiCi0g
IHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2NvbWJpbmVkLXN0cmVhbS8t
L2NvbWJpbmVkLXN0cmVhbS0xLjAuNS50Z3ojOTM4MzcwYTU3YjRhNTFkZWEyYzc3YzE1ZDVjNWZk
Zjg5NTE2NDAwOSIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGRlbGF5ZWQtc3RyZWFtICJ+MS4wLjAi
Ci0KLWNvbW1hbmRlckBeMi45LjAsIGNvbW1hbmRlckAyLjkueDoKLSAgdmVyc2lvbiAiMi45LjAi
Ci0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2NvbW1hbmRlci8tL2Nv
bW1hbmRlci0yLjkuMC50Z3ojOWM5OTA5NDE3NmUxMjI0MGNiMjJkNmM1MTQ2MDk4NDAwZmUwZjdk
NCIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGdyYWNlZnVsLXJlYWRsaW5rICI+PSAxLjAuMCIKLQot
Y29tbWFuZGVyQH4yLjguMSwgY29tbWFuZGVyQDIuOC54OgotICB2ZXJzaW9uICIyLjguMSIKLSAg
cmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vY29tbWFuZGVyLy0vY29tbWFu
ZGVyLTIuOC4xLnRneiMwNmJlMzY3ZmViZmRhMGMzMzBhYTFlMmEwNzJkM2RjOTc2MjQyNWQ0Igot
ICBkZXBlbmRlbmNpZXM6Ci0gICAgZ3JhY2VmdWwtcmVhZGxpbmsgIj49IDEuMC4wIgotCi1jb21t
b25kaXJAXjEuMC4xOgotICB2ZXJzaW9uICIxLjAuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVn
aXN0cnkueWFybnBrZy5jb20vY29tbW9uZGlyLy0vY29tbW9uZGlyLTEuMC4xLnRneiNkZGQ4MDBk
YTBjNjYxMjczOTNjY2E1OTUwZWE5NjhhM2FhZjEyNTNiIgotCi1jb21wcmVzc2libGVAfjIuMC44
OgotICB2ZXJzaW9uICIyLjAuOCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBr
Zy5jb20vY29tcHJlc3NpYmxlLy0vY29tcHJlc3NpYmxlLTIuMC44LnRneiM3MTYyZTZjNDZkM2I5
ZDIwMGZmYjQ1Y2I0ZTRhMGY3ODMyNzMyNTAzIgotICBkZXBlbmRlbmNpZXM6Ci0gICAgbWltZS1k
YiAiPj0gMS4yMy4wIDwgMiIKLQotY29tcHJlc3Npb25AXjEuNS4yOgotICB2ZXJzaW9uICIxLjYu
MiIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vY29tcHJlc3Npb24v
LS9jb21wcmVzc2lvbi0xLjYuMi50Z3ojY2NlYjEyMWVjYzlkMDljNTJkN2FkMGMzMzUwZWE5M2Rk
ZDQwMmJjMyIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGFjY2VwdHMgIn4xLjMuMyIKLSAgICBieXRl
cyAiMi4zLjAiCi0gICAgY29tcHJlc3NpYmxlICJ+Mi4wLjgiCi0gICAgZGVidWcgIn4yLjIuMCIK
LSAgICBvbi1oZWFkZXJzICJ+MS4wLjEiCi0gICAgdmFyeSAifjEuMS4wIgotCi1jb25jYXQtbWFw
QDAuMC4xOgotICB2ZXJzaW9uICIwLjAuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnku
eWFybnBrZy5jb20vY29uY2F0LW1hcC8tL2NvbmNhdC1tYXAtMC4wLjEudGd6I2Q4YTk2YmQ3N2Zk
NjhkZjc3OTNhNzMwMzZhM2JhMGQ1NDA1ZDQ3N2IiCi0KLWNvbmNhdC1zdHJlYW1AXjEuNC42Ogot
ICB2ZXJzaW9uICIxLjUuMiIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5j
b20vY29uY2F0LXN0cmVhbS8tL2NvbmNhdC1zdHJlYW0tMS41LjIudGd6IzcwODk3ODYyNGQ4NTZh
ZjQxYTVhNzQxZGVmZGQyNjFkYTc1MmMyNjYiCi0gIGRlcGVuZGVuY2llczoKLSAgICBpbmhlcml0
cyAifjIuMC4xIgotICAgIHJlYWRhYmxlLXN0cmVhbSAifjIuMC4wIgotICAgIHR5cGVkYXJyYXkg
In4wLjAuNSIKLQotY29ubmVjdC1oaXN0b3J5LWFwaS1mYWxsYmFja0BeMS4zLjAsIGNvbm5lY3Qt
aGlzdG9yeS1hcGktZmFsbGJhY2tAMS4zLjA6Ci0gIHZlcnNpb24gIjEuMy4wIgotICByZXNvbHZl
ZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9jb25uZWN0LWhpc3RvcnktYXBpLWZhbGxi
YWNrLy0vY29ubmVjdC1oaXN0b3J5LWFwaS1mYWxsYmFjay0xLjMuMC50Z3ojZTUxZDE3ZjhmMGVm
MGRiOTBhNjRmZGI0N2RlMzA1MTU1NmU5ZjE2OSIKLQotY29uc29sZS1icm93c2VyaWZ5QF4xLjEu
MDoKLSAgdmVyc2lvbiAiMS4xLjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5w
a2cuY29tL2NvbnNvbGUtYnJvd3NlcmlmeS8tL2NvbnNvbGUtYnJvd3NlcmlmeS0xLjEuMC50Z3oj
ZjAyNDFjNDU3MzBhOWZjNjMyM2IyMDZkYmYzOGVkYzc0MWQwYmIxMCIKLSAgZGVwZW5kZW5jaWVz
OgotICAgIGRhdGUtbm93ICJeMC4xLjQiCi0KLWNvbnNvbGUtY29udHJvbC1zdHJpbmdzQF4xLjAu
MCwgY29uc29sZS1jb250cm9sLXN0cmluZ3NAfjEuMS4wOgotICB2ZXJzaW9uICIxLjEuMCIKLSAg
cmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vY29uc29sZS1jb250cm9sLXN0
cmluZ3MvLS9jb25zb2xlLWNvbnRyb2wtc3RyaW5ncy0xLjEuMC50Z3ojM2Q3Y2Y0NDY0ZGI2NDQ2
ZWE2NDRiZjRiMzk1MDdmOTg1MTAwOGU4ZSIKLQotY29uc3RhbnQtY2FzZUBeMi4wLjA6Ci0gIHZl
cnNpb24gIjIuMC4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9j
b25zdGFudC1jYXNlLy0vY29uc3RhbnQtY2FzZS0yLjAuMC50Z3ojNDE3NTc2NGQzODlkM2ZhOWM4
ZWNkMjkxODZlZDYwMDUyNDNiNmE0NiIKLSAgZGVwZW5kZW5jaWVzOgotICAgIHNuYWtlLWNhc2Ug
Il4yLjEuMCIKLSAgICB1cHBlci1jYXNlICJeMS4xLjEiCi0KLWNvbnN0YW50cy1icm93c2VyaWZ5
QDAuMC4xOgotICB2ZXJzaW9uICIwLjAuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnku
eWFybnBrZy5jb20vY29uc3RhbnRzLWJyb3dzZXJpZnkvLS9jb25zdGFudHMtYnJvd3NlcmlmeS0w
LjAuMS50Z3ojOTI1NzdkYjUyN2JhNmM0Y2YwYTQ1NjhkODRiYzAzMWY0NDFlMjFmMiIKLQotY29u
dGFpbnMtcGF0aEBeMC4xLjA6Ci0gIHZlcnNpb24gIjAuMS4wIgotICByZXNvbHZlZCAiaHR0cHM6
Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9jb250YWlucy1wYXRoLy0vY29udGFpbnMtcGF0aC0wLjEu
MC50Z3ojZmU4Y2YxODRmZjY2NzBiNmJhZWYwMWE5ZDQ4NjFhNWNiZWM0MTIwYSIKLQotY29udGVu
dC1kaXNwb3NpdGlvbkAwLjUuMToKLSAgdmVyc2lvbiAiMC41LjEiCi0gIHJlc29sdmVkICJodHRw
czovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2NvbnRlbnQtZGlzcG9zaXRpb24vLS9jb250ZW50LWRp
c3Bvc2l0aW9uLTAuNS4xLnRneiM4NzQ3NmM2YTY3YzhkYWE4N2UzMmU4NzYxNmRmODgzYmE3ZmIw
NzFiIgotCi1jb250ZW50LXR5cGVAfjEuMC4yOgotICB2ZXJzaW9uICIxLjAuMiIKLSAgcmVzb2x2
ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vY29udGVudC10eXBlLy0vY29udGVudC10
eXBlLTEuMC4yLnRneiNiN2QxMTNhZWU3YThkZDI3YmQyMTEzM2M0ZGMyNTI5ZGYxNzIxZWVkIgot
Ci1jb252ZXJ0LXNvdXJjZS1tYXBAXjEuMS4wOgotICB2ZXJzaW9uICIxLjMuMCIKLSAgcmVzb2x2
ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vY29udmVydC1zb3VyY2UtbWFwLy0vY29u
dmVydC1zb3VyY2UtbWFwLTEuMy4wLnRneiNlOWYzZTljNmUyNzI4ZWZjMjY3NjY5NmE3MGViMzgy
ZjczMTA2YTY3IgotCi1jb29raWUtc2lnbmF0dXJlQDEuMC42OgotICB2ZXJzaW9uICIxLjAuNiIK
LSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vY29va2llLXNpZ25hdHVy
ZS8tL2Nvb2tpZS1zaWduYXR1cmUtMS4wLjYudGd6I2UzMDNhODgyYjM0MmNjM2VlOGNhNTEzYTc5
OTk5NzM0ZGFiM2FlMmMiCi0KLWNvb2tpZUAwLjMuMToKLSAgdmVyc2lvbiAiMC4zLjEiCi0gIHJl
c29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2Nvb2tpZS8tL2Nvb2tpZS0wLjMu
MS50Z3ojZTdlMGExZjllZjQzYjRjOGJhOTI1YzVjNWE5NmU4MDZkMTY4NzNiYiIKLQotY29yZS1q
c0BeMS4wLjA6Ci0gIHZlcnNpb24gIjEuMi43IgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3Ry
eS55YXJucGtnLmNvbS9jb3JlLWpzLy0vY29yZS1qcy0xLjIuNy50Z3ojNjUyMjk0YzE0NjUxZGIy
OGZhOTNiZDJkNWZmMjk4M2E0ZjA4YzYzNiIKLQotY29yZS1qc0BeMi40LjA6Ci0gIHZlcnNpb24g
IjIuNC4xIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9jb3JlLWpz
Ly0vY29yZS1qcy0yLjQuMS50Z3ojNGRlOTExZTY2N2IwZWFlOTEyNGUzNDI1NGI1M2FlYTZmYzYx
OGQzZSIKLQotY29yZS11dGlsLWlzQH4xLjAuMDoKLSAgdmVyc2lvbiAiMS4wLjIiCi0gIHJlc29s
dmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2NvcmUtdXRpbC1pcy8tL2NvcmUtdXRp
bC1pcy0xLjAuMi50Z3ojYjVmZDU0MjIwYWEyYmM1YWI1N2FhYjcxNDBjOTQwNzU0NTAzYzFhNyIK
LQotY3Jvc3Mtc3Bhd25ANC4wLjA6Ci0gIHZlcnNpb24gIjQuMC4wIgotICByZXNvbHZlZCAiaHR0
cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9jcm9zcy1zcGF3bi8tL2Nyb3NzLXNwYXduLTQuMC4w
LnRneiM4MjU0Nzc0YWI0Nzg2YjhjNWIzY2Y0ZGZiYTY2Y2U1NjM5MzJjMjUyIgotICBkZXBlbmRl
bmNpZXM6Ci0gICAgbHJ1LWNhY2hlICJeNC4wLjEiCi0gICAgd2hpY2ggIl4xLjIuOSIKLQotY3J5
cHRpbGVzQDIueC54OgotICB2ZXJzaW9uICIyLjAuNSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVn
aXN0cnkueWFybnBrZy5jb20vY3J5cHRpbGVzLy0vY3J5cHRpbGVzLTIuMC41LnRneiMzYmRmZWNk
YzYwODE0N2MxYzY3MjAyZmEyOTFlN2RjYTU5ZWFhM2I4IgotICBkZXBlbmRlbmNpZXM6Ci0gICAg
Ym9vbSAiMi54LngiCi0KLWNyeXB0by1icm93c2VyaWZ5QH4zLjIuNjoKLSAgdmVyc2lvbiAiMy4y
LjgiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2NyeXB0by1icm93
c2VyaWZ5Ly0vY3J5cHRvLWJyb3dzZXJpZnktMy4yLjgudGd6I2I5YjExZGJlNmQ5NjUxZGQ4ODJh
MDFlNmNjNDY3ZGY3MThlY2YxODkiCi0gIGRlcGVuZGVuY2llczoKLSAgICBwYmtkZjItY29tcGF0
ICIyLjAuMSIKLSAgICByaXBlbWQxNjAgIjAuMi4wIgotICAgIHNoYS5qcyAiMi4yLjYiCi0KLWNz
cy1jb2xvci1uYW1lc0AwLjAuNDoKLSAgdmVyc2lvbiAiMC4wLjQiCi0gIHJlc29sdmVkICJodHRw
czovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2Nzcy1jb2xvci1uYW1lcy8tL2Nzcy1jb2xvci1uYW1l
cy0wLjAuNC50Z3ojODA4YWRjMmU3OWNmODQ3MzgwNjliNjQ2Y2IyMGVjMjdiZWI2MjllMCIKLQot
Y3NzLWxvYWRlckAwLjI0LjA6Ci0gIHZlcnNpb24gIjAuMjQuMCIKLSAgcmVzb2x2ZWQgImh0dHBz
Oi8vcmVnaXN0cnkueWFybnBrZy5jb20vY3NzLWxvYWRlci8tL2Nzcy1sb2FkZXItMC4yNC4wLnRn
eiM3YWZhYWZiNGMwZmIyZjkwYjMzNWVkMTBhMWM3N2IzNGQ2NDg0M2ZlIgotICBkZXBlbmRlbmNp
ZXM6Ci0gICAgYmFiZWwtY29kZS1mcmFtZSAiXjYuMTEuMCIKLSAgICBjc3Mtc2VsZWN0b3ItdG9r
ZW5pemVyICJeMC42LjAiCi0gICAgY3NzbmFubyAiPj0yLjYuMSA8NCIKLSAgICBsb2FkZXItdXRp
bHMgIn4wLjIuMiIKLSAgICBsb2Rhc2guY2FtZWxjYXNlICJeMy4wLjEiCi0gICAgb2JqZWN0LWFz
c2lnbiAiXjQuMC4xIgotICAgIHBvc3Rjc3MgIl41LjAuNiIKLSAgICBwb3N0Y3NzLW1vZHVsZXMt
ZXh0cmFjdC1pbXBvcnRzICJeMS4wLjAiCi0gICAgcG9zdGNzcy1tb2R1bGVzLWxvY2FsLWJ5LWRl
ZmF1bHQgIl4xLjAuMSIKLSAgICBwb3N0Y3NzLW1vZHVsZXMtc2NvcGUgIl4xLjAuMCIKLSAgICBw
b3N0Y3NzLW1vZHVsZXMtdmFsdWVzICJeMS4xLjAiCi0gICAgc291cmNlLWxpc3QtbWFwICJeMC4x
LjQiCi0KLWNzcy1zZWxlY3RAXjEuMS4wLCBjc3Mtc2VsZWN0QH4xLjIuMDoKLSAgdmVyc2lvbiAi
MS4yLjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2Nzcy1zZWxl
Y3QvLS9jc3Mtc2VsZWN0LTEuMi4wLnRneiMyYjNhMTEwNTM5YzUzNTVmMWNkOGQzMTQ2MjNlODcw
YjEyMWVjODU4IgotICBkZXBlbmRlbmNpZXM6Ci0gICAgYm9vbGJhc2UgIn4xLjAuMCIKLSAgICBj
c3Mtd2hhdCAiMi4xIgotICAgIGRvbXV0aWxzICIxLjUuMSIKLSAgICBudGgtY2hlY2sgIn4xLjAu
MSIKLQotY3NzLXNlbGVjdG9yLXRva2VuaXplckBeMC42LjA6Ci0gIHZlcnNpb24gIjAuNi4wIgot
ICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9jc3Mtc2VsZWN0b3ItdG9r
ZW5pemVyLy0vY3NzLXNlbGVjdG9yLXRva2VuaXplci0wLjYuMC50Z3ojNjQ0NWY1ODJjNzkzMGQy
NDFkY2M1MDA3YTQzZDZmY2I4ZjA3MzE1MiIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGNzc2VzYyAi
XjAuMS4wIgotICAgIGZhc3RwYXJzZSAiXjEuMS4xIgotICAgIHJlZ2V4cHUtY29yZSAiXjEuMC4w
IgotCi1jc3Mtd2hhdEAyLjE6Ci0gIHZlcnNpb24gIjIuMS4wIgotICByZXNvbHZlZCAiaHR0cHM6
Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9jc3Mtd2hhdC8tL2Nzcy13aGF0LTIuMS4wLnRneiM5NDY3
ZDAzMmMzOGNmYWVmYjlmMmQ3OTUwMTI1MzA2MmY4N2ZhMWJkIgotCi1jc3Nlc2NAXjAuMS4wOgot
ICB2ZXJzaW9uICIwLjEuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5j
b20vY3NzZXNjLy0vY3NzZXNjLTAuMS4wLnRneiNjODE0OTAzZTQ1NjIzMzcxYTA0NzdiNDAxMDlh
YWFmYmVlYWRkYmI0IgotCi0iY3NzbmFub0A+PTIuNi4xIDw0IjoKLSAgdmVyc2lvbiAiMy43Ljci
Ci0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2Nzc25hbm8vLS9jc3Nu
YW5vLTMuNy43LnRneiMyN2ZhYzYxMTM4MGM2YTQ5ZDZmNzIyYzA1MzdlNWE5ODhhNzg1MDEwIgot
ICBkZXBlbmRlbmNpZXM6Ci0gICAgYXV0b3ByZWZpeGVyICJeNi4zLjEiCi0gICAgZGVjYW1lbGl6
ZSAiXjEuMS4yIgotICAgIGRlZmluZWQgIl4xLjAuMCIKLSAgICBoYXMgIl4xLjAuMSIKLSAgICBv
YmplY3QtYXNzaWduICJeNC4wLjEiCi0gICAgcG9zdGNzcyAiXjUuMC4xNCIKLSAgICBwb3N0Y3Nz
LWNhbGMgIl41LjIuMCIKLSAgICBwb3N0Y3NzLWNvbG9ybWluICJeMi4xLjgiCi0gICAgcG9zdGNz
cy1jb252ZXJ0LXZhbHVlcyAiXjIuMy40IgotICAgIHBvc3Rjc3MtZGlzY2FyZC1jb21tZW50cyAi
XjIuMC40IgotICAgIHBvc3Rjc3MtZGlzY2FyZC1kdXBsaWNhdGVzICJeMi4wLjEiCi0gICAgcG9z
dGNzcy1kaXNjYXJkLWVtcHR5ICJeMi4wLjEiCi0gICAgcG9zdGNzcy1kaXNjYXJkLW92ZXJyaWRk
ZW4gIl4wLjEuMSIKLSAgICBwb3N0Y3NzLWRpc2NhcmQtdW51c2VkICJeMi4yLjEiCi0gICAgcG9z
dGNzcy1maWx0ZXItcGx1Z2lucyAiXjIuMC4wIgotICAgIHBvc3Rjc3MtbWVyZ2UtaWRlbnRzICJe
Mi4xLjUiCi0gICAgcG9zdGNzcy1tZXJnZS1sb25naGFuZCAiXjIuMC4xIgotICAgIHBvc3Rjc3Mt
bWVyZ2UtcnVsZXMgIl4yLjAuMyIKLSAgICBwb3N0Y3NzLW1pbmlmeS1mb250LXZhbHVlcyAiXjEu
MC4yIgotICAgIHBvc3Rjc3MtbWluaWZ5LWdyYWRpZW50cyAiXjEuMC4xIgotICAgIHBvc3Rjc3Mt
bWluaWZ5LXBhcmFtcyAiXjEuMC40IgotICAgIHBvc3Rjc3MtbWluaWZ5LXNlbGVjdG9ycyAiXjIu
MC40IgotICAgIHBvc3Rjc3Mtbm9ybWFsaXplLWNoYXJzZXQgIl4xLjEuMCIKLSAgICBwb3N0Y3Nz
LW5vcm1hbGl6ZS11cmwgIl4zLjAuNyIKLSAgICBwb3N0Y3NzLW9yZGVyZWQtdmFsdWVzICJeMi4x
LjAiCi0gICAgcG9zdGNzcy1yZWR1Y2UtaWRlbnRzICJeMi4yLjIiCi0gICAgcG9zdGNzcy1yZWR1
Y2UtaW5pdGlhbCAiXjEuMC4wIgotICAgIHBvc3Rjc3MtcmVkdWNlLXRyYW5zZm9ybXMgIl4xLjAu
MyIKLSAgICBwb3N0Y3NzLXN2Z28gIl4yLjEuMSIKLSAgICBwb3N0Y3NzLXVuaXF1ZS1zZWxlY3Rv
cnMgIl4yLjAuMiIKLSAgICBwb3N0Y3NzLXZhbHVlLXBhcnNlciAiXjMuMi4zIgotICAgIHBvc3Rj
c3MtemluZGV4ICJeMi4wLjEiCi0KLWNzc29AfjIuMi4xOgotICB2ZXJzaW9uICIyLjIuMSIKLSAg
cmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vY3Nzby8tL2Nzc28tMi4yLjEu
dGd6IzUxZmJiNTM0N2U1MGU4MWU2ZWQ1MTY2OGE0ODQ5MGFlNmZlMmFmZTIiCi0gIGRlcGVuZGVu
Y2llczoKLSAgICBjbGFwICJeMS4wLjkiCi0gICAgc291cmNlLW1hcCAiXjAuNS4zIgotCi0iY3Nz
b21APj0gMC4zLjAgPCAwLjQuMCIsIGNzc29tQDAuMy54OgotICB2ZXJzaW9uICIwLjMuMSIKLSAg
cmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vY3Nzb20vLS9jc3NvbS0wLjMu
MS50Z3ojYzllMzdlZjI0OTBlNjRmNmQxYmFhMTBmZGE4NTIyNTcwODJjMjVkMyIKLQotImNzc3N0
eWxlQD49IDAuMi4yOSA8IDAuMy4wIiwgImNzc3N0eWxlQD49IDAuMi4zNiA8IDAuMy4wIjoKLSAg
dmVyc2lvbiAiMC4yLjM3IgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNv
bS9jc3NzdHlsZS8tL2Nzc3N0eWxlLTAuMi4zNy50Z3ojNTQxMDk3MjM0Y2IyNTEzYzgzY2VlZDNh
Y2RkYzI3ZmYyNzk4N2Q1NCIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGNzc29tICIwLjMueCIKLQot
ZEBeMC4xLjEsIGRAfjAuMS4xOgotICB2ZXJzaW9uICIwLjEuMSIKLSAgcmVzb2x2ZWQgImh0dHBz
Oi8vcmVnaXN0cnkueWFybnBrZy5jb20vZC8tL2QtMC4xLjEudGd6I2RhMTg0YzUzNWQxOGQ4ZWU3
YmEyYWEyMjliOTE0MDA5ZmFlMTEzMDkiCi0gIGRlcGVuZGVuY2llczoKLSAgICBlczUtZXh0ICJ+
MC4xMC4yIgotCi1kYW1lcmF1LWxldmVuc2h0ZWluQF4xLjAuMDoKLSAgdmVyc2lvbiAiMS4wLjMi
Ci0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2RhbWVyYXUtbGV2ZW5z
aHRlaW4vLS9kYW1lcmF1LWxldmVuc2h0ZWluLTEuMC4zLnRneiNhZTRmNGNlMGI2MmFjYWUxMGZm
NjNhMDFiYjA4ZjY1MmY1MjEzYWYyIgotCi1kYXNoZGFzaEBeMS4xMi4wOgotICB2ZXJzaW9uICIx
LjE0LjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2Rhc2hkYXNo
Ly0vZGFzaGRhc2gtMS4xNC4wLnRneiMyOWU0ODZjNTQxOGJmMGYzNTYwMzRhOTkzZDUxNjg2YTMz
ZTg0MTQxIgotICBkZXBlbmRlbmNpZXM6Ci0gICAgYXNzZXJ0LXBsdXMgIl4xLjAuMCIKLQotZGF0
ZS1ub3dAXjAuMS40OgotICB2ZXJzaW9uICIwLjEuNCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVn
aXN0cnkueWFybnBrZy5jb20vZGF0ZS1ub3cvLS9kYXRlLW5vdy0wLjEuNC50Z3ojZWFmNDM5ZmQ0
ZDQ4NDhhZDc0ZTVjYzdkYmVmMjAwNjcyYjllMzQ1YiIKLQotZGVidWdAXjIuMS4wLCBkZWJ1Z0Be
Mi4xLjEsIGRlYnVnQF4yLjIuMCwgZGVidWdAfjIuMi4wOgotICB2ZXJzaW9uICIyLjIuMCIKLSAg
cmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZGVidWcvLS9kZWJ1Zy0yLjIu
MC50Z3ojZjg3MDU3ZTk5NWIxYTFmNmFlNmE0OTYwNjY0MTM3YmM1NmYwMzlkYSIKLSAgZGVwZW5k
ZW5jaWVzOgotICAgIG1zICIwLjcuMSIKLQotZGVjYW1lbGl6ZUBeMS4wLjAsIGRlY2FtZWxpemVA
XjEuMS4xLCBkZWNhbWVsaXplQF4xLjEuMjoKLSAgdmVyc2lvbiAiMS4yLjAiCi0gIHJlc29sdmVk
ICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2RlY2FtZWxpemUvLS9kZWNhbWVsaXplLTEu
Mi4wLnRneiNmNjUzNGQxNTE0ODI2OWIyMDM1MmU3YmVlMjZmNTAxZjlhMTkxMjkwIgotCi1kZWVw
LWV4dGVuZEB+MC40LjA6Ci0gIHZlcnNpb24gIjAuNC4xIgotICByZXNvbHZlZCAiaHR0cHM6Ly9y
ZWdpc3RyeS55YXJucGtnLmNvbS9kZWVwLWV4dGVuZC8tL2RlZXAtZXh0ZW5kLTAuNC4xLnRneiNl
ZmU0MTEzZDA4MDg1ZjRlNmY5Njg3NzU5ODEwZjgwNzQ2OWUyMjUzIgotCi1kZWVwLWlzQH4wLjEu
MzoKLSAgdmVyc2lvbiAiMC4xLjMiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5w
a2cuY29tL2RlZXAtaXMvLS9kZWVwLWlzLTAuMS4zLnRneiNiMzY5ZDZmYjVkYmMxM2VlY2Y1MjRm
OTFiMDcwZmVlZGMzNTdjZjM0IgotCi1kZWZpbmUtcHJvcGVydGllc0BeMS4xLjEsIGRlZmluZS1w
cm9wZXJ0aWVzQF4xLjEuMjoKLSAgdmVyc2lvbiAiMS4xLjIiCi0gIHJlc29sdmVkICJodHRwczov
L3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2RlZmluZS1wcm9wZXJ0aWVzLy0vZGVmaW5lLXByb3BlcnRp
ZXMtMS4xLjIudGd6IzgzYTczZjJmZWE1Njk4OThmYjczNzE5M2M4Zjg3M2NhZjZkNDVjOTQiCi0g
IGRlcGVuZGVuY2llczoKLSAgICBmb3JlYWNoICJeMi4wLjUiCi0gICAgb2JqZWN0LWtleXMgIl4x
LjAuOCIKLQotZGVmaW5lZEBeMS4wLjA6Ci0gIHZlcnNpb24gIjEuMC4wIgotICByZXNvbHZlZCAi
aHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9kZWZpbmVkLy0vZGVmaW5lZC0xLjAuMC50Z3oj
Yzk4ZDliY2VmNzU2NzQxODhlMTEwOTY5MTUxMTk5ZTM5YjFmYTY5MyIKLQotZGVsQF4yLjAuMjoK
LSAgdmVyc2lvbiAiMi4yLjIiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cu
Y29tL2RlbC8tL2RlbC0yLjIuMi50Z3ojYzEyYzk4MWQwNjc4NDZjODRiY2FmODYyY2ZmOTMwZDkw
N2ZmZDFhOCIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGdsb2JieSAiXjUuMC4wIgotICAgIGlzLXBh
dGgtY3dkICJeMS4wLjAiCi0gICAgaXMtcGF0aC1pbi1jd2QgIl4xLjAuMCIKLSAgICBvYmplY3Qt
YXNzaWduICJeNC4wLjEiCi0gICAgcGlmeSAiXjIuMC4wIgotICAgIHBpbmtpZS1wcm9taXNlICJe
Mi4wLjAiCi0gICAgcmltcmFmICJeMi4yLjgiCi0KLWRlbGF5ZWQtc3RyZWFtQH4xLjAuMDoKLSAg
dmVyc2lvbiAiMS4wLjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29t
L2RlbGF5ZWQtc3RyZWFtLy0vZGVsYXllZC1zdHJlYW0tMS4wLjAudGd6I2RmM2FlMTk5YWNhZGZi
N2Q0NDBhYWFlMGIyOWUyMjcyYjI0ZWM2MTkiCi0KLWRlbGVnYXRlc0BeMS4wLjA6Ci0gIHZlcnNp
b24gIjEuMC4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9kZWxl
Z2F0ZXMvLS9kZWxlZ2F0ZXMtMS4wLjAudGd6Izg0YzZlMTU5YjgxOTA0ZmRjYTU5YTBlZjQ0Y2Q4
NzBkMzEyNTBmOWEiCi0KLWRlcGRAfjEuMS4wOgotICB2ZXJzaW9uICIxLjEuMCIKLSAgcmVzb2x2
ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZGVwZC8tL2RlcGQtMS4xLjAudGd6I2Ux
YmQ4MmM2YWFiNmNlZDk2NWI5N2I4OGIxN2VkM2U1MjhjYTE4YzMiCi0KLWRlc3Ryb3lAfjEuMC40
OgotICB2ZXJzaW9uICIxLjAuNCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBr
Zy5jb20vZGVzdHJveS8tL2Rlc3Ryb3ktMS4wLjQudGd6Izk3ODg1NzQ0MmM0NDc0OWU0MjA2NjEz
ZTM3OTQ2MjA1ODI2YWJkODAiCi0KLWRldGVjdC1pbmRlbnRAXjMuMC4xOgotICB2ZXJzaW9uICIz
LjAuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZGV0ZWN0LWlu
ZGVudC8tL2RldGVjdC1pbmRlbnQtMy4wLjEudGd6IzlkYzVlNWRkYmNlZWY4MzI1NzY0Yjk0NTFi
MDJiYzZkNTQwODRmNzUiCi0gIGRlcGVuZGVuY2llczoKLSAgICBnZXQtc3RkaW4gIl40LjAuMSIK
LSAgICBtaW5pbWlzdCAiXjEuMS4wIgotICAgIHJlcGVhdGluZyAiXjEuMS4wIgotCi1kZXRlY3Qt
cG9ydEAxLjAuMDoKLSAgdmVyc2lvbiAiMS4wLjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lz
dHJ5Lnlhcm5wa2cuY29tL2RldGVjdC1wb3J0Ly0vZGV0ZWN0LXBvcnQtMS4wLjAudGd6IzEwZDBl
MGJmMDE3OTg2MmM1NTMxODcyNzNmN2EzYjQ1ZTdhOTA2MDciCi0gIGRlcGVuZGVuY2llczoKLSAg
ICBjb21tYW5kZXIgIn4yLjguMSIKLQotZGlmZkBeMy4wLjA6Ci0gIHZlcnNpb24gIjMuMC4xIgot
ICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9kaWZmLy0vZGlmZi0zLjAu
MS50Z3ojYTUyZDkwY2MwODk1Njk5NGJlMDA4NzdiZmY5NzExMDA2MjU4MmMzNSIKLQotZG9jdHJp
bmVAXjEuMi4yOgotICB2ZXJzaW9uICIxLjQuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0
cnkueWFybnBrZy5jb20vZG9jdHJpbmUvLS9kb2N0cmluZS0xLjQuMC50Z3ojZTJkYjMyZGVmYTc1
MjQwN2I5MzViMzgxZTg5ZjM3NDBlNDY5ZTU5OSIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGVzdXRp
bHMgIl4yLjAuMiIKLSAgICBpc2FycmF5ICJeMS4wLjAiCi0KLWRvY3RyaW5lQDEuMi54OgotICB2
ZXJzaW9uICIxLjIuMyIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20v
ZG9jdHJpbmUvLS9kb2N0cmluZS0xLjIuMy50Z3ojNmFlYzZiYmQ2MmNmODlkZDQ5OGNhZTcwYzBl
ZDlmNDlkYTg3M2E2YSIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGVzdXRpbHMgIl4yLjAuMiIKLSAg
ICBpc2FycmF5ICJeMS4wLjAiCi0KLWRvbS1jb252ZXJ0ZXJAfjAuMToKLSAgdmVyc2lvbiAiMC4x
LjQiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2RvbS1jb252ZXJ0
ZXIvLS9kb20tY29udmVydGVyLTAuMS40LnRneiNhNDVlZjU3MjdiODkwYzliZmZlNmQ3Yzg3NmU3
YjE5Y2IwZTE3ZjNiIgotICBkZXBlbmRlbmNpZXM6Ci0gICAgdXRpbGEgIn4wLjMiCi0KLWRvbS1z
ZXJpYWxpemVyQH4wLjEuMCwgZG9tLXNlcmlhbGl6ZXJAMDoKLSAgdmVyc2lvbiAiMC4xLjAiCi0g
IHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2RvbS1zZXJpYWxpemVyLy0v
ZG9tLXNlcmlhbGl6ZXItMC4xLjAudGd6IzA3M2M2OTc1NDZjZTA3ODBjZTIzYmU0YTI4ZTI5M2U0
MGJjMzBjODIiCi0gIGRlcGVuZGVuY2llczoKLSAgICBkb21lbGVtZW50dHlwZSAifjEuMS4xIgot
ICAgIGVudGl0aWVzICJ+MS4xLjEiCi0KLWRvbWFpbi1icm93c2VyQF4xLjEuMToKLSAgdmVyc2lv
biAiMS4xLjciCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2RvbWFp
bi1icm93c2VyLy0vZG9tYWluLWJyb3dzZXItMS4xLjcudGd6Izg2N2FhNGIwOTNmYWEwNWYxZGUw
OGMwNmY0ZDdiMjFmZGY4Njk4YmMiCi0KLWRvbWVsZW1lbnR0eXBlQH4xLjEuMToKLSAgdmVyc2lv
biAiMS4xLjMiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2RvbWVs
ZW1lbnR0eXBlLy0vZG9tZWxlbWVudHR5cGUtMS4xLjMudGd6I2JkMjg3NzNlMjY0Mjg4MWFlYzUx
NTQ0OTI0Mjk5YzVjZDgyMjE4NWIiCi0KLWRvbWVsZW1lbnR0eXBlQDE6Ci0gIHZlcnNpb24gIjEu
My4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9kb21lbGVtZW50
dHlwZS8tL2RvbWVsZW1lbnR0eXBlLTEuMy4wLnRneiNiMTdhZWQ4MmU4YWI1OWU1MmRkOWMxOWIx
NzU2ZTBmYzE4NzIwNGMyIgotCi1kb21oYW5kbGVyQDIuMToKLSAgdmVyc2lvbiAiMi4xLjAiCi0g
IHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2RvbWhhbmRsZXIvLS9kb21o
YW5kbGVyLTIuMS4wLnRneiNkMjY0NmY1ZTU3ZjZjM2JhYjExY2Y2Y2IwNWQzYzBhY2Y3NDEyNTk0
IgotICBkZXBlbmRlbmNpZXM6Ci0gICAgZG9tZWxlbWVudHR5cGUgIjEiCi0KLWRvbWhhbmRsZXJA
Mi4zOgotICB2ZXJzaW9uICIyLjMuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFy
bnBrZy5jb20vZG9taGFuZGxlci8tL2RvbWhhbmRsZXItMi4zLjAudGd6IzJkZTU5YTA4MjJkNTAy
N2ZhYmZmNmYwMzJjMmIyNWEyYThhYmU3MzgiCi0gIGRlcGVuZGVuY2llczoKLSAgICBkb21lbGVt
ZW50dHlwZSAiMSIKLQotZG9tdXRpbHNAMS4xOgotICB2ZXJzaW9uICIxLjEuNiIKLSAgcmVzb2x2
ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZG9tdXRpbHMvLS9kb211dGlscy0xLjEu
Ni50Z3ojYmRkYzNkZTA5OWI5YTJlZmFjYzUxYzYyM2YyOGY0MTZlY2M1NzQ4NSIKLSAgZGVwZW5k
ZW5jaWVzOgotICAgIGRvbWVsZW1lbnR0eXBlICIxIgotCi1kb211dGlsc0AxLjUsIGRvbXV0aWxz
QDEuNS4xOgotICB2ZXJzaW9uICIxLjUuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnku
eWFybnBrZy5jb20vZG9tdXRpbHMvLS9kb211dGlscy0xLjUuMS50Z3ojZGNkODQ4OGEyNmY1NjNk
NjEwNzllNDhjOWY3YjdlMzIzNzM2ODJjZiIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGRvbS1zZXJp
YWxpemVyICIwIgotICAgIGRvbWVsZW1lbnR0eXBlICIxIgotCi1kb3QtY2FzZUBeMi4xLjA6Ci0g
IHZlcnNpb24gIjIuMS4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNv
bS9kb3QtY2FzZS8tL2RvdC1jYXNlLTIuMS4wLnRneiM0YjQzZGQwZDc0MDNjMzRjYjY0NTQyNGFk
ZDM5N2U4MGJmZTg1Y2E2IgotICBkZXBlbmRlbmNpZXM6Ci0gICAgbm8tY2FzZSAiXjIuMi4wIgot
Ci1kb3RlbnZAMi4wLjA6Ci0gIHZlcnNpb24gIjIuMC4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9y
ZWdpc3RyeS55YXJucGtnLmNvbS9kb3RlbnYvLS9kb3RlbnYtMi4wLjAudGd6I2JkNzU5YzM1N2Fh
YTcwMzY1ZTAxYzk2YjdiMGJlYzA4YTZlMGQ5NDkiCi0KLWR1cGxleGVyQF4wLjEuMToKLSAgdmVy
c2lvbiAiMC4xLjEiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2R1
cGxleGVyLy0vZHVwbGV4ZXItMC4xLjEudGd6I2FjZTZmZjgwOGMxY2U2NmI1N2QxZWJmOTc5Nzdh
Y2IwMjMzNGNmYzEiCi0KLWVjYy1qc2JuQH4wLjEuMToKLSAgdmVyc2lvbiAiMC4xLjEiCi0gIHJl
c29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2VjYy1qc2JuLy0vZWNjLWpzYm4t
MC4xLjEudGd6IzBmYzczYTllZDVmMGQ1M2MzODE5MzM5ODUyM2VmN2U1NDM3Nzc1MDUiCi0gIGRl
cGVuZGVuY2llczoKLSAgICBqc2JuICJ+MC4xLjAiCi0KLWVlLWZpcnN0QDEuMS4xOgotICB2ZXJz
aW9uICIxLjEuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZWUt
Zmlyc3QvLS9lZS1maXJzdC0xLjEuMS50Z3ojNTkwYzYxMTU2YjBhZTJmNGYwMjU1NzMyYTE1OGIy
NjZiYzU2YjIxZCIKLQotZW1vamlzLWxpc3RAXjIuMC4wOgotICB2ZXJzaW9uICIyLjEuMCIKLSAg
cmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZW1vamlzLWxpc3QvLS9lbW9q
aXMtbGlzdC0yLjEuMC50Z3ojNGRhYTRkOWRiMDBmOTgxOTg4MGM3OWZhNDU3YWU1YjA5YTFmZDM4
OSIKLQotZW5jb2RldXJsQH4xLjAuMToKLSAgdmVyc2lvbiAiMS4wLjEiCi0gIHJlc29sdmVkICJo
dHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2VuY29kZXVybC8tL2VuY29kZXVybC0xLjAuMS50
Z3ojNzllM2Q1ODY1NTM0NjkwOWZlNmYwZjQ1YTVkZTY4MTAzYjI5NGQyMCIKLQotZW5jb2RpbmdA
XjAuMS4xMToKLSAgdmVyc2lvbiAiMC4xLjEyIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3Ry
eS55YXJucGtnLmNvbS9lbmNvZGluZy8tL2VuY29kaW5nLTAuMS4xMi50Z3ojNTM4YjY2ZjNlZTYy
Y2QxYWI1MWVjMzIzODI5ZDFmOTQ4MGM3NGJlYiIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGljb252
LWxpdGUgIn4wLjQuMTMiCi0KLWVuaGFuY2VkLXJlc29sdmVAfjAuOS4wOgotICB2ZXJzaW9uICIw
LjkuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZW5oYW5jZWQt
cmVzb2x2ZS8tL2VuaGFuY2VkLXJlc29sdmUtMC45LjEudGd6IzRkNmU2ODliMzcyNWY4NjA5MDky
N2NjYzg2Y2Q5ZjE2MzViODllMmUiCi0gIGRlcGVuZGVuY2llczoKLSAgICBncmFjZWZ1bC1mcyAi
XjQuMS4yIgotICAgIG1lbW9yeS1mcyAiXjAuMi4wIgotICAgIHRhcGFibGUgIl4wLjEuOCIKLQot
ZW50aXRpZXNAfjEuMS4xOgotICB2ZXJzaW9uICIxLjEuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8v
cmVnaXN0cnkueWFybnBrZy5jb20vZW50aXRpZXMvLS9lbnRpdGllcy0xLjEuMS50Z3ojNmU1YzJk
MGE1NjIxYjVkYWRhZWNlZjgwYjkwZWRmYjVjZDc3NzJmMCIKLQotZW50aXRpZXNAMS4wOgotICB2
ZXJzaW9uICIxLjAuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20v
ZW50aXRpZXMvLS9lbnRpdGllcy0xLjAuMC50Z3ojYjI5ODdhYTM4MjEzNDdmY2RlNjQyYjI0ZmRm
YzllNGZiNzEyYmYyNiIKLQotZW56eW1lQF4yLjQuMToKLSAgdmVyc2lvbiAiMi40LjEiCi0gIHJl
c29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2VuenltZS8tL2VuenltZS0yLjQu
MS50Z3ojOTBmYTk4NjFkOTgyZDBjZWI5MmE5ZmQ1N2UzODQyNmEyZjc0ZDNiMSIKLSAgZGVwZW5k
ZW5jaWVzOgotICAgIGNoZWVyaW8gIl4wLjIwLjAiCi0gICAgaXMtc3Vic2V0ICJeMC4xLjEiCi0g
ICAgbG9kYXNoICJeNC4xMy4xIgotICAgIG9iamVjdC1pcyAiXjEuMC4xIgotICAgIG9iamVjdC5h
c3NpZ24gIl40LjAuMyIKLSAgICBvYmplY3QudmFsdWVzICJeMS4wLjMiCi0KLWVycm5vQF4wLjEu
MywgImVycm5vQD49MC4xLjEgPDAuMi4wLTAiOgotICB2ZXJzaW9uICIwLjEuNCIKLSAgcmVzb2x2
ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZXJybm8vLS9lcnJuby0wLjEuNC50Z3oj
Yjg5NmUyM2E5ZTVlOGJhMzM4NzFmYzk5NmFiZDM2MzVmYzlhMWM3ZCIKLSAgZGVwZW5kZW5jaWVz
OgotICAgIHByciAifjAuMC4wIgotCi1lcnJvci1leEBeMS4yLjA6Ci0gIHZlcnNpb24gIjEuMy4w
IgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9lcnJvci1leC8tL2Vy
cm9yLWV4LTEuMy4wLnRneiNlNjdiNDNmM2U4MmM5NmVhM2E1ODRmZmVlMGI5ZmMzMzI1ZDgwMmQ5
IgotICBkZXBlbmRlbmNpZXM6Ci0gICAgaXMtYXJyYXlpc2ggIl4wLjIuMSIKLQotZXMtYWJzdHJh
Y3RAXjEuMy4yOgotICB2ZXJzaW9uICIxLjYuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0
cnkueWFybnBrZy5jb20vZXMtYWJzdHJhY3QvLS9lcy1hYnN0cmFjdC0xLjYuMS50Z3ojYmI4YTIw
NjQxMjBhYmNmOTI4YTA4NmVhM2Q5MDQzMTE0Mjg1ZWM5OSIKLSAgZGVwZW5kZW5jaWVzOgotICAg
IGVzLXRvLXByaW1pdGl2ZSAiXjEuMS4xIgotICAgIGZ1bmN0aW9uLWJpbmQgIl4xLjEuMCIKLSAg
ICBpcy1jYWxsYWJsZSAiXjEuMS4zIgotICAgIGlzLXJlZ2V4ICJeMS4wLjMiCi0KLWVzLXRvLXBy
aW1pdGl2ZUBeMS4xLjE6Ci0gIHZlcnNpb24gIjEuMS4xIgotICByZXNvbHZlZCAiaHR0cHM6Ly9y
ZWdpc3RyeS55YXJucGtnLmNvbS9lcy10by1wcmltaXRpdmUvLS9lcy10by1wcmltaXRpdmUtMS4x
LjEudGd6IzQ1MzU1MjQ4YTg4OTc5MDM0YjY3OTJlMTliYjgxZjJiNzk3NWRkMGQiCi0gIGRlcGVu
ZGVuY2llczoKLSAgICBpcy1jYWxsYWJsZSAiXjEuMS4xIgotICAgIGlzLWRhdGUtb2JqZWN0ICJe
MS4wLjEiCi0gICAgaXMtc3ltYm9sICJeMS4wLjEiCi0KLWVzNS1leHRAXjAuMTAuNywgZXM1LWV4
dEBeMC4xMC44LCBlczUtZXh0QH4wLjEwLjExLCBlczUtZXh0QH4wLjEwLjIsIGVzNS1leHRAfjAu
MTAuNzoKLSAgdmVyc2lvbiAiMC4xMC4xMiIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnku
eWFybnBrZy5jb20vZXM1LWV4dC8tL2VzNS1leHQtMC4xMC4xMi50Z3ojYWE4NDY0MWQ0ZGI3NmI2
MmFiYmE1ZTQ1ZmQ4MDVlY2JhYjE0MDA0NyIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGVzNi1pdGVy
YXRvciAiMiIKLSAgICBlczYtc3ltYm9sICJ+My4xIgotCi1lczYtaXRlcmF0b3JAMjoKLSAgdmVy
c2lvbiAiMi4wLjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2Vz
Ni1pdGVyYXRvci8tL2VzNi1pdGVyYXRvci0yLjAuMC50Z3ojYmQ5Njg1NjdkNjE2MzVlMzNjMGI4
MDcyNzYxM2M5Y2I0YjA5NmJhYyIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGQgIl4wLjEuMSIKLSAg
ICBlczUtZXh0ICJeMC4xMC43IgotICAgIGVzNi1zeW1ib2wgIjMiCi0KLWVzNi1tYXBAXjAuMS4z
OgotICB2ZXJzaW9uICIwLjEuNCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBr
Zy5jb20vZXM2LW1hcC8tL2VzNi1tYXAtMC4xLjQudGd6I2EzNGIxNDdiZTIyNDc3M2E0ZDdkYTgw
NzI3OTRjZWZhMzYzMmI4OTciCi0gIGRlcGVuZGVuY2llczoKLSAgICBkICJ+MC4xLjEiCi0gICAg
ZXM1LWV4dCAifjAuMTAuMTEiCi0gICAgZXM2LWl0ZXJhdG9yICIyIgotICAgIGVzNi1zZXQgIn4w
LjEuMyIKLSAgICBlczYtc3ltYm9sICJ+My4xLjAiCi0gICAgZXZlbnQtZW1pdHRlciAifjAuMy40
IgotCi1lczYtc2V0QF4wLjEuNCwgZXM2LXNldEB+MC4xLjM6Ci0gIHZlcnNpb24gIjAuMS40Igot
ICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9lczYtc2V0Ly0vZXM2LXNl
dC0wLjEuNC50Z3ojOTUxNmI2NzYxYzI5NjRiOTJmZjQ3OTQ1NjIzM2EyNDdkYzcwN2NlOCIKLSAg
ZGVwZW5kZW5jaWVzOgotICAgIGQgIn4wLjEuMSIKLSAgICBlczUtZXh0ICJ+MC4xMC4xMSIKLSAg
ICBlczYtaXRlcmF0b3IgIjIiCi0gICAgZXM2LXN5bWJvbCAiMyIKLSAgICBldmVudC1lbWl0dGVy
ICJ+MC4zLjQiCi0KLWVzNi1zeW1ib2xAfjMuMSwgZXM2LXN5bWJvbEB+My4xLjAsIGVzNi1zeW1i
b2xAMzoKLSAgdmVyc2lvbiAiMy4xLjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlh
cm5wa2cuY29tL2VzNi1zeW1ib2wvLS9lczYtc3ltYm9sLTMuMS4wLnRneiM5NDQ4MWM2NTVlN2E3
Y2FkODJlYmE4MzJkOTdkNTQzMzQ5NmQ3ZmZhIgotICBkZXBlbmRlbmNpZXM6Ci0gICAgZCAifjAu
MS4xIgotICAgIGVzNS1leHQgIn4wLjEwLjExIgotCi1lczYtd2Vhay1tYXBAXjIuMC4xOgotICB2
ZXJzaW9uICIyLjAuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20v
ZXM2LXdlYWstbWFwLy0vZXM2LXdlYWstbWFwLTIuMC4xLnRneiMwZDJiYmQ4ODI3ZWI1ZmI0YmE4
Zjk3ZmJmZWE1MGQ0M2RiMjFlYTgxIgotICBkZXBlbmRlbmNpZXM6Ci0gICAgZCAiXjAuMS4xIgot
ICAgIGVzNS1leHQgIl4wLjEwLjgiCi0gICAgZXM2LWl0ZXJhdG9yICIyIgotICAgIGVzNi1zeW1i
b2wgIjMiCi0KLWVzY2FwZS1odG1sQH4xLjAuMzoKLSAgdmVyc2lvbiAiMS4wLjMiCi0gIHJlc29s
dmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2VzY2FwZS1odG1sLy0vZXNjYXBlLWh0
bWwtMS4wLjMudGd6IzAyNThlYWU0ZDNkMGMwOTc0ZGUxYzE2OTE4OGVmMDA1MWQxZDE5ODgiCi0K
LWVzY2FwZS1zdHJpbmctcmVnZXhwQF4xLjAuMiwgZXNjYXBlLXN0cmluZy1yZWdleHBAXjEuMC41
LCBlc2NhcGUtc3RyaW5nLXJlZ2V4cEAxLjAuNToKLSAgdmVyc2lvbiAiMS4wLjUiCi0gIHJlc29s
dmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2VzY2FwZS1zdHJpbmctcmVnZXhwLy0v
ZXNjYXBlLXN0cmluZy1yZWdleHAtMS4wLjUudGd6IzFiNjFjMDU2MjE5MGE4ZGZmNmFlM2JiMmNm
MDIwMGNhMTMwYjg2ZDQiCi0KLWVzY29kZWdlbkBeMS42LjEsIGVzY29kZWdlbkAxLjgueDoKLSAg
dmVyc2lvbiAiMS44LjEiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29t
L2VzY29kZWdlbi8tL2VzY29kZWdlbi0xLjguMS50Z3ojNWE1YjUzYWY0NjkzMTEwYmViYjA4Njdh
YTM0MzBkZDNiNzBhMTAxOCIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGVzcHJpbWEgIl4yLjcuMSIK
LSAgICBlc3RyYXZlcnNlICJeMS45LjEiCi0gICAgZXN1dGlscyAiXjIuMC4yIgotICAgIG9wdGlv
bmF0b3IgIl4wLjguMSIKLSAgb3B0aW9uYWxEZXBlbmRlbmNpZXM6Ci0gICAgc291cmNlLW1hcCAi
fjAuMi4wIgotCi1lc2NvcGVAXjMuNi4wOgotICB2ZXJzaW9uICIzLjYuMCIKLSAgcmVzb2x2ZWQg
Imh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZXNjb3BlLy0vZXNjb3BlLTMuNi4wLnRneiNl
MDE5NzVlODEyNzgxYTE2M2E2ZGFkZmRkODAzOThkYzY0Yzg4OWMzIgotICBkZXBlbmRlbmNpZXM6
Ci0gICAgZXM2LW1hcCAiXjAuMS4zIgotICAgIGVzNi13ZWFrLW1hcCAiXjIuMC4xIgotICAgIGVz
cmVjdXJzZSAiXjQuMS4wIgotICAgIGVzdHJhdmVyc2UgIl40LjEuMSIKLQotZXNsaW50LWNvbmZp
Zy1yZWFjdC1hcHBAXjAuMi4xOgotICB2ZXJzaW9uICIwLjIuMSIKLSAgcmVzb2x2ZWQgImh0dHBz
Oi8vcmVnaXN0cnkueWFybnBrZy5jb20vZXNsaW50LWNvbmZpZy1yZWFjdC1hcHAvLS9lc2xpbnQt
Y29uZmlnLXJlYWN0LWFwcC0wLjIuMS50Z3ojYWQ1MTBkMGQwYWUxMTU3NWQwZWFiZTU0OTNiYTZl
NjZmYjkzZTY4ZSIKLQotZXNsaW50LWltcG9ydC1yZXNvbHZlci1ub2RlQF4wLjIuMDoKLSAgdmVy
c2lvbiAiMC4yLjMiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2Vz
bGludC1pbXBvcnQtcmVzb2x2ZXItbm9kZS8tL2VzbGludC1pbXBvcnQtcmVzb2x2ZXItbm9kZS0w
LjIuMy50Z3ojNWFkZDgxMDZlOGM5MjhkYjJjYmEyMzJiY2Q5ZWZhODQ2ZTNkYTE2YyIKLSAgZGVw
ZW5kZW5jaWVzOgotICAgIGRlYnVnICJeMi4yLjAiCi0gICAgb2JqZWN0LWFzc2lnbiAiXjQuMC4x
IgotICAgIHJlc29sdmUgIl4xLjEuNiIKLQotZXNsaW50LWxvYWRlckAxLjUuMDoKLSAgdmVyc2lv
biAiMS41LjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2VzbGlu
dC1sb2FkZXIvLS9lc2xpbnQtbG9hZGVyLTEuNS4wLnRneiM4MjRiN2M5OTExYTYzM2ZjMTI2MGY4
NjNjNmVhNTcxMjI0ZDEwNDEyIgotICBkZXBlbmRlbmNpZXM6Ci0gICAgZmluZC1jYWNoZS1kaXIg
Il4wLjEuMSIKLSAgICBsb2FkZXItdXRpbHMgIl4wLjIuNyIKLSAgICBvYmplY3QtYXNzaWduICJe
NC4wLjEiCi0KLWVzbGludC1wbHVnaW4tZmxvd3R5cGVAMi4xOC4xOgotICB2ZXJzaW9uICIyLjE4
LjEiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2VzbGludC1wbHVn
aW4tZmxvd3R5cGUvLS9lc2xpbnQtcGx1Z2luLWZsb3d0eXBlLTIuMTguMS50Z3ojZjAyNzUyNGM1
OGI5MGQyN2EwNTQ0ZTc0YzA4MmZiYTA3MGFmZDljOCIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGxv
ZGFzaCAiXjQuMTUuMCIKLQotZXNsaW50LXBsdWdpbi1pbXBvcnRAMS4xMi4wOgotICB2ZXJzaW9u
ICIxLjEyLjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2VzbGlu
dC1wbHVnaW4taW1wb3J0Ly0vZXNsaW50LXBsdWdpbi1pbXBvcnQtMS4xMi4wLnRneiMxMTMwN2Vi
MDgxNzlmNDM2OTJmYTg0NWJhODU0MmU4MmZhMzMzZTIxIgotICBkZXBlbmRlbmNpZXM6Ci0gICAg
YnVpbHRpbi1tb2R1bGVzICJeMS4xLjEiCi0gICAgY29udGFpbnMtcGF0aCAiXjAuMS4wIgotICAg
IGRlYnVnICJeMi4yLjAiCi0gICAgZG9jdHJpbmUgIjEuMi54IgotICAgIGVzNi1tYXAgIl4wLjEu
MyIKLSAgICBlczYtc2V0ICJeMC4xLjQiCi0gICAgZXNsaW50LWltcG9ydC1yZXNvbHZlci1ub2Rl
ICJeMC4yLjAiCi0gICAgbG9kYXNoLmNvbmQgIl40LjMuMCIKLSAgICBsb2Rhc2guZW5kc3dpdGgg
Il40LjAuMSIKLSAgICBsb2Rhc2guZmluZCAiXjQuMy4wIgotICAgIGxvZGFzaC5maW5kaW5kZXgg
Il40LjMuMCIKLSAgICBvYmplY3QtYXNzaWduICJeNC4wLjEiCi0gICAgcGtnLWRpciAiXjEuMC4w
IgotICAgIHBrZy11cCAiXjEuMC4wIgotCi1lc2xpbnQtcGx1Z2luLWpzeC1hMTF5QDIuMi4yOgot
ICB2ZXJzaW9uICIyLjIuMiIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5j
b20vZXNsaW50LXBsdWdpbi1qc3gtYTExeS8tL2VzbGludC1wbHVnaW4tanN4LWExMXktMi4yLjIu
dGd6I2FjODkzYjRmOWVjYjc1MzRiYzAzNzNmZjZhNDczODg4MzVkM2E4NTkiCi0gIGRlcGVuZGVu
Y2llczoKLSAgICBkYW1lcmF1LWxldmVuc2h0ZWluICJeMS4wLjAiCi0gICAganN4LWFzdC11dGls
cyAiXjEuMC4wIgotICAgIG9iamVjdC1hc3NpZ24gIl40LjAuMSIKLQotZXNsaW50LXBsdWdpbi1y
ZWFjdEA2LjMuMDoKLSAgdmVyc2lvbiAiNi4zLjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lz
dHJ5Lnlhcm5wa2cuY29tL2VzbGludC1wbHVnaW4tcmVhY3QvLS9lc2xpbnQtcGx1Z2luLXJlYWN0
LTYuMy4wLnRneiNmYWMzNTA0YTAyOTE3ZmM4YjE1ZjdmMjg1MTQwNThjZmZkZTljYjc2IgotICBk
ZXBlbmRlbmNpZXM6Ci0gICAgZG9jdHJpbmUgIl4xLjIuMiIKLSAgICBqc3gtYXN0LXV0aWxzICJe
MS4zLjEiCi0KLWVzbGludEAzLjUuMDoKLSAgdmVyc2lvbiAiMy41LjAiCi0gIHJlc29sdmVkICJo
dHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2VzbGludC8tL2VzbGludC0zLjUuMC50Z3ojMjJm
YzlmNzgwZWE1YmNhMTMwNmZhYjJiNmQzMzM2YjBmYTYyYzc1NCIKLSAgZGVwZW5kZW5jaWVzOgot
ICAgIGNoYWxrICJeMS4xLjMiCi0gICAgY29uY2F0LXN0cmVhbSAiXjEuNC42IgotICAgIGRlYnVn
ICJeMi4xLjEiCi0gICAgZG9jdHJpbmUgIl4xLjIuMiIKLSAgICBlc2NvcGUgIl4zLjYuMCIKLSAg
ICBlc3ByZWUgIl4zLjEuNiIKLSAgICBlc3RyYXZlcnNlICJeNC4yLjAiCi0gICAgZXN1dGlscyAi
XjIuMC4yIgotICAgIGZpbGUtZW50cnktY2FjaGUgIl4yLjAuMCIKLSAgICBnbG9iICJeNy4wLjMi
Ci0gICAgZ2xvYmFscyAiXjkuMi4wIgotICAgIGlnbm9yZSAiXjMuMS41IgotICAgIGltdXJtdXJo
YXNoICJeMC4xLjQiCi0gICAgaW5xdWlyZXIgIl4wLjEyLjAiCi0gICAgaXMtbXktanNvbi12YWxp
ZCAiXjIuMTAuMCIKLSAgICBpcy1yZXNvbHZhYmxlICJeMS4wLjAiCi0gICAganMteWFtbCAiXjMu
NS4xIgotICAgIGpzb24tc3RhYmxlLXN0cmluZ2lmeSAiXjEuMC4wIgotICAgIGxldm4gIl4wLjMu
MCIKLSAgICBsb2Rhc2ggIl40LjAuMCIKLSAgICBta2RpcnAgIl4wLjUuMCIKLSAgICBuYXR1cmFs
LWNvbXBhcmUgIl4xLjQuMCIKLSAgICBvcHRpb25hdG9yICJeMC44LjEiCi0gICAgcGF0aC1pcy1p
bnNpZGUgIl4xLjAuMSIKLSAgICBwbHVyYWxpemUgIl4xLjIuMSIKLSAgICBwcm9ncmVzcyAiXjEu
MS44IgotICAgIHJlcXVpcmUtdW5jYWNoZWQgIl4xLjAuMiIKLSAgICBzaGVsbGpzICJeMC42LjAi
Ci0gICAgc3RyaXAtYm9tICJeMy4wLjAiCi0gICAgc3RyaXAtanNvbi1jb21tZW50cyAifjEuMC4x
IgotICAgIHRhYmxlICJeMy43LjgiCi0gICAgdGV4dC10YWJsZSAifjAuMi4wIgotICAgIHVzZXIt
aG9tZSAiXjIuMC4wIgotCi1lc3ByZWVAXjMuMS42OgotICB2ZXJzaW9uICIzLjMuMiIKLSAgcmVz
b2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZXNwcmVlLy0vZXNwcmVlLTMuMy4y
LnRneiNkYmYzZmFkZWI0ZWNiNGQ0Nzc4MzAzZTUwMTAzYjNkMzZjODhiODljIgotICBkZXBlbmRl
bmNpZXM6Ci0gICAgYWNvcm4gIl40LjAuMSIKLSAgICBhY29ybi1qc3ggIl4zLjAuMCIKLQotZXNw
cmltYUBeMi42LjAsIGVzcHJpbWFAXjIuNy4xLCBlc3ByaW1hQH4yLjcuMCwgZXNwcmltYUAyLjcu
eDoKLSAgdmVyc2lvbiAiMi43LjMiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5w
a2cuY29tL2VzcHJpbWEvLS9lc3ByaW1hLTIuNy4zLnRneiM5NmUzYjcwZDU3NzlmNmFkNDljZDAz
MjY3M2QxYzMxMjc2N2JhNTgxIgotCi1lc3JlY3Vyc2VAXjQuMS4wOgotICB2ZXJzaW9uICI0LjEu
MCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZXNyZWN1cnNlLy0v
ZXNyZWN1cnNlLTQuMS4wLnRneiM0NzEzYjY1MzZhZGY3ZjJhYzRmMzI3ZDU1OWU3NzU2YmZmNjQ4
MjIwIgotICBkZXBlbmRlbmNpZXM6Ci0gICAgZXN0cmF2ZXJzZSAifjQuMS4wIgotICAgIG9iamVj
dC1hc3NpZ24gIl40LjAuMSIKLQotZXN0cmF2ZXJzZUBeMS45LjE6Ci0gIHZlcnNpb24gIjEuOS4z
IgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9lc3RyYXZlcnNlLy0v
ZXN0cmF2ZXJzZS0xLjkuMy50Z3ojYWY2N2YyZGM5MjI1ODI0MTU5NTA5MjYwOTFhNDAwNWQyOWM5
YmI0NCIKLQotZXN0cmF2ZXJzZUBeNC4xLjEsIGVzdHJhdmVyc2VAXjQuMi4wOgotICB2ZXJzaW9u
ICI0LjIuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZXN0cmF2
ZXJzZS8tL2VzdHJhdmVyc2UtNC4yLjAudGd6IzBkZWUzZmVkMzFmY2Q0Njk2MThjZTczNDIwOTlm
YzFhZmEwYmRiMTMiCi0KLWVzdHJhdmVyc2VAfjQuMS4wOgotICB2ZXJzaW9uICI0LjEuMSIKLSAg
cmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZXN0cmF2ZXJzZS8tL2VzdHJh
dmVyc2UtNC4xLjEudGd6I2Y2Y2FjYTcyODkzM2E4NTBlZjkwNjYxZDBlMTc5ODJiYTQ3MTExYTIi
Ci0KLWVzdXRpbHNAXjIuMC4wLCBlc3V0aWxzQF4yLjAuMjoKLSAgdmVyc2lvbiAiMi4wLjIiCi0g
IHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2VzdXRpbHMvLS9lc3V0aWxz
LTIuMC4yLnRneiMwYWJmNGYxY2FhNWJjYjFmN2E5ZDhhY2M2ZGVhNGZhYWEwNGJhYzliIgotCi1l
dGFnQH4xLjcuMDoKLSAgdmVyc2lvbiAiMS43LjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lz
dHJ5Lnlhcm5wa2cuY29tL2V0YWcvLS9ldGFnLTEuNy4wLnRneiMwM2QzMGI1ZjY3ZGQ2ZTYzMmQy
OTQ1ZDMwZDY2NTI3MzFhMzRkNWQ4IgotCi1ldmVudC1lbWl0dGVyQH4wLjMuNDoKLSAgdmVyc2lv
biAiMC4zLjQiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2V2ZW50
LWVtaXR0ZXIvLS9ldmVudC1lbWl0dGVyLTAuMy40LnRneiM4ZDYzZGRmYjRjZmUxZmFlM2IzMmNh
MjY1YzRjNzIwMjIyMDgwYmI1IgotICBkZXBlbmRlbmNpZXM6Ci0gICAgZCAifjAuMS4xIgotICAg
IGVzNS1leHQgIn4wLjEwLjciCi0KLWV2ZW50ZW1pdHRlcjNAMS54Lng6Ci0gIHZlcnNpb24gIjEu
Mi4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9ldmVudGVtaXR0
ZXIzLy0vZXZlbnRlbWl0dGVyMy0xLjIuMC50Z3ojMWM4Njk5MWQ4MTZhZDFlNTA0NzUwZTczODc0
MjI0ZWNmM2JlYzUwOCIKLQotZXZlbnRzQF4xLjAuMDoKLSAgdmVyc2lvbiAiMS4xLjEiCi0gIHJl
c29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2V2ZW50cy8tL2V2ZW50cy0xLjEu
MS50Z3ojOWViZGI3NjM1YWQwOTljNzBkY2M0YzJhMWY1MDA0Mjg4ZThiZDkyNCIKLQotZXZlbnRz
b3VyY2VAXjAuMS4zLCBldmVudHNvdXJjZUB+MC4xLjY6Ci0gIHZlcnNpb24gIjAuMS42IgotICBy
ZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9ldmVudHNvdXJjZS8tL2V2ZW50
c291cmNlLTAuMS42LnRneiMwYWNlZGU4NDllZDdkZDFjY2MzMmM4MTFiYjExYjk0NGQ0ZjI5MjMy
IgotICBkZXBlbmRlbmNpZXM6Ci0gICAgb3JpZ2luYWwgIj49MC4wLjUiCi0KLWV4ZWMtc2hAXjAu
Mi4wOgotICB2ZXJzaW9uICIwLjIuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFy
bnBrZy5jb20vZXhlYy1zaC8tL2V4ZWMtc2gtMC4yLjAudGd6IzE0Zjc1ZGUzZjIwZDI4NmVmOTMz
MDk5YjJjZTUwYTkwMzU5Y2VmMTAiCi0gIGRlcGVuZGVuY2llczoKLSAgICBtZXJnZSAiXjEuMS4z
IgotCi1leGl0LWhvb2tAXjEuMC4wOgotICB2ZXJzaW9uICIxLjEuMSIKLSAgcmVzb2x2ZWQgImh0
dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZXhpdC1ob29rLy0vZXhpdC1ob29rLTEuMS4xLnRn
eiNmMDVjYTIzM2I0OGMwNWQ1NGZmZjA3NzY1ZGY4NTA3ZTk1YzAyZmY4IgotCi1leHBhbmQtYnJh
Y2tldHNAXjAuMS40OgotICB2ZXJzaW9uICIwLjEuNSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVn
aXN0cnkueWFybnBrZy5jb20vZXhwYW5kLWJyYWNrZXRzLy0vZXhwYW5kLWJyYWNrZXRzLTAuMS41
LnRneiNkZjA3Mjg0ZTM0MmE4MDdjZDczM2FjNWFmNzI0MTFlNTgxZDExNzdiIgotICBkZXBlbmRl
bmNpZXM6Ci0gICAgaXMtcG9zaXgtYnJhY2tldCAiXjAuMS4wIgotCi1leHBhbmQtcmFuZ2VAXjEu
OC4xOgotICB2ZXJzaW9uICIxLjguMiIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFy
bnBrZy5jb20vZXhwYW5kLXJhbmdlLy0vZXhwYW5kLXJhbmdlLTEuOC4yLnRneiNhMjk5ZWZmZDMz
NWZlMjcyMWViYWU4ZTI1N2VjNzk2NDRmYzg1MzM3IgotICBkZXBlbmRlbmNpZXM6Ci0gICAgZmls
bC1yYW5nZSAiXjIuMS4wIgotCi1leHByZXNzQF40LjEzLjM6Ci0gIHZlcnNpb24gIjQuMTQuMCIK
LSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZXhwcmVzcy8tL2V4cHJl
c3MtNC4xNC4wLnRneiNjMWVlM2Y0MmNkYzg5MWZiM2RjNjUwYTg5MjJkNTFlYzg0N2QwZDY2Igot
ICBkZXBlbmRlbmNpZXM6Ci0gICAgYWNjZXB0cyAifjEuMy4zIgotICAgIGFycmF5LWZsYXR0ZW4g
IjEuMS4xIgotICAgIGNvbnRlbnQtZGlzcG9zaXRpb24gIjAuNS4xIgotICAgIGNvbnRlbnQtdHlw
ZSAifjEuMC4yIgotICAgIGNvb2tpZSAiMC4zLjEiCi0gICAgY29va2llLXNpZ25hdHVyZSAiMS4w
LjYiCi0gICAgZGVidWcgIn4yLjIuMCIKLSAgICBkZXBkICJ+MS4xLjAiCi0gICAgZW5jb2RldXJs
ICJ+MS4wLjEiCi0gICAgZXNjYXBlLWh0bWwgIn4xLjAuMyIKLSAgICBldGFnICJ+MS43LjAiCi0g
ICAgZmluYWxoYW5kbGVyICIwLjUuMCIKLSAgICBmcmVzaCAiMC4zLjAiCi0gICAgbWVyZ2UtZGVz
Y3JpcHRvcnMgIjEuMC4xIgotICAgIG1ldGhvZHMgIn4xLjEuMiIKLSAgICBvbi1maW5pc2hlZCAi
fjIuMy4wIgotICAgIHBhcnNldXJsICJ+MS4zLjEiCi0gICAgcGF0aC10by1yZWdleHAgIjAuMS43
IgotICAgIHByb3h5LWFkZHIgIn4xLjEuMiIKLSAgICBxcyAiNi4yLjAiCi0gICAgcmFuZ2UtcGFy
c2VyICJ+MS4yLjAiCi0gICAgc2VuZCAiMC4xNC4xIgotICAgIHNlcnZlLXN0YXRpYyAifjEuMTEu
MSIKLSAgICB0eXBlLWlzICJ+MS42LjEzIgotICAgIHV0aWxzLW1lcmdlICIxLjAuMCIKLSAgICB2
YXJ5ICJ+MS4xLjAiCi0KLWV4dGVuZEB+My4wLjA6Ci0gIHZlcnNpb24gIjMuMC4wIgotICByZXNv
bHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9leHRlbmQvLS9leHRlbmQtMy4wLjAu
dGd6IzVhNDc0MzUzYjlmMzM1M2RkZDgxNzZkZmQzN2I5MWM4M2E0NmYxZDQiCi0KLWV4dGdsb2JA
XjAuMy4xOgotICB2ZXJzaW9uICIwLjMuMiIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnku
eWFybnBrZy5jb20vZXh0Z2xvYi8tL2V4dGdsb2ItMC4zLjIudGd6IzJlMThmZjNkMmY0OWFiMjc2
NWNlYzkwMjNmMDExZGFhOGQ4MzQ5YTEiCi0gIGRlcGVuZGVuY2llczoKLSAgICBpcy1leHRnbG9i
ICJeMS4wLjAiCi0KLWV4dHJhY3QtdGV4dC13ZWJwYWNrLXBsdWdpbkAxLjAuMToKLSAgdmVyc2lv
biAiMS4wLjEiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2V4dHJh
Y3QtdGV4dC13ZWJwYWNrLXBsdWdpbi8tL2V4dHJhY3QtdGV4dC13ZWJwYWNrLXBsdWdpbi0xLjAu
MS50Z3ojYzk1YmYzY2JhYWM0OWRjOTZmMWRjNmUwNzI1NDlmYmI2NTRjY2QyYyIKLSAgZGVwZW5k
ZW5jaWVzOgotICAgIGFzeW5jICJeMS41LjAiCi0gICAgbG9hZGVyLXV0aWxzICJeMC4yLjMiCi0g
ICAgd2VicGFjay1zb3VyY2VzICJeMC4xLjAiCi0KLWV4dHNwcmludGZAMS4wLjI6Ci0gIHZlcnNp
b24gIjEuMC4yIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9leHRz
cHJpbnRmLy0vZXh0c3ByaW50Zi0xLjAuMi50Z3ojZTEwODBlMDY1OGUzMDBiMDYyOTQ5OTBjYzcw
ZTE1MDIyMzVmZDU1MCIKLQotZmFzdC1sZXZlbnNodGVpbkB+Mi4wLjQ6Ci0gIHZlcnNpb24gIjIu
MC41IgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9mYXN0LWxldmVu
c2h0ZWluLy0vZmFzdC1sZXZlbnNodGVpbi0yLjAuNS50Z3ojYmQzMzE0NTc0NDUxOWFiMWMzNmMz
ZWU5ZjMxZjA4ZTkwNzliNjdmMiIKLQotZmFzdHBhcnNlQF4xLjEuMToKLSAgdmVyc2lvbiAiMS4x
LjEiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2Zhc3RwYXJzZS8t
L2Zhc3RwYXJzZS0xLjEuMS50Z3ojZDFlMjY0M2IzOGE5NGQ3NTgzYjQ3OTA2MGU2YzRhZmZjOTQw
NzFmOCIKLQotZmF5ZS13ZWJzb2NrZXRAXjAuMTAuMDoKLSAgdmVyc2lvbiAiMC4xMC4wIgotICBy
ZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9mYXllLXdlYnNvY2tldC8tL2Zh
eWUtd2Vic29ja2V0LTAuMTAuMC50Z3ojNGU0OTJmOGQwNGRmYjZmODkwMDM1MDdmNmVkYmYyZDUw
MWU3YzZmNCIKLSAgZGVwZW5kZW5jaWVzOgotICAgIHdlYnNvY2tldC1kcml2ZXIgIj49MC41LjEi
Ci0KLWZheWUtd2Vic29ja2V0QH4wLjExLjA6Ci0gIHZlcnNpb24gIjAuMTEuMCIKLSAgcmVzb2x2
ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZmF5ZS13ZWJzb2NrZXQvLS9mYXllLXdl
YnNvY2tldC0wLjExLjAudGd6I2Q5Y2NmMGU3ODllN2RiNzI1ZDc0YmM0ODc3ZDIzYWE0Mjk3MmFj
NTAiCi0gIGRlcGVuZGVuY2llczoKLSAgICB3ZWJzb2NrZXQtZHJpdmVyICI+PTAuNS4xIgotCi1m
YXllLXdlYnNvY2tldEB+MC43LjM6Ci0gIHZlcnNpb24gIjAuNy4zIgotICByZXNvbHZlZCAiaHR0
cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9mYXllLXdlYnNvY2tldC8tL2ZheWUtd2Vic29ja2V0
LTAuNy4zLnRneiNjYzQwNzRjN2Y0YTRkZmQwM2FmNTRkZDY1YzM1NGIxMzUxMzJjZTExIgotICBk
ZXBlbmRlbmNpZXM6Ci0gICAgd2Vic29ja2V0LWRyaXZlciAiPj0wLjMuNiIKLQotZmItd2F0Y2ht
YW5AXjEuOC4wLCBmYi13YXRjaG1hbkBeMS45LjA6Ci0gIHZlcnNpb24gIjEuOS4wIgotICByZXNv
bHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9mYi13YXRjaG1hbi8tL2ZiLXdhdGNo
bWFuLTEuOS4wLnRneiM2ZjI2OGYxZjM0N2E2YjNjODc1ZDFlODlkYTdlMWVkNzlhZGZjMGVjIgot
ICBkZXBlbmRlbmNpZXM6Ci0gICAgYnNlciAiXjEuMC4yIgotCi1mYmpzQF4wLjguNDoKLSAgdmVy
c2lvbiAiMC44LjUiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2Zi
anMvLS9mYmpzLTAuOC41LnRneiNmNjliYThhODc2MDk2Y2IxYjliZmZlNGQ3YzFlNzFjMTlkMzlk
MDA4IgotICBkZXBlbmRlbmNpZXM6Ci0gICAgY29yZS1qcyAiXjEuMC4wIgotICAgIGltbXV0YWJs
ZSAiXjMuNy42IgotICAgIGlzb21vcnBoaWMtZmV0Y2ggIl4yLjEuMSIKLSAgICBsb29zZS1lbnZp
ZnkgIl4xLjAuMCIKLSAgICBvYmplY3QtYXNzaWduICJeNC4xLjAiCi0gICAgcHJvbWlzZSAiXjcu
MS4xIgotICAgIHVhLXBhcnNlci1qcyAiXjAuNy45IgotCi1maWd1cmVzQF4xLjMuNToKLSAgdmVy
c2lvbiAiMS43LjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2Zp
Z3VyZXMvLS9maWd1cmVzLTEuNy4wLnRneiNjYmUxZTNhZmZjZjFjZDQ0YjgwY2FkZmVkMjhkYzc5
M2E5NzAxZDJlIgotICBkZXBlbmRlbmNpZXM6Ci0gICAgZXNjYXBlLXN0cmluZy1yZWdleHAgIl4x
LjAuNSIKLSAgICBvYmplY3QtYXNzaWduICJeNC4xLjAiCi0KLWZpbGUtZW50cnktY2FjaGVAXjIu
MC4wOgotICB2ZXJzaW9uICIyLjAuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFy
bnBrZy5jb20vZmlsZS1lbnRyeS1jYWNoZS8tL2ZpbGUtZW50cnktY2FjaGUtMi4wLjAudGd6I2Mz
OTI5OTBjM2U2ODQ3ODNkODM4YjhjODRhNDVkOGEwNDg0NTgzNjEiCi0gIGRlcGVuZGVuY2llczoK
LSAgICBmbGF0LWNhY2hlICJeMS4yLjEiCi0gICAgb2JqZWN0LWFzc2lnbiAiXjQuMC4xIgotCi1m
aWxlLWxvYWRlckAwLjkuMDoKLSAgdmVyc2lvbiAiMC45LjAiCi0gIHJlc29sdmVkICJodHRwczov
L3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2ZpbGUtbG9hZGVyLy0vZmlsZS1sb2FkZXItMC45LjAudGd6
IzFkMmRhZGRkNDI0Y2U2ZDFiMDdjZmUzZjc5NzMxYmVkMzYxN2FiNDIiCi0gIGRlcGVuZGVuY2ll
czoKLSAgICBsb2FkZXItdXRpbHMgIn4wLjIuNSIKLQotZmlsZW5hbWUtcmVnZXhAXjIuMC4wOgot
ICB2ZXJzaW9uICIyLjAuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5j
b20vZmlsZW5hbWUtcmVnZXgvLS9maWxlbmFtZS1yZWdleC0yLjAuMC50Z3ojOTk2ZTNlODA0Nzli
OThiOTg5N2YxNWE4YTU4YjNkMDg0ZTkyNjc3NSIKLQotZmlsZXNldEAwLjIueDoKLSAgdmVyc2lv
biAiMC4yLjEiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2ZpbGVz
ZXQvLS9maWxlc2V0LTAuMi4xLnRneiM1ODhlZjg5NzNjNjYyM2IyYTc2ZGY0NjUxMDU2OTZiOTZh
YWM4MDY3IgotICBkZXBlbmRlbmNpZXM6Ci0gICAgZ2xvYiAiNS54IgotICAgIG1pbmltYXRjaCAi
Mi54IgotCi1maWxlc2l6ZUAzLjMuMDoKLSAgdmVyc2lvbiAiMy4zLjAiCi0gIHJlc29sdmVkICJo
dHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2ZpbGVzaXplLy0vZmlsZXNpemUtMy4zLjAudGd6
IzUzMTQ5ZWEzNDYwZTNiMmUwMjQ5NjJhNTE2NDhhYTU3MmNmOTgxMjIiCi0KLWZpbGwtcmFuZ2VA
XjIuMS4wOgotICB2ZXJzaW9uICIyLjIuMyIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnku
eWFybnBrZy5jb20vZmlsbC1yYW5nZS8tL2ZpbGwtcmFuZ2UtMi4yLjMudGd6IzUwYjc3ZGZkN2U0
NjliYzc0OTI0NzA5NjM2OTlmZTdhODQ4NWE3MjMiCi0gIGRlcGVuZGVuY2llczoKLSAgICBpcy1u
dW1iZXIgIl4yLjEuMCIKLSAgICBpc29iamVjdCAiXjIuMC4wIgotICAgIHJhbmRvbWF0aWMgIl4x
LjEuMyIKLSAgICByZXBlYXQtZWxlbWVudCAiXjEuMS4yIgotICAgIHJlcGVhdC1zdHJpbmcgIl4x
LjUuMiIKLQotZmluYWxoYW5kbGVyQDAuNS4wOgotICB2ZXJzaW9uICIwLjUuMCIKLSAgcmVzb2x2
ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZmluYWxoYW5kbGVyLy0vZmluYWxoYW5k
bGVyLTAuNS4wLnRneiNlOTUwOGFiZWNlOWI2ZGJhODcxYTY5NDJhMWQ3OTExYjkxOTExYWM3Igot
ICBkZXBlbmRlbmNpZXM6Ci0gICAgZGVidWcgIn4yLjIuMCIKLSAgICBlc2NhcGUtaHRtbCAifjEu
MC4zIgotICAgIG9uLWZpbmlzaGVkICJ+Mi4zLjAiCi0gICAgc3RhdHVzZXMgIn4xLjMuMCIKLSAg
ICB1bnBpcGUgIn4xLjAuMCIKLQotZmluZC1jYWNoZS1kaXJAXjAuMS4xLCBmaW5kLWNhY2hlLWRp
ckAwLjEuMToKLSAgdmVyc2lvbiAiMC4xLjEiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5
Lnlhcm5wa2cuY29tL2ZpbmQtY2FjaGUtZGlyLy0vZmluZC1jYWNoZS1kaXItMC4xLjEudGd6I2M4
ZGVmYWU1N2M4YTUyYThhNzg0ZjllMzFjNTdjNzQyZTk5M2EwYjkiCi0gIGRlcGVuZGVuY2llczoK
LSAgICBjb21tb25kaXIgIl4xLjAuMSIKLSAgICBta2RpcnAgIl4wLjUuMSIKLSAgICBwa2ctZGly
ICJeMS4wLjAiCi0KLWZpbmQtdXBAXjEuMC4wLCBmaW5kLXVwQF4xLjEuMjoKLSAgdmVyc2lvbiAi
MS4xLjIiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2ZpbmQtdXAv
LS9maW5kLXVwLTEuMS4yLnRneiM2YjJlOTgyMmIxYTJjZTBhNjBhYjY0ZDYxMGVjY2FkNTNjYjI0
ZDBmIgotICBkZXBlbmRlbmNpZXM6Ci0gICAgcGF0aC1leGlzdHMgIl4yLjAuMCIKLSAgICBwaW5r
aWUtcHJvbWlzZSAiXjIuMC4wIgotCi1mbGF0LWNhY2hlQF4xLjIuMToKLSAgdmVyc2lvbiAiMS4y
LjEiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2ZsYXQtY2FjaGUv
LS9mbGF0LWNhY2hlLTEuMi4xLnRneiM2YzgzN2Q2MjI1YTdkZTU2NTkzMjM3NDBiMzZkNTM2MWY3
MTY5MWZmIgotICBkZXBlbmRlbmNpZXM6Ci0gICAgY2lyY3VsYXItanNvbiAiXjAuMy4wIgotICAg
IGRlbCAiXjIuMC4yIgotICAgIGdyYWNlZnVsLWZzICJeNC4xLjIiCi0gICAgd3JpdGUgIl4wLjIu
MSIKLQotZmxhdHRlbkBeMS4wLjIsIGZsYXR0ZW5AMS4wLjI6Ci0gIHZlcnNpb24gIjEuMC4yIgot
ICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9mbGF0dGVuLy0vZmxhdHRl
bi0xLjAuMi50Z3ojZGFlNDZhOWQ3OGZiZTI1MjkyMjU4Y2MxZTc4MGE0MWQ5NWMwMzc4MiIKLQot
Zm9yLWluQF4wLjEuNToKLSAgdmVyc2lvbiAiMC4xLjYiCi0gIHJlc29sdmVkICJodHRwczovL3Jl
Z2lzdHJ5Lnlhcm5wa2cuY29tL2Zvci1pbi8tL2Zvci1pbi0wLjEuNi50Z3ojYzlmOTZlODliZmFk
MThhNTQ1YWY1ZWMzZWQzNTJhMWQ5ZTViNGRjOCIKLQotZm9yLW93bkBeMC4xLjM6Ci0gIHZlcnNp
b24gIjAuMS40IgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9mb3It
b3duLy0vZm9yLW93bi0wLjEuNC50Z3ojMDE0OWI0MWEzOTA4OGM3NTE1ZjUxZWJlMWMxMzg2ZDQ1
ZjkzNTA3MiIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGZvci1pbiAiXjAuMS41IgotCi1mb3JlYWNo
QF4yLjAuNToKLSAgdmVyc2lvbiAiMi4wLjUiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5
Lnlhcm5wa2cuY29tL2ZvcmVhY2gvLS9mb3JlYWNoLTIuMC41LnRneiMwYmVlMDA1MDE4YWViMjYw
ZDBhM2FmM2FlNjU4ZGQwMTM2ZWMxYjk5IgotCi1mb3JldmVyLWFnZW50QH4wLjYuMToKLSAgdmVy
c2lvbiAiMC42LjEiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2Zv
cmV2ZXItYWdlbnQvLS9mb3JldmVyLWFnZW50LTAuNi4xLnRneiNmYmM3MWYwYzQxYWRlYjM3Zjk2
YzU3N2FkMWVkNDJkOGZkYWNjYTkxIgotCi1mb3JtLWRhdGFAfjIuMC4wOgotICB2ZXJzaW9uICIy
LjAuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZm9ybS1kYXRh
Ly0vZm9ybS1kYXRhLTIuMC4wLnRneiM2ZjBhZWJhZGNjNWRhMTZjMTNlMWVjYzExMTM3ZDg1Zjli
ODgzYjI1IgotICBkZXBlbmRlbmNpZXM6Ci0gICAgYXN5bmNraXQgIl4wLjQuMCIKLSAgICBjb21i
aW5lZC1zdHJlYW0gIl4xLjAuNSIKLSAgICBtaW1lLXR5cGVzICJeMi4xLjExIgotCi1mb3J3YXJk
ZWRAfjAuMS4wOgotICB2ZXJzaW9uICIwLjEuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0
cnkueWFybnBrZy5jb20vZm9yd2FyZGVkLy0vZm9yd2FyZGVkLTAuMS4wLnRneiMxOWVmOTg3NGM0
YWUxYzI5N2JjZjA3OGZkZTYzYTA5YjY2YTg0MzYzIgotCi1mcmVzaEAwLjMuMDoKLSAgdmVyc2lv
biAiMC4zLjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2ZyZXNo
Ly0vZnJlc2gtMC4zLjAudGd6IzY1MWY4MzhlMjI0MjRlNzU2NmRlMTYxZDgzNThjYWExOTlmODNk
NGYiCi0KLWZzLWV4dHJhQDAuMzAuMDoKLSAgdmVyc2lvbiAiMC4zMC4wIgotICByZXNvbHZlZCAi
aHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9mcy1leHRyYS8tL2ZzLWV4dHJhLTAuMzAuMC50
Z3ojZjIzM2ZmY2MwOGQ0ZGE3ZDQzMmRhYTQ0OTc3Njk4OWRiMWRmOTNmMCIKLSAgZGVwZW5kZW5j
aWVzOgotICAgIGdyYWNlZnVsLWZzICJeNC4xLjIiCi0gICAganNvbmZpbGUgIl4yLjEuMCIKLSAg
ICBrbGF3ICJeMS4wLjAiCi0gICAgcGF0aC1pcy1hYnNvbHV0ZSAiXjEuMC4wIgotICAgIHJpbXJh
ZiAiXjIuMi44IgotCi1mcy5yZWFscGF0aEBeMS4wLjA6Ci0gIHZlcnNpb24gIjEuMC4wIgotICBy
ZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9mcy5yZWFscGF0aC8tL2ZzLnJl
YWxwYXRoLTEuMC4wLnRneiMxNTA0YWQyNTIzMTU4Y2FhNDBkYjRhMjc4N2NiMDE0MTE5OTRlYTRm
IgotCi1mc2V2ZW50c0BeMS4wLjAsIGZzZXZlbnRzQDEuMC4xNDoKLSAgdmVyc2lvbiAiMS4wLjE0
IgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9mc2V2ZW50cy8tL2Zz
ZXZlbnRzLTEuMC4xNC50Z3ojNTU4ZThjYzM4NjQzZDhlZjQwZmU0NTE1ODQ4NmQwZDI1NzU4ZWVl
NCIKLSAgZGVwZW5kZW5jaWVzOgotICAgIG5hbiAiXjIuMy4wIgotICAgIG5vZGUtcHJlLWd5cCAi
XjAuNi4yOSIKLQotZnN0cmVhbS1pZ25vcmVAfjEuMC41OgotICB2ZXJzaW9uICIxLjAuNSIKLSAg
cmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZnN0cmVhbS1pZ25vcmUvLS9m
c3RyZWFtLWlnbm9yZS0xLjAuNS50Z3ojOWMzMWRhZTM0NzY3MDE4ZmUxZDI0OWIyNGRhZGE2N2Qw
OTJkYTEwNSIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGZzdHJlYW0gIl4xLjAuMCIKLSAgICBpbmhl
cml0cyAiMiIKLSAgICBtaW5pbWF0Y2ggIl4zLjAuMCIKLQotZnN0cmVhbUBeMS4wLjAsIGZzdHJl
YW1AXjEuMC4yLCBmc3RyZWFtQH4xLjAuMTA6Ci0gIHZlcnNpb24gIjEuMC4xMCIKLSAgcmVzb2x2
ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZnN0cmVhbS8tL2ZzdHJlYW0tMS4wLjEw
LnRneiM2MDRlOGE5MmZlMjZmZmQ5ZjZmYWUzMDM5OWQ0OTg0ZTFhYjIyODIyIgotICBkZXBlbmRl
bmNpZXM6Ci0gICAgZ3JhY2VmdWwtZnMgIl40LjEuMiIKLSAgICBpbmhlcml0cyAifjIuMC4wIgot
ICAgIG1rZGlycCAiPj0wLjUgMCIKLSAgICByaW1yYWYgIjIiCi0KLWZ1bmN0aW9uLWJpbmRAXjEu
MC4yLCBmdW5jdGlvbi1iaW5kQF4xLjEuMDoKLSAgdmVyc2lvbiAiMS4xLjAiCi0gIHJlc29sdmVk
ICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2Z1bmN0aW9uLWJpbmQvLS9mdW5jdGlvbi1i
aW5kLTEuMS4wLnRneiMxNjE3NjcxNGM4MDE3OThlNGU4ZjJjZjdmNzUyOTQ2N2JiNGE1NzcxIgot
Ci1nYXVnZUB+Mi42LjA6Ci0gIHZlcnNpb24gIjIuNi4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9y
ZWdpc3RyeS55YXJucGtnLmNvbS9nYXVnZS8tL2dhdWdlLTIuNi4wLnRneiNkMzUzMDFhZDE4ZTk2
OTAyYjQ3NTFkY2JiZTQwZjQyMThiOTQyYTQ2IgotICBkZXBlbmRlbmNpZXM6Ci0gICAgYXByb2Jh
ICJeMS4wLjMiCi0gICAgY29uc29sZS1jb250cm9sLXN0cmluZ3MgIl4xLjAuMCIKLSAgICBoYXMt
Y29sb3IgIl4wLjEuNyIKLSAgICBoYXMtdW5pY29kZSAiXjIuMC4wIgotICAgIG9iamVjdC1hc3Np
Z24gIl40LjEuMCIKLSAgICBzaWduYWwtZXhpdCAiXjMuMC4wIgotICAgIHN0cmluZy13aWR0aCAi
XjEuMC4xIgotICAgIHN0cmlwLWFuc2kgIl4zLjAuMSIKLSAgICB3aWRlLWFsaWduICJeMS4xLjAi
Ci0KLWdlbmVyYXRlLWZ1bmN0aW9uQF4yLjAuMDoKLSAgdmVyc2lvbiAiMi4wLjAiCi0gIHJlc29s
dmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2dlbmVyYXRlLWZ1bmN0aW9uLy0vZ2Vu
ZXJhdGUtZnVuY3Rpb24tMi4wLjAudGd6IzY4NThmZTdjMDk2OWI3ZDRlOTA5MzMzNzY0N2FjNzlm
NjBkZmJlNzQiCi0KLWdlbmVyYXRlLW9iamVjdC1wcm9wZXJ0eUBeMS4xLjA6Ci0gIHZlcnNpb24g
IjEuMi4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9nZW5lcmF0
ZS1vYmplY3QtcHJvcGVydHkvLS9nZW5lcmF0ZS1vYmplY3QtcHJvcGVydHktMS4yLjAudGd6Izlj
MGUxYzQwMzA4Y2U4MDRmNDc4MzYxOGI5MzdmYTg4Zjk5ZDUwZDAiCi0gIGRlcGVuZGVuY2llczoK
LSAgICBpcy1wcm9wZXJ0eSAiXjEuMC4wIgotCi1nZXQtY2FsbGVyLWZpbGVAXjEuMC4xOgotICB2
ZXJzaW9uICIxLjAuMiIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20v
Z2V0LWNhbGxlci1maWxlLy0vZ2V0LWNhbGxlci1maWxlLTEuMC4yLnRneiNmNzAyZTYzMTI3ZTdl
MjMxYzE2MGE4MGMxNTU0YWNiNzBkNTA0N2U1IgotCi1nZXQtc3RkaW5AXjQuMC4xOgotICB2ZXJz
aW9uICI0LjAuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZ2V0
LXN0ZGluLy0vZ2V0LXN0ZGluLTQuMC4xLnRneiNiOTY4YzZiMGEwNDM4NDMyNDkwMmU4YmYxYTVk
ZjMyNTc5YTQ1MGZlIgotCi1nZXRwYXNzQF4wLjEuMToKLSAgdmVyc2lvbiAiMC4xLjYiCi0gIHJl
c29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2dldHBhc3MvLS9nZXRwYXNzLTAu
MS42LnRneiMyODNmZmQ5ZmMxMjU2ODQwODc1MzExYzFiNjBlOGM0MDE4NzExMGU2IgotICBkZXBl
bmRlbmNpZXM6Ci0gICAgYXNzZXJ0LXBsdXMgIl4xLjAuMCIKLQotZ2xvYi1iYXNlQF4wLjMuMDoK
LSAgdmVyc2lvbiAiMC4zLjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cu
Y29tL2dsb2ItYmFzZS8tL2dsb2ItYmFzZS0wLjMuMC50Z3ojZGJiMTY0ZjYyMjFiMWMwYjFjY2Y4
MmFlYTMyOGI0OTdkZjBlYTNjNCIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGdsb2ItcGFyZW50ICJe
Mi4wLjAiCi0gICAgaXMtZ2xvYiAiXjIuMC4wIgotCi1nbG9iLXBhcmVudEBeMi4wLjA6Ci0gIHZl
cnNpb24gIjIuMC4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9n
bG9iLXBhcmVudC8tL2dsb2ItcGFyZW50LTIuMC4wLnRneiM4MTM4M2Q3MmRiMDU0ZmNjY2Y1MzM2
ZGFhOTAyZjE4MmY2ZWRiYjI4IgotICBkZXBlbmRlbmNpZXM6Ci0gICAgaXMtZ2xvYiAiXjIuMC4w
IgotCi1nbG9iQF41LjAuMTUsIGdsb2JANS54OgotICB2ZXJzaW9uICI1LjAuMTUiCi0gIHJlc29s
dmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2dsb2IvLS9nbG9iLTUuMC4xNS50Z3oj
MWJjOTM2YjllMDJmNGE2MDNmY2MyMjJlY2Y3NjMzZDMwYjhiOTNiMSIKLSAgZGVwZW5kZW5jaWVz
OgotICAgIGluZmxpZ2h0ICJeMS4wLjQiCi0gICAgaW5oZXJpdHMgIjIiCi0gICAgbWluaW1hdGNo
ICIyIHx8IDMiCi0gICAgb25jZSAiXjEuMy4wIgotICAgIHBhdGgtaXMtYWJzb2x1dGUgIl4xLjAu
MCIKLQotZ2xvYkBeNy4wLjMsIGdsb2JAXjcuMC41OgotICB2ZXJzaW9uICI3LjEuMSIKLSAgcmVz
b2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZ2xvYi8tL2dsb2ItNy4xLjEudGd6
IzgwNTIxMWRmMDRmYWFmMWM2M2EzNjAwMzA2Y2RmNWFkZTUwYjJlYzgiCi0gIGRlcGVuZGVuY2ll
czoKLSAgICBmcy5yZWFscGF0aCAiXjEuMC4wIgotICAgIGluZmxpZ2h0ICJeMS4wLjQiCi0gICAg
aW5oZXJpdHMgIjIiCi0gICAgbWluaW1hdGNoICJeMy4wLjIiCi0gICAgb25jZSAiXjEuMy4wIgot
ICAgIHBhdGgtaXMtYWJzb2x1dGUgIl4xLjAuMCIKLQotZ2xvYmFsc0BeOC4zLjA6Ci0gIHZlcnNp
b24gIjguMTguMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZ2xv
YmFscy8tL2dsb2JhbHMtOC4xOC4wLnRneiM5M2Q0YTYyYmRjYWMzOGNmYWZhZmM0N2Q2YjAzNDc2
OGNiMGZmY2I0IgotCi1nbG9iYWxzQF45LjIuMDoKLSAgdmVyc2lvbiAiOS4xMi4wIgotICByZXNv
bHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9nbG9iYWxzLy0vZ2xvYmFscy05LjEy
LjAudGd6Izk5MmNlOTA4MjhjM2E1NWZhOGYxNmZhZGExNzdhZGI2NDY2NGNmOWQiCi0KLWdsb2Ji
eUBeNS4wLjA6Ci0gIHZlcnNpb24gIjUuMC4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3Ry
eS55YXJucGtnLmNvbS9nbG9iYnkvLS9nbG9iYnktNS4wLjAudGd6I2ViZDg0NjY3Y2EwZGJiMzMw
Yjk5YmNmYzY4ZWFjMmJjNTQzNzBlMGQiCi0gIGRlcGVuZGVuY2llczoKLSAgICBhcnJheS11bmlv
biAiXjEuMC4xIgotICAgIGFycmlmeSAiXjEuMC4wIgotICAgIGdsb2IgIl43LjAuMyIKLSAgICBv
YmplY3QtYXNzaWduICJeNC4wLjEiCi0gICAgcGlmeSAiXjIuMC4wIgotICAgIHBpbmtpZS1wcm9t
aXNlICJeMi4wLjAiCi0KLWdyYWNlZnVsLWZzQF40LjEuMiwgZ3JhY2VmdWwtZnNAXjQuMS42Ogot
ICB2ZXJzaW9uICI0LjEuOSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5j
b20vZ3JhY2VmdWwtZnMvLS9ncmFjZWZ1bC1mcy00LjEuOS50Z3ojYmFhY2JhMzdkMTlkMTFmOWQx
NDZkMzU3OGJjOTk5NThjMzc4N2UyOSIKLQotImdyYWNlZnVsLXJlYWRsaW5rQD49IDEuMC4wIjoK
LSAgdmVyc2lvbiAiMS4wLjEiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cu
Y29tL2dyYWNlZnVsLXJlYWRsaW5rLy0vZ3JhY2VmdWwtcmVhZGxpbmstMS4wLjEudGd6IzRjYWZh
ZDc2YmM2MmYwMmZhMDM5YjJmOTRlOWEzZGQzYTM5MWE3MjUiCi0KLWdyb3dseUBeMS4yLjA6Ci0g
IHZlcnNpb24gIjEuMy4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNv
bS9ncm93bHkvLS9ncm93bHktMS4zLjAudGd6I2YxMDc0OGNiZTc2YWY5NjRiN2M5NmM5M2M2YmNj
MjhhZjEyMGMwODEiCi0KLWd6aXAtc2l6ZUAzLjAuMDoKLSAgdmVyc2lvbiAiMy4wLjAiCi0gIHJl
c29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2d6aXAtc2l6ZS8tL2d6aXAtc2l6
ZS0zLjAuMC50Z3ojNTQ2MTg4ZTliZGMzMzdmNjczNzcyZjgxNjYwNDY0YjM4OWRjZTUyMCIKLSAg
ZGVwZW5kZW5jaWVzOgotICAgIGR1cGxleGVyICJeMC4xLjEiCi0KLWhhbmRsZWJhcnNAXjQuMC4x
LCBoYW5kbGViYXJzQF40LjAuMzoKLSAgdmVyc2lvbiAiNC4wLjUiCi0gIHJlc29sdmVkICJodHRw
czovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2hhbmRsZWJhcnMvLS9oYW5kbGViYXJzLTQuMC41LnRn
eiM5MmM2ZWQ2YmIxNjQxMTBjNTBkNGQ4ZDBmYmRkYzcwODA2YzZmOGU3IgotICBkZXBlbmRlbmNp
ZXM6Ci0gICAgYXN5bmMgIl4xLjQuMCIKLSAgICBvcHRpbWlzdCAiXjAuNi4xIgotICAgIHNvdXJj
ZS1tYXAgIl4wLjQuNCIKLSAgb3B0aW9uYWxEZXBlbmRlbmNpZXM6Ci0gICAgdWdsaWZ5LWpzICJe
Mi42IgotCi1oYXItdmFsaWRhdG9yQH4yLjAuNjoKLSAgdmVyc2lvbiAiMi4wLjYiCi0gIHJlc29s
dmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2hhci12YWxpZGF0b3IvLS9oYXItdmFs
aWRhdG9yLTIuMC42LnRneiNjZGNiYzA4MTg4MjY1YWQxMTliNmE1YTdjOGFiNzBlZWNmYjVkMjdk
IgotICBkZXBlbmRlbmNpZXM6Ci0gICAgY2hhbGsgIl4xLjEuMSIKLSAgICBjb21tYW5kZXIgIl4y
LjkuMCIKLSAgICBpcy1teS1qc29uLXZhbGlkICJeMi4xMi40IgotICAgIHBpbmtpZS1wcm9taXNl
ICJeMi4wLjAiCi0KLWhhcy1hbnNpQF4yLjAuMDoKLSAgdmVyc2lvbiAiMi4wLjAiCi0gIHJlc29s
dmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2hhcy1hbnNpLy0vaGFzLWFuc2ktMi4w
LjAudGd6IzM0ZjUwNDljZTFlY2RmMmIwNjQ5YWYzZWYyNGU0NWVkMzU0MTZkOTEiCi0gIGRlcGVu
ZGVuY2llczoKLSAgICBhbnNpLXJlZ2V4ICJeMi4wLjAiCi0KLWhhcy1jb2xvckBeMC4xLjc6Ci0g
IHZlcnNpb24gIjAuMS43IgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNv
bS9oYXMtY29sb3IvLS9oYXMtY29sb3ItMC4xLjcudGd6IzY3MTQ0YTUyNjBjMzRmYzNjY2E2Nzdk
MDQxZGFmNTJmZTdiNzhiMmYiCi0KLWhhcy1mbGFnQF4xLjAuMDoKLSAgdmVyc2lvbiAiMS4wLjAi
Ci0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2hhcy1mbGFnLy0vaGFz
LWZsYWctMS4wLjAudGd6IzlkOWU3OTMxNjVjZTAxN2EwMGYwMDQxOGM0M2Y5NDJhN2IxZDExZmEi
Ci0KLWhhcy11bmljb2RlQF4yLjAuMDoKLSAgdmVyc2lvbiAiMi4wLjEiCi0gIHJlc29sdmVkICJo
dHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2hhcy11bmljb2RlLy0vaGFzLXVuaWNvZGUtMi4w
LjEudGd6I2UwZTZmZTZhMjhjZjUxMTM4ODU1ZTA4NmQxNjkxZTc3MWRlMmE4YjkiCi0KLWhhc0Be
MS4wLjE6Ci0gIHZlcnNpb24gIjEuMC4xIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55
YXJucGtnLmNvbS9oYXMvLS9oYXMtMS4wLjEudGd6Izg0NjE3MzNmNTM4YjA4MzdjOTM2MWUzOWE5
YWI5ZTk3MDRkYzJmMjgiCi0gIGRlcGVuZGVuY2llczoKLSAgICBmdW5jdGlvbi1iaW5kICJeMS4w
LjIiCi0KLWhhd2tAfjMuMS4zOgotICB2ZXJzaW9uICIzLjEuMyIKLSAgcmVzb2x2ZWQgImh0dHBz
Oi8vcmVnaXN0cnkueWFybnBrZy5jb20vaGF3ay8tL2hhd2stMy4xLjMudGd6IzA3ODQ0NGJkN2Mx
NjQwYjBmZTU0MGQyYzliNzNkNTk2NzhlOGUxYzQiCi0gIGRlcGVuZGVuY2llczoKLSAgICBib29t
ICIyLngueCIKLSAgICBjcnlwdGlsZXMgIjIueC54IgotICAgIGhvZWsgIjIueC54IgotICAgIHNu
dHAgIjEueC54IgotCi1oZUAxLjEueDoKLSAgdmVyc2lvbiAiMS4xLjAiCi0gIHJlc29sdmVkICJo
dHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2hlLy0vaGUtMS4xLjAudGd6IzI5MzE5ZDQ5YmVl
YzEzYTliMWYzYzRmOWIyYTZkZGU0ODU5YmIyYTciCi0KLWhlYWRlci1jYXNlQF4xLjAuMDoKLSAg
dmVyc2lvbiAiMS4wLjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29t
L2hlYWRlci1jYXNlLy0vaGVhZGVyLWNhc2UtMS4wLjAudGd6I2Q5ZTMzNTkwOTUwNWQ1NjA1MWVj
MTZhMDEwNjgyMTg4OWU5MTA3ODEiCi0gIGRlcGVuZGVuY2llczoKLSAgICBuby1jYXNlICJeMi4y
LjAiCi0gICAgdXBwZXItY2FzZSAiXjEuMS4zIgotCi1ob2VrQDIueC54OgotICB2ZXJzaW9uICIy
LjE2LjMiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2hvZWsvLS9o
b2VrLTIuMTYuMy50Z3ojMjBiYjc0MDNkM2NlYTM5OGU5MWRjNDcxMGE4ZmYxYjgyNzRhMjVlZCIK
LQotaG9pc3Qtbm9uLXJlYWN0LXN0YXRpY3NAXjEuMC4zOgotICB2ZXJzaW9uICIxLjIuMCIKLSAg
cmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vaG9pc3Qtbm9uLXJlYWN0LXN0
YXRpY3MvLS9ob2lzdC1ub24tcmVhY3Qtc3RhdGljcy0xLjIuMC50Z3ojYWE0NDhjZjA5ODZkNTVj
YzQwNzczYjE3MTc0YjdkZDA2NmNiN2NmYiIKLQotaG9tZS1vci10bXBAXjEuMC4wOgotICB2ZXJz
aW9uICIxLjAuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vaG9t
ZS1vci10bXAvLS9ob21lLW9yLXRtcC0xLjAuMC50Z3ojNGI5ZjFlNDA4MDBjM2U1MGM2YzI3Zjc4
MTY3NmFmY2NlNzFmMzk4NSIKLSAgZGVwZW5kZW5jaWVzOgotICAgIG9zLXRtcGRpciAiXjEuMC4x
IgotICAgIHVzZXItaG9tZSAiXjEuMS4xIgotCi1ob3N0ZWQtZ2l0LWluZm9AXjIuMS40OgotICB2
ZXJzaW9uICIyLjEuNSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20v
aG9zdGVkLWdpdC1pbmZvLy0vaG9zdGVkLWdpdC1pbmZvLTIuMS41LnRneiMwYmE4MWQ5MGRhMmUy
NWFiMzRhMzMyZTZlYzc3OTM2ZTE1OTgxMThiIgotCi1odG1sLWNvbW1lbnQtcmVnZXhAXjEuMS4w
OgotICB2ZXJzaW9uICIxLjEuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBr
Zy5jb20vaHRtbC1jb21tZW50LXJlZ2V4Ly0vaHRtbC1jb21tZW50LXJlZ2V4LTEuMS4xLnRneiM2
NjhiOTM3NzZlYWFlNTVlYmRlOGYzYWQ0NjRiMzA3YTQ5NjM2MjVlIgotCi1odG1sLWVudGl0aWVz
QDEuMi4wOgotICB2ZXJzaW9uICIxLjIuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnku
eWFybnBrZy5jb20vaHRtbC1lbnRpdGllcy8tL2h0bWwtZW50aXRpZXMtMS4yLjAudGd6IzQxOTQ4
Y2FmODVjZTgyZmVkMzZlNGU2YTBlZDM3MWE2NjY0Mzc5ZTIiCi0KLWh0bWwtbWluaWZpZXJAXjIu
MS42OgotICB2ZXJzaW9uICIyLjEuNyIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFy
bnBrZy5jb20vaHRtbC1taW5pZmllci8tL2h0bWwtbWluaWZpZXItMi4xLjcudGd6IzkwNTFkNmZj
YmJjZjIxNGVkMzA3ZTFhZDc0ZjQzMmJiOWFkNjU1Y2MiCi0gIGRlcGVuZGVuY2llczoKLSAgICBj
aGFuZ2UtY2FzZSAiMy4wLngiCi0gICAgY2xlYW4tY3NzICIzLjQueCIKLSAgICBjb21tYW5kZXIg
IjIuOS54IgotICAgIGhlICIxLjEueCIKLSAgICBuY25hbWUgIjEuMC54IgotICAgIHJlbGF0ZXVy
bCAiMC4yLngiCi0gICAgdWdsaWZ5LWpzICIyLjYueCIKLQotaHRtbC13ZWJwYWNrLXBsdWdpbkAy
LjIyLjA6Ci0gIHZlcnNpb24gIjIuMjIuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnku
eWFybnBrZy5jb20vaHRtbC13ZWJwYWNrLXBsdWdpbi8tL2h0bWwtd2VicGFjay1wbHVnaW4tMi4y
Mi4wLnRneiM3ZWIwMmZmOTAzOWRhODRlNWJhNzEwMDRkNDY5M2MwNGI5MmQyOTA1IgotICBkZXBl
bmRlbmNpZXM6Ci0gICAgYmx1ZWJpcmQgIl4zLjQuMSIKLSAgICBodG1sLW1pbmlmaWVyICJeMi4x
LjYiCi0gICAgbG9hZGVyLXV0aWxzICJeMC4yLjE1IgotICAgIGxvZGFzaCAiXjQuMTMuMSIKLSAg
ICBwcmV0dHktZXJyb3IgIl4yLjAuMCIKLSAgICB0b3Bvc29ydCAiXjEuMC4wIgotCi1odG1scGFy
c2VyMkB+My4zLjA6Ci0gIHZlcnNpb24gIjMuMy4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdp
c3RyeS55YXJucGtnLmNvbS9odG1scGFyc2VyMi8tL2h0bWxwYXJzZXIyLTMuMy4wLnRneiNjYzcw
ZDA1YTU5ZjY1NDJlNDNmMGU2ODVjOTgyZTE0YzkyNGE5ZWZlIgotICBkZXBlbmRlbmNpZXM6Ci0g
ICAgZG9tZWxlbWVudHR5cGUgIjEiCi0gICAgZG9taGFuZGxlciAiMi4xIgotICAgIGRvbXV0aWxz
ICIxLjEiCi0gICAgcmVhZGFibGUtc3RyZWFtICIxLjAiCi0KLWh0bWxwYXJzZXIyQH4zLjguMToK
LSAgdmVyc2lvbiAiMy44LjMiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cu
Y29tL2h0bWxwYXJzZXIyLy0vaHRtbHBhcnNlcjItMy44LjMudGd6Izk5NmMyOGIxOTE1MTZhOGJl
ODY1MDFhN2Q3OTc1N2U1YzcwYzEwNjgiCi0gIGRlcGVuZGVuY2llczoKLSAgICBkb21lbGVtZW50
dHlwZSAiMSIKLSAgICBkb21oYW5kbGVyICIyLjMiCi0gICAgZG9tdXRpbHMgIjEuNSIKLSAgICBl
bnRpdGllcyAiMS4wIgotICAgIHJlYWRhYmxlLXN0cmVhbSAiMS4xIgotCi1odHRwLWJyb3dzZXJp
ZnlAXjEuMy4yOgotICB2ZXJzaW9uICIxLjcuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0
cnkueWFybnBrZy5jb20vaHR0cC1icm93c2VyaWZ5Ly0vaHR0cC1icm93c2VyaWZ5LTEuNy4wLnRn
eiMzMzc5NWFkZTcyZGY4OGFjZmJmZDM2NzczY2VmZWRhNzY0NzM1YjIwIgotICBkZXBlbmRlbmNp
ZXM6Ci0gICAgQmFzZTY0ICJ+MC4yLjAiCi0gICAgaW5oZXJpdHMgIn4yLjAuMSIKLQotaHR0cC1l
cnJvcnNAfjEuNS4wOgotICB2ZXJzaW9uICIxLjUuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVn
aXN0cnkueWFybnBrZy5jb20vaHR0cC1lcnJvcnMvLS9odHRwLWVycm9ycy0xLjUuMC50Z3ojYjFj
YjNkODI2MGZkOGUyMzg2Y2FkMzE4OTA0NTk0MzM3MmQ0ODIxMSIKLSAgZGVwZW5kZW5jaWVzOgot
ICAgIGluaGVyaXRzICIyLjAuMSIKLSAgICBzZXRwcm90b3R5cGVvZiAiMS4wLjEiCi0gICAgc3Rh
dHVzZXMgIj49IDEuMy4wIDwgMiIKLQotaHR0cC1wcm94eS1taWRkbGV3YXJlQH4wLjE3LjE6Ci0g
IHZlcnNpb24gIjAuMTcuMiIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5j
b20vaHR0cC1wcm94eS1taWRkbGV3YXJlLy0vaHR0cC1wcm94eS1taWRkbGV3YXJlLTAuMTcuMi50
Z3ojNTcyZDUxN2E2ZDJmYjEwNjNhNDY5ZGUyOTRlZWQ5NjA2NjM1MjAwNyIKLSAgZGVwZW5kZW5j
aWVzOgotICAgIGh0dHAtcHJveHkgIl4xLjE1LjEiCi0gICAgaXMtZ2xvYiAiXjMuMC4wIgotICAg
IGxvZGFzaCAiXjQuMTYuMiIKLSAgICBtaWNyb21hdGNoICJeMi4zLjExIgotCi1odHRwLXByb3h5
LW1pZGRsZXdhcmVAMC4xNy4xOgotICB2ZXJzaW9uICIwLjE3LjEiCi0gIHJlc29sdmVkICJodHRw
czovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2h0dHAtcHJveHktbWlkZGxld2FyZS8tL2h0dHAtcHJv
eHktbWlkZGxld2FyZS0wLjE3LjEudGd6I2UyYjg0N2FhOTk2MmQ4Y2UzMTJjYzgyYTNmNDQzZDUw
MzljZjE5N2EiCi0gIGRlcGVuZGVuY2llczoKLSAgICBodHRwLXByb3h5ICJeMS4xNC4wIgotICAg
IGlzLWdsb2IgIl4yLjAuMSIKLSAgICBsb2Rhc2ggIl40LjE0LjIiCi0gICAgbWljcm9tYXRjaCAi
XjIuMy4xMSIKLQotaHR0cC1wcm94eUBeMS4xNC4wLCBodHRwLXByb3h5QF4xLjE1LjE6Ci0gIHZl
cnNpb24gIjEuMTUuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20v
aHR0cC1wcm94eS8tL2h0dHAtcHJveHktMS4xNS4xLnRneiM5MWE2MDg4MTcyZTc5YmMwZTgyMWQ1
ZWIwNGNlNzAyZjMyNDQ2MzkzIgotICBkZXBlbmRlbmNpZXM6Ci0gICAgZXZlbnRlbWl0dGVyMyAi
MS54LngiCi0gICAgcmVxdWlyZXMtcG9ydCAiMS54LngiCi0KLWh0dHAtc2lnbmF0dXJlQH4xLjEu
MDoKLSAgdmVyc2lvbiAiMS4xLjEiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5w
a2cuY29tL2h0dHAtc2lnbmF0dXJlLy0vaHR0cC1zaWduYXR1cmUtMS4xLjEudGd6I2RmNzJlMjY3
MDY2Y2QwYWM2N2ZiNzZhZGY4ZTEzNGE4ZmJjZjkxYmYiCi0gIGRlcGVuZGVuY2llczoKLSAgICBh
c3NlcnQtcGx1cyAiXjAuMi4wIgotICAgIGpzcHJpbSAiXjEuMi4yIgotICAgIHNzaHBrICJeMS43
LjAiCi0KLWh0dHBzLWJyb3dzZXJpZnlAMC4wLjA6Ci0gIHZlcnNpb24gIjAuMC4wIgotICByZXNv
bHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9odHRwcy1icm93c2VyaWZ5Ly0vaHR0
cHMtYnJvd3NlcmlmeS0wLjAuMC50Z3ojYjNmZmRmZTczNGIyYTNkNGE5ZWZkNThlODY1NGM5MWZj
ZTg2ZWFmZCIKLQotaWNvbnYtbGl0ZUBeMC40LjEzLCBpY29udi1saXRlQH4wLjQuMTM6Ci0gIHZl
cnNpb24gIjAuNC4xMyIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20v
aWNvbnYtbGl0ZS8tL2ljb252LWxpdGUtMC40LjEzLnRneiMxZjg4YWJhNGFiMGIxNTA4ZTgzMTJh
Y2MzOTM0NWYzNmU5OTJlMmYyIgotCi1pY3NzLXJlcGxhY2Utc3ltYm9sc0BeMS4wLjI6Ci0gIHZl
cnNpb24gIjEuMC4yIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9p
Y3NzLXJlcGxhY2Utc3ltYm9scy8tL2ljc3MtcmVwbGFjZS1zeW1ib2xzLTEuMC4yLnRneiNjYjBi
NjA1NGViM2FmNmVkYzlhYjFkNjJkMDE5MzNlMmQ0YzhiZmE1IgotCi1pZWVlNzU0QF4xLjEuNDoK
LSAgdmVyc2lvbiAiMS4xLjgiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cu
Y29tL2llZWU3NTQvLS9pZWVlNzU0LTEuMS44LnRneiNiZTMzZDQwYWMxMGVmMTkyNjcwMWY2ZjA4
YTJkODZmYmZkMWFkM2U0IgotCi1pZ25vcmVAXjMuMS41OgotICB2ZXJzaW9uICIzLjIuMCIKLSAg
cmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vaWdub3JlLy0vaWdub3JlLTMu
Mi4wLnRneiM4ZDg4ZjAzYzMwMDJhMGFjNTIxMTRkYjI1ZDJjNjczYjBiZjFlNDM1IgotCi1pbW11
dGFibGVAXjMuNy42OgotICB2ZXJzaW9uICIzLjguMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVn
aXN0cnkueWFybnBrZy5jb20vaW1tdXRhYmxlLy0vaW1tdXRhYmxlLTMuOC4xLnRneiMyMDA4MDdm
MTFhYjBmNzI3MTBlYTQ4NTU0MmRlMDg4MDc1ZjY4Y2QyIgotCi1pbXVybXVyaGFzaEBeMC4xLjQ6
Ci0gIHZlcnNpb24gIjAuMS40IgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtn
LmNvbS9pbXVybXVyaGFzaC8tL2ltdXJtdXJoYXNoLTAuMS40LnRneiM5MjE4YjliMmI5MjhhMjM4
YjEzZGM0ZmI2YjZkNTc2ZjIzMTQ1M2VhIgotCi1pbmRleGVzLW9mQF4xLjAuMToKLSAgdmVyc2lv
biAiMS4wLjEiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2luZGV4
ZXMtb2YvLS9pbmRleGVzLW9mLTEuMC4xLnRneiNmMzBmNzE2YzhlMmJkMzQ2YzdiNjdkM2RmMzkx
NTU2NmE3YzA1NjA3IgotCi1pbmRleG9mQDAuMC4xOgotICB2ZXJzaW9uICIwLjAuMSIKLSAgcmVz
b2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vaW5kZXhvZi8tL2luZGV4b2YtMC4w
LjEudGd6IzgyZGMzMzZkMjMyYjkwNjIxNzlkMDVhYjMyOTNhNjYwNTlmZDQzNWQiCi0KLWluZmxp
Z2h0QF4xLjAuNDoKLSAgdmVyc2lvbiAiMS4wLjUiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lz
dHJ5Lnlhcm5wa2cuY29tL2luZmxpZ2h0Ly0vaW5mbGlnaHQtMS4wLjUudGd6I2RiMzIwNGNkNWE5
ZGUyZTZjZDg5MGI4NWM2ZTJmNjZiY2Y0ZjYyMGEiCi0gIGRlcGVuZGVuY2llczoKLSAgICBvbmNl
ICJeMS4zLjAiCi0gICAgd3JhcHB5ICIxIgotCi1pbmhlcml0c0BeMi4wLjEsIGluaGVyaXRzQH4y
LjAuMCwgaW5oZXJpdHNAfjIuMC4xLCBpbmhlcml0c0AyOgotICB2ZXJzaW9uICIyLjAuMyIKLSAg
cmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vaW5oZXJpdHMvLS9pbmhlcml0
cy0yLjAuMy50Z3ojNjMzYzJjODNlM2RhNDJhNTAyZjUyNDY2MDIyNDgwZjQyMDgyNjFkZSIKLQot
aW5oZXJpdHNAMi4wLjE6Ci0gIHZlcnNpb24gIjIuMC4xIgotICByZXNvbHZlZCAiaHR0cHM6Ly9y
ZWdpc3RyeS55YXJucGtnLmNvbS9pbmhlcml0cy8tL2luaGVyaXRzLTIuMC4xLnRneiNiMTdkMDhk
MzI2YjQ0MjNlNTY4ZWZmNzE5ZjkxYjBiMWNiZGY2OWYxIgotCi1pbmlAfjEuMy4wOgotICB2ZXJz
aW9uICIxLjMuNCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vaW5p
Ly0vaW5pLTEuMy40LnRneiMwNTM3Y2I3OWRhZjU5YjU5YTFhNTE3ZGZmNzA2Yzg2ZWMwMzkxNjJl
IgotCi1pbnF1aXJlckBeMC4xMi4wOgotICB2ZXJzaW9uICIwLjEyLjAiCi0gIHJlc29sdmVkICJo
dHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2lucXVpcmVyLy0vaW5xdWlyZXItMC4xMi4wLnRn
eiMxZWYyYmZkNjM1MDRkZjBiYzc1Nzg1ZmZmOGMyYzQxZGYxMmYwNzdlIgotICBkZXBlbmRlbmNp
ZXM6Ci0gICAgYW5zaS1lc2NhcGVzICJeMS4xLjAiCi0gICAgYW5zaS1yZWdleCAiXjIuMC4wIgot
ICAgIGNoYWxrICJeMS4wLjAiCi0gICAgY2xpLWN1cnNvciAiXjEuMC4xIgotICAgIGNsaS13aWR0
aCAiXjIuMC4wIgotICAgIGZpZ3VyZXMgIl4xLjMuNSIKLSAgICBsb2Rhc2ggIl40LjMuMCIKLSAg
ICByZWFkbGluZTIgIl4xLjAuMSIKLSAgICBydW4tYXN5bmMgIl4wLjEuMCIKLSAgICByeC1saXRl
ICJeMy4xLjIiCi0gICAgc3RyaW5nLXdpZHRoICJeMS4wLjEiCi0gICAgc3RyaXAtYW5zaSAiXjMu
MC4wIgotICAgIHRocm91Z2ggIl4yLjMuNiIKLQotaW50ZXJwcmV0QF4wLjYuNDoKLSAgdmVyc2lv
biAiMC42LjYiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2ludGVy
cHJldC8tL2ludGVycHJldC0wLjYuNi50Z3ojZmVjZDdhMThlN2NlNWNhNmFiZmI5NTNlMWY4NjIx
M2E0OWYxNjI1YiIKLQotaW52YXJpYW50QF4yLjAuMCwgaW52YXJpYW50QF4yLjIuMDoKLSAgdmVy
c2lvbiAiMi4yLjEiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2lu
dmFyaWFudC8tL2ludmFyaWFudC0yLjIuMS50Z3ojYjA5NzAxMDU0NzY2OGM3ZTMzNzAyOGViZTgx
NmViZTM2YzhhOGQ1NCIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGxvb3NlLWVudmlmeSAiXjEuMC4w
IgotCi1pbnZlcnQta3ZAXjEuMC4wOgotICB2ZXJzaW9uICIxLjAuMCIKLSAgcmVzb2x2ZWQgImh0
dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vaW52ZXJ0LWt2Ly0vaW52ZXJ0LWt2LTEuMC4wLnRn
eiMxMDRhOGU0YWFjYTZkM2Q4Y2QxNTdhOGVmOGJmYWIyZDdhM2ZmZGI2IgotCi1pcGFkZHIuanNA
MS4xLjE6Ci0gIHZlcnNpb24gIjEuMS4xIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55
YXJucGtnLmNvbS9pcGFkZHIuanMvLS9pcGFkZHIuanMtMS4xLjEudGd6I2M3OTFkOTVmNTJiMjlj
MTI0N2Q1ZGY4MGFkYTM5YjhhNzM2NDcyMzAiCi0KLWlzLWFic29sdXRlLXVybEBeMi4wLjA6Ci0g
IHZlcnNpb24gIjIuMC4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNv
bS9pcy1hYnNvbHV0ZS11cmwvLS9pcy1hYnNvbHV0ZS11cmwtMi4wLjAudGd6IzljNGIyMGIwZTVj
MGNiZWY5YTQ3OWEzNjdlZGU2Zjk5MTY3OWYzNTkiCi0KLWlzLWFycmF5aXNoQF4wLjIuMToKLSAg
dmVyc2lvbiAiMC4yLjEiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29t
L2lzLWFycmF5aXNoLy0vaXMtYXJyYXlpc2gtMC4yLjEudGd6Izc3Yzk5ODQwNTI3YWE4ZWNiMWE4
YmE2OTdiODA2NDVhN2E5MjZhOWQiCi0KLWlzLWJpbmFyeS1wYXRoQF4xLjAuMDoKLSAgdmVyc2lv
biAiMS4wLjEiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2lzLWJp
bmFyeS1wYXRoLy0vaXMtYmluYXJ5LXBhdGgtMS4wLjEudGd6Izc1ZjE2NjQyYjQ4MGYxODdhNzEx
YzgxNDE2MWZkM2E0YTc2NTU4OTgiCi0gIGRlcGVuZGVuY2llczoKLSAgICBiaW5hcnktZXh0ZW5z
aW9ucyAiXjEuMC4wIgotCi1pcy1idWZmZXJAXjEuMC4yOgotICB2ZXJzaW9uICIxLjEuNCIKLSAg
cmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vaXMtYnVmZmVyLy0vaXMtYnVm
ZmVyLTEuMS40LnRneiNjZmM4NmNjZDVkYzVhNTJmYTgwNDg5MTExYzY5MjBjNDU3ZTJkOThiIgot
Ci1pcy1idWlsdGluLW1vZHVsZUBeMS4wLjA6Ci0gIHZlcnNpb24gIjEuMC4wIgotICByZXNvbHZl
ZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9pcy1idWlsdGluLW1vZHVsZS8tL2lzLWJ1
aWx0aW4tbW9kdWxlLTEuMC4wLnRneiM1NDA1NzJkMzRmN2FjMzExOWY4Zjc2YzMwY2JjMWIxZTAz
N2FmZmJlIgotICBkZXBlbmRlbmNpZXM6Ci0gICAgYnVpbHRpbi1tb2R1bGVzICJeMS4wLjAiCi0K
LWlzLWNhbGxhYmxlQF4xLjEuMSwgaXMtY2FsbGFibGVAXjEuMS4zOgotICB2ZXJzaW9uICIxLjEu
MyIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vaXMtY2FsbGFibGUv
LS9pcy1jYWxsYWJsZS0xLjEuMy50Z3ojODZlYjc1MzkyODA1ZGRjMzNhZjcxYzkyYTBlZWRmNzRl
ZTc2MDRiMiIKLQotaXMtZGF0ZS1vYmplY3RAXjEuMC4xOgotICB2ZXJzaW9uICIxLjAuMSIKLSAg
cmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vaXMtZGF0ZS1vYmplY3QvLS9p
cy1kYXRlLW9iamVjdC0xLjAuMS50Z3ojOWFhMjBlYjZhZWViYmZmNzdmYmQzM2U3NGNhMDFiMzM1
ODFkM2ExNiIKLQotaXMtZG90ZmlsZUBeMS4wLjA6Ci0gIHZlcnNpb24gIjEuMC4yIgotICByZXNv
bHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9pcy1kb3RmaWxlLy0vaXMtZG90Zmls
ZS0xLjAuMi50Z3ojMmMxMzIzODNmMzkxOTlmOGVkYzI2OGNhMDFiOWIwMDdkMjA1Y2M0ZCIKLQot
aXMtZXF1YWwtc2hhbGxvd0BeMC4xLjM6Ci0gIHZlcnNpb24gIjAuMS4zIgotICByZXNvbHZlZCAi
aHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9pcy1lcXVhbC1zaGFsbG93Ly0vaXMtZXF1YWwt
c2hhbGxvdy0wLjEuMy50Z3ojMjIzODA5OGZjMjIxZGUwYmNmYTVkOWVhYzRjNDVkNjM4YWExYzUz
NCIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGlzLXByaW1pdGl2ZSAiXjIuMC4wIgotCi1pcy1leHRl
bmRhYmxlQF4wLjEuMToKLSAgdmVyc2lvbiAiMC4xLjEiCi0gIHJlc29sdmVkICJodHRwczovL3Jl
Z2lzdHJ5Lnlhcm5wa2cuY29tL2lzLWV4dGVuZGFibGUvLS9pcy1leHRlbmRhYmxlLTAuMS4xLnRn
eiM2MmIxMTBlMjg5YTQ3MTQxOGUzZWMzNmE2MTdkNDcyZTMwMWRmYzg5IgotCi1pcy1leHRnbG9i
QF4xLjAuMDoKLSAgdmVyc2lvbiAiMS4wLjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5
Lnlhcm5wa2cuY29tL2lzLWV4dGdsb2IvLS9pcy1leHRnbG9iLTEuMC4wLnRneiNhYzQ2ODE3N2M0
OTQzNDA1YTA5MmZjOGYyOTc2MGM2ZmZjNjIwNmMwIgotCi1pcy1leHRnbG9iQF4yLjAuMDoKLSAg
dmVyc2lvbiAiMi4wLjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29t
L2lzLWV4dGdsb2IvLS9pcy1leHRnbG9iLTIuMC4wLnRneiNhOWI5MmMxYWUyZDdhOTc1YWQzMDdi
ZTA3MjIwNDljN2U0ZWEyZjEzIgotCi1pcy1maW5pdGVAXjEuMC4wOgotICB2ZXJzaW9uICIxLjAu
MiIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vaXMtZmluaXRlLy0v
aXMtZmluaXRlLTEuMC4yLnRneiNjYzY2Nzc2OTU2MDJiZTU1MGVmMTFlOGI0YWE2MzA1MzQyYjZk
MGFhIgotICBkZXBlbmRlbmNpZXM6Ci0gICAgbnVtYmVyLWlzLW5hbiAiXjEuMC4wIgotCi1pcy1m
dWxsd2lkdGgtY29kZS1wb2ludEBeMS4wLjA6Ci0gIHZlcnNpb24gIjEuMC4wIgotICByZXNvbHZl
ZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9pcy1mdWxsd2lkdGgtY29kZS1wb2ludC8t
L2lzLWZ1bGx3aWR0aC1jb2RlLXBvaW50LTEuMC4wLnRneiNlZjllMzEzODZmMDMxYTdmMGQ2NDNh
ZjgyZmRlNTBjNDU3ZWYwMGNiIgotICBkZXBlbmRlbmNpZXM6Ci0gICAgbnVtYmVyLWlzLW5hbiAi
XjEuMC4wIgotCi1pcy1nbG9iQF4yLjAuMCwgaXMtZ2xvYkBeMi4wLjE6Ci0gIHZlcnNpb24gIjIu
MC4xIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9pcy1nbG9iLy0v
aXMtZ2xvYi0yLjAuMS50Z3ojZDA5NmY5MjZhM2RlZDU2MDBmM2ZkZmQ5MTE5OGNiMDg4OGMyZDg2
MyIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGlzLWV4dGdsb2IgIl4xLjAuMCIKLQotaXMtZ2xvYkBe
My4wLjA6Ci0gIHZlcnNpb24gIjMuMC4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55
YXJucGtnLmNvbS9pcy1nbG9iLy0vaXMtZ2xvYi0zLjAuMC50Z3ojZTQzM2MyMjJkYjlkNzc4NDQw
ODRkNzJkYjFlZmYwNDc4NDU5ODVjMSIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGlzLWV4dGdsb2Ig
Il4yLjAuMCIKLQotaXMtbG93ZXItY2FzZUBeMS4xLjA6Ci0gIHZlcnNpb24gIjEuMS4zIgotICBy
ZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9pcy1sb3dlci1jYXNlLy0vaXMt
bG93ZXItY2FzZS0xLjEuMy50Z3ojN2UxNDdiZTQ3NjhkYzQ2NmRiM2JmYjIxY2M2MGIzMWU2YWQ2
OTM5MyIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGxvd2VyLWNhc2UgIl4xLjEuMCIKLQotaXMtbXkt
anNvbi12YWxpZEBeMi4xMC4wLCBpcy1teS1qc29uLXZhbGlkQF4yLjEyLjQ6Ci0gIHZlcnNpb24g
IjIuMTUuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vaXMtbXkt
anNvbi12YWxpZC8tL2lzLW15LWpzb24tdmFsaWQtMi4xNS4wLnRneiM5MzZlZGRhM2NhM2MyMTFm
ZDk4ZjNiMmQzZTA4ZGE0M2Y3YjI5MTViIgotICBkZXBlbmRlbmNpZXM6Ci0gICAgZ2VuZXJhdGUt
ZnVuY3Rpb24gIl4yLjAuMCIKLSAgICBnZW5lcmF0ZS1vYmplY3QtcHJvcGVydHkgIl4xLjEuMCIK
LSAgICBqc29ucG9pbnRlciAiXjQuMC4wIgotICAgIHh0ZW5kICJeNC4wLjAiCi0KLWlzLW51bWJl
ckBeMi4wLjIsIGlzLW51bWJlckBeMi4xLjA6Ci0gIHZlcnNpb24gIjIuMS4wIgotICByZXNvbHZl
ZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9pcy1udW1iZXIvLS9pcy1udW1iZXItMi4x
LjAudGd6IzAxZmNiYmIzOTM0NjNhNTQ4ZjJmNDY2Y2NlMTZkZWNlNDlkYjkwOGYiCi0gIGRlcGVu
ZGVuY2llczoKLSAgICBraW5kLW9mICJeMy4wLjIiCi0KLWlzLXBhdGgtY3dkQF4xLjAuMDoKLSAg
dmVyc2lvbiAiMS4wLjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29t
L2lzLXBhdGgtY3dkLy0vaXMtcGF0aC1jd2QtMS4wLjAudGd6I2QyMjVlYzIzMTMyZTg5ZWRkMzhm
ZGE3Njc0NzJlNjJlNjVmMTEwNmQiCi0KLWlzLXBhdGgtaW4tY3dkQF4xLjAuMDoKLSAgdmVyc2lv
biAiMS4wLjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2lzLXBh
dGgtaW4tY3dkLy0vaXMtcGF0aC1pbi1jd2QtMS4wLjAudGd6IzY0Nzc1ODJiODIxNGQ2MDIzNDYw
OTQ1NjcwMDNiZThhOWVhYzA0ZGMiCi0gIGRlcGVuZGVuY2llczoKLSAgICBpcy1wYXRoLWluc2lk
ZSAiXjEuMC4wIgotCi1pcy1wYXRoLWluc2lkZUBeMS4wLjA6Ci0gIHZlcnNpb24gIjEuMC4wIgot
ICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9pcy1wYXRoLWluc2lkZS8t
L2lzLXBhdGgtaW5zaWRlLTEuMC4wLnRneiNmYzA2ZTVhMTY4M2ZiZGExM2RlNjY3YWZmNzE3YmJj
MTBhNDhmMzdmIgotICBkZXBlbmRlbmNpZXM6Ci0gICAgcGF0aC1pcy1pbnNpZGUgIl4xLjAuMSIK
LQotaXMtcGxhaW4tb2JqQF4xLjAuMDoKLSAgdmVyc2lvbiAiMS4xLjAiCi0gIHJlc29sdmVkICJo
dHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2lzLXBsYWluLW9iai8tL2lzLXBsYWluLW9iai0x
LjEuMC50Z3ojNzFhNTBjODQyOWRmY2E3NzNjOTJhMzkwYTRhMDNiMzlmY2Q1MWQzZSIKLQotaXMt
cG9zaXgtYnJhY2tldEBeMC4xLjA6Ci0gIHZlcnNpb24gIjAuMS4xIgotICByZXNvbHZlZCAiaHR0
cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9pcy1wb3NpeC1icmFja2V0Ly0vaXMtcG9zaXgtYnJh
Y2tldC0wLjEuMS50Z3ojMzMzNGRjNzk3NzQzNjhlOTJmMDE2ZTZmYmMwYTg4ZjVjZDZlNmJjNCIK
LQotaXMtcHJpbWl0aXZlQF4yLjAuMDoKLSAgdmVyc2lvbiAiMi4wLjAiCi0gIHJlc29sdmVkICJo
dHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2lzLXByaW1pdGl2ZS8tL2lzLXByaW1pdGl2ZS0y
LjAuMC50Z3ojMjA3YmFiOTE2Mzg0OTljMDdiMmFkZjI0MGE0MWE4NzIxMDAzNDU3NSIKLQotaXMt
cHJvcGVydHlAXjEuMC4wOgotICB2ZXJzaW9uICIxLjAuMiIKLSAgcmVzb2x2ZWQgImh0dHBzOi8v
cmVnaXN0cnkueWFybnBrZy5jb20vaXMtcHJvcGVydHkvLS9pcy1wcm9wZXJ0eS0xLjAuMi50Z3oj
NTdmZTFjNGU0ODQ3NGVkZDY1YjA5OTExZjI2YjFjZDQwOTVkZGE4NCIKLQotaXMtcmVnZXhAXjEu
MC4zOgotICB2ZXJzaW9uICIxLjAuMyIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFy
bnBrZy5jb20vaXMtcmVnZXgvLS9pcy1yZWdleC0xLjAuMy50Z3ojMGQ1NTE4MmJkZGY5ZjJmZGUy
NzgyMjBhZWMzYTc1NjQyYzkwODYzNyIKLQotaXMtcmVzb2x2YWJsZUBeMS4wLjA6Ci0gIHZlcnNp
b24gIjEuMC4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9pcy1y
ZXNvbHZhYmxlLy0vaXMtcmVzb2x2YWJsZS0xLjAuMC50Z3ojOGRmNTdjNjFlYTJlM2M1MDE0MDhk
MTAwZmIwMTNjZjhkNmUwY2M2MiIKLSAgZGVwZW5kZW5jaWVzOgotICAgIHRyeWl0ICJeMS4wLjEi
Ci0KLWlzLXN0cmVhbUBeMS4wLjE6Ci0gIHZlcnNpb24gIjEuMS4wIgotICByZXNvbHZlZCAiaHR0
cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9pcy1zdHJlYW0vLS9pcy1zdHJlYW0tMS4xLjAudGd6
IzEyZDRhM2RkNGU2OGUwYjc5Y2ViOGRiYzg0MTczYWU4MGQ5MWNhNDQiCi0KLWlzLXN1YnNldEBe
MC4xLjE6Ci0gIHZlcnNpb24gIjAuMS4xIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55
YXJucGtnLmNvbS9pcy1zdWJzZXQvLS9pcy1zdWJzZXQtMC4xLjEudGd6IzhhNTkxMTdkOTMyZGUx
ZGUwMGYyNDVmY2RkMzljZTQzZjFlOTM5YTYiCi0KLWlzLXN2Z0BeMi4wLjA6Ci0gIHZlcnNpb24g
IjIuMC4xIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9pcy1zdmcv
LS9pcy1zdmctMi4wLjEudGd6I2Y5M2FiM2JmMWQ2YmJjYTMwZTk3NTNjZDM0ODViMTMwMGVlYmMw
MTMiCi0gIGRlcGVuZGVuY2llczoKLSAgICBodG1sLWNvbW1lbnQtcmVnZXggIl4xLjEuMCIKLQot
aXMtc3ltYm9sQF4xLjAuMToKLSAgdmVyc2lvbiAiMS4wLjEiCi0gIHJlc29sdmVkICJodHRwczov
L3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2lzLXN5bWJvbC8tL2lzLXN5bWJvbC0xLjAuMS50Z3ojM2Nj
NTlmMDAwMjUxOTRiNmFiMmUzOGRiYWU2Njg5MjU2YjY2MDU3MiIKLQotaXMtdHlwZWRhcnJheUB+
MS4wLjA6Ci0gIHZlcnNpb24gIjEuMC4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55
YXJucGtnLmNvbS9pcy10eXBlZGFycmF5Ly0vaXMtdHlwZWRhcnJheS0xLjAuMC50Z3ojZTQ3OWM4
MDg1OGRmMGMxYjExZGRkYTY5NDBmOTYwMTFmY2RhNGE5YSIKLQotaXMtdXBwZXItY2FzZUBeMS4x
LjA6Ci0gIHZlcnNpb24gIjEuMS4yIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJu
cGtnLmNvbS9pcy11cHBlci1jYXNlLy0vaXMtdXBwZXItY2FzZS0xLjEuMi50Z3ojOGQwYjFmYTdl
NzkzM2ExZTU4NDgzNjAwZWM3ZDk2NjFjYmFmNzU2ZiIKLSAgZGVwZW5kZW5jaWVzOgotICAgIHVw
cGVyLWNhc2UgIl4xLjEuMCIKLQotaXMtdXRmOEBeMC4yLjA6Ci0gIHZlcnNpb24gIjAuMi4xIgot
ICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9pcy11dGY4Ly0vaXMtdXRm
OC0wLjIuMS50Z3ojNGIwZGExNDQyMTA0ZDFiMzM2MzQwZTgwNzk3ZTg2NWNmMzlmN2Q3MiIKLQot
aXNhcnJheUBeMS4wLjAsIGlzYXJyYXlAfjEuMC4wLCBpc2FycmF5QDEuMC4wOgotICB2ZXJzaW9u
ICIxLjAuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vaXNhcnJh
eS8tL2lzYXJyYXktMS4wLjAudGd6I2JiOTM1ZDQ4NTgyY2JhMTY4YzA2ODM0OTU3YTU0YTNlMDcx
MjRmMTEiCi0KLWlzYXJyYXlAMC4wLjE6Ci0gIHZlcnNpb24gIjAuMC4xIgotICByZXNvbHZlZCAi
aHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9pc2FycmF5Ly0vaXNhcnJheS0wLjAuMS50Z3oj
OGExOGFjZmNhOWE4ZjQxNzdlMDlhYmZjNjAzODkzOWIwNWQxZWVkZiIKLQotaXNleGVAXjEuMS4x
OgotICB2ZXJzaW9uICIxLjEuMiIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBr
Zy5jb20vaXNleGUvLS9pc2V4ZS0xLjEuMi50Z3ojMzZmM2UyMmU2MDc1MDkyMGY1ZTcyNDFhNDc2
YThjNmE0MjI3NWFkMCIKLQotaXNvYmplY3RAXjIuMC4wOgotICB2ZXJzaW9uICIyLjEuMCIKLSAg
cmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vaXNvYmplY3QvLS9pc29iamVj
dC0yLjEuMC50Z3ojZjA2NTU2MTA5NmEzZjFkYTJlZjQ2MjcyZjgxNWM4NDBkODdlMGM4OSIKLSAg
ZGVwZW5kZW5jaWVzOgotICAgIGlzYXJyYXkgIjEuMC4wIgotCi1pc29tb3JwaGljLWZldGNoQF4y
LjEuMToKLSAgdmVyc2lvbiAiMi4yLjEiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlh
cm5wa2cuY29tL2lzb21vcnBoaWMtZmV0Y2gvLS9pc29tb3JwaGljLWZldGNoLTIuMi4xLnRneiM2
MTFhZTFhY2YxNGY1ZTgxZjcyOTUwNzQ3MjgxOWZlOTczMzU1OGE5IgotICBkZXBlbmRlbmNpZXM6
Ci0gICAgbm9kZS1mZXRjaCAiXjEuMC4xIgotICAgIHdoYXR3Zy1mZXRjaCAiPj0wLjEwLjAiCi0K
LWlzc3RyZWFtQH4wLjEuMjoKLSAgdmVyc2lvbiAiMC4xLjIiCi0gIHJlc29sdmVkICJodHRwczov
L3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2lzc3RyZWFtLy0vaXNzdHJlYW0tMC4xLjIudGd6IzQ3ZTYz
ZjdhZjU1YWZhNmY5MmUxNTAwZTY5MGViOGI4NTI5YzA5OWEiCi0KLWlzdGFuYnVsLWFwaUBeMS4w
LjAtYXBsaGEuMTA6Ci0gIHZlcnNpb24gIjEuMC4wLWFwbGhhLjEwIgotICByZXNvbHZlZCAiaHR0
cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9pc3RhbmJ1bC1hcGkvLS9pc3RhbmJ1bC1hcGktMS4w
LjAtYXBsaGEuMTAudGd6IzkwMmVkZjVjZjU0MDRlMGViYTdlMDBlZjQ2NDA4NDg4YTBkM2UzMzci
Ci0gIGRlcGVuZGVuY2llczoKLSAgICBhc3luYyAiMS54IgotICAgIGNsb25lICJeMS4wLjIiCi0g
ICAgZmlsZXNldCAiMC4yLngiCi0gICAgaXN0YW5idWwtbGliLWNvdmVyYWdlICJeMS4wLjAtYWxw
aGEiCi0gICAgaXN0YW5idWwtbGliLWhvb2sgIl4xLjAuMC1hbHBoYSIKLSAgICBpc3RhbmJ1bC1s
aWItaW5zdHJ1bWVudCAiXjEuMC4wLWFscGhhIgotICAgIGlzdGFuYnVsLWxpYi1yZXBvcnQgIl4x
LjAuMC1hbHBoYSIKLSAgICBpc3RhbmJ1bC1saWItc291cmNlLW1hcHMgIl4xLjAuMC1hbHBoYSIK
LSAgICBpc3RhbmJ1bC1yZXBvcnRzICJeMS4wLjAtYWxwaGEiCi0gICAganMteWFtbCAiMy54Igot
ICAgIG1rZGlycCAiMC41LngiCi0gICAgb25jZSAiMS54IgotCi1pc3RhbmJ1bC1saWItY292ZXJh
Z2VAXjEuMC4wLCBpc3RhbmJ1bC1saWItY292ZXJhZ2VAXjEuMC4wLWFscGhhLCBpc3RhbmJ1bC1s
aWItY292ZXJhZ2VAXjEuMC4wLWFscGhhLjA6Ci0gIHZlcnNpb24gIjEuMC4wIgotICByZXNvbHZl
ZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9pc3RhbmJ1bC1saWItY292ZXJhZ2UvLS9p
c3RhbmJ1bC1saWItY292ZXJhZ2UtMS4wLjAudGd6I2MzZjliNmQyMjZkYTEyNDI0MDY0Y2NlODdm
Y2UwZmI1N2ZkZmE3YTIiCi0KLWlzdGFuYnVsLWxpYi1ob29rQF4xLjAuMC1hbHBoYToKLSAgdmVy
c2lvbiAiMS4wLjAtYWxwaGEuNCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBr
Zy5jb20vaXN0YW5idWwtbGliLWhvb2svLS9pc3RhbmJ1bC1saWItaG9vay0xLjAuMC1hbHBoYS40
LnRneiM4YzViYjlmNmZiZDg1MjZlMGFlNmNmNjM5YWYyODI2NjkwNmI5MzhmIgotICBkZXBlbmRl
bmNpZXM6Ci0gICAgYXBwZW5kLXRyYW5zZm9ybSAiXjAuMy4wIgotCi1pc3RhbmJ1bC1saWItaW5z
dHJ1bWVudEBeMS4wLjAtYWxwaGEsIGlzdGFuYnVsLWxpYi1pbnN0cnVtZW50QF4xLjEuMToKLSAg
dmVyc2lvbiAiMS4xLjMiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29t
L2lzdGFuYnVsLWxpYi1pbnN0cnVtZW50Ly0vaXN0YW5idWwtbGliLWluc3RydW1lbnQtMS4xLjMu
dGd6IzY2ZDUzNTNkMWY1OTJiOWUzNGQxY2Y5YWNkYTljM2YxYWI1MDk2OTYiCi0gIGRlcGVuZGVu
Y2llczoKLSAgICBiYWJlbC1nZW5lcmF0b3IgIl42LjExLjMiCi0gICAgYmFiZWwtdGVtcGxhdGUg
Il42LjkuMCIKLSAgICBiYWJlbC10cmF2ZXJzZSAiXjYuOS4wIgotICAgIGJhYmVsLXR5cGVzICJe
Ni4xMC4yIgotICAgIGJhYnlsb24gIl42LjguMSIKLSAgICBpc3RhbmJ1bC1saWItY292ZXJhZ2Ug
Il4xLjAuMCIKLQotaXN0YW5idWwtbGliLXJlcG9ydEBeMS4wLjAtYWxwaGE6Ci0gIHZlcnNpb24g
IjEuMC4wLWFscGhhLjMiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29t
L2lzdGFuYnVsLWxpYi1yZXBvcnQvLS9pc3RhbmJ1bC1saWItcmVwb3J0LTEuMC4wLWFscGhhLjMu
dGd6IzMyZDVmNmVjN2YzM2NhM2E2MDIyMDllMjc4YjJlNmZmMTQzNDk4YWYiCi0gIGRlcGVuZGVu
Y2llczoKLSAgICBhc3luYyAiXjEuNC4yIgotICAgIGlzdGFuYnVsLWxpYi1jb3ZlcmFnZSAiXjEu
MC4wLWFscGhhIgotICAgIG1rZGlycCAiXjAuNS4xIgotICAgIHBhdGgtcGFyc2UgIl4xLjAuNSIK
LSAgICByaW1yYWYgIl4yLjQuMyIKLSAgICBzdXBwb3J0cy1jb2xvciAiXjMuMS4yIgotCi1pc3Rh
bmJ1bC1saWItc291cmNlLW1hcHNAXjEuMC4wLWFscGhhOgotICB2ZXJzaW9uICIxLjAuMiIKLSAg
cmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vaXN0YW5idWwtbGliLXNvdXJj
ZS1tYXBzLy0vaXN0YW5idWwtbGliLXNvdXJjZS1tYXBzLTEuMC4yLnRneiM5ZTkxYjBlNWFlNmVk
MjAzZjY3YzY5YTM0ZTZlOThiMTBiYjY5YTQ5IgotICBkZXBlbmRlbmNpZXM6Ci0gICAgaXN0YW5i
dWwtbGliLWNvdmVyYWdlICJeMS4wLjAtYWxwaGEuMCIKLSAgICBta2RpcnAgIl4wLjUuMSIKLSAg
ICByaW1yYWYgIl4yLjQuNCIKLSAgICBzb3VyY2UtbWFwICJeMC41LjMiCi0KLWlzdGFuYnVsLXJl
cG9ydHNAXjEuMC4wLWFscGhhOgotICB2ZXJzaW9uICIxLjAuMC1hbHBoYS44IgotICByZXNvbHZl
ZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9pc3RhbmJ1bC1yZXBvcnRzLy0vaXN0YW5i
dWwtcmVwb3J0cy0xLjAuMC1hbHBoYS44LnRneiMwOTQ4MzBmNGM3ZjNkNDgyZTQ2NmFhYzhhYmRh
MjQ5NWY5YWU0Njg5IgotICBkZXBlbmRlbmNpZXM6Ci0gICAgaGFuZGxlYmFycyAiXjQuMC4zIgot
Ci1pc3RhbmJ1bEBeMC40LjU6Ci0gIHZlcnNpb24gIjAuNC41IgotICByZXNvbHZlZCAiaHR0cHM6
Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9pc3RhbmJ1bC8tL2lzdGFuYnVsLTAuNC41LnRneiM2NWM3
ZDczZDRjNGRhODRkNGYzYWMzMTBiOTE4ZmIwYjgwMzM3MzNiIgotICBkZXBlbmRlbmNpZXM6Ci0g
ICAgYWJicmV2ICIxLjAueCIKLSAgICBhc3luYyAiMS54IgotICAgIGVzY29kZWdlbiAiMS44Lngi
Ci0gICAgZXNwcmltYSAiMi43LngiCi0gICAgZ2xvYiAiXjUuMC4xNSIKLSAgICBoYW5kbGViYXJz
ICJeNC4wLjEiCi0gICAganMteWFtbCAiMy54IgotICAgIG1rZGlycCAiMC41LngiCi0gICAgbm9w
dCAiMy54IgotICAgIG9uY2UgIjEueCIKLSAgICByZXNvbHZlICIxLjEueCIKLSAgICBzdXBwb3J0
cy1jb2xvciAiXjMuMS4wIgotICAgIHdoaWNoICJeMS4xLjEiCi0gICAgd29yZHdyYXAgIl4xLjAu
MCIKLQotamFzbWluZS1jaGVja0BeMC4xLjQ6Ci0gIHZlcnNpb24gIjAuMS41IgotICByZXNvbHZl
ZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9qYXNtaW5lLWNoZWNrLy0vamFzbWluZS1j
aGVjay0wLjEuNS50Z3ojZGJhZDdlZWM1NjI2MWM0YjNkMTc1YWRhNTVmZTU5YjA5YWM5ZTQxNSIK
LSAgZGVwZW5kZW5jaWVzOgotICAgIHRlc3RjaGVjayAiXjAuMS4wIgotCi1qZXN0LWNoYW5nZWQt
ZmlsZXNAXjE1LjAuMDoKLSAgdmVyc2lvbiAiMTUuMC4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9y
ZWdpc3RyeS55YXJucGtnLmNvbS9qZXN0LWNoYW5nZWQtZmlsZXMvLS9qZXN0LWNoYW5nZWQtZmls
ZXMtMTUuMC4wLnRneiMzYWM5OWQ5N2RjNGFjMDQ1YWQ0YWRhZThkOTY3Y2MxMzE3MzgyNTcxIgot
Ci1qZXN0LWNsaUBeMTUuMS4xOgotICB2ZXJzaW9uICIxNS4xLjEiCi0gIHJlc29sdmVkICJodHRw
czovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2plc3QtY2xpLy0vamVzdC1jbGktMTUuMS4xLnRneiM1
M2YyNzEyODFmOTBkM2I0MDQzZWNhOWNlOWFmNjlkZDA0YmJkYTNlIgotICBkZXBlbmRlbmNpZXM6
Ci0gICAgYW5zaS1lc2NhcGVzICJeMS40LjAiCi0gICAgY2FsbHNpdGVzICJeMi4wLjAiCi0gICAg
Y2hhbGsgIl4xLjEuMSIKLSAgICBncmFjZWZ1bC1mcyAiXjQuMS42IgotICAgIGlzdGFuYnVsLWFw
aSAiXjEuMC4wLWFwbGhhLjEwIgotICAgIGlzdGFuYnVsLWxpYi1jb3ZlcmFnZSAiXjEuMC4wIgot
ICAgIGlzdGFuYnVsLWxpYi1pbnN0cnVtZW50ICJeMS4xLjEiCi0gICAgamVzdC1jaGFuZ2VkLWZp
bGVzICJeMTUuMC4wIgotICAgIGplc3QtY29uZmlnICJeMTUuMS4xIgotICAgIGplc3QtZW52aXJv
bm1lbnQtanNkb20gIl4xNS4xLjEiCi0gICAgamVzdC1maWxlLWV4aXN0cyAiXjE1LjAuMCIKLSAg
ICBqZXN0LWhhc3RlLW1hcCAiXjE1LjAuMSIKLSAgICBqZXN0LWphc21pbmUyICJeMTUuMS4xIgot
ICAgIGplc3QtbW9jayAiXjE1LjAuMCIKLSAgICBqZXN0LXJlc29sdmUgIl4xNS4wLjEiCi0gICAg
amVzdC1yZXNvbHZlLWRlcGVuZGVuY2llcyAiXjE1LjAuMSIKLSAgICBqZXN0LXJ1bnRpbWUgIl4x
NS4xLjEiCi0gICAgamVzdC1zbmFwc2hvdCAiXjE1LjEuMSIKLSAgICBqZXN0LXV0aWwgIl4xNS4x
LjEiCi0gICAganNvbi1zdGFibGUtc3RyaW5naWZ5ICJeMS4wLjAiCi0gICAgbm9kZS1ub3RpZmll
ciAiXjQuNi4xIgotICAgIHNhbmUgIn4xLjQuMSIKLSAgICB3aGljaCAiXjEuMS4xIgotICAgIHdv
cmtlci1mYXJtICJeMS4zLjEiCi0gICAgeWFyZ3MgIl41LjAuMCIKLQotamVzdC1jb25maWdAXjE1
LjEuMToKLSAgdmVyc2lvbiAiMTUuMS4xIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55
YXJucGtnLmNvbS9qZXN0LWNvbmZpZy8tL2plc3QtY29uZmlnLTE1LjEuMS50Z3ojYWJkYmU1YjRh
NDlhNDA0ZDA0NzU0ZDQyZDdkODhiOTRlNTgwMDlmNyIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGNo
YWxrICJeMS4xLjEiCi0gICAgaXN0YW5idWwgIl4wLjQuNSIKLSAgICBqZXN0LWVudmlyb25tZW50
LWpzZG9tICJeMTUuMS4xIgotICAgIGplc3QtZW52aXJvbm1lbnQtbm9kZSAiXjE1LjEuMSIKLSAg
ICBqZXN0LWphc21pbmUyICJeMTUuMS4xIgotICAgIGplc3QtbW9jayAiXjE1LjAuMCIKLSAgICBq
ZXN0LXJlc29sdmUgIl4xNS4wLjEiCi0gICAgamVzdC11dGlsICJeMTUuMS4xIgotICAgIGpzb24t
c3RhYmxlLXN0cmluZ2lmeSAiXjEuMC4wIgotCi1qZXN0LWRpZmZAXjE1LjEuMDoKLSAgdmVyc2lv
biAiMTUuMS4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9qZXN0
LWRpZmYvLS9qZXN0LWRpZmYtMTUuMS4wLnRneiNiZGE0MGFkNzdjNmJlZWMxZTZiOGI1ZTQ2ZTNi
YmFlZDZlODFjOWY0IgotICBkZXBlbmRlbmNpZXM6Ci0gICAgY2hhbGsgIl4xLjEuMyIKLSAgICBk
aWZmICJeMy4wLjAiCi0gICAgamVzdC1tYXRjaGVyLXV0aWxzICJeMTUuMS4wIgotICAgIHByZXR0
eS1mb3JtYXQgIl4zLjcuMCIKLQotamVzdC1lbnZpcm9ubWVudC1qc2RvbUBeMTUuMS4xOgotICB2
ZXJzaW9uICIxNS4xLjEiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29t
L2plc3QtZW52aXJvbm1lbnQtanNkb20vLS9qZXN0LWVudmlyb25tZW50LWpzZG9tLTE1LjEuMS50
Z3ojZjAzNjhjMTNlOGUwYjgxYWRhZDEyM2EwNTFiOTQyOTQzMzhiOTdlMCIKLSAgZGVwZW5kZW5j
aWVzOgotICAgIGplc3QtdXRpbCAiXjE1LjEuMSIKLSAgICBqc2RvbSAiXjkuNC4wIgotCi1qZXN0
LWVudmlyb25tZW50LW5vZGVAXjE1LjEuMToKLSAgdmVyc2lvbiAiMTUuMS4xIgotICByZXNvbHZl
ZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9qZXN0LWVudmlyb25tZW50LW5vZGUvLS9q
ZXN0LWVudmlyb25tZW50LW5vZGUtMTUuMS4xLnRneiM3YThkNDg2OGUwMjdlNWQxNjAyNjQ2OGUy
NDhkZDU5NDZmZTQzYzA0IgotICBkZXBlbmRlbmNpZXM6Ci0gICAgamVzdC11dGlsICJeMTUuMS4x
IgotCi1qZXN0LWZpbGUtZXhpc3RzQF4xNS4wLjA6Ci0gIHZlcnNpb24gIjE1LjAuMCIKLSAgcmVz
b2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vamVzdC1maWxlLWV4aXN0cy8tL2pl
c3QtZmlsZS1leGlzdHMtMTUuMC4wLnRneiNiN2ZlZmRkM2Y0YjIyN2NiNjg2YmIxNTZlY2M3NjYx
ZWU2OTM1YTg4IgotCi1qZXN0LWhhc3RlLW1hcEBeMTUuMC4xOgotICB2ZXJzaW9uICIxNS4wLjEi
Ci0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2plc3QtaGFzdGUtbWFw
Ly0vamVzdC1oYXN0ZS1tYXAtMTUuMC4xLnRneiMxZDFjMzQyZmE2ZjZkNjJkOWJjMmFmNzY0Mjhk
MmUyMGY3NGE0NGQzIgotICBkZXBlbmRlbmNpZXM6Ci0gICAgZmItd2F0Y2htYW4gIl4xLjkuMCIK
LSAgICBncmFjZWZ1bC1mcyAiXjQuMS42IgotICAgIG11bHRpbWF0Y2ggIl4yLjEuMCIKLSAgICB3
b3JrZXItZmFybSAiXjEuMy4xIgotCi1qZXN0LWphc21pbmUyQF4xNS4xLjE6Ci0gIHZlcnNpb24g
IjE1LjEuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vamVzdC1q
YXNtaW5lMi8tL2plc3QtamFzbWluZTItMTUuMS4xLnRneiNjYWM4YjAxNmFiNmNlMTZkOTViMjkx
ODc1NzczYzI0OTRhMWI0NjcyIgotICBkZXBlbmRlbmNpZXM6Ci0gICAgZ3JhY2VmdWwtZnMgIl40
LjEuNiIKLSAgICBqYXNtaW5lLWNoZWNrICJeMC4xLjQiCi0gICAgamVzdC1tYXRjaGVycyAiXjE1
LjEuMSIKLSAgICBqZXN0LXNuYXBzaG90ICJeMTUuMS4xIgotICAgIGplc3QtdXRpbCAiXjE1LjEu
MSIKLQotamVzdC1tYXRjaGVyLXV0aWxzQF4xNS4xLjA6Ci0gIHZlcnNpb24gIjE1LjEuMCIKLSAg
cmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vamVzdC1tYXRjaGVyLXV0aWxz
Ly0vamVzdC1tYXRjaGVyLXV0aWxzLTE1LjEuMC50Z3ojMmM1MDZhYjlmMzk2ZDI4NmFmYTc0ODcy
ZjJhM2FmZTNmZjQ1NDk4NiIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGNoYWxrICJeMS4xLjMiCi0K
LWplc3QtbWF0Y2hlcnNAXjE1LjEuMToKLSAgdmVyc2lvbiAiMTUuMS4xIgotICByZXNvbHZlZCAi
aHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9qZXN0LW1hdGNoZXJzLy0vamVzdC1tYXRjaGVy
cy0xNS4xLjEudGd6I2ZhZmY1MGFjYmJmOTc0MzMyM2VjMjI3MGEyNDc0M2NiNTlkNjM4ZjAiCi0g
IGRlcGVuZGVuY2llczoKLSAgICBqZXN0LWRpZmYgIl4xNS4xLjAiCi0gICAgamVzdC1tYXRjaGVy
LXV0aWxzICJeMTUuMS4wIgotICAgIGplc3QtdXRpbCAiXjE1LjEuMSIKLQotamVzdC1tb2NrQF4x
NS4wLjA6Ci0gIHZlcnNpb24gIjE1LjAuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnku
eWFybnBrZy5jb20vamVzdC1tb2NrLy0vamVzdC1tb2NrLTE1LjAuMC50Z3ojYjY2Mzk2OTllYjBm
MDIxYWEzNjQ4ODAzNDMyZWJkOTUwZjc1ZGMwMiIKLQotamVzdC1yZXNvbHZlLWRlcGVuZGVuY2ll
c0BeMTUuMC4xOgotICB2ZXJzaW9uICIxNS4wLjEiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lz
dHJ5Lnlhcm5wa2cuY29tL2plc3QtcmVzb2x2ZS1kZXBlbmRlbmNpZXMvLS9qZXN0LXJlc29sdmUt
ZGVwZW5kZW5jaWVzLTE1LjAuMS50Z3ojNDNlYmM2OWI3ZDgxZDJjZGM3MDQ3NGQ0YmY2MzQzMDRi
MDZlYTQxMSIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGplc3QtZmlsZS1leGlzdHMgIl4xNS4wLjAi
Ci0gICAgamVzdC1yZXNvbHZlICJeMTUuMC4xIgotCi1qZXN0LXJlc29sdmVAXjE1LjAuMToKLSAg
dmVyc2lvbiAiMTUuMC4xIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNv
bS9qZXN0LXJlc29sdmUvLS9qZXN0LXJlc29sdmUtMTUuMC4xLnRneiMxOGEzMmQ1ZWJmYjc4ODNj
MmVhYzE2ODMwOTE3YTM3YzUxMDJmZmExIgotICBkZXBlbmRlbmNpZXM6Ci0gICAgYnJvd3Nlci1y
ZXNvbHZlICJeMS4xMS4yIgotICAgIGplc3QtZmlsZS1leGlzdHMgIl4xNS4wLjAiCi0gICAgamVz
dC1oYXN0ZS1tYXAgIl4xNS4wLjEiCi0gICAgcmVzb2x2ZSAiXjEuMS42IgotCi1qZXN0LXJ1bnRp
bWVAXjE1LjEuMToKLSAgdmVyc2lvbiAiMTUuMS4xIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdp
c3RyeS55YXJucGtnLmNvbS9qZXN0LXJ1bnRpbWUvLS9qZXN0LXJ1bnRpbWUtMTUuMS4xLnRneiMz
OTA3YjhkNDZlNWZlMjFiNDM5NWYzZjg4NDAzMWZhZTIyMjY3MTkxIgotICBkZXBlbmRlbmNpZXM6
Ci0gICAgYmFiZWwtY29yZSAiXjYuMTEuNCIKLSAgICBiYWJlbC1qZXN0ICJeMTUuMC4wIgotICAg
IGJhYmVsLXBsdWdpbi1pc3RhbmJ1bCAiXjIuMC4wIgotICAgIGNoYWxrICJeMS4xLjMiCi0gICAg
Z3JhY2VmdWwtZnMgIl40LjEuNiIKLSAgICBqZXN0LWNvbmZpZyAiXjE1LjEuMSIKLSAgICBqZXN0
LWZpbGUtZXhpc3RzICJeMTUuMC4wIgotICAgIGplc3QtaGFzdGUtbWFwICJeMTUuMC4xIgotICAg
IGplc3QtbW9jayAiXjE1LjAuMCIKLSAgICBqZXN0LXJlc29sdmUgIl4xNS4wLjEiCi0gICAgamVz
dC1zbmFwc2hvdCAiXjE1LjEuMSIKLSAgICBqZXN0LXV0aWwgIl4xNS4xLjEiCi0gICAganNvbi1z
dGFibGUtc3RyaW5naWZ5ICJeMS4wLjAiCi0gICAgbXVsdGltYXRjaCAiXjIuMS4wIgotICAgIHlh
cmdzICJeNS4wLjAiCi0KLWplc3Qtc25hcHNob3RAXjE1LjEuMToKLSAgdmVyc2lvbiAiMTUuMS4x
IgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9qZXN0LXNuYXBzaG90
Ly0vamVzdC1zbmFwc2hvdC0xNS4xLjEudGd6Izk1ZDBkMjcyOTUxMmQ2NGQxYTFhNDI3MjRjYTU1
MWMxZDIwNzlhNzEiCi0gIGRlcGVuZGVuY2llczoKLSAgICBqZXN0LWRpZmYgIl4xNS4xLjAiCi0g
ICAgamVzdC1maWxlLWV4aXN0cyAiXjE1LjAuMCIKLSAgICBqZXN0LXV0aWwgIl4xNS4xLjEiCi0g
ICAgcHJldHR5LWZvcm1hdCAiXjMuNy4wIgotCi1qZXN0LXV0aWxAXjE1LjEuMToKLSAgdmVyc2lv
biAiMTUuMS4xIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9qZXN0
LXV0aWwvLS9qZXN0LXV0aWwtMTUuMS4xLnRneiM1ZTE5ZWRhYjJjNTczZjk5MmM5ZDQ1YmExMThm
YThkOTBmOWQyMjBlIgotICBkZXBlbmRlbmNpZXM6Ci0gICAgY2hhbGsgIl4xLjEuMSIKLSAgICBk
aWZmICJeMy4wLjAiCi0gICAgZ3JhY2VmdWwtZnMgIl40LjEuNiIKLSAgICBqZXN0LWZpbGUtZXhp
c3RzICJeMTUuMC4wIgotICAgIGplc3QtbW9jayAiXjE1LjAuMCIKLSAgICBta2RpcnAgIl4wLjUu
MSIKLQotamVzdEAxNS4xLjE6Ci0gIHZlcnNpb24gIjE1LjEuMSIKLSAgcmVzb2x2ZWQgImh0dHBz
Oi8vcmVnaXN0cnkueWFybnBrZy5jb20vamVzdC8tL2plc3QtMTUuMS4xLnRneiNkMDI5NzJiM2Jh
MjcwNjdiNzcxM2U0NDIxOWI0NzMxYWE0ODU0MGE2IgotICBkZXBlbmRlbmNpZXM6Ci0gICAgamVz
dC1jbGkgIl4xNS4xLjEiCi0KLWpvZGlkMjU1MTlAXjEuMC4wOgotICB2ZXJzaW9uICIxLjAuMiIK
LSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vam9kaWQyNTUxOS8tL2pv
ZGlkMjU1MTktMS4wLjIudGd6IzA2ZDQ5MTIyNTUwOTM0MTk0NzdkNDI1NjMzNjA2ZTBlOTA3ODI5
NjciCi0gIGRlcGVuZGVuY2llczoKLSAgICBqc2JuICJ+MC4xLjAiCi0KLWpzLWJhc2U2NEBeMi4x
Ljk6Ci0gIHZlcnNpb24gIjIuMS45IgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJu
cGtnLmNvbS9qcy1iYXNlNjQvLS9qcy1iYXNlNjQtMi4xLjkudGd6I2YwZTgwYWUwMzlhNGJkNjU0
YjVmMjgxZmM5M2YwNGE5MTRhN2ZjY2UiCi0KLWpzLXRva2Vuc0BeMS4wLjE6Ci0gIHZlcnNpb24g
IjEuMC4zIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9qcy10b2tl
bnMvLS9qcy10b2tlbnMtMS4wLjMudGd6IzE0ZTU2ZWI2OGM4ZjFhOTJjNDNkNTlmNTAxNGVjMjlk
YzIwZjJhZTEiCi0KLWpzLXRva2Vuc0BeMi4wLjA6Ci0gIHZlcnNpb24gIjIuMC4wIgotICByZXNv
bHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9qcy10b2tlbnMvLS9qcy10b2tlbnMt
Mi4wLjAudGd6Izc5OTAzZjU1NjNlZTc3OGNjMTE2MmU2ZGNmMWEwMDI3Yzk3ZjljYjUiCi0KLWpz
LXlhbWxAXjMuNS4xLCBqcy15YW1sQH4zLjYuMSwganMteWFtbEAzLng6Ci0gIHZlcnNpb24gIjMu
Ni4xIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9qcy15YW1sLy0v
anMteWFtbC0zLjYuMS50Z3ojNmU1ZmU2N2Q4YjIwNWNlNGQyMmZhZDA1Yjc3ODFlOGRhZGNjNGIz
MCIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGFyZ3BhcnNlICJeMS4wLjciCi0gICAgZXNwcmltYSAi
XjIuNi4wIgotCi1qc2JuQH4wLjEuMDoKLSAgdmVyc2lvbiAiMC4xLjAiCi0gIHJlc29sdmVkICJo
dHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2pzYm4vLS9qc2JuLTAuMS4wLnRneiM2NTA5ODdk
YTBkZDc0ZjRlYmY1YTExMzc3YTJhYTJkMjczZTk3ZGZkIgotCi1qc2RvbUBeNy4wLjI6Ci0gIHZl
cnNpb24gIjcuMi4yIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9q
c2RvbS8tL2pzZG9tLTcuMi4yLnRneiM0MGI0MDI3NzBjMmJkYTIzNDY5MDk2YmVlOTFhYjY3NWUz
YjFmYzZlIgotICBkZXBlbmRlbmNpZXM6Ci0gICAgYWJhYiAiXjEuMC4wIgotICAgIGFjb3JuICJe
Mi40LjAiCi0gICAgYWNvcm4tZ2xvYmFscyAiXjEuMC40IgotICAgIGNzc29tICI+PSAwLjMuMCA8
IDAuNC4wIgotICAgIGNzc3N0eWxlICI+PSAwLjIuMjkgPCAwLjMuMCIKLSAgICBlc2NvZGVnZW4g
Il4xLjYuMSIKLSAgICBud21hdGNoZXIgIj49IDEuMy43IDwgMi4wLjAiCi0gICAgcGFyc2U1ICJe
MS41LjEiCi0gICAgcmVxdWVzdCAiXjIuNTUuMCIKLSAgICBzYXggIl4xLjEuNCIKLSAgICBzeW1i
b2wtdHJlZSAiPj0gMy4xLjAgPCA0LjAuMCIKLSAgICB0b3VnaC1jb29raWUgIl4yLjIuMCIKLSAg
ICB3ZWJpZGwtY29udmVyc2lvbnMgIl4yLjAuMCIKLSAgICB3aGF0d2ctdXJsLWNvbXBhdCAifjAu
Ni41IgotICAgIHhtbC1uYW1lLXZhbGlkYXRvciAiPj0gMi4wLjEgPCAzLjAuMCIKLQotanNkb21A
XjkuNC4wOgotICB2ZXJzaW9uICI5LjYuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnku
eWFybnBrZy5jb20vanNkb20vLS9qc2RvbS05LjYuMC50Z3ojZTBlOWIxNWJhMDdlOTBiMWQ5ZWMw
ODNmOWJlZGVlMGY2ODAwYTRmYiIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGFiYWIgIl4xLjAuMCIK
LSAgICBhY29ybiAiXjIuNC4wIgotICAgIGFjb3JuLWdsb2JhbHMgIl4xLjAuNCIKLSAgICBhcnJh
eS1lcXVhbCAiXjEuMC4wIgotICAgIGNzc29tICI+PSAwLjMuMCA8IDAuNC4wIgotICAgIGNzc3N0
eWxlICI+PSAwLjIuMzYgPCAwLjMuMCIKLSAgICBlc2NvZGVnZW4gIl4xLjYuMSIKLSAgICBpY29u
di1saXRlICJeMC40LjEzIgotICAgIG53bWF0Y2hlciAiPj0gMS4zLjcgPCAyLjAuMCIKLSAgICBw
YXJzZTUgIl4xLjUuMSIKLSAgICByZXF1ZXN0ICJeMi41NS4wIgotICAgIHNheCAiXjEuMS40Igot
ICAgIHN5bWJvbC10cmVlICI+PSAzLjEuMCA8IDQuMC4wIgotICAgIHRvdWdoLWNvb2tpZSAiXjIu
My4xIgotICAgIHdlYmlkbC1jb252ZXJzaW9ucyAiXjMuMC4xIgotICAgIHdoYXR3Zy11cmwgIl4z
LjAuMCIKLSAgICB4bWwtbmFtZS12YWxpZGF0b3IgIj49IDIuMC4xIDwgMy4wLjAiCi0KLWpzZXNj
QF4xLjMuMDoKLSAgdmVyc2lvbiAiMS4zLjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5
Lnlhcm5wa2cuY29tL2pzZXNjLy0vanNlc2MtMS4zLjAudGd6IzQ2YzNmZWM4YzE4OTJiMTJiMDgz
M2RiOWJjNzYyMjE3NmRiYWIzNGIiCi0KLWpzZXNjQH4wLjUuMDoKLSAgdmVyc2lvbiAiMC41LjAi
Ci0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2pzZXNjLy0vanNlc2Mt
MC41LjAudGd6I2U3ZGVlNjZlMzVkNmZjMTZmNzEwZmU5MWQ1Y2Y2OWY3MGYwODkxMWQiCi0KLWpz
b24tbG9hZGVyQDAuNS40OgotICB2ZXJzaW9uICIwLjUuNCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8v
cmVnaXN0cnkueWFybnBrZy5jb20vanNvbi1sb2FkZXIvLS9qc29uLWxvYWRlci0wLjUuNC50Z3oj
OGJhYTEzNjVhNjMyZjU4YTNjNDZkMjAxNzVmYzYwMDJjOTZlMzdkZSIKLQotanNvbi1zY2hlbWFA
MC4yLjM6Ci0gIHZlcnNpb24gIjAuMi4zIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55
YXJucGtnLmNvbS9qc29uLXNjaGVtYS8tL2pzb24tc2NoZW1hLTAuMi4zLnRneiNiNDgwYzg5MmU1
OWEyZjA1OTU0Y2U3MjdiZDNmMmE0ZTg4MmY5ZTEzIgotCi1qc29uLXN0YWJsZS1zdHJpbmdpZnlA
XjEuMC4wLCBqc29uLXN0YWJsZS1zdHJpbmdpZnlAXjEuMC4xOgotICB2ZXJzaW9uICIxLjAuMSIK
LSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vanNvbi1zdGFibGUtc3Ry
aW5naWZ5Ly0vanNvbi1zdGFibGUtc3RyaW5naWZ5LTEuMC4xLnRneiM5YTc1OWQzOWM1ZjJmZjUw
M2ZkNTMwMDY0NmVkNDQ1Zjg4YzRmOWFmIgotICBkZXBlbmRlbmNpZXM6Ci0gICAganNvbmlmeSAi
fjAuMC4wIgotCi1qc29uLXN0cmluZ2lmeS1zYWZlQH41LjAuMToKLSAgdmVyc2lvbiAiNS4wLjEi
Ci0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2pzb24tc3RyaW5naWZ5
LXNhZmUvLS9qc29uLXN0cmluZ2lmeS1zYWZlLTUuMC4xLnRneiMxMjk2YTJkNThmZDQ1ZjE5YTBm
NmNlMDFkNjU3MDFlMmM3MzViNmViIgotCi1qc29uM0BeMy4zLjI6Ci0gIHZlcnNpb24gIjMuMy4y
IgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9qc29uMy8tL2pzb24z
LTMuMy4yLnRneiMzYzA0MzQ3NDNkZjkzZTJmNWM0MmFlZTdiMTliY2I0ODM1NzVmNGUxIgotCi1q
c29uNUBeMC40LjA6Ci0gIHZlcnNpb24gIjAuNC4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdp
c3RyeS55YXJucGtnLmNvbS9qc29uNS8tL2pzb241LTAuNC4wLnRneiMwNTQzNTJlNGM0YzgwYzg2
YzA5MjM4NzdkNDQ5ZGUxNzZhNzMyYzhkIgotCi1qc29uNUBeMC41LjA6Ci0gIHZlcnNpb24gIjAu
NS4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9qc29uNS8tL2pz
b241LTAuNS4wLnRneiM5YjIwNzE1YjAyNmNiZTM3NzhmZDc2OWVkY2NkODIyZDgzMzJhNWIyIgot
Ci1qc29uZmlsZUBeMi4xLjA6Ci0gIHZlcnNpb24gIjIuNC4wIgotICByZXNvbHZlZCAiaHR0cHM6
Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9qc29uZmlsZS8tL2pzb25maWxlLTIuNC4wLnRneiMzNzM2
YTJiNDI4Yjg3YmJkYTBjYzgzYjUzZmEzZDYzM2EzNWMyYWU4IgotICBvcHRpb25hbERlcGVuZGVu
Y2llczoKLSAgICBncmFjZWZ1bC1mcyAiXjQuMS42IgotCi1qc29uaWZ5QH4wLjAuMDoKLSAgdmVy
c2lvbiAiMC4wLjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2pz
b25pZnkvLS9qc29uaWZ5LTAuMC4wLnRneiMyYzc0YjZlZTQxZDkzY2E1MWI3YjVhYWVlOGY1MDM2
MzFkMjUyYTczIgotCi1qc29ucG9pbnRlckBeNC4wLjA6Ci0gIHZlcnNpb24gIjQuMC4wIgotICBy
ZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9qc29ucG9pbnRlci8tL2pzb25w
b2ludGVyLTQuMC4wLnRneiM2NjYxZTE2MWQyZmM0NDVmMTlmOTg0MzAyMzEzNDM3MjJlMWZjYmQ1
IgotCi1qc3ByaW1AXjEuMi4yOgotICB2ZXJzaW9uICIxLjMuMSIKLSAgcmVzb2x2ZWQgImh0dHBz
Oi8vcmVnaXN0cnkueWFybnBrZy5jb20vanNwcmltLy0vanNwcmltLTEuMy4xLnRneiMyYTcyNTZm
NzA0MTJhMjllZTM2NzBhYWNhNjI1OTk0YzRkY2ZmMjUyIgotICBkZXBlbmRlbmNpZXM6Ci0gICAg
ZXh0c3ByaW50ZiAiMS4wLjIiCi0gICAganNvbi1zY2hlbWEgIjAuMi4zIgotICAgIHZlcnJvciAi
MS4zLjYiCi0KLWpzeC1hc3QtdXRpbHNAXjEuMC4wLCBqc3gtYXN0LXV0aWxzQF4xLjMuMToKLSAg
dmVyc2lvbiAiMS4zLjEiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29t
L2pzeC1hc3QtdXRpbHMvLS9qc3gtYXN0LXV0aWxzLTEuMy4xLnRneiMxNDMxM2M1YzUwZGE1YjBj
NDcwMjBhZjVkMTU2MGMxN2U3ODFhMDVhIgotICBkZXBlbmRlbmNpZXM6Ci0gICAgb2JqZWN0LWFz
c2lnbiAiXjQuMS4wIgotCi1raW5kLW9mQF4zLjAuMjoKLSAgdmVyc2lvbiAiMy4wLjQiCi0gIHJl
c29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2tpbmQtb2YvLS9raW5kLW9mLTMu
MC40LnRneiM3YjhlY2YxOGE0ZTE3ZjgyNjlkNzNiNTAxYzlmMjMyYzk2ODg3YTc0IgotICBkZXBl
bmRlbmNpZXM6Ci0gICAgaXMtYnVmZmVyICJeMS4wLjIiCi0KLWtsYXdAXjEuMC4wOgotICB2ZXJz
aW9uICIxLjMuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20va2xh
dy8tL2tsYXctMS4zLjAudGd6Izg4NTdiZmJjMWQ4MjRiYWRmMTNkM2QwMjQxZDhiYmU0NmZiMTJm
NzMiCi0KLWxhenktY2FjaGVAXjEuMC4zOgotICB2ZXJzaW9uICIxLjAuNCIKLSAgcmVzb2x2ZWQg
Imh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vbGF6eS1jYWNoZS8tL2xhenktY2FjaGUtMS4w
LjQudGd6I2ExZDc4ZmMzYTUwNDc0Y2I4MDg0NWQzYjNiNmUxZGE0OWE0NDZlOGUiCi0KLWxjaWRA
XjEuMC4wOgotICB2ZXJzaW9uICIxLjAuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnku
eWFybnBrZy5jb20vbGNpZC8tL2xjaWQtMS4wLjAudGd6IzMwOGFjY2FmYTBiYzQ4M2EzODY3YjRi
NmYyYjk1MDYyNTFkMWI4MzUiCi0gIGRlcGVuZGVuY2llczoKLSAgICBpbnZlcnQta3YgIl4xLjAu
MCIKLQotbGV2bkBeMC4zLjAsIGxldm5AfjAuMy4wOgotICB2ZXJzaW9uICIwLjMuMCIKLSAgcmVz
b2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vbGV2bi8tL2xldm4tMC4zLjAudGd6
IzNiMDk5MjRlZGY5ZjA4M2MwNDkwZmRkNGMwYmM0NDIxZTA0NzY0ZWUiCi0gIGRlcGVuZGVuY2ll
czoKLSAgICBwcmVsdWRlLWxzICJ+MS4xLjIiCi0gICAgdHlwZS1jaGVjayAifjAuMy4yIgotCi1s
b2FkLWpzb24tZmlsZUBeMS4wLjA6Ci0gIHZlcnNpb24gIjEuMS4wIgotICByZXNvbHZlZCAiaHR0
cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9sb2FkLWpzb24tZmlsZS8tL2xvYWQtanNvbi1maWxl
LTEuMS4wLnRneiM5NTY5MDU3MDhkNThiNGJhYjRjMjI2MWIwNGY1OWYzMWM5OTM3NGMwIgotICBk
ZXBlbmRlbmNpZXM6Ci0gICAgZ3JhY2VmdWwtZnMgIl40LjEuMiIKLSAgICBwYXJzZS1qc29uICJe
Mi4yLjAiCi0gICAgcGlmeSAiXjIuMC4wIgotICAgIHBpbmtpZS1wcm9taXNlICJeMi4wLjAiCi0g
ICAgc3RyaXAtYm9tICJeMi4wLjAiCi0KLWxvYWRlci11dGlsc0BeMC4yLjExLCBsb2FkZXItdXRp
bHNAXjAuMi4xNSwgbG9hZGVyLXV0aWxzQF4wLjIuMywgbG9hZGVyLXV0aWxzQF4wLjIuNywgbG9h
ZGVyLXV0aWxzQH4wLjIuMiwgbG9hZGVyLXV0aWxzQH4wLjIuNSwgbG9hZGVyLXV0aWxzQDAuMi54
OgotICB2ZXJzaW9uICIwLjIuMTYiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5w
a2cuY29tL2xvYWRlci11dGlscy8tL2xvYWRlci11dGlscy0wLjIuMTYudGd6I2YwODYzMjA2NmVk
ODI4MjgzNWRmZjg4ZGZiNTI3MDQ3NjVhZGVlNmQiCi0gIGRlcGVuZGVuY2llczoKLSAgICBiaWcu
anMgIl4zLjEuMyIKLSAgICBlbW9qaXMtbGlzdCAiXjIuMC4wIgotICAgIGpzb241ICJeMC41LjAi
Ci0gICAgb2JqZWN0LWFzc2lnbiAiXjQuMC4xIgotCi1sb2Rhc2gtZXNAXjQuMi4xOgotICB2ZXJz
aW9uICI0LjE2LjQiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2xv
ZGFzaC1lcy8tL2xvZGFzaC1lcy00LjE2LjQudGd6IzRkYzNlMmNmMzNhOGMzNDMwMjhhYTdmN2Uw
NmQxYzk2OTcwNDI1OTkiCi0KLWxvZGFzaC5fYXJyYXljb3B5QF4zLjAuMDoKLSAgdmVyc2lvbiAi
My4wLjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2xvZGFzaC5f
YXJyYXljb3B5Ly0vbG9kYXNoLl9hcnJheWNvcHktMy4wLjAudGd6Izc2ZTdiN2MxZjFmYjkyNTQ3
Mzc0ODc4YTU2MmVkMDZhM2U1MGY2ZTEiCi0KLWxvZGFzaC5fYXJyYXllYWNoQF4zLjAuMDoKLSAg
dmVyc2lvbiAiMy4wLjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29t
L2xvZGFzaC5fYXJyYXllYWNoLy0vbG9kYXNoLl9hcnJheWVhY2gtMy4wLjAudGd6I2JhYjE1NmIy
YTkwZDNmMWJiZDVjNjUzNDAzMzQ5ZTVlNTkzM2VmOWUiCi0KLWxvZGFzaC5fYmFzZWFzc2lnbkBe
My4wLjA6Ci0gIHZlcnNpb24gIjMuMi4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55
YXJucGtnLmNvbS9sb2Rhc2guX2Jhc2Vhc3NpZ24vLS9sb2Rhc2guX2Jhc2Vhc3NpZ24tMy4yLjAu
dGd6IzhjMzhhMDk5NTAwZjIxNWFkMDllNTlmMTcyMmZkMGM1MmJmZTBhNGUiCi0gIGRlcGVuZGVu
Y2llczoKLSAgICBsb2Rhc2guX2Jhc2Vjb3B5ICJeMy4wLjAiCi0gICAgbG9kYXNoLmtleXMgIl4z
LjAuMCIKLQotbG9kYXNoLl9iYXNlY2xvbmVAXjMuMC4wOgotICB2ZXJzaW9uICIzLjMuMCIKLSAg
cmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vbG9kYXNoLl9iYXNlY2xvbmUv
LS9sb2Rhc2guX2Jhc2VjbG9uZS0zLjMuMC50Z3ojMzAzNTE5YmY2MzkzZmU3ZTQyZjM0ZDhiNjMw
ZWY3Nzk0ZTM1NDJiNyIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGxvZGFzaC5fYXJyYXljb3B5ICJe
My4wLjAiCi0gICAgbG9kYXNoLl9hcnJheWVhY2ggIl4zLjAuMCIKLSAgICBsb2Rhc2guX2Jhc2Vh
c3NpZ24gIl4zLjAuMCIKLSAgICBsb2Rhc2guX2Jhc2Vmb3IgIl4zLjAuMCIKLSAgICBsb2Rhc2gu
aXNhcnJheSAiXjMuMC4wIgotICAgIGxvZGFzaC5rZXlzICJeMy4wLjAiCi0KLWxvZGFzaC5fYmFz
ZWNvcHlAXjMuMC4wOgotICB2ZXJzaW9uICIzLjAuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVn
aXN0cnkueWFybnBrZy5jb20vbG9kYXNoLl9iYXNlY29weS8tL2xvZGFzaC5fYmFzZWNvcHktMy4w
LjEudGd6IzhkYTBlNmE4NzZjZjM0NGMwYWQ4YTU0ODgyMTExZGQzYzVjN2NhMzYiCi0KLWxvZGFz
aC5fYmFzZWZvckBeMy4wLjA6Ci0gIHZlcnNpb24gIjMuMC4zIgotICByZXNvbHZlZCAiaHR0cHM6
Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9sb2Rhc2guX2Jhc2Vmb3IvLS9sb2Rhc2guX2Jhc2Vmb3It
My4wLjMudGd6Izc1NTBiNGU5MjE4ZWYwOWZhZDI0MzQzYjYxMjAyMWM3OWI0YzIwYzIiCi0KLWxv
ZGFzaC5fYmluZGNhbGxiYWNrQF4zLjAuMDoKLSAgdmVyc2lvbiAiMy4wLjEiCi0gIHJlc29sdmVk
ICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2xvZGFzaC5fYmluZGNhbGxiYWNrLy0vbG9k
YXNoLl9iaW5kY2FsbGJhY2stMy4wLjEudGd6I2U1MzFjMjc2NDRjZjhiNTdhOTllMTdlZDk1YjM1
Yzc0ODc4OTM5MmUiCi0KLWxvZGFzaC5fY3JlYXRlY29tcG91bmRlckBeMy4wLjA6Ci0gIHZlcnNp
b24gIjMuMC4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9sb2Rh
c2guX2NyZWF0ZWNvbXBvdW5kZXIvLS9sb2Rhc2guX2NyZWF0ZWNvbXBvdW5kZXItMy4wLjAudGd6
IzVkZDJjYjU1MzcyZDZlNzBlMGUyMzkyZmIyMzA0ZDY2MzEwOTEwNzUiCi0gIGRlcGVuZGVuY2ll
czoKLSAgICBsb2Rhc2guZGVidXJyICJeMy4wLjAiCi0gICAgbG9kYXNoLndvcmRzICJeMy4wLjAi
Ci0KLWxvZGFzaC5fZ2V0bmF0aXZlQF4zLjAuMDoKLSAgdmVyc2lvbiAiMy45LjEiCi0gIHJlc29s
dmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2xvZGFzaC5fZ2V0bmF0aXZlLy0vbG9k
YXNoLl9nZXRuYXRpdmUtMy45LjEudGd6IzU3MGJjN2RlZGU0NmQ2MWNkY2RlNjg3ZDY1ZDNlZWNi
YWEzYWFmZjUiCi0KLWxvZGFzaC5fcm9vdEBeMy4wLjA6Ci0gIHZlcnNpb24gIjMuMC4xIgotICBy
ZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9sb2Rhc2guX3Jvb3QvLS9sb2Rh
c2guX3Jvb3QtMy4wLjEudGd6I2ZiYTFjNDUyNGMxOWVlOWE1ZjgxMzZiNDYwOWYwMTdjZjRkZWQ2
OTIiCi0KLWxvZGFzaC5hc3NpZ25AXjQuMC4wLCBsb2Rhc2guYXNzaWduQF40LjEuMCwgbG9kYXNo
LmFzc2lnbkBeNC4yLjA6Ci0gIHZlcnNpb24gIjQuMi4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9y
ZWdpc3RyeS55YXJucGtnLmNvbS9sb2Rhc2guYXNzaWduLy0vbG9kYXNoLmFzc2lnbi00LjIuMC50
Z3ojMGQ5OWYzY2NkN2E2ZDI2MWQxOWJkYWViOTI0NTAwNWQyODU4MDhlNyIKLQotbG9kYXNoLmNh
bWVsY2FzZUBeMy4wLjE6Ci0gIHZlcnNpb24gIjMuMC4xIgotICByZXNvbHZlZCAiaHR0cHM6Ly9y
ZWdpc3RyeS55YXJucGtnLmNvbS9sb2Rhc2guY2FtZWxjYXNlLy0vbG9kYXNoLmNhbWVsY2FzZS0z
LjAuMS50Z3ojOTMyYzhiODdmOGE0Mzc3ODk3YzY3MTk3NTMzMjgyZjk3YWVhYzI5OCIKLSAgZGVw
ZW5kZW5jaWVzOgotICAgIGxvZGFzaC5fY3JlYXRlY29tcG91bmRlciAiXjMuMC4wIgotCi1sb2Rh
c2guY2xvbmVkZWVwQF4zLjAuMDoKLSAgdmVyc2lvbiAiMy4wLjIiCi0gIHJlc29sdmVkICJodHRw
czovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2xvZGFzaC5jbG9uZWRlZXAvLS9sb2Rhc2guY2xvbmVk
ZWVwLTMuMC4yLnRneiNhMGExZTQwZDgyYTVlYTg5ZmY1YjE0N2I4NDQ0ZWQ2M2Q5MjgyN2RiIgot
ICBkZXBlbmRlbmNpZXM6Ci0gICAgbG9kYXNoLl9iYXNlY2xvbmUgIl4zLjAuMCIKLSAgICBsb2Rh
c2guX2JpbmRjYWxsYmFjayAiXjMuMC4wIgotCi1sb2Rhc2guY29uZEBeNC4zLjA6Ci0gIHZlcnNp
b24gIjQuNS4yIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9sb2Rh
c2guY29uZC8tL2xvZGFzaC5jb25kLTQuNS4yLnRneiNmNDcxYTFkYTQ4NmJlNjBmNmFiOTU1ZDE3
MTE1NTIzZGQxZDI1NWQ1IgotCi1sb2Rhc2guZGVidXJyQF4zLjAuMDoKLSAgdmVyc2lvbiAiMy4y
LjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2xvZGFzaC5kZWJ1
cnIvLS9sb2Rhc2guZGVidXJyLTMuMi4wLnRneiM2ZGE4ZjU0MzM0YTM2NmE3Y2Y0YzRjNzZlZjhk
ODBhYTFiMzY1ZWQ1IgotICBkZXBlbmRlbmNpZXM6Ci0gICAgbG9kYXNoLl9yb290ICJeMy4wLjAi
Ci0KLWxvZGFzaC5lbmRzd2l0aEBeNC4wLjE6Ci0gIHZlcnNpb24gIjQuMi4xIgotICByZXNvbHZl
ZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9sb2Rhc2guZW5kc3dpdGgvLS9sb2Rhc2gu
ZW5kc3dpdGgtNC4yLjEudGd6I2ZlZDU5YWMxNzM4ZWQzZTIzNmVkZDcwNjRlYzQ1NjQ0OGIzN2Jj
MDkiCi0KLWxvZGFzaC5maW5kQF40LjMuMDoKLSAgdmVyc2lvbiAiNC42LjAiCi0gIHJlc29sdmVk
ICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2xvZGFzaC5maW5kLy0vbG9kYXNoLmZpbmQt
NC42LjAudGd6I2NiMDcwNGQ0N2FiNzE3ODlmZmEwZGU4Yjk3ZGQ5MjZmYjg4YjEzYjEiCi0KLWxv
ZGFzaC5maW5kaW5kZXhAXjQuMy4wOgotICB2ZXJzaW9uICI0LjYuMCIKLSAgcmVzb2x2ZWQgImh0
dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vbG9kYXNoLmZpbmRpbmRleC8tL2xvZGFzaC5maW5k
aW5kZXgtNC42LjAudGd6I2EzMjQ1ZGVlNjFmYjliNmUwNjI0YjUzNTEyNTYyNGJiNjljMTExMDYi
Ci0KLWxvZGFzaC5pbmRleG9mQF40LjAuNToKLSAgdmVyc2lvbiAiNC4wLjUiCi0gIHJlc29sdmVk
ICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2xvZGFzaC5pbmRleG9mLy0vbG9kYXNoLmlu
ZGV4b2YtNC4wLjUudGd6IzUzNzE0YWRjMmNkZGQ2ZWQ4NzYzOGY4OTNhYTliNmMyNGUzMWVmM2Mi
Ci0KLWxvZGFzaC5pc2FyZ3VtZW50c0BeMy4wLjA6Ci0gIHZlcnNpb24gIjMuMS4wIgotICByZXNv
bHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9sb2Rhc2guaXNhcmd1bWVudHMvLS9s
b2Rhc2guaXNhcmd1bWVudHMtMy4xLjAudGd6IzJmNTczZDg1YzZhMjQyODlmZjAwNjYzYjQ5MWMx
ZDMzOGZmMzQ1OGEiCi0KLWxvZGFzaC5pc2FycmF5QF4zLjAuMDoKLSAgdmVyc2lvbiAiMy4wLjQi
Ci0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2xvZGFzaC5pc2FycmF5
Ly0vbG9kYXNoLmlzYXJyYXktMy4wLjQudGd6Izc5ZTRlYjg4YzM2YTgxMjJhZjg2Zjg0NGFhOWJj
ZDg1MWI1ZmJiNTUiCi0KLWxvZGFzaC5rZXlzQF4zLjAuMDoKLSAgdmVyc2lvbiAiMy4xLjIiCi0g
IHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2xvZGFzaC5rZXlzLy0vbG9k
YXNoLmtleXMtMy4xLjIudGd6IzRkYmMwNDcyYjE1NmJlNTBhMGIyODY4NTVkMWJkMGIwYzY1NjA5
OGEiCi0gIGRlcGVuZGVuY2llczoKLSAgICBsb2Rhc2guX2dldG5hdGl2ZSAiXjMuMC4wIgotICAg
IGxvZGFzaC5pc2FyZ3VtZW50cyAiXjMuMC4wIgotICAgIGxvZGFzaC5pc2FycmF5ICJeMy4wLjAi
Ci0KLWxvZGFzaC5waWNrYnlAXjQuMC4wOgotICB2ZXJzaW9uICI0LjYuMCIKLSAgcmVzb2x2ZWQg
Imh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vbG9kYXNoLnBpY2tieS8tL2xvZGFzaC5waWNr
YnktNC42LjAudGd6IzdkZWEyMWQ4YzE4ZDc3MDNhMjdjNzA0YzE1ZDNiODRhNjdlMzNhZmYiCi0K
LWxvZGFzaC53b3Jkc0BeMy4wLjA6Ci0gIHZlcnNpb24gIjMuMi4wIgotICByZXNvbHZlZCAiaHR0
cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9sb2Rhc2gud29yZHMvLS9sb2Rhc2gud29yZHMtMy4y
LjAudGd6IzRlMmE4NjQ5YmMwODc0NWIxN2M2OTViMWEzY2U4ZmVlNTk2NjIzYjMiCi0gIGRlcGVu
ZGVuY2llczoKLSAgICBsb2Rhc2guX3Jvb3QgIl4zLjAuMCIKLQotbG9kYXNoQF40LjAuMCwgbG9k
YXNoQF40LjEuMCwgbG9kYXNoQF40LjEzLjEsIGxvZGFzaEBeNC4xNC4yLCBsb2Rhc2hAXjQuMTUu
MCwgbG9kYXNoQF40LjE2LjIsIGxvZGFzaEBeNC4yLjAsIGxvZGFzaEBeNC4yLjEsIGxvZGFzaEBe
NC4zLjA6Ci0gIHZlcnNpb24gIjQuMTYuNCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnku
eWFybnBrZy5jb20vbG9kYXNoLy0vbG9kYXNoLTQuMTYuNC50Z3ojMDFjZTMwNmI5YmFkMTMxOWYy
YTU1Mjg2NzRmODgyOTdhZWI3MDEyNyIKLQotbG9uZ2VzdEBeMS4wLjE6Ci0gIHZlcnNpb24gIjEu
MC4xIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9sb25nZXN0Ly0v
bG9uZ2VzdC0xLjAuMS50Z3ojMzBhMGIyZGEzOGY3Mzc3MGU4Mjk0YTBkMjJlNjYyNWVkNzdkMDA5
NyIKLQotbG9vc2UtZW52aWZ5QF4xLjAuMCwgbG9vc2UtZW52aWZ5QF4xLjEuMDoKLSAgdmVyc2lv
biAiMS4yLjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2xvb3Nl
LWVudmlmeS8tL2xvb3NlLWVudmlmeS0xLjIuMC50Z3ojNjlhNjVhYWQzZGU1NDJjZjRlZTBmNGZl
NzRlOGUzM2M3MDljY2IwZiIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGpzLXRva2VucyAiXjEuMC4x
IgotCi1sb3dlci1jYXNlLWZpcnN0QF4xLjAuMDoKLSAgdmVyc2lvbiAiMS4wLjIiCi0gIHJlc29s
dmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2xvd2VyLWNhc2UtZmlyc3QvLS9sb3dl
ci1jYXNlLWZpcnN0LTEuMC4yLnRneiNlNWRhN2MyNmYyOWE3MDczYmUwMmQ1MmJhYzk5ODBlNTky
MmFkZmExIgotICBkZXBlbmRlbmNpZXM6Ci0gICAgbG93ZXItY2FzZSAiXjEuMS4yIgotCi1sb3dl
ci1jYXNlQF4xLjEuMCwgbG93ZXItY2FzZUBeMS4xLjEsIGxvd2VyLWNhc2VAXjEuMS4yOgotICB2
ZXJzaW9uICIxLjEuMyIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20v
bG93ZXItY2FzZS8tL2xvd2VyLWNhc2UtMS4xLjMudGd6I2M5MjM5M2Q5NzY3OTNlZWU1YmE0ZWRi
NTgzY2Y4ZWFlMzViZDliZmIiCi0KLWxydS1jYWNoZUBeNC4wLjE6Ci0gIHZlcnNpb24gIjQuMC4x
IgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9scnUtY2FjaGUvLS9s
cnUtY2FjaGUtNC4wLjEudGd6IzEzNDM5NTVlZGFmMmUzN2Q5YjllN2VlNzI0MWUyN2M0YjlmYjcy
YmUiCi0gIGRlcGVuZGVuY2llczoKLSAgICBwc2V1ZG9tYXAgIl4xLjAuMSIKLSAgICB5YWxsaXN0
ICJeMi4wLjAiCi0KLW1hY2FkZHJlc3NAXjAuMi44OgotICB2ZXJzaW9uICIwLjIuOCIKLSAgcmVz
b2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vbWFjYWRkcmVzcy8tL21hY2FkZHJl
c3MtMC4yLjgudGd6IzU5MDRkYzUzN2MzOWVjNmRiZWZlYWU5MDIzMjcxMzVmYTg1MTFmMTIiCi0K
LW1ha2VlcnJvckAxLjAueDoKLSAgdmVyc2lvbiAiMS4wLjExIgotICByZXNvbHZlZCAiaHR0cHM6
Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9tYWtlZXJyb3IvLS9tYWtlZXJyb3ItMS4wLjExLnRneiNl
MDFhNWM5MTA5ZjJhZjc5NjYwZTRlOGI5NTg3NzkwMTg0ZjVhOTZjIgotICBkZXBlbmRlbmNpZXM6
Ci0gICAgdG1wbCAiMS4wLngiCi0KLW1hcmtlZC10ZXJtaW5hbEBeMS42LjI6Ci0gIHZlcnNpb24g
IjEuNi4yIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9tYXJrZWQt
dGVybWluYWwvLS9tYXJrZWQtdGVybWluYWwtMS42LjIudGd6IzQ0YzEyOGQ2OWI1ZDk3NzZjODQ4
MzE0Y2RmNjlkNGVjOTYzMjI5NzMiCi0gIGRlcGVuZGVuY2llczoKLSAgICBjYXJkaW5hbCAiXjEu
MC4wIgotICAgIGNoYWxrICJeMS4wLjAiCi0gICAgY2xpLXRhYmxlICJeMC4zLjEiCi0gICAgbG9k
YXNoLmFzc2lnbiAiXjQuMi4wIgotICAgIG5vZGUtZW1vamkgIl4xLjMuMSIKLQotbWFya2VkQF4w
LjMuNjoKLSAgdmVyc2lvbiAiMC4zLjYiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlh
cm5wa2cuY29tL21hcmtlZC8tL21hcmtlZC0wLjMuNi50Z3ojYjJjNmM2MThmY2NlY2U0ZWY4NmM0
ZmM2Y2I4YTdjYmY1YWVkYThkNyIKLQotbWF0aC1leHByZXNzaW9uLWV2YWx1YXRvckBeMS4yLjE0
OgotICB2ZXJzaW9uICIxLjIuMTQiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5w
a2cuY29tL21hdGgtZXhwcmVzc2lvbi1ldmFsdWF0b3IvLS9tYXRoLWV4cHJlc3Npb24tZXZhbHVh
dG9yLTEuMi4xNC50Z3ojMzk1MTE3NzFlZDk2MDI0MDVmYmE5YWZmZmYxN2ViNGQyYTM4NDNhYiIK
LSAgZGVwZW5kZW5jaWVzOgotICAgIGxvZGFzaC5pbmRleG9mICJeNC4wLjUiCi0KLW1lZGlhLXR5
cGVyQDAuMy4wOgotICB2ZXJzaW9uICIwLjMuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0
cnkueWFybnBrZy5jb20vbWVkaWEtdHlwZXIvLS9tZWRpYS10eXBlci0wLjMuMC50Z3ojODcxMGQ3
YWYwYWE2MjZmOGZmZmExY2UwMDE2ODU0NTI2MzI1NTc0OCIKLQotbWVtb3J5LWZzQF4wLjIuMDoK
LSAgdmVyc2lvbiAiMC4yLjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cu
Y29tL21lbW9yeS1mcy8tL21lbW9yeS1mcy0wLjIuMC50Z3ojZjJiYjI1MzY4YmMxMjFlMzkxYzI1
MjBkZTkyOTY5Y2FlZTBhMDI5MCIKLQotbWVtb3J5LWZzQH4wLjMuMDoKLSAgdmVyc2lvbiAiMC4z
LjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL21lbW9yeS1mcy8t
L21lbW9yeS1mcy0wLjMuMC50Z3ojN2JjYzZiNjI5ZTNhNDNlODcxZDdlMjlhY2E2YWU4YTdmMTVj
YmIyMCIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGVycm5vICJeMC4xLjMiCi0gICAgcmVhZGFibGUt
c3RyZWFtICJeMi4wLjEiCi0KLW1lcmdlLWRlc2NyaXB0b3JzQDEuMC4xOgotICB2ZXJzaW9uICIx
LjAuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vbWVyZ2UtZGVz
Y3JpcHRvcnMvLS9tZXJnZS1kZXNjcmlwdG9ycy0xLjAuMS50Z3ojYjAwYWFhNTU2ZGQ4YjQ0NTY4
MTUwZWM5ZDFiOTUzZjNmOTBjYmI2MSIKLQotbWVyZ2VAXjEuMS4zOgotICB2ZXJzaW9uICIxLjIu
MCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vbWVyZ2UvLS9tZXJn
ZS0xLjIuMC50Z3ojNzUzMWUzOWQ0OTQ5YzI4MWE2NmI4YzVhNmUwMjY1ZThiMDU4OTRkYSIKLQot
bWV0aG9kc0B+MS4xLjI6Ci0gIHZlcnNpb24gIjEuMS4yIgotICByZXNvbHZlZCAiaHR0cHM6Ly9y
ZWdpc3RyeS55YXJucGtnLmNvbS9tZXRob2RzLy0vbWV0aG9kcy0xLjEuMi50Z3ojNTUyOWE0ZDY3
NjU0MTM0ZWRjYzUyNjY2NTY4MzViMGY4NTFhZmNlZSIKLQotbWljcm9tYXRjaEBeMi4xLjUsIG1p
Y3JvbWF0Y2hAXjIuMy4xMToKLSAgdmVyc2lvbiAiMi4zLjExIgotICByZXNvbHZlZCAiaHR0cHM6
Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9taWNyb21hdGNoLy0vbWljcm9tYXRjaC0yLjMuMTEudGd6
Izg2Njc3Yzk3ZDE3MjBiMzYzNDMxZDA0ZDBkMTUyOTNiZDM4YzE1NjUiCi0gIGRlcGVuZGVuY2ll
czoKLSAgICBhcnItZGlmZiAiXjIuMC4wIgotICAgIGFycmF5LXVuaXF1ZSAiXjAuMi4xIgotICAg
IGJyYWNlcyAiXjEuOC4yIgotICAgIGV4cGFuZC1icmFja2V0cyAiXjAuMS40IgotICAgIGV4dGds
b2IgIl4wLjMuMSIKLSAgICBmaWxlbmFtZS1yZWdleCAiXjIuMC4wIgotICAgIGlzLWV4dGdsb2Ig
Il4xLjAuMCIKLSAgICBpcy1nbG9iICJeMi4wLjEiCi0gICAga2luZC1vZiAiXjMuMC4yIgotICAg
IG5vcm1hbGl6ZS1wYXRoICJeMi4wLjEiCi0gICAgb2JqZWN0Lm9taXQgIl4yLjAuMCIKLSAgICBw
YXJzZS1nbG9iICJeMy4wLjQiCi0gICAgcmVnZXgtY2FjaGUgIl4wLjQuMiIKLQotIm1pbWUtZGJA
Pj0gMS4yMy4wIDwgMiIsIG1pbWUtZGJAfjEuMjQuMDoKLSAgdmVyc2lvbiAiMS4yNC4wIgotICBy
ZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9taW1lLWRiLy0vbWltZS1kYi0x
LjI0LjAudGd6I2UyZDEzZjkzOWYwMDE2YzZlNGU5YWQyNWE4NjUyZjEyNmM0NjdmMGMiCi0KLW1p
bWUtdHlwZXNAXjIuMS4xMSwgbWltZS10eXBlc0B+Mi4xLjExLCBtaW1lLXR5cGVzQH4yLjEuNzoK
LSAgdmVyc2lvbiAiMi4xLjEyIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtn
LmNvbS9taW1lLXR5cGVzLy0vbWltZS10eXBlcy0yLjEuMTIudGd6IzE1MmJhMjU2Nzc3MDIwZGQ0
NjYzZjU0YzJlN2JjMjYzODFlNzE3MjkiCi0gIGRlcGVuZGVuY2llczoKLSAgICBtaW1lLWRiICJ+
MS4yNC4wIgotCi1taW1lQF4xLjMuNCwgbWltZUAxLjMuNDoKLSAgdmVyc2lvbiAiMS4zLjQiCi0g
IHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL21pbWUvLS9taW1lLTEuMy40
LnRneiMxMTVmOWUzYjZiM2RhZjI5NTk5ODNjYjM4ZjE0OWEyZDQwZWI1ZDUzIgotCi1taW1lQDEu
Mi54OgotICB2ZXJzaW9uICIxLjIuMTEiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlh
cm5wa2cuY29tL21pbWUvLS9taW1lLTEuMi4xMS50Z3ojNTgyMDNlZWQ4NmUzYTVlZjE3YWVkMmI3
ZDllYmQ0N2YwYTYwZGQxMCIKLQotbWluaW1hdGNoQF4zLjAuMCwgbWluaW1hdGNoQF4zLjAuMiwg
Im1pbmltYXRjaEAyIHx8IDMiOgotICB2ZXJzaW9uICIzLjAuMyIKLSAgcmVzb2x2ZWQgImh0dHBz
Oi8vcmVnaXN0cnkueWFybnBrZy5jb20vbWluaW1hdGNoLy0vbWluaW1hdGNoLTMuMC4zLnRneiMy
YTRlNDA5MGI5NmIyZGIwNmE5ZDdkZjAxMDU1YTYyYTc3YzliNzc0IgotICBkZXBlbmRlbmNpZXM6
Ci0gICAgYnJhY2UtZXhwYW5zaW9uICJeMS4wLjAiCi0KLW1pbmltYXRjaEAyLng6Ci0gIHZlcnNp
b24gIjIuMC4xMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vbWlu
aW1hdGNoLy0vbWluaW1hdGNoLTIuMC4xMC50Z3ojOGQwODdjMzljNmIzOGMwMDFiOTdmY2E3Y2U2
ZDBlMWU4MGFmYmFjNyIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGJyYWNlLWV4cGFuc2lvbiAiXjEu
MC4wIgotCi1taW5pbWF0Y2hAMy4wLjI6Ci0gIHZlcnNpb24gIjMuMC4yIgotICByZXNvbHZlZCAi
aHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9taW5pbWF0Y2gvLS9taW5pbWF0Y2gtMy4wLjIu
dGd6IzBmMzk4YTczMDBlYTQ0MWU5YzM0OGM4M2Q5OGFiOGM5ZGJmOWM0MGEiCi0gIGRlcGVuZGVu
Y2llczoKLSAgICBicmFjZS1leHBhbnNpb24gIl4xLjAuMCIKLQotbWluaW1pc3RAXjEuMS4wLCBt
aW5pbWlzdEBeMS4xLjEsIG1pbmltaXN0QF4xLjIuMDoKLSAgdmVyc2lvbiAiMS4yLjAiCi0gIHJl
c29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL21pbmltaXN0Ly0vbWluaW1pc3Qt
MS4yLjAudGd6I2EzNTAwOGIyMGY0MTM4M2VlYzFmYjkxNGY0Y2Q1ZGY3OWEyNjQyODQiCi0KLW1p
bmltaXN0QH4wLjAuMToKLSAgdmVyc2lvbiAiMC4wLjEwIgotICByZXNvbHZlZCAiaHR0cHM6Ly9y
ZWdpc3RyeS55YXJucGtnLmNvbS9taW5pbWlzdC8tL21pbmltaXN0LTAuMC4xMC50Z3ojZGUzZjk4
NTQzZGJmOTYwODJiZTQ4YWQxYTBjN2NkYTgzNjMwMWRjZiIKLQotbWluaW1pc3RAMC4wLjg6Ci0g
IHZlcnNpb24gIjAuMC44IgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNv
bS9taW5pbWlzdC8tL21pbmltaXN0LTAuMC44LnRneiM4NTdmY2FiZmMzMzk3ZDI2MjViODIyODI2
MmU4NmFhN2EwMTFiMDVkIgotCi1ta2RpcnBAXjAuNS4wLCBta2RpcnBAXjAuNS4xLCAibWtkaXJw
QD49MC41IDAiLCBta2RpcnBAfjAuNS4wLCBta2RpcnBAfjAuNS4xLCBta2RpcnBAMC41Lng6Ci0g
IHZlcnNpb24gIjAuNS4xIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNv
bS9ta2RpcnAvLS9ta2RpcnAtMC41LjEudGd6IzMwMDU3NDM4ZWFjNmNmN2Y4YzQ3NjdmMzg2NDhk
NjY5N2Q3NWM5MDMiCi0gIGRlcGVuZGVuY2llczoKLSAgICBtaW5pbWlzdCAiMC4wLjgiCi0KLW1z
QDAuNy4xOgotICB2ZXJzaW9uICIwLjcuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnku
eWFybnBrZy5jb20vbXMvLS9tcy0wLjcuMS50Z3ojOWNkMTNjMDNhZGJmZjI1YjY1ZWZmZGU3Y2U4
NjRlZTk1MjAxNzA5OCIKLQotbXVsdGltYXRjaEBeMi4xLjA6Ci0gIHZlcnNpb24gIjIuMS4wIgot
ICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9tdWx0aW1hdGNoLy0vbXVs
dGltYXRjaC0yLjEuMC50Z3ojOWM3OTA2YTIyZmI0YzAyOTE5ZTJmNWY3NTE2MWI0Y2RiZDRiMmEy
YiIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGFycmF5LWRpZmZlciAiXjEuMC4wIgotICAgIGFycmF5
LXVuaW9uICJeMS4wLjEiCi0gICAgYXJyaWZ5ICJeMS4wLjAiCi0gICAgbWluaW1hdGNoICJeMy4w
LjAiCi0KLW11dGUtc3RyZWFtQDAuMC41OgotICB2ZXJzaW9uICIwLjAuNSIKLSAgcmVzb2x2ZWQg
Imh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vbXV0ZS1zdHJlYW0vLS9tdXRlLXN0cmVhbS0w
LjAuNS50Z3ojOGZiZmFiYjBhOThhMjUzZDMxODQzMzFmOWU4ZGViNzM3MmZhYzZjMCIKLQotbmFu
QF4yLjMuMDoKLSAgdmVyc2lvbiAiMi40LjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5
Lnlhcm5wa2cuY29tL25hbi8tL25hbi0yLjQuMC50Z3ojZmIzYzU5ZDQ1ZmU0ZWZmZTIxNWYwYjg5
MGY4YWRmNmViMzJkMjIzMiIKLQotbmF0dXJhbC1jb21wYXJlQF4xLjQuMDoKLSAgdmVyc2lvbiAi
MS40LjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL25hdHVyYWwt
Y29tcGFyZS8tL25hdHVyYWwtY29tcGFyZS0xLjQuMC50Z3ojNGFiZWJmZWVkNzU0MWYyYzI3YWNm
YjI5YmRiYmQxNWM4ZDViYTRmNyIKLQotbmNuYW1lQDEuMC54OgotICB2ZXJzaW9uICIxLjAuMCIK
LSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vbmNuYW1lLy0vbmNuYW1l
LTEuMC4wLnRneiM1YjU3YWQxOGIxY2EwOTI4NjRlZjYyYjBiMWVkODE5NGYzODNiNzFjIgotICBk
ZXBlbmRlbmNpZXM6Ci0gICAgeG1sLWNoYXItY2xhc3NlcyAiXjEuMC4wIgotCi1uZWdvdGlhdG9y
QDAuNi4xOgotICB2ZXJzaW9uICIwLjYuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnku
eWFybnBrZy5jb20vbmVnb3RpYXRvci8tL25lZ290aWF0b3ItMC42LjEudGd6IzJiMzI3MTg0ZTg5
OTIxMDExNzdiMjg1NjNmYjVlNzEwMmFjZDBjYTkiCi0KLW5vLWNhc2VAXjIuMi4wOgotICB2ZXJz
aW9uICIyLjMuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vbm8t
Y2FzZS8tL25vLWNhc2UtMi4zLjAudGd6I2NhMjgyNWNjYjc2YjE4ZTZmNzlkNTczZGNmYmYxZWFj
ZTMzZGQxNjQiCi0gIGRlcGVuZGVuY2llczoKLSAgICBsb3dlci1jYXNlICJeMS4xLjEiCi0KLW5v
ZGUtZW1vamlAXjEuMy4xOgotICB2ZXJzaW9uICIxLjQuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8v
cmVnaXN0cnkueWFybnBrZy5jb20vbm9kZS1lbW9qaS8tL25vZGUtZW1vamktMS40LjEudGd6I2M5
ZmEwY2Y5MTA5NDMzNWJjYjk2N2E2ZjQyYjIzMDVjMTVhZjJlYmMiCi0gIGRlcGVuZGVuY2llczoK
LSAgICBzdHJpbmcucHJvdG90eXBlLmNvZGVwb2ludGF0ICJeMC4yLjAiCi0KLW5vZGUtZmV0Y2hA
XjEuMC4xOgotICB2ZXJzaW9uICIxLjYuMyIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnku
eWFybnBrZy5jb20vbm9kZS1mZXRjaC8tL25vZGUtZmV0Y2gtMS42LjMudGd6I2RjMjM0ZWRkNjQ4
OTk4MmQ1OGU4ZjBkYjRmNjk1MDI5YWJjZDhjMDQiCi0gIGRlcGVuZGVuY2llczoKLSAgICBlbmNv
ZGluZyAiXjAuMS4xMSIKLSAgICBpcy1zdHJlYW0gIl4xLjAuMSIKLQotbm9kZS1pbnQ2NEBeMC40
LjA6Ci0gIHZlcnNpb24gIjAuNC4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJu
cGtnLmNvbS9ub2RlLWludDY0Ly0vbm9kZS1pbnQ2NC0wLjQuMC50Z3ojODdhOTA2NWNkYjM1NWQz
MTgyZDhmOTRjZTExMTg4YjgyNWM2OGEzYiIKLQotbm9kZS1saWJzLWJyb3dzZXJAXjAuNi4wOgot
ICB2ZXJzaW9uICIwLjYuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5j
b20vbm9kZS1saWJzLWJyb3dzZXIvLS9ub2RlLWxpYnMtYnJvd3Nlci0wLjYuMC50Z3ojMjQ0ODA2
ZDQ0ZDMxOWUwNDhiYzg2MDdiNWNjNGVhZjlhMjlkMmUzYyIKLSAgZGVwZW5kZW5jaWVzOgotICAg
IGFzc2VydCAiXjEuMS4xIgotICAgIGJyb3dzZXJpZnktemxpYiAifjAuMS40IgotICAgIGJ1ZmZl
ciAiXjQuOS4wIgotICAgIGNvbnNvbGUtYnJvd3NlcmlmeSAiXjEuMS4wIgotICAgIGNvbnN0YW50
cy1icm93c2VyaWZ5ICIwLjAuMSIKLSAgICBjcnlwdG8tYnJvd3NlcmlmeSAifjMuMi42IgotICAg
IGRvbWFpbi1icm93c2VyICJeMS4xLjEiCi0gICAgZXZlbnRzICJeMS4wLjAiCi0gICAgaHR0cC1i
cm93c2VyaWZ5ICJeMS4zLjIiCi0gICAgaHR0cHMtYnJvd3NlcmlmeSAiMC4wLjAiCi0gICAgb3Mt
YnJvd3NlcmlmeSAifjAuMS4yIgotICAgIHBhdGgtYnJvd3NlcmlmeSAiMC4wLjAiCi0gICAgcHJv
Y2VzcyAiXjAuMTEuMCIKLSAgICBwdW55Y29kZSAiXjEuMi40IgotICAgIHF1ZXJ5c3RyaW5nLWVz
MyAifjAuMi4wIgotICAgIHJlYWRhYmxlLXN0cmVhbSAiXjEuMS4xMyIKLSAgICBzdHJlYW0tYnJv
d3NlcmlmeSAiXjEuMC4wIgotICAgIHN0cmluZ19kZWNvZGVyICJ+MC4xMC4yNSIKLSAgICB0aW1l
cnMtYnJvd3NlcmlmeSAiXjEuMC4xIgotICAgIHR0eS1icm93c2VyaWZ5ICIwLjAuMCIKLSAgICB1
cmwgIn4wLjEwLjEiCi0gICAgdXRpbCAifjAuMTAuMyIKLSAgICB2bS1icm93c2VyaWZ5ICIwLjAu
NCIKLQotbm9kZS1ub3RpZmllckBeNC42LjE6Ci0gIHZlcnNpb24gIjQuNi4xIgotICByZXNvbHZl
ZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9ub2RlLW5vdGlmaWVyLy0vbm9kZS1ub3Rp
Zmllci00LjYuMS50Z3ojMDU2ZDE0MjQ0ZjNkY2MxY2VhZGZlNjhhZjljZmYwYzU0NzNhMzNmMyIK
LSAgZGVwZW5kZW5jaWVzOgotICAgIGNsaS11c2FnZSAiXjAuMS4xIgotICAgIGdyb3dseSAiXjEu
Mi4wIgotICAgIGxvZGFzaC5jbG9uZWRlZXAgIl4zLjAuMCIKLSAgICBtaW5pbWlzdCAiXjEuMS4x
IgotICAgIHNlbXZlciAiXjUuMS4wIgotICAgIHNoZWxsd29yZHMgIl4wLjEuMCIKLSAgICB3aGlj
aCAiXjEuMC41IgotCi1ub2RlLXByZS1neXBAXjAuNi4yOToKLSAgdmVyc2lvbiAiMC42LjMwIgot
ICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9ub2RlLXByZS1neXAvLS9u
b2RlLXByZS1neXAtMC42LjMwLnRneiM2NGQzMDczYTZmNTczMDAzNzE3Y2NmZTMwYzg5MDIzMjk3
YmFiYmExIgotICBkZXBlbmRlbmNpZXM6Ci0gICAgbWtkaXJwICJ+MC41LjAiCi0gICAgbm9wdCAi
fjMuMC4xIgotICAgIG5wbWxvZyAiNC54IgotICAgIHJjICJ+MS4xLjAiCi0gICAgcmVxdWVzdCAi
Mi54IgotICAgIHJpbXJhZiAifjIuNS4wIgotICAgIHNlbXZlciAifjUuMy4wIgotICAgIHRhciAi
fjIuMi4wIgotICAgIHRhci1wYWNrICJ+My4xLjAiCi0KLW5vZGUtdXVpZEB+MS40Ljc6Ci0gIHZl
cnNpb24gIjEuNC43IgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9u
b2RlLXV1aWQvLS9ub2RlLXV1aWQtMS40LjcudGd6IzZkYTVhMTc2NjhjNGIzZGQ1OTYyM2JkYTEx
Y2Y3ZmE0YzFmNjBhNmYiCi0KLW5vcHRAfjMuMC4xLCBub3B0QDMueDoKLSAgdmVyc2lvbiAiMy4w
LjYiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL25vcHQvLS9ub3B0
LTMuMC42LnRneiNjNjQ2NWRiZjA4YWJjZDRkYjM1OTMxN2Y3OWFjNjhhNjQ2YjI4ZmY5IgotICBk
ZXBlbmRlbmNpZXM6Ci0gICAgYWJicmV2ICIxIgotCi1ub3JtYWxpemUtcGFja2FnZS1kYXRhQF4y
LjMuMjoKLSAgdmVyc2lvbiAiMi4zLjUiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlh
cm5wa2cuY29tL25vcm1hbGl6ZS1wYWNrYWdlLWRhdGEvLS9ub3JtYWxpemUtcGFja2FnZS1kYXRh
LTIuMy41LnRneiM4ZDkyNGYxNDI5NjBlMTc3N2U3ZmZlMTcwNTQzNjMxY2M3Y2IwMmRmIgotICBk
ZXBlbmRlbmNpZXM6Ci0gICAgaG9zdGVkLWdpdC1pbmZvICJeMi4xLjQiCi0gICAgaXMtYnVpbHRp
bi1tb2R1bGUgIl4xLjAuMCIKLSAgICBzZW12ZXIgIjIgfHwgMyB8fCA0IHx8IDUiCi0gICAgdmFs
aWRhdGUtbnBtLXBhY2thZ2UtbGljZW5zZSAiXjMuMC4xIgotCi1ub3JtYWxpemUtcGF0aEBeMi4w
LjE6Ci0gIHZlcnNpb24gIjIuMC4xIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJu
cGtnLmNvbS9ub3JtYWxpemUtcGF0aC8tL25vcm1hbGl6ZS1wYXRoLTIuMC4xLnRneiM0Nzg4NmFj
MTY2Mjc2MGQ0MjYxYjdkOTc5ZDI0MTcwOWQzY2UzZjdhIgotCi1ub3JtYWxpemUtcmFuZ2VAXjAu
MS4yOgotICB2ZXJzaW9uICIwLjEuMiIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFy
bnBrZy5jb20vbm9ybWFsaXplLXJhbmdlLy0vbm9ybWFsaXplLXJhbmdlLTAuMS4yLnRneiMyZDEw
YzA2YmRmZDMxMmVhOTc3NzY5NWE0ZDI4NDM5NDU2Yjc1OTQyIgotCi1ub3JtYWxpemUtdXJsQF4x
LjQuMDoKLSAgdmVyc2lvbiAiMS42LjEiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlh
cm5wa2cuY29tL25vcm1hbGl6ZS11cmwvLS9ub3JtYWxpemUtdXJsLTEuNi4xLnRneiNhOWYyNTRm
YTA2NWJiYzI5MzQ0NjFjMGMwOTQyMzgxNTk3NjE1NWEyIgotICBkZXBlbmRlbmNpZXM6Ci0gICAg
b2JqZWN0LWFzc2lnbiAiXjQuMC4xIgotICAgIHByZXBlbmQtaHR0cCAiXjEuMC4wIgotICAgIHF1
ZXJ5LXN0cmluZyAiXjQuMS4wIgotICAgIHNvcnQta2V5cyAiXjEuMC4wIgotCi1ucG1sb2dANC54
OgotICB2ZXJzaW9uICI0LjAuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBr
Zy5jb20vbnBtbG9nLy0vbnBtbG9nLTQuMC4wLnRneiNlMDk0NTAzOTYxYzcwYzE3NzRlYjc2Njky
MDgwZThkNTc4YTlmODhmIgotICBkZXBlbmRlbmNpZXM6Ci0gICAgYXJlLXdlLXRoZXJlLXlldCAi
fjEuMS4yIgotICAgIGNvbnNvbGUtY29udHJvbC1zdHJpbmdzICJ+MS4xLjAiCi0gICAgZ2F1Z2Ug
In4yLjYuMCIKLSAgICBzZXQtYmxvY2tpbmcgIn4yLjAuMCIKLQotbnRoLWNoZWNrQH4xLjAuMToK
LSAgdmVyc2lvbiAiMS4wLjEiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cu
Y29tL250aC1jaGVjay8tL250aC1jaGVjay0xLjAuMS50Z3ojOTkyOWFjZGY2MjhmYzJjNDEwOThk
ZWFiODJhYzU4MGNmMTQ5YWFlNCIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGJvb2xiYXNlICJ+MS4w
LjAiCi0KLW51bTJmcmFjdGlvbkBeMS4yLjI6Ci0gIHZlcnNpb24gIjEuMi4yIgotICByZXNvbHZl
ZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9udW0yZnJhY3Rpb24vLS9udW0yZnJhY3Rp
b24tMS4yLjIudGd6IzZmNjgyYjZhMDI3YTRlOWRkZmE0NTY0Y2QyNTg5ZDFkNGU2NjllZGUiCi0K
LW51bWJlci1pcy1uYW5AXjEuMC4wOgotICB2ZXJzaW9uICIxLjAuMSIKLSAgcmVzb2x2ZWQgImh0
dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vbnVtYmVyLWlzLW5hbi8tL251bWJlci1pcy1uYW4t
MS4wLjEudGd6IzA5N2I2MDJiNTM0MjJhNTIyYzFhZmI4NzkwMzE4MzM2OTQxYTAxMWQiCi0KLSJu
d21hdGNoZXJAPj0gMS4zLjcgPCAyLjAuMCI6Ci0gIHZlcnNpb24gIjEuMy44IgotICByZXNvbHZl
ZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9ud21hdGNoZXIvLS9ud21hdGNoZXItMS4z
LjgudGd6IzM0ZWRiOTNkZTFhYTZjYjQ0NDhiNTczYzlmMmEwNTkzMDAyNDExNTciCi0KLW9hdXRo
LXNpZ25AfjAuOC4xOgotICB2ZXJzaW9uICIwLjguMiIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVn
aXN0cnkueWFybnBrZy5jb20vb2F1dGgtc2lnbi8tL29hdXRoLXNpZ24tMC44LjIudGd6IzQ2YTZh
YjdmMGFlYWQ4ZGVhZTllYzA1NjU3ODBiN2Q0ZWZlYjlkNDMiCi0KLW9iamVjdC1hc3NpZ25AXjQu
MC4xLCBvYmplY3QtYXNzaWduQF40LjEuMCwgb2JqZWN0LWFzc2lnbkA0LjEuMDoKLSAgdmVyc2lv
biAiNC4xLjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL29iamVj
dC1hc3NpZ24vLS9vYmplY3QtYXNzaWduLTQuMS4wLnRneiM3YTNiM2QwZTk4MDYzZDQzZjRjMDNm
MmU4YWU2Y2Q1MWE4Njg4M2EwIgotCi1vYmplY3QtaXNAXjEuMC4xOgotICB2ZXJzaW9uICIxLjAu
MSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vb2JqZWN0LWlzLy0v
b2JqZWN0LWlzLTEuMC4xLnRneiMwYWE2MGVjOTk4OWEwYjNlZDc5NWNmNGQwNmY2MmNmMWFkNjUz
OWI2IgotCi1vYmplY3Qta2V5c0BeMS4wLjEwLCBvYmplY3Qta2V5c0BeMS4wLjg6Ci0gIHZlcnNp
b24gIjEuMC4xMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vb2Jq
ZWN0LWtleXMvLS9vYmplY3Qta2V5cy0xLjAuMTEudGd6I2M1NDYwMTc3OGFkNTYwZjExNDJjZTBl
MDFiY2NhOGI1NmQxMzQyNmQiCi0KLW9iamVjdC5hc3NpZ25AXjQuMC4zOgotICB2ZXJzaW9uICI0
LjAuNCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vb2JqZWN0LmFz
c2lnbi8tL29iamVjdC5hc3NpZ24tNC4wLjQudGd6I2IxYzljYzA0NGVmMWI5ZmU2MzYwNmZjMTQx
YWJiYjMyZTE0NzMwY2MiCi0gIGRlcGVuZGVuY2llczoKLSAgICBkZWZpbmUtcHJvcGVydGllcyAi
XjEuMS4yIgotICAgIGZ1bmN0aW9uLWJpbmQgIl4xLjEuMCIKLSAgICBvYmplY3Qta2V5cyAiXjEu
MC4xMCIKLQotb2JqZWN0Lm9taXRAXjIuMC4wOgotICB2ZXJzaW9uICIyLjAuMCIKLSAgcmVzb2x2
ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vb2JqZWN0Lm9taXQvLS9vYmplY3Qub21p
dC0yLjAuMC50Z3ojODY4NTk3MzMzZDU0ZTYwNjYyOTQwYmI0NTg2MDVkZDZhZTEyZmU5NCIKLSAg
ZGVwZW5kZW5jaWVzOgotICAgIGZvci1vd24gIl4wLjEuMyIKLSAgICBpcy1leHRlbmRhYmxlICJe
MC4xLjEiCi0KLW9iamVjdC52YWx1ZXNAXjEuMC4zOgotICB2ZXJzaW9uICIxLjAuMyIKLSAgcmVz
b2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vb2JqZWN0LnZhbHVlcy8tL29iamVj
dC52YWx1ZXMtMS4wLjMudGd6I2E3Nzc0YmEwNTA4OTNmZTZhNWQ1OTU4YWNkMDU4MjNlMGY0MjZi
ZWYiCi0gIGRlcGVuZGVuY2llczoKLSAgICBkZWZpbmUtcHJvcGVydGllcyAiXjEuMS4xIgotICAg
IGVzLWFic3RyYWN0ICJeMS4zLjIiCi0gICAgZnVuY3Rpb24tYmluZCAiXjEuMC4yIgotICAgIGhh
cyAiXjEuMC4xIgotCi1vbi1maW5pc2hlZEB+Mi4zLjA6Ci0gIHZlcnNpb24gIjIuMy4wIgotICBy
ZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9vbi1maW5pc2hlZC8tL29uLWZp
bmlzaGVkLTIuMy4wLnRneiMyMGYxMzM2NDgxYjA4M2NkNzUzMzc5OTJhMTY5NzFhYTJkOTA2OTQ3
IgotICBkZXBlbmRlbmNpZXM6Ci0gICAgZWUtZmlyc3QgIjEuMS4xIgotCi1vbi1oZWFkZXJzQH4x
LjAuMToKLSAgdmVyc2lvbiAiMS4wLjEiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlh
cm5wa2cuY29tL29uLWhlYWRlcnMvLS9vbi1oZWFkZXJzLTEuMC4xLnRneiM5MjhmNWQwZjQ3MGQ0
OTM0MjY1MWVhNjc5NGIwODU3YzEwMDY5M2Y3IgotCi1vbmNlQF4xLjMuMCwgb25jZUAxLng6Ci0g
IHZlcnNpb24gIjEuNC4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNv
bS9vbmNlLy0vb25jZS0xLjQuMC50Z3ojNTgzYjFhYTc3NTk2MWQ0YjExM2FjMTdkOWM1MGJhZWY5
ZGQ3NmJkMSIKLSAgZGVwZW5kZW5jaWVzOgotICAgIHdyYXBweSAiMSIKLQotb25jZUB+MS4zLjM6
Ci0gIHZlcnNpb24gIjEuMy4zIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtn
LmNvbS9vbmNlLy0vb25jZS0xLjMuMy50Z3ojYjJlMjYxNTU3Y2U0YzMxNGVjODMwNGYzZmE4MjY2
M2U0Mjk3Y2EyMCIKLSAgZGVwZW5kZW5jaWVzOgotICAgIHdyYXBweSAiMSIKLQotb25ldGltZUBe
MS4wLjA6Ci0gIHZlcnNpb24gIjEuMS4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55
YXJucGtnLmNvbS9vbmV0aW1lLy0vb25ldGltZS0xLjEuMC50Z3ojYTFmNzgzOGY4MzE0YzUxNmYw
NWVjZWZjYmM0Y2NmZTA0YjRlZDc4OSIKLQotb3BlbkAwLjAuNToKLSAgdmVyc2lvbiAiMC4wLjUi
Ci0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL29wZW4vLS9vcGVuLTAu
MC41LnRneiM0MmMzZTE4ZWM5NTQ2NmI2YmYwZGM0MmYzYTI5NDVjM2YwY2FkOGZjIgotCi1vcG5A
NC4wLjI6Ci0gIHZlcnNpb24gIjQuMC4yIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55
YXJucGtnLmNvbS9vcG4vLS9vcG4tNC4wLjIudGd6IzdhYmMyMmU2NDRkZmY2M2IwYTk2ZDVhYjdm
Mjc5MGMwZjAxYWJjOTUiCi0gIGRlcGVuZGVuY2llczoKLSAgICBvYmplY3QtYXNzaWduICJeNC4w
LjEiCi0gICAgcGlua2llLXByb21pc2UgIl4yLjAuMCIKLQotb3B0aW1pc3RAXjAuNi4xLCBvcHRp
bWlzdEB+MC42LjAsIG9wdGltaXN0QH4wLjYuMToKLSAgdmVyc2lvbiAiMC42LjEiCi0gIHJlc29s
dmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL29wdGltaXN0Ly0vb3B0aW1pc3QtMC42
LjEudGd6I2RhM2VhNzQ2ODZmYTIxYTE5YTExMWMzMjZlOTBlYjE1YTAxOTY2ODYiCi0gIGRlcGVu
ZGVuY2llczoKLSAgICBtaW5pbWlzdCAifjAuMC4xIgotICAgIHdvcmR3cmFwICJ+MC4wLjIiCi0K
LW9wdGlvbmF0b3JAXjAuOC4xOgotICB2ZXJzaW9uICIwLjguMiIKLSAgcmVzb2x2ZWQgImh0dHBz
Oi8vcmVnaXN0cnkueWFybnBrZy5jb20vb3B0aW9uYXRvci8tL29wdGlvbmF0b3ItMC44LjIudGd6
IzM2NGM1ZTQwOWQzZjRkNjMwMWQ2YzBiNGMwNWJiYTUwMTgwYWViNjQiCi0gIGRlcGVuZGVuY2ll
czoKLSAgICBkZWVwLWlzICJ+MC4xLjMiCi0gICAgZmFzdC1sZXZlbnNodGVpbiAifjIuMC40Igot
ICAgIGxldm4gIn4wLjMuMCIKLSAgICBwcmVsdWRlLWxzICJ+MS4xLjIiCi0gICAgdHlwZS1jaGVj
ayAifjAuMy4yIgotICAgIHdvcmR3cmFwICJ+MS4wLjAiCi0KLW9yaWdpbmFsQD49MC4wLjU6Ci0g
IHZlcnNpb24gIjEuMC4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNv
bS9vcmlnaW5hbC8tL29yaWdpbmFsLTEuMC4wLnRneiM5MTQ3ZjkzZmExNjk2ZDA0YmU2MWUwMWJk
NTBiYWVhY2E2NTZiZDNiIgotICBkZXBlbmRlbmNpZXM6Ci0gICAgdXJsLXBhcnNlICIxLjAueCIK
LQotb3MtYnJvd3NlcmlmeUB+MC4xLjI6Ci0gIHZlcnNpb24gIjAuMS4yIgotICByZXNvbHZlZCAi
aHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9vcy1icm93c2VyaWZ5Ly0vb3MtYnJvd3Nlcmlm
eS0wLjEuMi50Z3ojNDljYTAyOTNlMGIxOTU5MGE1ZjVkZTEwYzdmMjY1YTYxN2Q4ZmU1NCIKLQot
b3MtaG9tZWRpckBeMS4wLjA6Ci0gIHZlcnNpb24gIjEuMC4yIgotICByZXNvbHZlZCAiaHR0cHM6
Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9vcy1ob21lZGlyLy0vb3MtaG9tZWRpci0xLjAuMi50Z3oj
ZmZiYzQ5ODgzMzZlMGU4MzNkZTBjMTY4YzdlZjE1MjEyMWFhN2ZiMyIKLQotb3MtbG9jYWxlQF4x
LjQuMDoKLSAgdmVyc2lvbiAiMS40LjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlh
cm5wa2cuY29tL29zLWxvY2FsZS8tL29zLWxvY2FsZS0xLjQuMC50Z3ojMjBmOWYxN2FlMjllZDM0
NWU4YmRlNTgzYjEzZDIwMDk4MDNjMTRkOSIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGxjaWQgIl4x
LjAuMCIKLQotb3MtdG1wZGlyQF4xLjAuMToKLSAgdmVyc2lvbiAiMS4wLjIiCi0gIHJlc29sdmVk
ICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL29zLXRtcGRpci8tL29zLXRtcGRpci0xLjAu
Mi50Z3ojYmJlNjc0MDZjNzlhYTg1YzVjZmVjNzY2ZmU1NzM0NTU1ZGZhMTI3NCIKLQotcGFrb0B+
MC4yLjA6Ci0gIHZlcnNpb24gIjAuMi45IgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55
YXJucGtnLmNvbS9wYWtvLy0vcGFrby0wLjIuOS50Z3ojZjNmNzUyMmY0ZWY3ODIzNDhkYTgxNjFi
YWQ5ZWNmZDUxYmY4M2E3NSIKLQotcGFyYW0tY2FzZUBeMi4xLjA6Ci0gIHZlcnNpb24gIjIuMS4w
IgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9wYXJhbS1jYXNlLy0v
cGFyYW0tY2FzZS0yLjEuMC50Z3ojMjYxOWY5MGZkNmM4MjllZDBiOTU4ZjFjODRlZDAzYTc0NWE2
ZDcwYSIKLSAgZGVwZW5kZW5jaWVzOgotICAgIG5vLWNhc2UgIl4yLjIuMCIKLQotcGFyc2UtZ2xv
YkBeMy4wLjQ6Ci0gIHZlcnNpb24gIjMuMC40IgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3Ry
eS55YXJucGtnLmNvbS9wYXJzZS1nbG9iLy0vcGFyc2UtZ2xvYi0zLjAuNC50Z3ojYjJjMzc2Y2Zi
MTFmMzU1MTNiYWRkMTczZWYwYmI2ZTNhMzg4MzkxYyIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGds
b2ItYmFzZSAiXjAuMy4wIgotICAgIGlzLWRvdGZpbGUgIl4xLjAuMCIKLSAgICBpcy1leHRnbG9i
ICJeMS4wLjAiCi0gICAgaXMtZ2xvYiAiXjIuMC4wIgotCi1wYXJzZS1qc29uQF4yLjIuMDoKLSAg
dmVyc2lvbiAiMi4yLjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29t
L3BhcnNlLWpzb24vLS9wYXJzZS1qc29uLTIuMi4wLnRneiNmNDgwZjQwNDM0ZWY4MDc0MWY4NDY5
MDk5ZjhkZWExOGY1NWE0ZGM5IgotICBkZXBlbmRlbmNpZXM6Ci0gICAgZXJyb3ItZXggIl4xLjIu
MCIKLQotcGFyc2U1QF4xLjUuMToKLSAgdmVyc2lvbiAiMS41LjEiCi0gIHJlc29sdmVkICJodHRw
czovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3BhcnNlNS8tL3BhcnNlNS0xLjUuMS50Z3ojOWI3ZjNi
MGRlMzJiZTc4ZGMyNDAxYjE3NTczY2NhZjBmNmY1OWQ5NCIKLQotcGFyc2V1cmxAfjEuMy4xOgot
ICB2ZXJzaW9uICIxLjMuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5j
b20vcGFyc2V1cmwvLS9wYXJzZXVybC0xLjMuMS50Z3ojYzhhYjhjOTIyM2JhMzQ4ODhhYTY0YTI5
N2IyODg1M2JlYzE4ZGE1NiIKLQotcGFzY2FsLWNhc2VAXjIuMC4wOgotICB2ZXJzaW9uICIyLjAu
MCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vcGFzY2FsLWNhc2Uv
LS9wYXNjYWwtY2FzZS0yLjAuMC50Z3ojMzljMjQ4YmRlNWE4ZGMwMmQ1MTYwNjk2YmRiMDFlMDQ0
ZDAxNmVlMSIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGNhbWVsLWNhc2UgIl4zLjAuMCIKLSAgICB1
cHBlci1jYXNlLWZpcnN0ICJeMS4xLjAiCi0KLXBhdGgtYnJvd3NlcmlmeUAwLjAuMDoKLSAgdmVy
c2lvbiAiMC4wLjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3Bh
dGgtYnJvd3NlcmlmeS8tL3BhdGgtYnJvd3NlcmlmeS0wLjAuMC50Z3ojYTBiODcwNzI5YWFlMjE0
MDA1YjdkNTAzMmVjMmNiYmIwZmI0NDUxYSIKLQotcGF0aC1jYXNlQF4yLjEuMDoKLSAgdmVyc2lv
biAiMi4xLjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3BhdGgt
Y2FzZS8tL3BhdGgtY2FzZS0yLjEuMC50Z3ojNWFjNDkxZGU2NDI5MzZlNWRmZTBlMThkMTZjNDYx
YjhiZThjZjA3MyIKLSAgZGVwZW5kZW5jaWVzOgotICAgIG5vLWNhc2UgIl4yLjIuMCIKLQotcGF0
aC1leGlzdHNAXjEuMC4wOgotICB2ZXJzaW9uICIxLjAuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8v
cmVnaXN0cnkueWFybnBrZy5jb20vcGF0aC1leGlzdHMvLS9wYXRoLWV4aXN0cy0xLjAuMC50Z3oj
ZDVhODk5OGViNzFlZjM3YTc0YzM0ZWIwZDllYmE2ZTg3OGVlYTA4MSIKLQotcGF0aC1leGlzdHNA
XjIuMC4wLCBwYXRoLWV4aXN0c0AyLjEuMDoKLSAgdmVyc2lvbiAiMi4xLjAiCi0gIHJlc29sdmVk
ICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3BhdGgtZXhpc3RzLy0vcGF0aC1leGlzdHMt
Mi4xLjAudGd6IzBmZWI2YzY0ZjBmYzUxOGQ5YTc1NGRkNWVmYjYyYzcwMjI3NjFmNGIiCi0gIGRl
cGVuZGVuY2llczoKLSAgICBwaW5raWUtcHJvbWlzZSAiXjIuMC4wIgotCi1wYXRoLWlzLWFic29s
dXRlQF4xLjAuMDoKLSAgdmVyc2lvbiAiMS4wLjEiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lz
dHJ5Lnlhcm5wa2cuY29tL3BhdGgtaXMtYWJzb2x1dGUvLS9wYXRoLWlzLWFic29sdXRlLTEuMC4x
LnRneiMxNzRiOTI2ODczNTUzNGZmYmM3YWNlNmJmNTNhNWE5ZTFiNWM1ZjVmIgotCi1wYXRoLWlz
LWluc2lkZUBeMS4wLjE6Ci0gIHZlcnNpb24gIjEuMC4yIgotICByZXNvbHZlZCAiaHR0cHM6Ly9y
ZWdpc3RyeS55YXJucGtnLmNvbS9wYXRoLWlzLWluc2lkZS8tL3BhdGgtaXMtaW5zaWRlLTEuMC4y
LnRneiMzNjU0MTdkZWRlNDQ0MzBkMWMxMWFmNjEwMjdmYWNmMDc0YmRmYzUzIgotCi1wYXRoLXBh
cnNlQF4xLjAuNToKLSAgdmVyc2lvbiAiMS4wLjUiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lz
dHJ5Lnlhcm5wa2cuY29tL3BhdGgtcGFyc2UvLS9wYXRoLXBhcnNlLTEuMC41LnRneiMzYzFhZGY4
NzFlYTljZDZjOTQzMWI2ZWEyYmQ3NGEwZmYwNTVjNGMxIgotCi1wYXRoLXRvLXJlZ2V4cEAwLjEu
NzoKLSAgdmVyc2lvbiAiMC4xLjciCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5w
a2cuY29tL3BhdGgtdG8tcmVnZXhwLy0vcGF0aC10by1yZWdleHAtMC4xLjcudGd6I2RmNjA0MTc4
MDA1ZjUyMmYxNWViNDQ5MGU3MjQ3YTFiZmFhNjdmOGMiCi0KLXBhdGgtdHlwZUBeMS4wLjA6Ci0g
IHZlcnNpb24gIjEuMS4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNv
bS9wYXRoLXR5cGUvLS9wYXRoLXR5cGUtMS4xLjAudGd6IzU5YzQ0ZjdlZTQ5MWRhNzA0ZGE0MTVk
YTVhNDA3MGJhNGY4ZmU0NDEiCi0gIGRlcGVuZGVuY2llczoKLSAgICBncmFjZWZ1bC1mcyAiXjQu
MS4yIgotICAgIHBpZnkgIl4yLjAuMCIKLSAgICBwaW5raWUtcHJvbWlzZSAiXjIuMC4wIgotCi1w
YmtkZjItY29tcGF0QDIuMC4xOgotICB2ZXJzaW9uICIyLjAuMSIKLSAgcmVzb2x2ZWQgImh0dHBz
Oi8vcmVnaXN0cnkueWFybnBrZy5jb20vcGJrZGYyLWNvbXBhdC8tL3Bia2RmMi1jb21wYXQtMi4w
LjEudGd6I2I2ZTBjOGZhOTk0OTRkOTRlMDUxMTU3NTgwMmE1OWE1YzE0MmYyODgiCi0KLXBpZnlA
XjIuMC4wOgotICB2ZXJzaW9uICIyLjMuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnku
eWFybnBrZy5jb20vcGlmeS8tL3BpZnktMi4zLjAudGd6I2VkMTQxYTZhYzA0M2E4NDllYTU4ODQ5
OGU3ZGNhOGIxNTMzMGU5MGMiCi0KLXBpbmtpZS1wcm9taXNlQF4yLjAuMDoKLSAgdmVyc2lvbiAi
Mi4wLjEiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3BpbmtpZS1w
cm9taXNlLy0vcGlua2llLXByb21pc2UtMi4wLjEudGd6IzIxMzVkNmRmYTdhMzU4YzA2OWFjOWIx
Nzg3NzYyODgyMjg0NTBmZmEiCi0gIGRlcGVuZGVuY2llczoKLSAgICBwaW5raWUgIl4yLjAuMCIK
LQotcGlua2llQF4yLjAuMDoKLSAgdmVyc2lvbiAiMi4wLjQiCi0gIHJlc29sdmVkICJodHRwczov
L3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3BpbmtpZS8tL3BpbmtpZS0yLjAuNC50Z3ojNzI1NTZiODBj
ZmEwZDQ4YTk3NGU4MGU3NzI0OGU4MGVkNGY3Zjg3MCIKLQotcGtnLWRpckBeMS4wLjA6Ci0gIHZl
cnNpb24gIjEuMC4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9w
a2ctZGlyLy0vcGtnLWRpci0xLjAuMC50Z3ojN2E0YjUwOGE4ZDViYjJkNjI5ZDQ0NzA1NmZmNGU5
YzkzMTRjZjNkNCIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGZpbmQtdXAgIl4xLjAuMCIKLQotcGtn
LXVwQF4xLjAuMDoKLSAgdmVyc2lvbiAiMS4wLjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lz
dHJ5Lnlhcm5wa2cuY29tL3BrZy11cC8tL3BrZy11cC0xLjAuMC50Z3ojM2UwOGZiNDYxNTI1YzQ0
MjE2MjRhMzNiOWY3ZTZkMGFmNWIwNWEyNiIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGZpbmQtdXAg
Il4xLjAuMCIKLQotcGx1cmFsaXplQF4xLjIuMToKLSAgdmVyc2lvbiAiMS4yLjEiCi0gIHJlc29s
dmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3BsdXJhbGl6ZS8tL3BsdXJhbGl6ZS0x
LjIuMS50Z3ojZDFhMjE0ODNmZDIyYmI0MWU1OGExMmZhMzQyMTgyMzE0MDg5N2M0NSIKLQotcG9z
dGNzcy1jYWxjQF41LjIuMDoKLSAgdmVyc2lvbiAiNS4zLjEiCi0gIHJlc29sdmVkICJodHRwczov
L3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3Bvc3Rjc3MtY2FsYy8tL3Bvc3Rjc3MtY2FsYy01LjMuMS50
Z3ojNzdiYWU3Y2E5MjhhZDg1NzE2ZTJmZGE0MmYyNjFiZjdjMWQ2NWI1ZSIKLSAgZGVwZW5kZW5j
aWVzOgotICAgIHBvc3Rjc3MgIl41LjAuMiIKLSAgICBwb3N0Y3NzLW1lc3NhZ2UtaGVscGVycyAi
XjIuMC4wIgotICAgIHJlZHVjZS1jc3MtY2FsYyAiXjEuMi42IgotCi1wb3N0Y3NzLWNvbG9ybWlu
QF4yLjEuODoKLSAgdmVyc2lvbiAiMi4yLjEiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5
Lnlhcm5wa2cuY29tL3Bvc3Rjc3MtY29sb3JtaW4vLS9wb3N0Y3NzLWNvbG9ybWluLTIuMi4xLnRn
eiNkYzU0MjFiNmFlNmY3NzllZjZiZmQ0NzM1MmI5NGFiZTU5ZDAzMTZiIgotICBkZXBlbmRlbmNp
ZXM6Ci0gICAgY29sb3JtaW4gIl4xLjAuNSIKLSAgICBwb3N0Y3NzICJeNS4wLjEzIgotICAgIHBv
c3Rjc3MtdmFsdWUtcGFyc2VyICJeMy4yLjMiCi0KLXBvc3Rjc3MtY29udmVydC12YWx1ZXNAXjIu
My40OgotICB2ZXJzaW9uICIyLjQuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFy
bnBrZy5jb20vcG9zdGNzcy1jb252ZXJ0LXZhbHVlcy8tL3Bvc3Rjc3MtY29udmVydC12YWx1ZXMt
Mi40LjEudGd6IzQ1ZGNlNGQ0ZTMzYjdkOTY3Yjk3YTRkOTM3ZjI3MGVhOThkMmZlN2EiCi0gIGRl
cGVuZGVuY2llczoKLSAgICBwb3N0Y3NzICJeNS4wLjExIgotICAgIHBvc3Rjc3MtdmFsdWUtcGFy
c2VyICJeMy4xLjIiCi0KLXBvc3Rjc3MtZGlzY2FyZC1jb21tZW50c0BeMi4wLjQ6Ci0gIHZlcnNp
b24gIjIuMC40IgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9wb3N0
Y3NzLWRpc2NhcmQtY29tbWVudHMvLS9wb3N0Y3NzLWRpc2NhcmQtY29tbWVudHMtMi4wLjQudGd6
I2JlZmU4OWZhZmQ1YjNkYWNlNWNjY2U1MWI3NmI4MTUxNGJlMDBlM2QiCi0gIGRlcGVuZGVuY2ll
czoKLSAgICBwb3N0Y3NzICJeNS4wLjE0IgotCi1wb3N0Y3NzLWRpc2NhcmQtZHVwbGljYXRlc0Be
Mi4wLjE6Ci0gIHZlcnNpb24gIjIuMC4xIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55
YXJucGtnLmNvbS9wb3N0Y3NzLWRpc2NhcmQtZHVwbGljYXRlcy8tL3Bvc3Rjc3MtZGlzY2FyZC1k
dXBsaWNhdGVzLTIuMC4xLnRneiM1ZmFlM2YxYTcxZGYzZTE5Y2ZmYjM3MzA5ZDFhN2RiYTU2YzQ1
ODljIgotICBkZXBlbmRlbmNpZXM6Ci0gICAgcG9zdGNzcyAiXjUuMC40IgotCi1wb3N0Y3NzLWRp
c2NhcmQtZW1wdHlAXjIuMC4xOgotICB2ZXJzaW9uICIyLjEuMCIKLSAgcmVzb2x2ZWQgImh0dHBz
Oi8vcmVnaXN0cnkueWFybnBrZy5jb20vcG9zdGNzcy1kaXNjYXJkLWVtcHR5Ly0vcG9zdGNzcy1k
aXNjYXJkLWVtcHR5LTIuMS4wLnRneiNkMmI0YmQ5ZDVjZWQ1ZWJkOGRjYWRlNzY0MGM3ZDdjZDdm
NGY5MmI1IgotICBkZXBlbmRlbmNpZXM6Ci0gICAgcG9zdGNzcyAiXjUuMC4xNCIKLQotcG9zdGNz
cy1kaXNjYXJkLW92ZXJyaWRkZW5AXjAuMS4xOgotICB2ZXJzaW9uICIwLjEuMSIKLSAgcmVzb2x2
ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vcG9zdGNzcy1kaXNjYXJkLW92ZXJyaWRk
ZW4vLS9wb3N0Y3NzLWRpc2NhcmQtb3ZlcnJpZGRlbi0wLjEuMS50Z3ojOGIxZWFmNTU0ZjY4NmZi
Mjg4Y2Q4NzRjNTU2NjdiMGFhMzY2OGQ1OCIKLSAgZGVwZW5kZW5jaWVzOgotICAgIHBvc3Rjc3Mg
Il41LjAuMTYiCi0KLXBvc3Rjc3MtZGlzY2FyZC11bnVzZWRAXjIuMi4xOgotICB2ZXJzaW9uICIy
LjIuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vcG9zdGNzcy1k
aXNjYXJkLXVudXNlZC8tL3Bvc3Rjc3MtZGlzY2FyZC11bnVzZWQtMi4yLjEudGd6IzVkMDIxZjAy
MWE2ZWQ2Y2VjNzMxMGQ0NjAzNzk0YTc1ZGRkNTMyMzIiCi0gIGRlcGVuZGVuY2llczoKLSAgICBm
bGF0dGVuICIxLjAuMiIKLSAgICBwb3N0Y3NzICJeNS4wLjE0IgotICAgIHVuaXFzICJeMi4wLjAi
Ci0KLXBvc3Rjc3MtZmlsdGVyLXBsdWdpbnNAXjIuMC4wOgotICB2ZXJzaW9uICIyLjAuMiIKLSAg
cmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vcG9zdGNzcy1maWx0ZXItcGx1
Z2lucy8tL3Bvc3Rjc3MtZmlsdGVyLXBsdWdpbnMtMi4wLjIudGd6IzZkODU4NjI1MzRkNzM1YWM0
MjBlNGE4NTgwNmUxZjVkNDI4NmQ4NGMiCi0gIGRlcGVuZGVuY2llczoKLSAgICBwb3N0Y3NzICJe
NS4wLjQiCi0gICAgdW5pcWlkICJeNC4wLjAiCi0KLXBvc3Rjc3MtbG9hZGVyQDAuMTMuMDoKLSAg
dmVyc2lvbiAiMC4xMy4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNv
bS9wb3N0Y3NzLWxvYWRlci8tL3Bvc3Rjc3MtbG9hZGVyLTAuMTMuMC50Z3ojNzJmZGFmMGQyOTQ0
NGRmNzdkMzc1MWNlNGU2OWRjNDBiYzk5ZWQ4NSIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGxvYWRl
ci11dGlscyAiXjAuMi4xNSIKLSAgICBwb3N0Y3NzICJeNS4yLjAiCi0KLXBvc3Rjc3MtbWVyZ2Ut
aWRlbnRzQF4yLjEuNToKLSAgdmVyc2lvbiAiMi4xLjciCi0gIHJlc29sdmVkICJodHRwczovL3Jl
Z2lzdHJ5Lnlhcm5wa2cuY29tL3Bvc3Rjc3MtbWVyZ2UtaWRlbnRzLy0vcG9zdGNzcy1tZXJnZS1p
ZGVudHMtMi4xLjcudGd6IzRjNTUzMDMxM2MwOGUxZDViM2JiZjNkMmJiYzc0N2UyNzhlZWEyNzAi
Ci0gIGRlcGVuZGVuY2llczoKLSAgICBoYXMgIl4xLjAuMSIKLSAgICBwb3N0Y3NzICJeNS4wLjEw
IgotICAgIHBvc3Rjc3MtdmFsdWUtcGFyc2VyICJeMy4xLjEiCi0KLXBvc3Rjc3MtbWVyZ2UtbG9u
Z2hhbmRAXjIuMC4xOgotICB2ZXJzaW9uICIyLjAuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVn
aXN0cnkueWFybnBrZy5jb20vcG9zdGNzcy1tZXJnZS1sb25naGFuZC8tL3Bvc3Rjc3MtbWVyZ2Ut
bG9uZ2hhbmQtMi4wLjEudGd6I2ZmNTliNWRlYzZkNTg2Y2UyY2VhMTgzMTM4ZjU1YzU4NzZmYTlj
ZGMiCi0gIGRlcGVuZGVuY2llczoKLSAgICBwb3N0Y3NzICJeNS4wLjQiCi0KLXBvc3Rjc3MtbWVy
Z2UtcnVsZXNAXjIuMC4zOgotICB2ZXJzaW9uICIyLjAuMTAiCi0gIHJlc29sdmVkICJodHRwczov
L3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3Bvc3Rjc3MtbWVyZ2UtcnVsZXMvLS9wb3N0Y3NzLW1lcmdl
LXJ1bGVzLTIuMC4xMC50Z3ojNTRiMzYwYmU4MDRlN2U2OWE1YzcyMjI2MzUyNDdiOTJhMzU2OWU5
YiIKLSAgZGVwZW5kZW5jaWVzOgotICAgIHBvc3Rjc3MgIl41LjAuNCIKLSAgICB2ZW5kb3JzICJe
MS4wLjAiCi0KLXBvc3Rjc3MtbWVzc2FnZS1oZWxwZXJzQF4yLjAuMDoKLSAgdmVyc2lvbiAiMi4w
LjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3Bvc3Rjc3MtbWVz
c2FnZS1oZWxwZXJzLy0vcG9zdGNzcy1tZXNzYWdlLWhlbHBlcnMtMi4wLjAudGd6I2E0ZjJmNGZh
YjZlNGZlMDAyZjBhZWQwMDA0NzhjZGY1MmY5YmE2MGUiCi0KLXBvc3Rjc3MtbWluaWZ5LWZvbnQt
dmFsdWVzQF4xLjAuMjoKLSAgdmVyc2lvbiAiMS4wLjUiCi0gIHJlc29sdmVkICJodHRwczovL3Jl
Z2lzdHJ5Lnlhcm5wa2cuY29tL3Bvc3Rjc3MtbWluaWZ5LWZvbnQtdmFsdWVzLy0vcG9zdGNzcy1t
aW5pZnktZm9udC12YWx1ZXMtMS4wLjUudGd6IzRiNThlZGI1NjY0MWViYTdjODQ3NGFiMzUyNmNh
ZmQ3YmJkZWNiNjkiCi0gIGRlcGVuZGVuY2llczoKLSAgICBvYmplY3QtYXNzaWduICJeNC4wLjEi
Ci0gICAgcG9zdGNzcyAiXjUuMC40IgotICAgIHBvc3Rjc3MtdmFsdWUtcGFyc2VyICJeMy4wLjIi
Ci0KLXBvc3Rjc3MtbWluaWZ5LWdyYWRpZW50c0BeMS4wLjE6Ci0gIHZlcnNpb24gIjEuMC4zIgot
ICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9wb3N0Y3NzLW1pbmlmeS1n
cmFkaWVudHMvLS9wb3N0Y3NzLW1pbmlmeS1ncmFkaWVudHMtMS4wLjMudGd6IzA5ZDIyODE0OGM5
NDJmYTgxMjY2NzlkZTlmZjc3MzhiNTQ5MTlmZTMiCi0gIGRlcGVuZGVuY2llczoKLSAgICBwb3N0
Y3NzICJeNS4wLjEyIgotICAgIHBvc3Rjc3MtdmFsdWUtcGFyc2VyICJeMy4xLjMiCi0KLXBvc3Rj
c3MtbWluaWZ5LXBhcmFtc0BeMS4wLjQ6Ci0gIHZlcnNpb24gIjEuMC41IgotICByZXNvbHZlZCAi
aHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9wb3N0Y3NzLW1pbmlmeS1wYXJhbXMvLS9wb3N0
Y3NzLW1pbmlmeS1wYXJhbXMtMS4wLjUudGd6IzgyZDYwMjY0M2I4NjE2YTYxZmIzNjM0ZDdlZGUw
Mjg5ODM2ZDY3ZjkiCi0gIGRlcGVuZGVuY2llczoKLSAgICBhbHBoYW51bS1zb3J0ICJeMS4wLjEi
Ci0gICAgcG9zdGNzcyAiXjUuMC4yIgotICAgIHBvc3Rjc3MtdmFsdWUtcGFyc2VyICJeMy4wLjIi
Ci0gICAgdW5pcXMgIl4yLjAuMCIKLQotcG9zdGNzcy1taW5pZnktc2VsZWN0b3JzQF4yLjAuNDoK
LSAgdmVyc2lvbiAiMi4wLjUiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cu
Y29tL3Bvc3Rjc3MtbWluaWZ5LXNlbGVjdG9ycy8tL3Bvc3Rjc3MtbWluaWZ5LXNlbGVjdG9ycy0y
LjAuNS50Z3ojNGUxZjk2NmZiNDljOTUyNjY4MDQwMTZiYTlhM2M2NjQ1YmI2MDFlMCIKLSAgZGVw
ZW5kZW5jaWVzOgotICAgIGFscGhhbnVtLXNvcnQgIl4xLjAuMiIKLSAgICBwb3N0Y3NzICJeNS4w
LjE0IgotICAgIHBvc3Rjc3Mtc2VsZWN0b3ItcGFyc2VyICJeMi4wLjAiCi0KLXBvc3Rjc3MtbW9k
dWxlcy1leHRyYWN0LWltcG9ydHNAXjEuMC4wOgotICB2ZXJzaW9uICIxLjAuMSIKLSAgcmVzb2x2
ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vcG9zdGNzcy1tb2R1bGVzLWV4dHJhY3Qt
aW1wb3J0cy8tL3Bvc3Rjc3MtbW9kdWxlcy1leHRyYWN0LWltcG9ydHMtMS4wLjEudGd6IzhmYjNm
ZWY5YTZkZDA0MjBkM2Y2ZDQzNTNjZjFmZjczZjJiMmEzNDEiCi0gIGRlcGVuZGVuY2llczoKLSAg
ICBwb3N0Y3NzICJeNS4wLjQiCi0KLXBvc3Rjc3MtbW9kdWxlcy1sb2NhbC1ieS1kZWZhdWx0QF4x
LjAuMToKLSAgdmVyc2lvbiAiMS4xLjEiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlh
cm5wa2cuY29tL3Bvc3Rjc3MtbW9kdWxlcy1sb2NhbC1ieS1kZWZhdWx0Ly0vcG9zdGNzcy1tb2R1
bGVzLWxvY2FsLWJ5LWRlZmF1bHQtMS4xLjEudGd6IzI5YTEwNjczZmEzN2QxOTI1MTI2NWNhMmJh
MzE1MGQ5MDQwZWI0Y2UiCi0gIGRlcGVuZGVuY2llczoKLSAgICBjc3Mtc2VsZWN0b3ItdG9rZW5p
emVyICJeMC42LjAiCi0gICAgcG9zdGNzcyAiXjUuMC40IgotCi1wb3N0Y3NzLW1vZHVsZXMtc2Nv
cGVAXjEuMC4wOgotICB2ZXJzaW9uICIxLjAuMiIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0
cnkueWFybnBrZy5jb20vcG9zdGNzcy1tb2R1bGVzLXNjb3BlLy0vcG9zdGNzcy1tb2R1bGVzLXNj
b3BlLTEuMC4yLnRneiNmZjk3NzM5NWU1ZTA2MjAyZDczNjIyOTBiODhiMWU4Y2QwNDlkZTI5Igot
ICBkZXBlbmRlbmNpZXM6Ci0gICAgY3NzLXNlbGVjdG9yLXRva2VuaXplciAiXjAuNi4wIgotICAg
IHBvc3Rjc3MgIl41LjAuNCIKLQotcG9zdGNzcy1tb2R1bGVzLXZhbHVlc0BeMS4xLjA6Ci0gIHZl
cnNpb24gIjEuMi4yIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9w
b3N0Y3NzLW1vZHVsZXMtdmFsdWVzLy0vcG9zdGNzcy1tb2R1bGVzLXZhbHVlcy0xLjIuMi50Z3oj
ZjBlN2Q0NzZmZTFlZDg4YzVlNGM3Zjk3NTMzYTNlNzcyYWQ5NGNhMSIKLSAgZGVwZW5kZW5jaWVz
OgotICAgIGljc3MtcmVwbGFjZS1zeW1ib2xzICJeMS4wLjIiCi0gICAgcG9zdGNzcyAiXjUuMC4x
NCIKLQotcG9zdGNzcy1ub3JtYWxpemUtY2hhcnNldEBeMS4xLjA6Ci0gIHZlcnNpb24gIjEuMS4w
IgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9wb3N0Y3NzLW5vcm1h
bGl6ZS1jaGFyc2V0Ly0vcG9zdGNzcy1ub3JtYWxpemUtY2hhcnNldC0xLjEuMC50Z3ojMmZiZDMw
ZTEyMjQ4YzQ0Mjk4MWQzMWVhMjQ4NGQ0NmZkMDYyODk3MCIKLSAgZGVwZW5kZW5jaWVzOgotICAg
IHBvc3Rjc3MgIl41LjAuNSIKLQotcG9zdGNzcy1ub3JtYWxpemUtdXJsQF4zLjAuNzoKLSAgdmVy
c2lvbiAiMy4wLjciCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3Bv
c3Rjc3Mtbm9ybWFsaXplLXVybC8tL3Bvc3Rjc3Mtbm9ybWFsaXplLXVybC0zLjAuNy50Z3ojNmJk
OTBkMGE0YmM1YTFkZjIyYzI2ZWE2NWM1MzI1N2RjMzgyOWY0ZSIKLSAgZGVwZW5kZW5jaWVzOgot
ICAgIGlzLWFic29sdXRlLXVybCAiXjIuMC4wIgotICAgIG5vcm1hbGl6ZS11cmwgIl4xLjQuMCIK
LSAgICBwb3N0Y3NzICJeNS4wLjE0IgotICAgIHBvc3Rjc3MtdmFsdWUtcGFyc2VyICJeMy4yLjMi
Ci0KLXBvc3Rjc3Mtb3JkZXJlZC12YWx1ZXNAXjIuMS4wOgotICB2ZXJzaW9uICIyLjIuMiIKLSAg
cmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vcG9zdGNzcy1vcmRlcmVkLXZh
bHVlcy8tL3Bvc3Rjc3Mtb3JkZXJlZC12YWx1ZXMtMi4yLjIudGd6I2JlOGI1MTE3NDFmYWIyZGFj
OGU2MTRhMjMwMmU5ZDEwMjY3YjA3NzEiCi0gIGRlcGVuZGVuY2llczoKLSAgICBwb3N0Y3NzICJe
NS4wLjQiCi0gICAgcG9zdGNzcy12YWx1ZS1wYXJzZXIgIl4zLjAuMSIKLQotcG9zdGNzcy1yZWR1
Y2UtaWRlbnRzQF4yLjIuMjoKLSAgdmVyc2lvbiAiMi4zLjAiCi0gIHJlc29sdmVkICJodHRwczov
L3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3Bvc3Rjc3MtcmVkdWNlLWlkZW50cy8tL3Bvc3Rjc3MtcmVk
dWNlLWlkZW50cy0yLjMuMC50Z3ojYTY5N2I1Mjk1M2VkNjgyNWZmZWE0MDRlMjZhNGYxMDVkOGI4
ZDU2OSIKLSAgZGVwZW5kZW5jaWVzOgotICAgIHBvc3Rjc3MgIl41LjAuNCIKLSAgICBwb3N0Y3Nz
LXZhbHVlLXBhcnNlciAiXjMuMC4yIgotCi1wb3N0Y3NzLXJlZHVjZS1pbml0aWFsQF4xLjAuMDoK
LSAgdmVyc2lvbiAiMS4wLjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cu
Y29tL3Bvc3Rjc3MtcmVkdWNlLWluaXRpYWwvLS9wb3N0Y3NzLXJlZHVjZS1pbml0aWFsLTEuMC4w
LnRneiM4ZjczOWI5MzgyODllZjJlNDg5MzZkNzEwMTc4M2U0NzQxY2E5YmJiIgotICBkZXBlbmRl
bmNpZXM6Ci0gICAgcG9zdGNzcyAiXjUuMC40IgotCi1wb3N0Y3NzLXJlZHVjZS10cmFuc2Zvcm1z
QF4xLjAuMzoKLSAgdmVyc2lvbiAiMS4wLjMiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5
Lnlhcm5wa2cuY29tL3Bvc3Rjc3MtcmVkdWNlLXRyYW5zZm9ybXMvLS9wb3N0Y3NzLXJlZHVjZS10
cmFuc2Zvcm1zLTEuMC4zLnRneiNmYzE5M2U0MzVhOTczYzEwZjk4MDFjNzQ3MDBhODMwZjc5NjQz
MzQzIgotICBkZXBlbmRlbmNpZXM6Ci0gICAgcG9zdGNzcyAiXjUuMC44IgotICAgIHBvc3Rjc3Mt
dmFsdWUtcGFyc2VyICJeMy4wLjEiCi0KLXBvc3Rjc3Mtc2VsZWN0b3ItcGFyc2VyQF4yLjAuMDoK
LSAgdmVyc2lvbiAiMi4yLjEiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cu
Y29tL3Bvc3Rjc3Mtc2VsZWN0b3ItcGFyc2VyLy0vcG9zdGNzcy1zZWxlY3Rvci1wYXJzZXItMi4y
LjEudGd6I2ZkYmY2OTYxMDNiMTJiMGE2NDA2MGU1NjEwNTA3ZjQxMDQ5MWY3YzgiCi0gIGRlcGVu
ZGVuY2llczoKLSAgICBmbGF0dGVuICJeMS4wLjIiCi0gICAgaW5kZXhlcy1vZiAiXjEuMC4xIgot
ICAgIHVuaXEgIl4xLjAuMSIKLQotcG9zdGNzcy1zdmdvQF4yLjEuMToKLSAgdmVyc2lvbiAiMi4x
LjUiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3Bvc3Rjc3Mtc3Zn
by8tL3Bvc3Rjc3Mtc3Znby0yLjEuNS50Z3ojNDZmYzAzNjNmMDFiYWI2YTM2YTlhYmIwMWMyMjlm
Y2M0NTM2MzA5NCIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGlzLXN2ZyAiXjIuMC4wIgotICAgIHBv
c3Rjc3MgIl41LjAuMTQiCi0gICAgcG9zdGNzcy12YWx1ZS1wYXJzZXIgIl4zLjIuMyIKLSAgICBz
dmdvICJeMC43LjAiCi0KLXBvc3Rjc3MtdW5pcXVlLXNlbGVjdG9yc0BeMi4wLjI6Ci0gIHZlcnNp
b24gIjIuMC4yIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9wb3N0
Y3NzLXVuaXF1ZS1zZWxlY3RvcnMvLS9wb3N0Y3NzLXVuaXF1ZS1zZWxlY3RvcnMtMi4wLjIudGd6
Izk4MWQ1N2QyOWRkY2IzM2U3YjFkZmUxZmQ0M2I4NjQ5ZjkzM2NhMWQiCi0gIGRlcGVuZGVuY2ll
czoKLSAgICBhbHBoYW51bS1zb3J0ICJeMS4wLjEiCi0gICAgcG9zdGNzcyAiXjUuMC40IgotICAg
IHVuaXFzICJeMi4wLjAiCi0KLXBvc3Rjc3MtdmFsdWUtcGFyc2VyQF4zLjAuMSwgcG9zdGNzcy12
YWx1ZS1wYXJzZXJAXjMuMC4yLCBwb3N0Y3NzLXZhbHVlLXBhcnNlckBeMy4xLjEsIHBvc3Rjc3Mt
dmFsdWUtcGFyc2VyQF4zLjEuMiwgcG9zdGNzcy12YWx1ZS1wYXJzZXJAXjMuMS4zLCBwb3N0Y3Nz
LXZhbHVlLXBhcnNlckBeMy4yLjM6Ci0gIHZlcnNpb24gIjMuMy4wIgotICByZXNvbHZlZCAiaHR0
cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9wb3N0Y3NzLXZhbHVlLXBhcnNlci8tL3Bvc3Rjc3Mt
dmFsdWUtcGFyc2VyLTMuMy4wLnRneiM4N2YzOGY5ZjE4Zjc3NGE0YWI0YzhhMjMyZjVjNWNlODg3
MmE5ZDE1IgotCi1wb3N0Y3NzLXppbmRleEBeMi4wLjE6Ci0gIHZlcnNpb24gIjIuMS4xIgotICBy
ZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9wb3N0Y3NzLXppbmRleC8tL3Bv
c3Rjc3MtemluZGV4LTIuMS4xLnRneiNlYTNmYmU2NTZjOTczOGFhODcyOWUyZWU5NmVjMmE0NjA4
OWI3MjBmIgotICBkZXBlbmRlbmNpZXM6Ci0gICAgcG9zdGNzcyAiXjUuMC40IgotICAgIHVuaXFz
ICJeMi4wLjAiCi0KLXBvc3Rjc3NAXjUuMC4xMCwgcG9zdGNzc0BeNS4wLjExLCBwb3N0Y3NzQF41
LjAuMTIsIHBvc3Rjc3NAXjUuMC4xMywgcG9zdGNzc0BeNS4wLjE0LCBwb3N0Y3NzQF41LjAuMTYs
IHBvc3Rjc3NAXjUuMC4yLCBwb3N0Y3NzQF41LjAuNCwgcG9zdGNzc0BeNS4wLjUsIHBvc3Rjc3NA
XjUuMC42LCBwb3N0Y3NzQF41LjAuOCwgcG9zdGNzc0BeNS4xLjIsIHBvc3Rjc3NAXjUuMi4wLCBw
b3N0Y3NzQF41LjIuMjoKLSAgdmVyc2lvbiAiNS4yLjQiCi0gIHJlc29sdmVkICJodHRwczovL3Jl
Z2lzdHJ5Lnlhcm5wa2cuY29tL3Bvc3Rjc3MvLS9wb3N0Y3NzLTUuMi40LnRneiM4ZWI0YmVlM2U1
YzRlMDkxNTg1YjExNmRmMzJkOGRiMjRhNTM1ZjIxIgotICBkZXBlbmRlbmNpZXM6Ci0gICAgY2hh
bGsgIl4xLjEuMyIKLSAgICBqcy1iYXNlNjQgIl4yLjEuOSIKLSAgICBzb3VyY2UtbWFwICJeMC41
LjYiCi0gICAgc3VwcG9ydHMtY29sb3IgIl4zLjEuMiIKLQotcHJlbHVkZS1sc0B+MS4xLjI6Ci0g
IHZlcnNpb24gIjEuMS4yIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNv
bS9wcmVsdWRlLWxzLy0vcHJlbHVkZS1scy0xLjEuMi50Z3ojMjE5MzJhNTQ5ZjVlNTJmZmQ5YTgy
N2Y1NzBlMDRiZTYyYTk3ZGE1NCIKLQotcHJlcGVuZC1odHRwQF4xLjAuMDoKLSAgdmVyc2lvbiAi
MS4wLjQiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3ByZXBlbmQt
aHR0cC8tL3ByZXBlbmQtaHR0cC0xLjAuNC50Z3ojZDRmNDU2MmIwY2UzNjk2ZTQxYWM1MmQwZTAw
MmU1N2E2MzVkYzZkYyIKLQotcHJlc2VydmVAXjAuMi4wOgotICB2ZXJzaW9uICIwLjIuMCIKLSAg
cmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vcHJlc2VydmUvLS9wcmVzZXJ2
ZS0wLjIuMC50Z3ojODE1ZWQxZjZlYmM2NTkyNmY4NjViMzEwYzA3MTNiY2IzMzE1Y2U0YiIKLQot
cHJldHR5LWVycm9yQF4yLjAuMDoKLSAgdmVyc2lvbiAiMi4wLjEiCi0gIHJlc29sdmVkICJodHRw
czovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3ByZXR0eS1lcnJvci8tL3ByZXR0eS1lcnJvci0yLjAu
MS50Z3ojOGE3Mzc1YjlmZTI2ZTQzYjUxMDE3OTRlNGRiZWFjMzYyYThkNjI5YSIKLSAgZGVwZW5k
ZW5jaWVzOgotICAgIHJlbmRlcmtpZCAifjIuMC4wIgotICAgIHV0aWxhICJ+MC40IgotCi1wcmV0
dHktZm9ybWF0QF4zLjcuMDoKLSAgdmVyc2lvbiAiMy44LjAiCi0gIHJlc29sdmVkICJodHRwczov
L3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3ByZXR0eS1mb3JtYXQvLS9wcmV0dHktZm9ybWF0LTMuOC4w
LnRneiNiZmJlZDU2ZDVlOWE3NzY2NDVmNGIxZmY3YWExYTNhYzRmYTNjMzg1IgotCi1wcml2YXRl
QF4wLjEuNiwgcHJpdmF0ZUB+MC4xLjU6Ci0gIHZlcnNpb24gIjAuMS42IgotICByZXNvbHZlZCAi
aHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9wcml2YXRlLy0vcHJpdmF0ZS0wLjEuNi50Z3oj
NTVjNmE5NzZkMGY5YmFmYjk5MjQ4NTEzNTBmZTQ3YjliNWZiYjdjMSIKLQotcHJvY2Vzcy1uZXh0
aWNrLWFyZ3NAfjEuMC42OgotICB2ZXJzaW9uICIxLjAuNyIKLSAgcmVzb2x2ZWQgImh0dHBzOi8v
cmVnaXN0cnkueWFybnBrZy5jb20vcHJvY2Vzcy1uZXh0aWNrLWFyZ3MvLS9wcm9jZXNzLW5leHRp
Y2stYXJncy0xLjAuNy50Z3ojMTUwZTIwYjc1NjU5MGFkM2Y5MTA5M2YyNWE0ZjJhZDhiZmYzMGJh
MyIKLQotcHJvY2Vzc0BeMC4xMS4wLCBwcm9jZXNzQH4wLjExLjA6Ci0gIHZlcnNpb24gIjAuMTEu
OSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vcHJvY2Vzcy8tL3By
b2Nlc3MtMC4xMS45LnRneiM3YmQ1YWQyMWFhNjI1M2U3ZGE4NjgyMjY0ZjFlMTFkMTFjMDMxOGMx
IgotCi1wcm9ncmVzc0BeMS4xLjg6Ci0gIHZlcnNpb24gIjEuMS44IgotICByZXNvbHZlZCAiaHR0
cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9wcm9ncmVzcy8tL3Byb2dyZXNzLTEuMS44LnRneiNl
MjYwYzc4ZjYxNjFjZGQ5YjBlNTZjYzNlMGE4NWRlMTdjN2E1N2JlIgotCi1wcm9taXNlQF43LjEu
MSwgcHJvbWlzZUA3LjEuMToKLSAgdmVyc2lvbiAiNy4xLjEiCi0gIHJlc29sdmVkICJodHRwczov
L3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3Byb21pc2UvLS9wcm9taXNlLTcuMS4xLnRneiM0ODk2NTRj
NjkyNjE2YjhhYTU1YjA3MjRmYTgwOWJiN2RiNDljNWJmIgotICBkZXBlbmRlbmNpZXM6Ci0gICAg
YXNhcCAifjIuMC4zIgotCi1wcm94eS1hZGRyQH4xLjEuMjoKLSAgdmVyc2lvbiAiMS4xLjIiCi0g
IHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3Byb3h5LWFkZHIvLS9wcm94
eS1hZGRyLTEuMS4yLnRneiNiNGNjNWYyMjYxMGQ5NTM1ODI0YzEyM2FlZjlkM2NmNzNjNDBiYTM3
IgotICBkZXBlbmRlbmNpZXM6Ci0gICAgZm9yd2FyZGVkICJ+MC4xLjAiCi0gICAgaXBhZGRyLmpz
ICIxLjEuMSIKLQotcHJyQH4wLjAuMDoKLSAgdmVyc2lvbiAiMC4wLjAiCi0gIHJlc29sdmVkICJo
dHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3Byci8tL3Byci0wLjAuMC50Z3ojMWE4NGI4NTkw
ODMyNTUwMTQxMTg1M2QwMDgxZWUzZmE4NmUyOTI2YSIKLQotcHNldWRvbWFwQF4xLjAuMToKLSAg
dmVyc2lvbiAiMS4wLjIiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29t
L3BzZXVkb21hcC8tL3BzZXVkb21hcC0xLjAuMi50Z3ojZjA1MmEyOGRhNzBlNjE4OTE3ZWYwYThh
YzM0YzFhZTVhNjgyODZiMyIKLQotcHVueWNvZGVAXjEuMi40OgotICB2ZXJzaW9uICIxLjQuMSIK
LSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vcHVueWNvZGUvLS9wdW55
Y29kZS0xLjQuMS50Z3ojYzBkNWE2M2IyNzE4ODAwYWQ4ZTFlYjBmYTUyNjljODRkZDQxODQ1ZSIK
LQotcHVueWNvZGVAMS4zLjI6Ci0gIHZlcnNpb24gIjEuMy4yIgotICByZXNvbHZlZCAiaHR0cHM6
Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9wdW55Y29kZS8tL3B1bnljb2RlLTEuMy4yLnRneiM5NjUz
YTAzNmZiN2MxZWU0MjM0MmYyMzI1Y2NlZWZlYTM5MjZjNDhkIgotCi1xQF4xLjEuMjoKLSAgdmVy
c2lvbiAiMS40LjEiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3Ev
LS9xLTEuNC4xLnRneiM1NTcwNWJjZDkzYzVmMzY3MzUzMGMyYzJjYmMwYzJiM2FkZGMyODZlIgot
Ci1xc0B+Ni4yLjA6Ci0gIHZlcnNpb24gIjYuMi4xIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdp
c3RyeS55YXJucGtnLmNvbS9xcy8tL3FzLTYuMi4xLnRneiNjZTAzYzVmZjA5MzViYzFkOWQ2OWE5
ZjE0Y2JkMThlNTY4ZDY3NjI1IgotCi1xc0A2LjIuMDoKLSAgdmVyc2lvbiAiNi4yLjAiCi0gIHJl
c29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3FzLy0vcXMtNi4yLjAudGd6IzNi
Nzg0OGMwM2MyZGVjZTY5YTk1MjJiMGZhZThjNDEyNmQ3NDVmM2IiCi0KLXF1ZXJ5LXN0cmluZ0Be
NC4xLjA6Ci0gIHZlcnNpb24gIjQuMi4zIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55
YXJucGtnLmNvbS9xdWVyeS1zdHJpbmcvLS9xdWVyeS1zdHJpbmctNC4yLjMudGd6IzlmMjcyNzNk
MjA3YTI1YThlZTRjN2I4Yzc0ZGNkNDVkNTU2ZGI4MjIiCi0gIGRlcGVuZGVuY2llczoKLSAgICBv
YmplY3QtYXNzaWduICJeNC4xLjAiCi0gICAgc3RyaWN0LXVyaS1lbmNvZGUgIl4xLjAuMCIKLQot
cXVlcnlzdHJpbmctZXMzQH4wLjIuMDoKLSAgdmVyc2lvbiAiMC4yLjEiCi0gIHJlc29sdmVkICJo
dHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3F1ZXJ5c3RyaW5nLWVzMy8tL3F1ZXJ5c3RyaW5n
LWVzMy0wLjIuMS50Z3ojOWVjNjFmNzkwNDk4NzU3MDdkNjk0MTQ1OTZmZDkwN2E0ZDcxMWU3MyIK
LQotcXVlcnlzdHJpbmdAMC4yLjA6Ci0gIHZlcnNpb24gIjAuMi4wIgotICByZXNvbHZlZCAiaHR0
cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9xdWVyeXN0cmluZy8tL3F1ZXJ5c3RyaW5nLTAuMi4w
LnRneiNiMjA5ODQ5MjAzYmIyNWRmODIwZGE3NTZlNzQ3MDA1ODc4NTIxNjIwIgotCi1xdWVyeXN0
cmluZ2lmeUAwLjAueDoKLSAgdmVyc2lvbiAiMC4wLjQiCi0gIHJlc29sdmVkICJodHRwczovL3Jl
Z2lzdHJ5Lnlhcm5wa2cuY29tL3F1ZXJ5c3RyaW5naWZ5Ly0vcXVlcnlzdHJpbmdpZnktMC4wLjQu
dGd6IzBjZjdmODRmOTQ2M2ZmMGFlNTFjNGM0YjE0MmQ5NWJlMzc3MjRkOWMiCi0KLXJhbmRvbWF0
aWNAXjEuMS4zOgotICB2ZXJzaW9uICIxLjEuNSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0
cnkueWFybnBrZy5jb20vcmFuZG9tYXRpYy8tL3JhbmRvbWF0aWMtMS4xLjUudGd6IzVlOWVmNWYy
ZDU3M2M2N2JkMmI4MTI0YWU5MGI1MTU2ZTQ1Nzg0MGIiCi0gIGRlcGVuZGVuY2llczoKLSAgICBp
cy1udW1iZXIgIl4yLjAuMiIKLSAgICBraW5kLW9mICJeMy4wLjIiCi0KLXJhbmdlLXBhcnNlckBe
MS4wLjMsIHJhbmdlLXBhcnNlckB+MS4yLjA6Ci0gIHZlcnNpb24gIjEuMi4wIgotICByZXNvbHZl
ZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9yYW5nZS1wYXJzZXIvLS9yYW5nZS1wYXJz
ZXItMS4yLjAudGd6I2Y0OWJlNmI0ODc4OTRkZGM0MGRjYzk0YTMyMmY2MTEwOTJlMDBkNWUiCi0K
LXJjQH4xLjEuMDoKLSAgdmVyc2lvbiAiMS4xLjYiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lz
dHJ5Lnlhcm5wa2cuY29tL3JjLy0vcmMtMS4xLjYudGd6IzQzNjUxYjc2YjZhZTUzYjVjODAyZjEx
NTFmYTNmYzNiMDU5OTY5YzkiCi0gIGRlcGVuZGVuY2llczoKLSAgICBkZWVwLWV4dGVuZCAifjAu
NC4wIgotICAgIGluaSAifjEuMy4wIgotICAgIG1pbmltaXN0ICJeMS4yLjAiCi0gICAgc3RyaXAt
anNvbi1jb21tZW50cyAifjEuMC40IgotCi1yZWFjdC1hZGRvbnMtdGVzdC11dGlsc0BeMTUuMy4w
OgotICB2ZXJzaW9uICIxNS4zLjIiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5w
a2cuY29tL3JlYWN0LWFkZG9ucy10ZXN0LXV0aWxzLy0vcmVhY3QtYWRkb25zLXRlc3QtdXRpbHMt
MTUuMy4yLnRneiNjMDlhNDRmNTgzNDI1YTRhOWMxYjM4NDQ0ZDdhNmMzZTZmMGY0MWY2IgotCi1y
ZWFjdC1kZXYtdXRpbHNAXjAuMi4xOgotICB2ZXJzaW9uICIwLjIuMSIKLSAgcmVzb2x2ZWQgImh0
dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vcmVhY3QtZGV2LXV0aWxzLy0vcmVhY3QtZGV2LXV0
aWxzLTAuMi4xLnRneiNjMDE3ZDZmNTMwNTAyYjI4YjczNWRiYWMzODQxYTdiODY2NTgzOGY1Igot
ICBkZXBlbmRlbmNpZXM6Ci0gICAgYW5zaS1odG1sICIwLjAuNSIKLSAgICBjaGFsayAiMS4xLjMi
Ci0gICAgZXNjYXBlLXN0cmluZy1yZWdleHAgIjEuMC41IgotICAgIGh0bWwtZW50aXRpZXMgIjEu
Mi4wIgotICAgIG9wbiAiNC4wLjIiCi0gICAgc29ja2pzLWNsaWVudCAiMS4wLjMiCi0gICAgc3Ry
aXAtYW5zaSAiMy4wLjEiCi0KLXJlYWN0LWRvbUBeMTUuMy4wOgotICB2ZXJzaW9uICIxNS4zLjIi
Ci0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3JlYWN0LWRvbS8tL3Jl
YWN0LWRvbS0xNS4zLjIudGd6I2M0NmIwYWE1MzgwZDdiODM4ZTdhNTljNGE3YmVmZjJlZDMxNTUz
MWYiCi0KLXJlYWN0LXJlZHV4QF40LjQuNToKLSAgdmVyc2lvbiAiNC40LjUiCi0gIHJlc29sdmVk
ICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3JlYWN0LXJlZHV4Ly0vcmVhY3QtcmVkdXgt
NC40LjUudGd6I2Y1MDlhMjk4MWJlMjI1MmQxMGM2MjllZjdjNTU5MzQ3YTRhZWM0NTciCi0gIGRl
cGVuZGVuY2llczoKLSAgICBob2lzdC1ub24tcmVhY3Qtc3RhdGljcyAiXjEuMC4zIgotICAgIGlu
dmFyaWFudCAiXjIuMC4wIgotICAgIGxvZGFzaCAiXjQuMi4wIgotICAgIGxvb3NlLWVudmlmeSAi
XjEuMS4wIgotCi1yZWFjdC1zY3JpcHRzQF4wLjYuMDoKLSAgdmVyc2lvbiAiMC42LjEiCi0gIHJl
c29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3JlYWN0LXNjcmlwdHMvLS9yZWFj
dC1zY3JpcHRzLTAuNi4xLnRneiM1MjZjYzQ3MmFlMGMwZGU2YmM0ZmRjYmIxOThhZjJhNjJjNmQ0
NjcxIgotICBkZXBlbmRlbmNpZXM6Ci0gICAgYXV0b3ByZWZpeGVyICI2LjQuMSIKLSAgICBiYWJl
bC1jb3JlICI2LjE0LjAiCi0gICAgYmFiZWwtZXNsaW50ICI2LjEuMiIKLSAgICBiYWJlbC1qZXN0
ICIxNS4wLjAiCi0gICAgYmFiZWwtbG9hZGVyICI2LjIuNSIKLSAgICBiYWJlbC1wcmVzZXQtcmVh
Y3QtYXBwICJeMC4yLjEiCi0gICAgY2FzZS1zZW5zaXRpdmUtcGF0aHMtd2VicGFjay1wbHVnaW4g
IjEuMS40IgotICAgIGNoYWxrICIxLjEuMyIKLSAgICBjb25uZWN0LWhpc3RvcnktYXBpLWZhbGxi
YWNrICIxLjMuMCIKLSAgICBjcm9zcy1zcGF3biAiNC4wLjAiCi0gICAgY3NzLWxvYWRlciAiMC4y
NC4wIgotICAgIGRldGVjdC1wb3J0ICIxLjAuMCIKLSAgICBkb3RlbnYgIjIuMC4wIgotICAgIGVz
bGludCAiMy41LjAiCi0gICAgZXNsaW50LWNvbmZpZy1yZWFjdC1hcHAgIl4wLjIuMSIKLSAgICBl
c2xpbnQtbG9hZGVyICIxLjUuMCIKLSAgICBlc2xpbnQtcGx1Z2luLWZsb3d0eXBlICIyLjE4LjEi
Ci0gICAgZXNsaW50LXBsdWdpbi1pbXBvcnQgIjEuMTIuMCIKLSAgICBlc2xpbnQtcGx1Z2luLWpz
eC1hMTF5ICIyLjIuMiIKLSAgICBlc2xpbnQtcGx1Z2luLXJlYWN0ICI2LjMuMCIKLSAgICBleHRy
YWN0LXRleHQtd2VicGFjay1wbHVnaW4gIjEuMC4xIgotICAgIGZpbGUtbG9hZGVyICIwLjkuMCIK
LSAgICBmaWxlc2l6ZSAiMy4zLjAiCi0gICAgZmluZC1jYWNoZS1kaXIgIjAuMS4xIgotICAgIGZz
LWV4dHJhICIwLjMwLjAiCi0gICAgZ3ppcC1zaXplICIzLjAuMCIKLSAgICBodG1sLXdlYnBhY2st
cGx1Z2luICIyLjIyLjAiCi0gICAgaHR0cC1wcm94eS1taWRkbGV3YXJlICIwLjE3LjEiCi0gICAg
amVzdCAiMTUuMS4xIgotICAgIGpzb24tbG9hZGVyICIwLjUuNCIKLSAgICBvYmplY3QtYXNzaWdu
ICI0LjEuMCIKLSAgICBwYXRoLWV4aXN0cyAiMi4xLjAiCi0gICAgcG9zdGNzcy1sb2FkZXIgIjAu
MTMuMCIKLSAgICBwcm9taXNlICI3LjEuMSIKLSAgICByZWFjdC1kZXYtdXRpbHMgIl4wLjIuMSIK
LSAgICByZWN1cnNpdmUtcmVhZGRpciAiMi4xLjAiCi0gICAgcmltcmFmICIyLjUuNCIKLSAgICBz
dHJpcC1hbnNpICIzLjAuMSIKLSAgICBzdHlsZS1sb2FkZXIgIjAuMTMuMSIKLSAgICB1cmwtbG9h
ZGVyICIwLjUuNyIKLSAgICB3ZWJwYWNrICIxLjEzLjIiCi0gICAgd2VicGFjay1kZXYtc2VydmVy
ICIxLjE2LjEiCi0gICAgd2hhdHdnLWZldGNoICIxLjAuMCIKLSAgb3B0aW9uYWxEZXBlbmRlbmNp
ZXM6Ci0gICAgZnNldmVudHMgIjEuMC4xNCIKLQotcmVhY3RAXjE1LjMuMDoKLSAgdmVyc2lvbiAi
MTUuMy4yIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9yZWFjdC8t
L3JlYWN0LTE1LjMuMi50Z3ojYTdiY2NkMmZlZThhZjEyNmIwMzE3ZTIyMmMyOGQxZDU0NTI4ZDA5
ZSIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGZianMgIl4wLjguNCIKLSAgICBsb29zZS1lbnZpZnkg
Il4xLjEuMCIKLSAgICBvYmplY3QtYXNzaWduICJeNC4xLjAiCi0KLXJlYWQtcGtnLXVwQF4xLjAu
MToKLSAgdmVyc2lvbiAiMS4wLjEiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5w
a2cuY29tL3JlYWQtcGtnLXVwLy0vcmVhZC1wa2ctdXAtMS4wLjEudGd6IzlkNjNjMTMyNzZjMDY1
OTE4ZDU3ZjAwMmE1N2Y0MGExYjY0M2ZiMDIiCi0gIGRlcGVuZGVuY2llczoKLSAgICBmaW5kLXVw
ICJeMS4wLjAiCi0gICAgcmVhZC1wa2cgIl4xLjAuMCIKLQotcmVhZC1wa2dAXjEuMC4wOgotICB2
ZXJzaW9uICIxLjEuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20v
cmVhZC1wa2cvLS9yZWFkLXBrZy0xLjEuMC50Z3ojZjVmZmFhNWVjZDI5Y2IzMWMwNDc0YmNhN2Q3
NTZiNmJiMjllM2YyOCIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGxvYWQtanNvbi1maWxlICJeMS4w
LjAiCi0gICAgbm9ybWFsaXplLXBhY2thZ2UtZGF0YSAiXjIuMy4yIgotICAgIHBhdGgtdHlwZSAi
XjEuMC4wIgotCi1yZWFkYWJsZS1zdHJlYW1AXjEuMC4yNy0xLCByZWFkYWJsZS1zdHJlYW1AXjEu
MS4xMzoKLSAgdmVyc2lvbiAiMS4xLjE0IgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55
YXJucGtnLmNvbS9yZWFkYWJsZS1zdHJlYW0vLS9yZWFkYWJsZS1zdHJlYW0tMS4xLjE0LnRneiM3
Y2Y0YzU0ZWY2NDhlMzgxMzA4NGM2MzZkZDIwNzllMTY2YzA4MWQ5IgotICBkZXBlbmRlbmNpZXM6
Ci0gICAgY29yZS11dGlsLWlzICJ+MS4wLjAiCi0gICAgaW5oZXJpdHMgIn4yLjAuMSIKLSAgICBp
c2FycmF5ICIwLjAuMSIKLSAgICBzdHJpbmdfZGVjb2RlciAifjAuMTAueCIKLQotInJlYWRhYmxl
LXN0cmVhbUBeMi4wLjAgfHwgXjEuMS4xMyIsIHJlYWRhYmxlLXN0cmVhbUBeMi4wLjEsIHJlYWRh
YmxlLXN0cmVhbUBeMi4wLjIsIHJlYWRhYmxlLXN0cmVhbUB+Mi4xLjQ6Ci0gIHZlcnNpb24gIjIu
MS41IgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9yZWFkYWJsZS1z
dHJlYW0vLS9yZWFkYWJsZS1zdHJlYW0tMi4xLjUudGd6IzY2ZmE4YjcyMGUxNDM4YjM2NDY4MWYy
YWQxYTYzYzYxODQ0OGM5ZDAiCi0gIGRlcGVuZGVuY2llczoKLSAgICBidWZmZXItc2hpbXMgIl4x
LjAuMCIKLSAgICBjb3JlLXV0aWwtaXMgIn4xLjAuMCIKLSAgICBpbmhlcml0cyAifjIuMC4xIgot
ICAgIGlzYXJyYXkgIn4xLjAuMCIKLSAgICBwcm9jZXNzLW5leHRpY2stYXJncyAifjEuMC42Igot
ICAgIHN0cmluZ19kZWNvZGVyICJ+MC4xMC54IgotICAgIHV0aWwtZGVwcmVjYXRlICJ+MS4wLjEi
Ci0KLXJlYWRhYmxlLXN0cmVhbUB+Mi4wLjAsIHJlYWRhYmxlLXN0cmVhbUB+Mi4wLjU6Ci0gIHZl
cnNpb24gIjIuMC42IgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9y
ZWFkYWJsZS1zdHJlYW0vLS9yZWFkYWJsZS1zdHJlYW0tMi4wLjYudGd6IzhmOTAzNDFlNjhhNTNj
Y2M5Mjg3ODhkYWNmY2QxMWIzNmViOWI3OGUiCi0gIGRlcGVuZGVuY2llczoKLSAgICBjb3JlLXV0
aWwtaXMgIn4xLjAuMCIKLSAgICBpbmhlcml0cyAifjIuMC4xIgotICAgIGlzYXJyYXkgIn4xLjAu
MCIKLSAgICBwcm9jZXNzLW5leHRpY2stYXJncyAifjEuMC42IgotICAgIHN0cmluZ19kZWNvZGVy
ICJ+MC4xMC54IgotICAgIHV0aWwtZGVwcmVjYXRlICJ+MS4wLjEiCi0KLXJlYWRhYmxlLXN0cmVh
bUAxLjA6Ci0gIHZlcnNpb24gIjEuMC4zNCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnku
eWFybnBrZy5jb20vcmVhZGFibGUtc3RyZWFtLy0vcmVhZGFibGUtc3RyZWFtLTEuMC4zNC50Z3oj
MTI1ODIwZTM0YmM4NDJkMmYyYWFhZmFmZTRjMjkxNmVlMzJjMTU3YyIKLSAgZGVwZW5kZW5jaWVz
OgotICAgIGNvcmUtdXRpbC1pcyAifjEuMC4wIgotICAgIGluaGVyaXRzICJ+Mi4wLjEiCi0gICAg
aXNhcnJheSAiMC4wLjEiCi0gICAgc3RyaW5nX2RlY29kZXIgIn4wLjEwLngiCi0KLXJlYWRhYmxl
LXN0cmVhbUAxLjE6Ci0gIHZlcnNpb24gIjEuMS4xMyIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVn
aXN0cnkueWFybnBrZy5jb20vcmVhZGFibGUtc3RyZWFtLy0vcmVhZGFibGUtc3RyZWFtLTEuMS4x
My50Z3ojZjZlZWY3NjRmNTE0Yzg5ZTJiOWUyMzE0NmE3NWJhMTA2NzU2ZDIzZSIKLSAgZGVwZW5k
ZW5jaWVzOgotICAgIGNvcmUtdXRpbC1pcyAifjEuMC4wIgotICAgIGluaGVyaXRzICJ+Mi4wLjEi
Ci0gICAgaXNhcnJheSAiMC4wLjEiCi0gICAgc3RyaW5nX2RlY29kZXIgIn4wLjEwLngiCi0KLXJl
YWRkaXJwQF4yLjAuMDoKLSAgdmVyc2lvbiAiMi4xLjAiCi0gIHJlc29sdmVkICJodHRwczovL3Jl
Z2lzdHJ5Lnlhcm5wa2cuY29tL3JlYWRkaXJwLy0vcmVhZGRpcnAtMi4xLjAudGd6IzRlZDBhZDA2
MGRmMzA3MzMwMGM0ODQ0MDM3M2Y3MmQxY2M2NDJkNzgiCi0gIGRlcGVuZGVuY2llczoKLSAgICBn
cmFjZWZ1bC1mcyAiXjQuMS4yIgotICAgIG1pbmltYXRjaCAiXjMuMC4yIgotICAgIHJlYWRhYmxl
LXN0cmVhbSAiXjIuMC4yIgotICAgIHNldC1pbW1lZGlhdGUtc2hpbSAiXjEuMC4xIgotCi1yZWFk
bGluZTJAXjEuMC4xOgotICB2ZXJzaW9uICIxLjAuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVn
aXN0cnkueWFybnBrZy5jb20vcmVhZGxpbmUyLy0vcmVhZGxpbmUyLTEuMC4xLnRneiM0MTA1OTYw
OGZmYzE1NDc1N2I3MTVkOTk4OWQxOTlmZmJmMzcyZTM1IgotICBkZXBlbmRlbmNpZXM6Ci0gICAg
Y29kZS1wb2ludC1hdCAiXjEuMC4wIgotICAgIGlzLWZ1bGx3aWR0aC1jb2RlLXBvaW50ICJeMS4w
LjAiCi0gICAgbXV0ZS1zdHJlYW0gIjAuMC41IgotCi1yZWN1cnNpdmUtcmVhZGRpckAyLjEuMDoK
LSAgdmVyc2lvbiAiMi4xLjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cu
Y29tL3JlY3Vyc2l2ZS1yZWFkZGlyLy0vcmVjdXJzaXZlLXJlYWRkaXItMi4xLjAudGd6Izc4Yjdi
ZmQ3OTU4MmQzZDc1OTZiOGZmMWJkMjlmYmQ1MDIyOWY2YWEiCi0gIGRlcGVuZGVuY2llczoKLSAg
ICBtaW5pbWF0Y2ggIjMuMC4yIgotCi1yZWRleWVkQH4xLjAuMDoKLSAgdmVyc2lvbiAiMS4wLjAi
Ci0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3JlZGV5ZWQvLS9yZWRl
eWVkLTEuMC4wLnRneiM2Y2UyNTA0NWM5ZTFmOWIyOGMwYWU3M2NlMjk2MGM4Y2I0ODE4NGIxIgot
ICBkZXBlbmRlbmNpZXM6Ci0gICAgZXNwcmltYSAifjIuNy4wIgotCi1yZWR1Y2UtY3NzLWNhbGNA
XjEuMi42OgotICB2ZXJzaW9uICIxLjMuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnku
eWFybnBrZy5jb20vcmVkdWNlLWNzcy1jYWxjLy0vcmVkdWNlLWNzcy1jYWxjLTEuMy4wLnRneiM3
NDdjOTE0ZTA0OTYxNGE0YzljZmJiYTYyOTg3MWFkMWQyOTI3NzE2IgotICBkZXBlbmRlbmNpZXM6
Ci0gICAgYmFsYW5jZWQtbWF0Y2ggIl4wLjQuMiIKLSAgICBtYXRoLWV4cHJlc3Npb24tZXZhbHVh
dG9yICJeMS4yLjE0IgotICAgIHJlZHVjZS1mdW5jdGlvbi1jYWxsICJeMS4wLjEiCi0KLXJlZHVj
ZS1mdW5jdGlvbi1jYWxsQF4xLjAuMToKLSAgdmVyc2lvbiAiMS4wLjEiCi0gIHJlc29sdmVkICJo
dHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3JlZHVjZS1mdW5jdGlvbi1jYWxsLy0vcmVkdWNl
LWZ1bmN0aW9uLWNhbGwtMS4wLjEudGd6I2ZhMDJlMTI2ZTY5NTgyNDI2M2NhYjkxZDNhNWIwZmRj
MWRkMjdhOWEiCi0gIGRlcGVuZGVuY2llczoKLSAgICBiYWxhbmNlZC1tYXRjaCAifjAuMS4wIgot
Ci1yZWR1eEBeMy41LjI6Ci0gIHZlcnNpb24gIjMuNi4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9y
ZWdpc3RyeS55YXJucGtnLmNvbS9yZWR1eC8tL3JlZHV4LTMuNi4wLnRneiM4ODdjMmIzZDBiOWJk
ODZlY2EyYmU3MDU3MWMyNzY1NGMxOWUxODhkIgotICBkZXBlbmRlbmNpZXM6Ci0gICAgbG9kYXNo
ICJeNC4yLjEiCi0gICAgbG9kYXNoLWVzICJeNC4yLjEiCi0gICAgbG9vc2UtZW52aWZ5ICJeMS4x
LjAiCi0gICAgc3ltYm9sLW9ic2VydmFibGUgIl4xLjAuMiIKLQotcmVnZW5lcmF0ZUBeMS4yLjE6
Ci0gIHZlcnNpb24gIjEuMy4xIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtn
LmNvbS9yZWdlbmVyYXRlLy0vcmVnZW5lcmF0ZS0xLjMuMS50Z3ojMDMwMDIwM2E1ZDJmZGNmODkx
MTZkY2U4NDI3NWQwMTFmNTkwM2YzMyIKLQotcmVnZW5lcmF0b3ItcnVudGltZUBeMC45LjU6Ci0g
IHZlcnNpb24gIjAuOS41IgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNv
bS9yZWdlbmVyYXRvci1ydW50aW1lLy0vcmVnZW5lcmF0b3ItcnVudGltZS0wLjkuNS50Z3ojNDAz
ZDZkNDBhNGJkZmY5YzMzMGRkOTM5MmRjYmIyZDlhOGJiYTFmYyIKLQotcmVnZXgtY2FjaGVAXjAu
NC4yOgotICB2ZXJzaW9uICIwLjQuMyIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFy
bnBrZy5jb20vcmVnZXgtY2FjaGUvLS9yZWdleC1jYWNoZS0wLjQuMy50Z3ojOWIxYTZjMzVkNGQw
ZGZjZWY1NzExYWU2NTFlOGU5ZDNkNzExNDE0NSIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGlzLWVx
dWFsLXNoYWxsb3cgIl4wLjEuMyIKLSAgICBpcy1wcmltaXRpdmUgIl4yLjAuMCIKLQotcmVnZXhw
dS1jb3JlQF4xLjAuMDoKLSAgdmVyc2lvbiAiMS4wLjAiCi0gIHJlc29sdmVkICJodHRwczovL3Jl
Z2lzdHJ5Lnlhcm5wa2cuY29tL3JlZ2V4cHUtY29yZS8tL3JlZ2V4cHUtY29yZS0xLjAuMC50Z3oj
ODZhNzYzZjU4ZWU0ZDdjMmY2YjEwMmU0NzY0MDUwZGU3ZWQ5MGM2YiIKLSAgZGVwZW5kZW5jaWVz
OgotICAgIHJlZ2VuZXJhdGUgIl4xLjIuMSIKLSAgICByZWdqc2dlbiAiXjAuMi4wIgotICAgIHJl
Z2pzcGFyc2VyICJeMC4xLjQiCi0KLXJlZ2V4cHUtY29yZUBeMi4wLjA6Ci0gIHZlcnNpb24gIjIu
MC4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9yZWdleHB1LWNv
cmUvLS9yZWdleHB1LWNvcmUtMi4wLjAudGd6IzQ5ZDAzODgzN2I4ZGNmOGJmYTViOWE0MjEzOTkz
OGU2ZWEyYWUyNDAiCi0gIGRlcGVuZGVuY2llczoKLSAgICByZWdlbmVyYXRlICJeMS4yLjEiCi0g
ICAgcmVnanNnZW4gIl4wLjIuMCIKLSAgICByZWdqc3BhcnNlciAiXjAuMS40IgotCi1yZWdqc2dl
bkBeMC4yLjA6Ci0gIHZlcnNpb24gIjAuMi4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3Ry
eS55YXJucGtnLmNvbS9yZWdqc2dlbi8tL3JlZ2pzZ2VuLTAuMi4wLnRneiM2YzAxNmFkZWFjNTU0
Zjc1ODIzZmUzN2FjMDViOTJkNWE0ZWRiMWY3IgotCi1yZWdqc3BhcnNlckBeMC4xLjQ6Ci0gIHZl
cnNpb24gIjAuMS41IgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9y
ZWdqc3BhcnNlci8tL3JlZ2pzcGFyc2VyLTAuMS41LnRneiM3ZWU4Zjg0ZGM2ZmE3OTJkM2ZkMGFl
MjI4ZDI0YmQ5NDllYWQyMDVjIgotICBkZXBlbmRlbmNpZXM6Ci0gICAganNlc2MgIn4wLjUuMCIK
LQotcmVsYXRldXJsQDAuMi54OgotICB2ZXJzaW9uICIwLjIuNyIKLSAgcmVzb2x2ZWQgImh0dHBz
Oi8vcmVnaXN0cnkueWFybnBrZy5jb20vcmVsYXRldXJsLy0vcmVsYXRldXJsLTAuMi43LnRneiM1
NGRiZjM3N2U1MTQ0MGFjYTkwYTRjZDI3NDYwMGQzZmYyZDg4OGE5IgotCi1yZW5kZXJraWRAfjIu
MC4wOgotICB2ZXJzaW9uICIyLjAuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFy
bnBrZy5jb20vcmVuZGVya2lkLy0vcmVuZGVya2lkLTIuMC4wLnRneiMxODU5NzUzZTdhNWFkYmYz
NTQ0M2FiYTBkNGU0NTc5ZTc4YWJlZTg1IgotICBkZXBlbmRlbmNpZXM6Ci0gICAgY3NzLXNlbGVj
dCAiXjEuMS4wIgotICAgIGRvbS1jb252ZXJ0ZXIgIn4wLjEiCi0gICAgaHRtbHBhcnNlcjIgIn4z
LjMuMCIKLSAgICBzdHJpcC1hbnNpICJeMy4wLjAiCi0gICAgdXRpbGEgIn4wLjMiCi0KLXJlcGVh
dC1lbGVtZW50QF4xLjEuMjoKLSAgdmVyc2lvbiAiMS4xLjIiCi0gIHJlc29sdmVkICJodHRwczov
L3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3JlcGVhdC1lbGVtZW50Ly0vcmVwZWF0LWVsZW1lbnQtMS4x
LjIudGd6I2VmMDg5YTE3OGQxNDgzYmFhZTRkOTNlYjk4YjRmOWU0ZTExZDk5MGEiCi0KLXJlcGVh
dC1zdHJpbmdAXjEuNS4yOgotICB2ZXJzaW9uICIxLjUuNCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8v
cmVnaXN0cnkueWFybnBrZy5jb20vcmVwZWF0LXN0cmluZy8tL3JlcGVhdC1zdHJpbmctMS41LjQu
dGd6IzY0ZWMwYzkxZTBmNGI0NzVmOTBkNWI2NDM2NTFlM2U2ZTViNmMyZDUiCi0KLXJlcGVhdGlu
Z0BeMS4xLjA6Ci0gIHZlcnNpb24gIjEuMS4zIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3Ry
eS55YXJucGtnLmNvbS9yZXBlYXRpbmcvLS9yZXBlYXRpbmctMS4xLjMudGd6IzNkNDExNDIxODg3
NzUzNzQ5NGY5N2Y3N2Y5Nzg1ZmFiODEwZmE0YWMiCi0gIGRlcGVuZGVuY2llczoKLSAgICBpcy1m
aW5pdGUgIl4xLjAuMCIKLQotcmVxdWVzdEBeMi41NS4wLCByZXF1ZXN0QDIueDoKLSAgdmVyc2lv
biAiMi43NS4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9yZXF1
ZXN0Ly0vcmVxdWVzdC0yLjc1LjAudGd6I2QyYjgyNjhhMjg2ZGExM2VhYTVkMDFhZGY1ZDE4Y2M5
MGY2NTdkOTMiCi0gIGRlcGVuZGVuY2llczoKLSAgICBhd3Mtc2lnbjIgIn4wLjYuMCIKLSAgICBh
d3M0ICJeMS4yLjEiCi0gICAgYmwgIn4xLjEuMiIKLSAgICBjYXNlbGVzcyAifjAuMTEuMCIKLSAg
ICBjb21iaW5lZC1zdHJlYW0gIn4xLjAuNSIKLSAgICBleHRlbmQgIn4zLjAuMCIKLSAgICBmb3Jl
dmVyLWFnZW50ICJ+MC42LjEiCi0gICAgZm9ybS1kYXRhICJ+Mi4wLjAiCi0gICAgaGFyLXZhbGlk
YXRvciAifjIuMC42IgotICAgIGhhd2sgIn4zLjEuMyIKLSAgICBodHRwLXNpZ25hdHVyZSAifjEu
MS4wIgotICAgIGlzLXR5cGVkYXJyYXkgIn4xLjAuMCIKLSAgICBpc3N0cmVhbSAifjAuMS4yIgot
ICAgIGpzb24tc3RyaW5naWZ5LXNhZmUgIn41LjAuMSIKLSAgICBtaW1lLXR5cGVzICJ+Mi4xLjci
Ci0gICAgbm9kZS11dWlkICJ+MS40LjciCi0gICAgb2F1dGgtc2lnbiAifjAuOC4xIgotICAgIHFz
ICJ+Ni4yLjAiCi0gICAgc3RyaW5nc3RyZWFtICJ+MC4wLjQiCi0gICAgdG91Z2gtY29va2llICJ+
Mi4zLjAiCi0gICAgdHVubmVsLWFnZW50ICJ+MC40LjEiCi0KLXJlcXVpcmUtZGlyZWN0b3J5QF4y
LjEuMToKLSAgdmVyc2lvbiAiMi4xLjEiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlh
cm5wa2cuY29tL3JlcXVpcmUtZGlyZWN0b3J5Ly0vcmVxdWlyZS1kaXJlY3RvcnktMi4xLjEudGd6
IzhjNjRhZDVmZDMwZGFiMWM5NzZlMjM0NGZmZTdmNzkyYTZhNmRmNDIiCi0KLXJlcXVpcmUtbWFp
bi1maWxlbmFtZUBeMS4wLjE6Ci0gIHZlcnNpb24gIjEuMC4xIgotICByZXNvbHZlZCAiaHR0cHM6
Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9yZXF1aXJlLW1haW4tZmlsZW5hbWUvLS9yZXF1aXJlLW1h
aW4tZmlsZW5hbWUtMS4wLjEudGd6Izk3ZjcxN2I2OWQ0ODc4NGY1ZjUyNmE2YzVhYThmZmRkYTA1
NWE0ZDEiCi0KLXJlcXVpcmUtdW5jYWNoZWRAXjEuMC4yOgotICB2ZXJzaW9uICIxLjAuMiIKLSAg
cmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vcmVxdWlyZS11bmNhY2hlZC8t
L3JlcXVpcmUtdW5jYWNoZWQtMS4wLjIudGd6IzY3ZGFkM2I3MzMwODllNzcwMzAxMjQ2NzhhNDU5
NTg5ZmFmNmE3ZWMiCi0gIGRlcGVuZGVuY2llczoKLSAgICBjYWxsZXItcGF0aCAiXjAuMS4wIgot
ICAgIHJlc29sdmUtZnJvbSAiXjEuMC4wIgotCi1yZXF1aXJlcy1wb3J0QDEuMC54LCByZXF1aXJl
cy1wb3J0QDEueC54OgotICB2ZXJzaW9uICIxLjAuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVn
aXN0cnkueWFybnBrZy5jb20vcmVxdWlyZXMtcG9ydC8tL3JlcXVpcmVzLXBvcnQtMS4wLjAudGd6
IzkyNWQyNjAxZDM5YWM0ODVlMDkxY2YwZGE1YzZlNjk0ZGMzZGNhZmYiCi0KLXJlc29sdmUtZnJv
bUBeMS4wLjA6Ci0gIHZlcnNpb24gIjEuMC4xIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3Ry
eS55YXJucGtnLmNvbS9yZXNvbHZlLWZyb20vLS9yZXNvbHZlLWZyb20tMS4wLjEudGd6IzI2Y2Jm
ZTkzNWQxYWVlZWFiYjI5YmMzZmU1YWViMDFlOTNkNDQyMjYiCi0KLXJlc29sdmVAXjEuMS42LCBy
ZXNvbHZlQDEuMS43LCByZXNvbHZlQDEuMS54OgotICB2ZXJzaW9uICIxLjEuNyIKLSAgcmVzb2x2
ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vcmVzb2x2ZS8tL3Jlc29sdmUtMS4xLjcu
dGd6IzIwMzExNGQ4MmFkMmM1ZWQ5ZThlMDQxMWIzOTMyODc1ZTg4OWU5N2IiCi0KLXJlc3RvcmUt
Y3Vyc29yQF4xLjAuMToKLSAgdmVyc2lvbiAiMS4wLjEiCi0gIHJlc29sdmVkICJodHRwczovL3Jl
Z2lzdHJ5Lnlhcm5wa2cuY29tL3Jlc3RvcmUtY3Vyc29yLy0vcmVzdG9yZS1jdXJzb3ItMS4wLjEu
dGd6IzM0NjYxZjQ2ODg2MzI3ZmVkMjk5MTQ3OTE1MjI1MmRmOTJkYWE1NDEiCi0gIGRlcGVuZGVu
Y2llczoKLSAgICBleGl0LWhvb2sgIl4xLjAuMCIKLSAgICBvbmV0aW1lICJeMS4wLjAiCi0KLXJp
Z2h0LWFsaWduQF4wLjEuMToKLSAgdmVyc2lvbiAiMC4xLjMiCi0gIHJlc29sdmVkICJodHRwczov
L3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3JpZ2h0LWFsaWduLy0vcmlnaHQtYWxpZ24tMC4xLjMudGd6
IzYxMzM5YjcyMmZlNmEzNTE1Njg5MjEwZDI0ZTE0Yzk2MTQ4NjEzZWYiCi0gIGRlcGVuZGVuY2ll
czoKLSAgICBhbGlnbi10ZXh0ICJeMC4xLjEiCi0KLXJpbXJhZkBeMi4yLjgsIHJpbXJhZkBeMi40
LjMsIHJpbXJhZkBeMi40LjQsIHJpbXJhZkB+Mi41LjAsIHJpbXJhZkB+Mi41LjEsIHJpbXJhZkAy
LCByaW1yYWZAMi41LjQ6Ci0gIHZlcnNpb24gIjIuNS40IgotICByZXNvbHZlZCAiaHR0cHM6Ly9y
ZWdpc3RyeS55YXJucGtnLmNvbS9yaW1yYWYvLS9yaW1yYWYtMi41LjQudGd6Izk2ODAwMDkzY2Jm
MWEwYzg2YmQ5NWI0NjI1NDY3NTM1YzI5ZGZhMDQiCi0gIGRlcGVuZGVuY2llczoKLSAgICBnbG9i
ICJeNy4wLjUiCi0KLXJpcGVtZDE2MEAwLjIuMDoKLSAgdmVyc2lvbiAiMC4yLjAiCi0gIHJlc29s
dmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3JpcGVtZDE2MC8tL3JpcGVtZDE2MC0w
LjIuMC50Z3ojMmJmMTk4YmRlMTY3Y2FjZmE1MWMwYTkyOGU4NGI2OGJiZTE3MWZjZSIKLQotcnVu
LWFzeW5jQF4wLjEuMDoKLSAgdmVyc2lvbiAiMC4xLjAiCi0gIHJlc29sdmVkICJodHRwczovL3Jl
Z2lzdHJ5Lnlhcm5wa2cuY29tL3J1bi1hc3luYy8tL3J1bi1hc3luYy0wLjEuMC50Z3ojYzhhZDRh
NWUxMTA2NjFlNDAyYTdkMjFiNTMwZTAwOWYyNWY4ZTM4OSIKLSAgZGVwZW5kZW5jaWVzOgotICAg
IG9uY2UgIl4xLjMuMCIKLQotcngtbGl0ZUBeMy4xLjI6Ci0gIHZlcnNpb24gIjMuMS4yIgotICBy
ZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9yeC1saXRlLy0vcngtbGl0ZS0z
LjEuMi50Z3ojMTljZTUwMmNhNTcyNjY1ZjNiNjQ3YjEwOTM5Zjk3ZmQxNjE1ZjEwMiIKLQotc2Fu
ZUB+MS40LjE6Ci0gIHZlcnNpb24gIjEuNC4xIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3Ry
eS55YXJucGtnLmNvbS9zYW5lLy0vc2FuZS0xLjQuMS50Z3ojODhmNzYzZDc0MDQwZjVmMGMyNTZi
NjE2M2RiMzk5YmYxMTBhYzcxNSIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGV4ZWMtc2ggIl4wLjIu
MCIKLSAgICBmYi13YXRjaG1hbiAiXjEuOC4wIgotICAgIG1pbmltYXRjaCAiXjMuMC4yIgotICAg
IG1pbmltaXN0ICJeMS4xLjEiCi0gICAgd2Fsa2VyICJ+MS4wLjUiCi0gICAgd2F0Y2ggIn4wLjEw
LjAiCi0KLXNheEBeMS4xLjQsIHNheEB+MS4yLjE6Ci0gIHZlcnNpb24gIjEuMi4xIgotICByZXNv
bHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9zYXgvLS9zYXgtMS4yLjEudGd6Izdi
OGU2NTYxOTBiMjI4ZTgxYTY2YWVhNzQ4NDgwZDgyOGNkMmQzN2EiCi0KLXNlbXZlckBeNS4xLjAs
IHNlbXZlckB+NS4zLjAsICJzZW12ZXJAMiB8fCAzIHx8IDQgfHwgNSI6Ci0gIHZlcnNpb24gIjUu
My4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9zZW12ZXIvLS9z
ZW12ZXItNS4zLjAudGd6IzliMmNlNWQzZGUwMmQxN2M2MDEyYWQzMjZhYTZiNGQwY2Y1NGY5NGYi
Ci0KLXNlbmRAMC4xNC4xOgotICB2ZXJzaW9uICIwLjE0LjEiCi0gIHJlc29sdmVkICJodHRwczov
L3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3NlbmQvLS9zZW5kLTAuMTQuMS50Z3ojYTk1NDk4NDMyNTM5
MmY1MTUzMmE3NzYwNzYwZTQ1OTU5OGM4OWY3YSIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGRlYnVn
ICJ+Mi4yLjAiCi0gICAgZGVwZCAifjEuMS4wIgotICAgIGRlc3Ryb3kgIn4xLjAuNCIKLSAgICBl
bmNvZGV1cmwgIn4xLjAuMSIKLSAgICBlc2NhcGUtaHRtbCAifjEuMC4zIgotICAgIGV0YWcgIn4x
LjcuMCIKLSAgICBmcmVzaCAiMC4zLjAiCi0gICAgaHR0cC1lcnJvcnMgIn4xLjUuMCIKLSAgICBt
aW1lICIxLjMuNCIKLSAgICBtcyAiMC43LjEiCi0gICAgb24tZmluaXNoZWQgIn4yLjMuMCIKLSAg
ICByYW5nZS1wYXJzZXIgIn4xLjIuMCIKLSAgICBzdGF0dXNlcyAifjEuMy4wIgotCi1zZW50ZW5j
ZS1jYXNlQF4yLjEuMDoKLSAgdmVyc2lvbiAiMi4xLjAiCi0gIHJlc29sdmVkICJodHRwczovL3Jl
Z2lzdHJ5Lnlhcm5wa2cuY29tL3NlbnRlbmNlLWNhc2UvLS9zZW50ZW5jZS1jYXNlLTIuMS4wLnRn
eiNkNTkyZmJlZDQ1N2ZkMWE1OWUzYWYwZWUxN2U5OWY2ZmQ3MGQ3ZWZkIgotICBkZXBlbmRlbmNp
ZXM6Ci0gICAgbm8tY2FzZSAiXjIuMi4wIgotICAgIHVwcGVyLWNhc2UtZmlyc3QgIl4xLjEuMiIK
LQotc2VydmUtaW5kZXhAXjEuNy4yOgotICB2ZXJzaW9uICIxLjguMCIKLSAgcmVzb2x2ZWQgImh0
dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vc2VydmUtaW5kZXgvLS9zZXJ2ZS1pbmRleC0xLjgu
MC50Z3ojN2M1ZDk2YzEzZmIxMzExMDFmOTNjMWM1Nzc0Zjg1MTZhMWU3OGQzYiIKLSAgZGVwZW5k
ZW5jaWVzOgotICAgIGFjY2VwdHMgIn4xLjMuMyIKLSAgICBiYXRjaCAiMC41LjMiCi0gICAgZGVi
dWcgIn4yLjIuMCIKLSAgICBlc2NhcGUtaHRtbCAifjEuMC4zIgotICAgIGh0dHAtZXJyb3JzICJ+
MS41LjAiCi0gICAgbWltZS10eXBlcyAifjIuMS4xMSIKLSAgICBwYXJzZXVybCAifjEuMy4xIgot
Ci1zZXJ2ZS1zdGF0aWNAfjEuMTEuMToKLSAgdmVyc2lvbiAiMS4xMS4xIgotICByZXNvbHZlZCAi
aHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9zZXJ2ZS1zdGF0aWMvLS9zZXJ2ZS1zdGF0aWMt
MS4xMS4xLnRneiNkNmNjZTc2OTM1MDVmNzMzYzc1OWRlNTdiZWZjMWFmNzZjMGYwODA1IgotICBk
ZXBlbmRlbmNpZXM6Ci0gICAgZW5jb2RldXJsICJ+MS4wLjEiCi0gICAgZXNjYXBlLWh0bWwgIn4x
LjAuMyIKLSAgICBwYXJzZXVybCAifjEuMy4xIgotICAgIHNlbmQgIjAuMTQuMSIKLQotc2V0LWJs
b2NraW5nQF4yLjAuMCwgc2V0LWJsb2NraW5nQH4yLjAuMDoKLSAgdmVyc2lvbiAiMi4wLjAiCi0g
IHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3NldC1ibG9ja2luZy8tL3Nl
dC1ibG9ja2luZy0yLjAuMC50Z3ojMDQ1Zjk3ODJkMDExYWU5YTY4MDNkZGQzODJiMjQzOTJiM2Q4
OTBmNyIKLQotc2V0LWltbWVkaWF0ZS1zaGltQF4xLjAuMToKLSAgdmVyc2lvbiAiMS4wLjEiCi0g
IHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3NldC1pbW1lZGlhdGUtc2hp
bS8tL3NldC1pbW1lZGlhdGUtc2hpbS0xLjAuMS50Z3ojNGIyYjFiMjdlYjgwOGE5ZjhkY2M0ODFh
NThlNWU1NmY1OTlmM2Y2MSIKLQotc2V0cHJvdG90eXBlb2ZAMS4wLjE6Ci0gIHZlcnNpb24gIjEu
MC4xIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9zZXRwcm90b3R5
cGVvZi8tL3NldHByb3RvdHlwZW9mLTEuMC4xLnRneiM1MjAwOWIyNzg4OGM0ZGM0OGY1OTE5NDlj
MGE4Mjc1ODM0YzFjYTdlIgotCi1zaGEuanNAMi4yLjY6Ci0gIHZlcnNpb24gIjIuMi42IgotICBy
ZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9zaGEuanMvLS9zaGEuanMtMi4y
LjYudGd6IzE3ZGRlZGRjNWY3MjJmYjY2NTAxNjU4ODk1NDYxOTc3ODY3MzE1YmEiCi0KLXNoZWJh
bmctcmVnZXhAXjEuMC4wOgotICB2ZXJzaW9uICIxLjAuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8v
cmVnaXN0cnkueWFybnBrZy5jb20vc2hlYmFuZy1yZWdleC8tL3NoZWJhbmctcmVnZXgtMS4wLjAu
dGd6I2RhNDJmNDk3NDBjMGI0MmRiMmNhOTcyODU3MWNiMTkwYzk4ZWZlYTMiCi0KLXNoZWxsanNA
XjAuNi4wOgotICB2ZXJzaW9uICIwLjYuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnku
eWFybnBrZy5jb20vc2hlbGxqcy8tL3NoZWxsanMtMC42LjEudGd6I2VjNjIxMWJlZDE5MjA0NDIw
ODhmZTBmNzBiMjgzNzIzMmVkMmM4YTgiCi0KLXNoZWxsd29yZHNAXjAuMS4wOgotICB2ZXJzaW9u
ICIwLjEuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vc2hlbGx3
b3Jkcy8tL3NoZWxsd29yZHMtMC4xLjAudGd6IzY2YWZkNDdiNmExMjkzMmQ5MDcxY2JmZDk4YTUy
ZTc4NWNkMGJhMTQiCi0KLXNpZ25hbC1leGl0QF4zLjAuMDoKLSAgdmVyc2lvbiAiMy4wLjEiCi0g
IHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3NpZ25hbC1leGl0Ly0vc2ln
bmFsLWV4aXQtMy4wLjEudGd6IzVhNGM4ODQ5OTJiNjNhN2FjZDliYWRiNzg5NGMzZWU5Y2ZjY2Fk
ODEiCi0KLXNsYXNoQF4xLjAuMDoKLSAgdmVyc2lvbiAiMS4wLjAiCi0gIHJlc29sdmVkICJodHRw
czovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3NsYXNoLy0vc2xhc2gtMS4wLjAudGd6I2M0MWYyZjZj
MzlmYzE2ZDFjZDE3YWQ0YjVkODk2MTE0YWU0NzBkNTUiCi0KLXNsaWNlLWFuc2lAMC4wLjQ6Ci0g
IHZlcnNpb24gIjAuMC40IgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNv
bS9zbGljZS1hbnNpLy0vc2xpY2UtYW5zaS0wLjAuNC50Z3ojZWRiZjg5MDNmNjZmN2NlMmY4ZWFm
ZDZjZWVkNjVlMjY0YzgzMWIzNSIKLQotc25ha2UtY2FzZUBeMi4xLjA6Ci0gIHZlcnNpb24gIjIu
MS4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9zbmFrZS1jYXNl
Ly0vc25ha2UtY2FzZS0yLjEuMC50Z3ojNDFiZGIxYjczZjMwZWM2NmEwNGQ0ZTJjYWQxYjc2Mzg3
ZDRkNmQ5ZiIKLSAgZGVwZW5kZW5jaWVzOgotICAgIG5vLWNhc2UgIl4yLjIuMCIKLQotc250cEAx
LngueDoKLSAgdmVyc2lvbiAiMS4wLjkiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlh
cm5wa2cuY29tL3NudHAvLS9zbnRwLTEuMC45LnRneiM2NTQxMTg0Y2M5MGFlZWE2YzZlN2IzNWUy
NjU5MDgyNDQzYzY2MTk4IgotICBkZXBlbmRlbmNpZXM6Ci0gICAgaG9layAiMi54LngiCi0KLXNv
Y2tqcy1jbGllbnRAXjEuMC4zOgotICB2ZXJzaW9uICIxLjEuMSIKLSAgcmVzb2x2ZWQgImh0dHBz
Oi8vcmVnaXN0cnkueWFybnBrZy5jb20vc29ja2pzLWNsaWVudC8tL3NvY2tqcy1jbGllbnQtMS4x
LjEudGd6IzI4NDg0M2U5YTk3ODRkN2M0NzRiMTU3MWIzMjQwZmNhOWRkYTRiYjAiCi0gIGRlcGVu
ZGVuY2llczoKLSAgICBkZWJ1ZyAiXjIuMi4wIgotICAgIGV2ZW50c291cmNlICJ+MC4xLjYiCi0g
ICAgZmF5ZS13ZWJzb2NrZXQgIn4wLjExLjAiCi0gICAgaW5oZXJpdHMgIl4yLjAuMSIKLSAgICBq
c29uMyAiXjMuMy4yIgotICAgIHVybC1wYXJzZSAiXjEuMS4xIgotCi1zb2NranMtY2xpZW50QDEu
MC4zOgotICB2ZXJzaW9uICIxLjAuMyIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFy
bnBrZy5jb20vc29ja2pzLWNsaWVudC8tL3NvY2tqcy1jbGllbnQtMS4wLjMudGd6I2IwZDgyODA5
OTg0NjBlYjI1NjRjNWQ3OWQ3ZTNkN2NmZDhhMzUzYWQiCi0gIGRlcGVuZGVuY2llczoKLSAgICBk
ZWJ1ZyAiXjIuMS4wIgotICAgIGV2ZW50c291cmNlICJeMC4xLjMiCi0gICAgZmF5ZS13ZWJzb2Nr
ZXQgIn4wLjcuMyIKLSAgICBpbmhlcml0cyAiXjIuMC4xIgotICAgIGpzb24zICJeMy4zLjIiCi0g
ICAgdXJsLXBhcnNlICJeMS4wLjEiCi0KLXNvY2tqc0BeMC4zLjE1OgotICB2ZXJzaW9uICIwLjMu
MTgiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3NvY2tqcy8tL3Nv
Y2tqcy0wLjMuMTgudGd6I2Q5YjI4OTMxNmNhN2RmNzc1OTVlZjI5OWUwNzVmMGY5MzdlYjQyMDci
Ci0gIGRlcGVuZGVuY2llczoKLSAgICBmYXllLXdlYnNvY2tldCAiXjAuMTAuMCIKLSAgICB1dWlk
ICJeMi4wLjIiCi0KLXNvcnQta2V5c0BeMS4wLjA6Ci0gIHZlcnNpb24gIjEuMS4yIgotICByZXNv
bHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9zb3J0LWtleXMvLS9zb3J0LWtleXMt
MS4xLjIudGd6IzQ0MWI2ZDRkMzQ2Nzk4ZjFiNGU0OWU4OTIwYWRmYmEwZTU0M2Y5YWQiCi0gIGRl
cGVuZGVuY2llczoKLSAgICBpcy1wbGFpbi1vYmogIl4xLjAuMCIKLQotc291cmNlLWxpc3QtbWFw
QF4wLjEuNCwgc291cmNlLWxpc3QtbWFwQH4wLjEuMDoKLSAgdmVyc2lvbiAiMC4xLjYiCi0gIHJl
c29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3NvdXJjZS1saXN0LW1hcC8tL3Nv
dXJjZS1saXN0LW1hcC0wLjEuNi50Z3ojZTFlNmY5NGYwYjQwYzRkMjhkY2Y4ZjViODc2NmUwZTQ1
NjM2ODc3ZiIKLQotc291cmNlLW1hcC1zdXBwb3J0QF4wLjQuMjoKLSAgdmVyc2lvbiAiMC40LjMi
Ci0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3NvdXJjZS1tYXAtc3Vw
cG9ydC8tL3NvdXJjZS1tYXAtc3VwcG9ydC0wLjQuMy50Z3ojNjkzYzgzODNkNDM4OWE0NTY5NDg2
OTg3YzIxOTc0NGRmYzYwMTY4NSIKLSAgZGVwZW5kZW5jaWVzOgotICAgIHNvdXJjZS1tYXAgIl4w
LjUuMyIKLQotc291cmNlLW1hcEBeMC40LjQsIHNvdXJjZS1tYXBAfjAuNC4xLCBzb3VyY2UtbWFw
QDAuNC54OgotICB2ZXJzaW9uICIwLjQuNCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnku
eWFybnBrZy5jb20vc291cmNlLW1hcC8tL3NvdXJjZS1tYXAtMC40LjQudGd6I2ViYTRmNWRhOWMw
ZGM5OTlkZTY4MDMyZDhiNGY3NjE3MzY1MjAzNmIiCi0gIGRlcGVuZGVuY2llczoKLSAgICBhbWRl
ZmluZSAiPj0wLjAuNCIKLQotc291cmNlLW1hcEBeMC41LjAsIHNvdXJjZS1tYXBAXjAuNS4zLCBz
b3VyY2UtbWFwQF4wLjUuNiwgc291cmNlLW1hcEB+MC41LjEsIHNvdXJjZS1tYXBAfjAuNS4zOgot
ICB2ZXJzaW9uICIwLjUuNiIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5j
b20vc291cmNlLW1hcC8tL3NvdXJjZS1tYXAtMC41LjYudGd6Izc1Y2UzOGY1MmJmMDczM2M1YTdm
MGMxMThkODEzMzRhMmJiNWY0MTIiCi0KLXNvdXJjZS1tYXBAfjAuMi4wOgotICB2ZXJzaW9uICIw
LjIuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vc291cmNlLW1h
cC8tL3NvdXJjZS1tYXAtMC4yLjAudGd6I2RhYjczZmJjZmMyYmE4MTliNGRlMDNiZDZmNmVhYTQ4
MTY0YjNmOWQiCi0gIGRlcGVuZGVuY2llczoKLSAgICBhbWRlZmluZSAiPj0wLjAuNCIKLQotc3Bk
eC1jb3JyZWN0QH4xLjAuMDoKLSAgdmVyc2lvbiAiMS4wLjIiCi0gIHJlc29sdmVkICJodHRwczov
L3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3NwZHgtY29ycmVjdC8tL3NwZHgtY29ycmVjdC0xLjAuMi50
Z3ojNGIzMDczZDkzM2ZmNTFmMzkxMmYwM2FjNTUxOTQ5OGE0MTUwZGI0MCIKLSAgZGVwZW5kZW5j
aWVzOgotICAgIHNwZHgtbGljZW5zZS1pZHMgIl4xLjAuMiIKLQotc3BkeC1leHByZXNzaW9uLXBh
cnNlQH4xLjAuMDoKLSAgdmVyc2lvbiAiMS4wLjQiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lz
dHJ5Lnlhcm5wa2cuY29tL3NwZHgtZXhwcmVzc2lvbi1wYXJzZS8tL3NwZHgtZXhwcmVzc2lvbi1w
YXJzZS0xLjAuNC50Z3ojOWJkZjJmMjBlMWY0MGVkNDQ3ZmJlMjczMjY2MTkxZmNlZDUxNjI2YyIK
LQotc3BkeC1saWNlbnNlLWlkc0BeMS4wLjI6Ci0gIHZlcnNpb24gIjEuMi4yIgotICByZXNvbHZl
ZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9zcGR4LWxpY2Vuc2UtaWRzLy0vc3BkeC1s
aWNlbnNlLWlkcy0xLjIuMi50Z3ojYzlkZjdhMzQyNDU5NGFkZTZiZDExOTAwZDU5NjY5NmRjMDZi
YWM1NyIKLQotc3ByaW50Zi1qc0B+MS4wLjI6Ci0gIHZlcnNpb24gIjEuMC4zIgotICByZXNvbHZl
ZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9zcHJpbnRmLWpzLy0vc3ByaW50Zi1qcy0x
LjAuMy50Z3ojMDRlNjkyNmY2NjI4OTUzNTRmM2RkMDE1MjAzNjMzYjg1NzI5N2UyYyIKLQotc3No
cGtAXjEuNy4wOgotICB2ZXJzaW9uICIxLjEwLjEiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lz
dHJ5Lnlhcm5wa2cuY29tL3NzaHBrLy0vc3NocGstMS4xMC4xLnRneiMzMGUxYTVkMzI5MjQ0OTc0
YTFhZjYxNTExMzM5ZDU5NWFmNjYzOGIwIgotICBkZXBlbmRlbmNpZXM6Ci0gICAgYXNuMSAifjAu
Mi4zIgotICAgIGFzc2VydC1wbHVzICJeMS4wLjAiCi0gICAgZGFzaGRhc2ggIl4xLjEyLjAiCi0g
ICAgZ2V0cGFzcyAiXjAuMS4xIgotICBvcHRpb25hbERlcGVuZGVuY2llczoKLSAgICBiY3J5cHQt
cGJrZGYgIl4xLjAuMCIKLSAgICBlY2MtanNibiAifjAuMS4xIgotICAgIGpvZGlkMjU1MTkgIl4x
LjAuMCIKLSAgICBqc2JuICJ+MC4xLjAiCi0gICAgdHdlZXRuYWNsICJ+MC4xNC4wIgotCi0ic3Rh
dHVzZXNAPj0gMS4zLjAgPCAyIiwgc3RhdHVzZXNAfjEuMy4wOgotICB2ZXJzaW9uICIxLjMuMCIK
LSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vc3RhdHVzZXMvLS9zdGF0
dXNlcy0xLjMuMC50Z3ojOGU1NTc1OGNiMjBlNzY4MmMxZjRmY2U4ZGNhYjMwYmYwMWQxZTA3YSIK
LQotc3RyZWFtLWJyb3dzZXJpZnlAXjEuMC4wOgotICB2ZXJzaW9uICIxLjAuMCIKLSAgcmVzb2x2
ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vc3RyZWFtLWJyb3dzZXJpZnkvLS9zdHJl
YW0tYnJvd3NlcmlmeS0xLjAuMC50Z3ojYmY5YjRhYmZiNDJiMjc0ZDc1MTQ3OWU0NGUwZmYyNjU2
YjZmMTE5MyIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGluaGVyaXRzICJ+Mi4wLjEiCi0gICAgcmVh
ZGFibGUtc3RyZWFtICJeMS4wLjI3LTEiCi0KLXN0cmVhbS1jYWNoZUB+MC4wLjE6Ci0gIHZlcnNp
b24gIjAuMC4yIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9zdHJl
YW0tY2FjaGUvLS9zdHJlYW0tY2FjaGUtMC4wLjIudGd6IzFhYzVhZDY4MzI0MjhjYTU1NjY3ZGJk
ZWUzOTVkYWQ0ZTZkYjExOGYiCi0KLXN0cmljdC11cmktZW5jb2RlQF4xLjAuMDoKLSAgdmVyc2lv
biAiMS4xLjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3N0cmlj
dC11cmktZW5jb2RlLy0vc3RyaWN0LXVyaS1lbmNvZGUtMS4xLjAudGd6IzI3OWIyMjVkZjFkNTgy
YjFmNTRlNjVhZGRkNDM1MmUxOGZhYTA3MTMiCi0KLXN0cmluZ19kZWNvZGVyQH4wLjEwLjI1LCBz
dHJpbmdfZGVjb2RlckB+MC4xMC54OgotICB2ZXJzaW9uICIwLjEwLjMxIgotICByZXNvbHZlZCAi
aHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9zdHJpbmdfZGVjb2Rlci8tL3N0cmluZ19kZWNv
ZGVyLTAuMTAuMzEudGd6IzYyZTIwM2JjNDE3NjZjNmMyOGM5ZmM4NDMwMWRhYjFjNTMxMGZhOTQi
Ci0KLXN0cmluZy13aWR0aEBeMS4wLjEsIHN0cmluZy13aWR0aEBeMS4wLjI6Ci0gIHZlcnNpb24g
IjEuMC4yIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9zdHJpbmct
d2lkdGgvLS9zdHJpbmctd2lkdGgtMS4wLjIudGd6IzExOGJkZjViOGNkYzUxYTJhN2U3MGQyMTFl
MDdlMmIwYjliMTA3ZDMiCi0gIGRlcGVuZGVuY2llczoKLSAgICBjb2RlLXBvaW50LWF0ICJeMS4w
LjAiCi0gICAgaXMtZnVsbHdpZHRoLWNvZGUtcG9pbnQgIl4xLjAuMCIKLSAgICBzdHJpcC1hbnNp
ICJeMy4wLjAiCi0KLXN0cmluZy5wcm90b3R5cGUuY29kZXBvaW50YXRAXjAuMi4wOgotICB2ZXJz
aW9uICIwLjIuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vc3Ry
aW5nLnByb3RvdHlwZS5jb2RlcG9pbnRhdC8tL3N0cmluZy5wcm90b3R5cGUuY29kZXBvaW50YXQt
MC4yLjAudGd6IzZiMjZlOWJkM2FmY2FhN2JlM2I0MjY5YjUyNmRlMWI4MjAwMGFjNzgiCi0KLXN0
cmluZ3N0cmVhbUB+MC4wLjQ6Ci0gIHZlcnNpb24gIjAuMC41IgotICByZXNvbHZlZCAiaHR0cHM6
Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9zdHJpbmdzdHJlYW0vLS9zdHJpbmdzdHJlYW0tMC4wLjUu
dGd6IzRlNDg0Y2Q0ZGU1YTBiYmJlZTE4ZTQ2MzA3NzEwYThhODE2MjE4NzgiCi0KLXN0cmlwLWFu
c2lAXjMuMC4wLCBzdHJpcC1hbnNpQF4zLjAuMSwgc3RyaXAtYW5zaUAzLjAuMToKLSAgdmVyc2lv
biAiMy4wLjEiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3N0cmlw
LWFuc2kvLS9zdHJpcC1hbnNpLTMuMC4xLnRneiM2YTM4NWZiODg1M2Q5NTJkNWZmMDVkMGU4YWFm
OTQyNzhkYzYzZGNmIgotICBkZXBlbmRlbmNpZXM6Ci0gICAgYW5zaS1yZWdleCAiXjIuMC4wIgot
Ci1zdHJpcC1ib21AXjIuMC4wOgotICB2ZXJzaW9uICIyLjAuMCIKLSAgcmVzb2x2ZWQgImh0dHBz
Oi8vcmVnaXN0cnkueWFybnBrZy5jb20vc3RyaXAtYm9tLy0vc3RyaXAtYm9tLTIuMC4wLnRneiM2
MjE5YTg1NjE2NTIwNDkxZjM1Nzg4YmRiZjE0NDdhOTljN2U2YjBlIgotICBkZXBlbmRlbmNpZXM6
Ci0gICAgaXMtdXRmOCAiXjAuMi4wIgotCi1zdHJpcC1ib21AXjMuMC4wOgotICB2ZXJzaW9uICIz
LjAuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vc3RyaXAtYm9t
Ly0vc3RyaXAtYm9tLTMuMC4wLnRneiMyMzM0YzE4ZTljNzU5ZjdiZGQ1NmZkZWY3ZTlhZTNkNTg4
ZTY4ZWQzIgotCi1zdHJpcC1qc29uLWNvbW1lbnRzQH4xLjAuMSwgc3RyaXAtanNvbi1jb21tZW50
c0B+MS4wLjQ6Ci0gIHZlcnNpb24gIjEuMC40IgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3Ry
eS55YXJucGtnLmNvbS9zdHJpcC1qc29uLWNvbW1lbnRzLy0vc3RyaXAtanNvbi1jb21tZW50cy0x
LjAuNC50Z3ojMWUxNWZiY2FjOTdkM2VlOTliZjJkNzNiNGM2NTZiMDgyYmJhZmI5MSIKLQotc3R5
bGUtbG9hZGVyQDAuMTMuMToKLSAgdmVyc2lvbiAiMC4xMy4xIgotICByZXNvbHZlZCAiaHR0cHM6
Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9zdHlsZS1sb2FkZXIvLS9zdHlsZS1sb2FkZXItMC4xMy4x
LnRneiM0NjgyODBlZmJjMDQ3MzAyM2NkM2E2Y2Q1NmUzM2I1YTFkN2ZjM2E5IgotICBkZXBlbmRl
bmNpZXM6Ci0gICAgbG9hZGVyLXV0aWxzICJeMC4yLjciCi0KLXN1cHBvcnRzLWNvbG9yQF4yLjAu
MDoKLSAgdmVyc2lvbiAiMi4wLjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5w
a2cuY29tL3N1cHBvcnRzLWNvbG9yLy0vc3VwcG9ydHMtY29sb3ItMi4wLjAudGd6IzUzNWQwNDVj
ZTZiNjM2M2ZhNDAxMTcwODQ2Mjk5OTVlOWRmMzI0YzciCi0KLXN1cHBvcnRzLWNvbG9yQF4zLjEu
MCwgc3VwcG9ydHMtY29sb3JAXjMuMS4xLCBzdXBwb3J0cy1jb2xvckBeMy4xLjI6Ci0gIHZlcnNp
b24gIjMuMS4yIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9zdXBw
b3J0cy1jb2xvci8tL3N1cHBvcnRzLWNvbG9yLTMuMS4yLnRneiM3MmEyNjI4OTRkOWQ0MDhiOTU2
Y2EwNWZmMzdiMmVkOGE2ZTJhMmQ1IgotICBkZXBlbmRlbmNpZXM6Ci0gICAgaGFzLWZsYWcgIl4x
LjAuMCIKLQotc3Znb0BeMC43LjA6Ci0gIHZlcnNpb24gIjAuNy4xIgotICByZXNvbHZlZCAiaHR0
cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9zdmdvLy0vc3Znby0wLjcuMS50Z3ojMjg3MzIwZmVk
OTcyY2IwOTdlNzJjMmJiMTY4NWY5NmZlMDhmODAzNCIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGNv
YSAifjEuMC4xIgotICAgIGNvbG9ycyAifjEuMS4yIgotICAgIGNzc28gIn4yLjIuMSIKLSAgICBq
cy15YW1sICJ+My42LjEiCi0gICAgbWtkaXJwICJ+MC41LjEiCi0gICAgc2F4ICJ+MS4yLjEiCi0g
ICAgd2hldC5leHRlbmQgIn4wLjkuOSIKLQotc3dhcC1jYXNlQF4xLjEuMDoKLSAgdmVyc2lvbiAi
MS4xLjIiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3N3YXAtY2Fz
ZS8tL3N3YXAtY2FzZS0xLjEuMi50Z3ojYzM5MjAzYTQ1ODczODVmYWQzYzg1MGEwYmQxYmNhZmEw
ODE5NzRlMyIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGxvd2VyLWNhc2UgIl4xLjEuMSIKLSAgICB1
cHBlci1jYXNlICJeMS4xLjEiCi0KLXN5bWJvbC1vYnNlcnZhYmxlQF4xLjAuMjoKLSAgdmVyc2lv
biAiMS4wLjMiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3N5bWJv
bC1vYnNlcnZhYmxlLy0vc3ltYm9sLW9ic2VydmFibGUtMS4wLjMudGd6IzBmZGIwMDVlODRmMzQ2
YTg5OWQ0OTJiZWJhMjMwNjhiMzJkMTUyNWEiCi0KLSJzeW1ib2wtdHJlZUA+PSAzLjEuMCA8IDQu
MC4wIjoKLSAgdmVyc2lvbiAiMy4xLjQiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlh
cm5wa2cuY29tL3N5bWJvbC10cmVlLy0vc3ltYm9sLXRyZWUtMy4xLjQudGd6IzAyYjI3OTM0OGQz
MzdkZWJjMzk2OTRjNWM5NWY4ODJkNDQ4YTMxMmEiCi0KLXRhYmxlQF4zLjcuODoKLSAgdmVyc2lv
biAiMy44LjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3RhYmxl
Ly0vdGFibGUtMy44LjAudGd6IzI1MjE2NmM3ZjMyODY2ODRhOWQ1NjFiMGYzYTg5MjljYWYzYTk5
N2IiCi0gIGRlcGVuZGVuY2llczoKLSAgICBhanYgIl40LjcuMCIKLSAgICBhanYta2V5d29yZHMg
Il4xLjAuMCIKLSAgICBjaGFsayAiXjEuMS4xIgotICAgIGxvZGFzaCAiXjQuMC4wIgotICAgIHNs
aWNlLWFuc2kgIjAuMC40IgotICAgIHN0cmluZy13aWR0aCAiXjEuMC4xIgotCi10YXBhYmxlQF4w
LjEuOCwgdGFwYWJsZUB+MC4xLjg6Ci0gIHZlcnNpb24gIjAuMS4xMCIKLSAgcmVzb2x2ZWQgImh0
dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vdGFwYWJsZS8tL3RhcGFibGUtMC4xLjEwLnRneiMy
OWMzNTcwN2MyYjcwZTUwZDA3NDgyYjVkMjAyZThlZDQ0NmRhZmQ0IgotCi10YXItcGFja0B+My4x
LjA6Ci0gIHZlcnNpb24gIjMuMS40IgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJu
cGtnLmNvbS90YXItcGFjay8tL3Rhci1wYWNrLTMuMS40LnRneiNiYzhjZjlhMjJmNTgzMjczOWYx
MmYzOTEwZGFjMWViOTdiNDk3MDhjIgotICBkZXBlbmRlbmNpZXM6Ci0gICAgZGVidWcgIn4yLjIu
MCIKLSAgICBmc3RyZWFtICJ+MS4wLjEwIgotICAgIGZzdHJlYW0taWdub3JlICJ+MS4wLjUiCi0g
ICAgb25jZSAifjEuMy4zIgotICAgIHJlYWRhYmxlLXN0cmVhbSAifjIuMS40IgotICAgIHJpbXJh
ZiAifjIuNS4xIgotICAgIHRhciAifjIuMi4xIgotICAgIHVpZC1udW1iZXIgIn4wLjAuNiIKLQot
dGFyQH4yLjIuMCwgdGFyQH4yLjIuMToKLSAgdmVyc2lvbiAiMi4yLjEiCi0gIHJlc29sdmVkICJo
dHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3Rhci8tL3Rhci0yLjIuMS50Z3ojOGU0ZDJhMjU2
YzBlMjE4NWM2YjE4YWQ2OTRhZWM5NjhiODNjYjFkMSIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGJs
b2NrLXN0cmVhbSAiKiIKLSAgICBmc3RyZWFtICJeMS4wLjIiCi0gICAgaW5oZXJpdHMgIjIiCi0K
LXRlc3QtZXhjbHVkZUBeMi4xLjE6Ci0gIHZlcnNpb24gIjIuMS4zIgotICByZXNvbHZlZCAiaHR0
cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS90ZXN0LWV4Y2x1ZGUvLS90ZXN0LWV4Y2x1ZGUtMi4x
LjMudGd6I2E4ZDg5NjhlMWRhODMyNjZmOTg2NGYyODUyYzU1ZTIyMGYwNjQzNGEiCi0gIGRlcGVu
ZGVuY2llczoKLSAgICBhcnJpZnkgIl4xLjAuMSIKLSAgICBtaWNyb21hdGNoICJeMi4zLjExIgot
ICAgIG9iamVjdC1hc3NpZ24gIl40LjEuMCIKLSAgICByZWFkLXBrZy11cCAiXjEuMC4xIgotICAg
IHJlcXVpcmUtbWFpbi1maWxlbmFtZSAiXjEuMC4xIgotCi10ZXN0Y2hlY2tAXjAuMS4wOgotICB2
ZXJzaW9uICIwLjEuNCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20v
dGVzdGNoZWNrLy0vdGVzdGNoZWNrLTAuMS40LnRneiM5MDA1NmVkZDQ4ZDExOTk3NzAyNjE2Y2U2
NzE2ZjE5N2Q4MTkwMTY0IgotCi10ZXh0LXRhYmxlQH4wLjIuMDoKLSAgdmVyc2lvbiAiMC4yLjAi
Ci0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3RleHQtdGFibGUvLS90
ZXh0LXRhYmxlLTAuMi4wLnRneiM3ZjVlZTgyM2FlODA1MjA3YzAwYWYyZGY0YTg0ZWMzZmNmYTU3
MGI0IgotCi10aHJvdWdoQF4yLjMuNjoKLSAgdmVyc2lvbiAiMi4zLjgiCi0gIHJlc29sdmVkICJo
dHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3Rocm91Z2gvLS90aHJvdWdoLTIuMy44LnRneiMw
ZGQ0YzlmZmFhYmMzNTc5NjBiMWI3MjQxMTVkN2UwZTg2YTJlMWY1IgotCi10aW1lcnMtYnJvd3Nl
cmlmeUBeMS4wLjE6Ci0gIHZlcnNpb24gIjEuNC4yIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdp
c3RyeS55YXJucGtnLmNvbS90aW1lcnMtYnJvd3NlcmlmeS8tL3RpbWVycy1icm93c2VyaWZ5LTEu
NC4yLnRneiNjOWM1OGI1NzViZTg0MDczNzVjYjVlMjQ2MmRhY2VlNzQzNTlmNDFkIgotICBkZXBl
bmRlbmNpZXM6Ci0gICAgcHJvY2VzcyAifjAuMTEuMCIKLQotdGl0bGUtY2FzZUBeMi4xLjA6Ci0g
IHZlcnNpb24gIjIuMS4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNv
bS90aXRsZS1jYXNlLy0vdGl0bGUtY2FzZS0yLjEuMC50Z3ojYzY4Y2NiNDIzMjA3OWRlZDY0Zjk0
YjkxYjQ5NDFhZGU5MTM5MTk3OSIKLSAgZGVwZW5kZW5jaWVzOgotICAgIG5vLWNhc2UgIl4yLjIu
MCIKLSAgICB1cHBlci1jYXNlICJeMS4wLjMiCi0KLXRtcGxAMS4wLng6Ci0gIHZlcnNpb24gIjEu
MC40IgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS90bXBsLy0vdG1w
bC0xLjAuNC50Z3ojMjM2NDBkZDdiNDJkMDA0MzM5MTExNDA4MjBlNWNmNDQwZTUyMWRkMSIKLQot
dG8tZmFzdC1wcm9wZXJ0aWVzQF4xLjAuMToKLSAgdmVyc2lvbiAiMS4wLjIiCi0gIHJlc29sdmVk
ICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3RvLWZhc3QtcHJvcGVydGllcy8tL3RvLWZh
c3QtcHJvcGVydGllcy0xLjAuMi50Z3ojZjNmNWMwYzNiYTcyOTlhN2VmOTk0MjdlNDQ2MzMyNTdh
ZGU0MzMyMCIKLQotdG9kb212Yy1hcHAtY3NzQF4yLjAuNjoKLSAgdmVyc2lvbiAiMi4wLjYiCi0g
IHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3RvZG9tdmMtYXBwLWNzcy8t
L3RvZG9tdmMtYXBwLWNzcy0yLjAuNi50Z3ojMGIzNjY3YzVlMTg5ZjE1NjhkOWE5YmY3OTQ3ZWJk
OTI4NDA2OTYxZCIKLQotdG9wb3NvcnRAXjEuMC4wOgotICB2ZXJzaW9uICIxLjAuMCIKLSAgcmVz
b2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vdG9wb3NvcnQvLS90b3Bvc29ydC0x
LjAuMC50Z3ojYjY2Y2YzODVhMWE4YThlNjhlNDViODI1OWU3ZjU1ODc1ZThiMDZlZiIKLQotdG91
Z2gtY29va2llQF4yLjIuMCwgdG91Z2gtY29va2llQF4yLjMuMSwgdG91Z2gtY29va2llQH4yLjMu
MDoKLSAgdmVyc2lvbiAiMi4zLjEiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5w
a2cuY29tL3RvdWdoLWNvb2tpZS8tL3RvdWdoLWNvb2tpZS0yLjMuMS50Z3ojOTljNzdkZmJiN2Q4
MDQyNDllOGEyOTlkNGNiMGZkODFmZWYwODNmZCIKLQotdHI0NkB+MC4wLjEsIHRyNDZAfjAuMC4z
OgotICB2ZXJzaW9uICIwLjAuMyIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBr
Zy5jb20vdHI0Ni8tL3RyNDYtMC4wLjMudGd6IzgxODRmZDM0N2RhYzljZGMxODU5OTJmM2E2NjIy
ZTE0YjlkOWFiNmEiCi0KLXRyeWl0QF4xLjAuMToKLSAgdmVyc2lvbiAiMS4wLjIiCi0gIHJlc29s
dmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3RyeWl0Ly0vdHJ5aXQtMS4wLjIudGd6
I2MxOTZiMDA3M2U2YjFjNTk1ZDkzYzljODMwODU1YjdhY2MzMmE0NTMiCi0KLXR0eS1icm93c2Vy
aWZ5QDAuMC4wOgotICB2ZXJzaW9uICIwLjAuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0
cnkueWFybnBrZy5jb20vdHR5LWJyb3dzZXJpZnkvLS90dHktYnJvd3NlcmlmeS0wLjAuMC50Z3oj
YTE1N2JhNDAyZGEyNGU5YmY5NTdmOWFhNjlkNTI0ZWVkNDI5MDFhNiIKLQotdHVubmVsLWFnZW50
QH4wLjQuMToKLSAgdmVyc2lvbiAiMC40LjMiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5
Lnlhcm5wa2cuY29tL3R1bm5lbC1hZ2VudC8tL3R1bm5lbC1hZ2VudC0wLjQuMy50Z3ojNjM3M2Ri
NzY5MDlmZTU3MGUwOGQ3MzU4MzM2NWVkODI4YTc0ZWVlYiIKLQotdHdlZXRuYWNsQF4wLjE0LjMs
IHR3ZWV0bmFjbEB+MC4xNC4wOgotICB2ZXJzaW9uICIwLjE0LjMiCi0gIHJlc29sdmVkICJodHRw
czovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3R3ZWV0bmFjbC8tL3R3ZWV0bmFjbC0wLjE0LjMudGd6
IzNkYTM4MmY2NzBmMjVkZWQ3OGQ3YjNkMTc5MjExOWJjYTBiNzEzMmQiCi0KLXR5cGUtY2hlY2tA
fjAuMy4yOgotICB2ZXJzaW9uICIwLjMuMiIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnku
eWFybnBrZy5jb20vdHlwZS1jaGVjay8tL3R5cGUtY2hlY2stMC4zLjIudGd6IzU4ODRjYWI1MTJj
ZjFkMzU1ZTNmYjc4NGYzMDgwNGIyYjUyMGRiNzIiCi0gIGRlcGVuZGVuY2llczoKLSAgICBwcmVs
dWRlLWxzICJ+MS4xLjIiCi0KLXR5cGUtaXNAfjEuNi4xMzoKLSAgdmVyc2lvbiAiMS42LjEzIgot
ICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS90eXBlLWlzLy0vdHlwZS1p
cy0xLjYuMTMudGd6IzZlODNiYTdiYzMwY2QzM2E3YmIwYjdmYjAwNzM3YTIwODViZjlkMDgiCi0g
IGRlcGVuZGVuY2llczoKLSAgICBtZWRpYS10eXBlciAiMC4zLjAiCi0gICAgbWltZS10eXBlcyAi
fjIuMS4xMSIKLQotdHlwZWRhcnJheUB+MC4wLjU6Ci0gIHZlcnNpb24gIjAuMC42IgotICByZXNv
bHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS90eXBlZGFycmF5Ly0vdHlwZWRhcnJh
eS0wLjAuNi50Z3ojODY3YWM3NGUzODY0MTg3YjFkM2Q0N2Q5OTZhNzhlYzVjODgzMDc3NyIKLQot
dWEtcGFyc2VyLWpzQF4wLjcuOToKLSAgdmVyc2lvbiAiMC43LjEwIgotICByZXNvbHZlZCAiaHR0
cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS91YS1wYXJzZXItanMvLS91YS1wYXJzZXItanMtMC43
LjEwLnRneiM5MTc1NTlkZGNjZTA3Y2JjMDllY2U3ZDgwNDk1ZTRjMjY4ZjRlZjlmIgotCi11Z2xp
ZnktanNAXjIuNjoKLSAgdmVyc2lvbiAiMi43LjMiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lz
dHJ5Lnlhcm5wa2cuY29tL3VnbGlmeS1qcy8tL3VnbGlmeS1qcy0yLjcuMy50Z3ojMzliM2E3MzI5
Yjg5ZjVlYzUwN2UzNDRjNmUyMjU2ODY5OGVmNDg2OCIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGFz
eW5jICJ+MC4yLjYiCi0gICAgc291cmNlLW1hcCAifjAuNS4xIgotICAgIHVnbGlmeS10by1icm93
c2VyaWZ5ICJ+MS4wLjAiCi0gICAgeWFyZ3MgIn4zLjEwLjAiCi0KLXVnbGlmeS1qc0B+Mi42LjAs
IHVnbGlmeS1qc0AyLjYueDoKLSAgdmVyc2lvbiAiMi42LjQiCi0gIHJlc29sdmVkICJodHRwczov
L3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3VnbGlmeS1qcy8tL3VnbGlmeS1qcy0yLjYuNC50Z3ojNjVl
YTJmYjMwNTljOTM5NDY5MmYxNWZlZDg3YzJiMzZjMTZiOWFkZiIKLSAgZGVwZW5kZW5jaWVzOgot
ICAgIGFzeW5jICJ+MC4yLjYiCi0gICAgc291cmNlLW1hcCAifjAuNS4xIgotICAgIHVnbGlmeS10
by1icm93c2VyaWZ5ICJ+MS4wLjAiCi0gICAgeWFyZ3MgIn4zLjEwLjAiCi0KLXVnbGlmeS10by1i
cm93c2VyaWZ5QH4xLjAuMDoKLSAgdmVyc2lvbiAiMS4wLjIiCi0gIHJlc29sdmVkICJodHRwczov
L3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3VnbGlmeS10by1icm93c2VyaWZ5Ly0vdWdsaWZ5LXRvLWJy
b3dzZXJpZnktMS4wLjIudGd6IzZlMDkyNGQ2YmRhNmI1YWZlMzQ5ZTM5YTZkNjMyODUwYTBmODgy
YjciCi0KLXVpZC1udW1iZXJAfjAuMC42OgotICB2ZXJzaW9uICIwLjAuNiIKLSAgcmVzb2x2ZWQg
Imh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vdWlkLW51bWJlci8tL3VpZC1udW1iZXItMC4w
LjYudGd6IzBlYTEwZTgwMzVlOGViNWI4ZTQ0NDlmMDZkYTFjNzMwNjYzYmFhODEiCi0KLXVuaXFA
XjEuMC4xOgotICB2ZXJzaW9uICIxLjAuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnku
eWFybnBrZy5jb20vdW5pcS8tL3VuaXEtMS4wLjEudGd6I2IzMWM1YWU4MjU0ODQ0YTNhODI4MTU0
MWNlMmIwNGI4NjVhNzM0ZmYiCi0KLXVuaXFpZEBeNC4wLjA6Ci0gIHZlcnNpb24gIjQuMS4wIgot
ICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS91bmlxaWQvLS91bmlxaWQt
NC4xLjAudGd6IzMzZDk2NzlmNjUwMjJmNDg5ODhhMDNmZDI0ZTdkY2FmOGYxMDllY2EiCi0gIGRl
cGVuZGVuY2llczoKLSAgICBtYWNhZGRyZXNzICJeMC4yLjgiCi0KLXVuaXFzQF4yLjAuMDoKLSAg
dmVyc2lvbiAiMi4wLjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29t
L3VuaXFzLy0vdW5pcXMtMi4wLjAudGd6I2ZmZWRlNGIzNmIyNTI5MDY5NmU2ZTE2NWQ0YTU5ZWRi
OTk4ZTZiMDIiCi0KLXVucGlwZUB+MS4wLjA6Ci0gIHZlcnNpb24gIjEuMC4wIgotICByZXNvbHZl
ZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS91bnBpcGUvLS91bnBpcGUtMS4wLjAudGd6
I2IyYmY0ZWU4NTE0YWFlNjE2NWI0ODE3ODI5ZDIxYjJlZjQ5OTA0ZWMiCi0KLXVwcGVyLWNhc2Ut
Zmlyc3RAXjEuMS4wLCB1cHBlci1jYXNlLWZpcnN0QF4xLjEuMjoKLSAgdmVyc2lvbiAiMS4xLjIi
Ci0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3VwcGVyLWNhc2UtZmly
c3QvLS91cHBlci1jYXNlLWZpcnN0LTEuMS4yLnRneiM1ZDc5YmVkY2ZmMTQ0MTk1MThmZDJlZGIw
YTA1MDdjOWI2ODU5MTE1IgotICBkZXBlbmRlbmNpZXM6Ci0gICAgdXBwZXItY2FzZSAiXjEuMS4x
IgotCi11cHBlci1jYXNlQF4xLjAuMywgdXBwZXItY2FzZUBeMS4xLjAsIHVwcGVyLWNhc2VAXjEu
MS4xLCB1cHBlci1jYXNlQF4xLjEuMzoKLSAgdmVyc2lvbiAiMS4xLjMiCi0gIHJlc29sdmVkICJo
dHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3VwcGVyLWNhc2UvLS91cHBlci1jYXNlLTEuMS4z
LnRneiNmNmI0NTAxYzJlYzRjZGQyNmJhNzhiZTcyMjI5NjFkZTc3NjIxNTk4IgotCi11cmwtbG9h
ZGVyQDAuNS43OgotICB2ZXJzaW9uICIwLjUuNyIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0
cnkueWFybnBrZy5jb20vdXJsLWxvYWRlci8tL3VybC1sb2FkZXItMC41LjcudGd6IzY3ZTg3Nzk3
NTlmODAwMGRhNzQ5OTQ5MDY2ODBjOTQzYTliMDkyNWQiCi0gIGRlcGVuZGVuY2llczoKLSAgICBs
b2FkZXItdXRpbHMgIjAuMi54IgotICAgIG1pbWUgIjEuMi54IgotCi11cmwtcGFyc2VAXjEuMC4x
LCB1cmwtcGFyc2VAXjEuMS4xOgotICB2ZXJzaW9uICIxLjEuNiIKLSAgcmVzb2x2ZWQgImh0dHBz
Oi8vcmVnaXN0cnkueWFybnBrZy5jb20vdXJsLXBhcnNlLy0vdXJsLXBhcnNlLTEuMS42LnRneiNh
YjhmZjVhZWExMzg4MDcxOTYxMjU1ZTIyMzYxNDdjNTJjYTVmYzQ4IgotICBkZXBlbmRlbmNpZXM6
Ci0gICAgcXVlcnlzdHJpbmdpZnkgIjAuMC54IgotICAgIHJlcXVpcmVzLXBvcnQgIjEuMC54Igot
Ci11cmwtcGFyc2VAMS4wLng6Ci0gIHZlcnNpb24gIjEuMC41IgotICByZXNvbHZlZCAiaHR0cHM6
Ly9yZWdpc3RyeS55YXJucGtnLmNvbS91cmwtcGFyc2UvLS91cmwtcGFyc2UtMS4wLjUudGd6IzA4
NTQ4NjA0MjJhZmRjZmVmZWI2Yzk2NWM2NjJkNDgwMDE2OTkyN2IiCi0gIGRlcGVuZGVuY2llczoK
LSAgICBxdWVyeXN0cmluZ2lmeSAiMC4wLngiCi0gICAgcmVxdWlyZXMtcG9ydCAiMS4wLngiCi0K
LXVybEB+MC4xMC4xOgotICB2ZXJzaW9uICIwLjEwLjMiCi0gIHJlc29sdmVkICJodHRwczovL3Jl
Z2lzdHJ5Lnlhcm5wa2cuY29tL3VybC8tL3VybC0wLjEwLjMudGd6IzAyMWU0ZDljNzcwNWYyMWJi
ZjM3ZDAzY2ViNTg3Njc0MDI3NzRjNjQiCi0gIGRlcGVuZGVuY2llczoKLSAgICBwdW55Y29kZSAi
MS4zLjIiCi0gICAgcXVlcnlzdHJpbmcgIjAuMi4wIgotCi11c2VyLWhvbWVAXjEuMS4xOgotICB2
ZXJzaW9uICIxLjEuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20v
dXNlci1ob21lLy0vdXNlci1ob21lLTEuMS4xLnRneiMyYjViZTIzYTMyYjYzYTdjOWRlYjhkMGYy
OGQ0ODU3MjRhM2RmMTkwIgotCi11c2VyLWhvbWVAXjIuMC4wOgotICB2ZXJzaW9uICIyLjAuMCIK
LSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vdXNlci1ob21lLy0vdXNl
ci1ob21lLTIuMC4wLnRneiM5YzcwYmZkODE2OWJjMWRjYmY0ODYwNGUwZjA0YjhiNDljZGU5ZTlm
IgotICBkZXBlbmRlbmNpZXM6Ci0gICAgb3MtaG9tZWRpciAiXjEuMC4wIgotCi11dGlsLWRlcHJl
Y2F0ZUB+MS4wLjE6Ci0gIHZlcnNpb24gIjEuMC4yIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdp
c3RyeS55YXJucGtnLmNvbS91dGlsLWRlcHJlY2F0ZS8tL3V0aWwtZGVwcmVjYXRlLTEuMC4yLnRn
eiM0NTBkNGRjOWZhNzBkZTczMjc2MmZiZDJkNGEyODk4MTQxOWEwY2NmIgotCi11dGlsQH4wLjEw
LjMsIHV0aWxAMC4xMC4zOgotICB2ZXJzaW9uICIwLjEwLjMiCi0gIHJlc29sdmVkICJodHRwczov
L3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3V0aWwvLS91dGlsLTAuMTAuMy50Z3ojN2FmYjFhZmU1MDgw
NTI0NjQ4OWUzZGI3ZmUwZWQzNzkzMzZhYzBmOSIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGluaGVy
aXRzICIyLjAuMSIKLQotdXRpbGFAfjAuMzoKLSAgdmVyc2lvbiAiMC4zLjMiCi0gIHJlc29sdmVk
ICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3V0aWxhLy0vdXRpbGEtMC4zLjMudGd6I2Q3
ZThlN2Q3ZTMwOTEwNzA5MmIwNWY4ZDk2ODg4MjRkNjMzYTQyMjYiCi0KLXV0aWxhQH4wLjQ6Ci0g
IHZlcnNpb24gIjAuNC4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNv
bS91dGlsYS8tL3V0aWxhLTAuNC4wLnRneiM4YTE2YTA1ZDQ0NTY1N2EzYWVhNWVlY2M1YjEyYTRm
YTUzNzk3NzJjIgotCi11dGlscy1tZXJnZUAxLjAuMDoKLSAgdmVyc2lvbiAiMS4wLjAiCi0gIHJl
c29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3V0aWxzLW1lcmdlLy0vdXRpbHMt
bWVyZ2UtMS4wLjAudGd6IzAyOTRmYjkyMmJiOTM3NTE1MzU0MWM0ZjcwOTYyMzFmMjg3YzhhZjgi
Ci0KLXV1aWRAXjIuMC4yOgotICB2ZXJzaW9uICIyLjAuMyIKLSAgcmVzb2x2ZWQgImh0dHBzOi8v
cmVnaXN0cnkueWFybnBrZy5jb20vdXVpZC8tL3V1aWQtMi4wLjMudGd6IzY3ZTJlODYzNzk3MjE1
NTMwZGZmMzE4ZTViZjlkY2ViZmQ0N2IyMWEiCi0KLXZhbGlkYXRlLW5wbS1wYWNrYWdlLWxpY2Vu
c2VAXjMuMC4xOgotICB2ZXJzaW9uICIzLjAuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0
cnkueWFybnBrZy5jb20vdmFsaWRhdGUtbnBtLXBhY2thZ2UtbGljZW5zZS8tL3ZhbGlkYXRlLW5w
bS1wYWNrYWdlLWxpY2Vuc2UtMy4wLjEudGd6IzI4MDRiYWJlNzEyYWQzMzc5NDU5YWNmYmUyNDc0
NmFiMmMzMDNmYmMiCi0gIGRlcGVuZGVuY2llczoKLSAgICBzcGR4LWNvcnJlY3QgIn4xLjAuMCIK
LSAgICBzcGR4LWV4cHJlc3Npb24tcGFyc2UgIn4xLjAuMCIKLQotdmFyeUB+MS4xLjA6Ci0gIHZl
cnNpb24gIjEuMS4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS92
YXJ5Ly0vdmFyeS0xLjEuMC50Z3ojZTFlNWFmZmJiZDE2YWU3NjhkZDI2NzQzOTRiOWFkMzAyMjY1
MzE0MCIKLQotdmVuZG9yc0BeMS4wLjA6Ci0gIHZlcnNpb24gIjEuMC4xIgotICByZXNvbHZlZCAi
aHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS92ZW5kb3JzLy0vdmVuZG9ycy0xLjAuMS50Z3oj
MzdhZDczYzhlZTQxN2ZiM2Q1ODBlNzg1MzEyMzA3ZDI3NDg0N2YyMiIKLQotdmVycm9yQDEuMy42
OgotICB2ZXJzaW9uICIxLjMuNiIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBr
Zy5jb20vdmVycm9yLy0vdmVycm9yLTEuMy42LnRneiNjZmY1ZGYxMjk0NmQyOTdkMmJhYWVmYWEy
Njg5ZTI1YmUwMWMwMDVjIgotICBkZXBlbmRlbmNpZXM6Ci0gICAgZXh0c3ByaW50ZiAiMS4wLjIi
Ci0KLXZtLWJyb3dzZXJpZnlAMC4wLjQ6Ci0gIHZlcnNpb24gIjAuMC40IgotICByZXNvbHZlZCAi
aHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS92bS1icm93c2VyaWZ5Ly0vdm0tYnJvd3Nlcmlm
eS0wLjAuNC50Z3ojNWQ3ZWE0NWJiZWY5ZTRhNmZmNjVmOTU0MzhlMGE4N2MzNTdkNWE3MyIKLSAg
ZGVwZW5kZW5jaWVzOgotICAgIGluZGV4b2YgIjAuMC4xIgotCi13YWxrZXJAfjEuMC41OgotICB2
ZXJzaW9uICIxLjAuNyIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20v
d2Fsa2VyLy0vd2Fsa2VyLTEuMC43LnRneiMyZjdmOWI4ZmQxMGQ2NzcyNjJiMThhODg0ZTI4ZDE5
NjE4ZTAyOGZiIgotICBkZXBlbmRlbmNpZXM6Ci0gICAgbWFrZWVycm9yICIxLjAueCIKLQotd2F0
Y2hAfjAuMTAuMDoKLSAgdmVyc2lvbiAiMC4xMC4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdp
c3RyeS55YXJucGtnLmNvbS93YXRjaC8tL3dhdGNoLTAuMTAuMC50Z3ojNzc3OThiMmRhMGY5OTEw
ZDU5NWYxYWNlNWIwYzIyNTg1MjFmMjFkYyIKLQotd2F0Y2hwYWNrQF4wLjIuMToKLSAgdmVyc2lv
biAiMC4yLjkiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3dhdGNo
cGFjay8tL3dhdGNocGFjay0wLjIuOS50Z3ojNjJlYWE0YWI1ZTViYTM1ZmRmYzAxODI3NTYyNmUz
YzBmNWUzZmIwYiIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGFzeW5jICJeMC45LjAiCi0gICAgY2hv
a2lkYXIgIl4xLjAuMCIKLSAgICBncmFjZWZ1bC1mcyAiXjQuMS4yIgotCi13ZWJpZGwtY29udmVy
c2lvbnNAXjIuMC4wOgotICB2ZXJzaW9uICIyLjAuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVn
aXN0cnkueWFybnBrZy5jb20vd2ViaWRsLWNvbnZlcnNpb25zLy0vd2ViaWRsLWNvbnZlcnNpb25z
LTIuMC4xLnRneiMzYmY4MjU4ZjdkMzE4Yzc0NDNjMzZmMmUxNjk0MDJhMWE2NzAzNTA2IgotCi13
ZWJpZGwtY29udmVyc2lvbnNAXjMuMC4wLCB3ZWJpZGwtY29udmVyc2lvbnNAXjMuMC4xOgotICB2
ZXJzaW9uICIzLjAuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20v
d2ViaWRsLWNvbnZlcnNpb25zLy0vd2ViaWRsLWNvbnZlcnNpb25zLTMuMC4xLnRneiMyNDUzNDI3
NWUyYTdiYzZiZTdiYzg2NjExY2MxNmFlMGE1NjU0ODcxIgotCi13ZWJwYWNrLWNvcmVAfjAuNi4w
OgotICB2ZXJzaW9uICIwLjYuOCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBr
Zy5jb20vd2VicGFjay1jb3JlLy0vd2VicGFjay1jb3JlLTAuNi44LnRneiNlZGY5MTM1ZGUwMGE2
YTNjMjZkZDBmMTRiMjA4YWYwYWE0YWY4ZDBhIgotICBkZXBlbmRlbmNpZXM6Ci0gICAgc291cmNl
LWxpc3QtbWFwICJ+MC4xLjAiCi0gICAgc291cmNlLW1hcCAifjAuNC4xIgotCi13ZWJwYWNrLWRl
di1taWRkbGV3YXJlQF4xLjQuMDoKLSAgdmVyc2lvbiAiMS44LjQiCi0gIHJlc29sdmVkICJodHRw
czovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3dlYnBhY2stZGV2LW1pZGRsZXdhcmUvLS93ZWJwYWNr
LWRldi1taWRkbGV3YXJlLTEuOC40LnRneiNlODc2NWM5MTIyODg3Y2U5ZTNhYmQ0Y2M5YzNlYjMx
YjYxZTA5NDhkIgotICBkZXBlbmRlbmNpZXM6Ci0gICAgbWVtb3J5LWZzICJ+MC4zLjAiCi0gICAg
bWltZSAiXjEuMy40IgotICAgIHBhdGgtaXMtYWJzb2x1dGUgIl4xLjAuMCIKLSAgICByYW5nZS1w
YXJzZXIgIl4xLjAuMyIKLQotd2VicGFjay1kZXYtc2VydmVyQDEuMTYuMToKLSAgdmVyc2lvbiAi
MS4xNi4xIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS93ZWJwYWNr
LWRldi1zZXJ2ZXIvLS93ZWJwYWNrLWRldi1zZXJ2ZXItMS4xNi4xLnRneiNhZjU4ZTkzYjFkYzA0
MDUyMGQyOGRjZTQyNzU1YjNhNGM3Y2M4MjJiIgotICBkZXBlbmRlbmNpZXM6Ci0gICAgY29tcHJl
c3Npb24gIl4xLjUuMiIKLSAgICBjb25uZWN0LWhpc3RvcnktYXBpLWZhbGxiYWNrICJeMS4zLjAi
Ci0gICAgZXhwcmVzcyAiXjQuMTMuMyIKLSAgICBodHRwLXByb3h5LW1pZGRsZXdhcmUgIn4wLjE3
LjEiCi0gICAgb3BlbiAiMC4wLjUiCi0gICAgb3B0aW1pc3QgIn4wLjYuMSIKLSAgICBzZXJ2ZS1p
bmRleCAiXjEuNy4yIgotICAgIHNvY2tqcyAiXjAuMy4xNSIKLSAgICBzb2NranMtY2xpZW50ICJe
MS4wLjMiCi0gICAgc3RyZWFtLWNhY2hlICJ+MC4wLjEiCi0gICAgc3RyaXAtYW5zaSAiXjMuMC4w
IgotICAgIHN1cHBvcnRzLWNvbG9yICJeMy4xLjEiCi0gICAgd2VicGFjay1kZXYtbWlkZGxld2Fy
ZSAiXjEuNC4wIgotCi13ZWJwYWNrLXNvdXJjZXNAXjAuMS4wOgotICB2ZXJzaW9uICIwLjEuMiIK
LSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vd2VicGFjay1zb3VyY2Vz
Ly0vd2VicGFjay1zb3VyY2VzLTAuMS4yLnRneiMwNTdhM2YzMjU1ZjhiYTU2MWI5MDFkOTE1MDU4
OWFhMTAzYTU3ZTY1IgotICBkZXBlbmRlbmNpZXM6Ci0gICAgc291cmNlLWxpc3QtbWFwICJ+MC4x
LjAiCi0gICAgc291cmNlLW1hcCAifjAuNS4zIgotCi13ZWJwYWNrQDEuMTMuMjoKLSAgdmVyc2lv
biAiMS4xMy4yIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS93ZWJw
YWNrLy0vd2VicGFjay0xLjEzLjIudGd6I2YxMWE5NmY0NThlYjc1Mjk3MGE4NmFiZTc0NmMwNzA0
ZmFiYWZhZjMiCi0gIGRlcGVuZGVuY2llczoKLSAgICBhY29ybiAiXjMuMC4wIgotICAgIGFzeW5j
ICJeMS4zLjAiCi0gICAgY2xvbmUgIl4xLjAuMiIKLSAgICBlbmhhbmNlZC1yZXNvbHZlICJ+MC45
LjAiCi0gICAgaW50ZXJwcmV0ICJeMC42LjQiCi0gICAgbG9hZGVyLXV0aWxzICJeMC4yLjExIgot
ICAgIG1lbW9yeS1mcyAifjAuMy4wIgotICAgIG1rZGlycCAifjAuNS4wIgotICAgIG5vZGUtbGli
cy1icm93c2VyICJeMC42LjAiCi0gICAgb3B0aW1pc3QgIn4wLjYuMCIKLSAgICBzdXBwb3J0cy1j
b2xvciAiXjMuMS4wIgotICAgIHRhcGFibGUgIn4wLjEuOCIKLSAgICB1Z2xpZnktanMgIn4yLjYu
MCIKLSAgICB3YXRjaHBhY2sgIl4wLjIuMSIKLSAgICB3ZWJwYWNrLWNvcmUgIn4wLjYuMCIKLQot
d2Vic29ja2V0LWRyaXZlckA+PTAuMy42LCB3ZWJzb2NrZXQtZHJpdmVyQD49MC41LjE6Ci0gIHZl
cnNpb24gIjAuNi41IgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS93
ZWJzb2NrZXQtZHJpdmVyLy0vd2Vic29ja2V0LWRyaXZlci0wLjYuNS50Z3ojNWNiMjU1NmNlYjg1
ZjQzNzNjNmQ4MjM4YWE2OTFjODQ1NGUxM2EzNiIKLSAgZGVwZW5kZW5jaWVzOgotICAgIHdlYnNv
Y2tldC1leHRlbnNpb25zICI+PTAuMS4xIgotCi13ZWJzb2NrZXQtZXh0ZW5zaW9uc0A+PTAuMS4x
OgotICB2ZXJzaW9uICIwLjEuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBr
Zy5jb20vd2Vic29ja2V0LWV4dGVuc2lvbnMvLS93ZWJzb2NrZXQtZXh0ZW5zaW9ucy0wLjEuMS50
Z3ojNzY4OTk0OTljMTg0YjZlZjc1NDM3N2MyZGJiMGNkNmNiNTVkMjllNyIKLQotd2hhdHdnLWZl
dGNoQD49MC4xMC4wLCB3aGF0d2ctZmV0Y2hAMS4wLjA6Ci0gIHZlcnNpb24gIjEuMC4wIgotICBy
ZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS93aGF0d2ctZmV0Y2gvLS93aGF0
d2ctZmV0Y2gtMS4wLjAudGd6IzAxYzJhYzRkZjQwZTIzNmFhYTE4NDgwZTNiZTc0YmQ1YzhlYjc5
OGUiCi0KLXdoYXR3Zy11cmwtY29tcGF0QH4wLjYuNToKLSAgdmVyc2lvbiAiMC42LjUiCi0gIHJl
c29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3doYXR3Zy11cmwtY29tcGF0Ly0v
d2hhdHdnLXVybC1jb21wYXQtMC42LjUudGd6IzAwODk4MTExYWY2ODliYjA5NzU0MWNkNWE0NWNh
NmM4Nzk4NDQ1YmYiCi0gIGRlcGVuZGVuY2llczoKLSAgICB0cjQ2ICJ+MC4wLjEiCi0KLXdoYXR3
Zy11cmxAXjMuMC4wOgotICB2ZXJzaW9uICIzLjAuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVn
aXN0cnkueWFybnBrZy5jb20vd2hhdHdnLXVybC8tL3doYXR3Zy11cmwtMy4wLjAudGd6I2I5MDMz
YzUwYzdjZTc2M2U5MWQ3ODc3N2NlODI1YTZkN2Y1NmRhYzUiCi0gIGRlcGVuZGVuY2llczoKLSAg
ICB0cjQ2ICJ+MC4wLjMiCi0gICAgd2ViaWRsLWNvbnZlcnNpb25zICJeMy4wLjAiCi0KLXdoZXQu
ZXh0ZW5kQH4wLjkuOToKLSAgdmVyc2lvbiAiMC45LjkiCi0gIHJlc29sdmVkICJodHRwczovL3Jl
Z2lzdHJ5Lnlhcm5wa2cuY29tL3doZXQuZXh0ZW5kLy0vd2hldC5leHRlbmQtMC45LjkudGd6I2Y4
NzdkNWJmNjQ4Yzk3ZTVhYTU0MmZhZGMxNmQ2YTI1OWI5YzExYTEiCi0KLXdoaWNoLW1vZHVsZUBe
MS4wLjA6Ci0gIHZlcnNpb24gIjEuMC4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55
YXJucGtnLmNvbS93aGljaC1tb2R1bGUvLS93aGljaC1tb2R1bGUtMS4wLjAudGd6I2JiYTYzY2E4
NjE5NDg5OTRmZjMwNzczNjA4OWUzYjk2MDI2YzJhNGYiCi0KLXdoaWNoQF4xLjAuNSwgd2hpY2hA
XjEuMS4xLCB3aGljaEBeMS4yLjk6Ci0gIHZlcnNpb24gIjEuMi4xMSIKLSAgcmVzb2x2ZWQgImh0
dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vd2hpY2gvLS93aGljaC0xLjIuMTEudGd6I2M4YjJl
ZWVhNmI4YzE2NTlmYTdjMWRkNGZkYWFiZTk1MzNkYzVlOGIiCi0gIGRlcGVuZGVuY2llczoKLSAg
ICBpc2V4ZSAiXjEuMS4xIgotCi13aWRlLWFsaWduQF4xLjEuMDoKLSAgdmVyc2lvbiAiMS4xLjAi
Ci0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3dpZGUtYWxpZ24vLS93
aWRlLWFsaWduLTEuMS4wLnRneiM0MGVkZGU4MDJhNzFmZWExZjA3MGRhM2U2MmRjZGEyZTdhZGQ5
NmFkIgotICBkZXBlbmRlbmNpZXM6Ci0gICAgc3RyaW5nLXdpZHRoICJeMS4wLjEiCi0KLXdpbmRv
dy1zaXplQF4wLjIuMDoKLSAgdmVyc2lvbiAiMC4yLjAiCi0gIHJlc29sdmVkICJodHRwczovL3Jl
Z2lzdHJ5Lnlhcm5wa2cuY29tL3dpbmRvdy1zaXplLy0vd2luZG93LXNpemUtMC4yLjAudGd6I2I0
MzE1YmI0MjE0YTNkNzA1OGViZWVlODkyZTEzZmEyNGQ5OGIwNzUiCi0KLXdpbmRvdy1zaXplQDAu
MS4wOgotICB2ZXJzaW9uICIwLjEuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFy
bnBrZy5jb20vd2luZG93LXNpemUvLS93aW5kb3ctc2l6ZS0wLjEuMC50Z3ojNTQzOGNkMmVhOTNi
MjAyZWZhM2ExOWZlODg4N2FlZTdjOTRmOWM5ZCIKLQotd29yZHdyYXBAXjEuMC4wLCB3b3Jkd3Jh
cEB+MS4wLjA6Ci0gIHZlcnNpb24gIjEuMC4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3Ry
eS55YXJucGtnLmNvbS93b3Jkd3JhcC8tL3dvcmR3cmFwLTEuMC4wLnRneiMyNzU4NDgxMDg5MTQ1
NmE0MTcxYzhkMDIyNjQ0MWFkZTkwY2JjYWViIgotCi13b3Jkd3JhcEB+MC4wLjI6Ci0gIHZlcnNp
b24gIjAuMC4zIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS93b3Jk
d3JhcC8tL3dvcmR3cmFwLTAuMC4zLnRneiNhM2Q1ZGE2Y2Q1YzBiYzAwMDhkMzcyMzRiYmFmMWJl
ZDYzMDU5MTA3IgotCi13b3Jkd3JhcEAwLjAuMjoKLSAgdmVyc2lvbiAiMC4wLjIiCi0gIHJlc29s
dmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3dvcmR3cmFwLy0vd29yZHdyYXAtMC4w
LjIudGd6I2I3OTY2OWJiNDJlY2I0MDlmODNkNTgzY2FkNTJjYTE3ZWFhMTY0M2YiCi0KLXdvcmtl
ci1mYXJtQF4xLjMuMToKLSAgdmVyc2lvbiAiMS4zLjEiCi0gIHJlc29sdmVkICJodHRwczovL3Jl
Z2lzdHJ5Lnlhcm5wa2cuY29tL3dvcmtlci1mYXJtLy0vd29ya2VyLWZhcm0tMS4zLjEudGd6IzQz
MzMxMTJiYjQ5YjE3YWEwNTBiODc4OTVjYTZiMmNhY2Y0MGU1ZmYiCi0gIGRlcGVuZGVuY2llczoK
LSAgICBlcnJubyAiPj0wLjEuMSA8MC4yLjAtMCIKLSAgICB4dGVuZCAiPj00LjAuMCA8NC4xLjAt
MCIKLQotd3JhcC1hbnNpQF4yLjAuMDoKLSAgdmVyc2lvbiAiMi4wLjAiCi0gIHJlc29sdmVkICJo
dHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3dyYXAtYW5zaS8tL3dyYXAtYW5zaS0yLjAuMC50
Z3ojN2QzMGY4Zjg3M2Y5YTViYmMzYTY0ZGFiYzhkMTc3ZTA3MWFlNDI2ZiIKLSAgZGVwZW5kZW5j
aWVzOgotICAgIHN0cmluZy13aWR0aCAiXjEuMC4xIgotCi13cmFwcHlAMToKLSAgdmVyc2lvbiAi
MS4wLjIiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3dyYXBweS8t
L3dyYXBweS0xLjAuMi50Z3ojYjUyNDNkOGYzZWMxYWEzNWYxMzY0NjA1YmMwZDEwMzZlMzBhYjY5
ZiIKLQotd3JpdGVAXjAuMi4xOgotICB2ZXJzaW9uICIwLjIuMSIKLSAgcmVzb2x2ZWQgImh0dHBz
Oi8vcmVnaXN0cnkueWFybnBrZy5jb20vd3JpdGUvLS93cml0ZS0wLjIuMS50Z3ojNWZjMDM4Mjhl
MjY0Y2VhM2ZlOTE0NTU0NzZmN2EzYzU2NmNiMDc1NyIKLSAgZGVwZW5kZW5jaWVzOgotICAgIG1r
ZGlycCAiXjAuNS4xIgotCi14bWwtY2hhci1jbGFzc2VzQF4xLjAuMDoKLSAgdmVyc2lvbiAiMS4w
LjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3htbC1jaGFyLWNs
YXNzZXMvLS94bWwtY2hhci1jbGFzc2VzLTEuMC4wLnRneiM2NDY1Nzg0OGEyMGZmYzVkZjU4M2E0
MmFkOGEyNzdiNDUxMmJiYzRkIgotCi0ieG1sLW5hbWUtdmFsaWRhdG9yQD49IDIuMC4xIDwgMy4w
LjAiOgotICB2ZXJzaW9uICIyLjAuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFy
bnBrZy5jb20veG1sLW5hbWUtdmFsaWRhdG9yLy0veG1sLW5hbWUtdmFsaWRhdG9yLTIuMC4xLnRn
eiM0ZDhiOGYxZWNjZDM0MTlhYTM2MjA2MWJlY2VmNTE1ZTFlNTU5NjM1IgotCi14dGVuZEBeNC4w
LjAsICJ4dGVuZEA+PTQuMC4wIDw0LjEuMC0wIjoKLSAgdmVyc2lvbiAiNC4wLjEiCi0gIHJlc29s
dmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3h0ZW5kLy0veHRlbmQtNC4wLjEudGd6
I2E1YzZkNTMyYmU2NTZlMjNkYjgyMGVmYjk0M2ExZjA0OTk4ZDYzYWYiCi0KLXkxOG5AXjMuMi4x
OgotICB2ZXJzaW9uICIzLjIuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBr
Zy5jb20veTE4bi8tL3kxOG4tMy4yLjEudGd6IzZkMTVmYmE4ODRjMDg2NzljMGQ3N2U4OGU3NzU5
ZTgxMWUwN2ZhNDEiCi0KLXlhbGxpc3RAXjIuMC4wOgotICB2ZXJzaW9uICIyLjAuMCIKLSAgcmVz
b2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20veWFsbGlzdC8tL3lhbGxpc3QtMi4w
LjAudGd6IzMwNmM1NDM4MzVmMDllZTFhNGNiMjNiN2JjZTlhYjM0MWM5MWNkZDQiCi0KLXlhcmdz
LXBhcnNlckBeMy4yLjA6Ci0gIHZlcnNpb24gIjMuMi4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9y
ZWdpc3RyeS55YXJucGtnLmNvbS95YXJncy1wYXJzZXIvLS95YXJncy1wYXJzZXItMy4yLjAudGd6
IzUwODEzNTVkMTlkOWQwYzhjNWQ4MWFkYTkwOGNiNGU2ZDE4NjY2NGYiCi0gIGRlcGVuZGVuY2ll
czoKLSAgICBjYW1lbGNhc2UgIl4zLjAuMCIKLSAgICBsb2Rhc2guYXNzaWduICJeNC4xLjAiCi0K
LXlhcmdzQF41LjAuMDoKLSAgdmVyc2lvbiAiNS4wLjAiCi0gIHJlc29sdmVkICJodHRwczovL3Jl
Z2lzdHJ5Lnlhcm5wa2cuY29tL3lhcmdzLy0veWFyZ3MtNS4wLjAudGd6IzMzNTUxNDQ5NzdkMDU3
NTdkYmI4NmQ2ZTM4ZWMwNTYxMjNiM2E2NmUiCi0gIGRlcGVuZGVuY2llczoKLSAgICBjbGl1aSAi
XjMuMi4wIgotICAgIGRlY2FtZWxpemUgIl4xLjEuMSIKLSAgICBnZXQtY2FsbGVyLWZpbGUgIl4x
LjAuMSIKLSAgICBsb2Rhc2guYXNzaWduICJeNC4yLjAiCi0gICAgb3MtbG9jYWxlICJeMS40LjAi
Ci0gICAgcmVhZC1wa2ctdXAgIl4xLjAuMSIKLSAgICByZXF1aXJlLWRpcmVjdG9yeSAiXjIuMS4x
IgotICAgIHJlcXVpcmUtbWFpbi1maWxlbmFtZSAiXjEuMC4xIgotICAgIHNldC1ibG9ja2luZyAi
XjIuMC4wIgotICAgIHN0cmluZy13aWR0aCAiXjEuMC4yIgotICAgIHdoaWNoLW1vZHVsZSAiXjEu
MC4wIgotICAgIHdpbmRvdy1zaXplICJeMC4yLjAiCi0gICAgeTE4biAiXjMuMi4xIgotICAgIHlh
cmdzLXBhcnNlciAiXjMuMi4wIgotCi15YXJnc0B+My4xMC4wOgotICB2ZXJzaW9uICIzLjEwLjAi
Ci0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3lhcmdzLy0veWFyZ3Mt
My4xMC4wLnRneiNmN2VlN2JkODU3ZGQ3YzFkMmQzOGMwZTc0ZWZiZDY4MWQxNDMxZmQxIgotICBk
ZXBlbmRlbmNpZXM6Ci0gICAgY2FtZWxjYXNlICJeMS4wLjIiCi0gICAgY2xpdWkgIl4yLjEuMCIK
LSAgICBkZWNhbWVsaXplICJeMS4wLjAiCi0gICAgd2luZG93LXNpemUgIjAuMS4wIgpJbmRleDog
UGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1
cmUtZXhhbXBsZXMvcmVhY3QtcmVkdXgvZGlzdC9pbmRleC5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBl
cmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJl
LWV4YW1wbGVzL3JlYWN0LXJlZHV4L2Rpc3QvaW5kZXguaHRtbAkocmV2aXNpb24gMjIxMDY4KQor
KysgUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRl
Y3R1cmUtZXhhbXBsZXMvcmVhY3QtcmVkdXgvZGlzdC9pbmRleC5odG1sCSh3b3JraW5nIGNvcHkp
CkBAIC0xICsxIEBACi08IURPQ1RZUEUgaHRtbD48aHRtbCBsYW5nPSJlbiI+PGhlYWQ+PG1ldGEg
Y2hhcnNldD0idXRmLTgiPjxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZp
Y2Utd2lkdGgsaW5pdGlhbC1zY2FsZT0xIj48dGl0bGU+UmVhY3QgUmVkdXggVG9kb01WQyBleGFt
cGxlPC90aXRsZT48bGluayBocmVmPSIuL3N0YXRpYy9jc3MvbWFpbi5mMDRhNzMxOS5jc3MiIHJl
bD0ic3R5bGVzaGVldCI+PC9oZWFkPjxib2R5PjxkaXYgY2xhc3M9InRvZG9hcHAiIGlkPSJyb290
Ij48L2Rpdj48c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIuL3N0YXRpYy9qcy9t
YWluLjQzYTA5NDhjLmpzIj48L3NjcmlwdD48L2JvZHk+PC9odG1sPgpcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIGZpbGUKKzwhRE9DVFlQRSBodG1sPjxodG1sIGxhbmc9ImVuIj48aGVhZD48bWV0YSBj
aGFyc2V0PSJ1dGYtOCI+PG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmlj
ZS13aWR0aCxpbml0aWFsLXNjYWxlPTEiPjx0aXRsZT5SZWFjdCBSZWR1eCBUb2RvTVZDIGV4YW1w
bGU8L3RpdGxlPjxsaW5rIGhyZWY9Ii4vc3RhdGljL2Nzcy9tYWluLmYwNGE3MzE5LmNzcyIgcmVs
PSJzdHlsZXNoZWV0Ij48L2hlYWQ+PGJvZHk+PGRpdiBjbGFzcz0idG9kb2FwcCIgaWQ9InJvb3Qi
PjwvZGl2PjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ii4vc3RhdGljL2pzL21h
aW4uNjljZDk2NTUuanMiPjwvc2NyaXB0PjwvYm9keT48L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgZmlsZQpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMv
dG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3QtcmVkdXgvZGlzdC9zdGF0aWMvanMv
bWFpbi40M2EwOTQ4Yy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21l
dGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC1yZWR1eC9k
aXN0L3N0YXRpYy9qcy9tYWluLjQzYTA5NDhjLmpzCShyZXZpc2lvbiAyMjEwNjgpCisrKyBQZXJm
b3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1l
eGFtcGxlcy9yZWFjdC1yZWR1eC9kaXN0L3N0YXRpYy9qcy9tYWluLjQzYTA5NDhjLmpzCShub25l
eGlzdGVudCkKQEAgLTEsOCArMCwwIEBACi0hZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChyKXtpZihu
W3JdKXJldHVybiBuW3JdLmV4cG9ydHM7dmFyIG89bltyXT17ZXhwb3J0czp7fSxpZDpyLGxvYWRl
ZDohMX07cmV0dXJuIGVbcl0uY2FsbChvLmV4cG9ydHMsbyxvLmV4cG9ydHMsdCksby5sb2FkZWQ9
ITAsby5leHBvcnRzfXZhciBuPXt9O3JldHVybiB0Lm09ZSx0LmM9bix0LnA9Ii4vIix0KDApfShm
dW5jdGlvbihlKXtmb3IodmFyIHQgaW4gZSlpZihPYmplY3QucHJvdG90eXBlLmhhc093blByb3Bl
cnR5LmNhbGwoZSx0KSlzd2l0Y2godHlwZW9mIGVbdF0pe2Nhc2UiZnVuY3Rpb24iOmJyZWFrO2Nh
c2Uib2JqZWN0IjplW3RdPWZ1bmN0aW9uKHQpe3ZhciBuPXQuc2xpY2UoMSkscj1lW3RbMF1dO3Jl
dHVybiBmdW5jdGlvbihlLHQsbyl7ci5hcHBseSh0aGlzLFtlLHQsb10uY29uY2F0KG4pKX19KGVb
dF0pO2JyZWFrO2RlZmF1bHQ6ZVt0XT1lW2VbdF1dfXJldHVybiBlfShbZnVuY3Rpb24oZSx0LG4p
e24oMTk2KSxlLmV4cG9ydHM9bigyMDQpfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1
bmN0aW9uIHIoZSx0LG4scixpLGEsdSxzKXtpZihvKHQpLCFlKXt2YXIgYztpZih2b2lkIDA9PT10
KWM9bmV3IEVycm9yKCJNaW5pZmllZCBleGNlcHRpb24gb2NjdXJyZWQ7IHVzZSB0aGUgbm9uLW1p
bmlmaWVkIGRldiBlbnZpcm9ubWVudCBmb3IgdGhlIGZ1bGwgZXJyb3IgbWVzc2FnZSBhbmQgYWRk
aXRpb25hbCBoZWxwZnVsIHdhcm5pbmdzLiIpO2Vsc2V7dmFyIGw9W24scixpLGEsdSxzXSxwPTA7
Yz1uZXcgRXJyb3IodC5yZXBsYWNlKC8lcy9nLGZ1bmN0aW9uKCl7cmV0dXJuIGxbcCsrXX0pKSxj
Lm5hbWU9IkludmFyaWFudCBWaW9sYXRpb24ifXRocm93IGMuZnJhbWVzVG9Qb3A9MSxjfX12YXIg
bz1mdW5jdGlvbihlKXt9O2UuZXhwb3J0cz1yfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3Qi
O3ZhciByPW4oNyksbz1yO2UuZXhwb3J0cz1vfSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0Ijtm
dW5jdGlvbiBuKGUpe2Zvcih2YXIgdD1hcmd1bWVudHMubGVuZ3RoLTEsbj0iTWluaWZpZWQgUmVh
Y3QgZXJyb3IgIyIrZSsiOyB2aXNpdCBodHRwOi8vZmFjZWJvb2suZ2l0aHViLmlvL3JlYWN0L2Rv
Y3MvZXJyb3ItZGVjb2Rlci5odG1sP2ludmFyaWFudD0iK2Uscj0wO3I8dDtyKyspbis9IiZhcmdz
W109IitlbmNvZGVVUklDb21wb25lbnQoYXJndW1lbnRzW3IrMV0pO24rPSIgZm9yIHRoZSBmdWxs
IG1lc3NhZ2Ugb3IgdXNlIHRoZSBub24tbWluaWZpZWQgZGV2IGVudmlyb25tZW50IGZvciBmdWxs
IGVycm9ycyBhbmQgYWRkaXRpb25hbCBoZWxwZnVsIHdhcm5pbmdzLiI7dmFyIG89bmV3IEVycm9y
KG4pO3Rocm93IG8ubmFtZT0iSW52YXJpYW50IFZpb2xhdGlvbiIsby5mcmFtZXNUb1BvcD0xLG99
ZS5leHBvcnRzPW59LGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4oZSl7aWYo
bnVsbD09PWV8fHZvaWQgMD09PWUpdGhyb3cgbmV3IFR5cGVFcnJvcigiT2JqZWN0LmFzc2lnbiBj
YW5ub3QgYmUgY2FsbGVkIHdpdGggbnVsbCBvciB1bmRlZmluZWQiKTtyZXR1cm4gT2JqZWN0KGUp
fWZ1bmN0aW9uIHIoKXt0cnl7aWYoIU9iamVjdC5hc3NpZ24pcmV0dXJuITE7dmFyIGU9bmV3IFN0
cmluZygiYWJjIik7aWYoZVs1XT0iZGUiLCI1Ij09PU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVz
KGUpWzBdKXJldHVybiExO2Zvcih2YXIgdD17fSxuPTA7bjwxMDtuKyspdFsiXyIrU3RyaW5nLmZy
b21DaGFyQ29kZShuKV09bjt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0KS5tYXAo
ZnVuY3Rpb24oZSl7cmV0dXJuIHRbZV19KTtpZigiMDEyMzQ1Njc4OSIhPT1yLmpvaW4oIiIpKXJl
dHVybiExO3ZhciBvPXt9O3JldHVybiJhYmNkZWZnaGlqa2xtbm9wcXJzdCIuc3BsaXQoIiIpLmZv
ckVhY2goZnVuY3Rpb24oZSl7b1tlXT1lfSksImFiY2RlZmdoaWprbG1ub3BxcnN0Ij09PU9iamVj
dC5rZXlzKE9iamVjdC5hc3NpZ24oe30sbykpLmpvaW4oIiIpfWNhdGNoKGkpe3JldHVybiExfX12
YXIgbz1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzLGk9T2JqZWN0LnByb3RvdHlwZS5oYXNP
d25Qcm9wZXJ0eSxhPU9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGU7ZS5leHBv
cnRzPXIoKT9PYmplY3QuYXNzaWduOmZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByLHUscz1uKGUpLGM9
MTtjPGFyZ3VtZW50cy5sZW5ndGg7YysrKXtyPU9iamVjdChhcmd1bWVudHNbY10pO2Zvcih2YXIg
bCBpbiByKWkuY2FsbChyLGwpJiYoc1tsXT1yW2xdKTtpZihvKXt1PW8ocik7Zm9yKHZhciBwPTA7
cDx1Lmxlbmd0aDtwKyspYS5jYWxsKHIsdVtwXSkmJihzW3VbcF1dPXJbdVtwXV0pfX1yZXR1cm4g
c319LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQpe3JldHVybiAx
PT09ZS5ub2RlVHlwZSYmZS5nZXRBdHRyaWJ1dGUoaCk9PT1TdHJpbmcodCl8fDg9PT1lLm5vZGVU
eXBlJiZlLm5vZGVWYWx1ZT09PSIgcmVhY3QtdGV4dDogIit0KyIgInx8OD09PWUubm9kZVR5cGUm
JmUubm9kZVZhbHVlPT09IiByZWFjdC1lbXB0eTogIit0KyIgIn1mdW5jdGlvbiBvKGUpe2Zvcih2
YXIgdDt0PWUuX3JlbmRlcmVkQ29tcG9uZW50OyllPXQ7cmV0dXJuIGV9ZnVuY3Rpb24gaShlLHQp
e3ZhciBuPW8oZSk7bi5faG9zdE5vZGU9dCx0W21dPW59ZnVuY3Rpb24gYShlKXt2YXIgdD1lLl9o
b3N0Tm9kZTt0JiYoZGVsZXRlIHRbbV0sZS5faG9zdE5vZGU9bnVsbCl9ZnVuY3Rpb24gdShlLHQp
e2lmKCEoZS5fZmxhZ3Mmdi5oYXNDYWNoZWRDaGlsZE5vZGVzKSl7dmFyIG49ZS5fcmVuZGVyZWRD
aGlsZHJlbixhPXQuZmlyc3RDaGlsZDtlOmZvcih2YXIgdSBpbiBuKWlmKG4uaGFzT3duUHJvcGVy
dHkodSkpe3ZhciBzPW5bdV0sYz1vKHMpLl9kb21JRDtpZigwIT09Yyl7Zm9yKDtudWxsIT09YTth
PWEubmV4dFNpYmxpbmcpaWYocihhLGMpKXtpKHMsYSk7Y29udGludWUgZX1wKCIzMiIsYyl9fWUu
X2ZsYWdzfD12Lmhhc0NhY2hlZENoaWxkTm9kZXN9fWZ1bmN0aW9uIHMoZSl7aWYoZVttXSlyZXR1
cm4gZVttXTtmb3IodmFyIHQ9W107IWVbbV07KXtpZih0LnB1c2goZSksIWUucGFyZW50Tm9kZSly
ZXR1cm4gbnVsbDtlPWUucGFyZW50Tm9kZX1mb3IodmFyIG4scjtlJiYocj1lW21dKTtlPXQucG9w
KCkpbj1yLHQubGVuZ3RoJiZ1KHIsZSk7cmV0dXJuIG59ZnVuY3Rpb24gYyhlKXt2YXIgdD1zKGUp
O3JldHVybiBudWxsIT10JiZ0Ll9ob3N0Tm9kZT09PWU/dDpudWxsfWZ1bmN0aW9uIGwoZSl7aWYo
dm9pZCAwPT09ZS5faG9zdE5vZGU/cCgiMzMiKTp2b2lkIDAsZS5faG9zdE5vZGUpcmV0dXJuIGUu
X2hvc3ROb2RlO2Zvcih2YXIgdD1bXTshZS5faG9zdE5vZGU7KXQucHVzaChlKSxlLl9ob3N0UGFy
ZW50P3ZvaWQgMDpwKCIzNCIpLGU9ZS5faG9zdFBhcmVudDtmb3IoO3QubGVuZ3RoO2U9dC5wb3Ao
KSl1KGUsZS5faG9zdE5vZGUpO3JldHVybiBlLl9ob3N0Tm9kZX12YXIgcD1uKDMpLGQ9bigxNSks
Zj1uKDYxKSxoPShuKDEpLGQuSURfQVRUUklCVVRFX05BTUUpLHY9ZixtPSJfX3JlYWN0SW50ZXJu
YWxJbnN0YW5jZSQiK01hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnNsaWNlKDIpLHk9e2dldENs
b3Nlc3RJbnN0YW5jZUZyb21Ob2RlOnMsZ2V0SW5zdGFuY2VGcm9tTm9kZTpjLGdldE5vZGVGcm9t
SW5zdGFuY2U6bCxwcmVjYWNoZUNoaWxkTm9kZXM6dSxwcmVjYWNoZU5vZGU6aSx1bmNhY2hlTm9k
ZTphfTtlLmV4cG9ydHM9eX0sZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7dmFyIG49ISgidW5k
ZWZpbmVkIj09dHlwZW9mIHdpbmRvd3x8IXdpbmRvdy5kb2N1bWVudHx8IXdpbmRvdy5kb2N1bWVu
dC5jcmVhdGVFbGVtZW50KSxyPXtjYW5Vc2VET006bixjYW5Vc2VXb3JrZXJzOiJ1bmRlZmluZWQi
IT10eXBlb2YgV29ya2VyLGNhblVzZUV2ZW50TGlzdGVuZXJzOm4mJiEoIXdpbmRvdy5hZGRFdmVu
dExpc3RlbmVyJiYhd2luZG93LmF0dGFjaEV2ZW50KSxjYW5Vc2VWaWV3cG9ydDpuJiYhIXdpbmRv
dy5zY3JlZW4saXNJbldvcmtlcjohbn07ZS5leHBvcnRzPXJ9LGZ1bmN0aW9uKGUsdCl7InVzZSBz
dHJpY3QiO2Z1bmN0aW9uIG4oZSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGV9fXZhciByPWZ1
bmN0aW9uKCl7fTtyLnRoYXRSZXR1cm5zPW4sci50aGF0UmV0dXJuc0ZhbHNlPW4oITEpLHIudGhh
dFJldHVybnNUcnVlPW4oITApLHIudGhhdFJldHVybnNOdWxsPW4obnVsbCksci50aGF0UmV0dXJu
c1RoaXM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30sci50aGF0UmV0dXJuc0FyZ3VtZW50PWZ1bmN0
aW9uKGUpe3JldHVybiBlfSxlLmV4cG9ydHM9cn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0
Ijt2YXIgcj1udWxsO2UuZXhwb3J0cz17ZGVidWdUb29sOnJ9fSxmdW5jdGlvbihlLHQsbil7InVz
ZSBzdHJpY3QiO2Z1bmN0aW9uIHIoKXtPLlJlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb24mJkM/dm9p
ZCAwOmwoIjEyMyIpfWZ1bmN0aW9uIG8oKXt0aGlzLnJlaW5pdGlhbGl6ZVRyYW5zYWN0aW9uKCks
dGhpcy5kaXJ0eUNvbXBvbmVudHNMZW5ndGg9bnVsbCx0aGlzLmNhbGxiYWNrUXVldWU9ZC5nZXRQ
b29sZWQoKSx0aGlzLnJlY29uY2lsZVRyYW5zYWN0aW9uPU8uUmVhY3RSZWNvbmNpbGVUcmFuc2Fj
dGlvbi5nZXRQb29sZWQoITApfWZ1bmN0aW9uIGkoZSx0LG4sbyxpLGEpe3JldHVybiByKCksQy5i
YXRjaGVkVXBkYXRlcyhlLHQsbixvLGksYSl9ZnVuY3Rpb24gYShlLHQpe3JldHVybiBlLl9tb3Vu
dE9yZGVyLXQuX21vdW50T3JkZXJ9ZnVuY3Rpb24gdShlKXt2YXIgdD1lLmRpcnR5Q29tcG9uZW50
c0xlbmd0aDt0IT09eS5sZW5ndGg/bCgiMTI0Iix0LHkubGVuZ3RoKTp2b2lkIDAseS5zb3J0KGEp
LGcrKztmb3IodmFyIG49MDtuPHQ7bisrKXt2YXIgcj15W25dLG89ci5fcGVuZGluZ0NhbGxiYWNr
cztyLl9wZW5kaW5nQ2FsbGJhY2tzPW51bGw7dmFyIGk7aWYoaC5sb2dUb3BMZXZlbFJlbmRlcnMp
e3ZhciB1PXI7ci5fY3VycmVudEVsZW1lbnQudHlwZS5pc1JlYWN0VG9wTGV2ZWxXcmFwcGVyJiYo
dT1yLl9yZW5kZXJlZENvbXBvbmVudCksaT0iUmVhY3QgdXBkYXRlOiAiK3UuZ2V0TmFtZSgpLGNv
bnNvbGUudGltZShpKX1pZih2LnBlcmZvcm1VcGRhdGVJZk5lY2Vzc2FyeShyLGUucmVjb25jaWxl
VHJhbnNhY3Rpb24sZyksaSYmY29uc29sZS50aW1lRW5kKGkpLG8pZm9yKHZhciBzPTA7czxvLmxl
bmd0aDtzKyspZS5jYWxsYmFja1F1ZXVlLmVucXVldWUob1tzXSxyLmdldFB1YmxpY0luc3RhbmNl
KCkpfX1mdW5jdGlvbiBzKGUpe3JldHVybiByKCksQy5pc0JhdGNoaW5nVXBkYXRlcz8oeS5wdXNo
KGUpLHZvaWQobnVsbD09ZS5fdXBkYXRlQmF0Y2hOdW1iZXImJihlLl91cGRhdGVCYXRjaE51bWJl
cj1nKzEpKSk6dm9pZCBDLmJhdGNoZWRVcGRhdGVzKHMsZSl9ZnVuY3Rpb24gYyhlLHQpe0MuaXNC
YXRjaGluZ1VwZGF0ZXM/dm9pZCAwOmwoIjEyNSIpLGIuZW5xdWV1ZShlLHQpLF89ITB9dmFyIGw9
bigzKSxwPW4oNCksZD1uKDU5KSxmPW4oMTMpLGg9big2NCksdj1uKDE2KSxtPW4oMjcpLHk9KG4o
MSksW10pLGc9MCxiPWQuZ2V0UG9vbGVkKCksXz0hMSxDPW51bGwsRT17aW5pdGlhbGl6ZTpmdW5j
dGlvbigpe3RoaXMuZGlydHlDb21wb25lbnRzTGVuZ3RoPXkubGVuZ3RofSxjbG9zZTpmdW5jdGlv
bigpe3RoaXMuZGlydHlDb21wb25lbnRzTGVuZ3RoIT09eS5sZW5ndGg/KHkuc3BsaWNlKDAsdGhp
cy5kaXJ0eUNvbXBvbmVudHNMZW5ndGgpLFAoKSk6eS5sZW5ndGg9MH19LHc9e2luaXRpYWxpemU6
ZnVuY3Rpb24oKXt0aGlzLmNhbGxiYWNrUXVldWUucmVzZXQoKX0sY2xvc2U6ZnVuY3Rpb24oKXt0
aGlzLmNhbGxiYWNrUXVldWUubm90aWZ5QWxsKCl9fSxUPVtFLHddO3Aoby5wcm90b3R5cGUsbSx7
Z2V0VHJhbnNhY3Rpb25XcmFwcGVyczpmdW5jdGlvbigpe3JldHVybiBUfSxkZXN0cnVjdG9yOmZ1
bmN0aW9uKCl7dGhpcy5kaXJ0eUNvbXBvbmVudHNMZW5ndGg9bnVsbCxkLnJlbGVhc2UodGhpcy5j
YWxsYmFja1F1ZXVlKSx0aGlzLmNhbGxiYWNrUXVldWU9bnVsbCxPLlJlYWN0UmVjb25jaWxlVHJh
bnNhY3Rpb24ucmVsZWFzZSh0aGlzLnJlY29uY2lsZVRyYW5zYWN0aW9uKSx0aGlzLnJlY29uY2ls
ZVRyYW5zYWN0aW9uPW51bGx9LHBlcmZvcm06ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBtLnBlcmZv
cm0uY2FsbCh0aGlzLHRoaXMucmVjb25jaWxlVHJhbnNhY3Rpb24ucGVyZm9ybSx0aGlzLnJlY29u
Y2lsZVRyYW5zYWN0aW9uLGUsdCxuKX19KSxmLmFkZFBvb2xpbmdUbyhvKTt2YXIgUD1mdW5jdGlv
bigpe2Zvcig7eS5sZW5ndGh8fF87KXtpZih5Lmxlbmd0aCl7dmFyIGU9by5nZXRQb29sZWQoKTtl
LnBlcmZvcm0odSxudWxsLGUpLG8ucmVsZWFzZShlKX1pZihfKXtfPSExO3ZhciB0PWI7Yj1kLmdl
dFBvb2xlZCgpLHQubm90aWZ5QWxsKCksZC5yZWxlYXNlKHQpfX19LHg9e2luamVjdFJlY29uY2ls
ZVRyYW5zYWN0aW9uOmZ1bmN0aW9uKGUpe2U/dm9pZCAwOmwoIjEyNiIpLE8uUmVhY3RSZWNvbmNp
bGVUcmFuc2FjdGlvbj1lfSxpbmplY3RCYXRjaGluZ1N0cmF0ZWd5OmZ1bmN0aW9uKGUpe2U/dm9p
ZCAwOmwoIjEyNyIpLCJmdW5jdGlvbiIhPXR5cGVvZiBlLmJhdGNoZWRVcGRhdGVzP2woIjEyOCIp
OnZvaWQgMCwiYm9vbGVhbiIhPXR5cGVvZiBlLmlzQmF0Y2hpbmdVcGRhdGVzP2woIjEyOSIpOnZv
aWQgMCxDPWV9fSxPPXtSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9uOm51bGwsYmF0Y2hlZFVwZGF0
ZXM6aSxlbnF1ZXVlVXBkYXRlOnMsZmx1c2hCYXRjaGVkVXBkYXRlczpQLGluamVjdGlvbjp4LGFz
YXA6Y307ZS5leHBvcnRzPU99LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24g
cihlLHQsbixyKXt0aGlzLmRpc3BhdGNoQ29uZmlnPWUsdGhpcy5fdGFyZ2V0SW5zdD10LHRoaXMu
bmF0aXZlRXZlbnQ9bjt2YXIgbz10aGlzLmNvbnN0cnVjdG9yLkludGVyZmFjZTtmb3IodmFyIGkg
aW4gbylpZihvLmhhc093blByb3BlcnR5KGkpKXt2YXIgdT1vW2ldO3U/dGhpc1tpXT11KG4pOiJ0
YXJnZXQiPT09aT90aGlzLnRhcmdldD1yOnRoaXNbaV09bltpXX12YXIgcz1udWxsIT1uLmRlZmF1
bHRQcmV2ZW50ZWQ/bi5kZWZhdWx0UHJldmVudGVkOm4ucmV0dXJuVmFsdWU9PT0hMTtyZXR1cm4g
cz90aGlzLmlzRGVmYXVsdFByZXZlbnRlZD1hLnRoYXRSZXR1cm5zVHJ1ZTp0aGlzLmlzRGVmYXVs
dFByZXZlbnRlZD1hLnRoYXRSZXR1cm5zRmFsc2UsdGhpcy5pc1Byb3BhZ2F0aW9uU3RvcHBlZD1h
LnRoYXRSZXR1cm5zRmFsc2UsdGhpc312YXIgbz1uKDQpLGk9bigxMyksYT1uKDcpLHU9KG4oMiks
ImZ1bmN0aW9uIj09dHlwZW9mIFByb3h5LFsiZGlzcGF0Y2hDb25maWciLCJfdGFyZ2V0SW5zdCIs
Im5hdGl2ZUV2ZW50IiwiaXNEZWZhdWx0UHJldmVudGVkIiwiaXNQcm9wYWdhdGlvblN0b3BwZWQi
LCJfZGlzcGF0Y2hMaXN0ZW5lcnMiLCJfZGlzcGF0Y2hJbnN0YW5jZXMiXSkscz17dHlwZTpudWxs
LHRhcmdldDpudWxsLGN1cnJlbnRUYXJnZXQ6YS50aGF0UmV0dXJuc051bGwsZXZlbnRQaGFzZTpu
dWxsLGJ1YmJsZXM6bnVsbCxjYW5jZWxhYmxlOm51bGwsdGltZVN0YW1wOmZ1bmN0aW9uKGUpe3Jl
dHVybiBlLnRpbWVTdGFtcHx8RGF0ZS5ub3coKX0sZGVmYXVsdFByZXZlbnRlZDpudWxsLGlzVHJ1
c3RlZDpudWxsfTtvKHIucHJvdG90eXBlLHtwcmV2ZW50RGVmYXVsdDpmdW5jdGlvbigpe3RoaXMu
ZGVmYXVsdFByZXZlbnRlZD0hMDt2YXIgZT10aGlzLm5hdGl2ZUV2ZW50O2UmJihlLnByZXZlbnRE
ZWZhdWx0P2UucHJldmVudERlZmF1bHQoKToidW5rbm93biIhPXR5cGVvZiBlLnJldHVyblZhbHVl
JiYoZS5yZXR1cm5WYWx1ZT0hMSksdGhpcy5pc0RlZmF1bHRQcmV2ZW50ZWQ9YS50aGF0UmV0dXJu
c1RydWUpfSxzdG9wUHJvcGFnYXRpb246ZnVuY3Rpb24oKXt2YXIgZT10aGlzLm5hdGl2ZUV2ZW50
O2UmJihlLnN0b3BQcm9wYWdhdGlvbj9lLnN0b3BQcm9wYWdhdGlvbigpOiJ1bmtub3duIiE9dHlw
ZW9mIGUuY2FuY2VsQnViYmxlJiYoZS5jYW5jZWxCdWJibGU9ITApLHRoaXMuaXNQcm9wYWdhdGlv
blN0b3BwZWQ9YS50aGF0UmV0dXJuc1RydWUpfSxwZXJzaXN0OmZ1bmN0aW9uKCl7dGhpcy5pc1Bl
cnNpc3RlbnQ9YS50aGF0UmV0dXJuc1RydWV9LGlzUGVyc2lzdGVudDphLnRoYXRSZXR1cm5zRmFs
c2UsZGVzdHJ1Y3RvcjpmdW5jdGlvbigpe3ZhciBlPXRoaXMuY29uc3RydWN0b3IuSW50ZXJmYWNl
O2Zvcih2YXIgdCBpbiBlKXRoaXNbdF09bnVsbDtmb3IodmFyIG49MDtuPHUubGVuZ3RoO24rKyl0
aGlzW3Vbbl1dPW51bGx9fSksci5JbnRlcmZhY2U9cyxyLmF1Z21lbnRDbGFzcz1mdW5jdGlvbihl
LHQpe3ZhciBuPXRoaXMscj1mdW5jdGlvbigpe307ci5wcm90b3R5cGU9bi5wcm90b3R5cGU7dmFy
IGE9bmV3IHI7byhhLGUucHJvdG90eXBlKSxlLnByb3RvdHlwZT1hLGUucHJvdG90eXBlLmNvbnN0
cnVjdG9yPWUsZS5JbnRlcmZhY2U9byh7fSxuLkludGVyZmFjZSx0KSxlLmF1Z21lbnRDbGFzcz1u
LmF1Z21lbnRDbGFzcyxpLmFkZFBvb2xpbmdUbyhlLGkuZm91ckFyZ3VtZW50UG9vbGVyKX0saS5h
ZGRQb29saW5nVG8ocixpLmZvdXJBcmd1bWVudFBvb2xlciksZS5leHBvcnRzPXJ9LGZ1bmN0aW9u
KGUsdCl7InVzZSBzdHJpY3QiO3ZhciBuPXtjdXJyZW50Om51bGx9O2UuZXhwb3J0cz1ufSxmdW5j
dGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1uKDE3KX0sWzIzMSwzXSxmdW5jdGlv
bihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7aWYobSl7dmFyIHQ9ZS5ub2RlLG49
ZS5jaGlsZHJlbjtpZihuLmxlbmd0aClmb3IodmFyIHI9MDtyPG4ubGVuZ3RoO3IrKyl5KHQsblty
XSxudWxsKTtlbHNlIG51bGwhPWUuaHRtbD9wKHQsZS5odG1sKTpudWxsIT1lLnRleHQmJmYodCxl
LnRleHQpfX1mdW5jdGlvbiBvKGUsdCl7ZS5wYXJlbnROb2RlLnJlcGxhY2VDaGlsZCh0Lm5vZGUs
ZSkscih0KX1mdW5jdGlvbiBpKGUsdCl7bT9lLmNoaWxkcmVuLnB1c2godCk6ZS5ub2RlLmFwcGVu
ZENoaWxkKHQubm9kZSl9ZnVuY3Rpb24gYShlLHQpe20/ZS5odG1sPXQ6cChlLm5vZGUsdCl9ZnVu
Y3Rpb24gdShlLHQpe20/ZS50ZXh0PXQ6ZihlLm5vZGUsdCl9ZnVuY3Rpb24gcygpe3JldHVybiB0
aGlzLm5vZGUubm9kZU5hbWV9ZnVuY3Rpb24gYyhlKXtyZXR1cm57bm9kZTplLGNoaWxkcmVuOltd
LGh0bWw6bnVsbCx0ZXh0Om51bGwsdG9TdHJpbmc6c319dmFyIGw9bigzNSkscD1uKDI5KSxkPW4o
NDMpLGY9big3NyksaD0xLHY9MTEsbT0idW5kZWZpbmVkIiE9dHlwZW9mIGRvY3VtZW50JiYibnVt
YmVyIj09dHlwZW9mIGRvY3VtZW50LmRvY3VtZW50TW9kZXx8InVuZGVmaW5lZCIhPXR5cGVvZiBu
YXZpZ2F0b3ImJiJzdHJpbmciPT10eXBlb2YgbmF2aWdhdG9yLnVzZXJBZ2VudCYmL1xiRWRnZVwv
XGQvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkseT1kKGZ1bmN0aW9uKGUsdCxuKXt0Lm5vZGUu
bm9kZVR5cGU9PT12fHx0Lm5vZGUubm9kZVR5cGU9PT1oJiYib2JqZWN0Ij09PXQubm9kZS5ub2Rl
TmFtZS50b0xvd2VyQ2FzZSgpJiYobnVsbD09dC5ub2RlLm5hbWVzcGFjZVVSSXx8dC5ub2RlLm5h
bWVzcGFjZVVSST09PWwuaHRtbCk/KHIodCksZS5pbnNlcnRCZWZvcmUodC5ub2RlLG4pKTooZS5p
bnNlcnRCZWZvcmUodC5ub2RlLG4pLHIodCkpfSk7Yy5pbnNlcnRUcmVlQmVmb3JlPXksYy5yZXBs
YWNlQ2hpbGRXaXRoVHJlZT1vLGMucXVldWVDaGlsZD1pLGMucXVldWVIVE1MPWEsYy5xdWV1ZVRl
eHQ9dSxlLmV4cG9ydHM9Y30sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBy
KGUsdCl7cmV0dXJuKGUmdCk9PT10fXZhciBvPW4oMyksaT0obigxKSx7TVVTVF9VU0VfUFJPUEVS
VFk6MSxIQVNfQk9PTEVBTl9WQUxVRTo0LEhBU19OVU1FUklDX1ZBTFVFOjgsSEFTX1BPU0lUSVZF
X05VTUVSSUNfVkFMVUU6MjQsSEFTX09WRVJMT0FERURfQk9PTEVBTl9WQUxVRTozMixpbmplY3RE
T01Qcm9wZXJ0eUNvbmZpZzpmdW5jdGlvbihlKXt2YXIgdD1pLG49ZS5Qcm9wZXJ0aWVzfHx7fSxh
PWUuRE9NQXR0cmlidXRlTmFtZXNwYWNlc3x8e30scz1lLkRPTUF0dHJpYnV0ZU5hbWVzfHx7fSxj
PWUuRE9NUHJvcGVydHlOYW1lc3x8e30sbD1lLkRPTU11dGF0aW9uTWV0aG9kc3x8e307ZS5pc0N1
c3RvbUF0dHJpYnV0ZSYmdS5faXNDdXN0b21BdHRyaWJ1dGVGdW5jdGlvbnMucHVzaChlLmlzQ3Vz
dG9tQXR0cmlidXRlKTtmb3IodmFyIHAgaW4gbil7dS5wcm9wZXJ0aWVzLmhhc093blByb3BlcnR5
KHApP28oIjQ4IixwKTp2b2lkIDA7dmFyIGQ9cC50b0xvd2VyQ2FzZSgpLGY9bltwXSxoPXthdHRy
aWJ1dGVOYW1lOmQsYXR0cmlidXRlTmFtZXNwYWNlOm51bGwscHJvcGVydHlOYW1lOnAsbXV0YXRp
b25NZXRob2Q6bnVsbCxtdXN0VXNlUHJvcGVydHk6cihmLHQuTVVTVF9VU0VfUFJPUEVSVFkpLGhh
c0Jvb2xlYW5WYWx1ZTpyKGYsdC5IQVNfQk9PTEVBTl9WQUxVRSksaGFzTnVtZXJpY1ZhbHVlOnIo
Zix0LkhBU19OVU1FUklDX1ZBTFVFKSxoYXNQb3NpdGl2ZU51bWVyaWNWYWx1ZTpyKGYsdC5IQVNf
UE9TSVRJVkVfTlVNRVJJQ19WQUxVRSksaGFzT3ZlcmxvYWRlZEJvb2xlYW5WYWx1ZTpyKGYsdC5I
QVNfT1ZFUkxPQURFRF9CT09MRUFOX1ZBTFVFKX07aWYoaC5oYXNCb29sZWFuVmFsdWUraC5oYXNO
dW1lcmljVmFsdWUraC5oYXNPdmVybG9hZGVkQm9vbGVhblZhbHVlPD0xP3ZvaWQgMDpvKCI1MCIs
cCkscy5oYXNPd25Qcm9wZXJ0eShwKSl7dmFyIHY9c1twXTtoLmF0dHJpYnV0ZU5hbWU9dn1hLmhh
c093blByb3BlcnR5KHApJiYoaC5hdHRyaWJ1dGVOYW1lc3BhY2U9YVtwXSksYy5oYXNPd25Qcm9w
ZXJ0eShwKSYmKGgucHJvcGVydHlOYW1lPWNbcF0pLGwuaGFzT3duUHJvcGVydHkocCkmJihoLm11
dGF0aW9uTWV0aG9kPWxbcF0pLHUucHJvcGVydGllc1twXT1ofX19KSxhPSI6QS1aX2EtelxcdTAw
QzAtXFx1MDBENlxcdTAwRDgtXFx1MDBGNlxcdTAwRjgtXFx1MDJGRlxcdTAzNzAtXFx1MDM3RFxc
dTAzN0YtXFx1MUZGRlxcdTIwMEMtXFx1MjAwRFxcdTIwNzAtXFx1MjE4RlxcdTJDMDAtXFx1MkZF
RlxcdTMwMDEtXFx1RDdGRlxcdUY5MDAtXFx1RkRDRlxcdUZERjAtXFx1RkZGRCIsdT17SURfQVRU
UklCVVRFX05BTUU6ImRhdGEtcmVhY3RpZCIsUk9PVF9BVFRSSUJVVEVfTkFNRToiZGF0YS1yZWFj
dHJvb3QiLEFUVFJJQlVURV9OQU1FX1NUQVJUX0NIQVI6YSxBVFRSSUJVVEVfTkFNRV9DSEFSOmEr
IlxcLS4wLTlcXHUwMEI3XFx1MDMwMC1cXHUwMzZGXFx1MjAzRi1cXHUyMDQwIixwcm9wZXJ0aWVz
Ont9LGdldFBvc3NpYmxlU3RhbmRhcmROYW1lOm51bGwsX2lzQ3VzdG9tQXR0cmlidXRlRnVuY3Rp
b25zOltdLGlzQ3VzdG9tQXR0cmlidXRlOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0wO3Q8dS5faXND
dXN0b21BdHRyaWJ1dGVGdW5jdGlvbnMubGVuZ3RoO3QrKyl7dmFyIG49dS5faXNDdXN0b21BdHRy
aWJ1dGVGdW5jdGlvbnNbdF07aWYobihlKSlyZXR1cm4hMH1yZXR1cm4hMX0saW5qZWN0aW9uOml9
O2UuZXhwb3J0cz11fSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoKXtv
LmF0dGFjaFJlZnModGhpcyx0aGlzLl9jdXJyZW50RWxlbWVudCl9dmFyIG89bigxNjApLGk9KG4o
OCksbigyKSx7bW91bnRDb21wb25lbnQ6ZnVuY3Rpb24oZSx0LG4sbyxpLGEpe3ZhciB1PWUubW91
bnRDb21wb25lbnQodCxuLG8saSxhKTtyZXR1cm4gZS5fY3VycmVudEVsZW1lbnQmJm51bGwhPWUu
X2N1cnJlbnRFbGVtZW50LnJlZiYmdC5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKHIsZSks
dX0sZ2V0SG9zdE5vZGU6ZnVuY3Rpb24oZSl7cmV0dXJuIGUuZ2V0SG9zdE5vZGUoKX0sdW5tb3Vu
dENvbXBvbmVudDpmdW5jdGlvbihlLHQpe28uZGV0YWNoUmVmcyhlLGUuX2N1cnJlbnRFbGVtZW50
KSxlLnVubW91bnRDb21wb25lbnQodCl9LHJlY2VpdmVDb21wb25lbnQ6ZnVuY3Rpb24oZSx0LG4s
aSl7dmFyIGE9ZS5fY3VycmVudEVsZW1lbnQ7aWYodCE9PWF8fGkhPT1lLl9jb250ZXh0KXt2YXIg
dT1vLnNob3VsZFVwZGF0ZVJlZnMoYSx0KTt1JiZvLmRldGFjaFJlZnMoZSxhKSxlLnJlY2VpdmVD
b21wb25lbnQodCxuLGkpLHUmJmUuX2N1cnJlbnRFbGVtZW50JiZudWxsIT1lLl9jdXJyZW50RWxl
bWVudC5yZWYmJm4uZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1ZShyLGUpfX0scGVyZm9ybVVw
ZGF0ZUlmTmVjZXNzYXJ5OmZ1bmN0aW9uKGUsdCxuKXtlLl91cGRhdGVCYXRjaE51bWJlcj09PW4m
JmUucGVyZm9ybVVwZGF0ZUlmTmVjZXNzYXJ5KHQpfX0pO2UuZXhwb3J0cz1pfSxmdW5jdGlvbihl
LHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oNCksbz1uKDg5KSxpPW4oMjE1KSxhPW4oMjE2KSx1
PW4oMTgpLHM9bigyMTcpLGM9bigyMTgpLGw9bigyMTkpLHA9bigyMjMpLGQ9dS5jcmVhdGVFbGVt
ZW50LGY9dS5jcmVhdGVGYWN0b3J5LGg9dS5jbG9uZUVsZW1lbnQsdj1yLG09ZnVuY3Rpb24oZSl7
cmV0dXJuIGV9LHk9e0NoaWxkcmVuOnttYXA6aS5tYXAsZm9yRWFjaDppLmZvckVhY2gsY291bnQ6
aS5jb3VudCx0b0FycmF5OmkudG9BcnJheSxvbmx5OnB9LENvbXBvbmVudDpvLkNvbXBvbmVudCxQ
dXJlQ29tcG9uZW50Om8uUHVyZUNvbXBvbmVudCxjcmVhdGVFbGVtZW50OmQsY2xvbmVFbGVtZW50
OmgsaXNWYWxpZEVsZW1lbnQ6dS5pc1ZhbGlkRWxlbWVudCxQcm9wVHlwZXM6cyxjcmVhdGVDbGFz
czpsLGNyZWF0ZUZhY3Rvcnk6ZixjcmVhdGVNaXhpbjptLERPTTphLHZlcnNpb246YyxfX3NwcmVh
ZDp2fTtlLmV4cG9ydHM9eX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBy
KGUpe3JldHVybiB2b2lkIDAhPT1lLnJlZn1mdW5jdGlvbiBvKGUpe3JldHVybiB2b2lkIDAhPT1l
LmtleX12YXIgaT1uKDQpLGE9bigxMSksdT0obigyKSxuKDkzKSxPYmplY3QucHJvdG90eXBlLmhh
c093blByb3BlcnR5KSxzPW4oOTEpLGM9e2tleTohMCxyZWY6ITAsX19zZWxmOiEwLF9fc291cmNl
OiEwfSxsPWZ1bmN0aW9uKGUsdCxuLHIsbyxpLGEpe3ZhciB1PXskJHR5cGVvZjpzLHR5cGU6ZSxr
ZXk6dCxyZWY6bixwcm9wczphLF9vd25lcjppfTtyZXR1cm4gdX07bC5jcmVhdGVFbGVtZW50PWZ1
bmN0aW9uKGUsdCxuKXt2YXIgaSxzPXt9LHA9bnVsbCxkPW51bGwsZj1udWxsLGg9bnVsbDtpZihu
dWxsIT10KXtyKHQpJiYoZD10LnJlZiksbyh0KSYmKHA9IiIrdC5rZXkpLGY9dm9pZCAwPT09dC5f
X3NlbGY/bnVsbDp0Ll9fc2VsZixoPXZvaWQgMD09PXQuX19zb3VyY2U/bnVsbDp0Ll9fc291cmNl
O2ZvcihpIGluIHQpdS5jYWxsKHQsaSkmJiFjLmhhc093blByb3BlcnR5KGkpJiYoc1tpXT10W2ld
KX12YXIgdj1hcmd1bWVudHMubGVuZ3RoLTI7aWYoMT09PXYpcy5jaGlsZHJlbj1uO2Vsc2UgaWYo
dj4xKXtmb3IodmFyIG09QXJyYXkodikseT0wO3k8djt5KyspbVt5XT1hcmd1bWVudHNbeSsyXTtz
LmNoaWxkcmVuPW19aWYoZSYmZS5kZWZhdWx0UHJvcHMpe3ZhciBnPWUuZGVmYXVsdFByb3BzO2Zv
cihpIGluIGcpdm9pZCAwPT09c1tpXSYmKHNbaV09Z1tpXSl9cmV0dXJuIGwoZSxwLGQsZixoLGEu
Y3VycmVudCxzKX0sbC5jcmVhdGVGYWN0b3J5PWZ1bmN0aW9uKGUpe3ZhciB0PWwuY3JlYXRlRWxl
bWVudC5iaW5kKG51bGwsZSk7cmV0dXJuIHQudHlwZT1lLHR9LGwuY2xvbmVBbmRSZXBsYWNlS2V5
PWZ1bmN0aW9uKGUsdCl7dmFyIG49bChlLnR5cGUsdCxlLnJlZixlLl9zZWxmLGUuX3NvdXJjZSxl
Ll9vd25lcixlLnByb3BzKTtyZXR1cm4gbn0sbC5jbG9uZUVsZW1lbnQ9ZnVuY3Rpb24oZSx0LG4p
e3ZhciBzLHA9aSh7fSxlLnByb3BzKSxkPWUua2V5LGY9ZS5yZWYsaD1lLl9zZWxmLHY9ZS5fc291
cmNlLG09ZS5fb3duZXI7aWYobnVsbCE9dCl7cih0KSYmKGY9dC5yZWYsbT1hLmN1cnJlbnQpLG8o
dCkmJihkPSIiK3Qua2V5KTt2YXIgeTtlLnR5cGUmJmUudHlwZS5kZWZhdWx0UHJvcHMmJih5PWUu
dHlwZS5kZWZhdWx0UHJvcHMpO2ZvcihzIGluIHQpdS5jYWxsKHQscykmJiFjLmhhc093blByb3Bl
cnR5KHMpJiYodm9pZCAwPT09dFtzXSYmdm9pZCAwIT09eT9wW3NdPXlbc106cFtzXT10W3NdKX12
YXIgZz1hcmd1bWVudHMubGVuZ3RoLTI7aWYoMT09PWcpcC5jaGlsZHJlbj1uO2Vsc2UgaWYoZz4x
KXtmb3IodmFyIGI9QXJyYXkoZyksXz0wO188ZztfKyspYltfXT1hcmd1bWVudHNbXysyXTtwLmNo
aWxkcmVuPWJ9cmV0dXJuIGwoZS50eXBlLGQsZixoLHYsbSxwKX0sbC5pc1ZhbGlkRWxlbWVudD1m
dW5jdGlvbihlKXtyZXR1cm4ib2JqZWN0Ij09dHlwZW9mIGUmJm51bGwhPT1lJiZlLiQkdHlwZW9m
PT09c30sZS5leHBvcnRzPWx9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24g
cihlKXtyZXR1cm4iYnV0dG9uIj09PWV8fCJpbnB1dCI9PT1lfHwic2VsZWN0Ij09PWV8fCJ0ZXh0
YXJlYSI9PT1lfWZ1bmN0aW9uIG8oZSx0LG4pe3N3aXRjaChlKXtjYXNlIm9uQ2xpY2siOmNhc2Ui
b25DbGlja0NhcHR1cmUiOmNhc2Uib25Eb3VibGVDbGljayI6Y2FzZSJvbkRvdWJsZUNsaWNrQ2Fw
dHVyZSI6Y2FzZSJvbk1vdXNlRG93biI6Y2FzZSJvbk1vdXNlRG93bkNhcHR1cmUiOmNhc2Uib25N
b3VzZU1vdmUiOmNhc2Uib25Nb3VzZU1vdmVDYXB0dXJlIjpjYXNlIm9uTW91c2VVcCI6Y2FzZSJv
bk1vdXNlVXBDYXB0dXJlIjpyZXR1cm4hKCFuLmRpc2FibGVkfHwhcih0KSk7ZGVmYXVsdDpyZXR1
cm4hMX19dmFyIGk9bigzKSxhPW4oMzYpLHU9bigzNykscz1uKDQxKSxjPW4oNzApLGw9big3MSks
cD0obigxKSx7fSksZD1udWxsLGY9ZnVuY3Rpb24oZSx0KXtlJiYodS5leGVjdXRlRGlzcGF0Y2hl
c0luT3JkZXIoZSx0KSxlLmlzUGVyc2lzdGVudCgpfHxlLmNvbnN0cnVjdG9yLnJlbGVhc2UoZSkp
fSxoPWZ1bmN0aW9uKGUpe3JldHVybiBmKGUsITApfSx2PWZ1bmN0aW9uKGUpe3JldHVybiBmKGUs
ITEpfSxtPWZ1bmN0aW9uKGUpe3JldHVybiIuIitlLl9yb290Tm9kZUlEfSx5PXtpbmplY3Rpb246
e2luamVjdEV2ZW50UGx1Z2luT3JkZXI6YS5pbmplY3RFdmVudFBsdWdpbk9yZGVyLGluamVjdEV2
ZW50UGx1Z2luc0J5TmFtZTphLmluamVjdEV2ZW50UGx1Z2luc0J5TmFtZX0scHV0TGlzdGVuZXI6
ZnVuY3Rpb24oZSx0LG4peyJmdW5jdGlvbiIhPXR5cGVvZiBuP2koIjk0Iix0LHR5cGVvZiBuKTp2
b2lkIDA7dmFyIHI9bShlKSxvPXBbdF18fChwW3RdPXt9KTtvW3JdPW47dmFyIHU9YS5yZWdpc3Ry
YXRpb25OYW1lTW9kdWxlc1t0XTt1JiZ1LmRpZFB1dExpc3RlbmVyJiZ1LmRpZFB1dExpc3RlbmVy
KGUsdCxuKX0sZ2V0TGlzdGVuZXI6ZnVuY3Rpb24oZSx0KXt2YXIgbj1wW3RdO2lmKG8odCxlLl9j
dXJyZW50RWxlbWVudC50eXBlLGUuX2N1cnJlbnRFbGVtZW50LnByb3BzKSlyZXR1cm4gbnVsbDt2
YXIgcj1tKGUpO3JldHVybiBuJiZuW3JdfSxkZWxldGVMaXN0ZW5lcjpmdW5jdGlvbihlLHQpe3Zh
ciBuPWEucmVnaXN0cmF0aW9uTmFtZU1vZHVsZXNbdF07biYmbi53aWxsRGVsZXRlTGlzdGVuZXIm
Jm4ud2lsbERlbGV0ZUxpc3RlbmVyKGUsdCk7dmFyIHI9cFt0XTtpZihyKXt2YXIgbz1tKGUpO2Rl
bGV0ZSByW29dfX0sZGVsZXRlQWxsTGlzdGVuZXJzOmZ1bmN0aW9uKGUpe3ZhciB0PW0oZSk7Zm9y
KHZhciBuIGluIHApaWYocC5oYXNPd25Qcm9wZXJ0eShuKSYmcFtuXVt0XSl7dmFyIHI9YS5yZWdp
c3RyYXRpb25OYW1lTW9kdWxlc1tuXTtyJiZyLndpbGxEZWxldGVMaXN0ZW5lciYmci53aWxsRGVs
ZXRlTGlzdGVuZXIoZSxuKSxkZWxldGUgcFtuXVt0XX19LGV4dHJhY3RFdmVudHM6ZnVuY3Rpb24o
ZSx0LG4scil7Zm9yKHZhciBvLGk9YS5wbHVnaW5zLHU9MDt1PGkubGVuZ3RoO3UrKyl7dmFyIHM9
aVt1XTtpZihzKXt2YXIgbD1zLmV4dHJhY3RFdmVudHMoZSx0LG4scik7bCYmKG89YyhvLGwpKX19
cmV0dXJuIG99LGVucXVldWVFdmVudHM6ZnVuY3Rpb24oZSl7ZSYmKGQ9YyhkLGUpKX0scHJvY2Vz
c0V2ZW50UXVldWU6ZnVuY3Rpb24oZSl7dmFyIHQ9ZDtkPW51bGwsZT9sKHQsaCk6bCh0LHYpLGQ/
aSgiOTUiKTp2b2lkIDAscy5yZXRocm93Q2F1Z2h0RXJyb3IoKX0sX19wdXJnZTpmdW5jdGlvbigp
e3A9e319LF9fZ2V0TGlzdGVuZXJCYW5rOmZ1bmN0aW9uKCl7cmV0dXJuIHB9fTtlLmV4cG9ydHM9
eX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCxuKXt2YXIgcj10
LmRpc3BhdGNoQ29uZmlnLnBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzW25dO3JldHVybiB5KGUscil9
ZnVuY3Rpb24gbyhlLHQsbil7dmFyIG89cihlLG4sdCk7byYmKG4uX2Rpc3BhdGNoTGlzdGVuZXJz
PXYobi5fZGlzcGF0Y2hMaXN0ZW5lcnMsbyksbi5fZGlzcGF0Y2hJbnN0YW5jZXM9dihuLl9kaXNw
YXRjaEluc3RhbmNlcyxlKSl9ZnVuY3Rpb24gaShlKXtlJiZlLmRpc3BhdGNoQ29uZmlnLnBoYXNl
ZFJlZ2lzdHJhdGlvbk5hbWVzJiZoLnRyYXZlcnNlVHdvUGhhc2UoZS5fdGFyZ2V0SW5zdCxvLGUp
fWZ1bmN0aW9uIGEoZSl7aWYoZSYmZS5kaXNwYXRjaENvbmZpZy5waGFzZWRSZWdpc3RyYXRpb25O
YW1lcyl7dmFyIHQ9ZS5fdGFyZ2V0SW5zdCxuPXQ/aC5nZXRQYXJlbnRJbnN0YW5jZSh0KTpudWxs
O2gudHJhdmVyc2VUd29QaGFzZShuLG8sZSl9fWZ1bmN0aW9uIHUoZSx0LG4pe2lmKG4mJm4uZGlz
cGF0Y2hDb25maWcucmVnaXN0cmF0aW9uTmFtZSl7dmFyIHI9bi5kaXNwYXRjaENvbmZpZy5yZWdp
c3RyYXRpb25OYW1lLG89eShlLHIpO28mJihuLl9kaXNwYXRjaExpc3RlbmVycz12KG4uX2Rpc3Bh
dGNoTGlzdGVuZXJzLG8pLG4uX2Rpc3BhdGNoSW5zdGFuY2VzPXYobi5fZGlzcGF0Y2hJbnN0YW5j
ZXMsZSkpfX1mdW5jdGlvbiBzKGUpe2UmJmUuZGlzcGF0Y2hDb25maWcucmVnaXN0cmF0aW9uTmFt
ZSYmdShlLl90YXJnZXRJbnN0LG51bGwsZSl9ZnVuY3Rpb24gYyhlKXttKGUsaSl9ZnVuY3Rpb24g
bChlKXttKGUsYSl9ZnVuY3Rpb24gcChlLHQsbixyKXtoLnRyYXZlcnNlRW50ZXJMZWF2ZShuLHIs
dSxlLHQpfWZ1bmN0aW9uIGQoZSl7bShlLHMpfXZhciBmPW4oMTkpLGg9bigzNyksdj1uKDcwKSxt
PW4oNzEpLHk9KG4oMiksZi5nZXRMaXN0ZW5lciksZz17YWNjdW11bGF0ZVR3b1BoYXNlRGlzcGF0
Y2hlczpjLGFjY3VtdWxhdGVUd29QaGFzZURpc3BhdGNoZXNTa2lwVGFyZ2V0OmwsYWNjdW11bGF0
ZURpcmVjdERpc3BhdGNoZXM6ZCxhY2N1bXVsYXRlRW50ZXJMZWF2ZURpc3BhdGNoZXM6cH07ZS5l
eHBvcnRzPWd9LGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO3ZhciBuPXtyZW1vdmU6ZnVuY3Rp
b24oZSl7ZS5fcmVhY3RJbnRlcm5hbEluc3RhbmNlPXZvaWQgMH0sZ2V0OmZ1bmN0aW9uKGUpe3Jl
dHVybiBlLl9yZWFjdEludGVybmFsSW5zdGFuY2V9LGhhczpmdW5jdGlvbihlKXtyZXR1cm4gdm9p
ZCAwIT09ZS5fcmVhY3RJbnRlcm5hbEluc3RhbmNlfSxzZXQ6ZnVuY3Rpb24oZSx0KXtlLl9yZWFj
dEludGVybmFsSW5zdGFuY2U9dH19O2UuZXhwb3J0cz1ufSxmdW5jdGlvbihlLHQsbil7InVzZSBz
dHJpY3QiO2Z1bmN0aW9uIHIoZSx0LG4scil7cmV0dXJuIG8uY2FsbCh0aGlzLGUsdCxuLHIpfXZh
ciBvPW4oMTApLGk9big0NiksYT17dmlldzpmdW5jdGlvbihlKXtpZihlLnZpZXcpcmV0dXJuIGUu
dmlldzt2YXIgdD1pKGUpO2lmKHQud2luZG93PT09dClyZXR1cm4gdDt2YXIgbj10Lm93bmVyRG9j
dW1lbnQ7cmV0dXJuIG4/bi5kZWZhdWx0Vmlld3x8bi5wYXJlbnRXaW5kb3c6d2luZG93fSxkZXRh
aWw6ZnVuY3Rpb24oZSl7cmV0dXJuIGUuZGV0YWlsfHwwfX07by5hdWdtZW50Q2xhc3MocixhKSxl
LmV4cG9ydHM9cn0sMyxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPXt9O2UuZXhw
b3J0cz1yfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJu
IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHYpfHwoZVt2XT1mKysscFtl
W3ZdXT17fSkscFtlW3ZdXX12YXIgbyxpPW4oNCksYT1uKDM2KSx1PW4oMTUyKSxzPW4oNjkpLGM9
bigxODQpLGw9big0NykscD17fSxkPSExLGY9MCxoPXt0b3BBYm9ydDoiYWJvcnQiLHRvcEFuaW1h
dGlvbkVuZDpjKCJhbmltYXRpb25lbmQiKXx8ImFuaW1hdGlvbmVuZCIsdG9wQW5pbWF0aW9uSXRl
cmF0aW9uOmMoImFuaW1hdGlvbml0ZXJhdGlvbiIpfHwiYW5pbWF0aW9uaXRlcmF0aW9uIix0b3BB
bmltYXRpb25TdGFydDpjKCJhbmltYXRpb25zdGFydCIpfHwiYW5pbWF0aW9uc3RhcnQiLHRvcEJs
dXI6ImJsdXIiLHRvcENhblBsYXk6ImNhbnBsYXkiLHRvcENhblBsYXlUaHJvdWdoOiJjYW5wbGF5
dGhyb3VnaCIsdG9wQ2hhbmdlOiJjaGFuZ2UiLHRvcENsaWNrOiJjbGljayIsdG9wQ29tcG9zaXRp
b25FbmQ6ImNvbXBvc2l0aW9uZW5kIix0b3BDb21wb3NpdGlvblN0YXJ0OiJjb21wb3NpdGlvbnN0
YXJ0Iix0b3BDb21wb3NpdGlvblVwZGF0ZToiY29tcG9zaXRpb251cGRhdGUiLHRvcENvbnRleHRN
ZW51OiJjb250ZXh0bWVudSIsdG9wQ29weToiY29weSIsdG9wQ3V0OiJjdXQiLHRvcERvdWJsZUNs
aWNrOiJkYmxjbGljayIsdG9wRHJhZzoiZHJhZyIsdG9wRHJhZ0VuZDoiZHJhZ2VuZCIsdG9wRHJh
Z0VudGVyOiJkcmFnZW50ZXIiLHRvcERyYWdFeGl0OiJkcmFnZXhpdCIsdG9wRHJhZ0xlYXZlOiJk
cmFnbGVhdmUiLHRvcERyYWdPdmVyOiJkcmFnb3ZlciIsdG9wRHJhZ1N0YXJ0OiJkcmFnc3RhcnQi
LHRvcERyb3A6ImRyb3AiLHRvcER1cmF0aW9uQ2hhbmdlOiJkdXJhdGlvbmNoYW5nZSIsdG9wRW1w
dGllZDoiZW1wdGllZCIsdG9wRW5jcnlwdGVkOiJlbmNyeXB0ZWQiLHRvcEVuZGVkOiJlbmRlZCIs
dG9wRXJyb3I6ImVycm9yIix0b3BGb2N1czoiZm9jdXMiLHRvcElucHV0OiJpbnB1dCIsdG9wS2V5
RG93bjoia2V5ZG93biIsdG9wS2V5UHJlc3M6ImtleXByZXNzIix0b3BLZXlVcDoia2V5dXAiLHRv
cExvYWRlZERhdGE6ImxvYWRlZGRhdGEiLHRvcExvYWRlZE1ldGFkYXRhOiJsb2FkZWRtZXRhZGF0
YSIsdG9wTG9hZFN0YXJ0OiJsb2Fkc3RhcnQiLHRvcE1vdXNlRG93bjoibW91c2Vkb3duIix0b3BN
b3VzZU1vdmU6Im1vdXNlbW92ZSIsdG9wTW91c2VPdXQ6Im1vdXNlb3V0Iix0b3BNb3VzZU92ZXI6
Im1vdXNlb3ZlciIsdG9wTW91c2VVcDoibW91c2V1cCIsdG9wUGFzdGU6InBhc3RlIix0b3BQYXVz
ZToicGF1c2UiLHRvcFBsYXk6InBsYXkiLHRvcFBsYXlpbmc6InBsYXlpbmciLHRvcFByb2dyZXNz
OiJwcm9ncmVzcyIsdG9wUmF0ZUNoYW5nZToicmF0ZWNoYW5nZSIsdG9wU2Nyb2xsOiJzY3JvbGwi
LHRvcFNlZWtlZDoic2Vla2VkIix0b3BTZWVraW5nOiJzZWVraW5nIix0b3BTZWxlY3Rpb25DaGFu
Z2U6InNlbGVjdGlvbmNoYW5nZSIsdG9wU3RhbGxlZDoic3RhbGxlZCIsdG9wU3VzcGVuZDoic3Vz
cGVuZCIsdG9wVGV4dElucHV0OiJ0ZXh0SW5wdXQiLHRvcFRpbWVVcGRhdGU6InRpbWV1cGRhdGUi
LHRvcFRvdWNoQ2FuY2VsOiJ0b3VjaGNhbmNlbCIsdG9wVG91Y2hFbmQ6InRvdWNoZW5kIix0b3BU
b3VjaE1vdmU6InRvdWNobW92ZSIsdG9wVG91Y2hTdGFydDoidG91Y2hzdGFydCIsdG9wVHJhbnNp
dGlvbkVuZDpjKCJ0cmFuc2l0aW9uZW5kIil8fCJ0cmFuc2l0aW9uZW5kIix0b3BWb2x1bWVDaGFu
Z2U6InZvbHVtZWNoYW5nZSIsdG9wV2FpdGluZzoid2FpdGluZyIsdG9wV2hlZWw6IndoZWVsIn0s
dj0iX3JlYWN0TGlzdGVuZXJzSUQiK1N0cmluZyhNYXRoLnJhbmRvbSgpKS5zbGljZSgyKSxtPWko
e30sdSx7UmVhY3RFdmVudExpc3RlbmVyOm51bGwsaW5qZWN0aW9uOntpbmplY3RSZWFjdEV2ZW50
TGlzdGVuZXI6ZnVuY3Rpb24oZSl7ZS5zZXRIYW5kbGVUb3BMZXZlbChtLmhhbmRsZVRvcExldmVs
KSxtLlJlYWN0RXZlbnRMaXN0ZW5lcj1lfX0sc2V0RW5hYmxlZDpmdW5jdGlvbihlKXttLlJlYWN0
RXZlbnRMaXN0ZW5lciYmbS5SZWFjdEV2ZW50TGlzdGVuZXIuc2V0RW5hYmxlZChlKX0saXNFbmFi
bGVkOmZ1bmN0aW9uKCl7cmV0dXJuISghbS5SZWFjdEV2ZW50TGlzdGVuZXJ8fCFtLlJlYWN0RXZl
bnRMaXN0ZW5lci5pc0VuYWJsZWQoKSl9LGxpc3RlblRvOmZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBu
PXQsbz1yKG4pLGk9YS5yZWdpc3RyYXRpb25OYW1lRGVwZW5kZW5jaWVzW2VdLHU9MDt1PGkubGVu
Z3RoO3UrKyl7dmFyIHM9aVt1XTtvLmhhc093blByb3BlcnR5KHMpJiZvW3NdfHwoInRvcFdoZWVs
Ij09PXM/bCgid2hlZWwiKT9tLlJlYWN0RXZlbnRMaXN0ZW5lci50cmFwQnViYmxlZEV2ZW50KCJ0
b3BXaGVlbCIsIndoZWVsIixuKTpsKCJtb3VzZXdoZWVsIik/bS5SZWFjdEV2ZW50TGlzdGVuZXIu
dHJhcEJ1YmJsZWRFdmVudCgidG9wV2hlZWwiLCJtb3VzZXdoZWVsIixuKTptLlJlYWN0RXZlbnRM
aXN0ZW5lci50cmFwQnViYmxlZEV2ZW50KCJ0b3BXaGVlbCIsIkRPTU1vdXNlU2Nyb2xsIixuKToi
dG9wU2Nyb2xsIj09PXM/bCgic2Nyb2xsIiwhMCk/bS5SZWFjdEV2ZW50TGlzdGVuZXIudHJhcENh
cHR1cmVkRXZlbnQoInRvcFNjcm9sbCIsInNjcm9sbCIsbik6bS5SZWFjdEV2ZW50TGlzdGVuZXIu
dHJhcEJ1YmJsZWRFdmVudCgidG9wU2Nyb2xsIiwic2Nyb2xsIixtLlJlYWN0RXZlbnRMaXN0ZW5l
ci5XSU5ET1dfSEFORExFKToidG9wRm9jdXMiPT09c3x8InRvcEJsdXIiPT09cz8obCgiZm9jdXMi
LCEwKT8obS5SZWFjdEV2ZW50TGlzdGVuZXIudHJhcENhcHR1cmVkRXZlbnQoInRvcEZvY3VzIiwi
Zm9jdXMiLG4pLG0uUmVhY3RFdmVudExpc3RlbmVyLnRyYXBDYXB0dXJlZEV2ZW50KCJ0b3BCbHVy
IiwiYmx1ciIsbikpOmwoImZvY3VzaW4iKSYmKG0uUmVhY3RFdmVudExpc3RlbmVyLnRyYXBCdWJi
bGVkRXZlbnQoInRvcEZvY3VzIiwiZm9jdXNpbiIsbiksbS5SZWFjdEV2ZW50TGlzdGVuZXIudHJh
cEJ1YmJsZWRFdmVudCgidG9wQmx1ciIsImZvY3Vzb3V0IixuKSksby50b3BCbHVyPSEwLG8udG9w
Rm9jdXM9ITApOmguaGFzT3duUHJvcGVydHkocykmJm0uUmVhY3RFdmVudExpc3RlbmVyLnRyYXBC
dWJibGVkRXZlbnQocyxoW3NdLG4pLG9bc109ITApfX0sdHJhcEJ1YmJsZWRFdmVudDpmdW5jdGlv
bihlLHQsbil7cmV0dXJuIG0uUmVhY3RFdmVudExpc3RlbmVyLnRyYXBCdWJibGVkRXZlbnQoZSx0
LG4pfSx0cmFwQ2FwdHVyZWRFdmVudDpmdW5jdGlvbihlLHQsbil7cmV0dXJuIG0uUmVhY3RFdmVu
dExpc3RlbmVyLnRyYXBDYXB0dXJlZEV2ZW50KGUsdCxuKX0sc3VwcG9ydHNFdmVudFBhZ2VYWTpm
dW5jdGlvbigpe2lmKCFkb2N1bWVudC5jcmVhdGVFdmVudClyZXR1cm4hMTt2YXIgZT1kb2N1bWVu
dC5jcmVhdGVFdmVudCgiTW91c2VFdmVudCIpO3JldHVybiBudWxsIT1lJiYicGFnZVgiaW4gZX0s
ZW5zdXJlU2Nyb2xsVmFsdWVNb25pdG9yaW5nOmZ1bmN0aW9uKCl7aWYodm9pZCAwPT09byYmKG89
bS5zdXBwb3J0c0V2ZW50UGFnZVhZKCkpLCFvJiYhZCl7dmFyIGU9cy5yZWZyZXNoU2Nyb2xsVmFs
dWVzO20uUmVhY3RFdmVudExpc3RlbmVyLm1vbml0b3JTY3JvbGxWYWx1ZShlKSxkPSEwfX19KTtl
LmV4cG9ydHM9bX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCxu
LHIpe3JldHVybiBvLmNhbGwodGhpcyxlLHQsbixyKX12YXIgbz1uKDIyKSxpPW4oNjkpLGE9big0
NSksdT17c2NyZWVuWDpudWxsLHNjcmVlblk6bnVsbCxjbGllbnRYOm51bGwsY2xpZW50WTpudWxs
LGN0cmxLZXk6bnVsbCxzaGlmdEtleTpudWxsLGFsdEtleTpudWxsLG1ldGFLZXk6bnVsbCxnZXRN
b2RpZmllclN0YXRlOmEsYnV0dG9uOmZ1bmN0aW9uKGUpe3ZhciB0PWUuYnV0dG9uO3JldHVybiJ3
aGljaCJpbiBlP3Q6Mj09PXQ/Mjo0PT09dD8xOjB9LGJ1dHRvbnM6bnVsbCxyZWxhdGVkVGFyZ2V0
OmZ1bmN0aW9uKGUpe3JldHVybiBlLnJlbGF0ZWRUYXJnZXR8fChlLmZyb21FbGVtZW50PT09ZS5z
cmNFbGVtZW50P2UudG9FbGVtZW50OmUuZnJvbUVsZW1lbnQpfSxwYWdlWDpmdW5jdGlvbihlKXty
ZXR1cm4icGFnZVgiaW4gZT9lLnBhZ2VYOmUuY2xpZW50WCtpLmN1cnJlbnRTY3JvbGxMZWZ0fSxw
YWdlWTpmdW5jdGlvbihlKXtyZXR1cm4icGFnZVkiaW4gZT9lLnBhZ2VZOmUuY2xpZW50WStpLmN1
cnJlbnRTY3JvbGxUb3B9fTtvLmF1Z21lbnRDbGFzcyhyLHUpLGUuZXhwb3J0cz1yfSxmdW5jdGlv
bihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oMyksbz0obigxKSx7fSksaT17cmVpbml0aWFs
aXplVHJhbnNhY3Rpb246ZnVuY3Rpb24oKXt0aGlzLnRyYW5zYWN0aW9uV3JhcHBlcnM9dGhpcy5n
ZXRUcmFuc2FjdGlvbldyYXBwZXJzKCksdGhpcy53cmFwcGVySW5pdERhdGE/dGhpcy53cmFwcGVy
SW5pdERhdGEubGVuZ3RoPTA6dGhpcy53cmFwcGVySW5pdERhdGE9W10sdGhpcy5faXNJblRyYW5z
YWN0aW9uPSExfSxfaXNJblRyYW5zYWN0aW9uOiExLGdldFRyYW5zYWN0aW9uV3JhcHBlcnM6bnVs
bCxpc0luVHJhbnNhY3Rpb246ZnVuY3Rpb24oKXtyZXR1cm4hIXRoaXMuX2lzSW5UcmFuc2FjdGlv
bn0scGVyZm9ybTpmdW5jdGlvbihlLHQsbixvLGksYSx1LHMpe3RoaXMuaXNJblRyYW5zYWN0aW9u
KCk/cigiMjciKTp2b2lkIDA7dmFyIGMsbDt0cnl7dGhpcy5faXNJblRyYW5zYWN0aW9uPSEwLGM9
ITAsdGhpcy5pbml0aWFsaXplQWxsKDApLGw9ZS5jYWxsKHQsbixvLGksYSx1LHMpLGM9ITF9Zmlu
YWxseXt0cnl7aWYoYyl0cnl7dGhpcy5jbG9zZUFsbCgwKX1jYXRjaChwKXt9ZWxzZSB0aGlzLmNs
b3NlQWxsKDApfWZpbmFsbHl7dGhpcy5faXNJblRyYW5zYWN0aW9uPSExfX1yZXR1cm4gbH0saW5p
dGlhbGl6ZUFsbDpmdW5jdGlvbihlKXtmb3IodmFyIHQ9dGhpcy50cmFuc2FjdGlvbldyYXBwZXJz
LG49ZTtuPHQubGVuZ3RoO24rKyl7dmFyIHI9dFtuXTt0cnl7dGhpcy53cmFwcGVySW5pdERhdGFb
bl09byx0aGlzLndyYXBwZXJJbml0RGF0YVtuXT1yLmluaXRpYWxpemU/ci5pbml0aWFsaXplLmNh
bGwodGhpcyk6bnVsbH1maW5hbGx5e2lmKHRoaXMud3JhcHBlckluaXREYXRhW25dPT09byl0cnl7
dGhpcy5pbml0aWFsaXplQWxsKG4rMSl9Y2F0Y2goaSl7fX19fSxjbG9zZUFsbDpmdW5jdGlvbihl
KXt0aGlzLmlzSW5UcmFuc2FjdGlvbigpP3ZvaWQgMDpyKCIyOCIpO2Zvcih2YXIgdD10aGlzLnRy
YW5zYWN0aW9uV3JhcHBlcnMsbj1lO248dC5sZW5ndGg7bisrKXt2YXIgaSxhPXRbbl0sdT10aGlz
LndyYXBwZXJJbml0RGF0YVtuXTt0cnl7aT0hMCx1IT09byYmYS5jbG9zZSYmYS5jbG9zZS5jYWxs
KHRoaXMsdSksaT0hMX1maW5hbGx5e2lmKGkpdHJ5e3RoaXMuY2xvc2VBbGwobisxKX1jYXRjaChz
KXt9fX10aGlzLndyYXBwZXJJbml0RGF0YS5sZW5ndGg9MH19O2UuZXhwb3J0cz1pfSxmdW5jdGlv
bihlLHQpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKGUpe3ZhciB0PSIiK2Usbj1vLmV4ZWModCk7
aWYoIW4pcmV0dXJuIHQ7dmFyIHIsaT0iIixhPTAsdT0wO2ZvcihhPW4uaW5kZXg7YTx0Lmxlbmd0
aDthKyspe3N3aXRjaCh0LmNoYXJDb2RlQXQoYSkpe2Nhc2UgMzQ6cj0iJnF1b3Q7IjticmVhaztj
YXNlIDM4OnI9IiZhbXA7IjticmVhaztjYXNlIDM5OnI9IiYjeDI3OyI7YnJlYWs7Y2FzZSA2MDpy
PSImbHQ7IjticmVhaztjYXNlIDYyOnI9IiZndDsiO2JyZWFrO2RlZmF1bHQ6Y29udGludWV9dSE9
PWEmJihpKz10LnN1YnN0cmluZyh1LGEpKSx1PWErMSxpKz1yfXJldHVybiB1IT09YT9pK3Quc3Vi
c3RyaW5nKHUsYSk6aX1mdW5jdGlvbiByKGUpe3JldHVybiJib29sZWFuIj09dHlwZW9mIGV8fCJu
dW1iZXIiPT10eXBlb2YgZT8iIitlOm4oZSl9dmFyIG89L1siJyY8Pl0vO2UuZXhwb3J0cz1yfSxm
dW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByLG89big2KSxpPW4oMzUpLGE9L15bIFxy
XG5cdFxmXS8sdT0vPCghLS18bGlua3xub3NjcmlwdHxtZXRhfHNjcmlwdHxzdHlsZSlbIFxyXG5c
dFxmXC8+XS8scz1uKDQzKSxjPXMoZnVuY3Rpb24oZSx0KXtpZihlLm5hbWVzcGFjZVVSSSE9PWku
c3ZnfHwiaW5uZXJIVE1MImluIGUpZS5pbm5lckhUTUw9dDtlbHNle3I9cnx8ZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgiZGl2Iiksci5pbm5lckhUTUw9Ijxzdmc+Iit0KyI8L3N2Zz4iO2Zvcih2YXIg
bj1yLmZpcnN0Q2hpbGQ7bi5maXJzdENoaWxkOyllLmFwcGVuZENoaWxkKG4uZmlyc3RDaGlsZCl9
fSk7aWYoby5jYW5Vc2VET00pe3ZhciBsPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO2wu
aW5uZXJIVE1MPSIgIiwiIj09PWwuaW5uZXJIVE1MJiYoYz1mdW5jdGlvbihlLHQpe2lmKGUucGFy
ZW50Tm9kZSYmZS5wYXJlbnROb2RlLnJlcGxhY2VDaGlsZChlLGUpLGEudGVzdCh0KXx8IjwiPT09
dFswXSYmdS50ZXN0KHQpKXtlLmlubmVySFRNTD1TdHJpbmcuZnJvbUNoYXJDb2RlKDY1Mjc5KSt0
O3ZhciBuPWUuZmlyc3RDaGlsZDsxPT09bi5kYXRhLmxlbmd0aD9lLnJlbW92ZUNoaWxkKG4pOm4u
ZGVsZXRlRGF0YSgwLDEpfWVsc2UgZS5pbm5lckhUTUw9dH0pLGw9bnVsbH1lLmV4cG9ydHM9Y30s
ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3JldHVybiBlJiZlLl9f
ZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX10Ll9fZXNNb2R1bGU9ITAsdC5jb21wb3NlPXQuYXBwbHlN
aWRkbGV3YXJlPXQuYmluZEFjdGlvbkNyZWF0b3JzPXQuY29tYmluZVJlZHVjZXJzPXQuY3JlYXRl
U3RvcmU9dm9pZCAwO3ZhciBvPW4oOTUpLGk9cihvKSxhPW4oMjI3KSx1PXIoYSkscz1uKDIyNiks
Yz1yKHMpLGw9bigyMjUpLHA9cihsKSxkPW4oOTQpLGY9cihkKSxoPW4oOTYpO3IoaCk7dC5jcmVh
dGVTdG9yZT1pLmRlZmF1bHQsdC5jb21iaW5lUmVkdWNlcnM9dS5kZWZhdWx0LHQuYmluZEFjdGlv
bkNyZWF0b3JzPWMuZGVmYXVsdCx0LmFwcGx5TWlkZGxld2FyZT1wLmRlZmF1bHQsdC5jb21wb3Nl
PWYuZGVmYXVsdH0sZnVuY3Rpb24oZSx0LG4pe3ZhciByLG87IWZ1bmN0aW9uKCl7InVzZSBzdHJp
Y3QiO2Z1bmN0aW9uIG4oKXtmb3IodmFyIGU9W10sdD0wO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kysp
e3ZhciByPWFyZ3VtZW50c1t0XTtpZihyKXt2YXIgbz10eXBlb2YgcjtpZigic3RyaW5nIj09PW98
fCJudW1iZXIiPT09byllLnB1c2gocik7ZWxzZSBpZihBcnJheS5pc0FycmF5KHIpKWUucHVzaChu
LmFwcGx5KG51bGwscikpO2Vsc2UgaWYoIm9iamVjdCI9PT1vKWZvcih2YXIgYSBpbiByKWkuY2Fs
bChyLGEpJiZyW2FdJiZlLnB1c2goYSl9fXJldHVybiBlLmpvaW4oIiAiKX12YXIgaT17fS5oYXNP
d25Qcm9wZXJ0eTsidW5kZWZpbmVkIiE9dHlwZW9mIGUmJmUuZXhwb3J0cz9lLmV4cG9ydHM9bjoo
cj1bXSxvPWZ1bmN0aW9uKCl7cmV0dXJuIG59LmFwcGx5KHQsciksISh2b2lkIDAhPT1vJiYoZS5l
eHBvcnRzPW8pKSl9KCl9LGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4oZSx0
KXtyZXR1cm4gZT09PXQ/MCE9PWV8fDAhPT10fHwxL2U9PT0xL3Q6ZSE9PWUmJnQhPT10fWZ1bmN0
aW9uIHIoZSx0KXtpZihuKGUsdCkpcmV0dXJuITA7aWYoIm9iamVjdCIhPXR5cGVvZiBlfHxudWxs
PT09ZXx8Im9iamVjdCIhPXR5cGVvZiB0fHxudWxsPT09dClyZXR1cm4hMTt2YXIgcj1PYmplY3Qu
a2V5cyhlKSxpPU9iamVjdC5rZXlzKHQpO2lmKHIubGVuZ3RoIT09aS5sZW5ndGgpcmV0dXJuITE7
Zm9yKHZhciBhPTA7YTxyLmxlbmd0aDthKyspaWYoIW8uY2FsbCh0LHJbYV0pfHwhbihlW3JbYV1d
LHRbclthXV0pKXJldHVybiExO3JldHVybiEwfXZhciBvPU9iamVjdC5wcm90b3R5cGUuaGFzT3du
UHJvcGVydHk7ZS5leHBvcnRzPXJ9LGZ1bmN0aW9uKGUsdCxuKXtmdW5jdGlvbiByKGUpe2lmKCFh
KGUpfHxvKGUpIT11KXJldHVybiExO3ZhciB0PWkoZSk7aWYobnVsbD09PXQpcmV0dXJuITA7dmFy
IG49cC5jYWxsKHQsImNvbnN0cnVjdG9yIikmJnQuY29uc3RydWN0b3I7cmV0dXJuImZ1bmN0aW9u
Ij09dHlwZW9mIG4mJm4gaW5zdGFuY2VvZiBuJiZsLmNhbGwobik9PWR9dmFyIG89bigxMTIpLGk9
bigxMTQpLGE9bigxMTkpLHU9IltvYmplY3QgT2JqZWN0XSIscz1GdW5jdGlvbi5wcm90b3R5cGUs
Yz1PYmplY3QucHJvdG90eXBlLGw9cy50b1N0cmluZyxwPWMuaGFzT3duUHJvcGVydHksZD1sLmNh
bGwoT2JqZWN0KTtlLmV4cG9ydHM9cn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5j
dGlvbiByKGUsdCl7cmV0dXJuIEFycmF5LmlzQXJyYXkodCkmJih0PXRbMV0pLHQ/dC5uZXh0U2li
bGluZzplLmZpcnN0Q2hpbGR9ZnVuY3Rpb24gbyhlLHQsbil7bC5pbnNlcnRUcmVlQmVmb3JlKGUs
dCxuKX1mdW5jdGlvbiBpKGUsdCxuKXtBcnJheS5pc0FycmF5KHQpP3UoZSx0WzBdLHRbMV0sbik6
dihlLHQsbil9ZnVuY3Rpb24gYShlLHQpe2lmKEFycmF5LmlzQXJyYXkodCkpe3ZhciBuPXRbMV07
dD10WzBdLHMoZSx0LG4pLGUucmVtb3ZlQ2hpbGQobil9ZS5yZW1vdmVDaGlsZCh0KX1mdW5jdGlv
biB1KGUsdCxuLHIpe2Zvcih2YXIgbz10Ozspe3ZhciBpPW8ubmV4dFNpYmxpbmc7aWYodihlLG8s
ciksbz09PW4pYnJlYWs7bz1pfX1mdW5jdGlvbiBzKGUsdCxuKXtmb3IoOzspe3ZhciByPXQubmV4
dFNpYmxpbmc7aWYocj09PW4pYnJlYWs7ZS5yZW1vdmVDaGlsZChyKX19ZnVuY3Rpb24gYyhlLHQs
bil7dmFyIHI9ZS5wYXJlbnROb2RlLG89ZS5uZXh0U2libGluZztvPT09dD9uJiZ2KHIsZG9jdW1l
bnQuY3JlYXRlVGV4dE5vZGUobiksbyk6bj8oaChvLG4pLHMocixvLHQpKTpzKHIsZSx0KX12YXIg
bD1uKDE0KSxwPW4oMTI5KSxkPShuKDUpLG4oOCksbig0MykpLGY9bigyOSksaD1uKDc3KSx2PWQo
ZnVuY3Rpb24oZSx0LG4pe2UuaW5zZXJ0QmVmb3JlKHQsbil9KSxtPXAuZGFuZ2Vyb3VzbHlSZXBs
YWNlTm9kZVdpdGhNYXJrdXAseT17ZGFuZ2Vyb3VzbHlSZXBsYWNlTm9kZVdpdGhNYXJrdXA6bSxy
ZXBsYWNlRGVsaW1pdGVkVGV4dDpjLHByb2Nlc3NVcGRhdGVzOmZ1bmN0aW9uKGUsdCl7Zm9yKHZh
ciBuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciB1PXRbbl07c3dpdGNoKHUudHlwZSl7Y2FzZSJJTlNF
UlRfTUFSS1VQIjpvKGUsdS5jb250ZW50LHIoZSx1LmFmdGVyTm9kZSkpO2JyZWFrO2Nhc2UiTU9W
RV9FWElTVElORyI6aShlLHUuZnJvbU5vZGUscihlLHUuYWZ0ZXJOb2RlKSk7YnJlYWs7Y2FzZSJT
RVRfTUFSS1VQIjpmKGUsdS5jb250ZW50KTticmVhaztjYXNlIlRFWFRfQ09OVEVOVCI6aChlLHUu
Y29udGVudCk7YnJlYWs7Y2FzZSJSRU1PVkVfTk9ERSI6YShlLHUuZnJvbU5vZGUpfX19fTtlLmV4
cG9ydHM9eX0sZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7dmFyIG49e2h0bWw6Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGh0bWwiLG1hdGhtbDoiaHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRo
L01hdGhNTCIsc3ZnOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyJ9O2UuZXhwb3J0cz1ufSxm
dW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoKXtpZih1KWZvcih2YXIgZSBp
biBzKXt2YXIgdD1zW2VdLG49dS5pbmRleE9mKGUpO2lmKG4+LTE/dm9pZCAwOmEoIjk2IixlKSwh
Yy5wbHVnaW5zW25dKXt0LmV4dHJhY3RFdmVudHM/dm9pZCAwOmEoIjk3IixlKSxjLnBsdWdpbnNb
bl09dDt2YXIgcj10LmV2ZW50VHlwZXM7Zm9yKHZhciBpIGluIHIpbyhyW2ldLHQsaSk/dm9pZCAw
OmEoIjk4IixpLGUpfX19ZnVuY3Rpb24gbyhlLHQsbil7Yy5ldmVudE5hbWVEaXNwYXRjaENvbmZp
Z3MuaGFzT3duUHJvcGVydHkobik/YSgiOTkiLG4pOnZvaWQgMCxjLmV2ZW50TmFtZURpc3BhdGNo
Q29uZmlnc1tuXT1lO3ZhciByPWUucGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM7aWYocil7Zm9yKHZh
ciBvIGluIHIpaWYoci5oYXNPd25Qcm9wZXJ0eShvKSl7dmFyIHU9cltvXTtpKHUsdCxuKX1yZXR1
cm4hMH1yZXR1cm4hIWUucmVnaXN0cmF0aW9uTmFtZSYmKGkoZS5yZWdpc3RyYXRpb25OYW1lLHQs
biksITApfWZ1bmN0aW9uIGkoZSx0LG4pe2MucmVnaXN0cmF0aW9uTmFtZU1vZHVsZXNbZV0/YSgi
MTAwIixlKTp2b2lkIDAsYy5yZWdpc3RyYXRpb25OYW1lTW9kdWxlc1tlXT10LGMucmVnaXN0cmF0
aW9uTmFtZURlcGVuZGVuY2llc1tlXT10LmV2ZW50VHlwZXNbbl0uZGVwZW5kZW5jaWVzfXZhciBh
PW4oMyksdT0obigxKSxudWxsKSxzPXt9LGM9e3BsdWdpbnM6W10sZXZlbnROYW1lRGlzcGF0Y2hD
b25maWdzOnt9LHJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVzOnt9LHJlZ2lzdHJhdGlvbk5hbWVEZXBl
bmRlbmNpZXM6e30scG9zc2libGVSZWdpc3RyYXRpb25OYW1lczpudWxsLGluamVjdEV2ZW50UGx1
Z2luT3JkZXI6ZnVuY3Rpb24oZSl7dT9hKCIxMDEiKTp2b2lkIDAsdT1BcnJheS5wcm90b3R5cGUu
c2xpY2UuY2FsbChlKSxyKCl9LGluamVjdEV2ZW50UGx1Z2luc0J5TmFtZTpmdW5jdGlvbihlKXt2
YXIgdD0hMTtmb3IodmFyIG4gaW4gZSlpZihlLmhhc093blByb3BlcnR5KG4pKXt2YXIgbz1lW25d
O3MuaGFzT3duUHJvcGVydHkobikmJnNbbl09PT1vfHwoc1tuXT9hKCIxMDIiLG4pOnZvaWQgMCxz
W25dPW8sdD0hMCl9dCYmcigpfSxnZXRQbHVnaW5Nb2R1bGVGb3JFdmVudDpmdW5jdGlvbihlKXt2
YXIgdD1lLmRpc3BhdGNoQ29uZmlnO2lmKHQucmVnaXN0cmF0aW9uTmFtZSlyZXR1cm4gYy5yZWdp
c3RyYXRpb25OYW1lTW9kdWxlc1t0LnJlZ2lzdHJhdGlvbk5hbWVdfHxudWxsO2lmKHZvaWQgMCE9
PXQucGhhc2VkUmVnaXN0cmF0aW9uTmFtZXMpe3ZhciBuPXQucGhhc2VkUmVnaXN0cmF0aW9uTmFt
ZXM7Zm9yKHZhciByIGluIG4paWYobi5oYXNPd25Qcm9wZXJ0eShyKSl7dmFyIG89Yy5yZWdpc3Ry
YXRpb25OYW1lTW9kdWxlc1tuW3JdXTtpZihvKXJldHVybiBvfX1yZXR1cm4gbnVsbH0sX3Jlc2V0
RXZlbnRQbHVnaW5zOmZ1bmN0aW9uKCl7dT1udWxsO2Zvcih2YXIgZSBpbiBzKXMuaGFzT3duUHJv
cGVydHkoZSkmJmRlbGV0ZSBzW2VdO2MucGx1Z2lucy5sZW5ndGg9MDt2YXIgdD1jLmV2ZW50TmFt
ZURpc3BhdGNoQ29uZmlncztmb3IodmFyIG4gaW4gdCl0Lmhhc093blByb3BlcnR5KG4pJiZkZWxl
dGUgdFtuXTt2YXIgcj1jLnJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVzO2Zvcih2YXIgbyBpbiByKXIu
aGFzT3duUHJvcGVydHkobykmJmRlbGV0ZSByW29dfX07ZS5leHBvcnRzPWN9LGZ1bmN0aW9uKGUs
dCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1cm4idG9wTW91c2VVcCI9PT1lfHwi
dG9wVG91Y2hFbmQiPT09ZXx8InRvcFRvdWNoQ2FuY2VsIj09PWV9ZnVuY3Rpb24gbyhlKXtyZXR1
cm4idG9wTW91c2VNb3ZlIj09PWV8fCJ0b3BUb3VjaE1vdmUiPT09ZX1mdW5jdGlvbiBpKGUpe3Jl
dHVybiJ0b3BNb3VzZURvd24iPT09ZXx8InRvcFRvdWNoU3RhcnQiPT09ZX1mdW5jdGlvbiBhKGUs
dCxuLHIpe3ZhciBvPWUudHlwZXx8InVua25vd24tZXZlbnQiO2UuY3VycmVudFRhcmdldD15Lmdl
dE5vZGVGcm9tSW5zdGFuY2UociksdD92Lmludm9rZUd1YXJkZWRDYWxsYmFja1dpdGhDYXRjaChv
LG4sZSk6di5pbnZva2VHdWFyZGVkQ2FsbGJhY2sobyxuLGUpLGUuY3VycmVudFRhcmdldD1udWxs
fWZ1bmN0aW9uIHUoZSx0KXt2YXIgbj1lLl9kaXNwYXRjaExpc3RlbmVycyxyPWUuX2Rpc3BhdGNo
SW5zdGFuY2VzO2lmKEFycmF5LmlzQXJyYXkobikpZm9yKHZhciBvPTA7bzxuLmxlbmd0aCYmIWUu
aXNQcm9wYWdhdGlvblN0b3BwZWQoKTtvKyspYShlLHQsbltvXSxyW29dKTtlbHNlIG4mJmEoZSx0
LG4scik7ZS5fZGlzcGF0Y2hMaXN0ZW5lcnM9bnVsbCxlLl9kaXNwYXRjaEluc3RhbmNlcz1udWxs
fWZ1bmN0aW9uIHMoZSl7dmFyIHQ9ZS5fZGlzcGF0Y2hMaXN0ZW5lcnMsbj1lLl9kaXNwYXRjaElu
c3RhbmNlcztpZihBcnJheS5pc0FycmF5KHQpKXtmb3IodmFyIHI9MDtyPHQubGVuZ3RoJiYhZS5p
c1Byb3BhZ2F0aW9uU3RvcHBlZCgpO3IrKylpZih0W3JdKGUsbltyXSkpcmV0dXJuIG5bcl19ZWxz
ZSBpZih0JiZ0KGUsbikpcmV0dXJuIG47cmV0dXJuIG51bGx9ZnVuY3Rpb24gYyhlKXt2YXIgdD1z
KGUpO3JldHVybiBlLl9kaXNwYXRjaEluc3RhbmNlcz1udWxsLGUuX2Rpc3BhdGNoTGlzdGVuZXJz
PW51bGwsdH1mdW5jdGlvbiBsKGUpe3ZhciB0PWUuX2Rpc3BhdGNoTGlzdGVuZXJzLG49ZS5fZGlz
cGF0Y2hJbnN0YW5jZXM7QXJyYXkuaXNBcnJheSh0KT9oKCIxMDMiKTp2b2lkIDAsZS5jdXJyZW50
VGFyZ2V0PXQ/eS5nZXROb2RlRnJvbUluc3RhbmNlKG4pOm51bGw7dmFyIHI9dD90KGUpOm51bGw7
cmV0dXJuIGUuY3VycmVudFRhcmdldD1udWxsLGUuX2Rpc3BhdGNoTGlzdGVuZXJzPW51bGwsZS5f
ZGlzcGF0Y2hJbnN0YW5jZXM9bnVsbCxyfWZ1bmN0aW9uIHAoZSl7cmV0dXJuISFlLl9kaXNwYXRj
aExpc3RlbmVyc312YXIgZCxmLGg9bigzKSx2PW4oNDEpLG09KG4oMSksbigyKSx7aW5qZWN0Q29t
cG9uZW50VHJlZTpmdW5jdGlvbihlKXtkPWV9LGluamVjdFRyZWVUcmF2ZXJzYWw6ZnVuY3Rpb24o
ZSl7Zj1lfX0pLHk9e2lzRW5kaXNoOnIsaXNNb3ZlaXNoOm8saXNTdGFydGlzaDppLGV4ZWN1dGVE
aXJlY3REaXNwYXRjaDpsLGV4ZWN1dGVEaXNwYXRjaGVzSW5PcmRlcjp1LGV4ZWN1dGVEaXNwYXRj
aGVzSW5PcmRlclN0b3BBdFRydWU6YyxoYXNEaXNwYXRjaGVzOnAsZ2V0SW5zdGFuY2VGcm9tTm9k
ZTpmdW5jdGlvbihlKXtyZXR1cm4gZC5nZXRJbnN0YW5jZUZyb21Ob2RlKGUpfSxnZXROb2RlRnJv
bUluc3RhbmNlOmZ1bmN0aW9uKGUpe3JldHVybiBkLmdldE5vZGVGcm9tSW5zdGFuY2UoZSl9LGlz
QW5jZXN0b3I6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZi5pc0FuY2VzdG9yKGUsdCl9LGdldExvd2Vz
dENvbW1vbkFuY2VzdG9yOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGYuZ2V0TG93ZXN0Q29tbW9uQW5j
ZXN0b3IoZSx0KX0sZ2V0UGFyZW50SW5zdGFuY2U6ZnVuY3Rpb24oZSl7cmV0dXJuIGYuZ2V0UGFy
ZW50SW5zdGFuY2UoZSl9LHRyYXZlcnNlVHdvUGhhc2U6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBm
LnRyYXZlcnNlVHdvUGhhc2UoZSx0LG4pfSx0cmF2ZXJzZUVudGVyTGVhdmU6ZnVuY3Rpb24oZSx0
LG4scixvKXtyZXR1cm4gZi50cmF2ZXJzZUVudGVyTGVhdmUoZSx0LG4scixvKX0saW5qZWN0aW9u
Om19O2UuZXhwb3J0cz15fSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKGUp
e3ZhciB0PS9bPTpdL2csbj17Ij0iOiI9MCIsIjoiOiI9MiJ9LHI9KCIiK2UpLnJlcGxhY2UodCxm
dW5jdGlvbihlKXtyZXR1cm4gbltlXX0pO3JldHVybiIkIityfWZ1bmN0aW9uIHIoZSl7dmFyIHQ9
Lyg9MHw9MikvZyxuPXsiPTAiOiI9IiwiPTIiOiI6In0scj0iLiI9PT1lWzBdJiYiJCI9PT1lWzFd
P2Uuc3Vic3RyaW5nKDIpOmUuc3Vic3RyaW5nKDEpO3JldHVybigiIityKS5yZXBsYWNlKHQsZnVu
Y3Rpb24oZSl7cmV0dXJuIG5bZV19KX12YXIgbz17ZXNjYXBlOm4sdW5lc2NhcGU6cn07ZS5leHBv
cnRzPW99LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtudWxsIT1l
LmNoZWNrZWRMaW5rJiZudWxsIT1lLnZhbHVlTGluaz91KCI4NyIpOnZvaWQgMH1mdW5jdGlvbiBv
KGUpe3IoZSksbnVsbCE9ZS52YWx1ZXx8bnVsbCE9ZS5vbkNoYW5nZT91KCI4OCIpOnZvaWQgMH1m
dW5jdGlvbiBpKGUpe3IoZSksbnVsbCE9ZS5jaGVja2VkfHxudWxsIT1lLm9uQ2hhbmdlP3UoIjg5
Iik6dm9pZCAwfWZ1bmN0aW9uIGEoZSl7aWYoZSl7dmFyIHQ9ZS5nZXROYW1lKCk7aWYodClyZXR1
cm4iIENoZWNrIHRoZSByZW5kZXIgbWV0aG9kIG9mIGAiK3QrImAuIn1yZXR1cm4iIn12YXIgdT1u
KDMpLHM9bigxNTgpLGM9big1NSksbD1uKDE3KSxwPWMobC5pc1ZhbGlkRWxlbWVudCksZD0obigx
KSxuKDIpLHtidXR0b246ITAsY2hlY2tib3g6ITAsaW1hZ2U6ITAsaGlkZGVuOiEwLHJhZGlvOiEw
LHJlc2V0OiEwLHN1Ym1pdDohMH0pLGY9e3ZhbHVlOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4hZVt0
XXx8ZFtlLnR5cGVdfHxlLm9uQ2hhbmdlfHxlLnJlYWRPbmx5fHxlLmRpc2FibGVkP251bGw6bmV3
IEVycm9yKCJZb3UgcHJvdmlkZWQgYSBgdmFsdWVgIHByb3AgdG8gYSBmb3JtIGZpZWxkIHdpdGhv
dXQgYW4gYG9uQ2hhbmdlYCBoYW5kbGVyLiBUaGlzIHdpbGwgcmVuZGVyIGEgcmVhZC1vbmx5IGZp
ZWxkLiBJZiB0aGUgZmllbGQgc2hvdWxkIGJlIG11dGFibGUgdXNlIGBkZWZhdWx0VmFsdWVgLiBP
dGhlcndpc2UsIHNldCBlaXRoZXIgYG9uQ2hhbmdlYCBvciBgcmVhZE9ubHlgLiIpOwotfSxjaGVj
a2VkOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4hZVt0XXx8ZS5vbkNoYW5nZXx8ZS5yZWFkT25seXx8
ZS5kaXNhYmxlZD9udWxsOm5ldyBFcnJvcigiWW91IHByb3ZpZGVkIGEgYGNoZWNrZWRgIHByb3Ag
dG8gYSBmb3JtIGZpZWxkIHdpdGhvdXQgYW4gYG9uQ2hhbmdlYCBoYW5kbGVyLiBUaGlzIHdpbGwg
cmVuZGVyIGEgcmVhZC1vbmx5IGZpZWxkLiBJZiB0aGUgZmllbGQgc2hvdWxkIGJlIG11dGFibGUg
dXNlIGBkZWZhdWx0Q2hlY2tlZGAuIE90aGVyd2lzZSwgc2V0IGVpdGhlciBgb25DaGFuZ2VgIG9y
IGByZWFkT25seWAuIil9LG9uQ2hhbmdlOnAuZnVuY30saD17fSx2PXtjaGVja1Byb3BUeXBlczpm
dW5jdGlvbihlLHQsbil7Zm9yKHZhciByIGluIGYpe2lmKGYuaGFzT3duUHJvcGVydHkocikpdmFy
IG89ZltyXSh0LHIsZSwicHJvcCIsbnVsbCxzKTtpZihvIGluc3RhbmNlb2YgRXJyb3ImJiEoby5t
ZXNzYWdlIGluIGgpKXtoW28ubWVzc2FnZV09ITA7YShuKX19fSxnZXRWYWx1ZTpmdW5jdGlvbihl
KXtyZXR1cm4gZS52YWx1ZUxpbms/KG8oZSksZS52YWx1ZUxpbmsudmFsdWUpOmUudmFsdWV9LGdl
dENoZWNrZWQ6ZnVuY3Rpb24oZSl7cmV0dXJuIGUuY2hlY2tlZExpbms/KGkoZSksZS5jaGVja2Vk
TGluay52YWx1ZSk6ZS5jaGVja2VkfSxleGVjdXRlT25DaGFuZ2U6ZnVuY3Rpb24oZSx0KXtyZXR1
cm4gZS52YWx1ZUxpbms/KG8oZSksZS52YWx1ZUxpbmsucmVxdWVzdENoYW5nZSh0LnRhcmdldC52
YWx1ZSkpOmUuY2hlY2tlZExpbms/KGkoZSksZS5jaGVja2VkTGluay5yZXF1ZXN0Q2hhbmdlKHQu
dGFyZ2V0LmNoZWNrZWQpKTplLm9uQ2hhbmdlP2Uub25DaGFuZ2UuY2FsbCh2b2lkIDAsdCk6dm9p
ZCAwfX07ZS5leHBvcnRzPXZ9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigz
KSxvPShuKDEpLCExKSxpPXtyZXBsYWNlTm9kZVdpdGhNYXJrdXA6bnVsbCxwcm9jZXNzQ2hpbGRy
ZW5VcGRhdGVzOm51bGwsaW5qZWN0aW9uOntpbmplY3RFbnZpcm9ubWVudDpmdW5jdGlvbihlKXtv
P3IoIjEwNCIpOnZvaWQgMCxpLnJlcGxhY2VOb2RlV2l0aE1hcmt1cD1lLnJlcGxhY2VOb2RlV2l0
aE1hcmt1cCxpLnByb2Nlc3NDaGlsZHJlblVwZGF0ZXM9ZS5wcm9jZXNzQ2hpbGRyZW5VcGRhdGVz
LG89ITB9fX07ZS5leHBvcnRzPWl9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rp
b24gcihlLHQsbil7dHJ5e3Qobil9Y2F0Y2gocil7bnVsbD09PW8mJihvPXIpfX12YXIgbz1udWxs
LGk9e2ludm9rZUd1YXJkZWRDYWxsYmFjazpyLGludm9rZUd1YXJkZWRDYWxsYmFja1dpdGhDYXRj
aDpyLHJldGhyb3dDYXVnaHRFcnJvcjpmdW5jdGlvbigpe2lmKG8pe3ZhciBlPW87dGhyb3cgbz1u
dWxsLGV9fX07ZS5leHBvcnRzPWl9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rp
b24gcihlKXtzLmVucXVldWVVcGRhdGUoZSl9ZnVuY3Rpb24gbyhlKXt2YXIgdD10eXBlb2YgZTtp
Zigib2JqZWN0IiE9PXQpcmV0dXJuIHQ7dmFyIG49ZS5jb25zdHJ1Y3RvciYmZS5jb25zdHJ1Y3Rv
ci5uYW1lfHx0LHI9T2JqZWN0LmtleXMoZSk7cmV0dXJuIHIubGVuZ3RoPjAmJnIubGVuZ3RoPDIw
P24rIiAoa2V5czogIityLmpvaW4oIiwgIikrIikiOm59ZnVuY3Rpb24gaShlLHQpe3ZhciBuPXUu
Z2V0KGUpO2lmKCFuKXtyZXR1cm4gbnVsbH1yZXR1cm4gbn12YXIgYT1uKDMpLHU9KG4oMTEpLG4o
MjEpKSxzPShuKDgpLG4oOSkpLGM9KG4oMSksbigyKSx7aXNNb3VudGVkOmZ1bmN0aW9uKGUpe3Zh
ciB0PXUuZ2V0KGUpO3JldHVybiEhdCYmISF0Ll9yZW5kZXJlZENvbXBvbmVudH0sZW5xdWV1ZUNh
bGxiYWNrOmZ1bmN0aW9uKGUsdCxuKXtjLnZhbGlkYXRlQ2FsbGJhY2sodCxuKTt2YXIgbz1pKGUp
O3JldHVybiBvPyhvLl9wZW5kaW5nQ2FsbGJhY2tzP28uX3BlbmRpbmdDYWxsYmFja3MucHVzaCh0
KTpvLl9wZW5kaW5nQ2FsbGJhY2tzPVt0XSx2b2lkIHIobykpOm51bGx9LGVucXVldWVDYWxsYmFj
a0ludGVybmFsOmZ1bmN0aW9uKGUsdCl7ZS5fcGVuZGluZ0NhbGxiYWNrcz9lLl9wZW5kaW5nQ2Fs
bGJhY2tzLnB1c2godCk6ZS5fcGVuZGluZ0NhbGxiYWNrcz1bdF0scihlKX0sZW5xdWV1ZUZvcmNl
VXBkYXRlOmZ1bmN0aW9uKGUpe3ZhciB0PWkoZSwiZm9yY2VVcGRhdGUiKTt0JiYodC5fcGVuZGlu
Z0ZvcmNlVXBkYXRlPSEwLHIodCkpfSxlbnF1ZXVlUmVwbGFjZVN0YXRlOmZ1bmN0aW9uKGUsdCxu
KXt2YXIgbz1pKGUsInJlcGxhY2VTdGF0ZSIpO28mJihvLl9wZW5kaW5nU3RhdGVRdWV1ZT1bdF0s
by5fcGVuZGluZ1JlcGxhY2VTdGF0ZT0hMCx2b2lkIDAhPT1uJiZudWxsIT09biYmKGMudmFsaWRh
dGVDYWxsYmFjayhuLCJyZXBsYWNlU3RhdGUiKSxvLl9wZW5kaW5nQ2FsbGJhY2tzP28uX3BlbmRp
bmdDYWxsYmFja3MucHVzaChuKTpvLl9wZW5kaW5nQ2FsbGJhY2tzPVtuXSkscihvKSl9LGVucXVl
dWVTZXRTdGF0ZTpmdW5jdGlvbihlLHQpe3ZhciBuPWkoZSwic2V0U3RhdGUiKTtpZihuKXt2YXIg
bz1uLl9wZW5kaW5nU3RhdGVRdWV1ZXx8KG4uX3BlbmRpbmdTdGF0ZVF1ZXVlPVtdKTtvLnB1c2go
dCkscihuKX19LGVucXVldWVFbGVtZW50SW50ZXJuYWw6ZnVuY3Rpb24oZSx0LG4pe2UuX3BlbmRp
bmdFbGVtZW50PXQsZS5fY29udGV4dD1uLHIoZSl9LHZhbGlkYXRlQ2FsbGJhY2s6ZnVuY3Rpb24o
ZSx0KXtlJiYiZnVuY3Rpb24iIT10eXBlb2YgZT9hKCIxMjIiLHQsbyhlKSk6dm9pZCAwfX0pO2Uu
ZXhwb3J0cz1jfSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1mdW5jdGlvbihlKXty
ZXR1cm4idW5kZWZpbmVkIiE9dHlwZW9mIE1TQXBwJiZNU0FwcC5leGVjVW5zYWZlTG9jYWxGdW5j
dGlvbj9mdW5jdGlvbih0LG4scixvKXtNU0FwcC5leGVjVW5zYWZlTG9jYWxGdW5jdGlvbihmdW5j
dGlvbigpe3JldHVybiBlKHQsbixyLG8pfSl9OmV9O2UuZXhwb3J0cz1ufSxmdW5jdGlvbihlLHQp
eyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKGUpe3ZhciB0LG49ZS5rZXlDb2RlO3JldHVybiJjaGFy
Q29kZSJpbiBlPyh0PWUuY2hhckNvZGUsMD09PXQmJjEzPT09biYmKHQ9MTMpKTp0PW4sdD49MzJ8
fDEzPT09dD90OjB9ZS5leHBvcnRzPW59LGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO2Z1bmN0
aW9uIG4oZSl7dmFyIHQ9dGhpcyxuPXQubmF0aXZlRXZlbnQ7aWYobi5nZXRNb2RpZmllclN0YXRl
KXJldHVybiBuLmdldE1vZGlmaWVyU3RhdGUoZSk7dmFyIHI9b1tlXTtyZXR1cm4hIXImJiEhblty
XX1mdW5jdGlvbiByKGUpe3JldHVybiBufXZhciBvPXtBbHQ6ImFsdEtleSIsQ29udHJvbDoiY3Ry
bEtleSIsTWV0YToibWV0YUtleSIsU2hpZnQ6InNoaWZ0S2V5In07ZS5leHBvcnRzPXJ9LGZ1bmN0
aW9uKGUsdCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4oZSl7dmFyIHQ9ZS50YXJnZXR8fGUuc3Jj
RWxlbWVudHx8d2luZG93O3JldHVybiB0LmNvcnJlc3BvbmRpbmdVc2VFbGVtZW50JiYodD10LmNv
cnJlc3BvbmRpbmdVc2VFbGVtZW50KSwzPT09dC5ub2RlVHlwZT90LnBhcmVudE5vZGU6dH1lLmV4
cG9ydHM9bn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCl7aWYo
IWkuY2FuVXNlRE9NfHx0JiYhKCJhZGRFdmVudExpc3RlbmVyImluIGRvY3VtZW50KSlyZXR1cm4h
MTt2YXIgbj0ib24iK2Uscj1uIGluIGRvY3VtZW50O2lmKCFyKXt2YXIgYT1kb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJkaXYiKTthLnNldEF0dHJpYnV0ZShuLCJyZXR1cm47Iikscj0iZnVuY3Rpb24i
PT10eXBlb2YgYVtuXX1yZXR1cm4hciYmbyYmIndoZWVsIj09PWUmJihyPWRvY3VtZW50LmltcGxl
bWVudGF0aW9uLmhhc0ZlYXR1cmUoIkV2ZW50cy53aGVlbCIsIjMuMCIpKSxyfXZhciBvLGk9big2
KTtpLmNhblVzZURPTSYmKG89ZG9jdW1lbnQuaW1wbGVtZW50YXRpb24mJmRvY3VtZW50LmltcGxl
bWVudGF0aW9uLmhhc0ZlYXR1cmUmJmRvY3VtZW50LmltcGxlbWVudGF0aW9uLmhhc0ZlYXR1cmUo
IiIsIiIpIT09ITApLGUuZXhwb3J0cz1yfSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0IjtmdW5j
dGlvbiBuKGUsdCl7dmFyIG49bnVsbD09PWV8fGU9PT0hMSxyPW51bGw9PT10fHx0PT09ITE7aWYo
bnx8cilyZXR1cm4gbj09PXI7dmFyIG89dHlwZW9mIGUsaT10eXBlb2YgdDtyZXR1cm4ic3RyaW5n
Ij09PW98fCJudW1iZXIiPT09bz8ic3RyaW5nIj09PWl8fCJudW1iZXIiPT09aToib2JqZWN0Ij09
PWkmJmUudHlwZT09PXQudHlwZSYmZS5rZXk9PT10LmtleX1lLmV4cG9ydHM9bn0sZnVuY3Rpb24o
ZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj0obig0KSxuKDcpKSxvPShuKDIpLHIpO2UuZXhwb3J0
cz1vfSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKGUpeyJ1bmRlZmluZWQi
IT10eXBlb2YgY29uc29sZSYmImZ1bmN0aW9uIj09dHlwZW9mIGNvbnNvbGUuZXJyb3ImJmNvbnNv
bGUuZXJyb3IoZSk7dHJ5e3Rocm93IG5ldyBFcnJvcihlKX1jYXRjaCh0KXt9fXQuX19lc01vZHVs
ZT0hMCx0LmRlZmF1bHQ9bn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDcp
LG89e2xpc3RlbjpmdW5jdGlvbihlLHQsbil7cmV0dXJuIGUuYWRkRXZlbnRMaXN0ZW5lcj8oZS5h
ZGRFdmVudExpc3RlbmVyKHQsbiwhMSkse3JlbW92ZTpmdW5jdGlvbigpe2UucmVtb3ZlRXZlbnRM
aXN0ZW5lcih0LG4sITEpfX0pOmUuYXR0YWNoRXZlbnQ/KGUuYXR0YWNoRXZlbnQoIm9uIit0LG4p
LHtyZW1vdmU6ZnVuY3Rpb24oKXtlLmRldGFjaEV2ZW50KCJvbiIrdCxuKX19KTp2b2lkIDB9LGNh
cHR1cmU6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBlLmFkZEV2ZW50TGlzdGVuZXI/KGUuYWRkRXZl
bnRMaXN0ZW5lcih0LG4sITApLHtyZW1vdmU6ZnVuY3Rpb24oKXtlLnJlbW92ZUV2ZW50TGlzdGVu
ZXIodCxuLCEwKX19KTp7cmVtb3ZlOnJ9fSxyZWdpc3RlckRlZmF1bHQ6ZnVuY3Rpb24oKXt9fTtl
LmV4cG9ydHM9b30sZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbihlKXt0cnl7
ZS5mb2N1cygpfWNhdGNoKHQpe319ZS5leHBvcnRzPW59LGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJp
Y3QiO2Z1bmN0aW9uIG4oZSl7aWYoZT1lfHwoInVuZGVmaW5lZCIhPXR5cGVvZiBkb2N1bWVudD9k
b2N1bWVudDp2b2lkIDApLCJ1bmRlZmluZWQiPT10eXBlb2YgZSlyZXR1cm4gbnVsbDt0cnl7cmV0
dXJuIGUuYWN0aXZlRWxlbWVudHx8ZS5ib2R5fWNhdGNoKHQpe3JldHVybiBlLmJvZHl9fWUuZXhw
b3J0cz1ufSxmdW5jdGlvbihlLHQsbil7dmFyIHI9bigxMTgpLG89ci5TeW1ib2w7ZS5leHBvcnRz
PW99LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigxMjIpO2UuZXhwb3J0cz1m
dW5jdGlvbihlKXt2YXIgdD0hMTtyZXR1cm4gcihlLHQpfX0sZnVuY3Rpb24oZSx0LG4pe2UuZXhw
b3J0cz1uKDEyMSkoKX0sZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7dmFyIG49IlNFQ1JFVF9E
T19OT1RfUEFTU19USElTX09SX1lPVV9XSUxMX0JFX0ZJUkVEIjtlLmV4cG9ydHM9bn0sZnVuY3Rp
b24oZSx0KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbihlLHQpe3JldHVybiBlK3QuY2hhckF0KDAp
LnRvVXBwZXJDYXNlKCkrdC5zdWJzdHJpbmcoMSl9dmFyIHI9e2FuaW1hdGlvbkl0ZXJhdGlvbkNv
dW50OiEwLGJvcmRlckltYWdlT3V0c2V0OiEwLGJvcmRlckltYWdlU2xpY2U6ITAsYm9yZGVySW1h
Z2VXaWR0aDohMCxib3hGbGV4OiEwLGJveEZsZXhHcm91cDohMCxib3hPcmRpbmFsR3JvdXA6ITAs
Y29sdW1uQ291bnQ6ITAsZmxleDohMCxmbGV4R3JvdzohMCxmbGV4UG9zaXRpdmU6ITAsZmxleFNo
cmluazohMCxmbGV4TmVnYXRpdmU6ITAsZmxleE9yZGVyOiEwLGdyaWRSb3c6ITAsZ3JpZFJvd0Vu
ZDohMCxncmlkUm93U3BhbjohMCxncmlkUm93U3RhcnQ6ITAsZ3JpZENvbHVtbjohMCxncmlkQ29s
dW1uRW5kOiEwLGdyaWRDb2x1bW5TcGFuOiEwLGdyaWRDb2x1bW5TdGFydDohMCxmb250V2VpZ2h0
OiEwLGxpbmVDbGFtcDohMCxsaW5lSGVpZ2h0OiEwLG9wYWNpdHk6ITAsb3JkZXI6ITAsb3JwaGFu
czohMCx0YWJTaXplOiEwLHdpZG93czohMCx6SW5kZXg6ITAsem9vbTohMCxmaWxsT3BhY2l0eToh
MCxmbG9vZE9wYWNpdHk6ITAsc3RvcE9wYWNpdHk6ITAsc3Ryb2tlRGFzaGFycmF5OiEwLHN0cm9r
ZURhc2hvZmZzZXQ6ITAsc3Ryb2tlTWl0ZXJsaW1pdDohMCxzdHJva2VPcGFjaXR5OiEwLHN0cm9r
ZVdpZHRoOiEwfSxvPVsiV2Via2l0IiwibXMiLCJNb3oiLCJPIl07T2JqZWN0LmtleXMocikuZm9y
RWFjaChmdW5jdGlvbihlKXtvLmZvckVhY2goZnVuY3Rpb24odCl7cltuKHQsZSldPXJbZV19KX0p
O3ZhciBpPXtiYWNrZ3JvdW5kOntiYWNrZ3JvdW5kQXR0YWNobWVudDohMCxiYWNrZ3JvdW5kQ29s
b3I6ITAsYmFja2dyb3VuZEltYWdlOiEwLGJhY2tncm91bmRQb3NpdGlvblg6ITAsYmFja2dyb3Vu
ZFBvc2l0aW9uWTohMCxiYWNrZ3JvdW5kUmVwZWF0OiEwfSxiYWNrZ3JvdW5kUG9zaXRpb246e2Jh
Y2tncm91bmRQb3NpdGlvblg6ITAsYmFja2dyb3VuZFBvc2l0aW9uWTohMH0sYm9yZGVyOntib3Jk
ZXJXaWR0aDohMCxib3JkZXJTdHlsZTohMCxib3JkZXJDb2xvcjohMH0sYm9yZGVyQm90dG9tOnti
b3JkZXJCb3R0b21XaWR0aDohMCxib3JkZXJCb3R0b21TdHlsZTohMCxib3JkZXJCb3R0b21Db2xv
cjohMH0sYm9yZGVyTGVmdDp7Ym9yZGVyTGVmdFdpZHRoOiEwLGJvcmRlckxlZnRTdHlsZTohMCxi
b3JkZXJMZWZ0Q29sb3I6ITB9LGJvcmRlclJpZ2h0Ontib3JkZXJSaWdodFdpZHRoOiEwLGJvcmRl
clJpZ2h0U3R5bGU6ITAsYm9yZGVyUmlnaHRDb2xvcjohMH0sYm9yZGVyVG9wOntib3JkZXJUb3BX
aWR0aDohMCxib3JkZXJUb3BTdHlsZTohMCxib3JkZXJUb3BDb2xvcjohMH0sZm9udDp7Zm9udFN0
eWxlOiEwLGZvbnRWYXJpYW50OiEwLGZvbnRXZWlnaHQ6ITAsZm9udFNpemU6ITAsbGluZUhlaWdo
dDohMCxmb250RmFtaWx5OiEwfSxvdXRsaW5lOntvdXRsaW5lV2lkdGg6ITAsb3V0bGluZVN0eWxl
OiEwLG91dGxpbmVDb2xvcjohMH19LGE9e2lzVW5pdGxlc3NOdW1iZXI6cixzaG9ydGhhbmRQcm9w
ZXJ0eUV4cGFuc2lvbnM6aX07ZS5leHBvcnRzPWF9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmlj
dCI7ZnVuY3Rpb24gcihlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJy
b3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfXZhciBvPW4oMyksaT1uKDEz
KSxhPShuKDEpLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSh0KXtyKHRoaXMsZSksdGhpcy5fY2FsbGJh
Y2tzPW51bGwsdGhpcy5fY29udGV4dHM9bnVsbCx0aGlzLl9hcmc9dH1yZXR1cm4gZS5wcm90b3R5
cGUuZW5xdWV1ZT1mdW5jdGlvbihlLHQpe3RoaXMuX2NhbGxiYWNrcz10aGlzLl9jYWxsYmFja3N8
fFtdLHRoaXMuX2NhbGxiYWNrcy5wdXNoKGUpLHRoaXMuX2NvbnRleHRzPXRoaXMuX2NvbnRleHRz
fHxbXSx0aGlzLl9jb250ZXh0cy5wdXNoKHQpfSxlLnByb3RvdHlwZS5ub3RpZnlBbGw9ZnVuY3Rp
b24oKXt2YXIgZT10aGlzLl9jYWxsYmFja3MsdD10aGlzLl9jb250ZXh0cyxuPXRoaXMuX2FyZztp
ZihlJiZ0KXtlLmxlbmd0aCE9PXQubGVuZ3RoP28oIjI0Iik6dm9pZCAwLHRoaXMuX2NhbGxiYWNr
cz1udWxsLHRoaXMuX2NvbnRleHRzPW51bGw7Zm9yKHZhciByPTA7cjxlLmxlbmd0aDtyKyspZVty
XS5jYWxsKHRbcl0sbik7ZS5sZW5ndGg9MCx0Lmxlbmd0aD0wfX0sZS5wcm90b3R5cGUuY2hlY2tw
b2ludD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9jYWxsYmFja3M/dGhpcy5fY2FsbGJhY2tzLmxl
bmd0aDowfSxlLnByb3RvdHlwZS5yb2xsYmFjaz1mdW5jdGlvbihlKXt0aGlzLl9jYWxsYmFja3Mm
JnRoaXMuX2NvbnRleHRzJiYodGhpcy5fY2FsbGJhY2tzLmxlbmd0aD1lLHRoaXMuX2NvbnRleHRz
Lmxlbmd0aD1lKX0sZS5wcm90b3R5cGUucmVzZXQ9ZnVuY3Rpb24oKXt0aGlzLl9jYWxsYmFja3M9
bnVsbCx0aGlzLl9jb250ZXh0cz1udWxsfSxlLnByb3RvdHlwZS5kZXN0cnVjdG9yPWZ1bmN0aW9u
KCl7dGhpcy5yZXNldCgpfSxlfSgpKTtlLmV4cG9ydHM9aS5hZGRQb29saW5nVG8oYSl9LGZ1bmN0
aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1cm4hIWMuaGFzT3duUHJv
cGVydHkoZSl8fCFzLmhhc093blByb3BlcnR5KGUpJiYodS50ZXN0KGUpPyhjW2VdPSEwLCEwKToo
c1tlXT0hMCwhMSkpfWZ1bmN0aW9uIG8oZSx0KXtyZXR1cm4gbnVsbD09dHx8ZS5oYXNCb29sZWFu
VmFsdWUmJiF0fHxlLmhhc051bWVyaWNWYWx1ZSYmaXNOYU4odCl8fGUuaGFzUG9zaXRpdmVOdW1l
cmljVmFsdWUmJnQ8MXx8ZS5oYXNPdmVybG9hZGVkQm9vbGVhblZhbHVlJiZ0PT09ITF9dmFyIGk9
bigxNSksYT0obig1KSxuKDgpLG4oMTg1KSksdT0obigyKSxuZXcgUmVnRXhwKCJeWyIraS5BVFRS
SUJVVEVfTkFNRV9TVEFSVF9DSEFSKyJdWyIraS5BVFRSSUJVVEVfTkFNRV9DSEFSKyJdKiQiKSks
cz17fSxjPXt9LGw9e2NyZWF0ZU1hcmt1cEZvcklEOmZ1bmN0aW9uKGUpe3JldHVybiBpLklEX0FU
VFJJQlVURV9OQU1FKyI9IithKGUpfSxzZXRBdHRyaWJ1dGVGb3JJRDpmdW5jdGlvbihlLHQpe2Uu
c2V0QXR0cmlidXRlKGkuSURfQVRUUklCVVRFX05BTUUsdCl9LGNyZWF0ZU1hcmt1cEZvclJvb3Q6
ZnVuY3Rpb24oKXtyZXR1cm4gaS5ST09UX0FUVFJJQlVURV9OQU1FKyc9IiInfSxzZXRBdHRyaWJ1
dGVGb3JSb290OmZ1bmN0aW9uKGUpe2Uuc2V0QXR0cmlidXRlKGkuUk9PVF9BVFRSSUJVVEVfTkFN
RSwiIil9LGNyZWF0ZU1hcmt1cEZvclByb3BlcnR5OmZ1bmN0aW9uKGUsdCl7dmFyIG49aS5wcm9w
ZXJ0aWVzLmhhc093blByb3BlcnR5KGUpP2kucHJvcGVydGllc1tlXTpudWxsO2lmKG4pe2lmKG8o
bix0KSlyZXR1cm4iIjt2YXIgcj1uLmF0dHJpYnV0ZU5hbWU7cmV0dXJuIG4uaGFzQm9vbGVhblZh
bHVlfHxuLmhhc092ZXJsb2FkZWRCb29sZWFuVmFsdWUmJnQ9PT0hMD9yKyc9IiInOnIrIj0iK2Eo
dCl9cmV0dXJuIGkuaXNDdXN0b21BdHRyaWJ1dGUoZSk/bnVsbD09dD8iIjplKyI9IithKHQpOm51
bGx9LGNyZWF0ZU1hcmt1cEZvckN1c3RvbUF0dHJpYnV0ZTpmdW5jdGlvbihlLHQpe3JldHVybiBy
KGUpJiZudWxsIT10P2UrIj0iK2EodCk6IiJ9LHNldFZhbHVlRm9yUHJvcGVydHk6ZnVuY3Rpb24o
ZSx0LG4pe3ZhciByPWkucHJvcGVydGllcy5oYXNPd25Qcm9wZXJ0eSh0KT9pLnByb3BlcnRpZXNb
dF06bnVsbDtpZihyKXt2YXIgYT1yLm11dGF0aW9uTWV0aG9kO2lmKGEpYShlLG4pO2Vsc2V7aWYo
byhyLG4pKXJldHVybiB2b2lkIHRoaXMuZGVsZXRlVmFsdWVGb3JQcm9wZXJ0eShlLHQpO2lmKHIu
bXVzdFVzZVByb3BlcnR5KWVbci5wcm9wZXJ0eU5hbWVdPW47ZWxzZXt2YXIgdT1yLmF0dHJpYnV0
ZU5hbWUscz1yLmF0dHJpYnV0ZU5hbWVzcGFjZTtzP2Uuc2V0QXR0cmlidXRlTlMocyx1LCIiK24p
OnIuaGFzQm9vbGVhblZhbHVlfHxyLmhhc092ZXJsb2FkZWRCb29sZWFuVmFsdWUmJm49PT0hMD9l
LnNldEF0dHJpYnV0ZSh1LCIiKTplLnNldEF0dHJpYnV0ZSh1LCIiK24pfX19ZWxzZSBpZihpLmlz
Q3VzdG9tQXR0cmlidXRlKHQpKXJldHVybiB2b2lkIGwuc2V0VmFsdWVGb3JBdHRyaWJ1dGUoZSx0
LG4pfSxzZXRWYWx1ZUZvckF0dHJpYnV0ZTpmdW5jdGlvbihlLHQsbil7aWYocih0KSl7bnVsbD09
bj9lLnJlbW92ZUF0dHJpYnV0ZSh0KTplLnNldEF0dHJpYnV0ZSh0LCIiK24pfX0sZGVsZXRlVmFs
dWVGb3JBdHRyaWJ1dGU6ZnVuY3Rpb24oZSx0KXtlLnJlbW92ZUF0dHJpYnV0ZSh0KX0sZGVsZXRl
VmFsdWVGb3JQcm9wZXJ0eTpmdW5jdGlvbihlLHQpe3ZhciBuPWkucHJvcGVydGllcy5oYXNPd25Q
cm9wZXJ0eSh0KT9pLnByb3BlcnRpZXNbdF06bnVsbDtpZihuKXt2YXIgcj1uLm11dGF0aW9uTWV0
aG9kO2lmKHIpcihlLHZvaWQgMCk7ZWxzZSBpZihuLm11c3RVc2VQcm9wZXJ0eSl7dmFyIG89bi5w
cm9wZXJ0eU5hbWU7bi5oYXNCb29sZWFuVmFsdWU/ZVtvXT0hMTplW29dPSIifWVsc2UgZS5yZW1v
dmVBdHRyaWJ1dGUobi5hdHRyaWJ1dGVOYW1lKX1lbHNlIGkuaXNDdXN0b21BdHRyaWJ1dGUodCkm
JmUucmVtb3ZlQXR0cmlidXRlKHQpfX07ZS5leHBvcnRzPWx9LGZ1bmN0aW9uKGUsdCl7InVzZSBz
dHJpY3QiO3ZhciBuPXtoYXNDYWNoZWRDaGlsZE5vZGVzOjF9O2UuZXhwb3J0cz1ufSxmdW5jdGlv
bihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoKXtpZih0aGlzLl9yb290Tm9kZUlEJiZ0
aGlzLl93cmFwcGVyU3RhdGUucGVuZGluZ1VwZGF0ZSl7dGhpcy5fd3JhcHBlclN0YXRlLnBlbmRp
bmdVcGRhdGU9ITE7dmFyIGU9dGhpcy5fY3VycmVudEVsZW1lbnQucHJvcHMsdD11LmdldFZhbHVl
KGUpO251bGwhPXQmJm8odGhpcyxCb29sZWFuKGUubXVsdGlwbGUpLHQpfX1mdW5jdGlvbiBvKGUs
dCxuKXt2YXIgcixvLGk9cy5nZXROb2RlRnJvbUluc3RhbmNlKGUpLm9wdGlvbnM7aWYodCl7Zm9y
KHI9e30sbz0wO288bi5sZW5ndGg7bysrKXJbIiIrbltvXV09ITA7Zm9yKG89MDtvPGkubGVuZ3Ro
O28rKyl7dmFyIGE9ci5oYXNPd25Qcm9wZXJ0eShpW29dLnZhbHVlKTtpW29dLnNlbGVjdGVkIT09
YSYmKGlbb10uc2VsZWN0ZWQ9YSl9fWVsc2V7Zm9yKHI9IiIrbixvPTA7bzxpLmxlbmd0aDtvKysp
aWYoaVtvXS52YWx1ZT09PXIpcmV0dXJuIHZvaWQoaVtvXS5zZWxlY3RlZD0hMCk7aS5sZW5ndGgm
JihpWzBdLnNlbGVjdGVkPSEwKX19ZnVuY3Rpb24gaShlKXt2YXIgdD10aGlzLl9jdXJyZW50RWxl
bWVudC5wcm9wcyxuPXUuZXhlY3V0ZU9uQ2hhbmdlKHQsZSk7cmV0dXJuIHRoaXMuX3Jvb3ROb2Rl
SUQmJih0aGlzLl93cmFwcGVyU3RhdGUucGVuZGluZ1VwZGF0ZT0hMCksYy5hc2FwKHIsdGhpcyks
bn12YXIgYT1uKDQpLHU9bigzOSkscz1uKDUpLGM9big5KSxsPShuKDIpLCExKSxwPXtnZXRIb3N0
UHJvcHM6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gYSh7fSx0LHtvbkNoYW5nZTplLl93cmFwcGVyU3Rh
dGUub25DaGFuZ2UsdmFsdWU6dm9pZCAwfSl9LG1vdW50V3JhcHBlcjpmdW5jdGlvbihlLHQpe3Zh
ciBuPXUuZ2V0VmFsdWUodCk7ZS5fd3JhcHBlclN0YXRlPXtwZW5kaW5nVXBkYXRlOiExLGluaXRp
YWxWYWx1ZTpudWxsIT1uP246dC5kZWZhdWx0VmFsdWUsbGlzdGVuZXJzOm51bGwsb25DaGFuZ2U6
aS5iaW5kKGUpLHdhc011bHRpcGxlOkJvb2xlYW4odC5tdWx0aXBsZSl9LHZvaWQgMD09PXQudmFs
dWV8fHZvaWQgMD09PXQuZGVmYXVsdFZhbHVlfHxsfHwobD0hMCl9LGdldFNlbGVjdFZhbHVlQ29u
dGV4dDpmdW5jdGlvbihlKXtyZXR1cm4gZS5fd3JhcHBlclN0YXRlLmluaXRpYWxWYWx1ZX0scG9z
dFVwZGF0ZVdyYXBwZXI6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5fY3VycmVudEVsZW1lbnQucHJvcHM7
ZS5fd3JhcHBlclN0YXRlLmluaXRpYWxWYWx1ZT12b2lkIDA7dmFyIG49ZS5fd3JhcHBlclN0YXRl
Lndhc011bHRpcGxlO2UuX3dyYXBwZXJTdGF0ZS53YXNNdWx0aXBsZT1Cb29sZWFuKHQubXVsdGlw
bGUpO3ZhciByPXUuZ2V0VmFsdWUodCk7bnVsbCE9cj8oZS5fd3JhcHBlclN0YXRlLnBlbmRpbmdV
cGRhdGU9ITEsbyhlLEJvb2xlYW4odC5tdWx0aXBsZSkscikpOm4hPT1Cb29sZWFuKHQubXVsdGlw
bGUpJiYobnVsbCE9dC5kZWZhdWx0VmFsdWU/byhlLEJvb2xlYW4odC5tdWx0aXBsZSksdC5kZWZh
dWx0VmFsdWUpOm8oZSxCb29sZWFuKHQubXVsdGlwbGUpLHQubXVsdGlwbGU/W106IiIpKX19O2Uu
ZXhwb3J0cz1wfSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0Ijt2YXIgbixyPXtpbmplY3RFbXB0
eUNvbXBvbmVudEZhY3Rvcnk6ZnVuY3Rpb24oZSl7bj1lfX0sbz17Y3JlYXRlOmZ1bmN0aW9uKGUp
e3JldHVybiBuKGUpfX07by5pbmplY3Rpb249cixlLmV4cG9ydHM9b30sZnVuY3Rpb24oZSx0KXsi
dXNlIHN0cmljdCI7dmFyIG49e2xvZ1RvcExldmVsUmVuZGVyczohMX07ZS5leHBvcnRzPW59LGZ1
bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1cm4gdT92b2lkIDA6
YSgiMTExIixlLnR5cGUpLG5ldyB1KGUpfWZ1bmN0aW9uIG8oZSl7cmV0dXJuIG5ldyBzKGUpfWZ1
bmN0aW9uIGkoZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiBzfXZhciBhPW4oMyksdT0obigxKSxudWxs
KSxzPW51bGwsYz17aW5qZWN0R2VuZXJpY0NvbXBvbmVudENsYXNzOmZ1bmN0aW9uKGUpe3U9ZX0s
aW5qZWN0VGV4dENvbXBvbmVudENsYXNzOmZ1bmN0aW9uKGUpe3M9ZX19LGw9e2NyZWF0ZUludGVy
bmFsQ29tcG9uZW50OnIsY3JlYXRlSW5zdGFuY2VGb3JUZXh0Om8saXNUZXh0Q29tcG9uZW50Omks
aW5qZWN0aW9uOmN9O2UuZXhwb3J0cz1sfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1
bmN0aW9uIHIoZSl7cmV0dXJuIGkoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LGUpfXZhciBvPW4o
MTQ1KSxpPW4oMTAwKSxhPW4oNTIpLHU9big1Mykscz17aGFzU2VsZWN0aW9uQ2FwYWJpbGl0aWVz
OmZ1bmN0aW9uKGUpe3ZhciB0PWUmJmUubm9kZU5hbWUmJmUubm9kZU5hbWUudG9Mb3dlckNhc2Uo
KTtyZXR1cm4gdCYmKCJpbnB1dCI9PT10JiYidGV4dCI9PT1lLnR5cGV8fCJ0ZXh0YXJlYSI9PT10
fHwidHJ1ZSI9PT1lLmNvbnRlbnRFZGl0YWJsZSl9LGdldFNlbGVjdGlvbkluZm9ybWF0aW9uOmZ1
bmN0aW9uKCl7dmFyIGU9dSgpO3JldHVybntmb2N1c2VkRWxlbTplLHNlbGVjdGlvblJhbmdlOnMu
aGFzU2VsZWN0aW9uQ2FwYWJpbGl0aWVzKGUpP3MuZ2V0U2VsZWN0aW9uKGUpOm51bGx9fSxyZXN0
b3JlU2VsZWN0aW9uOmZ1bmN0aW9uKGUpe3ZhciB0PXUoKSxuPWUuZm9jdXNlZEVsZW0sbz1lLnNl
bGVjdGlvblJhbmdlO3QhPT1uJiZyKG4pJiYocy5oYXNTZWxlY3Rpb25DYXBhYmlsaXRpZXMobikm
JnMuc2V0U2VsZWN0aW9uKG4sbyksYShuKSl9LGdldFNlbGVjdGlvbjpmdW5jdGlvbihlKXt2YXIg
dDtpZigic2VsZWN0aW9uU3RhcnQiaW4gZSl0PXtzdGFydDplLnNlbGVjdGlvblN0YXJ0LGVuZDpl
LnNlbGVjdGlvbkVuZH07ZWxzZSBpZihkb2N1bWVudC5zZWxlY3Rpb24mJmUubm9kZU5hbWUmJiJp
bnB1dCI9PT1lLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkpe3ZhciBuPWRvY3VtZW50LnNlbGVjdGlv
bi5jcmVhdGVSYW5nZSgpO24ucGFyZW50RWxlbWVudCgpPT09ZSYmKHQ9e3N0YXJ0Oi1uLm1vdmVT
dGFydCgiY2hhcmFjdGVyIiwtZS52YWx1ZS5sZW5ndGgpLGVuZDotbi5tb3ZlRW5kKCJjaGFyYWN0
ZXIiLC1lLnZhbHVlLmxlbmd0aCl9KX1lbHNlIHQ9by5nZXRPZmZzZXRzKGUpO3JldHVybiB0fHx7
c3RhcnQ6MCxlbmQ6MH19LHNldFNlbGVjdGlvbjpmdW5jdGlvbihlLHQpe3ZhciBuPXQuc3RhcnQs
cj10LmVuZDtpZih2b2lkIDA9PT1yJiYocj1uKSwic2VsZWN0aW9uU3RhcnQiaW4gZSllLnNlbGVj
dGlvblN0YXJ0PW4sZS5zZWxlY3Rpb25FbmQ9TWF0aC5taW4ocixlLnZhbHVlLmxlbmd0aCk7ZWxz
ZSBpZihkb2N1bWVudC5zZWxlY3Rpb24mJmUubm9kZU5hbWUmJiJpbnB1dCI9PT1lLm5vZGVOYW1l
LnRvTG93ZXJDYXNlKCkpe3ZhciBpPWUuY3JlYXRlVGV4dFJhbmdlKCk7aS5jb2xsYXBzZSghMCks
aS5tb3ZlU3RhcnQoImNoYXJhY3RlciIsbiksaS5tb3ZlRW5kKCJjaGFyYWN0ZXIiLHItbiksaS5z
ZWxlY3QoKX1lbHNlIG8uc2V0T2Zmc2V0cyhlLHQpfX07ZS5leHBvcnRzPXN9LGZ1bmN0aW9uKGUs
dCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQpe2Zvcih2YXIgbj1NYXRoLm1pbihlLmxl
bmd0aCx0Lmxlbmd0aCkscj0wO3I8bjtyKyspaWYoZS5jaGFyQXQocikhPT10LmNoYXJBdChyKSly
ZXR1cm4gcjtyZXR1cm4gZS5sZW5ndGg9PT10Lmxlbmd0aD8tMTpufWZ1bmN0aW9uIG8oZSl7cmV0
dXJuIGU/ZS5ub2RlVHlwZT09PUE/ZS5kb2N1bWVudEVsZW1lbnQ6ZS5maXJzdENoaWxkOm51bGx9
ZnVuY3Rpb24gaShlKXtyZXR1cm4gZS5nZXRBdHRyaWJ1dGUmJmUuZ2V0QXR0cmlidXRlKE4pfHwi
In1mdW5jdGlvbiBhKGUsdCxuLHIsbyl7dmFyIGk7aWYoQy5sb2dUb3BMZXZlbFJlbmRlcnMpe3Zh
ciBhPWUuX2N1cnJlbnRFbGVtZW50LnByb3BzLmNoaWxkLHU9YS50eXBlO2k9IlJlYWN0IG1vdW50
OiAiKygic3RyaW5nIj09dHlwZW9mIHU/dTp1LmRpc3BsYXlOYW1lfHx1Lm5hbWUpLGNvbnNvbGUu
dGltZShpKX12YXIgcz1ULm1vdW50Q29tcG9uZW50KGUsbixudWxsLGIoZSx0KSxvLDApO2kmJmNv
bnNvbGUudGltZUVuZChpKSxlLl9yZW5kZXJlZENvbXBvbmVudC5fdG9wTGV2ZWxXcmFwcGVyPWUs
Ri5fbW91bnRJbWFnZUludG9Ob2RlKHMsdCxlLHIsbil9ZnVuY3Rpb24gdShlLHQsbixyKXt2YXIg
bz14LlJlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb24uZ2V0UG9vbGVkKCFuJiZfLnVzZUNyZWF0ZUVs
ZW1lbnQpO28ucGVyZm9ybShhLG51bGwsZSx0LG8sbixyKSx4LlJlYWN0UmVjb25jaWxlVHJhbnNh
Y3Rpb24ucmVsZWFzZShvKX1mdW5jdGlvbiBzKGUsdCxuKXtmb3IoVC51bm1vdW50Q29tcG9uZW50
KGUsbiksdC5ub2RlVHlwZT09PUEmJih0PXQuZG9jdW1lbnRFbGVtZW50KTt0Lmxhc3RDaGlsZDsp
dC5yZW1vdmVDaGlsZCh0Lmxhc3RDaGlsZCl9ZnVuY3Rpb24gYyhlKXt2YXIgdD1vKGUpO2lmKHQp
e3ZhciBuPWcuZ2V0SW5zdGFuY2VGcm9tTm9kZSh0KTtyZXR1cm4hKCFufHwhbi5faG9zdFBhcmVu
dCl9fWZ1bmN0aW9uIGwoZSl7cmV0dXJuISghZXx8ZS5ub2RlVHlwZSE9PVImJmUubm9kZVR5cGUh
PT1BJiZlLm5vZGVUeXBlIT09RCl9ZnVuY3Rpb24gcChlKXt2YXIgdD1vKGUpLG49dCYmZy5nZXRJ
bnN0YW5jZUZyb21Ob2RlKHQpO3JldHVybiBuJiYhbi5faG9zdFBhcmVudD9uOm51bGx9ZnVuY3Rp
b24gZChlKXt2YXIgdD1wKGUpO3JldHVybiB0P3QuX2hvc3RDb250YWluZXJJbmZvLl90b3BMZXZl
bFdyYXBwZXI6bnVsbH12YXIgZj1uKDMpLGg9bigxNCksdj1uKDE1KSxtPW4oMTcpLHk9bigyNSks
Zz0obigxMSksbig1KSksYj1uKDEzOSksXz1uKDE0MSksQz1uKDY0KSxFPW4oMjEpLHc9KG4oOCks
bigxNTUpKSxUPW4oMTYpLFA9big0MikseD1uKDkpLE89bigyNCksUz1uKDc1KSxrPShuKDEpLG4o
MjkpKSxNPW4oNDgpLE49KG4oMiksdi5JRF9BVFRSSUJVVEVfTkFNRSksST12LlJPT1RfQVRUUklC
VVRFX05BTUUsUj0xLEE9OSxEPTExLGo9e30sTD0xLFU9ZnVuY3Rpb24oKXt0aGlzLnJvb3RJRD1M
Kyt9O1UucHJvdG90eXBlLmlzUmVhY3RDb21wb25lbnQ9e30sVS5wcm90b3R5cGUucmVuZGVyPWZ1
bmN0aW9uKCl7cmV0dXJuIHRoaXMucHJvcHMuY2hpbGR9LFUuaXNSZWFjdFRvcExldmVsV3JhcHBl
cj0hMDt2YXIgRj17VG9wTGV2ZWxXcmFwcGVyOlUsX2luc3RhbmNlc0J5UmVhY3RSb290SUQ6aixz
Y3JvbGxNb25pdG9yOmZ1bmN0aW9uKGUsdCl7dCgpfSxfdXBkYXRlUm9vdENvbXBvbmVudDpmdW5j
dGlvbihlLHQsbixyLG8pe3JldHVybiBGLnNjcm9sbE1vbml0b3IocixmdW5jdGlvbigpe1AuZW5x
dWV1ZUVsZW1lbnRJbnRlcm5hbChlLHQsbiksbyYmUC5lbnF1ZXVlQ2FsbGJhY2tJbnRlcm5hbChl
LG8pfSksZX0sX3JlbmRlck5ld1Jvb3RDb21wb25lbnQ6ZnVuY3Rpb24oZSx0LG4scil7bCh0KT92
b2lkIDA6ZigiMzciKSx5LmVuc3VyZVNjcm9sbFZhbHVlTW9uaXRvcmluZygpO3ZhciBvPVMoZSwh
MSk7eC5iYXRjaGVkVXBkYXRlcyh1LG8sdCxuLHIpO3ZhciBpPW8uX2luc3RhbmNlLnJvb3RJRDty
ZXR1cm4galtpXT1vLG99LHJlbmRlclN1YnRyZWVJbnRvQ29udGFpbmVyOmZ1bmN0aW9uKGUsdCxu
LHIpe3JldHVybiBudWxsIT1lJiZFLmhhcyhlKT92b2lkIDA6ZigiMzgiKSxGLl9yZW5kZXJTdWJ0
cmVlSW50b0NvbnRhaW5lcihlLHQsbixyKX0sX3JlbmRlclN1YnRyZWVJbnRvQ29udGFpbmVyOmZ1
bmN0aW9uKGUsdCxuLHIpe1AudmFsaWRhdGVDYWxsYmFjayhyLCJSZWFjdERPTS5yZW5kZXIiKSxt
LmlzVmFsaWRFbGVtZW50KHQpP3ZvaWQgMDpmKCIzOSIsInN0cmluZyI9PXR5cGVvZiB0PyIgSW5z
dGVhZCBvZiBwYXNzaW5nIGEgc3RyaW5nIGxpa2UgJ2RpdicsIHBhc3MgUmVhY3QuY3JlYXRlRWxl
bWVudCgnZGl2Jykgb3IgPGRpdiAvPi4iOiJmdW5jdGlvbiI9PXR5cGVvZiB0PyIgSW5zdGVhZCBv
ZiBwYXNzaW5nIGEgY2xhc3MgbGlrZSBGb28sIHBhc3MgUmVhY3QuY3JlYXRlRWxlbWVudChGb28p
IG9yIDxGb28gLz4uIjpudWxsIT10JiZ2b2lkIDAhPT10LnByb3BzPyIgVGhpcyBtYXkgYmUgY2F1
c2VkIGJ5IHVuaW50ZW50aW9uYWxseSBsb2FkaW5nIHR3byBpbmRlcGVuZGVudCBjb3BpZXMgb2Yg
UmVhY3QuIjoiIik7dmFyIGEsdT1tLmNyZWF0ZUVsZW1lbnQoVSx7Y2hpbGQ6dH0pO2lmKGUpe3Zh
ciBzPUUuZ2V0KGUpO2E9cy5fcHJvY2Vzc0NoaWxkQ29udGV4dChzLl9jb250ZXh0KX1lbHNlIGE9
Tzt2YXIgbD1kKG4pO2lmKGwpe3ZhciBwPWwuX2N1cnJlbnRFbGVtZW50LGg9cC5wcm9wcy5jaGls
ZDtpZihNKGgsdCkpe3ZhciB2PWwuX3JlbmRlcmVkQ29tcG9uZW50LmdldFB1YmxpY0luc3RhbmNl
KCkseT1yJiZmdW5jdGlvbigpe3IuY2FsbCh2KX07cmV0dXJuIEYuX3VwZGF0ZVJvb3RDb21wb25l
bnQobCx1LGEsbix5KSx2fUYudW5tb3VudENvbXBvbmVudEF0Tm9kZShuKX12YXIgZz1vKG4pLGI9
ZyYmISFpKGcpLF89YyhuKSxDPWImJiFsJiYhXyx3PUYuX3JlbmRlck5ld1Jvb3RDb21wb25lbnQo
dSxuLEMsYSkuX3JlbmRlcmVkQ29tcG9uZW50LmdldFB1YmxpY0luc3RhbmNlKCk7cmV0dXJuIHIm
JnIuY2FsbCh3KSx3fSxyZW5kZXI6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBGLl9yZW5kZXJTdWJ0
cmVlSW50b0NvbnRhaW5lcihudWxsLGUsdCxuKX0sdW5tb3VudENvbXBvbmVudEF0Tm9kZTpmdW5j
dGlvbihlKXtsKGUpP3ZvaWQgMDpmKCI0MCIpO3ZhciB0PWQoZSk7aWYoIXQpe2MoZSksMT09PWUu
bm9kZVR5cGUmJmUuaGFzQXR0cmlidXRlKEkpO3JldHVybiExfXJldHVybiBkZWxldGUgalt0Ll9p
bnN0YW5jZS5yb290SURdLHguYmF0Y2hlZFVwZGF0ZXMocyx0LGUsITEpLCEwfSxfbW91bnRJbWFn
ZUludG9Ob2RlOmZ1bmN0aW9uKGUsdCxuLGksYSl7aWYobCh0KT92b2lkIDA6ZigiNDEiKSxpKXt2
YXIgdT1vKHQpO2lmKHcuY2FuUmV1c2VNYXJrdXAoZSx1KSlyZXR1cm4gdm9pZCBnLnByZWNhY2hl
Tm9kZShuLHUpO3ZhciBzPXUuZ2V0QXR0cmlidXRlKHcuQ0hFQ0tTVU1fQVRUUl9OQU1FKTt1LnJl
bW92ZUF0dHJpYnV0ZSh3LkNIRUNLU1VNX0FUVFJfTkFNRSk7dmFyIGM9dS5vdXRlckhUTUw7dS5z
ZXRBdHRyaWJ1dGUody5DSEVDS1NVTV9BVFRSX05BTUUscyk7dmFyIHA9ZSxkPXIocCxjKSx2PSIg
KGNsaWVudCkgIitwLnN1YnN0cmluZyhkLTIwLGQrMjApKyJcbiAoc2VydmVyKSAiK2Muc3Vic3Ry
aW5nKGQtMjAsZCsyMCk7dC5ub2RlVHlwZT09PUE/ZigiNDIiLHYpOnZvaWQgMH1pZih0Lm5vZGVU
eXBlPT09QT9mKCI0MyIpOnZvaWQgMCxhLnVzZUNyZWF0ZUVsZW1lbnQpe2Zvcig7dC5sYXN0Q2hp
bGQ7KXQucmVtb3ZlQ2hpbGQodC5sYXN0Q2hpbGQpO2guaW5zZXJ0VHJlZUJlZm9yZSh0LGUsbnVs
bCl9ZWxzZSBrKHQsZSksZy5wcmVjYWNoZU5vZGUobix0LmZpcnN0Q2hpbGQpfX07ZS5leHBvcnRz
PUZ9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigzKSxvPW4oMTcpLGk9KG4o
MSkse0hPU1Q6MCxDT01QT1NJVEU6MSxFTVBUWToyLGdldFR5cGU6ZnVuY3Rpb24oZSl7cmV0dXJu
IG51bGw9PT1lfHxlPT09ITE/aS5FTVBUWTpvLmlzVmFsaWRFbGVtZW50KGUpPyJmdW5jdGlvbiI9
PXR5cGVvZiBlLnR5cGU/aS5DT01QT1NJVEU6aS5IT1NUOnZvaWQgcigiMjYiLGUpfX0pO2UuZXhw
b3J0cz1pfSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj17Y3VycmVudFNjcm9sbExl
ZnQ6MCxjdXJyZW50U2Nyb2xsVG9wOjAscmVmcmVzaFNjcm9sbFZhbHVlczpmdW5jdGlvbihlKXtu
LmN1cnJlbnRTY3JvbGxMZWZ0PWUueCxuLmN1cnJlbnRTY3JvbGxUb3A9ZS55fX07ZS5leHBvcnRz
PW59LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQpe3JldHVybiBu
dWxsPT10P28oIjMwIik6dm9pZCAwLG51bGw9PWU/dDpBcnJheS5pc0FycmF5KGUpP0FycmF5Lmlz
QXJyYXkodCk/KGUucHVzaC5hcHBseShlLHQpLGUpOihlLnB1c2godCksZSk6QXJyYXkuaXNBcnJh
eSh0KT9bZV0uY29uY2F0KHQpOltlLHRdfXZhciBvPW4oMyk7bigxKTtlLmV4cG9ydHM9cn0sZnVu
Y3Rpb24oZSx0KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbihlLHQsbil7QXJyYXkuaXNBcnJheShl
KT9lLmZvckVhY2godCxuKTplJiZ0LmNhbGwobixlKX1lLmV4cG9ydHM9bn0sZnVuY3Rpb24oZSx0
LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe2Zvcih2YXIgdDsodD1lLl9yZW5kZXJlZE5v
ZGVUeXBlKT09PW8uQ09NUE9TSVRFOyllPWUuX3JlbmRlcmVkQ29tcG9uZW50O3JldHVybiB0PT09
by5IT1NUP2UuX3JlbmRlcmVkQ29tcG9uZW50OnQ9PT1vLkVNUFRZP251bGw6dm9pZCAwfXZhciBv
PW4oNjgpO2UuZXhwb3J0cz1yfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9u
IHIoKXtyZXR1cm4haSYmby5jYW5Vc2VET00mJihpPSJ0ZXh0Q29udGVudCJpbiBkb2N1bWVudC5k
b2N1bWVudEVsZW1lbnQ/InRleHRDb250ZW50IjoiaW5uZXJUZXh0IiksaX12YXIgbz1uKDYpLGk9
bnVsbDtlLmV4cG9ydHM9cn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBy
KGUpe3ZhciB0PWUudHlwZSxuPWUubm9kZU5hbWU7cmV0dXJuIG4mJiJpbnB1dCI9PT1uLnRvTG93
ZXJDYXNlKCkmJigiY2hlY2tib3giPT09dHx8InJhZGlvIj09PXQpfWZ1bmN0aW9uIG8oZSl7cmV0
dXJuIGUuX3dyYXBwZXJTdGF0ZS52YWx1ZVRyYWNrZXJ9ZnVuY3Rpb24gaShlLHQpe2UuX3dyYXBw
ZXJTdGF0ZS52YWx1ZVRyYWNrZXI9dH1mdW5jdGlvbiBhKGUpe2RlbGV0ZSBlLl93cmFwcGVyU3Rh
dGUudmFsdWVUcmFja2VyfWZ1bmN0aW9uIHUoZSl7dmFyIHQ7cmV0dXJuIGUmJih0PXIoZSk/IiIr
ZS5jaGVja2VkOmUudmFsdWUpLHR9dmFyIHM9big1KSxjPXtfZ2V0VHJhY2tlckZyb21Ob2RlOmZ1
bmN0aW9uKGUpe3JldHVybiBvKHMuZ2V0SW5zdGFuY2VGcm9tTm9kZShlKSl9LHRyYWNrOmZ1bmN0
aW9uKGUpe2lmKCFvKGUpKXt2YXIgdD1zLmdldE5vZGVGcm9tSW5zdGFuY2UoZSksbj1yKHQpPyJj
aGVja2VkIjoidmFsdWUiLHU9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LmNvbnN0
cnVjdG9yLnByb3RvdHlwZSxuKSxjPSIiK3Rbbl07dC5oYXNPd25Qcm9wZXJ0eShuKXx8ImZ1bmN0
aW9uIiE9dHlwZW9mIHUuZ2V0fHwiZnVuY3Rpb24iIT10eXBlb2YgdS5zZXR8fChPYmplY3QuZGVm
aW5lUHJvcGVydHkodCxuLHtlbnVtZXJhYmxlOnUuZW51bWVyYWJsZSxjb25maWd1cmFibGU6ITAs
Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHUuZ2V0LmNhbGwodGhpcyl9LHNldDpmdW5jdGlvbihlKXtj
PSIiK2UsdS5zZXQuY2FsbCh0aGlzLGUpfX0pLGkoZSx7Z2V0VmFsdWU6ZnVuY3Rpb24oKXtyZXR1
cm4gY30sc2V0VmFsdWU6ZnVuY3Rpb24oZSl7Yz0iIitlfSxzdG9wVHJhY2tpbmc6ZnVuY3Rpb24o
KXthKGUpLGRlbGV0ZSB0W25dfX0pKX19LHVwZGF0ZVZhbHVlSWZDaGFuZ2VkOmZ1bmN0aW9uKGUp
e2lmKCFlKXJldHVybiExO3ZhciB0PW8oZSk7aWYoIXQpcmV0dXJuIGMudHJhY2soZSksITA7dmFy
IG49dC5nZXRWYWx1ZSgpLHI9dShzLmdldE5vZGVGcm9tSW5zdGFuY2UoZSkpO3JldHVybiByIT09
biYmKHQuc2V0VmFsdWUociksITApfSxzdG9wVHJhY2tpbmc6ZnVuY3Rpb24oZSl7dmFyIHQ9byhl
KTt0JiZ0LnN0b3BUcmFja2luZygpfX07ZS5leHBvcnRzPWN9LGZ1bmN0aW9uKGUsdCxuKXsidXNl
IHN0cmljdCI7ZnVuY3Rpb24gcihlKXtpZihlKXt2YXIgdD1lLmdldE5hbWUoKTtpZih0KXJldHVy
biIgQ2hlY2sgdGhlIHJlbmRlciBtZXRob2Qgb2YgYCIrdCsiYC4ifXJldHVybiIifWZ1bmN0aW9u
IG8oZSl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGUmJiJ1bmRlZmluZWQiIT10eXBlb2YgZS5w
cm90b3R5cGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBlLnByb3RvdHlwZS5tb3VudENvbXBvbmVudCYm
ImZ1bmN0aW9uIj09dHlwZW9mIGUucHJvdG90eXBlLnJlY2VpdmVDb21wb25lbnR9ZnVuY3Rpb24g
aShlLHQpe3ZhciBuO2lmKG51bGw9PT1lfHxlPT09ITEpbj1jLmNyZWF0ZShpKTtlbHNlIGlmKCJv
YmplY3QiPT10eXBlb2YgZSl7dmFyIHU9ZSxzPXUudHlwZTtpZigiZnVuY3Rpb24iIT10eXBlb2Yg
cyYmInN0cmluZyIhPXR5cGVvZiBzKXt2YXIgZD0iIjtkKz1yKHUuX293bmVyKSxhKCIxMzAiLG51
bGw9PXM/czp0eXBlb2YgcyxkKX0ic3RyaW5nIj09dHlwZW9mIHUudHlwZT9uPWwuY3JlYXRlSW50
ZXJuYWxDb21wb25lbnQodSk6byh1LnR5cGUpPyhuPW5ldyB1LnR5cGUodSksbi5nZXRIb3N0Tm9k
ZXx8KG4uZ2V0SG9zdE5vZGU9bi5nZXROYXRpdmVOb2RlKSk6bj1uZXcgcCh1KX1lbHNlInN0cmlu
ZyI9PXR5cGVvZiBlfHwibnVtYmVyIj09dHlwZW9mIGU/bj1sLmNyZWF0ZUluc3RhbmNlRm9yVGV4
dChlKTphKCIxMzEiLHR5cGVvZiBlKTtyZXR1cm4gbi5fbW91bnRJbmRleD0wLG4uX21vdW50SW1h
Z2U9bnVsbCxufXZhciBhPW4oMyksdT1uKDQpLHM9bigxMzYpLGM9big2MyksbD1uKDY1KSxwPShu
KDIyMSksbigxKSxuKDIpLGZ1bmN0aW9uKGUpe3RoaXMuY29uc3RydWN0KGUpfSk7dShwLnByb3Rv
dHlwZSxzLHtfaW5zdGFudGlhdGVSZWFjdENvbXBvbmVudDppfSksZS5leHBvcnRzPWl9LGZ1bmN0
aW9uKGUsdCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4oZSl7dmFyIHQ9ZSYmZS5ub2RlTmFtZSYm
ZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO3JldHVybiJpbnB1dCI9PT10PyEhcltlLnR5cGVdOiJ0
ZXh0YXJlYSI9PT10fXZhciByPXtjb2xvcjohMCxkYXRlOiEwLGRhdGV0aW1lOiEwLCJkYXRldGlt
ZS1sb2NhbCI6ITAsZW1haWw6ITAsbW9udGg6ITAsbnVtYmVyOiEwLHBhc3N3b3JkOiEwLHJhbmdl
OiEwLHNlYXJjaDohMCx0ZWw6ITAsdGV4dDohMCx0aW1lOiEwLHVybDohMCx3ZWVrOiEwfTtlLmV4
cG9ydHM9bn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDYpLG89bigyOCks
aT1uKDI5KSxhPWZ1bmN0aW9uKGUsdCl7aWYodCl7dmFyIG49ZS5maXJzdENoaWxkO2lmKG4mJm49
PT1lLmxhc3RDaGlsZCYmMz09PW4ubm9kZVR5cGUpcmV0dXJuIHZvaWQobi5ub2RlVmFsdWU9dCl9
ZS50ZXh0Q29udGVudD10fTtyLmNhblVzZURPTSYmKCJ0ZXh0Q29udGVudCJpbiBkb2N1bWVudC5k
b2N1bWVudEVsZW1lbnR8fChhPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIDM9PT1lLm5vZGVUeXBlP3Zv
aWQoZS5ub2RlVmFsdWU9dCk6dm9pZCBpKGUsbyh0KSl9KSksZS5leHBvcnRzPWF9LGZ1bmN0aW9u
KGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQpe3JldHVybiBlJiYib2JqZWN0Ij09
dHlwZW9mIGUmJm51bGwhPWUua2V5P2MuZXNjYXBlKGUua2V5KTp0LnRvU3RyaW5nKDM2KX1mdW5j
dGlvbiBvKGUsdCxuLGkpe3ZhciBkPXR5cGVvZiBlO2lmKCJ1bmRlZmluZWQiIT09ZCYmImJvb2xl
YW4iIT09ZHx8KGU9bnVsbCksbnVsbD09PWV8fCJzdHJpbmciPT09ZHx8Im51bWJlciI9PT1kfHwi
b2JqZWN0Ij09PWQmJmUuJCR0eXBlb2Y9PT11KXJldHVybiBuKGksZSwiIj09PXQ/bCtyKGUsMCk6
dCksMTt2YXIgZixoLHY9MCxtPSIiPT09dD9sOnQrcDtpZihBcnJheS5pc0FycmF5KGUpKWZvcih2
YXIgeT0wO3k8ZS5sZW5ndGg7eSsrKWY9ZVt5XSxoPW0rcihmLHkpLHYrPW8oZixoLG4saSk7ZWxz
ZXt2YXIgZz1zKGUpO2lmKGcpe3ZhciBiLF89Zy5jYWxsKGUpO2lmKGchPT1lLmVudHJpZXMpZm9y
KHZhciBDPTA7IShiPV8ubmV4dCgpKS5kb25lOylmPWIudmFsdWUsaD1tK3IoZixDKyspLHYrPW8o
ZixoLG4saSk7ZWxzZSBmb3IoOyEoYj1fLm5leHQoKSkuZG9uZTspe3ZhciBFPWIudmFsdWU7RSYm
KGY9RVsxXSxoPW0rYy5lc2NhcGUoRVswXSkrcCtyKGYsMCksdis9byhmLGgsbixpKSl9fWVsc2Ug
aWYoIm9iamVjdCI9PT1kKXt2YXIgdz0iIixUPVN0cmluZyhlKTthKCIzMSIsIltvYmplY3QgT2Jq
ZWN0XSI9PT1UPyJvYmplY3Qgd2l0aCBrZXlzIHsiK09iamVjdC5rZXlzKGUpLmpvaW4oIiwgIikr
In0iOlQsdyl9fXJldHVybiB2fWZ1bmN0aW9uIGkoZSx0LG4pe3JldHVybiBudWxsPT1lPzA6byhl
LCIiLHQsbil9dmFyIGE9bigzKSx1PShuKDExKSxuKDE1MSkpLHM9bigxODIpLGM9KG4oMSksbigz
OCkpLGw9KG4oMiksIi4iKSxwPSI6IjtlLmV4cG9ydHM9aX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ug
c3RyaWN0IjtmdW5jdGlvbiByKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDpl
fX1mdW5jdGlvbiBvKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJv
cigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gaShlLHQpe2lm
KCFlKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNl
ZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIXR8fCJvYmplY3QiIT10eXBl
b2YgdCYmImZ1bmN0aW9uIiE9dHlwZW9mIHQ/ZTp0fWZ1bmN0aW9uIGEoZSx0KXtpZigiZnVuY3Rp
b24iIT10eXBlb2YgdCYmbnVsbCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVz
c2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCAiK3R5cGVvZiB0KTtl
LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFs
dWU6ZSxlbnVtZXJhYmxlOiExLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSx0JiYoT2Jq
ZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZihlLHQpOmUuX19wcm90b19f
PXQpfWZ1bmN0aW9uIHUoZSx0KXt2YXIgbj17fTtmb3IodmFyIHIgaW4gZSl0LmluZGV4T2Yocik+
PTB8fE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHIpJiYobltyXT1lW3Jd
KTtyZXR1cm4gbn1mdW5jdGlvbiBzKCl7fWZ1bmN0aW9uIGMoZSx0KXt2YXIgbj17cnVuOmZ1bmN0
aW9uKHIpe3RyeXt2YXIgbz1lKHQuZ2V0U3RhdGUoKSxyKTsobyE9PW4ucHJvcHN8fG4uZXJyb3Ip
JiYobi5zaG91bGRDb21wb25lbnRVcGRhdGU9ITAsbi5wcm9wcz1vLG4uZXJyb3I9bnVsbCl9Y2F0
Y2goaSl7bi5zaG91bGRDb21wb25lbnRVcGRhdGU9ITAsbi5lcnJvcj1pfX19O3JldHVybiBufWZ1
bmN0aW9uIGwoZSl7dmFyIHQsbixyPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1l
bnRzWzFdP2FyZ3VtZW50c1sxXTp7fSxsPXIuZ2V0RGlzcGxheU5hbWUsZD12b2lkIDA9PT1sP2Z1
bmN0aW9uKGUpe3JldHVybiJDb25uZWN0QWR2YW5jZWQoIitlKyIpIn06bCxoPXIubWV0aG9kTmFt
ZSx5PXZvaWQgMD09PWg/ImNvbm5lY3RBZHZhbmNlZCI6aCxFPXIucmVuZGVyQ291bnRQcm9wLHc9
dm9pZCAwPT09RT92b2lkIDA6RSxUPXIuc2hvdWxkSGFuZGxlU3RhdGVDaGFuZ2VzLFA9dm9pZCAw
PT09VHx8VCx4PXIuc3RvcmVLZXksTz12b2lkIDA9PT14PyJzdG9yZSI6eCxTPXIud2l0aFJlZixr
PXZvaWQgMCE9PVMmJlMsTT11KHIsWyJnZXREaXNwbGF5TmFtZSIsIm1ldGhvZE5hbWUiLCJyZW5k
ZXJDb3VudFByb3AiLCJzaG91bGRIYW5kbGVTdGF0ZUNoYW5nZXMiLCJzdG9yZUtleSIsIndpdGhS
ZWYiXSksTj1PKyJTdWJzY3JpcHRpb24iLEk9XysrLFI9KHQ9e30sdFtPXT1iLnN0b3JlU2hhcGUs
dFtOXT1iLnN1YnNjcmlwdGlvblNoYXBlLHQpLEE9KG49e30sbltOXT1iLnN1YnNjcmlwdGlvblNo
YXBlLG4pO3JldHVybiBmdW5jdGlvbih0KXsoMCx2LmRlZmF1bHQpKCJmdW5jdGlvbiI9PXR5cGVv
ZiB0LCJZb3UgbXVzdCBwYXNzIGEgY29tcG9uZW50IHRvIHRoZSBmdW5jdGlvbiByZXR1cm5lZCBi
eSBjb25uZWN0LiBJbnN0ZWFkIHJlY2VpdmVkICIrSlNPTi5zdHJpbmdpZnkodCkpO3ZhciBuPXQu
ZGlzcGxheU5hbWV8fHQubmFtZXx8IkNvbXBvbmVudCIscj1kKG4pLHU9cCh7fSxNLHtnZXREaXNw
bGF5TmFtZTpkLG1ldGhvZE5hbWU6eSxyZW5kZXJDb3VudFByb3A6dyxzaG91bGRIYW5kbGVTdGF0
ZUNoYW5nZXM6UCxzdG9yZUtleTpPLHdpdGhSZWY6ayxkaXNwbGF5TmFtZTpyLHdyYXBwZWRDb21w
b25lbnROYW1lOm4sV3JhcHBlZENvbXBvbmVudDp0fSksbD1mdW5jdGlvbihuKXtmdW5jdGlvbiBs
KGUsdCl7byh0aGlzLGwpO3ZhciBhPWkodGhpcyxuLmNhbGwodGhpcyxlLHQpKTtyZXR1cm4gYS52
ZXJzaW9uPUksYS5zdGF0ZT17fSxhLnJlbmRlckNvdW50PTAsYS5zdG9yZT1lW09dfHx0W09dLGEu
cHJvcHNNb2RlPUJvb2xlYW4oZVtPXSksYS5zZXRXcmFwcGVkSW5zdGFuY2U9YS5zZXRXcmFwcGVk
SW5zdGFuY2UuYmluZChhKSwoMCx2LmRlZmF1bHQpKGEuc3RvcmUsJ0NvdWxkIG5vdCBmaW5kICIn
K08rJyIgaW4gZWl0aGVyIHRoZSBjb250ZXh0IG9yIHByb3BzIG9mICcrKCciJytyKyciLiBFaXRo
ZXIgd3JhcCB0aGUgcm9vdCBjb21wb25lbnQgaW4gYSA8UHJvdmlkZXI+LCAnKSsoJ29yIGV4cGxp
Y2l0bHkgcGFzcyAiJytPKyciIGFzIGEgcHJvcCB0byAiJytyKyciLicpKSxhLmluaXRTZWxlY3Rv
cigpLGEuaW5pdFN1YnNjcmlwdGlvbigpLGF9cmV0dXJuIGEobCxuKSxsLnByb3RvdHlwZS5nZXRD
aGlsZENvbnRleHQ9ZnVuY3Rpb24oKXt2YXIgZSx0PXRoaXMucHJvcHNNb2RlP251bGw6dGhpcy5z
dWJzY3JpcHRpb247cmV0dXJuIGU9e30sZVtOXT10fHx0aGlzLmNvbnRleHRbTl0sZX0sbC5wcm90
b3R5cGUuY29tcG9uZW50RGlkTW91bnQ9ZnVuY3Rpb24oKXtQJiYodGhpcy5zdWJzY3JpcHRpb24u
dHJ5U3Vic2NyaWJlKCksdGhpcy5zZWxlY3Rvci5ydW4odGhpcy5wcm9wcyksdGhpcy5zZWxlY3Rv
ci5zaG91bGRDb21wb25lbnRVcGRhdGUmJnRoaXMuZm9yY2VVcGRhdGUoKSl9LGwucHJvdG90eXBl
LmNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHM9ZnVuY3Rpb24oZSl7dGhpcy5zZWxlY3Rvci5ydW4o
ZSl9LGwucHJvdG90eXBlLnNob3VsZENvbXBvbmVudFVwZGF0ZT1mdW5jdGlvbigpe3JldHVybiB0
aGlzLnNlbGVjdG9yLnNob3VsZENvbXBvbmVudFVwZGF0ZX0sbC5wcm90b3R5cGUuY29tcG9uZW50
V2lsbFVubW91bnQ9ZnVuY3Rpb24oKXt0aGlzLnN1YnNjcmlwdGlvbiYmdGhpcy5zdWJzY3JpcHRp
b24udHJ5VW5zdWJzY3JpYmUoKSx0aGlzLnN1YnNjcmlwdGlvbj1udWxsLHRoaXMubm90aWZ5TmVz
dGVkU3Vicz1zLHRoaXMuc3RvcmU9bnVsbCx0aGlzLnNlbGVjdG9yLnJ1bj1zLHRoaXMuc2VsZWN0
b3Iuc2hvdWxkQ29tcG9uZW50VXBkYXRlPSExfSxsLnByb3RvdHlwZS5nZXRXcmFwcGVkSW5zdGFu
Y2U9ZnVuY3Rpb24oKXtyZXR1cm4oMCx2LmRlZmF1bHQpKGssIlRvIGFjY2VzcyB0aGUgd3JhcHBl
ZCBpbnN0YW5jZSwgeW91IG5lZWQgdG8gc3BlY2lmeSAiKygieyB3aXRoUmVmOiB0cnVlIH0gaW4g
dGhlIG9wdGlvbnMgYXJndW1lbnQgb2YgdGhlICIreSsiKCkgY2FsbC4iKSksdGhpcy53cmFwcGVk
SW5zdGFuY2V9LGwucHJvdG90eXBlLnNldFdyYXBwZWRJbnN0YW5jZT1mdW5jdGlvbihlKXt0aGlz
LndyYXBwZWRJbnN0YW5jZT1lfSxsLnByb3RvdHlwZS5pbml0U2VsZWN0b3I9ZnVuY3Rpb24oKXt2
YXIgdD1lKHRoaXMuc3RvcmUuZGlzcGF0Y2gsdSk7dGhpcy5zZWxlY3Rvcj1jKHQsdGhpcy5zdG9y
ZSksdGhpcy5zZWxlY3Rvci5ydW4odGhpcy5wcm9wcyl9LGwucHJvdG90eXBlLmluaXRTdWJzY3Jp
cHRpb249ZnVuY3Rpb24oKXtpZihQKXt2YXIgZT0odGhpcy5wcm9wc01vZGU/dGhpcy5wcm9wczp0
aGlzLmNvbnRleHQpW05dO3RoaXMuc3Vic2NyaXB0aW9uPW5ldyBnLmRlZmF1bHQodGhpcy5zdG9y
ZSxlLHRoaXMub25TdGF0ZUNoYW5nZS5iaW5kKHRoaXMpKSx0aGlzLm5vdGlmeU5lc3RlZFN1YnM9
dGhpcy5zdWJzY3JpcHRpb24ubm90aWZ5TmVzdGVkU3Vicy5iaW5kKHRoaXMuc3Vic2NyaXB0aW9u
KX19LGwucHJvdG90eXBlLm9uU3RhdGVDaGFuZ2U9ZnVuY3Rpb24oKXt0aGlzLnNlbGVjdG9yLnJ1
bih0aGlzLnByb3BzKSx0aGlzLnNlbGVjdG9yLnNob3VsZENvbXBvbmVudFVwZGF0ZT8odGhpcy5j
b21wb25lbnREaWRVcGRhdGU9dGhpcy5ub3RpZnlOZXN0ZWRTdWJzT25Db21wb25lbnREaWRVcGRh
dGUsdGhpcy5zZXRTdGF0ZShDKSk6dGhpcy5ub3RpZnlOZXN0ZWRTdWJzKCl9LGwucHJvdG90eXBl
Lm5vdGlmeU5lc3RlZFN1YnNPbkNvbXBvbmVudERpZFVwZGF0ZT1mdW5jdGlvbigpe3RoaXMuY29t
cG9uZW50RGlkVXBkYXRlPXZvaWQgMCx0aGlzLm5vdGlmeU5lc3RlZFN1YnMoKX0sbC5wcm90b3R5
cGUuaXNTdWJzY3JpYmVkPWZ1bmN0aW9uKCl7cmV0dXJuIEJvb2xlYW4odGhpcy5zdWJzY3JpcHRp
b24pJiZ0aGlzLnN1YnNjcmlwdGlvbi5pc1N1YnNjcmliZWQoKX0sbC5wcm90b3R5cGUuYWRkRXh0
cmFQcm9wcz1mdW5jdGlvbihlKXtpZighKGt8fHd8fHRoaXMucHJvcHNNb2RlJiZ0aGlzLnN1YnNj
cmlwdGlvbikpcmV0dXJuIGU7dmFyIHQ9cCh7fSxlKTtyZXR1cm4gayYmKHQucmVmPXRoaXMuc2V0
V3JhcHBlZEluc3RhbmNlKSx3JiYodFt3XT10aGlzLnJlbmRlckNvdW50KyspLHRoaXMucHJvcHNN
b2RlJiZ0aGlzLnN1YnNjcmlwdGlvbiYmKHRbTl09dGhpcy5zdWJzY3JpcHRpb24pLHR9LGwucHJv
dG90eXBlLnJlbmRlcj1mdW5jdGlvbigpe3ZhciBlPXRoaXMuc2VsZWN0b3I7aWYoZS5zaG91bGRD
b21wb25lbnRVcGRhdGU9ITEsZS5lcnJvcil0aHJvdyBlLmVycm9yO3JldHVybigwLG0uY3JlYXRl
RWxlbWVudCkodCx0aGlzLmFkZEV4dHJhUHJvcHMoZS5wcm9wcykpfSxsfShtLkNvbXBvbmVudCk7
cmV0dXJuIGwuV3JhcHBlZENvbXBvbmVudD10LGwuZGlzcGxheU5hbWU9cixsLmNoaWxkQ29udGV4
dFR5cGVzPUEsbC5jb250ZXh0VHlwZXM9UixsLnByb3BUeXBlcz1SLCgwLGYuZGVmYXVsdCkobCx0
KX19dC5fX2VzTW9kdWxlPSEwO3ZhciBwPU9iamVjdC5hc3NpZ258fGZ1bmN0aW9uKGUpe2Zvcih2
YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPWFyZ3VtZW50c1t0XTtmb3IodmFy
IHIgaW4gbilPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobixyKSYmKGVbcl09
bltyXSl9cmV0dXJuIGV9O3QuZGVmYXVsdD1sO3ZhciBkPW4oMTEwKSxmPXIoZCksaD1uKDExMSks
dj1yKGgpLG09bigxMikseT1uKDE5NCksZz1yKHkpLGI9big4MiksXz0wLEM9e319LGZ1bmN0aW9u
KGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxl
P2U6e2RlZmF1bHQ6ZX19ZnVuY3Rpb24gbyhlKXtyZXR1cm4gZnVuY3Rpb24odCxuKXtmdW5jdGlv
biByKCl7cmV0dXJuIG99dmFyIG89ZSh0LG4pO3JldHVybiByLmRlcGVuZHNPbk93blByb3BzPSEx
LHJ9fWZ1bmN0aW9uIGkoZSl7cmV0dXJuIG51bGwhPT1lLmRlcGVuZHNPbk93blByb3BzJiZ2b2lk
IDAhPT1lLmRlcGVuZHNPbk93blByb3BzP0Jvb2xlYW4oZS5kZXBlbmRzT25Pd25Qcm9wcyk6MSE9
PWUubGVuZ3RofWZ1bmN0aW9uIGEoZSx0KXtyZXR1cm4gZnVuY3Rpb24odCxuKXt2YXIgcj0obi5k
aXNwbGF5TmFtZSxmdW5jdGlvbihlLHQpe3JldHVybiByLmRlcGVuZHNPbk93blByb3BzP3IubWFw
VG9Qcm9wcyhlLHQpOnIubWFwVG9Qcm9wcyhlKX0pO3JldHVybiByLmRlcGVuZHNPbk93blByb3Bz
PSEwLHIubWFwVG9Qcm9wcz1mdW5jdGlvbih0LG4pe3IubWFwVG9Qcm9wcz1lLHIuZGVwZW5kc09u
T3duUHJvcHM9aShlKTt2YXIgbz1yKHQsbik7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIG8mJihy
Lm1hcFRvUHJvcHM9byxyLmRlcGVuZHNPbk93blByb3BzPWkobyksbz1yKHQsbikpLG99LHJ9fXQu
X19lc01vZHVsZT0hMCx0LndyYXBNYXBUb1Byb3BzQ29uc3RhbnQ9byx0LmdldERlcGVuZHNPbk93
blByb3BzPWksdC53cmFwTWFwVG9Qcm9wc0Z1bmM9YTt2YXIgdT1uKDgzKTtyKHUpfSxmdW5jdGlv
bihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVs
ZT9lOntkZWZhdWx0OmV9fXQuX19lc01vZHVsZT0hMCx0LmNvbm5lY3Q9dC5jb25uZWN0QWR2YW5j
ZWQ9dC5jcmVhdGVQcm92aWRlcj10LlByb3ZpZGVyPXZvaWQgMDt2YXIgbz1uKDE4NyksaT1yKG8p
LGE9big3OSksdT1yKGEpLHM9bigxODgpLGM9cihzKTt0LlByb3ZpZGVyPWkuZGVmYXVsdCx0LmNy
ZWF0ZVByb3ZpZGVyPW8uY3JlYXRlUHJvdmlkZXIsdC5jb25uZWN0QWR2YW5jZWQ9dS5kZWZhdWx0
LHQuY29ubmVjdD1jLmRlZmF1bHR9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rp
b24gcihlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19dC5fX2VzTW9kdWxl
PSEwLHQuc3RvcmVTaGFwZT10LnN1YnNjcmlwdGlvblNoYXBlPXZvaWQgMDt2YXIgbz1uKDU2KSxp
PXIobyk7dC5zdWJzY3JpcHRpb25TaGFwZT1pLmRlZmF1bHQuc2hhcGUoe3RyeVN1YnNjcmliZTpp
LmRlZmF1bHQuZnVuYy5pc1JlcXVpcmVkLHRyeVVuc3Vic2NyaWJlOmkuZGVmYXVsdC5mdW5jLmlz
UmVxdWlyZWQsbm90aWZ5TmVzdGVkU3ViczppLmRlZmF1bHQuZnVuYy5pc1JlcXVpcmVkLGlzU3Vi
c2NyaWJlZDppLmRlZmF1bHQuZnVuYy5pc1JlcXVpcmVkfSksdC5zdG9yZVNoYXBlPWkuZGVmYXVs
dC5zaGFwZSh7c3Vic2NyaWJlOmkuZGVmYXVsdC5mdW5jLmlzUmVxdWlyZWQsZGlzcGF0Y2g6aS5k
ZWZhdWx0LmZ1bmMuaXNSZXF1aXJlZCxnZXRTdGF0ZTppLmRlZmF1bHQuZnVuYy5pc1JlcXVpcmVk
fSl9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1cm4gZSYm
ZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19ZnVuY3Rpb24gbyhlLHQsbil7KDAsYS5kZWZhdWx0
KShlKXx8KDAscy5kZWZhdWx0KShuKyIoKSBpbiAiK3QrIiBtdXN0IHJldHVybiBhIHBsYWluIG9i
amVjdC4gSW5zdGVhZCByZWNlaXZlZCAiK2UrIi4iKX10Ll9fZXNNb2R1bGU9ITAsdC5kZWZhdWx0
PW87dmFyIGk9bigzMyksYT1yKGkpLHU9big1MCkscz1yKHUpfSxmdW5jdGlvbihlLHQsbil7InVz
ZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0
OmV9fWZ1bmN0aW9uIG8oZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVy
cm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1mdW5jdGlvbiBpKGUsdCl7
aWYoIWUpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxp
c2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4hdHx8Im9iamVjdCIhPXR5
cGVvZiB0JiYiZnVuY3Rpb24iIT10eXBlb2YgdD9lOnR9ZnVuY3Rpb24gYShlLHQpe2lmKCJmdW5j
dGlvbiIhPXR5cGVvZiB0JiZudWxsIT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHBy
ZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90ICIrdHlwZW9mIHQp
O2UucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2
YWx1ZTplLGVudW1lcmFibGU6ITEsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLHQmJihP
YmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mKGUsdCk6ZS5fX3Byb3Rv
X189dCl9T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3Zh
ciB1PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQpe2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisr
KXt2YXIgcj10W25dO3IuZW51bWVyYWJsZT1yLmVudW1lcmFibGV8fCExLHIuY29uZmlndXJhYmxl
PSEwLCJ2YWx1ZSJpbiByJiYoci53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUs
ci5rZXkscil9fXJldHVybiBmdW5jdGlvbih0LG4scil7cmV0dXJuIG4mJmUodC5wcm90b3R5cGUs
biksciYmZSh0LHIpLHR9fSgpLHM9bigxMiksYz1yKHMpLGw9bigzMSkscD1yKGwpLGQ9ZnVuY3Rp
b24oZSl7ZnVuY3Rpb24gdCgpe3ZhciBlLG4scixhO28odGhpcyx0KTtmb3IodmFyIHU9YXJndW1l
bnRzLmxlbmd0aCxzPUFycmF5KHUpLGM9MDtjPHU7YysrKXNbY109YXJndW1lbnRzW2NdO3JldHVy
biBuPXI9aSh0aGlzLChlPXQuX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YodCkpLmNh
bGwuYXBwbHkoZSxbdGhpc10uY29uY2F0KHMpKSksci5zdGF0ZT17dGV4dDpyLnByb3BzLnRleHR8
fCIifSxyLmhhbmRsZVN1Ym1pdD1mdW5jdGlvbihlKXt2YXIgdD1lLnRhcmdldC52YWx1ZS50cmlt
KCk7MTM9PT1lLndoaWNoJiYoci5wcm9wcy5vblNhdmUodCksci5wcm9wcy5uZXdUb2RvJiZyLnNl
dFN0YXRlKHt0ZXh0OiIifSkpfSxyLmhhbmRsZUNoYW5nZT1mdW5jdGlvbihlKXtyLnNldFN0YXRl
KHt0ZXh0OmUudGFyZ2V0LnZhbHVlfSl9LHIuaGFuZGxlQmx1cj1mdW5jdGlvbihlKXtyLnByb3Bz
Lm5ld1RvZG98fHIucHJvcHMub25TYXZlKGUudGFyZ2V0LnZhbHVlKX0sYT1uLGkocixhKX1yZXR1
cm4gYSh0LGUpLHUodCxbe2tleToicmVuZGVyIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBjLmRl
ZmF1bHQuY3JlYXRlRWxlbWVudCgiaW5wdXQiLHtjbGFzc05hbWU6KDAscC5kZWZhdWx0KSh7ZWRp
dDp0aGlzLnByb3BzLmVkaXRpbmcsIm5ldy10b2RvIjp0aGlzLnByb3BzLm5ld1RvZG99KSx0eXBl
OiJ0ZXh0IixwbGFjZWhvbGRlcjp0aGlzLnByb3BzLnBsYWNlaG9sZGVyLGF1dG9Gb2N1czoidHJ1
ZSIsdmFsdWU6dGhpcy5zdGF0ZS50ZXh0LG9uQmx1cjp0aGlzLmhhbmRsZUJsdXIsb25DaGFuZ2U6
dGhpcy5oYW5kbGVDaGFuZ2Usb25LZXlEb3duOnRoaXMuaGFuZGxlU3VibWl0fSl9fV0pLHR9KHMu
Q29tcG9uZW50KTtkLnByb3BUeXBlcz17b25TYXZlOnMuUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJl
ZCx0ZXh0OnMuUHJvcFR5cGVzLnN0cmluZyxwbGFjZWhvbGRlcjpzLlByb3BUeXBlcy5zdHJpbmcs
ZWRpdGluZzpzLlByb3BUeXBlcy5ib29sLG5ld1RvZG86cy5Qcm9wVHlwZXMuYm9vbH0sdC5kZWZh
dWx0PWR9LGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0
LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LkFERF9UT0RPPSJBRERfVE9ETyIsdC5ERUxFVEVf
VE9ETz0iREVMRVRFX1RPRE8iLHQuRURJVF9UT0RPPSJFRElUX1RPRE8iLHQuQ09NUExFVEVfVE9E
Tz0iQ09NUExFVEVfVE9ETyIsdC5DT01QTEVURV9BTEw9IkNPTVBMRVRFX0FMTCIsdC5DTEVBUl9D
T01QTEVURUQ9IkNMRUFSX0NPTVBMRVRFRCJ9LGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO09i
amVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LlNIT1dfQUxM
PSJzaG93X2FsbCIsdC5TSE9XX0NPTVBMRVRFRD0ic2hvd19jb21wbGV0ZWQiLHQuU0hPV19BQ1RJ
VkU9InNob3dfYWN0aXZlIn0sZnVuY3Rpb24oZSx0KXtmdW5jdGlvbiBuKCl7dGhyb3cgbmV3IEVy
cm9yKCJzZXRUaW1lb3V0IGhhcyBub3QgYmVlbiBkZWZpbmVkIil9ZnVuY3Rpb24gcigpe3Rocm93
IG5ldyBFcnJvcigiY2xlYXJUaW1lb3V0IGhhcyBub3QgYmVlbiBkZWZpbmVkIil9ZnVuY3Rpb24g
byhlKXtpZihsPT09c2V0VGltZW91dClyZXR1cm4gc2V0VGltZW91dChlLDApO2lmKChsPT09bnx8
IWwpJiZzZXRUaW1lb3V0KXJldHVybiBsPXNldFRpbWVvdXQsc2V0VGltZW91dChlLDApO3RyeXty
ZXR1cm4gbChlLDApfWNhdGNoKHQpe3RyeXtyZXR1cm4gbC5jYWxsKG51bGwsZSwwKX1jYXRjaCh0
KXtyZXR1cm4gbC5jYWxsKHRoaXMsZSwwKX19fWZ1bmN0aW9uIGkoZSl7aWYocD09PWNsZWFyVGlt
ZW91dClyZXR1cm4gY2xlYXJUaW1lb3V0KGUpO2lmKChwPT09cnx8IXApJiZjbGVhclRpbWVvdXQp
cmV0dXJuIHA9Y2xlYXJUaW1lb3V0LGNsZWFyVGltZW91dChlKTt0cnl7cmV0dXJuIHAoZSl9Y2F0
Y2godCl7dHJ5e3JldHVybiBwLmNhbGwobnVsbCxlKTsKLX1jYXRjaCh0KXtyZXR1cm4gcC5jYWxs
KHRoaXMsZSl9fX1mdW5jdGlvbiBhKCl7diYmZiYmKHY9ITEsZi5sZW5ndGg/aD1mLmNvbmNhdCho
KTptPS0xLGgubGVuZ3RoJiZ1KCkpfWZ1bmN0aW9uIHUoKXtpZighdil7dmFyIGU9byhhKTt2PSEw
O2Zvcih2YXIgdD1oLmxlbmd0aDt0Oyl7Zm9yKGY9aCxoPVtdOysrbTx0OylmJiZmW21dLnJ1bigp
O209LTEsdD1oLmxlbmd0aH1mPW51bGwsdj0hMSxpKGUpfX1mdW5jdGlvbiBzKGUsdCl7dGhpcy5m
dW49ZSx0aGlzLmFycmF5PXR9ZnVuY3Rpb24gYygpe312YXIgbCxwLGQ9ZS5leHBvcnRzPXt9OyFm
dW5jdGlvbigpe3RyeXtsPSJmdW5jdGlvbiI9PXR5cGVvZiBzZXRUaW1lb3V0P3NldFRpbWVvdXQ6
bn1jYXRjaChlKXtsPW59dHJ5e3A9ImZ1bmN0aW9uIj09dHlwZW9mIGNsZWFyVGltZW91dD9jbGVh
clRpbWVvdXQ6cn1jYXRjaChlKXtwPXJ9fSgpO3ZhciBmLGg9W10sdj0hMSxtPS0xO2QubmV4dFRp
Y2s9ZnVuY3Rpb24oZSl7dmFyIHQ9bmV3IEFycmF5KGFyZ3VtZW50cy5sZW5ndGgtMSk7aWYoYXJn
dW1lbnRzLmxlbmd0aD4xKWZvcih2YXIgbj0xO248YXJndW1lbnRzLmxlbmd0aDtuKyspdFtuLTFd
PWFyZ3VtZW50c1tuXTtoLnB1c2gobmV3IHMoZSx0KSksMSE9PWgubGVuZ3RofHx2fHxvKHUpfSxz
LnByb3RvdHlwZS5ydW49ZnVuY3Rpb24oKXt0aGlzLmZ1bi5hcHBseShudWxsLHRoaXMuYXJyYXkp
fSxkLnRpdGxlPSJicm93c2VyIixkLmJyb3dzZXI9ITAsZC5lbnY9e30sZC5hcmd2PVtdLGQudmVy
c2lvbj0iIixkLnZlcnNpb25zPXt9LGQub249YyxkLmFkZExpc3RlbmVyPWMsZC5vbmNlPWMsZC5v
ZmY9YyxkLnJlbW92ZUxpc3RlbmVyPWMsZC5yZW1vdmVBbGxMaXN0ZW5lcnM9YyxkLmVtaXQ9Yyxk
LmJpbmRpbmc9ZnVuY3Rpb24oZSl7dGhyb3cgbmV3IEVycm9yKCJwcm9jZXNzLmJpbmRpbmcgaXMg
bm90IHN1cHBvcnRlZCIpfSxkLmN3ZD1mdW5jdGlvbigpe3JldHVybiIvIn0sZC5jaGRpcj1mdW5j
dGlvbihlKXt0aHJvdyBuZXcgRXJyb3IoInByb2Nlc3MuY2hkaXIgaXMgbm90IHN1cHBvcnRlZCIp
fSxkLnVtYXNrPWZ1bmN0aW9uKCl7cmV0dXJuIDB9fSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJp
Y3QiO2Z1bmN0aW9uIHIoKXt9ZnVuY3Rpb24gbyhlKXt0cnl7cmV0dXJuIGUudGhlbn1jYXRjaCh0
KXtyZXR1cm4geT10LGd9fWZ1bmN0aW9uIGkoZSx0KXt0cnl7cmV0dXJuIGUodCl9Y2F0Y2gobil7
cmV0dXJuIHk9bixnfX1mdW5jdGlvbiBhKGUsdCxuKXt0cnl7ZSh0LG4pfWNhdGNoKHIpe3JldHVy
biB5PXIsZ319ZnVuY3Rpb24gdShlKXtpZigib2JqZWN0IiE9dHlwZW9mIHRoaXMpdGhyb3cgbmV3
IFR5cGVFcnJvcigiUHJvbWlzZXMgbXVzdCBiZSBjb25zdHJ1Y3RlZCB2aWEgbmV3Iik7aWYoImZ1
bmN0aW9uIiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcigibm90IGEgZnVuY3Rpb24iKTt0
aGlzLl80NT0wLHRoaXMuXzgxPTAsdGhpcy5fNjU9bnVsbCx0aGlzLl81ND1udWxsLGUhPT1yJiZ2
KGUsdGhpcyl9ZnVuY3Rpb24gcyhlLHQsbil7cmV0dXJuIG5ldyBlLmNvbnN0cnVjdG9yKGZ1bmN0
aW9uKG8saSl7dmFyIGE9bmV3IHUocik7YS50aGVuKG8saSksYyhlLG5ldyBoKHQsbixhKSl9KX1m
dW5jdGlvbiBjKGUsdCl7Zm9yKDszPT09ZS5fODE7KWU9ZS5fNjU7cmV0dXJuIHUuXzEwJiZ1Ll8x
MChlKSwwPT09ZS5fODE/MD09PWUuXzQ1PyhlLl80NT0xLHZvaWQoZS5fNTQ9dCkpOjE9PT1lLl80
NT8oZS5fNDU9Mix2b2lkKGUuXzU0PVtlLl81NCx0XSkpOnZvaWQgZS5fNTQucHVzaCh0KTp2b2lk
IGwoZSx0KX1mdW5jdGlvbiBsKGUsdCl7bShmdW5jdGlvbigpe3ZhciBuPTE9PT1lLl84MT90Lm9u
RnVsZmlsbGVkOnQub25SZWplY3RlZDtpZihudWxsPT09bilyZXR1cm4gdm9pZCgxPT09ZS5fODE/
cCh0LnByb21pc2UsZS5fNjUpOmQodC5wcm9taXNlLGUuXzY1KSk7dmFyIHI9aShuLGUuXzY1KTty
PT09Zz9kKHQucHJvbWlzZSx5KTpwKHQucHJvbWlzZSxyKX0pfWZ1bmN0aW9uIHAoZSx0KXtpZih0
PT09ZSlyZXR1cm4gZChlLG5ldyBUeXBlRXJyb3IoIkEgcHJvbWlzZSBjYW5ub3QgYmUgcmVzb2x2
ZWQgd2l0aCBpdHNlbGYuIikpO2lmKHQmJigib2JqZWN0Ij09dHlwZW9mIHR8fCJmdW5jdGlvbiI9
PXR5cGVvZiB0KSl7dmFyIG49byh0KTtpZihuPT09ZylyZXR1cm4gZChlLHkpO2lmKG49PT1lLnRo
ZW4mJnQgaW5zdGFuY2VvZiB1KXJldHVybiBlLl84MT0zLGUuXzY1PXQsdm9pZCBmKGUpO2lmKCJm
dW5jdGlvbiI9PXR5cGVvZiBuKXJldHVybiB2b2lkIHYobi5iaW5kKHQpLGUpfWUuXzgxPTEsZS5f
NjU9dCxmKGUpfWZ1bmN0aW9uIGQoZSx0KXtlLl84MT0yLGUuXzY1PXQsdS5fOTcmJnUuXzk3KGUs
dCksZihlKX1mdW5jdGlvbiBmKGUpe2lmKDE9PT1lLl80NSYmKGMoZSxlLl81NCksZS5fNTQ9bnVs
bCksMj09PWUuXzQ1KXtmb3IodmFyIHQ9MDt0PGUuXzU0Lmxlbmd0aDt0KyspYyhlLGUuXzU0W3Rd
KTtlLl81ND1udWxsfX1mdW5jdGlvbiBoKGUsdCxuKXt0aGlzLm9uRnVsZmlsbGVkPSJmdW5jdGlv
biI9PXR5cGVvZiBlP2U6bnVsbCx0aGlzLm9uUmVqZWN0ZWQ9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/
dDpudWxsLHRoaXMucHJvbWlzZT1ufWZ1bmN0aW9uIHYoZSx0KXt2YXIgbj0hMSxyPWEoZSxmdW5j
dGlvbihlKXtufHwobj0hMCxwKHQsZSkpfSxmdW5jdGlvbihlKXtufHwobj0hMCxkKHQsZSkpfSk7
bnx8ciE9PWd8fChuPSEwLGQodCx5KSl9dmFyIG09bigxOTcpLHk9bnVsbCxnPXt9O2UuZXhwb3J0
cz11LHUuXzEwPW51bGwsdS5fOTc9bnVsbCx1Ll82MT1yLHUucHJvdG90eXBlLnRoZW49ZnVuY3Rp
b24oZSx0KXtpZih0aGlzLmNvbnN0cnVjdG9yIT09dSlyZXR1cm4gcyh0aGlzLGUsdCk7dmFyIG49
bmV3IHUocik7cmV0dXJuIGModGhpcyxuZXcgaChlLHQsbikpLG59fSxmdW5jdGlvbihlLHQsbil7
InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0LG4pe3RoaXMucHJvcHM9ZSx0aGlzLmNvbnRleHQ9
dCx0aGlzLnJlZnM9Yyx0aGlzLnVwZGF0ZXI9bnx8c31mdW5jdGlvbiBvKGUsdCxuKXt0aGlzLnBy
b3BzPWUsdGhpcy5jb250ZXh0PXQsdGhpcy5yZWZzPWMsdGhpcy51cGRhdGVyPW58fHN9ZnVuY3Rp
b24gaSgpe312YXIgYT1uKDIzKSx1PW4oNCkscz1uKDkyKSxjPShuKDkzKSxuKDI0KSk7bigxKSxu
KDIyMik7ci5wcm90b3R5cGUuaXNSZWFjdENvbXBvbmVudD17fSxyLnByb3RvdHlwZS5zZXRTdGF0
ZT1mdW5jdGlvbihlLHQpeyJvYmplY3QiIT10eXBlb2YgZSYmImZ1bmN0aW9uIiE9dHlwZW9mIGUm
Jm51bGwhPWU/YSgiODUiKTp2b2lkIDAsdGhpcy51cGRhdGVyLmVucXVldWVTZXRTdGF0ZSh0aGlz
LGUpLHQmJnRoaXMudXBkYXRlci5lbnF1ZXVlQ2FsbGJhY2sodGhpcyx0LCJzZXRTdGF0ZSIpfSxy
LnByb3RvdHlwZS5mb3JjZVVwZGF0ZT1mdW5jdGlvbihlKXt0aGlzLnVwZGF0ZXIuZW5xdWV1ZUZv
cmNlVXBkYXRlKHRoaXMpLGUmJnRoaXMudXBkYXRlci5lbnF1ZXVlQ2FsbGJhY2sodGhpcyxlLCJm
b3JjZVVwZGF0ZSIpfTtpLnByb3RvdHlwZT1yLnByb3RvdHlwZSxvLnByb3RvdHlwZT1uZXcgaSxv
LnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1vLHUoby5wcm90b3R5cGUsci5wcm90b3R5cGUpLG8ucHJv
dG90eXBlLmlzUHVyZVJlYWN0Q29tcG9uZW50PSEwLGUuZXhwb3J0cz17Q29tcG9uZW50OnIsUHVy
ZUNvbXBvbmVudDpvfX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUp
e3ZhciB0PUZ1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZyxuPU9iamVjdC5wcm90b3R5cGUuaGFz
T3duUHJvcGVydHkscj1SZWdFeHAoIl4iK3QuY2FsbChuKS5yZXBsYWNlKC9bXFxeJC4qKz8oKVtc
XXt9fF0vZywiXFwkJiIpLnJlcGxhY2UoL2hhc093blByb3BlcnR5fChmdW5jdGlvbikuKj8oPz1c
XFwoKXwgZm9yIC4rPyg/PVxcXF0pL2csIiQxLio/IikrIiQiKTt0cnl7dmFyIG89dC5jYWxsKGUp
O3JldHVybiByLnRlc3Qobyl9Y2F0Y2goaSl7cmV0dXJuITF9fWZ1bmN0aW9uIG8oZSl7dmFyIHQ9
YyhlKTtpZih0KXt2YXIgbj10LmNoaWxkSURzO2woZSksbi5mb3JFYWNoKG8pfX1mdW5jdGlvbiBp
KGUsdCxuKXtyZXR1cm4iXG4gICAgaW4gIisoZXx8IlVua25vd24iKSsodD8iIChhdCAiK3QuZmls
ZU5hbWUucmVwbGFjZSgvXi4qW1xcXC9dLywiIikrIjoiK3QubGluZU51bWJlcisiKSI6bj8iIChj
cmVhdGVkIGJ5ICIrbisiKSI6IiIpfWZ1bmN0aW9uIGEoZSl7cmV0dXJuIG51bGw9PWU/IiNlbXB0
eSI6InN0cmluZyI9PXR5cGVvZiBlfHwibnVtYmVyIj09dHlwZW9mIGU/IiN0ZXh0Ijoic3RyaW5n
Ij09dHlwZW9mIGUudHlwZT9lLnR5cGU6ZS50eXBlLmRpc3BsYXlOYW1lfHxlLnR5cGUubmFtZXx8
IlVua25vd24ifWZ1bmN0aW9uIHUoZSl7dmFyIHQsbj1QLmdldERpc3BsYXlOYW1lKGUpLHI9UC5n
ZXRFbGVtZW50KGUpLG89UC5nZXRPd25lcklEKGUpO3JldHVybiBvJiYodD1QLmdldERpc3BsYXlO
YW1lKG8pKSxpKG4sciYmci5fc291cmNlLHQpfXZhciBzLGMsbCxwLGQsZixoLHY9bigyMyksbT1u
KDExKSx5PShuKDEpLG4oMiksImZ1bmN0aW9uIj09dHlwZW9mIEFycmF5LmZyb20mJiJmdW5jdGlv
biI9PXR5cGVvZiBNYXAmJnIoTWFwKSYmbnVsbCE9TWFwLnByb3RvdHlwZSYmImZ1bmN0aW9uIj09
dHlwZW9mIE1hcC5wcm90b3R5cGUua2V5cyYmcihNYXAucHJvdG90eXBlLmtleXMpJiYiZnVuY3Rp
b24iPT10eXBlb2YgU2V0JiZyKFNldCkmJm51bGwhPVNldC5wcm90b3R5cGUmJiJmdW5jdGlvbiI9
PXR5cGVvZiBTZXQucHJvdG90eXBlLmtleXMmJnIoU2V0LnByb3RvdHlwZS5rZXlzKSk7aWYoeSl7
dmFyIGc9bmV3IE1hcCxiPW5ldyBTZXQ7cz1mdW5jdGlvbihlLHQpe2cuc2V0KGUsdCl9LGM9ZnVu
Y3Rpb24oZSl7cmV0dXJuIGcuZ2V0KGUpfSxsPWZ1bmN0aW9uKGUpe2cuZGVsZXRlKGUpfSxwPWZ1
bmN0aW9uKCl7cmV0dXJuIEFycmF5LmZyb20oZy5rZXlzKCkpfSxkPWZ1bmN0aW9uKGUpe2IuYWRk
KGUpfSxmPWZ1bmN0aW9uKGUpe2IuZGVsZXRlKGUpfSxoPWZ1bmN0aW9uKCl7cmV0dXJuIEFycmF5
LmZyb20oYi5rZXlzKCkpfX1lbHNle3ZhciBfPXt9LEM9e30sRT1mdW5jdGlvbihlKXtyZXR1cm4i
LiIrZX0sdz1mdW5jdGlvbihlKXtyZXR1cm4gcGFyc2VJbnQoZS5zdWJzdHIoMSksMTApfTtzPWZ1
bmN0aW9uKGUsdCl7dmFyIG49RShlKTtfW25dPXR9LGM9ZnVuY3Rpb24oZSl7dmFyIHQ9RShlKTty
ZXR1cm4gX1t0XX0sbD1mdW5jdGlvbihlKXt2YXIgdD1FKGUpO2RlbGV0ZSBfW3RdfSxwPWZ1bmN0
aW9uKCl7cmV0dXJuIE9iamVjdC5rZXlzKF8pLm1hcCh3KX0sZD1mdW5jdGlvbihlKXt2YXIgdD1F
KGUpO0NbdF09ITB9LGY9ZnVuY3Rpb24oZSl7dmFyIHQ9RShlKTtkZWxldGUgQ1t0XX0saD1mdW5j
dGlvbigpe3JldHVybiBPYmplY3Qua2V5cyhDKS5tYXAodyl9fXZhciBUPVtdLFA9e29uU2V0Q2hp
bGRyZW46ZnVuY3Rpb24oZSx0KXt2YXIgbj1jKGUpO24/dm9pZCAwOnYoIjE0NCIpLG4uY2hpbGRJ
RHM9dDtmb3IodmFyIHI9MDtyPHQubGVuZ3RoO3IrKyl7dmFyIG89dFtyXSxpPWMobyk7aT92b2lk
IDA6digiMTQwIiksbnVsbD09aS5jaGlsZElEcyYmIm9iamVjdCI9PXR5cGVvZiBpLmVsZW1lbnQm
Jm51bGwhPWkuZWxlbWVudD92KCIxNDEiKTp2b2lkIDAsaS5pc01vdW50ZWQ/dm9pZCAwOnYoIjcx
IiksbnVsbD09aS5wYXJlbnRJRCYmKGkucGFyZW50SUQ9ZSksaS5wYXJlbnRJRCE9PWU/digiMTQy
IixvLGkucGFyZW50SUQsZSk6dm9pZCAwfX0sb25CZWZvcmVNb3VudENvbXBvbmVudDpmdW5jdGlv
bihlLHQsbil7dmFyIHI9e2VsZW1lbnQ6dCxwYXJlbnRJRDpuLHRleHQ6bnVsbCxjaGlsZElEczpb
XSxpc01vdW50ZWQ6ITEsdXBkYXRlQ291bnQ6MH07cyhlLHIpfSxvbkJlZm9yZVVwZGF0ZUNvbXBv
bmVudDpmdW5jdGlvbihlLHQpe3ZhciBuPWMoZSk7biYmbi5pc01vdW50ZWQmJihuLmVsZW1lbnQ9
dCl9LG9uTW91bnRDb21wb25lbnQ6ZnVuY3Rpb24oZSl7dmFyIHQ9YyhlKTt0P3ZvaWQgMDp2KCIx
NDQiKSx0LmlzTW91bnRlZD0hMDt2YXIgbj0wPT09dC5wYXJlbnRJRDtuJiZkKGUpfSxvblVwZGF0
ZUNvbXBvbmVudDpmdW5jdGlvbihlKXt2YXIgdD1jKGUpO3QmJnQuaXNNb3VudGVkJiZ0LnVwZGF0
ZUNvdW50Kyt9LG9uVW5tb3VudENvbXBvbmVudDpmdW5jdGlvbihlKXt2YXIgdD1jKGUpO2lmKHQp
e3QuaXNNb3VudGVkPSExO3ZhciBuPTA9PT10LnBhcmVudElEO24mJmYoZSl9VC5wdXNoKGUpfSxw
dXJnZVVubW91bnRlZENvbXBvbmVudHM6ZnVuY3Rpb24oKXtpZighUC5fcHJldmVudFB1cmdpbmcp
e2Zvcih2YXIgZT0wO2U8VC5sZW5ndGg7ZSsrKXt2YXIgdD1UW2VdO28odCl9VC5sZW5ndGg9MH19
LGlzTW91bnRlZDpmdW5jdGlvbihlKXt2YXIgdD1jKGUpO3JldHVybiEhdCYmdC5pc01vdW50ZWR9
LGdldEN1cnJlbnRTdGFja0FkZGVuZHVtOmZ1bmN0aW9uKGUpe3ZhciB0PSIiO2lmKGUpe3ZhciBu
PWEoZSkscj1lLl9vd25lcjt0Kz1pKG4sZS5fc291cmNlLHImJnIuZ2V0TmFtZSgpKX12YXIgbz1t
LmN1cnJlbnQsdT1vJiZvLl9kZWJ1Z0lEO3JldHVybiB0Kz1QLmdldFN0YWNrQWRkZW5kdW1CeUlE
KHUpfSxnZXRTdGFja0FkZGVuZHVtQnlJRDpmdW5jdGlvbihlKXtmb3IodmFyIHQ9IiI7ZTspdCs9
dShlKSxlPVAuZ2V0UGFyZW50SUQoZSk7cmV0dXJuIHR9LGdldENoaWxkSURzOmZ1bmN0aW9uKGUp
e3ZhciB0PWMoZSk7cmV0dXJuIHQ/dC5jaGlsZElEczpbXX0sZ2V0RGlzcGxheU5hbWU6ZnVuY3Rp
b24oZSl7dmFyIHQ9UC5nZXRFbGVtZW50KGUpO3JldHVybiB0P2EodCk6bnVsbH0sZ2V0RWxlbWVu
dDpmdW5jdGlvbihlKXt2YXIgdD1jKGUpO3JldHVybiB0P3QuZWxlbWVudDpudWxsfSxnZXRPd25l
cklEOmZ1bmN0aW9uKGUpe3ZhciB0PVAuZ2V0RWxlbWVudChlKTtyZXR1cm4gdCYmdC5fb3duZXI/
dC5fb3duZXIuX2RlYnVnSUQ6bnVsbH0sZ2V0UGFyZW50SUQ6ZnVuY3Rpb24oZSl7dmFyIHQ9Yyhl
KTtyZXR1cm4gdD90LnBhcmVudElEOm51bGx9LGdldFNvdXJjZTpmdW5jdGlvbihlKXt2YXIgdD1j
KGUpLG49dD90LmVsZW1lbnQ6bnVsbCxyPW51bGwhPW4/bi5fc291cmNlOm51bGw7cmV0dXJuIHJ9
LGdldFRleHQ6ZnVuY3Rpb24oZSl7dmFyIHQ9UC5nZXRFbGVtZW50KGUpO3JldHVybiJzdHJpbmci
PT10eXBlb2YgdD90OiJudW1iZXIiPT10eXBlb2YgdD8iIit0Om51bGx9LGdldFVwZGF0ZUNvdW50
OmZ1bmN0aW9uKGUpe3ZhciB0PWMoZSk7cmV0dXJuIHQ/dC51cGRhdGVDb3VudDowfSxnZXRSb290
SURzOmgsZ2V0UmVnaXN0ZXJlZElEczpwLHB1c2hOb25TdGFuZGFyZFdhcm5pbmdTdGFjazpmdW5j
dGlvbihlLHQpe2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBjb25zb2xlLnJlYWN0U3RhY2spe3ZhciBu
PVtdLHI9bS5jdXJyZW50LG89ciYmci5fZGVidWdJRDt0cnl7Zm9yKGUmJm4ucHVzaCh7bmFtZTpv
P1AuZ2V0RGlzcGxheU5hbWUobyk6bnVsbCxmaWxlTmFtZTp0P3QuZmlsZU5hbWU6bnVsbCxsaW5l
TnVtYmVyOnQ/dC5saW5lTnVtYmVyOm51bGx9KTtvOyl7dmFyIGk9UC5nZXRFbGVtZW50KG8pLGE9
UC5nZXRQYXJlbnRJRChvKSx1PVAuZ2V0T3duZXJJRChvKSxzPXU/UC5nZXREaXNwbGF5TmFtZSh1
KTpudWxsLGM9aSYmaS5fc291cmNlO24ucHVzaCh7bmFtZTpzLGZpbGVOYW1lOmM/Yy5maWxlTmFt
ZTpudWxsLGxpbmVOdW1iZXI6Yz9jLmxpbmVOdW1iZXI6bnVsbH0pLG89YX19Y2F0Y2gobCl7fWNv
bnNvbGUucmVhY3RTdGFjayhuKX19LHBvcE5vblN0YW5kYXJkV2FybmluZ1N0YWNrOmZ1bmN0aW9u
KCl7ImZ1bmN0aW9uIj09dHlwZW9mIGNvbnNvbGUucmVhY3RTdGFja0VuZCYmY29uc29sZS5yZWFj
dFN0YWNrRW5kKCl9fTtlLmV4cG9ydHM9UH0sZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7dmFy
IG49ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmU3ltYm9sLmZvciYmU3ltYm9sLmZvcigicmVh
Y3QuZWxlbWVudCIpfHw2MDEwMztlLmV4cG9ydHM9bn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3Ry
aWN0IjtmdW5jdGlvbiByKGUsdCl7fXZhciBvPShuKDIpLHtpc01vdW50ZWQ6ZnVuY3Rpb24oZSl7
cmV0dXJuITF9LGVucXVldWVDYWxsYmFjazpmdW5jdGlvbihlLHQpe30sZW5xdWV1ZUZvcmNlVXBk
YXRlOmZ1bmN0aW9uKGUpe3IoZSwiZm9yY2VVcGRhdGUiKX0sZW5xdWV1ZVJlcGxhY2VTdGF0ZTpm
dW5jdGlvbihlLHQpe3IoZSwicmVwbGFjZVN0YXRlIil9LGVucXVldWVTZXRTdGF0ZTpmdW5jdGlv
bihlLHQpe3IoZSwic2V0U3RhdGUiKX19KTtlLmV4cG9ydHM9b30sZnVuY3Rpb24oZSx0LG4peyJ1
c2Ugc3RyaWN0Ijt2YXIgcj0hMTtlLmV4cG9ydHM9cn0sZnVuY3Rpb24oZSx0KXsidXNlIHN0cmlj
dCI7ZnVuY3Rpb24gbigpe2Zvcih2YXIgZT1hcmd1bWVudHMubGVuZ3RoLHQ9QXJyYXkoZSksbj0w
O248ZTtuKyspdFtuXT1hcmd1bWVudHNbbl07cmV0dXJuIDA9PT10Lmxlbmd0aD9mdW5jdGlvbihl
KXtyZXR1cm4gZX06MT09PXQubGVuZ3RoP3RbMF06dC5yZWR1Y2UoZnVuY3Rpb24oZSx0KXtyZXR1
cm4gZnVuY3Rpb24oKXtyZXR1cm4gZSh0LmFwcGx5KHZvaWQgMCxhcmd1bWVudHMpKX19KX10Ll9f
ZXNNb2R1bGU9ITAsdC5kZWZhdWx0PW59LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVu
Y3Rpb24gcihlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19ZnVuY3Rpb24g
byhlLHQsbil7ZnVuY3Rpb24gcigpe3k9PT1tJiYoeT1tLnNsaWNlKCkpfWZ1bmN0aW9uIGkoKXty
ZXR1cm4gdn1mdW5jdGlvbiB1KGUpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBlKXRocm93IG5ldyBF
cnJvcigiRXhwZWN0ZWQgbGlzdGVuZXIgdG8gYmUgYSBmdW5jdGlvbi4iKTt2YXIgdD0hMDtyZXR1
cm4gcigpLHkucHVzaChlKSxmdW5jdGlvbigpe2lmKHQpe3Q9ITEscigpO3ZhciBuPXkuaW5kZXhP
ZihlKTt5LnNwbGljZShuLDEpfX19ZnVuY3Rpb24gbChlKXtpZighKDAsYS5kZWZhdWx0KShlKSl0
aHJvdyBuZXcgRXJyb3IoIkFjdGlvbnMgbXVzdCBiZSBwbGFpbiBvYmplY3RzLiBVc2UgY3VzdG9t
IG1pZGRsZXdhcmUgZm9yIGFzeW5jIGFjdGlvbnMuIik7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBl
LnR5cGUpdGhyb3cgbmV3IEVycm9yKCdBY3Rpb25zIG1heSBub3QgaGF2ZSBhbiB1bmRlZmluZWQg
InR5cGUiIHByb3BlcnR5LiBIYXZlIHlvdSBtaXNzcGVsbGVkIGEgY29uc3RhbnQ/Jyk7aWYoZyl0
aHJvdyBuZXcgRXJyb3IoIlJlZHVjZXJzIG1heSBub3QgZGlzcGF0Y2ggYWN0aW9ucy4iKTt0cnl7
Zz0hMCx2PWgodixlKX1maW5hbGx5e2c9ITF9Zm9yKHZhciB0PW09eSxuPTA7bjx0Lmxlbmd0aDtu
Kyspe3ZhciByPXRbbl07cigpfXJldHVybiBlfWZ1bmN0aW9uIHAoZSl7aWYoImZ1bmN0aW9uIiE9
dHlwZW9mIGUpdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCB0aGUgbmV4dFJlZHVjZXIgdG8gYmUg
YSBmdW5jdGlvbi4iKTtoPWUsbCh7dHlwZTpjLklOSVR9KX1mdW5jdGlvbiBkKCl7dmFyIGUsdD11
O3JldHVybiBlPXtzdWJzY3JpYmU6ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gbigpe2UubmV4dCYmZS5u
ZXh0KGkoKSl9aWYoIm9iamVjdCIhPXR5cGVvZiBlKXRocm93IG5ldyBUeXBlRXJyb3IoIkV4cGVj
dGVkIHRoZSBvYnNlcnZlciB0byBiZSBhbiBvYmplY3QuIik7bigpO3ZhciByPXQobik7cmV0dXJu
e3Vuc3Vic2NyaWJlOnJ9fX0sZVtzLmRlZmF1bHRdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LGV9
dmFyIGY7aWYoImZ1bmN0aW9uIj09dHlwZW9mIHQmJiJ1bmRlZmluZWQiPT10eXBlb2YgbiYmKG49
dCx0PXZvaWQgMCksInVuZGVmaW5lZCIhPXR5cGVvZiBuKXtpZigiZnVuY3Rpb24iIT10eXBlb2Yg
bil0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIHRoZSBlbmhhbmNlciB0byBiZSBhIGZ1bmN0aW9u
LiIpO3JldHVybiBuKG8pKGUsdCl9aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGUpdGhyb3cgbmV3IEVy
cm9yKCJFeHBlY3RlZCB0aGUgcmVkdWNlciB0byBiZSBhIGZ1bmN0aW9uLiIpO3ZhciBoPWUsdj10
LG09W10seT1tLGc9ITE7cmV0dXJuIGwoe3R5cGU6Yy5JTklUfSksZj17ZGlzcGF0Y2g6bCxzdWJz
Y3JpYmU6dSxnZXRTdGF0ZTppLHJlcGxhY2VSZWR1Y2VyOnB9LGZbcy5kZWZhdWx0XT1kLGZ9dC5f
X2VzTW9kdWxlPSEwLHQuQWN0aW9uVHlwZXM9dm9pZCAwLHQuZGVmYXVsdD1vO3ZhciBpPW4oMzMp
LGE9cihpKSx1PW4oMjI4KSxzPXIodSksYz10LkFjdGlvblR5cGVzPXtJTklUOiJAQHJlZHV4L0lO
SVQifX0sZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbihlKXsidW5kZWZpbmVk
IiE9dHlwZW9mIGNvbnNvbGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBjb25zb2xlLmVycm9yJiZjb25z
b2xlLmVycm9yKGUpO3RyeXt0aHJvdyBuZXcgRXJyb3IoZSl9Y2F0Y2godCl7fX10Ll9fZXNNb2R1
bGU9ITAsdC5kZWZhdWx0PW59LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24g
cihlKXtyZXR1cm4gZX1mdW5jdGlvbiBvKGUsdCxuKXtmdW5jdGlvbiBvKGUsdCl7dmFyIG49Zy5o
YXNPd25Qcm9wZXJ0eSh0KT9nW3RdOm51bGw7RS5oYXNPd25Qcm9wZXJ0eSh0KSYmcygiT1ZFUlJJ
REVfQkFTRSI9PT1uLCJSZWFjdENsYXNzSW50ZXJmYWNlOiBZb3UgYXJlIGF0dGVtcHRpbmcgdG8g
b3ZlcnJpZGUgYCVzYCBmcm9tIHlvdXIgY2xhc3Mgc3BlY2lmaWNhdGlvbi4gRW5zdXJlIHRoYXQg
eW91ciBtZXRob2QgbmFtZXMgZG8gbm90IG92ZXJsYXAgd2l0aCBSZWFjdCBtZXRob2RzLiIsdCks
ZSYmcygiREVGSU5FX01BTlkiPT09bnx8IkRFRklORV9NQU5ZX01FUkdFRCI9PT1uLCJSZWFjdENs
YXNzSW50ZXJmYWNlOiBZb3UgYXJlIGF0dGVtcHRpbmcgdG8gZGVmaW5lIGAlc2Agb24geW91ciBj
b21wb25lbnQgbW9yZSB0aGFuIG9uY2UuIFRoaXMgY29uZmxpY3QgbWF5IGJlIGR1ZSB0byBhIG1p
eGluLiIsdCl9ZnVuY3Rpb24gaShlLG4pe2lmKG4pe3MoImZ1bmN0aW9uIiE9dHlwZW9mIG4sIlJl
YWN0Q2xhc3M6IFlvdSdyZSBhdHRlbXB0aW5nIHRvIHVzZSBhIGNvbXBvbmVudCBjbGFzcyBvciBm
dW5jdGlvbiBhcyBhIG1peGluLiBJbnN0ZWFkLCBqdXN0IHVzZSBhIHJlZ3VsYXIgb2JqZWN0LiIp
LHMoIXQobiksIlJlYWN0Q2xhc3M6IFlvdSdyZSBhdHRlbXB0aW5nIHRvIHVzZSBhIGNvbXBvbmVu
dCBhcyBhIG1peGluLiBJbnN0ZWFkLCBqdXN0IHVzZSBhIHJlZ3VsYXIgb2JqZWN0LiIpO3ZhciBy
PWUucHJvdG90eXBlLGk9ci5fX3JlYWN0QXV0b0JpbmRQYWlycztuLmhhc093blByb3BlcnR5KGMp
JiZiLm1peGlucyhlLG4ubWl4aW5zKTtmb3IodmFyIGEgaW4gbilpZihuLmhhc093blByb3BlcnR5
KGEpJiZhIT09Yyl7dmFyIHU9blthXSxsPXIuaGFzT3duUHJvcGVydHkoYSk7aWYobyhsLGEpLGIu
aGFzT3duUHJvcGVydHkoYSkpYlthXShlLHUpO2Vsc2V7dmFyIHA9Zy5oYXNPd25Qcm9wZXJ0eShh
KSxoPSJmdW5jdGlvbiI9PXR5cGVvZiB1LHY9aCYmIXAmJiFsJiZuLmF1dG9iaW5kIT09ITE7aWYo
dilpLnB1c2goYSx1KSxyW2FdPXU7ZWxzZSBpZihsKXt2YXIgbT1nW2FdO3MocCYmKCJERUZJTkVf
TUFOWV9NRVJHRUQiPT09bXx8IkRFRklORV9NQU5ZIj09PW0pLCJSZWFjdENsYXNzOiBVbmV4cGVj
dGVkIHNwZWMgcG9saWN5ICVzIGZvciBrZXkgJXMgd2hlbiBtaXhpbmcgaW4gY29tcG9uZW50IHNw
ZWNzLiIsbSxhKSwiREVGSU5FX01BTllfTUVSR0VEIj09PW0/clthXT1kKHJbYV0sdSk6IkRFRklO
RV9NQU5ZIj09PW0mJihyW2FdPWYoclthXSx1KSl9ZWxzZSByW2FdPXV9fX1lbHNlO31mdW5jdGlv
biBsKGUsdCl7aWYodClmb3IodmFyIG4gaW4gdCl7dmFyIHI9dFtuXTtpZih0Lmhhc093blByb3Bl
cnR5KG4pKXt2YXIgbz1uIGluIGI7cyghbywnUmVhY3RDbGFzczogWW91IGFyZSBhdHRlbXB0aW5n
IHRvIGRlZmluZSBhIHJlc2VydmVkIHByb3BlcnR5LCBgJXNgLCB0aGF0IHNob3VsZG5cJ3QgYmUg
b24gdGhlICJzdGF0aWNzIiBrZXkuIERlZmluZSBpdCBhcyBhbiBpbnN0YW5jZSBwcm9wZXJ0eSBp
bnN0ZWFkOyBpdCB3aWxsIHN0aWxsIGJlIGFjY2Vzc2libGUgb24gdGhlIGNvbnN0cnVjdG9yLics
bik7dmFyIGk9biBpbiBlO3MoIWksIlJlYWN0Q2xhc3M6IFlvdSBhcmUgYXR0ZW1wdGluZyB0byBk
ZWZpbmUgYCVzYCBvbiB5b3VyIGNvbXBvbmVudCBtb3JlIHRoYW4gb25jZS4gVGhpcyBjb25mbGlj
dCBtYXkgYmUgZHVlIHRvIGEgbWl4aW4uIixuKSxlW25dPXJ9fX1mdW5jdGlvbiBwKGUsdCl7cyhl
JiZ0JiYib2JqZWN0Ij09dHlwZW9mIGUmJiJvYmplY3QiPT10eXBlb2YgdCwibWVyZ2VJbnRvV2l0
aE5vRHVwbGljYXRlS2V5cygpOiBDYW5ub3QgbWVyZ2Ugbm9uLW9iamVjdHMuIik7Zm9yKHZhciBu
IGluIHQpdC5oYXNPd25Qcm9wZXJ0eShuKSYmKHModm9pZCAwPT09ZVtuXSwibWVyZ2VJbnRvV2l0
aE5vRHVwbGljYXRlS2V5cygpOiBUcmllZCB0byBtZXJnZSB0d28gb2JqZWN0cyB3aXRoIHRoZSBz
YW1lIGtleTogYCVzYC4gVGhpcyBjb25mbGljdCBtYXkgYmUgZHVlIHRvIGEgbWl4aW47IGluIHBh
cnRpY3VsYXIsIHRoaXMgbWF5IGJlIGNhdXNlZCBieSB0d28gZ2V0SW5pdGlhbFN0YXRlKCkgb3Ig
Z2V0RGVmYXVsdFByb3BzKCkgbWV0aG9kcyByZXR1cm5pbmcgb2JqZWN0cyB3aXRoIGNsYXNoaW5n
IGtleXMuIixuKSxlW25dPXRbbl0pO3JldHVybiBlfWZ1bmN0aW9uIGQoZSx0KXtyZXR1cm4gZnVu
Y3Rpb24oKXt2YXIgbj1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxyPXQuYXBwbHkodGhpcyxhcmd1
bWVudHMpO2lmKG51bGw9PW4pcmV0dXJuIHI7aWYobnVsbD09cilyZXR1cm4gbjt2YXIgbz17fTty
ZXR1cm4gcChvLG4pLHAobyxyKSxvfX1mdW5jdGlvbiBmKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKCl7
ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyksdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fWZ1bmN0aW9u
IGgoZSx0KXt2YXIgbj10LmJpbmQoZSk7cmV0dXJuIG59ZnVuY3Rpb24gdihlKXtmb3IodmFyIHQ9
ZS5fX3JlYWN0QXV0b0JpbmRQYWlycyxuPTA7bjx0Lmxlbmd0aDtuKz0yKXt2YXIgcj10W25dLG89
dFtuKzFdO2Vbcl09aChlLG8pfX1mdW5jdGlvbiBtKGUpe3ZhciB0PXIoZnVuY3Rpb24oZSxyLG8p
e3RoaXMuX19yZWFjdEF1dG9CaW5kUGFpcnMubGVuZ3RoJiZ2KHRoaXMpLHRoaXMucHJvcHM9ZSx0
aGlzLmNvbnRleHQ9cix0aGlzLnJlZnM9dSx0aGlzLnVwZGF0ZXI9b3x8bix0aGlzLnN0YXRlPW51
bGw7dmFyIGk9dGhpcy5nZXRJbml0aWFsU3RhdGU/dGhpcy5nZXRJbml0aWFsU3RhdGUoKTpudWxs
O3MoIm9iamVjdCI9PXR5cGVvZiBpJiYhQXJyYXkuaXNBcnJheShpKSwiJXMuZ2V0SW5pdGlhbFN0
YXRlKCk6IG11c3QgcmV0dXJuIGFuIG9iamVjdCBvciBudWxsIix0LmRpc3BsYXlOYW1lfHwiUmVh
Y3RDb21wb3NpdGVDb21wb25lbnQiKSx0aGlzLnN0YXRlPWl9KTt0LnByb3RvdHlwZT1uZXcgdyx0
LnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj10LHQucHJvdG90eXBlLl9fcmVhY3RBdXRvQmluZFBhaXJz
PVtdLHkuZm9yRWFjaChpLmJpbmQobnVsbCx0KSksaSh0LF8pLGkodCxlKSxpKHQsQyksdC5nZXRE
ZWZhdWx0UHJvcHMmJih0LmRlZmF1bHRQcm9wcz10LmdldERlZmF1bHRQcm9wcygpKSxzKHQucHJv
dG90eXBlLnJlbmRlciwiY3JlYXRlQ2xhc3MoLi4uKTogQ2xhc3Mgc3BlY2lmaWNhdGlvbiBtdXN0
IGltcGxlbWVudCBhIGByZW5kZXJgIG1ldGhvZC4iKTtmb3IodmFyIG8gaW4gZyl0LnByb3RvdHlw
ZVtvXXx8KHQucHJvdG90eXBlW29dPW51bGwpO3JldHVybiB0fXZhciB5PVtdLGc9e21peGluczoi
REVGSU5FX01BTlkiLHN0YXRpY3M6IkRFRklORV9NQU5ZIixwcm9wVHlwZXM6IkRFRklORV9NQU5Z
Iixjb250ZXh0VHlwZXM6IkRFRklORV9NQU5ZIixjaGlsZENvbnRleHRUeXBlczoiREVGSU5FX01B
TlkiLGdldERlZmF1bHRQcm9wczoiREVGSU5FX01BTllfTUVSR0VEIixnZXRJbml0aWFsU3RhdGU6
IkRFRklORV9NQU5ZX01FUkdFRCIsZ2V0Q2hpbGRDb250ZXh0OiJERUZJTkVfTUFOWV9NRVJHRUQi
LHJlbmRlcjoiREVGSU5FX09OQ0UiLGNvbXBvbmVudFdpbGxNb3VudDoiREVGSU5FX01BTlkiLGNv
bXBvbmVudERpZE1vdW50OiJERUZJTkVfTUFOWSIsY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wczoi
REVGSU5FX01BTlkiLHNob3VsZENvbXBvbmVudFVwZGF0ZToiREVGSU5FX09OQ0UiLGNvbXBvbmVu
dFdpbGxVcGRhdGU6IkRFRklORV9NQU5ZIixjb21wb25lbnREaWRVcGRhdGU6IkRFRklORV9NQU5Z
Iixjb21wb25lbnRXaWxsVW5tb3VudDoiREVGSU5FX01BTlkiLHVwZGF0ZUNvbXBvbmVudDoiT1ZF
UlJJREVfQkFTRSJ9LGI9e2Rpc3BsYXlOYW1lOmZ1bmN0aW9uKGUsdCl7ZS5kaXNwbGF5TmFtZT10
fSxtaXhpbnM6ZnVuY3Rpb24oZSx0KXtpZih0KWZvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKWko
ZSx0W25dKX0sY2hpbGRDb250ZXh0VHlwZXM6ZnVuY3Rpb24oZSx0KXtlLmNoaWxkQ29udGV4dFR5
cGVzPWEoe30sZS5jaGlsZENvbnRleHRUeXBlcyx0KX0sY29udGV4dFR5cGVzOmZ1bmN0aW9uKGUs
dCl7ZS5jb250ZXh0VHlwZXM9YSh7fSxlLmNvbnRleHRUeXBlcyx0KX0sZ2V0RGVmYXVsdFByb3Bz
OmZ1bmN0aW9uKGUsdCl7ZS5nZXREZWZhdWx0UHJvcHM/ZS5nZXREZWZhdWx0UHJvcHM9ZChlLmdl
dERlZmF1bHRQcm9wcyx0KTplLmdldERlZmF1bHRQcm9wcz10fSxwcm9wVHlwZXM6ZnVuY3Rpb24o
ZSx0KXtlLnByb3BUeXBlcz1hKHt9LGUucHJvcFR5cGVzLHQpfSxzdGF0aWNzOmZ1bmN0aW9uKGUs
dCl7bChlLHQpfSxhdXRvYmluZDpmdW5jdGlvbigpe319LF89e2NvbXBvbmVudERpZE1vdW50OmZ1
bmN0aW9uKCl7dGhpcy5fX2lzTW91bnRlZD0hMH19LEM9e2NvbXBvbmVudFdpbGxVbm1vdW50OmZ1
bmN0aW9uKCl7dGhpcy5fX2lzTW91bnRlZD0hMX19LEU9e3JlcGxhY2VTdGF0ZTpmdW5jdGlvbihl
LHQpe3RoaXMudXBkYXRlci5lbnF1ZXVlUmVwbGFjZVN0YXRlKHRoaXMsZSx0KX0saXNNb3VudGVk
OmZ1bmN0aW9uKCl7cmV0dXJuISF0aGlzLl9faXNNb3VudGVkfX0sdz1mdW5jdGlvbigpe307cmV0
dXJuIGEody5wcm90b3R5cGUsZS5wcm90b3R5cGUsRSksbX12YXIgaSxhPW4oNCksdT1uKDI0KSxz
PW4oMSksYz0ibWl4aW5zIjtpPXt9LGUuZXhwb3J0cz1vfSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3Ry
aWN0IjtmdW5jdGlvbiBuKGUpe3JldHVybiBlLnJlcGxhY2UocixmdW5jdGlvbihlLHQpe3JldHVy
biB0LnRvVXBwZXJDYXNlKCl9KX12YXIgcj0vLSguKS9nO2UuZXhwb3J0cz1ufSxmdW5jdGlvbihl
LHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIG8oZS5yZXBsYWNlKGksIm1z
LSIpKX12YXIgbz1uKDk4KSxpPS9eLW1zLS87ZS5leHBvcnRzPXJ9LGZ1bmN0aW9uKGUsdCxuKXsi
dXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQpe3JldHVybiEoIWV8fCF0KSYmKGU9PT10fHwhbyhl
KSYmKG8odCk/cihlLHQucGFyZW50Tm9kZSk6ImNvbnRhaW5zImluIGU/ZS5jb250YWlucyh0KToh
IWUuY29tcGFyZURvY3VtZW50UG9zaXRpb24mJiEhKDE2JmUuY29tcGFyZURvY3VtZW50UG9zaXRp
b24odCkpKSl9dmFyIG89bigxMDgpO2UuZXhwb3J0cz1yfSxmdW5jdGlvbihlLHQsbil7InVzZSBz
dHJpY3QiO2Z1bmN0aW9uIHIoZSl7dmFyIHQ9ZS5sZW5ndGg7aWYoQXJyYXkuaXNBcnJheShlKXx8
Im9iamVjdCIhPXR5cGVvZiBlJiYiZnVuY3Rpb24iIT10eXBlb2YgZT9hKCExKTp2b2lkIDAsIm51
bWJlciIhPXR5cGVvZiB0P2EoITEpOnZvaWQgMCwwPT09dHx8dC0xIGluIGU/dm9pZCAwOmEoITEp
LCJmdW5jdGlvbiI9PXR5cGVvZiBlLmNhbGxlZT9hKCExKTp2b2lkIDAsZS5oYXNPd25Qcm9wZXJ0
eSl0cnl7cmV0dXJuIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGUpfWNhdGNoKG4pe31mb3Io
dmFyIHI9QXJyYXkodCksbz0wO288dDtvKyspcltvXT1lW29dO3JldHVybiByfWZ1bmN0aW9uIG8o
ZSl7cmV0dXJuISFlJiYoIm9iamVjdCI9PXR5cGVvZiBlfHwiZnVuY3Rpb24iPT10eXBlb2YgZSkm
JiJsZW5ndGgiaW4gZSYmISgic2V0SW50ZXJ2YWwiaW4gZSkmJiJudW1iZXIiIT10eXBlb2YgZS5u
b2RlVHlwZSYmKEFycmF5LmlzQXJyYXkoZSl8fCJjYWxsZWUiaW4gZXx8Iml0ZW0iaW4gZSl9ZnVu
Y3Rpb24gaShlKXtyZXR1cm4gbyhlKT9BcnJheS5pc0FycmF5KGUpP2Uuc2xpY2UoKTpyKGUpOltl
XX12YXIgYT1uKDEpO2UuZXhwb3J0cz1pfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1
bmN0aW9uIHIoZSl7dmFyIHQ9ZS5tYXRjaChsKTtyZXR1cm4gdCYmdFsxXS50b0xvd2VyQ2FzZSgp
fWZ1bmN0aW9uIG8oZSx0KXt2YXIgbj1jO2M/dm9pZCAwOnMoITEpO3ZhciBvPXIoZSksaT1vJiZ1
KG8pO2lmKGkpe24uaW5uZXJIVE1MPWlbMV0rZStpWzJdO2Zvcih2YXIgbD1pWzBdO2wtLTspbj1u
Lmxhc3RDaGlsZH1lbHNlIG4uaW5uZXJIVE1MPWU7dmFyIHA9bi5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgic2NyaXB0Iik7cC5sZW5ndGgmJih0P3ZvaWQgMDpzKCExKSxhKHApLmZvckVhY2godCkpO2Zv
cih2YXIgZD1BcnJheS5mcm9tKG4uY2hpbGROb2Rlcyk7bi5sYXN0Q2hpbGQ7KW4ucmVtb3ZlQ2hp
bGQobi5sYXN0Q2hpbGQpO3JldHVybiBkfXZhciBpPW4oNiksYT1uKDEwMSksdT1uKDEwMykscz1u
KDEpLGM9aS5jYW5Vc2VET00/ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik6bnVsbCxsPS9e
XHMqPChcdyspLztlLmV4cG9ydHM9b30sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5j
dGlvbiByKGUpe3JldHVybiBhP3ZvaWQgMDppKCExKSxkLmhhc093blByb3BlcnR5KGUpfHwoZT0i
KiIpLHUuaGFzT3duUHJvcGVydHkoZSl8fCgiKiI9PT1lP2EuaW5uZXJIVE1MPSI8bGluayAvPiI6
YS5pbm5lckhUTUw9IjwiK2UrIj48LyIrZSsiPiIsdVtlXT0hYS5maXJzdENoaWxkKSx1W2VdP2Rb
ZV06bnVsbH12YXIgbz1uKDYpLGk9bigxKSxhPW8uY2FuVXNlRE9NP2RvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoImRpdiIpOm51bGwsdT17fSxzPVsxLCc8c2VsZWN0IG11bHRpcGxlPSJ0cnVlIj4nLCI8
L3NlbGVjdD4iXSxjPVsxLCI8dGFibGU+IiwiPC90YWJsZT4iXSxsPVszLCI8dGFibGU+PHRib2R5
Pjx0cj4iLCI8L3RyPjwvdGJvZHk+PC90YWJsZT4iXSxwPVsxLCc8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyI+JywiPC9zdmc+Il0sZD17IioiOlsxLCI/PGRpdj4iLCI8L2Rp
dj4iXSxhcmVhOlsxLCI8bWFwPiIsIjwvbWFwPiJdLGNvbDpbMiwiPHRhYmxlPjx0Ym9keT48L3Ri
b2R5Pjxjb2xncm91cD4iLCI8L2NvbGdyb3VwPjwvdGFibGU+Il0sbGVnZW5kOlsxLCI8ZmllbGRz
ZXQ+IiwiPC9maWVsZHNldD4iXSxwYXJhbTpbMSwiPG9iamVjdD4iLCI8L29iamVjdD4iXSx0cjpb
MiwiPHRhYmxlPjx0Ym9keT4iLCI8L3Rib2R5PjwvdGFibGU+Il0sb3B0Z3JvdXA6cyxvcHRpb246
cyxjYXB0aW9uOmMsY29sZ3JvdXA6Yyx0Ym9keTpjLHRmb290OmMsdGhlYWQ6Yyx0ZDpsLHRoOmx9
LGY9WyJjaXJjbGUiLCJjbGlwUGF0aCIsImRlZnMiLCJlbGxpcHNlIiwiZyIsImltYWdlIiwibGlu
ZSIsImxpbmVhckdyYWRpZW50IiwibWFzayIsInBhdGgiLCJwYXR0ZXJuIiwicG9seWdvbiIsInBv
bHlsaW5lIiwicmFkaWFsR3JhZGllbnQiLCJyZWN0Iiwic3RvcCIsInRleHQiLCJ0c3BhbiJdO2Yu
Zm9yRWFjaChmdW5jdGlvbihlKXtkW2VdPXAsdVtlXT0hMH0pLGUuZXhwb3J0cz1yfSxmdW5jdGlv
bihlLHQpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKGUpe3JldHVybiBlLldpbmRvdyYmZSBpbnN0
YW5jZW9mIGUuV2luZG93P3t4OmUucGFnZVhPZmZzZXR8fGUuZG9jdW1lbnQuZG9jdW1lbnRFbGVt
ZW50LnNjcm9sbExlZnQseTplLnBhZ2VZT2Zmc2V0fHxlLmRvY3VtZW50LmRvY3VtZW50RWxlbWVu
dC5zY3JvbGxUb3B9Ont4OmUuc2Nyb2xsTGVmdCx5OmUuc2Nyb2xsVG9wfX1lLmV4cG9ydHM9bn0s
ZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbihlKXtyZXR1cm4gZS5yZXBsYWNl
KHIsIi0kMSIpLnRvTG93ZXJDYXNlKCl9dmFyIHI9LyhbQS1aXSkvZztlLmV4cG9ydHM9bn0sZnVu
Y3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3JldHVybiBvKGUpLnJlcGxh
Y2UoaSwiLW1zLSIpfXZhciBvPW4oMTA1KSxpPS9ebXMtLztlLmV4cG9ydHM9cn0sZnVuY3Rpb24o
ZSx0KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbihlKXt2YXIgdD1lP2Uub3duZXJEb2N1bWVudHx8
ZTpkb2N1bWVudCxuPXQuZGVmYXVsdFZpZXd8fHdpbmRvdztyZXR1cm4hKCFlfHwhKCJmdW5jdGlv
biI9PXR5cGVvZiBuLk5vZGU/ZSBpbnN0YW5jZW9mIG4uTm9kZToib2JqZWN0Ij09dHlwZW9mIGUm
JiJudW1iZXIiPT10eXBlb2YgZS5ub2RlVHlwZSYmInN0cmluZyI9PXR5cGVvZiBlLm5vZGVOYW1l
KSl9ZS5leHBvcnRzPW59LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihl
KXtyZXR1cm4gbyhlKSYmMz09ZS5ub2RlVHlwZX12YXIgbz1uKDEwNyk7ZS5leHBvcnRzPXJ9LGZ1
bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4oZSl7dmFyIHQ9e307cmV0dXJuIGZ1
bmN0aW9uKG4pe3JldHVybiB0Lmhhc093blByb3BlcnR5KG4pfHwodFtuXT1lLmNhbGwodGhpcyxu
KSksdFtuXX19ZS5leHBvcnRzPW59LGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO3ZhciBuPXtj
aGlsZENvbnRleHRUeXBlczohMCxjb250ZXh0VHlwZXM6ITAsZGVmYXVsdFByb3BzOiEwLGRpc3Bs
YXlOYW1lOiEwLGdldERlZmF1bHRQcm9wczohMCxtaXhpbnM6ITAscHJvcFR5cGVzOiEwLHR5cGU6
ITB9LHI9e25hbWU6ITAsbGVuZ3RoOiEwLHByb3RvdHlwZTohMCxjYWxsZXI6ITAsY2FsbGVlOiEw
LGFyZ3VtZW50czohMCxhcml0eTohMH0sbz1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzLGk9
KE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0
eUlzRW51bWVyYWJsZSksYT1PYmplY3QuZ2V0UHJvdG90eXBlT2YsdT1hJiZhKE9iamVjdCkscz1P
YmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcztlLmV4cG9ydHM9ZnVuY3Rpb24gZSh0LGMsbCl7aWYo
InN0cmluZyIhPXR5cGVvZiBjKXtpZih1KXt2YXIgcD1hKGMpO3AmJnAhPT11JiZlKHQscCxsKX12
YXIgZD1zKGMpO28mJihkPWQuY29uY2F0KG8oYykpKTtmb3IodmFyIGY9MDtmPGQubGVuZ3RoOysr
Zil7dmFyIGg9ZFtmXTtpZighKG5baF18fHJbaF18fGwmJmxbaF0pJiYoaS5jYWxsKGMsaCl8fCJm
dW5jdGlvbiI9PXR5cGVvZiBjW2hdKSl0cnl7dFtoXT1jW2hdfWNhdGNoKHYpe319cmV0dXJuIHR9
cmV0dXJuIHR9fSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPWZ1bmN0aW9uKGUs
dCxuLHIsbyxpLGEsdSl7aWYoIWUpe3ZhciBzO2lmKHZvaWQgMD09PXQpcz1uZXcgRXJyb3IoIk1p
bmlmaWVkIGV4Y2VwdGlvbiBvY2N1cnJlZDsgdXNlIHRoZSBub24tbWluaWZpZWQgZGV2IGVudmly
b25tZW50IGZvciB0aGUgZnVsbCBlcnJvciBtZXNzYWdlIGFuZCBhZGRpdGlvbmFsIGhlbHBmdWwg
d2FybmluZ3MuIik7ZWxzZXt2YXIgYz1bbixyLG8saSxhLHVdLGw9MDtzPW5ldyBFcnJvcih0LnJl
cGxhY2UoLyVzL2csZnVuY3Rpb24oKXtyZXR1cm4gY1tsKytdfSkpLHMubmFtZT0iSW52YXJpYW50
IFZpb2xhdGlvbiJ9dGhyb3cgcy5mcmFtZXNUb1BvcD0xLHN9fTtlLmV4cG9ydHM9cn0sZnVuY3Rp
b24oZSx0LG4pe2Z1bmN0aW9uIHIoZSl7cmV0dXJuIG51bGw9PWU/dm9pZCAwPT09ZT9zOnU6YyYm
YyBpbiBPYmplY3QoZSk/aShlKTphKGUpfXZhciBvPW4oNTQpLGk9bigxMTUpLGE9bigxMTYpLHU9
IltvYmplY3QgTnVsbF0iLHM9IltvYmplY3QgVW5kZWZpbmVkXSIsYz1vP28udG9TdHJpbmdUYWc6
dm9pZCAwO2UuZXhwb3J0cz1yfSxmdW5jdGlvbihlLHQpeyhmdW5jdGlvbih0KXt2YXIgbj0ib2Jq
ZWN0Ij09dHlwZW9mIHQmJnQmJnQuT2JqZWN0PT09T2JqZWN0JiZ0O2UuZXhwb3J0cz1ufSkuY2Fs
bCh0LGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KCkpfSxmdW5jdGlvbihlLHQsbil7dmFyIHI9bigx
MTcpLG89cihPYmplY3QuZ2V0UHJvdG90eXBlT2YsT2JqZWN0KTtlLmV4cG9ydHM9b30sZnVuY3Rp
b24oZSx0LG4pe2Z1bmN0aW9uIHIoZSl7dmFyIHQ9YS5jYWxsKGUscyksbj1lW3NdO3RyeXtlW3Nd
PXZvaWQgMDt2YXIgcj0hMH1jYXRjaChvKXt9dmFyIGk9dS5jYWxsKGUpO3JldHVybiByJiYodD9l
W3NdPW46ZGVsZXRlIGVbc10pLGl9dmFyIG89big1NCksaT1PYmplY3QucHJvdG90eXBlLGE9aS5o
YXNPd25Qcm9wZXJ0eSx1PWkudG9TdHJpbmcscz1vP28udG9TdHJpbmdUYWc6dm9pZCAwO2UuZXhw
b3J0cz1yfSxmdW5jdGlvbihlLHQpe2Z1bmN0aW9uIG4oZSl7cmV0dXJuIG8uY2FsbChlKX12YXIg
cj1PYmplY3QucHJvdG90eXBlLG89ci50b1N0cmluZztlLmV4cG9ydHM9bn0sZnVuY3Rpb24oZSx0
KXtmdW5jdGlvbiBuKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiBlKHQobikpfX1lLmV4
cG9ydHM9bn0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4oMTEzKSxvPSJvYmplY3QiPT10eXBlb2Yg
c2VsZiYmc2VsZiYmc2VsZi5PYmplY3Q9PT1PYmplY3QmJnNlbGYsaT1yfHxvfHxGdW5jdGlvbigi
cmV0dXJuIHRoaXMiKSgpO2UuZXhwb3J0cz1pfSxmdW5jdGlvbihlLHQpe2Z1bmN0aW9uIG4oZSl7
cmV0dXJuIG51bGwhPWUmJiJvYmplY3QiPT10eXBlb2YgZX1lLmV4cG9ydHM9bn0sZnVuY3Rpb24o
ZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCxuLHIsbyl7fWUuZXhwb3J0cz1yfSxm
dW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oNyksbz1uKDEpLGk9big1Nyk7ZS5l
eHBvcnRzPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQsbixyLGEsdSl7dSE9PWkmJm8oITEsIkNh
bGxpbmcgUHJvcFR5cGVzIHZhbGlkYXRvcnMgZGlyZWN0bHkgaXMgbm90IHN1cHBvcnRlZCBieSB0
aGUgYHByb3AtdHlwZXNgIHBhY2thZ2UuIFVzZSBQcm9wVHlwZXMuY2hlY2tQcm9wVHlwZXMoKSB0
byBjYWxsIHRoZW0uIFJlYWQgbW9yZSBhdCBodHRwOi8vZmIubWUvdXNlLWNoZWNrLXByb3AtdHlw
ZXMiKX1mdW5jdGlvbiB0KCl7cmV0dXJuIGV9ZS5pc1JlcXVpcmVkPWU7dmFyIG49e2FycmF5OmUs
Ym9vbDplLGZ1bmM6ZSxudW1iZXI6ZSxvYmplY3Q6ZSxzdHJpbmc6ZSxzeW1ib2w6ZSxhbnk6ZSxh
cnJheU9mOnQsZWxlbWVudDplLGluc3RhbmNlT2Y6dCxub2RlOmUsb2JqZWN0T2Y6dCxvbmVPZjp0
LG9uZU9mVHlwZTp0LHNoYXBlOnR9O3JldHVybiBuLmNoZWNrUHJvcFR5cGVzPXIsbi5Qcm9wVHlw
ZXM9bixufX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDcpLG89bigxKSxp
PW4oMiksYT1uKDU3KSx1PW4oMTIwKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtmdW5jdGlvbiBu
KGUpe3ZhciB0PWUmJihPJiZlW09dfHxlW1NdKTtpZigiZnVuY3Rpb24iPT10eXBlb2YgdClyZXR1
cm4gdH1mdW5jdGlvbiBzKGUsdCl7cmV0dXJuIGU9PT10PzAhPT1lfHwxL2U9PT0xL3Q6ZSE9PWUm
JnQhPT10fWZ1bmN0aW9uIGMoZSl7dGhpcy5tZXNzYWdlPWUsdGhpcy5zdGFjaz0iIn1mdW5jdGlv
biBsKGUpe2Z1bmN0aW9uIG4obixyLGksdSxzLGwscCl7aWYodT11fHxrLGw9bHx8aSxwIT09YSlp
Zih0KW8oITEsIkNhbGxpbmcgUHJvcFR5cGVzIHZhbGlkYXRvcnMgZGlyZWN0bHkgaXMgbm90IHN1
cHBvcnRlZCBieSB0aGUgYHByb3AtdHlwZXNgIHBhY2thZ2UuIFVzZSBgUHJvcFR5cGVzLmNoZWNr
UHJvcFR5cGVzKClgIHRvIGNhbGwgdGhlbS4gUmVhZCBtb3JlIGF0IGh0dHA6Ly9mYi5tZS91c2Ut
Y2hlY2stcHJvcC10eXBlcyIpO2Vsc2U7cmV0dXJuIG51bGw9PXJbaV0/bj9uZXcgYyhudWxsPT09
cltpXT8iVGhlICIrcysiIGAiK2wrImAgaXMgbWFya2VkIGFzIHJlcXVpcmVkICIrKCJpbiBgIit1
KyJgLCBidXQgaXRzIHZhbHVlIGlzIGBudWxsYC4iKToiVGhlICIrcysiIGAiK2wrImAgaXMgbWFy
a2VkIGFzIHJlcXVpcmVkIGluICIrKCJgIit1KyJgLCBidXQgaXRzIHZhbHVlIGlzIGB1bmRlZmlu
ZWRgLiIpKTpudWxsOmUocixpLHUscyxsKX12YXIgcj1uLmJpbmQobnVsbCwhMSk7cmV0dXJuIHIu
aXNSZXF1aXJlZD1uLmJpbmQobnVsbCwhMCkscn1mdW5jdGlvbiBwKGUpe2Z1bmN0aW9uIHQodCxu
LHIsbyxpLGEpe3ZhciB1PXRbbl0scz13KHUpO2lmKHMhPT1lKXt2YXIgbD1UKHUpO3JldHVybiBu
ZXcgYygiSW52YWxpZCAiK28rIiBgIitpKyJgIG9mIHR5cGUgIisoImAiK2wrImAgc3VwcGxpZWQg
dG8gYCIrcisiYCwgZXhwZWN0ZWQgIikrKCJgIitlKyJgLiIpKX1yZXR1cm4gbnVsbH1yZXR1cm4g
bCh0KX1mdW5jdGlvbiBkKCl7cmV0dXJuIGwoci50aGF0UmV0dXJuc051bGwpfWZ1bmN0aW9uIGYo
ZSl7ZnVuY3Rpb24gdCh0LG4scixvLGkpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBlKXJldHVybiBu
ZXcgYygiUHJvcGVydHkgYCIraSsiYCBvZiBjb21wb25lbnQgYCIrcisiYCBoYXMgaW52YWxpZCBQ
cm9wVHlwZSBub3RhdGlvbiBpbnNpZGUgYXJyYXlPZi4iKTt2YXIgdT10W25dO2lmKCFBcnJheS5p
c0FycmF5KHUpKXt2YXIgcz13KHUpO3JldHVybiBuZXcgYygiSW52YWxpZCAiK28rIiBgIitpKyJg
IG9mIHR5cGUgIisoImAiK3MrImAgc3VwcGxpZWQgdG8gYCIrcisiYCwgZXhwZWN0ZWQgYW4gYXJy
YXkuIikpfWZvcih2YXIgbD0wO2w8dS5sZW5ndGg7bCsrKXt2YXIgcD1lKHUsbCxyLG8saSsiWyIr
bCsiXSIsYSk7aWYocCBpbnN0YW5jZW9mIEVycm9yKXJldHVybiBwfXJldHVybiBudWxsfXJldHVy
biBsKHQpfWZ1bmN0aW9uIGgoKXtmdW5jdGlvbiB0KHQsbixyLG8saSl7dmFyIGE9dFtuXTtpZigh
ZShhKSl7dmFyIHU9dyhhKTtyZXR1cm4gbmV3IGMoIkludmFsaWQgIitvKyIgYCIraSsiYCBvZiB0
eXBlICIrKCJgIit1KyJgIHN1cHBsaWVkIHRvIGAiK3IrImAsIGV4cGVjdGVkIGEgc2luZ2xlIFJl
YWN0RWxlbWVudC4iKSl9cmV0dXJuIG51bGx9cmV0dXJuIGwodCl9ZnVuY3Rpb24gdihlKXtmdW5j
dGlvbiB0KHQsbixyLG8saSl7aWYoISh0W25daW5zdGFuY2VvZiBlKSl7dmFyIGE9ZS5uYW1lfHxr
LHU9eCh0W25dKTtyZXR1cm4gbmV3IGMoIkludmFsaWQgIitvKyIgYCIraSsiYCBvZiB0eXBlICIr
KCJgIit1KyJgIHN1cHBsaWVkIHRvIGAiK3IrImAsIGV4cGVjdGVkICIpKygiaW5zdGFuY2Ugb2Yg
YCIrYSsiYC4iKSl9cmV0dXJuIG51bGx9cmV0dXJuIGwodCl9ZnVuY3Rpb24gbShlKXtmdW5jdGlv
biB0KHQsbixyLG8saSl7Zm9yKHZhciBhPXRbbl0sdT0wO3U8ZS5sZW5ndGg7dSsrKWlmKHMoYSxl
W3VdKSlyZXR1cm4gbnVsbDt2YXIgbD1KU09OLnN0cmluZ2lmeShlKTtyZXR1cm4gbmV3IGMoIklu
dmFsaWQgIitvKyIgYCIraSsiYCBvZiB2YWx1ZSBgIithKyJgICIrKCJzdXBwbGllZCB0byBgIity
KyJgLCBleHBlY3RlZCBvbmUgb2YgIitsKyIuIikpfXJldHVybiBBcnJheS5pc0FycmF5KGUpP2wo
dCk6ci50aGF0UmV0dXJuc051bGx9ZnVuY3Rpb24geShlKXtmdW5jdGlvbiB0KHQsbixyLG8saSl7
aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGUpcmV0dXJuIG5ldyBjKCJQcm9wZXJ0eSBgIitpKyJgIG9m
IGNvbXBvbmVudCBgIityKyJgIGhhcyBpbnZhbGlkIFByb3BUeXBlIG5vdGF0aW9uIGluc2lkZSBv
YmplY3RPZi4iKTt2YXIgdT10W25dLHM9dyh1KTtpZigib2JqZWN0IiE9PXMpcmV0dXJuIG5ldyBj
KCJJbnZhbGlkICIrbysiIGAiK2krImAgb2YgdHlwZSAiKygiYCIrcysiYCBzdXBwbGllZCB0byBg
IityKyJgLCBleHBlY3RlZCBhbiBvYmplY3QuIikpO2Zvcih2YXIgbCBpbiB1KWlmKHUuaGFzT3du
UHJvcGVydHkobCkpe3ZhciBwPWUodSxsLHIsbyxpKyIuIitsLGEpO2lmKHAgaW5zdGFuY2VvZiBF
cnJvcilyZXR1cm4gcH1yZXR1cm4gbnVsbH1yZXR1cm4gbCh0KX1mdW5jdGlvbiBnKGUpe2Z1bmN0
aW9uIHQodCxuLHIsbyxpKXtmb3IodmFyIHU9MDt1PGUubGVuZ3RoO3UrKyl7dmFyIHM9ZVt1XTtp
ZihudWxsPT1zKHQsbixyLG8saSxhKSlyZXR1cm4gbnVsbH1yZXR1cm4gbmV3IGMoIkludmFsaWQg
IitvKyIgYCIraSsiYCBzdXBwbGllZCB0byAiKygiYCIrcisiYC4iKSl9aWYoIUFycmF5LmlzQXJy
YXkoZSkpcmV0dXJuIHIudGhhdFJldHVybnNOdWxsO2Zvcih2YXIgbj0wO248ZS5sZW5ndGg7bisr
KXt2YXIgbz1lW25dO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBvKXJldHVybiBpKCExLCJJbnZhbGlk
IGFyZ3VtZW50IHN1cHBsaWQgdG8gb25lT2ZUeXBlLiBFeHBlY3RlZCBhbiBhcnJheSBvZiBjaGVj
ayBmdW5jdGlvbnMsIGJ1dCByZWNlaXZlZCAlcyBhdCBpbmRleCAlcy4iLFAobyksbiksci50aGF0
UmV0dXJuc051bGx9cmV0dXJuIGwodCl9ZnVuY3Rpb24gYigpe2Z1bmN0aW9uIGUoZSx0LG4scixv
KXtyZXR1cm4gQyhlW3RdKT9udWxsOm5ldyBjKCJJbnZhbGlkICIrcisiIGAiK28rImAgc3VwcGxp
ZWQgdG8gIisoImAiK24rImAsIGV4cGVjdGVkIGEgUmVhY3ROb2RlLiIpKX1yZXR1cm4gbChlKX1m
dW5jdGlvbiBfKGUpe2Z1bmN0aW9uIHQodCxuLHIsbyxpKXt2YXIgdT10W25dLHM9dyh1KTtpZigi
b2JqZWN0IiE9PXMpcmV0dXJuIG5ldyBjKCJJbnZhbGlkICIrbysiIGAiK2krImAgb2YgdHlwZSBg
IitzKyJgICIrKCJzdXBwbGllZCB0byBgIityKyJgLCBleHBlY3RlZCBgb2JqZWN0YC4iKSk7Zm9y
KHZhciBsIGluIGUpe3ZhciBwPWVbbF07aWYocCl7dmFyIGQ9cCh1LGwscixvLGkrIi4iK2wsYSk7
aWYoZClyZXR1cm4gZH19cmV0dXJuIG51bGx9cmV0dXJuIGwodCl9ZnVuY3Rpb24gQyh0KXtzd2l0
Y2godHlwZW9mIHQpe2Nhc2UibnVtYmVyIjpjYXNlInN0cmluZyI6Y2FzZSJ1bmRlZmluZWQiOnJl
dHVybiEwO2Nhc2UiYm9vbGVhbiI6cmV0dXJuIXQ7Y2FzZSJvYmplY3QiOmlmKEFycmF5LmlzQXJy
YXkodCkpcmV0dXJuIHQuZXZlcnkoQyk7aWYobnVsbD09PXR8fGUodCkpcmV0dXJuITA7dmFyIHI9
bih0KTtpZighcilyZXR1cm4hMTt2YXIgbyxpPXIuY2FsbCh0KTtpZihyIT09dC5lbnRyaWVzKXtm
b3IoOyEobz1pLm5leHQoKSkuZG9uZTspaWYoIUMoby52YWx1ZSkpcmV0dXJuITF9ZWxzZSBmb3Io
OyEobz1pLm5leHQoKSkuZG9uZTspe3ZhciBhPW8udmFsdWU7aWYoYSYmIUMoYVsxXSkpcmV0dXJu
ITF9cmV0dXJuITA7ZGVmYXVsdDpyZXR1cm4hMX19ZnVuY3Rpb24gRShlLHQpe3JldHVybiJzeW1i
b2wiPT09ZXx8KCJTeW1ib2wiPT09dFsiQEB0b1N0cmluZ1RhZyJdfHwiZnVuY3Rpb24iPT10eXBl
b2YgU3ltYm9sJiZ0IGluc3RhbmNlb2YgU3ltYm9sKX1mdW5jdGlvbiB3KGUpe3ZhciB0PXR5cGVv
ZiBlO3JldHVybiBBcnJheS5pc0FycmF5KGUpPyJhcnJheSI6ZSBpbnN0YW5jZW9mIFJlZ0V4cD8i
b2JqZWN0IjpFKHQsZSk/InN5bWJvbCI6dH1mdW5jdGlvbiBUKGUpe2lmKCJ1bmRlZmluZWQiPT10
eXBlb2YgZXx8bnVsbD09PWUpcmV0dXJuIiIrZTt2YXIgdD13KGUpO2lmKCJvYmplY3QiPT09dCl7
aWYoZSBpbnN0YW5jZW9mIERhdGUpcmV0dXJuImRhdGUiO2lmKGUgaW5zdGFuY2VvZiBSZWdFeHAp
cmV0dXJuInJlZ2V4cCJ9cmV0dXJuIHR9ZnVuY3Rpb24gUChlKXt2YXIgdD1UKGUpO3N3aXRjaCh0
KXtjYXNlImFycmF5IjpjYXNlIm9iamVjdCI6cmV0dXJuImFuICIrdDtjYXNlImJvb2xlYW4iOmNh
c2UiZGF0ZSI6Y2FzZSJyZWdleHAiOnJldHVybiJhICIrdDtkZWZhdWx0OnJldHVybiB0fX1mdW5j
dGlvbiB4KGUpe3JldHVybiBlLmNvbnN0cnVjdG9yJiZlLmNvbnN0cnVjdG9yLm5hbWU/ZS5jb25z
dHJ1Y3Rvci5uYW1lOmt9dmFyIE89ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmU3ltYm9sLml0
ZXJhdG9yLFM9IkBAaXRlcmF0b3IiLGs9Ijw8YW5vbnltb3VzPj4iLE09e2FycmF5OnAoImFycmF5
IiksYm9vbDpwKCJib29sZWFuIiksZnVuYzpwKCJmdW5jdGlvbiIpLG51bWJlcjpwKCJudW1iZXIi
KSxvYmplY3Q6cCgib2JqZWN0Iiksc3RyaW5nOnAoInN0cmluZyIpLHN5bWJvbDpwKCJzeW1ib2wi
KSxhbnk6ZCgpLGFycmF5T2Y6ZixlbGVtZW50OmgoKSxpbnN0YW5jZU9mOnYsbm9kZTpiKCksb2Jq
ZWN0T2Y6eSxvbmVPZjptLG9uZU9mVHlwZTpnLHNoYXBlOl99O3JldHVybiBjLnByb3RvdHlwZT1F
cnJvci5wcm90b3R5cGUsTS5jaGVja1Byb3BUeXBlcz11LE0uUHJvcFR5cGVzPU0sTX19LGZ1bmN0
aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPW4oMTM3KX0sZnVuY3Rpb24oZSx0KXsi
dXNlIHN0cmljdCI7dmFyIG49e1Byb3BlcnRpZXM6eyJhcmlhLWN1cnJlbnQiOjAsImFyaWEtZGV0
YWlscyI6MCwiYXJpYS1kaXNhYmxlZCI6MCwiYXJpYS1oaWRkZW4iOjAsImFyaWEtaW52YWxpZCI6
MCwiYXJpYS1rZXlzaG9ydGN1dHMiOjAsImFyaWEtbGFiZWwiOjAsImFyaWEtcm9sZWRlc2NyaXB0
aW9uIjowLCJhcmlhLWF1dG9jb21wbGV0ZSI6MCwiYXJpYS1jaGVja2VkIjowLCJhcmlhLWV4cGFu
ZGVkIjowLCJhcmlhLWhhc3BvcHVwIjowLCJhcmlhLWxldmVsIjowLCJhcmlhLW1vZGFsIjowLCJh
cmlhLW11bHRpbGluZSI6MCwiYXJpYS1tdWx0aXNlbGVjdGFibGUiOjAsImFyaWEtb3JpZW50YXRp
b24iOjAsImFyaWEtcGxhY2Vob2xkZXIiOjAsImFyaWEtcHJlc3NlZCI6MCwiYXJpYS1yZWFkb25s
eSI6MCwiYXJpYS1yZXF1aXJlZCI6MCwiYXJpYS1zZWxlY3RlZCI6MCwiYXJpYS1zb3J0IjowLCJh
cmlhLXZhbHVlbWF4IjowLCJhcmlhLXZhbHVlbWluIjowLCJhcmlhLXZhbHVlbm93IjowLCJhcmlh
LXZhbHVldGV4dCI6MCwiYXJpYS1hdG9taWMiOjAsImFyaWEtYnVzeSI6MCwiYXJpYS1saXZlIjow
LCJhcmlhLXJlbGV2YW50IjowLCJhcmlhLWRyb3BlZmZlY3QiOjAsImFyaWEtZ3JhYmJlZCI6MCwi
YXJpYS1hY3RpdmVkZXNjZW5kYW50IjowLCJhcmlhLWNvbGNvdW50IjowLCJhcmlhLWNvbGluZGV4
IjowLCJhcmlhLWNvbHNwYW4iOjAsImFyaWEtY29udHJvbHMiOjAsImFyaWEtZGVzY3JpYmVkYnki
OjAsImFyaWEtZXJyb3JtZXNzYWdlIjowLCJhcmlhLWZsb3d0byI6MCwiYXJpYS1sYWJlbGxlZGJ5
IjowLCJhcmlhLW93bnMiOjAsImFyaWEtcG9zaW5zZXQiOjAsImFyaWEtcm93Y291bnQiOjAsImFy
aWEtcm93aW5kZXgiOjAsImFyaWEtcm93c3BhbiI6MCwiYXJpYS1zZXRzaXplIjowfSxET01BdHRy
aWJ1dGVOYW1lczp7fSxET01Qcm9wZXJ0eU5hbWVzOnt9fTtlLmV4cG9ydHM9bn0sZnVuY3Rpb24o
ZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDUpLG89big1MiksaT17Zm9jdXNET01Db21wb25l
bnQ6ZnVuY3Rpb24oKXtvKHIuZ2V0Tm9kZUZyb21JbnN0YW5jZSh0aGlzKSl9fTtlLmV4cG9ydHM9
aX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKCl7dmFyIGU9d2luZG93
Lm9wZXJhO3JldHVybiJvYmplY3QiPT10eXBlb2YgZSYmImZ1bmN0aW9uIj09dHlwZW9mIGUudmVy
c2lvbiYmcGFyc2VJbnQoZS52ZXJzaW9uKCksMTApPD0xMn1mdW5jdGlvbiBvKGUpe3JldHVybihl
LmN0cmxLZXl8fGUuYWx0S2V5fHxlLm1ldGFLZXkpJiYhKGUuY3RybEtleSYmZS5hbHRLZXkpfWZ1
bmN0aW9uIGkoZSl7c3dpdGNoKGUpe2Nhc2UidG9wQ29tcG9zaXRpb25TdGFydCI6cmV0dXJuIHgu
Y29tcG9zaXRpb25TdGFydDtjYXNlInRvcENvbXBvc2l0aW9uRW5kIjpyZXR1cm4geC5jb21wb3Np
dGlvbkVuZDtjYXNlInRvcENvbXBvc2l0aW9uVXBkYXRlIjpyZXR1cm4geC5jb21wb3NpdGlvblVw
ZGF0ZX19ZnVuY3Rpb24gYShlLHQpe3JldHVybiJ0b3BLZXlEb3duIj09PWUmJnQua2V5Q29kZT09
PWJ9ZnVuY3Rpb24gdShlLHQpe3N3aXRjaChlKXtjYXNlInRvcEtleVVwIjpyZXR1cm4gZy5pbmRl
eE9mKHQua2V5Q29kZSkhPT0tMTtjYXNlInRvcEtleURvd24iOnJldHVybiB0LmtleUNvZGUhPT1i
O2Nhc2UidG9wS2V5UHJlc3MiOmNhc2UidG9wTW91c2VEb3duIjpjYXNlInRvcEJsdXIiOnJldHVy
biEwO2RlZmF1bHQ6cmV0dXJuITF9fWZ1bmN0aW9uIHMoZSl7dmFyIHQ9ZS5kZXRhaWw7cmV0dXJu
Im9iamVjdCI9PXR5cGVvZiB0JiYiZGF0YSJpbiB0P3QuZGF0YTpudWxsfWZ1bmN0aW9uIGMoZSx0
LG4scil7dmFyIG8sYztpZihfP289aShlKTpTP3UoZSxuKSYmKG89eC5jb21wb3NpdGlvbkVuZCk6
YShlLG4pJiYobz14LmNvbXBvc2l0aW9uU3RhcnQpLCFvKXJldHVybiBudWxsO3cmJihTfHxvIT09
eC5jb21wb3NpdGlvblN0YXJ0P289PT14LmNvbXBvc2l0aW9uRW5kJiZTJiYoYz1TLmdldERhdGEo
KSk6Uz12LmdldFBvb2xlZChyKSk7dmFyIGw9bS5nZXRQb29sZWQobyx0LG4scik7aWYoYylsLmRh
dGE9YztlbHNle3ZhciBwPXMobik7bnVsbCE9PXAmJihsLmRhdGE9cCl9cmV0dXJuIGYuYWNjdW11
bGF0ZVR3b1BoYXNlRGlzcGF0Y2hlcyhsKSxsfWZ1bmN0aW9uIGwoZSx0KXtzd2l0Y2goZSl7Y2Fz
ZSJ0b3BDb21wb3NpdGlvbkVuZCI6cmV0dXJuIHModCk7Y2FzZSJ0b3BLZXlQcmVzcyI6dmFyIG49
dC53aGljaDtyZXR1cm4gbiE9PVQ/bnVsbDooTz0hMCxQKTtjYXNlInRvcFRleHRJbnB1dCI6dmFy
IHI9dC5kYXRhO3JldHVybiByPT09UCYmTz9udWxsOnI7ZGVmYXVsdDpyZXR1cm4gbnVsbH19ZnVu
Y3Rpb24gcChlLHQpe2lmKFMpe2lmKCJ0b3BDb21wb3NpdGlvbkVuZCI9PT1lfHwhXyYmdShlLHQp
KXt2YXIgbj1TLmdldERhdGEoKTtyZXR1cm4gdi5yZWxlYXNlKFMpLFM9bnVsbCxufXJldHVybiBu
dWxsfXN3aXRjaChlKXtjYXNlInRvcFBhc3RlIjpyZXR1cm4gbnVsbDtjYXNlInRvcEtleVByZXNz
IjpyZXR1cm4gdC53aGljaCYmIW8odCk/U3RyaW5nLmZyb21DaGFyQ29kZSh0LndoaWNoKTpudWxs
O2Nhc2UidG9wQ29tcG9zaXRpb25FbmQiOnJldHVybiB3P251bGw6dC5kYXRhO2RlZmF1bHQ6cmV0
dXJuIG51bGx9fWZ1bmN0aW9uIGQoZSx0LG4scil7dmFyIG87aWYobz1FP2woZSxuKTpwKGUsbiks
IW8pcmV0dXJuIG51bGw7dmFyIGk9eS5nZXRQb29sZWQoeC5iZWZvcmVJbnB1dCx0LG4scik7cmV0
dXJuIGkuZGF0YT1vLGYuYWNjdW11bGF0ZVR3b1BoYXNlRGlzcGF0Y2hlcyhpKSxpfXZhciBmPW4o
MjApLGg9big2KSx2PW4oMTMyKSxtPW4oMTY5KSx5PW4oMTcyKSxnPVs5LDEzLDI3LDMyXSxiPTIy
OSxfPWguY2FuVXNlRE9NJiYiQ29tcG9zaXRpb25FdmVudCJpbiB3aW5kb3csQz1udWxsO2guY2Fu
VXNlRE9NJiYiZG9jdW1lbnRNb2RlImluIGRvY3VtZW50JiYoQz1kb2N1bWVudC5kb2N1bWVudE1v
ZGUpO3ZhciBFPWguY2FuVXNlRE9NJiYiVGV4dEV2ZW50ImluIHdpbmRvdyYmIUMmJiFyKCksdz1o
LmNhblVzZURPTSYmKCFffHxDJiZDPjgmJkM8PTExKSxUPTMyLFA9U3RyaW5nLmZyb21DaGFyQ29k
ZShUKSx4PXtiZWZvcmVJbnB1dDp7cGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6e2J1YmJsZWQ6Im9u
QmVmb3JlSW5wdXQiLGNhcHR1cmVkOiJvbkJlZm9yZUlucHV0Q2FwdHVyZSJ9LGRlcGVuZGVuY2ll
czpbInRvcENvbXBvc2l0aW9uRW5kIiwidG9wS2V5UHJlc3MiLCJ0b3BUZXh0SW5wdXQiLCJ0b3BQ
YXN0ZSJdfSxjb21wb3NpdGlvbkVuZDp7cGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6e2J1YmJsZWQ6
Im9uQ29tcG9zaXRpb25FbmQiLGNhcHR1cmVkOiJvbkNvbXBvc2l0aW9uRW5kQ2FwdHVyZSJ9LGRl
cGVuZGVuY2llczpbInRvcEJsdXIiLCJ0b3BDb21wb3NpdGlvbkVuZCIsInRvcEtleURvd24iLCJ0
b3BLZXlQcmVzcyIsInRvcEtleVVwIiwidG9wTW91c2VEb3duIl19LGNvbXBvc2l0aW9uU3RhcnQ6
e3BoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOntidWJibGVkOiJvbkNvbXBvc2l0aW9uU3RhcnQiLGNh
cHR1cmVkOiJvbkNvbXBvc2l0aW9uU3RhcnRDYXB0dXJlIn0sZGVwZW5kZW5jaWVzOlsidG9wQmx1
ciIsInRvcENvbXBvc2l0aW9uU3RhcnQiLCJ0b3BLZXlEb3duIiwidG9wS2V5UHJlc3MiLCJ0b3BL
ZXlVcCIsInRvcE1vdXNlRG93biJdfSxjb21wb3NpdGlvblVwZGF0ZTp7cGhhc2VkUmVnaXN0cmF0
aW9uTmFtZXM6e2J1YmJsZWQ6Im9uQ29tcG9zaXRpb25VcGRhdGUiLGNhcHR1cmVkOiJvbkNvbXBv
c2l0aW9uVXBkYXRlQ2FwdHVyZSJ9LGRlcGVuZGVuY2llczpbInRvcEJsdXIiLCJ0b3BDb21wb3Np
dGlvblVwZGF0ZSIsInRvcEtleURvd24iLCJ0b3BLZXlQcmVzcyIsInRvcEtleVVwIiwidG9wTW91
c2VEb3duIl19fSxPPSExLFM9bnVsbCxrPXtldmVudFR5cGVzOngsZXh0cmFjdEV2ZW50czpmdW5j
dGlvbihlLHQsbixyKXtyZXR1cm5bYyhlLHQsbixyKSxkKGUsdCxuLHIpXX19O2UuZXhwb3J0cz1r
fSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oNTgpLG89big2KSxpPShuKDgp
LG4oOTkpLG4oMTc4KSksYT1uKDEwNiksdT1uKDEwOSkscz0obigyKSx1KGZ1bmN0aW9uKGUpe3Jl
dHVybiBhKGUpfSkpLGM9ITEsbD0iY3NzRmxvYXQiO2lmKG8uY2FuVXNlRE9NKXt2YXIgcD1kb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKS5zdHlsZTt0cnl7cC5mb250PSIifWNhdGNoKGQpe2M9
ITB9dm9pZCAwPT09ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLmNzc0Zsb2F0JiYobD0i
c3R5bGVGbG9hdCIpfXZhciBmPXtjcmVhdGVNYXJrdXBGb3JTdHlsZXM6ZnVuY3Rpb24oZSx0KXt2
YXIgbj0iIjtmb3IodmFyIHIgaW4gZSlpZihlLmhhc093blByb3BlcnR5KHIpKXt2YXIgbz0wPT09
ci5pbmRleE9mKCItLSIpLGE9ZVtyXTtudWxsIT1hJiYobis9cyhyKSsiOiIsbis9aShyLGEsdCxv
KSsiOyIpfXJldHVybiBufHxudWxsfSxzZXRWYWx1ZUZvclN0eWxlczpmdW5jdGlvbihlLHQsbil7
dmFyIG89ZS5zdHlsZTtmb3IodmFyIGEgaW4gdClpZih0Lmhhc093blByb3BlcnR5KGEpKXt2YXIg
dT0wPT09YS5pbmRleE9mKCItLSIpLHM9aShhLHRbYV0sbix1KTtpZigiZmxvYXQiIT09YSYmImNz
c0Zsb2F0IiE9PWF8fChhPWwpLHUpby5zZXRQcm9wZXJ0eShhLHMpO2Vsc2UgaWYocylvW2FdPXM7
ZWxzZXt2YXIgcD1jJiZyLnNob3J0aGFuZFByb3BlcnR5RXhwYW5zaW9uc1thXTtpZihwKWZvcih2
YXIgZCBpbiBwKW9bZF09IiI7ZWxzZSBvW2FdPSIifX19fTtlLmV4cG9ydHM9Zn0sZnVuY3Rpb24o
ZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCxuKXt2YXIgcj14LmdldFBvb2xlZChO
LmNoYW5nZSxlLHQsbik7cmV0dXJuIHIudHlwZT0iY2hhbmdlIixFLmFjY3VtdWxhdGVUd29QaGFz
ZURpc3BhdGNoZXMocikscn1mdW5jdGlvbiBvKGUpe3ZhciB0PWUubm9kZU5hbWUmJmUubm9kZU5h
bWUudG9Mb3dlckNhc2UoKTtyZXR1cm4ic2VsZWN0Ij09PXR8fCJpbnB1dCI9PT10JiYiZmlsZSI9
PT1lLnR5cGV9ZnVuY3Rpb24gaShlKXt2YXIgdD1yKFIsZSxTKGUpKTtQLmJhdGNoZWRVcGRhdGVz
KGEsdCl9ZnVuY3Rpb24gYShlKXtDLmVucXVldWVFdmVudHMoZSksQy5wcm9jZXNzRXZlbnRRdWV1
ZSghMSl9ZnVuY3Rpb24gdShlLHQpe0k9ZSxSPXQsSS5hdHRhY2hFdmVudCgib25jaGFuZ2UiLGkp
fWZ1bmN0aW9uIHMoKXtJJiYoSS5kZXRhY2hFdmVudCgib25jaGFuZ2UiLGkpLEk9bnVsbCxSPW51
bGwpfWZ1bmN0aW9uIGMoZSx0KXt2YXIgbj1PLnVwZGF0ZVZhbHVlSWZDaGFuZ2VkKGUpLHI9dC5z
aW11bGF0ZWQ9PT0hMCYmai5fYWxsb3dTaW11bGF0ZWRQYXNzVGhyb3VnaDtpZihufHxyKXJldHVy
biBlfWZ1bmN0aW9uIGwoZSx0KXtpZigidG9wQ2hhbmdlIj09PWUpcmV0dXJuIHR9ZnVuY3Rpb24g
cChlLHQsbil7InRvcEZvY3VzIj09PWU/KHMoKSx1KHQsbikpOiJ0b3BCbHVyIj09PWUmJnMoKX1m
dW5jdGlvbiBkKGUsdCl7ST1lLFI9dCxJLmF0dGFjaEV2ZW50KCJvbnByb3BlcnR5Y2hhbmdlIixo
KX1mdW5jdGlvbiBmKCl7SSYmKEkuZGV0YWNoRXZlbnQoIm9ucHJvcGVydHljaGFuZ2UiLGgpLEk9
bnVsbCxSPW51bGwpfWZ1bmN0aW9uIGgoZSl7InZhbHVlIj09PWUucHJvcGVydHlOYW1lJiZjKFIs
ZSkmJmkoZSl9ZnVuY3Rpb24gdihlLHQsbil7InRvcEZvY3VzIj09PWU/KGYoKSxkKHQsbikpOiJ0
b3BCbHVyIj09PWUmJmYoKX1mdW5jdGlvbiBtKGUsdCxuKXtpZigidG9wU2VsZWN0aW9uQ2hhbmdl
Ij09PWV8fCJ0b3BLZXlVcCI9PT1lfHwidG9wS2V5RG93biI9PT1lKXJldHVybiBjKFIsbil9ZnVu
Y3Rpb24geShlKXsKLXZhciB0PWUubm9kZU5hbWU7cmV0dXJuIHQmJiJpbnB1dCI9PT10LnRvTG93
ZXJDYXNlKCkmJigiY2hlY2tib3giPT09ZS50eXBlfHwicmFkaW8iPT09ZS50eXBlKX1mdW5jdGlv
biBnKGUsdCxuKXtpZigidG9wQ2xpY2siPT09ZSlyZXR1cm4gYyh0LG4pfWZ1bmN0aW9uIGIoZSx0
LG4pe2lmKCJ0b3BJbnB1dCI9PT1lfHwidG9wQ2hhbmdlIj09PWUpcmV0dXJuIGModCxuKX1mdW5j
dGlvbiBfKGUsdCl7aWYobnVsbCE9ZSl7dmFyIG49ZS5fd3JhcHBlclN0YXRlfHx0Ll93cmFwcGVy
U3RhdGU7aWYobiYmbi5jb250cm9sbGVkJiYibnVtYmVyIj09PXQudHlwZSl7dmFyIHI9IiIrdC52
YWx1ZTt0LmdldEF0dHJpYnV0ZSgidmFsdWUiKSE9PXImJnQuc2V0QXR0cmlidXRlKCJ2YWx1ZSIs
cil9fX12YXIgQz1uKDE5KSxFPW4oMjApLHc9big2KSxUPW4oNSksUD1uKDkpLHg9bigxMCksTz1u
KDc0KSxTPW4oNDYpLGs9big0NyksTT1uKDc2KSxOPXtjaGFuZ2U6e3BoYXNlZFJlZ2lzdHJhdGlv
bk5hbWVzOntidWJibGVkOiJvbkNoYW5nZSIsY2FwdHVyZWQ6Im9uQ2hhbmdlQ2FwdHVyZSJ9LGRl
cGVuZGVuY2llczpbInRvcEJsdXIiLCJ0b3BDaGFuZ2UiLCJ0b3BDbGljayIsInRvcEZvY3VzIiwi
dG9wSW5wdXQiLCJ0b3BLZXlEb3duIiwidG9wS2V5VXAiLCJ0b3BTZWxlY3Rpb25DaGFuZ2UiXX19
LEk9bnVsbCxSPW51bGwsQT0hMTt3LmNhblVzZURPTSYmKEE9aygiY2hhbmdlIikmJighZG9jdW1l
bnQuZG9jdW1lbnRNb2RlfHxkb2N1bWVudC5kb2N1bWVudE1vZGU+OCkpO3ZhciBEPSExO3cuY2Fu
VXNlRE9NJiYoRD1rKCJpbnB1dCIpJiYoISgiZG9jdW1lbnRNb2RlImluIGRvY3VtZW50KXx8ZG9j
dW1lbnQuZG9jdW1lbnRNb2RlPjkpKTt2YXIgaj17ZXZlbnRUeXBlczpOLF9hbGxvd1NpbXVsYXRl
ZFBhc3NUaHJvdWdoOiEwLF9pc0lucHV0RXZlbnRTdXBwb3J0ZWQ6RCxleHRyYWN0RXZlbnRzOmZ1
bmN0aW9uKGUsdCxuLGkpe3ZhciBhLHUscz10P1QuZ2V0Tm9kZUZyb21JbnN0YW5jZSh0KTp3aW5k
b3c7aWYobyhzKT9BP2E9bDp1PXA6TShzKT9EP2E9YjooYT1tLHU9dik6eShzKSYmKGE9ZyksYSl7
dmFyIGM9YShlLHQsbik7aWYoYyl7dmFyIGQ9cihjLG4saSk7cmV0dXJuIGR9fXUmJnUoZSxzLHQp
LCJ0b3BCbHVyIj09PWUmJl8odCxzKX19O2UuZXhwb3J0cz1qfSxmdW5jdGlvbihlLHQsbil7InVz
ZSBzdHJpY3QiO3ZhciByPW4oMyksbz1uKDE0KSxpPW4oNiksYT1uKDEwMiksdT1uKDcpLHM9KG4o
MSkse2Rhbmdlcm91c2x5UmVwbGFjZU5vZGVXaXRoTWFya3VwOmZ1bmN0aW9uKGUsdCl7aWYoaS5j
YW5Vc2VET00/dm9pZCAwOnIoIjU2IiksdD92b2lkIDA6cigiNTciKSwiSFRNTCI9PT1lLm5vZGVO
YW1lP3IoIjU4Iik6dm9pZCAwLCJzdHJpbmciPT10eXBlb2YgdCl7dmFyIG49YSh0LHUpWzBdO2Uu
cGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQobixlKX1lbHNlIG8ucmVwbGFjZUNoaWxkV2l0aFRyZWUo
ZSx0KX19KTtlLmV4cG9ydHM9c30sZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7dmFyIG49WyJS
ZXNwb25kZXJFdmVudFBsdWdpbiIsIlNpbXBsZUV2ZW50UGx1Z2luIiwiVGFwRXZlbnRQbHVnaW4i
LCJFbnRlckxlYXZlRXZlbnRQbHVnaW4iLCJDaGFuZ2VFdmVudFBsdWdpbiIsIlNlbGVjdEV2ZW50
UGx1Z2luIiwiQmVmb3JlSW5wdXRFdmVudFBsdWdpbiJdO2UuZXhwb3J0cz1ufSxmdW5jdGlvbihl
LHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oMjApLG89big1KSxpPW4oMjYpLGE9e21vdXNlRW50
ZXI6e3JlZ2lzdHJhdGlvbk5hbWU6Im9uTW91c2VFbnRlciIsZGVwZW5kZW5jaWVzOlsidG9wTW91
c2VPdXQiLCJ0b3BNb3VzZU92ZXIiXX0sbW91c2VMZWF2ZTp7cmVnaXN0cmF0aW9uTmFtZToib25N
b3VzZUxlYXZlIixkZXBlbmRlbmNpZXM6WyJ0b3BNb3VzZU91dCIsInRvcE1vdXNlT3ZlciJdfX0s
dT17ZXZlbnRUeXBlczphLGV4dHJhY3RFdmVudHM6ZnVuY3Rpb24oZSx0LG4sdSl7aWYoInRvcE1v
dXNlT3ZlciI9PT1lJiYobi5yZWxhdGVkVGFyZ2V0fHxuLmZyb21FbGVtZW50KSlyZXR1cm4gbnVs
bDtpZigidG9wTW91c2VPdXQiIT09ZSYmInRvcE1vdXNlT3ZlciIhPT1lKXJldHVybiBudWxsO3Zh
ciBzO2lmKHUud2luZG93PT09dSlzPXU7ZWxzZXt2YXIgYz11Lm93bmVyRG9jdW1lbnQ7cz1jP2Mu
ZGVmYXVsdFZpZXd8fGMucGFyZW50V2luZG93OndpbmRvd312YXIgbCxwO2lmKCJ0b3BNb3VzZU91
dCI9PT1lKXtsPXQ7dmFyIGQ9bi5yZWxhdGVkVGFyZ2V0fHxuLnRvRWxlbWVudDtwPWQ/by5nZXRD
bG9zZXN0SW5zdGFuY2VGcm9tTm9kZShkKTpudWxsfWVsc2UgbD1udWxsLHA9dDtpZihsPT09cCly
ZXR1cm4gbnVsbDt2YXIgZj1udWxsPT1sP3M6by5nZXROb2RlRnJvbUluc3RhbmNlKGwpLGg9bnVs
bD09cD9zOm8uZ2V0Tm9kZUZyb21JbnN0YW5jZShwKSx2PWkuZ2V0UG9vbGVkKGEubW91c2VMZWF2
ZSxsLG4sdSk7di50eXBlPSJtb3VzZWxlYXZlIix2LnRhcmdldD1mLHYucmVsYXRlZFRhcmdldD1o
O3ZhciBtPWkuZ2V0UG9vbGVkKGEubW91c2VFbnRlcixwLG4sdSk7cmV0dXJuIG0udHlwZT0ibW91
c2VlbnRlciIsbS50YXJnZXQ9aCxtLnJlbGF0ZWRUYXJnZXQ9ZixyLmFjY3VtdWxhdGVFbnRlckxl
YXZlRGlzcGF0Y2hlcyh2LG0sbCxwKSxbdixtXX19O2UuZXhwb3J0cz11fSxmdW5jdGlvbihlLHQs
bil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7dGhpcy5fcm9vdD1lLHRoaXMuX3N0YXJ0VGV4
dD10aGlzLmdldFRleHQoKSx0aGlzLl9mYWxsYmFja1RleHQ9bnVsbH12YXIgbz1uKDQpLGk9bigx
MyksYT1uKDczKTtvKHIucHJvdG90eXBlLHtkZXN0cnVjdG9yOmZ1bmN0aW9uKCl7dGhpcy5fcm9v
dD1udWxsLHRoaXMuX3N0YXJ0VGV4dD1udWxsLHRoaXMuX2ZhbGxiYWNrVGV4dD1udWxsfSxnZXRU
ZXh0OmZ1bmN0aW9uKCl7cmV0dXJuInZhbHVlImluIHRoaXMuX3Jvb3Q/dGhpcy5fcm9vdC52YWx1
ZTp0aGlzLl9yb290W2EoKV19LGdldERhdGE6ZnVuY3Rpb24oKXtpZih0aGlzLl9mYWxsYmFja1Rl
eHQpcmV0dXJuIHRoaXMuX2ZhbGxiYWNrVGV4dDt2YXIgZSx0LG49dGhpcy5fc3RhcnRUZXh0LHI9
bi5sZW5ndGgsbz10aGlzLmdldFRleHQoKSxpPW8ubGVuZ3RoO2ZvcihlPTA7ZTxyJiZuW2VdPT09
b1tlXTtlKyspO3ZhciBhPXItZTtmb3IodD0xO3Q8PWEmJm5bci10XT09PW9baS10XTt0KyspO3Zh
ciB1PXQ+MT8xLXQ6dm9pZCAwO3JldHVybiB0aGlzLl9mYWxsYmFja1RleHQ9by5zbGljZShlLHUp
LHRoaXMuX2ZhbGxiYWNrVGV4dH19KSxpLmFkZFBvb2xpbmdUbyhyKSxlLmV4cG9ydHM9cn0sZnVu
Y3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDE1KSxvPXIuaW5qZWN0aW9uLk1VU1Rf
VVNFX1BST1BFUlRZLGk9ci5pbmplY3Rpb24uSEFTX0JPT0xFQU5fVkFMVUUsYT1yLmluamVjdGlv
bi5IQVNfTlVNRVJJQ19WQUxVRSx1PXIuaW5qZWN0aW9uLkhBU19QT1NJVElWRV9OVU1FUklDX1ZB
TFVFLHM9ci5pbmplY3Rpb24uSEFTX09WRVJMT0FERURfQk9PTEVBTl9WQUxVRSxjPXtpc0N1c3Rv
bUF0dHJpYnV0ZTpSZWdFeHAucHJvdG90eXBlLnRlc3QuYmluZChuZXcgUmVnRXhwKCJeKGRhdGF8
YXJpYSktWyIrci5BVFRSSUJVVEVfTkFNRV9DSEFSKyJdKiQiKSksUHJvcGVydGllczp7YWNjZXB0
OjAsYWNjZXB0Q2hhcnNldDowLGFjY2Vzc0tleTowLGFjdGlvbjowLGFsbG93RnVsbFNjcmVlbjpp
LGFsbG93VHJhbnNwYXJlbmN5OjAsYWx0OjAsYXM6MCxhc3luYzppLGF1dG9Db21wbGV0ZTowLGF1
dG9QbGF5OmksY2FwdHVyZTppLGNlbGxQYWRkaW5nOjAsY2VsbFNwYWNpbmc6MCxjaGFyU2V0OjAs
Y2hhbGxlbmdlOjAsY2hlY2tlZDpvfGksY2l0ZTowLGNsYXNzSUQ6MCxjbGFzc05hbWU6MCxjb2xz
OnUsY29sU3BhbjowLGNvbnRlbnQ6MCxjb250ZW50RWRpdGFibGU6MCxjb250ZXh0TWVudTowLGNv
bnRyb2xzOmksY29vcmRzOjAsY3Jvc3NPcmlnaW46MCxkYXRhOjAsZGF0ZVRpbWU6MCxkZWZhdWx0
OmksZGVmZXI6aSxkaXI6MCxkaXNhYmxlZDppLGRvd25sb2FkOnMsZHJhZ2dhYmxlOjAsZW5jVHlw
ZTowLGZvcm06MCxmb3JtQWN0aW9uOjAsZm9ybUVuY1R5cGU6MCxmb3JtTWV0aG9kOjAsZm9ybU5v
VmFsaWRhdGU6aSxmb3JtVGFyZ2V0OjAsZnJhbWVCb3JkZXI6MCxoZWFkZXJzOjAsaGVpZ2h0OjAs
aGlkZGVuOmksaGlnaDowLGhyZWY6MCxocmVmTGFuZzowLGh0bWxGb3I6MCxodHRwRXF1aXY6MCxp
Y29uOjAsaWQ6MCxpbnB1dE1vZGU6MCxpbnRlZ3JpdHk6MCxpczowLGtleVBhcmFtczowLGtleVR5
cGU6MCxraW5kOjAsbGFiZWw6MCxsYW5nOjAsbGlzdDowLGxvb3A6aSxsb3c6MCxtYW5pZmVzdDow
LG1hcmdpbkhlaWdodDowLG1hcmdpbldpZHRoOjAsbWF4OjAsbWF4TGVuZ3RoOjAsbWVkaWE6MCxt
ZWRpYUdyb3VwOjAsbWV0aG9kOjAsbWluOjAsbWluTGVuZ3RoOjAsbXVsdGlwbGU6b3xpLG11dGVk
Om98aSxuYW1lOjAsbm9uY2U6MCxub1ZhbGlkYXRlOmksb3BlbjppLG9wdGltdW06MCxwYXR0ZXJu
OjAscGxhY2Vob2xkZXI6MCxwbGF5c0lubGluZTppLHBvc3RlcjowLHByZWxvYWQ6MCxwcm9maWxl
OjAscmFkaW9Hcm91cDowLHJlYWRPbmx5OmkscmVmZXJyZXJQb2xpY3k6MCxyZWw6MCxyZXF1aXJl
ZDppLHJldmVyc2VkOmkscm9sZTowLHJvd3M6dSxyb3dTcGFuOmEsc2FuZGJveDowLHNjb3BlOjAs
c2NvcGVkOmksc2Nyb2xsaW5nOjAsc2VhbWxlc3M6aSxzZWxlY3RlZDpvfGksc2hhcGU6MCxzaXpl
OnUsc2l6ZXM6MCxzcGFuOnUsc3BlbGxDaGVjazowLHNyYzowLHNyY0RvYzowLHNyY0xhbmc6MCxz
cmNTZXQ6MCxzdGFydDphLHN0ZXA6MCxzdHlsZTowLHN1bW1hcnk6MCx0YWJJbmRleDowLHRhcmdl
dDowLHRpdGxlOjAsdHlwZTowLHVzZU1hcDowLHZhbHVlOjAsd2lkdGg6MCx3bW9kZTowLHdyYXA6
MCxhYm91dDowLGRhdGF0eXBlOjAsaW5saXN0OjAscHJlZml4OjAscHJvcGVydHk6MCxyZXNvdXJj
ZTowLHR5cGVvZjowLHZvY2FiOjAsYXV0b0NhcGl0YWxpemU6MCxhdXRvQ29ycmVjdDowLGF1dG9T
YXZlOjAsY29sb3I6MCxpdGVtUHJvcDowLGl0ZW1TY29wZTppLGl0ZW1UeXBlOjAsaXRlbUlEOjAs
aXRlbVJlZjowLHJlc3VsdHM6MCxzZWN1cml0eTowLHVuc2VsZWN0YWJsZTowfSxET01BdHRyaWJ1
dGVOYW1lczp7YWNjZXB0Q2hhcnNldDoiYWNjZXB0LWNoYXJzZXQiLGNsYXNzTmFtZToiY2xhc3Mi
LGh0bWxGb3I6ImZvciIsaHR0cEVxdWl2OiJodHRwLWVxdWl2In0sRE9NUHJvcGVydHlOYW1lczp7
fSxET01NdXRhdGlvbk1ldGhvZHM6e3ZhbHVlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIG51bGw9PXQ/
ZS5yZW1vdmVBdHRyaWJ1dGUoInZhbHVlIik6dm9pZCgibnVtYmVyIiE9PWUudHlwZXx8ZS5oYXNB
dHRyaWJ1dGUoInZhbHVlIik9PT0hMT9lLnNldEF0dHJpYnV0ZSgidmFsdWUiLCIiK3QpOmUudmFs
aWRpdHkmJiFlLnZhbGlkaXR5LmJhZElucHV0JiZlLm93bmVyRG9jdW1lbnQuYWN0aXZlRWxlbWVu
dCE9PWUmJmUuc2V0QXR0cmlidXRlKCJ2YWx1ZSIsIiIrdCkpfX19O2UuZXhwb3J0cz1jfSxmdW5j
dGlvbihlLHQsbil7KGZ1bmN0aW9uKHQpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCxuLHIp
e3ZhciBvPXZvaWQgMD09PWVbbl07bnVsbCE9dCYmbyYmKGVbbl09aSh0LCEwKSl9dmFyIG89bigx
NiksaT1uKDc1KSxhPShuKDM4KSxuKDQ4KSksdT1uKDc4KTtuKDIpOyJ1bmRlZmluZWQiIT10eXBl
b2YgdCYmdC5lbnYsMTt2YXIgcz17aW5zdGFudGlhdGVDaGlsZHJlbjpmdW5jdGlvbihlLHQsbixv
KXtpZihudWxsPT1lKXJldHVybiBudWxsO3ZhciBpPXt9O3JldHVybiB1KGUscixpKSxpfSx1cGRh
dGVDaGlsZHJlbjpmdW5jdGlvbihlLHQsbixyLHUscyxjLGwscCl7aWYodHx8ZSl7dmFyIGQsZjtm
b3IoZCBpbiB0KWlmKHQuaGFzT3duUHJvcGVydHkoZCkpe2Y9ZSYmZVtkXTt2YXIgaD1mJiZmLl9j
dXJyZW50RWxlbWVudCx2PXRbZF07aWYobnVsbCE9ZiYmYShoLHYpKW8ucmVjZWl2ZUNvbXBvbmVu
dChmLHYsdSxsKSx0W2RdPWY7ZWxzZXtmJiYocltkXT1vLmdldEhvc3ROb2RlKGYpLG8udW5tb3Vu
dENvbXBvbmVudChmLCExKSk7dmFyIG09aSh2LCEwKTt0W2RdPW07dmFyIHk9by5tb3VudENvbXBv
bmVudChtLHUscyxjLGwscCk7bi5wdXNoKHkpfX1mb3IoZCBpbiBlKSFlLmhhc093blByb3BlcnR5
KGQpfHx0JiZ0Lmhhc093blByb3BlcnR5KGQpfHwoZj1lW2RdLHJbZF09by5nZXRIb3N0Tm9kZShm
KSxvLnVubW91bnRDb21wb25lbnQoZiwhMSkpfX0sdW5tb3VudENoaWxkcmVuOmZ1bmN0aW9uKGUs
dCl7Zm9yKHZhciBuIGluIGUpaWYoZS5oYXNPd25Qcm9wZXJ0eShuKSl7dmFyIHI9ZVtuXTtvLnVu
bW91bnRDb21wb25lbnQocix0KX19fTtlLmV4cG9ydHM9c30pLmNhbGwodCxuKDg3KSl9LGZ1bmN0
aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigzNCksbz1uKDE0MiksaT17cHJvY2Vzc0No
aWxkcmVuVXBkYXRlczpvLmRhbmdlcm91c2x5UHJvY2Vzc0NoaWxkcmVuVXBkYXRlcyxyZXBsYWNl
Tm9kZVdpdGhNYXJrdXA6ci5kYW5nZXJvdXNseVJlcGxhY2VOb2RlV2l0aE1hcmt1cH07ZS5leHBv
cnRzPWl9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXt9ZnVuY3Rp
b24gbyhlLHQpe31mdW5jdGlvbiBpKGUpe3JldHVybiEoIWUucHJvdG90eXBlfHwhZS5wcm90b3R5
cGUuaXNSZWFjdENvbXBvbmVudCl9ZnVuY3Rpb24gYShlKXtyZXR1cm4hKCFlLnByb3RvdHlwZXx8
IWUucHJvdG90eXBlLmlzUHVyZVJlYWN0Q29tcG9uZW50KX12YXIgdT1uKDMpLHM9big0KSxjPW4o
MTcpLGw9big0MCkscD1uKDExKSxkPW4oNDEpLGY9bigyMSksaD0obig4KSxuKDY4KSksdj1uKDE2
KSxtPW4oMjQpLHk9KG4oMSksbigzMikpLGc9big0OCksYj0obigyKSx7SW1wdXJlQ2xhc3M6MCxQ
dXJlQ2xhc3M6MSxTdGF0ZWxlc3NGdW5jdGlvbmFsOjJ9KTtyLnByb3RvdHlwZS5yZW5kZXI9ZnVu
Y3Rpb24oKXt2YXIgZT1mLmdldCh0aGlzKS5fY3VycmVudEVsZW1lbnQudHlwZSx0PWUodGhpcy5w
cm9wcyx0aGlzLmNvbnRleHQsdGhpcy51cGRhdGVyKTtyZXR1cm4gbyhlLHQpLHR9O3ZhciBfPTEs
Qz17Y29uc3RydWN0OmZ1bmN0aW9uKGUpe3RoaXMuX2N1cnJlbnRFbGVtZW50PWUsdGhpcy5fcm9v
dE5vZGVJRD0wLHRoaXMuX2NvbXBvc2l0ZVR5cGU9bnVsbCx0aGlzLl9pbnN0YW5jZT1udWxsLHRo
aXMuX2hvc3RQYXJlbnQ9bnVsbCx0aGlzLl9ob3N0Q29udGFpbmVySW5mbz1udWxsLHRoaXMuX3Vw
ZGF0ZUJhdGNoTnVtYmVyPW51bGwsdGhpcy5fcGVuZGluZ0VsZW1lbnQ9bnVsbCx0aGlzLl9wZW5k
aW5nU3RhdGVRdWV1ZT1udWxsLHRoaXMuX3BlbmRpbmdSZXBsYWNlU3RhdGU9ITEsdGhpcy5fcGVu
ZGluZ0ZvcmNlVXBkYXRlPSExLHRoaXMuX3JlbmRlcmVkTm9kZVR5cGU9bnVsbCx0aGlzLl9yZW5k
ZXJlZENvbXBvbmVudD1udWxsLHRoaXMuX2NvbnRleHQ9bnVsbCx0aGlzLl9tb3VudE9yZGVyPTAs
dGhpcy5fdG9wTGV2ZWxXcmFwcGVyPW51bGwsdGhpcy5fcGVuZGluZ0NhbGxiYWNrcz1udWxsLHRo
aXMuX2NhbGxlZENvbXBvbmVudFdpbGxVbm1vdW50PSExfSxtb3VudENvbXBvbmVudDpmdW5jdGlv
bihlLHQsbixzKXt0aGlzLl9jb250ZXh0PXMsdGhpcy5fbW91bnRPcmRlcj1fKyssdGhpcy5faG9z
dFBhcmVudD10LHRoaXMuX2hvc3RDb250YWluZXJJbmZvPW47dmFyIGwscD10aGlzLl9jdXJyZW50
RWxlbWVudC5wcm9wcyxkPXRoaXMuX3Byb2Nlc3NDb250ZXh0KHMpLGg9dGhpcy5fY3VycmVudEVs
ZW1lbnQudHlwZSx2PWUuZ2V0VXBkYXRlUXVldWUoKSx5PWkoaCksZz10aGlzLl9jb25zdHJ1Y3RD
b21wb25lbnQoeSxwLGQsdik7eXx8bnVsbCE9ZyYmbnVsbCE9Zy5yZW5kZXI/YShoKT90aGlzLl9j
b21wb3NpdGVUeXBlPWIuUHVyZUNsYXNzOnRoaXMuX2NvbXBvc2l0ZVR5cGU9Yi5JbXB1cmVDbGFz
czoobD1nLG8oaCxsKSxudWxsPT09Z3x8Zz09PSExfHxjLmlzVmFsaWRFbGVtZW50KGcpP3ZvaWQg
MDp1KCIxMDUiLGguZGlzcGxheU5hbWV8fGgubmFtZXx8IkNvbXBvbmVudCIpLGc9bmV3IHIoaCks
dGhpcy5fY29tcG9zaXRlVHlwZT1iLlN0YXRlbGVzc0Z1bmN0aW9uYWwpO2cucHJvcHM9cCxnLmNv
bnRleHQ9ZCxnLnJlZnM9bSxnLnVwZGF0ZXI9dix0aGlzLl9pbnN0YW5jZT1nLGYuc2V0KGcsdGhp
cyk7dmFyIEM9Zy5zdGF0ZTt2b2lkIDA9PT1DJiYoZy5zdGF0ZT1DPW51bGwpLCJvYmplY3QiIT10
eXBlb2YgQ3x8QXJyYXkuaXNBcnJheShDKT91KCIxMDYiLHRoaXMuZ2V0TmFtZSgpfHwiUmVhY3RD
b21wb3NpdGVDb21wb25lbnQiKTp2b2lkIDAsdGhpcy5fcGVuZGluZ1N0YXRlUXVldWU9bnVsbCx0
aGlzLl9wZW5kaW5nUmVwbGFjZVN0YXRlPSExLHRoaXMuX3BlbmRpbmdGb3JjZVVwZGF0ZT0hMTt2
YXIgRTtyZXR1cm4gRT1nLnVuc3RhYmxlX2hhbmRsZUVycm9yP3RoaXMucGVyZm9ybUluaXRpYWxN
b3VudFdpdGhFcnJvckhhbmRsaW5nKGwsdCxuLGUscyk6dGhpcy5wZXJmb3JtSW5pdGlhbE1vdW50
KGwsdCxuLGUscyksZy5jb21wb25lbnREaWRNb3VudCYmZS5nZXRSZWFjdE1vdW50UmVhZHkoKS5l
bnF1ZXVlKGcuY29tcG9uZW50RGlkTW91bnQsZyksRX0sX2NvbnN0cnVjdENvbXBvbmVudDpmdW5j
dGlvbihlLHQsbixyKXtyZXR1cm4gdGhpcy5fY29uc3RydWN0Q29tcG9uZW50V2l0aG91dE93bmVy
KGUsdCxuLHIpfSxfY29uc3RydWN0Q29tcG9uZW50V2l0aG91dE93bmVyOmZ1bmN0aW9uKGUsdCxu
LHIpe3ZhciBvPXRoaXMuX2N1cnJlbnRFbGVtZW50LnR5cGU7cmV0dXJuIGU/bmV3IG8odCxuLHIp
Om8odCxuLHIpfSxwZXJmb3JtSW5pdGlhbE1vdW50V2l0aEVycm9ySGFuZGxpbmc6ZnVuY3Rpb24o
ZSx0LG4scixvKXt2YXIgaSxhPXIuY2hlY2twb2ludCgpO3RyeXtpPXRoaXMucGVyZm9ybUluaXRp
YWxNb3VudChlLHQsbixyLG8pfWNhdGNoKHUpe3Iucm9sbGJhY2soYSksdGhpcy5faW5zdGFuY2Uu
dW5zdGFibGVfaGFuZGxlRXJyb3IodSksdGhpcy5fcGVuZGluZ1N0YXRlUXVldWUmJih0aGlzLl9p
bnN0YW5jZS5zdGF0ZT10aGlzLl9wcm9jZXNzUGVuZGluZ1N0YXRlKHRoaXMuX2luc3RhbmNlLnBy
b3BzLHRoaXMuX2luc3RhbmNlLmNvbnRleHQpKSxhPXIuY2hlY2twb2ludCgpLHRoaXMuX3JlbmRl
cmVkQ29tcG9uZW50LnVubW91bnRDb21wb25lbnQoITApLHIucm9sbGJhY2soYSksaT10aGlzLnBl
cmZvcm1Jbml0aWFsTW91bnQoZSx0LG4scixvKX1yZXR1cm4gaX0scGVyZm9ybUluaXRpYWxNb3Vu
dDpmdW5jdGlvbihlLHQsbixyLG8pe3ZhciBpPXRoaXMuX2luc3RhbmNlLGE9MDtpLmNvbXBvbmVu
dFdpbGxNb3VudCYmKGkuY29tcG9uZW50V2lsbE1vdW50KCksdGhpcy5fcGVuZGluZ1N0YXRlUXVl
dWUmJihpLnN0YXRlPXRoaXMuX3Byb2Nlc3NQZW5kaW5nU3RhdGUoaS5wcm9wcyxpLmNvbnRleHQp
KSksdm9pZCAwPT09ZSYmKGU9dGhpcy5fcmVuZGVyVmFsaWRhdGVkQ29tcG9uZW50KCkpO3ZhciB1
PWguZ2V0VHlwZShlKTt0aGlzLl9yZW5kZXJlZE5vZGVUeXBlPXU7dmFyIHM9dGhpcy5faW5zdGFu
dGlhdGVSZWFjdENvbXBvbmVudChlLHUhPT1oLkVNUFRZKTt0aGlzLl9yZW5kZXJlZENvbXBvbmVu
dD1zO3ZhciBjPXYubW91bnRDb21wb25lbnQocyxyLHQsbix0aGlzLl9wcm9jZXNzQ2hpbGRDb250
ZXh0KG8pLGEpO3JldHVybiBjfSxnZXRIb3N0Tm9kZTpmdW5jdGlvbigpe3JldHVybiB2LmdldEhv
c3ROb2RlKHRoaXMuX3JlbmRlcmVkQ29tcG9uZW50KX0sdW5tb3VudENvbXBvbmVudDpmdW5jdGlv
bihlKXtpZih0aGlzLl9yZW5kZXJlZENvbXBvbmVudCl7dmFyIHQ9dGhpcy5faW5zdGFuY2U7aWYo
dC5jb21wb25lbnRXaWxsVW5tb3VudCYmIXQuX2NhbGxlZENvbXBvbmVudFdpbGxVbm1vdW50KWlm
KHQuX2NhbGxlZENvbXBvbmVudFdpbGxVbm1vdW50PSEwLGUpe3ZhciBuPXRoaXMuZ2V0TmFtZSgp
KyIuY29tcG9uZW50V2lsbFVubW91bnQoKSI7ZC5pbnZva2VHdWFyZGVkQ2FsbGJhY2sobix0LmNv
bXBvbmVudFdpbGxVbm1vdW50LmJpbmQodCkpfWVsc2UgdC5jb21wb25lbnRXaWxsVW5tb3VudCgp
O3RoaXMuX3JlbmRlcmVkQ29tcG9uZW50JiYodi51bm1vdW50Q29tcG9uZW50KHRoaXMuX3JlbmRl
cmVkQ29tcG9uZW50LGUpLHRoaXMuX3JlbmRlcmVkTm9kZVR5cGU9bnVsbCx0aGlzLl9yZW5kZXJl
ZENvbXBvbmVudD1udWxsLHRoaXMuX2luc3RhbmNlPW51bGwpLHRoaXMuX3BlbmRpbmdTdGF0ZVF1
ZXVlPW51bGwsdGhpcy5fcGVuZGluZ1JlcGxhY2VTdGF0ZT0hMSx0aGlzLl9wZW5kaW5nRm9yY2VV
cGRhdGU9ITEsdGhpcy5fcGVuZGluZ0NhbGxiYWNrcz1udWxsLHRoaXMuX3BlbmRpbmdFbGVtZW50
PW51bGwsdGhpcy5fY29udGV4dD1udWxsLHRoaXMuX3Jvb3ROb2RlSUQ9MCx0aGlzLl90b3BMZXZl
bFdyYXBwZXI9bnVsbCxmLnJlbW92ZSh0KX19LF9tYXNrQ29udGV4dDpmdW5jdGlvbihlKXt2YXIg
dD10aGlzLl9jdXJyZW50RWxlbWVudC50eXBlLG49dC5jb250ZXh0VHlwZXM7aWYoIW4pcmV0dXJu
IG07dmFyIHI9e307Zm9yKHZhciBvIGluIG4pcltvXT1lW29dO3JldHVybiByfSxfcHJvY2Vzc0Nv
bnRleHQ6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5fbWFza0NvbnRleHQoZSk7cmV0dXJuIHR9LF9w
cm9jZXNzQ2hpbGRDb250ZXh0OmZ1bmN0aW9uKGUpe3ZhciB0LG49dGhpcy5fY3VycmVudEVsZW1l
bnQudHlwZSxyPXRoaXMuX2luc3RhbmNlO2lmKHIuZ2V0Q2hpbGRDb250ZXh0JiYodD1yLmdldENo
aWxkQ29udGV4dCgpKSx0KXsib2JqZWN0IiE9dHlwZW9mIG4uY2hpbGRDb250ZXh0VHlwZXM/dSgi
MTA3Iix0aGlzLmdldE5hbWUoKXx8IlJlYWN0Q29tcG9zaXRlQ29tcG9uZW50Iik6dm9pZCAwO2Zv
cih2YXIgbyBpbiB0KW8gaW4gbi5jaGlsZENvbnRleHRUeXBlcz92b2lkIDA6dSgiMTA4Iix0aGlz
LmdldE5hbWUoKXx8IlJlYWN0Q29tcG9zaXRlQ29tcG9uZW50IixvKTtyZXR1cm4gcyh7fSxlLHQp
fXJldHVybiBlfSxfY2hlY2tDb250ZXh0VHlwZXM6ZnVuY3Rpb24oZSx0LG4pe30scmVjZWl2ZUNv
bXBvbmVudDpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcy5fY3VycmVudEVsZW1lbnQsbz10aGlz
Ll9jb250ZXh0O3RoaXMuX3BlbmRpbmdFbGVtZW50PW51bGwsdGhpcy51cGRhdGVDb21wb25lbnQo
dCxyLGUsbyxuKX0scGVyZm9ybVVwZGF0ZUlmTmVjZXNzYXJ5OmZ1bmN0aW9uKGUpe251bGwhPXRo
aXMuX3BlbmRpbmdFbGVtZW50P3YucmVjZWl2ZUNvbXBvbmVudCh0aGlzLHRoaXMuX3BlbmRpbmdF
bGVtZW50LGUsdGhpcy5fY29udGV4dCk6bnVsbCE9PXRoaXMuX3BlbmRpbmdTdGF0ZVF1ZXVlfHx0
aGlzLl9wZW5kaW5nRm9yY2VVcGRhdGU/dGhpcy51cGRhdGVDb21wb25lbnQoZSx0aGlzLl9jdXJy
ZW50RWxlbWVudCx0aGlzLl9jdXJyZW50RWxlbWVudCx0aGlzLl9jb250ZXh0LHRoaXMuX2NvbnRl
eHQpOnRoaXMuX3VwZGF0ZUJhdGNoTnVtYmVyPW51bGx9LHVwZGF0ZUNvbXBvbmVudDpmdW5jdGlv
bihlLHQsbixyLG8pe3ZhciBpPXRoaXMuX2luc3RhbmNlO251bGw9PWk/dSgiMTM2Iix0aGlzLmdl
dE5hbWUoKXx8IlJlYWN0Q29tcG9zaXRlQ29tcG9uZW50Iik6dm9pZCAwO3ZhciBhLHM9ITE7dGhp
cy5fY29udGV4dD09PW8/YT1pLmNvbnRleHQ6KGE9dGhpcy5fcHJvY2Vzc0NvbnRleHQobykscz0h
MCk7dmFyIGM9dC5wcm9wcyxsPW4ucHJvcHM7dCE9PW4mJihzPSEwKSxzJiZpLmNvbXBvbmVudFdp
bGxSZWNlaXZlUHJvcHMmJmkuY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyhsLGEpO3ZhciBwPXRo
aXMuX3Byb2Nlc3NQZW5kaW5nU3RhdGUobCxhKSxkPSEwO3RoaXMuX3BlbmRpbmdGb3JjZVVwZGF0
ZXx8KGkuc2hvdWxkQ29tcG9uZW50VXBkYXRlP2Q9aS5zaG91bGRDb21wb25lbnRVcGRhdGUobCxw
LGEpOnRoaXMuX2NvbXBvc2l0ZVR5cGU9PT1iLlB1cmVDbGFzcyYmKGQ9IXkoYyxsKXx8IXkoaS5z
dGF0ZSxwKSkpLHRoaXMuX3VwZGF0ZUJhdGNoTnVtYmVyPW51bGwsZD8odGhpcy5fcGVuZGluZ0Zv
cmNlVXBkYXRlPSExLHRoaXMuX3BlcmZvcm1Db21wb25lbnRVcGRhdGUobixsLHAsYSxlLG8pKToo
dGhpcy5fY3VycmVudEVsZW1lbnQ9bix0aGlzLl9jb250ZXh0PW8saS5wcm9wcz1sLGkuc3RhdGU9
cCxpLmNvbnRleHQ9YSl9LF9wcm9jZXNzUGVuZGluZ1N0YXRlOmZ1bmN0aW9uKGUsdCl7dmFyIG49
dGhpcy5faW5zdGFuY2Uscj10aGlzLl9wZW5kaW5nU3RhdGVRdWV1ZSxvPXRoaXMuX3BlbmRpbmdS
ZXBsYWNlU3RhdGU7aWYodGhpcy5fcGVuZGluZ1JlcGxhY2VTdGF0ZT0hMSx0aGlzLl9wZW5kaW5n
U3RhdGVRdWV1ZT1udWxsLCFyKXJldHVybiBuLnN0YXRlO2lmKG8mJjE9PT1yLmxlbmd0aClyZXR1
cm4gclswXTtmb3IodmFyIGk9cyh7fSxvP3JbMF06bi5zdGF0ZSksYT1vPzE6MDthPHIubGVuZ3Ro
O2ErKyl7dmFyIHU9clthXTtzKGksImZ1bmN0aW9uIj09dHlwZW9mIHU/dS5jYWxsKG4saSxlLHQp
OnUpfXJldHVybiBpfSxfcGVyZm9ybUNvbXBvbmVudFVwZGF0ZTpmdW5jdGlvbihlLHQsbixyLG8s
aSl7dmFyIGEsdSxzLGM9dGhpcy5faW5zdGFuY2UsbD1Cb29sZWFuKGMuY29tcG9uZW50RGlkVXBk
YXRlKTtsJiYoYT1jLnByb3BzLHU9Yy5zdGF0ZSxzPWMuY29udGV4dCksYy5jb21wb25lbnRXaWxs
VXBkYXRlJiZjLmNvbXBvbmVudFdpbGxVcGRhdGUodCxuLHIpLHRoaXMuX2N1cnJlbnRFbGVtZW50
PWUsdGhpcy5fY29udGV4dD1pLGMucHJvcHM9dCxjLnN0YXRlPW4sYy5jb250ZXh0PXIsdGhpcy5f
dXBkYXRlUmVuZGVyZWRDb21wb25lbnQobyxpKSxsJiZvLmdldFJlYWN0TW91bnRSZWFkeSgpLmVu
cXVldWUoYy5jb21wb25lbnREaWRVcGRhdGUuYmluZChjLGEsdSxzKSxjKX0sX3VwZGF0ZVJlbmRl
cmVkQ29tcG9uZW50OmZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5fcmVuZGVyZWRDb21wb25lbnQs
cj1uLl9jdXJyZW50RWxlbWVudCxvPXRoaXMuX3JlbmRlclZhbGlkYXRlZENvbXBvbmVudCgpLGk9
MDtpZihnKHIsbykpdi5yZWNlaXZlQ29tcG9uZW50KG4sbyxlLHRoaXMuX3Byb2Nlc3NDaGlsZENv
bnRleHQodCkpO2Vsc2V7dmFyIGE9di5nZXRIb3N0Tm9kZShuKTt2LnVubW91bnRDb21wb25lbnQo
biwhMSk7dmFyIHU9aC5nZXRUeXBlKG8pO3RoaXMuX3JlbmRlcmVkTm9kZVR5cGU9dTt2YXIgcz10
aGlzLl9pbnN0YW50aWF0ZVJlYWN0Q29tcG9uZW50KG8sdSE9PWguRU1QVFkpO3RoaXMuX3JlbmRl
cmVkQ29tcG9uZW50PXM7dmFyIGM9di5tb3VudENvbXBvbmVudChzLGUsdGhpcy5faG9zdFBhcmVu
dCx0aGlzLl9ob3N0Q29udGFpbmVySW5mbyx0aGlzLl9wcm9jZXNzQ2hpbGRDb250ZXh0KHQpLGkp
O3RoaXMuX3JlcGxhY2VOb2RlV2l0aE1hcmt1cChhLGMsbil9fSxfcmVwbGFjZU5vZGVXaXRoTWFy
a3VwOmZ1bmN0aW9uKGUsdCxuKXtsLnJlcGxhY2VOb2RlV2l0aE1hcmt1cChlLHQsbil9LF9yZW5k
ZXJWYWxpZGF0ZWRDb21wb25lbnRXaXRob3V0T3duZXJPckNvbnRleHQ6ZnVuY3Rpb24oKXt2YXIg
ZSx0PXRoaXMuX2luc3RhbmNlO3JldHVybiBlPXQucmVuZGVyKCl9LF9yZW5kZXJWYWxpZGF0ZWRD
b21wb25lbnQ6ZnVuY3Rpb24oKXt2YXIgZTtpZih0aGlzLl9jb21wb3NpdGVUeXBlIT09Yi5TdGF0
ZWxlc3NGdW5jdGlvbmFsKXtwLmN1cnJlbnQ9dGhpczt0cnl7ZT10aGlzLl9yZW5kZXJWYWxpZGF0
ZWRDb21wb25lbnRXaXRob3V0T3duZXJPckNvbnRleHQoKX1maW5hbGx5e3AuY3VycmVudD1udWxs
fX1lbHNlIGU9dGhpcy5fcmVuZGVyVmFsaWRhdGVkQ29tcG9uZW50V2l0aG91dE93bmVyT3JDb250
ZXh0KCk7cmV0dXJuIG51bGw9PT1lfHxlPT09ITF8fGMuaXNWYWxpZEVsZW1lbnQoZSk/dm9pZCAw
OnUoIjEwOSIsdGhpcy5nZXROYW1lKCl8fCJSZWFjdENvbXBvc2l0ZUNvbXBvbmVudCIpLGV9LGF0
dGFjaFJlZjpmdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMuZ2V0UHVibGljSW5zdGFuY2UoKTtudWxs
PT1uP3UoIjExMCIpOnZvaWQgMDt2YXIgcj10LmdldFB1YmxpY0luc3RhbmNlKCksbz1uLnJlZnM9
PT1tP24ucmVmcz17fTpuLnJlZnM7b1tlXT1yfSxkZXRhY2hSZWY6ZnVuY3Rpb24oZSl7dmFyIHQ9
dGhpcy5nZXRQdWJsaWNJbnN0YW5jZSgpLnJlZnM7ZGVsZXRlIHRbZV19LGdldE5hbWU6ZnVuY3Rp
b24oKXt2YXIgZT10aGlzLl9jdXJyZW50RWxlbWVudC50eXBlLHQ9dGhpcy5faW5zdGFuY2UmJnRo
aXMuX2luc3RhbmNlLmNvbnN0cnVjdG9yO3JldHVybiBlLmRpc3BsYXlOYW1lfHx0JiZ0LmRpc3Bs
YXlOYW1lfHxlLm5hbWV8fHQmJnQubmFtZXx8bnVsbH0sZ2V0UHVibGljSW5zdGFuY2U6ZnVuY3Rp
b24oKXt2YXIgZT10aGlzLl9pbnN0YW5jZTtyZXR1cm4gdGhpcy5fY29tcG9zaXRlVHlwZT09PWIu
U3RhdGVsZXNzRnVuY3Rpb25hbD9udWxsOmV9LF9pbnN0YW50aWF0ZVJlYWN0Q29tcG9uZW50Om51
bGx9O2UuZXhwb3J0cz1DfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oNSks
bz1uKDE1MCksaT1uKDY3KSxhPW4oMTYpLHU9big5KSxzPW4oMTYzKSxjPW4oMTc5KSxsPW4oNzIp
LHA9bigxODYpO24oMik7by5pbmplY3QoKTt2YXIgZD17ZmluZERPTU5vZGU6YyxyZW5kZXI6aS5y
ZW5kZXIsdW5tb3VudENvbXBvbmVudEF0Tm9kZTppLnVubW91bnRDb21wb25lbnRBdE5vZGUsdmVy
c2lvbjpzLHVuc3RhYmxlX2JhdGNoZWRVcGRhdGVzOnUuYmF0Y2hlZFVwZGF0ZXMsdW5zdGFibGVf
cmVuZGVyU3VidHJlZUludG9Db250YWluZXI6cH07InVuZGVmaW5lZCIhPXR5cGVvZiBfX1JFQUNU
X0RFVlRPT0xTX0dMT0JBTF9IT09LX18mJiJmdW5jdGlvbiI9PXR5cGVvZiBfX1JFQUNUX0RFVlRP
T0xTX0dMT0JBTF9IT09LX18uaW5qZWN0JiZfX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX18u
aW5qZWN0KHtDb21wb25lbnRUcmVlOntnZXRDbG9zZXN0SW5zdGFuY2VGcm9tTm9kZTpyLmdldENs
b3Nlc3RJbnN0YW5jZUZyb21Ob2RlLGdldE5vZGVGcm9tSW5zdGFuY2U6ZnVuY3Rpb24oZSl7cmV0
dXJuIGUuX3JlbmRlcmVkQ29tcG9uZW50JiYoZT1sKGUpKSxlP3IuZ2V0Tm9kZUZyb21JbnN0YW5j
ZShlKTpudWxsfX0sTW91bnQ6aSxSZWNvbmNpbGVyOmF9KTtlLmV4cG9ydHM9ZH0sZnVuY3Rpb24o
ZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe2lmKGUpe3ZhciB0PWUuX2N1cnJlbnRF
bGVtZW50Ll9vd25lcnx8bnVsbDtpZih0KXt2YXIgbj10LmdldE5hbWUoKTtpZihuKXJldHVybiIg
VGhpcyBET00gbm9kZSB3YXMgcmVuZGVyZWQgYnkgYCIrbisiYC4ifX1yZXR1cm4iIn1mdW5jdGlv
biBvKGUsdCl7dCYmKFFbZS5fdGFnXSYmKG51bGwhPXQuY2hpbGRyZW58fG51bGwhPXQuZGFuZ2Vy
b3VzbHlTZXRJbm5lckhUTUw/bSgiMTM3IixlLl90YWcsZS5fY3VycmVudEVsZW1lbnQuX293bmVy
PyIgQ2hlY2sgdGhlIHJlbmRlciBtZXRob2Qgb2YgIitlLl9jdXJyZW50RWxlbWVudC5fb3duZXIu
Z2V0TmFtZSgpKyIuIjoiIik6dm9pZCAwKSxudWxsIT10LmRhbmdlcm91c2x5U2V0SW5uZXJIVE1M
JiYobnVsbCE9dC5jaGlsZHJlbj9tKCI2MCIpOnZvaWQgMCwib2JqZWN0Ij09dHlwZW9mIHQuZGFu
Z2Vyb3VzbHlTZXRJbm5lckhUTUwmJnEgaW4gdC5kYW5nZXJvdXNseVNldElubmVySFRNTD92b2lk
IDA6bSgiNjEiKSksbnVsbCE9dC5zdHlsZSYmIm9iamVjdCIhPXR5cGVvZiB0LnN0eWxlP20oIjYy
IixyKGUpKTp2b2lkIDApfWZ1bmN0aW9uIGkoZSx0LG4scil7aWYoIShyIGluc3RhbmNlb2YgQSkp
e3ZhciBvPWUuX2hvc3RDb250YWluZXJJbmZvLGk9by5fbm9kZSYmby5fbm9kZS5ub2RlVHlwZT09
PVksdT1pP28uX25vZGU6by5fb3duZXJEb2N1bWVudDtCKHQsdSksci5nZXRSZWFjdE1vdW50UmVh
ZHkoKS5lbnF1ZXVlKGEse2luc3Q6ZSxyZWdpc3RyYXRpb25OYW1lOnQsbGlzdGVuZXI6bn0pfX1m
dW5jdGlvbiBhKCl7dmFyIGU9dGhpcztULnB1dExpc3RlbmVyKGUuaW5zdCxlLnJlZ2lzdHJhdGlv
bk5hbWUsZS5saXN0ZW5lcil9ZnVuY3Rpb24gdSgpe3ZhciBlPXRoaXM7ay5wb3N0TW91bnRXcmFw
cGVyKGUpfWZ1bmN0aW9uIHMoKXt2YXIgZT10aGlzO0kucG9zdE1vdW50V3JhcHBlcihlKX1mdW5j
dGlvbiBjKCl7dmFyIGU9dGhpcztNLnBvc3RNb3VudFdyYXBwZXIoZSl9ZnVuY3Rpb24gbCgpe2ou
dHJhY2sodGhpcyl9ZnVuY3Rpb24gcCgpe3ZhciBlPXRoaXM7ZS5fcm9vdE5vZGVJRD92b2lkIDA6
bSgiNjMiKTt2YXIgdD1GKGUpO3N3aXRjaCh0P3ZvaWQgMDptKCI2NCIpLGUuX3RhZyl7Y2FzZSJp
ZnJhbWUiOmNhc2Uib2JqZWN0IjplLl93cmFwcGVyU3RhdGUubGlzdGVuZXJzPVt4LnRyYXBCdWJi
bGVkRXZlbnQoInRvcExvYWQiLCJsb2FkIix0KV07YnJlYWs7Y2FzZSJ2aWRlbyI6Y2FzZSJhdWRp
byI6ZS5fd3JhcHBlclN0YXRlLmxpc3RlbmVycz1bXTtmb3IodmFyIG4gaW4geil6Lmhhc093blBy
b3BlcnR5KG4pJiZlLl93cmFwcGVyU3RhdGUubGlzdGVuZXJzLnB1c2goeC50cmFwQnViYmxlZEV2
ZW50KG4seltuXSx0KSk7YnJlYWs7Y2FzZSJzb3VyY2UiOmUuX3dyYXBwZXJTdGF0ZS5saXN0ZW5l
cnM9W3gudHJhcEJ1YmJsZWRFdmVudCgidG9wRXJyb3IiLCJlcnJvciIsdCldO2JyZWFrO2Nhc2Ui
aW1nIjplLl93cmFwcGVyU3RhdGUubGlzdGVuZXJzPVt4LnRyYXBCdWJibGVkRXZlbnQoInRvcEVy
cm9yIiwiZXJyb3IiLHQpLHgudHJhcEJ1YmJsZWRFdmVudCgidG9wTG9hZCIsImxvYWQiLHQpXTti
cmVhaztjYXNlImZvcm0iOmUuX3dyYXBwZXJTdGF0ZS5saXN0ZW5lcnM9W3gudHJhcEJ1YmJsZWRF
dmVudCgidG9wUmVzZXQiLCJyZXNldCIsdCkseC50cmFwQnViYmxlZEV2ZW50KCJ0b3BTdWJtaXQi
LCJzdWJtaXQiLHQpXTticmVhaztjYXNlImlucHV0IjpjYXNlInNlbGVjdCI6Y2FzZSJ0ZXh0YXJl
YSI6ZS5fd3JhcHBlclN0YXRlLmxpc3RlbmVycz1beC50cmFwQnViYmxlZEV2ZW50KCJ0b3BJbnZh
bGlkIiwiaW52YWxpZCIsdCldfX1mdW5jdGlvbiBkKCl7Ti5wb3N0VXBkYXRlV3JhcHBlcih0aGlz
KX1mdW5jdGlvbiBmKGUpe0ouY2FsbChaLGUpfHwoJC50ZXN0KGUpP3ZvaWQgMDptKCI2NSIsZSks
WltlXT0hMCl9ZnVuY3Rpb24gaChlLHQpe3JldHVybiBlLmluZGV4T2YoIi0iKT49MHx8bnVsbCE9
dC5pc31mdW5jdGlvbiB2KGUpe3ZhciB0PWUudHlwZTtmKHQpLHRoaXMuX2N1cnJlbnRFbGVtZW50
PWUsdGhpcy5fdGFnPXQudG9Mb3dlckNhc2UoKSx0aGlzLl9uYW1lc3BhY2VVUkk9bnVsbCx0aGlz
Ll9yZW5kZXJlZENoaWxkcmVuPW51bGwsdGhpcy5fcHJldmlvdXNTdHlsZT1udWxsLHRoaXMuX3By
ZXZpb3VzU3R5bGVDb3B5PW51bGwsdGhpcy5faG9zdE5vZGU9bnVsbCx0aGlzLl9ob3N0UGFyZW50
PW51bGwsdGhpcy5fcm9vdE5vZGVJRD0wLHRoaXMuX2RvbUlEPTAsdGhpcy5faG9zdENvbnRhaW5l
ckluZm89bnVsbCx0aGlzLl93cmFwcGVyU3RhdGU9bnVsbCx0aGlzLl90b3BMZXZlbFdyYXBwZXI9
bnVsbCx0aGlzLl9mbGFncz0wfXZhciBtPW4oMykseT1uKDQpLGc9bigxMjUpLGI9bigxMjcpLF89
bigxNCksQz1uKDM1KSxFPW4oMTUpLHc9big2MCksVD1uKDE5KSxQPW4oMzYpLHg9bigyNSksTz1u
KDYxKSxTPW4oNSksaz1uKDE0MyksTT1uKDE0NCksTj1uKDYyKSxJPW4oMTQ3KSxSPShuKDgpLG4o
MTU2KSksQT1uKDE2MSksRD0obig3KSxuKDI4KSksaj0obigxKSxuKDQ3KSxuKDMyKSxuKDc0KSks
TD0obig0OSksbigyKSxPKSxVPVQuZGVsZXRlTGlzdGVuZXIsRj1TLmdldE5vZGVGcm9tSW5zdGFu
Y2UsQj14Lmxpc3RlblRvLFY9UC5yZWdpc3RyYXRpb25OYW1lTW9kdWxlcyxXPXtzdHJpbmc6ITAs
bnVtYmVyOiEwfSxIPSJzdHlsZSIscT0iX19odG1sIixLPXtjaGlsZHJlbjpudWxsLGRhbmdlcm91
c2x5U2V0SW5uZXJIVE1MOm51bGwsc3VwcHJlc3NDb250ZW50RWRpdGFibGVXYXJuaW5nOm51bGx9
LFk9MTEsej17dG9wQWJvcnQ6ImFib3J0Iix0b3BDYW5QbGF5OiJjYW5wbGF5Iix0b3BDYW5QbGF5
VGhyb3VnaDoiY2FucGxheXRocm91Z2giLHRvcER1cmF0aW9uQ2hhbmdlOiJkdXJhdGlvbmNoYW5n
ZSIsdG9wRW1wdGllZDoiZW1wdGllZCIsdG9wRW5jcnlwdGVkOiJlbmNyeXB0ZWQiLHRvcEVuZGVk
OiJlbmRlZCIsdG9wRXJyb3I6ImVycm9yIix0b3BMb2FkZWREYXRhOiJsb2FkZWRkYXRhIix0b3BM
b2FkZWRNZXRhZGF0YToibG9hZGVkbWV0YWRhdGEiLHRvcExvYWRTdGFydDoibG9hZHN0YXJ0Iix0
b3BQYXVzZToicGF1c2UiLHRvcFBsYXk6InBsYXkiLHRvcFBsYXlpbmc6InBsYXlpbmciLHRvcFBy
b2dyZXNzOiJwcm9ncmVzcyIsdG9wUmF0ZUNoYW5nZToicmF0ZWNoYW5nZSIsdG9wU2Vla2VkOiJz
ZWVrZWQiLHRvcFNlZWtpbmc6InNlZWtpbmciLHRvcFN0YWxsZWQ6InN0YWxsZWQiLHRvcFN1c3Bl
bmQ6InN1c3BlbmQiLHRvcFRpbWVVcGRhdGU6InRpbWV1cGRhdGUiLHRvcFZvbHVtZUNoYW5nZToi
dm9sdW1lY2hhbmdlIix0b3BXYWl0aW5nOiJ3YWl0aW5nIn0sWD17YXJlYTohMCxiYXNlOiEwLGJy
OiEwLGNvbDohMCxlbWJlZDohMCxocjohMCxpbWc6ITAsaW5wdXQ6ITAsa2V5Z2VuOiEwLGxpbms6
ITAsbWV0YTohMCxwYXJhbTohMCxzb3VyY2U6ITAsdHJhY2s6ITAsd2JyOiEwfSxHPXtsaXN0aW5n
OiEwLHByZTohMCx0ZXh0YXJlYTohMH0sUT15KHttZW51aXRlbTohMH0sWCksJD0vXlthLXpBLVpd
W2EtekEtWjpfXC5cLVxkXSokLyxaPXt9LEo9e30uaGFzT3duUHJvcGVydHksZWU9MTt2LmRpc3Bs
YXlOYW1lPSJSZWFjdERPTUNvbXBvbmVudCIsdi5NaXhpbj17bW91bnRDb21wb25lbnQ6ZnVuY3Rp
b24oZSx0LG4scil7dGhpcy5fcm9vdE5vZGVJRD1lZSsrLHRoaXMuX2RvbUlEPW4uX2lkQ291bnRl
cisrLHRoaXMuX2hvc3RQYXJlbnQ9dCx0aGlzLl9ob3N0Q29udGFpbmVySW5mbz1uO3ZhciBpPXRo
aXMuX2N1cnJlbnRFbGVtZW50LnByb3BzO3N3aXRjaCh0aGlzLl90YWcpe2Nhc2UiYXVkaW8iOmNh
c2UiZm9ybSI6Y2FzZSJpZnJhbWUiOmNhc2UiaW1nIjpjYXNlImxpbmsiOmNhc2Uib2JqZWN0Ijpj
YXNlInNvdXJjZSI6Y2FzZSJ2aWRlbyI6dGhpcy5fd3JhcHBlclN0YXRlPXtsaXN0ZW5lcnM6bnVs
bH0sZS5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKHAsdGhpcyk7YnJlYWs7Y2FzZSJpbnB1
dCI6ay5tb3VudFdyYXBwZXIodGhpcyxpLHQpLGk9ay5nZXRIb3N0UHJvcHModGhpcyxpKSxlLmdl
dFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUobCx0aGlzKSxlLmdldFJlYWN0TW91bnRSZWFkeSgp
LmVucXVldWUocCx0aGlzKTticmVhaztjYXNlIm9wdGlvbiI6TS5tb3VudFdyYXBwZXIodGhpcyxp
LHQpLGk9TS5nZXRIb3N0UHJvcHModGhpcyxpKTticmVhaztjYXNlInNlbGVjdCI6Ti5tb3VudFdy
YXBwZXIodGhpcyxpLHQpLGk9Ti5nZXRIb3N0UHJvcHModGhpcyxpKSxlLmdldFJlYWN0TW91bnRS
ZWFkeSgpLmVucXVldWUocCx0aGlzKTticmVhaztjYXNlInRleHRhcmVhIjpJLm1vdW50V3JhcHBl
cih0aGlzLGksdCksaT1JLmdldEhvc3RQcm9wcyh0aGlzLGkpLGUuZ2V0UmVhY3RNb3VudFJlYWR5
KCkuZW5xdWV1ZShsLHRoaXMpLGUuZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1ZShwLHRoaXMp
fW8odGhpcyxpKTt2YXIgYSxkO251bGwhPXQ/KGE9dC5fbmFtZXNwYWNlVVJJLGQ9dC5fdGFnKTpu
Ll90YWcmJihhPW4uX25hbWVzcGFjZVVSSSxkPW4uX3RhZyksKG51bGw9PWF8fGE9PT1DLnN2ZyYm
ImZvcmVpZ25vYmplY3QiPT09ZCkmJihhPUMuaHRtbCksYT09PUMuaHRtbCYmKCJzdmciPT09dGhp
cy5fdGFnP2E9Qy5zdmc6Im1hdGgiPT09dGhpcy5fdGFnJiYoYT1DLm1hdGhtbCkpLHRoaXMuX25h
bWVzcGFjZVVSST1hO3ZhciBmO2lmKGUudXNlQ3JlYXRlRWxlbWVudCl7dmFyIGgsdj1uLl9vd25l
ckRvY3VtZW50O2lmKGE9PT1DLmh0bWwpaWYoInNjcmlwdCI9PT10aGlzLl90YWcpe3ZhciBtPXYu
Y3JlYXRlRWxlbWVudCgiZGl2IikseT10aGlzLl9jdXJyZW50RWxlbWVudC50eXBlO20uaW5uZXJI
VE1MPSI8Iit5KyI+PC8iK3krIj4iLGg9bS5yZW1vdmVDaGlsZChtLmZpcnN0Q2hpbGQpfWVsc2Ug
aD1pLmlzP3YuY3JlYXRlRWxlbWVudCh0aGlzLl9jdXJyZW50RWxlbWVudC50eXBlLGkuaXMpOnYu
Y3JlYXRlRWxlbWVudCh0aGlzLl9jdXJyZW50RWxlbWVudC50eXBlKTtlbHNlIGg9di5jcmVhdGVF
bGVtZW50TlMoYSx0aGlzLl9jdXJyZW50RWxlbWVudC50eXBlKTtTLnByZWNhY2hlTm9kZSh0aGlz
LGgpLHRoaXMuX2ZsYWdzfD1MLmhhc0NhY2hlZENoaWxkTm9kZXMsdGhpcy5faG9zdFBhcmVudHx8
dy5zZXRBdHRyaWJ1dGVGb3JSb290KGgpLHRoaXMuX3VwZGF0ZURPTVByb3BlcnRpZXMobnVsbCxp
LGUpO3ZhciBiPV8oaCk7dGhpcy5fY3JlYXRlSW5pdGlhbENoaWxkcmVuKGUsaSxyLGIpLGY9Yn1l
bHNle3ZhciBFPXRoaXMuX2NyZWF0ZU9wZW5UYWdNYXJrdXBBbmRQdXRMaXN0ZW5lcnMoZSxpKSxU
PXRoaXMuX2NyZWF0ZUNvbnRlbnRNYXJrdXAoZSxpLHIpO2Y9IVQmJlhbdGhpcy5fdGFnXT9FKyIv
PiI6RSsiPiIrVCsiPC8iK3RoaXMuX2N1cnJlbnRFbGVtZW50LnR5cGUrIj4ifXN3aXRjaCh0aGlz
Ll90YWcpe2Nhc2UiaW5wdXQiOmUuZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1ZSh1LHRoaXMp
LGkuYXV0b0ZvY3VzJiZlLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUoZy5mb2N1c0RPTUNv
bXBvbmVudCx0aGlzKTticmVhaztjYXNlInRleHRhcmVhIjplLmdldFJlYWN0TW91bnRSZWFkeSgp
LmVucXVldWUocyx0aGlzKSxpLmF1dG9Gb2N1cyYmZS5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1
ZXVlKGcuZm9jdXNET01Db21wb25lbnQsdGhpcyk7YnJlYWs7Y2FzZSJzZWxlY3QiOmkuYXV0b0Zv
Y3VzJiZlLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUoZy5mb2N1c0RPTUNvbXBvbmVudCx0
aGlzKTticmVhaztjYXNlImJ1dHRvbiI6aS5hdXRvRm9jdXMmJmUuZ2V0UmVhY3RNb3VudFJlYWR5
KCkuZW5xdWV1ZShnLmZvY3VzRE9NQ29tcG9uZW50LHRoaXMpO2JyZWFrO2Nhc2Uib3B0aW9uIjpl
LmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUoYyx0aGlzKX1yZXR1cm4gZn0sX2NyZWF0ZU9w
ZW5UYWdNYXJrdXBBbmRQdXRMaXN0ZW5lcnM6ZnVuY3Rpb24oZSx0KXt2YXIgbj0iPCIrdGhpcy5f
Y3VycmVudEVsZW1lbnQudHlwZTtmb3IodmFyIHIgaW4gdClpZih0Lmhhc093blByb3BlcnR5KHIp
KXt2YXIgbz10W3JdO2lmKG51bGwhPW8paWYoVi5oYXNPd25Qcm9wZXJ0eShyKSlvJiZpKHRoaXMs
cixvLGUpO2Vsc2V7cj09PUgmJihvJiYobz10aGlzLl9wcmV2aW91c1N0eWxlQ29weT15KHt9LHQu
c3R5bGUpKSxvPWIuY3JlYXRlTWFya3VwRm9yU3R5bGVzKG8sdGhpcykpO3ZhciBhPW51bGw7bnVs
bCE9dGhpcy5fdGFnJiZoKHRoaXMuX3RhZyx0KT9LLmhhc093blByb3BlcnR5KHIpfHwoYT13LmNy
ZWF0ZU1hcmt1cEZvckN1c3RvbUF0dHJpYnV0ZShyLG8pKTphPXcuY3JlYXRlTWFya3VwRm9yUHJv
cGVydHkocixvKSxhJiYobis9IiAiK2EpfX1yZXR1cm4gZS5yZW5kZXJUb1N0YXRpY01hcmt1cD9u
Oih0aGlzLl9ob3N0UGFyZW50fHwobis9IiAiK3cuY3JlYXRlTWFya3VwRm9yUm9vdCgpKSxuKz0i
ICIrdy5jcmVhdGVNYXJrdXBGb3JJRCh0aGlzLl9kb21JRCkpfSxfY3JlYXRlQ29udGVudE1hcmt1
cDpmdW5jdGlvbihlLHQsbil7dmFyIHI9IiIsbz10LmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MO2lm
KG51bGwhPW8pbnVsbCE9by5fX2h0bWwmJihyPW8uX19odG1sKTtlbHNle3ZhciBpPVdbdHlwZW9m
IHQuY2hpbGRyZW5dP3QuY2hpbGRyZW46bnVsbCxhPW51bGwhPWk/bnVsbDp0LmNoaWxkcmVuO2lm
KG51bGwhPWkpcj1EKGkpO2Vsc2UgaWYobnVsbCE9YSl7dmFyIHU9dGhpcy5tb3VudENoaWxkcmVu
KGEsZSxuKTtyPXUuam9pbigiIil9fXJldHVybiBHW3RoaXMuX3RhZ10mJiJcbiI9PT1yLmNoYXJB
dCgwKT8iXG4iK3I6cn0sX2NyZWF0ZUluaXRpYWxDaGlsZHJlbjpmdW5jdGlvbihlLHQsbixyKXt2
YXIgbz10LmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MO2lmKG51bGwhPW8pbnVsbCE9by5fX2h0bWwm
Jl8ucXVldWVIVE1MKHIsby5fX2h0bWwpO2Vsc2V7dmFyIGk9V1t0eXBlb2YgdC5jaGlsZHJlbl0/
dC5jaGlsZHJlbjpudWxsLGE9bnVsbCE9aT9udWxsOnQuY2hpbGRyZW47aWYobnVsbCE9aSkiIiE9
PWkmJl8ucXVldWVUZXh0KHIsaSk7ZWxzZSBpZihudWxsIT1hKWZvcih2YXIgdT10aGlzLm1vdW50
Q2hpbGRyZW4oYSxlLG4pLHM9MDtzPHUubGVuZ3RoO3MrKylfLnF1ZXVlQ2hpbGQocix1W3NdKX19
LHJlY2VpdmVDb21wb25lbnQ6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMuX2N1cnJlbnRFbGVt
ZW50O3RoaXMuX2N1cnJlbnRFbGVtZW50PWUsdGhpcy51cGRhdGVDb21wb25lbnQodCxyLGUsbil9
LHVwZGF0ZUNvbXBvbmVudDpmdW5jdGlvbihlLHQsbixyKXt2YXIgaT10LnByb3BzLGE9dGhpcy5f
Y3VycmVudEVsZW1lbnQucHJvcHM7c3dpdGNoKHRoaXMuX3RhZyl7Y2FzZSJpbnB1dCI6aT1rLmdl
dEhvc3RQcm9wcyh0aGlzLGkpLGE9ay5nZXRIb3N0UHJvcHModGhpcyxhKTticmVhaztjYXNlIm9w
dGlvbiI6aT1NLmdldEhvc3RQcm9wcyh0aGlzLGkpLGE9TS5nZXRIb3N0UHJvcHModGhpcyxhKTti
cmVhaztjYXNlInNlbGVjdCI6aT1OLmdldEhvc3RQcm9wcyh0aGlzLGkpLGE9Ti5nZXRIb3N0UHJv
cHModGhpcyxhKTticmVhaztjYXNlInRleHRhcmVhIjppPUkuZ2V0SG9zdFByb3BzKHRoaXMsaSks
YT1JLmdldEhvc3RQcm9wcyh0aGlzLGEpfXN3aXRjaChvKHRoaXMsYSksdGhpcy5fdXBkYXRlRE9N
UHJvcGVydGllcyhpLGEsZSksdGhpcy5fdXBkYXRlRE9NQ2hpbGRyZW4oaSxhLGUsciksdGhpcy5f
dGFnKXtjYXNlImlucHV0IjprLnVwZGF0ZVdyYXBwZXIodGhpcyk7YnJlYWs7Y2FzZSJ0ZXh0YXJl
YSI6SS51cGRhdGVXcmFwcGVyKHRoaXMpO2JyZWFrO2Nhc2Uic2VsZWN0IjplLmdldFJlYWN0TW91
bnRSZWFkeSgpLmVucXVldWUoZCx0aGlzKX19LF91cGRhdGVET01Qcm9wZXJ0aWVzOmZ1bmN0aW9u
KGUsdCxuKXt2YXIgcixvLGE7Zm9yKHIgaW4gZSlpZighdC5oYXNPd25Qcm9wZXJ0eShyKSYmZS5o
YXNPd25Qcm9wZXJ0eShyKSYmbnVsbCE9ZVtyXSlpZihyPT09SCl7dmFyIHU9dGhpcy5fcHJldmlv
dXNTdHlsZUNvcHk7Zm9yKG8gaW4gdSl1Lmhhc093blByb3BlcnR5KG8pJiYoYT1hfHx7fSxhW29d
PSIiKTt0aGlzLl9wcmV2aW91c1N0eWxlQ29weT1udWxsfWVsc2UgVi5oYXNPd25Qcm9wZXJ0eShy
KT9lW3JdJiZVKHRoaXMscik6aCh0aGlzLl90YWcsZSk/Sy5oYXNPd25Qcm9wZXJ0eShyKXx8dy5k
ZWxldGVWYWx1ZUZvckF0dHJpYnV0ZShGKHRoaXMpLHIpOihFLnByb3BlcnRpZXNbcl18fEUuaXND
dXN0b21BdHRyaWJ1dGUocikpJiZ3LmRlbGV0ZVZhbHVlRm9yUHJvcGVydHkoRih0aGlzKSxyKTtm
b3IociBpbiB0KXt2YXIgcz10W3JdLGM9cj09PUg/dGhpcy5fcHJldmlvdXNTdHlsZUNvcHk6bnVs
bCE9ZT9lW3JdOnZvaWQgMDtpZih0Lmhhc093blByb3BlcnR5KHIpJiZzIT09YyYmKG51bGwhPXN8
fG51bGwhPWMpKWlmKHI9PT1IKWlmKHM/cz10aGlzLl9wcmV2aW91c1N0eWxlQ29weT15KHt9LHMp
OnRoaXMuX3ByZXZpb3VzU3R5bGVDb3B5PW51bGwsYyl7Zm9yKG8gaW4gYykhYy5oYXNPd25Qcm9w
ZXJ0eShvKXx8cyYmcy5oYXNPd25Qcm9wZXJ0eShvKXx8KGE9YXx8e30sYVtvXT0iIik7Zm9yKG8g
aW4gcylzLmhhc093blByb3BlcnR5KG8pJiZjW29dIT09c1tvXSYmKGE9YXx8e30sYVtvXT1zW29d
KX1lbHNlIGE9cztlbHNlIGlmKFYuaGFzT3duUHJvcGVydHkocikpcz9pKHRoaXMscixzLG4pOmMm
JlUodGhpcyxyKTtlbHNlIGlmKGgodGhpcy5fdGFnLHQpKUsuaGFzT3duUHJvcGVydHkocil8fHcu
c2V0VmFsdWVGb3JBdHRyaWJ1dGUoRih0aGlzKSxyLHMpO2Vsc2UgaWYoRS5wcm9wZXJ0aWVzW3Jd
fHxFLmlzQ3VzdG9tQXR0cmlidXRlKHIpKXt2YXIgbD1GKHRoaXMpO251bGwhPXM/dy5zZXRWYWx1
ZUZvclByb3BlcnR5KGwscixzKTp3LmRlbGV0ZVZhbHVlRm9yUHJvcGVydHkobCxyKX19YSYmYi5z
ZXRWYWx1ZUZvclN0eWxlcyhGKHRoaXMpLGEsdGhpcyl9LF91cGRhdGVET01DaGlsZHJlbjpmdW5j
dGlvbihlLHQsbixyKXt2YXIgbz1XW3R5cGVvZiBlLmNoaWxkcmVuXT9lLmNoaWxkcmVuOm51bGws
aT1XW3R5cGVvZiB0LmNoaWxkcmVuXT90LmNoaWxkcmVuOm51bGwsYT1lLmRhbmdlcm91c2x5U2V0
SW5uZXJIVE1MJiZlLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MLl9faHRtbCx1PXQuZGFuZ2Vyb3Vz
bHlTZXRJbm5lckhUTUwmJnQuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwuX19odG1sLHM9bnVsbCE9
bz9udWxsOmUuY2hpbGRyZW4sYz1udWxsIT1pP251bGw6dC5jaGlsZHJlbixsPW51bGwhPW98fG51
bGwhPWEscD1udWxsIT1pfHxudWxsIT11O251bGwhPXMmJm51bGw9PWM/dGhpcy51cGRhdGVDaGls
ZHJlbihudWxsLG4scik6bCYmIXAmJnRoaXMudXBkYXRlVGV4dENvbnRlbnQoIiIpLG51bGwhPWk/
byE9PWkmJnRoaXMudXBkYXRlVGV4dENvbnRlbnQoIiIraSk6bnVsbCE9dT9hIT09dSYmdGhpcy51
cGRhdGVNYXJrdXAoIiIrdSk6bnVsbCE9YyYmdGhpcy51cGRhdGVDaGlsZHJlbihjLG4scil9LGdl
dEhvc3ROb2RlOmZ1bmN0aW9uKCl7cmV0dXJuIEYodGhpcyl9LHVubW91bnRDb21wb25lbnQ6ZnVu
Y3Rpb24oZSl7c3dpdGNoKHRoaXMuX3RhZyl7Y2FzZSJhdWRpbyI6Y2FzZSJmb3JtIjpjYXNlImlm
cmFtZSI6Y2FzZSJpbWciOmNhc2UibGluayI6Y2FzZSJvYmplY3QiOmNhc2Uic291cmNlIjpjYXNl
InZpZGVvIjp2YXIgdD10aGlzLl93cmFwcGVyU3RhdGUubGlzdGVuZXJzO2lmKHQpZm9yKHZhciBu
PTA7bjx0Lmxlbmd0aDtuKyspdFtuXS5yZW1vdmUoKTticmVhaztjYXNlImlucHV0IjpjYXNlInRl
eHRhcmVhIjpqLnN0b3BUcmFja2luZyh0aGlzKTticmVhaztjYXNlImh0bWwiOmNhc2UiaGVhZCI6
Y2FzZSJib2R5IjptKCI2NiIsdGhpcy5fdGFnKX10aGlzLnVubW91bnRDaGlsZHJlbihlKSxTLnVu
Y2FjaGVOb2RlKHRoaXMpLFQuZGVsZXRlQWxsTGlzdGVuZXJzKHRoaXMpLHRoaXMuX3Jvb3ROb2Rl
SUQ9MCx0aGlzLl9kb21JRD0wLHRoaXMuX3dyYXBwZXJTdGF0ZT1udWxsfSxnZXRQdWJsaWNJbnN0
YW5jZTpmdW5jdGlvbigpe3JldHVybiBGKHRoaXMpfX0seSh2LnByb3RvdHlwZSx2Lk1peGluLFIu
TWl4aW4pLGUuZXhwb3J0cz12fSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9u
IHIoZSx0KXt2YXIgbj17X3RvcExldmVsV3JhcHBlcjplLF9pZENvdW50ZXI6MSxfb3duZXJEb2N1
bWVudDp0P3Qubm9kZVR5cGU9PT1vP3Q6dC5vd25lckRvY3VtZW50Om51bGwsX25vZGU6dCxfdGFn
OnQ/dC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpOm51bGwsX25hbWVzcGFjZVVSSTp0P3QubmFtZXNw
YWNlVVJJOm51bGx9O3JldHVybiBufXZhciBvPShuKDQ5KSw5KTtlLmV4cG9ydHM9cn0sZnVuY3Rp
b24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDQpLG89bigxNCksaT1uKDUpLGE9ZnVuY3Rp
b24oZSl7dGhpcy5fY3VycmVudEVsZW1lbnQ9bnVsbCx0aGlzLl9ob3N0Tm9kZT1udWxsLHRoaXMu
X2hvc3RQYXJlbnQ9bnVsbCx0aGlzLl9ob3N0Q29udGFpbmVySW5mbz1udWxsLHRoaXMuX2RvbUlE
PTB9O3IoYS5wcm90b3R5cGUse21vdW50Q29tcG9uZW50OmZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBh
PW4uX2lkQ291bnRlcisrO3RoaXMuX2RvbUlEPWEsdGhpcy5faG9zdFBhcmVudD10LHRoaXMuX2hv
c3RDb250YWluZXJJbmZvPW47dmFyIHU9IiByZWFjdC1lbXB0eTogIit0aGlzLl9kb21JRCsiICI7
aWYoZS51c2VDcmVhdGVFbGVtZW50KXt2YXIgcz1uLl9vd25lckRvY3VtZW50LGM9cy5jcmVhdGVD
b21tZW50KHUpO3JldHVybiBpLnByZWNhY2hlTm9kZSh0aGlzLGMpLG8oYyl9cmV0dXJuIGUucmVu
ZGVyVG9TdGF0aWNNYXJrdXA/IiI6IjwhLS0iK3UrIi0tPiJ9LHJlY2VpdmVDb21wb25lbnQ6ZnVu
Y3Rpb24oKXt9LGdldEhvc3ROb2RlOmZ1bmN0aW9uKCl7cmV0dXJuIGkuZ2V0Tm9kZUZyb21JbnN0
YW5jZSh0aGlzKX0sdW5tb3VudENvbXBvbmVudDpmdW5jdGlvbigpe2kudW5jYWNoZU5vZGUodGhp
cyl9fSksZS5leHBvcnRzPWF9LGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO3ZhciBuPXt1c2VD
cmVhdGVFbGVtZW50OiEwLHVzZUZpYmVyOiExfTtlLmV4cG9ydHM9bn0sZnVuY3Rpb24oZSx0LG4p
eyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDM0KSxvPW4oNSksaT17ZGFuZ2Vyb3VzbHlQcm9jZXNzQ2hp
bGRyZW5VcGRhdGVzOmZ1bmN0aW9uKGUsdCl7dmFyIG49by5nZXROb2RlRnJvbUluc3RhbmNlKGUp
O3IucHJvY2Vzc1VwZGF0ZXMobix0KX19O2UuZXhwb3J0cz1pfSxmdW5jdGlvbihlLHQsbil7InVz
ZSBzdHJpY3QiO2Z1bmN0aW9uIHIoKXt0aGlzLl9yb290Tm9kZUlEJiZkLnVwZGF0ZVdyYXBwZXIo
dGhpcyl9ZnVuY3Rpb24gbyhlKXt2YXIgdD0iY2hlY2tib3giPT09ZS50eXBlfHwicmFkaW8iPT09
ZS50eXBlO3JldHVybiB0P251bGwhPWUuY2hlY2tlZDpudWxsIT1lLnZhbHVlfWZ1bmN0aW9uIGko
ZSl7dmFyIHQ9dGhpcy5fY3VycmVudEVsZW1lbnQucHJvcHMsbj1jLmV4ZWN1dGVPbkNoYW5nZSh0
LGUpO3AuYXNhcChyLHRoaXMpO3ZhciBvPXQubmFtZTtpZigicmFkaW8iPT09dC50eXBlJiZudWxs
IT1vKXtmb3IodmFyIGk9bC5nZXROb2RlRnJvbUluc3RhbmNlKHRoaXMpLHU9aTt1LnBhcmVudE5v
ZGU7KXU9dS5wYXJlbnROb2RlO2Zvcih2YXIgcz11LnF1ZXJ5U2VsZWN0b3JBbGwoImlucHV0W25h
bWU9IitKU09OLnN0cmluZ2lmeSgiIitvKSsnXVt0eXBlPSJyYWRpbyJdJyksZD0wO2Q8cy5sZW5n
dGg7ZCsrKXt2YXIgZj1zW2RdO2lmKGYhPT1pJiZmLmZvcm09PT1pLmZvcm0pe3ZhciBoPWwuZ2V0
SW5zdGFuY2VGcm9tTm9kZShmKTtoP3ZvaWQgMDphKCI5MCIpLHAuYXNhcChyLGgpfX19cmV0dXJu
IG59dmFyIGE9bigzKSx1PW4oNCkscz1uKDYwKSxjPW4oMzkpLGw9big1KSxwPW4oOSksZD0obigx
KSxuKDIpLHtnZXRIb3N0UHJvcHM6ZnVuY3Rpb24oZSx0KXt2YXIgbj1jLmdldFZhbHVlKHQpLHI9
Yy5nZXRDaGVja2VkKHQpLG89dSh7dHlwZTp2b2lkIDAsc3RlcDp2b2lkIDAsbWluOnZvaWQgMCxt
YXg6dm9pZCAwfSx0LHtkZWZhdWx0Q2hlY2tlZDp2b2lkIDAsZGVmYXVsdFZhbHVlOnZvaWQgMCx2
YWx1ZTpudWxsIT1uP246ZS5fd3JhcHBlclN0YXRlLmluaXRpYWxWYWx1ZSxjaGVja2VkOm51bGwh
PXI/cjplLl93cmFwcGVyU3RhdGUuaW5pdGlhbENoZWNrZWQsb25DaGFuZ2U6ZS5fd3JhcHBlclN0
YXRlLm9uQ2hhbmdlfSk7cmV0dXJuIG99LG1vdW50V3JhcHBlcjpmdW5jdGlvbihlLHQpe3ZhciBu
PXQuZGVmYXVsdFZhbHVlO2UuX3dyYXBwZXJTdGF0ZT17aW5pdGlhbENoZWNrZWQ6bnVsbCE9dC5j
aGVja2VkP3QuY2hlY2tlZDp0LmRlZmF1bHRDaGVja2VkLGluaXRpYWxWYWx1ZTpudWxsIT10LnZh
bHVlP3QudmFsdWU6bixsaXN0ZW5lcnM6bnVsbCxvbkNoYW5nZTppLmJpbmQoZSksY29udHJvbGxl
ZDpvKHQpfX0sdXBkYXRlV3JhcHBlcjpmdW5jdGlvbihlKXt2YXIgdD1lLl9jdXJyZW50RWxlbWVu
dC5wcm9wcyxuPXQuY2hlY2tlZDtudWxsIT1uJiZzLnNldFZhbHVlRm9yUHJvcGVydHkobC5nZXRO
b2RlRnJvbUluc3RhbmNlKGUpLCJjaGVja2VkIixufHwhMSk7dmFyIHI9bC5nZXROb2RlRnJvbUlu
c3RhbmNlKGUpLG89Yy5nZXRWYWx1ZSh0KTtpZihudWxsIT1vKWlmKDA9PT1vJiYiIj09PXIudmFs
dWUpci52YWx1ZT0iMCI7ZWxzZSBpZigibnVtYmVyIj09PXQudHlwZSl7dmFyIGk9cGFyc2VGbG9h
dChyLnZhbHVlLDEwKXx8MDsobyE9aXx8bz09aSYmci52YWx1ZSE9bykmJihyLnZhbHVlPSIiK28p
fWVsc2Ugci52YWx1ZSE9PSIiK28mJihyLnZhbHVlPSIiK28pO2Vsc2UgbnVsbD09dC52YWx1ZSYm
bnVsbCE9dC5kZWZhdWx0VmFsdWUmJnIuZGVmYXVsdFZhbHVlIT09IiIrdC5kZWZhdWx0VmFsdWUm
JihyLmRlZmF1bHRWYWx1ZT0iIit0LmRlZmF1bHRWYWx1ZSksbnVsbD09dC5jaGVja2VkJiZudWxs
IT10LmRlZmF1bHRDaGVja2VkJiYoci5kZWZhdWx0Q2hlY2tlZD0hIXQuZGVmYXVsdENoZWNrZWQp
fSxwb3N0TW91bnRXcmFwcGVyOmZ1bmN0aW9uKGUpe3ZhciB0PWUuX2N1cnJlbnRFbGVtZW50LnBy
b3BzLG49bC5nZXROb2RlRnJvbUluc3RhbmNlKGUpO3N3aXRjaCh0LnR5cGUpe2Nhc2Uic3VibWl0
IjpjYXNlInJlc2V0IjpicmVhaztjYXNlImNvbG9yIjpjYXNlImRhdGUiOmNhc2UiZGF0ZXRpbWUi
OmNhc2UiZGF0ZXRpbWUtbG9jYWwiOmNhc2UibW9udGgiOmNhc2UidGltZSI6Y2FzZSJ3ZWVrIjpu
LnZhbHVlPSIiLG4udmFsdWU9bi5kZWZhdWx0VmFsdWU7YnJlYWs7ZGVmYXVsdDpuLnZhbHVlPW4u
dmFsdWV9dmFyIHI9bi5uYW1lOyIiIT09ciYmKG4ubmFtZT0iIiksbi5kZWZhdWx0Q2hlY2tlZD0h
bi5kZWZhdWx0Q2hlY2tlZCxuLmRlZmF1bHRDaGVja2VkPSFuLmRlZmF1bHRDaGVja2VkLCIiIT09
ciYmKG4ubmFtZT1yKX19KTtlLmV4cG9ydHM9ZH0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0
IjtmdW5jdGlvbiByKGUpe3ZhciB0PSIiO3JldHVybiBpLkNoaWxkcmVuLmZvckVhY2goZSxmdW5j
dGlvbihlKXtudWxsIT1lJiYoInN0cmluZyI9PXR5cGVvZiBlfHwibnVtYmVyIj09dHlwZW9mIGU/
dCs9ZTpzfHwocz0hMCkpfSksdH12YXIgbz1uKDQpLGk9bigxNyksYT1uKDUpLHU9big2Mikscz0o
bigyKSwhMSksYz17bW91bnRXcmFwcGVyOmZ1bmN0aW9uKGUsdCxuKXt2YXIgbz1udWxsO2lmKG51
bGwhPW4pe3ZhciBpPW47Im9wdGdyb3VwIj09PWkuX3RhZyYmKGk9aS5faG9zdFBhcmVudCksbnVs
bCE9aSYmInNlbGVjdCI9PT1pLl90YWcmJihvPXUuZ2V0U2VsZWN0VmFsdWVDb250ZXh0KGkpKX12
YXIgYT1udWxsO2lmKG51bGwhPW8pe3ZhciBzO2lmKHM9bnVsbCE9dC52YWx1ZT90LnZhbHVlKyIi
OnIodC5jaGlsZHJlbiksYT0hMSxBcnJheS5pc0FycmF5KG8pKXtmb3IodmFyIGM9MDtjPG8ubGVu
Z3RoO2MrKylpZigiIitvW2NdPT09cyl7YT0hMDticmVha319ZWxzZSBhPSIiK289PT1zfWUuX3dy
YXBwZXJTdGF0ZT17c2VsZWN0ZWQ6YX19LHBvc3RNb3VudFdyYXBwZXI6ZnVuY3Rpb24oZSl7dmFy
IHQ9ZS5fY3VycmVudEVsZW1lbnQucHJvcHM7aWYobnVsbCE9dC52YWx1ZSl7dmFyIG49YS5nZXRO
b2RlRnJvbUluc3RhbmNlKGUpO24uc2V0QXR0cmlidXRlKCJ2YWx1ZSIsdC52YWx1ZSl9fSxnZXRI
b3N0UHJvcHM6ZnVuY3Rpb24oZSx0KXt2YXIgbj1vKHtzZWxlY3RlZDp2b2lkIDAsY2hpbGRyZW46
dm9pZCAwfSx0KTtudWxsIT1lLl93cmFwcGVyU3RhdGUuc2VsZWN0ZWQmJihuLnNlbGVjdGVkPWUu
X3dyYXBwZXJTdGF0ZS5zZWxlY3RlZCk7dmFyIGk9cih0LmNoaWxkcmVuKTtyZXR1cm4gaSYmKG4u
Y2hpbGRyZW49aSksbn19O2UuZXhwb3J0cz1jfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3Qi
O2Z1bmN0aW9uIHIoZSx0LG4scil7cmV0dXJuIGU9PT1uJiZ0PT09cn1mdW5jdGlvbiBvKGUpe3Zh
ciB0PWRvY3VtZW50LnNlbGVjdGlvbixuPXQuY3JlYXRlUmFuZ2UoKSxyPW4udGV4dC5sZW5ndGgs
bz1uLmR1cGxpY2F0ZSgpO28ubW92ZVRvRWxlbWVudFRleHQoZSksby5zZXRFbmRQb2ludCgiRW5k
VG9TdGFydCIsbik7dmFyIGk9by50ZXh0Lmxlbmd0aCxhPWkrcjtyZXR1cm57c3RhcnQ6aSxlbmQ6
YX19ZnVuY3Rpb24gaShlKXt2YXIgdD13aW5kb3cuZ2V0U2VsZWN0aW9uJiZ3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCk7aWYoIXR8fDA9PT10LnJhbmdlQ291bnQpcmV0dXJuIG51bGw7dmFyIG49dC5hbmNo
b3JOb2RlLG89dC5hbmNob3JPZmZzZXQsaT10LmZvY3VzTm9kZSxhPXQuZm9jdXNPZmZzZXQsdT10
LmdldFJhbmdlQXQoMCk7dHJ5e3Uuc3RhcnRDb250YWluZXIubm9kZVR5cGUsdS5lbmRDb250YWlu
ZXIubm9kZVR5cGV9Y2F0Y2gocyl7cmV0dXJuIG51bGx9dmFyIGM9cih0LmFuY2hvck5vZGUsdC5h
bmNob3JPZmZzZXQsdC5mb2N1c05vZGUsdC5mb2N1c09mZnNldCksbD1jPzA6dS50b1N0cmluZygp
Lmxlbmd0aCxwPXUuY2xvbmVSYW5nZSgpO3Auc2VsZWN0Tm9kZUNvbnRlbnRzKGUpLHAuc2V0RW5k
KHUuc3RhcnRDb250YWluZXIsdS5zdGFydE9mZnNldCk7dmFyIGQ9cihwLnN0YXJ0Q29udGFpbmVy
LHAuc3RhcnRPZmZzZXQscC5lbmRDb250YWluZXIscC5lbmRPZmZzZXQpLGY9ZD8wOnAudG9TdHJp
bmcoKS5sZW5ndGgsaD1mK2wsdj1kb2N1bWVudC5jcmVhdGVSYW5nZSgpO3Yuc2V0U3RhcnQobixv
KSx2LnNldEVuZChpLGEpO3ZhciBtPXYuY29sbGFwc2VkO3JldHVybntzdGFydDptP2g6ZixlbmQ6
bT9mOmh9fWZ1bmN0aW9uIGEoZSx0KXt2YXIgbixyLG89ZG9jdW1lbnQuc2VsZWN0aW9uLmNyZWF0
ZVJhbmdlKCkuZHVwbGljYXRlKCk7dm9pZCAwPT09dC5lbmQ/KG49dC5zdGFydCxyPW4pOnQuc3Rh
cnQ+dC5lbmQ/KG49dC5lbmQscj10LnN0YXJ0KToobj10LnN0YXJ0LHI9dC5lbmQpLG8ubW92ZVRv
RWxlbWVudFRleHQoZSksby5tb3ZlU3RhcnQoImNoYXJhY3RlciIsbiksby5zZXRFbmRQb2ludCgi
RW5kVG9TdGFydCIsbyksby5tb3ZlRW5kKCJjaGFyYWN0ZXIiLHItbiksby5zZWxlY3QoKX1mdW5j
dGlvbiB1KGUsdCl7aWYod2luZG93LmdldFNlbGVjdGlvbil7dmFyIG49d2luZG93LmdldFNlbGVj
dGlvbigpLHI9ZVtsKCldLmxlbmd0aCxvPU1hdGgubWluKHQuc3RhcnQsciksaT12b2lkIDA9PT10
LmVuZD9vOk1hdGgubWluKHQuZW5kLHIpO2lmKCFuLmV4dGVuZCYmbz5pKXt2YXIgYT1pO2k9byxv
PWF9dmFyIHU9YyhlLG8pLHM9YyhlLGkpO2lmKHUmJnMpe3ZhciBwPWRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7cC5zZXRTdGFydCh1Lm5vZGUsdS5vZmZzZXQpLG4ucmVtb3ZlQWxsUmFuZ2VzKCksbz5p
PyhuLmFkZFJhbmdlKHApLG4uZXh0ZW5kKHMubm9kZSxzLm9mZnNldCkpOihwLnNldEVuZChzLm5v
ZGUscy5vZmZzZXQpLG4uYWRkUmFuZ2UocCkpfX19dmFyIHM9big2KSxjPW4oMTgzKSxsPW4oNzMp
LHA9cy5jYW5Vc2VET00mJiJzZWxlY3Rpb24iaW4gZG9jdW1lbnQmJiEoImdldFNlbGVjdGlvbiJp
biB3aW5kb3cpLGQ9e2dldE9mZnNldHM6cD9vOmksc2V0T2Zmc2V0czpwP2E6dX07ZS5leHBvcnRz
PWR9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigzKSxvPW4oNCksaT1uKDM0
KSxhPW4oMTQpLHU9big1KSxzPW4oMjgpLGM9KG4oMSksbig0OSksZnVuY3Rpb24oZSl7dGhpcy5f
Y3VycmVudEVsZW1lbnQ9ZSx0aGlzLl9zdHJpbmdUZXh0PSIiK2UsdGhpcy5faG9zdE5vZGU9bnVs
bCx0aGlzLl9ob3N0UGFyZW50PW51bGwsdGhpcy5fZG9tSUQ9MCx0aGlzLl9tb3VudEluZGV4PTAs
dGhpcy5fY2xvc2luZ0NvbW1lbnQ9bnVsbCx0aGlzLl9jb21tZW50Tm9kZXM9bnVsbH0pO28oYy5w
cm90b3R5cGUse21vdW50Q29tcG9uZW50OmZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBvPW4uX2lkQ291
bnRlcisrLGk9IiByZWFjdC10ZXh0OiAiK28rIiAiLGM9IiAvcmVhY3QtdGV4dCAiO2lmKHRoaXMu
X2RvbUlEPW8sdGhpcy5faG9zdFBhcmVudD10LGUudXNlQ3JlYXRlRWxlbWVudCl7dmFyIGw9bi5f
b3duZXJEb2N1bWVudCxwPWwuY3JlYXRlQ29tbWVudChpKSxkPWwuY3JlYXRlQ29tbWVudChjKSxm
PWEobC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCkpO3JldHVybiBhLnF1ZXVlQ2hpbGQoZixhKHAp
KSx0aGlzLl9zdHJpbmdUZXh0JiZhLnF1ZXVlQ2hpbGQoZixhKGwuY3JlYXRlVGV4dE5vZGUodGhp
cy5fc3RyaW5nVGV4dCkpKSxhLnF1ZXVlQ2hpbGQoZixhKGQpKSx1LnByZWNhY2hlTm9kZSh0aGlz
LHApLHRoaXMuX2Nsb3NpbmdDb21tZW50PWQsZn12YXIgaD1zKHRoaXMuX3N0cmluZ1RleHQpO3Jl
dHVybiBlLnJlbmRlclRvU3RhdGljTWFya3VwP2g6IjwhLS0iK2krIi0tPiIraCsiPCEtLSIrYysi
LS0+In0scmVjZWl2ZUNvbXBvbmVudDpmdW5jdGlvbihlLHQpe2lmKGUhPT10aGlzLl9jdXJyZW50
RWxlbWVudCl7dGhpcy5fY3VycmVudEVsZW1lbnQ9ZTt2YXIgbj0iIitlO2lmKG4hPT10aGlzLl9z
dHJpbmdUZXh0KXt0aGlzLl9zdHJpbmdUZXh0PW47dmFyIHI9dGhpcy5nZXRIb3N0Tm9kZSgpO2ku
cmVwbGFjZURlbGltaXRlZFRleHQoclswXSxyWzFdLG4pfX19LAotZ2V0SG9zdE5vZGU6ZnVuY3Rp
b24oKXt2YXIgZT10aGlzLl9jb21tZW50Tm9kZXM7aWYoZSlyZXR1cm4gZTtpZighdGhpcy5fY2xv
c2luZ0NvbW1lbnQpZm9yKHZhciB0PXUuZ2V0Tm9kZUZyb21JbnN0YW5jZSh0aGlzKSxuPXQubmV4
dFNpYmxpbmc7Oyl7aWYobnVsbD09bj9yKCI2NyIsdGhpcy5fZG9tSUQpOnZvaWQgMCw4PT09bi5u
b2RlVHlwZSYmIiAvcmVhY3QtdGV4dCAiPT09bi5ub2RlVmFsdWUpe3RoaXMuX2Nsb3NpbmdDb21t
ZW50PW47YnJlYWt9bj1uLm5leHRTaWJsaW5nfXJldHVybiBlPVt0aGlzLl9ob3N0Tm9kZSx0aGlz
Ll9jbG9zaW5nQ29tbWVudF0sdGhpcy5fY29tbWVudE5vZGVzPWUsZX0sdW5tb3VudENvbXBvbmVu
dDpmdW5jdGlvbigpe3RoaXMuX2Nsb3NpbmdDb21tZW50PW51bGwsdGhpcy5fY29tbWVudE5vZGVz
PW51bGwsdS51bmNhY2hlTm9kZSh0aGlzKX19KSxlLmV4cG9ydHM9Y30sZnVuY3Rpb24oZSx0LG4p
eyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKCl7dGhpcy5fcm9vdE5vZGVJRCYmbC51cGRhdGVXcmFw
cGVyKHRoaXMpfWZ1bmN0aW9uIG8oZSl7dmFyIHQ9dGhpcy5fY3VycmVudEVsZW1lbnQucHJvcHMs
bj11LmV4ZWN1dGVPbkNoYW5nZSh0LGUpO3JldHVybiBjLmFzYXAocix0aGlzKSxufXZhciBpPW4o
MyksYT1uKDQpLHU9bigzOSkscz1uKDUpLGM9big5KSxsPShuKDEpLG4oMikse2dldEhvc3RQcm9w
czpmdW5jdGlvbihlLHQpe251bGwhPXQuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw/aSgiOTEiKTp2
b2lkIDA7dmFyIG49YSh7fSx0LHt2YWx1ZTp2b2lkIDAsZGVmYXVsdFZhbHVlOnZvaWQgMCxjaGls
ZHJlbjoiIitlLl93cmFwcGVyU3RhdGUuaW5pdGlhbFZhbHVlLG9uQ2hhbmdlOmUuX3dyYXBwZXJT
dGF0ZS5vbkNoYW5nZX0pO3JldHVybiBufSxtb3VudFdyYXBwZXI6ZnVuY3Rpb24oZSx0KXt2YXIg
bj11LmdldFZhbHVlKHQpLHI9bjtpZihudWxsPT1uKXt2YXIgYT10LmRlZmF1bHRWYWx1ZSxzPXQu
Y2hpbGRyZW47bnVsbCE9cyYmKG51bGwhPWE/aSgiOTIiKTp2b2lkIDAsQXJyYXkuaXNBcnJheShz
KSYmKHMubGVuZ3RoPD0xP3ZvaWQgMDppKCI5MyIpLHM9c1swXSksYT0iIitzKSxudWxsPT1hJiYo
YT0iIikscj1hfWUuX3dyYXBwZXJTdGF0ZT17aW5pdGlhbFZhbHVlOiIiK3IsbGlzdGVuZXJzOm51
bGwsb25DaGFuZ2U6by5iaW5kKGUpfX0sdXBkYXRlV3JhcHBlcjpmdW5jdGlvbihlKXt2YXIgdD1l
Ll9jdXJyZW50RWxlbWVudC5wcm9wcyxuPXMuZ2V0Tm9kZUZyb21JbnN0YW5jZShlKSxyPXUuZ2V0
VmFsdWUodCk7aWYobnVsbCE9cil7dmFyIG89IiIrcjtvIT09bi52YWx1ZSYmKG4udmFsdWU9byks
bnVsbD09dC5kZWZhdWx0VmFsdWUmJihuLmRlZmF1bHRWYWx1ZT1vKX1udWxsIT10LmRlZmF1bHRW
YWx1ZSYmKG4uZGVmYXVsdFZhbHVlPXQuZGVmYXVsdFZhbHVlKX0scG9zdE1vdW50V3JhcHBlcjpm
dW5jdGlvbihlKXt2YXIgdD1zLmdldE5vZGVGcm9tSW5zdGFuY2UoZSksbj10LnRleHRDb250ZW50
O249PT1lLl93cmFwcGVyU3RhdGUuaW5pdGlhbFZhbHVlJiYodC52YWx1ZT1uKX19KTtlLmV4cG9y
dHM9bH0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCl7Il9ob3N0
Tm9kZSJpbiBlP3ZvaWQgMDpzKCIzMyIpLCJfaG9zdE5vZGUiaW4gdD92b2lkIDA6cygiMzMiKTtm
b3IodmFyIG49MCxyPWU7cjtyPXIuX2hvc3RQYXJlbnQpbisrO2Zvcih2YXIgbz0wLGk9dDtpO2k9
aS5faG9zdFBhcmVudClvKys7Zm9yKDtuLW8+MDspZT1lLl9ob3N0UGFyZW50LG4tLTtmb3IoO28t
bj4wOyl0PXQuX2hvc3RQYXJlbnQsby0tO2Zvcih2YXIgYT1uO2EtLTspe2lmKGU9PT10KXJldHVy
biBlO2U9ZS5faG9zdFBhcmVudCx0PXQuX2hvc3RQYXJlbnR9cmV0dXJuIG51bGx9ZnVuY3Rpb24g
byhlLHQpeyJfaG9zdE5vZGUiaW4gZT92b2lkIDA6cygiMzUiKSwiX2hvc3ROb2RlImluIHQ/dm9p
ZCAwOnMoIjM1Iik7Zm9yKDt0Oyl7aWYodD09PWUpcmV0dXJuITA7dD10Ll9ob3N0UGFyZW50fXJl
dHVybiExfWZ1bmN0aW9uIGkoZSl7cmV0dXJuIl9ob3N0Tm9kZSJpbiBlP3ZvaWQgMDpzKCIzNiIp
LGUuX2hvc3RQYXJlbnR9ZnVuY3Rpb24gYShlLHQsbil7Zm9yKHZhciByPVtdO2U7KXIucHVzaChl
KSxlPWUuX2hvc3RQYXJlbnQ7dmFyIG87Zm9yKG89ci5sZW5ndGg7by0tID4wOyl0KHJbb10sImNh
cHR1cmVkIixuKTtmb3Iobz0wO288ci5sZW5ndGg7bysrKXQocltvXSwiYnViYmxlZCIsbil9ZnVu
Y3Rpb24gdShlLHQsbixvLGkpe2Zvcih2YXIgYT1lJiZ0P3IoZSx0KTpudWxsLHU9W107ZSYmZSE9
PWE7KXUucHVzaChlKSxlPWUuX2hvc3RQYXJlbnQ7Zm9yKHZhciBzPVtdO3QmJnQhPT1hOylzLnB1
c2godCksdD10Ll9ob3N0UGFyZW50O3ZhciBjO2ZvcihjPTA7Yzx1Lmxlbmd0aDtjKyspbih1W2Nd
LCJidWJibGVkIixvKTtmb3IoYz1zLmxlbmd0aDtjLS0gPjA7KW4oc1tjXSwiY2FwdHVyZWQiLGkp
fXZhciBzPW4oMyk7bigxKTtlLmV4cG9ydHM9e2lzQW5jZXN0b3I6byxnZXRMb3dlc3RDb21tb25B
bmNlc3RvcjpyLGdldFBhcmVudEluc3RhbmNlOmksdHJhdmVyc2VUd29QaGFzZTphLHRyYXZlcnNl
RW50ZXJMZWF2ZTp1fX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKCl7
dGhpcy5yZWluaXRpYWxpemVUcmFuc2FjdGlvbigpfXZhciBvPW4oNCksaT1uKDkpLGE9bigyNyks
dT1uKDcpLHM9e2luaXRpYWxpemU6dSxjbG9zZTpmdW5jdGlvbigpe2QuaXNCYXRjaGluZ1VwZGF0
ZXM9ITF9fSxjPXtpbml0aWFsaXplOnUsY2xvc2U6aS5mbHVzaEJhdGNoZWRVcGRhdGVzLmJpbmQo
aSl9LGw9W2Msc107byhyLnByb3RvdHlwZSxhLHtnZXRUcmFuc2FjdGlvbldyYXBwZXJzOmZ1bmN0
aW9uKCl7cmV0dXJuIGx9fSk7dmFyIHA9bmV3IHIsZD17aXNCYXRjaGluZ1VwZGF0ZXM6ITEsYmF0
Y2hlZFVwZGF0ZXM6ZnVuY3Rpb24oZSx0LG4scixvLGkpe3ZhciBhPWQuaXNCYXRjaGluZ1VwZGF0
ZXM7cmV0dXJuIGQuaXNCYXRjaGluZ1VwZGF0ZXM9ITAsYT9lKHQsbixyLG8saSk6cC5wZXJmb3Jt
KGUsbnVsbCx0LG4scixvLGkpfX07ZS5leHBvcnRzPWR9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0
cmljdCI7ZnVuY3Rpb24gcigpe3d8fCh3PSEwLGcuRXZlbnRFbWl0dGVyLmluamVjdFJlYWN0RXZl
bnRMaXN0ZW5lcih5KSxnLkV2ZW50UGx1Z2luSHViLmluamVjdEV2ZW50UGx1Z2luT3JkZXIodSks
Zy5FdmVudFBsdWdpblV0aWxzLmluamVjdENvbXBvbmVudFRyZWUoZCksZy5FdmVudFBsdWdpblV0
aWxzLmluamVjdFRyZWVUcmF2ZXJzYWwoaCksZy5FdmVudFBsdWdpbkh1Yi5pbmplY3RFdmVudFBs
dWdpbnNCeU5hbWUoe1NpbXBsZUV2ZW50UGx1Z2luOkUsRW50ZXJMZWF2ZUV2ZW50UGx1Z2luOnMs
Q2hhbmdlRXZlbnRQbHVnaW46YSxTZWxlY3RFdmVudFBsdWdpbjpDLEJlZm9yZUlucHV0RXZlbnRQ
bHVnaW46aX0pLGcuSG9zdENvbXBvbmVudC5pbmplY3RHZW5lcmljQ29tcG9uZW50Q2xhc3MocCks
Zy5Ib3N0Q29tcG9uZW50LmluamVjdFRleHRDb21wb25lbnRDbGFzcyh2KSxnLkRPTVByb3BlcnR5
LmluamVjdERPTVByb3BlcnR5Q29uZmlnKG8pLGcuRE9NUHJvcGVydHkuaW5qZWN0RE9NUHJvcGVy
dHlDb25maWcoYyksZy5ET01Qcm9wZXJ0eS5pbmplY3RET01Qcm9wZXJ0eUNvbmZpZyhfKSxnLkVt
cHR5Q29tcG9uZW50LmluamVjdEVtcHR5Q29tcG9uZW50RmFjdG9yeShmdW5jdGlvbihlKXtyZXR1
cm4gbmV3IGYoZSl9KSxnLlVwZGF0ZXMuaW5qZWN0UmVjb25jaWxlVHJhbnNhY3Rpb24oYiksZy5V
cGRhdGVzLmluamVjdEJhdGNoaW5nU3RyYXRlZ3kobSksZy5Db21wb25lbnQuaW5qZWN0RW52aXJv
bm1lbnQobCkpfXZhciBvPW4oMTI0KSxpPW4oMTI2KSxhPW4oMTI4KSx1PW4oMTMwKSxzPW4oMTMx
KSxjPW4oMTMzKSxsPW4oMTM1KSxwPW4oMTM4KSxkPW4oNSksZj1uKDE0MCksaD1uKDE0OCksdj1u
KDE0NiksbT1uKDE0OSkseT1uKDE1MyksZz1uKDE1NCksYj1uKDE1OSksXz1uKDE2NCksQz1uKDE2
NSksRT1uKDE2Niksdz0hMTtlLmV4cG9ydHM9e2luamVjdDpyfX0sOTEsZnVuY3Rpb24oZSx0LG4p
eyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe28uZW5xdWV1ZUV2ZW50cyhlKSxvLnByb2Nlc3NF
dmVudFF1ZXVlKCExKX12YXIgbz1uKDE5KSxpPXtoYW5kbGVUb3BMZXZlbDpmdW5jdGlvbihlLHQs
bixpKXt2YXIgYT1vLmV4dHJhY3RFdmVudHMoZSx0LG4saSk7cihhKX19O2UuZXhwb3J0cz1pfSxm
dW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7Zm9yKDtlLl9ob3N0UGFy
ZW50OyllPWUuX2hvc3RQYXJlbnQ7dmFyIHQ9cC5nZXROb2RlRnJvbUluc3RhbmNlKGUpLG49dC5w
YXJlbnROb2RlO3JldHVybiBwLmdldENsb3Nlc3RJbnN0YW5jZUZyb21Ob2RlKG4pfWZ1bmN0aW9u
IG8oZSx0KXt0aGlzLnRvcExldmVsVHlwZT1lLHRoaXMubmF0aXZlRXZlbnQ9dCx0aGlzLmFuY2Vz
dG9ycz1bXX1mdW5jdGlvbiBpKGUpe3ZhciB0PWYoZS5uYXRpdmVFdmVudCksbj1wLmdldENsb3Nl
c3RJbnN0YW5jZUZyb21Ob2RlKHQpLG89bjtkbyBlLmFuY2VzdG9ycy5wdXNoKG8pLG89byYmcihv
KTt3aGlsZShvKTtmb3IodmFyIGk9MDtpPGUuYW5jZXN0b3JzLmxlbmd0aDtpKyspbj1lLmFuY2Vz
dG9yc1tpXSx2Ll9oYW5kbGVUb3BMZXZlbChlLnRvcExldmVsVHlwZSxuLGUubmF0aXZlRXZlbnQs
ZihlLm5hdGl2ZUV2ZW50KSl9ZnVuY3Rpb24gYShlKXt2YXIgdD1oKHdpbmRvdyk7ZSh0KX12YXIg
dT1uKDQpLHM9big1MSksYz1uKDYpLGw9bigxMykscD1uKDUpLGQ9big5KSxmPW4oNDYpLGg9bigx
MDQpO3Uoby5wcm90b3R5cGUse2Rlc3RydWN0b3I6ZnVuY3Rpb24oKXt0aGlzLnRvcExldmVsVHlw
ZT1udWxsLHRoaXMubmF0aXZlRXZlbnQ9bnVsbCx0aGlzLmFuY2VzdG9ycy5sZW5ndGg9MH19KSxs
LmFkZFBvb2xpbmdUbyhvLGwudHdvQXJndW1lbnRQb29sZXIpO3ZhciB2PXtfZW5hYmxlZDohMCxf
aGFuZGxlVG9wTGV2ZWw6bnVsbCxXSU5ET1dfSEFORExFOmMuY2FuVXNlRE9NP3dpbmRvdzpudWxs
LHNldEhhbmRsZVRvcExldmVsOmZ1bmN0aW9uKGUpe3YuX2hhbmRsZVRvcExldmVsPWV9LHNldEVu
YWJsZWQ6ZnVuY3Rpb24oZSl7di5fZW5hYmxlZD0hIWV9LGlzRW5hYmxlZDpmdW5jdGlvbigpe3Jl
dHVybiB2Ll9lbmFibGVkfSx0cmFwQnViYmxlZEV2ZW50OmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4g
bj9zLmxpc3RlbihuLHQsdi5kaXNwYXRjaEV2ZW50LmJpbmQobnVsbCxlKSk6bnVsbH0sdHJhcENh
cHR1cmVkRXZlbnQ6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBuP3MuY2FwdHVyZShuLHQsdi5kaXNw
YXRjaEV2ZW50LmJpbmQobnVsbCxlKSk6bnVsbH0sbW9uaXRvclNjcm9sbFZhbHVlOmZ1bmN0aW9u
KGUpe3ZhciB0PWEuYmluZChudWxsLGUpO3MubGlzdGVuKHdpbmRvdywic2Nyb2xsIix0KX0sZGlz
cGF0Y2hFdmVudDpmdW5jdGlvbihlLHQpe2lmKHYuX2VuYWJsZWQpe3ZhciBuPW8uZ2V0UG9vbGVk
KGUsdCk7dHJ5e2QuYmF0Y2hlZFVwZGF0ZXMoaSxuKX1maW5hbGx5e28ucmVsZWFzZShuKX19fX07
ZS5leHBvcnRzPXZ9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigxNSksbz1u
KDE5KSxpPW4oMzcpLGE9big0MCksdT1uKDYzKSxzPW4oMjUpLGM9big2NSksbD1uKDkpLHA9e0Nv
bXBvbmVudDphLmluamVjdGlvbixET01Qcm9wZXJ0eTpyLmluamVjdGlvbixFbXB0eUNvbXBvbmVu
dDp1LmluamVjdGlvbixFdmVudFBsdWdpbkh1YjpvLmluamVjdGlvbixFdmVudFBsdWdpblV0aWxz
OmkuaW5qZWN0aW9uLEV2ZW50RW1pdHRlcjpzLmluamVjdGlvbixIb3N0Q29tcG9uZW50OmMuaW5q
ZWN0aW9uLFVwZGF0ZXM6bC5pbmplY3Rpb259O2UuZXhwb3J0cz1wfSxmdW5jdGlvbihlLHQsbil7
InVzZSBzdHJpY3QiO3ZhciByPW4oMTc3KSxvPS9cLz8+LyxpPS9ePFwhXC1cLS8sYT17Q0hFQ0tT
VU1fQVRUUl9OQU1FOiJkYXRhLXJlYWN0LWNoZWNrc3VtIixhZGRDaGVja3N1bVRvTWFya3VwOmZ1
bmN0aW9uKGUpe3ZhciB0PXIoZSk7cmV0dXJuIGkudGVzdChlKT9lOmUucmVwbGFjZShvLCIgIith
LkNIRUNLU1VNX0FUVFJfTkFNRSsnPSInK3QrJyIkJicpfSxjYW5SZXVzZU1hcmt1cDpmdW5jdGlv
bihlLHQpe3ZhciBuPXQuZ2V0QXR0cmlidXRlKGEuQ0hFQ0tTVU1fQVRUUl9OQU1FKTtuPW4mJnBh
cnNlSW50KG4sMTApO3ZhciBvPXIoZSk7cmV0dXJuIG89PT1ufX07ZS5leHBvcnRzPWF9LGZ1bmN0
aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQsbil7cmV0dXJue3R5cGU6IklO
U0VSVF9NQVJLVVAiLGNvbnRlbnQ6ZSxmcm9tSW5kZXg6bnVsbCxmcm9tTm9kZTpudWxsLHRvSW5k
ZXg6bixhZnRlck5vZGU6dH19ZnVuY3Rpb24gbyhlLHQsbil7cmV0dXJue3R5cGU6Ik1PVkVfRVhJ
U1RJTkciLGNvbnRlbnQ6bnVsbCxmcm9tSW5kZXg6ZS5fbW91bnRJbmRleCxmcm9tTm9kZTpkLmdl
dEhvc3ROb2RlKGUpLHRvSW5kZXg6bixhZnRlck5vZGU6dH19ZnVuY3Rpb24gaShlLHQpe3JldHVy
bnt0eXBlOiJSRU1PVkVfTk9ERSIsY29udGVudDpudWxsLGZyb21JbmRleDplLl9tb3VudEluZGV4
LGZyb21Ob2RlOnQsdG9JbmRleDpudWxsLGFmdGVyTm9kZTpudWxsfX1mdW5jdGlvbiBhKGUpe3Jl
dHVybnt0eXBlOiJTRVRfTUFSS1VQIixjb250ZW50OmUsZnJvbUluZGV4Om51bGwsZnJvbU5vZGU6
bnVsbCx0b0luZGV4Om51bGwsYWZ0ZXJOb2RlOm51bGx9fWZ1bmN0aW9uIHUoZSl7cmV0dXJue3R5
cGU6IlRFWFRfQ09OVEVOVCIsY29udGVudDplLGZyb21JbmRleDpudWxsLGZyb21Ob2RlOm51bGws
dG9JbmRleDpudWxsLGFmdGVyTm9kZTpudWxsfX1mdW5jdGlvbiBzKGUsdCl7cmV0dXJuIHQmJihl
PWV8fFtdLGUucHVzaCh0KSksZX1mdW5jdGlvbiBjKGUsdCl7cC5wcm9jZXNzQ2hpbGRyZW5VcGRh
dGVzKGUsdCl9dmFyIGw9bigzKSxwPW4oNDApLGQ9KG4oMjEpLG4oOCksbigxMSksbigxNikpLGY9
bigxMzQpLGg9KG4oNyksbigxODApKSx2PShuKDEpLHtNaXhpbjp7X3JlY29uY2lsZXJJbnN0YW50
aWF0ZUNoaWxkcmVuOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gZi5pbnN0YW50aWF0ZUNoaWxkcmVu
KGUsdCxuKX0sX3JlY29uY2lsZXJVcGRhdGVDaGlsZHJlbjpmdW5jdGlvbihlLHQsbixyLG8saSl7
dmFyIGEsdT0wO3JldHVybiBhPWgodCx1KSxmLnVwZGF0ZUNoaWxkcmVuKGUsYSxuLHIsbyx0aGlz
LHRoaXMuX2hvc3RDb250YWluZXJJbmZvLGksdSksYX0sbW91bnRDaGlsZHJlbjpmdW5jdGlvbihl
LHQsbil7dmFyIHI9dGhpcy5fcmVjb25jaWxlckluc3RhbnRpYXRlQ2hpbGRyZW4oZSx0LG4pO3Ro
aXMuX3JlbmRlcmVkQ2hpbGRyZW49cjt2YXIgbz1bXSxpPTA7Zm9yKHZhciBhIGluIHIpaWYoci5o
YXNPd25Qcm9wZXJ0eShhKSl7dmFyIHU9clthXSxzPTAsYz1kLm1vdW50Q29tcG9uZW50KHUsdCx0
aGlzLHRoaXMuX2hvc3RDb250YWluZXJJbmZvLG4scyk7dS5fbW91bnRJbmRleD1pKyssby5wdXNo
KGMpfXJldHVybiBvfSx1cGRhdGVUZXh0Q29udGVudDpmdW5jdGlvbihlKXt2YXIgdD10aGlzLl9y
ZW5kZXJlZENoaWxkcmVuO2YudW5tb3VudENoaWxkcmVuKHQsITEpO2Zvcih2YXIgbiBpbiB0KXQu
aGFzT3duUHJvcGVydHkobikmJmwoIjExOCIpO3ZhciByPVt1KGUpXTtjKHRoaXMscil9LHVwZGF0
ZU1hcmt1cDpmdW5jdGlvbihlKXt2YXIgdD10aGlzLl9yZW5kZXJlZENoaWxkcmVuO2YudW5tb3Vu
dENoaWxkcmVuKHQsITEpO2Zvcih2YXIgbiBpbiB0KXQuaGFzT3duUHJvcGVydHkobikmJmwoIjEx
OCIpO3ZhciByPVthKGUpXTtjKHRoaXMscil9LHVwZGF0ZUNoaWxkcmVuOmZ1bmN0aW9uKGUsdCxu
KXt0aGlzLl91cGRhdGVDaGlsZHJlbihlLHQsbil9LF91cGRhdGVDaGlsZHJlbjpmdW5jdGlvbihl
LHQsbil7dmFyIHI9dGhpcy5fcmVuZGVyZWRDaGlsZHJlbixvPXt9LGk9W10sYT10aGlzLl9yZWNv
bmNpbGVyVXBkYXRlQ2hpbGRyZW4ocixlLGksbyx0LG4pO2lmKGF8fHIpe3ZhciB1LGw9bnVsbCxw
PTAsZj0wLGg9MCx2PW51bGw7Zm9yKHUgaW4gYSlpZihhLmhhc093blByb3BlcnR5KHUpKXt2YXIg
bT1yJiZyW3VdLHk9YVt1XTttPT09eT8obD1zKGwsdGhpcy5tb3ZlQ2hpbGQobSx2LHAsZikpLGY9
TWF0aC5tYXgobS5fbW91bnRJbmRleCxmKSxtLl9tb3VudEluZGV4PXApOihtJiYoZj1NYXRoLm1h
eChtLl9tb3VudEluZGV4LGYpKSxsPXMobCx0aGlzLl9tb3VudENoaWxkQXRJbmRleCh5LGlbaF0s
dixwLHQsbikpLGgrKykscCsrLHY9ZC5nZXRIb3N0Tm9kZSh5KX1mb3IodSBpbiBvKW8uaGFzT3du
UHJvcGVydHkodSkmJihsPXMobCx0aGlzLl91bm1vdW50Q2hpbGQoclt1XSxvW3VdKSkpO2wmJmMo
dGhpcyxsKSx0aGlzLl9yZW5kZXJlZENoaWxkcmVuPWF9fSx1bm1vdW50Q2hpbGRyZW46ZnVuY3Rp
b24oZSl7dmFyIHQ9dGhpcy5fcmVuZGVyZWRDaGlsZHJlbjtmLnVubW91bnRDaGlsZHJlbih0LGUp
LHRoaXMuX3JlbmRlcmVkQ2hpbGRyZW49bnVsbH0sbW92ZUNoaWxkOmZ1bmN0aW9uKGUsdCxuLHIp
e2lmKGUuX21vdW50SW5kZXg8cilyZXR1cm4gbyhlLHQsbil9LGNyZWF0ZUNoaWxkOmZ1bmN0aW9u
KGUsdCxuKXtyZXR1cm4gcihuLHQsZS5fbW91bnRJbmRleCl9LHJlbW92ZUNoaWxkOmZ1bmN0aW9u
KGUsdCl7cmV0dXJuIGkoZSx0KX0sX21vdW50Q2hpbGRBdEluZGV4OmZ1bmN0aW9uKGUsdCxuLHIs
byxpKXtyZXR1cm4gZS5fbW91bnRJbmRleD1yLHRoaXMuY3JlYXRlQ2hpbGQoZSxuLHQpfSxfdW5t
b3VudENoaWxkOmZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5yZW1vdmVDaGlsZChlLHQpO3JldHVy
biBlLl9tb3VudEluZGV4PW51bGwsbn19fSk7ZS5leHBvcnRzPXZ9LGZ1bmN0aW9uKGUsdCxuKXsi
dXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1cm4hKCFlfHwiZnVuY3Rpb24iIT10eXBlb2Yg
ZS5hdHRhY2hSZWZ8fCJmdW5jdGlvbiIhPXR5cGVvZiBlLmRldGFjaFJlZil9dmFyIG89bigzKSxp
PShuKDEpLHthZGRDb21wb25lbnRBc1JlZlRvOmZ1bmN0aW9uKGUsdCxuKXtyKG4pP3ZvaWQgMDpv
KCIxMTkiKSxuLmF0dGFjaFJlZih0LGUpfSxyZW1vdmVDb21wb25lbnRBc1JlZkZyb206ZnVuY3Rp
b24oZSx0LG4pe3Iobik/dm9pZCAwOm8oIjEyMCIpO3ZhciBpPW4uZ2V0UHVibGljSW5zdGFuY2Uo
KTtpJiZpLnJlZnNbdF09PT1lLmdldFB1YmxpY0luc3RhbmNlKCkmJm4uZGV0YWNoUmVmKHQpfX0p
O2UuZXhwb3J0cz1pfSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj0iU0VDUkVUX0RP
X05PVF9QQVNTX1RISVNfT1JfWU9VX1dJTExfQkVfRklSRUQiO2UuZXhwb3J0cz1ufSxmdW5jdGlv
bihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7dGhpcy5yZWluaXRpYWxpemVUcmFu
c2FjdGlvbigpLHRoaXMucmVuZGVyVG9TdGF0aWNNYXJrdXA9ITEsdGhpcy5yZWFjdE1vdW50UmVh
ZHk9aS5nZXRQb29sZWQobnVsbCksdGhpcy51c2VDcmVhdGVFbGVtZW50PWV9dmFyIG89big0KSxp
PW4oNTkpLGE9bigxMyksdT1uKDI1KSxzPW4oNjYpLGM9KG4oOCksbigyNykpLGw9big0MikscD17
aW5pdGlhbGl6ZTpzLmdldFNlbGVjdGlvbkluZm9ybWF0aW9uLGNsb3NlOnMucmVzdG9yZVNlbGVj
dGlvbn0sZD17aW5pdGlhbGl6ZTpmdW5jdGlvbigpe3ZhciBlPXUuaXNFbmFibGVkKCk7cmV0dXJu
IHUuc2V0RW5hYmxlZCghMSksZX0sY2xvc2U6ZnVuY3Rpb24oZSl7dS5zZXRFbmFibGVkKGUpfX0s
Zj17aW5pdGlhbGl6ZTpmdW5jdGlvbigpe3RoaXMucmVhY3RNb3VudFJlYWR5LnJlc2V0KCl9LGNs
b3NlOmZ1bmN0aW9uKCl7dGhpcy5yZWFjdE1vdW50UmVhZHkubm90aWZ5QWxsKCl9fSxoPVtwLGQs
Zl0sdj17Z2V0VHJhbnNhY3Rpb25XcmFwcGVyczpmdW5jdGlvbigpe3JldHVybiBofSxnZXRSZWFj
dE1vdW50UmVhZHk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZWFjdE1vdW50UmVhZHl9LGdldFVw
ZGF0ZVF1ZXVlOmZ1bmN0aW9uKCl7cmV0dXJuIGx9LGNoZWNrcG9pbnQ6ZnVuY3Rpb24oKXtyZXR1
cm4gdGhpcy5yZWFjdE1vdW50UmVhZHkuY2hlY2twb2ludCgpfSxyb2xsYmFjazpmdW5jdGlvbihl
KXt0aGlzLnJlYWN0TW91bnRSZWFkeS5yb2xsYmFjayhlKX0sZGVzdHJ1Y3RvcjpmdW5jdGlvbigp
e2kucmVsZWFzZSh0aGlzLnJlYWN0TW91bnRSZWFkeSksdGhpcy5yZWFjdE1vdW50UmVhZHk9bnVs
bH19O28oci5wcm90b3R5cGUsYyx2KSxhLmFkZFBvb2xpbmdUbyhyKSxlLmV4cG9ydHM9cn0sZnVu
Y3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCxuKXsiZnVuY3Rpb24iPT10
eXBlb2YgZT9lKHQuZ2V0UHVibGljSW5zdGFuY2UoKSk6aS5hZGRDb21wb25lbnRBc1JlZlRvKHQs
ZSxuKX1mdW5jdGlvbiBvKGUsdCxuKXsiZnVuY3Rpb24iPT10eXBlb2YgZT9lKG51bGwpOmkucmVt
b3ZlQ29tcG9uZW50QXNSZWZGcm9tKHQsZSxuKX12YXIgaT1uKDE1NyksYT17fTthLmF0dGFjaFJl
ZnM9ZnVuY3Rpb24oZSx0KXtpZihudWxsIT09dCYmIm9iamVjdCI9PXR5cGVvZiB0KXt2YXIgbj10
LnJlZjtudWxsIT1uJiZyKG4sZSx0Ll9vd25lcil9fSxhLnNob3VsZFVwZGF0ZVJlZnM9ZnVuY3Rp
b24oZSx0KXt2YXIgbj1udWxsLHI9bnVsbDtudWxsIT09ZSYmIm9iamVjdCI9PXR5cGVvZiBlJiYo
bj1lLnJlZixyPWUuX293bmVyKTt2YXIgbz1udWxsLGk9bnVsbDtyZXR1cm4gbnVsbCE9PXQmJiJv
YmplY3QiPT10eXBlb2YgdCYmKG89dC5yZWYsaT10Ll9vd25lciksbiE9PW98fCJzdHJpbmciPT10
eXBlb2YgbyYmaSE9PXJ9LGEuZGV0YWNoUmVmcz1mdW5jdGlvbihlLHQpe2lmKG51bGwhPT10JiYi
b2JqZWN0Ij09dHlwZW9mIHQpe3ZhciBuPXQucmVmO251bGwhPW4mJm8obixlLHQuX293bmVyKX19
LGUuZXhwb3J0cz1hfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7
dGhpcy5yZWluaXRpYWxpemVUcmFuc2FjdGlvbigpLHRoaXMucmVuZGVyVG9TdGF0aWNNYXJrdXA9
ZSx0aGlzLnVzZUNyZWF0ZUVsZW1lbnQ9ITEsdGhpcy51cGRhdGVRdWV1ZT1uZXcgdSh0aGlzKX12
YXIgbz1uKDQpLGk9bigxMyksYT1uKDI3KSx1PShuKDgpLG4oMTYyKSkscz1bXSxjPXtlbnF1ZXVl
OmZ1bmN0aW9uKCl7fX0sbD17Z2V0VHJhbnNhY3Rpb25XcmFwcGVyczpmdW5jdGlvbigpe3JldHVy
biBzfSxnZXRSZWFjdE1vdW50UmVhZHk6ZnVuY3Rpb24oKXtyZXR1cm4gY30sZ2V0VXBkYXRlUXVl
dWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy51cGRhdGVRdWV1ZX0sZGVzdHJ1Y3RvcjpmdW5jdGlv
bigpe30sY2hlY2twb2ludDpmdW5jdGlvbigpe30scm9sbGJhY2s6ZnVuY3Rpb24oKXt9fTtvKHIu
cHJvdG90eXBlLGEsbCksaS5hZGRQb29saW5nVG8ociksZS5leHBvcnRzPXJ9LGZ1bmN0aW9uKGUs
dCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRo
cm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfWZ1
bmN0aW9uIG8oZSx0KXt9dmFyIGk9big0MiksYT0obigyKSxmdW5jdGlvbigpe2Z1bmN0aW9uIGUo
dCl7cih0aGlzLGUpLHRoaXMudHJhbnNhY3Rpb249dH1yZXR1cm4gZS5wcm90b3R5cGUuaXNNb3Vu
dGVkPWZ1bmN0aW9uKGUpe3JldHVybiExfSxlLnByb3RvdHlwZS5lbnF1ZXVlQ2FsbGJhY2s9ZnVu
Y3Rpb24oZSx0LG4pe3RoaXMudHJhbnNhY3Rpb24uaXNJblRyYW5zYWN0aW9uKCkmJmkuZW5xdWV1
ZUNhbGxiYWNrKGUsdCxuKX0sZS5wcm90b3R5cGUuZW5xdWV1ZUZvcmNlVXBkYXRlPWZ1bmN0aW9u
KGUpe3RoaXMudHJhbnNhY3Rpb24uaXNJblRyYW5zYWN0aW9uKCk/aS5lbnF1ZXVlRm9yY2VVcGRh
dGUoZSk6byhlLCJmb3JjZVVwZGF0ZSIpfSxlLnByb3RvdHlwZS5lbnF1ZXVlUmVwbGFjZVN0YXRl
PWZ1bmN0aW9uKGUsdCl7dGhpcy50cmFuc2FjdGlvbi5pc0luVHJhbnNhY3Rpb24oKT9pLmVucXVl
dWVSZXBsYWNlU3RhdGUoZSx0KTpvKGUsInJlcGxhY2VTdGF0ZSIpfSxlLnByb3RvdHlwZS5lbnF1
ZXVlU2V0U3RhdGU9ZnVuY3Rpb24oZSx0KXt0aGlzLnRyYW5zYWN0aW9uLmlzSW5UcmFuc2FjdGlv
bigpP2kuZW5xdWV1ZVNldFN0YXRlKGUsdCk6byhlLCJzZXRTdGF0ZSIpfSxlfSgpKTtlLmV4cG9y
dHM9YX0sZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPSIxNS42LjEifSxmdW5j
dGlvbihlLHQpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj17eGxpbms6Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGxpbmsiLHhtbDoiaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlIn0scj17
YWNjZW50SGVpZ2h0OiJhY2NlbnQtaGVpZ2h0IixhY2N1bXVsYXRlOjAsYWRkaXRpdmU6MCxhbGln
bm1lbnRCYXNlbGluZToiYWxpZ25tZW50LWJhc2VsaW5lIixhbGxvd1Jlb3JkZXI6ImFsbG93UmVv
cmRlciIsYWxwaGFiZXRpYzowLGFtcGxpdHVkZTowLGFyYWJpY0Zvcm06ImFyYWJpYy1mb3JtIixh
c2NlbnQ6MCxhdHRyaWJ1dGVOYW1lOiJhdHRyaWJ1dGVOYW1lIixhdHRyaWJ1dGVUeXBlOiJhdHRy
aWJ1dGVUeXBlIixhdXRvUmV2ZXJzZToiYXV0b1JldmVyc2UiLGF6aW11dGg6MCxiYXNlRnJlcXVl
bmN5OiJiYXNlRnJlcXVlbmN5IixiYXNlUHJvZmlsZToiYmFzZVByb2ZpbGUiLGJhc2VsaW5lU2hp
ZnQ6ImJhc2VsaW5lLXNoaWZ0IixiYm94OjAsYmVnaW46MCxiaWFzOjAsYnk6MCxjYWxjTW9kZToi
Y2FsY01vZGUiLGNhcEhlaWdodDoiY2FwLWhlaWdodCIsY2xpcDowLGNsaXBQYXRoOiJjbGlwLXBh
dGgiLGNsaXBSdWxlOiJjbGlwLXJ1bGUiLGNsaXBQYXRoVW5pdHM6ImNsaXBQYXRoVW5pdHMiLGNv
bG9ySW50ZXJwb2xhdGlvbjoiY29sb3ItaW50ZXJwb2xhdGlvbiIsY29sb3JJbnRlcnBvbGF0aW9u
RmlsdGVyczoiY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzIixjb2xvclByb2ZpbGU6ImNvbG9y
LXByb2ZpbGUiLGNvbG9yUmVuZGVyaW5nOiJjb2xvci1yZW5kZXJpbmciLGNvbnRlbnRTY3JpcHRU
eXBlOiJjb250ZW50U2NyaXB0VHlwZSIsY29udGVudFN0eWxlVHlwZToiY29udGVudFN0eWxlVHlw
ZSIsY3Vyc29yOjAsY3g6MCxjeTowLGQ6MCxkZWNlbGVyYXRlOjAsZGVzY2VudDowLGRpZmZ1c2VD
b25zdGFudDoiZGlmZnVzZUNvbnN0YW50IixkaXJlY3Rpb246MCxkaXNwbGF5OjAsZGl2aXNvcjow
LGRvbWluYW50QmFzZWxpbmU6ImRvbWluYW50LWJhc2VsaW5lIixkdXI6MCxkeDowLGR5OjAsZWRn
ZU1vZGU6ImVkZ2VNb2RlIixlbGV2YXRpb246MCxlbmFibGVCYWNrZ3JvdW5kOiJlbmFibGUtYmFj
a2dyb3VuZCIsZW5kOjAsZXhwb25lbnQ6MCxleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOiJleHRl
cm5hbFJlc291cmNlc1JlcXVpcmVkIixmaWxsOjAsZmlsbE9wYWNpdHk6ImZpbGwtb3BhY2l0eSIs
ZmlsbFJ1bGU6ImZpbGwtcnVsZSIsZmlsdGVyOjAsZmlsdGVyUmVzOiJmaWx0ZXJSZXMiLGZpbHRl
clVuaXRzOiJmaWx0ZXJVbml0cyIsZmxvb2RDb2xvcjoiZmxvb2QtY29sb3IiLGZsb29kT3BhY2l0
eToiZmxvb2Qtb3BhY2l0eSIsZm9jdXNhYmxlOjAsZm9udEZhbWlseToiZm9udC1mYW1pbHkiLGZv
bnRTaXplOiJmb250LXNpemUiLGZvbnRTaXplQWRqdXN0OiJmb250LXNpemUtYWRqdXN0Iixmb250
U3RyZXRjaDoiZm9udC1zdHJldGNoIixmb250U3R5bGU6ImZvbnQtc3R5bGUiLGZvbnRWYXJpYW50
OiJmb250LXZhcmlhbnQiLGZvbnRXZWlnaHQ6ImZvbnQtd2VpZ2h0Iixmb3JtYXQ6MCxmcm9tOjAs
Zng6MCxmeTowLGcxOjAsZzI6MCxnbHlwaE5hbWU6ImdseXBoLW5hbWUiLGdseXBoT3JpZW50YXRp
b25Ib3Jpem9udGFsOiJnbHlwaC1vcmllbnRhdGlvbi1ob3Jpem9udGFsIixnbHlwaE9yaWVudGF0
aW9uVmVydGljYWw6ImdseXBoLW9yaWVudGF0aW9uLXZlcnRpY2FsIixnbHlwaFJlZjoiZ2x5cGhS
ZWYiLGdyYWRpZW50VHJhbnNmb3JtOiJncmFkaWVudFRyYW5zZm9ybSIsZ3JhZGllbnRVbml0czoi
Z3JhZGllbnRVbml0cyIsaGFuZ2luZzowLGhvcml6QWR2WDoiaG9yaXotYWR2LXgiLGhvcml6T3Jp
Z2luWDoiaG9yaXotb3JpZ2luLXgiLGlkZW9ncmFwaGljOjAsaW1hZ2VSZW5kZXJpbmc6ImltYWdl
LXJlbmRlcmluZyIsaW46MCxpbjI6MCxpbnRlcmNlcHQ6MCxrOjAsazE6MCxrMjowLGszOjAsazQ6
MCxrZXJuZWxNYXRyaXg6Imtlcm5lbE1hdHJpeCIsa2VybmVsVW5pdExlbmd0aDoia2VybmVsVW5p
dExlbmd0aCIsa2VybmluZzowLGtleVBvaW50czoia2V5UG9pbnRzIixrZXlTcGxpbmVzOiJrZXlT
cGxpbmVzIixrZXlUaW1lczoia2V5VGltZXMiLGxlbmd0aEFkanVzdDoibGVuZ3RoQWRqdXN0Iixs
ZXR0ZXJTcGFjaW5nOiJsZXR0ZXItc3BhY2luZyIsbGlnaHRpbmdDb2xvcjoibGlnaHRpbmctY29s
b3IiLGxpbWl0aW5nQ29uZUFuZ2xlOiJsaW1pdGluZ0NvbmVBbmdsZSIsbG9jYWw6MCxtYXJrZXJF
bmQ6Im1hcmtlci1lbmQiLG1hcmtlck1pZDoibWFya2VyLW1pZCIsbWFya2VyU3RhcnQ6Im1hcmtl
ci1zdGFydCIsbWFya2VySGVpZ2h0OiJtYXJrZXJIZWlnaHQiLG1hcmtlclVuaXRzOiJtYXJrZXJV
bml0cyIsbWFya2VyV2lkdGg6Im1hcmtlcldpZHRoIixtYXNrOjAsbWFza0NvbnRlbnRVbml0czoi
bWFza0NvbnRlbnRVbml0cyIsbWFza1VuaXRzOiJtYXNrVW5pdHMiLG1hdGhlbWF0aWNhbDowLG1v
ZGU6MCxudW1PY3RhdmVzOiJudW1PY3RhdmVzIixvZmZzZXQ6MCxvcGFjaXR5OjAsb3BlcmF0b3I6
MCxvcmRlcjowLG9yaWVudDowLG9yaWVudGF0aW9uOjAsb3JpZ2luOjAsb3ZlcmZsb3c6MCxvdmVy
bGluZVBvc2l0aW9uOiJvdmVybGluZS1wb3NpdGlvbiIsb3ZlcmxpbmVUaGlja25lc3M6Im92ZXJs
aW5lLXRoaWNrbmVzcyIscGFpbnRPcmRlcjoicGFpbnQtb3JkZXIiLHBhbm9zZTE6InBhbm9zZS0x
IixwYXRoTGVuZ3RoOiJwYXRoTGVuZ3RoIixwYXR0ZXJuQ29udGVudFVuaXRzOiJwYXR0ZXJuQ29u
dGVudFVuaXRzIixwYXR0ZXJuVHJhbnNmb3JtOiJwYXR0ZXJuVHJhbnNmb3JtIixwYXR0ZXJuVW5p
dHM6InBhdHRlcm5Vbml0cyIscG9pbnRlckV2ZW50czoicG9pbnRlci1ldmVudHMiLHBvaW50czow
LHBvaW50c0F0WDoicG9pbnRzQXRYIixwb2ludHNBdFk6InBvaW50c0F0WSIscG9pbnRzQXRaOiJw
b2ludHNBdFoiLHByZXNlcnZlQWxwaGE6InByZXNlcnZlQWxwaGEiLHByZXNlcnZlQXNwZWN0UmF0
aW86InByZXNlcnZlQXNwZWN0UmF0aW8iLHByaW1pdGl2ZVVuaXRzOiJwcmltaXRpdmVVbml0cyIs
cjowLHJhZGl1czowLHJlZlg6InJlZlgiLHJlZlk6InJlZlkiLHJlbmRlcmluZ0ludGVudDoicmVu
ZGVyaW5nLWludGVudCIscmVwZWF0Q291bnQ6InJlcGVhdENvdW50IixyZXBlYXREdXI6InJlcGVh
dER1ciIscmVxdWlyZWRFeHRlbnNpb25zOiJyZXF1aXJlZEV4dGVuc2lvbnMiLHJlcXVpcmVkRmVh
dHVyZXM6InJlcXVpcmVkRmVhdHVyZXMiLHJlc3RhcnQ6MCxyZXN1bHQ6MCxyb3RhdGU6MCxyeDow
LHJ5OjAsc2NhbGU6MCxzZWVkOjAsc2hhcGVSZW5kZXJpbmc6InNoYXBlLXJlbmRlcmluZyIsc2xv
cGU6MCxzcGFjaW5nOjAsc3BlY3VsYXJDb25zdGFudDoic3BlY3VsYXJDb25zdGFudCIsc3BlY3Vs
YXJFeHBvbmVudDoic3BlY3VsYXJFeHBvbmVudCIsc3BlZWQ6MCxzcHJlYWRNZXRob2Q6InNwcmVh
ZE1ldGhvZCIsc3RhcnRPZmZzZXQ6InN0YXJ0T2Zmc2V0IixzdGREZXZpYXRpb246InN0ZERldmlh
dGlvbiIsc3RlbWg6MCxzdGVtdjowLHN0aXRjaFRpbGVzOiJzdGl0Y2hUaWxlcyIsc3RvcENvbG9y
OiJzdG9wLWNvbG9yIixzdG9wT3BhY2l0eToic3RvcC1vcGFjaXR5IixzdHJpa2V0aHJvdWdoUG9z
aXRpb246InN0cmlrZXRocm91Z2gtcG9zaXRpb24iLHN0cmlrZXRocm91Z2hUaGlja25lc3M6InN0
cmlrZXRocm91Z2gtdGhpY2tuZXNzIixzdHJpbmc6MCxzdHJva2U6MCxzdHJva2VEYXNoYXJyYXk6
InN0cm9rZS1kYXNoYXJyYXkiLHN0cm9rZURhc2hvZmZzZXQ6InN0cm9rZS1kYXNob2Zmc2V0Iixz
dHJva2VMaW5lY2FwOiJzdHJva2UtbGluZWNhcCIsc3Ryb2tlTGluZWpvaW46InN0cm9rZS1saW5l
am9pbiIsc3Ryb2tlTWl0ZXJsaW1pdDoic3Ryb2tlLW1pdGVybGltaXQiLHN0cm9rZU9wYWNpdHk6
InN0cm9rZS1vcGFjaXR5IixzdHJva2VXaWR0aDoic3Ryb2tlLXdpZHRoIixzdXJmYWNlU2NhbGU6
InN1cmZhY2VTY2FsZSIsc3lzdGVtTGFuZ3VhZ2U6InN5c3RlbUxhbmd1YWdlIix0YWJsZVZhbHVl
czoidGFibGVWYWx1ZXMiLHRhcmdldFg6InRhcmdldFgiLHRhcmdldFk6InRhcmdldFkiLHRleHRB
bmNob3I6InRleHQtYW5jaG9yIix0ZXh0RGVjb3JhdGlvbjoidGV4dC1kZWNvcmF0aW9uIix0ZXh0
UmVuZGVyaW5nOiJ0ZXh0LXJlbmRlcmluZyIsdGV4dExlbmd0aDoidGV4dExlbmd0aCIsdG86MCx0
cmFuc2Zvcm06MCx1MTowLHUyOjAsdW5kZXJsaW5lUG9zaXRpb246InVuZGVybGluZS1wb3NpdGlv
biIsdW5kZXJsaW5lVGhpY2tuZXNzOiJ1bmRlcmxpbmUtdGhpY2tuZXNzIix1bmljb2RlOjAsdW5p
Y29kZUJpZGk6InVuaWNvZGUtYmlkaSIsdW5pY29kZVJhbmdlOiJ1bmljb2RlLXJhbmdlIix1bml0
c1BlckVtOiJ1bml0cy1wZXItZW0iLHZBbHBoYWJldGljOiJ2LWFscGhhYmV0aWMiLHZIYW5naW5n
OiJ2LWhhbmdpbmciLHZJZGVvZ3JhcGhpYzoidi1pZGVvZ3JhcGhpYyIsdk1hdGhlbWF0aWNhbDoi
di1tYXRoZW1hdGljYWwiLHZhbHVlczowLHZlY3RvckVmZmVjdDoidmVjdG9yLWVmZmVjdCIsdmVy
c2lvbjowLHZlcnRBZHZZOiJ2ZXJ0LWFkdi15Iix2ZXJ0T3JpZ2luWDoidmVydC1vcmlnaW4teCIs
dmVydE9yaWdpblk6InZlcnQtb3JpZ2luLXkiLHZpZXdCb3g6InZpZXdCb3giLHZpZXdUYXJnZXQ6
InZpZXdUYXJnZXQiLHZpc2liaWxpdHk6MCx3aWR0aHM6MCx3b3JkU3BhY2luZzoid29yZC1zcGFj
aW5nIix3cml0aW5nTW9kZToid3JpdGluZy1tb2RlIix4OjAseEhlaWdodDoieC1oZWlnaHQiLHgx
OjAseDI6MCx4Q2hhbm5lbFNlbGVjdG9yOiJ4Q2hhbm5lbFNlbGVjdG9yIix4bGlua0FjdHVhdGU6
InhsaW5rOmFjdHVhdGUiLHhsaW5rQXJjcm9sZToieGxpbms6YXJjcm9sZSIseGxpbmtIcmVmOiJ4
bGluazpocmVmIix4bGlua1JvbGU6InhsaW5rOnJvbGUiLHhsaW5rU2hvdzoieGxpbms6c2hvdyIs
eGxpbmtUaXRsZToieGxpbms6dGl0bGUiLHhsaW5rVHlwZToieGxpbms6dHlwZSIseG1sQmFzZToi
eG1sOmJhc2UiLHhtbG5zOjAseG1sbnNYbGluazoieG1sbnM6eGxpbmsiLHhtbExhbmc6InhtbDps
YW5nIix4bWxTcGFjZToieG1sOnNwYWNlIix5OjAseTE6MCx5MjowLHlDaGFubmVsU2VsZWN0b3I6
InlDaGFubmVsU2VsZWN0b3IiLHo6MCx6b29tQW5kUGFuOiJ6b29tQW5kUGFuIn0sbz17UHJvcGVy
dGllczp7fSxET01BdHRyaWJ1dGVOYW1lc3BhY2VzOnt4bGlua0FjdHVhdGU6bi54bGluayx4bGlu
a0FyY3JvbGU6bi54bGluayx4bGlua0hyZWY6bi54bGluayx4bGlua1JvbGU6bi54bGluayx4bGlu
a1Nob3c6bi54bGluayx4bGlua1RpdGxlOm4ueGxpbmsseGxpbmtUeXBlOm4ueGxpbmsseG1sQmFz
ZTpuLnhtbCx4bWxMYW5nOm4ueG1sLHhtbFNwYWNlOm4ueG1sfSxET01BdHRyaWJ1dGVOYW1lczp7
fX07T2JqZWN0LmtleXMocikuZm9yRWFjaChmdW5jdGlvbihlKXtvLlByb3BlcnRpZXNbZV09MCxy
W2VdJiYoby5ET01BdHRyaWJ1dGVOYW1lc1tlXT1yW2VdKX0pLGUuZXhwb3J0cz1vfSxmdW5jdGlv
bihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7aWYoInNlbGVjdGlvblN0YXJ0Imlu
IGUmJnMuaGFzU2VsZWN0aW9uQ2FwYWJpbGl0aWVzKGUpKXJldHVybntzdGFydDplLnNlbGVjdGlv
blN0YXJ0LGVuZDplLnNlbGVjdGlvbkVuZH07aWYod2luZG93LmdldFNlbGVjdGlvbil7dmFyIHQ9
d2luZG93LmdldFNlbGVjdGlvbigpO3JldHVybnthbmNob3JOb2RlOnQuYW5jaG9yTm9kZSxhbmNo
b3JPZmZzZXQ6dC5hbmNob3JPZmZzZXQsZm9jdXNOb2RlOnQuZm9jdXNOb2RlLGZvY3VzT2Zmc2V0
OnQuZm9jdXNPZmZzZXR9fWlmKGRvY3VtZW50LnNlbGVjdGlvbil7dmFyIG49ZG9jdW1lbnQuc2Vs
ZWN0aW9uLmNyZWF0ZVJhbmdlKCk7cmV0dXJue3BhcmVudEVsZW1lbnQ6bi5wYXJlbnRFbGVtZW50
KCksdGV4dDpuLnRleHQsdG9wOm4uYm91bmRpbmdUb3AsbGVmdDpuLmJvdW5kaW5nTGVmdH19fWZ1
bmN0aW9uIG8oZSx0KXtpZihnfHxudWxsPT12fHx2IT09bCgpKXJldHVybiBudWxsO3ZhciBuPXIo
dik7aWYoIXl8fCFkKHksbikpe3k9bjt2YXIgbz1jLmdldFBvb2xlZChoLnNlbGVjdCxtLGUsdCk7
cmV0dXJuIG8udHlwZT0ic2VsZWN0IixvLnRhcmdldD12LGkuYWNjdW11bGF0ZVR3b1BoYXNlRGlz
cGF0Y2hlcyhvKSxvfXJldHVybiBudWxsfXZhciBpPW4oMjApLGE9big2KSx1PW4oNSkscz1uKDY2
KSxjPW4oMTApLGw9big1MykscD1uKDc2KSxkPW4oMzIpLGY9YS5jYW5Vc2VET00mJiJkb2N1bWVu
dE1vZGUiaW4gZG9jdW1lbnQmJmRvY3VtZW50LmRvY3VtZW50TW9kZTw9MTEsaD17c2VsZWN0Ontw
aGFzZWRSZWdpc3RyYXRpb25OYW1lczp7YnViYmxlZDoib25TZWxlY3QiLGNhcHR1cmVkOiJvblNl
bGVjdENhcHR1cmUifSxkZXBlbmRlbmNpZXM6WyJ0b3BCbHVyIiwidG9wQ29udGV4dE1lbnUiLCJ0
b3BGb2N1cyIsInRvcEtleURvd24iLCJ0b3BLZXlVcCIsInRvcE1vdXNlRG93biIsInRvcE1vdXNl
VXAiLCJ0b3BTZWxlY3Rpb25DaGFuZ2UiXX19LHY9bnVsbCxtPW51bGwseT1udWxsLGc9ITEsYj0h
MSxfPXtldmVudFR5cGVzOmgsZXh0cmFjdEV2ZW50czpmdW5jdGlvbihlLHQsbixyKXtpZighYily
ZXR1cm4gbnVsbDt2YXIgaT10P3UuZ2V0Tm9kZUZyb21JbnN0YW5jZSh0KTp3aW5kb3c7c3dpdGNo
KGUpe2Nhc2UidG9wRm9jdXMiOihwKGkpfHwidHJ1ZSI9PT1pLmNvbnRlbnRFZGl0YWJsZSkmJih2
PWksbT10LHk9bnVsbCk7YnJlYWs7Y2FzZSJ0b3BCbHVyIjp2PW51bGwsbT1udWxsLHk9bnVsbDti
cmVhaztjYXNlInRvcE1vdXNlRG93biI6Zz0hMDticmVhaztjYXNlInRvcENvbnRleHRNZW51Ijpj
YXNlInRvcE1vdXNlVXAiOnJldHVybiBnPSExLG8obixyKTtjYXNlInRvcFNlbGVjdGlvbkNoYW5n
ZSI6aWYoZilicmVhaztjYXNlInRvcEtleURvd24iOmNhc2UidG9wS2V5VXAiOnJldHVybiBvKG4s
cil9cmV0dXJuIG51bGx9LGRpZFB1dExpc3RlbmVyOmZ1bmN0aW9uKGUsdCxuKXsib25TZWxlY3Qi
PT09dCYmKGI9ITApfX07ZS5leHBvcnRzPV99LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7
ZnVuY3Rpb24gcihlKXtyZXR1cm4iLiIrZS5fcm9vdE5vZGVJRH1mdW5jdGlvbiBvKGUpe3JldHVy
biJidXR0b24iPT09ZXx8ImlucHV0Ij09PWV8fCJzZWxlY3QiPT09ZXx8InRleHRhcmVhIj09PWV9
dmFyIGk9bigzKSxhPW4oNTEpLHU9bigyMCkscz1uKDUpLGM9bigxNjcpLGw9bigxNjgpLHA9bigx
MCksZD1uKDE3MSksZj1uKDE3MyksaD1uKDI2KSx2PW4oMTcwKSxtPW4oMTc0KSx5PW4oMTc1KSxn
PW4oMjIpLGI9bigxNzYpLF89big3KSxDPW4oNDQpLEU9KG4oMSkse30pLHc9e307WyJhYm9ydCIs
ImFuaW1hdGlvbkVuZCIsImFuaW1hdGlvbkl0ZXJhdGlvbiIsImFuaW1hdGlvblN0YXJ0IiwiYmx1
ciIsImNhblBsYXkiLCJjYW5QbGF5VGhyb3VnaCIsImNsaWNrIiwiY29udGV4dE1lbnUiLCJjb3B5
IiwiY3V0IiwiZG91YmxlQ2xpY2siLCJkcmFnIiwiZHJhZ0VuZCIsImRyYWdFbnRlciIsImRyYWdF
eGl0IiwiZHJhZ0xlYXZlIiwiZHJhZ092ZXIiLCJkcmFnU3RhcnQiLCJkcm9wIiwiZHVyYXRpb25D
aGFuZ2UiLCJlbXB0aWVkIiwiZW5jcnlwdGVkIiwiZW5kZWQiLCJlcnJvciIsImZvY3VzIiwiaW5w
dXQiLCJpbnZhbGlkIiwia2V5RG93biIsImtleVByZXNzIiwia2V5VXAiLCJsb2FkIiwibG9hZGVk
RGF0YSIsImxvYWRlZE1ldGFkYXRhIiwibG9hZFN0YXJ0IiwibW91c2VEb3duIiwibW91c2VNb3Zl
IiwibW91c2VPdXQiLCJtb3VzZU92ZXIiLCJtb3VzZVVwIiwicGFzdGUiLCJwYXVzZSIsInBsYXki
LCJwbGF5aW5nIiwicHJvZ3Jlc3MiLCJyYXRlQ2hhbmdlIiwicmVzZXQiLCJzY3JvbGwiLCJzZWVr
ZWQiLCJzZWVraW5nIiwic3RhbGxlZCIsInN1Ym1pdCIsInN1c3BlbmQiLCJ0aW1lVXBkYXRlIiwi
dG91Y2hDYW5jZWwiLCJ0b3VjaEVuZCIsInRvdWNoTW92ZSIsInRvdWNoU3RhcnQiLCJ0cmFuc2l0
aW9uRW5kIiwidm9sdW1lQ2hhbmdlIiwid2FpdGluZyIsIndoZWVsIl0uZm9yRWFjaChmdW5jdGlv
bihlKXt2YXIgdD1lWzBdLnRvVXBwZXJDYXNlKCkrZS5zbGljZSgxKSxuPSJvbiIrdCxyPSJ0b3Ai
K3Qsbz17cGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6e2J1YmJsZWQ6bixjYXB0dXJlZDpuKyJDYXB0
dXJlIn0sZGVwZW5kZW5jaWVzOltyXX07RVtlXT1vLHdbcl09b30pO3ZhciBUPXt9LFA9e2V2ZW50
VHlwZXM6RSxleHRyYWN0RXZlbnRzOmZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBvPXdbZV07aWYoIW8p
cmV0dXJuIG51bGw7dmFyIGE7c3dpdGNoKGUpe2Nhc2UidG9wQWJvcnQiOmNhc2UidG9wQ2FuUGxh
eSI6Y2FzZSJ0b3BDYW5QbGF5VGhyb3VnaCI6Y2FzZSJ0b3BEdXJhdGlvbkNoYW5nZSI6Y2FzZSJ0
b3BFbXB0aWVkIjpjYXNlInRvcEVuY3J5cHRlZCI6Y2FzZSJ0b3BFbmRlZCI6Y2FzZSJ0b3BFcnJv
ciI6Y2FzZSJ0b3BJbnB1dCI6Y2FzZSJ0b3BJbnZhbGlkIjpjYXNlInRvcExvYWQiOmNhc2UidG9w
TG9hZGVkRGF0YSI6Y2FzZSJ0b3BMb2FkZWRNZXRhZGF0YSI6Y2FzZSJ0b3BMb2FkU3RhcnQiOmNh
c2UidG9wUGF1c2UiOmNhc2UidG9wUGxheSI6Y2FzZSJ0b3BQbGF5aW5nIjpjYXNlInRvcFByb2dy
ZXNzIjpjYXNlInRvcFJhdGVDaGFuZ2UiOmNhc2UidG9wUmVzZXQiOmNhc2UidG9wU2Vla2VkIjpj
YXNlInRvcFNlZWtpbmciOmNhc2UidG9wU3RhbGxlZCI6Y2FzZSJ0b3BTdWJtaXQiOmNhc2UidG9w
U3VzcGVuZCI6Y2FzZSJ0b3BUaW1lVXBkYXRlIjpjYXNlInRvcFZvbHVtZUNoYW5nZSI6Y2FzZSJ0
b3BXYWl0aW5nIjphPXA7YnJlYWs7Y2FzZSJ0b3BLZXlQcmVzcyI6aWYoMD09PUMobikpcmV0dXJu
IG51bGw7Y2FzZSJ0b3BLZXlEb3duIjpjYXNlInRvcEtleVVwIjphPWY7YnJlYWs7Y2FzZSJ0b3BC
bHVyIjpjYXNlInRvcEZvY3VzIjphPWQ7YnJlYWs7Y2FzZSJ0b3BDbGljayI6aWYoMj09PW4uYnV0
dG9uKXJldHVybiBudWxsO2Nhc2UidG9wRG91YmxlQ2xpY2siOmNhc2UidG9wTW91c2VEb3duIjpj
YXNlInRvcE1vdXNlTW92ZSI6Y2FzZSJ0b3BNb3VzZVVwIjpjYXNlInRvcE1vdXNlT3V0IjpjYXNl
InRvcE1vdXNlT3ZlciI6Y2FzZSJ0b3BDb250ZXh0TWVudSI6YT1oO2JyZWFrO2Nhc2UidG9wRHJh
ZyI6Y2FzZSJ0b3BEcmFnRW5kIjpjYXNlInRvcERyYWdFbnRlciI6Y2FzZSJ0b3BEcmFnRXhpdCI6
Y2FzZSJ0b3BEcmFnTGVhdmUiOmNhc2UidG9wRHJhZ092ZXIiOmNhc2UidG9wRHJhZ1N0YXJ0Ijpj
YXNlInRvcERyb3AiOmE9djticmVhaztjYXNlInRvcFRvdWNoQ2FuY2VsIjpjYXNlInRvcFRvdWNo
RW5kIjpjYXNlInRvcFRvdWNoTW92ZSI6Y2FzZSJ0b3BUb3VjaFN0YXJ0IjphPW07YnJlYWs7Y2Fz
ZSJ0b3BBbmltYXRpb25FbmQiOmNhc2UidG9wQW5pbWF0aW9uSXRlcmF0aW9uIjpjYXNlInRvcEFu
aW1hdGlvblN0YXJ0IjphPWM7YnJlYWs7Y2FzZSJ0b3BUcmFuc2l0aW9uRW5kIjphPXk7YnJlYWs7
Y2FzZSJ0b3BTY3JvbGwiOmE9ZzticmVhaztjYXNlInRvcFdoZWVsIjphPWI7YnJlYWs7Y2FzZSJ0
b3BDb3B5IjpjYXNlInRvcEN1dCI6Y2FzZSJ0b3BQYXN0ZSI6YT1sfWE/dm9pZCAwOmkoIjg2Iixl
KTt2YXIgcz1hLmdldFBvb2xlZChvLHQsbixyKTtyZXR1cm4gdS5hY2N1bXVsYXRlVHdvUGhhc2VE
aXNwYXRjaGVzKHMpLHN9LGRpZFB1dExpc3RlbmVyOmZ1bmN0aW9uKGUsdCxuKXtpZigib25DbGlj
ayI9PT10JiYhbyhlLl90YWcpKXt2YXIgaT1yKGUpLHU9cy5nZXROb2RlRnJvbUluc3RhbmNlKGUp
O1RbaV18fChUW2ldPWEubGlzdGVuKHUsImNsaWNrIixfKSl9fSx3aWxsRGVsZXRlTGlzdGVuZXI6
ZnVuY3Rpb24oZSx0KXtpZigib25DbGljayI9PT10JiYhbyhlLl90YWcpKXt2YXIgbj1yKGUpO1Rb
bl0ucmVtb3ZlKCksZGVsZXRlIFRbbl19fX07ZS5leHBvcnRzPVB9LGZ1bmN0aW9uKGUsdCxuKXsi
dXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQsbixyKXtyZXR1cm4gby5jYWxsKHRoaXMsZSx0LG4s
cil9dmFyIG89bigxMCksaT17YW5pbWF0aW9uTmFtZTpudWxsLGVsYXBzZWRUaW1lOm51bGwscHNl
dWRvRWxlbWVudDpudWxsfTtvLmF1Z21lbnRDbGFzcyhyLGkpLGUuZXhwb3J0cz1yfSxmdW5jdGlv
bihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0LG4scil7cmV0dXJuIG8uY2FsbCh0
aGlzLGUsdCxuLHIpfXZhciBvPW4oMTApLGk9e2NsaXBib2FyZERhdGE6ZnVuY3Rpb24oZSl7cmV0
dXJuImNsaXBib2FyZERhdGEiaW4gZT9lLmNsaXBib2FyZERhdGE6d2luZG93LmNsaXBib2FyZERh
dGF9fTtvLmF1Z21lbnRDbGFzcyhyLGkpLGUuZXhwb3J0cz1yfSxmdW5jdGlvbihlLHQsbil7InVz
ZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0LG4scil7cmV0dXJuIG8uY2FsbCh0aGlzLGUsdCxuLHIp
fXZhciBvPW4oMTApLGk9e2RhdGE6bnVsbH07by5hdWdtZW50Q2xhc3MocixpKSxlLmV4cG9ydHM9
cn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCxuLHIpe3JldHVy
biBvLmNhbGwodGhpcyxlLHQsbixyKX12YXIgbz1uKDI2KSxpPXtkYXRhVHJhbnNmZXI6bnVsbH07
by5hdWdtZW50Q2xhc3MocixpKSxlLmV4cG9ydHM9cn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3Ry
aWN0IjtmdW5jdGlvbiByKGUsdCxuLHIpe3JldHVybiBvLmNhbGwodGhpcyxlLHQsbixyKX12YXIg
bz1uKDIyKSxpPXtyZWxhdGVkVGFyZ2V0Om51bGx9O28uYXVnbWVudENsYXNzKHIsaSksZS5leHBv
cnRzPXJ9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQsbixyKXty
ZXR1cm4gby5jYWxsKHRoaXMsZSx0LG4scil9dmFyIG89bigxMCksaT17ZGF0YTpudWxsfTtvLmF1
Z21lbnRDbGFzcyhyLGkpLGUuZXhwb3J0cz1yfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3Qi
O2Z1bmN0aW9uIHIoZSx0LG4scil7cmV0dXJuIG8uY2FsbCh0aGlzLGUsdCxuLHIpfXZhciBvPW4o
MjIpLGk9big0NCksYT1uKDE4MSksdT1uKDQ1KSxzPXtrZXk6YSxsb2NhdGlvbjpudWxsLGN0cmxL
ZXk6bnVsbCxzaGlmdEtleTpudWxsLGFsdEtleTpudWxsLG1ldGFLZXk6bnVsbCxyZXBlYXQ6bnVs
bCxsb2NhbGU6bnVsbCxnZXRNb2RpZmllclN0YXRlOnUsY2hhckNvZGU6ZnVuY3Rpb24oZSl7cmV0
dXJuImtleXByZXNzIj09PWUudHlwZT9pKGUpOjB9LGtleUNvZGU6ZnVuY3Rpb24oZSl7cmV0dXJu
ImtleWRvd24iPT09ZS50eXBlfHwia2V5dXAiPT09ZS50eXBlP2Uua2V5Q29kZTowfSx3aGljaDpm
dW5jdGlvbihlKXtyZXR1cm4ia2V5cHJlc3MiPT09ZS50eXBlP2koZSk6ImtleWRvd24iPT09ZS50
eXBlfHwia2V5dXAiPT09ZS50eXBlP2Uua2V5Q29kZTowfX07by5hdWdtZW50Q2xhc3MocixzKSxl
LmV4cG9ydHM9cn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCxu
LHIpe3JldHVybiBvLmNhbGwodGhpcyxlLHQsbixyKX12YXIgbz1uKDIyKSxpPW4oNDUpLGE9e3Rv
dWNoZXM6bnVsbCx0YXJnZXRUb3VjaGVzOm51bGwsY2hhbmdlZFRvdWNoZXM6bnVsbCxhbHRLZXk6
bnVsbCxtZXRhS2V5Om51bGwsY3RybEtleTpudWxsLHNoaWZ0S2V5Om51bGwsZ2V0TW9kaWZpZXJT
dGF0ZTppfTtvLmF1Z21lbnRDbGFzcyhyLGEpLGUuZXhwb3J0cz1yfSxmdW5jdGlvbihlLHQsbil7
InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0LG4scil7cmV0dXJuIG8uY2FsbCh0aGlzLGUsdCxu
LHIpfXZhciBvPW4oMTApLGk9e3Byb3BlcnR5TmFtZTpudWxsLGVsYXBzZWRUaW1lOm51bGwscHNl
dWRvRWxlbWVudDpudWxsfTtvLmF1Z21lbnRDbGFzcyhyLGkpLGUuZXhwb3J0cz1yfSxmdW5jdGlv
bihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0LG4scil7cmV0dXJuIG8uY2FsbCh0
aGlzLGUsdCxuLHIpfXZhciBvPW4oMjYpLGk9e2RlbHRhWDpmdW5jdGlvbihlKXtyZXR1cm4iZGVs
dGFYImluIGU/ZS5kZWx0YVg6IndoZWVsRGVsdGFYImluIGU/LWUud2hlZWxEZWx0YVg6MH0sZGVs
dGFZOmZ1bmN0aW9uKGUpe3JldHVybiJkZWx0YVkiaW4gZT9lLmRlbHRhWToid2hlZWxEZWx0YVki
aW4gZT8tZS53aGVlbERlbHRhWToid2hlZWxEZWx0YSJpbiBlPy1lLndoZWVsRGVsdGE6MH0sZGVs
dGFaOm51bGwsZGVsdGFNb2RlOm51bGx9O28uYXVnbWVudENsYXNzKHIsaSksZS5leHBvcnRzPXJ9
LGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4oZSl7Zm9yKHZhciB0PTEsbj0w
LG89MCxpPWUubGVuZ3RoLGE9aSYtNDtvPGE7KXtmb3IodmFyIHU9TWF0aC5taW4obys0MDk2LGEp
O288dTtvKz00KW4rPSh0Kz1lLmNoYXJDb2RlQXQobykpKyh0Kz1lLmNoYXJDb2RlQXQobysxKSkr
KHQrPWUuY2hhckNvZGVBdChvKzIpKSsodCs9ZS5jaGFyQ29kZUF0KG8rMykpO3QlPXIsbiU9cn1m
b3IoO288aTtvKyspbis9dCs9ZS5jaGFyQ29kZUF0KG8pO3JldHVybiB0JT1yLG4lPXIsdHxuPDwx
Nn12YXIgcj02NTUyMTtlLmV4cG9ydHM9bn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijtm
dW5jdGlvbiByKGUsdCxuLHIpe3ZhciBvPW51bGw9PXR8fCJib29sZWFuIj09dHlwZW9mIHR8fCIi
PT09dDtpZihvKXJldHVybiIiO3ZhciBhPWlzTmFOKHQpO2lmKHJ8fGF8fDA9PT10fHxpLmhhc093
blByb3BlcnR5KGUpJiZpW2VdKXJldHVybiIiK3Q7aWYoInN0cmluZyI9PXR5cGVvZiB0KXt0PXQu
dHJpbSgpfXJldHVybiB0KyJweCJ9dmFyIG89big1OCksaT0obigyKSxvLmlzVW5pdGxlc3NOdW1i
ZXIpO2UuZXhwb3J0cz1yfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIo
ZSl7aWYobnVsbD09ZSlyZXR1cm4gbnVsbDtpZigxPT09ZS5ub2RlVHlwZSlyZXR1cm4gZTt2YXIg
dD1hLmdldChlKTtyZXR1cm4gdD8odD11KHQpLHQ/aS5nZXROb2RlRnJvbUluc3RhbmNlKHQpOm51
bGwpOnZvaWQoImZ1bmN0aW9uIj09dHlwZW9mIGUucmVuZGVyP28oIjQ0Iik6bygiNDUiLE9iamVj
dC5rZXlzKGUpKSl9dmFyIG89bigzKSxpPShuKDExKSxuKDUpKSxhPW4oMjEpLHU9big3Mik7bigx
KSxuKDIpO2UuZXhwb3J0cz1yfSxmdW5jdGlvbihlLHQsbil7KGZ1bmN0aW9uKHQpeyJ1c2Ugc3Ry
aWN0IjtmdW5jdGlvbiByKGUsdCxuLHIpe2lmKGUmJiJvYmplY3QiPT10eXBlb2YgZSl7dmFyIG89
ZSxpPXZvaWQgMD09PW9bbl07aSYmbnVsbCE9dCYmKG9bbl09dCl9fWZ1bmN0aW9uIG8oZSx0KXtp
ZihudWxsPT1lKXJldHVybiBlO3ZhciBuPXt9O3JldHVybiBpKGUscixuKSxufXZhciBpPShuKDM4
KSxuKDc4KSk7bigyKTsidW5kZWZpbmVkIiE9dHlwZW9mIHQmJnQuZW52LDEsZS5leHBvcnRzPW99
KS5jYWxsKHQsbig4NykpfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIo
ZSl7aWYoZS5rZXkpe3ZhciB0PWlbZS5rZXldfHxlLmtleTtpZigiVW5pZGVudGlmaWVkIiE9PXQp
cmV0dXJuIHR9aWYoImtleXByZXNzIj09PWUudHlwZSl7dmFyIG49byhlKTtyZXR1cm4gMTM9PT1u
PyJFbnRlciI6U3RyaW5nLmZyb21DaGFyQ29kZShuKX1yZXR1cm4ia2V5ZG93biI9PT1lLnR5cGV8
fCJrZXl1cCI9PT1lLnR5cGU/YVtlLmtleUNvZGVdfHwiVW5pZGVudGlmaWVkIjoiIn12YXIgbz1u
KDQ0KSxpPXtFc2M6IkVzY2FwZSIsU3BhY2ViYXI6IiAiLExlZnQ6IkFycm93TGVmdCIsVXA6IkFy
cm93VXAiLFJpZ2h0OiJBcnJvd1JpZ2h0IixEb3duOiJBcnJvd0Rvd24iLERlbDoiRGVsZXRlIixX
aW46Ik9TIixNZW51OiJDb250ZXh0TWVudSIsQXBwczoiQ29udGV4dE1lbnUiLFNjcm9sbDoiU2Ny
b2xsTG9jayIsTW96UHJpbnRhYmxlS2V5OiJVbmlkZW50aWZpZWQifSxhPXs4OiJCYWNrc3BhY2Ui
LDk6IlRhYiIsMTI6IkNsZWFyIiwxMzoiRW50ZXIiLDE2OiJTaGlmdCIsMTc6IkNvbnRyb2wiLDE4
OiJBbHQiLDE5OiJQYXVzZSIsMjA6IkNhcHNMb2NrIiwyNzoiRXNjYXBlIiwzMjoiICIsMzM6IlBh
Z2VVcCIsMzQ6IlBhZ2VEb3duIiwzNToiRW5kIiwzNjoiSG9tZSIsMzc6IkFycm93TGVmdCIsMzg6
IkFycm93VXAiLDM5OiJBcnJvd1JpZ2h0Iiw0MDoiQXJyb3dEb3duIiw0NToiSW5zZXJ0Iiw0Njoi
RGVsZXRlIiwxMTI6IkYxIiwxMTM6IkYyIiwxMTQ6IkYzIiwxMTU6IkY0IiwxMTY6IkY1IiwxMTc6
IkY2IiwxMTg6IkY3IiwxMTk6IkY4IiwxMjA6IkY5IiwxMjE6IkYxMCIsMTIyOiJGMTEiLDEyMzoi
RjEyIiwxNDQ6Ik51bUxvY2siLDE0NToiU2Nyb2xsTG9jayIsMjI0OiJNZXRhIn07ZS5leHBvcnRz
PXJ9LGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4oZSl7dmFyIHQ9ZSYmKHIm
JmVbcl18fGVbb10pO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiB0KXJldHVybiB0fXZhciByPSJmdW5j
dGlvbiI9PXR5cGVvZiBTeW1ib2wmJlN5bWJvbC5pdGVyYXRvcixvPSJAQGl0ZXJhdG9yIjtlLmV4
cG9ydHM9bn0sZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbihlKXtmb3IoO2Um
JmUuZmlyc3RDaGlsZDspZT1lLmZpcnN0Q2hpbGQ7cmV0dXJuIGV9ZnVuY3Rpb24gcihlKXtmb3Io
O2U7KXtpZihlLm5leHRTaWJsaW5nKXJldHVybiBlLm5leHRTaWJsaW5nO2U9ZS5wYXJlbnROb2Rl
fX1mdW5jdGlvbiBvKGUsdCl7Zm9yKHZhciBvPW4oZSksaT0wLGE9MDtvOyl7aWYoMz09PW8ubm9k
ZVR5cGUpe2lmKGE9aStvLnRleHRDb250ZW50Lmxlbmd0aCxpPD10JiZhPj10KXJldHVybntub2Rl
Om8sb2Zmc2V0OnQtaX07aT1hfW89bihyKG8pKX19ZS5leHBvcnRzPW99LGZ1bmN0aW9uKGUsdCxu
KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQpe3ZhciBuPXt9O3JldHVybiBuW2UudG9Mb3dl
ckNhc2UoKV09dC50b0xvd2VyQ2FzZSgpLG5bIldlYmtpdCIrZV09IndlYmtpdCIrdCxuWyJNb3oi
K2VdPSJtb3oiK3QsblsibXMiK2VdPSJNUyIrdCxuWyJPIitlXT0ibyIrdC50b0xvd2VyQ2FzZSgp
LG59ZnVuY3Rpb24gbyhlKXtpZih1W2VdKXJldHVybiB1W2VdO2lmKCFhW2VdKXJldHVybiBlO3Zh
ciB0PWFbZV07Zm9yKHZhciBuIGluIHQpaWYodC5oYXNPd25Qcm9wZXJ0eShuKSYmbiBpbiBzKXJl
dHVybiB1W2VdPXRbbl07cmV0dXJuIiJ9dmFyIGk9big2KSxhPXthbmltYXRpb25lbmQ6cigiQW5p
bWF0aW9uIiwiQW5pbWF0aW9uRW5kIiksYW5pbWF0aW9uaXRlcmF0aW9uOnIoIkFuaW1hdGlvbiIs
IkFuaW1hdGlvbkl0ZXJhdGlvbiIpLGFuaW1hdGlvbnN0YXJ0OnIoIkFuaW1hdGlvbiIsIkFuaW1h
dGlvblN0YXJ0IiksdHJhbnNpdGlvbmVuZDpyKCJUcmFuc2l0aW9uIiwiVHJhbnNpdGlvbkVuZCIp
fSx1PXt9LHM9e307aS5jYW5Vc2VET00mJihzPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIp
LnN0eWxlLCJBbmltYXRpb25FdmVudCJpbiB3aW5kb3d8fChkZWxldGUgYS5hbmltYXRpb25lbmQu
YW5pbWF0aW9uLGRlbGV0ZSBhLmFuaW1hdGlvbml0ZXJhdGlvbi5hbmltYXRpb24sZGVsZXRlIGEu
YW5pbWF0aW9uc3RhcnQuYW5pbWF0aW9uKSwiVHJhbnNpdGlvbkV2ZW50ImluIHdpbmRvd3x8ZGVs
ZXRlIGEudHJhbnNpdGlvbmVuZC50cmFuc2l0aW9uKSxlLmV4cG9ydHM9b30sZnVuY3Rpb24oZSx0
LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3JldHVybiciJytvKGUpKyciJ312YXIgbz1u
KDI4KTtlLmV4cG9ydHM9cn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDY3
KTtlLmV4cG9ydHM9ci5yZW5kZXJTdWJ0cmVlSW50b0NvbnRhaW5lcn0sZnVuY3Rpb24oZSx0LG4p
eyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVm
YXVsdDplfX1mdW5jdGlvbiBvKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5
cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gaShl
LHQpe2lmKCFlKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0
aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIXR8fCJvYmplY3Qi
IT10eXBlb2YgdCYmImZ1bmN0aW9uIiE9dHlwZW9mIHQ/ZTp0fWZ1bmN0aW9uIGEoZSx0KXtpZigi
ZnVuY3Rpb24iIT10eXBlb2YgdCYmbnVsbCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIg
ZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCAiK3R5cGVv
ZiB0KTtlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlLHtjb25zdHJ1Y3Rv
cjp7dmFsdWU6ZSxlbnVtZXJhYmxlOiExLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSx0
JiYoT2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZihlLHQpOmUuX19w
cm90b19fPXQpfWZ1bmN0aW9uIHUoKXt2YXIgZSx0PWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAw
IT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXToic3RvcmUiLG49YXJndW1lbnRzWzFdLHI9bnx8
dCsiU3Vic2NyaXB0aW9uIix1PWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIG4ocixhKXtvKHRoaXMsbik7
dmFyIHU9aSh0aGlzLGUuY2FsbCh0aGlzLHIsYSkpO3JldHVybiB1W3RdPXIuc3RvcmUsdX1yZXR1
cm4gYShuLGUpLG4ucHJvdG90eXBlLmdldENoaWxkQ29udGV4dD1mdW5jdGlvbigpe3ZhciBlO3Jl
dHVybiBlPXt9LGVbdF09dGhpc1t0XSxlW3JdPW51bGwsZX0sbi5wcm90b3R5cGUucmVuZGVyPWZ1
bmN0aW9uKCl7cmV0dXJuIHMuQ2hpbGRyZW4ub25seSh0aGlzLnByb3BzLmNoaWxkcmVuKX0sbn0o
cy5Db21wb25lbnQpO3JldHVybiB1LnByb3BUeXBlcz17c3RvcmU6cC5zdG9yZVNoYXBlLmlzUmVx
dWlyZWQsY2hpbGRyZW46bC5kZWZhdWx0LmVsZW1lbnQuaXNSZXF1aXJlZH0sdS5jaGlsZENvbnRl
eHRUeXBlcz0oZT17fSxlW3RdPXAuc3RvcmVTaGFwZS5pc1JlcXVpcmVkLGVbcl09cC5zdWJzY3Jp
cHRpb25TaGFwZSxlKSx1fXQuX19lc01vZHVsZT0hMCx0LmNyZWF0ZVByb3ZpZGVyPXU7dmFyIHM9
bigxMiksYz1uKDU2KSxsPXIoYykscD1uKDgyKSxkPW4oNTApO3IoZCk7dC5kZWZhdWx0PXUoKX0s
ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3JldHVybiBlJiZlLl9f
ZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX1mdW5jdGlvbiBvKGUsdCl7dmFyIG49e307Zm9yKHZhciBy
IGluIGUpdC5pbmRleE9mKHIpPj0wfHxPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNh
bGwoZSxyKSYmKG5bcl09ZVtyXSk7cmV0dXJuIG59ZnVuY3Rpb24gaShlLHQsbil7Zm9yKHZhciBy
PXQubGVuZ3RoLTE7cj49MDtyLS0pe3ZhciBvPXRbcl0oZSk7aWYobylyZXR1cm4gb31yZXR1cm4g
ZnVuY3Rpb24odCxyKXt0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgdmFsdWUgb2YgdHlwZSAiK3R5
cGVvZiBlKyIgZm9yICIrbisiIGFyZ3VtZW50IHdoZW4gY29ubmVjdGluZyBjb21wb25lbnQgIity
LndyYXBwZWRDb21wb25lbnROYW1lKyIuIil9fWZ1bmN0aW9uIGEoZSx0KXtyZXR1cm4gZT09PXR9
ZnVuY3Rpb24gdSgpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRz
WzBdP2FyZ3VtZW50c1swXTp7fSx0PWUuY29ubmVjdEhPQyxuPXZvaWQgMD09PXQ/bC5kZWZhdWx0
OnQscj1lLm1hcFN0YXRlVG9Qcm9wc0ZhY3Rvcmllcyx1PXZvaWQgMD09PXI/bS5kZWZhdWx0OnIs
Yz1lLm1hcERpc3BhdGNoVG9Qcm9wc0ZhY3RvcmllcyxwPXZvaWQgMD09PWM/aC5kZWZhdWx0OmMs
Zj1lLm1lcmdlUHJvcHNGYWN0b3JpZXMsdj12b2lkIDA9PT1mP2cuZGVmYXVsdDpmLHk9ZS5zZWxl
Y3RvckZhY3RvcnksYj12b2lkIDA9PT15P18uZGVmYXVsdDp5O3JldHVybiBmdW5jdGlvbihlLHQs
cil7dmFyIGM9YXJndW1lbnRzLmxlbmd0aD4zJiZ2b2lkIDAhPT1hcmd1bWVudHNbM10/YXJndW1l
bnRzWzNdOnt9LGw9Yy5wdXJlLGY9dm9pZCAwPT09bHx8bCxoPWMuYXJlU3RhdGVzRXF1YWwsbT12
b2lkIDA9PT1oP2E6aCx5PWMuYXJlT3duUHJvcHNFcXVhbCxnPXZvaWQgMD09PXk/ZC5kZWZhdWx0
OnksXz1jLmFyZVN0YXRlUHJvcHNFcXVhbCxDPXZvaWQgMD09PV8/ZC5kZWZhdWx0Ol8sRT1jLmFy
ZU1lcmdlZFByb3BzRXF1YWwsdz12b2lkIDA9PT1FP2QuZGVmYXVsdDpFLFQ9byhjLFsicHVyZSIs
ImFyZVN0YXRlc0VxdWFsIiwiYXJlT3duUHJvcHNFcXVhbCIsImFyZVN0YXRlUHJvcHNFcXVhbCIs
ImFyZU1lcmdlZFByb3BzRXF1YWwiXSksUD1pKGUsdSwibWFwU3RhdGVUb1Byb3BzIikseD1pKHQs
cCwibWFwRGlzcGF0Y2hUb1Byb3BzIiksTz1pKHIsdiwibWVyZ2VQcm9wcyIpO3JldHVybiBuKGIs
cyh7bWV0aG9kTmFtZToiY29ubmVjdCIsZ2V0RGlzcGxheU5hbWU6ZnVuY3Rpb24oZSl7cmV0dXJu
IkNvbm5lY3QoIitlKyIpIn0sc2hvdWxkSGFuZGxlU3RhdGVDaGFuZ2VzOkJvb2xlYW4oZSksaW5p
dE1hcFN0YXRlVG9Qcm9wczpQLGluaXRNYXBEaXNwYXRjaFRvUHJvcHM6eCxpbml0TWVyZ2VQcm9w
czpPLHB1cmU6ZixhcmVTdGF0ZXNFcXVhbDptLGFyZU93blByb3BzRXF1YWw6ZyxhcmVTdGF0ZVBy
b3BzRXF1YWw6QyxhcmVNZXJnZWRQcm9wc0VxdWFsOnd9LFQpKX19dC5fX2VzTW9kdWxlPSEwO3Zh
ciBzPU9iamVjdC5hc3NpZ258fGZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxl
bmd0aDt0Kyspe3ZhciBuPWFyZ3VtZW50c1t0XTtmb3IodmFyIHIgaW4gbilPYmplY3QucHJvdG90
eXBlLmhhc093blByb3BlcnR5LmNhbGwobixyKSYmKGVbcl09bltyXSl9cmV0dXJuIGV9O3QuY3Jl
YXRlQ29ubmVjdD11O3ZhciBjPW4oNzkpLGw9cihjKSxwPW4oMTk1KSxkPXIocCksZj1uKDE4OSks
aD1yKGYpLHY9bigxOTApLG09cih2KSx5PW4oMTkxKSxnPXIoeSksYj1uKDE5MiksXz1yKGIpO3Qu
ZGVmYXVsdD11KCl9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXty
ZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgZT8oMCx1LndyYXBNYXBUb1Byb3BzRnVuYykoZSwibWFw
RGlzcGF0Y2hUb1Byb3BzIik6dm9pZCAwfWZ1bmN0aW9uIG8oZSl7cmV0dXJuIGU/dm9pZCAwOigw
LHUud3JhcE1hcFRvUHJvcHNDb25zdGFudCkoZnVuY3Rpb24oZSl7cmV0dXJue2Rpc3BhdGNoOmV9
fSl9ZnVuY3Rpb24gaShlKXtyZXR1cm4gZSYmIm9iamVjdCI9PXR5cGVvZiBlPygwLHUud3JhcE1h
cFRvUHJvcHNDb25zdGFudCkoZnVuY3Rpb24odCl7cmV0dXJuKDAsYS5iaW5kQWN0aW9uQ3JlYXRv
cnMpKGUsdCl9KTp2b2lkIDB9dC5fX2VzTW9kdWxlPSEwLHQud2hlbk1hcERpc3BhdGNoVG9Qcm9w
c0lzRnVuY3Rpb249cix0LndoZW5NYXBEaXNwYXRjaFRvUHJvcHNJc01pc3Npbmc9byx0LndoZW5N
YXBEaXNwYXRjaFRvUHJvcHNJc09iamVjdD1pO3ZhciBhPW4oMzApLHU9big4MCk7dC5kZWZhdWx0
PVtyLG8saV19LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1
cm4iZnVuY3Rpb24iPT10eXBlb2YgZT8oMCxpLndyYXBNYXBUb1Byb3BzRnVuYykoZSwibWFwU3Rh
dGVUb1Byb3BzIik6dm9pZCAwfWZ1bmN0aW9uIG8oZSl7cmV0dXJuIGU/dm9pZCAwOigwLGkud3Jh
cE1hcFRvUHJvcHNDb25zdGFudCkoZnVuY3Rpb24oKXtyZXR1cm57fX0pfXQuX19lc01vZHVsZT0h
MCx0LndoZW5NYXBTdGF0ZVRvUHJvcHNJc0Z1bmN0aW9uPXIsdC53aGVuTWFwU3RhdGVUb1Byb3Bz
SXNNaXNzaW5nPW87dmFyIGk9big4MCk7dC5kZWZhdWx0PVtyLG9dfSxmdW5jdGlvbihlLHQsbil7
InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZh
dWx0OmV9fWZ1bmN0aW9uIG8oZSx0LG4pe3JldHVybiBzKHt9LG4sZSx0KX1mdW5jdGlvbiBpKGUp
e3JldHVybiBmdW5jdGlvbih0LG4pe3ZhciByPShuLmRpc3BsYXlOYW1lLG4ucHVyZSksbz1uLmFy
ZU1lcmdlZFByb3BzRXF1YWwsaT0hMSxhPXZvaWQgMDtyZXR1cm4gZnVuY3Rpb24odCxuLHUpe3Zh
ciBzPWUodCxuLHUpOwotcmV0dXJuIGk/ciYmbyhzLGEpfHwoYT1zKTooaT0hMCxhPXMpLGF9fX1m
dW5jdGlvbiBhKGUpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBlP2koZSk6dm9pZCAwfWZ1bmN0
aW9uIHUoZSl7cmV0dXJuIGU/dm9pZCAwOmZ1bmN0aW9uKCl7cmV0dXJuIG99fXQuX19lc01vZHVs
ZT0hMDt2YXIgcz1PYmplY3QuYXNzaWdufHxmdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3Vt
ZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1hcmd1bWVudHNbdF07Zm9yKHZhciByIGluIG4pT2JqZWN0
LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJihlW3JdPW5bcl0pfXJldHVybiBl
fTt0LmRlZmF1bHRNZXJnZVByb3BzPW8sdC53cmFwTWVyZ2VQcm9wc0Z1bmM9aSx0LndoZW5NZXJn
ZVByb3BzSXNGdW5jdGlvbj1hLHQud2hlbk1lcmdlUHJvcHNJc09taXR0ZWQ9dTt2YXIgYz1uKDgz
KTtyKGMpO3QuZGVmYXVsdD1bYSx1XX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5j
dGlvbiByKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX1mdW5jdGlvbiBv
KGUsdCl7dmFyIG49e307Zm9yKHZhciByIGluIGUpdC5pbmRleE9mKHIpPj0wfHxPYmplY3QucHJv
dG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxyKSYmKG5bcl09ZVtyXSk7cmV0dXJuIG59ZnVu
Y3Rpb24gaShlLHQsbixyKXtyZXR1cm4gZnVuY3Rpb24obyxpKXtyZXR1cm4gbihlKG8saSksdChy
LGkpLGkpfX1mdW5jdGlvbiBhKGUsdCxuLHIsbyl7ZnVuY3Rpb24gaShvLGkpe3JldHVybiBoPW8s
dj1pLG09ZShoLHYpLHk9dChyLHYpLGc9bihtLHksdiksZj0hMCxnfWZ1bmN0aW9uIGEoKXtyZXR1
cm4gbT1lKGgsdiksdC5kZXBlbmRzT25Pd25Qcm9wcyYmKHk9dChyLHYpKSxnPW4obSx5LHYpfWZ1
bmN0aW9uIHUoKXtyZXR1cm4gZS5kZXBlbmRzT25Pd25Qcm9wcyYmKG09ZShoLHYpKSx0LmRlcGVu
ZHNPbk93blByb3BzJiYoeT10KHIsdikpLGc9bihtLHksdil9ZnVuY3Rpb24gcygpe3ZhciB0PWUo
aCx2KSxyPSFkKHQsbSk7cmV0dXJuIG09dCxyJiYoZz1uKG0seSx2KSksZ31mdW5jdGlvbiBjKGUs
dCl7dmFyIG49IXAodCx2KSxyPSFsKGUsaCk7cmV0dXJuIGg9ZSx2PXQsbiYmcj9hKCk6bj91KCk6
cj9zKCk6Z312YXIgbD1vLmFyZVN0YXRlc0VxdWFsLHA9by5hcmVPd25Qcm9wc0VxdWFsLGQ9by5h
cmVTdGF0ZVByb3BzRXF1YWwsZj0hMSxoPXZvaWQgMCx2PXZvaWQgMCxtPXZvaWQgMCx5PXZvaWQg
MCxnPXZvaWQgMDtyZXR1cm4gZnVuY3Rpb24oZSx0KXtyZXR1cm4gZj9jKGUsdCk6aShlLHQpfX1m
dW5jdGlvbiB1KGUsdCl7dmFyIG49dC5pbml0TWFwU3RhdGVUb1Byb3BzLHI9dC5pbml0TWFwRGlz
cGF0Y2hUb1Byb3BzLHU9dC5pbml0TWVyZ2VQcm9wcyxzPW8odCxbImluaXRNYXBTdGF0ZVRvUHJv
cHMiLCJpbml0TWFwRGlzcGF0Y2hUb1Byb3BzIiwiaW5pdE1lcmdlUHJvcHMiXSksYz1uKGUscyks
bD1yKGUscykscD11KGUscyksZD1zLnB1cmU/YTppO3JldHVybiBkKGMsbCxwLGUscyl9dC5fX2Vz
TW9kdWxlPSEwLHQuaW1wdXJlRmluYWxQcm9wc1NlbGVjdG9yRmFjdG9yeT1pLHQucHVyZUZpbmFs
UHJvcHNTZWxlY3RvckZhY3Rvcnk9YSx0LmRlZmF1bHQ9dTt2YXIgcz1uKDE5Myk7cihzKX0sZnVu
Y3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3JldHVybiBlJiZlLl9fZXNN
b2R1bGU/ZTp7ZGVmYXVsdDplfX1mdW5jdGlvbiBvKGUsdCxuKXtpZighZSl0aHJvdyBuZXcgRXJy
b3IoIlVuZXhwZWN0ZWQgdmFsdWUgZm9yICIrdCsiIGluICIrbisiLiIpOyJtYXBTdGF0ZVRvUHJv
cHMiIT09dCYmIm1hcERpc3BhdGNoVG9Qcm9wcyIhPT10fHxlLmhhc093blByb3BlcnR5KCJkZXBl
bmRzT25Pd25Qcm9wcyIpfHwoMCx1LmRlZmF1bHQpKCJUaGUgc2VsZWN0b3IgZm9yICIrdCsiIG9m
ICIrbisiIGRpZCBub3Qgc3BlY2lmeSBhIHZhbHVlIGZvciBkZXBlbmRzT25Pd25Qcm9wcy4iKX1m
dW5jdGlvbiBpKGUsdCxuLHIpe28oZSwibWFwU3RhdGVUb1Byb3BzIixyKSxvKHQsIm1hcERpc3Bh
dGNoVG9Qcm9wcyIsciksbyhuLCJtZXJnZVByb3BzIixyKX10Ll9fZXNNb2R1bGU9ITAsdC5kZWZh
dWx0PWk7dmFyIGE9big1MCksdT1yKGEpfSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0IjtmdW5j
dGlvbiBuKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fu
bm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gcigpe3ZhciBlPVtdLHQ9
W107cmV0dXJue2NsZWFyOmZ1bmN0aW9uKCl7dD1vLGU9b30sbm90aWZ5OmZ1bmN0aW9uKCl7Zm9y
KHZhciBuPWU9dCxyPTA7cjxuLmxlbmd0aDtyKyspbltyXSgpfSxnZXQ6ZnVuY3Rpb24oKXtyZXR1
cm4gdH0sc3Vic2NyaWJlOmZ1bmN0aW9uKG4pe3ZhciByPSEwO3JldHVybiB0PT09ZSYmKHQ9ZS5z
bGljZSgpKSx0LnB1c2gobiksZnVuY3Rpb24oKXtyJiZlIT09byYmKHI9ITEsdD09PWUmJih0PWUu
c2xpY2UoKSksdC5zcGxpY2UodC5pbmRleE9mKG4pLDEpKX19fX10Ll9fZXNNb2R1bGU9ITA7dmFy
IG89bnVsbCxpPXtub3RpZnk6ZnVuY3Rpb24oKXt9fSxhPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSh0
LHIsbyl7bih0aGlzLGUpLHRoaXMuc3RvcmU9dCx0aGlzLnBhcmVudFN1Yj1yLHRoaXMub25TdGF0
ZUNoYW5nZT1vLHRoaXMudW5zdWJzY3JpYmU9bnVsbCx0aGlzLmxpc3RlbmVycz1pfXJldHVybiBl
LnByb3RvdHlwZS5hZGROZXN0ZWRTdWI9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMudHJ5U3Vic2Ny
aWJlKCksdGhpcy5saXN0ZW5lcnMuc3Vic2NyaWJlKGUpfSxlLnByb3RvdHlwZS5ub3RpZnlOZXN0
ZWRTdWJzPWZ1bmN0aW9uKCl7dGhpcy5saXN0ZW5lcnMubm90aWZ5KCl9LGUucHJvdG90eXBlLmlz
U3Vic2NyaWJlZD1mdW5jdGlvbigpe3JldHVybiBCb29sZWFuKHRoaXMudW5zdWJzY3JpYmUpfSxl
LnByb3RvdHlwZS50cnlTdWJzY3JpYmU9ZnVuY3Rpb24oKXt0aGlzLnVuc3Vic2NyaWJlfHwodGhp
cy51bnN1YnNjcmliZT10aGlzLnBhcmVudFN1Yj90aGlzLnBhcmVudFN1Yi5hZGROZXN0ZWRTdWIo
dGhpcy5vblN0YXRlQ2hhbmdlKTp0aGlzLnN0b3JlLnN1YnNjcmliZSh0aGlzLm9uU3RhdGVDaGFu
Z2UpLHRoaXMubGlzdGVuZXJzPXIoKSl9LGUucHJvdG90eXBlLnRyeVVuc3Vic2NyaWJlPWZ1bmN0
aW9uKCl7dGhpcy51bnN1YnNjcmliZSYmKHRoaXMudW5zdWJzY3JpYmUoKSx0aGlzLnVuc3Vic2Ny
aWJlPW51bGwsdGhpcy5saXN0ZW5lcnMuY2xlYXIoKSx0aGlzLmxpc3RlbmVycz1pKX0sZX0oKTt0
LmRlZmF1bHQ9YX0sZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbihlLHQpe3Jl
dHVybiBlPT09dD8wIT09ZXx8MCE9PXR8fDEvZT09PTEvdDplIT09ZSYmdCE9PXR9ZnVuY3Rpb24g
cihlLHQpe2lmKG4oZSx0KSlyZXR1cm4hMDtpZigib2JqZWN0IiE9dHlwZW9mIGV8fG51bGw9PT1l
fHwib2JqZWN0IiE9dHlwZW9mIHR8fG51bGw9PT10KXJldHVybiExO3ZhciByPU9iamVjdC5rZXlz
KGUpLGk9T2JqZWN0LmtleXModCk7aWYoci5sZW5ndGghPT1pLmxlbmd0aClyZXR1cm4hMTtmb3Io
dmFyIGE9MDthPHIubGVuZ3RoO2ErKylpZighby5jYWxsKHQsclthXSl8fCFuKGVbclthXV0sdFty
W2FdXSkpcmV0dXJuITE7cmV0dXJuITB9dC5fX2VzTW9kdWxlPSEwLHQuZGVmYXVsdD1yO3ZhciBv
PU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHl9LGZ1bmN0aW9uKGUsdCxuKXsidW5kZWZp
bmVkIj09dHlwZW9mIFByb21pc2UmJihuKDIxMCkuZW5hYmxlKCksd2luZG93LlByb21pc2U9bigy
MDkpKSxuKDIxMiksT2JqZWN0LmFzc2lnbj1uKDIwOCl9LGZ1bmN0aW9uKGUsdCl7KGZ1bmN0aW9u
KHQpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKGUpe3UubGVuZ3RofHwoYSgpLHM9ITApLHVbdS5s
ZW5ndGhdPWV9ZnVuY3Rpb24gcigpe2Zvcig7Yzx1Lmxlbmd0aDspe3ZhciBlPWM7aWYoYys9MSx1
W2VdLmNhbGwoKSxjPmwpe2Zvcih2YXIgdD0wLG49dS5sZW5ndGgtYzt0PG47dCsrKXVbdF09dVt0
K2NdO3UubGVuZ3RoLT1jLGM9MH19dS5sZW5ndGg9MCxjPTAscz0hMX1mdW5jdGlvbiBvKGUpe3Zh
ciB0PTEsbj1uZXcgZChlKSxyPWRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCIiKTtyZXR1cm4gbi5v
YnNlcnZlKHIse2NoYXJhY3RlckRhdGE6ITB9KSxmdW5jdGlvbigpe3Q9LXQsci5kYXRhPXR9fWZ1
bmN0aW9uIGkoZSl7cmV0dXJuIGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe2NsZWFyVGltZW91dChu
KSxjbGVhckludGVydmFsKHIpLGUoKX12YXIgbj1zZXRUaW1lb3V0KHQsMCkscj1zZXRJbnRlcnZh
bCh0LDUwKX19ZS5leHBvcnRzPW47dmFyIGEsdT1bXSxzPSExLGM9MCxsPTEwMjQscD0idW5kZWZp
bmVkIiE9dHlwZW9mIHQ/dDpzZWxmLGQ9cC5NdXRhdGlvbk9ic2VydmVyfHxwLldlYktpdE11dGF0
aW9uT2JzZXJ2ZXI7YT0iZnVuY3Rpb24iPT10eXBlb2YgZD9vKHIpOmkociksbi5yZXF1ZXN0Rmx1
c2g9YSxuLm1ha2VSZXF1ZXN0Q2FsbEZyb21UaW1lcj1pfSkuY2FsbCh0LGZ1bmN0aW9uKCl7cmV0
dXJuIHRoaXN9KCkpfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7
aWYoZSYmZS5fX2VzTW9kdWxlKXJldHVybiBlO3ZhciB0PXt9O2lmKG51bGwhPWUpZm9yKHZhciBu
IGluIGUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsbikmJih0W25dPWVb
bl0pO3JldHVybiB0LmRlZmF1bHQ9ZSx0fU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9k
dWxlIix7dmFsdWU6ITB9KSx0LmNsZWFyQ29tcGxldGVkPXQuY29tcGxldGVBbGw9dC5jb21wbGV0
ZVRvZG89dC5lZGl0VG9kbz10LmRlbGV0ZVRvZG89dC5hZGRUb2RvPXZvaWQgMDt2YXIgbz1uKDg1
KSxpPXIobyk7dC5hZGRUb2RvPWZ1bmN0aW9uKGUpe3JldHVybnt0eXBlOmkuQUREX1RPRE8sdGV4
dDplfX0sdC5kZWxldGVUb2RvPWZ1bmN0aW9uKGUpe3JldHVybnt0eXBlOmkuREVMRVRFX1RPRE8s
aWQ6ZX19LHQuZWRpdFRvZG89ZnVuY3Rpb24oZSx0KXtyZXR1cm57dHlwZTppLkVESVRfVE9ETyxp
ZDplLHRleHQ6dH19LHQuY29tcGxldGVUb2RvPWZ1bmN0aW9uKGUpe3JldHVybnt0eXBlOmkuQ09N
UExFVEVfVE9ETyxpZDplfX0sdC5jb21wbGV0ZUFsbD1mdW5jdGlvbigpe3JldHVybnt0eXBlOmku
Q09NUExFVEVfQUxMfX0sdC5jbGVhckNvbXBsZXRlZD1mdW5jdGlvbigpe3JldHVybnt0eXBlOmku
Q0xFQVJfQ09NUExFVEVEfX19LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24g
cihlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19ZnVuY3Rpb24gbyhlLHQp
e2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEg
Y2xhc3MgYXMgYSBmdW5jdGlvbiIpfWZ1bmN0aW9uIGkoZSx0KXtpZighZSl0aHJvdyBuZXcgUmVm
ZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24n
dCBiZWVuIGNhbGxlZCIpO3JldHVybiF0fHwib2JqZWN0IiE9dHlwZW9mIHQmJiJmdW5jdGlvbiIh
PXR5cGVvZiB0P2U6dH1mdW5jdGlvbiBhKGUsdCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQmJm51
bGwhPT10KXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIg
YmUgbnVsbCBvciBhIGZ1bmN0aW9uLCBub3QgIit0eXBlb2YgdCk7ZS5wcm90b3R5cGU9T2JqZWN0
LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmUsZW51bWVyYWJsZToh
MSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksdCYmKE9iamVjdC5zZXRQcm90b3R5cGVP
Zj9PYmplY3Quc2V0UHJvdG90eXBlT2YoZSx0KTplLl9fcHJvdG9fXz10KX1mdW5jdGlvbiB1KGUs
dCxuKXtyZXR1cm4gdCBpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sZW51
bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW3RdPW4sZX1PYmplY3Qu
ZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIHMsYz1mdW5jdGlv
bigpe2Z1bmN0aW9uIGUoZSx0KXtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKyl7dmFyIHI9dFtu
XTtyLmVudW1lcmFibGU9ci5lbnVtZXJhYmxlfHwhMSxyLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUi
aW4gciYmKHIud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIua2V5LHIpfX1y
ZXR1cm4gZnVuY3Rpb24odCxuLHIpe3JldHVybiBuJiZlKHQucHJvdG90eXBlLG4pLHImJmUodCxy
KSx0fX0oKSxsPW4oMTIpLHA9cihsKSxkPW4oMzEpLGY9cihkKSxoPW4oODYpLHY9KHM9e30sdShz
LGguU0hPV19BTEwsIkFsbCIpLHUocyxoLlNIT1dfQUNUSVZFLCJBY3RpdmUiKSx1KHMsaC5TSE9X
X0NPTVBMRVRFRCwiQ29tcGxldGVkIikscyksbT1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KCl7cmV0
dXJuIG8odGhpcyx0KSxpKHRoaXMsKHQuX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2Yo
dCkpLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl9cmV0dXJuIGEodCxlKSxjKHQsW3trZXk6InJlbmRl
clRvZG9Db3VudCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnByb3BzLmFjdGl2ZUNvdW50
LHQ9MT09PWU/Iml0ZW0iOiJpdGVtcyI7cmV0dXJuIHAuZGVmYXVsdC5jcmVhdGVFbGVtZW50KCJz
cGFuIix7Y2xhc3NOYW1lOiJ0b2RvLWNvdW50In0scC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoInN0
cm9uZyIsbnVsbCxlfHwiTm8iKSwiICIsdCwiIGxlZnQiKX19LHtrZXk6InJlbmRlckZpbHRlckxp
bmsiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXZbZV0sbj10aGlzLnByb3BzLHI9bi5maWx0ZXIs
bz1uLm9uU2hvdztyZXR1cm4gcC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoImEiLHtjbGFzc05hbWU6
KDAsZi5kZWZhdWx0KSh7c2VsZWN0ZWQ6ZT09PXJ9KSxzdHlsZTp7Y3Vyc29yOiJwb2ludGVyIn0s
b25DbGljazpmdW5jdGlvbigpe3JldHVybiBvKGUpfX0sdCl9fSx7a2V5OiJyZW5kZXJDbGVhckJ1
dHRvbiIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnByb3BzLHQ9ZS5jb21wbGV0ZWRDb3Vu
dCxuPWUub25DbGVhckNvbXBsZXRlZDtpZih0PjApcmV0dXJuIHAuZGVmYXVsdC5jcmVhdGVFbGVt
ZW50KCJidXR0b24iLHtjbGFzc05hbWU6ImNsZWFyLWNvbXBsZXRlZCIsb25DbGljazpufSwiQ2xl
YXIgY29tcGxldGVkIil9fSx7a2V5OiJyZW5kZXIiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhp
cztyZXR1cm4gcC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoImZvb3RlciIse2NsYXNzTmFtZToiZm9v
dGVyIn0sdGhpcy5yZW5kZXJUb2RvQ291bnQoKSxwLmRlZmF1bHQuY3JlYXRlRWxlbWVudCgidWwi
LHtjbGFzc05hbWU6ImZpbHRlcnMifSxbaC5TSE9XX0FMTCxoLlNIT1dfQUNUSVZFLGguU0hPV19D
T01QTEVURURdLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gcC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQo
ImxpIix7a2V5OnR9LGUucmVuZGVyRmlsdGVyTGluayh0KSl9KSksdGhpcy5yZW5kZXJDbGVhckJ1
dHRvbigpKX19XSksdH0obC5Db21wb25lbnQpO20ucHJvcFR5cGVzPXtjb21wbGV0ZWRDb3VudDps
LlByb3BUeXBlcy5udW1iZXIuaXNSZXF1aXJlZCxhY3RpdmVDb3VudDpsLlByb3BUeXBlcy5udW1i
ZXIuaXNSZXF1aXJlZCxmaWx0ZXI6bC5Qcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsb25DbGVh
ckNvbXBsZXRlZDpsLlByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsb25TaG93OmwuUHJvcFR5cGVz
LmZ1bmMuaXNSZXF1aXJlZH0sdC5kZWZhdWx0PW19LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmlj
dCI7ZnVuY3Rpb24gcihlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19ZnVu
Y3Rpb24gbyhlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNh
bm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfWZ1bmN0aW9uIGkoZSx0KXtpZighZSl0
aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBz
dXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiF0fHwib2JqZWN0IiE9dHlwZW9mIHQm
JiJmdW5jdGlvbiIhPXR5cGVvZiB0P2U6dH1mdW5jdGlvbiBhKGUsdCl7aWYoImZ1bmN0aW9uIiE9
dHlwZW9mIHQmJm51bGwhPT10KXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24g
bXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uLCBub3QgIit0eXBlb2YgdCk7ZS5wcm90
b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmUs
ZW51bWVyYWJsZTohMSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksdCYmKE9iamVjdC5z
ZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YoZSx0KTplLl9fcHJvdG9fXz10KX1P
YmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIHU9ZnVu
Y3Rpb24oKXtmdW5jdGlvbiBlKGUsdCl7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciBy
PXRbbl07ci5lbnVtZXJhYmxlPXIuZW51bWVyYWJsZXx8ITEsci5jb25maWd1cmFibGU9ITAsInZh
bHVlImluIHImJihyLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLmtleSxy
KX19cmV0dXJuIGZ1bmN0aW9uKHQsbixyKXtyZXR1cm4gbiYmZSh0LnByb3RvdHlwZSxuKSxyJiZl
KHQsciksdH19KCkscz1uKDEyKSxjPXIocyksbD1uKDg0KSxwPXIobCksZD1mdW5jdGlvbihlKXtm
dW5jdGlvbiB0KCl7dmFyIGUsbixyLGE7byh0aGlzLHQpO2Zvcih2YXIgdT1hcmd1bWVudHMubGVu
Z3RoLHM9QXJyYXkodSksYz0wO2M8dTtjKyspc1tjXT1hcmd1bWVudHNbY107cmV0dXJuIG49cj1p
KHRoaXMsKGU9dC5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZih0KSkuY2FsbC5hcHBs
eShlLFt0aGlzXS5jb25jYXQocykpKSxyLmhhbmRsZVNhdmU9ZnVuY3Rpb24oZSl7MCE9PWUubGVu
Z3RoJiZyLnByb3BzLmFkZFRvZG8oZSl9LGE9bixpKHIsYSl9cmV0dXJuIGEodCxlKSx1KHQsW3tr
ZXk6InJlbmRlciIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gYy5kZWZhdWx0LmNyZWF0ZUVsZW1l
bnQoImhlYWRlciIse2NsYXNzTmFtZToiaGVhZGVyIn0sYy5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQo
ImgxIixudWxsLCJ0b2RvcyIpLGMuZGVmYXVsdC5jcmVhdGVFbGVtZW50KHAuZGVmYXVsdCx7bmV3
VG9kbzohMCxvblNhdmU6dGhpcy5oYW5kbGVTYXZlLHBsYWNlaG9sZGVyOiJXaGF0IG5lZWRzIHRv
IGJlIGRvbmU/In0pKX19XSksdH0ocy5Db21wb25lbnQpO2QucHJvcFR5cGVzPXthZGRUb2RvOnMu
UHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZH0sdC5kZWZhdWx0PWR9LGZ1bmN0aW9uKGUsdCxuKXsi
dXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1
bHQ6ZX19ZnVuY3Rpb24gbyhlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBl
RXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfWZ1bmN0aW9uIGkoZSx0
KXtpZighZSl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlh
bGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiF0fHwib2JqZWN0IiE9
dHlwZW9mIHQmJiJmdW5jdGlvbiIhPXR5cGVvZiB0P2U6dH1mdW5jdGlvbiBhKGUsdCl7aWYoImZ1
bmN0aW9uIiE9dHlwZW9mIHQmJm51bGwhPT10KXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4
cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uLCBub3QgIit0eXBlb2Yg
dCk7ZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSx7Y29uc3RydWN0b3I6
e3ZhbHVlOmUsZW51bWVyYWJsZTohMSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksdCYm
KE9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YoZSx0KTplLl9fcHJv
dG9fXz10KX1mdW5jdGlvbiB1KGUsdCxuKXtyZXR1cm4gdCBpbiBlP09iamVjdC5kZWZpbmVQcm9w
ZXJ0eShlLHQse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6
ITB9KTplW3RdPW4sZX1PYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVl
OiEwfSk7dmFyIHMsYz1PYmplY3QuYXNzaWdufHxmdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFy
Z3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1hcmd1bWVudHNbdF07Zm9yKHZhciByIGluIG4pT2Jq
ZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJihlW3JdPW5bcl0pfXJldHVy
biBlfSxsPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQpe2Zvcih2YXIgbj0wO248dC5sZW5ndGg7
bisrKXt2YXIgcj10W25dO3IuZW51bWVyYWJsZT1yLmVudW1lcmFibGV8fCExLHIuY29uZmlndXJh
YmxlPSEwLCJ2YWx1ZSJpbiByJiYoci53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5
KGUsci5rZXkscil9fXJldHVybiBmdW5jdGlvbih0LG4scil7cmV0dXJuIG4mJmUodC5wcm90b3R5
cGUsbiksciYmZSh0LHIpLHR9fSgpLHA9bigxMiksZD1yKHApLGY9bigyMDIpLGg9cihmKSx2PW4o
MTk5KSxtPXIodikseT1uKDg2KSxnPShzPXt9LHUocyx5LlNIT1dfQUxMLGZ1bmN0aW9uKCl7cmV0
dXJuITB9KSx1KHMseS5TSE9XX0FDVElWRSxmdW5jdGlvbihlKXtyZXR1cm4hZS5jb21wbGV0ZWR9
KSx1KHMseS5TSE9XX0NPTVBMRVRFRCxmdW5jdGlvbihlKXtyZXR1cm4gZS5jb21wbGV0ZWR9KSxz
KSxiPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoKXt2YXIgZSxuLHIsYTtvKHRoaXMsdCk7Zm9yKHZh
ciB1PWFyZ3VtZW50cy5sZW5ndGgscz1BcnJheSh1KSxjPTA7Yzx1O2MrKylzW2NdPWFyZ3VtZW50
c1tjXTtyZXR1cm4gbj1yPWkodGhpcywoZT10Ll9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlw
ZU9mKHQpKS5jYWxsLmFwcGx5KGUsW3RoaXNdLmNvbmNhdChzKSkpLHIuc3RhdGU9e2ZpbHRlcjp5
LlNIT1dfQUxMfSxyLmhhbmRsZUNsZWFyQ29tcGxldGVkPWZ1bmN0aW9uKCl7ci5wcm9wcy5hY3Rp
b25zLmNsZWFyQ29tcGxldGVkKCl9LHIuaGFuZGxlU2hvdz1mdW5jdGlvbihlKXtyLnNldFN0YXRl
KHtmaWx0ZXI6ZX0pfSxhPW4saShyLGEpfXJldHVybiBhKHQsZSksbCh0LFt7a2V5OiJyZW5kZXJU
b2dnbGVBbGwiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMucHJvcHMsbj10LnRvZG9zLHI9
dC5hY3Rpb25zO2lmKG4ubGVuZ3RoPjApcmV0dXJuIGQuZGVmYXVsdC5jcmVhdGVFbGVtZW50KCJp
bnB1dCIse2NsYXNzTmFtZToidG9nZ2xlLWFsbCIsdHlwZToiY2hlY2tib3giLGNoZWNrZWQ6ZT09
PW4ubGVuZ3RoLG9uQ2hhbmdlOnIuY29tcGxldGVBbGx9KX19LHtrZXk6InJlbmRlckZvb3RlciIs
dmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5wcm9wcy50b2RvcyxuPXRoaXMuc3RhdGUuZmls
dGVyLHI9dC5sZW5ndGgtZTtpZih0Lmxlbmd0aClyZXR1cm4gZC5kZWZhdWx0LmNyZWF0ZUVsZW1l
bnQobS5kZWZhdWx0LHtjb21wbGV0ZWRDb3VudDplLGFjdGl2ZUNvdW50OnIsZmlsdGVyOm4sb25D
bGVhckNvbXBsZXRlZDp0aGlzLmhhbmRsZUNsZWFyQ29tcGxldGVkLmJpbmQodGhpcyksb25TaG93
OnRoaXMuaGFuZGxlU2hvdy5iaW5kKHRoaXMpfSl9fSx7a2V5OiJyZW5kZXIiLHZhbHVlOmZ1bmN0
aW9uKCl7dmFyIGU9dGhpcy5wcm9wcyx0PWUudG9kb3Msbj1lLmFjdGlvbnMscj10aGlzLnN0YXRl
LmZpbHRlcixvPXQuZmlsdGVyKGdbcl0pLGk9dC5yZWR1Y2UoZnVuY3Rpb24oZSx0KXtyZXR1cm4g
dC5jb21wbGV0ZWQ/ZSsxOmV9LDApO3JldHVybiBkLmRlZmF1bHQuY3JlYXRlRWxlbWVudCgic2Vj
dGlvbiIse2NsYXNzTmFtZToibWFpbiJ9LHRoaXMucmVuZGVyVG9nZ2xlQWxsKGkpLGQuZGVmYXVs
dC5jcmVhdGVFbGVtZW50KCJ1bCIse2NsYXNzTmFtZToidG9kby1saXN0In0sby5tYXAoZnVuY3Rp
b24oZSl7cmV0dXJuIGQuZGVmYXVsdC5jcmVhdGVFbGVtZW50KGguZGVmYXVsdCxjKHtrZXk6ZS5p
ZCx0b2RvOmV9LG4pKX0pKSx0aGlzLnJlbmRlckZvb3RlcihpKSl9fV0pLHR9KHAuQ29tcG9uZW50
KTtiLnByb3BUeXBlcz17dG9kb3M6cC5Qcm9wVHlwZXMuYXJyYXkuaXNSZXF1aXJlZCxhY3Rpb25z
OnAuUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkfSx0LmRlZmF1bHQ9Yn0sZnVuY3Rpb24oZSx0
LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7
ZGVmYXVsdDplfX1mdW5jdGlvbiBvKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3
IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24g
aShlLHQpe2lmKCFlKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBp
bml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIXR8fCJvYmpl
Y3QiIT10eXBlb2YgdCYmImZ1bmN0aW9uIiE9dHlwZW9mIHQ/ZTp0fWZ1bmN0aW9uIGEoZSx0KXtp
ZigiZnVuY3Rpb24iIT10eXBlb2YgdCYmbnVsbCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3Vw
ZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCAiK3R5
cGVvZiB0KTtlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlLHtjb25zdHJ1
Y3Rvcjp7dmFsdWU6ZSxlbnVtZXJhYmxlOiExLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19
KSx0JiYoT2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZihlLHQpOmUu
X19wcm90b19fPXQpfU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6
ITB9KTt2YXIgdT1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSx0KXtmb3IodmFyIG49MDtuPHQubGVu
Z3RoO24rKyl7dmFyIHI9dFtuXTtyLmVudW1lcmFibGU9ci5lbnVtZXJhYmxlfHwhMSxyLmNvbmZp
Z3VyYWJsZT0hMCwidmFsdWUiaW4gciYmKHIud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9w
ZXJ0eShlLHIua2V5LHIpfX1yZXR1cm4gZnVuY3Rpb24odCxuLHIpe3JldHVybiBuJiZlKHQucHJv
dG90eXBlLG4pLHImJmUodCxyKSx0fX0oKSxzPW4oMTIpLGM9cihzKSxsPW4oMzEpLHA9cihsKSxk
PW4oODQpLGY9cihkKSxoPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoKXt2YXIgZSxuLHIsYTtvKHRo
aXMsdCk7Zm9yKHZhciB1PWFyZ3VtZW50cy5sZW5ndGgscz1BcnJheSh1KSxjPTA7Yzx1O2MrKylz
W2NdPWFyZ3VtZW50c1tjXTtyZXR1cm4gbj1yPWkodGhpcywoZT10Ll9fcHJvdG9fX3x8T2JqZWN0
LmdldFByb3RvdHlwZU9mKHQpKS5jYWxsLmFwcGx5KGUsW3RoaXNdLmNvbmNhdChzKSkpLHIuc3Rh
dGU9e2VkaXRpbmc6ITF9LHIuaGFuZGxlRG91YmxlQ2xpY2s9ZnVuY3Rpb24oKXtyLnNldFN0YXRl
KHtlZGl0aW5nOiEwfSl9LHIuaGFuZGxlU2F2ZT1mdW5jdGlvbihlLHQpezA9PT10Lmxlbmd0aD9y
LnByb3BzLmRlbGV0ZVRvZG8oZSk6ci5wcm9wcy5lZGl0VG9kbyhlLHQpLHIuc2V0U3RhdGUoe2Vk
aXRpbmc6ITF9KX0sYT1uLGkocixhKX1yZXR1cm4gYSh0LGUpLHUodCxbe2tleToicmVuZGVyIix2
YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMsdD10aGlzLnByb3BzLG49dC50b2RvLHI9dC5jb21w
bGV0ZVRvZG8sbz10LmRlbGV0ZVRvZG8saT12b2lkIDA7cmV0dXJuIGk9dGhpcy5zdGF0ZS5lZGl0
aW5nP2MuZGVmYXVsdC5jcmVhdGVFbGVtZW50KGYuZGVmYXVsdCx7dGV4dDpuLnRleHQsZWRpdGlu
Zzp0aGlzLnN0YXRlLmVkaXRpbmcsb25TYXZlOmZ1bmN0aW9uKHQpe3JldHVybiBlLmhhbmRsZVNh
dmUobi5pZCx0KX19KTpjLmRlZmF1bHQuY3JlYXRlRWxlbWVudCgiZGl2Iix7Y2xhc3NOYW1lOiJ2
aWV3In0sYy5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoImlucHV0Iix7Y2xhc3NOYW1lOiJ0b2dnbGUi
LHR5cGU6ImNoZWNrYm94IixjaGVja2VkOm4uY29tcGxldGVkLG9uQ2hhbmdlOmZ1bmN0aW9uKCl7
cmV0dXJuIHIobi5pZCl9fSksYy5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoImxhYmVsIix7b25Eb3Vi
bGVDbGljazp0aGlzLmhhbmRsZURvdWJsZUNsaWNrfSxuLnRleHQpLGMuZGVmYXVsdC5jcmVhdGVF
bGVtZW50KCJidXR0b24iLHtjbGFzc05hbWU6ImRlc3Ryb3kiLG9uQ2xpY2s6ZnVuY3Rpb24oKXty
ZXR1cm4gbyhuLmlkKX19KSksYy5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoImxpIix7Y2xhc3NOYW1l
OigwLHAuZGVmYXVsdCkoe2NvbXBsZXRlZDpuLmNvbXBsZXRlZCxlZGl0aW5nOnRoaXMuc3RhdGUu
ZWRpdGluZ30pfSxpKX19XSksdH0ocy5Db21wb25lbnQpO2gucHJvcFR5cGVzPXt0b2RvOnMuUHJv
cFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLGVkaXRUb2RvOnMuUHJvcFR5cGVzLmZ1bmMuaXNSZXF1
aXJlZCxkZWxldGVUb2RvOnMuUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxjb21wbGV0ZVRvZG86
cy5Qcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkfSx0LmRlZmF1bHQ9aH0sZnVuY3Rpb24oZSx0LG4p
eyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe2lmKGUmJmUuX19lc01vZHVsZSlyZXR1cm4gZTt2
YXIgdD17fTtpZihudWxsIT1lKWZvcih2YXIgbiBpbiBlKU9iamVjdC5wcm90b3R5cGUuaGFzT3du
UHJvcGVydHkuY2FsbChlLG4pJiYodFtuXT1lW25dKTtyZXR1cm4gdC5kZWZhdWx0PWUsdH1mdW5j
dGlvbiBvKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX1PYmplY3QuZGVm
aW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIGk9bigxMiksYT1vKGkp
LHU9bigzMCkscz1uKDgxKSxjPW4oMjAwKSxsPW8oYykscD1uKDIwMSksZD1vKHApLGY9bigxOTgp
LGg9cihmKSx2PWZ1bmN0aW9uKGUpe3ZhciB0PWUudG9kb3Msbj1lLmFjdGlvbnM7cmV0dXJuIGEu
ZGVmYXVsdC5jcmVhdGVFbGVtZW50KCJkaXYiLG51bGwsYS5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQo
bC5kZWZhdWx0LHthZGRUb2RvOm4uYWRkVG9kb30pLGEuZGVmYXVsdC5jcmVhdGVFbGVtZW50KGQu
ZGVmYXVsdCx7dG9kb3M6dCxhY3Rpb25zOm59KSl9O3YucHJvcFR5cGVzPXt0b2RvczppLlByb3BU
eXBlcy5hcnJheS5pc1JlcXVpcmVkLGFjdGlvbnM6aS5Qcm9wVHlwZXMub2JqZWN0LmlzUmVxdWly
ZWR9O3ZhciBtPWZ1bmN0aW9uKGUpe3JldHVybnt0b2RvczplLnRvZG9zfX0seT1mdW5jdGlvbihl
KXtyZXR1cm57YWN0aW9uczooMCx1LmJpbmRBY3Rpb25DcmVhdG9ycykoaCxlKX19O3QuZGVmYXVs
dD0oMCxzLmNvbm5lY3QpKG0seSkodil9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVu
Y3Rpb24gcihlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19dmFyIG89bigx
MiksaT1yKG8pLGE9bigxMjMpLHU9bigzMCkscz1uKDgxKSxjPW4oMjAzKSxsPXIoYykscD1uKDIw
NSksZD1yKHApO24oMjA3KTt2YXIgZj0oMCx1LmNyZWF0ZVN0b3JlKShkLmRlZmF1bHQpOygwLGEu
cmVuZGVyKShpLmRlZmF1bHQuY3JlYXRlRWxlbWVudChzLlByb3ZpZGVyLHtzdG9yZTpmfSxpLmRl
ZmF1bHQuY3JlYXRlRWxlbWVudChsLmRlZmF1bHQsbnVsbCkpLGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJyb290IikpfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7
cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fU9iamVjdC5kZWZpbmVQcm9wZXJ0
eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgbz1uKDMwKSxpPW4oMjA2KSxhPXIoaSks
dT0oMCxvLmNvbWJpbmVSZWR1Y2Vycykoe3RvZG9zOmEuZGVmYXVsdH0pO3QuZGVmYXVsdD11fSxm
dW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7aWYoQXJyYXkuaXNBcnJh
eShlKSl7Zm9yKHZhciB0PTAsbj1BcnJheShlLmxlbmd0aCk7dDxlLmxlbmd0aDt0Kyspblt0XT1l
W3RdO3JldHVybiBufXJldHVybiBBcnJheS5mcm9tKGUpfWZ1bmN0aW9uIG8oKXt2YXIgZT1hcmd1
bWVudHMubGVuZ3RoPD0wfHx2b2lkIDA9PT1hcmd1bWVudHNbMF0/czphcmd1bWVudHNbMF0sdD1h
cmd1bWVudHNbMV0sbj1mdW5jdGlvbigpe3N3aXRjaCh0LnR5cGUpe2Nhc2UgdS5BRERfVE9ETzpy
ZXR1cm57djpbe2lkOmUucmVkdWNlKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIE1hdGgubWF4KHQuaWQs
ZSl9LC0xKSsxLGNvbXBsZXRlZDohMSx0ZXh0OnQudGV4dH1dLmNvbmNhdChyKGUpKX07Y2FzZSB1
LkRFTEVURV9UT0RPOnJldHVybnt2OmUuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBlLmlkIT09
dC5pZH0pfTtjYXNlIHUuRURJVF9UT0RPOnJldHVybnt2OmUubWFwKGZ1bmN0aW9uKGUpe3JldHVy
biBlLmlkPT09dC5pZD9hKHt9LGUse3RleHQ6dC50ZXh0fSk6ZX0pfTtjYXNlIHUuQ09NUExFVEVf
VE9ETzpyZXR1cm57djplLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gZS5pZD09PXQuaWQ/YSh7fSxl
LHtjb21wbGV0ZWQ6IWUuY29tcGxldGVkfSk6ZX0pfTtjYXNlIHUuQ09NUExFVEVfQUxMOnZhciBu
PWUuZXZlcnkoZnVuY3Rpb24oZSl7cmV0dXJuIGUuY29tcGxldGVkfSk7cmV0dXJue3Y6ZS5tYXAo
ZnVuY3Rpb24oZSl7cmV0dXJuIGEoe30sZSx7Y29tcGxldGVkOiFufSl9KX07Y2FzZSB1LkNMRUFS
X0NPTVBMRVRFRDpyZXR1cm57djplLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gZS5jb21wbGV0
ZWQ9PT0hMX0pfTtkZWZhdWx0OnJldHVybnt2OmV9fX0oKTtpZigib2JqZWN0Ij09PSgidW5kZWZp
bmVkIj09dHlwZW9mIG4/InVuZGVmaW5lZCI6aShuKSkpcmV0dXJuIG4udn1PYmplY3QuZGVmaW5l
UHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIGk9ImZ1bmN0aW9uIj09dHlw
ZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZSl7
cmV0dXJuIHR5cGVvZiBlfTpmdW5jdGlvbihlKXtyZXR1cm4gZSYmImZ1bmN0aW9uIj09dHlwZW9m
IFN5bWJvbCYmZS5jb25zdHJ1Y3Rvcj09PVN5bWJvbD8ic3ltYm9sIjp0eXBlb2YgZX0sYT1PYmpl
Y3QuYXNzaWdufHxmdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsr
KXt2YXIgbj1hcmd1bWVudHNbdF07Zm9yKHZhciByIGluIG4pT2JqZWN0LnByb3RvdHlwZS5oYXNP
d25Qcm9wZXJ0eS5jYWxsKG4scikmJihlW3JdPW5bcl0pfXJldHVybiBlfTt0LmRlZmF1bHQ9bzt2
YXIgdT1uKDg1KSxzPVtdfSxmdW5jdGlvbihlLHQpe30sZnVuY3Rpb24oZSx0KXsidXNlIHN0cmlj
dCI7ZnVuY3Rpb24gbihlKXtpZihudWxsPT09ZXx8dm9pZCAwPT09ZSl0aHJvdyBuZXcgVHlwZUVy
cm9yKCJPYmplY3QuYXNzaWduIGNhbm5vdCBiZSBjYWxsZWQgd2l0aCBudWxsIG9yIHVuZGVmaW5l
ZCIpO3JldHVybiBPYmplY3QoZSl9ZnVuY3Rpb24gcigpe3RyeXtpZighT2JqZWN0LmFzc2lnbily
ZXR1cm4hMTt2YXIgZT1uZXcgU3RyaW5nKCJhYmMiKTtpZihlWzVdPSJkZSIsIjUiPT09T2JqZWN0
LmdldE93blByb3BlcnR5TmFtZXMoZSlbMF0pcmV0dXJuITE7Zm9yKHZhciB0PXt9LG49MDtuPDEw
O24rKyl0WyJfIitTdHJpbmcuZnJvbUNoYXJDb2RlKG4pXT1uO3ZhciByPU9iamVjdC5nZXRPd25Q
cm9wZXJ0eU5hbWVzKHQpLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gdFtlXX0pO2lmKCIwMTIzNDU2
Nzg5IiE9PXIuam9pbigiIikpcmV0dXJuITE7dmFyIG89e307cmV0dXJuImFiY2RlZmdoaWprbG1u
b3BxcnN0Ii5zcGxpdCgiIikuZm9yRWFjaChmdW5jdGlvbihlKXtvW2VdPWV9KSwiYWJjZGVmZ2hp
amtsbW5vcHFyc3QiPT09T2JqZWN0LmtleXMoT2JqZWN0LmFzc2lnbih7fSxvKSkuam9pbigiIil9
Y2F0Y2goaSl7cmV0dXJuITF9fXZhciBvPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHks
aT1PYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlO2UuZXhwb3J0cz1yKCk/T2Jq
ZWN0LmFzc2lnbjpmdW5jdGlvbihlLHQpe2Zvcih2YXIgcixhLHU9bihlKSxzPTE7czxhcmd1bWVu
dHMubGVuZ3RoO3MrKyl7cj1PYmplY3QoYXJndW1lbnRzW3NdKTtmb3IodmFyIGMgaW4gcilvLmNh
bGwocixjKSYmKHVbY109cltjXSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7YT1P
YmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHIpO2Zvcih2YXIgbD0wO2w8YS5sZW5ndGg7bCsr
KWkuY2FsbChyLGFbbF0pJiYodVthW2xdXT1yW2FbbF1dKX19cmV0dXJuIHV9fSxmdW5jdGlvbihl
LHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7dmFyIHQ9bmV3IG8oby5fNjEpO3JldHVy
biB0Ll84MT0xLHQuXzY1PWUsdH12YXIgbz1uKDg4KTtlLmV4cG9ydHM9bzt2YXIgaT1yKCEwKSxh
PXIoITEpLHU9cihudWxsKSxzPXIodm9pZCAwKSxjPXIoMCksbD1yKCIiKTtvLnJlc29sdmU9ZnVu
Y3Rpb24oZSl7aWYoZSBpbnN0YW5jZW9mIG8pcmV0dXJuIGU7aWYobnVsbD09PWUpcmV0dXJuIHU7
aWYodm9pZCAwPT09ZSlyZXR1cm4gcztpZihlPT09ITApcmV0dXJuIGk7aWYoZT09PSExKXJldHVy
biBhO2lmKDA9PT1lKXJldHVybiBjO2lmKCIiPT09ZSlyZXR1cm4gbDtpZigib2JqZWN0Ij09dHlw
ZW9mIGV8fCJmdW5jdGlvbiI9PXR5cGVvZiBlKXRyeXt2YXIgdD1lLnRoZW47aWYoImZ1bmN0aW9u
Ij09dHlwZW9mIHQpcmV0dXJuIG5ldyBvKHQuYmluZChlKSl9Y2F0Y2gobil7cmV0dXJuIG5ldyBv
KGZ1bmN0aW9uKGUsdCl7dChuKX0pfXJldHVybiByKGUpfSxvLmFsbD1mdW5jdGlvbihlKXt2YXIg
dD1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChlKTtyZXR1cm4gbmV3IG8oZnVuY3Rpb24oZSxu
KXtmdW5jdGlvbiByKGEsdSl7aWYodSYmKCJvYmplY3QiPT10eXBlb2YgdXx8ImZ1bmN0aW9uIj09
dHlwZW9mIHUpKXtpZih1IGluc3RhbmNlb2YgbyYmdS50aGVuPT09by5wcm90b3R5cGUudGhlbil7
Zm9yKDszPT09dS5fODE7KXU9dS5fNjU7cmV0dXJuIDE9PT11Ll84MT9yKGEsdS5fNjUpOigyPT09
dS5fODEmJm4odS5fNjUpLHZvaWQgdS50aGVuKGZ1bmN0aW9uKGUpe3IoYSxlKX0sbikpfXZhciBz
PXUudGhlbjtpZigiZnVuY3Rpb24iPT10eXBlb2Ygcyl7dmFyIGM9bmV3IG8ocy5iaW5kKHUpKTty
ZXR1cm4gdm9pZCBjLnRoZW4oZnVuY3Rpb24oZSl7cihhLGUpfSxuKX19dFthXT11LDA9PT0tLWkm
JmUodCl9aWYoMD09PXQubGVuZ3RoKXJldHVybiBlKFtdKTtmb3IodmFyIGk9dC5sZW5ndGgsYT0w
O2E8dC5sZW5ndGg7YSsrKXIoYSx0W2FdKX0pfSxvLnJlamVjdD1mdW5jdGlvbihlKXtyZXR1cm4g
bmV3IG8oZnVuY3Rpb24odCxuKXtuKGUpfSl9LG8ucmFjZT1mdW5jdGlvbihlKXtyZXR1cm4gbmV3
IG8oZnVuY3Rpb24odCxuKXtlLmZvckVhY2goZnVuY3Rpb24oZSl7by5yZXNvbHZlKGUpLnRoZW4o
dCxuKX0pfSl9LG8ucHJvdG90eXBlLmNhdGNoPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnRoZW4o
bnVsbCxlKX19LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcigpe2M9ITEs
dS5fMTA9bnVsbCx1Ll85Nz1udWxsfWZ1bmN0aW9uIG8oZSl7ZnVuY3Rpb24gdCh0KXsoZS5hbGxS
ZWplY3Rpb25zfHxhKHBbdF0uZXJyb3IsZS53aGl0ZWxpc3R8fHMpKSYmKHBbdF0uZGlzcGxheUlk
PWwrKyxlLm9uVW5oYW5kbGVkPyhwW3RdLmxvZ2dlZD0hMCxlLm9uVW5oYW5kbGVkKHBbdF0uZGlz
cGxheUlkLHBbdF0uZXJyb3IpKToocFt0XS5sb2dnZWQ9ITAsaShwW3RdLmRpc3BsYXlJZCxwW3Rd
LmVycm9yKSkpfWZ1bmN0aW9uIG4odCl7cFt0XS5sb2dnZWQmJihlLm9uSGFuZGxlZD9lLm9uSGFu
ZGxlZChwW3RdLmRpc3BsYXlJZCxwW3RdLmVycm9yKTpwW3RdLm9uVW5oYW5kbGVkfHwoY29uc29s
ZS53YXJuKCJQcm9taXNlIFJlamVjdGlvbiBIYW5kbGVkIChpZDogIitwW3RdLmRpc3BsYXlJZCsi
KToiKSxjb25zb2xlLndhcm4oJyAgVGhpcyBtZWFucyB5b3UgY2FuIGlnbm9yZSBhbnkgcHJldmlv
dXMgbWVzc2FnZXMgb2YgdGhlIGZvcm0gIlBvc3NpYmxlIFVuaGFuZGxlZCBQcm9taXNlIFJlamVj
dGlvbiIgd2l0aCBpZCAnK3BbdF0uZGlzcGxheUlkKyIuIikpKX1lPWV8fHt9LGMmJnIoKSxjPSEw
O3ZhciBvPTAsbD0wLHA9e307dS5fMTA9ZnVuY3Rpb24oZSl7Mj09PWUuXzgxJiZwW2UuXzcyXSYm
KHBbZS5fNzJdLmxvZ2dlZD9uKGUuXzcyKTpjbGVhclRpbWVvdXQocFtlLl83Ml0udGltZW91dCks
ZGVsZXRlIHBbZS5fNzJdKX0sdS5fOTc9ZnVuY3Rpb24oZSxuKXswPT09ZS5fNDUmJihlLl83Mj1v
KysscFtlLl83Ml09e2Rpc3BsYXlJZDpudWxsLGVycm9yOm4sdGltZW91dDpzZXRUaW1lb3V0KHQu
YmluZChudWxsLGUuXzcyKSxhKG4scyk/MTAwOjJlMyksbG9nZ2VkOiExfSl9fWZ1bmN0aW9uIGko
ZSx0KXtjb25zb2xlLndhcm4oIlBvc3NpYmxlIFVuaGFuZGxlZCBQcm9taXNlIFJlamVjdGlvbiAo
aWQ6ICIrZSsiKToiKTt2YXIgbj0odCYmKHQuc3RhY2t8fHQpKSsiIjtuLnNwbGl0KCJcbiIpLmZv
ckVhY2goZnVuY3Rpb24oZSl7Y29uc29sZS53YXJuKCIgICIrZSl9KX1mdW5jdGlvbiBhKGUsdCl7
cmV0dXJuIHQuc29tZShmdW5jdGlvbih0KXtyZXR1cm4gZSBpbnN0YW5jZW9mIHR9KX12YXIgdT1u
KDg4KSxzPVtSZWZlcmVuY2VFcnJvcixUeXBlRXJyb3IsUmFuZ2VFcnJvcl0sYz0hMTt0LmRpc2Fi
bGU9cix0LmVuYWJsZT1vfSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1
cm4gZS53ZWJwYWNrUG9seWZpbGx8fChlLmRlcHJlY2F0ZT1mdW5jdGlvbigpe30sZS5wYXRocz1b
XSxlLmNoaWxkcmVuPVtdLGUud2VicGFja1BvbHlmaWxsPTEpLGV9fSxmdW5jdGlvbihlLHQpeyFm
dW5jdGlvbihlKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gdChlKXtpZigic3RyaW5nIiE9dHlwZW9m
IGUmJihlPVN0cmluZyhlKSksL1teYS16MC05XC0jJCUmJyorLlxeX2B8fl0vaS50ZXN0KGUpKXRo
cm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgY2hhcmFjdGVyIGluIGhlYWRlciBmaWVsZCBuYW1l
Iik7cmV0dXJuIGUudG9Mb3dlckNhc2UoKX1mdW5jdGlvbiBuKGUpe3JldHVybiJzdHJpbmciIT10
eXBlb2YgZSYmKGU9U3RyaW5nKGUpKSxlfWZ1bmN0aW9uIHIoZSl7dmFyIHQ9e25leHQ6ZnVuY3Rp
b24oKXt2YXIgdD1lLnNoaWZ0KCk7cmV0dXJue2RvbmU6dm9pZCAwPT09dCx2YWx1ZTp0fX19O3Jl
dHVybiB2Lml0ZXJhYmxlJiYodFtTeW1ib2wuaXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHR9
KSx0fWZ1bmN0aW9uIG8oZSl7dGhpcy5tYXA9e30sZSBpbnN0YW5jZW9mIG8/ZS5mb3JFYWNoKGZ1
bmN0aW9uKGUsdCl7dGhpcy5hcHBlbmQodCxlKX0sdGhpcyk6ZSYmT2JqZWN0LmdldE93blByb3Bl
cnR5TmFtZXMoZSkuZm9yRWFjaChmdW5jdGlvbih0KXt0aGlzLmFwcGVuZCh0LGVbdF0pfSx0aGlz
KX1mdW5jdGlvbiBpKGUpe3JldHVybiBlLmJvZHlVc2VkP1Byb21pc2UucmVqZWN0KG5ldyBUeXBl
RXJyb3IoIkFscmVhZHkgcmVhZCIpKTp2b2lkKGUuYm9keVVzZWQ9ITApfWZ1bmN0aW9uIGEoZSl7
cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHQsbil7ZS5vbmxvYWQ9ZnVuY3Rpb24oKXt0KGUu
cmVzdWx0KX0sZS5vbmVycm9yPWZ1bmN0aW9uKCl7bihlLmVycm9yKX19KX1mdW5jdGlvbiB1KGUp
e3ZhciB0PW5ldyBGaWxlUmVhZGVyO3JldHVybiB0LnJlYWRBc0FycmF5QnVmZmVyKGUpLGEodCl9
ZnVuY3Rpb24gcyhlKXt2YXIgdD1uZXcgRmlsZVJlYWRlcjtyZXR1cm4gdC5yZWFkQXNUZXh0KGUp
LGEodCl9ZnVuY3Rpb24gYygpe3JldHVybiB0aGlzLmJvZHlVc2VkPSExLHRoaXMuX2luaXRCb2R5
PWZ1bmN0aW9uKGUpe2lmKHRoaXMuX2JvZHlJbml0PWUsInN0cmluZyI9PXR5cGVvZiBlKXRoaXMu
X2JvZHlUZXh0PWU7ZWxzZSBpZih2LmJsb2ImJkJsb2IucHJvdG90eXBlLmlzUHJvdG90eXBlT2Yo
ZSkpdGhpcy5fYm9keUJsb2I9ZTtlbHNlIGlmKHYuZm9ybURhdGEmJkZvcm1EYXRhLnByb3RvdHlw
ZS5pc1Byb3RvdHlwZU9mKGUpKXRoaXMuX2JvZHlGb3JtRGF0YT1lO2Vsc2UgaWYodi5zZWFyY2hQ
YXJhbXMmJlVSTFNlYXJjaFBhcmFtcy5wcm90b3R5cGUuaXNQcm90b3R5cGVPZihlKSl0aGlzLl9i
b2R5VGV4dD1lLnRvU3RyaW5nKCk7ZWxzZSBpZihlKXtpZighdi5hcnJheUJ1ZmZlcnx8IUFycmF5
QnVmZmVyLnByb3RvdHlwZS5pc1Byb3RvdHlwZU9mKGUpKXRocm93IG5ldyBFcnJvcigidW5zdXBw
b3J0ZWQgQm9keUluaXQgdHlwZSIpfWVsc2UgdGhpcy5fYm9keVRleHQ9IiI7dGhpcy5oZWFkZXJz
LmdldCgiY29udGVudC10eXBlIil8fCgic3RyaW5nIj09dHlwZW9mIGU/dGhpcy5oZWFkZXJzLnNl
dCgiY29udGVudC10eXBlIiwidGV4dC9wbGFpbjtjaGFyc2V0PVVURi04Iik6dGhpcy5fYm9keUJs
b2ImJnRoaXMuX2JvZHlCbG9iLnR5cGU/dGhpcy5oZWFkZXJzLnNldCgiY29udGVudC10eXBlIix0
aGlzLl9ib2R5QmxvYi50eXBlKTp2LnNlYXJjaFBhcmFtcyYmVVJMU2VhcmNoUGFyYW1zLnByb3Rv
dHlwZS5pc1Byb3RvdHlwZU9mKGUpJiZ0aGlzLmhlYWRlcnMuc2V0KCJjb250ZW50LXR5cGUiLCJh
cHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7Y2hhcnNldD1VVEYtOCIpKX0sdi5ibG9i
Pyh0aGlzLmJsb2I9ZnVuY3Rpb24oKXt2YXIgZT1pKHRoaXMpO2lmKGUpcmV0dXJuIGU7aWYodGhp
cy5fYm9keUJsb2IpcmV0dXJuIFByb21pc2UucmVzb2x2ZSh0aGlzLl9ib2R5QmxvYik7aWYodGhp
cy5fYm9keUZvcm1EYXRhKXRocm93IG5ldyBFcnJvcigiY291bGQgbm90IHJlYWQgRm9ybURhdGEg
Ym9keSBhcyBibG9iIik7cmV0dXJuIFByb21pc2UucmVzb2x2ZShuZXcgQmxvYihbdGhpcy5fYm9k
eVRleHRdKSl9LHRoaXMuYXJyYXlCdWZmZXI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5ibG9iKCku
dGhlbih1KX0sdGhpcy50ZXh0PWZ1bmN0aW9uKCl7dmFyIGU9aSh0aGlzKTtpZihlKXJldHVybiBl
O2lmKHRoaXMuX2JvZHlCbG9iKXJldHVybiBzKHRoaXMuX2JvZHlCbG9iKTtpZih0aGlzLl9ib2R5
Rm9ybURhdGEpdGhyb3cgbmV3IEVycm9yKCJjb3VsZCBub3QgcmVhZCBGb3JtRGF0YSBib2R5IGFz
IHRleHQiKTtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRoaXMuX2JvZHlUZXh0KX0pOnRoaXMudGV4
dD1mdW5jdGlvbigpe3ZhciBlPWkodGhpcyk7cmV0dXJuIGU/ZTpQcm9taXNlLnJlc29sdmUodGhp
cy5fYm9keVRleHQpfSx2LmZvcm1EYXRhJiYodGhpcy5mb3JtRGF0YT1mdW5jdGlvbigpe3JldHVy
biB0aGlzLnRleHQoKS50aGVuKGQpfSksdGhpcy5qc29uPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMu
dGV4dCgpLnRoZW4oSlNPTi5wYXJzZSl9LHRoaXN9ZnVuY3Rpb24gbChlKXt2YXIgdD1lLnRvVXBw
ZXJDYXNlKCk7cmV0dXJuIG0uaW5kZXhPZih0KT4tMT90OmV9ZnVuY3Rpb24gcChlLHQpe3Q9dHx8
e307dmFyIG49dC5ib2R5O2lmKHAucHJvdG90eXBlLmlzUHJvdG90eXBlT2YoZSkpe2lmKGUuYm9k
eVVzZWQpdGhyb3cgbmV3IFR5cGVFcnJvcigiQWxyZWFkeSByZWFkIik7dGhpcy51cmw9ZS51cmws
dGhpcy5jcmVkZW50aWFscz1lLmNyZWRlbnRpYWxzLHQuaGVhZGVyc3x8KHRoaXMuaGVhZGVycz1u
ZXcgbyhlLmhlYWRlcnMpKSx0aGlzLm1ldGhvZD1lLm1ldGhvZCx0aGlzLm1vZGU9ZS5tb2RlLG58
fChuPWUuX2JvZHlJbml0LGUuYm9keVVzZWQ9ITApfWVsc2UgdGhpcy51cmw9ZTtpZih0aGlzLmNy
ZWRlbnRpYWxzPXQuY3JlZGVudGlhbHN8fHRoaXMuY3JlZGVudGlhbHN8fCJvbWl0IiwhdC5oZWFk
ZXJzJiZ0aGlzLmhlYWRlcnN8fCh0aGlzLmhlYWRlcnM9bmV3IG8odC5oZWFkZXJzKSksdGhpcy5t
ZXRob2Q9bCh0Lm1ldGhvZHx8dGhpcy5tZXRob2R8fCJHRVQiKSx0aGlzLm1vZGU9dC5tb2RlfHx0
aGlzLm1vZGV8fG51bGwsdGhpcy5yZWZlcnJlcj1udWxsLCgiR0VUIj09PXRoaXMubWV0aG9kfHwi
SEVBRCI9PT10aGlzLm1ldGhvZCkmJm4pdGhyb3cgbmV3IFR5cGVFcnJvcigiQm9keSBub3QgYWxs
b3dlZCBmb3IgR0VUIG9yIEhFQUQgcmVxdWVzdHMiKTt0aGlzLl9pbml0Qm9keShuKX1mdW5jdGlv
biBkKGUpe3ZhciB0PW5ldyBGb3JtRGF0YTtyZXR1cm4gZS50cmltKCkuc3BsaXQoIiYiKS5mb3JF
YWNoKGZ1bmN0aW9uKGUpe2lmKGUpe3ZhciBuPWUuc3BsaXQoIj0iKSxyPW4uc2hpZnQoKS5yZXBs
YWNlKC9cKy9nLCIgIiksbz1uLmpvaW4oIj0iKS5yZXBsYWNlKC9cKy9nLCIgIik7dC5hcHBlbmQo
ZGVjb2RlVVJJQ29tcG9uZW50KHIpLGRlY29kZVVSSUNvbXBvbmVudChvKSl9fSksdH1mdW5jdGlv
biBmKGUpe3ZhciB0PW5ldyBvLG49KGUuZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCl8fCIiKS50cmlt
KCkuc3BsaXQoIlxuIik7cmV0dXJuIG4uZm9yRWFjaChmdW5jdGlvbihlKXt2YXIgbj1lLnRyaW0o
KS5zcGxpdCgiOiIpLHI9bi5zaGlmdCgpLnRyaW0oKSxvPW4uam9pbigiOiIpLnRyaW0oKTt0LmFw
cGVuZChyLG8pfSksdH1mdW5jdGlvbiBoKGUsdCl7dHx8KHQ9e30pLHRoaXMudHlwZT0iZGVmYXVs
dCIsdGhpcy5zdGF0dXM9dC5zdGF0dXMsdGhpcy5vaz10aGlzLnN0YXR1cz49MjAwJiZ0aGlzLnN0
YXR1czwzMDAsdGhpcy5zdGF0dXNUZXh0PXQuc3RhdHVzVGV4dCx0aGlzLmhlYWRlcnM9dC5oZWFk
ZXJzIGluc3RhbmNlb2Ygbz90LmhlYWRlcnM6bmV3IG8odC5oZWFkZXJzKSx0aGlzLnVybD10LnVy
bHx8IiIsdGhpcy5faW5pdEJvZHkoZSl9aWYoIWUuZmV0Y2gpe3ZhciB2PXtzZWFyY2hQYXJhbXM6
IlVSTFNlYXJjaFBhcmFtcyJpbiBlLGl0ZXJhYmxlOiJTeW1ib2wiaW4gZSYmIml0ZXJhdG9yImlu
IFN5bWJvbCxibG9iOiJGaWxlUmVhZGVyImluIGUmJiJCbG9iImluIGUmJmZ1bmN0aW9uKCl7dHJ5
e3JldHVybiBuZXcgQmxvYiwhMH1jYXRjaChlKXtyZXR1cm4hMX19KCksZm9ybURhdGE6IkZvcm1E
YXRhImluIGUsYXJyYXlCdWZmZXI6IkFycmF5QnVmZmVyImluIGV9O28ucHJvdG90eXBlLmFwcGVu
ZD1mdW5jdGlvbihlLHIpe2U9dChlKSxyPW4ocik7dmFyIG89dGhpcy5tYXBbZV07b3x8KG89W10s
dGhpcy5tYXBbZV09byksby5wdXNoKHIpfSxvLnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24oZSl7
ZGVsZXRlIHRoaXMubWFwW3QoZSldfSxvLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24oZSl7dmFyIG49
dGhpcy5tYXBbdChlKV07cmV0dXJuIG4/blswXTpudWxsfSxvLnByb3RvdHlwZS5nZXRBbGw9ZnVu
Y3Rpb24oZSl7cmV0dXJuIHRoaXMubWFwW3QoZSldfHxbXX0sby5wcm90b3R5cGUuaGFzPWZ1bmN0
aW9uKGUpe3JldHVybiB0aGlzLm1hcC5oYXNPd25Qcm9wZXJ0eSh0KGUpKX0sby5wcm90b3R5cGUu
c2V0PWZ1bmN0aW9uKGUscil7dGhpcy5tYXBbdChlKV09W24ocildfSxvLnByb3RvdHlwZS5mb3JF
YWNoPWZ1bmN0aW9uKGUsdCl7T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGhpcy5tYXApLmZv
ckVhY2goZnVuY3Rpb24obil7dGhpcy5tYXBbbl0uZm9yRWFjaChmdW5jdGlvbihyKXtlLmNhbGwo
dCxyLG4sdGhpcyl9LHRoaXMpfSx0aGlzKX0sby5wcm90b3R5cGUua2V5cz1mdW5jdGlvbigpe3Zh
ciBlPVtdO3JldHVybiB0aGlzLmZvckVhY2goZnVuY3Rpb24odCxuKXtlLnB1c2gobil9KSxyKGUp
fSxvLnByb3RvdHlwZS52YWx1ZXM9ZnVuY3Rpb24oKXt2YXIgZT1bXTtyZXR1cm4gdGhpcy5mb3JF
YWNoKGZ1bmN0aW9uKHQpe2UucHVzaCh0KX0pLHIoZSl9LG8ucHJvdG90eXBlLmVudHJpZXM9ZnVu
Y3Rpb24oKXt2YXIgZT1bXTtyZXR1cm4gdGhpcy5mb3JFYWNoKGZ1bmN0aW9uKHQsbil7ZS5wdXNo
KFtuLHRdKX0pLHIoZSl9LHYuaXRlcmFibGUmJihvLnByb3RvdHlwZVtTeW1ib2wuaXRlcmF0b3Jd
PW8ucHJvdG90eXBlLmVudHJpZXMpO3ZhciBtPVsiREVMRVRFIiwiR0VUIiwiSEVBRCIsIk9QVElP
TlMiLCJQT1NUIiwiUFVUIl07cC5wcm90b3R5cGUuY2xvbmU9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3
IHAodGhpcyl9LGMuY2FsbChwLnByb3RvdHlwZSksYy5jYWxsKGgucHJvdG90eXBlKSxoLnByb3Rv
dHlwZS5jbG9uZT1mdW5jdGlvbigpe3JldHVybiBuZXcgaCh0aGlzLl9ib2R5SW5pdCx7c3RhdHVz
OnRoaXMuc3RhdHVzLHN0YXR1c1RleHQ6dGhpcy5zdGF0dXNUZXh0LGhlYWRlcnM6bmV3IG8odGhp
cy5oZWFkZXJzKSx1cmw6dGhpcy51cmx9KX0saC5lcnJvcj1mdW5jdGlvbigpe3ZhciBlPW5ldyBo
KG51bGwse3N0YXR1czowLHN0YXR1c1RleHQ6IiJ9KTtyZXR1cm4gZS50eXBlPSJlcnJvciIsZX07
dmFyIHk9WzMwMSwzMDIsMzAzLDMwNywzMDhdO2gucmVkaXJlY3Q9ZnVuY3Rpb24oZSx0KXtpZih5
LmluZGV4T2YodCk9PT0tMSl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiSW52YWxpZCBzdGF0dXMgY29k
ZSIpO3JldHVybiBuZXcgaChudWxsLHtzdGF0dXM6dCxoZWFkZXJzOntsb2NhdGlvbjplfX0pfSxl
LkhlYWRlcnM9byxlLlJlcXVlc3Q9cCxlLlJlc3BvbnNlPWgsZS5mZXRjaD1mdW5jdGlvbihlLHQp
e3JldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihuLHIpe2Z1bmN0aW9uIG8oKXtyZXR1cm4icmVz
cG9uc2VVUkwiaW4gYT9hLnJlc3BvbnNlVVJMOi9eWC1SZXF1ZXN0LVVSTDovbS50ZXN0KGEuZ2V0
QWxsUmVzcG9uc2VIZWFkZXJzKCkpP2EuZ2V0UmVzcG9uc2VIZWFkZXIoIlgtUmVxdWVzdC1VUkwi
KTp2b2lkIDB9dmFyIGk7aT1wLnByb3RvdHlwZS5pc1Byb3RvdHlwZU9mKGUpJiYhdD9lOm5ldyBw
KGUsdCk7dmFyIGE9bmV3IFhNTEh0dHBSZXF1ZXN0O2Eub25sb2FkPWZ1bmN0aW9uKCl7dmFyIGU9
e3N0YXR1czphLnN0YXR1cyxzdGF0dXNUZXh0OmEuc3RhdHVzVGV4dCxoZWFkZXJzOmYoYSksdXJs
Om8oKX0sdD0icmVzcG9uc2UiaW4gYT9hLnJlc3BvbnNlOmEucmVzcG9uc2VUZXh0O24obmV3IGgo
dCxlKSl9LGEub25lcnJvcj1mdW5jdGlvbigpe3IobmV3IFR5cGVFcnJvcigiTmV0d29yayByZXF1
ZXN0IGZhaWxlZCIpKX0sYS5vbnRpbWVvdXQ9ZnVuY3Rpb24oKXtyKG5ldyBUeXBlRXJyb3IoIk5l
dHdvcmsgcmVxdWVzdCBmYWlsZWQiKSl9LGEub3BlbihpLm1ldGhvZCxpLnVybCwhMCksImluY2x1
ZGUiPT09aS5jcmVkZW50aWFscyYmKGEud2l0aENyZWRlbnRpYWxzPSEwKSwicmVzcG9uc2VUeXBl
ImluIGEmJnYuYmxvYiYmKGEucmVzcG9uc2VUeXBlPSJibG9iIiksaS5oZWFkZXJzLmZvckVhY2go
ZnVuY3Rpb24oZSx0KXthLnNldFJlcXVlc3RIZWFkZXIodCxlKX0pLGEuc2VuZCgidW5kZWZpbmVk
Ij09dHlwZW9mIGkuX2JvZHlJbml0P251bGw6aS5fYm9keUluaXQpfSl9LGUuZmV0Y2gucG9seWZp
bGw9ITB9fSgidW5kZWZpbmVkIiE9dHlwZW9mIHNlbGY/c2VsZjp0aGlzKX0sMzgsWzIzMSwyM10s
ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3JldHVybigiIitlKS5y
ZXBsYWNlKF8sIiQmLyIpfWZ1bmN0aW9uIG8oZSx0KXt0aGlzLmZ1bmM9ZSx0aGlzLmNvbnRleHQ9
dCx0aGlzLmNvdW50PTB9ZnVuY3Rpb24gaShlLHQsbil7dmFyIHI9ZS5mdW5jLG89ZS5jb250ZXh0
O3IuY2FsbChvLHQsZS5jb3VudCsrKX1mdW5jdGlvbiBhKGUsdCxuKXtpZihudWxsPT1lKXJldHVy
biBlO3ZhciByPW8uZ2V0UG9vbGVkKHQsbik7eShlLGksciksby5yZWxlYXNlKHIpfWZ1bmN0aW9u
IHUoZSx0LG4scil7dGhpcy5yZXN1bHQ9ZSx0aGlzLmtleVByZWZpeD10LHRoaXMuZnVuYz1uLHRo
aXMuY29udGV4dD1yLHRoaXMuY291bnQ9MH1mdW5jdGlvbiBzKGUsdCxuKXt2YXIgbz1lLnJlc3Vs
dCxpPWUua2V5UHJlZml4LGE9ZS5mdW5jLHU9ZS5jb250ZXh0LHM9YS5jYWxsKHUsdCxlLmNvdW50
KyspO0FycmF5LmlzQXJyYXkocyk/YyhzLG8sbixtLnRoYXRSZXR1cm5zQXJndW1lbnQpOm51bGwh
PXMmJih2LmlzVmFsaWRFbGVtZW50KHMpJiYocz12LmNsb25lQW5kUmVwbGFjZUtleShzLGkrKCFz
LmtleXx8dCYmdC5rZXk9PT1zLmtleT8iIjpyKHMua2V5KSsiLyIpK24pKSxvLnB1c2gocykpfWZ1
bmN0aW9uIGMoZSx0LG4sbyxpKXt2YXIgYT0iIjtudWxsIT1uJiYoYT1yKG4pKyIvIik7dmFyIGM9
dS5nZXRQb29sZWQodCxhLG8saSk7eShlLHMsYyksdS5yZWxlYXNlKGMpfWZ1bmN0aW9uIGwoZSx0
LG4pe2lmKG51bGw9PWUpcmV0dXJuIGU7dmFyIHI9W107cmV0dXJuIGMoZSxyLG51bGwsdCxuKSxy
fWZ1bmN0aW9uIHAoZSx0LG4pe3JldHVybiBudWxsfWZ1bmN0aW9uIGQoZSx0KXtyZXR1cm4geShl
LHAsbnVsbCl9ZnVuY3Rpb24gZihlKXt2YXIgdD1bXTtyZXR1cm4gYyhlLHQsbnVsbCxtLnRoYXRS
ZXR1cm5zQXJndW1lbnQpLHR9dmFyIGg9bigyMTQpLHY9bigxOCksbT1uKDcpLHk9bigyMjQpLGc9
aC50d29Bcmd1bWVudFBvb2xlcixiPWguZm91ckFyZ3VtZW50UG9vbGVyLF89L1wvKy9nO28ucHJv
dG90eXBlLmRlc3RydWN0b3I9ZnVuY3Rpb24oKXt0aGlzLmZ1bmM9bnVsbCx0aGlzLmNvbnRleHQ9
bnVsbCx0aGlzLmNvdW50PTB9LGguYWRkUG9vbGluZ1RvKG8sZyksdS5wcm90b3R5cGUuZGVzdHJ1
Y3Rvcj1mdW5jdGlvbigpe3RoaXMucmVzdWx0PW51bGwsdGhpcy5rZXlQcmVmaXg9bnVsbCx0aGlz
LmZ1bmM9bnVsbCx0aGlzLmNvbnRleHQ9bnVsbCx0aGlzLmNvdW50PTB9LGguYWRkUG9vbGluZ1Rv
KHUsYik7dmFyIEM9e2ZvckVhY2g6YSxtYXA6bCxtYXBJbnRvV2l0aEtleVByZWZpeEludGVybmFs
OmMsY291bnQ6ZCx0b0FycmF5OmZ9O2UuZXhwb3J0cz1DfSxmdW5jdGlvbihlLHQsbil7InVzZSBz
dHJpY3QiO3ZhciByPW4oMTgpLG89ci5jcmVhdGVGYWN0b3J5LGk9e2E6bygiYSIpLGFiYnI6bygi
YWJiciIpLGFkZHJlc3M6bygiYWRkcmVzcyIpLGFyZWE6bygiYXJlYSIpLGFydGljbGU6bygiYXJ0
aWNsZSIpLGFzaWRlOm8oImFzaWRlIiksYXVkaW86bygiYXVkaW8iKSxiOm8oImIiKSxiYXNlOm8o
ImJhc2UiKSxiZGk6bygiYmRpIiksYmRvOm8oImJkbyIpLGJpZzpvKCJiaWciKSxibG9ja3F1b3Rl
Om8oImJsb2NrcXVvdGUiKSxib2R5Om8oImJvZHkiKSxicjpvKCJiciIpLGJ1dHRvbjpvKCJidXR0
b24iKSxjYW52YXM6bygiY2FudmFzIiksY2FwdGlvbjpvKCJjYXB0aW9uIiksY2l0ZTpvKCJjaXRl
IiksY29kZTpvKCJjb2RlIiksY29sOm8oImNvbCIpLGNvbGdyb3VwOm8oImNvbGdyb3VwIiksZGF0
YTpvKCJkYXRhIiksZGF0YWxpc3Q6bygiZGF0YWxpc3QiKSxkZDpvKCJkZCIpLGRlbDpvKCJkZWwi
KSxkZXRhaWxzOm8oImRldGFpbHMiKSxkZm46bygiZGZuIiksZGlhbG9nOm8oImRpYWxvZyIpLGRp
djpvKCJkaXYiKSxkbDpvKCJkbCIpLGR0Om8oImR0IiksZW06bygiZW0iKSxlbWJlZDpvKCJlbWJl
ZCIpLGZpZWxkc2V0Om8oImZpZWxkc2V0IiksZmlnY2FwdGlvbjpvKCJmaWdjYXB0aW9uIiksZmln
dXJlOm8oImZpZ3VyZSIpLGZvb3RlcjpvKCJmb290ZXIiKSxmb3JtOm8oImZvcm0iKSxoMTpvKCJo
MSIpLGgyOm8oImgyIiksaDM6bygiaDMiKSxoNDpvKCJoNCIpLGg1Om8oImg1IiksaDY6bygiaDYi
KSxoZWFkOm8oImhlYWQiKSxoZWFkZXI6bygiaGVhZGVyIiksaGdyb3VwOm8oImhncm91cCIpLGhy
Om8oImhyIiksaHRtbDpvKCJodG1sIiksaTpvKCJpIiksaWZyYW1lOm8oImlmcmFtZSIpLGltZzpv
KCJpbWciKSxpbnB1dDpvKCJpbnB1dCIpLGluczpvKCJpbnMiKSxrYmQ6bygia2JkIiksa2V5Z2Vu
Om8oImtleWdlbiIpLGxhYmVsOm8oImxhYmVsIiksbGVnZW5kOm8oImxlZ2VuZCIpLGxpOm8oImxp
IiksbGluazpvKCJsaW5rIiksbWFpbjpvKCJtYWluIiksbWFwOm8oIm1hcCIpLG1hcms6bygibWFy
ayIpLG1lbnU6bygibWVudSIpLG1lbnVpdGVtOm8oIm1lbnVpdGVtIiksbWV0YTpvKCJtZXRhIiks
bWV0ZXI6bygibWV0ZXIiKSxuYXY6bygibmF2Iiksbm9zY3JpcHQ6bygibm9zY3JpcHQiKSxvYmpl
Y3Q6bygib2JqZWN0Iiksb2w6bygib2wiKSxvcHRncm91cDpvKCJvcHRncm91cCIpLG9wdGlvbjpv
KCJvcHRpb24iKSxvdXRwdXQ6bygib3V0cHV0IikscDpvKCJwIikscGFyYW06bygicGFyYW0iKSxw
aWN0dXJlOm8oInBpY3R1cmUiKSxwcmU6bygicHJlIikscHJvZ3Jlc3M6bygicHJvZ3Jlc3MiKSxx
Om8oInEiKSxycDpvKCJycCIpLHJ0Om8oInJ0IikscnVieTpvKCJydWJ5IiksczpvKCJzIiksc2Ft
cDpvKCJzYW1wIiksc2NyaXB0Om8oInNjcmlwdCIpLHNlY3Rpb246bygic2VjdGlvbiIpLHNlbGVj
dDpvKCJzZWxlY3QiKSxzbWFsbDpvKCJzbWFsbCIpLHNvdXJjZTpvKCJzb3VyY2UiKSxzcGFuOm8o
InNwYW4iKSxzdHJvbmc6bygic3Ryb25nIiksc3R5bGU6bygic3R5bGUiKSxzdWI6bygic3ViIiks
c3VtbWFyeTpvKCJzdW1tYXJ5Iiksc3VwOm8oInN1cCIpLHRhYmxlOm8oInRhYmxlIiksdGJvZHk6
bygidGJvZHkiKSx0ZDpvKCJ0ZCIpLHRleHRhcmVhOm8oInRleHRhcmVhIiksdGZvb3Q6bygidGZv
b3QiKSx0aDpvKCJ0aCIpLHRoZWFkOm8oInRoZWFkIiksdGltZTpvKCJ0aW1lIiksdGl0bGU6bygi
dGl0bGUiKSx0cjpvKCJ0ciIpLHRyYWNrOm8oInRyYWNrIiksdTpvKCJ1IiksdWw6bygidWwiKSx2
YXI6bygidmFyIiksdmlkZW86bygidmlkZW8iKSx3YnI6bygid2JyIiksY2lyY2xlOm8oImNpcmNs
ZSIpLGNsaXBQYXRoOm8oImNsaXBQYXRoIiksZGVmczpvKCJkZWZzIiksZWxsaXBzZTpvKCJlbGxp
cHNlIiksZzpvKCJnIiksaW1hZ2U6bygiaW1hZ2UiKSxsaW5lOm8oImxpbmUiKSxsaW5lYXJHcmFk
aWVudDpvKCJsaW5lYXJHcmFkaWVudCIpLG1hc2s6bygibWFzayIpLHBhdGg6bygicGF0aCIpLHBh
dHRlcm46bygicGF0dGVybiIpLHBvbHlnb246bygicG9seWdvbiIpLHBvbHlsaW5lOm8oInBvbHls
aW5lIikscmFkaWFsR3JhZGllbnQ6bygicmFkaWFsR3JhZGllbnQiKSxyZWN0Om8oInJlY3QiKSxz
dG9wOm8oInN0b3AiKSxzdmc6bygic3ZnIiksdGV4dDpvKCJ0ZXh0IiksdHNwYW46bygidHNwYW4i
KX07ZS5leHBvcnRzPWl9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigxOCks
bz1yLmlzVmFsaWRFbGVtZW50LGk9big1NSk7ZS5leHBvcnRzPWkobyl9LDE2MyxmdW5jdGlvbihl
LHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oODkpLG89ci5Db21wb25lbnQsaT1uKDE4KSxhPWku
aXNWYWxpZEVsZW1lbnQsdT1uKDkyKSxzPW4oOTcpO2UuZXhwb3J0cz1zKG8sYSx1KX0sMTgyLGZ1
bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4oKXtyZXR1cm4gcisrfXZhciByPTE7
ZS5leHBvcnRzPW59LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9ZnVuY3Rpb24o
KXt9O2UuZXhwb3J0cz1yfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIo
ZSl7cmV0dXJuIGkuaXNWYWxpZEVsZW1lbnQoZSk/dm9pZCAwOm8oIjE0MyIpLGV9dmFyIG89bigy
MyksaT1uKDE4KTtuKDEpO2UuZXhwb3J0cz1yfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3Qi
O2Z1bmN0aW9uIHIoZSx0KXtyZXR1cm4gZSYmIm9iamVjdCI9PXR5cGVvZiBlJiZudWxsIT1lLmtl
eT9jLmVzY2FwZShlLmtleSk6dC50b1N0cmluZygzNil9ZnVuY3Rpb24gbyhlLHQsbixpKXt2YXIg
ZD10eXBlb2YgZTtpZigidW5kZWZpbmVkIiE9PWQmJiJib29sZWFuIiE9PWR8fChlPW51bGwpLG51
bGw9PT1lfHwic3RyaW5nIj09PWR8fCJudW1iZXIiPT09ZHx8Im9iamVjdCI9PT1kJiZlLiQkdHlw
ZW9mPT09dSlyZXR1cm4gbihpLGUsIiI9PT10P2wrcihlLDApOnQpLDE7dmFyIGYsaCx2PTAsbT0i
Ij09PXQ/bDp0K3A7aWYoQXJyYXkuaXNBcnJheShlKSlmb3IodmFyIHk9MDt5PGUubGVuZ3RoO3kr
KylmPWVbeV0saD1tK3IoZix5KSx2Kz1vKGYsaCxuLGkpO2Vsc2V7dmFyIGc9cyhlKTtpZihnKXt2
YXIgYixfPWcuY2FsbChlKTtpZihnIT09ZS5lbnRyaWVzKWZvcih2YXIgQz0wOyEoYj1fLm5leHQo
KSkuZG9uZTspZj1iLnZhbHVlLGg9bStyKGYsQysrKSx2Kz1vKGYsaCxuLGkpO2Vsc2UgZm9yKDsh
KGI9Xy5uZXh0KCkpLmRvbmU7KXt2YXIgRT1iLnZhbHVlO0UmJihmPUVbMV0saD1tK2MuZXNjYXBl
KEVbMF0pK3ArcihmLDApLHYrPW8oZixoLG4saSkpfX1lbHNlIGlmKCJvYmplY3QiPT09ZCl7Ci12
YXIgdz0iIixUPVN0cmluZyhlKTthKCIzMSIsIltvYmplY3QgT2JqZWN0XSI9PT1UPyJvYmplY3Qg
d2l0aCBrZXlzIHsiK09iamVjdC5rZXlzKGUpLmpvaW4oIiwgIikrIn0iOlQsdyl9fXJldHVybiB2
fWZ1bmN0aW9uIGkoZSx0LG4pe3JldHVybiBudWxsPT1lPzA6byhlLCIiLHQsbil9dmFyIGE9bigy
MyksdT0obigxMSksbig5MSkpLHM9bigyMjApLGM9KG4oMSksbigyMTMpKSxsPShuKDIpLCIuIiks
cD0iOiI7ZS5leHBvcnRzPWl9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24g
cihlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19ZnVuY3Rpb24gbygpe2Zv
cih2YXIgZT1hcmd1bWVudHMubGVuZ3RoLHQ9QXJyYXkoZSksbj0wO248ZTtuKyspdFtuXT1hcmd1
bWVudHNbbl07cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbihuLHIsbyl7dmFyIGE9
ZShuLHIsbykscz1hLmRpc3BhdGNoLGM9W10sbD17Z2V0U3RhdGU6YS5nZXRTdGF0ZSxkaXNwYXRj
aDpmdW5jdGlvbihlKXtyZXR1cm4gcyhlKX19O3JldHVybiBjPXQubWFwKGZ1bmN0aW9uKGUpe3Jl
dHVybiBlKGwpfSkscz11LmRlZmF1bHQuYXBwbHkodm9pZCAwLGMpKGEuZGlzcGF0Y2gpLGkoe30s
YSx7ZGlzcGF0Y2g6c30pfX19dC5fX2VzTW9kdWxlPSEwO3ZhciBpPU9iamVjdC5hc3NpZ258fGZ1
bmN0aW9uKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPWFyZ3Vt
ZW50c1t0XTtmb3IodmFyIHIgaW4gbilPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNh
bGwobixyKSYmKGVbcl09bltyXSl9cmV0dXJuIGV9O3QuZGVmYXVsdD1vO3ZhciBhPW4oOTQpLHU9
cihhKX0sZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbihlLHQpe3JldHVybiBm
dW5jdGlvbigpe3JldHVybiB0KGUuYXBwbHkodm9pZCAwLGFyZ3VtZW50cykpfX1mdW5jdGlvbiBy
KGUsdCl7aWYoImZ1bmN0aW9uIj09dHlwZW9mIGUpcmV0dXJuIG4oZSx0KTtpZigib2JqZWN0IiE9
dHlwZW9mIGV8fG51bGw9PT1lKXRocm93IG5ldyBFcnJvcigiYmluZEFjdGlvbkNyZWF0b3JzIGV4
cGVjdGVkIGFuIG9iamVjdCBvciBhIGZ1bmN0aW9uLCBpbnN0ZWFkIHJlY2VpdmVkICIrKG51bGw9
PT1lPyJudWxsIjp0eXBlb2YgZSkrJy4gRGlkIHlvdSB3cml0ZSAiaW1wb3J0IEFjdGlvbkNyZWF0
b3JzIGZyb20iIGluc3RlYWQgb2YgImltcG9ydCAqIGFzIEFjdGlvbkNyZWF0b3JzIGZyb20iPycp
O2Zvcih2YXIgcj1PYmplY3Qua2V5cyhlKSxvPXt9LGk9MDtpPHIubGVuZ3RoO2krKyl7dmFyIGE9
cltpXSx1PWVbYV07ImZ1bmN0aW9uIj09dHlwZW9mIHUmJihvW2FdPW4odSx0KSl9cmV0dXJuIG99
dC5fX2VzTW9kdWxlPSEwLHQuZGVmYXVsdD1yfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3Qi
O2Z1bmN0aW9uIHIoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fWZ1bmN0
aW9uIG8oZSx0KXt2YXIgbj10JiZ0LnR5cGUscj1uJiYnIicrbi50b1N0cmluZygpKyciJ3x8ImFu
IGFjdGlvbiI7cmV0dXJuIkdpdmVuIGFjdGlvbiAiK3IrJywgcmVkdWNlciAiJytlKyciIHJldHVy
bmVkIHVuZGVmaW5lZC4gVG8gaWdub3JlIGFuIGFjdGlvbiwgeW91IG11c3QgZXhwbGljaXRseSBy
ZXR1cm4gdGhlIHByZXZpb3VzIHN0YXRlLiBJZiB5b3Ugd2FudCB0aGlzIHJlZHVjZXIgdG8gaG9s
ZCBubyB2YWx1ZSwgeW91IGNhbiByZXR1cm4gbnVsbCBpbnN0ZWFkIG9mIHVuZGVmaW5lZC4nfWZ1
bmN0aW9uIGkoZSl7T2JqZWN0LmtleXMoZSkuZm9yRWFjaChmdW5jdGlvbih0KXt2YXIgbj1lW3Rd
LHI9bih2b2lkIDAse3R5cGU6dS5BY3Rpb25UeXBlcy5JTklUfSk7aWYoInVuZGVmaW5lZCI9PXR5
cGVvZiByKXRocm93IG5ldyBFcnJvcignUmVkdWNlciAiJyt0KyJcIiByZXR1cm5lZCB1bmRlZmlu
ZWQgZHVyaW5nIGluaXRpYWxpemF0aW9uLiBJZiB0aGUgc3RhdGUgcGFzc2VkIHRvIHRoZSByZWR1
Y2VyIGlzIHVuZGVmaW5lZCwgeW91IG11c3QgZXhwbGljaXRseSByZXR1cm4gdGhlIGluaXRpYWwg
c3RhdGUuIFRoZSBpbml0aWFsIHN0YXRlIG1heSBub3QgYmUgdW5kZWZpbmVkLiBJZiB5b3UgZG9u
J3Qgd2FudCB0byBzZXQgYSB2YWx1ZSBmb3IgdGhpcyByZWR1Y2VyLCB5b3UgY2FuIHVzZSBudWxs
IGluc3RlYWQgb2YgdW5kZWZpbmVkLiIpO3ZhciBvPSJAQHJlZHV4L1BST0JFX1VOS05PV05fQUNU
SU9OXyIrTWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc3Vic3RyaW5nKDcpLnNwbGl0KCIiKS5q
b2luKCIuIik7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBuKHZvaWQgMCx7dHlwZTpvfSkpdGhyb3cg
bmV3IEVycm9yKCdSZWR1Y2VyICInK3QrJyIgcmV0dXJuZWQgdW5kZWZpbmVkIHdoZW4gcHJvYmVk
IHdpdGggYSByYW5kb20gdHlwZS4gJysoIkRvbid0IHRyeSB0byBoYW5kbGUgIit1LkFjdGlvblR5
cGVzLklOSVQrJyBvciBvdGhlciBhY3Rpb25zIGluICJyZWR1eC8qIiAnKSsibmFtZXNwYWNlLiBU
aGV5IGFyZSBjb25zaWRlcmVkIHByaXZhdGUuIEluc3RlYWQsIHlvdSBtdXN0IHJldHVybiB0aGUg
Y3VycmVudCBzdGF0ZSBmb3IgYW55IHVua25vd24gYWN0aW9ucywgdW5sZXNzIGl0IGlzIHVuZGVm
aW5lZCwgaW4gd2hpY2ggY2FzZSB5b3UgbXVzdCByZXR1cm4gdGhlIGluaXRpYWwgc3RhdGUsIHJl
Z2FyZGxlc3Mgb2YgdGhlIGFjdGlvbiB0eXBlLiBUaGUgaW5pdGlhbCBzdGF0ZSBtYXkgbm90IGJl
IHVuZGVmaW5lZCwgYnV0IGNhbiBiZSBudWxsLiIpfSl9ZnVuY3Rpb24gYShlKXtmb3IodmFyIHQ9
T2JqZWN0LmtleXMoZSksbj17fSxyPTA7cjx0Lmxlbmd0aDtyKyspe3ZhciBhPXRbcl07ImZ1bmN0
aW9uIj09dHlwZW9mIGVbYV0mJihuW2FdPWVbYV0pfXZhciB1PU9iamVjdC5rZXlzKG4pLHM9dm9p
ZCAwO3RyeXtpKG4pfWNhdGNoKGMpe3M9Y31yZXR1cm4gZnVuY3Rpb24oKXt2YXIgZT1hcmd1bWVu
dHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06e30sdD1hcmd1
bWVudHNbMV07aWYocyl0aHJvdyBzO2Zvcih2YXIgcj0hMSxpPXt9LGE9MDthPHUubGVuZ3RoO2Er
Kyl7dmFyIGM9dVthXSxsPW5bY10scD1lW2NdLGQ9bChwLHQpO2lmKCJ1bmRlZmluZWQiPT10eXBl
b2YgZCl7dmFyIGY9byhjLHQpO3Rocm93IG5ldyBFcnJvcihmKX1pW2NdPWQscj1yfHxkIT09cH1y
ZXR1cm4gcj9pOmV9fXQuX19lc01vZHVsZT0hMCx0LmRlZmF1bHQ9YTt2YXIgdT1uKDk1KSxzPW4o
MzMpLGM9KHIocyksbig5NikpO3IoYyl9LGZ1bmN0aW9uKGUsdCxuKXtlLmV4cG9ydHM9bigyMjkp
fSxmdW5jdGlvbihlLHQsbil7KGZ1bmN0aW9uKGUscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG8o
ZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fU9iamVjdC5kZWZpbmVQcm9w
ZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgaSxhPW4oMjMwKSx1PW8oYSk7aT0i
dW5kZWZpbmVkIiE9dHlwZW9mIHNlbGY/c2VsZjoidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdz93
aW5kb3c6InVuZGVmaW5lZCIhPXR5cGVvZiBlP2U6cjt2YXIgcz0oMCx1LmRlZmF1bHQpKGkpO3Qu
ZGVmYXVsdD1zfSkuY2FsbCh0LGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KCksbigyMTEpKGUpKX0s
ZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbihlKXt2YXIgdCxuPWUuU3ltYm9s
O3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBuP24ub2JzZXJ2YWJsZT90PW4ub2JzZXJ2YWJsZToo
dD1uKCJvYnNlcnZhYmxlIiksbi5vYnNlcnZhYmxlPXQpOnQ9IkBAb2JzZXJ2YWJsZSIsdH1PYmpl
Y3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksdC5kZWZhdWx0PW59
LGZ1bmN0aW9uKGUsdCxuLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbz1uKHIpLGk9KG4oMSksZnVuY3Rp
b24oZSl7dmFyIHQ9dGhpcztpZih0Lmluc3RhbmNlUG9vbC5sZW5ndGgpe3ZhciBuPXQuaW5zdGFu
Y2VQb29sLnBvcCgpO3JldHVybiB0LmNhbGwobixlKSxufXJldHVybiBuZXcgdChlKX0pLGE9ZnVu
Y3Rpb24oZSx0KXt2YXIgbj10aGlzO2lmKG4uaW5zdGFuY2VQb29sLmxlbmd0aCl7dmFyIHI9bi5p
bnN0YW5jZVBvb2wucG9wKCk7cmV0dXJuIG4uY2FsbChyLGUsdCkscn1yZXR1cm4gbmV3IG4oZSx0
KX0sdT1mdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcztpZihyLmluc3RhbmNlUG9vbC5sZW5ndGgp
e3ZhciBvPXIuaW5zdGFuY2VQb29sLnBvcCgpO3JldHVybiByLmNhbGwobyxlLHQsbiksb31yZXR1
cm4gbmV3IHIoZSx0LG4pfSxzPWZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBvPXRoaXM7aWYoby5pbnN0
YW5jZVBvb2wubGVuZ3RoKXt2YXIgaT1vLmluc3RhbmNlUG9vbC5wb3AoKTtyZXR1cm4gby5jYWxs
KGksZSx0LG4sciksaX1yZXR1cm4gbmV3IG8oZSx0LG4scil9LGM9ZnVuY3Rpb24oZSl7dmFyIHQ9
dGhpcztlIGluc3RhbmNlb2YgdD92b2lkIDA6bygiMjUiKSxlLmRlc3RydWN0b3IoKSx0Lmluc3Rh
bmNlUG9vbC5sZW5ndGg8dC5wb29sU2l6ZSYmdC5pbnN0YW5jZVBvb2wucHVzaChlKX0sbD0xMCxw
PWksZD1mdW5jdGlvbihlLHQpe3ZhciBuPWU7cmV0dXJuIG4uaW5zdGFuY2VQb29sPVtdLG4uZ2V0
UG9vbGVkPXR8fHAsbi5wb29sU2l6ZXx8KG4ucG9vbFNpemU9bCksbi5yZWxlYXNlPWMsbn0sZj17
YWRkUG9vbGluZ1RvOmQsb25lQXJndW1lbnRQb29sZXI6aSx0d29Bcmd1bWVudFBvb2xlcjphLHRo
cmVlQXJndW1lbnRQb29sZXI6dSxmb3VyQXJndW1lbnRQb29sZXI6c307ZS5leHBvcnRzPWZ9XSkp
OwotLy8jIHNvdXJjZU1hcHBpbmdVUkw9bWFpbi40M2EwOTQ4Yy5qcy5tYXAKXCBObyBuZXdsaW5l
IGF0IGVuZCBvZiBmaWxlCkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291
cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC1yZWR1eC9kaXN0L3N0YXRp
Yy9qcy9tYWluLjQzYTA5NDhjLmpzLm1hcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3Rz
L1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFj
dC1yZWR1eC9kaXN0L3N0YXRpYy9qcy9tYWluLjQzYTA5NDhjLmpzLm1hcAkocmV2aXNpb24gMjIx
MDY4KQorKysgUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9h
cmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3QtcmVkdXgvZGlzdC9zdGF0aWMvanMvbWFpbi40M2Ew
OTQ4Yy5qcy5tYXAJKG5vbmV4aXN0ZW50KQpAQCAtMSArMCwwIEBACi17InZlcnNpb24iOjMsInNv
dXJjZXMiOlsid2VicGFjazovLy9zdGF0aWMvanMvbWFpbi40M2EwOTQ4Yy5qcyIsIndlYnBhY2s6
Ly8vd2VicGFjay9ib290c3RyYXAgNmEzYTY4MDdlMTJkMTU3ZTY5MGMiLCJ3ZWJwYWNrOi8vLy4v
fi9mYmpzL2xpYi9pbnZhcmlhbnQuanMiLCJ3ZWJwYWNrOi8vLy4vfi9mYmpzL2xpYi93YXJuaW5n
LmpzIiwid2VicGFjazovLy8uL34vcmVhY3QtZG9tL2xpYi9yZWFjdFByb2RJbnZhcmlhbnQuanMi
LCJ3ZWJwYWNrOi8vLy4vfi9vYmplY3QtYXNzaWduL2luZGV4LmpzIiwid2VicGFjazovLy8uL34v
cmVhY3QtZG9tL2xpYi9SZWFjdERPTUNvbXBvbmVudFRyZWUuanMiLCJ3ZWJwYWNrOi8vLy4vfi9m
YmpzL2xpYi9FeGVjdXRpb25FbnZpcm9ubWVudC5qcyIsIndlYnBhY2s6Ly8vLi9+L2ZianMvbGli
L2VtcHR5RnVuY3Rpb24uanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1kb20vbGliL1JlYWN0SW5z
dHJ1bWVudGF0aW9uLmpzIiwid2VicGFjazovLy8uL34vcmVhY3QtZG9tL2xpYi9SZWFjdFVwZGF0
ZXMuanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1kb20vbGliL1N5bnRoZXRpY0V2ZW50LmpzIiwi
d2VicGFjazovLy8uL34vcmVhY3QvbGliL1JlYWN0Q3VycmVudE93bmVyLmpzIiwid2VicGFjazov
Ly8uL34vcmVhY3QvcmVhY3QuanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1kb20vbGliL0RPTUxh
enlUcmVlLmpzIiwid2VicGFjazovLy8uL34vcmVhY3QtZG9tL2xpYi9ET01Qcm9wZXJ0eS5qcyIs
IndlYnBhY2s6Ly8vLi9+L3JlYWN0LWRvbS9saWIvUmVhY3RSZWNvbmNpbGVyLmpzIiwid2VicGFj
azovLy8uL34vcmVhY3QvbGliL1JlYWN0LmpzIiwid2VicGFjazovLy8uL34vcmVhY3QvbGliL1Jl
YWN0RWxlbWVudC5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LWRvbS9saWIvRXZlbnRQbHVnaW5I
dWIuanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1kb20vbGliL0V2ZW50UHJvcGFnYXRvcnMuanMi
LCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1kb20vbGliL1JlYWN0SW5zdGFuY2VNYXAuanMiLCJ3ZWJw
YWNrOi8vLy4vfi9yZWFjdC1kb20vbGliL1N5bnRoZXRpY1VJRXZlbnQuanMiLCJ3ZWJwYWNrOi8v
Ly4vfi9mYmpzL2xpYi9lbXB0eU9iamVjdC5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LWRvbS9s
aWIvUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLmpzIiwid2VicGFjazovLy8uL34vcmVhY3QtZG9t
L2xpYi9TeW50aGV0aWNNb3VzZUV2ZW50LmpzIiwid2VicGFjazovLy8uL34vcmVhY3QtZG9tL2xp
Yi9UcmFuc2FjdGlvbi5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LWRvbS9saWIvZXNjYXBlVGV4
dENvbnRlbnRGb3JCcm93c2VyLmpzIiwid2VicGFjazovLy8uL34vcmVhY3QtZG9tL2xpYi9zZXRJ
bm5lckhUTUwuanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWR1eC9saWIvaW5kZXguanMiLCJ3ZWJwYWNr
Oi8vLy4vfi9jbGFzc25hbWVzL2luZGV4LmpzIiwid2VicGFjazovLy8uL34vZmJqcy9saWIvc2hh
bGxvd0VxdWFsLmpzIiwid2VicGFjazovLy8uL34vbG9kYXNoL2lzUGxhaW5PYmplY3QuanMiLCJ3
ZWJwYWNrOi8vLy4vfi9yZWFjdC1kb20vbGliL0RPTUNoaWxkcmVuT3BlcmF0aW9ucy5qcyIsIndl
YnBhY2s6Ly8vLi9+L3JlYWN0LWRvbS9saWIvRE9NTmFtZXNwYWNlcy5qcyIsIndlYnBhY2s6Ly8v
Li9+L3JlYWN0LWRvbS9saWIvRXZlbnRQbHVnaW5SZWdpc3RyeS5qcyIsIndlYnBhY2s6Ly8vLi9+
L3JlYWN0LWRvbS9saWIvRXZlbnRQbHVnaW5VdGlscy5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0
LWRvbS9saWIvS2V5RXNjYXBlVXRpbHMuanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1kb20vbGli
L0xpbmtlZFZhbHVlVXRpbHMuanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1kb20vbGliL1JlYWN0
Q29tcG9uZW50RW52aXJvbm1lbnQuanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1kb20vbGliL1Jl
YWN0RXJyb3JVdGlscy5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LWRvbS9saWIvUmVhY3RVcGRh
dGVRdWV1ZS5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LWRvbS9saWIvY3JlYXRlTWljcm9zb2Z0
VW5zYWZlTG9jYWxGdW5jdGlvbi5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LWRvbS9saWIvZ2V0
RXZlbnRDaGFyQ29kZS5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LWRvbS9saWIvZ2V0RXZlbnRN
b2RpZmllclN0YXRlLmpzIiwid2VicGFjazovLy8uL34vcmVhY3QtZG9tL2xpYi9nZXRFdmVudFRh
cmdldC5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LWRvbS9saWIvaXNFdmVudFN1cHBvcnRlZC5q
cyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LWRvbS9saWIvc2hvdWxkVXBkYXRlUmVhY3RDb21wb25l
bnQuanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1kb20vbGliL3ZhbGlkYXRlRE9NTmVzdGluZy5q
cyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LXJlZHV4L2xpYi91dGlscy93YXJuaW5nLmpzIiwid2Vi
cGFjazovLy8uL34vZmJqcy9saWIvRXZlbnRMaXN0ZW5lci5qcyIsIndlYnBhY2s6Ly8vLi9+L2Zi
anMvbGliL2ZvY3VzTm9kZS5qcyIsIndlYnBhY2s6Ly8vLi9+L2ZianMvbGliL2dldEFjdGl2ZUVs
ZW1lbnQuanMiLCJ3ZWJwYWNrOi8vLy4vfi9sb2Rhc2gvX1N5bWJvbC5qcyIsIndlYnBhY2s6Ly8v
Li9+L3Byb3AtdHlwZXMvZmFjdG9yeS5qcyIsIndlYnBhY2s6Ly8vLi9+L3Byb3AtdHlwZXMvaW5k
ZXguanMiLCJ3ZWJwYWNrOi8vLy4vfi9wcm9wLXR5cGVzL2xpYi9SZWFjdFByb3BUeXBlc1NlY3Jl
dC5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LWRvbS9saWIvQ1NTUHJvcGVydHkuanMiLCJ3ZWJw
YWNrOi8vLy4vfi9yZWFjdC1kb20vbGliL0NhbGxiYWNrUXVldWUuanMiLCJ3ZWJwYWNrOi8vLy4v
fi9yZWFjdC1kb20vbGliL0RPTVByb3BlcnR5T3BlcmF0aW9ucy5qcyIsIndlYnBhY2s6Ly8vLi9+
L3JlYWN0LWRvbS9saWIvUmVhY3RET01Db21wb25lbnRGbGFncy5qcyIsIndlYnBhY2s6Ly8vLi9+
L3JlYWN0LWRvbS9saWIvUmVhY3RET01TZWxlY3QuanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1k
b20vbGliL1JlYWN0RW1wdHlDb21wb25lbnQuanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1kb20v
bGliL1JlYWN0RmVhdHVyZUZsYWdzLmpzIiwid2VicGFjazovLy8uL34vcmVhY3QtZG9tL2xpYi9S
ZWFjdEhvc3RDb21wb25lbnQuanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1kb20vbGliL1JlYWN0
SW5wdXRTZWxlY3Rpb24uanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1kb20vbGliL1JlYWN0TW91
bnQuanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1kb20vbGliL1JlYWN0Tm9kZVR5cGVzLmpzIiwi
d2VicGFjazovLy8uL34vcmVhY3QtZG9tL2xpYi9WaWV3cG9ydE1ldHJpY3MuanMiLCJ3ZWJwYWNr
Oi8vLy4vfi9yZWFjdC1kb20vbGliL2FjY3VtdWxhdGVJbnRvLmpzIiwid2VicGFjazovLy8uL34v
cmVhY3QtZG9tL2xpYi9mb3JFYWNoQWNjdW11bGF0ZWQuanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFj
dC1kb20vbGliL2dldEhvc3RDb21wb25lbnRGcm9tQ29tcG9zaXRlLmpzIiwid2VicGFjazovLy8u
L34vcmVhY3QtZG9tL2xpYi9nZXRUZXh0Q29udGVudEFjY2Vzc29yLmpzIiwid2VicGFjazovLy8u
L34vcmVhY3QtZG9tL2xpYi9pbnB1dFZhbHVlVHJhY2tpbmcuanMiLCJ3ZWJwYWNrOi8vLy4vfi9y
ZWFjdC1kb20vbGliL2luc3RhbnRpYXRlUmVhY3RDb21wb25lbnQuanMiLCJ3ZWJwYWNrOi8vLy4v
fi9yZWFjdC1kb20vbGliL2lzVGV4dElucHV0RWxlbWVudC5qcyIsIndlYnBhY2s6Ly8vLi9+L3Jl
YWN0LWRvbS9saWIvc2V0VGV4dENvbnRlbnQuanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1kb20v
bGliL3RyYXZlcnNlQWxsQ2hpbGRyZW4uanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1yZWR1eC9s
aWIvY29tcG9uZW50cy9jb25uZWN0QWR2YW5jZWQuanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1y
ZWR1eC9saWIvY29ubmVjdC93cmFwTWFwVG9Qcm9wcy5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0
LXJlZHV4L2xpYi9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LXJlZHV4L2xpYi91dGls
cy9Qcm9wVHlwZXMuanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1yZWR1eC9saWIvdXRpbHMvdmVy
aWZ5UGxhaW5PYmplY3QuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbXBvbmVudHMvVG9kb1RleHRJ
bnB1dC5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvY29uc3RhbnRzL0FjdGlvblR5cGVzLmpzIiwid2Vi
cGFjazovLy8uL3NyYy9jb25zdGFudHMvVG9kb0ZpbHRlcnMuanMiLCJ3ZWJwYWNrOi8vLy4vfi9y
ZWFjdC1zY3JpcHRzL34vcHJvY2Vzcy9icm93c2VyLmpzIiwid2VicGFjazovLy8uL34vcmVhY3Qt
c2NyaXB0cy9+L3Byb21pc2UvbGliL2NvcmUuanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC9saWIv
UmVhY3RCYXNlQ2xhc3Nlcy5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0L2xpYi9SZWFjdENvbXBv
bmVudFRyZWVIb29rLmpzIiwid2VicGFjazovLy8uL34vcmVhY3QvbGliL1JlYWN0RWxlbWVudFN5
bWJvbC5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0L2xpYi9SZWFjdE5vb3BVcGRhdGVRdWV1ZS5q
cyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0L2xpYi9jYW5EZWZpbmVQcm9wZXJ0eS5qcyIsIndlYnBh
Y2s6Ly8vLi9+L3JlZHV4L2xpYi9jb21wb3NlLmpzIiwid2VicGFjazovLy8uL34vcmVkdXgvbGli
L2NyZWF0ZVN0b3JlLmpzIiwid2VicGFjazovLy8uL34vcmVkdXgvbGliL3V0aWxzL3dhcm5pbmcu
anMiLCJ3ZWJwYWNrOi8vLy4vfi9jcmVhdGUtcmVhY3QtY2xhc3MvZmFjdG9yeS5qcyIsIndlYnBh
Y2s6Ly8vLi9+L2ZianMvbGliL2NhbWVsaXplLmpzIiwid2VicGFjazovLy8uL34vZmJqcy9saWIv
Y2FtZWxpemVTdHlsZU5hbWUuanMiLCJ3ZWJwYWNrOi8vLy4vfi9mYmpzL2xpYi9jb250YWluc05v
ZGUuanMiLCJ3ZWJwYWNrOi8vLy4vfi9mYmpzL2xpYi9jcmVhdGVBcnJheUZyb21NaXhlZC5qcyIs
IndlYnBhY2s6Ly8vLi9+L2ZianMvbGliL2NyZWF0ZU5vZGVzRnJvbU1hcmt1cC5qcyIsIndlYnBh
Y2s6Ly8vLi9+L2ZianMvbGliL2dldE1hcmt1cFdyYXAuanMiLCJ3ZWJwYWNrOi8vLy4vfi9mYmpz
L2xpYi9nZXRVbmJvdW5kZWRTY3JvbGxQb3NpdGlvbi5qcyIsIndlYnBhY2s6Ly8vLi9+L2ZianMv
bGliL2h5cGhlbmF0ZS5qcyIsIndlYnBhY2s6Ly8vLi9+L2ZianMvbGliL2h5cGhlbmF0ZVN0eWxl
TmFtZS5qcyIsIndlYnBhY2s6Ly8vLi9+L2ZianMvbGliL2lzTm9kZS5qcyIsIndlYnBhY2s6Ly8v
Li9+L2ZianMvbGliL2lzVGV4dE5vZGUuanMiLCJ3ZWJwYWNrOi8vLy4vfi9mYmpzL2xpYi9tZW1v
aXplU3RyaW5nT25seS5qcyIsIndlYnBhY2s6Ly8vLi9+L2hvaXN0LW5vbi1yZWFjdC1zdGF0aWNz
L2luZGV4LmpzIiwid2VicGFjazovLy8uL34vaW52YXJpYW50L2Jyb3dzZXIuanMiLCJ3ZWJwYWNr
Oi8vLy4vfi9sb2Rhc2gvX2Jhc2VHZXRUYWcuanMiLCJ3ZWJwYWNrOi8vLy4vfi9sb2Rhc2gvX2Zy
ZWVHbG9iYWwuanMiLCJ3ZWJwYWNrOi8vLy4vfi9sb2Rhc2gvX2dldFByb3RvdHlwZS5qcyIsIndl
YnBhY2s6Ly8vLi9+L2xvZGFzaC9fZ2V0UmF3VGFnLmpzIiwid2VicGFjazovLy8uL34vbG9kYXNo
L19vYmplY3RUb1N0cmluZy5qcyIsIndlYnBhY2s6Ly8vLi9+L2xvZGFzaC9fb3ZlckFyZy5qcyIs
IndlYnBhY2s6Ly8vLi9+L2xvZGFzaC9fcm9vdC5qcyIsIndlYnBhY2s6Ly8vLi9+L2xvZGFzaC9p
c09iamVjdExpa2UuanMiLCJ3ZWJwYWNrOi8vLy4vfi9wcm9wLXR5cGVzL2NoZWNrUHJvcFR5cGVz
LmpzIiwid2VicGFjazovLy8uL34vcHJvcC10eXBlcy9mYWN0b3J5V2l0aFRocm93aW5nU2hpbXMu
anMiLCJ3ZWJwYWNrOi8vLy4vfi9wcm9wLXR5cGVzL2ZhY3RvcnlXaXRoVHlwZUNoZWNrZXJzLmpz
Iiwid2VicGFjazovLy8uL34vcmVhY3QtZG9tL2luZGV4LmpzIiwid2VicGFjazovLy8uL34vcmVh
Y3QtZG9tL2xpYi9BUklBRE9NUHJvcGVydHlDb25maWcuanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFj
dC1kb20vbGliL0F1dG9Gb2N1c1V0aWxzLmpzIiwid2VicGFjazovLy8uL34vcmVhY3QtZG9tL2xp
Yi9CZWZvcmVJbnB1dEV2ZW50UGx1Z2luLmpzIiwid2VicGFjazovLy8uL34vcmVhY3QtZG9tL2xp
Yi9DU1NQcm9wZXJ0eU9wZXJhdGlvbnMuanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1kb20vbGli
L0NoYW5nZUV2ZW50UGx1Z2luLmpzIiwid2VicGFjazovLy8uL34vcmVhY3QtZG9tL2xpYi9EYW5n
ZXIuanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1kb20vbGliL0RlZmF1bHRFdmVudFBsdWdpbk9y
ZGVyLmpzIiwid2VicGFjazovLy8uL34vcmVhY3QtZG9tL2xpYi9FbnRlckxlYXZlRXZlbnRQbHVn
aW4uanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1kb20vbGliL0ZhbGxiYWNrQ29tcG9zaXRpb25T
dGF0ZS5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LWRvbS9saWIvSFRNTERPTVByb3BlcnR5Q29u
ZmlnLmpzIiwid2VicGFjazovLy8uL34vcmVhY3QtZG9tL2xpYi9SZWFjdENoaWxkUmVjb25jaWxl
ci5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LWRvbS9saWIvUmVhY3RDb21wb25lbnRCcm93c2Vy
RW52aXJvbm1lbnQuanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1kb20vbGliL1JlYWN0Q29tcG9z
aXRlQ29tcG9uZW50LmpzIiwid2VicGFjazovLy8uL34vcmVhY3QtZG9tL2xpYi9SZWFjdERPTS5q
cyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LWRvbS9saWIvUmVhY3RET01Db21wb25lbnQuanMiLCJ3
ZWJwYWNrOi8vLy4vfi9yZWFjdC1kb20vbGliL1JlYWN0RE9NQ29udGFpbmVySW5mby5qcyIsIndl
YnBhY2s6Ly8vLi9+L3JlYWN0LWRvbS9saWIvUmVhY3RET01FbXB0eUNvbXBvbmVudC5qcyIsIndl
YnBhY2s6Ly8vLi9+L3JlYWN0LWRvbS9saWIvUmVhY3RET01GZWF0dXJlRmxhZ3MuanMiLCJ3ZWJw
YWNrOi8vLy4vfi9yZWFjdC1kb20vbGliL1JlYWN0RE9NSURPcGVyYXRpb25zLmpzIiwid2VicGFj
azovLy8uL34vcmVhY3QtZG9tL2xpYi9SZWFjdERPTUlucHV0LmpzIiwid2VicGFjazovLy8uL34v
cmVhY3QtZG9tL2xpYi9SZWFjdERPTU9wdGlvbi5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LWRv
bS9saWIvUmVhY3RET01TZWxlY3Rpb24uanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1kb20vbGli
L1JlYWN0RE9NVGV4dENvbXBvbmVudC5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LWRvbS9saWIv
UmVhY3RET01UZXh0YXJlYS5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LWRvbS9saWIvUmVhY3RE
T01UcmVlVHJhdmVyc2FsLmpzIiwid2VicGFjazovLy8uL34vcmVhY3QtZG9tL2xpYi9SZWFjdERl
ZmF1bHRCYXRjaGluZ1N0cmF0ZWd5LmpzIiwid2VicGFjazovLy8uL34vcmVhY3QtZG9tL2xpYi9S
ZWFjdERlZmF1bHRJbmplY3Rpb24uanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1kb20vbGliL1Jl
YWN0RXZlbnRFbWl0dGVyTWl4aW4uanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1kb20vbGliL1Jl
YWN0RXZlbnRMaXN0ZW5lci5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LWRvbS9saWIvUmVhY3RJ
bmplY3Rpb24uanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1kb20vbGliL1JlYWN0TWFya3VwQ2hl
Y2tzdW0uanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1kb20vbGliL1JlYWN0TXVsdGlDaGlsZC5q
cyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LWRvbS9saWIvUmVhY3RPd25lci5qcyIsIndlYnBhY2s6
Ly8vLi9+L3JlYWN0LWRvbS9saWIvUmVhY3RQcm9wVHlwZXNTZWNyZXQuanMiLCJ3ZWJwYWNrOi8v
Ly4vfi9yZWFjdC1kb20vbGliL1JlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb24uanMiLCJ3ZWJwYWNr
Oi8vLy4vfi9yZWFjdC1kb20vbGliL1JlYWN0UmVmLmpzIiwid2VicGFjazovLy8uL34vcmVhY3Qt
ZG9tL2xpYi9SZWFjdFNlcnZlclJlbmRlcmluZ1RyYW5zYWN0aW9uLmpzIiwid2VicGFjazovLy8u
L34vcmVhY3QtZG9tL2xpYi9SZWFjdFNlcnZlclVwZGF0ZVF1ZXVlLmpzIiwid2VicGFjazovLy8u
L34vcmVhY3QtZG9tL2xpYi9SZWFjdFZlcnNpb24uanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1k
b20vbGliL1NWR0RPTVByb3BlcnR5Q29uZmlnLmpzIiwid2VicGFjazovLy8uL34vcmVhY3QtZG9t
L2xpYi9TZWxlY3RFdmVudFBsdWdpbi5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LWRvbS9saWIv
U2ltcGxlRXZlbnRQbHVnaW4uanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1kb20vbGliL1N5bnRo
ZXRpY0FuaW1hdGlvbkV2ZW50LmpzIiwid2VicGFjazovLy8uL34vcmVhY3QtZG9tL2xpYi9TeW50
aGV0aWNDbGlwYm9hcmRFdmVudC5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LWRvbS9saWIvU3lu
dGhldGljQ29tcG9zaXRpb25FdmVudC5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LWRvbS9saWIv
U3ludGhldGljRHJhZ0V2ZW50LmpzIiwid2VicGFjazovLy8uL34vcmVhY3QtZG9tL2xpYi9TeW50
aGV0aWNGb2N1c0V2ZW50LmpzIiwid2VicGFjazovLy8uL34vcmVhY3QtZG9tL2xpYi9TeW50aGV0
aWNJbnB1dEV2ZW50LmpzIiwid2VicGFjazovLy8uL34vcmVhY3QtZG9tL2xpYi9TeW50aGV0aWNL
ZXlib2FyZEV2ZW50LmpzIiwid2VicGFjazovLy8uL34vcmVhY3QtZG9tL2xpYi9TeW50aGV0aWNU
b3VjaEV2ZW50LmpzIiwid2VicGFjazovLy8uL34vcmVhY3QtZG9tL2xpYi9TeW50aGV0aWNUcmFu
c2l0aW9uRXZlbnQuanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1kb20vbGliL1N5bnRoZXRpY1do
ZWVsRXZlbnQuanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1kb20vbGliL2FkbGVyMzIuanMiLCJ3
ZWJwYWNrOi8vLy4vfi9yZWFjdC1kb20vbGliL2Rhbmdlcm91c1N0eWxlVmFsdWUuanMiLCJ3ZWJw
YWNrOi8vLy4vfi9yZWFjdC1kb20vbGliL2ZpbmRET01Ob2RlLmpzIiwid2VicGFjazovLy8uL34v
cmVhY3QtZG9tL2xpYi9mbGF0dGVuQ2hpbGRyZW4uanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1k
b20vbGliL2dldEV2ZW50S2V5LmpzIiwid2VicGFjazovLy8uL34vcmVhY3QtZG9tL2xpYi9nZXRJ
dGVyYXRvckZuLmpzIiwid2VicGFjazovLy8uL34vcmVhY3QtZG9tL2xpYi9nZXROb2RlRm9yQ2hh
cmFjdGVyT2Zmc2V0LmpzIiwid2VicGFjazovLy8uL34vcmVhY3QtZG9tL2xpYi9nZXRWZW5kb3JQ
cmVmaXhlZEV2ZW50TmFtZS5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LWRvbS9saWIvcXVvdGVB
dHRyaWJ1dGVWYWx1ZUZvckJyb3dzZXIuanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1kb20vbGli
L3JlbmRlclN1YnRyZWVJbnRvQ29udGFpbmVyLmpzIiwid2VicGFjazovLy8uL34vcmVhY3QtcmVk
dXgvbGliL2NvbXBvbmVudHMvUHJvdmlkZXIuanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1yZWR1
eC9saWIvY29ubmVjdC9jb25uZWN0LmpzIiwid2VicGFjazovLy8uL34vcmVhY3QtcmVkdXgvbGli
L2Nvbm5lY3QvbWFwRGlzcGF0Y2hUb1Byb3BzLmpzIiwid2VicGFjazovLy8uL34vcmVhY3QtcmVk
dXgvbGliL2Nvbm5lY3QvbWFwU3RhdGVUb1Byb3BzLmpzIiwid2VicGFjazovLy8uL34vcmVhY3Qt
cmVkdXgvbGliL2Nvbm5lY3QvbWVyZ2VQcm9wcy5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LXJl
ZHV4L2xpYi9jb25uZWN0L3NlbGVjdG9yRmFjdG9yeS5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0
LXJlZHV4L2xpYi9jb25uZWN0L3ZlcmlmeVN1YnNlbGVjdG9ycy5qcyIsIndlYnBhY2s6Ly8vLi9+
L3JlYWN0LXJlZHV4L2xpYi91dGlscy9TdWJzY3JpcHRpb24uanMiLCJ3ZWJwYWNrOi8vLy4vfi9y
ZWFjdC1yZWR1eC9saWIvdXRpbHMvc2hhbGxvd0VxdWFsLmpzIiwid2VicGFjazovLy8uL34vcmVh
Y3Qtc2NyaXB0cy9jb25maWcvcG9seWZpbGxzLmpzIiwid2VicGFjazovLy8uL34vcmVhY3Qtc2Ny
aXB0cy9+L2FzYXAvYnJvd3Nlci1yYXcuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2FjdGlvbnMvaW5k
ZXguanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbXBvbmVudHMvRm9vdGVyLmpzIiwid2VicGFjazov
Ly8uL3NyYy9jb21wb25lbnRzL0hlYWRlci5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50
cy9NYWluU2VjdGlvbi5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy9Ub2RvSXRlbS5q
cyIsIndlYnBhY2s6Ly8vLi9zcmMvY29udGFpbmVycy9BcHAuanMiLCJ3ZWJwYWNrOi8vLy4vc3Jj
L2luZGV4LmpzIiwid2VicGFjazovLy8uL3NyYy9yZWR1Y2Vycy9pbmRleC5qcyIsIndlYnBhY2s6
Ly8vLi9zcmMvcmVkdWNlcnMvdG9kb3MuanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1zY3JpcHRz
L34vb2JqZWN0LWFzc2lnbi9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LXNjcmlwdHMv
fi9wcm9taXNlL2xpYi9lczYtZXh0ZW5zaW9ucy5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LXNj
cmlwdHMvfi9wcm9taXNlL2xpYi9yZWplY3Rpb24tdHJhY2tpbmcuanMiLCJ3ZWJwYWNrOi8vLyh3
ZWJwYWNrKS9idWlsZGluL21vZHVsZS5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LXNjcmlwdHMv
fi93aGF0d2ctZmV0Y2gvZmV0Y2guanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC9saWIvUmVhY3RD
aGlsZHJlbi5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0L2xpYi9SZWFjdERPTUZhY3Rvcmllcy5q
cyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0L2xpYi9SZWFjdFByb3BUeXBlcy5qcyIsIndlYnBhY2s6
Ly8vLi9+L3JlYWN0L2xpYi9jcmVhdGVDbGFzcy5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0L2xp
Yi9nZXROZXh0RGVidWdJRC5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0L2xpYi9sb3dQcmlvcml0
eVdhcm5pbmcuanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC9saWIvb25seUNoaWxkLmpzIiwid2Vi
cGFjazovLy8uL34vcmVhY3QvbGliL3RyYXZlcnNlQWxsQ2hpbGRyZW4uanMiLCJ3ZWJwYWNrOi8v
Ly4vfi9yZWR1eC9saWIvYXBwbHlNaWRkbGV3YXJlLmpzIiwid2VicGFjazovLy8uL34vcmVkdXgv
bGliL2JpbmRBY3Rpb25DcmVhdG9ycy5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlZHV4L2xpYi9jb21i
aW5lUmVkdWNlcnMuanMiLCJ3ZWJwYWNrOi8vLy4vfi9zeW1ib2wtb2JzZXJ2YWJsZS9pbmRleC5q
cyIsIndlYnBhY2s6Ly8vLi9+L3N5bWJvbC1vYnNlcnZhYmxlL2xpYi9pbmRleC5qcyIsIndlYnBh
Y2s6Ly8vLi9+L3N5bWJvbC1vYnNlcnZhYmxlL2xpYi9wb255ZmlsbC5qcyIsIndlYnBhY2s6Ly8v
Li9+L3JlYWN0L2xpYi9Qb29sZWRDbGFzcy5qcyJdLCJuYW1lcyI6WyJtb2R1bGVzIiwiX193ZWJw
YWNrX3JlcXVpcmVfXyIsIm1vZHVsZUlkIiwiaW5zdGFsbGVkTW9kdWxlcyIsImV4cG9ydHMiLCJt
b2R1bGUiLCJpZCIsImxvYWRlZCIsImNhbGwiLCJtIiwiYyIsInAiLCJpIiwiT2JqZWN0IiwicHJv
dG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJfbSIsImFyZ3MiLCJzbGljZSIsImZuIiwiYSIsImIi
LCJhcHBseSIsInRoaXMiLCJjb25jYXQiLCJpbnZhcmlhbnQiLCJjb25kaXRpb24iLCJmb3JtYXQi
LCJkIiwiZSIsImYiLCJ2YWxpZGF0ZUZvcm1hdCIsImVycm9yIiwidW5kZWZpbmVkIiwiRXJyb3Ii
LCJhcmdJbmRleCIsInJlcGxhY2UiLCJuYW1lIiwiZnJhbWVzVG9Qb3AiLCJlbXB0eUZ1bmN0aW9u
Iiwid2FybmluZyIsInJlYWN0UHJvZEludmFyaWFudCIsImNvZGUiLCJhcmdDb3VudCIsImFyZ3Vt
ZW50cyIsImxlbmd0aCIsIm1lc3NhZ2UiLCJhcmdJZHgiLCJlbmNvZGVVUklDb21wb25lbnQiLCJ0
b09iamVjdCIsInZhbCIsIlR5cGVFcnJvciIsInNob3VsZFVzZU5hdGl2ZSIsImFzc2lnbiIsInRl
c3QxIiwiU3RyaW5nIiwiZ2V0T3duUHJvcGVydHlOYW1lcyIsInRlc3QyIiwiZnJvbUNoYXJDb2Rl
Iiwib3JkZXIyIiwibWFwIiwibiIsImpvaW4iLCJ0ZXN0MyIsInNwbGl0IiwiZm9yRWFjaCIsImxl
dHRlciIsImtleXMiLCJlcnIiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJwcm9wSXNFbnVtZXJh
YmxlIiwicHJvcGVydHlJc0VudW1lcmFibGUiLCJ0YXJnZXQiLCJzb3VyY2UiLCJmcm9tIiwic3lt
Ym9scyIsInRvIiwicyIsImtleSIsInNob3VsZFByZWNhY2hlTm9kZSIsIm5vZGUiLCJub2RlSUQi
LCJub2RlVHlwZSIsImdldEF0dHJpYnV0ZSIsIkFUVFJfTkFNRSIsIm5vZGVWYWx1ZSIsImdldFJl
bmRlcmVkSG9zdE9yVGV4dEZyb21Db21wb25lbnQiLCJjb21wb25lbnQiLCJyZW5kZXJlZCIsIl9y
ZW5kZXJlZENvbXBvbmVudCIsInByZWNhY2hlTm9kZSIsImluc3QiLCJob3N0SW5zdCIsIl9ob3N0
Tm9kZSIsImludGVybmFsSW5zdGFuY2VLZXkiLCJ1bmNhY2hlTm9kZSIsInByZWNhY2hlQ2hpbGRO
b2RlcyIsIl9mbGFncyIsIkZsYWdzIiwiaGFzQ2FjaGVkQ2hpbGROb2RlcyIsImNoaWxkcmVuIiwi
X3JlbmRlcmVkQ2hpbGRyZW4iLCJjaGlsZE5vZGUiLCJmaXJzdENoaWxkIiwib3V0ZXIiLCJjaGls
ZEluc3QiLCJjaGlsZElEIiwiX2RvbUlEIiwibmV4dFNpYmxpbmciLCJfcHJvZEludmFyaWFudCIs
ImdldENsb3Nlc3RJbnN0YW5jZUZyb21Ob2RlIiwicGFyZW50cyIsInB1c2giLCJwYXJlbnROb2Rl
IiwiY2xvc2VzdCIsInBvcCIsImdldEluc3RhbmNlRnJvbU5vZGUiLCJnZXROb2RlRnJvbUluc3Rh
bmNlIiwiX2hvc3RQYXJlbnQiLCJET01Qcm9wZXJ0eSIsIlJlYWN0RE9NQ29tcG9uZW50RmxhZ3Mi
LCJJRF9BVFRSSUJVVEVfTkFNRSIsIk1hdGgiLCJyYW5kb20iLCJ0b1N0cmluZyIsIlJlYWN0RE9N
Q29tcG9uZW50VHJlZSIsImNhblVzZURPTSIsIndpbmRvdyIsImRvY3VtZW50IiwiY3JlYXRlRWxl
bWVudCIsIkV4ZWN1dGlvbkVudmlyb25tZW50IiwiY2FuVXNlV29ya2VycyIsIldvcmtlciIsImNh
blVzZUV2ZW50TGlzdGVuZXJzIiwiYWRkRXZlbnRMaXN0ZW5lciIsImF0dGFjaEV2ZW50IiwiY2Fu
VXNlVmlld3BvcnQiLCJzY3JlZW4iLCJpc0luV29ya2VyIiwibWFrZUVtcHR5RnVuY3Rpb24iLCJh
cmciLCJ0aGF0UmV0dXJucyIsInRoYXRSZXR1cm5zRmFsc2UiLCJ0aGF0UmV0dXJuc1RydWUiLCJ0
aGF0UmV0dXJuc051bGwiLCJ0aGF0UmV0dXJuc1RoaXMiLCJ0aGF0UmV0dXJuc0FyZ3VtZW50Iiwi
ZGVidWdUb29sIiwiZW5zdXJlSW5qZWN0ZWQiLCJSZWFjdFVwZGF0ZXMiLCJSZWFjdFJlY29uY2ls
ZVRyYW5zYWN0aW9uIiwiYmF0Y2hpbmdTdHJhdGVneSIsIlJlYWN0VXBkYXRlc0ZsdXNoVHJhbnNh
Y3Rpb24iLCJyZWluaXRpYWxpemVUcmFuc2FjdGlvbiIsImRpcnR5Q29tcG9uZW50c0xlbmd0aCIs
ImNhbGxiYWNrUXVldWUiLCJDYWxsYmFja1F1ZXVlIiwiZ2V0UG9vbGVkIiwicmVjb25jaWxlVHJh
bnNhY3Rpb24iLCJiYXRjaGVkVXBkYXRlcyIsImNhbGxiYWNrIiwibW91bnRPcmRlckNvbXBhcmF0
b3IiLCJjMSIsImMyIiwiX21vdW50T3JkZXIiLCJydW5CYXRjaGVkVXBkYXRlcyIsInRyYW5zYWN0
aW9uIiwibGVuIiwiZGlydHlDb21wb25lbnRzIiwic29ydCIsInVwZGF0ZUJhdGNoTnVtYmVyIiwi
Y2FsbGJhY2tzIiwiX3BlbmRpbmdDYWxsYmFja3MiLCJtYXJrZXJOYW1lIiwiUmVhY3RGZWF0dXJl
RmxhZ3MiLCJsb2dUb3BMZXZlbFJlbmRlcnMiLCJuYW1lZENvbXBvbmVudCIsIl9jdXJyZW50RWxl
bWVudCIsInR5cGUiLCJpc1JlYWN0VG9wTGV2ZWxXcmFwcGVyIiwiZ2V0TmFtZSIsImNvbnNvbGUi
LCJ0aW1lIiwiUmVhY3RSZWNvbmNpbGVyIiwicGVyZm9ybVVwZGF0ZUlmTmVjZXNzYXJ5IiwidGlt
ZUVuZCIsImoiLCJlbnF1ZXVlIiwiZ2V0UHVibGljSW5zdGFuY2UiLCJlbnF1ZXVlVXBkYXRlIiwi
aXNCYXRjaGluZ1VwZGF0ZXMiLCJfdXBkYXRlQmF0Y2hOdW1iZXIiLCJhc2FwIiwiY29udGV4dCIs
ImFzYXBDYWxsYmFja1F1ZXVlIiwiYXNhcEVucXVldWVkIiwiX2Fzc2lnbiIsIlBvb2xlZENsYXNz
IiwiVHJhbnNhY3Rpb24iLCJORVNURURfVVBEQVRFUyIsImluaXRpYWxpemUiLCJjbG9zZSIsInNw
bGljZSIsImZsdXNoQmF0Y2hlZFVwZGF0ZXMiLCJVUERBVEVfUVVFVUVJTkciLCJyZXNldCIsIm5v
dGlmeUFsbCIsIlRSQU5TQUNUSU9OX1dSQVBQRVJTIiwiZ2V0VHJhbnNhY3Rpb25XcmFwcGVycyIs
ImRlc3RydWN0b3IiLCJyZWxlYXNlIiwicGVyZm9ybSIsIm1ldGhvZCIsInNjb3BlIiwiYWRkUG9v
bGluZ1RvIiwicXVldWUiLCJSZWFjdFVwZGF0ZXNJbmplY3Rpb24iLCJpbmplY3RSZWNvbmNpbGVU
cmFuc2FjdGlvbiIsIlJlY29uY2lsZVRyYW5zYWN0aW9uIiwiaW5qZWN0QmF0Y2hpbmdTdHJhdGVn
eSIsIl9iYXRjaGluZ1N0cmF0ZWd5IiwiaW5qZWN0aW9uIiwiU3ludGhldGljRXZlbnQiLCJkaXNw
YXRjaENvbmZpZyIsInRhcmdldEluc3QiLCJuYXRpdmVFdmVudCIsIm5hdGl2ZUV2ZW50VGFyZ2V0
IiwiX3RhcmdldEluc3QiLCJJbnRlcmZhY2UiLCJjb25zdHJ1Y3RvciIsInByb3BOYW1lIiwibm9y
bWFsaXplIiwiZGVmYXVsdFByZXZlbnRlZCIsInJldHVyblZhbHVlIiwiaXNEZWZhdWx0UHJldmVu
dGVkIiwiaXNQcm9wYWdhdGlvblN0b3BwZWQiLCJzaG91bGRCZVJlbGVhc2VkUHJvcGVydGllcyIs
IlByb3h5IiwiRXZlbnRJbnRlcmZhY2UiLCJjdXJyZW50VGFyZ2V0IiwiZXZlbnRQaGFzZSIsImJ1
YmJsZXMiLCJjYW5jZWxhYmxlIiwidGltZVN0YW1wIiwiZXZlbnQiLCJEYXRlIiwibm93IiwiaXNU
cnVzdGVkIiwicHJldmVudERlZmF1bHQiLCJzdG9wUHJvcGFnYXRpb24iLCJjYW5jZWxCdWJibGUi
LCJwZXJzaXN0IiwiaXNQZXJzaXN0ZW50IiwiYXVnbWVudENsYXNzIiwiQ2xhc3MiLCJTdXBlciIs
IkUiLCJmb3VyQXJndW1lbnRQb29sZXIiLCJSZWFjdEN1cnJlbnRPd25lciIsImN1cnJlbnQiLCJp
bnNlcnRUcmVlQ2hpbGRyZW4iLCJ0cmVlIiwiZW5hYmxlTGF6eSIsImluc2VydFRyZWVCZWZvcmUi
LCJodG1sIiwic2V0SW5uZXJIVE1MIiwidGV4dCIsInNldFRleHRDb250ZW50IiwicmVwbGFjZUNo
aWxkV2l0aFRyZWUiLCJvbGROb2RlIiwibmV3VHJlZSIsInJlcGxhY2VDaGlsZCIsInF1ZXVlQ2hp
bGQiLCJwYXJlbnRUcmVlIiwiY2hpbGRUcmVlIiwiYXBwZW5kQ2hpbGQiLCJxdWV1ZUhUTUwiLCJx
dWV1ZVRleHQiLCJub2RlTmFtZSIsIkRPTUxhenlUcmVlIiwiRE9NTmFtZXNwYWNlcyIsImNyZWF0
ZU1pY3Jvc29mdFVuc2FmZUxvY2FsRnVuY3Rpb24iLCJFTEVNRU5UX05PREVfVFlQRSIsIkRPQ1VN
RU5UX0ZSQUdNRU5UX05PREVfVFlQRSIsImRvY3VtZW50TW9kZSIsIm5hdmlnYXRvciIsInVzZXJB
Z2VudCIsInRlc3QiLCJyZWZlcmVuY2VOb2RlIiwidG9Mb3dlckNhc2UiLCJuYW1lc3BhY2VVUkki
LCJpbnNlcnRCZWZvcmUiLCJjaGVja01hc2siLCJ2YWx1ZSIsImJpdG1hc2siLCJET01Qcm9wZXJ0
eUluamVjdGlvbiIsIk1VU1RfVVNFX1BST1BFUlRZIiwiSEFTX0JPT0xFQU5fVkFMVUUiLCJIQVNf
TlVNRVJJQ19WQUxVRSIsIkhBU19QT1NJVElWRV9OVU1FUklDX1ZBTFVFIiwiSEFTX09WRVJMT0FE
RURfQk9PTEVBTl9WQUxVRSIsImluamVjdERPTVByb3BlcnR5Q29uZmlnIiwiZG9tUHJvcGVydHlD
b25maWciLCJJbmplY3Rpb24iLCJQcm9wZXJ0aWVzIiwiRE9NQXR0cmlidXRlTmFtZXNwYWNlcyIs
IkRPTUF0dHJpYnV0ZU5hbWVzIiwiRE9NUHJvcGVydHlOYW1lcyIsIkRPTU11dGF0aW9uTWV0aG9k
cyIsImlzQ3VzdG9tQXR0cmlidXRlIiwiX2lzQ3VzdG9tQXR0cmlidXRlRnVuY3Rpb25zIiwicHJv
cGVydGllcyIsImxvd2VyQ2FzZWQiLCJwcm9wQ29uZmlnIiwicHJvcGVydHlJbmZvIiwiYXR0cmli
dXRlTmFtZSIsImF0dHJpYnV0ZU5hbWVzcGFjZSIsInByb3BlcnR5TmFtZSIsIm11dGF0aW9uTWV0
aG9kIiwibXVzdFVzZVByb3BlcnR5IiwiaGFzQm9vbGVhblZhbHVlIiwiaGFzTnVtZXJpY1ZhbHVl
IiwiaGFzUG9zaXRpdmVOdW1lcmljVmFsdWUiLCJoYXNPdmVybG9hZGVkQm9vbGVhblZhbHVlIiwi
QVRUUklCVVRFX05BTUVfU1RBUlRfQ0hBUiIsIlJPT1RfQVRUUklCVVRFX05BTUUiLCJBVFRSSUJV
VEVfTkFNRV9DSEFSIiwiZ2V0UG9zc2libGVTdGFuZGFyZE5hbWUiLCJpc0N1c3RvbUF0dHJpYnV0
ZUZuIiwiYXR0YWNoUmVmcyIsIlJlYWN0UmVmIiwibW91bnRDb21wb25lbnQiLCJpbnRlcm5hbElu
c3RhbmNlIiwiaG9zdFBhcmVudCIsImhvc3RDb250YWluZXJJbmZvIiwicGFyZW50RGVidWdJRCIs
Im1hcmt1cCIsInJlZiIsImdldFJlYWN0TW91bnRSZWFkeSIsImdldEhvc3ROb2RlIiwidW5tb3Vu
dENvbXBvbmVudCIsInNhZmVseSIsImRldGFjaFJlZnMiLCJyZWNlaXZlQ29tcG9uZW50IiwibmV4
dEVsZW1lbnQiLCJwcmV2RWxlbWVudCIsIl9jb250ZXh0IiwicmVmc0NoYW5nZWQiLCJzaG91bGRV
cGRhdGVSZWZzIiwiUmVhY3RCYXNlQ2xhc3NlcyIsIlJlYWN0Q2hpbGRyZW4iLCJSZWFjdERPTUZh
Y3RvcmllcyIsIlJlYWN0RWxlbWVudCIsIlJlYWN0UHJvcFR5cGVzIiwiUmVhY3RWZXJzaW9uIiwi
Y3JlYXRlUmVhY3RDbGFzcyIsIm9ubHlDaGlsZCIsImNyZWF0ZUZhY3RvcnkiLCJjbG9uZUVsZW1l
bnQiLCJfX3NwcmVhZCIsImNyZWF0ZU1peGluIiwibWl4aW4iLCJSZWFjdCIsIkNoaWxkcmVuIiwi
Y291bnQiLCJ0b0FycmF5Iiwib25seSIsIkNvbXBvbmVudCIsIlB1cmVDb21wb25lbnQiLCJpc1Zh
bGlkRWxlbWVudCIsIlByb3BUeXBlcyIsImNyZWF0ZUNsYXNzIiwiRE9NIiwidmVyc2lvbiIsImhh
c1ZhbGlkUmVmIiwiY29uZmlnIiwiaGFzVmFsaWRLZXkiLCJSRUFDVF9FTEVNRU5UX1RZUEUiLCJS
RVNFUlZFRF9QUk9QUyIsIl9fc2VsZiIsIl9fc291cmNlIiwic2VsZiIsIm93bmVyIiwicHJvcHMi
LCJlbGVtZW50IiwiJCR0eXBlb2YiLCJfb3duZXIiLCJjaGlsZHJlbkxlbmd0aCIsImNoaWxkQXJy
YXkiLCJBcnJheSIsImRlZmF1bHRQcm9wcyIsImZhY3RvcnkiLCJiaW5kIiwiY2xvbmVBbmRSZXBs
YWNlS2V5Iiwib2xkRWxlbWVudCIsIm5ld0tleSIsIm5ld0VsZW1lbnQiLCJfc2VsZiIsIl9zb3Vy
Y2UiLCJvYmplY3QiLCJpc0ludGVyYWN0aXZlIiwidGFnIiwic2hvdWxkUHJldmVudE1vdXNlRXZl
bnQiLCJkaXNhYmxlZCIsIkV2ZW50UGx1Z2luUmVnaXN0cnkiLCJFdmVudFBsdWdpblV0aWxzIiwi
UmVhY3RFcnJvclV0aWxzIiwiYWNjdW11bGF0ZUludG8iLCJmb3JFYWNoQWNjdW11bGF0ZWQiLCJs
aXN0ZW5lckJhbmsiLCJldmVudFF1ZXVlIiwiZXhlY3V0ZURpc3BhdGNoZXNBbmRSZWxlYXNlIiwi
c2ltdWxhdGVkIiwiZXhlY3V0ZURpc3BhdGNoZXNJbk9yZGVyIiwiZXhlY3V0ZURpc3BhdGNoZXNB
bmRSZWxlYXNlU2ltdWxhdGVkIiwiZXhlY3V0ZURpc3BhdGNoZXNBbmRSZWxlYXNlVG9wTGV2ZWwi
LCJnZXREaWN0aW9uYXJ5S2V5IiwiX3Jvb3ROb2RlSUQiLCJFdmVudFBsdWdpbkh1YiIsImluamVj
dEV2ZW50UGx1Z2luT3JkZXIiLCJpbmplY3RFdmVudFBsdWdpbnNCeU5hbWUiLCJwdXRMaXN0ZW5l
ciIsInJlZ2lzdHJhdGlvbk5hbWUiLCJsaXN0ZW5lciIsImJhbmtGb3JSZWdpc3RyYXRpb25OYW1l
IiwiUGx1Z2luTW9kdWxlIiwicmVnaXN0cmF0aW9uTmFtZU1vZHVsZXMiLCJkaWRQdXRMaXN0ZW5l
ciIsImdldExpc3RlbmVyIiwiZGVsZXRlTGlzdGVuZXIiLCJ3aWxsRGVsZXRlTGlzdGVuZXIiLCJk
ZWxldGVBbGxMaXN0ZW5lcnMiLCJleHRyYWN0RXZlbnRzIiwidG9wTGV2ZWxUeXBlIiwiZXZlbnRz
IiwicGx1Z2lucyIsInBvc3NpYmxlUGx1Z2luIiwiZXh0cmFjdGVkRXZlbnRzIiwiZW5xdWV1ZUV2
ZW50cyIsInByb2Nlc3NFdmVudFF1ZXVlIiwicHJvY2Vzc2luZ0V2ZW50UXVldWUiLCJyZXRocm93
Q2F1Z2h0RXJyb3IiLCJfX3B1cmdlIiwiX19nZXRMaXN0ZW5lckJhbmsiLCJsaXN0ZW5lckF0UGhh
c2UiLCJwcm9wYWdhdGlvblBoYXNlIiwicGhhc2VkUmVnaXN0cmF0aW9uTmFtZXMiLCJhY2N1bXVs
YXRlRGlyZWN0aW9uYWxEaXNwYXRjaGVzIiwicGhhc2UiLCJfZGlzcGF0Y2hMaXN0ZW5lcnMiLCJf
ZGlzcGF0Y2hJbnN0YW5jZXMiLCJhY2N1bXVsYXRlVHdvUGhhc2VEaXNwYXRjaGVzU2luZ2xlIiwi
dHJhdmVyc2VUd29QaGFzZSIsImFjY3VtdWxhdGVUd29QaGFzZURpc3BhdGNoZXNTaW5nbGVTa2lw
VGFyZ2V0IiwicGFyZW50SW5zdCIsImdldFBhcmVudEluc3RhbmNlIiwiYWNjdW11bGF0ZURpc3Bh
dGNoZXMiLCJpZ25vcmVkRGlyZWN0aW9uIiwiYWNjdW11bGF0ZURpcmVjdERpc3BhdGNoZXNTaW5n
bGUiLCJhY2N1bXVsYXRlVHdvUGhhc2VEaXNwYXRjaGVzIiwiYWNjdW11bGF0ZVR3b1BoYXNlRGlz
cGF0Y2hlc1NraXBUYXJnZXQiLCJhY2N1bXVsYXRlRW50ZXJMZWF2ZURpc3BhdGNoZXMiLCJsZWF2
ZSIsImVudGVyIiwidHJhdmVyc2VFbnRlckxlYXZlIiwiYWNjdW11bGF0ZURpcmVjdERpc3BhdGNo
ZXMiLCJFdmVudFByb3BhZ2F0b3JzIiwiUmVhY3RJbnN0YW5jZU1hcCIsInJlbW92ZSIsIl9yZWFj
dEludGVybmFsSW5zdGFuY2UiLCJnZXQiLCJoYXMiLCJzZXQiLCJTeW50aGV0aWNVSUV2ZW50Iiwi
ZGlzcGF0Y2hNYXJrZXIiLCJnZXRFdmVudFRhcmdldCIsIlVJRXZlbnRJbnRlcmZhY2UiLCJ2aWV3
IiwiZG9jIiwib3duZXJEb2N1bWVudCIsImRlZmF1bHRWaWV3IiwicGFyZW50V2luZG93IiwiZGV0
YWlsIiwiZW1wdHlPYmplY3QiLCJnZXRMaXN0ZW5pbmdGb3JEb2N1bWVudCIsIm1vdW50QXQiLCJ0
b3BMaXN0ZW5lcnNJREtleSIsInJlYWN0VG9wTGlzdGVuZXJzQ291bnRlciIsImFscmVhZHlMaXN0
ZW5pbmdUbyIsImhhc0V2ZW50UGFnZVhZIiwiUmVhY3RFdmVudEVtaXR0ZXJNaXhpbiIsIlZpZXdw
b3J0TWV0cmljcyIsImdldFZlbmRvclByZWZpeGVkRXZlbnROYW1lIiwiaXNFdmVudFN1cHBvcnRl
ZCIsImlzTW9uaXRvcmluZ1Njcm9sbFZhbHVlIiwidG9wRXZlbnRNYXBwaW5nIiwidG9wQWJvcnQi
LCJ0b3BBbmltYXRpb25FbmQiLCJ0b3BBbmltYXRpb25JdGVyYXRpb24iLCJ0b3BBbmltYXRpb25T
dGFydCIsInRvcEJsdXIiLCJ0b3BDYW5QbGF5IiwidG9wQ2FuUGxheVRocm91Z2giLCJ0b3BDaGFu
Z2UiLCJ0b3BDbGljayIsInRvcENvbXBvc2l0aW9uRW5kIiwidG9wQ29tcG9zaXRpb25TdGFydCIs
InRvcENvbXBvc2l0aW9uVXBkYXRlIiwidG9wQ29udGV4dE1lbnUiLCJ0b3BDb3B5IiwidG9wQ3V0
IiwidG9wRG91YmxlQ2xpY2siLCJ0b3BEcmFnIiwidG9wRHJhZ0VuZCIsInRvcERyYWdFbnRlciIs
InRvcERyYWdFeGl0IiwidG9wRHJhZ0xlYXZlIiwidG9wRHJhZ092ZXIiLCJ0b3BEcmFnU3RhcnQi
LCJ0b3BEcm9wIiwidG9wRHVyYXRpb25DaGFuZ2UiLCJ0b3BFbXB0aWVkIiwidG9wRW5jcnlwdGVk
IiwidG9wRW5kZWQiLCJ0b3BFcnJvciIsInRvcEZvY3VzIiwidG9wSW5wdXQiLCJ0b3BLZXlEb3du
IiwidG9wS2V5UHJlc3MiLCJ0b3BLZXlVcCIsInRvcExvYWRlZERhdGEiLCJ0b3BMb2FkZWRNZXRh
ZGF0YSIsInRvcExvYWRTdGFydCIsInRvcE1vdXNlRG93biIsInRvcE1vdXNlTW92ZSIsInRvcE1v
dXNlT3V0IiwidG9wTW91c2VPdmVyIiwidG9wTW91c2VVcCIsInRvcFBhc3RlIiwidG9wUGF1c2Ui
LCJ0b3BQbGF5IiwidG9wUGxheWluZyIsInRvcFByb2dyZXNzIiwidG9wUmF0ZUNoYW5nZSIsInRv
cFNjcm9sbCIsInRvcFNlZWtlZCIsInRvcFNlZWtpbmciLCJ0b3BTZWxlY3Rpb25DaGFuZ2UiLCJ0
b3BTdGFsbGVkIiwidG9wU3VzcGVuZCIsInRvcFRleHRJbnB1dCIsInRvcFRpbWVVcGRhdGUiLCJ0
b3BUb3VjaENhbmNlbCIsInRvcFRvdWNoRW5kIiwidG9wVG91Y2hNb3ZlIiwidG9wVG91Y2hTdGFy
dCIsInRvcFRyYW5zaXRpb25FbmQiLCJ0b3BWb2x1bWVDaGFuZ2UiLCJ0b3BXYWl0aW5nIiwidG9w
V2hlZWwiLCJSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIiLCJSZWFjdEV2ZW50TGlzdGVuZXIiLCJp
bmplY3RSZWFjdEV2ZW50TGlzdGVuZXIiLCJzZXRIYW5kbGVUb3BMZXZlbCIsImhhbmRsZVRvcExl
dmVsIiwic2V0RW5hYmxlZCIsImVuYWJsZWQiLCJpc0VuYWJsZWQiLCJsaXN0ZW5UbyIsImNvbnRl
bnREb2N1bWVudEhhbmRsZSIsImlzTGlzdGVuaW5nIiwiZGVwZW5kZW5jaWVzIiwicmVnaXN0cmF0
aW9uTmFtZURlcGVuZGVuY2llcyIsImRlcGVuZGVuY3kiLCJ0cmFwQnViYmxlZEV2ZW50IiwidHJh
cENhcHR1cmVkRXZlbnQiLCJXSU5ET1dfSEFORExFIiwiaGFuZGxlckJhc2VOYW1lIiwiaGFuZGxl
Iiwic3VwcG9ydHNFdmVudFBhZ2VYWSIsImNyZWF0ZUV2ZW50IiwiZXYiLCJlbnN1cmVTY3JvbGxW
YWx1ZU1vbml0b3JpbmciLCJyZWZyZXNoIiwicmVmcmVzaFNjcm9sbFZhbHVlcyIsIm1vbml0b3JT
Y3JvbGxWYWx1ZSIsIlN5bnRoZXRpY01vdXNlRXZlbnQiLCJnZXRFdmVudE1vZGlmaWVyU3RhdGUi
LCJNb3VzZUV2ZW50SW50ZXJmYWNlIiwic2NyZWVuWCIsInNjcmVlblkiLCJjbGllbnRYIiwiY2xp
ZW50WSIsImN0cmxLZXkiLCJzaGlmdEtleSIsImFsdEtleSIsIm1ldGFLZXkiLCJnZXRNb2RpZmll
clN0YXRlIiwiYnV0dG9uIiwiYnV0dG9ucyIsInJlbGF0ZWRUYXJnZXQiLCJmcm9tRWxlbWVudCIs
InNyY0VsZW1lbnQiLCJ0b0VsZW1lbnQiLCJwYWdlWCIsImN1cnJlbnRTY3JvbGxMZWZ0IiwicGFn
ZVkiLCJjdXJyZW50U2Nyb2xsVG9wIiwiT0JTRVJWRURfRVJST1IiLCJUcmFuc2FjdGlvbkltcGwi
LCJ0cmFuc2FjdGlvbldyYXBwZXJzIiwid3JhcHBlckluaXREYXRhIiwiX2lzSW5UcmFuc2FjdGlv
biIsImlzSW5UcmFuc2FjdGlvbiIsImVycm9yVGhyb3duIiwicmV0IiwiaW5pdGlhbGl6ZUFsbCIs
ImNsb3NlQWxsIiwic3RhcnRJbmRleCIsIndyYXBwZXIiLCJpbml0RGF0YSIsImVzY2FwZUh0bWwi
LCJzdHJpbmciLCJzdHIiLCJtYXRjaCIsIm1hdGNoSHRtbFJlZ0V4cCIsImV4ZWMiLCJlc2NhcGUi
LCJpbmRleCIsImxhc3RJbmRleCIsImNoYXJDb2RlQXQiLCJzdWJzdHJpbmciLCJlc2NhcGVUZXh0
Q29udGVudEZvckJyb3dzZXIiLCJyZXVzYWJsZVNWR0NvbnRhaW5lciIsIldISVRFU1BBQ0VfVEVT
VCIsIk5PTlZJU0lCTEVfVEVTVCIsInN2ZyIsImlubmVySFRNTCIsInN2Z05vZGUiLCJ0ZXN0RWxl
bWVudCIsInRleHROb2RlIiwiZGF0YSIsInJlbW92ZUNoaWxkIiwiZGVsZXRlRGF0YSIsIl9pbnRl
cm9wUmVxdWlyZURlZmF1bHQiLCJvYmoiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsImNvbXBvc2Ui
LCJhcHBseU1pZGRsZXdhcmUiLCJiaW5kQWN0aW9uQ3JlYXRvcnMiLCJjb21iaW5lUmVkdWNlcnMi
LCJjcmVhdGVTdG9yZSIsIl9jcmVhdGVTdG9yZSIsIl9jcmVhdGVTdG9yZTIiLCJfY29tYmluZVJl
ZHVjZXJzIiwiX2NvbWJpbmVSZWR1Y2VyczIiLCJfYmluZEFjdGlvbkNyZWF0b3JzIiwiX2JpbmRB
Y3Rpb25DcmVhdG9yczIiLCJfYXBwbHlNaWRkbGV3YXJlIiwiX2FwcGx5TWlkZGxld2FyZTIiLCJf
Y29tcG9zZSIsIl9jb21wb3NlMiIsIl93YXJuaW5nIiwiX19XRUJQQUNLX0FNRF9ERUZJTkVfQVJS
QVlfXyIsIl9fV0VCUEFDS19BTURfREVGSU5FX1JFU1VMVF9fIiwiY2xhc3NOYW1lcyIsImNsYXNz
ZXMiLCJhcmdUeXBlIiwiaXNBcnJheSIsImhhc093biIsImlzIiwieCIsInkiLCJzaGFsbG93RXF1
YWwiLCJvYmpBIiwib2JqQiIsImtleXNBIiwia2V5c0IiLCJpc1BsYWluT2JqZWN0IiwiaXNPYmpl
Y3RMaWtlIiwiYmFzZUdldFRhZyIsIm9iamVjdFRhZyIsInByb3RvIiwiZ2V0UHJvdG90eXBlIiwi
Q3RvciIsImZ1bmNUb1N0cmluZyIsIm9iamVjdEN0b3JTdHJpbmciLCJmdW5jUHJvdG8iLCJGdW5j
dGlvbiIsIm9iamVjdFByb3RvIiwiZ2V0Tm9kZUFmdGVyIiwiaW5zZXJ0TGF6eVRyZWVDaGlsZEF0
IiwibW92ZUNoaWxkIiwibW92ZURlbGltaXRlZFRleHQiLCJpbnNlcnRDaGlsZEF0IiwiY2xvc2lu
Z0NvbW1lbnQiLCJyZW1vdmVEZWxpbWl0ZWRUZXh0Iiwib3BlbmluZ0NvbW1lbnQiLCJuZXh0Tm9k
ZSIsInN0YXJ0Tm9kZSIsInJlcGxhY2VEZWxpbWl0ZWRUZXh0Iiwic3RyaW5nVGV4dCIsIm5vZGVB
ZnRlckNvbW1lbnQiLCJjcmVhdGVUZXh0Tm9kZSIsIkRhbmdlciIsImRhbmdlcm91c2x5UmVwbGFj
ZU5vZGVXaXRoTWFya3VwIiwiRE9NQ2hpbGRyZW5PcGVyYXRpb25zIiwicHJvY2Vzc1VwZGF0ZXMi
LCJ1cGRhdGVzIiwiayIsInVwZGF0ZSIsImNvbnRlbnQiLCJhZnRlck5vZGUiLCJmcm9tTm9kZSIs
Im1hdGhtbCIsInJlY29tcHV0ZVBsdWdpbk9yZGVyaW5nIiwiZXZlbnRQbHVnaW5PcmRlciIsInBs
dWdpbk5hbWUiLCJuYW1lc1RvUGx1Z2lucyIsInBsdWdpbk1vZHVsZSIsInBsdWdpbkluZGV4Iiwi
aW5kZXhPZiIsInB1Ymxpc2hlZEV2ZW50cyIsImV2ZW50VHlwZXMiLCJldmVudE5hbWUiLCJwdWJs
aXNoRXZlbnRGb3JQbHVnaW4iLCJldmVudE5hbWVEaXNwYXRjaENvbmZpZ3MiLCJwaGFzZU5hbWUi
LCJwaGFzZWRSZWdpc3RyYXRpb25OYW1lIiwicHVibGlzaFJlZ2lzdHJhdGlvbk5hbWUiLCJwb3Nz
aWJsZVJlZ2lzdHJhdGlvbk5hbWVzIiwiaW5qZWN0ZWRFdmVudFBsdWdpbk9yZGVyIiwiaW5qZWN0
ZWROYW1lc1RvUGx1Z2lucyIsImlzT3JkZXJpbmdEaXJ0eSIsImdldFBsdWdpbk1vZHVsZUZvckV2
ZW50IiwiX3Jlc2V0RXZlbnRQbHVnaW5zIiwiaXNFbmRpc2giLCJpc01vdmVpc2giLCJpc1N0YXJ0
aXNoIiwiZXhlY3V0ZURpc3BhdGNoIiwiaW52b2tlR3VhcmRlZENhbGxiYWNrV2l0aENhdGNoIiwi
aW52b2tlR3VhcmRlZENhbGxiYWNrIiwiZGlzcGF0Y2hMaXN0ZW5lcnMiLCJkaXNwYXRjaEluc3Rh
bmNlcyIsImV4ZWN1dGVEaXNwYXRjaGVzSW5PcmRlclN0b3BBdFRydWVJbXBsIiwiZXhlY3V0ZURp
c3BhdGNoZXNJbk9yZGVyU3RvcEF0VHJ1ZSIsImV4ZWN1dGVEaXJlY3REaXNwYXRjaCIsImRpc3Bh
dGNoTGlzdGVuZXIiLCJkaXNwYXRjaEluc3RhbmNlIiwicmVzIiwiaGFzRGlzcGF0Y2hlcyIsIkNv
bXBvbmVudFRyZWUiLCJUcmVlVHJhdmVyc2FsIiwiaW5qZWN0Q29tcG9uZW50VHJlZSIsIkluamVj
dGVkIiwiaW5qZWN0VHJlZVRyYXZlcnNhbCIsImlzQW5jZXN0b3IiLCJnZXRMb3dlc3RDb21tb25B
bmNlc3RvciIsImFyZ0Zyb20iLCJhcmdUbyIsImVzY2FwZVJlZ2V4IiwiZXNjYXBlckxvb2t1cCIs
Ij0iLCI6IiwiZXNjYXBlZFN0cmluZyIsInVuZXNjYXBlIiwidW5lc2NhcGVSZWdleCIsInVuZXNj
YXBlckxvb2t1cCIsIj0wIiwiPTIiLCJrZXlTdWJzdHJpbmciLCJLZXlFc2NhcGVVdGlscyIsIl9h
c3NlcnRTaW5nbGVMaW5rIiwiaW5wdXRQcm9wcyIsImNoZWNrZWRMaW5rIiwidmFsdWVMaW5rIiwi
X2Fzc2VydFZhbHVlTGluayIsIm9uQ2hhbmdlIiwiX2Fzc2VydENoZWNrZWRMaW5rIiwiY2hlY2tl
ZCIsImdldERlY2xhcmF0aW9uRXJyb3JBZGRlbmR1bSIsIlJlYWN0UHJvcFR5cGVzU2VjcmV0Iiwi
cHJvcFR5cGVzRmFjdG9yeSIsImhhc1JlYWRPbmx5VmFsdWUiLCJjaGVja2JveCIsImltYWdlIiwi
aGlkZGVuIiwicmFkaW8iLCJzdWJtaXQiLCJwcm9wVHlwZXMiLCJjb21wb25lbnROYW1lIiwicmVh
ZE9ubHkiLCJmdW5jIiwibG9nZ2VkVHlwZUZhaWx1cmVzIiwiTGlua2VkVmFsdWVVdGlscyIsImNo
ZWNrUHJvcFR5cGVzIiwidGFnTmFtZSIsImdldFZhbHVlIiwiZ2V0Q2hlY2tlZCIsImV4ZWN1dGVP
bkNoYW5nZSIsInJlcXVlc3RDaGFuZ2UiLCJpbmplY3RlZCIsIlJlYWN0Q29tcG9uZW50RW52aXJv
bm1lbnQiLCJyZXBsYWNlTm9kZVdpdGhNYXJrdXAiLCJwcm9jZXNzQ2hpbGRyZW5VcGRhdGVzIiwi
aW5qZWN0RW52aXJvbm1lbnQiLCJlbnZpcm9ubWVudCIsImNhdWdodEVycm9yIiwiZm9ybWF0VW5l
eHBlY3RlZEFyZ3VtZW50IiwiZGlzcGxheU5hbWUiLCJnZXRJbnRlcm5hbEluc3RhbmNlUmVhZHlG
b3JVcGRhdGUiLCJwdWJsaWNJbnN0YW5jZSIsImNhbGxlck5hbWUiLCJSZWFjdFVwZGF0ZVF1ZXVl
IiwiaXNNb3VudGVkIiwiZW5xdWV1ZUNhbGxiYWNrIiwidmFsaWRhdGVDYWxsYmFjayIsImVucXVl
dWVDYWxsYmFja0ludGVybmFsIiwiZW5xdWV1ZUZvcmNlVXBkYXRlIiwiX3BlbmRpbmdGb3JjZVVw
ZGF0ZSIsImVucXVldWVSZXBsYWNlU3RhdGUiLCJjb21wbGV0ZVN0YXRlIiwiX3BlbmRpbmdTdGF0
ZVF1ZXVlIiwiX3BlbmRpbmdSZXBsYWNlU3RhdGUiLCJlbnF1ZXVlU2V0U3RhdGUiLCJwYXJ0aWFs
U3RhdGUiLCJlbnF1ZXVlRWxlbWVudEludGVybmFsIiwibmV4dENvbnRleHQiLCJfcGVuZGluZ0Vs
ZW1lbnQiLCJNU0FwcCIsImV4ZWNVbnNhZmVMb2NhbEZ1bmN0aW9uIiwiYXJnMCIsImFyZzEiLCJh
cmcyIiwiYXJnMyIsImdldEV2ZW50Q2hhckNvZGUiLCJjaGFyQ29kZSIsImtleUNvZGUiLCJtb2Rp
ZmllclN0YXRlR2V0dGVyIiwia2V5QXJnIiwic3ludGhldGljRXZlbnQiLCJrZXlQcm9wIiwibW9k
aWZpZXJLZXlUb1Byb3AiLCJBbHQiLCJDb250cm9sIiwiTWV0YSIsIlNoaWZ0IiwiY29ycmVzcG9u
ZGluZ1VzZUVsZW1lbnQiLCJldmVudE5hbWVTdWZmaXgiLCJjYXB0dXJlIiwiaXNTdXBwb3J0ZWQi
LCJzZXRBdHRyaWJ1dGUiLCJ1c2VIYXNGZWF0dXJlIiwiaW1wbGVtZW50YXRpb24iLCJoYXNGZWF0
dXJlIiwic2hvdWxkVXBkYXRlUmVhY3RDb21wb25lbnQiLCJwcmV2RW1wdHkiLCJuZXh0RW1wdHki
LCJwcmV2VHlwZSIsIm5leHRUeXBlIiwidmFsaWRhdGVET01OZXN0aW5nIiwiRXZlbnRMaXN0ZW5l
ciIsImxpc3RlbiIsImV2ZW50VHlwZSIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJkZXRhY2hFdmVu
dCIsInJlZ2lzdGVyRGVmYXVsdCIsImZvY3VzTm9kZSIsImZvY3VzIiwiZ2V0QWN0aXZlRWxlbWVu
dCIsImFjdGl2ZUVsZW1lbnQiLCJib2R5Iiwicm9vdCIsIlN5bWJvbCIsInRocm93T25EaXJlY3RB
Y2Nlc3MiLCJwcmVmaXhLZXkiLCJwcmVmaXgiLCJjaGFyQXQiLCJ0b1VwcGVyQ2FzZSIsImlzVW5p
dGxlc3NOdW1iZXIiLCJhbmltYXRpb25JdGVyYXRpb25Db3VudCIsImJvcmRlckltYWdlT3V0c2V0
IiwiYm9yZGVySW1hZ2VTbGljZSIsImJvcmRlckltYWdlV2lkdGgiLCJib3hGbGV4IiwiYm94Rmxl
eEdyb3VwIiwiYm94T3JkaW5hbEdyb3VwIiwiY29sdW1uQ291bnQiLCJmbGV4IiwiZmxleEdyb3ci
LCJmbGV4UG9zaXRpdmUiLCJmbGV4U2hyaW5rIiwiZmxleE5lZ2F0aXZlIiwiZmxleE9yZGVyIiwi
Z3JpZFJvdyIsImdyaWRSb3dFbmQiLCJncmlkUm93U3BhbiIsImdyaWRSb3dTdGFydCIsImdyaWRD
b2x1bW4iLCJncmlkQ29sdW1uRW5kIiwiZ3JpZENvbHVtblNwYW4iLCJncmlkQ29sdW1uU3RhcnQi
LCJmb250V2VpZ2h0IiwibGluZUNsYW1wIiwibGluZUhlaWdodCIsIm9wYWNpdHkiLCJvcmRlciIs
Im9ycGhhbnMiLCJ0YWJTaXplIiwid2lkb3dzIiwiekluZGV4Iiwiem9vbSIsImZpbGxPcGFjaXR5
IiwiZmxvb2RPcGFjaXR5Iiwic3RvcE9wYWNpdHkiLCJzdHJva2VEYXNoYXJyYXkiLCJzdHJva2VE
YXNob2Zmc2V0Iiwic3Ryb2tlTWl0ZXJsaW1pdCIsInN0cm9rZU9wYWNpdHkiLCJzdHJva2VXaWR0
aCIsInByZWZpeGVzIiwicHJvcCIsInNob3J0aGFuZFByb3BlcnR5RXhwYW5zaW9ucyIsImJhY2tn
cm91bmQiLCJiYWNrZ3JvdW5kQXR0YWNobWVudCIsImJhY2tncm91bmRDb2xvciIsImJhY2tncm91
bmRJbWFnZSIsImJhY2tncm91bmRQb3NpdGlvblgiLCJiYWNrZ3JvdW5kUG9zaXRpb25ZIiwiYmFj
a2dyb3VuZFJlcGVhdCIsImJhY2tncm91bmRQb3NpdGlvbiIsImJvcmRlciIsImJvcmRlcldpZHRo
IiwiYm9yZGVyU3R5bGUiLCJib3JkZXJDb2xvciIsImJvcmRlckJvdHRvbSIsImJvcmRlckJvdHRv
bVdpZHRoIiwiYm9yZGVyQm90dG9tU3R5bGUiLCJib3JkZXJCb3R0b21Db2xvciIsImJvcmRlckxl
ZnQiLCJib3JkZXJMZWZ0V2lkdGgiLCJib3JkZXJMZWZ0U3R5bGUiLCJib3JkZXJMZWZ0Q29sb3Ii
LCJib3JkZXJSaWdodCIsImJvcmRlclJpZ2h0V2lkdGgiLCJib3JkZXJSaWdodFN0eWxlIiwiYm9y
ZGVyUmlnaHRDb2xvciIsImJvcmRlclRvcCIsImJvcmRlclRvcFdpZHRoIiwiYm9yZGVyVG9wU3R5
bGUiLCJib3JkZXJUb3BDb2xvciIsImZvbnQiLCJmb250U3R5bGUiLCJmb250VmFyaWFudCIsImZv
bnRTaXplIiwiZm9udEZhbWlseSIsIm91dGxpbmUiLCJvdXRsaW5lV2lkdGgiLCJvdXRsaW5lU3R5
bGUiLCJvdXRsaW5lQ29sb3IiLCJDU1NQcm9wZXJ0eSIsIl9jbGFzc0NhbGxDaGVjayIsImluc3Rh
bmNlIiwiQ29uc3RydWN0b3IiLCJfY2FsbGJhY2tzIiwiX2NvbnRleHRzIiwiX2FyZyIsImNvbnRl
eHRzIiwiY2hlY2twb2ludCIsInJvbGxiYWNrIiwiaXNBdHRyaWJ1dGVOYW1lU2FmZSIsInZhbGlk
YXRlZEF0dHJpYnV0ZU5hbWVDYWNoZSIsImlsbGVnYWxBdHRyaWJ1dGVOYW1lQ2FjaGUiLCJWQUxJ
RF9BVFRSSUJVVEVfTkFNRV9SRUdFWCIsInNob3VsZElnbm9yZVZhbHVlIiwiaXNOYU4iLCJxdW90
ZUF0dHJpYnV0ZVZhbHVlRm9yQnJvd3NlciIsIlJlZ0V4cCIsIkRPTVByb3BlcnR5T3BlcmF0aW9u
cyIsImNyZWF0ZU1hcmt1cEZvcklEIiwic2V0QXR0cmlidXRlRm9ySUQiLCJjcmVhdGVNYXJrdXBG
b3JSb290Iiwic2V0QXR0cmlidXRlRm9yUm9vdCIsImNyZWF0ZU1hcmt1cEZvclByb3BlcnR5Iiwi
Y3JlYXRlTWFya3VwRm9yQ3VzdG9tQXR0cmlidXRlIiwic2V0VmFsdWVGb3JQcm9wZXJ0eSIsImRl
bGV0ZVZhbHVlRm9yUHJvcGVydHkiLCJuYW1lc3BhY2UiLCJzZXRBdHRyaWJ1dGVOUyIsInNldFZh
bHVlRm9yQXR0cmlidXRlIiwicmVtb3ZlQXR0cmlidXRlIiwiZGVsZXRlVmFsdWVGb3JBdHRyaWJ1
dGUiLCJ1cGRhdGVPcHRpb25zSWZQZW5kaW5nVXBkYXRlQW5kTW91bnRlZCIsIl93cmFwcGVyU3Rh
dGUiLCJwZW5kaW5nVXBkYXRlIiwidXBkYXRlT3B0aW9ucyIsIkJvb2xlYW4iLCJtdWx0aXBsZSIs
InByb3BWYWx1ZSIsInNlbGVjdGVkVmFsdWUiLCJvcHRpb25zIiwic2VsZWN0ZWQiLCJfaGFuZGxl
Q2hhbmdlIiwiZGlkV2FyblZhbHVlRGVmYXVsdFZhbHVlIiwiUmVhY3RET01TZWxlY3QiLCJnZXRI
b3N0UHJvcHMiLCJtb3VudFdyYXBwZXIiLCJpbml0aWFsVmFsdWUiLCJkZWZhdWx0VmFsdWUiLCJs
aXN0ZW5lcnMiLCJ3YXNNdWx0aXBsZSIsImdldFNlbGVjdFZhbHVlQ29udGV4dCIsInBvc3RVcGRh
dGVXcmFwcGVyIiwiZW1wdHlDb21wb25lbnRGYWN0b3J5IiwiUmVhY3RFbXB0eUNvbXBvbmVudElu
amVjdGlvbiIsImluamVjdEVtcHR5Q29tcG9uZW50RmFjdG9yeSIsIlJlYWN0RW1wdHlDb21wb25l
bnQiLCJjcmVhdGUiLCJpbnN0YW50aWF0ZSIsImNyZWF0ZUludGVybmFsQ29tcG9uZW50IiwiZ2Vu
ZXJpY0NvbXBvbmVudENsYXNzIiwiY3JlYXRlSW5zdGFuY2VGb3JUZXh0IiwidGV4dENvbXBvbmVu
dENsYXNzIiwiaXNUZXh0Q29tcG9uZW50IiwiUmVhY3RIb3N0Q29tcG9uZW50SW5qZWN0aW9uIiwi
aW5qZWN0R2VuZXJpY0NvbXBvbmVudENsYXNzIiwiY29tcG9uZW50Q2xhc3MiLCJpbmplY3RUZXh0
Q29tcG9uZW50Q2xhc3MiLCJSZWFjdEhvc3RDb21wb25lbnQiLCJpc0luRG9jdW1lbnQiLCJjb250
YWluc05vZGUiLCJkb2N1bWVudEVsZW1lbnQiLCJSZWFjdERPTVNlbGVjdGlvbiIsIlJlYWN0SW5w
dXRTZWxlY3Rpb24iLCJoYXNTZWxlY3Rpb25DYXBhYmlsaXRpZXMiLCJlbGVtIiwiY29udGVudEVk
aXRhYmxlIiwiZ2V0U2VsZWN0aW9uSW5mb3JtYXRpb24iLCJmb2N1c2VkRWxlbSIsInNlbGVjdGlv
blJhbmdlIiwiZ2V0U2VsZWN0aW9uIiwicmVzdG9yZVNlbGVjdGlvbiIsInByaW9yU2VsZWN0aW9u
SW5mb3JtYXRpb24iLCJjdXJGb2N1c2VkRWxlbSIsInByaW9yRm9jdXNlZEVsZW0iLCJwcmlvclNl
bGVjdGlvblJhbmdlIiwic2V0U2VsZWN0aW9uIiwiaW5wdXQiLCJzZWxlY3Rpb24iLCJzdGFydCIs
InNlbGVjdGlvblN0YXJ0IiwiZW5kIiwic2VsZWN0aW9uRW5kIiwicmFuZ2UiLCJjcmVhdGVSYW5n
ZSIsInBhcmVudEVsZW1lbnQiLCJtb3ZlU3RhcnQiLCJtb3ZlRW5kIiwiZ2V0T2Zmc2V0cyIsIm9m
ZnNldHMiLCJtaW4iLCJjcmVhdGVUZXh0UmFuZ2UiLCJjb2xsYXBzZSIsInNlbGVjdCIsInNldE9m
ZnNldHMiLCJmaXJzdERpZmZlcmVuY2VJbmRleCIsInN0cmluZzEiLCJzdHJpbmcyIiwibWluTGVu
IiwiZ2V0UmVhY3RSb290RWxlbWVudEluQ29udGFpbmVyIiwiY29udGFpbmVyIiwiRE9DX05PREVf
VFlQRSIsImludGVybmFsR2V0SUQiLCJtb3VudENvbXBvbmVudEludG9Ob2RlIiwid3JhcHBlcklu
c3RhbmNlIiwic2hvdWxkUmV1c2VNYXJrdXAiLCJ3cmFwcGVkRWxlbWVudCIsImNoaWxkIiwiUmVh
Y3RET01Db250YWluZXJJbmZvIiwiX3RvcExldmVsV3JhcHBlciIsIlJlYWN0TW91bnQiLCJfbW91
bnRJbWFnZUludG9Ob2RlIiwiYmF0Y2hlZE1vdW50Q29tcG9uZW50SW50b05vZGUiLCJjb21wb25l
bnRJbnN0YW5jZSIsIlJlYWN0RE9NRmVhdHVyZUZsYWdzIiwidXNlQ3JlYXRlRWxlbWVudCIsInVu
bW91bnRDb21wb25lbnRGcm9tTm9kZSIsImxhc3RDaGlsZCIsImhhc05vblJvb3RSZWFjdENoaWxk
Iiwicm9vdEVsIiwiaXNWYWxpZENvbnRhaW5lciIsImdldEhvc3RSb290SW5zdGFuY2VJbkNvbnRh
aW5lciIsInByZXZIb3N0SW5zdGFuY2UiLCJnZXRUb3BMZXZlbFdyYXBwZXJJbkNvbnRhaW5lciIs
Il9ob3N0Q29udGFpbmVySW5mbyIsIlJlYWN0TWFya3VwQ2hlY2tzdW0iLCJpbnN0YW50aWF0ZVJl
YWN0Q29tcG9uZW50IiwiUk9PVF9BVFRSX05BTUUiLCJpbnN0YW5jZXNCeVJlYWN0Um9vdElEIiwi
dG9wTGV2ZWxSb290Q291bnRlciIsIlRvcExldmVsV3JhcHBlciIsInJvb3RJRCIsImlzUmVhY3RD
b21wb25lbnQiLCJyZW5kZXIiLCJfaW5zdGFuY2VzQnlSZWFjdFJvb3RJRCIsInNjcm9sbE1vbml0
b3IiLCJyZW5kZXJDYWxsYmFjayIsIl91cGRhdGVSb290Q29tcG9uZW50IiwicHJldkNvbXBvbmVu
dCIsIl9yZW5kZXJOZXdSb290Q29tcG9uZW50Iiwid3JhcHBlcklEIiwiX2luc3RhbmNlIiwicmVu
ZGVyU3VidHJlZUludG9Db250YWluZXIiLCJwYXJlbnRDb21wb25lbnQiLCJfcmVuZGVyU3VidHJl
ZUludG9Db250YWluZXIiLCJuZXh0V3JhcHBlZEVsZW1lbnQiLCJfcHJvY2Vzc0NoaWxkQ29udGV4
dCIsInByZXZXcmFwcGVkRWxlbWVudCIsInB1YmxpY0luc3QiLCJ1cGRhdGVkQ2FsbGJhY2siLCJ1
bm1vdW50Q29tcG9uZW50QXROb2RlIiwicmVhY3RSb290RWxlbWVudCIsImNvbnRhaW5lckhhc1Jl
YWN0TWFya3VwIiwiY29udGFpbmVySGFzTm9uUm9vdFJlYWN0Q2hpbGQiLCJoYXNBdHRyaWJ1dGUi
LCJyb290RWxlbWVudCIsImNhblJldXNlTWFya3VwIiwiY2hlY2tzdW0iLCJDSEVDS1NVTV9BVFRS
X05BTUUiLCJyb290TWFya3VwIiwib3V0ZXJIVE1MIiwibm9ybWFsaXplZE1hcmt1cCIsImRpZmZJ
bmRleCIsImRpZmZlcmVuY2UiLCJSZWFjdE5vZGVUeXBlcyIsIkhPU1QiLCJDT01QT1NJVEUiLCJF
TVBUWSIsImdldFR5cGUiLCJzY3JvbGxQb3NpdGlvbiIsIm5leHQiLCJhcnIiLCJjYiIsImdldEhv
c3RDb21wb25lbnRGcm9tQ29tcG9zaXRlIiwiX3JlbmRlcmVkTm9kZVR5cGUiLCJnZXRUZXh0Q29u
dGVudEFjY2Vzc29yIiwiY29udGVudEtleSIsImlzQ2hlY2thYmxlIiwiZ2V0VHJhY2tlciIsInZh
bHVlVHJhY2tlciIsImF0dGFjaFRyYWNrZXIiLCJ0cmFja2VyIiwiZGV0YWNoVHJhY2tlciIsImdl
dFZhbHVlRnJvbU5vZGUiLCJpbnB1dFZhbHVlVHJhY2tpbmciLCJfZ2V0VHJhY2tlckZyb21Ob2Rl
IiwidHJhY2siLCJ2YWx1ZUZpZWxkIiwiZGVzY3JpcHRvciIsImdldE93blByb3BlcnR5RGVzY3Jp
cHRvciIsImN1cnJlbnRWYWx1ZSIsImRlZmluZVByb3BlcnR5IiwiZW51bWVyYWJsZSIsImNvbmZp
Z3VyYWJsZSIsInNldFZhbHVlIiwic3RvcFRyYWNraW5nIiwidXBkYXRlVmFsdWVJZkNoYW5nZWQi
LCJsYXN0VmFsdWUiLCJuZXh0VmFsdWUiLCJpc0ludGVybmFsQ29tcG9uZW50VHlwZSIsInNob3Vs
ZEhhdmVEZWJ1Z0lEIiwiaW5mbyIsImdldE5hdGl2ZU5vZGUiLCJSZWFjdENvbXBvc2l0ZUNvbXBv
bmVudFdyYXBwZXIiLCJfbW91bnRJbmRleCIsIl9tb3VudEltYWdlIiwiUmVhY3RDb21wb3NpdGVD
b21wb25lbnQiLCJjb25zdHJ1Y3QiLCJfaW5zdGFudGlhdGVSZWFjdENvbXBvbmVudCIsImlzVGV4
dElucHV0RWxlbWVudCIsInN1cHBvcnRlZElucHV0VHlwZXMiLCJjb2xvciIsImRhdGUiLCJkYXRl
dGltZSIsImRhdGV0aW1lLWxvY2FsIiwiZW1haWwiLCJtb250aCIsIm51bWJlciIsInBhc3N3b3Jk
Iiwic2VhcmNoIiwidGVsIiwidXJsIiwid2VlayIsInRleHRDb250ZW50IiwiZ2V0Q29tcG9uZW50
S2V5IiwidHJhdmVyc2VBbGxDaGlsZHJlbkltcGwiLCJuYW1lU29GYXIiLCJ0cmF2ZXJzZUNvbnRl
eHQiLCJTRVBBUkFUT1IiLCJuZXh0TmFtZSIsInN1YnRyZWVDb3VudCIsIm5leHROYW1lUHJlZml4
IiwiU1VCU0VQQVJBVE9SIiwiaXRlcmF0b3JGbiIsImdldEl0ZXJhdG9yRm4iLCJzdGVwIiwiaXRl
cmF0b3IiLCJlbnRyaWVzIiwiaWkiLCJkb25lIiwiZW50cnkiLCJhZGRlbmR1bSIsImNoaWxkcmVu
U3RyaW5nIiwidHJhdmVyc2VBbGxDaGlsZHJlbiIsIl9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJu
IiwiUmVmZXJlbmNlRXJyb3IiLCJfaW5oZXJpdHMiLCJzdWJDbGFzcyIsInN1cGVyQ2xhc3MiLCJ3
cml0YWJsZSIsInNldFByb3RvdHlwZU9mIiwiX19wcm90b19fIiwiX29iamVjdFdpdGhvdXRQcm9w
ZXJ0aWVzIiwibm9vcCIsIm1ha2VTZWxlY3RvclN0YXRlZnVsIiwic291cmNlU2VsZWN0b3IiLCJz
dG9yZSIsInNlbGVjdG9yIiwicnVuIiwibmV4dFByb3BzIiwiZ2V0U3RhdGUiLCJzaG91bGRDb21w
b25lbnRVcGRhdGUiLCJjb25uZWN0QWR2YW5jZWQiLCJzZWxlY3RvckZhY3RvcnkiLCJfY29udGV4
dFR5cGVzIiwiX2NoaWxkQ29udGV4dFR5cGVzIiwiX3JlZiIsIl9yZWYkZ2V0RGlzcGxheU5hbWUi
LCJnZXREaXNwbGF5TmFtZSIsIl9yZWYkbWV0aG9kTmFtZSIsIm1ldGhvZE5hbWUiLCJfcmVmJHJl
bmRlckNvdW50UHJvcCIsInJlbmRlckNvdW50UHJvcCIsIl9yZWYkc2hvdWxkSGFuZGxlU3RhdCIs
InNob3VsZEhhbmRsZVN0YXRlQ2hhbmdlcyIsIl9yZWYkc3RvcmVLZXkiLCJzdG9yZUtleSIsIl9y
ZWYkd2l0aFJlZiIsIndpdGhSZWYiLCJjb25uZWN0T3B0aW9ucyIsInN1YnNjcmlwdGlvbktleSIs
ImhvdFJlbG9hZGluZ1ZlcnNpb24iLCJjb250ZXh0VHlwZXMiLCJfUHJvcFR5cGVzIiwic3RvcmVT
aGFwZSIsInN1YnNjcmlwdGlvblNoYXBlIiwiY2hpbGRDb250ZXh0VHlwZXMiLCJXcmFwcGVkQ29t
cG9uZW50IiwiX2ludmFyaWFudDIiLCJKU09OIiwic3RyaW5naWZ5Iiwid3JhcHBlZENvbXBvbmVu
dE5hbWUiLCJzZWxlY3RvckZhY3RvcnlPcHRpb25zIiwiX2V4dGVuZHMiLCJDb25uZWN0IiwiX0Nv
bXBvbmVudCIsIl90aGlzIiwic3RhdGUiLCJyZW5kZXJDb3VudCIsInByb3BzTW9kZSIsInNldFdy
YXBwZWRJbnN0YW5jZSIsImluaXRTZWxlY3RvciIsImluaXRTdWJzY3JpcHRpb24iLCJnZXRDaGls
ZENvbnRleHQiLCJfcmVmMiIsInN1YnNjcmlwdGlvbiIsImNvbXBvbmVudERpZE1vdW50IiwidHJ5
U3Vic2NyaWJlIiwiZm9yY2VVcGRhdGUiLCJjb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzIiwiY29t
cG9uZW50V2lsbFVubW91bnQiLCJ0cnlVbnN1YnNjcmliZSIsIm5vdGlmeU5lc3RlZFN1YnMiLCJn
ZXRXcmFwcGVkSW5zdGFuY2UiLCJ3cmFwcGVkSW5zdGFuY2UiLCJkaXNwYXRjaCIsInBhcmVudFN1
YiIsIl9TdWJzY3JpcHRpb24yIiwib25TdGF0ZUNoYW5nZSIsImNvbXBvbmVudERpZFVwZGF0ZSIs
Im5vdGlmeU5lc3RlZFN1YnNPbkNvbXBvbmVudERpZFVwZGF0ZSIsInNldFN0YXRlIiwiZHVtbXlT
dGF0ZSIsImlzU3Vic2NyaWJlZCIsImFkZEV4dHJhUHJvcHMiLCJ3aXRoRXh0cmFzIiwiX3JlYWN0
IiwiX2hvaXN0Tm9uUmVhY3RTdGF0aWNzMiIsIl9ob2lzdE5vblJlYWN0U3RhdGljcyIsIl9pbnZh
cmlhbnQiLCJfU3Vic2NyaXB0aW9uIiwid3JhcE1hcFRvUHJvcHNDb25zdGFudCIsImdldENvbnN0
YW50IiwiY29uc3RhbnRTZWxlY3RvciIsImNvbnN0YW50IiwiZGVwZW5kc09uT3duUHJvcHMiLCJn
ZXREZXBlbmRzT25Pd25Qcm9wcyIsIm1hcFRvUHJvcHMiLCJ3cmFwTWFwVG9Qcm9wc0Z1bmMiLCJw
cm94eSIsInN0YXRlT3JEaXNwYXRjaCIsIm93blByb3BzIiwiX3ZlcmlmeVBsYWluT2JqZWN0Iiwi
Y29ubmVjdCIsImNyZWF0ZVByb3ZpZGVyIiwiUHJvdmlkZXIiLCJfUHJvdmlkZXIiLCJfUHJvdmlk
ZXIyIiwiX2Nvbm5lY3RBZHZhbmNlZCIsIl9jb25uZWN0QWR2YW5jZWQyIiwiX2Nvbm5lY3QiLCJf
Y29ubmVjdDIiLCJfcHJvcFR5cGVzIiwiX3Byb3BUeXBlczIiLCJzaGFwZSIsImlzUmVxdWlyZWQi
LCJzdWJzY3JpYmUiLCJ2ZXJpZnlQbGFpbk9iamVjdCIsIl9pc1BsYWluT2JqZWN0MiIsIl93YXJu
aW5nMiIsIl9pc1BsYWluT2JqZWN0IiwiX2NyZWF0ZUNsYXNzIiwiZGVmaW5lUHJvcGVydGllcyIs
InByb3RvUHJvcHMiLCJzdGF0aWNQcm9wcyIsIl9yZWFjdDIiLCJfY2xhc3NuYW1lcyIsIl9jbGFz
c25hbWVzMiIsIlRvZG9UZXh0SW5wdXQiLCJfdGVtcCIsIl9yZXQiLCJfbGVuIiwiX2tleSIsImdl
dFByb3RvdHlwZU9mIiwiaGFuZGxlU3VibWl0IiwidHJpbSIsIndoaWNoIiwib25TYXZlIiwibmV3
VG9kbyIsImhhbmRsZUNoYW5nZSIsImhhbmRsZUJsdXIiLCJjbGFzc05hbWUiLCJlZGl0IiwiZWRp
dGluZyIsIm5ldy10b2RvIiwicGxhY2Vob2xkZXIiLCJhdXRvRm9jdXMiLCJvbkJsdXIiLCJvbktl
eURvd24iLCJib29sIiwiQUREX1RPRE8iLCJERUxFVEVfVE9ETyIsIkVESVRfVE9ETyIsIkNPTVBM
RVRFX1RPRE8iLCJDT01QTEVURV9BTEwiLCJDTEVBUl9DT01QTEVURUQiLCJTSE9XX0FMTCIsIlNI
T1dfQ09NUExFVEVEIiwiU0hPV19BQ1RJVkUiLCJkZWZhdWx0U2V0VGltb3V0IiwiZGVmYXVsdENs
ZWFyVGltZW91dCIsInJ1blRpbWVvdXQiLCJmdW4iLCJjYWNoZWRTZXRUaW1lb3V0Iiwic2V0VGlt
ZW91dCIsInJ1bkNsZWFyVGltZW91dCIsIm1hcmtlciIsImNhY2hlZENsZWFyVGltZW91dCIsImNs
ZWFyVGltZW91dCIsImNsZWFuVXBOZXh0VGljayIsImRyYWluaW5nIiwiY3VycmVudFF1ZXVlIiwi
cXVldWVJbmRleCIsImRyYWluUXVldWUiLCJ0aW1lb3V0IiwiSXRlbSIsImFycmF5IiwicHJvY2Vz
cyIsIm5leHRUaWNrIiwidGl0bGUiLCJicm93c2VyIiwiZW52IiwiYXJndiIsInZlcnNpb25zIiwi
b24iLCJhZGRMaXN0ZW5lciIsIm9uY2UiLCJvZmYiLCJyZW1vdmVMaXN0ZW5lciIsInJlbW92ZUFs
bExpc3RlbmVycyIsImVtaXQiLCJiaW5kaW5nIiwiY3dkIiwiY2hkaXIiLCJkaXIiLCJ1bWFzayIs
ImdldFRoZW4iLCJ0aGVuIiwiZXgiLCJMQVNUX0VSUk9SIiwiSVNfRVJST1IiLCJ0cnlDYWxsT25l
IiwidHJ5Q2FsbFR3byIsIlByb21pc2UiLCJfNDUiLCJfODEiLCJfNjUiLCJfNTQiLCJkb1Jlc29s
dmUiLCJzYWZlVGhlbiIsIm9uRnVsZmlsbGVkIiwib25SZWplY3RlZCIsInJlc29sdmUiLCJyZWpl
Y3QiLCJIYW5kbGVyIiwiZGVmZXJyZWQiLCJfMTAiLCJoYW5kbGVSZXNvbHZlZCIsInByb21pc2Ui
LCJuZXdWYWx1ZSIsImZpbmFsZSIsIl85NyIsInJlYXNvbiIsIl82MSIsIlJlYWN0Q29tcG9uZW50
IiwidXBkYXRlciIsInJlZnMiLCJSZWFjdE5vb3BVcGRhdGVRdWV1ZSIsIlJlYWN0UHVyZUNvbXBv
bmVudCIsIkNvbXBvbmVudER1bW15IiwiaXNQdXJlUmVhY3RDb21wb25lbnQiLCJpc05hdGl2ZSIs
InJlSXNOYXRpdmUiLCJwdXJnZURlZXAiLCJpdGVtIiwiZ2V0SXRlbSIsImNoaWxkSURzIiwicmVt
b3ZlSXRlbSIsImRlc2NyaWJlQ29tcG9uZW50RnJhbWUiLCJvd25lck5hbWUiLCJmaWxlTmFtZSIs
ImxpbmVOdW1iZXIiLCJkZXNjcmliZUlEIiwiUmVhY3RDb21wb25lbnRUcmVlSG9vayIsImdldEVs
ZW1lbnQiLCJvd25lcklEIiwiZ2V0T3duZXJJRCIsInNldEl0ZW0iLCJnZXRJdGVtSURzIiwiYWRk
Um9vdCIsInJlbW92ZVJvb3QiLCJnZXRSb290SURzIiwiY2FuVXNlQ29sbGVjdGlvbnMiLCJNYXAi
LCJTZXQiLCJpdGVtTWFwIiwicm9vdElEU2V0IiwiYWRkIiwiaXRlbUJ5S2V5Iiwicm9vdEJ5S2V5
IiwiZ2V0S2V5RnJvbUlEIiwiZ2V0SURGcm9tS2V5IiwicGFyc2VJbnQiLCJzdWJzdHIiLCJ1bm1v
dW50ZWRJRHMiLCJvblNldENoaWxkcmVuIiwibmV4dENoaWxkSURzIiwibmV4dENoaWxkSUQiLCJu
ZXh0Q2hpbGQiLCJwYXJlbnRJRCIsIm9uQmVmb3JlTW91bnRDb21wb25lbnQiLCJ1cGRhdGVDb3Vu
dCIsIm9uQmVmb3JlVXBkYXRlQ29tcG9uZW50Iiwib25Nb3VudENvbXBvbmVudCIsImlzUm9vdCIs
Im9uVXBkYXRlQ29tcG9uZW50Iiwib25Vbm1vdW50Q29tcG9uZW50IiwicHVyZ2VVbm1vdW50ZWRD
b21wb25lbnRzIiwiX3ByZXZlbnRQdXJnaW5nIiwiZ2V0Q3VycmVudFN0YWNrQWRkZW5kdW0iLCJ0
b3BFbGVtZW50IiwiY3VycmVudE93bmVyIiwiX2RlYnVnSUQiLCJnZXRTdGFja0FkZGVuZHVtQnlJ
RCIsImdldFBhcmVudElEIiwiZ2V0Q2hpbGRJRHMiLCJnZXRTb3VyY2UiLCJnZXRUZXh0IiwiZ2V0
VXBkYXRlQ291bnQiLCJnZXRSZWdpc3RlcmVkSURzIiwicHVzaE5vblN0YW5kYXJkV2FybmluZ1N0
YWNrIiwiaXNDcmVhdGluZ0VsZW1lbnQiLCJjdXJyZW50U291cmNlIiwicmVhY3RTdGFjayIsInN0
YWNrIiwicG9wTm9uU3RhbmRhcmRXYXJuaW5nU3RhY2siLCJyZWFjdFN0YWNrRW5kIiwid2Fybk5v
b3AiLCJjYW5EZWZpbmVQcm9wZXJ0eSIsImZ1bmNzIiwicmVkdWNlIiwicmVkdWNlciIsInByZWxv
YWRlZFN0YXRlIiwiZW5oYW5jZXIiLCJlbnN1cmVDYW5NdXRhdGVOZXh0TGlzdGVuZXJzIiwibmV4
dExpc3RlbmVycyIsImN1cnJlbnRMaXN0ZW5lcnMiLCJjdXJyZW50U3RhdGUiLCJhY3Rpb24iLCJp
c0Rpc3BhdGNoaW5nIiwiY3VycmVudFJlZHVjZXIiLCJyZXBsYWNlUmVkdWNlciIsIm5leHRSZWR1
Y2VyIiwiQWN0aW9uVHlwZXMiLCJJTklUIiwib2JzZXJ2YWJsZSIsIm91dGVyU3Vic2NyaWJlIiwi
b2JzZXJ2ZXIiLCJvYnNlcnZlU3RhdGUiLCJ1bnN1YnNjcmliZSIsIl9zeW1ib2xPYnNlcnZhYmxl
MiIsIl9zeW1ib2xPYnNlcnZhYmxlIiwiaWRlbnRpdHkiLCJ2YWxpZGF0ZU1ldGhvZE92ZXJyaWRl
IiwiaXNBbHJlYWR5RGVmaW5lZCIsInNwZWNQb2xpY3kiLCJSZWFjdENsYXNzSW50ZXJmYWNlIiwi
UmVhY3RDbGFzc01peGluIiwibWl4U3BlY0ludG9Db21wb25lbnQiLCJzcGVjIiwiYXV0b0JpbmRQ
YWlycyIsIl9fcmVhY3RBdXRvQmluZFBhaXJzIiwiTUlYSU5TX0tFWSIsIlJFU0VSVkVEX1NQRUNf
S0VZUyIsIm1peGlucyIsInByb3BlcnR5IiwiaXNSZWFjdENsYXNzTWV0aG9kIiwiaXNGdW5jdGlv
biIsInNob3VsZEF1dG9CaW5kIiwiYXV0b2JpbmQiLCJjcmVhdGVNZXJnZWRSZXN1bHRGdW5jdGlv
biIsImNyZWF0ZUNoYWluZWRGdW5jdGlvbiIsIm1peFN0YXRpY1NwZWNJbnRvQ29tcG9uZW50Iiwi
c3RhdGljcyIsImlzUmVzZXJ2ZWQiLCJpc0luaGVyaXRlZCIsIm1lcmdlSW50b1dpdGhOb0R1cGxp
Y2F0ZUtleXMiLCJvbmUiLCJ0d28iLCJiaW5kQXV0b0JpbmRNZXRob2QiLCJib3VuZE1ldGhvZCIs
ImJpbmRBdXRvQmluZE1ldGhvZHMiLCJwYWlycyIsImF1dG9CaW5kS2V5IiwiaW5pdGlhbFN0YXRl
IiwiZ2V0SW5pdGlhbFN0YXRlIiwiUmVhY3RDbGFzc0NvbXBvbmVudCIsImluamVjdGVkTWl4aW5z
IiwiSXNNb3VudGVkUHJlTWl4aW4iLCJJc01vdW50ZWRQb3N0TWl4aW4iLCJnZXREZWZhdWx0UHJv
cHMiLCJjb21wb25lbnRXaWxsTW91bnQiLCJjb21wb25lbnRXaWxsVXBkYXRlIiwidXBkYXRlQ29t
cG9uZW50IiwiX19pc01vdW50ZWQiLCJyZXBsYWNlU3RhdGUiLCJuZXdTdGF0ZSIsIlJlYWN0UHJv
cFR5cGVMb2NhdGlvbk5hbWVzIiwiY2FtZWxpemUiLCJfaHlwaGVuUGF0dGVybiIsIl8iLCJjaGFy
YWN0ZXIiLCJjYW1lbGl6ZVN0eWxlTmFtZSIsIm1zUGF0dGVybiIsIm91dGVyTm9kZSIsImlubmVy
Tm9kZSIsImlzVGV4dE5vZGUiLCJjb250YWlucyIsImNvbXBhcmVEb2N1bWVudFBvc2l0aW9uIiwi
Y2FsbGVlIiwiaGFzQXJyYXlOYXR1cmUiLCJjcmVhdGVBcnJheUZyb21NaXhlZCIsImdldE5vZGVO
YW1lIiwibm9kZU5hbWVNYXRjaCIsIm5vZGVOYW1lUGF0dGVybiIsImNyZWF0ZU5vZGVzRnJvbU1h
cmt1cCIsImhhbmRsZVNjcmlwdCIsImR1bW15Tm9kZSIsIndyYXAiLCJnZXRNYXJrdXBXcmFwIiwi
d3JhcERlcHRoIiwic2NyaXB0cyIsImdldEVsZW1lbnRzQnlUYWdOYW1lIiwibm9kZXMiLCJjaGls
ZE5vZGVzIiwibWFya3VwV3JhcCIsInNob3VsZFdyYXAiLCJzZWxlY3RXcmFwIiwidGFibGVXcmFw
IiwidHJXcmFwIiwic3ZnV3JhcCIsIioiLCJhcmVhIiwiY29sIiwibGVnZW5kIiwicGFyYW0iLCJ0
ciIsIm9wdGdyb3VwIiwib3B0aW9uIiwiY2FwdGlvbiIsImNvbGdyb3VwIiwidGJvZHkiLCJ0Zm9v
dCIsInRoZWFkIiwidGQiLCJ0aCIsInN2Z0VsZW1lbnRzIiwiZ2V0VW5ib3VuZGVkU2Nyb2xsUG9z
aXRpb24iLCJzY3JvbGxhYmxlIiwiV2luZG93IiwicGFnZVhPZmZzZXQiLCJzY3JvbGxMZWZ0Iiwi
cGFnZVlPZmZzZXQiLCJzY3JvbGxUb3AiLCJoeXBoZW5hdGUiLCJfdXBwZXJjYXNlUGF0dGVybiIs
Imh5cGhlbmF0ZVN0eWxlTmFtZSIsImlzTm9kZSIsIk5vZGUiLCJtZW1vaXplU3RyaW5nT25seSIs
ImNhY2hlIiwiUkVBQ1RfU1RBVElDUyIsIktOT1dOX1NUQVRJQ1MiLCJjYWxsZXIiLCJhcml0eSIs
Im9iamVjdFByb3RvdHlwZSIsImhvaXN0Tm9uUmVhY3RTdGF0aWNzIiwidGFyZ2V0Q29tcG9uZW50
Iiwic291cmNlQ29tcG9uZW50IiwiYmxhY2tsaXN0IiwiaW5oZXJpdGVkQ29tcG9uZW50IiwidW5k
ZWZpbmVkVGFnIiwibnVsbFRhZyIsInN5bVRvU3RyaW5nVGFnIiwiZ2V0UmF3VGFnIiwib2JqZWN0
VG9TdHJpbmciLCJ0b1N0cmluZ1RhZyIsImdsb2JhbCIsImZyZWVHbG9iYWwiLCJvdmVyQXJnIiwi
aXNPd24iLCJ1bm1hc2tlZCIsInJlc3VsdCIsIm5hdGl2ZU9iamVjdFRvU3RyaW5nIiwidHJhbnNm
b3JtIiwiZnJlZVNlbGYiLCJ0eXBlU3BlY3MiLCJ2YWx1ZXMiLCJsb2NhdGlvbiIsImdldFN0YWNr
Iiwic2hpbSIsInByb3BGdWxsTmFtZSIsInNlY3JldCIsImdldFNoaW0iLCJzeW1ib2wiLCJhbnki
LCJhcnJheU9mIiwiaW5zdGFuY2VPZiIsIm9iamVjdE9mIiwib25lT2YiLCJvbmVPZlR5cGUiLCJt
YXliZUl0ZXJhYmxlIiwiSVRFUkFUT1JfU1lNQk9MIiwiRkFVWF9JVEVSQVRPUl9TWU1CT0wiLCJQ
cm9wVHlwZUVycm9yIiwiY3JlYXRlQ2hhaW5hYmxlVHlwZUNoZWNrZXIiLCJ2YWxpZGF0ZSIsImNo
ZWNrVHlwZSIsIkFOT05ZTU9VUyIsImNoYWluZWRDaGVja1R5cGUiLCJjcmVhdGVQcmltaXRpdmVU
eXBlQ2hlY2tlciIsImV4cGVjdGVkVHlwZSIsInByb3BUeXBlIiwiZ2V0UHJvcFR5cGUiLCJwcmVj
aXNlVHlwZSIsImdldFByZWNpc2VUeXBlIiwiY3JlYXRlQW55VHlwZUNoZWNrZXIiLCJjcmVhdGVB
cnJheU9mVHlwZUNoZWNrZXIiLCJ0eXBlQ2hlY2tlciIsImNyZWF0ZUVsZW1lbnRUeXBlQ2hlY2tl
ciIsImNyZWF0ZUluc3RhbmNlVHlwZUNoZWNrZXIiLCJleHBlY3RlZENsYXNzIiwiZXhwZWN0ZWRD
bGFzc05hbWUiLCJhY3R1YWxDbGFzc05hbWUiLCJnZXRDbGFzc05hbWUiLCJjcmVhdGVFbnVtVHlw
ZUNoZWNrZXIiLCJleHBlY3RlZFZhbHVlcyIsInZhbHVlc1N0cmluZyIsImNyZWF0ZU9iamVjdE9m
VHlwZUNoZWNrZXIiLCJjcmVhdGVVbmlvblR5cGVDaGVja2VyIiwiYXJyYXlPZlR5cGVDaGVja2Vy
cyIsImNoZWNrZXIiLCJnZXRQb3N0Zml4Rm9yVHlwZVdhcm5pbmciLCJjcmVhdGVOb2RlQ2hlY2tl
ciIsImNyZWF0ZVNoYXBlVHlwZUNoZWNrZXIiLCJzaGFwZVR5cGVzIiwiZXZlcnkiLCJpc1N5bWJv
bCIsIkFSSUFET01Qcm9wZXJ0eUNvbmZpZyIsImFyaWEtY3VycmVudCIsImFyaWEtZGV0YWlscyIs
ImFyaWEtZGlzYWJsZWQiLCJhcmlhLWhpZGRlbiIsImFyaWEtaW52YWxpZCIsImFyaWEta2V5c2hv
cnRjdXRzIiwiYXJpYS1sYWJlbCIsImFyaWEtcm9sZWRlc2NyaXB0aW9uIiwiYXJpYS1hdXRvY29t
cGxldGUiLCJhcmlhLWNoZWNrZWQiLCJhcmlhLWV4cGFuZGVkIiwiYXJpYS1oYXNwb3B1cCIsImFy
aWEtbGV2ZWwiLCJhcmlhLW1vZGFsIiwiYXJpYS1tdWx0aWxpbmUiLCJhcmlhLW11bHRpc2VsZWN0
YWJsZSIsImFyaWEtb3JpZW50YXRpb24iLCJhcmlhLXBsYWNlaG9sZGVyIiwiYXJpYS1wcmVzc2Vk
IiwiYXJpYS1yZWFkb25seSIsImFyaWEtcmVxdWlyZWQiLCJhcmlhLXNlbGVjdGVkIiwiYXJpYS1z
b3J0IiwiYXJpYS12YWx1ZW1heCIsImFyaWEtdmFsdWVtaW4iLCJhcmlhLXZhbHVlbm93IiwiYXJp
YS12YWx1ZXRleHQiLCJhcmlhLWF0b21pYyIsImFyaWEtYnVzeSIsImFyaWEtbGl2ZSIsImFyaWEt
cmVsZXZhbnQiLCJhcmlhLWRyb3BlZmZlY3QiLCJhcmlhLWdyYWJiZWQiLCJhcmlhLWFjdGl2ZWRl
c2NlbmRhbnQiLCJhcmlhLWNvbGNvdW50IiwiYXJpYS1jb2xpbmRleCIsImFyaWEtY29sc3BhbiIs
ImFyaWEtY29udHJvbHMiLCJhcmlhLWRlc2NyaWJlZGJ5IiwiYXJpYS1lcnJvcm1lc3NhZ2UiLCJh
cmlhLWZsb3d0byIsImFyaWEtbGFiZWxsZWRieSIsImFyaWEtb3ducyIsImFyaWEtcG9zaW5zZXQi
LCJhcmlhLXJvd2NvdW50IiwiYXJpYS1yb3dpbmRleCIsImFyaWEtcm93c3BhbiIsImFyaWEtc2V0
c2l6ZSIsIkF1dG9Gb2N1c1V0aWxzIiwiZm9jdXNET01Db21wb25lbnQiLCJpc1ByZXN0byIsIm9w
ZXJhIiwiaXNLZXlwcmVzc0NvbW1hbmQiLCJnZXRDb21wb3NpdGlvbkV2ZW50VHlwZSIsImNvbXBv
c2l0aW9uU3RhcnQiLCJjb21wb3NpdGlvbkVuZCIsImNvbXBvc2l0aW9uVXBkYXRlIiwiaXNGYWxs
YmFja0NvbXBvc2l0aW9uU3RhcnQiLCJTVEFSVF9LRVlDT0RFIiwiaXNGYWxsYmFja0NvbXBvc2l0
aW9uRW5kIiwiRU5EX0tFWUNPREVTIiwiZ2V0RGF0YUZyb21DdXN0b21FdmVudCIsImV4dHJhY3RD
b21wb3NpdGlvbkV2ZW50IiwiZmFsbGJhY2tEYXRhIiwiY2FuVXNlQ29tcG9zaXRpb25FdmVudCIs
ImN1cnJlbnRDb21wb3NpdGlvbiIsInVzZUZhbGxiYWNrQ29tcG9zaXRpb25EYXRhIiwiZ2V0RGF0
YSIsIkZhbGxiYWNrQ29tcG9zaXRpb25TdGF0ZSIsIlN5bnRoZXRpY0NvbXBvc2l0aW9uRXZlbnQi
LCJjdXN0b21EYXRhIiwiZ2V0TmF0aXZlQmVmb3JlSW5wdXRDaGFycyIsIlNQQUNFQkFSX0NPREUi
LCJoYXNTcGFjZUtleXByZXNzIiwiU1BBQ0VCQVJfQ0hBUiIsImNoYXJzIiwiZ2V0RmFsbGJhY2tC
ZWZvcmVJbnB1dENoYXJzIiwiZXh0cmFjdEJlZm9yZUlucHV0RXZlbnQiLCJjYW5Vc2VUZXh0SW5w
dXRFdmVudCIsIlN5bnRoZXRpY0lucHV0RXZlbnQiLCJiZWZvcmVJbnB1dCIsImJ1YmJsZWQiLCJj
YXB0dXJlZCIsIkJlZm9yZUlucHV0RXZlbnRQbHVnaW4iLCJkYW5nZXJvdXNTdHlsZVZhbHVlIiwi
cHJvY2Vzc1N0eWxlTmFtZSIsInN0eWxlTmFtZSIsImhhc1Nob3J0aGFuZFByb3BlcnR5QnVnIiwi
c3R5bGVGbG9hdEFjY2Vzc29yIiwidGVtcFN0eWxlIiwic3R5bGUiLCJjc3NGbG9hdCIsIkNTU1By
b3BlcnR5T3BlcmF0aW9ucyIsImNyZWF0ZU1hcmt1cEZvclN0eWxlcyIsInN0eWxlcyIsInNlcmlh
bGl6ZWQiLCJpc0N1c3RvbVByb3BlcnR5Iiwic3R5bGVWYWx1ZSIsInNldFZhbHVlRm9yU3R5bGVz
Iiwic2V0UHJvcGVydHkiLCJleHBhbnNpb24iLCJpbmRpdmlkdWFsU3R5bGVOYW1lIiwiY3JlYXRl
QW5kQWNjdW11bGF0ZUNoYW5nZUV2ZW50IiwiY2hhbmdlIiwic2hvdWxkVXNlQ2hhbmdlRXZlbnQi
LCJtYW51YWxEaXNwYXRjaENoYW5nZUV2ZW50IiwiYWN0aXZlRWxlbWVudEluc3QiLCJydW5FdmVu
dEluQmF0Y2giLCJzdGFydFdhdGNoaW5nRm9yQ2hhbmdlRXZlbnRJRTgiLCJzdG9wV2F0Y2hpbmdG
b3JDaGFuZ2VFdmVudElFOCIsImdldEluc3RJZlZhbHVlQ2hhbmdlZCIsInVwZGF0ZWQiLCJDaGFu
Z2VFdmVudFBsdWdpbiIsIl9hbGxvd1NpbXVsYXRlZFBhc3NUaHJvdWdoIiwiZ2V0VGFyZ2V0SW5z
dEZvckNoYW5nZUV2ZW50IiwiaGFuZGxlRXZlbnRzRm9yQ2hhbmdlRXZlbnRJRTgiLCJzdGFydFdh
dGNoaW5nRm9yVmFsdWVDaGFuZ2UiLCJoYW5kbGVQcm9wZXJ0eUNoYW5nZSIsInN0b3BXYXRjaGlu
Z0ZvclZhbHVlQ2hhbmdlIiwiaGFuZGxlRXZlbnRzRm9ySW5wdXRFdmVudFBvbHlmaWxsIiwiZ2V0
VGFyZ2V0SW5zdEZvcklucHV0RXZlbnRQb2x5ZmlsbCIsInNob3VsZFVzZUNsaWNrRXZlbnQiLCJn
ZXRUYXJnZXRJbnN0Rm9yQ2xpY2tFdmVudCIsImdldFRhcmdldEluc3RGb3JJbnB1dE9yQ2hhbmdl
RXZlbnQiLCJoYW5kbGVDb250cm9sbGVkSW5wdXRCbHVyIiwiY29udHJvbGxlZCIsImRvZXNDaGFu
Z2VFdmVudEJ1YmJsZSIsImlzSW5wdXRFdmVudFN1cHBvcnRlZCIsIl9pc0lucHV0RXZlbnRTdXBw
b3J0ZWQiLCJnZXRUYXJnZXRJbnN0RnVuYyIsImhhbmRsZUV2ZW50RnVuYyIsInRhcmdldE5vZGUi
LCJvbGRDaGlsZCIsIm5ld0NoaWxkIiwiRGVmYXVsdEV2ZW50UGx1Z2luT3JkZXIiLCJtb3VzZUVu
dGVyIiwibW91c2VMZWF2ZSIsIkVudGVyTGVhdmVFdmVudFBsdWdpbiIsIndpbiIsInJlbGF0ZWQi
LCJ0b05vZGUiLCJfcm9vdCIsIl9zdGFydFRleHQiLCJfZmFsbGJhY2tUZXh0Iiwic3RhcnRWYWx1
ZSIsInN0YXJ0TGVuZ3RoIiwiZW5kVmFsdWUiLCJlbmRMZW5ndGgiLCJtaW5FbmQiLCJzbGljZVRh
aWwiLCJIVE1MRE9NUHJvcGVydHlDb25maWciLCJhY2NlcHQiLCJhY2NlcHRDaGFyc2V0IiwiYWNj
ZXNzS2V5IiwiYWxsb3dGdWxsU2NyZWVuIiwiYWxsb3dUcmFuc3BhcmVuY3kiLCJhbHQiLCJhcyIs
ImFzeW5jIiwiYXV0b0NvbXBsZXRlIiwiYXV0b1BsYXkiLCJjZWxsUGFkZGluZyIsImNlbGxTcGFj
aW5nIiwiY2hhclNldCIsImNoYWxsZW5nZSIsImNpdGUiLCJjbGFzc0lEIiwiY29scyIsImNvbFNw
YW4iLCJjb250ZXh0TWVudSIsImNvbnRyb2xzIiwiY29vcmRzIiwiY3Jvc3NPcmlnaW4iLCJkYXRl
VGltZSIsImRlZmVyIiwiZG93bmxvYWQiLCJkcmFnZ2FibGUiLCJlbmNUeXBlIiwiZm9ybSIsImZv
cm1BY3Rpb24iLCJmb3JtRW5jVHlwZSIsImZvcm1NZXRob2QiLCJmb3JtTm9WYWxpZGF0ZSIsImZv
cm1UYXJnZXQiLCJmcmFtZUJvcmRlciIsImhlYWRlcnMiLCJoZWlnaHQiLCJoaWdoIiwiaHJlZiIs
ImhyZWZMYW5nIiwiaHRtbEZvciIsImh0dHBFcXVpdiIsImljb24iLCJpbnB1dE1vZGUiLCJpbnRl
Z3JpdHkiLCJrZXlQYXJhbXMiLCJrZXlUeXBlIiwia2luZCIsImxhYmVsIiwibGFuZyIsImxpc3Qi
LCJsb29wIiwibG93IiwibWFuaWZlc3QiLCJtYXJnaW5IZWlnaHQiLCJtYXJnaW5XaWR0aCIsIm1h
eCIsIm1heExlbmd0aCIsIm1lZGlhIiwibWVkaWFHcm91cCIsIm1pbkxlbmd0aCIsIm11dGVkIiwi
bm9uY2UiLCJub1ZhbGlkYXRlIiwib3BlbiIsIm9wdGltdW0iLCJwYXR0ZXJuIiwicGxheXNJbmxp
bmUiLCJwb3N0ZXIiLCJwcmVsb2FkIiwicHJvZmlsZSIsInJhZGlvR3JvdXAiLCJyZWZlcnJlclBv
bGljeSIsInJlbCIsInJlcXVpcmVkIiwicmV2ZXJzZWQiLCJyb2xlIiwicm93cyIsInJvd1NwYW4i
LCJzYW5kYm94Iiwic2NvcGVkIiwic2Nyb2xsaW5nIiwic2VhbWxlc3MiLCJzaXplIiwic2l6ZXMi
LCJzcGFuIiwic3BlbGxDaGVjayIsInNyYyIsInNyY0RvYyIsInNyY0xhbmciLCJzcmNTZXQiLCJz
dW1tYXJ5IiwidGFiSW5kZXgiLCJ1c2VNYXAiLCJ3aWR0aCIsIndtb2RlIiwiYWJvdXQiLCJkYXRh
dHlwZSIsImlubGlzdCIsInJlc291cmNlIiwidHlwZW9mIiwidm9jYWIiLCJhdXRvQ2FwaXRhbGl6
ZSIsImF1dG9Db3JyZWN0IiwiYXV0b1NhdmUiLCJpdGVtUHJvcCIsIml0ZW1TY29wZSIsIml0ZW1U
eXBlIiwiaXRlbUlEIiwiaXRlbVJlZiIsInJlc3VsdHMiLCJzZWN1cml0eSIsInVuc2VsZWN0YWJs
ZSIsInZhbGlkaXR5IiwiYmFkSW5wdXQiLCJpbnN0YW50aWF0ZUNoaWxkIiwiY2hpbGRJbnN0YW5j
ZXMiLCJzZWxmRGVidWdJRCIsImtleVVuaXF1ZSIsIlJlYWN0Q2hpbGRSZWNvbmNpbGVyIiwiaW5z
dGFudGlhdGVDaGlsZHJlbiIsIm5lc3RlZENoaWxkTm9kZXMiLCJ1cGRhdGVDaGlsZHJlbiIsInBy
ZXZDaGlsZHJlbiIsIm5leHRDaGlsZHJlbiIsIm1vdW50SW1hZ2VzIiwicmVtb3ZlZE5vZGVzIiwi
cHJldkNoaWxkIiwibmV4dENoaWxkSW5zdGFuY2UiLCJuZXh0Q2hpbGRNb3VudEltYWdlIiwidW5t
b3VudENoaWxkcmVuIiwicmVuZGVyZWRDaGlsZHJlbiIsInJlbmRlcmVkQ2hpbGQiLCJSZWFjdERP
TUlET3BlcmF0aW9ucyIsIlJlYWN0Q29tcG9uZW50QnJvd3NlckVudmlyb25tZW50IiwiZGFuZ2Vy
b3VzbHlQcm9jZXNzQ2hpbGRyZW5VcGRhdGVzIiwiU3RhdGVsZXNzQ29tcG9uZW50Iiwid2Fybklm
SW52YWxpZEVsZW1lbnQiLCJzaG91bGRDb25zdHJ1Y3QiLCJpc1B1cmVDb21wb25lbnQiLCJDb21w
b3NpdGVUeXBlcyIsIkltcHVyZUNsYXNzIiwiUHVyZUNsYXNzIiwiU3RhdGVsZXNzRnVuY3Rpb25h
bCIsIm5leHRNb3VudElEIiwiX2NvbXBvc2l0ZVR5cGUiLCJfY2FsbGVkQ29tcG9uZW50V2lsbFVu
bW91bnQiLCJyZW5kZXJlZEVsZW1lbnQiLCJwdWJsaWNQcm9wcyIsInB1YmxpY0NvbnRleHQiLCJf
cHJvY2Vzc0NvbnRleHQiLCJ1cGRhdGVRdWV1ZSIsImdldFVwZGF0ZVF1ZXVlIiwiZG9Db25zdHJ1
Y3QiLCJfY29uc3RydWN0Q29tcG9uZW50IiwidW5zdGFibGVfaGFuZGxlRXJyb3IiLCJwZXJmb3Jt
SW5pdGlhbE1vdW50V2l0aEVycm9ySGFuZGxpbmciLCJwZXJmb3JtSW5pdGlhbE1vdW50IiwiX2Nv
bnN0cnVjdENvbXBvbmVudFdpdGhvdXRPd25lciIsIl9wcm9jZXNzUGVuZGluZ1N0YXRlIiwiZGVi
dWdJRCIsIl9yZW5kZXJWYWxpZGF0ZWRDb21wb25lbnQiLCJfbWFza0NvbnRleHQiLCJtYXNrZWRD
b250ZXh0IiwiY29udGV4dE5hbWUiLCJjdXJyZW50Q29udGV4dCIsImNoaWxkQ29udGV4dCIsIl9j
aGVja0NvbnRleHRUeXBlcyIsInByZXZDb250ZXh0IiwicHJldlBhcmVudEVsZW1lbnQiLCJuZXh0
UGFyZW50RWxlbWVudCIsInByZXZVbm1hc2tlZENvbnRleHQiLCJuZXh0VW5tYXNrZWRDb250ZXh0
Iiwid2lsbFJlY2VpdmUiLCJwcmV2UHJvcHMiLCJuZXh0U3RhdGUiLCJzaG91bGRVcGRhdGUiLCJf
cGVyZm9ybUNvbXBvbmVudFVwZGF0ZSIsInBhcnRpYWwiLCJ1bm1hc2tlZENvbnRleHQiLCJwcmV2
U3RhdGUiLCJoYXNDb21wb25lbnREaWRVcGRhdGUiLCJfdXBkYXRlUmVuZGVyZWRDb21wb25lbnQi
LCJwcmV2Q29tcG9uZW50SW5zdGFuY2UiLCJwcmV2UmVuZGVyZWRFbGVtZW50IiwibmV4dFJlbmRl
cmVkRWxlbWVudCIsIm9sZEhvc3ROb2RlIiwibmV4dE1hcmt1cCIsIl9yZXBsYWNlTm9kZVdpdGhN
YXJrdXAiLCJwcmV2SW5zdGFuY2UiLCJfcmVuZGVyVmFsaWRhdGVkQ29tcG9uZW50V2l0aG91dE93
bmVyT3JDb250ZXh0IiwiYXR0YWNoUmVmIiwicHVibGljQ29tcG9uZW50SW5zdGFuY2UiLCJkZXRh
Y2hSZWYiLCJSZWFjdERlZmF1bHRJbmplY3Rpb24iLCJmaW5kRE9NTm9kZSIsImluamVjdCIsIlJl
YWN0RE9NIiwidW5zdGFibGVfYmF0Y2hlZFVwZGF0ZXMiLCJ1bnN0YWJsZV9yZW5kZXJTdWJ0cmVl
SW50b0NvbnRhaW5lciIsIl9fUkVBQ1RfREVWVE9PTFNfR0xPQkFMX0hPT0tfXyIsIk1vdW50Iiwi
UmVjb25jaWxlciIsImFzc2VydFZhbGlkUHJvcHMiLCJ2b2lkRWxlbWVudFRhZ3MiLCJfdGFnIiwi
ZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwiLCJIVE1MIiwiZW5xdWV1ZVB1dExpc3RlbmVyIiwiUmVh
Y3RTZXJ2ZXJSZW5kZXJpbmdUcmFuc2FjdGlvbiIsImNvbnRhaW5lckluZm8iLCJpc0RvY3VtZW50
RnJhZ21lbnQiLCJfbm9kZSIsIkRPQ19GUkFHTUVOVF9UWVBFIiwiX293bmVyRG9jdW1lbnQiLCJs
aXN0ZW5lclRvUHV0IiwiaW5wdXRQb3N0TW91bnQiLCJSZWFjdERPTUlucHV0IiwicG9zdE1vdW50
V3JhcHBlciIsInRleHRhcmVhUG9zdE1vdW50IiwiUmVhY3RET01UZXh0YXJlYSIsIm9wdGlvblBv
c3RNb3VudCIsIlJlYWN0RE9NT3B0aW9uIiwidHJhY2tJbnB1dFZhbHVlIiwidHJhcEJ1YmJsZWRF
dmVudHNMb2NhbCIsImdldE5vZGUiLCJtZWRpYUV2ZW50cyIsInBvc3RVcGRhdGVTZWxlY3RXcmFw
cGVyIiwidmFsaWRhdGVEYW5nZXJvdXNUYWciLCJ2YWxpZGF0ZWRUYWdDYWNoZSIsIlZBTElEX1RB
R19SRUdFWCIsImlzQ3VzdG9tQ29tcG9uZW50IiwiUmVhY3RET01Db21wb25lbnQiLCJfbmFtZXNw
YWNlVVJJIiwiX3ByZXZpb3VzU3R5bGUiLCJfcHJldmlvdXNTdHlsZUNvcHkiLCJSZWFjdE11bHRp
Q2hpbGQiLCJDT05URU5UX1RZUEVTIiwiU1RZTEUiLCJzdXBwcmVzc0NvbnRlbnRFZGl0YWJsZVdh
cm5pbmciLCJvbWl0dGVkQ2xvc2VUYWdzIiwiYmFzZSIsImJyIiwiZW1iZWQiLCJociIsImltZyIs
ImtleWdlbiIsImxpbmsiLCJtZXRhIiwid2JyIiwibmV3bGluZUVhdGluZ1RhZ3MiLCJsaXN0aW5n
IiwicHJlIiwidGV4dGFyZWEiLCJtZW51aXRlbSIsImdsb2JhbElkQ291bnRlciIsIk1peGluIiwi
X2lkQ291bnRlciIsInBhcmVudFRhZyIsIm1vdW50SW1hZ2UiLCJlbCIsImRpdiIsImNyZWF0ZUVs
ZW1lbnROUyIsIl91cGRhdGVET01Qcm9wZXJ0aWVzIiwibGF6eVRyZWUiLCJfY3JlYXRlSW5pdGlh
bENoaWxkcmVuIiwidGFnT3BlbiIsIl9jcmVhdGVPcGVuVGFnTWFya3VwQW5kUHV0TGlzdGVuZXJz
IiwidGFnQ29udGVudCIsIl9jcmVhdGVDb250ZW50TWFya3VwIiwicHJvcEtleSIsInJlbmRlclRv
U3RhdGljTWFya3VwIiwiX19odG1sIiwiY29udGVudFRvVXNlIiwiY2hpbGRyZW5Ub1VzZSIsIm1v
dW50Q2hpbGRyZW4iLCJsYXN0UHJvcHMiLCJfdXBkYXRlRE9NQ2hpbGRyZW4iLCJ1cGRhdGVXcmFw
cGVyIiwic3R5bGVVcGRhdGVzIiwibGFzdFN0eWxlIiwibmV4dFByb3AiLCJsYXN0UHJvcCIsImxh
c3RDb250ZW50IiwibmV4dENvbnRlbnQiLCJsYXN0SHRtbCIsIm5leHRIdG1sIiwibGFzdENoaWxk
cmVuIiwibGFzdEhhc0NvbnRlbnRPckh0bWwiLCJuZXh0SGFzQ29udGVudE9ySHRtbCIsInVwZGF0
ZVRleHRDb250ZW50IiwidXBkYXRlTWFya3VwIiwidG9wTGV2ZWxXcmFwcGVyIiwiUmVhY3RET01F
bXB0eUNvbXBvbmVudCIsImRvbUlEIiwiY3JlYXRlQ29tbWVudCIsInVzZUZpYmVyIiwiZm9yY2VV
cGRhdGVJZk1vdW50ZWQiLCJpc0NvbnRyb2xsZWQiLCJ1c2VzQ2hlY2tlZCIsInJvb3ROb2RlIiwi
cXVlcnlSb290IiwiZ3JvdXAiLCJxdWVyeVNlbGVjdG9yQWxsIiwib3RoZXJOb2RlIiwib3RoZXJJ
bnN0YW5jZSIsImhvc3RQcm9wcyIsImRlZmF1bHRDaGVja2VkIiwiaW5pdGlhbENoZWNrZWQiLCJ2
YWx1ZUFzTnVtYmVyIiwicGFyc2VGbG9hdCIsImZsYXR0ZW5DaGlsZHJlbiIsImRpZFdhcm5JbnZh
bGlkT3B0aW9uQ2hpbGRyZW4iLCJzZWxlY3RWYWx1ZSIsInNlbGVjdFBhcmVudCIsImlzQ29sbGFw
c2VkIiwiYW5jaG9yTm9kZSIsImFuY2hvck9mZnNldCIsImZvY3VzT2Zmc2V0IiwiZ2V0SUVPZmZz
ZXRzIiwic2VsZWN0ZWRSYW5nZSIsInNlbGVjdGVkTGVuZ3RoIiwiZnJvbVN0YXJ0IiwiZHVwbGlj
YXRlIiwibW92ZVRvRWxlbWVudFRleHQiLCJzZXRFbmRQb2ludCIsInN0YXJ0T2Zmc2V0IiwiZW5k
T2Zmc2V0IiwiZ2V0TW9kZXJuT2Zmc2V0cyIsInJhbmdlQ291bnQiLCJjdXJyZW50UmFuZ2UiLCJn
ZXRSYW5nZUF0Iiwic3RhcnRDb250YWluZXIiLCJlbmRDb250YWluZXIiLCJpc1NlbGVjdGlvbkNv
bGxhcHNlZCIsInJhbmdlTGVuZ3RoIiwidGVtcFJhbmdlIiwiY2xvbmVSYW5nZSIsInNlbGVjdE5v
ZGVDb250ZW50cyIsInNldEVuZCIsImlzVGVtcFJhbmdlQ29sbGFwc2VkIiwiZGV0ZWN0aW9uUmFu
Z2UiLCJzZXRTdGFydCIsImlzQmFja3dhcmQiLCJjb2xsYXBzZWQiLCJzZXRJRU9mZnNldHMiLCJz
ZXRNb2Rlcm5PZmZzZXRzIiwiZXh0ZW5kIiwidGVtcCIsInN0YXJ0TWFya2VyIiwiZ2V0Tm9kZUZv
ckNoYXJhY3Rlck9mZnNldCIsImVuZE1hcmtlciIsIm9mZnNldCIsInJlbW92ZUFsbFJhbmdlcyIs
ImFkZFJhbmdlIiwidXNlSUVPZmZzZXRzIiwiUmVhY3RET01UZXh0Q29tcG9uZW50IiwiX3N0cmlu
Z1RleHQiLCJfY2xvc2luZ0NvbW1lbnQiLCJfY29tbWVudE5vZGVzIiwib3BlbmluZ1ZhbHVlIiwi
Y2xvc2luZ1ZhbHVlIiwiY3JlYXRlRG9jdW1lbnRGcmFnbWVudCIsImVzY2FwZWRUZXh0IiwibmV4
dFRleHQiLCJuZXh0U3RyaW5nVGV4dCIsImNvbW1lbnROb2RlcyIsImhvc3ROb2RlIiwiaW5zdEEi
LCJpbnN0QiIsImRlcHRoQSIsInRlbXBBIiwiZGVwdGhCIiwidGVtcEIiLCJkZXB0aCIsInBhdGgi
LCJjb21tb24iLCJwYXRoRnJvbSIsInBhdGhUbyIsIlJlYWN0RGVmYXVsdEJhdGNoaW5nU3RyYXRl
Z3lUcmFuc2FjdGlvbiIsIlJFU0VUX0JBVENIRURfVVBEQVRFUyIsIlJlYWN0RGVmYXVsdEJhdGNo
aW5nU3RyYXRlZ3kiLCJGTFVTSF9CQVRDSEVEX1VQREFURVMiLCJhbHJlYWR5QmF0Y2hpbmdVcGRh
dGVzIiwiYWxyZWFkeUluamVjdGVkIiwiUmVhY3RJbmplY3Rpb24iLCJFdmVudEVtaXR0ZXIiLCJS
ZWFjdERPTVRyZWVUcmF2ZXJzYWwiLCJTaW1wbGVFdmVudFBsdWdpbiIsIlNlbGVjdEV2ZW50UGx1
Z2luIiwiSG9zdENvbXBvbmVudCIsIlNWR0RPTVByb3BlcnR5Q29uZmlnIiwiRW1wdHlDb21wb25l
bnQiLCJVcGRhdGVzIiwicnVuRXZlbnRRdWV1ZUluQmF0Y2giLCJmaW5kUGFyZW50IiwiVG9wTGV2
ZWxDYWxsYmFja0Jvb2tLZWVwaW5nIiwiYW5jZXN0b3JzIiwiaGFuZGxlVG9wTGV2ZWxJbXBsIiwi
Ym9va0tlZXBpbmciLCJhbmNlc3RvciIsIl9oYW5kbGVUb3BMZXZlbCIsInNjcm9sbFZhbHVlTW9u
aXRvciIsInR3b0FyZ3VtZW50UG9vbGVyIiwiX2VuYWJsZWQiLCJkaXNwYXRjaEV2ZW50IiwiYWRs
ZXIzMiIsIlRBR19FTkQiLCJDT01NRU5UX1NUQVJUIiwiYWRkQ2hlY2tzdW1Ub01hcmt1cCIsImV4
aXN0aW5nQ2hlY2tzdW0iLCJtYXJrdXBDaGVja3N1bSIsIm1ha2VJbnNlcnRNYXJrdXAiLCJ0b0lu
ZGV4IiwiZnJvbUluZGV4IiwibWFrZU1vdmUiLCJtYWtlUmVtb3ZlIiwibWFrZVNldE1hcmt1cCIs
Im1ha2VUZXh0Q29udGVudCIsInByb2Nlc3NRdWV1ZSIsIl9yZWNvbmNpbGVySW5zdGFudGlhdGVD
aGlsZHJlbiIsIm5lc3RlZENoaWxkcmVuIiwiX3JlY29uY2lsZXJVcGRhdGVDaGlsZHJlbiIsIm5l
eHROZXN0ZWRDaGlsZHJlbkVsZW1lbnRzIiwiX3VwZGF0ZUNoaWxkcmVuIiwibmV4dEluZGV4Iiwi
bmV4dE1vdW50SW5kZXgiLCJsYXN0UGxhY2VkTm9kZSIsIl9tb3VudENoaWxkQXRJbmRleCIsIl91
bm1vdW50Q2hpbGQiLCJjcmVhdGVDaGlsZCIsImlzVmFsaWRPd25lciIsIlJlYWN0T3duZXIiLCJh
ZGRDb21wb25lbnRBc1JlZlRvIiwicmVtb3ZlQ29tcG9uZW50QXNSZWZGcm9tIiwib3duZXJQdWJs
aWNJbnN0YW5jZSIsInJlYWN0TW91bnRSZWFkeSIsIlNFTEVDVElPTl9SRVNUT1JBVElPTiIsIkVW
RU5UX1NVUFBSRVNTSU9OIiwiY3VycmVudGx5RW5hYmxlZCIsInByZXZpb3VzbHlFbmFibGVkIiwi
T05fRE9NX1JFQURZX1FVRVVFSU5HIiwicHJldlJlZiIsInByZXZPd25lciIsIm5leHRSZWYiLCJu
ZXh0T3duZXIiLCJSZWFjdFNlcnZlclVwZGF0ZVF1ZXVlIiwibm9vcENhbGxiYWNrUXVldWUiLCJO
UyIsInhsaW5rIiwieG1sIiwiQVRUUlMiLCJhY2NlbnRIZWlnaHQiLCJhY2N1bXVsYXRlIiwiYWRk
aXRpdmUiLCJhbGlnbm1lbnRCYXNlbGluZSIsImFsbG93UmVvcmRlciIsImFscGhhYmV0aWMiLCJh
bXBsaXR1ZGUiLCJhcmFiaWNGb3JtIiwiYXNjZW50IiwiYXR0cmlidXRlVHlwZSIsImF1dG9SZXZl
cnNlIiwiYXppbXV0aCIsImJhc2VGcmVxdWVuY3kiLCJiYXNlUHJvZmlsZSIsImJhc2VsaW5lU2hp
ZnQiLCJiYm94IiwiYmVnaW4iLCJiaWFzIiwiYnkiLCJjYWxjTW9kZSIsImNhcEhlaWdodCIsImNs
aXAiLCJjbGlwUGF0aCIsImNsaXBSdWxlIiwiY2xpcFBhdGhVbml0cyIsImNvbG9ySW50ZXJwb2xh
dGlvbiIsImNvbG9ySW50ZXJwb2xhdGlvbkZpbHRlcnMiLCJjb2xvclByb2ZpbGUiLCJjb2xvclJl
bmRlcmluZyIsImNvbnRlbnRTY3JpcHRUeXBlIiwiY29udGVudFN0eWxlVHlwZSIsImN1cnNvciIs
ImN4IiwiY3kiLCJkZWNlbGVyYXRlIiwiZGVzY2VudCIsImRpZmZ1c2VDb25zdGFudCIsImRpcmVj
dGlvbiIsImRpc3BsYXkiLCJkaXZpc29yIiwiZG9taW5hbnRCYXNlbGluZSIsImR1ciIsImR4Iiwi
ZHkiLCJlZGdlTW9kZSIsImVsZXZhdGlvbiIsImVuYWJsZUJhY2tncm91bmQiLCJleHBvbmVudCIs
ImV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQiLCJmaWxsIiwiZmlsbFJ1bGUiLCJmaWx0ZXIiLCJm
aWx0ZXJSZXMiLCJmaWx0ZXJVbml0cyIsImZsb29kQ29sb3IiLCJmb2N1c2FibGUiLCJmb250U2l6
ZUFkanVzdCIsImZvbnRTdHJldGNoIiwiZngiLCJmeSIsImcxIiwiZzIiLCJnbHlwaE5hbWUiLCJn
bHlwaE9yaWVudGF0aW9uSG9yaXpvbnRhbCIsImdseXBoT3JpZW50YXRpb25WZXJ0aWNhbCIsImds
eXBoUmVmIiwiZ3JhZGllbnRUcmFuc2Zvcm0iLCJncmFkaWVudFVuaXRzIiwiaGFuZ2luZyIsImhv
cml6QWR2WCIsImhvcml6T3JpZ2luWCIsImlkZW9ncmFwaGljIiwiaW1hZ2VSZW5kZXJpbmciLCJp
biIsImluMiIsImludGVyY2VwdCIsImsxIiwiazIiLCJrMyIsIms0Iiwia2VybmVsTWF0cml4Iiwi
a2VybmVsVW5pdExlbmd0aCIsImtlcm5pbmciLCJrZXlQb2ludHMiLCJrZXlTcGxpbmVzIiwia2V5
VGltZXMiLCJsZW5ndGhBZGp1c3QiLCJsZXR0ZXJTcGFjaW5nIiwibGlnaHRpbmdDb2xvciIsImxp
bWl0aW5nQ29uZUFuZ2xlIiwibG9jYWwiLCJtYXJrZXJFbmQiLCJtYXJrZXJNaWQiLCJtYXJrZXJT
dGFydCIsIm1hcmtlckhlaWdodCIsIm1hcmtlclVuaXRzIiwibWFya2VyV2lkdGgiLCJtYXNrIiwi
bWFza0NvbnRlbnRVbml0cyIsIm1hc2tVbml0cyIsIm1hdGhlbWF0aWNhbCIsIm1vZGUiLCJudW1P
Y3RhdmVzIiwib3BlcmF0b3IiLCJvcmllbnQiLCJvcmllbnRhdGlvbiIsIm9yaWdpbiIsIm92ZXJm
bG93Iiwib3ZlcmxpbmVQb3NpdGlvbiIsIm92ZXJsaW5lVGhpY2tuZXNzIiwicGFpbnRPcmRlciIs
InBhbm9zZTEiLCJwYXRoTGVuZ3RoIiwicGF0dGVybkNvbnRlbnRVbml0cyIsInBhdHRlcm5UcmFu
c2Zvcm0iLCJwYXR0ZXJuVW5pdHMiLCJwb2ludGVyRXZlbnRzIiwicG9pbnRzIiwicG9pbnRzQXRY
IiwicG9pbnRzQXRZIiwicG9pbnRzQXRaIiwicHJlc2VydmVBbHBoYSIsInByZXNlcnZlQXNwZWN0
UmF0aW8iLCJwcmltaXRpdmVVbml0cyIsInIiLCJyYWRpdXMiLCJyZWZYIiwicmVmWSIsInJlbmRl
cmluZ0ludGVudCIsInJlcGVhdENvdW50IiwicmVwZWF0RHVyIiwicmVxdWlyZWRFeHRlbnNpb25z
IiwicmVxdWlyZWRGZWF0dXJlcyIsInJlc3RhcnQiLCJyb3RhdGUiLCJyeCIsInJ5Iiwic2NhbGUi
LCJzZWVkIiwic2hhcGVSZW5kZXJpbmciLCJzbG9wZSIsInNwYWNpbmciLCJzcGVjdWxhckNvbnN0
YW50Iiwic3BlY3VsYXJFeHBvbmVudCIsInNwZWVkIiwic3ByZWFkTWV0aG9kIiwic3RkRGV2aWF0
aW9uIiwic3RlbWgiLCJzdGVtdiIsInN0aXRjaFRpbGVzIiwic3RvcENvbG9yIiwic3RyaWtldGhy
b3VnaFBvc2l0aW9uIiwic3RyaWtldGhyb3VnaFRoaWNrbmVzcyIsInN0cm9rZSIsInN0cm9rZUxp
bmVjYXAiLCJzdHJva2VMaW5lam9pbiIsInN1cmZhY2VTY2FsZSIsInN5c3RlbUxhbmd1YWdlIiwi
dGFibGVWYWx1ZXMiLCJ0YXJnZXRYIiwidGFyZ2V0WSIsInRleHRBbmNob3IiLCJ0ZXh0RGVjb3Jh
dGlvbiIsInRleHRSZW5kZXJpbmciLCJ0ZXh0TGVuZ3RoIiwidTEiLCJ1MiIsInVuZGVybGluZVBv
c2l0aW9uIiwidW5kZXJsaW5lVGhpY2tuZXNzIiwidW5pY29kZSIsInVuaWNvZGVCaWRpIiwidW5p
Y29kZVJhbmdlIiwidW5pdHNQZXJFbSIsInZBbHBoYWJldGljIiwidkhhbmdpbmciLCJ2SWRlb2dy
YXBoaWMiLCJ2TWF0aGVtYXRpY2FsIiwidmVjdG9yRWZmZWN0IiwidmVydEFkdlkiLCJ2ZXJ0T3Jp
Z2luWCIsInZlcnRPcmlnaW5ZIiwidmlld0JveCIsInZpZXdUYXJnZXQiLCJ2aXNpYmlsaXR5Iiwi
d2lkdGhzIiwid29yZFNwYWNpbmciLCJ3cml0aW5nTW9kZSIsInhIZWlnaHQiLCJ4MSIsIngyIiwi
eENoYW5uZWxTZWxlY3RvciIsInhsaW5rQWN0dWF0ZSIsInhsaW5rQXJjcm9sZSIsInhsaW5rSHJl
ZiIsInhsaW5rUm9sZSIsInhsaW5rU2hvdyIsInhsaW5rVGl0bGUiLCJ4bGlua1R5cGUiLCJ4bWxC
YXNlIiwieG1sbnMiLCJ4bWxuc1hsaW5rIiwieG1sTGFuZyIsInhtbFNwYWNlIiwieTEiLCJ5MiIs
InlDaGFubmVsU2VsZWN0b3IiLCJ6Iiwiem9vbUFuZFBhbiIsInRvcCIsImJvdW5kaW5nVG9wIiwi
bGVmdCIsImJvdW5kaW5nTGVmdCIsImNvbnN0cnVjdFNlbGVjdEV2ZW50IiwibW91c2VEb3duIiwi
Y3VycmVudFNlbGVjdGlvbiIsImxhc3RTZWxlY3Rpb24iLCJza2lwU2VsZWN0aW9uQ2hhbmdlRXZl
bnQiLCJoYXNMaXN0ZW5lciIsIlN5bnRoZXRpY0FuaW1hdGlvbkV2ZW50IiwiU3ludGhldGljQ2xp
cGJvYXJkRXZlbnQiLCJTeW50aGV0aWNGb2N1c0V2ZW50IiwiU3ludGhldGljS2V5Ym9hcmRFdmVu
dCIsIlN5bnRoZXRpY0RyYWdFdmVudCIsIlN5bnRoZXRpY1RvdWNoRXZlbnQiLCJTeW50aGV0aWNU
cmFuc2l0aW9uRXZlbnQiLCJTeW50aGV0aWNXaGVlbEV2ZW50IiwidG9wTGV2ZWxFdmVudHNUb0Rp
c3BhdGNoQ29uZmlnIiwiY2FwaXRhbGl6ZWRFdmVudCIsIm9uRXZlbnQiLCJ0b3BFdmVudCIsIm9u
Q2xpY2tMaXN0ZW5lcnMiLCJFdmVudENvbnN0cnVjdG9yIiwiQW5pbWF0aW9uRXZlbnRJbnRlcmZh
Y2UiLCJhbmltYXRpb25OYW1lIiwiZWxhcHNlZFRpbWUiLCJwc2V1ZG9FbGVtZW50IiwiQ2xpcGJv
YXJkRXZlbnRJbnRlcmZhY2UiLCJjbGlwYm9hcmREYXRhIiwiQ29tcG9zaXRpb25FdmVudEludGVy
ZmFjZSIsIkRyYWdFdmVudEludGVyZmFjZSIsImRhdGFUcmFuc2ZlciIsIkZvY3VzRXZlbnRJbnRl
cmZhY2UiLCJJbnB1dEV2ZW50SW50ZXJmYWNlIiwiZ2V0RXZlbnRLZXkiLCJLZXlib2FyZEV2ZW50
SW50ZXJmYWNlIiwicmVwZWF0IiwibG9jYWxlIiwiVG91Y2hFdmVudEludGVyZmFjZSIsInRvdWNo
ZXMiLCJ0YXJnZXRUb3VjaGVzIiwiY2hhbmdlZFRvdWNoZXMiLCJUcmFuc2l0aW9uRXZlbnRJbnRl
cmZhY2UiLCJXaGVlbEV2ZW50SW50ZXJmYWNlIiwiZGVsdGFYIiwid2hlZWxEZWx0YVgiLCJkZWx0
YVkiLCJ3aGVlbERlbHRhWSIsIndoZWVsRGVsdGEiLCJkZWx0YVoiLCJkZWx0YU1vZGUiLCJsIiwi
TU9EIiwiaXNFbXB0eSIsImlzTm9uTnVtZXJpYyIsImNvbXBvbmVudE9yRWxlbWVudCIsImZsYXR0
ZW5TaW5nbGVDaGlsZEludG9Db250ZXh0Iiwibm9ybWFsaXplS2V5IiwidHJhbnNsYXRlVG9LZXki
LCJFc2MiLCJTcGFjZWJhciIsIkxlZnQiLCJVcCIsIlJpZ2h0IiwiRG93biIsIkRlbCIsIldpbiIs
Ik1lbnUiLCJBcHBzIiwiU2Nyb2xsIiwiTW96UHJpbnRhYmxlS2V5IiwiOCIsIjkiLCIxMiIsIjEz
IiwiMTYiLCIxNyIsIjE4IiwiMTkiLCIyMCIsIjI3IiwiMzIiLCIzMyIsIjM0IiwiMzUiLCIzNiIs
IjM3IiwiMzgiLCIzOSIsIjQwIiwiNDUiLCI0NiIsIjExMiIsIjExMyIsIjExNCIsIjExNSIsIjEx
NiIsIjExNyIsIjExOCIsIjExOSIsIjEyMCIsIjEyMSIsIjEyMiIsIjEyMyIsIjE0NCIsIjE0NSIs
IjIyNCIsImdldExlYWZOb2RlIiwiZ2V0U2libGluZ05vZGUiLCJub2RlU3RhcnQiLCJub2RlRW5k
IiwibWFrZVByZWZpeE1hcCIsInN0eWxlUHJvcCIsInByZWZpeGVkRXZlbnROYW1lcyIsInZlbmRv
clByZWZpeGVzIiwicHJlZml4TWFwIiwiYW5pbWF0aW9uZW5kIiwiYW5pbWF0aW9uaXRlcmF0aW9u
IiwiYW5pbWF0aW9uc3RhcnQiLCJ0cmFuc2l0aW9uZW5kIiwiYW5pbWF0aW9uIiwidHJhbnNpdGlv
biIsIl9Qcm92aWRlciRjaGlsZENvbnRleCIsInN1YktleSIsImZhY3RvcmllcyIsInN0cmljdEVx
dWFsIiwiY3JlYXRlQ29ubmVjdCIsIl9yZWYkY29ubmVjdEhPQyIsImNvbm5lY3RIT0MiLCJfcmVm
JG1hcFN0YXRlVG9Qcm9wc0YiLCJtYXBTdGF0ZVRvUHJvcHNGYWN0b3JpZXMiLCJfbWFwU3RhdGVU
b1Byb3BzMiIsIl9yZWYkbWFwRGlzcGF0Y2hUb1BybyIsIm1hcERpc3BhdGNoVG9Qcm9wc0ZhY3Rv
cmllcyIsIl9tYXBEaXNwYXRjaFRvUHJvcHMyIiwiX3JlZiRtZXJnZVByb3BzRmFjdG9yIiwibWVy
Z2VQcm9wc0ZhY3RvcmllcyIsIl9tZXJnZVByb3BzMiIsIl9yZWYkc2VsZWN0b3JGYWN0b3J5Iiwi
X3NlbGVjdG9yRmFjdG9yeTIiLCJtYXBTdGF0ZVRvUHJvcHMiLCJtYXBEaXNwYXRjaFRvUHJvcHMi
LCJtZXJnZVByb3BzIiwiX3JlZjIkcHVyZSIsInB1cmUiLCJfcmVmMiRhcmVTdGF0ZXNFcXVhbCIs
ImFyZVN0YXRlc0VxdWFsIiwiX3JlZjIkYXJlT3duUHJvcHNFcXVhIiwiYXJlT3duUHJvcHNFcXVh
bCIsIl9zaGFsbG93RXF1YWwyIiwiX3JlZjIkYXJlU3RhdGVQcm9wc0VxIiwiYXJlU3RhdGVQcm9w
c0VxdWFsIiwiX3JlZjIkYXJlTWVyZ2VkUHJvcHNFIiwiYXJlTWVyZ2VkUHJvcHNFcXVhbCIsImV4
dHJhT3B0aW9ucyIsImluaXRNYXBTdGF0ZVRvUHJvcHMiLCJpbml0TWFwRGlzcGF0Y2hUb1Byb3Bz
IiwiaW5pdE1lcmdlUHJvcHMiLCJfc2hhbGxvd0VxdWFsIiwiX21hcERpc3BhdGNoVG9Qcm9wcyIs
Il9tYXBTdGF0ZVRvUHJvcHMiLCJfbWVyZ2VQcm9wcyIsIl9zZWxlY3RvckZhY3RvcnkiLCJ3aGVu
TWFwRGlzcGF0Y2hUb1Byb3BzSXNGdW5jdGlvbiIsIl93cmFwTWFwVG9Qcm9wcyIsIndoZW5NYXBE
aXNwYXRjaFRvUHJvcHNJc01pc3NpbmciLCJ3aGVuTWFwRGlzcGF0Y2hUb1Byb3BzSXNPYmplY3Qi
LCJfcmVkdXgiLCJ3aGVuTWFwU3RhdGVUb1Byb3BzSXNGdW5jdGlvbiIsIndoZW5NYXBTdGF0ZVRv
UHJvcHNJc01pc3NpbmciLCJkZWZhdWx0TWVyZ2VQcm9wcyIsInN0YXRlUHJvcHMiLCJkaXNwYXRj
aFByb3BzIiwid3JhcE1lcmdlUHJvcHNGdW5jIiwiaGFzUnVuT25jZSIsIm1lcmdlZFByb3BzIiwi
bmV4dE1lcmdlZFByb3BzIiwid2hlbk1lcmdlUHJvcHNJc0Z1bmN0aW9uIiwid2hlbk1lcmdlUHJv
cHNJc09taXR0ZWQiLCJpbXB1cmVGaW5hbFByb3BzU2VsZWN0b3JGYWN0b3J5IiwicHVyZUZpbmFs
UHJvcHNTZWxlY3RvckZhY3RvcnkiLCJoYW5kbGVGaXJzdENhbGwiLCJmaXJzdFN0YXRlIiwiZmly
c3RPd25Qcm9wcyIsImhhc1J1bkF0TGVhc3RPbmNlIiwiaGFuZGxlTmV3UHJvcHNBbmROZXdTdGF0
ZSIsImhhbmRsZU5ld1Byb3BzIiwiaGFuZGxlTmV3U3RhdGUiLCJuZXh0U3RhdGVQcm9wcyIsInN0
YXRlUHJvcHNDaGFuZ2VkIiwiaGFuZGxlU3Vic2VxdWVudENhbGxzIiwibmV4dE93blByb3BzIiwi
cHJvcHNDaGFuZ2VkIiwic3RhdGVDaGFuZ2VkIiwiZmluYWxQcm9wc1NlbGVjdG9yRmFjdG9yeSIs
Il92ZXJpZnlTdWJzZWxlY3RvcnMiLCJ2ZXJpZnkiLCJ2ZXJpZnlTdWJzZWxlY3RvcnMiLCJjcmVh
dGVMaXN0ZW5lckNvbGxlY3Rpb24iLCJjbGVhciIsIkNMRUFSRUQiLCJub3RpZnkiLCJudWxsTGlz
dGVuZXJzIiwiU3Vic2NyaXB0aW9uIiwiYWRkTmVzdGVkU3ViIiwiZW5hYmxlIiwicmF3QXNhcCIs
InRhc2siLCJyZXF1ZXN0Rmx1c2giLCJmbHVzaGluZyIsImZsdXNoIiwiY3VycmVudEluZGV4Iiwi
Y2FwYWNpdHkiLCJzY2FuIiwibmV3TGVuZ3RoIiwibWFrZVJlcXVlc3RDYWxsRnJvbU11dGF0aW9u
T2JzZXJ2ZXIiLCJ0b2dnbGUiLCJCcm93c2VyTXV0YXRpb25PYnNlcnZlciIsIm9ic2VydmUiLCJj
aGFyYWN0ZXJEYXRhIiwibWFrZVJlcXVlc3RDYWxsRnJvbVRpbWVyIiwiaGFuZGxlVGltZXIiLCJ0
aW1lb3V0SGFuZGxlIiwiY2xlYXJJbnRlcnZhbCIsImludGVydmFsSGFuZGxlIiwic2V0SW50ZXJ2
YWwiLCJNdXRhdGlvbk9ic2VydmVyIiwiV2ViS2l0TXV0YXRpb25PYnNlcnZlciIsIl9pbnRlcm9w
UmVxdWlyZVdpbGRjYXJkIiwibmV3T2JqIiwiY2xlYXJDb21wbGV0ZWQiLCJjb21wbGV0ZUFsbCIs
ImNvbXBsZXRlVG9kbyIsImVkaXRUb2RvIiwiZGVsZXRlVG9kbyIsImFkZFRvZG8iLCJfQWN0aW9u
VHlwZXMiLCJ0eXBlcyIsIl9kZWZpbmVQcm9wZXJ0eSIsIl9GSUxURVJfVElUTEVTIiwiX1RvZG9G
aWx0ZXJzIiwiRklMVEVSX1RJVExFUyIsIkZvb3RlciIsImFjdGl2ZUNvdW50IiwiaXRlbVdvcmQi
LCJfcHJvcHMiLCJzZWxlY3RlZEZpbHRlciIsIm9uU2hvdyIsIm9uQ2xpY2siLCJfcHJvcHMyIiwi
Y29tcGxldGVkQ291bnQiLCJvbkNsZWFyQ29tcGxldGVkIiwiX3RoaXMyIiwicmVuZGVyVG9kb0Nv
dW50IiwicmVuZGVyRmlsdGVyTGluayIsInJlbmRlckNsZWFyQnV0dG9uIiwiX1RvZG9UZXh0SW5w
dXQiLCJfVG9kb1RleHRJbnB1dDIiLCJIZWFkZXIiLCJoYW5kbGVTYXZlIiwiX1RPRE9fRklMVEVS
UyIsIl9Ub2RvSXRlbSIsIl9Ub2RvSXRlbTIiLCJfRm9vdGVyIiwiX0Zvb3RlcjIiLCJUT0RPX0ZJ
TFRFUlMiLCJ0b2RvIiwiY29tcGxldGVkIiwiTWFpblNlY3Rpb24iLCJoYW5kbGVDbGVhckNvbXBs
ZXRlZCIsImFjdGlvbnMiLCJoYW5kbGVTaG93IiwidG9kb3MiLCJmaWx0ZXJlZFRvZG9zIiwicmVu
ZGVyVG9nZ2xlQWxsIiwicmVuZGVyRm9vdGVyIiwiVG9kb0l0ZW0iLCJoYW5kbGVEb3VibGVDbGlj
ayIsIm9uRG91YmxlQ2xpY2siLCJfcmVhY3RSZWR1eCIsIl9IZWFkZXIiLCJfSGVhZGVyMiIsIl9N
YWluU2VjdGlvbiIsIl9NYWluU2VjdGlvbjIiLCJfYWN0aW9ucyIsIlRvZG9BY3Rpb25zIiwiQXBw
IiwiX3JlYWN0RG9tIiwiX0FwcCIsIl9BcHAyIiwiX3JlZHVjZXJzIiwiX3JlZHVjZXJzMiIsImdl
dEVsZW1lbnRCeUlkIiwiX3RvZG9zIiwiX3RvZG9zMiIsInJvb3RSZWR1Y2VyIiwiX3RvQ29uc3Vt
YWJsZUFycmF5IiwiYXJyMiIsInYiLCJtYXhJZCIsImFyZUFsbE1hcmtlZCIsIl90eXBlb2YiLCJ2
YWx1ZVByb21pc2UiLCJUUlVFIiwiRkFMU0UiLCJOVUxMIiwiVU5ERUZJTkVEIiwiWkVSTyIsIkVN
UFRZU1RSSU5HIiwiYWxsIiwicmVtYWluaW5nIiwicmFjZSIsImRpc2FibGUiLCJvblVuaGFuZGxl
ZCIsImFsbFJlamVjdGlvbnMiLCJtYXRjaFdoaXRlbGlzdCIsInJlamVjdGlvbnMiLCJ3aGl0ZWxp
c3QiLCJERUZBVUxUX1dISVRFTElTVCIsImRpc3BsYXlJZCIsImxvZ2dlZCIsImxvZ0Vycm9yIiwi
b25IYW5kbGVkIiwid2FybiIsIl83MiIsImVyclN0ciIsImxpbmUiLCJzb21lIiwiY2xzIiwiUmFu
Z2VFcnJvciIsIndlYnBhY2tQb2x5ZmlsbCIsImRlcHJlY2F0ZSIsInBhdGhzIiwibm9ybWFsaXpl
TmFtZSIsIm5vcm1hbGl6ZVZhbHVlIiwiaXRlcmF0b3JGb3IiLCJpdGVtcyIsInNoaWZ0Iiwic3Vw
cG9ydCIsIml0ZXJhYmxlIiwiSGVhZGVycyIsImFwcGVuZCIsImNvbnN1bWVkIiwiYm9keVVzZWQi
LCJmaWxlUmVhZGVyUmVhZHkiLCJyZWFkZXIiLCJvbmxvYWQiLCJvbmVycm9yIiwicmVhZEJsb2JB
c0FycmF5QnVmZmVyIiwiYmxvYiIsIkZpbGVSZWFkZXIiLCJyZWFkQXNBcnJheUJ1ZmZlciIsInJl
YWRCbG9iQXNUZXh0IiwicmVhZEFzVGV4dCIsIkJvZHkiLCJfaW5pdEJvZHkiLCJfYm9keUluaXQi
LCJfYm9keVRleHQiLCJCbG9iIiwiaXNQcm90b3R5cGVPZiIsIl9ib2R5QmxvYiIsImZvcm1EYXRh
IiwiRm9ybURhdGEiLCJfYm9keUZvcm1EYXRhIiwic2VhcmNoUGFyYW1zIiwiVVJMU2VhcmNoUGFy
YW1zIiwiYXJyYXlCdWZmZXIiLCJBcnJheUJ1ZmZlciIsInJlamVjdGVkIiwiZGVjb2RlIiwianNv
biIsInBhcnNlIiwibm9ybWFsaXplTWV0aG9kIiwidXBjYXNlZCIsIm1ldGhvZHMiLCJSZXF1ZXN0
IiwiY3JlZGVudGlhbHMiLCJyZWZlcnJlciIsImJ5dGVzIiwiZGVjb2RlVVJJQ29tcG9uZW50Iiwi
eGhyIiwiaGVhZCIsImdldEFsbFJlc3BvbnNlSGVhZGVycyIsImhlYWRlciIsIlJlc3BvbnNlIiwi
Ym9keUluaXQiLCJzdGF0dXMiLCJvayIsInN0YXR1c1RleHQiLCJmZXRjaCIsImdldEFsbCIsInRo
aXNBcmciLCJjbG9uZSIsInJlc3BvbnNlIiwicmVkaXJlY3RTdGF0dXNlcyIsInJlZGlyZWN0Iiwi
aW5pdCIsInJlc3BvbnNlVVJMIiwiZ2V0UmVzcG9uc2VIZWFkZXIiLCJyZXF1ZXN0IiwiWE1MSHR0
cFJlcXVlc3QiLCJyZXNwb25zZVRleHQiLCJvbnRpbWVvdXQiLCJ3aXRoQ3JlZGVudGlhbHMiLCJy
ZXNwb25zZVR5cGUiLCJzZXRSZXF1ZXN0SGVhZGVyIiwic2VuZCIsInBvbHlmaWxsIiwiZXNjYXBl
VXNlclByb3ZpZGVkS2V5IiwidXNlclByb3ZpZGVkS2V5RXNjYXBlUmVnZXgiLCJGb3JFYWNoQm9v
a0tlZXBpbmciLCJmb3JFYWNoRnVuY3Rpb24iLCJmb3JFYWNoQ29udGV4dCIsImZvckVhY2hTaW5n
bGVDaGlsZCIsImZvckVhY2hDaGlsZHJlbiIsImZvckVhY2hGdW5jIiwiTWFwQm9va0tlZXBpbmci
LCJtYXBSZXN1bHQiLCJrZXlQcmVmaXgiLCJtYXBGdW5jdGlvbiIsIm1hcENvbnRleHQiLCJtYXBT
aW5nbGVDaGlsZEludG9Db250ZXh0IiwiY2hpbGRLZXkiLCJtYXBwZWRDaGlsZCIsIm1hcEludG9X
aXRoS2V5UHJlZml4SW50ZXJuYWwiLCJlc2NhcGVkUHJlZml4IiwibWFwQ2hpbGRyZW4iLCJmb3JF
YWNoU2luZ2xlQ2hpbGREdW1teSIsImNvdW50Q2hpbGRyZW4iLCJjcmVhdGVET01GYWN0b3J5Iiwi
YWJiciIsImFkZHJlc3MiLCJhcnRpY2xlIiwiYXNpZGUiLCJhdWRpbyIsImJkaSIsImJkbyIsImJp
ZyIsImJsb2NrcXVvdGUiLCJjYW52YXMiLCJkYXRhbGlzdCIsImRkIiwiZGVsIiwiZGV0YWlscyIs
ImRmbiIsImRpYWxvZyIsImRsIiwiZHQiLCJlbSIsImZpZWxkc2V0IiwiZmlnY2FwdGlvbiIsImZp
Z3VyZSIsImZvb3RlciIsImgxIiwiaDIiLCJoMyIsImg0IiwiaDUiLCJoNiIsImhncm91cCIsImlm
cmFtZSIsImlucyIsImtiZCIsImxpIiwibWFpbiIsIm1hcmsiLCJtZW51IiwibWV0ZXIiLCJuYXYi
LCJub3NjcmlwdCIsIm9sIiwib3V0cHV0IiwicGljdHVyZSIsInByb2dyZXNzIiwicSIsInJwIiwi
cnQiLCJydWJ5Iiwic2FtcCIsInNjcmlwdCIsInNlY3Rpb24iLCJzbWFsbCIsInN0cm9uZyIsInN1
YiIsInN1cCIsInRhYmxlIiwidSIsInVsIiwidmFyIiwidmlkZW8iLCJjaXJjbGUiLCJkZWZzIiwi
ZWxsaXBzZSIsImciLCJsaW5lYXJHcmFkaWVudCIsInBvbHlnb24iLCJwb2x5bGluZSIsInJhZGlh
bEdyYWRpZW50IiwicmVjdCIsInN0b3AiLCJ0c3BhbiIsIl9yZXF1aXJlIiwiX3JlcXVpcmUyIiwi
Z2V0TmV4dERlYnVnSUQiLCJuZXh0RGVidWdJRCIsImxvd1ByaW9yaXR5V2FybmluZyIsIm1pZGRs
ZXdhcmVzIiwiX2Rpc3BhdGNoIiwiY2hhaW4iLCJtaWRkbGV3YXJlQVBJIiwibWlkZGxld2FyZSIs
ImJpbmRBY3Rpb25DcmVhdG9yIiwiYWN0aW9uQ3JlYXRvciIsImFjdGlvbkNyZWF0b3JzIiwiYm91
bmRBY3Rpb25DcmVhdG9ycyIsImdldFVuZGVmaW5lZFN0YXRlRXJyb3JNZXNzYWdlIiwiYWN0aW9u
VHlwZSIsImFjdGlvbk5hbWUiLCJhc3NlcnRSZWR1Y2VyU2hhcGUiLCJyZWR1Y2VycyIsInJlZHVj
ZXJLZXlzIiwiZmluYWxSZWR1Y2VycyIsImZpbmFsUmVkdWNlcktleXMiLCJzaGFwZUFzc2VydGlv
bkVycm9yIiwiaGFzQ2hhbmdlZCIsIl9pIiwicHJldmlvdXNTdGF0ZUZvcktleSIsIm5leHRTdGF0
ZUZvcktleSIsImVycm9yTWVzc2FnZSIsIl9wb255ZmlsbCIsIl9wb255ZmlsbDIiLCJzeW1ib2xP
YnNlcnZhYmxlUG9ueWZpbGwiLCJfU3ltYm9sIiwiX193ZWJwYWNrX21vZHVsZV90ZW1wbGF0ZV9h
cmd1bWVudF8wX18iLCJvbmVBcmd1bWVudFBvb2xlciIsImNvcHlGaWVsZHNGcm9tIiwiS2xhc3Mi
LCJpbnN0YW5jZVBvb2wiLCJhMSIsImEyIiwidGhyZWVBcmd1bWVudFBvb2xlciIsImEzIiwiYTQi
LCJzdGFuZGFyZFJlbGVhc2VyIiwicG9vbFNpemUiLCJERUZBVUxUX1BPT0xfU0laRSIsIkRFRkFV
TFRfUE9PTEVSIiwiQ29weUNvbnN0cnVjdG9yIiwicG9vbGVyIiwiTmV3S2xhc3MiXSwibWFwcGlu
Z3MiOiJDQUFTLFNBQVVBLEdDSW5CLFFBQUFDLEdBQUFDLEdBR0EsR0FBQUMsRUFBQUQsR0FDQSxN
QUFBQyxHQUFBRCxHQUFBRSxPQUdBLElBQUFDLEdBQUFGLEVBQUFELElBQ0FFLFdBQ0FFLEdBQUFK
LEVBQ0FLLFFBQUEsRUFVQSxPQU5BUCxHQUFBRSxHQUFBTSxLQUFBSCxFQUFBRCxRQUFBQyxJQUFB
RCxRQUFBSCxHQUdBSSxFQUFBRSxRQUFBLEVBR0FGLEVBQUFELFFBdkJBLEdBQUFELEtBcUNBLE9B
VEFGLEdBQUFRLEVBQUFULEVBR0FDLEVBQUFTLEVBQUFQLEVBR0FGLEVBQUFVLEVBQUEsS0FHQVYs
RUFBQSxJRElXLFNBQVNELEdBRW5CLElBQUksR0FBSVksS0FBS1osR0FDWixHQUFHYSxPQUFPQyxV
QUFVQyxlQUFlUCxLQUFLUixFQUFTWSxHQUNoRCxhQUFjWixHQUFRWSxJQUN0QixJQUFLLFdBQVks
S0FDakIsS0FBSyxTQUVKWixFQUFRWSxHQUFNLFNBQVNJLEdBQ3RCLEdBQUlDLEdBQU9ELEVBQUdF
LE1BQU0sR0FBSUMsRUFBS25CLEVBQVFnQixFQUFHLEdBQ3hDLE9BQU8sVUFBVUksRUFBRUMsRUFB
RVgsR0FDcEJTLEVBQUdHLE1BQU1DLE1BQU9ILEVBQUVDLEVBQUVYLEdBQUdjLE9BQU9QLE1BRTlC
akIsRUFBUVksR0FDVixNQUNELFNBRUNaLEVBQVFZLEdBQUtaLEVBQVFBLEVBQVFZLElBS2hDLE1B
QU9aLEtBR0YsU0FBU0ssRUFBUUQsRUFBU0gsR0FFL0JBLEVBQW9CLEtBQ3BCSSxFQUFPRCxRQUFV
SCxFQUFvQixNQUtoQyxTQUFTSSxFQUFRRCxFQUFTSCxHRWpFaEMsWUF1QkEsU0FBQXdCLEdBQUFD
LEVBQUFDLEVBQUFQLEVBQUFDLEVBQUFYLEVBQUFrQixFQUFBQyxFQUFBQyxHQUdBLEdBRkFDLEVB
QUFKLElBRUFELEVBQUEsQ0FDQSxHQUFBTSxFQUNBLElBQUFDLFNBQUFOLEVBQ0FLLEVBQUEsR0FB
QUUsT0FBQSxxSUFDSyxDQUNMLEdBQUFqQixJQUFBRyxFQUFBQyxFQUFBWCxFQUFBa0IsRUFBQUMs
RUFBQUMsR0FDQUssRUFBQSxDQUNBSCxHQUFBLEdBQUFFLE9BQUFQLEVBQUFTLFFBQUEsaUJBQ0Es
TUFBQW5CLEdBQUFrQixRQUVBSCxFQUFBSyxLQUFBLHNCQUlBLEtBREFMLEdBQUFNLFlBQUEsRUFD
QU4sR0EzQkEsR0FBQUQsR0FBQSxTQUFBSixJQStCQXRCLEdBQUFELFFBQUFxQixHRmlGTSxTQUFT
cEIsRUFBUUQsRUFBU0gsR0c3SGhDLFlBRUEsSUFBQXNDLEdBQUF0QyxFQUFBLEdBU0F1QyxFQUFB
RCxDQTBDQWxDLEdBQUFELFFBQUFvQyxHSDZJTSxTQUFTbkMsRUFBUUQsR0lsTXZCLFlBU0EsU0FB
QXFDLEdBQUFDLEdBS0EsT0FKQUMsR0FBQUMsVUFBQUMsT0FBQSxFQUVBQyxFQUFBLHlCQUFBSixF
QUFBLDZFQUFvREEsRUFFcERLLEVBQUEsRUFBc0JBLEVBQUFKLEVBQW1CSSxJQUN6Q0QsR0FBQSxX
QUFBRSxtQkFBQUosVUFBQUcsRUFBQSxHQUdBRCxJQUFBLGdIQUVBLElBQUFkLEdBQUEsR0FBQUUs
T0FBQVksRUFJQSxNQUhBZCxHQUFBSyxLQUFBLHNCQUNBTCxFQUFBTSxZQUFBLEVBRUFOLEVBR0Ez
QixFQUFBRCxRQUFBcUMsR0prTk0sU0FBU3BDLEVBQVFELEdLalB2QixZQU1BLFNBQUE2QyxHQUFB
QyxHQUNBLFVBQUFBLEdBQUFqQixTQUFBaUIsRUFDQSxTQUFBQyxXQUFBLHdEQUdBLE9BQUF0QyxR
QUFBcUMsR0FHQSxRQUFBRSxLQUNBLElBQ0EsSUFBQXZDLE9BQUF3QyxPQUNBLFFBTUEsSUFBQUMs
R0FBQSxHQUFBQyxRQUFBLE1BRUEsSUFEQUQsRUFBQSxRQUNBLE1BQUF6QyxPQUFBMkMsb0JBQUFG
LEdBQUEsR0FDQSxRQUtBLFFBREFHLE1BQ0E3QyxFQUFBLEVBQWlCQSxFQUFBLEdBQVFBLElBQ3pC
NkMsRUFBQSxJQUFBRixPQUFBRyxhQUFBOUMsS0FFQSxJQUFBK0MsR0FBQTlDLE9BQUEyQyxvQkFB
QUMsR0FBQUcsSUFBQSxTQUFBQyxHQUNBLE1BQUFKLEdBQUFJLElBRUEsbUJBQUFGLEVBQUFHLEtB
QUEsSUFDQSxRQUlBLElBQUFDLEtBSUEsT0FIQSx1QkFBQUMsTUFBQSxJQUFBQyxRQUFBLFNBQUFD
LEdBQ0FILEVBQUFHLE9BR0EseUJBREFyRCxPQUFBc0QsS0FBQXRELE9BQUF3QyxVQUFrQ1UsSUFB
QUQsS0FBQSxJQU1oQyxNQUFBTSxHQUVGLFVBcERBLEdBQUFDLEdBQUF4RCxPQUFBd0Qsc0JBQ0F0
RCxFQUFBRixPQUFBQyxVQUFBQyxlQUNBdUQsRUFBQXpELE9BQUFDLFVBQUF5RCxvQkFzREFsRSxH
QUFBRCxRQUFBZ0QsSUFBQXZDLE9BQUF3QyxPQUFBLFNBQUFtQixFQUFBQyxHQUtBLE9BSkFDLEdB
RUFDLEVBREFDLEVBQUEzQixFQUFBdUIsR0FHQUssRUFBQSxFQUFnQkEsRUFBQWpDLFVBQUFDLE9B
QXNCZ0MsSUFBQSxDQUN0Q0gsRUFBQTdELE9BQUErQixVQUFBaUMsR0FFQSxRQUFBQyxLQUFBSixH
QUNBM0QsRUFBQVAsS0FBQWtFLEVBQUFJLEtBQ0FGLEVBQUFFLEdBQUFKLEVBQUFJLEdBSUEsSUFB
QVQsRUFBQSxDQUNBTSxFQUFBTixFQUFBSyxFQUNBLFFBQUE5RCxHQUFBLEVBQWtCQSxFQUFBK0Qs
RUFBQTlCLE9BQW9CakMsSUFDdEMwRCxFQUFBOUQsS0FBQWtFLEVBQUFDLEVBQUEvRCxNQUNBZ0Us
RUFBQUQsRUFBQS9ELElBQUE4RCxFQUFBQyxFQUFBL0QsTUFNQSxNQUFBZ0UsS0wrUE0sU0FBU3ZF
LEVBQVFELEVBQVNILEdNN1VoQyxZQWlCQSxTQUFBOEUsR0FBQUMsRUFBQUMsR0FDQSxXQUFBRCxF
QUFBRSxVQUFBRixFQUFBRyxhQUFBQyxLQUFBN0IsT0FBQTBCLElBQUEsSUFBQUQsRUFBQUUsVUFB
QUYsRUFBQUssWUFBQSxnQkFBQUosRUFBQSxTQUFBRCxFQUFBRSxVQUFBRixFQUFBSyxZQUFBLGlC
QUFBSixFQUFBLElBVUEsUUFBQUssR0FBQUMsR0FFQSxJQURBLEdBQUFDLEdBQ0FBLEVBQUFELEVB
QUFFLG9CQUNBRixFQUFBQyxDQUVBLE9BQUFELEdBT0EsUUFBQUcsR0FBQUMsRUFBQVgsR0FDQSxH
QUFBWSxHQUFBTixFQUFBSyxFQUNBQyxHQUFBQyxVQUFBYixFQUNBQSxFQUFBYyxHQUFBRixFQUdB
LFFBQUFHLEdBQUFKLEdBQ0EsR0FBQVgsR0FBQVcsRUFBQUUsU0FDQWIsV0FDQUEsR0FBQWMsR0FD
QUgsRUFBQUUsVUFBQSxNQWtCQSxRQUFBRyxHQUFBTCxFQUFBWCxHQUNBLEtBQUFXLEVBQUFNLE9B
QUFDLEVBQUFDLHFCQUFBLENBR0EsR0FBQUMsR0FBQVQsRUFBQVUsa0JBQ0FDLEVBQUF0QixFQUFB
dUIsVUFDQUMsR0FBQSxPQUFBbkUsS0FBQStELEdBQ0EsR0FBQUEsRUFBQXJGLGVBQUFzQixHQUFB
LENBR0EsR0FBQW9FLEdBQUFMLEVBQUEvRCxHQUNBcUUsRUFBQXBCLEVBQUFtQixHQUFBRSxNQUNB
LFFBQUFELEVBQUEsQ0FLQSxLQUFVLE9BQUFKLEVBQW9CQSxJQUFBTSxZQUM5QixHQUFBN0IsRUFB
QXVCLEVBQUFJLEdBQUEsQ0FDQWhCLEVBQUFlLEVBQUFILEVBQ0EsU0FBQUUsR0FJQUssRUFBQSxL
QUFBSCxJQUVBZixFQUFBTSxRQUFBQyxFQUFBQyxxQkFPQSxRQUFBVyxHQUFBOUIsR0FDQSxHQUFB
QSxFQUFBYyxHQUNBLE1BQUFkLEdBQUFjLEVBS0EsS0FEQSxHQUFBaUIsT0FDQS9CLEVBQUFjLElB
QUEsQ0FFQSxHQURBaUIsRUFBQUMsS0FBQWhDLElBQ0FBLEVBQUFpQyxXQUtBLFdBSkFqQyxLQUFB
aUMsV0FVQSxJQUZBLEdBQUFDLEdBQ0F2QixFQUNRWCxJQUFBVyxFQUFBWCxFQUFBYyxJQUE0Q2Qs
RUFBQStCLEVBQUFJLE1BQ3BERCxFQUFBdkIsRUFDQW9CLEVBQUFsRSxRQUNBbUQsRUFBQUwsRUFB
QVgsRUFJQSxPQUFBa0MsR0FPQSxRQUFBRSxHQUFBcEMsR0FDQSxHQUFBVyxHQUFBbUIsRUFBQTlC
LEVBQ0EsY0FBQVcsS0FBQUUsWUFBQWIsRUFDQVcsRUFFQSxLQVFBLFFBQUEwQixHQUFBMUIsR0FL
QSxHQUZBMUQsU0FBQTBELEVBQUFFLFVBQUFnQixFQUFBLGFBRUFsQixFQUFBRSxVQUNBLE1BQUFG
LEdBQUFFLFNBS0EsS0FEQSxHQUFBa0IsT0FDQXBCLEVBQUFFLFdBQ0FrQixFQUFBQyxLQUFBckIs
R0FDQUEsRUFBQTJCLFlBQUEsT0FBQVQsRUFBQSxNQUNBbEIsSUFBQTJCLFdBS0EsTUFBUVAsRUFB
QWxFLE9BQWdCOEMsRUFBQW9CLEVBQUFJLE1BQ3hCbkIsRUFBQUwsSUFBQUUsVUFHQSxPQUFBRixH
QUFBRSxVQXpLQSxHQUFBZ0IsR0FBQTVHLEVBQUEsR0FFQXNILEVBQUF0SCxFQUFBLElBQ0F1SCxF
QUFBdkgsRUFBQSxJQUlBbUYsR0FGQW5GLEVBQUEsR0FFQXNILEVBQUFFLG1CQUNBdkIsRUFBQXNC
LEVBRUExQixFQUFBLDJCQUFBNEIsS0FBQUMsU0FBQUMsU0FBQSxJQUFBMUcsTUFBQSxHQWtLQTJH
LEdBQ0FmLDZCQUNBTSxzQkFDQUMsc0JBQ0FyQixxQkFDQU4sZUFDQUssY0FHQTFGLEdBQUFELFFB
QUF5SCxHTjZWTSxTQUFTeEgsRUFBUUQsR09waEJ2QixZQUVBLElBQUEwSCxLQUFBLG1CQUFBQyxp
QkFBQUMsV0FBQUQsT0FBQUMsU0FBQUMsZUFRQUMsR0FFQUosWUFFQUssY0FBQSxtQkFBQUMsUUFF
QUMscUJBQUFQLE1BQUFDLE9BQUFPLG1CQUFBUCxPQUFBUSxhQUVBQyxlQUFBVixLQUFBQyxPQUFB
VSxPQUVBQyxZQUFBWixFQUlBekgsR0FBQUQsUUFBQThILEdQb2lCTSxTQUFTN0gsRUFBUUQsR1F0
a0J2QixZQWFBLFNBQUF1SSxHQUFBQyxHQUNBLGtCQUNBLE1BQUFBLElBU0EsR0FBQXJHLEdBQUEs
WUFFQUEsR0FBQXNHLFlBQUFGLEVBQ0FwRyxFQUFBdUcsaUJBQUFILEdBQUEsR0FDQXBHLEVBQUF3
RyxnQkFBQUosR0FBQSxHQUNBcEcsRUFBQXlHLGdCQUFBTCxFQUFBLE1BQ0FwRyxFQUFBMEcsZ0JB
QUEsV0FDQSxNQUFBMUgsT0FFQWdCLEVBQUEyRyxvQkFBQSxTQUFBTixHQUNBLE1BQUFBLElBR0F2
SSxFQUFBRCxRQUFBbUMsR1I0a0JNLFNBQVNsQyxFQUFRRCxFQUFTSCxHU3RtQmhDLFlBSUEsSUFB
QWtKLEdBQUEsSUFPQTlJLEdBQUFELFNBQWtCK0ksY1R1bkJaLFNBQVM5SSxFQUFRRCxFQUFTSCxH
VW5vQmhDLFlBb0JBLFNBQUFtSixLQUNBQyxFQUFBQywyQkFBQUMsRUFBQSxPQUFBMUMsRUFBQSxP
QWlDQSxRQUFBMkMsS0FDQWpJLEtBQUFrSSwwQkFDQWxJLEtBQUFtSSxzQkFBQSxLQUNBbkksS0FB
QW9JLGNBQUFDLEVBQUFDLFlBQ0F0SSxLQUFBdUkscUJBQUFULEVBQUFDLDBCQUFBTyxXQUNBLEdB
eUJBLFFBQUFFLEdBQUFDLEVBQUE1SSxFQUFBQyxFQUFBWCxFQUFBa0IsRUFBQUMsR0FFQSxNQURB
dUgsS0FDQUcsRUFBQVEsZUFBQUMsRUFBQTVJLEVBQUFDLEVBQUFYLEVBQUFrQixFQUFBQyxHQVVB
LFFBQUFvSSxHQUFBQyxFQUFBQyxHQUNBLE1BQUFELEdBQUFFLFlBQUFELEVBQUFDLFlBR0EsUUFB
QUMsR0FBQUMsR0FDQSxHQUFBQyxHQUFBRCxFQUFBWixxQkFDQWEsS0FBQUMsRUFBQTNILE9BQUFn
RSxFQUFBLE1BQUEwRCxFQUFBQyxFQUFBM0gsUUFBQSxPQUtBMkgsRUFBQUMsS0FBQVIsR0FPQVMs
R0FFQSxRQUFBOUosR0FBQSxFQUFpQkEsRUFBQTJKLEVBQVMzSixJQUFBLENBSTFCLEdBQUEyRSxH
QUFBaUYsRUFBQTVKLEdBS0ErSixFQUFBcEYsRUFBQXFGLGlCQUNBckYsR0FBQXFGLGtCQUFBLElB
RUEsSUFBQUMsRUFDQSxJQUFBQyxFQUFBQyxtQkFBQSxDQUNBLEdBQUFDLEdBQUF6RixDQUVBQSxH
QUFBMEYsZ0JBQUFDLEtBQUFDLHlCQUNBSCxFQUFBekYsRUFBQUUsb0JBRUFvRixFQUFBLGlCQUFB
RyxFQUFBSSxVQUNBQyxRQUFBQyxLQUFBVCxHQVNBLEdBTkFVLEVBQUFDLHlCQUFBakcsRUFBQStF
LEVBQUFSLHFCQUFBWSxHQUVBRyxHQUNBUSxRQUFBSSxRQUFBWixHQUdBRixFQUNBLE9BQUFlLEdB
QUEsRUFBcUJBLEVBQUFmLEVBQUE5SCxPQUFzQjZJLElBQzNDcEIsRUFBQVgsY0FBQWdDLFFBQUFo
QixFQUFBZSxHQUFBbkcsRUFBQXFHLHNCQWdDQSxRQUFBQyxHQUFBdEcsR0FTQSxNQVJBNkQsS0FR
QUcsRUFBQXVDLG1CQUtBdEIsRUFBQXhELEtBQUF6QixRQUNBLE1BQUFBLEVBQUF3RyxxQkFDQXhH
LEVBQUF3RyxtQkFBQXJCLEVBQUEsU0FOQW5CLEdBQUFRLGVBQUE4QixFQUFBdEcsR0FjQSxRQUFB
eUcsR0FBQWhDLEVBQUFpQyxHQUNBMUMsRUFBQXVDLGtCQUFBLE9BQUFqRixFQUFBLE9BQ0FxRixF
QUFBUCxRQUFBM0IsRUFBQWlDLEdBQ0FFLEdBQUEsRUE1TUEsR0FBQXRGLEdBQUE1RyxFQUFBLEdB
Q0FtTSxFQUFBbk0sRUFBQSxHQUVBMkosRUFBQTNKLEVBQUEsSUFDQW9NLEVBQUFwTSxFQUFBLElB
Q0E2SyxFQUFBN0ssRUFBQSxJQUNBc0wsRUFBQXRMLEVBQUEsSUFDQXFNLEVBQUFyTSxFQUFBLElB
SUF1SyxHQUZBdkssRUFBQSxPQUdBeUssRUFBQSxFQUNBd0IsRUFBQXRDLEVBQUFDLFlBQ0FzQyxH
QUFBLEVBRUE1QyxFQUFBLEtBTUFnRCxHQUNBQyxXQUFBLFdBQ0FqTCxLQUFBbUksc0JBQUFjLEVB
QUEzSCxRQUVBNEosTUFBQSxXQUNBbEwsS0FBQW1JLHdCQUFBYyxFQUFBM0gsUUFNQTJILEVBQUFr
QyxPQUFBLEVBQUFuTCxLQUFBbUksdUJBQ0FpRCxLQUVBbkMsRUFBQTNILE9BQUEsSUFLQStKLEdB
Q0FKLFdBQUEsV0FDQWpMLEtBQUFvSSxjQUFBa0QsU0FFQUosTUFBQSxXQUNBbEwsS0FBQW9JLGNB
QUFtRCxjQUlBQyxHQUFBUixFQUFBSyxFQVVBUixHQUFBNUMsRUFBQTFJLFVBQUF3TCxHQUNBVSx1
QkFBQSxXQUNBLE1BQUFELElBR0FFLFdBQUEsV0FDQTFMLEtBQUFtSSxzQkFBQSxLQUNBRSxFQUFB
c0QsUUFBQTNMLEtBQUFvSSxlQUNBcEksS0FBQW9JLGNBQUEsS0FDQU4sRUFBQUMsMEJBQUE0RCxR
QUFBM0wsS0FBQXVJLHNCQUNBdkksS0FBQXVJLHFCQUFBLE1BR0FxRCxRQUFBLFNBQUFDLEVBQUFD
LEVBQUFqTSxHQUdBLE1BQUFrTCxHQUFBYSxRQUFBM00sS0FBQWUsVUFBQXVJLHFCQUFBcUQsUUFB
QTVMLEtBQUF1SSxxQkFBQXNELEVBQUFDLEVBQUFqTSxNQUlBaUwsRUFBQWlCLGFBQUE5RCxFQXVF
QSxJQUFBbUQsR0FBQSxXQUtBLEtBQUFuQyxFQUFBM0gsUUFBQXNKLEdBQUEsQ0FDQSxHQUFBM0Is
RUFBQTNILE9BQUEsQ0FDQSxHQUFBeUgsR0FBQWQsRUFBQUssV0FDQVMsR0FBQTZDLFFBQUE5QyxF
QUFBLEtBQUFDLEdBQ0FkLEVBQUEwRCxRQUFBNUMsR0FHQSxHQUFBNkIsRUFBQSxDQUNBQSxHQUFB
LENBQ0EsSUFBQW9CLEdBQUFyQixDQUNBQSxHQUFBdEMsRUFBQUMsWUFDQTBELEVBQUFULFlBQ0Fs
RCxFQUFBc0QsUUFBQUssTUF1Q0FDLEdBQ0FDLDJCQUFBLFNBQUFDLEdBQ0FBLEVBQUEsT0FBQTdH
LEVBQUEsT0FDQXdDLEVBQUFDLDBCQUFBb0UsR0FHQUMsdUJBQUEsU0FBQUMsR0FDQUEsRUFBQSxP
QUFBL0csRUFBQSxPQUNBLGtCQUFBK0csR0FBQTdELGVBQUFsRCxFQUFBLGNBQ0EsaUJBQUErRyxH
QUFBOUIsa0JBQUFqRixFQUFBLGNBQ0EwQyxFQUFBcUUsSUFJQXZFLEdBT0FDLDBCQUFBLEtBRUFT
LGlCQUNBOEIsZ0JBQ0FjLHNCQUNBa0IsVUFBQUwsRUFDQXhCLE9BR0EzTCxHQUFBRCxRQUFBaUos
R1ZtcEJNLFNBQVNoSixFQUFRRCxFQUFTSCxHV2w0QmhDLFlBbURBLFNBQUE2TixHQUFBQyxFQUFB
QyxFQUFBQyxFQUFBQyxHQVFBM00sS0FBQXdNLGlCQUNBeE0sS0FBQTRNLFlBQUFILEVBQ0F6TSxL
QUFBME0sYUFFQSxJQUFBRyxHQUFBN00sS0FBQThNLFlBQUFELFNBQ0EsUUFBQUUsS0FBQUYsR0FD
QSxHQUFBQSxFQUFBck4sZUFBQXVOLEdBQUEsQ0FNQSxHQUFBQyxHQUFBSCxFQUFBRSxFQUNBQyxH
QUNBaE4sS0FBQStNLEdBQUFDLEVBQUFOLEdBRUEsV0FBQUssRUFDQS9NLEtBQUFpRCxPQUFBMEos
RUFFQTNNLEtBQUErTSxHQUFBTCxFQUFBSyxHQUtBLEdBQUFFLEdBQUEsTUFBQVAsRUFBQU8saUJB
QUFQLEVBQUFPLGlCQUFBUCxFQUFBUSxlQUFBLENBT0EsT0FOQUQsR0FDQWpOLEtBQUFtTixtQkFB
QW5NLEVBQUF3RyxnQkFFQXhILEtBQUFtTixtQkFBQW5NLEVBQUF1RyxpQkFFQXZILEtBQUFvTixx
QkFBQXBNLEVBQUF1RyxpQkFDQXZILEtBeEZBLEdBQUE2SyxHQUFBbk0sRUFBQSxHQUVBb00sRUFB
QXBNLEVBQUEsSUFFQXNDLEVBQUF0QyxFQUFBLEdBTUEyTyxHQUxBM08sRUFBQSxHQUdBLGtCQUFB
NE8sUUFFQSxxSUFNQUMsR0FDQTVELEtBQUEsS0FDQTFHLE9BQUEsS0FFQXVLLGNBQUF4TSxFQUFB
eUcsZ0JBQ0FnRyxXQUFBLEtBQ0FDLFFBQUEsS0FDQUMsV0FBQSxLQUNBQyxVQUFBLFNBQUFDLEdB
Q0EsTUFBQUEsR0FBQUQsV0FBQUUsS0FBQUMsT0FFQWQsaUJBQUEsS0FDQWUsVUFBQSxLQStEQW5E
LEdBQUEwQixFQUFBaE4sV0FDQTBPLGVBQUEsV0FDQWpPLEtBQUFpTixrQkFBQSxDQUNBLElBQUFZ
LEdBQUE3TixLQUFBME0sV0FDQW1CLEtBSUFBLEVBQUFJLGVBQ0FKLEVBQUFJLGlCQUVLLGlCQUFB
SixHQUFBWCxjQUNMVyxFQUFBWCxhQUFBLEdBRUFsTixLQUFBbU4sbUJBQUFuTSxFQUFBd0csa0JB
R0EwRyxnQkFBQSxXQUNBLEdBQUFMLEdBQUE3TixLQUFBME0sV0FDQW1CLEtBSUFBLEVBQUFLLGdC
QUNBTCxFQUFBSyxrQkFFSyxpQkFBQUwsR0FBQU0sZUFNTE4sRUFBQU0sY0FBQSxHQUdBbk8sS0FB
QW9OLHFCQUFBcE0sRUFBQXdHLGtCQVFBNEcsUUFBQSxXQUNBcE8sS0FBQXFPLGFBQUFyTixFQUFB
d0csaUJBUUE2RyxhQUFBck4sRUFBQXVHLGlCQUtBbUUsV0FBQSxXQUNBLEdBQUFtQixHQUFBN00s
S0FBQThNLFlBQUFELFNBQ0EsUUFBQUUsS0FBQUYsR0FJQTdNLEtBQUErTSxHQUFBLElBR0EsUUFB
QTFOLEdBQUEsRUFBbUJBLEVBQUFnTyxFQUFBL0wsT0FBdUNqQyxJQUMxRFcsS0FBQXFOLEVBQUFo
TyxJQUFBLFFBVUFrTixFQUFBTSxVQUFBVSxFQStCQWhCLEVBQUErQixhQUFBLFNBQUFDLEVBQUEx
QixHQUNBLEdBQUEyQixHQUFBeE8sS0FFQXlPLEVBQUEsWUFDQUEsR0FBQWxQLFVBQUFpUCxFQUFB
alAsU0FDQSxJQUFBQSxHQUFBLEdBQUFrUCxFQUVBNUQsR0FBQXRMLEVBQUFnUCxFQUFBaFAsV0FD
QWdQLEVBQUFoUCxZQUNBZ1AsRUFBQWhQLFVBQUF1TixZQUFBeUIsRUFFQUEsRUFBQTFCLFVBQUFo
QyxLQUE4QjJELEVBQUEzQixhQUM5QjBCLEVBQUFELGFBQUFFLEVBQUFGLGFBRUF4RCxFQUFBaUIs
YUFBQXdDLEVBQUF6RCxFQUFBNEQscUJBR0E1RCxFQUFBaUIsYUFBQVEsRUFBQXpCLEVBQUE0RCxv
QkFFQTVQLEVBQUFELFFBQUEwTixHWG83Qk0sU0FBU3pOLEVBQVFELEdZL29DdkIsWUFRQSxJQUFB
OFAsSUFLQUMsUUFBQSxLQUdBOVAsR0FBQUQsUUFBQThQLEdaZ3FDTSxTQUFTN1AsRUFBUUQsRUFB
U0gsR2EzckNoQyxZQUVBSSxHQUFBRCxRQUFBSCxFQUFBLE1ia3NDQyxJQUFLLEdBRUEsU0FBU0ks
RUFBUUQsRUFBU0gsR2M1ckNoQyxZQXdCQSxTQUFBbVEsR0FBQUMsR0FDQSxHQUFBQyxFQUFBLENB
R0EsR0FBQXRMLEdBQUFxTCxFQUFBckwsS0FDQW9CLEVBQUFpSyxFQUFBakssUUFDQSxJQUFBQSxF
QUFBdkQsT0FDQSxPQUFBakMsR0FBQSxFQUFtQkEsRUFBQXdGLEVBQUF2RCxPQUFxQmpDLElBQ3hD
MlAsRUFBQXZMLEVBQUFvQixFQUFBeEYsR0FBQSxVQUVHLE9BQUF5UCxFQUFBRyxLQUNIQyxFQUFB
ekwsRUFBQXFMLEVBQUFHLE1BQ0csTUFBQUgsRUFBQUssTUFDSEMsRUFBQTNMLEVBQUFxTCxFQUFB
SyxPQW9CQSxRQUFBRSxHQUFBQyxFQUFBQyxHQUNBRCxFQUFBNUosV0FBQThKLGFBQUFELEVBQUE5
TCxLQUFBNkwsR0FDQVQsRUFBQVUsR0FHQSxRQUFBRSxHQUFBQyxFQUFBQyxHQUNBWixFQUNBVyxF
QUFBN0ssU0FBQVksS0FBQWtLLEdBRUFELEVBQUFqTSxLQUFBbU0sWUFBQUQsRUFBQWxNLE1BSUEs
UUFBQW9NLEdBQUFmLEVBQUFHLEdBQ0FGLEVBQ0FELEVBQUFHLE9BRUFDLEVBQUFKLEVBQUFyTCxL
QUFBd0wsR0FJQSxRQUFBYSxHQUFBaEIsRUFBQUssR0FDQUosRUFDQUQsRUFBQUssT0FFQUMsRUFB
QU4sRUFBQXJMLEtBQUEwTCxHQUlBLFFBQUE5SSxLQUNBLE1BQUFyRyxNQUFBeUQsS0FBQXNNLFNB
R0EsUUFBQUMsR0FBQXZNLEdBQ0EsT0FDQUEsT0FDQW9CLFlBQ0FvSyxLQUFBLEtBQ0FFLEtBQUEs
S0FDQTlJLFlBOUZBLEdBQUE0SixHQUFBdlIsRUFBQSxJQUNBd1EsRUFBQXhRLEVBQUEsSUFFQXdS
LEVBQUF4UixFQUFBLElBQ0EwUSxFQUFBMVEsRUFBQSxJQUVBeVIsRUFBQSxFQUNBQyxFQUFBLEdB
YUFyQixFQUFBLG1CQUFBdEksV0FBQSxnQkFBQUEsVUFBQTRKLGNBQUEsbUJBQUFDLFlBQUEsZ0JB
QUFBLFdBQUFDLFdBQUEsYUFBQUMsS0FBQUYsVUFBQUMsV0FtQkF2QixFQUFBa0IsRUFBQSxTQUFB
eEssRUFBQW9KLEVBQUEyQixHQU9BM0IsRUFBQXJMLEtBQUFFLFdBQUF5TSxHQUFBdEIsRUFBQXJM
LEtBQUFFLFdBQUF3TSxHQUFBLFdBQUFyQixFQUFBckwsS0FBQXNNLFNBQUFXLGdCQUFBLE1BQUE1
QixFQUFBckwsS0FBQWtOLGNBQUE3QixFQUFBckwsS0FBQWtOLGVBQUFWLEVBQUFoQixPQUNBSixF
QUFBQyxHQUNBcEosRUFBQWtMLGFBQUE5QixFQUFBckwsS0FBQWdOLEtBRUEvSyxFQUFBa0wsYUFB
QTlCLEVBQUFyTCxLQUFBZ04sR0FDQTVCLEVBQUFDLEtBK0NBa0IsR0FBQWhCLG1CQUNBZ0IsRUFB
QVgsdUJBQ0FXLEVBQUFQLGFBQ0FPLEVBQUFILFlBQ0FHLEVBQUFGLFlBRUFoUixFQUFBRCxRQUFB
bVIsR2Q0c0NNLFNBQVNsUixFQUFRRCxFQUFTSCxHZXR6Q2hDLFlBTUEsU0FBQW1TLEdBQUFDLEVB
QUFDLEdBQ0EsT0FBQUQsRUFBQUMsT0FMQSxHQUFBekwsR0FBQTVHLEVBQUEsR0FRQXNTLEdBTkF0
UyxFQUFBLElBV0F1UyxrQkFBQSxFQUNBQyxrQkFBQSxFQUNBQyxrQkFBQSxFQUNBQywyQkFBQSxH
QUNBQyw2QkFBQSxHQThCQUMsd0JBQUEsU0FBQUMsR0FDQSxHQUFBQyxHQUFBUixFQUNBUyxFQUFB
RixFQUFBRSxlQUNBQyxFQUFBSCxFQUFBRywyQkFDQUMsRUFBQUosRUFBQUksc0JBQ0FDLEVBQUFM
LEVBQUFLLHFCQUNBQyxFQUFBTixFQUFBTSxzQkFFQU4sR0FBQU8sbUJBQ0E5TCxFQUFBK0wsNEJB
QUF0TSxLQUFBOEwsRUFBQU8sa0JBR0EsUUFBQS9FLEtBQUEwRSxHQUFBLENBQ0F6TCxFQUFBZ00s
V0FBQXhTLGVBQUF1TixHQUFBekgsRUFBQSxLQUFBeUgsR0FBQSxNQUVBLElBQUFrRixHQUFBbEYs
RUFBQTJELGNBQ0F3QixFQUFBVCxFQUFBMUUsR0FFQW9GLEdBQ0FDLGNBQUFILEVBQ0FJLG1CQUFB
LEtBQ0FDLGFBQUF2RixFQUNBd0YsZUFBQSxLQUVBQyxnQkFBQTNCLEVBQUFxQixFQUFBVixFQUFB
UCxtQkFDQXdCLGdCQUFBNUIsRUFBQXFCLEVBQUFWLEVBQUFOLG1CQUNBd0IsZ0JBQUE3QixFQUFB
cUIsRUFBQVYsRUFBQUwsbUJBQ0F3Qix3QkFBQTlCLEVBQUFxQixFQUFBVixFQUFBSiw0QkFDQXdC
LDBCQUFBL0IsRUFBQXFCLEVBQUFWLEVBQUFILDhCQVFBLElBTkFjLEVBQUFNLGdCQUFBTixFQUFB
TyxnQkFBQVAsRUFBQVMsMkJBQUEsU0FBQXROLEVBQUEsS0FBQXlILEdBTUE0RSxFQUFBblMsZUFB
QXVOLEdBQUEsQ0FDQSxHQUFBcUYsR0FBQVQsRUFBQTVFLEVBQ0FvRixHQUFBQyxnQkFNQVYsRUFB
QWxTLGVBQUF1TixLQUNBb0YsRUFBQUUsbUJBQUFYLEVBQUEzRSxJQUdBNkUsRUFBQXBTLGVBQUF1
TixLQUNBb0YsRUFBQUcsYUFBQVYsRUFBQTdFLElBR0E4RSxFQUFBclMsZUFBQXVOLEtBQ0FvRixF
QUFBSSxlQUFBVixFQUFBOUUsSUFHQS9HLEVBQUFnTSxXQUFBakYsR0FBQW9GLE1BTUFVLEVBQUEs
Z0xBZ0JBN00sR0FDQUUsa0JBQUEsZUFDQTRNLG9CQUFBLGlCQUVBRCw0QkFDQUUsb0JBQUFGLEVB
QUEsK0NBOEJBYixjQVdBZ0Isd0JBQTZGLEtBSzdGakIsK0JBTUFELGtCQUFBLFNBQUFNLEdBQ0Es
T0FBQS9TLEdBQUEsRUFBbUJBLEVBQUEyRyxFQUFBK0wsNEJBQUF6USxPQUFvRGpDLElBQUEsQ0FD
dkUsR0FBQTRULEdBQUFqTixFQUFBK0wsNEJBQUExUyxFQUNBLElBQUE0VCxFQUFBYixHQUNBLFNB
R0EsVUFHQTlGLFVBQUEwRSxFQUdBbFMsR0FBQUQsUUFBQW1ILEdmczBDTSxTQUFTbEgsRUFBUUQs
RUFBU0gsR2dCM2dEaEMsWUFXQSxTQUFBd1UsS0FDQUMsRUFBQUQsV0FBQWxULFVBQUEwSixpQkFW
QSxHQUFBeUosR0FBQXpVLEVBQUEsS0FhQXNMLEdBWkF0TCxFQUFBLEdBRUFBLEVBQUEsSUFzQkEw
VSxlQUFBLFNBQUFDLEVBQUF0SyxFQUFBdUssRUFBQUMsRUFBQTdJLEVBQUE4SSxHQU9BLEdBQUFD
LEdBQUFKLEVBQUFELGVBQUFySyxFQUFBdUssRUFBQUMsRUFBQTdJLEVBQUE4SSxFQVNBLE9BUkFI
LEdBQUEzSixpQkFBQSxNQUFBMkosRUFBQTNKLGdCQUFBZ0ssS0FDQTNLLEVBQUE0SyxxQkFBQXZK
LFFBQUE4SSxFQUFBRyxHQU9BSSxHQU9BRyxZQUFBLFNBQUFQLEdBQ0EsTUFBQUEsR0FBQU8sZUFT
QUMsaUJBQUEsU0FBQVIsRUFBQVMsR0FNQVgsRUFBQVksV0FBQVYsSUFBQTNKLGlCQUNBMkosRUFB
QVEsaUJBQUFDLElBaUJBRSxpQkFBQSxTQUFBWCxFQUFBWSxFQUFBbEwsRUFBQTJCLEdBQ0EsR0FB
QXdKLEdBQUFiLEVBQUEzSixlQUVBLElBQUF1SyxJQUFBQyxHQUFBeEosSUFBQTJJLEVBQUFjLFNB
QUEsQ0FvQkEsR0FBQUMsR0FBQWpCLEVBQUFrQixpQkFBQUgsRUFBQUQsRUFFQUcsSUFDQWpCLEVB
QUFZLFdBQUFWLEVBQUFhLEdBR0FiLEVBQUFXLGlCQUFBQyxFQUFBbEwsRUFBQTJCLEdBRUEwSixH
QUFBZixFQUFBM0osaUJBQUEsTUFBQTJKLEVBQUEzSixnQkFBQWdLLEtBQ0EzSyxFQUFBNEsscUJB
QUF2SixRQUFBOEksRUFBQUcsS0FpQkFwSix5QkFBQSxTQUFBb0osRUFBQXRLLEVBQUFJLEdBQ0Fr
SyxFQUFBN0kscUJBQUFyQixHQVdBa0ssRUFBQXBKLHlCQUFBbEIsS0FTQWpLLEdBQUFELFFBQUFt
TCxHaEIyaERNLFNBQVNsTCxFQUFRRCxFQUFTSCxHaUJyckRoQyxZQUVBLElBQUFtTSxHQUFBbk0s
RUFBQSxHQUVBNFYsRUFBQTVWLEVBQUEsSUFDQTZWLEVBQUE3VixFQUFBLEtBQ0E4VixFQUFBOVYs
RUFBQSxLQUNBK1YsRUFBQS9WLEVBQUEsSUFDQWdXLEVBQUFoVyxFQUFBLEtBQ0FpVyxFQUFBalcs
RUFBQSxLQUVBa1csRUFBQWxXLEVBQUEsS0FDQW1XLEVBQUFuVyxFQUFBLEtBRUFnSSxFQUFBK04s
RUFBQS9OLGNBQ0FvTyxFQUFBTCxFQUFBSyxjQUNBQyxFQUFBTixFQUFBTSxhQVlBQyxFQUFBbkss
RUFDQW9LLEVBQUEsU0FBQUMsR0FDQSxNQUFBQSxJQW1CQUMsR0FHQUMsVUFDQS9TLElBQUFrUyxF
QUFBbFMsSUFDQUssUUFBQTZSLEVBQUE3UixRQUNBMlMsTUFBQWQsRUFBQWMsTUFDQUMsUUFBQWYs
RUFBQWUsUUFDQUMsS0FBQVYsR0FHQVcsVUFBQWxCLEVBQUFrQixVQUNBQyxjQUFBbkIsRUFBQW1C
LGNBRUEvTyxnQkFDQXFPLGVBQ0FXLGVBQUFqQixFQUFBaUIsZUFJQUMsVUFBQWpCLEVBQ0FrQixZ
QUFBaEIsRUFDQUUsZ0JBQ0FHLGNBSUFZLElBQUFyQixFQUVBc0IsUUFBQW5CLEVBR0FLLFdBdUNB
bFcsR0FBQUQsUUFBQXNXLEdqQnFzRE0sU0FBU3JXLEVBQVFELEVBQVNILEdrQjd6RGhDLFlBcUJB
LFNBQUFxWCxHQUFBQyxHQVNBLE1BQUF0VixVQUFBc1YsRUFBQXRDLElBR0EsUUFBQXVDLEdBQUFE
LEdBU0EsTUFBQXRWLFVBQUFzVixFQUFBelMsSUF4Q0EsR0FBQXNILEdBQUFuTSxFQUFBLEdBRUFp
USxFQUFBalEsRUFBQSxJQUlBYyxHQUZBZCxFQUFBLEdBQ0FBLEVBQUEsSUFDQVksT0FBQUMsVUFB
QUMsZ0JBRUEwVyxFQUFBeFgsRUFBQSxJQUVBeVgsR0FDQTVTLEtBQUEsRUFDQW1RLEtBQUEsRUFD
QTBDLFFBQUEsRUFDQUMsVUFBQSxHQTZFQTVCLEVBQUEsU0FBQTlLLEVBQUFwRyxFQUFBbVEsRUFB
QTRDLEVBQUFwVCxFQUFBcVQsRUFBQUMsR0FDQSxHQUFBQyxJQUVBQyxTQUFBUixFQUdBdk0sT0FD
QXBHLE1BQ0FtUSxNQUNBOEMsUUFHQUcsT0FBQUosRUErQ0EsT0FBQUUsR0FPQWhDLEdBQUEvTixj
QUFBLFNBQUFpRCxFQUFBcU0sRUFBQW5SLEdBQ0EsR0FBQWtJLEdBR0F5SixLQUVBalQsRUFBQSxL
QUNBbVEsRUFBQSxLQUNBNEMsRUFBQSxLQUNBcFQsRUFBQSxJQUVBLFVBQUE4UyxFQUFBLENBQ0FE
LEVBQUFDLEtBQ0F0QyxFQUFBc0MsRUFBQXRDLEtBRUF1QyxFQUFBRCxLQUNBelMsRUFBQSxHQUFB
eVMsRUFBQXpTLEtBR0ErUyxFQUFBNVYsU0FBQXNWLEVBQUFJLE9BQUEsS0FBQUosRUFBQUksT0FD
QWxULEVBQUF4QyxTQUFBc1YsRUFBQUssU0FBQSxLQUFBTCxFQUFBSyxRQUVBLEtBQUF0SixJQUFB
aUosR0FDQXhXLEVBQUFQLEtBQUErVyxFQUFBakosS0FBQW9KLEVBQUEzVyxlQUFBdU4sS0FDQXlK
LEVBQUF6SixHQUFBaUosRUFBQWpKLElBT0EsR0FBQTZKLEdBQUF2VixVQUFBQyxPQUFBLENBQ0Es
UUFBQXNWLEVBQ0FKLEVBQUEzUixlQUNHLElBQUErUixFQUFBLEdBRUgsT0FEQUMsR0FBQUMsTUFB
QUYsR0FDQXZYLEVBQUEsRUFBbUJBLEVBQUF1WCxFQUFvQnZYLElBQ3ZDd1gsRUFBQXhYLEdBQUFn
QyxVQUFBaEMsRUFBQSxFQU9BbVgsR0FBQTNSLFNBQUFnUyxFQUlBLEdBQUFsTixLQUFBb04sYUFB
QSxDQUNBLEdBQUFBLEdBQUFwTixFQUFBb04sWUFDQSxLQUFBaEssSUFBQWdLLEdBQ0FyVyxTQUFB
OFYsRUFBQXpKLEtBQ0F5SixFQUFBekosR0FBQWdLLEVBQUFoSyxJQWlCQSxNQUFBMEgsR0FBQTlL
LEVBQUFwRyxFQUFBbVEsRUFBQTRDLEVBQUFwVCxFQUFBeUwsRUFBQUMsUUFBQTRILElBT0EvQixF
QUFBSyxjQUFBLFNBQUFuTCxHQUNBLEdBQUFxTixHQUFBdkMsRUFBQS9OLGNBQUF1USxLQUFBLEtB
QUF0TixFQU9BLE9BREFxTixHQUFBck4sT0FDQXFOLEdBR0F2QyxFQUFBeUMsbUJBQUEsU0FBQUMs
RUFBQUMsR0FDQSxHQUFBQyxHQUFBNUMsRUFBQTBDLEVBQUF4TixLQUFBeU4sRUFBQUQsRUFBQXpE
LElBQUF5RCxFQUFBRyxNQUFBSCxFQUFBSSxRQUFBSixFQUFBUixPQUFBUSxFQUFBWCxNQUVBLE9B
QUFhLElBT0E1QyxFQUFBTSxhQUFBLFNBQUEwQixFQUFBVCxFQUFBblIsR0FDQSxHQUFBa0ksR0FH
QXlKLEVBQUEzTCxLQUF3QjRMLEVBQUFELE9BR3hCalQsRUFBQWtULEVBQUFsVCxJQUNBbVEsRUFB
QStDLEVBQUEvQyxJQUVBNEMsRUFBQUcsRUFBQWEsTUFJQXBVLEVBQUF1VCxFQUFBYyxRQUdBaEIs
RUFBQUUsRUFBQUUsTUFFQSxVQUFBWCxFQUFBLENBQ0FELEVBQUFDLEtBRUF0QyxFQUFBc0MsRUFB
QXRDLElBQ0E2QyxFQUFBNUgsRUFBQUMsU0FFQXFILEVBQUFELEtBQ0F6UyxFQUFBLEdBQUF5UyxF
QUFBelMsSUFJQSxJQUFBd1QsRUFDQU4sR0FBQTlNLE1BQUE4TSxFQUFBOU0sS0FBQW9OLGVBQ0FB
LEVBQUFOLEVBQUE5TSxLQUFBb04sYUFFQSxLQUFBaEssSUFBQWlKLEdBQ0F4VyxFQUFBUCxLQUFB
K1csRUFBQWpKLEtBQUFvSixFQUFBM1csZUFBQXVOLEtBQ0FyTSxTQUFBc1YsRUFBQWpKLElBQUFy
TSxTQUFBcVcsRUFFQVAsRUFBQXpKLEdBQUFnSyxFQUFBaEssR0FFQXlKLEVBQUF6SixHQUFBaUos
RUFBQWpKLElBUUEsR0FBQTZKLEdBQUF2VixVQUFBQyxPQUFBLENBQ0EsUUFBQXNWLEVBQ0FKLEVB
QUEzUixlQUNHLElBQUErUixFQUFBLEdBRUgsT0FEQUMsR0FBQUMsTUFBQUYsR0FDQXZYLEVBQUEs
RUFBbUJBLEVBQUF1WCxFQUFvQnZYLElBQ3ZDd1gsRUFBQXhYLEdBQUFnQyxVQUFBaEMsRUFBQSxF
QUVBbVgsR0FBQTNSLFNBQUFnUyxFQUdBLE1BQUFwQyxHQUFBZ0MsRUFBQTlNLEtBQUFwRyxFQUFB
bVEsRUFBQTRDLEVBQUFwVCxFQUFBcVQsRUFBQUMsSUFVQS9CLEVBQUFpQixlQUFBLFNBQUE4QixH
QUNBLHNCQUFBQSxJQUFBLE9BQUFBLEtBQUFkLFdBQUFSLEdBR0FwWCxFQUFBRCxRQUFBNFYsR2xC
NjBETSxTQUFTM1YsRUFBUUQsRUFBU0gsR21CdHBFaEMsWUFvREEsU0FBQStZLEdBQUFDLEdBQ0Es
aUJBQUFBLEdBQUEsVUFBQUEsR0FBQSxXQUFBQSxHQUFBLGFBQUFBLEVBR0EsUUFBQUMsR0FBQTdX
LEVBQUE2SSxFQUFBNk0sR0FDQSxPQUFBMVYsR0FDQSxjQUNBLHFCQUNBLG9CQUNBLDJCQUNBLGtC
QUNBLHlCQUNBLGtCQUNBLHlCQUNBLGdCQUNBLHVCQUNBLFNBQUEwVixFQUFBb0IsV0FBQUgsRUFB
QTlOLEdBQ0EsU0FDQSxVQXBFQSxHQUFBckUsR0FBQTVHLEVBQUEsR0FFQW1aLEVBQUFuWixFQUFB
LElBQ0FvWixFQUFBcFosRUFBQSxJQUNBcVosRUFBQXJaLEVBQUEsSUFFQXNaLEVBQUF0WixFQUFB
LElBQ0F1WixFQUFBdlosRUFBQSxJQU1Bd1osR0FMQXhaLEVBQUEsT0FXQXlaLEVBQUEsS0FTQUMs
RUFBQSxTQUFBdkssRUFBQXdLLEdBQ0F4SyxJQUNBaUssRUFBQVEseUJBQUF6SyxFQUFBd0ssR0FF
QXhLLEVBQUFRLGdCQUNBUixFQUFBZixZQUFBbkIsUUFBQWtDLEtBSUEwSyxFQUFBLFNBQUFqWSxH
QUNBLE1BQUE4WCxHQUFBOVgsR0FBQSxJQUVBa1ksRUFBQSxTQUFBbFksR0FDQSxNQUFBOFgsR0FB
QTlYLEdBQUEsSUFHQW1ZLEVBQUEsU0FBQXJVLEdBR0EsVUFBQUEsRUFBQXNVLGFBK0NBQyxHQUlB
ck0sV0FLQXNNLHVCQUFBZixFQUFBZSx1QkFLQUMseUJBQUFoQixFQUFBZ0IsMEJBVUFDLFlBQUEs
U0FBQTFVLEVBQUEyVSxFQUFBQyxHQUNBLGtCQUFBQSxHQUFBMVQsRUFBQSxLQUFBeVQsUUFBQUMs
SUFBQSxNQUVBLElBQUF6VixHQUFBa1YsRUFBQXJVLEdBQ0E2VSxFQUFBZixFQUFBYSxLQUFBYixF
QUFBYSxNQUNBRSxHQUFBMVYsR0FBQXlWLENBRUEsSUFBQUUsR0FBQXJCLEVBQUFzQix3QkFBQUos
RUFDQUcsTUFBQUUsZ0JBQ0FGLEVBQUFFLGVBQUFoVixFQUFBMlUsRUFBQUMsSUFTQUssWUFBQSxT
QUFBalYsRUFBQTJVLEdBR0EsR0FBQUUsR0FBQWYsRUFBQWEsRUFDQSxJQUFBcEIsRUFBQW9CLEVB
QUEzVSxFQUFBc0YsZ0JBQUFDLEtBQUF2RixFQUFBc0YsZ0JBQUE4TSxPQUNBLFdBRUEsSUFBQWpU
LEdBQUFrVixFQUFBclUsRUFDQSxPQUFBNlUsTUFBQTFWLElBU0ErVixlQUFBLFNBQUFsVixFQUFB
MlUsR0FDQSxHQUFBRyxHQUFBckIsRUFBQXNCLHdCQUFBSixFQUNBRyxNQUFBSyxvQkFDQUwsRUFB
QUssbUJBQUFuVixFQUFBMlUsRUFHQSxJQUFBRSxHQUFBZixFQUFBYSxFQUVBLElBQUFFLEVBQUEs
Q0FDQSxHQUFBMVYsR0FBQWtWLEVBQUFyVSxTQUNBNlUsR0FBQTFWLEtBU0FpVyxtQkFBQSxTQUFB
cFYsR0FDQSxHQUFBYixHQUFBa1YsRUFBQXJVLEVBQ0EsUUFBQTJVLEtBQUFiLEdBQ0EsR0FBQUEs
RUFBQTFZLGVBQUF1WixJQUlBYixFQUFBYSxHQUFBeFYsR0FBQSxDQUlBLEdBQUEyVixHQUFBckIs
RUFBQXNCLHdCQUFBSixFQUNBRyxNQUFBSyxvQkFDQUwsRUFBQUssbUJBQUFuVixFQUFBMlUsU0FH
QWIsR0FBQWEsR0FBQXhWLEtBV0FrVyxjQUFBLFNBQUFDLEVBQUFqTixFQUFBQyxFQUFBQyxHQUdB
LE9BRkFnTixHQUNBQyxFQUFBL0IsRUFBQStCLFFBQ0F2YSxFQUFBLEVBQW1CQSxFQUFBdWEsRUFB
QXRZLE9BQW9CakMsSUFBQSxDQUV2QyxHQUFBd2EsR0FBQUQsRUFBQXZhLEVBQ0EsSUFBQXdhLEVB
QUEsQ0FDQSxHQUFBQyxHQUFBRCxFQUFBSixjQUFBQyxFQUFBak4sRUFBQUMsRUFBQUMsRUFDQW1O
LEtBQ0FILEVBQUEzQixFQUFBMkIsRUFBQUcsS0FJQSxNQUFBSCxJQVVBSSxjQUFBLFNBQUFKLEdB
Q0FBLElBQ0F4QixFQUFBSCxFQUFBRyxFQUFBd0IsS0FTQUssa0JBQUEsU0FBQTNCLEdBR0EsR0FB
QTRCLEdBQUE5QixDQUNBQSxHQUFBLEtBQ0FFLEVBQ0FKLEVBQUFnQyxFQUFBMUIsR0FFQU4sRUFB
QWdDLEVBQUF6QixHQUVBTCxFQUFBN1MsRUFBQSxhQUVBeVMsRUFBQW1DLHNCQU1BQyxRQUFBLFdB
Q0FqQyxNQUdBa0Msa0JBQUEsV0FDQSxNQUFBbEMsSUFJQXBaLEdBQUFELFFBQUE4WixHbkJzcUVN
LFNBQVM3WixFQUFRRCxFQUFTSCxHb0I1NkVoQyxZQWVBLFNBQUEyYixHQUFBalcsRUFBQXlKLEVB
QUF5TSxHQUNBLEdBQUF2QixHQUFBbEwsRUFBQXJCLGVBQUErTix3QkFBQUQsRUFDQSxPQUFBakIs
R0FBQWpWLEVBQUEyVSxHQVNBLFFBQUF5QixHQUFBcFcsRUFBQXFXLEVBQUE1TSxHQUlBLEdBQUFt
TCxHQUFBcUIsRUFBQWpXLEVBQUF5SixFQUFBNE0sRUFDQXpCLEtBQ0FuTCxFQUFBNk0sbUJBQUEx
QyxFQUFBbkssRUFBQTZNLG1CQUFBMUIsR0FDQW5MLEVBQUE4TSxtQkFBQTNDLEVBQUFuSyxFQUFB
OE0sbUJBQUF2VyxJQVdBLFFBQUF3VyxHQUFBL00sR0FDQUEsS0FBQXJCLGVBQUErTix5QkFDQXpD
LEVBQUErQyxpQkFBQWhOLEVBQUFqQixZQUFBNE4sRUFBQTNNLEdBT0EsUUFBQWlOLEdBQUFqTixH
QUNBLEdBQUFBLEtBQUFyQixlQUFBK04sd0JBQUEsQ0FDQSxHQUFBOU4sR0FBQW9CLEVBQUFqQixZ
QUNBbU8sRUFBQXRPLEVBQUFxTCxFQUFBa0Qsa0JBQUF2TyxHQUFBLElBQ0FxTCxHQUFBK0MsaUJB
QUFFLEVBQUFQLEVBQUEzTSxJQVNBLFFBQUFvTixHQUFBN1csRUFBQThXLEVBQUFyTixHQUNBLEdB
QUFBLEtBQUFyQixlQUFBdU0saUJBQUEsQ0FDQSxHQUFBQSxHQUFBbEwsRUFBQXJCLGVBQUF1TSxp
QkFDQUMsRUFBQUssRUFBQWpWLEVBQUEyVSxFQUNBQyxLQUNBbkwsRUFBQTZNLG1CQUFBMUMsRUFB
QW5LLEVBQUE2TSxtQkFBQTFCLEdBQ0FuTCxFQUFBOE0sbUJBQUEzQyxFQUFBbkssRUFBQThNLG1C
QUFBdlcsS0FVQSxRQUFBK1csR0FBQXROLEdBQ0FBLEtBQUFyQixlQUFBdU0sa0JBQ0FrQyxFQUFB
cE4sRUFBQWpCLFlBQUEsS0FBQWlCLEdBSUEsUUFBQXVOLEdBQUF6QixHQUNBMUIsRUFBQTBCLEVB
QUFpQixHQUdBLFFBQUFTLEdBQUExQixHQUNBMUIsRUFBQTBCLEVBQUFtQixHQUdBLFFBQUFRLEdB
QUFDLEVBQUFDLEVBQUFyWSxFQUFBRSxHQUNBeVUsRUFBQTJELG1CQUFBdFksRUFBQUUsRUFBQTRY
LEVBQUFNLEVBQUFDLEdBR0EsUUFBQUUsR0FBQS9CLEdBQ0ExQixFQUFBMEIsRUFBQXdCLEdBbkdB
LEdBQUF4QyxHQUFBamEsRUFBQSxJQUNBb1osRUFBQXBaLEVBQUEsSUFFQXNaLEVBQUF0WixFQUFB
LElBQ0F1WixFQUFBdlosRUFBQSxJQUdBMmEsR0FGQTNhLEVBQUEsR0FFQWlhLEVBQUFVLGFBMEdB
c0MsR0FDQVAsK0JBQ0FDLHlDQUNBSyw2QkFDQUosaUNBR0F4YyxHQUFBRCxRQUFBOGMsR3BCNDdF
TSxTQUFTN2MsRUFBUUQsR3FCdGpGdkIsWUFXQSxJQUFBK2MsSUFNQUMsT0FBQSxTQUFBdFksR0FD
QUEsRUFBQXVZLHVCQUFBcGIsUUFHQXFiLElBQUEsU0FBQXhZLEdBQ0EsTUFBQUEsR0FBQXVZLHdC
QUdBRSxJQUFBLFNBQUF6WSxHQUNBLE1BQUE3QyxVQUFBNkMsRUFBQXVZLHdCQUdBRyxJQUFBLFNB
QUExWSxFQUFBdU4sR0FDQXZOLEVBQUF1WSx1QkFBQWhMLEdBSUFoUyxHQUFBRCxRQUFBK2MsR3JC
c2tGTSxTQUFTOWMsRUFBUUQsRUFBU0gsR3NCeG1GaEMsWUF5Q0EsU0FBQXdkLEdBQUExUCxFQUFB
MlAsRUFBQXpQLEVBQUFDLEdBQ0EsTUFBQUosR0FBQXROLEtBQUFlLEtBQUF3TSxFQUFBMlAsRUFB
QXpQLEVBQUFDLEdBeENBLEdBQUFKLEdBQUE3TixFQUFBLElBRUEwZCxFQUFBMWQsRUFBQSxJQU1B
MmQsR0FDQUMsS0FBQSxTQUFBek8sR0FDQSxHQUFBQSxFQUFBeU8sS0FDQSxNQUFBek8sR0FBQXlP
LElBR0EsSUFBQXJaLEdBQUFtWixFQUFBdk8sRUFDQSxJQUFBNUssRUFBQXVELFNBQUF2RCxFQUVB
LE1BQUFBLEVBR0EsSUFBQXNaLEdBQUF0WixFQUFBdVosYUFFQSxPQUFBRCxHQUNBQSxFQUFBRSxh
QUFBRixFQUFBRyxhQUVBbFcsUUFHQW1XLE9BQUEsU0FBQTlPLEdBQ0EsTUFBQUEsR0FBQThPLFFB
QUEsR0FjQXBRLEdBQUErQixhQUFBNE4sRUFBQUcsR0FFQXZkLEVBQUFELFFBQUFxZCxHdEJ3bkZB
LEVBRU0sU0FBU3BkLEVBQVFELEVBQVNILEd1QnpxRmhDLFlBRUEsSUFBQWtlLEtBTUE5ZCxHQUFB
RCxRQUFBK2QsR3ZCeXJGTSxTQUFTOWQsRUFBUUQsRUFBU0gsR3dCanNGaEMsWUFrSkEsU0FBQW1l
LEdBQUFDLEdBT0EsTUFKQXhkLFFBQUFDLFVBQUFDLGVBQUFQLEtBQUE2ZCxFQUFBQyxLQUNBRCxF
QUFBQyxHQUFBQyxJQUNBQyxFQUFBSCxFQUFBQyxRQUVBRSxFQUFBSCxFQUFBQyxJQXZKQSxHQWdF
QUcsR0FoRUFyUyxFQUFBbk0sRUFBQSxHQUVBbVosRUFBQW5aLEVBQUEsSUFDQXllLEVBQUF6ZSxF
QUFBLEtBQ0EwZSxFQUFBMWUsRUFBQSxJQUVBMmUsRUFBQTNlLEVBQUEsS0FDQTRlLEVBQUE1ZSxF
QUFBLElBMERBdWUsS0FDQU0sR0FBQSxFQUNBUCxFQUFBLEVBS0FRLEdBQ0FDLFNBQUEsUUFDQUMs
Z0JBQUFMLEVBQUEsZ0NBQ0FNLHNCQUFBTixFQUFBLDRDQUNBTyxrQkFBQVAsRUFBQSxvQ0FDQVEs
UUFBQSxPQUNBQyxXQUFBLFVBQ0FDLGtCQUFBLGlCQUNBQyxVQUFBLFNBQ0FDLFNBQUEsUUFDQUMs
a0JBQUEsaUJBQ0FDLG9CQUFBLG1CQUNBQyxxQkFBQSxvQkFDQUMsZUFBQSxjQUNBQyxRQUFBLE9B
Q0FDLE9BQUEsTUFDQUMsZUFBQSxXQUNBQyxRQUFBLE9BQ0FDLFdBQUEsVUFDQUMsYUFBQSxZQUNB
QyxZQUFBLFdBQ0FDLGFBQUEsWUFDQUMsWUFBQSxXQUNBQyxhQUFBLFlBQ0FDLFFBQUEsT0FDQUMs
a0JBQUEsaUJBQ0FDLFdBQUEsVUFDQUMsYUFBQSxZQUNBQyxTQUFBLFFBQ0FDLFNBQUEsUUFDQUMs
U0FBQSxRQUNBQyxTQUFBLFFBQ0FDLFdBQUEsVUFDQUMsWUFBQSxXQUNBQyxTQUFBLFFBQ0FDLGNB
QUEsYUFDQUMsa0JBQUEsaUJBQ0FDLGFBQUEsWUFDQUMsYUFBQSxZQUNBQyxhQUFBLFlBQ0FDLFlB
QUEsV0FDQUMsYUFBQSxZQUNBQyxXQUFBLFVBQ0FDLFNBQUEsUUFDQUMsU0FBQSxRQUNBQyxRQUFB
LE9BQ0FDLFdBQUEsVUFDQUMsWUFBQSxXQUNBQyxjQUFBLGFBQ0FDLFVBQUEsU0FDQUMsVUFBQSxT
QUNBQyxXQUFBLFVBQ0FDLG1CQUFBLGtCQUNBQyxXQUFBLFVBQ0FDLFdBQUEsVUFDQUMsYUFBQSxZ
QUNBQyxjQUFBLGFBQ0FDLGVBQUEsY0FDQUMsWUFBQSxXQUNBQyxhQUFBLFlBQ0FDLGNBQUEsYUFD
QUMsaUJBQUFoRSxFQUFBLGtDQUNBaUUsZ0JBQUEsZUFDQUMsV0FBQSxVQUNBQyxTQUFBLFNBTUF6
RSxFQUFBLG9CQUFBL2EsT0FBQW1FLEtBQUFDLFVBQUF6RyxNQUFBLEdBc0JBOGhCLEVBQUE1VyxL
QUF5Q3NTLEdBSXpDdUUsbUJBQUEsS0FFQXBWLFdBSUFxVix5QkFBQSxTQUFBRCxHQUNBQSxFQUFB
RSxrQkFBQUgsRUFBQUksZ0JBQ0FKLEVBQUFDLHVCQVNBSSxXQUFBLFNBQUFDLEdBQ0FOLEVBQUFD
LG9CQUNBRCxFQUFBQyxtQkFBQUksV0FBQUMsSUFPQUMsVUFBQSxXQUNBLFNBQUFQLEVBQUFDLHFC
QUFBRCxFQUFBQyxtQkFBQU0sY0F3QkFDLFNBQUEsU0FBQWxKLEVBQUFtSixHQUtBLE9BSkFwRixH
QUFBb0YsRUFDQUMsRUFBQXRGLEVBQUFDLEdBQ0FzRixFQUFBdkssRUFBQXdLLDZCQUFBdEosR0FF
QTFaLEVBQUEsRUFBbUJBLEVBQUEraUIsRUFBQTlnQixPQUF5QmpDLElBQUEsQ0FDNUMsR0FBQWlq
QixHQUFBRixFQUFBL2lCLEVBQ0E4aUIsR0FBQTNpQixlQUFBOGlCLElBQUFILEVBQUFHLEtBQ0Es
YUFBQUEsRUFDQWhGLEVBQUEsU0FDQW1FLEVBQUFDLG1CQUFBYSxpQkFBQSxtQkFBQXpGLEdBQ1dR
LEVBQUEsY0FDWG1FLEVBQUFDLG1CQUFBYSxpQkFBQSx3QkFBQXpGLEdBSUEyRSxFQUFBQyxtQkFB
QWEsaUJBQUEsNEJBQUF6RixHQUVTLGNBQUF3RixFQUNUaEYsRUFBQSxhQUNBbUUsRUFBQUMsbUJB
QUFjLGtCQUFBLHFCQUFBMUYsR0FFQTJFLEVBQUFDLG1CQUFBYSxpQkFBQSxxQkFBQWQsRUFBQUMs
bUJBQUFlLGVBRVMsYUFBQUgsR0FBQSxZQUFBQSxHQUNUaEYsRUFBQSxhQUNBbUUsRUFBQUMsbUJB
QUFjLGtCQUFBLG1CQUFBMUYsR0FDQTJFLEVBQUFDLG1CQUFBYyxrQkFBQSxpQkFBQTFGLElBQ1dR
LEVBQUEsYUFHWG1FLEVBQUFDLG1CQUFBYSxpQkFBQSxxQkFBQXpGLEdBQ0EyRSxFQUFBQyxtQkFB
QWEsaUJBQUEscUJBQUF6RixJQUlBcUYsRUFBQXRFLFNBQUEsRUFDQXNFLEVBQUE3QyxVQUFBLEdB
Q1M5QixFQUFBaGUsZUFBQThpQixJQUNUYixFQUFBQyxtQkFBQWEsaUJBQUFELEVBQUE5RSxFQUFB
OEUsR0FBQXhGLEdBR0FxRixFQUFBRyxJQUFBLEtBS0FDLGlCQUFBLFNBQUE3SSxFQUFBZ0osRUFB
QUMsR0FDQSxNQUFBbEIsR0FBQUMsbUJBQUFhLGlCQUFBN0ksRUFBQWdKLEVBQUFDLElBR0FILGtC
QUFBLFNBQUE5SSxFQUFBZ0osRUFBQUMsR0FDQSxNQUFBbEIsR0FBQUMsbUJBQUFjLGtCQUFBOUks
RUFBQWdKLEVBQUFDLElBUUFDLG9CQUFBLFdBQ0EsSUFBQW5jLFNBQUFvYyxZQUNBLFFBRUEsSUFB
QUMsR0FBQXJjLFNBQUFvYyxZQUFBLGFBQ0EsY0FBQUMsR0FBQSxTQUFBQSxJQWNBQyw0QkFBQSxX
QUlBLEdBSEFyaUIsU0FBQXdjLElBQ0FBLEVBQUF1RSxFQUFBbUIsd0JBRUExRixJQUFBSyxFQUFB
LENBQ0EsR0FBQXlGLEdBQUE1RixFQUFBNkYsbUJBQ0F4QixHQUFBQyxtQkFBQXdCLG1CQUFBRixH
QUNBekYsR0FBQSxLQUtBemUsR0FBQUQsUUFBQTRpQixHeEJpdEZNLFNBQVMzaUIsRUFBUUQsRUFB
U0gsR3lCemdHaEMsWUFzREEsU0FBQXlrQixHQUFBM1csRUFBQTJQLEVBQUF6UCxFQUFBQyxHQUNB
LE1BQUF1UCxHQUFBamQsS0FBQWUsS0FBQXdNLEVBQUEyUCxFQUFBelAsRUFBQUMsR0FyREEsR0FB
QXVQLEdBQUF4ZCxFQUFBLElBQ0EwZSxFQUFBMWUsRUFBQSxJQUVBMGtCLEVBQUExa0IsRUFBQSxJ
QU1BMmtCLEdBQ0FDLFFBQUEsS0FDQUMsUUFBQSxLQUNBQyxRQUFBLEtBQ0FDLFFBQUEsS0FDQUMs
UUFBQSxLQUNBQyxTQUFBLEtBQ0FDLE9BQUEsS0FDQUMsUUFBQSxLQUNBQyxpQkFBQVYsRUFDQVcs
T0FBQSxTQUFBbFcsR0FJQSxHQUFBa1csR0FBQWxXLEVBQUFrVyxNQUNBLGdCQUFBbFcsR0FDQWtX
LEVBTUEsSUFBQUEsRUFBQSxNQUFBQSxFQUFBLEtBRUFDLFFBQUEsS0FDQUMsY0FBQSxTQUFBcFcs
R0FDQSxNQUFBQSxHQUFBb1csZ0JBQUFwVyxFQUFBcVcsY0FBQXJXLEVBQUFzVyxXQUFBdFcsRUFB
QXVXLFVBQUF2VyxFQUFBcVcsY0FHQUcsTUFBQSxTQUFBeFcsR0FDQSxlQUFBQSxLQUFBd1csTUFB
QXhXLEVBQUEyVixRQUFBcEcsRUFBQWtILG1CQUVBQyxNQUFBLFNBQUExVyxHQUNBLGVBQUFBLEtB
QUEwVyxNQUFBMVcsRUFBQTRWLFFBQUFyRyxFQUFBb0gsa0JBY0F0SSxHQUFBNU4sYUFBQTZVLEVB
QUFFLEdBRUF2a0IsRUFBQUQsUUFBQXNrQixHekJ5aEdNLFNBQVNya0IsRUFBUUQsRUFBU0gsRzBC
cGxHaEMsWUFFQSxJQUFBNEcsR0FBQTVHLEVBQUEsR0FJQStsQixHQUZBL2xCLEVBQUEsT0FpRUFn
bUIsR0FRQXhjLHdCQUFBLFdBQ0FsSSxLQUFBMmtCLG9CQUFBM2tCLEtBQUF5TCx5QkFDQXpMLEtB
QUE0a0IsZ0JBQ0E1a0IsS0FBQTRrQixnQkFBQXRqQixPQUFBLEVBRUF0QixLQUFBNGtCLG1CQUVB
NWtCLEtBQUE2a0Isa0JBQUEsR0FHQUEsa0JBQUEsRUFNQXBaLHVCQUFBLEtBRUFxWixnQkFBQSxX
QUNBLFFBQUE5a0IsS0FBQTZrQixrQkFzQkFqWixRQUFBLFNBQUFDLEVBQUFDLEVBQUFqTSxFQUFB
QyxFQUFBWCxFQUFBa0IsRUFBQUMsRUFBQUMsR0FFQVAsS0FBQThrQixrQkFBQXhmLEVBQUEsWUFD
QSxJQUFBeWYsR0FDQUMsQ0FDQSxLQUNBaGxCLEtBQUE2a0Isa0JBQUEsRUFLQUUsR0FBQSxFQUNB
L2tCLEtBQUFpbEIsY0FBQSxHQUNBRCxFQUFBblosRUFBQTVNLEtBQUE2TSxFQUFBak0sRUFBQUMs
RUFBQVgsRUFBQWtCLEVBQUFDLEVBQUFDLEdBQ0F3a0IsR0FBQSxFQUNLLFFBQ0wsSUFDQSxHQUFB
QSxFQUdBLElBQ0Eva0IsS0FBQWtsQixTQUFBLEdBQ1csTUFBQXJpQixRQUlYN0MsTUFBQWtsQixT
QUFBLEdBRU8sUUFDUGxsQixLQUFBNmtCLGtCQUFBLEdBR0EsTUFBQUcsSUFHQUMsY0FBQSxTQUFB
RSxHQUVBLE9BREFSLEdBQUEza0IsS0FBQTJrQixvQkFDQXRsQixFQUFBOGxCLEVBQTRCOWxCLEVB
QUFzbEIsRUFBQXJqQixPQUFnQ2pDLElBQUEsQ0FDNUQsR0FBQStsQixHQUFBVCxFQUFBdGxCLEVB
Q0EsS0FLQVcsS0FBQTRrQixnQkFBQXZsQixHQUFBb2xCLEVBQ0F6a0IsS0FBQTRrQixnQkFBQXZs
QixHQUFBK2xCLEVBQUFuYSxXQUFBbWEsRUFBQW5hLFdBQUFoTSxLQUFBZSxNQUFBLEtBQ08sUUFD
UCxHQUFBQSxLQUFBNGtCLGdCQUFBdmxCLEtBQUFvbEIsRUFJQSxJQUNBemtCLEtBQUFpbEIsY0FB
QTVsQixFQUFBLEdBQ1csTUFBQXdELFFBWVhxaUIsU0FBQSxTQUFBQyxHQUNBbmxCLEtBQUE4a0Is
a0JBQUEsT0FBQXhmLEVBQUEsS0FFQSxRQURBcWYsR0FBQTNrQixLQUFBMmtCLG9CQUNBdGxCLEVB
QUE4bEIsRUFBNEI5bEIsRUFBQXNsQixFQUFBcmpCLE9BQWdDakMsSUFBQSxDQUM1RCxHQUVBMGxC
LEdBRkFLLEVBQUFULEVBQUF0bEIsR0FDQWdtQixFQUFBcmxCLEtBQUE0a0IsZ0JBQUF2bEIsRUFF
QSxLQUtBMGxCLEdBQUEsRUFDQU0sSUFBQVosR0FBQVcsRUFBQWxhLE9BQ0FrYSxFQUFBbGEsTUFB
QWpNLEtBQUFlLEtBQUFxbEIsR0FFQU4sR0FBQSxFQUNPLFFBQ1AsR0FBQUEsRUFJQSxJQUNBL2tC
LEtBQUFrbEIsU0FBQTdsQixFQUFBLEdBQ1csTUFBQWlCLE1BSVhOLEtBQUE0a0IsZ0JBQUF0akIs
T0FBQSxHQUlBeEMsR0FBQUQsUUFBQTZsQixHMUJxbUdNLFNBQVM1bEIsRUFBUUQsRzJCcHlHdkIs
WUFrQkEsU0FBQXltQixHQUFBQyxHQUNBLEdBQUFDLEdBQUEsR0FBQUQsRUFDQUUsRUFBQUMsRUFB
QUMsS0FBQUgsRUFFQSxLQUFBQyxFQUNBLE1BQUFELEVBR0EsSUFBQUksR0FDQTNXLEVBQUEsR0FD
QTRXLEVBQUEsRUFDQUMsRUFBQSxDQUVBLEtBQUFELEVBQUFKLEVBQUFJLE1BQTJCQSxFQUFBTCxF
QUFBbGtCLE9BQW9CdWtCLElBQUEsQ0FDL0MsT0FBQUwsRUFBQU8sV0FBQUYsSUFDQSxRQUVBRCxF
QUFBLFFBQ0EsTUFDQSxTQUVBQSxFQUFBLE9BQ0EsTUFDQSxTQUVBQSxFQUFBLFFBQ0EsTUFDQSxT
QUVBQSxFQUFBLE1BQ0EsTUFDQSxTQUVBQSxFQUFBLE1BQ0EsTUFDQSxTQUNBLFNBR0FFLElBQUFE
LElBQ0E1VyxHQUFBdVcsRUFBQVEsVUFBQUYsRUFBQUQsSUFHQUMsRUFBQUQsRUFBQSxFQUNBNVcs
R0FBQTJXLEVBR0EsTUFBQUUsS0FBQUQsRUFBQTVXLEVBQUF1VyxFQUFBUSxVQUFBRixFQUFBRCxH
QUFBNVcsRUFVQSxRQUFBZ1gsR0FBQTlXLEdBQ0EsdUJBQUFBLElBQUEsZ0JBQUFBLEdBSUEsR0FB
QUEsRUFFQW1XLEVBQUFuVyxHQTFFQSxHQUFBdVcsR0FBQSxTQTZFQTVtQixHQUFBRCxRQUFBb25C
LEczQjYwR00sU0FBU25uQixFQUFRRCxFQUFTSCxHNEIzN0doQyxZQUVBLElBU0F3bkIsR0FUQXZm
LEVBQUFqSSxFQUFBLEdBQ0F1UixFQUFBdlIsRUFBQSxJQUVBeW5CLEVBQUEsZUFDQUMsRUFBQSx1
REFFQWxXLEVBQUF4UixFQUFBLElBYUF3USxFQUFBZ0IsRUFBQSxTQUFBek0sRUFBQXdMLEdBSUEs
R0FBQXhMLEVBQUFrTixlQUFBVixFQUFBb1csS0FBQSxhQUFBNWlCLEdBUUFBLEVBQUE2aUIsVUFB
QXJYLE1BUkEsQ0FDQWlYLEtBQUF6ZixTQUFBQyxjQUFBLE9BQ0F3ZixFQUFBSSxVQUFBLFFBQUFy
WCxFQUFBLFFBRUEsS0FEQSxHQUFBc1gsR0FBQUwsRUFBQWxoQixXQUNBdWhCLEVBQUF2aEIsWUFD
QXZCLEVBQUFtTSxZQUFBMlcsRUFBQXZoQixjQU9BLElBQUEyQixFQUFBSixVQUFBLENBT0EsR0FB
QWlnQixHQUFBL2YsU0FBQUMsY0FBQSxNQUNBOGYsR0FBQUYsVUFBQSxJQUNBLEtBQUFFLEVBQUFG
LFlBQ0FwWCxFQUFBLFNBQUF6TCxFQUFBd0wsR0FjQSxHQVJBeEwsRUFBQWlDLFlBQ0FqQyxFQUFB
aUMsV0FBQThKLGFBQUEvTCxLQU9BMGlCLEVBQUEzVixLQUFBdkIsSUFBQSxNQUFBQSxFQUFBLElB
QUFtWCxFQUFBNVYsS0FBQXZCLEdBQUEsQ0FPQXhMLEVBQUE2aUIsVUFBQXRrQixPQUFBRyxhQUFB
LE9BQUE4TSxDQUlBLElBQUF3WCxHQUFBaGpCLEVBQUF1QixVQUNBLEtBQUF5aEIsRUFBQUMsS0FB
QXBsQixPQUNBbUMsRUFBQWtqQixZQUFBRixHQUVBQSxFQUFBRyxXQUFBLFNBR0FuakIsR0FBQTZp
QixVQUFBclgsSUFJQXVYLEVBQUEsS0FHQTFuQixFQUFBRCxRQUFBcVEsRzVCMjhHTSxTQUFTcFEs
RUFBUUQsRUFBU0gsRzZCM2lIaEMsWUE2QkEsU0FBQW1vQixHQUFBQyxHQUFzQyxNQUFBQSxNQUFB
QyxXQUFBRCxHQUF1Q0UsUUFBQUYsR0EzQjdFam9CLEVBQUFrb0IsWUFBQSxFQUNBbG9CLEVBQUFv
b0IsUUFBQXBvQixFQUFBcW9CLGdCQUFBcm9CLEVBQUFzb0IsbUJBQUF0b0IsRUFBQXVvQixnQkFB
QXZvQixFQUFBd29CLFlBQUEzbUIsTUFFQSxJQUFBNG1CLEdBQUE1b0IsRUFBQSxJQUVBNm9CLEVB
QUFWLEVBQUFTLEdBRUFFLEVBQUE5b0IsRUFBQSxLQUVBK29CLEVBQUFaLEVBQUFXLEdBRUFFLEVB
QUFocEIsRUFBQSxLQUVBaXBCLEVBQUFkLEVBQUFhLEdBRUFFLEVBQUFscEIsRUFBQSxLQUVBbXBC
LEVBQUFoQixFQUFBZSxHQUVBRSxFQUFBcHBCLEVBQUEsSUFFQXFwQixFQUFBbEIsRUFBQWlCLEdB
RUFFLEVBQUF0cEIsRUFBQSxHQUVBbW9CLEdBQUFtQixFQWNBbnBCLEdBQUF3b0IsWUFBQUUsRUFB
QSxRQUNBMW9CLEVBQUF1b0IsZ0JBQUFLLEVBQUEsUUFDQTVvQixFQUFBc29CLG1CQUFBUSxFQUFB
LFFBQ0E5b0IsRUFBQXFvQixnQkFBQVcsRUFBQSxRQUNBaHBCLEVBQUFvb0IsUUFBQWMsRUFBQSxT
N0JpakhNLFNBQVNqcEIsRUFBUUQsRUFBU0gsRzhCOWxIaEMsR0FBQXVwQixHQUFBQyxHQU9BLFdB
Q0EsWUFJQSxTQUFBQyxLQUdBLE9BRkFDLE1BRUEvb0IsRUFBQSxFQUFpQkEsRUFBQWdDLFVBQUFD
LE9BQXNCakMsSUFBQSxDQUN2QyxHQUFBZ0ksR0FBQWhHLFVBQUFoQyxFQUNBLElBQUFnSSxFQUFB
LENBRUEsR0FBQWdoQixTQUFBaGhCLEVBRUEsZUFBQWdoQixHQUFBLFdBQUFBLEVBQ0FELEVBQUEz
aUIsS0FBQTRCLE9BQ0ksSUFBQXlQLE1BQUF3UixRQUFBamhCLEdBQ0orZ0IsRUFBQTNpQixLQUFB
MGlCLEVBQUFwb0IsTUFBQSxLQUFBc0gsUUFDSSxlQUFBZ2hCLEVBQ0osT0FBQTlrQixLQUFBOEQs
R0FDQWtoQixFQUFBdHBCLEtBQUFvSSxFQUFBOUQsSUFBQThELEVBQUE5RCxJQUNBNmtCLEVBQUEz
aUIsS0FBQWxDLElBTUEsTUFBQTZrQixHQUFBN2xCLEtBQUEsS0F4QkEsR0FBQWdtQixNQUFnQi9v
QixjQTJCaEIsb0JBQUFWLE1BQUFELFFBQ0FDLEVBQUFELFFBQUFzcEIsR0FHQUYsS0FBQUMsRUFB
QSxXQUNBLE1BQUFDLElBQ0dwb0IsTUFBQWxCLEVBQUFvcEIsS0FBQXZuQixTQUFBd25CLElBQUFw
cEIsRUFBQUQsUUFBQXFwQixTOUJ5bUhHLFNBQVNwcEIsRUFBUUQsRytCdG9IdkIsWUFRQSxTQUFB
MnBCLEdBQUFDLEVBQUFDLEdBRUEsTUFBQUQsS0FBQUMsRUFJQSxJQUFBRCxHQUFBLElBQUFDLEdB
QUEsRUFBQUQsSUFBQSxFQUFBQyxFQUdBRCxPQUFBQyxNQVNBLFFBQUFDLEdBQUFDLEVBQUFDLEdB
Q0EsR0FBQUwsRUFBQUksRUFBQUMsR0FDQSxRQUdBLG9CQUFBRCxJQUFBLE9BQUFBLEdBQUEsZ0JB
QUFDLElBQUEsT0FBQUEsRUFDQSxRQUdBLElBQUFDLEdBQUF4cEIsT0FBQXNELEtBQUFnbUIsR0FD
QUcsRUFBQXpwQixPQUFBc0QsS0FBQWltQixFQUVBLElBQUFDLEVBQUF4bkIsU0FBQXluQixFQUFB
em5CLE9BQ0EsUUFJQSxRQUFBakMsR0FBQSxFQUFpQkEsRUFBQXlwQixFQUFBeG5CLE9BQWtCakMs
SUFDbkMsSUFBQUcsRUFBQVAsS0FBQTRwQixFQUFBQyxFQUFBenBCLE1BQUFtcEIsRUFBQUksRUFB
QUUsRUFBQXpwQixJQUFBd3BCLEVBQUFDLEVBQUF6cEIsS0FDQSxRQUlBLFVBL0NBLEdBQUFHLEdB
QUFGLE9BQUFDLFVBQUFDLGNBa0RBVixHQUFBRCxRQUFBOHBCLEcvQjBwSE0sU0FBUzdwQixFQUFR
RCxFQUFTSCxHZ0M1cUhoQyxRQUFBc3FCLEdBQUFsWSxHQUNBLElBQUFtWSxFQUFBblksSUFBQW9Z
LEVBQUFwWSxJQUFBcVksRUFDQSxRQUVBLElBQUFDLEdBQUFDLEVBQUF2WSxFQUNBLFdBQUFzWSxF
QUNBLFFBRUEsSUFBQUUsR0FBQTlwQixFQUFBUCxLQUFBbXFCLEVBQUEsZ0JBQUFBLEVBQUF0YyxX
QUNBLHlCQUFBd2Msb0JBQ0FDLEVBQUF0cUIsS0FBQXFxQixJQUFBRSxFQTFEQSxHQUFBTixHQUFB
eHFCLEVBQUEsS0FDQTJxQixFQUFBM3FCLEVBQUEsS0FDQXVxQixFQUFBdnFCLEVBQUEsS0FHQXlx
QixFQUFBLGtCQUdBTSxFQUFBQyxTQUFBbnFCLFVBQ0FvcUIsRUFBQXJxQixPQUFBQyxVQUdBZ3FC
LEVBQUFFLEVBQUFwakIsU0FHQTdHLEVBQUFtcUIsRUFBQW5xQixlQUdBZ3FCLEVBQUFELEVBQUF0
cUIsS0FBQUssT0EyQ0FSLEdBQUFELFFBQUFtcUIsR2hDbXVITSxTQUFTbHFCLEVBQVFELEVBQVNI
LEdpQ3R4SGhDLFlBV0EsU0FBQWtyQixHQUFBbGtCLEVBQUFqQyxHQU1BLE1BSEFxVCxPQUFBd1Is
UUFBQTdrQixLQUNBQSxJQUFBLElBRUFBLElBQUE0QixZQUFBSyxFQUFBVixXQWtCQSxRQUFBNmtC
LEdBQUFua0IsRUFBQWlLLEVBQUFjLEdBQ0FULEVBQUFoQixpQkFBQXRKLEVBQUFpSyxFQUFBYyxH
QUdBLFFBQUFxWixHQUFBcGtCLEVBQUFYLEVBQUEwTCxHQUNBcUcsTUFBQXdSLFFBQUF2akIsR0FD
QWdsQixFQUFBcmtCLEVBQUFYLEVBQUEsR0FBQUEsRUFBQSxHQUFBMEwsR0FFQXVaLEVBQUF0a0Is
RUFBQVgsRUFBQTBMLEdBSUEsUUFBQWtXLEdBQUFqaEIsRUFBQVgsR0FDQSxHQUFBK1IsTUFBQXdS
LFFBQUF2akIsR0FBQSxDQUNBLEdBQUFrbEIsR0FBQWxsQixFQUFBLEVBQ0FBLEtBQUEsR0FDQW1s
QixFQUFBeGtCLEVBQUFYLEVBQUFrbEIsR0FDQXZrQixFQUFBaWhCLFlBQUFzRCxHQUVBdmtCLEVB
QUFpaEIsWUFBQTVoQixHQUdBLFFBQUFnbEIsR0FBQXJrQixFQUFBeWtCLEVBQUFGLEVBQUF4WixH
QUVBLElBREEsR0FBQWhOLEdBQUEwbUIsSUFDQSxDQUNBLEdBQUFDLEdBQUEzbUIsRUFBQTRCLFdB
RUEsSUFEQTJrQixFQUFBdGtCLEVBQUFqQyxFQUFBZ04sR0FDQWhOLElBQUF3bUIsRUFDQSxLQUVB
eG1CLEdBQUEybUIsR0FJQSxRQUFBRixHQUFBeGtCLEVBQUEya0IsRUFBQUosR0FDQSxRQUNBLEdB
QUF4bUIsR0FBQTRtQixFQUFBaGxCLFdBQ0EsSUFBQTVCLElBQUF3bUIsRUFFQSxLQUVBdmtCLEdB
QUFpaEIsWUFBQWxqQixJQUtBLFFBQUE2bUIsR0FBQUgsRUFBQUYsRUFBQU0sR0FDQSxHQUFBN2tC
LEdBQUF5a0IsRUFBQXprQixXQUNBOGtCLEVBQUFMLEVBQUE5a0IsV0FDQW1sQixLQUFBUCxFQUdB
TSxHQUNBUCxFQUFBdGtCLEVBQUFlLFNBQUFna0IsZUFBQUYsR0FBQUMsR0FHQUQsR0FHQW5iLEVB
QUFvYixFQUFBRCxHQUNBTCxFQUFBeGtCLEVBQUE4a0IsRUFBQVAsSUFFQUMsRUFBQXhrQixFQUFB
eWtCLEVBQUFGLEdBL0ZBLEdBQUFqYSxHQUFBdFIsRUFBQSxJQUNBZ3NCLEVBQUFoc0IsRUFBQSxL
QUlBd1IsR0FIQXhSLEVBQUEsR0FDQUEsRUFBQSxHQUVBQSxFQUFBLEtBQ0F3USxFQUFBeFEsRUFB
QSxJQUNBMFEsRUFBQTFRLEVBQUEsSUFtQkFzckIsRUFBQTlaLEVBQUEsU0FBQXhLLEVBQUFYLEVB
QUEwTCxHQUlBL0ssRUFBQWtMLGFBQUE3TCxFQUFBMEwsS0E4RUFrYSxFQUFBRCxFQUFBQyxpQ0Ew
QkFDLEdBQ0FELG1DQUVBTCx1QkFTQU8sZUFBQSxTQUFBbmxCLEVBQUFvbEIsR0FLQSxPQUFBQyxH
QUFBLEVBQW1CQSxFQUFBRCxFQUFBeHBCLE9BQW9CeXBCLElBQUEsQ0FDdkMsR0FBQUMsR0FBQUYs
RUFBQUMsRUFDQSxRQUFBQyxFQUFBcmhCLE1BQ0Esb0JBQ0FrZ0IsRUFBQW5rQixFQUFBc2xCLEVB
QUFDLFFBQUFyQixFQUFBbGtCLEVBQUFzbEIsRUFBQUUsV0FXQSxNQUNBLHFCQUNBcEIsRUFBQXBr
QixFQUFBc2xCLEVBQUFHLFNBQUF2QixFQUFBbGtCLEVBQUFzbEIsRUFBQUUsV0FRQSxNQUNBLGtC
QUNBaGMsRUFBQXhKLEVBQUFzbEIsRUFBQUMsUUFRQSxNQUNBLG9CQUNBN2IsRUFBQTFKLEVBQUFz
bEIsRUFBQUMsUUFRQSxNQUNBLG1CQUNBdEUsRUFBQWpoQixFQUFBc2xCLEVBQUFHLGFBY0Fyc0Is
R0FBQUQsUUFBQStyQixHakNzeUhNLFNBQVM5ckIsRUFBUUQsR2tDNS9IdkIsWUFFQSxJQUFBb1Is
SUFDQWhCLEtBQUEsK0JBQ0FtYyxPQUFBLHFDQUNBL0UsSUFBQSw2QkFHQXZuQixHQUFBRCxRQUFB
b1IsR2xDNGdJTSxTQUFTblIsRUFBUUQsRUFBU0gsR21DbmhJaEMsWUFxQkEsU0FBQTJzQixLQUNB
LEdBQUFDLEVBSUEsT0FBQUMsS0FBQUMsR0FBQSxDQUNBLEdBQUFDLEdBQUFELEVBQUFELEdBQ0FH
LEVBQUFKLEVBQUFLLFFBQUFKLEVBRUEsSUFEQUcsS0FBQSxPQUFBcG1CLEVBQUEsS0FBQWltQixJ
QUNBMVQsRUFBQStCLFFBQUE4UixHQUFBLENBR0FELEVBQUFoUyxjQUFBLE9BQUFuVSxFQUFBLEtB
QUFpbUIsR0FDQTFULEVBQUErQixRQUFBOFIsR0FBQUQsQ0FDQSxJQUFBRyxHQUFBSCxFQUFBSSxV
QUNBLFFBQUFDLEtBQUFGLEdBQ0FHLEVBQUFILEVBQUFFLEdBQUFMLEVBQUFLLEdBQUEsT0FBQXht
QixFQUFBLEtBQUF3bUIsRUFBQVAsS0FhQSxRQUFBUSxHQUFBdmYsRUFBQWlmLEVBQUFLLEdBQ0Fq
VSxFQUFBbVUseUJBQUF4c0IsZUFBQXNzQixHQUFBeG1CLEVBQUEsS0FBQXdtQixHQUFBLE9BQ0Fq
VSxFQUFBbVUseUJBQUFGLEdBQUF0ZixDQUVBLElBQUErTixHQUFBL04sRUFBQStOLHVCQUNBLElB
QUFBLEVBQUEsQ0FDQSxPQUFBMFIsS0FBQTFSLEdBQ0EsR0FBQUEsRUFBQS9hLGVBQUF5c0IsR0FB
QSxDQUNBLEdBQUFDLEdBQUEzUixFQUFBMFIsRUFDQUUsR0FBQUQsRUFBQVQsRUFBQUssR0FHQSxT
QUNHLFFBQUF0ZixFQUFBdU0sbUJBQ0hvVCxFQUFBM2YsRUFBQXVNLGlCQUFBMFMsRUFBQUssSUFD
QSxHQWFBLFFBQUFLLEdBQUFwVCxFQUFBMFMsRUFBQUssR0FDQWpVLEVBQUFzQix3QkFBQUosR0FB
QXpULEVBQUEsTUFBQXlULEdBQUEsT0FDQWxCLEVBQUFzQix3QkFBQUosR0FBQTBTLEVBQ0E1VCxF
QUFBd0ssNkJBQUF0SixHQUFBMFMsRUFBQUksV0FBQUMsR0FBQTFKLGFBL0VBLEdBQUE5YyxHQUFB
NUcsRUFBQSxHQU9BNHNCLEdBTEE1c0IsRUFBQSxHQUtBLE1BS0E4c0IsS0FvRkEzVCxHQUlBK0Is
V0FLQW9TLDRCQUtBN1MsMkJBS0FrSixnQ0FRQStKLDBCQUF1RSxLQVl2RXhULHVCQUFBLFNBQUF5
VCxHQUNBZixFQUFBaG1CLEVBQUEsY0FFQWdtQixFQUFBeFUsTUFBQXZYLFVBQUFJLE1BQUFWLEtB
QUFvdEIsR0FDQWhCLEtBYUF4Uyx5QkFBQSxTQUFBeVQsR0FDQSxHQUFBQyxJQUFBLENBQ0EsUUFB
QWhCLEtBQUFlLEdBQ0EsR0FBQUEsRUFBQTlzQixlQUFBK3JCLEdBQUEsQ0FHQSxHQUFBRSxHQUFB
YSxFQUFBZixFQUNBQyxHQUFBaHNCLGVBQUErckIsSUFBQUMsRUFBQUQsS0FBQUUsSUFDQUQsRUFB
QUQsR0FBQWptQixFQUFBLE1BQUFpbUIsR0FBQSxPQUNBQyxFQUFBRCxHQUFBRSxFQUNBYyxHQUFB
LEdBR0FBLEdBQ0FsQixLQVdBbUIsd0JBQUEsU0FBQTNlLEdBQ0EsR0FBQXJCLEdBQUFxQixFQUFB
ckIsY0FDQSxJQUFBQSxFQUFBdU0saUJBQ0EsTUFBQWxCLEdBQUFzQix3QkFBQTNNLEVBQUF1TSxt
QkFBQSxJQUVBLElBQUFyWSxTQUFBOEwsRUFBQStOLHdCQUFBLENBR0EsR0FBQUEsR0FBQS9OLEVB
QUErTix1QkFFQSxRQUFBRSxLQUFBRixHQUNBLEdBQUFBLEVBQUEvYSxlQUFBaWIsR0FBQSxDQUdB
LEdBQUFnUixHQUFBNVQsRUFBQXNCLHdCQUFBb0IsRUFBQUUsR0FDQSxJQUFBZ1IsRUFDQSxNQUFB
QSxJQUlBLGFBT0FnQixtQkFBQSxXQUNBbkIsRUFBQSxJQUNBLFFBQUFDLEtBQUFDLEdBQ0FBLEVB
QUFoc0IsZUFBQStyQixVQUNBQyxHQUFBRCxFQUdBMVQsR0FBQStCLFFBQUF0WSxPQUFBLENBRUEs
SUFBQTBxQixHQUFBblUsRUFBQW1VLHdCQUNBLFFBQUFGLEtBQUFFLEdBQ0FBLEVBQUF4c0IsZUFB
QXNzQixVQUNBRSxHQUFBRixFQUlBLElBQUEzUyxHQUFBdEIsRUFBQXNCLHVCQUNBLFFBQUFKLEtB
QUFJLEdBQ0FBLEVBQUEzWixlQUFBdVosVUFDQUksR0FBQUosSUFlQWphLEdBQUFELFFBQUFnWixH
bkNvaUlNLFNBQVMvWSxFQUFRRCxFQUFTSCxHb0NyeEloQyxZQWtDQSxTQUFBZ3VCLEdBQUFoVCxH
QUNBLHFCQUFBQSxHQUFBLGdCQUFBQSxHQUFBLG1CQUFBQSxFQUdBLFFBQUFpVCxHQUFBalQsR0FD
QSx1QkFBQUEsR0FBQSxpQkFBQUEsRUFFQSxRQUFBa1QsR0FBQWxULEdBQ0EsdUJBQUFBLEdBQUEs
a0JBQUFBLEVBMEJBLFFBQUFtVCxHQUFBaGYsRUFBQXdLLEVBQUFXLEVBQUE1VSxHQUNBLEdBQUF1
RixHQUFBa0UsRUFBQWxFLE1BQUEsZUFDQWtFLEdBQUFMLGNBQUFzSyxFQUFBaFMsb0JBQUExQixH
QUNBaVUsRUFDQU4sRUFBQStVLCtCQUFBbmpCLEVBQUFxUCxFQUFBbkwsR0FFQWtLLEVBQUFnVixz
QkFBQXBqQixFQUFBcVAsRUFBQW5MLEdBRUFBLEVBQUFMLGNBQUEsS0FNQSxRQUFBOEssR0FBQXpL
LEVBQUF3SyxHQUNBLEdBQUEyVSxHQUFBbmYsRUFBQTZNLG1CQUNBdVMsRUFBQXBmLEVBQUE4TSxr
QkFJQSxJQUFBN0QsTUFBQXdSLFFBQUEwRSxHQUNBLE9BQUEzdEIsR0FBQSxFQUFtQkEsRUFBQTJ0
QixFQUFBMXJCLFNBQ25CdU0sRUFBQVQsdUJBRGlEL04sSUFLakR3dEIsRUFBQWhmLEVBQUF3SyxF
QUFBMlUsRUFBQTN0QixHQUFBNHRCLEVBQUE1dEIsUUFFRzJ0QixJQUNISCxFQUFBaGYsRUFBQXdL
LEVBQUEyVSxFQUFBQyxFQUVBcGYsR0FBQTZNLG1CQUFBLEtBQ0E3TSxFQUFBOE0sbUJBQUEsS0FV
QSxRQUFBdVMsR0FBQXJmLEdBQ0EsR0FBQW1mLEdBQUFuZixFQUFBNk0sbUJBQ0F1UyxFQUFBcGYs
RUFBQThNLGtCQUlBLElBQUE3RCxNQUFBd1IsUUFBQTBFLElBQ0EsT0FBQTN0QixHQUFBLEVBQW1C
QSxFQUFBMnRCLEVBQUExckIsU0FDbkJ1TSxFQUFBVCx1QkFEaUQvTixJQUtqRCxHQUFBMnRCLEVB
QUEzdEIsR0FBQXdPLEVBQUFvZixFQUFBNXRCLElBQ0EsTUFBQTR0QixHQUFBNXRCLE9BR0csSUFB
QTJ0QixHQUNIQSxFQUFBbmYsRUFBQW9mLEdBQ0EsTUFBQUEsRUFHQSxhQU1BLFFBQUFFLEdBQUF0
ZixHQUNBLEdBQUFtWCxHQUFBa0ksRUFBQXJmLEVBR0EsT0FGQUEsR0FBQThNLG1CQUFBLEtBQ0E5
TSxFQUFBNk0sbUJBQUEsS0FDQXNLLEVBWUEsUUFBQW9JLEdBQUF2ZixHQUlBLEdBQUF3ZixHQUFB
eGYsRUFBQTZNLG1CQUNBNFMsRUFBQXpmLEVBQUE4TSxrQkFDQTdELE9BQUF3UixRQUFBK0UsR0FB
QS9uQixFQUFBLGNBQ0F1SSxFQUFBTCxjQUFBNmYsRUFBQXZWLEVBQUFoUyxvQkFBQXduQixHQUFB
LElBQ0EsSUFBQUMsR0FBQUYsSUFBQXhmLEdBQUEsSUFJQSxPQUhBQSxHQUFBTCxjQUFBLEtBQ0FL
LEVBQUE2TSxtQkFBQSxLQUNBN00sRUFBQThNLG1CQUFBLEtBQ0E0UyxFQU9BLFFBQUFDLEdBQUEz
ZixHQUNBLFFBQUFBLEVBQUE2TSxtQkEzS0EsR0FlQStTLEdBQ0FDLEVBaEJBcG9CLEVBQUE1RyxF
QUFBLEdBRUFxWixFQUFBclosRUFBQSxJQWVBNE4sR0FiQTVOLEVBQUEsR0FDQUEsRUFBQSxJQWFB
aXZCLG9CQUFBLFNBQUFDLEdBQ0FILEVBQUFHLEdBS0FDLG9CQUFBLFNBQUFELEdBQ0FGLEVBQUFF
LEtBd0pBOVYsR0FDQTRVLFdBQ0FDLFlBQ0FDLGFBRUFRLHdCQUNBOVUsMkJBQ0E2VSxxQ0FDQUss
Z0JBRUEzbkIsb0JBQUEsU0FBQXBDLEdBQ0EsTUFBQWdxQixHQUFBNW5CLG9CQUFBcEMsSUFFQXFD
LG9CQUFBLFNBQUFyQyxHQUNBLE1BQUFncUIsR0FBQTNuQixvQkFBQXJDLElBRUFxcUIsV0FBQSxT
QUFBanVCLEVBQUFDLEdBQ0EsTUFBQTR0QixHQUFBSSxXQUFBanVCLEVBQUFDLElBRUFpdUIsd0JB
QUEsU0FBQWx1QixFQUFBQyxHQUNBLE1BQUE0dEIsR0FBQUssd0JBQUFsdUIsRUFBQUMsSUFFQWti
LGtCQUFBLFNBQUE1VyxHQUNBLE1BQUFzcEIsR0FBQTFTLGtCQUFBNVcsSUFFQXlXLGlCQUFBLFNB
QUE1WCxFQUFBckQsRUFBQXlILEdBQ0EsTUFBQXFtQixHQUFBN1MsaUJBQUE1WCxFQUFBckQsRUFB
QXlILElBRUFvVSxtQkFBQSxTQUFBdFksRUFBQUUsRUFBQXpELEVBQUFvdUIsRUFBQUMsR0FDQSxN
QUFBUCxHQUFBalMsbUJBQUF0WSxFQUFBRSxFQUFBekQsRUFBQW91QixFQUFBQyxJQUdBM2hCLFlB
R0F4TixHQUFBRCxRQUFBaVosR3BDcXlJTSxTQUFTaFosRUFBUUQsR3FDMS9JdkIsWUFTQSxTQUFB
K21CLEdBQUFyaUIsR0FDQSxHQUFBMnFCLEdBQUEsUUFDQUMsR0FDQUMsSUFBQSxLQUNBQyxJQUFB
LE1BRUFDLEdBQUEsR0FBQS9xQixHQUFBMUMsUUFBQXF0QixFQUFBLFNBQUF6SSxHQUNBLE1BQUEw
SSxHQUFBMUksSUFHQSxXQUFBNkksRUFTQSxRQUFBQyxHQUFBaHJCLEdBQ0EsR0FBQWlyQixHQUFB
LFdBQ0FDLEdBQ0FDLEtBQUEsSUFDQUMsS0FBQSxLQUVBQyxFQUFBLE1BQUFyckIsRUFBQSxVQUFB
QSxFQUFBLEdBQUFBLEVBQUF5aUIsVUFBQSxHQUFBemlCLEVBQUF5aUIsVUFBQSxFQUVBLFdBQUE0
SSxHQUFBL3RCLFFBQUEydEIsRUFBQSxTQUFBL0ksR0FDQSxNQUFBZ0osR0FBQWhKLEtBSUEsR0FB
QW9KLElBQ0FqSixTQUNBMkksV0FHQXp2QixHQUFBRCxRQUFBZ3dCLEdyQzJnSk0sU0FBUy92QixF
QUFRRCxFQUFTSCxHc0MxakpoQyxZQXVCQSxTQUFBb3dCLEdBQUFDLEdBQ0EsTUFBQUEsRUFBQUMs
YUFBQSxNQUFBRCxFQUFBRSxVQUFBM3BCLEVBQUEsYUFFQSxRQUFBNHBCLEdBQUFILEdBQ0FELEVB
QUFDLEdBQ0EsTUFBQUEsRUFBQWplLE9BQUEsTUFBQWllLEVBQUFJLFNBQUE3cEIsRUFBQSxhQUdB
LFFBQUE4cEIsR0FBQUwsR0FDQUQsRUFBQUMsR0FDQSxNQUFBQSxFQUFBTSxTQUFBLE1BQUFOLEVB
QUFJLFNBQUE3cEIsRUFBQSxhQW9CQSxRQUFBZ3FCLEdBQUEvWSxHQUNBLEdBQUFBLEVBQUEsQ0FD
QSxHQUFBelYsR0FBQXlWLEVBQUExTSxTQUNBLElBQUEvSSxFQUNBLHNDQUFBQSxFQUFBLEtBR0Es
U0ExREEsR0FBQXdFLEdBQUE1RyxFQUFBLEdBRUE2d0IsRUFBQTd3QixFQUFBLEtBQ0E4d0IsRUFB
QTl3QixFQUFBLElBRUF5VyxFQUFBelcsRUFBQSxJQUNBaVgsRUFBQTZaLEVBQUFyYSxFQUFBTyxn
QkFLQStaLEdBSEEvd0IsRUFBQSxHQUNBQSxFQUFBLElBR0FxbEIsUUFBQSxFQUNBMkwsVUFBQSxF
QUNBQyxPQUFBLEVBQ0FDLFFBQUEsRUFDQUMsT0FBQSxFQUNBdmtCLE9BQUEsRUFDQXdrQixRQUFB
LElBZ0JBQyxHQUNBamYsTUFBQSxTQUFBMEYsRUFBQXpKLEVBQUFpakIsR0FDQSxPQUFBeFosRUFB
QXpKLElBQUEwaUIsRUFBQWpaLEVBQUE3TSxPQUFBNk0sRUFBQTJZLFVBQUEzWSxFQUFBeVosVUFB
QXpaLEVBQUFvQixTQUNBLEtBRUEsR0FBQWpYLE9BQUE7RUFFQTB1QixRQUFBLFNBQUE3WSxFQUFB
ekosRUFBQWlqQixHQUNBLE9BQUF4WixFQUFBekosSUFBQXlKLEVBQUEyWSxVQUFBM1ksRUFBQXla
LFVBQUF6WixFQUFBb0IsU0FDQSxLQUVBLEdBQUFqWCxPQUFBLDBOQUVBd3VCLFNBQUF4WixFQUFB
dWEsTUFHQUMsS0FlQUMsR0FDQUMsZUFBQSxTQUFBQyxFQUFBOVosRUFBQUQsR0FDQSxPQUFBeEos
S0FBQWdqQixHQUFBLENBQ0EsR0FBQUEsRUFBQXZ3QixlQUFBdU4sR0FDQSxHQUFBdE0sR0FBQXN2
QixFQUFBaGpCLEdBQUF5SixFQUFBekosRUFBQXVqQixFQUFBLFlBQUFmLEVBRUEsSUFBQTl1QixZ
QUFBRSxVQUFBRixFQUFBYyxVQUFBNHVCLElBQUEsQ0FHQUEsRUFBQTF2QixFQUFBYyxVQUFBLENB
RUErdEIsR0FBQS9ZLE1BVUFnYSxTQUFBLFNBQUF4QixHQUNBLE1BQUFBLEdBQUFFLFdBQ0FDLEVB
QUFILEdBQ0FBLEVBQUFFLFVBQUFuZSxPQUVBaWUsRUFBQWplLE9BUUEwZixXQUFBLFNBQUF6QixH
QUNBLE1BQUFBLEdBQUFDLGFBQ0FJLEVBQUFMLEdBQ0FBLEVBQUFDLFlBQUFsZSxPQUVBaWUsRUFB
QU0sU0FPQW9CLGdCQUFBLFNBQUExQixFQUFBbGhCLEdBQ0EsTUFBQWtoQixHQUFBRSxXQUNBQyxF
QUFBSCxHQUNBQSxFQUFBRSxVQUFBeUIsY0FBQTdpQixFQUFBNUssT0FBQTZOLFFBQ0tpZSxFQUFB
QyxhQUNMSSxFQUFBTCxHQUNBQSxFQUFBQyxZQUFBMEIsY0FBQTdpQixFQUFBNUssT0FBQW9zQixV
QUNLTixFQUFBSSxTQUNMSixFQUFBSSxTQUFBbHdCLEtBQUF5QixPQUFBbU4sR0FESyxRQU1ML08s
R0FBQUQsUUFBQXV4QixHdEMwa0pNLFNBQVN0eEIsRUFBUUQsRUFBU0gsR3VDdnNKaEMsWUFFQSxJ
QUFBNEcsR0FBQTVHLEVBQUEsR0FJQWl5QixHQUZBanlCLEVBQUEsSUFFQSxHQUVBa3lCLEdBS0FD
LHNCQUFBLEtBTUFDLHVCQUFBLEtBRUF4a0IsV0FDQXlrQixrQkFBQSxTQUFBQyxHQUNBTCxFQUFB
cnJCLEVBQUEsY0FDQXNyQixFQUFBQyxzQkFBQUcsRUFBQUgsc0JBQ0FELEVBQUFFLHVCQUFBRSxF
QUFBRix1QkFDQUgsR0FBQSxJQUtBN3hCLEdBQUFELFFBQUEreEIsR3ZDd3RKTSxTQUFTOXhCLEVB
QVFELEVBQVNILEd3Q3Z2SmhDLFlBWUEsU0FBQXF1QixHQUFBanNCLEVBQUFvdkIsRUFBQXJ3QixH
QUNBLElBQ0Fxd0IsRUFBQXJ3QixHQUNHLE1BQUE0b0IsR0FDSCxPQUFBd0ksSUFDQUEsRUFBQXhJ
LElBZkEsR0FBQXdJLEdBQUEsS0FvQkFsWixHQUNBZ1Ysd0JBTUFELCtCQUFBQyxFQU1BN1MsbUJB
QUEsV0FDQSxHQUFBK1csRUFBQSxDQUNBLEdBQUF4d0IsR0FBQXd3QixDQUVBLE1BREFBLEdBQUEs
S0FDQXh3QixJQXdCQTNCLEdBQUFELFFBQUFrWixHeEN3d0pNLFNBQVNqWixFQUFRRCxFQUFTSCxH
eUN4MEpoQyxZQVlBLFNBQUE0TCxHQUFBK0ksR0FDQXZMLEVBQUF3QyxjQUFBK0ksR0FHQSxRQUFB
NmQsR0FBQTdwQixHQUNBLEdBQUFzQyxTQUFBdEMsRUFDQSxlQUFBc0MsRUFDQSxNQUFBQSxFQUVB
LElBQUF3bkIsR0FBQTlwQixFQUFBeUYsYUFBQXpGLEVBQUF5RixZQUFBaE0sTUFBQTZJLEVBQ0Ev
RyxFQUFBdEQsT0FBQXNELEtBQUF5RSxFQUNBLE9BQUF6RSxHQUFBdEIsT0FBQSxHQUFBc0IsRUFB
QXRCLE9BQUEsR0FDQTZ2QixFQUFBLFdBQUF2dUIsRUFBQUwsS0FBQSxVQUVBNHVCLEVBR0EsUUFB
QUMsR0FBQUMsRUFBQUMsR0FDQSxHQUFBamUsR0FBQXVJLEVBQUFHLElBQUFzVixFQUNBLEtBQUFo
ZSxFQUFBLENBUUEsWUFPQSxNQUFBQSxHQTVDQSxHQUFBL04sR0FBQTVHLEVBQUEsR0FHQWtkLEdB
REFsZCxFQUFBLElBQ0FBLEVBQUEsS0FFQW9KLEdBREFwSixFQUFBLEdBQ0FBLEVBQUEsSUE4Q0E2
eUIsR0E1Q0E3eUIsRUFBQSxHQUNBQSxFQUFBLElBbURBOHlCLFVBQUEsU0FBQUgsR0FFQSxHQU1B
aGUsR0FBQXVJLEVBQUFHLElBQUFzVixFQUNBLFNBQUFoZSxLQUlBQSxFQUFBblAsb0JBZUF1dEIs
Z0JBQUEsU0FBQUosRUFBQTVvQixFQUFBNm9CLEdBQ0FDLEVBQUFHLGlCQUFBanBCLEVBQUE2b0Is
RUFDQSxJQUFBamUsR0FBQStkLEVBQUFDLEVBT0EsT0FBQWhlLElBSUFBLEVBQUFoSyxrQkFDQWdL
LEVBQUFoSyxrQkFBQTVELEtBQUFnRCxHQUVBNEssRUFBQWhLLG1CQUFBWixPQU1BNkIsR0FBQStJ
LElBWkEsTUFlQXNlLHdCQUFBLFNBQUF0ZSxFQUFBNUssR0FDQTRLLEVBQUFoSyxrQkFDQWdLLEVB
QUFoSyxrQkFBQTVELEtBQUFnRCxHQUVBNEssRUFBQWhLLG1CQUFBWixHQUVBNkIsRUFBQStJLElB
Z0JBdWUsbUJBQUEsU0FBQVAsR0FDQSxHQUFBaGUsR0FBQStkLEVBQUFDLEVBQUEsY0FFQWhlLEtB
SUFBLEVBQUF3ZSxxQkFBQSxFQUVBdm5CLEVBQUErSSxLQWNBeWUsb0JBQUEsU0FBQVQsRUFBQVUs
RUFBQXRwQixHQUNBLEdBQUE0SyxHQUFBK2QsRUFBQUMsRUFBQSxlQUVBaGUsS0FJQUEsRUFBQTJl
LG9CQUFBRCxHQUNBMWUsRUFBQTRlLHNCQUFBLEVBR0F2eEIsU0FBQStILEdBQUEsT0FBQUEsSUFD
QThvQixFQUFBRyxpQkFBQWpwQixFQUFBLGdCQUNBNEssRUFBQWhLLGtCQUNBZ0ssRUFBQWhLLGtC
QUFBNUQsS0FBQWdELEdBRUE0SyxFQUFBaEssbUJBQUFaLElBSUE2QixFQUFBK0ksS0FhQTZlLGdC
QUFBLFNBQUFiLEVBQUFjLEdBTUEsR0FBQTllLEdBQUErZCxFQUFBQyxFQUFBLFdBRUEsSUFBQWhl
LEVBQUEsQ0FJQSxHQUFBckgsR0FBQXFILEVBQUEyZSxxQkFBQTNlLEVBQUEyZSxzQkFDQWhtQixH
QUFBdkcsS0FBQTBzQixHQUVBN25CLEVBQUErSSxLQUdBK2UsdUJBQUEsU0FBQS9lLEVBQUFZLEVB
QUFvZSxHQUNBaGYsRUFBQWlmLGdCQUFBcmUsRUFFQVosRUFBQWMsU0FBQWtlLEVBQ0EvbkIsRUFB
QStJLElBR0FxZSxpQkFBQSxTQUFBanBCLEVBQUE2b0IsR0FDQTdvQixHQUFBLGtCQUFBQSxHQUFB
bkQsRUFBQSxNQUFBZ3NCLEVBQUFKLEVBQUF6b0IsSUFBQSxTQUlBM0osR0FBQUQsUUFBQTB5QixH
ekN3MUpNLFNBQVN6eUIsRUFBUUQsRzBDcGpLdkIsWUFNQSxJQUFBcVIsR0FBQSxTQUFBZ2dCLEdB
Q0EseUJBQUFxQyxjQUFBQyx3QkFDQSxTQUFBQyxFQUFBQyxFQUFBQyxFQUFBQyxHQUNBTCxNQUFB
Qyx3QkFBQSxXQUNBLE1BQUF0QyxHQUFBdUMsRUFBQUMsRUFBQUMsRUFBQUMsTUFJQTFDLEVBSUFw
eEIsR0FBQUQsUUFBQXFSLEcxQ3NrS00sU0FBU3BSLEVBQVFELEcyQzFsS3ZCLFlBYUEsU0FBQWcw
QixHQUFBbm1CLEdBQ0EsR0FBQW9tQixHQUNBQyxFQUFBcm1CLEVBQUFxbUIsT0FnQkEsT0FkQSxZ
QUFBcm1CLElBQ0FvbUIsRUFBQXBtQixFQUFBb21CLFNBR0EsSUFBQUEsR0FBQSxLQUFBQyxJQUNB
RCxFQUFBLEtBSUFBLEVBQUFDLEVBS0FELEdBQUEsU0FBQUEsRUFDQUEsRUFHQSxFQUdBaDBCLEVB
QUFELFFBQUFnMEIsRzNDMG1LTSxTQUFTL3pCLEVBQVFELEc0Q2hwS3ZCLFlBaUJBLFNBQUFtMEIs
R0FBQUMsR0FDQSxHQUFBQyxHQUFBbHpCLEtBQ0EwTSxFQUFBd21CLEVBQUF4bUIsV0FDQSxJQUFB
QSxFQUFBb1gsaUJBQ0EsTUFBQXBYLEdBQUFvWCxpQkFBQW1QLEVBRUEsSUFBQUUsR0FBQUMsRUFB
QUgsRUFDQSxTQUFBRSxLQUFBem1CLEVBQUF5bUIsR0FHQSxRQUFBL1AsR0FBQTFXLEdBQ0EsTUFB
QXNtQixHQXJCQSxHQUFBSSxJQUNBQyxJQUFBLFNBQ0FDLFFBQUEsVUFDQUMsS0FBQSxVQUNBQyxN
QUFBLFdBb0JBMTBCLEdBQUFELFFBQUF1a0IsRzVDZ3FLTSxTQUFTdGtCLEVBQVFELEc2Qy9yS3ZC
LFlBVUEsU0FBQXVkLEdBQUExUCxHQUNBLEdBQUF6SixHQUFBeUosRUFBQXpKLFFBQUF5SixFQUFB
eVgsWUFBQTNkLE1BU0EsT0FOQXZELEdBQUF3d0IsMEJBQ0F4d0IsSUFBQXd3Qix5QkFLQSxJQUFB
eHdCLEVBQUFVLFNBQUFWLEVBQUF5QyxXQUFBekMsRUFHQW5FLEVBQUFELFFBQUF1ZCxHN0Mrc0tN
LFNBQVN0ZCxFQUFRRCxFQUFTSCxHOEN0dUtoQyxZQTBCQSxTQUFBNGUsR0FBQW9XLEVBQUFDLEdB
Q0EsSUFBQWh0QixFQUFBSixXQUFBb3RCLEtBQUEsb0JBQUFsdEIsV0FDQSxRQUdBLElBQUFxbEIs
R0FBQSxLQUFBNEgsRUFDQUUsRUFBQTlILElBQUFybEIsU0FFQSxLQUFBbXRCLEVBQUEsQ0FDQSxH
QUFBbmQsR0FBQWhRLFNBQUFDLGNBQUEsTUFDQStQLEdBQUFvZCxhQUFBL0gsRUFBQSxXQUNBOEgs
RUFBQSxrQkFBQW5kLEdBQUFxVixHQVFBLE9BTEE4SCxHQUFBRSxHQUFBLFVBQUFKLElBRUFFLEVB
QUFudEIsU0FBQXN0QixlQUFBQyxXQUFBLHVCQUdBSixFQTNDQSxHQUVBRSxHQUZBbnRCLEVBQUFq
SSxFQUFBLEVBR0FpSSxHQUFBSixZQUNBdXRCLEVBQUFydEIsU0FBQXN0QixnQkFBQXR0QixTQUFB
c3RCLGVBQUFDLFlBR0F2dEIsU0FBQXN0QixlQUFBQyxXQUFBLGFBdUNBbDFCLEVBQUFELFFBQUF5
ZSxHOUNzdktNLFNBQVN4ZSxFQUFRRCxHK0N0eUt2QixZQWNBLFNBQUFvMUIsR0FBQS9mLEVBQUFE
LEdBQ0EsR0FBQWlnQixHQUFBLE9BQUFoZ0IsUUFBQSxFQUNBaWdCLEVBQUEsT0FBQWxnQixRQUFB
LENBQ0EsSUFBQWlnQixHQUFBQyxFQUNBLE1BQUFELEtBQUFDLENBR0EsSUFBQUMsU0FBQWxnQixH
QUNBbWdCLFFBQUFwZ0IsRUFDQSxrQkFBQW1nQixHQUFBLFdBQUFBLEVBQ0EsV0FBQUMsR0FBQSxX
QUFBQSxFQUVBLFdBQUFBLEdBQUFuZ0IsRUFBQXZLLE9BQUFzSyxFQUFBdEssTUFBQXVLLEVBQUEz
USxNQUFBMFEsRUFBQTFRLElBSUF6RSxFQUFBRCxRQUFBbzFCLEcvQ3N6S00sU0FBU24xQixFQUFR
RCxFQUFTSCxHZ0RwMUtoQyxZQUVBLElBRUFzQyxJQUZBdEMsRUFBQSxHQUVBQSxFQUFBLElBR0E0
MUIsR0FGQTUxQixFQUFBLEdBRUFzQyxFQWdXQWxDLEdBQUFELFFBQUF5MUIsR2hEbzJLTSxTQUFT
eDFCLEVBQVFELEdpRHJ0THZCLFlBVUEsU0FBQW9DLEdBQUFNLEdBRUEsbUJBQUF1SSxVQUFBLGtC
QUFBQSxTQUFBckosT0FDQXFKLFFBQUFySixNQUFBYyxFQUdBLEtBSUEsU0FBQVosT0FBQVksR0FF
RyxNQUFBakIsS0FwQkh6QixFQUFBa29CLFlBQUEsRUFDQWxvQixFQUFBbW9CLFFBQUEvbEIsR2pE
Z3ZMTSxTQUFTbkMsRUFBUUQsRUFBU0gsR2tEbnZMaEMsWUFhQSxJQUFBc0MsR0FBQXRDLEVBQUEs
R0FNQTYxQixHQVNBQyxPQUFBLFNBQUF2eEIsRUFBQXd4QixFQUFBaHNCLEdBQ0EsTUFBQXhGLEdB
QUE4RCxrQkFDQTlELEVBQUE4RCxpQkFBQTB0QixFQUFBaHNCLEdBQUEsSUFFQW9ULE9BQUEsV0FD
QTVZLEVBQUF5eEIsb0JBQUFELEVBQUFoc0IsR0FBQSxNQUdLeEYsRUFBQStELGFBQ0wvRCxFQUFB
K0QsWUFBQSxLQUFBeXRCLEVBQUFoc0IsSUFFQW9ULE9BQUEsV0FDQTVZLEVBQUEweEIsWUFBQSxL
QUFBRixFQUFBaHNCLE1BSkssUUFrQkxrckIsUUFBQSxTQUFBMXdCLEVBQUF3eEIsRUFBQWhzQixH
QUNBLE1BQUF4RixHQUFBOEQsa0JBQ0E5RCxFQUFBOEQsaUJBQUEwdEIsRUFBQWhzQixHQUFBLElB
RUFvVCxPQUFBLFdBQ0E1WSxFQUFBeXhCLG9CQUFBRCxFQUFBaHNCLEdBQUEsT0FRQW9ULE9BQUE3
YSxJQUtBNHpCLGdCQUFBLGFBR0E5MUIsR0FBQUQsUUFBQTAxQixHbER5dkxNLFNBQVN6MUIsRUFB
UUQsR21EMXpMdkIsWUFNQSxTQUFBZzJCLEdBQUFweEIsR0FJQSxJQUNBQSxFQUFBcXhCLFFBQ0cs
TUFBQXgwQixLQUdIeEIsRUFBQUQsUUFBQWcyQixHbkQwMExNLFNBQVMvMUIsRUFBUUQsR29EbjJM
dkIsWUF5QkEsU0FBQWsyQixHQUFBeFksR0FFQSxHQURBQSxNQUFBLG1CQUFBOVYsbUJBQUEvRixR
QUNBLG1CQUFBNmIsR0FDQSxXQUVBLEtBQ0EsTUFBQUEsR0FBQXlZLGVBQUF6WSxFQUFBMFksS0FD
RyxNQUFBMzBCLEdBQ0gsTUFBQWljLEdBQUEwWSxNQUlBbjJCLEVBQUFELFFBQUFrMkIsR3BEeTJM
TSxTQUFTajJCLEVBQVFELEVBQVNILEdxRDk0TGhDLEdBQUF3MkIsR0FBQXgyQixFQUFBLEtBR0F5
MkIsRUFBQUQsRUFBQUMsTUFFQXIyQixHQUFBRCxRQUFBczJCLEdyRHE1TE0sU0FBU3IyQixFQUFR
RCxFQUFTSCxHc0RqNUxoQyxZQU1BLElBQUFzWSxHQUFBdFksRUFBQSxJQUNBSSxHQUFBRCxRQUFB
LFNBQUE2VyxHQUVBLEdBQUEwZixJQUFBLENBQ0EsT0FBQXBlLEdBQUF0QixFQUFBMGYsS3REazZM
TSxTQUFTdDJCLEVBQVFELEVBQVNILEd1RHo1TGhDSSxFQUFBRCxRQUFBSCxFQUFBLFF2RDY3TE0s
U0FBU0ksRUFBUUQsR3dEaDlMdkIsWUFFQSxJQUFBMHdCLEdBQUEsOENBRUF6d0IsR0FBQUQsUUFB
QTB3QixHeERnK0xNLFNBQVN6d0IsRUFBUUQsR3lEbitMdkIsWUF5REEsU0FBQXcyQixHQUFBQyxF
QUFBL3hCLEdBQ0EsTUFBQSt4QixHQUFBL3hCLEVBQUFneUIsT0FBQSxHQUFBQyxjQUFBanlCLEVB
QUF5aUIsVUFBQSxHQXBEQSxHQUFBeVAsSUFDQUMseUJBQUEsRUFDQUMsbUJBQUEsRUFDQUMsa0JB
QUEsRUFDQUMsa0JBQUEsRUFDQUMsU0FBQSxFQUNBQyxjQUFBLEVBQ0FDLGlCQUFBLEVBQ0FDLGFB
QUEsRUFDQUMsTUFBQSxFQUNBQyxVQUFBLEVBQ0FDLGNBQUEsRUFDQUMsWUFBQSxFQUNBQyxjQUFB
LEVBQ0FDLFdBQUEsRUFDQUMsU0FBQSxFQUNBQyxZQUFBLEVBQ0FDLGFBQUEsRUFDQUMsY0FBQSxF
QUNBQyxZQUFBLEVBQ0FDLGVBQUEsRUFDQUMsZ0JBQUEsRUFDQUMsaUJBQUEsRUFDQUMsWUFBQSxF
QUNBQyxXQUFBLEVBQ0FDLFlBQUEsRUFDQUMsU0FBQSxFQUNBQyxPQUFBLEVBQ0FDLFNBQUEsRUFD
QUMsU0FBQSxFQUNBQyxRQUFBLEVBQ0FDLFFBQUEsRUFDQUMsTUFBQSxFQUdBQyxhQUFBLEVBQ0FD
LGNBQUEsRUFDQUMsYUFBQSxFQUNBQyxpQkFBQSxFQUNBQyxrQkFBQSxFQUNBQyxrQkFBQSxFQUNB
QyxlQUFBLEVBQ0FDLGFBQUEsR0FpQkFDLEdBQUEsd0JBSUE1NEIsUUFBQXNELEtBQUE2eUIsR0FB
QS95QixRQUFBLFNBQUF5MUIsR0FDQUQsRUFBQXgxQixRQUFBLFNBQUE0eUIsR0FDQUcsRUFBQUos
RUFBQUMsRUFBQTZDLElBQUExQyxFQUFBMEMsTUFhQSxJQUFBQyxJQUNBQyxZQUNBQyxzQkFBQSxF
QUNBQyxpQkFBQSxFQUNBQyxpQkFBQSxFQUNBQyxxQkFBQSxFQUNBQyxxQkFBQSxFQUNBQyxrQkFB
QSxHQUVBQyxvQkFDQUgscUJBQUEsRUFDQUMscUJBQUEsR0FFQUcsUUFDQUMsYUFBQSxFQUNBQyxh
QUFBLEVBQ0FDLGFBQUEsR0FFQUMsY0FDQUMsbUJBQUEsRUFDQUMsbUJBQUEsRUFDQUMsbUJBQUEs
R0FFQUMsWUFDQUMsaUJBQUEsRUFDQUMsaUJBQUEsRUFDQUMsaUJBQUEsR0FFQUMsYUFDQUMsa0JB
QUEsRUFDQUMsa0JBQUEsRUFDQUMsa0JBQUEsR0FFQUMsV0FDQUMsZ0JBQUEsRUFDQUMsZ0JBQUEs
RUFDQUMsZ0JBQUEsR0FFQUMsTUFDQUMsV0FBQSxFQUNBQyxhQUFBLEVBQ0FuRCxZQUFBLEVBQ0Fv
RCxVQUFBLEVBQ0FsRCxZQUFBLEVBQ0FtRCxZQUFBLEdBRUFDLFNBQ0FDLGNBQUEsRUFDQUMsY0FB
QSxFQUNBQyxjQUFBLElBSUFDLEdBQ0FqRixtQkFDQTJDLDhCQUdBdDVCLEdBQUFELFFBQUE2N0Is
R3pEbS9MTSxTQUFTNTdCLEVBQVFELEVBQVNILEcwRGhvTWhDLFlBSUEsU0FBQWk4QixHQUFBQyxF
QUFBQyxHQUFpRCxLQUFBRCxZQUFBQyxJQUEwQyxTQUFBajVCLFdBQUEscUNBRjNGLEdBQUEwRCxH
QUFBNUcsRUFBQSxHQUlBb00sRUFBQXBNLEVBQUEsSUFnQkEySixHQWRBM0osRUFBQSxHQWNBLFdB
Q0EsUUFBQTJKLEdBQUFoQixHQUNBc3pCLEVBQUEzNkIsS0FBQXFJLEdBRUFySSxLQUFBODZCLFdB
QUEsS0FDQTk2QixLQUFBKzZCLFVBQUEsS0FDQS82QixLQUFBZzdCLEtBQUEzekIsRUEyRUEsTUEv
REFnQixHQUFBOUksVUFBQTZLLFFBQUEsU0FBQTNCLEVBQUFpQyxHQUNBMUssS0FBQTg2QixXQUFB
OTZCLEtBQUE4NkIsZUFDQTk2QixLQUFBODZCLFdBQUFyMUIsS0FBQWdELEdBQ0F6SSxLQUFBKzZC
LFVBQUEvNkIsS0FBQSs2QixjQUNBLzZCLEtBQUErNkIsVUFBQXQxQixLQUFBaUYsSUFXQXJDLEVB
QUE5SSxVQUFBZ00sVUFBQSxXQUNBLEdBQUFuQyxHQUFBcEosS0FBQTg2QixXQUNBRyxFQUFBajdC
LEtBQUErNkIsVUFDQTF6QixFQUFBckgsS0FBQWc3QixJQUNBLElBQUE1eEIsR0FBQTZ4QixFQUFB
LENBQ0E3eEIsRUFBQTlILFNBQUEyNUIsRUFBQTM1QixPQUFBZ0UsRUFBQSxhQUNBdEYsS0FBQTg2
QixXQUFBLEtBQ0E5NkIsS0FBQSs2QixVQUFBLElBQ0EsUUFBQTE3QixHQUFBLEVBQXFCQSxFQUFB
K0osRUFBQTlILE9BQXNCakMsSUFDM0MrSixFQUFBL0osR0FBQUosS0FBQWc4QixFQUFBNTdCLEdB
QUFnSSxFQUVBK0IsR0FBQTlILE9BQUEsRUFDQTI1QixFQUFBMzVCLE9BQUEsSUFJQStHLEVBQUE5
SSxVQUFBMjdCLFdBQUEsV0FDQSxNQUFBbDdCLE1BQUE4NkIsV0FBQTk2QixLQUFBODZCLFdBQUF4
NUIsT0FBQSxHQUdBK0csRUFBQTlJLFVBQUE0N0IsU0FBQSxTQUFBbnlCLEdBQ0FoSixLQUFBODZC
LFlBQUE5NkIsS0FBQSs2QixZQUNBLzZCLEtBQUE4NkIsV0FBQXg1QixPQUFBMEgsRUFDQWhKLEtB
QUErNkIsVUFBQXo1QixPQUFBMEgsSUFXQVgsRUFBQTlJLFVBQUErTCxNQUFBLFdBQ0F0TCxLQUFB
ODZCLFdBQUEsS0FDQTk2QixLQUFBKzZCLFVBQUEsTUFRQTF5QixFQUFBOUksVUFBQW1NLFdBQUEs
V0FDQTFMLEtBQUFzTCxTQUdBakQsS0FHQXZKLEdBQUFELFFBQUFpTSxFQUFBaUIsYUFBQTFELEkx
RGlwTU0sU0FBU3ZKLEVBQVFELEVBQVNILEcyRDV2TWhDLFlBYUEsU0FBQTA4QixHQUFBaHBCLEdB
Q0EsUUFBQWlwQixFQUFBNzdCLGVBQUE0UyxLQUdBa3BCLEVBQUE5N0IsZUFBQTRTLEtBR0FtcEIs
RUFBQS9xQixLQUFBNEIsSUFDQWlwQixFQUFBanBCLElBQUEsR0FDQSxJQUVBa3BCLEVBQUFscEIs
SUFBQSxHQUVBLElBR0EsUUFBQW9wQixHQUFBcnBCLEVBQUFyQixHQUNBLGFBQUFBLEdBQUFxQixF
QUFBTSxrQkFBQTNCLEdBQUFxQixFQUFBTyxpQkFBQStvQixNQUFBM3FCLElBQUFxQixFQUFBUSx5
QkFBQTdCLEVBQUEsR0FBQXFCLEVBQUFTLDJCQUFBOUIsS0FBQSxFQTVCQSxHQUFBOUssR0FBQXRI
LEVBQUEsSUFJQWc5QixHQUhBaDlCLEVBQUEsR0FDQUEsRUFBQSxHQUVBQSxFQUFBLE1BR0E2OEIs
R0FGQTc4QixFQUFBLEdBRUEsR0FBQWk5QixRQUFBLEtBQUEzMUIsRUFBQTZNLDBCQUFBLEtBQUE3
TSxFQUFBK00sb0JBQUEsUUFDQXVvQixLQUNBRCxLQXlCQU8sR0FPQUMsa0JBQUEsU0FBQTk4QixH
QUNBLE1BQUFpSCxHQUFBRSxrQkFBQSxJQUFBdzFCLEVBQUEzOEIsSUFHQSs4QixrQkFBQSxTQUFB
cjRCLEVBQUExRSxHQUNBMEUsRUFBQW93QixhQUFBN3RCLEVBQUFFLGtCQUFBbkgsSUFHQWc5Qixv
QkFBQSxXQUNBLE1BQUEvMUIsR0FBQThNLG9CQUFBLE9BR0FrcEIsb0JBQUEsU0FBQXY0QixHQUNB
QSxFQUFBb3dCLGFBQUE3dEIsRUFBQThNLG9CQUFBLEtBVUFtcEIsd0JBQUEsU0FBQW43QixFQUFB
Z1EsR0FDQSxHQUFBcUIsR0FBQW5NLEVBQUFnTSxXQUFBeFMsZUFBQXNCLEdBQUFrRixFQUFBZ00s
V0FBQWxSLEdBQUEsSUFDQSxJQUFBcVIsRUFBQSxDQUNBLEdBQUFxcEIsRUFBQXJwQixFQUFBckIs
R0FDQSxRQUVBLElBQUFzQixHQUFBRCxFQUFBQyxhQUNBLE9BQUFELEdBQUFNLGlCQUFBTixFQUFB
UywyQkFBQTlCLEtBQUEsRUFDQXNCLEVBQUEsTUFFQUEsRUFBQSxJQUFBc3BCLEVBQUE1cUIsR0FD
SyxNQUFBOUssR0FBQThMLGtCQUFBaFIsR0FDTCxNQUFBZ1EsRUFDQSxHQUVBaFEsRUFBQSxJQUFB
NDZCLEVBQUE1cUIsR0FFQSxNQVVBb3JCLCtCQUFBLFNBQUFwN0IsRUFBQWdRLEdBQ0EsTUFBQXNx
QixHQUFBdDZCLElBQUEsTUFBQWdRLEVBR0FoUSxFQUFBLElBQUE0NkIsRUFBQTVxQixHQUZBLElB
WUFxckIsb0JBQUEsU0FBQTE0QixFQUFBM0MsRUFBQWdRLEdBQ0EsR0FBQXFCLEdBQUFuTSxFQUFB
Z00sV0FBQXhTLGVBQUFzQixHQUFBa0YsRUFBQWdNLFdBQUFsUixHQUFBLElBQ0EsSUFBQXFSLEVB
QUEsQ0FDQSxHQUFBSSxHQUFBSixFQUFBSSxjQUNBLElBQUFBLEVBQ0FBLEVBQUE5TyxFQUFBcU4s
T0FDTyxJQUFBMHFCLEVBQUFycEIsRUFBQXJCLEdBRVAsV0FEQTlRLE1BQUFvOEIsdUJBQUEzNEIs
RUFBQTNDLEVBRU8sSUFBQXFSLEVBQUFLLGdCQUdQL08sRUFBQTBPLEVBQUFHLGNBQUF4QixNQUNP
LENBQ1AsR0FBQXNCLEdBQUFELEVBQUFDLGNBQ0FpcUIsRUFBQWxxQixFQUFBRSxrQkFHQWdxQixH
QUNBNTRCLEVBQUE2NEIsZUFBQUQsRUFBQWpxQixFQUFBLEdBQUF0QixHQUNTcUIsRUFBQU0saUJB
QUFOLEVBQUFTLDJCQUFBOUIsS0FBQSxFQUNUck4sRUFBQW93QixhQUFBemhCLEVBQUEsSUFFQTNP
LEVBQUFvd0IsYUFBQXpoQixFQUFBLEdBQUF0QixTQUdLLElBQUE5SyxFQUFBOEwsa0JBQUFoUixH
QUVMLFdBREE4NkIsR0FBQVcscUJBQUE5NEIsRUFBQTNDLEVBQUFnUSxJQWVBeXJCLHFCQUFBLFNB
QUE5NEIsRUFBQTNDLEVBQUFnUSxHQUNBLEdBQUFzcUIsRUFBQXQ2QixHQUFBLENBR0EsTUFBQWdR
LEVBQ0FyTixFQUFBKzRCLGdCQUFBMTdCLEdBRUEyQyxFQUFBb3dCLGFBQUEveUIsRUFBQSxHQUFB
Z1EsS0FvQkEyckIsd0JBQUEsU0FBQWg1QixFQUFBM0MsR0FDQTJDLEVBQUErNEIsZ0JBQUExN0Is
SUFnQkFzN0IsdUJBQUEsU0FBQTM0QixFQUFBM0MsR0FDQSxHQUFBcVIsR0FBQW5NLEVBQUFnTSxX
QUFBeFMsZUFBQXNCLEdBQUFrRixFQUFBZ00sV0FBQWxSLEdBQUEsSUFDQSxJQUFBcVIsRUFBQSxD
QUNBLEdBQUFJLEdBQUFKLEVBQUFJLGNBQ0EsSUFBQUEsRUFDQUEsRUFBQTlPLEVBQUEvQyxZQUNP
LElBQUF5UixFQUFBSyxnQkFBQSxDQUNQLEdBQUF6RixHQUFBb0YsRUFBQUcsWUFDQUgsR0FBQU0s
Z0JBQ0FoUCxFQUFBc0osSUFBQSxFQUVBdEosRUFBQXNKLEdBQUEsT0FHQXRKLEdBQUErNEIsZ0JB
QUFycUIsRUFBQUMsbUJBRUtwTSxHQUFBOEwsa0JBQUFoUixJQUNMMkMsRUFBQSs0QixnQkFBQTE3
QixJQWFBaEMsR0FBQUQsUUFBQSs4QixHM0Q0d01NLFNBQVM5OEIsRUFBUUQsRzREMytNdkIsWUFF
QSxJQUFBb0gsSUFDQXJCLG9CQUFBLEVBR0E5RixHQUFBRCxRQUFBb0gsRzVEMi9NTSxTQUFTbkgs
RUFBUUQsRUFBU0gsRzZEamdOaEMsWUFhQSxTQUFBZytCLEtBQ0EsR0FBQTE4QixLQUFBMFksYUFB
QTFZLEtBQUEyOEIsY0FBQUMsY0FBQSxDQUNBNThCLEtBQUEyOEIsY0FBQUMsZUFBQSxDQUVBLElB
QUFwbUIsR0FBQXhXLEtBQUEwSixnQkFBQThNLE1BQ0ExRixFQUFBc2YsRUFBQUcsU0FBQS9aLEVB
RUEsT0FBQTFGLEdBQ0ErckIsRUFBQTc4QixLQUFBODhCLFFBQUF0bUIsRUFBQXVtQixVQUFBanNC
LElBa0RBLFFBQUErckIsR0FBQXo0QixFQUFBMjRCLEVBQUFDLEdBQ0EsR0FBQUMsR0FBQTU5QixF
QUNBNjlCLEVBQUE1MkIsRUFBQVIsb0JBQUExQixHQUFBODRCLE9BRUEsSUFBQUgsRUFBQSxDQUVB
LElBREFFLEtBQ0E1OUIsRUFBQSxFQUFlQSxFQUFBMjlCLEVBQUExN0IsT0FBc0JqQyxJQUNyQzQ5
QixFQUFBLEdBQUFELEVBQUEzOUIsS0FBQSxDQUVBLEtBQUFBLEVBQUEsRUFBZUEsRUFBQTY5QixF
QUFBNTdCLE9BQW9CakMsSUFBQSxDQUNuQyxHQUFBODlCLEdBQUFGLEVBQUF6OUIsZUFBQTA5QixF
QUFBNzlCLEdBQUF5UixNQUNBb3NCLEdBQUE3OUIsR0FBQTg5QixlQUNBRCxFQUFBNzlCLEdBQUE4
OUIsaUJBR0csQ0FJSCxJQURBRixFQUFBLEdBQUFELEVBQ0EzOUIsRUFBQSxFQUFlQSxFQUFBNjlC
LEVBQUE1N0IsT0FBb0JqQyxJQUNuQyxHQUFBNjlCLEVBQUE3OUIsR0FBQXlSLFFBQUFtc0IsRUFF
QSxZQURBQyxFQUFBNzlCLEdBQUE4OUIsVUFBQSxFQUlBRCxHQUFBNTdCLFNBQ0E0N0IsRUFBQSxH
QUFBQyxVQUFBLElBZ0ZBLFFBQUFDLEdBQUF2dkIsR0FDQSxHQUFBMkksR0FBQXhXLEtBQUEwSixn
QkFBQThNLE1BQ0F0SixFQUFBa2pCLEVBQUFLLGdCQUFBamEsRUFBQTNJLEVBTUEsT0FKQTdOLE1B
QUEwWSxjQUNBMVksS0FBQTI4QixjQUFBQyxlQUFBLEdBRUE5MEIsRUFBQTJDLEtBQUFpeUIsRUFB
QTE4QixNQUNBa04sRUF2TEEsR0FBQXJDLEdBQUFuTSxFQUFBLEdBRUEweEIsRUFBQTF4QixFQUFB
LElBQ0E0SCxFQUFBNUgsRUFBQSxHQUNBb0osRUFBQXBKLEVBQUEsR0FLQTIrQixHQUhBMytCLEVB
QUEsSUFHQSxHQTBHQTQrQixHQUNBQyxhQUFBLFNBQUFuNUIsRUFBQW9TLEdBQ0EsTUFBQTNMLE1B
QXFCMkwsR0FDckIyWSxTQUFBL3FCLEVBQUF1NEIsY0FBQXhOLFNBQ0FyZSxNQUFBcFEsVUFJQTg4
QixhQUFBLFNBQUFwNUIsRUFBQW9TLEdBS0EsR0FBQTFGLEdBQUFzZixFQUFBRyxTQUFBL1osRUFD
QXBTLEdBQUF1NEIsZUFDQUMsZUFBQSxFQUNBYSxhQUFBLE1BQUEzc0IsSUFBQTBGLEVBQUFrbkIs
YUFDQUMsVUFBQSxLQUNBeE8sU0FBQWlPLEVBQUFubUIsS0FBQTdTLEdBQ0F3NUIsWUFBQWQsUUFB
QXRtQixFQUFBdW1CLFdBR0FyOEIsU0FBQThWLEVBQUExRixPQUFBcFEsU0FBQThWLEVBQUFrbkIs
Y0FBQUwsSUFFQUEsR0FBQSxJQUlBUSxzQkFBQSxTQUFBejVCLEdBR0EsTUFBQUEsR0FBQXU0Qixj
QUFBYyxjQUdBSyxrQkFBQSxTQUFBMTVCLEdBQ0EsR0FBQW9TLEdBQUFwUyxFQUFBc0YsZ0JBQUE4
TSxLQUlBcFMsR0FBQXU0QixjQUFBYyxhQUFBLzhCLE1BRUEsSUFBQWs5QixHQUFBeDVCLEVBQUF1
NEIsY0FBQWlCLFdBQ0F4NUIsR0FBQXU0QixjQUFBaUIsWUFBQWQsUUFBQXRtQixFQUFBdW1CLFNB
RUEsSUFBQWpzQixHQUFBc2YsRUFBQUcsU0FBQS9aLEVBQ0EsT0FBQTFGLEdBQ0ExTSxFQUFBdTRC
LGNBQUFDLGVBQUEsRUFDQUMsRUFBQXo0QixFQUFBMDRCLFFBQUF0bUIsRUFBQXVtQixVQUFBanNC
LElBQ0s4c0IsSUFBQWQsUUFBQXRtQixFQUFBdW1CLFlBRUwsTUFBQXZtQixFQUFBa25CLGFBQ0Fi
LEVBQUF6NEIsRUFBQTA0QixRQUFBdG1CLEVBQUF1bUIsVUFBQXZtQixFQUFBa25CLGNBR0FiLEVB
QUF6NEIsRUFBQTA0QixRQUFBdG1CLEVBQUF1bUIsVUFBQXZtQixFQUFBdW1CLFlBQUEsTUFpQkFq
K0IsR0FBQUQsUUFBQXkrQixHN0RpaE5NLFNBQVN4K0IsRUFBUUQsRzhEN3NOdkIsWUFFQSxJQUFB
ay9CLEdBRUFDLEdBQ0FDLDRCQUFBLFNBQUFqbkIsR0FDQSttQixFQUFBL21CLElBSUFrbkIsR0FD
QUMsT0FBQSxTQUFBQyxHQUNBLE1BQUFMLEdBQUFLLElBSUFGLEdBQUE1eEIsVUFBQTB4QixFQUVB
bC9CLEVBQUFELFFBQUFxL0IsRzlENnROTSxTQUFTcC9CLEVBQVFELEcrRDl1TnZCLFlBRUEsSUFB
QTBLLElBSUFDLG9CQUFBLEVBR0ExSyxHQUFBRCxRQUFBMEssRy9EK3ZOTSxTQUFTekssRUFBUUQs
RUFBU0gsR2dFendOaEMsWUE0QkEsU0FBQTIvQixHQUFBNW5CLEdBRUEsTUFEQTZuQixHQUFBLE9B
QUFoNUIsRUFBQSxNQUFBbVIsRUFBQTlNLE1BQ0EsR0FBQTIwQixHQUFBN25CLEdBT0EsUUFBQThu
QixHQUFBcHZCLEdBQ0EsVUFBQXF2QixHQUFBcnZCLEdBT0EsUUFBQXN2QixHQUFBejZCLEdBQ0Es
TUFBQUEsYUFBQXc2QixHQTVDQSxHQUFBbDVCLEdBQUE1RyxFQUFBLEdBSUE0L0IsR0FGQTUvQixF
QUFBLEdBRUEsTUFDQTgvQixFQUFBLEtBRUFFLEdBR0FDLDRCQUFBLFNBQUFDLEdBQ0FOLEVBQUFN
LEdBSUFDLHlCQUFBLFNBQUFELEdBQ0FKLEVBQUFJLElBK0JBRSxHQUNBVCwwQkFDQUUsd0JBQ0FF
LGtCQUNBbnlCLFVBQUFveUIsRUFHQTUvQixHQUFBRCxRQUFBaWdDLEdoRXl4Tk0sU0FBU2hnQyxF
QUFRRCxFQUFTSCxHaUVqMU5oQyxZQVFBLFNBQUFxZ0MsR0FBQXQ3QixHQUNBLE1BQUF1N0IsR0FB
QXY0QixTQUFBdzRCLGdCQUFBeDdCLEdBUEEsR0FBQXk3QixHQUFBeGdDLEVBQUEsS0FFQXNnQyxF
QUFBdGdDLEVBQUEsS0FDQW0yQixFQUFBbjJCLEVBQUEsSUFDQXEyQixFQUFBcjJCLEVBQUEsSUFZ
QXlnQyxHQUNBQyx5QkFBQSxTQUFBQyxHQUNBLEdBQUF0dkIsR0FBQXN2QixLQUFBdHZCLFVBQUFz
dkIsRUFBQXR2QixTQUFBVyxhQUNBLE9BQUFYLEtBQUEsVUFBQUEsR0FBQSxTQUFBc3ZCLEVBQUEx
MUIsTUFBQSxhQUFBb0csR0FBQSxTQUFBc3ZCLEVBQUFDLGtCQUdBQyx3QkFBQSxXQUNBLEdBQUFD
LEdBQUF6SyxHQUNBLFFBQ0F5SyxjQUNBQyxlQUFBTixFQUFBQyx5QkFBQUksR0FBQUwsRUFBQU8s
YUFBQUYsR0FBQSxPQVNBRyxpQkFBQSxTQUFBQyxHQUNBLEdBQUFDLEdBQUE5SyxJQUNBK0ssRUFB
QUYsRUFBQUosWUFDQU8sRUFBQUgsRUFBQUgsY0FDQUksS0FBQUMsR0FBQWYsRUFBQWUsS0FDQVgs
RUFBQUMseUJBQUFVLElBQ0FYLEVBQUFhLGFBQUFGLEVBQUFDLEdBRUFsTCxFQUFBaUwsS0FVQUos
YUFBQSxTQUFBTyxHQUNBLEdBQUFDLEVBRUEsc0JBQUFELEdBRUFDLEdBQ0FDLE1BQUFGLEVBQUFH
LGVBQ0FDLElBQUFKLEVBQUFLLGtCQUVLLElBQUE3NUIsU0FBQXk1QixXQUFBRCxFQUFBbHdCLFVB
QUEsVUFBQWt3QixFQUFBbHdCLFNBQUFXLGNBQUEsQ0FFTCxHQUFBNnZCLEdBQUE5NUIsU0FBQXk1
QixVQUFBTSxhQUdBRCxHQUFBRSxrQkFBQVIsSUFDQUMsR0FDQUMsT0FBQUksRUFBQUcsVUFBQSxh
QUFBVCxFQUFBbnZCLE1BQUF4UCxRQUNBKytCLEtBQUFFLEVBQUFJLFFBQUEsYUFBQVYsRUFBQW52
QixNQUFBeFAsY0FLQTQrQixHQUFBaEIsRUFBQTBCLFdBQUFYLEVBR0EsT0FBQUMsS0FBeUJDLE1B
QUEsRUFBQUUsSUFBQSxJQVN6QkwsYUFBQSxTQUFBQyxFQUFBWSxHQUNBLEdBQUFWLEdBQUFVLEVB
QUFWLE1BQ0FFLEVBQUFRLEVBQUFSLEdBS0EsSUFKQTMvQixTQUFBMi9CLElBQ0FBLEVBQUFGLEdB
R0Esa0JBQUFGLEdBQ0FBLEVBQUFHLGVBQUFELEVBQ0FGLEVBQUFLLGFBQUFuNkIsS0FBQTI2QixJ
QUFBVCxFQUFBSixFQUFBbnZCLE1BQUF4UCxZQUNLLElBQUFtRixTQUFBeTVCLFdBQUFELEVBQUFs
d0IsVUFBQSxVQUFBa3dCLEVBQUFsd0IsU0FBQVcsY0FBQSxDQUNMLEdBQUE2dkIsR0FBQU4sRUFB
QWMsaUJBQ0FSLEdBQUFTLFVBQUEsR0FDQVQsRUFBQUcsVUFBQSxZQUFBUCxHQUNBSSxFQUFBSSxR
QUFBLFlBQUFOLEVBQUFGLEdBQ0FJLEVBQUFVLGFBRUEvQixHQUFBZ0MsV0FBQWpCLEVBQUFZLElB
S0EvaEMsR0FBQUQsUUFBQXNnQyxHakVpMk5NLFNBQVNyZ0MsRUFBUUQsRUFBU0gsR2tFaDlOaEMs
WUEwQ0EsU0FBQXlpQyxHQUFBQyxFQUFBQyxHQUVBLE9BREFDLEdBQUFuN0IsS0FBQTI2QixJQUFB
TSxFQUFBOS9CLE9BQUErL0IsRUFBQS8vQixRQUNBakMsRUFBQSxFQUFpQkEsRUFBQWlpQyxFQUFZ
amlDLElBQzdCLEdBQUEraEMsRUFBQTdMLE9BQUFsMkIsS0FBQWdpQyxFQUFBOUwsT0FBQWwyQixH
QUNBLE1BQUFBLEVBR0EsT0FBQStoQyxHQUFBOS9CLFNBQUErL0IsRUFBQS8vQixVQUFBZ2dDLEVB
UUEsUUFBQUMsR0FBQUMsR0FDQSxNQUFBQSxHQUlBQSxFQUFBNzlCLFdBQUE4OUIsRUFDQUQsRUFB
QXZDLGdCQUVBdUMsRUFBQXg4QixXQU5BLEtBVUEsUUFBQTA4QixHQUFBaitCLEdBSUEsTUFBQUEs
R0FBQUcsY0FBQUgsRUFBQUcsYUFBQUMsSUFBQSxHQVdBLFFBQUE4OUIsR0FBQUMsRUFBQUosRUFB
QXo0QixFQUFBODRCLEVBQUFuM0IsR0FDQSxHQUFBcEIsRUFDQSxJQUFBQyxFQUFBQyxtQkFBQSxD
QUNBLEdBQUFzNEIsR0FBQUYsRUFBQWw0QixnQkFBQThNLE1BQUF1ckIsTUFDQXA0QixFQUFBbTRC
LEVBQUFuNEIsSUFDQUwsR0FBQSxpQ0FBQUssT0FBQXduQixhQUFBeG5CLEVBQUE3SSxNQUNBZ0os
UUFBQUMsS0FBQVQsR0FHQSxHQUFBbUssR0FBQXpKLEVBQUFvSixlQUFBd3VCLEVBQUE3NEIsRUFB
QSxLQUFBaTVCLEVBQUFKLEVBQUFKLEdBQUE5MkIsRUFBQSxFQUdBcEIsSUFDQVEsUUFBQUksUUFB
QVosR0FHQXM0QixFQUFBMTlCLG1CQUFBKzlCLGlCQUFBTCxFQUNBTSxFQUFBQyxvQkFBQTF1QixF
QUFBK3RCLEVBQUFJLEVBQUFDLEVBQUE5NEIsR0FVQSxRQUFBcTVCLEdBQUFDLEVBQUFiLEVBQUFL
LEVBQUFuM0IsR0FDQSxHQUFBM0IsR0FBQWpCLEVBQUFDLDBCQUFBTyxXQUVBdTVCLEdBQUFTLEVB
QUFDLGlCQUNBeDVCLEdBQUE2QyxRQUFBKzFCLEVBQUEsS0FBQVUsRUFBQWIsRUFBQXo0QixFQUFB
ODRCLEVBQUFuM0IsR0FDQTVDLEVBQUFDLDBCQUFBNEQsUUFBQTVDLEdBWUEsUUFBQXk1QixHQUFB
NUgsRUFBQTRHLEVBQUExdEIsR0FjQSxJQVZBOUosRUFBQTZKLGlCQUFBK21CLEVBQUE5bUIsR0FL
QTB0QixFQUFBNzlCLFdBQUE4OUIsSUFDQUQsSUFBQXZDLGlCQUlBdUMsRUFBQWlCLFdBQ0FqQixF
QUFBN2EsWUFBQTZhLEVBQUFpQixXQWNBLFFBQUFDLEdBQUFsQixHQUNBLEdBQUFtQixHQUFBcEIs
RUFBQUMsRUFDQSxJQUFBbUIsRUFBQSxDQUNBLEdBQUF2K0IsR0FBQWtDLEVBQUFULG9CQUFBODhC
LEVBQ0EsVUFBQXYrQixNQUFBMkIsY0F3QkEsUUFBQTY4QixHQUFBbi9CLEdBQ0EsU0FBQUEsS0FB
QUUsV0FBQXdNLEdBQUExTSxFQUFBRSxXQUFBODlCLEdBQUFoK0IsRUFBQUUsV0FBQXlNLEdBY0Es
UUFBQXl5QixHQUFBckIsR0FDQSxHQUFBbUIsR0FBQXBCLEVBQUFDLEdBQ0FzQixFQUFBSCxHQUFB
cjhCLEVBQUFULG9CQUFBODhCLEVBQ0EsT0FBQUcsT0FBQS84QixZQUFBKzhCLEVBQUEsS0FHQSxR
QUFBQyxHQUFBdkIsR0FDQSxHQUFBdE0sR0FBQTJOLEVBQUFyQixFQUNBLE9BQUF0TSxLQUFBOE4s
bUJBQUFmLGlCQUFBLEtBOU1BLEdBQUEzOEIsR0FBQTVHLEVBQUEsR0FFQXNSLEVBQUF0UixFQUFB
LElBQ0FzSCxFQUFBdEgsRUFBQSxJQUNBeVcsRUFBQXpXLEVBQUEsSUFDQStpQixFQUFBL2lCLEVB
QUEsSUFFQTRILEdBREE1SCxFQUFBLElBQ0FBLEVBQUEsSUFDQXNqQyxFQUFBdGpDLEVBQUEsS0FD
QTRqQyxFQUFBNWpDLEVBQUEsS0FDQTZLLEVBQUE3SyxFQUFBLElBQ0FrZCxFQUFBbGQsRUFBQSxJ
QUVBdWtDLEdBREF2a0MsRUFBQSxHQUNBQSxFQUFBLE1BQ0FzTCxFQUFBdEwsRUFBQSxJQUNBNnlC
LEVBQUE3eUIsRUFBQSxJQUNBb0osRUFBQXBKLEVBQUEsR0FFQWtlLEVBQUFsZSxFQUFBLElBQ0F3
a0MsRUFBQXhrQyxFQUFBLElBRUF3USxHQURBeFEsRUFBQSxHQUNBQSxFQUFBLEtBQ0F1MUIsRUFB
QXYxQixFQUFBLElBR0FtRixHQUZBbkYsRUFBQSxHQUVBc0gsRUFBQUUsbUJBQ0FpOUIsRUFBQW45
QixFQUFBOE0sb0JBRUEzQyxFQUFBLEVBQ0FzeEIsRUFBQSxFQUNBcnhCLEVBQUEsR0FFQWd6QixL
QXNMQUMsRUFBQSxFQUNBQyxFQUFBLFdBQ0F0akMsS0FBQXVqQyxPQUFBRixJQUVBQyxHQUFBL2pD
LFVBQUFpa0Msb0JBSUFGLEVBQUEvakMsVUFBQWtrQyxPQUFBLFdBQ0EsTUFBQXpqQyxNQUFBd1cs
TUFBQXVyQixPQUVBdUIsRUFBQTE1Qix3QkFBQSxDQW9CQSxJQUFBczRCLElBQ0FvQixrQkFLQUks
d0JBQUFOLEVBVUFPLGNBQUEsU0FBQW5DLEVBQUFvQyxHQUNBQSxLQVVBQyxxQkFBQSxTQUFBQyxF
QUFBN3ZCLEVBQUFvZSxFQUFBbVAsRUFBQS80QixHQVFBLE1BUEF5NUIsR0FBQXlCLGNBQUFuQyxF
QUFBLFdBQ0FqUSxFQUFBYSx1QkFBQTBSLEVBQUE3dkIsRUFBQW9lLEdBQ0E1cEIsR0FDQThvQixF
QUFBSSx3QkFBQW1TLEVBQUFyN0IsS0FJQXE3QixHQVdBQyx3QkFBQSxTQUFBOXZCLEVBQUF1dEIs
RUFBQUssRUFBQW4zQixHQU1BazRCLEVBQUFwQixHQUFBLE9BQUFsOEIsRUFBQSxNQUVBbWMsRUFB
QXNCLDZCQUNBLElBQUFzZixHQUFBYSxFQUFBanZCLEdBQUEsRUFNQW5NLEdBQUFVLGVBQUE0NUIs
RUFBQUMsRUFBQWIsRUFBQUssRUFBQW4zQixFQUVBLElBQUFzNUIsR0FBQTNCLEVBQUE0QixVQUFB
VixNQUdBLE9BRkFILEdBQUFZLEdBQUEzQixFQUVBQSxHQWdCQTZCLDJCQUFBLFNBQUFDLEVBQUFs
d0IsRUFBQXV0QixFQUFBLzRCLEdBRUEsTUFEQSxPQUFBMDdCLEdBQUF2b0IsRUFBQUksSUFBQW1v
QixHQUFBLE9BQUE3K0IsRUFBQSxNQUNBNDhCLEVBQUFrQyw0QkFBQUQsRUFBQWx3QixFQUFBdXRC
LEVBQUEvNEIsSUFHQTI3Qiw0QkFBQSxTQUFBRCxFQUFBbHdCLEVBQUF1dEIsRUFBQS80QixHQUNB
OG9CLEVBQUFHLGlCQUFBanBCLEVBQUEsbUJBQ0EwTSxFQUFBTyxlQUFBekIsR0FDQSxPQUFBM08s
RUFBQSxxQkFBQTJPLEdBQUEseUdBQUFBLEdBQUEsd0ZBQUFBLEdBQUF2VCxTQUFBdVQsRUFBQXVD
LE1BQUEscUZBSUEsSUFJQTZiLEdBSkFnUyxFQUFBbHZCLEVBQUF6TyxjQUFBNDhCLEdBQ0F2QixN
QUFBOXRCLEdBSUEsSUFBQWt3QixFQUFBLENBQ0EsR0FBQXBwQixHQUFBYSxFQUFBRyxJQUFBb29C
LEVBQ0E5UixHQUFBdFgsRUFBQXVwQixxQkFBQXZwQixFQUFBNUcsY0FFQWtlLEdBQUF6VixDQUdB
LElBQUFrbkIsR0FBQWYsRUFBQXZCLEVBRUEsSUFBQXNDLEVBQUEsQ0FDQSxHQUFBUyxHQUFBVCxF
QUFBcDZCLGdCQUNBd0ssRUFBQXF3QixFQUFBL3RCLE1BQUF1ckIsS0FDQSxJQUFBOU4sRUFBQS9m
LEVBQUFELEdBQUEsQ0FDQSxHQUFBdXdCLEdBQUFWLEVBQUE1L0IsbUJBQUFtRyxvQkFDQW82QixF
QUFBaDhCLEdBQUEsV0FDQUEsRUFBQXhKLEtBQUF1bEMsR0FHQSxPQURBdEMsR0FBQTJCLHFCQUFB
QyxFQUFBTyxFQUFBaFMsRUFBQW1QLEVBQUFpRCxHQUNBRCxFQUVBdEMsRUFBQXdDLHVCQUFBbEQs
R0FJQSxHQUFBbUQsR0FBQXBELEVBQUFDLEdBQ0FvRCxFQUFBRCxLQUFBakQsRUFBQWlELEdBQ0FF
LEVBQUFuQyxFQUFBbEIsR0FpQkFLLEVBQUErQyxJQUFBZCxJQUFBZSxFQUNBN2dDLEVBQUFrK0Is
RUFBQTZCLHdCQUFBTSxFQUFBN0MsRUFBQUssRUFBQXhQLEdBQUFudUIsbUJBQUFtRyxtQkFJQSxP
QUhBNUIsSUFDQUEsRUFBQXhKLEtBQUErRSxHQUVBQSxHQWdCQXkvQixPQUFBLFNBQUF4dkIsRUFB
QXV0QixFQUFBLzRCLEdBQ0EsTUFBQXk1QixHQUFBa0MsNEJBQUEsS0FBQW53QixFQUFBdXRCLEVB
QUEvNEIsSUFXQWk4Qix1QkFBQSxTQUFBbEQsR0FPQW9CLEVBQUFwQixHQUFBLE9BQUFsOEIsRUFB
QSxLQU1BLElBQUF3K0IsR0FBQWYsRUFBQXZCLEVBQ0EsS0FBQXNDLEVBQUEsQ0FHQXBCLEVBQUFs
QixHQUdBLElBQUFBLEVBQUE3OUIsVUFBQTY5QixFQUFBc0QsYUFBQTNCLEVBTUEsVUFJQSxhQUZB
QyxHQUFBVSxFQUFBRyxVQUFBVixRQUNBejdCLEVBQUFVLGVBQUFnNkIsRUFBQXNCLEVBQUF0QyxH
QUFBLElBQ0EsR0FHQVcsb0JBQUEsU0FBQTF1QixFQUFBK3RCLEVBQUE1RyxFQUFBaUgsRUFBQTk0
QixHQUdBLEdBRkE2NUIsRUFBQXBCLEdBQUEsT0FBQWw4QixFQUFBLE1BRUF1OEIsRUFBQSxDQUNB
LEdBQUFrRCxHQUFBeEQsRUFBQUMsRUFDQSxJQUFBeUIsRUFBQStCLGVBQUF2eEIsRUFBQXN4QixH
QUVBLFdBREF6K0IsR0FBQW5DLGFBQUF5MkIsRUFBQW1LLEVBR0EsSUFBQUUsR0FBQUYsRUFBQW5o
QyxhQUFBcS9CLEVBQUFpQyxtQkFDQUgsR0FBQXZJLGdCQUFBeUcsRUFBQWlDLG1CQUVBLElBQUFD
LEdBQUFKLEVBQUFLLFNBQ0FMLEdBQUFsUixhQUFBb1AsRUFBQWlDLG1CQUFBRCxFQUVBLElBQUFJ
LEdBQUE1eEIsRUFvQkE2eEIsRUFBQW5FLEVBQUFrRSxFQUFBRixHQUNBSSxFQUFBLGFBQUFGLEVB
QUFyZixVQUFBc2YsRUFBQSxHQUFBQSxFQUFBLG1CQUFBSCxFQUFBbmYsVUFBQXNmLEVBQUEsR0FB
QUEsRUFBQSxHQUVBOUQsR0FBQTc5QixXQUFBODlCLEVBQUFuOEIsRUFBQSxLQUFBaWdDLEdBQUEs
T0FVQSxHQUZBL0QsRUFBQTc5QixXQUFBODlCLEVBQUFuOEIsRUFBQSxhQUVBeUQsRUFBQXc1Qixp
QkFBQSxDQUNBLEtBQUFmLEVBQUFpQixXQUNBakIsRUFBQTdhLFlBQUE2YSxFQUFBaUIsVUFFQXp5
QixHQUFBaEIsaUJBQUF3eUIsRUFBQS90QixFQUFBLFVBRUF2RSxHQUFBc3lCLEVBQUEvdEIsR0FD
QW5OLEVBQUFuQyxhQUFBeTJCLEVBQUE0RyxFQUFBeDhCLGFBZ0JBbEcsR0FBQUQsUUFBQXFqQyxH
bEVnK05NLFNBQVNwakMsRUFBUUQsRUFBU0gsR21FNytPaEMsWUFFQSxJQUFBNEcsR0FBQTVHLEVB
QUEsR0FFQXlXLEVBQUF6VyxFQUFBLElBSUE4bUMsR0FGQTltQyxFQUFBLElBR0ErbUMsS0FBQSxF
QUNBQyxVQUFBLEVBQ0FDLE1BQUEsRUFFQUMsUUFBQSxTQUFBbmlDLEdBQ0EsY0FBQUEsUUFBQSxF
QUNBK2hDLEVBQUFHLE1BQ0t4d0IsRUFBQU8sZUFBQWpTLEdBQ0wsa0JBQUFBLEdBQUFrRyxLQUNB
NjdCLEVBQUFFLFVBRUFGLEVBQUFDLFNBR0FuZ0MsR0FBQSxLQUFBN0IsS0FJQTNFLEdBQUFELFFB
QUEybUMsR25FOC9PTSxTQUFTMW1DLEVBQVFELEdvRTFoUHZCLFlBRUEsSUFBQXVlLElBQ0FrSCxr
QkFBQSxFQUVBRSxpQkFBQSxFQUVBdkIsb0JBQUEsU0FBQTRpQixHQUNBem9CLEVBQUFrSCxrQkFB
QXVoQixFQUFBcGQsRUFDQXJMLEVBQUFvSCxpQkFBQXFoQixFQUFBbmQsR0FJQTVwQixHQUFBRCxR
QUFBdWUsR3BFMGlQTSxTQUFTdGUsRUFBUUQsRUFBU0gsR3FFdGpQaEMsWUFtQkEsU0FBQXNaLEdB
QUFwSixFQUFBazNCLEdBR0EsTUFGQSxPQUFBQSxFQUFBeGdDLEVBQUEsYUFFQSxNQUFBc0osRUFD
QWszQixFQUtBaHZCLE1BQUF3UixRQUFBMVosR0FDQWtJLE1BQUF3UixRQUFBd2QsSUFDQWwzQixF
QUFBbkosS0FBQTFGLE1BQUE2TyxFQUFBazNCLEdBQ0FsM0IsSUFFQUEsRUFBQW5KLEtBQUFxZ0Ms
R0FDQWwzQixHQUdBa0ksTUFBQXdSLFFBQUF3ZCxJQUVBbDNCLEdBQUEzTyxPQUFBNmxDLElBR0Fs
M0IsRUFBQWszQixHQXhDQSxHQUFBeGdDLEdBQUE1RyxFQUFBLEVBRUFBLEdBQUEsRUF5Q0FJLEdB
QUFELFFBQUFtWixHckV1a1BNLFNBQVNsWixFQUFRRCxHc0VwblB2QixZQVVBLFNBQUFvWixHQUFB
OHRCLEVBQUFDLEVBQUFsNkIsR0FDQWdMLE1BQUF3UixRQUFBeWQsR0FDQUEsRUFBQXJqQyxRQUFB
c2pDLEVBQUFsNkIsR0FDR2k2QixHQUNIQyxFQUFBL21DLEtBQUE2TSxFQUFBaTZCLEdBSUFqbkMs
RUFBQUQsUUFBQW9aLEd0RXFvUE0sU0FBU25aLEVBQVFELEVBQVNILEd1RXhwUGhDLFlBSUEsU0FB
QXVuQyxHQUFBN2hDLEdBR0EsSUFGQSxHQUFBdUYsSUFFQUEsRUFBQXZGLEVBQUE4aEMscUJBQUFW
LEVBQUFFLFdBQ0F0aEMsSUFBQUYsa0JBR0EsT0FBQXlGLEtBQUE2N0IsRUFBQUMsS0FDQXJoQyxF
QUFBRixtQkFDR3lGLElBQUE2N0IsRUFBQUcsTUFDSCxLQURHLE9BWEgsR0FBQUgsR0FBQTltQyxF
QUFBLEdBZ0JBSSxHQUFBRCxRQUFBb25DLEd2RXdxUE0sU0FBU25uQyxFQUFRRCxFQUFTSCxHd0Ux
clBoQyxZQVlBLFNBQUF5bkMsS0FNQSxPQUxBQyxHQUFBei9CLEVBQUFKLFlBR0E2L0IsRUFBQSxl
QUFBMy9CLFVBQUF3NEIsZ0JBQUEsMkJBRUFtSCxFQWhCQSxHQUFBei9CLEdBQUFqSSxFQUFBLEdB
RUEwbkMsRUFBQSxJQWlCQXRuQyxHQUFBRCxRQUFBc25DLEd4RTBzUE0sU0FBU3JuQyxFQUFRRCxF
QUFTSCxHeUUvdFBoQyxZQUlBLFNBQUEybkMsR0FBQWhILEdBQ0EsR0FBQTExQixHQUFBMDFCLEVB
QUExMUIsS0FDQW9HLEVBQUFzdkIsRUFBQXR2QixRQUNBLE9BQUFBLElBQUEsVUFBQUEsRUFBQVcs
Z0JBQUEsYUFBQS9HLEdBQUEsVUFBQUEsR0FHQSxRQUFBMjhCLEdBQUFsaUMsR0FDQSxNQUFBQSxH
QUFBdTRCLGNBQUE0SixhQUdBLFFBQUFDLEdBQUFwaUMsRUFBQXFpQyxHQUNBcmlDLEVBQUF1NEIs
Y0FBQTRKLGFBQUFFLEVBR0EsUUFBQUMsR0FBQXRpQyxTQUNBQSxHQUFBdTRCLGNBQUE0SixhQUdB
LFFBQUFJLEdBQUFsakMsR0FDQSxHQUFBcU4sRUFJQSxPQUhBck4sS0FDQXFOLEVBQUF1MUIsRUFB
QTVpQyxHQUFBLEdBQUFBLEVBQUE0ckIsUUFBQTVyQixFQUFBcU4sT0FFQUEsRUF6QkEsR0FBQXhL
LEdBQUE1SCxFQUFBLEdBNEJBa29DLEdBRUFDLG9CQUFBLFNBQUFwakMsR0FDQSxNQUFBNmlDLEdB
QUFoZ0MsRUFBQVQsb0JBQUFwQyxLQUlBcWpDLE1BQUEsU0FBQTFpQyxHQUNBLElBQUFraUMsRUFB
QWxpQyxHQUFBLENBSUEsR0FBQVgsR0FBQTZDLEVBQUFSLG9CQUFBMUIsR0FDQTJpQyxFQUFBVixF
QUFBNWlDLEdBQUEsa0JBQ0F1akMsRUFBQTFuQyxPQUFBMm5DLHlCQUFBeGpDLEVBQUFxSixZQUFB
dk4sVUFBQXduQyxHQUVBRyxFQUFBLEdBQUF6akMsRUFBQXNqQyxFQU1BdGpDLEdBQUFqRSxlQUFB
dW5DLElBQUEsa0JBQUFDLEdBQUFqckIsS0FBQSxrQkFBQWlyQixHQUFBL3FCLE1BSUEzYyxPQUFB
Nm5DLGVBQUExakMsRUFBQXNqQyxHQUNBSyxXQUFBSixFQUFBSSxXQUNBQyxjQUFBLEVBQ0F0ckIs
SUFBQSxXQUNBLE1BQUFpckIsR0FBQWpyQixJQUFBOWMsS0FBQWUsT0FFQWljLElBQUEsU0FBQW5M
LEdBQ0FvMkIsRUFBQSxHQUFBcDJCLEVBQ0FrMkIsRUFBQS9xQixJQUFBaGQsS0FBQWUsS0FBQThR
LE1BSUEwMUIsRUFBQXBpQyxHQUNBbXNCLFNBQUEsV0FDQSxNQUFBMlcsSUFFQUksU0FBQSxTQUFB
eDJCLEdBQ0FvMkIsRUFBQSxHQUFBcDJCLEdBRUF5MkIsYUFBQSxXQUNBYixFQUFBdGlDLFNBQ0FY
LEdBQUFzakMsU0FLQVMscUJBQUEsU0FBQXBqQyxHQUNBLElBQUFBLEVBQ0EsUUFFQSxJQUFBcWlD
LEdBQUFILEVBQUFsaUMsRUFFQSxLQUFBcWlDLEVBRUEsTUFEQUcsR0FBQUUsTUFBQTFpQyxJQUNB
LENBR0EsSUFBQXFqQyxHQUFBaEIsRUFBQWxXLFdBQ0FtWCxFQUFBZixFQUFBcmdDLEVBQUFSLG9C
QUFBMUIsR0FFQSxPQUFBc2pDLEtBQUFELElBQ0FoQixFQUFBYSxTQUFBSSxJQUNBLElBS0FILGFB
QUEsU0FBQW5qQyxHQUNBLEdBQUFxaUMsR0FBQUgsRUFBQWxpQyxFQUNBcWlDLElBQ0FBLEVBQUFj
LGdCQUtBem9DLEdBQUFELFFBQUErbkMsR3pFK3VQTSxTQUFTOW5DLEVBQVFELEVBQVNILEcwRTkx
UGhDLFlBa0JBLFNBQUE0d0IsR0FBQS9ZLEdBQ0EsR0FBQUEsRUFBQSxDQUNBLEdBQUF6VixHQUFB
eVYsRUFBQTFNLFNBQ0EsSUFBQS9JLEVBQ0Esc0NBQUFBLEVBQUEsS0FHQSxTQVVBLFFBQUE2bUMs
R0FBQWgrQixHQUNBLHdCQUFBQSxJQUFBLG1CQUFBQSxHQUFBcEssV0FBQSxrQkFBQW9LLEdBQUFw
SyxVQUFBNlQsZ0JBQUEsa0JBQUF6SixHQUFBcEssVUFBQXlVLGlCQVdBLFFBQUFrdkIsR0FBQXov
QixFQUFBbWtDLEdBQ0EsR0FBQWhOLEVBRUEsV0FBQW4zQixRQUFBLEVBQ0FtM0IsRUFBQXNELEVB
QUFDLE9BQUErRSxPQUNHLG9CQUFBei9CLEdBQUEsQ0FDSCxHQUFBZ1QsR0FBQWhULEVBQ0FrRyxF
QUFBOE0sRUFBQTlNLElBQ0Esc0JBQUFBLElBQUEsZ0JBQUFBLEdBQUEsQ0FDQSxHQUFBaytCLEdB
QUEsRUFNQUEsSUFBQXZZLEVBQUE3WSxFQUFBRSxRQUNBclIsRUFBQSxZQUFBcUUsYUFBQWsrQixH
QUlBLGdCQUFBcHhCLEdBQUE5TSxLQUNBaXhCLEVBQUFrRSxFQUFBVCx3QkFBQTVuQixHQUNLa3hC
LEVBQUFseEIsRUFBQTlNLE9BSUxpeEIsRUFBQSxHQUFBbmtCLEdBQUE5TSxLQUFBOE0sR0FHQW1r
QixFQUFBaG5CLGNBQ0FnbkIsRUFBQWhuQixZQUFBZ25CLEVBQUFrTixnQkFHQWxOLEVBQUEsR0FB
QW1OLEdBQUF0eEIsT0FFRyxnQkFBQWhULElBQUEsZ0JBQUFBLEdBQ0htM0IsRUFBQWtFLEVBQUFQ
LHNCQUFBOTZCLEdBRUE2QixFQUFBLFlBQUE3QixHQXlCQSxPQWZBbTNCLEdBQUFvTixZQUFBLEVB
Q0FwTixFQUFBcU4sWUFBQSxLQWNBck4sRUE1R0EsR0FBQXQxQixHQUFBNUcsRUFBQSxHQUNBbU0s
RUFBQW5NLEVBQUEsR0FFQXdwQyxFQUFBeHBDLEVBQUEsS0FDQXcvQixFQUFBeC9CLEVBQUEsSUFD
QW9nQyxFQUFBcGdDLEVBQUEsSUFPQXFwQyxHQUxBcnBDLEVBQUEsS0FDQUEsRUFBQSxHQUNBQSxF
QUFBLEdBR0EsU0FBQStYLEdBQ0F6VyxLQUFBbW9DLFVBQUExeEIsSUFrR0E1TCxHQUFBazlCLEVB
QUF4b0MsVUFBQTJvQyxHQUNBRSwyQkFBQWxGLElBR0Fwa0MsRUFBQUQsUUFBQXFrQyxHMUU4MlBN
LFNBQVNwa0MsRUFBUUQsRzJFbCtQdkIsWUF3QkEsU0FBQXdwQyxHQUFBaEosR0FDQSxHQUFBdHZC
LEdBQUFzdkIsS0FBQXR2QixVQUFBc3ZCLEVBQUF0dkIsU0FBQVcsYUFFQSxpQkFBQVgsSUFDQXU0
QixFQUFBakosRUFBQTExQixNQUdBLGFBQUFvRyxFQXpCQSxHQUFBdTRCLElBQ0FDLE9BQUEsRUFD
QUMsTUFBQSxFQUNBQyxVQUFBLEVBQ0FDLGtCQUFBLEVBQ0FDLE9BQUEsRUFDQUMsT0FBQSxFQUNB
QyxRQUFBLEVBQ0FDLFVBQUEsRUFDQXZJLE9BQUEsRUFDQXdJLFFBQUEsRUFDQUMsS0FBQSxFQUNB
NzVCLE1BQUEsRUFDQXBGLE1BQUEsRUFDQWsvQixLQUFBLEVBQ0FDLE1BQUEsRUFpQkFwcUMsR0FB
QUQsUUFBQXdwQyxHM0VtL1BNLFNBQVN2cEMsRUFBUUQsRUFBU0gsRzRFMWhRaEMsWUFFQSxJQUFB
aUksR0FBQWpJLEVBQUEsR0FDQXVuQixFQUFBdm5CLEVBQUEsSUFDQXdRLEVBQUF4USxFQUFBLElB
WUEwUSxFQUFBLFNBQUEzTCxFQUFBMEwsR0FDQSxHQUFBQSxFQUFBLENBQ0EsR0FBQW5LLEdBQUF2
QixFQUFBdUIsVUFFQSxJQUFBQSxPQUFBdkIsRUFBQWcvQixXQUFBLElBQUF6OUIsRUFBQXJCLFNB
RUEsWUFEQXFCLEVBQUFsQixVQUFBcUwsR0FJQTFMLEVBQUEwbEMsWUFBQWg2QixFQUdBeEksR0FB
QUosWUFDQSxlQUFBRSxVQUFBdzRCLGtCQUNBN3ZCLEVBQUEsU0FBQTNMLEVBQUEwTCxHQUNBLFdB
QUExTCxFQUFBRSxjQUNBRixFQUFBSyxVQUFBcUwsT0FHQUQsR0FBQXpMLEVBQUF3aUIsRUFBQTlX
LE9BS0FyUSxFQUFBRCxRQUFBdVEsRzVFMGlRTSxTQUFTdFEsRUFBUUQsRUFBU0gsRzZFbGxRaEMs
WUFtQ0EsU0FBQTBxQyxHQUFBcGxDLEVBQUE2aEIsR0FHQSxNQUFBN2hCLElBQUEsZ0JBQUFBLElB
QUEsTUFBQUEsRUFBQVQsSUFFQXNyQixFQUFBakosT0FBQTVoQixFQUFBVCxLQUdBc2lCLEVBQUF4
ZixTQUFBLElBV0EsUUFBQWdqQyxHQUFBeGtDLEVBQUF5a0MsRUFBQTdnQyxFQUFBOGdDLEdBQ0Es
R0FBQTUvQixTQUFBOUUsRUFPQSxJQUxBLGNBQUE4RSxHQUFBLFlBQUFBLElBRUE5RSxFQUFBLE1B
R0EsT0FBQUEsR0FBQSxXQUFBOEUsR0FBQSxXQUFBQSxHQUdBLFdBQUFBLEdBQUE5RSxFQUFBNlIs
V0FBQVIsRUFLQSxNQUpBek4sR0FBQThnQyxFQUFBMWtDLEVBR0EsS0FBQXlrQyxFQUFBRSxFQUFB
SixFQUFBdmtDLEVBQUEsR0FBQXlrQyxHQUNBLENBR0EsSUFBQXZILEdBQ0EwSCxFQUNBQyxFQUFB
LEVBQ0FDLEVBQUEsS0FBQUwsRUFBQUUsRUFBQUYsRUFBQU0sQ0FFQSxJQUFBOXlCLE1BQUF3UixR
QUFBempCLEdBQ0EsT0FBQXhGLEdBQUEsRUFBbUJBLEVBQUF3RixFQUFBdkQsT0FBcUJqQyxJQUN4
QzBpQyxFQUFBbDlCLEVBQUF4RixHQUNBb3FDLEVBQUFFLEVBQUFQLEVBQUFySCxFQUFBMWlDLEdB
Q0FxcUMsR0FBQUwsRUFBQXRILEVBQUEwSCxFQUFBaGhDLEVBQUE4Z0MsT0FFRyxDQUNILEdBQUFN
LEdBQUFDLEVBQUFqbEMsRUFDQSxJQUFBZ2xDLEVBQUEsQ0FDQSxHQUNBRSxHQURBQyxFQUFBSCxF
QUFBNXFDLEtBQUE0RixFQUVBLElBQUFnbEMsSUFBQWhsQyxFQUFBb2xDLFFBRUEsSUFEQSxHQUFB
QyxHQUFBLElBQ0FILEVBQUFDLEVBQUFsRSxRQUFBcUUsTUFDQXBJLEVBQUFnSSxFQUFBajVCLE1B
Q0EyNEIsRUFBQUUsRUFBQVAsRUFBQXJILEVBQUFtSSxLQUNBUixHQUFBTCxFQUFBdEgsRUFBQTBI
LEVBQUFoaEMsRUFBQThnQyxPQWVBLFFBQUFRLEVBQUFDLEVBQUFsRSxRQUFBcUUsTUFBQSxDQUNB
LEdBQUFDLEdBQUFMLEVBQUFqNUIsS0FDQXM1QixLQUNBckksRUFBQXFJLEVBQUEsR0FDQVgsRUFB
QUUsRUFBQTlhLEVBQUFqSixPQUFBd2tCLEVBQUEsSUFBQVIsRUFBQVIsRUFBQXJILEVBQUEsR0FD
QTJILEdBQUFMLEVBQUF0SCxFQUFBMEgsRUFBQWhoQyxFQUFBOGdDLFNBSUssZUFBQTUvQixFQUFB
LENBQ0wsR0FBQTBnQyxHQUFBLEdBYUFDLEVBQUF0b0MsT0FBQTZDLEVBQ29PUyxHQUFBLHlCQUFB
Z2xDLEVBQUEscUJBQStHaHJDLE9BQUFzRCxLQUFBaUMsR0FBQXRDLEtBQUEsVUFBeUMrbkMsRUFB
QUQsSUFJNVgsTUFBQVgsR0FtQkEsUUFBQWEsR0FBQTFsQyxFQUFBNEQsRUFBQThnQyxHQUNBLGFB
QUExa0MsRUFDQSxFQUdBd2tDLEVBQUF4a0MsRUFBQSxHQUFBNEQsRUFBQThnQyxHQS9KQSxHQUFB
amtDLEdBQUE1RyxFQUFBLEdBR0F3WCxHQURBeFgsRUFBQSxJQUNBQSxFQUFBLE1BRUFvckMsRUFB
QXByQyxFQUFBLEtBRUFtd0IsR0FEQW53QixFQUFBLEdBQ0FBLEVBQUEsS0FHQThxQyxHQUZBOXFD
LEVBQUEsR0FFQSxLQUNBa3JDLEVBQUEsR0F1SkE5cUMsR0FBQUQsUUFBQTByQyxHN0VrbVFNLFNB
QVN6ckMsRUFBUUQsRUFBU0gsRzhFaHhRaEMsWUF3QkEsU0FBQW1vQixHQUFBQyxHQUFzQyxNQUFB
QSxNQUFBQyxXQUFBRCxHQUF1Q0UsUUFBQUYsR0FFN0UsUUFBQTZULEdBQUFDLEVBQUFDLEdBQWlE
LEtBQUFELFlBQUFDLElBQTBDLFNBQUFqNUIsV0FBQSxxQ0FFM0YsUUFBQTRvQyxHQUFBbDBCLEVB
QUFyWCxHQUFpRCxJQUFBcVgsRUFBYSxTQUFBbTBCLGdCQUFBLDREQUF5RixRQUFBeHJDLEdBQUEs
Z0JBQUFBLElBQUEsa0JBQUFBLEdBQUFxWCxFQUFBclgsRUFFdkosUUFBQXlyQyxHQUFBQyxFQUFB
QyxHQUEwQyxxQkFBQUEsSUFBQSxPQUFBQSxFQUErRCxTQUFBaHBDLFdBQUEsaUVBQUFncEMsR0FB
dUdELEdBQUFwckMsVUFBQUQsT0FBQTYrQixPQUFBeU0sS0FBQXJyQyxXQUF5RXVOLGFBQWVnRSxN
QUFBNjVCLEVBQUF2RCxZQUFBLEVBQUF5RCxVQUFBLEVBQUF4RCxjQUFBLEtBQTZFdUQsSUFBQXRy
QyxPQUFBd3JDLGVBQUF4ckMsT0FBQXdyQyxlQUFBSCxFQUFBQyxHQUFBRCxFQUFBSSxVQUFBSCxH
QUVyWCxRQUFBSSxHQUFBbGtCLEVBQUFsa0IsR0FBOEMsR0FBQUssS0FBaUIsUUFBQTVELEtBQUF5
bkIsR0FBcUJsa0IsRUFBQStvQixRQUFBdHNCLElBQUEsR0FBb0NDLE9BQUFDLFVBQUFDLGVBQUFQ
LEtBQUE2bkIsRUFBQXpuQixLQUE2RDRELEVBQUE1RCxHQUFBeW5CLEVBQUF6bkIsR0FBc0IsT0FB
QTRELEdBSTNNLFFBQUFnb0MsTUFDQSxRQUFBQyxHQUFBQyxFQUFBQyxHQUVBLEdBQUFDLElBQ0FD
LElBQUEsU0FBQTkwQixHQUNBLElBQ0EsR0FBQSswQixHQUFBSixFQUFBQyxFQUFBSSxXQUFBaDFC
LElBQ0ErMEIsSUFBQUYsRUFBQTcwQixPQUFBNjBCLEVBQUE1cUMsU0FDQTRxQyxFQUFBSSx1QkFB
QSxFQUNBSixFQUFBNzBCLE1BQUErMEIsRUFDQUYsRUFBQTVxQyxNQUFBLE1BRU8sTUFBQUEsR0FD
UDRxQyxFQUFBSSx1QkFBQSxFQUNBSixFQUFBNXFDLFVBS0EsT0FBQTRxQyxHQUdBLFFBQUFLLEdB
ZUFDLEdBQ0EsR0FBQUMsR0FBQUMsRUFFQUMsRUFBQXpxQyxVQUFBQyxPQUFBLEdBQUFaLFNBQUFX
LFVBQUEsR0FBQUEsVUFBQSxNQUNBMHFDLEVBQUFELEVBQUFFLGVBQ0FBLEVBQUF0ckMsU0FBQXFy
QyxFQUFBLFNBQUFqckMsR0FDQSx5QkFBQUEsRUFBQSxLQUNHaXJDLEVBQ0hFLEVBQUFILEVBQUFJ
LFdBQ0FBLEVBQUF4ckMsU0FBQXVyQyxFQUFBLGtCQUFBQSxFQUNBRSxFQUFBTCxFQUFBTSxnQkFD
QUEsRUFBQTFyQyxTQUFBeXJDLEVBQUF6ckMsT0FBQXlyQyxFQUNBRSxFQUFBUCxFQUFBUSx5QkFD
QUEsRUFBQTVyQyxTQUFBMnJDLEtBQ0FFLEVBQUFULEVBQUFVLFNBQ0FBLEVBQUE5ckMsU0FBQTZy
QyxFQUFBLFFBQUFBLEVBQ0FFLEVBQUFYLEVBQUFZLFFBQ0FBLEVBQUFoc0MsU0FBQStyQyxLQUNB
RSxFQUFBM0IsRUFBQWMsR0FBQSxrR0FFQWMsRUFBQUosRUFBQSxlQUNBMTJCLEVBQUErMkIsSUFF
QUMsR0FBQWxCLEtBQXdDQSxFQUFBWSxHQUFBTyxFQUFBQyxXQUFBcEIsRUFBQWdCLEdBQUFHLEVB
QUFFLGtCQUFBckIsR0FDeENzQixHQUFBckIsS0FBa0RBLEVBQUFlLEdBQUFHLEVBQUFFLGtCQUFB
cEIsRUFFbEQsaUJBQUFzQixJQUNBLEVBQUFDLEVBQUFwbUIsU0FBQSxrQkFBQW1tQixHQUFBLG1G
QUFBRSxLQUFBQyxVQUFBSCxHQUVBLElBQUFJLEdBQUFKLEVBQUFoYyxhQUFBZ2MsRUFBQXJzQyxN
QUFBLFlBRUFxd0IsRUFBQTZhLEVBQUF1QixHQUVBQyxFQUFBQyxLQUE0Q2QsR0FDNUNYLGlCQUNB
RSxhQUNBRSxrQkFDQUUsMkJBQ0FFLFdBQ0FFLFVBQ0F2YixjQUNBb2MsdUJBQ0FKLHFCQUdBTyxF
QUFBLFNBQUFDLEdBR0EsUUFBQUQsR0FBQWwzQixFQUFBOUwsR0FDQWl3QixFQUFBMzZCLEtBQUEw
dEMsRUFFQSxJQUFBRSxHQUFBcEQsRUFBQXhxQyxLQUFBMnRDLEVBQUExdUMsS0FBQWUsS0FBQXdX
LEVBQUE5TCxHQWFBLE9BWEFrakMsR0FBQTkzQixVQUNBODNCLEVBQUFDLFNBQ0FELEVBQUFFLFlB
QUEsRUFDQUYsRUFBQXhDLE1BQUE1MEIsRUFBQWcyQixJQUFBOWhDLEVBQUE4aEMsR0FDQW9CLEVB
QUFHLFVBQUFqUixRQUFBdG1CLEVBQUFnMkIsSUFDQW9CLEVBQUFJLG1CQUFBSixFQUFBSSxtQkFB
QS8yQixLQUFBMjJCLElBRUEsRUFBQVIsRUFBQXBtQixTQUFBNG1CLEVBQUF4QyxNQUFBLG1CQUFB
b0IsRUFBQSw0Q0FBQXJiLEVBQUEsK0VBQUFxYixFQUFBLG1CQUFBcmIsRUFBQSxPQUVBeWMsRUFB
QUssZUFDQUwsRUFBQU0sbUJBQ0FOLEVBOEhBLE1BaEpBbEQsR0FBQWdELEVBQUFDLEdBcUJBRCxF
QUFBbnVDLFVBQUE0dUMsZ0JBQUEsV0FDQSxHQUFBQyxHQU1BQyxFQUFBcnVDLEtBQUErdEMsVUFB
QSxLQUFBL3RDLEtBQUFxdUMsWUFDQSxPQUFBRCxNQUF5QkEsRUFBQXhCLEdBQUF5QixHQUFBcnVD
LEtBQUEwSyxRQUFBa2lDLEdBQUF3QixHQUd6QlYsRUFBQW51QyxVQUFBK3VDLGtCQUFBLFdBQ0Fo
QyxJQVFBdHNDLEtBQUFxdUMsYUFBQUUsZUFDQXZ1QyxLQUFBcXJDLFNBQUFDLElBQUF0ckMsS0FB
QXdXLE9BQ0F4VyxLQUFBcXJDLFNBQUFJLHVCQUFBenJDLEtBQUF3dUMsZ0JBR0FkLEVBQUFudUMs
VUFBQWt2QywwQkFBQSxTQUFBbEQsR0FDQXZyQyxLQUFBcXJDLFNBQUFDLElBQUFDLElBR0FtQyxF
QUFBbnVDLFVBQUFrc0Msc0JBQUEsV0FDQSxNQUFBenJDLE1BQUFxckMsU0FBQUksdUJBR0FpQyxF
QUFBbnVDLFVBQUFtdkMscUJBQUEsV0FDQTF1QyxLQUFBcXVDLGNBQUFydUMsS0FBQXF1QyxhQUFB
TSxpQkFDQTN1QyxLQUFBcXVDLGFBQUEsS0FDQXJ1QyxLQUFBNHVDLGlCQUFBM0QsRUFDQWpyQyxL
QUFBb3JDLE1BQUEsS0FDQXByQyxLQUFBcXJDLFNBQUFDLElBQUFMLEVBQ0FqckMsS0FBQXFyQyxT
QUFBSSx1QkFBQSxHQUdBaUMsRUFBQW51QyxVQUFBc3ZDLG1CQUFBLFdBRUEsT0FEQSxFQUFBekIs
RUFBQXBtQixTQUFBMGxCLEVBQUEsNEdBQXNIUixFQUFBLGFBQ3RIbHNDLEtBQUE4dUMsaUJBR0Fw
QixFQUFBbnVDLFVBQUF5dUMsbUJBQUEsU0FBQXQ2QixHQUNBMVQsS0FBQTh1QyxnQkFBQXA3QixH
QUdBZzZCLEVBQUFudUMsVUFBQTB1QyxhQUFBLFdBQ0EsR0FBQTlDLEdBQUFRLEVBQUEzckMsS0FB
QW9yQyxNQUFBMkQsU0FBQXZCLEVBQ0F4dEMsTUFBQXFyQyxTQUFBSCxFQUFBQyxFQUFBbnJDLEtB
QUFvckMsT0FDQXByQyxLQUFBcXJDLFNBQUFDLElBQUF0ckMsS0FBQXdXLFFBR0FrM0IsRUFBQW51
QyxVQUFBMnVDLGlCQUFBLFdBQ0EsR0FBQTVCLEVBQUEsQ0FJQSxHQUFBMEMsSUFBQWh2QyxLQUFB
K3RDLFVBQUEvdEMsS0FBQXdXLE1BQUF4VyxLQUFBMEssU0FBQWtpQyxFQUNBNXNDLE1BQUFxdUMs
YUFBQSxHQUFBWSxHQUFBam9CLFFBQUFobkIsS0FBQW9yQyxNQUFBNEQsRUFBQWh2QyxLQUFBa3ZD
LGNBQUFqNEIsS0FBQWpYLE9BUUFBLEtBQUE0dUMsaUJBQUE1dUMsS0FBQXF1QyxhQUFBTyxpQkFB
QTMzQixLQUFBalgsS0FBQXF1QyxnQkFHQVgsRUFBQW51QyxVQUFBMnZDLGNBQUEsV0FDQWx2QyxL
QUFBcXJDLFNBQUFDLElBQUF0ckMsS0FBQXdXLE9BRUF4VyxLQUFBcXJDLFNBQUFJLHVCQUdBenJD
LEtBQUFtdkMsbUJBQUFudkMsS0FBQW92QyxxQ0FDQXB2QyxLQUFBcXZDLFNBQUFDLElBSEF0dkMs
S0FBQTR1QyxvQkFPQWxCLEVBQUFudUMsVUFBQTZ2QyxxQ0FBQSxXQU1BcHZDLEtBQUFtdkMsbUJB
QUF6dUMsT0FDQVYsS0FBQTR1QyxvQkFHQWxCLEVBQUFudUMsVUFBQWd3QyxhQUFBLFdBQ0EsTUFB
QXpTLFNBQUE5OEIsS0FBQXF1QyxlQUFBcnVDLEtBQUFxdUMsYUFBQWtCLGdCQUdBN0IsRUFBQW51
QyxVQUFBaXdDLGNBQUEsU0FBQWg1QixHQUNBLEtBQUFrMkIsR0FBQU4sR0FBQXBzQyxLQUFBK3RD
LFdBQUEvdEMsS0FBQXF1QyxjQUFBLE1BQUE3M0IsRUFLQSxJQUFBaTVCLEdBQUFoQyxLQUFvQ2oz
QixFQUlwQyxPQUhBazJCLEtBQUErQyxFQUFBLzdCLElBQUExVCxLQUFBZ3VDLG9CQUNBNUIsSUFB
QXFELEVBQUFyRCxHQUFBcHNDLEtBQUE4dEMsZUFDQTl0QyxLQUFBK3RDLFdBQUEvdEMsS0FBQXF1
QyxlQUFBb0IsRUFBQTdDLEdBQUE1c0MsS0FBQXF1QyxjQUNBb0IsR0FHQS9CLEVBQUFudUMsVUFB
QWtrQyxPQUFBLFdBQ0EsR0FBQTRILEdBQUFyckMsS0FBQXFyQyxRQUdBLElBRkFBLEVBQUFJLHVC
QUFBLEVBRUFKLEVBQUE1cUMsTUFDQSxLQUFBNHFDLEdBQUE1cUMsS0FFQSxVQUFBaXZDLEVBQUFo
cEMsZUFBQXltQyxFQUFBbnRDLEtBQUF3dkMsY0FBQW5FLEVBQUE3MEIsU0FJQWszQixHQUNLZ0Ms
RUFBQWw2QixVQXVDTCxPQXJDQWs0QixHQUFBUCxtQkFDQU8sRUFBQXZjLGNBQ0F1YyxFQUFBUixv
QkFDQVEsRUFBQVosZUFDQVksRUFBQTNkLFVBQUErYyxHQWlDQSxFQUFBNkMsRUFBQTNvQixTQUFB
MG1CLEVBQUFQLElBN1NBdHVDLEVBQUFrb0IsWUFBQSxDQUVBLElBQUEwbUIsR0FBQW51QyxPQUFB
d0MsUUFBQSxTQUFBbUIsR0FBbUQsT0FBQTVELEdBQUEsRUFBZ0JBLEVBQUFnQyxVQUFBQyxPQUFz
QmpDLElBQUEsQ0FBTyxHQUFBNkQsR0FBQTdCLFVBQUFoQyxFQUEyQixRQUFBa0UsS0FBQUwsR0FB
MEI1RCxPQUFBQyxVQUFBQyxlQUFBUCxLQUFBaUUsRUFBQUssS0FBeUROLEVBQUFNLEdBQUFMLEVB
QUFLLElBQWlDLE1BQUFOLEdBRS9PcEUsR0FBQW1vQixRQUFBMGtCLENBRUEsSUFBQWtFLEdBQUFs
eEMsRUFBQSxLQUVBaXhDLEVBQUE5b0IsRUFBQStvQixHQUVBQyxFQUFBbnhDLEVBQUEsS0FFQTB1
QyxFQUFBdm1CLEVBQUFncEIsR0FFQUgsRUFBQWh4QyxFQUFBLElBRUFveEMsRUFBQXB4QyxFQUFB
LEtBRUF1d0MsRUFBQXBvQixFQUFBaXBCLEdBRUEvQyxFQUFBcnVDLEVBQUEsSUFZQW11QyxFQUFB
LEVBQ0F5QyxNOUVvaVJNLFNBQVN4d0MsRUFBUUQsRUFBU0gsRytFdmtSaEMsWUFXQSxTQUFBbW9C
LEdBQUFDLEdBQXNDLE1BQUFBLE1BQUFDLFdBQUFELEdBQXVDRSxRQUFBRixHQUU3RSxRQUFBaXBC
LEdBQUFDLEdBQ0EsZ0JBQUFqQixFQUFBN1IsR0FHQSxRQUFBK1MsS0FDQSxNQUFBQyxHQUhBLEdB
QUFBLEdBQUFGLEVBQUFqQixFQUFBN1IsRUFNQSxPQURBK1MsR0FBQUUsbUJBQUEsRUFDQUYsR0FX
QSxRQUFBRyxHQUFBQyxHQUNBLGNBQUFBLEVBQUFGLG1CQUFBenZDLFNBQUEydkMsRUFBQUYsa0JB
QUFyVCxRQUFBdVQsRUFBQUYsbUJBQUEsSUFBQUUsRUFBQS91QyxPQWVBLFFBQUFndkMsR0FBQUQs
RUFBQW5FLEdBQ0EsZ0JBQUE2QyxFQUFBakQsR0FDQSxHQUVBeUUsSUFGQXpFLEVBQUEzYSxZQUVB
LFNBQUFxZixFQUFBQyxHQUNBLE1BQUFGLEdBQUFKLGtCQUFBSSxFQUFBRixXQUFBRyxFQUFBQyxH
QUFBRixFQUFBRixXQUFBRyxJQXNCQSxPQWxCQUQsR0FBQUosbUJBQUEsRUFFQUksRUFBQUYsV0FB
QSxTQUFBRyxFQUFBQyxHQUNBRixFQUFBRixhQUNBRSxFQUFBSixrQkFBQUMsRUFBQUMsRUFDQSxJ
QUFBNzVCLEdBQUErNUIsRUFBQUMsRUFBQUMsRUFVQSxPQVJBLGtCQUFBajZCLEtBQ0ErNUIsRUFB
QUYsV0FBQTc1QixFQUNBKzVCLEVBQUFKLGtCQUFBQyxFQUFBNTVCLEdBQ0FBLEVBQUErNUIsRUFB
QUMsRUFBQUMsSUFLQWo2QixHQUdBKzVCLEdBekVBMXhDLEVBQUFrb0IsWUFBQSxFQUNBbG9CLEVB
QUFreEMseUJBQ0FseEMsRUFBQXV4Qyx1QkFDQXZ4QyxFQUFBeXhDLG9CQUVBLElBQUFJLEdBQUFo
eUMsRUFBQSxHQUVBbW9CLEdBQUE2cEIsSS9FaXBSTSxTQUFTNXhDLEVBQVFELEVBQVNILEdnRjFw
UmhDLFlBaUJBLFNBQUFtb0IsR0FBQUMsR0FBc0MsTUFBQUEsTUFBQUMsV0FBQUQsR0FBdUNFLFFB
QUFGLEdBZjdFam9CLEVBQUFrb0IsWUFBQSxFQUNBbG9CLEVBQUE4eEMsUUFBQTl4QyxFQUFBNnND
LGdCQUFBN3NDLEVBQUEreEMsZUFBQS94QyxFQUFBZ3lDLFNBQUFud0MsTUFFQSxJQUFBb3dDLEdB
QUFweUMsRUFBQSxLQUVBcXlDLEVBQUFscUIsRUFBQWlxQixHQUVBRSxFQUFBdHlDLEVBQUEsSUFF
QXV5QyxFQUFBcHFCLEVBQUFtcUIsR0FFQUUsRUFBQXh5QyxFQUFBLEtBRUF5eUMsRUFBQXRxQixF
QUFBcXFCLEVBSUFyeUMsR0FBQWd5QyxTQUFBRSxFQUFBL3BCLFFBQ0Fub0IsRUFBQSt4QyxlQUFB
RSxFQUFBRixlQUNBL3hDLEVBQUE2c0MsZ0JBQUF1RixFQUFBanFCLFFBQ0Fub0IsRUFBQTh4QyxR
QUFBUSxFQUFBbnFCLFNoRmdxUk0sU0FBU2xvQixFQUFRRCxFQUFTSCxHaUZ0clJoQyxZQVNBLFNB
QUFtb0IsR0FBQUMsR0FBc0MsTUFBQUEsTUFBQUMsV0FBQUQsR0FBdUNFLFFBQUFGLEdBUDdFam9C
LEVBQUFrb0IsWUFBQSxFQUNBbG9CLEVBQUFtdUMsV0FBQW51QyxFQUFBb3VDLGtCQUFBdnNDLE1B
RUEsSUFBQTB3QyxHQUFBMXlDLEVBQUEsSUFFQTJ5QyxFQUFBeHFCLEVBQUF1cUIsRUFJQXZ5QyxH
QUFBb3VDLGtCQUFBb0UsRUFBQXJxQixRQUFBc3FCLE9BQ0EvQyxhQUFBOEMsRUFBQXJxQixRQUFB
a0osS0FBQXFoQixXQUNBNUMsZUFBQTBDLEVBQUFycUIsUUFBQWtKLEtBQUFxaEIsV0FDQTNDLGlC
QUFBeUMsRUFBQXJxQixRQUFBa0osS0FBQXFoQixXQUNBaEMsYUFBQThCLEVBQUFycUIsUUFBQWtK
LEtBQUFxaEIsYUFHQTF5QyxFQUFBbXVDLFdBQUFxRSxFQUFBcnFCLFFBQUFzcUIsT0FDQUUsVUFB
QUgsRUFBQXJxQixRQUFBa0osS0FBQXFoQixXQUNBeEMsU0FBQXNDLEVBQUFycUIsUUFBQWtKLEtB
QUFxaEIsV0FDQS9GLFNBQUE2RixFQUFBcnFCLFFBQUFrSixLQUFBcWhCLGNqRjZyUk0sU0FBU3p5
QyxFQUFRRCxFQUFTSCxHa0ZsdFJoQyxZQWFBLFNBQUFtb0IsR0FBQUMsR0FBc0MsTUFBQUEsTUFB
QUMsV0FBQUQsR0FBdUNFLFFBQUFGLEdBRTdFLFFBQUEycUIsR0FBQTNnQyxFQUFBcWdCLEVBQUEr
YSxJQUNBLEVBQUF3RixFQUFBMXFCLFNBQUFsVyxLQUNBLEVBQUE2Z0MsRUFBQTNxQixTQUFBa2xC
LEVBQUEsU0FBQS9hLEVBQUEsaURBQUFyZ0IsRUFBQSxLQWZBalMsRUFBQWtvQixZQUFBLEVBQ0Fs
b0IsRUFBQW1vQixRQUFBeXFCLENBRUEsSUFBQUcsR0FBQWx6QyxFQUFBLElBRUFnekMsRUFBQTdx
QixFQUFBK3FCLEdBRUE1cEIsRUFBQXRwQixFQUFBLElBRUFpekMsRUFBQTlxQixFQUFBbUIsSWxG
Z3VSTSxTQUFTbHBCLEVBQVFELEVBQVNILEdBRS9CLFlBZ0JBLFNBQVNtb0IsR0FBdUJDLEdBQU8s
TUFBT0EsSUFBT0EsRUFBSUMsV0FBYUQsR0FBUUUsUUFBU0YsR0FFdkYsUUFBUzZULEdBQWdCQyxF
QUFVQyxHQUFlLEtBQU1ELFlBQW9CQyxJQUFnQixLQUFNLElBQUlqNUIsV0FBVSxxQ0FFaEgsUUFB
UzRvQyxHQUEyQmwwQixFQUFNclgsR0FBUSxJQUFLcVgsRUFBUSxLQUFNLElBQUltMEIsZ0JBQWUs
NERBQWdFLFFBQU94ckMsR0FBeUIsZ0JBQVRBLElBQXFDLGtCQUFUQSxHQUE4QnFYLEVBQVByWCxF
QUVsTyxRQUFTeXJDLEdBQVVDLEVBQVVDLEdBQWMsR0FBMEIsa0JBQWZBLElBQTRDLE9BQWZBLEVB
QXVCLEtBQU0sSUFBSWhwQyxXQUFVLGlFQUFvRWdwQyxHQUFlRCxHQUFTcHJDLFVBQVlELE9BQU82
K0IsT0FBT3lNLEdBQWNBLEVBQVdyckMsV0FBYXVOLGFBQWVnRSxNQUFPNjVCLEVBQVV2RCxZQUFZ
LEVBQU95RCxVQUFVLEVBQU14RCxjQUFjLEtBQWV1RCxJQUFZdHJDLE9BQU93ckMsZUFBaUJ4ckMs
T0FBT3dyQyxlQUFlSCxFQUFVQyxHQUFjRCxFQUFTSSxVQUFZSCxHQXBCamV0ckMsT0FBTzZuQyxl
QUFldG9DLEVBQVMsY0FDN0JpUyxPQUFPLEdBR1QsSUFBSStnQyxHQUFlLFdBQWMsUUFBU0MsR0FB
aUI3dUMsRUFBUXVULEdBQVMsSUFBSyxHQUFJblgsR0FBSSxFQUFHQSxFQUFJbVgsRUFBTWxWLE9B
QVFqQyxJQUFLLENBQUUsR0FBSTJuQyxHQUFheHdCLEVBQU1uWCxFQUFJMm5DLEdBQVdJLFdBQWFK
LEVBQVdJLGFBQWMsRUFBT0osRUFBV0ssY0FBZSxFQUFVLFNBQVdMLEtBQVlBLEVBQVc2RCxVQUFX
LEdBQU12ckMsT0FBTzZuQyxlQUFlbGtDLEVBQVErakMsRUFBV3pqQyxJQUFLeWpDLElBQWlCLE1B
QU8sVUFBVW5NLEVBQWFrWCxFQUFZQyxHQUFpSixNQUE5SEQsSUFBWUQsRUFBaUJqWCxFQUFZdDdC
LFVBQVd3eUMsR0FBaUJDLEdBQWFGLEVBQWlCalgsRUFBYW1YLEdBQXFCblgsTW1GbnZSamlCNlUs
RUFBQWh4QyxFQUFBLEluRnV2Ukt1ekMsRUFBVXByQixFQUF1QjZvQixHbUZ0dlJ0Q3dDLEVBQUF4
ekMsRUFBQSxJbkYwdlJLeXpDLEVBQWV0ckIsRUFBdUJxckIsR21GeHZSdEJFLEVuRmt3UkEsU0FB
VXpFLEdBRzVCLFFBQVN5RSxLQUNQLEdBQUl0RyxHQUVBdUcsRUFBT3pFLEVBQU8wRSxDQUVsQjNY
LEdBQWdCMzZCLEtBQU1veUMsRUFFdEIsS0FBSyxHQUFJRyxHQUFPbHhDLFVBQVVDLE9BQVE1QixF
QUFPb1gsTUFBTXk3QixHQUFPQyxFQUFPLEVBQUdBLEVBQU9ELEVBQU1DLElBQzNFOXlDLEVBQUs4
eUMsR0FBUW54QyxVQUFVbXhDLEVBR3pCLE9BQWVILEdBQVN6RSxFQUFRcEQsRUFBMkJ4cUMsTUFB
TzhyQyxFQUFPc0csRUFBY3JILFdBQWF6ckMsT0FBT216QyxlQUFlTCxJQUFnQm56QyxLQUFLYyxN
QUFNK3JDLEdBQU85ckMsTUFBTUMsT0FBT1AsS0FBaUJrdUMsRW1GdndSN0xDLE9BQ0UxK0IsS0FB
TXkrQixFQUFLcDNCLE1BQU1ySCxNQUFRLEluRnd3UnJCeStCLEVtRnJ3Uk44RSxhQUFlLFNBQUFw
eUMsR0FDYixHQUFNNk8sR0FBTzdPLEVBQUUyQyxPQUFPNk4sTUFBTTZoQyxNQUNaLE1BQVpyeUMs
RUFBRXN5QyxRQUNKaEYsRUFBS3AzQixNQUFNcThCLE9BQU8xakMsR0FDZHkrQixFQUFLcDNCLE1B
QU1zOEIsU0FDYmxGLEVBQUt5QixVQUFXbGdDLEtBQU0sT25Gd3dSdEJ5K0IsRW1GbndSTm1GLGFB
QWUsU0FBQXp5QyxHQUNic3RDLEVBQUt5QixVQUFXbGdDLEtBQU03TyxFQUFFMkMsT0FBTzZOLFNu
Rm93UjNCODhCLEVtRmp3Uk5vRixXQUFhLFNBQUExeUMsR0FDTnN0QyxFQUFLcDNCLE1BQU1zOEIs
U0FDZGxGLEVBQUtwM0IsTUFBTXE4QixPQUFPdnlDLEVBQUUyQyxPQUFPNk4sUW5GbXZSckJ3aEMs
RUFnQkpELEVBQVE3SCxFQUEyQm9ELEVBQU8wRSxHQW9CL0MsTUFqREE1SCxHQUFVMEgsRUFBZXpF
LEdBZ0N6QmtFLEVBQWFPLElBQ1g3dUMsSUFBSyxTQUNMdU4sTUFBTyxXbUZud1JSLE1BQ0VtaEMs
R0FBQWpyQixRQUFBdGdCLGNBQUEsU0FBT3VzQyxXQUNMLEVBQUFkLEVBQUFuckIsVUFDRWtzQixL
QUFNbHpDLEtBQUt3VyxNQUFNMjhCLFFBQ2pCQyxXQUFZcHpDLEtBQUt3VyxNQUFNczhCLFVBRXpC
bnBDLEtBQUssT0FDTDBwQyxZQUFhcnpDLEtBQUt3VyxNQUFNNjhCLFlBQ3hCQyxVQUFVLE9BQ1Z4
aUMsTUFBTzlRLEtBQUs2dEMsTUFBTTErQixLQUNsQm9rQyxPQUFRdnpDLEtBQUtnekMsV0FDYjdq
QixTQUFVbnZCLEtBQUsreUMsYUFDZlMsVUFBV3h6QyxLQUFLMHlDLG1CbkZzd1JkTixHQUNQMUMs
RUFBT2w2QixVbUZyelJXNDhCLEdBQ1pyaUIsV0FDTDhpQixPQUFRbkQsRUFBQS81QixVQUFVdWEs
S0FBS3FoQixXQUN2QnBpQyxLQUFNdWdDLEVBQUEvNUIsVUFBVTRQLE9BQ2hCOHRCLFlBQWEzRCxF
QUFBLzVCLFVBQVU0UCxPQUN2QjR0QixRQUFTekQsRUFBQS81QixVQUFVODlCLEtBQ25CWCxRQUFT
cEQsRUFBQS81QixVQUFVODlCLE1uRnd6UnRCNTBDLEVBQVFtb0IsUW1GOXpSWW9yQixHbkZrMFJm
LFNBQVN0ekMsRUFBUUQsR0FFdEIsWUFFQVMsUUFBTzZuQyxlQUFldG9DLEVBQVMsY0FDN0JpUyxP
QUFPLEdvRjEwUkc0aUMsWUFBVyxXQUNYQyxjQUFjLGNBQ2RDLFlBQVksWUFDWkMsZ0JBQWdCLGdC
QUNoQkMsZUFBZSxlQUNmQyxrQkFBa0IsbUJwRmcxUnpCLFNBQVNqMUMsRUFBUUQsR0FFdEIsWUFF
QVMsUUFBTzZuQyxlQUFldG9DLEVBQVMsY0FDN0JpUyxPQUFPLEdxRjExUkdrakMsWUFBVyxXQUNY
QyxpQkFBaUIsaUJBQ2pCQyxjQUFjLGVyRmcyUnJCLFNBQVNwMUMsRUFBUUQsR3NGdjFSdkIsUUFB
QXMxQyxLQUNBLFNBQUF4ekMsT0FBQSxtQ0FFQSxRQUFBeXpDLEtBQ0EsU0FBQXp6QyxPQUFBLHFD
QXNCQSxRQUFBMHpDLEdBQUFDLEdBQ0EsR0FBQUMsSUFBQUMsV0FFQSxNQUFBQSxZQUFBRixFQUFB
LEVBR0EsS0FBQUMsSUFBQUosSUFBQUksSUFBQUMsV0FFQSxNQURBRCxHQUFBQyxXQUNBQSxXQUFB
RixFQUFBLEVBRUEsS0FFQSxNQUFBQyxHQUFBRCxFQUFBLEdBQ0ssTUFBQWgwQyxHQUNMLElBRUEs
TUFBQWkwQyxHQUFBdDFDLEtBQUEsS0FBQXExQyxFQUFBLEdBQ1MsTUFBQWgwQyxHQUVULE1BQUFp
MEMsR0FBQXQxQyxLQUFBZSxLQUFBczBDLEVBQUEsS0FNQSxRQUFBRyxHQUFBQyxHQUNBLEdBQUFD
LElBQUFDLGFBRUEsTUFBQUEsY0FBQUYsRUFHQSxLQUFBQyxJQUFBUCxJQUFBTyxJQUFBQyxhQUVB
LE1BREFELEdBQUFDLGFBQ0FBLGFBQUFGLEVBRUEsS0FFQSxNQUFBQyxHQUFBRCxHQUNLLE1BQUFw
MEMsR0FDTCxJQUVBLE1BQUFxMEMsR0FBQTExQyxLQUFBLEtBQUF5MUM7Q0FDUyxNQUFBcDBDLEdB
R1QsTUFBQXEwQyxHQUFBMTFDLEtBQUFlLEtBQUEwMEMsS0FZQSxRQUFBRyxLQUNBQyxHQUFBQyxJ
QUdBRCxHQUFBLEVBQ0FDLEVBQUF6ekMsT0FDQTBLLEVBQUErb0MsRUFBQTkwQyxPQUFBK0wsR0FF
QWdwQyxLQUVBaHBDLEVBQUExSyxRQUNBMnpDLEtBSUEsUUFBQUEsS0FDQSxJQUFBSCxFQUFBLENB
R0EsR0FBQUksR0FBQWIsRUFBQVEsRUFDQUMsSUFBQSxDQUdBLEtBREEsR0FBQTlyQyxHQUFBZ0Qs
RUFBQTFLLE9BQ0EwSCxHQUFBLENBR0EsSUFGQStyQyxFQUFBL29DLEVBQ0FBLE9BQ0FncEMsRUFB
QWhzQyxHQUNBK3JDLEdBQ0FBLEVBQUFDLEdBQUExSixLQUdBMEosTUFDQWhzQyxFQUFBZ0QsRUFB
QTFLLE9BRUF5ekMsRUFBQSxLQUNBRCxHQUFBLEVBQ0FMLEVBQUFTLElBaUJBLFFBQUFDLEdBQUFi
LEVBQUFjLEdBQ0FwMUMsS0FBQXMwQyxNQUNBdDBDLEtBQUFvMUMsUUFZQSxRQUFBbkssTUFoS0Es
R0FPQXNKLEdBQ0FJLEVBUkFVLEVBQUF2MkMsRUFBQUQsWUFnQkEsV0FDQSxJQUVBMDFDLEVBREEs
a0JBQUFDLFlBQ0FBLFdBRUFMLEVBRUssTUFBQTd6QyxHQUNMaTBDLEVBQUFKLEVBRUEsSUFFQVEs
RUFEQSxrQkFBQUMsY0FDQUEsYUFFQVIsRUFFSyxNQUFBOXpDLEdBQ0xxMEMsRUFBQVAsS0F1REEs
SUFFQVcsR0FGQS9vQyxLQUNBOG9DLEdBQUEsRUFFQUUsSUF5Q0FLLEdBQUFDLFNBQUEsU0FBQWhC
LEdBQ0EsR0FBQTUwQyxHQUFBLEdBQUFvWCxPQUFBelYsVUFBQUMsT0FBQSxFQUNBLElBQUFELFVB
QUFDLE9BQUEsRUFDQSxPQUFBakMsR0FBQSxFQUF1QkEsRUFBQWdDLFVBQUFDLE9BQXNCakMsSUFD
N0NLLEVBQUFMLEVBQUEsR0FBQWdDLFVBQUFoQyxFQUdBMk0sR0FBQXZHLEtBQUEsR0FBQTB2QyxH
QUFBYixFQUFBNTBDLElBQ0EsSUFBQXNNLEVBQUExSyxRQUFBd3pDLEdBQ0FULEVBQUFZLElBU0FF
LEVBQUE1MUMsVUFBQStyQyxJQUFBLFdBQ0F0ckMsS0FBQXMwQyxJQUFBdjBDLE1BQUEsS0FBQUMs
S0FBQW8xQyxRQUVBQyxFQUFBRSxNQUFBLFVBQ0FGLEVBQUFHLFNBQUEsRUFDQUgsRUFBQUksT0FD
QUosRUFBQUssUUFDQUwsRUFBQXYvQixRQUFBLEdBQ0F1L0IsRUFBQU0sWUFJQU4sRUFBQU8sR0FB
QTNLLEVBQ0FvSyxFQUFBUSxZQUFBNUssRUFDQW9LLEVBQUFTLEtBQUE3SyxFQUNBb0ssRUFBQVUs
SUFBQTlLLEVBQ0FvSyxFQUFBVyxlQUFBL0ssRUFDQW9LLEVBQUFZLG1CQUFBaEwsRUFDQW9LLEVB
QUFhLEtBQUFqTCxFQUVBb0ssRUFBQWMsUUFBQSxTQUFBcjFDLEdBQ0EsU0FBQUgsT0FBQSxxQ0FH
QTAwQyxFQUFBZSxJQUFBLFdBQTJCLFdBQzNCZixFQUFBZ0IsTUFBQSxTQUFBQyxHQUNBLFNBQUEz
MUMsT0FBQSxtQ0FFQTAwQyxFQUFBa0IsTUFBQSxXQUE0QixXdEZ5MlJ0QixTQUFTejNDLEVBQVFE
LEVBQVNILEd1RjVoU2hDLFlBSUEsU0FBQXVzQyxNQXFCQSxRQUFBdUwsR0FBQTF2QixHQUNBLElB
Q0EsTUFBQUEsR0FBQTJ2QixLQUNHLE1BQUFDLEdBRUgsTUFEQUMsR0FBQUQsRUFDQUUsR0FJQSxR
QUFBQyxHQUFBajNDLEVBQUFDLEdBQ0EsSUFDQSxNQUFBRCxHQUFBQyxHQUNHLE1BQUE2MkMsR0FF
SCxNQURBQyxHQUFBRCxFQUNBRSxHQUdBLFFBQUFFLEdBQUFsM0MsRUFBQUMsRUFBQUMsR0FDQSxJ
QUNBRixFQUFBQyxFQUFBQyxHQUNHLE1BQUE0MkMsR0FFSCxNQURBQyxHQUFBRCxFQUNBRSxHQU1B
LFFBQUFHLEdBQUFuM0MsR0FDQSxtQkFBQUksTUFDQSxTQUFBNEIsV0FBQSx1Q0FFQSxzQkFBQWhD
LEdBQ0EsU0FBQWdDLFdBQUEsaUJBRUE1QixNQUFBZzNDLElBQUEsRUFDQWgzQyxLQUFBaTNDLElB
QUEsRUFDQWozQyxLQUFBazNDLElBQUEsS0FDQWwzQyxLQUFBbTNDLElBQUEsS0FDQXYzQyxJQUFB
cXJDLEdBQ0FtTSxFQUFBeDNDLEVBQUFJLE1BZUEsUUFBQXEzQyxHQUFBL2dDLEVBQUFnaEMsRUFB
QUMsR0FDQSxVQUFBamhDLEdBQUF4SixZQUFBLFNBQUEwcUMsRUFBQUMsR0FDQSxHQUFBbHFCLEdB
QUEsR0FBQXdwQixHQUFBOUwsRUFDQTFkLEdBQUFrcEIsS0FBQWUsRUFBQUMsR0FDQTkwQixFQUFB
ck0sRUFBQSxHQUFBb2hDLEdBQUFKLEVBQUFDLEVBQUFocUIsTUFHQSxRQUFBNUssR0FBQXJNLEVB
QUFxaEMsR0FDQSxTQUFBcmhDLEVBQUEyZ0MsS0FDQTNnQyxJQUFBNGdDLEdBS0EsT0FIQUgsR0FB
QWEsS0FDQWIsRUFBQWEsSUFBQXRoQyxHQUVBLElBQUFBLEVBQUEyZ0MsSUFDQSxJQUFBM2dDLEVB
QUEwZ0MsS0FDQTFnQyxFQUFBMGdDLElBQUEsT0FDQTFnQyxFQUFBNmdDLElBQUFRLElBR0EsSUFB
QXJoQyxFQUFBMGdDLEtBQ0ExZ0MsRUFBQTBnQyxJQUFBLE9BQ0ExZ0MsRUFBQTZnQyxLQUFBN2dD
LEVBQUE2Z0MsSUFBQVEsU0FHQXJoQyxHQUFBNmdDLElBQUExeEMsS0FBQWt5QyxPQUdBRSxHQUFB
dmhDLEVBQUFxaEMsR0FHQSxRQUFBRSxHQUFBdmhDLEVBQUFxaEMsR0FDQWx0QyxFQUFBLFdBQ0Es
R0FBQXU3QixHQUFBLElBQUExdkIsRUFBQTJnQyxJQUFBVSxFQUFBTCxZQUFBSyxFQUFBSixVQUNB
LFdBQUF2UixFQU1BLFlBTEEsSUFBQTF2QixFQUFBMmdDLElBQ0FPLEVBQUFHLEVBQUFHLFFBQUF4
aEMsRUFBQTRnQyxLQUVBTyxFQUFBRSxFQUFBRyxRQUFBeGhDLEVBQUE0Z0MsS0FJQSxJQUFBbHlC
LEdBQUE2eEIsRUFBQTdRLEVBQUExdkIsRUFBQTRnQyxJQUNBbHlCLEtBQUE0eEIsRUFDQWEsRUFB
QUUsRUFBQUcsUUFBQW5CLEdBRUFhLEVBQUFHLEVBQUFHLFFBQUE5eUIsS0FJQSxRQUFBd3lCLEdB
QUFsaEMsRUFBQXloQyxHQUVBLEdBQUFBLElBQUF6aEMsRUFDQSxNQUFBbWhDLEdBQ0FuaEMsRUFD
QSxHQUFBMVUsV0FBQSw2Q0FHQSxJQUNBbTJDLElBQ0EsZ0JBQUFBLElBQUEsa0JBQUFBLElBQ0Es
Q0FDQSxHQUFBdEIsR0FBQUQsRUFBQXVCLEVBQ0EsSUFBQXRCLElBQUFHLEVBQ0EsTUFBQWEsR0FB
QW5oQyxFQUFBcWdDLEVBRUEsSUFDQUYsSUFBQW5nQyxFQUFBbWdDLE1BQ0FzQixZQUFBaEIsR0FL
QSxNQUhBemdDLEdBQUEyZ0MsSUFBQSxFQUNBM2dDLEVBQUE0Z0MsSUFBQWEsTUFDQUMsR0FBQTFo
QyxFQUVLLHNCQUFBbWdDLEdBRUwsV0FEQVcsR0FBQVgsRUFBQXgvQixLQUFBOGdDLEdBQUF6aEMs
R0FJQUEsRUFBQTJnQyxJQUFBLEVBQ0EzZ0MsRUFBQTRnQyxJQUFBYSxFQUNBQyxFQUFBMWhDLEdB
R0EsUUFBQW1oQyxHQUFBbmhDLEVBQUF5aEMsR0FDQXpoQyxFQUFBMmdDLElBQUEsRUFDQTNnQyxF
QUFBNGdDLElBQUFhLEVBQ0FoQixFQUFBa0IsS0FDQWxCLEVBQUFrQixJQUFBM2hDLEVBQUF5aEMs
R0FFQUMsRUFBQTFoQyxHQUVBLFFBQUEwaEMsR0FBQTFoQyxHQUtBLEdBSkEsSUFBQUEsRUFBQTBn
QyxNQUNBcjBCLEVBQUFyTSxJQUFBNmdDLEtBQ0E3Z0MsRUFBQTZnQyxJQUFBLE1BRUEsSUFBQTdn
QyxFQUFBMGdDLElBQUEsQ0FDQSxPQUFBMzNDLEdBQUEsRUFBbUJBLEVBQUFpWCxFQUFBNmdDLElB
QUE3MUMsT0FBcUJqQyxJQUN4Q3NqQixFQUFBck0sSUFBQTZnQyxJQUFBOTNDLEdBRUFpWCxHQUFB
NmdDLElBQUEsTUFJQSxRQUFBTyxHQUFBSixFQUFBQyxFQUFBTyxHQUNBOTNDLEtBQUFzM0MsWUFB
QSxrQkFBQUEsS0FBQSxLQUNBdDNDLEtBQUF1M0MsV0FBQSxrQkFBQUEsS0FBQSxLQUNBdjNDLEtB
QUE4M0MsVUFTQSxRQUFBVixHQUFBeDNDLEVBQUFrNEMsR0FDQSxHQUFBM04sSUFBQSxFQUNBNWMs
RUFBQXVwQixFQUFBbDNDLEVBQUEsU0FBQWtSLEdBQ0FxNUIsSUFDQUEsR0FBQSxFQUNBcU4sRUFB
QU0sRUFBQWhuQyxLQUNHLFNBQUFvbkMsR0FDSC9OLElBQ0FBLEdBQUEsRUFDQXNOLEVBQUFLLEVB
QUFJLEtBRUEvTixJQUFBNWMsSUFBQXFwQixJQUNBek0sR0FBQSxFQUNBc04sRUFBQUssRUFBQW5C
LElBaE5BLEdBQUFsc0MsR0FBQS9MLEVBQUEsS0FxQkFpNEMsRUFBQSxLQUNBQyxJQTJCQTkzQyxH
QUFBRCxRQUFBazRDLEVBZ0JBQSxFQUFBYSxJQUFBLEtBQ0FiLEVBQUFrQixJQUFBLEtBQ0FsQixF
QUFBb0IsSUFBQWxOLEVBRUE4TCxFQUFBeDNDLFVBQUFrM0MsS0FBQSxTQUFBYSxFQUFBQyxHQUNB
LEdBQUF2M0MsS0FBQThNLGNBQUFpcUMsRUFDQSxNQUFBTSxHQUFBcjNDLEtBQUFzM0MsRUFBQUMs
RUFFQSxJQUFBaHFCLEdBQUEsR0FBQXdwQixHQUFBOUwsRUFFQSxPQURBdG9CLEdBQUEzaUIsS0FB
QSxHQUFBMDNDLEdBQUFKLEVBQUFDLEVBQUFocUIsSUFDQUEsSXZGMHFTTSxTQUFTenVCLEVBQVFE
LEVBQVNILEd3Rjd1U2hDLFlBZUEsU0FBQTA1QyxHQUFBNWhDLEVBQUE5TCxFQUFBMnRDLEdBQ0Fy
NEMsS0FBQXdXLFFBQ0F4VyxLQUFBMEssVUFDQTFLLEtBQUFzNEMsS0FBQTE3QixFQUdBNWMsS0FB
QXE0QyxXQUFBRSxFQXlGQSxRQUFBQyxHQUFBaGlDLEVBQUE5TCxFQUFBMnRDLEdBRUFyNEMsS0FB
QXdXLFFBQ0F4VyxLQUFBMEssVUFDQTFLLEtBQUFzNEMsS0FBQTE3QixFQUdBNWMsS0FBQXE0QyxX
QUFBRSxFQUdBLFFBQUFFLE1BdEhBLEdBQUFuekMsR0FBQTVHLEVBQUEsSUFDQW1NLEVBQUFuTSxF
QUFBLEdBRUE2NUMsRUFBQTc1QyxFQUFBLElBR0FrZSxHQURBbGUsRUFBQSxJQUNBQSxFQUFBLElB
Q0FBLEdBQUEsR0FDQUEsRUFBQSxJQWNBMDVDLEdBQUE3NEMsVUFBQWlrQyxvQkEyQkE0VSxFQUFB
NzRDLFVBQUE4dkMsU0FBQSxTQUFBbGQsRUFBQTFwQixHQUNBLGdCQUFBMHBCLElBQUEsa0JBQUFB
LElBQUEsTUFBQUEsRUFBQTdzQixFQUFBLGFBQ0F0RixLQUFBcTRDLFFBQUFubUIsZ0JBQUFseUIs
S0FBQW15QixHQUNBMXBCLEdBQ0F6SSxLQUFBcTRDLFFBQUE1bUIsZ0JBQUF6eEIsS0FBQXlJLEVB
QUEsYUFrQkEydkMsRUFBQTc0QyxVQUFBaXZDLFlBQUEsU0FBQS9sQyxHQUNBekksS0FBQXE0QyxR
QUFBem1CLG1CQUFBNXhCLE1BQ0F5SSxHQUNBekksS0FBQXE0QyxRQUFBNW1CLGdCQUFBenhCLEtB
QUF5SSxFQUFBLGVBNkNBZ3dDLEdBQUFsNUMsVUFBQTY0QyxFQUFBNzRDLFVBQ0FpNUMsRUFBQWo1
QyxVQUFBLEdBQUFrNUMsR0FDQUQsRUFBQWo1QyxVQUFBdU4sWUFBQTByQyxFQUVBM3RDLEVBQUEy
dEMsRUFBQWo1QyxVQUFBNjRDLEVBQUE3NEMsV0FDQWk1QyxFQUFBajVDLFVBQUFtNUMsc0JBQUEs
RUFFQTU1QyxFQUFBRCxTQUNBMlcsVUFBQTRpQyxFQUNBM2lDLGNBQUEraUMsSXhGOHZTTSxTQUFT
MTVDLEVBQVFELEVBQVNILEd5Ri8zU2hDLFlBU0EsU0FBQWk2QyxHQUFBLzRDLEdBRUEsR0FBQTJw
QixHQUFBRyxTQUFBbnFCLFVBQUE4RyxTQUNBN0csRUFBQUYsT0FBQUMsVUFBQUMsZUFDQW81QyxF
QUFBamQsT0FBQSxJQUFBcFMsRUFFQXRxQixLQUFBTyxHQUVBcUIsUUFBQSxzQkFBNkIsUUFFN0JB
LFFBQUEsc0VBQ0EsS0FDQSxHQUFBcUMsR0FBQXFtQixFQUFBdHFCLEtBQUFXLEVBQ0EsT0FBQWc1
QyxHQUFBcG9DLEtBQUF0TixHQUNHLE1BQUFMLEdBQ0gsVUE4RkEsUUFBQWcyQyxHQUFBOTVDLEdB
Q0EsR0FBQSs1QyxHQUFBQyxFQUFBaDZDLEVBQ0EsSUFBQSs1QyxFQUFBLENBQ0EsR0FBQUUsR0FB
QUYsRUFBQUUsUUFFQUMsR0FBQWw2QyxHQUNBaTZDLEVBQUF0MkMsUUFBQW0yQyxJQUlBLFFBQUFL
LEdBQUFwNEMsRUFBQW9DLEVBQUFpMkMsR0FDQSxtQkFBQXI0QyxHQUFBLFlBQUFvQyxFQUFBLFFB
QUFBLEVBQUFrMkMsU0FBQXY0QyxRQUFBLG9CQUFBcUMsRUFBQW0yQyxXQUFBLElBQUFGLEVBQUEs
Z0JBQUFBLEVBQUEsUUFHQSxRQUFBbk4sR0FBQXYxQixHQUNBLGFBQUFBLEVBQ0EsU0FDRyxnQkFB
QUEsSUFBQSxnQkFBQUEsR0FDSCxRQUNHLGdCQUFBQSxHQUFBOU0sS0FDSDhNLEVBQUE5TSxLQUVB
OE0sRUFBQTlNLEtBQUF3bkIsYUFBQTFhLEVBQUE5TSxLQUFBN0ksTUFBQSxVQUlBLFFBQUF3NEMs
R0FBQXY2QyxHQUNBLEdBR0FvNkMsR0FIQXI0QyxFQUFBeTRDLEVBQUF2TixlQUFBanRDLEdBQ0Ew
WCxFQUFBOGlDLEVBQUFDLFdBQUF6NkMsR0FDQTA2QyxFQUFBRixFQUFBRyxXQUFBMzZDLEVBTUEs
T0FKQTA2QyxLQUNBTixFQUFBSSxFQUFBdk4sZUFBQXlOLElBR0FQLEVBQUFwNEMsRUFBQTJWLEtB
QUFjLFFBQUE0aEMsR0F2SkEsR0FzQ0FRLEdBQ0FaLEVBQ0FFLEVBQ0FXLEVBQ0FDLEVBQ0FDLEVB
Q0FDLEVBNUNBejBDLEVBQUE1RyxFQUFBLElBRUFpUSxFQUFBalEsRUFBQSxJQXdCQXM3QyxHQXRC
QXQ3QyxFQUFBLEdBQ0FBLEVBQUEsR0F1QkEsa0JBQUFvWSxPQUFBM1QsTUFFQSxrQkFBQTgyQyxN
QUFBdEIsRUFBQXNCLE1BRUEsTUFBQUEsSUFBQTE2QyxXQUFBLGtCQUFBMDZDLEtBQUExNkMsVUFB
QXFELE1BQUErMUMsRUFBQXNCLElBQUExNkMsVUFBQXFELE9BRUEsa0JBQUFzM0MsTUFBQXZCLEVB
QUF1QixNQUVBLE1BQUFBLElBQUEzNkMsV0FBQSxrQkFBQTI2QyxLQUFBMzZDLFVBQUFxRCxNQUFB
KzFDLEVBQUF1QixJQUFBMzZDLFVBQUFxRCxNQVVBLElBQUFvM0MsRUFBQSxDQUNBLEdBQUFHLEdB
QUEsR0FBQUYsS0FDQUcsRUFBQSxHQUFBRixJQUVBUCxHQUFBLFNBQUE1NkMsRUFBQSs1QyxHQUNB
cUIsRUFBQWwrQixJQUFBbGQsRUFBQSs1QyxJQUVBQyxFQUFBLFNBQUFoNkMsR0FDQSxNQUFBbzdD
LEdBQUFwK0IsSUFBQWhkLElBRUFrNkMsRUFBQSxTQUFBbDZDLEdBQ0FvN0MsRUFBQSxPQUFBcDdD
LElBRUE2NkMsRUFBQSxXQUNBLE1BQUE5aUMsT0FBQTNULEtBQUFnM0MsRUFBQXYzQyxTQUdBaTND
LEVBQUEsU0FBQTk2QyxHQUNBcTdDLEVBQUFDLElBQUF0N0MsSUFFQSs2QyxFQUFBLFNBQUEvNkMs
R0FDQXE3QyxFQUFBLE9BQUFyN0MsSUFFQWc3QyxFQUFBLFdBQ0EsTUFBQWpqQyxPQUFBM1QsS0FB
QWkzQyxFQUFBeDNDLGFBRUMsQ0FDRCxHQUFBMDNDLE1BQ0FDLEtBSUFDLEVBQUEsU0FBQXo3QyxH
QUNBLFVBQUFBLEdBRUEwN0MsRUFBQSxTQUFBbDNDLEdBQ0EsTUFBQW0zQyxVQUFBbjNDLEVBQUFv
M0MsT0FBQSxPQUdBaEIsR0FBQSxTQUFBNTZDLEVBQUErNUMsR0FDQSxHQUFBdjFDLEdBQUFpM0Ms
RUFBQXo3QyxFQUNBdTdDLEdBQUEvMkMsR0FBQXUxQyxHQUVBQyxFQUFBLFNBQUFoNkMsR0FDQSxH
QUFBd0UsR0FBQWkzQyxFQUFBejdDLEVBQ0EsT0FBQXU3QyxHQUFBLzJDLElBRUEwMUMsRUFBQSxT
QUFBbDZDLEdBQ0EsR0FBQXdFLEdBQUFpM0MsRUFBQXo3QyxTQUNBdTdDLEdBQUEvMkMsSUFFQXEy
QyxFQUFBLFdBQ0EsTUFBQXQ2QyxRQUFBc0QsS0FBQTAzQyxHQUFBajRDLElBQUFvNEMsSUFHQVos
RUFBQSxTQUFBOTZDLEdBQ0EsR0FBQXdFLEdBQUFpM0MsRUFBQXo3QyxFQUNBdzdDLEdBQUFoM0Ms
SUFBQSxHQUVBdTJDLEVBQUEsU0FBQS82QyxHQUNBLEdBQUF3RSxHQUFBaTNDLEVBQUF6N0MsU0FD
QXc3QyxHQUFBaDNDLElBRUF3MkMsRUFBQSxXQUNBLE1BQUF6NkMsUUFBQXNELEtBQUEyM0MsR0FB
QWw0QyxJQUFBbzRDLElBSUEsR0FBQUcsTUF3Q0FyQixHQUNBc0IsY0FBQSxTQUFBOTdDLEVBQUEr
N0MsR0FDQSxHQUFBaEMsR0FBQUMsRUFBQWg2QyxFQUNBKzVDLEdBQUEsT0FBQXh6QyxFQUFBLE9B
Q0F3ekMsRUFBQUUsU0FBQThCLENBRUEsUUFBQXo3QyxHQUFBLEVBQW1CQSxFQUFBeTdDLEVBQUF4
NUMsT0FBeUJqQyxJQUFBLENBQzVDLEdBQUEwN0MsR0FBQUQsRUFBQXo3QyxHQUNBMjdDLEVBQUFq
QyxFQUFBZ0MsRUFDQUMsR0FBQSxPQUFBMTFDLEVBQUEsT0FDQSxNQUFBMDFDLEVBQUFoQyxVQUFB
LGdCQUFBZ0MsR0FBQXZrQyxTQUFBLE1BQUF1a0MsRUFBQXZrQyxRQUFBblIsRUFBQSxjQUNBMDFD
LEVBQUF4cEIsVUFBQSxPQUFBbHNCLEVBQUEsTUFDQSxNQUFBMDFDLEVBQUFDLFdBQ0FELEVBQUFD
LFNBQUFsOEMsR0FLQWk4QyxFQUFBQyxXQUFBbDhDLEVBQUF1RyxFQUFBLE1BQUF5MUMsRUFBQUMs
RUFBQUMsU0FBQWw4QyxHQUFBLFNBR0FtOEMsdUJBQUEsU0FBQW44QyxFQUFBMFgsRUFBQXdrQyxH
QUNBLEdBQUFuQyxJQUNBcmlDLFVBQ0F3a0MsV0FDQTlyQyxLQUFBLEtBQ0E2cEMsWUFDQXhuQixX
QUFBLEVBQ0EycEIsWUFBQSxFQUVBeEIsR0FBQTU2QyxFQUFBKzVDLElBRUFzQyx3QkFBQSxTQUFB
cjhDLEVBQUEwWCxHQUNBLEdBQUFxaUMsR0FBQUMsRUFBQWg2QyxFQUNBKzVDLE1BQUF0bkIsWUFL
QXNuQixFQUFBcmlDLFlBRUE0a0MsaUJBQUEsU0FBQXQ4QyxHQUNBLEdBQUErNUMsR0FBQUMsRUFB
QWg2QyxFQUNBKzVDLEdBQUEsT0FBQXh6QyxFQUFBLE9BQ0F3ekMsRUFBQXRuQixXQUFBLENBQ0Es
SUFBQThwQixHQUFBLElBQUF4QyxFQUFBbUMsUUFDQUssSUFDQXpCLEVBQUE5NkMsSUFHQXc4Qyxr
QkFBQSxTQUFBeDhDLEdBQ0EsR0FBQSs1QyxHQUFBQyxFQUFBaDZDLEVBQ0ErNUMsTUFBQXRuQixX
QUtBc25CLEVBQUFxQyxlQUVBSyxtQkFBQSxTQUFBejhDLEdBQ0EsR0FBQSs1QyxHQUFBQyxFQUFB
aDZDLEVBQ0EsSUFBQSs1QyxFQUFBLENBTUFBLEVBQUF0bkIsV0FBQSxDQUNBLElBQUE4cEIsR0FB
QSxJQUFBeEMsRUFBQW1DLFFBQ0FLLElBQ0F4QixFQUFBLzZDLEdBR0E2N0MsRUFBQW4xQyxLQUFB
MUcsSUFFQTA4Qyx5QkFBQSxXQUNBLElBQUFsQyxFQUFBbUMsZ0JBQUEsQ0FLQSxPQUFBcjhDLEdB
QUEsRUFBbUJBLEVBQUF1N0MsRUFBQXQ1QyxPQUF5QmpDLElBQUEsQ0FDNUMsR0FBQU4sR0FBQTY3
QyxFQUFBdjdDLEVBQ0F3NUMsR0FBQTk1QyxHQUVBNjdDLEVBQUF0NUMsT0FBQSxJQUVBa3dCLFVB
QUEsU0FBQXp5QixHQUNBLEdBQUErNUMsR0FBQUMsRUFBQWg2QyxFQUNBLFNBQUErNUMsS0FBQXRu
QixXQUVBbXFCLHdCQUFBLFNBQUFDLEdBQ0EsR0FBQS9ULEdBQUEsRUFDQSxJQUFBK1QsRUFBQSxD
QUNBLEdBQUE5NkMsR0FBQWtyQyxFQUFBNFAsR0FDQXJsQyxFQUFBcWxDLEVBQUFqbEMsTUFDQWt4
QixJQUFBcVIsRUFBQXA0QyxFQUFBODZDLEVBQUFya0MsUUFBQWhCLEtBQUExTSxXQUdBLEdBQUFn
eUMsR0FBQWx0QyxFQUFBQyxRQUNBN1AsRUFBQTg4QyxLQUFBQyxRQUdBLE9BREFqVSxJQUFBMFIs
RUFBQXdDLHFCQUFBaDlDLElBR0FnOUMscUJBQUEsU0FBQWg5QyxHQUVBLElBREEsR0FBQThvQyxH
QUFBLEdBQ0E5b0MsR0FDQThvQyxHQUFBeVIsRUFBQXY2QyxHQUNBQSxFQUFBdzZDLEVBQUF5QyxZ
QUFBajlDLEVBRUEsT0FBQThvQyxJQUVBb1UsWUFBQSxTQUFBbDlDLEdBQ0EsR0FBQSs1QyxHQUFB
QyxFQUFBaDZDLEVBQ0EsT0FBQSs1QyxLQUFBRSxhQUVBaE4sZUFBQSxTQUFBanRDLEdBQ0EsR0FB
QTBYLEdBQUE4aUMsRUFBQUMsV0FBQXo2QyxFQUNBLE9BQUEwWCxHQUdBdTFCLEVBQUF2MUIsR0FG
QSxNQUlBK2lDLFdBQUEsU0FBQXo2QyxHQUNBLEdBQUErNUMsR0FBQUMsRUFBQWg2QyxFQUNBLE9B
QUErNUMsS0FBQXJpQyxRQUFBLE1BRUFpakMsV0FBQSxTQUFBMzZDLEdBQ0EsR0FBQTBYLEdBQUE4
aUMsRUFBQUMsV0FBQXo2QyxFQUNBLE9BQUEwWCxNQUFBRSxPQUdBRixFQUFBRSxPQUFBbWxDLFNB
RkEsTUFJQUUsWUFBQSxTQUFBajlDLEdBQ0EsR0FBQSs1QyxHQUFBQyxFQUFBaDZDLEVBQ0EsT0FB
QSs1QyxLQUFBbUMsU0FBQSxNQUVBaUIsVUFBQSxTQUFBbjlDLEdBQ0EsR0FBQSs1QyxHQUFBQyxF
QUFBaDZDLEdBQ0EwWCxFQUFBcWlDLElBQUFyaUMsUUFBQSxLQUNBdlQsRUFBQSxNQUFBdVQsSUFB
QWMsUUFBQSxJQUNBLE9BQUFyVSxJQUVBaTVDLFFBQUEsU0FBQXA5QyxHQUNBLEdBQUEwWCxHQUFB
OGlDLEVBQUFDLFdBQUF6NkMsRUFDQSx1QkFBQTBYLEdBQ0FBLEVBQ0ssZ0JBQUFBLEdBQ0wsR0FB
QUEsRUFFQSxNQUdBMmxDLGVBQUEsU0FBQXI5QyxHQUNBLEdBQUErNUMsR0FBQUMsRUFBQWg2QyxF
QUNBLE9BQUErNUMsS0FBQXFDLFlBQUEsR0FJQXBCLGFBQ0FzQyxpQkFBQXpDLEVBRUEwQyw0QkFB
QSxTQUFBQyxFQUFBQyxHQUNBLHFCQUFBMXlDLFNBQUEyeUMsV0FBQSxDQUlBLEdBQUFDLE1BQ0Fi
LEVBQUFsdEMsRUFBQUMsUUFDQTdQLEVBQUE4OEMsS0FBQUMsUUFFQSxLQVNBLElBUkFTLEdBQ0FH
LEVBQUFqM0MsTUFDQTNFLEtBQUEvQixFQUFBdzZDLEVBQUF2TixlQUFBanRDLEdBQUEsS0FDQXE2
QyxTQUFBb0QsSUFBQXBELFNBQUEsS0FDQUMsV0FBQW1ELElBQUFuRCxXQUFBLE9BSUF0NkMsR0FB
QSxDQUNBLEdBQUEwWCxHQUFBOGlDLEVBQUFDLFdBQUF6NkMsR0FDQWs4QyxFQUFBMUIsRUFBQXlD
LFlBQUFqOUMsR0FDQTA2QyxFQUFBRixFQUFBRyxXQUFBMzZDLEdBQ0FvNkMsRUFBQU0sRUFBQUYs
RUFBQXZOLGVBQUF5TixHQUFBLEtBQ0F2MkMsRUFBQXVULEtBQUFjLE9BQ0FtbEMsR0FBQWozQyxN
QUNBM0UsS0FBQXE0QyxFQUNBQyxTQUFBbDJDLElBQUFrMkMsU0FBQSxLQUNBQyxXQUFBbjJDLElB
QUFtMkMsV0FBQSxPQUVBdDZDLEVBQUFrOEMsR0FFSyxNQUFBcDRDLElBS0xpSCxRQUFBMnlDLFdB
QUFDLEtBRUFDLDJCQUFBLFdBQ0Esa0JBQUE3eUMsU0FBQTh5QyxlQUdBOXlDLFFBQUE4eUMsaUJB
SUE5OUMsR0FBQUQsUUFBQTA2QyxHekZnNVNNLFNBQVN6NkMsRUFBUUQsRzBGOXZUdkIsWUFLQSxJ
QUFBcVgsR0FBQSxrQkFBQWlmLGdCQUFBLEtBQUFBLE9BQUEsMkJBRUFyMkIsR0FBQUQsUUFBQXFY
LEcxRit3VE0sU0FBU3BYLEVBQVFELEVBQVNILEcyRnZ4VGhDLFlBSUEsU0FBQW0rQyxHQUFBeHJC
LEVBQUFDLElBRkEsR0FZQWluQixJQVpBNzVDLEVBQUEsSUFvQkE4eUIsVUFBQSxTQUFBSCxHQUNB
LFVBV0FJLGdCQUFBLFNBQUFKLEVBQUE1b0IsS0FlQW1wQixtQkFBQSxTQUFBUCxHQUNBd3JCLEVB
QUF4ckIsRUFBQSxnQkFjQVMsb0JBQUEsU0FBQVQsRUFBQVUsR0FDQThxQixFQUFBeHJCLEVBQUEs
aUJBYUFhLGdCQUFBLFNBQUFiLEVBQUFjLEdBQ0EwcUIsRUFBQXhyQixFQUFBLGNBSUF2eUIsR0FB
QUQsUUFBQTA1QyxHM0Z1eVRNLFNBQVN6NUMsRUFBUUQsRUFBU0gsRzRGejNUaEMsWUFFQSxJQUFB
bytDLElBQUEsQ0FXQWgrQyxHQUFBRCxRQUFBaStDLEc1RjA0VE0sU0FBU2grQyxFQUFRRCxHNkZs
NlR2QixZQWVBLFNBQUFvb0IsS0FDQSxPQUFBc3JCLEdBQUFseEMsVUFBQUMsT0FBQXk3QyxFQUFB
am1DLE1BQUF5N0IsR0FBQUMsRUFBQSxFQUFrRUEsRUFBQUQsRUFBYUMsSUFDL0V1SyxFQUFBdkss
R0FBQW54QyxVQUFBbXhDLEVBR0EsWUFBQXVLLEVBQUF6N0MsT0FDQSxTQUFBK0YsR0FDQSxNQUFB
QSxJQUlBLElBQUEwMUMsRUFBQXo3QyxPQUNBeTdDLEVBQUEsR0FHQUEsRUFBQUMsT0FBQSxTQUFB
bjlDLEVBQUFDLEdBQ0Esa0JBQ0EsTUFBQUQsR0FBQUMsRUFBQUMsTUFBQVcsT0FBQVcsZUE5QkF4
QyxFQUFBa29CLFlBQUEsRUFDQWxvQixFQUFBLFFBQUFvb0IsRzdGdzhUTSxTQUFTbm9CLEVBQVFE
LEVBQVNILEc4RjM4VGhDLFlBY0EsU0FBQW1vQixHQUFBQyxHQUFzQyxNQUFBQSxNQUFBQyxXQUFB
RCxHQUF1Q0UsUUFBQUYsR0FvQzNFLFFBQUFPLEdBQUE0MUIsRUFBQUMsRUFBQUMsR0EwQkYsUUFB
QUMsS0FDQUMsSUFBQUMsSUFDQUQsRUFBQUMsRUFBQTM5QyxTQVNBLFFBQUE2ckMsS0FDQSxNQUFB
K1IsR0EwQkEsUUFBQS9MLEdBQUF4NEIsR0FDQSxxQkFBQUEsR0FDQSxTQUFBclksT0FBQSxzQ0FH
QSxJQUFBNHVDLElBQUEsQ0FLQSxPQUhBNk4sS0FDQUMsRUFBQTUzQyxLQUFBdVQsR0FFQSxXQUNB
LEdBQUF1MkIsRUFBQSxDQUlBQSxHQUFBLEVBRUE2TixHQUNBLElBQUF2M0IsR0FBQXczQixFQUFB
MXhCLFFBQUEzUyxFQUNBcWtDLEdBQUFseUMsT0FBQTBhLEVBQUEsS0E2QkEsUUFBQWtwQixHQUFB
eU8sR0FDQSxPQUFBOUwsRUFBQSxTQUFBOEwsR0FDQSxTQUFBNzhDLE9BQUEsMEVBR0EsdUJBQUE2
OEMsR0FBQTd6QyxLQUNBLFNBQUFoSixPQUFBLHFGQUdBLElBQUE4OEMsRUFDQSxTQUFBOThDLE9B
QUEscUNBR0EsS0FDQTg4QyxHQUFBLEVBQ0FGLEVBQUFHLEVBQUFILEVBQUFDLEdBQ0ssUUFDTEMs
R0FBQSxFQUlBLE9BREE5ZixHQUFBMmYsRUFBQUQsRUFDQWgrQyxFQUFBLEVBQW1CQSxFQUFBcytC
LEVBQUFyOEIsT0FBc0JqQyxJQUFBLENBQ3pDLEdBQUEyWixHQUFBMmtCLEVBQUF0K0IsRUFDQTJa
LEtBR0EsTUFBQXdrQyxHQWFBLFFBQUFHLEdBQUFDLEdBQ0EscUJBQUFBLEdBQ0EsU0FBQWo5QyxP
QUFBLDZDQUdBKzhDLEdBQUFFLEVBQ0E3TyxHQUFjcGxDLEtBQUFrMEMsRUFBQUMsT0FTZCxRQUFB
QyxLQUNBLEdBQUFqUyxHQUVBa1MsRUFBQXhNLENBQ0EsT0FBQTFGLElBU0EwRixVQUFBLFNBQUF5
TSxHQUtBLFFBQUFDLEtBQ0FELEVBQUFuWSxNQUNBbVksRUFBQW5ZLEtBQUEwRixLQU5BLG1CQUFB
eVMsR0FDQSxTQUFBcjhDLFdBQUEseUNBU0FzOEMsSUFDQSxJQUFBQyxHQUFBSCxFQUFBRSxFQUNB
LFFBQWdCQyxpQkFFWHJTLEVBQUFzUyxFQUFBLG9CQUNMLE1BQUFwK0MsT0FDSzhyQyxFQW5NTCxH
QUFBc0MsRUFPQSxJQUxBLGtCQUFBOE8sSUFBQSxtQkFBQUMsS0FDQUEsRUFBQUQsRUFDQUEsRUFB
QXg4QyxRQUdBLG1CQUFBeThDLEdBQUEsQ0FDQSxxQkFBQUEsR0FDQSxTQUFBeDhDLE9BQUEsMENB
R0EsT0FBQXc4QyxHQUFBOTFCLEdBQUE0MUIsRUFBQUMsR0FHQSxxQkFBQUQsR0FDQSxTQUFBdDhD
LE9BQUEseUNBR0EsSUFBQSs4QyxHQUFBVCxFQUNBTSxFQUFBTCxFQUNBSSxLQUNBRCxFQUFBQyxF
QUNBRyxHQUFBLENBb0xBLE9BRkExTyxJQUFZcGxDLEtBQUFrMEMsRUFBQUMsT0FFWjFQLEdBQ0FX
LFdBQ0F5QyxZQUNBaEcsV0FDQW1TLGtCQUNHdlAsRUFBQWdRLEVBQUEsU0FBQUwsRUFBQTNQLEVB
alFIdnZDLEVBQUFrb0IsWUFBQSxFQUNBbG9CLEVBQUFnL0MsWUFBQW45QyxPQUNBN0IsRUFBQSxR
QUFBd29CLENBRUEsSUFBQXVxQixHQUFBbHpDLEVBQUEsSUFFQWd6QyxFQUFBN3FCLEVBQUErcUIs
R0FFQXlNLEVBQUEzL0MsRUFBQSxLQUVBMC9DLEVBQUF2M0IsRUFBQXczQixHQVVBUixFQUFBaC9D
LEVBQUFnL0MsYUFDQUMsS0FBQSxpQjlGOHJVTSxTQUFTaC9DLEVBQVFELEcrRnJ0VXZCLFlBVUEs
U0FBQW9DLEdBQUFNLEdBRUEsbUJBQUF1SSxVQUFBLGtCQUFBQSxTQUFBckosT0FDQXFKLFFBQUFy
SixNQUFBYyxFQUdBLEtBSUEsU0FBQVosT0FBQVksR0FFRyxNQUFBakIsS0FwQkh6QixFQUFBa29C
LFlBQUEsRUFDQWxvQixFQUFBLFFBQUFvQyxHL0ZndlVNLFNBQVNuQyxFQUFRRCxFQUFTSCxHZ0d6
dVVoQyxZQWVBLFNBQUE0L0MsR0FBQTErQyxHQUNBLE1BQUFBLEdBY0EsUUFBQW9YLEdBQUFvaEMs
RUFBQTFpQyxFQUFBNmlDLEdBOFVBLFFBQUFnRyxHQUFBQyxFQUFBMTlDLEdBQ0EsR0FBQTI5QyxH
QUFBQyxFQUFBbC9DLGVBQUFzQixHQUNBNDlDLEVBQUE1OUMsR0FDQSxJQUdBNjlDLEdBQUFuL0Ms
ZUFBQXNCLElBQ0ErdUMsRUFDQSxrQkFBQTRPLEVBQ0EsMkpBR0EzOUMsR0FLQTA5QyxHQUNBM08s
RUFDQSxnQkFBQTRPLEdBQUEsdUJBQUFBLEVBQ0EsZ0lBR0EzOUMsR0FTQSxRQUFBODlDLEdBQUEv
akIsRUFBQWdrQixHQUNBLEdBQUFBLEVBQUEsQ0FxQkFoUCxFQUNBLGtCQUFBZ1AsR0FDQSxzSEFJ
QWhQLEdBQ0FuNkIsRUFBQW1wQyxHQUNBLG1HQUlBLElBQUF6MUIsR0FBQXlSLEVBQUF0N0IsVUFD
QXUvQyxFQUFBMTFCLEVBQUEyMUIsb0JBS0FGLEdBQUFyL0MsZUFBQXcvQyxJQUNBQyxFQUFBQyxP
QUFBcmtCLEVBQUFna0IsRUFBQUssT0FHQSxRQUFBcCtDLEtBQUErOUMsR0FDQSxHQUFBQSxFQUFB
ci9DLGVBQUFzQixJQUlBQSxJQUFBaytDLEVBQUEsQ0FLQSxHQUFBRyxHQUFBTixFQUFBLzlDLEdB
Q0EwOUMsRUFBQXAxQixFQUFBNXBCLGVBQUFzQixFQUdBLElBRkF5OUMsRUFBQUMsRUFBQTE5QyxH
QUVBbStDLEVBQUF6L0MsZUFBQXNCLEdBQ0FtK0MsRUFBQW4rQyxHQUFBKzVCLEVBQUFza0IsT0FD
TyxDQUtQLEdBQUFDLEdBQUFWLEVBQUFsL0MsZUFBQXNCLEdBQ0F1K0MsRUFBQSxrQkFBQUYsR0FD
QUcsRUFDQUQsSUFDQUQsSUFDQVosR0FDQUssRUFBQVUsWUFBQSxDQUVBLElBQUFELEVBQ0FSLEVB
QUFyNUMsS0FBQTNFLEVBQUFxK0MsR0FDQS8xQixFQUFBdG9CLEdBQUFxK0MsTUFFQSxJQUFBWCxF
QUFBLENBQ0EsR0FBQUMsR0FBQUMsRUFBQTU5QyxFQUdBK3VDLEdBQ0F1UCxJQUNBLHVCQUFBWCxH
QUNBLGdCQUFBQSxHQUNBLG1GQUVBQSxFQUNBMzlDLEdBS0EsdUJBQUEyOUMsRUFDQXIxQixFQUFB
dG9CLEdBQUEwK0MsRUFBQXAyQixFQUFBdG9CLEdBQUFxK0MsR0FDYSxnQkFBQVYsSUFDYnIxQixF
QUFBdG9CLEdBQUEyK0MsRUFBQXIyQixFQUFBdG9CLEdBQUFxK0MsUUFHQS8xQixHQUFBdG9CLEdB
QUFxK0MsVUFjQSxRQUFBTyxHQUFBN2tCLEVBQUE4a0IsR0FDQSxHQUFBQSxFQUdBLE9BQUE3K0Ms
S0FBQTYrQyxHQUFBLENBQ0EsR0FBQVIsR0FBQVEsRUFBQTcrQyxFQUNBLElBQUE2K0MsRUFBQW5n
RCxlQUFBc0IsR0FBQSxDQUlBLEdBQUE4K0MsR0FBQTkrQyxJQUFBbStDLEVBQ0FwUCxJQUNBK1As
RUFDQSwwTUFJQTkrQyxFQUdBLElBQUErK0MsR0FBQS8rQyxJQUFBKzVCLEVBQ0FnVixJQUNBZ1Es
RUFDQSx1SEFHQS8rQyxHQUVBKzVCLEVBQUEvNUIsR0FBQXErQyxJQVdBLFFBQUFXLEdBQUFDLEVB
QUFDLEdBQ0FuUSxFQUNBa1EsR0FBQUMsR0FBQSxnQkFBQUQsSUFBQSxnQkFBQUMsR0FDQSw0REFH
QSxRQUFBejhDLEtBQUF5OEMsR0FDQUEsRUFBQXhnRCxlQUFBK0QsS0FDQXNzQyxFQUNBbnZDLFNB
QUFxL0MsRUFBQXg4QyxHQUNBLHlQQUtBQSxHQUVBdzhDLEVBQUF4OEMsR0FBQXk4QyxFQUFBejhD
LEdBR0EsT0FBQXc4QyxHQVdBLFFBQUFQLEdBQUFPLEVBQUFDLEdBQ0Esa0JBQ0EsR0FBQW5nRCxH
QUFBa2dELEVBQUFoZ0QsTUFBQUMsS0FBQXFCLFdBQ0F2QixFQUFBa2dELEVBQUFqZ0QsTUFBQUMs
S0FBQXFCLFVBQ0EsVUFBQXhCLEVBQ0EsTUFBQUMsRUFDTyxVQUFBQSxFQUNQLE1BQUFELEVBRUEs
SUFBQVYsS0FHQSxPQUZBMmdELEdBQUEzZ0QsRUFBQVUsR0FDQWlnRCxFQUFBM2dELEVBQUFXLEdB
Q0FYLEdBWUEsUUFBQXNnRCxHQUFBTSxFQUFBQyxHQUNBLGtCQUNBRCxFQUFBaGdELE1BQUFDLEtB
QUFxQixXQUNBMitDLEVBQUFqZ0QsTUFBQUMsS0FBQXFCLFlBV0EsUUFBQTQrQyxHQUFBajhDLEVB
QUE2SCxHQUNBLEdBQUFxMEMsR0FBQXIwQyxFQUFBb0wsS0FBQWpULEVBaURBLE9BQUFrOEMsR0FR
QSxRQUFBQyxHQUFBbjhDLEdBRUEsT0FEQW84QyxHQUFBcDhDLEVBQUErNkMscUJBQ0ExL0MsRUFB
QSxFQUFtQkEsRUFBQStnRCxFQUFBOStDLE9BQWtCakMsR0FBQSxHQUNyQyxHQUFBZ2hELEdBQUFE
LEVBQUEvZ0QsR0FDQXdNLEVBQUF1MEMsRUFBQS9nRCxFQUFBLEVBQ0EyRSxHQUFBcThDLEdBQUFK
LEVBQUFqOEMsRUFBQTZILElBbUVBLFFBQUErSixHQUFBaXBDLEdBSUEsR0FBQWhrQixHQUFBeWpC
LEVBQUEsU0FBQTluQyxFQUFBOUwsRUFBQTJ0QyxHQWFBcjRDLEtBQUErK0MscUJBQUF6OUMsUUFD
QTYrQyxFQUFBbmdELE1BR0FBLEtBQUF3VyxRQUNBeFcsS0FBQTBLLFVBQ0ExSyxLQUFBczRDLEtB
QUExN0IsRUFDQTVjLEtBQUFxNEMsV0FBQUUsRUFFQXY0QyxLQUFBNnRDLE1BQUEsSUFLQSxJQUFB
eVMsR0FBQXRnRCxLQUFBdWdELGdCQUFBdmdELEtBQUF1Z0Qsa0JBQUEsSUFZQTFRLEdBQ0EsZ0JB
QUF5USxLQUFBeHBDLE1BQUF3UixRQUFBZzRCLEdBQ0Esc0RBQ0F6bEIsRUFBQTFKLGFBQUEsMkJB
R0FueEIsS0FBQTZ0QyxNQUFBeVMsR0FFQXpsQixHQUFBdDdCLFVBQUEsR0FBQWloRCxHQUNBM2xC
LEVBQUF0N0IsVUFBQXVOLFlBQUErdEIsRUFDQUEsRUFBQXQ3QixVQUFBdy9DLHdCQUVBMEIsRUFB
QS85QyxRQUFBazhDLEVBQUEzbkMsS0FBQSxLQUFBNGpCLElBRUErakIsRUFBQS9qQixFQUFBNmxC
LEdBQ0E5QixFQUFBL2pCLEVBQUFna0IsR0FDQUQsRUFBQS9qQixFQUFBOGxCLEdBR0E5bEIsRUFB
QStsQixrQkFDQS9sQixFQUFBOWpCLGFBQUE4akIsRUFBQStsQixtQkFnQkEvUSxFQUNBaFYsRUFB
QXQ3QixVQUFBa2tDLE9BQ0EsMEVBcUJBLFFBQUF5SSxLQUFBd1MsR0FDQTdqQixFQUFBdDdCLFVB
QUEyc0MsS0FDQXJSLEVBQUF0N0IsVUFBQTJzQyxHQUFBLEtBSUEsT0FBQXJSLEdBcHpCQSxHQUFB
NGxCLE1Bd0JBL0IsR0FPQVEsT0FBQSxjQVNBUyxRQUFBLGNBUUE1dkIsVUFBQSxjQVFBK2MsYUFB
QSxjQVFBSSxrQkFBQSxjQWNBMFQsZ0JBQUEscUJBZ0JBTCxnQkFBQSxxQkFNQXBTLGdCQUFBLHFC
QWlCQTFLLE9BQUEsY0FXQW9kLG1CQUFBLGNBWUF2UyxrQkFBQSxjQXFCQUcsMEJBQUEsY0FzQkFo
RCxzQkFBQSxjQWlCQXFWLG9CQUFBLGNBY0EzUixtQkFBQSxjQWFBVCxxQkFBQSxjQWNBcVMsZ0JB
QUEsaUJBWUE5QixHQUNBOXRCLFlBQUEsU0FBQTBKLEVBQUExSixHQUNBMEosRUFBQTFKLGVBRUEr
dEIsT0FBQSxTQUFBcmtCLEVBQUFxa0IsR0FDQSxHQUFBQSxFQUNBLE9BQUE3L0MsR0FBQSxFQUF1
QkEsRUFBQTYvQyxFQUFBNTlDLE9BQW1CakMsSUFDMUN1L0MsRUFBQS9qQixFQUFBcWtCLEVBQUE3
L0MsS0FJQTZ0QyxrQkFBQSxTQUFBclMsRUFBQXFTLEdBSUFyUyxFQUFBcVMsa0JBQUFyaUMsS0FF
QWd3QixFQUFBcVMsa0JBQ0FBLElBR0FKLGFBQUEsU0FBQWpTLEVBQUFpUyxHQUlBalMsRUFBQWlT
LGFBQUFqaUMsS0FFQWd3QixFQUFBaVMsYUFDQUEsSUFPQThULGdCQUFBLFNBQUEvbEIsRUFBQSts
QixHQUNBL2xCLEVBQUErbEIsZ0JBQ0EvbEIsRUFBQStsQixnQkFBQXBCLEVBQ0Eza0IsRUFBQSts
QixnQkFDQUEsR0FHQS9sQixFQUFBK2xCLG1CQUdBN3dCLFVBQUEsU0FBQThLLEVBQUE5SyxHQUlB
OEssRUFBQTlLLFVBQUFsbEIsS0FBd0Nnd0IsRUFBQTlLLGNBRXhDNHZCLFFBQUEsU0FBQTlrQixF
QUFBOGtCLEdBQ0FELEVBQUE3a0IsRUFBQThrQixJQUVBSixTQUFBLGNBc1ZBbUIsR0FDQXBTLGtC
QUFBLFdBQ0F0dUMsS0FBQWdoRCxhQUFBLElBSUFMLEdBQ0FqUyxxQkFBQSxXQUNBMXVDLEtBQUFn
aEQsYUFBQSxJQVFBckMsR0FLQXNDLGFBQUEsU0FBQUMsRUFBQXo0QyxHQUNBekksS0FBQXE0QyxR
QUFBdm1CLG9CQUFBOXhCLEtBQUFraEQsRUFBQXo0QyxJQVNBK29CLFVBQUEsV0FhQSxRQUFBeHhC
LEtBQUFnaEQsY0FJQVIsRUFBQSxZQThIQSxPQTdIQTMxQyxHQUNBMjFDLEVBQUFqaEQsVUFDQTY0
QyxFQUFBNzRDLFVBQ0FvL0MsR0EwSEEvb0MsRUF4MUJBLEdBaUJBdXJDLEdBakJBdDJDLEVBQUFu
TSxFQUFBLEdBRUFrZSxFQUFBbGUsRUFBQSxJQUNBbXhDLEVBQUFueEMsRUFBQSxHQU1Bc2dELEVB
QUEsUUFnQkFtQyxNQWswQkFyaUQsRUFBQUQsUUFBQW1ZLEdoRzB2VU0sU0FBU2xZLEVBQVFELEdp
R2ptV3ZCLFlBd0JBLFNBQUF1aUQsR0FBQTc3QixHQUNBLE1BQUFBLEdBQUExa0IsUUFBQXdnRCxF
QUFBLFNBQUFDLEVBQUFDLEdBQ0EsTUFBQUEsR0FBQS9yQixnQkFiQSxHQUFBNnJCLEdBQUEsT0Fp
QkF2aUQsR0FBQUQsUUFBQXVpRCxHakd1bVdNLFNBQVN0aUQsRUFBUUQsRUFBU0gsR2tHMW5XaEMs
WUF1QkEsU0FBQThpRCxHQUFBajhCLEdBQ0EsTUFBQTY3QixHQUFBNzdCLEVBQUExa0IsUUFBQTRn
RCxFQUFBLFFBdEJBLEdBQUFMLEdBQUExaUQsRUFBQSxJQUVBK2lELEVBQUEsT0F1QkEzaUQsR0FB
QUQsUUFBQTJpRCxHbEcyb1dNLFNBQVMxaUQsRUFBUUQsRUFBU0gsR21HanJXaEMsWUFvQkEsU0FB
QXNnQyxHQUFBMGlCLEVBQUFDLEdBQ0EsU0FBQUQsSUFBQUMsS0FFR0QsSUFBQUMsSUFFQUMsRUFB
QUYsS0FFQUUsRUFBQUQsR0FDSDNpQixFQUFBMGlCLEVBQUFDLEVBQUFqOEMsWUFDRyxZQUFBZzhD
LEdBQ0hBLEVBQUFHLFNBQUFGLEtBQ0dELEVBQUFJLDRCQUNILEdBQUFKLEVBQUFJLHdCQUFBSCxN
QW5CQSxHQUFBQyxHQUFBbGpELEVBQUEsSUF5QkFJLEdBQUFELFFBQUFtZ0MsR25HdXJXTSxTQUFT
bGdDLEVBQVFELEVBQVNILEdvRzd0V2hDLFlBd0JBLFNBQUE0VyxHQUFBd1IsR0FDQSxHQUFBeGxC
LEdBQUF3bEIsRUFBQXhsQixNQWVBLElBWEF3VixNQUFBd1IsUUFBQXhCLElBQUEsZ0JBQUFBLElB
QUEsa0JBQUFBLEdBQUE1bUIsR0FBQSxVQUVBLGdCQUFBb0IsR0FBQXBCLEdBQUEsVUFFQSxJQUFB
b0IsS0FBQSxJQUFBd2xCLEdBQUEsT0FBQTVtQixHQUFBLEdBRUEsa0JBQUE0bUIsR0FBQWk3QixP
QUFtTDdoRCxHQUFBLFVBS25MNG1CLEVBQUF0bkIsZUFDQSxJQUNBLE1BQUFzWCxPQUFBdlgsVUFB
QUksTUFBQVYsS0FBQTZuQixHQUNLLE1BQUF4bUIsSUFRTCxPQURBMGtCLEdBQUFsTyxNQUFBeFYs
R0FDQTRvQyxFQUFBLEVBQWtCQSxFQUFBNW9DLEVBQWE0b0MsSUFDL0JsbEIsRUFBQWtsQixHQUFB
cGpCLEVBQUFvakIsRUFFQSxPQUFBbGxCLEdBa0JBLFFBQUFnOUIsR0FBQWw3QixHQUNBLFFBRUFB
LElBRUEsZ0JBQUFBLElBQUEsa0JBQUFBLEtBRUEsVUFBQUEsTUFFQSxlQUFBQSxLQUdBLGdCQUFB
QSxHQUFBbmpCLFdBRUFtVCxNQUFBd1IsUUFBQXhCLElBRUEsVUFBQUEsSUFFQSxRQUFBQSxJQXlC
QSxRQUFBbTdCLEdBQUFuN0IsR0FDQSxNQUFBazdCLEdBQUFsN0IsR0FFR2hRLE1BQUF3UixRQUFB
eEIsR0FDSEEsRUFBQW5uQixRQUVBMlYsRUFBQXdSLElBSkFBLEdBeEdBLEdBQUE1bUIsR0FBQXhC
LEVBQUEsRUFnSEFJLEdBQUFELFFBQUFvakQsR3BHbXVXTSxTQUFTbmpELEVBQVFELEVBQVNILEdx
R2gyV2hDLFlBcUNBLFNBQUF3akQsR0FBQXp1QyxHQUNBLEdBQUEwdUMsR0FBQTF1QyxFQUFBZ1Ms
TUFBQTI4QixFQUNBLE9BQUFELE1BQUEsR0FBQXp4QyxjQWFBLFFBQUEyeEMsR0FBQTV1QyxFQUFB
NnVDLEdBQ0EsR0FBQTcrQyxHQUFBOCtDLENBQ0FBLEdBQUEsT0FBQXJpRCxHQUFBLEVBQ0EsSUFB
QTZQLEdBQUFteUMsRUFBQXp1QyxHQUVBK3VDLEVBQUF6eUMsR0FBQTB5QyxFQUFBMXlDLEVBQ0Es
SUFBQXl5QyxFQUFBLENBQ0EvK0MsRUFBQTZpQixVQUFBazhCLEVBQUEsR0FBQS91QyxFQUFBK3VD
LEVBQUEsRUFHQSxLQURBLEdBQUFFLEdBQUFGLEVBQUEsR0FDQUUsS0FDQWovQyxJQUFBZy9CLGNB
R0FoL0IsR0FBQTZpQixVQUFBN1MsQ0FHQSxJQUFBa3ZDLEdBQUFsL0MsRUFBQW0vQyxxQkFBQSxT
QUNBRCxHQUFBcmhELFNBQ0FnaEQsRUFBQSxPQUFBcGlELEdBQUEsR0FDQStoRCxFQUFBVSxHQUFB
amdELFFBQUE0L0MsR0FJQSxLQURBLEdBQUFPLEdBQUEvckMsTUFBQTNULEtBQUFNLEVBQUFxL0Ms
WUFDQXIvQyxFQUFBZy9CLFdBQ0FoL0IsRUFBQWtqQixZQUFBbGpCLEVBQUFnL0IsVUFFQSxPQUFB
b2dCLEdBaEVBLEdBQUFsOEMsR0FBQWpJLEVBQUEsR0FFQXVqRCxFQUFBdmpELEVBQUEsS0FDQStq
RCxFQUFBL2pELEVBQUEsS0FDQXdCLEVBQUF4QixFQUFBLEdBS0E2akQsRUFBQTU3QyxFQUFBSixV
QUFBRSxTQUFBQyxjQUFBLFlBS0EwN0MsRUFBQSxZQXFEQXRqRCxHQUFBRCxRQUFBd2pELEdyR3My
V00sU0FBU3ZqRCxFQUFRRCxFQUFTSCxHc0d4N1doQyxZQTZFQSxTQUFBK2pELEdBQUExeUMsR0Fh
QSxNQVpBd3lDLEdBQUEsT0FBQXJpRCxHQUFBLEdBQ0E2aUQsRUFBQXZqRCxlQUFBdVEsS0FDQUEs
RUFBQSxLQUVBaXpDLEVBQUF4akQsZUFBQXVRLEtBQ0EsTUFBQUEsRUFDQXd5QyxFQUFBajhCLFVB
QUEsV0FFQWk4QixFQUFBajhCLFVBQUEsSUFBQXZXLEVBQUEsTUFBQUEsRUFBQSxJQUVBaXpDLEVB
QUFqekMsSUFBQXd5QyxFQUFBdjlDLFlBRUFnK0MsRUFBQWp6QyxHQUFBZ3pDLEVBQUFoekMsR0FB
QSxLQTVFQSxHQUFBcEosR0FBQWpJLEVBQUEsR0FFQXdCLEVBQUF4QixFQUFBLEdBS0E2akQsRUFB
QTU3QyxFQUFBSixVQUFBRSxTQUFBQyxjQUFBLFlBU0FzOEMsS0FFQUMsR0FBQSwwQ0FDQUMsR0FB
QSx3QkFDQUMsR0FBQSxnREFFQUMsR0FBQSx1REFFQUwsR0FDQU0sS0FBQSxxQkFFQUMsTUFBQSxv
QkFDQUMsS0FBQSw0REFDQUMsUUFBQSw4QkFDQUMsT0FBQSwwQkFDQUMsSUFBQSx1Q0FFQUMsU0FB
QVYsRUFDQVcsT0FBQVgsRUFFQVksUUFBQVgsRUFDQVksU0FBQVosRUFDQWEsTUFBQWIsRUFDQWMs
TUFBQWQsRUFDQWUsTUFBQWYsRUFFQWdCLEdBQUFmLEVBQ0FnQixHQUFBaEIsR0FNQWlCLEdBQUEs
b0tBQ0FBLEdBQUExaEQsUUFBQSxTQUFBcU4sR0FDQWd6QyxFQUFBaHpDLEdBQUFxekMsRUFDQUos
RUFBQWp6QyxJQUFBLElBMkJBalIsRUFBQUQsUUFBQTRqRCxHdEc4N1dNLFNBQVMzakQsRUFBUUQs
R3VHaGhYdkIsWUFhQSxTQUFBd2xELEdBQUFDLEdBQ0EsTUFBQUEsR0FBQUMsUUFBQUQsZUFBQUMs
UUFFQTk3QixFQUFBNjdCLEVBQUFFLGFBQUFGLEVBQUE3OUMsU0FBQXc0QixnQkFBQXdsQixXQUNB
LzdCLEVBQUE0N0IsRUFBQUksYUFBQUosRUFBQTc5QyxTQUFBdzRCLGdCQUFBMGxCLFlBSUFsOEIs
RUFBQTY3QixFQUFBRyxXQUNBLzdCLEVBQUE0N0IsRUFBQUssV0FJQTdsRCxFQUFBRCxRQUFBd2xE
LEd2R2lpWE0sU0FBU3ZsRCxFQUFRRCxHd0d0a1h2QixZQTJCQSxTQUFBK2xELEdBQUFyL0IsR0FD
QSxNQUFBQSxHQUFBMWtCLFFBQUFna0QsRUFBQSxPQUFBbjBDLGNBZkEsR0FBQW0wQyxHQUFBLFVB
a0JBL2xELEdBQUFELFFBQUErbEQsR3hHNGtYTSxTQUFTOWxELEVBQVFELEVBQVNILEd5R2htWGhD
LFlBc0JBLFNBQUFvbUQsR0FBQXYvQixHQUNBLE1BQUFxL0IsR0FBQXIvQixHQUFBMWtCLFFBQUE0
Z0QsRUFBQSxRQXJCQSxHQUFBbUQsR0FBQWxtRCxFQUFBLEtBRUEraUQsRUFBQSxNQXNCQTNpRCxH
QUFBRCxRQUFBaW1ELEd6R2luWE0sU0FBU2htRCxFQUFRRCxHMEd0cFh2QixZQWlCQSxTQUFBa21E
LEdBQUF2dEMsR0FDQSxHQUFBK0UsR0FBQS9FLElBQUFnRixlQUFBaEYsRUFBQS9RLFNBQ0FnVyxF
QUFBRixFQUFBRSxhQUFBalcsTUFDQSxVQUFBZ1IsS0FBQSxrQkFBQWlGLEdBQUF1b0MsS0FBQXh0
QyxZQUFBaUYsR0FBQXVvQyxLQUFBLGdCQUFBeHRDLElBQUEsZ0JBQUFBLEdBQUE3VCxVQUFBLGdC
QUFBNlQsR0FBQXpILFdBR0FqUixFQUFBRCxRQUFBa21ELEcxRzRwWE0sU0FBU2ptRCxFQUFRRCxF
QUFTSCxHMkduclhoQyxZQW1CQSxTQUFBa2pELEdBQUFwcUMsR0FDQSxNQUFBdXRDLEdBQUF2dEMs
SUFBQSxHQUFBQSxFQUFBN1QsU0FQQSxHQUFBb2hELEdBQUFybUQsRUFBQSxJQVVBSSxHQUFBRCxR
QUFBK2lELEczR3lyWE0sU0FBUzlpRCxFQUFRRCxHNEdwc1h2QixZQU1BLFNBQUFvbUQsR0FBQXg4
QyxHQUNBLEdBQUF5OEMsS0FDQSxpQkFBQTMvQixHQUlBLE1BSEEyL0IsR0FBQTFsRCxlQUFBK2xC
LEtBQ0EyL0IsRUFBQTMvQixHQUFBOWMsRUFBQXhKLEtBQUFlLEtBQUF1bEIsSUFFQTIvQixFQUFB
My9CLElBSUF6bUIsRUFBQUQsUUFBQW9tRCxHNUdzdFhNLFNBQVNubUQsRUFBUUQsRzZHOXVYdkIs
WUFFQSxJQUFBc21ELElBQ0FqWSxtQkFBQSxFQUNBSixjQUFBLEVBQ0EvMUIsY0FBQSxFQUNBb2Es
YUFBQSxFQUNBeXZCLGlCQUFBLEVBQ0ExQixRQUFBLEVBQ0FudkIsV0FBQSxFQUNBcG1CLE1BQUEs
R0FHQXk3QyxHQUNBdGtELE1BQUEsRUFDQVEsUUFBQSxFQUNBL0IsV0FBQSxFQUNBOGxELFFBQUEs
RUFDQXRELFFBQUEsRUFDQTFnRCxXQUFBLEVBQ0Fpa0QsT0FBQSxHQUdBeGlELEVBQUF4RCxPQUFB
d0Qsc0JBRUFDLEdBREF6RCxPQUFBQyxVQUFBQyxlQUNBRixPQUFBQyxVQUFBeUQsc0JBQ0F5dkMs
RUFBQW56QyxPQUFBbXpDLGVBQ0E4UyxFQUFBOVMsS0FBQW56QyxRQUNBMkMsRUFBQTNDLE9BQUEy
QyxtQkFFQW5ELEdBQUFELFFBQUEsUUFBQTJtRCxHQUFBQyxFQUFBQyxFQUFBQyxHQUNBLG1CQUFB
RCxHQUFBLENBRUEsR0FBQUgsRUFBQSxDQUNBLEdBQUFLLEdBQUFuVCxFQUFBaVQsRUFDQUUsUUFB
QUwsR0FDQUMsRUFBQUMsRUFBQUcsRUFBQUQsR0FJQSxHQUFBL2lELEdBQUFYLEVBQUF5akQsRUFF
QTVpRCxLQUNBRixJQUFBM0MsT0FBQTZDLEVBQUE0aUQsSUFHQSxRQUFBcm1ELEdBQUEsRUFBdUJB
LEVBQUF1RCxFQUFBdEIsU0FBaUJqQyxFQUFBLENBQ3hDLEdBQUFrRSxHQUFBWCxFQUFBdkQsRUFD
QSxNQUFBOGxELEVBQUE1aEQsSUFBQTZoRCxFQUFBN2hELElBQUFvaUQsS0FBQXBpRCxNQUVBUixF
QUFBOUQsS0FBQXltRCxFQUFBbmlELElBQUEsa0JBQUFtaUQsR0FBQW5pRCxJQUNBLElBQ0FraUQs
RUFBQWxpRCxHQUFBbWlELEVBQUFuaUQsR0FDcUIsTUFBQWpELEtBS3JCLE1BQUFtbEQsR0FHQSxN
QUFBQSxLN0cwdlhNLFNBQVMzbUQsRUFBUUQsRUFBU0gsRzhHbHpYaEMsWUFhQSxJQUFBd0IsR0FB
QSxTQUFBQyxFQUFBQyxFQUFBUCxFQUFBQyxFQUFBWCxFQUFBa0IsRUFBQUMsRUFBQUMsR0FPQSxJ
QUFBSixFQUFBLENBQ0EsR0FBQU0sRUFDQSxJQUFBQyxTQUFBTixFQUNBSyxFQUFBLEdBQUFFLE9B
Q0EscUlBR0ssQ0FDTCxHQUFBakIsSUFBQUcsRUFBQUMsRUFBQVgsRUFBQWtCLEVBQUFDLEVBQUFD
LEdBQ0FLLEVBQUEsQ0FDQUgsR0FBQSxHQUFBRSxPQUNBUCxFQUFBUyxRQUFBLGlCQUEwQyxNQUFB
bkIsR0FBQWtCLFFBRTFDSCxFQUFBSyxLQUFBLHNCQUlBLEtBREFMLEdBQUFNLFlBQUEsRUFDQU4s
R0FJQTNCLEdBQUFELFFBQUFxQixHOUdrMFhNLFNBQVNwQixFQUFRRCxFQUFTSCxHK0dsMlhoQyxR
QUFBd3FCLEdBQUFwWSxHQUNBLGFBQUFBLEVBQ0FwUSxTQUFBb1EsRUFBQSswQyxFQUFBQyxFQUVB
QyxPQUFBem1ELFFBQUF3UixHQUNBazFDLEVBQUFsMUMsR0FDQW0xQyxFQUFBbjFDLEdBeEJBLEdB
QUFxa0IsR0FBQXoyQixFQUFBLElBQ0FzbkQsRUFBQXRuRCxFQUFBLEtBQ0F1bkQsRUFBQXZuRCxF
QUFBLEtBR0FvbkQsRUFBQSxnQkFDQUQsRUFBQSxxQkFHQUUsRUFBQTV3QixJQUFBK3dCLFlBQUF4
bEQsTUFrQkE1QixHQUFBRCxRQUFBcXFCLEcvRzIzWE0sU0FBU3BxQixFQUFRRCxJZ0h0NVh2QixT
QUFBc25ELEdBQ0EsR0FBQUMsR0FBQSxnQkFBQUQsU0FBQTdtRCxpQkFBQTZtRCxDQUVBcm5ELEdB
QUFELFFBQUF1bkQsSWhIMDVYOEJubkQsS0FBS0osRUFBVSxXQUFhLE1BQU9tQixXQUkzRCxTQUFT
bEIsRUFBUUQsRUFBU0gsR2lIajZYaEMsR0FBQTJuRCxHQUFBM25ELEVBQUEsS0FHQTJxQixFQUFB
ZzlCLEVBQUEvbUQsT0FBQW16QyxlQUFBbnpDLE9BRUFSLEdBQUFELFFBQUF3cUIsR2pIdzZYTSxT
QUFTdnFCLEVBQVFELEVBQVNILEdrSHA1WGhDLFFBQUFzbkQsR0FBQWwxQyxHQUNBLEdBQUF3MUMs
R0FBQTltRCxFQUFBUCxLQUFBNlIsRUFBQWkxQyxHQUNBcnVDLEVBQUE1RyxFQUFBaTFDLEVBRUEs
S0FDQWoxQyxFQUFBaTFDLEdBQUFybEQsTUFDQSxJQUFBNmxELElBQUEsRUFDRyxNQUFBam1ELElB
RUgsR0FBQWttRCxHQUFBQyxFQUFBeG5ELEtBQUE2UixFQVFBLE9BUEF5MUMsS0FDQUQsRUFDQXgx
QyxFQUFBaTFDLEdBQUFydUMsUUFFQTVHLEdBQUFpMUMsSUFHQVMsRUExQ0EsR0FBQXJ4QixHQUFB
ejJCLEVBQUEsSUFHQWlyQixFQUFBcnFCLE9BQUFDLFVBR0FDLEVBQUFtcUIsRUFBQW5xQixlQU9B
aW5ELEVBQUE5OEIsRUFBQXRqQixTQUdBMC9DLEVBQUE1d0IsSUFBQSt3QixZQUFBeGxELE1BNkJB
NUIsR0FBQUQsUUFBQW1uRCxHbEhvN1hNLFNBQVNsbkQsRUFBUUQsR21IaDlYdkIsUUFBQW9uRCxH
QUFBbjFDLEdBQ0EsTUFBQTIxQyxHQUFBeG5ELEtBQUE2UixHQWpCQSxHQUFBNlksR0FBQXJxQixP
QUFBQyxVQU9Ba25ELEVBQUE5OEIsRUFBQXRqQixRQWFBdkgsR0FBQUQsUUFBQW9uRCxHbkh3K1hN
LFNBQVNubkQsRUFBUUQsR29Ici9YdkIsUUFBQXduRCxHQUFBbjJCLEVBQUF3MkIsR0FDQSxnQkFB
QXIvQyxHQUNBLE1BQUE2b0IsR0FBQXcyQixFQUFBci9DLEtBSUF2SSxFQUFBRCxRQUFBd25ELEdw
SG9nWU0sU0FBU3ZuRCxFQUFRRCxFQUFTSCxHcUhsaFloQyxHQUFBMG5ELEdBQUExbkQsRUFBQSxL
QUdBaW9ELEVBQUEsZ0JBQUFyd0Msa0JBQUFoWCxpQkFBQWdYLEtBR0E0ZSxFQUFBa3hCLEdBQUFP
LEdBQUFqOUIsU0FBQSxnQkFFQTVxQixHQUFBRCxRQUFBcTJCLEdySHloWU0sU0FBU3AyQixFQUFR
RCxHc0h6Z1l2QixRQUFBb3FCLEdBQUFuWSxHQUNBLGFBQUFBLEdBQUEsZ0JBQUFBLEdBR0FoUyxF
QUFBRCxRQUFBb3FCLEd0SHdpWU0sU0FBU25xQixFQUFRRCxFQUFTSCxHdUgzalloQyxZQW9CQSxT
QUFBMnhCLEdBQUF1MkIsRUFBQUMsRUFBQUMsRUFBQTkyQixFQUFBKzJCLElBK0JBam9ELEVBQUFE
LFFBQUF3eEIsR3ZIMmtZTSxTQUFTdnhCLEVBQVFELEVBQVNILEd3SDluWWhDLFlBRUEsSUFBQXND
LEdBQUF0QyxFQUFBLEdBQ0F3QixFQUFBeEIsRUFBQSxHQUNBNndCLEVBQUE3d0IsRUFBQSxHQUVB
SSxHQUFBRCxRQUFBLFdBQ0EsUUFBQW1vRCxHQUFBeHdDLEVBQUF6SixFQUFBaWpCLEVBQUE4MkIs
RUFBQUcsRUFBQUMsR0FDQUEsSUFBQTMzQixHQUlBcnZCLEdBQ0EsRUFDQSxtTEFNQSxRQUFBaW5E
LEtBQ0EsTUFBQUgsR0FGQUEsRUFBQXpWLFdBQUF5VixDQU1BLElBQUF0eUMsSUFDQTBnQyxNQUFB
NFIsRUFDQXZULEtBQUF1VCxFQUNBOTJCLEtBQUE4MkIsRUFDQW5lLE9BQUFtZSxFQUNBeHZDLE9B
QUF3dkMsRUFDQXpoQyxPQUFBeWhDLEVBQ0FJLE9BQUFKLEVBRUFLLElBQUFMLEVBQ0FNLFFBQUFI
LEVBQ0Exd0MsUUFBQXV3QyxFQUNBTyxXQUFBSixFQUNBMWpELEtBQUF1akQsRUFDQVEsU0FBQUws
RUFDQU0sTUFBQU4sRUFDQU8sVUFBQVAsRUFDQTdWLE1BQUE2VixFQU1BLE9BSEF6eUMsR0FBQTJi
LGVBQUFydkIsRUFDQTBULEVBQUFpQixVQUFBakIsRUFFQUEsSXhIK29ZTSxTQUFTNVYsRUFBUUQs
RUFBU0gsR3lIL3JZaEMsWUFFQSxJQUFBc0MsR0FBQXRDLEVBQUEsR0FDQXdCLEVBQUF4QixFQUFB
LEdBQ0F1QyxFQUFBdkMsRUFBQSxHQUVBNndCLEVBQUE3d0IsRUFBQSxJQUNBMnhCLEVBQUEzeEIs
RUFBQSxJQUVBSSxHQUFBRCxRQUFBLFNBQUE2VyxFQUFBMGYsR0FtQkEsUUFBQTBVLEdBQUE2ZCxH
QUNBLEdBQUE5ZCxHQUFBOGQsSUFBQUMsR0FBQUQsRUFBQUMsSUFBQUQsRUFBQUUsR0FDQSxzQkFB
QWhlLEdBQ0EsTUFBQUEsR0FnRkEsUUFBQXJoQixHQUFBQyxFQUFBQyxHQUVBLE1BQUFELEtBQUFD
LEVBR0EsSUFBQUQsR0FBQSxFQUFBQSxJQUFBLEVBQUFDLEVBR0FELE9BQUFDLE1BWUEsUUFBQW8v
QixHQUFBdm1ELEdBQ0F2QixLQUFBdUIsVUFDQXZCLEtBQUEwOEMsTUFBQSxHQUtBLFFBQUFxTCxH
QUFBQyxHQUtBLFFBQUFDLEdBQUExVyxFQUFBLzZCLEVBQUF6SixFQUFBaWpCLEVBQUE4MkIsRUFB
QUcsRUFBQUMsR0FJQSxHQUhBbDNCLEtBQUFrNEIsRUFDQWpCLEtBQUFsNkMsRUFFQW02QyxJQUFB
MzNCLEVBQ0EsR0FBQTZGLEVBRUFsMUIsR0FDQSxFQUNBLDBMQTJCQSxhQUFBc1csRUFBQXpKLEdB
Q0F3a0MsRUFFQSxHQUFBdVcsR0FEQSxPQUFBdHhDLEVBQUF6SixHQUNBLE9BQUErNUMsRUFBQSxL
QUFBRyxFQUFBLG1DQUFBajNCLEVBQUEsK0JBRUEsT0FBQTgyQixFQUFBLEtBQUFHLEVBQUEsbUNB
QUFqM0IsRUFBQSxxQ0FFQSxLQUVBZzRCLEVBQUF4eEMsRUFBQXpKLEVBQUFpakIsRUFBQTgyQixF
QUFBRyxHQWhEQSxHQW9EQWtCLEdBQUFGLEVBQUFoeEMsS0FBQSxRQUdBLE9BRkFreEMsR0FBQTVX
LFdBQUEwVyxFQUFBaHhDLEtBQUEsU0FFQWt4QyxFQUdBLFFBQUFDLEdBQUFDLEdBQ0EsUUFBQUws
R0FBQXh4QyxFQUFBekosRUFBQWlqQixFQUFBODJCLEVBQUFHLEVBQUFDLEdBQ0EsR0FBQWxxQixH
QUFBeG1CLEVBQUF6SixHQUNBdTdDLEVBQUFDLEVBQUF2ckIsRUFDQSxJQUFBc3JCLElBQUFELEVB
QUEsQ0FJQSxHQUFBRyxHQUFBQyxFQUFBenJCLEVBRUEsV0FBQThxQixHQUFBLFdBQUFoQixFQUFB
LEtBQUFHLEVBQUEsa0JBQUF1QixFQUFBLGtCQUFBeDRCLEVBQUEscUJBQUFxNEIsRUFBQSxPQUVB
LFlBRUEsTUFBQU4sR0FBQUMsR0FHQSxRQUFBVSxLQUNBLE1BQUFYLEdBQUEvbUQsRUFBQXlHLGlC
QUdBLFFBQUFraEQsR0FBQUMsR0FDQSxRQUFBWixHQUFBeHhDLEVBQUF6SixFQUFBaWpCLEVBQUE4
MkIsRUFBQUcsR0FDQSxxQkFBQTJCLEdBQ0EsVUFBQWQsR0FBQSxhQUFBYixFQUFBLG1CQUFBajNC
LEVBQUEsa0RBRUEsSUFBQWdOLEdBQUF4bUIsRUFBQXpKLEVBQ0EsS0FBQStKLE1BQUF3UixRQUFB
MFUsR0FBQSxDQUNBLEdBQUFzckIsR0FBQUMsRUFBQXZyQixFQUNBLFdBQUE4cUIsR0FBQSxXQUFB
aEIsRUFBQSxLQUFBRyxFQUFBLGtCQUFBcUIsRUFBQSxrQkFBQXQ0QixFQUFBLDBCQUVBLE9BQUEz
d0IsR0FBQSxFQUFxQkEsRUFBQTI5QixFQUFBMTdCLE9BQXNCakMsSUFBQSxDQUMzQyxHQUFBb0Is
R0FBQW1vRCxFQUFBNXJCLEVBQUEzOUIsRUFBQTJ3QixFQUFBODJCLEVBQUFHLEVBQUEsSUFBQTVu
RCxFQUFBLElBQUFrd0IsRUFDQSxJQUFBOXVCLFlBQUFFLE9BQ0EsTUFBQUYsR0FHQSxZQUVBLE1B
QUFzbkQsR0FBQUMsR0FHQSxRQUFBYSxLQUNBLFFBQUFiLEdBQUF4eEMsRUFBQXpKLEVBQUFpakIs
RUFBQTgyQixFQUFBRyxHQUNBLEdBQUFqcUIsR0FBQXhtQixFQUFBekosRUFDQSxLQUFBMkksRUFB
QXNuQixHQUFBLENBQ0EsR0FBQXNyQixHQUFBQyxFQUFBdnJCLEVBQ0EsV0FBQThxQixHQUFBLFdB
QUFoQixFQUFBLEtBQUFHLEVBQUEsa0JBQUFxQixFQUFBLGtCQUFBdDRCLEVBQUEsdUNBRUEsWUFF
QSxNQUFBKzNCLEdBQUFDLEdBR0EsUUFBQWMsR0FBQUMsR0FDQSxRQUFBZixHQUFBeHhDLEVBQUF6
SixFQUFBaWpCLEVBQUE4MkIsRUFBQUcsR0FDQSxLQUFBendDLEVBQUF6SixZQUFBZzhDLElBQUEs
Q0FDQSxHQUFBQyxHQUFBRCxFQUFBam9ELE1BQUFvbkQsRUFDQWUsRUFBQUMsRUFBQTF5QyxFQUFB
ekosR0FDQSxXQUFBKzZDLEdBQUEsV0FBQWhCLEVBQUEsS0FBQUcsRUFBQSxrQkFBQWdDLEVBQUEs
a0JBQUFqNUIsRUFBQSxpQ0FBQWc1QixFQUFBLE9BRUEsWUFFQSxNQUFBakIsR0FBQUMsR0FHQSxR
QUFBbUIsR0FBQUMsR0FNQSxRQUFBcEIsR0FBQXh4QyxFQUFBekosRUFBQWlqQixFQUFBODJCLEVB
QUFHLEdBRUEsT0FEQWpxQixHQUFBeG1CLEVBQUF6SixHQUNBMU4sRUFBQSxFQUFxQkEsRUFBQStw
RCxFQUFBOW5ELE9BQTJCakMsSUFDaEQsR0FBQW1wQixFQUFBd1UsRUFBQW9zQixFQUFBL3BELElB
Q0EsV0FJQSxJQUFBZ3FELEdBQUFoYyxLQUFBQyxVQUFBOGIsRUFDQSxXQUFBdEIsR0FBQSxXQUFB
aEIsRUFBQSxLQUFBRyxFQUFBLGVBQUFqcUIsRUFBQSxzQkFBQWhOLEVBQUEsc0JBQUFxNUIsRUFB
QSxNQWRBLE1BQUF2eUMsT0FBQXdSLFFBQUE4Z0MsR0FnQkFyQixFQUFBQyxHQWRBaG5ELEVBQUF5
RyxnQkFpQkEsUUFBQTZoRCxHQUFBVixHQUNBLFFBQUFaLEdBQUF4eEMsRUFBQXpKLEVBQUFpakIs
RUFBQTgyQixFQUFBRyxHQUNBLHFCQUFBMkIsR0FDQSxVQUFBZCxHQUFBLGFBQUFiLEVBQUEsbUJB
QUFqM0IsRUFBQSxtREFFQSxJQUFBZ04sR0FBQXhtQixFQUFBekosR0FDQXU3QyxFQUFBQyxFQUFB
dnJCLEVBQ0EsZUFBQXNyQixFQUNBLFVBQUFSLEdBQUEsV0FBQWhCLEVBQUEsS0FBQUcsRUFBQSxr
QkFBQXFCLEVBQUEsa0JBQUF0NEIsRUFBQSwwQkFFQSxRQUFBenNCLEtBQUF5NUIsR0FDQSxHQUFB
QSxFQUFBeDlCLGVBQUErRCxHQUFBLENBQ0EsR0FBQTlDLEdBQUFtb0QsRUFBQTVyQixFQUFBejVC
LEVBQUF5c0IsRUFBQTgyQixFQUFBRyxFQUFBLElBQUExakQsRUFBQWdzQixFQUNBLElBQUE5dUIs
WUFBQUUsT0FDQSxNQUFBRixHQUlBLFlBRUEsTUFBQXNuRCxHQUFBQyxHQUdBLFFBQUF1QixHQUFB
QyxHQW9CQSxRQUFBeEIsR0FBQXh4QyxFQUFBekosRUFBQWlqQixFQUFBODJCLEVBQUFHLEdBQ0Es
T0FBQTVuRCxHQUFBLEVBQXFCQSxFQUFBbXFELEVBQUFsb0QsT0FBZ0NqQyxJQUFBLENBQ3JELEdB
QUFvcUQsR0FBQUQsRUFBQW5xRCxFQUNBLFVBQUFvcUQsRUFBQWp6QyxFQUFBekosRUFBQWlqQixF
QUFBODJCLEVBQUFHLEVBQUExM0IsR0FDQSxZQUlBLFVBQUF1NEIsR0FBQSxXQUFBaEIsRUFBQSxL
QUFBRyxFQUFBLHNCQUFBajNCLEVBQUEsT0EzQkEsSUFBQWxaLE1BQUF3UixRQUFBa2hDLEdBRUEs
TUFBQXhvRCxHQUFBeUcsZUFHQSxRQUFBcEksR0FBQSxFQUFtQkEsRUFBQW1xRCxFQUFBbG9ELE9B
QWdDakMsSUFBQSxDQUNuRCxHQUFBb3FELEdBQUFELEVBQUFucUQsRUFDQSxzQkFBQW9xRCxHQVFB
LE1BUEF4b0QsSUFDQSxFQUNBLDRHQUVBeW9ELEVBQUFELEdBQ0FwcUQsR0FFQTJCLEVBQUF5Ryxn
QkFjQSxNQUFBc2dELEdBQUFDLEdBR0EsUUFBQTJCLEtBQ0EsUUFBQTNCLEdBQUF4eEMsRUFBQXpK
LEVBQUFpakIsRUFBQTgyQixFQUFBRyxHQUNBLE1BQUFsQyxHQUFBdnVDLEVBQUF6SixJQUdBLEtB
RkEsR0FBQSs2QyxHQUFBLFdBQUFoQixFQUFBLEtBQUFHLEVBQUEsc0JBQUFqM0IsRUFBQSw2QkFJ
QSxNQUFBKzNCLEdBQUFDLEdBR0EsUUFBQTRCLEdBQUFDLEdBQ0EsUUFBQTdCLEdBQUF4eEMsRUFB
QXpKLEVBQUFpakIsRUFBQTgyQixFQUFBRyxHQUNBLEdBQUFqcUIsR0FBQXhtQixFQUFBekosR0FD
QXU3QyxFQUFBQyxFQUFBdnJCLEVBQ0EsZUFBQXNyQixFQUNBLFVBQUFSLEdBQUEsV0FBQWhCLEVB
QUEsS0FBQUcsRUFBQSxjQUFBcUIsRUFBQSxzQkFBQXQ0QixFQUFBLHlCQUVBLFFBQUF6c0IsS0FB
QXNtRCxHQUFBLENBQ0EsR0FBQUosR0FBQUksRUFBQXRtRCxFQUNBLElBQUFrbUQsRUFBQSxDQUdB
LEdBQUFocEQsR0FBQWdwRCxFQUFBenNCLEVBQUF6NUIsRUFBQXlzQixFQUFBODJCLEVBQUFHLEVB
QUEsSUFBQTFqRCxFQUFBZ3NCLEVBQ0EsSUFBQTl1QixFQUNBLE1BQUFBLElBR0EsWUFFQSxNQUFB
c25ELEdBQUFDLEdBR0EsUUFBQWpELEdBQUEvbkIsR0FDQSxhQUFBQSxJQUNBLGFBQ0EsYUFDQSxn
QkFDQSxRQUNBLGVBQ0EsT0FBQUEsQ0FDQSxjQUNBLEdBQUFsbUIsTUFBQXdSLFFBQUEwVSxHQUNB
LE1BQUFBLEdBQUE4c0IsTUFBQS9FLEVBRUEsV0FBQS9uQixHQUFBdG5CLEVBQUFzbkIsR0FDQSxR
QUdBLElBQUE2TSxHQUFBQyxFQUFBOU0sRUFDQSxLQUFBNk0sRUFxQkEsUUFwQkEsSUFDQUUsR0FE
QUMsRUFBQUgsRUFBQTVxQyxLQUFBKzlCLEVBRUEsSUFBQTZNLElBQUE3TSxFQUFBaU4sU0FDQSxP
QUFBRixFQUFBQyxFQUFBbEUsUUFBQXFFLE1BQ0EsSUFBQTRhLEVBQUFoYixFQUFBajVCLE9BQ0Es
YUFLQSxRQUFBaTVCLEVBQUFDLEVBQUFsRSxRQUFBcUUsTUFBQSxDQUNBLEdBQUFDLEdBQUFMLEVB
QUFqNUIsS0FDQSxJQUFBczVCLElBQ0EyYSxFQUFBM2EsRUFBQSxJQUNBLFNBU0EsUUFDQSxTQUNB
LFVBSUEsUUFBQTJmLEdBQUF6QixFQUFBdHJCLEdBRUEsaUJBQUFzckIsSUFLQSxXQUFBdHJCLEVB
QUEsa0JBS0Esa0JBQUE3SCxTQUFBNkgsWUFBQTdILFNBUUEsUUFBQW96QixHQUFBdnJCLEdBQ0Es
R0FBQXNyQixTQUFBdHJCLEVBQ0EsT0FBQWxtQixPQUFBd1IsUUFBQTBVLEdBQ0EsUUFFQUEsWUFB
QXJCLFFBSUEsU0FFQW91QixFQUFBekIsRUFBQXRyQixHQUNBLFNBRUFzckIsRUFLQSxRQUFBRyxH
QUFBenJCLEdBQ0Esc0JBQUFBLElBQUEsT0FBQUEsRUFDQSxTQUFBQSxDQUVBLElBQUFzckIsR0FB
QUMsRUFBQXZyQixFQUNBLGVBQUFzckIsRUFBQSxDQUNBLEdBQUF0ckIsWUFBQWx2QixNQUNBLFlB
Q08sSUFBQWt2QixZQUFBckIsUUFDUCxlQUdBLE1BQUEyc0IsR0FLQSxRQUFBb0IsR0FBQTU0QyxH
QUNBLEdBQUFuSCxHQUFBOCtDLEVBQUEzM0MsRUFDQSxRQUFBbkgsR0FDQSxZQUNBLGFBQ0EsWUFB
QUEsQ0FDQSxlQUNBLFdBQ0EsYUFDQSxXQUFBQSxDQUNBLFNBQ0EsTUFBQUEsSUFLQSxRQUFBdS9D
LEdBQUFsc0IsR0FDQSxNQUFBQSxHQUFBbHdCLGFBQUFrd0IsRUFBQWx3QixZQUFBaE0sS0FHQWs4
QixFQUFBbHdCLFlBQUFoTSxLQUZBb25ELEVBbGVBLEdBQUFOLEdBQUEsa0JBQUF6eUIsZ0JBQUE2
VSxTQUNBNmQsRUFBQSxhQXNFQUssRUFBQSxnQkFJQXh6QyxHQUNBMGdDLE1BQUFnVCxFQUFBLFNB
Q0EzVSxLQUFBMlUsRUFBQSxXQUNBbDRCLEtBQUFrNEIsRUFBQSxZQUNBdmYsT0FBQXVmLEVBQUEs
VUFDQTV3QyxPQUFBNHdDLEVBQUEsVUFDQTdpQyxPQUFBNmlDLEVBQUEsVUFDQWhCLE9BQUFnQixF
QUFBLFVBRUFmLElBQUFxQixJQUNBcEIsUUFBQXFCLEVBQ0FseUMsUUFBQW95QyxJQUNBdEIsV0FB
QXVCLEVBQ0FybEQsS0FBQWttRCxJQUNBbkMsU0FBQThCLEVBQ0E3QixNQUFBMEIsRUFDQXpCLFVB
QUE2QixFQUNBalksTUFBQXNZLEVBOFlBLE9BN1dBOUIsR0FBQXZvRCxVQUFBb0IsTUFBQXBCLFVB
MFdBbVYsRUFBQTJiLGlCQUNBM2IsRUFBQWlCLFVBQUFqQixFQUVBQSxJekhndFlNLFNBQVM1VixF
QUFRRCxFQUFTSCxHMEg5c1poQyxZQUVBSSxHQUFBRCxRQUFBSCxFQUFBLE0xSHF0Wk0sU0FBU0ks
RUFBUUQsRzJIN3NadkIsWUFFQSxJQUFBbXJELElBQ0F2NEMsWUFFQXc0QyxlQUFBLEVBQ0FDLGVB
QUEsRUFDQUMsZ0JBQUEsRUFDQUMsY0FBQSxFQUNBQyxlQUFBLEVBQ0FDLG9CQUFBLEVBQ0FDLGFB
QUEsRUFDQUMsdUJBQUEsRUFFQUMsb0JBQUEsRUFDQUMsZUFBQSxFQUNBQyxnQkFBQSxFQUNBQyxn
QkFBQSxFQUNBQyxhQUFBLEVBQ0FDLGFBQUEsRUFDQUMsaUJBQUEsRUFDQUMsdUJBQUEsRUFDQUMs
bUJBQUEsRUFDQUMsbUJBQUEsRUFDQUMsZUFBQSxFQUNBQyxnQkFBQSxFQUNBQyxnQkFBQSxFQUNB
QyxnQkFBQSxFQUNBQyxZQUFBLEVBQ0FDLGdCQUFBLEVBQ0FDLGdCQUFBLEVBQ0FDLGdCQUFBLEVB
Q0FDLGlCQUFBLEVBRUFDLGNBQUEsRUFDQUMsWUFBQSxFQUNBQyxZQUFBLEVBQ0FDLGdCQUFBLEVB
RUFDLGtCQUFBLEVBQ0FDLGVBQUEsRUFFQUMsd0JBQUEsRUFDQUMsZ0JBQUEsRUFDQUMsZ0JBQUEs
RUFDQUMsZUFBQSxFQUNBQyxnQkFBQSxFQUNBQyxtQkFBQSxFQUNBQyxvQkFBQSxFQUNBQyxjQUFB
LEVBQ0FDLGtCQUFBLEVBQ0FDLFlBQUEsRUFDQUMsZ0JBQUEsRUFDQUMsZ0JBQUEsRUFDQUMsZ0JB
QUEsRUFDQUMsZUFBQSxFQUNBQyxlQUFBLEdBRUFyN0MscUJBQ0FDLG9CQUdBOVMsR0FBQUQsUUFB
QW1yRCxHM0g2dFpNLFNBQVNsckQsRUFBUUQsRUFBU0gsRzRIM3haaEMsWUFFQSxJQUFBNEgsR0FB
QTVILEVBQUEsR0FFQW0yQixFQUFBbjJCLEVBQUEsSUFFQXV1RCxHQUNBQyxrQkFBQSxXQUNBcjRC
LEVBQUF2dUIsRUFBQVIsb0JBQUE5RixRQUlBbEIsR0FBQUQsUUFBQW91RCxHNUgyeVpNLFNBQVNu
dUQsRUFBUUQsRUFBU0gsRzZIdnpaaEMsWUFnQ0EsU0FBQXl1RCxLQUNBLEdBQUFDLEdBQUE1bUQs
T0FBQTRtRCxLQUNBLHVCQUFBQSxJQUFBLGtCQUFBQSxHQUFBdDNDLFNBQUE0a0MsU0FBQTBTLEVB
QUF0M0MsVUFBQSxRQThDQSxRQUFBdTNDLEdBQUEzZ0QsR0FDQSxPQUFBQSxFQUFBZ1gsU0FBQWhY
LEVBQUFrWCxRQUFBbFgsRUFBQW1YLFlBRUFuWCxFQUFBZ1gsU0FBQWhYLEVBQUFrWCxRQVNBLFFB
QUEwcEMsR0FBQTV6QyxHQUNBLE9BQUFBLEdBQ0EsMEJBQ0EsTUFBQW1TLEdBQUEwaEMsZ0JBQ0Es
eUJBQ0EsTUFBQTFoQyxHQUFBMmhDLGNBQ0EsNEJBQ0EsTUFBQTNoQyxHQUFBNGhDLG1CQVlBLFFB
QUFDLEdBQUFoMEMsRUFBQWhOLEdBQ0EscUJBQUFnTixHQUFBaE4sRUFBQXFtQixVQUFBNDZCLEVB
VUEsUUFBQUMsR0FBQWwwQyxFQUFBaE4sR0FDQSxPQUFBZ04sR0FDQSxlQUVBLE1BQUFtMEMsR0FB
QWxpQyxRQUFBamYsRUFBQXFtQixhQUNBLGtCQUdBLE1BQUFybUIsR0FBQXFtQixVQUFBNDZCLENB
Q0EsbUJBQ0EsbUJBQ0EsY0FFQSxRQUNBLFNBQ0EsVUFhQSxRQUFBRyxHQUFBcGhELEdBQ0EsR0FB
QWlRLEdBQUFqUSxFQUFBaVEsTUFDQSx1QkFBQUEsSUFBQSxRQUFBQSxHQUNBQSxFQUFBK0osS0FF
QSxLQVNBLFFBQUFxbkMsR0FBQXIwQyxFQUFBak4sRUFBQUMsRUFBQUMsR0FDQSxHQUFBOG5CLEdB
Q0F1NUIsQ0FZQSxJQVZBQyxFQUNBeDVCLEVBQUE2NEIsRUFBQTV6QyxHQUNHdzBDLEVBSUFOLEVB
QUFsMEMsRUFBQWhOLEtBQ0grbkIsRUFBQTVJLEVBQUEyaEMsZ0JBSkFFLEVBQUFoMEMsRUFBQWhO
LEtBQ0ErbkIsRUFBQTVJLEVBQUEwaEMsbUJBTUE5NEIsRUFDQSxXQUdBMDVCLEtBR0FELEdBQUF6
NUIsSUFBQTVJLEVBQUEwaEMsaUJBRUs5NEIsSUFBQTVJLEVBQUEyaEMsZ0JBQ0xVLElBQ0FGLEVB
QUFFLEVBQUFFLFdBSEFGLEVBQUFHLEVBQUEvbEQsVUFBQXFFLEdBUUEsSUFBQWtCLEdBQUF5Z0Qs
RUFBQWhtRCxVQUFBbXNCLEVBQUFob0IsRUFBQUMsRUFBQUMsRUFFQSxJQUFBcWhELEVBR0FuZ0Qs
RUFBQTZZLEtBQUFzbkMsTUFDRyxDQUNILEdBQUFPLEdBQUFULEVBQUFwaEQsRUFDQSxRQUFBNmhE
LElBQ0ExZ0QsRUFBQTZZLEtBQUE2bkMsR0FLQSxNQURBNXlDLEdBQUFQLDZCQUFBdk4sR0FDQUEs
RUFRQSxRQUFBMmdELEdBQUE5MEMsRUFBQWhOLEdBQ0EsT0FBQWdOLEdBQ0Esd0JBQ0EsTUFBQW8w
QyxHQUFBcGhELEVBQ0EsbUJBZUEsR0FBQWttQyxHQUFBbG1DLEVBQUFrbUMsS0FDQSxPQUFBQSxL
QUFBNmIsRUFDQSxNQUdBQyxHQUFBLEVBQ0FDLEVBRUEsb0JBRUEsR0FBQUMsR0FBQWxpRCxFQUFB
Z2EsSUFLQSxPQUFBa29DLEtBQUFELEdBQUFELEVBQ0EsS0FHQUUsQ0FFQSxTQUVBLGFBWUEsUUFB
QUMsR0FBQW4xQyxFQUFBaE4sR0FLQSxHQUFBd2hELEVBQUEsQ0FDQSx5QkFBQXgwQyxJQUFBdTBD
LEdBQUFMLEVBQUFsMEMsRUFBQWhOLEdBQUEsQ0FDQSxHQUFBa2lELEdBQUFWLEVBQUFFLFNBR0Es
T0FGQUMsR0FBQTFpRCxRQUFBdWlELEdBQ0FBLEVBQUEsS0FDQVUsRUFFQSxZQUdBLE9BQUFsMUMs
R0FDQSxlQUdBLFdBQ0EsbUJBaUJBLE1BQUFoTixHQUFBa21DLFFBQUF5YSxFQUFBM2dELEdBQ0Ex
SyxPQUFBRyxhQUFBdUssRUFBQWttQyxPQUVBLElBQ0EseUJBQ0EsTUFBQXViLEdBQUEsS0FBQXpo
RCxFQUFBZ2EsSUFDQSxTQUNBLGFBVUEsUUFBQW9vQyxHQUFBcDFDLEVBQUFqTixFQUFBQyxFQUFB
QyxHQUNBLEdBQUFpaUQsRUFVQSxJQVBBQSxFQURBRyxFQUNBUCxFQUFBOTBDLEVBQUFoTixHQUVB
bWlELEVBQUFuMUMsRUFBQWhOLElBS0FraUQsRUFDQSxXQUdBLElBQUEvZ0QsR0FBQW1oRCxFQUFB
MW1ELFVBQUF1akIsRUFBQW9qQyxZQUFBeGlELEVBQUFDLEVBQUFDLEVBSUEsT0FGQWtCLEdBQUE2
WSxLQUFBa29DLEVBQ0FqekMsRUFBQVAsNkJBQUF2TixHQUNBQSxFQXJWQSxHQUFBOE4sR0FBQWpk
LEVBQUEsSUFDQWlJLEVBQUFqSSxFQUFBLEdBQ0EydkQsRUFBQTN2RCxFQUFBLEtBQ0E0dkQsRUFB
QTV2RCxFQUFBLEtBQ0Fzd0QsRUFBQXR3RCxFQUFBLEtBRUFtdkQsR0FBQSxZQUNBRixFQUFBLElB
RUFNLEVBQUF0bkQsRUFBQUosV0FBQSxvQkFBQUMsUUFFQTZKLEVBQUEsSUFDQTFKLEdBQUFKLFdB
QUEsZ0JBQUFFLFlBQ0E0SixFQUFBNUosU0FBQTRKLGFBTUEsSUFBQTArQyxHQUFBcG9ELEVBQUFK
LFdBQUEsYUFBQUMsVUFBQTZKLElBQUE4OEMsSUFLQWdCLEVBQUF4bkQsRUFBQUosYUFBQTBuRCxH
QUFBNTlDLEtBQUEsR0FBQUEsR0FBQSxJQVdBbytDLEVBQUEsR0FDQUUsRUFBQTNzRCxPQUFBRyxh
QUFBc3NELEdBR0E1aUMsR0FDQW9qQyxhQUNBMTBDLHlCQUNBMjBDLFFBQUEsZ0JBQ0FDLFNBQUEs
d0JBRUEvc0MsY0FBQSw4REFFQW9yQyxnQkFDQWp6Qyx5QkFDQTIwQyxRQUFBLG1CQUNBQyxTQUFB
LDJCQUVBL3NDLGNBQUEscUZBRUFtckMsa0JBQ0FoekMseUJBQ0EyMEMsUUFBQSxxQkFDQUMsU0FB
QSw2QkFFQS9zQyxjQUFBLHVGQUVBcXJDLG1CQUNBbHpDLHlCQUNBMjBDLFFBQUEsc0JBQ0FDLFNB
QUEsOEJBRUEvc0MsY0FBQSx5RkFLQXNzQyxHQUFBLEVBc0ZBUixFQUFBLEtBNk1Ba0IsR0FDQXZq
QyxhQUVBcFMsY0FBQSxTQUFBQyxFQUFBak4sRUFBQUMsRUFBQUMsR0FDQSxPQUFBb2hELEVBQUFy
MEMsRUFBQWpOLEVBQUFDLEVBQUFDLEdBQUFtaUQsRUFBQXAxQyxFQUFBak4sRUFBQUMsRUFBQUMs
S0FJQTdOLEdBQUFELFFBQUF1d0QsRzdIdTBaTSxTQUFTdHdELEVBQVFELEVBQVNILEc4SDNyYWhD
LFlBRUEsSUFBQWc4QixHQUFBaDhCLEVBQUEsSUFDQWlJLEVBQUFqSSxFQUFBLEdBSUEyd0QsR0FI
QTN3RCxFQUFBLEdBRUFBLEVBQUEsSUFDQUEsRUFBQSxNQUNBb21ELEVBQUFwbUQsRUFBQSxLQUNB
dW1ELEVBQUF2bUQsRUFBQSxLQUdBNHdELEdBRkE1d0QsRUFBQSxHQUVBdW1ELEVBQUEsU0FBQXNL
LEdBQ0EsTUFBQXpLLEdBQUF5SyxNQUdBQyxHQUFBLEVBQ0FDLEVBQUEsVUFDQSxJQUFBOW9ELEVB
QUFKLFVBQUEsQ0FDQSxHQUFBbXBELEdBQUFqcEQsU0FBQUMsY0FBQSxPQUFBaXBELEtBQ0EsS0FF
QUQsRUFBQXoxQixLQUFBLEdBQ0csTUFBQTM1QixHQUNIa3ZELEdBQUEsRUFHQTl1RCxTQUFBK0Ys
U0FBQXc0QixnQkFBQTB3QixNQUFBQyxXQUNBSCxFQUFBLGNBTUEsR0FrRkFJLElBY0FDLHNCQUFB
LFNBQUFDLEVBQUEvckQsR0FDQSxHQUFBZ3NELEdBQUEsRUFDQSxRQUFBVCxLQUFBUSxHQUNBLEdB
QUFBLEVBQUF2d0QsZUFBQSt2RCxHQUFBLENBR0EsR0FBQVUsR0FBQSxJQUFBVixFQUFBNWpDLFFB
QUEsTUFDQXVrQyxFQUFBSCxFQUFBUixFQU1BLE9BQUFXLElBQ0FGLEdBQUFWLEVBQUFDLEdBQUEs
SUFDQVMsR0FBQVgsRUFBQUUsRUFBQVcsRUFBQWxzRCxFQUFBaXNELEdBQUEsS0FHQSxNQUFBRCxJ
QUFBLE1BV0FHLGtCQUFBLFNBQUExc0QsRUFBQXNzRCxFQUFBL3JELEdBU0EsR0FBQTJyRCxHQUFB
bHNELEVBQUFrc0QsS0FDQSxRQUFBSixLQUFBUSxHQUNBLEdBQUFBLEVBQUF2d0QsZUFBQSt2RCxH
QUFBLENBR0EsR0FBQVUsR0FBQSxJQUFBVixFQUFBNWpDLFFBQUEsTUFNQXVrQyxFQUFBYixFQUFB
RSxFQUFBUSxFQUFBUixHQUFBdnJELEVBQUFpc0QsRUFJQSxJQUhBLFVBQUFWLEdBQUEsYUFBQUEs
SUFDQUEsRUFBQUUsR0FFQVEsRUFDQU4sRUFBQVMsWUFBQWIsRUFBQVcsT0FDTyxJQUFBQSxFQUNQ
UCxFQUFBSixHQUFBVyxNQUNPLENBQ1AsR0FBQUcsR0FBQWIsR0FBQTkwQixFQUFBdEMsNEJBQUFt
M0IsRUFDQSxJQUFBYyxFQUdBLE9BQUFDLEtBQUFELEdBQ0FWLEVBQUFXLEdBQUEsT0FHQVgsR0FB
QUosR0FBQSxNQU9BendELEdBQUFELFFBQUFneEQsRzlIMnNhTSxTQUFTL3dELEVBQVFELEVBQVNI
LEcrSHQ1YWhDLFlBd0JBLFNBQUE2eEQsR0FBQW5zRCxFQUFBc0ksRUFBQXpKLEdBQ0EsR0FBQTRL
LEdBQUF0QixFQUFBakUsVUFBQXVqQixFQUFBMmtDLE9BQUFwc0QsRUFBQXNJLEVBQUF6SixFQUdB
LE9BRkE0SyxHQUFBbEUsS0FBQSxTQUNBZ1MsRUFBQVAsNkJBQUF2TixHQUNBQSxFQVdBLFFBQUE0
aUQsR0FBQXB4QixHQUNBLEdBQUF0dkIsR0FBQXN2QixFQUFBdHZCLFVBQUFzdkIsRUFBQXR2QixT
QUFBVyxhQUNBLGtCQUFBWCxHQUFBLFVBQUFBLEdBQUEsU0FBQXN2QixFQUFBMTFCLEtBU0EsUUFB
QSttRCxHQUFBaGtELEdBQ0EsR0FBQW1CLEdBQUEwaUQsRUFBQUksRUFBQWprRCxFQUFBMFAsRUFB
QTFQLEdBYUE1RSxHQUFBVSxlQUFBb29ELEVBQUEvaUQsR0FHQSxRQUFBK2lELEdBQUEvaUQsR0FD
QThLLEVBQUFvQixjQUFBbE0sR0FDQThLLEVBQUFxQixtQkFBQSxHQUdBLFFBQUE2MkMsR0FBQTV0
RCxFQUFBd0osR0FDQXVvQixFQUFBL3hCLEVBQ0EwdEQsRUFBQWxrRCxFQUNBdW9CLEVBQUFodUIs
WUFBQSxXQUFBMHBELEdBR0EsUUFBQUksS0FDQTk3QixJQUdBQSxFQUFBTCxZQUFBLFdBQUErN0Is
R0FDQTE3QixFQUFBLEtBQ0EyN0IsRUFBQSxNQUdBLFFBQUFJLEdBQUF0a0QsRUFBQUMsR0FDQSxH
QUFBc2tELEdBQUFwcUIsRUFBQVkscUJBQUEvNkIsR0FDQTRMLEVBQUEzTCxFQUFBMkwsYUFBQSxH
QUFBNDRDLEVBQUFDLDBCQUVBLElBQUFGLEdBQUEzNEMsRUFDQSxNQUFBNUwsR0FJQSxRQUFBMGtE
LEdBQUF6M0MsRUFBQWpOLEdBQ0EsaUJBQUFpTixFQUNBLE1BQUFqTixHQUlBLFFBQUEya0QsR0FB
QTEzQyxFQUFBelcsRUFBQXdKLEdBQ0EsYUFBQWlOLEdBR0FvM0MsSUFDQUQsRUFBQTV0RCxFQUFB
d0osSUFDRyxZQUFBaU4sR0FDSG8zQyxJQW9CQSxRQUFBTyxHQUFBcHVELEVBQUF3SixHQUNBdW9C
LEVBQUEveEIsRUFDQTB0RCxFQUFBbGtELEVBQ0F1b0IsRUFBQWh1QixZQUFBLG1CQUFBc3FELEdB
T0EsUUFBQUMsS0FDQXY4QixJQUdBQSxFQUFBTCxZQUFBLG1CQUFBMjhCLEdBRUF0OEIsRUFBQSxL
QUNBMjdCLEVBQUEsTUFPQSxRQUFBVyxHQUFBNWtELEdBQ0EsVUFBQUEsRUFBQTRGLGNBR0F5K0Ms
RUFBQUosRUFBQWprRCxJQUNBZ2tELEVBQUFoa0QsR0FJQSxRQUFBOGtELEdBQUE5M0MsRUFBQXpX
LEVBQUF3SixHQUNBLGFBQUFpTixHQWNBNjNDLElBQ0FGLEVBQUFwdUQsRUFBQXdKLElBQ0csWUFB
QWlOLEdBQ0g2M0MsSUFLQSxRQUFBRSxHQUFBLzNDLEVBQUFqTixFQUFBQyxHQUNBLDBCQUFBZ04s
R0FBQSxhQUFBQSxHQUFBLGVBQUFBLEVBV0EsTUFBQXEzQyxHQUFBSixFQUFBamtELEdBT0EsUUFB
QWdsRCxHQUFBcnlCO0FBSUEsR0FBQXR2QixHQUFBc3ZCLEVBQUF0dkIsUUFDQSxPQUFBQSxJQUFB
LFVBQUFBLEVBQUFXLGdCQUFBLGFBQUEydUIsRUFBQTExQixNQUFBLFVBQUEwMUIsRUFBQTExQixN
QUdBLFFBQUFnb0QsR0FBQWo0QyxFQUFBak4sRUFBQUMsR0FDQSxnQkFBQWdOLEVBQ0EsTUFBQXEz
QyxHQUFBdGtELEVBQUFDLEdBSUEsUUFBQWtsRCxHQUFBbDRDLEVBQUFqTixFQUFBQyxHQUNBLGdC
QUFBZ04sR0FBQSxjQUFBQSxFQUNBLE1BQUFxM0MsR0FBQXRrRCxFQUFBQyxHQUlBLFFBQUFtbEQs
R0FBQXp0RCxFQUFBWCxHQUVBLFNBQUFXLEVBQUEsQ0FLQSxHQUFBeXBDLEdBQUF6cEMsRUFBQXU0
QixlQUFBbDVCLEVBQUFrNUIsYUFFQSxJQUFBa1IsS0FBQWlrQixZQUFBLFdBQUFydUQsRUFBQWtH
LEtBQUEsQ0FLQSxHQUFBbUgsR0FBQSxHQUFBck4sRUFBQXFOLEtBQ0FyTixHQUFBRyxhQUFBLFdB
QUFrTixHQUNBck4sRUFBQW93QixhQUFBLFFBQUEvaUIsS0E5T0EsR0FBQTZILEdBQUFqYSxFQUFB
LElBQ0FpZCxFQUFBamQsRUFBQSxJQUNBaUksRUFBQWpJLEVBQUEsR0FDQTRILEVBQUE1SCxFQUFB
LEdBQ0FvSixFQUFBcEosRUFBQSxHQUNBNk4sRUFBQTdOLEVBQUEsSUFFQWtvQyxFQUFBbG9DLEVB
QUEsSUFDQTBkLEVBQUExZCxFQUFBLElBQ0E0ZSxFQUFBNWUsRUFBQSxJQUNBMnBDLEVBQUEzcEMs
RUFBQSxJQUVBbXRCLEdBQ0Eya0MsUUFDQWoyQyx5QkFDQTIwQyxRQUFBLFdBQ0FDLFNBQUEsbUJB
RUEvc0MsY0FBQSx1R0FhQTRTLEVBQUEsS0FDQTI3QixFQUFBLEtBVUFvQixHQUFBLENBQ0FwckQs
R0FBQUosWUFFQXdyRCxFQUFBejBDLEVBQUEsYUFBQTdXLFNBQUE0SixjQUFBNUosU0FBQTRKLGFB
QUEsR0FxRUEsSUFBQTJoRCxJQUFBLENBQ0FyckQsR0FBQUosWUFJQXlyRCxFQUFBMTBDLEVBQUEs
NkJBQUE3VyxxQkFBQTRKLGFBQUEsR0FxSUEsSUFBQTRnRCxJQUNBcGxDLGFBRUFxbEMsNEJBQUEs
RUFDQWUsdUJBQUFELEVBRUF2NEMsY0FBQSxTQUFBQyxFQUFBak4sRUFBQUMsRUFBQUMsR0FDQSxH
QUVBdWxELEdBQUFDLEVBRkFDLEVBQUEzbEQsRUFBQW5HLEVBQUFSLG9CQUFBMkcsR0FBQWpHLE1B
b0JBLElBakJBaXFELEVBQUEyQixHQUNBTCxFQUNBRyxFQUFBZixFQUVBZ0IsRUFBQWYsRUFFSy9v
QixFQUFBK3BCLEdBQ0xKLEVBQ0FFLEVBQUFOLEdBRUFNLEVBQUFULEVBQ0FVLEVBQUFYLEdBRUtF
LEVBQUFVLEtBQ0xGLEVBQUFQLEdBR0FPLEVBQUEsQ0FDQSxHQUFBOXRELEdBQUE4dEQsRUFBQXg0
QyxFQUFBak4sRUFBQUMsRUFDQSxJQUFBdEksRUFBQSxDQUNBLEdBQUF5SixHQUFBMGlELEVBQUFu
c0QsRUFBQXNJLEVBQUFDLEVBQ0EsT0FBQWtCLElBSUFza0QsR0FDQUEsRUFBQXo0QyxFQUFBMDRD
LEVBQUEzbEQsR0FJQSxZQUFBaU4sR0FDQW00QyxFQUFBcGxELEVBQUEybEQsSUFLQXR6RCxHQUFB
RCxRQUFBb3lELEcvSHM2YU0sU0FBU255RCxFQUFRRCxFQUFTSCxHZ0lsdGJoQyxZQUVBLElBQUE0
RyxHQUFBNUcsRUFBQSxHQUVBc1IsRUFBQXRSLEVBQUEsSUFDQWlJLEVBQUFqSSxFQUFBLEdBRUEy
akQsRUFBQTNqRCxFQUFBLEtBQ0FzQyxFQUFBdEMsRUFBQSxHQUdBZ3NCLEdBRkFoc0IsRUFBQSxJ
QVdBaXNCLGlDQUFBLFNBQUEwbkMsRUFBQTUrQyxHQUtBLEdBSkE5TSxFQUFBSixVQUFBLE9BQUFq
QixFQUFBLE1BQ0FtTyxFQUFBLE9BQUFuTyxFQUFBLE1BQ0EsU0FBQStzRCxFQUFBdGlELFNBQUF6
SyxFQUFBLGFBRUEsZ0JBQUFtTyxHQUFBLENBQ0EsR0FBQTYrQyxHQUFBalEsRUFBQTV1QyxFQUFB
elMsR0FBQSxFQUNBcXhELEdBQUEzc0QsV0FBQThKLGFBQUE4aUQsRUFBQUQsT0FFQXJpRCxHQUFB
WCxxQkFBQWdqRCxFQUFBNStDLEtBS0EzVSxHQUFBRCxRQUFBNnJCLEdoSWt1Yk0sU0FBUzVyQixF
QUFRRCxHaUlwd2J2QixZQVlBLElBQUEwekQsSUFBQSxxSkFFQXp6RCxHQUFBRCxRQUFBMHpELEdq
SW94Yk0sU0FBU3p6RCxFQUFRRCxFQUFTSCxHa0lseWJoQyxZQUVBLElBQUFpZCxHQUFBamQsRUFB
QSxJQUNBNEgsRUFBQTVILEVBQUEsR0FDQXlrQixFQUFBemtCLEVBQUEsSUFFQW10QixHQUNBMm1D
LFlBQ0F6NUMsaUJBQUEsZUFDQXFKLGNBQUEsK0JBRUFxd0MsWUFDQTE1QyxpQkFBQSxlQUNBcUos
Y0FBQSxnQ0FJQXN3QyxHQUNBN21DLGFBU0FwUyxjQUFBLFNBQUFDLEVBQUFqTixFQUFBQyxFQUFB
QyxHQUNBLG9CQUFBK00sSUFBQWhOLEVBQUF1WCxlQUFBdlgsRUFBQXdYLGFBQ0EsV0FFQSxvQkFB
QXhLLEdBQUEsaUJBQUFBLEVBRUEsV0FHQSxJQUFBaTVDLEVBQ0EsSUFBQWhtRCxFQUFBbkcsU0FB
QW1HLEVBRUFnbUQsRUFBQWhtRCxNQUNLLENBRUwsR0FBQTRQLEdBQUE1UCxFQUFBNlAsYUFFQW0y
QyxHQURBcDJDLEVBQ0FBLEVBQUFFLGFBQUFGLEVBQUFHLGFBRUFsVyxPQUlBLEdBQUFyRCxHQUNB
RSxDQUNBLG9CQUFBcVcsRUFBQSxDQUNBdlcsRUFBQXNKLENBQ0EsSUFBQW1tRCxHQUFBbG1ELEVB
QUF1WCxlQUFBdlgsRUFBQTBYLFNBQ0EvZ0IsR0FBQXV2RCxFQUFBdHNELEVBQUFmLDJCQUFBcXRE
LEdBQUEsU0FHQXp2RCxHQUFBLEtBQ0FFLEVBQUFvSixDQUdBLElBQUF0SixJQUFBRSxFQUVBLFdB
R0EsSUFBQThuQixHQUFBLE1BQUFob0IsRUFBQXd2RCxFQUFBcnNELEVBQUFSLG9CQUFBM0MsR0FD
QTB2RCxFQUFBLE1BQUF4dkQsRUFBQXN2RCxFQUFBcnNELEVBQUFSLG9CQUFBekMsR0FFQWtZLEVB
QUE0SCxFQUFBN2EsVUFBQXVqQixFQUFBNG1DLFdBQUF0dkQsRUFBQXVKLEVBQUFDLEVBQ0E0TyxH
QUFBNVIsS0FBQSxhQUNBNFIsRUFBQXRZLE9BQUFrb0IsRUFDQTVQLEVBQUEwSSxjQUFBNHVDLENB
RUEsSUFBQXIzQyxHQUFBMkgsRUFBQTdhLFVBQUF1akIsRUFBQTJtQyxXQUFBbnZELEVBQUFxSixF
QUFBQyxFQU9BLE9BTkE2TyxHQUFBN1IsS0FBQSxhQUNBNlIsRUFBQXZZLE9BQUE0dkQsRUFDQXIz
QyxFQUFBeUksY0FBQWtILEVBRUF4UCxFQUFBTCwrQkFBQUMsRUFBQUMsRUFBQXJZLEVBQUFFLElB
RUFrWSxFQUFBQyxJQUlBMWMsR0FBQUQsUUFBQTZ6RCxHbElremJNLFNBQVM1ekQsRUFBUUQsRUFB
U0gsR21JeDRiaEMsWUFtQkEsU0FBQTJ2RCxHQUFBbjVCLEdBQ0FsMUIsS0FBQTh5RCxNQUFBNTlC
LEVBQ0FsMUIsS0FBQSt5RCxXQUFBL3lELEtBQUFtOEMsVUFDQW44QyxLQUFBZ3pELGNBQUEsS0Fw
QkEsR0FBQW5vRCxHQUFBbk0sRUFBQSxHQUVBb00sRUFBQXBNLEVBQUEsSUFFQXluQyxFQUFBem5D
LEVBQUEsR0FtQkFtTSxHQUFBd2pELEVBQUE5dUQsV0FDQW1NLFdBQUEsV0FDQTFMLEtBQUE4eUQs
TUFBQSxLQUNBOXlELEtBQUEreUQsV0FBQSxLQUNBL3lELEtBQUFnekQsY0FBQSxNQVFBN1csUUFB
QSxXQUNBLGVBQUFuOEMsTUFBQTh5RCxNQUNBOXlELEtBQUE4eUQsTUFBQWhpRCxNQUVBOVEsS0FB
QTh5RCxNQUFBM3NCLE1BU0Fpb0IsUUFBQSxXQUNBLEdBQUFwdUQsS0FBQWd6RCxjQUNBLE1BQUFo
ekQsTUFBQWd6RCxhQUdBLElBQUE3eUIsR0FHQUUsRUFGQTR5QixFQUFBanpELEtBQUEreUQsV0FD
QUcsRUFBQUQsRUFBQTN4RCxPQUVBNnhELEVBQUFuekQsS0FBQW04QyxVQUNBaVgsRUFBQUQsRUFB
QTd4RCxNQUVBLEtBQUE2K0IsRUFBQSxFQUFtQkEsRUFBQSt5QixHQUNuQkQsRUFBQTl5QixLQUFB
Z3pCLEVBQUFoekIsR0FEd0NBLEtBTXhDLEdBQUFrekIsR0FBQUgsRUFBQS95QixDQUNBLEtBQUFF
LEVBQUEsRUFBaUJBLEdBQUFnekIsR0FDakJKLEVBQUFDLEVBQUE3eUIsS0FBQTh5QixFQUFBQyxF
QUFBL3lCLEdBRGdDQSxLQU1oQyxHQUFBaXpCLEdBQUFqekIsRUFBQSxJQUFBQSxFQUFBMy9CLE1B
RUEsT0FEQVYsTUFBQWd6RCxjQUFBRyxFQUFBeHpELE1BQUF3Z0MsRUFBQW16QixHQUNBdHpELEtB
QUFnekQsaUJBSUFsb0QsRUFBQWlCLGFBQUFzaUQsR0FFQXZ2RCxFQUFBRCxRQUFBd3ZELEduSXc1
Yk0sU0FBU3Z2RCxFQUFRRCxFQUFTSCxHb0kzK2JoQyxZQUVBLElBQUFzSCxHQUFBdEgsRUFBQSxJ
QUVBdVMsRUFBQWpMLEVBQUFzRyxVQUFBMkUsa0JBQ0FDLEVBQUFsTCxFQUFBc0csVUFBQTRFLGtC
QUNBQyxFQUFBbkwsRUFBQXNHLFVBQUE2RSxrQkFDQUMsRUFBQXBMLEVBQUFzRyxVQUFBOEUsMkJB
Q0FDLEVBQUFyTCxFQUFBc0csVUFBQStFLDZCQUVBa2lELEdBQ0F6aEQsa0JBQUE2cEIsT0FBQXA4
QixVQUFBaVIsS0FBQXlHLEtBQUEsR0FBQTBrQixRQUFBLGlCQUFBMzFCLEVBQUErTSxvQkFBQSxR
QUNBdEIsWUFJQStoRCxPQUFBLEVBQ0FDLGNBQUEsRUFDQUMsVUFBQSxFQUNBbFcsT0FBQSxFQUNB
bVcsZ0JBQUF6aUQsRUFDQTBpRCxrQkFBQSxFQUNBQyxJQUFBLEVBRUFDLEdBQUEsRUFDQUMsTUFB
QTdpRCxFQUNBOGlELGFBQUEsRUFHQUMsU0FBQS9pRCxFQUNBeWlCLFFBQUF6aUIsRUFDQWdqRCxZ
QUFBLEVBQ0FDLFlBQUEsRUFDQUMsUUFBQSxFQUNBQyxVQUFBLEVBQ0FobEMsUUFBQXBlLEVBQUFD
LEVBQ0FvakQsS0FBQSxFQUNBQyxRQUFBLEVBQ0F0aEIsVUFBQSxFQUNBdWhCLEtBQUFwakQsRUFD
QXFqRCxRQUFBLEVBQ0F4cEMsUUFBQSxFQUNBcVUsZ0JBQUEsRUFDQW8xQixZQUFBLEVBQ0FDLFNB
QUF6akQsRUFDQTBqRCxPQUFBLEVBQ0FDLFlBQUEsRUFDQW51QyxLQUFBLEVBQ0FvdUMsU0FBQSxF
QUNBOXRDLFFBQUE5VixFQUNBNmpELE1BQUE3akQsRUFDQW9sQyxJQUFBLEVBQ0ExK0IsU0FBQTFH
LEVBQ0E4akQsU0FBQTNqRCxFQUNBNGpELFVBQUEsRUFDQUMsUUFBQSxFQUNBQyxLQUFBLEVBQ0FD
LFdBQUEsRUFDQUMsWUFBQSxFQUNBQyxXQUFBLEVBQ0FDLGVBQUFya0QsRUFDQXNrRCxXQUFBLEVB
Q0FDLFlBQUEsRUFDQUMsUUFBQSxFQUNBQyxPQUFBLEVBQ0EvbEMsT0FBQTFlLEVBQ0Ewa0QsS0FB
QSxFQUNBQyxLQUFBLEVBQ0FDLFNBQUEsRUFDQUMsUUFBQSxFQUNBQyxVQUFBLEVBQ0FDLEtBQUEs
RUFDQWwzRCxHQUFBLEVBQ0FtM0QsVUFBQSxFQUNBQyxVQUFBLEVBQ0EzdEMsR0FBQSxFQUNBNHRD
LFVBQUEsRUFDQUMsUUFBQSxFQUNBQyxLQUFBLEVBQ0FDLE1BQUEsRUFDQUMsS0FBQSxFQUNBQyxL
QUFBLEVBQ0FDLEtBQUF4bEQsRUFDQXlsRCxJQUFBLEVBQ0FDLFNBQUEsRUFDQUMsYUFBQSxFQUNB
QyxZQUFBLEVBQ0FDLElBQUEsRUFDQUMsVUFBQSxFQUNBQyxNQUFBLEVBQ0FDLFdBQUEsRUFDQXJy
RCxPQUFBLEVBQ0FpMUIsSUFBQSxFQUNBcTJCLFVBQUEsRUFHQXA2QixTQUFBOXJCLEVBQUFDLEVB
Q0FrbUQsTUFBQW5tRCxFQUFBQyxFQUNBcFEsS0FBQSxFQUNBdTJELE1BQUEsRUFDQUMsV0FBQXBt
RCxFQUNBcW1ELEtBQUFybUQsRUFDQXNtRCxRQUFBLEVBQ0FDLFFBQUEsRUFDQXBrQixZQUFBLEVB
Q0Fxa0IsWUFBQXhtRCxFQUNBeW1ELE9BQUEsRUFDQUMsUUFBQSxFQUNBQyxRQUFBLEVBQ0FDLFdB
QUEsRUFDQTduQyxTQUFBL2UsRUFDQTZtRCxlQUFBLEVBQ0FDLElBQUEsRUFDQUMsU0FBQS9tRCxF
QUNBZ25ELFNBQUFobkQsRUFDQWluRCxLQUFBLEVBQ0FDLEtBQUFobkQsRUFDQWluRCxRQUFBbG5E
LEVBQ0FtbkQsUUFBQSxFQUNBeHNELE1BQUEsRUFDQXlzRCxPQUFBcm5ELEVBQ0FzbkQsVUFBQSxF
QUNBQyxTQUFBdm5ELEVBQ0Fpc0IsU0FBQWxzQixFQUFBQyxFQUNBb2dDLE1BQUEsRUFDQW9uQixL
QUFBdG5ELEVBQ0F1bkQsTUFBQSxFQUNBQyxLQUFBeG5ELEVBQ0F5bkQsV0FBQSxFQUNBQyxJQUFB
LEVBQ0FDLE9BQUEsRUFDQUMsUUFBQSxFQUNBQyxPQUFBLEVBQ0E5NEIsTUFBQWh2QixFQUNBNDRC
LEtBQUEsRUFDQTRsQixNQUFBLEVBQ0F1SixRQUFBLEVBQ0FDLFNBQUEsRUFDQWwyRCxPQUFBLEVB
Q0FzeUMsTUFBQSxFQUVBNXJDLEtBQUEsRUFDQXl2RCxPQUFBLEVBQ0F0b0QsTUFBQSxFQUNBdW9E
LE1BQUEsRUFDQUMsTUFBQSxFQUNBOVcsS0FBQSxFQUtBK1csTUFBQSxFQUNBQyxTQUFBLEVBQ0FD
LE9BQUEsRUFDQW5rQyxPQUFBLEVBRUE2cEIsU0FBQSxFQUNBdWEsU0FBQSxFQUNBQyxPQUFBLEVB
Q0FDLE1BQUEsRUFPQUMsZUFBQSxFQUNBQyxZQUFBLEVBRUFDLFNBQUEsRUFFQXh4QixNQUFBLEVB
R0F5eEIsU0FBQSxFQUNBQyxVQUFBL29ELEVBQ0FncEQsU0FBQSxFQUlBQyxPQUFBLEVBQ0FDLFFB
QUEsRUFHQUMsUUFBQSxFQUdBQyxTQUFBLEVBRUFDLGFBQUEsR0FFQTVvRCxtQkFDQThoRCxjQUFB
LGlCQUNBeGdCLFVBQUEsUUFDQThpQixRQUFBLE1BQ0FDLFVBQUEsY0FFQXBrRCxvQkFDQUMsb0JB
Q0FmLE1BQUEsU0FBQXJOLEVBQUFxTixHQUNBLGFBQUFBLEVBQ0FyTixFQUFBKzRCLGdCQUFBLGNB
TUEsV0FBQS80QixFQUFBa0csTUFBQWxHLEVBQUFxaEMsYUFBQSxjQUNBcmhDLEVBQUFvd0IsYUFB
QSxXQUFBL2lCLEdBQ09yTixFQUFBKzJELFdBQUEvMkQsRUFBQSsyRCxTQUFBQyxVQUFBaDNELEVB
QUErWSxjQUFBd1ksZ0JBQUF2eEIsR0FTUEEsRUFBQW93QixhQUFBLFdBQUEvaUIsTUFNQWhTLEdB
QUFELFFBQUEwMEQsR3BJMi9iTSxTQUFTejBELEVBQVFELEVBQVNILElxSXJ1Y2hDLFNBQUEyMkMs
R0FVQSxZQXFCQSxTQUFBcWxCLEdBQUFDLEVBQUE1NEIsRUFBQWpoQyxFQUFBODVELEdBRUEsR0FB
QUMsR0FBQW42RCxTQUFBaTZELEVBQUE3NUQsRUFTQSxPQUFBaWhDLEdBQUE4NEIsSUFDQUYsRUFB
QTc1RCxHQUFBb2lDLEVBQUFuQixHQUFBLElBL0JBLEdBQUEvM0IsR0FBQXRMLEVBQUEsSUFFQXdr
QyxFQUFBeGtDLEVBQUEsSUFFQXUxQixHQURBdjFCLEVBQUEsSUFDQUEsRUFBQSxLQUNBNnJDLEVB
QUE3ckMsRUFBQSxHQUNBQSxHQUFBLEVBSUEsb0JBQUEyMkMsTUFBQUksS0E4QkEsSUFBQXFsQixJ
QVNBQyxvQkFBQSxTQUFBQyxFQUFBanlELEVBQUEyQixFQUFBa3dELEdBRUEsU0FBQUksRUFDQSxX
QUVBLElBQUFMLEtBU0EsT0FGQXB3QixHQUFBeXdCLEVBQUFOLEVBQUFDLEdBRUFBLEdBYUFNLGVB
QUEsU0FBQUMsRUFBQUMsRUFBQUMsRUFBQUMsRUFBQXR5RCxFQUFBdUssRUFBQUMsRUFBQTdJLEVB
QUFrd0QsR0FPQSxHQUFBTyxHQUFBRCxFQUFBLENBR0EsR0FBQXA2RCxHQUNBdzZELENBQ0EsS0FB
QXg2RCxJQUFBcTZELEdBQ0EsR0FBQUEsRUFBQTM3RCxlQUFBc0IsR0FBQSxDQUdBdzZELEVBQUFK
LEtBQUFwNkQsRUFDQSxJQUFBb1QsR0FBQW9uRCxLQUFBNXhELGdCQUNBdUssRUFBQWtuRCxFQUFB
cjZELEVBQ0EsVUFBQXc2RCxHQUFBcm5DLEVBQUEvZixFQUFBRCxHQUNBakssRUFBQWdLLGlCQUFB
c25ELEVBQUFybkQsRUFBQWxMLEVBQUEyQixHQUNBeXdELEVBQUFyNkQsR0FBQXc2RCxNQUNPLENB
Q1BBLElBQ0FELEVBQUF2NkQsR0FBQWtKLEVBQUE0SixZQUFBMG5ELEdBQ0F0eEQsRUFBQTZKLGlC
QUFBeW5ELEdBQUEsR0FHQSxJQUFBQyxHQUFBcjRCLEVBQUFqdkIsR0FBQSxFQUNBa25ELEdBQUFy
NkQsR0FBQXk2RCxDQUdBLElBQUFDLEdBQUF4eEQsRUFBQW9KLGVBQUFtb0QsRUFBQXh5RCxFQUFB
dUssRUFBQUMsRUFBQTdJLEVBQUFrd0QsRUFDQVEsR0FBQTMxRCxLQUFBKzFELElBSUEsSUFBQTE2
RCxJQUFBbzZELElBQ0FBLEVBQUExN0QsZUFBQXNCLElBQUFxNkQsS0FBQTM3RCxlQUFBc0IsS0FD
QXc2RCxFQUFBSixFQUFBcDZELEdBQ0F1NkQsRUFBQXY2RCxHQUFBa0osRUFBQTRKLFlBQUEwbkQs
R0FDQXR4RCxFQUFBNkosaUJBQUF5bkQsR0FBQSxNQVlBRyxnQkFBQSxTQUFBQyxFQUFBNW5ELEdB
Q0EsT0FBQWhULEtBQUE0NkQsR0FDQSxHQUFBQSxFQUFBbDhELGVBQUFzQixHQUFBLENBQ0EsR0FB
QTY2RCxHQUFBRCxFQUFBNTZELEVBQ0FrSixHQUFBNkosaUJBQUE4bkQsRUFBQTduRCxLQU1BaFYs
R0FBQUQsUUFBQWk4RCxJckl3dWM4Qjc3RCxLQUFLSixFQUFTSCxFQUFvQixNQUkxRCxTQUFTSSxF
QUFRRCxFQUFTSCxHc0l6M2NoQyxZQUVBLElBQUFrc0IsR0FBQWxzQixFQUFBLElBQ0FrOUQsRUFB
QWw5RCxFQUFBLEtBT0FtOUQsR0FDQS9xQyx1QkFBQThxQyxFQUFBRSxrQ0FFQWpyQyxzQkFBQWpH
LEVBQUFELGlDQUdBN3JCLEdBQUFELFFBQUFnOUQsR3RJeTRjTSxTQUFTLzhELEVBQVFELEVBQVNI
LEd1SXo1Y2hDLFlBOEJBLFNBQUFxOUQsR0FBQXZtRCxJQVFBLFFBQUF3bUQsR0FBQXhtRCxFQUFB
aUIsSUFPQSxRQUFBd2xELEdBQUF6bUQsR0FDQSxTQUFBQSxFQUFBalcsWUFBQWlXLEVBQUFqVyxV
QUFBaWtDLGtCQUdBLFFBQUEwNEIsR0FBQTFtRCxHQUNBLFNBQUFBLEVBQUFqVyxZQUFBaVcsRUFB
QWpXLFVBQUFtNUMsc0JBaERBLEdBQUFwekMsR0FBQTVHLEVBQUEsR0FDQW1NLEVBQUFuTSxFQUFB
LEdBRUF5VyxFQUFBelcsRUFBQSxJQUNBa3lCLEVBQUFseUIsRUFBQSxJQUNBaVEsRUFBQWpRLEVB
QUEsSUFDQXFaLEVBQUFyWixFQUFBLElBQ0FrZCxFQUFBbGQsRUFBQSxJQUVBOG1DLEdBREE5bUMs
RUFBQSxHQUNBQSxFQUFBLEtBQ0FzTCxFQUFBdEwsRUFBQSxJQU1Ba2UsRUFBQWxlLEVBQUEsSUFF
QWlxQixHQURBanFCLEVBQUEsR0FDQUEsRUFBQSxLQUNBdTFCLEVBQUF2MUIsRUFBQSxJQUdBeTlE
LEdBRkF6OUQsRUFBQSxJQUdBMDlELFlBQUEsRUFDQUMsVUFBQSxFQUNBQyxvQkFBQSxHQUlBUCxH
QUFBeDhELFVBQUFra0MsT0FBQSxXQUNBLEdBQUFqdUIsR0FBQW9HLEVBQUFHLElBQUEvYixNQUFB
MEosZ0JBQUFDLEtBQ0E4TSxFQUFBakIsRUFBQXhWLEtBQUF3VyxNQUFBeFcsS0FBQTBLLFFBQUEx
SyxLQUFBcTRDLFFBRUEsT0FEQTJqQixHQUFBeG1ELEVBQUFpQixHQUNBQSxFQW9FQSxJQUFBOGxE
LEdBQUEsRUFLQXIwQixHQVFBQyxVQUFBLFNBQUExeEIsR0FDQXpXLEtBQUEwSixnQkFBQStNLEVB
Q0F6VyxLQUFBMFksWUFBQSxFQUNBMVksS0FBQXc4RCxlQUFBLEtBQ0F4OEQsS0FBQWlrQyxVQUFB
LEtBQ0Fqa0MsS0FBQStGLFlBQUEsS0FDQS9GLEtBQUFnakMsbUJBQUEsS0FHQWhqQyxLQUFBd0ss
bUJBQUEsS0FDQXhLLEtBQUFzeUIsZ0JBQUEsS0FDQXR5QixLQUFBZ3lCLG1CQUFBLEtBQ0FoeUIs
S0FBQWl5QixzQkFBQSxFQUNBanlCLEtBQUE2eEIscUJBQUEsRUFFQTd4QixLQUFBa21DLGtCQUFB
LEtBQ0FsbUMsS0FBQWtFLG1CQUFBLEtBQ0FsRSxLQUFBbVUsU0FBQSxLQUNBblUsS0FBQTZJLFlB
QUEsRUFDQTdJLEtBQUFpaUMsaUJBQUEsS0FHQWppQyxLQUFBcUosa0JBQUEsS0FHQXJKLEtBQUF5
OEQsNkJBQUEsR0FrQkFycEQsZUFBQSxTQUFBckssRUFBQXVLLEVBQUFDLEVBQUE3SSxHQUdBMUss
S0FBQW1VLFNBQUF6SixFQUNBMUssS0FBQTZJLFlBQUEwekQsSUFDQXY4RCxLQUFBK0YsWUFBQXVO
LEVBQ0F0VCxLQUFBZ2pDLG1CQUFBenZCLENBRUEsSUFVQW1wRCxHQVZBQyxFQUFBMzhELEtBQUEw
SixnQkFBQThNLE1BQ0FvbUQsRUFBQTU4RCxLQUFBNjhELGdCQUFBbnlELEdBRUE4SyxFQUFBeFYs
S0FBQTBKLGdCQUFBQyxLQUVBbXpELEVBQUEvekQsRUFBQWcwRCxpQkFHQUMsRUFBQWYsRUFBQXpt
RCxHQUNBcFIsRUFBQXBFLEtBQUFpOUQsb0JBQUFELEVBQUFMLEVBQUFDLEVBQUFFLEVBSUFFLElB
QUEsTUFBQTU0RCxHQUFBLE1BQUFBLEVBQUFxL0IsT0FPQXk0QixFQUFBMW1ELEdBQ0F4VixLQUFB
dzhELGVBQUFMLEVBQUFFLFVBRUFyOEQsS0FBQXc4RCxlQUFBTCxFQUFBQyxhQVRBTSxFQUFBdDRE
LEVBQ0E0M0QsRUFBQXhtRCxFQUFBa25ELEdBQ0EsT0FBQXQ0RCxRQUFBLEdBQUErUSxFQUFBTyxl
QUFBdFIsR0FBQSxPQUFBa0IsRUFBQSxNQUFBa1EsRUFBQTJiLGFBQUEzYixFQUFBMVUsTUFBQSxh
QUNBc0QsRUFBQSxHQUFBMjNELEdBQUF2bUQsR0FDQXhWLEtBQUF3OEQsZUFBQUwsRUFBQUcsb0JB
d0JBbDRELEdBQUFvUyxNQUFBbW1ELEVBQ0F2NEQsRUFBQXNHLFFBQUFreUQsRUFDQXg0RCxFQUFB
azBDLEtBQUExN0IsRUFDQXhZLEVBQUFpMEMsUUFBQXlrQixFQUVBOThELEtBQUFpa0MsVUFBQTcv
QixFQUdBd1gsRUFBQUssSUFBQTdYLEVBQUFwRSxLQWVBLElBQUFzZ0QsR0FBQWw4QyxFQUFBeXBD
LEtBQ0FudEMsVUFBQTQvQyxJQUNBbDhDLEVBQUF5cEMsTUFBQXlTLEVBQUEsTUFFQSxnQkFBQUEs
SUFBQXhwQyxNQUFBd1IsUUFBQWc0QixHQUFBaDdDLEVBQUEsTUFBQXRGLEtBQUE2SixXQUFBLGtD
QUVBN0osS0FBQWd5QixtQkFBQSxLQUNBaHlCLEtBQUFpeUIsc0JBQUEsRUFDQWp5QixLQUFBNnhC
LHFCQUFBLENBRUEsSUFBQXBlLEVBbUJBLE9BakJBQSxHQURBclAsRUFBQTg0RCxxQkFDQWw5RCxL
QUFBbTlELHFDQUFBVCxFQUFBcHBELEVBQUFDLEVBQUF4SyxFQUFBMkIsR0FFQTFLLEtBQUFvOUQs
b0JBQUFWLEVBQUFwcEQsRUFBQUMsRUFBQXhLLEVBQUEyQixHQUdBdEcsRUFBQWtxQyxtQkFRQXZs
QyxFQUFBNEsscUJBQUF2SixRQUFBaEcsRUFBQWtxQyxrQkFBQWxxQyxHQUlBcVAsR0FHQXdwRCxv
QkFBQSxTQUFBRCxFQUFBTCxFQUFBQyxFQUFBRSxHQVNBLE1BQUE5OEQsTUFBQXE5RCxnQ0FBQUws
RUFBQUwsRUFBQUMsRUFBQUUsSUFJQU8sZ0NBQUEsU0FBQUwsRUFBQUwsRUFBQUMsRUFBQUUsR0FD
QSxHQUFBdG5ELEdBQUF4VixLQUFBMEosZ0JBQUFDLElBRUEsT0FBQXF6RCxHQU1BLEdBQUF4bkQs
R0FBQW1uRCxFQUFBQyxFQUFBRSxHQVdBdG5ELEVBQUFtbkQsRUFBQUMsRUFBQUUsSUFJQUsscUNB
QUEsU0FBQVQsRUFBQXBwRCxFQUFBQyxFQUFBeEssRUFBQTJCLEdBQ0EsR0FBQStJLEdBQ0F5bkIs
RUFBQW55QixFQUFBbXlCLFlBQ0EsS0FDQXpuQixFQUFBelQsS0FBQW85RCxvQkFBQVYsRUFBQXBw
RCxFQUFBQyxFQUFBeEssRUFBQTJCLEdBQ0ssTUFBQXBLLEdBRUx5SSxFQUFBb3lCLFNBQUFELEdB
Q0FsN0IsS0FBQWlrQyxVQUFBaTVCLHFCQUFBNThELEdBQ0FOLEtBQUFneUIscUJBQ0FoeUIsS0FB
QWlrQyxVQUFBNEosTUFBQTd0QyxLQUFBczlELHFCQUFBdDlELEtBQUFpa0MsVUFBQXp0QixNQUFB
eFcsS0FBQWlrQyxVQUFBdjVCLFVBRUF3d0IsRUFBQW55QixFQUFBbXlCLGFBRUFsN0IsS0FBQWtF
LG1CQUFBMlAsa0JBQUEsR0FDQTlLLEVBQUFveUIsU0FBQUQsR0FJQXpuQixFQUFBelQsS0FBQW85
RCxvQkFBQVYsRUFBQXBwRCxFQUFBQyxFQUFBeEssRUFBQTJCLEdBRUEsTUFBQStJLElBR0EycEQs
b0JBQUEsU0FBQVYsRUFBQXBwRCxFQUFBQyxFQUFBeEssRUFBQTJCLEdBQ0EsR0FBQXRHLEdBQUFw
RSxLQUFBaWtDLFVBRUFzNUIsRUFBQSxDQUtBbjVELEdBQUF5OEMscUJBTUF6OEMsRUFBQXk4Qyxx
QkFJQTdnRCxLQUFBZ3lCLHFCQUNBNXRCLEVBQUF5cEMsTUFBQTd0QyxLQUFBczlELHFCQUFBbDVE
LEVBQUFvUyxNQUFBcFMsRUFBQXNHLFdBS0FoSyxTQUFBZzhELElBQ0FBLEVBQUExOEQsS0FBQXc5
RCw0QkFHQSxJQUFBNzVELEdBQUE2aEMsRUFBQUksUUFBQTgyQixFQUNBMThELE1BQUFrbUMsa0JB
QUF2aUMsQ0FDQSxJQUFBbytCLEdBQUEvaEMsS0FBQW9vQywyQkFBQXMwQixFQUFBLzRELElBQUE2
aEMsRUFBQUcsTUFFQTNsQyxNQUFBa0UsbUJBQUE2OUIsQ0FFQSxJQUFBdHVCLEdBQUF6SixFQUFB
b0osZUFBQTJ1QixFQUFBaDVCLEVBQUF1SyxFQUFBQyxFQUFBdlQsS0FBQXNrQyxxQkFBQTU1QixH
QUFBNnlELEVBU0EsT0FBQTlwRCxJQUdBRyxZQUFBLFdBQ0EsTUFBQTVKLEdBQUE0SixZQUFBNVQs
S0FBQWtFLHFCQVNBMlAsaUJBQUEsU0FBQUMsR0FDQSxHQUFBOVQsS0FBQWtFLG1CQUFBLENBSUEs
R0FBQUUsR0FBQXBFLEtBQUFpa0MsU0FFQSxJQUFBNy9CLEVBQUFzcUMsdUJBQUF0cUMsRUFBQXE0
RCw0QkFHQSxHQUZBcjRELEVBQUFxNEQsNkJBQUEsRUFFQTNvRCxFQUFBLENBQ0EsR0FBQWhULEdB
QUFkLEtBQUE2SixVQUFBLHlCQUNBa08sR0FBQWdWLHNCQUFBanNCLEVBQUFzRCxFQUFBc3FDLHFC
QUFBejNCLEtBQUE3UyxRQU9BQSxHQUFBc3FDLHNCQUtBMXVDLE1BQUFrRSxxQkFDQThGLEVBQUE2
SixpQkFBQTdULEtBQUFrRSxtQkFBQTRQLEdBQ0E5VCxLQUFBa21DLGtCQUFBLEtBQ0FsbUMsS0FB
QWtFLG1CQUFBLEtBQ0FsRSxLQUFBaWtDLFVBQUEsTUFNQWprQyxLQUFBZ3lCLG1CQUFBLEtBQ0Fo
eUIsS0FBQWl5QixzQkFBQSxFQUNBanlCLEtBQUE2eEIscUJBQUEsRUFDQTd4QixLQUFBcUosa0JB
QUEsS0FDQXJKLEtBQUFzeUIsZ0JBQUEsS0FJQXR5QixLQUFBbVUsU0FBQSxLQUNBblUsS0FBQTBZ
LFlBQUEsRUFDQTFZLEtBQUFpaUMsaUJBQUEsS0FLQXJtQixFQUFBQyxPQUFBelgsS0FpQkFxNUQs
YUFBQSxTQUFBL3lELEdBQ0EsR0FBQThLLEdBQUF4VixLQUFBMEosZ0JBQUFDLEtBQ0FtakMsRUFB
QXQzQixFQUFBczNCLFlBQ0EsS0FBQUEsRUFDQSxNQUFBbHdCLEVBRUEsSUFBQThnRCxLQUNBLFFB
QUFDLEtBQUE3d0IsR0FDQTR3QixFQUFBQyxHQUFBanpELEVBQUFpekQsRUFFQSxPQUFBRCxJQVdB
YixnQkFBQSxTQUFBbnlELEdBQ0EsR0FBQWd6RCxHQUFBMTlELEtBQUF5OUQsYUFBQS95RCxFQU9B
LE9BQUFnekQsSUFRQXA1QixxQkFBQSxTQUFBczVCLEdBQ0EsR0FFQUMsR0FGQXJvRCxFQUFBeFYs
S0FBQTBKLGdCQUFBQyxLQUNBdkYsRUFBQXBFLEtBQUFpa0MsU0FnQkEsSUFiQTcvQixFQUFBK3BD
LGtCQVNBMHZCLEVBQUF6NUQsRUFBQStwQyxtQkFJQTB2QixFQUFBLENBQ0EsZ0JBQUFyb0QsR0FB
QTAzQixrQkFBQTVuQyxFQUFBLE1BQUF0RixLQUFBNkosV0FBQSxpQ0FJQSxRQUFBL0ksS0FBQSs4
RCxHQUNBLzhELElBQUEwVSxHQUFBMDNCLGtCQUFBLE9BQUE1bkMsRUFBQSxNQUFBdEYsS0FBQTZK
LFdBQUEsMEJBQUEvSSxFQUVBLE9BQUErSixNQUF1Qit5RCxFQUFBQyxHQUV2QixNQUFBRCxJQVdB
RSxtQkFBQSxTQUFBbFgsRUFBQUMsRUFBQUMsS0FNQTl5QyxpQkFBQSxTQUFBQyxFQUFBbEwsRUFB
QXNwQixHQUNBLEdBQUFuZSxHQUFBbFUsS0FBQTBKLGdCQUNBcTBELEVBQUEvOUQsS0FBQW1VLFFB
RUFuVSxNQUFBc3lCLGdCQUFBLEtBRUF0eUIsS0FBQStnRCxnQkFBQWg0QyxFQUFBbUwsRUFBQUQs
RUFBQThwRCxFQUFBMXJDLElBVUFwb0IseUJBQUEsU0FBQWxCLEdBQ0EsTUFBQS9JLEtBQUFzeUIs
Z0JBQ0F0b0IsRUFBQWdLLGlCQUFBaFUsVUFBQXN5QixnQkFBQXZwQixFQUFBL0ksS0FBQW1VLFVB
Q0ssT0FBQW5VLEtBQUFneUIsb0JBQUFoeUIsS0FBQTZ4QixvQkFDTDd4QixLQUFBK2dELGdCQUFB
aDRDLEVBQUEvSSxLQUFBMEosZ0JBQUExSixLQUFBMEosZ0JBQUExSixLQUFBbVUsU0FBQW5VLEtB
QUFtVSxVQUVBblUsS0FBQXdLLG1CQUFBLE1BbUJBdTJDLGdCQUFBLFNBQUFoNEMsRUFBQWkxRCxF
QUFBQyxFQUFBQyxFQUFBQyxHQUNBLEdBQUEvNUQsR0FBQXBFLEtBQUFpa0MsU0FDQSxPQUFBNy9C
LEVBQUFrQixFQUFBLE1BQUF0RixLQUFBNkosV0FBQSxpQ0FFQSxJQUNBd29CLEdBREErckMsR0FB
QSxDQUlBcCtELE1BQUFtVSxXQUFBZ3FELEVBQ0E5ckMsRUFBQWp1QixFQUFBc0csU0FFQTJuQixF
QUFBcnlCLEtBQUE2OEQsZ0JBQUFzQixHQUNBQyxHQUFBLEVBR0EsSUFBQUMsR0FBQUwsRUFBQXhu
RCxNQUNBKzBCLEVBQUEweUIsRUFBQXpuRCxLQUdBd25ELEtBQUFDLElBQ0FHLEdBQUEsR0FNQUEs
R0FBQWg2RCxFQUFBcXFDLDJCQU1BcnFDLEVBQUFxcUMsMEJBQUFsRCxFQUFBbFosRUFJQSxJQUFB
aXNDLEdBQUF0K0QsS0FBQXM5RCxxQkFBQS94QixFQUFBbFosR0FDQWtzQyxHQUFBLENBRUF2K0Qs
TUFBQTZ4QixzQkFDQXp0QixFQUFBcW5DLHNCQU1BOHlCLEVBQUFuNkQsRUFBQXFuQyxzQkFBQUYs
RUFBQSt5QixFQUFBanNDLEdBR0FyeUIsS0FBQXc4RCxpQkFBQUwsRUFBQUUsWUFDQWtDLEdBQUE1
MUMsRUFBQTAxQyxFQUFBOXlCLEtBQUE1aUIsRUFBQXZrQixFQUFBeXBDLE1BQUF5d0IsS0FTQXQr
RCxLQUFBd0ssbUJBQUEsS0FDQSt6RCxHQUNBditELEtBQUE2eEIscUJBQUEsRUFFQTd4QixLQUFB
dytELHdCQUFBUCxFQUFBMXlCLEVBQUEreUIsRUFBQWpzQyxFQUFBdHBCLEVBQUFvMUQsS0FJQW4r
RCxLQUFBMEosZ0JBQUF1MEQsRUFDQWorRCxLQUFBbVUsU0FBQWdxRCxFQUNBLzVELEVBQUFvUyxN
QUFBKzBCLEVBQ0FubkMsRUFBQXlwQyxNQUFBeXdCLEVBQ0FsNkQsRUFBQXNHLFFBQUEybkIsSUFJ
QWlyQyxxQkFBQSxTQUFBOW1ELEVBQUE5TCxHQUNBLEdBQUF0RyxHQUFBcEUsS0FBQWlrQyxVQUNB
ajRCLEVBQUFoTSxLQUFBZ3lCLG1CQUNBbnhCLEVBQUFiLEtBQUFpeUIsb0JBSUEsSUFIQWp5QixL
QUFBaXlCLHNCQUFBLEVBQ0FqeUIsS0FBQWd5QixtQkFBQSxNQUVBaG1CLEVBQ0EsTUFBQTVILEdB
QUF5cEMsS0FHQSxJQUFBaHRDLEdBQUEsSUFBQW1MLEVBQUExSyxPQUNBLE1BQUEwSyxHQUFBLEVB
SUEsUUFEQXN5RCxHQUFBenpELEtBQThCaEssRUFBQW1MLEVBQUEsR0FBQTVILEVBQUF5cEMsT0FD
OUJ4dUMsRUFBQXdCLEVBQUEsSUFBaUN4QixFQUFBMk0sRUFBQTFLLE9BQWtCakMsSUFBQSxDQUNu
RCxHQUFBby9ELEdBQUF6eUQsRUFBQTNNLEVBQ0F3TCxHQUFBeXpELEVBQUEsa0JBQUFHLEtBQUF4
L0QsS0FBQW1GLEVBQUFrNkQsRUFBQTluRCxFQUFBOUwsR0FBQSt6RCxHQUdBLE1BQUFILElBZUFF
LHdCQUFBLFNBQUF2cUQsRUFBQXMzQixFQUFBK3lCLEVBQUFqc0MsRUFBQXRwQixFQUFBMjFELEdB
Q0EsR0FLQUwsR0FDQU0sRUFDQVosRUFMQTM1RCxFQUFBcEUsS0FBQWlrQyxVQUVBMjZCLEVBQUE5
aEMsUUFBQTE0QixFQUFBK3FDLG1CQUlBeXZCLEtBQ0FQLEVBQUFqNkQsRUFBQW9TLE1BQ0Ftb0Qs
RUFBQXY2RCxFQUFBeXBDLE1BQ0Frd0IsRUFBQTM1RCxFQUFBc0csU0FHQXRHLEVBQUEwOEMscUJB
TUExOEMsRUFBQTA4QyxvQkFBQXZWLEVBQUEreUIsRUFBQWpzQyxHQUlBcnlCLEtBQUEwSixnQkFB
QXVLLEVBQ0FqVSxLQUFBbVUsU0FBQXVxRCxFQUNBdDZELEVBQUFvUyxNQUFBKzBCLEVBQ0FubkMs
RUFBQXlwQyxNQUFBeXdCLEVBQ0FsNkQsRUFBQXNHLFFBQUEybkIsRUFFQXJ5QixLQUFBNitELHlC
QUFBOTFELEVBQUEyMUQsR0FFQUUsR0FNQTcxRCxFQUFBNEsscUJBQUF2SixRQUFBaEcsRUFBQStx
QyxtQkFBQWw0QixLQUFBN1MsRUFBQWk2RCxFQUFBTSxFQUFBWixHQUFBMzVELElBV0F5NkQseUJB
QUEsU0FBQTkxRCxFQUFBMkIsR0FDQSxHQUFBbzBELEdBQUE5K0QsS0FBQWtFLG1CQUNBNjZELEVB
QUFELEVBQUFwMUQsZ0JBQ0FzMUQsRUFBQWgvRCxLQUFBdzlELDRCQUVBRCxFQUFBLENBS0EsSUFB
QXRwQyxFQUFBOHFDLEVBQUFDLEdBQ0FoMUQsRUFBQWdLLGlCQUFBOHFELEVBQUFFLEVBQUFqMkQs
RUFBQS9JLEtBQUFza0MscUJBQUE1NUIsUUFDSyxDQUNMLEdBQUF1MEQsR0FBQWoxRCxFQUFBNEos
WUFBQWtyRCxFQUNBOTBELEdBQUE2SixpQkFBQWlyRCxHQUFBLEVBRUEsSUFBQW43RCxHQUFBNmhD
LEVBQUFJLFFBQUFvNUIsRUFDQWgvRCxNQUFBa21DLGtCQUFBdmlDLENBQ0EsSUFBQW8rQixHQUFB
L2hDLEtBQUFvb0MsMkJBQUE0MkIsRUFBQXI3RCxJQUFBNmhDLEVBQUFHLE1BRUEzbEMsTUFBQWtF
LG1CQUFBNjlCLENBRUEsSUFBQW05QixHQUFBbDFELEVBQUFvSixlQUFBMnVCLEVBQUFoNUIsRUFB
QS9JLEtBQUErRixZQUFBL0YsS0FBQWdqQyxtQkFBQWhqQyxLQUFBc2tDLHFCQUFBNTVCLEdBQUE2
eUQsRUFTQXY5RCxNQUFBbS9ELHVCQUFBRixFQUFBQyxFQUFBSixLQVNBSyx1QkFBQSxTQUFBRixF
QUFBQyxFQUFBRSxHQUNBeHVDLEVBQUFDLHNCQUFBb3VDLEVBQUFDLEVBQUFFLElBTUFDLCtDQUFB
LFdBQ0EsR0FDQTNDLEdBREF0NEQsRUFBQXBFLEtBQUFpa0MsU0FvQkEsT0FaQXk0QixHQUFBdDRE
LEVBQUFxL0IsVUFrQkErNUIsMEJBQUEsV0FDQSxHQUFBZCxFQUNBLElBQUExOEQsS0FBQXc4RCxp
QkFBQUwsRUFBQUcsb0JBQUEsQ0FDQTN0RCxFQUFBQyxRQUFBNU8sSUFDQSxLQUNBMDhELEVBQUEx
OEQsS0FBQXEvRCxpREFDTyxRQUNQMXdELEVBQUFDLFFBQUEsVUFHQTh0RCxHQUFBMThELEtBQUFx
L0QsZ0RBTUEsT0FGQSxRQUFBM0MsUUFBQSxHQUFBdm5ELEVBQUFPLGVBQUFnbkQsR0FBQSxPQUFB
cDNELEVBQUEsTUFBQXRGLEtBQUE2SixXQUFBLDJCQUVBNnlELEdBV0E0QyxVQUFBLFNBQUE1ckQs
RUFBQTFQLEdBQ0EsR0FBQUksR0FBQXBFLEtBQUFxSyxtQkFDQSxPQUFBakcsRUFBQWtCLEVBQUEs
YUFDQSxJQUFBaTZELEdBQUF2N0QsRUFBQXFHLG9CQUtBaXVDLEVBQUFsMEMsRUFBQWswQyxPQUFB
MTdCLEVBQUF4WSxFQUFBazBDLFFBQXlEbDBDLEVBQUFrMEMsSUFDekRBLEdBQUE1a0MsR0FBQTZy
RCxHQVVBQyxVQUFBLFNBQUE5ckQsR0FDQSxHQUFBNGtDLEdBQUF0NEMsS0FBQXFLLG9CQUFBaXVD
LFdBQ0FBLEdBQUE1a0MsSUFTQTdKLFFBQUEsV0FDQSxHQUFBRixHQUFBM0osS0FBQTBKLGdCQUFB
QyxLQUNBbUQsRUFBQTlNLEtBQUFpa0MsV0FBQWprQyxLQUFBaWtDLFVBQUFuM0IsV0FDQSxPQUFB
bkQsR0FBQXduQixhQUFBcmtCLEtBQUFxa0IsYUFBQXhuQixFQUFBN0ksTUFBQWdNLEtBQUFoTSxN
QUFBLE1BV0F1SixrQkFBQSxXQUNBLEdBQUFqRyxHQUFBcEUsS0FBQWlrQyxTQUNBLE9BQUFqa0Ms
TUFBQXc4RCxpQkFBQUwsRUFBQUcsb0JBQ0EsS0FFQWw0RCxHQUlBZ2tDLDJCQUFBLEtBR0F0cEMs
R0FBQUQsUUFBQXFwQyxHdkl5NmNNLFNBQVNwcEMsRUFBUUQsRUFBU0gsR3dJL3hlaEMsWUFFQSxJ
QUFBNEgsR0FBQTVILEVBQUEsR0FDQStnRSxFQUFBL2dFLEVBQUEsS0FDQXdqQyxFQUFBeGpDLEVB
QUEsSUFDQXNMLEVBQUF0TCxFQUFBLElBQ0FvSixFQUFBcEosRUFBQSxHQUNBaVcsRUFBQWpXLEVB
QUEsS0FFQWdoRSxFQUFBaGhFLEVBQUEsS0FDQXVuQyxFQUFBdm5DLEVBQUEsSUFDQXdsQyxFQUFB
eGxDLEVBQUEsSUFDQUEsR0FBQSxFQUVBK2dFLEdBQUFFLFFBRUEsSUFBQUMsSUFDQUYsY0FDQWo4
QixPQUFBdkIsRUFBQXVCLE9BQ0FpQix1QkFBQXhDLEVBQUF3Qyx1QkFDQTV1QixRQUFBbkIsRUFH
QWtyRCx3QkFBQS8zRCxFQUFBVSxlQUNBczNELG9DQUFBNTdCLEVBTUEsb0JBQUE2N0IsaUNBQUEs
a0JBQUFBLGdDQUFBSixRQUNBSSwrQkFBQUosUUFDQWx5QyxlQUNBbG9CLDJCQUFBZSxFQUFBZiwy
QkFDQU8sb0JBQUEsU0FBQTFCLEdBS0EsTUFIQUEsR0FBQUYscUJBQ0FFLEVBQUE2aEMsRUFBQTdo
QyxJQUVBQSxFQUNBa0MsRUFBQVIsb0JBQUExQixHQUVBLE9BSUE0N0QsTUFBQTk5QixFQUNBKzlC
LFdBQUFqMkQsR0FrREFsTCxHQUFBRCxRQUFBK2dFLEd4SWl6ZU0sU0FBUzlnRSxFQUFRRCxFQUFT
SCxHeUlsNWVoQyxZQXFEQSxTQUFBNHdCLEdBQUFqYyxHQUNBLEdBQUFBLEVBQUEsQ0FDQSxHQUFB
a0QsR0FBQWxELEVBQUEzSixnQkFBQWlOLFFBQUEsSUFDQSxJQUFBSixFQUFBLENBQ0EsR0FBQXpW
LEdBQUF5VixFQUFBMU0sU0FDQSxJQUFBL0ksRUFDQSx5Q0FBQUEsRUFBQSxNQUlBLFNBMkRBLFFB
QUFvL0QsR0FBQWw4RCxFQUFBd1MsR0FDQUEsSUFJQTJwRCxFQUFBbjhELEVBQUFvOEQsUUFDQSxN
QUFBNXBELEVBQUEzUixVQUFBLE1BQUEyUixFQUFBNnBELHdCQUFBLzZELEVBQUEsTUFBQXRCLEVB
QUFvOEQsS0FBQXA4RCxFQUFBMEYsZ0JBQUFpTixPQUFBLCtCQUFBM1MsRUFBQTBGLGdCQUFBaU4s
T0FBQTlNLFVBQUEsZ0JBRUEsTUFBQTJNLEVBQUE2cEQsMEJBQ0EsTUFBQTdwRCxFQUFBM1IsU0FB
QVMsRUFBQSxhQUNBLGdCQUFBa1IsR0FBQTZwRCx5QkFBQUMsSUFBQTlwRCxHQUFBNnBELHdCQUFn
TyxPQUFBLzZELEVBQUEsT0FPaE8sTUFBQWtSLEVBQUFtNUMsT0FBQSxnQkFBQW41QyxHQUFBbTVD
LE1BQThQcnFELEVBQUEsS0FBQWdxQixFQUFBdHJCLElBQUEsUUFHOVAsUUFBQXU4RCxHQUFBbjhE
LEVBQUEyVSxFQUFBQyxFQUFBalEsR0FDQSxLQUFBQSxZQUFBeTNELElBQUEsQ0FRQSxHQUFBQyxH
QUFBcjhELEVBQUE0K0IsbUJBQ0EwOUIsRUFBQUQsRUFBQUUsT0FBQUYsRUFBQUUsTUFBQWg5RCxX
QUFBaTlELEVBQ0Fya0QsRUFBQW1rRCxFQUFBRCxFQUFBRSxNQUFBRixFQUFBSSxjQUNBNStDLEdB
QUFsSixFQUFBd0QsR0FDQXhULEVBQUE0SyxxQkFBQXZKLFFBQUEwTyxHQUNBMVUsT0FDQTJVLG1C
QUNBQyxjQUlBLFFBQUFGLEtBQ0EsR0FBQWdvRCxHQUFBOWdFLElBQ0EyWSxHQUFBRyxZQUFBZ29E
LEVBQUExOEQsS0FBQTA4RCxFQUFBL25ELGlCQUFBK25ELEVBQUE5bkQsVUFHQSxRQUFBK25ELEtB
Q0EsR0FBQTM4RCxHQUFBcEUsSUFDQWdoRSxHQUFBQyxpQkFBQTc4RCxHQUdBLFFBQUE4OEQsS0FD
QSxHQUFBOThELEdBQUFwRSxJQUNBbWhFLEdBQUFGLGlCQUFBNzhELEdBR0EsUUFBQWc5RCxLQUNB
LEdBQUFoOUQsR0FBQXBFLElBQ0FxaEUsR0FBQUosaUJBQUE3OEQsR0E0REEsUUFBQWs5RCxLQUNB
MTZCLEVBQUFFLE1BQUE5bUMsTUFHQSxRQUFBdWhFLEtBQ0EsR0FBQW45RCxHQUFBcEUsSUFHQW9F
LEdBQUFzVSxZQUFBLE9BQUFwVCxFQUFBLEtBQ0EsSUFBQTdCLEdBQUErOUQsRUFBQXA5RCxFQUdB
LFFBRkFYLEVBQUEsT0FBQTZCLEVBQUEsTUFFQWxCLEVBQUFnOEQsTUFDQSxhQUNBLGFBQ0FoOEQs
RUFBQXU0QixjQUFBZ0IsV0FBQWxjLEVBQUFjLGlCQUFBLGlCQUFBOWUsR0FDQSxNQUNBLGFBQ0Es
WUFDQVcsRUFBQXU0QixjQUFBZ0IsWUFFQSxRQUFBOXZCLEtBQUE0ekQsR0FDQUEsRUFBQWppRSxl
QUFBcU8sSUFDQXpKLEVBQUF1NEIsY0FBQWdCLFVBQUFsNEIsS0FBQWdjLEVBQUFjLGlCQUFBMVUs
RUFBQTR6RCxFQUFBNXpELEdBQUFwSyxHQUdBLE1BQ0EsY0FDQVcsRUFBQXU0QixjQUFBZ0IsV0FB
QWxjLEVBQUFjLGlCQUFBLG1CQUFBOWUsR0FDQSxNQUNBLFdBQ0FXLEVBQUF1NEIsY0FBQWdCLFdB
QUFsYyxFQUFBYyxpQkFBQSxtQkFBQTllLEdBQUFnZSxFQUFBYyxpQkFBQSxpQkFBQTllLEdBQ0Es
TUFDQSxZQUNBVyxFQUFBdTRCLGNBQUFnQixXQUFBbGMsRUFBQWMsaUJBQUEsbUJBQUE5ZSxHQUFB
Z2UsRUFBQWMsaUJBQUEscUJBQUE5ZSxHQUNBLE1BQ0EsYUFDQSxhQUNBLGVBQ0FXLEVBQUF1NEIs
Y0FBQWdCLFdBQUFsYyxFQUFBYyxpQkFBQSx1QkFBQTllLEtBS0EsUUFBQWkrRCxLQUNBcGtDLEVB
QUFRLGtCQUFBOTlCLE1BOENBLFFBQUEyaEUsR0FBQWpxRCxHQUNBbFksRUFBQVAsS0FBQTJpRSxF
QUFBbHFELEtBQ0FtcUQsRUFBQXJ4RCxLQUFBa0gsR0FBQSxPQUFBcFMsRUFBQSxLQUFBb1MsR0FD
QWtxRCxFQUFBbHFELElBQUEsR0FJQSxRQUFBb3FELEdBQUF4eEMsRUFBQTlaLEdBQ0EsTUFBQTha
LEdBQUEzRSxRQUFBLGVBQUFuVixFQUFBZ1MsR0FtQkEsUUFBQXU1QyxHQUFBdHJELEdBQ0EsR0FB
QWlCLEdBQUFqQixFQUFBOU0sSUFDQWc0RCxHQUFBanFELEdBQ0ExWCxLQUFBMEosZ0JBQUErTSxF
QUNBelcsS0FBQW9nRSxLQUFBMW9ELEVBQUFoSCxjQUNBMVEsS0FBQWdpRSxjQUFBLEtBQ0FoaUUs
S0FBQThFLGtCQUFBLEtBQ0E5RSxLQUFBaWlFLGVBQUEsS0FDQWppRSxLQUFBa2lFLG1CQUFBLEtB
Q0FsaUUsS0FBQXNFLFVBQUEsS0FDQXRFLEtBQUErRixZQUFBLEtBQ0EvRixLQUFBMFksWUFBQSxF
QUNBMVksS0FBQW9GLE9BQUEsRUFDQXBGLEtBQUFnakMsbUJBQUEsS0FDQWhqQyxLQUFBMjhCLGNB
QUEsS0FDQTM4QixLQUFBaWlDLGlCQUFBLEtBQ0FqaUMsS0FBQTBFLE9BQUEsRUFuWEEsR0FBQVks
R0FBQTVHLEVBQUEsR0FDQW1NLEVBQUFuTSxFQUFBLEdBRUF1dUQsRUFBQXZ1RCxFQUFBLEtBQ0Ft
eEQsRUFBQW54RCxFQUFBLEtBQ0FzUixFQUFBdFIsRUFBQSxJQUNBdVIsRUFBQXZSLEVBQUEsSUFD
QXNILEVBQUF0SCxFQUFBLElBQ0FrOUIsRUFBQWw5QixFQUFBLElBQ0FpYSxFQUFBamEsRUFBQSxJ
QUNBbVosRUFBQW5aLEVBQUEsSUFDQStpQixFQUFBL2lCLEVBQUEsSUFDQXVILEVBQUF2SCxFQUFB
LElBQ0E0SCxFQUFBNUgsRUFBQSxHQUNBc2lFLEVBQUF0aUUsRUFBQSxLQUNBMmlFLEVBQUEzaUUs
RUFBQSxLQUNBNCtCLEVBQUE1K0IsRUFBQSxJQUNBeWlFLEVBQUF6aUUsRUFBQSxLQUVBeWpFLEdB
REF6akUsRUFBQSxHQUNBQSxFQUFBLE1BQ0E4aEUsRUFBQTloRSxFQUFBLEtBR0F1bkIsR0FEQXZu
QixFQUFBLEdBQ0FBLEVBQUEsS0FJQWtvQyxHQUhBbG9DLEVBQUEsR0FDQUEsRUFBQSxJQUNBQSxF
QUFBLElBQ0FBLEVBQUEsS0FJQWlHLEdBSEFqRyxFQUFBLElBQ0FBLEVBQUEsR0FFQXVILEdBQ0Fx
VCxFQUFBWCxFQUFBVyxlQUNBa29ELEVBQUFsN0QsRUFBQVIsb0JBQ0FtYyxFQUFBUixFQUFBUSxT
QUNBOUksRUFBQXRCLEVBQUFzQix3QkFHQWlwRCxHQUFxQjc4QyxRQUFBLEVBQUFzakIsUUFBQSxH
QUVyQnc1QixFQUFBLFFBQ0EvQixFQUFBLFNBQ0FucUQsR0FDQXRSLFNBQUEsS0FDQXc3RCx3QkFB
QSxLQUNBaUMsK0JBQUEsTUFJQTFCLEVBQUEsR0FrS0FhLEdBQ0Foa0QsU0FBQSxRQUNBSyxXQUFB
LFVBQ0FDLGtCQUFBLGlCQUNBa0Isa0JBQUEsaUJBQ0FDLFdBQUEsVUFDQUMsYUFBQSxZQUNBQyxT
QUFBLFFBQ0FDLFNBQUEsUUFDQU0sY0FBQSxhQUNBQyxrQkFBQSxpQkFDQUMsYUFBQSxZQUNBTyxT
QUFBLFFBQ0FDLFFBQUEsT0FDQUMsV0FBQSxVQUNBQyxZQUFBLFdBQ0FDLGNBQUEsYUFDQUUsVUFB
QSxTQUNBQyxXQUFBLFVBQ0FFLFdBQUEsVUFDQUMsV0FBQSxVQUNBRSxjQUFBLGFBQ0FNLGdCQUFB
LGVBQ0FDLFdBQUEsV0FzREFnaEQsR0FDQWpmLE1BQUEsRUFDQWtmLE1BQUEsRUFDQUMsSUFBQSxF
QUNBbGYsS0FBQSxFQUNBbWYsT0FBQSxFQUNBQyxJQUFBLEVBQ0FDLEtBQUEsRUFDQTNpQyxPQUFB
LEVBQ0E0aUMsUUFBQSxFQUNBQyxNQUFBLEVBQ0FDLE1BQUEsRUFDQXRmLE9BQUEsRUFDQXZnRCxR
QUFBLEVBQ0E0akMsT0FBQSxFQUNBazhCLEtBQUEsR0FJQUMsR0FDQUMsU0FBQSxFQUNBQyxLQUFB
LEVBQ0FDLFVBQUEsR0FNQWpELEVBQUF0MUQsR0FDQXc0RCxVQUFBLEdBQ0NkLEdBTURWLEVBQUEs
OEJBQ0FELEtBQ0FwaUUsS0FBdUJBLGVBYXZCOGpFLEdBQUEsQ0F1Q0F2QixHQUFBNXdDLFlBQUEs
b0JBRUE0d0MsRUFBQXdCLE9BWUFud0QsZUFBQSxTQUFBckssRUFBQXVLLEVBQUFDLEVBQUE3SSxH
QUNBMUssS0FBQTBZLFlBQUE0cUQsS0FDQXRqRSxLQUFBb0YsT0FBQW1PLEVBQUFpd0QsYUFDQXhq
RSxLQUFBK0YsWUFBQXVOLEVBQ0F0VCxLQUFBZ2pDLG1CQUFBenZCLENBRUEsSUFBQWlELEdBQUF4
VyxLQUFBMEosZ0JBQUE4TSxLQUVBLFFBQUF4VyxLQUFBb2dFLE1BQ0EsWUFDQSxXQUNBLGFBQ0Es
VUFDQSxXQUNBLGFBQ0EsYUFDQSxZQUNBcGdFLEtBQUEyOEIsZUFDQWdCLFVBQUEsTUFFQTUwQixF
QUFBNEsscUJBQUF2SixRQUFBbTNELEVBQUF2aEUsS0FDQSxNQUNBLGFBQ0FnaEUsRUFBQXhqQyxh
QUFBeDlCLEtBQUF3VyxFQUFBbEQsR0FDQWtELEVBQUF3cUQsRUFBQXpqQyxhQUFBdjlCLEtBQUF3
VyxHQUNBek4sRUFBQTRLLHFCQUFBdkosUUFBQWszRCxFQUFBdGhFLE1BQ0ErSSxFQUFBNEsscUJB
QUF2SixRQUFBbTNELEVBQUF2aEUsS0FDQSxNQUNBLGNBQ0FxaEUsRUFBQTdqQyxhQUFBeDlCLEtB
QUF3VyxFQUFBbEQsR0FDQWtELEVBQUE2cUQsRUFBQTlqQyxhQUFBdjlCLEtBQUF3VyxFQUNBLE1B
Q0EsY0FDQThtQixFQUFBRSxhQUFBeDlCLEtBQUF3VyxFQUFBbEQsR0FDQWtELEVBQUE4bUIsRUFB
QUMsYUFBQXY5QixLQUFBd1csR0FDQXpOLEVBQUE0SyxxQkFBQXZKLFFBQUFtM0QsRUFBQXZoRSxL
QUNBLE1BQ0EsZ0JBQ0FtaEUsRUFBQTNqQyxhQUFBeDlCLEtBQUF3VyxFQUFBbEQsR0FDQWtELEVB
QUEycUQsRUFBQTVqQyxhQUFBdjlCLEtBQUF3VyxHQUNBek4sRUFBQTRLLHFCQUFBdkosUUFBQWsz
RCxFQUFBdGhFLE1BQ0ErSSxFQUFBNEsscUJBQUF2SixRQUFBbTNELEVBQUF2aEUsTUFJQWtnRSxF
QUFBbGdFLEtBQUF3VyxFQUlBLElBQUE3RixHQUNBOHlELENBQ0EsT0FBQW53RCxHQUNBM0MsRUFB
QTJDLEVBQUEwdUQsY0FDQXlCLEVBQUFud0QsRUFBQThzRCxNQUNLN3NELEVBQUE2c0QsT0FDTHp2
RCxFQUFBNEMsRUFBQXl1RCxjQUNBeUIsRUFBQWx3RCxFQUFBNnNELE9BRUEsTUFBQXp2RCxPQUFB
VixFQUFBb1csS0FBQSxrQkFBQW85QyxLQUNBOXlELEVBQUFWLEVBQUFoQixNQUVBMEIsSUFBQVYs
RUFBQWhCLE9BQ0EsUUFBQWpQLEtBQUFvZ0UsS0FDQXp2RCxFQUFBVixFQUFBb1csSUFDTyxTQUFB
cm1CLEtBQUFvZ0UsT0FDUHp2RCxFQUFBVixFQUFBbWIsU0FHQXByQixLQUFBZ2lFLGNBQUFyeEQs
Q0FHQSxJQWNBK3lELEVBQ0EsSUFBQTM2RCxFQUFBdzVCLGlCQUFBLENBQ0EsR0FDQW9oQyxHQURB
bm5ELEVBQUFqSixFQUFBc3RELGNBRUEsSUFBQWx3RCxJQUFBVixFQUFBaEIsS0FDQSxjQUFBalAs
S0FBQW9nRSxLQUFBLENBR0EsR0FBQXdELEdBQUFwbkQsRUFBQTlWLGNBQUEsT0FDQWlELEVBQUEz
SixLQUFBMEosZ0JBQUFDLElBQ0FpNkQsR0FBQXQ5QyxVQUFBLElBQUEzYyxFQUFBLE1BQUFBLEVB
QUEsSUFDQWc2RCxFQUFBQyxFQUFBajlDLFlBQUFpOUMsRUFBQTUrRCxnQkFFQTIrRCxHQURTbnRE
LEVBQUFnUyxHQUNUaE0sRUFBQTlWLGNBQUExRyxLQUFBMEosZ0JBQUFDLEtBQUE2TSxFQUFBZ1Ms
SUFLQWhNLEVBQUE5VixjQUFBMUcsS0FBQTBKLGdCQUFBQyxVQUdBZzZELEdBQUFubkQsRUFBQXFu
RCxnQkFBQWx6RCxFQUFBM1EsS0FBQTBKLGdCQUFBQyxLQUVBckQsR0FBQW5DLGFBQUFuRSxLQUFB
MmpFLEdBQ0EzakUsS0FBQTBFLFFBQUFDLEVBQUFDLG9CQUNBNUUsS0FBQStGLGFBQ0E2MUIsRUFB
QUksb0JBQUEybkMsR0FFQTNqRSxLQUFBOGpFLHFCQUFBLEtBQUF0dEQsRUFBQXpOLEVBQ0EsSUFB
QWc3RCxHQUFBL3pELEVBQUEyekQsRUFDQTNqRSxNQUFBZ2tFLHVCQUFBajdELEVBQUF5TixFQUFB
OUwsRUFBQXE1RCxHQUNBTCxFQUFBSyxNQUNLLENBQ0wsR0FBQUUsR0FBQWprRSxLQUFBa2tFLG9D
QUFBbjdELEVBQUF5TixHQUNBMnRELEVBQUFua0UsS0FBQW9rRSxxQkFBQXI3RCxFQUFBeU4sRUFB
QTlMLEVBRUFnNUQsSUFEQVMsR0FBQTVCLEVBQUF2aUUsS0FBQW9nRSxNQUNBNkQsRUFBQSxLQUVB
QSxFQUFBLElBQUFFLEVBQUEsS0FBQW5rRSxLQUFBMEosZ0JBQUFDLEtBQUEsSUFJQSxPQUFBM0os
S0FBQW9nRSxNQUNBLFlBQ0FyM0QsRUFBQTRLLHFCQUFBdkosUUFBQTIyRCxFQUFBL2dFLE1BQ0F3
VyxFQUFBODhCLFdBQ0F2cUMsRUFBQTRLLHFCQUFBdkosUUFBQTZpRCxFQUFBQyxrQkFBQWx0RCxL
QUVBLE1BQ0EsZ0JBQ0ErSSxFQUFBNEsscUJBQUF2SixRQUFBODJELEVBQUFsaEUsTUFDQXdXLEVB
QUE4OEIsV0FDQXZxQyxFQUFBNEsscUJBQUF2SixRQUFBNmlELEVBQUFDLGtCQUFBbHRELEtBRUEs
TUFDQSxjQUNBd1csRUFBQTg4QixXQUNBdnFDLEVBQUE0SyxxQkFBQXZKLFFBQUE2aUQsRUFBQUMs
a0JBQUFsdEQsS0FFQSxNQUNBLGNBQ0F3VyxFQUFBODhCLFdBQ0F2cUMsRUFBQTRLLHFCQUFBdkos
UUFBQTZpRCxFQUFBQyxrQkFBQWx0RCxLQUVBLE1BQ0EsY0FDQStJLEVBQUE0SyxxQkFBQXZKLFFB
QUFnM0QsRUFBQXBoRSxNQUlBLE1BQUEwakUsSUFnQkFRLG9DQUFBLFNBQUFuN0QsRUFBQXlOLEdB
Q0EsR0FBQXdPLEdBQUEsSUFBQWhsQixLQUFBMEosZ0JBQUFDLElBRUEsUUFBQTA2RCxLQUFBN3RE
LEdBQ0EsR0FBQUEsRUFBQWhYLGVBQUE2a0UsR0FBQSxDQUdBLEdBQUFybkMsR0FBQXhtQixFQUFB
NnRELEVBQ0EsVUFBQXJuQyxFQUdBLEdBQUE3akIsRUFBQTNaLGVBQUE2a0UsR0FDQXJuQyxHQUNB
dWpDLEVBQUF2Z0UsS0FBQXFrRSxFQUFBcm5DLEVBQUFqMEIsT0FFTyxDQUNQczdELElBQUFoQyxJ
QUNBcmxDLElBS0FBLEVBQUFoOUIsS0FBQWtpRSxtQkFBQXIzRCxLQUE0RDJMLEVBQUFtNUMsUUFF
NUQzeUIsRUFBQTZ5QixFQUFBQyxzQkFBQTl5QixFQUFBaDlCLE1BRUEsSUFBQXlULEdBQUEsSUFD
QSxPQUFBelQsS0FBQW9nRSxNQUFBMEIsRUFBQTloRSxLQUFBb2dFLEtBQUE1cEQsR0FDQUwsRUFB
QTNXLGVBQUE2a0UsS0FDQTV3RCxFQUFBbW9CLEVBQUFNLCtCQUFBbW9DLEVBQUFybkMsSUFHQXZw
QixFQUFBbW9CLEVBQUFLLHdCQUFBb29DLEVBQUFybkMsR0FFQXZwQixJQUNBdVIsR0FBQSxJQUFB
dlIsSUFPQSxNQUFBMUssR0FBQXU3RCxxQkFDQXQvQyxHQUdBaGxCLEtBQUErRixjQUNBaWYsR0FB
QSxJQUFBNFcsRUFBQUcsdUJBRUEvVyxHQUFBLElBQUE0VyxFQUFBQyxrQkFBQTc3QixLQUFBb0Ys
VUFhQWcvRCxxQkFBQSxTQUFBcjdELEVBQUF5TixFQUFBOUwsR0FDQSxHQUFBc2EsR0FBQSxHQUdB
c0IsRUFBQTlQLEVBQUE2cEQsdUJBQ0EsVUFBQS81QyxFQUNBLE1BQUFBLEVBQUFpK0MsU0FDQXYv
QyxFQUFBc0IsRUFBQWkrQyxZQUVLLENBQ0wsR0FBQUMsR0FBQXBDLFFBQUE1ckQsR0FBQTNSLFVB
QUEyUixFQUFBM1IsU0FBQSxLQUNBNC9ELEVBQUEsTUFBQUQsRUFBQSxLQUFBaHVELEVBQUEzUixR
QUNBLFVBQUEyL0QsRUFFQXgvQyxFQUFBaUIsRUFBQXUrQyxPQUlPLFVBQUFDLEVBQUEsQ0FDUCxH
QUFBckosR0FBQXA3RCxLQUFBMGtFLGNBQUFELEVBQUExN0QsRUFBQTJCLEVBQ0FzYSxHQUFBbzJD
LEVBQUE3NEQsS0FBQSxLQUdBLE1BQUEwZ0UsR0FBQWpqRSxLQUFBb2dFLE9BQUEsT0FBQXA3QyxF
QUFBdVEsT0FBQSxHQVdBLEtBQUF2USxFQUVBQSxHQUlBZy9DLHVCQUFBLFNBQUFqN0QsRUFBQXlO
LEVBQUE5TCxFQUFBcTVELEdBRUEsR0FBQXo5QyxHQUFBOVAsRUFBQTZwRCx1QkFDQSxVQUFBLzVD
LEVBQ0EsTUFBQUEsRUFBQWkrQyxRQUNBdjBELEVBQUFILFVBQUFrMEQsRUFBQXo5QyxFQUFBaStD
LFlBRUssQ0FDTCxHQUFBQyxHQUFBcEMsUUFBQTVyRCxHQUFBM1IsVUFBQTJSLEVBQUEzUixTQUFB
LEtBQ0E0L0QsRUFBQSxNQUFBRCxFQUFBLEtBQUFodUQsRUFBQTNSLFFBRUEsVUFBQTIvRCxFQUtB
LEtBQUFBLEdBSUF4MEQsRUFBQUYsVUFBQWkwRCxFQUFBUyxPQUVPLFVBQUFDLEVBRVAsT0FEQXJK
LEdBQUFwN0QsS0FBQTBrRSxjQUFBRCxFQUFBMTdELEVBQUEyQixHQUNBckwsRUFBQSxFQUF1QkEs
RUFBQSs3RCxFQUFBOTVELE9BQXdCakMsSUFDL0MyUSxFQUFBUCxXQUFBczBELEVBQUEzSSxFQUFB
LzdELE1BY0EyVSxpQkFBQSxTQUFBQyxFQUFBbEwsRUFBQTJCLEdBQ0EsR0FBQXdKLEdBQUFsVSxL
QUFBMEosZUFDQTFKLE1BQUEwSixnQkFBQXVLLEVBQ0FqVSxLQUFBK2dELGdCQUFBaDRDLEVBQUFt
TCxFQUFBRCxFQUFBdkosSUFhQXEyQyxnQkFBQSxTQUFBaDRDLEVBQUFtTCxFQUFBRCxFQUFBdkos
R0FDQSxHQUFBaTZELEdBQUF6d0QsRUFBQXNDLE1BQ0ErMEIsRUFBQXZyQyxLQUFBMEosZ0JBQUE4
TSxLQUVBLFFBQUF4VyxLQUFBb2dFLE1BQ0EsWUFDQXVFLEVBQUEzRCxFQUFBempDLGFBQUF2OUIs
S0FBQTJrRSxHQUNBcDVCLEVBQUF5MUIsRUFBQXpqQyxhQUFBdjlCLEtBQUF1ckMsRUFDQSxNQUNB
LGNBQ0FvNUIsRUFBQXRELEVBQUE5akMsYUFBQXY5QixLQUFBMmtFLEdBQ0FwNUIsRUFBQTgxQixF
QUFBOWpDLGFBQUF2OUIsS0FBQXVyQyxFQUNBLE1BQ0EsY0FDQW81QixFQUFBcm5DLEVBQUFDLGFB
QUF2OUIsS0FBQTJrRSxHQUNBcDVCLEVBQUFqTyxFQUFBQyxhQUFBdjlCLEtBQUF1ckMsRUFDQSxN
QUNBLGdCQUNBbzVCLEVBQUF4RCxFQUFBNWpDLGFBQUF2OUIsS0FBQTJrRSxHQUNBcDVCLEVBQUE0
MUIsRUFBQTVqQyxhQUFBdjlCLEtBQUF1ckMsR0FRQSxPQUpBMjBCLEVBQUFsZ0UsS0FBQXVyQyxH
QUNBdnJDLEtBQUE4akUscUJBQUFhLEVBQUFwNUIsRUFBQXhpQyxHQUNBL0ksS0FBQTRrRSxtQkFB
QUQsRUFBQXA1QixFQUFBeGlDLEVBQUEyQixHQUVBMUssS0FBQW9nRSxNQUNBLFlBSUFZLEVBQUE2
RCxjQUFBN2tFLEtBQ0EsTUFDQSxnQkFDQW1oRSxFQUFBMEQsY0FBQTdrRSxLQUNBLE1BQ0EsY0FH
QStJLEVBQUE0SyxxQkFBQXZKLFFBQUFzM0QsRUFBQTFoRSxRQXFCQThqRSxxQkFBQSxTQUFBYSxF
QUFBcDVCLEVBQUF4aUMsR0FDQSxHQUFBczdELEdBQ0E5VSxFQUNBdVYsQ0FDQSxLQUFBVCxJQUFB
TSxHQUNBLElBQUFwNUIsRUFBQS9yQyxlQUFBNmtFLElBQUFNLEVBQUFubEUsZUFBQTZrRSxJQUFB
LE1BQUFNLEVBQUFOLEdBR0EsR0FBQUEsSUFBQWhDLEVBQUEsQ0FDQSxHQUFBMEMsR0FBQS9rRSxL
QUFBa2lFLGtCQUNBLEtBQUEzUyxJQUFBd1YsR0FDQUEsRUFBQXZsRSxlQUFBK3ZELEtBQ0F1VixR
QUNBQSxFQUFBdlYsR0FBQSxHQUdBdnZELE1BQUFraUUsbUJBQUEsU0FDTy9vRCxHQUFBM1osZUFB
QTZrRSxHQUNQTSxFQUFBTixJQUlBL3FELEVBQUF0WixLQUFBcWtFLEdBRU92QyxFQUFBOWhFLEtB
QUFvZ0UsS0FBQXVFLEdBQ1B4dUQsRUFBQTNXLGVBQUE2a0UsSUFDQXpvQyxFQUFBYSx3QkFBQStr
QyxFQUFBeGhFLE1BQUFxa0UsSUFFT3IrRCxFQUFBZ00sV0FBQXF5RCxJQUFBcitELEVBQUE4TCxr
QkFBQXV5RCxLQUNQem9DLEVBQUFRLHVCQUFBb2xDLEVBQUF4aEUsTUFBQXFrRSxFQUdBLEtBQUFB
LElBQUE5NEIsR0FBQSxDQUNBLEdBQUF5NUIsR0FBQXo1QixFQUFBODRCLEdBQ0FZLEVBQUFaLElB
QUFoQyxFQUFBcmlFLEtBQUFraUUsbUJBQUEsTUFBQXlDLElBQUFOLEdBQUEzakUsTUFDQSxJQUFB
NnFDLEVBQUEvckMsZUFBQTZrRSxJQUFBVyxJQUFBQyxJQUFBLE1BQUFELEdBQUEsTUFBQUMsR0FH
QSxHQUFBWixJQUFBaEMsRUFVQSxHQVRBMkMsRUFLQUEsRUFBQWhsRSxLQUFBa2lFLG1CQUFBcjNE
LEtBQXlEbTZELEdBRXpEaGxFLEtBQUFraUUsbUJBQUEsS0FFQStDLEVBQUEsQ0FFQSxJQUFBMVYs
SUFBQTBWLElBQ0FBLEVBQUF6bEUsZUFBQSt2RCxJQUFBeVYsS0FBQXhsRSxlQUFBK3ZELEtBQ0F1
VixRQUNBQSxFQUFBdlYsR0FBQSxHQUlBLEtBQUFBLElBQUF5VixHQUNBQSxFQUFBeGxFLGVBQUEr
dkQsSUFBQTBWLEVBQUExVixLQUFBeVYsRUFBQXpWLEtBQ0F1VixRQUNBQSxFQUFBdlYsR0FBQXlW
LEVBQUF6VixRQUtBdVYsR0FBQUUsTUFFTyxJQUFBN3JELEVBQUEzWixlQUFBNmtFLEdBQ1BXLEVB
Q0F6RSxFQUFBdmdFLEtBQUFxa0UsRUFBQVcsRUFBQWo4RCxHQUNTazhELEdBQ1QzckQsRUFBQXRa
LEtBQUFxa0UsT0FFTyxJQUFBdkMsRUFBQTloRSxLQUFBb2dFLEtBQUE3MEIsR0FDUHAxQixFQUFB
M1csZUFBQTZrRSxJQUNBem9DLEVBQUFXLHFCQUFBaWxDLEVBQUF4aEUsTUFBQXFrRSxFQUFBVyxP
QUVPLElBQUFoL0QsRUFBQWdNLFdBQUFxeUQsSUFBQXIrRCxFQUFBOEwsa0JBQUF1eUQsR0FBQSxD
QUNQLEdBQUE1Z0UsR0FBQSs5RCxFQUFBeGhFLEtBSUEsT0FBQWdsRSxFQUNBcHBDLEVBQUFPLG9C
QUFBMTRCLEVBQUE0Z0UsRUFBQVcsR0FFQXBwQyxFQUFBUSx1QkFBQTM0QixFQUFBNGdFLElBSUFT
LEdBQ0FqVixFQUFBTSxrQkFBQXFSLEVBQUF4aEUsTUFBQThrRSxFQUFBOWtFLE9BYUE0a0UsbUJB
QUEsU0FBQUQsRUFBQXA1QixFQUFBeGlDLEVBQUEyQixHQUNBLEdBQUF3NkQsR0FBQTlDLFFBQUF1
QyxHQUFBOS9ELFVBQUE4L0QsRUFBQTkvRCxTQUFBLEtBQ0FzZ0UsRUFBQS9DLFFBQUE3MkIsR0FB
QTFtQyxVQUFBMG1DLEVBQUExbUMsU0FBQSxLQUVBdWdFLEVBQUFULEVBQUF0RSx5QkFBQXNFLEVB
QUF0RSx3QkFBQWtFLE9BQ0FjLEVBQUE5NUIsRUFBQTgwQix5QkFBQTkwQixFQUFBODBCLHdCQUFB
a0UsT0FHQWUsRUFBQSxNQUFBSixFQUFBLEtBQUFQLEVBQUE5L0QsU0FDQXMyRCxFQUFBLE1BQUFn
SyxFQUFBLEtBQUE1NUIsRUFBQTFtQyxTQUlBMGdFLEVBQUEsTUFBQUwsR0FBQSxNQUFBRSxFQUNB
SSxFQUFBLE1BQUFMLEdBQUEsTUFBQUUsQ0FDQSxPQUFBQyxHQUFBLE1BQUFuSyxFQUNBbjdELEtB
QUFpN0QsZUFBQSxLQUFBbHlELEVBQUEyQixHQUNLNjZELElBQUFDLEdBQ0x4bEUsS0FBQXlsRSxr
QkFBQSxJQU1BLE1BQUFOLEVBQ0FELElBQUFDLEdBQ0FubEUsS0FBQXlsRSxrQkFBQSxHQUFBTixH
QUtLLE1BQUFFLEVBQ0xELElBQUFDLEdBQ0FybEUsS0FBQTBsRSxhQUFBLEdBQUFMLEdBS0ssTUFB
QWxLLEdBS0xuN0QsS0FBQWk3RCxlQUFBRSxFQUFBcHlELEVBQUEyQixJQUlBa0osWUFBQSxXQUNB
LE1BQUE0dEQsR0FBQXhoRSxPQVNBNlQsaUJBQUEsU0FBQUMsR0FDQSxPQUFBOVQsS0FBQW9nRSxN
QUNBLFlBQ0EsV0FDQSxhQUNBLFVBQ0EsV0FDQSxhQUNBLGFBQ0EsWUFDQSxHQUFBemlDLEdBQUEz
OUIsS0FBQTI4QixjQUFBZ0IsU0FDQSxJQUFBQSxFQUNBLE9BQUF0K0IsR0FBQSxFQUF5QkEsRUFB
QXMrQixFQUFBcjhCLE9BQXNCakMsSUFDL0NzK0IsRUFBQXQrQixHQUFBd2MsUUFHQSxNQUNBLGFB
Q0EsZUFDQStxQixFQUFBVyxhQUFBdm5DLEtBQ0EsTUFDQSxZQUNBLFdBQ0EsV0FPQXNGLEVBQUEs
S0FBQXRGLEtBQUFvZ0UsTUFJQXBnRSxLQUFBeTdELGdCQUFBM25ELEdBQ0F4TixFQUFBOUIsWUFB
QXhFLE1BQ0EyWSxFQUFBYSxtQkFBQXhaLE1BQ0FBLEtBQUEwWSxZQUFBLEVBQ0ExWSxLQUFBb0Ys
T0FBQSxFQUNBcEYsS0FBQTI4QixjQUFBLE1BT0F0eUIsa0JBQUEsV0FDQSxNQUFBbTNELEdBQUF4
aEUsUUFJQTZLLEVBQUFrM0QsRUFBQXhpRSxVQUFBd2lFLEVBQUF3QixNQUFBcEIsRUFBQW9CLE9B
RUF6a0UsRUFBQUQsUUFBQWtqRSxHeklvNmVNLFNBQVNqakUsRUFBUUQsRUFBU0gsRzBJMTRnQmhD
LFlBTUEsU0FBQXNqQyxHQUFBMmpDLEVBQUFsaUUsR0FDQSxHQUFBb2tDLElBQ0E1RixpQkFBQTBq
QyxFQUNBbkMsV0FBQSxFQUNBM0MsZUFBQXA5RCxJQUFBRSxXQUFBODlCLEVBQUFoK0IsSUFBQStZ
LGNBQUEsS0FDQW1rRCxNQUFBbDlELEVBQ0EyOEQsS0FBQTM4RCxJQUFBc00sU0FBQVcsY0FBQSxL
QUNBc3hELGNBQUF2K0QsSUFBQWtOLGFBQUEsS0FLQSxPQUFBazNCLEdBaEJBLEdBRUFwRyxJQUZB
L2lDLEVBQUEsSUFFQSxFQWlCQUksR0FBQUQsUUFBQW1qQyxHMUkwNWdCTSxTQUFTbGpDLEVBQVFE
LEVBQVNILEcySS82Z0JoQyxZQUVBLElBQUFtTSxHQUFBbk0sRUFBQSxHQUVBc1IsRUFBQXRSLEVB
QUEsSUFDQTRILEVBQUE1SCxFQUFBLEdBRUFrbkUsRUFBQSxTQUFBeG5DLEdBRUFwK0IsS0FBQTBK
LGdCQUFBLEtBRUExSixLQUFBc0UsVUFBQSxLQUNBdEUsS0FBQStGLFlBQUEsS0FDQS9GLEtBQUFn
akMsbUJBQUEsS0FDQWhqQyxLQUFBb0YsT0FBQSxFQUVBeUYsR0FBQSs2RCxFQUFBcm1FLFdBQ0E2
VCxlQUFBLFNBQUFySyxFQUFBdUssRUFBQUMsRUFBQTdJLEdBQ0EsR0FBQW03RCxHQUFBdHlELEVB
QUFpd0QsWUFDQXhqRSxNQUFBb0YsT0FBQXlnRSxFQUNBN2xFLEtBQUErRixZQUFBdU4sRUFDQXRU
LEtBQUFnakMsbUJBQUF6dkIsQ0FFQSxJQUFBelAsR0FBQSxpQkFBQTlELEtBQUFvRixPQUFBLEdB
Q0EsSUFBQTJELEVBQUF3NUIsaUJBQUEsQ0FDQSxHQUFBL2xCLEdBQUFqSixFQUFBc3RELGVBQ0Fw
OUQsRUFBQStZLEVBQUFzcEQsY0FBQWhpRSxFQUVBLE9BREF3QyxHQUFBbkMsYUFBQW5FLEtBQUF5
RCxHQUNBdU0sRUFBQXZNLEdBRUEsTUFBQXNGLEdBQUF1N0QscUJBSUEsR0FFQSxPQUFBeGdFLEVB
QUEsT0FHQWtRLGlCQUFBLGFBQ0FKLFlBQUEsV0FDQSxNQUFBdE4sR0FBQVIsb0JBQUE5RixPQUVB
NlQsaUJBQUEsV0FDQXZOLEVBQUE5QixZQUFBeEUsU0FJQWxCLEVBQUFELFFBQUErbUUsRzNJKzdn
Qk0sU0FBUzltRSxFQUFRRCxHNEkvK2dCdkIsWUFFQSxJQUFBeWpDLElBQ0FDLGtCQUFBLEVBQ0F3
akMsVUFBQSxFQUdBam5FLEdBQUFELFFBQUF5akMsRzVJKy9nQk0sU0FBU3hqQyxFQUFRRCxFQUFT
SCxHNkl0Z2hCaEMsWUFFQSxJQUFBa3NCLEdBQUFsc0IsRUFBQSxJQUNBNEgsRUFBQTVILEVBQUEs
R0FLQWs5RCxHQU9BRSxrQ0FBQSxTQUFBL2dELEVBQUErUCxHQUNBLEdBQUFybkIsR0FBQTZDLEVB
QUFSLG9CQUFBaVYsRUFDQTZQLEdBQUFDLGVBQUFwbkIsRUFBQXFuQixJQUlBaHNCLEdBQUFELFFB
QUErOEQsRzdJc2hoQk0sU0FBUzk4RCxFQUFRRCxFQUFTSCxHOEkzaWhCaEMsWUFvQkEsU0FBQXNu
RSxLQUNBaG1FLEtBQUEwWSxhQUVBc29ELEVBQUE2RCxjQUFBN2tFLE1BSUEsUUFBQWltRSxHQUFB
enZELEdBQ0EsR0FBQTB2RCxHQUFBLGFBQUExdkQsRUFBQTdNLE1BQUEsVUFBQTZNLEVBQUE3TSxJ
QUNBLE9BQUF1OEQsR0FBQSxNQUFBMXZELEVBQUE2WSxRQUFBLE1BQUE3WSxFQUFBMUYsTUFzTUEs
UUFBQXNzQixHQUFBdnZCLEdBQ0EsR0FBQTJJLEdBQUF4VyxLQUFBMEosZ0JBQUE4TSxNQUVBdEos
RUFBQWtqQixFQUFBSyxnQkFBQWphLEVBQUEzSSxFQUtBL0YsR0FBQTJDLEtBQUF1N0QsRUFBQWht
RSxLQUVBLElBQUFjLEdBQUEwVixFQUFBMVYsSUFDQSxjQUFBMFYsRUFBQTdNLE1BQUEsTUFBQTdJ
LEVBQUEsQ0FJQSxJQUhBLEdBQUFxbEUsR0FBQTcvRCxFQUFBUixvQkFBQTlGLE1BQ0FvbUUsRUFB
QUQsRUFFQUMsRUFBQTFnRSxZQUNBMGdFLElBQUExZ0UsVUFXQSxRQUZBMmdFLEdBQUFELEVBQUFF
LGlCQUFBLGNBQUFqNUIsS0FBQUMsVUFBQSxHQUFBeHNDLEdBQUEsbUJBRUF6QixFQUFBLEVBQW1C
QSxFQUFBZ25FLEVBQUEva0UsT0FBa0JqQyxJQUFBLENBQ3JDLEdBQUFrbkUsR0FBQUYsRUFBQWhu
RSxFQUNBLElBQUFrbkUsSUFBQUosR0FBQUksRUFBQXBSLE9BQUFnUixFQUFBaFIsS0FBQSxDQU9B
LEdBQUFxUixHQUFBbGdFLEVBQUFULG9CQUFBMGdFLEVBQ0FDLEdBQUEsT0FBQWxoRSxFQUFBLE1B
SUF3QyxFQUFBMkMsS0FBQXU3RCxFQUFBUSxLQUlBLE1BQUF0NUQsR0E5UUEsR0FBQTVILEdBQUE1
RyxFQUFBLEdBQ0FtTSxFQUFBbk0sRUFBQSxHQUVBazlCLEVBQUFsOUIsRUFBQSxJQUNBMHhCLEVB
QUExeEIsRUFBQSxJQUNBNEgsRUFBQTVILEVBQUEsR0FDQW9KLEVBQUFwSixFQUFBLEdBd0NBc2lF
LEdBdENBdGlFLEVBQUEsR0FDQUEsRUFBQSxJQXNDQTYrQixhQUFBLFNBQUFuNUIsRUFBQW9TLEdB
Q0EsR0FBQTFGLEdBQUFzZixFQUFBRyxTQUFBL1osR0FDQTZZLEVBQUFlLEVBQUFJLFdBQUFoYSxH
QUVBaXdELEVBQUE1N0QsR0FHQWxCLEtBQUFqSixPQUdBcXBDLEtBQUFycEMsT0FHQW9nQyxJQUFB
cGdDLE9BQ0FxMkQsSUFBQXIyRCxRQUNLOFYsR0FDTGt3RCxlQUFBaG1FLE9BQ0FnOUIsYUFBQWg5
QixPQUNBb1EsTUFBQSxNQUFBQSxJQUFBMU0sRUFBQXU0QixjQUFBYyxhQUNBcE8sUUFBQSxNQUFB
QSxJQUFBanJCLEVBQUF1NEIsY0FBQWdxQyxlQUNBeDNDLFNBQUEvcUIsRUFBQXU0QixjQUFBeE4s
VUFHQSxPQUFBczNDLElBR0FqcEMsYUFBQSxTQUFBcDVCLEVBQUFvUyxHQUlBLEdBb0JBa25CLEdB
QUFsbkIsRUFBQWtuQixZQUNBdDVCLEdBQUF1NEIsZUFDQWdxQyxlQUFBLE1BQUFud0QsRUFBQTZZ
LFFBQUE3WSxFQUFBNlksUUFBQTdZLEVBQUFrd0QsZUFDQWpwQyxhQUFBLE1BQUFqbkIsRUFBQTFG
LE1BQUEwRixFQUFBMUYsTUFBQTRzQixFQUNBQyxVQUFBLEtBQ0F4TyxTQUFBaU8sRUFBQW5tQixL
QUFBN1MsR0FDQTB0RCxXQUFBbVUsRUFBQXp2RCxLQUlBcXVELGNBQUEsU0FBQXpnRSxHQUNBLEdB
QUFvUyxHQUFBcFMsRUFBQXNGLGdCQUFBOE0sTUFpQkE2WSxFQUFBN1ksRUFBQTZZLE9BQ0EsT0FB
QUEsR0FDQXVNLEVBQUFPLG9CQUFBNzFCLEVBQUFSLG9CQUFBMUIsR0FBQSxVQUFBaXJCLElBQUEs
RUFHQSxJQUFBNXJCLEdBQUE2QyxFQUFBUixvQkFBQTFCLEdBQ0EwTSxFQUFBc2YsRUFBQUcsU0FB
QS9aLEVBQ0EsVUFBQTFGLEVBQ0EsT0FBQUEsR0FBQSxLQUFBck4sRUFBQXFOLE1BQ0FyTixFQUFB
cU4sTUFBQSxRQUVPLGVBQUEwRixFQUFBN00sS0FBQSxDQUVQLEdBQUFpOUQsR0FBQUMsV0FBQXBq
RSxFQUFBcU4sTUFBQSxRQUlBQSxHQUFBODFELEdBRUE5MUQsR0FBQTgxRCxHQUFBbmpFLEVBQUFx
TixZQUdBck4sRUFBQXFOLE1BQUEsR0FBQUEsT0FFT3JOLEdBQUFxTixRQUFBLEdBQUFBLElBR1By
TixFQUFBcU4sTUFBQSxHQUFBQSxPQUdBLE9BQUEwRixFQUFBMUYsT0FBQSxNQUFBMEYsRUFBQWtu
QixjQVNBajZCLEVBQUFpNkIsZUFBQSxHQUFBbG5CLEVBQUFrbkIsZUFDQWo2QixFQUFBaTZCLGFB
QUEsR0FBQWxuQixFQUFBa25CLGNBR0EsTUFBQWxuQixFQUFBNlksU0FBQSxNQUFBN1ksRUFBQWt3
RCxpQkFDQWpqRSxFQUFBaWpFLGlCQUFBbHdELEVBQUFrd0QsaUJBS0F6RixpQkFBQSxTQUFBNzhE
LEdBQ0EsR0FBQW9TLEdBQUFwUyxFQUFBc0YsZ0JBQUE4TSxNQUlBL1MsRUFBQTZDLEVBQUFSLG9C
QUFBMUIsRUFRQSxRQUFBb1MsRUFBQTdNLE1BQ0EsYUFDQSxZQUNBLEtBQ0EsYUFDQSxXQUNBLGVB
Q0EscUJBQ0EsWUFDQSxXQUNBLFdBR0FsRyxFQUFBcU4sTUFBQSxHQUNBck4sRUFBQXFOLE1BQUFy
TixFQUFBaTZCLFlBQ0EsTUFDQSxTQUNBajZCLEVBQUFxTixNQUFBck4sRUFBQXFOLE1BU0EsR0FB
QWhRLEdBQUEyQyxFQUFBM0MsSUFDQSxNQUFBQSxJQUNBMkMsRUFBQTNDLEtBQUEsSUFFQTJDLEVB
QUFpakUsZ0JBQUFqakUsRUFBQWlqRSxlQUNBampFLEVBQUFpakUsZ0JBQUFqakUsRUFBQWlqRSxl
QUNBLEtBQUE1bEUsSUFDQTJDLEVBQUEzQyxVQXFEQWhDLEdBQUFELFFBQUFtaUUsRzlJMmpoQk0s
U0FBU2xpRSxFQUFRRCxFQUFTSCxHK0k5MGhCaEMsWUFXQSxTQUFBb29FLEdBQUFqaUUsR0FDQSxH
QUFBb21CLEdBQUEsRUFnQkEsT0FaQTlWLEdBQUFDLFNBQUExUyxRQUFBbUMsRUFBQSxTQUFBazlC
LEdBQ0EsTUFBQUEsSUFHQSxnQkFBQUEsSUFBQSxnQkFBQUEsR0FDQTlXLEdBQUE4VyxFQUNLZ2xD
LElBQ0xBLEdBQUEsTUFLQTk3QyxFQTFCQSxHQUFBcGdCLEdBQUFuTSxFQUFBLEdBRUF5VyxFQUFB
elcsRUFBQSxJQUNBNEgsRUFBQTVILEVBQUEsR0FDQTQrQixFQUFBNStCLEVBQUEsSUFHQXFvRSxH
QURBcm9FLEVBQUEsSUFDQSxHQXlCQTJpRSxHQUNBN2pDLGFBQUEsU0FBQXA1QixFQUFBb1MsRUFB
QWxELEdBT0EsR0FBQTB6RCxHQUFBLElBQ0EsVUFBQTF6RCxFQUFBLENBQ0EsR0FBQTJ6RCxHQUFB
M3pELENBRUEsY0FBQTJ6RCxFQUFBN0csT0FDQTZHLElBQUFsaEUsYUFHQSxNQUFBa2hFLEdBQUEs
V0FBQUEsRUFBQTdHLE9BQ0E0RyxFQUFBMXBDLEVBQUFPLHNCQUFBb3BDLElBTUEsR0FBQTlwQyxH
QUFBLElBQ0EsVUFBQTZwQyxFQUFBLENBQ0EsR0FBQWwyRCxFQU9BLElBTEFBLEVBREEsTUFBQTBG
LEVBQUExRixNQUNBMEYsRUFBQTFGLE1BQUEsR0FFQWcyRCxFQUFBdHdELEVBQUEzUixVQUVBczRC
LEdBQUEsRUFDQXJtQixNQUFBd1IsUUFBQTArQyxJQUVBLE9BQUEzbkUsR0FBQSxFQUF1QkEsRUFB
QTJuRSxFQUFBMWxFLE9BQXdCakMsSUFDL0MsTUFBQTJuRSxFQUFBM25FLEtBQUF5UixFQUFBLENB
Q0Fxc0IsR0FBQSxDQUNBLFlBSUFBLEdBQUEsR0FBQTZwQyxJQUFBbDJELEVBSUExTSxFQUFBdTRC
LGVBQTBCUSxhQUcxQjhqQyxpQkFBQSxTQUFBNzhELEdBRUEsR0FBQW9TLEdBQUFwUyxFQUFBc0Ys
Z0JBQUE4TSxLQUNBLFVBQUFBLEVBQUExRixNQUFBLENBQ0EsR0FBQXJOLEdBQUE2QyxFQUFBUixv
QkFBQTFCLEVBQ0FYLEdBQUFvd0IsYUFBQSxRQUFBcmQsRUFBQTFGLFNBSUF5c0IsYUFBQSxTQUFB
bjVCLEVBQUFvUyxHQUNBLEdBQUFpd0QsR0FBQTU3RCxHQUE2QnN5QixTQUFBejhCLE9BQUFtRSxT
QUFBbkUsUUFBMkM4VixFQUl4RSxPQUFBcFMsRUFBQXU0QixjQUFBUSxXQUNBc3BDLEVBQUF0cEMs
U0FBQS80QixFQUFBdTRCLGNBQUFRLFNBR0EsSUFBQWxTLEdBQUE2N0MsRUFBQXR3RCxFQUFBM1Is
U0FNQSxPQUpBb21CLEtBQ0F3N0MsRUFBQTVoRSxTQUFBb21CLEdBR0F3N0MsR0FJQTNuRSxHQUFB
RCxRQUFBd2lFLEcvSTgxaEJNLFNBQVN2aUUsRUFBUUQsRUFBU0gsR2dKNThoQmhDLFlBWUEsU0FB
QXdvRSxHQUFBQyxFQUFBQyxFQUFBdnlDLEVBQUF3eUMsR0FDQSxNQUFBRixLQUFBdHlDLEdBQUF1
eUMsSUFBQUMsRUFpQkEsUUFBQUMsR0FBQTdqRSxHQUNBLEdBQUF5OEIsR0FBQXo1QixTQUFBeTVC
LFVBQ0FxbkMsRUFBQXJuQyxFQUFBTSxjQUNBZ25DLEVBQUFELEVBQUFwNEQsS0FBQTdOLE9BR0Ft
bUUsRUFBQUYsRUFBQUcsV0FDQUQsR0FBQUUsa0JBQUFsa0UsR0FDQWdrRSxFQUFBRyxZQUFBLGFB
QUFMLEVBRUEsSUFBQU0sR0FBQUosRUFBQXQ0RCxLQUFBN04sT0FDQXdtRSxFQUFBRCxFQUFBTCxD
QUVBLFFBQ0FybkMsTUFBQTBuQyxFQUNBeG5DLElBQUF5bkMsR0FRQSxRQUFBQyxHQUFBdGtFLEdB
Q0EsR0FBQXk4QixHQUFBMTVCLE9BQUFrNUIsY0FBQWw1QixPQUFBazVCLGNBRUEsS0FBQVEsR0FB
QSxJQUFBQSxFQUFBOG5DLFdBQ0EsV0FHQSxJQUFBYixHQUFBam5DLEVBQUFpbkMsV0FDQUMsRUFB
QWxuQyxFQUFBa25DLGFBQ0F2eUMsRUFBQXFMLEVBQUFyTCxVQUNBd3lDLEVBQUFubkMsRUFBQW1u
QyxZQUVBWSxFQUFBL25DLEVBQUFnb0MsV0FBQSxFQVNBLEtBRUFELEVBQUFFLGVBQUF4a0UsU0FD
QXNrRSxFQUFBRyxhQUFBemtFLFNBRUcsTUFBQXJELEdBQ0gsWUFNQSxHQUFBK25FLEdBQUFuQixF
QUFBaG5DLEVBQUFpbkMsV0FBQWpuQyxFQUFBa25DLGFBQUFsbkMsRUFBQXJMLFVBQUFxTCxFQUFB
bW5DLGFBRUFpQixFQUFBRCxFQUFBLEVBQUFKLEVBQUE1aEUsV0FBQS9FLE9BRUFpbkUsRUFBQU4s
RUFBQU8sWUFDQUQsR0FBQUUsbUJBQUFobEUsR0FDQThrRSxFQUFBRyxPQUFBVCxFQUFBRSxlQUFB
RixFQUFBSixZQUVBLElBQUFjLEdBQUF6QixFQUFBcUIsRUFBQUosZUFBQUksRUFBQVYsWUFBQVUs
RUFBQUgsYUFBQUcsRUFBQVQsV0FFQTNuQyxFQUFBd29DLEVBQUEsRUFBQUosRUFBQWxpRSxXQUFB
L0UsT0FDQSsrQixFQUFBRixFQUFBbW9DLEVBR0FNLEVBQUFuaUUsU0FBQSs1QixhQUNBb29DLEdB
QUFDLFNBQUExQixFQUFBQyxHQUNBd0IsRUFBQUYsT0FBQTd6QyxFQUFBd3lDLEVBQ0EsSUFBQXlC
LEdBQUFGLEVBQUFHLFNBRUEsUUFDQTVvQyxNQUFBMm9DLEVBQUF6b0MsRUFBQUYsRUFDQUUsSUFB
QXlvQyxFQUFBM29DLEVBQUFFLEdBUUEsUUFBQTJvQyxHQUFBdmxFLEVBQUFvOUIsR0FDQSxHQUNB
VixHQUFBRSxFQURBRSxFQUFBOTVCLFNBQUF5NUIsVUFBQU0sY0FBQWtuQyxXQUdBaG5FLFVBQUFt
Z0MsRUFBQVIsS0FDQUYsRUFBQVUsRUFBQVYsTUFDQUUsRUFBQUYsR0FDR1UsRUFBQVYsTUFBQVUs
RUFBQVIsS0FDSEYsRUFBQVUsRUFBQVIsSUFDQUEsRUFBQVEsRUFBQVYsUUFFQUEsRUFBQVUsRUFB
QVYsTUFDQUUsRUFBQVEsRUFBQVIsS0FHQUUsRUFBQW9uQyxrQkFBQWxrRSxHQUNBODhCLEVBQUFH
LFVBQUEsWUFBQVAsR0FDQUksRUFBQXFuQyxZQUFBLGFBQUFybkMsR0FDQUEsRUFBQUksUUFBQSxZ
QUFBTixFQUFBRixHQUNBSSxFQUFBVSxTQWVBLFFBQUFnb0MsR0FBQXhsRSxFQUFBbzlCLEdBQ0Es
R0FBQXI2QixPQUFBazVCLGFBQUEsQ0FJQSxHQUFBUSxHQUFBMTVCLE9BQUFrNUIsZUFDQXArQixF
QUFBbUMsRUFBQTBpQyxLQUFBN2tDLE9BQ0E2K0IsRUFBQWg2QixLQUFBMjZCLElBQUFELEVBQUFW
LE1BQUE3K0IsR0FDQSsrQixFQUFBMy9CLFNBQUFtZ0MsRUFBQVIsSUFBQUYsRUFBQWg2QixLQUFB
MjZCLElBQUFELEVBQUFSLElBQUEvK0IsRUFJQSxLQUFBNCtCLEVBQUFncEMsUUFBQS9vQyxFQUFB
RSxFQUFBLENBQ0EsR0FBQThvQyxHQUFBOW9DLENBQ0FBLEdBQUFGLEVBQ0FBLEVBQUFncEMsRUFH
QSxHQUFBQyxHQUFBQyxFQUFBNWxFLEVBQUEwOEIsR0FDQW1wQyxFQUFBRCxFQUFBNWxFLEVBQUE0
OEIsRUFFQSxJQUFBK29DLEdBQUFFLEVBQUEsQ0FDQSxHQUFBL29DLEdBQUE5NUIsU0FBQSs1Qixh
QUNBRCxHQUFBc29DLFNBQUFPLEVBQUEzbEUsS0FBQTJsRSxFQUFBRyxRQUNBcnBDLEVBQUFzcEMs
a0JBRUFycEMsRUFBQUUsR0FDQUgsRUFBQXVwQyxTQUFBbHBDLEdBQ0FMLEVBQUFncEMsT0FBQUks
RUFBQTdsRSxLQUFBNmxFLEVBQUFDLFVBRUFocEMsRUFBQW1vQyxPQUFBWSxFQUFBN2xFLEtBQUE2
bEUsRUFBQUMsUUFDQXJwQyxFQUFBdXBDLFNBQUFscEMsTUFsTEEsR0FBQTU1QixHQUFBakksRUFB
QSxHQUVBMnFFLEVBQUEzcUUsRUFBQSxLQUNBeW5DLEVBQUF6bkMsRUFBQSxJQW9MQWdyRSxFQUFB
L2lFLEVBQUFKLFdBQUEsYUFBQUUsYUFBQSxnQkFBQUQsU0FFQTA0QixHQUlBMEIsV0FBQThvQyxF
QUFBcEMsRUFBQVMsRUFNQTdtQyxXQUFBd29DLEVBQUFWLEVBQUFDLEVBR0FucUUsR0FBQUQsUUFB
QXFnQyxHaEo0OWhCTSxTQUFTcGdDLEVBQVFELEVBQVNILEdpSnBxaUJoQyxZQUVBLElBQUE0RyxH
QUFBNUcsRUFBQSxHQUNBbU0sRUFBQW5NLEVBQUEsR0FFQWtzQixFQUFBbHNCLEVBQUEsSUFDQXNS
LEVBQUF0UixFQUFBLElBQ0E0SCxFQUFBNUgsRUFBQSxHQUVBdW5CLEVBQUF2bkIsRUFBQSxJQW1C
QWlyRSxHQWxCQWpyRSxFQUFBLEdBQ0FBLEVBQUEsSUFpQkEsU0FBQXlRLEdBRUFuUCxLQUFBMEos
Z0JBQUF5RixFQUNBblAsS0FBQTRwRSxZQUFBLEdBQUF6NkQsRUFFQW5QLEtBQUFzRSxVQUFBLEtB
Q0F0RSxLQUFBK0YsWUFBQSxLQUdBL0YsS0FBQW9GLE9BQUEsRUFDQXBGLEtBQUFnb0MsWUFBQSxF
QUNBaG9DLEtBQUE2cEUsZ0JBQUEsS0FDQTdwRSxLQUFBOHBFLGNBQUEsTUFHQWovRCxHQUFBOCtE
LEVBQUFwcUUsV0FTQTZULGVBQUEsU0FBQXJLLEVBQUF1SyxFQUFBQyxFQUFBN0ksR0FFQSxHQWFB
bTdELEdBQUF0eUQsRUFBQWl3RCxhQUNBdUcsRUFBQSxnQkFBQWxFLEVBQUEsSUFDQW1FLEVBQUEs
ZUFHQSxJQUZBaHFFLEtBQUFvRixPQUFBeWdFLEVBQ0E3bEUsS0FBQStGLFlBQUF1TixFQUNBdkss
RUFBQXc1QixpQkFBQSxDQUNBLEdBQUEvbEIsR0FBQWpKLEVBQUFzdEQsZUFDQTEyQyxFQUFBM04s
RUFBQXNwRCxjQUFBaUUsR0FDQTkvQyxFQUFBek4sRUFBQXNwRCxjQUFBa0UsR0FDQWpHLEVBQUEv
ekQsRUFBQXdNLEVBQUF5dEQseUJBUUEsT0FQQWo2RCxHQUFBUCxXQUFBczBELEVBQUEvekQsRUFB
QW1hLElBQ0FucUIsS0FBQTRwRSxhQUNBNTVELEVBQUFQLFdBQUFzMEQsRUFBQS96RCxFQUFBd00s
RUFBQWlPLGVBQUF6cUIsS0FBQTRwRSxlQUVBNTVELEVBQUFQLFdBQUFzMEQsRUFBQS96RCxFQUFB
aWEsSUFDQTNqQixFQUFBbkMsYUFBQW5FLEtBQUFtcUIsR0FDQW5xQixLQUFBNnBFLGdCQUFBNS9D
LEVBQ0E4NUMsRUFFQSxHQUFBbUcsR0FBQWprRCxFQUFBam1CLEtBQUE0cEUsWUFFQSxPQUFBN2dF
LEdBQUF1N0QscUJBSUE0RixFQUdBLE9BQUFILEVBQUEsTUFBQUcsRUFBQSxPQUFBRixFQUFBLE9B
V0FoMkQsaUJBQUEsU0FBQW0yRCxFQUFBcGhFLEdBQ0EsR0FBQW9oRSxJQUFBbnFFLEtBQUEwSixn
QkFBQSxDQUNBMUosS0FBQTBKLGdCQUFBeWdFLENBQ0EsSUFBQUMsR0FBQSxHQUFBRCxDQUNBLElB
QUFDLElBQUFwcUUsS0FBQTRwRSxZQUFBLENBSUE1cEUsS0FBQTRwRSxZQUFBUSxDQUNBLElBQUFD
LEdBQUFycUUsS0FBQTRULGFBQ0FnWCxHQUFBTixxQkFBQSsvQyxFQUFBLEdBQUFBLEVBQUEsR0FB
QUQ7QUFLQXgyRCxZQUFBLFdBQ0EsR0FBQTAyRCxHQUFBdHFFLEtBQUE4cEUsYUFDQSxJQUFBUSxF
QUNBLE1BQUFBLEVBRUEsS0FBQXRxRSxLQUFBNnBFLGdCQUdBLElBRkEsR0FBQTEvQyxHQUFBN2pC
LEVBQUFSLG9CQUFBOUYsTUFDQXlELEVBQUEwbUIsRUFBQTlrQixjQUNBLENBRUEsR0FEQSxNQUFB
NUIsRUFBQTZCLEVBQUEsS0FBQXRGLEtBQUFvRixRQUFBLE9BQ0EsSUFBQTNCLEVBQUFFLFVBQUEs
a0JBQUFGLEVBQUFLLFVBQUEsQ0FDQTlELEtBQUE2cEUsZ0JBQUFwbUUsQ0FDQSxPQUVBQSxJQUFB
NEIsWUFLQSxNQUZBaWxFLElBQUF0cUUsS0FBQXNFLFVBQUF0RSxLQUFBNnBFLGlCQUNBN3BFLEtB
QUE4cEUsY0FBQVEsRUFDQUEsR0FHQXoyRCxpQkFBQSxXQUNBN1QsS0FBQTZwRSxnQkFBQSxLQUNB
N3BFLEtBQUE4cEUsY0FBQSxLQUNBeGpFLEVBQUE5QixZQUFBeEUsU0FJQWxCLEVBQUFELFFBQUE4
cUUsR2pKb3JpQk0sU0FBUzdxRSxFQUFRRCxFQUFTSCxHa0oxMGlCaEMsWUFlQSxTQUFBc25FLEtB
Q0FobUUsS0FBQTBZLGFBRUF5b0QsRUFBQTBELGNBQUE3a0UsTUEySEEsUUFBQW85QixHQUFBdnZC
LEdBQ0EsR0FBQTJJLEdBQUF4VyxLQUFBMEosZ0JBQUE4TSxNQUNBdEosRUFBQWtqQixFQUFBSyxn
QkFBQWphLEVBQUEzSSxFQUVBLE9BREEvRixHQUFBMkMsS0FBQXU3RCxFQUFBaG1FLE1BQ0FrTixF
QS9JQSxHQUFBNUgsR0FBQTVHLEVBQUEsR0FDQW1NLEVBQUFuTSxFQUFBLEdBRUEweEIsRUFBQTF4
QixFQUFBLElBQ0E0SCxFQUFBNUgsRUFBQSxHQUNBb0osRUFBQXBKLEVBQUEsR0E4QkF5aUUsR0E1
QkF6aUUsRUFBQSxHQUNBQSxFQUFBLElBNEJBNitCLGFBQUEsU0FBQW41QixFQUFBb1MsR0FDQSxN
QUFBQSxFQUFBNnBELHdCQUFBLzZELEVBQUEsWUFPQSxJQUFBbWhFLEdBQUE1N0QsS0FBOEIyTCxH
QUM5QjFGLE1BQUFwUSxPQUNBZzlCLGFBQUFoOUIsT0FDQW1FLFNBQUEsR0FBQVQsRUFBQXU0Qixj
QUFBYyxhQUNBdE8sU0FBQS9xQixFQUFBdTRCLGNBQUF4TixVQUdBLE9BQUFzM0MsSUFHQWpwQyxh
QUFBLFNBQUFwNUIsRUFBQW9TLEdBYUEsR0FBQTFGLEdBQUFzZixFQUFBRyxTQUFBL1osR0FDQWlu
QixFQUFBM3NCLENBR0EsVUFBQUEsRUFBQSxDQUNBLEdBQUE0c0IsR0FBQWxuQixFQUFBa25CLGFB
RUE3NEIsRUFBQTJSLEVBQUEzUixRQUNBLE9BQUFBLElBSUEsTUFBQTY0QixFQUFBcDRCLEVBQUEs
YUFDQXdSLE1BQUF3UixRQUFBempCLEtBQ0FBLEVBQUF2RCxRQUFBLFNBQUFnRSxFQUFBLE1BQ0FU
LElBQUEsSUFHQTY0QixFQUFBLEdBQUE3NEIsR0FFQSxNQUFBNjRCLElBQ0FBLEVBQUEsSUFFQUQs
RUFBQUMsRUFHQXQ1QixFQUFBdTRCLGVBQ0FjLGFBQUEsR0FBQUEsRUFDQUUsVUFBQSxLQUNBeE8s
U0FBQWlPLEVBQUFubUIsS0FBQTdTLEtBSUF5Z0UsY0FBQSxTQUFBemdFLEdBQ0EsR0FBQW9TLEdB
QUFwUyxFQUFBc0YsZ0JBQUE4TSxNQUVBL1MsRUFBQTZDLEVBQUFSLG9CQUFBMUIsR0FDQTBNLEVB
QUFzZixFQUFBRyxTQUFBL1osRUFDQSxVQUFBMUYsRUFBQSxDQUdBLEdBQUFpbkMsR0FBQSxHQUFB
am5DLENBR0FpbkMsS0FBQXQwQyxFQUFBcU4sUUFDQXJOLEVBQUFxTixNQUFBaW5DLEdBRUEsTUFB
QXZoQyxFQUFBa25CLGVBQ0FqNkIsRUFBQWk2QixhQUFBcWEsR0FHQSxNQUFBdmhDLEVBQUFrbkIs
ZUFDQWo2QixFQUFBaTZCLGFBQUFsbkIsRUFBQWtuQixlQUlBdWpDLGlCQUFBLFNBQUE3OEQsR0FH
QSxHQUFBWCxHQUFBNkMsRUFBQVIsb0JBQUExQixHQUNBK2tDLEVBQUExbEMsRUFBQTBsQyxXQU1B
QSxLQUFBL2tDLEVBQUF1NEIsY0FBQWMsZUFDQWg2QixFQUFBcU4sTUFBQXE0QixLQVlBcnFDLEdB
QUFELFFBQUFzaUUsR2xKMDFpQk0sU0FBU3JpRSxFQUFRRCxFQUFTSCxHbUo5K2lCaEMsWUFVQSxT
QUFBcXZCLEdBQUF3OEMsRUFBQUMsR0FDQSxhQUFBRCxHQUFBLE9BQUFqbEUsRUFBQSxNQUNBLGFB
QUFrbEUsR0FBQSxPQUFBbGxFLEVBQUEsS0FHQSxRQURBbWxFLEdBQUEsRUFDQUMsRUFBQUgsRUFB
eUJHLEVBQU9BLElBQUEza0UsWUFDaEMwa0UsR0FHQSxRQURBRSxHQUFBLEVBQ0FDLEVBQUFKLEVB
QXlCSSxFQUFPQSxJQUFBN2tFLFlBQ2hDNGtFLEdBSUEsTUFBQUYsRUFBQUUsRUFBQSxHQUNBSixJ
QUFBeGtFLFlBQ0Ewa0UsR0FJQSxNQUFBRSxFQUFBRixFQUFBLEdBQ0FELElBQUF6a0UsWUFDQTRr
RSxHQUtBLEtBREEsR0FBQUUsR0FBQUosRUFDQUksS0FBQSxDQUNBLEdBQUFOLElBQUFDLEVBQ0Es
TUFBQUQsRUFFQUEsS0FBQXhrRSxZQUNBeWtFLElBQUF6a0UsWUFFQSxZQU1BLFFBQUErbkIsR0FB
QXk4QyxFQUFBQyxHQUNBLGFBQUFELEdBQUEsT0FBQWpsRSxFQUFBLE1BQ0EsYUFBQWtsRSxHQUFB
LE9BQUFsbEUsRUFBQSxLQUVBLE1BQUFrbEUsR0FBQSxDQUNBLEdBQUFBLElBQUFELEVBQ0EsUUFF
QUMsS0FBQXprRSxZQUVBLFNBTUEsUUFBQWlWLEdBQUE1VyxHQUdBLE1BRkEsYUFBQUEsR0FBQSxP
QUFBa0IsRUFBQSxNQUVBbEIsRUFBQTJCLFlBTUEsUUFBQThVLEdBQUF6VyxFQUFBeEUsRUFBQXlI
LEdBRUEsSUFEQSxHQUFBeWpFLE1BQ0ExbUUsR0FDQTBtRSxFQUFBcmxFLEtBQUFyQixHQUNBQSxJ
QUFBMkIsV0FFQSxJQUFBMUcsRUFDQSxLQUFBQSxFQUFBeXJFLEVBQUF4cEUsT0FBdUJqQyxLQUFB
LEdBQ3ZCTyxFQUFBa3JFLEVBQUF6ckUsR0FBQSxXQUFBZ0ksRUFFQSxLQUFBaEksRUFBQSxFQUFh
QSxFQUFBeXJFLEVBQUF4cEUsT0FBaUJqQyxJQUM5Qk8sRUFBQWtyRSxFQUFBenJFLEdBQUEsVUFB
QWdJLEdBV0EsUUFBQW9VLEdBQUF0WSxFQUFBRSxFQUFBekQsRUFBQW91QixFQUFBQyxHQUdBLElB
RkEsR0FBQTg4QyxHQUFBNW5FLEdBQUFFLEVBQUEwcUIsRUFBQTVxQixFQUFBRSxHQUFBLEtBQ0Ey
bkUsS0FDQTduRSxPQUFBNG5FLEdBQ0FDLEVBQUF2bEUsS0FBQXRDLEdBQ0FBLElBQUE0QyxXQUdB
LEtBREEsR0FBQWtsRSxNQUNBNW5FLE9BQUEwbkUsR0FDQUUsRUFBQXhsRSxLQUFBcEMsR0FDQUEs
SUFBQTBDLFdBRUEsSUFBQTFHLEVBQ0EsS0FBQUEsRUFBQSxFQUFhQSxFQUFBMnJFLEVBQUExcEUs
T0FBcUJqQyxJQUNsQ08sRUFBQW9yRSxFQUFBM3JFLEdBQUEsVUFBQTJ1QixFQUVBLEtBQUEzdUIs
RUFBQTRyRSxFQUFBM3BFLE9BQXlCakMsS0FBQSxHQUN6Qk8sRUFBQXFyRSxFQUFBNXJFLEdBQUEs
V0FBQTR1QixHQWhIQSxHQUFBM29CLEdBQUE1RyxFQUFBLEVBRUFBLEdBQUEsRUFrSEFJLEdBQUFE
LFNBQ0FpdkIsYUFDQUMsMEJBQ0EvUyxvQkFDQUgsbUJBQ0FZLHVCbkorL2lCTSxTQUFTM2MsRUFB
UUQsRUFBU0gsR29KMW5qQmhDLFlBdUJBLFNBQUF3c0UsS0FDQWxyRSxLQUFBa0ksMEJBdEJBLEdB
QUEyQyxHQUFBbk0sRUFBQSxHQUVBb0osRUFBQXBKLEVBQUEsR0FDQXFNLEVBQUFyTSxFQUFBLElB
RUFzQyxFQUFBdEMsRUFBQSxHQUVBeXNFLEdBQ0FsZ0UsV0FBQWpLLEVBQ0FrSyxNQUFBLFdBQ0Fr
Z0UsRUFBQTdnRSxtQkFBQSxJQUlBOGdFLEdBQ0FwZ0UsV0FBQWpLLEVBQ0FrSyxNQUFBcEQsRUFB
QXNELG9CQUFBNkwsS0FBQW5QLElBR0EwRCxHQUFBNi9ELEVBQUFGLEVBTUF0Z0UsR0FBQXFnRSxF
QUFBM3JFLFVBQUF3TCxHQUNBVSx1QkFBQSxXQUNBLE1BQUFELEtBSUEsSUFBQXpDLEdBQUEsR0FB
QW1pRSxHQUVBRSxHQUNBN2dFLG1CQUFBLEVBTUEvQixlQUFBLFNBQUFDLEVBQUE1SSxFQUFBQyxF
QUFBWCxFQUFBa0IsRUFBQUMsR0FDQSxHQUFBZ3JFLEdBQUFGLEVBQUE3Z0UsaUJBS0EsT0FIQTZn
RSxHQUFBN2dFLG1CQUFBLEVBR0ErZ0UsRUFDQTdpRSxFQUFBNUksRUFBQUMsRUFBQVgsRUFBQWtC
LEVBQUFDLEdBRUF5SSxFQUFBNkMsUUFBQW5ELEVBQUEsS0FBQTVJLEVBQUFDLEVBQUFYLEVBQUFr
QixFQUFBQyxJQUtBeEIsR0FBQUQsUUFBQXVzRSxHcEowb2pCTSxTQUFTdHNFLEVBQVFELEVBQVNI
LEdxSmxzakJoQyxZQXdCQSxTQUFBaWhFLEtBQ0E0TCxJQU1BQSxHQUFBLEVBRUFDLEVBQUFDLGFB
QUE5cEQseUJBQUFELEdBS0E4cEQsRUFBQTd5RCxlQUFBQyx1QkFBQTI1QyxHQUNBaVosRUFBQTF6
RCxpQkFBQTZWLG9CQUFBcm5CLEdBQ0FrbEUsRUFBQTF6RCxpQkFBQStWLG9CQUFBNjlDLEdBTUFG
LEVBQUE3eUQsZUFBQUUsMEJBQ0E4eUQsb0JBQ0FqWix3QkFDQXpCLG9CQUNBMmEsb0JBQ0F4Yywy
QkFHQW9jLEVBQUFLLGNBQUFsdEMsNEJBQUFvakMsR0FFQXlKLEVBQUFLLGNBQUFodEMseUJBQUE4
cUMsR0FFQTZCLEVBQUF4bEUsWUFBQXNMLHdCQUFBMDRDLEdBQ0F3aEIsRUFBQXhsRSxZQUFBc0ws
d0JBQUFpaUQsR0FDQWlZLEVBQUF4bEUsWUFBQXNMLHdCQUFBdzZELEdBRUFOLEVBQUFPLGVBQUE5
dEMsNEJBQUEsU0FBQUcsR0FDQSxVQUFBd25DLEdBQUF4bkMsS0FHQW90QyxFQUFBUSxRQUFBOS9E
LDJCQUFBbkUsR0FDQXlqRSxFQUFBUSxRQUFBNS9ELHVCQUFBZy9ELEdBRUFJLEVBQUFoMkQsVUFB
QXViLGtCQUFBOHFDLElBbkVBLEdBQUE3UixHQUFBdHJELEVBQUEsS0FDQTB3RCxFQUFBMXdELEVB
QUEsS0FDQXV5RCxFQUFBdnlELEVBQUEsS0FDQTZ6RCxFQUFBN3pELEVBQUEsS0FDQWcwRCxFQUFB
aDBELEVBQUEsS0FDQTYwRCxFQUFBNzBELEVBQUEsS0FDQW05RCxFQUFBbjlELEVBQUEsS0FDQXFq
RSxFQUFBcmpFLEVBQUEsS0FDQTRILEVBQUE1SCxFQUFBLEdBQ0FrbkUsRUFBQWxuRSxFQUFBLEtB
Q0FndEUsRUFBQWh0RSxFQUFBLEtBQ0FpckUsRUFBQWpyRSxFQUFBLEtBQ0Ewc0UsRUFBQTFzRSxF
QUFBLEtBQ0FnakIsRUFBQWhqQixFQUFBLEtBQ0E4c0UsRUFBQTlzRSxFQUFBLEtBQ0FxSixFQUFB
ckosRUFBQSxLQUNBb3RFLEVBQUFwdEUsRUFBQSxLQUNBa3RFLEVBQUFsdEUsRUFBQSxLQUNBaXRF
LEVBQUFqdEUsRUFBQSxLQUVBNnNFLEdBQUEsQ0FrREF6c0UsR0FBQUQsU0FDQThnRSxXckptdGpC
QSxHQUVNLFNBQVM3Z0UsRUFBUUQsRUFBU0gsR3NKOXhqQmhDLFlBSUEsU0FBQXV0RSxHQUFBdHlE
LEdBQ0FoQixFQUFBb0IsY0FBQUosR0FDQWhCLEVBQUFxQixtQkFBQSxHQUpBLEdBQUFyQixHQUFB
amEsRUFBQSxJQU9BeWUsR0FLQTBFLGVBQUEsU0FBQW5JLEVBQUFqTixFQUFBQyxFQUFBQyxHQUNB
LEdBQUFnTixHQUFBaEIsRUFBQWMsY0FBQUMsRUFBQWpOLEVBQUFDLEVBQUFDLEVBQ0FzL0QsR0FB
QXR5RCxJQUlBN2EsR0FBQUQsUUFBQXNlLEd0Sjh5akJNLFNBQVNyZSxFQUFRRCxFQUFTSCxHdUps
MGpCaEMsWUFrQkEsU0FBQXd0RSxHQUFBOW5FLEdBSUEsS0FBQUEsRUFBQTJCLGFBQ0EzQixJQUFB
MkIsV0FFQSxJQUFBb2dFLEdBQUE3L0QsRUFBQVIsb0JBQUExQixHQUNBbzlCLEVBQUEya0MsRUFB
QXpnRSxVQUNBLE9BQUFZLEdBQUFmLDJCQUFBaThCLEdBSUEsUUFBQTJxQyxHQUFBenlELEVBQUFo
TixHQUNBMU0sS0FBQTBaLGVBQ0ExWixLQUFBME0sY0FDQTFNLEtBQUFvc0UsYUFXQSxRQUFBQyxH
QUFBQyxHQUNBLEdBQUEzL0QsR0FBQXlQLEVBQUFrd0QsRUFBQTUvRCxhQUNBRCxFQUFBbkcsRUFB
QWYsMkJBQUFvSCxHQU1BNC9ELEVBQUE5L0QsQ0FDQSxHQUNBNi9ELEdBQUFGLFVBQUEzbUUsS0FB
QThtRSxHQUNBQSxLQUFBTCxFQUFBSyxTQUNHQSxFQUVILFFBQUFsdEUsR0FBQSxFQUFpQkEsRUFB
QWl0RSxFQUFBRixVQUFBOXFFLE9BQWtDakMsSUFDbkRvTixFQUFBNi9ELEVBQUFGLFVBQUEvc0Us
R0FDQXFpQixFQUFBOHFELGdCQUFBRixFQUFBNXlELGFBQUFqTixFQUFBNi9ELEVBQUE1L0QsWUFB
QTBQLEVBQUFrd0QsRUFBQTUvRCxjQUlBLFFBQUErL0QsR0FBQXptQyxHQUNBLEdBQUFILEdBQUF3
ZSxFQUFBNzlDLE9BQ0F3L0IsR0FBQUgsR0FqRUEsR0FBQWg3QixHQUFBbk0sRUFBQSxHQUVBNjFC
LEVBQUE3MUIsRUFBQSxJQUNBaUksRUFBQWpJLEVBQUEsR0FDQW9NLEVBQUFwTSxFQUFBLElBQ0E0
SCxFQUFBNUgsRUFBQSxHQUNBb0osRUFBQXBKLEVBQUEsR0FFQTBkLEVBQUExZCxFQUFBLElBQ0Ey
bEQsRUFBQTNsRCxFQUFBLElBeUJBbU0sR0FBQXNoRSxFQUFBNXNFLFdBQ0FtTSxXQUFBLFdBQ0Ex
TCxLQUFBMFosYUFBQSxLQUNBMVosS0FBQTBNLFlBQUEsS0FDQTFNLEtBQUFvc0UsVUFBQTlxRSxP
QUFBLEtBR0F3SixFQUFBaUIsYUFBQW9nRSxFQUFBcmhFLEVBQUE0aEUsa0JBMkJBLElBQUFockQs
SUFDQWlyRCxVQUFBLEVBQ0FILGdCQUFBLEtBRUEvcEQsY0FBQTliLEVBQUFKLFVBQUFDLE9BQUEs
S0FFQW9iLGtCQUFBLFNBQUFDLEdBQ0FILEVBQUE4cUQsZ0JBQUEzcUQsR0FHQUMsV0FBQSxTQUFB
QyxHQUNBTCxFQUFBaXJELFdBQUE1cUQsR0FHQUMsVUFBQSxXQUNBLE1BQUFOLEdBQUFpckQsVUFh
QXBxRCxpQkFBQSxTQUFBN0ksRUFBQWdKLEVBQUFqTSxHQUNBLE1BQUFBLEdBR0E4ZCxFQUFBQyxP
QUFBL2QsRUFBQWlNLEVBQUFoQixFQUFBa3JELGNBQUEzMUQsS0FBQSxLQUFBeUMsSUFGQSxNQWVB
OEksa0JBQUEsU0FBQTlJLEVBQUFnSixFQUFBak0sR0FDQSxNQUFBQSxHQUdBOGQsRUFBQVosUUFB
QWxkLEVBQUFpTSxFQUFBaEIsRUFBQWtyRCxjQUFBMzFELEtBQUEsS0FBQXlDLElBRkEsTUFLQXdK
LG1CQUFBLFNBQUFGLEdBQ0EsR0FBQXZhLEdBQUFna0UsRUFBQXgxRCxLQUFBLEtBQUErTCxFQUNB
dVIsR0FBQUMsT0FBQWh1QixPQUFBLFNBQUFpQyxJQUdBbWtFLGNBQUEsU0FBQWx6RCxFQUFBaE4s
R0FDQSxHQUFBZ1YsRUFBQWlyRCxTQUFBLENBSUEsR0FBQUwsR0FBQUgsRUFBQTdqRSxVQUFBb1Is
RUFBQWhOLEVBQ0EsS0FHQTVFLEVBQUFVLGVBQUE2akUsRUFBQUMsR0FDSyxRQUNMSCxFQUFBeGdF
LFFBQUEyZ0UsTUFLQXh0RSxHQUFBRCxRQUFBNmlCLEd2SmsxakJNLFNBQVM1aUIsRUFBUUQsRUFB
U0gsR3dKaitqQmhDLFlBRUEsSUFBQXNILEdBQUF0SCxFQUFBLElBQ0FpYSxFQUFBamEsRUFBQSxJ
QUNBb1osRUFBQXBaLEVBQUEsSUFDQWt5QixFQUFBbHlCLEVBQUEsSUFDQXcvQixFQUFBeC9CLEVB
QUEsSUFDQStpQixFQUFBL2lCLEVBQUEsSUFDQW9nQyxFQUFBcGdDLEVBQUEsSUFDQW9KLEVBQUFw
SixFQUFBLEdBRUE4c0UsR0FDQWgyRCxVQUFBb2IsRUFBQXRrQixVQUNBdEcsY0FBQXNHLFVBQ0F5
L0QsZUFBQTd0QyxFQUFBNXhCLFVBQ0FxTSxpQkFBQXJNLFVBQ0F3TCxtQkFBQXhMLFVBQ0FtL0Qs
YUFBQWhxRCxFQUFBblYsVUFDQXUvRCxjQUFBL3NDLEVBQUF4eUIsVUFDQTAvRCxRQUFBbGtFLEVB
QUF3RSxVQUdBeE4sR0FBQUQsUUFBQTJzRSxHeEppL2pCTSxTQUFTMXNFLEVBQVFELEVBQVNILEd5
SnZna0JoQyxZQUVBLElBQUFtdUUsR0FBQW51RSxFQUFBLEtBRUFvdUUsRUFBQSxPQUNBQyxFQUFB
LFdBRUE5cEMsR0FDQWlDLG1CQUFBLHNCQU1BOG5DLG9CQUFBLFNBQUF2NUQsR0FDQSxHQUFBd3hC
LEdBQUE0bkMsRUFBQXA1RCxFQUdBLE9BQUFzNUQsR0FBQXY4RCxLQUFBaUQsR0FDQUEsRUFFQUEs
RUFBQTVTLFFBQUFpc0UsRUFBQSxJQUFBN3BDLEVBQUFpQyxtQkFBQSxLQUFBRCxFQUFBLFFBU0FE
LGVBQUEsU0FBQXZ4QixFQUFBZ0QsR0FDQSxHQUFBdzJELEdBQUF4MkQsRUFBQTdTLGFBQUFxL0Is
RUFBQWlDLG1CQUNBK25DLE1BQUF2eUIsU0FBQXV5QixFQUFBLEdBQ0EsSUFBQUMsR0FBQUwsRUFB
QXA1RCxFQUNBLE9BQUF5NUQsS0FBQUQsR0FJQW51RSxHQUFBRCxRQUFBb2tDLEd6SnVoa0JNLFNB
QVNua0MsRUFBUUQsRUFBU0gsRzBKN2prQmhDLFlBdUJBLFNBQUF5dUUsR0FBQTE1RCxFQUFBeVgs
RUFBQWtpRCxHQUVBLE9BQ0F6akUsS0FBQSxnQkFDQXNoQixRQUFBeFgsRUFDQTQ1RCxVQUFBLEtB
Q0FsaUQsU0FBQSxLQUNBaWlELFVBQ0FsaUQsYUFXQSxRQUFBb2lELEdBQUF2ckMsRUFBQTdXLEVB
QUFraUQsR0FFQSxPQUNBempFLEtBQUEsZ0JBQ0FzaEIsUUFBQSxLQUNBb2lELFVBQUF0ckMsRUFB
QWlHLFlBQ0E3YyxTQUFBbmhCLEVBQUE0SixZQUFBbXVCLEdBQ0FxckMsVUFDQWxpRCxhQVVBLFFB
QUFxaUQsR0FBQXhyQyxFQUFBdCtCLEdBRUEsT0FDQWtHLEtBQUEsY0FDQXNoQixRQUFBLEtBQ0Fv
aUQsVUFBQXRyQyxFQUFBaUcsWUFDQTdjLFNBQUExbkIsRUFDQTJwRSxRQUFBLEtBQ0FsaUQsVUFB
QSxNQVVBLFFBQUFzaUQsR0FBQS81RCxHQUVBLE9BQ0E5SixLQUFBLGFBQ0FzaEIsUUFBQXhYLEVB
Q0E0NUQsVUFBQSxLQUNBbGlELFNBQUEsS0FDQWlpRCxRQUFBLEtBQ0FsaUQsVUFBQSxNQVVBLFFB
QUF1aUQsR0FBQXRrQyxHQUVBLE9BQ0F4L0IsS0FBQSxlQUNBc2hCLFFBQUFrZSxFQUNBa2tDLFVB
QUEsS0FDQWxpRCxTQUFBLEtBQ0FpaUQsUUFBQSxLQUNBbGlELFVBQUEsTUFRQSxRQUFBOWdCLEdB
QUE0QixFQUFBZ2YsR0FLQSxNQUpBQSxLQUNBaGYsUUFDQUEsRUFBQXZHLEtBQUF1bEIsSUFFQWhm
LEVBUUEsUUFBQTBoRSxHQUFBdHBFLEVBQUEwNEQsR0FDQWxzQyxFQUFBRSx1QkFBQTFzQixFQUFB
MDRELEdBNUhBLEdBQUF4M0QsR0FBQTVHLEVBQUEsR0FFQWt5QixFQUFBbHlCLEVBQUEsSUFLQXNM
LEdBSkF0TCxFQUFBLElBQ0FBLEVBQUEsR0FFQUEsRUFBQSxJQUNBQSxFQUFBLEtBQ0FvOEQsRUFB
QXA4RCxFQUFBLEtBR0Fvb0UsR0FEQXBvRSxFQUFBLEdBQ0FBLEVBQUEsTUFrSkF5akUsR0FqSkF6
akUsRUFBQSxJQXlKQTZrRSxPQUNBb0ssK0JBQUEsU0FBQUMsRUFBQTdrRSxFQUFBMkIsR0FZQSxN
QUFBb3dELEdBQUFDLG9CQUFBNlMsRUFBQTdrRSxFQUFBMkIsSUFHQW1qRSwwQkFBQSxTQUFBM1Ms
RUFBQTRTLEVBQUExUyxFQUFBQyxFQUFBdHlELEVBQUEyQixHQUNBLEdBQUF5d0QsR0FDQVAsRUFB
QSxDQWdCQSxPQUZBTyxHQUFBMkwsRUFBQWdILEVBQUFsVCxHQUNBRSxFQUFBRyxlQUFBQyxFQUFB
QyxFQUFBQyxFQUFBQyxFQUFBdHlELEVBQUEvSSxVQUFBZ2pDLG1CQUFBdDRCLEVBQUFrd0QsR0FD
QU8sR0FXQXVKLGNBQUEsU0FBQWtKLEVBQUE3a0UsRUFBQTJCLEdBQ0EsR0FBQTdGLEdBQUE3RSxL
QUFBMnRFLCtCQUFBQyxFQUFBN2tFLEVBQUEyQixFQUNBMUssTUFBQThFLGtCQUFBRCxDQUVBLElB
QUF1MkQsTUFDQXYxQyxFQUFBLENBQ0EsUUFBQS9rQixLQUFBK0QsR0FDQSxHQUFBQSxFQUFBckYs
ZUFBQXNCLEdBQUEsQ0FDQSxHQUFBaWhDLEdBQUFsOUIsRUFBQS9ELEdBQ0E4NUQsRUFBQSxFQUlB
OEksRUFBQTE1RCxFQUFBb0osZUFBQTJ1QixFQUFBaDVCLEVBQUEvSSxVQUFBZ2pDLG1CQUFBdDRC
LEVBQUFrd0QsRUFDQTc0QixHQUFBaUcsWUFBQW5pQixJQUNBdTFDLEVBQUEzMUQsS0FBQWkrRCxH
QVFBLE1BQUF0SSxJQVNBcUssa0JBQUEsU0FBQU4sR0FDQSxHQUFBakssR0FBQWw3RCxLQUFBOEUs
aUJBRUFnMkQsR0FBQVcsZ0JBQUFQLEdBQUEsRUFDQSxRQUFBcDZELEtBQUFvNkQsR0FDQUEsRUFB
QTE3RCxlQUFBc0IsSUFDQXdFLEVBQUEsTUFJQSxJQUFBd2xCLElBQUEyaUQsRUFBQXRJLEdBQ0F1
SSxHQUFBMXRFLEtBQUE4cUIsSUFTQTQ2QyxhQUFBLFNBQUF4RyxHQUNBLEdBQUFoRSxHQUFBbDdE
LEtBQUE4RSxpQkFFQWcyRCxHQUFBVyxnQkFBQVAsR0FBQSxFQUNBLFFBQUFwNkQsS0FBQW82RCxH
QUNBQSxFQUFBMTdELGVBQUFzQixJQUNBd0UsRUFBQSxNQUdBLElBQUF3bEIsSUFBQTBpRCxFQUFB
dE8sR0FDQXdPLEdBQUExdEUsS0FBQThxQixJQVVBbXdDLGVBQUEsU0FBQTZTLEVBQUEva0UsRUFB
QTJCLEdBRUExSyxLQUFBK3RFLGdCQUFBRCxFQUFBL2tFLEVBQUEyQixJQVNBcWpFLGdCQUFBLFNB
QUFELEVBQUEva0UsRUFBQTJCLEdBQ0EsR0FBQXd3RCxHQUFBbDdELEtBQUE4RSxrQkFDQXUyRCxL
QUNBRCxLQUNBRCxFQUFBbjdELEtBQUE2dEUsMEJBQUEzUyxFQUFBNFMsRUFBQTFTLEVBQUFDLEVB
QUF0eUQsRUFBQTJCLEVBQ0EsSUFBQXl3RCxHQUFBRCxFQUFBLENBR0EsR0FDQXA2RCxHQURBZ3FC
LEVBQUEsS0FJQWtqRCxFQUFBLEVBQ0Fsb0QsRUFBQSxFQUVBbW9ELEVBQUEsRUFDQUMsRUFBQSxJ
QUNBLEtBQUFwdEUsSUFBQXE2RCxHQUNBLEdBQUFBLEVBQUEzN0QsZUFBQXNCLEdBQUEsQ0FHQSxH
QUFBdzZELEdBQUFKLEtBQUFwNkQsR0FDQWs2QyxFQUFBbWdCLEVBQUFyNkQsRUFDQXc2RCxLQUFB
dGdCLEdBQ0Fsd0IsRUFBQTFnQixFQUFBMGdCLEVBQUE5cUIsS0FBQThwQixVQUFBd3hDLEVBQUE0
UyxFQUFBRixFQUFBbG9ELElBQ0FBLEVBQUEzZixLQUFBNHdELElBQUF1RSxFQUFBdHpCLFlBQUFs
aUIsR0FDQXcxQyxFQUFBdHpCLFlBQUFnbUMsSUFFQTFTLElBRUF4MUMsRUFBQTNmLEtBQUE0d0Qs
SUFBQXVFLEVBQUF0ekIsWUFBQWxpQixJQUlBZ0YsRUFBQTFnQixFQUFBMGdCLEVBQUE5cUIsS0FB
QW11RSxtQkFBQW56QixFQUFBb2dCLEVBQUE2UyxHQUFBQyxFQUFBRixFQUFBamxFLEVBQUEyQixJ
QUNBdWpFLEtBRUFELElBQ0FFLEVBQUFsa0UsRUFBQTRKLFlBQUFvbkMsR0FHQSxJQUFBbDZDLElB
QUF1NkQsR0FDQUEsRUFBQTc3RCxlQUFBc0IsS0FDQWdxQixFQUFBMWdCLEVBQUEwZ0IsRUFBQTlx
QixLQUFBb3VFLGNBQUFsVCxFQUFBcDZELEdBQUF1NkQsRUFBQXY2RCxLQUdBZ3FCLElBQ0E0aUQs
RUFBQTF0RSxLQUFBOHFCLEdBRUE5cUIsS0FBQThFLGtCQUFBcTJELElBY0FNLGdCQUFBLFNBQUEz
bkQsR0FDQSxHQUFBNG5ELEdBQUExN0QsS0FBQThFLGlCQUNBZzJELEdBQUFXLGdCQUFBQyxFQUFB
NW5ELEdBQ0E5VCxLQUFBOEUsa0JBQUEsTUFXQWdsQixVQUFBLFNBQUFpWSxFQUFBN1csRUFBQWtp
RCxFQUFBdG5ELEdBSUEsR0FBQWljLEVBQUFpRyxZQUFBbGlCLEVBQ0EsTUFBQXduRCxHQUFBdnJD
LEVBQUE3VyxFQUFBa2lELElBV0FpQixZQUFBLFNBQUF0c0MsRUFBQTdXLEVBQUF3NEMsR0FDQSxN
QUFBeUosR0FBQXpKLEVBQUF4NEMsRUFBQTZXLEVBQUFpRyxjQVNBcmhCLFlBQUEsU0FBQW9iLEVB
QUF0K0IsR0FDQSxNQUFBOHBFLEdBQUF4ckMsRUFBQXQrQixJQWNBMHFFLG1CQUFBLFNBQUFwc0Ms
RUFBQTJoQyxFQUFBeDRDLEVBQUFyRixFQUFBOWMsRUFBQTJCLEdBRUEsTUFEQXEzQixHQUFBaUcs
WUFBQW5pQixFQUNBN2xCLEtBQUFxdUUsWUFBQXRzQyxFQUFBN1csRUFBQXc0QyxJQVdBMEssY0FB
QSxTQUFBcnNDLEVBQUF0K0IsR0FDQSxHQUFBdW5CLEdBQUFockIsS0FBQTJtQixZQUFBb2IsRUFB
QXQrQixFQUVBLE9BREFzK0IsR0FBQWlHLFlBQUEsS0FDQWhkLEtBS0Fsc0IsR0FBQUQsUUFBQXNq
RSxHMUo2a2tCTSxTQUFTcmpFLEVBQVFELEVBQVNILEcySjkva0JoQyxZQVdBLFNBQUE0dkUsR0FB
QTkyRCxHQUNBLFNBQUFBLEdBQUEsa0JBQUFBLEdBQUE4bkQsV0FBQSxrQkFBQTluRCxHQUFBZ29E
LFdBVkEsR0FBQWw2RCxHQUFBNUcsRUFBQSxHQTJDQTZ2RSxHQXpDQTd2RSxFQUFBLElBbURBOHZF
LG9CQUFBLFNBQUF4cUUsRUFBQTBQLEVBQUE2QyxHQUNBKzNELEVBQUEvM0QsR0FBQSxPQUFBalIs
RUFBQSxPQUNBaVIsRUFBQStvRCxVQUFBNXJELEVBQUExUCxJQVlBeXFFLHlCQUFBLFNBQUF6cUUs
RUFBQTBQLEVBQUE2QyxHQUNBKzNELEVBQUEvM0QsR0FBQSxPQUFBalIsRUFBQSxNQUNBLElBQUFv
cEUsR0FBQW40RCxFQUFBbE0sbUJBR0Fxa0UsTUFBQXAyQixLQUFBNWtDLEtBQUExUCxFQUFBcUcs
cUJBQ0FrTSxFQUFBaXBELFVBQUE5ckQsS0FLQTVVLEdBQUFELFFBQUEwdkUsRzNKK2dsQk0sU0FB
U3p2RSxFQUFRRCxHNEovbGxCdkIsWUFFQSxJQUFBMHdCLEdBQUEsOENBRUF6d0IsR0FBQUQsUUFB
QTB3QixHNUpnbmxCTSxTQUFTendCLEVBQVFELEVBQVNILEc2SnJubEJoQyxZQXFHQSxTQUFBcUos
R0FBQXc2QixHQUNBdmlDLEtBQUFrSSwwQkFNQWxJLEtBQUFza0Usc0JBQUEsRUFDQXRrRSxLQUFB
MnVFLGdCQUFBdG1FLEVBQUFDLFVBQUEsTUFDQXRJLEtBQUF1aUMsbUJBNUdBLEdBQUExM0IsR0FB
QW5NLEVBQUEsR0FFQTJKLEVBQUEzSixFQUFBLElBQ0FvTSxFQUFBcE0sRUFBQSxJQUNBK2lCLEVB
QUEvaUIsRUFBQSxJQUNBeWdDLEVBQUF6Z0MsRUFBQSxJQUVBcU0sR0FEQXJNLEVBQUEsR0FDQUEs
RUFBQSxLQUNBNnlCLEVBQUE3eUIsRUFBQSxJQU1Ba3dFLEdBSUEzakUsV0FBQWswQixFQUFBSSx3
QkFJQXIwQixNQUFBaTBCLEVBQUFRLGtCQVFBa3ZDLEdBS0E1akUsV0FBQSxXQUNBLEdBQUE2akUs
R0FBQXJ0RCxFQUFBTyxXQUVBLE9BREFQLEdBQUFLLFlBQUEsR0FDQWd0RCxHQVFBNWpFLE1BQUEs
U0FBQTZqRSxHQUNBdHRELEVBQUFLLFdBQUFpdEQsS0FRQUMsR0FJQS9qRSxXQUFBLFdBQ0FqTCxL
QUFBMnVFLGdCQUFBcmpFLFNBTUFKLE1BQUEsV0FDQWxMLEtBQUEydUUsZ0JBQUFwakUsY0FTQUMs
R0FBQW9qRSxFQUFBQyxFQUFBRyxHQW1DQXpMLEdBUUE5M0QsdUJBQUEsV0FDQSxNQUFBRCxJQU1B
bUksbUJBQUEsV0FDQSxNQUFBM1QsTUFBQTJ1RSxpQkFNQTVSLGVBQUEsV0FDQSxNQUFBeHJDLElB
T0EySixXQUFBLFdBRUEsTUFBQWw3QixNQUFBMnVFLGdCQUFBenpDLGNBR0FDLFNBQUEsU0FBQUQs
R0FDQWw3QixLQUFBMnVFLGdCQUFBeHpDLFNBQUFELElBT0F4dkIsV0FBQSxXQUNBckQsRUFBQXNE
LFFBQUEzTCxLQUFBMnVFLGlCQUNBM3VFLEtBQUEydUUsZ0JBQUEsTUFJQTlqRSxHQUFBOUMsRUFB
QXhJLFVBQUF3TCxFQUFBdzRELEdBRUF6NEQsRUFBQWlCLGFBQUFoRSxHQUVBakosRUFBQUQsUUFB
QWtKLEc3SnFvbEJNLFNBQVNqSixFQUFRRCxFQUFTSCxHOEoxeWxCaEMsWUFNQSxTQUFBNGdFLEdB
QUE1ckQsRUFBQTFQLEVBQUF1UyxHQUNBLGtCQUFBN0MsR0FDQUEsRUFBQTFQLEVBQUFxRyxxQkFH
QWtrRSxFQUFBQyxvQkFBQXhxRSxFQUFBMFAsRUFBQTZDLEdBSUEsUUFBQWlwRCxHQUFBOXJELEVB
QUExUCxFQUFBdVMsR0FDQSxrQkFBQTdDLEdBQ0FBLEVBQUEsTUFHQTY2RCxFQUFBRSx5QkFBQXpx
RSxFQUFBMFAsRUFBQTZDLEdBbEJBLEdBQUFnNEQsR0FBQTd2RSxFQUFBLEtBRUF5VSxJQW9CQUEs
R0FBQUQsV0FBQSxTQUFBMG5CLEVBQUFua0IsR0FDQSxVQUFBQSxHQUFBLGdCQUFBQSxHQUFBLENB
R0EsR0FBQS9DLEdBQUErQyxFQUFBL0MsR0FDQSxPQUFBQSxHQUNBNHJELEVBQUE1ckQsRUFBQWtu
QixFQUFBbmtCLEVBQUFFLFVBSUF4RCxFQUFBa0IsaUJBQUEsU0FBQUgsRUFBQUQsR0FhQSxHQUFB
ZzdELEdBQUEsS0FDQUMsRUFBQSxJQUNBLFFBQUFoN0QsR0FBQSxnQkFBQUEsS0FDQSs2RCxFQUFB
LzZELEVBQUFSLElBQ0F3N0QsRUFBQWg3RCxFQUFBeUMsT0FHQSxJQUFBdzRELEdBQUEsS0FDQUMs
RUFBQSxJQU1BLE9BTEEsUUFBQW43RCxHQUFBLGdCQUFBQSxLQUNBazdELEVBQUFsN0QsRUFBQVAs
SUFDQTA3RCxFQUFBbjdELEVBQUEwQyxRQUdBczRELElBQUFFLEdBRUEsZ0JBQUFBLElBQUFDLElB
QUFGLEdBR0EvN0QsRUFBQVksV0FBQSxTQUFBNm1CLEVBQUFua0IsR0FDQSxVQUFBQSxHQUFBLGdC
QUFBQSxHQUFBLENBR0EsR0FBQS9DLEdBQUErQyxFQUFBL0MsR0FDQSxPQUFBQSxHQUNBOHJELEVB
QUE5ckQsRUFBQWtuQixFQUFBbmtCLEVBQUFFLFVBSUE3WCxFQUFBRCxRQUFBc1UsRzlKMnpsQk0s
U0FBU3JVLEVBQVFELEVBQVNILEcrSng0bEJoQyxZQStCQSxTQUFBOGhFLEdBQUE4RCxHQUNBdGtF
LEtBQUFrSSwwQkFDQWxJLEtBQUFza0UsdUJBQ0F0a0UsS0FBQXVpQyxrQkFBQSxFQUNBdmlDLEtB
QUE4OEQsWUFBQSxHQUFBdVMsR0FBQXJ2RSxNQWpDQSxHQUFBNkssR0FBQW5NLEVBQUEsR0FFQW9N
LEVBQUFwTSxFQUFBLElBQ0FxTSxFQUFBck0sRUFBQSxJQUVBMndFLEdBREEzd0UsRUFBQSxHQUNB
QSxFQUFBLE1BT0E4TSxLQVNBOGpFLEdBQ0FsbEUsUUFBQSxjQWNBbTVELEdBT0E5M0QsdUJBQUEs
V0FDQSxNQUFBRCxJQU1BbUksbUJBQUEsV0FDQSxNQUFBMjdELElBTUF2UyxlQUFBLFdBQ0EsTUFB
QS84RCxNQUFBODhELGFBT0FweEQsV0FBQSxhQUVBd3ZCLFdBQUEsYUFFQUMsU0FBQSxhQUdBdHdC
LEdBQUEyMUQsRUFBQWpoRSxVQUFBd0wsRUFBQXc0RCxHQUVBejRELEVBQUFpQixhQUFBeTBELEdB
RUExaEUsRUFBQUQsUUFBQTJoRSxHL0p3NWxCTSxTQUFTMWhFLEVBQVFELEVBQVNILEdnS3IrbEJo
QyxZQUVBLFNBQUFpOEIsR0FBQUMsRUFBQUMsR0FBaUQsS0FBQUQsWUFBQUMsSUFBMEMsU0FBQWo1
QixXQUFBLHFDQU0zRixRQUFBaTdDLEdBQUF4ckIsRUFBQUMsSUFKQSxHQUFBQyxHQUFBN3lCLEVB
QUEsSUFtQkEyd0UsR0FqQkEzd0UsRUFBQSxHQWlCQSxXQUNBLFFBQUEyd0UsR0FBQXRtRSxHQUNB
NHhCLEVBQUEzNkIsS0FBQXF2RSxHQUVBcnZFLEtBQUErSSxjQWdHQSxNQXBGQXNtRSxHQUFBOXZF
LFVBQUFpeUIsVUFBQSxTQUFBSCxHQUNBLFVBYUFnK0MsRUFBQTl2RSxVQUFBa3lCLGdCQUFBLFNB
QUFKLEVBQUE1b0IsRUFBQTZvQixHQUNBdHhCLEtBQUErSSxZQUFBK2IsbUJBQ0F5TSxFQUFBRSxn
QkFBQUosRUFBQTVvQixFQUFBNm9CLElBbUJBKzlDLEVBQUE5dkUsVUFBQXF5QixtQkFBQSxTQUFB
UCxHQUNBcnhCLEtBQUErSSxZQUFBK2Isa0JBQ0F5TSxFQUFBSyxtQkFBQVAsR0FFQXdyQixFQUFB
eHJCLEVBQUEsZ0JBaUJBZytDLEVBQUE5dkUsVUFBQXV5QixvQkFBQSxTQUFBVCxFQUFBVSxHQUNB
L3hCLEtBQUErSSxZQUFBK2Isa0JBQ0F5TSxFQUFBTyxvQkFBQVQsRUFBQVUsR0FFQThxQixFQUFB
eHJCLEVBQUEsaUJBZ0JBZytDLEVBQUE5dkUsVUFBQTJ5QixnQkFBQSxTQUFBYixFQUFBYyxHQUNB
bnlCLEtBQUErSSxZQUFBK2Isa0JBQ0F5TSxFQUFBVyxnQkFBQWIsRUFBQWMsR0FFQTBxQixFQUFB
eHJCLEVBQUEsYUFJQWcrQyxLQUdBdndFLEdBQUFELFFBQUF3d0UsR2hLcy9sQk0sU0FBU3Z3RSxF
QUFRRCxHaUtybm1CdkIsWUFFQUMsR0FBQUQsUUFBQSxVaktxb21CTSxTQUFTQyxFQUFRRCxHa0t2
b21CdkIsWUFFQSxJQUFBMHdFLElBQ0FDLE1BQUEsK0JBQ0FDLElBQUEsd0NBb0JBQyxHQUNBQyxh
QUFBLGdCQUNBQyxXQUFBLEVBQ0FDLFNBQUEsRUFDQUMsa0JBQUEscUJBQ0FDLGFBQUEsZUFDQUMs
V0FBQSxFQUNBQyxVQUFBLEVBQ0FDLFdBQUEsY0FDQUMsT0FBQSxFQUNBLzlELGNBQUEsZ0JBQ0Fn
K0QsY0FBQSxnQkFDQUMsWUFBQSxjQUNBQyxRQUFBLEVBQ0FDLGNBQUEsZ0JBQ0FDLFlBQUEsY0FD
QUMsY0FBQSxpQkFDQUMsS0FBQSxFQUNBQyxNQUFBLEVBQ0FDLEtBQUEsRUFDQUMsR0FBQSxFQUNB
QyxTQUFBLFdBQ0FDLFVBQUEsYUFDQUMsS0FBQSxFQUNBQyxTQUFBLFlBQ0FDLFNBQUEsWUFDQUMs
Y0FBQSxnQkFDQUMsbUJBQUEsc0JBQ0FDLDBCQUFBLDhCQUNBQyxhQUFBLGdCQUNBQyxlQUFBLGtC
QUNBQyxrQkFBQSxvQkFDQUMsaUJBQUEsbUJBQ0FDLE9BQUEsRUFDQUMsR0FBQSxFQUNBQyxHQUFB
LEVBQ0F2eEUsRUFBQSxFQUNBd3hFLFdBQUEsRUFDQUMsUUFBQSxFQUNBQyxnQkFBQSxrQkFDQUMs
VUFBQSxFQUNBQyxRQUFBLEVBQ0FDLFFBQUEsRUFDQUMsaUJBQUEsb0JBQ0FDLElBQUEsRUFDQUMs
R0FBQSxFQUNBQyxHQUFBLEVBQ0FDLFNBQUEsV0FDQUMsVUFBQSxFQUNBQyxpQkFBQSxvQkFDQXB5
QyxJQUFBLEVBQ0FxeUMsU0FBQSxFQUNBQywwQkFBQSw0QkFDQUMsS0FBQSxFQUNBbDdDLFlBQUEs
ZUFDQW03QyxTQUFBLFlBQ0FDLE9BQUEsRUFDQUMsVUFBQSxZQUNBQyxZQUFBLGNBQ0FDLFdBQUEs
Y0FDQXQ3QyxhQUFBLGdCQUNBdTdDLFVBQUEsRUFDQTc0QyxXQUFBLGNBQ0FELFNBQUEsWUFDQSs0
QyxlQUFBLG1CQUNBQyxZQUFBLGVBQ0FsNUMsVUFBQSxhQUNBQyxZQUFBLGVBQ0FuRCxXQUFBLGNB
Q0E1MkIsT0FBQSxFQUNBK0MsS0FBQSxFQUNBa3dFLEdBQUEsRUFDQUMsR0FBQSxFQUNBQyxHQUFB
LEVBQ0FDLEdBQUEsRUFDQUMsVUFBQSxhQUNBQywyQkFBQSwrQkFDQUMseUJBQUEsNkJBQ0FDLFNB
QUEsV0FDQUMsa0JBQUEsb0JBQ0FDLGNBQUEsZ0JBQ0FDLFFBQUEsRUFDQUMsVUFBQSxjQUNBQyxh
QUFBLGlCQUNBQyxZQUFBLEVBQ0FDLGVBQUEsa0JBQ0FDLEdBQUEsRUFDQUMsSUFBQSxFQUNBQyxV
QUFBLEVBQ0F2cEQsRUFBQSxFQUNBd3BELEdBQUEsRUFDQUMsR0FBQSxFQUNBQyxHQUFBLEVBQ0FD
LEdBQUEsRUFDQUMsYUFBQSxlQUNBQyxpQkFBQSxtQkFDQUMsUUFBQSxFQUNBQyxVQUFBLFlBQ0FD
LFdBQUEsYUFDQUMsU0FBQSxXQUNBQyxhQUFBLGVBQ0FDLGNBQUEsaUJBQ0FDLGNBQUEsaUJBQ0FD
LGtCQUFBLG9CQUNBQyxNQUFBLEVBQ0FDLFVBQUEsYUFDQUMsVUFBQSxhQUNBQyxZQUFBLGVBQ0FD
LGFBQUEsZUFDQUMsWUFBQSxjQUNBQyxZQUFBLGNBQ0FDLEtBQUEsRUFDQUMsaUJBQUEsbUJBQ0FD
LFVBQUEsWUFDQUMsYUFBQSxFQUNBQyxLQUFBLEVBQ0FDLFdBQUEsYUFDQTFNLE9BQUEsRUFDQXB5
QyxRQUFBLEVBQ0ErK0MsU0FBQSxFQUNBOStDLE1BQUEsRUFDQSsrQyxPQUFBLEVBQ0FDLFlBQUEs
RUFDQUMsT0FBQSxFQUNBQyxTQUFBLEVBQ0FDLGlCQUFBLG9CQUNBQyxrQkFBQSxxQkFDQUMsV0FB
QSxjQUNBQyxRQUFBLFdBQ0FDLFdBQUEsYUFDQUMsb0JBQUEsc0JBQ0FDLGlCQUFBLG1CQUNBQyxh
QUFBLGVBQ0FDLGNBQUEsaUJBQ0FDLE9BQUEsRUFDQUMsVUFBQSxZQUNBQyxVQUFBLFlBQ0FDLFVB
QUEsWUFDQUMsY0FBQSxnQkFDQUMsb0JBQUEsc0JBQ0FDLGVBQUEsaUJBQ0FDLEVBQUEsRUFDQUMs
T0FBQSxFQUNBQyxLQUFBLE9BQ0FDLEtBQUEsT0FDQUMsZ0JBQUEsbUJBQ0FDLFlBQUEsY0FDQUMs
VUFBQSxZQUNBQyxtQkFBQSxxQkFDQUMsaUJBQUEsbUJBQ0FDLFFBQUEsRUFDQXh4QixPQUFBLEVB
Q0F5eEIsT0FBQSxFQUNBQyxHQUFBLEVBQ0FDLEdBQUEsRUFDQUMsTUFBQSxFQUNBQyxLQUFBLEVB
Q0FDLGVBQUEsa0JBQ0FDLE1BQUEsRUFDQUMsUUFBQSxFQUNBQyxpQkFBQSxtQkFDQUMsaUJBQUEs
bUJBQ0FDLE1BQUEsRUFDQUMsYUFBQSxlQUNBL1EsWUFBQSxjQUNBZ1IsYUFBQSxlQUNBQyxNQUFB
LEVBQ0FDLE1BQUEsRUFDQUMsWUFBQSxjQUNBQyxVQUFBLGFBQ0FyaEQsWUFBQSxlQUNBc2hELHNC
QUFBLHlCQUNBQyx1QkFBQSwwQkFDQTV6RCxPQUFBLEVBQ0E2ekQsT0FBQSxFQUNBdmhELGdCQUFB
LG1CQUNBQyxpQkFBQSxvQkFDQXVoRCxjQUFBLGlCQUNBQyxlQUFBLGtCQUNBdmhELGlCQUFBLG9C
QUNBQyxjQUFBLGlCQUNBQyxZQUFBLGVBQ0FzaEQsYUFBQSxlQUNBQyxlQUFBLGlCQUNBQyxZQUFB
LGNBQ0FDLFFBQUEsVUFDQUMsUUFBQSxVQUNBQyxXQUFBLGNBQ0FDLGVBQUEsa0JBQ0FDLGNBQUEs
aUJBQ0FDLFdBQUEsYUFDQTEyRSxHQUFBLEVBQ0FxakQsVUFBQSxFQUNBc3pCLEdBQUEsRUFDQUMs
R0FBQSxFQUNBQyxrQkFBQSxxQkFDQUMsbUJBQUEsc0JBQ0FDLFFBQUEsRUFDQUMsWUFBQSxlQUNB
QyxhQUFBLGdCQUNBQyxXQUFBLGVBQ0FDLFlBQUEsZUFDQUMsU0FBQSxZQUNBQyxhQUFBLGdCQUNB
QyxjQUFBLGlCQUNBOXpCLE9BQUEsRUFDQSt6QixhQUFBLGdCQUNBOWtFLFFBQUEsRUFDQStrRSxT
QUFBLGFBQ0FDLFlBQUEsZ0JBQ0FDLFlBQUEsZ0JBQ0FDLFFBQUEsVUFDQUMsV0FBQSxhQUNBQyxX
QUFBLEVBQ0FDLE9BQUEsRUFDQUMsWUFBQSxlQUNBQyxZQUFBLGVBQ0E1eUQsRUFBQSxFQUNBNnlE
LFFBQUEsV0FDQUMsR0FBQSxFQUNBQyxHQUFBLEVBQ0FDLGlCQUFBLG1CQUNBQyxhQUFBLGdCQUNB
QyxhQUFBLGdCQUNBQyxVQUFBLGFBQ0FDLFVBQUEsYUFDQUMsVUFBQSxhQUNBQyxXQUFBLGNBQ0FD
LFVBQUEsYUFDQUMsUUFBQSxXQUNBQyxNQUFBLEVBQ0FDLFdBQUEsY0FDQUMsUUFBQSxXQUNBQyxT
QUFBLFlBQ0EzekQsRUFBQSxFQUNBNHpELEdBQUEsRUFDQUMsR0FBQSxFQUNBQyxpQkFBQSxtQkFD
QUMsRUFBQSxFQUNBQyxXQUFBLGNBR0E1USxHQUNBcjZELGNBQ0FDLHdCQUNBZ3FFLGFBQUFuTSxF
QUFBQyxNQUNBbU0sYUFBQXBNLEVBQUFDLE1BQ0FvTSxVQUFBck0sRUFBQUMsTUFDQXFNLFVBQUF0
TSxFQUFBQyxNQUNBc00sVUFBQXZNLEVBQUFDLE1BQ0F1TSxXQUFBeE0sRUFBQUMsTUFDQXdNLFVB
QUF6TSxFQUFBQyxNQUNBeU0sUUFBQTFNLEVBQUFFLElBQ0EyTSxRQUFBN00sRUFBQUUsSUFDQTRN
LFNBQUE5TSxFQUFBRSxLQUVBOTlELHFCQUdBclMsUUFBQXNELEtBQUE4c0UsR0FBQWh0RSxRQUFB
LFNBQUFhLEdBQ0F1b0UsRUFBQXI2RCxXQUFBbE8sR0FBQSxFQUNBbXNFLEVBQUFuc0UsS0FDQXVv
RSxFQUFBbjZELGtCQUFBcE8sR0FBQW1zRSxFQUFBbnNFLE1BSUF6RSxFQUFBRCxRQUFBaXRFLEds
S3VwbUJNLFNBQVNodEUsRUFBUUQsRUFBU0gsR21LejdtQmhDLFlBMENBLFNBQUFnaEMsR0FBQWo4
QixHQUNBLHFCQUFBQSxJQUFBMDdCLEVBQUFDLHlCQUFBMzdCLEdBQ0EsT0FDQTA4QixNQUFBMThC
LEVBQUEyOEIsZUFDQUMsSUFBQTU4QixFQUFBNjhCLGFBRUcsSUFBQTk1QixPQUFBazVCLGFBQUEs
Q0FDSCxHQUFBUSxHQUFBMTVCLE9BQUFrNUIsY0FDQSxRQUNBeW5DLFdBQUFqbkMsRUFBQWluQyxX
QUNBQyxhQUFBbG5DLEVBQUFrbkMsYUFDQXZ5QyxVQUFBcUwsRUFBQXJMLFVBQ0F3eUMsWUFBQW5u
QyxFQUFBbW5DLGFBRUcsR0FBQTVnRSxTQUFBeTVCLFVBQUEsQ0FDSCxHQUFBSyxHQUFBOTVCLFNB
QUF5NUIsVUFBQU0sYUFDQSxRQUNBQyxjQUFBRixFQUFBRSxnQkFDQXR4QixLQUFBb3hCLEVBQUFw
eEIsS0FDQXd0RSxJQUFBcDhDLEVBQUFxOEMsWUFDQUMsS0FBQXQ4QyxFQUFBdThDLGVBV0EsUUFB
QUMsR0FBQXJ3RSxFQUFBQyxHQUtBLEdBQUFxd0UsR0FBQSxNQUFBaG9ELE9BQUFELElBQ0EsV0FJ
QSxJQUFBa29ELEdBQUF2OUMsRUFBQTFLLEVBQ0EsS0FBQWtvRCxJQUFBdjBELEVBQUF1MEQsRUFB
QUQsR0FBQSxDQUNBQyxFQUFBRCxDQUVBLElBQUEvcEQsR0FBQTNtQixFQUFBakUsVUFBQXVqQixF
QUFBb1YsT0FBQTB2QixFQUFBamtELEVBQUFDLEVBT0EsT0FMQXVtQixHQUFBdnBCLEtBQUEsU0FD
QXVwQixFQUFBandCLE9BQUEreEIsRUFFQXJaLEVBQUFQLDZCQUFBOFgsR0FFQUEsRUFHQSxZQS9G
QSxHQUFBdlgsR0FBQWpkLEVBQUEsSUFDQWlJLEVBQUFqSSxFQUFBLEdBQ0E0SCxFQUFBNUgsRUFB
QSxHQUNBeWdDLEVBQUF6Z0MsRUFBQSxJQUNBNk4sRUFBQTdOLEVBQUEsSUFFQXEyQixFQUFBcjJC
LEVBQUEsSUFDQTJwQyxFQUFBM3BDLEVBQUEsSUFDQWlxQixFQUFBanFCLEVBQUEsSUFFQXkrRSxF
QUFBeDJFLEVBQUFKLFdBQUEsZ0JBQUFFLG9CQUFBNEosY0FBQSxHQUVBd2IsR0FDQW9WLFFBQ0Ex
bUIseUJBQ0EyMEMsUUFBQSxXQUNBQyxTQUFBLG1CQUVBL3NDLGNBQUEsa0hBSUE0UyxFQUFBLEtB
Q0EyN0IsRUFBQSxLQUNBdXNCLEVBQUEsS0FDQUYsR0FBQSxFQUlBSSxHQUFBLEVBbUZBeFIsR0FD
QS8vQyxhQUVBcFMsY0FBQSxTQUFBQyxFQUFBak4sRUFBQUMsRUFBQUMsR0FDQSxJQUFBeXdFLEVB
Q0EsV0FHQSxJQUFBaHJCLEdBQUEzbEQsRUFBQW5HLEVBQUFSLG9CQUFBMkcsR0FBQWpHLE1BRUEs
UUFBQWtULEdBRUEsZ0JBQ0EydUIsRUFBQStwQixJQUFBLFNBQUFBLEVBQUE5eUIsbUJBQ0F0SyxF
QUFBbzlCLEVBQ0F6QixFQUFBbGtELEVBQ0F5d0UsRUFBQSxLQUVBLE1BQ0EsZUFDQWxvRCxFQUFB
LEtBQ0EyN0IsRUFBQSxLQUNBdXNCLEVBQUEsSUFDQSxNQUdBLG9CQUNBRixHQUFBLENBQ0EsTUFD
QSxzQkFDQSxpQkFFQSxNQURBQSxJQUFBLEVBQ0FELEVBQUFyd0UsRUFBQUMsRUFVQSwwQkFDQSxH
QUFBd3dFLEVBQ0EsS0FHQSxrQkFDQSxlQUNBLE1BQUFKLEdBQUFyd0UsRUFBQUMsR0FHQSxhQUdB
eU0sZUFBQSxTQUFBaFYsRUFBQTJVLEVBQUFDLEdBQ0EsYUFBQUQsSUFDQXFrRSxHQUFBLElBS0F0
K0UsR0FBQUQsUUFBQStzRSxHbkt5OG1CTSxTQUFTOXNFLEVBQVFELEVBQVNILEdvS3hubkJoQyxZ
QTZEQSxTQUFBK1osR0FBQXJVLEdBR0EsVUFBQUEsRUFBQXNVLFlBR0EsUUFBQWpCLEdBQUFDLEdB
Q0EsaUJBQUFBLEdBQUEsVUFBQUEsR0FBQSxXQUFBQSxHQUFBLGFBQUFBLEVBbEVBLEdBQUFwUyxH
QUFBNUcsRUFBQSxHQUVBNjFCLEVBQUE3MUIsRUFBQSxJQUNBaWQsRUFBQWpkLEVBQUEsSUFDQTRI
LEVBQUE1SCxFQUFBLEdBQ0EyK0UsRUFBQTMrRSxFQUFBLEtBQ0E0K0UsRUFBQTUrRSxFQUFBLEtB
Q0E2TixFQUFBN04sRUFBQSxJQUNBNitFLEVBQUE3K0UsRUFBQSxLQUNBOCtFLEVBQUE5K0UsRUFB
QSxLQUNBeWtCLEVBQUF6a0IsRUFBQSxJQUNBKytFLEVBQUEvK0UsRUFBQSxLQUNBZy9FLEVBQUFo
L0UsRUFBQSxLQUNBaS9FLEVBQUFqL0UsRUFBQSxLQUNBd2QsRUFBQXhkLEVBQUEsSUFDQWsvRSxF
QUFBbC9FLEVBQUEsS0FFQXNDLEVBQUF0QyxFQUFBLEdBQ0FtMEIsRUFBQW4wQixFQUFBLElBcUJB
bXRCLEdBcEJBbnRCLEVBQUEsT0FxQkFtL0UsTUFDQSxxcUJBQUFuN0UsUUFBQSxTQUFBbUwsR0FD
QSxHQUFBaXdFLEdBQUFqd0UsRUFBQSxHQUFBMm5CLGNBQUEzbkIsRUFBQWxPLE1BQUEsR0FDQW8r
RSxFQUFBLEtBQUFELEVBQ0FFLEVBQUEsTUFBQUYsRUFFQW4wRSxHQUNBNFEseUJBQ0EyMEMsUUFB
QTZ1QixFQUNBNXVCLFNBQUE0dUIsRUFBQSxXQUVBMzdELGNBQUE0N0QsR0FFQW55RCxHQUFBaGUs
R0FBQWxFLEVBQ0FrMEUsRUFBQUcsR0FBQXIwRSxHQUdBLElBQUFzMEUsTUFZQXRTLEdBQ0E5L0Ms
YUFFQXBTLGNBQUEsU0FBQUMsRUFBQWpOLEVBQUFDLEVBQUFDLEdBQ0EsR0FBQUgsR0FBQXF4RSxF
QUFBbmtFLEVBQ0EsS0FBQWxOLEVBQ0EsV0FFQSxJQUFBMHhFLEVBQ0EsUUFBQXhrRSxHQUNBLGVB
Q0EsaUJBQ0Esd0JBQ0Esd0JBQ0EsaUJBQ0EsbUJBQ0EsZUFDQSxlQUNBLGVBQ0EsaUJBQ0EsY0FD
QSxvQkFDQSx3QkFDQSxtQkFDQSxlQUNBLGNBQ0EsaUJBQ0Esa0JBQ0Esb0JBQ0EsZUFDQSxnQkFD
QSxpQkFDQSxpQkFDQSxnQkFDQSxpQkFDQSxvQkFDQSxzQkFDQSxpQkFHQXdrRSxFQUFBM3hFLENB
Q0EsTUFDQSxtQkFJQSxPQUFBc21CLEVBQUFubUIsR0FDQSxXQUdBLGtCQUNBLGVBQ0F3eEUsRUFB
QVYsQ0FDQSxNQUNBLGVBQ0EsZUFDQVUsRUFBQVgsQ0FDQSxNQUNBLGdCQUdBLE9BQUE3d0UsRUFB
QXFYLE9BQ0EsV0FHQSxzQkFDQSxtQkFDQSxtQkFDQSxpQkFHQSxrQkFDQSxtQkFDQSxxQkFDQW02
RCxFQUFBLzZELENBQ0EsTUFDQSxlQUNBLGlCQUNBLG1CQUNBLGtCQUNBLG1CQUNBLGtCQUNBLG1C
QUNBLGNBQ0ErNkQsRUFBQVQsQ0FDQSxNQUNBLHNCQUNBLGtCQUNBLG1CQUNBLG9CQUNBUyxFQUFB
UixDQUNBLE1BQ0EsdUJBQ0EsNEJBQ0Esd0JBQ0FRLEVBQUFiLENBQ0EsTUFDQSx3QkFDQWEsRUFB
QVAsQ0FDQSxNQUNBLGlCQUNBTyxFQUFBaGlFLENBQ0EsTUFDQSxnQkFDQWdpRSxFQUFBTixDQUNB
LE1BQ0EsZUFDQSxhQUNBLGVBQ0FNLEVBQUFaLEVBR0FZLEVBQUEsT0FBQTU0RSxFQUFBLEtBQUFv
VSxFQUNBLElBQUE3TCxHQUFBcXdFLEVBQUE1MUUsVUFBQWtFLEVBQUFDLEVBQUFDLEVBQUFDLEVB
RUEsT0FEQWdQLEdBQUFQLDZCQUFBdk4sR0FDQUEsR0FHQXVMLGVBQUEsU0FBQWhWLEVBQUEyVSxF
QUFBQyxHQU1BLGVBQUFELElBQUF0QixFQUFBclQsRUFBQWc4RCxNQUFBLENBQ0EsR0FBQTc4RCxH
QUFBa1YsRUFBQXJVLEdBQ0FYLEVBQUE2QyxFQUFBUixvQkFBQTFCLEVBQ0E2NUUsR0FBQTE2RSxL
QUNBMDZFLEVBQUExNkUsR0FBQWd4QixFQUFBQyxPQUFBL3dCLEVBQUEsUUFBQXpDLE1BS0F1WSxt
QkFBQSxTQUFBblYsRUFBQTJVLEdBQ0EsZUFBQUEsSUFBQXRCLEVBQUFyVCxFQUFBZzhELE1BQUEs
Q0FDQSxHQUFBNzhELEdBQUFrVixFQUFBclUsRUFDQTY1RSxHQUFBMTZFLEdBQUFzWSxlQUNBb2lF
LEdBQUExNkUsS0FLQXpFLEdBQUFELFFBQUE4c0UsR3BLeW9uQk0sU0FBUzdzRSxFQUFRRCxFQUFT
SCxHcUsvMW5CaEMsWUFxQkEsU0FBQTIrRSxHQUFBN3dFLEVBQUEyUCxFQUFBelAsRUFBQUMsR0FD
QSxNQUFBSixHQUFBdE4sS0FBQWUsS0FBQXdNLEVBQUEyUCxFQUFBelAsRUFBQUMsR0FwQkEsR0FB
QUosR0FBQTdOLEVBQUEsSUFPQXkvRSxHQUNBQyxjQUFBLEtBQ0FDLFlBQUEsS0FDQUMsY0FBQSxL
QWFBL3hFLEdBQUErQixhQUFBK3VFLEVBQUFjLEdBRUFyL0UsRUFBQUQsUUFBQXcrRSxHcksrMm5C
TSxTQUFTditFLEVBQVFELEVBQVNILEdzSzE0bkJoQyxZQW9CQSxTQUFBNCtFLEdBQUE5d0UsRUFB
QTJQLEVBQUF6UCxFQUFBQyxHQUNBLE1BQUFKLEdBQUF0TixLQUFBZSxLQUFBd00sRUFBQTJQLEVB
QUF6UCxFQUFBQyxHQW5CQSxHQUFBSixHQUFBN04sRUFBQSxJQU1BNi9FLEdBQ0FDLGNBQUEsU0FB
QTN3RSxHQUNBLHVCQUFBQSxLQUFBMndFLGNBQUFoNEUsT0FBQWc0RSxlQWNBanlFLEdBQUErQixh
QUFBZ3ZFLEVBQUFpQixHQUVBei9FLEVBQUFELFFBQUF5K0UsR3RLMDVuQk0sU0FBU3grRSxFQUFR
RCxFQUFTSCxHdUtwN25CaEMsWUFrQkEsU0FBQTR2RCxHQUFBOWhELEVBQUEyUCxFQUFBelAsRUFB
QUMsR0FDQSxNQUFBSixHQUFBdE4sS0FBQWUsS0FBQXdNLEVBQUEyUCxFQUFBelAsRUFBQUMsR0Fq
QkEsR0FBQUosR0FBQTdOLEVBQUEsSUFNQSsvRSxHQUNBLzNELEtBQUEsS0FhQW5hLEdBQUErQixh
QUFBZ2dELEVBQUFtd0IsR0FFQTMvRSxFQUFBRCxRQUFBeXZELEd2S284bkJNLFNBQVN4dkQsRUFB
UUQsRUFBU0gsR3dLNTluQmhDLFlBa0JBLFNBQUErK0UsR0FBQWp4RSxFQUFBMlAsRUFBQXpQLEVB
QUFDLEdBQ0EsTUFBQXdXLEdBQUFsa0IsS0FBQWUsS0FBQXdNLEVBQUEyUCxFQUFBelAsRUFBQUMs
R0FqQkEsR0FBQXdXLEdBQUF6a0IsRUFBQSxJQU1BZ2dGLEdBQ0FDLGFBQUEsS0FhQXg3RCxHQUFB
N1UsYUFBQW12RSxFQUFBaUIsR0FFQTUvRSxFQUFBRCxRQUFBNCtFLEd4SzQrbkJNLFNBQVMzK0Us
RUFBUUQsRUFBU0gsR3lLcGdvQmhDLFlBa0JBLFNBQUE2K0UsR0FBQS93RSxFQUFBMlAsRUFBQXpQ
LEVBQUFDLEdBQ0EsTUFBQXVQLEdBQUFqZCxLQUFBZSxLQUFBd00sRUFBQTJQLEVBQUF6UCxFQUFB
QyxHQWpCQSxHQUFBdVAsR0FBQXhkLEVBQUEsSUFNQWtnRixHQUNBMzZELGNBQUEsS0FhQS9ILEdB
QUE1TixhQUFBaXZFLEVBQUFxQixHQUVBOS9FLEVBQUFELFFBQUEwK0UsR3pLb2hvQk0sU0FBU3or
RSxFQUFRRCxFQUFTSCxHMEs1aW9CaEMsWUFtQkEsU0FBQXN3RCxHQUFBeGlELEVBQUEyUCxFQUFB
elAsRUFBQUMsR0FDQSxNQUFBSixHQUFBdE4sS0FBQWUsS0FBQXdNLEVBQUEyUCxFQUFBelAsRUFB
QUMsR0FsQkEsR0FBQUosR0FBQTdOLEVBQUEsSUFPQW1nRixHQUNBbjRELEtBQUEsS0FhQW5hLEdB
QUErQixhQUFBMGdELEVBQUE2dkIsR0FFQS8vRSxFQUFBRCxRQUFBbXdELEcxSzRqb0JNLFNBQVNs
d0QsRUFBUUQsRUFBU0gsRzJLcmxvQmhDLFlBa0VBLFNBQUE4K0UsR0FBQWh4RSxFQUFBMlAsRUFB
QXpQLEVBQUFDLEdBQ0EsTUFBQXVQLEdBQUFqZCxLQUFBZSxLQUFBd00sRUFBQTJQLEVBQUF6UCxF
QUFBQyxHQWpFQSxHQUFBdVAsR0FBQXhkLEVBQUEsSUFFQW0wQixFQUFBbjBCLEVBQUEsSUFDQW9n
RixFQUFBcGdGLEVBQUEsS0FDQTBrQixFQUFBMWtCLEVBQUEsSUFNQXFnRixHQUNBeDdFLElBQUF1
N0UsRUFDQWg0QixTQUFBLEtBQ0FwakMsUUFBQSxLQUNBQyxTQUFBLEtBQ0FDLE9BQUEsS0FDQUMs
UUFBQSxLQUNBbTdELE9BQUEsS0FDQUMsT0FBQSxLQUNBbjdELGlCQUFBVixFQUVBMFAsU0FBQSxT
QUFBamxCLEdBTUEsbUJBQUFBLEVBQUFsRSxLQUNBa3BCLEVBQUFobEIsR0FFQSxHQUVBa2xCLFFB
QUEsU0FBQWxsQixHQVFBLGtCQUFBQSxFQUFBbEUsTUFBQSxVQUFBa0UsRUFBQWxFLEtBQ0FrRSxF
QUFBa2xCLFFBRUEsR0FFQTZmLE1BQUEsU0FBQS9rQyxHQUdBLG1CQUFBQSxFQUFBbEUsS0FDQWtw
QixFQUFBaGxCLEdBRUEsWUFBQUEsRUFBQWxFLE1BQUEsVUFBQWtFLEVBQUFsRSxLQUNBa0UsRUFB
QWtsQixRQUVBLEdBY0E3VyxHQUFBNU4sYUFBQWt2RSxFQUFBdUIsR0FFQWpnRixFQUFBRCxRQUFB
MitFLEczS3Ftb0JNLFNBQVMxK0UsRUFBUUQsRUFBU0gsRzRLN3FvQmhDLFlBMkJBLFNBQUFnL0Us
R0FBQWx4RSxFQUFBMlAsRUFBQXpQLEVBQUFDLEdBQ0EsTUFBQXVQLEdBQUFqZCxLQUFBZSxLQUFB
d00sRUFBQTJQLEVBQUF6UCxFQUFBQyxHQTFCQSxHQUFBdVAsR0FBQXhkLEVBQUEsSUFFQTBrQixF
QUFBMWtCLEVBQUEsSUFNQXdnRixHQUNBQyxRQUFBLEtBQ0FDLGNBQUEsS0FDQUMsZUFBQSxLQUNB
ejdELE9BQUEsS0FDQUMsUUFBQSxLQUNBSCxRQUFBLEtBQ0FDLFNBQUEsS0FDQUcsaUJBQUFWLEVB
YUFsSCxHQUFBNU4sYUFBQW92RSxFQUFBd0IsR0FFQXBnRixFQUFBRCxRQUFBNitFLEc1SzZyb0JN
LFNBQVM1K0UsRUFBUUQsRUFBU0gsRzZLOXRvQmhDLFlBcUJBLFNBQUFpL0UsR0FBQW54RSxFQUFB
MlAsRUFBQXpQLEVBQUFDLEdBQ0EsTUFBQUosR0FBQXROLEtBQUFlLEtBQUF3TSxFQUFBMlAsRUFB
QXpQLEVBQUFDLEdBcEJBLEdBQUFKLEdBQUE3TixFQUFBLElBT0E0Z0YsR0FDQWh0RSxhQUFBLEtB
Q0ErckUsWUFBQSxLQUNBQyxjQUFBLEtBYUEveEUsR0FBQStCLGFBQUFxdkUsRUFBQTJCLEdBRUF4
Z0YsRUFBQUQsUUFBQTgrRSxHN0s4dW9CTSxTQUFTNytFLEVBQVFELEVBQVNILEc4S3p3b0JoQyxZ
QWlDQSxTQUFBay9FLEdBQUFweEUsRUFBQTJQLEVBQUF6UCxFQUFBQyxHQUNBLE1BQUF3VyxHQUFB
bGtCLEtBQUFlLEtBQUF3TSxFQUFBMlAsRUFBQXpQLEVBQUFDLEdBaENBLEdBQUF3VyxHQUFBemtC
LEVBQUEsSUFNQTZnRixHQUNBQyxPQUFBLFNBQUEzeEUsR0FDQSxnQkFBQUEsS0FBQTJ4RSxPQUNB
LGVBQUEzeEUsTUFBQTR4RSxZQUFBLEdBRUFDLE9BQUEsU0FBQTd4RSxHQUNBLGdCQUFBQSxLQUFB
NnhFLE9BQ0EsZUFBQTd4RSxNQUFBOHhFLFlBQ0EsY0FBQTl4RSxNQUFBK3hFLFdBQUEsR0FFQUMs
T0FBQSxLQU1BQyxVQUFBLEtBYUEzOEQsR0FBQTdVLGFBQUFzdkUsRUFBQTJCLEdBRUF6Z0YsRUFB
QUQsUUFBQSsrRSxHOUt5eG9CTSxTQUFTOStFLEVBQVFELEcrSy96b0J2QixZQVNBLFNBQUFndUUs
R0FBQW5tRCxHQU1BLElBTEEsR0FBQTdtQixHQUFBLEVBQ0FDLEVBQUEsRUFDQVQsRUFBQSxFQUNB
MGdGLEVBQUFyNUQsRUFBQXBsQixPQUNBcEMsRUFBQTZnRixLQUNBMWdGLEVBQUFILEdBQUEsQ0FF
QSxJQURBLEdBQUFvRCxHQUFBNkQsS0FBQTI2QixJQUFBemhDLEVBQUEsS0FBQUgsR0FDVUcsRUFB
QWlELEVBQU9qRCxHQUFBLEVBQ2pCUyxJQUFBRCxHQUFBNm1CLEVBQUFYLFdBQUExbUIsS0FBQVEs
R0FBQTZtQixFQUFBWCxXQUFBMW1CLEVBQUEsS0FBQVEsR0FBQTZtQixFQUFBWCxXQUFBMW1CLEVB
QUEsS0FBQVEsR0FBQTZtQixFQUFBWCxXQUFBMW1CLEVBQUEsR0FFQVEsSUFBQW1nRixFQUNBbGdG
LEdBQUFrZ0YsRUFFQSxLQUFRM2dGLEVBQUEwZ0YsRUFBTzFnRixJQUNmUyxHQUFBRCxHQUFBNm1C
LEVBQUFYLFdBQUExbUIsRUFJQSxPQUZBUSxJQUFBbWdGLEVBQ0FsZ0YsR0FBQWtnRixFQUNBbmdG
LEVBQUFDLEdBQUEsR0ExQkEsR0FBQWtnRixHQUFBLEtBNkJBbGhGLEdBQUFELFFBQUFndUUsRy9L
ZzFvQk0sU0FBUy90RSxFQUFRRCxFQUFTSCxHZ0xoM29CaEMsWUFrQkEsU0FBQTJ3RCxHQUFBdnVE
LEVBQUFnUSxFQUFBOU0sRUFBQWlzRCxHQVdBLEdBQUFnd0IsR0FBQSxNQUFBbnZFLEdBQUEsaUJB
QUFBLElBQUEsS0FBQUEsQ0FDQSxJQUFBbXZFLEVBQ0EsUUFHQSxJQUFBQyxHQUFBemtELE1BQUEz
cUIsRUFDQSxJQUFBbS9DLEdBQUFpd0IsR0FBQSxJQUFBcHZFLEdBQUEya0IsRUFBQWoyQixlQUFB
c0IsSUFBQTIwQixFQUFBMzBCLEdBQ0EsU0FBQWdRLENBR0Esb0JBQUFBLEdBQUEsQ0F1QkFBLElB
QUE2aEMsT0FFQSxNQUFBN2hDLEdBQUEsS0E5REEsR0FBQTRwQixHQUFBaDhCLEVBQUEsSUFHQSsy
QixHQUZBLzJCLEVBQUEsR0FFQWc4QixFQUFBakYsaUJBOERBMzJCLEdBQUFELFFBQUF3d0QsR2hM
ZzRvQk0sU0FBU3Z3RCxFQUFRRCxFQUFTSCxHaUxuOG9CaEMsWUFvQkEsU0FBQWdoRSxHQUFBeWdC
LEdBUUEsU0FBQUEsRUFDQSxXQUVBLFFBQUFBLEVBQUF4OEUsU0FDQSxNQUFBdzhFLEVBR0EsSUFB
QS83RSxHQUFBd1gsRUFBQUcsSUFBQW9rRSxFQUNBLE9BQUEvN0UsSUFDQUEsRUFBQTZoQyxFQUFB
N2hDLEdBQ0FBLEVBQUFrQyxFQUFBUixvQkFBQTFCLEdBQUEsV0FHQSxrQkFBQSs3RSxHQUFBMThD
LE9BQ0FuK0IsRUFBQSxNQUVBQSxFQUFBLEtBQUFoRyxPQUFBc0QsS0FBQXU5RSxLQTFDQSxHQUFB
NzZFLEdBQUE1RyxFQUFBLEdBR0E0SCxHQURBNUgsRUFBQSxJQUNBQSxFQUFBLElBQ0FrZCxFQUFB
bGQsRUFBQSxJQUVBdW5DLEVBQUF2bkMsRUFBQSxHQUNBQSxHQUFBLEdBQ0FBLEVBQUEsRUFzQ0FJ
LEdBQUFELFFBQUE2Z0UsR2pMbTlvQk0sU0FBUzVnRSxFQUFRRCxFQUFTSCxJa0w3Z3BCaEMsU0FB
QTIyQyxHQVdBLFlBdUJBLFNBQUErcUMsR0FBQTcyQyxFQUFBeEgsRUFBQWpoQyxFQUFBODVELEdB
RUEsR0FBQXJ4QixHQUFBLGdCQUFBQSxHQUFBLENBQ0EsR0FBQWlkLEdBQUFqZCxFQUNBc3hCLEVB
QUFuNkQsU0FBQThsRCxFQUFBMWxELEVBU0ErNUQsSUFBQSxNQUFBOTRCLElBQ0F5a0IsRUFBQTFs
RCxHQUFBaWhDLElBVUEsUUFBQStrQyxHQUFBamlFLEVBQUErMUQsR0FDQSxTQUFBLzFELEVBQ0Es
TUFBQUEsRUFFQSxJQUFBMmhELEtBU0EsT0FGQWpjLEdBQUExbEMsRUFBQXU3RSxFQUFBNTVCLEdB
RUFBLEVBMURBLEdBQ0FqYyxJQURBN3JDLEVBQUEsSUFDQUEsRUFBQSxJQUNBQSxHQUFBLEVBSUEs
b0JBQUEyMkMsTUFBQUksTUF1REEzMkMsRUFBQUQsUUFBQWlvRSxJbExnaHBCOEI3bkUsS0FBS0os
RUFBU0gsRUFBb0IsTUFJMUQsU0FBU0ksRUFBUUQsRUFBU0gsR21McGxwQmhDLFlBdUVBLFNBQUFv
Z0YsR0FBQXB5RSxHQUNBLEdBQUFBLEVBQUFuSixJQUFBLENBTUEsR0FBQUEsR0FBQTg4RSxFQUFB
M3pFLEVBQUFuSixNQUFBbUosRUFBQW5KLEdBQ0EscUJBQUFBLEVBQ0EsTUFBQUEsR0FLQSxnQkFB
QW1KLEVBQUEvQyxLQUFBLENBQ0EsR0FBQW1wQixHQUFBRCxFQUFBbm1CLEVBSUEsYUFBQW9tQixF
QUFBLFFBQUE5d0IsT0FBQUcsYUFBQTJ3QixHQUVBLGtCQUFBcG1CLEVBQUEvQyxNQUFBLFVBQUEr
QyxFQUFBL0MsS0FHQTIyRSxFQUFBNXpFLEVBQUFxbUIsVUFBQSxlQUVBLEdBL0ZBLEdBQUFGLEdB
QUFuMEIsRUFBQSxJQU1BMmhGLEdBQ0FFLElBQUEsU0FDQUMsU0FBQSxJQUNBQyxLQUFBLFlBQ0FD
LEdBQUEsVUFDQUMsTUFBQSxhQUNBQyxLQUFBLFlBQ0FDLElBQUEsU0FDQUMsSUFBQSxLQUNBQyxL
QUFBLGNBQ0FDLEtBQUEsY0FDQUMsT0FBQSxhQUNBQyxnQkFBQSxnQkFRQVosR0FDQWEsRUFBQSxZ
QUNBQyxFQUFBLE1BQ0FDLEdBQUEsUUFDQUMsR0FBQSxRQUNBQyxHQUFBLFFBQ0FDLEdBQUEsVUFD
QUMsR0FBQSxNQUNBQyxHQUFBLFFBQ0FDLEdBQUEsV0FDQUMsR0FBQSxTQUNBQyxHQUFBLElBQ0FD
LEdBQUEsU0FDQUMsR0FBQSxXQUNBQyxHQUFBLE1BQ0FDLEdBQUEsT0FDQUMsR0FBQSxZQUNBQyxH
QUFBLFVBQ0FDLEdBQUEsYUFDQUMsR0FBQSxZQUNBQyxHQUFBLFNBQ0FDLEdBQUEsU0FDQUMsSUFB
QSxLQUNBQyxJQUFBLEtBQ0FDLElBQUEsS0FDQUMsSUFBQSxLQUNBQyxJQUFBLEtBQ0FDLElBQUEs
S0FDQUMsSUFBQSxLQUNBQyxJQUFBLEtBQ0FDLElBQUEsS0FDQUMsSUFBQSxNQUNBQyxJQUFBLE1B
Q0FDLElBQUEsTUFDQUMsSUFBQSxVQUNBQyxJQUFBLGFBQ0FDLElBQUEsT0FvQ0F4a0YsR0FBQUQs
UUFBQWlnRixHbkxvbXBCTSxTQUFTaGdGLEVBQVFELEdvTHZzcEJ2QixZQXFCQSxTQUFBaXJDLEdB
QUE2ZCxHQUNBLEdBQUE5ZCxHQUFBOGQsSUFBQUMsR0FBQUQsRUFBQUMsSUFBQUQsRUFBQUUsR0FD
QSxzQkFBQWhlLEdBQ0EsTUFBQUEsR0FwQkEsR0FBQStkLEdBQUEsa0JBQUF6eUIsZ0JBQUE2VSxT
QUNBNmQsRUFBQSxZQXVCQS9vRCxHQUFBRCxRQUFBaXJDLEdwTHd0cEJNLFNBQVNockMsRUFBUUQs
R3FMcnZwQnZCLFlBU0EsU0FBQTBrRixHQUFBOS9FLEdBQ0EsS0FBQUEsS0FBQXVCLFlBQ0F2QixJ
QUFBdUIsVUFFQSxPQUFBdkIsR0FVQSxRQUFBKy9FLEdBQUEvL0UsR0FDQSxLQUFBQSxHQUFBLENB
Q0EsR0FBQUEsRUFBQTRCLFlBQ0EsTUFBQTVCLEdBQUE0QixXQUVBNUIsS0FBQWlDLFlBV0EsUUFB
QTJqRSxHQUFBbjBDLEVBQUFxMEMsR0FLQSxJQUpBLEdBQUE5bEUsR0FBQTgvRSxFQUFBcnVELEdB
Q0F1dUQsRUFBQSxFQUNBQyxFQUFBLEVBRUFqZ0YsR0FBQSxDQUNBLE9BQUFBLEVBQUFFLFNBQUEs
Q0FHQSxHQUZBKy9FLEVBQUFELEVBQUFoZ0YsRUFBQTBsQyxZQUFBN25DLE9BRUFtaUYsR0FBQWxh
LEdBQUFtYSxHQUFBbmEsRUFDQSxPQUNBOWxFLE9BQ0E4bEUsU0FBQWthLEVBSUFBLEdBQUFDLEVB
R0FqZ0YsRUFBQTgvRSxFQUFBQyxFQUFBLy9FLEtBSUEzRSxFQUFBRCxRQUFBd3FFLEdyTHF3cEJN
LFNBQVN2cUUsRUFBUUQsRUFBU0gsR3NMbjBwQmhDLFlBV0EsU0FBQWlsRixHQUFBQyxFQUFBOTNE
LEdBQ0EsR0FBQW9NLEtBUUEsT0FOQUEsR0FBQTByRCxFQUFBbHpFLGVBQUFvYixFQUFBcGIsY0FD
QXduQixFQUFBLFNBQUEwckQsR0FBQSxTQUFBOTNELEVBQ0FvTSxFQUFBLE1BQUEwckQsR0FBQSxN
QUFBOTNELEVBQ0FvTSxFQUFBLEtBQUEwckQsR0FBQSxLQUFBOTNELEVBQ0FvTSxFQUFBLElBQUEw
ckQsR0FBQSxJQUFBOTNELEVBQUFwYixjQUVBd25CLEVBbURBLFFBQUE3YSxHQUFBeU8sR0FDQSxH
QUFBKzNELEVBQUEvM0QsR0FDQSxNQUFBKzNELEdBQUEvM0QsRUFDRyxLQUFBZzRELEVBQUFoNEQs
R0FDSCxNQUFBQSxFQUdBLElBQUFpNEQsR0FBQUQsRUFBQWg0RCxFQUVBLFFBQUE4M0QsS0FBQUcs
R0FDQSxHQUFBQSxFQUFBdmtGLGVBQUFva0YsUUFBQWowQixHQUNBLE1BQUFrMEIsR0FBQS8zRCxH
QUFBaTRELEVBQUFILEVBSUEsVUFwRkEsR0FBQWo5RSxHQUFBakksRUFBQSxHQXdCQW9sRixHQUNB
RSxhQUFBTCxFQUFBLDRCQUNBTSxtQkFBQU4sRUFBQSxrQ0FDQU8sZUFBQVAsRUFBQSw4QkFDQVEs
Y0FBQVIsRUFBQSwrQkFNQUUsS0FLQWwwQixJQUtBaHBELEdBQUFKLFlBQ0FvcEQsRUFBQWxwRCxT
QUFBQyxjQUFBLE9BQUFpcEQsTUFNQSxrQkFBQW5wRCxnQkFDQXM5RSxHQUFBRSxhQUFBSSxnQkFD
QU4sR0FBQUcsbUJBQUFHLGdCQUNBTixHQUFBSSxlQUFBRSxXQUlBLG1CQUFBNTlFLGVBQ0FzOUUs
R0FBQUssY0FBQUUsWUE0QkF2bEYsRUFBQUQsUUFBQXdlLEd0TG0xcEJNLFNBQVN2ZSxFQUFRRCxF
QUFTSCxHdUw1NnBCaEMsWUFVQSxTQUFBZzlCLEdBQUE1cUIsR0FDQSxVQUFBbVYsRUFBQW5WLEdB
QUEsSUFUQSxHQUFBbVYsR0FBQXZuQixFQUFBLEdBWUFJLEdBQUFELFFBQUE2OEIsR3ZMNDdwQk0s
U0FBUzU4QixFQUFRRCxFQUFTSCxHd0wxOHBCaEMsWUFFQSxJQUFBd2pDLEdBQUF4akMsRUFBQSxH
QUVBSSxHQUFBRCxRQUFBcWpDLEVBQUFnQyw0QnhMMDlwQk0sU0FBU3BsQyxFQUFRRCxFQUFTSCxH
eUx4K3BCaEMsWUFpQkEsU0FBQW1vQixHQUFBQyxHQUFzQyxNQUFBQSxNQUFBQyxXQUFBRCxHQUF1
Q0UsUUFBQUYsR0FFN0UsUUFBQTZULEdBQUFDLEVBQUFDLEdBQWlELEtBQUFELFlBQUFDLElBQTBD
LFNBQUFqNUIsV0FBQSxxQ0FFM0YsUUFBQTRvQyxHQUFBbDBCLEVBQUFyWCxHQUFpRCxJQUFBcVgs
RUFBYSxTQUFBbTBCLGdCQUFBLDREQUF5RixRQUFBeHJDLEdBQUEsZ0JBQUFBLElBQUEsa0JBQUFB
LEdBQUFxWCxFQUFBclgsRUFFdkosUUFBQXlyQyxHQUFBQyxFQUFBQyxHQUEwQyxxQkFBQUEsSUFB
QSxPQUFBQSxFQUErRCxTQUFBaHBDLFdBQUEsaUVBQUFncEMsR0FBdUdELEdBQUFwckMsVUFBQUQs
T0FBQTYrQixPQUFBeU0sS0FBQXJyQyxXQUF5RXVOLGFBQWVnRSxNQUFBNjVCLEVBQUF2RCxZQUFB
LEVBQUF5RCxVQUFBLEVBQUF4RCxjQUFBLEtBQTZFdUQsSUFBQXRyQyxPQUFBd3JDLGVBQUF4ckMs
T0FBQXdyQyxlQUFBSCxFQUFBQyxHQUFBRCxFQUFBSSxVQUFBSCxHQVlyWCxRQUFBZ0csS0FDQSxH
QUFBMHpDLEdBRUE5M0MsRUFBQW5yQyxVQUFBQyxPQUFBLEdBQUFaLFNBQUFXLFVBQUEsR0FBQUEs
VUFBQSxXQUNBa2pGLEVBQUFsakYsVUFBQSxHQUVBdXJDLEVBQUEyM0MsR0FBQS8zQyxFQUFBLGVB
RUFxRSxFQUFBLFNBQUFsRCxHQVNBLFFBQUFrRCxHQUFBcjZCLEVBQUE5TCxHQUNBaXdCLEVBQUEz
NkIsS0FBQTZ3QyxFQUVBLElBQUFqRCxHQUFBcEQsRUFBQXhxQyxLQUFBMnRDLEVBQUExdUMsS0FB
QWUsS0FBQXdXLEVBQUE5TCxHQUdBLE9BREFrakMsR0FBQXBCLEdBQUFoMkIsRUFBQTQwQixNQUNB
d0MsRUFPQSxNQXJCQWxELEdBQUFtRyxFQUFBbEQsR0FFQWtELEVBQUF0eEMsVUFBQTR1QyxnQkFB
QSxXQUNBLEdBQUFyQyxFQUVBLE9BQUFBLE1BQXNCQSxFQUFBVSxHQUFBeHNDLEtBQUF3c0MsR0FB
QVYsRUFBQWMsR0FBQSxLQUFBZCxHQVl0QitFLEVBQUF0eEMsVUFBQWtrQyxPQUFBLFdBQ0EsTUFB
QWlNLEdBQUF0NkIsU0FBQUcsS0FBQXZWLEtBQUF3VyxNQUFBM1IsV0FHQWdzQyxHQUNHbkIsRUFB
QWw2QixVQWdCSCxPQU5BcTdCLEdBQUE5Z0IsV0FDQXFiLE1BQUEyQixFQUFBQyxXQUFBdUUsV0FD
QTFzQyxTQUFBd3NDLEVBQUFycUIsUUFBQXZRLFFBQUE4NkIsWUFFQVYsRUFBQTNELG1CQUFBbzND
LEtBQTBEQSxFQUFBOTNDLEdBQUFPLEVBQUFDLFdBQUF1RSxXQUFBK3lDLEVBQUExM0MsR0FBQUcs
RUFBQUUsa0JBQUFxM0MsR0FFMUR6ekMsRUFoRkFoeUMsRUFBQWtvQixZQUFBLEVBQ0Fsb0IsRUFB
QSt4QyxnQkFFQSxJQUFBbEIsR0FBQWh4QyxFQUFBLElBRUEweUMsRUFBQTF5QyxFQUFBLElBRUEy
eUMsRUFBQXhxQixFQUFBdXFCLEdBRUFyRSxFQUFBcnVDLEVBQUEsSUFFQXNwQixFQUFBdHBCLEVB
QUEsR0FFQW1vQixHQUFBbUIsRUFzRUFucEIsR0FBQW1vQixRQUFBNHBCLEt6TDgrcEJNLFNBQVM5
eEMsRUFBUUQsRUFBU0gsRzBMbmtxQmhDLFlBZ0NBLFNBQUFtb0IsR0FBQUMsR0FBc0MsTUFBQUEs
TUFBQUMsV0FBQUQsR0FBdUNFLFFBQUFGLEdBRTdFLFFBQUFra0IsR0FBQWxrQixFQUFBbGtCLEdB
QThDLEdBQUFLLEtBQWlCLFFBQUE1RCxLQUFBeW5CLEdBQXFCbGtCLEVBQUErb0IsUUFBQXRzQixJ
QUFBLEdBQW9DQyxPQUFBQyxVQUFBQyxlQUFBUCxLQUFBNm5CLEVBQUF6bkIsS0FBNkQ0RCxFQUFB
NUQsR0FBQXluQixFQUFBem5CLEdBQXNCLE9BQUE0RCxHQW1CM00sUUFBQXdpQixHQUFBcGUsRUFB
QW05RSxFQUFBMWpGLEdBQ0EsT0FBQXpCLEdBQUFtbEYsRUFBQWxqRixPQUFBLEVBQW9DakMsR0FB
QSxFQUFRQSxJQUFBLENBQzVDLEdBQUFtbkQsR0FBQWcrQixFQUFBbmxGLEdBQUFnSSxFQUNBLElB
QUFtL0MsRUFBQSxNQUFBQSxHQUdBLGdCQUFBelgsRUFBQTdSLEdBQ0EsU0FBQXY4QixPQUFBLCtC
QUFBMEcsR0FBQSxRQUFBdkcsRUFBQSx1Q0FBQW84QixFQUFBcVEscUJBQUEsTUFJQSxRQUFBazND
LEdBQUE1a0YsRUFBQUMsR0FDQSxNQUFBRCxLQUFBQyxFQUtBLFFBQUE0a0YsS0FDQSxHQUFBNTRD
LEdBQUF6cUMsVUFBQUMsT0FBQSxHQUFBWixTQUFBVyxVQUFBLEdBQUFBLFVBQUEsTUFDQXNqRixF
QUFBNzRDLEVBQUE4NEMsV0FDQUEsRUFBQWxrRixTQUFBaWtGLEVBQUExekMsRUFBQWpxQixRQUFB
MjlELEVBQ0FFLEVBQUEvNEMsRUFBQWc1Qyx5QkFDQUEsRUFBQXBrRixTQUFBbWtGLEVBQUFFLEVB
QUEvOUQsUUFBQTY5RCxFQUNBRyxFQUFBbDVDLEVBQUFtNUMsNEJBQ0FBLEVBQUF2a0YsU0FBQXNr
RixFQUFBRSxFQUFBbCtELFFBQUFnK0QsRUFDQUcsRUFBQXI1QyxFQUFBczVDLG9CQUNBQSxFQUFB
MWtGLFNBQUF5a0YsRUFBQUUsRUFBQXIrRCxRQUFBbStELEVBQ0FHLEVBQUF4NUMsRUFBQUgsZ0JB
Q0FBLEVBQUFqckMsU0FBQTRrRixFQUFBQyxFQUFBditELFFBQUFzK0QsQ0FFQSxpQkFBQUUsRUFB
QUMsRUFBQUMsR0FDQSxHQUFBdDNDLEdBQUEvc0MsVUFBQUMsT0FBQSxHQUFBWixTQUFBVyxVQUFB
LEdBQUFBLFVBQUEsTUFDQXNrRixFQUFBdjNDLEVBQUF3M0MsS0FDQUEsRUFBQWxsRixTQUFBaWxG
LEtBQ0FFLEVBQUF6M0MsRUFBQTAzQyxlQUNBQSxFQUFBcGxGLFNBQUFtbEYsRUFBQXBCLEVBQUFv
QixFQUNBRSxFQUFBMzNDLEVBQUE0M0MsaUJBQ0FBLEVBQUF0bEYsU0FBQXFsRixFQUFBRSxFQUFB
ai9ELFFBQUErK0QsRUFDQUcsRUFBQTkzQyxFQUFBKzNDLG1CQUNBQSxFQUFBemxGLFNBQUF3bEYs
RUFBQUQsRUFBQWovRCxRQUFBay9ELEVBQ0FFLEVBQUFoNEMsRUFBQWk0QyxvQkFDQUEsRUFBQTNs
RixTQUFBMGxGLEVBQUFILEVBQUFqL0QsUUFBQW8vRCxFQUNBRSxFQUFBdDdDLEVBQUFvRCxHQUFB
LHdGQUVBbTRDLEVBQUE5Z0UsRUFBQSsvRCxFQUFBVixFQUFBLG1CQUNBMEIsRUFBQS9nRSxFQUFB
Z2dFLEVBQUFSLEVBQUEsc0JBQ0F3QixFQUFBaGhFLEVBQUFpZ0UsRUFBQU4sRUFBQSxhQUVBLE9B
QUFSLEdBQUFqNUMsRUFBQThCLEdBRUF2QixXQUFBLFVBR0FGLGVBQUEsU0FBQWxyQyxHQUNBLGlC
QUFBQSxFQUFBLEtBSUF3ckMseUJBQUF4UCxRQUFBMG9ELEdBR0FlLHNCQUNBQyx5QkFDQUMsaUJB
Q0FiLE9BQ0FFLGlCQUNBRSxtQkFDQUcscUJBQ0FFLHVCQUVLQyxLQXpITHpuRixFQUFBa29CLFlB
QUEsQ0FFQSxJQUFBMG1CLEdBQUFudUMsT0FBQXdDLFFBQUEsU0FBQW1CLEdBQW1ELE9BQUE1RCxH
QUFBLEVBQWdCQSxFQUFBZ0MsVUFBQUMsT0FBc0JqQyxJQUFBLENBQU8sR0FBQTZELEdBQUE3QixV
QUFBaEMsRUFBMkIsUUFBQWtFLEtBQUFMLEdBQTBCNUQsT0FBQUMsVUFBQUMsZUFBQVAsS0FBQWlF
LEVBQUFLLEtBQXlETixFQUFBTSxHQUFBTCxFQUFBSyxJQUFpQyxNQUFBTixHQUUvT3BFLEdBQUE2
bEYsZUFFQSxJQUFBMXpDLEdBQUF0eUMsRUFBQSxJQUVBdXlDLEVBQUFwcUIsRUFBQW1xQixHQUVB
MDFDLEVBQUFob0YsRUFBQSxLQUVBdW5GLEVBQUFwL0QsRUFBQTYvRCxHQUVBQyxFQUFBam9GLEVB
QUEsS0FFQXdtRixFQUFBcitELEVBQUE4L0QsR0FFQUMsRUFBQWxvRixFQUFBLEtBRUFxbUYsRUFB
QWwrRCxFQUFBKy9ELEdBRUFDLEVBQUFub0YsRUFBQSxLQUVBMm1GLEVBQUF4K0QsRUFBQWdnRSxH
QUVBQyxFQUFBcG9GLEVBQUEsS0FFQTZtRixFQUFBMStELEVBQUFpZ0UsRUFpR0Fqb0YsR0FBQW1v
QixRQUFBMDlELEsxTHlrcUJNLFNBQVM1bEYsRUFBUUQsRUFBU0gsRzJMeHNxQmhDLFlBV0EsU0FB
QXFvRixHQUFBdEIsR0FDQSx3QkFBQUEsSUFBQSxFQUFBdUIsRUFBQTEyQyxvQkFBQW0xQyxFQUFB
LHNCQUFBL2tGLE9BR0EsUUFBQXVtRixHQUFBeEIsR0FDQSxNQUFBQSxHQUVHL2tGLFFBRkgsRUFB
QXNtRixFQUFBajNDLHdCQUFBLFNBQUFoQixHQUNBLE9BQVlBLGNBSVosUUFBQW00QyxHQUFBekIs
R0FDQSxNQUFBQSxJQUFBLGdCQUFBQSxJQUFBLEVBQUF1QixFQUFBajNDLHdCQUFBLFNBQUFoQixH
QUNBLFNBQUFvNEMsRUFBQWhnRSxvQkFBQXMrRCxFQUFBMTJDLEtBQ0dydUMsT0F0Qkg3QixFQUFB
a29CLFlBQUEsRUFDQWxvQixFQUFBa29GLG1DQUNBbG9GLEVBQUFvb0Ysa0NBQ0Fwb0YsRUFBQXFv
RixnQ0FFQSxJQUFBQyxHQUFBem9GLEVBQUEsSUFFQXNvRixFQUFBdG9GLEVBQUEsR0FrQkFHLEdB
QUFtb0IsU0FBQSsvRCxFQUFBRSxFQUFBQyxJM0w4c3FCTSxTQUFTcG9GLEVBQVFELEVBQVNILEc0
THp1cUJoQyxZQVFBLFNBQUEwb0YsR0FBQTVCLEdBQ0Esd0JBQUFBLElBQUEsRUFBQXdCLEVBQUEx
MkMsb0JBQUFrMUMsRUFBQSxtQkFBQTlrRixPQUdBLFFBQUEybUYsR0FBQTdCLEdBQ0EsTUFBQUEs
R0FFRzlrRixRQUZILEVBQUFzbUYsRUFBQWozQyx3QkFBQSxXQUNBLFdBWkFseEMsRUFBQWtvQixZ
QUFBLEVBQ0Fsb0IsRUFBQXVvRixnQ0FDQXZvRixFQUFBd29GLDhCQUVBLElBQUFMLEdBQUF0b0Ys
RUFBQSxHQVlBRyxHQUFBbW9CLFNBQUFvZ0UsRUFBQUMsSTVMK3VxQk0sU0FBU3ZvRixFQUFRRCxF
QUFTSCxHNkxqd3FCaEMsWUFlQSxTQUFBbW9CLEdBQUFDLEdBQXNDLE1BQUFBLE1BQUFDLFdBQUFE
LEdBQXVDRSxRQUFBRixHQUU3RSxRQUFBd2dFLEdBQUFDLEVBQUFDLEVBQUEvMkMsR0FDQSxNQUFB
aEQsTUFBb0JnRCxFQUFBODJDLEVBQUFDLEdBR3BCLFFBQUFDLEdBQUEvQixHQUNBLGdCQUFBMzJD
LEVBQUFqRCxHQUNBLEdBQ0E4NUMsSUFEQTk1QyxFQUFBM2EsWUFDQTJhLEVBQUE4NUMsTUFDQVMs
RUFBQXY2QyxFQUFBdTZDLG9CQUVBcUIsR0FBQSxFQUNBQyxFQUFBLE1BRUEsaUJBQUFKLEVBQUFD
LEVBQUEvMkMsR0FDQSxHQUFBbTNDLEdBQUFsQyxFQUFBNkIsRUFBQUMsRUFBQS8yQztBQVdBLE1B
VEFpM0MsR0FDQTlCLEdBQUFTLEVBQUF1QixFQUFBRCxPQUFBQyxJQUVBRixHQUFBLEVBQ0FDLEVB
QUFDLEdBS0FELElBS0EsUUFBQUUsR0FBQW5DLEdBQ0Esd0JBQUFBLEdBQUErQixFQUFBL0IsR0FB
QWhsRixPQUdBLFFBQUFvbkYsR0FBQXBDLEdBQ0EsTUFBQUEsR0FFR2hsRixPQUZILFdBQ0EsTUFB
QTRtRixJQW5EQXpvRixFQUFBa29CLFlBQUEsQ0FFQSxJQUFBMG1CLEdBQUFudUMsT0FBQXdDLFFB
QUEsU0FBQW1CLEdBQW1ELE9BQUE1RCxHQUFBLEVBQWdCQSxFQUFBZ0MsVUFBQUMsT0FBc0JqQyxJ
QUFBLENBQU8sR0FBQTZELEdBQUE3QixVQUFBaEMsRUFBMkIsUUFBQWtFLEtBQUFMLEdBQTBCNUQs
T0FBQUMsVUFBQUMsZUFBQVAsS0FBQWlFLEVBQUFLLEtBQXlETixFQUFBTSxHQUFBTCxFQUFBSyxJ
QUFpQyxNQUFBTixHQUUvT3BFLEdBQUF5b0Ysb0JBQ0F6b0YsRUFBQTRvRixxQkFDQTVvRixFQUFB
Z3BGLDJCQUNBaHBGLEVBQUFpcEYseUJBRUEsSUFBQXAzQyxHQUFBaHlDLEVBQUEsR0FFQW1vQixH
QUFBNnBCLEVBNENBN3hDLEdBQUFtb0IsU0FBQTZnRSxFQUFBQyxJN0x1d3FCTSxTQUFTaHBGLEVB
QVFELEVBQVNILEc4TGgwcUJoQyxZQVdBLFNBQUFtb0IsR0FBQUMsR0FBc0MsTUFBQUEsTUFBQUMs
V0FBQUQsR0FBdUNFLFFBQUFGLEdBRTdFLFFBQUFra0IsR0FBQWxrQixFQUFBbGtCLEdBQThDLEdB
QUFLLEtBQWlCLFFBQUE1RCxLQUFBeW5CLEdBQXFCbGtCLEVBQUErb0IsUUFBQXRzQixJQUFBLEdB
QW9DQyxPQUFBQyxVQUFBQyxlQUFBUCxLQUFBNm5CLEVBQUF6bkIsS0FBNkQ0RCxFQUFBNUQsR0FB
QXluQixFQUFBem5CLEdBQXNCLE9BQUE0RCxHQUUzTSxRQUFBOGtGLEdBQUF2QyxFQUFBQyxFQUFB
QyxFQUFBMzJDLEdBQ0EsZ0JBQUFsQixFQUFBNEMsR0FDQSxNQUFBaTFDLEdBQUFGLEVBQUEzM0Ms
RUFBQTRDLEdBQUFnMUMsRUFBQTEyQyxFQUFBMEIsT0FJQSxRQUFBdTNDLEdBQUF4QyxFQUFBQyxF
QUFBQyxFQUFBMzJDLEVBQUFqRCxHQVlBLFFBQUFtOEMsR0FBQUMsRUFBQUMsR0FPQSxNQU5BdDZD
LEdBQUFxNkMsRUFDQXozQyxFQUFBMDNDLEVBQ0FaLEVBQUEvQixFQUFBMzNDLEVBQUE0QyxHQUNB
KzJDLEVBQUEvQixFQUFBMTJDLEVBQUEwQixHQUNBazNDLEVBQUFqQyxFQUFBNkIsRUFBQUMsRUFB
QS8yQyxHQUNBMjNDLEdBQUEsRUFDQVQsRUFHQSxRQUFBVSxLQU1BLE1BTEFkLEdBQUEvQixFQUFB
MzNDLEVBQUE0QyxHQUVBZzFDLEVBQUF0MUMsb0JBQUFxM0MsRUFBQS9CLEVBQUExMkMsRUFBQTBC
LElBRUFrM0MsRUFBQWpDLEVBQUE2QixFQUFBQyxFQUFBLzJDLEdBSUEsUUFBQTYzQyxLQU1BLE1B
TEE5QyxHQUFBcjFDLG9CQUFBbzNDLEVBQUEvQixFQUFBMzNDLEVBQUE0QyxJQUVBZzFDLEVBQUF0
MUMsb0JBQUFxM0MsRUFBQS9CLEVBQUExMkMsRUFBQTBCLElBRUFrM0MsRUFBQWpDLEVBQUE2QixF
QUFBQyxFQUFBLzJDLEdBSUEsUUFBQTgzQyxLQUNBLEdBQUFDLEdBQUFoRCxFQUFBMzNDLEVBQUE0
QyxHQUNBZzRDLEdBQUF0QyxFQUFBcUMsRUFBQWpCLEVBS0EsT0FKQUEsR0FBQWlCLEVBRUFDLElB
QUFkLEVBQUFqQyxFQUFBNkIsRUFBQUMsRUFBQS8yQyxJQUVBazNDLEVBR0EsUUFBQWUsR0FBQXBx
QixFQUFBcXFCLEdBQ0EsR0FBQUMsSUFBQTVDLEVBQUEyQyxFQUFBbDRDLEdBQ0FvNEMsR0FBQS9D
LEVBQUF4bkIsRUFBQXp3QixFQUlBLE9BSEFBLEdBQUF5d0IsRUFDQTd0QixFQUFBazRDLEVBRUFD
LEdBQUFDLEVBQUFSLElBQ0FPLEVBQUFOLElBQ0FPLEVBQUFOLElBQ0FaLEVBMURBLEdBQUE3QixH
QUFBaDZDLEVBQUFnNkMsZUFDQUUsRUFBQWw2QyxFQUFBazZDLGlCQUNBRyxFQUFBcjZDLEVBQUFx
NkMsbUJBRUFpQyxHQUFBLEVBQ0F2NkMsRUFBQSxPQUNBNEMsRUFBQSxPQUNBODJDLEVBQUEsT0FD
QUMsRUFBQSxPQUNBRyxFQUFBLE1Bb0RBLGlCQUFBcnBCLEVBQUFxcUIsR0FDQSxNQUFBUCxHQUFB
TSxFQUFBcHFCLEVBQUFxcUIsR0FBQVYsRUFBQTNwQixFQUFBcXFCLElBV0EsUUFBQUcsR0FBQS81
QyxFQUFBWCxHQUNBLEdBQUFtNEMsR0FBQW40QyxFQUFBbTRDLG9CQUNBQyxFQUFBcDRDLEVBQUFv
NEMsdUJBQ0FDLEVBQUFyNEMsRUFBQXE0QyxlQUNBdnBELEVBQUE4TixFQUFBb0QsR0FBQSxrRUFF
QW8zQyxFQUFBZSxFQUFBeDNDLEVBQUE3UixHQUNBdW9ELEVBQUFlLEVBQUF6M0MsRUFBQTdSLEdB
Q0F3b0QsRUFBQWUsRUFBQTEzQyxFQUFBN1IsR0FNQXlPLEVBQUF6TyxFQUFBMG9ELEtBQUFvQyxF
QUFBRCxDQUVBLE9BQUFwOEMsR0FBQTY1QyxFQUFBQyxFQUFBQyxFQUFBMzJDLEVBQUE3UixHQTdH
QXIrQixFQUFBa29CLFlBQUEsRUFDQWxvQixFQUFBa3BGLGtDQUNBbHBGLEVBQUFtcEYsZ0NBQ0Fu
cEYsRUFBQW1vQixRQUFBOGhFLENBRUEsSUFBQUMsR0FBQXJxRixFQUFBLElBRUFtb0IsR0FBQWtp
RSxJOUw2NnFCTSxTQUFTanFGLEVBQVFELEVBQVNILEcrTHQ3cUJoQyxZQVNBLFNBQUFtb0IsR0FB
QUMsR0FBc0MsTUFBQUEsTUFBQUMsV0FBQUQsR0FBdUNFLFFBQUFGLEdBRTdFLFFBQUFraUUsR0FB
QTM5QyxFQUFBYSxFQUFBL2EsR0FDQSxJQUFBa2EsRUFDQSxTQUFBMXFDLE9BQUEsd0JBQUF1ckMs
RUFBQSxPQUFBL2EsRUFBQSxJQUNHLHFCQUFBK2EsR0FBQSx1QkFBQUEsR0FDSGIsRUFBQTdyQyxl
QUFBLHVCQUNBLEVBQUFteUMsRUFBQTNxQixTQUFBLG9CQUFBa2xCLEVBQUEsT0FBQS9hLEVBQUEs
bURBS0EsUUFBQTgzRCxHQUFBekQsRUFBQUMsRUFBQUMsRUFBQXYwRCxHQUNBNjNELEVBQUF4RCxF
QUFBLGtCQUFBcjBELEdBQ0E2M0QsRUFBQXZELEVBQUEscUJBQUF0MEQsR0FDQTYzRCxFQUFBdEQs
RUFBQSxhQUFBdjBELEdBdEJBdHlCLEVBQUFrb0IsWUFBQSxFQUNBbG9CLEVBQUFtb0IsUUFBQWlp
RSxDQUVBLElBQUFqaEUsR0FBQXRwQixFQUFBLElBRUFpekMsRUFBQTlxQixFQUFBbUIsSS9MODhx
Qk0sU0FBU2xwQixFQUFRRCxHZ01yOXFCdkIsWUFJQSxTQUFBODdCLEdBQUFDLEVBQUFDLEdBQWlE
LEtBQUFELFlBQUFDLElBQTBDLFNBQUFqNUIsV0FBQSxxQ0FXM0YsUUFBQXNuRixLQUdBLEdBQUF0
NkUsTUFDQWszQixJQUVBLFFBQ0FxakQsTUFBQSxXQUNBcmpELEVBQUFzakQsRUFDQXg2RSxFQUFB
dzZFLEdBRUFDLE9BQUEsV0FFQSxPQURBMXJELEdBQUEvdUIsRUFBQWszQixFQUNBem1DLEVBQUEs
RUFBcUJBLEVBQUFzK0IsRUFBQXI4QixPQUFzQmpDLElBQzNDcytCLEVBQUF0K0IsTUFHQTBjLElB
QUEsV0FDQSxNQUFBK3BCLElBRUEwTCxVQUFBLFNBQUF4NEIsR0FDQSxHQUFBdTJCLElBQUEsQ0FJ
QSxPQUhBekosS0FBQWwzQixJQUFBazNCLEVBQUFsM0IsRUFBQWpQLFNBQ0FtbUMsRUFBQXJnQyxL
QUFBdVQsR0FFQSxXQUNBdTJCLEdBQUEzZ0MsSUFBQXc2RSxJQUNBNzVDLEdBQUEsRUFFQXpKLElB
QUFsM0IsSUFBQWszQixFQUFBbDNCLEVBQUFqUCxTQUNBbW1DLEVBQUEzNkIsT0FBQTI2QixFQUFB
bmEsUUFBQTNTLEdBQUEsT0EzQ0FuYSxFQUFBa29CLFlBQUEsQ0FRQSxJQUFBcWlFLEdBQUEsS0FD
QUUsR0FDQUQsT0FBQSxjQXVDQUUsRUFBQSxXQUNBLFFBQUFBLEdBQUFuK0MsRUFBQTRELEVBQUFF
LEdBQ0F2VSxFQUFBMzZCLEtBQUF1cEYsR0FFQXZwRixLQUFBb3JDLFFBQ0FwckMsS0FBQWd2QyxZ
QUNBaHZDLEtBQUFrdkMsZ0JBQ0FsdkMsS0FBQW0rQyxZQUFBLEtBQ0FuK0MsS0FBQTI5QixVQUFB
MnJELEVBaUNBLE1BOUJBQyxHQUFBaHFGLFVBQUFpcUYsYUFBQSxTQUFBeHdFLEdBRUEsTUFEQWha
LE1BQUF1dUMsZUFDQXZ1QyxLQUFBMjlCLFVBQUE2VCxVQUFBeDRCLElBR0F1d0UsRUFBQWhxRixV
QUFBcXZDLGlCQUFBLFdBQ0E1dUMsS0FBQTI5QixVQUFBMHJELFVBR0FFLEVBQUFocUYsVUFBQWd3
QyxhQUFBLFdBQ0EsTUFBQXpTLFNBQUE5OEIsS0FBQW0rQyxjQUdBb3JDLEVBQUFocUYsVUFBQWd2
QyxhQUFBLFdBQ0F2dUMsS0FBQW0rQyxjQUNBbitDLEtBQUFtK0MsWUFBQW4rQyxLQUFBZ3ZDLFVB
QUFodkMsS0FBQWd2QyxVQUFBdzZDLGFBQUF4cEYsS0FBQWt2QyxlQUFBbHZDLEtBQUFvckMsTUFB
QW9HLFVBQUF4eEMsS0FBQWt2QyxlQUVBbHZDLEtBQUEyOUIsVUFBQXVyRCxNQUlBSyxFQUFBaHFG
LFVBQUFvdkMsZUFBQSxXQUNBM3VDLEtBQUFtK0MsY0FDQW4rQyxLQUFBbStDLGNBQ0FuK0MsS0FB
QW0rQyxZQUFBLEtBQ0FuK0MsS0FBQTI5QixVQUFBd3JELFFBQ0FucEYsS0FBQTI5QixVQUFBMnJE
LElBSUFDLElBR0ExcUYsR0FBQW1vQixRQUFBdWlFLEdoTTI5cUJNLFNBQVN6cUYsRUFBUUQsR2lN
MWpyQnZCLFlBTUEsU0FBQTJwQixHQUFBQyxFQUFBQyxHQUNBLE1BQUFELEtBQUFDLEVBQ0EsSUFB
QUQsR0FBQSxJQUFBQyxHQUFBLEVBQUFELElBQUEsRUFBQUMsRUFFQUQsT0FBQUMsTUFJQSxRQUFB
QyxHQUFBQyxFQUFBQyxHQUNBLEdBQUFMLEVBQUFJLEVBQUFDLEdBQUEsUUFFQSxvQkFBQUQsSUFB
QSxPQUFBQSxHQUFBLGdCQUFBQyxJQUFBLE9BQUFBLEVBQ0EsUUFHQSxJQUFBQyxHQUFBeHBCLE9B
QUFzRCxLQUFBZ21CLEdBQ0FHLEVBQUF6cEIsT0FBQXNELEtBQUFpbUIsRUFFQSxJQUFBQyxFQUFB
eG5CLFNBQUF5bkIsRUFBQXpuQixPQUFBLFFBRUEsUUFBQWpDLEdBQUEsRUFBaUJBLEVBQUF5cEIs
RUFBQXhuQixPQUFrQmpDLElBQ25DLElBQUFrcEIsRUFBQXRwQixLQUFBNHBCLEVBQUFDLEVBQUF6
cEIsTUFBQW1wQixFQUFBSSxFQUFBRSxFQUFBenBCLElBQUF3cEIsRUFBQUMsRUFBQXpwQixLQUNB
LFFBSUEsVUE5QkFSLEVBQUFrb0IsWUFBQSxFQUNBbG9CLEVBQUFtb0IsUUFBQTJCLENBQ0EsSUFB
QUosR0FBQWpwQixPQUFBQyxVQUFBQyxnQmpNNmxyQk0sU0FBU1YsRUFBUUQsRUFBU0gsR2tNdGxy
QmhDLG1CQUFBcTRDLFdBSUFyNEMsRUFBQSxLQUFBK3FGLFNBQ0FqakYsT0FBQXV3QyxRQUFBcjRD
LEVBQUEsTUFJQUEsRUFBQSxLQUlBWSxPQUFBd0MsT0FBQXBELEVBQUEsTWxNd21yQk0sU0FBU0ks
RUFBUUQsSW1NaG9yQnZCLFNBQUFzbkQsR0FBQSxZQWFBLFNBQUF1akMsR0FBQUMsR0FDQTM5RSxF
QUFBMUssU0FDQXNvRixJQUNBQyxHQUFBLEdBR0E3OUUsSUFBQTFLLFFBQUFxb0YsRUEwQkEsUUFB
QUcsS0FDQSxLQUFBamtFLEVBQUE3WixFQUFBMUssUUFBQSxDQUNBLEdBQUF5b0YsR0FBQWxrRSxD
QVVBLElBUEFBLEdBQUEsRUFDQTdaLEVBQUErOUUsR0FBQTlxRixPQU1BNG1CLEVBQUFta0UsRUFB
QSxDQUdBLE9BQUFDLEdBQUEsRUFBQUMsRUFBQWwrRSxFQUFBMUssT0FBQXVrQixFQUFnRW9rRSxF
QUFBQyxFQUFrQkQsSUFDbEZqK0UsRUFBQWkrRSxHQUFBaitFLEVBQUFpK0UsRUFBQXBrRSxFQUVB
N1osR0FBQTFLLFFBQUF1a0IsRUFDQUEsRUFBQSxHQUdBN1osRUFBQTFLLE9BQUEsRUFDQXVrQixF
QUFBLEVBQ0Fna0UsR0FBQSxFQXNFQSxRQUFBTSxHQUFBMWhGLEdBQ0EsR0FBQTJoRixHQUFBLEVB
Q0Fuc0MsRUFBQSxHQUFBb3NDLEdBQUE1aEYsR0FDQWhGLEVBQUFnRCxTQUFBZ2tCLGVBQUEsR0FF
QSxPQURBd3pCLEdBQUFxc0MsUUFBQTdtRixHQUE0QjhtRixlQUFBLElBQzVCLFdBQ0FILEtBQ0Ez
bUYsRUFBQWlqQixLQUFBMGpFLEdBNENBLFFBQUFJLEdBQUEvaEYsR0FDQSxrQkFXQSxRQUFBZ2lG
LEtBR0E3MUMsYUFBQTgxQyxHQUNBQyxjQUFBQyxHQUNBbmlGLElBWEEsR0FBQWlpRixHQUFBbDJD
LFdBQUFpMkMsRUFBQSxHQUlBRyxFQUFBQyxZQUFBSixFQUFBLEtBNUxBM3JGLEVBQUFELFFBQUE2
cUYsQ0FVQSxJQU9BRSxHQVBBNTlFLEtBR0E2OUUsR0FBQSxFQVFBaGtFLEVBQUEsRUFJQW1rRSxF
QUFBLEtBNkNBbCtFLEVBQUEsbUJBQUFxNkMsS0FBQTd2QyxLQUNBK3pFLEVBQUF2K0UsRUFBQWcv
RSxrQkFBQWgvRSxFQUFBaS9FLHNCQWNBbkIsR0FEQSxrQkFBQVMsR0FDQUYsRUFBQUwsR0E4QkFV
LEVBQUFWLEdBUUFKLEVBQUFFLGVBZ0ZBRixFQUFBYyw2Qm5NMm9yQjhCdnJGLEtBQUtKLEVBQVUs
V0FBYSxNQUFPbUIsV0FJM0QsU0FBU2xCLEVBQVFELEVBQVNILEdBRS9CLFlBV0EsU0FBU3NzRixH
QUF3QmxrRSxHQUFPLEdBQUlBLEdBQU9BLEVBQUlDLFdBQWMsTUFBT0QsRUFBYyxJQUFJbWtFLEtB
QWEsSUFBVyxNQUFQbmtFLEVBQWUsSUFBSyxHQUFJdmpCLEtBQU91akIsR0FBV3huQixPQUFPQyxV
QUFVQyxlQUFlUCxLQUFLNm5CLEVBQUt2akIsS0FBTTBuRixFQUFPMW5GLEdBQU91akIsRUFBSXZq
QixHQUFnQyxPQUF0QjBuRixHQUFPamtFLFFBQVVGLEVBQVlta0UsRUFUbFEzckYsT0FBTzZuQyxl
QUFldG9DLEVBQVMsY0FDN0JpUyxPQUFPLElBRVRqUyxFQUFRcXNGLGVBQWlCcnNGLEVBQVFzc0Ys
WUFBY3RzRixFQUFRdXNGLGFBQWV2c0YsRUFBUXdzRixTQUFXeHNGLEVBQVF5c0YsV0FBYXpzRixF
QUFRMHNGLFFBQVU3cUYsTW9NNzJyQmpJLElBQUE4cUYsR0FBQTlzRixFQUFBLElBQVkrc0YsRXBN
aTNyQkNULEVBQXdCUSxFb00vMnJCeEJELFdBQVUsU0FBQXA4RSxHQUFBLE9BQVd4RixLQUFNOGhG
LEVBQU0vM0MsU0FBVXZrQyxTQUMzQ204RSxhQUFhLFNBQUF2c0YsR0FBQSxPQUFTNEssS0FBTTho
RixFQUFNOTNDLFlBQWE1MEMsT0FDL0Nzc0YsV0FBVyxTQUFDdHNGLEVBQUlvUSxHQUFMLE9BQWlC
eEYsS0FBTThoRixFQUFNNzNDLFVBQVc3MEMsS0FBSW9RLFNBQ3ZEaThFLGVBQWUsU0FBQXJzRixH
QUFBLE9BQVM0SyxLQUFNOGhGLEVBQU01M0MsY0FBZTkwQyxPQUNuRG9zRixjQUFjLGtCQUFTeGhG
LEtBQU04aEYsRUFBTTMzQyxlQUNuQ28zQyxpQkFBaUIsa0JBQVN2aEYsS0FBTThoRixFQUFNMTND
LG1CcE1tNHJCN0MsU0FBU2oxQyxFQUFRRCxFQUFTSCxHQUUvQixZQW9CQSxTQUFTbW9CLEdBQXVC
QyxHQUFPLE1BQU9BLElBQU9BLEVBQUlDLFdBQWFELEdBQVFFLFFBQVNGLEdBRXZGLFFBQVM2VCxH
QUFnQkMsRUFBVUMsR0FBZSxLQUFNRCxZQUFvQkMsSUFBZ0IsS0FBTSxJQUFJajVCLFdBQVUscUNB
RWhILFFBQVM0b0MsR0FBMkJsMEIsRUFBTXJYLEdBQVEsSUFBS3FYLEVBQVEsS0FBTSxJQUFJbTBC
LGdCQUFlLDREQUFnRSxRQUFPeHJDLEdBQXlCLGdCQUFUQSxJQUFxQyxrQkFBVEEsR0FBOEJxWCxF
QUFQclgsRUFFbE8sUUFBU3lyQyxHQUFVQyxFQUFVQyxHQUFjLEdBQTBCLGtCQUFmQSxJQUE0QyxP
QUFmQSxFQUF1QixLQUFNLElBQUlocEMsV0FBVSxpRUFBb0VncEMsR0FBZUQsR0FBU3ByQyxVQUFZ
RCxPQUFPNitCLE9BQU95TSxHQUFjQSxFQUFXcnJDLFdBQWF1TixhQUFlZ0UsTUFBTzY1QixFQUFV
dkQsWUFBWSxFQUFPeUQsVUFBVSxFQUFNeEQsY0FBYyxLQUFldUQsSUFBWXRyQyxPQUFPd3JDLGVB
QWlCeHJDLE9BQU93ckMsZUFBZUgsRUFBVUMsR0FBY0QsRUFBU0ksVUFBWUgsR0FFamUsUUFBUzhn
RCxHQUFnQjVrRSxFQUFLdmpCLEVBQUt1TixHQUFpSyxNQUFwSnZOLEtBQU91akIsR0FBT3huQixP
QUFPNm5DLGVBQWVyZ0IsRUFBS3ZqQixHQUFPdU4sTUFBT0EsRUFBT3MyQixZQUFZLEVBQU1DLGNB
QWMsRUFBTXdELFVBQVUsSUFBa0IvakIsRUFBSXZqQixHQUFPdU4sRUFBZ0JnVyxFQTFCM014bkIs
T0FBTzZuQyxlQUFldG9DLEVBQVMsY0FDN0JpUyxPQUFPLEdBR1QsSUFFSTY2RSxHQUZBOTVDLEVB
QWUsV0FBYyxRQUFTQyxHQUFpQjd1QyxFQUFRdVQsR0FBUyxJQUFLLEdBQUluWCxHQUFJLEVBQUdB
LEVBQUltWCxFQUFNbFYsT0FBUWpDLElBQUssQ0FBRSxHQUFJMm5DLEdBQWF4d0IsRUFBTW5YLEVB
QUkybkMsR0FBV0ksV0FBYUosRUFBV0ksYUFBYyxFQUFPSixFQUFXSyxjQUFlLEVBQVUsU0FBV0ws
S0FBWUEsRUFBVzZELFVBQVcsR0FBTXZyQyxPQUFPNm5DLGVBQWVsa0MsRUFBUStqQyxFQUFXempD
LElBQUt5akMsSUFBaUIsTUFBTyxVQUFVbk0sRUFBYWtYLEVBQVlDLEdBQWlKLE1BQTlIRCxJQUFZ
RCxFQUFpQmpYLEVBQVl0N0IsVUFBV3d5QyxHQUFpQkMsR0FBYUYsRUFBaUJqWCxFQUFhbVgsR0FB
cUJuWCxNcU1sNXJCamlCNlUsRUFBQWh4QyxFQUFBLElyTXc1ckJLdXpDLEVBQVVwckIsRUFBdUI2
b0IsR3FNdjVyQnRDd0MsRUFBQXh6QyxFQUFBLElyTTI1ckJLeXpDLEVBQWV0ckIsRUFBdUJxckIs
R3FNMTVyQjNDMDVDLEVBQUFsdEYsRUFBQSxJQUVNbXRGLHVCQUNRLE9BRFJILEVBQUFDLEVBQUFD
LEVBQUExM0MsWUFFVyxVQUZYdzNDLEVBQUFDLEVBQUFDLEVBQUEzM0MsZUFHYyxhQUhkMDNDLEdB
TWVHLEVyTWs2ckJQLFNBQVVuK0MsR0FHckIsUUFBU20rQyxLQUdQLE1BRkFueEQsR0FBZ0IzNkIs
S0FBTThyRixHQUVmdGhELEVBQTJCeHFDLE1BQU84ckYsRUFBTy9nRCxXQUFhenJDLE9BQU9tekMs
ZUFBZXE1QyxJQUFTL3JGLE1BQU1DLEtBQU1xQixZQW1GMUcsTUF4RkFxcEMsR0FBVW9oRCxFQUFR
bitDLEdBUWxCa0UsRUFBYWk2QyxJQUNYdm9GLElBQUssa0JBQ0x1TixNQUFPLFdxTXA2ckJRLEdB
Q1JpN0UsR0FBZ0IvckYsS0FBS3dXLE1BQXJCdTFFLFlBQ0ZDLEVBQTJCLElBQWhCRCxFQUFvQixP
QUFTLE9BRTlDLE9BQ0U5NUMsR0FBQWpyQixRQUFBdGdCLGNBQUEsUUFBTXVzQyxVQUFVLGNBQ2Ro
QixFQUFBanJCLFFBQUF0Z0IsY0FBQSxjQUFTcWxGLEdBQWUsTUFEMUIsSUFDMENDLEVBRDFDLFly
TWs3ckJEem9GLElBQUssbUJBQ0x1TixNQUFPLFNxTTc2ckJPZ2lFLEdBQ2YsR0FBTXY5QixHQUFR
czJDLEVBQWMvWSxHQURMbVosRUFFb0Jqc0YsS0FBS3dXLE1BQWhDMDFFLEVBRk9ELEVBRWZuWixP
QUF3QnFaLEVBRlRGLEVBRVNFLE1BRWhDLE9BQ0VsNkMsR0FBQWpyQixRQUFBdGdCLGNBQUEsS0FB
R3VzQyxXQUFXLEVBQUFkLEVBQUFuckIsVUFBYW1XLFNBQVUyMUMsSUFBV29aLElBQzdDdjhCLE9B
QVMraEIsT0FBUSxXQUNqQjBhLFFBQVMsaUJBQU1ELEdBQU9yWixLQUN0QnY5QixNck11N3JCSmh5
QyxJQUFLLG9CQUNMdU4sTUFBTyxXcU1uN3JCVSxHQUFBdTdFLEdBQzJCcnNGLEtBQUt3VyxNQUEx
QzgxRSxFQURVRCxFQUNWQyxlQUFnQkMsRUFETkYsRUFDTUUsZ0JBQ3hCLElBQUlELEVBQWlCLEVB
Q25CLE1BQ0VyNkMsR0FBQWpyQixRQUFBdGdCLGNBQUEsVUFBUXVzQyxVQUFVLGtCQUNWbTVDLFFB
QVNHLEdBRGpCLHNCck04N3JCSGhwRixJQUFLLFNBQ0x1TixNQUFPLFdxTXY3ckJELEdBQUEwN0Us
R0FBQXhzRixJQUNQLE9BQ0VpeUMsR0FBQWpyQixRQUFBdGdCLGNBQUEsVUFBUXVzQyxVQUFVLFVB
Q2ZqekMsS0FBS3lzRixrQkFDTng2QyxFQUFBanJCLFFBQUF0Z0IsY0FBQSxNQUFJdXNDLFVBQVUs
WUFDWDI0QyxFQUFBNTNDLFNBQUE0M0MsRUFBQTEzQyxZQUFBMDNDLEVBQUEzM0MsZ0JBQTBDNXhD
LElBQUksU0FBQXl3RSxHQUFBLE1BQzdDN2dDLEdBQUFqckIsUUFBQXRnQixjQUFBLE1BQUluRCxJ
QUFLdXZFLEdBQ04wWixFQUFLRSxpQkFBaUI1WixPQUk1Qjl5RSxLQUFLMnNGLHlCck1tOHJCSmIs
R0FDUHA4QyxFQUFPbDZCLFVxTTUvckJXczJFLEdBQ1ovN0QsV0FDTHU4RCxlQUFnQjU4QyxFQUFB
LzVCLFVBQVVrekIsT0FBTzBJLFdBQ2pDdzZDLFlBQWFyOEMsRUFBQS81QixVQUFVa3pCLE9BQU8w
SSxXQUM5QnVoQyxPQUFRcGpDLEVBQUEvNUIsVUFBVTRQLE9BQU9nc0IsV0FDekJnN0MsaUJBQWtC
NzhDLEVBQUEvNUIsVUFBVXVhLEtBQUtxaEIsV0FDakM0NkMsT0FBUXo4QyxFQUFBLzVCLFVBQVV1
YSxLQUFLcWhCLFlyTSsvckIxQjF5QyxFQUFRbW9CLFFxTXJnc0JZOGtFLEdyTXlnc0JmLFNBQVNo
dEYsRUFBUUQsRUFBU0gsR0FFL0IsWUFnQkEsU0FBU21vQixHQUF1QkMsR0FBTyxNQUFPQSxJQUFP
QSxFQUFJQyxXQUFhRCxHQUFRRSxRQUFTRixHQUV2RixRQUFTNlQsR0FBZ0JDLEVBQVVDLEdBQWUs
S0FBTUQsWUFBb0JDLElBQWdCLEtBQU0sSUFBSWo1QixXQUFVLHFDQUVoSCxRQUFTNG9DLEdBQTJC
bDBCLEVBQU1yWCxHQUFRLElBQUtxWCxFQUFRLEtBQU0sSUFBSW0wQixnQkFBZSw0REFBZ0UsUUFB
T3hyQyxHQUF5QixnQkFBVEEsSUFBcUMsa0JBQVRBLEdBQThCcVgsRUFBUHJYLEVBRWxPLFFBQVN5
ckMsR0FBVUMsRUFBVUMsR0FBYyxHQUEwQixrQkFBZkEsSUFBNEMsT0FBZkEsRUFBdUIsS0FBTSxJ
QUFJaHBDLFdBQVUsaUVBQW9FZ3BDLEdBQWVELEdBQVNwckMsVUFBWUQsT0FBTzYrQixPQUFPeU0s
R0FBY0EsRUFBV3JyQyxXQUFhdU4sYUFBZWdFLE1BQU82NUIsRUFBVXZELFlBQVksRUFBT3lELFVB
QVUsRUFBTXhELGNBQWMsS0FBZXVELElBQVl0ckMsT0FBT3dyQyxlQUFpQnhyQyxPQUFPd3JDLGVB
QWVILEVBQVVDLEdBQWNELEVBQVNJLFVBQVlILEdBcEJqZXRyQyxPQUFPNm5DLGVBQWV0b0MsRUFB
UyxjQUM3QmlTLE9BQU8sR0FHVCxJQUFJK2dDLEdBQWUsV0FBYyxRQUFTQyxHQUFpQjd1QyxFQUFR
dVQsR0FBUyxJQUFLLEdBQUluWCxHQUFJLEVBQUdBLEVBQUltWCxFQUFNbFYsT0FBUWpDLElBQUss
Q0FBRSxHQUFJMm5DLEdBQWF4d0IsRUFBTW5YLEVBQUkybkMsR0FBV0ksV0FBYUosRUFBV0ksYUFB
YyxFQUFPSixFQUFXSyxjQUFlLEVBQVUsU0FBV0wsS0FBWUEsRUFBVzZELFVBQVcsR0FBTXZyQyxP
QUFPNm5DLGVBQWVsa0MsRUFBUStqQyxFQUFXempDLElBQUt5akMsSUFBaUIsTUFBTyxVQUFVbk0s
RUFBYWtYLEVBQVlDLEdBQWlKLE1BQTlIRCxJQUFZRCxFQUFpQmpYLEVBQVl0N0IsVUFBV3d5QyxH
QUFpQkMsR0FBYUYsRUFBaUJqWCxFQUFhbVgsR0FBcUJuWCxNc00zaHNCamlCNlUsRUFBQWh4QyxF
QUFBLEl0TStoc0JLdXpDLEVBQVVwckIsRUFBdUI2b0IsR3NNOWhzQnRDazlDLEVBQUFsdUYsRUFB
QSxJdE1raXNCS211RixFQUFrQmhtRSxFQUF1QitsRSxHc01oaXNCekJFLEV0TTBpc0JQLFNBQVVu
L0MsR0FHckIsUUFBU20vQyxLQUNQLEdBQUloaEQsR0FFQXVHLEVBQU96RSxFQUFPMEUsQ0FFbEIz
WCxHQUFnQjM2QixLQUFNOHNGLEVBRXRCLEtBQUssR0FBSXY2QyxHQUFPbHhDLFVBQVVDLE9BQVE1
QixFQUFPb1gsTUFBTXk3QixHQUFPQyxFQUFPLEVBQUdBLEVBQU9ELEVBQU1DLElBQzNFOXlDLEVB
QUs4eUMsR0FBUW54QyxVQUFVbXhDLEVBR3pCLE9BQWVILEdBQVN6RSxFQUFRcEQsRUFBMkJ4cUMs
TUFBTzhyQyxFQUFPZ2hELEVBQU8vaEQsV0FBYXpyQyxPQUFPbXpDLGVBQWVxNkMsSUFBUzd0RixL
QUFLYyxNQUFNK3JDLEdBQU85ckMsTUFBTUMsT0FBT1AsS0FBaUJrdUMsRXNNbmpzQi9LbS9DLFdB
QWEsU0FBQTU5RSxHQUNTLElBQWhCQSxFQUFLN04sUUFDUHNzQyxFQUFLcDNCLE1BQU0rMEUsUUFB
UXA4RSxJdE1panNCYm1qQyxFQUlKRCxFQUFRN0gsRUFBMkJvRCxFQUFPMEUsR0FxQi9DLE1BdENB
NUgsR0FBVW9pRCxFQUFRbi9DLEdBb0JsQmtFLEVBQWFpN0MsSUFDWHZwRixJQUFLLFNBQ0x1TixN
QUFPLFdzTXJqc0JSLE1BQ0VtaEMsR0FBQWpyQixRQUFBdGdCLGNBQUEsVUFBUXVzQyxVQUFVLFVB
Q2hCaEIsRUFBQWpyQixRQUFBdGdCLGNBQUEsbUJBQ0F1ckMsRUFBQWpyQixRQUFBdGdCLGNBQUFt
bUYsRUFBQTdsRSxTQUFlOHJCLFNBQUEsRUFDQUQsT0FBUTd5QyxLQUFLK3NGLFdBQ2IxNUMsWUFB
WSxnQ3RNZ2tzQnpCeTVDLEdBQ1BwOUMsRUFBT2w2QixVc01sbHNCV3MzRSxHQUNaLzhELFdBQ0x3
N0QsUUFBUzc3QyxFQUFBLzVCLFVBQVV1YSxLQUFLcWhCLFl0TXFsc0IzQjF5QyxFQUFRbW9CLFFz
TXZsc0JZOGxFLEd0TTJsc0JmLFNBQVNodUYsRUFBUUQsRUFBU0gsR0FFL0IsWUEwQkEsU0FBU21v
QixHQUF1QkMsR0FBTyxNQUFPQSxJQUFPQSxFQUFJQyxXQUFhRCxHQUFRRSxRQUFTRixHQUV2RixR
QUFTNlQsR0FBZ0JDLEVBQVVDLEdBQWUsS0FBTUQsWUFBb0JDLElBQWdCLEtBQU0sSUFBSWo1QixX
QUFVLHFDQUVoSCxRQUFTNG9DLEdBQTJCbDBCLEVBQU1yWCxHQUFRLElBQUtxWCxFQUFRLEtBQU0s
SUFBSW0wQixnQkFBZSw0REFBZ0UsUUFBT3hyQyxHQUF5QixnQkFBVEEsSUFBcUMsa0JBQVRBLEdB
QThCcVgsRUFBUHJYLEVBRWxPLFFBQVN5ckMsR0FBVUMsRUFBVUMsR0FBYyxHQUEwQixrQkFBZkEs
SUFBNEMsT0FBZkEsRUFBdUIsS0FBTSxJQUFJaHBDLFdBQVUsaUVBQW9FZ3BDLEdBQWVELEdBQVNw
ckMsVUFBWUQsT0FBTzYrQixPQUFPeU0sR0FBY0EsRUFBV3JyQyxXQUFhdU4sYUFBZWdFLE1BQU82
NUIsRUFBVXZELFlBQVksRUFBT3lELFVBQVUsRUFBTXhELGNBQWMsS0FBZXVELElBQVl0ckMsT0FB
T3dyQyxlQUFpQnhyQyxPQUFPd3JDLGVBQWVILEVBQVVDLEdBQWNELEVBQVNJLFVBQVlILEdBRWpl
LFFBQVM4Z0QsR0FBZ0I1a0UsRUFBS3ZqQixFQUFLdU4sR0FBaUssTUFBcEp2TixLQUFPdWpCLEdB
QU94bkIsT0FBTzZuQyxlQUFlcmdCLEVBQUt2akIsR0FBT3VOLE1BQU9BLEVBQU9zMkIsWUFBWSxF
QUFNQyxjQUFjLEVBQU13RCxVQUFVLElBQWtCL2pCLEVBQUl2akIsR0FBT3VOLEVBQWdCZ1csRUFo
QzNNeG5CLE9BQU82bkMsZUFBZXRvQyxFQUFTLGNBQzdCaVMsT0FBTyxHQUdULElBSUlrOEUsR0FK
QXYvQyxFQUFXbnVDLE9BQU93QyxRQUFVLFNBQVVtQixHQUFVLElBQUssR0FBSTVELEdBQUksRUFB
R0EsRUFBSWdDLFVBQVVDLE9BQVFqQyxJQUFLLENBQUUsR0FBSTZELEdBQVM3QixVQUFVaEMsRUFB
SSxLQUFLLEdBQUlrRSxLQUFPTCxHQUFjNUQsT0FBT0MsVUFBVUMsZUFBZVAsS0FBS2lFLEVBQVFL
LEtBQVFOLEVBQU9NLEdBQU9MLEVBQU9LLElBQVksTUFBT04sSUFFblA0dUMsRUFBZSxXQUFjLFFB
QVNDLEdBQWlCN3VDLEVBQVF1VCxHQUFTLElBQUssR0FBSW5YLEdBQUksRUFBR0EsRUFBSW1YLEVB
QU1sVixPQUFRakMsSUFBSyxDQUFFLEdBQUkybkMsR0FBYXh3QixFQUFNblgsRUFBSTJuQyxHQUFX
SSxXQUFhSixFQUFXSSxhQUFjLEVBQU9KLEVBQVdLLGNBQWUsRUFBVSxTQUFXTCxLQUFZQSxFQUFX
NkQsVUFBVyxHQUFNdnJDLE9BQU82bkMsZUFBZWxrQyxFQUFRK2pDLEVBQVd6akMsSUFBS3lqQyxJ
QUFpQixNQUFPLFVBQVVuTSxFQUFha1gsRUFBWUMsR0FBaUosTUFBOUhELElBQVlELEVBQWlCalgs
RUFBWXQ3QixVQUFXd3lDLEdBQWlCQyxHQUFhRixFQUFpQmpYLEVBQWFtWCxHQUFxQm5YLE11TXht
c0JqaUI2VSxFQUFBaHhDLEVBQUEsSXZNOG1zQkt1ekMsRUFBVXByQixFQUF1QjZvQixHdU03bXNC
dEN1OUMsRUFBQXZ1RixFQUFBLEt2TWluc0JLd3VGLEVBQWFybUUsRUFBdUJvbUUsR3VNaG5zQnpD
RSxFQUFBenVGLEVBQUEsS3ZNb25zQkswdUYsRUFBV3ZtRSxFQUF1QnNtRSxHdU1ubnNCdkN2QixF
QUFBbHRGLEVBQUEsSUFFTTJ1Rix1QkFDUSxrQkFBTSxJQURkM0IsRUFBQXNCLEVBQUFwQixFQUFB
MTNDLFlBRVcsU0FBQW81QyxHQUFBLE9BQVNBLEVBQUtDLFlBRnpCN0IsRUFBQXNCLEVBQUFwQixF
QUFBMzNDLGVBR2MsU0FBQXE1QyxHQUFBLE1BQVFBLEdBQUtDLFlBSDNCUCxHQU1lUSxFdk1pb3NC
RixTQUFVNy9DLEdBRzFCLFFBQVM2L0MsS0FDUCxHQUFJMWhELEdBRUF1RyxFQUFPekUsRUFBTzBF
LENBRWxCM1gsR0FBZ0IzNkIsS0FBTXd0RixFQUV0QixLQUFLLEdBQUlqN0MsR0FBT2x4QyxVQUFV
QyxPQUFRNUIsRUFBT29YLE1BQU15N0IsR0FBT0MsRUFBTyxFQUFHQSxFQUFPRCxFQUFNQyxJQUMz
RTl5QyxFQUFLOHlDLEdBQVFueEMsVUFBVW14QyxFQUd6QixPQUFlSCxHQUFTekUsRUFBUXBELEVB
QTJCeHFDLE1BQU84ckMsRUFBTzBoRCxFQUFZemlELFdBQWF6ckMsT0FBT216QyxlQUFlKzZDLElB
QWN2dUYsS0FBS2MsTUFBTStyQyxHQUFPOXJDLE1BQU1DLE9BQU9QLEtBQWlCa3VDLEV1TXpvc0J6
TEMsT0FBVWlsQyxtQnZNeW9zQmdPbGxDLEV1TXZvc0IxTzYvQyxxQkFBdUIsV0FDckI3L0MsRUFB
S3AzQixNQUFNazNFLFFBQVF4QyxrQnZNd29zQmZ0OUMsRXVNcm9zQk4rL0MsV0FBYSxTQUFBN2Es
R0FDWGxsQyxFQUFLeUIsVUFBV3lqQyxZdk1rb3NCUnhnQyxFQUlKRCxFQUFRN0gsRUFBMkJvRCxF
QUFPMEUsR0ErRC9DLE1BaEZBNUgsR0FBVThpRCxFQUFhNy9DLEdBb0J2QmtFLEVBQWEyN0MsSUFD
WGpxRixJQUFLLGtCQUNMdU4sTUFBTyxTdU14b3NCTXc3RSxHQUFnQixHQUFBTCxHQUNIanNGLEtB
QUt3VyxNQUF4Qm8zRSxFQURzQjNCLEVBQ3RCMkIsTUFBT0YsRUFEZXpCLEVBQ2Z5QixPQUNmLElB
QUlFLEVBQU10c0YsT0FBUyxFQUNqQixNQUNFMndDLEdBQUFqckIsUUFBQXRnQixjQUFBLFNBQU91
c0MsVUFBVSxhQUNWdHBDLEtBQUssV0FDTDBsQixRQUFTaTlELElBQW1Cc0IsRUFBTXRzRixPQUNs
QzZ0QixTQUFVdStELEVBQVF2QyxpQnZNOG9zQjVCNW5GLElBQUssZUFDTHVOLE1BQU8sU3VNMW9z
Qkd3N0UsR0FBZ0IsR0FDbkJzQixHQUFVNXRGLEtBQUt3VyxNQUFmbzNFLE1BQ0E5YSxFQUFXOXlF
LEtBQUs2dEMsTUFBaEJpbEMsT0FDRmlaLEVBQWM2QixFQUFNdHNGLE9BQVNnckYsQ0FFbkMsSUFB
SXNCLEVBQU10c0YsT0FDUixNQUNFMndDLEdBQUFqckIsUUFBQXRnQixjQUFBMG1GLEVBQUFwbUUs
U0FBUXNsRSxlQUFnQkEsRUFDaEJQLFlBQWFBLEVBQ2JqWixPQUFRQSxFQUNSeVosaUJBQWtCdnNG
LEtBQUt5dEYscUJBQXFCeDJFLEtBQUtqWCxNQUNqRG1zRixPQUFRbnNGLEtBQUsydEYsV0FBVzEy
RSxLQUFLalgsV3ZNOG9zQnhDdUQsSUFBSyxTQUNMdU4sTUFBTyxXdU0xb3NCRCxHQUFBdTdFLEdB
Q29CcnNGLEtBQUt3VyxNQUF4Qm8zRSxFQUREdkIsRUFDQ3VCLE1BQU9GLEVBRFJyQixFQUNRcUIs
UUFDUDVhLEVBQVc5eUUsS0FBSzZ0QyxNQUFoQmlsQyxPQUVGK2EsRUFBZ0JELEVBQU05YSxPQUFP
dWEsRUFBYXZhLElBQzFDd1osRUFBaUJzQixFQUFNNXdDLE9BQU8sU0FBQzNuQyxFQUFPaTRFLEdB
QVIsTUFDbENBLEdBQUtDLFVBQVlsNEUsRUFBUSxFQUFJQSxHQUM3QixFQUdGLE9BQ0U0OEIsR0FB
QWpyQixRQUFBdGdCLGNBQUEsV0FBU3VzQyxVQUFVLFFBQ2hCanpDLEtBQUs4dEYsZ0JBQWdCeEIs
R0FDdEJyNkMsRUFBQWpyQixRQUFBdGdCLGNBQUEsTUFBSXVzQyxVQUFVLGFBQ1g0NkMsRUFBY3hy
RixJQUFJLFNBQUFpckYsR0FBQSxNQUNqQnI3QyxHQUFBanJCLFFBQUF0Z0IsY0FBQXdtRixFQUFB
bG1FLFFBQUF5bUIsR0FBVWxxQyxJQUFLK3BGLEVBQUt2dUYsR0FBSXV1RixLQUFNQSxHQUFVSSxP
QUczQzF0RixLQUFLK3RGLGFBQWF6QixRdk1vcHNCakJrQixHQUNQOTlDLEVBQU9sNkIsVXVNbnRz
QldnNEUsR0FDWno5RCxXQUNMNjlELE1BQU9sK0MsRUFBQS81QixVQUFVeS9CLE1BQU03RCxXQUN2
Qm04QyxRQUFTaCtDLEVBQUEvNUIsVUFBVTZCLE9BQU8rNUIsWXZNc3RzQjdCMXlDLEVBQVFtb0Is
UXVNenRzQll3bUUsR3ZNNnRzQmYsU0FBUzF1RixFQUFRRCxFQUFTSCxHQUUvQixZQW9CQSxTQUFT
bW9CLEdBQXVCQyxHQUFPLE1BQU9BLElBQU9BLEVBQUlDLFdBQWFELEdBQVFFLFFBQVNGLEdBRXZG
LFFBQVM2VCxHQUFnQkMsRUFBVUMsR0FBZSxLQUFNRCxZQUFvQkMsSUFBZ0IsS0FBTSxJQUFJajVC
LFdBQVUscUNBRWhILFFBQVM0b0MsR0FBMkJsMEIsRUFBTXJYLEdBQVEsSUFBS3FYLEVBQVEsS0FB
TSxJQUFJbTBCLGdCQUFlLDREQUFnRSxRQUFPeHJDLEdBQXlCLGdCQUFUQSxJQUFxQyxrQkFBVEEs
R0FBOEJxWCxFQUFQclgsRUFFbE8sUUFBU3lyQyxHQUFVQyxFQUFVQyxHQUFjLEdBQTBCLGtCQUFm
QSxJQUE0QyxPQUFmQSxFQUF1QixLQUFNLElBQUlocEMsV0FBVSxpRUFBb0VncEMsR0FBZUQsR0FB
U3ByQyxVQUFZRCxPQUFPNitCLE9BQU95TSxHQUFjQSxFQUFXcnJDLFdBQWF1TixhQUFlZ0UsTUFB
TzY1QixFQUFVdkQsWUFBWSxFQUFPeUQsVUFBVSxFQUFNeEQsY0FBYyxLQUFldUQsSUFBWXRyQyxP
QUFPd3JDLGVBQWlCeHJDLE9BQU93ckMsZUFBZUgsRUFBVUMsR0FBY0QsRUFBU0ksVUFBWUgsR0F4
QmpldHJDLE9BQU82bkMsZUFBZXRvQyxFQUFTLGNBQzdCaVMsT0FBTyxHQUdULElBQUkrZ0MsR0FB
ZSxXQUFjLFFBQVNDLEdBQWlCN3VDLEVBQVF1VCxHQUFTLElBQUssR0FBSW5YLEdBQUksRUFBR0Es
RUFBSW1YLEVBQU1sVixPQUFRakMsSUFBSyxDQUFFLEdBQUkybkMsR0FBYXh3QixFQUFNblgsRUFB
STJuQyxHQUFXSSxXQUFhSixFQUFXSSxhQUFjLEVBQU9KLEVBQVdLLGNBQWUsRUFBVSxTQUFXTCxL
QUFZQSxFQUFXNkQsVUFBVyxHQUFNdnJDLE9BQU82bkMsZUFBZWxrQyxFQUFRK2pDLEVBQVd6akMs
SUFBS3lqQyxJQUFpQixNQUFPLFVBQVVuTSxFQUFha1gsRUFBWUMsR0FBaUosTUFBOUhELElBQVlE
LEVBQWlCalgsRUFBWXQ3QixVQUFXd3lDLEdBQWlCQyxHQUFhRixFQUFpQmpYLEVBQWFtWCxHQUFx
Qm5YLE13TWh2c0JqaUI2VSxFQUFBaHhDLEVBQUEsSXhNb3ZzQkt1ekMsRUFBVXByQixFQUF1QjZv
QixHd01udnNCdEN3QyxFQUFBeHpDLEVBQUEsSXhNdXZzQkt5ekMsRUFBZXRyQixFQUF1QnFyQixH
d010dnNCM0MwNkMsRUFBQWx1RixFQUFBLEl4TTB2c0JLbXVGLEVBQWtCaG1FLEVBQXVCK2xFLEd3
TXh2c0J6Qm9CLEV4TWt3c0JMLFNBQVVyZ0QsR0FHdkIsUUFBU3FnRCxLQUNQLEdBQUlsaUQsR0FF
QXVHLEVBQU96RSxFQUFPMEUsQ0FFbEIzWCxHQUFnQjM2QixLQUFNZ3VGLEVBRXRCLEtBQUssR0FB
SXo3QyxHQUFPbHhDLFVBQVVDLE9BQVE1QixFQUFPb1gsTUFBTXk3QixHQUFPQyxFQUFPLEVBQUdB
LEVBQU9ELEVBQU1DLElBQzNFOXlDLEVBQUs4eUMsR0FBUW54QyxVQUFVbXhDLEVBR3pCLE9BQWVI
LEdBQVN6RSxFQUFRcEQsRUFBMkJ4cUMsTUFBTzhyQyxFQUFPa2lELEVBQVNqakQsV0FBYXpyQyxP
QUFPbXpDLGVBQWV1N0MsSUFBVy91RixLQUFLYyxNQUFNK3JDLEdBQU85ckMsTUFBTUMsT0FBT1As
S0FBaUJrdUMsRXdNeHdzQm5MQyxPQUNFc0YsU0FBUyxHeE15d3NCTHZGLEV3TXR3c0JOcWdELGtC
QUFvQixXQUNsQnJnRCxFQUFLeUIsVUFBVzhELFNBQVMsS3hNdXdzQnJCdkYsRXdNcHdzQk5tL0Ms
V0FBYSxTQUFDaHVGLEVBQUlvUSxHQUNJLElBQWhCQSxFQUFLN04sT0FDUHNzQyxFQUFLcDNCLE1B
QU04MEUsV0FBV3ZzRixHQUV0QjZ1QyxFQUFLcDNCLE1BQU02MEUsU0FBU3RzRixFQUFJb1EsR0FF
MUJ5K0IsRUFBS3lCLFVBQVc4RCxTQUFTLEt4TTB2c0JqQmIsRUFXSkQsRUFBUTdILEVBQTJCb0Qs
RUFBTzBFLEdBc0QvQyxNQTlFQTVILEdBQVVzakQsRUFBVXJnRCxHQTJCcEJrRSxFQUFhbThDLElB
Q1h6cUYsSUFBSyxTQUNMdU4sTUFBTyxXd012d3NCRCxHQUFBMDdFLEdBQUF4c0YsS0FBQWlzRixF
QUNvQ2pzRixLQUFLd1csTUFBeEM4MkUsRUFERHJCLEVBQ0NxQixLQUFNbEMsRUFEUGEsRUFDT2Is
YUFBY0UsRUFEckJXLEVBQ3FCWCxXQUV4QjcwRSxRQXVCSixPQXJCRUEsR0FERXpXLEtBQUs2dEMs
TUFBTXNGLFFBRVhsQixFQUFBanJCLFFBQUF0Z0IsY0FBQW1tRixFQUFBN2xFLFNBQWU3WCxLQUFN
bStFLEVBQUtuK0UsS0FDWGdrQyxRQUFTbnpDLEtBQUs2dEMsTUFBTXNGLFFBQ3BCTixPQUFRLFNB
QUMxakMsR0FBRCxNQUFVcTlFLEdBQUtPLFdBQVdPLEVBQUt2dUYsR0FBSW9RLE1BSTFEOGlDLEVB
QUFqckIsUUFBQXRnQixjQUFBLE9BQUt1c0MsVUFBVSxRQUNiaEIsRUFBQWpyQixRQUFBdGdCLGNB
QUEsU0FBT3VzQyxVQUFVLFNBQ1Z0cEMsS0FBSyxXQUNMMGxCLFFBQVNpK0QsRUFBS0MsVUFDZHAr
RCxTQUFVLGlCQUFNaThELEdBQWFrQyxFQUFLdnVGLE9BQ3pDa3pDLEVBQUFqckIsUUFBQXRnQixj
QUFBLFNBQU93bkYsY0FBZWx1RixLQUFLaXVGLG1CQUN4QlgsRUFBS24rRSxNQUVSOGlDLEVBQUFq
ckIsUUFBQXRnQixjQUFBLFVBQVF1c0MsVUFBVSxVQUNWbTVDLFFBQVMsaUJBQU1kLEdBQVdnQyxF
QUFLdnVGLFFBTTNDa3pDLEVBQUFqckIsUUFBQXRnQixjQUFBLE1BQUl1c0MsV0FBVyxFQUFBZCxF
QUFBbnJCLFVBQ2J1bUUsVUFBV0QsRUFBS0MsVUFDaEJwNkMsUUFBU256QyxLQUFLNnRDLE1BQU1z
RixXQUVuQjE4QixPeE15eHNCQ3UzRSxHQUNQdCtDLEVBQU9sNkIsVXdNbDFzQld3NEUsR0FDWmor
RCxXQUNMdTlELEtBQU01OUMsRUFBQS81QixVQUFVNkIsT0FBTys1QixXQUN2Qjg1QyxTQUFVMzdD
LEVBQUEvNUIsVUFBVXVhLEtBQUtxaEIsV0FDekIrNUMsV0FBWTU3QyxFQUFBLzVCLFVBQVV1YSxL
QUFLcWhCLFdBQzNCNjVDLGFBQWMxN0MsRUFBQS81QixVQUFVdWEsS0FBS3FoQixZeE1xMXNCaEMx
eUMsRUFBUW1vQixRd00xMXNCWWduRSxHeE04MXNCZixTQUFTbHZGLEVBQVFELEVBQVNILEdBRS9C
LFlBMEJBLFNBQVNzc0YsR0FBd0Jsa0UsR0FBTyxHQUFJQSxHQUFPQSxFQUFJQyxXQUFjLE1BQU9E
LEVBQWMsSUFBSW1rRSxLQUFhLElBQVcsTUFBUG5rRSxFQUFlLElBQUssR0FBSXZqQixLQUFPdWpC
LEdBQVd4bkIsT0FBT0MsVUFBVUMsZUFBZVAsS0FBSzZuQixFQUFLdmpCLEtBQU0wbkYsRUFBTzFu
RixHQUFPdWpCLEVBQUl2akIsR0FBZ0MsT0FBdEIwbkYsR0FBT2prRSxRQUFVRixFQUFZbWtFLEVB
RWxRLFFBQVNwa0UsR0FBdUJDLEdBQU8sTUFBT0EsSUFBT0EsRUFBSUMsV0FBYUQsR0FBUUUsUUFB
U0YsR0ExQnZGeG5CLE9BQU82bkMsZUFBZXRvQyxFQUFTLGNBQzdCaVMsT0FBTyxHeU12MnNCVixJ
QUFBNCtCLEdBQUFoeEMsRUFBQSxJek00MnNCS3V6QyxFQUFVcHJCLEVBQXVCNm9CLEd5TTMyc0J0
Q3kzQyxFQUFBem9GLEVBQUEsSUFDQXl2RixFQUFBenZGLEVBQUEsSUFDQTB2RixFQUFBMXZGLEVB
QUEsS3pNaTNzQksydkYsRUFBV3huRSxFQUF1QnVuRSxHeU1oM3NCdkNFLEVBQUE1dkYsRUFBQSxL
ek1vM3NCSzZ2RixFQUFnQjFuRSxFQUF1QnluRSxHeU1uM3NCNUNFLEVBQUE5dkYsRUFBQSxLQUFZ
K3ZGLEV6TXUzc0JPekQsRUFBd0J3RCxHeU1yM3NCckNFLEVBQU0sU0FBQTVpRCxHQUFBLEdBQUU4
aEQsR0FBRjloRCxFQUFFOGhELE1BQU9GLEVBQVQ1aEQsRUFBUzRoRCxPQUFULE9BQ1Z6N0MsR0FB
QWpyQixRQUFBdGdCLGNBQUEsV0FDRXVyQyxFQUFBanJCLFFBQUF0Z0IsY0FBQTJuRixFQUFBcm5F
LFNBQVF1a0UsUUFBU21DLEVBQVFuQyxVQUN6QnQ1QyxFQUFBanJCLFFBQUF0Z0IsY0FBQTZuRixF
QUFBdm5FLFNBQWE0bUUsTUFBT0EsRUFBT0YsUUFBU0EsS0FJeENnQixHQUFJMytELFdBQ0Y2OUQs
TUFBT2wrQyxFQUFBLzVCLFVBQVV5L0IsTUFBTTdELFdBQ3ZCbThDLFFBQVNoK0MsRUFBQS81QixV
QUFVNkIsT0FBTys1QixXQUc1QixJQUFNaTBDLEdBQWtCLFNBQUEzM0MsR0FBQSxPQUN0QisvQyxN
QUFPLy9DLEVBQU0rL0MsUUFHVG5JLEVBQXFCLFNBQUExMkMsR0FBQSxPQUN2QjIrQyxTQUFTLEVB
QUF2RyxFQUFBaGdFLG9CQUFtQnNuRSxFQUFhMS9DLEl6TXM0c0I1Q2x3QyxHQUFRbW9CLFN5TW40
c0JNLEVBQUFtbkUsRUFBQXg5QyxTQUNiNjBDLEVBQ0FDLEdBQ0FpSixJek1vNHNCSSxTQUFTNXZG
LEVBQVFELEVBQVNILEdBRS9CLFlBc0JBLFNBQVNtb0IsR0FBdUJDLEdBQU8sTUFBT0EsSUFBT0Es
RUFBSUMsV0FBYUQsR0FBUUUsUUFBU0YsRzBNMTdzQnhGLEdBQUE0b0IsR0FBQWh4QyxFQUFBLEkx
TXc2c0JLdXpDLEVBQVVwckIsRUFBdUI2b0IsRzBNdjZzQnRDaS9DLEVBQUFqd0YsRUFBQSxLQUNB
eW9GLEVBQUF6b0YsRUFBQSxJQUNBeXZGLEVBQUF6dkYsRUFBQSxJQUNBa3dGLEVBQUFsd0YsRUFB
QSxLMU04NnNCS213RixFQUFRaG9FLEVBQXVCK25FLEcwTTc2c0JwQ0UsRUFBQXB3RixFQUFBLEsx
TWk3c0JLcXdGLEVBQWFsb0UsRUFBdUJpb0UsRTBNaDdzQnpDcHdGLEdBQUEsSUFFQSxJQUFNMHND
LElBQVEsRUFBQSs3QyxFQUFBOS9ELGFBQUEwbkUsRUFBQS9uRSxVQUVkLEVBQUEybkUsRUFBQWxy
RCxRQUNFd08sRUFBQWpyQixRQUFBdGdCLGNBQUF5bkYsRUFBQXQ5QyxVQUFVekYsTUFBT0EsR0FD
ZjZHLEVBQUFqckIsUUFBQXRnQixjQUFBbW9GLEVBQUE3bkUsUUFBQSxPQUVGdmdCLFNBQVN1b0Ys
ZUFBZSxVMU13N3NCcEIsU0FBU2x3RixFQUFRRCxFQUFTSCxHQUUvQixZQVlBLFNBQVNtb0IsR0FB
dUJDLEdBQU8sTUFBT0EsSUFBT0EsRUFBSUMsV0FBYUQsR0FBUUUsUUFBU0YsR0FWdkZ4bkIsT0FB
TzZuQyxlQUFldG9DLEVBQVMsY0FDN0JpUyxPQUFPLEcyTTM4c0JWLElBQUFxMkUsR0FBQXpvRixF
QUFBLElBQ0F1d0YsRUFBQXZ3RixFQUFBLEszTWk5c0JLd3dGLEVBQVVyb0UsRUFBdUJvb0UsRzJN
LzhzQmhDRSxHQUFjLEVBQUFoSSxFQUFBLy9ELGtCQUNsQndtRSxpQjNNczlzQkQvdUYsR0FBUW1v
QixRMk1uOXNCTW1vRSxHM011OXNCVCxTQUFTcndGLEVBQVFELEVBQVNILEdBRS9CLFlBY0EsU0FB
UzB3RixHQUFtQnJwRCxHQUFPLEdBQUlqdkIsTUFBTXdSLFFBQVF5ZCxHQUFNLENBQUUsSUFBSyxH
QUFJMW1DLEdBQUksRUFBR2d3RixFQUFPdjRFLE1BQU1pdkIsRUFBSXprQyxRQUFTakMsRUFBSTBt
QyxFQUFJemtDLE9BQVFqQyxJQUFPZ3dGLEVBQUtod0YsR0FBSzBtQyxFQUFJMW1DLEVBQU0sT0FB
T2d3RixHQUFlLE1BQU92NEUsT0FBTTNULEtBQUs0aUMsRzRNMStzQjVLLFFBQVM2bkQsS0FBb0Ms
R0FBOUIvL0MsR0FBOEJ4c0MsVUFBQUMsUUFBQSxHQUFBWixTQUFBVyxVQUFBLEdBQXRCaS9DLEVB
QXNCai9DLFVBQUEsR0FBUm04QyxFQUFRbjhDLFVBQUEsR0FBQWl4QyxFQUFBLFdBQzFELE9BQVFr
TCxFQUFPN3pDLE1BQ2IsSUFBQTZoRixHQUFBOTNDLFNBQ0UsT0FBQTQ3QyxJQUVJdndGLEdBQUk4
dUMsRUFBTW1QLE9BQU8sU0FBQ3V5QyxFQUFPakMsR0FBUixNQUFpQm5uRixNQUFLNHdELElBQUl1
MkIsRUFBS3Z1RixHQUFJd3dGLFFBQWMsRUFDbEVoQyxXQUFXLEVBQ1hwK0UsS0FBTXF1QyxFQUFP
cnVDLE9BSmpCbFAsT0FBQW12RixFQU1LdmhELElBR1AsS0FBQTI5QyxHQUFBNzNDLFlBQ0UsT0FB
QTI3QyxFQUFPemhELEVBQU1pbEMsT0FBTyxTQUFBd2EsR0FBQSxNQUNsQkEsR0FBS3Z1RixLQUFP
eStDLEVBQU96K0MsS0FHdkIsS0FBQXlzRixHQUFBNTNDLFVBQ0UsT0FBQTA3QyxFQUFPemhELEVB
QU14ckMsSUFBSSxTQUFBaXJGLEdBQUEsTUFDZkEsR0FBS3Z1RixLQUFPeStDLEVBQU96K0MsR0FB
bkIwdUMsS0FDTzYvQyxHQUFNbitFLEtBQU1xdUMsRUFBT3J1QyxPQUN4Qm0rRSxJQUdOLEtBQUE5
QixHQUFBMzNDLGNBQ0UsT0FBQXk3QyxFQUFPemhELEVBQU14ckMsSUFBSSxTQUFBaXJGLEdBQUEs
TUFDZkEsR0FBS3Z1RixLQUFPeStDLEVBQU96K0MsR0FBbkIwdUMsS0FDTzYvQyxHQUFNQyxXQUFZ
RCxFQUFLQyxZQUM1QkQsSUFHTixLQUFBOUIsR0FBQTEzQyxhQUNFLEdBQU0wN0MsR0FBZTNoRCxF
QUFNaWMsTUFBTSxTQUFBd2pDLEdBQUEsTUFBUUEsR0FBS0MsV0FDOUMsUUFBQStCLEVBQU96aEQs
RUFBTXhyQyxJQUFJLFNBQUFpckYsR0FBQSxNQUFBNy9DLE1BQ1o2L0MsR0FDSEMsV0FBWWlDLE1B
R2hCLEtBQUFoRSxHQUFBejNDLGdCQUNFLE9BQUF1N0MsRUFBT3poRCxFQUFNaWxDLE9BQU8sU0FB
QXdhLEdBQUEsTUFBUUEsR0FBS0MsYUFBYyxJQUVqRCxTQUNFLE9BQUErQixFQUFPemhELE1BMUMr
QyxtQ0FBQXlFLEdBQUEsWUFBQW05QyxFQUFBbjlDLElBQUEsTUFBQUEsR0FBQWc5QyxFNU04OXNC
M0Rod0YsT0FBTzZuQyxlQUFldG9DLEVBQVMsY0FDN0JpUyxPQUFPLEdBR1QsSUFBSTIrRSxHQUE0
QixrQkFBWHQ2RCxTQUFvRCxnQkFBcEJBLFFBQU82VSxTQUF3QixTQUFVbGpCLEdBQU8sYUFBY0Es
SUFBUyxTQUFVQSxHQUFPLE1BQU9BLElBQXlCLGtCQUFYcU8sU0FBeUJyTyxFQUFJaGEsY0FBZ0Jx
b0IsT0FBUyxlQUFrQnJPLElBRXRPMm1CLEVBQVdudUMsT0FBT3dDLFFBQVUsU0FBVW1CLEdBQVUs
SUFBSyxHQUFJNUQsR0FBSSxFQUFHQSxFQUFJZ0MsVUFBVUMsT0FBUWpDLElBQUssQ0FBRSxHQUFJ
NkQsR0FBUzdCLFVBQVVoQyxFQUFJLEtBQUssR0FBSWtFLEtBQU9MLEdBQWM1RCxPQUFPQyxVQUFV
QyxlQUFlUCxLQUFLaUUsRUFBUUssS0FBUU4sRUFBT00sR0FBT0wsRUFBT0ssSUFBWSxNQUFPTixH
QUV2UHBFLEdBQVFtb0IsUTRNdCtzQmU0bUUsQ0FKeEIsSUFBQXBDLEdBQUE5c0YsRUFBQSxJQUVN
NGhELE01TXFqdEJBLFNBQVN4aEQsRUFBUUQsS0FNakIsU0FBU0MsRUFBUUQsRzZNN2p0QnZCLFlB
S0EsU0FBQTZDLEdBQUFDLEdBQ0EsVUFBQUEsR0FBQWpCLFNBQUFpQixFQUNBLFNBQUFDLFdBQUEs
d0RBR0EsT0FBQXRDLFFBQUFxQyxHQUdBLFFBQUFFLEtBQ0EsSUFDQSxJQUFBdkMsT0FBQXdDLE9B
Q0EsUUFNQSxJQUFBQyxHQUFBLEdBQUFDLFFBQUEsTUFFQSxJQURBRCxFQUFBLFFBQ0EsTUFBQXpD
LE9BQUEyQyxvQkFBQUYsR0FBQSxHQUNBLFFBS0EsUUFEQUcsTUFDQTdDLEVBQUEsRUFBaUJBLEVB
QUEsR0FBUUEsSUFDekI2QyxFQUFBLElBQUFGLE9BQUFHLGFBQUE5QyxLQUVBLElBQUErQyxHQUFB
OUMsT0FBQTJDLG9CQUFBQyxHQUFBRyxJQUFBLFNBQUFDLEdBQ0EsTUFBQUosR0FBQUksSUFFQSxt
QkFBQUYsRUFBQUcsS0FBQSxJQUNBLFFBSUEsSUFBQUMsS0FJQSxPQUhBLHVCQUFBQyxNQUFBLElB
QUFDLFFBQUEsU0FBQUMsR0FDQUgsRUFBQUcsT0FHQSx5QkFEQXJELE9BQUFzRCxLQUFBdEQsT0FB
QXdDLFVBQWtDVSxJQUFBRCxLQUFBLElBTWhDLE1BQUFqQyxHQUVGLFVBbkRBLEdBQUFkLEdBQUFG
LE9BQUFDLFVBQUFDLGVBQ0F1RCxFQUFBekQsT0FBQUMsVUFBQXlELG9CQXNEQWxFLEdBQUFELFFB
QUFnRCxJQUFBdkMsT0FBQXdDLE9BQUEsU0FBQW1CLEVBQUFDLEdBS0EsT0FKQUMsR0FFQUMsRUFE
QUMsRUFBQTNCLEVBQUF1QixHQUdBSyxFQUFBLEVBQWdCQSxFQUFBakMsVUFBQUMsT0FBc0JnQyxJ
QUFBLENBQ3RDSCxFQUFBN0QsT0FBQStCLFVBQUFpQyxHQUVBLFFBQUFDLEtBQUFKLEdBQ0EzRCxF
QUFBUCxLQUFBa0UsRUFBQUksS0FDQUYsRUFBQUUsR0FBQUosRUFBQUksR0FJQSxJQUFBakUsT0FB
QXdELHNCQUFBLENBQ0FNLEVBQUE5RCxPQUFBd0Qsc0JBQUFLLEVBQ0EsUUFBQTlELEdBQUEsRUFB
a0JBLEVBQUErRCxFQUFBOUIsT0FBb0JqQyxJQUN0QzBELEVBQUE5RCxLQUFBa0UsRUFBQUMsRUFB
QS9ELE1BQ0FnRSxFQUFBRCxFQUFBL0QsSUFBQThELEVBQUFDLEVBQUEvRCxNQU1BLE1BQUFnRSxL
N01xa3RCTSxTQUFTdkUsRUFBUUQsRUFBU0gsRzhNdHB0QmhDLFlBaUJBLFNBQUFneEYsR0FBQTUr
RSxHQUNBLEdBQUExUixHQUFBLEdBQUEyM0MsS0FBQW9CLElBR0EsT0FGQS80QyxHQUFBNjNDLElB
QUEsRUFDQTczQyxFQUFBODNDLElBQUFwbUMsRUFDQTFSLEVBakJBLEdBQUEyM0MsR0FBQXI0QyxF
QUFBLEdBRUFJLEdBQUFELFFBQUFrNEMsQ0FJQSxJQUFBNDRDLEdBQUFELEdBQUEsR0FDQUUsRUFB
QUYsR0FBQSxHQUNBRyxFQUFBSCxFQUFBLE1BQ0FJLEVBQUFKLEVBQUFodkYsUUFDQXF2RixFQUFB
TCxFQUFBLEdBQ0FNLEVBQUFOLEVBQUEsR0FRQTM0QyxHQUFBUyxRQUFBLFNBQUExbUMsR0FDQSxH
QUFBQSxZQUFBaW1DLEdBQUEsTUFBQWptQyxFQUVBLFdBQUFBLEVBQUEsTUFBQSsrRSxFQUNBLElB
QUFudkYsU0FBQW9RLEVBQUEsTUFBQWcvRSxFQUNBLElBQUFoL0UsS0FBQSxRQUFBNitFLEVBQ0Es
SUFBQTcrRSxLQUFBLFFBQUE4K0UsRUFDQSxRQUFBOStFLEVBQUEsTUFBQWkvRSxFQUNBLFNBQUFq
L0UsRUFBQSxNQUFBay9FLEVBRUEsb0JBQUFsL0UsSUFBQSxrQkFBQUEsR0FDQSxJQUNBLEdBQUEy
bEMsR0FBQTNsQyxFQUFBMmxDLElBQ0Esc0JBQUFBLEdBQ0EsVUFBQU0sR0FBQU4sRUFBQXgvQixL
QUFBbkcsSUFFSyxNQUFBNGxDLEdBQ0wsVUFBQUssR0FBQSxTQUFBUyxFQUFBQyxHQUNBQSxFQUFB
ZixLQUlBLE1BQUFnNUMsR0FBQTUrRSxJQUdBaW1DLEVBQUFrNUMsSUFBQSxTQUFBbHFELEdBQ0Es
R0FBQXJtQyxHQUFBb1gsTUFBQXZYLFVBQUFJLE1BQUFWLEtBQUE4bUMsRUFFQSxXQUFBZ1IsR0FB
QSxTQUFBUyxFQUFBQyxHQUdBLFFBQUFscUIsR0FBQWx1QixFQUFBc0MsR0FDQSxHQUFBQSxJQUFB
LGdCQUFBQSxJQUFBLGtCQUFBQSxJQUFBLENBQ0EsR0FBQUEsWUFBQW8xQyxJQUFBcDFDLEVBQUE4
MEMsT0FBQU0sRUFBQXgzQyxVQUFBazNDLEtBQUEsQ0FDQSxTQUFBOTBDLEVBQUFzMUMsS0FDQXQx
QyxJQUFBdTFDLEdBRUEsWUFBQXYxQyxFQUFBczFDLElBQUExcEIsRUFBQWx1QixFQUFBc0MsRUFB
QXUxQyxNQUNBLElBQUF2MUMsRUFBQXMxQyxLQUFBUSxFQUFBOTFDLEVBQUF1MUMsU0FDQXYxQyxH
QUFBODBDLEtBQUEsU0FBQTkwQyxHQUNBNHJCLEVBQUFsdUIsRUFBQXNDLElBQ1c4MUMsSUFHWCxH
QUFBaEIsR0FBQTkwQyxFQUFBODBDLElBQ0Esc0JBQUFBLEdBQUEsQ0FDQSxHQUFBcjNDLEdBQUEs
R0FBQTIzQyxHQUFBTixFQUFBeC9CLEtBQUF0VixHQUlBLFlBSEF2QyxHQUFBcTNDLEtBQUEsU0FB
QTkwQyxHQUNBNHJCLEVBQUFsdUIsRUFBQXNDLElBQ2E4MUMsSUFLYi8zQyxFQUFBTCxHQUFBc0Ms
RUFDQSxNQUFBdXVGLEdBQ0ExNEMsRUFBQTkzQyxHQTNCQSxPQUFBQSxFQUFBNEIsT0FBQSxNQUFB
azJDLE1BOEJBLFFBN0JBMDRDLEdBQUF4d0YsRUFBQTRCLE9BNkJBakMsRUFBQSxFQUFtQkEsRUFB
QUssRUFBQTRCLE9BQWlCakMsSUFDcENrdUIsRUFBQWx1QixFQUFBSyxFQUFBTCxPQUtBMDNDLEVB
QUFVLE9BQUEsU0FBQTNtQyxHQUNBLFVBQUFpbUMsR0FBQSxTQUFBUyxFQUFBQyxHQUNBQSxFQUFB
M21DLE1BSUFpbUMsRUFBQW81QyxLQUFBLFNBQUF0cEMsR0FDQSxVQUFBOVAsR0FBQSxTQUFBUyxF
QUFBQyxHQUNBb1AsRUFBQW5rRCxRQUFBLFNBQUFvTyxHQUNBaW1DLEVBQUFTLFFBQUExbUMsR0FB
QTJsQyxLQUFBZSxFQUFBQyxRQU9BVixFQUFBeDNDLFVBQUEsZUFBQWc0QyxHQUNBLE1BQUF2M0Ms
TUFBQXkyQyxLQUFBLEtBQUFjLEs5TThwdEJNLFNBQVN6NEMsRUFBUUQsRUFBU0gsRytNdnd0QmhD
LFlBWUEsU0FBQTB4RixLQUNBcnVFLEdBQUEsRUFDQWcxQixFQUFBYSxJQUFBLEtBQ0FiLEVBQUFr
QixJQUFBLEtBSUEsUUFBQXd4QyxHQUFBdnNELEdBd0NBLFFBQUFtekQsR0FBQXR4RixJQUVBbStC
LEVBQUFvekQsZUFDQUMsRUFDQUMsRUFBQXp4RixHQUFBMEIsTUFDQXk4QixFQUFBdXpELFdBQUFD
LE1BR0FGLEVBQUF6eEYsR0FBQTR4RixjQUNBenpELEVBQUFtekQsYUFDQUcsRUFBQXp4RixHQUFB
NnhGLFFBQUEsRUFDQTF6RCxFQUFBbXpELFlBQ0FHLEVBQUF6eEYsR0FBQTR4RixVQUNBSCxFQUFB
enhGLEdBQUEwQixTQUdBK3ZGLEVBQUF6eEYsR0FBQTZ4RixRQUFBLEVBQ0FDLEVBQ0FMLEVBQUF6
eEYsR0FBQTR4RixVQUNBSCxFQUFBenhGLEdBQUEwQixTQUtBLFFBQUFxd0YsR0FBQS94RixHQUNB
eXhGLEVBQUF6eEYsR0FBQTZ4RixTQUNBMXpELEVBQUE0ekQsVUFDQTV6RCxFQUFBNHpELFVBQUFO
LEVBQUF6eEYsR0FBQTR4RixVQUFBSCxFQUFBenhGLEdBQUEwQixPQUNPK3ZGLEVBQUF6eEYsR0FB
QXN4RixjQUNQdm1GLFFBQUFpbkYsS0FDQSxrQ0FBQVAsRUFBQXp4RixHQUFBNHhGLFVBQUEsTUFF
QTdtRixRQUFBaW5GLEtBQ0EsZ0hBQ0FQLEVBQUF6eEYsR0FBQTR4RixVQUFBLE9BekVBenpELFFB
Q0FuYixHQUFBcXVFLElBQ0FydUUsR0FBQSxDQUNBLElBQUFoakIsR0FBQSxFQUNBNHhGLEVBQUEs
RUFDQUgsSUFDQXo1QyxHQUFBYSxJQUFBLFNBQUFFLEdBRUEsSUFBQUEsRUFBQWIsS0FDQXU1QyxF
QUFBMTRDLEVBQUFrNUMsT0FFQVIsRUFBQTE0QyxFQUFBazVDLEtBQUFKLE9BQ0FFLEVBQUFoNUMs
RUFBQWs1QyxLQUVBcDhDLGFBQUE0N0MsRUFBQTE0QyxFQUFBazVDLEtBQUE5N0MsZUFFQXM3QyxH
QUFBMTRDLEVBQUFrNUMsT0FHQWo2QyxFQUFBa0IsSUFBQSxTQUFBSCxFQUFBajFDLEdBQ0EsSUFB
QWkxQyxFQUFBZCxNQUNBYyxFQUFBazVDLElBQUFqeUYsSUFDQXl4RixFQUFBMTRDLEVBQUFrNUMs
TUFDQUwsVUFBQSxLQUNBbHdGLE1BQUFvQyxFQUNBcXlDLFFBQUFWLFdBQ0E2N0MsRUFBQXA1RSxL
QUFBLEtBQUE2Z0MsRUFBQWs1QyxLQUtBVCxFQUFBMXRGLEVBQUE2dEYsR0FDQSxJQUNBLEtBRUFF
LFFBQUEsS0E2Q0EsUUFBQUMsR0FBQTl4RixFQUFBMEIsR0FDQXFKLFFBQUFpbkYsS0FBQSw2Q0FB
QWh5RixFQUFBLEtBQ0EsSUFBQWt5RixJQUFBeHdGLE1BQUFpOEMsT0FBQWo4QyxJQUFBLEVBQ0F3
d0YsR0FBQXh1RixNQUFBLE1BQUFDLFFBQUEsU0FBQXd1RixHQUNBcG5GLFFBQUFpbkYsS0FBQSxL
QUFBRyxLQUlBLFFBQUFYLEdBQUE5dkYsRUFBQWcyRCxHQUNBLE1BQUFBLEdBQUEwNkIsS0FBQSxT
QUFBQyxHQUNBLE1BQUEzd0YsYUFBQTJ3RixLQTVHQSxHQUFBcjZDLEdBQUFyNEMsRUFBQSxJQUVB
Z3lGLEdBQ0FqbUQsZUFDQTdvQyxVQUNBeXZGLFlBR0F0dkUsR0FBQSxDQUNBbGpCLEdBQUF1eEYs
VUFPQXZ4RixFQUFBNHFGLFUvTTIydEJNLFNBQVMzcUYsRUFBUUQsR2dONzN0QnZCQyxFQUFBRCxR
QUFBLFNBQUFDLEdBUUEsTUFQQUEsR0FBQXd5RixrQkFDQXh5RixFQUFBeXlGLFVBQUEsYUFDQXp5
RixFQUFBMHlGLFNBRUExeUYsRUFBQStGLFlBQ0EvRixFQUFBd3lGLGdCQUFBLEdBRUF4eUYsSWhO
cTR0Qk0sU0FBU0EsRUFBUUQsSWlONzR0QnZCLFNBQUF5WCxHQUNBLFlBcUJBLFNBQUFtN0UsR0FB
QTN3RixHQUlBLEdBSEEsZ0JBQUFBLEtBQ0FBLEVBQUFrQixPQUFBbEIsSUFFQSw2QkFBQTBQLEtB
QUExUCxHQUNBLFNBQUFjLFdBQUEseUNBRUEsT0FBQWQsR0FBQTRQLGNBR0EsUUFBQWdoRixHQUFB
NWdGLEdBSUEsTUFIQSxnQkFBQUEsS0FDQUEsRUFBQTlPLE9BQUE4TyxJQUVBQSxFQUlBLFFBQUE2
Z0YsR0FBQUMsR0FDQSxHQUFBNW5ELElBQ0FsRSxLQUFBLFdBQ0EsR0FBQWgxQixHQUFBOGdGLEVB
QUFDLE9BQ0EsUUFBZ0IxbkQsS0FBQXpwQyxTQUFBb1EsWUFVaEIsT0FOQWdoRixHQUFBQyxXQUNB
L25ELEVBQUE3VSxPQUFBNlUsVUFBQSxXQUNBLE1BQUFBLEtBSUFBLEVBR0EsUUFBQWdvRCxHQUFB
dDhCLEdBQ0ExMUQsS0FBQXFDLE9BRUFxekQsWUFBQXM4QixHQUNBdDhCLEVBQUFoekQsUUFBQSxT
QUFBb08sRUFBQWhRLEdBQ0FkLEtBQUFpeUYsT0FBQW54RixFQUFBZ1EsSUFDTzlRLE1BRUYwMUQs
R0FDTHAyRCxPQUFBMkMsb0JBQUF5ekQsR0FBQWh6RCxRQUFBLFNBQUE1QixHQUNBZCxLQUFBaXlG
LE9BQUFueEYsRUFBQTQwRCxFQUFBNTBELEtBQ09kLE1Ba0VQLFFBQUFreUYsR0FBQWo5RCxHQUNB
LE1BQUFBLEdBQUFrOUQsU0FDQXA3QyxRQUFBVSxPQUFBLEdBQUE3MUMsV0FBQSxzQkFFQXF6QixF
QUFBazlELFVBQUEsR0FHQSxRQUFBQyxHQUFBQyxHQUNBLFVBQUF0N0MsU0FBQSxTQUFBUyxFQUFB
QyxHQUNBNDZDLEVBQUFDLE9BQUEsV0FDQTk2QyxFQUFBNjZDLEVBQUE3ckMsU0FFQTZyQyxFQUFB
RSxRQUFBLFdBQ0E5NkMsRUFBQTQ2QyxFQUFBNXhGLFVBS0EsUUFBQSt4RixHQUFBQyxHQUNBLEdB
QUFKLEdBQUEsR0FBQUssV0FFQSxPQURBTCxHQUFBTSxrQkFBQUYsR0FDQUwsRUFBQUMsR0FHQSxR
QUFBTyxHQUFBSCxHQUNBLEdBQUFKLEdBQUEsR0FBQUssV0FFQSxPQURBTCxHQUFBUSxXQUFBSixH
QUNBTCxFQUFBQyxHQUdBLFFBQUFTLEtBb0ZBLE1BbkZBOXlGLE1BQUFteUYsVUFBQSxFQUVBbnlG
LEtBQUEreUYsVUFBQSxTQUFBOTlELEdBRUEsR0FEQWoxQixLQUFBZ3pGLFVBQUEvOUQsRUFDQSxn
QkFBQUEsR0FDQWoxQixLQUFBaXpGLFVBQUFoK0QsTUFDTyxJQUFBNjhELEVBQUFXLE1BQUFTLEtB
QUEzekYsVUFBQTR6RixjQUFBbCtELEdBQ1BqMUIsS0FBQW96RixVQUFBbitELE1BQ08sSUFBQTY4
RCxFQUFBdUIsVUFBQUMsU0FBQS96RixVQUFBNHpGLGNBQUFsK0QsR0FDUGoxQixLQUFBdXpGLGNB
QUF0K0QsTUFDTyxJQUFBNjhELEVBQUEwQixjQUFBQyxnQkFBQWwwRixVQUFBNHpGLGNBQUFsK0Qs
R0FDUGoxQixLQUFBaXpGLFVBQUFoK0QsRUFBQTV1QixlQUNPLElBQUE0dUIsR0FFQSxJQUFBNjhE
LEVBQUE0QixjQUFBQyxZQUFBcDBGLFVBQUE0ekYsY0FBQWwrRCxHQUlQLFNBQUF0MEIsT0FBQSxp
Q0FMQVgsTUFBQWl6RixVQUFBLEVBUUFqekYsTUFBQTAxRCxRQUFBMzVDLElBQUEsa0JBQ0EsZ0JB
QUFrWixHQUNBajFCLEtBQUEwMUQsUUFBQXo1QyxJQUFBLDJDQUNTamMsS0FBQW96RixXQUFBcHpG
LEtBQUFvekYsVUFBQXpwRixLQUNUM0osS0FBQTAxRCxRQUFBejVDLElBQUEsZUFBQWpjLEtBQUFv
ekYsVUFBQXpwRixNQUNTbW9GLEVBQUEwQixjQUFBQyxnQkFBQWwwRixVQUFBNHpGLGNBQUFsK0Qs
SUFDVGoxQixLQUFBMDFELFFBQUF6NUMsSUFBQSxvRUFLQTYxRSxFQUFBVyxNQUNBenlGLEtBQUF5
eUYsS0FBQSxXQUNBLEdBQUFtQixHQUFBMUIsRUFBQWx5RixLQUNBLElBQUE0ekYsRUFDQSxNQUFB
QSxFQUdBLElBQUE1ekYsS0FBQW96RixVQUNBLE1BQUFyOEMsU0FBQVMsUUFBQXgzQyxLQUFBb3pG
LFVBQ1MsSUFBQXB6RixLQUFBdXpGLGNBQ1QsU0FBQTV5RixPQUFBLHVDQUVBLE9BQUFvMkMsU0FB
QVMsUUFBQSxHQUFBMDdDLE9BQUFsekYsS0FBQWl6RixjQUlBanpGLEtBQUEwekYsWUFBQSxXQUNB
LE1BQUExekYsTUFBQXl5RixPQUFBaDhDLEtBQUErN0MsSUFHQXh5RixLQUFBbVAsS0FBQSxXQUNB
LEdBQUF5a0YsR0FBQTFCLEVBQUFseUYsS0FDQSxJQUFBNHpGLEVBQ0EsTUFBQUEsRUFHQSxJQUFB
NXpGLEtBQUFvekYsVUFDQSxNQUFBUixHQUFBNXlGLEtBQUFvekYsVUFDUyxJQUFBcHpGLEtBQUF1
ekYsY0FDVCxTQUFBNXlGLE9BQUEsdUNBRUEsT0FBQW8yQyxTQUFBUyxRQUFBeDNDLEtBQUFpekYs
YUFJQWp6RixLQUFBbVAsS0FBQSxXQUNBLEdBQUF5a0YsR0FBQTFCLEVBQUFseUYsS0FDQSxPQUFB
NHpGLEtBQUE3OEMsUUFBQVMsUUFBQXgzQyxLQUFBaXpGLFlBSUFuQixFQUFBdUIsV0FDQXJ6RixL
QUFBcXpGLFNBQUEsV0FDQSxNQUFBcnpGLE1BQUFtUCxPQUFBc25DLEtBQUFvOUMsS0FJQTd6RixL
QUFBOHpGLEtBQUEsV0FDQSxNQUFBOXpGLE1BQUFtUCxPQUFBc25DLEtBQUFwSixLQUFBMG1ELFFB
R0EvekYsS0FNQSxRQUFBZzBGLEdBQUFub0YsR0FDQSxHQUFBb29GLEdBQUFwb0YsRUFBQTJwQixh
QUNBLE9BQUEwK0QsR0FBQXZvRSxRQUFBc29FLFFBQUFwb0YsRUFHQSxRQUFBc29GLEdBQUFsMEQs
RUFBQS9DLEdBQ0FBLE9BQ0EsSUFBQWpJLEdBQUFpSSxFQUFBakksSUFDQSxJQUFBay9ELEVBQUE1
MEYsVUFBQTR6RixjQUFBbHpELEdBQUEsQ0FDQSxHQUFBQSxFQUFBa3lELFNBQ0EsU0FBQXZ3RixX
QUFBLGVBRUE1QixNQUFBaXBDLElBQUFoSixFQUFBZ0osSUFDQWpwQyxLQUFBbzBGLFlBQUFuMEQs
RUFBQW0wRCxZQUNBbDNELEVBQUF3NEIsVUFDQTExRCxLQUFBMDFELFFBQUEsR0FBQXM4QixHQUFB
L3hELEVBQUF5MUIsVUFFQTExRCxLQUFBNkwsT0FBQW8wQixFQUFBcDBCLE9BQ0E3TCxLQUFBZzJF
LEtBQUEvMUMsRUFBQSsxQyxLQUNBL2dELElBQ0FBLEVBQUFnTCxFQUFBK3lELFVBQ0EveUQsRUFB
QWt5RCxVQUFBLE9BR0FueUYsTUFBQWlwQyxJQUFBaEosQ0FXQSxJQVJBamdDLEtBQUFvMEYsWUFB
QWwzRCxFQUFBazNELGFBQUFwMEYsS0FBQW8wRixhQUFBLFFBQ0FsM0QsRUFBQXc0QixTQUFBMTFE
LEtBQUEwMUQsVUFDQTExRCxLQUFBMDFELFFBQUEsR0FBQXM4QixHQUFBOTBELEVBQUF3NEIsVUFF
QTExRCxLQUFBNkwsT0FBQW1vRixFQUFBOTJELEVBQUFyeEIsUUFBQTdMLEtBQUE2TCxRQUFBLE9B
Q0E3TCxLQUFBZzJFLEtBQUE5NEMsRUFBQTg0QyxNQUFBaDJFLEtBQUFnMkUsTUFBQSxLQUNBaDJF
LEtBQUFxMEYsU0FBQSxNQUVBLFFBQUFyMEYsS0FBQTZMLFFBQUEsU0FBQTdMLEtBQUE2TCxTQUFB
b3BCLEVBQ0EsU0FBQXJ6QixXQUFBLDRDQUVBNUIsTUFBQSt5RixVQUFBOTlELEdBT0EsUUFBQTQr
RCxHQUFBNStELEdBQ0EsR0FBQWtnQyxHQUFBLEdBQUFtK0IsU0FTQSxPQVJBcitELEdBQUEwZCxP
QUFBbHdDLE1BQUEsS0FBQUMsUUFBQSxTQUFBNHhGLEdBQ0EsR0FBQUEsRUFBQSxDQUNBLEdBQUE3
eEYsR0FBQTZ4RixFQUFBN3hGLE1BQUEsS0FDQTNCLEVBQUEyQixFQUFBb3ZGLFFBQUFoeEYsUUFB
QSxXQUNBaVEsRUFBQXJPLEVBQUFGLEtBQUEsS0FBQTFCLFFBQUEsVUFDQXMwRCxHQUFBODhCLE9B
QUFzQyxtQkFBQXp6RixHQUFBeXpGLG1CQUFBempGLE9BR0Fxa0QsRUFHQSxRQUFBTyxHQUFBOCtC
LEdBQ0EsR0FBQUMsR0FBQSxHQUFBekMsR0FDQTV4QyxHQUFBbzBDLEVBQUFFLHlCQUFBLElBQUEv
aEQsT0FBQWx3QyxNQUFBLEtBT0EsT0FOQTI5QyxHQUFBMTlDLFFBQUEsU0FBQWl5RixHQUNBLEdB
QUFseUYsR0FBQWt5RixFQUFBaGlELE9BQUFsd0MsTUFBQSxLQUNBYyxFQUFBZCxFQUFBb3ZGLFFB
QUFsL0MsT0FDQTdoQyxFQUFBck8sRUFBQUYsS0FBQSxLQUFBb3dDLE1BQ0E4aEQsR0FBQXhDLE9B
QUExdUYsRUFBQXVOLEtBRUEyakYsRUFLQSxRQUFBRyxHQUFBQyxFQUFBMzNELEdBQ0FBLElBQ0FB
LE1BR0FsOUIsS0FBQTJKLEtBQUEsVUFDQTNKLEtBQUE4MEYsT0FBQTUzRCxFQUFBNDNELE9BQ0E5
MEYsS0FBQSswRixHQUFBLzBGLEtBQUE4MEYsUUFBQSxLQUFBOTBGLEtBQUE4MEYsT0FBQSxJQUNB
OTBGLEtBQUFnMUYsV0FBQTkzRCxFQUFBODNELFdBQ0FoMUYsS0FBQTAxRCxRQUFBeDRCLEVBQUF3
NEIsa0JBQUFzOEIsR0FBQTkwRCxFQUFBdzRCLFFBQUEsR0FBQXM4QixHQUFBOTBELEVBQUF3NEIs
U0FDQTExRCxLQUFBaXBDLElBQUEvTCxFQUFBK0wsS0FBQSxHQUNBanBDLEtBQUEreUYsVUFBQThC
LEdBOVVBLElBQUF2K0UsRUFBQTIrRSxNQUFBLENBSUEsR0FBQW5ELElBQ0EwQixhQUFBLG1CQUFB
bDlFLEdBQ0F5N0UsU0FBQSxVQUFBejdFLElBQUEsWUFBQTZlLFFBQ0FzOUQsS0FBQSxjQUFBbjhF
LElBQUEsUUFBQUEsSUFBQSxXQUNBLElBRUEsTUFEQSxJQUFBNDhFLE9BQ0EsRUFDTyxNQUFBNXlG
LEdBQ1AsYUFHQSt5RixTQUFBLFlBQUEvOEUsR0FDQW85RSxZQUFBLGVBQUFwOUUsR0FxREEwN0Us
R0FBQXp5RixVQUFBMHlGLE9BQUEsU0FBQW54RixFQUFBZ1EsR0FDQWhRLEVBQUEyd0YsRUFBQTN3
RixHQUNBZ1EsRUFBQTRnRixFQUFBNWdGLEVBQ0EsSUFBQTJsRCxHQUFBejJELEtBQUFxQyxJQUFB
dkIsRUFDQTIxRCxLQUNBQSxLQUNBejJELEtBQUFxQyxJQUFBdkIsR0FBQTIxRCxHQUVBQSxFQUFB
aHhELEtBQUFxTCxJQUdBa2hGLEVBQUF6eUYsVUFBQSxnQkFBQXVCLFNBQ0FkLE1BQUFxQyxJQUFB
b3ZGLEVBQUEzd0YsS0FHQWt4RixFQUFBenlGLFVBQUF3YyxJQUFBLFNBQUFqYixHQUNBLEdBQUEr
bEQsR0FBQTdtRCxLQUFBcUMsSUFBQW92RixFQUFBM3dGLEdBQ0EsT0FBQStsRCxLQUFBLFNBR0Ft
ckMsRUFBQXp5RixVQUFBMjFGLE9BQUEsU0FBQXAwRixHQUNBLE1BQUFkLE1BQUFxQyxJQUFBb3ZG
LEVBQUEzd0YsU0FHQWt4RixFQUFBenlGLFVBQUF5YyxJQUFBLFNBQUFsYixHQUNBLE1BQUFkLE1B
QUFxQyxJQUFBN0MsZUFBQWl5RixFQUFBM3dGLEtBR0FreEYsRUFBQXp5RixVQUFBMGMsSUFBQSxT
QUFBbmIsRUFBQWdRLEdBQ0E5USxLQUFBcUMsSUFBQW92RixFQUFBM3dGLEtBQUE0d0YsRUFBQTVn
RixLQUdBa2hGLEVBQUF6eUYsVUFBQW1ELFFBQUEsU0FBQStGLEVBQUEwc0YsR0FDQTcxRixPQUFB
MkMsb0JBQUFqQyxLQUFBcUMsS0FBQUssUUFBQSxTQUFBNUIsR0FDQWQsS0FBQXFDLElBQUF2QixH
QUFBNEIsUUFBQSxTQUFBb08sR0FDQXJJLEVBQUF4SixLQUFBazJGLEVBQUFya0YsRUFBQWhRLEVB
QUFkLE9BQ09BLE9BQ0ZBLE9BR0xneUYsRUFBQXp5RixVQUFBcUQsS0FBQSxXQUNBLEdBQUFndkYs
S0FFQSxPQURBNXhGLE1BQUEwQyxRQUFBLFNBQUFvTyxFQUFBaFEsR0FBd0M4d0YsRUFBQW5zRixL
QUFBM0UsS0FDeEM2d0YsRUFBQUMsSUFHQUksRUFBQXp5RixVQUFBc25ELE9BQUEsV0FDQSxHQUFB
K3FDLEtBRUEsT0FEQTV4RixNQUFBMEMsUUFBQSxTQUFBb08sR0FBa0M4Z0YsRUFBQW5zRixLQUFB
cUwsS0FDbEM2Z0YsRUFBQUMsSUFHQUksRUFBQXp5RixVQUFBMHFDLFFBQUEsV0FDQSxHQUFBMm5E
LEtBRUEsT0FEQTV4RixNQUFBMEMsUUFBQSxTQUFBb08sRUFBQWhRLEdBQXdDOHdGLEVBQUFuc0Ys
TUFBQTNFLEVBQUFnUSxNQUN4QzZnRixFQUFBQyxJQUdBRSxFQUFBQyxXQUNBQyxFQUFBenlGLFVB
QUE0MUIsT0FBQTZVLFVBQUFnb0QsRUFBQXp5RixVQUFBMHFDLFFBeUhBLElBQUFpcUQsSUFBQSw2
Q0EyQ0FDLEdBQUE1MEYsVUFBQTYxRixNQUFBLFdBQ0EsVUFBQWpCLEdBQUFuMEYsT0E0QkE4eUYs
RUFBQTd6RixLQUFBazFGLEVBQUE1MEYsV0FnQkF1ekYsRUFBQTd6RixLQUFBMjFGLEVBQUFyMUYs
V0FFQXExRixFQUFBcjFGLFVBQUE2MUYsTUFBQSxXQUNBLFVBQUFSLEdBQUE1MEYsS0FBQWd6RixX
QUNBOEIsT0FBQTkwRixLQUFBODBGLE9BQ0FFLFdBQUFoMUYsS0FBQWcxRixXQUNBdC9CLFFBQUEs
R0FBQXM4QixHQUFBaHlGLEtBQUEwMUQsU0FDQXpzQixJQUFBanBDLEtBQUFpcEMsT0FJQTJyRCxF
QUFBbjBGLE1BQUEsV0FDQSxHQUFBNDBGLEdBQUEsR0FBQVQsR0FBQSxNQUF1Q0UsT0FBQSxFQUFB
RSxXQUFBLElBRXZDLE9BREFLLEdBQUExckYsS0FBQSxRQUNBMHJGLEVBR0EsSUFBQUMsSUFBQSxv
QkFFQVYsR0FBQVcsU0FBQSxTQUFBdHNELEVBQUE2ckQsR0FDQSxHQUFBUSxFQUFBM3BFLFFBQUFt
cEUsUUFDQSxTQUFBekQsWUFBQSxzQkFHQSxXQUFBdUQsR0FBQSxNQUErQkUsU0FBQXAvQixTQUEw
QjVPLFNBQUE3ZCxNQUd6RDN5QixFQUFBMDdFLFVBQ0ExN0UsRUFBQTY5RSxVQUNBNzlFLEVBQUFz
K0UsV0FFQXQrRSxFQUFBMitFLE1BQUEsU0FBQWgxRCxFQUFBdTFELEdBQ0EsVUFBQXorQyxTQUFB
LFNBQUFTLEVBQUFDLEdBVUEsUUFBQWcrQyxLQUNBLHFCQUFBakIsR0FDQUEsRUFBQWlCLFlBSUEs
bUJBQUFqbEYsS0FBQWdrRixFQUFBRSx5QkFDQUYsRUFBQWtCLGtCQUFBLGlCQURBLE9BZkEsR0FB
QUMsRUFFQUEsR0FEQXhCLEVBQUE1MEYsVUFBQTR6RixjQUFBbHpELEtBQUF1MUQsRUFDQXYxRCxF
QUVBLEdBQUFrMEQsR0FBQWwwRCxFQUFBdTFELEVBR0EsSUFBQWhCLEdBQUEsR0FBQW9CLGVBZUFw
QixHQUFBbEMsT0FBQSxXQUNBLEdBQUFwMUQsSUFDQTQzRCxPQUFBTixFQUFBTSxPQUNBRSxXQUFB
UixFQUFBUSxXQUNBdC9CLFVBQUE4K0IsR0FDQXZyRCxJQUFBd3NELEtBRUF4Z0UsRUFBQSxZQUFB
dS9ELEtBQUFhLFNBQUFiLEVBQUFxQixZQUNBcitDLEdBQUEsR0FBQW85QyxHQUFBMy9ELEVBQUFp
SSxLQUdBczNELEVBQUFqQyxRQUFBLFdBQ0E5NkMsRUFBQSxHQUFBNzFDLFdBQUEsNEJBR0E0eUYs
RUFBQXNCLFVBQUEsV0FDQXIrQyxFQUFBLEdBQUE3MUMsV0FBQSw0QkFHQTR5RixFQUFBajlCLEtB
QUFvK0IsRUFBQTlwRixPQUFBOHBGLEVBQUExc0QsS0FBQSxHQUVBLFlBQUEwc0QsRUFBQXZCLGNB
Q0FJLEVBQUF1QixpQkFBQSxHQUdBLGdCQUFBdkIsSUFBQTFDLEVBQUFXLE9BQ0ErQixFQUFBd0Is
YUFBQSxRQUdBTCxFQUFBamdDLFFBQUFoekQsUUFBQSxTQUFBb08sRUFBQWhRLEdBQ0EwekYsRUFB
QXlCLGlCQUFBbjFGLEVBQUFnUSxLQUdBMGpGLEVBQUEwQixLQUFBLG1CQUFBUCxHQUFBM0MsVUFB
QSxLQUFBMkMsRUFBQTNDLGNBR0ExOEUsRUFBQTIrRSxNQUFBa0IsVUFBQSxJQUNDLG1CQUFBNy9F
LFdBQUF0VyxPak5vNXRCRCxJQUVDLElBQUssSUFFQSxTQUFTbEIsRUFBUUQsRUFBU0gsR2tOOXp1
QmhDLFlBWUEsU0FBQTAzRixHQUFBam5GLEdBQ0EsVUFBQUEsR0FBQXRPLFFBQUF3MUYsRUFBQSxP
QVdBLFFBQUFDLEdBQUFDLEVBQUFDLEdBQ0F4MkYsS0FBQWt3QixLQUFBcW1FLEVBQ0F2MkYsS0FB
QTBLLFFBQUE4ckYsRUFDQXgyRixLQUFBcVYsTUFBQSxFQVNBLFFBQUFvaEYsR0FBQW5xQixFQUFB
dnFDLEVBQUFqaEMsR0FDQSxHQUFBb3ZCLEdBQUFvOEMsRUFBQXA4QyxLQUNBeGxCLEVBQUE0aEUs
RUFBQTVoRSxPQUVBd2xCLEdBQUFqeEIsS0FBQXlMLEVBQUFxM0IsRUFBQXVxQyxFQUFBajNELFNB
ZUEsUUFBQXFoRixHQUFBN3hGLEVBQUE4eEYsRUFBQUgsR0FDQSxTQUFBM3hGLEVBQ0EsTUFBQUEs
RUFFQSxJQUFBMGtDLEdBQUErc0QsRUFBQWh1RixVQUFBcXVGLEVBQUFILEVBQ0Fqc0QsR0FBQTFs
QyxFQUFBNHhGLEVBQUFsdEQsR0FDQStzRCxFQUFBM3FGLFFBQUE0OUIsR0FZQSxRQUFBcXRELEdB
QUFDLEVBQUFDLEVBQUFDLEVBQUFDLEdBQ0FoM0YsS0FBQXdtRCxPQUFBcXdDLEVBQ0E3MkYsS0FB
QTgyRixZQUNBOTJGLEtBQUFrd0IsS0FBQTZtRSxFQUNBLzJGLEtBQUEwSyxRQUFBc3NGLEVBQ0Fo
M0YsS0FBQXFWLE1BQUEsRUFXQSxRQUFBNGhGLEdBQUEzcUIsRUFBQXZxQyxFQUFBbTFELEdBQ0Es
R0FBQTF3QyxHQUFBOGxCLEVBQUE5bEIsT0FDQXN3QyxFQUFBeHFCLEVBQUF3cUIsVUFDQTVtRSxF
QUFBbzhDLEVBQUFwOEMsS0FDQXhsQixFQUFBNGhFLEVBQUE1aEUsUUFHQXlzRixFQUFBam5FLEVB
QUFqeEIsS0FBQXlMLEVBQUFxM0IsRUFBQXVxQyxFQUFBajNELFFBQ0F5QixPQUFBd1IsUUFBQTZ1
RSxHQUNBQyxFQUFBRCxFQUFBM3dDLEVBQUEwd0MsRUFBQWwyRixFQUFBMkcscUJBQ0csTUFBQXd2
RixJQUNIMWlGLEVBQUFpQixlQUFBeWhGLEtBQ0FBLEVBQUExaUYsRUFBQXlDLG1CQUFBaWdGLEVB
R0FMLElBQUFLLEVBQUE1ekYsS0FBQXcrQixLQUFBeCtCLE1BQUE0ekYsRUFBQTV6RixJQUFBLEdB
QUE2eUYsRUFBQWUsRUFBQTV6RixLQUFBLEtBQUEyekYsSUFFQTF3QyxFQUFBL2dELEtBQUEweEYs
SUFJQSxRQUFBQyxHQUFBdnlGLEVBQUF1d0MsRUFBQTlmLEVBQUFwRixFQUFBeGxCLEdBQ0EsR0FB
QTJzRixHQUFBLEVBQ0EsT0FBQS9oRSxJQUNBK2hFLEVBQUFqQixFQUFBOWdFLEdBQUEsSUFFQSxJ
QUFBaVUsR0FBQXF0RCxFQUFBdHVGLFVBQUE4c0MsRUFBQWlpRCxFQUFBbm5FLEVBQUF4bEIsRUFD
QTYvQixHQUFBMWxDLEVBQUFveUYsRUFBQTF0RCxHQUNBcXRELEVBQUFqckYsUUFBQTQ5QixHQWdC
QSxRQUFBK3RELEdBQUF6eUYsRUFBQXFyQixFQUFBeGxCLEdBQ0EsU0FBQTdGLEVBQ0EsTUFBQUEs
RUFFQSxJQUFBMmhELEtBRUEsT0FEQTR3QyxHQUFBdnlGLEVBQUEyaEQsRUFBQSxLQUFBdDJCLEVB
QUF4bEIsR0FDQTg3QyxFQUdBLFFBQUErd0MsR0FBQWh1RCxFQUFBeEgsRUFBQWpoQyxHQUNBLFlB
WUEsUUFBQTAyRixHQUFBM3lGLEVBQUE2RixHQUNBLE1BQUE2L0IsR0FBQTFsQyxFQUFBMHlGLEVB
QUEsTUFTQSxRQUFBamlGLEdBQUF6USxHQUNBLEdBQUEyaEQsS0FFQSxPQURBNHdDLEdBQUF2eUYs
RUFBQTJoRCxFQUFBLEtBQUF4bEQsRUFBQTJHLHFCQUNBNitDLEVBdEtBLEdBQUExN0MsR0FBQXBN
LEVBQUEsS0FDQStWLEVBQUEvVixFQUFBLElBRUFzQyxFQUFBdEMsRUFBQSxHQUNBNnJDLEVBQUE3
ckMsRUFBQSxLQUVBZ3VFLEVBQUE1aEUsRUFBQTRoRSxrQkFDQWgrRCxFQUFBNUQsRUFBQTRELG1C
QUVBMm5GLEVBQUEsTUFrQkFDLEdBQUEvMkYsVUFBQW1NLFdBQUEsV0FDQTFMLEtBQUFrd0IsS0FB
QSxLQUNBbHdCLEtBQUEwSyxRQUFBLEtBQ0ExSyxLQUFBcVYsTUFBQSxHQUVBdkssRUFBQWlCLGFB
QUF1cUYsRUFBQTVwQixHQThDQWtxQixFQUFBcjNGLFVBQUFtTSxXQUFBLFdBQ0ExTCxLQUFBd21E
LE9BQUEsS0FDQXhtRCxLQUFBODJGLFVBQUEsS0FDQTkyRixLQUFBa3dCLEtBQUEsS0FDQWx3QixL
QUFBMEssUUFBQSxLQUNBMUssS0FBQXFWLE1BQUEsR0FFQXZLLEVBQUFpQixhQUFBNnFGLEVBQUFs
b0YsRUFvRkEsSUFBQTZGLElBQ0E3UixRQUFBZzBGLEVBQ0FyMEYsSUFBQWkxRixFQUNBRiwrQkFD
QS9oRixNQUFBbWlGLEVBQ0FsaUYsVUFHQXhXLEdBQUFELFFBQUEwVixHbE44MHVCTSxTQUFTelYs
RUFBUUQsRUFBU0gsR21Oamd2QmhDLFlBRUEsSUFBQStWLEdBQUEvVixFQUFBLElBT0ErNEYsRUFB
QWhqRixFQUFBSyxjQVdBTixHQUNBM1UsRUFBQTQzRixFQUFBLEtBQ0FDLEtBQUFELEVBQUEsUUFD
QUUsUUFBQUYsRUFBQSxXQUNBbjBDLEtBQUFtMEMsRUFBQSxRQUNBRyxRQUFBSCxFQUFBLFdBQ0FJ
LE1BQUFKLEVBQUEsU0FDQUssTUFBQUwsRUFBQSxTQUNBMzNGLEVBQUEyM0YsRUFBQSxLQUNBajFC
LEtBQUFpMUIsRUFBQSxRQUNBTSxJQUFBTixFQUFBLE9BQ0FPLElBQUFQLEVBQUEsT0FDQVEsSUFB
QVIsRUFBQSxPQUNBUyxXQUFBVCxFQUFBLGNBQ0F4aUUsS0FBQXdpRSxFQUFBLFFBQ0FoMUIsR0FB
QWcxQixFQUFBLE1BQ0ExekUsT0FBQTB6RSxFQUFBLFVBQ0FVLE9BQUFWLEVBQUEsVUFDQTV6QyxR
QUFBNHpDLEVBQUEsV0FDQW5qQyxLQUFBbWpDLEVBQUEsUUFDQXQyRixLQUFBczJGLEVBQUEsUUFD
QWwwQyxJQUFBazBDLEVBQUEsT0FDQTN6QyxTQUFBMnpDLEVBQUEsWUFDQS93RSxLQUFBK3dFLEVB
QUEsUUFDQVcsU0FBQVgsRUFBQSxZQUNBWSxHQUFBWixFQUFBLE1BQ0FhLElBQUFiLEVBQUEsT0FD
QWMsUUFBQWQsRUFBQSxXQUNBZSxJQUFBZixFQUFBLE9BQ0FnQixPQUFBaEIsRUFBQSxVQUNBN3pC
LElBQUE2ekIsRUFBQSxPQUNBaUIsR0FBQWpCLEVBQUEsTUFDQWtCLEdBQUFsQixFQUFBLE1BQ0Ft
QixHQUFBbkIsRUFBQSxNQUNBLzBCLE1BQUErMEIsRUFBQSxTQUNBb0IsU0FBQXBCLEVBQUEsWUFD
QXFCLFdBQUFyQixFQUFBLGNBQ0FzQixPQUFBdEIsRUFBQSxVQUNBdUIsT0FBQXZCLEVBQUEsVUFD
QXRpQyxLQUFBc2lDLEVBQUEsUUFDQXdCLEdBQUF4QixFQUFBLE1BQ0F5QixHQUFBekIsRUFBQSxN
QUNBMEIsR0FBQTFCLEVBQUEsTUFDQTJCLEdBQUEzQixFQUFBLE1BQ0E0QixHQUFBNUIsRUFBQSxN
QUNBNkIsR0FBQTdCLEVBQUEsTUFDQWhELEtBQUFnRCxFQUFBLFFBQ0E5QyxPQUFBOEMsRUFBQSxV
QUNBOEIsT0FBQTlCLEVBQUEsVUFDQTkwQixHQUFBODBCLEVBQUEsTUFDQXhvRixLQUFBd29GLEVB
QUEsUUFDQXA0RixFQUFBbzRGLEVBQUEsS0FDQStCLE9BQUEvQixFQUFBLFVBQ0E3MEIsSUFBQTYw
QixFQUFBLE9BQ0F4M0QsTUFBQXczRCxFQUFBLFNBQ0FnQyxJQUFBaEMsRUFBQSxPQUNBaUMsSUFB
QWpDLEVBQUEsT0FDQTUwQixPQUFBNDBCLEVBQUEsVUFDQWxoQyxNQUFBa2hDLEVBQUEsU0FDQWow
QyxPQUFBaTBDLEVBQUEsVUFDQWtDLEdBQUFsQyxFQUFBLE1BQ0EzMEIsS0FBQTIwQixFQUFBLFFB
Q0FtQyxLQUFBbkMsRUFBQSxRQUNBcDFGLElBQUFvMUYsRUFBQSxPQUNBb0MsS0FBQXBDLEVBQUEs
UUFDQXFDLEtBQUFyQyxFQUFBLFFBQ0FwMEIsU0FBQW8wQixFQUFBLFlBQ0ExMEIsS0FBQTAwQixF
QUFBLFFBQ0FzQyxNQUFBdEMsRUFBQSxTQUNBdUMsSUFBQXZDLEVBQUEsT0FDQXdDLFNBQUF4QyxF
QUFBLFlBQ0FqZ0YsT0FBQWlnRixFQUFBLFVBQ0F5QyxHQUFBekMsRUFBQSxNQUNBOXpDLFNBQUE4
ekMsRUFBQSxZQUNBN3pDLE9BQUE2ekMsRUFBQSxVQUNBMEMsT0FBQTFDLEVBQUEsVUFDQXI0RixF
QUFBcTRGLEVBQUEsS0FDQWgwQyxNQUFBZzBDLEVBQUEsU0FDQTJDLFFBQUEzQyxFQUFBLFdBQ0F0
MEIsSUFBQXMwQixFQUFBLE9BQ0E0QyxTQUFBNUMsRUFBQSxZQUNBNkMsRUFBQTdDLEVBQUEsS0FD
QThDLEdBQUE5QyxFQUFBLE1BQ0ErQyxHQUFBL0MsRUFBQSxNQUNBZ0QsS0FBQWhELEVBQUEsUUFD
QW4wRixFQUFBbTBGLEVBQUEsS0FDQWlELEtBQUFqRCxFQUFBLFFBQ0FrRCxPQUFBbEQsRUFBQSxV
QUNBbUQsUUFBQW5ELEVBQUEsV0FDQXgyRCxPQUFBdzJELEVBQUEsVUFDQW9ELE1BQUFwRCxFQUFB
LFNBQ0F2MEYsT0FBQXUwRixFQUFBLFVBQ0E3K0IsS0FBQTYrQixFQUFBLFFBQ0FxRCxPQUFBckQs
RUFBQSxVQUNBOW5DLE1BQUE4bkMsRUFBQSxTQUNBc0QsSUFBQXRELEVBQUEsT0FDQXYrQixRQUFB
dStCLEVBQUEsV0FDQXVELElBQUF2RCxFQUFBLE9BQ0F3RCxNQUFBeEQsRUFBQSxTQUNBMXpDLE1B
QUEwekMsRUFBQSxTQUNBdnpDLEdBQUF1ekMsRUFBQSxNQUNBcjBCLFNBQUFxMEIsRUFBQSxZQUNB
enpDLE1BQUF5ekMsRUFBQSxTQUNBdHpDLEdBQUFzekMsRUFBQSxNQUNBeHpDLE1BQUF3ekMsRUFB
QSxTQUNBMXRGLEtBQUEwdEYsRUFBQSxRQUNBbGlELE1BQUFraUQsRUFBQSxTQUNBL3pDLEdBQUEr
ekMsRUFBQSxNQUNBM3dELE1BQUEyd0QsRUFBQSxTQUNBeUQsRUFBQXpELEVBQUEsS0FDQTBELEdB
QUExRCxFQUFBLE1BQ0EyRCxJQUFBM0QsRUFBQSxPQUNBNEQsTUFBQTVELEVBQUEsU0FDQXowQixJ
QUFBeTBCLEVBQUEsT0FHQTZELE9BQUE3RCxFQUFBLFVBQ0F4bUIsU0FBQXdtQixFQUFBLFlBQ0E4
RCxLQUFBOUQsRUFBQSxRQUNBK0QsUUFBQS9ELEVBQUEsV0FDQWdFLEVBQUFoRSxFQUFBLEtBQ0E5
bkUsTUFBQThuRSxFQUFBLFNBQ0F2RyxLQUFBdUcsRUFBQSxRQUNBaUUsZUFBQWpFLEVBQUEsa0JB
Q0E3aEIsS0FBQTZoQixFQUFBLFFBQ0Ezc0IsS0FBQTJzQixFQUFBLFFBQ0FoZ0MsUUFBQWdnQyxF
QUFBLFdBQ0FrRSxRQUFBbEUsRUFBQSxXQUNBbUUsU0FBQW5FLEVBQUEsWUFDQW9FLGVBQUFwRSxF
QUFBLGtCQUNBcUUsS0FBQXJFLEVBQUEsUUFDQXNFLEtBQUF0RSxFQUFBLFFBQ0FweEUsSUFBQW94
RSxFQUFBLE9BQ0F0b0YsS0FBQXNvRixFQUFBLFFBQ0F1RSxNQUFBdkUsRUFBQSxTQUdBMzRGLEdB
QUFELFFBQUEyVixHbk5paHZCTSxTQUFTMVYsRUFBUUQsRUFBU0gsR29OOXF2QmhDLFlBRUEsSUFB
QXU5RixHQUFBdjlGLEVBQUEsSUFDQWdYLEVBQUF1bUYsRUFBQXZtRixlQUVBc0IsRUFBQXRZLEVB
QUEsR0FFQUksR0FBQUQsUUFBQW1ZLEVBQUF0QixJcE44cnZCQSxJQUVNLFNBQVM1VyxFQUFRRCxF
QUFTSCxHcU52c3ZCaEMsWUFFQSxJQUFBdTlGLEdBQUF2OUYsRUFBQSxJQUNBOFcsRUFBQXltRixF
QUFBem1GLFVBRUEwbUYsRUFBQXg5RixFQUFBLElBQ0FnWCxFQUFBd21GLEVBQUF4bUYsZUFFQTZp
QyxFQUFBNzVDLEVBQUEsSUFDQXNZLEVBQUF0WSxFQUFBLEdBRUFJLEdBQUFELFFBQUFtWSxFQUFB
eEIsRUFBQUUsRUFBQTZpQyxJck51dHZCQSxJQUVNLFNBQVN6NUMsRUFBUUQsR3NObnV2QnZCLFlB
SUEsU0FBQXM5RixLQUNBLE1BQUFDLEtBSEEsR0FBQUEsR0FBQSxDQU1BdDlGLEdBQUFELFFBQUFz
OUYsR3ROb3Z2Qk0sU0FBU3I5RixFQUFRRCxFQUFTSCxHdU43dnZCaEMsWUFnQkEsSUFBQTI5RixH
QUFBLFlBcUNBdjlGLEdBQUFELFFBQUF3OUYsR3ZONnd2Qk0sU0FBU3Y5RixFQUFRRCxFQUFTSCxH
d05uMHZCaEMsWUFzQkEsU0FBQW1XLEdBQUFoUSxHQUVBLE1BREE0UCxHQUFBaUIsZUFBQTdRLEdB
QUEsT0FBQVMsRUFBQSxPQUNBVCxFQXRCQSxHQUFBUyxHQUFBNUcsRUFBQSxJQUVBK1YsRUFBQS9W
LEVBQUEsR0FFQUEsR0FBQSxFQXFCQUksR0FBQUQsUUFBQWdXLEd4TmsxdkJNLFNBQVMvVixFQUFR
RCxFQUFTSCxHeU41MnZCaEMsWUFtQ0EsU0FBQTBxQyxHQUFBcGxDLEVBQUE2aEIsR0FHQSxNQUFB
N2hCLElBQUEsZ0JBQUFBLElBQUEsTUFBQUEsRUFBQVQsSUFFQXNyQixFQUFBakosT0FBQTVoQixF
QUFBVCxLQUdBc2lCLEVBQUF4ZixTQUFBLElBV0EsUUFBQWdqQyxHQUFBeGtDLEVBQUF5a0MsRUFB
QTdnQyxFQUFBOGdDLEdBQ0EsR0FBQTUvQixTQUFBOUUsRUFPQSxJQUxBLGNBQUE4RSxHQUFBLFlB
QUFBLElBRUE5RSxFQUFBLE1BR0EsT0FBQUEsR0FBQSxXQUFBOEUsR0FBQSxXQUFBQSxHQUdBLFdB
QUFBLEdBQUE5RSxFQUFBNlIsV0FBQVIsRUFLQSxNQUpBek4sR0FBQThnQyxFQUFBMWtDLEVBR0Es
S0FBQXlrQyxFQUFBRSxFQUFBSixFQUFBdmtDLEVBQUEsR0FBQXlrQyxHQUNBLENBR0EsSUFBQXZI
LEdBQ0EwSCxFQUNBQyxFQUFBLEVBQ0FDLEVBQUEsS0FBQUwsRUFBQUUsRUFBQUYsRUFBQU0sQ0FF
QSxJQUFBOXlCLE1BQUF3UixRQUFBempCLEdBQ0EsT0FBQXhGLEdBQUEsRUFBbUJBLEVBQUF3RixF
QUFBdkQsT0FBcUJqQyxJQUN4QzBpQyxFQUFBbDlCLEVBQUF4RixHQUNBb3FDLEVBQUFFLEVBQUFQ
LEVBQUFySCxFQUFBMWlDLEdBQ0FxcUMsR0FBQUwsRUFBQXRILEVBQUEwSCxFQUFBaGhDLEVBQUE4
Z0MsT0FFRyxDQUNILEdBQUFNLEdBQUFDLEVBQUFqbEMsRUFDQSxJQUFBZ2xDLEVBQUEsQ0FDQSxH
QUNBRSxHQURBQyxFQUFBSCxFQUFBNXFDLEtBQUE0RixFQUVBLElBQUFnbEMsSUFBQWhsQyxFQUFB
b2xDLFFBRUEsSUFEQSxHQUFBQyxHQUFBLElBQ0FILEVBQUFDLEVBQUFsRSxRQUFBcUUsTUFDQXBJ
LEVBQUFnSSxFQUFBajVCLE1BQ0EyNEIsRUFBQUUsRUFBQVAsRUFBQXJILEVBQUFtSSxLQUNBUixH
QUFBTCxFQUFBdEgsRUFBQTBILEVBQUFoaEMsRUFBQThnQyxPQWVBLFFBQUFRLEVBQUFDLEVBQUFs
RSxRQUFBcUUsTUFBQSxDQUNBLEdBQUFDLEdBQUFMLEVBQUFqNUIsS0FDQXM1QixLQUNBckksRUFB
QXFJLEVBQUEsR0FDQVgsRUFBQUUsRUFBQTlhLEVBQUFqSixPQUFBd2tCLEVBQUEsSUFBQVIsRUFB
QVIsRUFBQXJILEVBQUEsR0FDQTJILEdBQUFMLEVBQUF0SCxFQUFBMEgsRUFBQWhoQyxFQUFBOGdD
LFNBSUssZUFBQTUvQixFQUFBO0FBQ0wsR0FBQTBnQyxHQUFBLEdBYUFDLEVBQUF0b0MsT0FBQTZD
LEVBQ29PUyxHQUFBLHlCQUFBZ2xDLEVBQUEscUJBQStHaHJDLE9BQUFzRCxLQUFBaUMsR0FBQXRD
LEtBQUEsVUFBeUMrbkMsRUFBQUQsSUFJNVgsTUFBQVgsR0FtQkEsUUFBQWEsR0FBQTFsQyxFQUFB
NEQsRUFBQThnQyxHQUNBLGFBQUExa0MsRUFDQSxFQUdBd2tDLEVBQUF4a0MsRUFBQSxHQUFBNEQs
RUFBQThnQyxHQS9KQSxHQUFBamtDLEdBQUE1RyxFQUFBLElBR0F3WCxHQURBeFgsRUFBQSxJQUNB
QSxFQUFBLEtBRUFvckMsRUFBQXByQyxFQUFBLEtBRUFtd0IsR0FEQW53QixFQUFBLEdBQ0FBLEVB
QUEsTUFHQThxQyxHQUZBOXFDLEVBQUEsR0FFQSxLQUNBa3JDLEVBQUEsR0F1SkE5cUMsR0FBQUQs
UUFBQTByQyxHek40M3ZCTSxTQUFTenJDLEVBQVFELEVBQVNILEcwTjFpd0JoQyxZQVlBLFNBQUFt
b0IsR0FBQUMsR0FBc0MsTUFBQUEsTUFBQUMsV0FBQUQsR0FBdUNFLFFBQUFGLEdBa0I3RSxRQUFB
SSxLQUNBLE9BQUFxckIsR0FBQWx4QyxVQUFBQyxPQUFBZzdGLEVBQUF4bEYsTUFBQXk3QixHQUFB
QyxFQUFBLEVBQXdFQSxFQUFBRCxFQUFhQyxJQUNyRjhwRCxFQUFBOXBELEdBQUFueEMsVUFBQW14
QyxFQUdBLGlCQUFBbnJCLEdBQ0EsZ0JBQUE0MUIsRUFBQUMsRUFBQUMsR0FDQSxHQUFBL1IsR0FB
QS9qQixFQUFBNDFCLEVBQUFDLEVBQUFDLEdBQ0FvL0MsRUFBQW54RCxFQUFBMkQsU0FDQXl0RCxL
QUVBQyxHQUNBanhELFNBQUFKLEVBQUFJLFNBQ0F1RCxTQUFBLFNBQUF5TyxHQUNBLE1BQUErK0Ms
R0FBQS8rQyxJQVFBLE9BTEFnL0MsR0FBQUYsRUFBQWo2RixJQUFBLFNBQUFxNkYsR0FDQSxNQUFB
QSxHQUFBRCxLQUVBRixFQUFBeDBFLEVBQUEsUUFBQWhvQixNQUFBVyxPQUFBODdGLEdBQUFweEQs
RUFBQTJELFVBRUF0QixLQUF3QnJDLEdBQ3hCMkQsU0FBQXd0RCxNQW5EQTE5RixFQUFBa29CLFlB
QUEsQ0FFQSxJQUFBMG1CLEdBQUFudUMsT0FBQXdDLFFBQUEsU0FBQW1CLEdBQW1ELE9BQUE1RCxH
QUFBLEVBQWdCQSxFQUFBZ0MsVUFBQUMsT0FBc0JqQyxJQUFBLENBQU8sR0FBQTZELEdBQUE3QixV
QUFBaEMsRUFBMkIsUUFBQWtFLEtBQUFMLEdBQTBCNUQsT0FBQUMsVUFBQUMsZUFBQVAsS0FBQWlF
LEVBQUFLLEtBQXlETixFQUFBTSxHQUFBTCxFQUFBSyxJQUFpQyxNQUFBTixHQUUvT3BFLEdBQUEs
UUFBQXFvQixDQUVBLElBQUFZLEdBQUFwcEIsRUFBQSxJQUVBcXBCLEVBQUFsQixFQUFBaUIsSTFO
K2x3Qk0sU0FBU2hwQixFQUFRRCxHMk56bXdCdkIsWUFJQSxTQUFBODlGLEdBQUFDLEVBQUE3dEQs
R0FDQSxrQkFDQSxNQUFBQSxHQUFBNnRELEVBQUE3OEYsTUFBQVcsT0FBQVcsYUF5QkEsUUFBQThs
QixHQUFBMDFFLEVBQUE5dEQsR0FDQSxxQkFBQTh0RCxHQUNBLE1BQUFGLEdBQUFFLEVBQUE5dEQs
RUFHQSxvQkFBQTh0RCxJQUFBLE9BQUFBLEVBQ0EsU0FBQWw4RixPQUFBLGlGQUFBazhGLEVBQUEs
YUFBQUEsSUFBQSw2RkFLQSxRQUZBajZGLEdBQUF0RCxPQUFBc0QsS0FBQWk2RixHQUNBQyxLQUNB
ejlGLEVBQUEsRUFBaUJBLEVBQUF1RCxFQUFBdEIsT0FBaUJqQyxJQUFBLENBQ2xDLEdBQUFrRSxH
QUFBWCxFQUFBdkQsR0FDQXU5RixFQUFBQyxFQUFBdDVGLEVBQ0EsbUJBQUFxNUYsS0FDQUUsRUFB
QXY1RixHQUFBbzVGLEVBQUFDLEVBQUE3dEQsSUFHQSxNQUFBK3RELEdBL0NBaitGLEVBQUFrb0Is
WUFBQSxFQUNBbG9CLEVBQUEsUUFBQXNvQixHM044cHdCTSxTQUFTcm9CLEVBQVFELEVBQVNILEc0
Tmpxd0JoQyxZQWVBLFNBQUFtb0IsR0FBQUMsR0FBc0MsTUFBQUEsTUFBQUMsV0FBQUQsR0FBdUNF
LFFBQUFGLEdBRTdFLFFBQUFpMkUsR0FBQXg1RixFQUFBaTZDLEdBQ0EsR0FBQXcvQyxHQUFBeC9D
LEtBQUE3ekMsS0FDQXN6RixFQUFBRCxHQUFBLElBQUFBLEVBQUEzMkYsV0FBQSxnQkFFQSx1QkFB
QTQyRixFQUFBLGNBQUExNUYsRUFBQSxpTEE0QkEsUUFBQTI1RixHQUFBQyxHQUNBNzlGLE9BQUFz
RCxLQUFBdTZGLEdBQUF6NkYsUUFBQSxTQUFBYSxHQUNBLEdBQUEwNUMsR0FBQWtnRCxFQUFBNTVG
LEdBQ0ErOEMsRUFBQXJELEVBQUF2OEMsUUFBMkNpSixLQUFBMmQsRUFBQXUyQixZQUFBQyxNQUUz
Qyx1QkFBQXdDLEdBQ0EsU0FBQTMvQyxPQUFBLFlBQUE0QyxFQUFBLGdSQUdBLElBQUFvRyxHQUFB
LGdDQUFBeEQsS0FBQUMsU0FBQUMsU0FBQSxJQUFBMmYsVUFBQSxHQUFBdmpCLE1BQUEsSUFBQUYs
S0FBQSxJQUNBLElBQWdELG1CQUFoRDA2QyxHQUFBdjhDLFFBQW1DaUosU0FDbkMsU0FBQWhKLE9B
QUEsWUFBQTRDLEVBQUEsZ0ZBQUErakIsRUFBQXUyQixZQUFBQyxLQUFBLHFUQXFCQSxRQUFBMTJC
LEdBQUErMUUsR0FHQSxPQUZBQyxHQUFBOTlGLE9BQUFzRCxLQUFBdTZGLEdBQ0FFLEtBQ0FoK0Ys
RUFBQSxFQUFpQkEsRUFBQSs5RixFQUFBOTdGLE9BQXdCakMsSUFBQSxDQUN6QyxHQUFBa0UsR0FB
QTY1RixFQUFBLzlGLEVBUUEsbUJBQUE4OUYsR0FBQTU1RixLQUNBODVGLEVBQUE5NUYsR0FBQTQ1
RixFQUFBNTVGLElBR0EsR0FBQSs1RixHQUFBaCtGLE9BQUFzRCxLQUFBeTZGLEdBT0FFLEVBQUEs
TUFDQSxLQUNBTCxFQUFBRyxHQUNHLE1BQUEvOEYsR0FDSGk5RixFQUFBajlGLEVBR0Esa0JBQ0Es
R0FBQXV0QyxHQUFBeHNDLFVBQUFDLE9BQUEsR0FBQVosU0FBQVcsVUFBQSxHQUFBQSxVQUFBLE1B
Q0FtOEMsRUFBQW44QyxVQUFBLEVBRUEsSUFBQWs4RixFQUNBLEtBQUFBLEVBWUEsUUFGQUMsSUFB
QSxFQUNBbC9CLEtBQ0FtL0IsRUFBQSxFQUFvQkEsRUFBQUgsRUFBQWg4RixPQUE4Qm04RixJQUFB
LENBQ2xELEdBQUFqckQsR0FBQThxRCxFQUFBRyxHQUNBeGdELEVBQUFvZ0QsRUFBQTdxRCxHQUNB
a3JELEVBQUE3dkQsRUFBQTJFLEdBQ0FtckQsRUFBQTFnRCxFQUFBeWdELEVBQUFsZ0QsRUFDQSx1
QkFBQW1nRCxHQUFBLENBQ0EsR0FBQUMsR0FBQWIsRUFBQXZxRCxFQUFBZ0wsRUFDQSxVQUFBNzhD
LE9BQUFpOUYsR0FFQXQvQixFQUFBOXJCLEdBQUFtckQsRUFDQUgsS0FBQUcsSUFBQUQsRUFFQSxN
QUFBRixHQUFBbC9CLEVBQUF6d0IsR0ExSUFodkMsRUFBQWtvQixZQUFBLEVBQ0Fsb0IsRUFBQSxR
QUFBdW9CLENBRUEsSUFBQUUsR0FBQTVvQixFQUFBLElBRUFrekMsRUFBQWx6QyxFQUFBLElBSUFz
cEIsR0FGQW5CLEVBQUErcUIsR0FFQWx6QyxFQUFBLElBRUFtb0IsR0FBQW1CLEk1Tnd5d0JNLFNB
QVNscEIsRUFBUUQsRUFBU0gsRzZOcnp3QmhDSSxFQUFBRCxRQUFBSCxFQUFBLE03TjR6d0JNLFNB
QVNJLEVBQVFELEVBQVNILEk4TjV6d0JoQyxTQUFBeW5ELEVBQUFybkQsR0FBQSxZQVVBLFNBQUEr
bkIsR0FBQUMsR0FBc0MsTUFBQUEsTUFBQUMsV0FBQUQsR0FBdUNFLFFBQUFGLEdBUjdFeG5CLE9B
QUE2bkMsZUFBQXRvQyxFQUFBLGNBQ0FpUyxPQUFBLEdBR0EsSUFNQW9rQixHQU5BMm9FLEVBQUFu
L0YsRUFBQSxLQUVBby9GLEVBQUFqM0UsRUFBQWczRSxFQVFBM29FLEdBREEsbUJBQUE1ZSxNQUNB
QSxLQUNDLG1CQUFBOVAsUUFDREEsT0FDQyxtQkFBQTIvQyxHQUNEQSxFQUVBcm5ELENBS0EsSUFB
QTBuRCxJQUFBLEVBQUFzM0MsRUFBQSxTQUFBNW9FLEVBQ0FyMkIsR0FBQSxRQUFBMm5ELEk5Tit6
d0I4QnZuRCxLQUFLSixFQUFVLFdBQWEsTUFBT21CLFNBQVl0QixFQUFvQixLQUFLSSxLQUloRyxT
QUFTQSxFQUFRRCxHK04vMXdCdkIsWUFNQSxTQUFBay9GLEdBQUE3b0UsR0FDQSxHQUFBc3hCLEdB
Q0F3M0MsRUFBQTlvRSxFQUFBQyxNQWFBLE9BWEEsa0JBQUE2b0UsR0FDQUEsRUFBQWpnRCxXQUNB
eUksRUFBQXczQyxFQUFBamdELFlBRUF5SSxFQUFBdzNDLEVBQUEsY0FDQUEsRUFBQWpnRCxXQUFB
eUksR0FHQUEsRUFBQSxlQUdBQSxFQW5CQWxuRCxPQUFBNm5DLGVBQUF0b0MsRUFBQSxjQUNBaVMs
T0FBQSxJQUVBalMsRUFBQSxRQUFBay9GLEcvTnMzd0JNLFNBQVNqL0YsRUFBUUQsRUFBU0gsRUFB
cUJ1L0YsR2dPaDN3QnJELFlBRUEsSUFBQTM0RixHQUFBNUcsRUFBQXUvRixHQVdBQyxHQVRBeC9G
LEVBQUEsR0FTQSxTQUFBeS9GLEdBQ0EsR0FBQUMsR0FBQXArRixJQUNBLElBQUFvK0YsRUFBQUMs
YUFBQS84RixPQUFBLENBQ0EsR0FBQXM1QixHQUFBd2pFLEVBQUFDLGFBQUF6NEYsS0FFQSxPQURB
dzRGLEdBQUFuL0YsS0FBQTI3QixFQUFBdWpFLEdBQ0F2akUsRUFFQSxVQUFBd2pFLEdBQUFELEtB
SUF6eEIsRUFBQSxTQUFBNHhCLEVBQUFDLEdBQ0EsR0FBQUgsR0FBQXArRixJQUNBLElBQUFvK0Ys
RUFBQUMsYUFBQS84RixPQUFBLENBQ0EsR0FBQXM1QixHQUFBd2pFLEVBQUFDLGFBQUF6NEYsS0FF
QSxPQURBdzRGLEdBQUFuL0YsS0FBQTI3QixFQUFBMGpFLEVBQUFDLEdBQ0EzakUsRUFFQSxVQUFB
d2pFLEdBQUFFLEVBQUFDLElBSUFDLEVBQUEsU0FBQUYsRUFBQUMsRUFBQUUsR0FDQSxHQUFBTCxH
QUFBcCtGLElBQ0EsSUFBQW8rRixFQUFBQyxhQUFBLzhGLE9BQUEsQ0FDQSxHQUFBczVCLEdBQUF3
akUsRUFBQUMsYUFBQXo0RixLQUVBLE9BREF3NEYsR0FBQW4vRixLQUFBMjdCLEVBQUEwakUsRUFB
QUMsRUFBQUUsR0FDQTdqRSxFQUVBLFVBQUF3akUsR0FBQUUsRUFBQUMsRUFBQUUsSUFJQS92RixF
QUFBLFNBQUE0dkYsRUFBQUMsRUFBQUUsRUFBQUMsR0FDQSxHQUFBTixHQUFBcCtGLElBQ0EsSUFB
QW8rRixFQUFBQyxhQUFBLzhGLE9BQUEsQ0FDQSxHQUFBczVCLEdBQUF3akUsRUFBQUMsYUFBQXo0
RixLQUVBLE9BREF3NEYsR0FBQW4vRixLQUFBMjdCLEVBQUEwakUsRUFBQUMsRUFBQUUsRUFBQUMs
R0FDQTlqRSxFQUVBLFVBQUF3akUsR0FBQUUsRUFBQUMsRUFBQUUsRUFBQUMsSUFJQUMsRUFBQSxT
QUFBL2pFLEdBQ0EsR0FBQXdqRSxHQUFBcCtGLElBQ0E0NkIsYUFBQXdqRSxHQUFBLE9BQUE5NEYs
RUFBQSxNQUNBczFCLEVBQUFsdkIsYUFDQTB5RixFQUFBQyxhQUFBLzhGLE9BQUE4OEYsRUFBQVEs
VUFDQVIsRUFBQUMsYUFBQTU0RixLQUFBbTFCLElBSUFpa0UsRUFBQSxHQUNBQyxFQUFBWixFQVdB
bnlGLEVBQUEsU0FBQWd6RixFQUFBQyxHQUdBLEdBQUFDLEdBQUFGLENBT0EsT0FOQUUsR0FBQVos
Z0JBQ0FZLEVBQUEzMkYsVUFBQTAyRixHQUFBRixFQUNBRyxFQUFBTCxXQUNBSyxFQUFBTCxTQUFB
QyxHQUVBSSxFQUFBdHpGLFFBQUFnekYsRUFDQU0sR0FHQW4wRixHQUNBaUIsZUFDQW15RixvQkFD
QXh4QixvQkFDQTh4QixzQkFDQTl2RixxQkFHQTVQLEdBQUFELFFBQUFpTSIsImZpbGUiOiJzdGF0
aWMvanMvbWFpbi40M2EwOTQ4Yy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKioqKiovIChmdW5j
dGlvbihtb2R1bGVzKSB7IC8vIHdlYnBhY2tCb290c3RyYXBcbi8qKioqKiovIFx0Ly8gVGhlIG1v
ZHVsZSBjYWNoZVxuLyoqKioqKi8gXHR2YXIgaW5zdGFsbGVkTW9kdWxlcyA9IHt9O1xuLyoqKioq
Ki9cbi8qKioqKiovIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbi8qKioqKiovIFx0ZnVuY3Rp
b24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuLyoqKioqKi9cbi8qKioqKiovIFx0
XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbi8qKioqKiovIFx0XHRpZihpbnN0YWxs
ZWRNb2R1bGVzW21vZHVsZUlkXSlcbi8qKioqKiovIFx0XHRcdHJldHVybiBpbnN0YWxsZWRNb2R1
bGVzW21vZHVsZUlkXS5leHBvcnRzO1xuLyoqKioqKi9cbi8qKioqKiovIFx0XHQvLyBDcmVhdGUg
YSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuLyoqKioqKi8gXHRcdHZh
ciBtb2R1bGUgPSBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSA9IHtcbi8qKioqKiovIFx0XHRc
dGV4cG9ydHM6IHt9LFxuLyoqKioqKi8gXHRcdFx0aWQ6IG1vZHVsZUlkLFxuLyoqKioqKi8gXHRc
dFx0bG9hZGVkOiBmYWxzZVxuLyoqKioqKi8gXHRcdH07XG4vKioqKioqL1xuLyoqKioqKi8gXHRc
dC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuLyoqKioqKi8gXHRcdG1vZHVsZXNbbW9k
dWxlSWRdLmNhbGwobW9kdWxlLmV4cG9ydHMsIG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2Vi
cGFja19yZXF1aXJlX18pO1xuLyoqKioqKi9cbi8qKioqKiovIFx0XHQvLyBGbGFnIHRoZSBtb2R1
bGUgYXMgbG9hZGVkXG4vKioqKioqLyBcdFx0bW9kdWxlLmxvYWRlZCA9IHRydWU7XG4vKioqKioq
L1xuLyoqKioqKi8gXHRcdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG4vKioq
KioqLyBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuLyoqKioqKi8gXHR9XG4vKioqKioqL1xu
LyoqKioqKi9cbi8qKioqKiovIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJw
YWNrX21vZHVsZXNfXylcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5tID0gbW9kdWxl
cztcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlIGNhY2hlXG4vKioq
KioqLyBcdF9fd2VicGFja19yZXF1aXJlX18uYyA9IGluc3RhbGxlZE1vZHVsZXM7XG4vKioqKioq
L1xuLyoqKioqKi8gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuLyoqKioqKi8gXHRfX3dl
YnBhY2tfcmVxdWlyZV9fLnAgPSBcIi4vXCI7XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBMb2Fk
IGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbi8qKioqKiovIFx0cmV0dXJuIF9fd2Vi
cGFja19yZXF1aXJlX18oMCk7XG4vKioqKioqLyB9KVxuLyoqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKioq
KiovICgoZnVuY3Rpb24obW9kdWxlcykge1xuXHQvLyBDaGVjayBhbGwgbW9kdWxlcyBmb3IgZGVk
dXBsaWNhdGVkIG1vZHVsZXNcblx0Zm9yKHZhciBpIGluIG1vZHVsZXMpIHtcblx0XHRpZihPYmpl
Y3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobW9kdWxlcywgaSkpIHtcblx0XHRcdHN3
aXRjaCh0eXBlb2YgbW9kdWxlc1tpXSkge1xuXHRcdFx0Y2FzZSBcImZ1bmN0aW9uXCI6IGJyZWFr
O1xuXHRcdFx0Y2FzZSBcIm9iamVjdFwiOlxuXHRcdFx0XHQvLyBNb2R1bGUgY2FuIGJlIGNyZWF0
ZWQgZnJvbSBhIHRlbXBsYXRlXG5cdFx0XHRcdG1vZHVsZXNbaV0gPSAoZnVuY3Rpb24oX20pIHtc
blx0XHRcdFx0XHR2YXIgYXJncyA9IF9tLnNsaWNlKDEpLCBmbiA9IG1vZHVsZXNbX21bMF1dO1xu
XHRcdFx0XHRcdHJldHVybiBmdW5jdGlvbiAoYSxiLGMpIHtcblx0XHRcdFx0XHRcdGZuLmFwcGx5
KHRoaXMsIFthLGIsY10uY29uY2F0KGFyZ3MpKTtcblx0XHRcdFx0XHR9O1xuXHRcdFx0XHR9KG1v
ZHVsZXNbaV0pKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHQvLyBN
b2R1bGUgaXMgYSBjb3B5IG9mIGFub3RoZXIgbW9kdWxlXG5cdFx0XHRcdG1vZHVsZXNbaV0gPSBt
b2R1bGVzW21vZHVsZXNbaV1dO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdH1cblx0XHR9XG5cdH1c
blx0cmV0dXJuIG1vZHVsZXM7XG59KFtcbi8qIDAgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwg
ZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdF9fd2VicGFja19yZXF1aXJlX18o
MTk2KTtcblx0bW9kdWxlLmV4cG9ydHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIwNCk7XG5cblxu
LyoqKi8gfSxcbi8qIDEgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJw
YWNrX3JlcXVpcmVfXykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2Vu
dCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICog
VGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2Ug
Zm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2Yg
dGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmln
aHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9y
eS5cblx0ICpcblx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHQvKipcblx0ICogVXNl
IGludmFyaWFudCgpIHRvIGFzc2VydCBzdGF0ZSB3aGljaCB5b3VyIHByb2dyYW0gYXNzdW1lcyB0
byBiZSB0cnVlLlxuXHQgKlxuXHQgKiBQcm92aWRlIHNwcmludGYtc3R5bGUgZm9ybWF0IChvbmx5
ICVzIGlzIHN1cHBvcnRlZCkgYW5kIGFyZ3VtZW50c1xuXHQgKiB0byBwcm92aWRlIGluZm9ybWF0
aW9uIGFib3V0IHdoYXQgYnJva2UgYW5kIHdoYXQgeW91IHdlcmVcblx0ICogZXhwZWN0aW5nLlxu
XHQgKlxuXHQgKiBUaGUgaW52YXJpYW50IG1lc3NhZ2Ugd2lsbCBiZSBzdHJpcHBlZCBpbiBwcm9k
dWN0aW9uLCBidXQgdGhlIGludmFyaWFudFxuXHQgKiB3aWxsIHJlbWFpbiB0byBlbnN1cmUgbG9n
aWMgZG9lcyBub3QgZGlmZmVyIGluIHByb2R1Y3Rpb24uXG5cdCAqL1xuXHRcblx0dmFyIHZhbGlk
YXRlRm9ybWF0ID0gZnVuY3Rpb24gdmFsaWRhdGVGb3JtYXQoZm9ybWF0KSB7fTtcblx0XG5cdGlm
IChmYWxzZSkge1xuXHQgIHZhbGlkYXRlRm9ybWF0ID0gZnVuY3Rpb24gdmFsaWRhdGVGb3JtYXQo
Zm9ybWF0KSB7XG5cdCAgICBpZiAoZm9ybWF0ID09PSB1bmRlZmluZWQpIHtcblx0ICAgICAgdGhy
b3cgbmV3IEVycm9yKCdpbnZhcmlhbnQgcmVxdWlyZXMgYW4gZXJyb3IgbWVzc2FnZSBhcmd1bWVu
dCcpO1xuXHQgICAgfVxuXHQgIH07XG5cdH1cblx0XG5cdGZ1bmN0aW9uIGludmFyaWFudChjb25k
aXRpb24sIGZvcm1hdCwgYSwgYiwgYywgZCwgZSwgZikge1xuXHQgIHZhbGlkYXRlRm9ybWF0KGZv
cm1hdCk7XG5cdFxuXHQgIGlmICghY29uZGl0aW9uKSB7XG5cdCAgICB2YXIgZXJyb3I7XG5cdCAg
ICBpZiAoZm9ybWF0ID09PSB1bmRlZmluZWQpIHtcblx0ICAgICAgZXJyb3IgPSBuZXcgRXJyb3Io
J01pbmlmaWVkIGV4Y2VwdGlvbiBvY2N1cnJlZDsgdXNlIHRoZSBub24tbWluaWZpZWQgZGV2IGVu
dmlyb25tZW50ICcgKyAnZm9yIHRoZSBmdWxsIGVycm9yIG1lc3NhZ2UgYW5kIGFkZGl0aW9uYWwg
aGVscGZ1bCB3YXJuaW5ncy4nKTtcblx0ICAgIH0gZWxzZSB7XG5cdCAgICAgIHZhciBhcmdzID0g
W2EsIGIsIGMsIGQsIGUsIGZdO1xuXHQgICAgICB2YXIgYXJnSW5kZXggPSAwO1xuXHQgICAgICBl
cnJvciA9IG5ldyBFcnJvcihmb3JtYXQucmVwbGFjZSgvJXMvZywgZnVuY3Rpb24gKCkge1xuXHQg
ICAgICAgIHJldHVybiBhcmdzW2FyZ0luZGV4KytdO1xuXHQgICAgICB9KSk7XG5cdCAgICAgIGVy
cm9yLm5hbWUgPSAnSW52YXJpYW50IFZpb2xhdGlvbic7XG5cdCAgICB9XG5cdFxuXHQgICAgZXJy
b3IuZnJhbWVzVG9Qb3AgPSAxOyAvLyB3ZSBkb24ndCBjYXJlIGFib3V0IGludmFyaWFudCdzIG93
biBmcmFtZVxuXHQgICAgdGhyb3cgZXJyb3I7XG5cdCAgfVxuXHR9XG5cdFxuXHRtb2R1bGUuZXhw
b3J0cyA9IGludmFyaWFudDtcblxuLyoqKi8gfSxcbi8qIDIgKi9cbi8qKiovIGZ1bmN0aW9uKG1v
ZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8qKlxuXHQgKiBDb3B5
cmlnaHQgMjAxNC0yMDE1LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVk
LlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qt
c3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290
IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAq
IG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhl
IHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5c
dHZhciBlbXB0eUZ1bmN0aW9uID0gX193ZWJwYWNrX3JlcXVpcmVfXyg3KTtcblx0XG5cdC8qKlxu
XHQgKiBTaW1pbGFyIHRvIGludmFyaWFudCBidXQgb25seSBsb2dzIGEgd2FybmluZyBpZiB0aGUg
Y29uZGl0aW9uIGlzIG5vdCBtZXQuXG5cdCAqIFRoaXMgY2FuIGJlIHVzZWQgdG8gbG9nIGlzc3Vl
cyBpbiBkZXZlbG9wbWVudCBlbnZpcm9ubWVudHMgaW4gY3JpdGljYWxcblx0ICogcGF0aHMuIFJl
bW92aW5nIHRoZSBsb2dnaW5nIGNvZGUgZm9yIHByb2R1Y3Rpb24gZW52aXJvbm1lbnRzIHdpbGwg
a2VlcCB0aGVcblx0ICogc2FtZSBsb2dpYyBhbmQgZm9sbG93IHRoZSBzYW1lIGNvZGUgcGF0aHMu
XG5cdCAqL1xuXHRcblx0dmFyIHdhcm5pbmcgPSBlbXB0eUZ1bmN0aW9uO1xuXHRcblx0aWYgKGZh
bHNlKSB7XG5cdCAgdmFyIHByaW50V2FybmluZyA9IGZ1bmN0aW9uIHByaW50V2FybmluZyhmb3Jt
YXQpIHtcblx0ICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gQXJy
YXkoX2xlbiA+IDEgPyBfbGVuIC0gMSA6IDApLCBfa2V5ID0gMTsgX2tleSA8IF9sZW47IF9rZXkr
Kykge1xuXHQgICAgICBhcmdzW19rZXkgLSAxXSA9IGFyZ3VtZW50c1tfa2V5XTtcblx0ICAgIH1c
blx0XG5cdCAgICB2YXIgYXJnSW5kZXggPSAwO1xuXHQgICAgdmFyIG1lc3NhZ2UgPSAnV2Fybmlu
ZzogJyArIGZvcm1hdC5yZXBsYWNlKC8lcy9nLCBmdW5jdGlvbiAoKSB7XG5cdCAgICAgIHJldHVy
biBhcmdzW2FyZ0luZGV4KytdO1xuXHQgICAgfSk7XG5cdCAgICBpZiAodHlwZW9mIGNvbnNvbGUg
IT09ICd1bmRlZmluZWQnKSB7XG5cdCAgICAgIGNvbnNvbGUuZXJyb3IobWVzc2FnZSk7XG5cdCAg
ICB9XG5cdCAgICB0cnkge1xuXHQgICAgICAvLyAtLS0gV2VsY29tZSB0byBkZWJ1Z2dpbmcgUmVh
Y3QgLS0tXG5cdCAgICAgIC8vIFRoaXMgZXJyb3Igd2FzIHRocm93biBhcyBhIGNvbnZlbmllbmNl
IHNvIHRoYXQgeW91IGNhbiB1c2UgdGhpcyBzdGFja1xuXHQgICAgICAvLyB0byBmaW5kIHRoZSBj
YWxsc2l0ZSB0aGF0IGNhdXNlZCB0aGlzIHdhcm5pbmcgdG8gZmlyZS5cblx0ICAgICAgdGhyb3cg
bmV3IEVycm9yKG1lc3NhZ2UpO1xuXHQgICAgfSBjYXRjaCAoeCkge31cblx0ICB9O1xuXHRcblx0
ICB3YXJuaW5nID0gZnVuY3Rpb24gd2FybmluZyhjb25kaXRpb24sIGZvcm1hdCkge1xuXHQgICAg
aWYgKGZvcm1hdCA9PT0gdW5kZWZpbmVkKSB7XG5cdCAgICAgIHRocm93IG5ldyBFcnJvcignYHdh
cm5pbmcoY29uZGl0aW9uLCBmb3JtYXQsIC4uLmFyZ3MpYCByZXF1aXJlcyBhIHdhcm5pbmcgJyAr
ICdtZXNzYWdlIGFyZ3VtZW50Jyk7XG5cdCAgICB9XG5cdFxuXHQgICAgaWYgKGZvcm1hdC5pbmRl
eE9mKCdGYWlsZWQgQ29tcG9zaXRlIHByb3BUeXBlOiAnKSA9PT0gMCkge1xuXHQgICAgICByZXR1
cm47IC8vIElnbm9yZSBDb21wb3NpdGVDb21wb25lbnQgcHJvcHR5cGUgY2hlY2suXG5cdCAgICB9
XG5cdFxuXHQgICAgaWYgKCFjb25kaXRpb24pIHtcblx0ICAgICAgZm9yICh2YXIgX2xlbjIgPSBh
cmd1bWVudHMubGVuZ3RoLCBhcmdzID0gQXJyYXkoX2xlbjIgPiAyID8gX2xlbjIgLSAyIDogMCks
IF9rZXkyID0gMjsgX2tleTIgPCBfbGVuMjsgX2tleTIrKykge1xuXHQgICAgICAgIGFyZ3NbX2tl
eTIgLSAyXSA9IGFyZ3VtZW50c1tfa2V5Ml07XG5cdCAgICAgIH1cblx0XG5cdCAgICAgIHByaW50
V2FybmluZy5hcHBseSh1bmRlZmluZWQsIFtmb3JtYXRdLmNvbmNhdChhcmdzKSk7XG5cdCAgICB9
XG5cdCAgfTtcblx0fVxuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSB3YXJuaW5nO1xuXG4vKioqLyB9
LFxuLyogMyAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cblx0LyoqXG5c
dCAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwg
cmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2Vk
IHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBm
aWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlv
bmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRF
TlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKiBcblx0ICovXG5cdCd1
c2Ugc3RyaWN0Jztcblx0XG5cdC8qKlxuXHQgKiBXQVJOSU5HOiBETyBOT1QgbWFudWFsbHkgcmVx
dWlyZSB0aGlzIG1vZHVsZS5cblx0ICogVGhpcyBpcyBhIHJlcGxhY2VtZW50IGZvciBgaW52YXJp
YW50KC4uLilgIHVzZWQgYnkgdGhlIGVycm9yIGNvZGUgc3lzdGVtXG5cdCAqIGFuZCB3aWxsIF9v
bmx5XyBiZSByZXF1aXJlZCBieSB0aGUgY29ycmVzcG9uZGluZyBiYWJlbCBwYXNzLlxuXHQgKiBJ
dCBhbHdheXMgdGhyb3dzLlxuXHQgKi9cblx0XG5cdGZ1bmN0aW9uIHJlYWN0UHJvZEludmFyaWFu
dChjb2RlKSB7XG5cdCAgdmFyIGFyZ0NvdW50ID0gYXJndW1lbnRzLmxlbmd0aCAtIDE7XG5cdFxu
XHQgIHZhciBtZXNzYWdlID0gJ01pbmlmaWVkIFJlYWN0IGVycm9yICMnICsgY29kZSArICc7IHZp
c2l0ICcgKyAnaHR0cDovL2ZhY2Vib29rLmdpdGh1Yi5pby9yZWFjdC9kb2NzL2Vycm9yLWRlY29k
ZXIuaHRtbD9pbnZhcmlhbnQ9JyArIGNvZGU7XG5cdFxuXHQgIGZvciAodmFyIGFyZ0lkeCA9IDA7
IGFyZ0lkeCA8IGFyZ0NvdW50OyBhcmdJZHgrKykge1xuXHQgICAgbWVzc2FnZSArPSAnJmFyZ3Nb
XT0nICsgZW5jb2RlVVJJQ29tcG9uZW50KGFyZ3VtZW50c1thcmdJZHggKyAxXSk7XG5cdCAgfVxu
XHRcblx0ICBtZXNzYWdlICs9ICcgZm9yIHRoZSBmdWxsIG1lc3NhZ2Ugb3IgdXNlIHRoZSBub24t
bWluaWZpZWQgZGV2IGVudmlyb25tZW50JyArICcgZm9yIGZ1bGwgZXJyb3JzIGFuZCBhZGRpdGlv
bmFsIGhlbHBmdWwgd2FybmluZ3MuJztcblx0XG5cdCAgdmFyIGVycm9yID0gbmV3IEVycm9yKG1l
c3NhZ2UpO1xuXHQgIGVycm9yLm5hbWUgPSAnSW52YXJpYW50IFZpb2xhdGlvbic7XG5cdCAgZXJy
b3IuZnJhbWVzVG9Qb3AgPSAxOyAvLyB3ZSBkb24ndCBjYXJlIGFib3V0IHJlYWN0UHJvZEludmFy
aWFudCdzIG93biBmcmFtZVxuXHRcblx0ICB0aHJvdyBlcnJvcjtcblx0fVxuXHRcblx0bW9kdWxl
LmV4cG9ydHMgPSByZWFjdFByb2RJbnZhcmlhbnQ7XG5cbi8qKiovIH0sXG4vKiA0ICovXG4vKioq
LyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuXHQvKlxuXHRvYmplY3QtYXNzaWduXG5c
dChjKSBTaW5kcmUgU29yaHVzXG5cdEBsaWNlbnNlIE1JVFxuXHQqL1xuXHRcblx0J3VzZSBzdHJp
Y3QnO1xuXHQvKiBlc2xpbnQtZGlzYWJsZSBuby11bnVzZWQtdmFycyAqL1xuXHR2YXIgZ2V0T3du
UHJvcGVydHlTeW1ib2xzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scztcblx0dmFyIGhh
c093blByb3BlcnR5ID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcblx0dmFyIHBy
b3BJc0VudW1lcmFibGUgPSBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlO1xu
XHRcblx0ZnVuY3Rpb24gdG9PYmplY3QodmFsKSB7XG5cdFx0aWYgKHZhbCA9PT0gbnVsbCB8fCB2
YWwgPT09IHVuZGVmaW5lZCkge1xuXHRcdFx0dGhyb3cgbmV3IFR5cGVFcnJvcignT2JqZWN0LmFz
c2lnbiBjYW5ub3QgYmUgY2FsbGVkIHdpdGggbnVsbCBvciB1bmRlZmluZWQnKTtcblx0XHR9XG5c
dFxuXHRcdHJldHVybiBPYmplY3QodmFsKTtcblx0fVxuXHRcblx0ZnVuY3Rpb24gc2hvdWxkVXNl
TmF0aXZlKCkge1xuXHRcdHRyeSB7XG5cdFx0XHRpZiAoIU9iamVjdC5hc3NpZ24pIHtcblx0XHRc
dFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0fVxuXHRcblx0XHRcdC8vIERldGVjdCBidWdneSBwcm9w
ZXJ0eSBlbnVtZXJhdGlvbiBvcmRlciBpbiBvbGRlciBWOCB2ZXJzaW9ucy5cblx0XG5cdFx0XHQv
LyBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvdjgvaXNzdWVzL2RldGFpbD9pZD00MTE4XG5c
dFx0XHR2YXIgdGVzdDEgPSBuZXcgU3RyaW5nKCdhYmMnKTsgIC8vIGVzbGludC1kaXNhYmxlLWxp
bmUgbm8tbmV3LXdyYXBwZXJzXG5cdFx0XHR0ZXN0MVs1XSA9ICdkZSc7XG5cdFx0XHRpZiAoT2Jq
ZWN0LmdldE93blByb3BlcnR5TmFtZXModGVzdDEpWzBdID09PSAnNScpIHtcblx0XHRcdFx0cmV0
dXJuIGZhbHNlO1xuXHRcdFx0fVxuXHRcblx0XHRcdC8vIGh0dHBzOi8vYnVncy5jaHJvbWl1bS5v
cmcvcC92OC9pc3N1ZXMvZGV0YWlsP2lkPTMwNTZcblx0XHRcdHZhciB0ZXN0MiA9IHt9O1xuXHRc
dFx0Zm9yICh2YXIgaSA9IDA7IGkgPCAxMDsgaSsrKSB7XG5cdFx0XHRcdHRlc3QyWydfJyArIFN0
cmluZy5mcm9tQ2hhckNvZGUoaSldID0gaTtcblx0XHRcdH1cblx0XHRcdHZhciBvcmRlcjIgPSBP
YmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0ZXN0MikubWFwKGZ1bmN0aW9uIChuKSB7XG5cdFx0
XHRcdHJldHVybiB0ZXN0MltuXTtcblx0XHRcdH0pO1xuXHRcdFx0aWYgKG9yZGVyMi5qb2luKCcn
KSAhPT0gJzAxMjM0NTY3ODknKSB7XG5cdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdH1cblx0
XG5cdFx0XHQvLyBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvdjgvaXNzdWVzL2RldGFpbD9p
ZD0zMDU2XG5cdFx0XHR2YXIgdGVzdDMgPSB7fTtcblx0XHRcdCdhYmNkZWZnaGlqa2xtbm9wcXJz
dCcuc3BsaXQoJycpLmZvckVhY2goZnVuY3Rpb24gKGxldHRlcikge1xuXHRcdFx0XHR0ZXN0M1ts
ZXR0ZXJdID0gbGV0dGVyO1xuXHRcdFx0fSk7XG5cdFx0XHRpZiAoT2JqZWN0LmtleXMoT2JqZWN0
LmFzc2lnbih7fSwgdGVzdDMpKS5qb2luKCcnKSAhPT1cblx0XHRcdFx0XHQnYWJjZGVmZ2hpamts
bW5vcHFyc3QnKSB7XG5cdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdH1cblx0XG5cdFx0XHRy
ZXR1cm4gdHJ1ZTtcblx0XHR9IGNhdGNoIChlcnIpIHtcblx0XHRcdC8vIFdlIGRvbid0IGV4cGVj
dCBhbnkgb2YgdGhlIGFib3ZlIHRvIHRocm93LCBidXQgYmV0dGVyIHRvIGJlIHNhZmUuXG5cdFx0
XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXHR9XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IHNob3Vs
ZFVzZU5hdGl2ZSgpID8gT2JqZWN0LmFzc2lnbiA6IGZ1bmN0aW9uICh0YXJnZXQsIHNvdXJjZSkg
e1xuXHRcdHZhciBmcm9tO1xuXHRcdHZhciB0byA9IHRvT2JqZWN0KHRhcmdldCk7XG5cdFx0dmFy
IHN5bWJvbHM7XG5cdFxuXHRcdGZvciAodmFyIHMgPSAxOyBzIDwgYXJndW1lbnRzLmxlbmd0aDsg
cysrKSB7XG5cdFx0XHRmcm9tID0gT2JqZWN0KGFyZ3VtZW50c1tzXSk7XG5cdFxuXHRcdFx0Zm9y
ICh2YXIga2V5IGluIGZyb20pIHtcblx0XHRcdFx0aWYgKGhhc093blByb3BlcnR5LmNhbGwoZnJv
bSwga2V5KSkge1xuXHRcdFx0XHRcdHRvW2tleV0gPSBmcm9tW2tleV07XG5cdFx0XHRcdH1cblx0
XHRcdH1cblx0XG5cdFx0XHRpZiAoZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7XG5cdFx0XHRcdHN5
bWJvbHMgPSBnZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZnJvbSk7XG5cdFx0XHRcdGZvciAodmFyIGkg
PSAwOyBpIDwgc3ltYm9scy5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHRcdGlmIChwcm9wSXNFbnVt
ZXJhYmxlLmNhbGwoZnJvbSwgc3ltYm9sc1tpXSkpIHtcblx0XHRcdFx0XHRcdHRvW3N5bWJvbHNb
aV1dID0gZnJvbVtzeW1ib2xzW2ldXTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1c
blx0XHR9XG5cdFxuXHRcdHJldHVybiB0bztcblx0fTtcblxuXG4vKioqLyB9LFxuLyogNSAqL1xu
LyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5c
blx0LyoqXG5cdCAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAq
IEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGlj
ZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNF
TlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFk
ZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhl
IFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqL1xuXHRcblx0
J3VzZSBzdHJpY3QnO1xuXHRcblx0dmFyIF9wcm9kSW52YXJpYW50ID0gX193ZWJwYWNrX3JlcXVp
cmVfXygzKTtcblx0XG5cdHZhciBET01Qcm9wZXJ0eSA9IF9fd2VicGFja19yZXF1aXJlX18oMTUp
O1xuXHR2YXIgUmVhY3RET01Db21wb25lbnRGbGFncyA9IF9fd2VicGFja19yZXF1aXJlX18oNjEp
O1xuXHRcblx0dmFyIGludmFyaWFudCA9IF9fd2VicGFja19yZXF1aXJlX18oMSk7XG5cdFxuXHR2
YXIgQVRUUl9OQU1FID0gRE9NUHJvcGVydHkuSURfQVRUUklCVVRFX05BTUU7XG5cdHZhciBGbGFn
cyA9IFJlYWN0RE9NQ29tcG9uZW50RmxhZ3M7XG5cdFxuXHR2YXIgaW50ZXJuYWxJbnN0YW5jZUtl
eSA9ICdfX3JlYWN0SW50ZXJuYWxJbnN0YW5jZSQnICsgTWF0aC5yYW5kb20oKS50b1N0cmluZygz
Nikuc2xpY2UoMik7XG5cdFxuXHQvKipcblx0ICogQ2hlY2sgaWYgYSBnaXZlbiBub2RlIHNob3Vs
ZCBiZSBjYWNoZWQuXG5cdCAqL1xuXHRmdW5jdGlvbiBzaG91bGRQcmVjYWNoZU5vZGUobm9kZSwg
bm9kZUlEKSB7XG5cdCAgcmV0dXJuIG5vZGUubm9kZVR5cGUgPT09IDEgJiYgbm9kZS5nZXRBdHRy
aWJ1dGUoQVRUUl9OQU1FKSA9PT0gU3RyaW5nKG5vZGVJRCkgfHwgbm9kZS5ub2RlVHlwZSA9PT0g
OCAmJiBub2RlLm5vZGVWYWx1ZSA9PT0gJyByZWFjdC10ZXh0OiAnICsgbm9kZUlEICsgJyAnIHx8
IG5vZGUubm9kZVR5cGUgPT09IDggJiYgbm9kZS5ub2RlVmFsdWUgPT09ICcgcmVhY3QtZW1wdHk6
ICcgKyBub2RlSUQgKyAnICc7XG5cdH1cblx0XG5cdC8qKlxuXHQgKiBEcmlsbCBkb3duICh0aHJv
dWdoIGNvbXBvc2l0ZXMgYW5kIGVtcHR5IGNvbXBvbmVudHMpIHVudGlsIHdlIGdldCBhIGhvc3Qg
b3Jcblx0ICogaG9zdCB0ZXh0IGNvbXBvbmVudC5cblx0ICpcblx0ICogVGhpcyBpcyBwcmV0dHkg
cG9seW1vcnBoaWMgYnV0IHVuYXZvaWRhYmxlIHdpdGggdGhlIGN1cnJlbnQgc3RydWN0dXJlIHdl
IGhhdmVcblx0ICogZm9yIGBfcmVuZGVyZWRDaGlsZHJlbmAuXG5cdCAqL1xuXHRmdW5jdGlvbiBn
ZXRSZW5kZXJlZEhvc3RPclRleHRGcm9tQ29tcG9uZW50KGNvbXBvbmVudCkge1xuXHQgIHZhciBy
ZW5kZXJlZDtcblx0ICB3aGlsZSAocmVuZGVyZWQgPSBjb21wb25lbnQuX3JlbmRlcmVkQ29tcG9u
ZW50KSB7XG5cdCAgICBjb21wb25lbnQgPSByZW5kZXJlZDtcblx0ICB9XG5cdCAgcmV0dXJuIGNv
bXBvbmVudDtcblx0fVxuXHRcblx0LyoqXG5cdCAqIFBvcHVsYXRlIGBfaG9zdE5vZGVgIG9uIHRo
ZSByZW5kZXJlZCBob3N0L3RleHQgY29tcG9uZW50IHdpdGggdGhlIGdpdmVuXG5cdCAqIERPTSBu
b2RlLiBUaGUgcGFzc2VkIGBpbnN0YCBjYW4gYmUgYSBjb21wb3NpdGUuXG5cdCAqL1xuXHRmdW5j
dGlvbiBwcmVjYWNoZU5vZGUoaW5zdCwgbm9kZSkge1xuXHQgIHZhciBob3N0SW5zdCA9IGdldFJl
bmRlcmVkSG9zdE9yVGV4dEZyb21Db21wb25lbnQoaW5zdCk7XG5cdCAgaG9zdEluc3QuX2hvc3RO
b2RlID0gbm9kZTtcblx0ICBub2RlW2ludGVybmFsSW5zdGFuY2VLZXldID0gaG9zdEluc3Q7XG5c
dH1cblx0XG5cdGZ1bmN0aW9uIHVuY2FjaGVOb2RlKGluc3QpIHtcblx0ICB2YXIgbm9kZSA9IGlu
c3QuX2hvc3ROb2RlO1xuXHQgIGlmIChub2RlKSB7XG5cdCAgICBkZWxldGUgbm9kZVtpbnRlcm5h
bEluc3RhbmNlS2V5XTtcblx0ICAgIGluc3QuX2hvc3ROb2RlID0gbnVsbDtcblx0ICB9XG5cdH1c
blx0XG5cdC8qKlxuXHQgKiBQb3B1bGF0ZSBgX2hvc3ROb2RlYCBvbiBlYWNoIGNoaWxkIG9mIGBp
bnN0YCwgYXNzdW1pbmcgdGhhdCB0aGUgY2hpbGRyZW5cblx0ICogbWF0Y2ggdXAgd2l0aCB0aGUg
RE9NIChlbGVtZW50KSBjaGlsZHJlbiBvZiBgbm9kZWAuXG5cdCAqXG5cdCAqIFdlIGNhY2hlIGVu
dGlyZSBsZXZlbHMgYXQgb25jZSB0byBhdm9pZCBhbiBuXjIgcHJvYmxlbSB3aGVyZSB3ZSBhY2Nl
c3MgdGhlXG5cdCAqIGNoaWxkcmVuIG9mIGEgbm9kZSBzZXF1ZW50aWFsbHkgYW5kIGhhdmUgdG8g
d2FsayBmcm9tIHRoZSBzdGFydCB0byBvdXIgdGFyZ2V0XG5cdCAqIG5vZGUgZXZlcnkgdGltZS5c
blx0ICpcblx0ICogU2luY2Ugd2UgdXBkYXRlIGBfcmVuZGVyZWRDaGlsZHJlbmAgYW5kIHRoZSBh
Y3R1YWwgRE9NIGF0IChzbGlnaHRseSlcblx0ICogZGlmZmVyZW50IHRpbWVzLCB3ZSBjb3VsZCBy
YWNlIGhlcmUgYW5kIHNlZSBhIG5ld2VyIGBfcmVuZGVyZWRDaGlsZHJlbmAgdGhhblxuXHQgKiB0
aGUgRE9NIG5vZGVzIHdlIHNlZS4gVG8gYXZvaWQgdGhpcywgUmVhY3RNdWx0aUNoaWxkIGNhbGxz
XG5cdCAqIGBwcmVwYXJlVG9NYW5hZ2VDaGlsZHJlbmAgYmVmb3JlIHdlIGNoYW5nZSBgX3JlbmRl
cmVkQ2hpbGRyZW5gLCBhdCB3aGljaFxuXHQgKiB0aW1lIHRoZSBjb250YWluZXIncyBjaGlsZCBu
b2RlcyBhcmUgYWx3YXlzIGNhY2hlZCAodW50aWwgaXQgdW5tb3VudHMpLlxuXHQgKi9cblx0ZnVu
Y3Rpb24gcHJlY2FjaGVDaGlsZE5vZGVzKGluc3QsIG5vZGUpIHtcblx0ICBpZiAoaW5zdC5fZmxh
Z3MgJiBGbGFncy5oYXNDYWNoZWRDaGlsZE5vZGVzKSB7XG5cdCAgICByZXR1cm47XG5cdCAgfVxu
XHQgIHZhciBjaGlsZHJlbiA9IGluc3QuX3JlbmRlcmVkQ2hpbGRyZW47XG5cdCAgdmFyIGNoaWxk
Tm9kZSA9IG5vZGUuZmlyc3RDaGlsZDtcblx0ICBvdXRlcjogZm9yICh2YXIgbmFtZSBpbiBjaGls
ZHJlbikge1xuXHQgICAgaWYgKCFjaGlsZHJlbi5oYXNPd25Qcm9wZXJ0eShuYW1lKSkge1xuXHQg
ICAgICBjb250aW51ZTtcblx0ICAgIH1cblx0ICAgIHZhciBjaGlsZEluc3QgPSBjaGlsZHJlbltu
YW1lXTtcblx0ICAgIHZhciBjaGlsZElEID0gZ2V0UmVuZGVyZWRIb3N0T3JUZXh0RnJvbUNvbXBv
bmVudChjaGlsZEluc3QpLl9kb21JRDtcblx0ICAgIGlmIChjaGlsZElEID09PSAwKSB7XG5cdCAg
ICAgIC8vIFdlJ3JlIGN1cnJlbnRseSB1bm1vdW50aW5nIHRoaXMgY2hpbGQgaW4gUmVhY3RNdWx0
aUNoaWxkOyBza2lwIGl0LlxuXHQgICAgICBjb250aW51ZTtcblx0ICAgIH1cblx0ICAgIC8vIFdl
IGFzc3VtZSB0aGUgY2hpbGQgbm9kZXMgYXJlIGluIHRoZSBzYW1lIG9yZGVyIGFzIHRoZSBjaGls
ZCBpbnN0YW5jZXMuXG5cdCAgICBmb3IgKDsgY2hpbGROb2RlICE9PSBudWxsOyBjaGlsZE5vZGUg
PSBjaGlsZE5vZGUubmV4dFNpYmxpbmcpIHtcblx0ICAgICAgaWYgKHNob3VsZFByZWNhY2hlTm9k
ZShjaGlsZE5vZGUsIGNoaWxkSUQpKSB7XG5cdCAgICAgICAgcHJlY2FjaGVOb2RlKGNoaWxkSW5z
dCwgY2hpbGROb2RlKTtcblx0ICAgICAgICBjb250aW51ZSBvdXRlcjtcblx0ICAgICAgfVxuXHQg
ICAgfVxuXHQgICAgLy8gV2UgcmVhY2hlZCB0aGUgZW5kIG9mIHRoZSBET00gY2hpbGRyZW4gd2l0
aG91dCBmaW5kaW5nIGFuIElEIG1hdGNoLlxuXHQgICAgIHRydWUgPyAgZmFsc2UgPyBpbnZhcmlh
bnQoZmFsc2UsICdVbmFibGUgdG8gZmluZCBlbGVtZW50IHdpdGggSUQgJXMuJywgY2hpbGRJRCkg
OiBfcHJvZEludmFyaWFudCgnMzInLCBjaGlsZElEKSA6IHZvaWQgMDtcblx0ICB9XG5cdCAgaW5z
dC5fZmxhZ3MgfD0gRmxhZ3MuaGFzQ2FjaGVkQ2hpbGROb2Rlcztcblx0fVxuXHRcblx0LyoqXG5c
dCAqIEdpdmVuIGEgRE9NIG5vZGUsIHJldHVybiB0aGUgY2xvc2VzdCBSZWFjdERPTUNvbXBvbmVu
dCBvclxuXHQgKiBSZWFjdERPTVRleHRDb21wb25lbnQgaW5zdGFuY2UgYW5jZXN0b3IuXG5cdCAq
L1xuXHRmdW5jdGlvbiBnZXRDbG9zZXN0SW5zdGFuY2VGcm9tTm9kZShub2RlKSB7XG5cdCAgaWYg
KG5vZGVbaW50ZXJuYWxJbnN0YW5jZUtleV0pIHtcblx0ICAgIHJldHVybiBub2RlW2ludGVybmFs
SW5zdGFuY2VLZXldO1xuXHQgIH1cblx0XG5cdCAgLy8gV2FsayB1cCB0aGUgdHJlZSB1bnRpbCB3
ZSBmaW5kIGFuIGFuY2VzdG9yIHdob3NlIGluc3RhbmNlIHdlIGhhdmUgY2FjaGVkLlxuXHQgIHZh
ciBwYXJlbnRzID0gW107XG5cdCAgd2hpbGUgKCFub2RlW2ludGVybmFsSW5zdGFuY2VLZXldKSB7
XG5cdCAgICBwYXJlbnRzLnB1c2gobm9kZSk7XG5cdCAgICBpZiAobm9kZS5wYXJlbnROb2RlKSB7
XG5cdCAgICAgIG5vZGUgPSBub2RlLnBhcmVudE5vZGU7XG5cdCAgICB9IGVsc2Uge1xuXHQgICAg
ICAvLyBUb3Agb2YgdGhlIHRyZWUuIFRoaXMgbm9kZSBtdXN0IG5vdCBiZSBwYXJ0IG9mIGEgUmVh
Y3QgdHJlZSAob3IgaXNcblx0ICAgICAgLy8gdW5tb3VudGVkLCBwb3RlbnRpYWxseSkuXG5cdCAg
ICAgIHJldHVybiBudWxsO1xuXHQgICAgfVxuXHQgIH1cblx0XG5cdCAgdmFyIGNsb3Nlc3Q7XG5c
dCAgdmFyIGluc3Q7XG5cdCAgZm9yICg7IG5vZGUgJiYgKGluc3QgPSBub2RlW2ludGVybmFsSW5z
dGFuY2VLZXldKTsgbm9kZSA9IHBhcmVudHMucG9wKCkpIHtcblx0ICAgIGNsb3Nlc3QgPSBpbnN0
O1xuXHQgICAgaWYgKHBhcmVudHMubGVuZ3RoKSB7XG5cdCAgICAgIHByZWNhY2hlQ2hpbGROb2Rl
cyhpbnN0LCBub2RlKTtcblx0ICAgIH1cblx0ICB9XG5cdFxuXHQgIHJldHVybiBjbG9zZXN0O1xu
XHR9XG5cdFxuXHQvKipcblx0ICogR2l2ZW4gYSBET00gbm9kZSwgcmV0dXJuIHRoZSBSZWFjdERP
TUNvbXBvbmVudCBvciBSZWFjdERPTVRleHRDb21wb25lbnRcblx0ICogaW5zdGFuY2UsIG9yIG51
bGwgaWYgdGhlIG5vZGUgd2FzIG5vdCByZW5kZXJlZCBieSB0aGlzIFJlYWN0LlxuXHQgKi9cblx0
ZnVuY3Rpb24gZ2V0SW5zdGFuY2VGcm9tTm9kZShub2RlKSB7XG5cdCAgdmFyIGluc3QgPSBnZXRD
bG9zZXN0SW5zdGFuY2VGcm9tTm9kZShub2RlKTtcblx0ICBpZiAoaW5zdCAhPSBudWxsICYmIGlu
c3QuX2hvc3ROb2RlID09PSBub2RlKSB7XG5cdCAgICByZXR1cm4gaW5zdDtcblx0ICB9IGVsc2Ug
e1xuXHQgICAgcmV0dXJuIG51bGw7XG5cdCAgfVxuXHR9XG5cdFxuXHQvKipcblx0ICogR2l2ZW4g
YSBSZWFjdERPTUNvbXBvbmVudCBvciBSZWFjdERPTVRleHRDb21wb25lbnQsIHJldHVybiB0aGUg
Y29ycmVzcG9uZGluZ1xuXHQgKiBET00gbm9kZS5cblx0ICovXG5cdGZ1bmN0aW9uIGdldE5vZGVG
cm9tSW5zdGFuY2UoaW5zdCkge1xuXHQgIC8vIFdpdGhvdXQgdGhpcyBmaXJzdCBpbnZhcmlhbnQs
IHBhc3NpbmcgYSBub24tRE9NLWNvbXBvbmVudCB0cmlnZ2VycyB0aGUgbmV4dFxuXHQgIC8vIGlu
dmFyaWFudCBmb3IgYSBtaXNzaW5nIHBhcmVudCwgd2hpY2ggaXMgc3VwZXIgY29uZnVzaW5nLlxu
XHQgICEoaW5zdC5faG9zdE5vZGUgIT09IHVuZGVmaW5lZCkgPyAgZmFsc2UgPyBpbnZhcmlhbnQo
ZmFsc2UsICdnZXROb2RlRnJvbUluc3RhbmNlOiBJbnZhbGlkIGFyZ3VtZW50LicpIDogX3Byb2RJ
bnZhcmlhbnQoJzMzJykgOiB2b2lkIDA7XG5cdFxuXHQgIGlmIChpbnN0Ll9ob3N0Tm9kZSkge1xu
XHQgICAgcmV0dXJuIGluc3QuX2hvc3ROb2RlO1xuXHQgIH1cblx0XG5cdCAgLy8gV2FsayB1cCB0
aGUgdHJlZSB1bnRpbCB3ZSBmaW5kIGFuIGFuY2VzdG9yIHdob3NlIERPTSBub2RlIHdlIGhhdmUg
Y2FjaGVkLlxuXHQgIHZhciBwYXJlbnRzID0gW107XG5cdCAgd2hpbGUgKCFpbnN0Ll9ob3N0Tm9k
ZSkge1xuXHQgICAgcGFyZW50cy5wdXNoKGluc3QpO1xuXHQgICAgIWluc3QuX2hvc3RQYXJlbnQg
PyAgZmFsc2UgPyBpbnZhcmlhbnQoZmFsc2UsICdSZWFjdCBET00gdHJlZSByb290IHNob3VsZCBh
bHdheXMgaGF2ZSBhIG5vZGUgcmVmZXJlbmNlLicpIDogX3Byb2RJbnZhcmlhbnQoJzM0JykgOiB2
b2lkIDA7XG5cdCAgICBpbnN0ID0gaW5zdC5faG9zdFBhcmVudDtcblx0ICB9XG5cdFxuXHQgIC8v
IE5vdyBwYXJlbnRzIGNvbnRhaW5zIGVhY2ggYW5jZXN0b3IgdGhhdCBkb2VzICpub3QqIGhhdmUg
YSBjYWNoZWQgbmF0aXZlXG5cdCAgLy8gbm9kZSwgYW5kIGBpbnN0YCBpcyB0aGUgZGVlcGVzdCBh
bmNlc3RvciB0aGF0IGRvZXMuXG5cdCAgZm9yICg7IHBhcmVudHMubGVuZ3RoOyBpbnN0ID0gcGFy
ZW50cy5wb3AoKSkge1xuXHQgICAgcHJlY2FjaGVDaGlsZE5vZGVzKGluc3QsIGluc3QuX2hvc3RO
b2RlKTtcblx0ICB9XG5cdFxuXHQgIHJldHVybiBpbnN0Ll9ob3N0Tm9kZTtcblx0fVxuXHRcblx0
dmFyIFJlYWN0RE9NQ29tcG9uZW50VHJlZSA9IHtcblx0ICBnZXRDbG9zZXN0SW5zdGFuY2VGcm9t
Tm9kZTogZ2V0Q2xvc2VzdEluc3RhbmNlRnJvbU5vZGUsXG5cdCAgZ2V0SW5zdGFuY2VGcm9tTm9k
ZTogZ2V0SW5zdGFuY2VGcm9tTm9kZSxcblx0ICBnZXROb2RlRnJvbUluc3RhbmNlOiBnZXROb2Rl
RnJvbUluc3RhbmNlLFxuXHQgIHByZWNhY2hlQ2hpbGROb2RlczogcHJlY2FjaGVDaGlsZE5vZGVz
LFxuXHQgIHByZWNhY2hlTm9kZTogcHJlY2FjaGVOb2RlLFxuXHQgIHVuY2FjaGVOb2RlOiB1bmNh
Y2hlTm9kZVxuXHR9O1xuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBSZWFjdERPTUNvbXBvbmVudFRy
ZWU7XG5cbi8qKiovIH0sXG4vKiA2ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMp
IHtcblxuXHQvKipcblx0ICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJ
bmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNv
ZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxu
XHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRy
ZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91
bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAq
L1xuXHRcblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0dmFyIGNhblVzZURPTSA9ICEhKHR5cGVvZiB3
aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHdpbmRvdy5kb2N1bWVudCAmJiB3aW5kb3cuZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCk7XG5cdFxuXHQvKipcblx0ICogU2ltcGxlLCBsaWdodHdlaWdodCBt
b2R1bGUgYXNzaXN0aW5nIHdpdGggdGhlIGRldGVjdGlvbiBhbmQgY29udGV4dCBvZlxuXHQgKiBX
b3JrZXIuIEhlbHBzIGF2b2lkIGNpcmN1bGFyIGRlcGVuZGVuY2llcyBhbmQgYWxsb3dzIGNvZGUg
dG8gcmVhc29uIGFib3V0XG5cdCAqIHdoZXRoZXIgb3Igbm90IHRoZXkgYXJlIGluIGEgV29ya2Vy
LCBldmVuIGlmIHRoZXkgbmV2ZXIgaW5jbHVkZSB0aGUgbWFpblxuXHQgKiBgUmVhY3RXb3JrZXJg
IGRlcGVuZGVuY3kuXG5cdCAqL1xuXHR2YXIgRXhlY3V0aW9uRW52aXJvbm1lbnQgPSB7XG5cdFxu
XHQgIGNhblVzZURPTTogY2FuVXNlRE9NLFxuXHRcblx0ICBjYW5Vc2VXb3JrZXJzOiB0eXBlb2Yg
V29ya2VyICE9PSAndW5kZWZpbmVkJyxcblx0XG5cdCAgY2FuVXNlRXZlbnRMaXN0ZW5lcnM6IGNh
blVzZURPTSAmJiAhISh3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lciB8fCB3aW5kb3cuYXR0YWNoRXZl
bnQpLFxuXHRcblx0ICBjYW5Vc2VWaWV3cG9ydDogY2FuVXNlRE9NICYmICEhd2luZG93LnNjcmVl
bixcblx0XG5cdCAgaXNJbldvcmtlcjogIWNhblVzZURPTSAvLyBGb3Igbm93LCB0aGlzIGlzIHRy
dWUgLSBtaWdodCBjaGFuZ2UgaW4gdGhlIGZ1dHVyZS5cblx0XG5cdH07XG5cdFxuXHRtb2R1bGUu
ZXhwb3J0cyA9IEV4ZWN1dGlvbkVudmlyb25tZW50O1xuXG4vKioqLyB9LFxuLyogNyAqL1xuLyoq
Ki8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cblx0XCJ1c2Ugc3RyaWN0XCI7XG5cdFxu
XHQvKipcblx0ICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5c
dCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMg
bGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBM
SUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFu
IGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4g
dGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqIFxuXHQg
Ki9cblx0XG5cdGZ1bmN0aW9uIG1ha2VFbXB0eUZ1bmN0aW9uKGFyZykge1xuXHQgIHJldHVybiBm
dW5jdGlvbiAoKSB7XG5cdCAgICByZXR1cm4gYXJnO1xuXHQgIH07XG5cdH1cblx0XG5cdC8qKlxu
XHQgKiBUaGlzIGZ1bmN0aW9uIGFjY2VwdHMgYW5kIGRpc2NhcmRzIGlucHV0czsgaXQgaGFzIG5v
IHNpZGUgZWZmZWN0cy4gVGhpcyBpc1xuXHQgKiBwcmltYXJpbHkgdXNlZnVsIGlkaW9tYXRpY2Fs
bHkgZm9yIG92ZXJyaWRhYmxlIGZ1bmN0aW9uIGVuZHBvaW50cyB3aGljaFxuXHQgKiBhbHdheXMg
bmVlZCB0byBiZSBjYWxsYWJsZSwgc2luY2UgSlMgbGFja3MgYSBudWxsLWNhbGwgaWRpb20gYWxh
IENvY29hLlxuXHQgKi9cblx0dmFyIGVtcHR5RnVuY3Rpb24gPSBmdW5jdGlvbiBlbXB0eUZ1bmN0
aW9uKCkge307XG5cdFxuXHRlbXB0eUZ1bmN0aW9uLnRoYXRSZXR1cm5zID0gbWFrZUVtcHR5RnVu
Y3Rpb247XG5cdGVtcHR5RnVuY3Rpb24udGhhdFJldHVybnNGYWxzZSA9IG1ha2VFbXB0eUZ1bmN0
aW9uKGZhbHNlKTtcblx0ZW1wdHlGdW5jdGlvbi50aGF0UmV0dXJuc1RydWUgPSBtYWtlRW1wdHlG
dW5jdGlvbih0cnVlKTtcblx0ZW1wdHlGdW5jdGlvbi50aGF0UmV0dXJuc051bGwgPSBtYWtlRW1w
dHlGdW5jdGlvbihudWxsKTtcblx0ZW1wdHlGdW5jdGlvbi50aGF0UmV0dXJuc1RoaXMgPSBmdW5j
dGlvbiAoKSB7XG5cdCAgcmV0dXJuIHRoaXM7XG5cdH07XG5cdGVtcHR5RnVuY3Rpb24udGhhdFJl
dHVybnNBcmd1bWVudCA9IGZ1bmN0aW9uIChhcmcpIHtcblx0ICByZXR1cm4gYXJnO1xuXHR9O1xu
XHRcblx0bW9kdWxlLmV4cG9ydHMgPSBlbXB0eUZ1bmN0aW9uO1xuXG4vKioqLyB9LFxuLyogOCAq
L1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7
XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAyMDE2LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5c
dCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMg
bGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBM
SUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFu
IGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4g
dGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqIFxuXHQg
Ki9cblx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdC8vIFRydXN0IHRoZSBkZXZlbG9wZXIgdG8g
b25seSB1c2UgUmVhY3RJbnN0cnVtZW50YXRpb24gd2l0aCBhIF9fREVWX18gY2hlY2tcblx0XG5c
dHZhciBkZWJ1Z1Rvb2wgPSBudWxsO1xuXHRcblx0aWYgKGZhbHNlKSB7XG5cdCAgdmFyIFJlYWN0
RGVidWdUb29sID0gcmVxdWlyZSgnLi9SZWFjdERlYnVnVG9vbCcpO1xuXHQgIGRlYnVnVG9vbCA9
IFJlYWN0RGVidWdUb29sO1xuXHR9XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IHsgZGVidWdUb29s
OiBkZWJ1Z1Rvb2wgfTtcblxuLyoqKi8gfSxcbi8qIDkgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVs
ZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmln
aHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVk
LlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qt
c3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290
IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAq
IG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhl
IHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5c
dHZhciBfcHJvZEludmFyaWFudCA9IF9fd2VicGFja19yZXF1aXJlX18oMyksXG5cdCAgICBfYXNz
aWduID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0KTtcblx0XG5cdHZhciBDYWxsYmFja1F1ZXVlID0g
X193ZWJwYWNrX3JlcXVpcmVfXyg1OSk7XG5cdHZhciBQb29sZWRDbGFzcyA9IF9fd2VicGFja19y
ZXF1aXJlX18oMTMpO1xuXHR2YXIgUmVhY3RGZWF0dXJlRmxhZ3MgPSBfX3dlYnBhY2tfcmVxdWly
ZV9fKDY0KTtcblx0dmFyIFJlYWN0UmVjb25jaWxlciA9IF9fd2VicGFja19yZXF1aXJlX18oMTYp
O1xuXHR2YXIgVHJhbnNhY3Rpb24gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDI3KTtcblx0XG5cdHZh
ciBpbnZhcmlhbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEpO1xuXHRcblx0dmFyIGRpcnR5Q29t
cG9uZW50cyA9IFtdO1xuXHR2YXIgdXBkYXRlQmF0Y2hOdW1iZXIgPSAwO1xuXHR2YXIgYXNhcENh
bGxiYWNrUXVldWUgPSBDYWxsYmFja1F1ZXVlLmdldFBvb2xlZCgpO1xuXHR2YXIgYXNhcEVucXVl
dWVkID0gZmFsc2U7XG5cdFxuXHR2YXIgYmF0Y2hpbmdTdHJhdGVneSA9IG51bGw7XG5cdFxuXHRm
dW5jdGlvbiBlbnN1cmVJbmplY3RlZCgpIHtcblx0ICAhKFJlYWN0VXBkYXRlcy5SZWFjdFJlY29u
Y2lsZVRyYW5zYWN0aW9uICYmIGJhdGNoaW5nU3RyYXRlZ3kpID8gIGZhbHNlID8gaW52YXJpYW50
KGZhbHNlLCAnUmVhY3RVcGRhdGVzOiBtdXN0IGluamVjdCBhIHJlY29uY2lsZSB0cmFuc2FjdGlv
biBjbGFzcyBhbmQgYmF0Y2hpbmcgc3RyYXRlZ3knKSA6IF9wcm9kSW52YXJpYW50KCcxMjMnKSA6
IHZvaWQgMDtcblx0fVxuXHRcblx0dmFyIE5FU1RFRF9VUERBVEVTID0ge1xuXHQgIGluaXRpYWxp
emU6IGZ1bmN0aW9uICgpIHtcblx0ICAgIHRoaXMuZGlydHlDb21wb25lbnRzTGVuZ3RoID0gZGly
dHlDb21wb25lbnRzLmxlbmd0aDtcblx0ICB9LFxuXHQgIGNsb3NlOiBmdW5jdGlvbiAoKSB7XG5c
dCAgICBpZiAodGhpcy5kaXJ0eUNvbXBvbmVudHNMZW5ndGggIT09IGRpcnR5Q29tcG9uZW50cy5s
ZW5ndGgpIHtcblx0ICAgICAgLy8gQWRkaXRpb25hbCB1cGRhdGVzIHdlcmUgZW5xdWV1ZWQgYnkg
Y29tcG9uZW50RGlkVXBkYXRlIGhhbmRsZXJzIG9yXG5cdCAgICAgIC8vIHNpbWlsYXI7IGJlZm9y
ZSBvdXIgb3duIFVQREFURV9RVUVVRUlORyB3cmFwcGVyIGNsb3Nlcywgd2Ugd2FudCB0byBydW5c
blx0ICAgICAgLy8gdGhlc2UgbmV3IHVwZGF0ZXMgc28gdGhhdCBpZiBBJ3MgY29tcG9uZW50RGlk
VXBkYXRlIGNhbGxzIHNldFN0YXRlIG9uXG5cdCAgICAgIC8vIEIsIEIgd2lsbCB1cGRhdGUgYmVm
b3JlIHRoZSBjYWxsYmFjayBBJ3MgdXBkYXRlciBwcm92aWRlZCB3aGVuIGNhbGxpbmdcblx0ICAg
ICAgLy8gc2V0U3RhdGUuXG5cdCAgICAgIGRpcnR5Q29tcG9uZW50cy5zcGxpY2UoMCwgdGhpcy5k
aXJ0eUNvbXBvbmVudHNMZW5ndGgpO1xuXHQgICAgICBmbHVzaEJhdGNoZWRVcGRhdGVzKCk7XG5c
dCAgICB9IGVsc2Uge1xuXHQgICAgICBkaXJ0eUNvbXBvbmVudHMubGVuZ3RoID0gMDtcblx0ICAg
IH1cblx0ICB9XG5cdH07XG5cdFxuXHR2YXIgVVBEQVRFX1FVRVVFSU5HID0ge1xuXHQgIGluaXRp
YWxpemU6IGZ1bmN0aW9uICgpIHtcblx0ICAgIHRoaXMuY2FsbGJhY2tRdWV1ZS5yZXNldCgpO1xu
XHQgIH0sXG5cdCAgY2xvc2U6IGZ1bmN0aW9uICgpIHtcblx0ICAgIHRoaXMuY2FsbGJhY2tRdWV1
ZS5ub3RpZnlBbGwoKTtcblx0ICB9XG5cdH07XG5cdFxuXHR2YXIgVFJBTlNBQ1RJT05fV1JBUFBF
UlMgPSBbTkVTVEVEX1VQREFURVMsIFVQREFURV9RVUVVRUlOR107XG5cdFxuXHRmdW5jdGlvbiBS
ZWFjdFVwZGF0ZXNGbHVzaFRyYW5zYWN0aW9uKCkge1xuXHQgIHRoaXMucmVpbml0aWFsaXplVHJh
bnNhY3Rpb24oKTtcblx0ICB0aGlzLmRpcnR5Q29tcG9uZW50c0xlbmd0aCA9IG51bGw7XG5cdCAg
dGhpcy5jYWxsYmFja1F1ZXVlID0gQ2FsbGJhY2tRdWV1ZS5nZXRQb29sZWQoKTtcblx0ICB0aGlz
LnJlY29uY2lsZVRyYW5zYWN0aW9uID0gUmVhY3RVcGRhdGVzLlJlYWN0UmVjb25jaWxlVHJhbnNh
Y3Rpb24uZ2V0UG9vbGVkKFxuXHQgIC8qIHVzZUNyZWF0ZUVsZW1lbnQgKi90cnVlKTtcblx0fVxu
XHRcblx0X2Fzc2lnbihSZWFjdFVwZGF0ZXNGbHVzaFRyYW5zYWN0aW9uLnByb3RvdHlwZSwgVHJh
bnNhY3Rpb24sIHtcblx0ICBnZXRUcmFuc2FjdGlvbldyYXBwZXJzOiBmdW5jdGlvbiAoKSB7XG5c
dCAgICByZXR1cm4gVFJBTlNBQ1RJT05fV1JBUFBFUlM7XG5cdCAgfSxcblx0XG5cdCAgZGVzdHJ1
Y3RvcjogZnVuY3Rpb24gKCkge1xuXHQgICAgdGhpcy5kaXJ0eUNvbXBvbmVudHNMZW5ndGggPSBu
dWxsO1xuXHQgICAgQ2FsbGJhY2tRdWV1ZS5yZWxlYXNlKHRoaXMuY2FsbGJhY2tRdWV1ZSk7XG5c
dCAgICB0aGlzLmNhbGxiYWNrUXVldWUgPSBudWxsO1xuXHQgICAgUmVhY3RVcGRhdGVzLlJlYWN0
UmVjb25jaWxlVHJhbnNhY3Rpb24ucmVsZWFzZSh0aGlzLnJlY29uY2lsZVRyYW5zYWN0aW9uKTtc
blx0ICAgIHRoaXMucmVjb25jaWxlVHJhbnNhY3Rpb24gPSBudWxsO1xuXHQgIH0sXG5cdFxuXHQg
IHBlcmZvcm06IGZ1bmN0aW9uIChtZXRob2QsIHNjb3BlLCBhKSB7XG5cdCAgICAvLyBFc3NlbnRp
YWxseSBjYWxscyBgdGhpcy5yZWNvbmNpbGVUcmFuc2FjdGlvbi5wZXJmb3JtKG1ldGhvZCwgc2Nv
cGUsIGEpYFxuXHQgICAgLy8gd2l0aCB0aGlzIHRyYW5zYWN0aW9uJ3Mgd3JhcHBlcnMgYXJvdW5k
IGl0LlxuXHQgICAgcmV0dXJuIFRyYW5zYWN0aW9uLnBlcmZvcm0uY2FsbCh0aGlzLCB0aGlzLnJl
Y29uY2lsZVRyYW5zYWN0aW9uLnBlcmZvcm0sIHRoaXMucmVjb25jaWxlVHJhbnNhY3Rpb24sIG1l
dGhvZCwgc2NvcGUsIGEpO1xuXHQgIH1cblx0fSk7XG5cdFxuXHRQb29sZWRDbGFzcy5hZGRQb29s
aW5nVG8oUmVhY3RVcGRhdGVzRmx1c2hUcmFuc2FjdGlvbik7XG5cdFxuXHRmdW5jdGlvbiBiYXRj
aGVkVXBkYXRlcyhjYWxsYmFjaywgYSwgYiwgYywgZCwgZSkge1xuXHQgIGVuc3VyZUluamVjdGVk
KCk7XG5cdCAgcmV0dXJuIGJhdGNoaW5nU3RyYXRlZ3kuYmF0Y2hlZFVwZGF0ZXMoY2FsbGJhY2ss
IGEsIGIsIGMsIGQsIGUpO1xuXHR9XG5cdFxuXHQvKipcblx0ICogQXJyYXkgY29tcGFyYXRvciBm
b3IgUmVhY3RDb21wb25lbnRzIGJ5IG1vdW50IG9yZGVyaW5nLlxuXHQgKlxuXHQgKiBAcGFyYW0g
e1JlYWN0Q29tcG9uZW50fSBjMSBmaXJzdCBjb21wb25lbnQgeW91J3JlIGNvbXBhcmluZ1xuXHQg
KiBAcGFyYW0ge1JlYWN0Q29tcG9uZW50fSBjMiBzZWNvbmQgY29tcG9uZW50IHlvdSdyZSBjb21w
YXJpbmdcblx0ICogQHJldHVybiB7bnVtYmVyfSBSZXR1cm4gdmFsdWUgdXNhYmxlIGJ5IEFycmF5
LnByb3RvdHlwZS5zb3J0KCkuXG5cdCAqL1xuXHRmdW5jdGlvbiBtb3VudE9yZGVyQ29tcGFyYXRv
cihjMSwgYzIpIHtcblx0ICByZXR1cm4gYzEuX21vdW50T3JkZXIgLSBjMi5fbW91bnRPcmRlcjtc
blx0fVxuXHRcblx0ZnVuY3Rpb24gcnVuQmF0Y2hlZFVwZGF0ZXModHJhbnNhY3Rpb24pIHtcblx0
ICB2YXIgbGVuID0gdHJhbnNhY3Rpb24uZGlydHlDb21wb25lbnRzTGVuZ3RoO1xuXHQgICEobGVu
ID09PSBkaXJ0eUNvbXBvbmVudHMubGVuZ3RoKSA/ICBmYWxzZSA/IGludmFyaWFudChmYWxzZSwg
J0V4cGVjdGVkIGZsdXNoIHRyYW5zYWN0aW9uXFwncyBzdG9yZWQgZGlydHktY29tcG9uZW50cyBs
ZW5ndGggKCVzKSB0byBtYXRjaCBkaXJ0eS1jb21wb25lbnRzIGFycmF5IGxlbmd0aCAoJXMpLics
IGxlbiwgZGlydHlDb21wb25lbnRzLmxlbmd0aCkgOiBfcHJvZEludmFyaWFudCgnMTI0JywgbGVu
LCBkaXJ0eUNvbXBvbmVudHMubGVuZ3RoKSA6IHZvaWQgMDtcblx0XG5cdCAgLy8gU2luY2UgcmVj
b25jaWxpbmcgYSBjb21wb25lbnQgaGlnaGVyIGluIHRoZSBvd25lciBoaWVyYXJjaHkgdXN1YWxs
eSAobm90XG5cdCAgLy8gYWx3YXlzIC0tIHNlZSBzaG91bGRDb21wb25lbnRVcGRhdGUoKSkgd2ls
bCByZWNvbmNpbGUgY2hpbGRyZW4sIHJlY29uY2lsZVxuXHQgIC8vIHRoZW0gYmVmb3JlIHRoZWly
IGNoaWxkcmVuIGJ5IHNvcnRpbmcgdGhlIGFycmF5LlxuXHQgIGRpcnR5Q29tcG9uZW50cy5zb3J0
KG1vdW50T3JkZXJDb21wYXJhdG9yKTtcblx0XG5cdCAgLy8gQW55IHVwZGF0ZXMgZW5xdWV1ZWQg
d2hpbGUgcmVjb25jaWxpbmcgbXVzdCBiZSBwZXJmb3JtZWQgYWZ0ZXIgdGhpcyBlbnRpcmVcblx0
ICAvLyBiYXRjaC4gT3RoZXJ3aXNlLCBpZiBkaXJ0eUNvbXBvbmVudHMgaXMgW0EsIEJdIHdoZXJl
IEEgaGFzIGNoaWxkcmVuIEIgYW5kXG5cdCAgLy8gQywgQiBjb3VsZCB1cGRhdGUgdHdpY2UgaW4g
YSBzaW5nbGUgYmF0Y2ggaWYgQydzIHJlbmRlciBlbnF1ZXVlcyBhbiB1cGRhdGVcblx0ICAvLyB0
byBCIChzaW5jZSBCIHdvdWxkIGhhdmUgYWxyZWFkeSB1cGRhdGVkLCB3ZSBzaG91bGQgc2tpcCBp
dCwgYW5kIHRoZSBvbmx5XG5cdCAgLy8gd2F5IHdlIGNhbiBrbm93IHRvIGRvIHNvIGlzIGJ5IGNo
ZWNraW5nIHRoZSBiYXRjaCBjb3VudGVyKS5cblx0ICB1cGRhdGVCYXRjaE51bWJlcisrO1xuXHRc
blx0ICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG5cdCAgICAvLyBJZiBhIGNvbXBv
bmVudCBpcyB1bm1vdW50ZWQgYmVmb3JlIHBlbmRpbmcgY2hhbmdlcyBhcHBseSwgaXQgd2lsbCBz
dGlsbFxuXHQgICAgLy8gYmUgaGVyZSwgYnV0IHdlIGFzc3VtZSB0aGF0IGl0IGhhcyBjbGVhcmVk
IGl0cyBfcGVuZGluZ0NhbGxiYWNrcyBhbmRcblx0ICAgIC8vIHRoYXQgcGVyZm9ybVVwZGF0ZUlm
TmVjZXNzYXJ5IGlzIGEgbm9vcC5cblx0ICAgIHZhciBjb21wb25lbnQgPSBkaXJ0eUNvbXBvbmVu
dHNbaV07XG5cdFxuXHQgICAgLy8gSWYgcGVyZm9ybVVwZGF0ZUlmTmVjZXNzYXJ5IGhhcHBlbnMg
dG8gZW5xdWV1ZSBhbnkgbmV3IHVwZGF0ZXMsIHdlXG5cdCAgICAvLyBzaG91bGRuJ3QgZXhlY3V0
ZSB0aGUgY2FsbGJhY2tzIHVudGlsIHRoZSBuZXh0IHJlbmRlciBoYXBwZW5zLCBzb1xuXHQgICAg
Ly8gc3Rhc2ggdGhlIGNhbGxiYWNrcyBmaXJzdFxuXHQgICAgdmFyIGNhbGxiYWNrcyA9IGNvbXBv
bmVudC5fcGVuZGluZ0NhbGxiYWNrcztcblx0ICAgIGNvbXBvbmVudC5fcGVuZGluZ0NhbGxiYWNr
cyA9IG51bGw7XG5cdFxuXHQgICAgdmFyIG1hcmtlck5hbWU7XG5cdCAgICBpZiAoUmVhY3RGZWF0
dXJlRmxhZ3MubG9nVG9wTGV2ZWxSZW5kZXJzKSB7XG5cdCAgICAgIHZhciBuYW1lZENvbXBvbmVu
dCA9IGNvbXBvbmVudDtcblx0ICAgICAgLy8gRHVjayB0eXBlIFRvcExldmVsV3JhcHBlci4gVGhp
cyBpcyBwcm9iYWJseSBhbHdheXMgdHJ1ZS5cblx0ICAgICAgaWYgKGNvbXBvbmVudC5fY3VycmVu
dEVsZW1lbnQudHlwZS5pc1JlYWN0VG9wTGV2ZWxXcmFwcGVyKSB7XG5cdCAgICAgICAgbmFtZWRD
b21wb25lbnQgPSBjb21wb25lbnQuX3JlbmRlcmVkQ29tcG9uZW50O1xuXHQgICAgICB9XG5cdCAg
ICAgIG1hcmtlck5hbWUgPSAnUmVhY3QgdXBkYXRlOiAnICsgbmFtZWRDb21wb25lbnQuZ2V0TmFt
ZSgpO1xuXHQgICAgICBjb25zb2xlLnRpbWUobWFya2VyTmFtZSk7XG5cdCAgICB9XG5cdFxuXHQg
ICAgUmVhY3RSZWNvbmNpbGVyLnBlcmZvcm1VcGRhdGVJZk5lY2Vzc2FyeShjb21wb25lbnQsIHRy
YW5zYWN0aW9uLnJlY29uY2lsZVRyYW5zYWN0aW9uLCB1cGRhdGVCYXRjaE51bWJlcik7XG5cdFxu
XHQgICAgaWYgKG1hcmtlck5hbWUpIHtcblx0ICAgICAgY29uc29sZS50aW1lRW5kKG1hcmtlck5h
bWUpO1xuXHQgICAgfVxuXHRcblx0ICAgIGlmIChjYWxsYmFja3MpIHtcblx0ICAgICAgZm9yICh2
YXIgaiA9IDA7IGogPCBjYWxsYmFja3MubGVuZ3RoOyBqKyspIHtcblx0ICAgICAgICB0cmFuc2Fj
dGlvbi5jYWxsYmFja1F1ZXVlLmVucXVldWUoY2FsbGJhY2tzW2pdLCBjb21wb25lbnQuZ2V0UHVi
bGljSW5zdGFuY2UoKSk7XG5cdCAgICAgIH1cblx0ICAgIH1cblx0ICB9XG5cdH1cblx0XG5cdHZh
ciBmbHVzaEJhdGNoZWRVcGRhdGVzID0gZnVuY3Rpb24gKCkge1xuXHQgIC8vIFJlYWN0VXBkYXRl
c0ZsdXNoVHJhbnNhY3Rpb24ncyB3cmFwcGVycyB3aWxsIGNsZWFyIHRoZSBkaXJ0eUNvbXBvbmVu
dHNcblx0ICAvLyBhcnJheSBhbmQgcGVyZm9ybSBhbnkgdXBkYXRlcyBlbnF1ZXVlZCBieSBtb3Vu
dC1yZWFkeSBoYW5kbGVycyAoaS5lLixcblx0ICAvLyBjb21wb25lbnREaWRVcGRhdGUpIGJ1dCB3
ZSBuZWVkIHRvIGNoZWNrIGhlcmUgdG9vIGluIG9yZGVyIHRvIGNhdGNoXG5cdCAgLy8gdXBkYXRl
cyBlbnF1ZXVlZCBieSBzZXRTdGF0ZSBjYWxsYmFja3MgYW5kIGFzYXAgY2FsbHMuXG5cdCAgd2hp
bGUgKGRpcnR5Q29tcG9uZW50cy5sZW5ndGggfHwgYXNhcEVucXVldWVkKSB7XG5cdCAgICBpZiAo
ZGlydHlDb21wb25lbnRzLmxlbmd0aCkge1xuXHQgICAgICB2YXIgdHJhbnNhY3Rpb24gPSBSZWFj
dFVwZGF0ZXNGbHVzaFRyYW5zYWN0aW9uLmdldFBvb2xlZCgpO1xuXHQgICAgICB0cmFuc2FjdGlv
bi5wZXJmb3JtKHJ1bkJhdGNoZWRVcGRhdGVzLCBudWxsLCB0cmFuc2FjdGlvbik7XG5cdCAgICAg
IFJlYWN0VXBkYXRlc0ZsdXNoVHJhbnNhY3Rpb24ucmVsZWFzZSh0cmFuc2FjdGlvbik7XG5cdCAg
ICB9XG5cdFxuXHQgICAgaWYgKGFzYXBFbnF1ZXVlZCkge1xuXHQgICAgICBhc2FwRW5xdWV1ZWQg
PSBmYWxzZTtcblx0ICAgICAgdmFyIHF1ZXVlID0gYXNhcENhbGxiYWNrUXVldWU7XG5cdCAgICAg
IGFzYXBDYWxsYmFja1F1ZXVlID0gQ2FsbGJhY2tRdWV1ZS5nZXRQb29sZWQoKTtcblx0ICAgICAg
cXVldWUubm90aWZ5QWxsKCk7XG5cdCAgICAgIENhbGxiYWNrUXVldWUucmVsZWFzZShxdWV1ZSk7
XG5cdCAgICB9XG5cdCAgfVxuXHR9O1xuXHRcblx0LyoqXG5cdCAqIE1hcmsgYSBjb21wb25lbnQg
YXMgbmVlZGluZyBhIHJlcmVuZGVyLCBhZGRpbmcgYW4gb3B0aW9uYWwgY2FsbGJhY2sgdG8gYVxu
XHQgKiBsaXN0IG9mIGZ1bmN0aW9ucyB3aGljaCB3aWxsIGJlIGV4ZWN1dGVkIG9uY2UgdGhlIHJl
cmVuZGVyIG9jY3Vycy5cblx0ICovXG5cdGZ1bmN0aW9uIGVucXVldWVVcGRhdGUoY29tcG9uZW50
KSB7XG5cdCAgZW5zdXJlSW5qZWN0ZWQoKTtcblx0XG5cdCAgLy8gVmFyaW91cyBwYXJ0cyBvZiBv
dXIgY29kZSAoc3VjaCBhcyBSZWFjdENvbXBvc2l0ZUNvbXBvbmVudCdzXG5cdCAgLy8gX3JlbmRl
clZhbGlkYXRlZENvbXBvbmVudCkgYXNzdW1lIHRoYXQgY2FsbHMgdG8gcmVuZGVyIGFyZW4ndCBu
ZXN0ZWQ7XG5cdCAgLy8gdmVyaWZ5IHRoYXQgdGhhdCdzIHRoZSBjYXNlLiAoVGhpcyBpcyBjYWxs
ZWQgYnkgZWFjaCB0b3AtbGV2ZWwgdXBkYXRlXG5cdCAgLy8gZnVuY3Rpb24sIGxpa2Ugc2V0U3Rh
dGUsIGZvcmNlVXBkYXRlLCBldGMuOyBjcmVhdGlvbiBhbmRcblx0ICAvLyBkZXN0cnVjdGlvbiBv
ZiB0b3AtbGV2ZWwgY29tcG9uZW50cyBpcyBndWFyZGVkIGluIFJlYWN0TW91bnQuKVxuXHRcblx0
ICBpZiAoIWJhdGNoaW5nU3RyYXRlZ3kuaXNCYXRjaGluZ1VwZGF0ZXMpIHtcblx0ICAgIGJhdGNo
aW5nU3RyYXRlZ3kuYmF0Y2hlZFVwZGF0ZXMoZW5xdWV1ZVVwZGF0ZSwgY29tcG9uZW50KTtcblx0
ICAgIHJldHVybjtcblx0ICB9XG5cdFxuXHQgIGRpcnR5Q29tcG9uZW50cy5wdXNoKGNvbXBvbmVu
dCk7XG5cdCAgaWYgKGNvbXBvbmVudC5fdXBkYXRlQmF0Y2hOdW1iZXIgPT0gbnVsbCkge1xuXHQg
ICAgY29tcG9uZW50Ll91cGRhdGVCYXRjaE51bWJlciA9IHVwZGF0ZUJhdGNoTnVtYmVyICsgMTtc
blx0ICB9XG5cdH1cblx0XG5cdC8qKlxuXHQgKiBFbnF1ZXVlIGEgY2FsbGJhY2sgdG8gYmUgcnVu
IGF0IHRoZSBlbmQgb2YgdGhlIGN1cnJlbnQgYmF0Y2hpbmcgY3ljbGUuIFRocm93c1xuXHQgKiBp
ZiBubyB1cGRhdGVzIGFyZSBjdXJyZW50bHkgYmVpbmcgcGVyZm9ybWVkLlxuXHQgKi9cblx0ZnVu
Y3Rpb24gYXNhcChjYWxsYmFjaywgY29udGV4dCkge1xuXHQgICFiYXRjaGluZ1N0cmF0ZWd5Lmlz
QmF0Y2hpbmdVcGRhdGVzID8gIGZhbHNlID8gaW52YXJpYW50KGZhbHNlLCAnUmVhY3RVcGRhdGVz
LmFzYXA6IENhblxcJ3QgZW5xdWV1ZSBhbiBhc2FwIGNhbGxiYWNrIGluIGEgY29udGV4dCB3aGVy
ZXVwZGF0ZXMgYXJlIG5vdCBiZWluZyBiYXRjaGVkLicpIDogX3Byb2RJbnZhcmlhbnQoJzEyNScp
IDogdm9pZCAwO1xuXHQgIGFzYXBDYWxsYmFja1F1ZXVlLmVucXVldWUoY2FsbGJhY2ssIGNvbnRl
eHQpO1xuXHQgIGFzYXBFbnF1ZXVlZCA9IHRydWU7XG5cdH1cblx0XG5cdHZhciBSZWFjdFVwZGF0
ZXNJbmplY3Rpb24gPSB7XG5cdCAgaW5qZWN0UmVjb25jaWxlVHJhbnNhY3Rpb246IGZ1bmN0aW9u
IChSZWNvbmNpbGVUcmFuc2FjdGlvbikge1xuXHQgICAgIVJlY29uY2lsZVRyYW5zYWN0aW9uID8g
IGZhbHNlID8gaW52YXJpYW50KGZhbHNlLCAnUmVhY3RVcGRhdGVzOiBtdXN0IHByb3ZpZGUgYSBy
ZWNvbmNpbGUgdHJhbnNhY3Rpb24gY2xhc3MnKSA6IF9wcm9kSW52YXJpYW50KCcxMjYnKSA6IHZv
aWQgMDtcblx0ICAgIFJlYWN0VXBkYXRlcy5SZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9uID0gUmVj
b25jaWxlVHJhbnNhY3Rpb247XG5cdCAgfSxcblx0XG5cdCAgaW5qZWN0QmF0Y2hpbmdTdHJhdGVn
eTogZnVuY3Rpb24gKF9iYXRjaGluZ1N0cmF0ZWd5KSB7XG5cdCAgICAhX2JhdGNoaW5nU3RyYXRl
Z3kgPyAgZmFsc2UgPyBpbnZhcmlhbnQoZmFsc2UsICdSZWFjdFVwZGF0ZXM6IG11c3QgcHJvdmlk
ZSBhIGJhdGNoaW5nIHN0cmF0ZWd5JykgOiBfcHJvZEludmFyaWFudCgnMTI3JykgOiB2b2lkIDA7
XG5cdCAgICAhKHR5cGVvZiBfYmF0Y2hpbmdTdHJhdGVneS5iYXRjaGVkVXBkYXRlcyA9PT0gJ2Z1
bmN0aW9uJykgPyAgZmFsc2UgPyBpbnZhcmlhbnQoZmFsc2UsICdSZWFjdFVwZGF0ZXM6IG11c3Qg
cHJvdmlkZSBhIGJhdGNoZWRVcGRhdGVzKCkgZnVuY3Rpb24nKSA6IF9wcm9kSW52YXJpYW50KCcx
MjgnKSA6IHZvaWQgMDtcblx0ICAgICEodHlwZW9mIF9iYXRjaGluZ1N0cmF0ZWd5LmlzQmF0Y2hp
bmdVcGRhdGVzID09PSAnYm9vbGVhbicpID8gIGZhbHNlID8gaW52YXJpYW50KGZhbHNlLCAnUmVh
Y3RVcGRhdGVzOiBtdXN0IHByb3ZpZGUgYW4gaXNCYXRjaGluZ1VwZGF0ZXMgYm9vbGVhbiBhdHRy
aWJ1dGUnKSA6IF9wcm9kSW52YXJpYW50KCcxMjknKSA6IHZvaWQgMDtcblx0ICAgIGJhdGNoaW5n
U3RyYXRlZ3kgPSBfYmF0Y2hpbmdTdHJhdGVneTtcblx0ICB9XG5cdH07XG5cdFxuXHR2YXIgUmVh
Y3RVcGRhdGVzID0ge1xuXHQgIC8qKlxuXHQgICAqIFJlYWN0IHJlZmVyZW5jZXMgYFJlYWN0UmVj
b25jaWxlVHJhbnNhY3Rpb25gIHVzaW5nIHRoaXMgcHJvcGVydHkgaW4gb3JkZXJcblx0ICAgKiB0
byBhbGxvdyBkZXBlbmRlbmN5IGluamVjdGlvbi5cblx0ICAgKlxuXHQgICAqIEBpbnRlcm5hbFxu
XHQgICAqL1xuXHQgIFJlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb246IG51bGwsXG5cdFxuXHQgIGJh
dGNoZWRVcGRhdGVzOiBiYXRjaGVkVXBkYXRlcyxcblx0ICBlbnF1ZXVlVXBkYXRlOiBlbnF1ZXVl
VXBkYXRlLFxuXHQgIGZsdXNoQmF0Y2hlZFVwZGF0ZXM6IGZsdXNoQmF0Y2hlZFVwZGF0ZXMsXG5c
dCAgaW5qZWN0aW9uOiBSZWFjdFVwZGF0ZXNJbmplY3Rpb24sXG5cdCAgYXNhcDogYXNhcFxuXHR9
O1xuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBSZWFjdFVwZGF0ZXM7XG5cbi8qKiovIH0sXG4vKiAx
MCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9f
KSB7XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMu
XG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUg
aXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQg
KiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUu
IEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQg
aW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqL1xu
XHRcblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0dmFyIF9hc3NpZ24gPSBfX3dlYnBhY2tfcmVxdWly
ZV9fKDQpO1xuXHRcblx0dmFyIFBvb2xlZENsYXNzID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMyk7
XG5cdFxuXHR2YXIgZW1wdHlGdW5jdGlvbiA9IF9fd2VicGFja19yZXF1aXJlX18oNyk7XG5cdHZh
ciB3YXJuaW5nID0gX193ZWJwYWNrX3JlcXVpcmVfXygyKTtcblx0XG5cdHZhciBkaWRXYXJuRm9y
QWRkZWROZXdQcm9wZXJ0eSA9IGZhbHNlO1xuXHR2YXIgaXNQcm94eVN1cHBvcnRlZCA9IHR5cGVv
ZiBQcm94eSA9PT0gJ2Z1bmN0aW9uJztcblx0XG5cdHZhciBzaG91bGRCZVJlbGVhc2VkUHJvcGVy
dGllcyA9IFsnZGlzcGF0Y2hDb25maWcnLCAnX3RhcmdldEluc3QnLCAnbmF0aXZlRXZlbnQnLCAn
aXNEZWZhdWx0UHJldmVudGVkJywgJ2lzUHJvcGFnYXRpb25TdG9wcGVkJywgJ19kaXNwYXRjaExp
c3RlbmVycycsICdfZGlzcGF0Y2hJbnN0YW5jZXMnXTtcblx0XG5cdC8qKlxuXHQgKiBAaW50ZXJm
YWNlIEV2ZW50XG5cdCAqIEBzZWUgaHR0cDovL3d3dy53My5vcmcvVFIvRE9NLUxldmVsLTMtRXZl
bnRzL1xuXHQgKi9cblx0dmFyIEV2ZW50SW50ZXJmYWNlID0ge1xuXHQgIHR5cGU6IG51bGwsXG5c
dCAgdGFyZ2V0OiBudWxsLFxuXHQgIC8vIGN1cnJlbnRUYXJnZXQgaXMgc2V0IHdoZW4gZGlzcGF0
Y2hpbmc7IG5vIHVzZSBpbiBjb3B5aW5nIGl0IGhlcmVcblx0ICBjdXJyZW50VGFyZ2V0OiBlbXB0
eUZ1bmN0aW9uLnRoYXRSZXR1cm5zTnVsbCxcblx0ICBldmVudFBoYXNlOiBudWxsLFxuXHQgIGJ1
YmJsZXM6IG51bGwsXG5cdCAgY2FuY2VsYWJsZTogbnVsbCxcblx0ICB0aW1lU3RhbXA6IGZ1bmN0
aW9uIChldmVudCkge1xuXHQgICAgcmV0dXJuIGV2ZW50LnRpbWVTdGFtcCB8fCBEYXRlLm5vdygp
O1xuXHQgIH0sXG5cdCAgZGVmYXVsdFByZXZlbnRlZDogbnVsbCxcblx0ICBpc1RydXN0ZWQ6IG51
bGxcblx0fTtcblx0XG5cdC8qKlxuXHQgKiBTeW50aGV0aWMgZXZlbnRzIGFyZSBkaXNwYXRjaGVk
IGJ5IGV2ZW50IHBsdWdpbnMsIHR5cGljYWxseSBpbiByZXNwb25zZSB0byBhXG5cdCAqIHRvcC1s
ZXZlbCBldmVudCBkZWxlZ2F0aW9uIGhhbmRsZXIuXG5cdCAqXG5cdCAqIFRoZXNlIHN5c3RlbXMg
c2hvdWxkIGdlbmVyYWxseSB1c2UgcG9vbGluZyB0byByZWR1Y2UgdGhlIGZyZXF1ZW5jeSBvZiBn
YXJiYWdlXG5cdCAqIGNvbGxlY3Rpb24uIFRoZSBzeXN0ZW0gc2hvdWxkIGNoZWNrIGBpc1BlcnNp
c3RlbnRgIHRvIGRldGVybWluZSB3aGV0aGVyIHRoZVxuXHQgKiBldmVudCBzaG91bGQgYmUgcmVs
ZWFzZWQgaW50byB0aGUgcG9vbCBhZnRlciBiZWluZyBkaXNwYXRjaGVkLiBVc2VycyB0aGF0XG5c
dCAqIG5lZWQgYSBwZXJzaXN0ZWQgZXZlbnQgc2hvdWxkIGludm9rZSBgcGVyc2lzdGAuXG5cdCAq
XG5cdCAqIFN5bnRoZXRpYyBldmVudHMgKGFuZCBzdWJjbGFzc2VzKSBpbXBsZW1lbnQgdGhlIERP
TSBMZXZlbCAzIEV2ZW50cyBBUEkgYnlcblx0ICogbm9ybWFsaXppbmcgYnJvd3NlciBxdWlya3Mu
IFN1YmNsYXNzZXMgZG8gbm90IG5lY2Vzc2FyaWx5IGhhdmUgdG8gaW1wbGVtZW50IGFcblx0ICog
RE9NIGludGVyZmFjZTsgY3VzdG9tIGFwcGxpY2F0aW9uLXNwZWNpZmljIGV2ZW50cyBjYW4gYWxz
byBzdWJjbGFzcyB0aGlzLlxuXHQgKlxuXHQgKiBAcGFyYW0ge29iamVjdH0gZGlzcGF0Y2hDb25m
aWcgQ29uZmlndXJhdGlvbiB1c2VkIHRvIGRpc3BhdGNoIHRoaXMgZXZlbnQuXG5cdCAqIEBwYXJh
bSB7Kn0gdGFyZ2V0SW5zdCBNYXJrZXIgaWRlbnRpZnlpbmcgdGhlIGV2ZW50IHRhcmdldC5cblx0
ICogQHBhcmFtIHtvYmplY3R9IG5hdGl2ZUV2ZW50IE5hdGl2ZSBicm93c2VyIGV2ZW50LlxuXHQg
KiBAcGFyYW0ge0RPTUV2ZW50VGFyZ2V0fSBuYXRpdmVFdmVudFRhcmdldCBUYXJnZXQgbm9kZS5c
blx0ICovXG5cdGZ1bmN0aW9uIFN5bnRoZXRpY0V2ZW50KGRpc3BhdGNoQ29uZmlnLCB0YXJnZXRJ
bnN0LCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpIHtcblx0ICBpZiAoZmFsc2UpIHtc
blx0ICAgIC8vIHRoZXNlIGhhdmUgYSBnZXR0ZXIvc2V0dGVyIGZvciB3YXJuaW5nc1xuXHQgICAg
ZGVsZXRlIHRoaXMubmF0aXZlRXZlbnQ7XG5cdCAgICBkZWxldGUgdGhpcy5wcmV2ZW50RGVmYXVs
dDtcblx0ICAgIGRlbGV0ZSB0aGlzLnN0b3BQcm9wYWdhdGlvbjtcblx0ICB9XG5cdFxuXHQgIHRo
aXMuZGlzcGF0Y2hDb25maWcgPSBkaXNwYXRjaENvbmZpZztcblx0ICB0aGlzLl90YXJnZXRJbnN0
ID0gdGFyZ2V0SW5zdDtcblx0ICB0aGlzLm5hdGl2ZUV2ZW50ID0gbmF0aXZlRXZlbnQ7XG5cdFxu
XHQgIHZhciBJbnRlcmZhY2UgPSB0aGlzLmNvbnN0cnVjdG9yLkludGVyZmFjZTtcblx0ICBmb3Ig
KHZhciBwcm9wTmFtZSBpbiBJbnRlcmZhY2UpIHtcblx0ICAgIGlmICghSW50ZXJmYWNlLmhhc093
blByb3BlcnR5KHByb3BOYW1lKSkge1xuXHQgICAgICBjb250aW51ZTtcblx0ICAgIH1cblx0ICAg
IGlmIChmYWxzZSkge1xuXHQgICAgICBkZWxldGUgdGhpc1twcm9wTmFtZV07IC8vIHRoaXMgaGFz
IGEgZ2V0dGVyL3NldHRlciBmb3Igd2FybmluZ3Ncblx0ICAgIH1cblx0ICAgIHZhciBub3JtYWxp
emUgPSBJbnRlcmZhY2VbcHJvcE5hbWVdO1xuXHQgICAgaWYgKG5vcm1hbGl6ZSkge1xuXHQgICAg
ICB0aGlzW3Byb3BOYW1lXSA9IG5vcm1hbGl6ZShuYXRpdmVFdmVudCk7XG5cdCAgICB9IGVsc2Ug
e1xuXHQgICAgICBpZiAocHJvcE5hbWUgPT09ICd0YXJnZXQnKSB7XG5cdCAgICAgICAgdGhpcy50
YXJnZXQgPSBuYXRpdmVFdmVudFRhcmdldDtcblx0ICAgICAgfSBlbHNlIHtcblx0ICAgICAgICB0
aGlzW3Byb3BOYW1lXSA9IG5hdGl2ZUV2ZW50W3Byb3BOYW1lXTtcblx0ICAgICAgfVxuXHQgICAg
fVxuXHQgIH1cblx0XG5cdCAgdmFyIGRlZmF1bHRQcmV2ZW50ZWQgPSBuYXRpdmVFdmVudC5kZWZh
dWx0UHJldmVudGVkICE9IG51bGwgPyBuYXRpdmVFdmVudC5kZWZhdWx0UHJldmVudGVkIDogbmF0
aXZlRXZlbnQucmV0dXJuVmFsdWUgPT09IGZhbHNlO1xuXHQgIGlmIChkZWZhdWx0UHJldmVudGVk
KSB7XG5cdCAgICB0aGlzLmlzRGVmYXVsdFByZXZlbnRlZCA9IGVtcHR5RnVuY3Rpb24udGhhdFJl
dHVybnNUcnVlO1xuXHQgIH0gZWxzZSB7XG5cdCAgICB0aGlzLmlzRGVmYXVsdFByZXZlbnRlZCA9
IGVtcHR5RnVuY3Rpb24udGhhdFJldHVybnNGYWxzZTtcblx0ICB9XG5cdCAgdGhpcy5pc1Byb3Bh
Z2F0aW9uU3RvcHBlZCA9IGVtcHR5RnVuY3Rpb24udGhhdFJldHVybnNGYWxzZTtcblx0ICByZXR1
cm4gdGhpcztcblx0fVxuXHRcblx0X2Fzc2lnbihTeW50aGV0aWNFdmVudC5wcm90b3R5cGUsIHtc
blx0ICBwcmV2ZW50RGVmYXVsdDogZnVuY3Rpb24gKCkge1xuXHQgICAgdGhpcy5kZWZhdWx0UHJl
dmVudGVkID0gdHJ1ZTtcblx0ICAgIHZhciBldmVudCA9IHRoaXMubmF0aXZlRXZlbnQ7XG5cdCAg
ICBpZiAoIWV2ZW50KSB7XG5cdCAgICAgIHJldHVybjtcblx0ICAgIH1cblx0XG5cdCAgICBpZiAo
ZXZlbnQucHJldmVudERlZmF1bHQpIHtcblx0ICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtc
blx0ICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHZhbGlkLXR5cGVvZlxuXHQgICAg
fSBlbHNlIGlmICh0eXBlb2YgZXZlbnQucmV0dXJuVmFsdWUgIT09ICd1bmtub3duJykge1xuXHQg
ICAgICBldmVudC5yZXR1cm5WYWx1ZSA9IGZhbHNlO1xuXHQgICAgfVxuXHQgICAgdGhpcy5pc0Rl
ZmF1bHRQcmV2ZW50ZWQgPSBlbXB0eUZ1bmN0aW9uLnRoYXRSZXR1cm5zVHJ1ZTtcblx0ICB9LFxu
XHRcblx0ICBzdG9wUHJvcGFnYXRpb246IGZ1bmN0aW9uICgpIHtcblx0ICAgIHZhciBldmVudCA9
IHRoaXMubmF0aXZlRXZlbnQ7XG5cdCAgICBpZiAoIWV2ZW50KSB7XG5cdCAgICAgIHJldHVybjtc
blx0ICAgIH1cblx0XG5cdCAgICBpZiAoZXZlbnQuc3RvcFByb3BhZ2F0aW9uKSB7XG5cdCAgICAg
IGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXHQgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0
LWxpbmUgdmFsaWQtdHlwZW9mXG5cdCAgICB9IGVsc2UgaWYgKHR5cGVvZiBldmVudC5jYW5jZWxC
dWJibGUgIT09ICd1bmtub3duJykge1xuXHQgICAgICAvLyBUaGUgQ2hhbmdlRXZlbnRQbHVnaW4g
cmVnaXN0ZXJzIGEgXCJwcm9wZXJ0eWNoYW5nZVwiIGV2ZW50IGZvclxuXHQgICAgICAvLyBJRS4g
VGhpcyBldmVudCBkb2VzIG5vdCBzdXBwb3J0IGJ1YmJsaW5nIG9yIGNhbmNlbGxpbmcsIGFuZFxu
XHQgICAgICAvLyBhbnkgcmVmZXJlbmNlcyB0byBjYW5jZWxCdWJibGUgdGhyb3cgXCJNZW1iZXIg
bm90IGZvdW5kXCIuICBBXG5cdCAgICAgIC8vIHR5cGVvZiBjaGVjayBvZiBcInVua25vd25cIiBj
aXJjdW12ZW50cyB0aGlzIGlzc3VlIChhbmQgaXMgYWxzb1xuXHQgICAgICAvLyBJRSBzcGVjaWZp
YykuXG5cdCAgICAgIGV2ZW50LmNhbmNlbEJ1YmJsZSA9IHRydWU7XG5cdCAgICB9XG5cdFxuXHQg
ICAgdGhpcy5pc1Byb3BhZ2F0aW9uU3RvcHBlZCA9IGVtcHR5RnVuY3Rpb24udGhhdFJldHVybnNU
cnVlO1xuXHQgIH0sXG5cdFxuXHQgIC8qKlxuXHQgICAqIFdlIHJlbGVhc2UgYWxsIGRpc3BhdGNo
ZWQgYFN5bnRoZXRpY0V2ZW50YHMgYWZ0ZXIgZWFjaCBldmVudCBsb29wLCBhZGRpbmdcblx0ICAg
KiB0aGVtIGJhY2sgaW50byB0aGUgcG9vbC4gVGhpcyBhbGxvd3MgYSB3YXkgdG8gaG9sZCBvbnRv
IGEgcmVmZXJlbmNlIHRoYXRcblx0ICAgKiB3b24ndCBiZSBhZGRlZCBiYWNrIGludG8gdGhlIHBv
b2wuXG5cdCAgICovXG5cdCAgcGVyc2lzdDogZnVuY3Rpb24gKCkge1xuXHQgICAgdGhpcy5pc1Bl
cnNpc3RlbnQgPSBlbXB0eUZ1bmN0aW9uLnRoYXRSZXR1cm5zVHJ1ZTtcblx0ICB9LFxuXHRcblx0
ICAvKipcblx0ICAgKiBDaGVja3MgaWYgdGhpcyBldmVudCBzaG91bGQgYmUgcmVsZWFzZWQgYmFj
ayBpbnRvIHRoZSBwb29sLlxuXHQgICAqXG5cdCAgICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBp
ZiB0aGlzIHNob3VsZCBub3QgYmUgcmVsZWFzZWQsIGZhbHNlIG90aGVyd2lzZS5cblx0ICAgKi9c
blx0ICBpc1BlcnNpc3RlbnQ6IGVtcHR5RnVuY3Rpb24udGhhdFJldHVybnNGYWxzZSxcblx0XG5c
dCAgLyoqXG5cdCAgICogYFBvb2xlZENsYXNzYCBsb29rcyBmb3IgYGRlc3RydWN0b3JgIG9uIGVh
Y2ggaW5zdGFuY2UgaXQgcmVsZWFzZXMuXG5cdCAgICovXG5cdCAgZGVzdHJ1Y3RvcjogZnVuY3Rp
b24gKCkge1xuXHQgICAgdmFyIEludGVyZmFjZSA9IHRoaXMuY29uc3RydWN0b3IuSW50ZXJmYWNl
O1xuXHQgICAgZm9yICh2YXIgcHJvcE5hbWUgaW4gSW50ZXJmYWNlKSB7XG5cdCAgICAgIGlmIChm
YWxzZSkge1xuXHQgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCBwcm9wTmFtZSwg
Z2V0UG9vbGVkV2FybmluZ1Byb3BlcnR5RGVmaW5pdGlvbihwcm9wTmFtZSwgSW50ZXJmYWNlW3By
b3BOYW1lXSkpO1xuXHQgICAgICB9IGVsc2Uge1xuXHQgICAgICAgIHRoaXNbcHJvcE5hbWVdID0g
bnVsbDtcblx0ICAgICAgfVxuXHQgICAgfVxuXHQgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzaG91
bGRCZVJlbGVhc2VkUHJvcGVydGllcy5sZW5ndGg7IGkrKykge1xuXHQgICAgICB0aGlzW3Nob3Vs
ZEJlUmVsZWFzZWRQcm9wZXJ0aWVzW2ldXSA9IG51bGw7XG5cdCAgICB9XG5cdCAgICBpZiAoZmFs
c2UpIHtcblx0ICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsICduYXRpdmVFdmVudCcs
IGdldFBvb2xlZFdhcm5pbmdQcm9wZXJ0eURlZmluaXRpb24oJ25hdGl2ZUV2ZW50JywgbnVsbCkp
O1xuXHQgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgJ3ByZXZlbnREZWZhdWx0Jywg
Z2V0UG9vbGVkV2FybmluZ1Byb3BlcnR5RGVmaW5pdGlvbigncHJldmVudERlZmF1bHQnLCBlbXB0
eUZ1bmN0aW9uKSk7XG5cdCAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCAnc3RvcFBy
b3BhZ2F0aW9uJywgZ2V0UG9vbGVkV2FybmluZ1Byb3BlcnR5RGVmaW5pdGlvbignc3RvcFByb3Bh
Z2F0aW9uJywgZW1wdHlGdW5jdGlvbikpO1xuXHQgICAgfVxuXHQgIH1cblx0fSk7XG5cdFxuXHRT
eW50aGV0aWNFdmVudC5JbnRlcmZhY2UgPSBFdmVudEludGVyZmFjZTtcblx0XG5cdGlmIChmYWxz
ZSkge1xuXHQgIGlmIChpc1Byb3h5U3VwcG9ydGVkKSB7XG5cdCAgICAvKmVzbGludC1kaXNhYmxl
IG5vLWZ1bmMtYXNzaWduICovXG5cdCAgICBTeW50aGV0aWNFdmVudCA9IG5ldyBQcm94eShTeW50
aGV0aWNFdmVudCwge1xuXHQgICAgICBjb25zdHJ1Y3Q6IGZ1bmN0aW9uICh0YXJnZXQsIGFyZ3Mp
IHtcblx0ICAgICAgICByZXR1cm4gdGhpcy5hcHBseSh0YXJnZXQsIE9iamVjdC5jcmVhdGUodGFy
Z2V0LnByb3RvdHlwZSksIGFyZ3MpO1xuXHQgICAgICB9LFxuXHQgICAgICBhcHBseTogZnVuY3Rp
b24gKGNvbnN0cnVjdG9yLCB0aGF0LCBhcmdzKSB7XG5cdCAgICAgICAgcmV0dXJuIG5ldyBQcm94
eShjb25zdHJ1Y3Rvci5hcHBseSh0aGF0LCBhcmdzKSwge1xuXHQgICAgICAgICAgc2V0OiBmdW5j
dGlvbiAodGFyZ2V0LCBwcm9wLCB2YWx1ZSkge1xuXHQgICAgICAgICAgICBpZiAocHJvcCAhPT0g
J2lzUGVyc2lzdGVudCcgJiYgIXRhcmdldC5jb25zdHJ1Y3Rvci5JbnRlcmZhY2UuaGFzT3duUHJv
cGVydHkocHJvcCkgJiYgc2hvdWxkQmVSZWxlYXNlZFByb3BlcnRpZXMuaW5kZXhPZihwcm9wKSA9
PT0gLTEpIHtcblx0ICAgICAgICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1
Y3Rpb24nID8gd2FybmluZyhkaWRXYXJuRm9yQWRkZWROZXdQcm9wZXJ0eSB8fCB0YXJnZXQuaXNQ
ZXJzaXN0ZW50KCksIFwiVGhpcyBzeW50aGV0aWMgZXZlbnQgaXMgcmV1c2VkIGZvciBwZXJmb3Jt
YW5jZSByZWFzb25zLiBJZiB5b3UncmUgXCIgKyBcInNlZWluZyB0aGlzLCB5b3UncmUgYWRkaW5n
IGEgbmV3IHByb3BlcnR5IGluIHRoZSBzeW50aGV0aWMgZXZlbnQgb2JqZWN0LiBcIiArICdUaGUg
cHJvcGVydHkgaXMgbmV2ZXIgcmVsZWFzZWQuIFNlZSAnICsgJ2h0dHBzOi8vZmIubWUvcmVhY3Qt
ZXZlbnQtcG9vbGluZyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4nKSA6IHZvaWQgMDtcblx0ICAgICAg
ICAgICAgICBkaWRXYXJuRm9yQWRkZWROZXdQcm9wZXJ0eSA9IHRydWU7XG5cdCAgICAgICAgICAg
IH1cblx0ICAgICAgICAgICAgdGFyZ2V0W3Byb3BdID0gdmFsdWU7XG5cdCAgICAgICAgICAgIHJl
dHVybiB0cnVlO1xuXHQgICAgICAgICAgfVxuXHQgICAgICAgIH0pO1xuXHQgICAgICB9XG5cdCAg
ICB9KTtcblx0ICAgIC8qZXNsaW50LWVuYWJsZSBuby1mdW5jLWFzc2lnbiAqL1xuXHQgIH1cblx0
fVxuXHQvKipcblx0ICogSGVscGVyIHRvIHJlZHVjZSBib2lsZXJwbGF0ZSB3aGVuIGNyZWF0aW5n
IHN1YmNsYXNzZXMuXG5cdCAqXG5cdCAqIEBwYXJhbSB7ZnVuY3Rpb259IENsYXNzXG5cdCAqIEBw
YXJhbSB7P29iamVjdH0gSW50ZXJmYWNlXG5cdCAqL1xuXHRTeW50aGV0aWNFdmVudC5hdWdtZW50
Q2xhc3MgPSBmdW5jdGlvbiAoQ2xhc3MsIEludGVyZmFjZSkge1xuXHQgIHZhciBTdXBlciA9IHRo
aXM7XG5cdFxuXHQgIHZhciBFID0gZnVuY3Rpb24gKCkge307XG5cdCAgRS5wcm90b3R5cGUgPSBT
dXBlci5wcm90b3R5cGU7XG5cdCAgdmFyIHByb3RvdHlwZSA9IG5ldyBFKCk7XG5cdFxuXHQgIF9h
c3NpZ24ocHJvdG90eXBlLCBDbGFzcy5wcm90b3R5cGUpO1xuXHQgIENsYXNzLnByb3RvdHlwZSA9
IHByb3RvdHlwZTtcblx0ICBDbGFzcy5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBDbGFzcztcblx0
XG5cdCAgQ2xhc3MuSW50ZXJmYWNlID0gX2Fzc2lnbih7fSwgU3VwZXIuSW50ZXJmYWNlLCBJbnRl
cmZhY2UpO1xuXHQgIENsYXNzLmF1Z21lbnRDbGFzcyA9IFN1cGVyLmF1Z21lbnRDbGFzcztcblx0
XG5cdCAgUG9vbGVkQ2xhc3MuYWRkUG9vbGluZ1RvKENsYXNzLCBQb29sZWRDbGFzcy5mb3VyQXJn
dW1lbnRQb29sZXIpO1xuXHR9O1xuXHRcblx0UG9vbGVkQ2xhc3MuYWRkUG9vbGluZ1RvKFN5bnRo
ZXRpY0V2ZW50LCBQb29sZWRDbGFzcy5mb3VyQXJndW1lbnRQb29sZXIpO1xuXHRcblx0bW9kdWxl
LmV4cG9ydHMgPSBTeW50aGV0aWNFdmVudDtcblx0XG5cdC8qKlxuXHQgICogSGVscGVyIHRvIG51
bGxpZnkgc3ludGhldGljRXZlbnQgaW5zdGFuY2UgcHJvcGVydGllcyB3aGVuIGRlc3RydWN0aW5n
XG5cdCAgKlxuXHQgICogQHBhcmFtIHtvYmplY3R9IFN5bnRoZXRpY0V2ZW50XG5cdCAgKiBAcGFy
YW0ge1N0cmluZ30gcHJvcE5hbWVcblx0ICAqIEByZXR1cm4ge29iamVjdH0gZGVmaW5lUHJvcGVy
dHkgb2JqZWN0XG5cdCAgKi9cblx0ZnVuY3Rpb24gZ2V0UG9vbGVkV2FybmluZ1Byb3BlcnR5RGVm
aW5pdGlvbihwcm9wTmFtZSwgZ2V0VmFsKSB7XG5cdCAgdmFyIGlzRnVuY3Rpb24gPSB0eXBlb2Yg
Z2V0VmFsID09PSAnZnVuY3Rpb24nO1xuXHQgIHJldHVybiB7XG5cdCAgICBjb25maWd1cmFibGU6
IHRydWUsXG5cdCAgICBzZXQ6IHNldCxcblx0ICAgIGdldDogZ2V0XG5cdCAgfTtcblx0XG5cdCAg
ZnVuY3Rpb24gc2V0KHZhbCkge1xuXHQgICAgdmFyIGFjdGlvbiA9IGlzRnVuY3Rpb24gPyAnc2V0
dGluZyB0aGUgbWV0aG9kJyA6ICdzZXR0aW5nIHRoZSBwcm9wZXJ0eSc7XG5cdCAgICB3YXJuKGFj
dGlvbiwgJ1RoaXMgaXMgZWZmZWN0aXZlbHkgYSBuby1vcCcpO1xuXHQgICAgcmV0dXJuIHZhbDtc
blx0ICB9XG5cdFxuXHQgIGZ1bmN0aW9uIGdldCgpIHtcblx0ICAgIHZhciBhY3Rpb24gPSBpc0Z1
bmN0aW9uID8gJ2FjY2Vzc2luZyB0aGUgbWV0aG9kJyA6ICdhY2Nlc3NpbmcgdGhlIHByb3BlcnR5
Jztcblx0ICAgIHZhciByZXN1bHQgPSBpc0Z1bmN0aW9uID8gJ1RoaXMgaXMgYSBuby1vcCBmdW5j
dGlvbicgOiAnVGhpcyBpcyBzZXQgdG8gbnVsbCc7XG5cdCAgICB3YXJuKGFjdGlvbiwgcmVzdWx0
KTtcblx0ICAgIHJldHVybiBnZXRWYWw7XG5cdCAgfVxuXHRcblx0ICBmdW5jdGlvbiB3YXJuKGFj
dGlvbiwgcmVzdWx0KSB7XG5cdCAgICB2YXIgd2FybmluZ0NvbmRpdGlvbiA9IGZhbHNlO1xuXHQg
ICAgIGZhbHNlID8gd2FybmluZyh3YXJuaW5nQ29uZGl0aW9uLCBcIlRoaXMgc3ludGhldGljIGV2
ZW50IGlzIHJldXNlZCBmb3IgcGVyZm9ybWFuY2UgcmVhc29ucy4gSWYgeW91J3JlIHNlZWluZyB0
aGlzLCBcIiArIFwieW91J3JlICVzIGAlc2Agb24gYSByZWxlYXNlZC9udWxsaWZpZWQgc3ludGhl
dGljIGV2ZW50LiAlcy4gXCIgKyAnSWYgeW91IG11c3Qga2VlcCB0aGUgb3JpZ2luYWwgc3ludGhl
dGljIGV2ZW50IGFyb3VuZCwgdXNlIGV2ZW50LnBlcnNpc3QoKS4gJyArICdTZWUgaHR0cHM6Ly9m
Yi5tZS9yZWFjdC1ldmVudC1wb29saW5nIGZvciBtb3JlIGluZm9ybWF0aW9uLicsIGFjdGlvbiwg
cHJvcE5hbWUsIHJlc3VsdCkgOiB2b2lkIDA7XG5cdCAgfVxuXHR9XG5cbi8qKiovIH0sXG4vKiAx
MSAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cblx0LyoqXG5cdCAqIENv
cHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhl
IEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhl
IHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRc
blx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBp
biB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqIFxuXHQgKi9cblx0XG5cdCd1c2Ugc3Ry
aWN0Jztcblx0XG5cdC8qKlxuXHQgKiBLZWVwcyB0cmFjayBvZiB0aGUgY3VycmVudCBvd25lci5c
blx0ICpcblx0ICogVGhlIGN1cnJlbnQgb3duZXIgaXMgdGhlIGNvbXBvbmVudCB3aG8gc2hvdWxk
IG93biBhbnkgY29tcG9uZW50cyB0aGF0IGFyZVxuXHQgKiBjdXJyZW50bHkgYmVpbmcgY29uc3Ry
dWN0ZWQuXG5cdCAqL1xuXHR2YXIgUmVhY3RDdXJyZW50T3duZXIgPSB7XG5cdCAgLyoqXG5cdCAg
ICogQGludGVybmFsXG5cdCAgICogQHR5cGUge1JlYWN0Q29tcG9uZW50fVxuXHQgICAqL1xuXHQg
IGN1cnJlbnQ6IG51bGxcblx0fTtcblx0XG5cdG1vZHVsZS5leHBvcnRzID0gUmVhY3RDdXJyZW50
T3duZXI7XG5cbi8qKiovIH0sXG4vKiAxMiAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBv
cnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0bW9k
dWxlLmV4cG9ydHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE3KTtcblxuXG4vKioqLyB9LFxuLyog
MTMgKi9cblsyMzEsIDNdLFxuLyogMTQgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0
cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxNS1w
cmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxu
XHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGlj
ZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9y
eSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVu
dCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGly
ZWN0b3J5LlxuXHQgKlxuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdHZhciBET01O
YW1lc3BhY2VzID0gX193ZWJwYWNrX3JlcXVpcmVfXygzNSk7XG5cdHZhciBzZXRJbm5lckhUTUwg
PSBfX3dlYnBhY2tfcmVxdWlyZV9fKDI5KTtcblx0XG5cdHZhciBjcmVhdGVNaWNyb3NvZnRVbnNh
ZmVMb2NhbEZ1bmN0aW9uID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0Myk7XG5cdHZhciBzZXRUZXh0
Q29udGVudCA9IF9fd2VicGFja19yZXF1aXJlX18oNzcpO1xuXHRcblx0dmFyIEVMRU1FTlRfTk9E
RV9UWVBFID0gMTtcblx0dmFyIERPQ1VNRU5UX0ZSQUdNRU5UX05PREVfVFlQRSA9IDExO1xuXHRc
blx0LyoqXG5cdCAqIEluIElFICg4LTExKSBhbmQgRWRnZSwgYXBwZW5kaW5nIG5vZGVzIHdpdGgg
bm8gY2hpbGRyZW4gaXMgZHJhbWF0aWNhbGx5XG5cdCAqIGZhc3RlciB0aGFuIGFwcGVuZGluZyBh
IGZ1bGwgc3VidHJlZSwgc28gd2UgZXNzZW50aWFsbHkgcXVldWUgdXAgdGhlXG5cdCAqIC5hcHBl
bmRDaGlsZCBjYWxscyBoZXJlIGFuZCBhcHBseSB0aGVtIHNvIGVhY2ggbm9kZSBpcyBhZGRlZCB0
byBpdHMgcGFyZW50XG5cdCAqIGJlZm9yZSBhbnkgY2hpbGRyZW4gYXJlIGFkZGVkLlxuXHQgKlxu
XHQgKiBJbiBvdGhlciBicm93c2VycywgZG9pbmcgc28gaXMgc2xvd2VyIG9yIG5ldXRyYWwgY29t
cGFyZWQgdG8gdGhlIG90aGVyIG9yZGVyXG5cdCAqIChpbiBGaXJlZm94LCB0d2ljZSBhcyBzbG93
KSBzbyB3ZSBvbmx5IGRvIHRoaXMgaW52ZXJzaW9uIGluIElFLlxuXHQgKlxuXHQgKiBTZWUgaHR0
cHM6Ly9naXRodWIuY29tL3NwaWN5ai9pbm5lcmh0bWwtdnMtY3JlYXRlZWxlbWVudC12cy1jbG9u
ZW5vZGUuXG5cdCAqL1xuXHR2YXIgZW5hYmxlTGF6eSA9IHR5cGVvZiBkb2N1bWVudCAhPT0gJ3Vu
ZGVmaW5lZCcgJiYgdHlwZW9mIGRvY3VtZW50LmRvY3VtZW50TW9kZSA9PT0gJ251bWJlcicgfHwg
dHlwZW9mIG5hdmlnYXRvciAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIG5hdmlnYXRvci51c2Vy
QWdlbnQgPT09ICdzdHJpbmcnICYmIC9cXGJFZGdlXFwvXFxkLy50ZXN0KG5hdmlnYXRvci51c2Vy
QWdlbnQpO1xuXHRcblx0ZnVuY3Rpb24gaW5zZXJ0VHJlZUNoaWxkcmVuKHRyZWUpIHtcblx0ICBp
ZiAoIWVuYWJsZUxhenkpIHtcblx0ICAgIHJldHVybjtcblx0ICB9XG5cdCAgdmFyIG5vZGUgPSB0
cmVlLm5vZGU7XG5cdCAgdmFyIGNoaWxkcmVuID0gdHJlZS5jaGlsZHJlbjtcblx0ICBpZiAoY2hp
bGRyZW4ubGVuZ3RoKSB7XG5cdCAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0
aDsgaSsrKSB7XG5cdCAgICAgIGluc2VydFRyZWVCZWZvcmUobm9kZSwgY2hpbGRyZW5baV0sIG51
bGwpO1xuXHQgICAgfVxuXHQgIH0gZWxzZSBpZiAodHJlZS5odG1sICE9IG51bGwpIHtcblx0ICAg
IHNldElubmVySFRNTChub2RlLCB0cmVlLmh0bWwpO1xuXHQgIH0gZWxzZSBpZiAodHJlZS50ZXh0
ICE9IG51bGwpIHtcblx0ICAgIHNldFRleHRDb250ZW50KG5vZGUsIHRyZWUudGV4dCk7XG5cdCAg
fVxuXHR9XG5cdFxuXHR2YXIgaW5zZXJ0VHJlZUJlZm9yZSA9IGNyZWF0ZU1pY3Jvc29mdFVuc2Fm
ZUxvY2FsRnVuY3Rpb24oZnVuY3Rpb24gKHBhcmVudE5vZGUsIHRyZWUsIHJlZmVyZW5jZU5vZGUp
IHtcblx0ICAvLyBEb2N1bWVudEZyYWdtZW50cyBhcmVuJ3QgYWN0dWFsbHkgcGFydCBvZiB0aGUg
RE9NIGFmdGVyIGluc2VydGlvbiBzb1xuXHQgIC8vIGFwcGVuZGluZyBjaGlsZHJlbiB3b24ndCB1
cGRhdGUgdGhlIERPTS4gV2UgbmVlZCB0byBlbnN1cmUgdGhlIGZyYWdtZW50XG5cdCAgLy8gaXMg
cHJvcGVybHkgcG9wdWxhdGVkIGZpcnN0LCBicmVha2luZyBvdXQgb2Ygb3VyIGxhenkgYXBwcm9h
Y2ggZm9yIGp1c3Rcblx0ICAvLyB0aGlzIGxldmVsLiBBbHNvLCBzb21lIDxvYmplY3Q+IHBsdWdp
bnMgKGxpa2UgRmxhc2ggUGxheWVyKSB3aWxsIHJlYWRcblx0ICAvLyA8cGFyYW0+IG5vZGVzIGlt
bWVkaWF0ZWx5IHVwb24gaW5zZXJ0aW9uIGludG8gdGhlIERPTSwgc28gPG9iamVjdD5cblx0ICAv
LyBtdXN0IGFsc28gYmUgcG9wdWxhdGVkIHByaW9yIHRvIGluc2VydGlvbiBpbnRvIHRoZSBET00u
XG5cdCAgaWYgKHRyZWUubm9kZS5ub2RlVHlwZSA9PT0gRE9DVU1FTlRfRlJBR01FTlRfTk9ERV9U
WVBFIHx8IHRyZWUubm9kZS5ub2RlVHlwZSA9PT0gRUxFTUVOVF9OT0RFX1RZUEUgJiYgdHJlZS5u
b2RlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09ICdvYmplY3QnICYmICh0cmVlLm5vZGUubmFt
ZXNwYWNlVVJJID09IG51bGwgfHwgdHJlZS5ub2RlLm5hbWVzcGFjZVVSSSA9PT0gRE9NTmFtZXNw
YWNlcy5odG1sKSkge1xuXHQgICAgaW5zZXJ0VHJlZUNoaWxkcmVuKHRyZWUpO1xuXHQgICAgcGFy
ZW50Tm9kZS5pbnNlcnRCZWZvcmUodHJlZS5ub2RlLCByZWZlcmVuY2VOb2RlKTtcblx0ICB9IGVs
c2Uge1xuXHQgICAgcGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUodHJlZS5ub2RlLCByZWZlcmVuY2VO
b2RlKTtcblx0ICAgIGluc2VydFRyZWVDaGlsZHJlbih0cmVlKTtcblx0ICB9XG5cdH0pO1xuXHRc
blx0ZnVuY3Rpb24gcmVwbGFjZUNoaWxkV2l0aFRyZWUob2xkTm9kZSwgbmV3VHJlZSkge1xuXHQg
IG9sZE5vZGUucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQobmV3VHJlZS5ub2RlLCBvbGROb2RlKTtc
blx0ICBpbnNlcnRUcmVlQ2hpbGRyZW4obmV3VHJlZSk7XG5cdH1cblx0XG5cdGZ1bmN0aW9uIHF1
ZXVlQ2hpbGQocGFyZW50VHJlZSwgY2hpbGRUcmVlKSB7XG5cdCAgaWYgKGVuYWJsZUxhenkpIHtc
blx0ICAgIHBhcmVudFRyZWUuY2hpbGRyZW4ucHVzaChjaGlsZFRyZWUpO1xuXHQgIH0gZWxzZSB7
XG5cdCAgICBwYXJlbnRUcmVlLm5vZGUuYXBwZW5kQ2hpbGQoY2hpbGRUcmVlLm5vZGUpO1xuXHQg
IH1cblx0fVxuXHRcblx0ZnVuY3Rpb24gcXVldWVIVE1MKHRyZWUsIGh0bWwpIHtcblx0ICBpZiAo
ZW5hYmxlTGF6eSkge1xuXHQgICAgdHJlZS5odG1sID0gaHRtbDtcblx0ICB9IGVsc2Uge1xuXHQg
ICAgc2V0SW5uZXJIVE1MKHRyZWUubm9kZSwgaHRtbCk7XG5cdCAgfVxuXHR9XG5cdFxuXHRmdW5j
dGlvbiBxdWV1ZVRleHQodHJlZSwgdGV4dCkge1xuXHQgIGlmIChlbmFibGVMYXp5KSB7XG5cdCAg
ICB0cmVlLnRleHQgPSB0ZXh0O1xuXHQgIH0gZWxzZSB7XG5cdCAgICBzZXRUZXh0Q29udGVudCh0
cmVlLm5vZGUsIHRleHQpO1xuXHQgIH1cblx0fVxuXHRcblx0ZnVuY3Rpb24gdG9TdHJpbmcoKSB7
XG5cdCAgcmV0dXJuIHRoaXMubm9kZS5ub2RlTmFtZTtcblx0fVxuXHRcblx0ZnVuY3Rpb24gRE9N
TGF6eVRyZWUobm9kZSkge1xuXHQgIHJldHVybiB7XG5cdCAgICBub2RlOiBub2RlLFxuXHQgICAg
Y2hpbGRyZW46IFtdLFxuXHQgICAgaHRtbDogbnVsbCxcblx0ICAgIHRleHQ6IG51bGwsXG5cdCAg
ICB0b1N0cmluZzogdG9TdHJpbmdcblx0ICB9O1xuXHR9XG5cdFxuXHRET01MYXp5VHJlZS5pbnNl
cnRUcmVlQmVmb3JlID0gaW5zZXJ0VHJlZUJlZm9yZTtcblx0RE9NTGF6eVRyZWUucmVwbGFjZUNo
aWxkV2l0aFRyZWUgPSByZXBsYWNlQ2hpbGRXaXRoVHJlZTtcblx0RE9NTGF6eVRyZWUucXVldWVD
aGlsZCA9IHF1ZXVlQ2hpbGQ7XG5cdERPTUxhenlUcmVlLnF1ZXVlSFRNTCA9IHF1ZXVlSFRNTDtc
blx0RE9NTGF6eVRyZWUucXVldWVUZXh0ID0gcXVldWVUZXh0O1xuXHRcblx0bW9kdWxlLmV4cG9y
dHMgPSBET01MYXp5VHJlZTtcblxuLyoqKi8gfSxcbi8qIDE1ICovXG4vKioqLyBmdW5jdGlvbiht
b2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvKipcblx0ICogQ29w
eXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNl
cnZlZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUg
QlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUg
cm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxu
XHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGlu
IHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpcblx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5c
dFxuXHR2YXIgX3Byb2RJbnZhcmlhbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMpO1xuXHRcblx0
dmFyIGludmFyaWFudCA9IF9fd2VicGFja19yZXF1aXJlX18oMSk7XG5cdFxuXHRmdW5jdGlvbiBj
aGVja01hc2sodmFsdWUsIGJpdG1hc2spIHtcblx0ICByZXR1cm4gKHZhbHVlICYgYml0bWFzaykg
PT09IGJpdG1hc2s7XG5cdH1cblx0XG5cdHZhciBET01Qcm9wZXJ0eUluamVjdGlvbiA9IHtcblx0
ICAvKipcblx0ICAgKiBNYXBwaW5nIGZyb20gbm9ybWFsaXplZCwgY2FtZWxjYXNlZCBwcm9wZXJ0
eSBuYW1lcyB0byBhIGNvbmZpZ3VyYXRpb24gdGhhdFxuXHQgICAqIHNwZWNpZmllcyBob3cgdGhl
IGFzc29jaWF0ZWQgRE9NIHByb3BlcnR5IHNob3VsZCBiZSBhY2Nlc3NlZCBvciByZW5kZXJlZC5c
blx0ICAgKi9cblx0ICBNVVNUX1VTRV9QUk9QRVJUWTogMHgxLFxuXHQgIEhBU19CT09MRUFOX1ZB
TFVFOiAweDQsXG5cdCAgSEFTX05VTUVSSUNfVkFMVUU6IDB4OCxcblx0ICBIQVNfUE9TSVRJVkVf
TlVNRVJJQ19WQUxVRTogMHgxMCB8IDB4OCxcblx0ICBIQVNfT1ZFUkxPQURFRF9CT09MRUFOX1ZB
TFVFOiAweDIwLFxuXHRcblx0ICAvKipcblx0ICAgKiBJbmplY3Qgc29tZSBzcGVjaWFsaXplZCBr
bm93bGVkZ2UgYWJvdXQgdGhlIERPTS4gVGhpcyB0YWtlcyBhIGNvbmZpZyBvYmplY3Rcblx0ICAg
KiB3aXRoIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczpcblx0ICAgKlxuXHQgICAqIGlzQ3VzdG9t
QXR0cmlidXRlOiBmdW5jdGlvbiB0aGF0IGdpdmVuIGFuIGF0dHJpYnV0ZSBuYW1lIHdpbGwgcmV0
dXJuIHRydWVcblx0ICAgKiBpZiBpdCBjYW4gYmUgaW5zZXJ0ZWQgaW50byB0aGUgRE9NIHZlcmJh
dGltLiBVc2VmdWwgZm9yIGRhdGEtKiBvciBhcmlhLSpcblx0ICAgKiBhdHRyaWJ1dGVzIHdoZXJl
IGl0J3MgaW1wb3NzaWJsZSB0byBlbnVtZXJhdGUgYWxsIG9mIHRoZSBwb3NzaWJsZVxuXHQgICAq
IGF0dHJpYnV0ZSBuYW1lcyxcblx0ICAgKlxuXHQgICAqIFByb3BlcnRpZXM6IG9iamVjdCBtYXBw
aW5nIERPTSBwcm9wZXJ0eSBuYW1lIHRvIG9uZSBvZiB0aGVcblx0ICAgKiBET01Qcm9wZXJ0eUlu
amVjdGlvbiBjb25zdGFudHMgb3IgbnVsbC4gSWYgeW91ciBhdHRyaWJ1dGUgaXNuJ3QgaW4gaGVy
ZSxcblx0ICAgKiBpdCB3b24ndCBnZXQgd3JpdHRlbiB0byB0aGUgRE9NLlxuXHQgICAqXG5cdCAg
ICogRE9NQXR0cmlidXRlTmFtZXM6IG9iamVjdCBtYXBwaW5nIFJlYWN0IGF0dHJpYnV0ZSBuYW1l
IHRvIHRoZSBET01cblx0ICAgKiBhdHRyaWJ1dGUgbmFtZS4gQXR0cmlidXRlIG5hbWVzIG5vdCBz
cGVjaWZpZWQgdXNlIHRoZSAqKmxvd2VyY2FzZSoqXG5cdCAgICogbm9ybWFsaXplZCBuYW1lLlxu
XHQgICAqXG5cdCAgICogRE9NQXR0cmlidXRlTmFtZXNwYWNlczogb2JqZWN0IG1hcHBpbmcgUmVh
Y3QgYXR0cmlidXRlIG5hbWUgdG8gdGhlIERPTVxuXHQgICAqIGF0dHJpYnV0ZSBuYW1lc3BhY2Ug
VVJMLiAoQXR0cmlidXRlIG5hbWVzIG5vdCBzcGVjaWZpZWQgdXNlIG5vIG5hbWVzcGFjZS4pXG5c
dCAgICpcblx0ICAgKiBET01Qcm9wZXJ0eU5hbWVzOiBzaW1pbGFyIHRvIERPTUF0dHJpYnV0ZU5h
bWVzIGJ1dCBmb3IgRE9NIHByb3BlcnRpZXMuXG5cdCAgICogUHJvcGVydHkgbmFtZXMgbm90IHNw
ZWNpZmllZCB1c2UgdGhlIG5vcm1hbGl6ZWQgbmFtZS5cblx0ICAgKlxuXHQgICAqIERPTU11dGF0
aW9uTWV0aG9kczogUHJvcGVydGllcyB0aGF0IHJlcXVpcmUgc3BlY2lhbCBtdXRhdGlvbiBtZXRo
b2RzLiBJZlxuXHQgICAqIGB2YWx1ZWAgaXMgdW5kZWZpbmVkLCB0aGUgbXV0YXRpb24gbWV0aG9k
IHNob3VsZCB1bnNldCB0aGUgcHJvcGVydHkuXG5cdCAgICpcblx0ICAgKiBAcGFyYW0ge29iamVj
dH0gZG9tUHJvcGVydHlDb25maWcgdGhlIGNvbmZpZyBhcyBkZXNjcmliZWQgYWJvdmUuXG5cdCAg
ICovXG5cdCAgaW5qZWN0RE9NUHJvcGVydHlDb25maWc6IGZ1bmN0aW9uIChkb21Qcm9wZXJ0eUNv
bmZpZykge1xuXHQgICAgdmFyIEluamVjdGlvbiA9IERPTVByb3BlcnR5SW5qZWN0aW9uO1xuXHQg
ICAgdmFyIFByb3BlcnRpZXMgPSBkb21Qcm9wZXJ0eUNvbmZpZy5Qcm9wZXJ0aWVzIHx8IHt9O1xu
XHQgICAgdmFyIERPTUF0dHJpYnV0ZU5hbWVzcGFjZXMgPSBkb21Qcm9wZXJ0eUNvbmZpZy5ET01B
dHRyaWJ1dGVOYW1lc3BhY2VzIHx8IHt9O1xuXHQgICAgdmFyIERPTUF0dHJpYnV0ZU5hbWVzID0g
ZG9tUHJvcGVydHlDb25maWcuRE9NQXR0cmlidXRlTmFtZXMgfHwge307XG5cdCAgICB2YXIgRE9N
UHJvcGVydHlOYW1lcyA9IGRvbVByb3BlcnR5Q29uZmlnLkRPTVByb3BlcnR5TmFtZXMgfHwge307
XG5cdCAgICB2YXIgRE9NTXV0YXRpb25NZXRob2RzID0gZG9tUHJvcGVydHlDb25maWcuRE9NTXV0
YXRpb25NZXRob2RzIHx8IHt9O1xuXHRcblx0ICAgIGlmIChkb21Qcm9wZXJ0eUNvbmZpZy5pc0N1
c3RvbUF0dHJpYnV0ZSkge1xuXHQgICAgICBET01Qcm9wZXJ0eS5faXNDdXN0b21BdHRyaWJ1dGVG
dW5jdGlvbnMucHVzaChkb21Qcm9wZXJ0eUNvbmZpZy5pc0N1c3RvbUF0dHJpYnV0ZSk7XG5cdCAg
ICB9XG5cdFxuXHQgICAgZm9yICh2YXIgcHJvcE5hbWUgaW4gUHJvcGVydGllcykge1xuXHQgICAg
ICAhIURPTVByb3BlcnR5LnByb3BlcnRpZXMuaGFzT3duUHJvcGVydHkocHJvcE5hbWUpID8gIGZh
bHNlID8gaW52YXJpYW50KGZhbHNlLCAnaW5qZWN0RE9NUHJvcGVydHlDb25maWcoLi4uKTogWW91
XFwncmUgdHJ5aW5nIHRvIGluamVjdCBET00gcHJvcGVydHkgXFwnJXNcXCcgd2hpY2ggaGFzIGFs
cmVhZHkgYmVlbiBpbmplY3RlZC4gWW91IG1heSBiZSBhY2NpZGVudGFsbHkgaW5qZWN0aW5nIHRo
ZSBzYW1lIERPTSBwcm9wZXJ0eSBjb25maWcgdHdpY2UsIG9yIHlvdSBtYXkgYmUgaW5qZWN0aW5n
IHR3byBjb25maWdzIHRoYXQgaGF2ZSBjb25mbGljdGluZyBwcm9wZXJ0eSBuYW1lcy4nLCBwcm9w
TmFtZSkgOiBfcHJvZEludmFyaWFudCgnNDgnLCBwcm9wTmFtZSkgOiB2b2lkIDA7XG5cdFxuXHQg
ICAgICB2YXIgbG93ZXJDYXNlZCA9IHByb3BOYW1lLnRvTG93ZXJDYXNlKCk7XG5cdCAgICAgIHZh
ciBwcm9wQ29uZmlnID0gUHJvcGVydGllc1twcm9wTmFtZV07XG5cdFxuXHQgICAgICB2YXIgcHJv
cGVydHlJbmZvID0ge1xuXHQgICAgICAgIGF0dHJpYnV0ZU5hbWU6IGxvd2VyQ2FzZWQsXG5cdCAg
ICAgICAgYXR0cmlidXRlTmFtZXNwYWNlOiBudWxsLFxuXHQgICAgICAgIHByb3BlcnR5TmFtZTog
cHJvcE5hbWUsXG5cdCAgICAgICAgbXV0YXRpb25NZXRob2Q6IG51bGwsXG5cdFxuXHQgICAgICAg
IG11c3RVc2VQcm9wZXJ0eTogY2hlY2tNYXNrKHByb3BDb25maWcsIEluamVjdGlvbi5NVVNUX1VT
RV9QUk9QRVJUWSksXG5cdCAgICAgICAgaGFzQm9vbGVhblZhbHVlOiBjaGVja01hc2socHJvcENv
bmZpZywgSW5qZWN0aW9uLkhBU19CT09MRUFOX1ZBTFVFKSxcblx0ICAgICAgICBoYXNOdW1lcmlj
VmFsdWU6IGNoZWNrTWFzayhwcm9wQ29uZmlnLCBJbmplY3Rpb24uSEFTX05VTUVSSUNfVkFMVUUp
LFxuXHQgICAgICAgIGhhc1Bvc2l0aXZlTnVtZXJpY1ZhbHVlOiBjaGVja01hc2socHJvcENvbmZp
ZywgSW5qZWN0aW9uLkhBU19QT1NJVElWRV9OVU1FUklDX1ZBTFVFKSxcblx0ICAgICAgICBoYXNP
dmVybG9hZGVkQm9vbGVhblZhbHVlOiBjaGVja01hc2socHJvcENvbmZpZywgSW5qZWN0aW9uLkhB
U19PVkVSTE9BREVEX0JPT0xFQU5fVkFMVUUpXG5cdCAgICAgIH07XG5cdCAgICAgICEocHJvcGVy
dHlJbmZvLmhhc0Jvb2xlYW5WYWx1ZSArIHByb3BlcnR5SW5mby5oYXNOdW1lcmljVmFsdWUgKyBw
cm9wZXJ0eUluZm8uaGFzT3ZlcmxvYWRlZEJvb2xlYW5WYWx1ZSA8PSAxKSA/ICBmYWxzZSA/IGlu
dmFyaWFudChmYWxzZSwgJ0RPTVByb3BlcnR5OiBWYWx1ZSBjYW4gYmUgb25lIG9mIGJvb2xlYW4s
IG92ZXJsb2FkZWQgYm9vbGVhbiwgb3IgbnVtZXJpYyB2YWx1ZSwgYnV0IG5vdCBhIGNvbWJpbmF0
aW9uOiAlcycsIHByb3BOYW1lKSA6IF9wcm9kSW52YXJpYW50KCc1MCcsIHByb3BOYW1lKSA6IHZv
aWQgMDtcblx0XG5cdCAgICAgIGlmIChmYWxzZSkge1xuXHQgICAgICAgIERPTVByb3BlcnR5Lmdl
dFBvc3NpYmxlU3RhbmRhcmROYW1lW2xvd2VyQ2FzZWRdID0gcHJvcE5hbWU7XG5cdCAgICAgIH1c
blx0XG5cdCAgICAgIGlmIChET01BdHRyaWJ1dGVOYW1lcy5oYXNPd25Qcm9wZXJ0eShwcm9wTmFt
ZSkpIHtcblx0ICAgICAgICB2YXIgYXR0cmlidXRlTmFtZSA9IERPTUF0dHJpYnV0ZU5hbWVzW3By
b3BOYW1lXTtcblx0ICAgICAgICBwcm9wZXJ0eUluZm8uYXR0cmlidXRlTmFtZSA9IGF0dHJpYnV0
ZU5hbWU7XG5cdCAgICAgICAgaWYgKGZhbHNlKSB7XG5cdCAgICAgICAgICBET01Qcm9wZXJ0eS5n
ZXRQb3NzaWJsZVN0YW5kYXJkTmFtZVthdHRyaWJ1dGVOYW1lXSA9IHByb3BOYW1lO1xuXHQgICAg
ICAgIH1cblx0ICAgICAgfVxuXHRcblx0ICAgICAgaWYgKERPTUF0dHJpYnV0ZU5hbWVzcGFjZXMu
aGFzT3duUHJvcGVydHkocHJvcE5hbWUpKSB7XG5cdCAgICAgICAgcHJvcGVydHlJbmZvLmF0dHJp
YnV0ZU5hbWVzcGFjZSA9IERPTUF0dHJpYnV0ZU5hbWVzcGFjZXNbcHJvcE5hbWVdO1xuXHQgICAg
ICB9XG5cdFxuXHQgICAgICBpZiAoRE9NUHJvcGVydHlOYW1lcy5oYXNPd25Qcm9wZXJ0eShwcm9w
TmFtZSkpIHtcblx0ICAgICAgICBwcm9wZXJ0eUluZm8ucHJvcGVydHlOYW1lID0gRE9NUHJvcGVy
dHlOYW1lc1twcm9wTmFtZV07XG5cdCAgICAgIH1cblx0XG5cdCAgICAgIGlmIChET01NdXRhdGlv
bk1ldGhvZHMuaGFzT3duUHJvcGVydHkocHJvcE5hbWUpKSB7XG5cdCAgICAgICAgcHJvcGVydHlJ
bmZvLm11dGF0aW9uTWV0aG9kID0gRE9NTXV0YXRpb25NZXRob2RzW3Byb3BOYW1lXTtcblx0ICAg
ICAgfVxuXHRcblx0ICAgICAgRE9NUHJvcGVydHkucHJvcGVydGllc1twcm9wTmFtZV0gPSBwcm9w
ZXJ0eUluZm87XG5cdCAgICB9XG5cdCAgfVxuXHR9O1xuXHRcblx0LyogZXNsaW50LWRpc2FibGUg
bWF4LWxlbiAqL1xuXHR2YXIgQVRUUklCVVRFX05BTUVfU1RBUlRfQ0hBUiA9ICc6QS1aX2Etelxc
XFx1MDBDMC1cXFxcdTAwRDZcXFxcdTAwRDgtXFxcXHUwMEY2XFxcXHUwMEY4LVxcXFx1MDJGRlxc
XFx1MDM3MC1cXFxcdTAzN0RcXFxcdTAzN0YtXFxcXHUxRkZGXFxcXHUyMDBDLVxcXFx1MjAwRFxc
XFx1MjA3MC1cXFxcdTIxOEZcXFxcdTJDMDAtXFxcXHUyRkVGXFxcXHUzMDAxLVxcXFx1RDdGRlxc
XFx1RjkwMC1cXFxcdUZEQ0ZcXFxcdUZERjAtXFxcXHVGRkZEJztcblx0LyogZXNsaW50LWVuYWJs
ZSBtYXgtbGVuICovXG5cdFxuXHQvKipcblx0ICogRE9NUHJvcGVydHkgZXhwb3J0cyBsb29rdXAg
b2JqZWN0cyB0aGF0IGNhbiBiZSB1c2VkIGxpa2UgZnVuY3Rpb25zOlxuXHQgKlxuXHQgKiAgID4g
RE9NUHJvcGVydHkuaXNWYWxpZFsnaWQnXVxuXHQgKiAgIHRydWVcblx0ICogICA+IERPTVByb3Bl
cnR5LmlzVmFsaWRbJ2Zvb2JhciddXG5cdCAqICAgdW5kZWZpbmVkXG5cdCAqXG5cdCAqIEFsdGhv
dWdoIHRoaXMgbWF5IGJlIGNvbmZ1c2luZywgaXQgcGVyZm9ybXMgYmV0dGVyIGluIGdlbmVyYWwu
XG5cdCAqXG5cdCAqIEBzZWUgaHR0cDovL2pzcGVyZi5jb20va2V5LWV4aXN0c1xuXHQgKiBAc2Vl
IGh0dHA6Ly9qc3BlcmYuY29tL2tleS1taXNzaW5nXG5cdCAqL1xuXHR2YXIgRE9NUHJvcGVydHkg
PSB7XG5cdCAgSURfQVRUUklCVVRFX05BTUU6ICdkYXRhLXJlYWN0aWQnLFxuXHQgIFJPT1RfQVRU
UklCVVRFX05BTUU6ICdkYXRhLXJlYWN0cm9vdCcsXG5cdFxuXHQgIEFUVFJJQlVURV9OQU1FX1NU
QVJUX0NIQVI6IEFUVFJJQlVURV9OQU1FX1NUQVJUX0NIQVIsXG5cdCAgQVRUUklCVVRFX05BTUVf
Q0hBUjogQVRUUklCVVRFX05BTUVfU1RBUlRfQ0hBUiArICdcXFxcLS4wLTlcXFxcdTAwQjdcXFxc
dTAzMDAtXFxcXHUwMzZGXFxcXHUyMDNGLVxcXFx1MjA0MCcsXG5cdFxuXHQgIC8qKlxuXHQgICAq
IE1hcCBmcm9tIHByb3BlcnR5IFwic3RhbmRhcmQgbmFtZVwiIHRvIGFuIG9iamVjdCB3aXRoIGlu
Zm8gYWJvdXQgaG93IHRvIHNldFxuXHQgICAqIHRoZSBwcm9wZXJ0eSBpbiB0aGUgRE9NLiBFYWNo
IG9iamVjdCBjb250YWluczpcblx0ICAgKlxuXHQgICAqIGF0dHJpYnV0ZU5hbWU6XG5cdCAgICog
ICBVc2VkIHdoZW4gcmVuZGVyaW5nIG1hcmt1cCBvciB3aXRoIGAqQXR0cmlidXRlKClgLlxuXHQg
ICAqIGF0dHJpYnV0ZU5hbWVzcGFjZVxuXHQgICAqIHByb3BlcnR5TmFtZTpcblx0ICAgKiAgIFVz
ZWQgb24gRE9NIG5vZGUgaW5zdGFuY2VzLiAoVGhpcyBpbmNsdWRlcyBwcm9wZXJ0aWVzIHRoYXQg
bXV0YXRlIGR1ZSB0b1xuXHQgICAqICAgZXh0ZXJuYWwgZmFjdG9ycy4pXG5cdCAgICogbXV0YXRp
b25NZXRob2Q6XG5cdCAgICogICBJZiBub24tbnVsbCwgdXNlZCBpbnN0ZWFkIG9mIHRoZSBwcm9w
ZXJ0eSBvciBgc2V0QXR0cmlidXRlKClgIGFmdGVyXG5cdCAgICogICBpbml0aWFsIHJlbmRlci5c
blx0ICAgKiBtdXN0VXNlUHJvcGVydHk6XG5cdCAgICogICBXaGV0aGVyIHRoZSBwcm9wZXJ0eSBt
dXN0IGJlIGFjY2Vzc2VkIGFuZCBtdXRhdGVkIGFzIGFuIG9iamVjdCBwcm9wZXJ0eS5cblx0ICAg
KiBoYXNCb29sZWFuVmFsdWU6XG5cdCAgICogICBXaGV0aGVyIHRoZSBwcm9wZXJ0eSBzaG91bGQg
YmUgcmVtb3ZlZCB3aGVuIHNldCB0byBhIGZhbHNleSB2YWx1ZS5cblx0ICAgKiBoYXNOdW1lcmlj
VmFsdWU6XG5cdCAgICogICBXaGV0aGVyIHRoZSBwcm9wZXJ0eSBtdXN0IGJlIG51bWVyaWMgb3Ig
cGFyc2UgYXMgYSBudW1lcmljIGFuZCBzaG91bGQgYmVcblx0ICAgKiAgIHJlbW92ZWQgd2hlbiBz
ZXQgdG8gYSBmYWxzZXkgdmFsdWUuXG5cdCAgICogaGFzUG9zaXRpdmVOdW1lcmljVmFsdWU6XG5c
dCAgICogICBXaGV0aGVyIHRoZSBwcm9wZXJ0eSBtdXN0IGJlIHBvc2l0aXZlIG51bWVyaWMgb3Ig
cGFyc2UgYXMgYSBwb3NpdGl2ZVxuXHQgICAqICAgbnVtZXJpYyBhbmQgc2hvdWxkIGJlIHJlbW92
ZWQgd2hlbiBzZXQgdG8gYSBmYWxzZXkgdmFsdWUuXG5cdCAgICogaGFzT3ZlcmxvYWRlZEJvb2xl
YW5WYWx1ZTpcblx0ICAgKiAgIFdoZXRoZXIgdGhlIHByb3BlcnR5IGNhbiBiZSB1c2VkIGFzIGEg
ZmxhZyBhcyB3ZWxsIGFzIHdpdGggYSB2YWx1ZS5cblx0ICAgKiAgIFJlbW92ZWQgd2hlbiBzdHJp
Y3RseSBlcXVhbCB0byBmYWxzZTsgcHJlc2VudCB3aXRob3V0IGEgdmFsdWUgd2hlblxuXHQgICAq
ICAgc3RyaWN0bHkgZXF1YWwgdG8gdHJ1ZTsgcHJlc2VudCB3aXRoIGEgdmFsdWUgb3RoZXJ3aXNl
LlxuXHQgICAqL1xuXHQgIHByb3BlcnRpZXM6IHt9LFxuXHRcblx0ICAvKipcblx0ICAgKiBNYXBw
aW5nIGZyb20gbG93ZXJjYXNlIHByb3BlcnR5IG5hbWVzIHRvIHRoZSBwcm9wZXJseSBjYXNlZCB2
ZXJzaW9uLCB1c2VkXG5cdCAgICogdG8gd2FybiBpbiB0aGUgY2FzZSBvZiBtaXNzaW5nIHByb3Bl
cnRpZXMuIEF2YWlsYWJsZSBvbmx5IGluIF9fREVWX18uXG5cdCAgICpcblx0ICAgKiBhdXRvZm9j
dXMgaXMgcHJlZGVmaW5lZCwgYmVjYXVzZSBhZGRpbmcgaXQgdG8gdGhlIHByb3BlcnR5IHdoaXRl
bGlzdFxuXHQgICAqIGNhdXNlcyB1bmludGVuZGVkIHNpZGUgZWZmZWN0cy5cblx0ICAgKlxuXHQg
ICAqIEB0eXBlIHtPYmplY3R9XG5cdCAgICovXG5cdCAgZ2V0UG9zc2libGVTdGFuZGFyZE5hbWU6
ICBmYWxzZSA/IHsgYXV0b2ZvY3VzOiAnYXV0b0ZvY3VzJyB9IDogbnVsbCxcblx0XG5cdCAgLyoq
XG5cdCAgICogQWxsIG9mIHRoZSBpc0N1c3RvbUF0dHJpYnV0ZSgpIGZ1bmN0aW9ucyB0aGF0IGhh
dmUgYmVlbiBpbmplY3RlZC5cblx0ICAgKi9cblx0ICBfaXNDdXN0b21BdHRyaWJ1dGVGdW5jdGlv
bnM6IFtdLFxuXHRcblx0ICAvKipcblx0ICAgKiBDaGVja3Mgd2hldGhlciBhIHByb3BlcnR5IG5h
bWUgaXMgYSBjdXN0b20gYXR0cmlidXRlLlxuXHQgICAqIEBtZXRob2Rcblx0ICAgKi9cblx0ICBp
c0N1c3RvbUF0dHJpYnV0ZTogZnVuY3Rpb24gKGF0dHJpYnV0ZU5hbWUpIHtcblx0ICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgRE9NUHJvcGVydHkuX2lzQ3VzdG9tQXR0cmlidXRlRnVuY3Rpb25zLmxl
bmd0aDsgaSsrKSB7XG5cdCAgICAgIHZhciBpc0N1c3RvbUF0dHJpYnV0ZUZuID0gRE9NUHJvcGVy
dHkuX2lzQ3VzdG9tQXR0cmlidXRlRnVuY3Rpb25zW2ldO1xuXHQgICAgICBpZiAoaXNDdXN0b21B
dHRyaWJ1dGVGbihhdHRyaWJ1dGVOYW1lKSkge1xuXHQgICAgICAgIHJldHVybiB0cnVlO1xuXHQg
ICAgICB9XG5cdCAgICB9XG5cdCAgICByZXR1cm4gZmFsc2U7XG5cdCAgfSxcblx0XG5cdCAgaW5q
ZWN0aW9uOiBET01Qcm9wZXJ0eUluamVjdGlvblxuXHR9O1xuXHRcblx0bW9kdWxlLmV4cG9ydHMg
PSBET01Qcm9wZXJ0eTtcblxuLyoqKi8gfSxcbi8qIDE2ICovXG4vKioqLyBmdW5jdGlvbihtb2R1
bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvKipcblx0ICogQ29weXJp
Z2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZl
ZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNE
LXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9v
dCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQg
KiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRo
ZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpcblx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxu
XHR2YXIgUmVhY3RSZWYgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE2MCk7XG5cdHZhciBSZWFjdElu
c3RydW1lbnRhdGlvbiA9IF9fd2VicGFja19yZXF1aXJlX18oOCk7XG5cdFxuXHR2YXIgd2Fybmlu
ZyA9IF9fd2VicGFja19yZXF1aXJlX18oMik7XG5cdFxuXHQvKipcblx0ICogSGVscGVyIHRvIGNh
bGwgUmVhY3RSZWYuYXR0YWNoUmVmcyB3aXRoIHRoaXMgY29tcG9zaXRlIGNvbXBvbmVudCwgc3Bs
aXQgb3V0XG5cdCAqIHRvIGF2b2lkIGFsbG9jYXRpb25zIGluIHRoZSB0cmFuc2FjdGlvbiBtb3Vu
dC1yZWFkeSBxdWV1ZS5cblx0ICovXG5cdGZ1bmN0aW9uIGF0dGFjaFJlZnMoKSB7XG5cdCAgUmVh
Y3RSZWYuYXR0YWNoUmVmcyh0aGlzLCB0aGlzLl9jdXJyZW50RWxlbWVudCk7XG5cdH1cblx0XG5c
dHZhciBSZWFjdFJlY29uY2lsZXIgPSB7XG5cdCAgLyoqXG5cdCAgICogSW5pdGlhbGl6ZXMgdGhl
IGNvbXBvbmVudCwgcmVuZGVycyBtYXJrdXAsIGFuZCByZWdpc3RlcnMgZXZlbnQgbGlzdGVuZXJz
LlxuXHQgICAqXG5cdCAgICogQHBhcmFtIHtSZWFjdENvbXBvbmVudH0gaW50ZXJuYWxJbnN0YW5j
ZVxuXHQgICAqIEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbnxSZWFjdFNlcnZlclJl
bmRlcmluZ1RyYW5zYWN0aW9ufSB0cmFuc2FjdGlvblxuXHQgICAqIEBwYXJhbSB7P29iamVjdH0g
dGhlIGNvbnRhaW5pbmcgaG9zdCBjb21wb25lbnQgaW5zdGFuY2Vcblx0ICAgKiBAcGFyYW0gez9v
YmplY3R9IGluZm8gYWJvdXQgdGhlIGhvc3QgY29udGFpbmVyXG5cdCAgICogQHJldHVybiB7P3N0
cmluZ30gUmVuZGVyZWQgbWFya3VwIHRvIGJlIGluc2VydGVkIGludG8gdGhlIERPTS5cblx0ICAg
KiBAZmluYWxcblx0ICAgKiBAaW50ZXJuYWxcblx0ICAgKi9cblx0ICBtb3VudENvbXBvbmVudDog
ZnVuY3Rpb24gKGludGVybmFsSW5zdGFuY2UsIHRyYW5zYWN0aW9uLCBob3N0UGFyZW50LCBob3N0
Q29udGFpbmVySW5mbywgY29udGV4dCwgcGFyZW50RGVidWdJRCkgLy8gMCBpbiBwcm9kdWN0aW9u
IGFuZCBmb3Igcm9vdHNcblx0ICB7XG5cdCAgICBpZiAoZmFsc2UpIHtcblx0ICAgICAgaWYgKGlu
dGVybmFsSW5zdGFuY2UuX2RlYnVnSUQgIT09IDApIHtcblx0ICAgICAgICBSZWFjdEluc3RydW1l
bnRhdGlvbi5kZWJ1Z1Rvb2wub25CZWZvcmVNb3VudENvbXBvbmVudChpbnRlcm5hbEluc3RhbmNl
Ll9kZWJ1Z0lELCBpbnRlcm5hbEluc3RhbmNlLl9jdXJyZW50RWxlbWVudCwgcGFyZW50RGVidWdJ
RCk7XG5cdCAgICAgIH1cblx0ICAgIH1cblx0ICAgIHZhciBtYXJrdXAgPSBpbnRlcm5hbEluc3Rh
bmNlLm1vdW50Q29tcG9uZW50KHRyYW5zYWN0aW9uLCBob3N0UGFyZW50LCBob3N0Q29udGFpbmVy
SW5mbywgY29udGV4dCwgcGFyZW50RGVidWdJRCk7XG5cdCAgICBpZiAoaW50ZXJuYWxJbnN0YW5j
ZS5fY3VycmVudEVsZW1lbnQgJiYgaW50ZXJuYWxJbnN0YW5jZS5fY3VycmVudEVsZW1lbnQucmVm
ICE9IG51bGwpIHtcblx0ICAgICAgdHJhbnNhY3Rpb24uZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5x
dWV1ZShhdHRhY2hSZWZzLCBpbnRlcm5hbEluc3RhbmNlKTtcblx0ICAgIH1cblx0ICAgIGlmIChm
YWxzZSkge1xuXHQgICAgICBpZiAoaW50ZXJuYWxJbnN0YW5jZS5fZGVidWdJRCAhPT0gMCkge1xu
XHQgICAgICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vbk1vdW50Q29tcG9uZW50
KGludGVybmFsSW5zdGFuY2UuX2RlYnVnSUQpO1xuXHQgICAgICB9XG5cdCAgICB9XG5cdCAgICBy
ZXR1cm4gbWFya3VwO1xuXHQgIH0sXG5cdFxuXHQgIC8qKlxuXHQgICAqIFJldHVybnMgYSB2YWx1
ZSB0aGF0IGNhbiBiZSBwYXNzZWQgdG9cblx0ICAgKiBSZWFjdENvbXBvbmVudEVudmlyb25tZW50
LnJlcGxhY2VOb2RlV2l0aE1hcmt1cC5cblx0ICAgKi9cblx0ICBnZXRIb3N0Tm9kZTogZnVuY3Rp
b24gKGludGVybmFsSW5zdGFuY2UpIHtcblx0ICAgIHJldHVybiBpbnRlcm5hbEluc3RhbmNlLmdl
dEhvc3ROb2RlKCk7XG5cdCAgfSxcblx0XG5cdCAgLyoqXG5cdCAgICogUmVsZWFzZXMgYW55IHJl
c291cmNlcyBhbGxvY2F0ZWQgYnkgYG1vdW50Q29tcG9uZW50YC5cblx0ICAgKlxuXHQgICAqIEBm
aW5hbFxuXHQgICAqIEBpbnRlcm5hbFxuXHQgICAqL1xuXHQgIHVubW91bnRDb21wb25lbnQ6IGZ1
bmN0aW9uIChpbnRlcm5hbEluc3RhbmNlLCBzYWZlbHkpIHtcblx0ICAgIGlmIChmYWxzZSkge1xu
XHQgICAgICBpZiAoaW50ZXJuYWxJbnN0YW5jZS5fZGVidWdJRCAhPT0gMCkge1xuXHQgICAgICAg
IFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vbkJlZm9yZVVubW91bnRDb21wb25lbnQo
aW50ZXJuYWxJbnN0YW5jZS5fZGVidWdJRCk7XG5cdCAgICAgIH1cblx0ICAgIH1cblx0ICAgIFJl
YWN0UmVmLmRldGFjaFJlZnMoaW50ZXJuYWxJbnN0YW5jZSwgaW50ZXJuYWxJbnN0YW5jZS5fY3Vy
cmVudEVsZW1lbnQpO1xuXHQgICAgaW50ZXJuYWxJbnN0YW5jZS51bm1vdW50Q29tcG9uZW50KHNh
ZmVseSk7XG5cdCAgICBpZiAoZmFsc2UpIHtcblx0ICAgICAgaWYgKGludGVybmFsSW5zdGFuY2Uu
X2RlYnVnSUQgIT09IDApIHtcblx0ICAgICAgICBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rv
b2wub25Vbm1vdW50Q29tcG9uZW50KGludGVybmFsSW5zdGFuY2UuX2RlYnVnSUQpO1xuXHQgICAg
ICB9XG5cdCAgICB9XG5cdCAgfSxcblx0XG5cdCAgLyoqXG5cdCAgICogVXBkYXRlIGEgY29tcG9u
ZW50IHVzaW5nIGEgbmV3IGVsZW1lbnQuXG5cdCAgICpcblx0ICAgKiBAcGFyYW0ge1JlYWN0Q29t
cG9uZW50fSBpbnRlcm5hbEluc3RhbmNlXG5cdCAgICogQHBhcmFtIHtSZWFjdEVsZW1lbnR9IG5l
eHRFbGVtZW50XG5cdCAgICogQHBhcmFtIHtSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9ufSB0cmFu
c2FjdGlvblxuXHQgICAqIEBwYXJhbSB7b2JqZWN0fSBjb250ZXh0XG5cdCAgICogQGludGVybmFs
XG5cdCAgICovXG5cdCAgcmVjZWl2ZUNvbXBvbmVudDogZnVuY3Rpb24gKGludGVybmFsSW5zdGFu
Y2UsIG5leHRFbGVtZW50LCB0cmFuc2FjdGlvbiwgY29udGV4dCkge1xuXHQgICAgdmFyIHByZXZF
bGVtZW50ID0gaW50ZXJuYWxJbnN0YW5jZS5fY3VycmVudEVsZW1lbnQ7XG5cdFxuXHQgICAgaWYg
KG5leHRFbGVtZW50ID09PSBwcmV2RWxlbWVudCAmJiBjb250ZXh0ID09PSBpbnRlcm5hbEluc3Rh
bmNlLl9jb250ZXh0KSB7XG5cdCAgICAgIC8vIFNpbmNlIGVsZW1lbnRzIGFyZSBpbW11dGFibGUg
YWZ0ZXIgdGhlIG93bmVyIGlzIHJlbmRlcmVkLFxuXHQgICAgICAvLyB3ZSBjYW4gZG8gYSBjaGVh
cCBpZGVudGl0eSBjb21wYXJlIGhlcmUgdG8gZGV0ZXJtaW5lIGlmIHRoaXMgaXMgYVxuXHQgICAg
ICAvLyBzdXBlcmZsdW91cyByZWNvbmNpbGUuIEl0J3MgcG9zc2libGUgZm9yIHN0YXRlIHRvIGJl
IG11dGFibGUgYnV0IHN1Y2hcblx0ICAgICAgLy8gY2hhbmdlIHNob3VsZCB0cmlnZ2VyIGFuIHVw
ZGF0ZSBvZiB0aGUgb3duZXIgd2hpY2ggd291bGQgcmVjcmVhdGVcblx0ICAgICAgLy8gdGhlIGVs
ZW1lbnQuIFdlIGV4cGxpY2l0bHkgY2hlY2sgZm9yIHRoZSBleGlzdGVuY2Ugb2YgYW4gb3duZXIg
c2luY2Vcblx0ICAgICAgLy8gaXQncyBwb3NzaWJsZSBmb3IgYW4gZWxlbWVudCBjcmVhdGVkIG91
dHNpZGUgYSBjb21wb3NpdGUgdG8gYmVcblx0ICAgICAgLy8gZGVlcGx5IG11dGF0ZWQgYW5kIHJl
dXNlZC5cblx0XG5cdCAgICAgIC8vIFRPRE86IEJhaWxpbmcgb3V0IGVhcmx5IGlzIGp1c3QgYSBw
ZXJmIG9wdGltaXphdGlvbiByaWdodD9cblx0ICAgICAgLy8gVE9ETzogUmVtb3ZpbmcgdGhlIHJl
dHVybiBzdGF0ZW1lbnQgc2hvdWxkIGFmZmVjdCBjb3JyZWN0bmVzcz9cblx0ICAgICAgcmV0dXJu
O1xuXHQgICAgfVxuXHRcblx0ICAgIGlmIChmYWxzZSkge1xuXHQgICAgICBpZiAoaW50ZXJuYWxJ
bnN0YW5jZS5fZGVidWdJRCAhPT0gMCkge1xuXHQgICAgICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9u
LmRlYnVnVG9vbC5vbkJlZm9yZVVwZGF0ZUNvbXBvbmVudChpbnRlcm5hbEluc3RhbmNlLl9kZWJ1
Z0lELCBuZXh0RWxlbWVudCk7XG5cdCAgICAgIH1cblx0ICAgIH1cblx0XG5cdCAgICB2YXIgcmVm
c0NoYW5nZWQgPSBSZWFjdFJlZi5zaG91bGRVcGRhdGVSZWZzKHByZXZFbGVtZW50LCBuZXh0RWxl
bWVudCk7XG5cdFxuXHQgICAgaWYgKHJlZnNDaGFuZ2VkKSB7XG5cdCAgICAgIFJlYWN0UmVmLmRl
dGFjaFJlZnMoaW50ZXJuYWxJbnN0YW5jZSwgcHJldkVsZW1lbnQpO1xuXHQgICAgfVxuXHRcblx0
ICAgIGludGVybmFsSW5zdGFuY2UucmVjZWl2ZUNvbXBvbmVudChuZXh0RWxlbWVudCwgdHJhbnNh
Y3Rpb24sIGNvbnRleHQpO1xuXHRcblx0ICAgIGlmIChyZWZzQ2hhbmdlZCAmJiBpbnRlcm5hbElu
c3RhbmNlLl9jdXJyZW50RWxlbWVudCAmJiBpbnRlcm5hbEluc3RhbmNlLl9jdXJyZW50RWxlbWVu
dC5yZWYgIT0gbnVsbCkge1xuXHQgICAgICB0cmFuc2FjdGlvbi5nZXRSZWFjdE1vdW50UmVhZHko
KS5lbnF1ZXVlKGF0dGFjaFJlZnMsIGludGVybmFsSW5zdGFuY2UpO1xuXHQgICAgfVxuXHRcblx0
ICAgIGlmIChmYWxzZSkge1xuXHQgICAgICBpZiAoaW50ZXJuYWxJbnN0YW5jZS5fZGVidWdJRCAh
PT0gMCkge1xuXHQgICAgICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vblVwZGF0
ZUNvbXBvbmVudChpbnRlcm5hbEluc3RhbmNlLl9kZWJ1Z0lEKTtcblx0ICAgICAgfVxuXHQgICAg
fVxuXHQgIH0sXG5cdFxuXHQgIC8qKlxuXHQgICAqIEZsdXNoIGFueSBkaXJ0eSBjaGFuZ2VzIGlu
IGEgY29tcG9uZW50LlxuXHQgICAqXG5cdCAgICogQHBhcmFtIHtSZWFjdENvbXBvbmVudH0gaW50
ZXJuYWxJbnN0YW5jZVxuXHQgICAqIEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbn0g
dHJhbnNhY3Rpb25cblx0ICAgKiBAaW50ZXJuYWxcblx0ICAgKi9cblx0ICBwZXJmb3JtVXBkYXRl
SWZOZWNlc3Nhcnk6IGZ1bmN0aW9uIChpbnRlcm5hbEluc3RhbmNlLCB0cmFuc2FjdGlvbiwgdXBk
YXRlQmF0Y2hOdW1iZXIpIHtcblx0ICAgIGlmIChpbnRlcm5hbEluc3RhbmNlLl91cGRhdGVCYXRj
aE51bWJlciAhPT0gdXBkYXRlQmF0Y2hOdW1iZXIpIHtcblx0ICAgICAgLy8gVGhlIGNvbXBvbmVu
dCdzIGVucXVldWVkIGJhdGNoIG51bWJlciBzaG91bGQgYWx3YXlzIGJlIHRoZSBjdXJyZW50XG5c
dCAgICAgIC8vIGJhdGNoIG9yIHRoZSBmb2xsb3dpbmcgb25lLlxuXHQgICAgICAgZmFsc2UgPyB3
YXJuaW5nKGludGVybmFsSW5zdGFuY2UuX3VwZGF0ZUJhdGNoTnVtYmVyID09IG51bGwgfHwgaW50
ZXJuYWxJbnN0YW5jZS5fdXBkYXRlQmF0Y2hOdW1iZXIgPT09IHVwZGF0ZUJhdGNoTnVtYmVyICsg
MSwgJ3BlcmZvcm1VcGRhdGVJZk5lY2Vzc2FyeTogVW5leHBlY3RlZCBiYXRjaCBudW1iZXIgKGN1
cnJlbnQgJXMsICcgKyAncGVuZGluZyAlcyknLCB1cGRhdGVCYXRjaE51bWJlciwgaW50ZXJuYWxJ
bnN0YW5jZS5fdXBkYXRlQmF0Y2hOdW1iZXIpIDogdm9pZCAwO1xuXHQgICAgICByZXR1cm47XG5c
dCAgICB9XG5cdCAgICBpZiAoZmFsc2UpIHtcblx0ICAgICAgaWYgKGludGVybmFsSW5zdGFuY2Uu
X2RlYnVnSUQgIT09IDApIHtcblx0ICAgICAgICBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rv
b2wub25CZWZvcmVVcGRhdGVDb21wb25lbnQoaW50ZXJuYWxJbnN0YW5jZS5fZGVidWdJRCwgaW50
ZXJuYWxJbnN0YW5jZS5fY3VycmVudEVsZW1lbnQpO1xuXHQgICAgICB9XG5cdCAgICB9XG5cdCAg
ICBpbnRlcm5hbEluc3RhbmNlLnBlcmZvcm1VcGRhdGVJZk5lY2Vzc2FyeSh0cmFuc2FjdGlvbik7
XG5cdCAgICBpZiAoZmFsc2UpIHtcblx0ICAgICAgaWYgKGludGVybmFsSW5zdGFuY2UuX2RlYnVn
SUQgIT09IDApIHtcblx0ICAgICAgICBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25V
cGRhdGVDb21wb25lbnQoaW50ZXJuYWxJbnN0YW5jZS5fZGVidWdJRCk7XG5cdCAgICAgIH1cblx0
ICAgIH1cblx0ICB9XG5cdH07XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IFJlYWN0UmVjb25jaWxl
cjtcblxuLyoqKi8gfSxcbi8qIDE3ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMs
IF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvKipcblx0ICogQ29weXJpZ2h0IDIwMTMtcHJl
c2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0
ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vu
c2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkg
b2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQg
cmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVj
dG9yeS5cblx0ICpcblx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHR2YXIgX2Fzc2ln
biA9IF9fd2VicGFja19yZXF1aXJlX18oNCk7XG5cdFxuXHR2YXIgUmVhY3RCYXNlQ2xhc3NlcyA9
IF9fd2VicGFja19yZXF1aXJlX18oODkpO1xuXHR2YXIgUmVhY3RDaGlsZHJlbiA9IF9fd2VicGFj
a19yZXF1aXJlX18oMjE1KTtcblx0dmFyIFJlYWN0RE9NRmFjdG9yaWVzID0gX193ZWJwYWNrX3Jl
cXVpcmVfXygyMTYpO1xuXHR2YXIgUmVhY3RFbGVtZW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXygx
OCk7XG5cdHZhciBSZWFjdFByb3BUeXBlcyA9IF9fd2VicGFja19yZXF1aXJlX18oMjE3KTtcblx0
dmFyIFJlYWN0VmVyc2lvbiA9IF9fd2VicGFja19yZXF1aXJlX18oMjE4KTtcblx0XG5cdHZhciBj
cmVhdGVSZWFjdENsYXNzID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMTkpO1xuXHR2YXIgb25seUNo
aWxkID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMjMpO1xuXHRcblx0dmFyIGNyZWF0ZUVsZW1lbnQg
PSBSZWFjdEVsZW1lbnQuY3JlYXRlRWxlbWVudDtcblx0dmFyIGNyZWF0ZUZhY3RvcnkgPSBSZWFj
dEVsZW1lbnQuY3JlYXRlRmFjdG9yeTtcblx0dmFyIGNsb25lRWxlbWVudCA9IFJlYWN0RWxlbWVu
dC5jbG9uZUVsZW1lbnQ7XG5cdFxuXHRpZiAoZmFsc2UpIHtcblx0ICB2YXIgbG93UHJpb3JpdHlX
YXJuaW5nID0gcmVxdWlyZSgnLi9sb3dQcmlvcml0eVdhcm5pbmcnKTtcblx0ICB2YXIgY2FuRGVm
aW5lUHJvcGVydHkgPSByZXF1aXJlKCcuL2NhbkRlZmluZVByb3BlcnR5Jyk7XG5cdCAgdmFyIFJl
YWN0RWxlbWVudFZhbGlkYXRvciA9IHJlcXVpcmUoJy4vUmVhY3RFbGVtZW50VmFsaWRhdG9yJyk7
XG5cdCAgdmFyIGRpZFdhcm5Qcm9wVHlwZXNEZXByZWNhdGVkID0gZmFsc2U7XG5cdCAgY3JlYXRl
RWxlbWVudCA9IFJlYWN0RWxlbWVudFZhbGlkYXRvci5jcmVhdGVFbGVtZW50O1xuXHQgIGNyZWF0
ZUZhY3RvcnkgPSBSZWFjdEVsZW1lbnRWYWxpZGF0b3IuY3JlYXRlRmFjdG9yeTtcblx0ICBjbG9u
ZUVsZW1lbnQgPSBSZWFjdEVsZW1lbnRWYWxpZGF0b3IuY2xvbmVFbGVtZW50O1xuXHR9XG5cdFxu
XHR2YXIgX19zcHJlYWQgPSBfYXNzaWduO1xuXHR2YXIgY3JlYXRlTWl4aW4gPSBmdW5jdGlvbiAo
bWl4aW4pIHtcblx0ICByZXR1cm4gbWl4aW47XG5cdH07XG5cdFxuXHRpZiAoZmFsc2UpIHtcblx0
ICB2YXIgd2FybmVkRm9yU3ByZWFkID0gZmFsc2U7XG5cdCAgdmFyIHdhcm5lZEZvckNyZWF0ZU1p
eGluID0gZmFsc2U7XG5cdCAgX19zcHJlYWQgPSBmdW5jdGlvbiAoKSB7XG5cdCAgICBsb3dQcmlv
cml0eVdhcm5pbmcod2FybmVkRm9yU3ByZWFkLCAnUmVhY3QuX19zcHJlYWQgaXMgZGVwcmVjYXRl
ZCBhbmQgc2hvdWxkIG5vdCBiZSB1c2VkLiBVc2UgJyArICdPYmplY3QuYXNzaWduIGRpcmVjdGx5
IG9yIGFub3RoZXIgaGVscGVyIGZ1bmN0aW9uIHdpdGggc2ltaWxhciAnICsgJ3NlbWFudGljcy4g
WW91IG1heSBiZSBzZWVpbmcgdGhpcyB3YXJuaW5nIGR1ZSB0byB5b3VyIGNvbXBpbGVyLiAnICsg
J1NlZSBodHRwczovL2ZiLm1lL3JlYWN0LXNwcmVhZC1kZXByZWNhdGlvbiBmb3IgbW9yZSBkZXRh
aWxzLicpO1xuXHQgICAgd2FybmVkRm9yU3ByZWFkID0gdHJ1ZTtcblx0ICAgIHJldHVybiBfYXNz
aWduLmFwcGx5KG51bGwsIGFyZ3VtZW50cyk7XG5cdCAgfTtcblx0XG5cdCAgY3JlYXRlTWl4aW4g
PSBmdW5jdGlvbiAobWl4aW4pIHtcblx0ICAgIGxvd1ByaW9yaXR5V2FybmluZyh3YXJuZWRGb3JD
cmVhdGVNaXhpbiwgJ1JlYWN0LmNyZWF0ZU1peGluIGlzIGRlcHJlY2F0ZWQgYW5kIHNob3VsZCBu
b3QgYmUgdXNlZC4gJyArICdJbiBSZWFjdCB2MTYuMCwgaXQgd2lsbCBiZSByZW1vdmVkLiAnICsg
J1lvdSBjYW4gdXNlIHRoaXMgbWl4aW4gZGlyZWN0bHkgaW5zdGVhZC4gJyArICdTZWUgaHR0cHM6
Ly9mYi5tZS9jcmVhdGVtaXhpbi13YXMtbmV2ZXItaW1wbGVtZW50ZWQgZm9yIG1vcmUgaW5mby4n
KTtcblx0ICAgIHdhcm5lZEZvckNyZWF0ZU1peGluID0gdHJ1ZTtcblx0ICAgIHJldHVybiBtaXhp
bjtcblx0ICB9O1xuXHR9XG5cdFxuXHR2YXIgUmVhY3QgPSB7XG5cdCAgLy8gTW9kZXJuXG5cdFxu
XHQgIENoaWxkcmVuOiB7XG5cdCAgICBtYXA6IFJlYWN0Q2hpbGRyZW4ubWFwLFxuXHQgICAgZm9y
RWFjaDogUmVhY3RDaGlsZHJlbi5mb3JFYWNoLFxuXHQgICAgY291bnQ6IFJlYWN0Q2hpbGRyZW4u
Y291bnQsXG5cdCAgICB0b0FycmF5OiBSZWFjdENoaWxkcmVuLnRvQXJyYXksXG5cdCAgICBvbmx5
OiBvbmx5Q2hpbGRcblx0ICB9LFxuXHRcblx0ICBDb21wb25lbnQ6IFJlYWN0QmFzZUNsYXNzZXMu
Q29tcG9uZW50LFxuXHQgIFB1cmVDb21wb25lbnQ6IFJlYWN0QmFzZUNsYXNzZXMuUHVyZUNvbXBv
bmVudCxcblx0XG5cdCAgY3JlYXRlRWxlbWVudDogY3JlYXRlRWxlbWVudCxcblx0ICBjbG9uZUVs
ZW1lbnQ6IGNsb25lRWxlbWVudCxcblx0ICBpc1ZhbGlkRWxlbWVudDogUmVhY3RFbGVtZW50Lmlz
VmFsaWRFbGVtZW50LFxuXHRcblx0ICAvLyBDbGFzc2ljXG5cdFxuXHQgIFByb3BUeXBlczogUmVh
Y3RQcm9wVHlwZXMsXG5cdCAgY3JlYXRlQ2xhc3M6IGNyZWF0ZVJlYWN0Q2xhc3MsXG5cdCAgY3Jl
YXRlRmFjdG9yeTogY3JlYXRlRmFjdG9yeSxcblx0ICBjcmVhdGVNaXhpbjogY3JlYXRlTWl4aW4s
XG5cdFxuXHQgIC8vIFRoaXMgbG9va3MgRE9NIHNwZWNpZmljIGJ1dCB0aGVzZSBhcmUgYWN0dWFs
bHkgaXNvbW9ycGhpYyBoZWxwZXJzXG5cdCAgLy8gc2luY2UgdGhleSBhcmUganVzdCBnZW5lcmF0
aW5nIERPTSBzdHJpbmdzLlxuXHQgIERPTTogUmVhY3RET01GYWN0b3JpZXMsXG5cdFxuXHQgIHZl
cnNpb246IFJlYWN0VmVyc2lvbixcblx0XG5cdCAgLy8gRGVwcmVjYXRlZCBob29rIGZvciBKU1gg
c3ByZWFkLCBkb24ndCB1c2UgdGhpcyBmb3IgYW55dGhpbmcuXG5cdCAgX19zcHJlYWQ6IF9fc3By
ZWFkXG5cdH07XG5cdFxuXHRpZiAoZmFsc2UpIHtcblx0ICB2YXIgd2FybmVkRm9yQ3JlYXRlQ2xh
c3MgPSBmYWxzZTtcblx0ICBpZiAoY2FuRGVmaW5lUHJvcGVydHkpIHtcblx0ICAgIE9iamVjdC5k
ZWZpbmVQcm9wZXJ0eShSZWFjdCwgJ1Byb3BUeXBlcycsIHtcblx0ICAgICAgZ2V0OiBmdW5jdGlv
biAoKSB7XG5cdCAgICAgICAgbG93UHJpb3JpdHlXYXJuaW5nKGRpZFdhcm5Qcm9wVHlwZXNEZXBy
ZWNhdGVkLCAnQWNjZXNzaW5nIFByb3BUeXBlcyB2aWEgdGhlIG1haW4gUmVhY3QgcGFja2FnZSBp
cyBkZXByZWNhdGVkLCcgKyAnIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gIFJlYWN0IHYxNi4wLicg
KyAnIFVzZSB0aGUgbGF0ZXN0IGF2YWlsYWJsZSB2MTUuKiBwcm9wLXR5cGVzIHBhY2thZ2UgZnJv
bSBucG0gaW5zdGVhZC4nICsgJyBGb3IgaW5mbyBvbiB1c2FnZSwgY29tcGF0aWJpbGl0eSwgbWln
cmF0aW9uIGFuZCBtb3JlLCBzZWUgJyArICdodHRwczovL2ZiLm1lL3Byb3AtdHlwZXMtZG9jcycp
O1xuXHQgICAgICAgIGRpZFdhcm5Qcm9wVHlwZXNEZXByZWNhdGVkID0gdHJ1ZTtcblx0ICAgICAg
ICByZXR1cm4gUmVhY3RQcm9wVHlwZXM7XG5cdCAgICAgIH1cblx0ICAgIH0pO1xuXHRcblx0ICAg
IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShSZWFjdCwgJ2NyZWF0ZUNsYXNzJywge1xuXHQgICAgICBn
ZXQ6IGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICBsb3dQcmlvcml0eVdhcm5pbmcod2FybmVkRm9y
Q3JlYXRlQ2xhc3MsICdBY2Nlc3NpbmcgY3JlYXRlQ2xhc3MgdmlhIHRoZSBtYWluIFJlYWN0IHBh
Y2thZ2UgaXMgZGVwcmVjYXRlZCwnICsgJyBhbmQgd2lsbCBiZSByZW1vdmVkIGluIFJlYWN0IHYx
Ni4wLicgKyBcIiBVc2UgYSBwbGFpbiBKYXZhU2NyaXB0IGNsYXNzIGluc3RlYWQuIElmIHlvdSdy
ZSBub3QgeWV0IFwiICsgJ3JlYWR5IHRvIG1pZ3JhdGUsIGNyZWF0ZS1yZWFjdC1jbGFzcyB2MTUu
KiBpcyBhdmFpbGFibGUgJyArICdvbiBucG0gYXMgYSB0ZW1wb3JhcnksIGRyb3AtaW4gcmVwbGFj
ZW1lbnQuICcgKyAnRm9yIG1vcmUgaW5mbyBzZWUgaHR0cHM6Ly9mYi5tZS9yZWFjdC1jcmVhdGUt
Y2xhc3MnKTtcblx0ICAgICAgICB3YXJuZWRGb3JDcmVhdGVDbGFzcyA9IHRydWU7XG5cdCAgICAg
ICAgcmV0dXJuIGNyZWF0ZVJlYWN0Q2xhc3M7XG5cdCAgICAgIH1cblx0ICAgIH0pO1xuXHQgIH1c
blx0XG5cdCAgLy8gUmVhY3QuRE9NIGZhY3RvcmllcyBhcmUgZGVwcmVjYXRlZC4gV3JhcCB0aGVz
ZSBtZXRob2RzIHNvIHRoYXRcblx0ICAvLyBpbnZvY2F0aW9ucyBvZiB0aGUgUmVhY3QuRE9NIG5h
bWVzcGFjZSBhbmQgYWxlcnQgdXNlcnMgdG8gc3dpdGNoXG5cdCAgLy8gdG8gdGhlIGByZWFjdC1k
b20tZmFjdG9yaWVzYCBwYWNrYWdlLlxuXHQgIFJlYWN0LkRPTSA9IHt9O1xuXHQgIHZhciB3YXJu
ZWRGb3JGYWN0b3JpZXMgPSBmYWxzZTtcblx0ICBPYmplY3Qua2V5cyhSZWFjdERPTUZhY3Rvcmll
cykuZm9yRWFjaChmdW5jdGlvbiAoZmFjdG9yeSkge1xuXHQgICAgUmVhY3QuRE9NW2ZhY3Rvcnld
ID0gZnVuY3Rpb24gKCkge1xuXHQgICAgICBpZiAoIXdhcm5lZEZvckZhY3Rvcmllcykge1xuXHQg
ICAgICAgIGxvd1ByaW9yaXR5V2FybmluZyhmYWxzZSwgJ0FjY2Vzc2luZyBmYWN0b3JpZXMgbGlr
ZSBSZWFjdC5ET00uJXMgaGFzIGJlZW4gZGVwcmVjYXRlZCAnICsgJ2FuZCB3aWxsIGJlIHJlbW92
ZWQgaW4gdjE2LjArLiBVc2UgdGhlICcgKyAncmVhY3QtZG9tLWZhY3RvcmllcyBwYWNrYWdlIGlu
c3RlYWQuICcgKyAnIFZlcnNpb24gMS4wIHByb3ZpZGVzIGEgZHJvcC1pbiByZXBsYWNlbWVudC4n
ICsgJyBGb3IgbW9yZSBpbmZvLCBzZWUgaHR0cHM6Ly9mYi5tZS9yZWFjdC1kb20tZmFjdG9yaWVz
JywgZmFjdG9yeSk7XG5cdCAgICAgICAgd2FybmVkRm9yRmFjdG9yaWVzID0gdHJ1ZTtcblx0ICAg
ICAgfVxuXHQgICAgICByZXR1cm4gUmVhY3RET01GYWN0b3JpZXNbZmFjdG9yeV0uYXBwbHkoUmVh
Y3RET01GYWN0b3JpZXMsIGFyZ3VtZW50cyk7XG5cdCAgICB9O1xuXHQgIH0pO1xuXHR9XG5cdFxu
XHRtb2R1bGUuZXhwb3J0cyA9IFJlYWN0O1xuXG4vKioqLyB9LFxuLyogMTggKi9cbi8qKiovIGZ1
bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8qKlxu
XHQgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmln
aHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVu
ZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxl
IGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFs
IGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRT
IGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKi9cblx0XG5cdCd1c2Ugc3Ry
aWN0Jztcblx0XG5cdHZhciBfYXNzaWduID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0KTtcblx0XG5c
dHZhciBSZWFjdEN1cnJlbnRPd25lciA9IF9fd2VicGFja19yZXF1aXJlX18oMTEpO1xuXHRcblx0
dmFyIHdhcm5pbmcgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIpO1xuXHR2YXIgY2FuRGVmaW5lUHJv
cGVydHkgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDkzKTtcblx0dmFyIGhhc093blByb3BlcnR5ID0g
T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcblx0XG5cdHZhciBSRUFDVF9FTEVNRU5U
X1RZUEUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDkxKTtcblx0XG5cdHZhciBSRVNFUlZFRF9QUk9Q
UyA9IHtcblx0ICBrZXk6IHRydWUsXG5cdCAgcmVmOiB0cnVlLFxuXHQgIF9fc2VsZjogdHJ1ZSxc
blx0ICBfX3NvdXJjZTogdHJ1ZVxuXHR9O1xuXHRcblx0dmFyIHNwZWNpYWxQcm9wS2V5V2Fybmlu
Z1Nob3duLCBzcGVjaWFsUHJvcFJlZldhcm5pbmdTaG93bjtcblx0XG5cdGZ1bmN0aW9uIGhhc1Zh
bGlkUmVmKGNvbmZpZykge1xuXHQgIGlmIChmYWxzZSkge1xuXHQgICAgaWYgKGhhc093blByb3Bl
cnR5LmNhbGwoY29uZmlnLCAncmVmJykpIHtcblx0ICAgICAgdmFyIGdldHRlciA9IE9iamVjdC5n
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoY29uZmlnLCAncmVmJykuZ2V0O1xuXHQgICAgICBpZiAo
Z2V0dGVyICYmIGdldHRlci5pc1JlYWN0V2FybmluZykge1xuXHQgICAgICAgIHJldHVybiBmYWxz
ZTtcblx0ICAgICAgfVxuXHQgICAgfVxuXHQgIH1cblx0ICByZXR1cm4gY29uZmlnLnJlZiAhPT0g
dW5kZWZpbmVkO1xuXHR9XG5cdFxuXHRmdW5jdGlvbiBoYXNWYWxpZEtleShjb25maWcpIHtcblx0
ICBpZiAoZmFsc2UpIHtcblx0ICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKGNvbmZpZywgJ2tl
eScpKSB7XG5cdCAgICAgIHZhciBnZXR0ZXIgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yKGNvbmZpZywgJ2tleScpLmdldDtcblx0ICAgICAgaWYgKGdldHRlciAmJiBnZXR0ZXIuaXNS
ZWFjdFdhcm5pbmcpIHtcblx0ICAgICAgICByZXR1cm4gZmFsc2U7XG5cdCAgICAgIH1cblx0ICAg
IH1cblx0ICB9XG5cdCAgcmV0dXJuIGNvbmZpZy5rZXkgIT09IHVuZGVmaW5lZDtcblx0fVxuXHRc
blx0ZnVuY3Rpb24gZGVmaW5lS2V5UHJvcFdhcm5pbmdHZXR0ZXIocHJvcHMsIGRpc3BsYXlOYW1l
KSB7XG5cdCAgdmFyIHdhcm5BYm91dEFjY2Vzc2luZ0tleSA9IGZ1bmN0aW9uICgpIHtcblx0ICAg
IGlmICghc3BlY2lhbFByb3BLZXlXYXJuaW5nU2hvd24pIHtcblx0ICAgICAgc3BlY2lhbFByb3BL
ZXlXYXJuaW5nU2hvd24gPSB0cnVlO1xuXHQgICAgICAgZmFsc2UgPyB3YXJuaW5nKGZhbHNlLCAn
JXM6IGBrZXlgIGlzIG5vdCBhIHByb3AuIFRyeWluZyB0byBhY2Nlc3MgaXQgd2lsbCByZXN1bHQg
JyArICdpbiBgdW5kZWZpbmVkYCBiZWluZyByZXR1cm5lZC4gSWYgeW91IG5lZWQgdG8gYWNjZXNz
IHRoZSBzYW1lICcgKyAndmFsdWUgd2l0aGluIHRoZSBjaGlsZCBjb21wb25lbnQsIHlvdSBzaG91
bGQgcGFzcyBpdCBhcyBhIGRpZmZlcmVudCAnICsgJ3Byb3AuIChodHRwczovL2ZiLm1lL3JlYWN0
LXNwZWNpYWwtcHJvcHMpJywgZGlzcGxheU5hbWUpIDogdm9pZCAwO1xuXHQgICAgfVxuXHQgIH07
XG5cdCAgd2FybkFib3V0QWNjZXNzaW5nS2V5LmlzUmVhY3RXYXJuaW5nID0gdHJ1ZTtcblx0ICBP
YmplY3QuZGVmaW5lUHJvcGVydHkocHJvcHMsICdrZXknLCB7XG5cdCAgICBnZXQ6IHdhcm5BYm91
dEFjY2Vzc2luZ0tleSxcblx0ICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuXHQgIH0pO1xuXHR9XG5c
dFxuXHRmdW5jdGlvbiBkZWZpbmVSZWZQcm9wV2FybmluZ0dldHRlcihwcm9wcywgZGlzcGxheU5h
bWUpIHtcblx0ICB2YXIgd2FybkFib3V0QWNjZXNzaW5nUmVmID0gZnVuY3Rpb24gKCkge1xuXHQg
ICAgaWYgKCFzcGVjaWFsUHJvcFJlZldhcm5pbmdTaG93bikge1xuXHQgICAgICBzcGVjaWFsUHJv
cFJlZldhcm5pbmdTaG93biA9IHRydWU7XG5cdCAgICAgICBmYWxzZSA/IHdhcm5pbmcoZmFsc2Us
ICclczogYHJlZmAgaXMgbm90IGEgcHJvcC4gVHJ5aW5nIHRvIGFjY2VzcyBpdCB3aWxsIHJlc3Vs
dCAnICsgJ2luIGB1bmRlZmluZWRgIGJlaW5nIHJldHVybmVkLiBJZiB5b3UgbmVlZCB0byBhY2Nl
c3MgdGhlIHNhbWUgJyArICd2YWx1ZSB3aXRoaW4gdGhlIGNoaWxkIGNvbXBvbmVudCwgeW91IHNo
b3VsZCBwYXNzIGl0IGFzIGEgZGlmZmVyZW50ICcgKyAncHJvcC4gKGh0dHBzOi8vZmIubWUvcmVh
Y3Qtc3BlY2lhbC1wcm9wcyknLCBkaXNwbGF5TmFtZSkgOiB2b2lkIDA7XG5cdCAgICB9XG5cdCAg
fTtcblx0ICB3YXJuQWJvdXRBY2Nlc3NpbmdSZWYuaXNSZWFjdFdhcm5pbmcgPSB0cnVlO1xuXHQg
IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwcm9wcywgJ3JlZicsIHtcblx0ICAgIGdldDogd2FybkFi
b3V0QWNjZXNzaW5nUmVmLFxuXHQgICAgY29uZmlndXJhYmxlOiB0cnVlXG5cdCAgfSk7XG5cdH1c
blx0XG5cdC8qKlxuXHQgKiBGYWN0b3J5IG1ldGhvZCB0byBjcmVhdGUgYSBuZXcgUmVhY3QgZWxl
bWVudC4gVGhpcyBubyBsb25nZXIgYWRoZXJlcyB0b1xuXHQgKiB0aGUgY2xhc3MgcGF0dGVybiwg
c28gZG8gbm90IHVzZSBuZXcgdG8gY2FsbCBpdC4gQWxzbywgbm8gaW5zdGFuY2VvZiBjaGVja1xu
XHQgKiB3aWxsIHdvcmsuIEluc3RlYWQgdGVzdCAkJHR5cGVvZiBmaWVsZCBhZ2FpbnN0IFN5bWJv
bC5mb3IoJ3JlYWN0LmVsZW1lbnQnKSB0byBjaGVja1xuXHQgKiBpZiBzb21ldGhpbmcgaXMgYSBS
ZWFjdCBFbGVtZW50LlxuXHQgKlxuXHQgKiBAcGFyYW0geyp9IHR5cGVcblx0ICogQHBhcmFtIHsq
fSBrZXlcblx0ICogQHBhcmFtIHtzdHJpbmd8b2JqZWN0fSByZWZcblx0ICogQHBhcmFtIHsqfSBz
ZWxmIEEgKnRlbXBvcmFyeSogaGVscGVyIHRvIGRldGVjdCBwbGFjZXMgd2hlcmUgYHRoaXNgIGlz
XG5cdCAqIGRpZmZlcmVudCBmcm9tIHRoZSBgb3duZXJgIHdoZW4gUmVhY3QuY3JlYXRlRWxlbWVu
dCBpcyBjYWxsZWQsIHNvIHRoYXQgd2Vcblx0ICogY2FuIHdhcm4uIFdlIHdhbnQgdG8gZ2V0IHJp
ZCBvZiBvd25lciBhbmQgcmVwbGFjZSBzdHJpbmcgYHJlZmBzIHdpdGggYXJyb3dcblx0ICogZnVu
Y3Rpb25zLCBhbmQgYXMgbG9uZyBhcyBgdGhpc2AgYW5kIG93bmVyIGFyZSB0aGUgc2FtZSwgdGhl
cmUgd2lsbCBiZSBub1xuXHQgKiBjaGFuZ2UgaW4gYmVoYXZpb3IuXG5cdCAqIEBwYXJhbSB7Kn0g
c291cmNlIEFuIGFubm90YXRpb24gb2JqZWN0IChhZGRlZCBieSBhIHRyYW5zcGlsZXIgb3Igb3Ro
ZXJ3aXNlKVxuXHQgKiBpbmRpY2F0aW5nIGZpbGVuYW1lLCBsaW5lIG51bWJlciwgYW5kL29yIG90
aGVyIGluZm9ybWF0aW9uLlxuXHQgKiBAcGFyYW0geyp9IG93bmVyXG5cdCAqIEBwYXJhbSB7Kn0g
cHJvcHNcblx0ICogQGludGVybmFsXG5cdCAqL1xuXHR2YXIgUmVhY3RFbGVtZW50ID0gZnVuY3Rp
b24gKHR5cGUsIGtleSwgcmVmLCBzZWxmLCBzb3VyY2UsIG93bmVyLCBwcm9wcykge1xuXHQgIHZh
ciBlbGVtZW50ID0ge1xuXHQgICAgLy8gVGhpcyB0YWcgYWxsb3cgdXMgdG8gdW5pcXVlbHkgaWRl
bnRpZnkgdGhpcyBhcyBhIFJlYWN0IEVsZW1lbnRcblx0ICAgICQkdHlwZW9mOiBSRUFDVF9FTEVN
RU5UX1RZUEUsXG5cdFxuXHQgICAgLy8gQnVpbHQtaW4gcHJvcGVydGllcyB0aGF0IGJlbG9uZyBv
biB0aGUgZWxlbWVudFxuXHQgICAgdHlwZTogdHlwZSxcblx0ICAgIGtleToga2V5LFxuXHQgICAg
cmVmOiByZWYsXG5cdCAgICBwcm9wczogcHJvcHMsXG5cdFxuXHQgICAgLy8gUmVjb3JkIHRoZSBj
b21wb25lbnQgcmVzcG9uc2libGUgZm9yIGNyZWF0aW5nIHRoaXMgZWxlbWVudC5cblx0ICAgIF9v
d25lcjogb3duZXJcblx0ICB9O1xuXHRcblx0ICBpZiAoZmFsc2UpIHtcblx0ICAgIC8vIFRoZSB2
YWxpZGF0aW9uIGZsYWcgaXMgY3VycmVudGx5IG11dGF0aXZlLiBXZSBwdXQgaXQgb25cblx0ICAg
IC8vIGFuIGV4dGVybmFsIGJhY2tpbmcgc3RvcmUgc28gdGhhdCB3ZSBjYW4gZnJlZXplIHRoZSB3
aG9sZSBvYmplY3QuXG5cdCAgICAvLyBUaGlzIGNhbiBiZSByZXBsYWNlZCB3aXRoIGEgV2Vha01h
cCBvbmNlIHRoZXkgYXJlIGltcGxlbWVudGVkIGluXG5cdCAgICAvLyBjb21tb25seSB1c2VkIGRl
dmVsb3BtZW50IGVudmlyb25tZW50cy5cblx0ICAgIGVsZW1lbnQuX3N0b3JlID0ge307XG5cdFxu
XHQgICAgLy8gVG8gbWFrZSBjb21wYXJpbmcgUmVhY3RFbGVtZW50cyBlYXNpZXIgZm9yIHRlc3Rp
bmcgcHVycG9zZXMsIHdlIG1ha2Vcblx0ICAgIC8vIHRoZSB2YWxpZGF0aW9uIGZsYWcgbm9uLWVu
dW1lcmFibGUgKHdoZXJlIHBvc3NpYmxlLCB3aGljaCBzaG91bGRcblx0ICAgIC8vIGluY2x1ZGUg
ZXZlcnkgZW52aXJvbm1lbnQgd2UgcnVuIHRlc3RzIGluKSwgc28gdGhlIHRlc3QgZnJhbWV3b3Jr
XG5cdCAgICAvLyBpZ25vcmVzIGl0LlxuXHQgICAgaWYgKGNhbkRlZmluZVByb3BlcnR5KSB7XG5c
dCAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlbGVtZW50Ll9zdG9yZSwgJ3ZhbGlkYXRlZCcs
IHtcblx0ICAgICAgICBjb25maWd1cmFibGU6IGZhbHNlLFxuXHQgICAgICAgIGVudW1lcmFibGU6
IGZhbHNlLFxuXHQgICAgICAgIHdyaXRhYmxlOiB0cnVlLFxuXHQgICAgICAgIHZhbHVlOiBmYWxz
ZVxuXHQgICAgICB9KTtcblx0ICAgICAgLy8gc2VsZiBhbmQgc291cmNlIGFyZSBERVYgb25seSBw
cm9wZXJ0aWVzLlxuXHQgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZWxlbWVudCwgJ19zZWxm
Jywge1xuXHQgICAgICAgIGNvbmZpZ3VyYWJsZTogZmFsc2UsXG5cdCAgICAgICAgZW51bWVyYWJs
ZTogZmFsc2UsXG5cdCAgICAgICAgd3JpdGFibGU6IGZhbHNlLFxuXHQgICAgICAgIHZhbHVlOiBz
ZWxmXG5cdCAgICAgIH0pO1xuXHQgICAgICAvLyBUd28gZWxlbWVudHMgY3JlYXRlZCBpbiB0d28g
ZGlmZmVyZW50IHBsYWNlcyBzaG91bGQgYmUgY29uc2lkZXJlZFxuXHQgICAgICAvLyBlcXVhbCBm
b3IgdGVzdGluZyBwdXJwb3NlcyBhbmQgdGhlcmVmb3JlIHdlIGhpZGUgaXQgZnJvbSBlbnVtZXJh
dGlvbi5cblx0ICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGVsZW1lbnQsICdfc291cmNlJywg
e1xuXHQgICAgICAgIGNvbmZpZ3VyYWJsZTogZmFsc2UsXG5cdCAgICAgICAgZW51bWVyYWJsZTog
ZmFsc2UsXG5cdCAgICAgICAgd3JpdGFibGU6IGZhbHNlLFxuXHQgICAgICAgIHZhbHVlOiBzb3Vy
Y2Vcblx0ICAgICAgfSk7XG5cdCAgICB9IGVsc2Uge1xuXHQgICAgICBlbGVtZW50Ll9zdG9yZS52
YWxpZGF0ZWQgPSBmYWxzZTtcblx0ICAgICAgZWxlbWVudC5fc2VsZiA9IHNlbGY7XG5cdCAgICAg
IGVsZW1lbnQuX3NvdXJjZSA9IHNvdXJjZTtcblx0ICAgIH1cblx0ICAgIGlmIChPYmplY3QuZnJl
ZXplKSB7XG5cdCAgICAgIE9iamVjdC5mcmVlemUoZWxlbWVudC5wcm9wcyk7XG5cdCAgICAgIE9i
amVjdC5mcmVlemUoZWxlbWVudCk7XG5cdCAgICB9XG5cdCAgfVxuXHRcblx0ICByZXR1cm4gZWxl
bWVudDtcblx0fTtcblx0XG5cdC8qKlxuXHQgKiBDcmVhdGUgYW5kIHJldHVybiBhIG5ldyBSZWFj
dEVsZW1lbnQgb2YgdGhlIGdpdmVuIHR5cGUuXG5cdCAqIFNlZSBodHRwczovL2ZhY2Vib29rLmdp
dGh1Yi5pby9yZWFjdC9kb2NzL3RvcC1sZXZlbC1hcGkuaHRtbCNyZWFjdC5jcmVhdGVlbGVtZW50
XG5cdCAqL1xuXHRSZWFjdEVsZW1lbnQuY3JlYXRlRWxlbWVudCA9IGZ1bmN0aW9uICh0eXBlLCBj
b25maWcsIGNoaWxkcmVuKSB7XG5cdCAgdmFyIHByb3BOYW1lO1xuXHRcblx0ICAvLyBSZXNlcnZl
ZCBuYW1lcyBhcmUgZXh0cmFjdGVkXG5cdCAgdmFyIHByb3BzID0ge307XG5cdFxuXHQgIHZhciBr
ZXkgPSBudWxsO1xuXHQgIHZhciByZWYgPSBudWxsO1xuXHQgIHZhciBzZWxmID0gbnVsbDtcblx0
ICB2YXIgc291cmNlID0gbnVsbDtcblx0XG5cdCAgaWYgKGNvbmZpZyAhPSBudWxsKSB7XG5cdCAg
ICBpZiAoaGFzVmFsaWRSZWYoY29uZmlnKSkge1xuXHQgICAgICByZWYgPSBjb25maWcucmVmO1xu
XHQgICAgfVxuXHQgICAgaWYgKGhhc1ZhbGlkS2V5KGNvbmZpZykpIHtcblx0ICAgICAga2V5ID0g
JycgKyBjb25maWcua2V5O1xuXHQgICAgfVxuXHRcblx0ICAgIHNlbGYgPSBjb25maWcuX19zZWxm
ID09PSB1bmRlZmluZWQgPyBudWxsIDogY29uZmlnLl9fc2VsZjtcblx0ICAgIHNvdXJjZSA9IGNv
bmZpZy5fX3NvdXJjZSA9PT0gdW5kZWZpbmVkID8gbnVsbCA6IGNvbmZpZy5fX3NvdXJjZTtcblx0
ICAgIC8vIFJlbWFpbmluZyBwcm9wZXJ0aWVzIGFyZSBhZGRlZCB0byBhIG5ldyBwcm9wcyBvYmpl
Y3Rcblx0ICAgIGZvciAocHJvcE5hbWUgaW4gY29uZmlnKSB7XG5cdCAgICAgIGlmIChoYXNPd25Q
cm9wZXJ0eS5jYWxsKGNvbmZpZywgcHJvcE5hbWUpICYmICFSRVNFUlZFRF9QUk9QUy5oYXNPd25Q
cm9wZXJ0eShwcm9wTmFtZSkpIHtcblx0ICAgICAgICBwcm9wc1twcm9wTmFtZV0gPSBjb25maWdb
cHJvcE5hbWVdO1xuXHQgICAgICB9XG5cdCAgICB9XG5cdCAgfVxuXHRcblx0ICAvLyBDaGlsZHJl
biBjYW4gYmUgbW9yZSB0aGFuIG9uZSBhcmd1bWVudCwgYW5kIHRob3NlIGFyZSB0cmFuc2ZlcnJl
ZCBvbnRvXG5cdCAgLy8gdGhlIG5ld2x5IGFsbG9jYXRlZCBwcm9wcyBvYmplY3QuXG5cdCAgdmFy
IGNoaWxkcmVuTGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aCAtIDI7XG5cdCAgaWYgKGNoaWxkcmVu
TGVuZ3RoID09PSAxKSB7XG5cdCAgICBwcm9wcy5jaGlsZHJlbiA9IGNoaWxkcmVuO1xuXHQgIH0g
ZWxzZSBpZiAoY2hpbGRyZW5MZW5ndGggPiAxKSB7XG5cdCAgICB2YXIgY2hpbGRBcnJheSA9IEFy
cmF5KGNoaWxkcmVuTGVuZ3RoKTtcblx0ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2hpbGRyZW5M
ZW5ndGg7IGkrKykge1xuXHQgICAgICBjaGlsZEFycmF5W2ldID0gYXJndW1lbnRzW2kgKyAyXTtc
blx0ICAgIH1cblx0ICAgIGlmIChmYWxzZSkge1xuXHQgICAgICBpZiAoT2JqZWN0LmZyZWV6ZSkg
e1xuXHQgICAgICAgIE9iamVjdC5mcmVlemUoY2hpbGRBcnJheSk7XG5cdCAgICAgIH1cblx0ICAg
IH1cblx0ICAgIHByb3BzLmNoaWxkcmVuID0gY2hpbGRBcnJheTtcblx0ICB9XG5cdFxuXHQgIC8v
IFJlc29sdmUgZGVmYXVsdCBwcm9wc1xuXHQgIGlmICh0eXBlICYmIHR5cGUuZGVmYXVsdFByb3Bz
KSB7XG5cdCAgICB2YXIgZGVmYXVsdFByb3BzID0gdHlwZS5kZWZhdWx0UHJvcHM7XG5cdCAgICBm
b3IgKHByb3BOYW1lIGluIGRlZmF1bHRQcm9wcykge1xuXHQgICAgICBpZiAocHJvcHNbcHJvcE5h
bWVdID09PSB1bmRlZmluZWQpIHtcblx0ICAgICAgICBwcm9wc1twcm9wTmFtZV0gPSBkZWZhdWx0
UHJvcHNbcHJvcE5hbWVdO1xuXHQgICAgICB9XG5cdCAgICB9XG5cdCAgfVxuXHQgIGlmIChmYWxz
ZSkge1xuXHQgICAgaWYgKGtleSB8fCByZWYpIHtcblx0ICAgICAgaWYgKHR5cGVvZiBwcm9wcy4k
JHR5cGVvZiA9PT0gJ3VuZGVmaW5lZCcgfHwgcHJvcHMuJCR0eXBlb2YgIT09IFJFQUNUX0VMRU1F
TlRfVFlQRSkge1xuXHQgICAgICAgIHZhciBkaXNwbGF5TmFtZSA9IHR5cGVvZiB0eXBlID09PSAn
ZnVuY3Rpb24nID8gdHlwZS5kaXNwbGF5TmFtZSB8fCB0eXBlLm5hbWUgfHwgJ1Vua25vd24nIDog
dHlwZTtcblx0ICAgICAgICBpZiAoa2V5KSB7XG5cdCAgICAgICAgICBkZWZpbmVLZXlQcm9wV2Fy
bmluZ0dldHRlcihwcm9wcywgZGlzcGxheU5hbWUpO1xuXHQgICAgICAgIH1cblx0ICAgICAgICBp
ZiAocmVmKSB7XG5cdCAgICAgICAgICBkZWZpbmVSZWZQcm9wV2FybmluZ0dldHRlcihwcm9wcywg
ZGlzcGxheU5hbWUpO1xuXHQgICAgICAgIH1cblx0ICAgICAgfVxuXHQgICAgfVxuXHQgIH1cblx0
ICByZXR1cm4gUmVhY3RFbGVtZW50KHR5cGUsIGtleSwgcmVmLCBzZWxmLCBzb3VyY2UsIFJlYWN0
Q3VycmVudE93bmVyLmN1cnJlbnQsIHByb3BzKTtcblx0fTtcblx0XG5cdC8qKlxuXHQgKiBSZXR1
cm4gYSBmdW5jdGlvbiB0aGF0IHByb2R1Y2VzIFJlYWN0RWxlbWVudHMgb2YgYSBnaXZlbiB0eXBl
LlxuXHQgKiBTZWUgaHR0cHM6Ly9mYWNlYm9vay5naXRodWIuaW8vcmVhY3QvZG9jcy90b3AtbGV2
ZWwtYXBpLmh0bWwjcmVhY3QuY3JlYXRlZmFjdG9yeVxuXHQgKi9cblx0UmVhY3RFbGVtZW50LmNy
ZWF0ZUZhY3RvcnkgPSBmdW5jdGlvbiAodHlwZSkge1xuXHQgIHZhciBmYWN0b3J5ID0gUmVhY3RF
bGVtZW50LmNyZWF0ZUVsZW1lbnQuYmluZChudWxsLCB0eXBlKTtcblx0ICAvLyBFeHBvc2UgdGhl
IHR5cGUgb24gdGhlIGZhY3RvcnkgYW5kIHRoZSBwcm90b3R5cGUgc28gdGhhdCBpdCBjYW4gYmVc
blx0ICAvLyBlYXNpbHkgYWNjZXNzZWQgb24gZWxlbWVudHMuIEUuZy4gYDxGb28gLz4udHlwZSA9
PT0gRm9vYC5cblx0ICAvLyBUaGlzIHNob3VsZCBub3QgYmUgbmFtZWQgYGNvbnN0cnVjdG9yYCBz
aW5jZSB0aGlzIG1heSBub3QgYmUgdGhlIGZ1bmN0aW9uXG5cdCAgLy8gdGhhdCBjcmVhdGVkIHRo
ZSBlbGVtZW50LCBhbmQgaXQgbWF5IG5vdCBldmVuIGJlIGEgY29uc3RydWN0b3IuXG5cdCAgLy8g
TGVnYWN5IGhvb2sgVE9ETzogV2FybiBpZiB0aGlzIGlzIGFjY2Vzc2VkXG5cdCAgZmFjdG9yeS50
eXBlID0gdHlwZTtcblx0ICByZXR1cm4gZmFjdG9yeTtcblx0fTtcblx0XG5cdFJlYWN0RWxlbWVu
dC5jbG9uZUFuZFJlcGxhY2VLZXkgPSBmdW5jdGlvbiAob2xkRWxlbWVudCwgbmV3S2V5KSB7XG5c
dCAgdmFyIG5ld0VsZW1lbnQgPSBSZWFjdEVsZW1lbnQob2xkRWxlbWVudC50eXBlLCBuZXdLZXks
IG9sZEVsZW1lbnQucmVmLCBvbGRFbGVtZW50Ll9zZWxmLCBvbGRFbGVtZW50Ll9zb3VyY2UsIG9s
ZEVsZW1lbnQuX293bmVyLCBvbGRFbGVtZW50LnByb3BzKTtcblx0XG5cdCAgcmV0dXJuIG5ld0Vs
ZW1lbnQ7XG5cdH07XG5cdFxuXHQvKipcblx0ICogQ2xvbmUgYW5kIHJldHVybiBhIG5ldyBSZWFj
dEVsZW1lbnQgdXNpbmcgZWxlbWVudCBhcyB0aGUgc3RhcnRpbmcgcG9pbnQuXG5cdCAqIFNlZSBo
dHRwczovL2ZhY2Vib29rLmdpdGh1Yi5pby9yZWFjdC9kb2NzL3RvcC1sZXZlbC1hcGkuaHRtbCNy
ZWFjdC5jbG9uZWVsZW1lbnRcblx0ICovXG5cdFJlYWN0RWxlbWVudC5jbG9uZUVsZW1lbnQgPSBm
dW5jdGlvbiAoZWxlbWVudCwgY29uZmlnLCBjaGlsZHJlbikge1xuXHQgIHZhciBwcm9wTmFtZTtc
blx0XG5cdCAgLy8gT3JpZ2luYWwgcHJvcHMgYXJlIGNvcGllZFxuXHQgIHZhciBwcm9wcyA9IF9h
c3NpZ24oe30sIGVsZW1lbnQucHJvcHMpO1xuXHRcblx0ICAvLyBSZXNlcnZlZCBuYW1lcyBhcmUg
ZXh0cmFjdGVkXG5cdCAgdmFyIGtleSA9IGVsZW1lbnQua2V5O1xuXHQgIHZhciByZWYgPSBlbGVt
ZW50LnJlZjtcblx0ICAvLyBTZWxmIGlzIHByZXNlcnZlZCBzaW5jZSB0aGUgb3duZXIgaXMgcHJl
c2VydmVkLlxuXHQgIHZhciBzZWxmID0gZWxlbWVudC5fc2VsZjtcblx0ICAvLyBTb3VyY2UgaXMg
cHJlc2VydmVkIHNpbmNlIGNsb25lRWxlbWVudCBpcyB1bmxpa2VseSB0byBiZSB0YXJnZXRlZCBi
eSBhXG5cdCAgLy8gdHJhbnNwaWxlciwgYW5kIHRoZSBvcmlnaW5hbCBzb3VyY2UgaXMgcHJvYmFi
bHkgYSBiZXR0ZXIgaW5kaWNhdG9yIG9mIHRoZVxuXHQgIC8vIHRydWUgb3duZXIuXG5cdCAgdmFy
IHNvdXJjZSA9IGVsZW1lbnQuX3NvdXJjZTtcblx0XG5cdCAgLy8gT3duZXIgd2lsbCBiZSBwcmVz
ZXJ2ZWQsIHVubGVzcyByZWYgaXMgb3ZlcnJpZGRlblxuXHQgIHZhciBvd25lciA9IGVsZW1lbnQu
X293bmVyO1xuXHRcblx0ICBpZiAoY29uZmlnICE9IG51bGwpIHtcblx0ICAgIGlmIChoYXNWYWxp
ZFJlZihjb25maWcpKSB7XG5cdCAgICAgIC8vIFNpbGVudGx5IHN0ZWFsIHRoZSByZWYgZnJvbSB0
aGUgcGFyZW50LlxuXHQgICAgICByZWYgPSBjb25maWcucmVmO1xuXHQgICAgICBvd25lciA9IFJl
YWN0Q3VycmVudE93bmVyLmN1cnJlbnQ7XG5cdCAgICB9XG5cdCAgICBpZiAoaGFzVmFsaWRLZXko
Y29uZmlnKSkge1xuXHQgICAgICBrZXkgPSAnJyArIGNvbmZpZy5rZXk7XG5cdCAgICB9XG5cdFxu
XHQgICAgLy8gUmVtYWluaW5nIHByb3BlcnRpZXMgb3ZlcnJpZGUgZXhpc3RpbmcgcHJvcHNcblx0
ICAgIHZhciBkZWZhdWx0UHJvcHM7XG5cdCAgICBpZiAoZWxlbWVudC50eXBlICYmIGVsZW1lbnQu
dHlwZS5kZWZhdWx0UHJvcHMpIHtcblx0ICAgICAgZGVmYXVsdFByb3BzID0gZWxlbWVudC50eXBl
LmRlZmF1bHRQcm9wcztcblx0ICAgIH1cblx0ICAgIGZvciAocHJvcE5hbWUgaW4gY29uZmlnKSB7
XG5cdCAgICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKGNvbmZpZywgcHJvcE5hbWUpICYmICFS
RVNFUlZFRF9QUk9QUy5oYXNPd25Qcm9wZXJ0eShwcm9wTmFtZSkpIHtcblx0ICAgICAgICBpZiAo
Y29uZmlnW3Byb3BOYW1lXSA9PT0gdW5kZWZpbmVkICYmIGRlZmF1bHRQcm9wcyAhPT0gdW5kZWZp
bmVkKSB7XG5cdCAgICAgICAgICAvLyBSZXNvbHZlIGRlZmF1bHQgcHJvcHNcblx0ICAgICAgICAg
IHByb3BzW3Byb3BOYW1lXSA9IGRlZmF1bHRQcm9wc1twcm9wTmFtZV07XG5cdCAgICAgICAgfSBl
bHNlIHtcblx0ICAgICAgICAgIHByb3BzW3Byb3BOYW1lXSA9IGNvbmZpZ1twcm9wTmFtZV07XG5c
dCAgICAgICAgfVxuXHQgICAgICB9XG5cdCAgICB9XG5cdCAgfVxuXHRcblx0ICAvLyBDaGlsZHJl
biBjYW4gYmUgbW9yZSB0aGFuIG9uZSBhcmd1bWVudCwgYW5kIHRob3NlIGFyZSB0cmFuc2ZlcnJl
ZCBvbnRvXG5cdCAgLy8gdGhlIG5ld2x5IGFsbG9jYXRlZCBwcm9wcyBvYmplY3QuXG5cdCAgdmFy
IGNoaWxkcmVuTGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aCAtIDI7XG5cdCAgaWYgKGNoaWxkcmVu
TGVuZ3RoID09PSAxKSB7XG5cdCAgICBwcm9wcy5jaGlsZHJlbiA9IGNoaWxkcmVuO1xuXHQgIH0g
ZWxzZSBpZiAoY2hpbGRyZW5MZW5ndGggPiAxKSB7XG5cdCAgICB2YXIgY2hpbGRBcnJheSA9IEFy
cmF5KGNoaWxkcmVuTGVuZ3RoKTtcblx0ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2hpbGRyZW5M
ZW5ndGg7IGkrKykge1xuXHQgICAgICBjaGlsZEFycmF5W2ldID0gYXJndW1lbnRzW2kgKyAyXTtc
blx0ICAgIH1cblx0ICAgIHByb3BzLmNoaWxkcmVuID0gY2hpbGRBcnJheTtcblx0ICB9XG5cdFxu
XHQgIHJldHVybiBSZWFjdEVsZW1lbnQoZWxlbWVudC50eXBlLCBrZXksIHJlZiwgc2VsZiwgc291
cmNlLCBvd25lciwgcHJvcHMpO1xuXHR9O1xuXHRcblx0LyoqXG5cdCAqIFZlcmlmaWVzIHRoZSBv
YmplY3QgaXMgYSBSZWFjdEVsZW1lbnQuXG5cdCAqIFNlZSBodHRwczovL2ZhY2Vib29rLmdpdGh1
Yi5pby9yZWFjdC9kb2NzL3RvcC1sZXZlbC1hcGkuaHRtbCNyZWFjdC5pc3ZhbGlkZWxlbWVudFxu
XHQgKiBAcGFyYW0gez9vYmplY3R9IG9iamVjdFxuXHQgKiBAcmV0dXJuIHtib29sZWFufSBUcnVl
IGlmIGBvYmplY3RgIGlzIGEgdmFsaWQgY29tcG9uZW50LlxuXHQgKiBAZmluYWxcblx0ICovXG5c
dFJlYWN0RWxlbWVudC5pc1ZhbGlkRWxlbWVudCA9IGZ1bmN0aW9uIChvYmplY3QpIHtcblx0ICBy
ZXR1cm4gdHlwZW9mIG9iamVjdCA9PT0gJ29iamVjdCcgJiYgb2JqZWN0ICE9PSBudWxsICYmIG9i
amVjdC4kJHR5cGVvZiA9PT0gUkVBQ1RfRUxFTUVOVF9UWVBFO1xuXHR9O1xuXHRcblx0bW9kdWxl
LmV4cG9ydHMgPSBSZWFjdEVsZW1lbnQ7XG5cbi8qKiovIH0sXG4vKiAxOSAqL1xuLyoqKi8gZnVu
Y3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0LyoqXG5c
dCAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5k
ZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUg
aW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwg
Z3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMg
ZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqL1xuXHRcblx0J3VzZSBzdHJp
Y3QnO1xuXHRcblx0dmFyIF9wcm9kSW52YXJpYW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXygzKTtc
blx0XG5cdHZhciBFdmVudFBsdWdpblJlZ2lzdHJ5ID0gX193ZWJwYWNrX3JlcXVpcmVfXygzNik7
XG5cdHZhciBFdmVudFBsdWdpblV0aWxzID0gX193ZWJwYWNrX3JlcXVpcmVfXygzNyk7XG5cdHZh
ciBSZWFjdEVycm9yVXRpbHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQxKTtcblx0XG5cdHZhciBh
Y2N1bXVsYXRlSW50byA9IF9fd2VicGFja19yZXF1aXJlX18oNzApO1xuXHR2YXIgZm9yRWFjaEFj
Y3VtdWxhdGVkID0gX193ZWJwYWNrX3JlcXVpcmVfXyg3MSk7XG5cdHZhciBpbnZhcmlhbnQgPSBf
X3dlYnBhY2tfcmVxdWlyZV9fKDEpO1xuXHRcblx0LyoqXG5cdCAqIEludGVybmFsIHN0b3JlIGZv
ciBldmVudCBsaXN0ZW5lcnNcblx0ICovXG5cdHZhciBsaXN0ZW5lckJhbmsgPSB7fTtcblx0XG5c
dC8qKlxuXHQgKiBJbnRlcm5hbCBxdWV1ZSBvZiBldmVudHMgdGhhdCBoYXZlIGFjY3VtdWxhdGVk
IHRoZWlyIGRpc3BhdGNoZXMgYW5kIGFyZVxuXHQgKiB3YWl0aW5nIHRvIGhhdmUgdGhlaXIgZGlz
cGF0Y2hlcyBleGVjdXRlZC5cblx0ICovXG5cdHZhciBldmVudFF1ZXVlID0gbnVsbDtcblx0XG5c
dC8qKlxuXHQgKiBEaXNwYXRjaGVzIGFuIGV2ZW50IGFuZCByZWxlYXNlcyBpdCBiYWNrIGludG8g
dGhlIHBvb2wsIHVubGVzcyBwZXJzaXN0ZW50LlxuXHQgKlxuXHQgKiBAcGFyYW0gez9vYmplY3R9
IGV2ZW50IFN5bnRoZXRpYyBldmVudCB0byBiZSBkaXNwYXRjaGVkLlxuXHQgKiBAcGFyYW0ge2Jv
b2xlYW59IHNpbXVsYXRlZCBJZiB0aGUgZXZlbnQgaXMgc2ltdWxhdGVkIChjaGFuZ2VzIGV4biBi
ZWhhdmlvcilcblx0ICogQHByaXZhdGVcblx0ICovXG5cdHZhciBleGVjdXRlRGlzcGF0Y2hlc0Fu
ZFJlbGVhc2UgPSBmdW5jdGlvbiAoZXZlbnQsIHNpbXVsYXRlZCkge1xuXHQgIGlmIChldmVudCkg
e1xuXHQgICAgRXZlbnRQbHVnaW5VdGlscy5leGVjdXRlRGlzcGF0Y2hlc0luT3JkZXIoZXZlbnQs
IHNpbXVsYXRlZCk7XG5cdFxuXHQgICAgaWYgKCFldmVudC5pc1BlcnNpc3RlbnQoKSkge1xuXHQg
ICAgICBldmVudC5jb25zdHJ1Y3Rvci5yZWxlYXNlKGV2ZW50KTtcblx0ICAgIH1cblx0ICB9XG5c
dH07XG5cdHZhciBleGVjdXRlRGlzcGF0Y2hlc0FuZFJlbGVhc2VTaW11bGF0ZWQgPSBmdW5jdGlv
biAoZSkge1xuXHQgIHJldHVybiBleGVjdXRlRGlzcGF0Y2hlc0FuZFJlbGVhc2UoZSwgdHJ1ZSk7
XG5cdH07XG5cdHZhciBleGVjdXRlRGlzcGF0Y2hlc0FuZFJlbGVhc2VUb3BMZXZlbCA9IGZ1bmN0
aW9uIChlKSB7XG5cdCAgcmV0dXJuIGV4ZWN1dGVEaXNwYXRjaGVzQW5kUmVsZWFzZShlLCBmYWxz
ZSk7XG5cdH07XG5cdFxuXHR2YXIgZ2V0RGljdGlvbmFyeUtleSA9IGZ1bmN0aW9uIChpbnN0KSB7
XG5cdCAgLy8gUHJldmVudHMgVjggcGVyZm9ybWFuY2UgaXNzdWU6XG5cdCAgLy8gaHR0cHM6Ly9n
aXRodWIuY29tL2ZhY2Vib29rL3JlYWN0L3B1bGwvNzIzMlxuXHQgIHJldHVybiAnLicgKyBpbnN0
Ll9yb290Tm9kZUlEO1xuXHR9O1xuXHRcblx0ZnVuY3Rpb24gaXNJbnRlcmFjdGl2ZSh0YWcpIHtc
blx0ICByZXR1cm4gdGFnID09PSAnYnV0dG9uJyB8fCB0YWcgPT09ICdpbnB1dCcgfHwgdGFnID09
PSAnc2VsZWN0JyB8fCB0YWcgPT09ICd0ZXh0YXJlYSc7XG5cdH1cblx0XG5cdGZ1bmN0aW9uIHNo
b3VsZFByZXZlbnRNb3VzZUV2ZW50KG5hbWUsIHR5cGUsIHByb3BzKSB7XG5cdCAgc3dpdGNoIChu
YW1lKSB7XG5cdCAgICBjYXNlICdvbkNsaWNrJzpcblx0ICAgIGNhc2UgJ29uQ2xpY2tDYXB0dXJl
Jzpcblx0ICAgIGNhc2UgJ29uRG91YmxlQ2xpY2snOlxuXHQgICAgY2FzZSAnb25Eb3VibGVDbGlj
a0NhcHR1cmUnOlxuXHQgICAgY2FzZSAnb25Nb3VzZURvd24nOlxuXHQgICAgY2FzZSAnb25Nb3Vz
ZURvd25DYXB0dXJlJzpcblx0ICAgIGNhc2UgJ29uTW91c2VNb3ZlJzpcblx0ICAgIGNhc2UgJ29u
TW91c2VNb3ZlQ2FwdHVyZSc6XG5cdCAgICBjYXNlICdvbk1vdXNlVXAnOlxuXHQgICAgY2FzZSAn
b25Nb3VzZVVwQ2FwdHVyZSc6XG5cdCAgICAgIHJldHVybiAhIShwcm9wcy5kaXNhYmxlZCAmJiBp
c0ludGVyYWN0aXZlKHR5cGUpKTtcblx0ICAgIGRlZmF1bHQ6XG5cdCAgICAgIHJldHVybiBmYWxz
ZTtcblx0ICB9XG5cdH1cblx0XG5cdC8qKlxuXHQgKiBUaGlzIGlzIGEgdW5pZmllZCBpbnRlcmZh
Y2UgZm9yIGV2ZW50IHBsdWdpbnMgdG8gYmUgaW5zdGFsbGVkIGFuZCBjb25maWd1cmVkLlxuXHQg
KlxuXHQgKiBFdmVudCBwbHVnaW5zIGNhbiBpbXBsZW1lbnQgdGhlIGZvbGxvd2luZyBwcm9wZXJ0
aWVzOlxuXHQgKlxuXHQgKiAgIGBleHRyYWN0RXZlbnRzYCB7ZnVuY3Rpb24oc3RyaW5nLCBET01F
dmVudFRhcmdldCwgc3RyaW5nLCBvYmplY3QpOiAqfVxuXHQgKiAgICAgUmVxdWlyZWQuIFdoZW4g
YSB0b3AtbGV2ZWwgZXZlbnQgaXMgZmlyZWQsIHRoaXMgbWV0aG9kIGlzIGV4cGVjdGVkIHRvXG5c
dCAqICAgICBleHRyYWN0IHN5bnRoZXRpYyBldmVudHMgdGhhdCB3aWxsIGluIHR1cm4gYmUgcXVl
dWVkIGFuZCBkaXNwYXRjaGVkLlxuXHQgKlxuXHQgKiAgIGBldmVudFR5cGVzYCB7b2JqZWN0fVxu
XHQgKiAgICAgT3B0aW9uYWwsIHBsdWdpbnMgdGhhdCBmaXJlIGV2ZW50cyBtdXN0IHB1Ymxpc2gg
YSBtYXBwaW5nIG9mIHJlZ2lzdHJhdGlvblxuXHQgKiAgICAgbmFtZXMgdGhhdCBhcmUgdXNlZCB0
byByZWdpc3RlciBsaXN0ZW5lcnMuIFZhbHVlcyBvZiB0aGlzIG1hcHBpbmcgbXVzdFxuXHQgKiAg
ICAgYmUgb2JqZWN0cyB0aGF0IGNvbnRhaW4gYHJlZ2lzdHJhdGlvbk5hbWVgIG9yIGBwaGFzZWRS
ZWdpc3RyYXRpb25OYW1lc2AuXG5cdCAqXG5cdCAqICAgYGV4ZWN1dGVEaXNwYXRjaGAge2Z1bmN0
aW9uKG9iamVjdCwgZnVuY3Rpb24sIHN0cmluZyl9XG5cdCAqICAgICBPcHRpb25hbCwgYWxsb3dz
IHBsdWdpbnMgdG8gb3ZlcnJpZGUgaG93IGFuIGV2ZW50IGdldHMgZGlzcGF0Y2hlZC4gQnlcblx0
ICogICAgIGRlZmF1bHQsIHRoZSBsaXN0ZW5lciBpcyBzaW1wbHkgaW52b2tlZC5cblx0ICpcblx0
ICogRWFjaCBwbHVnaW4gdGhhdCBpcyBpbmplY3RlZCBpbnRvIGBFdmVudHNQbHVnaW5IdWJgIGlz
IGltbWVkaWF0ZWx5IG9wZXJhYmxlLlxuXHQgKlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHR2YXIg
RXZlbnRQbHVnaW5IdWIgPSB7XG5cdCAgLyoqXG5cdCAgICogTWV0aG9kcyBmb3IgaW5qZWN0aW5n
IGRlcGVuZGVuY2llcy5cblx0ICAgKi9cblx0ICBpbmplY3Rpb246IHtcblx0ICAgIC8qKlxuXHQg
ICAgICogQHBhcmFtIHthcnJheX0gSW5qZWN0ZWRFdmVudFBsdWdpbk9yZGVyXG5cdCAgICAgKiBA
cHVibGljXG5cdCAgICAgKi9cblx0ICAgIGluamVjdEV2ZW50UGx1Z2luT3JkZXI6IEV2ZW50UGx1
Z2luUmVnaXN0cnkuaW5qZWN0RXZlbnRQbHVnaW5PcmRlcixcblx0XG5cdCAgICAvKipcblx0ICAg
ICAqIEBwYXJhbSB7b2JqZWN0fSBpbmplY3RlZE5hbWVzVG9QbHVnaW5zIE1hcCBmcm9tIG5hbWVz
IHRvIHBsdWdpbiBtb2R1bGVzLlxuXHQgICAgICovXG5cdCAgICBpbmplY3RFdmVudFBsdWdpbnNC
eU5hbWU6IEV2ZW50UGx1Z2luUmVnaXN0cnkuaW5qZWN0RXZlbnRQbHVnaW5zQnlOYW1lXG5cdCAg
fSxcblx0XG5cdCAgLyoqXG5cdCAgICogU3RvcmVzIGBsaXN0ZW5lcmAgYXQgYGxpc3RlbmVyQmFu
a1tyZWdpc3RyYXRpb25OYW1lXVtrZXldYC4gSXMgaWRlbXBvdGVudC5cblx0ICAgKlxuXHQgICAq
IEBwYXJhbSB7b2JqZWN0fSBpbnN0IFRoZSBpbnN0YW5jZSwgd2hpY2ggaXMgdGhlIHNvdXJjZSBv
ZiBldmVudHMuXG5cdCAgICogQHBhcmFtIHtzdHJpbmd9IHJlZ2lzdHJhdGlvbk5hbWUgTmFtZSBv
ZiBsaXN0ZW5lciAoZS5nLiBgb25DbGlja2ApLlxuXHQgICAqIEBwYXJhbSB7ZnVuY3Rpb259IGxp
c3RlbmVyIFRoZSBjYWxsYmFjayB0byBzdG9yZS5cblx0ICAgKi9cblx0ICBwdXRMaXN0ZW5lcjog
ZnVuY3Rpb24gKGluc3QsIHJlZ2lzdHJhdGlvbk5hbWUsIGxpc3RlbmVyKSB7XG5cdCAgICAhKHR5
cGVvZiBsaXN0ZW5lciA9PT0gJ2Z1bmN0aW9uJykgPyAgZmFsc2UgPyBpbnZhcmlhbnQoZmFsc2Us
ICdFeHBlY3RlZCAlcyBsaXN0ZW5lciB0byBiZSBhIGZ1bmN0aW9uLCBpbnN0ZWFkIGdvdCB0eXBl
ICVzJywgcmVnaXN0cmF0aW9uTmFtZSwgdHlwZW9mIGxpc3RlbmVyKSA6IF9wcm9kSW52YXJpYW50
KCc5NCcsIHJlZ2lzdHJhdGlvbk5hbWUsIHR5cGVvZiBsaXN0ZW5lcikgOiB2b2lkIDA7XG5cdFxu
XHQgICAgdmFyIGtleSA9IGdldERpY3Rpb25hcnlLZXkoaW5zdCk7XG5cdCAgICB2YXIgYmFua0Zv
clJlZ2lzdHJhdGlvbk5hbWUgPSBsaXN0ZW5lckJhbmtbcmVnaXN0cmF0aW9uTmFtZV0gfHwgKGxp
c3RlbmVyQmFua1tyZWdpc3RyYXRpb25OYW1lXSA9IHt9KTtcblx0ICAgIGJhbmtGb3JSZWdpc3Ry
YXRpb25OYW1lW2tleV0gPSBsaXN0ZW5lcjtcblx0XG5cdCAgICB2YXIgUGx1Z2luTW9kdWxlID0g
RXZlbnRQbHVnaW5SZWdpc3RyeS5yZWdpc3RyYXRpb25OYW1lTW9kdWxlc1tyZWdpc3RyYXRpb25O
YW1lXTtcblx0ICAgIGlmIChQbHVnaW5Nb2R1bGUgJiYgUGx1Z2luTW9kdWxlLmRpZFB1dExpc3Rl
bmVyKSB7XG5cdCAgICAgIFBsdWdpbk1vZHVsZS5kaWRQdXRMaXN0ZW5lcihpbnN0LCByZWdpc3Ry
YXRpb25OYW1lLCBsaXN0ZW5lcik7XG5cdCAgICB9XG5cdCAgfSxcblx0XG5cdCAgLyoqXG5cdCAg
ICogQHBhcmFtIHtvYmplY3R9IGluc3QgVGhlIGluc3RhbmNlLCB3aGljaCBpcyB0aGUgc291cmNl
IG9mIGV2ZW50cy5cblx0ICAgKiBAcGFyYW0ge3N0cmluZ30gcmVnaXN0cmF0aW9uTmFtZSBOYW1l
IG9mIGxpc3RlbmVyIChlLmcuIGBvbkNsaWNrYCkuXG5cdCAgICogQHJldHVybiB7P2Z1bmN0aW9u
fSBUaGUgc3RvcmVkIGNhbGxiYWNrLlxuXHQgICAqL1xuXHQgIGdldExpc3RlbmVyOiBmdW5jdGlv
biAoaW5zdCwgcmVnaXN0cmF0aW9uTmFtZSkge1xuXHQgICAgLy8gVE9ETzogc2hvdWxkUHJldmVu
dE1vdXNlRXZlbnQgaXMgRE9NLXNwZWNpZmljIGFuZCBkZWZpbml0ZWx5IHNob3VsZCBub3Rcblx0
ICAgIC8vIGxpdmUgaGVyZTsgbmVlZHMgdG8gYmUgbW92ZWQgdG8gYSBiZXR0ZXIgcGxhY2Ugc29v
blxuXHQgICAgdmFyIGJhbmtGb3JSZWdpc3RyYXRpb25OYW1lID0gbGlzdGVuZXJCYW5rW3JlZ2lz
dHJhdGlvbk5hbWVdO1xuXHQgICAgaWYgKHNob3VsZFByZXZlbnRNb3VzZUV2ZW50KHJlZ2lzdHJh
dGlvbk5hbWUsIGluc3QuX2N1cnJlbnRFbGVtZW50LnR5cGUsIGluc3QuX2N1cnJlbnRFbGVtZW50
LnByb3BzKSkge1xuXHQgICAgICByZXR1cm4gbnVsbDtcblx0ICAgIH1cblx0ICAgIHZhciBrZXkg
PSBnZXREaWN0aW9uYXJ5S2V5KGluc3QpO1xuXHQgICAgcmV0dXJuIGJhbmtGb3JSZWdpc3RyYXRp
b25OYW1lICYmIGJhbmtGb3JSZWdpc3RyYXRpb25OYW1lW2tleV07XG5cdCAgfSxcblx0XG5cdCAg
LyoqXG5cdCAgICogRGVsZXRlcyBhIGxpc3RlbmVyIGZyb20gdGhlIHJlZ2lzdHJhdGlvbiBiYW5r
LlxuXHQgICAqXG5cdCAgICogQHBhcmFtIHtvYmplY3R9IGluc3QgVGhlIGluc3RhbmNlLCB3aGlj
aCBpcyB0aGUgc291cmNlIG9mIGV2ZW50cy5cblx0ICAgKiBAcGFyYW0ge3N0cmluZ30gcmVnaXN0
cmF0aW9uTmFtZSBOYW1lIG9mIGxpc3RlbmVyIChlLmcuIGBvbkNsaWNrYCkuXG5cdCAgICovXG5c
dCAgZGVsZXRlTGlzdGVuZXI6IGZ1bmN0aW9uIChpbnN0LCByZWdpc3RyYXRpb25OYW1lKSB7XG5c
dCAgICB2YXIgUGx1Z2luTW9kdWxlID0gRXZlbnRQbHVnaW5SZWdpc3RyeS5yZWdpc3RyYXRpb25O
YW1lTW9kdWxlc1tyZWdpc3RyYXRpb25OYW1lXTtcblx0ICAgIGlmIChQbHVnaW5Nb2R1bGUgJiYg
UGx1Z2luTW9kdWxlLndpbGxEZWxldGVMaXN0ZW5lcikge1xuXHQgICAgICBQbHVnaW5Nb2R1bGUu
d2lsbERlbGV0ZUxpc3RlbmVyKGluc3QsIHJlZ2lzdHJhdGlvbk5hbWUpO1xuXHQgICAgfVxuXHRc
blx0ICAgIHZhciBiYW5rRm9yUmVnaXN0cmF0aW9uTmFtZSA9IGxpc3RlbmVyQmFua1tyZWdpc3Ry
YXRpb25OYW1lXTtcblx0ICAgIC8vIFRPRE86IFRoaXMgc2hvdWxkIG5ldmVyIGJlIG51bGwgLS0g
d2hlbiBpcyBpdD9cblx0ICAgIGlmIChiYW5rRm9yUmVnaXN0cmF0aW9uTmFtZSkge1xuXHQgICAg
ICB2YXIga2V5ID0gZ2V0RGljdGlvbmFyeUtleShpbnN0KTtcblx0ICAgICAgZGVsZXRlIGJhbmtG
b3JSZWdpc3RyYXRpb25OYW1lW2tleV07XG5cdCAgICB9XG5cdCAgfSxcblx0XG5cdCAgLyoqXG5c
dCAgICogRGVsZXRlcyBhbGwgbGlzdGVuZXJzIGZvciB0aGUgRE9NIGVsZW1lbnQgd2l0aCB0aGUg
c3VwcGxpZWQgSUQuXG5cdCAgICpcblx0ICAgKiBAcGFyYW0ge29iamVjdH0gaW5zdCBUaGUgaW5z
dGFuY2UsIHdoaWNoIGlzIHRoZSBzb3VyY2Ugb2YgZXZlbnRzLlxuXHQgICAqL1xuXHQgIGRlbGV0
ZUFsbExpc3RlbmVyczogZnVuY3Rpb24gKGluc3QpIHtcblx0ICAgIHZhciBrZXkgPSBnZXREaWN0
aW9uYXJ5S2V5KGluc3QpO1xuXHQgICAgZm9yICh2YXIgcmVnaXN0cmF0aW9uTmFtZSBpbiBsaXN0
ZW5lckJhbmspIHtcblx0ICAgICAgaWYgKCFsaXN0ZW5lckJhbmsuaGFzT3duUHJvcGVydHkocmVn
aXN0cmF0aW9uTmFtZSkpIHtcblx0ICAgICAgICBjb250aW51ZTtcblx0ICAgICAgfVxuXHRcblx0
ICAgICAgaWYgKCFsaXN0ZW5lckJhbmtbcmVnaXN0cmF0aW9uTmFtZV1ba2V5XSkge1xuXHQgICAg
ICAgIGNvbnRpbnVlO1xuXHQgICAgICB9XG5cdFxuXHQgICAgICB2YXIgUGx1Z2luTW9kdWxlID0g
RXZlbnRQbHVnaW5SZWdpc3RyeS5yZWdpc3RyYXRpb25OYW1lTW9kdWxlc1tyZWdpc3RyYXRpb25O
YW1lXTtcblx0ICAgICAgaWYgKFBsdWdpbk1vZHVsZSAmJiBQbHVnaW5Nb2R1bGUud2lsbERlbGV0
ZUxpc3RlbmVyKSB7XG5cdCAgICAgICAgUGx1Z2luTW9kdWxlLndpbGxEZWxldGVMaXN0ZW5lcihp
bnN0LCByZWdpc3RyYXRpb25OYW1lKTtcblx0ICAgICAgfVxuXHRcblx0ICAgICAgZGVsZXRlIGxp
c3RlbmVyQmFua1tyZWdpc3RyYXRpb25OYW1lXVtrZXldO1xuXHQgICAgfVxuXHQgIH0sXG5cdFxu
XHQgIC8qKlxuXHQgICAqIEFsbG93cyByZWdpc3RlcmVkIHBsdWdpbnMgYW4gb3Bwb3J0dW5pdHkg
dG8gZXh0cmFjdCBldmVudHMgZnJvbSB0b3AtbGV2ZWxcblx0ICAgKiBuYXRpdmUgYnJvd3NlciBl
dmVudHMuXG5cdCAgICpcblx0ICAgKiBAcmV0dXJuIHsqfSBBbiBhY2N1bXVsYXRpb24gb2Ygc3lu
dGhldGljIGV2ZW50cy5cblx0ICAgKiBAaW50ZXJuYWxcblx0ICAgKi9cblx0ICBleHRyYWN0RXZl
bnRzOiBmdW5jdGlvbiAodG9wTGV2ZWxUeXBlLCB0YXJnZXRJbnN0LCBuYXRpdmVFdmVudCwgbmF0
aXZlRXZlbnRUYXJnZXQpIHtcblx0ICAgIHZhciBldmVudHM7XG5cdCAgICB2YXIgcGx1Z2lucyA9
IEV2ZW50UGx1Z2luUmVnaXN0cnkucGx1Z2lucztcblx0ICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
cGx1Z2lucy5sZW5ndGg7IGkrKykge1xuXHQgICAgICAvLyBOb3QgZXZlcnkgcGx1Z2luIGluIHRo
ZSBvcmRlcmluZyBtYXkgYmUgbG9hZGVkIGF0IHJ1bnRpbWUuXG5cdCAgICAgIHZhciBwb3NzaWJs
ZVBsdWdpbiA9IHBsdWdpbnNbaV07XG5cdCAgICAgIGlmIChwb3NzaWJsZVBsdWdpbikge1xuXHQg
ICAgICAgIHZhciBleHRyYWN0ZWRFdmVudHMgPSBwb3NzaWJsZVBsdWdpbi5leHRyYWN0RXZlbnRz
KHRvcExldmVsVHlwZSwgdGFyZ2V0SW5zdCwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0
KTtcblx0ICAgICAgICBpZiAoZXh0cmFjdGVkRXZlbnRzKSB7XG5cdCAgICAgICAgICBldmVudHMg
PSBhY2N1bXVsYXRlSW50byhldmVudHMsIGV4dHJhY3RlZEV2ZW50cyk7XG5cdCAgICAgICAgfVxu
XHQgICAgICB9XG5cdCAgICB9XG5cdCAgICByZXR1cm4gZXZlbnRzO1xuXHQgIH0sXG5cdFxuXHQg
IC8qKlxuXHQgICAqIEVucXVldWVzIGEgc3ludGhldGljIGV2ZW50IHRoYXQgc2hvdWxkIGJlIGRp
c3BhdGNoZWQgd2hlblxuXHQgICAqIGBwcm9jZXNzRXZlbnRRdWV1ZWAgaXMgaW52b2tlZC5cblx0
ICAgKlxuXHQgICAqIEBwYXJhbSB7Kn0gZXZlbnRzIEFuIGFjY3VtdWxhdGlvbiBvZiBzeW50aGV0
aWMgZXZlbnRzLlxuXHQgICAqIEBpbnRlcm5hbFxuXHQgICAqL1xuXHQgIGVucXVldWVFdmVudHM6
IGZ1bmN0aW9uIChldmVudHMpIHtcblx0ICAgIGlmIChldmVudHMpIHtcblx0ICAgICAgZXZlbnRR
dWV1ZSA9IGFjY3VtdWxhdGVJbnRvKGV2ZW50UXVldWUsIGV2ZW50cyk7XG5cdCAgICB9XG5cdCAg
fSxcblx0XG5cdCAgLyoqXG5cdCAgICogRGlzcGF0Y2hlcyBhbGwgc3ludGhldGljIGV2ZW50cyBv
biB0aGUgZXZlbnQgcXVldWUuXG5cdCAgICpcblx0ICAgKiBAaW50ZXJuYWxcblx0ICAgKi9cblx0
ICBwcm9jZXNzRXZlbnRRdWV1ZTogZnVuY3Rpb24gKHNpbXVsYXRlZCkge1xuXHQgICAgLy8gU2V0
IGBldmVudFF1ZXVlYCB0byBudWxsIGJlZm9yZSBwcm9jZXNzaW5nIGl0IHNvIHRoYXQgd2UgY2Fu
IHRlbGwgaWYgbW9yZVxuXHQgICAgLy8gZXZlbnRzIGdldCBlbnF1ZXVlZCB3aGlsZSBwcm9jZXNz
aW5nLlxuXHQgICAgdmFyIHByb2Nlc3NpbmdFdmVudFF1ZXVlID0gZXZlbnRRdWV1ZTtcblx0ICAg
IGV2ZW50UXVldWUgPSBudWxsO1xuXHQgICAgaWYgKHNpbXVsYXRlZCkge1xuXHQgICAgICBmb3JF
YWNoQWNjdW11bGF0ZWQocHJvY2Vzc2luZ0V2ZW50UXVldWUsIGV4ZWN1dGVEaXNwYXRjaGVzQW5k
UmVsZWFzZVNpbXVsYXRlZCk7XG5cdCAgICB9IGVsc2Uge1xuXHQgICAgICBmb3JFYWNoQWNjdW11
bGF0ZWQocHJvY2Vzc2luZ0V2ZW50UXVldWUsIGV4ZWN1dGVEaXNwYXRjaGVzQW5kUmVsZWFzZVRv
cExldmVsKTtcblx0ICAgIH1cblx0ICAgICEhZXZlbnRRdWV1ZSA/ICBmYWxzZSA/IGludmFyaWFu
dChmYWxzZSwgJ3Byb2Nlc3NFdmVudFF1ZXVlKCk6IEFkZGl0aW9uYWwgZXZlbnRzIHdlcmUgZW5x
dWV1ZWQgd2hpbGUgcHJvY2Vzc2luZyBhbiBldmVudCBxdWV1ZS4gU3VwcG9ydCBmb3IgdGhpcyBo
YXMgbm90IHlldCBiZWVuIGltcGxlbWVudGVkLicpIDogX3Byb2RJbnZhcmlhbnQoJzk1JykgOiB2
b2lkIDA7XG5cdCAgICAvLyBUaGlzIHdvdWxkIGJlIGEgZ29vZCB0aW1lIHRvIHJldGhyb3cgaWYg
YW55IG9mIHRoZSBldmVudCBoYW5kbGVycyB0aHJldy5cblx0ICAgIFJlYWN0RXJyb3JVdGlscy5y
ZXRocm93Q2F1Z2h0RXJyb3IoKTtcblx0ICB9LFxuXHRcblx0ICAvKipcblx0ICAgKiBUaGVzZSBh
cmUgbmVlZGVkIGZvciB0ZXN0cyBvbmx5LiBEbyBub3QgdXNlIVxuXHQgICAqL1xuXHQgIF9fcHVy
Z2U6IGZ1bmN0aW9uICgpIHtcblx0ICAgIGxpc3RlbmVyQmFuayA9IHt9O1xuXHQgIH0sXG5cdFxu
XHQgIF9fZ2V0TGlzdGVuZXJCYW5rOiBmdW5jdGlvbiAoKSB7XG5cdCAgICByZXR1cm4gbGlzdGVu
ZXJCYW5rO1xuXHQgIH1cblx0fTtcblx0XG5cdG1vZHVsZS5leHBvcnRzID0gRXZlbnRQbHVnaW5I
dWI7XG5cbi8qKiovIH0sXG4vKiAyMCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRz
LCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAyMDEzLXBy
ZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5c
dCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNl
bnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5
IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50
IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJl
Y3RvcnkuXG5cdCAqXG5cdCAqL1xuXHRcblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0dmFyIEV2ZW50
UGx1Z2luSHViID0gX193ZWJwYWNrX3JlcXVpcmVfXygxOSk7XG5cdHZhciBFdmVudFBsdWdpblV0
aWxzID0gX193ZWJwYWNrX3JlcXVpcmVfXygzNyk7XG5cdFxuXHR2YXIgYWNjdW11bGF0ZUludG8g
PSBfX3dlYnBhY2tfcmVxdWlyZV9fKDcwKTtcblx0dmFyIGZvckVhY2hBY2N1bXVsYXRlZCA9IF9f
d2VicGFja19yZXF1aXJlX18oNzEpO1xuXHR2YXIgd2FybmluZyA9IF9fd2VicGFja19yZXF1aXJl
X18oMik7XG5cdFxuXHR2YXIgZ2V0TGlzdGVuZXIgPSBFdmVudFBsdWdpbkh1Yi5nZXRMaXN0ZW5l
cjtcblx0XG5cdC8qKlxuXHQgKiBTb21lIGV2ZW50IHR5cGVzIGhhdmUgYSBub3Rpb24gb2YgZGlm
ZmVyZW50IHJlZ2lzdHJhdGlvbiBuYW1lcyBmb3IgZGlmZmVyZW50XG5cdCAqIFwicGhhc2VzXCIg
b2YgcHJvcGFnYXRpb24uIFRoaXMgZmluZHMgbGlzdGVuZXJzIGJ5IGEgZ2l2ZW4gcGhhc2UuXG5c
dCAqL1xuXHRmdW5jdGlvbiBsaXN0ZW5lckF0UGhhc2UoaW5zdCwgZXZlbnQsIHByb3BhZ2F0aW9u
UGhhc2UpIHtcblx0ICB2YXIgcmVnaXN0cmF0aW9uTmFtZSA9IGV2ZW50LmRpc3BhdGNoQ29uZmln
LnBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzW3Byb3BhZ2F0aW9uUGhhc2VdO1xuXHQgIHJldHVybiBn
ZXRMaXN0ZW5lcihpbnN0LCByZWdpc3RyYXRpb25OYW1lKTtcblx0fVxuXHRcblx0LyoqXG5cdCAq
IFRhZ3MgYSBgU3ludGhldGljRXZlbnRgIHdpdGggZGlzcGF0Y2hlZCBsaXN0ZW5lcnMuIENyZWF0
aW5nIHRoaXMgZnVuY3Rpb25cblx0ICogaGVyZSwgYWxsb3dzIHVzIHRvIG5vdCBoYXZlIHRvIGJp
bmQgb3IgY3JlYXRlIGZ1bmN0aW9ucyBmb3IgZWFjaCBldmVudC5cblx0ICogTXV0YXRpbmcgdGhl
IGV2ZW50J3MgbWVtYmVycyBhbGxvd3MgdXMgdG8gbm90IGhhdmUgdG8gY3JlYXRlIGEgd3JhcHBp
bmdcblx0ICogXCJkaXNwYXRjaFwiIG9iamVjdCB0aGF0IHBhaXJzIHRoZSBldmVudCB3aXRoIHRo
ZSBsaXN0ZW5lci5cblx0ICovXG5cdGZ1bmN0aW9uIGFjY3VtdWxhdGVEaXJlY3Rpb25hbERpc3Bh
dGNoZXMoaW5zdCwgcGhhc2UsIGV2ZW50KSB7XG5cdCAgaWYgKGZhbHNlKSB7XG5cdCAgICBwcm9j
ZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhpbnN0LCAnRGlzcGF0
Y2hpbmcgaW5zdCBtdXN0IG5vdCBiZSBudWxsJykgOiB2b2lkIDA7XG5cdCAgfVxuXHQgIHZhciBs
aXN0ZW5lciA9IGxpc3RlbmVyQXRQaGFzZShpbnN0LCBldmVudCwgcGhhc2UpO1xuXHQgIGlmIChs
aXN0ZW5lcikge1xuXHQgICAgZXZlbnQuX2Rpc3BhdGNoTGlzdGVuZXJzID0gYWNjdW11bGF0ZUlu
dG8oZXZlbnQuX2Rpc3BhdGNoTGlzdGVuZXJzLCBsaXN0ZW5lcik7XG5cdCAgICBldmVudC5fZGlz
cGF0Y2hJbnN0YW5jZXMgPSBhY2N1bXVsYXRlSW50byhldmVudC5fZGlzcGF0Y2hJbnN0YW5jZXMs
IGluc3QpO1xuXHQgIH1cblx0fVxuXHRcblx0LyoqXG5cdCAqIENvbGxlY3QgZGlzcGF0Y2hlcyAo
bXVzdCBiZSBlbnRpcmVseSBjb2xsZWN0ZWQgYmVmb3JlIGRpc3BhdGNoaW5nIC0gc2VlIHVuaXRc
blx0ICogdGVzdHMpLiBMYXppbHkgYWxsb2NhdGUgdGhlIGFycmF5IHRvIGNvbnNlcnZlIG1lbW9y
eS4gIFdlIG11c3QgbG9vcCB0aHJvdWdoXG5cdCAqIGVhY2ggZXZlbnQgYW5kIHBlcmZvcm0gdGhl
IHRyYXZlcnNhbCBmb3IgZWFjaCBvbmUuIFdlIGNhbm5vdCBwZXJmb3JtIGFcblx0ICogc2luZ2xl
IHRyYXZlcnNhbCBmb3IgdGhlIGVudGlyZSBjb2xsZWN0aW9uIG9mIGV2ZW50cyBiZWNhdXNlIGVh
Y2ggZXZlbnQgbWF5XG5cdCAqIGhhdmUgYSBkaWZmZXJlbnQgdGFyZ2V0LlxuXHQgKi9cblx0ZnVu
Y3Rpb24gYWNjdW11bGF0ZVR3b1BoYXNlRGlzcGF0Y2hlc1NpbmdsZShldmVudCkge1xuXHQgIGlm
IChldmVudCAmJiBldmVudC5kaXNwYXRjaENvbmZpZy5waGFzZWRSZWdpc3RyYXRpb25OYW1lcykg
e1xuXHQgICAgRXZlbnRQbHVnaW5VdGlscy50cmF2ZXJzZVR3b1BoYXNlKGV2ZW50Ll90YXJnZXRJ
bnN0LCBhY2N1bXVsYXRlRGlyZWN0aW9uYWxEaXNwYXRjaGVzLCBldmVudCk7XG5cdCAgfVxuXHR9
XG5cdFxuXHQvKipcblx0ICogU2FtZSBhcyBgYWNjdW11bGF0ZVR3b1BoYXNlRGlzcGF0Y2hlc1Np
bmdsZWAsIGJ1dCBza2lwcyBvdmVyIHRoZSB0YXJnZXRJRC5cblx0ICovXG5cdGZ1bmN0aW9uIGFj
Y3VtdWxhdGVUd29QaGFzZURpc3BhdGNoZXNTaW5nbGVTa2lwVGFyZ2V0KGV2ZW50KSB7XG5cdCAg
aWYgKGV2ZW50ICYmIGV2ZW50LmRpc3BhdGNoQ29uZmlnLnBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVz
KSB7XG5cdCAgICB2YXIgdGFyZ2V0SW5zdCA9IGV2ZW50Ll90YXJnZXRJbnN0O1xuXHQgICAgdmFy
IHBhcmVudEluc3QgPSB0YXJnZXRJbnN0ID8gRXZlbnRQbHVnaW5VdGlscy5nZXRQYXJlbnRJbnN0
YW5jZSh0YXJnZXRJbnN0KSA6IG51bGw7XG5cdCAgICBFdmVudFBsdWdpblV0aWxzLnRyYXZlcnNl
VHdvUGhhc2UocGFyZW50SW5zdCwgYWNjdW11bGF0ZURpcmVjdGlvbmFsRGlzcGF0Y2hlcywgZXZl
bnQpO1xuXHQgIH1cblx0fVxuXHRcblx0LyoqXG5cdCAqIEFjY3VtdWxhdGVzIHdpdGhvdXQgcmVn
YXJkIHRvIGRpcmVjdGlvbiwgZG9lcyBub3QgbG9vayBmb3IgcGhhc2VkXG5cdCAqIHJlZ2lzdHJh
dGlvbiBuYW1lcy4gU2FtZSBhcyBgYWNjdW11bGF0ZURpcmVjdERpc3BhdGNoZXNTaW5nbGVgIGJ1
dCB3aXRob3V0XG5cdCAqIHJlcXVpcmluZyB0aGF0IHRoZSBgZGlzcGF0Y2hNYXJrZXJgIGJlIHRo
ZSBzYW1lIGFzIHRoZSBkaXNwYXRjaGVkIElELlxuXHQgKi9cblx0ZnVuY3Rpb24gYWNjdW11bGF0
ZURpc3BhdGNoZXMoaW5zdCwgaWdub3JlZERpcmVjdGlvbiwgZXZlbnQpIHtcblx0ICBpZiAoZXZl
bnQgJiYgZXZlbnQuZGlzcGF0Y2hDb25maWcucmVnaXN0cmF0aW9uTmFtZSkge1xuXHQgICAgdmFy
IHJlZ2lzdHJhdGlvbk5hbWUgPSBldmVudC5kaXNwYXRjaENvbmZpZy5yZWdpc3RyYXRpb25OYW1l
O1xuXHQgICAgdmFyIGxpc3RlbmVyID0gZ2V0TGlzdGVuZXIoaW5zdCwgcmVnaXN0cmF0aW9uTmFt
ZSk7XG5cdCAgICBpZiAobGlzdGVuZXIpIHtcblx0ICAgICAgZXZlbnQuX2Rpc3BhdGNoTGlzdGVu
ZXJzID0gYWNjdW11bGF0ZUludG8oZXZlbnQuX2Rpc3BhdGNoTGlzdGVuZXJzLCBsaXN0ZW5lcik7
XG5cdCAgICAgIGV2ZW50Ll9kaXNwYXRjaEluc3RhbmNlcyA9IGFjY3VtdWxhdGVJbnRvKGV2ZW50
Ll9kaXNwYXRjaEluc3RhbmNlcywgaW5zdCk7XG5cdCAgICB9XG5cdCAgfVxuXHR9XG5cdFxuXHQv
Kipcblx0ICogQWNjdW11bGF0ZXMgZGlzcGF0Y2hlcyBvbiBhbiBgU3ludGhldGljRXZlbnRgLCBi
dXQgb25seSBmb3IgdGhlXG5cdCAqIGBkaXNwYXRjaE1hcmtlcmAuXG5cdCAqIEBwYXJhbSB7U3lu
dGhldGljRXZlbnR9IGV2ZW50XG5cdCAqL1xuXHRmdW5jdGlvbiBhY2N1bXVsYXRlRGlyZWN0RGlz
cGF0Y2hlc1NpbmdsZShldmVudCkge1xuXHQgIGlmIChldmVudCAmJiBldmVudC5kaXNwYXRjaENv
bmZpZy5yZWdpc3RyYXRpb25OYW1lKSB7XG5cdCAgICBhY2N1bXVsYXRlRGlzcGF0Y2hlcyhldmVu
dC5fdGFyZ2V0SW5zdCwgbnVsbCwgZXZlbnQpO1xuXHQgIH1cblx0fVxuXHRcblx0ZnVuY3Rpb24g
YWNjdW11bGF0ZVR3b1BoYXNlRGlzcGF0Y2hlcyhldmVudHMpIHtcblx0ICBmb3JFYWNoQWNjdW11
bGF0ZWQoZXZlbnRzLCBhY2N1bXVsYXRlVHdvUGhhc2VEaXNwYXRjaGVzU2luZ2xlKTtcblx0fVxu
XHRcblx0ZnVuY3Rpb24gYWNjdW11bGF0ZVR3b1BoYXNlRGlzcGF0Y2hlc1NraXBUYXJnZXQoZXZl
bnRzKSB7XG5cdCAgZm9yRWFjaEFjY3VtdWxhdGVkKGV2ZW50cywgYWNjdW11bGF0ZVR3b1BoYXNl
RGlzcGF0Y2hlc1NpbmdsZVNraXBUYXJnZXQpO1xuXHR9XG5cdFxuXHRmdW5jdGlvbiBhY2N1bXVs
YXRlRW50ZXJMZWF2ZURpc3BhdGNoZXMobGVhdmUsIGVudGVyLCBmcm9tLCB0bykge1xuXHQgIEV2
ZW50UGx1Z2luVXRpbHMudHJhdmVyc2VFbnRlckxlYXZlKGZyb20sIHRvLCBhY2N1bXVsYXRlRGlz
cGF0Y2hlcywgbGVhdmUsIGVudGVyKTtcblx0fVxuXHRcblx0ZnVuY3Rpb24gYWNjdW11bGF0ZURp
cmVjdERpc3BhdGNoZXMoZXZlbnRzKSB7XG5cdCAgZm9yRWFjaEFjY3VtdWxhdGVkKGV2ZW50cywg
YWNjdW11bGF0ZURpcmVjdERpc3BhdGNoZXNTaW5nbGUpO1xuXHR9XG5cdFxuXHQvKipcblx0ICog
QSBzbWFsbCBzZXQgb2YgcHJvcGFnYXRpb24gcGF0dGVybnMsIGVhY2ggb2Ygd2hpY2ggd2lsbCBh
Y2NlcHQgYSBzbWFsbCBhbW91bnRcblx0ICogb2YgaW5mb3JtYXRpb24sIGFuZCBnZW5lcmF0ZSBh
IHNldCBvZiBcImRpc3BhdGNoIHJlYWR5IGV2ZW50IG9iamVjdHNcIiAtIHdoaWNoXG5cdCAqIGFy
ZSBzZXRzIG9mIGV2ZW50cyB0aGF0IGhhdmUgYWxyZWFkeSBiZWVuIGFubm90YXRlZCB3aXRoIGEg
c2V0IG9mIGRpc3BhdGNoZWRcblx0ICogbGlzdGVuZXIgZnVuY3Rpb25zL2lkcy4gVGhlIEFQSSBp
cyBkZXNpZ25lZCB0aGlzIHdheSB0byBkaXNjb3VyYWdlIHRoZXNlXG5cdCAqIHByb3BhZ2F0aW9u
IHN0cmF0ZWdpZXMgZnJvbSBhY3R1YWxseSBleGVjdXRpbmcgdGhlIGRpc3BhdGNoZXMsIHNpbmNl
IHdlXG5cdCAqIGFsd2F5cyB3YW50IHRvIGNvbGxlY3QgdGhlIGVudGlyZSBzZXQgb2YgZGlzcGF0
Y2hlcyBiZWZvcmUgZXhlY3V0aW5nIGV2ZW50IGFcblx0ICogc2luZ2xlIG9uZS5cblx0ICpcblx0
ICogQGNvbnN0cnVjdG9yIEV2ZW50UHJvcGFnYXRvcnNcblx0ICovXG5cdHZhciBFdmVudFByb3Bh
Z2F0b3JzID0ge1xuXHQgIGFjY3VtdWxhdGVUd29QaGFzZURpc3BhdGNoZXM6IGFjY3VtdWxhdGVU
d29QaGFzZURpc3BhdGNoZXMsXG5cdCAgYWNjdW11bGF0ZVR3b1BoYXNlRGlzcGF0Y2hlc1NraXBU
YXJnZXQ6IGFjY3VtdWxhdGVUd29QaGFzZURpc3BhdGNoZXNTa2lwVGFyZ2V0LFxuXHQgIGFjY3Vt
dWxhdGVEaXJlY3REaXNwYXRjaGVzOiBhY2N1bXVsYXRlRGlyZWN0RGlzcGF0Y2hlcyxcblx0ICBh
Y2N1bXVsYXRlRW50ZXJMZWF2ZURpc3BhdGNoZXM6IGFjY3VtdWxhdGVFbnRlckxlYXZlRGlzcGF0
Y2hlc1xuXHR9O1xuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBFdmVudFByb3BhZ2F0b3JzO1xuXG4v
KioqLyB9LFxuLyogMjEgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5c
dC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBB
bGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vu
c2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5T
RSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRp
dGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQ
QVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKi9cblx0XG5cdCd1
c2Ugc3RyaWN0Jztcblx0XG5cdC8qKlxuXHQgKiBgUmVhY3RJbnN0YW5jZU1hcGAgbWFpbnRhaW5z
IGEgbWFwcGluZyBmcm9tIGEgcHVibGljIGZhY2luZyBzdGF0ZWZ1bFxuXHQgKiBpbnN0YW5jZSAo
a2V5KSBhbmQgdGhlIGludGVybmFsIHJlcHJlc2VudGF0aW9uICh2YWx1ZSkuIFRoaXMgYWxsb3dz
IHB1YmxpY1xuXHQgKiBtZXRob2RzIHRvIGFjY2VwdCB0aGUgdXNlciBmYWNpbmcgaW5zdGFuY2Ug
YXMgYW4gYXJndW1lbnQgYW5kIG1hcCB0aGVtIGJhY2tcblx0ICogdG8gaW50ZXJuYWwgbWV0aG9k
cy5cblx0ICovXG5cdFxuXHQvLyBUT0RPOiBSZXBsYWNlIHRoaXMgd2l0aCBFUzY6IHZhciBSZWFj
dEluc3RhbmNlTWFwID0gbmV3IE1hcCgpO1xuXHRcblx0dmFyIFJlYWN0SW5zdGFuY2VNYXAgPSB7
XG5cdCAgLyoqXG5cdCAgICogVGhpcyBBUEkgc2hvdWxkIGJlIGNhbGxlZCBgZGVsZXRlYCBidXQg
d2UnZCBoYXZlIHRvIG1ha2Ugc3VyZSB0byBhbHdheXNcblx0ICAgKiB0cmFuc2Zvcm0gdGhlc2Ug
dG8gc3RyaW5ncyBmb3IgSUUgc3VwcG9ydC4gV2hlbiB0aGlzIHRyYW5zZm9ybSBpcyBmdWxseVxu
XHQgICAqIHN1cHBvcnRlZCB3ZSBjYW4gcmVuYW1lIGl0LlxuXHQgICAqL1xuXHQgIHJlbW92ZTog
ZnVuY3Rpb24gKGtleSkge1xuXHQgICAga2V5Ll9yZWFjdEludGVybmFsSW5zdGFuY2UgPSB1bmRl
ZmluZWQ7XG5cdCAgfSxcblx0XG5cdCAgZ2V0OiBmdW5jdGlvbiAoa2V5KSB7XG5cdCAgICByZXR1
cm4ga2V5Ll9yZWFjdEludGVybmFsSW5zdGFuY2U7XG5cdCAgfSxcblx0XG5cdCAgaGFzOiBmdW5j
dGlvbiAoa2V5KSB7XG5cdCAgICByZXR1cm4ga2V5Ll9yZWFjdEludGVybmFsSW5zdGFuY2UgIT09
IHVuZGVmaW5lZDtcblx0ICB9LFxuXHRcblx0ICBzZXQ6IGZ1bmN0aW9uIChrZXksIHZhbHVlKSB7
XG5cdCAgICBrZXkuX3JlYWN0SW50ZXJuYWxJbnN0YW5jZSA9IHZhbHVlO1xuXHQgIH1cblx0fTtc
blx0XG5cdG1vZHVsZS5leHBvcnRzID0gUmVhY3RJbnN0YW5jZU1hcDtcblxuLyoqKi8gfSxcbi8q
IDIyICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJl
X18pIHtcblxuXHQvKipcblx0ICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIElu
Yy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29k
ZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5c
dCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJl
ZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3Vu
ZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpcblx0ICov
XG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHR2YXIgU3ludGhldGljRXZlbnQgPSBfX3dlYnBh
Y2tfcmVxdWlyZV9fKDEwKTtcblx0XG5cdHZhciBnZXRFdmVudFRhcmdldCA9IF9fd2VicGFja19y
ZXF1aXJlX18oNDYpO1xuXHRcblx0LyoqXG5cdCAqIEBpbnRlcmZhY2UgVUlFdmVudFxuXHQgKiBA
c2VlIGh0dHA6Ly93d3cudzMub3JnL1RSL0RPTS1MZXZlbC0zLUV2ZW50cy9cblx0ICovXG5cdHZh
ciBVSUV2ZW50SW50ZXJmYWNlID0ge1xuXHQgIHZpZXc6IGZ1bmN0aW9uIChldmVudCkge1xuXHQg
ICAgaWYgKGV2ZW50LnZpZXcpIHtcblx0ICAgICAgcmV0dXJuIGV2ZW50LnZpZXc7XG5cdCAgICB9
XG5cdFxuXHQgICAgdmFyIHRhcmdldCA9IGdldEV2ZW50VGFyZ2V0KGV2ZW50KTtcblx0ICAgIGlm
ICh0YXJnZXQud2luZG93ID09PSB0YXJnZXQpIHtcblx0ICAgICAgLy8gdGFyZ2V0IGlzIGEgd2lu
ZG93IG9iamVjdFxuXHQgICAgICByZXR1cm4gdGFyZ2V0O1xuXHQgICAgfVxuXHRcblx0ICAgIHZh
ciBkb2MgPSB0YXJnZXQub3duZXJEb2N1bWVudDtcblx0ICAgIC8vIFRPRE86IEZpZ3VyZSBvdXQg
d2h5IGBvd25lckRvY3VtZW50YCBpcyBzb21ldGltZXMgdW5kZWZpbmVkIGluIElFOC5cblx0ICAg
IGlmIChkb2MpIHtcblx0ICAgICAgcmV0dXJuIGRvYy5kZWZhdWx0VmlldyB8fCBkb2MucGFyZW50
V2luZG93O1xuXHQgICAgfSBlbHNlIHtcblx0ICAgICAgcmV0dXJuIHdpbmRvdztcblx0ICAgIH1c
blx0ICB9LFxuXHQgIGRldGFpbDogZnVuY3Rpb24gKGV2ZW50KSB7XG5cdCAgICByZXR1cm4gZXZl
bnQuZGV0YWlsIHx8IDA7XG5cdCAgfVxuXHR9O1xuXHRcblx0LyoqXG5cdCAqIEBwYXJhbSB7b2Jq
ZWN0fSBkaXNwYXRjaENvbmZpZyBDb25maWd1cmF0aW9uIHVzZWQgdG8gZGlzcGF0Y2ggdGhpcyBl
dmVudC5cblx0ICogQHBhcmFtIHtzdHJpbmd9IGRpc3BhdGNoTWFya2VyIE1hcmtlciBpZGVudGlm
eWluZyB0aGUgZXZlbnQgdGFyZ2V0LlxuXHQgKiBAcGFyYW0ge29iamVjdH0gbmF0aXZlRXZlbnQg
TmF0aXZlIGJyb3dzZXIgZXZlbnQuXG5cdCAqIEBleHRlbmRzIHtTeW50aGV0aWNFdmVudH1cblx0
ICovXG5cdGZ1bmN0aW9uIFN5bnRoZXRpY1VJRXZlbnQoZGlzcGF0Y2hDb25maWcsIGRpc3BhdGNo
TWFya2VyLCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpIHtcblx0ICByZXR1cm4gU3lu
dGhldGljRXZlbnQuY2FsbCh0aGlzLCBkaXNwYXRjaENvbmZpZywgZGlzcGF0Y2hNYXJrZXIsIG5h
dGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCk7XG5cdH1cblx0XG5cdFN5bnRoZXRpY0V2ZW50
LmF1Z21lbnRDbGFzcyhTeW50aGV0aWNVSUV2ZW50LCBVSUV2ZW50SW50ZXJmYWNlKTtcblx0XG5c
dG1vZHVsZS5leHBvcnRzID0gU3ludGhldGljVUlFdmVudDtcblxuLyoqKi8gfSxcbi8qIDIzICov
XG4zLFxuLyogMjQgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNr
X3JlcXVpcmVfXykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwg
RmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICogVGhp
cyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91
bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhp
cyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRz
IGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5c
blx0ICpcblx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHR2YXIgZW1wdHlPYmplY3Qg
PSB7fTtcblx0XG5cdGlmIChmYWxzZSkge1xuXHQgIE9iamVjdC5mcmVlemUoZW1wdHlPYmplY3Qp
O1xuXHR9XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IGVtcHR5T2JqZWN0O1xuXG4vKioqLyB9LFxu
LyogMjUgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVp
cmVfXykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywg
SW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBj
b2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVc
blx0ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0
cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZv
dW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQg
Ki9cblx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdHZhciBfYXNzaWduID0gX193ZWJwYWNrX3Jl
cXVpcmVfXyg0KTtcblx0XG5cdHZhciBFdmVudFBsdWdpblJlZ2lzdHJ5ID0gX193ZWJwYWNrX3Jl
cXVpcmVfXygzNik7XG5cdHZhciBSZWFjdEV2ZW50RW1pdHRlck1peGluID0gX193ZWJwYWNrX3Jl
cXVpcmVfXygxNTIpO1xuXHR2YXIgVmlld3BvcnRNZXRyaWNzID0gX193ZWJwYWNrX3JlcXVpcmVf
Xyg2OSk7XG5cdFxuXHR2YXIgZ2V0VmVuZG9yUHJlZml4ZWRFdmVudE5hbWUgPSBfX3dlYnBhY2tf
cmVxdWlyZV9fKDE4NCk7XG5cdHZhciBpc0V2ZW50U3VwcG9ydGVkID0gX193ZWJwYWNrX3JlcXVp
cmVfXyg0Nyk7XG5cdFxuXHQvKipcblx0ICogU3VtbWFyeSBvZiBgUmVhY3RCcm93c2VyRXZlbnRF
bWl0dGVyYCBldmVudCBoYW5kbGluZzpcblx0ICpcblx0ICogIC0gVG9wLWxldmVsIGRlbGVnYXRp
b24gaXMgdXNlZCB0byB0cmFwIG1vc3QgbmF0aXZlIGJyb3dzZXIgZXZlbnRzLiBUaGlzXG5cdCAq
ICAgIG1heSBvbmx5IG9jY3VyIGluIHRoZSBtYWluIHRocmVhZCBhbmQgaXMgdGhlIHJlc3BvbnNp
YmlsaXR5IG9mXG5cdCAqICAgIFJlYWN0RXZlbnRMaXN0ZW5lciwgd2hpY2ggaXMgaW5qZWN0ZWQg
YW5kIGNhbiB0aGVyZWZvcmUgc3VwcG9ydCBwbHVnZ2FibGVcblx0ICogICAgZXZlbnQgc291cmNl
cy4gVGhpcyBpcyB0aGUgb25seSB3b3JrIHRoYXQgb2NjdXJzIGluIHRoZSBtYWluIHRocmVhZC5c
blx0ICpcblx0ICogIC0gV2Ugbm9ybWFsaXplIGFuZCBkZS1kdXBsaWNhdGUgZXZlbnRzIHRvIGFj
Y291bnQgZm9yIGJyb3dzZXIgcXVpcmtzLiBUaGlzXG5cdCAqICAgIG1heSBiZSBkb25lIGluIHRo
ZSB3b3JrZXIgdGhyZWFkLlxuXHQgKlxuXHQgKiAgLSBGb3J3YXJkIHRoZXNlIG5hdGl2ZSBldmVu
dHMgKHdpdGggdGhlIGFzc29jaWF0ZWQgdG9wLWxldmVsIHR5cGUgdXNlZCB0b1xuXHQgKiAgICB0
cmFwIGl0KSB0byBgRXZlbnRQbHVnaW5IdWJgLCB3aGljaCBpbiB0dXJuIHdpbGwgYXNrIHBsdWdp
bnMgaWYgdGhleSB3YW50XG5cdCAqICAgIHRvIGV4dHJhY3QgYW55IHN5bnRoZXRpYyBldmVudHMu
XG5cdCAqXG5cdCAqICAtIFRoZSBgRXZlbnRQbHVnaW5IdWJgIHdpbGwgdGhlbiBwcm9jZXNzIGVh
Y2ggZXZlbnQgYnkgYW5ub3RhdGluZyB0aGVtIHdpdGhcblx0ICogICAgXCJkaXNwYXRjaGVzXCIs
IGEgc2VxdWVuY2Ugb2YgbGlzdGVuZXJzIGFuZCBJRHMgdGhhdCBjYXJlIGFib3V0IHRoYXQgZXZl
bnQuXG5cdCAqXG5cdCAqICAtIFRoZSBgRXZlbnRQbHVnaW5IdWJgIHRoZW4gZGlzcGF0Y2hlcyB0
aGUgZXZlbnRzLlxuXHQgKlxuXHQgKiBPdmVydmlldyBvZiBSZWFjdCBhbmQgdGhlIGV2ZW50IHN5
c3RlbTpcblx0ICpcblx0ICogKy0tLS0tLS0tLS0tLSsgICAgLlxuXHQgKiB8ICAgIERPTSAgICAg
fCAgICAuXG5cdCAqICstLS0tLS0tLS0tLS0rICAgIC5cblx0ICogICAgICAgfCAgICAgICAgICAg
LlxuXHQgKiAgICAgICB2ICAgICAgICAgICAuXG5cdCAqICstLS0tLS0tLS0tLS0rICAgIC5cblx0
ICogfCBSZWFjdEV2ZW50IHwgICAgLlxuXHQgKiB8ICBMaXN0ZW5lciAgfCAgICAuXG5cdCAqICst
LS0tLS0tLS0tLS0rICAgIC4gICAgICAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tK1xu
XHQgKiAgICAgICB8ICAgICAgICAgICAuICAgICAgICAgICAgICAgKy0tLS0tLS0tK3xTaW1wbGVF
dmVudHxcblx0ICogICAgICAgfCAgICAgICAgICAgLiAgICAgICAgICAgICAgIHwgICAgICAgICB8
UGx1Z2luICAgICB8XG5cdCAqICstLS0tLXwtLS0tLS0rICAgIC4gICAgICAgICAgICAgICB2ICAg
ICAgICAgKy0tLS0tLS0tLS0tK1xuXHQgKiB8ICAgICB8ICAgICAgfCAgICAuICAgICstLS0tLS0t
LS0tLS0tLSsgICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0rXG5cdCAqIHwgICAgICst
LS0tLS0tLS0tLS4tLS0+fEV2ZW50UGx1Z2luSHVifCAgICAgICAgICAgICAgICAgICAgfCAgICBF
dmVudCAgIHxcblx0ICogfCAgICAgICAgICAgIHwgICAgLiAgICB8ICAgICAgICAgICAgICB8ICAg
ICArLS0tLS0tLS0tLS0rICB8IFByb3BhZ2F0b3JzfFxuXHQgKiB8IFJlYWN0RXZlbnQgfCAgICAu
ICAgIHwgICAgICAgICAgICAgIHwgICAgIHxUYXBFdmVudCAgIHwgIHwtLS0tLS0tLS0tLS18XG5c
dCAqIHwgIEVtaXR0ZXIgICB8ICAgIC4gICAgfCAgICAgICAgICAgICAgfDwtLS0rfFBsdWdpbiAg
ICAgfCAgfG90aGVyIHBsdWdpbnxcblx0ICogfCAgICAgICAgICAgIHwgICAgLiAgICB8ICAgICAg
ICAgICAgICB8ICAgICArLS0tLS0tLS0tLS0rICB8ICB1dGlsaXRpZXMgfFxuXHQgKiB8ICAgICAr
LS0tLS0tLS0tLS0uLS0tPnwgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICstLS0t
LS0tLS0tLS0rXG5cdCAqIHwgICAgIHwgICAgICB8ICAgIC4gICAgKy0tLS0tLS0tLS0tLS0tK1xu
XHQgKiArLS0tLS18LS0tLS0tKyAgICAuICAgICAgICAgICAgICAgIF4gICAgICAgICstLS0tLS0t
LS0tLStcblx0ICogICAgICAgfCAgICAgICAgICAgLiAgICAgICAgICAgICAgICB8ICAgICAgICB8
RW50ZXIvTGVhdmV8XG5cdCAqICAgICAgICsgICAgICAgICAgIC4gICAgICAgICAgICAgICAgKy0t
LS0tLS0rfFBsdWdpbiAgICAgfFxuXHQgKiArLS0tLS0tLS0tLS0tLSsgICAuICAgICAgICAgICAg
ICAgICAgICAgICAgICstLS0tLS0tLS0tLStcblx0ICogfCBhcHBsaWNhdGlvbiB8ICAgLlxuXHQg
KiB8LS0tLS0tLS0tLS0tLXwgICAuXG5cdCAqIHwgICAgICAgICAgICAgfCAgIC5cblx0ICogfCAg
ICAgICAgICAgICB8ICAgLlxuXHQgKiArLS0tLS0tLS0tLS0tLSsgICAuXG5cdCAqICAgICAgICAg
ICAgICAgICAgIC5cblx0ICogICAgUmVhY3QgQ29yZSAgICAgLiAgR2VuZXJhbCBQdXJwb3NlIEV2
ZW50IFBsdWdpbiBTeXN0ZW1cblx0ICovXG5cdFxuXHR2YXIgaGFzRXZlbnRQYWdlWFk7XG5cdHZh
ciBhbHJlYWR5TGlzdGVuaW5nVG8gPSB7fTtcblx0dmFyIGlzTW9uaXRvcmluZ1Njcm9sbFZhbHVl
ID0gZmFsc2U7XG5cdHZhciByZWFjdFRvcExpc3RlbmVyc0NvdW50ZXIgPSAwO1xuXHRcblx0Ly8g
Rm9yIGV2ZW50cyBsaWtlICdzdWJtaXQnIHdoaWNoIGRvbid0IGNvbnNpc3RlbnRseSBidWJibGUg
KHdoaWNoIHdlIHRyYXAgYXQgYVxuXHQvLyBsb3dlciBub2RlIHRoYW4gYGRvY3VtZW50YCksIGJp
bmRpbmcgYXQgYGRvY3VtZW50YCB3b3VsZCBjYXVzZSBkdXBsaWNhdGVcblx0Ly8gZXZlbnRzIHNv
IHdlIGRvbid0IGluY2x1ZGUgdGhlbSBoZXJlXG5cdHZhciB0b3BFdmVudE1hcHBpbmcgPSB7XG5c
dCAgdG9wQWJvcnQ6ICdhYm9ydCcsXG5cdCAgdG9wQW5pbWF0aW9uRW5kOiBnZXRWZW5kb3JQcmVm
aXhlZEV2ZW50TmFtZSgnYW5pbWF0aW9uZW5kJykgfHwgJ2FuaW1hdGlvbmVuZCcsXG5cdCAgdG9w
QW5pbWF0aW9uSXRlcmF0aW9uOiBnZXRWZW5kb3JQcmVmaXhlZEV2ZW50TmFtZSgnYW5pbWF0aW9u
aXRlcmF0aW9uJykgfHwgJ2FuaW1hdGlvbml0ZXJhdGlvbicsXG5cdCAgdG9wQW5pbWF0aW9uU3Rh
cnQ6IGdldFZlbmRvclByZWZpeGVkRXZlbnROYW1lKCdhbmltYXRpb25zdGFydCcpIHx8ICdhbmlt
YXRpb25zdGFydCcsXG5cdCAgdG9wQmx1cjogJ2JsdXInLFxuXHQgIHRvcENhblBsYXk6ICdjYW5w
bGF5Jyxcblx0ICB0b3BDYW5QbGF5VGhyb3VnaDogJ2NhbnBsYXl0aHJvdWdoJyxcblx0ICB0b3BD
aGFuZ2U6ICdjaGFuZ2UnLFxuXHQgIHRvcENsaWNrOiAnY2xpY2snLFxuXHQgIHRvcENvbXBvc2l0
aW9uRW5kOiAnY29tcG9zaXRpb25lbmQnLFxuXHQgIHRvcENvbXBvc2l0aW9uU3RhcnQ6ICdjb21w
b3NpdGlvbnN0YXJ0Jyxcblx0ICB0b3BDb21wb3NpdGlvblVwZGF0ZTogJ2NvbXBvc2l0aW9udXBk
YXRlJyxcblx0ICB0b3BDb250ZXh0TWVudTogJ2NvbnRleHRtZW51Jyxcblx0ICB0b3BDb3B5OiAn
Y29weScsXG5cdCAgdG9wQ3V0OiAnY3V0Jyxcblx0ICB0b3BEb3VibGVDbGljazogJ2RibGNsaWNr
Jyxcblx0ICB0b3BEcmFnOiAnZHJhZycsXG5cdCAgdG9wRHJhZ0VuZDogJ2RyYWdlbmQnLFxuXHQg
IHRvcERyYWdFbnRlcjogJ2RyYWdlbnRlcicsXG5cdCAgdG9wRHJhZ0V4aXQ6ICdkcmFnZXhpdCcs
XG5cdCAgdG9wRHJhZ0xlYXZlOiAnZHJhZ2xlYXZlJyxcblx0ICB0b3BEcmFnT3ZlcjogJ2RyYWdv
dmVyJyxcblx0ICB0b3BEcmFnU3RhcnQ6ICdkcmFnc3RhcnQnLFxuXHQgIHRvcERyb3A6ICdkcm9w
Jyxcblx0ICB0b3BEdXJhdGlvbkNoYW5nZTogJ2R1cmF0aW9uY2hhbmdlJyxcblx0ICB0b3BFbXB0
aWVkOiAnZW1wdGllZCcsXG5cdCAgdG9wRW5jcnlwdGVkOiAnZW5jcnlwdGVkJyxcblx0ICB0b3BF
bmRlZDogJ2VuZGVkJyxcblx0ICB0b3BFcnJvcjogJ2Vycm9yJyxcblx0ICB0b3BGb2N1czogJ2Zv
Y3VzJyxcblx0ICB0b3BJbnB1dDogJ2lucHV0Jyxcblx0ICB0b3BLZXlEb3duOiAna2V5ZG93bics
XG5cdCAgdG9wS2V5UHJlc3M6ICdrZXlwcmVzcycsXG5cdCAgdG9wS2V5VXA6ICdrZXl1cCcsXG5c
dCAgdG9wTG9hZGVkRGF0YTogJ2xvYWRlZGRhdGEnLFxuXHQgIHRvcExvYWRlZE1ldGFkYXRhOiAn
bG9hZGVkbWV0YWRhdGEnLFxuXHQgIHRvcExvYWRTdGFydDogJ2xvYWRzdGFydCcsXG5cdCAgdG9w
TW91c2VEb3duOiAnbW91c2Vkb3duJyxcblx0ICB0b3BNb3VzZU1vdmU6ICdtb3VzZW1vdmUnLFxu
XHQgIHRvcE1vdXNlT3V0OiAnbW91c2VvdXQnLFxuXHQgIHRvcE1vdXNlT3ZlcjogJ21vdXNlb3Zl
cicsXG5cdCAgdG9wTW91c2VVcDogJ21vdXNldXAnLFxuXHQgIHRvcFBhc3RlOiAncGFzdGUnLFxu
XHQgIHRvcFBhdXNlOiAncGF1c2UnLFxuXHQgIHRvcFBsYXk6ICdwbGF5Jyxcblx0ICB0b3BQbGF5
aW5nOiAncGxheWluZycsXG5cdCAgdG9wUHJvZ3Jlc3M6ICdwcm9ncmVzcycsXG5cdCAgdG9wUmF0
ZUNoYW5nZTogJ3JhdGVjaGFuZ2UnLFxuXHQgIHRvcFNjcm9sbDogJ3Njcm9sbCcsXG5cdCAgdG9w
U2Vla2VkOiAnc2Vla2VkJyxcblx0ICB0b3BTZWVraW5nOiAnc2Vla2luZycsXG5cdCAgdG9wU2Vs
ZWN0aW9uQ2hhbmdlOiAnc2VsZWN0aW9uY2hhbmdlJyxcblx0ICB0b3BTdGFsbGVkOiAnc3RhbGxl
ZCcsXG5cdCAgdG9wU3VzcGVuZDogJ3N1c3BlbmQnLFxuXHQgIHRvcFRleHRJbnB1dDogJ3RleHRJ
bnB1dCcsXG5cdCAgdG9wVGltZVVwZGF0ZTogJ3RpbWV1cGRhdGUnLFxuXHQgIHRvcFRvdWNoQ2Fu
Y2VsOiAndG91Y2hjYW5jZWwnLFxuXHQgIHRvcFRvdWNoRW5kOiAndG91Y2hlbmQnLFxuXHQgIHRv
cFRvdWNoTW92ZTogJ3RvdWNobW92ZScsXG5cdCAgdG9wVG91Y2hTdGFydDogJ3RvdWNoc3RhcnQn
LFxuXHQgIHRvcFRyYW5zaXRpb25FbmQ6IGdldFZlbmRvclByZWZpeGVkRXZlbnROYW1lKCd0cmFu
c2l0aW9uZW5kJykgfHwgJ3RyYW5zaXRpb25lbmQnLFxuXHQgIHRvcFZvbHVtZUNoYW5nZTogJ3Zv
bHVtZWNoYW5nZScsXG5cdCAgdG9wV2FpdGluZzogJ3dhaXRpbmcnLFxuXHQgIHRvcFdoZWVsOiAn
d2hlZWwnXG5cdH07XG5cdFxuXHQvKipcblx0ICogVG8gZW5zdXJlIG5vIGNvbmZsaWN0cyB3aXRo
IG90aGVyIHBvdGVudGlhbCBSZWFjdCBpbnN0YW5jZXMgb24gdGhlIHBhZ2Vcblx0ICovXG5cdHZh
ciB0b3BMaXN0ZW5lcnNJREtleSA9ICdfcmVhY3RMaXN0ZW5lcnNJRCcgKyBTdHJpbmcoTWF0aC5y
YW5kb20oKSkuc2xpY2UoMik7XG5cdFxuXHRmdW5jdGlvbiBnZXRMaXN0ZW5pbmdGb3JEb2N1bWVu
dChtb3VudEF0KSB7XG5cdCAgLy8gSW4gSUU4LCBgbW91bnRBdGAgaXMgYSBob3N0IG9iamVjdCBh
bmQgZG9lc24ndCBoYXZlIGBoYXNPd25Qcm9wZXJ0eWBcblx0ICAvLyBkaXJlY3RseS5cblx0ICBp
ZiAoIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChtb3VudEF0LCB0b3BMaXN0
ZW5lcnNJREtleSkpIHtcblx0ICAgIG1vdW50QXRbdG9wTGlzdGVuZXJzSURLZXldID0gcmVhY3RU
b3BMaXN0ZW5lcnNDb3VudGVyKys7XG5cdCAgICBhbHJlYWR5TGlzdGVuaW5nVG9bbW91bnRBdFt0
b3BMaXN0ZW5lcnNJREtleV1dID0ge307XG5cdCAgfVxuXHQgIHJldHVybiBhbHJlYWR5TGlzdGVu
aW5nVG9bbW91bnRBdFt0b3BMaXN0ZW5lcnNJREtleV1dO1xuXHR9XG5cdFxuXHQvKipcblx0ICog
YFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlcmAgaXMgdXNlZCB0byBhdHRhY2ggdG9wLWxldmVsIGV2
ZW50IGxpc3RlbmVycy4gRm9yXG5cdCAqIGV4YW1wbGU6XG5cdCAqXG5cdCAqICAgRXZlbnRQbHVn
aW5IdWIucHV0TGlzdGVuZXIoJ215SUQnLCAnb25DbGljaycsIG15RnVuY3Rpb24pO1xuXHQgKlxu
XHQgKiBUaGlzIHdvdWxkIGFsbG9jYXRlIGEgXCJyZWdpc3RyYXRpb25cIiBvZiBgKCdvbkNsaWNr
JywgbXlGdW5jdGlvbilgIG9uICdteUlEJy5cblx0ICpcblx0ICogQGludGVybmFsXG5cdCAqL1xu
XHR2YXIgUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyID0gX2Fzc2lnbih7fSwgUmVhY3RFdmVudEVt
aXR0ZXJNaXhpbiwge1xuXHQgIC8qKlxuXHQgICAqIEluamVjdGFibGUgZXZlbnQgYmFja2VuZFxu
XHQgICAqL1xuXHQgIFJlYWN0RXZlbnRMaXN0ZW5lcjogbnVsbCxcblx0XG5cdCAgaW5qZWN0aW9u
OiB7XG5cdCAgICAvKipcblx0ICAgICAqIEBwYXJhbSB7b2JqZWN0fSBSZWFjdEV2ZW50TGlzdGVu
ZXJcblx0ICAgICAqL1xuXHQgICAgaW5qZWN0UmVhY3RFdmVudExpc3RlbmVyOiBmdW5jdGlvbiAo
UmVhY3RFdmVudExpc3RlbmVyKSB7XG5cdCAgICAgIFJlYWN0RXZlbnRMaXN0ZW5lci5zZXRIYW5k
bGVUb3BMZXZlbChSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIuaGFuZGxlVG9wTGV2ZWwpO1xuXHQg
ICAgICBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIuUmVhY3RFdmVudExpc3RlbmVyID0gUmVhY3RF
dmVudExpc3RlbmVyO1xuXHQgICAgfVxuXHQgIH0sXG5cdFxuXHQgIC8qKlxuXHQgICAqIFNldHMg
d2hldGhlciBvciBub3QgYW55IGNyZWF0ZWQgY2FsbGJhY2tzIHNob3VsZCBiZSBlbmFibGVkLlxu
XHQgICAqXG5cdCAgICogQHBhcmFtIHtib29sZWFufSBlbmFibGVkIFRydWUgaWYgY2FsbGJhY2tz
IHNob3VsZCBiZSBlbmFibGVkLlxuXHQgICAqL1xuXHQgIHNldEVuYWJsZWQ6IGZ1bmN0aW9uIChl
bmFibGVkKSB7XG5cdCAgICBpZiAoUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLlJlYWN0RXZlbnRM
aXN0ZW5lcikge1xuXHQgICAgICBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIuUmVhY3RFdmVudExp
c3RlbmVyLnNldEVuYWJsZWQoZW5hYmxlZCk7XG5cdCAgICB9XG5cdCAgfSxcblx0XG5cdCAgLyoq
XG5cdCAgICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBpZiBjYWxsYmFja3MgYXJlIGVuYWJsZWQu
XG5cdCAgICovXG5cdCAgaXNFbmFibGVkOiBmdW5jdGlvbiAoKSB7XG5cdCAgICByZXR1cm4gISEo
UmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLlJlYWN0RXZlbnRMaXN0ZW5lciAmJiBSZWFjdEJyb3dz
ZXJFdmVudEVtaXR0ZXIuUmVhY3RFdmVudExpc3RlbmVyLmlzRW5hYmxlZCgpKTtcblx0ICB9LFxu
XHRcblx0ICAvKipcblx0ICAgKiBXZSBsaXN0ZW4gZm9yIGJ1YmJsZWQgdG91Y2ggZXZlbnRzIG9u
IHRoZSBkb2N1bWVudCBvYmplY3QuXG5cdCAgICpcblx0ICAgKiBGaXJlZm94IHY4LjAxIChhbmQg
cG9zc2libHkgb3RoZXJzKSBleGhpYml0ZWQgc3RyYW5nZSBiZWhhdmlvciB3aGVuXG5cdCAgICog
bW91bnRpbmcgYG9ubW91c2Vtb3ZlYCBldmVudHMgYXQgc29tZSBub2RlIHRoYXQgd2FzIG5vdCB0
aGUgZG9jdW1lbnRcblx0ICAgKiBlbGVtZW50LiBUaGUgc3ltcHRvbXMgd2VyZSB0aGF0IGlmIHlv
dXIgbW91c2UgaXMgbm90IG1vdmluZyBvdmVyIHNvbWV0aGluZ1xuXHQgICAqIGNvbnRhaW5lZCB3
aXRoaW4gdGhhdCBtb3VudCBwb2ludCAoZm9yIGV4YW1wbGUgb24gdGhlIGJhY2tncm91bmQpIHRo
ZVxuXHQgICAqIHRvcC1sZXZlbCBsaXN0ZW5lcnMgZm9yIGBvbm1vdXNlbW92ZWAgd29uJ3QgYmUg
Y2FsbGVkLiBIb3dldmVyLCBpZiB5b3Vcblx0ICAgKiByZWdpc3RlciB0aGUgYG1vdXNlbW92ZWAg
b24gdGhlIGRvY3VtZW50IG9iamVjdCwgdGhlbiBpdCB3aWxsIG9mIGNvdXJzZVxuXHQgICAqIGNh
dGNoIGFsbCBgbW91c2Vtb3ZlYHMuIFRoaXMgYWxvbmcgd2l0aCBpT1MgcXVpcmtzLCBqdXN0aWZp
ZXMgcmVzdHJpY3Rpbmdcblx0ICAgKiB0b3AtbGV2ZWwgbGlzdGVuZXJzIHRvIHRoZSBkb2N1bWVu
dCBvYmplY3Qgb25seSwgYXQgbGVhc3QgZm9yIHRoZXNlXG5cdCAgICogbW92ZW1lbnQgdHlwZXMg
b2YgZXZlbnRzIGFuZCBwb3NzaWJseSBhbGwgZXZlbnRzLlxuXHQgICAqXG5cdCAgICogQHNlZSBo
dHRwOi8vd3d3LnF1aXJrc21vZGUub3JnL2Jsb2cvYXJjaGl2ZXMvMjAxMC8wOS9jbGlja19ldmVu
dF9kZWwuaHRtbFxuXHQgICAqXG5cdCAgICogQWxzbywgYGtleXVwYC9ga2V5cHJlc3NgL2BrZXlk
b3duYCBkbyBub3QgYnViYmxlIHRvIHRoZSB3aW5kb3cgb24gSUUsIGJ1dFxuXHQgICAqIHRoZXkg
YnViYmxlIHRvIGRvY3VtZW50LlxuXHQgICAqXG5cdCAgICogQHBhcmFtIHtzdHJpbmd9IHJlZ2lz
dHJhdGlvbk5hbWUgTmFtZSBvZiBsaXN0ZW5lciAoZS5nLiBgb25DbGlja2ApLlxuXHQgICAqIEBw
YXJhbSB7b2JqZWN0fSBjb250ZW50RG9jdW1lbnRIYW5kbGUgRG9jdW1lbnQgd2hpY2ggb3ducyB0
aGUgY29udGFpbmVyXG5cdCAgICovXG5cdCAgbGlzdGVuVG86IGZ1bmN0aW9uIChyZWdpc3RyYXRp
b25OYW1lLCBjb250ZW50RG9jdW1lbnRIYW5kbGUpIHtcblx0ICAgIHZhciBtb3VudEF0ID0gY29u
dGVudERvY3VtZW50SGFuZGxlO1xuXHQgICAgdmFyIGlzTGlzdGVuaW5nID0gZ2V0TGlzdGVuaW5n
Rm9yRG9jdW1lbnQobW91bnRBdCk7XG5cdCAgICB2YXIgZGVwZW5kZW5jaWVzID0gRXZlbnRQbHVn
aW5SZWdpc3RyeS5yZWdpc3RyYXRpb25OYW1lRGVwZW5kZW5jaWVzW3JlZ2lzdHJhdGlvbk5hbWVd
O1xuXHRcblx0ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZGVwZW5kZW5jaWVzLmxlbmd0aDsgaSsr
KSB7XG5cdCAgICAgIHZhciBkZXBlbmRlbmN5ID0gZGVwZW5kZW5jaWVzW2ldO1xuXHQgICAgICBp
ZiAoIShpc0xpc3RlbmluZy5oYXNPd25Qcm9wZXJ0eShkZXBlbmRlbmN5KSAmJiBpc0xpc3Rlbmlu
Z1tkZXBlbmRlbmN5XSkpIHtcblx0ICAgICAgICBpZiAoZGVwZW5kZW5jeSA9PT0gJ3RvcFdoZWVs
Jykge1xuXHQgICAgICAgICAgaWYgKGlzRXZlbnRTdXBwb3J0ZWQoJ3doZWVsJykpIHtcblx0ICAg
ICAgICAgICAgUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLlJlYWN0RXZlbnRMaXN0ZW5lci50cmFw
QnViYmxlZEV2ZW50KCd0b3BXaGVlbCcsICd3aGVlbCcsIG1vdW50QXQpO1xuXHQgICAgICAgICAg
fSBlbHNlIGlmIChpc0V2ZW50U3VwcG9ydGVkKCdtb3VzZXdoZWVsJykpIHtcblx0ICAgICAgICAg
ICAgUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLlJlYWN0RXZlbnRMaXN0ZW5lci50cmFwQnViYmxl
ZEV2ZW50KCd0b3BXaGVlbCcsICdtb3VzZXdoZWVsJywgbW91bnRBdCk7XG5cdCAgICAgICAgICB9
IGVsc2Uge1xuXHQgICAgICAgICAgICAvLyBGaXJlZm94IG5lZWRzIHRvIGNhcHR1cmUgYSBkaWZm
ZXJlbnQgbW91c2Ugc2Nyb2xsIGV2ZW50LlxuXHQgICAgICAgICAgICAvLyBAc2VlIGh0dHA6Ly93
d3cucXVpcmtzbW9kZS5vcmcvZG9tL2V2ZW50cy90ZXN0cy9zY3JvbGwuaHRtbFxuXHQgICAgICAg
ICAgICBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIuUmVhY3RFdmVudExpc3RlbmVyLnRyYXBCdWJi
bGVkRXZlbnQoJ3RvcFdoZWVsJywgJ0RPTU1vdXNlU2Nyb2xsJywgbW91bnRBdCk7XG5cdCAgICAg
ICAgICB9XG5cdCAgICAgICAgfSBlbHNlIGlmIChkZXBlbmRlbmN5ID09PSAndG9wU2Nyb2xsJykg
e1xuXHQgICAgICAgICAgaWYgKGlzRXZlbnRTdXBwb3J0ZWQoJ3Njcm9sbCcsIHRydWUpKSB7XG5c
dCAgICAgICAgICAgIFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlci5SZWFjdEV2ZW50TGlzdGVuZXIu
dHJhcENhcHR1cmVkRXZlbnQoJ3RvcFNjcm9sbCcsICdzY3JvbGwnLCBtb3VudEF0KTtcblx0ICAg
ICAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgICAgIFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlci5S
ZWFjdEV2ZW50TGlzdGVuZXIudHJhcEJ1YmJsZWRFdmVudCgndG9wU2Nyb2xsJywgJ3Njcm9sbCcs
IFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlci5SZWFjdEV2ZW50TGlzdGVuZXIuV0lORE9XX0hBTkRM
RSk7XG5cdCAgICAgICAgICB9XG5cdCAgICAgICAgfSBlbHNlIGlmIChkZXBlbmRlbmN5ID09PSAn
dG9wRm9jdXMnIHx8IGRlcGVuZGVuY3kgPT09ICd0b3BCbHVyJykge1xuXHQgICAgICAgICAgaWYg
KGlzRXZlbnRTdXBwb3J0ZWQoJ2ZvY3VzJywgdHJ1ZSkpIHtcblx0ICAgICAgICAgICAgUmVhY3RC
cm93c2VyRXZlbnRFbWl0dGVyLlJlYWN0RXZlbnRMaXN0ZW5lci50cmFwQ2FwdHVyZWRFdmVudCgn
dG9wRm9jdXMnLCAnZm9jdXMnLCBtb3VudEF0KTtcblx0ICAgICAgICAgICAgUmVhY3RCcm93c2Vy
RXZlbnRFbWl0dGVyLlJlYWN0RXZlbnRMaXN0ZW5lci50cmFwQ2FwdHVyZWRFdmVudCgndG9wQmx1
cicsICdibHVyJywgbW91bnRBdCk7XG5cdCAgICAgICAgICB9IGVsc2UgaWYgKGlzRXZlbnRTdXBw
b3J0ZWQoJ2ZvY3VzaW4nKSkge1xuXHQgICAgICAgICAgICAvLyBJRSBoYXMgYGZvY3VzaW5gIGFu
ZCBgZm9jdXNvdXRgIGV2ZW50cyB3aGljaCBidWJibGUuXG5cdCAgICAgICAgICAgIC8vIEBzZWUg
aHR0cDovL3d3dy5xdWlya3Ntb2RlLm9yZy9ibG9nL2FyY2hpdmVzLzIwMDgvMDQvZGVsZWdhdGlu
Z190aGUuaHRtbFxuXHQgICAgICAgICAgICBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIuUmVhY3RF
dmVudExpc3RlbmVyLnRyYXBCdWJibGVkRXZlbnQoJ3RvcEZvY3VzJywgJ2ZvY3VzaW4nLCBtb3Vu
dEF0KTtcblx0ICAgICAgICAgICAgUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLlJlYWN0RXZlbnRM
aXN0ZW5lci50cmFwQnViYmxlZEV2ZW50KCd0b3BCbHVyJywgJ2ZvY3Vzb3V0JywgbW91bnRBdCk7
XG5cdCAgICAgICAgICB9XG5cdFxuXHQgICAgICAgICAgLy8gdG8gbWFrZSBzdXJlIGJsdXIgYW5k
IGZvY3VzIGV2ZW50IGxpc3RlbmVycyBhcmUgb25seSBhdHRhY2hlZCBvbmNlXG5cdCAgICAgICAg
ICBpc0xpc3RlbmluZy50b3BCbHVyID0gdHJ1ZTtcblx0ICAgICAgICAgIGlzTGlzdGVuaW5nLnRv
cEZvY3VzID0gdHJ1ZTtcblx0ICAgICAgICB9IGVsc2UgaWYgKHRvcEV2ZW50TWFwcGluZy5oYXNP
d25Qcm9wZXJ0eShkZXBlbmRlbmN5KSkge1xuXHQgICAgICAgICAgUmVhY3RCcm93c2VyRXZlbnRF
bWl0dGVyLlJlYWN0RXZlbnRMaXN0ZW5lci50cmFwQnViYmxlZEV2ZW50KGRlcGVuZGVuY3ksIHRv
cEV2ZW50TWFwcGluZ1tkZXBlbmRlbmN5XSwgbW91bnRBdCk7XG5cdCAgICAgICAgfVxuXHRcblx0
ICAgICAgICBpc0xpc3RlbmluZ1tkZXBlbmRlbmN5XSA9IHRydWU7XG5cdCAgICAgIH1cblx0ICAg
IH1cblx0ICB9LFxuXHRcblx0ICB0cmFwQnViYmxlZEV2ZW50OiBmdW5jdGlvbiAodG9wTGV2ZWxU
eXBlLCBoYW5kbGVyQmFzZU5hbWUsIGhhbmRsZSkge1xuXHQgICAgcmV0dXJuIFJlYWN0QnJvd3Nl
ckV2ZW50RW1pdHRlci5SZWFjdEV2ZW50TGlzdGVuZXIudHJhcEJ1YmJsZWRFdmVudCh0b3BMZXZl
bFR5cGUsIGhhbmRsZXJCYXNlTmFtZSwgaGFuZGxlKTtcblx0ICB9LFxuXHRcblx0ICB0cmFwQ2Fw
dHVyZWRFdmVudDogZnVuY3Rpb24gKHRvcExldmVsVHlwZSwgaGFuZGxlckJhc2VOYW1lLCBoYW5k
bGUpIHtcblx0ICAgIHJldHVybiBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIuUmVhY3RFdmVudExp
c3RlbmVyLnRyYXBDYXB0dXJlZEV2ZW50KHRvcExldmVsVHlwZSwgaGFuZGxlckJhc2VOYW1lLCBo
YW5kbGUpO1xuXHQgIH0sXG5cdFxuXHQgIC8qKlxuXHQgICAqIFByb3RlY3QgYWdhaW5zdCBkb2N1
bWVudC5jcmVhdGVFdmVudCgpIHJldHVybmluZyBudWxsXG5cdCAgICogU29tZSBwb3B1cCBibG9j
a2VyIGV4dGVuc2lvbnMgYXBwZWFyIHRvIGRvIHRoaXM6XG5cdCAgICogaHR0cHM6Ly9naXRodWIu
Y29tL2ZhY2Vib29rL3JlYWN0L2lzc3Vlcy82ODg3XG5cdCAgICovXG5cdCAgc3VwcG9ydHNFdmVu
dFBhZ2VYWTogZnVuY3Rpb24gKCkge1xuXHQgICAgaWYgKCFkb2N1bWVudC5jcmVhdGVFdmVudCkg
e1xuXHQgICAgICByZXR1cm4gZmFsc2U7XG5cdCAgICB9XG5cdCAgICB2YXIgZXYgPSBkb2N1bWVu
dC5jcmVhdGVFdmVudCgnTW91c2VFdmVudCcpO1xuXHQgICAgcmV0dXJuIGV2ICE9IG51bGwgJiYg
J3BhZ2VYJyBpbiBldjtcblx0ICB9LFxuXHRcblx0ICAvKipcblx0ICAgKiBMaXN0ZW5zIHRvIHdp
bmRvdyBzY3JvbGwgYW5kIHJlc2l6ZSBldmVudHMuIFdlIGNhY2hlIHNjcm9sbCB2YWx1ZXMgc28g
dGhhdFxuXHQgICAqIGFwcGxpY2F0aW9uIGNvZGUgY2FuIGFjY2VzcyB0aGVtIHdpdGhvdXQgdHJp
Z2dlcmluZyByZWZsb3dzLlxuXHQgICAqXG5cdCAgICogVmlld3BvcnRNZXRyaWNzIGlzIG9ubHkg
dXNlZCBieSBTeW50aGV0aWNNb3VzZS9Ub3VjaEV2ZW50IGFuZCBvbmx5IHdoZW5cblx0ICAgKiBw
YWdlWC9wYWdlWSBpc24ndCBzdXBwb3J0ZWQgKGxlZ2FjeSBicm93c2VycykuXG5cdCAgICpcblx0
ICAgKiBOT1RFOiBTY3JvbGwgZXZlbnRzIGRvIG5vdCBidWJibGUuXG5cdCAgICpcblx0ICAgKiBA
c2VlIGh0dHA6Ly93d3cucXVpcmtzbW9kZS5vcmcvZG9tL2V2ZW50cy9zY3JvbGwuaHRtbFxuXHQg
ICAqL1xuXHQgIGVuc3VyZVNjcm9sbFZhbHVlTW9uaXRvcmluZzogZnVuY3Rpb24gKCkge1xuXHQg
ICAgaWYgKGhhc0V2ZW50UGFnZVhZID09PSB1bmRlZmluZWQpIHtcblx0ICAgICAgaGFzRXZlbnRQ
YWdlWFkgPSBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIuc3VwcG9ydHNFdmVudFBhZ2VYWSgpO1xu
XHQgICAgfVxuXHQgICAgaWYgKCFoYXNFdmVudFBhZ2VYWSAmJiAhaXNNb25pdG9yaW5nU2Nyb2xs
VmFsdWUpIHtcblx0ICAgICAgdmFyIHJlZnJlc2ggPSBWaWV3cG9ydE1ldHJpY3MucmVmcmVzaFNj
cm9sbFZhbHVlcztcblx0ICAgICAgUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLlJlYWN0RXZlbnRM
aXN0ZW5lci5tb25pdG9yU2Nyb2xsVmFsdWUocmVmcmVzaCk7XG5cdCAgICAgIGlzTW9uaXRvcmlu
Z1Njcm9sbFZhbHVlID0gdHJ1ZTtcblx0ICAgIH1cblx0ICB9XG5cdH0pO1xuXHRcblx0bW9kdWxl
LmV4cG9ydHMgPSBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXI7XG5cbi8qKiovIH0sXG4vKiAyNiAq
L1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7
XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5c
dCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMg
bGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBM
SUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFu
IGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4g
dGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqL1xuXHRc
blx0J3VzZSBzdHJpY3QnO1xuXHRcblx0dmFyIFN5bnRoZXRpY1VJRXZlbnQgPSBfX3dlYnBhY2tf
cmVxdWlyZV9fKDIyKTtcblx0dmFyIFZpZXdwb3J0TWV0cmljcyA9IF9fd2VicGFja19yZXF1aXJl
X18oNjkpO1xuXHRcblx0dmFyIGdldEV2ZW50TW9kaWZpZXJTdGF0ZSA9IF9fd2VicGFja19yZXF1
aXJlX18oNDUpO1xuXHRcblx0LyoqXG5cdCAqIEBpbnRlcmZhY2UgTW91c2VFdmVudFxuXHQgKiBA
c2VlIGh0dHA6Ly93d3cudzMub3JnL1RSL0RPTS1MZXZlbC0zLUV2ZW50cy9cblx0ICovXG5cdHZh
ciBNb3VzZUV2ZW50SW50ZXJmYWNlID0ge1xuXHQgIHNjcmVlblg6IG51bGwsXG5cdCAgc2NyZWVu
WTogbnVsbCxcblx0ICBjbGllbnRYOiBudWxsLFxuXHQgIGNsaWVudFk6IG51bGwsXG5cdCAgY3Ry
bEtleTogbnVsbCxcblx0ICBzaGlmdEtleTogbnVsbCxcblx0ICBhbHRLZXk6IG51bGwsXG5cdCAg
bWV0YUtleTogbnVsbCxcblx0ICBnZXRNb2RpZmllclN0YXRlOiBnZXRFdmVudE1vZGlmaWVyU3Rh
dGUsXG5cdCAgYnV0dG9uOiBmdW5jdGlvbiAoZXZlbnQpIHtcblx0ICAgIC8vIFdlYmtpdCwgRmly
ZWZveCwgSUU5K1xuXHQgICAgLy8gd2hpY2g6ICAxIDIgM1xuXHQgICAgLy8gYnV0dG9uOiAwIDEg
MiAoc3RhbmRhcmQpXG5cdCAgICB2YXIgYnV0dG9uID0gZXZlbnQuYnV0dG9uO1xuXHQgICAgaWYg
KCd3aGljaCcgaW4gZXZlbnQpIHtcblx0ICAgICAgcmV0dXJuIGJ1dHRvbjtcblx0ICAgIH1cblx0
ICAgIC8vIElFPDlcblx0ICAgIC8vIHdoaWNoOiAgdW5kZWZpbmVkXG5cdCAgICAvLyBidXR0b246
IDAgMCAwXG5cdCAgICAvLyBidXR0b246IDEgNCAyIChvbm1vdXNldXApXG5cdCAgICByZXR1cm4g
YnV0dG9uID09PSAyID8gMiA6IGJ1dHRvbiA9PT0gNCA/IDEgOiAwO1xuXHQgIH0sXG5cdCAgYnV0
dG9uczogbnVsbCxcblx0ICByZWxhdGVkVGFyZ2V0OiBmdW5jdGlvbiAoZXZlbnQpIHtcblx0ICAg
IHJldHVybiBldmVudC5yZWxhdGVkVGFyZ2V0IHx8IChldmVudC5mcm9tRWxlbWVudCA9PT0gZXZl
bnQuc3JjRWxlbWVudCA/IGV2ZW50LnRvRWxlbWVudCA6IGV2ZW50LmZyb21FbGVtZW50KTtcblx0
ICB9LFxuXHQgIC8vIFwiUHJvcHJpZXRhcnlcIiBJbnRlcmZhY2UuXG5cdCAgcGFnZVg6IGZ1bmN0
aW9uIChldmVudCkge1xuXHQgICAgcmV0dXJuICdwYWdlWCcgaW4gZXZlbnQgPyBldmVudC5wYWdl
WCA6IGV2ZW50LmNsaWVudFggKyBWaWV3cG9ydE1ldHJpY3MuY3VycmVudFNjcm9sbExlZnQ7XG5c
dCAgfSxcblx0ICBwYWdlWTogZnVuY3Rpb24gKGV2ZW50KSB7XG5cdCAgICByZXR1cm4gJ3BhZ2VZ
JyBpbiBldmVudCA/IGV2ZW50LnBhZ2VZIDogZXZlbnQuY2xpZW50WSArIFZpZXdwb3J0TWV0cmlj
cy5jdXJyZW50U2Nyb2xsVG9wO1xuXHQgIH1cblx0fTtcblx0XG5cdC8qKlxuXHQgKiBAcGFyYW0g
e29iamVjdH0gZGlzcGF0Y2hDb25maWcgQ29uZmlndXJhdGlvbiB1c2VkIHRvIGRpc3BhdGNoIHRo
aXMgZXZlbnQuXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBkaXNwYXRjaE1hcmtlciBNYXJrZXIgaWRl
bnRpZnlpbmcgdGhlIGV2ZW50IHRhcmdldC5cblx0ICogQHBhcmFtIHtvYmplY3R9IG5hdGl2ZUV2
ZW50IE5hdGl2ZSBicm93c2VyIGV2ZW50LlxuXHQgKiBAZXh0ZW5kcyB7U3ludGhldGljVUlFdmVu
dH1cblx0ICovXG5cdGZ1bmN0aW9uIFN5bnRoZXRpY01vdXNlRXZlbnQoZGlzcGF0Y2hDb25maWcs
IGRpc3BhdGNoTWFya2VyLCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpIHtcblx0ICBy
ZXR1cm4gU3ludGhldGljVUlFdmVudC5jYWxsKHRoaXMsIGRpc3BhdGNoQ29uZmlnLCBkaXNwYXRj
aE1hcmtlciwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KTtcblx0fVxuXHRcblx0U3lu
dGhldGljVUlFdmVudC5hdWdtZW50Q2xhc3MoU3ludGhldGljTW91c2VFdmVudCwgTW91c2VFdmVu
dEludGVyZmFjZSk7XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IFN5bnRoZXRpY01vdXNlRXZlbnQ7
XG5cbi8qKiovIH0sXG4vKiAyNyAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBf
X3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAyMDEzLXByZXNl
bnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAq
IFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNl
IGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9m
IHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJp
Z2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3Rv
cnkuXG5cdCAqXG5cdCAqIFxuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdHZhciBf
cHJvZEludmFyaWFudCA9IF9fd2VicGFja19yZXF1aXJlX18oMyk7XG5cdFxuXHR2YXIgaW52YXJp
YW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxKTtcblx0XG5cdHZhciBPQlNFUlZFRF9FUlJPUiA9
IHt9O1xuXHRcblx0LyoqXG5cdCAqIGBUcmFuc2FjdGlvbmAgY3JlYXRlcyBhIGJsYWNrIGJveCB0
aGF0IGlzIGFibGUgdG8gd3JhcCBhbnkgbWV0aG9kIHN1Y2ggdGhhdFxuXHQgKiBjZXJ0YWluIGlu
dmFyaWFudHMgYXJlIG1haW50YWluZWQgYmVmb3JlIGFuZCBhZnRlciB0aGUgbWV0aG9kIGlzIGlu
dm9rZWRcblx0ICogKEV2ZW4gaWYgYW4gZXhjZXB0aW9uIGlzIHRocm93biB3aGlsZSBpbnZva2lu
ZyB0aGUgd3JhcHBlZCBtZXRob2QpLiBXaG9ldmVyXG5cdCAqIGluc3RhbnRpYXRlcyBhIHRyYW5z
YWN0aW9uIGNhbiBwcm92aWRlIGVuZm9yY2VycyBvZiB0aGUgaW52YXJpYW50cyBhdFxuXHQgKiBj
cmVhdGlvbiB0aW1lLiBUaGUgYFRyYW5zYWN0aW9uYCBjbGFzcyBpdHNlbGYgd2lsbCBzdXBwbHkg
b25lIGFkZGl0aW9uYWxcblx0ICogYXV0b21hdGljIGludmFyaWFudCBmb3IgeW91IC0gdGhlIGlu
dmFyaWFudCB0aGF0IGFueSB0cmFuc2FjdGlvbiBpbnN0YW5jZVxuXHQgKiBzaG91bGQgbm90IGJl
IHJ1biB3aGlsZSBpdCBpcyBhbHJlYWR5IGJlaW5nIHJ1bi4gWW91IHdvdWxkIHR5cGljYWxseSBj
cmVhdGUgYVxuXHQgKiBzaW5nbGUgaW5zdGFuY2Ugb2YgYSBgVHJhbnNhY3Rpb25gIGZvciByZXVz
ZSBtdWx0aXBsZSB0aW1lcywgdGhhdCBwb3RlbnRpYWxseVxuXHQgKiBpcyB1c2VkIHRvIHdyYXAg
c2V2ZXJhbCBkaWZmZXJlbnQgbWV0aG9kcy4gV3JhcHBlcnMgYXJlIGV4dHJlbWVseSBzaW1wbGUg
LVxuXHQgKiB0aGV5IG9ubHkgcmVxdWlyZSBpbXBsZW1lbnRpbmcgdHdvIG1ldGhvZHMuXG5cdCAq
XG5cdCAqIDxwcmU+XG5cdCAqICAgICAgICAgICAgICAgICAgICAgICB3cmFwcGVycyAoaW5qZWN0
ZWQgYXQgY3JlYXRpb24gdGltZSlcblx0ICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICsgICAgICAgICtcblx0ICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHwgICAgICAgIHxcblx0ICogICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0t
LXwtLS0tLS0tLXwtLS0tLS0tLS0tLS0tLStcblx0ICogICAgICAgICAgICAgICAgICAgIHwgICAg
ICAgICAgICAgICAgIHYgICAgICAgIHwgICAgICAgICAgICAgIHxcblx0ICogICAgICAgICAgICAg
ICAgICAgIHwgICAgICArLS0tLS0tLS0tLS0tLS0tKyAgIHwgICAgICAgICAgICAgIHxcblx0ICog
ICAgICAgICAgICAgICAgICAgIHwgICArLS18ICAgIHdyYXBwZXIxICAgfC0tLXwtLS0tKyAgICAg
ICAgIHxcblx0ICogICAgICAgICAgICAgICAgICAgIHwgICB8ICArLS0tLS0tLS0tLS0tLS0tKyAg
IHYgICAgfCAgICAgICAgIHxcblx0ICogICAgICAgICAgICAgICAgICAgIHwgICB8ICAgICAgICAg
ICstLS0tLS0tLS0tLS0tKyAgfCAgICAgICAgIHxcblx0ICogICAgICAgICAgICAgICAgICAgIHwg
ICB8ICAgICArLS0tLXwgICB3cmFwcGVyMiAgfC0tLS0tLS0tKyAgIHxcblx0ICogICAgICAgICAg
ICAgICAgICAgIHwgICB8ICAgICB8ICAgICstLS0tLS0tLS0tLS0tKyAgfCAgICAgfCAgIHxcblx0
ICogICAgICAgICAgICAgICAgICAgIHwgICB8ICAgICB8ICAgICAgICAgICAgICAgICAgICAgfCAg
ICAgfCAgIHxcblx0ICogICAgICAgICAgICAgICAgICAgIHwgICB2ICAgICB2ICAgICAgICAgICAg
ICAgICAgICAgdiAgICAgdiAgIHwgd3JhcHBlclxuXHQgKiAgICAgICAgICAgICAgICAgICAgfCAr
LS0tKyArLS0tKyAgICstLS0tLS0tLS0rICAgKy0tLSsgKy0tLSsgfCBpbnZhcmlhbnRzXG5cdCAq
IHBlcmZvcm0oYW55TWV0aG9kKSB8IHwgICB8IHwgICB8ICAgfCAgICAgICAgIHwgICB8ICAgfCB8
ICAgfCB8IG1haW50YWluZWRcblx0ICogKy0tLS0tLS0tLS0tLS0tLS0tPnwtfC0tLXwtfC0tLXwt
LT58YW55TWV0aG9kfC0tLXwtLS18LXwtLS18LXwtLS0tLS0tLT5cblx0ICogICAgICAgICAgICAg
ICAgICAgIHwgfCAgIHwgfCAgIHwgICB8ICAgICAgICAgfCAgIHwgICB8IHwgICB8IHxcblx0ICog
ICAgICAgICAgICAgICAgICAgIHwgfCAgIHwgfCAgIHwgICB8ICAgICAgICAgfCAgIHwgICB8IHwg
ICB8IHxcblx0ICogICAgICAgICAgICAgICAgICAgIHwgfCAgIHwgfCAgIHwgICB8ICAgICAgICAg
fCAgIHwgICB8IHwgICB8IHxcblx0ICogICAgICAgICAgICAgICAgICAgIHwgKy0tLSsgKy0tLSsg
ICArLS0tLS0tLS0tKyAgICstLS0rICstLS0rIHxcblx0ICogICAgICAgICAgICAgICAgICAgIHwg
IGluaXRpYWxpemUgICAgICAgICAgICAgICAgICAgIGNsb3NlICAgIHxcblx0ICogICAgICAgICAg
ICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcblx0
ICogPC9wcmU+XG5cdCAqXG5cdCAqIFVzZSBjYXNlczpcblx0ICogLSBQcmVzZXJ2aW5nIHRoZSBp
bnB1dCBzZWxlY3Rpb24gcmFuZ2VzIGJlZm9yZS9hZnRlciByZWNvbmNpbGlhdGlvbi5cblx0ICog
ICBSZXN0b3Jpbmcgc2VsZWN0aW9uIGV2ZW4gaW4gdGhlIGV2ZW50IG9mIGFuIHVuZXhwZWN0ZWQg
ZXJyb3IuXG5cdCAqIC0gRGVhY3RpdmF0aW5nIGV2ZW50cyB3aGlsZSByZWFycmFuZ2luZyB0aGUg
RE9NLCBwcmV2ZW50aW5nIGJsdXJzL2ZvY3VzZXMsXG5cdCAqICAgd2hpbGUgZ3VhcmFudGVlaW5n
IHRoYXQgYWZ0ZXJ3YXJkcywgdGhlIGV2ZW50IHN5c3RlbSBpcyByZWFjdGl2YXRlZC5cblx0ICog
LSBGbHVzaGluZyBhIHF1ZXVlIG9mIGNvbGxlY3RlZCBET00gbXV0YXRpb25zIHRvIHRoZSBtYWlu
IFVJIHRocmVhZCBhZnRlciBhXG5cdCAqICAgcmVjb25jaWxpYXRpb24gdGFrZXMgcGxhY2UgaW4g
YSB3b3JrZXIgdGhyZWFkLlxuXHQgKiAtIEludm9raW5nIGFueSBjb2xsZWN0ZWQgYGNvbXBvbmVu
dERpZFVwZGF0ZWAgY2FsbGJhY2tzIGFmdGVyIHJlbmRlcmluZyBuZXdcblx0ICogICBjb250ZW50
LlxuXHQgKiAtIChGdXR1cmUgdXNlIGNhc2UpOiBXcmFwcGluZyBwYXJ0aWN1bGFyIGZsdXNoZXMg
b2YgdGhlIGBSZWFjdFdvcmtlcmAgcXVldWVcblx0ICogICB0byBwcmVzZXJ2ZSB0aGUgYHNjcm9s
bFRvcGAgKGFuIGF1dG9tYXRpYyBzY3JvbGwgYXdhcmUgRE9NKS5cblx0ICogLSAoRnV0dXJlIHVz
ZSBjYXNlKTogTGF5b3V0IGNhbGN1bGF0aW9ucyBiZWZvcmUgYW5kIGFmdGVyIERPTSB1cGRhdGVz
LlxuXHQgKlxuXHQgKiBUcmFuc2FjdGlvbmFsIHBsdWdpbiBBUEk6XG5cdCAqIC0gQSBtb2R1bGUg
dGhhdCBoYXMgYW4gYGluaXRpYWxpemVgIG1ldGhvZCB0aGF0IHJldHVybnMgYW55IHByZWNvbXB1
dGF0aW9uLlxuXHQgKiAtIGFuZCBhIGBjbG9zZWAgbWV0aG9kIHRoYXQgYWNjZXB0cyB0aGUgcHJl
Y29tcHV0YXRpb24uIGBjbG9zZWAgaXMgaW52b2tlZFxuXHQgKiAgIHdoZW4gdGhlIHdyYXBwZWQg
cHJvY2VzcyBpcyBjb21wbGV0ZWQsIG9yIGhhcyBmYWlsZWQuXG5cdCAqXG5cdCAqIEBwYXJhbSB7
QXJyYXk8VHJhbnNhY3Rpb25hbFdyYXBwZXI+fSB0cmFuc2FjdGlvbldyYXBwZXIgV3JhcHBlciBt
b2R1bGVzXG5cdCAqIHRoYXQgaW1wbGVtZW50IGBpbml0aWFsaXplYCBhbmQgYGNsb3NlYC5cblx0
ICogQHJldHVybiB7VHJhbnNhY3Rpb259IFNpbmdsZSB0cmFuc2FjdGlvbiBmb3IgcmV1c2UgaW4g
dGhyZWFkLlxuXHQgKlxuXHQgKiBAY2xhc3MgVHJhbnNhY3Rpb25cblx0ICovXG5cdHZhciBUcmFu
c2FjdGlvbkltcGwgPSB7XG5cdCAgLyoqXG5cdCAgICogU2V0cyB1cCB0aGlzIGluc3RhbmNlIHNv
IHRoYXQgaXQgaXMgcHJlcGFyZWQgZm9yIGNvbGxlY3RpbmcgbWV0cmljcy4gRG9lc1xuXHQgICAq
IHNvIHN1Y2ggdGhhdCB0aGlzIHNldHVwIG1ldGhvZCBtYXkgYmUgdXNlZCBvbiBhbiBpbnN0YW5j
ZSB0aGF0IGlzIGFscmVhZHlcblx0ICAgKiBpbml0aWFsaXplZCwgaW4gYSB3YXkgdGhhdCBkb2Vz
IG5vdCBjb25zdW1lIGFkZGl0aW9uYWwgbWVtb3J5IHVwb24gcmV1c2UuXG5cdCAgICogVGhhdCBj
YW4gYmUgdXNlZnVsIGlmIHlvdSBkZWNpZGUgdG8gbWFrZSB5b3VyIHN1YmNsYXNzIG9mIHRoaXMg
bWl4aW4gYVxuXHQgICAqIFwiUG9vbGVkQ2xhc3NcIi5cblx0ICAgKi9cblx0ICByZWluaXRpYWxp
emVUcmFuc2FjdGlvbjogZnVuY3Rpb24gKCkge1xuXHQgICAgdGhpcy50cmFuc2FjdGlvbldyYXBw
ZXJzID0gdGhpcy5nZXRUcmFuc2FjdGlvbldyYXBwZXJzKCk7XG5cdCAgICBpZiAodGhpcy53cmFw
cGVySW5pdERhdGEpIHtcblx0ICAgICAgdGhpcy53cmFwcGVySW5pdERhdGEubGVuZ3RoID0gMDtc
blx0ICAgIH0gZWxzZSB7XG5cdCAgICAgIHRoaXMud3JhcHBlckluaXREYXRhID0gW107XG5cdCAg
ICB9XG5cdCAgICB0aGlzLl9pc0luVHJhbnNhY3Rpb24gPSBmYWxzZTtcblx0ICB9LFxuXHRcblx0
ICBfaXNJblRyYW5zYWN0aW9uOiBmYWxzZSxcblx0XG5cdCAgLyoqXG5cdCAgICogQGFic3RyYWN0
XG5cdCAgICogQHJldHVybiB7QXJyYXk8VHJhbnNhY3Rpb25XcmFwcGVyPn0gQXJyYXkgb2YgdHJh
bnNhY3Rpb24gd3JhcHBlcnMuXG5cdCAgICovXG5cdCAgZ2V0VHJhbnNhY3Rpb25XcmFwcGVyczog
bnVsbCxcblx0XG5cdCAgaXNJblRyYW5zYWN0aW9uOiBmdW5jdGlvbiAoKSB7XG5cdCAgICByZXR1
cm4gISF0aGlzLl9pc0luVHJhbnNhY3Rpb247XG5cdCAgfSxcblx0XG5cdCAgLyogZXNsaW50LWRp
c2FibGUgc3BhY2UtYmVmb3JlLWZ1bmN0aW9uLXBhcmVuICovXG5cdFxuXHQgIC8qKlxuXHQgICAq
IEV4ZWN1dGVzIHRoZSBmdW5jdGlvbiB3aXRoaW4gYSBzYWZldHkgd2luZG93LiBVc2UgdGhpcyBm
b3IgdGhlIHRvcCBsZXZlbFxuXHQgICAqIG1ldGhvZHMgdGhhdCByZXN1bHQgaW4gbGFyZ2UgYW1v
dW50cyBvZiBjb21wdXRhdGlvbi9tdXRhdGlvbnMgdGhhdCB3b3VsZFxuXHQgICAqIG5lZWQgdG8g
YmUgc2FmZXR5IGNoZWNrZWQuIFRoZSBvcHRpb25hbCBhcmd1bWVudHMgaGVscHMgcHJldmVudCB0
aGUgbmVlZFxuXHQgICAqIHRvIGJpbmQgaW4gbWFueSBjYXNlcy5cblx0ICAgKlxuXHQgICAqIEBw
YXJhbSB7ZnVuY3Rpb259IG1ldGhvZCBNZW1iZXIgb2Ygc2NvcGUgdG8gY2FsbC5cblx0ICAgKiBA
cGFyYW0ge09iamVjdH0gc2NvcGUgU2NvcGUgdG8gaW52b2tlIGZyb20uXG5cdCAgICogQHBhcmFt
IHtPYmplY3Q/PX0gYSBBcmd1bWVudCB0byBwYXNzIHRvIHRoZSBtZXRob2QuXG5cdCAgICogQHBh
cmFtIHtPYmplY3Q/PX0gYiBBcmd1bWVudCB0byBwYXNzIHRvIHRoZSBtZXRob2QuXG5cdCAgICog
QHBhcmFtIHtPYmplY3Q/PX0gYyBBcmd1bWVudCB0byBwYXNzIHRvIHRoZSBtZXRob2QuXG5cdCAg
ICogQHBhcmFtIHtPYmplY3Q/PX0gZCBBcmd1bWVudCB0byBwYXNzIHRvIHRoZSBtZXRob2QuXG5c
dCAgICogQHBhcmFtIHtPYmplY3Q/PX0gZSBBcmd1bWVudCB0byBwYXNzIHRvIHRoZSBtZXRob2Qu
XG5cdCAgICogQHBhcmFtIHtPYmplY3Q/PX0gZiBBcmd1bWVudCB0byBwYXNzIHRvIHRoZSBtZXRo
b2QuXG5cdCAgICpcblx0ICAgKiBAcmV0dXJuIHsqfSBSZXR1cm4gdmFsdWUgZnJvbSBgbWV0aG9k
YC5cblx0ICAgKi9cblx0ICBwZXJmb3JtOiBmdW5jdGlvbiAobWV0aG9kLCBzY29wZSwgYSwgYiwg
YywgZCwgZSwgZikge1xuXHQgICAgLyogZXNsaW50LWVuYWJsZSBzcGFjZS1iZWZvcmUtZnVuY3Rp
b24tcGFyZW4gKi9cblx0ICAgICEhdGhpcy5pc0luVHJhbnNhY3Rpb24oKSA/ICBmYWxzZSA/IGlu
dmFyaWFudChmYWxzZSwgJ1RyYW5zYWN0aW9uLnBlcmZvcm0oLi4uKTogQ2Fubm90IGluaXRpYWxp
emUgYSB0cmFuc2FjdGlvbiB3aGVuIHRoZXJlIGlzIGFscmVhZHkgYW4gb3V0c3RhbmRpbmcgdHJh
bnNhY3Rpb24uJykgOiBfcHJvZEludmFyaWFudCgnMjcnKSA6IHZvaWQgMDtcblx0ICAgIHZhciBl
cnJvclRocm93bjtcblx0ICAgIHZhciByZXQ7XG5cdCAgICB0cnkge1xuXHQgICAgICB0aGlzLl9p
c0luVHJhbnNhY3Rpb24gPSB0cnVlO1xuXHQgICAgICAvLyBDYXRjaGluZyBlcnJvcnMgbWFrZXMg
ZGVidWdnaW5nIG1vcmUgZGlmZmljdWx0LCBzbyB3ZSBzdGFydCB3aXRoXG5cdCAgICAgIC8vIGVy
cm9yVGhyb3duIHNldCB0byB0cnVlIGJlZm9yZSBzZXR0aW5nIGl0IHRvIGZhbHNlIGFmdGVyIGNh
bGxpbmdcblx0ICAgICAgLy8gY2xvc2UgLS0gaWYgaXQncyBzdGlsbCBzZXQgdG8gdHJ1ZSBpbiB0
aGUgZmluYWxseSBibG9jaywgaXQgbWVhbnNcblx0ICAgICAgLy8gb25lIG9mIHRoZXNlIGNhbGxz
IHRocmV3LlxuXHQgICAgICBlcnJvclRocm93biA9IHRydWU7XG5cdCAgICAgIHRoaXMuaW5pdGlh
bGl6ZUFsbCgwKTtcblx0ICAgICAgcmV0ID0gbWV0aG9kLmNhbGwoc2NvcGUsIGEsIGIsIGMsIGQs
IGUsIGYpO1xuXHQgICAgICBlcnJvclRocm93biA9IGZhbHNlO1xuXHQgICAgfSBmaW5hbGx5IHtc
blx0ICAgICAgdHJ5IHtcblx0ICAgICAgICBpZiAoZXJyb3JUaHJvd24pIHtcblx0ICAgICAgICAg
IC8vIElmIGBtZXRob2RgIHRocm93cywgcHJlZmVyIHRvIHNob3cgdGhhdCBzdGFjayB0cmFjZSBv
dmVyIGFueSB0aHJvd25cblx0ICAgICAgICAgIC8vIGJ5IGludm9raW5nIGBjbG9zZUFsbGAuXG5c
dCAgICAgICAgICB0cnkge1xuXHQgICAgICAgICAgICB0aGlzLmNsb3NlQWxsKDApO1xuXHQgICAg
ICAgICAgfSBjYXRjaCAoZXJyKSB7fVxuXHQgICAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgICAv
LyBTaW5jZSBgbWV0aG9kYCBkaWRuJ3QgdGhyb3csIHdlIGRvbid0IHdhbnQgdG8gc2lsZW5jZSB0
aGUgZXhjZXB0aW9uXG5cdCAgICAgICAgICAvLyBoZXJlLlxuXHQgICAgICAgICAgdGhpcy5jbG9z
ZUFsbCgwKTtcblx0ICAgICAgICB9XG5cdCAgICAgIH0gZmluYWxseSB7XG5cdCAgICAgICAgdGhp
cy5faXNJblRyYW5zYWN0aW9uID0gZmFsc2U7XG5cdCAgICAgIH1cblx0ICAgIH1cblx0ICAgIHJl
dHVybiByZXQ7XG5cdCAgfSxcblx0XG5cdCAgaW5pdGlhbGl6ZUFsbDogZnVuY3Rpb24gKHN0YXJ0
SW5kZXgpIHtcblx0ICAgIHZhciB0cmFuc2FjdGlvbldyYXBwZXJzID0gdGhpcy50cmFuc2FjdGlv
bldyYXBwZXJzO1xuXHQgICAgZm9yICh2YXIgaSA9IHN0YXJ0SW5kZXg7IGkgPCB0cmFuc2FjdGlv
bldyYXBwZXJzLmxlbmd0aDsgaSsrKSB7XG5cdCAgICAgIHZhciB3cmFwcGVyID0gdHJhbnNhY3Rp
b25XcmFwcGVyc1tpXTtcblx0ICAgICAgdHJ5IHtcblx0ICAgICAgICAvLyBDYXRjaGluZyBlcnJv
cnMgbWFrZXMgZGVidWdnaW5nIG1vcmUgZGlmZmljdWx0LCBzbyB3ZSBzdGFydCB3aXRoIHRoZVxu
XHQgICAgICAgIC8vIE9CU0VSVkVEX0VSUk9SIHN0YXRlIGJlZm9yZSBvdmVyd3JpdGluZyBpdCB3
aXRoIHRoZSByZWFsIHJldHVybiB2YWx1ZVxuXHQgICAgICAgIC8vIG9mIGluaXRpYWxpemUgLS0g
aWYgaXQncyBzdGlsbCBzZXQgdG8gT0JTRVJWRURfRVJST1IgaW4gdGhlIGZpbmFsbHlcblx0ICAg
ICAgICAvLyBibG9jaywgaXQgbWVhbnMgd3JhcHBlci5pbml0aWFsaXplIHRocmV3LlxuXHQgICAg
ICAgIHRoaXMud3JhcHBlckluaXREYXRhW2ldID0gT0JTRVJWRURfRVJST1I7XG5cdCAgICAgICAg
dGhpcy53cmFwcGVySW5pdERhdGFbaV0gPSB3cmFwcGVyLmluaXRpYWxpemUgPyB3cmFwcGVyLmlu
aXRpYWxpemUuY2FsbCh0aGlzKSA6IG51bGw7XG5cdCAgICAgIH0gZmluYWxseSB7XG5cdCAgICAg
ICAgaWYgKHRoaXMud3JhcHBlckluaXREYXRhW2ldID09PSBPQlNFUlZFRF9FUlJPUikge1xuXHQg
ICAgICAgICAgLy8gVGhlIGluaXRpYWxpemVyIGZvciB3cmFwcGVyIGkgdGhyZXcgYW4gZXJyb3I7
IGluaXRpYWxpemUgdGhlXG5cdCAgICAgICAgICAvLyByZW1haW5pbmcgd3JhcHBlcnMgYnV0IHNp
bGVuY2UgYW55IGV4Y2VwdGlvbnMgZnJvbSB0aGVtIHRvIGVuc3VyZVxuXHQgICAgICAgICAgLy8g
dGhhdCB0aGUgZmlyc3QgZXJyb3IgaXMgdGhlIG9uZSB0byBidWJibGUgdXAuXG5cdCAgICAgICAg
ICB0cnkge1xuXHQgICAgICAgICAgICB0aGlzLmluaXRpYWxpemVBbGwoaSArIDEpO1xuXHQgICAg
ICAgICAgfSBjYXRjaCAoZXJyKSB7fVxuXHQgICAgICAgIH1cblx0ICAgICAgfVxuXHQgICAgfVxu
XHQgIH0sXG5cdFxuXHQgIC8qKlxuXHQgICAqIEludm9rZXMgZWFjaCBvZiBgdGhpcy50cmFuc2Fj
dGlvbldyYXBwZXJzLmNsb3NlW2ldYCBmdW5jdGlvbnMsIHBhc3NpbmcgaW50b1xuXHQgICAqIHRo
ZW0gdGhlIHJlc3BlY3RpdmUgcmV0dXJuIHZhbHVlcyBvZiBgdGhpcy50cmFuc2FjdGlvbldyYXBw
ZXJzLmluaXRbaV1gXG5cdCAgICogKGBjbG9zZWBycyB0aGF0IGNvcnJlc3BvbmQgdG8gaW5pdGlh
bGl6ZXJzIHRoYXQgZmFpbGVkIHdpbGwgbm90IGJlXG5cdCAgICogaW52b2tlZCkuXG5cdCAgICov
XG5cdCAgY2xvc2VBbGw6IGZ1bmN0aW9uIChzdGFydEluZGV4KSB7XG5cdCAgICAhdGhpcy5pc0lu
VHJhbnNhY3Rpb24oKSA/ICBmYWxzZSA/IGludmFyaWFudChmYWxzZSwgJ1RyYW5zYWN0aW9uLmNs
b3NlQWxsKCk6IENhbm5vdCBjbG9zZSB0cmFuc2FjdGlvbiB3aGVuIG5vbmUgYXJlIG9wZW4uJykg
OiBfcHJvZEludmFyaWFudCgnMjgnKSA6IHZvaWQgMDtcblx0ICAgIHZhciB0cmFuc2FjdGlvbldy
YXBwZXJzID0gdGhpcy50cmFuc2FjdGlvbldyYXBwZXJzO1xuXHQgICAgZm9yICh2YXIgaSA9IHN0
YXJ0SW5kZXg7IGkgPCB0cmFuc2FjdGlvbldyYXBwZXJzLmxlbmd0aDsgaSsrKSB7XG5cdCAgICAg
IHZhciB3cmFwcGVyID0gdHJhbnNhY3Rpb25XcmFwcGVyc1tpXTtcblx0ICAgICAgdmFyIGluaXRE
YXRhID0gdGhpcy53cmFwcGVySW5pdERhdGFbaV07XG5cdCAgICAgIHZhciBlcnJvclRocm93bjtc
blx0ICAgICAgdHJ5IHtcblx0ICAgICAgICAvLyBDYXRjaGluZyBlcnJvcnMgbWFrZXMgZGVidWdn
aW5nIG1vcmUgZGlmZmljdWx0LCBzbyB3ZSBzdGFydCB3aXRoXG5cdCAgICAgICAgLy8gZXJyb3JU
aHJvd24gc2V0IHRvIHRydWUgYmVmb3JlIHNldHRpbmcgaXQgdG8gZmFsc2UgYWZ0ZXIgY2FsbGlu
Z1xuXHQgICAgICAgIC8vIGNsb3NlIC0tIGlmIGl0J3Mgc3RpbGwgc2V0IHRvIHRydWUgaW4gdGhl
IGZpbmFsbHkgYmxvY2ssIGl0IG1lYW5zXG5cdCAgICAgICAgLy8gd3JhcHBlci5jbG9zZSB0aHJl
dy5cblx0ICAgICAgICBlcnJvclRocm93biA9IHRydWU7XG5cdCAgICAgICAgaWYgKGluaXREYXRh
ICE9PSBPQlNFUlZFRF9FUlJPUiAmJiB3cmFwcGVyLmNsb3NlKSB7XG5cdCAgICAgICAgICB3cmFw
cGVyLmNsb3NlLmNhbGwodGhpcywgaW5pdERhdGEpO1xuXHQgICAgICAgIH1cblx0ICAgICAgICBl
cnJvclRocm93biA9IGZhbHNlO1xuXHQgICAgICB9IGZpbmFsbHkge1xuXHQgICAgICAgIGlmIChl
cnJvclRocm93bikge1xuXHQgICAgICAgICAgLy8gVGhlIGNsb3NlciBmb3Igd3JhcHBlciBpIHRo
cmV3IGFuIGVycm9yOyBjbG9zZSB0aGUgcmVtYWluaW5nXG5cdCAgICAgICAgICAvLyB3cmFwcGVy
cyBidXQgc2lsZW5jZSBhbnkgZXhjZXB0aW9ucyBmcm9tIHRoZW0gdG8gZW5zdXJlIHRoYXQgdGhl
XG5cdCAgICAgICAgICAvLyBmaXJzdCBlcnJvciBpcyB0aGUgb25lIHRvIGJ1YmJsZSB1cC5cblx0
ICAgICAgICAgIHRyeSB7XG5cdCAgICAgICAgICAgIHRoaXMuY2xvc2VBbGwoaSArIDEpO1xuXHQg
ICAgICAgICAgfSBjYXRjaCAoZSkge31cblx0ICAgICAgICB9XG5cdCAgICAgIH1cblx0ICAgIH1c
blx0ICAgIHRoaXMud3JhcHBlckluaXREYXRhLmxlbmd0aCA9IDA7XG5cdCAgfVxuXHR9O1xuXHRc
blx0bW9kdWxlLmV4cG9ydHMgPSBUcmFuc2FjdGlvbkltcGw7XG5cbi8qKiovIH0sXG4vKiAyOCAq
L1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cblx0LyoqXG5cdCAqIENvcHly
aWdodCAyMDE2LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2
ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJT
RC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJv
b3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0
ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0
aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqIEJhc2VkIG9uIHRoZSBlc2NhcGUtaHRtbCBs
aWJyYXJ5LCB3aGljaCBpcyB1c2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZSBiZWxvdzpcblx0ICpc
blx0ICogQ29weXJpZ2h0IChjKSAyMDEyLTIwMTMgVEogSG9sb3dheWNodWtcblx0ICogQ29weXJp
Z2h0IChjKSAyMDE1IEFuZHJlYXMgTHViYmVcblx0ICogQ29weXJpZ2h0IChjKSAyMDE1IFRpYW5j
aGVuZyBcIlRpbW90aHlcIiBHdVxuXHQgKlxuXHQgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFu
dGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmdcblx0ICogYSBjb3B5
IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhl
XG5cdCAqICdTb2Z0d2FyZScpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3Ry
aWN0aW9uLCBpbmNsdWRpbmdcblx0ICogd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8g
dXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLFxuXHQgKiBkaXN0cmlidXRlLCBzdWJs
aWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG9cblx0ICog
cGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNv
LCBzdWJqZWN0IHRvXG5cdCAqIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcblx0ICpcblx0ICog
VGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hh
bGwgYmVcblx0ICogaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9u
cyBvZiB0aGUgU29mdHdhcmUuXG5cdCAqXG5cdCAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAn
QVMgSVMnLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELFxuXHQgKiBFWFBSRVNTIE9SIElN
UExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0Zcblx0
ICogTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQg
Tk9OSU5GUklOR0VNRU5ULlxuXHQgKiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBD
T1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWVxuXHQgKiBDTEFJTSwgREFNQUdFUyBP
UiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULFxuXHQg
KiBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElP
TiBXSVRIIFRIRVxuXHQgKiBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElO
IFRIRSBTT0ZUV0FSRS5cblx0ICpcblx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHQv
LyBjb2RlIGNvcGllZCBhbmQgbW9kaWZpZWQgZnJvbSBlc2NhcGUtaHRtbFxuXHQvKipcblx0ICog
TW9kdWxlIHZhcmlhYmxlcy5cblx0ICogQHByaXZhdGVcblx0ICovXG5cdFxuXHR2YXIgbWF0Y2hI
dG1sUmVnRXhwID0gL1tcIicmPD5dLztcblx0XG5cdC8qKlxuXHQgKiBFc2NhcGUgc3BlY2lhbCBj
aGFyYWN0ZXJzIGluIHRoZSBnaXZlbiBzdHJpbmcgb2YgaHRtbC5cblx0ICpcblx0ICogQHBhcmFt
ICB7c3RyaW5nfSBzdHJpbmcgVGhlIHN0cmluZyB0byBlc2NhcGUgZm9yIGluc2VydGluZyBpbnRv
IEhUTUxcblx0ICogQHJldHVybiB7c3RyaW5nfVxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRcblx0
ZnVuY3Rpb24gZXNjYXBlSHRtbChzdHJpbmcpIHtcblx0ICB2YXIgc3RyID0gJycgKyBzdHJpbmc7
XG5cdCAgdmFyIG1hdGNoID0gbWF0Y2hIdG1sUmVnRXhwLmV4ZWMoc3RyKTtcblx0XG5cdCAgaWYg
KCFtYXRjaCkge1xuXHQgICAgcmV0dXJuIHN0cjtcblx0ICB9XG5cdFxuXHQgIHZhciBlc2NhcGU7
XG5cdCAgdmFyIGh0bWwgPSAnJztcblx0ICB2YXIgaW5kZXggPSAwO1xuXHQgIHZhciBsYXN0SW5k
ZXggPSAwO1xuXHRcblx0ICBmb3IgKGluZGV4ID0gbWF0Y2guaW5kZXg7IGluZGV4IDwgc3RyLmxl
bmd0aDsgaW5kZXgrKykge1xuXHQgICAgc3dpdGNoIChzdHIuY2hhckNvZGVBdChpbmRleCkpIHtc
blx0ICAgICAgY2FzZSAzNDpcblx0ICAgICAgICAvLyBcIlxuXHQgICAgICAgIGVzY2FwZSA9ICcm
cXVvdDsnO1xuXHQgICAgICAgIGJyZWFrO1xuXHQgICAgICBjYXNlIDM4OlxuXHQgICAgICAgIC8v
ICZcblx0ICAgICAgICBlc2NhcGUgPSAnJmFtcDsnO1xuXHQgICAgICAgIGJyZWFrO1xuXHQgICAg
ICBjYXNlIDM5OlxuXHQgICAgICAgIC8vICdcblx0ICAgICAgICBlc2NhcGUgPSAnJiN4Mjc7Jzsg
Ly8gbW9kaWZpZWQgZnJvbSBlc2NhcGUtaHRtbDsgdXNlZCB0byBiZSAnJiMzOSdcblx0ICAgICAg
ICBicmVhaztcblx0ICAgICAgY2FzZSA2MDpcblx0ICAgICAgICAvLyA8XG5cdCAgICAgICAgZXNj
YXBlID0gJyZsdDsnO1xuXHQgICAgICAgIGJyZWFrO1xuXHQgICAgICBjYXNlIDYyOlxuXHQgICAg
ICAgIC8vID5cblx0ICAgICAgICBlc2NhcGUgPSAnJmd0Oyc7XG5cdCAgICAgICAgYnJlYWs7XG5c
dCAgICAgIGRlZmF1bHQ6XG5cdCAgICAgICAgY29udGludWU7XG5cdCAgICB9XG5cdFxuXHQgICAg
aWYgKGxhc3RJbmRleCAhPT0gaW5kZXgpIHtcblx0ICAgICAgaHRtbCArPSBzdHIuc3Vic3RyaW5n
KGxhc3RJbmRleCwgaW5kZXgpO1xuXHQgICAgfVxuXHRcblx0ICAgIGxhc3RJbmRleCA9IGluZGV4
ICsgMTtcblx0ICAgIGh0bWwgKz0gZXNjYXBlO1xuXHQgIH1cblx0XG5cdCAgcmV0dXJuIGxhc3RJ
bmRleCAhPT0gaW5kZXggPyBodG1sICsgc3RyLnN1YnN0cmluZyhsYXN0SW5kZXgsIGluZGV4KSA6
IGh0bWw7XG5cdH1cblx0Ly8gZW5kIGNvZGUgY29waWVkIGFuZCBtb2RpZmllZCBmcm9tIGVzY2Fw
ZS1odG1sXG5cdFxuXHQvKipcblx0ICogRXNjYXBlcyB0ZXh0IHRvIHByZXZlbnQgc2NyaXB0aW5n
IGF0dGFja3MuXG5cdCAqXG5cdCAqIEBwYXJhbSB7Kn0gdGV4dCBUZXh0IHZhbHVlIHRvIGVzY2Fw
ZS5cblx0ICogQHJldHVybiB7c3RyaW5nfSBBbiBlc2NhcGVkIHN0cmluZy5cblx0ICovXG5cdGZ1
bmN0aW9uIGVzY2FwZVRleHRDb250ZW50Rm9yQnJvd3Nlcih0ZXh0KSB7XG5cdCAgaWYgKHR5cGVv
ZiB0ZXh0ID09PSAnYm9vbGVhbicgfHwgdHlwZW9mIHRleHQgPT09ICdudW1iZXInKSB7XG5cdCAg
ICAvLyB0aGlzIHNob3J0Y2lyY3VpdCBoZWxwcyBwZXJmIGZvciB0eXBlcyB0aGF0IHdlIGtub3cg
d2lsbCBuZXZlciBoYXZlXG5cdCAgICAvLyBzcGVjaWFsIGNoYXJhY3RlcnMsIGVzcGVjaWFsbHkg
Z2l2ZW4gdGhhdCB0aGlzIGZ1bmN0aW9uIGlzIHVzZWQgb2Z0ZW5cblx0ICAgIC8vIGZvciBudW1l
cmljIGRvbSBpZHMuXG5cdCAgICByZXR1cm4gJycgKyB0ZXh0O1xuXHQgIH1cblx0ICByZXR1cm4g
ZXNjYXBlSHRtbCh0ZXh0KTtcblx0fVxuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBlc2NhcGVUZXh0
Q29udGVudEZvckJyb3dzZXI7XG5cbi8qKiovIH0sXG4vKiAyOSAqL1xuLyoqKi8gZnVuY3Rpb24o
bW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0LyoqXG5cdCAqIENv
cHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhl
IEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhl
IHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRc
blx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBp
biB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqL1xuXHRcblx0J3VzZSBzdHJpY3QnO1xu
XHRcblx0dmFyIEV4ZWN1dGlvbkVudmlyb25tZW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg2KTtc
blx0dmFyIERPTU5hbWVzcGFjZXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDM1KTtcblx0XG5cdHZh
ciBXSElURVNQQUNFX1RFU1QgPSAvXlsgXFxyXFxuXFx0XFxmXS87XG5cdHZhciBOT05WSVNJQkxF
X1RFU1QgPSAvPCghLS18bGlua3xub3NjcmlwdHxtZXRhfHNjcmlwdHxzdHlsZSlbIFxcclxcblxc
dFxcZlxcLz5dLztcblx0XG5cdHZhciBjcmVhdGVNaWNyb3NvZnRVbnNhZmVMb2NhbEZ1bmN0aW9u
ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0Myk7XG5cdFxuXHQvLyBTVkcgdGVtcCBjb250YWluZXIg
Zm9yIElFIGxhY2tpbmcgaW5uZXJIVE1MXG5cdHZhciByZXVzYWJsZVNWR0NvbnRhaW5lcjtcblx0
XG5cdC8qKlxuXHQgKiBTZXQgdGhlIGlubmVySFRNTCBwcm9wZXJ0eSBvZiBhIG5vZGUsIGVuc3Vy
aW5nIHRoYXQgd2hpdGVzcGFjZSBpcyBwcmVzZXJ2ZWRcblx0ICogZXZlbiBpbiBJRTguXG5cdCAq
XG5cdCAqIEBwYXJhbSB7RE9NRWxlbWVudH0gbm9kZVxuXHQgKiBAcGFyYW0ge3N0cmluZ30gaHRt
bFxuXHQgKiBAaW50ZXJuYWxcblx0ICovXG5cdHZhciBzZXRJbm5lckhUTUwgPSBjcmVhdGVNaWNy
b3NvZnRVbnNhZmVMb2NhbEZ1bmN0aW9uKGZ1bmN0aW9uIChub2RlLCBodG1sKSB7XG5cdCAgLy8g
SUUgZG9lcyBub3QgaGF2ZSBpbm5lckhUTUwgZm9yIFNWRyBub2Rlcywgc28gaW5zdGVhZCB3ZSBp
bmplY3QgdGhlXG5cdCAgLy8gbmV3IG1hcmt1cCBpbiBhIHRlbXAgbm9kZSBhbmQgdGhlbiBtb3Zl
IHRoZSBjaGlsZCBub2RlcyBhY3Jvc3MgaW50b1xuXHQgIC8vIHRoZSB0YXJnZXQgbm9kZVxuXHQg
IGlmIChub2RlLm5hbWVzcGFjZVVSSSA9PT0gRE9NTmFtZXNwYWNlcy5zdmcgJiYgISgnaW5uZXJI
VE1MJyBpbiBub2RlKSkge1xuXHQgICAgcmV1c2FibGVTVkdDb250YWluZXIgPSByZXVzYWJsZVNW
R0NvbnRhaW5lciB8fCBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcblx0ICAgIHJldXNh
YmxlU1ZHQ29udGFpbmVyLmlubmVySFRNTCA9ICc8c3ZnPicgKyBodG1sICsgJzwvc3ZnPic7XG5c
dCAgICB2YXIgc3ZnTm9kZSA9IHJldXNhYmxlU1ZHQ29udGFpbmVyLmZpcnN0Q2hpbGQ7XG5cdCAg
ICB3aGlsZSAoc3ZnTm9kZS5maXJzdENoaWxkKSB7XG5cdCAgICAgIG5vZGUuYXBwZW5kQ2hpbGQo
c3ZnTm9kZS5maXJzdENoaWxkKTtcblx0ICAgIH1cblx0ICB9IGVsc2Uge1xuXHQgICAgbm9kZS5p
bm5lckhUTUwgPSBodG1sO1xuXHQgIH1cblx0fSk7XG5cdFxuXHRpZiAoRXhlY3V0aW9uRW52aXJv
bm1lbnQuY2FuVXNlRE9NKSB7XG5cdCAgLy8gSUU4OiBXaGVuIHVwZGF0aW5nIGEganVzdCBjcmVh
dGVkIG5vZGUgd2l0aCBpbm5lckhUTUwgb25seSBsZWFkaW5nXG5cdCAgLy8gd2hpdGVzcGFjZSBp
cyByZW1vdmVkLiBXaGVuIHVwZGF0aW5nIGFuIGV4aXN0aW5nIG5vZGUgd2l0aCBpbm5lckhUTUxc
blx0ICAvLyB3aGl0ZXNwYWNlIGluIHJvb3QgVGV4dE5vZGVzIGlzIGFsc28gY29sbGFwc2VkLlxu
XHQgIC8vIEBzZWUgcXVpcmtzbW9kZS5vcmcvYnVncmVwb3J0cy9hcmNoaXZlcy8yMDA0LzExL2lu
bmVyaHRtbF9hbmRfdC5odG1sXG5cdFxuXHQgIC8vIEZlYXR1cmUgZGV0ZWN0aW9uOyBvbmx5IElF
OCBpcyBrbm93biB0byBiZWhhdmUgaW1wcm9wZXJseSBsaWtlIHRoaXMuXG5cdCAgdmFyIHRlc3RF
bGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG5cdCAgdGVzdEVsZW1lbnQu
aW5uZXJIVE1MID0gJyAnO1xuXHQgIGlmICh0ZXN0RWxlbWVudC5pbm5lckhUTUwgPT09ICcnKSB7
XG5cdCAgICBzZXRJbm5lckhUTUwgPSBmdW5jdGlvbiAobm9kZSwgaHRtbCkge1xuXHQgICAgICAv
LyBNYWdpYyB0aGVvcnk6IElFOCBzdXBwb3NlZGx5IGRpZmZlcmVudGlhdGVzIGJldHdlZW4gYWRk
ZWQgYW5kIHVwZGF0ZWRcblx0ICAgICAgLy8gbm9kZXMgd2hlbiBwcm9jZXNzaW5nIGlubmVySFRN
TCwgaW5uZXJIVE1MIG9uIHVwZGF0ZWQgbm9kZXMgc3VmZmVyc1xuXHQgICAgICAvLyBmcm9tIHdv
cnNlIHdoaXRlc3BhY2UgYmVoYXZpb3IuIFJlLWFkZGluZyBhIG5vZGUgbGlrZSB0aGlzIHRyaWdn
ZXJzXG5cdCAgICAgIC8vIHRoZSBpbml0aWFsIGFuZCBtb3JlIGZhdm9yYWJsZSB3aGl0ZXNwYWNl
IGJlaGF2aW9yLlxuXHQgICAgICAvLyBUT0RPOiBXaGF0IHRvIGRvIG9uIGEgZGV0YWNoZWQgbm9k
ZT9cblx0ICAgICAgaWYgKG5vZGUucGFyZW50Tm9kZSkge1xuXHQgICAgICAgIG5vZGUucGFyZW50
Tm9kZS5yZXBsYWNlQ2hpbGQobm9kZSwgbm9kZSk7XG5cdCAgICAgIH1cblx0XG5cdCAgICAgIC8v
IFdlIGFsc28gaW1wbGVtZW50IGEgd29ya2Fyb3VuZCBmb3Igbm9uLXZpc2libGUgdGFncyBkaXNh
cHBlYXJpbmcgaW50b1xuXHQgICAgICAvLyB0aGluIGFpciBvbiBJRTgsIHRoaXMgb25seSBoYXBw
ZW5zIGlmIHRoZXJlIGlzIG5vIHZpc2libGUgdGV4dFxuXHQgICAgICAvLyBpbi1mcm9udCBvZiB0
aGUgbm9uLXZpc2libGUgdGFncy4gUGlnZ3liYWNrIG9uIHRoZSB3aGl0ZXNwYWNlIGZpeFxuXHQg
ICAgICAvLyBhbmQgc2ltcGx5IGNoZWNrIGlmIGFueSBub24tdmlzaWJsZSB0YWdzIGFwcGVhciBp
biB0aGUgc291cmNlLlxuXHQgICAgICBpZiAoV0hJVEVTUEFDRV9URVNULnRlc3QoaHRtbCkgfHwg
aHRtbFswXSA9PT0gJzwnICYmIE5PTlZJU0lCTEVfVEVTVC50ZXN0KGh0bWwpKSB7XG5cdCAgICAg
ICAgLy8gUmVjb3ZlciBsZWFkaW5nIHdoaXRlc3BhY2UgYnkgdGVtcG9yYXJpbHkgcHJlcGVuZGlu
ZyBhbnkgY2hhcmFjdGVyLlxuXHQgICAgICAgIC8vIFxcdUZFRkYgaGFzIHRoZSBwb3RlbnRpYWwg
YWR2YW50YWdlIG9mIGJlaW5nIHplcm8td2lkdGgvaW52aXNpYmxlLlxuXHQgICAgICAgIC8vIFVn
bGlmeUpTIGRyb3BzIFUrRkVGRiBjaGFycyB3aGVuIHBhcnNpbmcsIHNvIHVzZSBTdHJpbmcuZnJv
bUNoYXJDb2RlXG5cdCAgICAgICAgLy8gaW4gaG9wZXMgdGhhdCB0aGlzIGlzIHByZXNlcnZlZCBl
dmVuIGlmIFwiXFx1RkVGRlwiIGlzIHRyYW5zZm9ybWVkIHRvXG5cdCAgICAgICAgLy8gdGhlIGFj
dHVhbCBVbmljb2RlIGNoYXJhY3RlciAoYnkgQmFiZWwsIGZvciBleGFtcGxlKS5cblx0ICAgICAg
ICAvLyBodHRwczovL2dpdGh1Yi5jb20vbWlzaG9vL1VnbGlmeUpTMi9ibG9iL3YyLjQuMjAvbGli
L3BhcnNlLmpzI0wyMTZcblx0ICAgICAgICBub2RlLmlubmVySFRNTCA9IFN0cmluZy5mcm9tQ2hh
ckNvZGUoMHhmZWZmKSArIGh0bWw7XG5cdFxuXHQgICAgICAgIC8vIGRlbGV0ZURhdGEgbGVhdmVz
IGFuIGVtcHR5IGBUZXh0Tm9kZWAgd2hpY2ggb2Zmc2V0cyB0aGUgaW5kZXggb2YgYWxsXG5cdCAg
ICAgICAgLy8gY2hpbGRyZW4uIERlZmluaXRlbHkgd2FudCB0byBhdm9pZCB0aGlzLlxuXHQgICAg
ICAgIHZhciB0ZXh0Tm9kZSA9IG5vZGUuZmlyc3RDaGlsZDtcblx0ICAgICAgICBpZiAodGV4dE5v
ZGUuZGF0YS5sZW5ndGggPT09IDEpIHtcblx0ICAgICAgICAgIG5vZGUucmVtb3ZlQ2hpbGQodGV4
dE5vZGUpO1xuXHQgICAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgICB0ZXh0Tm9kZS5kZWxldGVE
YXRhKDAsIDEpO1xuXHQgICAgICAgIH1cblx0ICAgICAgfSBlbHNlIHtcblx0ICAgICAgICBub2Rl
LmlubmVySFRNTCA9IGh0bWw7XG5cdCAgICAgIH1cblx0ICAgIH07XG5cdCAgfVxuXHQgIHRlc3RF
bGVtZW50ID0gbnVsbDtcblx0fVxuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBzZXRJbm5lckhUTUw7
XG5cbi8qKiovIH0sXG4vKiAzMCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBf
X3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0ZXhwb3J0cy5f
X2VzTW9kdWxlID0gdHJ1ZTtcblx0ZXhwb3J0cy5jb21wb3NlID0gZXhwb3J0cy5hcHBseU1pZGRs
ZXdhcmUgPSBleHBvcnRzLmJpbmRBY3Rpb25DcmVhdG9ycyA9IGV4cG9ydHMuY29tYmluZVJlZHVj
ZXJzID0gZXhwb3J0cy5jcmVhdGVTdG9yZSA9IHVuZGVmaW5lZDtcblx0XG5cdHZhciBfY3JlYXRl
U3RvcmUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDk1KTtcblx0XG5cdHZhciBfY3JlYXRlU3RvcmUy
ID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfY3JlYXRlU3RvcmUpO1xuXHRcblx0dmFyIF9jb21i
aW5lUmVkdWNlcnMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIyNyk7XG5cdFxuXHR2YXIgX2NvbWJp
bmVSZWR1Y2VyczIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9jb21iaW5lUmVkdWNlcnMpO1xu
XHRcblx0dmFyIF9iaW5kQWN0aW9uQ3JlYXRvcnMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIyNik7
XG5cdFxuXHR2YXIgX2JpbmRBY3Rpb25DcmVhdG9yczIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0
KF9iaW5kQWN0aW9uQ3JlYXRvcnMpO1xuXHRcblx0dmFyIF9hcHBseU1pZGRsZXdhcmUgPSBfX3dl
YnBhY2tfcmVxdWlyZV9fKDIyNSk7XG5cdFxuXHR2YXIgX2FwcGx5TWlkZGxld2FyZTIgPSBfaW50
ZXJvcFJlcXVpcmVEZWZhdWx0KF9hcHBseU1pZGRsZXdhcmUpO1xuXHRcblx0dmFyIF9jb21wb3Nl
ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg5NCk7XG5cdFxuXHR2YXIgX2NvbXBvc2UyID0gX2ludGVy
b3BSZXF1aXJlRGVmYXVsdChfY29tcG9zZSk7XG5cdFxuXHR2YXIgX3dhcm5pbmcgPSBfX3dlYnBh
Y2tfcmVxdWlyZV9fKDk2KTtcblx0XG5cdHZhciBfd2FybmluZzIgPSBfaW50ZXJvcFJlcXVpcmVE
ZWZhdWx0KF93YXJuaW5nKTtcblx0XG5cdGZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQo
b2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7ICdkZWZhdWx0Jzog
b2JqIH07IH1cblx0XG5cdC8qXG5cdCogVGhpcyBpcyBhIGR1bW15IGZ1bmN0aW9uIHRvIGNoZWNr
IGlmIHRoZSBmdW5jdGlvbiBuYW1lIGhhcyBiZWVuIGFsdGVyZWQgYnkgbWluaWZpY2F0aW9uLlxu
XHQqIElmIHRoZSBmdW5jdGlvbiBoYXMgYmVlbiBtaW5pZmllZCBhbmQgTk9ERV9FTlYgIT09ICdw
cm9kdWN0aW9uJywgd2FybiB0aGUgdXNlci5cblx0Ki9cblx0ZnVuY3Rpb24gaXNDcnVzaGVkKCkg
e31cblx0XG5cdGlmIChmYWxzZSkge1xuXHQgICgwLCBfd2FybmluZzJbJ2RlZmF1bHQnXSkoJ1lv
dSBhcmUgY3VycmVudGx5IHVzaW5nIG1pbmlmaWVkIGNvZGUgb3V0c2lkZSBvZiBOT0RFX0VOViA9
PT0gXFwncHJvZHVjdGlvblxcJy4gJyArICdUaGlzIG1lYW5zIHRoYXQgeW91IGFyZSBydW5uaW5n
IGEgc2xvd2VyIGRldmVsb3BtZW50IGJ1aWxkIG9mIFJlZHV4LiAnICsgJ1lvdSBjYW4gdXNlIGxv
b3NlLWVudmlmeSAoaHR0cHM6Ly9naXRodWIuY29tL3plcnRvc2gvbG9vc2UtZW52aWZ5KSBmb3Ig
YnJvd3NlcmlmeSAnICsgJ29yIERlZmluZVBsdWdpbiBmb3Igd2VicGFjayAoaHR0cDovL3N0YWNr
b3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8zMDAzMDAzMSkgJyArICd0byBlbnN1cmUgeW91IGhhdmUg
dGhlIGNvcnJlY3QgY29kZSBmb3IgeW91ciBwcm9kdWN0aW9uIGJ1aWxkLicpO1xuXHR9XG5cdFxu
XHRleHBvcnRzLmNyZWF0ZVN0b3JlID0gX2NyZWF0ZVN0b3JlMlsnZGVmYXVsdCddO1xuXHRleHBv
cnRzLmNvbWJpbmVSZWR1Y2VycyA9IF9jb21iaW5lUmVkdWNlcnMyWydkZWZhdWx0J107XG5cdGV4
cG9ydHMuYmluZEFjdGlvbkNyZWF0b3JzID0gX2JpbmRBY3Rpb25DcmVhdG9yczJbJ2RlZmF1bHQn
XTtcblx0ZXhwb3J0cy5hcHBseU1pZGRsZXdhcmUgPSBfYXBwbHlNaWRkbGV3YXJlMlsnZGVmYXVs
dCddO1xuXHRleHBvcnRzLmNvbXBvc2UgPSBfY29tcG9zZTJbJ2RlZmF1bHQnXTtcblxuLyoqKi8g
fSxcbi8qIDMxICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19y
ZXF1aXJlX18pIHtcblxuXHR2YXIgX19XRUJQQUNLX0FNRF9ERUZJTkVfQVJSQVlfXywgX19XRUJQ
QUNLX0FNRF9ERUZJTkVfUkVTVUxUX187LyohXG5cdCAgQ29weXJpZ2h0IChjKSAyMDE2IEplZCBX
YXRzb24uXG5cdCAgTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlIChNSVQpLCBzZWVcblx0
ICBodHRwOi8vamVkd2F0c29uLmdpdGh1Yi5pby9jbGFzc25hbWVzXG5cdCovXG5cdC8qIGdsb2Jh
bCBkZWZpbmUgKi9cblx0XG5cdChmdW5jdGlvbiAoKSB7XG5cdFx0J3VzZSBzdHJpY3QnO1xuXHRc
blx0XHR2YXIgaGFzT3duID0ge30uaGFzT3duUHJvcGVydHk7XG5cdFxuXHRcdGZ1bmN0aW9uIGNs
YXNzTmFtZXMgKCkge1xuXHRcdFx0dmFyIGNsYXNzZXMgPSBbXTtcblx0XG5cdFx0XHRmb3IgKHZh
ciBpID0gMDsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHR2YXIgYXJnID0g
YXJndW1lbnRzW2ldO1xuXHRcdFx0XHRpZiAoIWFyZykgY29udGludWU7XG5cdFxuXHRcdFx0XHR2
YXIgYXJnVHlwZSA9IHR5cGVvZiBhcmc7XG5cdFxuXHRcdFx0XHRpZiAoYXJnVHlwZSA9PT0gJ3N0
cmluZycgfHwgYXJnVHlwZSA9PT0gJ251bWJlcicpIHtcblx0XHRcdFx0XHRjbGFzc2VzLnB1c2go
YXJnKTtcblx0XHRcdFx0fSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGFyZykpIHtcblx0XHRcdFx0
XHRjbGFzc2VzLnB1c2goY2xhc3NOYW1lcy5hcHBseShudWxsLCBhcmcpKTtcblx0XHRcdFx0fSBl
bHNlIGlmIChhcmdUeXBlID09PSAnb2JqZWN0Jykge1xuXHRcdFx0XHRcdGZvciAodmFyIGtleSBp
biBhcmcpIHtcblx0XHRcdFx0XHRcdGlmIChoYXNPd24uY2FsbChhcmcsIGtleSkgJiYgYXJnW2tl
eV0pIHtcblx0XHRcdFx0XHRcdFx0Y2xhc3Nlcy5wdXNoKGtleSk7XG5cdFx0XHRcdFx0XHR9XG5c
dFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFxuXHRcdFx0cmV0dXJuIGNsYXNzZXMu
am9pbignICcpO1xuXHRcdH1cblx0XG5cdFx0aWYgKHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmlu
ZWQnICYmIG1vZHVsZS5leHBvcnRzKSB7XG5cdFx0XHRtb2R1bGUuZXhwb3J0cyA9IGNsYXNzTmFt
ZXM7XG5cdFx0fSBlbHNlIGlmICh0cnVlKSB7XG5cdFx0XHQvLyByZWdpc3RlciBhcyAnY2xhc3Nu
YW1lcycsIGNvbnNpc3RlbnQgd2l0aCBucG0gcGFja2FnZSBuYW1lXG5cdFx0XHQhKF9fV0VCUEFD
S19BTURfREVGSU5FX0FSUkFZX18gPSBbXSwgX19XRUJQQUNLX0FNRF9ERUZJTkVfUkVTVUxUX18g
PSBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdHJldHVybiBjbGFzc05hbWVzO1xuXHRcdFx0fS5hcHBs
eShleHBvcnRzLCBfX1dFQlBBQ0tfQU1EX0RFRklORV9BUlJBWV9fKSwgX19XRUJQQUNLX0FNRF9E
RUZJTkVfUkVTVUxUX18gIT09IHVuZGVmaW5lZCAmJiAobW9kdWxlLmV4cG9ydHMgPSBfX1dFQlBB
Q0tfQU1EX0RFRklORV9SRVNVTFRfXykpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR3aW5kb3cuY2xh
c3NOYW1lcyA9IGNsYXNzTmFtZXM7XG5cdFx0fVxuXHR9KCkpO1xuXG5cbi8qKiovIH0sXG4vKiAz
MiAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cblx0LyoqXG5cdCAqIENv
cHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRz
IHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVy
IHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxlIGlu
IHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdy
YW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZp
bGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKiBAdHlwZWNoZWNrc1xuXHQgKiBc
blx0ICovXG5cdFxuXHQvKmVzbGludC1kaXNhYmxlIG5vLXNlbGYtY29tcGFyZSAqL1xuXHRcblx0
J3VzZSBzdHJpY3QnO1xuXHRcblx0dmFyIGhhc093blByb3BlcnR5ID0gT2JqZWN0LnByb3RvdHlw
ZS5oYXNPd25Qcm9wZXJ0eTtcblx0XG5cdC8qKlxuXHQgKiBpbmxpbmVkIE9iamVjdC5pcyBwb2x5
ZmlsbCB0byBhdm9pZCByZXF1aXJpbmcgY29uc3VtZXJzIHNoaXAgdGhlaXIgb3duXG5cdCAqIGh0
dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVm
ZXJlbmNlL0dsb2JhbF9PYmplY3RzL09iamVjdC9pc1xuXHQgKi9cblx0ZnVuY3Rpb24gaXMoeCwg
eSkge1xuXHQgIC8vIFNhbWVWYWx1ZSBhbGdvcml0aG1cblx0ICBpZiAoeCA9PT0geSkge1xuXHQg
ICAgLy8gU3RlcHMgMS01LCA3LTEwXG5cdCAgICAvLyBTdGVwcyA2LmItNi5lOiArMCAhPSAtMFxu
XHQgICAgLy8gQWRkZWQgdGhlIG5vbnplcm8geSBjaGVjayB0byBtYWtlIEZsb3cgaGFwcHksIGJ1
dCBpdCBpcyByZWR1bmRhbnRcblx0ICAgIHJldHVybiB4ICE9PSAwIHx8IHkgIT09IDAgfHwgMSAv
IHggPT09IDEgLyB5O1xuXHQgIH0gZWxzZSB7XG5cdCAgICAvLyBTdGVwIDYuYTogTmFOID09IE5h
TlxuXHQgICAgcmV0dXJuIHggIT09IHggJiYgeSAhPT0geTtcblx0ICB9XG5cdH1cblx0XG5cdC8q
KlxuXHQgKiBQZXJmb3JtcyBlcXVhbGl0eSBieSBpdGVyYXRpbmcgdGhyb3VnaCBrZXlzIG9uIGFu
IG9iamVjdCBhbmQgcmV0dXJuaW5nIGZhbHNlXG5cdCAqIHdoZW4gYW55IGtleSBoYXMgdmFsdWVz
IHdoaWNoIGFyZSBub3Qgc3RyaWN0bHkgZXF1YWwgYmV0d2VlbiB0aGUgYXJndW1lbnRzLlxuXHQg
KiBSZXR1cm5zIHRydWUgd2hlbiB0aGUgdmFsdWVzIG9mIGFsbCBrZXlzIGFyZSBzdHJpY3RseSBl
cXVhbC5cblx0ICovXG5cdGZ1bmN0aW9uIHNoYWxsb3dFcXVhbChvYmpBLCBvYmpCKSB7XG5cdCAg
aWYgKGlzKG9iakEsIG9iakIpKSB7XG5cdCAgICByZXR1cm4gdHJ1ZTtcblx0ICB9XG5cdFxuXHQg
IGlmICh0eXBlb2Ygb2JqQSAhPT0gJ29iamVjdCcgfHwgb2JqQSA9PT0gbnVsbCB8fCB0eXBlb2Yg
b2JqQiAhPT0gJ29iamVjdCcgfHwgb2JqQiA9PT0gbnVsbCkge1xuXHQgICAgcmV0dXJuIGZhbHNl
O1xuXHQgIH1cblx0XG5cdCAgdmFyIGtleXNBID0gT2JqZWN0LmtleXMob2JqQSk7XG5cdCAgdmFy
IGtleXNCID0gT2JqZWN0LmtleXMob2JqQik7XG5cdFxuXHQgIGlmIChrZXlzQS5sZW5ndGggIT09
IGtleXNCLmxlbmd0aCkge1xuXHQgICAgcmV0dXJuIGZhbHNlO1xuXHQgIH1cblx0XG5cdCAgLy8g
VGVzdCBmb3IgQSdzIGtleXMgZGlmZmVyZW50IGZyb20gQi5cblx0ICBmb3IgKHZhciBpID0gMDsg
aSA8IGtleXNBLmxlbmd0aDsgaSsrKSB7XG5cdCAgICBpZiAoIWhhc093blByb3BlcnR5LmNhbGwo
b2JqQiwga2V5c0FbaV0pIHx8ICFpcyhvYmpBW2tleXNBW2ldXSwgb2JqQltrZXlzQVtpXV0pKSB7
XG5cdCAgICAgIHJldHVybiBmYWxzZTtcblx0ICAgIH1cblx0ICB9XG5cdFxuXHQgIHJldHVybiB0
cnVlO1xuXHR9XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IHNoYWxsb3dFcXVhbDtcblxuLyoqKi8g
fSxcbi8qIDMzICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19y
ZXF1aXJlX18pIHtcblxuXHR2YXIgYmFzZUdldFRhZyA9IF9fd2VicGFja19yZXF1aXJlX18oMTEy
KSxcblx0ICAgIGdldFByb3RvdHlwZSA9IF9fd2VicGFja19yZXF1aXJlX18oMTE0KSxcblx0ICAg
IGlzT2JqZWN0TGlrZSA9IF9fd2VicGFja19yZXF1aXJlX18oMTE5KTtcblx0XG5cdC8qKiBgT2Jq
ZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cblx0dmFyIG9iamVjdFRhZyA9ICdb
b2JqZWN0IE9iamVjdF0nO1xuXHRcblx0LyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZl
cmVuY2VzLiAqL1xuXHR2YXIgZnVuY1Byb3RvID0gRnVuY3Rpb24ucHJvdG90eXBlLFxuXHQgICAg
b2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXHRcblx0LyoqIFVzZWQgdG8gcmVzb2x2
ZSB0aGUgZGVjb21waWxlZCBzb3VyY2Ugb2YgZnVuY3Rpb25zLiAqL1xuXHR2YXIgZnVuY1RvU3Ry
aW5nID0gZnVuY1Byb3RvLnRvU3RyaW5nO1xuXHRcblx0LyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0
cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG5cdHZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFBy
b3RvLmhhc093blByb3BlcnR5O1xuXHRcblx0LyoqIFVzZWQgdG8gaW5mZXIgdGhlIGBPYmplY3Rg
IGNvbnN0cnVjdG9yLiAqL1xuXHR2YXIgb2JqZWN0Q3RvclN0cmluZyA9IGZ1bmNUb1N0cmluZy5j
YWxsKE9iamVjdCk7XG5cdFxuXHQvKipcblx0ICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSBwbGFp
biBvYmplY3QsIHRoYXQgaXMsIGFuIG9iamVjdCBjcmVhdGVkIGJ5IHRoZVxuXHQgKiBgT2JqZWN0
YCBjb25zdHJ1Y3RvciBvciBvbmUgd2l0aCBhIGBbW1Byb3RvdHlwZV1dYCBvZiBgbnVsbGAuXG5c
dCAqXG5cdCAqIEBzdGF0aWNcblx0ICogQG1lbWJlck9mIF9cblx0ICogQHNpbmNlIDAuOC4wXG5c
dCAqIEBjYXRlZ29yeSBMYW5nXG5cdCAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNo
ZWNrLlxuXHQgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBp
cyBhIHBsYWluIG9iamVjdCwgZWxzZSBgZmFsc2VgLlxuXHQgKiBAZXhhbXBsZVxuXHQgKlxuXHQg
KiBmdW5jdGlvbiBGb28oKSB7XG5cdCAqICAgdGhpcy5hID0gMTtcblx0ICogfVxuXHQgKlxuXHQg
KiBfLmlzUGxhaW5PYmplY3QobmV3IEZvbyk7XG5cdCAqIC8vID0+IGZhbHNlXG5cdCAqXG5cdCAq
IF8uaXNQbGFpbk9iamVjdChbMSwgMiwgM10pO1xuXHQgKiAvLyA9PiBmYWxzZVxuXHQgKlxuXHQg
KiBfLmlzUGxhaW5PYmplY3QoeyAneCc6IDAsICd5JzogMCB9KTtcblx0ICogLy8gPT4gdHJ1ZVxu
XHQgKlxuXHQgKiBfLmlzUGxhaW5PYmplY3QoT2JqZWN0LmNyZWF0ZShudWxsKSk7XG5cdCAqIC8v
ID0+IHRydWVcblx0ICovXG5cdGZ1bmN0aW9uIGlzUGxhaW5PYmplY3QodmFsdWUpIHtcblx0ICBp
ZiAoIWlzT2JqZWN0TGlrZSh2YWx1ZSkgfHwgYmFzZUdldFRhZyh2YWx1ZSkgIT0gb2JqZWN0VGFn
KSB7XG5cdCAgICByZXR1cm4gZmFsc2U7XG5cdCAgfVxuXHQgIHZhciBwcm90byA9IGdldFByb3Rv
dHlwZSh2YWx1ZSk7XG5cdCAgaWYgKHByb3RvID09PSBudWxsKSB7XG5cdCAgICByZXR1cm4gdHJ1
ZTtcblx0ICB9XG5cdCAgdmFyIEN0b3IgPSBoYXNPd25Qcm9wZXJ0eS5jYWxsKHByb3RvLCAnY29u
c3RydWN0b3InKSAmJiBwcm90by5jb25zdHJ1Y3Rvcjtcblx0ICByZXR1cm4gdHlwZW9mIEN0b3Ig
PT0gJ2Z1bmN0aW9uJyAmJiBDdG9yIGluc3RhbmNlb2YgQ3RvciAmJlxuXHQgICAgZnVuY1RvU3Ry
aW5nLmNhbGwoQ3RvcikgPT0gb2JqZWN0Q3RvclN0cmluZztcblx0fVxuXHRcblx0bW9kdWxlLmV4
cG9ydHMgPSBpc1BsYWluT2JqZWN0O1xuXG5cbi8qKiovIH0sXG4vKiAzNCAqL1xuLyoqKi8gZnVu
Y3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0LyoqXG5c
dCAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5k
ZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUg
aW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwg
Z3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMg
ZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqL1xuXHRcblx0J3VzZSBzdHJp
Y3QnO1xuXHRcblx0dmFyIERPTUxhenlUcmVlID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNCk7XG5c
dHZhciBEYW5nZXIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEyOSk7XG5cdHZhciBSZWFjdERPTUNv
bXBvbmVudFRyZWUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDUpO1xuXHR2YXIgUmVhY3RJbnN0cnVt
ZW50YXRpb24gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDgpO1xuXHRcblx0dmFyIGNyZWF0ZU1pY3Jv
c29mdFVuc2FmZUxvY2FsRnVuY3Rpb24gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQzKTtcblx0dmFy
IHNldElubmVySFRNTCA9IF9fd2VicGFja19yZXF1aXJlX18oMjkpO1xuXHR2YXIgc2V0VGV4dENv
bnRlbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDc3KTtcblx0XG5cdGZ1bmN0aW9uIGdldE5vZGVB
ZnRlcihwYXJlbnROb2RlLCBub2RlKSB7XG5cdCAgLy8gU3BlY2lhbCBjYXNlIGZvciB0ZXh0IGNv
bXBvbmVudHMsIHdoaWNoIHJldHVybiBbb3BlbiwgY2xvc2VdIGNvbW1lbnRzXG5cdCAgLy8gZnJv
bSBnZXRIb3N0Tm9kZS5cblx0ICBpZiAoQXJyYXkuaXNBcnJheShub2RlKSkge1xuXHQgICAgbm9k
ZSA9IG5vZGVbMV07XG5cdCAgfVxuXHQgIHJldHVybiBub2RlID8gbm9kZS5uZXh0U2libGluZyA6
IHBhcmVudE5vZGUuZmlyc3RDaGlsZDtcblx0fVxuXHRcblx0LyoqXG5cdCAqIEluc2VydHMgYGNo
aWxkTm9kZWAgYXMgYSBjaGlsZCBvZiBgcGFyZW50Tm9kZWAgYXQgdGhlIGBpbmRleGAuXG5cdCAq
XG5cdCAqIEBwYXJhbSB7RE9NRWxlbWVudH0gcGFyZW50Tm9kZSBQYXJlbnQgbm9kZSBpbiB3aGlj
aCB0byBpbnNlcnQuXG5cdCAqIEBwYXJhbSB7RE9NRWxlbWVudH0gY2hpbGROb2RlIENoaWxkIG5v
ZGUgdG8gaW5zZXJ0LlxuXHQgKiBAcGFyYW0ge251bWJlcn0gaW5kZXggSW5kZXggYXQgd2hpY2gg
dG8gaW5zZXJ0IHRoZSBjaGlsZC5cblx0ICogQGludGVybmFsXG5cdCAqL1xuXHR2YXIgaW5zZXJ0
Q2hpbGRBdCA9IGNyZWF0ZU1pY3Jvc29mdFVuc2FmZUxvY2FsRnVuY3Rpb24oZnVuY3Rpb24gKHBh
cmVudE5vZGUsIGNoaWxkTm9kZSwgcmVmZXJlbmNlTm9kZSkge1xuXHQgIC8vIFdlIHJlbHkgZXhj
bHVzaXZlbHkgb24gYGluc2VydEJlZm9yZShub2RlLCBudWxsKWAgaW5zdGVhZCBvZiBhbHNvIHVz
aW5nXG5cdCAgLy8gYGFwcGVuZENoaWxkKG5vZGUpYC4gKFVzaW5nIGB1bmRlZmluZWRgIGlzIG5v
dCBhbGxvd2VkIGJ5IGFsbCBicm93c2VycyBzb1xuXHQgIC8vIHdlIGFyZSBjYXJlZnVsIHRvIHVz
ZSBgbnVsbGAuKVxuXHQgIHBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGNoaWxkTm9kZSwgcmVmZXJl
bmNlTm9kZSk7XG5cdH0pO1xuXHRcblx0ZnVuY3Rpb24gaW5zZXJ0TGF6eVRyZWVDaGlsZEF0KHBh
cmVudE5vZGUsIGNoaWxkVHJlZSwgcmVmZXJlbmNlTm9kZSkge1xuXHQgIERPTUxhenlUcmVlLmlu
c2VydFRyZWVCZWZvcmUocGFyZW50Tm9kZSwgY2hpbGRUcmVlLCByZWZlcmVuY2VOb2RlKTtcblx0
fVxuXHRcblx0ZnVuY3Rpb24gbW92ZUNoaWxkKHBhcmVudE5vZGUsIGNoaWxkTm9kZSwgcmVmZXJl
bmNlTm9kZSkge1xuXHQgIGlmIChBcnJheS5pc0FycmF5KGNoaWxkTm9kZSkpIHtcblx0ICAgIG1v
dmVEZWxpbWl0ZWRUZXh0KHBhcmVudE5vZGUsIGNoaWxkTm9kZVswXSwgY2hpbGROb2RlWzFdLCBy
ZWZlcmVuY2VOb2RlKTtcblx0ICB9IGVsc2Uge1xuXHQgICAgaW5zZXJ0Q2hpbGRBdChwYXJlbnRO
b2RlLCBjaGlsZE5vZGUsIHJlZmVyZW5jZU5vZGUpO1xuXHQgIH1cblx0fVxuXHRcblx0ZnVuY3Rp
b24gcmVtb3ZlQ2hpbGQocGFyZW50Tm9kZSwgY2hpbGROb2RlKSB7XG5cdCAgaWYgKEFycmF5Lmlz
QXJyYXkoY2hpbGROb2RlKSkge1xuXHQgICAgdmFyIGNsb3NpbmdDb21tZW50ID0gY2hpbGROb2Rl
WzFdO1xuXHQgICAgY2hpbGROb2RlID0gY2hpbGROb2RlWzBdO1xuXHQgICAgcmVtb3ZlRGVsaW1p
dGVkVGV4dChwYXJlbnROb2RlLCBjaGlsZE5vZGUsIGNsb3NpbmdDb21tZW50KTtcblx0ICAgIHBh
cmVudE5vZGUucmVtb3ZlQ2hpbGQoY2xvc2luZ0NvbW1lbnQpO1xuXHQgIH1cblx0ICBwYXJlbnRO
b2RlLnJlbW92ZUNoaWxkKGNoaWxkTm9kZSk7XG5cdH1cblx0XG5cdGZ1bmN0aW9uIG1vdmVEZWxp
bWl0ZWRUZXh0KHBhcmVudE5vZGUsIG9wZW5pbmdDb21tZW50LCBjbG9zaW5nQ29tbWVudCwgcmVm
ZXJlbmNlTm9kZSkge1xuXHQgIHZhciBub2RlID0gb3BlbmluZ0NvbW1lbnQ7XG5cdCAgd2hpbGUg
KHRydWUpIHtcblx0ICAgIHZhciBuZXh0Tm9kZSA9IG5vZGUubmV4dFNpYmxpbmc7XG5cdCAgICBp
bnNlcnRDaGlsZEF0KHBhcmVudE5vZGUsIG5vZGUsIHJlZmVyZW5jZU5vZGUpO1xuXHQgICAgaWYg
KG5vZGUgPT09IGNsb3NpbmdDb21tZW50KSB7XG5cdCAgICAgIGJyZWFrO1xuXHQgICAgfVxuXHQg
ICAgbm9kZSA9IG5leHROb2RlO1xuXHQgIH1cblx0fVxuXHRcblx0ZnVuY3Rpb24gcmVtb3ZlRGVs
aW1pdGVkVGV4dChwYXJlbnROb2RlLCBzdGFydE5vZGUsIGNsb3NpbmdDb21tZW50KSB7XG5cdCAg
d2hpbGUgKHRydWUpIHtcblx0ICAgIHZhciBub2RlID0gc3RhcnROb2RlLm5leHRTaWJsaW5nO1xu
XHQgICAgaWYgKG5vZGUgPT09IGNsb3NpbmdDb21tZW50KSB7XG5cdCAgICAgIC8vIFRoZSBjbG9z
aW5nIGNvbW1lbnQgaXMgcmVtb3ZlZCBieSBSZWFjdE11bHRpQ2hpbGQuXG5cdCAgICAgIGJyZWFr
O1xuXHQgICAgfSBlbHNlIHtcblx0ICAgICAgcGFyZW50Tm9kZS5yZW1vdmVDaGlsZChub2RlKTtc
blx0ICAgIH1cblx0ICB9XG5cdH1cblx0XG5cdGZ1bmN0aW9uIHJlcGxhY2VEZWxpbWl0ZWRUZXh0
KG9wZW5pbmdDb21tZW50LCBjbG9zaW5nQ29tbWVudCwgc3RyaW5nVGV4dCkge1xuXHQgIHZhciBw
YXJlbnROb2RlID0gb3BlbmluZ0NvbW1lbnQucGFyZW50Tm9kZTtcblx0ICB2YXIgbm9kZUFmdGVy
Q29tbWVudCA9IG9wZW5pbmdDb21tZW50Lm5leHRTaWJsaW5nO1xuXHQgIGlmIChub2RlQWZ0ZXJD
b21tZW50ID09PSBjbG9zaW5nQ29tbWVudCkge1xuXHQgICAgLy8gVGhlcmUgYXJlIG5vIHRleHQg
bm9kZXMgYmV0d2VlbiB0aGUgb3BlbmluZyBhbmQgY2xvc2luZyBjb21tZW50czsgaW5zZXJ0XG5c
dCAgICAvLyBhIG5ldyBvbmUgaWYgc3RyaW5nVGV4dCBpc24ndCBlbXB0eS5cblx0ICAgIGlmIChz
dHJpbmdUZXh0KSB7XG5cdCAgICAgIGluc2VydENoaWxkQXQocGFyZW50Tm9kZSwgZG9jdW1lbnQu
Y3JlYXRlVGV4dE5vZGUoc3RyaW5nVGV4dCksIG5vZGVBZnRlckNvbW1lbnQpO1xuXHQgICAgfVxu
XHQgIH0gZWxzZSB7XG5cdCAgICBpZiAoc3RyaW5nVGV4dCkge1xuXHQgICAgICAvLyBTZXQgdGhl
IHRleHQgY29udGVudCBvZiB0aGUgZmlyc3Qgbm9kZSBhZnRlciB0aGUgb3BlbmluZyBjb21tZW50
LCBhbmRcblx0ICAgICAgLy8gcmVtb3ZlIGFsbCBmb2xsb3dpbmcgbm9kZXMgdXAgdW50aWwgdGhl
IGNsb3NpbmcgY29tbWVudC5cblx0ICAgICAgc2V0VGV4dENvbnRlbnQobm9kZUFmdGVyQ29tbWVu
dCwgc3RyaW5nVGV4dCk7XG5cdCAgICAgIHJlbW92ZURlbGltaXRlZFRleHQocGFyZW50Tm9kZSwg
bm9kZUFmdGVyQ29tbWVudCwgY2xvc2luZ0NvbW1lbnQpO1xuXHQgICAgfSBlbHNlIHtcblx0ICAg
ICAgcmVtb3ZlRGVsaW1pdGVkVGV4dChwYXJlbnROb2RlLCBvcGVuaW5nQ29tbWVudCwgY2xvc2lu
Z0NvbW1lbnQpO1xuXHQgICAgfVxuXHQgIH1cblx0XG5cdCAgaWYgKGZhbHNlKSB7XG5cdCAgICBS
ZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25Ib3N0T3BlcmF0aW9uKHtcblx0ICAgICAg
aW5zdGFuY2VJRDogUmVhY3RET01Db21wb25lbnRUcmVlLmdldEluc3RhbmNlRnJvbU5vZGUob3Bl
bmluZ0NvbW1lbnQpLl9kZWJ1Z0lELFxuXHQgICAgICB0eXBlOiAncmVwbGFjZSB0ZXh0Jyxcblx0
ICAgICAgcGF5bG9hZDogc3RyaW5nVGV4dFxuXHQgICAgfSk7XG5cdCAgfVxuXHR9XG5cdFxuXHR2
YXIgZGFuZ2Vyb3VzbHlSZXBsYWNlTm9kZVdpdGhNYXJrdXAgPSBEYW5nZXIuZGFuZ2Vyb3VzbHlS
ZXBsYWNlTm9kZVdpdGhNYXJrdXA7XG5cdGlmIChmYWxzZSkge1xuXHQgIGRhbmdlcm91c2x5UmVw
bGFjZU5vZGVXaXRoTWFya3VwID0gZnVuY3Rpb24gKG9sZENoaWxkLCBtYXJrdXAsIHByZXZJbnN0
YW5jZSkge1xuXHQgICAgRGFuZ2VyLmRhbmdlcm91c2x5UmVwbGFjZU5vZGVXaXRoTWFya3VwKG9s
ZENoaWxkLCBtYXJrdXApO1xuXHQgICAgaWYgKHByZXZJbnN0YW5jZS5fZGVidWdJRCAhPT0gMCkg
e1xuXHQgICAgICBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25Ib3N0T3BlcmF0aW9u
KHtcblx0ICAgICAgICBpbnN0YW5jZUlEOiBwcmV2SW5zdGFuY2UuX2RlYnVnSUQsXG5cdCAgICAg
ICAgdHlwZTogJ3JlcGxhY2Ugd2l0aCcsXG5cdCAgICAgICAgcGF5bG9hZDogbWFya3VwLnRvU3Ry
aW5nKClcblx0ICAgICAgfSk7XG5cdCAgICB9IGVsc2Uge1xuXHQgICAgICB2YXIgbmV4dEluc3Rh
bmNlID0gUmVhY3RET01Db21wb25lbnRUcmVlLmdldEluc3RhbmNlRnJvbU5vZGUobWFya3VwLm5v
ZGUpO1xuXHQgICAgICBpZiAobmV4dEluc3RhbmNlLl9kZWJ1Z0lEICE9PSAwKSB7XG5cdCAgICAg
ICAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9uSG9zdE9wZXJhdGlvbih7XG5cdCAg
ICAgICAgICBpbnN0YW5jZUlEOiBuZXh0SW5zdGFuY2UuX2RlYnVnSUQsXG5cdCAgICAgICAgICB0
eXBlOiAnbW91bnQnLFxuXHQgICAgICAgICAgcGF5bG9hZDogbWFya3VwLnRvU3RyaW5nKClcblx0
ICAgICAgICB9KTtcblx0ICAgICAgfVxuXHQgICAgfVxuXHQgIH07XG5cdH1cblx0XG5cdC8qKlxu
XHQgKiBPcGVyYXRpb25zIGZvciB1cGRhdGluZyB3aXRoIERPTSBjaGlsZHJlbi5cblx0ICovXG5c
dHZhciBET01DaGlsZHJlbk9wZXJhdGlvbnMgPSB7XG5cdCAgZGFuZ2Vyb3VzbHlSZXBsYWNlTm9k
ZVdpdGhNYXJrdXA6IGRhbmdlcm91c2x5UmVwbGFjZU5vZGVXaXRoTWFya3VwLFxuXHRcblx0ICBy
ZXBsYWNlRGVsaW1pdGVkVGV4dDogcmVwbGFjZURlbGltaXRlZFRleHQsXG5cdFxuXHQgIC8qKlxu
XHQgICAqIFVwZGF0ZXMgYSBjb21wb25lbnQncyBjaGlsZHJlbiBieSBwcm9jZXNzaW5nIGEgc2Vy
aWVzIG9mIHVwZGF0ZXMuIFRoZVxuXHQgICAqIHVwZGF0ZSBjb25maWd1cmF0aW9ucyBhcmUgZWFj
aCBleHBlY3RlZCB0byBoYXZlIGEgYHBhcmVudE5vZGVgIHByb3BlcnR5LlxuXHQgICAqXG5cdCAg
ICogQHBhcmFtIHthcnJheTxvYmplY3Q+fSB1cGRhdGVzIExpc3Qgb2YgdXBkYXRlIGNvbmZpZ3Vy
YXRpb25zLlxuXHQgICAqIEBpbnRlcm5hbFxuXHQgICAqL1xuXHQgIHByb2Nlc3NVcGRhdGVzOiBm
dW5jdGlvbiAocGFyZW50Tm9kZSwgdXBkYXRlcykge1xuXHQgICAgaWYgKGZhbHNlKSB7XG5cdCAg
ICAgIHZhciBwYXJlbnROb2RlRGVidWdJRCA9IFJlYWN0RE9NQ29tcG9uZW50VHJlZS5nZXRJbnN0
YW5jZUZyb21Ob2RlKHBhcmVudE5vZGUpLl9kZWJ1Z0lEO1xuXHQgICAgfVxuXHRcblx0ICAgIGZv
ciAodmFyIGsgPSAwOyBrIDwgdXBkYXRlcy5sZW5ndGg7IGsrKykge1xuXHQgICAgICB2YXIgdXBk
YXRlID0gdXBkYXRlc1trXTtcblx0ICAgICAgc3dpdGNoICh1cGRhdGUudHlwZSkge1xuXHQgICAg
ICAgIGNhc2UgJ0lOU0VSVF9NQVJLVVAnOlxuXHQgICAgICAgICAgaW5zZXJ0TGF6eVRyZWVDaGls
ZEF0KHBhcmVudE5vZGUsIHVwZGF0ZS5jb250ZW50LCBnZXROb2RlQWZ0ZXIocGFyZW50Tm9kZSwg
dXBkYXRlLmFmdGVyTm9kZSkpO1xuXHQgICAgICAgICAgaWYgKGZhbHNlKSB7XG5cdCAgICAgICAg
ICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vbkhvc3RPcGVyYXRpb24oe1xuXHQg
ICAgICAgICAgICAgIGluc3RhbmNlSUQ6IHBhcmVudE5vZGVEZWJ1Z0lELFxuXHQgICAgICAgICAg
ICAgIHR5cGU6ICdpbnNlcnQgY2hpbGQnLFxuXHQgICAgICAgICAgICAgIHBheWxvYWQ6IHtcblx0
ICAgICAgICAgICAgICAgIHRvSW5kZXg6IHVwZGF0ZS50b0luZGV4LFxuXHQgICAgICAgICAgICAg
ICAgY29udGVudDogdXBkYXRlLmNvbnRlbnQudG9TdHJpbmcoKVxuXHQgICAgICAgICAgICAgIH1c
blx0ICAgICAgICAgICAgfSk7XG5cdCAgICAgICAgICB9XG5cdCAgICAgICAgICBicmVhaztcblx0
ICAgICAgICBjYXNlICdNT1ZFX0VYSVNUSU5HJzpcblx0ICAgICAgICAgIG1vdmVDaGlsZChwYXJl
bnROb2RlLCB1cGRhdGUuZnJvbU5vZGUsIGdldE5vZGVBZnRlcihwYXJlbnROb2RlLCB1cGRhdGUu
YWZ0ZXJOb2RlKSk7XG5cdCAgICAgICAgICBpZiAoZmFsc2UpIHtcblx0ICAgICAgICAgICAgUmVh
Y3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9uSG9zdE9wZXJhdGlvbih7XG5cdCAgICAgICAg
ICAgICAgaW5zdGFuY2VJRDogcGFyZW50Tm9kZURlYnVnSUQsXG5cdCAgICAgICAgICAgICAgdHlw
ZTogJ21vdmUgY2hpbGQnLFxuXHQgICAgICAgICAgICAgIHBheWxvYWQ6IHsgZnJvbUluZGV4OiB1
cGRhdGUuZnJvbUluZGV4LCB0b0luZGV4OiB1cGRhdGUudG9JbmRleCB9XG5cdCAgICAgICAgICAg
IH0pO1xuXHQgICAgICAgICAgfVxuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgY2FzZSAn
U0VUX01BUktVUCc6XG5cdCAgICAgICAgICBzZXRJbm5lckhUTUwocGFyZW50Tm9kZSwgdXBkYXRl
LmNvbnRlbnQpO1xuXHQgICAgICAgICAgaWYgKGZhbHNlKSB7XG5cdCAgICAgICAgICAgIFJlYWN0
SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vbkhvc3RPcGVyYXRpb24oe1xuXHQgICAgICAgICAg
ICAgIGluc3RhbmNlSUQ6IHBhcmVudE5vZGVEZWJ1Z0lELFxuXHQgICAgICAgICAgICAgIHR5cGU6
ICdyZXBsYWNlIGNoaWxkcmVuJyxcblx0ICAgICAgICAgICAgICBwYXlsb2FkOiB1cGRhdGUuY29u
dGVudC50b1N0cmluZygpXG5cdCAgICAgICAgICAgIH0pO1xuXHQgICAgICAgICAgfVxuXHQgICAg
ICAgICAgYnJlYWs7XG5cdCAgICAgICAgY2FzZSAnVEVYVF9DT05URU5UJzpcblx0ICAgICAgICAg
IHNldFRleHRDb250ZW50KHBhcmVudE5vZGUsIHVwZGF0ZS5jb250ZW50KTtcblx0ICAgICAgICAg
IGlmIChmYWxzZSkge1xuXHQgICAgICAgICAgICBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rv
b2wub25Ib3N0T3BlcmF0aW9uKHtcblx0ICAgICAgICAgICAgICBpbnN0YW5jZUlEOiBwYXJlbnRO
b2RlRGVidWdJRCxcblx0ICAgICAgICAgICAgICB0eXBlOiAncmVwbGFjZSB0ZXh0Jyxcblx0ICAg
ICAgICAgICAgICBwYXlsb2FkOiB1cGRhdGUuY29udGVudC50b1N0cmluZygpXG5cdCAgICAgICAg
ICAgIH0pO1xuXHQgICAgICAgICAgfVxuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgY2Fz
ZSAnUkVNT1ZFX05PREUnOlxuXHQgICAgICAgICAgcmVtb3ZlQ2hpbGQocGFyZW50Tm9kZSwgdXBk
YXRlLmZyb21Ob2RlKTtcblx0ICAgICAgICAgIGlmIChmYWxzZSkge1xuXHQgICAgICAgICAgICBS
ZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25Ib3N0T3BlcmF0aW9uKHtcblx0ICAgICAg
ICAgICAgICBpbnN0YW5jZUlEOiBwYXJlbnROb2RlRGVidWdJRCxcblx0ICAgICAgICAgICAgICB0
eXBlOiAncmVtb3ZlIGNoaWxkJyxcblx0ICAgICAgICAgICAgICBwYXlsb2FkOiB7IGZyb21JbmRl
eDogdXBkYXRlLmZyb21JbmRleCB9XG5cdCAgICAgICAgICAgIH0pO1xuXHQgICAgICAgICAgfVxu
XHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgIH1cblx0ICAgIH1cblx0ICB9XG5cdH07XG5cdFxu
XHRtb2R1bGUuZXhwb3J0cyA9IERPTUNoaWxkcmVuT3BlcmF0aW9ucztcblxuLyoqKi8gfSxcbi8q
IDM1ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuXHQvKipcblx0ICog
Q29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyBy
ZXNlcnZlZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0
aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0
aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFu
dFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxl
IGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpcblx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7
XG5cdFxuXHR2YXIgRE9NTmFtZXNwYWNlcyA9IHtcblx0ICBodG1sOiAnaHR0cDovL3d3dy53My5v
cmcvMTk5OS94aHRtbCcsXG5cdCAgbWF0aG1sOiAnaHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRo
L01hdGhNTCcsXG5cdCAgc3ZnOiAnaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnXG5cdH07XG5c
dFxuXHRtb2R1bGUuZXhwb3J0cyA9IERPTU5hbWVzcGFjZXM7XG5cbi8qKiovIH0sXG4vKiAzNiAq
L1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7
XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5c
dCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMg
bGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBM
SUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFu
IGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4g
dGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqIFxuXHQg
Ki9cblx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdHZhciBfcHJvZEludmFyaWFudCA9IF9fd2Vi
cGFja19yZXF1aXJlX18oMyk7XG5cdFxuXHR2YXIgaW52YXJpYW50ID0gX193ZWJwYWNrX3JlcXVp
cmVfXygxKTtcblx0XG5cdC8qKlxuXHQgKiBJbmplY3RhYmxlIG9yZGVyaW5nIG9mIGV2ZW50IHBs
dWdpbnMuXG5cdCAqL1xuXHR2YXIgZXZlbnRQbHVnaW5PcmRlciA9IG51bGw7XG5cdFxuXHQvKipc
blx0ICogSW5qZWN0YWJsZSBtYXBwaW5nIGZyb20gbmFtZXMgdG8gZXZlbnQgcGx1Z2luIG1vZHVs
ZXMuXG5cdCAqL1xuXHR2YXIgbmFtZXNUb1BsdWdpbnMgPSB7fTtcblx0XG5cdC8qKlxuXHQgKiBS
ZWNvbXB1dGVzIHRoZSBwbHVnaW4gbGlzdCB1c2luZyB0aGUgaW5qZWN0ZWQgcGx1Z2lucyBhbmQg
cGx1Z2luIG9yZGVyaW5nLlxuXHQgKlxuXHQgKiBAcHJpdmF0ZVxuXHQgKi9cblx0ZnVuY3Rpb24g
cmVjb21wdXRlUGx1Z2luT3JkZXJpbmcoKSB7XG5cdCAgaWYgKCFldmVudFBsdWdpbk9yZGVyKSB7
XG5cdCAgICAvLyBXYWl0IHVudGlsIGFuIGBldmVudFBsdWdpbk9yZGVyYCBpcyBpbmplY3RlZC5c
blx0ICAgIHJldHVybjtcblx0ICB9XG5cdCAgZm9yICh2YXIgcGx1Z2luTmFtZSBpbiBuYW1lc1Rv
UGx1Z2lucykge1xuXHQgICAgdmFyIHBsdWdpbk1vZHVsZSA9IG5hbWVzVG9QbHVnaW5zW3BsdWdp
bk5hbWVdO1xuXHQgICAgdmFyIHBsdWdpbkluZGV4ID0gZXZlbnRQbHVnaW5PcmRlci5pbmRleE9m
KHBsdWdpbk5hbWUpO1xuXHQgICAgIShwbHVnaW5JbmRleCA+IC0xKSA/ICBmYWxzZSA/IGludmFy
aWFudChmYWxzZSwgJ0V2ZW50UGx1Z2luUmVnaXN0cnk6IENhbm5vdCBpbmplY3QgZXZlbnQgcGx1
Z2lucyB0aGF0IGRvIG5vdCBleGlzdCBpbiB0aGUgcGx1Z2luIG9yZGVyaW5nLCBgJXNgLicsIHBs
dWdpbk5hbWUpIDogX3Byb2RJbnZhcmlhbnQoJzk2JywgcGx1Z2luTmFtZSkgOiB2b2lkIDA7XG5c
dCAgICBpZiAoRXZlbnRQbHVnaW5SZWdpc3RyeS5wbHVnaW5zW3BsdWdpbkluZGV4XSkge1xuXHQg
ICAgICBjb250aW51ZTtcblx0ICAgIH1cblx0ICAgICFwbHVnaW5Nb2R1bGUuZXh0cmFjdEV2ZW50
cyA/ICBmYWxzZSA/IGludmFyaWFudChmYWxzZSwgJ0V2ZW50UGx1Z2luUmVnaXN0cnk6IEV2ZW50
IHBsdWdpbnMgbXVzdCBpbXBsZW1lbnQgYW4gYGV4dHJhY3RFdmVudHNgIG1ldGhvZCwgYnV0IGAl
c2AgZG9lcyBub3QuJywgcGx1Z2luTmFtZSkgOiBfcHJvZEludmFyaWFudCgnOTcnLCBwbHVnaW5O
YW1lKSA6IHZvaWQgMDtcblx0ICAgIEV2ZW50UGx1Z2luUmVnaXN0cnkucGx1Z2luc1twbHVnaW5J
bmRleF0gPSBwbHVnaW5Nb2R1bGU7XG5cdCAgICB2YXIgcHVibGlzaGVkRXZlbnRzID0gcGx1Z2lu
TW9kdWxlLmV2ZW50VHlwZXM7XG5cdCAgICBmb3IgKHZhciBldmVudE5hbWUgaW4gcHVibGlzaGVk
RXZlbnRzKSB7XG5cdCAgICAgICFwdWJsaXNoRXZlbnRGb3JQbHVnaW4ocHVibGlzaGVkRXZlbnRz
W2V2ZW50TmFtZV0sIHBsdWdpbk1vZHVsZSwgZXZlbnROYW1lKSA/ICBmYWxzZSA/IGludmFyaWFu
dChmYWxzZSwgJ0V2ZW50UGx1Z2luUmVnaXN0cnk6IEZhaWxlZCB0byBwdWJsaXNoIGV2ZW50IGAl
c2AgZm9yIHBsdWdpbiBgJXNgLicsIGV2ZW50TmFtZSwgcGx1Z2luTmFtZSkgOiBfcHJvZEludmFy
aWFudCgnOTgnLCBldmVudE5hbWUsIHBsdWdpbk5hbWUpIDogdm9pZCAwO1xuXHQgICAgfVxuXHQg
IH1cblx0fVxuXHRcblx0LyoqXG5cdCAqIFB1Ymxpc2hlcyBhbiBldmVudCBzbyB0aGF0IGl0IGNh
biBiZSBkaXNwYXRjaGVkIGJ5IHRoZSBzdXBwbGllZCBwbHVnaW4uXG5cdCAqXG5cdCAqIEBwYXJh
bSB7b2JqZWN0fSBkaXNwYXRjaENvbmZpZyBEaXNwYXRjaCBjb25maWd1cmF0aW9uIGZvciB0aGUg
ZXZlbnQuXG5cdCAqIEBwYXJhbSB7b2JqZWN0fSBQbHVnaW5Nb2R1bGUgUGx1Z2luIHB1Ymxpc2hp
bmcgdGhlIGV2ZW50LlxuXHQgKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmIHRoZSBldmVudCB3
YXMgc3VjY2Vzc2Z1bGx5IHB1Ymxpc2hlZC5cblx0ICogQHByaXZhdGVcblx0ICovXG5cdGZ1bmN0
aW9uIHB1Ymxpc2hFdmVudEZvclBsdWdpbihkaXNwYXRjaENvbmZpZywgcGx1Z2luTW9kdWxlLCBl
dmVudE5hbWUpIHtcblx0ICAhIUV2ZW50UGx1Z2luUmVnaXN0cnkuZXZlbnROYW1lRGlzcGF0Y2hD
b25maWdzLmhhc093blByb3BlcnR5KGV2ZW50TmFtZSkgPyAgZmFsc2UgPyBpbnZhcmlhbnQoZmFs
c2UsICdFdmVudFBsdWdpbkh1YjogTW9yZSB0aGFuIG9uZSBwbHVnaW4gYXR0ZW1wdGVkIHRvIHB1
Ymxpc2ggdGhlIHNhbWUgZXZlbnQgbmFtZSwgYCVzYC4nLCBldmVudE5hbWUpIDogX3Byb2RJbnZh
cmlhbnQoJzk5JywgZXZlbnROYW1lKSA6IHZvaWQgMDtcblx0ICBFdmVudFBsdWdpblJlZ2lzdHJ5
LmV2ZW50TmFtZURpc3BhdGNoQ29uZmlnc1tldmVudE5hbWVdID0gZGlzcGF0Y2hDb25maWc7XG5c
dFxuXHQgIHZhciBwaGFzZWRSZWdpc3RyYXRpb25OYW1lcyA9IGRpc3BhdGNoQ29uZmlnLnBoYXNl
ZFJlZ2lzdHJhdGlvbk5hbWVzO1xuXHQgIGlmIChwaGFzZWRSZWdpc3RyYXRpb25OYW1lcykge1xu
XHQgICAgZm9yICh2YXIgcGhhc2VOYW1lIGluIHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzKSB7XG5c
dCAgICAgIGlmIChwaGFzZWRSZWdpc3RyYXRpb25OYW1lcy5oYXNPd25Qcm9wZXJ0eShwaGFzZU5h
bWUpKSB7XG5cdCAgICAgICAgdmFyIHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWUgPSBwaGFzZWRSZWdp
c3RyYXRpb25OYW1lc1twaGFzZU5hbWVdO1xuXHQgICAgICAgIHB1Ymxpc2hSZWdpc3RyYXRpb25O
YW1lKHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWUsIHBsdWdpbk1vZHVsZSwgZXZlbnROYW1lKTtcblx0
ICAgICAgfVxuXHQgICAgfVxuXHQgICAgcmV0dXJuIHRydWU7XG5cdCAgfSBlbHNlIGlmIChkaXNw
YXRjaENvbmZpZy5yZWdpc3RyYXRpb25OYW1lKSB7XG5cdCAgICBwdWJsaXNoUmVnaXN0cmF0aW9u
TmFtZShkaXNwYXRjaENvbmZpZy5yZWdpc3RyYXRpb25OYW1lLCBwbHVnaW5Nb2R1bGUsIGV2ZW50
TmFtZSk7XG5cdCAgICByZXR1cm4gdHJ1ZTtcblx0ICB9XG5cdCAgcmV0dXJuIGZhbHNlO1xuXHR9
XG5cdFxuXHQvKipcblx0ICogUHVibGlzaGVzIGEgcmVnaXN0cmF0aW9uIG5hbWUgdGhhdCBpcyB1
c2VkIHRvIGlkZW50aWZ5IGRpc3BhdGNoZWQgZXZlbnRzIGFuZFxuXHQgKiBjYW4gYmUgdXNlZCB3
aXRoIGBFdmVudFBsdWdpbkh1Yi5wdXRMaXN0ZW5lcmAgdG8gcmVnaXN0ZXIgbGlzdGVuZXJzLlxu
XHQgKlxuXHQgKiBAcGFyYW0ge3N0cmluZ30gcmVnaXN0cmF0aW9uTmFtZSBSZWdpc3RyYXRpb24g
bmFtZSB0byBhZGQuXG5cdCAqIEBwYXJhbSB7b2JqZWN0fSBQbHVnaW5Nb2R1bGUgUGx1Z2luIHB1
Ymxpc2hpbmcgdGhlIGV2ZW50LlxuXHQgKiBAcHJpdmF0ZVxuXHQgKi9cblx0ZnVuY3Rpb24gcHVi
bGlzaFJlZ2lzdHJhdGlvbk5hbWUocmVnaXN0cmF0aW9uTmFtZSwgcGx1Z2luTW9kdWxlLCBldmVu
dE5hbWUpIHtcblx0ICAhIUV2ZW50UGx1Z2luUmVnaXN0cnkucmVnaXN0cmF0aW9uTmFtZU1vZHVs
ZXNbcmVnaXN0cmF0aW9uTmFtZV0gPyAgZmFsc2UgPyBpbnZhcmlhbnQoZmFsc2UsICdFdmVudFBs
dWdpbkh1YjogTW9yZSB0aGFuIG9uZSBwbHVnaW4gYXR0ZW1wdGVkIHRvIHB1Ymxpc2ggdGhlIHNh
bWUgcmVnaXN0cmF0aW9uIG5hbWUsIGAlc2AuJywgcmVnaXN0cmF0aW9uTmFtZSkgOiBfcHJvZElu
dmFyaWFudCgnMTAwJywgcmVnaXN0cmF0aW9uTmFtZSkgOiB2b2lkIDA7XG5cdCAgRXZlbnRQbHVn
aW5SZWdpc3RyeS5yZWdpc3RyYXRpb25OYW1lTW9kdWxlc1tyZWdpc3RyYXRpb25OYW1lXSA9IHBs
dWdpbk1vZHVsZTtcblx0ICBFdmVudFBsdWdpblJlZ2lzdHJ5LnJlZ2lzdHJhdGlvbk5hbWVEZXBl
bmRlbmNpZXNbcmVnaXN0cmF0aW9uTmFtZV0gPSBwbHVnaW5Nb2R1bGUuZXZlbnRUeXBlc1tldmVu
dE5hbWVdLmRlcGVuZGVuY2llcztcblx0XG5cdCAgaWYgKGZhbHNlKSB7XG5cdCAgICB2YXIgbG93
ZXJDYXNlZE5hbWUgPSByZWdpc3RyYXRpb25OYW1lLnRvTG93ZXJDYXNlKCk7XG5cdCAgICBFdmVu
dFBsdWdpblJlZ2lzdHJ5LnBvc3NpYmxlUmVnaXN0cmF0aW9uTmFtZXNbbG93ZXJDYXNlZE5hbWVd
ID0gcmVnaXN0cmF0aW9uTmFtZTtcblx0XG5cdCAgICBpZiAocmVnaXN0cmF0aW9uTmFtZSA9PT0g
J29uRG91YmxlQ2xpY2snKSB7XG5cdCAgICAgIEV2ZW50UGx1Z2luUmVnaXN0cnkucG9zc2libGVS
ZWdpc3RyYXRpb25OYW1lcy5vbmRibGNsaWNrID0gcmVnaXN0cmF0aW9uTmFtZTtcblx0ICAgIH1c
blx0ICB9XG5cdH1cblx0XG5cdC8qKlxuXHQgKiBSZWdpc3RlcnMgcGx1Z2lucyBzbyB0aGF0IHRo
ZXkgY2FuIGV4dHJhY3QgYW5kIGRpc3BhdGNoIGV2ZW50cy5cblx0ICpcblx0ICogQHNlZSB7RXZl
bnRQbHVnaW5IdWJ9XG5cdCAqL1xuXHR2YXIgRXZlbnRQbHVnaW5SZWdpc3RyeSA9IHtcblx0ICAv
Kipcblx0ICAgKiBPcmRlcmVkIGxpc3Qgb2YgaW5qZWN0ZWQgcGx1Z2lucy5cblx0ICAgKi9cblx0
ICBwbHVnaW5zOiBbXSxcblx0XG5cdCAgLyoqXG5cdCAgICogTWFwcGluZyBmcm9tIGV2ZW50IG5h
bWUgdG8gZGlzcGF0Y2ggY29uZmlnXG5cdCAgICovXG5cdCAgZXZlbnROYW1lRGlzcGF0Y2hDb25m
aWdzOiB7fSxcblx0XG5cdCAgLyoqXG5cdCAgICogTWFwcGluZyBmcm9tIHJlZ2lzdHJhdGlvbiBu
YW1lIHRvIHBsdWdpbiBtb2R1bGVcblx0ICAgKi9cblx0ICByZWdpc3RyYXRpb25OYW1lTW9kdWxl
czoge30sXG5cdFxuXHQgIC8qKlxuXHQgICAqIE1hcHBpbmcgZnJvbSByZWdpc3RyYXRpb24gbmFt
ZSB0byBldmVudCBuYW1lXG5cdCAgICovXG5cdCAgcmVnaXN0cmF0aW9uTmFtZURlcGVuZGVuY2ll
czoge30sXG5cdFxuXHQgIC8qKlxuXHQgICAqIE1hcHBpbmcgZnJvbSBsb3dlcmNhc2UgcmVnaXN0
cmF0aW9uIG5hbWVzIHRvIHRoZSBwcm9wZXJseSBjYXNlZCB2ZXJzaW9uLFxuXHQgICAqIHVzZWQg
dG8gd2FybiBpbiB0aGUgY2FzZSBvZiBtaXNzaW5nIGV2ZW50IGhhbmRsZXJzLiBBdmFpbGFibGVc
blx0ICAgKiBvbmx5IGluIF9fREVWX18uXG5cdCAgICogQHR5cGUge09iamVjdH1cblx0ICAgKi9c
blx0ICBwb3NzaWJsZVJlZ2lzdHJhdGlvbk5hbWVzOiAgZmFsc2UgPyB7fSA6IG51bGwsXG5cdCAg
Ly8gVHJ1c3QgdGhlIGRldmVsb3BlciB0byBvbmx5IHVzZSBwb3NzaWJsZVJlZ2lzdHJhdGlvbk5h
bWVzIGluIF9fREVWX19cblx0XG5cdCAgLyoqXG5cdCAgICogSW5qZWN0cyBhbiBvcmRlcmluZyBv
ZiBwbHVnaW5zIChieSBwbHVnaW4gbmFtZSkuIFRoaXMgYWxsb3dzIHRoZSBvcmRlcmluZ1xuXHQg
ICAqIHRvIGJlIGRlY291cGxlZCBmcm9tIGluamVjdGlvbiBvZiB0aGUgYWN0dWFsIHBsdWdpbnMg
c28gdGhhdCBvcmRlcmluZyBpc1xuXHQgICAqIGFsd2F5cyBkZXRlcm1pbmlzdGljIHJlZ2FyZGxl
c3Mgb2YgcGFja2FnaW5nLCBvbi10aGUtZmx5IGluamVjdGlvbiwgZXRjLlxuXHQgICAqXG5cdCAg
ICogQHBhcmFtIHthcnJheX0gSW5qZWN0ZWRFdmVudFBsdWdpbk9yZGVyXG5cdCAgICogQGludGVy
bmFsXG5cdCAgICogQHNlZSB7RXZlbnRQbHVnaW5IdWIuaW5qZWN0aW9uLmluamVjdEV2ZW50UGx1
Z2luT3JkZXJ9XG5cdCAgICovXG5cdCAgaW5qZWN0RXZlbnRQbHVnaW5PcmRlcjogZnVuY3Rpb24g
KGluamVjdGVkRXZlbnRQbHVnaW5PcmRlcikge1xuXHQgICAgISFldmVudFBsdWdpbk9yZGVyID8g
IGZhbHNlID8gaW52YXJpYW50KGZhbHNlLCAnRXZlbnRQbHVnaW5SZWdpc3RyeTogQ2Fubm90IGlu
amVjdCBldmVudCBwbHVnaW4gb3JkZXJpbmcgbW9yZSB0aGFuIG9uY2UuIFlvdSBhcmUgbGlrZWx5
IHRyeWluZyB0byBsb2FkIG1vcmUgdGhhbiBvbmUgY29weSBvZiBSZWFjdC4nKSA6IF9wcm9kSW52
YXJpYW50KCcxMDEnKSA6IHZvaWQgMDtcblx0ICAgIC8vIENsb25lIHRoZSBvcmRlcmluZyBzbyBp
dCBjYW5ub3QgYmUgZHluYW1pY2FsbHkgbXV0YXRlZC5cblx0ICAgIGV2ZW50UGx1Z2luT3JkZXIg
PSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChpbmplY3RlZEV2ZW50UGx1Z2luT3JkZXIpO1xu
XHQgICAgcmVjb21wdXRlUGx1Z2luT3JkZXJpbmcoKTtcblx0ICB9LFxuXHRcblx0ICAvKipcblx0
ICAgKiBJbmplY3RzIHBsdWdpbnMgdG8gYmUgdXNlZCBieSBgRXZlbnRQbHVnaW5IdWJgLiBUaGUg
cGx1Z2luIG5hbWVzIG11c3QgYmVcblx0ICAgKiBpbiB0aGUgb3JkZXJpbmcgaW5qZWN0ZWQgYnkg
YGluamVjdEV2ZW50UGx1Z2luT3JkZXJgLlxuXHQgICAqXG5cdCAgICogUGx1Z2lucyBjYW4gYmUg
aW5qZWN0ZWQgYXMgcGFydCBvZiBwYWdlIGluaXRpYWxpemF0aW9uIG9yIG9uLXRoZS1mbHkuXG5c
dCAgICpcblx0ICAgKiBAcGFyYW0ge29iamVjdH0gaW5qZWN0ZWROYW1lc1RvUGx1Z2lucyBNYXAg
ZnJvbSBuYW1lcyB0byBwbHVnaW4gbW9kdWxlcy5cblx0ICAgKiBAaW50ZXJuYWxcblx0ICAgKiBA
c2VlIHtFdmVudFBsdWdpbkh1Yi5pbmplY3Rpb24uaW5qZWN0RXZlbnRQbHVnaW5zQnlOYW1lfVxu
XHQgICAqL1xuXHQgIGluamVjdEV2ZW50UGx1Z2luc0J5TmFtZTogZnVuY3Rpb24gKGluamVjdGVk
TmFtZXNUb1BsdWdpbnMpIHtcblx0ICAgIHZhciBpc09yZGVyaW5nRGlydHkgPSBmYWxzZTtcblx0
ICAgIGZvciAodmFyIHBsdWdpbk5hbWUgaW4gaW5qZWN0ZWROYW1lc1RvUGx1Z2lucykge1xuXHQg
ICAgICBpZiAoIWluamVjdGVkTmFtZXNUb1BsdWdpbnMuaGFzT3duUHJvcGVydHkocGx1Z2luTmFt
ZSkpIHtcblx0ICAgICAgICBjb250aW51ZTtcblx0ICAgICAgfVxuXHQgICAgICB2YXIgcGx1Z2lu
TW9kdWxlID0gaW5qZWN0ZWROYW1lc1RvUGx1Z2luc1twbHVnaW5OYW1lXTtcblx0ICAgICAgaWYg
KCFuYW1lc1RvUGx1Z2lucy5oYXNPd25Qcm9wZXJ0eShwbHVnaW5OYW1lKSB8fCBuYW1lc1RvUGx1
Z2luc1twbHVnaW5OYW1lXSAhPT0gcGx1Z2luTW9kdWxlKSB7XG5cdCAgICAgICAgISFuYW1lc1Rv
UGx1Z2luc1twbHVnaW5OYW1lXSA/ICBmYWxzZSA/IGludmFyaWFudChmYWxzZSwgJ0V2ZW50UGx1
Z2luUmVnaXN0cnk6IENhbm5vdCBpbmplY3QgdHdvIGRpZmZlcmVudCBldmVudCBwbHVnaW5zIHVz
aW5nIHRoZSBzYW1lIG5hbWUsIGAlc2AuJywgcGx1Z2luTmFtZSkgOiBfcHJvZEludmFyaWFudCgn
MTAyJywgcGx1Z2luTmFtZSkgOiB2b2lkIDA7XG5cdCAgICAgICAgbmFtZXNUb1BsdWdpbnNbcGx1
Z2luTmFtZV0gPSBwbHVnaW5Nb2R1bGU7XG5cdCAgICAgICAgaXNPcmRlcmluZ0RpcnR5ID0gdHJ1
ZTtcblx0ICAgICAgfVxuXHQgICAgfVxuXHQgICAgaWYgKGlzT3JkZXJpbmdEaXJ0eSkge1xuXHQg
ICAgICByZWNvbXB1dGVQbHVnaW5PcmRlcmluZygpO1xuXHQgICAgfVxuXHQgIH0sXG5cdFxuXHQg
IC8qKlxuXHQgICAqIExvb2tzIHVwIHRoZSBwbHVnaW4gZm9yIHRoZSBzdXBwbGllZCBldmVudC5c
blx0ICAgKlxuXHQgICAqIEBwYXJhbSB7b2JqZWN0fSBldmVudCBBIHN5bnRoZXRpYyBldmVudC5c
blx0ICAgKiBAcmV0dXJuIHs/b2JqZWN0fSBUaGUgcGx1Z2luIHRoYXQgY3JlYXRlZCB0aGUgc3Vw
cGxpZWQgZXZlbnQuXG5cdCAgICogQGludGVybmFsXG5cdCAgICovXG5cdCAgZ2V0UGx1Z2luTW9k
dWxlRm9yRXZlbnQ6IGZ1bmN0aW9uIChldmVudCkge1xuXHQgICAgdmFyIGRpc3BhdGNoQ29uZmln
ID0gZXZlbnQuZGlzcGF0Y2hDb25maWc7XG5cdCAgICBpZiAoZGlzcGF0Y2hDb25maWcucmVnaXN0
cmF0aW9uTmFtZSkge1xuXHQgICAgICByZXR1cm4gRXZlbnRQbHVnaW5SZWdpc3RyeS5yZWdpc3Ry
YXRpb25OYW1lTW9kdWxlc1tkaXNwYXRjaENvbmZpZy5yZWdpc3RyYXRpb25OYW1lXSB8fCBudWxs
O1xuXHQgICAgfVxuXHQgICAgaWYgKGRpc3BhdGNoQ29uZmlnLnBoYXNlZFJlZ2lzdHJhdGlvbk5h
bWVzICE9PSB1bmRlZmluZWQpIHtcblx0ICAgICAgLy8gcHVsbGluZyBwaGFzZWRSZWdpc3RyYXRp
b25OYW1lcyBvdXQgb2YgZGlzcGF0Y2hDb25maWcgaGVscHMgRmxvdyBzZWVcblx0ICAgICAgLy8g
dGhhdCBpdCBpcyBub3QgdW5kZWZpbmVkLlxuXHQgICAgICB2YXIgcGhhc2VkUmVnaXN0cmF0aW9u
TmFtZXMgPSBkaXNwYXRjaENvbmZpZy5waGFzZWRSZWdpc3RyYXRpb25OYW1lcztcblx0XG5cdCAg
ICAgIGZvciAodmFyIHBoYXNlIGluIHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzKSB7XG5cdCAgICAg
ICAgaWYgKCFwaGFzZWRSZWdpc3RyYXRpb25OYW1lcy5oYXNPd25Qcm9wZXJ0eShwaGFzZSkpIHtc
blx0ICAgICAgICAgIGNvbnRpbnVlO1xuXHQgICAgICAgIH1cblx0ICAgICAgICB2YXIgcGx1Z2lu
TW9kdWxlID0gRXZlbnRQbHVnaW5SZWdpc3RyeS5yZWdpc3RyYXRpb25OYW1lTW9kdWxlc1twaGFz
ZWRSZWdpc3RyYXRpb25OYW1lc1twaGFzZV1dO1xuXHQgICAgICAgIGlmIChwbHVnaW5Nb2R1bGUp
IHtcblx0ICAgICAgICAgIHJldHVybiBwbHVnaW5Nb2R1bGU7XG5cdCAgICAgICAgfVxuXHQgICAg
ICB9XG5cdCAgICB9XG5cdCAgICByZXR1cm4gbnVsbDtcblx0ICB9LFxuXHRcblx0ICAvKipcblx0
ICAgKiBFeHBvc2VkIGZvciB1bml0IHRlc3RpbmcuXG5cdCAgICogQHByaXZhdGVcblx0ICAgKi9c
blx0ICBfcmVzZXRFdmVudFBsdWdpbnM6IGZ1bmN0aW9uICgpIHtcblx0ICAgIGV2ZW50UGx1Z2lu
T3JkZXIgPSBudWxsO1xuXHQgICAgZm9yICh2YXIgcGx1Z2luTmFtZSBpbiBuYW1lc1RvUGx1Z2lu
cykge1xuXHQgICAgICBpZiAobmFtZXNUb1BsdWdpbnMuaGFzT3duUHJvcGVydHkocGx1Z2luTmFt
ZSkpIHtcblx0ICAgICAgICBkZWxldGUgbmFtZXNUb1BsdWdpbnNbcGx1Z2luTmFtZV07XG5cdCAg
ICAgIH1cblx0ICAgIH1cblx0ICAgIEV2ZW50UGx1Z2luUmVnaXN0cnkucGx1Z2lucy5sZW5ndGgg
PSAwO1xuXHRcblx0ICAgIHZhciBldmVudE5hbWVEaXNwYXRjaENvbmZpZ3MgPSBFdmVudFBsdWdp
blJlZ2lzdHJ5LmV2ZW50TmFtZURpc3BhdGNoQ29uZmlncztcblx0ICAgIGZvciAodmFyIGV2ZW50
TmFtZSBpbiBldmVudE5hbWVEaXNwYXRjaENvbmZpZ3MpIHtcblx0ICAgICAgaWYgKGV2ZW50TmFt
ZURpc3BhdGNoQ29uZmlncy5oYXNPd25Qcm9wZXJ0eShldmVudE5hbWUpKSB7XG5cdCAgICAgICAg
ZGVsZXRlIGV2ZW50TmFtZURpc3BhdGNoQ29uZmlnc1tldmVudE5hbWVdO1xuXHQgICAgICB9XG5c
dCAgICB9XG5cdFxuXHQgICAgdmFyIHJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVzID0gRXZlbnRQbHVn
aW5SZWdpc3RyeS5yZWdpc3RyYXRpb25OYW1lTW9kdWxlcztcblx0ICAgIGZvciAodmFyIHJlZ2lz
dHJhdGlvbk5hbWUgaW4gcmVnaXN0cmF0aW9uTmFtZU1vZHVsZXMpIHtcblx0ICAgICAgaWYgKHJl
Z2lzdHJhdGlvbk5hbWVNb2R1bGVzLmhhc093blByb3BlcnR5KHJlZ2lzdHJhdGlvbk5hbWUpKSB7
XG5cdCAgICAgICAgZGVsZXRlIHJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVzW3JlZ2lzdHJhdGlvbk5h
bWVdO1xuXHQgICAgICB9XG5cdCAgICB9XG5cdFxuXHQgICAgaWYgKGZhbHNlKSB7XG5cdCAgICAg
IHZhciBwb3NzaWJsZVJlZ2lzdHJhdGlvbk5hbWVzID0gRXZlbnRQbHVnaW5SZWdpc3RyeS5wb3Nz
aWJsZVJlZ2lzdHJhdGlvbk5hbWVzO1xuXHQgICAgICBmb3IgKHZhciBsb3dlckNhc2VkTmFtZSBp
biBwb3NzaWJsZVJlZ2lzdHJhdGlvbk5hbWVzKSB7XG5cdCAgICAgICAgaWYgKHBvc3NpYmxlUmVn
aXN0cmF0aW9uTmFtZXMuaGFzT3duUHJvcGVydHkobG93ZXJDYXNlZE5hbWUpKSB7XG5cdCAgICAg
ICAgICBkZWxldGUgcG9zc2libGVSZWdpc3RyYXRpb25OYW1lc1tsb3dlckNhc2VkTmFtZV07XG5c
dCAgICAgICAgfVxuXHQgICAgICB9XG5cdCAgICB9XG5cdCAgfVxuXHR9O1xuXHRcblx0bW9kdWxl
LmV4cG9ydHMgPSBFdmVudFBsdWdpblJlZ2lzdHJ5O1xuXG4vKioqLyB9LFxuLyogMzcgKi9cbi8q
KiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5c
dC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBB
bGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vu
c2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5T
RSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRp
dGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQ
QVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKi9cblx0XG5cdCd1
c2Ugc3RyaWN0Jztcblx0XG5cdHZhciBfcHJvZEludmFyaWFudCA9IF9fd2VicGFja19yZXF1aXJl
X18oMyk7XG5cdFxuXHR2YXIgUmVhY3RFcnJvclV0aWxzID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0
MSk7XG5cdFxuXHR2YXIgaW52YXJpYW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxKTtcblx0dmFy
IHdhcm5pbmcgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIpO1xuXHRcblx0LyoqXG5cdCAqIEluamVj
dGVkIGRlcGVuZGVuY2llczpcblx0ICovXG5cdFxuXHQvKipcblx0ICogLSBgQ29tcG9uZW50VHJl
ZWA6IFtyZXF1aXJlZF0gTW9kdWxlIHRoYXQgY2FuIGNvbnZlcnQgYmV0d2VlbiBSZWFjdCBpbnN0
YW5jZXNcblx0ICogICBhbmQgYWN0dWFsIG5vZGUgcmVmZXJlbmNlcy5cblx0ICovXG5cdHZhciBD
b21wb25lbnRUcmVlO1xuXHR2YXIgVHJlZVRyYXZlcnNhbDtcblx0dmFyIGluamVjdGlvbiA9IHtc
blx0ICBpbmplY3RDb21wb25lbnRUcmVlOiBmdW5jdGlvbiAoSW5qZWN0ZWQpIHtcblx0ICAgIENv
bXBvbmVudFRyZWUgPSBJbmplY3RlZDtcblx0ICAgIGlmIChmYWxzZSkge1xuXHQgICAgICBwcm9j
ZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhJbmplY3RlZCAmJiBJ
bmplY3RlZC5nZXROb2RlRnJvbUluc3RhbmNlICYmIEluamVjdGVkLmdldEluc3RhbmNlRnJvbU5v
ZGUsICdFdmVudFBsdWdpblV0aWxzLmluamVjdGlvbi5pbmplY3RDb21wb25lbnRUcmVlKC4uLik6
IEluamVjdGVkICcgKyAnbW9kdWxlIGlzIG1pc3NpbmcgZ2V0Tm9kZUZyb21JbnN0YW5jZSBvciBn
ZXRJbnN0YW5jZUZyb21Ob2RlLicpIDogdm9pZCAwO1xuXHQgICAgfVxuXHQgIH0sXG5cdCAgaW5q
ZWN0VHJlZVRyYXZlcnNhbDogZnVuY3Rpb24gKEluamVjdGVkKSB7XG5cdCAgICBUcmVlVHJhdmVy
c2FsID0gSW5qZWN0ZWQ7XG5cdCAgICBpZiAoZmFsc2UpIHtcblx0ICAgICAgcHJvY2Vzcy5lbnYu
Tk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoSW5qZWN0ZWQgJiYgSW5qZWN0ZWQu
aXNBbmNlc3RvciAmJiBJbmplY3RlZC5nZXRMb3dlc3RDb21tb25BbmNlc3RvciwgJ0V2ZW50UGx1
Z2luVXRpbHMuaW5qZWN0aW9uLmluamVjdFRyZWVUcmF2ZXJzYWwoLi4uKTogSW5qZWN0ZWQgJyAr
ICdtb2R1bGUgaXMgbWlzc2luZyBpc0FuY2VzdG9yIG9yIGdldExvd2VzdENvbW1vbkFuY2VzdG9y
LicpIDogdm9pZCAwO1xuXHQgICAgfVxuXHQgIH1cblx0fTtcblx0XG5cdGZ1bmN0aW9uIGlzRW5k
aXNoKHRvcExldmVsVHlwZSkge1xuXHQgIHJldHVybiB0b3BMZXZlbFR5cGUgPT09ICd0b3BNb3Vz
ZVVwJyB8fCB0b3BMZXZlbFR5cGUgPT09ICd0b3BUb3VjaEVuZCcgfHwgdG9wTGV2ZWxUeXBlID09
PSAndG9wVG91Y2hDYW5jZWwnO1xuXHR9XG5cdFxuXHRmdW5jdGlvbiBpc01vdmVpc2godG9wTGV2
ZWxUeXBlKSB7XG5cdCAgcmV0dXJuIHRvcExldmVsVHlwZSA9PT0gJ3RvcE1vdXNlTW92ZScgfHwg
dG9wTGV2ZWxUeXBlID09PSAndG9wVG91Y2hNb3ZlJztcblx0fVxuXHRmdW5jdGlvbiBpc1N0YXJ0
aXNoKHRvcExldmVsVHlwZSkge1xuXHQgIHJldHVybiB0b3BMZXZlbFR5cGUgPT09ICd0b3BNb3Vz
ZURvd24nIHx8IHRvcExldmVsVHlwZSA9PT0gJ3RvcFRvdWNoU3RhcnQnO1xuXHR9XG5cdFxuXHR2
YXIgdmFsaWRhdGVFdmVudERpc3BhdGNoZXM7XG5cdGlmIChmYWxzZSkge1xuXHQgIHZhbGlkYXRl
RXZlbnREaXNwYXRjaGVzID0gZnVuY3Rpb24gKGV2ZW50KSB7XG5cdCAgICB2YXIgZGlzcGF0Y2hM
aXN0ZW5lcnMgPSBldmVudC5fZGlzcGF0Y2hMaXN0ZW5lcnM7XG5cdCAgICB2YXIgZGlzcGF0Y2hJ
bnN0YW5jZXMgPSBldmVudC5fZGlzcGF0Y2hJbnN0YW5jZXM7XG5cdFxuXHQgICAgdmFyIGxpc3Rl
bmVyc0lzQXJyID0gQXJyYXkuaXNBcnJheShkaXNwYXRjaExpc3RlbmVycyk7XG5cdCAgICB2YXIg
bGlzdGVuZXJzTGVuID0gbGlzdGVuZXJzSXNBcnIgPyBkaXNwYXRjaExpc3RlbmVycy5sZW5ndGgg
OiBkaXNwYXRjaExpc3RlbmVycyA/IDEgOiAwO1xuXHRcblx0ICAgIHZhciBpbnN0YW5jZXNJc0Fy
ciA9IEFycmF5LmlzQXJyYXkoZGlzcGF0Y2hJbnN0YW5jZXMpO1xuXHQgICAgdmFyIGluc3RhbmNl
c0xlbiA9IGluc3RhbmNlc0lzQXJyID8gZGlzcGF0Y2hJbnN0YW5jZXMubGVuZ3RoIDogZGlzcGF0
Y2hJbnN0YW5jZXMgPyAxIDogMDtcblx0XG5cdCAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0g
J3Byb2R1Y3Rpb24nID8gd2FybmluZyhpbnN0YW5jZXNJc0FyciA9PT0gbGlzdGVuZXJzSXNBcnIg
JiYgaW5zdGFuY2VzTGVuID09PSBsaXN0ZW5lcnNMZW4sICdFdmVudFBsdWdpblV0aWxzOiBJbnZh
bGlkIGBldmVudGAuJykgOiB2b2lkIDA7XG5cdCAgfTtcblx0fVxuXHRcblx0LyoqXG5cdCAqIERp
c3BhdGNoIHRoZSBldmVudCB0byB0aGUgbGlzdGVuZXIuXG5cdCAqIEBwYXJhbSB7U3ludGhldGlj
RXZlbnR9IGV2ZW50IFN5bnRoZXRpY0V2ZW50IHRvIGhhbmRsZVxuXHQgKiBAcGFyYW0ge2Jvb2xl
YW59IHNpbXVsYXRlZCBJZiB0aGUgZXZlbnQgaXMgc2ltdWxhdGVkIChjaGFuZ2VzIGV4biBiZWhh
dmlvcilcblx0ICogQHBhcmFtIHtmdW5jdGlvbn0gbGlzdGVuZXIgQXBwbGljYXRpb24tbGV2ZWwg
Y2FsbGJhY2tcblx0ICogQHBhcmFtIHsqfSBpbnN0IEludGVybmFsIGNvbXBvbmVudCBpbnN0YW5j
ZVxuXHQgKi9cblx0ZnVuY3Rpb24gZXhlY3V0ZURpc3BhdGNoKGV2ZW50LCBzaW11bGF0ZWQsIGxp
c3RlbmVyLCBpbnN0KSB7XG5cdCAgdmFyIHR5cGUgPSBldmVudC50eXBlIHx8ICd1bmtub3duLWV2
ZW50Jztcblx0ICBldmVudC5jdXJyZW50VGFyZ2V0ID0gRXZlbnRQbHVnaW5VdGlscy5nZXROb2Rl
RnJvbUluc3RhbmNlKGluc3QpO1xuXHQgIGlmIChzaW11bGF0ZWQpIHtcblx0ICAgIFJlYWN0RXJy
b3JVdGlscy5pbnZva2VHdWFyZGVkQ2FsbGJhY2tXaXRoQ2F0Y2godHlwZSwgbGlzdGVuZXIsIGV2
ZW50KTtcblx0ICB9IGVsc2Uge1xuXHQgICAgUmVhY3RFcnJvclV0aWxzLmludm9rZUd1YXJkZWRD
YWxsYmFjayh0eXBlLCBsaXN0ZW5lciwgZXZlbnQpO1xuXHQgIH1cblx0ICBldmVudC5jdXJyZW50
VGFyZ2V0ID0gbnVsbDtcblx0fVxuXHRcblx0LyoqXG5cdCAqIFN0YW5kYXJkL3NpbXBsZSBpdGVy
YXRpb24gdGhyb3VnaCBhbiBldmVudCdzIGNvbGxlY3RlZCBkaXNwYXRjaGVzLlxuXHQgKi9cblx0
ZnVuY3Rpb24gZXhlY3V0ZURpc3BhdGNoZXNJbk9yZGVyKGV2ZW50LCBzaW11bGF0ZWQpIHtcblx0
ICB2YXIgZGlzcGF0Y2hMaXN0ZW5lcnMgPSBldmVudC5fZGlzcGF0Y2hMaXN0ZW5lcnM7XG5cdCAg
dmFyIGRpc3BhdGNoSW5zdGFuY2VzID0gZXZlbnQuX2Rpc3BhdGNoSW5zdGFuY2VzO1xuXHQgIGlm
IChmYWxzZSkge1xuXHQgICAgdmFsaWRhdGVFdmVudERpc3BhdGNoZXMoZXZlbnQpO1xuXHQgIH1c
blx0ICBpZiAoQXJyYXkuaXNBcnJheShkaXNwYXRjaExpc3RlbmVycykpIHtcblx0ICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgZGlzcGF0Y2hMaXN0ZW5lcnMubGVuZ3RoOyBpKyspIHtcblx0ICAgICAg
aWYgKGV2ZW50LmlzUHJvcGFnYXRpb25TdG9wcGVkKCkpIHtcblx0ICAgICAgICBicmVhaztcblx0
ICAgICAgfVxuXHQgICAgICAvLyBMaXN0ZW5lcnMgYW5kIEluc3RhbmNlcyBhcmUgdHdvIHBhcmFs
bGVsIGFycmF5cyB0aGF0IGFyZSBhbHdheXMgaW4gc3luYy5cblx0ICAgICAgZXhlY3V0ZURpc3Bh
dGNoKGV2ZW50LCBzaW11bGF0ZWQsIGRpc3BhdGNoTGlzdGVuZXJzW2ldLCBkaXNwYXRjaEluc3Rh
bmNlc1tpXSk7XG5cdCAgICB9XG5cdCAgfSBlbHNlIGlmIChkaXNwYXRjaExpc3RlbmVycykge1xu
XHQgICAgZXhlY3V0ZURpc3BhdGNoKGV2ZW50LCBzaW11bGF0ZWQsIGRpc3BhdGNoTGlzdGVuZXJz
LCBkaXNwYXRjaEluc3RhbmNlcyk7XG5cdCAgfVxuXHQgIGV2ZW50Ll9kaXNwYXRjaExpc3RlbmVy
cyA9IG51bGw7XG5cdCAgZXZlbnQuX2Rpc3BhdGNoSW5zdGFuY2VzID0gbnVsbDtcblx0fVxuXHRc
blx0LyoqXG5cdCAqIFN0YW5kYXJkL3NpbXBsZSBpdGVyYXRpb24gdGhyb3VnaCBhbiBldmVudCdz
IGNvbGxlY3RlZCBkaXNwYXRjaGVzLCBidXQgc3RvcHNcblx0ICogYXQgdGhlIGZpcnN0IGRpc3Bh
dGNoIGV4ZWN1dGlvbiByZXR1cm5pbmcgdHJ1ZSwgYW5kIHJldHVybnMgdGhhdCBpZC5cblx0ICpc
blx0ICogQHJldHVybiB7P3N0cmluZ30gaWQgb2YgdGhlIGZpcnN0IGRpc3BhdGNoIGV4ZWN1dGlv
biB3aG8ncyBsaXN0ZW5lciByZXR1cm5zXG5cdCAqIHRydWUsIG9yIG51bGwgaWYgbm8gbGlzdGVu
ZXIgcmV0dXJuZWQgdHJ1ZS5cblx0ICovXG5cdGZ1bmN0aW9uIGV4ZWN1dGVEaXNwYXRjaGVzSW5P
cmRlclN0b3BBdFRydWVJbXBsKGV2ZW50KSB7XG5cdCAgdmFyIGRpc3BhdGNoTGlzdGVuZXJzID0g
ZXZlbnQuX2Rpc3BhdGNoTGlzdGVuZXJzO1xuXHQgIHZhciBkaXNwYXRjaEluc3RhbmNlcyA9IGV2
ZW50Ll9kaXNwYXRjaEluc3RhbmNlcztcblx0ICBpZiAoZmFsc2UpIHtcblx0ICAgIHZhbGlkYXRl
RXZlbnREaXNwYXRjaGVzKGV2ZW50KTtcblx0ICB9XG5cdCAgaWYgKEFycmF5LmlzQXJyYXkoZGlz
cGF0Y2hMaXN0ZW5lcnMpKSB7XG5cdCAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRpc3BhdGNoTGlz
dGVuZXJzLmxlbmd0aDsgaSsrKSB7XG5cdCAgICAgIGlmIChldmVudC5pc1Byb3BhZ2F0aW9uU3Rv
cHBlZCgpKSB7XG5cdCAgICAgICAgYnJlYWs7XG5cdCAgICAgIH1cblx0ICAgICAgLy8gTGlzdGVu
ZXJzIGFuZCBJbnN0YW5jZXMgYXJlIHR3byBwYXJhbGxlbCBhcnJheXMgdGhhdCBhcmUgYWx3YXlz
IGluIHN5bmMuXG5cdCAgICAgIGlmIChkaXNwYXRjaExpc3RlbmVyc1tpXShldmVudCwgZGlzcGF0
Y2hJbnN0YW5jZXNbaV0pKSB7XG5cdCAgICAgICAgcmV0dXJuIGRpc3BhdGNoSW5zdGFuY2VzW2ld
O1xuXHQgICAgICB9XG5cdCAgICB9XG5cdCAgfSBlbHNlIGlmIChkaXNwYXRjaExpc3RlbmVycykg
e1xuXHQgICAgaWYgKGRpc3BhdGNoTGlzdGVuZXJzKGV2ZW50LCBkaXNwYXRjaEluc3RhbmNlcykp
IHtcblx0ICAgICAgcmV0dXJuIGRpc3BhdGNoSW5zdGFuY2VzO1xuXHQgICAgfVxuXHQgIH1cblx0
ICByZXR1cm4gbnVsbDtcblx0fVxuXHRcblx0LyoqXG5cdCAqIEBzZWUgZXhlY3V0ZURpc3BhdGNo
ZXNJbk9yZGVyU3RvcEF0VHJ1ZUltcGxcblx0ICovXG5cdGZ1bmN0aW9uIGV4ZWN1dGVEaXNwYXRj
aGVzSW5PcmRlclN0b3BBdFRydWUoZXZlbnQpIHtcblx0ICB2YXIgcmV0ID0gZXhlY3V0ZURpc3Bh
dGNoZXNJbk9yZGVyU3RvcEF0VHJ1ZUltcGwoZXZlbnQpO1xuXHQgIGV2ZW50Ll9kaXNwYXRjaElu
c3RhbmNlcyA9IG51bGw7XG5cdCAgZXZlbnQuX2Rpc3BhdGNoTGlzdGVuZXJzID0gbnVsbDtcblx0
ICByZXR1cm4gcmV0O1xuXHR9XG5cdFxuXHQvKipcblx0ICogRXhlY3V0aW9uIG9mIGEgXCJkaXJl
Y3RcIiBkaXNwYXRjaCAtIHRoZXJlIG11c3QgYmUgYXQgbW9zdCBvbmUgZGlzcGF0Y2hcblx0ICog
YWNjdW11bGF0ZWQgb24gdGhlIGV2ZW50IG9yIGl0IGlzIGNvbnNpZGVyZWQgYW4gZXJyb3IuIEl0
IGRvZXNuJ3QgcmVhbGx5IG1ha2Vcblx0ICogc2Vuc2UgZm9yIGFuIGV2ZW50IHdpdGggbXVsdGlw
bGUgZGlzcGF0Y2hlcyAoYnViYmxlZCkgdG8ga2VlcCB0cmFjayBvZiB0aGVcblx0ICogcmV0dXJu
IHZhbHVlcyBhdCBlYWNoIGRpc3BhdGNoIGV4ZWN1dGlvbiwgYnV0IGl0IGRvZXMgdGVuZCB0byBt
YWtlIHNlbnNlIHdoZW5cblx0ICogZGVhbGluZyB3aXRoIFwiZGlyZWN0XCIgZGlzcGF0Y2hlcy5c
blx0ICpcblx0ICogQHJldHVybiB7Kn0gVGhlIHJldHVybiB2YWx1ZSBvZiBleGVjdXRpbmcgdGhl
IHNpbmdsZSBkaXNwYXRjaC5cblx0ICovXG5cdGZ1bmN0aW9uIGV4ZWN1dGVEaXJlY3REaXNwYXRj
aChldmVudCkge1xuXHQgIGlmIChmYWxzZSkge1xuXHQgICAgdmFsaWRhdGVFdmVudERpc3BhdGNo
ZXMoZXZlbnQpO1xuXHQgIH1cblx0ICB2YXIgZGlzcGF0Y2hMaXN0ZW5lciA9IGV2ZW50Ll9kaXNw
YXRjaExpc3RlbmVycztcblx0ICB2YXIgZGlzcGF0Y2hJbnN0YW5jZSA9IGV2ZW50Ll9kaXNwYXRj
aEluc3RhbmNlcztcblx0ICAhIUFycmF5LmlzQXJyYXkoZGlzcGF0Y2hMaXN0ZW5lcikgPyAgZmFs
c2UgPyBpbnZhcmlhbnQoZmFsc2UsICdleGVjdXRlRGlyZWN0RGlzcGF0Y2goLi4uKTogSW52YWxp
ZCBgZXZlbnRgLicpIDogX3Byb2RJbnZhcmlhbnQoJzEwMycpIDogdm9pZCAwO1xuXHQgIGV2ZW50
LmN1cnJlbnRUYXJnZXQgPSBkaXNwYXRjaExpc3RlbmVyID8gRXZlbnRQbHVnaW5VdGlscy5nZXRO
b2RlRnJvbUluc3RhbmNlKGRpc3BhdGNoSW5zdGFuY2UpIDogbnVsbDtcblx0ICB2YXIgcmVzID0g
ZGlzcGF0Y2hMaXN0ZW5lciA/IGRpc3BhdGNoTGlzdGVuZXIoZXZlbnQpIDogbnVsbDtcblx0ICBl
dmVudC5jdXJyZW50VGFyZ2V0ID0gbnVsbDtcblx0ICBldmVudC5fZGlzcGF0Y2hMaXN0ZW5lcnMg
PSBudWxsO1xuXHQgIGV2ZW50Ll9kaXNwYXRjaEluc3RhbmNlcyA9IG51bGw7XG5cdCAgcmV0dXJu
IHJlcztcblx0fVxuXHRcblx0LyoqXG5cdCAqIEBwYXJhbSB7U3ludGhldGljRXZlbnR9IGV2ZW50
XG5cdCAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUgaWZmIG51bWJlciBvZiBkaXNwYXRjaGVzIGFj
Y3VtdWxhdGVkIGlzIGdyZWF0ZXIgdGhhbiAwLlxuXHQgKi9cblx0ZnVuY3Rpb24gaGFzRGlzcGF0
Y2hlcyhldmVudCkge1xuXHQgIHJldHVybiAhIWV2ZW50Ll9kaXNwYXRjaExpc3RlbmVycztcblx0
fVxuXHRcblx0LyoqXG5cdCAqIEdlbmVyYWwgdXRpbGl0aWVzIHRoYXQgYXJlIHVzZWZ1bCBpbiBj
cmVhdGluZyBjdXN0b20gRXZlbnQgUGx1Z2lucy5cblx0ICovXG5cdHZhciBFdmVudFBsdWdpblV0
aWxzID0ge1xuXHQgIGlzRW5kaXNoOiBpc0VuZGlzaCxcblx0ICBpc01vdmVpc2g6IGlzTW92ZWlz
aCxcblx0ICBpc1N0YXJ0aXNoOiBpc1N0YXJ0aXNoLFxuXHRcblx0ICBleGVjdXRlRGlyZWN0RGlz
cGF0Y2g6IGV4ZWN1dGVEaXJlY3REaXNwYXRjaCxcblx0ICBleGVjdXRlRGlzcGF0Y2hlc0luT3Jk
ZXI6IGV4ZWN1dGVEaXNwYXRjaGVzSW5PcmRlcixcblx0ICBleGVjdXRlRGlzcGF0Y2hlc0luT3Jk
ZXJTdG9wQXRUcnVlOiBleGVjdXRlRGlzcGF0Y2hlc0luT3JkZXJTdG9wQXRUcnVlLFxuXHQgIGhh
c0Rpc3BhdGNoZXM6IGhhc0Rpc3BhdGNoZXMsXG5cdFxuXHQgIGdldEluc3RhbmNlRnJvbU5vZGU6
IGZ1bmN0aW9uIChub2RlKSB7XG5cdCAgICByZXR1cm4gQ29tcG9uZW50VHJlZS5nZXRJbnN0YW5j
ZUZyb21Ob2RlKG5vZGUpO1xuXHQgIH0sXG5cdCAgZ2V0Tm9kZUZyb21JbnN0YW5jZTogZnVuY3Rp
b24gKG5vZGUpIHtcblx0ICAgIHJldHVybiBDb21wb25lbnRUcmVlLmdldE5vZGVGcm9tSW5zdGFu
Y2Uobm9kZSk7XG5cdCAgfSxcblx0ICBpc0FuY2VzdG9yOiBmdW5jdGlvbiAoYSwgYikge1xuXHQg
ICAgcmV0dXJuIFRyZWVUcmF2ZXJzYWwuaXNBbmNlc3RvcihhLCBiKTtcblx0ICB9LFxuXHQgIGdl
dExvd2VzdENvbW1vbkFuY2VzdG9yOiBmdW5jdGlvbiAoYSwgYikge1xuXHQgICAgcmV0dXJuIFRy
ZWVUcmF2ZXJzYWwuZ2V0TG93ZXN0Q29tbW9uQW5jZXN0b3IoYSwgYik7XG5cdCAgfSxcblx0ICBn
ZXRQYXJlbnRJbnN0YW5jZTogZnVuY3Rpb24gKGluc3QpIHtcblx0ICAgIHJldHVybiBUcmVlVHJh
dmVyc2FsLmdldFBhcmVudEluc3RhbmNlKGluc3QpO1xuXHQgIH0sXG5cdCAgdHJhdmVyc2VUd29Q
aGFzZTogZnVuY3Rpb24gKHRhcmdldCwgZm4sIGFyZykge1xuXHQgICAgcmV0dXJuIFRyZWVUcmF2
ZXJzYWwudHJhdmVyc2VUd29QaGFzZSh0YXJnZXQsIGZuLCBhcmcpO1xuXHQgIH0sXG5cdCAgdHJh
dmVyc2VFbnRlckxlYXZlOiBmdW5jdGlvbiAoZnJvbSwgdG8sIGZuLCBhcmdGcm9tLCBhcmdUbykg
e1xuXHQgICAgcmV0dXJuIFRyZWVUcmF2ZXJzYWwudHJhdmVyc2VFbnRlckxlYXZlKGZyb20sIHRv
LCBmbiwgYXJnRnJvbSwgYXJnVG8pO1xuXHQgIH0sXG5cdFxuXHQgIGluamVjdGlvbjogaW5qZWN0
aW9uXG5cdH07XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IEV2ZW50UGx1Z2luVXRpbHM7XG5cbi8q
KiovIH0sXG4vKiAzOCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cblx0
LyoqXG5cdCAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFs
bCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5z
ZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNF
IGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0
aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBB
VEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqIFxuXHQgKi9cblx0
XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdC8qKlxuXHQgKiBFc2NhcGUgYW5kIHdyYXAga2V5IHNv
IGl0IGlzIHNhZmUgdG8gdXNlIGFzIGEgcmVhY3RpZFxuXHQgKlxuXHQgKiBAcGFyYW0ge3N0cmlu
Z30ga2V5IHRvIGJlIGVzY2FwZWQuXG5cdCAqIEByZXR1cm4ge3N0cmluZ30gdGhlIGVzY2FwZWQg
a2V5LlxuXHQgKi9cblx0XG5cdGZ1bmN0aW9uIGVzY2FwZShrZXkpIHtcblx0ICB2YXIgZXNjYXBl
UmVnZXggPSAvWz06XS9nO1xuXHQgIHZhciBlc2NhcGVyTG9va3VwID0ge1xuXHQgICAgJz0nOiAn
PTAnLFxuXHQgICAgJzonOiAnPTInXG5cdCAgfTtcblx0ICB2YXIgZXNjYXBlZFN0cmluZyA9ICgn
JyArIGtleSkucmVwbGFjZShlc2NhcGVSZWdleCwgZnVuY3Rpb24gKG1hdGNoKSB7XG5cdCAgICBy
ZXR1cm4gZXNjYXBlckxvb2t1cFttYXRjaF07XG5cdCAgfSk7XG5cdFxuXHQgIHJldHVybiAnJCcg
KyBlc2NhcGVkU3RyaW5nO1xuXHR9XG5cdFxuXHQvKipcblx0ICogVW5lc2NhcGUgYW5kIHVud3Jh
cCBrZXkgZm9yIGh1bWFuLXJlYWRhYmxlIGRpc3BsYXlcblx0ICpcblx0ICogQHBhcmFtIHtzdHJp
bmd9IGtleSB0byB1bmVzY2FwZS5cblx0ICogQHJldHVybiB7c3RyaW5nfSB0aGUgdW5lc2NhcGVk
IGtleS5cblx0ICovXG5cdGZ1bmN0aW9uIHVuZXNjYXBlKGtleSkge1xuXHQgIHZhciB1bmVzY2Fw
ZVJlZ2V4ID0gLyg9MHw9MikvZztcblx0ICB2YXIgdW5lc2NhcGVyTG9va3VwID0ge1xuXHQgICAg
Jz0wJzogJz0nLFxuXHQgICAgJz0yJzogJzonXG5cdCAgfTtcblx0ICB2YXIga2V5U3Vic3RyaW5n
ID0ga2V5WzBdID09PSAnLicgJiYga2V5WzFdID09PSAnJCcgPyBrZXkuc3Vic3RyaW5nKDIpIDog
a2V5LnN1YnN0cmluZygxKTtcblx0XG5cdCAgcmV0dXJuICgnJyArIGtleVN1YnN0cmluZykucmVw
bGFjZSh1bmVzY2FwZVJlZ2V4LCBmdW5jdGlvbiAobWF0Y2gpIHtcblx0ICAgIHJldHVybiB1bmVz
Y2FwZXJMb29rdXBbbWF0Y2hdO1xuXHQgIH0pO1xuXHR9XG5cdFxuXHR2YXIgS2V5RXNjYXBlVXRp
bHMgPSB7XG5cdCAgZXNjYXBlOiBlc2NhcGUsXG5cdCAgdW5lc2NhcGU6IHVuZXNjYXBlXG5cdH07
XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IEtleUVzY2FwZVV0aWxzO1xuXG4vKioqLyB9LFxuLyog
MzkgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVf
Xykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5j
LlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2Rl
IGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0
ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVl
LiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5k
IGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKi9c
blx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdHZhciBfcHJvZEludmFyaWFudCA9IF9fd2VicGFj
a19yZXF1aXJlX18oMyk7XG5cdFxuXHR2YXIgUmVhY3RQcm9wVHlwZXNTZWNyZXQgPSBfX3dlYnBh
Y2tfcmVxdWlyZV9fKDE1OCk7XG5cdHZhciBwcm9wVHlwZXNGYWN0b3J5ID0gX193ZWJwYWNrX3Jl
cXVpcmVfXyg1NSk7XG5cdFxuXHR2YXIgUmVhY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE3KTtc
blx0dmFyIFByb3BUeXBlcyA9IHByb3BUeXBlc0ZhY3RvcnkoUmVhY3QuaXNWYWxpZEVsZW1lbnQp
O1xuXHRcblx0dmFyIGludmFyaWFudCA9IF9fd2VicGFja19yZXF1aXJlX18oMSk7XG5cdHZhciB3
YXJuaW5nID0gX193ZWJwYWNrX3JlcXVpcmVfXygyKTtcblx0XG5cdHZhciBoYXNSZWFkT25seVZh
bHVlID0ge1xuXHQgIGJ1dHRvbjogdHJ1ZSxcblx0ICBjaGVja2JveDogdHJ1ZSxcblx0ICBpbWFn
ZTogdHJ1ZSxcblx0ICBoaWRkZW46IHRydWUsXG5cdCAgcmFkaW86IHRydWUsXG5cdCAgcmVzZXQ6
IHRydWUsXG5cdCAgc3VibWl0OiB0cnVlXG5cdH07XG5cdFxuXHRmdW5jdGlvbiBfYXNzZXJ0U2lu
Z2xlTGluayhpbnB1dFByb3BzKSB7XG5cdCAgIShpbnB1dFByb3BzLmNoZWNrZWRMaW5rID09IG51
bGwgfHwgaW5wdXRQcm9wcy52YWx1ZUxpbmsgPT0gbnVsbCkgPyAgZmFsc2UgPyBpbnZhcmlhbnQo
ZmFsc2UsICdDYW5ub3QgcHJvdmlkZSBhIGNoZWNrZWRMaW5rIGFuZCBhIHZhbHVlTGluay4gSWYg
eW91IHdhbnQgdG8gdXNlIGNoZWNrZWRMaW5rLCB5b3UgcHJvYmFibHkgZG9uXFwndCB3YW50IHRv
IHVzZSB2YWx1ZUxpbmsgYW5kIHZpY2UgdmVyc2EuJykgOiBfcHJvZEludmFyaWFudCgnODcnKSA6
IHZvaWQgMDtcblx0fVxuXHRmdW5jdGlvbiBfYXNzZXJ0VmFsdWVMaW5rKGlucHV0UHJvcHMpIHtc
blx0ICBfYXNzZXJ0U2luZ2xlTGluayhpbnB1dFByb3BzKTtcblx0ICAhKGlucHV0UHJvcHMudmFs
dWUgPT0gbnVsbCAmJiBpbnB1dFByb3BzLm9uQ2hhbmdlID09IG51bGwpID8gIGZhbHNlID8gaW52
YXJpYW50KGZhbHNlLCAnQ2Fubm90IHByb3ZpZGUgYSB2YWx1ZUxpbmsgYW5kIGEgdmFsdWUgb3Ig
b25DaGFuZ2UgZXZlbnQuIElmIHlvdSB3YW50IHRvIHVzZSB2YWx1ZSBvciBvbkNoYW5nZSwgeW91
IHByb2JhYmx5IGRvblxcJ3Qgd2FudCB0byB1c2UgdmFsdWVMaW5rLicpIDogX3Byb2RJbnZhcmlh
bnQoJzg4JykgOiB2b2lkIDA7XG5cdH1cblx0XG5cdGZ1bmN0aW9uIF9hc3NlcnRDaGVja2VkTGlu
ayhpbnB1dFByb3BzKSB7XG5cdCAgX2Fzc2VydFNpbmdsZUxpbmsoaW5wdXRQcm9wcyk7XG5cdCAg
IShpbnB1dFByb3BzLmNoZWNrZWQgPT0gbnVsbCAmJiBpbnB1dFByb3BzLm9uQ2hhbmdlID09IG51
bGwpID8gIGZhbHNlID8gaW52YXJpYW50KGZhbHNlLCAnQ2Fubm90IHByb3ZpZGUgYSBjaGVja2Vk
TGluayBhbmQgYSBjaGVja2VkIHByb3BlcnR5IG9yIG9uQ2hhbmdlIGV2ZW50LiBJZiB5b3Ugd2Fu
dCB0byB1c2UgY2hlY2tlZCBvciBvbkNoYW5nZSwgeW91IHByb2JhYmx5IGRvblxcJ3Qgd2FudCB0
byB1c2UgY2hlY2tlZExpbmsnKSA6IF9wcm9kSW52YXJpYW50KCc4OScpIDogdm9pZCAwO1xuXHR9
XG5cdFxuXHR2YXIgcHJvcFR5cGVzID0ge1xuXHQgIHZhbHVlOiBmdW5jdGlvbiAocHJvcHMsIHBy
b3BOYW1lLCBjb21wb25lbnROYW1lKSB7XG5cdCAgICBpZiAoIXByb3BzW3Byb3BOYW1lXSB8fCBo
YXNSZWFkT25seVZhbHVlW3Byb3BzLnR5cGVdIHx8IHByb3BzLm9uQ2hhbmdlIHx8IHByb3BzLnJl
YWRPbmx5IHx8IHByb3BzLmRpc2FibGVkKSB7XG5cdCAgICAgIHJldHVybiBudWxsO1xuXHQgICAg
fVxuXHQgICAgcmV0dXJuIG5ldyBFcnJvcignWW91IHByb3ZpZGVkIGEgYHZhbHVlYCBwcm9wIHRv
IGEgZm9ybSBmaWVsZCB3aXRob3V0IGFuICcgKyAnYG9uQ2hhbmdlYCBoYW5kbGVyLiBUaGlzIHdp
bGwgcmVuZGVyIGEgcmVhZC1vbmx5IGZpZWxkLiBJZiAnICsgJ3RoZSBmaWVsZCBzaG91bGQgYmUg
bXV0YWJsZSB1c2UgYGRlZmF1bHRWYWx1ZWAuIE90aGVyd2lzZSwgJyArICdzZXQgZWl0aGVyIGBv
bkNoYW5nZWAgb3IgYHJlYWRPbmx5YC4nKTtcblx0ICB9LFxuXHQgIGNoZWNrZWQ6IGZ1bmN0aW9u
IChwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUpIHtcblx0ICAgIGlmICghcHJvcHNbcHJv
cE5hbWVdIHx8IHByb3BzLm9uQ2hhbmdlIHx8IHByb3BzLnJlYWRPbmx5IHx8IHByb3BzLmRpc2Fi
bGVkKSB7XG5cdCAgICAgIHJldHVybiBudWxsO1xuXHQgICAgfVxuXHQgICAgcmV0dXJuIG5ldyBF
cnJvcignWW91IHByb3ZpZGVkIGEgYGNoZWNrZWRgIHByb3AgdG8gYSBmb3JtIGZpZWxkIHdpdGhv
dXQgYW4gJyArICdgb25DaGFuZ2VgIGhhbmRsZXIuIFRoaXMgd2lsbCByZW5kZXIgYSByZWFkLW9u
bHkgZmllbGQuIElmICcgKyAndGhlIGZpZWxkIHNob3VsZCBiZSBtdXRhYmxlIHVzZSBgZGVmYXVs
dENoZWNrZWRgLiBPdGhlcndpc2UsICcgKyAnc2V0IGVpdGhlciBgb25DaGFuZ2VgIG9yIGByZWFk
T25seWAuJyk7XG5cdCAgfSxcblx0ICBvbkNoYW5nZTogUHJvcFR5cGVzLmZ1bmNcblx0fTtcblx0
XG5cdHZhciBsb2dnZWRUeXBlRmFpbHVyZXMgPSB7fTtcblx0ZnVuY3Rpb24gZ2V0RGVjbGFyYXRp
b25FcnJvckFkZGVuZHVtKG93bmVyKSB7XG5cdCAgaWYgKG93bmVyKSB7XG5cdCAgICB2YXIgbmFt
ZSA9IG93bmVyLmdldE5hbWUoKTtcblx0ICAgIGlmIChuYW1lKSB7XG5cdCAgICAgIHJldHVybiAn
IENoZWNrIHRoZSByZW5kZXIgbWV0aG9kIG9mIGAnICsgbmFtZSArICdgLic7XG5cdCAgICB9XG5c
dCAgfVxuXHQgIHJldHVybiAnJztcblx0fVxuXHRcblx0LyoqXG5cdCAqIFByb3ZpZGUgYSBsaW5r
ZWQgYHZhbHVlYCBhdHRyaWJ1dGUgZm9yIGNvbnRyb2xsZWQgZm9ybXMuIFlvdSBzaG91bGQgbm90
IHVzZVxuXHQgKiB0aGlzIG91dHNpZGUgb2YgdGhlIFJlYWN0RE9NIGNvbnRyb2xsZWQgZm9ybSBj
b21wb25lbnRzLlxuXHQgKi9cblx0dmFyIExpbmtlZFZhbHVlVXRpbHMgPSB7XG5cdCAgY2hlY2tQ
cm9wVHlwZXM6IGZ1bmN0aW9uICh0YWdOYW1lLCBwcm9wcywgb3duZXIpIHtcblx0ICAgIGZvciAo
dmFyIHByb3BOYW1lIGluIHByb3BUeXBlcykge1xuXHQgICAgICBpZiAocHJvcFR5cGVzLmhhc093
blByb3BlcnR5KHByb3BOYW1lKSkge1xuXHQgICAgICAgIHZhciBlcnJvciA9IHByb3BUeXBlc1tw
cm9wTmFtZV0ocHJvcHMsIHByb3BOYW1lLCB0YWdOYW1lLCAncHJvcCcsIG51bGwsIFJlYWN0UHJv
cFR5cGVzU2VjcmV0KTtcblx0ICAgICAgfVxuXHQgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBF
cnJvciAmJiAhKGVycm9yLm1lc3NhZ2UgaW4gbG9nZ2VkVHlwZUZhaWx1cmVzKSkge1xuXHQgICAg
ICAgIC8vIE9ubHkgbW9uaXRvciB0aGlzIGZhaWx1cmUgb25jZSBiZWNhdXNlIHRoZXJlIHRlbmRz
IHRvIGJlIGEgbG90IG9mIHRoZVxuXHQgICAgICAgIC8vIHNhbWUgZXJyb3IuXG5cdCAgICAgICAg
bG9nZ2VkVHlwZUZhaWx1cmVzW2Vycm9yLm1lc3NhZ2VdID0gdHJ1ZTtcblx0XG5cdCAgICAgICAg
dmFyIGFkZGVuZHVtID0gZ2V0RGVjbGFyYXRpb25FcnJvckFkZGVuZHVtKG93bmVyKTtcblx0ICAg
ICAgICAgZmFsc2UgPyB3YXJuaW5nKGZhbHNlLCAnRmFpbGVkIGZvcm0gcHJvcFR5cGU6ICVzJXMn
LCBlcnJvci5tZXNzYWdlLCBhZGRlbmR1bSkgOiB2b2lkIDA7XG5cdCAgICAgIH1cblx0ICAgIH1c
blx0ICB9LFxuXHRcblx0ICAvKipcblx0ICAgKiBAcGFyYW0ge29iamVjdH0gaW5wdXRQcm9wcyBQ
cm9wcyBmb3IgZm9ybSBjb21wb25lbnRcblx0ICAgKiBAcmV0dXJuIHsqfSBjdXJyZW50IHZhbHVl
IG9mIHRoZSBpbnB1dCBlaXRoZXIgZnJvbSB2YWx1ZSBwcm9wIG9yIGxpbmsuXG5cdCAgICovXG5c
dCAgZ2V0VmFsdWU6IGZ1bmN0aW9uIChpbnB1dFByb3BzKSB7XG5cdCAgICBpZiAoaW5wdXRQcm9w
cy52YWx1ZUxpbmspIHtcblx0ICAgICAgX2Fzc2VydFZhbHVlTGluayhpbnB1dFByb3BzKTtcblx0
ICAgICAgcmV0dXJuIGlucHV0UHJvcHMudmFsdWVMaW5rLnZhbHVlO1xuXHQgICAgfVxuXHQgICAg
cmV0dXJuIGlucHV0UHJvcHMudmFsdWU7XG5cdCAgfSxcblx0XG5cdCAgLyoqXG5cdCAgICogQHBh
cmFtIHtvYmplY3R9IGlucHV0UHJvcHMgUHJvcHMgZm9yIGZvcm0gY29tcG9uZW50XG5cdCAgICog
QHJldHVybiB7Kn0gY3VycmVudCBjaGVja2VkIHN0YXR1cyBvZiB0aGUgaW5wdXQgZWl0aGVyIGZy
b20gY2hlY2tlZCBwcm9wXG5cdCAgICogICAgICAgICAgICAgb3IgbGluay5cblx0ICAgKi9cblx0
ICBnZXRDaGVja2VkOiBmdW5jdGlvbiAoaW5wdXRQcm9wcykge1xuXHQgICAgaWYgKGlucHV0UHJv
cHMuY2hlY2tlZExpbmspIHtcblx0ICAgICAgX2Fzc2VydENoZWNrZWRMaW5rKGlucHV0UHJvcHMp
O1xuXHQgICAgICByZXR1cm4gaW5wdXRQcm9wcy5jaGVja2VkTGluay52YWx1ZTtcblx0ICAgIH1c
blx0ICAgIHJldHVybiBpbnB1dFByb3BzLmNoZWNrZWQ7XG5cdCAgfSxcblx0XG5cdCAgLyoqXG5c
dCAgICogQHBhcmFtIHtvYmplY3R9IGlucHV0UHJvcHMgUHJvcHMgZm9yIGZvcm0gY29tcG9uZW50
XG5cdCAgICogQHBhcmFtIHtTeW50aGV0aWNFdmVudH0gZXZlbnQgY2hhbmdlIGV2ZW50IHRvIGhh
bmRsZVxuXHQgICAqL1xuXHQgIGV4ZWN1dGVPbkNoYW5nZTogZnVuY3Rpb24gKGlucHV0UHJvcHMs
IGV2ZW50KSB7XG5cdCAgICBpZiAoaW5wdXRQcm9wcy52YWx1ZUxpbmspIHtcblx0ICAgICAgX2Fz
c2VydFZhbHVlTGluayhpbnB1dFByb3BzKTtcblx0ICAgICAgcmV0dXJuIGlucHV0UHJvcHMudmFs
dWVMaW5rLnJlcXVlc3RDaGFuZ2UoZXZlbnQudGFyZ2V0LnZhbHVlKTtcblx0ICAgIH0gZWxzZSBp
ZiAoaW5wdXRQcm9wcy5jaGVja2VkTGluaykge1xuXHQgICAgICBfYXNzZXJ0Q2hlY2tlZExpbmso
aW5wdXRQcm9wcyk7XG5cdCAgICAgIHJldHVybiBpbnB1dFByb3BzLmNoZWNrZWRMaW5rLnJlcXVl
c3RDaGFuZ2UoZXZlbnQudGFyZ2V0LmNoZWNrZWQpO1xuXHQgICAgfSBlbHNlIGlmIChpbnB1dFBy
b3BzLm9uQ2hhbmdlKSB7XG5cdCAgICAgIHJldHVybiBpbnB1dFByb3BzLm9uQ2hhbmdlLmNhbGwo
dW5kZWZpbmVkLCBldmVudCk7XG5cdCAgICB9XG5cdCAgfVxuXHR9O1xuXHRcblx0bW9kdWxlLmV4
cG9ydHMgPSBMaW5rZWRWYWx1ZVV0aWxzO1xuXG4vKioqLyB9LFxuLyogNDAgKi9cbi8qKiovIGZ1
bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8qKlxu
XHQgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmln
aHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVu
ZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxl
IGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFs
IGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRT
IGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKiBcblx0ICovXG5cdFxuXHQn
dXNlIHN0cmljdCc7XG5cdFxuXHR2YXIgX3Byb2RJbnZhcmlhbnQgPSBfX3dlYnBhY2tfcmVxdWly
ZV9fKDMpO1xuXHRcblx0dmFyIGludmFyaWFudCA9IF9fd2VicGFja19yZXF1aXJlX18oMSk7XG5c
dFxuXHR2YXIgaW5qZWN0ZWQgPSBmYWxzZTtcblx0XG5cdHZhciBSZWFjdENvbXBvbmVudEVudmly
b25tZW50ID0ge1xuXHQgIC8qKlxuXHQgICAqIE9wdGlvbmFsbHkgaW5qZWN0YWJsZSBob29rIGZv
ciBzd2FwcGluZyBvdXQgbW91bnQgaW1hZ2VzIGluIHRoZSBtaWRkbGUgb2Zcblx0ICAgKiB0aGUg
dHJlZS5cblx0ICAgKi9cblx0ICByZXBsYWNlTm9kZVdpdGhNYXJrdXA6IG51bGwsXG5cdFxuXHQg
IC8qKlxuXHQgICAqIE9wdGlvbmFsbHkgaW5qZWN0YWJsZSBob29rIGZvciBwcm9jZXNzaW5nIGEg
cXVldWUgb2YgY2hpbGQgdXBkYXRlcy4gV2lsbFxuXHQgICAqIGxhdGVyIG1vdmUgaW50byBNdWx0
aUNoaWxkQ29tcG9uZW50cy5cblx0ICAgKi9cblx0ICBwcm9jZXNzQ2hpbGRyZW5VcGRhdGVzOiBu
dWxsLFxuXHRcblx0ICBpbmplY3Rpb246IHtcblx0ICAgIGluamVjdEVudmlyb25tZW50OiBmdW5j
dGlvbiAoZW52aXJvbm1lbnQpIHtcblx0ICAgICAgISFpbmplY3RlZCA/ICBmYWxzZSA/IGludmFy
aWFudChmYWxzZSwgJ1JlYWN0Q29tcG9zaXRlQ29tcG9uZW50OiBpbmplY3RFbnZpcm9ubWVudCgp
IGNhbiBvbmx5IGJlIGNhbGxlZCBvbmNlLicpIDogX3Byb2RJbnZhcmlhbnQoJzEwNCcpIDogdm9p
ZCAwO1xuXHQgICAgICBSZWFjdENvbXBvbmVudEVudmlyb25tZW50LnJlcGxhY2VOb2RlV2l0aE1h
cmt1cCA9IGVudmlyb25tZW50LnJlcGxhY2VOb2RlV2l0aE1hcmt1cDtcblx0ICAgICAgUmVhY3RD
b21wb25lbnRFbnZpcm9ubWVudC5wcm9jZXNzQ2hpbGRyZW5VcGRhdGVzID0gZW52aXJvbm1lbnQu
cHJvY2Vzc0NoaWxkcmVuVXBkYXRlcztcblx0ICAgICAgaW5qZWN0ZWQgPSB0cnVlO1xuXHQgICAg
fVxuXHQgIH1cblx0fTtcblx0XG5cdG1vZHVsZS5leHBvcnRzID0gUmVhY3RDb21wb25lbnRFbnZp
cm9ubWVudDtcblxuLyoqKi8gfSxcbi8qIDQxICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4
cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvKipcblx0ICogQ29weXJpZ2h0IDIw
MTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0
ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxl
IGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJl
Y3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBw
YXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1l
IGRpcmVjdG9yeS5cblx0ICpcblx0ICogXG5cdCAqL1xuXHRcblx0J3VzZSBzdHJpY3QnO1xuXHRc
blx0dmFyIGNhdWdodEVycm9yID0gbnVsbDtcblx0XG5cdC8qKlxuXHQgKiBDYWxsIGEgZnVuY3Rp
b24gd2hpbGUgZ3VhcmRpbmcgYWdhaW5zdCBlcnJvcnMgdGhhdCBoYXBwZW5zIHdpdGhpbiBpdC5c
blx0ICpcblx0ICogQHBhcmFtIHtTdHJpbmd9IG5hbWUgb2YgdGhlIGd1YXJkIHRvIHVzZSBmb3Ig
bG9nZ2luZyBvciBkZWJ1Z2dpbmdcblx0ICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVu
Y3Rpb24gdG8gaW52b2tlXG5cdCAqIEBwYXJhbSB7Kn0gYSBGaXJzdCBhcmd1bWVudFxuXHQgKiBA
cGFyYW0geyp9IGIgU2Vjb25kIGFyZ3VtZW50XG5cdCAqL1xuXHRmdW5jdGlvbiBpbnZva2VHdWFy
ZGVkQ2FsbGJhY2sobmFtZSwgZnVuYywgYSkge1xuXHQgIHRyeSB7XG5cdCAgICBmdW5jKGEpO1xu
XHQgIH0gY2F0Y2ggKHgpIHtcblx0ICAgIGlmIChjYXVnaHRFcnJvciA9PT0gbnVsbCkge1xuXHQg
ICAgICBjYXVnaHRFcnJvciA9IHg7XG5cdCAgICB9XG5cdCAgfVxuXHR9XG5cdFxuXHR2YXIgUmVh
Y3RFcnJvclV0aWxzID0ge1xuXHQgIGludm9rZUd1YXJkZWRDYWxsYmFjazogaW52b2tlR3VhcmRl
ZENhbGxiYWNrLFxuXHRcblx0ICAvKipcblx0ICAgKiBJbnZva2VkIGJ5IFJlYWN0VGVzdFV0aWxz
LlNpbXVsYXRlIHNvIHRoYXQgYW55IGVycm9ycyB0aHJvd24gYnkgdGhlIGV2ZW50XG5cdCAgICog
aGFuZGxlciBhcmUgc3VyZSB0byBiZSByZXRocm93biBieSByZXRocm93Q2F1Z2h0RXJyb3IuXG5c
dCAgICovXG5cdCAgaW52b2tlR3VhcmRlZENhbGxiYWNrV2l0aENhdGNoOiBpbnZva2VHdWFyZGVk
Q2FsbGJhY2ssXG5cdFxuXHQgIC8qKlxuXHQgICAqIER1cmluZyBleGVjdXRpb24gb2YgZ3VhcmRl
ZCBmdW5jdGlvbnMgd2Ugd2lsbCBjYXB0dXJlIHRoZSBmaXJzdCBlcnJvciB3aGljaFxuXHQgICAq
IHdlIHdpbGwgcmV0aHJvdyB0byBiZSBoYW5kbGVkIGJ5IHRoZSB0b3AgbGV2ZWwgZXJyb3IgaGFu
ZGxlci5cblx0ICAgKi9cblx0ICByZXRocm93Q2F1Z2h0RXJyb3I6IGZ1bmN0aW9uICgpIHtcblx0
ICAgIGlmIChjYXVnaHRFcnJvcikge1xuXHQgICAgICB2YXIgZXJyb3IgPSBjYXVnaHRFcnJvcjtc
blx0ICAgICAgY2F1Z2h0RXJyb3IgPSBudWxsO1xuXHQgICAgICB0aHJvdyBlcnJvcjtcblx0ICAg
IH1cblx0ICB9XG5cdH07XG5cdFxuXHRpZiAoZmFsc2UpIHtcblx0ICAvKipcblx0ICAgKiBUbyBo
ZWxwIGRldmVsb3BtZW50IHdlIGNhbiBnZXQgYmV0dGVyIGRldnRvb2xzIGludGVncmF0aW9uIGJ5
IHNpbXVsYXRpbmcgYVxuXHQgICAqIHJlYWwgYnJvd3NlciBldmVudC5cblx0ICAgKi9cblx0ICBp
ZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIHdpbmRvdy5kaXNwYXRj
aEV2ZW50ID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiBkb2N1bWVudCAhPT0gJ3VuZGVmaW5lZCcg
JiYgdHlwZW9mIGRvY3VtZW50LmNyZWF0ZUV2ZW50ID09PSAnZnVuY3Rpb24nKSB7XG5cdCAgICB2
YXIgZmFrZU5vZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdyZWFjdCcpO1xuXHQgICAgUmVh
Y3RFcnJvclV0aWxzLmludm9rZUd1YXJkZWRDYWxsYmFjayA9IGZ1bmN0aW9uIChuYW1lLCBmdW5j
LCBhKSB7XG5cdCAgICAgIHZhciBib3VuZEZ1bmMgPSBmdW5jLmJpbmQobnVsbCwgYSk7XG5cdCAg
ICAgIHZhciBldnRUeXBlID0gJ3JlYWN0LScgKyBuYW1lO1xuXHQgICAgICBmYWtlTm9kZS5hZGRF
dmVudExpc3RlbmVyKGV2dFR5cGUsIGJvdW5kRnVuYywgZmFsc2UpO1xuXHQgICAgICB2YXIgZXZ0
ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0V2ZW50Jyk7XG5cdCAgICAgIGV2dC5pbml0RXZlbnQo
ZXZ0VHlwZSwgZmFsc2UsIGZhbHNlKTtcblx0ICAgICAgZmFrZU5vZGUuZGlzcGF0Y2hFdmVudChl
dnQpO1xuXHQgICAgICBmYWtlTm9kZS5yZW1vdmVFdmVudExpc3RlbmVyKGV2dFR5cGUsIGJvdW5k
RnVuYywgZmFsc2UpO1xuXHQgICAgfTtcblx0ICB9XG5cdH1cblx0XG5cdG1vZHVsZS5leHBvcnRz
ID0gUmVhY3RFcnJvclV0aWxzO1xuXG4vKioqLyB9LFxuLyogNDIgKi9cbi8qKiovIGZ1bmN0aW9u
KG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8qKlxuXHQgKiBD
b3B5cmlnaHQgMjAxNS1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJl
c2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRo
ZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxlIGluIHRo
ZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50
XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUg
aW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0Jztc
blx0XG5cdHZhciBfcHJvZEludmFyaWFudCA9IF9fd2VicGFja19yZXF1aXJlX18oMyk7XG5cdFxu
XHR2YXIgUmVhY3RDdXJyZW50T3duZXIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDExKTtcblx0dmFy
IFJlYWN0SW5zdGFuY2VNYXAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIxKTtcblx0dmFyIFJlYWN0
SW5zdHJ1bWVudGF0aW9uID0gX193ZWJwYWNrX3JlcXVpcmVfXyg4KTtcblx0dmFyIFJlYWN0VXBk
YXRlcyA9IF9fd2VicGFja19yZXF1aXJlX18oOSk7XG5cdFxuXHR2YXIgaW52YXJpYW50ID0gX193
ZWJwYWNrX3JlcXVpcmVfXygxKTtcblx0dmFyIHdhcm5pbmcgPSBfX3dlYnBhY2tfcmVxdWlyZV9f
KDIpO1xuXHRcblx0ZnVuY3Rpb24gZW5xdWV1ZVVwZGF0ZShpbnRlcm5hbEluc3RhbmNlKSB7XG5c
dCAgUmVhY3RVcGRhdGVzLmVucXVldWVVcGRhdGUoaW50ZXJuYWxJbnN0YW5jZSk7XG5cdH1cblx0
XG5cdGZ1bmN0aW9uIGZvcm1hdFVuZXhwZWN0ZWRBcmd1bWVudChhcmcpIHtcblx0ICB2YXIgdHlw
ZSA9IHR5cGVvZiBhcmc7XG5cdCAgaWYgKHR5cGUgIT09ICdvYmplY3QnKSB7XG5cdCAgICByZXR1
cm4gdHlwZTtcblx0ICB9XG5cdCAgdmFyIGRpc3BsYXlOYW1lID0gYXJnLmNvbnN0cnVjdG9yICYm
IGFyZy5jb25zdHJ1Y3Rvci5uYW1lIHx8IHR5cGU7XG5cdCAgdmFyIGtleXMgPSBPYmplY3Qua2V5
cyhhcmcpO1xuXHQgIGlmIChrZXlzLmxlbmd0aCA+IDAgJiYga2V5cy5sZW5ndGggPCAyMCkge1xu
XHQgICAgcmV0dXJuIGRpc3BsYXlOYW1lICsgJyAoa2V5czogJyArIGtleXMuam9pbignLCAnKSAr
ICcpJztcblx0ICB9XG5cdCAgcmV0dXJuIGRpc3BsYXlOYW1lO1xuXHR9XG5cdFxuXHRmdW5jdGlv
biBnZXRJbnRlcm5hbEluc3RhbmNlUmVhZHlGb3JVcGRhdGUocHVibGljSW5zdGFuY2UsIGNhbGxl
ck5hbWUpIHtcblx0ICB2YXIgaW50ZXJuYWxJbnN0YW5jZSA9IFJlYWN0SW5zdGFuY2VNYXAuZ2V0
KHB1YmxpY0luc3RhbmNlKTtcblx0ICBpZiAoIWludGVybmFsSW5zdGFuY2UpIHtcblx0ICAgIGlm
IChmYWxzZSkge1xuXHQgICAgICB2YXIgY3RvciA9IHB1YmxpY0luc3RhbmNlLmNvbnN0cnVjdG9y
O1xuXHQgICAgICAvLyBPbmx5IHdhcm4gd2hlbiB3ZSBoYXZlIGEgY2FsbGVyTmFtZS4gT3RoZXJ3
aXNlIHdlIHNob3VsZCBiZSBzaWxlbnQuXG5cdCAgICAgIC8vIFdlJ3JlIHByb2JhYmx5IGNhbGxp
bmcgZnJvbSBlbnF1ZXVlQ2FsbGJhY2suIFdlIGRvbid0IHdhbnQgdG8gd2FyblxuXHQgICAgICAv
LyB0aGVyZSBiZWNhdXNlIHdlIGFscmVhZHkgd2FybmVkIGZvciB0aGUgY29ycmVzcG9uZGluZyBs
aWZlY3ljbGUgbWV0aG9kLlxuXHQgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1
Y3Rpb24nID8gd2FybmluZyghY2FsbGVyTmFtZSwgJyVzKC4uLik6IENhbiBvbmx5IHVwZGF0ZSBh
IG1vdW50ZWQgb3IgbW91bnRpbmcgY29tcG9uZW50LiAnICsgJ1RoaXMgdXN1YWxseSBtZWFucyB5
b3UgY2FsbGVkICVzKCkgb24gYW4gdW5tb3VudGVkIGNvbXBvbmVudC4gJyArICdUaGlzIGlzIGEg
bm8tb3AuIFBsZWFzZSBjaGVjayB0aGUgY29kZSBmb3IgdGhlICVzIGNvbXBvbmVudC4nLCBjYWxs
ZXJOYW1lLCBjYWxsZXJOYW1lLCBjdG9yICYmIChjdG9yLmRpc3BsYXlOYW1lIHx8IGN0b3IubmFt
ZSkgfHwgJ1JlYWN0Q2xhc3MnKSA6IHZvaWQgMDtcblx0ICAgIH1cblx0ICAgIHJldHVybiBudWxs
O1xuXHQgIH1cblx0XG5cdCAgaWYgKGZhbHNlKSB7XG5cdCAgICBwcm9jZXNzLmVudi5OT0RFX0VO
ViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50ID09
IG51bGwsICclcyguLi4pOiBDYW5ub3QgdXBkYXRlIGR1cmluZyBhbiBleGlzdGluZyBzdGF0ZSB0
cmFuc2l0aW9uIChzdWNoIGFzICcgKyBcIndpdGhpbiBgcmVuZGVyYCBvciBhbm90aGVyIGNvbXBv
bmVudCdzIGNvbnN0cnVjdG9yKS4gUmVuZGVyIG1ldGhvZHMgXCIgKyAnc2hvdWxkIGJlIGEgcHVy
ZSBmdW5jdGlvbiBvZiBwcm9wcyBhbmQgc3RhdGU7IGNvbnN0cnVjdG9yICcgKyAnc2lkZS1lZmZl
Y3RzIGFyZSBhbiBhbnRpLXBhdHRlcm4sIGJ1dCBjYW4gYmUgbW92ZWQgdG8gJyArICdgY29tcG9u
ZW50V2lsbE1vdW50YC4nLCBjYWxsZXJOYW1lKSA6IHZvaWQgMDtcblx0ICB9XG5cdFxuXHQgIHJl
dHVybiBpbnRlcm5hbEluc3RhbmNlO1xuXHR9XG5cdFxuXHQvKipcblx0ICogUmVhY3RVcGRhdGVR
dWV1ZSBhbGxvd3MgZm9yIHN0YXRlIHVwZGF0ZXMgdG8gYmUgc2NoZWR1bGVkIGludG8gYSBsYXRl
clxuXHQgKiByZWNvbmNpbGlhdGlvbiBzdGVwLlxuXHQgKi9cblx0dmFyIFJlYWN0VXBkYXRlUXVl
dWUgPSB7XG5cdCAgLyoqXG5cdCAgICogQ2hlY2tzIHdoZXRoZXIgb3Igbm90IHRoaXMgY29tcG9z
aXRlIGNvbXBvbmVudCBpcyBtb3VudGVkLlxuXHQgICAqIEBwYXJhbSB7UmVhY3RDbGFzc30gcHVi
bGljSW5zdGFuY2UgVGhlIGluc3RhbmNlIHdlIHdhbnQgdG8gdGVzdC5cblx0ICAgKiBAcmV0dXJu
IHtib29sZWFufSBUcnVlIGlmIG1vdW50ZWQsIGZhbHNlIG90aGVyd2lzZS5cblx0ICAgKiBAcHJv
dGVjdGVkXG5cdCAgICogQGZpbmFsXG5cdCAgICovXG5cdCAgaXNNb3VudGVkOiBmdW5jdGlvbiAo
cHVibGljSW5zdGFuY2UpIHtcblx0ICAgIGlmIChmYWxzZSkge1xuXHQgICAgICB2YXIgb3duZXIg
PSBSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50O1xuXHQgICAgICBpZiAob3duZXIgIT09IG51bGwp
IHtcblx0ICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2Fy
bmluZyhvd25lci5fd2FybmVkQWJvdXRSZWZzSW5SZW5kZXIsICclcyBpcyBhY2Nlc3NpbmcgaXNN
b3VudGVkIGluc2lkZSBpdHMgcmVuZGVyKCkgZnVuY3Rpb24uICcgKyAncmVuZGVyKCkgc2hvdWxk
IGJlIGEgcHVyZSBmdW5jdGlvbiBvZiBwcm9wcyBhbmQgc3RhdGUuIEl0IHNob3VsZCAnICsgJ25l
dmVyIGFjY2VzcyBzb21ldGhpbmcgdGhhdCByZXF1aXJlcyBzdGFsZSBkYXRhIGZyb20gdGhlIHBy
ZXZpb3VzICcgKyAncmVuZGVyLCBzdWNoIGFzIHJlZnMuIE1vdmUgdGhpcyBsb2dpYyB0byBjb21w
b25lbnREaWRNb3VudCBhbmQgJyArICdjb21wb25lbnREaWRVcGRhdGUgaW5zdGVhZC4nLCBvd25l
ci5nZXROYW1lKCkgfHwgJ0EgY29tcG9uZW50JykgOiB2b2lkIDA7XG5cdCAgICAgICAgb3duZXIu
X3dhcm5lZEFib3V0UmVmc0luUmVuZGVyID0gdHJ1ZTtcblx0ICAgICAgfVxuXHQgICAgfVxuXHQg
ICAgdmFyIGludGVybmFsSW5zdGFuY2UgPSBSZWFjdEluc3RhbmNlTWFwLmdldChwdWJsaWNJbnN0
YW5jZSk7XG5cdCAgICBpZiAoaW50ZXJuYWxJbnN0YW5jZSkge1xuXHQgICAgICAvLyBEdXJpbmcg
Y29tcG9uZW50V2lsbE1vdW50IGFuZCByZW5kZXIgdGhpcyB3aWxsIHN0aWxsIGJlIG51bGwgYnV0
IGFmdGVyXG5cdCAgICAgIC8vIHRoYXQgd2lsbCBhbHdheXMgcmVuZGVyIHRvIHNvbWV0aGluZy4g
QXQgbGVhc3QgZm9yIG5vdy4gU28gd2UgY2FuIHVzZVxuXHQgICAgICAvLyB0aGlzIGhhY2suXG5c
dCAgICAgIHJldHVybiAhIWludGVybmFsSW5zdGFuY2UuX3JlbmRlcmVkQ29tcG9uZW50O1xuXHQg
ICAgfSBlbHNlIHtcblx0ICAgICAgcmV0dXJuIGZhbHNlO1xuXHQgICAgfVxuXHQgIH0sXG5cdFxu
XHQgIC8qKlxuXHQgICAqIEVucXVldWUgYSBjYWxsYmFjayB0aGF0IHdpbGwgYmUgZXhlY3V0ZWQg
YWZ0ZXIgYWxsIHRoZSBwZW5kaW5nIHVwZGF0ZXNcblx0ICAgKiBoYXZlIHByb2Nlc3NlZC5cblx0
ICAgKlxuXHQgICAqIEBwYXJhbSB7UmVhY3RDbGFzc30gcHVibGljSW5zdGFuY2UgVGhlIGluc3Rh
bmNlIHRvIHVzZSBhcyBgdGhpc2AgY29udGV4dC5cblx0ICAgKiBAcGFyYW0gez9mdW5jdGlvbn0g
Y2FsbGJhY2sgQ2FsbGVkIGFmdGVyIHN0YXRlIGlzIHVwZGF0ZWQuXG5cdCAgICogQHBhcmFtIHtz
dHJpbmd9IGNhbGxlck5hbWUgTmFtZSBvZiB0aGUgY2FsbGluZyBmdW5jdGlvbiBpbiB0aGUgcHVi
bGljIEFQSS5cblx0ICAgKiBAaW50ZXJuYWxcblx0ICAgKi9cblx0ICBlbnF1ZXVlQ2FsbGJhY2s6
IGZ1bmN0aW9uIChwdWJsaWNJbnN0YW5jZSwgY2FsbGJhY2ssIGNhbGxlck5hbWUpIHtcblx0ICAg
IFJlYWN0VXBkYXRlUXVldWUudmFsaWRhdGVDYWxsYmFjayhjYWxsYmFjaywgY2FsbGVyTmFtZSk7
XG5cdCAgICB2YXIgaW50ZXJuYWxJbnN0YW5jZSA9IGdldEludGVybmFsSW5zdGFuY2VSZWFkeUZv
clVwZGF0ZShwdWJsaWNJbnN0YW5jZSk7XG5cdFxuXHQgICAgLy8gUHJldmlvdXNseSB3ZSB3b3Vs
ZCB0aHJvdyBhbiBlcnJvciBpZiB3ZSBkaWRuJ3QgaGF2ZSBhbiBpbnRlcm5hbFxuXHQgICAgLy8g
aW5zdGFuY2UuIFNpbmNlIHdlIHdhbnQgdG8gbWFrZSBpdCBhIG5vLW9wIGluc3RlYWQsIHdlIG1p
cnJvciB0aGUgc2FtZVxuXHQgICAgLy8gYmVoYXZpb3Igd2UgaGF2ZSBpbiBvdGhlciBlbnF1ZXVl
KiBtZXRob2RzLlxuXHQgICAgLy8gV2UgYWxzbyBuZWVkIHRvIGlnbm9yZSBjYWxsYmFja3MgaW4g
Y29tcG9uZW50V2lsbE1vdW50LiBTZWVcblx0ICAgIC8vIGVucXVldWVVcGRhdGVzLlxuXHQgICAg
aWYgKCFpbnRlcm5hbEluc3RhbmNlKSB7XG5cdCAgICAgIHJldHVybiBudWxsO1xuXHQgICAgfVxu
XHRcblx0ICAgIGlmIChpbnRlcm5hbEluc3RhbmNlLl9wZW5kaW5nQ2FsbGJhY2tzKSB7XG5cdCAg
ICAgIGludGVybmFsSW5zdGFuY2UuX3BlbmRpbmdDYWxsYmFja3MucHVzaChjYWxsYmFjayk7XG5c
dCAgICB9IGVsc2Uge1xuXHQgICAgICBpbnRlcm5hbEluc3RhbmNlLl9wZW5kaW5nQ2FsbGJhY2tz
ID0gW2NhbGxiYWNrXTtcblx0ICAgIH1cblx0ICAgIC8vIFRPRE86IFRoZSBjYWxsYmFjayBoZXJl
IGlzIGlnbm9yZWQgd2hlbiBzZXRTdGF0ZSBpcyBjYWxsZWQgZnJvbVxuXHQgICAgLy8gY29tcG9u
ZW50V2lsbE1vdW50LiBFaXRoZXIgZml4IGl0IG9yIGRpc2FsbG93IGRvaW5nIHNvIGNvbXBsZXRl
bHkgaW5cblx0ICAgIC8vIGZhdm9yIG9mIGdldEluaXRpYWxTdGF0ZS4gQWx0ZXJuYXRpdmVseSwg
d2UgY2FuIGRpc2FsbG93XG5cdCAgICAvLyBjb21wb25lbnRXaWxsTW91bnQgZHVyaW5nIHNlcnZl
ci1zaWRlIHJlbmRlcmluZy5cblx0ICAgIGVucXVldWVVcGRhdGUoaW50ZXJuYWxJbnN0YW5jZSk7
XG5cdCAgfSxcblx0XG5cdCAgZW5xdWV1ZUNhbGxiYWNrSW50ZXJuYWw6IGZ1bmN0aW9uIChpbnRl
cm5hbEluc3RhbmNlLCBjYWxsYmFjaykge1xuXHQgICAgaWYgKGludGVybmFsSW5zdGFuY2UuX3Bl
bmRpbmdDYWxsYmFja3MpIHtcblx0ICAgICAgaW50ZXJuYWxJbnN0YW5jZS5fcGVuZGluZ0NhbGxi
YWNrcy5wdXNoKGNhbGxiYWNrKTtcblx0ICAgIH0gZWxzZSB7XG5cdCAgICAgIGludGVybmFsSW5z
dGFuY2UuX3BlbmRpbmdDYWxsYmFja3MgPSBbY2FsbGJhY2tdO1xuXHQgICAgfVxuXHQgICAgZW5x
dWV1ZVVwZGF0ZShpbnRlcm5hbEluc3RhbmNlKTtcblx0ICB9LFxuXHRcblx0ICAvKipcblx0ICAg
KiBGb3JjZXMgYW4gdXBkYXRlLiBUaGlzIHNob3VsZCBvbmx5IGJlIGludm9rZWQgd2hlbiBpdCBp
cyBrbm93biB3aXRoXG5cdCAgICogY2VydGFpbnR5IHRoYXQgd2UgYXJlICoqbm90KiogaW4gYSBE
T00gdHJhbnNhY3Rpb24uXG5cdCAgICpcblx0ICAgKiBZb3UgbWF5IHdhbnQgdG8gY2FsbCB0aGlz
IHdoZW4geW91IGtub3cgdGhhdCBzb21lIGRlZXBlciBhc3BlY3Qgb2YgdGhlXG5cdCAgICogY29t
cG9uZW50J3Mgc3RhdGUgaGFzIGNoYW5nZWQgYnV0IGBzZXRTdGF0ZWAgd2FzIG5vdCBjYWxsZWQu
XG5cdCAgICpcblx0ICAgKiBUaGlzIHdpbGwgbm90IGludm9rZSBgc2hvdWxkQ29tcG9uZW50VXBk
YXRlYCwgYnV0IGl0IHdpbGwgaW52b2tlXG5cdCAgICogYGNvbXBvbmVudFdpbGxVcGRhdGVgIGFu
ZCBgY29tcG9uZW50RGlkVXBkYXRlYC5cblx0ICAgKlxuXHQgICAqIEBwYXJhbSB7UmVhY3RDbGFz
c30gcHVibGljSW5zdGFuY2UgVGhlIGluc3RhbmNlIHRoYXQgc2hvdWxkIHJlcmVuZGVyLlxuXHQg
ICAqIEBpbnRlcm5hbFxuXHQgICAqL1xuXHQgIGVucXVldWVGb3JjZVVwZGF0ZTogZnVuY3Rpb24g
KHB1YmxpY0luc3RhbmNlKSB7XG5cdCAgICB2YXIgaW50ZXJuYWxJbnN0YW5jZSA9IGdldEludGVy
bmFsSW5zdGFuY2VSZWFkeUZvclVwZGF0ZShwdWJsaWNJbnN0YW5jZSwgJ2ZvcmNlVXBkYXRlJyk7
XG5cdFxuXHQgICAgaWYgKCFpbnRlcm5hbEluc3RhbmNlKSB7XG5cdCAgICAgIHJldHVybjtcblx0
ICAgIH1cblx0XG5cdCAgICBpbnRlcm5hbEluc3RhbmNlLl9wZW5kaW5nRm9yY2VVcGRhdGUgPSB0
cnVlO1xuXHRcblx0ICAgIGVucXVldWVVcGRhdGUoaW50ZXJuYWxJbnN0YW5jZSk7XG5cdCAgfSxc
blx0XG5cdCAgLyoqXG5cdCAgICogUmVwbGFjZXMgYWxsIG9mIHRoZSBzdGF0ZS4gQWx3YXlzIHVz
ZSB0aGlzIG9yIGBzZXRTdGF0ZWAgdG8gbXV0YXRlIHN0YXRlLlxuXHQgICAqIFlvdSBzaG91bGQg
dHJlYXQgYHRoaXMuc3RhdGVgIGFzIGltbXV0YWJsZS5cblx0ICAgKlxuXHQgICAqIFRoZXJlIGlz
IG5vIGd1YXJhbnRlZSB0aGF0IGB0aGlzLnN0YXRlYCB3aWxsIGJlIGltbWVkaWF0ZWx5IHVwZGF0
ZWQsIHNvXG5cdCAgICogYWNjZXNzaW5nIGB0aGlzLnN0YXRlYCBhZnRlciBjYWxsaW5nIHRoaXMg
bWV0aG9kIG1heSByZXR1cm4gdGhlIG9sZCB2YWx1ZS5cblx0ICAgKlxuXHQgICAqIEBwYXJhbSB7
UmVhY3RDbGFzc30gcHVibGljSW5zdGFuY2UgVGhlIGluc3RhbmNlIHRoYXQgc2hvdWxkIHJlcmVu
ZGVyLlxuXHQgICAqIEBwYXJhbSB7b2JqZWN0fSBjb21wbGV0ZVN0YXRlIE5leHQgc3RhdGUuXG5c
dCAgICogQGludGVybmFsXG5cdCAgICovXG5cdCAgZW5xdWV1ZVJlcGxhY2VTdGF0ZTogZnVuY3Rp
b24gKHB1YmxpY0luc3RhbmNlLCBjb21wbGV0ZVN0YXRlLCBjYWxsYmFjaykge1xuXHQgICAgdmFy
IGludGVybmFsSW5zdGFuY2UgPSBnZXRJbnRlcm5hbEluc3RhbmNlUmVhZHlGb3JVcGRhdGUocHVi
bGljSW5zdGFuY2UsICdyZXBsYWNlU3RhdGUnKTtcblx0XG5cdCAgICBpZiAoIWludGVybmFsSW5z
dGFuY2UpIHtcblx0ICAgICAgcmV0dXJuO1xuXHQgICAgfVxuXHRcblx0ICAgIGludGVybmFsSW5z
dGFuY2UuX3BlbmRpbmdTdGF0ZVF1ZXVlID0gW2NvbXBsZXRlU3RhdGVdO1xuXHQgICAgaW50ZXJu
YWxJbnN0YW5jZS5fcGVuZGluZ1JlcGxhY2VTdGF0ZSA9IHRydWU7XG5cdFxuXHQgICAgLy8gRnV0
dXJlLXByb29mIDE1LjVcblx0ICAgIGlmIChjYWxsYmFjayAhPT0gdW5kZWZpbmVkICYmIGNhbGxi
YWNrICE9PSBudWxsKSB7XG5cdCAgICAgIFJlYWN0VXBkYXRlUXVldWUudmFsaWRhdGVDYWxsYmFj
ayhjYWxsYmFjaywgJ3JlcGxhY2VTdGF0ZScpO1xuXHQgICAgICBpZiAoaW50ZXJuYWxJbnN0YW5j
ZS5fcGVuZGluZ0NhbGxiYWNrcykge1xuXHQgICAgICAgIGludGVybmFsSW5zdGFuY2UuX3BlbmRp
bmdDYWxsYmFja3MucHVzaChjYWxsYmFjayk7XG5cdCAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAg
aW50ZXJuYWxJbnN0YW5jZS5fcGVuZGluZ0NhbGxiYWNrcyA9IFtjYWxsYmFja107XG5cdCAgICAg
IH1cblx0ICAgIH1cblx0XG5cdCAgICBlbnF1ZXVlVXBkYXRlKGludGVybmFsSW5zdGFuY2UpO1xu
XHQgIH0sXG5cdFxuXHQgIC8qKlxuXHQgICAqIFNldHMgYSBzdWJzZXQgb2YgdGhlIHN0YXRlLiBU
aGlzIG9ubHkgZXhpc3RzIGJlY2F1c2UgX3BlbmRpbmdTdGF0ZSBpc1xuXHQgICAqIGludGVybmFs
LiBUaGlzIHByb3ZpZGVzIGEgbWVyZ2luZyBzdHJhdGVneSB0aGF0IGlzIG5vdCBhdmFpbGFibGUg
dG8gZGVlcFxuXHQgICAqIHByb3BlcnRpZXMgd2hpY2ggaXMgY29uZnVzaW5nLiBUT0RPOiBFeHBv
c2UgcGVuZGluZ1N0YXRlIG9yIGRvbid0IHVzZSBpdFxuXHQgICAqIGR1cmluZyB0aGUgbWVyZ2Uu
XG5cdCAgICpcblx0ICAgKiBAcGFyYW0ge1JlYWN0Q2xhc3N9IHB1YmxpY0luc3RhbmNlIFRoZSBp
bnN0YW5jZSB0aGF0IHNob3VsZCByZXJlbmRlci5cblx0ICAgKiBAcGFyYW0ge29iamVjdH0gcGFy
dGlhbFN0YXRlIE5leHQgcGFydGlhbCBzdGF0ZSB0byBiZSBtZXJnZWQgd2l0aCBzdGF0ZS5cblx0
ICAgKiBAaW50ZXJuYWxcblx0ICAgKi9cblx0ICBlbnF1ZXVlU2V0U3RhdGU6IGZ1bmN0aW9uIChw
dWJsaWNJbnN0YW5jZSwgcGFydGlhbFN0YXRlKSB7XG5cdCAgICBpZiAoZmFsc2UpIHtcblx0ICAg
ICAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9uU2V0U3RhdGUoKTtcblx0ICAgICAg
cHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcocGFydGlhbFN0
YXRlICE9IG51bGwsICdzZXRTdGF0ZSguLi4pOiBZb3UgcGFzc2VkIGFuIHVuZGVmaW5lZCBvciBu
dWxsIHN0YXRlIG9iamVjdDsgJyArICdpbnN0ZWFkLCB1c2UgZm9yY2VVcGRhdGUoKS4nKSA6IHZv
aWQgMDtcblx0ICAgIH1cblx0XG5cdCAgICB2YXIgaW50ZXJuYWxJbnN0YW5jZSA9IGdldEludGVy
bmFsSW5zdGFuY2VSZWFkeUZvclVwZGF0ZShwdWJsaWNJbnN0YW5jZSwgJ3NldFN0YXRlJyk7XG5c
dFxuXHQgICAgaWYgKCFpbnRlcm5hbEluc3RhbmNlKSB7XG5cdCAgICAgIHJldHVybjtcblx0ICAg
IH1cblx0XG5cdCAgICB2YXIgcXVldWUgPSBpbnRlcm5hbEluc3RhbmNlLl9wZW5kaW5nU3RhdGVR
dWV1ZSB8fCAoaW50ZXJuYWxJbnN0YW5jZS5fcGVuZGluZ1N0YXRlUXVldWUgPSBbXSk7XG5cdCAg
ICBxdWV1ZS5wdXNoKHBhcnRpYWxTdGF0ZSk7XG5cdFxuXHQgICAgZW5xdWV1ZVVwZGF0ZShpbnRl
cm5hbEluc3RhbmNlKTtcblx0ICB9LFxuXHRcblx0ICBlbnF1ZXVlRWxlbWVudEludGVybmFsOiBm
dW5jdGlvbiAoaW50ZXJuYWxJbnN0YW5jZSwgbmV4dEVsZW1lbnQsIG5leHRDb250ZXh0KSB7XG5c
dCAgICBpbnRlcm5hbEluc3RhbmNlLl9wZW5kaW5nRWxlbWVudCA9IG5leHRFbGVtZW50O1xuXHQg
ICAgLy8gVE9ETzogaW50cm9kdWNlIF9wZW5kaW5nQ29udGV4dCBpbnN0ZWFkIG9mIHNldHRpbmcg
aXQgZGlyZWN0bHkuXG5cdCAgICBpbnRlcm5hbEluc3RhbmNlLl9jb250ZXh0ID0gbmV4dENvbnRl
eHQ7XG5cdCAgICBlbnF1ZXVlVXBkYXRlKGludGVybmFsSW5zdGFuY2UpO1xuXHQgIH0sXG5cdFxu
XHQgIHZhbGlkYXRlQ2FsbGJhY2s6IGZ1bmN0aW9uIChjYWxsYmFjaywgY2FsbGVyTmFtZSkge1xu
XHQgICAgISghY2FsbGJhY2sgfHwgdHlwZW9mIGNhbGxiYWNrID09PSAnZnVuY3Rpb24nKSA/ICBm
YWxzZSA/IGludmFyaWFudChmYWxzZSwgJyVzKC4uLik6IEV4cGVjdGVkIHRoZSBsYXN0IG9wdGlv
bmFsIGBjYWxsYmFja2AgYXJndW1lbnQgdG8gYmUgYSBmdW5jdGlvbi4gSW5zdGVhZCByZWNlaXZl
ZDogJXMuJywgY2FsbGVyTmFtZSwgZm9ybWF0VW5leHBlY3RlZEFyZ3VtZW50KGNhbGxiYWNrKSkg
OiBfcHJvZEludmFyaWFudCgnMTIyJywgY2FsbGVyTmFtZSwgZm9ybWF0VW5leHBlY3RlZEFyZ3Vt
ZW50KGNhbGxiYWNrKSkgOiB2b2lkIDA7XG5cdCAgfVxuXHR9O1xuXHRcblx0bW9kdWxlLmV4cG9y
dHMgPSBSZWFjdFVwZGF0ZVF1ZXVlO1xuXG4vKioqLyB9LFxuLyogNDMgKi9cbi8qKiovIGZ1bmN0
aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxMy1wcmVz
ZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQg
KiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5z
ZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBv
ZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCBy
aWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0
b3J5LlxuXHQgKlxuXHQgKi9cblx0XG5cdC8qIGdsb2JhbHMgTVNBcHAgKi9cblx0XG5cdCd1c2Ug
c3RyaWN0Jztcblx0XG5cdC8qKlxuXHQgKiBDcmVhdGUgYSBmdW5jdGlvbiB3aGljaCBoYXMgJ3Vu
c2FmZScgcHJpdmlsZWdlcyAocmVxdWlyZWQgYnkgd2luZG93czggYXBwcylcblx0ICovXG5cdFxu
XHR2YXIgY3JlYXRlTWljcm9zb2Z0VW5zYWZlTG9jYWxGdW5jdGlvbiA9IGZ1bmN0aW9uIChmdW5j
KSB7XG5cdCAgaWYgKHR5cGVvZiBNU0FwcCAhPT0gJ3VuZGVmaW5lZCcgJiYgTVNBcHAuZXhlY1Vu
c2FmZUxvY2FsRnVuY3Rpb24pIHtcblx0ICAgIHJldHVybiBmdW5jdGlvbiAoYXJnMCwgYXJnMSwg
YXJnMiwgYXJnMykge1xuXHQgICAgICBNU0FwcC5leGVjVW5zYWZlTG9jYWxGdW5jdGlvbihmdW5j
dGlvbiAoKSB7XG5cdCAgICAgICAgcmV0dXJuIGZ1bmMoYXJnMCwgYXJnMSwgYXJnMiwgYXJnMyk7
XG5cdCAgICAgIH0pO1xuXHQgICAgfTtcblx0ICB9IGVsc2Uge1xuXHQgICAgcmV0dXJuIGZ1bmM7
XG5cdCAgfVxuXHR9O1xuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBjcmVhdGVNaWNyb3NvZnRVbnNh
ZmVMb2NhbEZ1bmN0aW9uO1xuXG4vKioqLyB9LFxuLyogNDQgKi9cbi8qKiovIGZ1bmN0aW9uKG1v
ZHVsZSwgZXhwb3J0cykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBG
YWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlz
IHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3Vu
ZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlz
IHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMg
Y2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5Llxu
XHQgKlxuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdC8qKlxuXHQgKiBgY2hhckNv
ZGVgIHJlcHJlc2VudHMgdGhlIGFjdHVhbCBcImNoYXJhY3RlciBjb2RlXCIgYW5kIGlzIHNhZmUg
dG8gdXNlIHdpdGhcblx0ICogYFN0cmluZy5mcm9tQ2hhckNvZGVgLiBBcyBzdWNoLCBvbmx5IGtl
eXMgdGhhdCBjb3JyZXNwb25kIHRvIHByaW50YWJsZVxuXHQgKiBjaGFyYWN0ZXJzIHByb2R1Y2Ug
YSB2YWxpZCBgY2hhckNvZGVgLCB0aGUgb25seSBleGNlcHRpb24gdG8gdGhpcyBpcyBFbnRlci5c
blx0ICogVGhlIFRhYi1rZXkgaXMgY29uc2lkZXJlZCBub24tcHJpbnRhYmxlIGFuZCBkb2VzIG5v
dCBoYXZlIGEgYGNoYXJDb2RlYCxcblx0ICogcHJlc3VtYWJseSBiZWNhdXNlIGl0IGRvZXMgbm90
IHByb2R1Y2UgYSB0YWItY2hhcmFjdGVyIGluIGJyb3dzZXJzLlxuXHQgKlxuXHQgKiBAcGFyYW0g
e29iamVjdH0gbmF0aXZlRXZlbnQgTmF0aXZlIGJyb3dzZXIgZXZlbnQuXG5cdCAqIEByZXR1cm4g
e251bWJlcn0gTm9ybWFsaXplZCBgY2hhckNvZGVgIHByb3BlcnR5LlxuXHQgKi9cblx0XG5cdGZ1
bmN0aW9uIGdldEV2ZW50Q2hhckNvZGUobmF0aXZlRXZlbnQpIHtcblx0ICB2YXIgY2hhckNvZGU7
XG5cdCAgdmFyIGtleUNvZGUgPSBuYXRpdmVFdmVudC5rZXlDb2RlO1xuXHRcblx0ICBpZiAoJ2No
YXJDb2RlJyBpbiBuYXRpdmVFdmVudCkge1xuXHQgICAgY2hhckNvZGUgPSBuYXRpdmVFdmVudC5j
aGFyQ29kZTtcblx0XG5cdCAgICAvLyBGRiBkb2VzIG5vdCBzZXQgYGNoYXJDb2RlYCBmb3IgdGhl
IEVudGVyLWtleSwgY2hlY2sgYWdhaW5zdCBga2V5Q29kZWAuXG5cdCAgICBpZiAoY2hhckNvZGUg
PT09IDAgJiYga2V5Q29kZSA9PT0gMTMpIHtcblx0ICAgICAgY2hhckNvZGUgPSAxMztcblx0ICAg
IH1cblx0ICB9IGVsc2Uge1xuXHQgICAgLy8gSUU4IGRvZXMgbm90IGltcGxlbWVudCBgY2hhckNv
ZGVgLCBidXQgYGtleUNvZGVgIGhhcyB0aGUgY29ycmVjdCB2YWx1ZS5cblx0ICAgIGNoYXJDb2Rl
ID0ga2V5Q29kZTtcblx0ICB9XG5cdFxuXHQgIC8vIFNvbWUgbm9uLXByaW50YWJsZSBrZXlzIGFy
ZSByZXBvcnRlZCBpbiBgY2hhckNvZGVgL2BrZXlDb2RlYCwgZGlzY2FyZCB0aGVtLlxuXHQgIC8v
IE11c3Qgbm90IGRpc2NhcmQgdGhlIChub24tKXByaW50YWJsZSBFbnRlci1rZXkuXG5cdCAgaWYg
KGNoYXJDb2RlID49IDMyIHx8IGNoYXJDb2RlID09PSAxMykge1xuXHQgICAgcmV0dXJuIGNoYXJD
b2RlO1xuXHQgIH1cblx0XG5cdCAgcmV0dXJuIDA7XG5cdH1cblx0XG5cdG1vZHVsZS5leHBvcnRz
ID0gZ2V0RXZlbnRDaGFyQ29kZTtcblxuLyoqKi8gfSxcbi8qIDQ1ICovXG4vKioqLyBmdW5jdGlv
bihtb2R1bGUsIGV4cG9ydHMpIHtcblxuXHQvKipcblx0ICogQ29weXJpZ2h0IDIwMTMtcHJlc2Vu
dCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICog
VGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2Ug
Zm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2Yg
dGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmln
aHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9y
eS5cblx0ICpcblx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHQvKipcblx0ICogVHJh
bnNsYXRpb24gZnJvbSBtb2RpZmllciBrZXkgdG8gdGhlIGFzc29jaWF0ZWQgcHJvcGVydHkgaW4g
dGhlIGV2ZW50LlxuXHQgKiBAc2VlIGh0dHA6Ly93d3cudzMub3JnL1RSL0RPTS1MZXZlbC0zLUV2
ZW50cy8ja2V5cy1Nb2RpZmllcnNcblx0ICovXG5cdFxuXHR2YXIgbW9kaWZpZXJLZXlUb1Byb3Ag
PSB7XG5cdCAgQWx0OiAnYWx0S2V5Jyxcblx0ICBDb250cm9sOiAnY3RybEtleScsXG5cdCAgTWV0
YTogJ21ldGFLZXknLFxuXHQgIFNoaWZ0OiAnc2hpZnRLZXknXG5cdH07XG5cdFxuXHQvLyBJRTgg
ZG9lcyBub3QgaW1wbGVtZW50IGdldE1vZGlmaWVyU3RhdGUgc28gd2Ugc2ltcGx5IG1hcCBpdCB0
byB0aGUgb25seVxuXHQvLyBtb2RpZmllciBrZXlzIGV4cG9zZWQgYnkgdGhlIGV2ZW50IGl0c2Vs
ZiwgZG9lcyBub3Qgc3VwcG9ydCBMb2NrLWtleXMuXG5cdC8vIEN1cnJlbnRseSwgYWxsIG1ham9y
IGJyb3dzZXJzIGV4Y2VwdCBDaHJvbWUgc2VlbXMgdG8gc3VwcG9ydCBMb2NrLWtleXMuXG5cdGZ1
bmN0aW9uIG1vZGlmaWVyU3RhdGVHZXR0ZXIoa2V5QXJnKSB7XG5cdCAgdmFyIHN5bnRoZXRpY0V2
ZW50ID0gdGhpcztcblx0ICB2YXIgbmF0aXZlRXZlbnQgPSBzeW50aGV0aWNFdmVudC5uYXRpdmVF
dmVudDtcblx0ICBpZiAobmF0aXZlRXZlbnQuZ2V0TW9kaWZpZXJTdGF0ZSkge1xuXHQgICAgcmV0
dXJuIG5hdGl2ZUV2ZW50LmdldE1vZGlmaWVyU3RhdGUoa2V5QXJnKTtcblx0ICB9XG5cdCAgdmFy
IGtleVByb3AgPSBtb2RpZmllcktleVRvUHJvcFtrZXlBcmddO1xuXHQgIHJldHVybiBrZXlQcm9w
ID8gISFuYXRpdmVFdmVudFtrZXlQcm9wXSA6IGZhbHNlO1xuXHR9XG5cdFxuXHRmdW5jdGlvbiBn
ZXRFdmVudE1vZGlmaWVyU3RhdGUobmF0aXZlRXZlbnQpIHtcblx0ICByZXR1cm4gbW9kaWZpZXJT
dGF0ZUdldHRlcjtcblx0fVxuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBnZXRFdmVudE1vZGlmaWVy
U3RhdGU7XG5cbi8qKiovIH0sXG4vKiA0NiAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBv
cnRzKSB7XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJ
bmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNv
ZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxu
XHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRy
ZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91
bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAq
L1xuXHRcblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0LyoqXG5cdCAqIEdldHMgdGhlIHRhcmdldCBu
b2RlIGZyb20gYSBuYXRpdmUgYnJvd3NlciBldmVudCBieSBhY2NvdW50aW5nIGZvclxuXHQgKiBp
bmNvbnNpc3RlbmNpZXMgaW4gYnJvd3NlciBET00gQVBJcy5cblx0ICpcblx0ICogQHBhcmFtIHtv
YmplY3R9IG5hdGl2ZUV2ZW50IE5hdGl2ZSBicm93c2VyIGV2ZW50LlxuXHQgKiBAcmV0dXJuIHtE
T01FdmVudFRhcmdldH0gVGFyZ2V0IG5vZGUuXG5cdCAqL1xuXHRcblx0ZnVuY3Rpb24gZ2V0RXZl
bnRUYXJnZXQobmF0aXZlRXZlbnQpIHtcblx0ICB2YXIgdGFyZ2V0ID0gbmF0aXZlRXZlbnQudGFy
Z2V0IHx8IG5hdGl2ZUV2ZW50LnNyY0VsZW1lbnQgfHwgd2luZG93O1xuXHRcblx0ICAvLyBOb3Jt
YWxpemUgU1ZHIDx1c2U+IGVsZW1lbnQgZXZlbnRzICM0OTYzXG5cdCAgaWYgKHRhcmdldC5jb3Jy
ZXNwb25kaW5nVXNlRWxlbWVudCkge1xuXHQgICAgdGFyZ2V0ID0gdGFyZ2V0LmNvcnJlc3BvbmRp
bmdVc2VFbGVtZW50O1xuXHQgIH1cblx0XG5cdCAgLy8gU2FmYXJpIG1heSBmaXJlIGV2ZW50cyBv
biB0ZXh0IG5vZGVzIChOb2RlLlRFWFRfTk9ERSBpcyAzKS5cblx0ICAvLyBAc2VlIGh0dHA6Ly93
d3cucXVpcmtzbW9kZS5vcmcvanMvZXZlbnRzX3Byb3BlcnRpZXMuaHRtbFxuXHQgIHJldHVybiB0
YXJnZXQubm9kZVR5cGUgPT09IDMgPyB0YXJnZXQucGFyZW50Tm9kZSA6IHRhcmdldDtcblx0fVxu
XHRcblx0bW9kdWxlLmV4cG9ydHMgPSBnZXRFdmVudFRhcmdldDtcblxuLyoqKi8gfSxcbi8qIDQ3
ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18p
IHtcblxuXHQvKipcblx0ICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5c
blx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBp
cyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAq
IExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4g
QW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBp
biB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpcblx0ICovXG5c
dFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHR2YXIgRXhlY3V0aW9uRW52aXJvbm1lbnQgPSBfX3dl
YnBhY2tfcmVxdWlyZV9fKDYpO1xuXHRcblx0dmFyIHVzZUhhc0ZlYXR1cmU7XG5cdGlmIChFeGVj
dXRpb25FbnZpcm9ubWVudC5jYW5Vc2VET00pIHtcblx0ICB1c2VIYXNGZWF0dXJlID0gZG9jdW1l
bnQuaW1wbGVtZW50YXRpb24gJiYgZG9jdW1lbnQuaW1wbGVtZW50YXRpb24uaGFzRmVhdHVyZSAm
JlxuXHQgIC8vIGFsd2F5cyByZXR1cm5zIHRydWUgaW4gbmV3ZXIgYnJvd3NlcnMgYXMgcGVyIHRo
ZSBzdGFuZGFyZC5cblx0ICAvLyBAc2VlIGh0dHA6Ly9kb20uc3BlYy53aGF0d2cub3JnLyNkb20t
ZG9taW1wbGVtZW50YXRpb24taGFzZmVhdHVyZVxuXHQgIGRvY3VtZW50LmltcGxlbWVudGF0aW9u
Lmhhc0ZlYXR1cmUoJycsICcnKSAhPT0gdHJ1ZTtcblx0fVxuXHRcblx0LyoqXG5cdCAqIENoZWNr
cyBpZiBhbiBldmVudCBpcyBzdXBwb3J0ZWQgaW4gdGhlIGN1cnJlbnQgZXhlY3V0aW9uIGVudmly
b25tZW50LlxuXHQgKlxuXHQgKiBOT1RFOiBUaGlzIHdpbGwgbm90IHdvcmsgY29ycmVjdGx5IGZv
ciBub24tZ2VuZXJpYyBldmVudHMgc3VjaCBhcyBgY2hhbmdlYCxcblx0ICogYHJlc2V0YCwgYGxv
YWRgLCBgZXJyb3JgLCBhbmQgYHNlbGVjdGAuXG5cdCAqXG5cdCAqIEJvcnJvd3MgZnJvbSBNb2Rl
cm5penIuXG5cdCAqXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBldmVudE5hbWVTdWZmaXggRXZlbnQg
bmFtZSwgZS5nLiBcImNsaWNrXCIuXG5cdCAqIEBwYXJhbSB7P2Jvb2xlYW59IGNhcHR1cmUgQ2hl
Y2sgaWYgdGhlIGNhcHR1cmUgcGhhc2UgaXMgc3VwcG9ydGVkLlxuXHQgKiBAcmV0dXJuIHtib29s
ZWFufSBUcnVlIGlmIHRoZSBldmVudCBpcyBzdXBwb3J0ZWQuXG5cdCAqIEBpbnRlcm5hbFxuXHQg
KiBAbGljZW5zZSBNb2Rlcm5penIgMy4wLjBwcmUgKEN1c3RvbSBCdWlsZCkgfCBNSVRcblx0ICov
XG5cdGZ1bmN0aW9uIGlzRXZlbnRTdXBwb3J0ZWQoZXZlbnROYW1lU3VmZml4LCBjYXB0dXJlKSB7
XG5cdCAgaWYgKCFFeGVjdXRpb25FbnZpcm9ubWVudC5jYW5Vc2VET00gfHwgY2FwdHVyZSAmJiAh
KCdhZGRFdmVudExpc3RlbmVyJyBpbiBkb2N1bWVudCkpIHtcblx0ICAgIHJldHVybiBmYWxzZTtc
blx0ICB9XG5cdFxuXHQgIHZhciBldmVudE5hbWUgPSAnb24nICsgZXZlbnROYW1lU3VmZml4O1xu
XHQgIHZhciBpc1N1cHBvcnRlZCA9IGV2ZW50TmFtZSBpbiBkb2N1bWVudDtcblx0XG5cdCAgaWYg
KCFpc1N1cHBvcnRlZCkge1xuXHQgICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCdkaXYnKTtcblx0ICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKGV2ZW50TmFtZSwgJ3JldHVy
bjsnKTtcblx0ICAgIGlzU3VwcG9ydGVkID0gdHlwZW9mIGVsZW1lbnRbZXZlbnROYW1lXSA9PT0g
J2Z1bmN0aW9uJztcblx0ICB9XG5cdFxuXHQgIGlmICghaXNTdXBwb3J0ZWQgJiYgdXNlSGFzRmVh
dHVyZSAmJiBldmVudE5hbWVTdWZmaXggPT09ICd3aGVlbCcpIHtcblx0ICAgIC8vIFRoaXMgaXMg
dGhlIG9ubHkgd2F5IHRvIHRlc3Qgc3VwcG9ydCBmb3IgdGhlIGB3aGVlbGAgZXZlbnQgaW4gSUU5
Ky5cblx0ICAgIGlzU3VwcG9ydGVkID0gZG9jdW1lbnQuaW1wbGVtZW50YXRpb24uaGFzRmVhdHVy
ZSgnRXZlbnRzLndoZWVsJywgJzMuMCcpO1xuXHQgIH1cblx0XG5cdCAgcmV0dXJuIGlzU3VwcG9y
dGVkO1xuXHR9XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IGlzRXZlbnRTdXBwb3J0ZWQ7XG5cbi8q
KiovIH0sXG4vKiA0OCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cblx0
LyoqXG5cdCAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFs
bCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5z
ZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNF
IGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0
aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBB
VEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqL1xuXHRcblx0J3Vz
ZSBzdHJpY3QnO1xuXHRcblx0LyoqXG5cdCAqIEdpdmVuIGEgYHByZXZFbGVtZW50YCBhbmQgYG5l
eHRFbGVtZW50YCwgZGV0ZXJtaW5lcyBpZiB0aGUgZXhpc3Rpbmdcblx0ICogaW5zdGFuY2Ugc2hv
dWxkIGJlIHVwZGF0ZWQgYXMgb3Bwb3NlZCB0byBiZWluZyBkZXN0cm95ZWQgb3IgcmVwbGFjZWQg
YnkgYSBuZXdcblx0ICogaW5zdGFuY2UuIEJvdGggYXJndW1lbnRzIGFyZSBlbGVtZW50cy4gVGhp
cyBlbnN1cmVzIHRoYXQgdGhpcyBsb2dpYyBjYW5cblx0ICogb3BlcmF0ZSBvbiBzdGF0ZWxlc3Mg
dHJlZXMgd2l0aG91dCBhbnkgYmFja2luZyBpbnN0YW5jZS5cblx0ICpcblx0ICogQHBhcmFtIHs/
b2JqZWN0fSBwcmV2RWxlbWVudFxuXHQgKiBAcGFyYW0gez9vYmplY3R9IG5leHRFbGVtZW50XG5c
dCAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUgaWYgdGhlIGV4aXN0aW5nIGluc3RhbmNlIHNob3Vs
ZCBiZSB1cGRhdGVkLlxuXHQgKiBAcHJvdGVjdGVkXG5cdCAqL1xuXHRcblx0ZnVuY3Rpb24gc2hv
dWxkVXBkYXRlUmVhY3RDb21wb25lbnQocHJldkVsZW1lbnQsIG5leHRFbGVtZW50KSB7XG5cdCAg
dmFyIHByZXZFbXB0eSA9IHByZXZFbGVtZW50ID09PSBudWxsIHx8IHByZXZFbGVtZW50ID09PSBm
YWxzZTtcblx0ICB2YXIgbmV4dEVtcHR5ID0gbmV4dEVsZW1lbnQgPT09IG51bGwgfHwgbmV4dEVs
ZW1lbnQgPT09IGZhbHNlO1xuXHQgIGlmIChwcmV2RW1wdHkgfHwgbmV4dEVtcHR5KSB7XG5cdCAg
ICByZXR1cm4gcHJldkVtcHR5ID09PSBuZXh0RW1wdHk7XG5cdCAgfVxuXHRcblx0ICB2YXIgcHJl
dlR5cGUgPSB0eXBlb2YgcHJldkVsZW1lbnQ7XG5cdCAgdmFyIG5leHRUeXBlID0gdHlwZW9mIG5l
eHRFbGVtZW50O1xuXHQgIGlmIChwcmV2VHlwZSA9PT0gJ3N0cmluZycgfHwgcHJldlR5cGUgPT09
ICdudW1iZXInKSB7XG5cdCAgICByZXR1cm4gbmV4dFR5cGUgPT09ICdzdHJpbmcnIHx8IG5leHRU
eXBlID09PSAnbnVtYmVyJztcblx0ICB9IGVsc2Uge1xuXHQgICAgcmV0dXJuIG5leHRUeXBlID09
PSAnb2JqZWN0JyAmJiBwcmV2RWxlbWVudC50eXBlID09PSBuZXh0RWxlbWVudC50eXBlICYmIHBy
ZXZFbGVtZW50LmtleSA9PT0gbmV4dEVsZW1lbnQua2V5O1xuXHQgIH1cblx0fVxuXHRcblx0bW9k
dWxlLmV4cG9ydHMgPSBzaG91bGRVcGRhdGVSZWFjdENvbXBvbmVudDtcblxuLyoqKi8gfSxcbi8q
IDQ5ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJl
X18pIHtcblxuXHQvKipcblx0ICogQ29weXJpZ2h0IDIwMTUtcHJlc2VudCwgRmFjZWJvb2ssIElu
Yy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29k
ZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5c
dCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJl
ZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3Vu
ZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpcblx0ICov
XG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHR2YXIgX2Fzc2lnbiA9IF9fd2VicGFja19yZXF1
aXJlX18oNCk7XG5cdFxuXHR2YXIgZW1wdHlGdW5jdGlvbiA9IF9fd2VicGFja19yZXF1aXJlX18o
Nyk7XG5cdHZhciB3YXJuaW5nID0gX193ZWJwYWNrX3JlcXVpcmVfXygyKTtcblx0XG5cdHZhciB2
YWxpZGF0ZURPTU5lc3RpbmcgPSBlbXB0eUZ1bmN0aW9uO1xuXHRcblx0aWYgKGZhbHNlKSB7XG5c
dCAgLy8gVGhpcyB2YWxpZGF0aW9uIGNvZGUgd2FzIHdyaXR0ZW4gYmFzZWQgb24gdGhlIEhUTUw1
IHBhcnNpbmcgc3BlYzpcblx0ICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRp
cGFnZS9zeW50YXguaHRtbCNoYXMtYW4tZWxlbWVudC1pbi1zY29wZVxuXHQgIC8vXG5cdCAgLy8g
Tm90ZTogdGhpcyBkb2VzIG5vdCBjYXRjaCBhbGwgaW52YWxpZCBuZXN0aW5nLCBub3IgZG9lcyBp
dCB0cnkgdG8gKGFzIGl0J3Ncblx0ICAvLyBub3QgY2xlYXIgd2hhdCBwcmFjdGljYWwgYmVuZWZp
dCBkb2luZyBzbyBwcm92aWRlcyk7IGluc3RlYWQsIHdlIHdhcm4gb25seVxuXHQgIC8vIGZvciBj
YXNlcyB3aGVyZSB0aGUgcGFyc2VyIHdpbGwgZ2l2ZSBhIHBhcnNlIHRyZWUgZGlmZmVyaW5nIGZy
b20gd2hhdCBSZWFjdFxuXHQgIC8vIGludGVuZGVkLiBGb3IgZXhhbXBsZSwgPGI+PGRpdj48L2Rp
dj48L2I+IGlzIGludmFsaWQgYnV0IHdlIGRvbid0IHdhcm5cblx0ICAvLyBiZWNhdXNlIGl0IHN0
aWxsIHBhcnNlcyBjb3JyZWN0bHk7IHdlIGRvIHdhcm4gZm9yIG90aGVyIGNhc2VzIGxpa2UgbmVz
dGVkXG5cdCAgLy8gPHA+IHRhZ3Mgd2hlcmUgdGhlIGJlZ2lubmluZyBvZiB0aGUgc2Vjb25kIGVs
ZW1lbnQgaW1wbGljaXRseSBjbG9zZXMgdGhlXG5cdCAgLy8gZmlyc3QsIGNhdXNpbmcgYSBjb25m
dXNpbmcgbWVzcy5cblx0XG5cdCAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0
aXBhZ2Uvc3ludGF4Lmh0bWwjc3BlY2lhbFxuXHQgIHZhciBzcGVjaWFsVGFncyA9IFsnYWRkcmVz
cycsICdhcHBsZXQnLCAnYXJlYScsICdhcnRpY2xlJywgJ2FzaWRlJywgJ2Jhc2UnLCAnYmFzZWZv
bnQnLCAnYmdzb3VuZCcsICdibG9ja3F1b3RlJywgJ2JvZHknLCAnYnInLCAnYnV0dG9uJywgJ2Nh
cHRpb24nLCAnY2VudGVyJywgJ2NvbCcsICdjb2xncm91cCcsICdkZCcsICdkZXRhaWxzJywgJ2Rp
cicsICdkaXYnLCAnZGwnLCAnZHQnLCAnZW1iZWQnLCAnZmllbGRzZXQnLCAnZmlnY2FwdGlvbics
ICdmaWd1cmUnLCAnZm9vdGVyJywgJ2Zvcm0nLCAnZnJhbWUnLCAnZnJhbWVzZXQnLCAnaDEnLCAn
aDInLCAnaDMnLCAnaDQnLCAnaDUnLCAnaDYnLCAnaGVhZCcsICdoZWFkZXInLCAnaGdyb3VwJywg
J2hyJywgJ2h0bWwnLCAnaWZyYW1lJywgJ2ltZycsICdpbnB1dCcsICdpc2luZGV4JywgJ2xpJywg
J2xpbmsnLCAnbGlzdGluZycsICdtYWluJywgJ21hcnF1ZWUnLCAnbWVudScsICdtZW51aXRlbScs
ICdtZXRhJywgJ25hdicsICdub2VtYmVkJywgJ25vZnJhbWVzJywgJ25vc2NyaXB0JywgJ29iamVj
dCcsICdvbCcsICdwJywgJ3BhcmFtJywgJ3BsYWludGV4dCcsICdwcmUnLCAnc2NyaXB0JywgJ3Nl
Y3Rpb24nLCAnc2VsZWN0JywgJ3NvdXJjZScsICdzdHlsZScsICdzdW1tYXJ5JywgJ3RhYmxlJywg
J3Rib2R5JywgJ3RkJywgJ3RlbXBsYXRlJywgJ3RleHRhcmVhJywgJ3Rmb290JywgJ3RoJywgJ3Ro
ZWFkJywgJ3RpdGxlJywgJ3RyJywgJ3RyYWNrJywgJ3VsJywgJ3dicicsICd4bXAnXTtcblx0XG5c
dCAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvc3ludGF4Lmh0bWwj
aGFzLWFuLWVsZW1lbnQtaW4tc2NvcGVcblx0ICB2YXIgaW5TY29wZVRhZ3MgPSBbJ2FwcGxldCcs
ICdjYXB0aW9uJywgJ2h0bWwnLCAndGFibGUnLCAndGQnLCAndGgnLCAnbWFycXVlZScsICdvYmpl
Y3QnLCAndGVtcGxhdGUnLFxuXHRcblx0ICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3Jn
L211bHRpcGFnZS9zeW50YXguaHRtbCNodG1sLWludGVncmF0aW9uLXBvaW50XG5cdCAgLy8gVE9E
TzogRGlzdGluZ3Vpc2ggYnkgbmFtZXNwYWNlIGhlcmUgLS0gZm9yIDx0aXRsZT4sIGluY2x1ZGlu
ZyBpdCBoZXJlXG5cdCAgLy8gZXJycyBvbiB0aGUgc2lkZSBvZiBmZXdlciB3YXJuaW5nc1xuXHQg
ICdmb3JlaWduT2JqZWN0JywgJ2Rlc2MnLCAndGl0bGUnXTtcblx0XG5cdCAgLy8gaHR0cHM6Ly9o
dG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvc3ludGF4Lmh0bWwjaGFzLWFuLWVsZW1lbnQt
aW4tYnV0dG9uLXNjb3BlXG5cdCAgdmFyIGJ1dHRvblNjb3BlVGFncyA9IGluU2NvcGVUYWdzLmNv
bmNhdChbJ2J1dHRvbiddKTtcblx0XG5cdCAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9y
Zy9tdWx0aXBhZ2Uvc3ludGF4Lmh0bWwjZ2VuZXJhdGUtaW1wbGllZC1lbmQtdGFnc1xuXHQgIHZh
ciBpbXBsaWVkRW5kVGFncyA9IFsnZGQnLCAnZHQnLCAnbGknLCAnb3B0aW9uJywgJ29wdGdyb3Vw
JywgJ3AnLCAncnAnLCAncnQnXTtcblx0XG5cdCAgdmFyIGVtcHR5QW5jZXN0b3JJbmZvID0ge1xu
XHQgICAgY3VycmVudDogbnVsbCxcblx0XG5cdCAgICBmb3JtVGFnOiBudWxsLFxuXHQgICAgYVRh
Z0luU2NvcGU6IG51bGwsXG5cdCAgICBidXR0b25UYWdJblNjb3BlOiBudWxsLFxuXHQgICAgbm9i
clRhZ0luU2NvcGU6IG51bGwsXG5cdCAgICBwVGFnSW5CdXR0b25TY29wZTogbnVsbCxcblx0XG5c
dCAgICBsaXN0SXRlbVRhZ0F1dG9jbG9zaW5nOiBudWxsLFxuXHQgICAgZGxJdGVtVGFnQXV0b2Ns
b3Npbmc6IG51bGxcblx0ICB9O1xuXHRcblx0ICB2YXIgdXBkYXRlZEFuY2VzdG9ySW5mbyA9IGZ1
bmN0aW9uIChvbGRJbmZvLCB0YWcsIGluc3RhbmNlKSB7XG5cdCAgICB2YXIgYW5jZXN0b3JJbmZv
ID0gX2Fzc2lnbih7fSwgb2xkSW5mbyB8fCBlbXB0eUFuY2VzdG9ySW5mbyk7XG5cdCAgICB2YXIg
aW5mbyA9IHsgdGFnOiB0YWcsIGluc3RhbmNlOiBpbnN0YW5jZSB9O1xuXHRcblx0ICAgIGlmIChp
blNjb3BlVGFncy5pbmRleE9mKHRhZykgIT09IC0xKSB7XG5cdCAgICAgIGFuY2VzdG9ySW5mby5h
VGFnSW5TY29wZSA9IG51bGw7XG5cdCAgICAgIGFuY2VzdG9ySW5mby5idXR0b25UYWdJblNjb3Bl
ID0gbnVsbDtcblx0ICAgICAgYW5jZXN0b3JJbmZvLm5vYnJUYWdJblNjb3BlID0gbnVsbDtcblx0
ICAgIH1cblx0ICAgIGlmIChidXR0b25TY29wZVRhZ3MuaW5kZXhPZih0YWcpICE9PSAtMSkge1xu
XHQgICAgICBhbmNlc3RvckluZm8ucFRhZ0luQnV0dG9uU2NvcGUgPSBudWxsO1xuXHQgICAgfVxu
XHRcblx0ICAgIC8vIFNlZSBydWxlcyBmb3IgJ2xpJywgJ2RkJywgJ2R0JyBzdGFydCB0YWdzIGlu
XG5cdCAgICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9zeW50YXgu
aHRtbCNwYXJzaW5nLW1haW4taW5ib2R5XG5cdCAgICBpZiAoc3BlY2lhbFRhZ3MuaW5kZXhPZih0
YWcpICE9PSAtMSAmJiB0YWcgIT09ICdhZGRyZXNzJyAmJiB0YWcgIT09ICdkaXYnICYmIHRhZyAh
PT0gJ3AnKSB7XG5cdCAgICAgIGFuY2VzdG9ySW5mby5saXN0SXRlbVRhZ0F1dG9jbG9zaW5nID0g
bnVsbDtcblx0ICAgICAgYW5jZXN0b3JJbmZvLmRsSXRlbVRhZ0F1dG9jbG9zaW5nID0gbnVsbDtc
blx0ICAgIH1cblx0XG5cdCAgICBhbmNlc3RvckluZm8uY3VycmVudCA9IGluZm87XG5cdFxuXHQg
ICAgaWYgKHRhZyA9PT0gJ2Zvcm0nKSB7XG5cdCAgICAgIGFuY2VzdG9ySW5mby5mb3JtVGFnID0g
aW5mbztcblx0ICAgIH1cblx0ICAgIGlmICh0YWcgPT09ICdhJykge1xuXHQgICAgICBhbmNlc3Rv
ckluZm8uYVRhZ0luU2NvcGUgPSBpbmZvO1xuXHQgICAgfVxuXHQgICAgaWYgKHRhZyA9PT0gJ2J1
dHRvbicpIHtcblx0ICAgICAgYW5jZXN0b3JJbmZvLmJ1dHRvblRhZ0luU2NvcGUgPSBpbmZvO1xu
XHQgICAgfVxuXHQgICAgaWYgKHRhZyA9PT0gJ25vYnInKSB7XG5cdCAgICAgIGFuY2VzdG9ySW5m
by5ub2JyVGFnSW5TY29wZSA9IGluZm87XG5cdCAgICB9XG5cdCAgICBpZiAodGFnID09PSAncCcp
IHtcblx0ICAgICAgYW5jZXN0b3JJbmZvLnBUYWdJbkJ1dHRvblNjb3BlID0gaW5mbztcblx0ICAg
IH1cblx0ICAgIGlmICh0YWcgPT09ICdsaScpIHtcblx0ICAgICAgYW5jZXN0b3JJbmZvLmxpc3RJ
dGVtVGFnQXV0b2Nsb3NpbmcgPSBpbmZvO1xuXHQgICAgfVxuXHQgICAgaWYgKHRhZyA9PT0gJ2Rk
JyB8fCB0YWcgPT09ICdkdCcpIHtcblx0ICAgICAgYW5jZXN0b3JJbmZvLmRsSXRlbVRhZ0F1dG9j
bG9zaW5nID0gaW5mbztcblx0ICAgIH1cblx0XG5cdCAgICByZXR1cm4gYW5jZXN0b3JJbmZvO1xu
XHQgIH07XG5cdFxuXHQgIC8qKlxuXHQgICAqIFJldHVybnMgd2hldGhlclxuXHQgICAqL1xuXHQg
IHZhciBpc1RhZ1ZhbGlkV2l0aFBhcmVudCA9IGZ1bmN0aW9uICh0YWcsIHBhcmVudFRhZykge1xu
XHQgICAgLy8gRmlyc3QsIGxldCdzIGNoZWNrIGlmIHdlJ3JlIGluIGFuIHVudXN1YWwgcGFyc2lu
ZyBtb2RlLi4uXG5cdCAgICBzd2l0Y2ggKHBhcmVudFRhZykge1xuXHQgICAgICAvLyBodHRwczov
L2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9zeW50YXguaHRtbCNwYXJzaW5nLW1haW4t
aW5zZWxlY3Rcblx0ICAgICAgY2FzZSAnc2VsZWN0Jzpcblx0ICAgICAgICByZXR1cm4gdGFnID09
PSAnb3B0aW9uJyB8fCB0YWcgPT09ICdvcHRncm91cCcgfHwgdGFnID09PSAnI3RleHQnO1xuXHQg
ICAgICBjYXNlICdvcHRncm91cCc6XG5cdCAgICAgICAgcmV0dXJuIHRhZyA9PT0gJ29wdGlvbicg
fHwgdGFnID09PSAnI3RleHQnO1xuXHQgICAgICAvLyBTdHJpY3RseSBzcGVha2luZywgc2VlaW5n
IGFuIDxvcHRpb24+IGRvZXNuJ3QgbWVhbiB3ZSdyZSBpbiBhIDxzZWxlY3Q+XG5cdCAgICAgIC8v
IGJ1dFxuXHQgICAgICBjYXNlICdvcHRpb24nOlxuXHQgICAgICAgIHJldHVybiB0YWcgPT09ICcj
dGV4dCc7XG5cdCAgICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdl
L3N5bnRheC5odG1sI3BhcnNpbmctbWFpbi1pbnRkXG5cdCAgICAgIC8vIGh0dHBzOi8vaHRtbC5z
cGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3N5bnRheC5odG1sI3BhcnNpbmctbWFpbi1pbmNhcHRp
b25cblx0ICAgICAgLy8gTm8gc3BlY2lhbCBiZWhhdmlvciBzaW5jZSB0aGVzZSBydWxlcyBmYWxs
IGJhY2sgdG8gXCJpbiBib2R5XCIgbW9kZSBmb3Jcblx0ICAgICAgLy8gYWxsIGV4Y2VwdCBzcGVj
aWFsIHRhYmxlIG5vZGVzIHdoaWNoIGNhdXNlIGJhZCBwYXJzaW5nIGJlaGF2aW9yIGFueXdheS5c
blx0XG5cdCAgICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3N5
bnRheC5odG1sI3BhcnNpbmctbWFpbi1pbnRyXG5cdCAgICAgIGNhc2UgJ3RyJzpcblx0ICAgICAg
ICByZXR1cm4gdGFnID09PSAndGgnIHx8IHRhZyA9PT0gJ3RkJyB8fCB0YWcgPT09ICdzdHlsZScg
fHwgdGFnID09PSAnc2NyaXB0JyB8fCB0YWcgPT09ICd0ZW1wbGF0ZSc7XG5cdCAgICAgIC8vIGh0
dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3N5bnRheC5odG1sI3BhcnNpbmct
bWFpbi1pbnRib2R5XG5cdCAgICAgIGNhc2UgJ3Rib2R5Jzpcblx0ICAgICAgY2FzZSAndGhlYWQn
OlxuXHQgICAgICBjYXNlICd0Zm9vdCc6XG5cdCAgICAgICAgcmV0dXJuIHRhZyA9PT0gJ3RyJyB8
fCB0YWcgPT09ICdzdHlsZScgfHwgdGFnID09PSAnc2NyaXB0JyB8fCB0YWcgPT09ICd0ZW1wbGF0
ZSc7XG5cdCAgICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3N5
bnRheC5odG1sI3BhcnNpbmctbWFpbi1pbmNvbGdyb3VwXG5cdCAgICAgIGNhc2UgJ2NvbGdyb3Vw
Jzpcblx0ICAgICAgICByZXR1cm4gdGFnID09PSAnY29sJyB8fCB0YWcgPT09ICd0ZW1wbGF0ZSc7
XG5cdCAgICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3N5bnRh
eC5odG1sI3BhcnNpbmctbWFpbi1pbnRhYmxlXG5cdCAgICAgIGNhc2UgJ3RhYmxlJzpcblx0ICAg
ICAgICByZXR1cm4gdGFnID09PSAnY2FwdGlvbicgfHwgdGFnID09PSAnY29sZ3JvdXAnIHx8IHRh
ZyA9PT0gJ3Rib2R5JyB8fCB0YWcgPT09ICd0Zm9vdCcgfHwgdGFnID09PSAndGhlYWQnIHx8IHRh
ZyA9PT0gJ3N0eWxlJyB8fCB0YWcgPT09ICdzY3JpcHQnIHx8IHRhZyA9PT0gJ3RlbXBsYXRlJztc
blx0ICAgICAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvc3ludGF4
Lmh0bWwjcGFyc2luZy1tYWluLWluaGVhZFxuXHQgICAgICBjYXNlICdoZWFkJzpcblx0ICAgICAg
ICByZXR1cm4gdGFnID09PSAnYmFzZScgfHwgdGFnID09PSAnYmFzZWZvbnQnIHx8IHRhZyA9PT0g
J2Jnc291bmQnIHx8IHRhZyA9PT0gJ2xpbmsnIHx8IHRhZyA9PT0gJ21ldGEnIHx8IHRhZyA9PT0g
J3RpdGxlJyB8fCB0YWcgPT09ICdub3NjcmlwdCcgfHwgdGFnID09PSAnbm9mcmFtZXMnIHx8IHRh
ZyA9PT0gJ3N0eWxlJyB8fCB0YWcgPT09ICdzY3JpcHQnIHx8IHRhZyA9PT0gJ3RlbXBsYXRlJztc
blx0ICAgICAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvc2VtYW50
aWNzLmh0bWwjdGhlLWh0bWwtZWxlbWVudFxuXHQgICAgICBjYXNlICdodG1sJzpcblx0ICAgICAg
ICByZXR1cm4gdGFnID09PSAnaGVhZCcgfHwgdGFnID09PSAnYm9keSc7XG5cdCAgICAgIGNhc2Ug
JyNkb2N1bWVudCc6XG5cdCAgICAgICAgcmV0dXJuIHRhZyA9PT0gJ2h0bWwnO1xuXHQgICAgfVxu
XHRcblx0ICAgIC8vIFByb2JhYmx5IGluIHRoZSBcImluIGJvZHlcIiBwYXJzaW5nIG1vZGUsIHNv
IHdlIG91dGxhdyBvbmx5IHRhZyBjb21ib3Ncblx0ICAgIC8vIHdoZXJlIHRoZSBwYXJzaW5nIHJ1
bGVzIGNhdXNlIGltcGxpY2l0IG9wZW5zIG9yIGNsb3NlcyB0byBiZSBhZGRlZC5cblx0ICAgIC8v
IGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3N5bnRheC5odG1sI3BhcnNp
bmctbWFpbi1pbmJvZHlcblx0ICAgIHN3aXRjaCAodGFnKSB7XG5cdCAgICAgIGNhc2UgJ2gxJzpc
blx0ICAgICAgY2FzZSAnaDInOlxuXHQgICAgICBjYXNlICdoMyc6XG5cdCAgICAgIGNhc2UgJ2g0
Jzpcblx0ICAgICAgY2FzZSAnaDUnOlxuXHQgICAgICBjYXNlICdoNic6XG5cdCAgICAgICAgcmV0
dXJuIHBhcmVudFRhZyAhPT0gJ2gxJyAmJiBwYXJlbnRUYWcgIT09ICdoMicgJiYgcGFyZW50VGFn
ICE9PSAnaDMnICYmIHBhcmVudFRhZyAhPT0gJ2g0JyAmJiBwYXJlbnRUYWcgIT09ICdoNScgJiYg
cGFyZW50VGFnICE9PSAnaDYnO1xuXHRcblx0ICAgICAgY2FzZSAncnAnOlxuXHQgICAgICBjYXNl
ICdydCc6XG5cdCAgICAgICAgcmV0dXJuIGltcGxpZWRFbmRUYWdzLmluZGV4T2YocGFyZW50VGFn
KSA9PT0gLTE7XG5cdFxuXHQgICAgICBjYXNlICdib2R5Jzpcblx0ICAgICAgY2FzZSAnY2FwdGlv
bic6XG5cdCAgICAgIGNhc2UgJ2NvbCc6XG5cdCAgICAgIGNhc2UgJ2NvbGdyb3VwJzpcblx0ICAg
ICAgY2FzZSAnZnJhbWUnOlxuXHQgICAgICBjYXNlICdoZWFkJzpcblx0ICAgICAgY2FzZSAnaHRt
bCc6XG5cdCAgICAgIGNhc2UgJ3Rib2R5Jzpcblx0ICAgICAgY2FzZSAndGQnOlxuXHQgICAgICBj
YXNlICd0Zm9vdCc6XG5cdCAgICAgIGNhc2UgJ3RoJzpcblx0ICAgICAgY2FzZSAndGhlYWQnOlxu
XHQgICAgICBjYXNlICd0cic6XG5cdCAgICAgICAgLy8gVGhlc2UgdGFncyBhcmUgb25seSB2YWxp
ZCB3aXRoIGEgZmV3IHBhcmVudHMgdGhhdCBoYXZlIHNwZWNpYWwgY2hpbGRcblx0ICAgICAgICAv
LyBwYXJzaW5nIHJ1bGVzIC0tIGlmIHdlJ3JlIGRvd24gaGVyZSwgdGhlbiBub25lIG9mIHRob3Nl
IG1hdGNoZWQgYW5kXG5cdCAgICAgICAgLy8gc28gd2UgYWxsb3cgaXQgb25seSBpZiB3ZSBkb24n
dCBrbm93IHdoYXQgdGhlIHBhcmVudCBpcywgYXMgYWxsIG90aGVyXG5cdCAgICAgICAgLy8gY2Fz
ZXMgYXJlIGludmFsaWQuXG5cdCAgICAgICAgcmV0dXJuIHBhcmVudFRhZyA9PSBudWxsO1xuXHQg
ICAgfVxuXHRcblx0ICAgIHJldHVybiB0cnVlO1xuXHQgIH07XG5cdFxuXHQgIC8qKlxuXHQgICAq
IFJldHVybnMgd2hldGhlclxuXHQgICAqL1xuXHQgIHZhciBmaW5kSW52YWxpZEFuY2VzdG9yRm9y
VGFnID0gZnVuY3Rpb24gKHRhZywgYW5jZXN0b3JJbmZvKSB7XG5cdCAgICBzd2l0Y2ggKHRhZykg
e1xuXHQgICAgICBjYXNlICdhZGRyZXNzJzpcblx0ICAgICAgY2FzZSAnYXJ0aWNsZSc6XG5cdCAg
ICAgIGNhc2UgJ2FzaWRlJzpcblx0ICAgICAgY2FzZSAnYmxvY2txdW90ZSc6XG5cdCAgICAgIGNh
c2UgJ2NlbnRlcic6XG5cdCAgICAgIGNhc2UgJ2RldGFpbHMnOlxuXHQgICAgICBjYXNlICdkaWFs
b2cnOlxuXHQgICAgICBjYXNlICdkaXInOlxuXHQgICAgICBjYXNlICdkaXYnOlxuXHQgICAgICBj
YXNlICdkbCc6XG5cdCAgICAgIGNhc2UgJ2ZpZWxkc2V0Jzpcblx0ICAgICAgY2FzZSAnZmlnY2Fw
dGlvbic6XG5cdCAgICAgIGNhc2UgJ2ZpZ3VyZSc6XG5cdCAgICAgIGNhc2UgJ2Zvb3Rlcic6XG5c
dCAgICAgIGNhc2UgJ2hlYWRlcic6XG5cdCAgICAgIGNhc2UgJ2hncm91cCc6XG5cdCAgICAgIGNh
c2UgJ21haW4nOlxuXHQgICAgICBjYXNlICdtZW51Jzpcblx0ICAgICAgY2FzZSAnbmF2Jzpcblx0
ICAgICAgY2FzZSAnb2wnOlxuXHQgICAgICBjYXNlICdwJzpcblx0ICAgICAgY2FzZSAnc2VjdGlv
bic6XG5cdCAgICAgIGNhc2UgJ3N1bW1hcnknOlxuXHQgICAgICBjYXNlICd1bCc6XG5cdCAgICAg
IGNhc2UgJ3ByZSc6XG5cdCAgICAgIGNhc2UgJ2xpc3RpbmcnOlxuXHQgICAgICBjYXNlICd0YWJs
ZSc6XG5cdCAgICAgIGNhc2UgJ2hyJzpcblx0ICAgICAgY2FzZSAneG1wJzpcblx0ICAgICAgY2Fz
ZSAnaDEnOlxuXHQgICAgICBjYXNlICdoMic6XG5cdCAgICAgIGNhc2UgJ2gzJzpcblx0ICAgICAg
Y2FzZSAnaDQnOlxuXHQgICAgICBjYXNlICdoNSc6XG5cdCAgICAgIGNhc2UgJ2g2Jzpcblx0ICAg
ICAgICByZXR1cm4gYW5jZXN0b3JJbmZvLnBUYWdJbkJ1dHRvblNjb3BlO1xuXHRcblx0ICAgICAg
Y2FzZSAnZm9ybSc6XG5cdCAgICAgICAgcmV0dXJuIGFuY2VzdG9ySW5mby5mb3JtVGFnIHx8IGFu
Y2VzdG9ySW5mby5wVGFnSW5CdXR0b25TY29wZTtcblx0XG5cdCAgICAgIGNhc2UgJ2xpJzpcblx0
ICAgICAgICByZXR1cm4gYW5jZXN0b3JJbmZvLmxpc3RJdGVtVGFnQXV0b2Nsb3Npbmc7XG5cdFxu
XHQgICAgICBjYXNlICdkZCc6XG5cdCAgICAgIGNhc2UgJ2R0Jzpcblx0ICAgICAgICByZXR1cm4g
YW5jZXN0b3JJbmZvLmRsSXRlbVRhZ0F1dG9jbG9zaW5nO1xuXHRcblx0ICAgICAgY2FzZSAnYnV0
dG9uJzpcblx0ICAgICAgICByZXR1cm4gYW5jZXN0b3JJbmZvLmJ1dHRvblRhZ0luU2NvcGU7XG5c
dFxuXHQgICAgICBjYXNlICdhJzpcblx0ICAgICAgICAvLyBTcGVjIHNheXMgc29tZXRoaW5nIGFi
b3V0IHN0b3JpbmcgYSBsaXN0IG9mIG1hcmtlcnMsIGJ1dCBpdCBzb3VuZHNcblx0ICAgICAgICAv
LyBlcXVpdmFsZW50IHRvIHRoaXMgY2hlY2suXG5cdCAgICAgICAgcmV0dXJuIGFuY2VzdG9ySW5m
by5hVGFnSW5TY29wZTtcblx0XG5cdCAgICAgIGNhc2UgJ25vYnInOlxuXHQgICAgICAgIHJldHVy
biBhbmNlc3RvckluZm8ubm9iclRhZ0luU2NvcGU7XG5cdCAgICB9XG5cdFxuXHQgICAgcmV0dXJu
IG51bGw7XG5cdCAgfTtcblx0XG5cdCAgLyoqXG5cdCAgICogR2l2ZW4gYSBSZWFjdENvbXBvc2l0
ZUNvbXBvbmVudCBpbnN0YW5jZSwgcmV0dXJuIGEgbGlzdCBvZiBpdHMgcmVjdXJzaXZlXG5cdCAg
ICogb3duZXJzLCBzdGFydGluZyBhdCB0aGUgcm9vdCBhbmQgZW5kaW5nIHdpdGggdGhlIGluc3Rh
bmNlIGl0c2VsZi5cblx0ICAgKi9cblx0ICB2YXIgZmluZE93bmVyU3RhY2sgPSBmdW5jdGlvbiAo
aW5zdGFuY2UpIHtcblx0ICAgIGlmICghaW5zdGFuY2UpIHtcblx0ICAgICAgcmV0dXJuIFtdO1xu
XHQgICAgfVxuXHRcblx0ICAgIHZhciBzdGFjayA9IFtdO1xuXHQgICAgZG8ge1xuXHQgICAgICBz
dGFjay5wdXNoKGluc3RhbmNlKTtcblx0ICAgIH0gd2hpbGUgKGluc3RhbmNlID0gaW5zdGFuY2Uu
X2N1cnJlbnRFbGVtZW50Ll9vd25lcik7XG5cdCAgICBzdGFjay5yZXZlcnNlKCk7XG5cdCAgICBy
ZXR1cm4gc3RhY2s7XG5cdCAgfTtcblx0XG5cdCAgdmFyIGRpZFdhcm4gPSB7fTtcblx0XG5cdCAg
dmFsaWRhdGVET01OZXN0aW5nID0gZnVuY3Rpb24gKGNoaWxkVGFnLCBjaGlsZFRleHQsIGNoaWxk
SW5zdGFuY2UsIGFuY2VzdG9ySW5mbykge1xuXHQgICAgYW5jZXN0b3JJbmZvID0gYW5jZXN0b3JJ
bmZvIHx8IGVtcHR5QW5jZXN0b3JJbmZvO1xuXHQgICAgdmFyIHBhcmVudEluZm8gPSBhbmNlc3Rv
ckluZm8uY3VycmVudDtcblx0ICAgIHZhciBwYXJlbnRUYWcgPSBwYXJlbnRJbmZvICYmIHBhcmVu
dEluZm8udGFnO1xuXHRcblx0ICAgIGlmIChjaGlsZFRleHQgIT0gbnVsbCkge1xuXHQgICAgICBw
cm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhjaGlsZFRhZyA9
PSBudWxsLCAndmFsaWRhdGVET01OZXN0aW5nOiB3aGVuIGNoaWxkVGV4dCBpcyBwYXNzZWQsIGNo
aWxkVGFnIHNob3VsZCBiZSBudWxsJykgOiB2b2lkIDA7XG5cdCAgICAgIGNoaWxkVGFnID0gJyN0
ZXh0Jztcblx0ICAgIH1cblx0XG5cdCAgICB2YXIgaW52YWxpZFBhcmVudCA9IGlzVGFnVmFsaWRX
aXRoUGFyZW50KGNoaWxkVGFnLCBwYXJlbnRUYWcpID8gbnVsbCA6IHBhcmVudEluZm87XG5cdCAg
ICB2YXIgaW52YWxpZEFuY2VzdG9yID0gaW52YWxpZFBhcmVudCA/IG51bGwgOiBmaW5kSW52YWxp
ZEFuY2VzdG9yRm9yVGFnKGNoaWxkVGFnLCBhbmNlc3RvckluZm8pO1xuXHQgICAgdmFyIHByb2Js
ZW1hdGljID0gaW52YWxpZFBhcmVudCB8fCBpbnZhbGlkQW5jZXN0b3I7XG5cdFxuXHQgICAgaWYg
KHByb2JsZW1hdGljKSB7XG5cdCAgICAgIHZhciBhbmNlc3RvclRhZyA9IHByb2JsZW1hdGljLnRh
Zztcblx0ICAgICAgdmFyIGFuY2VzdG9ySW5zdGFuY2UgPSBwcm9ibGVtYXRpYy5pbnN0YW5jZTtc
blx0XG5cdCAgICAgIHZhciBjaGlsZE93bmVyID0gY2hpbGRJbnN0YW5jZSAmJiBjaGlsZEluc3Rh
bmNlLl9jdXJyZW50RWxlbWVudC5fb3duZXI7XG5cdCAgICAgIHZhciBhbmNlc3Rvck93bmVyID0g
YW5jZXN0b3JJbnN0YW5jZSAmJiBhbmNlc3Rvckluc3RhbmNlLl9jdXJyZW50RWxlbWVudC5fb3du
ZXI7XG5cdFxuXHQgICAgICB2YXIgY2hpbGRPd25lcnMgPSBmaW5kT3duZXJTdGFjayhjaGlsZE93
bmVyKTtcblx0ICAgICAgdmFyIGFuY2VzdG9yT3duZXJzID0gZmluZE93bmVyU3RhY2soYW5jZXN0
b3JPd25lcik7XG5cdFxuXHQgICAgICB2YXIgbWluU3RhY2tMZW4gPSBNYXRoLm1pbihjaGlsZE93
bmVycy5sZW5ndGgsIGFuY2VzdG9yT3duZXJzLmxlbmd0aCk7XG5cdCAgICAgIHZhciBpO1xuXHRc
blx0ICAgICAgdmFyIGRlZXBlc3RDb21tb24gPSAtMTtcblx0ICAgICAgZm9yIChpID0gMDsgaSA8
IG1pblN0YWNrTGVuOyBpKyspIHtcblx0ICAgICAgICBpZiAoY2hpbGRPd25lcnNbaV0gPT09IGFu
Y2VzdG9yT3duZXJzW2ldKSB7XG5cdCAgICAgICAgICBkZWVwZXN0Q29tbW9uID0gaTtcblx0ICAg
ICAgICB9IGVsc2Uge1xuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgfVxuXHQgICAgICB9
XG5cdFxuXHQgICAgICB2YXIgVU5LTk9XTiA9ICcodW5rbm93biknO1xuXHQgICAgICB2YXIgY2hp
bGRPd25lck5hbWVzID0gY2hpbGRPd25lcnMuc2xpY2UoZGVlcGVzdENvbW1vbiArIDEpLm1hcChm
dW5jdGlvbiAoaW5zdCkge1xuXHQgICAgICAgIHJldHVybiBpbnN0LmdldE5hbWUoKSB8fCBVTktO
T1dOO1xuXHQgICAgICB9KTtcblx0ICAgICAgdmFyIGFuY2VzdG9yT3duZXJOYW1lcyA9IGFuY2Vz
dG9yT3duZXJzLnNsaWNlKGRlZXBlc3RDb21tb24gKyAxKS5tYXAoZnVuY3Rpb24gKGluc3QpIHtc
blx0ICAgICAgICByZXR1cm4gaW5zdC5nZXROYW1lKCkgfHwgVU5LTk9XTjtcblx0ICAgICAgfSk7
XG5cdCAgICAgIHZhciBvd25lckluZm8gPSBbXS5jb25jYXQoXG5cdCAgICAgIC8vIElmIHRoZSBw
YXJlbnQgYW5kIGNoaWxkIGluc3RhbmNlcyBoYXZlIGEgY29tbW9uIG93bmVyIGFuY2VzdG9yLCBz
dGFydFxuXHQgICAgICAvLyB3aXRoIHRoYXQgLS0gb3RoZXJ3aXNlIHdlIGp1c3Qgc3RhcnQgd2l0
aCB0aGUgcGFyZW50J3Mgb3duZXJzLlxuXHQgICAgICBkZWVwZXN0Q29tbW9uICE9PSAtMSA/IGNo
aWxkT3duZXJzW2RlZXBlc3RDb21tb25dLmdldE5hbWUoKSB8fCBVTktOT1dOIDogW10sIGFuY2Vz
dG9yT3duZXJOYW1lcywgYW5jZXN0b3JUYWcsXG5cdCAgICAgIC8vIElmIHdlJ3JlIHdhcm5pbmcg
YWJvdXQgYW4gaW52YWxpZCAobm9uLXBhcmVudCkgYW5jZXN0cnksIGFkZCAnLi4uJ1xuXHQgICAg
ICBpbnZhbGlkQW5jZXN0b3IgPyBbJy4uLiddIDogW10sIGNoaWxkT3duZXJOYW1lcywgY2hpbGRU
YWcpLmpvaW4oJyA+ICcpO1xuXHRcblx0ICAgICAgdmFyIHdhcm5LZXkgPSAhIWludmFsaWRQYXJl
bnQgKyAnfCcgKyBjaGlsZFRhZyArICd8JyArIGFuY2VzdG9yVGFnICsgJ3wnICsgb3duZXJJbmZv
O1xuXHQgICAgICBpZiAoZGlkV2Fyblt3YXJuS2V5XSkge1xuXHQgICAgICAgIHJldHVybjtcblx0
ICAgICAgfVxuXHQgICAgICBkaWRXYXJuW3dhcm5LZXldID0gdHJ1ZTtcblx0XG5cdCAgICAgIHZh
ciB0YWdEaXNwbGF5TmFtZSA9IGNoaWxkVGFnO1xuXHQgICAgICB2YXIgd2hpdGVzcGFjZUluZm8g
PSAnJztcblx0ICAgICAgaWYgKGNoaWxkVGFnID09PSAnI3RleHQnKSB7XG5cdCAgICAgICAgaWYg
KC9cXFMvLnRlc3QoY2hpbGRUZXh0KSkge1xuXHQgICAgICAgICAgdGFnRGlzcGxheU5hbWUgPSAn
VGV4dCBub2Rlcyc7XG5cdCAgICAgICAgfSBlbHNlIHtcblx0ICAgICAgICAgIHRhZ0Rpc3BsYXlO
YW1lID0gJ1doaXRlc3BhY2UgdGV4dCBub2Rlcyc7XG5cdCAgICAgICAgICB3aGl0ZXNwYWNlSW5m
byA9IFwiIE1ha2Ugc3VyZSB5b3UgZG9uJ3QgaGF2ZSBhbnkgZXh0cmEgd2hpdGVzcGFjZSBiZXR3
ZWVuIHRhZ3Mgb24gXCIgKyAnZWFjaCBsaW5lIG9mIHlvdXIgc291cmNlIGNvZGUuJztcblx0ICAg
ICAgICB9XG5cdCAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgdGFnRGlzcGxheU5hbWUgPSAnPCcg
KyBjaGlsZFRhZyArICc+Jztcblx0ICAgICAgfVxuXHRcblx0ICAgICAgaWYgKGludmFsaWRQYXJl
bnQpIHtcblx0ICAgICAgICB2YXIgaW5mbyA9ICcnO1xuXHQgICAgICAgIGlmIChhbmNlc3RvclRh
ZyA9PT0gJ3RhYmxlJyAmJiBjaGlsZFRhZyA9PT0gJ3RyJykge1xuXHQgICAgICAgICAgaW5mbyAr
PSAnIEFkZCBhIDx0Ym9keT4gdG8geW91ciBjb2RlIHRvIG1hdGNoIHRoZSBET00gdHJlZSBnZW5l
cmF0ZWQgYnkgJyArICd0aGUgYnJvd3Nlci4nO1xuXHQgICAgICAgIH1cblx0ICAgICAgICBwcm9j
ZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ3ZhbGlk
YXRlRE9NTmVzdGluZyguLi4pOiAlcyBjYW5ub3QgYXBwZWFyIGFzIGEgY2hpbGQgb2YgPCVzPi4l
cyAnICsgJ1NlZSAlcy4lcycsIHRhZ0Rpc3BsYXlOYW1lLCBhbmNlc3RvclRhZywgd2hpdGVzcGFj
ZUluZm8sIG93bmVySW5mbywgaW5mbykgOiB2b2lkIDA7XG5cdCAgICAgIH0gZWxzZSB7XG5cdCAg
ICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFs
c2UsICd2YWxpZGF0ZURPTU5lc3RpbmcoLi4uKTogJXMgY2Fubm90IGFwcGVhciBhcyBhIGRlc2Nl
bmRhbnQgb2YgJyArICc8JXM+LiBTZWUgJXMuJywgdGFnRGlzcGxheU5hbWUsIGFuY2VzdG9yVGFn
LCBvd25lckluZm8pIDogdm9pZCAwO1xuXHQgICAgICB9XG5cdCAgICB9XG5cdCAgfTtcblx0XG5c
dCAgdmFsaWRhdGVET01OZXN0aW5nLnVwZGF0ZWRBbmNlc3RvckluZm8gPSB1cGRhdGVkQW5jZXN0
b3JJbmZvO1xuXHRcblx0ICAvLyBGb3IgdGVzdGluZ1xuXHQgIHZhbGlkYXRlRE9NTmVzdGluZy5p
c1RhZ1ZhbGlkSW5Db250ZXh0ID0gZnVuY3Rpb24gKHRhZywgYW5jZXN0b3JJbmZvKSB7XG5cdCAg
ICBhbmNlc3RvckluZm8gPSBhbmNlc3RvckluZm8gfHwgZW1wdHlBbmNlc3RvckluZm87XG5cdCAg
ICB2YXIgcGFyZW50SW5mbyA9IGFuY2VzdG9ySW5mby5jdXJyZW50O1xuXHQgICAgdmFyIHBhcmVu
dFRhZyA9IHBhcmVudEluZm8gJiYgcGFyZW50SW5mby50YWc7XG5cdCAgICByZXR1cm4gaXNUYWdW
YWxpZFdpdGhQYXJlbnQodGFnLCBwYXJlbnRUYWcpICYmICFmaW5kSW52YWxpZEFuY2VzdG9yRm9y
VGFnKHRhZywgYW5jZXN0b3JJbmZvKTtcblx0ICB9O1xuXHR9XG5cdFxuXHRtb2R1bGUuZXhwb3J0
cyA9IHZhbGlkYXRlRE9NTmVzdGluZztcblxuLyoqKi8gfSxcbi8qIDUwICovXG4vKioqLyBmdW5j
dGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHRleHBvcnRz
Ll9fZXNNb2R1bGUgPSB0cnVlO1xuXHRleHBvcnRzLmRlZmF1bHQgPSB3YXJuaW5nO1xuXHQvKipc
blx0ICogUHJpbnRzIGEgd2FybmluZyBpbiB0aGUgY29uc29sZSBpZiBpdCBleGlzdHMuXG5cdCAq
XG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBtZXNzYWdlIFRoZSB3YXJuaW5nIG1lc3NhZ2UuXG5cdCAq
IEByZXR1cm5zIHt2b2lkfVxuXHQgKi9cblx0ZnVuY3Rpb24gd2FybmluZyhtZXNzYWdlKSB7XG5c
dCAgLyogZXNsaW50LWRpc2FibGUgbm8tY29uc29sZSAqL1xuXHQgIGlmICh0eXBlb2YgY29uc29s
ZSAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIGNvbnNvbGUuZXJyb3IgPT09ICdmdW5jdGlvbicp
IHtcblx0ICAgIGNvbnNvbGUuZXJyb3IobWVzc2FnZSk7XG5cdCAgfVxuXHQgIC8qIGVzbGludC1l
bmFibGUgbm8tY29uc29sZSAqL1xuXHQgIHRyeSB7XG5cdCAgICAvLyBUaGlzIGVycm9yIHdhcyB0
aHJvd24gYXMgYSBjb252ZW5pZW5jZSBzbyB0aGF0IGlmIHlvdSBlbmFibGVcblx0ICAgIC8vIFwi
YnJlYWsgb24gYWxsIGV4Y2VwdGlvbnNcIiBpbiB5b3VyIGNvbnNvbGUsXG5cdCAgICAvLyBpdCB3
b3VsZCBwYXVzZSB0aGUgZXhlY3V0aW9uIGF0IHRoaXMgbGluZS5cblx0ICAgIHRocm93IG5ldyBF
cnJvcihtZXNzYWdlKTtcblx0ICAgIC8qIGVzbGludC1kaXNhYmxlIG5vLWVtcHR5ICovXG5cdCAg
fSBjYXRjaCAoZSkge31cblx0ICAvKiBlc2xpbnQtZW5hYmxlIG5vLWVtcHR5ICovXG5cdH1cblxu
LyoqKi8gfSxcbi8qIDUxICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2Vi
cGFja19yZXF1aXJlX18pIHtcblxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHQvKipcblx0ICogQ29w
eXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMg
cmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIg
dGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4g
dGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3Jh
bnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmls
ZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqIEB0eXBlY2hlY2tzXG5cdCAqL1xu
XHRcblx0dmFyIGVtcHR5RnVuY3Rpb24gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDcpO1xuXHRcblx0
LyoqXG5cdCAqIFVwc3RyZWFtIHZlcnNpb24gb2YgZXZlbnQgbGlzdGVuZXIuIERvZXMgbm90IHRh
a2UgaW50byBhY2NvdW50IHNwZWNpZmljXG5cdCAqIG5hdHVyZSBvZiBwbGF0Zm9ybS5cblx0ICov
XG5cdHZhciBFdmVudExpc3RlbmVyID0ge1xuXHQgIC8qKlxuXHQgICAqIExpc3RlbiB0byBET00g
ZXZlbnRzIGR1cmluZyB0aGUgYnViYmxlIHBoYXNlLlxuXHQgICAqXG5cdCAgICogQHBhcmFtIHtE
T01FdmVudFRhcmdldH0gdGFyZ2V0IERPTSBlbGVtZW50IHRvIHJlZ2lzdGVyIGxpc3RlbmVyIG9u
LlxuXHQgICAqIEBwYXJhbSB7c3RyaW5nfSBldmVudFR5cGUgRXZlbnQgdHlwZSwgZS5nLiAnY2xp
Y2snIG9yICdtb3VzZW92ZXInLlxuXHQgICAqIEBwYXJhbSB7ZnVuY3Rpb259IGNhbGxiYWNrIENh
bGxiYWNrIGZ1bmN0aW9uLlxuXHQgICAqIEByZXR1cm4ge29iamVjdH0gT2JqZWN0IHdpdGggYSBg
cmVtb3ZlYCBtZXRob2QuXG5cdCAgICovXG5cdCAgbGlzdGVuOiBmdW5jdGlvbiBsaXN0ZW4odGFy
Z2V0LCBldmVudFR5cGUsIGNhbGxiYWNrKSB7XG5cdCAgICBpZiAodGFyZ2V0LmFkZEV2ZW50TGlz
dGVuZXIpIHtcblx0ICAgICAgdGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBjYWxs
YmFjaywgZmFsc2UpO1xuXHQgICAgICByZXR1cm4ge1xuXHQgICAgICAgIHJlbW92ZTogZnVuY3Rp
b24gcmVtb3ZlKCkge1xuXHQgICAgICAgICAgdGFyZ2V0LnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZl
bnRUeXBlLCBjYWxsYmFjaywgZmFsc2UpO1xuXHQgICAgICAgIH1cblx0ICAgICAgfTtcblx0ICAg
IH0gZWxzZSBpZiAodGFyZ2V0LmF0dGFjaEV2ZW50KSB7XG5cdCAgICAgIHRhcmdldC5hdHRhY2hF
dmVudCgnb24nICsgZXZlbnRUeXBlLCBjYWxsYmFjayk7XG5cdCAgICAgIHJldHVybiB7XG5cdCAg
ICAgICAgcmVtb3ZlOiBmdW5jdGlvbiByZW1vdmUoKSB7XG5cdCAgICAgICAgICB0YXJnZXQuZGV0
YWNoRXZlbnQoJ29uJyArIGV2ZW50VHlwZSwgY2FsbGJhY2spO1xuXHQgICAgICAgIH1cblx0ICAg
ICAgfTtcblx0ICAgIH1cblx0ICB9LFxuXHRcblx0ICAvKipcblx0ICAgKiBMaXN0ZW4gdG8gRE9N
IGV2ZW50cyBkdXJpbmcgdGhlIGNhcHR1cmUgcGhhc2UuXG5cdCAgICpcblx0ICAgKiBAcGFyYW0g
e0RPTUV2ZW50VGFyZ2V0fSB0YXJnZXQgRE9NIGVsZW1lbnQgdG8gcmVnaXN0ZXIgbGlzdGVuZXIg
b24uXG5cdCAgICogQHBhcmFtIHtzdHJpbmd9IGV2ZW50VHlwZSBFdmVudCB0eXBlLCBlLmcuICdj
bGljaycgb3IgJ21vdXNlb3ZlcicuXG5cdCAgICogQHBhcmFtIHtmdW5jdGlvbn0gY2FsbGJhY2sg
Q2FsbGJhY2sgZnVuY3Rpb24uXG5cdCAgICogQHJldHVybiB7b2JqZWN0fSBPYmplY3Qgd2l0aCBh
IGByZW1vdmVgIG1ldGhvZC5cblx0ICAgKi9cblx0ICBjYXB0dXJlOiBmdW5jdGlvbiBjYXB0dXJl
KHRhcmdldCwgZXZlbnRUeXBlLCBjYWxsYmFjaykge1xuXHQgICAgaWYgKHRhcmdldC5hZGRFdmVu
dExpc3RlbmVyKSB7XG5cdCAgICAgIHRhcmdldC5hZGRFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwg
Y2FsbGJhY2ssIHRydWUpO1xuXHQgICAgICByZXR1cm4ge1xuXHQgICAgICAgIHJlbW92ZTogZnVu
Y3Rpb24gcmVtb3ZlKCkge1xuXHQgICAgICAgICAgdGFyZ2V0LnJlbW92ZUV2ZW50TGlzdGVuZXIo
ZXZlbnRUeXBlLCBjYWxsYmFjaywgdHJ1ZSk7XG5cdCAgICAgICAgfVxuXHQgICAgICB9O1xuXHQg
ICAgfSBlbHNlIHtcblx0ICAgICAgaWYgKGZhbHNlKSB7XG5cdCAgICAgICAgY29uc29sZS5lcnJv
cignQXR0ZW1wdGVkIHRvIGxpc3RlbiB0byBldmVudHMgZHVyaW5nIHRoZSBjYXB0dXJlIHBoYXNl
IG9uIGEgJyArICdicm93c2VyIHRoYXQgZG9lcyBub3Qgc3VwcG9ydCB0aGUgY2FwdHVyZSBwaGFz
ZS4gWW91ciBhcHBsaWNhdGlvbiAnICsgJ3dpbGwgbm90IHJlY2VpdmUgc29tZSBldmVudHMuJyk7
XG5cdCAgICAgIH1cblx0ICAgICAgcmV0dXJuIHtcblx0ICAgICAgICByZW1vdmU6IGVtcHR5RnVu
Y3Rpb25cblx0ICAgICAgfTtcblx0ICAgIH1cblx0ICB9LFxuXHRcblx0ICByZWdpc3RlckRlZmF1
bHQ6IGZ1bmN0aW9uIHJlZ2lzdGVyRGVmYXVsdCgpIHt9XG5cdH07XG5cdFxuXHRtb2R1bGUuZXhw
b3J0cyA9IEV2ZW50TGlzdGVuZXI7XG5cbi8qKiovIH0sXG4vKiA1MiAqL1xuLyoqKi8gZnVuY3Rp
b24obW9kdWxlLCBleHBvcnRzKSB7XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAoYykgMjAxMy1w
cmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxu
XHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGlj
ZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9y
eSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVu
dCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGly
ZWN0b3J5LlxuXHQgKlxuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdC8qKlxuXHQg
KiBAcGFyYW0ge0RPTUVsZW1lbnR9IG5vZGUgaW5wdXQvdGV4dGFyZWEgdG8gZm9jdXNcblx0ICov
XG5cdFxuXHRmdW5jdGlvbiBmb2N1c05vZGUobm9kZSkge1xuXHQgIC8vIElFOCBjYW4gdGhyb3cg
XCJDYW4ndCBtb3ZlIGZvY3VzIHRvIHRoZSBjb250cm9sIGJlY2F1c2UgaXQgaXMgaW52aXNpYmxl
LFxuXHQgIC8vIG5vdCBlbmFibGVkLCBvciBvZiBhIHR5cGUgdGhhdCBkb2VzIG5vdCBhY2NlcHQg
dGhlIGZvY3VzLlwiIGZvciBhbGwga2luZHMgb2Zcblx0ICAvLyByZWFzb25zIHRoYXQgYXJlIHRv
byBleHBlbnNpdmUgYW5kIGZyYWdpbGUgdG8gdGVzdC5cblx0ICB0cnkge1xuXHQgICAgbm9kZS5m
b2N1cygpO1xuXHQgIH0gY2F0Y2ggKGUpIHt9XG5cdH1cblx0XG5cdG1vZHVsZS5leHBvcnRzID0g
Zm9jdXNOb2RlO1xuXG4vKioqLyB9LFxuLyogNTMgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwg
ZXhwb3J0cykge1xuXG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQg
KGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZl
ZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNE
LXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9v
dCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQg
KiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRo
ZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpcblx0ICogQHR5cGVjaGVja3Ncblx0ICovXG5cdFxuXHQv
KiBlc2xpbnQtZGlzYWJsZSBmYi13d3cvdHlwZW9mLXVuZGVmaW5lZCAqL1xuXHRcblx0LyoqXG5c
dCAqIFNhbWUgYXMgZG9jdW1lbnQuYWN0aXZlRWxlbWVudCBidXQgd3JhcHMgaW4gYSB0cnktY2F0
Y2ggYmxvY2suIEluIElFIGl0IGlzXG5cdCAqIG5vdCBzYWZlIHRvIGNhbGwgZG9jdW1lbnQuYWN0
aXZlRWxlbWVudCBpZiB0aGVyZSBpcyBub3RoaW5nIGZvY3VzZWQuXG5cdCAqXG5cdCAqIFRoZSBh
Y3RpdmVFbGVtZW50IHdpbGwgYmUgbnVsbCBvbmx5IGlmIHRoZSBkb2N1bWVudCBvciBkb2N1bWVu
dCBib2R5IGlzIG5vdFxuXHQgKiB5ZXQgZGVmaW5lZC5cblx0ICpcblx0ICogQHBhcmFtIHs/RE9N
RG9jdW1lbnR9IGRvYyBEZWZhdWx0cyB0byBjdXJyZW50IGRvY3VtZW50LlxuXHQgKiBAcmV0dXJu
IHs/RE9NRWxlbWVudH1cblx0ICovXG5cdGZ1bmN0aW9uIGdldEFjdGl2ZUVsZW1lbnQoZG9jKSAv
Kj9ET01FbGVtZW50Ki97XG5cdCAgZG9jID0gZG9jIHx8ICh0eXBlb2YgZG9jdW1lbnQgIT09ICd1
bmRlZmluZWQnID8gZG9jdW1lbnQgOiB1bmRlZmluZWQpO1xuXHQgIGlmICh0eXBlb2YgZG9jID09
PSAndW5kZWZpbmVkJykge1xuXHQgICAgcmV0dXJuIG51bGw7XG5cdCAgfVxuXHQgIHRyeSB7XG5c
dCAgICByZXR1cm4gZG9jLmFjdGl2ZUVsZW1lbnQgfHwgZG9jLmJvZHk7XG5cdCAgfSBjYXRjaCAo
ZSkge1xuXHQgICAgcmV0dXJuIGRvYy5ib2R5O1xuXHQgIH1cblx0fVxuXHRcblx0bW9kdWxlLmV4
cG9ydHMgPSBnZXRBY3RpdmVFbGVtZW50O1xuXG4vKioqLyB9LFxuLyogNTQgKi9cbi8qKiovIGZ1
bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdHZhciBy
b290ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMTgpO1xuXHRcblx0LyoqIEJ1aWx0LWluIHZhbHVl
IHJlZmVyZW5jZXMuICovXG5cdHZhciBTeW1ib2wgPSByb290LlN5bWJvbDtcblx0XG5cdG1vZHVs
ZS5leHBvcnRzID0gU3ltYm9sO1xuXG5cbi8qKiovIH0sXG4vKiA1NSAqL1xuLyoqKi8gZnVuY3Rp
b24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0LyoqXG5cdCAq
IENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMg
cmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIg
dGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4g
dGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3Jh
bnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmls
ZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqL1xuXHRcblx0J3VzZSBzdHJpY3QnO1xuXHRc
blx0Ly8gUmVhY3QgMTUuNSByZWZlcmVuY2VzIHRoaXMgbW9kdWxlLCBhbmQgYXNzdW1lcyBQcm9w
VHlwZXMgYXJlIHN0aWxsIGNhbGxhYmxlIGluIHByb2R1Y3Rpb24uXG5cdC8vIFRoZXJlZm9yZSB3
ZSByZS1leHBvcnQgZGV2ZWxvcG1lbnQtb25seSB2ZXJzaW9uIHdpdGggYWxsIHRoZSBQcm9wVHlw
ZXMgY2hlY2tzIGhlcmUuXG5cdC8vIEhvd2V2ZXIgaWYgb25lIGlzIG1pZ3JhdGluZyB0byB0aGUg
YHByb3AtdHlwZXNgIG5wbSBsaWJyYXJ5LCB0aGV5IHdpbGwgZ28gdGhyb3VnaCB0aGVcblx0Ly8g
YGluZGV4LmpzYCBlbnRyeSBwb2ludCwgYW5kIGl0IHdpbGwgYnJhbmNoIGRlcGVuZGluZyBvbiB0
aGUgZW52aXJvbm1lbnQuXG5cdHZhciBmYWN0b3J5ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMjIp
O1xuXHRtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGlzVmFsaWRFbGVtZW50KSB7XG5cdCAgLy8g
SXQgaXMgc3RpbGwgYWxsb3dlZCBpbiAxNS41LlxuXHQgIHZhciB0aHJvd09uRGlyZWN0QWNjZXNz
ID0gZmFsc2U7XG5cdCAgcmV0dXJuIGZhY3RvcnkoaXNWYWxpZEVsZW1lbnQsIHRocm93T25EaXJl
Y3RBY2Nlc3MpO1xuXHR9O1xuXG5cbi8qKiovIH0sXG4vKiA1NiAqL1xuLyoqKi8gZnVuY3Rpb24o
bW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0LyoqXG5cdCAqIENv
cHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhl
IEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhl
IHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRc
blx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBp
biB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqL1xuXHRcblx0aWYgKGZhbHNlKSB7XG5cdCAgdmFy
IFJFQUNUX0VMRU1FTlRfVFlQRSA9ICh0eXBlb2YgU3ltYm9sID09PSAnZnVuY3Rpb24nICYmXG5c
dCAgICBTeW1ib2wuZm9yICYmXG5cdCAgICBTeW1ib2wuZm9yKCdyZWFjdC5lbGVtZW50JykpIHx8
XG5cdCAgICAweGVhYzc7XG5cdFxuXHQgIHZhciBpc1ZhbGlkRWxlbWVudCA9IGZ1bmN0aW9uKG9i
amVjdCkge1xuXHQgICAgcmV0dXJuIHR5cGVvZiBvYmplY3QgPT09ICdvYmplY3QnICYmXG5cdCAg
ICAgIG9iamVjdCAhPT0gbnVsbCAmJlxuXHQgICAgICBvYmplY3QuJCR0eXBlb2YgPT09IFJFQUNU
X0VMRU1FTlRfVFlQRTtcblx0ICB9O1xuXHRcblx0ICAvLyBCeSBleHBsaWNpdGx5IHVzaW5nIGBw
cm9wLXR5cGVzYCB5b3UgYXJlIG9wdGluZyBpbnRvIG5ldyBkZXZlbG9wbWVudCBiZWhhdmlvci5c
blx0ICAvLyBodHRwOi8vZmIubWUvcHJvcC10eXBlcy1pbi1wcm9kXG5cdCAgdmFyIHRocm93T25E
aXJlY3RBY2Nlc3MgPSB0cnVlO1xuXHQgIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9mYWN0
b3J5V2l0aFR5cGVDaGVja2VycycpKGlzVmFsaWRFbGVtZW50LCB0aHJvd09uRGlyZWN0QWNjZXNz
KTtcblx0fSBlbHNlIHtcblx0ICAvLyBCeSBleHBsaWNpdGx5IHVzaW5nIGBwcm9wLXR5cGVzYCB5
b3UgYXJlIG9wdGluZyBpbnRvIG5ldyBwcm9kdWN0aW9uIGJlaGF2aW9yLlxuXHQgIC8vIGh0dHA6
Ly9mYi5tZS9wcm9wLXR5cGVzLWluLXByb2Rcblx0ICBtb2R1bGUuZXhwb3J0cyA9IF9fd2VicGFj
a19yZXF1aXJlX18oMTIxKSgpO1xuXHR9XG5cblxuLyoqKi8gfSxcbi8qIDU3ICovXG4vKioqLyBm
dW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuXHQvKipcblx0ICogQ29weXJpZ2h0IDIwMTMt
cHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpc
blx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxp
Y2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rv
cnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRl
bnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRp
cmVjdG9yeS5cblx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHR2YXIgUmVhY3RQcm9w
VHlwZXNTZWNyZXQgPSAnU0VDUkVUX0RPX05PVF9QQVNTX1RISVNfT1JfWU9VX1dJTExfQkVfRklS
RUQnO1xuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBSZWFjdFByb3BUeXBlc1NlY3JldDtcblxuXG4v
KioqLyB9LFxuLyogNTggKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5c
dC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBB
bGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vu
c2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5T
RSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRp
dGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQ
QVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKi9cblx0XG5cdCd1
c2Ugc3RyaWN0Jztcblx0XG5cdC8qKlxuXHQgKiBDU1MgcHJvcGVydGllcyB3aGljaCBhY2NlcHQg
bnVtYmVycyBidXQgYXJlIG5vdCBpbiB1bml0cyBvZiBcInB4XCIuXG5cdCAqL1xuXHRcblx0dmFy
IGlzVW5pdGxlc3NOdW1iZXIgPSB7XG5cdCAgYW5pbWF0aW9uSXRlcmF0aW9uQ291bnQ6IHRydWUs
XG5cdCAgYm9yZGVySW1hZ2VPdXRzZXQ6IHRydWUsXG5cdCAgYm9yZGVySW1hZ2VTbGljZTogdHJ1
ZSxcblx0ICBib3JkZXJJbWFnZVdpZHRoOiB0cnVlLFxuXHQgIGJveEZsZXg6IHRydWUsXG5cdCAg
Ym94RmxleEdyb3VwOiB0cnVlLFxuXHQgIGJveE9yZGluYWxHcm91cDogdHJ1ZSxcblx0ICBjb2x1
bW5Db3VudDogdHJ1ZSxcblx0ICBmbGV4OiB0cnVlLFxuXHQgIGZsZXhHcm93OiB0cnVlLFxuXHQg
IGZsZXhQb3NpdGl2ZTogdHJ1ZSxcblx0ICBmbGV4U2hyaW5rOiB0cnVlLFxuXHQgIGZsZXhOZWdh
dGl2ZTogdHJ1ZSxcblx0ICBmbGV4T3JkZXI6IHRydWUsXG5cdCAgZ3JpZFJvdzogdHJ1ZSxcblx0
ICBncmlkUm93RW5kOiB0cnVlLFxuXHQgIGdyaWRSb3dTcGFuOiB0cnVlLFxuXHQgIGdyaWRSb3dT
dGFydDogdHJ1ZSxcblx0ICBncmlkQ29sdW1uOiB0cnVlLFxuXHQgIGdyaWRDb2x1bW5FbmQ6IHRy
dWUsXG5cdCAgZ3JpZENvbHVtblNwYW46IHRydWUsXG5cdCAgZ3JpZENvbHVtblN0YXJ0OiB0cnVl
LFxuXHQgIGZvbnRXZWlnaHQ6IHRydWUsXG5cdCAgbGluZUNsYW1wOiB0cnVlLFxuXHQgIGxpbmVI
ZWlnaHQ6IHRydWUsXG5cdCAgb3BhY2l0eTogdHJ1ZSxcblx0ICBvcmRlcjogdHJ1ZSxcblx0ICBv
cnBoYW5zOiB0cnVlLFxuXHQgIHRhYlNpemU6IHRydWUsXG5cdCAgd2lkb3dzOiB0cnVlLFxuXHQg
IHpJbmRleDogdHJ1ZSxcblx0ICB6b29tOiB0cnVlLFxuXHRcblx0ICAvLyBTVkctcmVsYXRlZCBw
cm9wZXJ0aWVzXG5cdCAgZmlsbE9wYWNpdHk6IHRydWUsXG5cdCAgZmxvb2RPcGFjaXR5OiB0cnVl
LFxuXHQgIHN0b3BPcGFjaXR5OiB0cnVlLFxuXHQgIHN0cm9rZURhc2hhcnJheTogdHJ1ZSxcblx0
ICBzdHJva2VEYXNob2Zmc2V0OiB0cnVlLFxuXHQgIHN0cm9rZU1pdGVybGltaXQ6IHRydWUsXG5c
dCAgc3Ryb2tlT3BhY2l0eTogdHJ1ZSxcblx0ICBzdHJva2VXaWR0aDogdHJ1ZVxuXHR9O1xuXHRc
blx0LyoqXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBwcmVmaXggdmVuZG9yLXNwZWNpZmljIHByZWZp
eCwgZWc6IFdlYmtpdFxuXHQgKiBAcGFyYW0ge3N0cmluZ30ga2V5IHN0eWxlIG5hbWUsIGVnOiB0
cmFuc2l0aW9uRHVyYXRpb25cblx0ICogQHJldHVybiB7c3RyaW5nfSBzdHlsZSBuYW1lIHByZWZp
eGVkIHdpdGggYHByZWZpeGAsIHByb3Blcmx5IGNhbWVsQ2FzZWQsIGVnOlxuXHQgKiBXZWJraXRU
cmFuc2l0aW9uRHVyYXRpb25cblx0ICovXG5cdGZ1bmN0aW9uIHByZWZpeEtleShwcmVmaXgsIGtl
eSkge1xuXHQgIHJldHVybiBwcmVmaXggKyBrZXkuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBr
ZXkuc3Vic3RyaW5nKDEpO1xuXHR9XG5cdFxuXHQvKipcblx0ICogU3VwcG9ydCBzdHlsZSBuYW1l
cyB0aGF0IG1heSBjb21lIHBhc3NlZCBpbiBwcmVmaXhlZCBieSBhZGRpbmcgcGVybXV0YXRpb25z
XG5cdCAqIG9mIHZlbmRvciBwcmVmaXhlcy5cblx0ICovXG5cdHZhciBwcmVmaXhlcyA9IFsnV2Vi
a2l0JywgJ21zJywgJ01veicsICdPJ107XG5cdFxuXHQvLyBVc2luZyBPYmplY3Qua2V5cyBoZXJl
LCBvciBlbHNlIHRoZSB2YW5pbGxhIGZvci1pbiBsb29wIG1ha2VzIElFOCBnbyBpbnRvIGFuXG5c
dC8vIGluZmluaXRlIGxvb3AsIGJlY2F1c2UgaXQgaXRlcmF0ZXMgb3ZlciB0aGUgbmV3bHkgYWRk
ZWQgcHJvcHMgdG9vLlxuXHRPYmplY3Qua2V5cyhpc1VuaXRsZXNzTnVtYmVyKS5mb3JFYWNoKGZ1
bmN0aW9uIChwcm9wKSB7XG5cdCAgcHJlZml4ZXMuZm9yRWFjaChmdW5jdGlvbiAocHJlZml4KSB7
XG5cdCAgICBpc1VuaXRsZXNzTnVtYmVyW3ByZWZpeEtleShwcmVmaXgsIHByb3ApXSA9IGlzVW5p
dGxlc3NOdW1iZXJbcHJvcF07XG5cdCAgfSk7XG5cdH0pO1xuXHRcblx0LyoqXG5cdCAqIE1vc3Qg
c3R5bGUgcHJvcGVydGllcyBjYW4gYmUgdW5zZXQgYnkgZG9pbmcgLnN0eWxlW3Byb3BdID0gJycg
YnV0IElFOFxuXHQgKiBkb2Vzbid0IGxpa2UgZG9pbmcgdGhhdCB3aXRoIHNob3J0aGFuZCBwcm9w
ZXJ0aWVzIHNvIGZvciB0aGUgcHJvcGVydGllcyB0aGF0XG5cdCAqIElFOCBicmVha3Mgb24sIHdo
aWNoIGFyZSBsaXN0ZWQgaGVyZSwgd2UgaW5zdGVhZCB1bnNldCBlYWNoIG9mIHRoZVxuXHQgKiBp
bmRpdmlkdWFsIHByb3BlcnRpZXMuIFNlZSBodHRwOi8vYnVncy5qcXVlcnkuY29tL3RpY2tldC8x
MjM4NS5cblx0ICogVGhlIDQtdmFsdWUgJ2Nsb2NrJyBwcm9wZXJ0aWVzIGxpa2UgbWFyZ2luLCBw
YWRkaW5nLCBib3JkZXItd2lkdGggc2VlbSB0b1xuXHQgKiBiZWhhdmUgd2l0aG91dCBhbnkgcHJv
YmxlbXMuIEN1cmlvdXNseSwgbGlzdC1zdHlsZSB3b3JrcyB0b28gd2l0aG91dCBhbnlcblx0ICog
c3BlY2lhbCBwcm9kZGluZy5cblx0ICovXG5cdHZhciBzaG9ydGhhbmRQcm9wZXJ0eUV4cGFuc2lv
bnMgPSB7XG5cdCAgYmFja2dyb3VuZDoge1xuXHQgICAgYmFja2dyb3VuZEF0dGFjaG1lbnQ6IHRy
dWUsXG5cdCAgICBiYWNrZ3JvdW5kQ29sb3I6IHRydWUsXG5cdCAgICBiYWNrZ3JvdW5kSW1hZ2U6
IHRydWUsXG5cdCAgICBiYWNrZ3JvdW5kUG9zaXRpb25YOiB0cnVlLFxuXHQgICAgYmFja2dyb3Vu
ZFBvc2l0aW9uWTogdHJ1ZSxcblx0ICAgIGJhY2tncm91bmRSZXBlYXQ6IHRydWVcblx0ICB9LFxu
XHQgIGJhY2tncm91bmRQb3NpdGlvbjoge1xuXHQgICAgYmFja2dyb3VuZFBvc2l0aW9uWDogdHJ1
ZSxcblx0ICAgIGJhY2tncm91bmRQb3NpdGlvblk6IHRydWVcblx0ICB9LFxuXHQgIGJvcmRlcjog
e1xuXHQgICAgYm9yZGVyV2lkdGg6IHRydWUsXG5cdCAgICBib3JkZXJTdHlsZTogdHJ1ZSxcblx0
ICAgIGJvcmRlckNvbG9yOiB0cnVlXG5cdCAgfSxcblx0ICBib3JkZXJCb3R0b206IHtcblx0ICAg
IGJvcmRlckJvdHRvbVdpZHRoOiB0cnVlLFxuXHQgICAgYm9yZGVyQm90dG9tU3R5bGU6IHRydWUs
XG5cdCAgICBib3JkZXJCb3R0b21Db2xvcjogdHJ1ZVxuXHQgIH0sXG5cdCAgYm9yZGVyTGVmdDog
e1xuXHQgICAgYm9yZGVyTGVmdFdpZHRoOiB0cnVlLFxuXHQgICAgYm9yZGVyTGVmdFN0eWxlOiB0
cnVlLFxuXHQgICAgYm9yZGVyTGVmdENvbG9yOiB0cnVlXG5cdCAgfSxcblx0ICBib3JkZXJSaWdo
dDoge1xuXHQgICAgYm9yZGVyUmlnaHRXaWR0aDogdHJ1ZSxcblx0ICAgIGJvcmRlclJpZ2h0U3R5
bGU6IHRydWUsXG5cdCAgICBib3JkZXJSaWdodENvbG9yOiB0cnVlXG5cdCAgfSxcblx0ICBib3Jk
ZXJUb3A6IHtcblx0ICAgIGJvcmRlclRvcFdpZHRoOiB0cnVlLFxuXHQgICAgYm9yZGVyVG9wU3R5
bGU6IHRydWUsXG5cdCAgICBib3JkZXJUb3BDb2xvcjogdHJ1ZVxuXHQgIH0sXG5cdCAgZm9udDog
e1xuXHQgICAgZm9udFN0eWxlOiB0cnVlLFxuXHQgICAgZm9udFZhcmlhbnQ6IHRydWUsXG5cdCAg
ICBmb250V2VpZ2h0OiB0cnVlLFxuXHQgICAgZm9udFNpemU6IHRydWUsXG5cdCAgICBsaW5lSGVp
Z2h0OiB0cnVlLFxuXHQgICAgZm9udEZhbWlseTogdHJ1ZVxuXHQgIH0sXG5cdCAgb3V0bGluZTog
e1xuXHQgICAgb3V0bGluZVdpZHRoOiB0cnVlLFxuXHQgICAgb3V0bGluZVN0eWxlOiB0cnVlLFxu
XHQgICAgb3V0bGluZUNvbG9yOiB0cnVlXG5cdCAgfVxuXHR9O1xuXHRcblx0dmFyIENTU1Byb3Bl
cnR5ID0ge1xuXHQgIGlzVW5pdGxlc3NOdW1iZXI6IGlzVW5pdGxlc3NOdW1iZXIsXG5cdCAgc2hv
cnRoYW5kUHJvcGVydHlFeHBhbnNpb25zOiBzaG9ydGhhbmRQcm9wZXJ0eUV4cGFuc2lvbnNcblx0
fTtcblx0XG5cdG1vZHVsZS5leHBvcnRzID0gQ1NTUHJvcGVydHk7XG5cbi8qKiovIH0sXG4vKiA1
OSAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9f
KSB7XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMu
XG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUg
aXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQg
KiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUu
IEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQg
aW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqIFxu
XHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdHZhciBfcHJvZEludmFyaWFudCA9IF9f
d2VicGFja19yZXF1aXJlX18oMyk7XG5cdFxuXHRmdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5z
dGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0
b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVu
Y3Rpb25cIik7IH0gfVxuXHRcblx0dmFyIFBvb2xlZENsYXNzID0gX193ZWJwYWNrX3JlcXVpcmVf
XygxMyk7XG5cdFxuXHR2YXIgaW52YXJpYW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxKTtcblx0
XG5cdC8qKlxuXHQgKiBBIHNwZWNpYWxpemVkIHBzZXVkby1ldmVudCBtb2R1bGUgdG8gaGVscCBr
ZWVwIHRyYWNrIG9mIGNvbXBvbmVudHMgd2FpdGluZyB0b1xuXHQgKiBiZSBub3RpZmllZCB3aGVu
IHRoZWlyIERPTSByZXByZXNlbnRhdGlvbnMgYXJlIGF2YWlsYWJsZSBmb3IgdXNlLlxuXHQgKlxu
XHQgKiBUaGlzIGltcGxlbWVudHMgYFBvb2xlZENsYXNzYCwgc28geW91IHNob3VsZCBuZXZlciBu
ZWVkIHRvIGluc3RhbnRpYXRlIHRoaXMuXG5cdCAqIEluc3RlYWQsIHVzZSBgQ2FsbGJhY2tRdWV1
ZS5nZXRQb29sZWQoKWAuXG5cdCAqXG5cdCAqIEBjbGFzcyBSZWFjdE1vdW50UmVhZHlcblx0ICog
QGltcGxlbWVudHMgUG9vbGVkQ2xhc3Ncblx0ICogQGludGVybmFsXG5cdCAqL1xuXHRcblx0dmFy
IENhbGxiYWNrUXVldWUgPSBmdW5jdGlvbiAoKSB7XG5cdCAgZnVuY3Rpb24gQ2FsbGJhY2tRdWV1
ZShhcmcpIHtcblx0ICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBDYWxsYmFja1F1ZXVlKTtcblx0
XG5cdCAgICB0aGlzLl9jYWxsYmFja3MgPSBudWxsO1xuXHQgICAgdGhpcy5fY29udGV4dHMgPSBu
dWxsO1xuXHQgICAgdGhpcy5fYXJnID0gYXJnO1xuXHQgIH1cblx0XG5cdCAgLyoqXG5cdCAgICog
RW5xdWV1ZXMgYSBjYWxsYmFjayB0byBiZSBpbnZva2VkIHdoZW4gYG5vdGlmeUFsbGAgaXMgaW52
b2tlZC5cblx0ICAgKlxuXHQgICAqIEBwYXJhbSB7ZnVuY3Rpb259IGNhbGxiYWNrIEludm9rZWQg
d2hlbiBgbm90aWZ5QWxsYCBpcyBpbnZva2VkLlxuXHQgICAqIEBwYXJhbSB7P29iamVjdH0gY29u
dGV4dCBDb250ZXh0IHRvIGNhbGwgYGNhbGxiYWNrYCB3aXRoLlxuXHQgICAqIEBpbnRlcm5hbFxu
XHQgICAqL1xuXHRcblx0XG5cdCAgQ2FsbGJhY2tRdWV1ZS5wcm90b3R5cGUuZW5xdWV1ZSA9IGZ1
bmN0aW9uIGVucXVldWUoY2FsbGJhY2ssIGNvbnRleHQpIHtcblx0ICAgIHRoaXMuX2NhbGxiYWNr
cyA9IHRoaXMuX2NhbGxiYWNrcyB8fCBbXTtcblx0ICAgIHRoaXMuX2NhbGxiYWNrcy5wdXNoKGNh
bGxiYWNrKTtcblx0ICAgIHRoaXMuX2NvbnRleHRzID0gdGhpcy5fY29udGV4dHMgfHwgW107XG5c
dCAgICB0aGlzLl9jb250ZXh0cy5wdXNoKGNvbnRleHQpO1xuXHQgIH07XG5cdFxuXHQgIC8qKlxu
XHQgICAqIEludm9rZXMgYWxsIGVucXVldWVkIGNhbGxiYWNrcyBhbmQgY2xlYXJzIHRoZSBxdWV1
ZS4gVGhpcyBpcyBpbnZva2VkIGFmdGVyXG5cdCAgICogdGhlIERPTSByZXByZXNlbnRhdGlvbiBv
ZiBhIGNvbXBvbmVudCBoYXMgYmVlbiBjcmVhdGVkIG9yIHVwZGF0ZWQuXG5cdCAgICpcblx0ICAg
KiBAaW50ZXJuYWxcblx0ICAgKi9cblx0XG5cdFxuXHQgIENhbGxiYWNrUXVldWUucHJvdG90eXBl
Lm5vdGlmeUFsbCA9IGZ1bmN0aW9uIG5vdGlmeUFsbCgpIHtcblx0ICAgIHZhciBjYWxsYmFja3Mg
PSB0aGlzLl9jYWxsYmFja3M7XG5cdCAgICB2YXIgY29udGV4dHMgPSB0aGlzLl9jb250ZXh0cztc
blx0ICAgIHZhciBhcmcgPSB0aGlzLl9hcmc7XG5cdCAgICBpZiAoY2FsbGJhY2tzICYmIGNvbnRl
eHRzKSB7XG5cdCAgICAgICEoY2FsbGJhY2tzLmxlbmd0aCA9PT0gY29udGV4dHMubGVuZ3RoKSA/
ICBmYWxzZSA/IGludmFyaWFudChmYWxzZSwgJ01pc21hdGNoZWQgbGlzdCBvZiBjb250ZXh0cyBp
biBjYWxsYmFjayBxdWV1ZScpIDogX3Byb2RJbnZhcmlhbnQoJzI0JykgOiB2b2lkIDA7XG5cdCAg
ICAgIHRoaXMuX2NhbGxiYWNrcyA9IG51bGw7XG5cdCAgICAgIHRoaXMuX2NvbnRleHRzID0gbnVs
bDtcblx0ICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjYWxsYmFja3MubGVuZ3RoOyBpKyspIHtc
blx0ICAgICAgICBjYWxsYmFja3NbaV0uY2FsbChjb250ZXh0c1tpXSwgYXJnKTtcblx0ICAgICAg
fVxuXHQgICAgICBjYWxsYmFja3MubGVuZ3RoID0gMDtcblx0ICAgICAgY29udGV4dHMubGVuZ3Ro
ID0gMDtcblx0ICAgIH1cblx0ICB9O1xuXHRcblx0ICBDYWxsYmFja1F1ZXVlLnByb3RvdHlwZS5j
aGVja3BvaW50ID0gZnVuY3Rpb24gY2hlY2twb2ludCgpIHtcblx0ICAgIHJldHVybiB0aGlzLl9j
YWxsYmFja3MgPyB0aGlzLl9jYWxsYmFja3MubGVuZ3RoIDogMDtcblx0ICB9O1xuXHRcblx0ICBD
YWxsYmFja1F1ZXVlLnByb3RvdHlwZS5yb2xsYmFjayA9IGZ1bmN0aW9uIHJvbGxiYWNrKGxlbikg
e1xuXHQgICAgaWYgKHRoaXMuX2NhbGxiYWNrcyAmJiB0aGlzLl9jb250ZXh0cykge1xuXHQgICAg
ICB0aGlzLl9jYWxsYmFja3MubGVuZ3RoID0gbGVuO1xuXHQgICAgICB0aGlzLl9jb250ZXh0cy5s
ZW5ndGggPSBsZW47XG5cdCAgICB9XG5cdCAgfTtcblx0XG5cdCAgLyoqXG5cdCAgICogUmVzZXRz
IHRoZSBpbnRlcm5hbCBxdWV1ZS5cblx0ICAgKlxuXHQgICAqIEBpbnRlcm5hbFxuXHQgICAqL1xu
XHRcblx0XG5cdCAgQ2FsbGJhY2tRdWV1ZS5wcm90b3R5cGUucmVzZXQgPSBmdW5jdGlvbiByZXNl
dCgpIHtcblx0ICAgIHRoaXMuX2NhbGxiYWNrcyA9IG51bGw7XG5cdCAgICB0aGlzLl9jb250ZXh0
cyA9IG51bGw7XG5cdCAgfTtcblx0XG5cdCAgLyoqXG5cdCAgICogYFBvb2xlZENsYXNzYCBsb29r
cyBmb3IgdGhpcy5cblx0ICAgKi9cblx0XG5cdFxuXHQgIENhbGxiYWNrUXVldWUucHJvdG90eXBl
LmRlc3RydWN0b3IgPSBmdW5jdGlvbiBkZXN0cnVjdG9yKCkge1xuXHQgICAgdGhpcy5yZXNldCgp
O1xuXHQgIH07XG5cdFxuXHQgIHJldHVybiBDYWxsYmFja1F1ZXVlO1xuXHR9KCk7XG5cdFxuXHRt
b2R1bGUuZXhwb3J0cyA9IFBvb2xlZENsYXNzLmFkZFBvb2xpbmdUbyhDYWxsYmFja1F1ZXVlKTtc
blxuLyoqKi8gfSxcbi8qIDYwICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9f
d2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvKipcblx0ICogQ29weXJpZ2h0IDIwMTMtcHJlc2Vu
dCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICog
VGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2Ug
Zm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2Yg
dGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmln
aHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9y
eS5cblx0ICpcblx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHR2YXIgRE9NUHJvcGVy
dHkgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE1KTtcblx0dmFyIFJlYWN0RE9NQ29tcG9uZW50VHJl
ZSA9IF9fd2VicGFja19yZXF1aXJlX18oNSk7XG5cdHZhciBSZWFjdEluc3RydW1lbnRhdGlvbiA9
IF9fd2VicGFja19yZXF1aXJlX18oOCk7XG5cdFxuXHR2YXIgcXVvdGVBdHRyaWJ1dGVWYWx1ZUZv
ckJyb3dzZXIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE4NSk7XG5cdHZhciB3YXJuaW5nID0gX193
ZWJwYWNrX3JlcXVpcmVfXygyKTtcblx0XG5cdHZhciBWQUxJRF9BVFRSSUJVVEVfTkFNRV9SRUdF
WCA9IG5ldyBSZWdFeHAoJ15bJyArIERPTVByb3BlcnR5LkFUVFJJQlVURV9OQU1FX1NUQVJUX0NI
QVIgKyAnXVsnICsgRE9NUHJvcGVydHkuQVRUUklCVVRFX05BTUVfQ0hBUiArICddKiQnKTtcblx0
dmFyIGlsbGVnYWxBdHRyaWJ1dGVOYW1lQ2FjaGUgPSB7fTtcblx0dmFyIHZhbGlkYXRlZEF0dHJp
YnV0ZU5hbWVDYWNoZSA9IHt9O1xuXHRcblx0ZnVuY3Rpb24gaXNBdHRyaWJ1dGVOYW1lU2FmZShh
dHRyaWJ1dGVOYW1lKSB7XG5cdCAgaWYgKHZhbGlkYXRlZEF0dHJpYnV0ZU5hbWVDYWNoZS5oYXNP
d25Qcm9wZXJ0eShhdHRyaWJ1dGVOYW1lKSkge1xuXHQgICAgcmV0dXJuIHRydWU7XG5cdCAgfVxu
XHQgIGlmIChpbGxlZ2FsQXR0cmlidXRlTmFtZUNhY2hlLmhhc093blByb3BlcnR5KGF0dHJpYnV0
ZU5hbWUpKSB7XG5cdCAgICByZXR1cm4gZmFsc2U7XG5cdCAgfVxuXHQgIGlmIChWQUxJRF9BVFRS
SUJVVEVfTkFNRV9SRUdFWC50ZXN0KGF0dHJpYnV0ZU5hbWUpKSB7XG5cdCAgICB2YWxpZGF0ZWRB
dHRyaWJ1dGVOYW1lQ2FjaGVbYXR0cmlidXRlTmFtZV0gPSB0cnVlO1xuXHQgICAgcmV0dXJuIHRy
dWU7XG5cdCAgfVxuXHQgIGlsbGVnYWxBdHRyaWJ1dGVOYW1lQ2FjaGVbYXR0cmlidXRlTmFtZV0g
PSB0cnVlO1xuXHQgICBmYWxzZSA/IHdhcm5pbmcoZmFsc2UsICdJbnZhbGlkIGF0dHJpYnV0ZSBu
YW1lOiBgJXNgJywgYXR0cmlidXRlTmFtZSkgOiB2b2lkIDA7XG5cdCAgcmV0dXJuIGZhbHNlO1xu
XHR9XG5cdFxuXHRmdW5jdGlvbiBzaG91bGRJZ25vcmVWYWx1ZShwcm9wZXJ0eUluZm8sIHZhbHVl
KSB7XG5cdCAgcmV0dXJuIHZhbHVlID09IG51bGwgfHwgcHJvcGVydHlJbmZvLmhhc0Jvb2xlYW5W
YWx1ZSAmJiAhdmFsdWUgfHwgcHJvcGVydHlJbmZvLmhhc051bWVyaWNWYWx1ZSAmJiBpc05hTih2
YWx1ZSkgfHwgcHJvcGVydHlJbmZvLmhhc1Bvc2l0aXZlTnVtZXJpY1ZhbHVlICYmIHZhbHVlIDwg
MSB8fCBwcm9wZXJ0eUluZm8uaGFzT3ZlcmxvYWRlZEJvb2xlYW5WYWx1ZSAmJiB2YWx1ZSA9PT0g
ZmFsc2U7XG5cdH1cblx0XG5cdC8qKlxuXHQgKiBPcGVyYXRpb25zIGZvciBkZWFsaW5nIHdpdGgg
RE9NIHByb3BlcnRpZXMuXG5cdCAqL1xuXHR2YXIgRE9NUHJvcGVydHlPcGVyYXRpb25zID0ge1xu
XHQgIC8qKlxuXHQgICAqIENyZWF0ZXMgbWFya3VwIGZvciB0aGUgSUQgcHJvcGVydHkuXG5cdCAg
ICpcblx0ICAgKiBAcGFyYW0ge3N0cmluZ30gaWQgVW5lc2NhcGVkIElELlxuXHQgICAqIEByZXR1
cm4ge3N0cmluZ30gTWFya3VwIHN0cmluZy5cblx0ICAgKi9cblx0ICBjcmVhdGVNYXJrdXBGb3JJ
RDogZnVuY3Rpb24gKGlkKSB7XG5cdCAgICByZXR1cm4gRE9NUHJvcGVydHkuSURfQVRUUklCVVRF
X05BTUUgKyAnPScgKyBxdW90ZUF0dHJpYnV0ZVZhbHVlRm9yQnJvd3NlcihpZCk7XG5cdCAgfSxc
blx0XG5cdCAgc2V0QXR0cmlidXRlRm9ySUQ6IGZ1bmN0aW9uIChub2RlLCBpZCkge1xuXHQgICAg
bm9kZS5zZXRBdHRyaWJ1dGUoRE9NUHJvcGVydHkuSURfQVRUUklCVVRFX05BTUUsIGlkKTtcblx0
ICB9LFxuXHRcblx0ICBjcmVhdGVNYXJrdXBGb3JSb290OiBmdW5jdGlvbiAoKSB7XG5cdCAgICBy
ZXR1cm4gRE9NUHJvcGVydHkuUk9PVF9BVFRSSUJVVEVfTkFNRSArICc9XCJcIic7XG5cdCAgfSxc
blx0XG5cdCAgc2V0QXR0cmlidXRlRm9yUm9vdDogZnVuY3Rpb24gKG5vZGUpIHtcblx0ICAgIG5v
ZGUuc2V0QXR0cmlidXRlKERPTVByb3BlcnR5LlJPT1RfQVRUUklCVVRFX05BTUUsICcnKTtcblx0
ICB9LFxuXHRcblx0ICAvKipcblx0ICAgKiBDcmVhdGVzIG1hcmt1cCBmb3IgYSBwcm9wZXJ0eS5c
blx0ICAgKlxuXHQgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lXG5cdCAgICogQHBhcmFtIHsqfSB2
YWx1ZVxuXHQgICAqIEByZXR1cm4gez9zdHJpbmd9IE1hcmt1cCBzdHJpbmcsIG9yIG51bGwgaWYg
dGhlIHByb3BlcnR5IHdhcyBpbnZhbGlkLlxuXHQgICAqL1xuXHQgIGNyZWF0ZU1hcmt1cEZvclBy
b3BlcnR5OiBmdW5jdGlvbiAobmFtZSwgdmFsdWUpIHtcblx0ICAgIHZhciBwcm9wZXJ0eUluZm8g
PSBET01Qcm9wZXJ0eS5wcm9wZXJ0aWVzLmhhc093blByb3BlcnR5KG5hbWUpID8gRE9NUHJvcGVy
dHkucHJvcGVydGllc1tuYW1lXSA6IG51bGw7XG5cdCAgICBpZiAocHJvcGVydHlJbmZvKSB7XG5c
dCAgICAgIGlmIChzaG91bGRJZ25vcmVWYWx1ZShwcm9wZXJ0eUluZm8sIHZhbHVlKSkge1xuXHQg
ICAgICAgIHJldHVybiAnJztcblx0ICAgICAgfVxuXHQgICAgICB2YXIgYXR0cmlidXRlTmFtZSA9
IHByb3BlcnR5SW5mby5hdHRyaWJ1dGVOYW1lO1xuXHQgICAgICBpZiAocHJvcGVydHlJbmZvLmhh
c0Jvb2xlYW5WYWx1ZSB8fCBwcm9wZXJ0eUluZm8uaGFzT3ZlcmxvYWRlZEJvb2xlYW5WYWx1ZSAm
JiB2YWx1ZSA9PT0gdHJ1ZSkge1xuXHQgICAgICAgIHJldHVybiBhdHRyaWJ1dGVOYW1lICsgJz1c
IlwiJztcblx0ICAgICAgfVxuXHQgICAgICByZXR1cm4gYXR0cmlidXRlTmFtZSArICc9JyArIHF1
b3RlQXR0cmlidXRlVmFsdWVGb3JCcm93c2VyKHZhbHVlKTtcblx0ICAgIH0gZWxzZSBpZiAoRE9N
UHJvcGVydHkuaXNDdXN0b21BdHRyaWJ1dGUobmFtZSkpIHtcblx0ICAgICAgaWYgKHZhbHVlID09
IG51bGwpIHtcblx0ICAgICAgICByZXR1cm4gJyc7XG5cdCAgICAgIH1cblx0ICAgICAgcmV0dXJu
IG5hbWUgKyAnPScgKyBxdW90ZUF0dHJpYnV0ZVZhbHVlRm9yQnJvd3Nlcih2YWx1ZSk7XG5cdCAg
ICB9XG5cdCAgICByZXR1cm4gbnVsbDtcblx0ICB9LFxuXHRcblx0ICAvKipcblx0ICAgKiBDcmVh
dGVzIG1hcmt1cCBmb3IgYSBjdXN0b20gcHJvcGVydHkuXG5cdCAgICpcblx0ICAgKiBAcGFyYW0g
e3N0cmluZ30gbmFtZVxuXHQgICAqIEBwYXJhbSB7Kn0gdmFsdWVcblx0ICAgKiBAcmV0dXJuIHtz
dHJpbmd9IE1hcmt1cCBzdHJpbmcsIG9yIGVtcHR5IHN0cmluZyBpZiB0aGUgcHJvcGVydHkgd2Fz
IGludmFsaWQuXG5cdCAgICovXG5cdCAgY3JlYXRlTWFya3VwRm9yQ3VzdG9tQXR0cmlidXRlOiBm
dW5jdGlvbiAobmFtZSwgdmFsdWUpIHtcblx0ICAgIGlmICghaXNBdHRyaWJ1dGVOYW1lU2FmZShu
YW1lKSB8fCB2YWx1ZSA9PSBudWxsKSB7XG5cdCAgICAgIHJldHVybiAnJztcblx0ICAgIH1cblx0
ICAgIHJldHVybiBuYW1lICsgJz0nICsgcXVvdGVBdHRyaWJ1dGVWYWx1ZUZvckJyb3dzZXIodmFs
dWUpO1xuXHQgIH0sXG5cdFxuXHQgIC8qKlxuXHQgICAqIFNldHMgdGhlIHZhbHVlIGZvciBhIHBy
b3BlcnR5IG9uIGEgbm9kZS5cblx0ICAgKlxuXHQgICAqIEBwYXJhbSB7RE9NRWxlbWVudH0gbm9k
ZVxuXHQgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lXG5cdCAgICogQHBhcmFtIHsqfSB2YWx1ZVxu
XHQgICAqL1xuXHQgIHNldFZhbHVlRm9yUHJvcGVydHk6IGZ1bmN0aW9uIChub2RlLCBuYW1lLCB2
YWx1ZSkge1xuXHQgICAgdmFyIHByb3BlcnR5SW5mbyA9IERPTVByb3BlcnR5LnByb3BlcnRpZXMu
aGFzT3duUHJvcGVydHkobmFtZSkgPyBET01Qcm9wZXJ0eS5wcm9wZXJ0aWVzW25hbWVdIDogbnVs
bDtcblx0ICAgIGlmIChwcm9wZXJ0eUluZm8pIHtcblx0ICAgICAgdmFyIG11dGF0aW9uTWV0aG9k
ID0gcHJvcGVydHlJbmZvLm11dGF0aW9uTWV0aG9kO1xuXHQgICAgICBpZiAobXV0YXRpb25NZXRo
b2QpIHtcblx0ICAgICAgICBtdXRhdGlvbk1ldGhvZChub2RlLCB2YWx1ZSk7XG5cdCAgICAgIH0g
ZWxzZSBpZiAoc2hvdWxkSWdub3JlVmFsdWUocHJvcGVydHlJbmZvLCB2YWx1ZSkpIHtcblx0ICAg
ICAgICB0aGlzLmRlbGV0ZVZhbHVlRm9yUHJvcGVydHkobm9kZSwgbmFtZSk7XG5cdCAgICAgICAg
cmV0dXJuO1xuXHQgICAgICB9IGVsc2UgaWYgKHByb3BlcnR5SW5mby5tdXN0VXNlUHJvcGVydHkp
IHtcblx0ICAgICAgICAvLyBDb250cmFyeSB0byBgc2V0QXR0cmlidXRlYCwgb2JqZWN0IHByb3Bl
cnRpZXMgYXJlIHByb3Blcmx5XG5cdCAgICAgICAgLy8gYHRvU3RyaW5nYGVkIGJ5IElFOC85Llxu
XHQgICAgICAgIG5vZGVbcHJvcGVydHlJbmZvLnByb3BlcnR5TmFtZV0gPSB2YWx1ZTtcblx0ICAg
ICAgfSBlbHNlIHtcblx0ICAgICAgICB2YXIgYXR0cmlidXRlTmFtZSA9IHByb3BlcnR5SW5mby5h
dHRyaWJ1dGVOYW1lO1xuXHQgICAgICAgIHZhciBuYW1lc3BhY2UgPSBwcm9wZXJ0eUluZm8uYXR0
cmlidXRlTmFtZXNwYWNlO1xuXHQgICAgICAgIC8vIGBzZXRBdHRyaWJ1dGVgIHdpdGggb2JqZWN0
cyBiZWNvbWVzIG9ubHkgYFtvYmplY3RdYCBpbiBJRTgvOSxcblx0ICAgICAgICAvLyAoJycgKyB2
YWx1ZSkgbWFrZXMgaXQgb3V0cHV0IHRoZSBjb3JyZWN0IHRvU3RyaW5nKCktdmFsdWUuXG5cdCAg
ICAgICAgaWYgKG5hbWVzcGFjZSkge1xuXHQgICAgICAgICAgbm9kZS5zZXRBdHRyaWJ1dGVOUyhu
YW1lc3BhY2UsIGF0dHJpYnV0ZU5hbWUsICcnICsgdmFsdWUpO1xuXHQgICAgICAgIH0gZWxzZSBp
ZiAocHJvcGVydHlJbmZvLmhhc0Jvb2xlYW5WYWx1ZSB8fCBwcm9wZXJ0eUluZm8uaGFzT3Zlcmxv
YWRlZEJvb2xlYW5WYWx1ZSAmJiB2YWx1ZSA9PT0gdHJ1ZSkge1xuXHQgICAgICAgICAgbm9kZS5z
ZXRBdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSwgJycpO1xuXHQgICAgICAgIH0gZWxzZSB7XG5cdCAg
ICAgICAgICBub2RlLnNldEF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lLCAnJyArIHZhbHVlKTtcblx0
ICAgICAgICB9XG5cdCAgICAgIH1cblx0ICAgIH0gZWxzZSBpZiAoRE9NUHJvcGVydHkuaXNDdXN0
b21BdHRyaWJ1dGUobmFtZSkpIHtcblx0ICAgICAgRE9NUHJvcGVydHlPcGVyYXRpb25zLnNldFZh
bHVlRm9yQXR0cmlidXRlKG5vZGUsIG5hbWUsIHZhbHVlKTtcblx0ICAgICAgcmV0dXJuO1xuXHQg
ICAgfVxuXHRcblx0ICAgIGlmIChmYWxzZSkge1xuXHQgICAgICB2YXIgcGF5bG9hZCA9IHt9O1xu
XHQgICAgICBwYXlsb2FkW25hbWVdID0gdmFsdWU7XG5cdCAgICAgIFJlYWN0SW5zdHJ1bWVudGF0
aW9uLmRlYnVnVG9vbC5vbkhvc3RPcGVyYXRpb24oe1xuXHQgICAgICAgIGluc3RhbmNlSUQ6IFJl
YWN0RE9NQ29tcG9uZW50VHJlZS5nZXRJbnN0YW5jZUZyb21Ob2RlKG5vZGUpLl9kZWJ1Z0lELFxu
XHQgICAgICAgIHR5cGU6ICd1cGRhdGUgYXR0cmlidXRlJyxcblx0ICAgICAgICBwYXlsb2FkOiBw
YXlsb2FkXG5cdCAgICAgIH0pO1xuXHQgICAgfVxuXHQgIH0sXG5cdFxuXHQgIHNldFZhbHVlRm9y
QXR0cmlidXRlOiBmdW5jdGlvbiAobm9kZSwgbmFtZSwgdmFsdWUpIHtcblx0ICAgIGlmICghaXNB
dHRyaWJ1dGVOYW1lU2FmZShuYW1lKSkge1xuXHQgICAgICByZXR1cm47XG5cdCAgICB9XG5cdCAg
ICBpZiAodmFsdWUgPT0gbnVsbCkge1xuXHQgICAgICBub2RlLnJlbW92ZUF0dHJpYnV0ZShuYW1l
KTtcblx0ICAgIH0gZWxzZSB7XG5cdCAgICAgIG5vZGUuc2V0QXR0cmlidXRlKG5hbWUsICcnICsg
dmFsdWUpO1xuXHQgICAgfVxuXHRcblx0ICAgIGlmIChmYWxzZSkge1xuXHQgICAgICB2YXIgcGF5
bG9hZCA9IHt9O1xuXHQgICAgICBwYXlsb2FkW25hbWVdID0gdmFsdWU7XG5cdCAgICAgIFJlYWN0
SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vbkhvc3RPcGVyYXRpb24oe1xuXHQgICAgICAgIGlu
c3RhbmNlSUQ6IFJlYWN0RE9NQ29tcG9uZW50VHJlZS5nZXRJbnN0YW5jZUZyb21Ob2RlKG5vZGUp
Ll9kZWJ1Z0lELFxuXHQgICAgICAgIHR5cGU6ICd1cGRhdGUgYXR0cmlidXRlJyxcblx0ICAgICAg
ICBwYXlsb2FkOiBwYXlsb2FkXG5cdCAgICAgIH0pO1xuXHQgICAgfVxuXHQgIH0sXG5cdFxuXHQg
IC8qKlxuXHQgICAqIERlbGV0ZXMgYW4gYXR0cmlidXRlcyBmcm9tIGEgbm9kZS5cblx0ICAgKlxu
XHQgICAqIEBwYXJhbSB7RE9NRWxlbWVudH0gbm9kZVxuXHQgICAqIEBwYXJhbSB7c3RyaW5nfSBu
YW1lXG5cdCAgICovXG5cdCAgZGVsZXRlVmFsdWVGb3JBdHRyaWJ1dGU6IGZ1bmN0aW9uIChub2Rl
LCBuYW1lKSB7XG5cdCAgICBub2RlLnJlbW92ZUF0dHJpYnV0ZShuYW1lKTtcblx0ICAgIGlmIChm
YWxzZSkge1xuXHQgICAgICBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25Ib3N0T3Bl
cmF0aW9uKHtcblx0ICAgICAgICBpbnN0YW5jZUlEOiBSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0
SW5zdGFuY2VGcm9tTm9kZShub2RlKS5fZGVidWdJRCxcblx0ICAgICAgICB0eXBlOiAncmVtb3Zl
IGF0dHJpYnV0ZScsXG5cdCAgICAgICAgcGF5bG9hZDogbmFtZVxuXHQgICAgICB9KTtcblx0ICAg
IH1cblx0ICB9LFxuXHRcblx0ICAvKipcblx0ICAgKiBEZWxldGVzIHRoZSB2YWx1ZSBmb3IgYSBw
cm9wZXJ0eSBvbiBhIG5vZGUuXG5cdCAgICpcblx0ICAgKiBAcGFyYW0ge0RPTUVsZW1lbnR9IG5v
ZGVcblx0ICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZVxuXHQgICAqL1xuXHQgIGRlbGV0ZVZhbHVl
Rm9yUHJvcGVydHk6IGZ1bmN0aW9uIChub2RlLCBuYW1lKSB7XG5cdCAgICB2YXIgcHJvcGVydHlJ
bmZvID0gRE9NUHJvcGVydHkucHJvcGVydGllcy5oYXNPd25Qcm9wZXJ0eShuYW1lKSA/IERPTVBy
b3BlcnR5LnByb3BlcnRpZXNbbmFtZV0gOiBudWxsO1xuXHQgICAgaWYgKHByb3BlcnR5SW5mbykg
e1xuXHQgICAgICB2YXIgbXV0YXRpb25NZXRob2QgPSBwcm9wZXJ0eUluZm8ubXV0YXRpb25NZXRo
b2Q7XG5cdCAgICAgIGlmIChtdXRhdGlvbk1ldGhvZCkge1xuXHQgICAgICAgIG11dGF0aW9uTWV0
aG9kKG5vZGUsIHVuZGVmaW5lZCk7XG5cdCAgICAgIH0gZWxzZSBpZiAocHJvcGVydHlJbmZvLm11
c3RVc2VQcm9wZXJ0eSkge1xuXHQgICAgICAgIHZhciBwcm9wTmFtZSA9IHByb3BlcnR5SW5mby5w
cm9wZXJ0eU5hbWU7XG5cdCAgICAgICAgaWYgKHByb3BlcnR5SW5mby5oYXNCb29sZWFuVmFsdWUp
IHtcblx0ICAgICAgICAgIG5vZGVbcHJvcE5hbWVdID0gZmFsc2U7XG5cdCAgICAgICAgfSBlbHNl
IHtcblx0ICAgICAgICAgIG5vZGVbcHJvcE5hbWVdID0gJyc7XG5cdCAgICAgICAgfVxuXHQgICAg
ICB9IGVsc2Uge1xuXHQgICAgICAgIG5vZGUucmVtb3ZlQXR0cmlidXRlKHByb3BlcnR5SW5mby5h
dHRyaWJ1dGVOYW1lKTtcblx0ICAgICAgfVxuXHQgICAgfSBlbHNlIGlmIChET01Qcm9wZXJ0eS5p
c0N1c3RvbUF0dHJpYnV0ZShuYW1lKSkge1xuXHQgICAgICBub2RlLnJlbW92ZUF0dHJpYnV0ZShu
YW1lKTtcblx0ICAgIH1cblx0XG5cdCAgICBpZiAoZmFsc2UpIHtcblx0ICAgICAgUmVhY3RJbnN0
cnVtZW50YXRpb24uZGVidWdUb29sLm9uSG9zdE9wZXJhdGlvbih7XG5cdCAgICAgICAgaW5zdGFu
Y2VJRDogUmVhY3RET01Db21wb25lbnRUcmVlLmdldEluc3RhbmNlRnJvbU5vZGUobm9kZSkuX2Rl
YnVnSUQsXG5cdCAgICAgICAgdHlwZTogJ3JlbW92ZSBhdHRyaWJ1dGUnLFxuXHQgICAgICAgIHBh
eWxvYWQ6IG5hbWVcblx0ICAgICAgfSk7XG5cdCAgICB9XG5cdCAgfVxuXHR9O1xuXHRcblx0bW9k
dWxlLmV4cG9ydHMgPSBET01Qcm9wZXJ0eU9wZXJhdGlvbnM7XG5cbi8qKiovIH0sXG4vKiA2MSAq
L1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cblx0LyoqXG5cdCAqIENvcHly
aWdodCAyMDE1LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2
ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJT
RC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJv
b3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0
ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0
aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqL1xuXHRcblx0J3VzZSBzdHJpY3QnO1xuXHRc
blx0dmFyIFJlYWN0RE9NQ29tcG9uZW50RmxhZ3MgPSB7XG5cdCAgaGFzQ2FjaGVkQ2hpbGROb2Rl
czogMSA8PCAwXG5cdH07XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IFJlYWN0RE9NQ29tcG9uZW50
RmxhZ3M7XG5cbi8qKiovIH0sXG4vKiA2MiAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBv
cnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAyMDEz
LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAq
XG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBs
aWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0
b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0
ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBk
aXJlY3RvcnkuXG5cdCAqXG5cdCAqL1xuXHRcblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0dmFyIF9h
c3NpZ24gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQpO1xuXHRcblx0dmFyIExpbmtlZFZhbHVlVXRp
bHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDM5KTtcblx0dmFyIFJlYWN0RE9NQ29tcG9uZW50VHJl
ZSA9IF9fd2VicGFja19yZXF1aXJlX18oNSk7XG5cdHZhciBSZWFjdFVwZGF0ZXMgPSBfX3dlYnBh
Y2tfcmVxdWlyZV9fKDkpO1xuXHRcblx0dmFyIHdhcm5pbmcgPSBfX3dlYnBhY2tfcmVxdWlyZV9f
KDIpO1xuXHRcblx0dmFyIGRpZFdhcm5WYWx1ZUxpbmsgPSBmYWxzZTtcblx0dmFyIGRpZFdhcm5W
YWx1ZURlZmF1bHRWYWx1ZSA9IGZhbHNlO1xuXHRcblx0ZnVuY3Rpb24gdXBkYXRlT3B0aW9uc0lm
UGVuZGluZ1VwZGF0ZUFuZE1vdW50ZWQoKSB7XG5cdCAgaWYgKHRoaXMuX3Jvb3ROb2RlSUQgJiYg
dGhpcy5fd3JhcHBlclN0YXRlLnBlbmRpbmdVcGRhdGUpIHtcblx0ICAgIHRoaXMuX3dyYXBwZXJT
dGF0ZS5wZW5kaW5nVXBkYXRlID0gZmFsc2U7XG5cdFxuXHQgICAgdmFyIHByb3BzID0gdGhpcy5f
Y3VycmVudEVsZW1lbnQucHJvcHM7XG5cdCAgICB2YXIgdmFsdWUgPSBMaW5rZWRWYWx1ZVV0aWxz
LmdldFZhbHVlKHByb3BzKTtcblx0XG5cdCAgICBpZiAodmFsdWUgIT0gbnVsbCkge1xuXHQgICAg
ICB1cGRhdGVPcHRpb25zKHRoaXMsIEJvb2xlYW4ocHJvcHMubXVsdGlwbGUpLCB2YWx1ZSk7XG5c
dCAgICB9XG5cdCAgfVxuXHR9XG5cdFxuXHRmdW5jdGlvbiBnZXREZWNsYXJhdGlvbkVycm9yQWRk
ZW5kdW0ob3duZXIpIHtcblx0ICBpZiAob3duZXIpIHtcblx0ICAgIHZhciBuYW1lID0gb3duZXIu
Z2V0TmFtZSgpO1xuXHQgICAgaWYgKG5hbWUpIHtcblx0ICAgICAgcmV0dXJuICcgQ2hlY2sgdGhl
IHJlbmRlciBtZXRob2Qgb2YgYCcgKyBuYW1lICsgJ2AuJztcblx0ICAgIH1cblx0ICB9XG5cdCAg
cmV0dXJuICcnO1xuXHR9XG5cdFxuXHR2YXIgdmFsdWVQcm9wTmFtZXMgPSBbJ3ZhbHVlJywgJ2Rl
ZmF1bHRWYWx1ZSddO1xuXHRcblx0LyoqXG5cdCAqIFZhbGlkYXRpb24gZnVuY3Rpb24gZm9yIGB2
YWx1ZWAgYW5kIGBkZWZhdWx0VmFsdWVgLlxuXHQgKiBAcHJpdmF0ZVxuXHQgKi9cblx0ZnVuY3Rp
b24gY2hlY2tTZWxlY3RQcm9wVHlwZXMoaW5zdCwgcHJvcHMpIHtcblx0ICB2YXIgb3duZXIgPSBp
bnN0Ll9jdXJyZW50RWxlbWVudC5fb3duZXI7XG5cdCAgTGlua2VkVmFsdWVVdGlscy5jaGVja1By
b3BUeXBlcygnc2VsZWN0JywgcHJvcHMsIG93bmVyKTtcblx0XG5cdCAgaWYgKHByb3BzLnZhbHVl
TGluayAhPT0gdW5kZWZpbmVkICYmICFkaWRXYXJuVmFsdWVMaW5rKSB7XG5cdCAgICAgZmFsc2Ug
PyB3YXJuaW5nKGZhbHNlLCAnYHZhbHVlTGlua2AgcHJvcCBvbiBgc2VsZWN0YCBpcyBkZXByZWNh
dGVkOyBzZXQgYHZhbHVlYCBhbmQgYG9uQ2hhbmdlYCBpbnN0ZWFkLicpIDogdm9pZCAwO1xuXHQg
ICAgZGlkV2FyblZhbHVlTGluayA9IHRydWU7XG5cdCAgfVxuXHRcblx0ICBmb3IgKHZhciBpID0g
MDsgaSA8IHZhbHVlUHJvcE5hbWVzLmxlbmd0aDsgaSsrKSB7XG5cdCAgICB2YXIgcHJvcE5hbWUg
PSB2YWx1ZVByb3BOYW1lc1tpXTtcblx0ICAgIGlmIChwcm9wc1twcm9wTmFtZV0gPT0gbnVsbCkg
e1xuXHQgICAgICBjb250aW51ZTtcblx0ICAgIH1cblx0ICAgIHZhciBpc0FycmF5ID0gQXJyYXku
aXNBcnJheShwcm9wc1twcm9wTmFtZV0pO1xuXHQgICAgaWYgKHByb3BzLm11bHRpcGxlICYmICFp
c0FycmF5KSB7XG5cdCAgICAgICBmYWxzZSA/IHdhcm5pbmcoZmFsc2UsICdUaGUgYCVzYCBwcm9w
IHN1cHBsaWVkIHRvIDxzZWxlY3Q+IG11c3QgYmUgYW4gYXJyYXkgaWYgJyArICdgbXVsdGlwbGVg
IGlzIHRydWUuJXMnLCBwcm9wTmFtZSwgZ2V0RGVjbGFyYXRpb25FcnJvckFkZGVuZHVtKG93bmVy
KSkgOiB2b2lkIDA7XG5cdCAgICB9IGVsc2UgaWYgKCFwcm9wcy5tdWx0aXBsZSAmJiBpc0FycmF5
KSB7XG5cdCAgICAgICBmYWxzZSA/IHdhcm5pbmcoZmFsc2UsICdUaGUgYCVzYCBwcm9wIHN1cHBs
aWVkIHRvIDxzZWxlY3Q+IG11c3QgYmUgYSBzY2FsYXIgJyArICd2YWx1ZSBpZiBgbXVsdGlwbGVg
IGlzIGZhbHNlLiVzJywgcHJvcE5hbWUsIGdldERlY2xhcmF0aW9uRXJyb3JBZGRlbmR1bShvd25l
cikpIDogdm9pZCAwO1xuXHQgICAgfVxuXHQgIH1cblx0fVxuXHRcblx0LyoqXG5cdCAqIEBwYXJh
bSB7UmVhY3RET01Db21wb25lbnR9IGluc3Rcblx0ICogQHBhcmFtIHtib29sZWFufSBtdWx0aXBs
ZVxuXHQgKiBAcGFyYW0geyp9IHByb3BWYWx1ZSBBIHN0cmluZ2FibGUgKHdpdGggYG11bHRpcGxl
YCwgYSBsaXN0IG9mIHN0cmluZ2FibGVzKS5cblx0ICogQHByaXZhdGVcblx0ICovXG5cdGZ1bmN0
aW9uIHVwZGF0ZU9wdGlvbnMoaW5zdCwgbXVsdGlwbGUsIHByb3BWYWx1ZSkge1xuXHQgIHZhciBz
ZWxlY3RlZFZhbHVlLCBpO1xuXHQgIHZhciBvcHRpb25zID0gUmVhY3RET01Db21wb25lbnRUcmVl
LmdldE5vZGVGcm9tSW5zdGFuY2UoaW5zdCkub3B0aW9ucztcblx0XG5cdCAgaWYgKG11bHRpcGxl
KSB7XG5cdCAgICBzZWxlY3RlZFZhbHVlID0ge307XG5cdCAgICBmb3IgKGkgPSAwOyBpIDwgcHJv
cFZhbHVlLmxlbmd0aDsgaSsrKSB7XG5cdCAgICAgIHNlbGVjdGVkVmFsdWVbJycgKyBwcm9wVmFs
dWVbaV1dID0gdHJ1ZTtcblx0ICAgIH1cblx0ICAgIGZvciAoaSA9IDA7IGkgPCBvcHRpb25zLmxl
bmd0aDsgaSsrKSB7XG5cdCAgICAgIHZhciBzZWxlY3RlZCA9IHNlbGVjdGVkVmFsdWUuaGFzT3du
UHJvcGVydHkob3B0aW9uc1tpXS52YWx1ZSk7XG5cdCAgICAgIGlmIChvcHRpb25zW2ldLnNlbGVj
dGVkICE9PSBzZWxlY3RlZCkge1xuXHQgICAgICAgIG9wdGlvbnNbaV0uc2VsZWN0ZWQgPSBzZWxl
Y3RlZDtcblx0ICAgICAgfVxuXHQgICAgfVxuXHQgIH0gZWxzZSB7XG5cdCAgICAvLyBEbyBub3Qg
c2V0IGBzZWxlY3QudmFsdWVgIGFzIGV4YWN0IGJlaGF2aW9yIGlzbid0IGNvbnNpc3RlbnQgYWNy
b3NzIGFsbFxuXHQgICAgLy8gYnJvd3NlcnMgZm9yIGFsbCBjYXNlcy5cblx0ICAgIHNlbGVjdGVk
VmFsdWUgPSAnJyArIHByb3BWYWx1ZTtcblx0ICAgIGZvciAoaSA9IDA7IGkgPCBvcHRpb25zLmxl
bmd0aDsgaSsrKSB7XG5cdCAgICAgIGlmIChvcHRpb25zW2ldLnZhbHVlID09PSBzZWxlY3RlZFZh
bHVlKSB7XG5cdCAgICAgICAgb3B0aW9uc1tpXS5zZWxlY3RlZCA9IHRydWU7XG5cdCAgICAgICAg
cmV0dXJuO1xuXHQgICAgICB9XG5cdCAgICB9XG5cdCAgICBpZiAob3B0aW9ucy5sZW5ndGgpIHtc
blx0ICAgICAgb3B0aW9uc1swXS5zZWxlY3RlZCA9IHRydWU7XG5cdCAgICB9XG5cdCAgfVxuXHR9
XG5cdFxuXHQvKipcblx0ICogSW1wbGVtZW50cyBhIDxzZWxlY3Q+IGhvc3QgY29tcG9uZW50IHRo
YXQgYWxsb3dzIG9wdGlvbmFsbHkgc2V0dGluZyB0aGVcblx0ICogcHJvcHMgYHZhbHVlYCBhbmQg
YGRlZmF1bHRWYWx1ZWAuIElmIGBtdWx0aXBsZWAgaXMgZmFsc2UsIHRoZSBwcm9wIG11c3QgYmUg
YVxuXHQgKiBzdHJpbmdhYmxlLiBJZiBgbXVsdGlwbGVgIGlzIHRydWUsIHRoZSBwcm9wIG11c3Qg
YmUgYW4gYXJyYXkgb2Ygc3RyaW5nYWJsZXMuXG5cdCAqXG5cdCAqIElmIGB2YWx1ZWAgaXMgbm90
IHN1cHBsaWVkIChvciBudWxsL3VuZGVmaW5lZCksIHVzZXIgYWN0aW9ucyB0aGF0IGNoYW5nZSB0
aGVcblx0ICogc2VsZWN0ZWQgb3B0aW9uIHdpbGwgdHJpZ2dlciB1cGRhdGVzIHRvIHRoZSByZW5k
ZXJlZCBvcHRpb25zLlxuXHQgKlxuXHQgKiBJZiBpdCBpcyBzdXBwbGllZCAoYW5kIG5vdCBudWxs
L3VuZGVmaW5lZCksIHRoZSByZW5kZXJlZCBvcHRpb25zIHdpbGwgbm90XG5cdCAqIHVwZGF0ZSBp
biByZXNwb25zZSB0byB1c2VyIGFjdGlvbnMuIEluc3RlYWQsIHRoZSBgdmFsdWVgIHByb3AgbXVz
dCBjaGFuZ2UgaW5cblx0ICogb3JkZXIgZm9yIHRoZSByZW5kZXJlZCBvcHRpb25zIHRvIHVwZGF0
ZS5cblx0ICpcblx0ICogSWYgYGRlZmF1bHRWYWx1ZWAgaXMgcHJvdmlkZWQsIGFueSBvcHRpb25z
IHdpdGggdGhlIHN1cHBsaWVkIHZhbHVlcyB3aWxsIGJlXG5cdCAqIHNlbGVjdGVkLlxuXHQgKi9c
blx0dmFyIFJlYWN0RE9NU2VsZWN0ID0ge1xuXHQgIGdldEhvc3RQcm9wczogZnVuY3Rpb24gKGlu
c3QsIHByb3BzKSB7XG5cdCAgICByZXR1cm4gX2Fzc2lnbih7fSwgcHJvcHMsIHtcblx0ICAgICAg
b25DaGFuZ2U6IGluc3QuX3dyYXBwZXJTdGF0ZS5vbkNoYW5nZSxcblx0ICAgICAgdmFsdWU6IHVu
ZGVmaW5lZFxuXHQgICAgfSk7XG5cdCAgfSxcblx0XG5cdCAgbW91bnRXcmFwcGVyOiBmdW5jdGlv
biAoaW5zdCwgcHJvcHMpIHtcblx0ICAgIGlmIChmYWxzZSkge1xuXHQgICAgICBjaGVja1NlbGVj
dFByb3BUeXBlcyhpbnN0LCBwcm9wcyk7XG5cdCAgICB9XG5cdFxuXHQgICAgdmFyIHZhbHVlID0g
TGlua2VkVmFsdWVVdGlscy5nZXRWYWx1ZShwcm9wcyk7XG5cdCAgICBpbnN0Ll93cmFwcGVyU3Rh
dGUgPSB7XG5cdCAgICAgIHBlbmRpbmdVcGRhdGU6IGZhbHNlLFxuXHQgICAgICBpbml0aWFsVmFs
dWU6IHZhbHVlICE9IG51bGwgPyB2YWx1ZSA6IHByb3BzLmRlZmF1bHRWYWx1ZSxcblx0ICAgICAg
bGlzdGVuZXJzOiBudWxsLFxuXHQgICAgICBvbkNoYW5nZTogX2hhbmRsZUNoYW5nZS5iaW5kKGlu
c3QpLFxuXHQgICAgICB3YXNNdWx0aXBsZTogQm9vbGVhbihwcm9wcy5tdWx0aXBsZSlcblx0ICAg
IH07XG5cdFxuXHQgICAgaWYgKHByb3BzLnZhbHVlICE9PSB1bmRlZmluZWQgJiYgcHJvcHMuZGVm
YXVsdFZhbHVlICE9PSB1bmRlZmluZWQgJiYgIWRpZFdhcm5WYWx1ZURlZmF1bHRWYWx1ZSkge1xu
XHQgICAgICAgZmFsc2UgPyB3YXJuaW5nKGZhbHNlLCAnU2VsZWN0IGVsZW1lbnRzIG11c3QgYmUg
ZWl0aGVyIGNvbnRyb2xsZWQgb3IgdW5jb250cm9sbGVkICcgKyAnKHNwZWNpZnkgZWl0aGVyIHRo
ZSB2YWx1ZSBwcm9wLCBvciB0aGUgZGVmYXVsdFZhbHVlIHByb3AsIGJ1dCBub3QgJyArICdib3Ro
KS4gRGVjaWRlIGJldHdlZW4gdXNpbmcgYSBjb250cm9sbGVkIG9yIHVuY29udHJvbGxlZCBzZWxl
Y3QgJyArICdlbGVtZW50IGFuZCByZW1vdmUgb25lIG9mIHRoZXNlIHByb3BzLiBNb3JlIGluZm86
ICcgKyAnaHR0cHM6Ly9mYi5tZS9yZWFjdC1jb250cm9sbGVkLWNvbXBvbmVudHMnKSA6IHZvaWQg
MDtcblx0ICAgICAgZGlkV2FyblZhbHVlRGVmYXVsdFZhbHVlID0gdHJ1ZTtcblx0ICAgIH1cblx0
ICB9LFxuXHRcblx0ICBnZXRTZWxlY3RWYWx1ZUNvbnRleHQ6IGZ1bmN0aW9uIChpbnN0KSB7XG5c
dCAgICAvLyBSZWFjdERPTU9wdGlvbiBsb29rcyBhdCB0aGlzIGluaXRpYWwgdmFsdWUgc28gdGhl
IGluaXRpYWwgZ2VuZXJhdGVkXG5cdCAgICAvLyBtYXJrdXAgaGFzIGNvcnJlY3QgYHNlbGVjdGVk
YCBhdHRyaWJ1dGVzXG5cdCAgICByZXR1cm4gaW5zdC5fd3JhcHBlclN0YXRlLmluaXRpYWxWYWx1
ZTtcblx0ICB9LFxuXHRcblx0ICBwb3N0VXBkYXRlV3JhcHBlcjogZnVuY3Rpb24gKGluc3QpIHtc
blx0ICAgIHZhciBwcm9wcyA9IGluc3QuX2N1cnJlbnRFbGVtZW50LnByb3BzO1xuXHRcblx0ICAg
IC8vIEFmdGVyIHRoZSBpbml0aWFsIG1vdW50LCB3ZSBjb250cm9sIHNlbGVjdGVkLW5lc3MgbWFu
dWFsbHkgc28gZG9uJ3QgcGFzc1xuXHQgICAgLy8gdGhpcyB2YWx1ZSBkb3duXG5cdCAgICBpbnN0
Ll93cmFwcGVyU3RhdGUuaW5pdGlhbFZhbHVlID0gdW5kZWZpbmVkO1xuXHRcblx0ICAgIHZhciB3
YXNNdWx0aXBsZSA9IGluc3QuX3dyYXBwZXJTdGF0ZS53YXNNdWx0aXBsZTtcblx0ICAgIGluc3Qu
X3dyYXBwZXJTdGF0ZS53YXNNdWx0aXBsZSA9IEJvb2xlYW4ocHJvcHMubXVsdGlwbGUpO1xuXHRc
blx0ICAgIHZhciB2YWx1ZSA9IExpbmtlZFZhbHVlVXRpbHMuZ2V0VmFsdWUocHJvcHMpO1xuXHQg
ICAgaWYgKHZhbHVlICE9IG51bGwpIHtcblx0ICAgICAgaW5zdC5fd3JhcHBlclN0YXRlLnBlbmRp
bmdVcGRhdGUgPSBmYWxzZTtcblx0ICAgICAgdXBkYXRlT3B0aW9ucyhpbnN0LCBCb29sZWFuKHBy
b3BzLm11bHRpcGxlKSwgdmFsdWUpO1xuXHQgICAgfSBlbHNlIGlmICh3YXNNdWx0aXBsZSAhPT0g
Qm9vbGVhbihwcm9wcy5tdWx0aXBsZSkpIHtcblx0ICAgICAgLy8gRm9yIHNpbXBsaWNpdHksIHJl
YXBwbHkgYGRlZmF1bHRWYWx1ZWAgaWYgYG11bHRpcGxlYCBpcyB0b2dnbGVkLlxuXHQgICAgICBp
ZiAocHJvcHMuZGVmYXVsdFZhbHVlICE9IG51bGwpIHtcblx0ICAgICAgICB1cGRhdGVPcHRpb25z
KGluc3QsIEJvb2xlYW4ocHJvcHMubXVsdGlwbGUpLCBwcm9wcy5kZWZhdWx0VmFsdWUpO1xuXHQg
ICAgICB9IGVsc2Uge1xuXHQgICAgICAgIC8vIFJldmVydCB0aGUgc2VsZWN0IGJhY2sgdG8gaXRz
IGRlZmF1bHQgdW5zZWxlY3RlZCBzdGF0ZS5cblx0ICAgICAgICB1cGRhdGVPcHRpb25zKGluc3Qs
IEJvb2xlYW4ocHJvcHMubXVsdGlwbGUpLCBwcm9wcy5tdWx0aXBsZSA/IFtdIDogJycpO1xuXHQg
ICAgICB9XG5cdCAgICB9XG5cdCAgfVxuXHR9O1xuXHRcblx0ZnVuY3Rpb24gX2hhbmRsZUNoYW5n
ZShldmVudCkge1xuXHQgIHZhciBwcm9wcyA9IHRoaXMuX2N1cnJlbnRFbGVtZW50LnByb3BzO1xu
XHQgIHZhciByZXR1cm5WYWx1ZSA9IExpbmtlZFZhbHVlVXRpbHMuZXhlY3V0ZU9uQ2hhbmdlKHBy
b3BzLCBldmVudCk7XG5cdFxuXHQgIGlmICh0aGlzLl9yb290Tm9kZUlEKSB7XG5cdCAgICB0aGlz
Ll93cmFwcGVyU3RhdGUucGVuZGluZ1VwZGF0ZSA9IHRydWU7XG5cdCAgfVxuXHQgIFJlYWN0VXBk
YXRlcy5hc2FwKHVwZGF0ZU9wdGlvbnNJZlBlbmRpbmdVcGRhdGVBbmRNb3VudGVkLCB0aGlzKTtc
blx0ICByZXR1cm4gcmV0dXJuVmFsdWU7XG5cdH1cblx0XG5cdG1vZHVsZS5leHBvcnRzID0gUmVh
Y3RET01TZWxlY3Q7XG5cbi8qKiovIH0sXG4vKiA2MyAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxl
LCBleHBvcnRzKSB7XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQsIEZhY2Vi
b29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291
cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGlu
IHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291
cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4g
YmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAq
XG5cdCAqL1xuXHRcblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0dmFyIGVtcHR5Q29tcG9uZW50RmFj
dG9yeTtcblx0XG5cdHZhciBSZWFjdEVtcHR5Q29tcG9uZW50SW5qZWN0aW9uID0ge1xuXHQgIGlu
amVjdEVtcHR5Q29tcG9uZW50RmFjdG9yeTogZnVuY3Rpb24gKGZhY3RvcnkpIHtcblx0ICAgIGVt
cHR5Q29tcG9uZW50RmFjdG9yeSA9IGZhY3Rvcnk7XG5cdCAgfVxuXHR9O1xuXHRcblx0dmFyIFJl
YWN0RW1wdHlDb21wb25lbnQgPSB7XG5cdCAgY3JlYXRlOiBmdW5jdGlvbiAoaW5zdGFudGlhdGUp
IHtcblx0ICAgIHJldHVybiBlbXB0eUNvbXBvbmVudEZhY3RvcnkoaW5zdGFudGlhdGUpO1xuXHQg
IH1cblx0fTtcblx0XG5cdFJlYWN0RW1wdHlDb21wb25lbnQuaW5qZWN0aW9uID0gUmVhY3RFbXB0
eUNvbXBvbmVudEluamVjdGlvbjtcblx0XG5cdG1vZHVsZS5leHBvcnRzID0gUmVhY3RFbXB0eUNv
bXBvbmVudDtcblxuLyoqKi8gfSxcbi8qIDY0ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4
cG9ydHMpIHtcblxuXHQvKipcblx0ICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ss
IEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2Ug
Y29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhl
XG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2Ug
dHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBm
b3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpcblx0
ICogXG5cdCAqL1xuXHRcblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0dmFyIFJlYWN0RmVhdHVyZUZs
YWdzID0ge1xuXHQgIC8vIFdoZW4gdHJ1ZSwgY2FsbCBjb25zb2xlLnRpbWUoKSBiZWZvcmUgYW5k
IC50aW1lRW5kKCkgYWZ0ZXIgZWFjaCB0b3AtbGV2ZWxcblx0ICAvLyByZW5kZXIgKGJvdGggaW5p
dGlhbCByZW5kZXJzIGFuZCB1cGRhdGVzKS4gVXNlZnVsIHdoZW4gbG9va2luZyBhdCBwcm9kLW1v
ZGVcblx0ICAvLyB0aW1lbGluZSBwcm9maWxlcyBpbiBDaHJvbWUsIGZvciBleGFtcGxlLlxuXHQg
IGxvZ1RvcExldmVsUmVuZGVyczogZmFsc2Vcblx0fTtcblx0XG5cdG1vZHVsZS5leHBvcnRzID0g
UmVhY3RGZWF0dXJlRmxhZ3M7XG5cbi8qKiovIH0sXG4vKiA2NSAqL1xuLyoqKi8gZnVuY3Rpb24o
bW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0LyoqXG5cdCAqIENv
cHlyaWdodCAyMDE0LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhl
IEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhl
IHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRc
blx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBp
biB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqL1xuXHRcblx0J3VzZSBzdHJpY3QnO1xu
XHRcblx0dmFyIF9wcm9kSW52YXJpYW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXygzKTtcblx0XG5c
dHZhciBpbnZhcmlhbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEpO1xuXHRcblx0dmFyIGdlbmVy
aWNDb21wb25lbnRDbGFzcyA9IG51bGw7XG5cdHZhciB0ZXh0Q29tcG9uZW50Q2xhc3MgPSBudWxs
O1xuXHRcblx0dmFyIFJlYWN0SG9zdENvbXBvbmVudEluamVjdGlvbiA9IHtcblx0ICAvLyBUaGlz
IGFjY2VwdHMgYSBjbGFzcyB0aGF0IHJlY2VpdmVzIHRoZSB0YWcgc3RyaW5nLiBUaGlzIGlzIGEg
Y2F0Y2ggYWxsXG5cdCAgLy8gdGhhdCBjYW4gcmVuZGVyIGFueSBraW5kIG9mIHRhZy5cblx0ICBp
bmplY3RHZW5lcmljQ29tcG9uZW50Q2xhc3M6IGZ1bmN0aW9uIChjb21wb25lbnRDbGFzcykge1xu
XHQgICAgZ2VuZXJpY0NvbXBvbmVudENsYXNzID0gY29tcG9uZW50Q2xhc3M7XG5cdCAgfSxcblx0
ICAvLyBUaGlzIGFjY2VwdHMgYSB0ZXh0IGNvbXBvbmVudCBjbGFzcyB0aGF0IHRha2VzIHRoZSB0
ZXh0IHN0cmluZyB0byBiZVxuXHQgIC8vIHJlbmRlcmVkIGFzIHByb3BzLlxuXHQgIGluamVjdFRl
eHRDb21wb25lbnRDbGFzczogZnVuY3Rpb24gKGNvbXBvbmVudENsYXNzKSB7XG5cdCAgICB0ZXh0
Q29tcG9uZW50Q2xhc3MgPSBjb21wb25lbnRDbGFzcztcblx0ICB9XG5cdH07XG5cdFxuXHQvKipc
blx0ICogR2V0IGEgaG9zdCBpbnRlcm5hbCBjb21wb25lbnQgY2xhc3MgZm9yIGEgc3BlY2lmaWMg
dGFnLlxuXHQgKlxuXHQgKiBAcGFyYW0ge1JlYWN0RWxlbWVudH0gZWxlbWVudCBUaGUgZWxlbWVu
dCB0byBjcmVhdGUuXG5cdCAqIEByZXR1cm4ge2Z1bmN0aW9ufSBUaGUgaW50ZXJuYWwgY2xhc3Mg
Y29uc3RydWN0b3IgZnVuY3Rpb24uXG5cdCAqL1xuXHRmdW5jdGlvbiBjcmVhdGVJbnRlcm5hbENv
bXBvbmVudChlbGVtZW50KSB7XG5cdCAgIWdlbmVyaWNDb21wb25lbnRDbGFzcyA/ICBmYWxzZSA/
IGludmFyaWFudChmYWxzZSwgJ1RoZXJlIGlzIG5vIHJlZ2lzdGVyZWQgY29tcG9uZW50IGZvciB0
aGUgdGFnICVzJywgZWxlbWVudC50eXBlKSA6IF9wcm9kSW52YXJpYW50KCcxMTEnLCBlbGVtZW50
LnR5cGUpIDogdm9pZCAwO1xuXHQgIHJldHVybiBuZXcgZ2VuZXJpY0NvbXBvbmVudENsYXNzKGVs
ZW1lbnQpO1xuXHR9XG5cdFxuXHQvKipcblx0ICogQHBhcmFtIHtSZWFjdFRleHR9IHRleHRcblx0
ICogQHJldHVybiB7UmVhY3RDb21wb25lbnR9XG5cdCAqL1xuXHRmdW5jdGlvbiBjcmVhdGVJbnN0
YW5jZUZvclRleHQodGV4dCkge1xuXHQgIHJldHVybiBuZXcgdGV4dENvbXBvbmVudENsYXNzKHRl
eHQpO1xuXHR9XG5cdFxuXHQvKipcblx0ICogQHBhcmFtIHtSZWFjdENvbXBvbmVudH0gY29tcG9u
ZW50XG5cdCAqIEByZXR1cm4ge2Jvb2xlYW59XG5cdCAqL1xuXHRmdW5jdGlvbiBpc1RleHRDb21w
b25lbnQoY29tcG9uZW50KSB7XG5cdCAgcmV0dXJuIGNvbXBvbmVudCBpbnN0YW5jZW9mIHRleHRD
b21wb25lbnRDbGFzcztcblx0fVxuXHRcblx0dmFyIFJlYWN0SG9zdENvbXBvbmVudCA9IHtcblx0
ICBjcmVhdGVJbnRlcm5hbENvbXBvbmVudDogY3JlYXRlSW50ZXJuYWxDb21wb25lbnQsXG5cdCAg
Y3JlYXRlSW5zdGFuY2VGb3JUZXh0OiBjcmVhdGVJbnN0YW5jZUZvclRleHQsXG5cdCAgaXNUZXh0
Q29tcG9uZW50OiBpc1RleHRDb21wb25lbnQsXG5cdCAgaW5qZWN0aW9uOiBSZWFjdEhvc3RDb21w
b25lbnRJbmplY3Rpb25cblx0fTtcblx0XG5cdG1vZHVsZS5leHBvcnRzID0gUmVhY3RIb3N0Q29t
cG9uZW50O1xuXG4vKioqLyB9LFxuLyogNjYgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhw
b3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAx
My1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQg
KlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUg
bGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVj
dG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBh
dGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUg
ZGlyZWN0b3J5LlxuXHQgKlxuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdHZhciBS
ZWFjdERPTVNlbGVjdGlvbiA9IF9fd2VicGFja19yZXF1aXJlX18oMTQ1KTtcblx0XG5cdHZhciBj
b250YWluc05vZGUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEwMCk7XG5cdHZhciBmb2N1c05vZGUg
PSBfX3dlYnBhY2tfcmVxdWlyZV9fKDUyKTtcblx0dmFyIGdldEFjdGl2ZUVsZW1lbnQgPSBfX3dl
YnBhY2tfcmVxdWlyZV9fKDUzKTtcblx0XG5cdGZ1bmN0aW9uIGlzSW5Eb2N1bWVudChub2RlKSB7
XG5cdCAgcmV0dXJuIGNvbnRhaW5zTm9kZShkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsIG5vZGUp
O1xuXHR9XG5cdFxuXHQvKipcblx0ICogQFJlYWN0SW5wdXRTZWxlY3Rpb246IFJlYWN0IGlucHV0
IHNlbGVjdGlvbiBtb2R1bGUuIEJhc2VkIG9uIFNlbGVjdGlvbi5qcyxcblx0ICogYnV0IG1vZGlm
aWVkIHRvIGJlIHN1aXRhYmxlIGZvciByZWFjdCBhbmQgaGFzIGEgY291cGxlIG9mIGJ1ZyBmaXhl
cyAoZG9lc24ndFxuXHQgKiBhc3N1bWUgYnV0dG9ucyBoYXZlIHJhbmdlIHNlbGVjdGlvbnMgYWxs
b3dlZCkuXG5cdCAqIElucHV0IHNlbGVjdGlvbiBtb2R1bGUgZm9yIFJlYWN0LlxuXHQgKi9cblx0
dmFyIFJlYWN0SW5wdXRTZWxlY3Rpb24gPSB7XG5cdCAgaGFzU2VsZWN0aW9uQ2FwYWJpbGl0aWVz
OiBmdW5jdGlvbiAoZWxlbSkge1xuXHQgICAgdmFyIG5vZGVOYW1lID0gZWxlbSAmJiBlbGVtLm5v
ZGVOYW1lICYmIGVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtcblx0ICAgIHJldHVybiBub2Rl
TmFtZSAmJiAobm9kZU5hbWUgPT09ICdpbnB1dCcgJiYgZWxlbS50eXBlID09PSAndGV4dCcgfHwg
bm9kZU5hbWUgPT09ICd0ZXh0YXJlYScgfHwgZWxlbS5jb250ZW50RWRpdGFibGUgPT09ICd0cnVl
Jyk7XG5cdCAgfSxcblx0XG5cdCAgZ2V0U2VsZWN0aW9uSW5mb3JtYXRpb246IGZ1bmN0aW9uICgp
IHtcblx0ICAgIHZhciBmb2N1c2VkRWxlbSA9IGdldEFjdGl2ZUVsZW1lbnQoKTtcblx0ICAgIHJl
dHVybiB7XG5cdCAgICAgIGZvY3VzZWRFbGVtOiBmb2N1c2VkRWxlbSxcblx0ICAgICAgc2VsZWN0
aW9uUmFuZ2U6IFJlYWN0SW5wdXRTZWxlY3Rpb24uaGFzU2VsZWN0aW9uQ2FwYWJpbGl0aWVzKGZv
Y3VzZWRFbGVtKSA/IFJlYWN0SW5wdXRTZWxlY3Rpb24uZ2V0U2VsZWN0aW9uKGZvY3VzZWRFbGVt
KSA6IG51bGxcblx0ICAgIH07XG5cdCAgfSxcblx0XG5cdCAgLyoqXG5cdCAgICogQHJlc3RvcmVT
ZWxlY3Rpb246IElmIGFueSBzZWxlY3Rpb24gaW5mb3JtYXRpb24gd2FzIHBvdGVudGlhbGx5IGxv
c3QsXG5cdCAgICogcmVzdG9yZSBpdC4gVGhpcyBpcyB1c2VmdWwgd2hlbiBwZXJmb3JtaW5nIG9w
ZXJhdGlvbnMgdGhhdCBjb3VsZCByZW1vdmUgZG9tXG5cdCAgICogbm9kZXMgYW5kIHBsYWNlIHRo
ZW0gYmFjayBpbiwgcmVzdWx0aW5nIGluIGZvY3VzIGJlaW5nIGxvc3QuXG5cdCAgICovXG5cdCAg
cmVzdG9yZVNlbGVjdGlvbjogZnVuY3Rpb24gKHByaW9yU2VsZWN0aW9uSW5mb3JtYXRpb24pIHtc
blx0ICAgIHZhciBjdXJGb2N1c2VkRWxlbSA9IGdldEFjdGl2ZUVsZW1lbnQoKTtcblx0ICAgIHZh
ciBwcmlvckZvY3VzZWRFbGVtID0gcHJpb3JTZWxlY3Rpb25JbmZvcm1hdGlvbi5mb2N1c2VkRWxl
bTtcblx0ICAgIHZhciBwcmlvclNlbGVjdGlvblJhbmdlID0gcHJpb3JTZWxlY3Rpb25JbmZvcm1h
dGlvbi5zZWxlY3Rpb25SYW5nZTtcblx0ICAgIGlmIChjdXJGb2N1c2VkRWxlbSAhPT0gcHJpb3JG
b2N1c2VkRWxlbSAmJiBpc0luRG9jdW1lbnQocHJpb3JGb2N1c2VkRWxlbSkpIHtcblx0ICAgICAg
aWYgKFJlYWN0SW5wdXRTZWxlY3Rpb24uaGFzU2VsZWN0aW9uQ2FwYWJpbGl0aWVzKHByaW9yRm9j
dXNlZEVsZW0pKSB7XG5cdCAgICAgICAgUmVhY3RJbnB1dFNlbGVjdGlvbi5zZXRTZWxlY3Rpb24o
cHJpb3JGb2N1c2VkRWxlbSwgcHJpb3JTZWxlY3Rpb25SYW5nZSk7XG5cdCAgICAgIH1cblx0ICAg
ICAgZm9jdXNOb2RlKHByaW9yRm9jdXNlZEVsZW0pO1xuXHQgICAgfVxuXHQgIH0sXG5cdFxuXHQg
IC8qKlxuXHQgICAqIEBnZXRTZWxlY3Rpb246IEdldHMgdGhlIHNlbGVjdGlvbiBib3VuZHMgb2Yg
YSBmb2N1c2VkIHRleHRhcmVhLCBpbnB1dCBvclxuXHQgICAqIGNvbnRlbnRFZGl0YWJsZSBub2Rl
LlxuXHQgICAqIC1AaW5wdXQ6IExvb2sgdXAgc2VsZWN0aW9uIGJvdW5kcyBvZiB0aGlzIGlucHV0
XG5cdCAgICogLUByZXR1cm4ge3N0YXJ0OiBzZWxlY3Rpb25TdGFydCwgZW5kOiBzZWxlY3Rpb25F
bmR9XG5cdCAgICovXG5cdCAgZ2V0U2VsZWN0aW9uOiBmdW5jdGlvbiAoaW5wdXQpIHtcblx0ICAg
IHZhciBzZWxlY3Rpb247XG5cdFxuXHQgICAgaWYgKCdzZWxlY3Rpb25TdGFydCcgaW4gaW5wdXQp
IHtcblx0ICAgICAgLy8gTW9kZXJuIGJyb3dzZXIgd2l0aCBpbnB1dCBvciB0ZXh0YXJlYS5cblx0
ICAgICAgc2VsZWN0aW9uID0ge1xuXHQgICAgICAgIHN0YXJ0OiBpbnB1dC5zZWxlY3Rpb25TdGFy
dCxcblx0ICAgICAgICBlbmQ6IGlucHV0LnNlbGVjdGlvbkVuZFxuXHQgICAgICB9O1xuXHQgICAg
fSBlbHNlIGlmIChkb2N1bWVudC5zZWxlY3Rpb24gJiYgaW5wdXQubm9kZU5hbWUgJiYgaW5wdXQu
bm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PT0gJ2lucHV0Jykge1xuXHQgICAgICAvLyBJRTggaW5w
dXQuXG5cdCAgICAgIHZhciByYW5nZSA9IGRvY3VtZW50LnNlbGVjdGlvbi5jcmVhdGVSYW5nZSgp
O1xuXHQgICAgICAvLyBUaGVyZSBjYW4gb25seSBiZSBvbmUgc2VsZWN0aW9uIHBlciBkb2N1bWVu
dCBpbiBJRSwgc28gaXQgbXVzdFxuXHQgICAgICAvLyBiZSBpbiBvdXIgZWxlbWVudC5cblx0ICAg
ICAgaWYgKHJhbmdlLnBhcmVudEVsZW1lbnQoKSA9PT0gaW5wdXQpIHtcblx0ICAgICAgICBzZWxl
Y3Rpb24gPSB7XG5cdCAgICAgICAgICBzdGFydDogLXJhbmdlLm1vdmVTdGFydCgnY2hhcmFjdGVy
JywgLWlucHV0LnZhbHVlLmxlbmd0aCksXG5cdCAgICAgICAgICBlbmQ6IC1yYW5nZS5tb3ZlRW5k
KCdjaGFyYWN0ZXInLCAtaW5wdXQudmFsdWUubGVuZ3RoKVxuXHQgICAgICAgIH07XG5cdCAgICAg
IH1cblx0ICAgIH0gZWxzZSB7XG5cdCAgICAgIC8vIENvbnRlbnQgZWRpdGFibGUgb3Igb2xkIElF
IHRleHRhcmVhLlxuXHQgICAgICBzZWxlY3Rpb24gPSBSZWFjdERPTVNlbGVjdGlvbi5nZXRPZmZz
ZXRzKGlucHV0KTtcblx0ICAgIH1cblx0XG5cdCAgICByZXR1cm4gc2VsZWN0aW9uIHx8IHsgc3Rh
cnQ6IDAsIGVuZDogMCB9O1xuXHQgIH0sXG5cdFxuXHQgIC8qKlxuXHQgICAqIEBzZXRTZWxlY3Rp
b246IFNldHMgdGhlIHNlbGVjdGlvbiBib3VuZHMgb2YgYSB0ZXh0YXJlYSBvciBpbnB1dCBhbmQg
Zm9jdXNlc1xuXHQgICAqIHRoZSBpbnB1dC5cblx0ICAgKiAtQGlucHV0ICAgICBTZXQgc2VsZWN0
aW9uIGJvdW5kcyBvZiB0aGlzIGlucHV0IG9yIHRleHRhcmVhXG5cdCAgICogLUBvZmZzZXRzICAg
T2JqZWN0IG9mIHNhbWUgZm9ybSB0aGF0IGlzIHJldHVybmVkIGZyb20gZ2V0KlxuXHQgICAqL1xu
XHQgIHNldFNlbGVjdGlvbjogZnVuY3Rpb24gKGlucHV0LCBvZmZzZXRzKSB7XG5cdCAgICB2YXIg
c3RhcnQgPSBvZmZzZXRzLnN0YXJ0O1xuXHQgICAgdmFyIGVuZCA9IG9mZnNldHMuZW5kO1xuXHQg
ICAgaWYgKGVuZCA9PT0gdW5kZWZpbmVkKSB7XG5cdCAgICAgIGVuZCA9IHN0YXJ0O1xuXHQgICAg
fVxuXHRcblx0ICAgIGlmICgnc2VsZWN0aW9uU3RhcnQnIGluIGlucHV0KSB7XG5cdCAgICAgIGlu
cHV0LnNlbGVjdGlvblN0YXJ0ID0gc3RhcnQ7XG5cdCAgICAgIGlucHV0LnNlbGVjdGlvbkVuZCA9
IE1hdGgubWluKGVuZCwgaW5wdXQudmFsdWUubGVuZ3RoKTtcblx0ICAgIH0gZWxzZSBpZiAoZG9j
dW1lbnQuc2VsZWN0aW9uICYmIGlucHV0Lm5vZGVOYW1lICYmIGlucHV0Lm5vZGVOYW1lLnRvTG93
ZXJDYXNlKCkgPT09ICdpbnB1dCcpIHtcblx0ICAgICAgdmFyIHJhbmdlID0gaW5wdXQuY3JlYXRl
VGV4dFJhbmdlKCk7XG5cdCAgICAgIHJhbmdlLmNvbGxhcHNlKHRydWUpO1xuXHQgICAgICByYW5n
ZS5tb3ZlU3RhcnQoJ2NoYXJhY3RlcicsIHN0YXJ0KTtcblx0ICAgICAgcmFuZ2UubW92ZUVuZCgn
Y2hhcmFjdGVyJywgZW5kIC0gc3RhcnQpO1xuXHQgICAgICByYW5nZS5zZWxlY3QoKTtcblx0ICAg
IH0gZWxzZSB7XG5cdCAgICAgIFJlYWN0RE9NU2VsZWN0aW9uLnNldE9mZnNldHMoaW5wdXQsIG9m
ZnNldHMpO1xuXHQgICAgfVxuXHQgIH1cblx0fTtcblx0XG5cdG1vZHVsZS5leHBvcnRzID0gUmVh
Y3RJbnB1dFNlbGVjdGlvbjtcblxuLyoqKi8gfSxcbi8qIDY3ICovXG4vKioqLyBmdW5jdGlvbiht
b2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvKipcblx0ICogQ29w
eXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNl
cnZlZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUg
QlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUg
cm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxu
XHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGlu
IHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpcblx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5c
dFxuXHR2YXIgX3Byb2RJbnZhcmlhbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMpO1xuXHRcblx0
dmFyIERPTUxhenlUcmVlID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNCk7XG5cdHZhciBET01Qcm9w
ZXJ0eSA9IF9fd2VicGFja19yZXF1aXJlX18oMTUpO1xuXHR2YXIgUmVhY3QgPSBfX3dlYnBhY2tf
cmVxdWlyZV9fKDE3KTtcblx0dmFyIFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlciA9IF9fd2VicGFj
a19yZXF1aXJlX18oMjUpO1xuXHR2YXIgUmVhY3RDdXJyZW50T3duZXIgPSBfX3dlYnBhY2tfcmVx
dWlyZV9fKDExKTtcblx0dmFyIFJlYWN0RE9NQ29tcG9uZW50VHJlZSA9IF9fd2VicGFja19yZXF1
aXJlX18oNSk7XG5cdHZhciBSZWFjdERPTUNvbnRhaW5lckluZm8gPSBfX3dlYnBhY2tfcmVxdWly
ZV9fKDEzOSk7XG5cdHZhciBSZWFjdERPTUZlYXR1cmVGbGFncyA9IF9fd2VicGFja19yZXF1aXJl
X18oMTQxKTtcblx0dmFyIFJlYWN0RmVhdHVyZUZsYWdzID0gX193ZWJwYWNrX3JlcXVpcmVfXyg2
NCk7XG5cdHZhciBSZWFjdEluc3RhbmNlTWFwID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMSk7XG5c
dHZhciBSZWFjdEluc3RydW1lbnRhdGlvbiA9IF9fd2VicGFja19yZXF1aXJlX18oOCk7XG5cdHZh
ciBSZWFjdE1hcmt1cENoZWNrc3VtID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNTUpO1xuXHR2YXIg
UmVhY3RSZWNvbmNpbGVyID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNik7XG5cdHZhciBSZWFjdFVw
ZGF0ZVF1ZXVlID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0Mik7XG5cdHZhciBSZWFjdFVwZGF0ZXMg
PSBfX3dlYnBhY2tfcmVxdWlyZV9fKDkpO1xuXHRcblx0dmFyIGVtcHR5T2JqZWN0ID0gX193ZWJw
YWNrX3JlcXVpcmVfXygyNCk7XG5cdHZhciBpbnN0YW50aWF0ZVJlYWN0Q29tcG9uZW50ID0gX193
ZWJwYWNrX3JlcXVpcmVfXyg3NSk7XG5cdHZhciBpbnZhcmlhbnQgPSBfX3dlYnBhY2tfcmVxdWly
ZV9fKDEpO1xuXHR2YXIgc2V0SW5uZXJIVE1MID0gX193ZWJwYWNrX3JlcXVpcmVfXygyOSk7XG5c
dHZhciBzaG91bGRVcGRhdGVSZWFjdENvbXBvbmVudCA9IF9fd2VicGFja19yZXF1aXJlX18oNDgp
O1xuXHR2YXIgd2FybmluZyA9IF9fd2VicGFja19yZXF1aXJlX18oMik7XG5cdFxuXHR2YXIgQVRU
Ul9OQU1FID0gRE9NUHJvcGVydHkuSURfQVRUUklCVVRFX05BTUU7XG5cdHZhciBST09UX0FUVFJf
TkFNRSA9IERPTVByb3BlcnR5LlJPT1RfQVRUUklCVVRFX05BTUU7XG5cdFxuXHR2YXIgRUxFTUVO
VF9OT0RFX1RZUEUgPSAxO1xuXHR2YXIgRE9DX05PREVfVFlQRSA9IDk7XG5cdHZhciBET0NVTUVO
VF9GUkFHTUVOVF9OT0RFX1RZUEUgPSAxMTtcblx0XG5cdHZhciBpbnN0YW5jZXNCeVJlYWN0Um9v
dElEID0ge307XG5cdFxuXHQvKipcblx0ICogRmluZHMgdGhlIGluZGV4IG9mIHRoZSBmaXJzdCBj
aGFyYWN0ZXJcblx0ICogdGhhdCdzIG5vdCBjb21tb24gYmV0d2VlbiB0aGUgdHdvIGdpdmVuIHN0
cmluZ3MuXG5cdCAqXG5cdCAqIEByZXR1cm4ge251bWJlcn0gdGhlIGluZGV4IG9mIHRoZSBjaGFy
YWN0ZXIgd2hlcmUgdGhlIHN0cmluZ3MgZGl2ZXJnZVxuXHQgKi9cblx0ZnVuY3Rpb24gZmlyc3RE
aWZmZXJlbmNlSW5kZXgoc3RyaW5nMSwgc3RyaW5nMikge1xuXHQgIHZhciBtaW5MZW4gPSBNYXRo
Lm1pbihzdHJpbmcxLmxlbmd0aCwgc3RyaW5nMi5sZW5ndGgpO1xuXHQgIGZvciAodmFyIGkgPSAw
OyBpIDwgbWluTGVuOyBpKyspIHtcblx0ICAgIGlmIChzdHJpbmcxLmNoYXJBdChpKSAhPT0gc3Ry
aW5nMi5jaGFyQXQoaSkpIHtcblx0ICAgICAgcmV0dXJuIGk7XG5cdCAgICB9XG5cdCAgfVxuXHQg
IHJldHVybiBzdHJpbmcxLmxlbmd0aCA9PT0gc3RyaW5nMi5sZW5ndGggPyAtMSA6IG1pbkxlbjtc
blx0fVxuXHRcblx0LyoqXG5cdCAqIEBwYXJhbSB7RE9NRWxlbWVudHxET01Eb2N1bWVudH0gY29u
dGFpbmVyIERPTSBlbGVtZW50IHRoYXQgbWF5IGNvbnRhaW5cblx0ICogYSBSZWFjdCBjb21wb25l
bnRcblx0ICogQHJldHVybiB7Pyp9IERPTSBlbGVtZW50IHRoYXQgbWF5IGhhdmUgdGhlIHJlYWN0
Um9vdCBJRCwgb3IgbnVsbC5cblx0ICovXG5cdGZ1bmN0aW9uIGdldFJlYWN0Um9vdEVsZW1lbnRJ
bkNvbnRhaW5lcihjb250YWluZXIpIHtcblx0ICBpZiAoIWNvbnRhaW5lcikge1xuXHQgICAgcmV0
dXJuIG51bGw7XG5cdCAgfVxuXHRcblx0ICBpZiAoY29udGFpbmVyLm5vZGVUeXBlID09PSBET0Nf
Tk9ERV9UWVBFKSB7XG5cdCAgICByZXR1cm4gY29udGFpbmVyLmRvY3VtZW50RWxlbWVudDtcblx0
ICB9IGVsc2Uge1xuXHQgICAgcmV0dXJuIGNvbnRhaW5lci5maXJzdENoaWxkO1xuXHQgIH1cblx0
fVxuXHRcblx0ZnVuY3Rpb24gaW50ZXJuYWxHZXRJRChub2RlKSB7XG5cdCAgLy8gSWYgbm9kZSBp
cyBzb21ldGhpbmcgbGlrZSBhIHdpbmRvdywgZG9jdW1lbnQsIG9yIHRleHQgbm9kZSwgbm9uZSBv
ZlxuXHQgIC8vIHdoaWNoIHN1cHBvcnQgYXR0cmlidXRlcyBvciBhIC5nZXRBdHRyaWJ1dGUgbWV0
aG9kLCBncmFjZWZ1bGx5IHJldHVyblxuXHQgIC8vIHRoZSBlbXB0eSBzdHJpbmcsIGFzIGlmIHRo
ZSBhdHRyaWJ1dGUgd2VyZSBtaXNzaW5nLlxuXHQgIHJldHVybiBub2RlLmdldEF0dHJpYnV0ZSAm
JiBub2RlLmdldEF0dHJpYnV0ZShBVFRSX05BTUUpIHx8ICcnO1xuXHR9XG5cdFxuXHQvKipcblx0
ICogTW91bnRzIHRoaXMgY29tcG9uZW50IGFuZCBpbnNlcnRzIGl0IGludG8gdGhlIERPTS5cblx0
ICpcblx0ICogQHBhcmFtIHtSZWFjdENvbXBvbmVudH0gY29tcG9uZW50SW5zdGFuY2UgVGhlIGlu
c3RhbmNlIHRvIG1vdW50LlxuXHQgKiBAcGFyYW0ge0RPTUVsZW1lbnR9IGNvbnRhaW5lciBET00g
ZWxlbWVudCB0byBtb3VudCBpbnRvLlxuXHQgKiBAcGFyYW0ge1JlYWN0UmVjb25jaWxlVHJhbnNh
Y3Rpb259IHRyYW5zYWN0aW9uXG5cdCAqIEBwYXJhbSB7Ym9vbGVhbn0gc2hvdWxkUmV1c2VNYXJr
dXAgSWYgdHJ1ZSwgZG8gbm90IGluc2VydCBtYXJrdXBcblx0ICovXG5cdGZ1bmN0aW9uIG1vdW50
Q29tcG9uZW50SW50b05vZGUod3JhcHBlckluc3RhbmNlLCBjb250YWluZXIsIHRyYW5zYWN0aW9u
LCBzaG91bGRSZXVzZU1hcmt1cCwgY29udGV4dCkge1xuXHQgIHZhciBtYXJrZXJOYW1lO1xuXHQg
IGlmIChSZWFjdEZlYXR1cmVGbGFncy5sb2dUb3BMZXZlbFJlbmRlcnMpIHtcblx0ICAgIHZhciB3
cmFwcGVkRWxlbWVudCA9IHdyYXBwZXJJbnN0YW5jZS5fY3VycmVudEVsZW1lbnQucHJvcHMuY2hp
bGQ7XG5cdCAgICB2YXIgdHlwZSA9IHdyYXBwZWRFbGVtZW50LnR5cGU7XG5cdCAgICBtYXJrZXJO
YW1lID0gJ1JlYWN0IG1vdW50OiAnICsgKHR5cGVvZiB0eXBlID09PSAnc3RyaW5nJyA/IHR5cGUg
OiB0eXBlLmRpc3BsYXlOYW1lIHx8IHR5cGUubmFtZSk7XG5cdCAgICBjb25zb2xlLnRpbWUobWFy
a2VyTmFtZSk7XG5cdCAgfVxuXHRcblx0ICB2YXIgbWFya3VwID0gUmVhY3RSZWNvbmNpbGVyLm1v
dW50Q29tcG9uZW50KHdyYXBwZXJJbnN0YW5jZSwgdHJhbnNhY3Rpb24sIG51bGwsIFJlYWN0RE9N
Q29udGFpbmVySW5mbyh3cmFwcGVySW5zdGFuY2UsIGNvbnRhaW5lciksIGNvbnRleHQsIDAgLyog
cGFyZW50RGVidWdJRCAqL1xuXHQgICk7XG5cdFxuXHQgIGlmIChtYXJrZXJOYW1lKSB7XG5cdCAg
ICBjb25zb2xlLnRpbWVFbmQobWFya2VyTmFtZSk7XG5cdCAgfVxuXHRcblx0ICB3cmFwcGVySW5z
dGFuY2UuX3JlbmRlcmVkQ29tcG9uZW50Ll90b3BMZXZlbFdyYXBwZXIgPSB3cmFwcGVySW5zdGFu
Y2U7XG5cdCAgUmVhY3RNb3VudC5fbW91bnRJbWFnZUludG9Ob2RlKG1hcmt1cCwgY29udGFpbmVy
LCB3cmFwcGVySW5zdGFuY2UsIHNob3VsZFJldXNlTWFya3VwLCB0cmFuc2FjdGlvbik7XG5cdH1c
blx0XG5cdC8qKlxuXHQgKiBCYXRjaGVkIG1vdW50LlxuXHQgKlxuXHQgKiBAcGFyYW0ge1JlYWN0
Q29tcG9uZW50fSBjb21wb25lbnRJbnN0YW5jZSBUaGUgaW5zdGFuY2UgdG8gbW91bnQuXG5cdCAq
IEBwYXJhbSB7RE9NRWxlbWVudH0gY29udGFpbmVyIERPTSBlbGVtZW50IHRvIG1vdW50IGludG8u
XG5cdCAqIEBwYXJhbSB7Ym9vbGVhbn0gc2hvdWxkUmV1c2VNYXJrdXAgSWYgdHJ1ZSwgZG8gbm90
IGluc2VydCBtYXJrdXBcblx0ICovXG5cdGZ1bmN0aW9uIGJhdGNoZWRNb3VudENvbXBvbmVudElu
dG9Ob2RlKGNvbXBvbmVudEluc3RhbmNlLCBjb250YWluZXIsIHNob3VsZFJldXNlTWFya3VwLCBj
b250ZXh0KSB7XG5cdCAgdmFyIHRyYW5zYWN0aW9uID0gUmVhY3RVcGRhdGVzLlJlYWN0UmVjb25j
aWxlVHJhbnNhY3Rpb24uZ2V0UG9vbGVkKFxuXHQgIC8qIHVzZUNyZWF0ZUVsZW1lbnQgKi9cblx0
ICAhc2hvdWxkUmV1c2VNYXJrdXAgJiYgUmVhY3RET01GZWF0dXJlRmxhZ3MudXNlQ3JlYXRlRWxl
bWVudCk7XG5cdCAgdHJhbnNhY3Rpb24ucGVyZm9ybShtb3VudENvbXBvbmVudEludG9Ob2RlLCBu
dWxsLCBjb21wb25lbnRJbnN0YW5jZSwgY29udGFpbmVyLCB0cmFuc2FjdGlvbiwgc2hvdWxkUmV1
c2VNYXJrdXAsIGNvbnRleHQpO1xuXHQgIFJlYWN0VXBkYXRlcy5SZWFjdFJlY29uY2lsZVRyYW5z
YWN0aW9uLnJlbGVhc2UodHJhbnNhY3Rpb24pO1xuXHR9XG5cdFxuXHQvKipcblx0ICogVW5tb3Vu
dHMgYSBjb21wb25lbnQgYW5kIHJlbW92ZXMgaXQgZnJvbSB0aGUgRE9NLlxuXHQgKlxuXHQgKiBA
cGFyYW0ge1JlYWN0Q29tcG9uZW50fSBpbnN0YW5jZSBSZWFjdCBjb21wb25lbnQgaW5zdGFuY2Uu
XG5cdCAqIEBwYXJhbSB7RE9NRWxlbWVudH0gY29udGFpbmVyIERPTSBlbGVtZW50IHRvIHVubW91
bnQgZnJvbS5cblx0ICogQGZpbmFsXG5cdCAqIEBpbnRlcm5hbFxuXHQgKiBAc2VlIHtSZWFjdE1v
dW50LnVubW91bnRDb21wb25lbnRBdE5vZGV9XG5cdCAqL1xuXHRmdW5jdGlvbiB1bm1vdW50Q29t
cG9uZW50RnJvbU5vZGUoaW5zdGFuY2UsIGNvbnRhaW5lciwgc2FmZWx5KSB7XG5cdCAgaWYgKGZh
bHNlKSB7XG5cdCAgICBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25CZWdpbkZsdXNo
KCk7XG5cdCAgfVxuXHQgIFJlYWN0UmVjb25jaWxlci51bm1vdW50Q29tcG9uZW50KGluc3RhbmNl
LCBzYWZlbHkpO1xuXHQgIGlmIChmYWxzZSkge1xuXHQgICAgUmVhY3RJbnN0cnVtZW50YXRpb24u
ZGVidWdUb29sLm9uRW5kRmx1c2goKTtcblx0ICB9XG5cdFxuXHQgIGlmIChjb250YWluZXIubm9k
ZVR5cGUgPT09IERPQ19OT0RFX1RZUEUpIHtcblx0ICAgIGNvbnRhaW5lciA9IGNvbnRhaW5lci5k
b2N1bWVudEVsZW1lbnQ7XG5cdCAgfVxuXHRcblx0ICAvLyBodHRwOi8vanNwZXJmLmNvbS9lbXB0
eWluZy1hLW5vZGVcblx0ICB3aGlsZSAoY29udGFpbmVyLmxhc3RDaGlsZCkge1xuXHQgICAgY29u
dGFpbmVyLnJlbW92ZUNoaWxkKGNvbnRhaW5lci5sYXN0Q2hpbGQpO1xuXHQgIH1cblx0fVxuXHRc
blx0LyoqXG5cdCAqIFRydWUgaWYgdGhlIHN1cHBsaWVkIERPTSBub2RlIGhhcyBhIGRpcmVjdCBS
ZWFjdC1yZW5kZXJlZCBjaGlsZCB0aGF0IGlzXG5cdCAqIG5vdCBhIFJlYWN0IHJvb3QgZWxlbWVu
dC4gVXNlZnVsIGZvciB3YXJuaW5nIGluIGByZW5kZXJgLFxuXHQgKiBgdW5tb3VudENvbXBvbmVu
dEF0Tm9kZWAsIGV0Yy5cblx0ICpcblx0ICogQHBhcmFtIHs/RE9NRWxlbWVudH0gbm9kZSBUaGUg
Y2FuZGlkYXRlIERPTSBub2RlLlxuXHQgKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmIHRoZSBE
T00gZWxlbWVudCBjb250YWlucyBhIGRpcmVjdCBjaGlsZCB0aGF0IHdhc1xuXHQgKiByZW5kZXJl
ZCBieSBSZWFjdCBidXQgaXMgbm90IGEgcm9vdCBlbGVtZW50LlxuXHQgKiBAaW50ZXJuYWxcblx0
ICovXG5cdGZ1bmN0aW9uIGhhc05vblJvb3RSZWFjdENoaWxkKGNvbnRhaW5lcikge1xuXHQgIHZh
ciByb290RWwgPSBnZXRSZWFjdFJvb3RFbGVtZW50SW5Db250YWluZXIoY29udGFpbmVyKTtcblx0
ICBpZiAocm9vdEVsKSB7XG5cdCAgICB2YXIgaW5zdCA9IFJlYWN0RE9NQ29tcG9uZW50VHJlZS5n
ZXRJbnN0YW5jZUZyb21Ob2RlKHJvb3RFbCk7XG5cdCAgICByZXR1cm4gISEoaW5zdCAmJiBpbnN0
Ll9ob3N0UGFyZW50KTtcblx0ICB9XG5cdH1cblx0XG5cdC8qKlxuXHQgKiBUcnVlIGlmIHRoZSBz
dXBwbGllZCBET00gbm9kZSBpcyBhIFJlYWN0IERPTSBlbGVtZW50IGFuZFxuXHQgKiBpdCBoYXMg
YmVlbiByZW5kZXJlZCBieSBhbm90aGVyIGNvcHkgb2YgUmVhY3QuXG5cdCAqXG5cdCAqIEBwYXJh
bSB7P0RPTUVsZW1lbnR9IG5vZGUgVGhlIGNhbmRpZGF0ZSBET00gbm9kZS5cblx0ICogQHJldHVy
biB7Ym9vbGVhbn0gVHJ1ZSBpZiB0aGUgRE9NIGhhcyBiZWVuIHJlbmRlcmVkIGJ5IGFub3RoZXIg
Y29weSBvZiBSZWFjdFxuXHQgKiBAaW50ZXJuYWxcblx0ICovXG5cdGZ1bmN0aW9uIG5vZGVJc1Jl
bmRlcmVkQnlPdGhlckluc3RhbmNlKGNvbnRhaW5lcikge1xuXHQgIHZhciByb290RWwgPSBnZXRS
ZWFjdFJvb3RFbGVtZW50SW5Db250YWluZXIoY29udGFpbmVyKTtcblx0ICByZXR1cm4gISEocm9v
dEVsICYmIGlzUmVhY3ROb2RlKHJvb3RFbCkgJiYgIVJlYWN0RE9NQ29tcG9uZW50VHJlZS5nZXRJ
bnN0YW5jZUZyb21Ob2RlKHJvb3RFbCkpO1xuXHR9XG5cdFxuXHQvKipcblx0ICogVHJ1ZSBpZiB0
aGUgc3VwcGxpZWQgRE9NIG5vZGUgaXMgYSB2YWxpZCBub2RlIGVsZW1lbnQuXG5cdCAqXG5cdCAq
IEBwYXJhbSB7P0RPTUVsZW1lbnR9IG5vZGUgVGhlIGNhbmRpZGF0ZSBET00gbm9kZS5cblx0ICog
QHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBpZiB0aGUgRE9NIGlzIGEgdmFsaWQgRE9NIG5vZGUuXG5c
dCAqIEBpbnRlcm5hbFxuXHQgKi9cblx0ZnVuY3Rpb24gaXNWYWxpZENvbnRhaW5lcihub2RlKSB7
XG5cdCAgcmV0dXJuICEhKG5vZGUgJiYgKG5vZGUubm9kZVR5cGUgPT09IEVMRU1FTlRfTk9ERV9U
WVBFIHx8IG5vZGUubm9kZVR5cGUgPT09IERPQ19OT0RFX1RZUEUgfHwgbm9kZS5ub2RlVHlwZSA9
PT0gRE9DVU1FTlRfRlJBR01FTlRfTk9ERV9UWVBFKSk7XG5cdH1cblx0XG5cdC8qKlxuXHQgKiBU
cnVlIGlmIHRoZSBzdXBwbGllZCBET00gbm9kZSBpcyBhIHZhbGlkIFJlYWN0IG5vZGUgZWxlbWVu
dC5cblx0ICpcblx0ICogQHBhcmFtIHs/RE9NRWxlbWVudH0gbm9kZSBUaGUgY2FuZGlkYXRlIERP
TSBub2RlLlxuXHQgKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmIHRoZSBET00gaXMgYSB2YWxp
ZCBSZWFjdCBET00gbm9kZS5cblx0ICogQGludGVybmFsXG5cdCAqL1xuXHRmdW5jdGlvbiBpc1Jl
YWN0Tm9kZShub2RlKSB7XG5cdCAgcmV0dXJuIGlzVmFsaWRDb250YWluZXIobm9kZSkgJiYgKG5v
ZGUuaGFzQXR0cmlidXRlKFJPT1RfQVRUUl9OQU1FKSB8fCBub2RlLmhhc0F0dHJpYnV0ZShBVFRS
X05BTUUpKTtcblx0fVxuXHRcblx0ZnVuY3Rpb24gZ2V0SG9zdFJvb3RJbnN0YW5jZUluQ29udGFp
bmVyKGNvbnRhaW5lcikge1xuXHQgIHZhciByb290RWwgPSBnZXRSZWFjdFJvb3RFbGVtZW50SW5D
b250YWluZXIoY29udGFpbmVyKTtcblx0ICB2YXIgcHJldkhvc3RJbnN0YW5jZSA9IHJvb3RFbCAm
JiBSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0SW5zdGFuY2VGcm9tTm9kZShyb290RWwpO1xuXHQg
IHJldHVybiBwcmV2SG9zdEluc3RhbmNlICYmICFwcmV2SG9zdEluc3RhbmNlLl9ob3N0UGFyZW50
ID8gcHJldkhvc3RJbnN0YW5jZSA6IG51bGw7XG5cdH1cblx0XG5cdGZ1bmN0aW9uIGdldFRvcExl
dmVsV3JhcHBlckluQ29udGFpbmVyKGNvbnRhaW5lcikge1xuXHQgIHZhciByb290ID0gZ2V0SG9z
dFJvb3RJbnN0YW5jZUluQ29udGFpbmVyKGNvbnRhaW5lcik7XG5cdCAgcmV0dXJuIHJvb3QgPyBy
b290Ll9ob3N0Q29udGFpbmVySW5mby5fdG9wTGV2ZWxXcmFwcGVyIDogbnVsbDtcblx0fVxuXHRc
blx0LyoqXG5cdCAqIFRlbXBvcmFyeSAoPykgaGFjayBzbyB0aGF0IHdlIGNhbiBzdG9yZSBhbGwg
dG9wLWxldmVsIHBlbmRpbmcgdXBkYXRlcyBvblxuXHQgKiBjb21wb3NpdGVzIGluc3RlYWQgb2Yg
aGF2aW5nIHRvIHdvcnJ5IGFib3V0IGRpZmZlcmVudCB0eXBlcyBvZiBjb21wb25lbnRzXG5cdCAq
IGhlcmUuXG5cdCAqL1xuXHR2YXIgdG9wTGV2ZWxSb290Q291bnRlciA9IDE7XG5cdHZhciBUb3BM
ZXZlbFdyYXBwZXIgPSBmdW5jdGlvbiAoKSB7XG5cdCAgdGhpcy5yb290SUQgPSB0b3BMZXZlbFJv
b3RDb3VudGVyKys7XG5cdH07XG5cdFRvcExldmVsV3JhcHBlci5wcm90b3R5cGUuaXNSZWFjdENv
bXBvbmVudCA9IHt9O1xuXHRpZiAoZmFsc2UpIHtcblx0ICBUb3BMZXZlbFdyYXBwZXIuZGlzcGxh
eU5hbWUgPSAnVG9wTGV2ZWxXcmFwcGVyJztcblx0fVxuXHRUb3BMZXZlbFdyYXBwZXIucHJvdG90
eXBlLnJlbmRlciA9IGZ1bmN0aW9uICgpIHtcblx0ICByZXR1cm4gdGhpcy5wcm9wcy5jaGlsZDtc
blx0fTtcblx0VG9wTGV2ZWxXcmFwcGVyLmlzUmVhY3RUb3BMZXZlbFdyYXBwZXIgPSB0cnVlO1xu
XHRcblx0LyoqXG5cdCAqIE1vdW50aW5nIGlzIHRoZSBwcm9jZXNzIG9mIGluaXRpYWxpemluZyBh
IFJlYWN0IGNvbXBvbmVudCBieSBjcmVhdGluZyBpdHNcblx0ICogcmVwcmVzZW50YXRpdmUgRE9N
IGVsZW1lbnRzIGFuZCBpbnNlcnRpbmcgdGhlbSBpbnRvIGEgc3VwcGxpZWQgYGNvbnRhaW5lcmAu
XG5cdCAqIEFueSBwcmlvciBjb250ZW50IGluc2lkZSBgY29udGFpbmVyYCBpcyBkZXN0cm95ZWQg
aW4gdGhlIHByb2Nlc3MuXG5cdCAqXG5cdCAqICAgUmVhY3RNb3VudC5yZW5kZXIoXG5cdCAqICAg
ICBjb21wb25lbnQsXG5cdCAqICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29udGFpbmVy
Jylcblx0ICogICApO1xuXHQgKlxuXHQgKiAgIDxkaXYgaWQ9XCJjb250YWluZXJcIj4gICAgICAg
ICAgICAgICAgICAgPC0tIFN1cHBsaWVkIGBjb250YWluZXJgLlxuXHQgKiAgICAgPGRpdiBkYXRh
LXJlYWN0aWQ9XCIuM1wiPiAgICAgICAgICAgICAgPC0tIFJlbmRlcmVkIHJlYWN0Um9vdCBvZiBS
ZWFjdFxuXHQgKiAgICAgICAvLyAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b21wb25lbnQuXG5cdCAqICAgICA8L2Rpdj5cblx0ICogICA8L2Rpdj5cblx0ICpcblx0ICogSW5z
aWRlIG9mIGBjb250YWluZXJgLCB0aGUgZmlyc3QgZWxlbWVudCByZW5kZXJlZCBpcyB0aGUgXCJy
ZWFjdFJvb3RcIi5cblx0ICovXG5cdHZhciBSZWFjdE1vdW50ID0ge1xuXHQgIFRvcExldmVsV3Jh
cHBlcjogVG9wTGV2ZWxXcmFwcGVyLFxuXHRcblx0ICAvKipcblx0ICAgKiBVc2VkIGJ5IGRldnRv
b2xzLiBUaGUga2V5cyBhcmUgbm90IGltcG9ydGFudC5cblx0ICAgKi9cblx0ICBfaW5zdGFuY2Vz
QnlSZWFjdFJvb3RJRDogaW5zdGFuY2VzQnlSZWFjdFJvb3RJRCxcblx0XG5cdCAgLyoqXG5cdCAg
ICogVGhpcyBpcyBhIGhvb2sgcHJvdmlkZWQgdG8gc3VwcG9ydCByZW5kZXJpbmcgUmVhY3QgY29t
cG9uZW50cyB3aGlsZVxuXHQgICAqIGVuc3VyaW5nIHRoYXQgdGhlIGFwcGFyZW50IHNjcm9sbCBw
b3NpdGlvbiBvZiBpdHMgYGNvbnRhaW5lcmAgZG9lcyBub3Rcblx0ICAgKiBjaGFuZ2UuXG5cdCAg
ICpcblx0ICAgKiBAcGFyYW0ge0RPTUVsZW1lbnR9IGNvbnRhaW5lciBUaGUgYGNvbnRhaW5lcmAg
YmVpbmcgcmVuZGVyZWQgaW50by5cblx0ICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSByZW5kZXJDYWxs
YmFjayBUaGlzIG11c3QgYmUgY2FsbGVkIG9uY2UgdG8gZG8gdGhlIHJlbmRlci5cblx0ICAgKi9c
blx0ICBzY3JvbGxNb25pdG9yOiBmdW5jdGlvbiAoY29udGFpbmVyLCByZW5kZXJDYWxsYmFjaykg
e1xuXHQgICAgcmVuZGVyQ2FsbGJhY2soKTtcblx0ICB9LFxuXHRcblx0ICAvKipcblx0ICAgKiBU
YWtlIGEgY29tcG9uZW50IHRoYXQncyBhbHJlYWR5IG1vdW50ZWQgaW50byB0aGUgRE9NIGFuZCBy
ZXBsYWNlIGl0cyBwcm9wc1xuXHQgICAqIEBwYXJhbSB7UmVhY3RDb21wb25lbnR9IHByZXZDb21w
b25lbnQgY29tcG9uZW50IGluc3RhbmNlIGFscmVhZHkgaW4gdGhlIERPTVxuXHQgICAqIEBwYXJh
bSB7UmVhY3RFbGVtZW50fSBuZXh0RWxlbWVudCBjb21wb25lbnQgaW5zdGFuY2UgdG8gcmVuZGVy
XG5cdCAgICogQHBhcmFtIHtET01FbGVtZW50fSBjb250YWluZXIgY29udGFpbmVyIHRvIHJlbmRl
ciBpbnRvXG5cdCAgICogQHBhcmFtIHs/ZnVuY3Rpb259IGNhbGxiYWNrIGZ1bmN0aW9uIHRyaWdn
ZXJlZCBvbiBjb21wbGV0aW9uXG5cdCAgICovXG5cdCAgX3VwZGF0ZVJvb3RDb21wb25lbnQ6IGZ1
bmN0aW9uIChwcmV2Q29tcG9uZW50LCBuZXh0RWxlbWVudCwgbmV4dENvbnRleHQsIGNvbnRhaW5l
ciwgY2FsbGJhY2spIHtcblx0ICAgIFJlYWN0TW91bnQuc2Nyb2xsTW9uaXRvcihjb250YWluZXIs
IGZ1bmN0aW9uICgpIHtcblx0ICAgICAgUmVhY3RVcGRhdGVRdWV1ZS5lbnF1ZXVlRWxlbWVudElu
dGVybmFsKHByZXZDb21wb25lbnQsIG5leHRFbGVtZW50LCBuZXh0Q29udGV4dCk7XG5cdCAgICAg
IGlmIChjYWxsYmFjaykge1xuXHQgICAgICAgIFJlYWN0VXBkYXRlUXVldWUuZW5xdWV1ZUNhbGxi
YWNrSW50ZXJuYWwocHJldkNvbXBvbmVudCwgY2FsbGJhY2spO1xuXHQgICAgICB9XG5cdCAgICB9
KTtcblx0XG5cdCAgICByZXR1cm4gcHJldkNvbXBvbmVudDtcblx0ICB9LFxuXHRcblx0ICAvKipc
blx0ICAgKiBSZW5kZXIgYSBuZXcgY29tcG9uZW50IGludG8gdGhlIERPTS4gSG9va2VkIGJ5IGhv
b2tzIVxuXHQgICAqXG5cdCAgICogQHBhcmFtIHtSZWFjdEVsZW1lbnR9IG5leHRFbGVtZW50IGVs
ZW1lbnQgdG8gcmVuZGVyXG5cdCAgICogQHBhcmFtIHtET01FbGVtZW50fSBjb250YWluZXIgY29u
dGFpbmVyIHRvIHJlbmRlciBpbnRvXG5cdCAgICogQHBhcmFtIHtib29sZWFufSBzaG91bGRSZXVz
ZU1hcmt1cCBpZiB3ZSBzaG91bGQgc2tpcCB0aGUgbWFya3VwIGluc2VydGlvblxuXHQgICAqIEBy
ZXR1cm4ge1JlYWN0Q29tcG9uZW50fSBuZXh0Q29tcG9uZW50XG5cdCAgICovXG5cdCAgX3JlbmRl
ck5ld1Jvb3RDb21wb25lbnQ6IGZ1bmN0aW9uIChuZXh0RWxlbWVudCwgY29udGFpbmVyLCBzaG91
bGRSZXVzZU1hcmt1cCwgY29udGV4dCkge1xuXHQgICAgLy8gVmFyaW91cyBwYXJ0cyBvZiBvdXIg
Y29kZSAoc3VjaCBhcyBSZWFjdENvbXBvc2l0ZUNvbXBvbmVudCdzXG5cdCAgICAvLyBfcmVuZGVy
VmFsaWRhdGVkQ29tcG9uZW50KSBhc3N1bWUgdGhhdCBjYWxscyB0byByZW5kZXIgYXJlbid0IG5l
c3RlZDtcblx0ICAgIC8vIHZlcmlmeSB0aGF0IHRoYXQncyB0aGUgY2FzZS5cblx0ICAgICBmYWxz
ZSA/IHdhcm5pbmcoUmVhY3RDdXJyZW50T3duZXIuY3VycmVudCA9PSBudWxsLCAnX3JlbmRlck5l
d1Jvb3RDb21wb25lbnQoKTogUmVuZGVyIG1ldGhvZHMgc2hvdWxkIGJlIGEgcHVyZSBmdW5jdGlv
biAnICsgJ29mIHByb3BzIGFuZCBzdGF0ZTsgdHJpZ2dlcmluZyBuZXN0ZWQgY29tcG9uZW50IHVw
ZGF0ZXMgZnJvbSAnICsgJ3JlbmRlciBpcyBub3QgYWxsb3dlZC4gSWYgbmVjZXNzYXJ5LCB0cmln
Z2VyIG5lc3RlZCB1cGRhdGVzIGluICcgKyAnY29tcG9uZW50RGlkVXBkYXRlLiBDaGVjayB0aGUg
cmVuZGVyIG1ldGhvZCBvZiAlcy4nLCBSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50ICYmIFJlYWN0
Q3VycmVudE93bmVyLmN1cnJlbnQuZ2V0TmFtZSgpIHx8ICdSZWFjdENvbXBvc2l0ZUNvbXBvbmVu
dCcpIDogdm9pZCAwO1xuXHRcblx0ICAgICFpc1ZhbGlkQ29udGFpbmVyKGNvbnRhaW5lcikgPyAg
ZmFsc2UgPyBpbnZhcmlhbnQoZmFsc2UsICdfcmVnaXN0ZXJDb21wb25lbnQoLi4uKTogVGFyZ2V0
IGNvbnRhaW5lciBpcyBub3QgYSBET00gZWxlbWVudC4nKSA6IF9wcm9kSW52YXJpYW50KCczNycp
IDogdm9pZCAwO1xuXHRcblx0ICAgIFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlci5lbnN1cmVTY3Jv
bGxWYWx1ZU1vbml0b3JpbmcoKTtcblx0ICAgIHZhciBjb21wb25lbnRJbnN0YW5jZSA9IGluc3Rh
bnRpYXRlUmVhY3RDb21wb25lbnQobmV4dEVsZW1lbnQsIGZhbHNlKTtcblx0XG5cdCAgICAvLyBU
aGUgaW5pdGlhbCByZW5kZXIgaXMgc3luY2hyb25vdXMgYnV0IGFueSB1cGRhdGVzIHRoYXQgaGFw
cGVuIGR1cmluZ1xuXHQgICAgLy8gcmVuZGVyaW5nLCBpbiBjb21wb25lbnRXaWxsTW91bnQgb3Ig
Y29tcG9uZW50RGlkTW91bnQsIHdpbGwgYmUgYmF0Y2hlZFxuXHQgICAgLy8gYWNjb3JkaW5nIHRv
IHRoZSBjdXJyZW50IGJhdGNoaW5nIHN0cmF0ZWd5LlxuXHRcblx0ICAgIFJlYWN0VXBkYXRlcy5i
YXRjaGVkVXBkYXRlcyhiYXRjaGVkTW91bnRDb21wb25lbnRJbnRvTm9kZSwgY29tcG9uZW50SW5z
dGFuY2UsIGNvbnRhaW5lciwgc2hvdWxkUmV1c2VNYXJrdXAsIGNvbnRleHQpO1xuXHRcblx0ICAg
IHZhciB3cmFwcGVySUQgPSBjb21wb25lbnRJbnN0YW5jZS5faW5zdGFuY2Uucm9vdElEO1xuXHQg
ICAgaW5zdGFuY2VzQnlSZWFjdFJvb3RJRFt3cmFwcGVySURdID0gY29tcG9uZW50SW5zdGFuY2U7
XG5cdFxuXHQgICAgcmV0dXJuIGNvbXBvbmVudEluc3RhbmNlO1xuXHQgIH0sXG5cdFxuXHQgIC8q
KlxuXHQgICAqIFJlbmRlcnMgYSBSZWFjdCBjb21wb25lbnQgaW50byB0aGUgRE9NIGluIHRoZSBz
dXBwbGllZCBgY29udGFpbmVyYC5cblx0ICAgKlxuXHQgICAqIElmIHRoZSBSZWFjdCBjb21wb25l
bnQgd2FzIHByZXZpb3VzbHkgcmVuZGVyZWQgaW50byBgY29udGFpbmVyYCwgdGhpcyB3aWxsXG5c
dCAgICogcGVyZm9ybSBhbiB1cGRhdGUgb24gaXQgYW5kIG9ubHkgbXV0YXRlIHRoZSBET00gYXMg
bmVjZXNzYXJ5IHRvIHJlZmxlY3QgdGhlXG5cdCAgICogbGF0ZXN0IFJlYWN0IGNvbXBvbmVudC5c
blx0ICAgKlxuXHQgICAqIEBwYXJhbSB7UmVhY3RDb21wb25lbnR9IHBhcmVudENvbXBvbmVudCBU
aGUgY29uY2VwdHVhbCBwYXJlbnQgb2YgdGhpcyByZW5kZXIgdHJlZS5cblx0ICAgKiBAcGFyYW0g
e1JlYWN0RWxlbWVudH0gbmV4dEVsZW1lbnQgQ29tcG9uZW50IGVsZW1lbnQgdG8gcmVuZGVyLlxu
XHQgICAqIEBwYXJhbSB7RE9NRWxlbWVudH0gY29udGFpbmVyIERPTSBlbGVtZW50IHRvIHJlbmRl
ciBpbnRvLlxuXHQgICAqIEBwYXJhbSB7P2Z1bmN0aW9ufSBjYWxsYmFjayBmdW5jdGlvbiB0cmln
Z2VyZWQgb24gY29tcGxldGlvblxuXHQgICAqIEByZXR1cm4ge1JlYWN0Q29tcG9uZW50fSBDb21w
b25lbnQgaW5zdGFuY2UgcmVuZGVyZWQgaW4gYGNvbnRhaW5lcmAuXG5cdCAgICovXG5cdCAgcmVu
ZGVyU3VidHJlZUludG9Db250YWluZXI6IGZ1bmN0aW9uIChwYXJlbnRDb21wb25lbnQsIG5leHRF
bGVtZW50LCBjb250YWluZXIsIGNhbGxiYWNrKSB7XG5cdCAgICAhKHBhcmVudENvbXBvbmVudCAh
PSBudWxsICYmIFJlYWN0SW5zdGFuY2VNYXAuaGFzKHBhcmVudENvbXBvbmVudCkpID8gIGZhbHNl
ID8gaW52YXJpYW50KGZhbHNlLCAncGFyZW50Q29tcG9uZW50IG11c3QgYmUgYSB2YWxpZCBSZWFj
dCBDb21wb25lbnQnKSA6IF9wcm9kSW52YXJpYW50KCczOCcpIDogdm9pZCAwO1xuXHQgICAgcmV0
dXJuIFJlYWN0TW91bnQuX3JlbmRlclN1YnRyZWVJbnRvQ29udGFpbmVyKHBhcmVudENvbXBvbmVu
dCwgbmV4dEVsZW1lbnQsIGNvbnRhaW5lciwgY2FsbGJhY2spO1xuXHQgIH0sXG5cdFxuXHQgIF9y
ZW5kZXJTdWJ0cmVlSW50b0NvbnRhaW5lcjogZnVuY3Rpb24gKHBhcmVudENvbXBvbmVudCwgbmV4
dEVsZW1lbnQsIGNvbnRhaW5lciwgY2FsbGJhY2spIHtcblx0ICAgIFJlYWN0VXBkYXRlUXVldWUu
dmFsaWRhdGVDYWxsYmFjayhjYWxsYmFjaywgJ1JlYWN0RE9NLnJlbmRlcicpO1xuXHQgICAgIVJl
YWN0LmlzVmFsaWRFbGVtZW50KG5leHRFbGVtZW50KSA/ICBmYWxzZSA/IGludmFyaWFudChmYWxz
ZSwgJ1JlYWN0RE9NLnJlbmRlcigpOiBJbnZhbGlkIGNvbXBvbmVudCBlbGVtZW50LiVzJywgdHlw
ZW9mIG5leHRFbGVtZW50ID09PSAnc3RyaW5nJyA/IFwiIEluc3RlYWQgb2YgcGFzc2luZyBhIHN0
cmluZyBsaWtlICdkaXYnLCBwYXNzIFwiICsgXCJSZWFjdC5jcmVhdGVFbGVtZW50KCdkaXYnKSBv
ciA8ZGl2IC8+LlwiIDogdHlwZW9mIG5leHRFbGVtZW50ID09PSAnZnVuY3Rpb24nID8gJyBJbnN0
ZWFkIG9mIHBhc3NpbmcgYSBjbGFzcyBsaWtlIEZvbywgcGFzcyAnICsgJ1JlYWN0LmNyZWF0ZUVs
ZW1lbnQoRm9vKSBvciA8Rm9vIC8+LicgOiAvLyBDaGVjayBpZiBpdCBxdWFja3MgbGlrZSBhbiBl
bGVtZW50XG5cdCAgICBuZXh0RWxlbWVudCAhPSBudWxsICYmIG5leHRFbGVtZW50LnByb3BzICE9
PSB1bmRlZmluZWQgPyAnIFRoaXMgbWF5IGJlIGNhdXNlZCBieSB1bmludGVudGlvbmFsbHkgbG9h
ZGluZyB0d28gaW5kZXBlbmRlbnQgJyArICdjb3BpZXMgb2YgUmVhY3QuJyA6ICcnKSA6IF9wcm9k
SW52YXJpYW50KCczOScsIHR5cGVvZiBuZXh0RWxlbWVudCA9PT0gJ3N0cmluZycgPyBcIiBJbnN0
ZWFkIG9mIHBhc3NpbmcgYSBzdHJpbmcgbGlrZSAnZGl2JywgcGFzcyBcIiArIFwiUmVhY3QuY3Jl
YXRlRWxlbWVudCgnZGl2Jykgb3IgPGRpdiAvPi5cIiA6IHR5cGVvZiBuZXh0RWxlbWVudCA9PT0g
J2Z1bmN0aW9uJyA/ICcgSW5zdGVhZCBvZiBwYXNzaW5nIGEgY2xhc3MgbGlrZSBGb28sIHBhc3Mg
JyArICdSZWFjdC5jcmVhdGVFbGVtZW50KEZvbykgb3IgPEZvbyAvPi4nIDogbmV4dEVsZW1lbnQg
IT0gbnVsbCAmJiBuZXh0RWxlbWVudC5wcm9wcyAhPT0gdW5kZWZpbmVkID8gJyBUaGlzIG1heSBi
ZSBjYXVzZWQgYnkgdW5pbnRlbnRpb25hbGx5IGxvYWRpbmcgdHdvIGluZGVwZW5kZW50ICcgKyAn
Y29waWVzIG9mIFJlYWN0LicgOiAnJykgOiB2b2lkIDA7XG5cdFxuXHQgICAgIGZhbHNlID8gd2Fy
bmluZyghY29udGFpbmVyIHx8ICFjb250YWluZXIudGFnTmFtZSB8fCBjb250YWluZXIudGFnTmFt
ZS50b1VwcGVyQ2FzZSgpICE9PSAnQk9EWScsICdyZW5kZXIoKTogUmVuZGVyaW5nIGNvbXBvbmVu
dHMgZGlyZWN0bHkgaW50byBkb2N1bWVudC5ib2R5IGlzICcgKyAnZGlzY291cmFnZWQsIHNpbmNl
IGl0cyBjaGlsZHJlbiBhcmUgb2Z0ZW4gbWFuaXB1bGF0ZWQgYnkgdGhpcmQtcGFydHkgJyArICdz
Y3JpcHRzIGFuZCBicm93c2VyIGV4dGVuc2lvbnMuIFRoaXMgbWF5IGxlYWQgdG8gc3VidGxlICcg
KyAncmVjb25jaWxpYXRpb24gaXNzdWVzLiBUcnkgcmVuZGVyaW5nIGludG8gYSBjb250YWluZXIg
ZWxlbWVudCBjcmVhdGVkICcgKyAnZm9yIHlvdXIgYXBwLicpIDogdm9pZCAwO1xuXHRcblx0ICAg
IHZhciBuZXh0V3JhcHBlZEVsZW1lbnQgPSBSZWFjdC5jcmVhdGVFbGVtZW50KFRvcExldmVsV3Jh
cHBlciwge1xuXHQgICAgICBjaGlsZDogbmV4dEVsZW1lbnRcblx0ICAgIH0pO1xuXHRcblx0ICAg
IHZhciBuZXh0Q29udGV4dDtcblx0ICAgIGlmIChwYXJlbnRDb21wb25lbnQpIHtcblx0ICAgICAg
dmFyIHBhcmVudEluc3QgPSBSZWFjdEluc3RhbmNlTWFwLmdldChwYXJlbnRDb21wb25lbnQpO1xu
XHQgICAgICBuZXh0Q29udGV4dCA9IHBhcmVudEluc3QuX3Byb2Nlc3NDaGlsZENvbnRleHQocGFy
ZW50SW5zdC5fY29udGV4dCk7XG5cdCAgICB9IGVsc2Uge1xuXHQgICAgICBuZXh0Q29udGV4dCA9
IGVtcHR5T2JqZWN0O1xuXHQgICAgfVxuXHRcblx0ICAgIHZhciBwcmV2Q29tcG9uZW50ID0gZ2V0
VG9wTGV2ZWxXcmFwcGVySW5Db250YWluZXIoY29udGFpbmVyKTtcblx0XG5cdCAgICBpZiAocHJl
dkNvbXBvbmVudCkge1xuXHQgICAgICB2YXIgcHJldldyYXBwZWRFbGVtZW50ID0gcHJldkNvbXBv
bmVudC5fY3VycmVudEVsZW1lbnQ7XG5cdCAgICAgIHZhciBwcmV2RWxlbWVudCA9IHByZXZXcmFw
cGVkRWxlbWVudC5wcm9wcy5jaGlsZDtcblx0ICAgICAgaWYgKHNob3VsZFVwZGF0ZVJlYWN0Q29t
cG9uZW50KHByZXZFbGVtZW50LCBuZXh0RWxlbWVudCkpIHtcblx0ICAgICAgICB2YXIgcHVibGlj
SW5zdCA9IHByZXZDb21wb25lbnQuX3JlbmRlcmVkQ29tcG9uZW50LmdldFB1YmxpY0luc3RhbmNl
KCk7XG5cdCAgICAgICAgdmFyIHVwZGF0ZWRDYWxsYmFjayA9IGNhbGxiYWNrICYmIGZ1bmN0aW9u
ICgpIHtcblx0ICAgICAgICAgIGNhbGxiYWNrLmNhbGwocHVibGljSW5zdCk7XG5cdCAgICAgICAg
fTtcblx0ICAgICAgICBSZWFjdE1vdW50Ll91cGRhdGVSb290Q29tcG9uZW50KHByZXZDb21wb25l
bnQsIG5leHRXcmFwcGVkRWxlbWVudCwgbmV4dENvbnRleHQsIGNvbnRhaW5lciwgdXBkYXRlZENh
bGxiYWNrKTtcblx0ICAgICAgICByZXR1cm4gcHVibGljSW5zdDtcblx0ICAgICAgfSBlbHNlIHtc
blx0ICAgICAgICBSZWFjdE1vdW50LnVubW91bnRDb21wb25lbnRBdE5vZGUoY29udGFpbmVyKTtc
blx0ICAgICAgfVxuXHQgICAgfVxuXHRcblx0ICAgIHZhciByZWFjdFJvb3RFbGVtZW50ID0gZ2V0
UmVhY3RSb290RWxlbWVudEluQ29udGFpbmVyKGNvbnRhaW5lcik7XG5cdCAgICB2YXIgY29udGFp
bmVySGFzUmVhY3RNYXJrdXAgPSByZWFjdFJvb3RFbGVtZW50ICYmICEhaW50ZXJuYWxHZXRJRChy
ZWFjdFJvb3RFbGVtZW50KTtcblx0ICAgIHZhciBjb250YWluZXJIYXNOb25Sb290UmVhY3RDaGls
ZCA9IGhhc05vblJvb3RSZWFjdENoaWxkKGNvbnRhaW5lcik7XG5cdFxuXHQgICAgaWYgKGZhbHNl
KSB7XG5cdCAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJu
aW5nKCFjb250YWluZXJIYXNOb25Sb290UmVhY3RDaGlsZCwgJ3JlbmRlciguLi4pOiBSZXBsYWNp
bmcgUmVhY3QtcmVuZGVyZWQgY2hpbGRyZW4gd2l0aCBhIG5ldyByb290ICcgKyAnY29tcG9uZW50
LiBJZiB5b3UgaW50ZW5kZWQgdG8gdXBkYXRlIHRoZSBjaGlsZHJlbiBvZiB0aGlzIG5vZGUsICcg
KyAneW91IHNob3VsZCBpbnN0ZWFkIGhhdmUgdGhlIGV4aXN0aW5nIGNoaWxkcmVuIHVwZGF0ZSB0
aGVpciBzdGF0ZSAnICsgJ2FuZCByZW5kZXIgdGhlIG5ldyBjb21wb25lbnRzIGluc3RlYWQgb2Yg
Y2FsbGluZyBSZWFjdERPTS5yZW5kZXIuJykgOiB2b2lkIDA7XG5cdFxuXHQgICAgICBpZiAoIWNv
bnRhaW5lckhhc1JlYWN0TWFya3VwIHx8IHJlYWN0Um9vdEVsZW1lbnQubmV4dFNpYmxpbmcpIHtc
blx0ICAgICAgICB2YXIgcm9vdEVsZW1lbnRTaWJsaW5nID0gcmVhY3RSb290RWxlbWVudDtcblx0
ICAgICAgICB3aGlsZSAocm9vdEVsZW1lbnRTaWJsaW5nKSB7XG5cdCAgICAgICAgICBpZiAoaW50
ZXJuYWxHZXRJRChyb290RWxlbWVudFNpYmxpbmcpKSB7XG5cdCAgICAgICAgICAgIHByb2Nlc3Mu
ZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAncmVuZGVyKCk6
IFRhcmdldCBub2RlIGhhcyBtYXJrdXAgcmVuZGVyZWQgYnkgUmVhY3QsIGJ1dCB0aGVyZSAnICsg
J2FyZSB1bnJlbGF0ZWQgbm9kZXMgYXMgd2VsbC4gVGhpcyBpcyBtb3N0IGNvbW1vbmx5IGNhdXNl
ZCBieSAnICsgJ3doaXRlLXNwYWNlIGluc2VydGVkIGFyb3VuZCBzZXJ2ZXItcmVuZGVyZWQgbWFy
a3VwLicpIDogdm9pZCAwO1xuXHQgICAgICAgICAgICBicmVhaztcblx0ICAgICAgICAgIH1cblx0
ICAgICAgICAgIHJvb3RFbGVtZW50U2libGluZyA9IHJvb3RFbGVtZW50U2libGluZy5uZXh0U2li
bGluZztcblx0ICAgICAgICB9XG5cdCAgICAgIH1cblx0ICAgIH1cblx0XG5cdCAgICB2YXIgc2hv
dWxkUmV1c2VNYXJrdXAgPSBjb250YWluZXJIYXNSZWFjdE1hcmt1cCAmJiAhcHJldkNvbXBvbmVu
dCAmJiAhY29udGFpbmVySGFzTm9uUm9vdFJlYWN0Q2hpbGQ7XG5cdCAgICB2YXIgY29tcG9uZW50
ID0gUmVhY3RNb3VudC5fcmVuZGVyTmV3Um9vdENvbXBvbmVudChuZXh0V3JhcHBlZEVsZW1lbnQs
IGNvbnRhaW5lciwgc2hvdWxkUmV1c2VNYXJrdXAsIG5leHRDb250ZXh0KS5fcmVuZGVyZWRDb21w
b25lbnQuZ2V0UHVibGljSW5zdGFuY2UoKTtcblx0ICAgIGlmIChjYWxsYmFjaykge1xuXHQgICAg
ICBjYWxsYmFjay5jYWxsKGNvbXBvbmVudCk7XG5cdCAgICB9XG5cdCAgICByZXR1cm4gY29tcG9u
ZW50O1xuXHQgIH0sXG5cdFxuXHQgIC8qKlxuXHQgICAqIFJlbmRlcnMgYSBSZWFjdCBjb21wb25l
bnQgaW50byB0aGUgRE9NIGluIHRoZSBzdXBwbGllZCBgY29udGFpbmVyYC5cblx0ICAgKiBTZWUg
aHR0cHM6Ly9mYWNlYm9vay5naXRodWIuaW8vcmVhY3QvZG9jcy90b3AtbGV2ZWwtYXBpLmh0bWwj
cmVhY3Rkb20ucmVuZGVyXG5cdCAgICpcblx0ICAgKiBJZiB0aGUgUmVhY3QgY29tcG9uZW50IHdh
cyBwcmV2aW91c2x5IHJlbmRlcmVkIGludG8gYGNvbnRhaW5lcmAsIHRoaXMgd2lsbFxuXHQgICAq
IHBlcmZvcm0gYW4gdXBkYXRlIG9uIGl0IGFuZCBvbmx5IG11dGF0ZSB0aGUgRE9NIGFzIG5lY2Vz
c2FyeSB0byByZWZsZWN0IHRoZVxuXHQgICAqIGxhdGVzdCBSZWFjdCBjb21wb25lbnQuXG5cdCAg
ICpcblx0ICAgKiBAcGFyYW0ge1JlYWN0RWxlbWVudH0gbmV4dEVsZW1lbnQgQ29tcG9uZW50IGVs
ZW1lbnQgdG8gcmVuZGVyLlxuXHQgICAqIEBwYXJhbSB7RE9NRWxlbWVudH0gY29udGFpbmVyIERP
TSBlbGVtZW50IHRvIHJlbmRlciBpbnRvLlxuXHQgICAqIEBwYXJhbSB7P2Z1bmN0aW9ufSBjYWxs
YmFjayBmdW5jdGlvbiB0cmlnZ2VyZWQgb24gY29tcGxldGlvblxuXHQgICAqIEByZXR1cm4ge1Jl
YWN0Q29tcG9uZW50fSBDb21wb25lbnQgaW5zdGFuY2UgcmVuZGVyZWQgaW4gYGNvbnRhaW5lcmAu
XG5cdCAgICovXG5cdCAgcmVuZGVyOiBmdW5jdGlvbiAobmV4dEVsZW1lbnQsIGNvbnRhaW5lciwg
Y2FsbGJhY2spIHtcblx0ICAgIHJldHVybiBSZWFjdE1vdW50Ll9yZW5kZXJTdWJ0cmVlSW50b0Nv
bnRhaW5lcihudWxsLCBuZXh0RWxlbWVudCwgY29udGFpbmVyLCBjYWxsYmFjayk7XG5cdCAgfSxc
blx0XG5cdCAgLyoqXG5cdCAgICogVW5tb3VudHMgYW5kIGRlc3Ryb3lzIHRoZSBSZWFjdCBjb21w
b25lbnQgcmVuZGVyZWQgaW4gdGhlIGBjb250YWluZXJgLlxuXHQgICAqIFNlZSBodHRwczovL2Zh
Y2Vib29rLmdpdGh1Yi5pby9yZWFjdC9kb2NzL3RvcC1sZXZlbC1hcGkuaHRtbCNyZWFjdGRvbS51
bm1vdW50Y29tcG9uZW50YXRub2RlXG5cdCAgICpcblx0ICAgKiBAcGFyYW0ge0RPTUVsZW1lbnR9
IGNvbnRhaW5lciBET00gZWxlbWVudCBjb250YWluaW5nIGEgUmVhY3QgY29tcG9uZW50LlxuXHQg
ICAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUgaWYgYSBjb21wb25lbnQgd2FzIGZvdW5kIGluIGFu
ZCB1bm1vdW50ZWQgZnJvbVxuXHQgICAqICAgICAgICAgICAgICAgICAgIGBjb250YWluZXJgXG5c
dCAgICovXG5cdCAgdW5tb3VudENvbXBvbmVudEF0Tm9kZTogZnVuY3Rpb24gKGNvbnRhaW5lcikg
e1xuXHQgICAgLy8gVmFyaW91cyBwYXJ0cyBvZiBvdXIgY29kZSAoc3VjaCBhcyBSZWFjdENvbXBv
c2l0ZUNvbXBvbmVudCdzXG5cdCAgICAvLyBfcmVuZGVyVmFsaWRhdGVkQ29tcG9uZW50KSBhc3N1
bWUgdGhhdCBjYWxscyB0byByZW5kZXIgYXJlbid0IG5lc3RlZDtcblx0ICAgIC8vIHZlcmlmeSB0
aGF0IHRoYXQncyB0aGUgY2FzZS4gKFN0cmljdGx5IHNwZWFraW5nLCB1bm1vdW50aW5nIHdvbid0
IGNhdXNlIGFcblx0ICAgIC8vIHJlbmRlciBidXQgd2Ugc3RpbGwgZG9uJ3QgZXhwZWN0IHRvIGJl
IGluIGEgcmVuZGVyIGNhbGwgaGVyZS4pXG5cdCAgICAgZmFsc2UgPyB3YXJuaW5nKFJlYWN0Q3Vy
cmVudE93bmVyLmN1cnJlbnQgPT0gbnVsbCwgJ3VubW91bnRDb21wb25lbnRBdE5vZGUoKTogUmVu
ZGVyIG1ldGhvZHMgc2hvdWxkIGJlIGEgcHVyZSBmdW5jdGlvbiAnICsgJ29mIHByb3BzIGFuZCBz
dGF0ZTsgdHJpZ2dlcmluZyBuZXN0ZWQgY29tcG9uZW50IHVwZGF0ZXMgZnJvbSByZW5kZXIgJyAr
ICdpcyBub3QgYWxsb3dlZC4gSWYgbmVjZXNzYXJ5LCB0cmlnZ2VyIG5lc3RlZCB1cGRhdGVzIGlu
ICcgKyAnY29tcG9uZW50RGlkVXBkYXRlLiBDaGVjayB0aGUgcmVuZGVyIG1ldGhvZCBvZiAlcy4n
LCBSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50ICYmIFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQu
Z2V0TmFtZSgpIHx8ICdSZWFjdENvbXBvc2l0ZUNvbXBvbmVudCcpIDogdm9pZCAwO1xuXHRcblx0
ICAgICFpc1ZhbGlkQ29udGFpbmVyKGNvbnRhaW5lcikgPyAgZmFsc2UgPyBpbnZhcmlhbnQoZmFs
c2UsICd1bm1vdW50Q29tcG9uZW50QXROb2RlKC4uLik6IFRhcmdldCBjb250YWluZXIgaXMgbm90
IGEgRE9NIGVsZW1lbnQuJykgOiBfcHJvZEludmFyaWFudCgnNDAnKSA6IHZvaWQgMDtcblx0XG5c
dCAgICBpZiAoZmFsc2UpIHtcblx0ICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9k
dWN0aW9uJyA/IHdhcm5pbmcoIW5vZGVJc1JlbmRlcmVkQnlPdGhlckluc3RhbmNlKGNvbnRhaW5l
ciksIFwidW5tb3VudENvbXBvbmVudEF0Tm9kZSgpOiBUaGUgbm9kZSB5b3UncmUgYXR0ZW1wdGlu
ZyB0byB1bm1vdW50IFwiICsgJ3dhcyByZW5kZXJlZCBieSBhbm90aGVyIGNvcHkgb2YgUmVhY3Qu
JykgOiB2b2lkIDA7XG5cdCAgICB9XG5cdFxuXHQgICAgdmFyIHByZXZDb21wb25lbnQgPSBnZXRU
b3BMZXZlbFdyYXBwZXJJbkNvbnRhaW5lcihjb250YWluZXIpO1xuXHQgICAgaWYgKCFwcmV2Q29t
cG9uZW50KSB7XG5cdCAgICAgIC8vIENoZWNrIGlmIHRoZSBub2RlIGJlaW5nIHVubW91bnRlZCB3
YXMgcmVuZGVyZWQgYnkgUmVhY3QsIGJ1dCBpc24ndCBhXG5cdCAgICAgIC8vIHJvb3Qgbm9kZS5c
blx0ICAgICAgdmFyIGNvbnRhaW5lckhhc05vblJvb3RSZWFjdENoaWxkID0gaGFzTm9uUm9vdFJl
YWN0Q2hpbGQoY29udGFpbmVyKTtcblx0XG5cdCAgICAgIC8vIENoZWNrIGlmIHRoZSBjb250YWlu
ZXIgaXRzZWxmIGlzIGEgUmVhY3Qgcm9vdCBub2RlLlxuXHQgICAgICB2YXIgaXNDb250YWluZXJS
ZWFjdFJvb3QgPSBjb250YWluZXIubm9kZVR5cGUgPT09IDEgJiYgY29udGFpbmVyLmhhc0F0dHJp
YnV0ZShST09UX0FUVFJfTkFNRSk7XG5cdFxuXHQgICAgICBpZiAoZmFsc2UpIHtcblx0ICAgICAg
ICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyghY29udGFp
bmVySGFzTm9uUm9vdFJlYWN0Q2hpbGQsIFwidW5tb3VudENvbXBvbmVudEF0Tm9kZSgpOiBUaGUg
bm9kZSB5b3UncmUgYXR0ZW1wdGluZyB0byB1bm1vdW50IFwiICsgJ3dhcyByZW5kZXJlZCBieSBS
ZWFjdCBhbmQgaXMgbm90IGEgdG9wLWxldmVsIGNvbnRhaW5lci4gJXMnLCBpc0NvbnRhaW5lclJl
YWN0Um9vdCA/ICdZb3UgbWF5IGhhdmUgYWNjaWRlbnRhbGx5IHBhc3NlZCBpbiBhIFJlYWN0IHJv
b3Qgbm9kZSBpbnN0ZWFkICcgKyAnb2YgaXRzIGNvbnRhaW5lci4nIDogJ0luc3RlYWQsIGhhdmUg
dGhlIHBhcmVudCBjb21wb25lbnQgdXBkYXRlIGl0cyBzdGF0ZSBhbmQgJyArICdyZXJlbmRlciBp
biBvcmRlciB0byByZW1vdmUgdGhpcyBjb21wb25lbnQuJykgOiB2b2lkIDA7XG5cdCAgICAgIH1c
blx0XG5cdCAgICAgIHJldHVybiBmYWxzZTtcblx0ICAgIH1cblx0ICAgIGRlbGV0ZSBpbnN0YW5j
ZXNCeVJlYWN0Um9vdElEW3ByZXZDb21wb25lbnQuX2luc3RhbmNlLnJvb3RJRF07XG5cdCAgICBS
ZWFjdFVwZGF0ZXMuYmF0Y2hlZFVwZGF0ZXModW5tb3VudENvbXBvbmVudEZyb21Ob2RlLCBwcmV2
Q29tcG9uZW50LCBjb250YWluZXIsIGZhbHNlKTtcblx0ICAgIHJldHVybiB0cnVlO1xuXHQgIH0s
XG5cdFxuXHQgIF9tb3VudEltYWdlSW50b05vZGU6IGZ1bmN0aW9uIChtYXJrdXAsIGNvbnRhaW5l
ciwgaW5zdGFuY2UsIHNob3VsZFJldXNlTWFya3VwLCB0cmFuc2FjdGlvbikge1xuXHQgICAgIWlz
VmFsaWRDb250YWluZXIoY29udGFpbmVyKSA/ICBmYWxzZSA/IGludmFyaWFudChmYWxzZSwgJ21v
dW50Q29tcG9uZW50SW50b05vZGUoLi4uKTogVGFyZ2V0IGNvbnRhaW5lciBpcyBub3QgdmFsaWQu
JykgOiBfcHJvZEludmFyaWFudCgnNDEnKSA6IHZvaWQgMDtcblx0XG5cdCAgICBpZiAoc2hvdWxk
UmV1c2VNYXJrdXApIHtcblx0ICAgICAgdmFyIHJvb3RFbGVtZW50ID0gZ2V0UmVhY3RSb290RWxl
bWVudEluQ29udGFpbmVyKGNvbnRhaW5lcik7XG5cdCAgICAgIGlmIChSZWFjdE1hcmt1cENoZWNr
c3VtLmNhblJldXNlTWFya3VwKG1hcmt1cCwgcm9vdEVsZW1lbnQpKSB7XG5cdCAgICAgICAgUmVh
Y3RET01Db21wb25lbnRUcmVlLnByZWNhY2hlTm9kZShpbnN0YW5jZSwgcm9vdEVsZW1lbnQpO1xu
XHQgICAgICAgIHJldHVybjtcblx0ICAgICAgfSBlbHNlIHtcblx0ICAgICAgICB2YXIgY2hlY2tz
dW0gPSByb290RWxlbWVudC5nZXRBdHRyaWJ1dGUoUmVhY3RNYXJrdXBDaGVja3N1bS5DSEVDS1NV
TV9BVFRSX05BTUUpO1xuXHQgICAgICAgIHJvb3RFbGVtZW50LnJlbW92ZUF0dHJpYnV0ZShSZWFj
dE1hcmt1cENoZWNrc3VtLkNIRUNLU1VNX0FUVFJfTkFNRSk7XG5cdFxuXHQgICAgICAgIHZhciBy
b290TWFya3VwID0gcm9vdEVsZW1lbnQub3V0ZXJIVE1MO1xuXHQgICAgICAgIHJvb3RFbGVtZW50
LnNldEF0dHJpYnV0ZShSZWFjdE1hcmt1cENoZWNrc3VtLkNIRUNLU1VNX0FUVFJfTkFNRSwgY2hl
Y2tzdW0pO1xuXHRcblx0ICAgICAgICB2YXIgbm9ybWFsaXplZE1hcmt1cCA9IG1hcmt1cDtcblx0
ICAgICAgICBpZiAoZmFsc2UpIHtcblx0ICAgICAgICAgIC8vIGJlY2F1c2Ugcm9vdE1hcmt1cCBp
cyByZXRyaWV2ZWQgZnJvbSB0aGUgRE9NLCB2YXJpb3VzIG5vcm1hbGl6YXRpb25zXG5cdCAgICAg
ICAgICAvLyB3aWxsIGhhdmUgb2NjdXJyZWQgd2hpY2ggd2lsbCBub3QgYmUgcHJlc2VudCBpbiBg
bWFya3VwYC4gSGVyZSxcblx0ICAgICAgICAgIC8vIGluc2VydCBtYXJrdXAgaW50byBhIDxkaXY+
IG9yIDxpZnJhbWU+IGRlcGVuZGluZyBvbiB0aGUgY29udGFpbmVyXG5cdCAgICAgICAgICAvLyB0
eXBlIHRvIHBlcmZvcm0gdGhlIHNhbWUgbm9ybWFsaXphdGlvbnMgYmVmb3JlIGNvbXBhcmluZy5c
blx0ICAgICAgICAgIHZhciBub3JtYWxpemVyO1xuXHQgICAgICAgICAgaWYgKGNvbnRhaW5lci5u
b2RlVHlwZSA9PT0gRUxFTUVOVF9OT0RFX1RZUEUpIHtcblx0ICAgICAgICAgICAgbm9ybWFsaXpl
ciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuXHQgICAgICAgICAgICBub3JtYWxp
emVyLmlubmVySFRNTCA9IG1hcmt1cDtcblx0ICAgICAgICAgICAgbm9ybWFsaXplZE1hcmt1cCA9
IG5vcm1hbGl6ZXIuaW5uZXJIVE1MO1xuXHQgICAgICAgICAgfSBlbHNlIHtcblx0ICAgICAgICAg
ICAgbm9ybWFsaXplciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpO1xuXHQgICAg
ICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKG5vcm1hbGl6ZXIpO1xuXHQgICAgICAg
ICAgICBub3JtYWxpemVyLmNvbnRlbnREb2N1bWVudC53cml0ZShtYXJrdXApO1xuXHQgICAgICAg
ICAgICBub3JtYWxpemVkTWFya3VwID0gbm9ybWFsaXplci5jb250ZW50RG9jdW1lbnQuZG9jdW1l
bnRFbGVtZW50Lm91dGVySFRNTDtcblx0ICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVD
aGlsZChub3JtYWxpemVyKTtcblx0ICAgICAgICAgIH1cblx0ICAgICAgICB9XG5cdFxuXHQgICAg
ICAgIHZhciBkaWZmSW5kZXggPSBmaXJzdERpZmZlcmVuY2VJbmRleChub3JtYWxpemVkTWFya3Vw
LCByb290TWFya3VwKTtcblx0ICAgICAgICB2YXIgZGlmZmVyZW5jZSA9ICcgKGNsaWVudCkgJyAr
IG5vcm1hbGl6ZWRNYXJrdXAuc3Vic3RyaW5nKGRpZmZJbmRleCAtIDIwLCBkaWZmSW5kZXggKyAy
MCkgKyAnXFxuIChzZXJ2ZXIpICcgKyByb290TWFya3VwLnN1YnN0cmluZyhkaWZmSW5kZXggLSAy
MCwgZGlmZkluZGV4ICsgMjApO1xuXHRcblx0ICAgICAgICAhKGNvbnRhaW5lci5ub2RlVHlwZSAh
PT0gRE9DX05PREVfVFlQRSkgPyAgZmFsc2UgPyBpbnZhcmlhbnQoZmFsc2UsICdZb3VcXCdyZSB0
cnlpbmcgdG8gcmVuZGVyIGEgY29tcG9uZW50IHRvIHRoZSBkb2N1bWVudCB1c2luZyBzZXJ2ZXIg
cmVuZGVyaW5nIGJ1dCB0aGUgY2hlY2tzdW0gd2FzIGludmFsaWQuIFRoaXMgdXN1YWxseSBtZWFu
cyB5b3UgcmVuZGVyZWQgYSBkaWZmZXJlbnQgY29tcG9uZW50IHR5cGUgb3IgcHJvcHMgb24gdGhl
IGNsaWVudCBmcm9tIHRoZSBvbmUgb24gdGhlIHNlcnZlciwgb3IgeW91ciByZW5kZXIoKSBtZXRo
b2RzIGFyZSBpbXB1cmUuIFJlYWN0IGNhbm5vdCBoYW5kbGUgdGhpcyBjYXNlIGR1ZSB0byBjcm9z
cy1icm93c2VyIHF1aXJrcyBieSByZW5kZXJpbmcgYXQgdGhlIGRvY3VtZW50IHJvb3QuIFlvdSBz
aG91bGQgbG9vayBmb3IgZW52aXJvbm1lbnQgZGVwZW5kZW50IGNvZGUgaW4geW91ciBjb21wb25l
bnRzIGFuZCBlbnN1cmUgdGhlIHByb3BzIGFyZSB0aGUgc2FtZSBjbGllbnQgYW5kIHNlcnZlciBz
aWRlOlxcbiVzJywgZGlmZmVyZW5jZSkgOiBfcHJvZEludmFyaWFudCgnNDInLCBkaWZmZXJlbmNl
KSA6IHZvaWQgMDtcblx0XG5cdCAgICAgICAgaWYgKGZhbHNlKSB7XG5cdCAgICAgICAgICBwcm9j
ZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ1JlYWN0
IGF0dGVtcHRlZCB0byByZXVzZSBtYXJrdXAgaW4gYSBjb250YWluZXIgYnV0IHRoZSAnICsgJ2No
ZWNrc3VtIHdhcyBpbnZhbGlkLiBUaGlzIGdlbmVyYWxseSBtZWFucyB0aGF0IHlvdSBhcmUgJyAr
ICd1c2luZyBzZXJ2ZXIgcmVuZGVyaW5nIGFuZCB0aGUgbWFya3VwIGdlbmVyYXRlZCBvbiB0aGUg
JyArICdzZXJ2ZXIgd2FzIG5vdCB3aGF0IHRoZSBjbGllbnQgd2FzIGV4cGVjdGluZy4gUmVhY3Qg
aW5qZWN0ZWQgJyArICduZXcgbWFya3VwIHRvIGNvbXBlbnNhdGUgd2hpY2ggd29ya3MgYnV0IHlv
dSBoYXZlIGxvc3QgbWFueSAnICsgJ29mIHRoZSBiZW5lZml0cyBvZiBzZXJ2ZXIgcmVuZGVyaW5n
LiBJbnN0ZWFkLCBmaWd1cmUgb3V0ICcgKyAnd2h5IHRoZSBtYXJrdXAgYmVpbmcgZ2VuZXJhdGVk
IGlzIGRpZmZlcmVudCBvbiB0aGUgY2xpZW50ICcgKyAnb3Igc2VydmVyOlxcbiVzJywgZGlmZmVy
ZW5jZSkgOiB2b2lkIDA7XG5cdCAgICAgICAgfVxuXHQgICAgICB9XG5cdCAgICB9XG5cdFxuXHQg
ICAgIShjb250YWluZXIubm9kZVR5cGUgIT09IERPQ19OT0RFX1RZUEUpID8gIGZhbHNlID8gaW52
YXJpYW50KGZhbHNlLCAnWW91XFwncmUgdHJ5aW5nIHRvIHJlbmRlciBhIGNvbXBvbmVudCB0byB0
aGUgZG9jdW1lbnQgYnV0IHlvdSBkaWRuXFwndCB1c2Ugc2VydmVyIHJlbmRlcmluZy4gV2UgY2Fu
XFwndCBkbyB0aGlzIHdpdGhvdXQgdXNpbmcgc2VydmVyIHJlbmRlcmluZyBkdWUgdG8gY3Jvc3Mt
YnJvd3NlciBxdWlya3MuIFNlZSBSZWFjdERPTVNlcnZlci5yZW5kZXJUb1N0cmluZygpIGZvciBz
ZXJ2ZXIgcmVuZGVyaW5nLicpIDogX3Byb2RJbnZhcmlhbnQoJzQzJykgOiB2b2lkIDA7XG5cdFxu
XHQgICAgaWYgKHRyYW5zYWN0aW9uLnVzZUNyZWF0ZUVsZW1lbnQpIHtcblx0ICAgICAgd2hpbGUg
KGNvbnRhaW5lci5sYXN0Q2hpbGQpIHtcblx0ICAgICAgICBjb250YWluZXIucmVtb3ZlQ2hpbGQo
Y29udGFpbmVyLmxhc3RDaGlsZCk7XG5cdCAgICAgIH1cblx0ICAgICAgRE9NTGF6eVRyZWUuaW5z
ZXJ0VHJlZUJlZm9yZShjb250YWluZXIsIG1hcmt1cCwgbnVsbCk7XG5cdCAgICB9IGVsc2Uge1xu
XHQgICAgICBzZXRJbm5lckhUTUwoY29udGFpbmVyLCBtYXJrdXApO1xuXHQgICAgICBSZWFjdERP
TUNvbXBvbmVudFRyZWUucHJlY2FjaGVOb2RlKGluc3RhbmNlLCBjb250YWluZXIuZmlyc3RDaGls
ZCk7XG5cdCAgICB9XG5cdFxuXHQgICAgaWYgKGZhbHNlKSB7XG5cdCAgICAgIHZhciBob3N0Tm9k
ZSA9IFJlYWN0RE9NQ29tcG9uZW50VHJlZS5nZXRJbnN0YW5jZUZyb21Ob2RlKGNvbnRhaW5lci5m
aXJzdENoaWxkKTtcblx0ICAgICAgaWYgKGhvc3ROb2RlLl9kZWJ1Z0lEICE9PSAwKSB7XG5cdCAg
ICAgICAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9uSG9zdE9wZXJhdGlvbih7XG5c
dCAgICAgICAgICBpbnN0YW5jZUlEOiBob3N0Tm9kZS5fZGVidWdJRCxcblx0ICAgICAgICAgIHR5
cGU6ICdtb3VudCcsXG5cdCAgICAgICAgICBwYXlsb2FkOiBtYXJrdXAudG9TdHJpbmcoKVxuXHQg
ICAgICAgIH0pO1xuXHQgICAgICB9XG5cdCAgICB9XG5cdCAgfVxuXHR9O1xuXHRcblx0bW9kdWxl
LmV4cG9ydHMgPSBSZWFjdE1vdW50O1xuXG4vKioqLyB9LFxuLyogNjggKi9cbi8qKiovIGZ1bmN0
aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8qKlxuXHQg
KiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRz
IHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVy
IHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxlIGlu
IHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdy
YW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZp
bGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKiBcblx0ICovXG5cdFxuXHQndXNl
IHN0cmljdCc7XG5cdFxuXHR2YXIgX3Byb2RJbnZhcmlhbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9f
KDMpO1xuXHRcblx0dmFyIFJlYWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNyk7XG5cdFxuXHR2
YXIgaW52YXJpYW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxKTtcblx0XG5cdHZhciBSZWFjdE5v
ZGVUeXBlcyA9IHtcblx0ICBIT1NUOiAwLFxuXHQgIENPTVBPU0lURTogMSxcblx0ICBFTVBUWTog
Mixcblx0XG5cdCAgZ2V0VHlwZTogZnVuY3Rpb24gKG5vZGUpIHtcblx0ICAgIGlmIChub2RlID09
PSBudWxsIHx8IG5vZGUgPT09IGZhbHNlKSB7XG5cdCAgICAgIHJldHVybiBSZWFjdE5vZGVUeXBl
cy5FTVBUWTtcblx0ICAgIH0gZWxzZSBpZiAoUmVhY3QuaXNWYWxpZEVsZW1lbnQobm9kZSkpIHtc
blx0ICAgICAgaWYgKHR5cGVvZiBub2RlLnR5cGUgPT09ICdmdW5jdGlvbicpIHtcblx0ICAgICAg
ICByZXR1cm4gUmVhY3ROb2RlVHlwZXMuQ09NUE9TSVRFO1xuXHQgICAgICB9IGVsc2Uge1xuXHQg
ICAgICAgIHJldHVybiBSZWFjdE5vZGVUeXBlcy5IT1NUO1xuXHQgICAgICB9XG5cdCAgICB9XG5c
dCAgICAgdHJ1ZSA/ICBmYWxzZSA/IGludmFyaWFudChmYWxzZSwgJ1VuZXhwZWN0ZWQgbm9kZTog
JXMnLCBub2RlKSA6IF9wcm9kSW52YXJpYW50KCcyNicsIG5vZGUpIDogdm9pZCAwO1xuXHQgIH1c
blx0fTtcblx0XG5cdG1vZHVsZS5leHBvcnRzID0gUmVhY3ROb2RlVHlwZXM7XG5cbi8qKiovIH0s
XG4vKiA2OSAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cblx0LyoqXG5c
dCAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5k
ZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUg
aW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwg
Z3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMg
ZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqL1xuXHRcblx0J3VzZSBzdHJp
Y3QnO1xuXHRcblx0dmFyIFZpZXdwb3J0TWV0cmljcyA9IHtcblx0ICBjdXJyZW50U2Nyb2xsTGVm
dDogMCxcblx0XG5cdCAgY3VycmVudFNjcm9sbFRvcDogMCxcblx0XG5cdCAgcmVmcmVzaFNjcm9s
bFZhbHVlczogZnVuY3Rpb24gKHNjcm9sbFBvc2l0aW9uKSB7XG5cdCAgICBWaWV3cG9ydE1ldHJp
Y3MuY3VycmVudFNjcm9sbExlZnQgPSBzY3JvbGxQb3NpdGlvbi54O1xuXHQgICAgVmlld3BvcnRN
ZXRyaWNzLmN1cnJlbnRTY3JvbGxUb3AgPSBzY3JvbGxQb3NpdGlvbi55O1xuXHQgIH1cblx0fTtc
blx0XG5cdG1vZHVsZS5leHBvcnRzID0gVmlld3BvcnRNZXRyaWNzO1xuXG4vKioqLyB9LFxuLyog
NzAgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVf
Xykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50LCBGYWNlYm9vaywgSW5j
LlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2Rl
IGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0
ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVl
LiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5k
IGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKiBc
blx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHR2YXIgX3Byb2RJbnZhcmlhbnQgPSBf
X3dlYnBhY2tfcmVxdWlyZV9fKDMpO1xuXHRcblx0dmFyIGludmFyaWFudCA9IF9fd2VicGFja19y
ZXF1aXJlX18oMSk7XG5cdFxuXHQvKipcblx0ICogQWNjdW11bGF0ZXMgaXRlbXMgdGhhdCBtdXN0
IG5vdCBiZSBudWxsIG9yIHVuZGVmaW5lZCBpbnRvIHRoZSBmaXJzdCBvbmUuIFRoaXNcblx0ICog
aXMgdXNlZCB0byBjb25zZXJ2ZSBtZW1vcnkgYnkgYXZvaWRpbmcgYXJyYXkgYWxsb2NhdGlvbnMs
IGFuZCB0aHVzIHNhY3JpZmljZXNcblx0ICogQVBJIGNsZWFubmVzcy4gU2luY2UgYGN1cnJlbnRg
IGNhbiBiZSBudWxsIGJlZm9yZSBiZWluZyBwYXNzZWQgaW4gYW5kIG5vdFxuXHQgKiBudWxsIGFm
dGVyIHRoaXMgZnVuY3Rpb24sIG1ha2Ugc3VyZSB0byBhc3NpZ24gaXQgYmFjayB0byBgY3VycmVu
dGA6XG5cdCAqXG5cdCAqIGBhID0gYWNjdW11bGF0ZUludG8oYSwgYik7YFxuXHQgKlxuXHQgKiBU
aGlzIEFQSSBzaG91bGQgYmUgc3BhcmluZ2x5IHVzZWQuIFRyeSBgYWNjdW11bGF0ZWAgZm9yIHNv
bWV0aGluZyBjbGVhbmVyLlxuXHQgKlxuXHQgKiBAcmV0dXJuIHsqfGFycmF5PCo+fSBBbiBhY2N1
bXVsYXRpb24gb2YgaXRlbXMuXG5cdCAqL1xuXHRcblx0ZnVuY3Rpb24gYWNjdW11bGF0ZUludG8o
Y3VycmVudCwgbmV4dCkge1xuXHQgICEobmV4dCAhPSBudWxsKSA/ICBmYWxzZSA/IGludmFyaWFu
dChmYWxzZSwgJ2FjY3VtdWxhdGVJbnRvKC4uLik6IEFjY3VtdWxhdGVkIGl0ZW1zIG11c3Qgbm90
IGJlIG51bGwgb3IgdW5kZWZpbmVkLicpIDogX3Byb2RJbnZhcmlhbnQoJzMwJykgOiB2b2lkIDA7
XG5cdFxuXHQgIGlmIChjdXJyZW50ID09IG51bGwpIHtcblx0ICAgIHJldHVybiBuZXh0O1xuXHQg
IH1cblx0XG5cdCAgLy8gQm90aCBhcmUgbm90IGVtcHR5LiBXYXJuaW5nOiBOZXZlciBjYWxsIHgu
Y29uY2F0KHkpIHdoZW4geW91IGFyZSBub3Rcblx0ICAvLyBjZXJ0YWluIHRoYXQgeCBpcyBhbiBB
cnJheSAoeCBjb3VsZCBiZSBhIHN0cmluZyB3aXRoIGNvbmNhdCBtZXRob2QpLlxuXHQgIGlmIChB
cnJheS5pc0FycmF5KGN1cnJlbnQpKSB7XG5cdCAgICBpZiAoQXJyYXkuaXNBcnJheShuZXh0KSkg
e1xuXHQgICAgICBjdXJyZW50LnB1c2guYXBwbHkoY3VycmVudCwgbmV4dCk7XG5cdCAgICAgIHJl
dHVybiBjdXJyZW50O1xuXHQgICAgfVxuXHQgICAgY3VycmVudC5wdXNoKG5leHQpO1xuXHQgICAg
cmV0dXJuIGN1cnJlbnQ7XG5cdCAgfVxuXHRcblx0ICBpZiAoQXJyYXkuaXNBcnJheShuZXh0KSkg
e1xuXHQgICAgLy8gQSBiaXQgdG9vIGRhbmdlcm91cyB0byBtdXRhdGUgYG5leHRgLlxuXHQgICAg
cmV0dXJuIFtjdXJyZW50XS5jb25jYXQobmV4dCk7XG5cdCAgfVxuXHRcblx0ICByZXR1cm4gW2N1
cnJlbnQsIG5leHRdO1xuXHR9XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IGFjY3VtdWxhdGVJbnRv
O1xuXG4vKioqLyB9LFxuLyogNzEgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykg
e1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxu
XHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlz
IGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICog
TElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBB
biBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGlu
IHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKiBcblx0
ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHQvKipcblx0ICogQHBhcmFtIHthcnJheX0g
YXJyIGFuIFwiYWNjdW11bGF0aW9uXCIgb2YgaXRlbXMgd2hpY2ggaXMgZWl0aGVyIGFuIEFycmF5
IG9yXG5cdCAqIGEgc2luZ2xlIGl0ZW0uIFVzZWZ1bCB3aGVuIHBhaXJlZCB3aXRoIHRoZSBgYWNj
dW11bGF0ZWAgbW9kdWxlLiBUaGlzIGlzIGFcblx0ICogc2ltcGxlIHV0aWxpdHkgdGhhdCBhbGxv
d3MgdXMgdG8gcmVhc29uIGFib3V0IGEgY29sbGVjdGlvbiBvZiBpdGVtcywgYnV0XG5cdCAqIGhh
bmRsaW5nIHRoZSBjYXNlIHdoZW4gdGhlcmUgaXMgZXhhY3RseSBvbmUgaXRlbSAoYW5kIHdlIGRv
IG5vdCBuZWVkIHRvXG5cdCAqIGFsbG9jYXRlIGFuIGFycmF5KS5cblx0ICovXG5cdFxuXHRmdW5j
dGlvbiBmb3JFYWNoQWNjdW11bGF0ZWQoYXJyLCBjYiwgc2NvcGUpIHtcblx0ICBpZiAoQXJyYXku
aXNBcnJheShhcnIpKSB7XG5cdCAgICBhcnIuZm9yRWFjaChjYiwgc2NvcGUpO1xuXHQgIH0gZWxz
ZSBpZiAoYXJyKSB7XG5cdCAgICBjYi5jYWxsKHNjb3BlLCBhcnIpO1xuXHQgIH1cblx0fVxuXHRc
blx0bW9kdWxlLmV4cG9ydHMgPSBmb3JFYWNoQWNjdW11bGF0ZWQ7XG5cbi8qKiovIH0sXG4vKiA3
MiAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9f
KSB7XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMu
XG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUg
aXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQg
KiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUu
IEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQg
aW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqL1xu
XHRcblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0dmFyIFJlYWN0Tm9kZVR5cGVzID0gX193ZWJwYWNr
X3JlcXVpcmVfXyg2OCk7XG5cdFxuXHRmdW5jdGlvbiBnZXRIb3N0Q29tcG9uZW50RnJvbUNvbXBv
c2l0ZShpbnN0KSB7XG5cdCAgdmFyIHR5cGU7XG5cdFxuXHQgIHdoaWxlICgodHlwZSA9IGluc3Qu
X3JlbmRlcmVkTm9kZVR5cGUpID09PSBSZWFjdE5vZGVUeXBlcy5DT01QT1NJVEUpIHtcblx0ICAg
IGluc3QgPSBpbnN0Ll9yZW5kZXJlZENvbXBvbmVudDtcblx0ICB9XG5cdFxuXHQgIGlmICh0eXBl
ID09PSBSZWFjdE5vZGVUeXBlcy5IT1NUKSB7XG5cdCAgICByZXR1cm4gaW5zdC5fcmVuZGVyZWRD
b21wb25lbnQ7XG5cdCAgfSBlbHNlIGlmICh0eXBlID09PSBSZWFjdE5vZGVUeXBlcy5FTVBUWSkg
e1xuXHQgICAgcmV0dXJuIG51bGw7XG5cdCAgfVxuXHR9XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9
IGdldEhvc3RDb21wb25lbnRGcm9tQ29tcG9zaXRlO1xuXG4vKioqLyB9LFxuLyogNzMgKi9cbi8q
KiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5c
dC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBB
bGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vu
c2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5T
RSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRp
dGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQ
QVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKi9cblx0XG5cdCd1
c2Ugc3RyaWN0Jztcblx0XG5cdHZhciBFeGVjdXRpb25FbnZpcm9ubWVudCA9IF9fd2VicGFja19y
ZXF1aXJlX18oNik7XG5cdFxuXHR2YXIgY29udGVudEtleSA9IG51bGw7XG5cdFxuXHQvKipcblx0
ICogR2V0cyB0aGUga2V5IHVzZWQgdG8gYWNjZXNzIHRleHQgY29udGVudCBvbiBhIERPTSBub2Rl
LlxuXHQgKlxuXHQgKiBAcmV0dXJuIHs/c3RyaW5nfSBLZXkgdXNlZCB0byBhY2Nlc3MgdGV4dCBj
b250ZW50LlxuXHQgKiBAaW50ZXJuYWxcblx0ICovXG5cdGZ1bmN0aW9uIGdldFRleHRDb250ZW50
QWNjZXNzb3IoKSB7XG5cdCAgaWYgKCFjb250ZW50S2V5ICYmIEV4ZWN1dGlvbkVudmlyb25tZW50
LmNhblVzZURPTSkge1xuXHQgICAgLy8gUHJlZmVyIHRleHRDb250ZW50IHRvIGlubmVyVGV4dCBi
ZWNhdXNlIG1hbnkgYnJvd3NlcnMgc3VwcG9ydCBib3RoIGJ1dFxuXHQgICAgLy8gU1ZHIDx0ZXh0
PiBlbGVtZW50cyBkb24ndCBzdXBwb3J0IGlubmVyVGV4dCBldmVuIHdoZW4gPGRpdj4gZG9lcy5c
blx0ICAgIGNvbnRlbnRLZXkgPSAndGV4dENvbnRlbnQnIGluIGRvY3VtZW50LmRvY3VtZW50RWxl
bWVudCA/ICd0ZXh0Q29udGVudCcgOiAnaW5uZXJUZXh0Jztcblx0ICB9XG5cdCAgcmV0dXJuIGNv
bnRlbnRLZXk7XG5cdH1cblx0XG5cdG1vZHVsZS5leHBvcnRzID0gZ2V0VGV4dENvbnRlbnRBY2Nl
c3NvcjtcblxuLyoqKi8gfSxcbi8qIDc0ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9y
dHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvKipcblx0ICogQ29weXJpZ2h0IDIwMTMt
cHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpc
blx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxp
Y2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rv
cnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRl
bnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRp
cmVjdG9yeS5cblx0ICpcblx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHR2YXIgUmVh
Y3RET01Db21wb25lbnRUcmVlID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1KTtcblx0XG5cdGZ1bmN0
aW9uIGlzQ2hlY2thYmxlKGVsZW0pIHtcblx0ICB2YXIgdHlwZSA9IGVsZW0udHlwZTtcblx0ICB2
YXIgbm9kZU5hbWUgPSBlbGVtLm5vZGVOYW1lO1xuXHQgIHJldHVybiBub2RlTmFtZSAmJiBub2Rl
TmFtZS50b0xvd2VyQ2FzZSgpID09PSAnaW5wdXQnICYmICh0eXBlID09PSAnY2hlY2tib3gnIHx8
IHR5cGUgPT09ICdyYWRpbycpO1xuXHR9XG5cdFxuXHRmdW5jdGlvbiBnZXRUcmFja2VyKGluc3Qp
IHtcblx0ICByZXR1cm4gaW5zdC5fd3JhcHBlclN0YXRlLnZhbHVlVHJhY2tlcjtcblx0fVxuXHRc
blx0ZnVuY3Rpb24gYXR0YWNoVHJhY2tlcihpbnN0LCB0cmFja2VyKSB7XG5cdCAgaW5zdC5fd3Jh
cHBlclN0YXRlLnZhbHVlVHJhY2tlciA9IHRyYWNrZXI7XG5cdH1cblx0XG5cdGZ1bmN0aW9uIGRl
dGFjaFRyYWNrZXIoaW5zdCkge1xuXHQgIGRlbGV0ZSBpbnN0Ll93cmFwcGVyU3RhdGUudmFsdWVU
cmFja2VyO1xuXHR9XG5cdFxuXHRmdW5jdGlvbiBnZXRWYWx1ZUZyb21Ob2RlKG5vZGUpIHtcblx0
ICB2YXIgdmFsdWU7XG5cdCAgaWYgKG5vZGUpIHtcblx0ICAgIHZhbHVlID0gaXNDaGVja2FibGUo
bm9kZSkgPyAnJyArIG5vZGUuY2hlY2tlZCA6IG5vZGUudmFsdWU7XG5cdCAgfVxuXHQgIHJldHVy
biB2YWx1ZTtcblx0fVxuXHRcblx0dmFyIGlucHV0VmFsdWVUcmFja2luZyA9IHtcblx0ICAvLyBl
eHBvc2VkIGZvciB0ZXN0aW5nXG5cdCAgX2dldFRyYWNrZXJGcm9tTm9kZTogZnVuY3Rpb24gKG5v
ZGUpIHtcblx0ICAgIHJldHVybiBnZXRUcmFja2VyKFJlYWN0RE9NQ29tcG9uZW50VHJlZS5nZXRJ
bnN0YW5jZUZyb21Ob2RlKG5vZGUpKTtcblx0ICB9LFxuXHRcblx0XG5cdCAgdHJhY2s6IGZ1bmN0
aW9uIChpbnN0KSB7XG5cdCAgICBpZiAoZ2V0VHJhY2tlcihpbnN0KSkge1xuXHQgICAgICByZXR1
cm47XG5cdCAgICB9XG5cdFxuXHQgICAgdmFyIG5vZGUgPSBSZWFjdERPTUNvbXBvbmVudFRyZWUu
Z2V0Tm9kZUZyb21JbnN0YW5jZShpbnN0KTtcblx0ICAgIHZhciB2YWx1ZUZpZWxkID0gaXNDaGVj
a2FibGUobm9kZSkgPyAnY2hlY2tlZCcgOiAndmFsdWUnO1xuXHQgICAgdmFyIGRlc2NyaXB0b3Ig
PSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG5vZGUuY29uc3RydWN0b3IucHJvdG90
eXBlLCB2YWx1ZUZpZWxkKTtcblx0XG5cdCAgICB2YXIgY3VycmVudFZhbHVlID0gJycgKyBub2Rl
W3ZhbHVlRmllbGRdO1xuXHRcblx0ICAgIC8vIGlmIHNvbWVvbmUgaGFzIGFscmVhZHkgZGVmaW5l
ZCBhIHZhbHVlIG9yIFNhZmFyaSwgdGhlbiBiYWlsXG5cdCAgICAvLyBhbmQgZG9uJ3QgdHJhY2sg
dmFsdWUgd2lsbCBjYXVzZSBvdmVyIHJlcG9ydGluZyBvZiBjaGFuZ2VzLFxuXHQgICAgLy8gYnV0
IGl0J3MgYmV0dGVyIHRoZW4gYSBoYXJkIGZhaWx1cmVcblx0ICAgIC8vIChuZWVkZWQgZm9yIGNl
cnRhaW4gdGVzdHMgdGhhdCBzcHlPbiBpbnB1dCB2YWx1ZXMgYW5kIFNhZmFyaSlcblx0ICAgIGlm
IChub2RlLmhhc093blByb3BlcnR5KHZhbHVlRmllbGQpIHx8IHR5cGVvZiBkZXNjcmlwdG9yLmdl
dCAhPT0gJ2Z1bmN0aW9uJyB8fCB0eXBlb2YgZGVzY3JpcHRvci5zZXQgIT09ICdmdW5jdGlvbicp
IHtcblx0ICAgICAgcmV0dXJuO1xuXHQgICAgfVxuXHRcblx0ICAgIE9iamVjdC5kZWZpbmVQcm9w
ZXJ0eShub2RlLCB2YWx1ZUZpZWxkLCB7XG5cdCAgICAgIGVudW1lcmFibGU6IGRlc2NyaXB0b3Iu
ZW51bWVyYWJsZSxcblx0ICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuXHQgICAgICBnZXQ6IGZ1
bmN0aW9uICgpIHtcblx0ICAgICAgICByZXR1cm4gZGVzY3JpcHRvci5nZXQuY2FsbCh0aGlzKTtc
blx0ICAgICAgfSxcblx0ICAgICAgc2V0OiBmdW5jdGlvbiAodmFsdWUpIHtcblx0ICAgICAgICBj
dXJyZW50VmFsdWUgPSAnJyArIHZhbHVlO1xuXHQgICAgICAgIGRlc2NyaXB0b3Iuc2V0LmNhbGwo
dGhpcywgdmFsdWUpO1xuXHQgICAgICB9XG5cdCAgICB9KTtcblx0XG5cdCAgICBhdHRhY2hUcmFj
a2VyKGluc3QsIHtcblx0ICAgICAgZ2V0VmFsdWU6IGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICBy
ZXR1cm4gY3VycmVudFZhbHVlO1xuXHQgICAgICB9LFxuXHQgICAgICBzZXRWYWx1ZTogZnVuY3Rp
b24gKHZhbHVlKSB7XG5cdCAgICAgICAgY3VycmVudFZhbHVlID0gJycgKyB2YWx1ZTtcblx0ICAg
ICAgfSxcblx0ICAgICAgc3RvcFRyYWNraW5nOiBmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgZGV0
YWNoVHJhY2tlcihpbnN0KTtcblx0ICAgICAgICBkZWxldGUgbm9kZVt2YWx1ZUZpZWxkXTtcblx0
ICAgICAgfVxuXHQgICAgfSk7XG5cdCAgfSxcblx0XG5cdCAgdXBkYXRlVmFsdWVJZkNoYW5nZWQ6
IGZ1bmN0aW9uIChpbnN0KSB7XG5cdCAgICBpZiAoIWluc3QpIHtcblx0ICAgICAgcmV0dXJuIGZh
bHNlO1xuXHQgICAgfVxuXHQgICAgdmFyIHRyYWNrZXIgPSBnZXRUcmFja2VyKGluc3QpO1xuXHRc
blx0ICAgIGlmICghdHJhY2tlcikge1xuXHQgICAgICBpbnB1dFZhbHVlVHJhY2tpbmcudHJhY2so
aW5zdCk7XG5cdCAgICAgIHJldHVybiB0cnVlO1xuXHQgICAgfVxuXHRcblx0ICAgIHZhciBsYXN0
VmFsdWUgPSB0cmFja2VyLmdldFZhbHVlKCk7XG5cdCAgICB2YXIgbmV4dFZhbHVlID0gZ2V0VmFs
dWVGcm9tTm9kZShSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0Tm9kZUZyb21JbnN0YW5jZShpbnN0
KSk7XG5cdFxuXHQgICAgaWYgKG5leHRWYWx1ZSAhPT0gbGFzdFZhbHVlKSB7XG5cdCAgICAgIHRy
YWNrZXIuc2V0VmFsdWUobmV4dFZhbHVlKTtcblx0ICAgICAgcmV0dXJuIHRydWU7XG5cdCAgICB9
XG5cdFxuXHQgICAgcmV0dXJuIGZhbHNlO1xuXHQgIH0sXG5cdCAgc3RvcFRyYWNraW5nOiBmdW5j
dGlvbiAoaW5zdCkge1xuXHQgICAgdmFyIHRyYWNrZXIgPSBnZXRUcmFja2VyKGluc3QpO1xuXHQg
ICAgaWYgKHRyYWNrZXIpIHtcblx0ICAgICAgdHJhY2tlci5zdG9wVHJhY2tpbmcoKTtcblx0ICAg
IH1cblx0ICB9XG5cdH07XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IGlucHV0VmFsdWVUcmFja2lu
ZztcblxuLyoqKi8gfSxcbi8qIDc1ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMs
IF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvKipcblx0ICogQ29weXJpZ2h0IDIwMTMtcHJl
c2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0
ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vu
c2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkg
b2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQg
cmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVj
dG9yeS5cblx0ICpcblx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHR2YXIgX3Byb2RJ
bnZhcmlhbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMpLFxuXHQgICAgX2Fzc2lnbiA9IF9fd2Vi
cGFja19yZXF1aXJlX18oNCk7XG5cdFxuXHR2YXIgUmVhY3RDb21wb3NpdGVDb21wb25lbnQgPSBf
X3dlYnBhY2tfcmVxdWlyZV9fKDEzNik7XG5cdHZhciBSZWFjdEVtcHR5Q29tcG9uZW50ID0gX193
ZWJwYWNrX3JlcXVpcmVfXyg2Myk7XG5cdHZhciBSZWFjdEhvc3RDb21wb25lbnQgPSBfX3dlYnBh
Y2tfcmVxdWlyZV9fKDY1KTtcblx0XG5cdHZhciBnZXROZXh0RGVidWdJRCA9IF9fd2VicGFja19y
ZXF1aXJlX18oMjIxKTtcblx0dmFyIGludmFyaWFudCA9IF9fd2VicGFja19yZXF1aXJlX18oMSk7
XG5cdHZhciB3YXJuaW5nID0gX193ZWJwYWNrX3JlcXVpcmVfXygyKTtcblx0XG5cdC8vIFRvIGF2
b2lkIGEgY3ljbGljIGRlcGVuZGVuY3ksIHdlIGNyZWF0ZSB0aGUgZmluYWwgY2xhc3MgaW4gdGhp
cyBtb2R1bGVcblx0dmFyIFJlYWN0Q29tcG9zaXRlQ29tcG9uZW50V3JhcHBlciA9IGZ1bmN0aW9u
IChlbGVtZW50KSB7XG5cdCAgdGhpcy5jb25zdHJ1Y3QoZWxlbWVudCk7XG5cdH07XG5cdFxuXHRm
dW5jdGlvbiBnZXREZWNsYXJhdGlvbkVycm9yQWRkZW5kdW0ob3duZXIpIHtcblx0ICBpZiAob3du
ZXIpIHtcblx0ICAgIHZhciBuYW1lID0gb3duZXIuZ2V0TmFtZSgpO1xuXHQgICAgaWYgKG5hbWUp
IHtcblx0ICAgICAgcmV0dXJuICcgQ2hlY2sgdGhlIHJlbmRlciBtZXRob2Qgb2YgYCcgKyBuYW1l
ICsgJ2AuJztcblx0ICAgIH1cblx0ICB9XG5cdCAgcmV0dXJuICcnO1xuXHR9XG5cdFxuXHQvKipc
blx0ICogQ2hlY2sgaWYgdGhlIHR5cGUgcmVmZXJlbmNlIGlzIGEga25vd24gaW50ZXJuYWwgdHlw
ZS4gSS5lLiBub3QgYSB1c2VyXG5cdCAqIHByb3ZpZGVkIGNvbXBvc2l0ZSB0eXBlLlxuXHQgKlxu
XHQgKiBAcGFyYW0ge2Z1bmN0aW9ufSB0eXBlXG5cdCAqIEByZXR1cm4ge2Jvb2xlYW59IFJldHVy
bnMgdHJ1ZSBpZiB0aGlzIGlzIGEgdmFsaWQgaW50ZXJuYWwgdHlwZS5cblx0ICovXG5cdGZ1bmN0
aW9uIGlzSW50ZXJuYWxDb21wb25lbnRUeXBlKHR5cGUpIHtcblx0ICByZXR1cm4gdHlwZW9mIHR5
cGUgPT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIHR5cGUucHJvdG90eXBlICE9PSAndW5kZWZpbmVk
JyAmJiB0eXBlb2YgdHlwZS5wcm90b3R5cGUubW91bnRDb21wb25lbnQgPT09ICdmdW5jdGlvbicg
JiYgdHlwZW9mIHR5cGUucHJvdG90eXBlLnJlY2VpdmVDb21wb25lbnQgPT09ICdmdW5jdGlvbic7
XG5cdH1cblx0XG5cdC8qKlxuXHQgKiBHaXZlbiBhIFJlYWN0Tm9kZSwgY3JlYXRlIGFuIGluc3Rh
bmNlIHRoYXQgd2lsbCBhY3R1YWxseSBiZSBtb3VudGVkLlxuXHQgKlxuXHQgKiBAcGFyYW0ge1Jl
YWN0Tm9kZX0gbm9kZVxuXHQgKiBAcGFyYW0ge2Jvb2xlYW59IHNob3VsZEhhdmVEZWJ1Z0lEXG5c
dCAqIEByZXR1cm4ge29iamVjdH0gQSBuZXcgaW5zdGFuY2Ugb2YgdGhlIGVsZW1lbnQncyBjb25z
dHJ1Y3Rvci5cblx0ICogQHByb3RlY3RlZFxuXHQgKi9cblx0ZnVuY3Rpb24gaW5zdGFudGlhdGVS
ZWFjdENvbXBvbmVudChub2RlLCBzaG91bGRIYXZlRGVidWdJRCkge1xuXHQgIHZhciBpbnN0YW5j
ZTtcblx0XG5cdCAgaWYgKG5vZGUgPT09IG51bGwgfHwgbm9kZSA9PT0gZmFsc2UpIHtcblx0ICAg
IGluc3RhbmNlID0gUmVhY3RFbXB0eUNvbXBvbmVudC5jcmVhdGUoaW5zdGFudGlhdGVSZWFjdENv
bXBvbmVudCk7XG5cdCAgfSBlbHNlIGlmICh0eXBlb2Ygbm9kZSA9PT0gJ29iamVjdCcpIHtcblx0
ICAgIHZhciBlbGVtZW50ID0gbm9kZTtcblx0ICAgIHZhciB0eXBlID0gZWxlbWVudC50eXBlO1xu
XHQgICAgaWYgKHR5cGVvZiB0eXBlICE9PSAnZnVuY3Rpb24nICYmIHR5cGVvZiB0eXBlICE9PSAn
c3RyaW5nJykge1xuXHQgICAgICB2YXIgaW5mbyA9ICcnO1xuXHQgICAgICBpZiAoZmFsc2UpIHtc
blx0ICAgICAgICBpZiAodHlwZSA9PT0gdW5kZWZpbmVkIHx8IHR5cGVvZiB0eXBlID09PSAnb2Jq
ZWN0JyAmJiB0eXBlICE9PSBudWxsICYmIE9iamVjdC5rZXlzKHR5cGUpLmxlbmd0aCA9PT0gMCkg
e1xuXHQgICAgICAgICAgaW5mbyArPSAnIFlvdSBsaWtlbHkgZm9yZ290IHRvIGV4cG9ydCB5b3Vy
IGNvbXBvbmVudCBmcm9tIHRoZSBmaWxlICcgKyBcIml0J3MgZGVmaW5lZCBpbi5cIjtcblx0ICAg
ICAgICB9XG5cdCAgICAgIH1cblx0ICAgICAgaW5mbyArPSBnZXREZWNsYXJhdGlvbkVycm9yQWRk
ZW5kdW0oZWxlbWVudC5fb3duZXIpO1xuXHQgICAgICAgdHJ1ZSA/ICBmYWxzZSA/IGludmFyaWFu
dChmYWxzZSwgJ0VsZW1lbnQgdHlwZSBpcyBpbnZhbGlkOiBleHBlY3RlZCBhIHN0cmluZyAoZm9y
IGJ1aWx0LWluIGNvbXBvbmVudHMpIG9yIGEgY2xhc3MvZnVuY3Rpb24gKGZvciBjb21wb3NpdGUg
Y29tcG9uZW50cykgYnV0IGdvdDogJXMuJXMnLCB0eXBlID09IG51bGwgPyB0eXBlIDogdHlwZW9m
IHR5cGUsIGluZm8pIDogX3Byb2RJbnZhcmlhbnQoJzEzMCcsIHR5cGUgPT0gbnVsbCA/IHR5cGUg
OiB0eXBlb2YgdHlwZSwgaW5mbykgOiB2b2lkIDA7XG5cdCAgICB9XG5cdFxuXHQgICAgLy8gU3Bl
Y2lhbCBjYXNlIHN0cmluZyB2YWx1ZXNcblx0ICAgIGlmICh0eXBlb2YgZWxlbWVudC50eXBlID09
PSAnc3RyaW5nJykge1xuXHQgICAgICBpbnN0YW5jZSA9IFJlYWN0SG9zdENvbXBvbmVudC5jcmVh
dGVJbnRlcm5hbENvbXBvbmVudChlbGVtZW50KTtcblx0ICAgIH0gZWxzZSBpZiAoaXNJbnRlcm5h
bENvbXBvbmVudFR5cGUoZWxlbWVudC50eXBlKSkge1xuXHQgICAgICAvLyBUaGlzIGlzIHRlbXBv
cmFyaWx5IGF2YWlsYWJsZSBmb3IgY3VzdG9tIGNvbXBvbmVudHMgdGhhdCBhcmUgbm90IHN0cmlu
Z1xuXHQgICAgICAvLyByZXByZXNlbnRhdGlvbnMuIEkuZS4gQVJULiBPbmNlIHRob3NlIGFyZSB1
cGRhdGVkIHRvIHVzZSB0aGUgc3RyaW5nXG5cdCAgICAgIC8vIHJlcHJlc2VudGF0aW9uLCB3ZSBj
YW4gZHJvcCB0aGlzIGNvZGUgcGF0aC5cblx0ICAgICAgaW5zdGFuY2UgPSBuZXcgZWxlbWVudC50
eXBlKGVsZW1lbnQpO1xuXHRcblx0ICAgICAgLy8gV2UgcmVuYW1lZCB0aGlzLiBBbGxvdyB0aGUg
b2xkIG5hbWUgZm9yIGNvbXBhdC4gOihcblx0ICAgICAgaWYgKCFpbnN0YW5jZS5nZXRIb3N0Tm9k
ZSkge1xuXHQgICAgICAgIGluc3RhbmNlLmdldEhvc3ROb2RlID0gaW5zdGFuY2UuZ2V0TmF0aXZl
Tm9kZTtcblx0ICAgICAgfVxuXHQgICAgfSBlbHNlIHtcblx0ICAgICAgaW5zdGFuY2UgPSBuZXcg
UmVhY3RDb21wb3NpdGVDb21wb25lbnRXcmFwcGVyKGVsZW1lbnQpO1xuXHQgICAgfVxuXHQgIH0g
ZWxzZSBpZiAodHlwZW9mIG5vZGUgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiBub2RlID09PSAnbnVt
YmVyJykge1xuXHQgICAgaW5zdGFuY2UgPSBSZWFjdEhvc3RDb21wb25lbnQuY3JlYXRlSW5zdGFu
Y2VGb3JUZXh0KG5vZGUpO1xuXHQgIH0gZWxzZSB7XG5cdCAgICAgdHJ1ZSA/ICBmYWxzZSA/IGlu
dmFyaWFudChmYWxzZSwgJ0VuY291bnRlcmVkIGludmFsaWQgUmVhY3Qgbm9kZSBvZiB0eXBlICVz
JywgdHlwZW9mIG5vZGUpIDogX3Byb2RJbnZhcmlhbnQoJzEzMScsIHR5cGVvZiBub2RlKSA6IHZv
aWQgMDtcblx0ICB9XG5cdFxuXHQgIGlmIChmYWxzZSkge1xuXHQgICAgcHJvY2Vzcy5lbnYuTk9E
RV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcodHlwZW9mIGluc3RhbmNlLm1vdW50Q29t
cG9uZW50ID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiBpbnN0YW5jZS5yZWNlaXZlQ29tcG9uZW50
ID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiBpbnN0YW5jZS5nZXRIb3N0Tm9kZSA9PT0gJ2Z1bmN0
aW9uJyAmJiB0eXBlb2YgaW5zdGFuY2UudW5tb3VudENvbXBvbmVudCA9PT0gJ2Z1bmN0aW9uJywg
J09ubHkgUmVhY3QgQ29tcG9uZW50cyBjYW4gYmUgbW91bnRlZC4nKSA6IHZvaWQgMDtcblx0ICB9
XG5cdFxuXHQgIC8vIFRoZXNlIHR3byBmaWVsZHMgYXJlIHVzZWQgYnkgdGhlIERPTSBhbmQgQVJU
IGRpZmZpbmcgYWxnb3JpdGhtc1xuXHQgIC8vIHJlc3BlY3RpdmVseS4gSW5zdGVhZCBvZiB1c2lu
ZyBleHBhbmRvcyBvbiBjb21wb25lbnRzLCB3ZSBzaG91bGQgYmVcblx0ICAvLyBzdG9yaW5nIHRo
ZSBzdGF0ZSBuZWVkZWQgYnkgdGhlIGRpZmZpbmcgYWxnb3JpdGhtcyBlbHNld2hlcmUuXG5cdCAg
aW5zdGFuY2UuX21vdW50SW5kZXggPSAwO1xuXHQgIGluc3RhbmNlLl9tb3VudEltYWdlID0gbnVs
bDtcblx0XG5cdCAgaWYgKGZhbHNlKSB7XG5cdCAgICBpbnN0YW5jZS5fZGVidWdJRCA9IHNob3Vs
ZEhhdmVEZWJ1Z0lEID8gZ2V0TmV4dERlYnVnSUQoKSA6IDA7XG5cdCAgfVxuXHRcblx0ICAvLyBJ
bnRlcm5hbCBpbnN0YW5jZXMgc2hvdWxkIGZ1bGx5IGNvbnN0cnVjdGVkIGF0IHRoaXMgcG9pbnQs
IHNvIHRoZXkgc2hvdWxkXG5cdCAgLy8gbm90IGdldCBhbnkgbmV3IGZpZWxkcyBhZGRlZCB0byB0
aGVtIGF0IHRoaXMgcG9pbnQuXG5cdCAgaWYgKGZhbHNlKSB7XG5cdCAgICBpZiAoT2JqZWN0LnBy
ZXZlbnRFeHRlbnNpb25zKSB7XG5cdCAgICAgIE9iamVjdC5wcmV2ZW50RXh0ZW5zaW9ucyhpbnN0
YW5jZSk7XG5cdCAgICB9XG5cdCAgfVxuXHRcblx0ICByZXR1cm4gaW5zdGFuY2U7XG5cdH1cblx0
XG5cdF9hc3NpZ24oUmVhY3RDb21wb3NpdGVDb21wb25lbnRXcmFwcGVyLnByb3RvdHlwZSwgUmVh
Y3RDb21wb3NpdGVDb21wb25lbnQsIHtcblx0ICBfaW5zdGFudGlhdGVSZWFjdENvbXBvbmVudDog
aW5zdGFudGlhdGVSZWFjdENvbXBvbmVudFxuXHR9KTtcblx0XG5cdG1vZHVsZS5leHBvcnRzID0g
aW5zdGFudGlhdGVSZWFjdENvbXBvbmVudDtcblxuLyoqKi8gfSxcbi8qIDc2ICovXG4vKioqLyBm
dW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuXHQvKipcblx0ICogQ29weXJpZ2h0IDIwMTMt
cHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpc
blx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxp
Y2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rv
cnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRl
bnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRp
cmVjdG9yeS5cblx0ICpcblx0ICogXG5cdCAqL1xuXHRcblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0
LyoqXG5cdCAqIEBzZWUgaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJl
bnQtd29yay9tdWx0aXBhZ2UvdGhlLWlucHV0LWVsZW1lbnQuaHRtbCNpbnB1dC10eXBlLWF0dHIt
c3VtbWFyeVxuXHQgKi9cblx0XG5cdHZhciBzdXBwb3J0ZWRJbnB1dFR5cGVzID0ge1xuXHQgIGNv
bG9yOiB0cnVlLFxuXHQgIGRhdGU6IHRydWUsXG5cdCAgZGF0ZXRpbWU6IHRydWUsXG5cdCAgJ2Rh
dGV0aW1lLWxvY2FsJzogdHJ1ZSxcblx0ICBlbWFpbDogdHJ1ZSxcblx0ICBtb250aDogdHJ1ZSxc
blx0ICBudW1iZXI6IHRydWUsXG5cdCAgcGFzc3dvcmQ6IHRydWUsXG5cdCAgcmFuZ2U6IHRydWUs
XG5cdCAgc2VhcmNoOiB0cnVlLFxuXHQgIHRlbDogdHJ1ZSxcblx0ICB0ZXh0OiB0cnVlLFxuXHQg
IHRpbWU6IHRydWUsXG5cdCAgdXJsOiB0cnVlLFxuXHQgIHdlZWs6IHRydWVcblx0fTtcblx0XG5c
dGZ1bmN0aW9uIGlzVGV4dElucHV0RWxlbWVudChlbGVtKSB7XG5cdCAgdmFyIG5vZGVOYW1lID0g
ZWxlbSAmJiBlbGVtLm5vZGVOYW1lICYmIGVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtcblx0
XG5cdCAgaWYgKG5vZGVOYW1lID09PSAnaW5wdXQnKSB7XG5cdCAgICByZXR1cm4gISFzdXBwb3J0
ZWRJbnB1dFR5cGVzW2VsZW0udHlwZV07XG5cdCAgfVxuXHRcblx0ICBpZiAobm9kZU5hbWUgPT09
ICd0ZXh0YXJlYScpIHtcblx0ICAgIHJldHVybiB0cnVlO1xuXHQgIH1cblx0XG5cdCAgcmV0dXJu
IGZhbHNlO1xuXHR9XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IGlzVGV4dElucHV0RWxlbWVudDtc
blxuLyoqKi8gfSxcbi8qIDc3ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9f
d2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvKipcblx0ICogQ29weXJpZ2h0IDIwMTMtcHJlc2Vu
dCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICog
VGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2Ug
Zm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2Yg
dGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmln
aHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9y
eS5cblx0ICpcblx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHR2YXIgRXhlY3V0aW9u
RW52aXJvbm1lbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDYpO1xuXHR2YXIgZXNjYXBlVGV4dENv
bnRlbnRGb3JCcm93c2VyID0gX193ZWJwYWNrX3JlcXVpcmVfXygyOCk7XG5cdHZhciBzZXRJbm5l
ckhUTUwgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDI5KTtcblx0XG5cdC8qKlxuXHQgKiBTZXQgdGhl
IHRleHRDb250ZW50IHByb3BlcnR5IG9mIGEgbm9kZSwgZW5zdXJpbmcgdGhhdCB3aGl0ZXNwYWNl
IGlzIHByZXNlcnZlZFxuXHQgKiBldmVuIGluIElFOC4gaW5uZXJUZXh0IGlzIGEgcG9vciBzdWJz
dGl0dXRlIGZvciB0ZXh0Q29udGVudCBhbmQsIGFtb25nIG1hbnlcblx0ICogaXNzdWVzLCBpbnNl
cnRzIDxicj4gaW5zdGVhZCBvZiB0aGUgbGl0ZXJhbCBuZXdsaW5lIGNoYXJzLiBpbm5lckhUTUwg
YmVoYXZlc1xuXHQgKiBhcyBpdCBzaG91bGQuXG5cdCAqXG5cdCAqIEBwYXJhbSB7RE9NRWxlbWVu
dH0gbm9kZVxuXHQgKiBAcGFyYW0ge3N0cmluZ30gdGV4dFxuXHQgKiBAaW50ZXJuYWxcblx0ICov
XG5cdHZhciBzZXRUZXh0Q29udGVudCA9IGZ1bmN0aW9uIChub2RlLCB0ZXh0KSB7XG5cdCAgaWYg
KHRleHQpIHtcblx0ICAgIHZhciBmaXJzdENoaWxkID0gbm9kZS5maXJzdENoaWxkO1xuXHRcblx0
ICAgIGlmIChmaXJzdENoaWxkICYmIGZpcnN0Q2hpbGQgPT09IG5vZGUubGFzdENoaWxkICYmIGZp
cnN0Q2hpbGQubm9kZVR5cGUgPT09IDMpIHtcblx0ICAgICAgZmlyc3RDaGlsZC5ub2RlVmFsdWUg
PSB0ZXh0O1xuXHQgICAgICByZXR1cm47XG5cdCAgICB9XG5cdCAgfVxuXHQgIG5vZGUudGV4dENv
bnRlbnQgPSB0ZXh0O1xuXHR9O1xuXHRcblx0aWYgKEV4ZWN1dGlvbkVudmlyb25tZW50LmNhblVz
ZURPTSkge1xuXHQgIGlmICghKCd0ZXh0Q29udGVudCcgaW4gZG9jdW1lbnQuZG9jdW1lbnRFbGVt
ZW50KSkge1xuXHQgICAgc2V0VGV4dENvbnRlbnQgPSBmdW5jdGlvbiAobm9kZSwgdGV4dCkge1xu
XHQgICAgICBpZiAobm9kZS5ub2RlVHlwZSA9PT0gMykge1xuXHQgICAgICAgIG5vZGUubm9kZVZh
bHVlID0gdGV4dDtcblx0ICAgICAgICByZXR1cm47XG5cdCAgICAgIH1cblx0ICAgICAgc2V0SW5u
ZXJIVE1MKG5vZGUsIGVzY2FwZVRleHRDb250ZW50Rm9yQnJvd3Nlcih0ZXh0KSk7XG5cdCAgICB9
O1xuXHQgIH1cblx0fVxuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBzZXRUZXh0Q29udGVudDtcblxu
LyoqKi8gfSxcbi8qIDc4ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2Vi
cGFja19yZXF1aXJlX18pIHtcblxuXHQvKipcblx0ICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwg
RmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICogVGhp
cyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91
bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhp
cyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRz
IGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5c
blx0ICpcblx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHR2YXIgX3Byb2RJbnZhcmlh
bnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMpO1xuXHRcblx0dmFyIFJlYWN0Q3VycmVudE93bmVy
ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMSk7XG5cdHZhciBSRUFDVF9FTEVNRU5UX1RZUEUgPSBf
X3dlYnBhY2tfcmVxdWlyZV9fKDE1MSk7XG5cdFxuXHR2YXIgZ2V0SXRlcmF0b3JGbiA9IF9fd2Vi
cGFja19yZXF1aXJlX18oMTgyKTtcblx0dmFyIGludmFyaWFudCA9IF9fd2VicGFja19yZXF1aXJl
X18oMSk7XG5cdHZhciBLZXlFc2NhcGVVdGlscyA9IF9fd2VicGFja19yZXF1aXJlX18oMzgpO1xu
XHR2YXIgd2FybmluZyA9IF9fd2VicGFja19yZXF1aXJlX18oMik7XG5cdFxuXHR2YXIgU0VQQVJB
VE9SID0gJy4nO1xuXHR2YXIgU1VCU0VQQVJBVE9SID0gJzonO1xuXHRcblx0LyoqXG5cdCAqIFRo
aXMgaXMgaW5saW5lZCBmcm9tIFJlYWN0RWxlbWVudCBzaW5jZSB0aGlzIGZpbGUgaXMgc2hhcmVk
IGJldHdlZW5cblx0ICogaXNvbW9ycGhpYyBhbmQgcmVuZGVyZXJzLiBXZSBjb3VsZCBleHRyYWN0
IHRoaXMgdG8gYVxuXHQgKlxuXHQgKi9cblx0XG5cdC8qKlxuXHQgKiBUT0RPOiBUZXN0IHRoYXQg
YSBzaW5nbGUgY2hpbGQgYW5kIGFuIGFycmF5IHdpdGggb25lIGl0ZW0gaGF2ZSB0aGUgc2FtZSBr
ZXlcblx0ICogcGF0dGVybi5cblx0ICovXG5cdFxuXHR2YXIgZGlkV2FybkFib3V0TWFwcyA9IGZh
bHNlO1xuXHRcblx0LyoqXG5cdCAqIEdlbmVyYXRlIGEga2V5IHN0cmluZyB0aGF0IGlkZW50aWZp
ZXMgYSBjb21wb25lbnQgd2l0aGluIGEgc2V0LlxuXHQgKlxuXHQgKiBAcGFyYW0geyp9IGNvbXBv
bmVudCBBIGNvbXBvbmVudCB0aGF0IGNvdWxkIGNvbnRhaW4gYSBtYW51YWwga2V5LlxuXHQgKiBA
cGFyYW0ge251bWJlcn0gaW5kZXggSW5kZXggdGhhdCBpcyB1c2VkIGlmIGEgbWFudWFsIGtleSBp
cyBub3QgcHJvdmlkZWQuXG5cdCAqIEByZXR1cm4ge3N0cmluZ31cblx0ICovXG5cdGZ1bmN0aW9u
IGdldENvbXBvbmVudEtleShjb21wb25lbnQsIGluZGV4KSB7XG5cdCAgLy8gRG8gc29tZSB0eXBl
Y2hlY2tpbmcgaGVyZSBzaW5jZSB3ZSBjYWxsIHRoaXMgYmxpbmRseS4gV2Ugd2FudCB0byBlbnN1
cmVcblx0ICAvLyB0aGF0IHdlIGRvbid0IGJsb2NrIHBvdGVudGlhbCBmdXR1cmUgRVMgQVBJcy5c
blx0ICBpZiAoY29tcG9uZW50ICYmIHR5cGVvZiBjb21wb25lbnQgPT09ICdvYmplY3QnICYmIGNv
bXBvbmVudC5rZXkgIT0gbnVsbCkge1xuXHQgICAgLy8gRXhwbGljaXQga2V5XG5cdCAgICByZXR1
cm4gS2V5RXNjYXBlVXRpbHMuZXNjYXBlKGNvbXBvbmVudC5rZXkpO1xuXHQgIH1cblx0ICAvLyBJ
bXBsaWNpdCBrZXkgZGV0ZXJtaW5lZCBieSB0aGUgaW5kZXggaW4gdGhlIHNldFxuXHQgIHJldHVy
biBpbmRleC50b1N0cmluZygzNik7XG5cdH1cblx0XG5cdC8qKlxuXHQgKiBAcGFyYW0gez8qfSBj
aGlsZHJlbiBDaGlsZHJlbiB0cmVlIGNvbnRhaW5lci5cblx0ICogQHBhcmFtIHshc3RyaW5nfSBu
YW1lU29GYXIgTmFtZSBvZiB0aGUga2V5IHBhdGggc28gZmFyLlxuXHQgKiBAcGFyYW0geyFmdW5j
dGlvbn0gY2FsbGJhY2sgQ2FsbGJhY2sgdG8gaW52b2tlIHdpdGggZWFjaCBjaGlsZCBmb3VuZC5c
blx0ICogQHBhcmFtIHs/Kn0gdHJhdmVyc2VDb250ZXh0IFVzZWQgdG8gcGFzcyBpbmZvcm1hdGlv
biB0aHJvdWdob3V0IHRoZSB0cmF2ZXJzYWxcblx0ICogcHJvY2Vzcy5cblx0ICogQHJldHVybiB7
IW51bWJlcn0gVGhlIG51bWJlciBvZiBjaGlsZHJlbiBpbiB0aGlzIHN1YnRyZWUuXG5cdCAqL1xu
XHRmdW5jdGlvbiB0cmF2ZXJzZUFsbENoaWxkcmVuSW1wbChjaGlsZHJlbiwgbmFtZVNvRmFyLCBj
YWxsYmFjaywgdHJhdmVyc2VDb250ZXh0KSB7XG5cdCAgdmFyIHR5cGUgPSB0eXBlb2YgY2hpbGRy
ZW47XG5cdFxuXHQgIGlmICh0eXBlID09PSAndW5kZWZpbmVkJyB8fCB0eXBlID09PSAnYm9vbGVh
bicpIHtcblx0ICAgIC8vIEFsbCBvZiB0aGUgYWJvdmUgYXJlIHBlcmNlaXZlZCBhcyBudWxsLlxu
XHQgICAgY2hpbGRyZW4gPSBudWxsO1xuXHQgIH1cblx0XG5cdCAgaWYgKGNoaWxkcmVuID09PSBu
dWxsIHx8IHR5cGUgPT09ICdzdHJpbmcnIHx8IHR5cGUgPT09ICdudW1iZXInIHx8XG5cdCAgLy8g
VGhlIGZvbGxvd2luZyBpcyBpbmxpbmVkIGZyb20gUmVhY3RFbGVtZW50LiBUaGlzIG1lYW5zIHdl
IGNhbiBvcHRpbWl6ZVxuXHQgIC8vIHNvbWUgY2hlY2tzLiBSZWFjdCBGaWJlciBhbHNvIGlubGlu
ZXMgdGhpcyBsb2dpYyBmb3Igc2ltaWxhciBwdXJwb3Nlcy5cblx0ICB0eXBlID09PSAnb2JqZWN0
JyAmJiBjaGlsZHJlbi4kJHR5cGVvZiA9PT0gUkVBQ1RfRUxFTUVOVF9UWVBFKSB7XG5cdCAgICBj
YWxsYmFjayh0cmF2ZXJzZUNvbnRleHQsIGNoaWxkcmVuLFxuXHQgICAgLy8gSWYgaXQncyB0aGUg
b25seSBjaGlsZCwgdHJlYXQgdGhlIG5hbWUgYXMgaWYgaXQgd2FzIHdyYXBwZWQgaW4gYW4gYXJy
YXlcblx0ICAgIC8vIHNvIHRoYXQgaXQncyBjb25zaXN0ZW50IGlmIHRoZSBudW1iZXIgb2YgY2hp
bGRyZW4gZ3Jvd3MuXG5cdCAgICBuYW1lU29GYXIgPT09ICcnID8gU0VQQVJBVE9SICsgZ2V0Q29t
cG9uZW50S2V5KGNoaWxkcmVuLCAwKSA6IG5hbWVTb0Zhcik7XG5cdCAgICByZXR1cm4gMTtcblx0
ICB9XG5cdFxuXHQgIHZhciBjaGlsZDtcblx0ICB2YXIgbmV4dE5hbWU7XG5cdCAgdmFyIHN1YnRy
ZWVDb3VudCA9IDA7IC8vIENvdW50IG9mIGNoaWxkcmVuIGZvdW5kIGluIHRoZSBjdXJyZW50IHN1
YnRyZWUuXG5cdCAgdmFyIG5leHROYW1lUHJlZml4ID0gbmFtZVNvRmFyID09PSAnJyA/IFNFUEFS
QVRPUiA6IG5hbWVTb0ZhciArIFNVQlNFUEFSQVRPUjtcblx0XG5cdCAgaWYgKEFycmF5LmlzQXJy
YXkoY2hpbGRyZW4pKSB7XG5cdCAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0
aDsgaSsrKSB7XG5cdCAgICAgIGNoaWxkID0gY2hpbGRyZW5baV07XG5cdCAgICAgIG5leHROYW1l
ID0gbmV4dE5hbWVQcmVmaXggKyBnZXRDb21wb25lbnRLZXkoY2hpbGQsIGkpO1xuXHQgICAgICBz
dWJ0cmVlQ291bnQgKz0gdHJhdmVyc2VBbGxDaGlsZHJlbkltcGwoY2hpbGQsIG5leHROYW1lLCBj
YWxsYmFjaywgdHJhdmVyc2VDb250ZXh0KTtcblx0ICAgIH1cblx0ICB9IGVsc2Uge1xuXHQgICAg
dmFyIGl0ZXJhdG9yRm4gPSBnZXRJdGVyYXRvckZuKGNoaWxkcmVuKTtcblx0ICAgIGlmIChpdGVy
YXRvckZuKSB7XG5cdCAgICAgIHZhciBpdGVyYXRvciA9IGl0ZXJhdG9yRm4uY2FsbChjaGlsZHJl
bik7XG5cdCAgICAgIHZhciBzdGVwO1xuXHQgICAgICBpZiAoaXRlcmF0b3JGbiAhPT0gY2hpbGRy
ZW4uZW50cmllcykge1xuXHQgICAgICAgIHZhciBpaSA9IDA7XG5cdCAgICAgICAgd2hpbGUgKCEo
c3RlcCA9IGl0ZXJhdG9yLm5leHQoKSkuZG9uZSkge1xuXHQgICAgICAgICAgY2hpbGQgPSBzdGVw
LnZhbHVlO1xuXHQgICAgICAgICAgbmV4dE5hbWUgPSBuZXh0TmFtZVByZWZpeCArIGdldENvbXBv
bmVudEtleShjaGlsZCwgaWkrKyk7XG5cdCAgICAgICAgICBzdWJ0cmVlQ291bnQgKz0gdHJhdmVy
c2VBbGxDaGlsZHJlbkltcGwoY2hpbGQsIG5leHROYW1lLCBjYWxsYmFjaywgdHJhdmVyc2VDb250
ZXh0KTtcblx0ICAgICAgICB9XG5cdCAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgaWYgKGZhbHNl
KSB7XG5cdCAgICAgICAgICB2YXIgbWFwc0FzQ2hpbGRyZW5BZGRlbmR1bSA9ICcnO1xuXHQgICAg
ICAgICAgaWYgKFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQpIHtcblx0ICAgICAgICAgICAgdmFy
IG1hcHNBc0NoaWxkcmVuT3duZXJOYW1lID0gUmVhY3RDdXJyZW50T3duZXIuY3VycmVudC5nZXRO
YW1lKCk7XG5cdCAgICAgICAgICAgIGlmIChtYXBzQXNDaGlsZHJlbk93bmVyTmFtZSkge1xuXHQg
ICAgICAgICAgICAgIG1hcHNBc0NoaWxkcmVuQWRkZW5kdW0gPSAnIENoZWNrIHRoZSByZW5kZXIg
bWV0aG9kIG9mIGAnICsgbWFwc0FzQ2hpbGRyZW5Pd25lck5hbWUgKyAnYC4nO1xuXHQgICAgICAg
ICAgICB9XG5cdCAgICAgICAgICB9XG5cdCAgICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAh
PT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhkaWRXYXJuQWJvdXRNYXBzLCAnVXNpbmcgTWFwcyBh
cyBjaGlsZHJlbiBpcyBub3QgeWV0IGZ1bGx5IHN1cHBvcnRlZC4gSXQgaXMgYW4gJyArICdleHBl
cmltZW50YWwgZmVhdHVyZSB0aGF0IG1pZ2h0IGJlIHJlbW92ZWQuIENvbnZlcnQgaXQgdG8gYSAn
ICsgJ3NlcXVlbmNlIC8gaXRlcmFibGUgb2Yga2V5ZWQgUmVhY3RFbGVtZW50cyBpbnN0ZWFkLiVz
JywgbWFwc0FzQ2hpbGRyZW5BZGRlbmR1bSkgOiB2b2lkIDA7XG5cdCAgICAgICAgICBkaWRXYXJu
QWJvdXRNYXBzID0gdHJ1ZTtcblx0ICAgICAgICB9XG5cdCAgICAgICAgLy8gSXRlcmF0b3Igd2ls
bCBwcm92aWRlIGVudHJ5IFtrLHZdIHR1cGxlcyByYXRoZXIgdGhhbiB2YWx1ZXMuXG5cdCAgICAg
ICAgd2hpbGUgKCEoc3RlcCA9IGl0ZXJhdG9yLm5leHQoKSkuZG9uZSkge1xuXHQgICAgICAgICAg
dmFyIGVudHJ5ID0gc3RlcC52YWx1ZTtcblx0ICAgICAgICAgIGlmIChlbnRyeSkge1xuXHQgICAg
ICAgICAgICBjaGlsZCA9IGVudHJ5WzFdO1xuXHQgICAgICAgICAgICBuZXh0TmFtZSA9IG5leHRO
YW1lUHJlZml4ICsgS2V5RXNjYXBlVXRpbHMuZXNjYXBlKGVudHJ5WzBdKSArIFNVQlNFUEFSQVRP
UiArIGdldENvbXBvbmVudEtleShjaGlsZCwgMCk7XG5cdCAgICAgICAgICAgIHN1YnRyZWVDb3Vu
dCArPSB0cmF2ZXJzZUFsbENoaWxkcmVuSW1wbChjaGlsZCwgbmV4dE5hbWUsIGNhbGxiYWNrLCB0
cmF2ZXJzZUNvbnRleHQpO1xuXHQgICAgICAgICAgfVxuXHQgICAgICAgIH1cblx0ICAgICAgfVxu
XHQgICAgfSBlbHNlIGlmICh0eXBlID09PSAnb2JqZWN0Jykge1xuXHQgICAgICB2YXIgYWRkZW5k
dW0gPSAnJztcblx0ICAgICAgaWYgKGZhbHNlKSB7XG5cdCAgICAgICAgYWRkZW5kdW0gPSAnIElm
IHlvdSBtZWFudCB0byByZW5kZXIgYSBjb2xsZWN0aW9uIG9mIGNoaWxkcmVuLCB1c2UgYW4gYXJy
YXkgJyArICdpbnN0ZWFkIG9yIHdyYXAgdGhlIG9iamVjdCB1c2luZyBjcmVhdGVGcmFnbWVudChv
YmplY3QpIGZyb20gdGhlICcgKyAnUmVhY3QgYWRkLW9ucy4nO1xuXHQgICAgICAgIGlmIChjaGls
ZHJlbi5faXNSZWFjdEVsZW1lbnQpIHtcblx0ICAgICAgICAgIGFkZGVuZHVtID0gXCIgSXQgbG9v
a3MgbGlrZSB5b3UncmUgdXNpbmcgYW4gZWxlbWVudCBjcmVhdGVkIGJ5IGEgZGlmZmVyZW50IFwi
ICsgJ3ZlcnNpb24gb2YgUmVhY3QuIE1ha2Ugc3VyZSB0byB1c2Ugb25seSBvbmUgY29weSBvZiBS
ZWFjdC4nO1xuXHQgICAgICAgIH1cblx0ICAgICAgICBpZiAoUmVhY3RDdXJyZW50T3duZXIuY3Vy
cmVudCkge1xuXHQgICAgICAgICAgdmFyIG5hbWUgPSBSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50
LmdldE5hbWUoKTtcblx0ICAgICAgICAgIGlmIChuYW1lKSB7XG5cdCAgICAgICAgICAgIGFkZGVu
ZHVtICs9ICcgQ2hlY2sgdGhlIHJlbmRlciBtZXRob2Qgb2YgYCcgKyBuYW1lICsgJ2AuJztcblx0
ICAgICAgICAgIH1cblx0ICAgICAgICB9XG5cdCAgICAgIH1cblx0ICAgICAgdmFyIGNoaWxkcmVu
U3RyaW5nID0gU3RyaW5nKGNoaWxkcmVuKTtcblx0ICAgICAgIHRydWUgPyAgZmFsc2UgPyBpbnZh
cmlhbnQoZmFsc2UsICdPYmplY3RzIGFyZSBub3QgdmFsaWQgYXMgYSBSZWFjdCBjaGlsZCAoZm91
bmQ6ICVzKS4lcycsIGNoaWxkcmVuU3RyaW5nID09PSAnW29iamVjdCBPYmplY3RdJyA/ICdvYmpl
Y3Qgd2l0aCBrZXlzIHsnICsgT2JqZWN0LmtleXMoY2hpbGRyZW4pLmpvaW4oJywgJykgKyAnfScg
OiBjaGlsZHJlblN0cmluZywgYWRkZW5kdW0pIDogX3Byb2RJbnZhcmlhbnQoJzMxJywgY2hpbGRy
ZW5TdHJpbmcgPT09ICdbb2JqZWN0IE9iamVjdF0nID8gJ29iamVjdCB3aXRoIGtleXMgeycgKyBP
YmplY3Qua2V5cyhjaGlsZHJlbikuam9pbignLCAnKSArICd9JyA6IGNoaWxkcmVuU3RyaW5nLCBh
ZGRlbmR1bSkgOiB2b2lkIDA7XG5cdCAgICB9XG5cdCAgfVxuXHRcblx0ICByZXR1cm4gc3VidHJl
ZUNvdW50O1xuXHR9XG5cdFxuXHQvKipcblx0ICogVHJhdmVyc2VzIGNoaWxkcmVuIHRoYXQgYXJl
IHR5cGljYWxseSBzcGVjaWZpZWQgYXMgYHByb3BzLmNoaWxkcmVuYCwgYnV0XG5cdCAqIG1pZ2h0
IGFsc28gYmUgc3BlY2lmaWVkIHRocm91Z2ggYXR0cmlidXRlczpcblx0ICpcblx0ICogLSBgdHJh
dmVyc2VBbGxDaGlsZHJlbih0aGlzLnByb3BzLmNoaWxkcmVuLCAuLi4pYFxuXHQgKiAtIGB0cmF2
ZXJzZUFsbENoaWxkcmVuKHRoaXMucHJvcHMubGVmdFBhbmVsQ2hpbGRyZW4sIC4uLilgXG5cdCAq
XG5cdCAqIFRoZSBgdHJhdmVyc2VDb250ZXh0YCBpcyBhbiBvcHRpb25hbCBhcmd1bWVudCB0aGF0
IGlzIHBhc3NlZCB0aHJvdWdoIHRoZVxuXHQgKiBlbnRpcmUgdHJhdmVyc2FsLiBJdCBjYW4gYmUg
dXNlZCB0byBzdG9yZSBhY2N1bXVsYXRpb25zIG9yIGFueXRoaW5nIGVsc2UgdGhhdFxuXHQgKiB0
aGUgY2FsbGJhY2sgbWlnaHQgZmluZCByZWxldmFudC5cblx0ICpcblx0ICogQHBhcmFtIHs/Kn0g
Y2hpbGRyZW4gQ2hpbGRyZW4gdHJlZSBvYmplY3QuXG5cdCAqIEBwYXJhbSB7IWZ1bmN0aW9ufSBj
YWxsYmFjayBUbyBpbnZva2UgdXBvbiB0cmF2ZXJzaW5nIGVhY2ggY2hpbGQuXG5cdCAqIEBwYXJh
bSB7Pyp9IHRyYXZlcnNlQ29udGV4dCBDb250ZXh0IGZvciB0cmF2ZXJzYWwuXG5cdCAqIEByZXR1
cm4geyFudW1iZXJ9IFRoZSBudW1iZXIgb2YgY2hpbGRyZW4gaW4gdGhpcyBzdWJ0cmVlLlxuXHQg
Ki9cblx0ZnVuY3Rpb24gdHJhdmVyc2VBbGxDaGlsZHJlbihjaGlsZHJlbiwgY2FsbGJhY2ssIHRy
YXZlcnNlQ29udGV4dCkge1xuXHQgIGlmIChjaGlsZHJlbiA9PSBudWxsKSB7XG5cdCAgICByZXR1
cm4gMDtcblx0ICB9XG5cdFxuXHQgIHJldHVybiB0cmF2ZXJzZUFsbENoaWxkcmVuSW1wbChjaGls
ZHJlbiwgJycsIGNhbGxiYWNrLCB0cmF2ZXJzZUNvbnRleHQpO1xuXHR9XG5cdFxuXHRtb2R1bGUu
ZXhwb3J0cyA9IHRyYXZlcnNlQWxsQ2hpbGRyZW47XG5cbi8qKiovIH0sXG4vKiA3OSAqL1xuLyoq
Ki8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0
J3VzZSBzdHJpY3QnO1xuXHRcblx0ZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcblx0XG5cdHZh
ciBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24gKHRhcmdldCkgeyBmb3IgKHZh
ciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1l
bnRzW2ldOyBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhh
c093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7IHRhcmdldFtrZXldID0gc291cmNlW2tl
eV07IH0gfSB9IHJldHVybiB0YXJnZXQ7IH07XG5cdFxuXHRleHBvcnRzLmRlZmF1bHQgPSBjb25u
ZWN0QWR2YW5jZWQ7XG5cdFxuXHR2YXIgX2hvaXN0Tm9uUmVhY3RTdGF0aWNzID0gX193ZWJwYWNr
X3JlcXVpcmVfXygxMTApO1xuXHRcblx0dmFyIF9ob2lzdE5vblJlYWN0U3RhdGljczIgPSBfaW50
ZXJvcFJlcXVpcmVEZWZhdWx0KF9ob2lzdE5vblJlYWN0U3RhdGljcyk7XG5cdFxuXHR2YXIgX2lu
dmFyaWFudCA9IF9fd2VicGFja19yZXF1aXJlX18oMTExKTtcblx0XG5cdHZhciBfaW52YXJpYW50
MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2ludmFyaWFudCk7XG5cdFxuXHR2YXIgX3JlYWN0
ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMik7XG5cdFxuXHR2YXIgX1N1YnNjcmlwdGlvbiA9IF9f
d2VicGFja19yZXF1aXJlX18oMTk0KTtcblx0XG5cdHZhciBfU3Vic2NyaXB0aW9uMiA9IF9pbnRl
cm9wUmVxdWlyZURlZmF1bHQoX1N1YnNjcmlwdGlvbik7XG5cdFxuXHR2YXIgX1Byb3BUeXBlcyA9
IF9fd2VicGFja19yZXF1aXJlX18oODIpO1xuXHRcblx0ZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJl
RGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVm
YXVsdDogb2JqIH07IH1cblx0XG5cdGZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwg
Q29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsg
dGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwi
KTsgfSB9XG5cdFxuXHRmdW5jdGlvbiBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybihzZWxmLCBj
YWxsKSB7IGlmICghc2VsZikgeyB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoXCJ0aGlzIGhhc24n
dCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWRcIik7IH0gcmV0
dXJuIGNhbGwgJiYgKHR5cGVvZiBjYWxsID09PSBcIm9iamVjdFwiIHx8IHR5cGVvZiBjYWxsID09
PSBcImZ1bmN0aW9uXCIpID8gY2FsbCA6IHNlbGY7IH1cblx0XG5cdGZ1bmN0aW9uIF9pbmhlcml0
cyhzdWJDbGFzcywgc3VwZXJDbGFzcykgeyBpZiAodHlwZW9mIHN1cGVyQ2xhc3MgIT09IFwiZnVu
Y3Rpb25cIiAmJiBzdXBlckNsYXNzICE9PSBudWxsKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJT
dXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90IFwi
ICsgdHlwZW9mIHN1cGVyQ2xhc3MpOyB9IHN1YkNsYXNzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVh
dGUoc3VwZXJDbGFzcyAmJiBzdXBlckNsYXNzLnByb3RvdHlwZSwgeyBjb25zdHJ1Y3RvcjogeyB2
YWx1ZTogc3ViQ2xhc3MsIGVudW1lcmFibGU6IGZhbHNlLCB3cml0YWJsZTogdHJ1ZSwgY29uZmln
dXJhYmxlOiB0cnVlIH0gfSk7IGlmIChzdXBlckNsYXNzKSBPYmplY3Quc2V0UHJvdG90eXBlT2Yg
PyBPYmplY3Quc2V0UHJvdG90eXBlT2Yoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIDogc3ViQ2xhc3Mu
X19wcm90b19fID0gc3VwZXJDbGFzczsgfVxuXHRcblx0ZnVuY3Rpb24gX29iamVjdFdpdGhvdXRQ
cm9wZXJ0aWVzKG9iaiwga2V5cykgeyB2YXIgdGFyZ2V0ID0ge307IGZvciAodmFyIGkgaW4gb2Jq
KSB7IGlmIChrZXlzLmluZGV4T2YoaSkgPj0gMCkgY29udGludWU7IGlmICghT2JqZWN0LnByb3Rv
dHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgaSkpIGNvbnRpbnVlOyB0YXJnZXRbaV0gPSBv
YmpbaV07IH0gcmV0dXJuIHRhcmdldDsgfVxuXHRcblx0dmFyIGhvdFJlbG9hZGluZ1ZlcnNpb24g
PSAwO1xuXHR2YXIgZHVtbXlTdGF0ZSA9IHt9O1xuXHRmdW5jdGlvbiBub29wKCkge31cblx0ZnVu
Y3Rpb24gbWFrZVNlbGVjdG9yU3RhdGVmdWwoc291cmNlU2VsZWN0b3IsIHN0b3JlKSB7XG5cdCAg
Ly8gd3JhcCB0aGUgc2VsZWN0b3IgaW4gYW4gb2JqZWN0IHRoYXQgdHJhY2tzIGl0cyByZXN1bHRz
IGJldHdlZW4gcnVucy5cblx0ICB2YXIgc2VsZWN0b3IgPSB7XG5cdCAgICBydW46IGZ1bmN0aW9u
IHJ1bkNvbXBvbmVudFNlbGVjdG9yKHByb3BzKSB7XG5cdCAgICAgIHRyeSB7XG5cdCAgICAgICAg
dmFyIG5leHRQcm9wcyA9IHNvdXJjZVNlbGVjdG9yKHN0b3JlLmdldFN0YXRlKCksIHByb3BzKTtc
blx0ICAgICAgICBpZiAobmV4dFByb3BzICE9PSBzZWxlY3Rvci5wcm9wcyB8fCBzZWxlY3Rvci5l
cnJvcikge1xuXHQgICAgICAgICAgc2VsZWN0b3Iuc2hvdWxkQ29tcG9uZW50VXBkYXRlID0gdHJ1
ZTtcblx0ICAgICAgICAgIHNlbGVjdG9yLnByb3BzID0gbmV4dFByb3BzO1xuXHQgICAgICAgICAg
c2VsZWN0b3IuZXJyb3IgPSBudWxsO1xuXHQgICAgICAgIH1cblx0ICAgICAgfSBjYXRjaCAoZXJy
b3IpIHtcblx0ICAgICAgICBzZWxlY3Rvci5zaG91bGRDb21wb25lbnRVcGRhdGUgPSB0cnVlO1xu
XHQgICAgICAgIHNlbGVjdG9yLmVycm9yID0gZXJyb3I7XG5cdCAgICAgIH1cblx0ICAgIH1cblx0
ICB9O1xuXHRcblx0ICByZXR1cm4gc2VsZWN0b3I7XG5cdH1cblx0XG5cdGZ1bmN0aW9uIGNvbm5l
Y3RBZHZhbmNlZChcblx0Lypcblx0ICBzZWxlY3RvckZhY3RvcnkgaXMgYSBmdW5jIHRoYXQgaXMg
cmVzcG9uc2libGUgZm9yIHJldHVybmluZyB0aGUgc2VsZWN0b3IgZnVuY3Rpb24gdXNlZCB0b1xu
XHQgIGNvbXB1dGUgbmV3IHByb3BzIGZyb20gc3RhdGUsIHByb3BzLCBhbmQgZGlzcGF0Y2guIEZv
ciBleGFtcGxlOlxuXHQgICAgIGV4cG9ydCBkZWZhdWx0IGNvbm5lY3RBZHZhbmNlZCgoZGlzcGF0
Y2gsIG9wdGlvbnMpID0+IChzdGF0ZSwgcHJvcHMpID0+ICh7XG5cdCAgICAgIHRoaW5nOiBzdGF0
ZS50aGluZ3NbcHJvcHMudGhpbmdJZF0sXG5cdCAgICAgIHNhdmVUaGluZzogZmllbGRzID0+IGRp
c3BhdGNoKGFjdGlvbkNyZWF0b3JzLnNhdmVUaGluZyhwcm9wcy50aGluZ0lkLCBmaWVsZHMpKSxc
blx0ICAgIH0pKShZb3VyQ29tcG9uZW50KVxuXHQgICBBY2Nlc3MgdG8gZGlzcGF0Y2ggaXMgcHJv
dmlkZWQgdG8gdGhlIGZhY3Rvcnkgc28gc2VsZWN0b3JGYWN0b3JpZXMgY2FuIGJpbmQgYWN0aW9u
Q3JlYXRvcnNcblx0ICBvdXRzaWRlIG9mIHRoZWlyIHNlbGVjdG9yIGFzIGFuIG9wdGltaXphdGlv
bi4gT3B0aW9ucyBwYXNzZWQgdG8gY29ubmVjdEFkdmFuY2VkIGFyZSBwYXNzZWQgdG9cblx0ICB0
aGUgc2VsZWN0b3JGYWN0b3J5LCBhbG9uZyB3aXRoIGRpc3BsYXlOYW1lIGFuZCBXcmFwcGVkQ29t
cG9uZW50LCBhcyB0aGUgc2Vjb25kIGFyZ3VtZW50LlxuXHQgICBOb3RlIHRoYXQgc2VsZWN0b3JG
YWN0b3J5IGlzIHJlc3BvbnNpYmxlIGZvciBhbGwgY2FjaGluZy9tZW1vaXphdGlvbiBvZiBpbmJv
dW5kIGFuZCBvdXRib3VuZFxuXHQgIHByb3BzLiBEbyBub3QgdXNlIGNvbm5lY3RBZHZhbmNlZCBk
aXJlY3RseSB3aXRob3V0IG1lbW9pemluZyByZXN1bHRzIGJldHdlZW4gY2FsbHMgdG8geW91clxu
XHQgIHNlbGVjdG9yLCBvdGhlcndpc2UgdGhlIENvbm5lY3QgY29tcG9uZW50IHdpbGwgcmUtcmVu
ZGVyIG9uIGV2ZXJ5IHN0YXRlIG9yIHByb3BzIGNoYW5nZS5cblx0Ki9cblx0c2VsZWN0b3JGYWN0
b3J5KSB7XG5cdCAgdmFyIF9jb250ZXh0VHlwZXMsIF9jaGlsZENvbnRleHRUeXBlcztcblx0XG5c
dCAgdmFyIF9yZWYgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVu
ZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IHt9LFxuXHQgICAgICBfcmVmJGdldERpc3BsYXlOYW1l
ID0gX3JlZi5nZXREaXNwbGF5TmFtZSxcblx0ICAgICAgZ2V0RGlzcGxheU5hbWUgPSBfcmVmJGdl
dERpc3BsYXlOYW1lID09PSB1bmRlZmluZWQgPyBmdW5jdGlvbiAobmFtZSkge1xuXHQgICAgcmV0
dXJuICdDb25uZWN0QWR2YW5jZWQoJyArIG5hbWUgKyAnKSc7XG5cdCAgfSA6IF9yZWYkZ2V0RGlz
cGxheU5hbWUsXG5cdCAgICAgIF9yZWYkbWV0aG9kTmFtZSA9IF9yZWYubWV0aG9kTmFtZSxcblx0
ICAgICAgbWV0aG9kTmFtZSA9IF9yZWYkbWV0aG9kTmFtZSA9PT0gdW5kZWZpbmVkID8gJ2Nvbm5l
Y3RBZHZhbmNlZCcgOiBfcmVmJG1ldGhvZE5hbWUsXG5cdCAgICAgIF9yZWYkcmVuZGVyQ291bnRQ
cm9wID0gX3JlZi5yZW5kZXJDb3VudFByb3AsXG5cdCAgICAgIHJlbmRlckNvdW50UHJvcCA9IF9y
ZWYkcmVuZGVyQ291bnRQcm9wID09PSB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiBfcmVmJHJlbmRl
ckNvdW50UHJvcCxcblx0ICAgICAgX3JlZiRzaG91bGRIYW5kbGVTdGF0ID0gX3JlZi5zaG91bGRI
YW5kbGVTdGF0ZUNoYW5nZXMsXG5cdCAgICAgIHNob3VsZEhhbmRsZVN0YXRlQ2hhbmdlcyA9IF9y
ZWYkc2hvdWxkSGFuZGxlU3RhdCA9PT0gdW5kZWZpbmVkID8gdHJ1ZSA6IF9yZWYkc2hvdWxkSGFu
ZGxlU3RhdCxcblx0ICAgICAgX3JlZiRzdG9yZUtleSA9IF9yZWYuc3RvcmVLZXksXG5cdCAgICAg
IHN0b3JlS2V5ID0gX3JlZiRzdG9yZUtleSA9PT0gdW5kZWZpbmVkID8gJ3N0b3JlJyA6IF9yZWYk
c3RvcmVLZXksXG5cdCAgICAgIF9yZWYkd2l0aFJlZiA9IF9yZWYud2l0aFJlZixcblx0ICAgICAg
d2l0aFJlZiA9IF9yZWYkd2l0aFJlZiA9PT0gdW5kZWZpbmVkID8gZmFsc2UgOiBfcmVmJHdpdGhS
ZWYsXG5cdCAgICAgIGNvbm5lY3RPcHRpb25zID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKF9y
ZWYsIFsnZ2V0RGlzcGxheU5hbWUnLCAnbWV0aG9kTmFtZScsICdyZW5kZXJDb3VudFByb3AnLCAn
c2hvdWxkSGFuZGxlU3RhdGVDaGFuZ2VzJywgJ3N0b3JlS2V5JywgJ3dpdGhSZWYnXSk7XG5cdFxu
XHQgIHZhciBzdWJzY3JpcHRpb25LZXkgPSBzdG9yZUtleSArICdTdWJzY3JpcHRpb24nO1xuXHQg
IHZhciB2ZXJzaW9uID0gaG90UmVsb2FkaW5nVmVyc2lvbisrO1xuXHRcblx0ICB2YXIgY29udGV4
dFR5cGVzID0gKF9jb250ZXh0VHlwZXMgPSB7fSwgX2NvbnRleHRUeXBlc1tzdG9yZUtleV0gPSBf
UHJvcFR5cGVzLnN0b3JlU2hhcGUsIF9jb250ZXh0VHlwZXNbc3Vic2NyaXB0aW9uS2V5XSA9IF9Q
cm9wVHlwZXMuc3Vic2NyaXB0aW9uU2hhcGUsIF9jb250ZXh0VHlwZXMpO1xuXHQgIHZhciBjaGls
ZENvbnRleHRUeXBlcyA9IChfY2hpbGRDb250ZXh0VHlwZXMgPSB7fSwgX2NoaWxkQ29udGV4dFR5
cGVzW3N1YnNjcmlwdGlvbktleV0gPSBfUHJvcFR5cGVzLnN1YnNjcmlwdGlvblNoYXBlLCBfY2hp
bGRDb250ZXh0VHlwZXMpO1xuXHRcblx0ICByZXR1cm4gZnVuY3Rpb24gd3JhcFdpdGhDb25uZWN0
KFdyYXBwZWRDb21wb25lbnQpIHtcblx0ICAgICgwLCBfaW52YXJpYW50Mi5kZWZhdWx0KSh0eXBl
b2YgV3JhcHBlZENvbXBvbmVudCA9PSAnZnVuY3Rpb24nLCAnWW91IG11c3QgcGFzcyBhIGNvbXBv
bmVudCB0byB0aGUgZnVuY3Rpb24gcmV0dXJuZWQgYnkgJyArICgnY29ubmVjdC4gSW5zdGVhZCBy
ZWNlaXZlZCAnICsgSlNPTi5zdHJpbmdpZnkoV3JhcHBlZENvbXBvbmVudCkpKTtcblx0XG5cdCAg
ICB2YXIgd3JhcHBlZENvbXBvbmVudE5hbWUgPSBXcmFwcGVkQ29tcG9uZW50LmRpc3BsYXlOYW1l
IHx8IFdyYXBwZWRDb21wb25lbnQubmFtZSB8fCAnQ29tcG9uZW50Jztcblx0XG5cdCAgICB2YXIg
ZGlzcGxheU5hbWUgPSBnZXREaXNwbGF5TmFtZSh3cmFwcGVkQ29tcG9uZW50TmFtZSk7XG5cdFxu
XHQgICAgdmFyIHNlbGVjdG9yRmFjdG9yeU9wdGlvbnMgPSBfZXh0ZW5kcyh7fSwgY29ubmVjdE9w
dGlvbnMsIHtcblx0ICAgICAgZ2V0RGlzcGxheU5hbWU6IGdldERpc3BsYXlOYW1lLFxuXHQgICAg
ICBtZXRob2ROYW1lOiBtZXRob2ROYW1lLFxuXHQgICAgICByZW5kZXJDb3VudFByb3A6IHJlbmRl
ckNvdW50UHJvcCxcblx0ICAgICAgc2hvdWxkSGFuZGxlU3RhdGVDaGFuZ2VzOiBzaG91bGRIYW5k
bGVTdGF0ZUNoYW5nZXMsXG5cdCAgICAgIHN0b3JlS2V5OiBzdG9yZUtleSxcblx0ICAgICAgd2l0
aFJlZjogd2l0aFJlZixcblx0ICAgICAgZGlzcGxheU5hbWU6IGRpc3BsYXlOYW1lLFxuXHQgICAg
ICB3cmFwcGVkQ29tcG9uZW50TmFtZTogd3JhcHBlZENvbXBvbmVudE5hbWUsXG5cdCAgICAgIFdy
YXBwZWRDb21wb25lbnQ6IFdyYXBwZWRDb21wb25lbnRcblx0ICAgIH0pO1xuXHRcblx0ICAgIHZh
ciBDb25uZWN0ID0gZnVuY3Rpb24gKF9Db21wb25lbnQpIHtcblx0ICAgICAgX2luaGVyaXRzKENv
bm5lY3QsIF9Db21wb25lbnQpO1xuXHRcblx0ICAgICAgZnVuY3Rpb24gQ29ubmVjdChwcm9wcywg
Y29udGV4dCkge1xuXHQgICAgICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBDb25uZWN0KTtcblx0
XG5cdCAgICAgICAgdmFyIF90aGlzID0gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4odGhpcywg
X0NvbXBvbmVudC5jYWxsKHRoaXMsIHByb3BzLCBjb250ZXh0KSk7XG5cdFxuXHQgICAgICAgIF90
aGlzLnZlcnNpb24gPSB2ZXJzaW9uO1xuXHQgICAgICAgIF90aGlzLnN0YXRlID0ge307XG5cdCAg
ICAgICAgX3RoaXMucmVuZGVyQ291bnQgPSAwO1xuXHQgICAgICAgIF90aGlzLnN0b3JlID0gcHJv
cHNbc3RvcmVLZXldIHx8IGNvbnRleHRbc3RvcmVLZXldO1xuXHQgICAgICAgIF90aGlzLnByb3Bz
TW9kZSA9IEJvb2xlYW4ocHJvcHNbc3RvcmVLZXldKTtcblx0ICAgICAgICBfdGhpcy5zZXRXcmFw
cGVkSW5zdGFuY2UgPSBfdGhpcy5zZXRXcmFwcGVkSW5zdGFuY2UuYmluZChfdGhpcyk7XG5cdFxu
XHQgICAgICAgICgwLCBfaW52YXJpYW50Mi5kZWZhdWx0KShfdGhpcy5zdG9yZSwgJ0NvdWxkIG5v
dCBmaW5kIFwiJyArIHN0b3JlS2V5ICsgJ1wiIGluIGVpdGhlciB0aGUgY29udGV4dCBvciBwcm9w
cyBvZiAnICsgKCdcIicgKyBkaXNwbGF5TmFtZSArICdcIi4gRWl0aGVyIHdyYXAgdGhlIHJvb3Qg
Y29tcG9uZW50IGluIGEgPFByb3ZpZGVyPiwgJykgKyAoJ29yIGV4cGxpY2l0bHkgcGFzcyBcIicg
KyBzdG9yZUtleSArICdcIiBhcyBhIHByb3AgdG8gXCInICsgZGlzcGxheU5hbWUgKyAnXCIuJykp
O1xuXHRcblx0ICAgICAgICBfdGhpcy5pbml0U2VsZWN0b3IoKTtcblx0ICAgICAgICBfdGhpcy5p
bml0U3Vic2NyaXB0aW9uKCk7XG5cdCAgICAgICAgcmV0dXJuIF90aGlzO1xuXHQgICAgICB9XG5c
dFxuXHQgICAgICBDb25uZWN0LnByb3RvdHlwZS5nZXRDaGlsZENvbnRleHQgPSBmdW5jdGlvbiBn
ZXRDaGlsZENvbnRleHQoKSB7XG5cdCAgICAgICAgdmFyIF9yZWYyO1xuXHRcblx0ICAgICAgICAv
LyBJZiB0aGlzIGNvbXBvbmVudCByZWNlaXZlZCBzdG9yZSBmcm9tIHByb3BzLCBpdHMgc3Vic2Ny
aXB0aW9uIHNob3VsZCBiZSB0cmFuc3BhcmVudFxuXHQgICAgICAgIC8vIHRvIGFueSBkZXNjZW5k
YW50cyByZWNlaXZpbmcgc3RvcmUrc3Vic2NyaXB0aW9uIGZyb20gY29udGV4dDsgaXQgcGFzc2Vz
IGFsb25nXG5cdCAgICAgICAgLy8gc3Vic2NyaXB0aW9uIHBhc3NlZCB0byBpdC4gT3RoZXJ3aXNl
LCBpdCBzaGFkb3dzIHRoZSBwYXJlbnQgc3Vic2NyaXB0aW9uLCB3aGljaCBhbGxvd3Ncblx0ICAg
ICAgICAvLyBDb25uZWN0IHRvIGNvbnRyb2wgb3JkZXJpbmcgb2Ygbm90aWZpY2F0aW9ucyB0byBm
bG93IHRvcC1kb3duLlxuXHQgICAgICAgIHZhciBzdWJzY3JpcHRpb24gPSB0aGlzLnByb3BzTW9k
ZSA/IG51bGwgOiB0aGlzLnN1YnNjcmlwdGlvbjtcblx0ICAgICAgICByZXR1cm4gX3JlZjIgPSB7
fSwgX3JlZjJbc3Vic2NyaXB0aW9uS2V5XSA9IHN1YnNjcmlwdGlvbiB8fCB0aGlzLmNvbnRleHRb
c3Vic2NyaXB0aW9uS2V5XSwgX3JlZjI7XG5cdCAgICAgIH07XG5cdFxuXHQgICAgICBDb25uZWN0
LnByb3RvdHlwZS5jb21wb25lbnREaWRNb3VudCA9IGZ1bmN0aW9uIGNvbXBvbmVudERpZE1vdW50
KCkge1xuXHQgICAgICAgIGlmICghc2hvdWxkSGFuZGxlU3RhdGVDaGFuZ2VzKSByZXR1cm47XG5c
dFxuXHQgICAgICAgIC8vIGNvbXBvbmVudFdpbGxNb3VudCBmaXJlcyBkdXJpbmcgc2VydmVyIHNp
ZGUgcmVuZGVyaW5nLCBidXQgY29tcG9uZW50RGlkTW91bnQgYW5kXG5cdCAgICAgICAgLy8gY29t
cG9uZW50V2lsbFVubW91bnQgZG8gbm90LiBCZWNhdXNlIG9mIHRoaXMsIHRyeVN1YnNjcmliZSBo
YXBwZW5zIGR1cmluZyAuLi5kaWRNb3VudC5cblx0ICAgICAgICAvLyBPdGhlcndpc2UsIHVuc3Vi
c2NyaXB0aW9uIHdvdWxkIG5ldmVyIHRha2UgcGxhY2UgZHVyaW5nIFNTUiwgY2F1c2luZyBhIG1l
bW9yeSBsZWFrLlxuXHQgICAgICAgIC8vIFRvIGhhbmRsZSB0aGUgY2FzZSB3aGVyZSBhIGNoaWxk
IGNvbXBvbmVudCBtYXkgaGF2ZSB0cmlnZ2VyZWQgYSBzdGF0ZSBjaGFuZ2UgYnlcblx0ICAgICAg
ICAvLyBkaXNwYXRjaGluZyBhbiBhY3Rpb24gaW4gaXRzIGNvbXBvbmVudFdpbGxNb3VudCwgd2Ug
aGF2ZSB0byByZS1ydW4gdGhlIHNlbGVjdCBhbmQgbWF5YmVcblx0ICAgICAgICAvLyByZS1yZW5k
ZXIuXG5cdCAgICAgICAgdGhpcy5zdWJzY3JpcHRpb24udHJ5U3Vic2NyaWJlKCk7XG5cdCAgICAg
ICAgdGhpcy5zZWxlY3Rvci5ydW4odGhpcy5wcm9wcyk7XG5cdCAgICAgICAgaWYgKHRoaXMuc2Vs
ZWN0b3Iuc2hvdWxkQ29tcG9uZW50VXBkYXRlKSB0aGlzLmZvcmNlVXBkYXRlKCk7XG5cdCAgICAg
IH07XG5cdFxuXHQgICAgICBDb25uZWN0LnByb3RvdHlwZS5jb21wb25lbnRXaWxsUmVjZWl2ZVBy
b3BzID0gZnVuY3Rpb24gY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyhuZXh0UHJvcHMpIHtcblx0
ICAgICAgICB0aGlzLnNlbGVjdG9yLnJ1bihuZXh0UHJvcHMpO1xuXHQgICAgICB9O1xuXHRcblx0
ICAgICAgQ29ubmVjdC5wcm90b3R5cGUuc2hvdWxkQ29tcG9uZW50VXBkYXRlID0gZnVuY3Rpb24g
c2hvdWxkQ29tcG9uZW50VXBkYXRlKCkge1xuXHQgICAgICAgIHJldHVybiB0aGlzLnNlbGVjdG9y
LnNob3VsZENvbXBvbmVudFVwZGF0ZTtcblx0ICAgICAgfTtcblx0XG5cdCAgICAgIENvbm5lY3Qu
cHJvdG90eXBlLmNvbXBvbmVudFdpbGxVbm1vdW50ID0gZnVuY3Rpb24gY29tcG9uZW50V2lsbFVu
bW91bnQoKSB7XG5cdCAgICAgICAgaWYgKHRoaXMuc3Vic2NyaXB0aW9uKSB0aGlzLnN1YnNjcmlw
dGlvbi50cnlVbnN1YnNjcmliZSgpO1xuXHQgICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uID0gbnVs
bDtcblx0ICAgICAgICB0aGlzLm5vdGlmeU5lc3RlZFN1YnMgPSBub29wO1xuXHQgICAgICAgIHRo
aXMuc3RvcmUgPSBudWxsO1xuXHQgICAgICAgIHRoaXMuc2VsZWN0b3IucnVuID0gbm9vcDtcblx0
ICAgICAgICB0aGlzLnNlbGVjdG9yLnNob3VsZENvbXBvbmVudFVwZGF0ZSA9IGZhbHNlO1xuXHQg
ICAgICB9O1xuXHRcblx0ICAgICAgQ29ubmVjdC5wcm90b3R5cGUuZ2V0V3JhcHBlZEluc3RhbmNl
ID0gZnVuY3Rpb24gZ2V0V3JhcHBlZEluc3RhbmNlKCkge1xuXHQgICAgICAgICgwLCBfaW52YXJp
YW50Mi5kZWZhdWx0KSh3aXRoUmVmLCAnVG8gYWNjZXNzIHRoZSB3cmFwcGVkIGluc3RhbmNlLCB5
b3UgbmVlZCB0byBzcGVjaWZ5ICcgKyAoJ3sgd2l0aFJlZjogdHJ1ZSB9IGluIHRoZSBvcHRpb25z
IGFyZ3VtZW50IG9mIHRoZSAnICsgbWV0aG9kTmFtZSArICcoKSBjYWxsLicpKTtcblx0ICAgICAg
ICByZXR1cm4gdGhpcy53cmFwcGVkSW5zdGFuY2U7XG5cdCAgICAgIH07XG5cdFxuXHQgICAgICBD
b25uZWN0LnByb3RvdHlwZS5zZXRXcmFwcGVkSW5zdGFuY2UgPSBmdW5jdGlvbiBzZXRXcmFwcGVk
SW5zdGFuY2UocmVmKSB7XG5cdCAgICAgICAgdGhpcy53cmFwcGVkSW5zdGFuY2UgPSByZWY7XG5c
dCAgICAgIH07XG5cdFxuXHQgICAgICBDb25uZWN0LnByb3RvdHlwZS5pbml0U2VsZWN0b3IgPSBm
dW5jdGlvbiBpbml0U2VsZWN0b3IoKSB7XG5cdCAgICAgICAgdmFyIHNvdXJjZVNlbGVjdG9yID0g
c2VsZWN0b3JGYWN0b3J5KHRoaXMuc3RvcmUuZGlzcGF0Y2gsIHNlbGVjdG9yRmFjdG9yeU9wdGlv
bnMpO1xuXHQgICAgICAgIHRoaXMuc2VsZWN0b3IgPSBtYWtlU2VsZWN0b3JTdGF0ZWZ1bChzb3Vy
Y2VTZWxlY3RvciwgdGhpcy5zdG9yZSk7XG5cdCAgICAgICAgdGhpcy5zZWxlY3Rvci5ydW4odGhp
cy5wcm9wcyk7XG5cdCAgICAgIH07XG5cdFxuXHQgICAgICBDb25uZWN0LnByb3RvdHlwZS5pbml0
U3Vic2NyaXB0aW9uID0gZnVuY3Rpb24gaW5pdFN1YnNjcmlwdGlvbigpIHtcblx0ICAgICAgICBp
ZiAoIXNob3VsZEhhbmRsZVN0YXRlQ2hhbmdlcykgcmV0dXJuO1xuXHRcblx0ICAgICAgICAvLyBw
YXJlbnRTdWIncyBzb3VyY2Ugc2hvdWxkIG1hdGNoIHdoZXJlIHN0b3JlIGNhbWUgZnJvbTogcHJv
cHMgdnMuIGNvbnRleHQuIEEgY29tcG9uZW50XG5cdCAgICAgICAgLy8gY29ubmVjdGVkIHRvIHRo
ZSBzdG9yZSB2aWEgcHJvcHMgc2hvdWxkbid0IHVzZSBzdWJzY3JpcHRpb24gZnJvbSBjb250ZXh0
LCBvciB2aWNlIHZlcnNhLlxuXHQgICAgICAgIHZhciBwYXJlbnRTdWIgPSAodGhpcy5wcm9wc01v
ZGUgPyB0aGlzLnByb3BzIDogdGhpcy5jb250ZXh0KVtzdWJzY3JpcHRpb25LZXldO1xuXHQgICAg
ICAgIHRoaXMuc3Vic2NyaXB0aW9uID0gbmV3IF9TdWJzY3JpcHRpb24yLmRlZmF1bHQodGhpcy5z
dG9yZSwgcGFyZW50U3ViLCB0aGlzLm9uU3RhdGVDaGFuZ2UuYmluZCh0aGlzKSk7XG5cdFxuXHQg
ICAgICAgIC8vIGBub3RpZnlOZXN0ZWRTdWJzYCBpcyBkdXBsaWNhdGVkIHRvIGhhbmRsZSB0aGUg
Y2FzZSB3aGVyZSB0aGUgY29tcG9uZW50IGlzICB1bm1vdW50ZWQgaW5cblx0ICAgICAgICAvLyB0
aGUgbWlkZGxlIG9mIHRoZSBub3RpZmljYXRpb24gbG9vcCwgd2hlcmUgYHRoaXMuc3Vic2NyaXB0
aW9uYCB3aWxsIHRoZW4gYmUgbnVsbC4gQW5cblx0ICAgICAgICAvLyBleHRyYSBudWxsIGNoZWNr
IGV2ZXJ5IGNoYW5nZSBjYW4gYmUgYXZvaWRlZCBieSBjb3B5aW5nIHRoZSBtZXRob2Qgb250byBg
dGhpc2AgYW5kIHRoZW5cblx0ICAgICAgICAvLyByZXBsYWNpbmcgaXQgd2l0aCBhIG5vLW9wIG9u
IHVubW91bnQuIFRoaXMgY2FuIHByb2JhYmx5IGJlIGF2b2lkZWQgaWYgU3Vic2NyaXB0aW9uJ3Nc
blx0ICAgICAgICAvLyBsaXN0ZW5lcnMgbG9naWMgaXMgY2hhbmdlZCB0byBub3QgY2FsbCBsaXN0
ZW5lcnMgdGhhdCBoYXZlIGJlZW4gdW5zdWJzY3JpYmVkIGluIHRoZVxuXHQgICAgICAgIC8vIG1p
ZGRsZSBvZiB0aGUgbm90aWZpY2F0aW9uIGxvb3AuXG5cdCAgICAgICAgdGhpcy5ub3RpZnlOZXN0
ZWRTdWJzID0gdGhpcy5zdWJzY3JpcHRpb24ubm90aWZ5TmVzdGVkU3Vicy5iaW5kKHRoaXMuc3Vi
c2NyaXB0aW9uKTtcblx0ICAgICAgfTtcblx0XG5cdCAgICAgIENvbm5lY3QucHJvdG90eXBlLm9u
U3RhdGVDaGFuZ2UgPSBmdW5jdGlvbiBvblN0YXRlQ2hhbmdlKCkge1xuXHQgICAgICAgIHRoaXMu
c2VsZWN0b3IucnVuKHRoaXMucHJvcHMpO1xuXHRcblx0ICAgICAgICBpZiAoIXRoaXMuc2VsZWN0
b3Iuc2hvdWxkQ29tcG9uZW50VXBkYXRlKSB7XG5cdCAgICAgICAgICB0aGlzLm5vdGlmeU5lc3Rl
ZFN1YnMoKTtcblx0ICAgICAgICB9IGVsc2Uge1xuXHQgICAgICAgICAgdGhpcy5jb21wb25lbnRE
aWRVcGRhdGUgPSB0aGlzLm5vdGlmeU5lc3RlZFN1YnNPbkNvbXBvbmVudERpZFVwZGF0ZTtcblx0
ICAgICAgICAgIHRoaXMuc2V0U3RhdGUoZHVtbXlTdGF0ZSk7XG5cdCAgICAgICAgfVxuXHQgICAg
ICB9O1xuXHRcblx0ICAgICAgQ29ubmVjdC5wcm90b3R5cGUubm90aWZ5TmVzdGVkU3Vic09uQ29t
cG9uZW50RGlkVXBkYXRlID0gZnVuY3Rpb24gbm90aWZ5TmVzdGVkU3Vic09uQ29tcG9uZW50RGlk
VXBkYXRlKCkge1xuXHQgICAgICAgIC8vIGBjb21wb25lbnREaWRVcGRhdGVgIGlzIGNvbmRpdGlv
bmFsbHkgaW1wbGVtZW50ZWQgd2hlbiBgb25TdGF0ZUNoYW5nZWAgZGV0ZXJtaW5lcyBpdFxuXHQg
ICAgICAgIC8vIG5lZWRzIHRvIG5vdGlmeSBuZXN0ZWQgc3Vicy4gT25jZSBjYWxsZWQsIGl0IHVu
aW1wbGVtZW50cyBpdHNlbGYgdW50aWwgZnVydGhlciBzdGF0ZVxuXHQgICAgICAgIC8vIGNoYW5n
ZXMgb2NjdXIuIERvaW5nIGl0IHRoaXMgd2F5IHZzIGhhdmluZyBhIHBlcm1hbmVudCBgY29tcG9u
ZW50RGlkVXBkYXRlYCB0aGF0IGRvZXNcblx0ICAgICAgICAvLyBhIGJvb2xlYW4gY2hlY2sgZXZl
cnkgdGltZSBhdm9pZHMgYW4gZXh0cmEgbWV0aG9kIGNhbGwgbW9zdCBvZiB0aGUgdGltZSwgcmVz
dWx0aW5nXG5cdCAgICAgICAgLy8gaW4gc29tZSBwZXJmIGJvb3N0LlxuXHQgICAgICAgIHRoaXMu
Y29tcG9uZW50RGlkVXBkYXRlID0gdW5kZWZpbmVkO1xuXHQgICAgICAgIHRoaXMubm90aWZ5TmVz
dGVkU3VicygpO1xuXHQgICAgICB9O1xuXHRcblx0ICAgICAgQ29ubmVjdC5wcm90b3R5cGUuaXNT
dWJzY3JpYmVkID0gZnVuY3Rpb24gaXNTdWJzY3JpYmVkKCkge1xuXHQgICAgICAgIHJldHVybiBC
b29sZWFuKHRoaXMuc3Vic2NyaXB0aW9uKSAmJiB0aGlzLnN1YnNjcmlwdGlvbi5pc1N1YnNjcmli
ZWQoKTtcblx0ICAgICAgfTtcblx0XG5cdCAgICAgIENvbm5lY3QucHJvdG90eXBlLmFkZEV4dHJh
UHJvcHMgPSBmdW5jdGlvbiBhZGRFeHRyYVByb3BzKHByb3BzKSB7XG5cdCAgICAgICAgaWYgKCF3
aXRoUmVmICYmICFyZW5kZXJDb3VudFByb3AgJiYgISh0aGlzLnByb3BzTW9kZSAmJiB0aGlzLnN1
YnNjcmlwdGlvbikpIHJldHVybiBwcm9wcztcblx0ICAgICAgICAvLyBtYWtlIGEgc2hhbGxvdyBj
b3B5IHNvIHRoYXQgZmllbGRzIGFkZGVkIGRvbid0IGxlYWsgdG8gdGhlIG9yaWdpbmFsIHNlbGVj
dG9yLlxuXHQgICAgICAgIC8vIHRoaXMgaXMgZXNwZWNpYWxseSBpbXBvcnRhbnQgZm9yICdyZWYn
IHNpbmNlIHRoYXQncyBhIHJlZmVyZW5jZSBiYWNrIHRvIHRoZSBjb21wb25lbnRcblx0ICAgICAg
ICAvLyBpbnN0YW5jZS4gYSBzaW5nbGV0b24gbWVtb2l6ZWQgc2VsZWN0b3Igd291bGQgdGhlbiBi
ZSBob2xkaW5nIGEgcmVmZXJlbmNlIHRvIHRoZVxuXHQgICAgICAgIC8vIGluc3RhbmNlLCBwcmV2
ZW50aW5nIHRoZSBpbnN0YW5jZSBmcm9tIGJlaW5nIGdhcmJhZ2UgY29sbGVjdGVkLCBhbmQgdGhh
dCB3b3VsZCBiZSBiYWRcblx0ICAgICAgICB2YXIgd2l0aEV4dHJhcyA9IF9leHRlbmRzKHt9LCBw
cm9wcyk7XG5cdCAgICAgICAgaWYgKHdpdGhSZWYpIHdpdGhFeHRyYXMucmVmID0gdGhpcy5zZXRX
cmFwcGVkSW5zdGFuY2U7XG5cdCAgICAgICAgaWYgKHJlbmRlckNvdW50UHJvcCkgd2l0aEV4dHJh
c1tyZW5kZXJDb3VudFByb3BdID0gdGhpcy5yZW5kZXJDb3VudCsrO1xuXHQgICAgICAgIGlmICh0
aGlzLnByb3BzTW9kZSAmJiB0aGlzLnN1YnNjcmlwdGlvbikgd2l0aEV4dHJhc1tzdWJzY3JpcHRp
b25LZXldID0gdGhpcy5zdWJzY3JpcHRpb247XG5cdCAgICAgICAgcmV0dXJuIHdpdGhFeHRyYXM7
XG5cdCAgICAgIH07XG5cdFxuXHQgICAgICBDb25uZWN0LnByb3RvdHlwZS5yZW5kZXIgPSBmdW5j
dGlvbiByZW5kZXIoKSB7XG5cdCAgICAgICAgdmFyIHNlbGVjdG9yID0gdGhpcy5zZWxlY3Rvcjtc
blx0ICAgICAgICBzZWxlY3Rvci5zaG91bGRDb21wb25lbnRVcGRhdGUgPSBmYWxzZTtcblx0XG5c
dCAgICAgICAgaWYgKHNlbGVjdG9yLmVycm9yKSB7XG5cdCAgICAgICAgICB0aHJvdyBzZWxlY3Rv
ci5lcnJvcjtcblx0ICAgICAgICB9IGVsc2Uge1xuXHQgICAgICAgICAgcmV0dXJuICgwLCBfcmVh
Y3QuY3JlYXRlRWxlbWVudCkoV3JhcHBlZENvbXBvbmVudCwgdGhpcy5hZGRFeHRyYVByb3BzKHNl
bGVjdG9yLnByb3BzKSk7XG5cdCAgICAgICAgfVxuXHQgICAgICB9O1xuXHRcblx0ICAgICAgcmV0
dXJuIENvbm5lY3Q7XG5cdCAgICB9KF9yZWFjdC5Db21wb25lbnQpO1xuXHRcblx0ICAgIENvbm5l
Y3QuV3JhcHBlZENvbXBvbmVudCA9IFdyYXBwZWRDb21wb25lbnQ7XG5cdCAgICBDb25uZWN0LmRp
c3BsYXlOYW1lID0gZGlzcGxheU5hbWU7XG5cdCAgICBDb25uZWN0LmNoaWxkQ29udGV4dFR5cGVz
ID0gY2hpbGRDb250ZXh0VHlwZXM7XG5cdCAgICBDb25uZWN0LmNvbnRleHRUeXBlcyA9IGNvbnRl
eHRUeXBlcztcblx0ICAgIENvbm5lY3QucHJvcFR5cGVzID0gY29udGV4dFR5cGVzO1xuXHRcblx0
ICAgIGlmIChmYWxzZSkge1xuXHQgICAgICBDb25uZWN0LnByb3RvdHlwZS5jb21wb25lbnRXaWxs
VXBkYXRlID0gZnVuY3Rpb24gY29tcG9uZW50V2lsbFVwZGF0ZSgpIHtcblx0ICAgICAgICB2YXIg
X3RoaXMyID0gdGhpcztcblx0XG5cdCAgICAgICAgLy8gV2UgYXJlIGhvdCByZWxvYWRpbmchXG5c
dCAgICAgICAgaWYgKHRoaXMudmVyc2lvbiAhPT0gdmVyc2lvbikge1xuXHQgICAgICAgICAgdGhp
cy52ZXJzaW9uID0gdmVyc2lvbjtcblx0ICAgICAgICAgIHRoaXMuaW5pdFNlbGVjdG9yKCk7XG5c
dFxuXHQgICAgICAgICAgLy8gSWYgYW55IGNvbm5lY3RlZCBkZXNjZW5kYW50cyBkb24ndCBob3Qg
cmVsb2FkIChhbmQgcmVzdWJzY3JpYmUgaW4gdGhlIHByb2Nlc3MpLCB0aGVpclxuXHQgICAgICAg
ICAgLy8gbGlzdGVuZXJzIHdpbGwgYmUgbG9zdCB3aGVuIHdlIHVuc3Vic2NyaWJlLiBVbmZvcnR1
bmF0ZWx5LCBieSBjb3B5aW5nIG92ZXIgYWxsXG5cdCAgICAgICAgICAvLyBsaXN0ZW5lcnMsIHRo
aXMgZG9lcyBtZWFuIHRoYXQgdGhlIG9sZCB2ZXJzaW9ucyBvZiBjb25uZWN0ZWQgZGVzY2VuZGFu
dHMgd2lsbCBzdGlsbCBiZVxuXHQgICAgICAgICAgLy8gbm90aWZpZWQgb2Ygc3RhdGUgY2hhbmdl
czsgaG93ZXZlciwgdGhlaXIgb25TdGF0ZUNoYW5nZSBmdW5jdGlvbiBpcyBhIG5vLW9wIHNvIHRo
aXNcblx0ICAgICAgICAgIC8vIGlzbid0IGEgaHVnZSBkZWFsLlxuXHQgICAgICAgICAgdmFyIG9s
ZExpc3RlbmVycyA9IFtdO1xuXHRcblx0ICAgICAgICAgIGlmICh0aGlzLnN1YnNjcmlwdGlvbikg
e1xuXHQgICAgICAgICAgICBvbGRMaXN0ZW5lcnMgPSB0aGlzLnN1YnNjcmlwdGlvbi5saXN0ZW5l
cnMuZ2V0KCk7XG5cdCAgICAgICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uLnRyeVVuc3Vic2NyaWJl
KCk7XG5cdCAgICAgICAgICB9XG5cdCAgICAgICAgICB0aGlzLmluaXRTdWJzY3JpcHRpb24oKTtc
blx0ICAgICAgICAgIGlmIChzaG91bGRIYW5kbGVTdGF0ZUNoYW5nZXMpIHtcblx0ICAgICAgICAg
ICAgdGhpcy5zdWJzY3JpcHRpb24udHJ5U3Vic2NyaWJlKCk7XG5cdCAgICAgICAgICAgIG9sZExp
c3RlbmVycy5mb3JFYWNoKGZ1bmN0aW9uIChsaXN0ZW5lcikge1xuXHQgICAgICAgICAgICAgIHJl
dHVybiBfdGhpczIuc3Vic2NyaXB0aW9uLmxpc3RlbmVycy5zdWJzY3JpYmUobGlzdGVuZXIpO1xu
XHQgICAgICAgICAgICB9KTtcblx0ICAgICAgICAgIH1cblx0ICAgICAgICB9XG5cdCAgICAgIH07
XG5cdCAgICB9XG5cdFxuXHQgICAgcmV0dXJuICgwLCBfaG9pc3ROb25SZWFjdFN0YXRpY3MyLmRl
ZmF1bHQpKENvbm5lY3QsIFdyYXBwZWRDb21wb25lbnQpO1xuXHQgIH07XG5cdH1cblxuLyoqKi8g
fSxcbi8qIDgwICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19y
ZXF1aXJlX18pIHtcblxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHRleHBvcnRzLl9fZXNNb2R1bGUg
PSB0cnVlO1xuXHRleHBvcnRzLndyYXBNYXBUb1Byb3BzQ29uc3RhbnQgPSB3cmFwTWFwVG9Qcm9w
c0NvbnN0YW50O1xuXHRleHBvcnRzLmdldERlcGVuZHNPbk93blByb3BzID0gZ2V0RGVwZW5kc09u
T3duUHJvcHM7XG5cdGV4cG9ydHMud3JhcE1hcFRvUHJvcHNGdW5jID0gd3JhcE1hcFRvUHJvcHNG
dW5jO1xuXHRcblx0dmFyIF92ZXJpZnlQbGFpbk9iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18o
ODMpO1xuXHRcblx0dmFyIF92ZXJpZnlQbGFpbk9iamVjdDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZh
dWx0KF92ZXJpZnlQbGFpbk9iamVjdCk7XG5cdFxuXHRmdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVE
ZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZh
dWx0OiBvYmogfTsgfVxuXHRcblx0ZnVuY3Rpb24gd3JhcE1hcFRvUHJvcHNDb25zdGFudChnZXRD
b25zdGFudCkge1xuXHQgIHJldHVybiBmdW5jdGlvbiBpbml0Q29uc3RhbnRTZWxlY3RvcihkaXNw
YXRjaCwgb3B0aW9ucykge1xuXHQgICAgdmFyIGNvbnN0YW50ID0gZ2V0Q29uc3RhbnQoZGlzcGF0
Y2gsIG9wdGlvbnMpO1xuXHRcblx0ICAgIGZ1bmN0aW9uIGNvbnN0YW50U2VsZWN0b3IoKSB7XG5c
dCAgICAgIHJldHVybiBjb25zdGFudDtcblx0ICAgIH1cblx0ICAgIGNvbnN0YW50U2VsZWN0b3Iu
ZGVwZW5kc09uT3duUHJvcHMgPSBmYWxzZTtcblx0ICAgIHJldHVybiBjb25zdGFudFNlbGVjdG9y
O1xuXHQgIH07XG5cdH1cblx0XG5cdC8vIGRlcGVuZHNPbk93blByb3BzIGlzIHVzZWQgYnkgY3Jl
YXRlTWFwVG9Qcm9wc1Byb3h5IHRvIGRldGVybWluZSB3aGV0aGVyIHRvIHBhc3MgcHJvcHMgYXMg
YXJnc1xuXHQvLyB0byB0aGUgbWFwVG9Qcm9wcyBmdW5jdGlvbiBiZWluZyB3cmFwcGVkLiBJdCBp
cyBhbHNvIHVzZWQgYnkgbWFrZVB1cmVQcm9wc1NlbGVjdG9yIHRvIGRldGVybWluZVxuXHQvLyB3
aGV0aGVyIG1hcFRvUHJvcHMgbmVlZHMgdG8gYmUgaW52b2tlZCB3aGVuIHByb3BzIGhhdmUgY2hh
bmdlZC5cblx0Ly8gXG5cdC8vIEEgbGVuZ3RoIG9mIG9uZSBzaWduYWxzIHRoYXQgbWFwVG9Qcm9w
cyBkb2VzIG5vdCBkZXBlbmQgb24gcHJvcHMgZnJvbSB0aGUgcGFyZW50IGNvbXBvbmVudC5cblx0
Ly8gQSBsZW5ndGggb2YgemVybyBpcyBhc3N1bWVkIHRvIG1lYW4gbWFwVG9Qcm9wcyBpcyBnZXR0
aW5nIGFyZ3MgdmlhIGFyZ3VtZW50cyBvciAuLi5hcmdzIGFuZFxuXHQvLyB0aGVyZWZvcmUgbm90
IHJlcG9ydGluZyBpdHMgbGVuZ3RoIGFjY3VyYXRlbHkuLlxuXHRmdW5jdGlvbiBnZXREZXBlbmRz
T25Pd25Qcm9wcyhtYXBUb1Byb3BzKSB7XG5cdCAgcmV0dXJuIG1hcFRvUHJvcHMuZGVwZW5kc09u
T3duUHJvcHMgIT09IG51bGwgJiYgbWFwVG9Qcm9wcy5kZXBlbmRzT25Pd25Qcm9wcyAhPT0gdW5k
ZWZpbmVkID8gQm9vbGVhbihtYXBUb1Byb3BzLmRlcGVuZHNPbk93blByb3BzKSA6IG1hcFRvUHJv
cHMubGVuZ3RoICE9PSAxO1xuXHR9XG5cdFxuXHQvLyBVc2VkIGJ5IHdoZW5NYXBTdGF0ZVRvUHJv
cHNJc0Z1bmN0aW9uIGFuZCB3aGVuTWFwRGlzcGF0Y2hUb1Byb3BzSXNGdW5jdGlvbixcblx0Ly8g
dGhpcyBmdW5jdGlvbiB3cmFwcyBtYXBUb1Byb3BzIGluIGEgcHJveHkgZnVuY3Rpb24gd2hpY2gg
ZG9lcyBzZXZlcmFsIHRoaW5nczpcblx0Ly8gXG5cdC8vICAqIERldGVjdHMgd2hldGhlciB0aGUg
bWFwVG9Qcm9wcyBmdW5jdGlvbiBiZWluZyBjYWxsZWQgZGVwZW5kcyBvbiBwcm9wcywgd2hpY2hc
blx0Ly8gICAgaXMgdXNlZCBieSBzZWxlY3RvckZhY3RvcnkgdG8gZGVjaWRlIGlmIGl0IHNob3Vs
ZCByZWludm9rZSBvbiBwcm9wcyBjaGFuZ2VzLlxuXHQvLyAgICBcblx0Ly8gICogT24gZmlyc3Qg
Y2FsbCwgaGFuZGxlcyBtYXBUb1Byb3BzIGlmIHJldHVybnMgYW5vdGhlciBmdW5jdGlvbiwgYW5k
IHRyZWF0cyB0aGF0XG5cdC8vICAgIG5ldyBmdW5jdGlvbiBhcyB0aGUgdHJ1ZSBtYXBUb1Byb3Bz
IGZvciBzdWJzZXF1ZW50IGNhbGxzLlxuXHQvLyAgICBcblx0Ly8gICogT24gZmlyc3QgY2FsbCwg
dmVyaWZpZXMgdGhlIGZpcnN0IHJlc3VsdCBpcyBhIHBsYWluIG9iamVjdCwgaW4gb3JkZXIgdG8g
d2FyblxuXHQvLyAgICB0aGUgZGV2ZWxvcGVyIHRoYXQgdGhlaXIgbWFwVG9Qcm9wcyBmdW5jdGlv
biBpcyBub3QgcmV0dXJuaW5nIGEgdmFsaWQgcmVzdWx0LlxuXHQvLyAgICBcblx0ZnVuY3Rpb24g
d3JhcE1hcFRvUHJvcHNGdW5jKG1hcFRvUHJvcHMsIG1ldGhvZE5hbWUpIHtcblx0ICByZXR1cm4g
ZnVuY3Rpb24gaW5pdFByb3h5U2VsZWN0b3IoZGlzcGF0Y2gsIF9yZWYpIHtcblx0ICAgIHZhciBk
aXNwbGF5TmFtZSA9IF9yZWYuZGlzcGxheU5hbWU7XG5cdFxuXHQgICAgdmFyIHByb3h5ID0gZnVu
Y3Rpb24gbWFwVG9Qcm9wc1Byb3h5KHN0YXRlT3JEaXNwYXRjaCwgb3duUHJvcHMpIHtcblx0ICAg
ICAgcmV0dXJuIHByb3h5LmRlcGVuZHNPbk93blByb3BzID8gcHJveHkubWFwVG9Qcm9wcyhzdGF0
ZU9yRGlzcGF0Y2gsIG93blByb3BzKSA6IHByb3h5Lm1hcFRvUHJvcHMoc3RhdGVPckRpc3BhdGNo
KTtcblx0ICAgIH07XG5cdFxuXHQgICAgLy8gYWxsb3cgZGV0ZWN0RmFjdG9yeUFuZFZlcmlmeSB0
byBnZXQgb3duUHJvcHNcblx0ICAgIHByb3h5LmRlcGVuZHNPbk93blByb3BzID0gdHJ1ZTtcblx0
XG5cdCAgICBwcm94eS5tYXBUb1Byb3BzID0gZnVuY3Rpb24gZGV0ZWN0RmFjdG9yeUFuZFZlcmlm
eShzdGF0ZU9yRGlzcGF0Y2gsIG93blByb3BzKSB7XG5cdCAgICAgIHByb3h5Lm1hcFRvUHJvcHMg
PSBtYXBUb1Byb3BzO1xuXHQgICAgICBwcm94eS5kZXBlbmRzT25Pd25Qcm9wcyA9IGdldERlcGVu
ZHNPbk93blByb3BzKG1hcFRvUHJvcHMpO1xuXHQgICAgICB2YXIgcHJvcHMgPSBwcm94eShzdGF0
ZU9yRGlzcGF0Y2gsIG93blByb3BzKTtcblx0XG5cdCAgICAgIGlmICh0eXBlb2YgcHJvcHMgPT09
ICdmdW5jdGlvbicpIHtcblx0ICAgICAgICBwcm94eS5tYXBUb1Byb3BzID0gcHJvcHM7XG5cdCAg
ICAgICAgcHJveHkuZGVwZW5kc09uT3duUHJvcHMgPSBnZXREZXBlbmRzT25Pd25Qcm9wcyhwcm9w
cyk7XG5cdCAgICAgICAgcHJvcHMgPSBwcm94eShzdGF0ZU9yRGlzcGF0Y2gsIG93blByb3BzKTtc
blx0ICAgICAgfVxuXHRcblx0ICAgICAgaWYgKGZhbHNlKSAoMCwgX3ZlcmlmeVBsYWluT2JqZWN0
Mi5kZWZhdWx0KShwcm9wcywgZGlzcGxheU5hbWUsIG1ldGhvZE5hbWUpO1xuXHRcblx0ICAgICAg
cmV0dXJuIHByb3BzO1xuXHQgICAgfTtcblx0XG5cdCAgICByZXR1cm4gcHJveHk7XG5cdCAgfTtc
blx0fVxuXG4vKioqLyB9LFxuLyogODEgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0
cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdGV4cG9y
dHMuX19lc01vZHVsZSA9IHRydWU7XG5cdGV4cG9ydHMuY29ubmVjdCA9IGV4cG9ydHMuY29ubmVj
dEFkdmFuY2VkID0gZXhwb3J0cy5jcmVhdGVQcm92aWRlciA9IGV4cG9ydHMuUHJvdmlkZXIgPSB1
bmRlZmluZWQ7XG5cdFxuXHR2YXIgX1Byb3ZpZGVyID0gX193ZWJwYWNrX3JlcXVpcmVfXygxODcp
O1xuXHRcblx0dmFyIF9Qcm92aWRlcjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9Qcm92aWRl
cik7XG5cdFxuXHR2YXIgX2Nvbm5lY3RBZHZhbmNlZCA9IF9fd2VicGFja19yZXF1aXJlX18oNzkp
O1xuXHRcblx0dmFyIF9jb25uZWN0QWR2YW5jZWQyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChf
Y29ubmVjdEFkdmFuY2VkKTtcblx0XG5cdHZhciBfY29ubmVjdCA9IF9fd2VicGFja19yZXF1aXJl
X18oMTg4KTtcblx0XG5cdHZhciBfY29ubmVjdDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9j
b25uZWN0KTtcblx0XG5cdGZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJl
dHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5c
dFxuXHRleHBvcnRzLlByb3ZpZGVyID0gX1Byb3ZpZGVyMi5kZWZhdWx0O1xuXHRleHBvcnRzLmNy
ZWF0ZVByb3ZpZGVyID0gX1Byb3ZpZGVyLmNyZWF0ZVByb3ZpZGVyO1xuXHRleHBvcnRzLmNvbm5l
Y3RBZHZhbmNlZCA9IF9jb25uZWN0QWR2YW5jZWQyLmRlZmF1bHQ7XG5cdGV4cG9ydHMuY29ubmVj
dCA9IF9jb25uZWN0Mi5kZWZhdWx0O1xuXG4vKioqLyB9LFxuLyogODIgKi9cbi8qKiovIGZ1bmN0
aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdCd1c2Ugc3Ry
aWN0Jztcblx0XG5cdGV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5cdGV4cG9ydHMuc3RvcmVT
aGFwZSA9IGV4cG9ydHMuc3Vic2NyaXB0aW9uU2hhcGUgPSB1bmRlZmluZWQ7XG5cdFxuXHR2YXIg
X3Byb3BUeXBlcyA9IF9fd2VicGFja19yZXF1aXJlX18oNTYpO1xuXHRcblx0dmFyIF9wcm9wVHlw
ZXMyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfcHJvcFR5cGVzKTtcblx0XG5cdGZ1bmN0aW9u
IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1
bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cdFxuXHR2YXIgc3Vic2NyaXB0aW9uU2hh
cGUgPSBleHBvcnRzLnN1YnNjcmlwdGlvblNoYXBlID0gX3Byb3BUeXBlczIuZGVmYXVsdC5zaGFw
ZSh7XG5cdCAgdHJ5U3Vic2NyaWJlOiBfcHJvcFR5cGVzMi5kZWZhdWx0LmZ1bmMuaXNSZXF1aXJl
ZCxcblx0ICB0cnlVbnN1YnNjcmliZTogX3Byb3BUeXBlczIuZGVmYXVsdC5mdW5jLmlzUmVxdWly
ZWQsXG5cdCAgbm90aWZ5TmVzdGVkU3ViczogX3Byb3BUeXBlczIuZGVmYXVsdC5mdW5jLmlzUmVx
dWlyZWQsXG5cdCAgaXNTdWJzY3JpYmVkOiBfcHJvcFR5cGVzMi5kZWZhdWx0LmZ1bmMuaXNSZXF1
aXJlZFxuXHR9KTtcblx0XG5cdHZhciBzdG9yZVNoYXBlID0gZXhwb3J0cy5zdG9yZVNoYXBlID0g
X3Byb3BUeXBlczIuZGVmYXVsdC5zaGFwZSh7XG5cdCAgc3Vic2NyaWJlOiBfcHJvcFR5cGVzMi5k
ZWZhdWx0LmZ1bmMuaXNSZXF1aXJlZCxcblx0ICBkaXNwYXRjaDogX3Byb3BUeXBlczIuZGVmYXVs
dC5mdW5jLmlzUmVxdWlyZWQsXG5cdCAgZ2V0U3RhdGU6IF9wcm9wVHlwZXMyLmRlZmF1bHQuZnVu
Yy5pc1JlcXVpcmVkXG5cdH0pO1xuXG4vKioqLyB9LFxuLyogODMgKi9cbi8qKiovIGZ1bmN0aW9u
KG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdCd1c2Ugc3RyaWN0
Jztcblx0XG5cdGV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5cdGV4cG9ydHMuZGVmYXVsdCA9
IHZlcmlmeVBsYWluT2JqZWN0O1xuXHRcblx0dmFyIF9pc1BsYWluT2JqZWN0ID0gX193ZWJwYWNr
X3JlcXVpcmVfXygzMyk7XG5cdFxuXHR2YXIgX2lzUGxhaW5PYmplY3QyID0gX2ludGVyb3BSZXF1
aXJlRGVmYXVsdChfaXNQbGFpbk9iamVjdCk7XG5cdFxuXHR2YXIgX3dhcm5pbmcgPSBfX3dlYnBh
Y2tfcmVxdWlyZV9fKDUwKTtcblx0XG5cdHZhciBfd2FybmluZzIgPSBfaW50ZXJvcFJlcXVpcmVE
ZWZhdWx0KF93YXJuaW5nKTtcblx0XG5cdGZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQo
b2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9i
aiB9OyB9XG5cdFxuXHRmdW5jdGlvbiB2ZXJpZnlQbGFpbk9iamVjdCh2YWx1ZSwgZGlzcGxheU5h
bWUsIG1ldGhvZE5hbWUpIHtcblx0ICBpZiAoISgwLCBfaXNQbGFpbk9iamVjdDIuZGVmYXVsdCko
dmFsdWUpKSB7XG5cdCAgICAoMCwgX3dhcm5pbmcyLmRlZmF1bHQpKG1ldGhvZE5hbWUgKyAnKCkg
aW4gJyArIGRpc3BsYXlOYW1lICsgJyBtdXN0IHJldHVybiBhIHBsYWluIG9iamVjdC4gSW5zdGVh
ZCByZWNlaXZlZCAnICsgdmFsdWUgKyAnLicpO1xuXHQgIH1cblx0fVxuXG4vKioqLyB9LFxuLyog
ODQgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVf
Xykge1xuXG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBv
cnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuXHQgIHZhbHVlOiB0cnVlXG5cdH0pO1xuXHRcblx0dmFy
IF9jcmVhdGVDbGFzcyA9IGZ1bmN0aW9uICgpIHsgZnVuY3Rpb24gZGVmaW5lUHJvcGVydGllcyh0
YXJnZXQsIHByb3BzKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHsg
dmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTsgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3Jp
cHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlOyBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7
IGlmIChcInZhbHVlXCIgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7
IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9y
KTsgfSB9IHJldHVybiBmdW5jdGlvbiAoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1By
b3BzKSB7IGlmIChwcm90b1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3Rv
dHlwZSwgcHJvdG9Qcm9wcyk7IGlmIChzdGF0aWNQcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25z
dHJ1Y3Rvciwgc3RhdGljUHJvcHMpOyByZXR1cm4gQ29uc3RydWN0b3I7IH07IH0oKTtcblx0XG5c
dHZhciBfcmVhY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEyKTtcblx0XG5cdHZhciBfcmVhY3Qy
ID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfcmVhY3QpO1xuXHRcblx0dmFyIF9jbGFzc25hbWVz
ID0gX193ZWJwYWNrX3JlcXVpcmVfXygzMSk7XG5cdFxuXHR2YXIgX2NsYXNzbmFtZXMyID0gX2lu
dGVyb3BSZXF1aXJlRGVmYXVsdChfY2xhc3NuYW1lcyk7XG5cdFxuXHRmdW5jdGlvbiBfaW50ZXJv
cFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2Jq
IDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXHRcblx0ZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGlu
c3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVj
dG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1
bmN0aW9uXCIpOyB9IH1cblx0XG5cdGZ1bmN0aW9uIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJu
KHNlbGYsIGNhbGwpIHsgaWYgKCFzZWxmKSB7IHRocm93IG5ldyBSZWZlcmVuY2VFcnJvcihcInRo
aXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZFwi
KTsgfSByZXR1cm4gY2FsbCAmJiAodHlwZW9mIGNhbGwgPT09IFwib2JqZWN0XCIgfHwgdHlwZW9m
IGNhbGwgPT09IFwiZnVuY3Rpb25cIikgPyBjYWxsIDogc2VsZjsgfVxuXHRcblx0ZnVuY3Rpb24g
X2luaGVyaXRzKHN1YkNsYXNzLCBzdXBlckNsYXNzKSB7IGlmICh0eXBlb2Ygc3VwZXJDbGFzcyAh
PT0gXCJmdW5jdGlvblwiICYmIHN1cGVyQ2xhc3MgIT09IG51bGwpIHsgdGhyb3cgbmV3IFR5cGVF
cnJvcihcIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9u
LCBub3QgXCIgKyB0eXBlb2Ygc3VwZXJDbGFzcyk7IH0gc3ViQ2xhc3MucHJvdG90eXBlID0gT2Jq
ZWN0LmNyZWF0ZShzdXBlckNsYXNzICYmIHN1cGVyQ2xhc3MucHJvdG90eXBlLCB7IGNvbnN0cnVj
dG9yOiB7IHZhbHVlOiBzdWJDbGFzcywgZW51bWVyYWJsZTogZmFsc2UsIHdyaXRhYmxlOiB0cnVl
LCBjb25maWd1cmFibGU6IHRydWUgfSB9KTsgaWYgKHN1cGVyQ2xhc3MpIE9iamVjdC5zZXRQcm90
b3R5cGVPZiA/IE9iamVjdC5zZXRQcm90b3R5cGVPZihzdWJDbGFzcywgc3VwZXJDbGFzcykgOiBz
dWJDbGFzcy5fX3Byb3RvX18gPSBzdXBlckNsYXNzOyB9XG5cdFxuXHR2YXIgVG9kb1RleHRJbnB1
dCA9IGZ1bmN0aW9uIChfQ29tcG9uZW50KSB7XG5cdCAgX2luaGVyaXRzKFRvZG9UZXh0SW5wdXQs
IF9Db21wb25lbnQpO1xuXHRcblx0ICBmdW5jdGlvbiBUb2RvVGV4dElucHV0KCkge1xuXHQgICAg
dmFyIF9yZWY7XG5cdFxuXHQgICAgdmFyIF90ZW1wLCBfdGhpcywgX3JldDtcblx0XG5cdCAgICBf
Y2xhc3NDYWxsQ2hlY2sodGhpcywgVG9kb1RleHRJbnB1dCk7XG5cdFxuXHQgICAgZm9yICh2YXIg
X2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9r
ZXkgPCBfbGVuOyBfa2V5KyspIHtcblx0ICAgICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5
XTtcblx0ICAgIH1cblx0XG5cdCAgICByZXR1cm4gX3JldCA9IChfdGVtcCA9IChfdGhpcyA9IF9w
b3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHRoaXMsIChfcmVmID0gVG9kb1RleHRJbnB1dC5fX3By
b3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKFRvZG9UZXh0SW5wdXQpKS5jYWxsLmFwcGx5
KF9yZWYsIFt0aGlzXS5jb25jYXQoYXJncykpKSwgX3RoaXMpLCBfdGhpcy5zdGF0ZSA9IHtcblx0
ICAgICAgdGV4dDogX3RoaXMucHJvcHMudGV4dCB8fCAnJ1xuXHQgICAgfSwgX3RoaXMuaGFuZGxl
U3VibWl0ID0gZnVuY3Rpb24gKGUpIHtcblx0ICAgICAgdmFyIHRleHQgPSBlLnRhcmdldC52YWx1
ZS50cmltKCk7XG5cdCAgICAgIGlmIChlLndoaWNoID09PSAxMykge1xuXHQgICAgICAgIF90aGlz
LnByb3BzLm9uU2F2ZSh0ZXh0KTtcblx0ICAgICAgICBpZiAoX3RoaXMucHJvcHMubmV3VG9kbykg
e1xuXHQgICAgICAgICAgX3RoaXMuc2V0U3RhdGUoeyB0ZXh0OiAnJyB9KTtcblx0ICAgICAgICB9
XG5cdCAgICAgIH1cblx0ICAgIH0sIF90aGlzLmhhbmRsZUNoYW5nZSA9IGZ1bmN0aW9uIChlKSB7
XG5cdCAgICAgIF90aGlzLnNldFN0YXRlKHsgdGV4dDogZS50YXJnZXQudmFsdWUgfSk7XG5cdCAg
ICB9LCBfdGhpcy5oYW5kbGVCbHVyID0gZnVuY3Rpb24gKGUpIHtcblx0ICAgICAgaWYgKCFfdGhp
cy5wcm9wcy5uZXdUb2RvKSB7XG5cdCAgICAgICAgX3RoaXMucHJvcHMub25TYXZlKGUudGFyZ2V0
LnZhbHVlKTtcblx0ICAgICAgfVxuXHQgICAgfSwgX3RlbXApLCBfcG9zc2libGVDb25zdHJ1Y3Rv
clJldHVybihfdGhpcywgX3JldCk7XG5cdCAgfVxuXHRcblx0ICBfY3JlYXRlQ2xhc3MoVG9kb1Rl
eHRJbnB1dCwgW3tcblx0ICAgIGtleTogJ3JlbmRlcicsXG5cdCAgICB2YWx1ZTogZnVuY3Rpb24g
cmVuZGVyKCkge1xuXHQgICAgICByZXR1cm4gX3JlYWN0Mi5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQo
J2lucHV0JywgeyBjbGFzc05hbWU6ICgwLCBfY2xhc3NuYW1lczIuZGVmYXVsdCkoe1xuXHQgICAg
ICAgICAgZWRpdDogdGhpcy5wcm9wcy5lZGl0aW5nLFxuXHQgICAgICAgICAgJ25ldy10b2RvJzog
dGhpcy5wcm9wcy5uZXdUb2RvXG5cdCAgICAgICAgfSksXG5cdCAgICAgICAgdHlwZTogJ3RleHQn
LFxuXHQgICAgICAgIHBsYWNlaG9sZGVyOiB0aGlzLnByb3BzLnBsYWNlaG9sZGVyLFxuXHQgICAg
ICAgIGF1dG9Gb2N1czogJ3RydWUnLFxuXHQgICAgICAgIHZhbHVlOiB0aGlzLnN0YXRlLnRleHQs
XG5cdCAgICAgICAgb25CbHVyOiB0aGlzLmhhbmRsZUJsdXIsXG5cdCAgICAgICAgb25DaGFuZ2U6
IHRoaXMuaGFuZGxlQ2hhbmdlLFxuXHQgICAgICAgIG9uS2V5RG93bjogdGhpcy5oYW5kbGVTdWJt
aXQgfSk7XG5cdCAgICB9XG5cdCAgfV0pO1xuXHRcblx0ICByZXR1cm4gVG9kb1RleHRJbnB1dDtc
blx0fShfcmVhY3QuQ29tcG9uZW50KTtcblx0XG5cdFRvZG9UZXh0SW5wdXQucHJvcFR5cGVzID0g
e1xuXHQgIG9uU2F2ZTogX3JlYWN0LlByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG5cdCAgdGV4
dDogX3JlYWN0LlByb3BUeXBlcy5zdHJpbmcsXG5cdCAgcGxhY2Vob2xkZXI6IF9yZWFjdC5Qcm9w
VHlwZXMuc3RyaW5nLFxuXHQgIGVkaXRpbmc6IF9yZWFjdC5Qcm9wVHlwZXMuYm9vbCxcblx0ICBu
ZXdUb2RvOiBfcmVhY3QuUHJvcFR5cGVzLmJvb2xcblx0fTtcblx0ZXhwb3J0cy5kZWZhdWx0ID0g
VG9kb1RleHRJbnB1dDtcblxuLyoqKi8gfSxcbi8qIDg1ICovXG4vKioqLyBmdW5jdGlvbihtb2R1
bGUsIGV4cG9ydHMpIHtcblxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHRPYmplY3QuZGVmaW5lUHJv
cGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcblx0ICB2YWx1ZTogdHJ1ZVxuXHR9KTtc
blx0dmFyIEFERF9UT0RPID0gZXhwb3J0cy5BRERfVE9ETyA9ICdBRERfVE9ETyc7XG5cdHZhciBE
RUxFVEVfVE9ETyA9IGV4cG9ydHMuREVMRVRFX1RPRE8gPSAnREVMRVRFX1RPRE8nO1xuXHR2YXIg
RURJVF9UT0RPID0gZXhwb3J0cy5FRElUX1RPRE8gPSAnRURJVF9UT0RPJztcblx0dmFyIENPTVBM
RVRFX1RPRE8gPSBleHBvcnRzLkNPTVBMRVRFX1RPRE8gPSAnQ09NUExFVEVfVE9ETyc7XG5cdHZh
ciBDT01QTEVURV9BTEwgPSBleHBvcnRzLkNPTVBMRVRFX0FMTCA9ICdDT01QTEVURV9BTEwnO1xu
XHR2YXIgQ0xFQVJfQ09NUExFVEVEID0gZXhwb3J0cy5DTEVBUl9DT01QTEVURUQgPSAnQ0xFQVJf
Q09NUExFVEVEJztcblxuLyoqKi8gfSxcbi8qIDg2ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUs
IGV4cG9ydHMpIHtcblxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHRPYmplY3QuZGVmaW5lUHJvcGVy
dHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcblx0ICB2YWx1ZTogdHJ1ZVxuXHR9KTtcblx0
dmFyIFNIT1dfQUxMID0gZXhwb3J0cy5TSE9XX0FMTCA9ICdzaG93X2FsbCc7XG5cdHZhciBTSE9X
X0NPTVBMRVRFRCA9IGV4cG9ydHMuU0hPV19DT01QTEVURUQgPSAnc2hvd19jb21wbGV0ZWQnO1xu
XHR2YXIgU0hPV19BQ1RJVkUgPSBleHBvcnRzLlNIT1dfQUNUSVZFID0gJ3Nob3dfYWN0aXZlJztc
blxuLyoqKi8gfSxcbi8qIDg3ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtc
blxuXHQvLyBzaGltIGZvciB1c2luZyBwcm9jZXNzIGluIGJyb3dzZXJcblx0dmFyIHByb2Nlc3Mg
PSBtb2R1bGUuZXhwb3J0cyA9IHt9O1xuXHRcblx0Ly8gY2FjaGVkIGZyb20gd2hhdGV2ZXIgZ2xv
YmFsIGlzIHByZXNlbnQgc28gdGhhdCB0ZXN0IHJ1bm5lcnMgdGhhdCBzdHViIGl0XG5cdC8vIGRv
bid0IGJyZWFrIHRoaW5ncy4gIEJ1dCB3ZSBuZWVkIHRvIHdyYXAgaXQgaW4gYSB0cnkgY2F0Y2gg
aW4gY2FzZSBpdCBpc1xuXHQvLyB3cmFwcGVkIGluIHN0cmljdCBtb2RlIGNvZGUgd2hpY2ggZG9l
c24ndCBkZWZpbmUgYW55IGdsb2JhbHMuICBJdCdzIGluc2lkZSBhXG5cdC8vIGZ1bmN0aW9uIGJl
Y2F1c2UgdHJ5L2NhdGNoZXMgZGVvcHRpbWl6ZSBpbiBjZXJ0YWluIGVuZ2luZXMuXG5cdFxuXHR2
YXIgY2FjaGVkU2V0VGltZW91dDtcblx0dmFyIGNhY2hlZENsZWFyVGltZW91dDtcblx0XG5cdGZ1
bmN0aW9uIGRlZmF1bHRTZXRUaW1vdXQoKSB7XG5cdCAgICB0aHJvdyBuZXcgRXJyb3IoJ3NldFRp
bWVvdXQgaGFzIG5vdCBiZWVuIGRlZmluZWQnKTtcblx0fVxuXHRmdW5jdGlvbiBkZWZhdWx0Q2xl
YXJUaW1lb3V0ICgpIHtcblx0ICAgIHRocm93IG5ldyBFcnJvcignY2xlYXJUaW1lb3V0IGhhcyBu
b3QgYmVlbiBkZWZpbmVkJyk7XG5cdH1cblx0KGZ1bmN0aW9uICgpIHtcblx0ICAgIHRyeSB7XG5c
dCAgICAgICAgaWYgKHR5cGVvZiBzZXRUaW1lb3V0ID09PSAnZnVuY3Rpb24nKSB7XG5cdCAgICAg
ICAgICAgIGNhY2hlZFNldFRpbWVvdXQgPSBzZXRUaW1lb3V0O1xuXHQgICAgICAgIH0gZWxzZSB7
XG5cdCAgICAgICAgICAgIGNhY2hlZFNldFRpbWVvdXQgPSBkZWZhdWx0U2V0VGltb3V0O1xuXHQg
ICAgICAgIH1cblx0ICAgIH0gY2F0Y2ggKGUpIHtcblx0ICAgICAgICBjYWNoZWRTZXRUaW1lb3V0
ID0gZGVmYXVsdFNldFRpbW91dDtcblx0ICAgIH1cblx0ICAgIHRyeSB7XG5cdCAgICAgICAgaWYg
KHR5cGVvZiBjbGVhclRpbWVvdXQgPT09ICdmdW5jdGlvbicpIHtcblx0ICAgICAgICAgICAgY2Fj
aGVkQ2xlYXJUaW1lb3V0ID0gY2xlYXJUaW1lb3V0O1xuXHQgICAgICAgIH0gZWxzZSB7XG5cdCAg
ICAgICAgICAgIGNhY2hlZENsZWFyVGltZW91dCA9IGRlZmF1bHRDbGVhclRpbWVvdXQ7XG5cdCAg
ICAgICAgfVxuXHQgICAgfSBjYXRjaCAoZSkge1xuXHQgICAgICAgIGNhY2hlZENsZWFyVGltZW91
dCA9IGRlZmF1bHRDbGVhclRpbWVvdXQ7XG5cdCAgICB9XG5cdH0gKCkpXG5cdGZ1bmN0aW9uIHJ1
blRpbWVvdXQoZnVuKSB7XG5cdCAgICBpZiAoY2FjaGVkU2V0VGltZW91dCA9PT0gc2V0VGltZW91
dCkge1xuXHQgICAgICAgIC8vbm9ybWFsIGVudmlyb21lbnRzIGluIHNhbmUgc2l0dWF0aW9uc1xu
XHQgICAgICAgIHJldHVybiBzZXRUaW1lb3V0KGZ1biwgMCk7XG5cdCAgICB9XG5cdCAgICAvLyBp
ZiBzZXRUaW1lb3V0IHdhc24ndCBhdmFpbGFibGUgYnV0IHdhcyBsYXR0ZXIgZGVmaW5lZFxuXHQg
ICAgaWYgKChjYWNoZWRTZXRUaW1lb3V0ID09PSBkZWZhdWx0U2V0VGltb3V0IHx8ICFjYWNoZWRT
ZXRUaW1lb3V0KSAmJiBzZXRUaW1lb3V0KSB7XG5cdCAgICAgICAgY2FjaGVkU2V0VGltZW91dCA9
IHNldFRpbWVvdXQ7XG5cdCAgICAgICAgcmV0dXJuIHNldFRpbWVvdXQoZnVuLCAwKTtcblx0ICAg
IH1cblx0ICAgIHRyeSB7XG5cdCAgICAgICAgLy8gd2hlbiB3aGVuIHNvbWVib2R5IGhhcyBzY3Jl
d2VkIHdpdGggc2V0VGltZW91dCBidXQgbm8gSS5FLiBtYWRkbmVzc1xuXHQgICAgICAgIHJldHVy
biBjYWNoZWRTZXRUaW1lb3V0KGZ1biwgMCk7XG5cdCAgICB9IGNhdGNoKGUpe1xuXHQgICAgICAg
IHRyeSB7XG5cdCAgICAgICAgICAgIC8vIFdoZW4gd2UgYXJlIGluIEkuRS4gYnV0IHRoZSBzY3Jp
cHQgaGFzIGJlZW4gZXZhbGVkIHNvIEkuRS4gZG9lc24ndCB0cnVzdCB0aGUgZ2xvYmFsIG9iamVj
dCB3aGVuIGNhbGxlZCBub3JtYWxseVxuXHQgICAgICAgICAgICByZXR1cm4gY2FjaGVkU2V0VGlt
ZW91dC5jYWxsKG51bGwsIGZ1biwgMCk7XG5cdCAgICAgICAgfSBjYXRjaChlKXtcblx0ICAgICAg
ICAgICAgLy8gc2FtZSBhcyBhYm92ZSBidXQgd2hlbiBpdCdzIGEgdmVyc2lvbiBvZiBJLkUuIHRo
YXQgbXVzdCBoYXZlIHRoZSBnbG9iYWwgb2JqZWN0IGZvciAndGhpcycsIGhvcGZ1bGx5IG91ciBj
b250ZXh0IGNvcnJlY3Qgb3RoZXJ3aXNlIGl0IHdpbGwgdGhyb3cgYSBnbG9iYWwgZXJyb3Jcblx0
ICAgICAgICAgICAgcmV0dXJuIGNhY2hlZFNldFRpbWVvdXQuY2FsbCh0aGlzLCBmdW4sIDApO1xu
XHQgICAgICAgIH1cblx0ICAgIH1cblx0XG5cdFxuXHR9XG5cdGZ1bmN0aW9uIHJ1bkNsZWFyVGlt
ZW91dChtYXJrZXIpIHtcblx0ICAgIGlmIChjYWNoZWRDbGVhclRpbWVvdXQgPT09IGNsZWFyVGlt
ZW91dCkge1xuXHQgICAgICAgIC8vbm9ybWFsIGVudmlyb21lbnRzIGluIHNhbmUgc2l0dWF0aW9u
c1xuXHQgICAgICAgIHJldHVybiBjbGVhclRpbWVvdXQobWFya2VyKTtcblx0ICAgIH1cblx0ICAg
IC8vIGlmIGNsZWFyVGltZW91dCB3YXNuJ3QgYXZhaWxhYmxlIGJ1dCB3YXMgbGF0dGVyIGRlZmlu
ZWRcblx0ICAgIGlmICgoY2FjaGVkQ2xlYXJUaW1lb3V0ID09PSBkZWZhdWx0Q2xlYXJUaW1lb3V0
IHx8ICFjYWNoZWRDbGVhclRpbWVvdXQpICYmIGNsZWFyVGltZW91dCkge1xuXHQgICAgICAgIGNh
Y2hlZENsZWFyVGltZW91dCA9IGNsZWFyVGltZW91dDtcblx0ICAgICAgICByZXR1cm4gY2xlYXJU
aW1lb3V0KG1hcmtlcik7XG5cdCAgICB9XG5cdCAgICB0cnkge1xuXHQgICAgICAgIC8vIHdoZW4g
d2hlbiBzb21lYm9keSBoYXMgc2NyZXdlZCB3aXRoIHNldFRpbWVvdXQgYnV0IG5vIEkuRS4gbWFk
ZG5lc3Ncblx0ICAgICAgICByZXR1cm4gY2FjaGVkQ2xlYXJUaW1lb3V0KG1hcmtlcik7XG5cdCAg
ICB9IGNhdGNoIChlKXtcblx0ICAgICAgICB0cnkge1xuXHQgICAgICAgICAgICAvLyBXaGVuIHdl
IGFyZSBpbiBJLkUuIGJ1dCB0aGUgc2NyaXB0IGhhcyBiZWVuIGV2YWxlZCBzbyBJLkUuIGRvZXNu
J3QgIHRydXN0IHRoZSBnbG9iYWwgb2JqZWN0IHdoZW4gY2FsbGVkIG5vcm1hbGx5XG5cdCAgICAg
ICAgICAgIHJldHVybiBjYWNoZWRDbGVhclRpbWVvdXQuY2FsbChudWxsLCBtYXJrZXIpO1xuXHQg
ICAgICAgIH0gY2F0Y2ggKGUpe1xuXHQgICAgICAgICAgICAvLyBzYW1lIGFzIGFib3ZlIGJ1dCB3
aGVuIGl0J3MgYSB2ZXJzaW9uIG9mIEkuRS4gdGhhdCBtdXN0IGhhdmUgdGhlIGdsb2JhbCBvYmpl
Y3QgZm9yICd0aGlzJywgaG9wZnVsbHkgb3VyIGNvbnRleHQgY29ycmVjdCBvdGhlcndpc2UgaXQg
d2lsbCB0aHJvdyBhIGdsb2JhbCBlcnJvci5cblx0ICAgICAgICAgICAgLy8gU29tZSB2ZXJzaW9u
cyBvZiBJLkUuIGhhdmUgZGlmZmVyZW50IHJ1bGVzIGZvciBjbGVhclRpbWVvdXQgdnMgc2V0VGlt
ZW91dFxuXHQgICAgICAgICAgICByZXR1cm4gY2FjaGVkQ2xlYXJUaW1lb3V0LmNhbGwodGhpcywg
bWFya2VyKTtcblx0ICAgICAgICB9XG5cdCAgICB9XG5cdFxuXHRcblx0XG5cdH1cblx0dmFyIHF1
ZXVlID0gW107XG5cdHZhciBkcmFpbmluZyA9IGZhbHNlO1xuXHR2YXIgY3VycmVudFF1ZXVlO1xu
XHR2YXIgcXVldWVJbmRleCA9IC0xO1xuXHRcblx0ZnVuY3Rpb24gY2xlYW5VcE5leHRUaWNrKCkg
e1xuXHQgICAgaWYgKCFkcmFpbmluZyB8fCAhY3VycmVudFF1ZXVlKSB7XG5cdCAgICAgICAgcmV0
dXJuO1xuXHQgICAgfVxuXHQgICAgZHJhaW5pbmcgPSBmYWxzZTtcblx0ICAgIGlmIChjdXJyZW50
UXVldWUubGVuZ3RoKSB7XG5cdCAgICAgICAgcXVldWUgPSBjdXJyZW50UXVldWUuY29uY2F0KHF1
ZXVlKTtcblx0ICAgIH0gZWxzZSB7XG5cdCAgICAgICAgcXVldWVJbmRleCA9IC0xO1xuXHQgICAg
fVxuXHQgICAgaWYgKHF1ZXVlLmxlbmd0aCkge1xuXHQgICAgICAgIGRyYWluUXVldWUoKTtcblx0
ICAgIH1cblx0fVxuXHRcblx0ZnVuY3Rpb24gZHJhaW5RdWV1ZSgpIHtcblx0ICAgIGlmIChkcmFp
bmluZykge1xuXHQgICAgICAgIHJldHVybjtcblx0ICAgIH1cblx0ICAgIHZhciB0aW1lb3V0ID0g
cnVuVGltZW91dChjbGVhblVwTmV4dFRpY2spO1xuXHQgICAgZHJhaW5pbmcgPSB0cnVlO1xuXHRc
blx0ICAgIHZhciBsZW4gPSBxdWV1ZS5sZW5ndGg7XG5cdCAgICB3aGlsZShsZW4pIHtcblx0ICAg
ICAgICBjdXJyZW50UXVldWUgPSBxdWV1ZTtcblx0ICAgICAgICBxdWV1ZSA9IFtdO1xuXHQgICAg
ICAgIHdoaWxlICgrK3F1ZXVlSW5kZXggPCBsZW4pIHtcblx0ICAgICAgICAgICAgaWYgKGN1cnJl
bnRRdWV1ZSkge1xuXHQgICAgICAgICAgICAgICAgY3VycmVudFF1ZXVlW3F1ZXVlSW5kZXhdLnJ1
bigpO1xuXHQgICAgICAgICAgICB9XG5cdCAgICAgICAgfVxuXHQgICAgICAgIHF1ZXVlSW5kZXgg
PSAtMTtcblx0ICAgICAgICBsZW4gPSBxdWV1ZS5sZW5ndGg7XG5cdCAgICB9XG5cdCAgICBjdXJy
ZW50UXVldWUgPSBudWxsO1xuXHQgICAgZHJhaW5pbmcgPSBmYWxzZTtcblx0ICAgIHJ1bkNsZWFy
VGltZW91dCh0aW1lb3V0KTtcblx0fVxuXHRcblx0cHJvY2Vzcy5uZXh0VGljayA9IGZ1bmN0aW9u
IChmdW4pIHtcblx0ICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGFyZ3VtZW50cy5sZW5ndGggLSAx
KTtcblx0ICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID4gMSkge1xuXHQgICAgICAgIGZvciAodmFy
IGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7XG5cdCAgICAgICAgICAgIGFyZ3Nb
aSAtIDFdID0gYXJndW1lbnRzW2ldO1xuXHQgICAgICAgIH1cblx0ICAgIH1cblx0ICAgIHF1ZXVl
LnB1c2gobmV3IEl0ZW0oZnVuLCBhcmdzKSk7XG5cdCAgICBpZiAocXVldWUubGVuZ3RoID09PSAx
ICYmICFkcmFpbmluZykge1xuXHQgICAgICAgIHJ1blRpbWVvdXQoZHJhaW5RdWV1ZSk7XG5cdCAg
ICB9XG5cdH07XG5cdFxuXHQvLyB2OCBsaWtlcyBwcmVkaWN0aWJsZSBvYmplY3RzXG5cdGZ1bmN0
aW9uIEl0ZW0oZnVuLCBhcnJheSkge1xuXHQgICAgdGhpcy5mdW4gPSBmdW47XG5cdCAgICB0aGlz
LmFycmF5ID0gYXJyYXk7XG5cdH1cblx0SXRlbS5wcm90b3R5cGUucnVuID0gZnVuY3Rpb24gKCkg
e1xuXHQgICAgdGhpcy5mdW4uYXBwbHkobnVsbCwgdGhpcy5hcnJheSk7XG5cdH07XG5cdHByb2Nl
c3MudGl0bGUgPSAnYnJvd3Nlcic7XG5cdHByb2Nlc3MuYnJvd3NlciA9IHRydWU7XG5cdHByb2Nl
c3MuZW52ID0ge307XG5cdHByb2Nlc3MuYXJndiA9IFtdO1xuXHRwcm9jZXNzLnZlcnNpb24gPSAn
JzsgLy8gZW1wdHkgc3RyaW5nIHRvIGF2b2lkIHJlZ2V4cCBpc3N1ZXNcblx0cHJvY2Vzcy52ZXJz
aW9ucyA9IHt9O1xuXHRcblx0ZnVuY3Rpb24gbm9vcCgpIHt9XG5cdFxuXHRwcm9jZXNzLm9uID0g
bm9vcDtcblx0cHJvY2Vzcy5hZGRMaXN0ZW5lciA9IG5vb3A7XG5cdHByb2Nlc3Mub25jZSA9IG5v
b3A7XG5cdHByb2Nlc3Mub2ZmID0gbm9vcDtcblx0cHJvY2Vzcy5yZW1vdmVMaXN0ZW5lciA9IG5v
b3A7XG5cdHByb2Nlc3MucmVtb3ZlQWxsTGlzdGVuZXJzID0gbm9vcDtcblx0cHJvY2Vzcy5lbWl0
ID0gbm9vcDtcblx0XG5cdHByb2Nlc3MuYmluZGluZyA9IGZ1bmN0aW9uIChuYW1lKSB7XG5cdCAg
ICB0aHJvdyBuZXcgRXJyb3IoJ3Byb2Nlc3MuYmluZGluZyBpcyBub3Qgc3VwcG9ydGVkJyk7XG5c
dH07XG5cdFxuXHRwcm9jZXNzLmN3ZCA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuICcvJyB9O1xuXHRw
cm9jZXNzLmNoZGlyID0gZnVuY3Rpb24gKGRpcikge1xuXHQgICAgdGhyb3cgbmV3IEVycm9yKCdw
cm9jZXNzLmNoZGlyIGlzIG5vdCBzdXBwb3J0ZWQnKTtcblx0fTtcblx0cHJvY2Vzcy51bWFzayA9
IGZ1bmN0aW9uKCkgeyByZXR1cm4gMDsgfTtcblxuXG4vKioqLyB9LFxuLyogODggKi9cbi8qKiov
IGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdCd1
c2Ugc3RyaWN0Jztcblx0XG5cdHZhciBhc2FwID0gX193ZWJwYWNrX3JlcXVpcmVfXygxOTcpO1xu
XHRcblx0ZnVuY3Rpb24gbm9vcCgpIHt9XG5cdFxuXHQvLyBTdGF0ZXM6XG5cdC8vXG5cdC8vIDAg
LSBwZW5kaW5nXG5cdC8vIDEgLSBmdWxmaWxsZWQgd2l0aCBfdmFsdWVcblx0Ly8gMiAtIHJlamVj
dGVkIHdpdGggX3ZhbHVlXG5cdC8vIDMgLSBhZG9wdGVkIHRoZSBzdGF0ZSBvZiBhbm90aGVyIHBy
b21pc2UsIF92YWx1ZVxuXHQvL1xuXHQvLyBvbmNlIHRoZSBzdGF0ZSBpcyBubyBsb25nZXIgcGVu
ZGluZyAoMCkgaXQgaXMgaW1tdXRhYmxlXG5cdFxuXHQvLyBBbGwgYF9gIHByZWZpeGVkIHByb3Bl
cnRpZXMgd2lsbCBiZSByZWR1Y2VkIHRvIGBfe3JhbmRvbSBudW1iZXJ9YFxuXHQvLyBhdCBidWls
ZCB0aW1lIHRvIG9iZnVzY2F0ZSB0aGVtIGFuZCBkaXNjb3VyYWdlIHRoZWlyIHVzZS5cblx0Ly8g
V2UgZG9uJ3QgdXNlIHN5bWJvbHMgb3IgT2JqZWN0LmRlZmluZVByb3BlcnR5IHRvIGZ1bGx5IGhp
ZGUgdGhlbVxuXHQvLyBiZWNhdXNlIHRoZSBwZXJmb3JtYW5jZSBpc24ndCBnb29kIGVub3VnaC5c
blx0XG5cdFxuXHQvLyB0byBhdm9pZCB1c2luZyB0cnkvY2F0Y2ggaW5zaWRlIGNyaXRpY2FsIGZ1
bmN0aW9ucywgd2Vcblx0Ly8gZXh0cmFjdCB0aGVtIHRvIGhlcmUuXG5cdHZhciBMQVNUX0VSUk9S
ID0gbnVsbDtcblx0dmFyIElTX0VSUk9SID0ge307XG5cdGZ1bmN0aW9uIGdldFRoZW4ob2JqKSB7
XG5cdCAgdHJ5IHtcblx0ICAgIHJldHVybiBvYmoudGhlbjtcblx0ICB9IGNhdGNoIChleCkge1xu
XHQgICAgTEFTVF9FUlJPUiA9IGV4O1xuXHQgICAgcmV0dXJuIElTX0VSUk9SO1xuXHQgIH1cblx0
fVxuXHRcblx0ZnVuY3Rpb24gdHJ5Q2FsbE9uZShmbiwgYSkge1xuXHQgIHRyeSB7XG5cdCAgICBy
ZXR1cm4gZm4oYSk7XG5cdCAgfSBjYXRjaCAoZXgpIHtcblx0ICAgIExBU1RfRVJST1IgPSBleDtc
blx0ICAgIHJldHVybiBJU19FUlJPUjtcblx0ICB9XG5cdH1cblx0ZnVuY3Rpb24gdHJ5Q2FsbFR3
byhmbiwgYSwgYikge1xuXHQgIHRyeSB7XG5cdCAgICBmbihhLCBiKTtcblx0ICB9IGNhdGNoIChl
eCkge1xuXHQgICAgTEFTVF9FUlJPUiA9IGV4O1xuXHQgICAgcmV0dXJuIElTX0VSUk9SO1xuXHQg
IH1cblx0fVxuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBQcm9taXNlO1xuXHRcblx0ZnVuY3Rpb24g
UHJvbWlzZShmbikge1xuXHQgIGlmICh0eXBlb2YgdGhpcyAhPT0gJ29iamVjdCcpIHtcblx0ICAg
IHRocm93IG5ldyBUeXBlRXJyb3IoJ1Byb21pc2VzIG11c3QgYmUgY29uc3RydWN0ZWQgdmlhIG5l
dycpO1xuXHQgIH1cblx0ICBpZiAodHlwZW9mIGZuICE9PSAnZnVuY3Rpb24nKSB7XG5cdCAgICB0
aHJvdyBuZXcgVHlwZUVycm9yKCdub3QgYSBmdW5jdGlvbicpO1xuXHQgIH1cblx0ICB0aGlzLl80
NSA9IDA7XG5cdCAgdGhpcy5fODEgPSAwO1xuXHQgIHRoaXMuXzY1ID0gbnVsbDtcblx0ICB0aGlz
Ll81NCA9IG51bGw7XG5cdCAgaWYgKGZuID09PSBub29wKSByZXR1cm47XG5cdCAgZG9SZXNvbHZl
KGZuLCB0aGlzKTtcblx0fVxuXHRQcm9taXNlLl8xMCA9IG51bGw7XG5cdFByb21pc2UuXzk3ID0g
bnVsbDtcblx0UHJvbWlzZS5fNjEgPSBub29wO1xuXHRcblx0UHJvbWlzZS5wcm90b3R5cGUudGhl
biA9IGZ1bmN0aW9uKG9uRnVsZmlsbGVkLCBvblJlamVjdGVkKSB7XG5cdCAgaWYgKHRoaXMuY29u
c3RydWN0b3IgIT09IFByb21pc2UpIHtcblx0ICAgIHJldHVybiBzYWZlVGhlbih0aGlzLCBvbkZ1
bGZpbGxlZCwgb25SZWplY3RlZCk7XG5cdCAgfVxuXHQgIHZhciByZXMgPSBuZXcgUHJvbWlzZShu
b29wKTtcblx0ICBoYW5kbGUodGhpcywgbmV3IEhhbmRsZXIob25GdWxmaWxsZWQsIG9uUmVqZWN0
ZWQsIHJlcykpO1xuXHQgIHJldHVybiByZXM7XG5cdH07XG5cdFxuXHRmdW5jdGlvbiBzYWZlVGhl
bihzZWxmLCBvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCkge1xuXHQgIHJldHVybiBuZXcgc2VsZi5j
b25zdHJ1Y3RvcihmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG5cdCAgICB2YXIgcmVzID0g
bmV3IFByb21pc2Uobm9vcCk7XG5cdCAgICByZXMudGhlbihyZXNvbHZlLCByZWplY3QpO1xuXHQg
ICAgaGFuZGxlKHNlbGYsIG5ldyBIYW5kbGVyKG9uRnVsZmlsbGVkLCBvblJlamVjdGVkLCByZXMp
KTtcblx0ICB9KTtcblx0fTtcblx0ZnVuY3Rpb24gaGFuZGxlKHNlbGYsIGRlZmVycmVkKSB7XG5c
dCAgd2hpbGUgKHNlbGYuXzgxID09PSAzKSB7XG5cdCAgICBzZWxmID0gc2VsZi5fNjU7XG5cdCAg
fVxuXHQgIGlmIChQcm9taXNlLl8xMCkge1xuXHQgICAgUHJvbWlzZS5fMTAoc2VsZik7XG5cdCAg
fVxuXHQgIGlmIChzZWxmLl84MSA9PT0gMCkge1xuXHQgICAgaWYgKHNlbGYuXzQ1ID09PSAwKSB7
XG5cdCAgICAgIHNlbGYuXzQ1ID0gMTtcblx0ICAgICAgc2VsZi5fNTQgPSBkZWZlcnJlZDtcblx0
ICAgICAgcmV0dXJuO1xuXHQgICAgfVxuXHQgICAgaWYgKHNlbGYuXzQ1ID09PSAxKSB7XG5cdCAg
ICAgIHNlbGYuXzQ1ID0gMjtcblx0ICAgICAgc2VsZi5fNTQgPSBbc2VsZi5fNTQsIGRlZmVycmVk
XTtcblx0ICAgICAgcmV0dXJuO1xuXHQgICAgfVxuXHQgICAgc2VsZi5fNTQucHVzaChkZWZlcnJl
ZCk7XG5cdCAgICByZXR1cm47XG5cdCAgfVxuXHQgIGhhbmRsZVJlc29sdmVkKHNlbGYsIGRlZmVy
cmVkKTtcblx0fVxuXHRcblx0ZnVuY3Rpb24gaGFuZGxlUmVzb2x2ZWQoc2VsZiwgZGVmZXJyZWQp
IHtcblx0ICBhc2FwKGZ1bmN0aW9uKCkge1xuXHQgICAgdmFyIGNiID0gc2VsZi5fODEgPT09IDEg
PyBkZWZlcnJlZC5vbkZ1bGZpbGxlZCA6IGRlZmVycmVkLm9uUmVqZWN0ZWQ7XG5cdCAgICBpZiAo
Y2IgPT09IG51bGwpIHtcblx0ICAgICAgaWYgKHNlbGYuXzgxID09PSAxKSB7XG5cdCAgICAgICAg
cmVzb2x2ZShkZWZlcnJlZC5wcm9taXNlLCBzZWxmLl82NSk7XG5cdCAgICAgIH0gZWxzZSB7XG5c
dCAgICAgICAgcmVqZWN0KGRlZmVycmVkLnByb21pc2UsIHNlbGYuXzY1KTtcblx0ICAgICAgfVxu
XHQgICAgICByZXR1cm47XG5cdCAgICB9XG5cdCAgICB2YXIgcmV0ID0gdHJ5Q2FsbE9uZShjYiwg
c2VsZi5fNjUpO1xuXHQgICAgaWYgKHJldCA9PT0gSVNfRVJST1IpIHtcblx0ICAgICAgcmVqZWN0
KGRlZmVycmVkLnByb21pc2UsIExBU1RfRVJST1IpO1xuXHQgICAgfSBlbHNlIHtcblx0ICAgICAg
cmVzb2x2ZShkZWZlcnJlZC5wcm9taXNlLCByZXQpO1xuXHQgICAgfVxuXHQgIH0pO1xuXHR9XG5c
dGZ1bmN0aW9uIHJlc29sdmUoc2VsZiwgbmV3VmFsdWUpIHtcblx0ICAvLyBQcm9taXNlIFJlc29s
dXRpb24gUHJvY2VkdXJlOiBodHRwczovL2dpdGh1Yi5jb20vcHJvbWlzZXMtYXBsdXMvcHJvbWlz
ZXMtc3BlYyN0aGUtcHJvbWlzZS1yZXNvbHV0aW9uLXByb2NlZHVyZVxuXHQgIGlmIChuZXdWYWx1
ZSA9PT0gc2VsZikge1xuXHQgICAgcmV0dXJuIHJlamVjdChcblx0ICAgICAgc2VsZixcblx0ICAg
ICAgbmV3IFR5cGVFcnJvcignQSBwcm9taXNlIGNhbm5vdCBiZSByZXNvbHZlZCB3aXRoIGl0c2Vs
Zi4nKVxuXHQgICAgKTtcblx0ICB9XG5cdCAgaWYgKFxuXHQgICAgbmV3VmFsdWUgJiZcblx0ICAg
ICh0eXBlb2YgbmV3VmFsdWUgPT09ICdvYmplY3QnIHx8IHR5cGVvZiBuZXdWYWx1ZSA9PT0gJ2Z1
bmN0aW9uJylcblx0ICApIHtcblx0ICAgIHZhciB0aGVuID0gZ2V0VGhlbihuZXdWYWx1ZSk7XG5c
dCAgICBpZiAodGhlbiA9PT0gSVNfRVJST1IpIHtcblx0ICAgICAgcmV0dXJuIHJlamVjdChzZWxm
LCBMQVNUX0VSUk9SKTtcblx0ICAgIH1cblx0ICAgIGlmIChcblx0ICAgICAgdGhlbiA9PT0gc2Vs
Zi50aGVuICYmXG5cdCAgICAgIG5ld1ZhbHVlIGluc3RhbmNlb2YgUHJvbWlzZVxuXHQgICAgKSB7
XG5cdCAgICAgIHNlbGYuXzgxID0gMztcblx0ICAgICAgc2VsZi5fNjUgPSBuZXdWYWx1ZTtcblx0
ICAgICAgZmluYWxlKHNlbGYpO1xuXHQgICAgICByZXR1cm47XG5cdCAgICB9IGVsc2UgaWYgKHR5
cGVvZiB0aGVuID09PSAnZnVuY3Rpb24nKSB7XG5cdCAgICAgIGRvUmVzb2x2ZSh0aGVuLmJpbmQo
bmV3VmFsdWUpLCBzZWxmKTtcblx0ICAgICAgcmV0dXJuO1xuXHQgICAgfVxuXHQgIH1cblx0ICBz
ZWxmLl84MSA9IDE7XG5cdCAgc2VsZi5fNjUgPSBuZXdWYWx1ZTtcblx0ICBmaW5hbGUoc2VsZik7
XG5cdH1cblx0XG5cdGZ1bmN0aW9uIHJlamVjdChzZWxmLCBuZXdWYWx1ZSkge1xuXHQgIHNlbGYu
XzgxID0gMjtcblx0ICBzZWxmLl82NSA9IG5ld1ZhbHVlO1xuXHQgIGlmIChQcm9taXNlLl85Nykg
e1xuXHQgICAgUHJvbWlzZS5fOTcoc2VsZiwgbmV3VmFsdWUpO1xuXHQgIH1cblx0ICBmaW5hbGUo
c2VsZik7XG5cdH1cblx0ZnVuY3Rpb24gZmluYWxlKHNlbGYpIHtcblx0ICBpZiAoc2VsZi5fNDUg
PT09IDEpIHtcblx0ICAgIGhhbmRsZShzZWxmLCBzZWxmLl81NCk7XG5cdCAgICBzZWxmLl81NCA9
IG51bGw7XG5cdCAgfVxuXHQgIGlmIChzZWxmLl80NSA9PT0gMikge1xuXHQgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCBzZWxmLl81NC5sZW5ndGg7IGkrKykge1xuXHQgICAgICBoYW5kbGUoc2VsZiwg
c2VsZi5fNTRbaV0pO1xuXHQgICAgfVxuXHQgICAgc2VsZi5fNTQgPSBudWxsO1xuXHQgIH1cblx0
fVxuXHRcblx0ZnVuY3Rpb24gSGFuZGxlcihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCwgcHJvbWlz
ZSl7XG5cdCAgdGhpcy5vbkZ1bGZpbGxlZCA9IHR5cGVvZiBvbkZ1bGZpbGxlZCA9PT0gJ2Z1bmN0
aW9uJyA/IG9uRnVsZmlsbGVkIDogbnVsbDtcblx0ICB0aGlzLm9uUmVqZWN0ZWQgPSB0eXBlb2Yg
b25SZWplY3RlZCA9PT0gJ2Z1bmN0aW9uJyA/IG9uUmVqZWN0ZWQgOiBudWxsO1xuXHQgIHRoaXMu
cHJvbWlzZSA9IHByb21pc2U7XG5cdH1cblx0XG5cdC8qKlxuXHQgKiBUYWtlIGEgcG90ZW50aWFs
bHkgbWlzYmVoYXZpbmcgcmVzb2x2ZXIgZnVuY3Rpb24gYW5kIG1ha2Ugc3VyZVxuXHQgKiBvbkZ1
bGZpbGxlZCBhbmQgb25SZWplY3RlZCBhcmUgb25seSBjYWxsZWQgb25jZS5cblx0ICpcblx0ICog
TWFrZXMgbm8gZ3VhcmFudGVlcyBhYm91dCBhc3luY2hyb255LlxuXHQgKi9cblx0ZnVuY3Rpb24g
ZG9SZXNvbHZlKGZuLCBwcm9taXNlKSB7XG5cdCAgdmFyIGRvbmUgPSBmYWxzZTtcblx0ICB2YXIg
cmVzID0gdHJ5Q2FsbFR3byhmbiwgZnVuY3Rpb24gKHZhbHVlKSB7XG5cdCAgICBpZiAoZG9uZSkg
cmV0dXJuO1xuXHQgICAgZG9uZSA9IHRydWU7XG5cdCAgICByZXNvbHZlKHByb21pc2UsIHZhbHVl
KTtcblx0ICB9LCBmdW5jdGlvbiAocmVhc29uKSB7XG5cdCAgICBpZiAoZG9uZSkgcmV0dXJuO1xu
XHQgICAgZG9uZSA9IHRydWU7XG5cdCAgICByZWplY3QocHJvbWlzZSwgcmVhc29uKTtcblx0ICB9
KVxuXHQgIGlmICghZG9uZSAmJiByZXMgPT09IElTX0VSUk9SKSB7XG5cdCAgICBkb25lID0gdHJ1
ZTtcblx0ICAgIHJlamVjdChwcm9taXNlLCBMQVNUX0VSUk9SKTtcblx0ICB9XG5cdH1cblxuXG4v
KioqLyB9LFxuLyogODkgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJw
YWNrX3JlcXVpcmVfXykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBG
YWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlz
IHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3Vu
ZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlz
IHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMg
Y2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5Llxu
XHQgKlxuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdHZhciBfcHJvZEludmFyaWFu
dCA9IF9fd2VicGFja19yZXF1aXJlX18oMjMpLFxuXHQgICAgX2Fzc2lnbiA9IF9fd2VicGFja19y
ZXF1aXJlX18oNCk7XG5cdFxuXHR2YXIgUmVhY3ROb29wVXBkYXRlUXVldWUgPSBfX3dlYnBhY2tf
cmVxdWlyZV9fKDkyKTtcblx0XG5cdHZhciBjYW5EZWZpbmVQcm9wZXJ0eSA9IF9fd2VicGFja19y
ZXF1aXJlX18oOTMpO1xuXHR2YXIgZW1wdHlPYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDI0
KTtcblx0dmFyIGludmFyaWFudCA9IF9fd2VicGFja19yZXF1aXJlX18oMSk7XG5cdHZhciBsb3dQ
cmlvcml0eVdhcm5pbmcgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIyMik7XG5cdFxuXHQvKipcblx0
ICogQmFzZSBjbGFzcyBoZWxwZXJzIGZvciB0aGUgdXBkYXRpbmcgc3RhdGUgb2YgYSBjb21wb25l
bnQuXG5cdCAqL1xuXHRmdW5jdGlvbiBSZWFjdENvbXBvbmVudChwcm9wcywgY29udGV4dCwgdXBk
YXRlcikge1xuXHQgIHRoaXMucHJvcHMgPSBwcm9wcztcblx0ICB0aGlzLmNvbnRleHQgPSBjb250
ZXh0O1xuXHQgIHRoaXMucmVmcyA9IGVtcHR5T2JqZWN0O1xuXHQgIC8vIFdlIGluaXRpYWxpemUg
dGhlIGRlZmF1bHQgdXBkYXRlciBidXQgdGhlIHJlYWwgb25lIGdldHMgaW5qZWN0ZWQgYnkgdGhl
XG5cdCAgLy8gcmVuZGVyZXIuXG5cdCAgdGhpcy51cGRhdGVyID0gdXBkYXRlciB8fCBSZWFjdE5v
b3BVcGRhdGVRdWV1ZTtcblx0fVxuXHRcblx0UmVhY3RDb21wb25lbnQucHJvdG90eXBlLmlzUmVh
Y3RDb21wb25lbnQgPSB7fTtcblx0XG5cdC8qKlxuXHQgKiBTZXRzIGEgc3Vic2V0IG9mIHRoZSBz
dGF0ZS4gQWx3YXlzIHVzZSB0aGlzIHRvIG11dGF0ZVxuXHQgKiBzdGF0ZS4gWW91IHNob3VsZCB0
cmVhdCBgdGhpcy5zdGF0ZWAgYXMgaW1tdXRhYmxlLlxuXHQgKlxuXHQgKiBUaGVyZSBpcyBubyBn
dWFyYW50ZWUgdGhhdCBgdGhpcy5zdGF0ZWAgd2lsbCBiZSBpbW1lZGlhdGVseSB1cGRhdGVkLCBz
b1xuXHQgKiBhY2Nlc3NpbmcgYHRoaXMuc3RhdGVgIGFmdGVyIGNhbGxpbmcgdGhpcyBtZXRob2Qg
bWF5IHJldHVybiB0aGUgb2xkIHZhbHVlLlxuXHQgKlxuXHQgKiBUaGVyZSBpcyBubyBndWFyYW50
ZWUgdGhhdCBjYWxscyB0byBgc2V0U3RhdGVgIHdpbGwgcnVuIHN5bmNocm9ub3VzbHksXG5cdCAq
IGFzIHRoZXkgbWF5IGV2ZW50dWFsbHkgYmUgYmF0Y2hlZCB0b2dldGhlci4gIFlvdSBjYW4gcHJv
dmlkZSBhbiBvcHRpb25hbFxuXHQgKiBjYWxsYmFjayB0aGF0IHdpbGwgYmUgZXhlY3V0ZWQgd2hl
biB0aGUgY2FsbCB0byBzZXRTdGF0ZSBpcyBhY3R1YWxseVxuXHQgKiBjb21wbGV0ZWQuXG5cdCAq
XG5cdCAqIFdoZW4gYSBmdW5jdGlvbiBpcyBwcm92aWRlZCB0byBzZXRTdGF0ZSwgaXQgd2lsbCBi
ZSBjYWxsZWQgYXQgc29tZSBwb2ludCBpblxuXHQgKiB0aGUgZnV0dXJlIChub3Qgc3luY2hyb25v
dXNseSkuIEl0IHdpbGwgYmUgY2FsbGVkIHdpdGggdGhlIHVwIHRvIGRhdGVcblx0ICogY29tcG9u
ZW50IGFyZ3VtZW50cyAoc3RhdGUsIHByb3BzLCBjb250ZXh0KS4gVGhlc2UgdmFsdWVzIGNhbiBi
ZSBkaWZmZXJlbnRcblx0ICogZnJvbSB0aGlzLiogYmVjYXVzZSB5b3VyIGZ1bmN0aW9uIG1heSBi
ZSBjYWxsZWQgYWZ0ZXIgcmVjZWl2ZVByb3BzIGJ1dCBiZWZvcmVcblx0ICogc2hvdWxkQ29tcG9u
ZW50VXBkYXRlLCBhbmQgdGhpcyBuZXcgc3RhdGUsIHByb3BzLCBhbmQgY29udGV4dCB3aWxsIG5v
dCB5ZXQgYmVcblx0ICogYXNzaWduZWQgdG8gdGhpcy5cblx0ICpcblx0ICogQHBhcmFtIHtvYmpl
Y3R8ZnVuY3Rpb259IHBhcnRpYWxTdGF0ZSBOZXh0IHBhcnRpYWwgc3RhdGUgb3IgZnVuY3Rpb24g
dG9cblx0ICogICAgICAgIHByb2R1Y2UgbmV4dCBwYXJ0aWFsIHN0YXRlIHRvIGJlIG1lcmdlZCB3
aXRoIGN1cnJlbnQgc3RhdGUuXG5cdCAqIEBwYXJhbSB7P2Z1bmN0aW9ufSBjYWxsYmFjayBDYWxs
ZWQgYWZ0ZXIgc3RhdGUgaXMgdXBkYXRlZC5cblx0ICogQGZpbmFsXG5cdCAqIEBwcm90ZWN0ZWRc
blx0ICovXG5cdFJlYWN0Q29tcG9uZW50LnByb3RvdHlwZS5zZXRTdGF0ZSA9IGZ1bmN0aW9uIChw
YXJ0aWFsU3RhdGUsIGNhbGxiYWNrKSB7XG5cdCAgISh0eXBlb2YgcGFydGlhbFN0YXRlID09PSAn
b2JqZWN0JyB8fCB0eXBlb2YgcGFydGlhbFN0YXRlID09PSAnZnVuY3Rpb24nIHx8IHBhcnRpYWxT
dGF0ZSA9PSBudWxsKSA/ICBmYWxzZSA/IGludmFyaWFudChmYWxzZSwgJ3NldFN0YXRlKC4uLik6
IHRha2VzIGFuIG9iamVjdCBvZiBzdGF0ZSB2YXJpYWJsZXMgdG8gdXBkYXRlIG9yIGEgZnVuY3Rp
b24gd2hpY2ggcmV0dXJucyBhbiBvYmplY3Qgb2Ygc3RhdGUgdmFyaWFibGVzLicpIDogX3Byb2RJ
bnZhcmlhbnQoJzg1JykgOiB2b2lkIDA7XG5cdCAgdGhpcy51cGRhdGVyLmVucXVldWVTZXRTdGF0
ZSh0aGlzLCBwYXJ0aWFsU3RhdGUpO1xuXHQgIGlmIChjYWxsYmFjaykge1xuXHQgICAgdGhpcy51
cGRhdGVyLmVucXVldWVDYWxsYmFjayh0aGlzLCBjYWxsYmFjaywgJ3NldFN0YXRlJyk7XG5cdCAg
fVxuXHR9O1xuXHRcblx0LyoqXG5cdCAqIEZvcmNlcyBhbiB1cGRhdGUuIFRoaXMgc2hvdWxkIG9u
bHkgYmUgaW52b2tlZCB3aGVuIGl0IGlzIGtub3duIHdpdGhcblx0ICogY2VydGFpbnR5IHRoYXQg
d2UgYXJlICoqbm90KiogaW4gYSBET00gdHJhbnNhY3Rpb24uXG5cdCAqXG5cdCAqIFlvdSBtYXkg
d2FudCB0byBjYWxsIHRoaXMgd2hlbiB5b3Uga25vdyB0aGF0IHNvbWUgZGVlcGVyIGFzcGVjdCBv
ZiB0aGVcblx0ICogY29tcG9uZW50J3Mgc3RhdGUgaGFzIGNoYW5nZWQgYnV0IGBzZXRTdGF0ZWAg
d2FzIG5vdCBjYWxsZWQuXG5cdCAqXG5cdCAqIFRoaXMgd2lsbCBub3QgaW52b2tlIGBzaG91bGRD
b21wb25lbnRVcGRhdGVgLCBidXQgaXQgd2lsbCBpbnZva2Vcblx0ICogYGNvbXBvbmVudFdpbGxV
cGRhdGVgIGFuZCBgY29tcG9uZW50RGlkVXBkYXRlYC5cblx0ICpcblx0ICogQHBhcmFtIHs/ZnVu
Y3Rpb259IGNhbGxiYWNrIENhbGxlZCBhZnRlciB1cGRhdGUgaXMgY29tcGxldGUuXG5cdCAqIEBm
aW5hbFxuXHQgKiBAcHJvdGVjdGVkXG5cdCAqL1xuXHRSZWFjdENvbXBvbmVudC5wcm90b3R5cGUu
Zm9yY2VVcGRhdGUgPSBmdW5jdGlvbiAoY2FsbGJhY2spIHtcblx0ICB0aGlzLnVwZGF0ZXIuZW5x
dWV1ZUZvcmNlVXBkYXRlKHRoaXMpO1xuXHQgIGlmIChjYWxsYmFjaykge1xuXHQgICAgdGhpcy51
cGRhdGVyLmVucXVldWVDYWxsYmFjayh0aGlzLCBjYWxsYmFjaywgJ2ZvcmNlVXBkYXRlJyk7XG5c
dCAgfVxuXHR9O1xuXHRcblx0LyoqXG5cdCAqIERlcHJlY2F0ZWQgQVBJcy4gVGhlc2UgQVBJcyB1
c2VkIHRvIGV4aXN0IG9uIGNsYXNzaWMgUmVhY3QgY2xhc3NlcyBidXQgc2luY2Vcblx0ICogd2Ug
d291bGQgbGlrZSB0byBkZXByZWNhdGUgdGhlbSwgd2UncmUgbm90IGdvaW5nIHRvIG1vdmUgdGhl
bSBvdmVyIHRvIHRoaXNcblx0ICogbW9kZXJuIGJhc2UgY2xhc3MuIEluc3RlYWQsIHdlIGRlZmlu
ZSBhIGdldHRlciB0aGF0IHdhcm5zIGlmIGl0J3MgYWNjZXNzZWQuXG5cdCAqL1xuXHRpZiAoZmFs
c2UpIHtcblx0ICB2YXIgZGVwcmVjYXRlZEFQSXMgPSB7XG5cdCAgICBpc01vdW50ZWQ6IFsnaXNN
b3VudGVkJywgJ0luc3RlYWQsIG1ha2Ugc3VyZSB0byBjbGVhbiB1cCBzdWJzY3JpcHRpb25zIGFu
ZCBwZW5kaW5nIHJlcXVlc3RzIGluICcgKyAnY29tcG9uZW50V2lsbFVubW91bnQgdG8gcHJldmVu
dCBtZW1vcnkgbGVha3MuJ10sXG5cdCAgICByZXBsYWNlU3RhdGU6IFsncmVwbGFjZVN0YXRlJywg
J1JlZmFjdG9yIHlvdXIgY29kZSB0byB1c2Ugc2V0U3RhdGUgaW5zdGVhZCAoc2VlICcgKyAnaHR0
cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0L2lzc3Vlcy8zMjM2KS4nXVxuXHQgIH07XG5c
dCAgdmFyIGRlZmluZURlcHJlY2F0aW9uV2FybmluZyA9IGZ1bmN0aW9uIChtZXRob2ROYW1lLCBp
bmZvKSB7XG5cdCAgICBpZiAoY2FuRGVmaW5lUHJvcGVydHkpIHtcblx0ICAgICAgT2JqZWN0LmRl
ZmluZVByb3BlcnR5KFJlYWN0Q29tcG9uZW50LnByb3RvdHlwZSwgbWV0aG9kTmFtZSwge1xuXHQg
ICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuXHQgICAgICAgICAgbG93UHJpb3JpdHlXYXJuaW5n
KGZhbHNlLCAnJXMoLi4uKSBpcyBkZXByZWNhdGVkIGluIHBsYWluIEphdmFTY3JpcHQgUmVhY3Qg
Y2xhc3Nlcy4gJXMnLCBpbmZvWzBdLCBpbmZvWzFdKTtcblx0ICAgICAgICAgIHJldHVybiB1bmRl
ZmluZWQ7XG5cdCAgICAgICAgfVxuXHQgICAgICB9KTtcblx0ICAgIH1cblx0ICB9O1xuXHQgIGZv
ciAodmFyIGZuTmFtZSBpbiBkZXByZWNhdGVkQVBJcykge1xuXHQgICAgaWYgKGRlcHJlY2F0ZWRB
UElzLmhhc093blByb3BlcnR5KGZuTmFtZSkpIHtcblx0ICAgICAgZGVmaW5lRGVwcmVjYXRpb25X
YXJuaW5nKGZuTmFtZSwgZGVwcmVjYXRlZEFQSXNbZm5OYW1lXSk7XG5cdCAgICB9XG5cdCAgfVxu
XHR9XG5cdFxuXHQvKipcblx0ICogQmFzZSBjbGFzcyBoZWxwZXJzIGZvciB0aGUgdXBkYXRpbmcg
c3RhdGUgb2YgYSBjb21wb25lbnQuXG5cdCAqL1xuXHRmdW5jdGlvbiBSZWFjdFB1cmVDb21wb25l
bnQocHJvcHMsIGNvbnRleHQsIHVwZGF0ZXIpIHtcblx0ICAvLyBEdXBsaWNhdGVkIGZyb20gUmVh
Y3RDb21wb25lbnQuXG5cdCAgdGhpcy5wcm9wcyA9IHByb3BzO1xuXHQgIHRoaXMuY29udGV4dCA9
IGNvbnRleHQ7XG5cdCAgdGhpcy5yZWZzID0gZW1wdHlPYmplY3Q7XG5cdCAgLy8gV2UgaW5pdGlh
bGl6ZSB0aGUgZGVmYXVsdCB1cGRhdGVyIGJ1dCB0aGUgcmVhbCBvbmUgZ2V0cyBpbmplY3RlZCBi
eSB0aGVcblx0ICAvLyByZW5kZXJlci5cblx0ICB0aGlzLnVwZGF0ZXIgPSB1cGRhdGVyIHx8IFJl
YWN0Tm9vcFVwZGF0ZVF1ZXVlO1xuXHR9XG5cdFxuXHRmdW5jdGlvbiBDb21wb25lbnREdW1teSgp
IHt9XG5cdENvbXBvbmVudER1bW15LnByb3RvdHlwZSA9IFJlYWN0Q29tcG9uZW50LnByb3RvdHlw
ZTtcblx0UmVhY3RQdXJlQ29tcG9uZW50LnByb3RvdHlwZSA9IG5ldyBDb21wb25lbnREdW1teSgp
O1xuXHRSZWFjdFB1cmVDb21wb25lbnQucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gUmVhY3RQdXJl
Q29tcG9uZW50O1xuXHQvLyBBdm9pZCBhbiBleHRyYSBwcm90b3R5cGUganVtcCBmb3IgdGhlc2Ug
bWV0aG9kcy5cblx0X2Fzc2lnbihSZWFjdFB1cmVDb21wb25lbnQucHJvdG90eXBlLCBSZWFjdENv
bXBvbmVudC5wcm90b3R5cGUpO1xuXHRSZWFjdFB1cmVDb21wb25lbnQucHJvdG90eXBlLmlzUHVy
ZVJlYWN0Q29tcG9uZW50ID0gdHJ1ZTtcblx0XG5cdG1vZHVsZS5leHBvcnRzID0ge1xuXHQgIENv
bXBvbmVudDogUmVhY3RDb21wb25lbnQsXG5cdCAgUHVyZUNvbXBvbmVudDogUmVhY3RQdXJlQ29t
cG9uZW50XG5cdH07XG5cbi8qKiovIH0sXG4vKiA5MCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxl
LCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0LyoqXG5cdCAqIENvcHlyaWdo
dCAyMDE2LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQu
XG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1z
dHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qg
ZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICog
b2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUg
c2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqIFxuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0Jztc
blx0XG5cdHZhciBfcHJvZEludmFyaWFudCA9IF9fd2VicGFja19yZXF1aXJlX18oMjMpO1xuXHRc
blx0dmFyIFJlYWN0Q3VycmVudE93bmVyID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMSk7XG5cdFxu
XHR2YXIgaW52YXJpYW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxKTtcblx0dmFyIHdhcm5pbmcg
PSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIpO1xuXHRcblx0ZnVuY3Rpb24gaXNOYXRpdmUoZm4pIHtc
blx0ICAvLyBCYXNlZCBvbiBpc05hdGl2ZSgpIGZyb20gTG9kYXNoXG5cdCAgdmFyIGZ1bmNUb1N0
cmluZyA9IEZ1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZztcblx0ICB2YXIgaGFzT3duUHJvcGVy
dHkgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xuXHQgIHZhciByZUlzTmF0aXZl
ID0gUmVnRXhwKCdeJyArIGZ1bmNUb1N0cmluZ1xuXHQgIC8vIFRha2UgYW4gZXhhbXBsZSBuYXRp
dmUgZnVuY3Rpb24gc291cmNlIGZvciBjb21wYXJpc29uXG5cdCAgLmNhbGwoaGFzT3duUHJvcGVy
dHlcblx0ICAvLyBTdHJpcCByZWdleCBjaGFyYWN0ZXJzIHNvIHdlIGNhbiB1c2UgaXQgZm9yIHJl
Z2V4XG5cdCAgKS5yZXBsYWNlKC9bXFxcXF4kLiorPygpW1xcXXt9fF0vZywgJ1xcXFwkJidcblx0
ICAvLyBSZW1vdmUgaGFzT3duUHJvcGVydHkgZnJvbSB0aGUgdGVtcGxhdGUgdG8gbWFrZSBpdCBn
ZW5lcmljXG5cdCAgKS5yZXBsYWNlKC9oYXNPd25Qcm9wZXJ0eXwoZnVuY3Rpb24pLio/KD89XFxc
XFxcKCl8IGZvciAuKz8oPz1cXFxcXFxdKS9nLCAnJDEuKj8nKSArICckJyk7XG5cdCAgdHJ5IHtc
blx0ICAgIHZhciBzb3VyY2UgPSBmdW5jVG9TdHJpbmcuY2FsbChmbik7XG5cdCAgICByZXR1cm4g
cmVJc05hdGl2ZS50ZXN0KHNvdXJjZSk7XG5cdCAgfSBjYXRjaCAoZXJyKSB7XG5cdCAgICByZXR1
cm4gZmFsc2U7XG5cdCAgfVxuXHR9XG5cdFxuXHR2YXIgY2FuVXNlQ29sbGVjdGlvbnMgPVxuXHQv
LyBBcnJheS5mcm9tXG5cdHR5cGVvZiBBcnJheS5mcm9tID09PSAnZnVuY3Rpb24nICYmXG5cdC8v
IE1hcFxuXHR0eXBlb2YgTWFwID09PSAnZnVuY3Rpb24nICYmIGlzTmF0aXZlKE1hcCkgJiZcblx0
Ly8gTWFwLnByb3RvdHlwZS5rZXlzXG5cdE1hcC5wcm90b3R5cGUgIT0gbnVsbCAmJiB0eXBlb2Yg
TWFwLnByb3RvdHlwZS5rZXlzID09PSAnZnVuY3Rpb24nICYmIGlzTmF0aXZlKE1hcC5wcm90b3R5
cGUua2V5cykgJiZcblx0Ly8gU2V0XG5cdHR5cGVvZiBTZXQgPT09ICdmdW5jdGlvbicgJiYgaXNO
YXRpdmUoU2V0KSAmJlxuXHQvLyBTZXQucHJvdG90eXBlLmtleXNcblx0U2V0LnByb3RvdHlwZSAh
PSBudWxsICYmIHR5cGVvZiBTZXQucHJvdG90eXBlLmtleXMgPT09ICdmdW5jdGlvbicgJiYgaXNO
YXRpdmUoU2V0LnByb3RvdHlwZS5rZXlzKTtcblx0XG5cdHZhciBzZXRJdGVtO1xuXHR2YXIgZ2V0
SXRlbTtcblx0dmFyIHJlbW92ZUl0ZW07XG5cdHZhciBnZXRJdGVtSURzO1xuXHR2YXIgYWRkUm9v
dDtcblx0dmFyIHJlbW92ZVJvb3Q7XG5cdHZhciBnZXRSb290SURzO1xuXHRcblx0aWYgKGNhblVz
ZUNvbGxlY3Rpb25zKSB7XG5cdCAgdmFyIGl0ZW1NYXAgPSBuZXcgTWFwKCk7XG5cdCAgdmFyIHJv
b3RJRFNldCA9IG5ldyBTZXQoKTtcblx0XG5cdCAgc2V0SXRlbSA9IGZ1bmN0aW9uIChpZCwgaXRl
bSkge1xuXHQgICAgaXRlbU1hcC5zZXQoaWQsIGl0ZW0pO1xuXHQgIH07XG5cdCAgZ2V0SXRlbSA9
IGZ1bmN0aW9uIChpZCkge1xuXHQgICAgcmV0dXJuIGl0ZW1NYXAuZ2V0KGlkKTtcblx0ICB9O1xu
XHQgIHJlbW92ZUl0ZW0gPSBmdW5jdGlvbiAoaWQpIHtcblx0ICAgIGl0ZW1NYXBbJ2RlbGV0ZSdd
KGlkKTtcblx0ICB9O1xuXHQgIGdldEl0ZW1JRHMgPSBmdW5jdGlvbiAoKSB7XG5cdCAgICByZXR1
cm4gQXJyYXkuZnJvbShpdGVtTWFwLmtleXMoKSk7XG5cdCAgfTtcblx0XG5cdCAgYWRkUm9vdCA9
IGZ1bmN0aW9uIChpZCkge1xuXHQgICAgcm9vdElEU2V0LmFkZChpZCk7XG5cdCAgfTtcblx0ICBy
ZW1vdmVSb290ID0gZnVuY3Rpb24gKGlkKSB7XG5cdCAgICByb290SURTZXRbJ2RlbGV0ZSddKGlk
KTtcblx0ICB9O1xuXHQgIGdldFJvb3RJRHMgPSBmdW5jdGlvbiAoKSB7XG5cdCAgICByZXR1cm4g
QXJyYXkuZnJvbShyb290SURTZXQua2V5cygpKTtcblx0ICB9O1xuXHR9IGVsc2Uge1xuXHQgIHZh
ciBpdGVtQnlLZXkgPSB7fTtcblx0ICB2YXIgcm9vdEJ5S2V5ID0ge307XG5cdFxuXHQgIC8vIFVz
ZSBub24tbnVtZXJpYyBrZXlzIHRvIHByZXZlbnQgVjggcGVyZm9ybWFuY2UgaXNzdWVzOlxuXHQg
IC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9wdWxsLzcyMzJcblx0ICB2YXIg
Z2V0S2V5RnJvbUlEID0gZnVuY3Rpb24gKGlkKSB7XG5cdCAgICByZXR1cm4gJy4nICsgaWQ7XG5c
dCAgfTtcblx0ICB2YXIgZ2V0SURGcm9tS2V5ID0gZnVuY3Rpb24gKGtleSkge1xuXHQgICAgcmV0
dXJuIHBhcnNlSW50KGtleS5zdWJzdHIoMSksIDEwKTtcblx0ICB9O1xuXHRcblx0ICBzZXRJdGVt
ID0gZnVuY3Rpb24gKGlkLCBpdGVtKSB7XG5cdCAgICB2YXIga2V5ID0gZ2V0S2V5RnJvbUlEKGlk
KTtcblx0ICAgIGl0ZW1CeUtleVtrZXldID0gaXRlbTtcblx0ICB9O1xuXHQgIGdldEl0ZW0gPSBm
dW5jdGlvbiAoaWQpIHtcblx0ICAgIHZhciBrZXkgPSBnZXRLZXlGcm9tSUQoaWQpO1xuXHQgICAg
cmV0dXJuIGl0ZW1CeUtleVtrZXldO1xuXHQgIH07XG5cdCAgcmVtb3ZlSXRlbSA9IGZ1bmN0aW9u
IChpZCkge1xuXHQgICAgdmFyIGtleSA9IGdldEtleUZyb21JRChpZCk7XG5cdCAgICBkZWxldGUg
aXRlbUJ5S2V5W2tleV07XG5cdCAgfTtcblx0ICBnZXRJdGVtSURzID0gZnVuY3Rpb24gKCkge1xu
XHQgICAgcmV0dXJuIE9iamVjdC5rZXlzKGl0ZW1CeUtleSkubWFwKGdldElERnJvbUtleSk7XG5c
dCAgfTtcblx0XG5cdCAgYWRkUm9vdCA9IGZ1bmN0aW9uIChpZCkge1xuXHQgICAgdmFyIGtleSA9
IGdldEtleUZyb21JRChpZCk7XG5cdCAgICByb290QnlLZXlba2V5XSA9IHRydWU7XG5cdCAgfTtc
blx0ICByZW1vdmVSb290ID0gZnVuY3Rpb24gKGlkKSB7XG5cdCAgICB2YXIga2V5ID0gZ2V0S2V5
RnJvbUlEKGlkKTtcblx0ICAgIGRlbGV0ZSByb290QnlLZXlba2V5XTtcblx0ICB9O1xuXHQgIGdl
dFJvb3RJRHMgPSBmdW5jdGlvbiAoKSB7XG5cdCAgICByZXR1cm4gT2JqZWN0LmtleXMocm9vdEJ5
S2V5KS5tYXAoZ2V0SURGcm9tS2V5KTtcblx0ICB9O1xuXHR9XG5cdFxuXHR2YXIgdW5tb3VudGVk
SURzID0gW107XG5cdFxuXHRmdW5jdGlvbiBwdXJnZURlZXAoaWQpIHtcblx0ICB2YXIgaXRlbSA9
IGdldEl0ZW0oaWQpO1xuXHQgIGlmIChpdGVtKSB7XG5cdCAgICB2YXIgY2hpbGRJRHMgPSBpdGVt
LmNoaWxkSURzO1xuXHRcblx0ICAgIHJlbW92ZUl0ZW0oaWQpO1xuXHQgICAgY2hpbGRJRHMuZm9y
RWFjaChwdXJnZURlZXApO1xuXHQgIH1cblx0fVxuXHRcblx0ZnVuY3Rpb24gZGVzY3JpYmVDb21w
b25lbnRGcmFtZShuYW1lLCBzb3VyY2UsIG93bmVyTmFtZSkge1xuXHQgIHJldHVybiAnXFxuICAg
IGluICcgKyAobmFtZSB8fCAnVW5rbm93bicpICsgKHNvdXJjZSA/ICcgKGF0ICcgKyBzb3VyY2Uu
ZmlsZU5hbWUucmVwbGFjZSgvXi4qW1xcXFxcXC9dLywgJycpICsgJzonICsgc291cmNlLmxpbmVO
dW1iZXIgKyAnKScgOiBvd25lck5hbWUgPyAnIChjcmVhdGVkIGJ5ICcgKyBvd25lck5hbWUgKyAn
KScgOiAnJyk7XG5cdH1cblx0XG5cdGZ1bmN0aW9uIGdldERpc3BsYXlOYW1lKGVsZW1lbnQpIHtc
blx0ICBpZiAoZWxlbWVudCA9PSBudWxsKSB7XG5cdCAgICByZXR1cm4gJyNlbXB0eSc7XG5cdCAg
fSBlbHNlIGlmICh0eXBlb2YgZWxlbWVudCA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIGVsZW1lbnQg
PT09ICdudW1iZXInKSB7XG5cdCAgICByZXR1cm4gJyN0ZXh0Jztcblx0ICB9IGVsc2UgaWYgKHR5
cGVvZiBlbGVtZW50LnR5cGUgPT09ICdzdHJpbmcnKSB7XG5cdCAgICByZXR1cm4gZWxlbWVudC50
eXBlO1xuXHQgIH0gZWxzZSB7XG5cdCAgICByZXR1cm4gZWxlbWVudC50eXBlLmRpc3BsYXlOYW1l
IHx8IGVsZW1lbnQudHlwZS5uYW1lIHx8ICdVbmtub3duJztcblx0ICB9XG5cdH1cblx0XG5cdGZ1
bmN0aW9uIGRlc2NyaWJlSUQoaWQpIHtcblx0ICB2YXIgbmFtZSA9IFJlYWN0Q29tcG9uZW50VHJl
ZUhvb2suZ2V0RGlzcGxheU5hbWUoaWQpO1xuXHQgIHZhciBlbGVtZW50ID0gUmVhY3RDb21wb25l
bnRUcmVlSG9vay5nZXRFbGVtZW50KGlkKTtcblx0ICB2YXIgb3duZXJJRCA9IFJlYWN0Q29tcG9u
ZW50VHJlZUhvb2suZ2V0T3duZXJJRChpZCk7XG5cdCAgdmFyIG93bmVyTmFtZTtcblx0ICBpZiAo
b3duZXJJRCkge1xuXHQgICAgb3duZXJOYW1lID0gUmVhY3RDb21wb25lbnRUcmVlSG9vay5nZXRE
aXNwbGF5TmFtZShvd25lcklEKTtcblx0ICB9XG5cdCAgIGZhbHNlID8gd2FybmluZyhlbGVtZW50
LCAnUmVhY3RDb21wb25lbnRUcmVlSG9vazogTWlzc2luZyBSZWFjdCBlbGVtZW50IGZvciBkZWJ1
Z0lEICVzIHdoZW4gJyArICdidWlsZGluZyBzdGFjaycsIGlkKSA6IHZvaWQgMDtcblx0ICByZXR1
cm4gZGVzY3JpYmVDb21wb25lbnRGcmFtZShuYW1lLCBlbGVtZW50ICYmIGVsZW1lbnQuX3NvdXJj
ZSwgb3duZXJOYW1lKTtcblx0fVxuXHRcblx0dmFyIFJlYWN0Q29tcG9uZW50VHJlZUhvb2sgPSB7
XG5cdCAgb25TZXRDaGlsZHJlbjogZnVuY3Rpb24gKGlkLCBuZXh0Q2hpbGRJRHMpIHtcblx0ICAg
IHZhciBpdGVtID0gZ2V0SXRlbShpZCk7XG5cdCAgICAhaXRlbSA/ICBmYWxzZSA/IGludmFyaWFu
dChmYWxzZSwgJ0l0ZW0gbXVzdCBoYXZlIGJlZW4gc2V0JykgOiBfcHJvZEludmFyaWFudCgnMTQ0
JykgOiB2b2lkIDA7XG5cdCAgICBpdGVtLmNoaWxkSURzID0gbmV4dENoaWxkSURzO1xuXHRcblx0
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbmV4dENoaWxkSURzLmxlbmd0aDsgaSsrKSB7XG5cdCAg
ICAgIHZhciBuZXh0Q2hpbGRJRCA9IG5leHRDaGlsZElEc1tpXTtcblx0ICAgICAgdmFyIG5leHRD
aGlsZCA9IGdldEl0ZW0obmV4dENoaWxkSUQpO1xuXHQgICAgICAhbmV4dENoaWxkID8gIGZhbHNl
ID8gaW52YXJpYW50KGZhbHNlLCAnRXhwZWN0ZWQgaG9vayBldmVudHMgdG8gZmlyZSBmb3IgdGhl
IGNoaWxkIGJlZm9yZSBpdHMgcGFyZW50IGluY2x1ZGVzIGl0IGluIG9uU2V0Q2hpbGRyZW4oKS4n
KSA6IF9wcm9kSW52YXJpYW50KCcxNDAnKSA6IHZvaWQgMDtcblx0ICAgICAgIShuZXh0Q2hpbGQu
Y2hpbGRJRHMgIT0gbnVsbCB8fCB0eXBlb2YgbmV4dENoaWxkLmVsZW1lbnQgIT09ICdvYmplY3Qn
IHx8IG5leHRDaGlsZC5lbGVtZW50ID09IG51bGwpID8gIGZhbHNlID8gaW52YXJpYW50KGZhbHNl
LCAnRXhwZWN0ZWQgb25TZXRDaGlsZHJlbigpIHRvIGZpcmUgZm9yIGEgY29udGFpbmVyIGNoaWxk
IGJlZm9yZSBpdHMgcGFyZW50IGluY2x1ZGVzIGl0IGluIG9uU2V0Q2hpbGRyZW4oKS4nKSA6IF9w
cm9kSW52YXJpYW50KCcxNDEnKSA6IHZvaWQgMDtcblx0ICAgICAgIW5leHRDaGlsZC5pc01vdW50
ZWQgPyAgZmFsc2UgPyBpbnZhcmlhbnQoZmFsc2UsICdFeHBlY3RlZCBvbk1vdW50Q29tcG9uZW50
KCkgdG8gZmlyZSBmb3IgdGhlIGNoaWxkIGJlZm9yZSBpdHMgcGFyZW50IGluY2x1ZGVzIGl0IGlu
IG9uU2V0Q2hpbGRyZW4oKS4nKSA6IF9wcm9kSW52YXJpYW50KCc3MScpIDogdm9pZCAwO1xuXHQg
ICAgICBpZiAobmV4dENoaWxkLnBhcmVudElEID09IG51bGwpIHtcblx0ICAgICAgICBuZXh0Q2hp
bGQucGFyZW50SUQgPSBpZDtcblx0ICAgICAgICAvLyBUT0RPOiBUaGlzIHNob3VsZG4ndCBiZSBu
ZWNlc3NhcnkgYnV0IG1vdW50aW5nIGEgbmV3IHJvb3QgZHVyaW5nIGluXG5cdCAgICAgICAgLy8g
Y29tcG9uZW50V2lsbE1vdW50IGN1cnJlbnRseSBjYXVzZXMgbm90LXlldC1tb3VudGVkIGNvbXBv
bmVudHMgdG9cblx0ICAgICAgICAvLyBiZSBwdXJnZWQgZnJvbSBvdXIgdHJlZSBkYXRhIHNvIHRo
ZWlyIHBhcmVudCBpZCBpcyBtaXNzaW5nLlxuXHQgICAgICB9XG5cdCAgICAgICEobmV4dENoaWxk
LnBhcmVudElEID09PSBpZCkgPyAgZmFsc2UgPyBpbnZhcmlhbnQoZmFsc2UsICdFeHBlY3RlZCBv
bkJlZm9yZU1vdW50Q29tcG9uZW50KCkgcGFyZW50IGFuZCBvblNldENoaWxkcmVuKCkgdG8gYmUg
Y29uc2lzdGVudCAoJXMgaGFzIHBhcmVudHMgJXMgYW5kICVzKS4nLCBuZXh0Q2hpbGRJRCwgbmV4
dENoaWxkLnBhcmVudElELCBpZCkgOiBfcHJvZEludmFyaWFudCgnMTQyJywgbmV4dENoaWxkSUQs
IG5leHRDaGlsZC5wYXJlbnRJRCwgaWQpIDogdm9pZCAwO1xuXHQgICAgfVxuXHQgIH0sXG5cdCAg
b25CZWZvcmVNb3VudENvbXBvbmVudDogZnVuY3Rpb24gKGlkLCBlbGVtZW50LCBwYXJlbnRJRCkg
e1xuXHQgICAgdmFyIGl0ZW0gPSB7XG5cdCAgICAgIGVsZW1lbnQ6IGVsZW1lbnQsXG5cdCAgICAg
IHBhcmVudElEOiBwYXJlbnRJRCxcblx0ICAgICAgdGV4dDogbnVsbCxcblx0ICAgICAgY2hpbGRJ
RHM6IFtdLFxuXHQgICAgICBpc01vdW50ZWQ6IGZhbHNlLFxuXHQgICAgICB1cGRhdGVDb3VudDog
MFxuXHQgICAgfTtcblx0ICAgIHNldEl0ZW0oaWQsIGl0ZW0pO1xuXHQgIH0sXG5cdCAgb25CZWZv
cmVVcGRhdGVDb21wb25lbnQ6IGZ1bmN0aW9uIChpZCwgZWxlbWVudCkge1xuXHQgICAgdmFyIGl0
ZW0gPSBnZXRJdGVtKGlkKTtcblx0ICAgIGlmICghaXRlbSB8fCAhaXRlbS5pc01vdW50ZWQpIHtc
blx0ICAgICAgLy8gV2UgbWF5IGVuZCB1cCBoZXJlIGFzIGEgcmVzdWx0IG9mIHNldFN0YXRlKCkg
aW4gY29tcG9uZW50V2lsbFVubW91bnQoKS5cblx0ICAgICAgLy8gSW4gdGhpcyBjYXNlLCBpZ25v
cmUgdGhlIGVsZW1lbnQuXG5cdCAgICAgIHJldHVybjtcblx0ICAgIH1cblx0ICAgIGl0ZW0uZWxl
bWVudCA9IGVsZW1lbnQ7XG5cdCAgfSxcblx0ICBvbk1vdW50Q29tcG9uZW50OiBmdW5jdGlvbiAo
aWQpIHtcblx0ICAgIHZhciBpdGVtID0gZ2V0SXRlbShpZCk7XG5cdCAgICAhaXRlbSA/ICBmYWxz
ZSA/IGludmFyaWFudChmYWxzZSwgJ0l0ZW0gbXVzdCBoYXZlIGJlZW4gc2V0JykgOiBfcHJvZElu
dmFyaWFudCgnMTQ0JykgOiB2b2lkIDA7XG5cdCAgICBpdGVtLmlzTW91bnRlZCA9IHRydWU7XG5c
dCAgICB2YXIgaXNSb290ID0gaXRlbS5wYXJlbnRJRCA9PT0gMDtcblx0ICAgIGlmIChpc1Jvb3Qp
IHtcblx0ICAgICAgYWRkUm9vdChpZCk7XG5cdCAgICB9XG5cdCAgfSxcblx0ICBvblVwZGF0ZUNv
bXBvbmVudDogZnVuY3Rpb24gKGlkKSB7XG5cdCAgICB2YXIgaXRlbSA9IGdldEl0ZW0oaWQpO1xu
XHQgICAgaWYgKCFpdGVtIHx8ICFpdGVtLmlzTW91bnRlZCkge1xuXHQgICAgICAvLyBXZSBtYXkg
ZW5kIHVwIGhlcmUgYXMgYSByZXN1bHQgb2Ygc2V0U3RhdGUoKSBpbiBjb21wb25lbnRXaWxsVW5t
b3VudCgpLlxuXHQgICAgICAvLyBJbiB0aGlzIGNhc2UsIGlnbm9yZSB0aGUgZWxlbWVudC5cblx0
ICAgICAgcmV0dXJuO1xuXHQgICAgfVxuXHQgICAgaXRlbS51cGRhdGVDb3VudCsrO1xuXHQgIH0s
XG5cdCAgb25Vbm1vdW50Q29tcG9uZW50OiBmdW5jdGlvbiAoaWQpIHtcblx0ICAgIHZhciBpdGVt
ID0gZ2V0SXRlbShpZCk7XG5cdCAgICBpZiAoaXRlbSkge1xuXHQgICAgICAvLyBXZSBuZWVkIHRv
IGNoZWNrIGlmIGl0IGV4aXN0cy5cblx0ICAgICAgLy8gYGl0ZW1gIG1pZ2h0IG5vdCBleGlzdCBp
ZiBpdCBpcyBpbnNpZGUgYW4gZXJyb3IgYm91bmRhcnksIGFuZCBhIHNpYmxpbmdcblx0ICAgICAg
Ly8gZXJyb3IgYm91bmRhcnkgY2hpbGQgdGhyZXcgd2hpbGUgbW91bnRpbmcuIFRoZW4gdGhpcyBp
bnN0YW5jZSBuZXZlclxuXHQgICAgICAvLyBnb3QgYSBjaGFuY2UgdG8gbW91bnQsIGJ1dCBpdCBz
dGlsbCBnZXRzIGFuIHVubW91bnRpbmcgZXZlbnQgZHVyaW5nXG5cdCAgICAgIC8vIHRoZSBlcnJv
ciBib3VuZGFyeSBjbGVhbnVwLlxuXHQgICAgICBpdGVtLmlzTW91bnRlZCA9IGZhbHNlO1xuXHQg
ICAgICB2YXIgaXNSb290ID0gaXRlbS5wYXJlbnRJRCA9PT0gMDtcblx0ICAgICAgaWYgKGlzUm9v
dCkge1xuXHQgICAgICAgIHJlbW92ZVJvb3QoaWQpO1xuXHQgICAgICB9XG5cdCAgICB9XG5cdCAg
ICB1bm1vdW50ZWRJRHMucHVzaChpZCk7XG5cdCAgfSxcblx0ICBwdXJnZVVubW91bnRlZENvbXBv
bmVudHM6IGZ1bmN0aW9uICgpIHtcblx0ICAgIGlmIChSZWFjdENvbXBvbmVudFRyZWVIb29rLl9w
cmV2ZW50UHVyZ2luZykge1xuXHQgICAgICAvLyBTaG91bGQgb25seSBiZSB1c2VkIGZvciB0ZXN0
aW5nLlxuXHQgICAgICByZXR1cm47XG5cdCAgICB9XG5cdFxuXHQgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCB1bm1vdW50ZWRJRHMubGVuZ3RoOyBpKyspIHtcblx0ICAgICAgdmFyIGlkID0gdW5tb3Vu
dGVkSURzW2ldO1xuXHQgICAgICBwdXJnZURlZXAoaWQpO1xuXHQgICAgfVxuXHQgICAgdW5tb3Vu
dGVkSURzLmxlbmd0aCA9IDA7XG5cdCAgfSxcblx0ICBpc01vdW50ZWQ6IGZ1bmN0aW9uIChpZCkg
e1xuXHQgICAgdmFyIGl0ZW0gPSBnZXRJdGVtKGlkKTtcblx0ICAgIHJldHVybiBpdGVtID8gaXRl
bS5pc01vdW50ZWQgOiBmYWxzZTtcblx0ICB9LFxuXHQgIGdldEN1cnJlbnRTdGFja0FkZGVuZHVt
OiBmdW5jdGlvbiAodG9wRWxlbWVudCkge1xuXHQgICAgdmFyIGluZm8gPSAnJztcblx0ICAgIGlm
ICh0b3BFbGVtZW50KSB7XG5cdCAgICAgIHZhciBuYW1lID0gZ2V0RGlzcGxheU5hbWUodG9wRWxl
bWVudCk7XG5cdCAgICAgIHZhciBvd25lciA9IHRvcEVsZW1lbnQuX293bmVyO1xuXHQgICAgICBp
bmZvICs9IGRlc2NyaWJlQ29tcG9uZW50RnJhbWUobmFtZSwgdG9wRWxlbWVudC5fc291cmNlLCBv
d25lciAmJiBvd25lci5nZXROYW1lKCkpO1xuXHQgICAgfVxuXHRcblx0ICAgIHZhciBjdXJyZW50
T3duZXIgPSBSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50O1xuXHQgICAgdmFyIGlkID0gY3VycmVu
dE93bmVyICYmIGN1cnJlbnRPd25lci5fZGVidWdJRDtcblx0XG5cdCAgICBpbmZvICs9IFJlYWN0
Q29tcG9uZW50VHJlZUhvb2suZ2V0U3RhY2tBZGRlbmR1bUJ5SUQoaWQpO1xuXHQgICAgcmV0dXJu
IGluZm87XG5cdCAgfSxcblx0ICBnZXRTdGFja0FkZGVuZHVtQnlJRDogZnVuY3Rpb24gKGlkKSB7
XG5cdCAgICB2YXIgaW5mbyA9ICcnO1xuXHQgICAgd2hpbGUgKGlkKSB7XG5cdCAgICAgIGluZm8g
Kz0gZGVzY3JpYmVJRChpZCk7XG5cdCAgICAgIGlkID0gUmVhY3RDb21wb25lbnRUcmVlSG9vay5n
ZXRQYXJlbnRJRChpZCk7XG5cdCAgICB9XG5cdCAgICByZXR1cm4gaW5mbztcblx0ICB9LFxuXHQg
IGdldENoaWxkSURzOiBmdW5jdGlvbiAoaWQpIHtcblx0ICAgIHZhciBpdGVtID0gZ2V0SXRlbShp
ZCk7XG5cdCAgICByZXR1cm4gaXRlbSA/IGl0ZW0uY2hpbGRJRHMgOiBbXTtcblx0ICB9LFxuXHQg
IGdldERpc3BsYXlOYW1lOiBmdW5jdGlvbiAoaWQpIHtcblx0ICAgIHZhciBlbGVtZW50ID0gUmVh
Y3RDb21wb25lbnRUcmVlSG9vay5nZXRFbGVtZW50KGlkKTtcblx0ICAgIGlmICghZWxlbWVudCkg
e1xuXHQgICAgICByZXR1cm4gbnVsbDtcblx0ICAgIH1cblx0ICAgIHJldHVybiBnZXREaXNwbGF5
TmFtZShlbGVtZW50KTtcblx0ICB9LFxuXHQgIGdldEVsZW1lbnQ6IGZ1bmN0aW9uIChpZCkge1xu
XHQgICAgdmFyIGl0ZW0gPSBnZXRJdGVtKGlkKTtcblx0ICAgIHJldHVybiBpdGVtID8gaXRlbS5l
bGVtZW50IDogbnVsbDtcblx0ICB9LFxuXHQgIGdldE93bmVySUQ6IGZ1bmN0aW9uIChpZCkge1xu
XHQgICAgdmFyIGVsZW1lbnQgPSBSZWFjdENvbXBvbmVudFRyZWVIb29rLmdldEVsZW1lbnQoaWQp
O1xuXHQgICAgaWYgKCFlbGVtZW50IHx8ICFlbGVtZW50Ll9vd25lcikge1xuXHQgICAgICByZXR1
cm4gbnVsbDtcblx0ICAgIH1cblx0ICAgIHJldHVybiBlbGVtZW50Ll9vd25lci5fZGVidWdJRDtc
blx0ICB9LFxuXHQgIGdldFBhcmVudElEOiBmdW5jdGlvbiAoaWQpIHtcblx0ICAgIHZhciBpdGVt
ID0gZ2V0SXRlbShpZCk7XG5cdCAgICByZXR1cm4gaXRlbSA/IGl0ZW0ucGFyZW50SUQgOiBudWxs
O1xuXHQgIH0sXG5cdCAgZ2V0U291cmNlOiBmdW5jdGlvbiAoaWQpIHtcblx0ICAgIHZhciBpdGVt
ID0gZ2V0SXRlbShpZCk7XG5cdCAgICB2YXIgZWxlbWVudCA9IGl0ZW0gPyBpdGVtLmVsZW1lbnQg
OiBudWxsO1xuXHQgICAgdmFyIHNvdXJjZSA9IGVsZW1lbnQgIT0gbnVsbCA/IGVsZW1lbnQuX3Nv
dXJjZSA6IG51bGw7XG5cdCAgICByZXR1cm4gc291cmNlO1xuXHQgIH0sXG5cdCAgZ2V0VGV4dDog
ZnVuY3Rpb24gKGlkKSB7XG5cdCAgICB2YXIgZWxlbWVudCA9IFJlYWN0Q29tcG9uZW50VHJlZUhv
b2suZ2V0RWxlbWVudChpZCk7XG5cdCAgICBpZiAodHlwZW9mIGVsZW1lbnQgPT09ICdzdHJpbmcn
KSB7XG5cdCAgICAgIHJldHVybiBlbGVtZW50O1xuXHQgICAgfSBlbHNlIGlmICh0eXBlb2YgZWxl
bWVudCA9PT0gJ251bWJlcicpIHtcblx0ICAgICAgcmV0dXJuICcnICsgZWxlbWVudDtcblx0ICAg
IH0gZWxzZSB7XG5cdCAgICAgIHJldHVybiBudWxsO1xuXHQgICAgfVxuXHQgIH0sXG5cdCAgZ2V0
VXBkYXRlQ291bnQ6IGZ1bmN0aW9uIChpZCkge1xuXHQgICAgdmFyIGl0ZW0gPSBnZXRJdGVtKGlk
KTtcblx0ICAgIHJldHVybiBpdGVtID8gaXRlbS51cGRhdGVDb3VudCA6IDA7XG5cdCAgfSxcblx0
XG5cdFxuXHQgIGdldFJvb3RJRHM6IGdldFJvb3RJRHMsXG5cdCAgZ2V0UmVnaXN0ZXJlZElEczog
Z2V0SXRlbUlEcyxcblx0XG5cdCAgcHVzaE5vblN0YW5kYXJkV2FybmluZ1N0YWNrOiBmdW5jdGlv
biAoaXNDcmVhdGluZ0VsZW1lbnQsIGN1cnJlbnRTb3VyY2UpIHtcblx0ICAgIGlmICh0eXBlb2Yg
Y29uc29sZS5yZWFjdFN0YWNrICE9PSAnZnVuY3Rpb24nKSB7XG5cdCAgICAgIHJldHVybjtcblx0
ICAgIH1cblx0XG5cdCAgICB2YXIgc3RhY2sgPSBbXTtcblx0ICAgIHZhciBjdXJyZW50T3duZXIg
PSBSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50O1xuXHQgICAgdmFyIGlkID0gY3VycmVudE93bmVy
ICYmIGN1cnJlbnRPd25lci5fZGVidWdJRDtcblx0XG5cdCAgICB0cnkge1xuXHQgICAgICBpZiAo
aXNDcmVhdGluZ0VsZW1lbnQpIHtcblx0ICAgICAgICBzdGFjay5wdXNoKHtcblx0ICAgICAgICAg
IG5hbWU6IGlkID8gUmVhY3RDb21wb25lbnRUcmVlSG9vay5nZXREaXNwbGF5TmFtZShpZCkgOiBu
dWxsLFxuXHQgICAgICAgICAgZmlsZU5hbWU6IGN1cnJlbnRTb3VyY2UgPyBjdXJyZW50U291cmNl
LmZpbGVOYW1lIDogbnVsbCxcblx0ICAgICAgICAgIGxpbmVOdW1iZXI6IGN1cnJlbnRTb3VyY2Ug
PyBjdXJyZW50U291cmNlLmxpbmVOdW1iZXIgOiBudWxsXG5cdCAgICAgICAgfSk7XG5cdCAgICAg
IH1cblx0XG5cdCAgICAgIHdoaWxlIChpZCkge1xuXHQgICAgICAgIHZhciBlbGVtZW50ID0gUmVh
Y3RDb21wb25lbnRUcmVlSG9vay5nZXRFbGVtZW50KGlkKTtcblx0ICAgICAgICB2YXIgcGFyZW50
SUQgPSBSZWFjdENvbXBvbmVudFRyZWVIb29rLmdldFBhcmVudElEKGlkKTtcblx0ICAgICAgICB2
YXIgb3duZXJJRCA9IFJlYWN0Q29tcG9uZW50VHJlZUhvb2suZ2V0T3duZXJJRChpZCk7XG5cdCAg
ICAgICAgdmFyIG93bmVyTmFtZSA9IG93bmVySUQgPyBSZWFjdENvbXBvbmVudFRyZWVIb29rLmdl
dERpc3BsYXlOYW1lKG93bmVySUQpIDogbnVsbDtcblx0ICAgICAgICB2YXIgc291cmNlID0gZWxl
bWVudCAmJiBlbGVtZW50Ll9zb3VyY2U7XG5cdCAgICAgICAgc3RhY2sucHVzaCh7XG5cdCAgICAg
ICAgICBuYW1lOiBvd25lck5hbWUsXG5cdCAgICAgICAgICBmaWxlTmFtZTogc291cmNlID8gc291
cmNlLmZpbGVOYW1lIDogbnVsbCxcblx0ICAgICAgICAgIGxpbmVOdW1iZXI6IHNvdXJjZSA/IHNv
dXJjZS5saW5lTnVtYmVyIDogbnVsbFxuXHQgICAgICAgIH0pO1xuXHQgICAgICAgIGlkID0gcGFy
ZW50SUQ7XG5cdCAgICAgIH1cblx0ICAgIH0gY2F0Y2ggKGVycikge1xuXHQgICAgICAvLyBJbnRl
cm5hbCBzdGF0ZSBpcyBtZXNzZWQgdXAuXG5cdCAgICAgIC8vIFN0b3AgYnVpbGRpbmcgdGhlIHN0
YWNrIChpdCdzIGp1c3QgYSBuaWNlIHRvIGhhdmUpLlxuXHQgICAgfVxuXHRcblx0ICAgIGNvbnNv
bGUucmVhY3RTdGFjayhzdGFjayk7XG5cdCAgfSxcblx0ICBwb3BOb25TdGFuZGFyZFdhcm5pbmdT
dGFjazogZnVuY3Rpb24gKCkge1xuXHQgICAgaWYgKHR5cGVvZiBjb25zb2xlLnJlYWN0U3RhY2tF
bmQgIT09ICdmdW5jdGlvbicpIHtcblx0ICAgICAgcmV0dXJuO1xuXHQgICAgfVxuXHQgICAgY29u
c29sZS5yZWFjdFN0YWNrRW5kKCk7XG5cdCAgfVxuXHR9O1xuXHRcblx0bW9kdWxlLmV4cG9ydHMg
PSBSZWFjdENvbXBvbmVudFRyZWVIb29rO1xuXG4vKioqLyB9LFxuLyogOTEgKi9cbi8qKiovIGZ1
bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxNC1w
cmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxu
XHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGlj
ZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9y
eSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVu
dCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGly
ZWN0b3J5LlxuXHQgKlxuXHQgKiBcblx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHQv
LyBUaGUgU3ltYm9sIHVzZWQgdG8gdGFnIHRoZSBSZWFjdEVsZW1lbnQgdHlwZS4gSWYgdGhlcmUg
aXMgbm8gbmF0aXZlIFN5bWJvbFxuXHQvLyBub3IgcG9seWZpbGwsIHRoZW4gYSBwbGFpbiBudW1i
ZXIgaXMgdXNlZCBmb3IgcGVyZm9ybWFuY2UuXG5cdFxuXHR2YXIgUkVBQ1RfRUxFTUVOVF9UWVBF
ID0gdHlwZW9mIFN5bWJvbCA9PT0gJ2Z1bmN0aW9uJyAmJiBTeW1ib2xbJ2ZvciddICYmIFN5bWJv
bFsnZm9yJ10oJ3JlYWN0LmVsZW1lbnQnKSB8fCAweGVhYzc7XG5cdFxuXHRtb2R1bGUuZXhwb3J0
cyA9IFJFQUNUX0VMRU1FTlRfVFlQRTtcblxuLyoqKi8gfSxcbi8qIDkyICovXG4vKioqLyBmdW5j
dGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvKipcblx0
ICogQ29weXJpZ2h0IDIwMTUtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0
cyByZXNlcnZlZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRl
ciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBp
biB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBn
cmFudFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBm
aWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpcblx0ICovXG5cdFxuXHQndXNlIHN0cmlj
dCc7XG5cdFxuXHR2YXIgd2FybmluZyA9IF9fd2VicGFja19yZXF1aXJlX18oMik7XG5cdFxuXHRm
dW5jdGlvbiB3YXJuTm9vcChwdWJsaWNJbnN0YW5jZSwgY2FsbGVyTmFtZSkge1xuXHQgIGlmIChm
YWxzZSkge1xuXHQgICAgdmFyIGNvbnN0cnVjdG9yID0gcHVibGljSW5zdGFuY2UuY29uc3RydWN0
b3I7XG5cdCAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2Fybmlu
ZyhmYWxzZSwgJyVzKC4uLik6IENhbiBvbmx5IHVwZGF0ZSBhIG1vdW50ZWQgb3IgbW91bnRpbmcg
Y29tcG9uZW50LiAnICsgJ1RoaXMgdXN1YWxseSBtZWFucyB5b3UgY2FsbGVkICVzKCkgb24gYW4g
dW5tb3VudGVkIGNvbXBvbmVudC4gJyArICdUaGlzIGlzIGEgbm8tb3AuIFBsZWFzZSBjaGVjayB0
aGUgY29kZSBmb3IgdGhlICVzIGNvbXBvbmVudC4nLCBjYWxsZXJOYW1lLCBjYWxsZXJOYW1lLCBj
b25zdHJ1Y3RvciAmJiAoY29uc3RydWN0b3IuZGlzcGxheU5hbWUgfHwgY29uc3RydWN0b3IubmFt
ZSkgfHwgJ1JlYWN0Q2xhc3MnKSA6IHZvaWQgMDtcblx0ICB9XG5cdH1cblx0XG5cdC8qKlxuXHQg
KiBUaGlzIGlzIHRoZSBhYnN0cmFjdCBBUEkgZm9yIGFuIHVwZGF0ZSBxdWV1ZS5cblx0ICovXG5c
dHZhciBSZWFjdE5vb3BVcGRhdGVRdWV1ZSA9IHtcblx0ICAvKipcblx0ICAgKiBDaGVja3Mgd2hl
dGhlciBvciBub3QgdGhpcyBjb21wb3NpdGUgY29tcG9uZW50IGlzIG1vdW50ZWQuXG5cdCAgICog
QHBhcmFtIHtSZWFjdENsYXNzfSBwdWJsaWNJbnN0YW5jZSBUaGUgaW5zdGFuY2Ugd2Ugd2FudCB0
byB0ZXN0LlxuXHQgICAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUgaWYgbW91bnRlZCwgZmFsc2Ug
b3RoZXJ3aXNlLlxuXHQgICAqIEBwcm90ZWN0ZWRcblx0ICAgKiBAZmluYWxcblx0ICAgKi9cblx0
ICBpc01vdW50ZWQ6IGZ1bmN0aW9uIChwdWJsaWNJbnN0YW5jZSkge1xuXHQgICAgcmV0dXJuIGZh
bHNlO1xuXHQgIH0sXG5cdFxuXHQgIC8qKlxuXHQgICAqIEVucXVldWUgYSBjYWxsYmFjayB0aGF0
IHdpbGwgYmUgZXhlY3V0ZWQgYWZ0ZXIgYWxsIHRoZSBwZW5kaW5nIHVwZGF0ZXNcblx0ICAgKiBo
YXZlIHByb2Nlc3NlZC5cblx0ICAgKlxuXHQgICAqIEBwYXJhbSB7UmVhY3RDbGFzc30gcHVibGlj
SW5zdGFuY2UgVGhlIGluc3RhbmNlIHRvIHVzZSBhcyBgdGhpc2AgY29udGV4dC5cblx0ICAgKiBA
cGFyYW0gez9mdW5jdGlvbn0gY2FsbGJhY2sgQ2FsbGVkIGFmdGVyIHN0YXRlIGlzIHVwZGF0ZWQu
XG5cdCAgICogQGludGVybmFsXG5cdCAgICovXG5cdCAgZW5xdWV1ZUNhbGxiYWNrOiBmdW5jdGlv
biAocHVibGljSW5zdGFuY2UsIGNhbGxiYWNrKSB7fSxcblx0XG5cdCAgLyoqXG5cdCAgICogRm9y
Y2VzIGFuIHVwZGF0ZS4gVGhpcyBzaG91bGQgb25seSBiZSBpbnZva2VkIHdoZW4gaXQgaXMga25v
d24gd2l0aFxuXHQgICAqIGNlcnRhaW50eSB0aGF0IHdlIGFyZSAqKm5vdCoqIGluIGEgRE9NIHRy
YW5zYWN0aW9uLlxuXHQgICAqXG5cdCAgICogWW91IG1heSB3YW50IHRvIGNhbGwgdGhpcyB3aGVu
IHlvdSBrbm93IHRoYXQgc29tZSBkZWVwZXIgYXNwZWN0IG9mIHRoZVxuXHQgICAqIGNvbXBvbmVu
dCdzIHN0YXRlIGhhcyBjaGFuZ2VkIGJ1dCBgc2V0U3RhdGVgIHdhcyBub3QgY2FsbGVkLlxuXHQg
ICAqXG5cdCAgICogVGhpcyB3aWxsIG5vdCBpbnZva2UgYHNob3VsZENvbXBvbmVudFVwZGF0ZWAs
IGJ1dCBpdCB3aWxsIGludm9rZVxuXHQgICAqIGBjb21wb25lbnRXaWxsVXBkYXRlYCBhbmQgYGNv
bXBvbmVudERpZFVwZGF0ZWAuXG5cdCAgICpcblx0ICAgKiBAcGFyYW0ge1JlYWN0Q2xhc3N9IHB1
YmxpY0luc3RhbmNlIFRoZSBpbnN0YW5jZSB0aGF0IHNob3VsZCByZXJlbmRlci5cblx0ICAgKiBA
aW50ZXJuYWxcblx0ICAgKi9cblx0ICBlbnF1ZXVlRm9yY2VVcGRhdGU6IGZ1bmN0aW9uIChwdWJs
aWNJbnN0YW5jZSkge1xuXHQgICAgd2Fybk5vb3AocHVibGljSW5zdGFuY2UsICdmb3JjZVVwZGF0
ZScpO1xuXHQgIH0sXG5cdFxuXHQgIC8qKlxuXHQgICAqIFJlcGxhY2VzIGFsbCBvZiB0aGUgc3Rh
dGUuIEFsd2F5cyB1c2UgdGhpcyBvciBgc2V0U3RhdGVgIHRvIG11dGF0ZSBzdGF0ZS5cblx0ICAg
KiBZb3Ugc2hvdWxkIHRyZWF0IGB0aGlzLnN0YXRlYCBhcyBpbW11dGFibGUuXG5cdCAgICpcblx0
ICAgKiBUaGVyZSBpcyBubyBndWFyYW50ZWUgdGhhdCBgdGhpcy5zdGF0ZWAgd2lsbCBiZSBpbW1l
ZGlhdGVseSB1cGRhdGVkLCBzb1xuXHQgICAqIGFjY2Vzc2luZyBgdGhpcy5zdGF0ZWAgYWZ0ZXIg
Y2FsbGluZyB0aGlzIG1ldGhvZCBtYXkgcmV0dXJuIHRoZSBvbGQgdmFsdWUuXG5cdCAgICpcblx0
ICAgKiBAcGFyYW0ge1JlYWN0Q2xhc3N9IHB1YmxpY0luc3RhbmNlIFRoZSBpbnN0YW5jZSB0aGF0
IHNob3VsZCByZXJlbmRlci5cblx0ICAgKiBAcGFyYW0ge29iamVjdH0gY29tcGxldGVTdGF0ZSBO
ZXh0IHN0YXRlLlxuXHQgICAqIEBpbnRlcm5hbFxuXHQgICAqL1xuXHQgIGVucXVldWVSZXBsYWNl
U3RhdGU6IGZ1bmN0aW9uIChwdWJsaWNJbnN0YW5jZSwgY29tcGxldGVTdGF0ZSkge1xuXHQgICAg
d2Fybk5vb3AocHVibGljSW5zdGFuY2UsICdyZXBsYWNlU3RhdGUnKTtcblx0ICB9LFxuXHRcblx0
ICAvKipcblx0ICAgKiBTZXRzIGEgc3Vic2V0IG9mIHRoZSBzdGF0ZS4gVGhpcyBvbmx5IGV4aXN0
cyBiZWNhdXNlIF9wZW5kaW5nU3RhdGUgaXNcblx0ICAgKiBpbnRlcm5hbC4gVGhpcyBwcm92aWRl
cyBhIG1lcmdpbmcgc3RyYXRlZ3kgdGhhdCBpcyBub3QgYXZhaWxhYmxlIHRvIGRlZXBcblx0ICAg
KiBwcm9wZXJ0aWVzIHdoaWNoIGlzIGNvbmZ1c2luZy4gVE9ETzogRXhwb3NlIHBlbmRpbmdTdGF0
ZSBvciBkb24ndCB1c2UgaXRcblx0ICAgKiBkdXJpbmcgdGhlIG1lcmdlLlxuXHQgICAqXG5cdCAg
ICogQHBhcmFtIHtSZWFjdENsYXNzfSBwdWJsaWNJbnN0YW5jZSBUaGUgaW5zdGFuY2UgdGhhdCBz
aG91bGQgcmVyZW5kZXIuXG5cdCAgICogQHBhcmFtIHtvYmplY3R9IHBhcnRpYWxTdGF0ZSBOZXh0
IHBhcnRpYWwgc3RhdGUgdG8gYmUgbWVyZ2VkIHdpdGggc3RhdGUuXG5cdCAgICogQGludGVybmFs
XG5cdCAgICovXG5cdCAgZW5xdWV1ZVNldFN0YXRlOiBmdW5jdGlvbiAocHVibGljSW5zdGFuY2Us
IHBhcnRpYWxTdGF0ZSkge1xuXHQgICAgd2Fybk5vb3AocHVibGljSW5zdGFuY2UsICdzZXRTdGF0
ZScpO1xuXHQgIH1cblx0fTtcblx0XG5cdG1vZHVsZS5leHBvcnRzID0gUmVhY3ROb29wVXBkYXRl
UXVldWU7XG5cbi8qKiovIH0sXG4vKiA5MyAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBv
cnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAyMDEz
LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAq
XG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBs
aWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0
b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0
ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBk
aXJlY3RvcnkuXG5cdCAqXG5cdCAqIFxuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5c
dHZhciBjYW5EZWZpbmVQcm9wZXJ0eSA9IGZhbHNlO1xuXHRpZiAoZmFsc2UpIHtcblx0ICB0cnkg
e1xuXHQgICAgLy8gJEZsb3dGaXhNZSBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svZmxvdy9p
c3N1ZXMvMjg1XG5cdCAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoe30sICd4JywgeyBnZXQ6IGZ1
bmN0aW9uICgpIHt9IH0pO1xuXHQgICAgY2FuRGVmaW5lUHJvcGVydHkgPSB0cnVlO1xuXHQgIH0g
Y2F0Y2ggKHgpIHtcblx0ICAgIC8vIElFIHdpbGwgZmFpbCBvbiBkZWZpbmVQcm9wZXJ0eVxuXHQg
IH1cblx0fVxuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBjYW5EZWZpbmVQcm9wZXJ0eTtcblxuLyoq
Ki8gfSxcbi8qIDk0ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuXHRc
InVzZSBzdHJpY3RcIjtcblx0XG5cdGV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5cdGV4cG9y
dHNbXCJkZWZhdWx0XCJdID0gY29tcG9zZTtcblx0LyoqXG5cdCAqIENvbXBvc2VzIHNpbmdsZS1h
cmd1bWVudCBmdW5jdGlvbnMgZnJvbSByaWdodCB0byBsZWZ0LiBUaGUgcmlnaHRtb3N0XG5cdCAq
IGZ1bmN0aW9uIGNhbiB0YWtlIG11bHRpcGxlIGFyZ3VtZW50cyBhcyBpdCBwcm92aWRlcyB0aGUg
c2lnbmF0dXJlIGZvclxuXHQgKiB0aGUgcmVzdWx0aW5nIGNvbXBvc2l0ZSBmdW5jdGlvbi5cblx0
ICpcblx0ICogQHBhcmFtIHsuLi5GdW5jdGlvbn0gZnVuY3MgVGhlIGZ1bmN0aW9ucyB0byBjb21w
b3NlLlxuXHQgKiBAcmV0dXJucyB7RnVuY3Rpb259IEEgZnVuY3Rpb24gb2J0YWluZWQgYnkgY29t
cG9zaW5nIHRoZSBhcmd1bWVudCBmdW5jdGlvbnNcblx0ICogZnJvbSByaWdodCB0byBsZWZ0LiBG
b3IgZXhhbXBsZSwgY29tcG9zZShmLCBnLCBoKSBpcyBpZGVudGljYWwgdG8gZG9pbmdcblx0ICog
KC4uLmFyZ3MpID0+IGYoZyhoKC4uLmFyZ3MpKSkuXG5cdCAqL1xuXHRcblx0ZnVuY3Rpb24gY29t
cG9zZSgpIHtcblx0ICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgZnVuY3MgPSBB
cnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcblx0ICAgIGZ1bmNz
W19rZXldID0gYXJndW1lbnRzW19rZXldO1xuXHQgIH1cblx0XG5cdCAgaWYgKGZ1bmNzLmxlbmd0
aCA9PT0gMCkge1xuXHQgICAgcmV0dXJuIGZ1bmN0aW9uIChhcmcpIHtcblx0ICAgICAgcmV0dXJu
IGFyZztcblx0ICAgIH07XG5cdCAgfVxuXHRcblx0ICBpZiAoZnVuY3MubGVuZ3RoID09PSAxKSB7
XG5cdCAgICByZXR1cm4gZnVuY3NbMF07XG5cdCAgfVxuXHRcblx0ICByZXR1cm4gZnVuY3MucmVk
dWNlKGZ1bmN0aW9uIChhLCBiKSB7XG5cdCAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuXHQgICAg
ICByZXR1cm4gYShiLmFwcGx5KHVuZGVmaW5lZCwgYXJndW1lbnRzKSk7XG5cdCAgICB9O1xuXHQg
IH0pO1xuXHR9XG5cbi8qKiovIH0sXG4vKiA5NSAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBl
eHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0
ZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcblx0ZXhwb3J0cy5BY3Rpb25UeXBlcyA9IHVuZGVm
aW5lZDtcblx0ZXhwb3J0c1snZGVmYXVsdCddID0gY3JlYXRlU3RvcmU7XG5cdFxuXHR2YXIgX2lz
UGxhaW5PYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMzKTtcblx0XG5cdHZhciBfaXNQbGFp
bk9iamVjdDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9pc1BsYWluT2JqZWN0KTtcblx0XG5c
dHZhciBfc3ltYm9sT2JzZXJ2YWJsZSA9IF9fd2VicGFja19yZXF1aXJlX18oMjI4KTtcblx0XG5c
dHZhciBfc3ltYm9sT2JzZXJ2YWJsZTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9zeW1ib2xP
YnNlcnZhYmxlKTtcblx0XG5cdGZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7
IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7ICdkZWZhdWx0Jzogb2JqIH07
IH1cblx0XG5cdC8qKlxuXHQgKiBUaGVzZSBhcmUgcHJpdmF0ZSBhY3Rpb24gdHlwZXMgcmVzZXJ2
ZWQgYnkgUmVkdXguXG5cdCAqIEZvciBhbnkgdW5rbm93biBhY3Rpb25zLCB5b3UgbXVzdCByZXR1
cm4gdGhlIGN1cnJlbnQgc3RhdGUuXG5cdCAqIElmIHRoZSBjdXJyZW50IHN0YXRlIGlzIHVuZGVm
aW5lZCwgeW91IG11c3QgcmV0dXJuIHRoZSBpbml0aWFsIHN0YXRlLlxuXHQgKiBEbyBub3QgcmVm
ZXJlbmNlIHRoZXNlIGFjdGlvbiB0eXBlcyBkaXJlY3RseSBpbiB5b3VyIGNvZGUuXG5cdCAqL1xu
XHR2YXIgQWN0aW9uVHlwZXMgPSBleHBvcnRzLkFjdGlvblR5cGVzID0ge1xuXHQgIElOSVQ6ICdA
QHJlZHV4L0lOSVQnXG5cdFxuXHQgIC8qKlxuXHQgICAqIENyZWF0ZXMgYSBSZWR1eCBzdG9yZSB0
aGF0IGhvbGRzIHRoZSBzdGF0ZSB0cmVlLlxuXHQgICAqIFRoZSBvbmx5IHdheSB0byBjaGFuZ2Ug
dGhlIGRhdGEgaW4gdGhlIHN0b3JlIGlzIHRvIGNhbGwgYGRpc3BhdGNoKClgIG9uIGl0LlxuXHQg
ICAqXG5cdCAgICogVGhlcmUgc2hvdWxkIG9ubHkgYmUgYSBzaW5nbGUgc3RvcmUgaW4geW91ciBh
cHAuIFRvIHNwZWNpZnkgaG93IGRpZmZlcmVudFxuXHQgICAqIHBhcnRzIG9mIHRoZSBzdGF0ZSB0
cmVlIHJlc3BvbmQgdG8gYWN0aW9ucywgeW91IG1heSBjb21iaW5lIHNldmVyYWwgcmVkdWNlcnNc
blx0ICAgKiBpbnRvIGEgc2luZ2xlIHJlZHVjZXIgZnVuY3Rpb24gYnkgdXNpbmcgYGNvbWJpbmVS
ZWR1Y2Vyc2AuXG5cdCAgICpcblx0ICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSByZWR1Y2VyIEEgZnVu
Y3Rpb24gdGhhdCByZXR1cm5zIHRoZSBuZXh0IHN0YXRlIHRyZWUsIGdpdmVuXG5cdCAgICogdGhl
IGN1cnJlbnQgc3RhdGUgdHJlZSBhbmQgdGhlIGFjdGlvbiB0byBoYW5kbGUuXG5cdCAgICpcblx0
ICAgKiBAcGFyYW0ge2FueX0gW3ByZWxvYWRlZFN0YXRlXSBUaGUgaW5pdGlhbCBzdGF0ZS4gWW91
IG1heSBvcHRpb25hbGx5IHNwZWNpZnkgaXRcblx0ICAgKiB0byBoeWRyYXRlIHRoZSBzdGF0ZSBm
cm9tIHRoZSBzZXJ2ZXIgaW4gdW5pdmVyc2FsIGFwcHMsIG9yIHRvIHJlc3RvcmUgYVxuXHQgICAq
IHByZXZpb3VzbHkgc2VyaWFsaXplZCB1c2VyIHNlc3Npb24uXG5cdCAgICogSWYgeW91IHVzZSBg
Y29tYmluZVJlZHVjZXJzYCB0byBwcm9kdWNlIHRoZSByb290IHJlZHVjZXIgZnVuY3Rpb24sIHRo
aXMgbXVzdCBiZVxuXHQgICAqIGFuIG9iamVjdCB3aXRoIHRoZSBzYW1lIHNoYXBlIGFzIGBjb21i
aW5lUmVkdWNlcnNgIGtleXMuXG5cdCAgICpcblx0ICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbZW5o
YW5jZXJdIFRoZSBzdG9yZSBlbmhhbmNlci4gWW91IG1heSBvcHRpb25hbGx5IHNwZWNpZnkgaXRc
blx0ICAgKiB0byBlbmhhbmNlIHRoZSBzdG9yZSB3aXRoIHRoaXJkLXBhcnR5IGNhcGFiaWxpdGll
cyBzdWNoIGFzIG1pZGRsZXdhcmUsXG5cdCAgICogdGltZSB0cmF2ZWwsIHBlcnNpc3RlbmNlLCBl
dGMuIFRoZSBvbmx5IHN0b3JlIGVuaGFuY2VyIHRoYXQgc2hpcHMgd2l0aCBSZWR1eFxuXHQgICAq
IGlzIGBhcHBseU1pZGRsZXdhcmUoKWAuXG5cdCAgICpcblx0ICAgKiBAcmV0dXJucyB7U3RvcmV9
IEEgUmVkdXggc3RvcmUgdGhhdCBsZXRzIHlvdSByZWFkIHRoZSBzdGF0ZSwgZGlzcGF0Y2ggYWN0
aW9uc1xuXHQgICAqIGFuZCBzdWJzY3JpYmUgdG8gY2hhbmdlcy5cblx0ICAgKi9cblx0fTtmdW5j
dGlvbiBjcmVhdGVTdG9yZShyZWR1Y2VyLCBwcmVsb2FkZWRTdGF0ZSwgZW5oYW5jZXIpIHtcblx0
ICB2YXIgX3JlZjI7XG5cdFxuXHQgIGlmICh0eXBlb2YgcHJlbG9hZGVkU3RhdGUgPT09ICdmdW5j
dGlvbicgJiYgdHlwZW9mIGVuaGFuY2VyID09PSAndW5kZWZpbmVkJykge1xuXHQgICAgZW5oYW5j
ZXIgPSBwcmVsb2FkZWRTdGF0ZTtcblx0ICAgIHByZWxvYWRlZFN0YXRlID0gdW5kZWZpbmVkO1xu
XHQgIH1cblx0XG5cdCAgaWYgKHR5cGVvZiBlbmhhbmNlciAhPT0gJ3VuZGVmaW5lZCcpIHtcblx0
ICAgIGlmICh0eXBlb2YgZW5oYW5jZXIgIT09ICdmdW5jdGlvbicpIHtcblx0ICAgICAgdGhyb3cg
bmV3IEVycm9yKCdFeHBlY3RlZCB0aGUgZW5oYW5jZXIgdG8gYmUgYSBmdW5jdGlvbi4nKTtcblx0
ICAgIH1cblx0XG5cdCAgICByZXR1cm4gZW5oYW5jZXIoY3JlYXRlU3RvcmUpKHJlZHVjZXIsIHBy
ZWxvYWRlZFN0YXRlKTtcblx0ICB9XG5cdFxuXHQgIGlmICh0eXBlb2YgcmVkdWNlciAhPT0gJ2Z1
bmN0aW9uJykge1xuXHQgICAgdGhyb3cgbmV3IEVycm9yKCdFeHBlY3RlZCB0aGUgcmVkdWNlciB0
byBiZSBhIGZ1bmN0aW9uLicpO1xuXHQgIH1cblx0XG5cdCAgdmFyIGN1cnJlbnRSZWR1Y2VyID0g
cmVkdWNlcjtcblx0ICB2YXIgY3VycmVudFN0YXRlID0gcHJlbG9hZGVkU3RhdGU7XG5cdCAgdmFy
IGN1cnJlbnRMaXN0ZW5lcnMgPSBbXTtcblx0ICB2YXIgbmV4dExpc3RlbmVycyA9IGN1cnJlbnRM
aXN0ZW5lcnM7XG5cdCAgdmFyIGlzRGlzcGF0Y2hpbmcgPSBmYWxzZTtcblx0XG5cdCAgZnVuY3Rp
b24gZW5zdXJlQ2FuTXV0YXRlTmV4dExpc3RlbmVycygpIHtcblx0ICAgIGlmIChuZXh0TGlzdGVu
ZXJzID09PSBjdXJyZW50TGlzdGVuZXJzKSB7XG5cdCAgICAgIG5leHRMaXN0ZW5lcnMgPSBjdXJy
ZW50TGlzdGVuZXJzLnNsaWNlKCk7XG5cdCAgICB9XG5cdCAgfVxuXHRcblx0ICAvKipcblx0ICAg
KiBSZWFkcyB0aGUgc3RhdGUgdHJlZSBtYW5hZ2VkIGJ5IHRoZSBzdG9yZS5cblx0ICAgKlxuXHQg
ICAqIEByZXR1cm5zIHthbnl9IFRoZSBjdXJyZW50IHN0YXRlIHRyZWUgb2YgeW91ciBhcHBsaWNh
dGlvbi5cblx0ICAgKi9cblx0ICBmdW5jdGlvbiBnZXRTdGF0ZSgpIHtcblx0ICAgIHJldHVybiBj
dXJyZW50U3RhdGU7XG5cdCAgfVxuXHRcblx0ICAvKipcblx0ICAgKiBBZGRzIGEgY2hhbmdlIGxp
c3RlbmVyLiBJdCB3aWxsIGJlIGNhbGxlZCBhbnkgdGltZSBhbiBhY3Rpb24gaXMgZGlzcGF0Y2hl
ZCxcblx0ICAgKiBhbmQgc29tZSBwYXJ0IG9mIHRoZSBzdGF0ZSB0cmVlIG1heSBwb3RlbnRpYWxs
eSBoYXZlIGNoYW5nZWQuIFlvdSBtYXkgdGhlblxuXHQgICAqIGNhbGwgYGdldFN0YXRlKClgIHRv
IHJlYWQgdGhlIGN1cnJlbnQgc3RhdGUgdHJlZSBpbnNpZGUgdGhlIGNhbGxiYWNrLlxuXHQgICAq
XG5cdCAgICogWW91IG1heSBjYWxsIGBkaXNwYXRjaCgpYCBmcm9tIGEgY2hhbmdlIGxpc3RlbmVy
LCB3aXRoIHRoZSBmb2xsb3dpbmdcblx0ICAgKiBjYXZlYXRzOlxuXHQgICAqXG5cdCAgICogMS4g
VGhlIHN1YnNjcmlwdGlvbnMgYXJlIHNuYXBzaG90dGVkIGp1c3QgYmVmb3JlIGV2ZXJ5IGBkaXNw
YXRjaCgpYCBjYWxsLlxuXHQgICAqIElmIHlvdSBzdWJzY3JpYmUgb3IgdW5zdWJzY3JpYmUgd2hp
bGUgdGhlIGxpc3RlbmVycyBhcmUgYmVpbmcgaW52b2tlZCwgdGhpc1xuXHQgICAqIHdpbGwgbm90
IGhhdmUgYW55IGVmZmVjdCBvbiB0aGUgYGRpc3BhdGNoKClgIHRoYXQgaXMgY3VycmVudGx5IGlu
IHByb2dyZXNzLlxuXHQgICAqIEhvd2V2ZXIsIHRoZSBuZXh0IGBkaXNwYXRjaCgpYCBjYWxsLCB3
aGV0aGVyIG5lc3RlZCBvciBub3QsIHdpbGwgdXNlIGEgbW9yZVxuXHQgICAqIHJlY2VudCBzbmFw
c2hvdCBvZiB0aGUgc3Vic2NyaXB0aW9uIGxpc3QuXG5cdCAgICpcblx0ICAgKiAyLiBUaGUgbGlz
dGVuZXIgc2hvdWxkIG5vdCBleHBlY3QgdG8gc2VlIGFsbCBzdGF0ZSBjaGFuZ2VzLCBhcyB0aGUg
c3RhdGVcblx0ICAgKiBtaWdodCBoYXZlIGJlZW4gdXBkYXRlZCBtdWx0aXBsZSB0aW1lcyBkdXJp
bmcgYSBuZXN0ZWQgYGRpc3BhdGNoKClgIGJlZm9yZVxuXHQgICAqIHRoZSBsaXN0ZW5lciBpcyBj
YWxsZWQuIEl0IGlzLCBob3dldmVyLCBndWFyYW50ZWVkIHRoYXQgYWxsIHN1YnNjcmliZXJzXG5c
dCAgICogcmVnaXN0ZXJlZCBiZWZvcmUgdGhlIGBkaXNwYXRjaCgpYCBzdGFydGVkIHdpbGwgYmUg
Y2FsbGVkIHdpdGggdGhlIGxhdGVzdFxuXHQgICAqIHN0YXRlIGJ5IHRoZSB0aW1lIGl0IGV4aXRz
LlxuXHQgICAqXG5cdCAgICogQHBhcmFtIHtGdW5jdGlvbn0gbGlzdGVuZXIgQSBjYWxsYmFjayB0
byBiZSBpbnZva2VkIG9uIGV2ZXJ5IGRpc3BhdGNoLlxuXHQgICAqIEByZXR1cm5zIHtGdW5jdGlv
bn0gQSBmdW5jdGlvbiB0byByZW1vdmUgdGhpcyBjaGFuZ2UgbGlzdGVuZXIuXG5cdCAgICovXG5c
dCAgZnVuY3Rpb24gc3Vic2NyaWJlKGxpc3RlbmVyKSB7XG5cdCAgICBpZiAodHlwZW9mIGxpc3Rl
bmVyICE9PSAnZnVuY3Rpb24nKSB7XG5cdCAgICAgIHRocm93IG5ldyBFcnJvcignRXhwZWN0ZWQg
bGlzdGVuZXIgdG8gYmUgYSBmdW5jdGlvbi4nKTtcblx0ICAgIH1cblx0XG5cdCAgICB2YXIgaXNT
dWJzY3JpYmVkID0gdHJ1ZTtcblx0XG5cdCAgICBlbnN1cmVDYW5NdXRhdGVOZXh0TGlzdGVuZXJz
KCk7XG5cdCAgICBuZXh0TGlzdGVuZXJzLnB1c2gobGlzdGVuZXIpO1xuXHRcblx0ICAgIHJldHVy
biBmdW5jdGlvbiB1bnN1YnNjcmliZSgpIHtcblx0ICAgICAgaWYgKCFpc1N1YnNjcmliZWQpIHtc
blx0ICAgICAgICByZXR1cm47XG5cdCAgICAgIH1cblx0XG5cdCAgICAgIGlzU3Vic2NyaWJlZCA9
IGZhbHNlO1xuXHRcblx0ICAgICAgZW5zdXJlQ2FuTXV0YXRlTmV4dExpc3RlbmVycygpO1xuXHQg
ICAgICB2YXIgaW5kZXggPSBuZXh0TGlzdGVuZXJzLmluZGV4T2YobGlzdGVuZXIpO1xuXHQgICAg
ICBuZXh0TGlzdGVuZXJzLnNwbGljZShpbmRleCwgMSk7XG5cdCAgICB9O1xuXHQgIH1cblx0XG5c
dCAgLyoqXG5cdCAgICogRGlzcGF0Y2hlcyBhbiBhY3Rpb24uIEl0IGlzIHRoZSBvbmx5IHdheSB0
byB0cmlnZ2VyIGEgc3RhdGUgY2hhbmdlLlxuXHQgICAqXG5cdCAgICogVGhlIGByZWR1Y2VyYCBm
dW5jdGlvbiwgdXNlZCB0byBjcmVhdGUgdGhlIHN0b3JlLCB3aWxsIGJlIGNhbGxlZCB3aXRoIHRo
ZVxuXHQgICAqIGN1cnJlbnQgc3RhdGUgdHJlZSBhbmQgdGhlIGdpdmVuIGBhY3Rpb25gLiBJdHMg
cmV0dXJuIHZhbHVlIHdpbGxcblx0ICAgKiBiZSBjb25zaWRlcmVkIHRoZSAqKm5leHQqKiBzdGF0
ZSBvZiB0aGUgdHJlZSwgYW5kIHRoZSBjaGFuZ2UgbGlzdGVuZXJzXG5cdCAgICogd2lsbCBiZSBu
b3RpZmllZC5cblx0ICAgKlxuXHQgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9ubHkgc3Vw
cG9ydHMgcGxhaW4gb2JqZWN0IGFjdGlvbnMuIElmIHlvdSB3YW50IHRvXG5cdCAgICogZGlzcGF0
Y2ggYSBQcm9taXNlLCBhbiBPYnNlcnZhYmxlLCBhIHRodW5rLCBvciBzb21ldGhpbmcgZWxzZSwg
eW91IG5lZWQgdG9cblx0ICAgKiB3cmFwIHlvdXIgc3RvcmUgY3JlYXRpbmcgZnVuY3Rpb24gaW50
byB0aGUgY29ycmVzcG9uZGluZyBtaWRkbGV3YXJlLiBGb3Jcblx0ICAgKiBleGFtcGxlLCBzZWUg
dGhlIGRvY3VtZW50YXRpb24gZm9yIHRoZSBgcmVkdXgtdGh1bmtgIHBhY2thZ2UuIEV2ZW4gdGhl
XG5cdCAgICogbWlkZGxld2FyZSB3aWxsIGV2ZW50dWFsbHkgZGlzcGF0Y2ggcGxhaW4gb2JqZWN0
IGFjdGlvbnMgdXNpbmcgdGhpcyBtZXRob2QuXG5cdCAgICpcblx0ICAgKiBAcGFyYW0ge09iamVj
dH0gYWN0aW9uIEEgcGxhaW4gb2JqZWN0IHJlcHJlc2VudGluZyDigJx3aGF0IGNoYW5nZWTigJ0u
IEl0IGlzXG5cdCAgICogYSBnb29kIGlkZWEgdG8ga2VlcCBhY3Rpb25zIHNlcmlhbGl6YWJsZSBz
byB5b3UgY2FuIHJlY29yZCBhbmQgcmVwbGF5IHVzZXJcblx0ICAgKiBzZXNzaW9ucywgb3IgdXNl
IHRoZSB0aW1lIHRyYXZlbGxpbmcgYHJlZHV4LWRldnRvb2xzYC4gQW4gYWN0aW9uIG11c3QgaGF2
ZVxuXHQgICAqIGEgYHR5cGVgIHByb3BlcnR5IHdoaWNoIG1heSBub3QgYmUgYHVuZGVmaW5lZGAu
IEl0IGlzIGEgZ29vZCBpZGVhIHRvIHVzZVxuXHQgICAqIHN0cmluZyBjb25zdGFudHMgZm9yIGFj
dGlvbiB0eXBlcy5cblx0ICAgKlxuXHQgICAqIEByZXR1cm5zIHtPYmplY3R9IEZvciBjb252ZW5p
ZW5jZSwgdGhlIHNhbWUgYWN0aW9uIG9iamVjdCB5b3UgZGlzcGF0Y2hlZC5cblx0ICAgKlxuXHQg
ICAqIE5vdGUgdGhhdCwgaWYgeW91IHVzZSBhIGN1c3RvbSBtaWRkbGV3YXJlLCBpdCBtYXkgd3Jh
cCBgZGlzcGF0Y2goKWAgdG9cblx0ICAgKiByZXR1cm4gc29tZXRoaW5nIGVsc2UgKGZvciBleGFt
cGxlLCBhIFByb21pc2UgeW91IGNhbiBhd2FpdCkuXG5cdCAgICovXG5cdCAgZnVuY3Rpb24gZGlz
cGF0Y2goYWN0aW9uKSB7XG5cdCAgICBpZiAoISgwLCBfaXNQbGFpbk9iamVjdDJbJ2RlZmF1bHQn
XSkoYWN0aW9uKSkge1xuXHQgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0FjdGlvbnMgbXVzdCBiZSBw
bGFpbiBvYmplY3RzLiAnICsgJ1VzZSBjdXN0b20gbWlkZGxld2FyZSBmb3IgYXN5bmMgYWN0aW9u
cy4nKTtcblx0ICAgIH1cblx0XG5cdCAgICBpZiAodHlwZW9mIGFjdGlvbi50eXBlID09PSAndW5k
ZWZpbmVkJykge1xuXHQgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0FjdGlvbnMgbWF5IG5vdCBoYXZl
IGFuIHVuZGVmaW5lZCBcInR5cGVcIiBwcm9wZXJ0eS4gJyArICdIYXZlIHlvdSBtaXNzcGVsbGVk
IGEgY29uc3RhbnQ/Jyk7XG5cdCAgICB9XG5cdFxuXHQgICAgaWYgKGlzRGlzcGF0Y2hpbmcpIHtc
blx0ICAgICAgdGhyb3cgbmV3IEVycm9yKCdSZWR1Y2VycyBtYXkgbm90IGRpc3BhdGNoIGFjdGlv
bnMuJyk7XG5cdCAgICB9XG5cdFxuXHQgICAgdHJ5IHtcblx0ICAgICAgaXNEaXNwYXRjaGluZyA9
IHRydWU7XG5cdCAgICAgIGN1cnJlbnRTdGF0ZSA9IGN1cnJlbnRSZWR1Y2VyKGN1cnJlbnRTdGF0
ZSwgYWN0aW9uKTtcblx0ICAgIH0gZmluYWxseSB7XG5cdCAgICAgIGlzRGlzcGF0Y2hpbmcgPSBm
YWxzZTtcblx0ICAgIH1cblx0XG5cdCAgICB2YXIgbGlzdGVuZXJzID0gY3VycmVudExpc3RlbmVy
cyA9IG5leHRMaXN0ZW5lcnM7XG5cdCAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxpc3RlbmVycy5s
ZW5ndGg7IGkrKykge1xuXHQgICAgICB2YXIgbGlzdGVuZXIgPSBsaXN0ZW5lcnNbaV07XG5cdCAg
ICAgIGxpc3RlbmVyKCk7XG5cdCAgICB9XG5cdFxuXHQgICAgcmV0dXJuIGFjdGlvbjtcblx0ICB9
XG5cdFxuXHQgIC8qKlxuXHQgICAqIFJlcGxhY2VzIHRoZSByZWR1Y2VyIGN1cnJlbnRseSB1c2Vk
IGJ5IHRoZSBzdG9yZSB0byBjYWxjdWxhdGUgdGhlIHN0YXRlLlxuXHQgICAqXG5cdCAgICogWW91
IG1pZ2h0IG5lZWQgdGhpcyBpZiB5b3VyIGFwcCBpbXBsZW1lbnRzIGNvZGUgc3BsaXR0aW5nIGFu
ZCB5b3Ugd2FudCB0b1xuXHQgICAqIGxvYWQgc29tZSBvZiB0aGUgcmVkdWNlcnMgZHluYW1pY2Fs
bHkuIFlvdSBtaWdodCBhbHNvIG5lZWQgdGhpcyBpZiB5b3Vcblx0ICAgKiBpbXBsZW1lbnQgYSBo
b3QgcmVsb2FkaW5nIG1lY2hhbmlzbSBmb3IgUmVkdXguXG5cdCAgICpcblx0ICAgKiBAcGFyYW0g
e0Z1bmN0aW9ufSBuZXh0UmVkdWNlciBUaGUgcmVkdWNlciBmb3IgdGhlIHN0b3JlIHRvIHVzZSBp
bnN0ZWFkLlxuXHQgICAqIEByZXR1cm5zIHt2b2lkfVxuXHQgICAqL1xuXHQgIGZ1bmN0aW9uIHJl
cGxhY2VSZWR1Y2VyKG5leHRSZWR1Y2VyKSB7XG5cdCAgICBpZiAodHlwZW9mIG5leHRSZWR1Y2Vy
ICE9PSAnZnVuY3Rpb24nKSB7XG5cdCAgICAgIHRocm93IG5ldyBFcnJvcignRXhwZWN0ZWQgdGhl
IG5leHRSZWR1Y2VyIHRvIGJlIGEgZnVuY3Rpb24uJyk7XG5cdCAgICB9XG5cdFxuXHQgICAgY3Vy
cmVudFJlZHVjZXIgPSBuZXh0UmVkdWNlcjtcblx0ICAgIGRpc3BhdGNoKHsgdHlwZTogQWN0aW9u
VHlwZXMuSU5JVCB9KTtcblx0ICB9XG5cdFxuXHQgIC8qKlxuXHQgICAqIEludGVyb3BlcmFiaWxp
dHkgcG9pbnQgZm9yIG9ic2VydmFibGUvcmVhY3RpdmUgbGlicmFyaWVzLlxuXHQgICAqIEByZXR1
cm5zIHtvYnNlcnZhYmxlfSBBIG1pbmltYWwgb2JzZXJ2YWJsZSBvZiBzdGF0ZSBjaGFuZ2VzLlxu
XHQgICAqIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgdGhlIG9ic2VydmFibGUgcHJvcG9zYWw6
XG5cdCAgICogaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtb2JzZXJ2YWJsZVxuXHQg
ICAqL1xuXHQgIGZ1bmN0aW9uIG9ic2VydmFibGUoKSB7XG5cdCAgICB2YXIgX3JlZjtcblx0XG5c
dCAgICB2YXIgb3V0ZXJTdWJzY3JpYmUgPSBzdWJzY3JpYmU7XG5cdCAgICByZXR1cm4gX3JlZiA9
IHtcblx0ICAgICAgLyoqXG5cdCAgICAgICAqIFRoZSBtaW5pbWFsIG9ic2VydmFibGUgc3Vic2Ny
aXB0aW9uIG1ldGhvZC5cblx0ICAgICAgICogQHBhcmFtIHtPYmplY3R9IG9ic2VydmVyIEFueSBv
YmplY3QgdGhhdCBjYW4gYmUgdXNlZCBhcyBhbiBvYnNlcnZlci5cblx0ICAgICAgICogVGhlIG9i
c2VydmVyIG9iamVjdCBzaG91bGQgaGF2ZSBhIGBuZXh0YCBtZXRob2QuXG5cdCAgICAgICAqIEBy
ZXR1cm5zIHtzdWJzY3JpcHRpb259IEFuIG9iamVjdCB3aXRoIGFuIGB1bnN1YnNjcmliZWAgbWV0
aG9kIHRoYXQgY2FuXG5cdCAgICAgICAqIGJlIHVzZWQgdG8gdW5zdWJzY3JpYmUgdGhlIG9ic2Vy
dmFibGUgZnJvbSB0aGUgc3RvcmUsIGFuZCBwcmV2ZW50IGZ1cnRoZXJcblx0ICAgICAgICogZW1p
c3Npb24gb2YgdmFsdWVzIGZyb20gdGhlIG9ic2VydmFibGUuXG5cdCAgICAgICAqL1xuXHQgICAg
ICBzdWJzY3JpYmU6IGZ1bmN0aW9uIHN1YnNjcmliZShvYnNlcnZlcikge1xuXHQgICAgICAgIGlm
ICh0eXBlb2Ygb2JzZXJ2ZXIgIT09ICdvYmplY3QnKSB7XG5cdCAgICAgICAgICB0aHJvdyBuZXcg
VHlwZUVycm9yKCdFeHBlY3RlZCB0aGUgb2JzZXJ2ZXIgdG8gYmUgYW4gb2JqZWN0LicpO1xuXHQg
ICAgICAgIH1cblx0XG5cdCAgICAgICAgZnVuY3Rpb24gb2JzZXJ2ZVN0YXRlKCkge1xuXHQgICAg
ICAgICAgaWYgKG9ic2VydmVyLm5leHQpIHtcblx0ICAgICAgICAgICAgb2JzZXJ2ZXIubmV4dChn
ZXRTdGF0ZSgpKTtcblx0ICAgICAgICAgIH1cblx0ICAgICAgICB9XG5cdFxuXHQgICAgICAgIG9i
c2VydmVTdGF0ZSgpO1xuXHQgICAgICAgIHZhciB1bnN1YnNjcmliZSA9IG91dGVyU3Vic2NyaWJl
KG9ic2VydmVTdGF0ZSk7XG5cdCAgICAgICAgcmV0dXJuIHsgdW5zdWJzY3JpYmU6IHVuc3Vic2Ny
aWJlIH07XG5cdCAgICAgIH1cblx0ICAgIH0sIF9yZWZbX3N5bWJvbE9ic2VydmFibGUyWydkZWZh
dWx0J11dID0gZnVuY3Rpb24gKCkge1xuXHQgICAgICByZXR1cm4gdGhpcztcblx0ICAgIH0sIF9y
ZWY7XG5cdCAgfVxuXHRcblx0ICAvLyBXaGVuIGEgc3RvcmUgaXMgY3JlYXRlZCwgYW4gXCJJTklU
XCIgYWN0aW9uIGlzIGRpc3BhdGNoZWQgc28gdGhhdCBldmVyeVxuXHQgIC8vIHJlZHVjZXIgcmV0
dXJucyB0aGVpciBpbml0aWFsIHN0YXRlLiBUaGlzIGVmZmVjdGl2ZWx5IHBvcHVsYXRlc1xuXHQg
IC8vIHRoZSBpbml0aWFsIHN0YXRlIHRyZWUuXG5cdCAgZGlzcGF0Y2goeyB0eXBlOiBBY3Rpb25U
eXBlcy5JTklUIH0pO1xuXHRcblx0ICByZXR1cm4gX3JlZjIgPSB7XG5cdCAgICBkaXNwYXRjaDog
ZGlzcGF0Y2gsXG5cdCAgICBzdWJzY3JpYmU6IHN1YnNjcmliZSxcblx0ICAgIGdldFN0YXRlOiBn
ZXRTdGF0ZSxcblx0ICAgIHJlcGxhY2VSZWR1Y2VyOiByZXBsYWNlUmVkdWNlclxuXHQgIH0sIF9y
ZWYyW19zeW1ib2xPYnNlcnZhYmxlMlsnZGVmYXVsdCddXSA9IG9ic2VydmFibGUsIF9yZWYyO1xu
XHR9XG5cbi8qKiovIH0sXG4vKiA5NiAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRz
KSB7XG5cblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0ZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtc
blx0ZXhwb3J0c1snZGVmYXVsdCddID0gd2FybmluZztcblx0LyoqXG5cdCAqIFByaW50cyBhIHdh
cm5pbmcgaW4gdGhlIGNvbnNvbGUgaWYgaXQgZXhpc3RzLlxuXHQgKlxuXHQgKiBAcGFyYW0ge1N0
cmluZ30gbWVzc2FnZSBUaGUgd2FybmluZyBtZXNzYWdlLlxuXHQgKiBAcmV0dXJucyB7dm9pZH1c
blx0ICovXG5cdGZ1bmN0aW9uIHdhcm5pbmcobWVzc2FnZSkge1xuXHQgIC8qIGVzbGludC1kaXNh
YmxlIG5vLWNvbnNvbGUgKi9cblx0ICBpZiAodHlwZW9mIGNvbnNvbGUgIT09ICd1bmRlZmluZWQn
ICYmIHR5cGVvZiBjb25zb2xlLmVycm9yID09PSAnZnVuY3Rpb24nKSB7XG5cdCAgICBjb25zb2xl
LmVycm9yKG1lc3NhZ2UpO1xuXHQgIH1cblx0ICAvKiBlc2xpbnQtZW5hYmxlIG5vLWNvbnNvbGUg
Ki9cblx0ICB0cnkge1xuXHQgICAgLy8gVGhpcyBlcnJvciB3YXMgdGhyb3duIGFzIGEgY29udmVu
aWVuY2Ugc28gdGhhdCBpZiB5b3UgZW5hYmxlXG5cdCAgICAvLyBcImJyZWFrIG9uIGFsbCBleGNl
cHRpb25zXCIgaW4geW91ciBjb25zb2xlLFxuXHQgICAgLy8gaXQgd291bGQgcGF1c2UgdGhlIGV4
ZWN1dGlvbiBhdCB0aGlzIGxpbmUuXG5cdCAgICB0aHJvdyBuZXcgRXJyb3IobWVzc2FnZSk7XG5c
dCAgICAvKiBlc2xpbnQtZGlzYWJsZSBuby1lbXB0eSAqL1xuXHQgIH0gY2F0Y2ggKGUpIHt9XG5c
dCAgLyogZXNsaW50LWVuYWJsZSBuby1lbXB0eSAqL1xuXHR9XG5cbi8qKiovIH0sXG4vKiA5NyAq
L1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7
XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5c
dCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMg
bGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBM
SUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFu
IGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4g
dGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqL1xuXHRc
blx0J3VzZSBzdHJpY3QnO1xuXHRcblx0dmFyIF9hc3NpZ24gPSBfX3dlYnBhY2tfcmVxdWlyZV9f
KDQpO1xuXHRcblx0dmFyIGVtcHR5T2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygyNCk7XG5c
dHZhciBfaW52YXJpYW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxKTtcblx0XG5cdGlmIChmYWxz
ZSkge1xuXHQgIHZhciB3YXJuaW5nID0gcmVxdWlyZSgnZmJqcy9saWIvd2FybmluZycpO1xuXHR9
XG5cdFxuXHR2YXIgTUlYSU5TX0tFWSA9ICdtaXhpbnMnO1xuXHRcblx0Ly8gSGVscGVyIGZ1bmN0
aW9uIHRvIGFsbG93IHRoZSBjcmVhdGlvbiBvZiBhbm9ueW1vdXMgZnVuY3Rpb25zIHdoaWNoIGRv
IG5vdFxuXHQvLyBoYXZlIC5uYW1lIHNldCB0byB0aGUgbmFtZSBvZiB0aGUgdmFyaWFibGUgYmVp
bmcgYXNzaWduZWQgdG8uXG5cdGZ1bmN0aW9uIGlkZW50aXR5KGZuKSB7XG5cdCAgcmV0dXJuIGZu
O1xuXHR9XG5cdFxuXHR2YXIgUmVhY3RQcm9wVHlwZUxvY2F0aW9uTmFtZXM7XG5cdGlmIChmYWxz
ZSkge1xuXHQgIFJlYWN0UHJvcFR5cGVMb2NhdGlvbk5hbWVzID0ge1xuXHQgICAgcHJvcDogJ3By
b3AnLFxuXHQgICAgY29udGV4dDogJ2NvbnRleHQnLFxuXHQgICAgY2hpbGRDb250ZXh0OiAnY2hp
bGQgY29udGV4dCdcblx0ICB9O1xuXHR9IGVsc2Uge1xuXHQgIFJlYWN0UHJvcFR5cGVMb2NhdGlv
bk5hbWVzID0ge307XG5cdH1cblx0XG5cdGZ1bmN0aW9uIGZhY3RvcnkoUmVhY3RDb21wb25lbnQs
IGlzVmFsaWRFbGVtZW50LCBSZWFjdE5vb3BVcGRhdGVRdWV1ZSkge1xuXHQgIC8qKlxuXHQgICAq
IFBvbGljaWVzIHRoYXQgZGVzY3JpYmUgbWV0aG9kcyBpbiBgUmVhY3RDbGFzc0ludGVyZmFjZWAu
XG5cdCAgICovXG5cdFxuXHQgIHZhciBpbmplY3RlZE1peGlucyA9IFtdO1xuXHRcblx0ICAvKipc
blx0ICAgKiBDb21wb3NpdGUgY29tcG9uZW50cyBhcmUgaGlnaGVyLWxldmVsIGNvbXBvbmVudHMg
dGhhdCBjb21wb3NlIG90aGVyIGNvbXBvc2l0ZVxuXHQgICAqIG9yIGhvc3QgY29tcG9uZW50cy5c
blx0ICAgKlxuXHQgICAqIFRvIGNyZWF0ZSBhIG5ldyB0eXBlIG9mIGBSZWFjdENsYXNzYCwgcGFz
cyBhIHNwZWNpZmljYXRpb24gb2Zcblx0ICAgKiB5b3VyIG5ldyBjbGFzcyB0byBgUmVhY3QuY3Jl
YXRlQ2xhc3NgLiBUaGUgb25seSByZXF1aXJlbWVudCBvZiB5b3VyIGNsYXNzXG5cdCAgICogc3Bl
Y2lmaWNhdGlvbiBpcyB0aGF0IHlvdSBpbXBsZW1lbnQgYSBgcmVuZGVyYCBtZXRob2QuXG5cdCAg
ICpcblx0ICAgKiAgIHZhciBNeUNvbXBvbmVudCA9IFJlYWN0LmNyZWF0ZUNsYXNzKHtcblx0ICAg
KiAgICAgcmVuZGVyOiBmdW5jdGlvbigpIHtcblx0ICAgKiAgICAgICByZXR1cm4gPGRpdj5IZWxs
byBXb3JsZDwvZGl2Pjtcblx0ICAgKiAgICAgfVxuXHQgICAqICAgfSk7XG5cdCAgICpcblx0ICAg
KiBUaGUgY2xhc3Mgc3BlY2lmaWNhdGlvbiBzdXBwb3J0cyBhIHNwZWNpZmljIHByb3RvY29sIG9m
IG1ldGhvZHMgdGhhdCBoYXZlXG5cdCAgICogc3BlY2lhbCBtZWFuaW5nIChlLmcuIGByZW5kZXJg
KS4gU2VlIGBSZWFjdENsYXNzSW50ZXJmYWNlYCBmb3Jcblx0ICAgKiBtb3JlIHRoZSBjb21wcmVo
ZW5zaXZlIHByb3RvY29sLiBBbnkgb3RoZXIgcHJvcGVydGllcyBhbmQgbWV0aG9kcyBpbiB0aGVc
blx0ICAgKiBjbGFzcyBzcGVjaWZpY2F0aW9uIHdpbGwgYmUgYXZhaWxhYmxlIG9uIHRoZSBwcm90
b3R5cGUuXG5cdCAgICpcblx0ICAgKiBAaW50ZXJmYWNlIFJlYWN0Q2xhc3NJbnRlcmZhY2Vcblx0
ICAgKiBAaW50ZXJuYWxcblx0ICAgKi9cblx0ICB2YXIgUmVhY3RDbGFzc0ludGVyZmFjZSA9IHtc
blx0ICAgIC8qKlxuXHQgICAgICogQW4gYXJyYXkgb2YgTWl4aW4gb2JqZWN0cyB0byBpbmNsdWRl
IHdoZW4gZGVmaW5pbmcgeW91ciBjb21wb25lbnQuXG5cdCAgICAgKlxuXHQgICAgICogQHR5cGUg
e2FycmF5fVxuXHQgICAgICogQG9wdGlvbmFsXG5cdCAgICAgKi9cblx0ICAgIG1peGluczogJ0RF
RklORV9NQU5ZJyxcblx0XG5cdCAgICAvKipcblx0ICAgICAqIEFuIG9iamVjdCBjb250YWluaW5n
IHByb3BlcnRpZXMgYW5kIG1ldGhvZHMgdGhhdCBzaG91bGQgYmUgZGVmaW5lZCBvblxuXHQgICAg
ICogdGhlIGNvbXBvbmVudCdzIGNvbnN0cnVjdG9yIGluc3RlYWQgb2YgaXRzIHByb3RvdHlwZSAo
c3RhdGljIG1ldGhvZHMpLlxuXHQgICAgICpcblx0ICAgICAqIEB0eXBlIHtvYmplY3R9XG5cdCAg
ICAgKiBAb3B0aW9uYWxcblx0ICAgICAqL1xuXHQgICAgc3RhdGljczogJ0RFRklORV9NQU5ZJyxc
blx0XG5cdCAgICAvKipcblx0ICAgICAqIERlZmluaXRpb24gb2YgcHJvcCB0eXBlcyBmb3IgdGhp
cyBjb21wb25lbnQuXG5cdCAgICAgKlxuXHQgICAgICogQHR5cGUge29iamVjdH1cblx0ICAgICAq
IEBvcHRpb25hbFxuXHQgICAgICovXG5cdCAgICBwcm9wVHlwZXM6ICdERUZJTkVfTUFOWScsXG5c
dFxuXHQgICAgLyoqXG5cdCAgICAgKiBEZWZpbml0aW9uIG9mIGNvbnRleHQgdHlwZXMgZm9yIHRo
aXMgY29tcG9uZW50LlxuXHQgICAgICpcblx0ICAgICAqIEB0eXBlIHtvYmplY3R9XG5cdCAgICAg
KiBAb3B0aW9uYWxcblx0ICAgICAqL1xuXHQgICAgY29udGV4dFR5cGVzOiAnREVGSU5FX01BTlkn
LFxuXHRcblx0ICAgIC8qKlxuXHQgICAgICogRGVmaW5pdGlvbiBvZiBjb250ZXh0IHR5cGVzIHRo
aXMgY29tcG9uZW50IHNldHMgZm9yIGl0cyBjaGlsZHJlbi5cblx0ICAgICAqXG5cdCAgICAgKiBA
dHlwZSB7b2JqZWN0fVxuXHQgICAgICogQG9wdGlvbmFsXG5cdCAgICAgKi9cblx0ICAgIGNoaWxk
Q29udGV4dFR5cGVzOiAnREVGSU5FX01BTlknLFxuXHRcblx0ICAgIC8vID09PT0gRGVmaW5pdGlv
biBtZXRob2RzID09PT1cblx0XG5cdCAgICAvKipcblx0ICAgICAqIEludm9rZWQgd2hlbiB0aGUg
Y29tcG9uZW50IGlzIG1vdW50ZWQuIFZhbHVlcyBpbiB0aGUgbWFwcGluZyB3aWxsIGJlIHNldCBv
blxuXHQgICAgICogYHRoaXMucHJvcHNgIGlmIHRoYXQgcHJvcCBpcyBub3Qgc3BlY2lmaWVkIChp
LmUuIHVzaW5nIGFuIGBpbmAgY2hlY2spLlxuXHQgICAgICpcblx0ICAgICAqIFRoaXMgbWV0aG9k
IGlzIGludm9rZWQgYmVmb3JlIGBnZXRJbml0aWFsU3RhdGVgIGFuZCB0aGVyZWZvcmUgY2Fubm90
IHJlbHlcblx0ICAgICAqIG9uIGB0aGlzLnN0YXRlYCBvciB1c2UgYHRoaXMuc2V0U3RhdGVgLlxu
XHQgICAgICpcblx0ICAgICAqIEByZXR1cm4ge29iamVjdH1cblx0ICAgICAqIEBvcHRpb25hbFxu
XHQgICAgICovXG5cdCAgICBnZXREZWZhdWx0UHJvcHM6ICdERUZJTkVfTUFOWV9NRVJHRUQnLFxu
XHRcblx0ICAgIC8qKlxuXHQgICAgICogSW52b2tlZCBvbmNlIGJlZm9yZSB0aGUgY29tcG9uZW50
IGlzIG1vdW50ZWQuIFRoZSByZXR1cm4gdmFsdWUgd2lsbCBiZSB1c2VkXG5cdCAgICAgKiBhcyB0
aGUgaW5pdGlhbCB2YWx1ZSBvZiBgdGhpcy5zdGF0ZWAuXG5cdCAgICAgKlxuXHQgICAgICogICBn
ZXRJbml0aWFsU3RhdGU6IGZ1bmN0aW9uKCkge1xuXHQgICAgICogICAgIHJldHVybiB7XG5cdCAg
ICAgKiAgICAgICBpc09uOiBmYWxzZSxcblx0ICAgICAqICAgICAgIGZvb0JhejogbmV3IEJhekZv
bygpXG5cdCAgICAgKiAgICAgfVxuXHQgICAgICogICB9XG5cdCAgICAgKlxuXHQgICAgICogQHJl
dHVybiB7b2JqZWN0fVxuXHQgICAgICogQG9wdGlvbmFsXG5cdCAgICAgKi9cblx0ICAgIGdldElu
aXRpYWxTdGF0ZTogJ0RFRklORV9NQU5ZX01FUkdFRCcsXG5cdFxuXHQgICAgLyoqXG5cdCAgICAg
KiBAcmV0dXJuIHtvYmplY3R9XG5cdCAgICAgKiBAb3B0aW9uYWxcblx0ICAgICAqL1xuXHQgICAg
Z2V0Q2hpbGRDb250ZXh0OiAnREVGSU5FX01BTllfTUVSR0VEJyxcblx0XG5cdCAgICAvKipcblx0
ICAgICAqIFVzZXMgcHJvcHMgZnJvbSBgdGhpcy5wcm9wc2AgYW5kIHN0YXRlIGZyb20gYHRoaXMu
c3RhdGVgIHRvIHJlbmRlciB0aGVcblx0ICAgICAqIHN0cnVjdHVyZSBvZiB0aGUgY29tcG9uZW50
LlxuXHQgICAgICpcblx0ICAgICAqIE5vIGd1YXJhbnRlZXMgYXJlIG1hZGUgYWJvdXQgd2hlbiBv
ciBob3cgb2Z0ZW4gdGhpcyBtZXRob2QgaXMgaW52b2tlZCwgc29cblx0ICAgICAqIGl0IG11c3Qg
bm90IGhhdmUgc2lkZSBlZmZlY3RzLlxuXHQgICAgICpcblx0ICAgICAqICAgcmVuZGVyOiBmdW5j
dGlvbigpIHtcblx0ICAgICAqICAgICB2YXIgbmFtZSA9IHRoaXMucHJvcHMubmFtZTtcblx0ICAg
ICAqICAgICByZXR1cm4gPGRpdj5IZWxsbywge25hbWV9ITwvZGl2Pjtcblx0ICAgICAqICAgfVxu
XHQgICAgICpcblx0ICAgICAqIEByZXR1cm4ge1JlYWN0Q29tcG9uZW50fVxuXHQgICAgICogQHJl
cXVpcmVkXG5cdCAgICAgKi9cblx0ICAgIHJlbmRlcjogJ0RFRklORV9PTkNFJyxcblx0XG5cdCAg
ICAvLyA9PT09IERlbGVnYXRlIG1ldGhvZHMgPT09PVxuXHRcblx0ICAgIC8qKlxuXHQgICAgICog
SW52b2tlZCB3aGVuIHRoZSBjb21wb25lbnQgaXMgaW5pdGlhbGx5IGNyZWF0ZWQgYW5kIGFib3V0
IHRvIGJlIG1vdW50ZWQuXG5cdCAgICAgKiBUaGlzIG1heSBoYXZlIHNpZGUgZWZmZWN0cywgYnV0
IGFueSBleHRlcm5hbCBzdWJzY3JpcHRpb25zIG9yIGRhdGEgY3JlYXRlZFxuXHQgICAgICogYnkg
dGhpcyBtZXRob2QgbXVzdCBiZSBjbGVhbmVkIHVwIGluIGBjb21wb25lbnRXaWxsVW5tb3VudGAu
XG5cdCAgICAgKlxuXHQgICAgICogQG9wdGlvbmFsXG5cdCAgICAgKi9cblx0ICAgIGNvbXBvbmVu
dFdpbGxNb3VudDogJ0RFRklORV9NQU5ZJyxcblx0XG5cdCAgICAvKipcblx0ICAgICAqIEludm9r
ZWQgd2hlbiB0aGUgY29tcG9uZW50IGhhcyBiZWVuIG1vdW50ZWQgYW5kIGhhcyBhIERPTSByZXBy
ZXNlbnRhdGlvbi5cblx0ICAgICAqIEhvd2V2ZXIsIHRoZXJlIGlzIG5vIGd1YXJhbnRlZSB0aGF0
IHRoZSBET00gbm9kZSBpcyBpbiB0aGUgZG9jdW1lbnQuXG5cdCAgICAgKlxuXHQgICAgICogVXNl
IHRoaXMgYXMgYW4gb3Bwb3J0dW5pdHkgdG8gb3BlcmF0ZSBvbiB0aGUgRE9NIHdoZW4gdGhlIGNv
bXBvbmVudCBoYXNcblx0ICAgICAqIGJlZW4gbW91bnRlZCAoaW5pdGlhbGl6ZWQgYW5kIHJlbmRl
cmVkKSBmb3IgdGhlIGZpcnN0IHRpbWUuXG5cdCAgICAgKlxuXHQgICAgICogQHBhcmFtIHtET01F
bGVtZW50fSByb290Tm9kZSBET00gZWxlbWVudCByZXByZXNlbnRpbmcgdGhlIGNvbXBvbmVudC5c
blx0ICAgICAqIEBvcHRpb25hbFxuXHQgICAgICovXG5cdCAgICBjb21wb25lbnREaWRNb3VudDog
J0RFRklORV9NQU5ZJyxcblx0XG5cdCAgICAvKipcblx0ICAgICAqIEludm9rZWQgYmVmb3JlIHRo
ZSBjb21wb25lbnQgcmVjZWl2ZXMgbmV3IHByb3BzLlxuXHQgICAgICpcblx0ICAgICAqIFVzZSB0
aGlzIGFzIGFuIG9wcG9ydHVuaXR5IHRvIHJlYWN0IHRvIGEgcHJvcCB0cmFuc2l0aW9uIGJ5IHVw
ZGF0aW5nIHRoZVxuXHQgICAgICogc3RhdGUgdXNpbmcgYHRoaXMuc2V0U3RhdGVgLiBDdXJyZW50
IHByb3BzIGFyZSBhY2Nlc3NlZCB2aWEgYHRoaXMucHJvcHNgLlxuXHQgICAgICpcblx0ICAgICAq
ICAgY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wczogZnVuY3Rpb24obmV4dFByb3BzLCBuZXh0Q29u
dGV4dCkge1xuXHQgICAgICogICAgIHRoaXMuc2V0U3RhdGUoe1xuXHQgICAgICogICAgICAgbGlr
ZXNJbmNyZWFzaW5nOiBuZXh0UHJvcHMubGlrZUNvdW50ID4gdGhpcy5wcm9wcy5saWtlQ291bnRc
blx0ICAgICAqICAgICB9KTtcblx0ICAgICAqICAgfVxuXHQgICAgICpcblx0ICAgICAqIE5PVEU6
IFRoZXJlIGlzIG5vIGVxdWl2YWxlbnQgYGNvbXBvbmVudFdpbGxSZWNlaXZlU3RhdGVgLiBBbiBp
bmNvbWluZyBwcm9wXG5cdCAgICAgKiB0cmFuc2l0aW9uIG1heSBjYXVzZSBhIHN0YXRlIGNoYW5n
ZSwgYnV0IHRoZSBvcHBvc2l0ZSBpcyBub3QgdHJ1ZS4gSWYgeW91XG5cdCAgICAgKiBuZWVkIGl0
LCB5b3UgYXJlIHByb2JhYmx5IGxvb2tpbmcgZm9yIGBjb21wb25lbnRXaWxsVXBkYXRlYC5cblx0
ICAgICAqXG5cdCAgICAgKiBAcGFyYW0ge29iamVjdH0gbmV4dFByb3BzXG5cdCAgICAgKiBAb3B0
aW9uYWxcblx0ICAgICAqL1xuXHQgICAgY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wczogJ0RFRklO
RV9NQU5ZJyxcblx0XG5cdCAgICAvKipcblx0ICAgICAqIEludm9rZWQgd2hpbGUgZGVjaWRpbmcg
aWYgdGhlIGNvbXBvbmVudCBzaG91bGQgYmUgdXBkYXRlZCBhcyBhIHJlc3VsdCBvZlxuXHQgICAg
ICogcmVjZWl2aW5nIG5ldyBwcm9wcywgc3RhdGUgYW5kL29yIGNvbnRleHQuXG5cdCAgICAgKlxu
XHQgICAgICogVXNlIHRoaXMgYXMgYW4gb3Bwb3J0dW5pdHkgdG8gYHJldHVybiBmYWxzZWAgd2hl
biB5b3UncmUgY2VydGFpbiB0aGF0IHRoZVxuXHQgICAgICogdHJhbnNpdGlvbiB0byB0aGUgbmV3
IHByb3BzL3N0YXRlL2NvbnRleHQgd2lsbCBub3QgcmVxdWlyZSBhIGNvbXBvbmVudFxuXHQgICAg
ICogdXBkYXRlLlxuXHQgICAgICpcblx0ICAgICAqICAgc2hvdWxkQ29tcG9uZW50VXBkYXRlOiBm
dW5jdGlvbihuZXh0UHJvcHMsIG5leHRTdGF0ZSwgbmV4dENvbnRleHQpIHtcblx0ICAgICAqICAg
ICByZXR1cm4gIWVxdWFsKG5leHRQcm9wcywgdGhpcy5wcm9wcykgfHxcblx0ICAgICAqICAgICAg
ICFlcXVhbChuZXh0U3RhdGUsIHRoaXMuc3RhdGUpIHx8XG5cdCAgICAgKiAgICAgICAhZXF1YWwo
bmV4dENvbnRleHQsIHRoaXMuY29udGV4dCk7XG5cdCAgICAgKiAgIH1cblx0ICAgICAqXG5cdCAg
ICAgKiBAcGFyYW0ge29iamVjdH0gbmV4dFByb3BzXG5cdCAgICAgKiBAcGFyYW0gez9vYmplY3R9
IG5leHRTdGF0ZVxuXHQgICAgICogQHBhcmFtIHs/b2JqZWN0fSBuZXh0Q29udGV4dFxuXHQgICAg
ICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBpZiB0aGUgY29tcG9uZW50IHNob3VsZCB1cGRhdGUu
XG5cdCAgICAgKiBAb3B0aW9uYWxcblx0ICAgICAqL1xuXHQgICAgc2hvdWxkQ29tcG9uZW50VXBk
YXRlOiAnREVGSU5FX09OQ0UnLFxuXHRcblx0ICAgIC8qKlxuXHQgICAgICogSW52b2tlZCB3aGVu
IHRoZSBjb21wb25lbnQgaXMgYWJvdXQgdG8gdXBkYXRlIGR1ZSB0byBhIHRyYW5zaXRpb24gZnJv
bVxuXHQgICAgICogYHRoaXMucHJvcHNgLCBgdGhpcy5zdGF0ZWAgYW5kIGB0aGlzLmNvbnRleHRg
IHRvIGBuZXh0UHJvcHNgLCBgbmV4dFN0YXRlYFxuXHQgICAgICogYW5kIGBuZXh0Q29udGV4dGAu
XG5cdCAgICAgKlxuXHQgICAgICogVXNlIHRoaXMgYXMgYW4gb3Bwb3J0dW5pdHkgdG8gcGVyZm9y
bSBwcmVwYXJhdGlvbiBiZWZvcmUgYW4gdXBkYXRlIG9jY3Vycy5cblx0ICAgICAqXG5cdCAgICAg
KiBOT1RFOiBZb3UgKipjYW5ub3QqKiB1c2UgYHRoaXMuc2V0U3RhdGUoKWAgaW4gdGhpcyBtZXRo
b2QuXG5cdCAgICAgKlxuXHQgICAgICogQHBhcmFtIHtvYmplY3R9IG5leHRQcm9wc1xuXHQgICAg
ICogQHBhcmFtIHs/b2JqZWN0fSBuZXh0U3RhdGVcblx0ICAgICAqIEBwYXJhbSB7P29iamVjdH0g
bmV4dENvbnRleHRcblx0ICAgICAqIEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbn0g
dHJhbnNhY3Rpb25cblx0ICAgICAqIEBvcHRpb25hbFxuXHQgICAgICovXG5cdCAgICBjb21wb25l
bnRXaWxsVXBkYXRlOiAnREVGSU5FX01BTlknLFxuXHRcblx0ICAgIC8qKlxuXHQgICAgICogSW52
b2tlZCB3aGVuIHRoZSBjb21wb25lbnQncyBET00gcmVwcmVzZW50YXRpb24gaGFzIGJlZW4gdXBk
YXRlZC5cblx0ICAgICAqXG5cdCAgICAgKiBVc2UgdGhpcyBhcyBhbiBvcHBvcnR1bml0eSB0byBv
cGVyYXRlIG9uIHRoZSBET00gd2hlbiB0aGUgY29tcG9uZW50IGhhc1xuXHQgICAgICogYmVlbiB1
cGRhdGVkLlxuXHQgICAgICpcblx0ICAgICAqIEBwYXJhbSB7b2JqZWN0fSBwcmV2UHJvcHNcblx0
ICAgICAqIEBwYXJhbSB7P29iamVjdH0gcHJldlN0YXRlXG5cdCAgICAgKiBAcGFyYW0gez9vYmpl
Y3R9IHByZXZDb250ZXh0XG5cdCAgICAgKiBAcGFyYW0ge0RPTUVsZW1lbnR9IHJvb3ROb2RlIERP
TSBlbGVtZW50IHJlcHJlc2VudGluZyB0aGUgY29tcG9uZW50LlxuXHQgICAgICogQG9wdGlvbmFs
XG5cdCAgICAgKi9cblx0ICAgIGNvbXBvbmVudERpZFVwZGF0ZTogJ0RFRklORV9NQU5ZJyxcblx0
XG5cdCAgICAvKipcblx0ICAgICAqIEludm9rZWQgd2hlbiB0aGUgY29tcG9uZW50IGlzIGFib3V0
IHRvIGJlIHJlbW92ZWQgZnJvbSBpdHMgcGFyZW50IGFuZCBoYXZlXG5cdCAgICAgKiBpdHMgRE9N
IHJlcHJlc2VudGF0aW9uIGRlc3Ryb3llZC5cblx0ICAgICAqXG5cdCAgICAgKiBVc2UgdGhpcyBh
cyBhbiBvcHBvcnR1bml0eSB0byBkZWFsbG9jYXRlIGFueSBleHRlcm5hbCByZXNvdXJjZXMuXG5c
dCAgICAgKlxuXHQgICAgICogTk9URTogVGhlcmUgaXMgbm8gYGNvbXBvbmVudERpZFVubW91bnRg
IHNpbmNlIHlvdXIgY29tcG9uZW50IHdpbGwgaGF2ZSBiZWVuXG5cdCAgICAgKiBkZXN0cm95ZWQg
YnkgdGhhdCBwb2ludC5cblx0ICAgICAqXG5cdCAgICAgKiBAb3B0aW9uYWxcblx0ICAgICAqL1xu
XHQgICAgY29tcG9uZW50V2lsbFVubW91bnQ6ICdERUZJTkVfTUFOWScsXG5cdFxuXHQgICAgLy8g
PT09PSBBZHZhbmNlZCBtZXRob2RzID09PT1cblx0XG5cdCAgICAvKipcblx0ICAgICAqIFVwZGF0
ZXMgdGhlIGNvbXBvbmVudCdzIGN1cnJlbnRseSBtb3VudGVkIERPTSByZXByZXNlbnRhdGlvbi5c
blx0ICAgICAqXG5cdCAgICAgKiBCeSBkZWZhdWx0LCB0aGlzIGltcGxlbWVudHMgUmVhY3QncyBy
ZW5kZXJpbmcgYW5kIHJlY29uY2lsaWF0aW9uIGFsZ29yaXRobS5cblx0ICAgICAqIFNvcGhpc3Rp
Y2F0ZWQgY2xpZW50cyBtYXkgd2lzaCB0byBvdmVycmlkZSB0aGlzLlxuXHQgICAgICpcblx0ICAg
ICAqIEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbn0gdHJhbnNhY3Rpb25cblx0ICAg
ICAqIEBpbnRlcm5hbFxuXHQgICAgICogQG92ZXJyaWRhYmxlXG5cdCAgICAgKi9cblx0ICAgIHVw
ZGF0ZUNvbXBvbmVudDogJ09WRVJSSURFX0JBU0UnXG5cdCAgfTtcblx0XG5cdCAgLyoqXG5cdCAg
ICogTWFwcGluZyBmcm9tIGNsYXNzIHNwZWNpZmljYXRpb24ga2V5cyB0byBzcGVjaWFsIHByb2Nl
c3NpbmcgZnVuY3Rpb25zLlxuXHQgICAqXG5cdCAgICogQWx0aG91Z2ggdGhlc2UgYXJlIGRlY2xh
cmVkIGxpa2UgaW5zdGFuY2UgcHJvcGVydGllcyBpbiB0aGUgc3BlY2lmaWNhdGlvblxuXHQgICAq
IHdoZW4gZGVmaW5pbmcgY2xhc3NlcyB1c2luZyBgUmVhY3QuY3JlYXRlQ2xhc3NgLCB0aGV5IGFy
ZSBhY3R1YWxseSBzdGF0aWNcblx0ICAgKiBhbmQgYXJlIGFjY2Vzc2libGUgb24gdGhlIGNvbnN0
cnVjdG9yIGluc3RlYWQgb2YgdGhlIHByb3RvdHlwZS4gRGVzcGl0ZVxuXHQgICAqIGJlaW5nIHN0
YXRpYywgdGhleSBtdXN0IGJlIGRlZmluZWQgb3V0c2lkZSBvZiB0aGUgXCJzdGF0aWNzXCIga2V5
IHVuZGVyXG5cdCAgICogd2hpY2ggYWxsIG90aGVyIHN0YXRpYyBtZXRob2RzIGFyZSBkZWZpbmVk
LlxuXHQgICAqL1xuXHQgIHZhciBSRVNFUlZFRF9TUEVDX0tFWVMgPSB7XG5cdCAgICBkaXNwbGF5
TmFtZTogZnVuY3Rpb24oQ29uc3RydWN0b3IsIGRpc3BsYXlOYW1lKSB7XG5cdCAgICAgIENvbnN0
cnVjdG9yLmRpc3BsYXlOYW1lID0gZGlzcGxheU5hbWU7XG5cdCAgICB9LFxuXHQgICAgbWl4aW5z
OiBmdW5jdGlvbihDb25zdHJ1Y3RvciwgbWl4aW5zKSB7XG5cdCAgICAgIGlmIChtaXhpbnMpIHtc
blx0ICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG1peGlucy5sZW5ndGg7IGkrKykge1xuXHQg
ICAgICAgICAgbWl4U3BlY0ludG9Db21wb25lbnQoQ29uc3RydWN0b3IsIG1peGluc1tpXSk7XG5c
dCAgICAgICAgfVxuXHQgICAgICB9XG5cdCAgICB9LFxuXHQgICAgY2hpbGRDb250ZXh0VHlwZXM6
IGZ1bmN0aW9uKENvbnN0cnVjdG9yLCBjaGlsZENvbnRleHRUeXBlcykge1xuXHQgICAgICBpZiAo
ZmFsc2UpIHtcblx0ICAgICAgICB2YWxpZGF0ZVR5cGVEZWYoQ29uc3RydWN0b3IsIGNoaWxkQ29u
dGV4dFR5cGVzLCAnY2hpbGRDb250ZXh0Jyk7XG5cdCAgICAgIH1cblx0ICAgICAgQ29uc3RydWN0
b3IuY2hpbGRDb250ZXh0VHlwZXMgPSBfYXNzaWduKFxuXHQgICAgICAgIHt9LFxuXHQgICAgICAg
IENvbnN0cnVjdG9yLmNoaWxkQ29udGV4dFR5cGVzLFxuXHQgICAgICAgIGNoaWxkQ29udGV4dFR5
cGVzXG5cdCAgICAgICk7XG5cdCAgICB9LFxuXHQgICAgY29udGV4dFR5cGVzOiBmdW5jdGlvbihD
b25zdHJ1Y3RvciwgY29udGV4dFR5cGVzKSB7XG5cdCAgICAgIGlmIChmYWxzZSkge1xuXHQgICAg
ICAgIHZhbGlkYXRlVHlwZURlZihDb25zdHJ1Y3RvciwgY29udGV4dFR5cGVzLCAnY29udGV4dCcp
O1xuXHQgICAgICB9XG5cdCAgICAgIENvbnN0cnVjdG9yLmNvbnRleHRUeXBlcyA9IF9hc3NpZ24o
XG5cdCAgICAgICAge30sXG5cdCAgICAgICAgQ29uc3RydWN0b3IuY29udGV4dFR5cGVzLFxuXHQg
ICAgICAgIGNvbnRleHRUeXBlc1xuXHQgICAgICApO1xuXHQgICAgfSxcblx0ICAgIC8qKlxuXHQg
ICAgICogU3BlY2lhbCBjYXNlIGdldERlZmF1bHRQcm9wcyB3aGljaCBzaG91bGQgbW92ZSBpbnRv
IHN0YXRpY3MgYnV0IHJlcXVpcmVzXG5cdCAgICAgKiBhdXRvbWF0aWMgbWVyZ2luZy5cblx0ICAg
ICAqL1xuXHQgICAgZ2V0RGVmYXVsdFByb3BzOiBmdW5jdGlvbihDb25zdHJ1Y3RvciwgZ2V0RGVm
YXVsdFByb3BzKSB7XG5cdCAgICAgIGlmIChDb25zdHJ1Y3Rvci5nZXREZWZhdWx0UHJvcHMpIHtc
blx0ICAgICAgICBDb25zdHJ1Y3Rvci5nZXREZWZhdWx0UHJvcHMgPSBjcmVhdGVNZXJnZWRSZXN1
bHRGdW5jdGlvbihcblx0ICAgICAgICAgIENvbnN0cnVjdG9yLmdldERlZmF1bHRQcm9wcyxcblx0
ICAgICAgICAgIGdldERlZmF1bHRQcm9wc1xuXHQgICAgICAgICk7XG5cdCAgICAgIH0gZWxzZSB7
XG5cdCAgICAgICAgQ29uc3RydWN0b3IuZ2V0RGVmYXVsdFByb3BzID0gZ2V0RGVmYXVsdFByb3Bz
O1xuXHQgICAgICB9XG5cdCAgICB9LFxuXHQgICAgcHJvcFR5cGVzOiBmdW5jdGlvbihDb25zdHJ1
Y3RvciwgcHJvcFR5cGVzKSB7XG5cdCAgICAgIGlmIChmYWxzZSkge1xuXHQgICAgICAgIHZhbGlk
YXRlVHlwZURlZihDb25zdHJ1Y3RvciwgcHJvcFR5cGVzLCAncHJvcCcpO1xuXHQgICAgICB9XG5c
dCAgICAgIENvbnN0cnVjdG9yLnByb3BUeXBlcyA9IF9hc3NpZ24oe30sIENvbnN0cnVjdG9yLnBy
b3BUeXBlcywgcHJvcFR5cGVzKTtcblx0ICAgIH0sXG5cdCAgICBzdGF0aWNzOiBmdW5jdGlvbihD
b25zdHJ1Y3Rvciwgc3RhdGljcykge1xuXHQgICAgICBtaXhTdGF0aWNTcGVjSW50b0NvbXBvbmVu
dChDb25zdHJ1Y3Rvciwgc3RhdGljcyk7XG5cdCAgICB9LFxuXHQgICAgYXV0b2JpbmQ6IGZ1bmN0
aW9uKCkge31cblx0ICB9O1xuXHRcblx0ICBmdW5jdGlvbiB2YWxpZGF0ZVR5cGVEZWYoQ29uc3Ry
dWN0b3IsIHR5cGVEZWYsIGxvY2F0aW9uKSB7XG5cdCAgICBmb3IgKHZhciBwcm9wTmFtZSBpbiB0
eXBlRGVmKSB7XG5cdCAgICAgIGlmICh0eXBlRGVmLmhhc093blByb3BlcnR5KHByb3BOYW1lKSkg
e1xuXHQgICAgICAgIC8vIHVzZSBhIHdhcm5pbmcgaW5zdGVhZCBvZiBhbiBfaW52YXJpYW50IHNv
IGNvbXBvbmVudHNcblx0ICAgICAgICAvLyBkb24ndCBzaG93IHVwIGluIHByb2QgYnV0IG9ubHkg
aW4gX19ERVZfX1xuXHQgICAgICAgIGlmIChmYWxzZSkge1xuXHQgICAgICAgICAgd2FybmluZyhc
blx0ICAgICAgICAgICAgdHlwZW9mIHR5cGVEZWZbcHJvcE5hbWVdID09PSAnZnVuY3Rpb24nLFxu
XHQgICAgICAgICAgICAnJXM6ICVzIHR5cGUgYCVzYCBpcyBpbnZhbGlkOyBpdCBtdXN0IGJlIGEg
ZnVuY3Rpb24sIHVzdWFsbHkgZnJvbSAnICtcblx0ICAgICAgICAgICAgICAnUmVhY3QuUHJvcFR5
cGVzLicsXG5cdCAgICAgICAgICAgIENvbnN0cnVjdG9yLmRpc3BsYXlOYW1lIHx8ICdSZWFjdENs
YXNzJyxcblx0ICAgICAgICAgICAgUmVhY3RQcm9wVHlwZUxvY2F0aW9uTmFtZXNbbG9jYXRpb25d
LFxuXHQgICAgICAgICAgICBwcm9wTmFtZVxuXHQgICAgICAgICAgKTtcblx0ICAgICAgICB9XG5c
dCAgICAgIH1cblx0ICAgIH1cblx0ICB9XG5cdFxuXHQgIGZ1bmN0aW9uIHZhbGlkYXRlTWV0aG9k
T3ZlcnJpZGUoaXNBbHJlYWR5RGVmaW5lZCwgbmFtZSkge1xuXHQgICAgdmFyIHNwZWNQb2xpY3kg
PSBSZWFjdENsYXNzSW50ZXJmYWNlLmhhc093blByb3BlcnR5KG5hbWUpXG5cdCAgICAgID8gUmVh
Y3RDbGFzc0ludGVyZmFjZVtuYW1lXVxuXHQgICAgICA6IG51bGw7XG5cdFxuXHQgICAgLy8gRGlz
YWxsb3cgb3ZlcnJpZGluZyBvZiBiYXNlIGNsYXNzIG1ldGhvZHMgdW5sZXNzIGV4cGxpY2l0bHkg
YWxsb3dlZC5cblx0ICAgIGlmIChSZWFjdENsYXNzTWl4aW4uaGFzT3duUHJvcGVydHkobmFtZSkp
IHtcblx0ICAgICAgX2ludmFyaWFudChcblx0ICAgICAgICBzcGVjUG9saWN5ID09PSAnT1ZFUlJJ
REVfQkFTRScsXG5cdCAgICAgICAgJ1JlYWN0Q2xhc3NJbnRlcmZhY2U6IFlvdSBhcmUgYXR0ZW1w
dGluZyB0byBvdmVycmlkZSAnICtcblx0ICAgICAgICAgICdgJXNgIGZyb20geW91ciBjbGFzcyBz
cGVjaWZpY2F0aW9uLiBFbnN1cmUgdGhhdCB5b3VyIG1ldGhvZCBuYW1lcyAnICtcblx0ICAgICAg
ICAgICdkbyBub3Qgb3ZlcmxhcCB3aXRoIFJlYWN0IG1ldGhvZHMuJyxcblx0ICAgICAgICBuYW1l
XG5cdCAgICAgICk7XG5cdCAgICB9XG5cdFxuXHQgICAgLy8gRGlzYWxsb3cgZGVmaW5pbmcgbWV0
aG9kcyBtb3JlIHRoYW4gb25jZSB1bmxlc3MgZXhwbGljaXRseSBhbGxvd2VkLlxuXHQgICAgaWYg
KGlzQWxyZWFkeURlZmluZWQpIHtcblx0ICAgICAgX2ludmFyaWFudChcblx0ICAgICAgICBzcGVj
UG9saWN5ID09PSAnREVGSU5FX01BTlknIHx8IHNwZWNQb2xpY3kgPT09ICdERUZJTkVfTUFOWV9N
RVJHRUQnLFxuXHQgICAgICAgICdSZWFjdENsYXNzSW50ZXJmYWNlOiBZb3UgYXJlIGF0dGVtcHRp
bmcgdG8gZGVmaW5lICcgK1xuXHQgICAgICAgICAgJ2Alc2Agb24geW91ciBjb21wb25lbnQgbW9y
ZSB0aGFuIG9uY2UuIFRoaXMgY29uZmxpY3QgbWF5IGJlIGR1ZSAnICtcblx0ICAgICAgICAgICd0
byBhIG1peGluLicsXG5cdCAgICAgICAgbmFtZVxuXHQgICAgICApO1xuXHQgICAgfVxuXHQgIH1c
blx0XG5cdCAgLyoqXG5cdCAgICogTWl4aW4gaGVscGVyIHdoaWNoIGhhbmRsZXMgcG9saWN5IHZh
bGlkYXRpb24gYW5kIHJlc2VydmVkXG5cdCAgICogc3BlY2lmaWNhdGlvbiBrZXlzIHdoZW4gYnVp
bGRpbmcgUmVhY3QgY2xhc3Nlcy5cblx0ICAgKi9cblx0ICBmdW5jdGlvbiBtaXhTcGVjSW50b0Nv
bXBvbmVudChDb25zdHJ1Y3Rvciwgc3BlYykge1xuXHQgICAgaWYgKCFzcGVjKSB7XG5cdCAgICAg
IGlmIChmYWxzZSkge1xuXHQgICAgICAgIHZhciB0eXBlb2ZTcGVjID0gdHlwZW9mIHNwZWM7XG5c
dCAgICAgICAgdmFyIGlzTWl4aW5WYWxpZCA9IHR5cGVvZlNwZWMgPT09ICdvYmplY3QnICYmIHNw
ZWMgIT09IG51bGw7XG5cdFxuXHQgICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0g
J3Byb2R1Y3Rpb24nKSB7XG5cdCAgICAgICAgICB3YXJuaW5nKFxuXHQgICAgICAgICAgICBpc01p
eGluVmFsaWQsXG5cdCAgICAgICAgICAgIFwiJXM6IFlvdSdyZSBhdHRlbXB0aW5nIHRvIGluY2x1
ZGUgYSBtaXhpbiB0aGF0IGlzIGVpdGhlciBudWxsIFwiICtcblx0ICAgICAgICAgICAgICAnb3Ig
bm90IGFuIG9iamVjdC4gQ2hlY2sgdGhlIG1peGlucyBpbmNsdWRlZCBieSB0aGUgY29tcG9uZW50
LCAnICtcblx0ICAgICAgICAgICAgICAnYXMgd2VsbCBhcyBhbnkgbWl4aW5zIHRoZXkgaW5jbHVk
ZSB0aGVtc2VsdmVzLiAnICtcblx0ICAgICAgICAgICAgICAnRXhwZWN0ZWQgb2JqZWN0IGJ1dCBn
b3QgJXMuJyxcblx0ICAgICAgICAgICAgQ29uc3RydWN0b3IuZGlzcGxheU5hbWUgfHwgJ1JlYWN0
Q2xhc3MnLFxuXHQgICAgICAgICAgICBzcGVjID09PSBudWxsID8gbnVsbCA6IHR5cGVvZlNwZWNc
blx0ICAgICAgICAgICk7XG5cdCAgICAgICAgfVxuXHQgICAgICB9XG5cdFxuXHQgICAgICByZXR1
cm47XG5cdCAgICB9XG5cdFxuXHQgICAgX2ludmFyaWFudChcblx0ICAgICAgdHlwZW9mIHNwZWMg
IT09ICdmdW5jdGlvbicsXG5cdCAgICAgIFwiUmVhY3RDbGFzczogWW91J3JlIGF0dGVtcHRpbmcg
dG8gXCIgK1xuXHQgICAgICAgICd1c2UgYSBjb21wb25lbnQgY2xhc3Mgb3IgZnVuY3Rpb24gYXMg
YSBtaXhpbi4gSW5zdGVhZCwganVzdCB1c2UgYSAnICtcblx0ICAgICAgICAncmVndWxhciBvYmpl
Y3QuJ1xuXHQgICAgKTtcblx0ICAgIF9pbnZhcmlhbnQoXG5cdCAgICAgICFpc1ZhbGlkRWxlbWVu
dChzcGVjKSxcblx0ICAgICAgXCJSZWFjdENsYXNzOiBZb3UncmUgYXR0ZW1wdGluZyB0byBcIiAr
XG5cdCAgICAgICAgJ3VzZSBhIGNvbXBvbmVudCBhcyBhIG1peGluLiBJbnN0ZWFkLCBqdXN0IHVz
ZSBhIHJlZ3VsYXIgb2JqZWN0Lidcblx0ICAgICk7XG5cdFxuXHQgICAgdmFyIHByb3RvID0gQ29u
c3RydWN0b3IucHJvdG90eXBlO1xuXHQgICAgdmFyIGF1dG9CaW5kUGFpcnMgPSBwcm90by5fX3Jl
YWN0QXV0b0JpbmRQYWlycztcblx0XG5cdCAgICAvLyBCeSBoYW5kbGluZyBtaXhpbnMgYmVmb3Jl
IGFueSBvdGhlciBwcm9wZXJ0aWVzLCB3ZSBlbnN1cmUgdGhlIHNhbWVcblx0ICAgIC8vIGNoYWlu
aW5nIG9yZGVyIGlzIGFwcGxpZWQgdG8gbWV0aG9kcyB3aXRoIERFRklORV9NQU5ZIHBvbGljeSwg
d2hldGhlclxuXHQgICAgLy8gbWl4aW5zIGFyZSBsaXN0ZWQgYmVmb3JlIG9yIGFmdGVyIHRoZXNl
IG1ldGhvZHMgaW4gdGhlIHNwZWMuXG5cdCAgICBpZiAoc3BlYy5oYXNPd25Qcm9wZXJ0eShNSVhJ
TlNfS0VZKSkge1xuXHQgICAgICBSRVNFUlZFRF9TUEVDX0tFWVMubWl4aW5zKENvbnN0cnVjdG9y
LCBzcGVjLm1peGlucyk7XG5cdCAgICB9XG5cdFxuXHQgICAgZm9yICh2YXIgbmFtZSBpbiBzcGVj
KSB7XG5cdCAgICAgIGlmICghc3BlYy5oYXNPd25Qcm9wZXJ0eShuYW1lKSkge1xuXHQgICAgICAg
IGNvbnRpbnVlO1xuXHQgICAgICB9XG5cdFxuXHQgICAgICBpZiAobmFtZSA9PT0gTUlYSU5TX0tF
WSkge1xuXHQgICAgICAgIC8vIFdlIGhhdmUgYWxyZWFkeSBoYW5kbGVkIG1peGlucyBpbiBhIHNw
ZWNpYWwgY2FzZSBhYm92ZS5cblx0ICAgICAgICBjb250aW51ZTtcblx0ICAgICAgfVxuXHRcblx0
ICAgICAgdmFyIHByb3BlcnR5ID0gc3BlY1tuYW1lXTtcblx0ICAgICAgdmFyIGlzQWxyZWFkeURl
ZmluZWQgPSBwcm90by5oYXNPd25Qcm9wZXJ0eShuYW1lKTtcblx0ICAgICAgdmFsaWRhdGVNZXRo
b2RPdmVycmlkZShpc0FscmVhZHlEZWZpbmVkLCBuYW1lKTtcblx0XG5cdCAgICAgIGlmIChSRVNF
UlZFRF9TUEVDX0tFWVMuaGFzT3duUHJvcGVydHkobmFtZSkpIHtcblx0ICAgICAgICBSRVNFUlZF
RF9TUEVDX0tFWVNbbmFtZV0oQ29uc3RydWN0b3IsIHByb3BlcnR5KTtcblx0ICAgICAgfSBlbHNl
IHtcblx0ICAgICAgICAvLyBTZXR1cCBtZXRob2RzIG9uIHByb3RvdHlwZTpcblx0ICAgICAgICAv
LyBUaGUgZm9sbG93aW5nIG1lbWJlciBtZXRob2RzIHNob3VsZCBub3QgYmUgYXV0b21hdGljYWxs
eSBib3VuZDpcblx0ICAgICAgICAvLyAxLiBFeHBlY3RlZCBSZWFjdENsYXNzIG1ldGhvZHMgKGlu
IHRoZSBcImludGVyZmFjZVwiKS5cblx0ICAgICAgICAvLyAyLiBPdmVycmlkZGVuIG1ldGhvZHMg
KHRoYXQgd2VyZSBtaXhlZCBpbikuXG5cdCAgICAgICAgdmFyIGlzUmVhY3RDbGFzc01ldGhvZCA9
IFJlYWN0Q2xhc3NJbnRlcmZhY2UuaGFzT3duUHJvcGVydHkobmFtZSk7XG5cdCAgICAgICAgdmFy
IGlzRnVuY3Rpb24gPSB0eXBlb2YgcHJvcGVydHkgPT09ICdmdW5jdGlvbic7XG5cdCAgICAgICAg
dmFyIHNob3VsZEF1dG9CaW5kID1cblx0ICAgICAgICAgIGlzRnVuY3Rpb24gJiZcblx0ICAgICAg
ICAgICFpc1JlYWN0Q2xhc3NNZXRob2QgJiZcblx0ICAgICAgICAgICFpc0FscmVhZHlEZWZpbmVk
ICYmXG5cdCAgICAgICAgICBzcGVjLmF1dG9iaW5kICE9PSBmYWxzZTtcblx0XG5cdCAgICAgICAg
aWYgKHNob3VsZEF1dG9CaW5kKSB7XG5cdCAgICAgICAgICBhdXRvQmluZFBhaXJzLnB1c2gobmFt
ZSwgcHJvcGVydHkpO1xuXHQgICAgICAgICAgcHJvdG9bbmFtZV0gPSBwcm9wZXJ0eTtcblx0ICAg
ICAgICB9IGVsc2Uge1xuXHQgICAgICAgICAgaWYgKGlzQWxyZWFkeURlZmluZWQpIHtcblx0ICAg
ICAgICAgICAgdmFyIHNwZWNQb2xpY3kgPSBSZWFjdENsYXNzSW50ZXJmYWNlW25hbWVdO1xuXHRc
blx0ICAgICAgICAgICAgLy8gVGhlc2UgY2FzZXMgc2hvdWxkIGFscmVhZHkgYmUgY2F1Z2h0IGJ5
IHZhbGlkYXRlTWV0aG9kT3ZlcnJpZGUuXG5cdCAgICAgICAgICAgIF9pbnZhcmlhbnQoXG5cdCAg
ICAgICAgICAgICAgaXNSZWFjdENsYXNzTWV0aG9kICYmXG5cdCAgICAgICAgICAgICAgICAoc3Bl
Y1BvbGljeSA9PT0gJ0RFRklORV9NQU5ZX01FUkdFRCcgfHxcblx0ICAgICAgICAgICAgICAgICAg
c3BlY1BvbGljeSA9PT0gJ0RFRklORV9NQU5ZJyksXG5cdCAgICAgICAgICAgICAgJ1JlYWN0Q2xh
c3M6IFVuZXhwZWN0ZWQgc3BlYyBwb2xpY3kgJXMgZm9yIGtleSAlcyAnICtcblx0ICAgICAgICAg
ICAgICAgICd3aGVuIG1peGluZyBpbiBjb21wb25lbnQgc3BlY3MuJyxcblx0ICAgICAgICAgICAg
ICBzcGVjUG9saWN5LFxuXHQgICAgICAgICAgICAgIG5hbWVcblx0ICAgICAgICAgICAgKTtcblx0
XG5cdCAgICAgICAgICAgIC8vIEZvciBtZXRob2RzIHdoaWNoIGFyZSBkZWZpbmVkIG1vcmUgdGhh
biBvbmNlLCBjYWxsIHRoZSBleGlzdGluZ1xuXHQgICAgICAgICAgICAvLyBtZXRob2RzIGJlZm9y
ZSBjYWxsaW5nIHRoZSBuZXcgcHJvcGVydHksIG1lcmdpbmcgaWYgYXBwcm9wcmlhdGUuXG5cdCAg
ICAgICAgICAgIGlmIChzcGVjUG9saWN5ID09PSAnREVGSU5FX01BTllfTUVSR0VEJykge1xuXHQg
ICAgICAgICAgICAgIHByb3RvW25hbWVdID0gY3JlYXRlTWVyZ2VkUmVzdWx0RnVuY3Rpb24ocHJv
dG9bbmFtZV0sIHByb3BlcnR5KTtcblx0ICAgICAgICAgICAgfSBlbHNlIGlmIChzcGVjUG9saWN5
ID09PSAnREVGSU5FX01BTlknKSB7XG5cdCAgICAgICAgICAgICAgcHJvdG9bbmFtZV0gPSBjcmVh
dGVDaGFpbmVkRnVuY3Rpb24ocHJvdG9bbmFtZV0sIHByb3BlcnR5KTtcblx0ICAgICAgICAgICAg
fVxuXHQgICAgICAgICAgfSBlbHNlIHtcblx0ICAgICAgICAgICAgcHJvdG9bbmFtZV0gPSBwcm9w
ZXJ0eTtcblx0ICAgICAgICAgICAgaWYgKGZhbHNlKSB7XG5cdCAgICAgICAgICAgICAgLy8gQWRk
IHZlcmJvc2UgZGlzcGxheU5hbWUgdG8gdGhlIGZ1bmN0aW9uLCB3aGljaCBoZWxwcyB3aGVuIGxv
b2tpbmdcblx0ICAgICAgICAgICAgICAvLyBhdCBwcm9maWxpbmcgdG9vbHMuXG5cdCAgICAgICAg
ICAgICAgaWYgKHR5cGVvZiBwcm9wZXJ0eSA9PT0gJ2Z1bmN0aW9uJyAmJiBzcGVjLmRpc3BsYXlO
YW1lKSB7XG5cdCAgICAgICAgICAgICAgICBwcm90b1tuYW1lXS5kaXNwbGF5TmFtZSA9IHNwZWMu
ZGlzcGxheU5hbWUgKyAnXycgKyBuYW1lO1xuXHQgICAgICAgICAgICAgIH1cblx0ICAgICAgICAg
ICAgfVxuXHQgICAgICAgICAgfVxuXHQgICAgICAgIH1cblx0ICAgICAgfVxuXHQgICAgfVxuXHQg
IH1cblx0XG5cdCAgZnVuY3Rpb24gbWl4U3RhdGljU3BlY0ludG9Db21wb25lbnQoQ29uc3RydWN0
b3IsIHN0YXRpY3MpIHtcblx0ICAgIGlmICghc3RhdGljcykge1xuXHQgICAgICByZXR1cm47XG5c
dCAgICB9XG5cdCAgICBmb3IgKHZhciBuYW1lIGluIHN0YXRpY3MpIHtcblx0ICAgICAgdmFyIHBy
b3BlcnR5ID0gc3RhdGljc1tuYW1lXTtcblx0ICAgICAgaWYgKCFzdGF0aWNzLmhhc093blByb3Bl
cnR5KG5hbWUpKSB7XG5cdCAgICAgICAgY29udGludWU7XG5cdCAgICAgIH1cblx0XG5cdCAgICAg
IHZhciBpc1Jlc2VydmVkID0gbmFtZSBpbiBSRVNFUlZFRF9TUEVDX0tFWVM7XG5cdCAgICAgIF9p
bnZhcmlhbnQoXG5cdCAgICAgICAgIWlzUmVzZXJ2ZWQsXG5cdCAgICAgICAgJ1JlYWN0Q2xhc3M6
IFlvdSBhcmUgYXR0ZW1wdGluZyB0byBkZWZpbmUgYSByZXNlcnZlZCAnICtcblx0ICAgICAgICAg
ICdwcm9wZXJ0eSwgYCVzYCwgdGhhdCBzaG91bGRuXFwndCBiZSBvbiB0aGUgXCJzdGF0aWNzXCIg
a2V5LiBEZWZpbmUgaXQgJyArXG5cdCAgICAgICAgICAnYXMgYW4gaW5zdGFuY2UgcHJvcGVydHkg
aW5zdGVhZDsgaXQgd2lsbCBzdGlsbCBiZSBhY2Nlc3NpYmxlIG9uIHRoZSAnICtcblx0ICAgICAg
ICAgICdjb25zdHJ1Y3Rvci4nLFxuXHQgICAgICAgIG5hbWVcblx0ICAgICAgKTtcblx0XG5cdCAg
ICAgIHZhciBpc0luaGVyaXRlZCA9IG5hbWUgaW4gQ29uc3RydWN0b3I7XG5cdCAgICAgIF9pbnZh
cmlhbnQoXG5cdCAgICAgICAgIWlzSW5oZXJpdGVkLFxuXHQgICAgICAgICdSZWFjdENsYXNzOiBZ
b3UgYXJlIGF0dGVtcHRpbmcgdG8gZGVmaW5lICcgK1xuXHQgICAgICAgICAgJ2Alc2Agb24geW91
ciBjb21wb25lbnQgbW9yZSB0aGFuIG9uY2UuIFRoaXMgY29uZmxpY3QgbWF5IGJlICcgK1xuXHQg
ICAgICAgICAgJ2R1ZSB0byBhIG1peGluLicsXG5cdCAgICAgICAgbmFtZVxuXHQgICAgICApO1xu
XHQgICAgICBDb25zdHJ1Y3RvcltuYW1lXSA9IHByb3BlcnR5O1xuXHQgICAgfVxuXHQgIH1cblx0
XG5cdCAgLyoqXG5cdCAgICogTWVyZ2UgdHdvIG9iamVjdHMsIGJ1dCB0aHJvdyBpZiBib3RoIGNv
bnRhaW4gdGhlIHNhbWUga2V5LlxuXHQgICAqXG5cdCAgICogQHBhcmFtIHtvYmplY3R9IG9uZSBU
aGUgZmlyc3Qgb2JqZWN0LCB3aGljaCBpcyBtdXRhdGVkLlxuXHQgICAqIEBwYXJhbSB7b2JqZWN0
fSB0d28gVGhlIHNlY29uZCBvYmplY3Rcblx0ICAgKiBAcmV0dXJuIHtvYmplY3R9IG9uZSBhZnRl
ciBpdCBoYXMgYmVlbiBtdXRhdGVkIHRvIGNvbnRhaW4gZXZlcnl0aGluZyBpbiB0d28uXG5cdCAg
ICovXG5cdCAgZnVuY3Rpb24gbWVyZ2VJbnRvV2l0aE5vRHVwbGljYXRlS2V5cyhvbmUsIHR3bykg
e1xuXHQgICAgX2ludmFyaWFudChcblx0ICAgICAgb25lICYmIHR3byAmJiB0eXBlb2Ygb25lID09
PSAnb2JqZWN0JyAmJiB0eXBlb2YgdHdvID09PSAnb2JqZWN0Jyxcblx0ICAgICAgJ21lcmdlSW50
b1dpdGhOb0R1cGxpY2F0ZUtleXMoKTogQ2Fubm90IG1lcmdlIG5vbi1vYmplY3RzLidcblx0ICAg
ICk7XG5cdFxuXHQgICAgZm9yICh2YXIga2V5IGluIHR3bykge1xuXHQgICAgICBpZiAodHdvLmhh
c093blByb3BlcnR5KGtleSkpIHtcblx0ICAgICAgICBfaW52YXJpYW50KFxuXHQgICAgICAgICAg
b25lW2tleV0gPT09IHVuZGVmaW5lZCxcblx0ICAgICAgICAgICdtZXJnZUludG9XaXRoTm9EdXBs
aWNhdGVLZXlzKCk6ICcgK1xuXHQgICAgICAgICAgICAnVHJpZWQgdG8gbWVyZ2UgdHdvIG9iamVj
dHMgd2l0aCB0aGUgc2FtZSBrZXk6IGAlc2AuIFRoaXMgY29uZmxpY3QgJyArXG5cdCAgICAgICAg
ICAgICdtYXkgYmUgZHVlIHRvIGEgbWl4aW47IGluIHBhcnRpY3VsYXIsIHRoaXMgbWF5IGJlIGNh
dXNlZCBieSB0d28gJyArXG5cdCAgICAgICAgICAgICdnZXRJbml0aWFsU3RhdGUoKSBvciBnZXRE
ZWZhdWx0UHJvcHMoKSBtZXRob2RzIHJldHVybmluZyBvYmplY3RzICcgK1xuXHQgICAgICAgICAg
ICAnd2l0aCBjbGFzaGluZyBrZXlzLicsXG5cdCAgICAgICAgICBrZXlcblx0ICAgICAgICApO1xu
XHQgICAgICAgIG9uZVtrZXldID0gdHdvW2tleV07XG5cdCAgICAgIH1cblx0ICAgIH1cblx0ICAg
IHJldHVybiBvbmU7XG5cdCAgfVxuXHRcblx0ICAvKipcblx0ICAgKiBDcmVhdGVzIGEgZnVuY3Rp
b24gdGhhdCBpbnZva2VzIHR3byBmdW5jdGlvbnMgYW5kIG1lcmdlcyB0aGVpciByZXR1cm4gdmFs
dWVzLlxuXHQgICAqXG5cdCAgICogQHBhcmFtIHtmdW5jdGlvbn0gb25lIEZ1bmN0aW9uIHRvIGlu
dm9rZSBmaXJzdC5cblx0ICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSB0d28gRnVuY3Rpb24gdG8gaW52
b2tlIHNlY29uZC5cblx0ICAgKiBAcmV0dXJuIHtmdW5jdGlvbn0gRnVuY3Rpb24gdGhhdCBpbnZv
a2VzIHRoZSB0d28gYXJndW1lbnQgZnVuY3Rpb25zLlxuXHQgICAqIEBwcml2YXRlXG5cdCAgICov
XG5cdCAgZnVuY3Rpb24gY3JlYXRlTWVyZ2VkUmVzdWx0RnVuY3Rpb24ob25lLCB0d28pIHtcblx0
ICAgIHJldHVybiBmdW5jdGlvbiBtZXJnZWRSZXN1bHQoKSB7XG5cdCAgICAgIHZhciBhID0gb25l
LmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG5cdCAgICAgIHZhciBiID0gdHdvLmFwcGx5KHRoaXMs
IGFyZ3VtZW50cyk7XG5cdCAgICAgIGlmIChhID09IG51bGwpIHtcblx0ICAgICAgICByZXR1cm4g
Yjtcblx0ICAgICAgfSBlbHNlIGlmIChiID09IG51bGwpIHtcblx0ICAgICAgICByZXR1cm4gYTtc
blx0ICAgICAgfVxuXHQgICAgICB2YXIgYyA9IHt9O1xuXHQgICAgICBtZXJnZUludG9XaXRoTm9E
dXBsaWNhdGVLZXlzKGMsIGEpO1xuXHQgICAgICBtZXJnZUludG9XaXRoTm9EdXBsaWNhdGVLZXlz
KGMsIGIpO1xuXHQgICAgICByZXR1cm4gYztcblx0ICAgIH07XG5cdCAgfVxuXHRcblx0ICAvKipc
blx0ICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBpbnZva2VzIHR3byBmdW5jdGlvbnMgYW5k
IGlnbm9yZXMgdGhlaXIgcmV0dXJuIHZhbGVzLlxuXHQgICAqXG5cdCAgICogQHBhcmFtIHtmdW5j
dGlvbn0gb25lIEZ1bmN0aW9uIHRvIGludm9rZSBmaXJzdC5cblx0ICAgKiBAcGFyYW0ge2Z1bmN0
aW9ufSB0d28gRnVuY3Rpb24gdG8gaW52b2tlIHNlY29uZC5cblx0ICAgKiBAcmV0dXJuIHtmdW5j
dGlvbn0gRnVuY3Rpb24gdGhhdCBpbnZva2VzIHRoZSB0d28gYXJndW1lbnQgZnVuY3Rpb25zLlxu
XHQgICAqIEBwcml2YXRlXG5cdCAgICovXG5cdCAgZnVuY3Rpb24gY3JlYXRlQ2hhaW5lZEZ1bmN0
aW9uKG9uZSwgdHdvKSB7XG5cdCAgICByZXR1cm4gZnVuY3Rpb24gY2hhaW5lZEZ1bmN0aW9uKCkg
e1xuXHQgICAgICBvbmUuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcblx0ICAgICAgdHdvLmFwcGx5
KHRoaXMsIGFyZ3VtZW50cyk7XG5cdCAgICB9O1xuXHQgIH1cblx0XG5cdCAgLyoqXG5cdCAgICog
QmluZHMgYSBtZXRob2QgdG8gdGhlIGNvbXBvbmVudC5cblx0ICAgKlxuXHQgICAqIEBwYXJhbSB7
b2JqZWN0fSBjb21wb25lbnQgQ29tcG9uZW50IHdob3NlIG1ldGhvZCBpcyBnb2luZyB0byBiZSBi
b3VuZC5cblx0ICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBtZXRob2QgTWV0aG9kIHRvIGJlIGJvdW5k
LlxuXHQgICAqIEByZXR1cm4ge2Z1bmN0aW9ufSBUaGUgYm91bmQgbWV0aG9kLlxuXHQgICAqL1xu
XHQgIGZ1bmN0aW9uIGJpbmRBdXRvQmluZE1ldGhvZChjb21wb25lbnQsIG1ldGhvZCkge1xuXHQg
ICAgdmFyIGJvdW5kTWV0aG9kID0gbWV0aG9kLmJpbmQoY29tcG9uZW50KTtcblx0ICAgIGlmIChm
YWxzZSkge1xuXHQgICAgICBib3VuZE1ldGhvZC5fX3JlYWN0Qm91bmRDb250ZXh0ID0gY29tcG9u
ZW50O1xuXHQgICAgICBib3VuZE1ldGhvZC5fX3JlYWN0Qm91bmRNZXRob2QgPSBtZXRob2Q7XG5c
dCAgICAgIGJvdW5kTWV0aG9kLl9fcmVhY3RCb3VuZEFyZ3VtZW50cyA9IG51bGw7XG5cdCAgICAg
IHZhciBjb21wb25lbnROYW1lID0gY29tcG9uZW50LmNvbnN0cnVjdG9yLmRpc3BsYXlOYW1lO1xu
XHQgICAgICB2YXIgX2JpbmQgPSBib3VuZE1ldGhvZC5iaW5kO1xuXHQgICAgICBib3VuZE1ldGhv
ZC5iaW5kID0gZnVuY3Rpb24obmV3VGhpcykge1xuXHQgICAgICAgIGZvciAoXG5cdCAgICAgICAg
ICB2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsXG5cdCAgICAgICAgICAgIGFyZ3MgPSBBcnJh
eShfbGVuID4gMSA/IF9sZW4gLSAxIDogMCksXG5cdCAgICAgICAgICAgIF9rZXkgPSAxO1xuXHQg
ICAgICAgICAgX2tleSA8IF9sZW47XG5cdCAgICAgICAgICBfa2V5Kytcblx0ICAgICAgICApIHtc
blx0ICAgICAgICAgIGFyZ3NbX2tleSAtIDFdID0gYXJndW1lbnRzW19rZXldO1xuXHQgICAgICAg
IH1cblx0XG5cdCAgICAgICAgLy8gVXNlciBpcyB0cnlpbmcgdG8gYmluZCgpIGFuIGF1dG9ib3Vu
ZCBtZXRob2Q7IHdlIGVmZmVjdGl2ZWx5IHdpbGxcblx0ICAgICAgICAvLyBpZ25vcmUgdGhlIHZh
bHVlIG9mIFwidGhpc1wiIHRoYXQgdGhlIHVzZXIgaXMgdHJ5aW5nIHRvIHVzZSwgc29cblx0ICAg
ICAgICAvLyBsZXQncyB3YXJuLlxuXHQgICAgICAgIGlmIChuZXdUaGlzICE9PSBjb21wb25lbnQg
JiYgbmV3VGhpcyAhPT0gbnVsbCkge1xuXHQgICAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVf
RU5WICE9PSAncHJvZHVjdGlvbicpIHtcblx0ICAgICAgICAgICAgd2FybmluZyhcblx0ICAgICAg
ICAgICAgICBmYWxzZSxcblx0ICAgICAgICAgICAgICAnYmluZCgpOiBSZWFjdCBjb21wb25lbnQg
bWV0aG9kcyBtYXkgb25seSBiZSBib3VuZCB0byB0aGUgJyArXG5cdCAgICAgICAgICAgICAgICAn
Y29tcG9uZW50IGluc3RhbmNlLiBTZWUgJXMnLFxuXHQgICAgICAgICAgICAgIGNvbXBvbmVudE5h
bWVcblx0ICAgICAgICAgICAgKTtcblx0ICAgICAgICAgIH1cblx0ICAgICAgICB9IGVsc2UgaWYg
KCFhcmdzLmxlbmd0aCkge1xuXHQgICAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9
PSAncHJvZHVjdGlvbicpIHtcblx0ICAgICAgICAgICAgd2FybmluZyhcblx0ICAgICAgICAgICAg
ICBmYWxzZSxcblx0ICAgICAgICAgICAgICAnYmluZCgpOiBZb3UgYXJlIGJpbmRpbmcgYSBjb21w
b25lbnQgbWV0aG9kIHRvIHRoZSBjb21wb25lbnQuICcgK1xuXHQgICAgICAgICAgICAgICAgJ1Jl
YWN0IGRvZXMgdGhpcyBmb3IgeW91IGF1dG9tYXRpY2FsbHkgaW4gYSBoaWdoLXBlcmZvcm1hbmNl
ICcgK1xuXHQgICAgICAgICAgICAgICAgJ3dheSwgc28geW91IGNhbiBzYWZlbHkgcmVtb3ZlIHRo
aXMgY2FsbC4gU2VlICVzJyxcblx0ICAgICAgICAgICAgICBjb21wb25lbnROYW1lXG5cdCAgICAg
ICAgICAgICk7XG5cdCAgICAgICAgICB9XG5cdCAgICAgICAgICByZXR1cm4gYm91bmRNZXRob2Q7
XG5cdCAgICAgICAgfVxuXHQgICAgICAgIHZhciByZWJvdW5kTWV0aG9kID0gX2JpbmQuYXBwbHko
Ym91bmRNZXRob2QsIGFyZ3VtZW50cyk7XG5cdCAgICAgICAgcmVib3VuZE1ldGhvZC5fX3JlYWN0
Qm91bmRDb250ZXh0ID0gY29tcG9uZW50O1xuXHQgICAgICAgIHJlYm91bmRNZXRob2QuX19yZWFj
dEJvdW5kTWV0aG9kID0gbWV0aG9kO1xuXHQgICAgICAgIHJlYm91bmRNZXRob2QuX19yZWFjdEJv
dW5kQXJndW1lbnRzID0gYXJncztcblx0ICAgICAgICByZXR1cm4gcmVib3VuZE1ldGhvZDtcblx0
ICAgICAgfTtcblx0ICAgIH1cblx0ICAgIHJldHVybiBib3VuZE1ldGhvZDtcblx0ICB9XG5cdFxu
XHQgIC8qKlxuXHQgICAqIEJpbmRzIGFsbCBhdXRvLWJvdW5kIG1ldGhvZHMgaW4gYSBjb21wb25l
bnQuXG5cdCAgICpcblx0ICAgKiBAcGFyYW0ge29iamVjdH0gY29tcG9uZW50IENvbXBvbmVudCB3
aG9zZSBtZXRob2QgaXMgZ29pbmcgdG8gYmUgYm91bmQuXG5cdCAgICovXG5cdCAgZnVuY3Rpb24g
YmluZEF1dG9CaW5kTWV0aG9kcyhjb21wb25lbnQpIHtcblx0ICAgIHZhciBwYWlycyA9IGNvbXBv
bmVudC5fX3JlYWN0QXV0b0JpbmRQYWlycztcblx0ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcGFp
cnMubGVuZ3RoOyBpICs9IDIpIHtcblx0ICAgICAgdmFyIGF1dG9CaW5kS2V5ID0gcGFpcnNbaV07
XG5cdCAgICAgIHZhciBtZXRob2QgPSBwYWlyc1tpICsgMV07XG5cdCAgICAgIGNvbXBvbmVudFth
dXRvQmluZEtleV0gPSBiaW5kQXV0b0JpbmRNZXRob2QoY29tcG9uZW50LCBtZXRob2QpO1xuXHQg
ICAgfVxuXHQgIH1cblx0XG5cdCAgdmFyIElzTW91bnRlZFByZU1peGluID0ge1xuXHQgICAgY29t
cG9uZW50RGlkTW91bnQ6IGZ1bmN0aW9uKCkge1xuXHQgICAgICB0aGlzLl9faXNNb3VudGVkID0g
dHJ1ZTtcblx0ICAgIH1cblx0ICB9O1xuXHRcblx0ICB2YXIgSXNNb3VudGVkUG9zdE1peGluID0g
e1xuXHQgICAgY29tcG9uZW50V2lsbFVubW91bnQ6IGZ1bmN0aW9uKCkge1xuXHQgICAgICB0aGlz
Ll9faXNNb3VudGVkID0gZmFsc2U7XG5cdCAgICB9XG5cdCAgfTtcblx0XG5cdCAgLyoqXG5cdCAg
ICogQWRkIG1vcmUgdG8gdGhlIFJlYWN0Q2xhc3MgYmFzZSBjbGFzcy4gVGhlc2UgYXJlIGFsbCBs
ZWdhY3kgZmVhdHVyZXMgYW5kXG5cdCAgICogdGhlcmVmb3JlIG5vdCBhbHJlYWR5IHBhcnQgb2Yg
dGhlIG1vZGVybiBSZWFjdENvbXBvbmVudC5cblx0ICAgKi9cblx0ICB2YXIgUmVhY3RDbGFzc01p
eGluID0ge1xuXHQgICAgLyoqXG5cdCAgICAgKiBUT0RPOiBUaGlzIHdpbGwgYmUgZGVwcmVjYXRl
ZCBiZWNhdXNlIHN0YXRlIHNob3VsZCBhbHdheXMga2VlcCBhIGNvbnNpc3RlbnRcblx0ICAgICAq
IHR5cGUgc2lnbmF0dXJlIGFuZCB0aGUgb25seSB1c2UgY2FzZSBmb3IgdGhpcywgaXMgdG8gYXZv
aWQgdGhhdC5cblx0ICAgICAqL1xuXHQgICAgcmVwbGFjZVN0YXRlOiBmdW5jdGlvbihuZXdTdGF0
ZSwgY2FsbGJhY2spIHtcblx0ICAgICAgdGhpcy51cGRhdGVyLmVucXVldWVSZXBsYWNlU3RhdGUo
dGhpcywgbmV3U3RhdGUsIGNhbGxiYWNrKTtcblx0ICAgIH0sXG5cdFxuXHQgICAgLyoqXG5cdCAg
ICAgKiBDaGVja3Mgd2hldGhlciBvciBub3QgdGhpcyBjb21wb3NpdGUgY29tcG9uZW50IGlzIG1v
dW50ZWQuXG5cdCAgICAgKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmIG1vdW50ZWQsIGZhbHNl
IG90aGVyd2lzZS5cblx0ICAgICAqIEBwcm90ZWN0ZWRcblx0ICAgICAqIEBmaW5hbFxuXHQgICAg
ICovXG5cdCAgICBpc01vdW50ZWQ6IGZ1bmN0aW9uKCkge1xuXHQgICAgICBpZiAoZmFsc2UpIHtc
blx0ICAgICAgICB3YXJuaW5nKFxuXHQgICAgICAgICAgdGhpcy5fX2RpZFdhcm5Jc01vdW50ZWQs
XG5cdCAgICAgICAgICAnJXM6IGlzTW91bnRlZCBpcyBkZXByZWNhdGVkLiBJbnN0ZWFkLCBtYWtl
IHN1cmUgdG8gY2xlYW4gdXAgJyArXG5cdCAgICAgICAgICAgICdzdWJzY3JpcHRpb25zIGFuZCBw
ZW5kaW5nIHJlcXVlc3RzIGluIGNvbXBvbmVudFdpbGxVbm1vdW50IHRvICcgK1xuXHQgICAgICAg
ICAgICAncHJldmVudCBtZW1vcnkgbGVha3MuJyxcblx0ICAgICAgICAgICh0aGlzLmNvbnN0cnVj
dG9yICYmIHRoaXMuY29uc3RydWN0b3IuZGlzcGxheU5hbWUpIHx8XG5cdCAgICAgICAgICAgIHRo
aXMubmFtZSB8fFxuXHQgICAgICAgICAgICAnQ29tcG9uZW50J1xuXHQgICAgICAgICk7XG5cdCAg
ICAgICAgdGhpcy5fX2RpZFdhcm5Jc01vdW50ZWQgPSB0cnVlO1xuXHQgICAgICB9XG5cdCAgICAg
IHJldHVybiAhIXRoaXMuX19pc01vdW50ZWQ7XG5cdCAgICB9XG5cdCAgfTtcblx0XG5cdCAgdmFy
IFJlYWN0Q2xhc3NDb21wb25lbnQgPSBmdW5jdGlvbigpIHt9O1xuXHQgIF9hc3NpZ24oXG5cdCAg
ICBSZWFjdENsYXNzQ29tcG9uZW50LnByb3RvdHlwZSxcblx0ICAgIFJlYWN0Q29tcG9uZW50LnBy
b3RvdHlwZSxcblx0ICAgIFJlYWN0Q2xhc3NNaXhpblxuXHQgICk7XG5cdFxuXHQgIC8qKlxuXHQg
ICAqIENyZWF0ZXMgYSBjb21wb3NpdGUgY29tcG9uZW50IGNsYXNzIGdpdmVuIGEgY2xhc3Mgc3Bl
Y2lmaWNhdGlvbi5cblx0ICAgKiBTZWUgaHR0cHM6Ly9mYWNlYm9vay5naXRodWIuaW8vcmVhY3Qv
ZG9jcy90b3AtbGV2ZWwtYXBpLmh0bWwjcmVhY3QuY3JlYXRlY2xhc3Ncblx0ICAgKlxuXHQgICAq
IEBwYXJhbSB7b2JqZWN0fSBzcGVjIENsYXNzIHNwZWNpZmljYXRpb24gKHdoaWNoIG11c3QgZGVm
aW5lIGByZW5kZXJgKS5cblx0ICAgKiBAcmV0dXJuIHtmdW5jdGlvbn0gQ29tcG9uZW50IGNvbnN0
cnVjdG9yIGZ1bmN0aW9uLlxuXHQgICAqIEBwdWJsaWNcblx0ICAgKi9cblx0ICBmdW5jdGlvbiBj
cmVhdGVDbGFzcyhzcGVjKSB7XG5cdCAgICAvLyBUbyBrZWVwIG91ciB3YXJuaW5ncyBtb3JlIHVu
ZGVyc3RhbmRhYmxlLCB3ZSdsbCB1c2UgYSBsaXR0bGUgaGFjayBoZXJlIHRvXG5cdCAgICAvLyBl
bnN1cmUgdGhhdCBDb25zdHJ1Y3Rvci5uYW1lICE9PSAnQ29uc3RydWN0b3InLiBUaGlzIG1ha2Vz
IHN1cmUgd2UgZG9uJ3Rcblx0ICAgIC8vIHVubmVjZXNzYXJpbHkgaWRlbnRpZnkgYSBjbGFzcyB3
aXRob3V0IGRpc3BsYXlOYW1lIGFzICdDb25zdHJ1Y3RvcicuXG5cdCAgICB2YXIgQ29uc3RydWN0
b3IgPSBpZGVudGl0eShmdW5jdGlvbihwcm9wcywgY29udGV4dCwgdXBkYXRlcikge1xuXHQgICAg
ICAvLyBUaGlzIGNvbnN0cnVjdG9yIGdldHMgb3ZlcnJpZGRlbiBieSBtb2Nrcy4gVGhlIGFyZ3Vt
ZW50IGlzIHVzZWRcblx0ICAgICAgLy8gYnkgbW9ja3MgdG8gYXNzZXJ0IG9uIHdoYXQgZ2V0cyBt
b3VudGVkLlxuXHRcblx0ICAgICAgaWYgKGZhbHNlKSB7XG5cdCAgICAgICAgd2FybmluZyhcblx0
ICAgICAgICAgIHRoaXMgaW5zdGFuY2VvZiBDb25zdHJ1Y3Rvcixcblx0ICAgICAgICAgICdTb21l
dGhpbmcgaXMgY2FsbGluZyBhIFJlYWN0IGNvbXBvbmVudCBkaXJlY3RseS4gVXNlIGEgZmFjdG9y
eSBvciAnICtcblx0ICAgICAgICAgICAgJ0pTWCBpbnN0ZWFkLiBTZWU6IGh0dHBzOi8vZmIubWUv
cmVhY3QtbGVnYWN5ZmFjdG9yeSdcblx0ICAgICAgICApO1xuXHQgICAgICB9XG5cdFxuXHQgICAg
ICAvLyBXaXJlIHVwIGF1dG8tYmluZGluZ1xuXHQgICAgICBpZiAodGhpcy5fX3JlYWN0QXV0b0Jp
bmRQYWlycy5sZW5ndGgpIHtcblx0ICAgICAgICBiaW5kQXV0b0JpbmRNZXRob2RzKHRoaXMpO1xu
XHQgICAgICB9XG5cdFxuXHQgICAgICB0aGlzLnByb3BzID0gcHJvcHM7XG5cdCAgICAgIHRoaXMu
Y29udGV4dCA9IGNvbnRleHQ7XG5cdCAgICAgIHRoaXMucmVmcyA9IGVtcHR5T2JqZWN0O1xuXHQg
ICAgICB0aGlzLnVwZGF0ZXIgPSB1cGRhdGVyIHx8IFJlYWN0Tm9vcFVwZGF0ZVF1ZXVlO1xuXHRc
blx0ICAgICAgdGhpcy5zdGF0ZSA9IG51bGw7XG5cdFxuXHQgICAgICAvLyBSZWFjdENsYXNzZXMg
ZG9lc24ndCBoYXZlIGNvbnN0cnVjdG9ycy4gSW5zdGVhZCwgdGhleSB1c2UgdGhlXG5cdCAgICAg
IC8vIGdldEluaXRpYWxTdGF0ZSBhbmQgY29tcG9uZW50V2lsbE1vdW50IG1ldGhvZHMgZm9yIGlu
aXRpYWxpemF0aW9uLlxuXHRcblx0ICAgICAgdmFyIGluaXRpYWxTdGF0ZSA9IHRoaXMuZ2V0SW5p
dGlhbFN0YXRlID8gdGhpcy5nZXRJbml0aWFsU3RhdGUoKSA6IG51bGw7XG5cdCAgICAgIGlmIChm
YWxzZSkge1xuXHQgICAgICAgIC8vIFdlIGFsbG93IGF1dG8tbW9ja3MgdG8gcHJvY2VlZCBhcyBp
ZiB0aGV5J3JlIHJldHVybmluZyBudWxsLlxuXHQgICAgICAgIGlmIChcblx0ICAgICAgICAgIGlu
aXRpYWxTdGF0ZSA9PT0gdW5kZWZpbmVkICYmXG5cdCAgICAgICAgICB0aGlzLmdldEluaXRpYWxT
dGF0ZS5faXNNb2NrRnVuY3Rpb25cblx0ICAgICAgICApIHtcblx0ICAgICAgICAgIC8vIFRoaXMg
aXMgcHJvYmFibHkgYmFkIHByYWN0aWNlLiBDb25zaWRlciB3YXJuaW5nIGhlcmUgYW5kXG5cdCAg
ICAgICAgICAvLyBkZXByZWNhdGluZyB0aGlzIGNvbnZlbmllbmNlLlxuXHQgICAgICAgICAgaW5p
dGlhbFN0YXRlID0gbnVsbDtcblx0ICAgICAgICB9XG5cdCAgICAgIH1cblx0ICAgICAgX2ludmFy
aWFudChcblx0ICAgICAgICB0eXBlb2YgaW5pdGlhbFN0YXRlID09PSAnb2JqZWN0JyAmJiAhQXJy
YXkuaXNBcnJheShpbml0aWFsU3RhdGUpLFxuXHQgICAgICAgICclcy5nZXRJbml0aWFsU3RhdGUo
KTogbXVzdCByZXR1cm4gYW4gb2JqZWN0IG9yIG51bGwnLFxuXHQgICAgICAgIENvbnN0cnVjdG9y
LmRpc3BsYXlOYW1lIHx8ICdSZWFjdENvbXBvc2l0ZUNvbXBvbmVudCdcblx0ICAgICAgKTtcblx0
XG5cdCAgICAgIHRoaXMuc3RhdGUgPSBpbml0aWFsU3RhdGU7XG5cdCAgICB9KTtcblx0ICAgIENv
bnN0cnVjdG9yLnByb3RvdHlwZSA9IG5ldyBSZWFjdENsYXNzQ29tcG9uZW50KCk7XG5cdCAgICBD
b25zdHJ1Y3Rvci5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBDb25zdHJ1Y3Rvcjtcblx0ICAgIENv
bnN0cnVjdG9yLnByb3RvdHlwZS5fX3JlYWN0QXV0b0JpbmRQYWlycyA9IFtdO1xuXHRcblx0ICAg
IGluamVjdGVkTWl4aW5zLmZvckVhY2gobWl4U3BlY0ludG9Db21wb25lbnQuYmluZChudWxsLCBD
b25zdHJ1Y3RvcikpO1xuXHRcblx0ICAgIG1peFNwZWNJbnRvQ29tcG9uZW50KENvbnN0cnVjdG9y
LCBJc01vdW50ZWRQcmVNaXhpbik7XG5cdCAgICBtaXhTcGVjSW50b0NvbXBvbmVudChDb25zdHJ1
Y3Rvciwgc3BlYyk7XG5cdCAgICBtaXhTcGVjSW50b0NvbXBvbmVudChDb25zdHJ1Y3RvciwgSXNN
b3VudGVkUG9zdE1peGluKTtcblx0XG5cdCAgICAvLyBJbml0aWFsaXplIHRoZSBkZWZhdWx0UHJv
cHMgcHJvcGVydHkgYWZ0ZXIgYWxsIG1peGlucyBoYXZlIGJlZW4gbWVyZ2VkLlxuXHQgICAgaWYg
KENvbnN0cnVjdG9yLmdldERlZmF1bHRQcm9wcykge1xuXHQgICAgICBDb25zdHJ1Y3Rvci5kZWZh
dWx0UHJvcHMgPSBDb25zdHJ1Y3Rvci5nZXREZWZhdWx0UHJvcHMoKTtcblx0ICAgIH1cblx0XG5c
dCAgICBpZiAoZmFsc2UpIHtcblx0ICAgICAgLy8gVGhpcyBpcyBhIHRhZyB0byBpbmRpY2F0ZSB0
aGF0IHRoZSB1c2Ugb2YgdGhlc2UgbWV0aG9kIG5hbWVzIGlzIG9rLFxuXHQgICAgICAvLyBzaW5j
ZSBpdCdzIHVzZWQgd2l0aCBjcmVhdGVDbGFzcy4gSWYgaXQncyBub3QsIHRoZW4gaXQncyBsaWtl
bHkgYVxuXHQgICAgICAvLyBtaXN0YWtlIHNvIHdlJ2xsIHdhcm4geW91IHRvIHVzZSB0aGUgc3Rh
dGljIHByb3BlcnR5LCBwcm9wZXJ0eVxuXHQgICAgICAvLyBpbml0aWFsaXplciBvciBjb25zdHJ1
Y3RvciByZXNwZWN0aXZlbHkuXG5cdCAgICAgIGlmIChDb25zdHJ1Y3Rvci5nZXREZWZhdWx0UHJv
cHMpIHtcblx0ICAgICAgICBDb25zdHJ1Y3Rvci5nZXREZWZhdWx0UHJvcHMuaXNSZWFjdENsYXNz
QXBwcm92ZWQgPSB7fTtcblx0ICAgICAgfVxuXHQgICAgICBpZiAoQ29uc3RydWN0b3IucHJvdG90
eXBlLmdldEluaXRpYWxTdGF0ZSkge1xuXHQgICAgICAgIENvbnN0cnVjdG9yLnByb3RvdHlwZS5n
ZXRJbml0aWFsU3RhdGUuaXNSZWFjdENsYXNzQXBwcm92ZWQgPSB7fTtcblx0ICAgICAgfVxuXHQg
ICAgfVxuXHRcblx0ICAgIF9pbnZhcmlhbnQoXG5cdCAgICAgIENvbnN0cnVjdG9yLnByb3RvdHlw
ZS5yZW5kZXIsXG5cdCAgICAgICdjcmVhdGVDbGFzcyguLi4pOiBDbGFzcyBzcGVjaWZpY2F0aW9u
IG11c3QgaW1wbGVtZW50IGEgYHJlbmRlcmAgbWV0aG9kLidcblx0ICAgICk7XG5cdFxuXHQgICAg
aWYgKGZhbHNlKSB7XG5cdCAgICAgIHdhcm5pbmcoXG5cdCAgICAgICAgIUNvbnN0cnVjdG9yLnBy
b3RvdHlwZS5jb21wb25lbnRTaG91bGRVcGRhdGUsXG5cdCAgICAgICAgJyVzIGhhcyBhIG1ldGhv
ZCBjYWxsZWQgJyArXG5cdCAgICAgICAgICAnY29tcG9uZW50U2hvdWxkVXBkYXRlKCkuIERpZCB5
b3UgbWVhbiBzaG91bGRDb21wb25lbnRVcGRhdGUoKT8gJyArXG5cdCAgICAgICAgICAnVGhlIG5h
bWUgaXMgcGhyYXNlZCBhcyBhIHF1ZXN0aW9uIGJlY2F1c2UgdGhlIGZ1bmN0aW9uIGlzICcgK1xu
XHQgICAgICAgICAgJ2V4cGVjdGVkIHRvIHJldHVybiBhIHZhbHVlLicsXG5cdCAgICAgICAgc3Bl
Yy5kaXNwbGF5TmFtZSB8fCAnQSBjb21wb25lbnQnXG5cdCAgICAgICk7XG5cdCAgICAgIHdhcm5p
bmcoXG5cdCAgICAgICAgIUNvbnN0cnVjdG9yLnByb3RvdHlwZS5jb21wb25lbnRXaWxsUmVjaWV2
ZVByb3BzLFxuXHQgICAgICAgICclcyBoYXMgYSBtZXRob2QgY2FsbGVkICcgK1xuXHQgICAgICAg
ICAgJ2NvbXBvbmVudFdpbGxSZWNpZXZlUHJvcHMoKS4gRGlkIHlvdSBtZWFuIGNvbXBvbmVudFdp
bGxSZWNlaXZlUHJvcHMoKT8nLFxuXHQgICAgICAgIHNwZWMuZGlzcGxheU5hbWUgfHwgJ0EgY29t
cG9uZW50J1xuXHQgICAgICApO1xuXHQgICAgfVxuXHRcblx0ICAgIC8vIFJlZHVjZSB0aW1lIHNw
ZW50IGRvaW5nIGxvb2t1cHMgYnkgc2V0dGluZyB0aGVzZSBvbiB0aGUgcHJvdG90eXBlLlxuXHQg
ICAgZm9yICh2YXIgbWV0aG9kTmFtZSBpbiBSZWFjdENsYXNzSW50ZXJmYWNlKSB7XG5cdCAgICAg
IGlmICghQ29uc3RydWN0b3IucHJvdG90eXBlW21ldGhvZE5hbWVdKSB7XG5cdCAgICAgICAgQ29u
c3RydWN0b3IucHJvdG90eXBlW21ldGhvZE5hbWVdID0gbnVsbDtcblx0ICAgICAgfVxuXHQgICAg
fVxuXHRcblx0ICAgIHJldHVybiBDb25zdHJ1Y3Rvcjtcblx0ICB9XG5cdFxuXHQgIHJldHVybiBj
cmVhdGVDbGFzcztcblx0fVxuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5O1xuXG5cbi8q
KiovIH0sXG4vKiA5OCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cblx0
XCJ1c2Ugc3RyaWN0XCI7XG5cdFxuXHQvKipcblx0ICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNl
bnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAq
IFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNl
IGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9m
IHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJp
Z2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3Rv
cnkuXG5cdCAqXG5cdCAqIEB0eXBlY2hlY2tzXG5cdCAqL1xuXHRcblx0dmFyIF9oeXBoZW5QYXR0
ZXJuID0gLy0oLikvZztcblx0XG5cdC8qKlxuXHQgKiBDYW1lbGNhc2VzIGEgaHlwaGVuYXRlZCBz
dHJpbmcsIGZvciBleGFtcGxlOlxuXHQgKlxuXHQgKiAgID4gY2FtZWxpemUoJ2JhY2tncm91bmQt
Y29sb3InKVxuXHQgKiAgIDwgXCJiYWNrZ3JvdW5kQ29sb3JcIlxuXHQgKlxuXHQgKiBAcGFyYW0g
e3N0cmluZ30gc3RyaW5nXG5cdCAqIEByZXR1cm4ge3N0cmluZ31cblx0ICovXG5cdGZ1bmN0aW9u
IGNhbWVsaXplKHN0cmluZykge1xuXHQgIHJldHVybiBzdHJpbmcucmVwbGFjZShfaHlwaGVuUGF0
dGVybiwgZnVuY3Rpb24gKF8sIGNoYXJhY3Rlcikge1xuXHQgICAgcmV0dXJuIGNoYXJhY3Rlci50
b1VwcGVyQ2FzZSgpO1xuXHQgIH0pO1xuXHR9XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IGNhbWVs
aXplO1xuXG4vKioqLyB9LFxuLyogOTkgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0
cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgKGMpIDIw
MTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0
ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxl
IGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJl
Y3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBw
YXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1l
IGRpcmVjdG9yeS5cblx0ICpcblx0ICogQHR5cGVjaGVja3Ncblx0ICovXG5cdFxuXHQndXNlIHN0
cmljdCc7XG5cdFxuXHR2YXIgY2FtZWxpemUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDk4KTtcblx0
XG5cdHZhciBtc1BhdHRlcm4gPSAvXi1tcy0vO1xuXHRcblx0LyoqXG5cdCAqIENhbWVsY2FzZXMg
YSBoeXBoZW5hdGVkIENTUyBwcm9wZXJ0eSBuYW1lLCBmb3IgZXhhbXBsZTpcblx0ICpcblx0ICog
ICA+IGNhbWVsaXplU3R5bGVOYW1lKCdiYWNrZ3JvdW5kLWNvbG9yJylcblx0ICogICA8IFwiYmFj
a2dyb3VuZENvbG9yXCJcblx0ICogICA+IGNhbWVsaXplU3R5bGVOYW1lKCctbW96LXRyYW5zaXRp
b24nKVxuXHQgKiAgIDwgXCJNb3pUcmFuc2l0aW9uXCJcblx0ICogICA+IGNhbWVsaXplU3R5bGVO
YW1lKCctbXMtdHJhbnNpdGlvbicpXG5cdCAqICAgPCBcIm1zVHJhbnNpdGlvblwiXG5cdCAqXG5c
dCAqIEFzIEFuZGkgU21pdGggc3VnZ2VzdHNcblx0ICogKGh0dHA6Ly93d3cuYW5kaXNtaXRoLmNv
bS9ibG9nLzIwMTIvMDIvbW9kZXJuaXpyLXByZWZpeGVkLyksIGFuIGAtbXNgIHByZWZpeFxuXHQg
KiBpcyBjb252ZXJ0ZWQgdG8gbG93ZXJjYXNlIGBtc2AuXG5cdCAqXG5cdCAqIEBwYXJhbSB7c3Ry
aW5nfSBzdHJpbmdcblx0ICogQHJldHVybiB7c3RyaW5nfVxuXHQgKi9cblx0ZnVuY3Rpb24gY2Ft
ZWxpemVTdHlsZU5hbWUoc3RyaW5nKSB7XG5cdCAgcmV0dXJuIGNhbWVsaXplKHN0cmluZy5yZXBs
YWNlKG1zUGF0dGVybiwgJ21zLScpKTtcblx0fVxuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBjYW1l
bGl6ZVN0eWxlTmFtZTtcblxuLyoqKi8gfSxcbi8qIDEwMCAqL1xuLyoqKi8gZnVuY3Rpb24obW9k
dWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0J3VzZSBzdHJpY3QnO1xu
XHRcblx0LyoqXG5cdCAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5j
LlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2Rl
IGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0
ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVl
LiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5k
IGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKiBc
blx0ICovXG5cdFxuXHR2YXIgaXNUZXh0Tm9kZSA9IF9fd2VicGFja19yZXF1aXJlX18oMTA4KTtc
blx0XG5cdC8qZXNsaW50LWRpc2FibGUgbm8tYml0d2lzZSAqL1xuXHRcblx0LyoqXG5cdCAqIENo
ZWNrcyBpZiBhIGdpdmVuIERPTSBub2RlIGNvbnRhaW5zIG9yIGlzIGFub3RoZXIgRE9NIG5vZGUu
XG5cdCAqL1xuXHRmdW5jdGlvbiBjb250YWluc05vZGUob3V0ZXJOb2RlLCBpbm5lck5vZGUpIHtc
blx0ICBpZiAoIW91dGVyTm9kZSB8fCAhaW5uZXJOb2RlKSB7XG5cdCAgICByZXR1cm4gZmFsc2U7
XG5cdCAgfSBlbHNlIGlmIChvdXRlck5vZGUgPT09IGlubmVyTm9kZSkge1xuXHQgICAgcmV0dXJu
IHRydWU7XG5cdCAgfSBlbHNlIGlmIChpc1RleHROb2RlKG91dGVyTm9kZSkpIHtcblx0ICAgIHJl
dHVybiBmYWxzZTtcblx0ICB9IGVsc2UgaWYgKGlzVGV4dE5vZGUoaW5uZXJOb2RlKSkge1xuXHQg
ICAgcmV0dXJuIGNvbnRhaW5zTm9kZShvdXRlck5vZGUsIGlubmVyTm9kZS5wYXJlbnROb2RlKTtc
blx0ICB9IGVsc2UgaWYgKCdjb250YWlucycgaW4gb3V0ZXJOb2RlKSB7XG5cdCAgICByZXR1cm4g
b3V0ZXJOb2RlLmNvbnRhaW5zKGlubmVyTm9kZSk7XG5cdCAgfSBlbHNlIGlmIChvdXRlck5vZGUu
Y29tcGFyZURvY3VtZW50UG9zaXRpb24pIHtcblx0ICAgIHJldHVybiAhIShvdXRlck5vZGUuY29t
cGFyZURvY3VtZW50UG9zaXRpb24oaW5uZXJOb2RlKSAmIDE2KTtcblx0ICB9IGVsc2Uge1xuXHQg
ICAgcmV0dXJuIGZhbHNlO1xuXHQgIH1cblx0fVxuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBjb250
YWluc05vZGU7XG5cbi8qKiovIH0sXG4vKiAxMDEgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwg
ZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5c
dC8qKlxuXHQgKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0
ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBs
aWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJ
Q0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4g
YWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0
aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpcblx0ICogQHR5cGVj
aGVja3Ncblx0ICovXG5cdFxuXHR2YXIgaW52YXJpYW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXygx
KTtcblx0XG5cdC8qKlxuXHQgKiBDb252ZXJ0IGFycmF5LWxpa2Ugb2JqZWN0cyB0byBhcnJheXMu
XG5cdCAqXG5cdCAqIFRoaXMgQVBJIGFzc3VtZXMgdGhlIGNhbGxlciBrbm93cyB0aGUgY29udGVu
dHMgb2YgdGhlIGRhdGEgdHlwZS4gRm9yIGxlc3Ncblx0ICogd2VsbCBkZWZpbmVkIGlucHV0cyB1
c2UgY3JlYXRlQXJyYXlGcm9tTWl4ZWQuXG5cdCAqXG5cdCAqIEBwYXJhbSB7b2JqZWN0fGZ1bmN0
aW9ufGZpbGVsaXN0fSBvYmpcblx0ICogQHJldHVybiB7YXJyYXl9XG5cdCAqL1xuXHRmdW5jdGlv
biB0b0FycmF5KG9iaikge1xuXHQgIHZhciBsZW5ndGggPSBvYmoubGVuZ3RoO1xuXHRcblx0ICAv
LyBTb21lIGJyb3dzZXJzIGJ1aWx0aW4gb2JqZWN0cyBjYW4gcmVwb3J0IHR5cGVvZiAnZnVuY3Rp
b24nIChlLmcuIE5vZGVMaXN0XG5cdCAgLy8gaW4gb2xkIHZlcnNpb25zIG9mIFNhZmFyaSkuXG5c
dCAgISghQXJyYXkuaXNBcnJheShvYmopICYmICh0eXBlb2Ygb2JqID09PSAnb2JqZWN0JyB8fCB0
eXBlb2Ygb2JqID09PSAnZnVuY3Rpb24nKSkgPyAgZmFsc2UgPyBpbnZhcmlhbnQoZmFsc2UsICd0
b0FycmF5OiBBcnJheS1saWtlIG9iamVjdCBleHBlY3RlZCcpIDogaW52YXJpYW50KGZhbHNlKSA6
IHZvaWQgMDtcblx0XG5cdCAgISh0eXBlb2YgbGVuZ3RoID09PSAnbnVtYmVyJykgPyAgZmFsc2Ug
PyBpbnZhcmlhbnQoZmFsc2UsICd0b0FycmF5OiBPYmplY3QgbmVlZHMgYSBsZW5ndGggcHJvcGVy
dHknKSA6IGludmFyaWFudChmYWxzZSkgOiB2b2lkIDA7XG5cdFxuXHQgICEobGVuZ3RoID09PSAw
IHx8IGxlbmd0aCAtIDEgaW4gb2JqKSA/ICBmYWxzZSA/IGludmFyaWFudChmYWxzZSwgJ3RvQXJy
YXk6IE9iamVjdCBzaG91bGQgaGF2ZSBrZXlzIGZvciBpbmRpY2VzJykgOiBpbnZhcmlhbnQoZmFs
c2UpIDogdm9pZCAwO1xuXHRcblx0ICAhKHR5cGVvZiBvYmouY2FsbGVlICE9PSAnZnVuY3Rpb24n
KSA/ICBmYWxzZSA/IGludmFyaWFudChmYWxzZSwgJ3RvQXJyYXk6IE9iamVjdCBjYW5cXCd0IGJl
IGBhcmd1bWVudHNgLiBVc2UgcmVzdCBwYXJhbXMgJyArICcoZnVuY3Rpb24oLi4uYXJncykge30p
IG9yIEFycmF5LmZyb20oKSBpbnN0ZWFkLicpIDogaW52YXJpYW50KGZhbHNlKSA6IHZvaWQgMDtc
blx0XG5cdCAgLy8gT2xkIElFIGRvZXNuJ3QgZ2l2ZSBjb2xsZWN0aW9ucyBhY2Nlc3MgdG8gaGFz
T3duUHJvcGVydHkuIEFzc3VtZSBpbnB1dHNcblx0ICAvLyB3aXRob3V0IG1ldGhvZCB3aWxsIHRo
cm93IGR1cmluZyB0aGUgc2xpY2UgY2FsbCBhbmQgc2tpcCBzdHJhaWdodCB0byB0aGVcblx0ICAv
LyBmYWxsYmFjay5cblx0ICBpZiAob2JqLmhhc093blByb3BlcnR5KSB7XG5cdCAgICB0cnkge1xu
XHQgICAgICByZXR1cm4gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwob2JqKTtcblx0ICAgIH0g
Y2F0Y2ggKGUpIHtcblx0ICAgICAgLy8gSUUgPCA5IGRvZXMgbm90IHN1cHBvcnQgQXJyYXkjc2xp
Y2Ugb24gY29sbGVjdGlvbnMgb2JqZWN0c1xuXHQgICAgfVxuXHQgIH1cblx0XG5cdCAgLy8gRmFs
bCBiYWNrIHRvIGNvcHlpbmcga2V5IGJ5IGtleS4gVGhpcyBhc3N1bWVzIGFsbCBrZXlzIGhhdmUg
YSB2YWx1ZSxcblx0ICAvLyBzbyB3aWxsIG5vdCBwcmVzZXJ2ZSBzcGFyc2VseSBwb3B1bGF0ZWQg
aW5wdXRzLlxuXHQgIHZhciByZXQgPSBBcnJheShsZW5ndGgpO1xuXHQgIGZvciAodmFyIGlpID0g
MDsgaWkgPCBsZW5ndGg7IGlpKyspIHtcblx0ICAgIHJldFtpaV0gPSBvYmpbaWldO1xuXHQgIH1c
blx0ICByZXR1cm4gcmV0O1xuXHR9XG5cdFxuXHQvKipcblx0ICogUGVyZm9ybSBhIGhldXJpc3Rp
YyB0ZXN0IHRvIGRldGVybWluZSBpZiBhbiBvYmplY3QgaXMgXCJhcnJheS1saWtlXCIuXG5cdCAq
XG5cdCAqICAgQSBtb25rIGFza2VkIEpvc2h1LCBhIFplbiBtYXN0ZXIsIFwiSGFzIGEgZG9nIEJ1
ZGRoYSBuYXR1cmU/XCJcblx0ICogICBKb3NodSByZXBsaWVkOiBcIk11LlwiXG5cdCAqXG5cdCAq
IFRoaXMgZnVuY3Rpb24gZGV0ZXJtaW5lcyBpZiBpdHMgYXJndW1lbnQgaGFzIFwiYXJyYXkgbmF0
dXJlXCI6IGl0IHJldHVybnNcblx0ICogdHJ1ZSBpZiB0aGUgYXJndW1lbnQgaXMgYW4gYWN0dWFs
IGFycmF5LCBhbiBgYXJndW1lbnRzJyBvYmplY3QsIG9yIGFuXG5cdCAqIEhUTUxDb2xsZWN0aW9u
IChlLmcuIG5vZGUuY2hpbGROb2RlcyBvciBub2RlLmdldEVsZW1lbnRzQnlUYWdOYW1lKCkpLlxu
XHQgKlxuXHQgKiBJdCB3aWxsIHJldHVybiBmYWxzZSBmb3Igb3RoZXIgYXJyYXktbGlrZSBvYmpl
Y3RzIGxpa2UgRmlsZWxpc3QuXG5cdCAqXG5cdCAqIEBwYXJhbSB7Kn0gb2JqXG5cdCAqIEByZXR1
cm4ge2Jvb2xlYW59XG5cdCAqL1xuXHRmdW5jdGlvbiBoYXNBcnJheU5hdHVyZShvYmopIHtcblx0
ICByZXR1cm4gKFxuXHQgICAgLy8gbm90IG51bGwvZmFsc2Vcblx0ICAgICEhb2JqICYmIChcblx0
ICAgIC8vIGFycmF5cyBhcmUgb2JqZWN0cywgTm9kZUxpc3RzIGFyZSBmdW5jdGlvbnMgaW4gU2Fm
YXJpXG5cdCAgICB0eXBlb2Ygb2JqID09ICdvYmplY3QnIHx8IHR5cGVvZiBvYmogPT0gJ2Z1bmN0
aW9uJykgJiZcblx0ICAgIC8vIHF1YWNrcyBsaWtlIGFuIGFycmF5XG5cdCAgICAnbGVuZ3RoJyBp
biBvYmogJiZcblx0ICAgIC8vIG5vdCB3aW5kb3dcblx0ICAgICEoJ3NldEludGVydmFsJyBpbiBv
YmopICYmXG5cdCAgICAvLyBubyBET00gbm9kZSBzaG91bGQgYmUgY29uc2lkZXJlZCBhbiBhcnJh
eS1saWtlXG5cdCAgICAvLyBhICdzZWxlY3QnIGVsZW1lbnQgaGFzICdsZW5ndGgnIGFuZCAnaXRl
bScgcHJvcGVydGllcyBvbiBJRThcblx0ICAgIHR5cGVvZiBvYmoubm9kZVR5cGUgIT0gJ251bWJl
cicgJiYgKFxuXHQgICAgLy8gYSByZWFsIGFycmF5XG5cdCAgICBBcnJheS5pc0FycmF5KG9iaikg
fHxcblx0ICAgIC8vIGFyZ3VtZW50c1xuXHQgICAgJ2NhbGxlZScgaW4gb2JqIHx8XG5cdCAgICAv
LyBIVE1MQ29sbGVjdGlvbi9Ob2RlTGlzdFxuXHQgICAgJ2l0ZW0nIGluIG9iailcblx0ICApO1xu
XHR9XG5cdFxuXHQvKipcblx0ICogRW5zdXJlIHRoYXQgdGhlIGFyZ3VtZW50IGlzIGFuIGFycmF5
IGJ5IHdyYXBwaW5nIGl0IGluIGFuIGFycmF5IGlmIGl0IGlzIG5vdC5cblx0ICogQ3JlYXRlcyBh
IGNvcHkgb2YgdGhlIGFyZ3VtZW50IGlmIGl0IGlzIGFscmVhZHkgYW4gYXJyYXkuXG5cdCAqXG5c
dCAqIFRoaXMgaXMgbW9zdGx5IHVzZWZ1bCBpZGlvbWF0aWNhbGx5OlxuXHQgKlxuXHQgKiAgIHZh
ciBjcmVhdGVBcnJheUZyb21NaXhlZCA9IHJlcXVpcmUoJ2NyZWF0ZUFycmF5RnJvbU1peGVkJyk7
XG5cdCAqXG5cdCAqICAgZnVuY3Rpb24gdGFrZXNPbmVPck1vcmVUaGluZ3ModGhpbmdzKSB7XG5c
dCAqICAgICB0aGluZ3MgPSBjcmVhdGVBcnJheUZyb21NaXhlZCh0aGluZ3MpO1xuXHQgKiAgICAg
Li4uXG5cdCAqICAgfVxuXHQgKlxuXHQgKiBUaGlzIGFsbG93cyB5b3UgdG8gdHJlYXQgYHRoaW5n
cycgYXMgYW4gYXJyYXksIGJ1dCBhY2NlcHQgc2NhbGFycyBpbiB0aGUgQVBJLlxuXHQgKlxuXHQg
KiBJZiB5b3UgbmVlZCB0byBjb252ZXJ0IGFuIGFycmF5LWxpa2Ugb2JqZWN0LCBsaWtlIGBhcmd1
bWVudHNgLCBpbnRvIGFuIGFycmF5XG5cdCAqIHVzZSB0b0FycmF5IGluc3RlYWQuXG5cdCAqXG5c
dCAqIEBwYXJhbSB7Kn0gb2JqXG5cdCAqIEByZXR1cm4ge2FycmF5fVxuXHQgKi9cblx0ZnVuY3Rp
b24gY3JlYXRlQXJyYXlGcm9tTWl4ZWQob2JqKSB7XG5cdCAgaWYgKCFoYXNBcnJheU5hdHVyZShv
YmopKSB7XG5cdCAgICByZXR1cm4gW29ial07XG5cdCAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5
KG9iaikpIHtcblx0ICAgIHJldHVybiBvYmouc2xpY2UoKTtcblx0ICB9IGVsc2Uge1xuXHQgICAg
cmV0dXJuIHRvQXJyYXkob2JqKTtcblx0ICB9XG5cdH1cblx0XG5cdG1vZHVsZS5leHBvcnRzID0g
Y3JlYXRlQXJyYXlGcm9tTWl4ZWQ7XG5cbi8qKiovIH0sXG4vKiAxMDIgKi9cbi8qKiovIGZ1bmN0
aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdCd1c2Ugc3Ry
aWN0Jztcblx0XG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJv
b2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICogVGhpcyBzb3Vy
Y2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4g
dGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3Vy
Y2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBi
ZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpc
blx0ICogQHR5cGVjaGVja3Ncblx0ICovXG5cdFxuXHQvKmVzbGludC1kaXNhYmxlIGZiLXd3dy91
bnNhZmUtaHRtbCovXG5cdFxuXHR2YXIgRXhlY3V0aW9uRW52aXJvbm1lbnQgPSBfX3dlYnBhY2tf
cmVxdWlyZV9fKDYpO1xuXHRcblx0dmFyIGNyZWF0ZUFycmF5RnJvbU1peGVkID0gX193ZWJwYWNr
X3JlcXVpcmVfXygxMDEpO1xuXHR2YXIgZ2V0TWFya3VwV3JhcCA9IF9fd2VicGFja19yZXF1aXJl
X18oMTAzKTtcblx0dmFyIGludmFyaWFudCA9IF9fd2VicGFja19yZXF1aXJlX18oMSk7XG5cdFxu
XHQvKipcblx0ICogRHVtbXkgY29udGFpbmVyIHVzZWQgdG8gcmVuZGVyIGFsbCBtYXJrdXAuXG5c
dCAqL1xuXHR2YXIgZHVtbXlOb2RlID0gRXhlY3V0aW9uRW52aXJvbm1lbnQuY2FuVXNlRE9NID8g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JykgOiBudWxsO1xuXHRcblx0LyoqXG5cdCAqIFBh
dHRlcm4gdXNlZCBieSBgZ2V0Tm9kZU5hbWVgLlxuXHQgKi9cblx0dmFyIG5vZGVOYW1lUGF0dGVy
biA9IC9eXFxzKjwoXFx3KykvO1xuXHRcblx0LyoqXG5cdCAqIEV4dHJhY3RzIHRoZSBgbm9kZU5h
bWVgIG9mIHRoZSBmaXJzdCBlbGVtZW50IGluIGEgc3RyaW5nIG9mIG1hcmt1cC5cblx0ICpcblx0
ICogQHBhcmFtIHtzdHJpbmd9IG1hcmt1cCBTdHJpbmcgb2YgbWFya3VwLlxuXHQgKiBAcmV0dXJu
IHs/c3RyaW5nfSBOb2RlIG5hbWUgb2YgdGhlIHN1cHBsaWVkIG1hcmt1cC5cblx0ICovXG5cdGZ1
bmN0aW9uIGdldE5vZGVOYW1lKG1hcmt1cCkge1xuXHQgIHZhciBub2RlTmFtZU1hdGNoID0gbWFy
a3VwLm1hdGNoKG5vZGVOYW1lUGF0dGVybik7XG5cdCAgcmV0dXJuIG5vZGVOYW1lTWF0Y2ggJiYg
bm9kZU5hbWVNYXRjaFsxXS50b0xvd2VyQ2FzZSgpO1xuXHR9XG5cdFxuXHQvKipcblx0ICogQ3Jl
YXRlcyBhbiBhcnJheSBjb250YWluaW5nIHRoZSBub2RlcyByZW5kZXJlZCBmcm9tIHRoZSBzdXBw
bGllZCBtYXJrdXAuIFRoZVxuXHQgKiBvcHRpb25hbGx5IHN1cHBsaWVkIGBoYW5kbGVTY3JpcHRg
IGZ1bmN0aW9uIHdpbGwgYmUgaW52b2tlZCBvbmNlIGZvciBlYWNoXG5cdCAqIDxzY3JpcHQ+IGVs
ZW1lbnQgdGhhdCBpcyByZW5kZXJlZC4gSWYgbm8gYGhhbmRsZVNjcmlwdGAgZnVuY3Rpb24gaXMg
c3VwcGxpZWQsXG5cdCAqIGFuIGV4Y2VwdGlvbiBpcyB0aHJvd24gaWYgYW55IDxzY3JpcHQ+IGVs
ZW1lbnRzIGFyZSByZW5kZXJlZC5cblx0ICpcblx0ICogQHBhcmFtIHtzdHJpbmd9IG1hcmt1cCBB
IHN0cmluZyBvZiB2YWxpZCBIVE1MIG1hcmt1cC5cblx0ICogQHBhcmFtIHs/ZnVuY3Rpb259IGhh
bmRsZVNjcmlwdCBJbnZva2VkIG9uY2UgZm9yIGVhY2ggcmVuZGVyZWQgPHNjcmlwdD4uXG5cdCAq
IEByZXR1cm4ge2FycmF5PERPTUVsZW1lbnR8RE9NVGV4dE5vZGU+fSBBbiBhcnJheSBvZiByZW5k
ZXJlZCBub2Rlcy5cblx0ICovXG5cdGZ1bmN0aW9uIGNyZWF0ZU5vZGVzRnJvbU1hcmt1cChtYXJr
dXAsIGhhbmRsZVNjcmlwdCkge1xuXHQgIHZhciBub2RlID0gZHVtbXlOb2RlO1xuXHQgICEhIWR1
bW15Tm9kZSA/ICBmYWxzZSA/IGludmFyaWFudChmYWxzZSwgJ2NyZWF0ZU5vZGVzRnJvbU1hcmt1
cCBkdW1teSBub3QgaW5pdGlhbGl6ZWQnKSA6IGludmFyaWFudChmYWxzZSkgOiB2b2lkIDA7XG5c
dCAgdmFyIG5vZGVOYW1lID0gZ2V0Tm9kZU5hbWUobWFya3VwKTtcblx0XG5cdCAgdmFyIHdyYXAg
PSBub2RlTmFtZSAmJiBnZXRNYXJrdXBXcmFwKG5vZGVOYW1lKTtcblx0ICBpZiAod3JhcCkge1xu
XHQgICAgbm9kZS5pbm5lckhUTUwgPSB3cmFwWzFdICsgbWFya3VwICsgd3JhcFsyXTtcblx0XG5c
dCAgICB2YXIgd3JhcERlcHRoID0gd3JhcFswXTtcblx0ICAgIHdoaWxlICh3cmFwRGVwdGgtLSkg
e1xuXHQgICAgICBub2RlID0gbm9kZS5sYXN0Q2hpbGQ7XG5cdCAgICB9XG5cdCAgfSBlbHNlIHtc
blx0ICAgIG5vZGUuaW5uZXJIVE1MID0gbWFya3VwO1xuXHQgIH1cblx0XG5cdCAgdmFyIHNjcmlw
dHMgPSBub2RlLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdzY3JpcHQnKTtcblx0ICBpZiAoc2NyaXB0
cy5sZW5ndGgpIHtcblx0ICAgICFoYW5kbGVTY3JpcHQgPyAgZmFsc2UgPyBpbnZhcmlhbnQoZmFs
c2UsICdjcmVhdGVOb2Rlc0Zyb21NYXJrdXAoLi4uKTogVW5leHBlY3RlZCA8c2NyaXB0PiBlbGVt
ZW50IHJlbmRlcmVkLicpIDogaW52YXJpYW50KGZhbHNlKSA6IHZvaWQgMDtcblx0ICAgIGNyZWF0
ZUFycmF5RnJvbU1peGVkKHNjcmlwdHMpLmZvckVhY2goaGFuZGxlU2NyaXB0KTtcblx0ICB9XG5c
dFxuXHQgIHZhciBub2RlcyA9IEFycmF5LmZyb20obm9kZS5jaGlsZE5vZGVzKTtcblx0ICB3aGls
ZSAobm9kZS5sYXN0Q2hpbGQpIHtcblx0ICAgIG5vZGUucmVtb3ZlQ2hpbGQobm9kZS5sYXN0Q2hp
bGQpO1xuXHQgIH1cblx0ICByZXR1cm4gbm9kZXM7XG5cdH1cblx0XG5cdG1vZHVsZS5leHBvcnRz
ID0gY3JlYXRlTm9kZXNGcm9tTWFya3VwO1xuXG4vKioqLyB9LFxuLyogMTAzICovXG4vKioqLyBm
dW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQndXNl
IHN0cmljdCc7XG5cdFxuXHQvKipcblx0ICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZh
Y2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMg
c291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5k
IGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMg
c291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBj
YW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5c
dCAqXG5cdCAqL1xuXHRcblx0Lyplc2xpbnQtZGlzYWJsZSBmYi13d3cvdW5zYWZlLWh0bWwgKi9c
blx0XG5cdHZhciBFeGVjdXRpb25FbnZpcm9ubWVudCA9IF9fd2VicGFja19yZXF1aXJlX18oNik7
XG5cdFxuXHR2YXIgaW52YXJpYW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxKTtcblx0XG5cdC8q
KlxuXHQgKiBEdW1teSBjb250YWluZXIgdXNlZCB0byBkZXRlY3Qgd2hpY2ggd3JhcHMgYXJlIG5l
Y2Vzc2FyeS5cblx0ICovXG5cdHZhciBkdW1teU5vZGUgPSBFeGVjdXRpb25FbnZpcm9ubWVudC5j
YW5Vc2VET00gPyBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKSA6IG51bGw7XG5cdFxuXHQv
Kipcblx0ICogU29tZSBicm93c2VycyBjYW5ub3QgdXNlIGBpbm5lckhUTUxgIHRvIHJlbmRlciBj
ZXJ0YWluIGVsZW1lbnRzIHN0YW5kYWxvbmUsXG5cdCAqIHNvIHdlIHdyYXAgdGhlbSwgcmVuZGVy
IHRoZSB3cmFwcGVkIG5vZGVzLCB0aGVuIGV4dHJhY3QgdGhlIGRlc2lyZWQgbm9kZS5cblx0ICpc
blx0ICogSW4gSUU4LCBjZXJ0YWluIGVsZW1lbnRzIGNhbm5vdCByZW5kZXIgYWxvbmUsIHNvIHdy
YXAgYWxsIGVsZW1lbnRzICgnKicpLlxuXHQgKi9cblx0XG5cdHZhciBzaG91bGRXcmFwID0ge307
XG5cdFxuXHR2YXIgc2VsZWN0V3JhcCA9IFsxLCAnPHNlbGVjdCBtdWx0aXBsZT1cInRydWVcIj4n
LCAnPC9zZWxlY3Q+J107XG5cdHZhciB0YWJsZVdyYXAgPSBbMSwgJzx0YWJsZT4nLCAnPC90YWJs
ZT4nXTtcblx0dmFyIHRyV3JhcCA9IFszLCAnPHRhYmxlPjx0Ym9keT48dHI+JywgJzwvdHI+PC90
Ym9keT48L3RhYmxlPiddO1xuXHRcblx0dmFyIHN2Z1dyYXAgPSBbMSwgJzxzdmcgeG1sbnM9XCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPicsICc8L3N2Zz4nXTtcblx0XG5cdHZhciBtYXJr
dXBXcmFwID0ge1xuXHQgICcqJzogWzEsICc/PGRpdj4nLCAnPC9kaXY+J10sXG5cdFxuXHQgICdh
cmVhJzogWzEsICc8bWFwPicsICc8L21hcD4nXSxcblx0ICAnY29sJzogWzIsICc8dGFibGU+PHRi
b2R5PjwvdGJvZHk+PGNvbGdyb3VwPicsICc8L2NvbGdyb3VwPjwvdGFibGU+J10sXG5cdCAgJ2xl
Z2VuZCc6IFsxLCAnPGZpZWxkc2V0PicsICc8L2ZpZWxkc2V0PiddLFxuXHQgICdwYXJhbSc6IFsx
LCAnPG9iamVjdD4nLCAnPC9vYmplY3Q+J10sXG5cdCAgJ3RyJzogWzIsICc8dGFibGU+PHRib2R5
PicsICc8L3Rib2R5PjwvdGFibGU+J10sXG5cdFxuXHQgICdvcHRncm91cCc6IHNlbGVjdFdyYXAs
XG5cdCAgJ29wdGlvbic6IHNlbGVjdFdyYXAsXG5cdFxuXHQgICdjYXB0aW9uJzogdGFibGVXcmFw
LFxuXHQgICdjb2xncm91cCc6IHRhYmxlV3JhcCxcblx0ICAndGJvZHknOiB0YWJsZVdyYXAsXG5c
dCAgJ3Rmb290JzogdGFibGVXcmFwLFxuXHQgICd0aGVhZCc6IHRhYmxlV3JhcCxcblx0XG5cdCAg
J3RkJzogdHJXcmFwLFxuXHQgICd0aCc6IHRyV3JhcFxuXHR9O1xuXHRcblx0Ly8gSW5pdGlhbGl6
ZSB0aGUgU1ZHIGVsZW1lbnRzIHNpbmNlIHdlIGtub3cgdGhleSdsbCBhbHdheXMgbmVlZCB0byBi
ZSB3cmFwcGVkXG5cdC8vIGNvbnNpc3RlbnRseS4gSWYgdGhleSBhcmUgY3JlYXRlZCBpbnNpZGUg
YSA8ZGl2PiB0aGV5IHdpbGwgYmUgaW5pdGlhbGl6ZWQgaW5cblx0Ly8gdGhlIHdyb25nIG5hbWVz
cGFjZSAoYW5kIHdpbGwgbm90IGRpc3BsYXkpLlxuXHR2YXIgc3ZnRWxlbWVudHMgPSBbJ2NpcmNs
ZScsICdjbGlwUGF0aCcsICdkZWZzJywgJ2VsbGlwc2UnLCAnZycsICdpbWFnZScsICdsaW5lJywg
J2xpbmVhckdyYWRpZW50JywgJ21hc2snLCAncGF0aCcsICdwYXR0ZXJuJywgJ3BvbHlnb24nLCAn
cG9seWxpbmUnLCAncmFkaWFsR3JhZGllbnQnLCAncmVjdCcsICdzdG9wJywgJ3RleHQnLCAndHNw
YW4nXTtcblx0c3ZnRWxlbWVudHMuZm9yRWFjaChmdW5jdGlvbiAobm9kZU5hbWUpIHtcblx0ICBt
YXJrdXBXcmFwW25vZGVOYW1lXSA9IHN2Z1dyYXA7XG5cdCAgc2hvdWxkV3JhcFtub2RlTmFtZV0g
PSB0cnVlO1xuXHR9KTtcblx0XG5cdC8qKlxuXHQgKiBHZXRzIHRoZSBtYXJrdXAgd3JhcCBjb25m
aWd1cmF0aW9uIGZvciB0aGUgc3VwcGxpZWQgYG5vZGVOYW1lYC5cblx0ICpcblx0ICogTk9URTog
VGhpcyBsYXppbHkgZGV0ZWN0cyB3aGljaCB3cmFwcyBhcmUgbmVjZXNzYXJ5IGZvciB0aGUgY3Vy
cmVudCBicm93c2VyLlxuXHQgKlxuXHQgKiBAcGFyYW0ge3N0cmluZ30gbm9kZU5hbWUgTG93ZXJj
YXNlIGBub2RlTmFtZWAuXG5cdCAqIEByZXR1cm4gez9hcnJheX0gTWFya3VwIHdyYXAgY29uZmln
dXJhdGlvbiwgaWYgYXBwbGljYWJsZS5cblx0ICovXG5cdGZ1bmN0aW9uIGdldE1hcmt1cFdyYXAo
bm9kZU5hbWUpIHtcblx0ICAhISFkdW1teU5vZGUgPyAgZmFsc2UgPyBpbnZhcmlhbnQoZmFsc2Us
ICdNYXJrdXAgd3JhcHBpbmcgbm9kZSBub3QgaW5pdGlhbGl6ZWQnKSA6IGludmFyaWFudChmYWxz
ZSkgOiB2b2lkIDA7XG5cdCAgaWYgKCFtYXJrdXBXcmFwLmhhc093blByb3BlcnR5KG5vZGVOYW1l
KSkge1xuXHQgICAgbm9kZU5hbWUgPSAnKic7XG5cdCAgfVxuXHQgIGlmICghc2hvdWxkV3JhcC5o
YXNPd25Qcm9wZXJ0eShub2RlTmFtZSkpIHtcblx0ICAgIGlmIChub2RlTmFtZSA9PT0gJyonKSB7
XG5cdCAgICAgIGR1bW15Tm9kZS5pbm5lckhUTUwgPSAnPGxpbmsgLz4nO1xuXHQgICAgfSBlbHNl
IHtcblx0ICAgICAgZHVtbXlOb2RlLmlubmVySFRNTCA9ICc8JyArIG5vZGVOYW1lICsgJz48Lycg
KyBub2RlTmFtZSArICc+Jztcblx0ICAgIH1cblx0ICAgIHNob3VsZFdyYXBbbm9kZU5hbWVdID0g
IWR1bW15Tm9kZS5maXJzdENoaWxkO1xuXHQgIH1cblx0ICByZXR1cm4gc2hvdWxkV3JhcFtub2Rl
TmFtZV0gPyBtYXJrdXBXcmFwW25vZGVOYW1lXSA6IG51bGw7XG5cdH1cblx0XG5cdG1vZHVsZS5l
eHBvcnRzID0gZ2V0TWFya3VwV3JhcDtcblxuLyoqKi8gfSxcbi8qIDEwNCAqL1xuLyoqKi8gZnVu
Y3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAoYykgMjAx
My1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQg
KlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUg
bGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVj
dG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBh
dGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUg
ZGlyZWN0b3J5LlxuXHQgKlxuXHQgKiBAdHlwZWNoZWNrc1xuXHQgKi9cblx0XG5cdCd1c2Ugc3Ry
aWN0Jztcblx0XG5cdC8qKlxuXHQgKiBHZXRzIHRoZSBzY3JvbGwgcG9zaXRpb24gb2YgdGhlIHN1
cHBsaWVkIGVsZW1lbnQgb3Igd2luZG93LlxuXHQgKlxuXHQgKiBUaGUgcmV0dXJuIHZhbHVlcyBh
cmUgdW5ib3VuZGVkLCB1bmxpa2UgYGdldFNjcm9sbFBvc2l0aW9uYC4gVGhpcyBtZWFucyB0aGV5
XG5cdCAqIG1heSBiZSBuZWdhdGl2ZSBvciBleGNlZWQgdGhlIGVsZW1lbnQgYm91bmRhcmllcyAo
d2hpY2ggaXMgcG9zc2libGUgdXNpbmdcblx0ICogaW5lcnRpYWwgc2Nyb2xsaW5nKS5cblx0ICpc
blx0ICogQHBhcmFtIHtET01XaW5kb3d8RE9NRWxlbWVudH0gc2Nyb2xsYWJsZVxuXHQgKiBAcmV0
dXJuIHtvYmplY3R9IE1hcCB3aXRoIGB4YCBhbmQgYHlgIGtleXMuXG5cdCAqL1xuXHRcblx0ZnVu
Y3Rpb24gZ2V0VW5ib3VuZGVkU2Nyb2xsUG9zaXRpb24oc2Nyb2xsYWJsZSkge1xuXHQgIGlmIChz
Y3JvbGxhYmxlLldpbmRvdyAmJiBzY3JvbGxhYmxlIGluc3RhbmNlb2Ygc2Nyb2xsYWJsZS5XaW5k
b3cpIHtcblx0ICAgIHJldHVybiB7XG5cdCAgICAgIHg6IHNjcm9sbGFibGUucGFnZVhPZmZzZXQg
fHwgc2Nyb2xsYWJsZS5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsTGVmdCxcblx0ICAg
ICAgeTogc2Nyb2xsYWJsZS5wYWdlWU9mZnNldCB8fCBzY3JvbGxhYmxlLmRvY3VtZW50LmRvY3Vt
ZW50RWxlbWVudC5zY3JvbGxUb3Bcblx0ICAgIH07XG5cdCAgfVxuXHQgIHJldHVybiB7XG5cdCAg
ICB4OiBzY3JvbGxhYmxlLnNjcm9sbExlZnQsXG5cdCAgICB5OiBzY3JvbGxhYmxlLnNjcm9sbFRv
cFxuXHQgIH07XG5cdH1cblx0XG5cdG1vZHVsZS5leHBvcnRzID0gZ2V0VW5ib3VuZGVkU2Nyb2xs
UG9zaXRpb247XG5cbi8qKiovIH0sXG4vKiAxMDUgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwg
ZXhwb3J0cykge1xuXG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQg
KGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZl
ZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNE
LXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9v
dCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQg
KiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRo
ZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpcblx0ICogQHR5cGVjaGVja3Ncblx0ICovXG5cdFxuXHR2
YXIgX3VwcGVyY2FzZVBhdHRlcm4gPSAvKFtBLVpdKS9nO1xuXHRcblx0LyoqXG5cdCAqIEh5cGhl
bmF0ZXMgYSBjYW1lbGNhc2VkIHN0cmluZywgZm9yIGV4YW1wbGU6XG5cdCAqXG5cdCAqICAgPiBo
eXBoZW5hdGUoJ2JhY2tncm91bmRDb2xvcicpXG5cdCAqICAgPCBcImJhY2tncm91bmQtY29sb3Jc
IlxuXHQgKlxuXHQgKiBGb3IgQ1NTIHN0eWxlIG5hbWVzLCB1c2UgYGh5cGhlbmF0ZVN0eWxlTmFt
ZWAgaW5zdGVhZCB3aGljaCB3b3JrcyBwcm9wZXJseVxuXHQgKiB3aXRoIGFsbCB2ZW5kb3IgcHJl
Zml4ZXMsIGluY2x1ZGluZyBgbXNgLlxuXHQgKlxuXHQgKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5n
XG5cdCAqIEByZXR1cm4ge3N0cmluZ31cblx0ICovXG5cdGZ1bmN0aW9uIGh5cGhlbmF0ZShzdHJp
bmcpIHtcblx0ICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoX3VwcGVyY2FzZVBhdHRlcm4sICctJDEn
KS50b0xvd2VyQ2FzZSgpO1xuXHR9XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IGh5cGhlbmF0ZTtc
blxuLyoqKi8gfSxcbi8qIDEwNiAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBf
X3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAoYykgMjAxMy1w
cmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxu
XHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGlj
ZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9y
eSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVu
dCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGly
ZWN0b3J5LlxuXHQgKlxuXHQgKiBAdHlwZWNoZWNrc1xuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0
Jztcblx0XG5cdHZhciBoeXBoZW5hdGUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEwNSk7XG5cdFxu
XHR2YXIgbXNQYXR0ZXJuID0gL15tcy0vO1xuXHRcblx0LyoqXG5cdCAqIEh5cGhlbmF0ZXMgYSBj
YW1lbGNhc2VkIENTUyBwcm9wZXJ0eSBuYW1lLCBmb3IgZXhhbXBsZTpcblx0ICpcblx0ICogICA+
IGh5cGhlbmF0ZVN0eWxlTmFtZSgnYmFja2dyb3VuZENvbG9yJylcblx0ICogICA8IFwiYmFja2dy
b3VuZC1jb2xvclwiXG5cdCAqICAgPiBoeXBoZW5hdGVTdHlsZU5hbWUoJ01velRyYW5zaXRpb24n
KVxuXHQgKiAgIDwgXCItbW96LXRyYW5zaXRpb25cIlxuXHQgKiAgID4gaHlwaGVuYXRlU3R5bGVO
YW1lKCdtc1RyYW5zaXRpb24nKVxuXHQgKiAgIDwgXCItbXMtdHJhbnNpdGlvblwiXG5cdCAqXG5c
dCAqIEFzIE1vZGVybml6ciBzdWdnZXN0cyAoaHR0cDovL21vZGVybml6ci5jb20vZG9jcy8jcHJl
Zml4ZWQpLCBhbiBgbXNgIHByZWZpeFxuXHQgKiBpcyBjb252ZXJ0ZWQgdG8gYC1tcy1gLlxuXHQg
KlxuXHQgKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nXG5cdCAqIEByZXR1cm4ge3N0cmluZ31cblx0
ICovXG5cdGZ1bmN0aW9uIGh5cGhlbmF0ZVN0eWxlTmFtZShzdHJpbmcpIHtcblx0ICByZXR1cm4g
aHlwaGVuYXRlKHN0cmluZykucmVwbGFjZShtc1BhdHRlcm4sICctbXMtJyk7XG5cdH1cblx0XG5c
dG1vZHVsZS5leHBvcnRzID0gaHlwaGVuYXRlU3R5bGVOYW1lO1xuXG4vKioqLyB9LFxuLyogMTA3
ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuXHQndXNlIHN0cmljdCc7
XG5cdFxuXHQvKipcblx0ICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJ
bmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNv
ZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxu
XHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRy
ZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91
bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAq
IEB0eXBlY2hlY2tzXG5cdCAqL1xuXHRcblx0LyoqXG5cdCAqIEBwYXJhbSB7Kn0gb2JqZWN0IFRo
ZSBvYmplY3QgdG8gY2hlY2suXG5cdCAqIEByZXR1cm4ge2Jvb2xlYW59IFdoZXRoZXIgb3Igbm90
IHRoZSBvYmplY3QgaXMgYSBET00gbm9kZS5cblx0ICovXG5cdGZ1bmN0aW9uIGlzTm9kZShvYmpl
Y3QpIHtcblx0ICB2YXIgZG9jID0gb2JqZWN0ID8gb2JqZWN0Lm93bmVyRG9jdW1lbnQgfHwgb2Jq
ZWN0IDogZG9jdW1lbnQ7XG5cdCAgdmFyIGRlZmF1bHRWaWV3ID0gZG9jLmRlZmF1bHRWaWV3IHx8
IHdpbmRvdztcblx0ICByZXR1cm4gISEob2JqZWN0ICYmICh0eXBlb2YgZGVmYXVsdFZpZXcuTm9k
ZSA9PT0gJ2Z1bmN0aW9uJyA/IG9iamVjdCBpbnN0YW5jZW9mIGRlZmF1bHRWaWV3Lk5vZGUgOiB0
eXBlb2Ygb2JqZWN0ID09PSAnb2JqZWN0JyAmJiB0eXBlb2Ygb2JqZWN0Lm5vZGVUeXBlID09PSAn
bnVtYmVyJyAmJiB0eXBlb2Ygb2JqZWN0Lm5vZGVOYW1lID09PSAnc3RyaW5nJykpO1xuXHR9XG5c
dFxuXHRtb2R1bGUuZXhwb3J0cyA9IGlzTm9kZTtcblxuLyoqKi8gfSxcbi8qIDEwOCAqL1xuLyoq
Ki8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0
J3VzZSBzdHJpY3QnO1xuXHRcblx0LyoqXG5cdCAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50
LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBU
aGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBm
b3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0
aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdo
dHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5
LlxuXHQgKlxuXHQgKiBAdHlwZWNoZWNrc1xuXHQgKi9cblx0XG5cdHZhciBpc05vZGUgPSBfX3dl
YnBhY2tfcmVxdWlyZV9fKDEwNyk7XG5cdFxuXHQvKipcblx0ICogQHBhcmFtIHsqfSBvYmplY3Qg
VGhlIG9iamVjdCB0byBjaGVjay5cblx0ICogQHJldHVybiB7Ym9vbGVhbn0gV2hldGhlciBvciBu
b3QgdGhlIG9iamVjdCBpcyBhIERPTSB0ZXh0IG5vZGUuXG5cdCAqL1xuXHRmdW5jdGlvbiBpc1Rl
eHROb2RlKG9iamVjdCkge1xuXHQgIHJldHVybiBpc05vZGUob2JqZWN0KSAmJiBvYmplY3Qubm9k
ZVR5cGUgPT0gMztcblx0fVxuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBpc1RleHROb2RlO1xuXG4v
KioqLyB9LFxuLyogMTA5ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxu
XHQvKipcblx0ICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5c
dCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMg
bGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBM
SUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFu
IGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4g
dGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqIFxuXHQg
KiBAdHlwZWNoZWNrcyBzdGF0aWMtb25seVxuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0
XG5cdC8qKlxuXHQgKiBNZW1vaXplcyB0aGUgcmV0dXJuIHZhbHVlIG9mIGEgZnVuY3Rpb24gdGhh
dCBhY2NlcHRzIG9uZSBzdHJpbmcgYXJndW1lbnQuXG5cdCAqL1xuXHRcblx0ZnVuY3Rpb24gbWVt
b2l6ZVN0cmluZ09ubHkoY2FsbGJhY2spIHtcblx0ICB2YXIgY2FjaGUgPSB7fTtcblx0ICByZXR1
cm4gZnVuY3Rpb24gKHN0cmluZykge1xuXHQgICAgaWYgKCFjYWNoZS5oYXNPd25Qcm9wZXJ0eShz
dHJpbmcpKSB7XG5cdCAgICAgIGNhY2hlW3N0cmluZ10gPSBjYWxsYmFjay5jYWxsKHRoaXMsIHN0
cmluZyk7XG5cdCAgICB9XG5cdCAgICByZXR1cm4gY2FjaGVbc3RyaW5nXTtcblx0ICB9O1xuXHR9
XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IG1lbW9pemVTdHJpbmdPbmx5O1xuXG4vKioqLyB9LFxu
LyogMTEwICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuXHQvKipcblx0
ICogQ29weXJpZ2h0IDIwMTUsIFlhaG9vISBJbmMuXG5cdCAqIENvcHlyaWdodHMgbGljZW5zZWQg
dW5kZXIgdGhlIE5ldyBCU0QgTGljZW5zZS4gU2VlIHRoZSBhY2NvbXBhbnlpbmcgTElDRU5TRSBm
aWxlIGZvciB0ZXJtcy5cblx0ICovXG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdHZhciBSRUFDVF9T
VEFUSUNTID0ge1xuXHQgICAgY2hpbGRDb250ZXh0VHlwZXM6IHRydWUsXG5cdCAgICBjb250ZXh0
VHlwZXM6IHRydWUsXG5cdCAgICBkZWZhdWx0UHJvcHM6IHRydWUsXG5cdCAgICBkaXNwbGF5TmFt
ZTogdHJ1ZSxcblx0ICAgIGdldERlZmF1bHRQcm9wczogdHJ1ZSxcblx0ICAgIG1peGluczogdHJ1
ZSxcblx0ICAgIHByb3BUeXBlczogdHJ1ZSxcblx0ICAgIHR5cGU6IHRydWVcblx0fTtcblx0XG5c
dHZhciBLTk9XTl9TVEFUSUNTID0ge1xuXHQgIG5hbWU6IHRydWUsXG5cdCAgbGVuZ3RoOiB0cnVl
LFxuXHQgIHByb3RvdHlwZTogdHJ1ZSxcblx0ICBjYWxsZXI6IHRydWUsXG5cdCAgY2FsbGVlOiB0
cnVlLFxuXHQgIGFyZ3VtZW50czogdHJ1ZSxcblx0ICBhcml0eTogdHJ1ZVxuXHR9O1xuXHRcblx0
dmFyIGdldE93blByb3BlcnR5U3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHM7
XG5cdHZhciBoYXNPd25Qcm9wZXJ0eSA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7
XG5cdHZhciBwcm9wSXNFbnVtZXJhYmxlID0gT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51
bWVyYWJsZTtcblx0dmFyIGdldFByb3RvdHlwZU9mID0gT2JqZWN0LmdldFByb3RvdHlwZU9mO1xu
XHR2YXIgb2JqZWN0UHJvdG90eXBlID0gZ2V0UHJvdG90eXBlT2YgJiYgZ2V0UHJvdG90eXBlT2Yo
T2JqZWN0KTtcblx0dmFyIGdldE93blByb3BlcnR5TmFtZXMgPSBPYmplY3QuZ2V0T3duUHJvcGVy
dHlOYW1lcztcblx0XG5cdG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gaG9pc3ROb25SZWFjdFN0
YXRpY3ModGFyZ2V0Q29tcG9uZW50LCBzb3VyY2VDb21wb25lbnQsIGJsYWNrbGlzdCkge1xuXHQg
ICAgaWYgKHR5cGVvZiBzb3VyY2VDb21wb25lbnQgIT09ICdzdHJpbmcnKSB7IC8vIGRvbid0IGhv
aXN0IG92ZXIgc3RyaW5nIChodG1sKSBjb21wb25lbnRzXG5cdFxuXHQgICAgICAgIGlmIChvYmpl
Y3RQcm90b3R5cGUpIHtcblx0ICAgICAgICAgICAgdmFyIGluaGVyaXRlZENvbXBvbmVudCA9IGdl
dFByb3RvdHlwZU9mKHNvdXJjZUNvbXBvbmVudCk7XG5cdCAgICAgICAgICAgIGlmIChpbmhlcml0
ZWRDb21wb25lbnQgJiYgaW5oZXJpdGVkQ29tcG9uZW50ICE9PSBvYmplY3RQcm90b3R5cGUpIHtc
blx0ICAgICAgICAgICAgICAgIGhvaXN0Tm9uUmVhY3RTdGF0aWNzKHRhcmdldENvbXBvbmVudCwg
aW5oZXJpdGVkQ29tcG9uZW50LCBibGFja2xpc3QpO1xuXHQgICAgICAgICAgICB9XG5cdCAgICAg
ICAgfVxuXHRcblx0ICAgICAgICB2YXIga2V5cyA9IGdldE93blByb3BlcnR5TmFtZXMoc291cmNl
Q29tcG9uZW50KTtcblx0XG5cdCAgICAgICAgaWYgKGdldE93blByb3BlcnR5U3ltYm9scykge1xu
XHQgICAgICAgICAgICBrZXlzID0ga2V5cy5jb25jYXQoZ2V0T3duUHJvcGVydHlTeW1ib2xzKHNv
dXJjZUNvbXBvbmVudCkpO1xuXHQgICAgICAgIH1cblx0XG5cdCAgICAgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCBrZXlzLmxlbmd0aDsgKytpKSB7XG5cdCAgICAgICAgICAgIHZhciBrZXkgPSBrZXlz
W2ldO1xuXHQgICAgICAgICAgICBpZiAoIVJFQUNUX1NUQVRJQ1Nba2V5XSAmJiAhS05PV05fU1RB
VElDU1trZXldICYmICghYmxhY2tsaXN0IHx8ICFibGFja2xpc3Rba2V5XSkpIHtcblx0ICAgICAg
ICAgICAgICAgIC8vIE9ubHkgaG9pc3QgZW51bWVyYWJsZXMgYW5kIG5vbi1lbnVtZXJhYmxlIGZ1
bmN0aW9uc1xuXHQgICAgICAgICAgICAgICAgaWYocHJvcElzRW51bWVyYWJsZS5jYWxsKHNvdXJj
ZUNvbXBvbmVudCwga2V5KSB8fCB0eXBlb2Ygc291cmNlQ29tcG9uZW50W2tleV0gPT09ICdmdW5j
dGlvbicpIHtcblx0ICAgICAgICAgICAgICAgICAgICB0cnkgeyAvLyBBdm9pZCBmYWlsdXJlcyBm
cm9tIHJlYWQtb25seSBwcm9wZXJ0aWVzXG5cdCAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdl
dENvbXBvbmVudFtrZXldID0gc291cmNlQ29tcG9uZW50W2tleV07XG5cdCAgICAgICAgICAgICAg
ICAgICAgfSBjYXRjaCAoZSkge31cblx0ICAgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAg
fVxuXHQgICAgICAgIH1cblx0XG5cdCAgICAgICAgcmV0dXJuIHRhcmdldENvbXBvbmVudDtcblx0
ICAgIH1cblx0XG5cdCAgICByZXR1cm4gdGFyZ2V0Q29tcG9uZW50O1xuXHR9O1xuXG5cbi8qKiov
IH0sXG4vKiAxMTEgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNr
X3JlcXVpcmVfXykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxMy0yMDE1LCBGYWNlYm9v
aywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJj
ZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0
aGVcblx0ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJj
ZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJl
IGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKi9c
blx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdC8qKlxuXHQgKiBVc2UgaW52YXJpYW50KCkgdG8g
YXNzZXJ0IHN0YXRlIHdoaWNoIHlvdXIgcHJvZ3JhbSBhc3N1bWVzIHRvIGJlIHRydWUuXG5cdCAq
XG5cdCAqIFByb3ZpZGUgc3ByaW50Zi1zdHlsZSBmb3JtYXQgKG9ubHkgJXMgaXMgc3VwcG9ydGVk
KSBhbmQgYXJndW1lbnRzXG5cdCAqIHRvIHByb3ZpZGUgaW5mb3JtYXRpb24gYWJvdXQgd2hhdCBi
cm9rZSBhbmQgd2hhdCB5b3Ugd2VyZVxuXHQgKiBleHBlY3RpbmcuXG5cdCAqXG5cdCAqIFRoZSBp
bnZhcmlhbnQgbWVzc2FnZSB3aWxsIGJlIHN0cmlwcGVkIGluIHByb2R1Y3Rpb24sIGJ1dCB0aGUg
aW52YXJpYW50XG5cdCAqIHdpbGwgcmVtYWluIHRvIGVuc3VyZSBsb2dpYyBkb2VzIG5vdCBkaWZm
ZXIgaW4gcHJvZHVjdGlvbi5cblx0ICovXG5cdFxuXHR2YXIgaW52YXJpYW50ID0gZnVuY3Rpb24o
Y29uZGl0aW9uLCBmb3JtYXQsIGEsIGIsIGMsIGQsIGUsIGYpIHtcblx0ICBpZiAoZmFsc2UpIHtc
blx0ICAgIGlmIChmb3JtYXQgPT09IHVuZGVmaW5lZCkge1xuXHQgICAgICB0aHJvdyBuZXcgRXJy
b3IoJ2ludmFyaWFudCByZXF1aXJlcyBhbiBlcnJvciBtZXNzYWdlIGFyZ3VtZW50Jyk7XG5cdCAg
ICB9XG5cdCAgfVxuXHRcblx0ICBpZiAoIWNvbmRpdGlvbikge1xuXHQgICAgdmFyIGVycm9yO1xu
XHQgICAgaWYgKGZvcm1hdCA9PT0gdW5kZWZpbmVkKSB7XG5cdCAgICAgIGVycm9yID0gbmV3IEVy
cm9yKFxuXHQgICAgICAgICdNaW5pZmllZCBleGNlcHRpb24gb2NjdXJyZWQ7IHVzZSB0aGUgbm9u
LW1pbmlmaWVkIGRldiBlbnZpcm9ubWVudCAnICtcblx0ICAgICAgICAnZm9yIHRoZSBmdWxsIGVy
cm9yIG1lc3NhZ2UgYW5kIGFkZGl0aW9uYWwgaGVscGZ1bCB3YXJuaW5ncy4nXG5cdCAgICAgICk7
XG5cdCAgICB9IGVsc2Uge1xuXHQgICAgICB2YXIgYXJncyA9IFthLCBiLCBjLCBkLCBlLCBmXTtc
blx0ICAgICAgdmFyIGFyZ0luZGV4ID0gMDtcblx0ICAgICAgZXJyb3IgPSBuZXcgRXJyb3IoXG5c
dCAgICAgICAgZm9ybWF0LnJlcGxhY2UoLyVzL2csIGZ1bmN0aW9uKCkgeyByZXR1cm4gYXJnc1th
cmdJbmRleCsrXTsgfSlcblx0ICAgICAgKTtcblx0ICAgICAgZXJyb3IubmFtZSA9ICdJbnZhcmlh
bnQgVmlvbGF0aW9uJztcblx0ICAgIH1cblx0XG5cdCAgICBlcnJvci5mcmFtZXNUb1BvcCA9IDE7
IC8vIHdlIGRvbid0IGNhcmUgYWJvdXQgaW52YXJpYW50J3Mgb3duIGZyYW1lXG5cdCAgICB0aHJv
dyBlcnJvcjtcblx0ICB9XG5cdH07XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IGludmFyaWFudDtc
blxuXG4vKioqLyB9LFxuLyogMTEyICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMs
IF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHR2YXIgU3ltYm9sID0gX193ZWJwYWNrX3JlcXVp
cmVfXyg1NCksXG5cdCAgICBnZXRSYXdUYWcgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDExNSksXG5c
dCAgICBvYmplY3RUb1N0cmluZyA9IF9fd2VicGFja19yZXF1aXJlX18oMTE2KTtcblx0XG5cdC8q
KiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cblx0dmFyIG51bGxUYWcg
PSAnW29iamVjdCBOdWxsXScsXG5cdCAgICB1bmRlZmluZWRUYWcgPSAnW29iamVjdCBVbmRlZmlu
ZWRdJztcblx0XG5cdC8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xuXHR2YXIgc3lt
VG9TdHJpbmdUYWcgPSBTeW1ib2wgPyBTeW1ib2wudG9TdHJpbmdUYWcgOiB1bmRlZmluZWQ7XG5c
dFxuXHQvKipcblx0ICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYGdldFRhZ2Agd2l0aG91
dCBmYWxsYmFja3MgZm9yIGJ1Z2d5IGVudmlyb25tZW50cy5cblx0ICpcblx0ICogQHByaXZhdGVc
blx0ICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcXVlcnkuXG5cdCAqIEByZXR1cm5z
IHtzdHJpbmd9IFJldHVybnMgdGhlIGB0b1N0cmluZ1RhZ2AuXG5cdCAqL1xuXHRmdW5jdGlvbiBi
YXNlR2V0VGFnKHZhbHVlKSB7XG5cdCAgaWYgKHZhbHVlID09IG51bGwpIHtcblx0ICAgIHJldHVy
biB2YWx1ZSA9PT0gdW5kZWZpbmVkID8gdW5kZWZpbmVkVGFnIDogbnVsbFRhZztcblx0ICB9XG5c
dCAgcmV0dXJuIChzeW1Ub1N0cmluZ1RhZyAmJiBzeW1Ub1N0cmluZ1RhZyBpbiBPYmplY3QodmFs
dWUpKVxuXHQgICAgPyBnZXRSYXdUYWcodmFsdWUpXG5cdCAgICA6IG9iamVjdFRvU3RyaW5nKHZh
bHVlKTtcblx0fVxuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBiYXNlR2V0VGFnO1xuXG5cbi8qKiov
IH0sXG4vKiAxMTMgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5cdC8q
IFdFQlBBQ0sgVkFSIElOSkVDVElPTiAqLyhmdW5jdGlvbihnbG9iYWwpIHsvKiogRGV0ZWN0IGZy
ZWUgdmFyaWFibGUgYGdsb2JhbGAgZnJvbSBOb2RlLmpzLiAqL1xuXHR2YXIgZnJlZUdsb2JhbCA9
IHR5cGVvZiBnbG9iYWwgPT0gJ29iamVjdCcgJiYgZ2xvYmFsICYmIGdsb2JhbC5PYmplY3QgPT09
IE9iamVjdCAmJiBnbG9iYWw7XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IGZyZWVHbG9iYWw7XG5c
dFxuXHQvKiBXRUJQQUNLIFZBUiBJTkpFQ1RJT04gKi99LmNhbGwoZXhwb3J0cywgKGZ1bmN0aW9u
KCkgeyByZXR1cm4gdGhpczsgfSgpKSkpXG5cbi8qKiovIH0sXG4vKiAxMTQgKi9cbi8qKiovIGZ1
bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdHZhciBv
dmVyQXJnID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMTcpO1xuXHRcblx0LyoqIEJ1aWx0LWluIHZh
bHVlIHJlZmVyZW5jZXMuICovXG5cdHZhciBnZXRQcm90b3R5cGUgPSBvdmVyQXJnKE9iamVjdC5n
ZXRQcm90b3R5cGVPZiwgT2JqZWN0KTtcblx0XG5cdG1vZHVsZS5leHBvcnRzID0gZ2V0UHJvdG90
eXBlO1xuXG5cbi8qKiovIH0sXG4vKiAxMTUgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhw
b3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdHZhciBTeW1ib2wgPSBfX3dlYnBhY2tf
cmVxdWlyZV9fKDU0KTtcblx0XG5cdC8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJl
bmNlcy4gKi9cblx0dmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblx0XG5cdC8q
KiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xuXHR2YXIgaGFz
T3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblx0XG5cdC8qKlxuXHQg
KiBVc2VkIHRvIHJlc29sdmUgdGhlXG5cdCAqIFtgdG9TdHJpbmdUYWdgXShodHRwOi8vZWNtYS1p
bnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1vYmplY3QucHJvdG90eXBlLnRvc3Ry
aW5nKVxuXHQgKiBvZiB2YWx1ZXMuXG5cdCAqL1xuXHR2YXIgbmF0aXZlT2JqZWN0VG9TdHJpbmcg
PSBvYmplY3RQcm90by50b1N0cmluZztcblx0XG5cdC8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVu
Y2VzLiAqL1xuXHR2YXIgc3ltVG9TdHJpbmdUYWcgPSBTeW1ib2wgPyBTeW1ib2wudG9TdHJpbmdU
YWcgOiB1bmRlZmluZWQ7XG5cdFxuXHQvKipcblx0ICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9m
IGBiYXNlR2V0VGFnYCB3aGljaCBpZ25vcmVzIGBTeW1ib2wudG9TdHJpbmdUYWdgIHZhbHVlcy5c
blx0ICpcblx0ICogQHByaXZhdGVcblx0ICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8g
cXVlcnkuXG5cdCAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHJhdyBgdG9TdHJpbmdU
YWdgLlxuXHQgKi9cblx0ZnVuY3Rpb24gZ2V0UmF3VGFnKHZhbHVlKSB7XG5cdCAgdmFyIGlzT3du
ID0gaGFzT3duUHJvcGVydHkuY2FsbCh2YWx1ZSwgc3ltVG9TdHJpbmdUYWcpLFxuXHQgICAgICB0
YWcgPSB2YWx1ZVtzeW1Ub1N0cmluZ1RhZ107XG5cdFxuXHQgIHRyeSB7XG5cdCAgICB2YWx1ZVtz
eW1Ub1N0cmluZ1RhZ10gPSB1bmRlZmluZWQ7XG5cdCAgICB2YXIgdW5tYXNrZWQgPSB0cnVlO1xu
XHQgIH0gY2F0Y2ggKGUpIHt9XG5cdFxuXHQgIHZhciByZXN1bHQgPSBuYXRpdmVPYmplY3RUb1N0
cmluZy5jYWxsKHZhbHVlKTtcblx0ICBpZiAodW5tYXNrZWQpIHtcblx0ICAgIGlmIChpc093bikg
e1xuXHQgICAgICB2YWx1ZVtzeW1Ub1N0cmluZ1RhZ10gPSB0YWc7XG5cdCAgICB9IGVsc2Uge1xu
XHQgICAgICBkZWxldGUgdmFsdWVbc3ltVG9TdHJpbmdUYWddO1xuXHQgICAgfVxuXHQgIH1cblx0
ICByZXR1cm4gcmVzdWx0O1xuXHR9XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IGdldFJhd1RhZztc
blxuXG4vKioqLyB9LFxuLyogMTE2ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMp
IHtcblxuXHQvKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG5cdHZh
ciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cdFxuXHQvKipcblx0ICogVXNlZCB0
byByZXNvbHZlIHRoZVxuXHQgKiBbYHRvU3RyaW5nVGFnYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRp
b25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtb2JqZWN0LnByb3RvdHlwZS50b3N0cmluZylcblx0
ICogb2YgdmFsdWVzLlxuXHQgKi9cblx0dmFyIG5hdGl2ZU9iamVjdFRvU3RyaW5nID0gb2JqZWN0
UHJvdG8udG9TdHJpbmc7XG5cdFxuXHQvKipcblx0ICogQ29udmVydHMgYHZhbHVlYCB0byBhIHN0
cmluZyB1c2luZyBgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZ2AuXG5cdCAqXG5cdCAqIEBwcml2
YXRlXG5cdCAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbnZlcnQuXG5cdCAqIEBy
ZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGNvbnZlcnRlZCBzdHJpbmcuXG5cdCAqL1xuXHRm
dW5jdGlvbiBvYmplY3RUb1N0cmluZyh2YWx1ZSkge1xuXHQgIHJldHVybiBuYXRpdmVPYmplY3RU
b1N0cmluZy5jYWxsKHZhbHVlKTtcblx0fVxuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBvYmplY3RU
b1N0cmluZztcblxuXG4vKioqLyB9LFxuLyogMTE3ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUs
IGV4cG9ydHMpIHtcblxuXHQvKipcblx0ICogQ3JlYXRlcyBhIHVuYXJ5IGZ1bmN0aW9uIHRoYXQg
aW52b2tlcyBgZnVuY2Agd2l0aCBpdHMgYXJndW1lbnQgdHJhbnNmb3JtZWQuXG5cdCAqXG5cdCAq
IEBwcml2YXRlXG5cdCAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIHdy
YXAuXG5cdCAqIEBwYXJhbSB7RnVuY3Rpb259IHRyYW5zZm9ybSBUaGUgYXJndW1lbnQgdHJhbnNm
b3JtLlxuXHQgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBmdW5jdGlvbi5c
blx0ICovXG5cdGZ1bmN0aW9uIG92ZXJBcmcoZnVuYywgdHJhbnNmb3JtKSB7XG5cdCAgcmV0dXJu
IGZ1bmN0aW9uKGFyZykge1xuXHQgICAgcmV0dXJuIGZ1bmModHJhbnNmb3JtKGFyZykpO1xuXHQg
IH07XG5cdH1cblx0XG5cdG1vZHVsZS5leHBvcnRzID0gb3ZlckFyZztcblxuXG4vKioqLyB9LFxu
LyogMTE4ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1
aXJlX18pIHtcblxuXHR2YXIgZnJlZUdsb2JhbCA9IF9fd2VicGFja19yZXF1aXJlX18oMTEzKTtc
blx0XG5cdC8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgc2VsZmAuICovXG5cdHZhciBmcmVlU2Vs
ZiA9IHR5cGVvZiBzZWxmID09ICdvYmplY3QnICYmIHNlbGYgJiYgc2VsZi5PYmplY3QgPT09IE9i
amVjdCAmJiBzZWxmO1xuXHRcblx0LyoqIFVzZWQgYXMgYSByZWZlcmVuY2UgdG8gdGhlIGdsb2Jh
bCBvYmplY3QuICovXG5cdHZhciByb290ID0gZnJlZUdsb2JhbCB8fCBmcmVlU2VsZiB8fCBGdW5j
dGlvbigncmV0dXJuIHRoaXMnKSgpO1xuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSByb290O1xuXG5c
bi8qKiovIH0sXG4vKiAxMTkgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xu
XG5cdC8qKlxuXHQgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBvYmplY3QtbGlrZS4gQSB2YWx1ZSBp
cyBvYmplY3QtbGlrZSBpZiBpdCdzIG5vdCBgbnVsbGBcblx0ICogYW5kIGhhcyBhIGB0eXBlb2Zg
IHJlc3VsdCBvZiBcIm9iamVjdFwiLlxuXHQgKlxuXHQgKiBAc3RhdGljXG5cdCAqIEBtZW1iZXJP
ZiBfXG5cdCAqIEBzaW5jZSA0LjAuMFxuXHQgKiBAY2F0ZWdvcnkgTGFuZ1xuXHQgKiBAcGFyYW0g
eyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cblx0ICogQHJldHVybnMge2Jvb2xlYW59IFJl
dHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgb2JqZWN0LWxpa2UsIGVsc2UgYGZhbHNlYC5cblx0
ICogQGV4YW1wbGVcblx0ICpcblx0ICogXy5pc09iamVjdExpa2Uoe30pO1xuXHQgKiAvLyA9PiB0
cnVlXG5cdCAqXG5cdCAqIF8uaXNPYmplY3RMaWtlKFsxLCAyLCAzXSk7XG5cdCAqIC8vID0+IHRy
dWVcblx0ICpcblx0ICogXy5pc09iamVjdExpa2UoXy5ub29wKTtcblx0ICogLy8gPT4gZmFsc2Vc
blx0ICpcblx0ICogXy5pc09iamVjdExpa2UobnVsbCk7XG5cdCAqIC8vID0+IGZhbHNlXG5cdCAq
L1xuXHRmdW5jdGlvbiBpc09iamVjdExpa2UodmFsdWUpIHtcblx0ICByZXR1cm4gdmFsdWUgIT0g
bnVsbCAmJiB0eXBlb2YgdmFsdWUgPT0gJ29iamVjdCc7XG5cdH1cblx0XG5cdG1vZHVsZS5leHBv
cnRzID0gaXNPYmplY3RMaWtlO1xuXG5cbi8qKiovIH0sXG4vKiAxMjAgKi9cbi8qKiovIGZ1bmN0
aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8qKlxuXHQg
KiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRz
IHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVy
IHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxlIGlu
IHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdy
YW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZp
bGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0
XG5cdGlmIChmYWxzZSkge1xuXHQgIHZhciBpbnZhcmlhbnQgPSByZXF1aXJlKCdmYmpzL2xpYi9p
bnZhcmlhbnQnKTtcblx0ICB2YXIgd2FybmluZyA9IHJlcXVpcmUoJ2ZianMvbGliL3dhcm5pbmcn
KTtcblx0ICB2YXIgUmVhY3RQcm9wVHlwZXNTZWNyZXQgPSByZXF1aXJlKCcuL2xpYi9SZWFjdFBy
b3BUeXBlc1NlY3JldCcpO1xuXHQgIHZhciBsb2dnZWRUeXBlRmFpbHVyZXMgPSB7fTtcblx0fVxu
XHRcblx0LyoqXG5cdCAqIEFzc2VydCB0aGF0IHRoZSB2YWx1ZXMgbWF0Y2ggd2l0aCB0aGUgdHlw
ZSBzcGVjcy5cblx0ICogRXJyb3IgbWVzc2FnZXMgYXJlIG1lbW9yaXplZCBhbmQgd2lsbCBvbmx5
IGJlIHNob3duIG9uY2UuXG5cdCAqXG5cdCAqIEBwYXJhbSB7b2JqZWN0fSB0eXBlU3BlY3MgTWFw
IG9mIG5hbWUgdG8gYSBSZWFjdFByb3BUeXBlXG5cdCAqIEBwYXJhbSB7b2JqZWN0fSB2YWx1ZXMg
UnVudGltZSB2YWx1ZXMgdGhhdCBuZWVkIHRvIGJlIHR5cGUtY2hlY2tlZFxuXHQgKiBAcGFyYW0g
e3N0cmluZ30gbG9jYXRpb24gZS5nLiBcInByb3BcIiwgXCJjb250ZXh0XCIsIFwiY2hpbGQgY29u
dGV4dFwiXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBjb21wb25lbnROYW1lIE5hbWUgb2YgdGhlIGNv
bXBvbmVudCBmb3IgZXJyb3IgbWVzc2FnZXMuXG5cdCAqIEBwYXJhbSB7P0Z1bmN0aW9ufSBnZXRT
dGFjayBSZXR1cm5zIHRoZSBjb21wb25lbnQgc3RhY2suXG5cdCAqIEBwcml2YXRlXG5cdCAqL1xu
XHRmdW5jdGlvbiBjaGVja1Byb3BUeXBlcyh0eXBlU3BlY3MsIHZhbHVlcywgbG9jYXRpb24sIGNv
bXBvbmVudE5hbWUsIGdldFN0YWNrKSB7XG5cdCAgaWYgKGZhbHNlKSB7XG5cdCAgICBmb3IgKHZh
ciB0eXBlU3BlY05hbWUgaW4gdHlwZVNwZWNzKSB7XG5cdCAgICAgIGlmICh0eXBlU3BlY3MuaGFz
T3duUHJvcGVydHkodHlwZVNwZWNOYW1lKSkge1xuXHQgICAgICAgIHZhciBlcnJvcjtcblx0ICAg
ICAgICAvLyBQcm9wIHR5cGUgdmFsaWRhdGlvbiBtYXkgdGhyb3cuIEluIGNhc2UgdGhleSBkbywg
d2UgZG9uJ3Qgd2FudCB0b1xuXHQgICAgICAgIC8vIGZhaWwgdGhlIHJlbmRlciBwaGFzZSB3aGVy
ZSBpdCBkaWRuJ3QgZmFpbCBiZWZvcmUuIFNvIHdlIGxvZyBpdC5cblx0ICAgICAgICAvLyBBZnRl
ciB0aGVzZSBoYXZlIGJlZW4gY2xlYW5lZCB1cCwgd2UnbGwgbGV0IHRoZW0gdGhyb3cuXG5cdCAg
ICAgICAgdHJ5IHtcblx0ICAgICAgICAgIC8vIFRoaXMgaXMgaW50ZW50aW9uYWxseSBhbiBpbnZh
cmlhbnQgdGhhdCBnZXRzIGNhdWdodC4gSXQncyB0aGUgc2FtZVxuXHQgICAgICAgICAgLy8gYmVo
YXZpb3IgYXMgd2l0aG91dCB0aGlzIHN0YXRlbWVudCBleGNlcHQgd2l0aCBhIGJldHRlciBtZXNz
YWdlLlxuXHQgICAgICAgICAgaW52YXJpYW50KHR5cGVvZiB0eXBlU3BlY3NbdHlwZVNwZWNOYW1l
XSA9PT0gJ2Z1bmN0aW9uJywgJyVzOiAlcyB0eXBlIGAlc2AgaXMgaW52YWxpZDsgaXQgbXVzdCBi
ZSBhIGZ1bmN0aW9uLCB1c3VhbGx5IGZyb20gJyArICdSZWFjdC5Qcm9wVHlwZXMuJywgY29tcG9u
ZW50TmFtZSB8fCAnUmVhY3QgY2xhc3MnLCBsb2NhdGlvbiwgdHlwZVNwZWNOYW1lKTtcblx0ICAg
ICAgICAgIGVycm9yID0gdHlwZVNwZWNzW3R5cGVTcGVjTmFtZV0odmFsdWVzLCB0eXBlU3BlY05h
bWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBudWxsLCBSZWFjdFByb3BUeXBlc1NlY3JldCk7
XG5cdCAgICAgICAgfSBjYXRjaCAoZXgpIHtcblx0ICAgICAgICAgIGVycm9yID0gZXg7XG5cdCAg
ICAgICAgfVxuXHQgICAgICAgIHdhcm5pbmcoIWVycm9yIHx8IGVycm9yIGluc3RhbmNlb2YgRXJy
b3IsICclczogdHlwZSBzcGVjaWZpY2F0aW9uIG9mICVzIGAlc2AgaXMgaW52YWxpZDsgdGhlIHR5
cGUgY2hlY2tlciAnICsgJ2Z1bmN0aW9uIG11c3QgcmV0dXJuIGBudWxsYCBvciBhbiBgRXJyb3Jg
IGJ1dCByZXR1cm5lZCBhICVzLiAnICsgJ1lvdSBtYXkgaGF2ZSBmb3Jnb3R0ZW4gdG8gcGFzcyBh
biBhcmd1bWVudCB0byB0aGUgdHlwZSBjaGVja2VyICcgKyAnY3JlYXRvciAoYXJyYXlPZiwgaW5z
dGFuY2VPZiwgb2JqZWN0T2YsIG9uZU9mLCBvbmVPZlR5cGUsIGFuZCAnICsgJ3NoYXBlIGFsbCBy
ZXF1aXJlIGFuIGFyZ3VtZW50KS4nLCBjb21wb25lbnROYW1lIHx8ICdSZWFjdCBjbGFzcycsIGxv
Y2F0aW9uLCB0eXBlU3BlY05hbWUsIHR5cGVvZiBlcnJvcik7XG5cdCAgICAgICAgaWYgKGVycm9y
IGluc3RhbmNlb2YgRXJyb3IgJiYgIShlcnJvci5tZXNzYWdlIGluIGxvZ2dlZFR5cGVGYWlsdXJl
cykpIHtcblx0ICAgICAgICAgIC8vIE9ubHkgbW9uaXRvciB0aGlzIGZhaWx1cmUgb25jZSBiZWNh
dXNlIHRoZXJlIHRlbmRzIHRvIGJlIGEgbG90IG9mIHRoZVxuXHQgICAgICAgICAgLy8gc2FtZSBl
cnJvci5cblx0ICAgICAgICAgIGxvZ2dlZFR5cGVGYWlsdXJlc1tlcnJvci5tZXNzYWdlXSA9IHRy
dWU7XG5cdFxuXHQgICAgICAgICAgdmFyIHN0YWNrID0gZ2V0U3RhY2sgPyBnZXRTdGFjaygpIDog
Jyc7XG5cdFxuXHQgICAgICAgICAgd2FybmluZyhmYWxzZSwgJ0ZhaWxlZCAlcyB0eXBlOiAlcyVz
JywgbG9jYXRpb24sIGVycm9yLm1lc3NhZ2UsIHN0YWNrICE9IG51bGwgPyBzdGFjayA6ICcnKTtc
blx0ICAgICAgICB9XG5cdCAgICAgIH1cblx0ICAgIH1cblx0ICB9XG5cdH1cblx0XG5cdG1vZHVs
ZS5leHBvcnRzID0gY2hlY2tQcm9wVHlwZXM7XG5cblxuLyoqKi8gfSxcbi8qIDEyMSAqL1xuLyoq
Ki8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0
LyoqXG5cdCAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFs
bCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5z
ZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNF
IGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0
aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBB
VEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqL1xuXHRcblx0J3VzZSBzdHJp
Y3QnO1xuXHRcblx0dmFyIGVtcHR5RnVuY3Rpb24gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDcpO1xu
XHR2YXIgaW52YXJpYW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxKTtcblx0dmFyIFJlYWN0UHJv
cFR5cGVzU2VjcmV0ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1Nyk7XG5cdFxuXHRtb2R1bGUuZXhw
b3J0cyA9IGZ1bmN0aW9uKCkge1xuXHQgIGZ1bmN0aW9uIHNoaW0ocHJvcHMsIHByb3BOYW1lLCBj
b21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lLCBzZWNyZXQpIHtcblx0ICAgIGlm
IChzZWNyZXQgPT09IFJlYWN0UHJvcFR5cGVzU2VjcmV0KSB7XG5cdCAgICAgIC8vIEl0IGlzIHN0
aWxsIHNhZmUgd2hlbiBjYWxsZWQgZnJvbSBSZWFjdC5cblx0ICAgICAgcmV0dXJuO1xuXHQgICAg
fVxuXHQgICAgaW52YXJpYW50KFxuXHQgICAgICBmYWxzZSxcblx0ICAgICAgJ0NhbGxpbmcgUHJv
cFR5cGVzIHZhbGlkYXRvcnMgZGlyZWN0bHkgaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgYHByb3At
dHlwZXNgIHBhY2thZ2UuICcgK1xuXHQgICAgICAnVXNlIFByb3BUeXBlcy5jaGVja1Byb3BUeXBl
cygpIHRvIGNhbGwgdGhlbS4gJyArXG5cdCAgICAgICdSZWFkIG1vcmUgYXQgaHR0cDovL2ZiLm1l
L3VzZS1jaGVjay1wcm9wLXR5cGVzJ1xuXHQgICAgKTtcblx0ICB9O1xuXHQgIHNoaW0uaXNSZXF1
aXJlZCA9IHNoaW07XG5cdCAgZnVuY3Rpb24gZ2V0U2hpbSgpIHtcblx0ICAgIHJldHVybiBzaGlt
O1xuXHQgIH07XG5cdCAgLy8gSW1wb3J0YW50IVxuXHQgIC8vIEtlZXAgdGhpcyBsaXN0IGluIHN5
bmMgd2l0aCBwcm9kdWN0aW9uIHZlcnNpb24gaW4gYC4vZmFjdG9yeVdpdGhUeXBlQ2hlY2tlcnMu
anNgLlxuXHQgIHZhciBSZWFjdFByb3BUeXBlcyA9IHtcblx0ICAgIGFycmF5OiBzaGltLFxuXHQg
ICAgYm9vbDogc2hpbSxcblx0ICAgIGZ1bmM6IHNoaW0sXG5cdCAgICBudW1iZXI6IHNoaW0sXG5c
dCAgICBvYmplY3Q6IHNoaW0sXG5cdCAgICBzdHJpbmc6IHNoaW0sXG5cdCAgICBzeW1ib2w6IHNo
aW0sXG5cdFxuXHQgICAgYW55OiBzaGltLFxuXHQgICAgYXJyYXlPZjogZ2V0U2hpbSxcblx0ICAg
IGVsZW1lbnQ6IHNoaW0sXG5cdCAgICBpbnN0YW5jZU9mOiBnZXRTaGltLFxuXHQgICAgbm9kZTog
c2hpbSxcblx0ICAgIG9iamVjdE9mOiBnZXRTaGltLFxuXHQgICAgb25lT2Y6IGdldFNoaW0sXG5c
dCAgICBvbmVPZlR5cGU6IGdldFNoaW0sXG5cdCAgICBzaGFwZTogZ2V0U2hpbVxuXHQgIH07XG5c
dFxuXHQgIFJlYWN0UHJvcFR5cGVzLmNoZWNrUHJvcFR5cGVzID0gZW1wdHlGdW5jdGlvbjtcblx0
ICBSZWFjdFByb3BUeXBlcy5Qcm9wVHlwZXMgPSBSZWFjdFByb3BUeXBlcztcblx0XG5cdCAgcmV0
dXJuIFJlYWN0UHJvcFR5cGVzO1xuXHR9O1xuXG5cbi8qKiovIH0sXG4vKiAxMjIgKi9cbi8qKiov
IGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8q
KlxuXHQgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwg
cmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2Vk
IHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBm
aWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlv
bmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRF
TlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0
Jztcblx0XG5cdHZhciBlbXB0eUZ1bmN0aW9uID0gX193ZWJwYWNrX3JlcXVpcmVfXyg3KTtcblx0
dmFyIGludmFyaWFudCA9IF9fd2VicGFja19yZXF1aXJlX18oMSk7XG5cdHZhciB3YXJuaW5nID0g
X193ZWJwYWNrX3JlcXVpcmVfXygyKTtcblx0XG5cdHZhciBSZWFjdFByb3BUeXBlc1NlY3JldCA9
IF9fd2VicGFja19yZXF1aXJlX18oNTcpO1xuXHR2YXIgY2hlY2tQcm9wVHlwZXMgPSBfX3dlYnBh
Y2tfcmVxdWlyZV9fKDEyMCk7XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGlzVmFs
aWRFbGVtZW50LCB0aHJvd09uRGlyZWN0QWNjZXNzKSB7XG5cdCAgLyogZ2xvYmFsIFN5bWJvbCAq
L1xuXHQgIHZhciBJVEVSQVRPUl9TWU1CT0wgPSB0eXBlb2YgU3ltYm9sID09PSAnZnVuY3Rpb24n
ICYmIFN5bWJvbC5pdGVyYXRvcjtcblx0ICB2YXIgRkFVWF9JVEVSQVRPUl9TWU1CT0wgPSAnQEBp
dGVyYXRvcic7IC8vIEJlZm9yZSBTeW1ib2wgc3BlYy5cblx0XG5cdCAgLyoqXG5cdCAgICogUmV0
dXJucyB0aGUgaXRlcmF0b3IgbWV0aG9kIGZ1bmN0aW9uIGNvbnRhaW5lZCBvbiB0aGUgaXRlcmFi
bGUgb2JqZWN0LlxuXHQgICAqXG5cdCAgICogQmUgc3VyZSB0byBpbnZva2UgdGhlIGZ1bmN0aW9u
IHdpdGggdGhlIGl0ZXJhYmxlIGFzIGNvbnRleHQ6XG5cdCAgICpcblx0ICAgKiAgICAgdmFyIGl0
ZXJhdG9yRm4gPSBnZXRJdGVyYXRvckZuKG15SXRlcmFibGUpO1xuXHQgICAqICAgICBpZiAoaXRl
cmF0b3JGbikge1xuXHQgICAqICAgICAgIHZhciBpdGVyYXRvciA9IGl0ZXJhdG9yRm4uY2FsbCht
eUl0ZXJhYmxlKTtcblx0ICAgKiAgICAgICAuLi5cblx0ICAgKiAgICAgfVxuXHQgICAqXG5cdCAg
ICogQHBhcmFtIHs/b2JqZWN0fSBtYXliZUl0ZXJhYmxlXG5cdCAgICogQHJldHVybiB7P2Z1bmN0
aW9ufVxuXHQgICAqL1xuXHQgIGZ1bmN0aW9uIGdldEl0ZXJhdG9yRm4obWF5YmVJdGVyYWJsZSkg
e1xuXHQgICAgdmFyIGl0ZXJhdG9yRm4gPSBtYXliZUl0ZXJhYmxlICYmIChJVEVSQVRPUl9TWU1C
T0wgJiYgbWF5YmVJdGVyYWJsZVtJVEVSQVRPUl9TWU1CT0xdIHx8IG1heWJlSXRlcmFibGVbRkFV
WF9JVEVSQVRPUl9TWU1CT0xdKTtcblx0ICAgIGlmICh0eXBlb2YgaXRlcmF0b3JGbiA9PT0gJ2Z1
bmN0aW9uJykge1xuXHQgICAgICByZXR1cm4gaXRlcmF0b3JGbjtcblx0ICAgIH1cblx0ICB9XG5c
dFxuXHQgIC8qKlxuXHQgICAqIENvbGxlY3Rpb24gb2YgbWV0aG9kcyB0aGF0IGFsbG93IGRlY2xh
cmF0aW9uIGFuZCB2YWxpZGF0aW9uIG9mIHByb3BzIHRoYXQgYXJlXG5cdCAgICogc3VwcGxpZWQg
dG8gUmVhY3QgY29tcG9uZW50cy4gRXhhbXBsZSB1c2FnZTpcblx0ICAgKlxuXHQgICAqICAgdmFy
IFByb3BzID0gcmVxdWlyZSgnUmVhY3RQcm9wVHlwZXMnKTtcblx0ICAgKiAgIHZhciBNeUFydGlj
bGUgPSBSZWFjdC5jcmVhdGVDbGFzcyh7XG5cdCAgICogICAgIHByb3BUeXBlczoge1xuXHQgICAq
ICAgICAgIC8vIEFuIG9wdGlvbmFsIHN0cmluZyBwcm9wIG5hbWVkIFwiZGVzY3JpcHRpb25cIi5c
blx0ICAgKiAgICAgICBkZXNjcmlwdGlvbjogUHJvcHMuc3RyaW5nLFxuXHQgICAqXG5cdCAgICog
ICAgICAgLy8gQSByZXF1aXJlZCBlbnVtIHByb3AgbmFtZWQgXCJjYXRlZ29yeVwiLlxuXHQgICAq
ICAgICAgIGNhdGVnb3J5OiBQcm9wcy5vbmVPZihbJ05ld3MnLCdQaG90b3MnXSkuaXNSZXF1aXJl
ZCxcblx0ICAgKlxuXHQgICAqICAgICAgIC8vIEEgcHJvcCBuYW1lZCBcImRpYWxvZ1wiIHRoYXQg
cmVxdWlyZXMgYW4gaW5zdGFuY2Ugb2YgRGlhbG9nLlxuXHQgICAqICAgICAgIGRpYWxvZzogUHJv
cHMuaW5zdGFuY2VPZihEaWFsb2cpLmlzUmVxdWlyZWRcblx0ICAgKiAgICAgfSxcblx0ICAgKiAg
ICAgcmVuZGVyOiBmdW5jdGlvbigpIHsgLi4uIH1cblx0ICAgKiAgIH0pO1xuXHQgICAqXG5cdCAg
ICogQSBtb3JlIGZvcm1hbCBzcGVjaWZpY2F0aW9uIG9mIGhvdyB0aGVzZSBtZXRob2RzIGFyZSB1
c2VkOlxuXHQgICAqXG5cdCAgICogICB0eXBlIDo9IGFycmF5fGJvb2x8ZnVuY3xvYmplY3R8bnVt
YmVyfHN0cmluZ3xvbmVPZihbLi4uXSl8aW5zdGFuY2VPZiguLi4pXG5cdCAgICogICBkZWNsIDo9
IFJlYWN0UHJvcFR5cGVzLnt0eXBlfSguaXNSZXF1aXJlZCk/XG5cdCAgICpcblx0ICAgKiBFYWNo
IGFuZCBldmVyeSBkZWNsYXJhdGlvbiBwcm9kdWNlcyBhIGZ1bmN0aW9uIHdpdGggdGhlIHNhbWUg
c2lnbmF0dXJlLiBUaGlzXG5cdCAgICogYWxsb3dzIHRoZSBjcmVhdGlvbiBvZiBjdXN0b20gdmFs
aWRhdGlvbiBmdW5jdGlvbnMuIEZvciBleGFtcGxlOlxuXHQgICAqXG5cdCAgICogIHZhciBNeUxp
bmsgPSBSZWFjdC5jcmVhdGVDbGFzcyh7XG5cdCAgICogICAgcHJvcFR5cGVzOiB7XG5cdCAgICog
ICAgICAvLyBBbiBvcHRpb25hbCBzdHJpbmcgb3IgVVJJIHByb3AgbmFtZWQgXCJocmVmXCIuXG5c
dCAgICogICAgICBocmVmOiBmdW5jdGlvbihwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUp
IHtcblx0ICAgKiAgICAgICAgdmFyIHByb3BWYWx1ZSA9IHByb3BzW3Byb3BOYW1lXTtcblx0ICAg
KiAgICAgICAgaWYgKHByb3BWYWx1ZSAhPSBudWxsICYmIHR5cGVvZiBwcm9wVmFsdWUgIT09ICdz
dHJpbmcnICYmXG5cdCAgICogICAgICAgICAgICAhKHByb3BWYWx1ZSBpbnN0YW5jZW9mIFVSSSkp
IHtcblx0ICAgKiAgICAgICAgICByZXR1cm4gbmV3IEVycm9yKFxuXHQgICAqICAgICAgICAgICAg
J0V4cGVjdGVkIGEgc3RyaW5nIG9yIGFuIFVSSSBmb3IgJyArIHByb3BOYW1lICsgJyBpbiAnICtc
blx0ICAgKiAgICAgICAgICAgIGNvbXBvbmVudE5hbWVcblx0ICAgKiAgICAgICAgICApO1xuXHQg
ICAqICAgICAgICB9XG5cdCAgICogICAgICB9XG5cdCAgICogICAgfSxcblx0ICAgKiAgICByZW5k
ZXI6IGZ1bmN0aW9uKCkgey4uLn1cblx0ICAgKiAgfSk7XG5cdCAgICpcblx0ICAgKiBAaW50ZXJu
YWxcblx0ICAgKi9cblx0XG5cdCAgdmFyIEFOT05ZTU9VUyA9ICc8PGFub255bW91cz4+Jztcblx0
XG5cdCAgLy8gSW1wb3J0YW50IVxuXHQgIC8vIEtlZXAgdGhpcyBsaXN0IGluIHN5bmMgd2l0aCBw
cm9kdWN0aW9uIHZlcnNpb24gaW4gYC4vZmFjdG9yeVdpdGhUaHJvd2luZ1NoaW1zLmpzYC5cblx0
ICB2YXIgUmVhY3RQcm9wVHlwZXMgPSB7XG5cdCAgICBhcnJheTogY3JlYXRlUHJpbWl0aXZlVHlw
ZUNoZWNrZXIoJ2FycmF5JyksXG5cdCAgICBib29sOiBjcmVhdGVQcmltaXRpdmVUeXBlQ2hlY2tl
cignYm9vbGVhbicpLFxuXHQgICAgZnVuYzogY3JlYXRlUHJpbWl0aXZlVHlwZUNoZWNrZXIoJ2Z1
bmN0aW9uJyksXG5cdCAgICBudW1iZXI6IGNyZWF0ZVByaW1pdGl2ZVR5cGVDaGVja2VyKCdudW1i
ZXInKSxcblx0ICAgIG9iamVjdDogY3JlYXRlUHJpbWl0aXZlVHlwZUNoZWNrZXIoJ29iamVjdCcp
LFxuXHQgICAgc3RyaW5nOiBjcmVhdGVQcmltaXRpdmVUeXBlQ2hlY2tlcignc3RyaW5nJyksXG5c
dCAgICBzeW1ib2w6IGNyZWF0ZVByaW1pdGl2ZVR5cGVDaGVja2VyKCdzeW1ib2wnKSxcblx0XG5c
dCAgICBhbnk6IGNyZWF0ZUFueVR5cGVDaGVja2VyKCksXG5cdCAgICBhcnJheU9mOiBjcmVhdGVB
cnJheU9mVHlwZUNoZWNrZXIsXG5cdCAgICBlbGVtZW50OiBjcmVhdGVFbGVtZW50VHlwZUNoZWNr
ZXIoKSxcblx0ICAgIGluc3RhbmNlT2Y6IGNyZWF0ZUluc3RhbmNlVHlwZUNoZWNrZXIsXG5cdCAg
ICBub2RlOiBjcmVhdGVOb2RlQ2hlY2tlcigpLFxuXHQgICAgb2JqZWN0T2Y6IGNyZWF0ZU9iamVj
dE9mVHlwZUNoZWNrZXIsXG5cdCAgICBvbmVPZjogY3JlYXRlRW51bVR5cGVDaGVja2VyLFxuXHQg
ICAgb25lT2ZUeXBlOiBjcmVhdGVVbmlvblR5cGVDaGVja2VyLFxuXHQgICAgc2hhcGU6IGNyZWF0
ZVNoYXBlVHlwZUNoZWNrZXJcblx0ICB9O1xuXHRcblx0ICAvKipcblx0ICAgKiBpbmxpbmVkIE9i
amVjdC5pcyBwb2x5ZmlsbCB0byBhdm9pZCByZXF1aXJpbmcgY29uc3VtZXJzIHNoaXAgdGhlaXIg
b3duXG5cdCAgICogaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIv
SmF2YVNjcmlwdC9SZWZlcmVuY2UvR2xvYmFsX09iamVjdHMvT2JqZWN0L2lzXG5cdCAgICovXG5c
dCAgLyplc2xpbnQtZGlzYWJsZSBuby1zZWxmLWNvbXBhcmUqL1xuXHQgIGZ1bmN0aW9uIGlzKHgs
IHkpIHtcblx0ICAgIC8vIFNhbWVWYWx1ZSBhbGdvcml0aG1cblx0ICAgIGlmICh4ID09PSB5KSB7
XG5cdCAgICAgIC8vIFN0ZXBzIDEtNSwgNy0xMFxuXHQgICAgICAvLyBTdGVwcyA2LmItNi5lOiAr
MCAhPSAtMFxuXHQgICAgICByZXR1cm4geCAhPT0gMCB8fCAxIC8geCA9PT0gMSAvIHk7XG5cdCAg
ICB9IGVsc2Uge1xuXHQgICAgICAvLyBTdGVwIDYuYTogTmFOID09IE5hTlxuXHQgICAgICByZXR1
cm4geCAhPT0geCAmJiB5ICE9PSB5O1xuXHQgICAgfVxuXHQgIH1cblx0ICAvKmVzbGludC1lbmFi
bGUgbm8tc2VsZi1jb21wYXJlKi9cblx0XG5cdCAgLyoqXG5cdCAgICogV2UgdXNlIGFuIEVycm9y
LWxpa2Ugb2JqZWN0IGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IGFzIHBlb3BsZSBtYXkgY2Fs
bFxuXHQgICAqIFByb3BUeXBlcyBkaXJlY3RseSBhbmQgaW5zcGVjdCB0aGVpciBvdXRwdXQuIEhv
d2V2ZXIsIHdlIGRvbid0IHVzZSByZWFsXG5cdCAgICogRXJyb3JzIGFueW1vcmUuIFdlIGRvbid0
IGluc3BlY3QgdGhlaXIgc3RhY2sgYW55d2F5LCBhbmQgY3JlYXRpbmcgdGhlbVxuXHQgICAqIGlz
IHByb2hpYml0aXZlbHkgZXhwZW5zaXZlIGlmIHRoZXkgYXJlIGNyZWF0ZWQgdG9vIG9mdGVuLCBz
dWNoIGFzIHdoYXRcblx0ICAgKiBoYXBwZW5zIGluIG9uZU9mVHlwZSgpIGZvciBhbnkgdHlwZSBi
ZWZvcmUgdGhlIG9uZSB0aGF0IG1hdGNoZWQuXG5cdCAgICovXG5cdCAgZnVuY3Rpb24gUHJvcFR5
cGVFcnJvcihtZXNzYWdlKSB7XG5cdCAgICB0aGlzLm1lc3NhZ2UgPSBtZXNzYWdlO1xuXHQgICAg
dGhpcy5zdGFjayA9ICcnO1xuXHQgIH1cblx0ICAvLyBNYWtlIGBpbnN0YW5jZW9mIEVycm9yYCBz
dGlsbCB3b3JrIGZvciByZXR1cm5lZCBlcnJvcnMuXG5cdCAgUHJvcFR5cGVFcnJvci5wcm90b3R5
cGUgPSBFcnJvci5wcm90b3R5cGU7XG5cdFxuXHQgIGZ1bmN0aW9uIGNyZWF0ZUNoYWluYWJsZVR5
cGVDaGVja2VyKHZhbGlkYXRlKSB7XG5cdCAgICBpZiAoZmFsc2UpIHtcblx0ICAgICAgdmFyIG1h
bnVhbFByb3BUeXBlQ2FsbENhY2hlID0ge307XG5cdCAgICAgIHZhciBtYW51YWxQcm9wVHlwZVdh
cm5pbmdDb3VudCA9IDA7XG5cdCAgICB9XG5cdCAgICBmdW5jdGlvbiBjaGVja1R5cGUoaXNSZXF1
aXJlZCwgcHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxO
YW1lLCBzZWNyZXQpIHtcblx0ICAgICAgY29tcG9uZW50TmFtZSA9IGNvbXBvbmVudE5hbWUgfHwg
QU5PTllNT1VTO1xuXHQgICAgICBwcm9wRnVsbE5hbWUgPSBwcm9wRnVsbE5hbWUgfHwgcHJvcE5h
bWU7XG5cdFxuXHQgICAgICBpZiAoc2VjcmV0ICE9PSBSZWFjdFByb3BUeXBlc1NlY3JldCkge1xu
XHQgICAgICAgIGlmICh0aHJvd09uRGlyZWN0QWNjZXNzKSB7XG5cdCAgICAgICAgICAvLyBOZXcg
YmVoYXZpb3Igb25seSBmb3IgdXNlcnMgb2YgYHByb3AtdHlwZXNgIHBhY2thZ2Vcblx0ICAgICAg
ICAgIGludmFyaWFudChcblx0ICAgICAgICAgICAgZmFsc2UsXG5cdCAgICAgICAgICAgICdDYWxs
aW5nIFByb3BUeXBlcyB2YWxpZGF0b3JzIGRpcmVjdGx5IGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhl
IGBwcm9wLXR5cGVzYCBwYWNrYWdlLiAnICtcblx0ICAgICAgICAgICAgJ1VzZSBgUHJvcFR5cGVz
LmNoZWNrUHJvcFR5cGVzKClgIHRvIGNhbGwgdGhlbS4gJyArXG5cdCAgICAgICAgICAgICdSZWFk
IG1vcmUgYXQgaHR0cDovL2ZiLm1lL3VzZS1jaGVjay1wcm9wLXR5cGVzJ1xuXHQgICAgICAgICAg
KTtcblx0ICAgICAgICB9IGVsc2UgaWYgKGZhbHNlKSB7XG5cdCAgICAgICAgICAvLyBPbGQgYmVo
YXZpb3IgZm9yIHBlb3BsZSB1c2luZyBSZWFjdC5Qcm9wVHlwZXNcblx0ICAgICAgICAgIHZhciBj
YWNoZUtleSA9IGNvbXBvbmVudE5hbWUgKyAnOicgKyBwcm9wTmFtZTtcblx0ICAgICAgICAgIGlm
IChcblx0ICAgICAgICAgICAgIW1hbnVhbFByb3BUeXBlQ2FsbENhY2hlW2NhY2hlS2V5XSAmJlxu
XHQgICAgICAgICAgICAvLyBBdm9pZCBzcGFtbWluZyB0aGUgY29uc29sZSBiZWNhdXNlIHRoZXkg
YXJlIG9mdGVuIG5vdCBhY3Rpb25hYmxlIGV4Y2VwdCBmb3IgbGliIGF1dGhvcnNcblx0ICAgICAg
ICAgICAgbWFudWFsUHJvcFR5cGVXYXJuaW5nQ291bnQgPCAzXG5cdCAgICAgICAgICApIHtcblx0
ICAgICAgICAgICAgd2FybmluZyhcblx0ICAgICAgICAgICAgICBmYWxzZSxcblx0ICAgICAgICAg
ICAgICAnWW91IGFyZSBtYW51YWxseSBjYWxsaW5nIGEgUmVhY3QuUHJvcFR5cGVzIHZhbGlkYXRp
b24gJyArXG5cdCAgICAgICAgICAgICAgJ2Z1bmN0aW9uIGZvciB0aGUgYCVzYCBwcm9wIG9uIGAl
c2AuIFRoaXMgaXMgZGVwcmVjYXRlZCAnICtcblx0ICAgICAgICAgICAgICAnYW5kIHdpbGwgdGhy
b3cgaW4gdGhlIHN0YW5kYWxvbmUgYHByb3AtdHlwZXNgIHBhY2thZ2UuICcgK1xuXHQgICAgICAg
ICAgICAgICdZb3UgbWF5IGJlIHNlZWluZyB0aGlzIHdhcm5pbmcgZHVlIHRvIGEgdGhpcmQtcGFy
dHkgUHJvcFR5cGVzICcgK1xuXHQgICAgICAgICAgICAgICdsaWJyYXJ5LiBTZWUgaHR0cHM6Ly9m
Yi5tZS9yZWFjdC13YXJuaW5nLWRvbnQtY2FsbC1wcm9wdHlwZXMgJyArICdmb3IgZGV0YWlscy4n
LFxuXHQgICAgICAgICAgICAgIHByb3BGdWxsTmFtZSxcblx0ICAgICAgICAgICAgICBjb21wb25l
bnROYW1lXG5cdCAgICAgICAgICAgICk7XG5cdCAgICAgICAgICAgIG1hbnVhbFByb3BUeXBlQ2Fs
bENhY2hlW2NhY2hlS2V5XSA9IHRydWU7XG5cdCAgICAgICAgICAgIG1hbnVhbFByb3BUeXBlV2Fy
bmluZ0NvdW50Kys7XG5cdCAgICAgICAgICB9XG5cdCAgICAgICAgfVxuXHQgICAgICB9XG5cdCAg
ICAgIGlmIChwcm9wc1twcm9wTmFtZV0gPT0gbnVsbCkge1xuXHQgICAgICAgIGlmIChpc1JlcXVp
cmVkKSB7XG5cdCAgICAgICAgICBpZiAocHJvcHNbcHJvcE5hbWVdID09PSBudWxsKSB7XG5cdCAg
ICAgICAgICAgIHJldHVybiBuZXcgUHJvcFR5cGVFcnJvcignVGhlICcgKyBsb2NhdGlvbiArICcg
YCcgKyBwcm9wRnVsbE5hbWUgKyAnYCBpcyBtYXJrZWQgYXMgcmVxdWlyZWQgJyArICgnaW4gYCcg
KyBjb21wb25lbnROYW1lICsgJ2AsIGJ1dCBpdHMgdmFsdWUgaXMgYG51bGxgLicpKTtcblx0ICAg
ICAgICAgIH1cblx0ICAgICAgICAgIHJldHVybiBuZXcgUHJvcFR5cGVFcnJvcignVGhlICcgKyBs
b2NhdGlvbiArICcgYCcgKyBwcm9wRnVsbE5hbWUgKyAnYCBpcyBtYXJrZWQgYXMgcmVxdWlyZWQg
aW4gJyArICgnYCcgKyBjb21wb25lbnROYW1lICsgJ2AsIGJ1dCBpdHMgdmFsdWUgaXMgYHVuZGVm
aW5lZGAuJykpO1xuXHQgICAgICAgIH1cblx0ICAgICAgICByZXR1cm4gbnVsbDtcblx0ICAgICAg
fSBlbHNlIHtcblx0ICAgICAgICByZXR1cm4gdmFsaWRhdGUocHJvcHMsIHByb3BOYW1lLCBjb21w
b25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lKTtcblx0ICAgICAgfVxuXHQgICAgfVxu
XHRcblx0ICAgIHZhciBjaGFpbmVkQ2hlY2tUeXBlID0gY2hlY2tUeXBlLmJpbmQobnVsbCwgZmFs
c2UpO1xuXHQgICAgY2hhaW5lZENoZWNrVHlwZS5pc1JlcXVpcmVkID0gY2hlY2tUeXBlLmJpbmQo
bnVsbCwgdHJ1ZSk7XG5cdFxuXHQgICAgcmV0dXJuIGNoYWluZWRDaGVja1R5cGU7XG5cdCAgfVxu
XHRcblx0ICBmdW5jdGlvbiBjcmVhdGVQcmltaXRpdmVUeXBlQ2hlY2tlcihleHBlY3RlZFR5cGUp
IHtcblx0ICAgIGZ1bmN0aW9uIHZhbGlkYXRlKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFt
ZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSwgc2VjcmV0KSB7XG5cdCAgICAgIHZhciBwcm9wVmFs
dWUgPSBwcm9wc1twcm9wTmFtZV07XG5cdCAgICAgIHZhciBwcm9wVHlwZSA9IGdldFByb3BUeXBl
KHByb3BWYWx1ZSk7XG5cdCAgICAgIGlmIChwcm9wVHlwZSAhPT0gZXhwZWN0ZWRUeXBlKSB7XG5c
dCAgICAgICAgLy8gYHByb3BWYWx1ZWAgYmVpbmcgaW5zdGFuY2Ugb2YsIHNheSwgZGF0ZS9yZWdl
eHAsIHBhc3MgdGhlICdvYmplY3QnXG5cdCAgICAgICAgLy8gY2hlY2ssIGJ1dCB3ZSBjYW4gb2Zm
ZXIgYSBtb3JlIHByZWNpc2UgZXJyb3IgbWVzc2FnZSBoZXJlIHJhdGhlciB0aGFuXG5cdCAgICAg
ICAgLy8gJ29mIHR5cGUgYG9iamVjdGAnLlxuXHQgICAgICAgIHZhciBwcmVjaXNlVHlwZSA9IGdl
dFByZWNpc2VUeXBlKHByb3BWYWx1ZSk7XG5cdFxuXHQgICAgICAgIHJldHVybiBuZXcgUHJvcFR5
cGVFcnJvcignSW52YWxpZCAnICsgbG9jYXRpb24gKyAnIGAnICsgcHJvcEZ1bGxOYW1lICsgJ2Ag
b2YgdHlwZSAnICsgKCdgJyArIHByZWNpc2VUeXBlICsgJ2Agc3VwcGxpZWQgdG8gYCcgKyBjb21w
b25lbnROYW1lICsgJ2AsIGV4cGVjdGVkICcpICsgKCdgJyArIGV4cGVjdGVkVHlwZSArICdgLicp
KTtcblx0ICAgICAgfVxuXHQgICAgICByZXR1cm4gbnVsbDtcblx0ICAgIH1cblx0ICAgIHJldHVy
biBjcmVhdGVDaGFpbmFibGVUeXBlQ2hlY2tlcih2YWxpZGF0ZSk7XG5cdCAgfVxuXHRcblx0ICBm
dW5jdGlvbiBjcmVhdGVBbnlUeXBlQ2hlY2tlcigpIHtcblx0ICAgIHJldHVybiBjcmVhdGVDaGFp
bmFibGVUeXBlQ2hlY2tlcihlbXB0eUZ1bmN0aW9uLnRoYXRSZXR1cm5zTnVsbCk7XG5cdCAgfVxu
XHRcblx0ICBmdW5jdGlvbiBjcmVhdGVBcnJheU9mVHlwZUNoZWNrZXIodHlwZUNoZWNrZXIpIHtc
blx0ICAgIGZ1bmN0aW9uIHZhbGlkYXRlKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwg
bG9jYXRpb24sIHByb3BGdWxsTmFtZSkge1xuXHQgICAgICBpZiAodHlwZW9mIHR5cGVDaGVja2Vy
ICE9PSAnZnVuY3Rpb24nKSB7XG5cdCAgICAgICAgcmV0dXJuIG5ldyBQcm9wVHlwZUVycm9yKCdQ
cm9wZXJ0eSBgJyArIHByb3BGdWxsTmFtZSArICdgIG9mIGNvbXBvbmVudCBgJyArIGNvbXBvbmVu
dE5hbWUgKyAnYCBoYXMgaW52YWxpZCBQcm9wVHlwZSBub3RhdGlvbiBpbnNpZGUgYXJyYXlPZi4n
KTtcblx0ICAgICAgfVxuXHQgICAgICB2YXIgcHJvcFZhbHVlID0gcHJvcHNbcHJvcE5hbWVdO1xu
XHQgICAgICBpZiAoIUFycmF5LmlzQXJyYXkocHJvcFZhbHVlKSkge1xuXHQgICAgICAgIHZhciBw
cm9wVHlwZSA9IGdldFByb3BUeXBlKHByb3BWYWx1ZSk7XG5cdCAgICAgICAgcmV0dXJuIG5ldyBQ
cm9wVHlwZUVycm9yKCdJbnZhbGlkICcgKyBsb2NhdGlvbiArICcgYCcgKyBwcm9wRnVsbE5hbWUg
KyAnYCBvZiB0eXBlICcgKyAoJ2AnICsgcHJvcFR5cGUgKyAnYCBzdXBwbGllZCB0byBgJyArIGNv
bXBvbmVudE5hbWUgKyAnYCwgZXhwZWN0ZWQgYW4gYXJyYXkuJykpO1xuXHQgICAgICB9XG5cdCAg
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcFZhbHVlLmxlbmd0aDsgaSsrKSB7XG5cdCAgICAg
ICAgdmFyIGVycm9yID0gdHlwZUNoZWNrZXIocHJvcFZhbHVlLCBpLCBjb21wb25lbnROYW1lLCBs
b2NhdGlvbiwgcHJvcEZ1bGxOYW1lICsgJ1snICsgaSArICddJywgUmVhY3RQcm9wVHlwZXNTZWNy
ZXQpO1xuXHQgICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEVycm9yKSB7XG5cdCAgICAgICAg
ICByZXR1cm4gZXJyb3I7XG5cdCAgICAgICAgfVxuXHQgICAgICB9XG5cdCAgICAgIHJldHVybiBu
dWxsO1xuXHQgICAgfVxuXHQgICAgcmV0dXJuIGNyZWF0ZUNoYWluYWJsZVR5cGVDaGVja2VyKHZh
bGlkYXRlKTtcblx0ICB9XG5cdFxuXHQgIGZ1bmN0aW9uIGNyZWF0ZUVsZW1lbnRUeXBlQ2hlY2tl
cigpIHtcblx0ICAgIGZ1bmN0aW9uIHZhbGlkYXRlKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50
TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSkge1xuXHQgICAgICB2YXIgcHJvcFZhbHVlID0g
cHJvcHNbcHJvcE5hbWVdO1xuXHQgICAgICBpZiAoIWlzVmFsaWRFbGVtZW50KHByb3BWYWx1ZSkp
IHtcblx0ICAgICAgICB2YXIgcHJvcFR5cGUgPSBnZXRQcm9wVHlwZShwcm9wVmFsdWUpO1xuXHQg
ICAgICAgIHJldHVybiBuZXcgUHJvcFR5cGVFcnJvcignSW52YWxpZCAnICsgbG9jYXRpb24gKyAn
IGAnICsgcHJvcEZ1bGxOYW1lICsgJ2Agb2YgdHlwZSAnICsgKCdgJyArIHByb3BUeXBlICsgJ2Ag
c3VwcGxpZWQgdG8gYCcgKyBjb21wb25lbnROYW1lICsgJ2AsIGV4cGVjdGVkIGEgc2luZ2xlIFJl
YWN0RWxlbWVudC4nKSk7XG5cdCAgICAgIH1cblx0ICAgICAgcmV0dXJuIG51bGw7XG5cdCAgICB9
XG5cdCAgICByZXR1cm4gY3JlYXRlQ2hhaW5hYmxlVHlwZUNoZWNrZXIodmFsaWRhdGUpO1xuXHQg
IH1cblx0XG5cdCAgZnVuY3Rpb24gY3JlYXRlSW5zdGFuY2VUeXBlQ2hlY2tlcihleHBlY3RlZENs
YXNzKSB7XG5cdCAgICBmdW5jdGlvbiB2YWxpZGF0ZShwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVu
dE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUpIHtcblx0ICAgICAgaWYgKCEocHJvcHNbcHJv
cE5hbWVdIGluc3RhbmNlb2YgZXhwZWN0ZWRDbGFzcykpIHtcblx0ICAgICAgICB2YXIgZXhwZWN0
ZWRDbGFzc05hbWUgPSBleHBlY3RlZENsYXNzLm5hbWUgfHwgQU5PTllNT1VTO1xuXHQgICAgICAg
IHZhciBhY3R1YWxDbGFzc05hbWUgPSBnZXRDbGFzc05hbWUocHJvcHNbcHJvcE5hbWVdKTtcblx0
ICAgICAgICByZXR1cm4gbmV3IFByb3BUeXBlRXJyb3IoJ0ludmFsaWQgJyArIGxvY2F0aW9uICsg
JyBgJyArIHByb3BGdWxsTmFtZSArICdgIG9mIHR5cGUgJyArICgnYCcgKyBhY3R1YWxDbGFzc05h
bWUgKyAnYCBzdXBwbGllZCB0byBgJyArIGNvbXBvbmVudE5hbWUgKyAnYCwgZXhwZWN0ZWQgJykg
KyAoJ2luc3RhbmNlIG9mIGAnICsgZXhwZWN0ZWRDbGFzc05hbWUgKyAnYC4nKSk7XG5cdCAgICAg
IH1cblx0ICAgICAgcmV0dXJuIG51bGw7XG5cdCAgICB9XG5cdCAgICByZXR1cm4gY3JlYXRlQ2hh
aW5hYmxlVHlwZUNoZWNrZXIodmFsaWRhdGUpO1xuXHQgIH1cblx0XG5cdCAgZnVuY3Rpb24gY3Jl
YXRlRW51bVR5cGVDaGVja2VyKGV4cGVjdGVkVmFsdWVzKSB7XG5cdCAgICBpZiAoIUFycmF5Lmlz
QXJyYXkoZXhwZWN0ZWRWYWx1ZXMpKSB7XG5cdCAgICAgICBmYWxzZSA/IHdhcm5pbmcoZmFsc2Us
ICdJbnZhbGlkIGFyZ3VtZW50IHN1cHBsaWVkIHRvIG9uZU9mLCBleHBlY3RlZCBhbiBpbnN0YW5j
ZSBvZiBhcnJheS4nKSA6IHZvaWQgMDtcblx0ICAgICAgcmV0dXJuIGVtcHR5RnVuY3Rpb24udGhh
dFJldHVybnNOdWxsO1xuXHQgICAgfVxuXHRcblx0ICAgIGZ1bmN0aW9uIHZhbGlkYXRlKHByb3Bz
LCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSkge1xuXHQg
ICAgICB2YXIgcHJvcFZhbHVlID0gcHJvcHNbcHJvcE5hbWVdO1xuXHQgICAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IGV4cGVjdGVkVmFsdWVzLmxlbmd0aDsgaSsrKSB7XG5cdCAgICAgICAgaWYgKGlz
KHByb3BWYWx1ZSwgZXhwZWN0ZWRWYWx1ZXNbaV0pKSB7XG5cdCAgICAgICAgICByZXR1cm4gbnVs
bDtcblx0ICAgICAgICB9XG5cdCAgICAgIH1cblx0XG5cdCAgICAgIHZhciB2YWx1ZXNTdHJpbmcg
PSBKU09OLnN0cmluZ2lmeShleHBlY3RlZFZhbHVlcyk7XG5cdCAgICAgIHJldHVybiBuZXcgUHJv
cFR5cGVFcnJvcignSW52YWxpZCAnICsgbG9jYXRpb24gKyAnIGAnICsgcHJvcEZ1bGxOYW1lICsg
J2Agb2YgdmFsdWUgYCcgKyBwcm9wVmFsdWUgKyAnYCAnICsgKCdzdXBwbGllZCB0byBgJyArIGNv
bXBvbmVudE5hbWUgKyAnYCwgZXhwZWN0ZWQgb25lIG9mICcgKyB2YWx1ZXNTdHJpbmcgKyAnLicp
KTtcblx0ICAgIH1cblx0ICAgIHJldHVybiBjcmVhdGVDaGFpbmFibGVUeXBlQ2hlY2tlcih2YWxp
ZGF0ZSk7XG5cdCAgfVxuXHRcblx0ICBmdW5jdGlvbiBjcmVhdGVPYmplY3RPZlR5cGVDaGVja2Vy
KHR5cGVDaGVja2VyKSB7XG5cdCAgICBmdW5jdGlvbiB2YWxpZGF0ZShwcm9wcywgcHJvcE5hbWUs
IGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUpIHtcblx0ICAgICAgaWYgKHR5
cGVvZiB0eXBlQ2hlY2tlciAhPT0gJ2Z1bmN0aW9uJykge1xuXHQgICAgICAgIHJldHVybiBuZXcg
UHJvcFR5cGVFcnJvcignUHJvcGVydHkgYCcgKyBwcm9wRnVsbE5hbWUgKyAnYCBvZiBjb21wb25l
bnQgYCcgKyBjb21wb25lbnROYW1lICsgJ2AgaGFzIGludmFsaWQgUHJvcFR5cGUgbm90YXRpb24g
aW5zaWRlIG9iamVjdE9mLicpO1xuXHQgICAgICB9XG5cdCAgICAgIHZhciBwcm9wVmFsdWUgPSBw
cm9wc1twcm9wTmFtZV07XG5cdCAgICAgIHZhciBwcm9wVHlwZSA9IGdldFByb3BUeXBlKHByb3BW
YWx1ZSk7XG5cdCAgICAgIGlmIChwcm9wVHlwZSAhPT0gJ29iamVjdCcpIHtcblx0ICAgICAgICBy
ZXR1cm4gbmV3IFByb3BUeXBlRXJyb3IoJ0ludmFsaWQgJyArIGxvY2F0aW9uICsgJyBgJyArIHBy
b3BGdWxsTmFtZSArICdgIG9mIHR5cGUgJyArICgnYCcgKyBwcm9wVHlwZSArICdgIHN1cHBsaWVk
IHRvIGAnICsgY29tcG9uZW50TmFtZSArICdgLCBleHBlY3RlZCBhbiBvYmplY3QuJykpO1xuXHQg
ICAgICB9XG5cdCAgICAgIGZvciAodmFyIGtleSBpbiBwcm9wVmFsdWUpIHtcblx0ICAgICAgICBp
ZiAocHJvcFZhbHVlLmhhc093blByb3BlcnR5KGtleSkpIHtcblx0ICAgICAgICAgIHZhciBlcnJv
ciA9IHR5cGVDaGVja2VyKHByb3BWYWx1ZSwga2V5LCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwg
cHJvcEZ1bGxOYW1lICsgJy4nICsga2V5LCBSZWFjdFByb3BUeXBlc1NlY3JldCk7XG5cdCAgICAg
ICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBFcnJvcikge1xuXHQgICAgICAgICAgICByZXR1cm4g
ZXJyb3I7XG5cdCAgICAgICAgICB9XG5cdCAgICAgICAgfVxuXHQgICAgICB9XG5cdCAgICAgIHJl
dHVybiBudWxsO1xuXHQgICAgfVxuXHQgICAgcmV0dXJuIGNyZWF0ZUNoYWluYWJsZVR5cGVDaGVj
a2VyKHZhbGlkYXRlKTtcblx0ICB9XG5cdFxuXHQgIGZ1bmN0aW9uIGNyZWF0ZVVuaW9uVHlwZUNo
ZWNrZXIoYXJyYXlPZlR5cGVDaGVja2Vycykge1xuXHQgICAgaWYgKCFBcnJheS5pc0FycmF5KGFy
cmF5T2ZUeXBlQ2hlY2tlcnMpKSB7XG5cdCAgICAgICBmYWxzZSA/IHdhcm5pbmcoZmFsc2UsICdJ
bnZhbGlkIGFyZ3VtZW50IHN1cHBsaWVkIHRvIG9uZU9mVHlwZSwgZXhwZWN0ZWQgYW4gaW5zdGFu
Y2Ugb2YgYXJyYXkuJykgOiB2b2lkIDA7XG5cdCAgICAgIHJldHVybiBlbXB0eUZ1bmN0aW9uLnRo
YXRSZXR1cm5zTnVsbDtcblx0ICAgIH1cblx0XG5cdCAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFy
cmF5T2ZUeXBlQ2hlY2tlcnMubGVuZ3RoOyBpKyspIHtcblx0ICAgICAgdmFyIGNoZWNrZXIgPSBh
cnJheU9mVHlwZUNoZWNrZXJzW2ldO1xuXHQgICAgICBpZiAodHlwZW9mIGNoZWNrZXIgIT09ICdm
dW5jdGlvbicpIHtcblx0ICAgICAgICB3YXJuaW5nKFxuXHQgICAgICAgICAgZmFsc2UsXG5cdCAg
ICAgICAgICAnSW52YWxpZCBhcmd1bWVudCBzdXBwbGlkIHRvIG9uZU9mVHlwZS4gRXhwZWN0ZWQg
YW4gYXJyYXkgb2YgY2hlY2sgZnVuY3Rpb25zLCBidXQgJyArXG5cdCAgICAgICAgICAncmVjZWl2
ZWQgJXMgYXQgaW5kZXggJXMuJyxcblx0ICAgICAgICAgIGdldFBvc3RmaXhGb3JUeXBlV2Fybmlu
ZyhjaGVja2VyKSxcblx0ICAgICAgICAgIGlcblx0ICAgICAgICApO1xuXHQgICAgICAgIHJldHVy
biBlbXB0eUZ1bmN0aW9uLnRoYXRSZXR1cm5zTnVsbDtcblx0ICAgICAgfVxuXHQgICAgfVxuXHRc
blx0ICAgIGZ1bmN0aW9uIHZhbGlkYXRlKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwg
bG9jYXRpb24sIHByb3BGdWxsTmFtZSkge1xuXHQgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFy
cmF5T2ZUeXBlQ2hlY2tlcnMubGVuZ3RoOyBpKyspIHtcblx0ICAgICAgICB2YXIgY2hlY2tlciA9
IGFycmF5T2ZUeXBlQ2hlY2tlcnNbaV07XG5cdCAgICAgICAgaWYgKGNoZWNrZXIocHJvcHMsIHBy
b3BOYW1lLCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lLCBSZWFjdFByb3BU
eXBlc1NlY3JldCkgPT0gbnVsbCkge1xuXHQgICAgICAgICAgcmV0dXJuIG51bGw7XG5cdCAgICAg
ICAgfVxuXHQgICAgICB9XG5cdFxuXHQgICAgICByZXR1cm4gbmV3IFByb3BUeXBlRXJyb3IoJ0lu
dmFsaWQgJyArIGxvY2F0aW9uICsgJyBgJyArIHByb3BGdWxsTmFtZSArICdgIHN1cHBsaWVkIHRv
ICcgKyAoJ2AnICsgY29tcG9uZW50TmFtZSArICdgLicpKTtcblx0ICAgIH1cblx0ICAgIHJldHVy
biBjcmVhdGVDaGFpbmFibGVUeXBlQ2hlY2tlcih2YWxpZGF0ZSk7XG5cdCAgfVxuXHRcblx0ICBm
dW5jdGlvbiBjcmVhdGVOb2RlQ2hlY2tlcigpIHtcblx0ICAgIGZ1bmN0aW9uIHZhbGlkYXRlKHBy
b3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSkge1xu
XHQgICAgICBpZiAoIWlzTm9kZShwcm9wc1twcm9wTmFtZV0pKSB7XG5cdCAgICAgICAgcmV0dXJu
IG5ldyBQcm9wVHlwZUVycm9yKCdJbnZhbGlkICcgKyBsb2NhdGlvbiArICcgYCcgKyBwcm9wRnVs
bE5hbWUgKyAnYCBzdXBwbGllZCB0byAnICsgKCdgJyArIGNvbXBvbmVudE5hbWUgKyAnYCwgZXhw
ZWN0ZWQgYSBSZWFjdE5vZGUuJykpO1xuXHQgICAgICB9XG5cdCAgICAgIHJldHVybiBudWxsO1xu
XHQgICAgfVxuXHQgICAgcmV0dXJuIGNyZWF0ZUNoYWluYWJsZVR5cGVDaGVja2VyKHZhbGlkYXRl
KTtcblx0ICB9XG5cdFxuXHQgIGZ1bmN0aW9uIGNyZWF0ZVNoYXBlVHlwZUNoZWNrZXIoc2hhcGVU
eXBlcykge1xuXHQgICAgZnVuY3Rpb24gdmFsaWRhdGUocHJvcHMsIHByb3BOYW1lLCBjb21wb25l
bnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lKSB7XG5cdCAgICAgIHZhciBwcm9wVmFsdWUg
PSBwcm9wc1twcm9wTmFtZV07XG5cdCAgICAgIHZhciBwcm9wVHlwZSA9IGdldFByb3BUeXBlKHBy
b3BWYWx1ZSk7XG5cdCAgICAgIGlmIChwcm9wVHlwZSAhPT0gJ29iamVjdCcpIHtcblx0ICAgICAg
ICByZXR1cm4gbmV3IFByb3BUeXBlRXJyb3IoJ0ludmFsaWQgJyArIGxvY2F0aW9uICsgJyBgJyAr
IHByb3BGdWxsTmFtZSArICdgIG9mIHR5cGUgYCcgKyBwcm9wVHlwZSArICdgICcgKyAoJ3N1cHBs
aWVkIHRvIGAnICsgY29tcG9uZW50TmFtZSArICdgLCBleHBlY3RlZCBgb2JqZWN0YC4nKSk7XG5c
dCAgICAgIH1cblx0ICAgICAgZm9yICh2YXIga2V5IGluIHNoYXBlVHlwZXMpIHtcblx0ICAgICAg
ICB2YXIgY2hlY2tlciA9IHNoYXBlVHlwZXNba2V5XTtcblx0ICAgICAgICBpZiAoIWNoZWNrZXIp
IHtcblx0ICAgICAgICAgIGNvbnRpbnVlO1xuXHQgICAgICAgIH1cblx0ICAgICAgICB2YXIgZXJy
b3IgPSBjaGVja2VyKHByb3BWYWx1ZSwga2V5LCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJv
cEZ1bGxOYW1lICsgJy4nICsga2V5LCBSZWFjdFByb3BUeXBlc1NlY3JldCk7XG5cdCAgICAgICAg
aWYgKGVycm9yKSB7XG5cdCAgICAgICAgICByZXR1cm4gZXJyb3I7XG5cdCAgICAgICAgfVxuXHQg
ICAgICB9XG5cdCAgICAgIHJldHVybiBudWxsO1xuXHQgICAgfVxuXHQgICAgcmV0dXJuIGNyZWF0
ZUNoYWluYWJsZVR5cGVDaGVja2VyKHZhbGlkYXRlKTtcblx0ICB9XG5cdFxuXHQgIGZ1bmN0aW9u
IGlzTm9kZShwcm9wVmFsdWUpIHtcblx0ICAgIHN3aXRjaCAodHlwZW9mIHByb3BWYWx1ZSkge1xu
XHQgICAgICBjYXNlICdudW1iZXInOlxuXHQgICAgICBjYXNlICdzdHJpbmcnOlxuXHQgICAgICBj
YXNlICd1bmRlZmluZWQnOlxuXHQgICAgICAgIHJldHVybiB0cnVlO1xuXHQgICAgICBjYXNlICdi
b29sZWFuJzpcblx0ICAgICAgICByZXR1cm4gIXByb3BWYWx1ZTtcblx0ICAgICAgY2FzZSAnb2Jq
ZWN0Jzpcblx0ICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShwcm9wVmFsdWUpKSB7XG5cdCAgICAg
ICAgICByZXR1cm4gcHJvcFZhbHVlLmV2ZXJ5KGlzTm9kZSk7XG5cdCAgICAgICAgfVxuXHQgICAg
ICAgIGlmIChwcm9wVmFsdWUgPT09IG51bGwgfHwgaXNWYWxpZEVsZW1lbnQocHJvcFZhbHVlKSkg
e1xuXHQgICAgICAgICAgcmV0dXJuIHRydWU7XG5cdCAgICAgICAgfVxuXHRcblx0ICAgICAgICB2
YXIgaXRlcmF0b3JGbiA9IGdldEl0ZXJhdG9yRm4ocHJvcFZhbHVlKTtcblx0ICAgICAgICBpZiAo
aXRlcmF0b3JGbikge1xuXHQgICAgICAgICAgdmFyIGl0ZXJhdG9yID0gaXRlcmF0b3JGbi5jYWxs
KHByb3BWYWx1ZSk7XG5cdCAgICAgICAgICB2YXIgc3RlcDtcblx0ICAgICAgICAgIGlmIChpdGVy
YXRvckZuICE9PSBwcm9wVmFsdWUuZW50cmllcykge1xuXHQgICAgICAgICAgICB3aGlsZSAoIShz
dGVwID0gaXRlcmF0b3IubmV4dCgpKS5kb25lKSB7XG5cdCAgICAgICAgICAgICAgaWYgKCFpc05v
ZGUoc3RlcC52YWx1ZSkpIHtcblx0ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcblx0ICAg
ICAgICAgICAgICB9XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICAgIH0gZWxzZSB7XG5cdCAg
ICAgICAgICAgIC8vIEl0ZXJhdG9yIHdpbGwgcHJvdmlkZSBlbnRyeSBbayx2XSB0dXBsZXMgcmF0
aGVyIHRoYW4gdmFsdWVzLlxuXHQgICAgICAgICAgICB3aGlsZSAoIShzdGVwID0gaXRlcmF0b3Iu
bmV4dCgpKS5kb25lKSB7XG5cdCAgICAgICAgICAgICAgdmFyIGVudHJ5ID0gc3RlcC52YWx1ZTtc
blx0ICAgICAgICAgICAgICBpZiAoZW50cnkpIHtcblx0ICAgICAgICAgICAgICAgIGlmICghaXNO
b2RlKGVudHJ5WzFdKSkge1xuXHQgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG5cdCAg
ICAgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICB9XG5cdCAg
ICAgICAgICB9XG5cdCAgICAgICAgfSBlbHNlIHtcblx0ICAgICAgICAgIHJldHVybiBmYWxzZTtc
blx0ICAgICAgICB9XG5cdFxuXHQgICAgICAgIHJldHVybiB0cnVlO1xuXHQgICAgICBkZWZhdWx0
OlxuXHQgICAgICAgIHJldHVybiBmYWxzZTtcblx0ICAgIH1cblx0ICB9XG5cdFxuXHQgIGZ1bmN0
aW9uIGlzU3ltYm9sKHByb3BUeXBlLCBwcm9wVmFsdWUpIHtcblx0ICAgIC8vIE5hdGl2ZSBTeW1i
b2wuXG5cdCAgICBpZiAocHJvcFR5cGUgPT09ICdzeW1ib2wnKSB7XG5cdCAgICAgIHJldHVybiB0
cnVlO1xuXHQgICAgfVxuXHRcblx0ICAgIC8vIDE5LjQuMy41IFN5bWJvbC5wcm90b3R5cGVbQEB0
b1N0cmluZ1RhZ10gPT09ICdTeW1ib2wnXG5cdCAgICBpZiAocHJvcFZhbHVlWydAQHRvU3RyaW5n
VGFnJ10gPT09ICdTeW1ib2wnKSB7XG5cdCAgICAgIHJldHVybiB0cnVlO1xuXHQgICAgfVxuXHRc
blx0ICAgIC8vIEZhbGxiYWNrIGZvciBub24tc3BlYyBjb21wbGlhbnQgU3ltYm9scyB3aGljaCBh
cmUgcG9seWZpbGxlZC5cblx0ICAgIGlmICh0eXBlb2YgU3ltYm9sID09PSAnZnVuY3Rpb24nICYm
IHByb3BWYWx1ZSBpbnN0YW5jZW9mIFN5bWJvbCkge1xuXHQgICAgICByZXR1cm4gdHJ1ZTtcblx0
ICAgIH1cblx0XG5cdCAgICByZXR1cm4gZmFsc2U7XG5cdCAgfVxuXHRcblx0ICAvLyBFcXVpdmFs
ZW50IG9mIGB0eXBlb2ZgIGJ1dCB3aXRoIHNwZWNpYWwgaGFuZGxpbmcgZm9yIGFycmF5IGFuZCBy
ZWdleHAuXG5cdCAgZnVuY3Rpb24gZ2V0UHJvcFR5cGUocHJvcFZhbHVlKSB7XG5cdCAgICB2YXIg
cHJvcFR5cGUgPSB0eXBlb2YgcHJvcFZhbHVlO1xuXHQgICAgaWYgKEFycmF5LmlzQXJyYXkocHJv
cFZhbHVlKSkge1xuXHQgICAgICByZXR1cm4gJ2FycmF5Jztcblx0ICAgIH1cblx0ICAgIGlmIChw
cm9wVmFsdWUgaW5zdGFuY2VvZiBSZWdFeHApIHtcblx0ICAgICAgLy8gT2xkIHdlYmtpdHMgKGF0
IGxlYXN0IHVudGlsIEFuZHJvaWQgNC4wKSByZXR1cm4gJ2Z1bmN0aW9uJyByYXRoZXIgdGhhblxu
XHQgICAgICAvLyAnb2JqZWN0JyBmb3IgdHlwZW9mIGEgUmVnRXhwLiBXZSdsbCBub3JtYWxpemUg
dGhpcyBoZXJlIHNvIHRoYXQgL2JsYS9cblx0ICAgICAgLy8gcGFzc2VzIFByb3BUeXBlcy5vYmpl
Y3QuXG5cdCAgICAgIHJldHVybiAnb2JqZWN0Jztcblx0ICAgIH1cblx0ICAgIGlmIChpc1N5bWJv
bChwcm9wVHlwZSwgcHJvcFZhbHVlKSkge1xuXHQgICAgICByZXR1cm4gJ3N5bWJvbCc7XG5cdCAg
ICB9XG5cdCAgICByZXR1cm4gcHJvcFR5cGU7XG5cdCAgfVxuXHRcblx0ICAvLyBUaGlzIGhhbmRs
ZXMgbW9yZSB0eXBlcyB0aGFuIGBnZXRQcm9wVHlwZWAuIE9ubHkgdXNlZCBmb3IgZXJyb3IgbWVz
c2FnZXMuXG5cdCAgLy8gU2VlIGBjcmVhdGVQcmltaXRpdmVUeXBlQ2hlY2tlcmAuXG5cdCAgZnVu
Y3Rpb24gZ2V0UHJlY2lzZVR5cGUocHJvcFZhbHVlKSB7XG5cdCAgICBpZiAodHlwZW9mIHByb3BW
YWx1ZSA9PT0gJ3VuZGVmaW5lZCcgfHwgcHJvcFZhbHVlID09PSBudWxsKSB7XG5cdCAgICAgIHJl
dHVybiAnJyArIHByb3BWYWx1ZTtcblx0ICAgIH1cblx0ICAgIHZhciBwcm9wVHlwZSA9IGdldFBy
b3BUeXBlKHByb3BWYWx1ZSk7XG5cdCAgICBpZiAocHJvcFR5cGUgPT09ICdvYmplY3QnKSB7XG5c
dCAgICAgIGlmIChwcm9wVmFsdWUgaW5zdGFuY2VvZiBEYXRlKSB7XG5cdCAgICAgICAgcmV0dXJu
ICdkYXRlJztcblx0ICAgICAgfSBlbHNlIGlmIChwcm9wVmFsdWUgaW5zdGFuY2VvZiBSZWdFeHAp
IHtcblx0ICAgICAgICByZXR1cm4gJ3JlZ2V4cCc7XG5cdCAgICAgIH1cblx0ICAgIH1cblx0ICAg
IHJldHVybiBwcm9wVHlwZTtcblx0ICB9XG5cdFxuXHQgIC8vIFJldHVybnMgYSBzdHJpbmcgdGhh
dCBpcyBwb3N0Zml4ZWQgdG8gYSB3YXJuaW5nIGFib3V0IGFuIGludmFsaWQgdHlwZS5cblx0ICAv
LyBGb3IgZXhhbXBsZSwgXCJ1bmRlZmluZWRcIiBvciBcIm9mIHR5cGUgYXJyYXlcIlxuXHQgIGZ1
bmN0aW9uIGdldFBvc3RmaXhGb3JUeXBlV2FybmluZyh2YWx1ZSkge1xuXHQgICAgdmFyIHR5cGUg
PSBnZXRQcmVjaXNlVHlwZSh2YWx1ZSk7XG5cdCAgICBzd2l0Y2ggKHR5cGUpIHtcblx0ICAgICAg
Y2FzZSAnYXJyYXknOlxuXHQgICAgICBjYXNlICdvYmplY3QnOlxuXHQgICAgICAgIHJldHVybiAn
YW4gJyArIHR5cGU7XG5cdCAgICAgIGNhc2UgJ2Jvb2xlYW4nOlxuXHQgICAgICBjYXNlICdkYXRl
Jzpcblx0ICAgICAgY2FzZSAncmVnZXhwJzpcblx0ICAgICAgICByZXR1cm4gJ2EgJyArIHR5cGU7
XG5cdCAgICAgIGRlZmF1bHQ6XG5cdCAgICAgICAgcmV0dXJuIHR5cGU7XG5cdCAgICB9XG5cdCAg
fVxuXHRcblx0ICAvLyBSZXR1cm5zIGNsYXNzIG5hbWUgb2YgdGhlIG9iamVjdCwgaWYgYW55Llxu
XHQgIGZ1bmN0aW9uIGdldENsYXNzTmFtZShwcm9wVmFsdWUpIHtcblx0ICAgIGlmICghcHJvcFZh
bHVlLmNvbnN0cnVjdG9yIHx8ICFwcm9wVmFsdWUuY29uc3RydWN0b3IubmFtZSkge1xuXHQgICAg
ICByZXR1cm4gQU5PTllNT1VTO1xuXHQgICAgfVxuXHQgICAgcmV0dXJuIHByb3BWYWx1ZS5jb25z
dHJ1Y3Rvci5uYW1lO1xuXHQgIH1cblx0XG5cdCAgUmVhY3RQcm9wVHlwZXMuY2hlY2tQcm9wVHlw
ZXMgPSBjaGVja1Byb3BUeXBlcztcblx0ICBSZWFjdFByb3BUeXBlcy5Qcm9wVHlwZXMgPSBSZWFj
dFByb3BUeXBlcztcblx0XG5cdCAgcmV0dXJuIFJlYWN0UHJvcFR5cGVzO1xuXHR9O1xuXG5cbi8q
KiovIH0sXG4vKiAxMjMgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJw
YWNrX3JlcXVpcmVfXykge1xuXG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdG1vZHVsZS5leHBvcnRz
ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMzcpO1xuXG5cbi8qKiovIH0sXG4vKiAxMjQgKi9cbi8q
KiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQg
MjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxu
XHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5
bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRp
cmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9m
IHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNh
bWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdHZh
ciBBUklBRE9NUHJvcGVydHlDb25maWcgPSB7XG5cdCAgUHJvcGVydGllczoge1xuXHQgICAgLy8g
R2xvYmFsIFN0YXRlcyBhbmQgUHJvcGVydGllc1xuXHQgICAgJ2FyaWEtY3VycmVudCc6IDAsIC8v
IHN0YXRlXG5cdCAgICAnYXJpYS1kZXRhaWxzJzogMCxcblx0ICAgICdhcmlhLWRpc2FibGVkJzog
MCwgLy8gc3RhdGVcblx0ICAgICdhcmlhLWhpZGRlbic6IDAsIC8vIHN0YXRlXG5cdCAgICAnYXJp
YS1pbnZhbGlkJzogMCwgLy8gc3RhdGVcblx0ICAgICdhcmlhLWtleXNob3J0Y3V0cyc6IDAsXG5c
dCAgICAnYXJpYS1sYWJlbCc6IDAsXG5cdCAgICAnYXJpYS1yb2xlZGVzY3JpcHRpb24nOiAwLFxu
XHQgICAgLy8gV2lkZ2V0IEF0dHJpYnV0ZXNcblx0ICAgICdhcmlhLWF1dG9jb21wbGV0ZSc6IDAs
XG5cdCAgICAnYXJpYS1jaGVja2VkJzogMCxcblx0ICAgICdhcmlhLWV4cGFuZGVkJzogMCxcblx0
ICAgICdhcmlhLWhhc3BvcHVwJzogMCxcblx0ICAgICdhcmlhLWxldmVsJzogMCxcblx0ICAgICdh
cmlhLW1vZGFsJzogMCxcblx0ICAgICdhcmlhLW11bHRpbGluZSc6IDAsXG5cdCAgICAnYXJpYS1t
dWx0aXNlbGVjdGFibGUnOiAwLFxuXHQgICAgJ2FyaWEtb3JpZW50YXRpb24nOiAwLFxuXHQgICAg
J2FyaWEtcGxhY2Vob2xkZXInOiAwLFxuXHQgICAgJ2FyaWEtcHJlc3NlZCc6IDAsXG5cdCAgICAn
YXJpYS1yZWFkb25seSc6IDAsXG5cdCAgICAnYXJpYS1yZXF1aXJlZCc6IDAsXG5cdCAgICAnYXJp
YS1zZWxlY3RlZCc6IDAsXG5cdCAgICAnYXJpYS1zb3J0JzogMCxcblx0ICAgICdhcmlhLXZhbHVl
bWF4JzogMCxcblx0ICAgICdhcmlhLXZhbHVlbWluJzogMCxcblx0ICAgICdhcmlhLXZhbHVlbm93
JzogMCxcblx0ICAgICdhcmlhLXZhbHVldGV4dCc6IDAsXG5cdCAgICAvLyBMaXZlIFJlZ2lvbiBB
dHRyaWJ1dGVzXG5cdCAgICAnYXJpYS1hdG9taWMnOiAwLFxuXHQgICAgJ2FyaWEtYnVzeSc6IDAs
XG5cdCAgICAnYXJpYS1saXZlJzogMCxcblx0ICAgICdhcmlhLXJlbGV2YW50JzogMCxcblx0ICAg
IC8vIERyYWctYW5kLURyb3AgQXR0cmlidXRlc1xuXHQgICAgJ2FyaWEtZHJvcGVmZmVjdCc6IDAs
XG5cdCAgICAnYXJpYS1ncmFiYmVkJzogMCxcblx0ICAgIC8vIFJlbGF0aW9uc2hpcCBBdHRyaWJ1
dGVzXG5cdCAgICAnYXJpYS1hY3RpdmVkZXNjZW5kYW50JzogMCxcblx0ICAgICdhcmlhLWNvbGNv
dW50JzogMCxcblx0ICAgICdhcmlhLWNvbGluZGV4JzogMCxcblx0ICAgICdhcmlhLWNvbHNwYW4n
OiAwLFxuXHQgICAgJ2FyaWEtY29udHJvbHMnOiAwLFxuXHQgICAgJ2FyaWEtZGVzY3JpYmVkYnkn
OiAwLFxuXHQgICAgJ2FyaWEtZXJyb3JtZXNzYWdlJzogMCxcblx0ICAgICdhcmlhLWZsb3d0byc6
IDAsXG5cdCAgICAnYXJpYS1sYWJlbGxlZGJ5JzogMCxcblx0ICAgICdhcmlhLW93bnMnOiAwLFxu
XHQgICAgJ2FyaWEtcG9zaW5zZXQnOiAwLFxuXHQgICAgJ2FyaWEtcm93Y291bnQnOiAwLFxuXHQg
ICAgJ2FyaWEtcm93aW5kZXgnOiAwLFxuXHQgICAgJ2FyaWEtcm93c3Bhbic6IDAsXG5cdCAgICAn
YXJpYS1zZXRzaXplJzogMFxuXHQgIH0sXG5cdCAgRE9NQXR0cmlidXRlTmFtZXM6IHt9LFxuXHQg
IERPTVByb3BlcnR5TmFtZXM6IHt9XG5cdH07XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IEFSSUFE
T01Qcm9wZXJ0eUNvbmZpZztcblxuLyoqKi8gfSxcbi8qIDEyNSAqL1xuLyoqKi8gZnVuY3Rpb24o
bW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0LyoqXG5cdCAqIENv
cHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhl
IEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhl
IHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRc
blx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBp
biB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqL1xuXHRcblx0J3VzZSBzdHJpY3QnO1xu
XHRcblx0dmFyIFJlYWN0RE9NQ29tcG9uZW50VHJlZSA9IF9fd2VicGFja19yZXF1aXJlX18oNSk7
XG5cdFxuXHR2YXIgZm9jdXNOb2RlID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1Mik7XG5cdFxuXHR2
YXIgQXV0b0ZvY3VzVXRpbHMgPSB7XG5cdCAgZm9jdXNET01Db21wb25lbnQ6IGZ1bmN0aW9uICgp
IHtcblx0ICAgIGZvY3VzTm9kZShSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0Tm9kZUZyb21JbnN0
YW5jZSh0aGlzKSk7XG5cdCAgfVxuXHR9O1xuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBBdXRvRm9j
dXNVdGlscztcblxuLyoqKi8gfSxcbi8qIDEyNiAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBl
eHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAy
MDEzLXByZXNlbnQgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0
ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxl
IGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJl
Y3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBw
YXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1l
IGRpcmVjdG9yeS5cblx0ICpcblx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHR2YXIg
RXZlbnRQcm9wYWdhdG9ycyA9IF9fd2VicGFja19yZXF1aXJlX18oMjApO1xuXHR2YXIgRXhlY3V0
aW9uRW52aXJvbm1lbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDYpO1xuXHR2YXIgRmFsbGJhY2tD
b21wb3NpdGlvblN0YXRlID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMzIpO1xuXHR2YXIgU3ludGhl
dGljQ29tcG9zaXRpb25FdmVudCA9IF9fd2VicGFja19yZXF1aXJlX18oMTY5KTtcblx0dmFyIFN5
bnRoZXRpY0lucHV0RXZlbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE3Mik7XG5cdFxuXHR2YXIg
RU5EX0tFWUNPREVTID0gWzksIDEzLCAyNywgMzJdOyAvLyBUYWIsIFJldHVybiwgRXNjLCBTcGFj
ZVxuXHR2YXIgU1RBUlRfS0VZQ09ERSA9IDIyOTtcblx0XG5cdHZhciBjYW5Vc2VDb21wb3NpdGlv
bkV2ZW50ID0gRXhlY3V0aW9uRW52aXJvbm1lbnQuY2FuVXNlRE9NICYmICdDb21wb3NpdGlvbkV2
ZW50JyBpbiB3aW5kb3c7XG5cdFxuXHR2YXIgZG9jdW1lbnRNb2RlID0gbnVsbDtcblx0aWYgKEV4
ZWN1dGlvbkVudmlyb25tZW50LmNhblVzZURPTSAmJiAnZG9jdW1lbnRNb2RlJyBpbiBkb2N1bWVu
dCkge1xuXHQgIGRvY3VtZW50TW9kZSA9IGRvY3VtZW50LmRvY3VtZW50TW9kZTtcblx0fVxuXHRc
blx0Ly8gV2Via2l0IG9mZmVycyBhIHZlcnkgdXNlZnVsIGB0ZXh0SW5wdXRgIGV2ZW50IHRoYXQg
Y2FuIGJlIHVzZWQgdG9cblx0Ly8gZGlyZWN0bHkgcmVwcmVzZW50IGBiZWZvcmVJbnB1dGAuIFRo
ZSBJRSBgdGV4dGlucHV0YCBldmVudCBpcyBub3QgYXNcblx0Ly8gdXNlZnVsLCBzbyB3ZSBkb24n
dCB1c2UgaXQuXG5cdHZhciBjYW5Vc2VUZXh0SW5wdXRFdmVudCA9IEV4ZWN1dGlvbkVudmlyb25t
ZW50LmNhblVzZURPTSAmJiAnVGV4dEV2ZW50JyBpbiB3aW5kb3cgJiYgIWRvY3VtZW50TW9kZSAm
JiAhaXNQcmVzdG8oKTtcblx0XG5cdC8vIEluIElFOSssIHdlIGhhdmUgYWNjZXNzIHRvIGNvbXBv
c2l0aW9uIGV2ZW50cywgYnV0IHRoZSBkYXRhIHN1cHBsaWVkXG5cdC8vIGJ5IHRoZSBuYXRpdmUg
Y29tcG9zaXRpb25lbmQgZXZlbnQgbWF5IGJlIGluY29ycmVjdC4gSmFwYW5lc2UgaWRlb2dyYXBo
aWNcblx0Ly8gc3BhY2VzLCBmb3IgaW5zdGFuY2UgKFxcdTMwMDApIGFyZSBub3QgcmVjb3JkZWQg
Y29ycmVjdGx5LlxuXHR2YXIgdXNlRmFsbGJhY2tDb21wb3NpdGlvbkRhdGEgPSBFeGVjdXRpb25F
bnZpcm9ubWVudC5jYW5Vc2VET00gJiYgKCFjYW5Vc2VDb21wb3NpdGlvbkV2ZW50IHx8IGRvY3Vt
ZW50TW9kZSAmJiBkb2N1bWVudE1vZGUgPiA4ICYmIGRvY3VtZW50TW9kZSA8PSAxMSk7XG5cdFxu
XHQvKipcblx0ICogT3BlcmEgPD0gMTIgaW5jbHVkZXMgVGV4dEV2ZW50IGluIHdpbmRvdywgYnV0
IGRvZXMgbm90IGZpcmVcblx0ICogdGV4dCBpbnB1dCBldmVudHMuIFJlbHkgb24ga2V5cHJlc3Mg
aW5zdGVhZC5cblx0ICovXG5cdGZ1bmN0aW9uIGlzUHJlc3RvKCkge1xuXHQgIHZhciBvcGVyYSA9
IHdpbmRvdy5vcGVyYTtcblx0ICByZXR1cm4gdHlwZW9mIG9wZXJhID09PSAnb2JqZWN0JyAmJiB0
eXBlb2Ygb3BlcmEudmVyc2lvbiA9PT0gJ2Z1bmN0aW9uJyAmJiBwYXJzZUludChvcGVyYS52ZXJz
aW9uKCksIDEwKSA8PSAxMjtcblx0fVxuXHRcblx0dmFyIFNQQUNFQkFSX0NPREUgPSAzMjtcblx0
dmFyIFNQQUNFQkFSX0NIQVIgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKFNQQUNFQkFSX0NPREUpO1xu
XHRcblx0Ly8gRXZlbnRzIGFuZCB0aGVpciBjb3JyZXNwb25kaW5nIHByb3BlcnR5IG5hbWVzLlxu
XHR2YXIgZXZlbnRUeXBlcyA9IHtcblx0ICBiZWZvcmVJbnB1dDoge1xuXHQgICAgcGhhc2VkUmVn
aXN0cmF0aW9uTmFtZXM6IHtcblx0ICAgICAgYnViYmxlZDogJ29uQmVmb3JlSW5wdXQnLFxuXHQg
ICAgICBjYXB0dXJlZDogJ29uQmVmb3JlSW5wdXRDYXB0dXJlJ1xuXHQgICAgfSxcblx0ICAgIGRl
cGVuZGVuY2llczogWyd0b3BDb21wb3NpdGlvbkVuZCcsICd0b3BLZXlQcmVzcycsICd0b3BUZXh0
SW5wdXQnLCAndG9wUGFzdGUnXVxuXHQgIH0sXG5cdCAgY29tcG9zaXRpb25FbmQ6IHtcblx0ICAg
IHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOiB7XG5cdCAgICAgIGJ1YmJsZWQ6ICdvbkNvbXBvc2l0
aW9uRW5kJyxcblx0ICAgICAgY2FwdHVyZWQ6ICdvbkNvbXBvc2l0aW9uRW5kQ2FwdHVyZSdcblx0
ICAgIH0sXG5cdCAgICBkZXBlbmRlbmNpZXM6IFsndG9wQmx1cicsICd0b3BDb21wb3NpdGlvbkVu
ZCcsICd0b3BLZXlEb3duJywgJ3RvcEtleVByZXNzJywgJ3RvcEtleVVwJywgJ3RvcE1vdXNlRG93
biddXG5cdCAgfSxcblx0ICBjb21wb3NpdGlvblN0YXJ0OiB7XG5cdCAgICBwaGFzZWRSZWdpc3Ry
YXRpb25OYW1lczoge1xuXHQgICAgICBidWJibGVkOiAnb25Db21wb3NpdGlvblN0YXJ0Jyxcblx0
ICAgICAgY2FwdHVyZWQ6ICdvbkNvbXBvc2l0aW9uU3RhcnRDYXB0dXJlJ1xuXHQgICAgfSxcblx0
ICAgIGRlcGVuZGVuY2llczogWyd0b3BCbHVyJywgJ3RvcENvbXBvc2l0aW9uU3RhcnQnLCAndG9w
S2V5RG93bicsICd0b3BLZXlQcmVzcycsICd0b3BLZXlVcCcsICd0b3BNb3VzZURvd24nXVxuXHQg
IH0sXG5cdCAgY29tcG9zaXRpb25VcGRhdGU6IHtcblx0ICAgIHBoYXNlZFJlZ2lzdHJhdGlvbk5h
bWVzOiB7XG5cdCAgICAgIGJ1YmJsZWQ6ICdvbkNvbXBvc2l0aW9uVXBkYXRlJyxcblx0ICAgICAg
Y2FwdHVyZWQ6ICdvbkNvbXBvc2l0aW9uVXBkYXRlQ2FwdHVyZSdcblx0ICAgIH0sXG5cdCAgICBk
ZXBlbmRlbmNpZXM6IFsndG9wQmx1cicsICd0b3BDb21wb3NpdGlvblVwZGF0ZScsICd0b3BLZXlE
b3duJywgJ3RvcEtleVByZXNzJywgJ3RvcEtleVVwJywgJ3RvcE1vdXNlRG93biddXG5cdCAgfVxu
XHR9O1xuXHRcblx0Ly8gVHJhY2sgd2hldGhlciB3ZSd2ZSBldmVyIGhhbmRsZWQgYSBrZXlwcmVz
cyBvbiB0aGUgc3BhY2Uga2V5LlxuXHR2YXIgaGFzU3BhY2VLZXlwcmVzcyA9IGZhbHNlO1xuXHRc
blx0LyoqXG5cdCAqIFJldHVybiB3aGV0aGVyIGEgbmF0aXZlIGtleXByZXNzIGV2ZW50IGlzIGFz
c3VtZWQgdG8gYmUgYSBjb21tYW5kLlxuXHQgKiBUaGlzIGlzIHJlcXVpcmVkIGJlY2F1c2UgRmly
ZWZveCBmaXJlcyBga2V5cHJlc3NgIGV2ZW50cyBmb3Iga2V5IGNvbW1hbmRzXG5cdCAqIChjdXQs
IGNvcHksIHNlbGVjdC1hbGwsIGV0Yy4pIGV2ZW4gdGhvdWdoIG5vIGNoYXJhY3RlciBpcyBpbnNl
cnRlZC5cblx0ICovXG5cdGZ1bmN0aW9uIGlzS2V5cHJlc3NDb21tYW5kKG5hdGl2ZUV2ZW50KSB7
XG5cdCAgcmV0dXJuIChuYXRpdmVFdmVudC5jdHJsS2V5IHx8IG5hdGl2ZUV2ZW50LmFsdEtleSB8
fCBuYXRpdmVFdmVudC5tZXRhS2V5KSAmJlxuXHQgIC8vIGN0cmxLZXkgJiYgYWx0S2V5IGlzIGVx
dWl2YWxlbnQgdG8gQWx0R3IsIGFuZCBpcyBub3QgYSBjb21tYW5kLlxuXHQgICEobmF0aXZlRXZl
bnQuY3RybEtleSAmJiBuYXRpdmVFdmVudC5hbHRLZXkpO1xuXHR9XG5cdFxuXHQvKipcblx0ICog
VHJhbnNsYXRlIG5hdGl2ZSB0b3AgbGV2ZWwgZXZlbnRzIGludG8gZXZlbnQgdHlwZXMuXG5cdCAq
XG5cdCAqIEBwYXJhbSB7c3RyaW5nfSB0b3BMZXZlbFR5cGVcblx0ICogQHJldHVybiB7b2JqZWN0
fVxuXHQgKi9cblx0ZnVuY3Rpb24gZ2V0Q29tcG9zaXRpb25FdmVudFR5cGUodG9wTGV2ZWxUeXBl
KSB7XG5cdCAgc3dpdGNoICh0b3BMZXZlbFR5cGUpIHtcblx0ICAgIGNhc2UgJ3RvcENvbXBvc2l0
aW9uU3RhcnQnOlxuXHQgICAgICByZXR1cm4gZXZlbnRUeXBlcy5jb21wb3NpdGlvblN0YXJ0O1xu
XHQgICAgY2FzZSAndG9wQ29tcG9zaXRpb25FbmQnOlxuXHQgICAgICByZXR1cm4gZXZlbnRUeXBl
cy5jb21wb3NpdGlvbkVuZDtcblx0ICAgIGNhc2UgJ3RvcENvbXBvc2l0aW9uVXBkYXRlJzpcblx0
ICAgICAgcmV0dXJuIGV2ZW50VHlwZXMuY29tcG9zaXRpb25VcGRhdGU7XG5cdCAgfVxuXHR9XG5c
dFxuXHQvKipcblx0ICogRG9lcyBvdXIgZmFsbGJhY2sgYmVzdC1ndWVzcyBtb2RlbCB0aGluayB0
aGlzIGV2ZW50IHNpZ25pZmllcyB0aGF0XG5cdCAqIGNvbXBvc2l0aW9uIGhhcyBiZWd1bj9cblx0
ICpcblx0ICogQHBhcmFtIHtzdHJpbmd9IHRvcExldmVsVHlwZVxuXHQgKiBAcGFyYW0ge29iamVj
dH0gbmF0aXZlRXZlbnRcblx0ICogQHJldHVybiB7Ym9vbGVhbn1cblx0ICovXG5cdGZ1bmN0aW9u
IGlzRmFsbGJhY2tDb21wb3NpdGlvblN0YXJ0KHRvcExldmVsVHlwZSwgbmF0aXZlRXZlbnQpIHtc
blx0ICByZXR1cm4gdG9wTGV2ZWxUeXBlID09PSAndG9wS2V5RG93bicgJiYgbmF0aXZlRXZlbnQu
a2V5Q29kZSA9PT0gU1RBUlRfS0VZQ09ERTtcblx0fVxuXHRcblx0LyoqXG5cdCAqIERvZXMgb3Vy
IGZhbGxiYWNrIG1vZGUgdGhpbmsgdGhhdCB0aGlzIGV2ZW50IGlzIHRoZSBlbmQgb2YgY29tcG9z
aXRpb24/XG5cdCAqXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSB0b3BMZXZlbFR5cGVcblx0ICogQHBh
cmFtIHtvYmplY3R9IG5hdGl2ZUV2ZW50XG5cdCAqIEByZXR1cm4ge2Jvb2xlYW59XG5cdCAqL1xu
XHRmdW5jdGlvbiBpc0ZhbGxiYWNrQ29tcG9zaXRpb25FbmQodG9wTGV2ZWxUeXBlLCBuYXRpdmVF
dmVudCkge1xuXHQgIHN3aXRjaCAodG9wTGV2ZWxUeXBlKSB7XG5cdCAgICBjYXNlICd0b3BLZXlV
cCc6XG5cdCAgICAgIC8vIENvbW1hbmQga2V5cyBpbnNlcnQgb3IgY2xlYXIgSU1FIGlucHV0Llxu
XHQgICAgICByZXR1cm4gRU5EX0tFWUNPREVTLmluZGV4T2YobmF0aXZlRXZlbnQua2V5Q29kZSkg
IT09IC0xO1xuXHQgICAgY2FzZSAndG9wS2V5RG93bic6XG5cdCAgICAgIC8vIEV4cGVjdCBJTUUg
a2V5Q29kZSBvbiBlYWNoIGtleWRvd24uIElmIHdlIGdldCBhbnkgb3RoZXJcblx0ICAgICAgLy8g
Y29kZSB3ZSBtdXN0IGhhdmUgZXhpdGVkIGVhcmxpZXIuXG5cdCAgICAgIHJldHVybiBuYXRpdmVF
dmVudC5rZXlDb2RlICE9PSBTVEFSVF9LRVlDT0RFO1xuXHQgICAgY2FzZSAndG9wS2V5UHJlc3Mn
OlxuXHQgICAgY2FzZSAndG9wTW91c2VEb3duJzpcblx0ICAgIGNhc2UgJ3RvcEJsdXInOlxuXHQg
ICAgICAvLyBFdmVudHMgYXJlIG5vdCBwb3NzaWJsZSB3aXRob3V0IGNhbmNlbGxpbmcgSU1FLlxu
XHQgICAgICByZXR1cm4gdHJ1ZTtcblx0ICAgIGRlZmF1bHQ6XG5cdCAgICAgIHJldHVybiBmYWxz
ZTtcblx0ICB9XG5cdH1cblx0XG5cdC8qKlxuXHQgKiBHb29nbGUgSW5wdXQgVG9vbHMgcHJvdmlk
ZXMgY29tcG9zaXRpb24gZGF0YSB2aWEgYSBDdXN0b21FdmVudCxcblx0ICogd2l0aCB0aGUgYGRh
dGFgIHByb3BlcnR5IHBvcHVsYXRlZCBpbiB0aGUgYGRldGFpbGAgb2JqZWN0LiBJZiB0aGlzXG5c
dCAqIGlzIGF2YWlsYWJsZSBvbiB0aGUgZXZlbnQgb2JqZWN0LCB1c2UgaXQuIElmIG5vdCwgdGhp
cyBpcyBhIHBsYWluXG5cdCAqIGNvbXBvc2l0aW9uIGV2ZW50IGFuZCB3ZSBoYXZlIG5vdGhpbmcg
c3BlY2lhbCB0byBleHRyYWN0LlxuXHQgKlxuXHQgKiBAcGFyYW0ge29iamVjdH0gbmF0aXZlRXZl
bnRcblx0ICogQHJldHVybiB7P3N0cmluZ31cblx0ICovXG5cdGZ1bmN0aW9uIGdldERhdGFGcm9t
Q3VzdG9tRXZlbnQobmF0aXZlRXZlbnQpIHtcblx0ICB2YXIgZGV0YWlsID0gbmF0aXZlRXZlbnQu
ZGV0YWlsO1xuXHQgIGlmICh0eXBlb2YgZGV0YWlsID09PSAnb2JqZWN0JyAmJiAnZGF0YScgaW4g
ZGV0YWlsKSB7XG5cdCAgICByZXR1cm4gZGV0YWlsLmRhdGE7XG5cdCAgfVxuXHQgIHJldHVybiBu
dWxsO1xuXHR9XG5cdFxuXHQvLyBUcmFjayB0aGUgY3VycmVudCBJTUUgY29tcG9zaXRpb24gZmFs
bGJhY2sgb2JqZWN0LCBpZiBhbnkuXG5cdHZhciBjdXJyZW50Q29tcG9zaXRpb24gPSBudWxsO1xu
XHRcblx0LyoqXG5cdCAqIEByZXR1cm4gez9vYmplY3R9IEEgU3ludGhldGljQ29tcG9zaXRpb25F
dmVudC5cblx0ICovXG5cdGZ1bmN0aW9uIGV4dHJhY3RDb21wb3NpdGlvbkV2ZW50KHRvcExldmVs
VHlwZSwgdGFyZ2V0SW5zdCwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KSB7XG5cdCAg
dmFyIGV2ZW50VHlwZTtcblx0ICB2YXIgZmFsbGJhY2tEYXRhO1xuXHRcblx0ICBpZiAoY2FuVXNl
Q29tcG9zaXRpb25FdmVudCkge1xuXHQgICAgZXZlbnRUeXBlID0gZ2V0Q29tcG9zaXRpb25FdmVu
dFR5cGUodG9wTGV2ZWxUeXBlKTtcblx0ICB9IGVsc2UgaWYgKCFjdXJyZW50Q29tcG9zaXRpb24p
IHtcblx0ICAgIGlmIChpc0ZhbGxiYWNrQ29tcG9zaXRpb25TdGFydCh0b3BMZXZlbFR5cGUsIG5h
dGl2ZUV2ZW50KSkge1xuXHQgICAgICBldmVudFR5cGUgPSBldmVudFR5cGVzLmNvbXBvc2l0aW9u
U3RhcnQ7XG5cdCAgICB9XG5cdCAgfSBlbHNlIGlmIChpc0ZhbGxiYWNrQ29tcG9zaXRpb25FbmQo
dG9wTGV2ZWxUeXBlLCBuYXRpdmVFdmVudCkpIHtcblx0ICAgIGV2ZW50VHlwZSA9IGV2ZW50VHlw
ZXMuY29tcG9zaXRpb25FbmQ7XG5cdCAgfVxuXHRcblx0ICBpZiAoIWV2ZW50VHlwZSkge1xuXHQg
ICAgcmV0dXJuIG51bGw7XG5cdCAgfVxuXHRcblx0ICBpZiAodXNlRmFsbGJhY2tDb21wb3NpdGlv
bkRhdGEpIHtcblx0ICAgIC8vIFRoZSBjdXJyZW50IGNvbXBvc2l0aW9uIGlzIHN0b3JlZCBzdGF0
aWNhbGx5IGFuZCBtdXN0IG5vdCBiZVxuXHQgICAgLy8gb3ZlcndyaXR0ZW4gd2hpbGUgY29tcG9z
aXRpb24gY29udGludWVzLlxuXHQgICAgaWYgKCFjdXJyZW50Q29tcG9zaXRpb24gJiYgZXZlbnRU
eXBlID09PSBldmVudFR5cGVzLmNvbXBvc2l0aW9uU3RhcnQpIHtcblx0ICAgICAgY3VycmVudENv
bXBvc2l0aW9uID0gRmFsbGJhY2tDb21wb3NpdGlvblN0YXRlLmdldFBvb2xlZChuYXRpdmVFdmVu
dFRhcmdldCk7XG5cdCAgICB9IGVsc2UgaWYgKGV2ZW50VHlwZSA9PT0gZXZlbnRUeXBlcy5jb21w
b3NpdGlvbkVuZCkge1xuXHQgICAgICBpZiAoY3VycmVudENvbXBvc2l0aW9uKSB7XG5cdCAgICAg
ICAgZmFsbGJhY2tEYXRhID0gY3VycmVudENvbXBvc2l0aW9uLmdldERhdGEoKTtcblx0ICAgICAg
fVxuXHQgICAgfVxuXHQgIH1cblx0XG5cdCAgdmFyIGV2ZW50ID0gU3ludGhldGljQ29tcG9zaXRp
b25FdmVudC5nZXRQb29sZWQoZXZlbnRUeXBlLCB0YXJnZXRJbnN0LCBuYXRpdmVFdmVudCwgbmF0
aXZlRXZlbnRUYXJnZXQpO1xuXHRcblx0ICBpZiAoZmFsbGJhY2tEYXRhKSB7XG5cdCAgICAvLyBJ
bmplY3QgZGF0YSBnZW5lcmF0ZWQgZnJvbSBmYWxsYmFjayBwYXRoIGludG8gdGhlIHN5bnRoZXRp
YyBldmVudC5cblx0ICAgIC8vIFRoaXMgbWF0Y2hlcyB0aGUgcHJvcGVydHkgb2YgbmF0aXZlIENv
bXBvc2l0aW9uRXZlbnRJbnRlcmZhY2UuXG5cdCAgICBldmVudC5kYXRhID0gZmFsbGJhY2tEYXRh
O1xuXHQgIH0gZWxzZSB7XG5cdCAgICB2YXIgY3VzdG9tRGF0YSA9IGdldERhdGFGcm9tQ3VzdG9t
RXZlbnQobmF0aXZlRXZlbnQpO1xuXHQgICAgaWYgKGN1c3RvbURhdGEgIT09IG51bGwpIHtcblx0
ICAgICAgZXZlbnQuZGF0YSA9IGN1c3RvbURhdGE7XG5cdCAgICB9XG5cdCAgfVxuXHRcblx0ICBF
dmVudFByb3BhZ2F0b3JzLmFjY3VtdWxhdGVUd29QaGFzZURpc3BhdGNoZXMoZXZlbnQpO1xuXHQg
IHJldHVybiBldmVudDtcblx0fVxuXHRcblx0LyoqXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSB0b3BM
ZXZlbFR5cGUgUmVjb3JkIGZyb20gYEV2ZW50Q29uc3RhbnRzYC5cblx0ICogQHBhcmFtIHtvYmpl
Y3R9IG5hdGl2ZUV2ZW50IE5hdGl2ZSBicm93c2VyIGV2ZW50LlxuXHQgKiBAcmV0dXJuIHs/c3Ry
aW5nfSBUaGUgc3RyaW5nIGNvcnJlc3BvbmRpbmcgdG8gdGhpcyBgYmVmb3JlSW5wdXRgIGV2ZW50
LlxuXHQgKi9cblx0ZnVuY3Rpb24gZ2V0TmF0aXZlQmVmb3JlSW5wdXRDaGFycyh0b3BMZXZlbFR5
cGUsIG5hdGl2ZUV2ZW50KSB7XG5cdCAgc3dpdGNoICh0b3BMZXZlbFR5cGUpIHtcblx0ICAgIGNh
c2UgJ3RvcENvbXBvc2l0aW9uRW5kJzpcblx0ICAgICAgcmV0dXJuIGdldERhdGFGcm9tQ3VzdG9t
RXZlbnQobmF0aXZlRXZlbnQpO1xuXHQgICAgY2FzZSAndG9wS2V5UHJlc3MnOlxuXHQgICAgICAv
Kipcblx0ICAgICAgICogSWYgbmF0aXZlIGB0ZXh0SW5wdXRgIGV2ZW50cyBhcmUgYXZhaWxhYmxl
LCBvdXIgZ29hbCBpcyB0byBtYWtlXG5cdCAgICAgICAqIHVzZSBvZiB0aGVtLiBIb3dldmVyLCB0
aGVyZSBpcyBhIHNwZWNpYWwgY2FzZTogdGhlIHNwYWNlYmFyIGtleS5cblx0ICAgICAgICogSW4g
V2Via2l0LCBwcmV2ZW50aW5nIGRlZmF1bHQgb24gYSBzcGFjZWJhciBgdGV4dElucHV0YCBldmVu
dFxuXHQgICAgICAgKiBjYW5jZWxzIGNoYXJhY3RlciBpbnNlcnRpb24sIGJ1dCBpdCAqYWxzbyog
Y2F1c2VzIHRoZSBicm93c2VyXG5cdCAgICAgICAqIHRvIGZhbGwgYmFjayB0byBpdHMgZGVmYXVs
dCBzcGFjZWJhciBiZWhhdmlvciBvZiBzY3JvbGxpbmcgdGhlXG5cdCAgICAgICAqIHBhZ2UuXG5c
dCAgICAgICAqXG5cdCAgICAgICAqIFRyYWNraW5nIGF0OlxuXHQgICAgICAgKiBodHRwczovL2Nv
ZGUuZ29vZ2xlLmNvbS9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9MzU1MTAzXG5cdCAgICAg
ICAqXG5cdCAgICAgICAqIFRvIGF2b2lkIHRoaXMgaXNzdWUsIHVzZSB0aGUga2V5cHJlc3MgZXZl
bnQgYXMgaWYgbm8gYHRleHRJbnB1dGBcblx0ICAgICAgICogZXZlbnQgaXMgYXZhaWxhYmxlLlxu
XHQgICAgICAgKi9cblx0ICAgICAgdmFyIHdoaWNoID0gbmF0aXZlRXZlbnQud2hpY2g7XG5cdCAg
ICAgIGlmICh3aGljaCAhPT0gU1BBQ0VCQVJfQ09ERSkge1xuXHQgICAgICAgIHJldHVybiBudWxs
O1xuXHQgICAgICB9XG5cdFxuXHQgICAgICBoYXNTcGFjZUtleXByZXNzID0gdHJ1ZTtcblx0ICAg
ICAgcmV0dXJuIFNQQUNFQkFSX0NIQVI7XG5cdFxuXHQgICAgY2FzZSAndG9wVGV4dElucHV0Jzpc
blx0ICAgICAgLy8gUmVjb3JkIHRoZSBjaGFyYWN0ZXJzIHRvIGJlIGFkZGVkIHRvIHRoZSBET00u
XG5cdCAgICAgIHZhciBjaGFycyA9IG5hdGl2ZUV2ZW50LmRhdGE7XG5cdFxuXHQgICAgICAvLyBJ
ZiBpdCdzIGEgc3BhY2ViYXIgY2hhcmFjdGVyLCBhc3N1bWUgdGhhdCB3ZSBoYXZlIGFscmVhZHkg
aGFuZGxlZFxuXHQgICAgICAvLyBpdCBhdCB0aGUga2V5cHJlc3MgbGV2ZWwgYW5kIGJhaWwgaW1t
ZWRpYXRlbHkuIEFuZHJvaWQgQ2hyb21lXG5cdCAgICAgIC8vIGRvZXNuJ3QgZ2l2ZSB1cyBrZXlj
b2Rlcywgc28gd2UgbmVlZCB0byBibGFja2xpc3QgaXQuXG5cdCAgICAgIGlmIChjaGFycyA9PT0g
U1BBQ0VCQVJfQ0hBUiAmJiBoYXNTcGFjZUtleXByZXNzKSB7XG5cdCAgICAgICAgcmV0dXJuIG51
bGw7XG5cdCAgICAgIH1cblx0XG5cdCAgICAgIHJldHVybiBjaGFycztcblx0XG5cdCAgICBkZWZh
dWx0OlxuXHQgICAgICAvLyBGb3Igb3RoZXIgbmF0aXZlIGV2ZW50IHR5cGVzLCBkbyBub3RoaW5n
LlxuXHQgICAgICByZXR1cm4gbnVsbDtcblx0ICB9XG5cdH1cblx0XG5cdC8qKlxuXHQgKiBGb3Ig
YnJvd3NlcnMgdGhhdCBkbyBub3QgcHJvdmlkZSB0aGUgYHRleHRJbnB1dGAgZXZlbnQsIGV4dHJh
Y3QgdGhlXG5cdCAqIGFwcHJvcHJpYXRlIHN0cmluZyB0byB1c2UgZm9yIFN5bnRoZXRpY0lucHV0
RXZlbnQuXG5cdCAqXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSB0b3BMZXZlbFR5cGUgUmVjb3JkIGZy
b20gYEV2ZW50Q29uc3RhbnRzYC5cblx0ICogQHBhcmFtIHtvYmplY3R9IG5hdGl2ZUV2ZW50IE5h
dGl2ZSBicm93c2VyIGV2ZW50LlxuXHQgKiBAcmV0dXJuIHs/c3RyaW5nfSBUaGUgZmFsbGJhY2sg
c3RyaW5nIGZvciB0aGlzIGBiZWZvcmVJbnB1dGAgZXZlbnQuXG5cdCAqL1xuXHRmdW5jdGlvbiBn
ZXRGYWxsYmFja0JlZm9yZUlucHV0Q2hhcnModG9wTGV2ZWxUeXBlLCBuYXRpdmVFdmVudCkge1xu
XHQgIC8vIElmIHdlIGFyZSBjdXJyZW50bHkgY29tcG9zaW5nIChJTUUpIGFuZCB1c2luZyBhIGZh
bGxiYWNrIHRvIGRvIHNvLFxuXHQgIC8vIHRyeSB0byBleHRyYWN0IHRoZSBjb21wb3NlZCBjaGFy
YWN0ZXJzIGZyb20gdGhlIGZhbGxiYWNrIG9iamVjdC5cblx0ICAvLyBJZiBjb21wb3NpdGlvbiBl
dmVudCBpcyBhdmFpbGFibGUsIHdlIGV4dHJhY3QgYSBzdHJpbmcgb25seSBhdFxuXHQgIC8vIGNv
bXBvc2l0aW9uZXZlbnQsIG90aGVyd2lzZSBleHRyYWN0IGl0IGF0IGZhbGxiYWNrIGV2ZW50cy5c
blx0ICBpZiAoY3VycmVudENvbXBvc2l0aW9uKSB7XG5cdCAgICBpZiAodG9wTGV2ZWxUeXBlID09
PSAndG9wQ29tcG9zaXRpb25FbmQnIHx8ICFjYW5Vc2VDb21wb3NpdGlvbkV2ZW50ICYmIGlzRmFs
bGJhY2tDb21wb3NpdGlvbkVuZCh0b3BMZXZlbFR5cGUsIG5hdGl2ZUV2ZW50KSkge1xuXHQgICAg
ICB2YXIgY2hhcnMgPSBjdXJyZW50Q29tcG9zaXRpb24uZ2V0RGF0YSgpO1xuXHQgICAgICBGYWxs
YmFja0NvbXBvc2l0aW9uU3RhdGUucmVsZWFzZShjdXJyZW50Q29tcG9zaXRpb24pO1xuXHQgICAg
ICBjdXJyZW50Q29tcG9zaXRpb24gPSBudWxsO1xuXHQgICAgICByZXR1cm4gY2hhcnM7XG5cdCAg
ICB9XG5cdCAgICByZXR1cm4gbnVsbDtcblx0ICB9XG5cdFxuXHQgIHN3aXRjaCAodG9wTGV2ZWxU
eXBlKSB7XG5cdCAgICBjYXNlICd0b3BQYXN0ZSc6XG5cdCAgICAgIC8vIElmIGEgcGFzdGUgZXZl
bnQgb2NjdXJzIGFmdGVyIGEga2V5cHJlc3MsIHRocm93IG91dCB0aGUgaW5wdXRcblx0ICAgICAg
Ly8gY2hhcnMuIFBhc3RlIGV2ZW50cyBzaG91bGQgbm90IGxlYWQgdG8gQmVmb3JlSW5wdXQgZXZl
bnRzLlxuXHQgICAgICByZXR1cm4gbnVsbDtcblx0ICAgIGNhc2UgJ3RvcEtleVByZXNzJzpcblx0
ICAgICAgLyoqXG5cdCAgICAgICAqIEFzIG9mIHYyNywgRmlyZWZveCBtYXkgZmlyZSBrZXlwcmVz
cyBldmVudHMgZXZlbiB3aGVuIG5vIGNoYXJhY3RlclxuXHQgICAgICAgKiB3aWxsIGJlIGluc2Vy
dGVkLiBBIGZldyBwb3NzaWJpbGl0aWVzOlxuXHQgICAgICAgKlxuXHQgICAgICAgKiAtIGB3aGlj
aGAgaXMgYDBgLiBBcnJvdyBrZXlzLCBFc2Mga2V5LCBldGMuXG5cdCAgICAgICAqXG5cdCAgICAg
ICAqIC0gYHdoaWNoYCBpcyB0aGUgcHJlc3NlZCBrZXkgY29kZSwgYnV0IG5vIGNoYXIgaXMgYXZh
aWxhYmxlLlxuXHQgICAgICAgKiAgIEV4OiAnQWx0R3IgKyBkYCBpbiBQb2xpc2guIFRoZXJlIGlz
IG5vIG1vZGlmaWVkIGNoYXJhY3RlciBmb3Jcblx0ICAgICAgICogICB0aGlzIGtleSBjb21iaW5h
dGlvbiBhbmQgbm8gY2hhcmFjdGVyIGlzIGluc2VydGVkIGludG8gdGhlXG5cdCAgICAgICAqICAg
ZG9jdW1lbnQsIGJ1dCBGRiBmaXJlcyB0aGUga2V5cHJlc3MgZm9yIGNoYXIgY29kZSBgMTAwYCBh
bnl3YXkuXG5cdCAgICAgICAqICAgTm8gYGlucHV0YCBldmVudCB3aWxsIG9jY3VyLlxuXHQgICAg
ICAgKlxuXHQgICAgICAgKiAtIGB3aGljaGAgaXMgdGhlIHByZXNzZWQga2V5IGNvZGUsIGJ1dCBh
IGNvbW1hbmQgY29tYmluYXRpb24gaXNcblx0ICAgICAgICogICBiZWluZyB1c2VkLiBFeDogYENt
ZCtDYC4gTm8gY2hhcmFjdGVyIGlzIGluc2VydGVkLCBhbmQgbm9cblx0ICAgICAgICogICBgaW5w
dXRgIGV2ZW50IHdpbGwgb2NjdXIuXG5cdCAgICAgICAqL1xuXHQgICAgICBpZiAobmF0aXZlRXZl
bnQud2hpY2ggJiYgIWlzS2V5cHJlc3NDb21tYW5kKG5hdGl2ZUV2ZW50KSkge1xuXHQgICAgICAg
IHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKG5hdGl2ZUV2ZW50LndoaWNoKTtcblx0ICAgICAg
fVxuXHQgICAgICByZXR1cm4gbnVsbDtcblx0ICAgIGNhc2UgJ3RvcENvbXBvc2l0aW9uRW5kJzpc
blx0ICAgICAgcmV0dXJuIHVzZUZhbGxiYWNrQ29tcG9zaXRpb25EYXRhID8gbnVsbCA6IG5hdGl2
ZUV2ZW50LmRhdGE7XG5cdCAgICBkZWZhdWx0OlxuXHQgICAgICByZXR1cm4gbnVsbDtcblx0ICB9
XG5cdH1cblx0XG5cdC8qKlxuXHQgKiBFeHRyYWN0IGEgU3ludGhldGljSW5wdXRFdmVudCBmb3Ig
YGJlZm9yZUlucHV0YCwgYmFzZWQgb24gZWl0aGVyIG5hdGl2ZVxuXHQgKiBgdGV4dElucHV0YCBv
ciBmYWxsYmFjayBiZWhhdmlvci5cblx0ICpcblx0ICogQHJldHVybiB7P29iamVjdH0gQSBTeW50
aGV0aWNJbnB1dEV2ZW50LlxuXHQgKi9cblx0ZnVuY3Rpb24gZXh0cmFjdEJlZm9yZUlucHV0RXZl
bnQodG9wTGV2ZWxUeXBlLCB0YXJnZXRJbnN0LCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJn
ZXQpIHtcblx0ICB2YXIgY2hhcnM7XG5cdFxuXHQgIGlmIChjYW5Vc2VUZXh0SW5wdXRFdmVudCkg
e1xuXHQgICAgY2hhcnMgPSBnZXROYXRpdmVCZWZvcmVJbnB1dENoYXJzKHRvcExldmVsVHlwZSwg
bmF0aXZlRXZlbnQpO1xuXHQgIH0gZWxzZSB7XG5cdCAgICBjaGFycyA9IGdldEZhbGxiYWNrQmVm
b3JlSW5wdXRDaGFycyh0b3BMZXZlbFR5cGUsIG5hdGl2ZUV2ZW50KTtcblx0ICB9XG5cdFxuXHQg
IC8vIElmIG5vIGNoYXJhY3RlcnMgYXJlIGJlaW5nIGluc2VydGVkLCBubyBCZWZvcmVJbnB1dCBl
dmVudCBzaG91bGRcblx0ICAvLyBiZSBmaXJlZC5cblx0ICBpZiAoIWNoYXJzKSB7XG5cdCAgICBy
ZXR1cm4gbnVsbDtcblx0ICB9XG5cdFxuXHQgIHZhciBldmVudCA9IFN5bnRoZXRpY0lucHV0RXZl
bnQuZ2V0UG9vbGVkKGV2ZW50VHlwZXMuYmVmb3JlSW5wdXQsIHRhcmdldEluc3QsIG5hdGl2ZUV2
ZW50LCBuYXRpdmVFdmVudFRhcmdldCk7XG5cdFxuXHQgIGV2ZW50LmRhdGEgPSBjaGFycztcblx0
ICBFdmVudFByb3BhZ2F0b3JzLmFjY3VtdWxhdGVUd29QaGFzZURpc3BhdGNoZXMoZXZlbnQpO1xu
XHQgIHJldHVybiBldmVudDtcblx0fVxuXHRcblx0LyoqXG5cdCAqIENyZWF0ZSBhbiBgb25CZWZv
cmVJbnB1dGAgZXZlbnQgdG8gbWF0Y2hcblx0ICogaHR0cDovL3d3dy53My5vcmcvVFIvMjAxMy9X
RC1ET00tTGV2ZWwtMy1FdmVudHMtMjAxMzExMDUvI2V2ZW50cy1pbnB1dGV2ZW50cy5cblx0ICpc
blx0ICogVGhpcyBldmVudCBwbHVnaW4gaXMgYmFzZWQgb24gdGhlIG5hdGl2ZSBgdGV4dElucHV0
YCBldmVudFxuXHQgKiBhdmFpbGFibGUgaW4gQ2hyb21lLCBTYWZhcmksIE9wZXJhLCBhbmQgSUUu
IFRoaXMgZXZlbnQgZmlyZXMgYWZ0ZXJcblx0ICogYG9uS2V5UHJlc3NgIGFuZCBgb25Db21wb3Np
dGlvbkVuZGAsIGJ1dCBiZWZvcmUgYG9uSW5wdXRgLlxuXHQgKlxuXHQgKiBgYmVmb3JlSW5wdXRg
IGlzIHNwZWMnZCBidXQgbm90IGltcGxlbWVudGVkIGluIGFueSBicm93c2VycywgYW5kXG5cdCAq
IHRoZSBgaW5wdXRgIGV2ZW50IGRvZXMgbm90IHByb3ZpZGUgYW55IHVzZWZ1bCBpbmZvcm1hdGlv
biBhYm91dCB3aGF0IGhhc1xuXHQgKiBhY3R1YWxseSBiZWVuIGFkZGVkLCBjb250cmFyeSB0byB0
aGUgc3BlYy4gVGh1cywgYHRleHRJbnB1dGAgaXMgdGhlIGJlc3Rcblx0ICogYXZhaWxhYmxlIGV2
ZW50IHRvIGlkZW50aWZ5IHRoZSBjaGFyYWN0ZXJzIHRoYXQgaGF2ZSBhY3R1YWxseSBiZWVuIGlu
c2VydGVkXG5cdCAqIGludG8gdGhlIHRhcmdldCBub2RlLlxuXHQgKlxuXHQgKiBUaGlzIHBsdWdp
biBpcyBhbHNvIHJlc3BvbnNpYmxlIGZvciBlbWl0dGluZyBgY29tcG9zaXRpb25gIGV2ZW50cywg
dGh1c1xuXHQgKiBhbGxvd2luZyB1cyB0byBzaGFyZSBjb21wb3NpdGlvbiBmYWxsYmFjayBjb2Rl
IGZvciBib3RoIGBiZWZvcmVJbnB1dGAgYW5kXG5cdCAqIGBjb21wb3NpdGlvbmAgZXZlbnQgdHlw
ZXMuXG5cdCAqL1xuXHR2YXIgQmVmb3JlSW5wdXRFdmVudFBsdWdpbiA9IHtcblx0ICBldmVudFR5
cGVzOiBldmVudFR5cGVzLFxuXHRcblx0ICBleHRyYWN0RXZlbnRzOiBmdW5jdGlvbiAodG9wTGV2
ZWxUeXBlLCB0YXJnZXRJbnN0LCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpIHtcblx0
ICAgIHJldHVybiBbZXh0cmFjdENvbXBvc2l0aW9uRXZlbnQodG9wTGV2ZWxUeXBlLCB0YXJnZXRJ
bnN0LCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpLCBleHRyYWN0QmVmb3JlSW5wdXRF
dmVudCh0b3BMZXZlbFR5cGUsIHRhcmdldEluc3QsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRh
cmdldCldO1xuXHQgIH1cblx0fTtcblx0XG5cdG1vZHVsZS5leHBvcnRzID0gQmVmb3JlSW5wdXRF
dmVudFBsdWdpbjtcblxuLyoqKi8gfSxcbi8qIDEyNyAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxl
LCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0LyoqXG5cdCAqIENvcHlyaWdo
dCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQu
XG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1z
dHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qg
ZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICog
b2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUg
c2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqL1xuXHRcblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0
dmFyIENTU1Byb3BlcnR5ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1OCk7XG5cdHZhciBFeGVjdXRp
b25FbnZpcm9ubWVudCA9IF9fd2VicGFja19yZXF1aXJlX18oNik7XG5cdHZhciBSZWFjdEluc3Ry
dW1lbnRhdGlvbiA9IF9fd2VicGFja19yZXF1aXJlX18oOCk7XG5cdFxuXHR2YXIgY2FtZWxpemVT
dHlsZU5hbWUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDk5KTtcblx0dmFyIGRhbmdlcm91c1N0eWxl
VmFsdWUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE3OCk7XG5cdHZhciBoeXBoZW5hdGVTdHlsZU5h
bWUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEwNik7XG5cdHZhciBtZW1vaXplU3RyaW5nT25seSA9
IF9fd2VicGFja19yZXF1aXJlX18oMTA5KTtcblx0dmFyIHdhcm5pbmcgPSBfX3dlYnBhY2tfcmVx
dWlyZV9fKDIpO1xuXHRcblx0dmFyIHByb2Nlc3NTdHlsZU5hbWUgPSBtZW1vaXplU3RyaW5nT25s
eShmdW5jdGlvbiAoc3R5bGVOYW1lKSB7XG5cdCAgcmV0dXJuIGh5cGhlbmF0ZVN0eWxlTmFtZShz
dHlsZU5hbWUpO1xuXHR9KTtcblx0XG5cdHZhciBoYXNTaG9ydGhhbmRQcm9wZXJ0eUJ1ZyA9IGZh
bHNlO1xuXHR2YXIgc3R5bGVGbG9hdEFjY2Vzc29yID0gJ2Nzc0Zsb2F0Jztcblx0aWYgKEV4ZWN1
dGlvbkVudmlyb25tZW50LmNhblVzZURPTSkge1xuXHQgIHZhciB0ZW1wU3R5bGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCdkaXYnKS5zdHlsZTtcblx0ICB0cnkge1xuXHQgICAgLy8gSUU4IHRo
cm93cyBcIkludmFsaWQgYXJndW1lbnQuXCIgaWYgcmVzZXR0aW5nIHNob3J0aGFuZCBzdHlsZSBw
cm9wZXJ0aWVzLlxuXHQgICAgdGVtcFN0eWxlLmZvbnQgPSAnJztcblx0ICB9IGNhdGNoIChlKSB7
XG5cdCAgICBoYXNTaG9ydGhhbmRQcm9wZXJ0eUJ1ZyA9IHRydWU7XG5cdCAgfVxuXHQgIC8vIElF
OCBvbmx5IHN1cHBvcnRzIGFjY2Vzc2luZyBjc3NGbG9hdCAoc3RhbmRhcmQpIGFzIHN0eWxlRmxv
YXRcblx0ICBpZiAoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLmNzc0Zsb2F0ID09PSB1
bmRlZmluZWQpIHtcblx0ICAgIHN0eWxlRmxvYXRBY2Nlc3NvciA9ICdzdHlsZUZsb2F0Jztcblx0
ICB9XG5cdH1cblx0XG5cdGlmIChmYWxzZSkge1xuXHQgIC8vICdtc1RyYW5zZm9ybScgaXMgY29y
cmVjdCwgYnV0IHRoZSBvdGhlciBwcmVmaXhlcyBzaG91bGQgYmUgY2FwaXRhbGl6ZWRcblx0ICB2
YXIgYmFkVmVuZG9yZWRTdHlsZU5hbWVQYXR0ZXJuID0gL14oPzp3ZWJraXR8bW96fG8pW0EtWl0v
O1xuXHRcblx0ICAvLyBzdHlsZSB2YWx1ZXMgc2hvdWxkbid0IGNvbnRhaW4gYSBzZW1pY29sb25c
blx0ICB2YXIgYmFkU3R5bGVWYWx1ZVdpdGhTZW1pY29sb25QYXR0ZXJuID0gLztcXHMqJC87XG5c
dFxuXHQgIHZhciB3YXJuZWRTdHlsZU5hbWVzID0ge307XG5cdCAgdmFyIHdhcm5lZFN0eWxlVmFs
dWVzID0ge307XG5cdCAgdmFyIHdhcm5lZEZvck5hTlZhbHVlID0gZmFsc2U7XG5cdFxuXHQgIHZh
ciB3YXJuSHlwaGVuYXRlZFN0eWxlTmFtZSA9IGZ1bmN0aW9uIChuYW1lLCBvd25lcikge1xuXHQg
ICAgaWYgKHdhcm5lZFN0eWxlTmFtZXMuaGFzT3duUHJvcGVydHkobmFtZSkgJiYgd2FybmVkU3R5
bGVOYW1lc1tuYW1lXSkge1xuXHQgICAgICByZXR1cm47XG5cdCAgICB9XG5cdFxuXHQgICAgd2Fy
bmVkU3R5bGVOYW1lc1tuYW1lXSA9IHRydWU7XG5cdCAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAh
PT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ1Vuc3VwcG9ydGVkIHN0eWxlIHByb3Bl
cnR5ICVzLiBEaWQgeW91IG1lYW4gJXM/JXMnLCBuYW1lLCBjYW1lbGl6ZVN0eWxlTmFtZShuYW1l
KSwgY2hlY2tSZW5kZXJNZXNzYWdlKG93bmVyKSkgOiB2b2lkIDA7XG5cdCAgfTtcblx0XG5cdCAg
dmFyIHdhcm5CYWRWZW5kb3JlZFN0eWxlTmFtZSA9IGZ1bmN0aW9uIChuYW1lLCBvd25lcikge1xu
XHQgICAgaWYgKHdhcm5lZFN0eWxlTmFtZXMuaGFzT3duUHJvcGVydHkobmFtZSkgJiYgd2FybmVk
U3R5bGVOYW1lc1tuYW1lXSkge1xuXHQgICAgICByZXR1cm47XG5cdCAgICB9XG5cdFxuXHQgICAg
d2FybmVkU3R5bGVOYW1lc1tuYW1lXSA9IHRydWU7XG5cdCAgICBwcm9jZXNzLmVudi5OT0RFX0VO
ViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ1Vuc3VwcG9ydGVkIHZlbmRvci1w
cmVmaXhlZCBzdHlsZSBwcm9wZXJ0eSAlcy4gRGlkIHlvdSBtZWFuICVzPyVzJywgbmFtZSwgbmFt
ZS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIG5hbWUuc2xpY2UoMSksIGNoZWNrUmVuZGVyTWVz
c2FnZShvd25lcikpIDogdm9pZCAwO1xuXHQgIH07XG5cdFxuXHQgIHZhciB3YXJuU3R5bGVWYWx1
ZVdpdGhTZW1pY29sb24gPSBmdW5jdGlvbiAobmFtZSwgdmFsdWUsIG93bmVyKSB7XG5cdCAgICBp
ZiAod2FybmVkU3R5bGVWYWx1ZXMuaGFzT3duUHJvcGVydHkodmFsdWUpICYmIHdhcm5lZFN0eWxl
VmFsdWVzW3ZhbHVlXSkge1xuXHQgICAgICByZXR1cm47XG5cdCAgICB9XG5cdFxuXHQgICAgd2Fy
bmVkU3R5bGVWYWx1ZXNbdmFsdWVdID0gdHJ1ZTtcblx0ICAgIHByb2Nlc3MuZW52Lk5PREVfRU5W
ICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCBcIlN0eWxlIHByb3BlcnR5IHZhbHVl
cyBzaG91bGRuJ3QgY29udGFpbiBhIHNlbWljb2xvbi4lcyBcIiArICdUcnkgXCIlczogJXNcIiBp
bnN0ZWFkLicsIGNoZWNrUmVuZGVyTWVzc2FnZShvd25lciksIG5hbWUsIHZhbHVlLnJlcGxhY2Uo
YmFkU3R5bGVWYWx1ZVdpdGhTZW1pY29sb25QYXR0ZXJuLCAnJykpIDogdm9pZCAwO1xuXHQgIH07
XG5cdFxuXHQgIHZhciB3YXJuU3R5bGVWYWx1ZUlzTmFOID0gZnVuY3Rpb24gKG5hbWUsIHZhbHVl
LCBvd25lcikge1xuXHQgICAgaWYgKHdhcm5lZEZvck5hTlZhbHVlKSB7XG5cdCAgICAgIHJldHVy
bjtcblx0ICAgIH1cblx0XG5cdCAgICB3YXJuZWRGb3JOYU5WYWx1ZSA9IHRydWU7XG5cdCAgICBw
cm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ2BO
YU5gIGlzIGFuIGludmFsaWQgdmFsdWUgZm9yIHRoZSBgJXNgIGNzcyBzdHlsZSBwcm9wZXJ0eS4l
cycsIG5hbWUsIGNoZWNrUmVuZGVyTWVzc2FnZShvd25lcikpIDogdm9pZCAwO1xuXHQgIH07XG5c
dFxuXHQgIHZhciBjaGVja1JlbmRlck1lc3NhZ2UgPSBmdW5jdGlvbiAob3duZXIpIHtcblx0ICAg
IGlmIChvd25lcikge1xuXHQgICAgICB2YXIgbmFtZSA9IG93bmVyLmdldE5hbWUoKTtcblx0ICAg
ICAgaWYgKG5hbWUpIHtcblx0ICAgICAgICByZXR1cm4gJyBDaGVjayB0aGUgcmVuZGVyIG1ldGhv
ZCBvZiBgJyArIG5hbWUgKyAnYC4nO1xuXHQgICAgICB9XG5cdCAgICB9XG5cdCAgICByZXR1cm4g
Jyc7XG5cdCAgfTtcblx0XG5cdCAgLyoqXG5cdCAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWVcblx0
ICAgKiBAcGFyYW0geyp9IHZhbHVlXG5cdCAgICogQHBhcmFtIHtSZWFjdERPTUNvbXBvbmVudH0g
Y29tcG9uZW50XG5cdCAgICovXG5cdCAgdmFyIHdhcm5WYWxpZFN0eWxlID0gZnVuY3Rpb24gKG5h
bWUsIHZhbHVlLCBjb21wb25lbnQpIHtcblx0ICAgIHZhciBvd25lcjtcblx0ICAgIGlmIChjb21w
b25lbnQpIHtcblx0ICAgICAgb3duZXIgPSBjb21wb25lbnQuX2N1cnJlbnRFbGVtZW50Ll9vd25l
cjtcblx0ICAgIH1cblx0ICAgIGlmIChuYW1lLmluZGV4T2YoJy0nKSA+IC0xKSB7XG5cdCAgICAg
IHdhcm5IeXBoZW5hdGVkU3R5bGVOYW1lKG5hbWUsIG93bmVyKTtcblx0ICAgIH0gZWxzZSBpZiAo
YmFkVmVuZG9yZWRTdHlsZU5hbWVQYXR0ZXJuLnRlc3QobmFtZSkpIHtcblx0ICAgICAgd2FybkJh
ZFZlbmRvcmVkU3R5bGVOYW1lKG5hbWUsIG93bmVyKTtcblx0ICAgIH0gZWxzZSBpZiAoYmFkU3R5
bGVWYWx1ZVdpdGhTZW1pY29sb25QYXR0ZXJuLnRlc3QodmFsdWUpKSB7XG5cdCAgICAgIHdhcm5T
dHlsZVZhbHVlV2l0aFNlbWljb2xvbihuYW1lLCB2YWx1ZSwgb3duZXIpO1xuXHQgICAgfVxuXHRc
blx0ICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInICYmIGlzTmFOKHZhbHVlKSkge1xu
XHQgICAgICB3YXJuU3R5bGVWYWx1ZUlzTmFOKG5hbWUsIHZhbHVlLCBvd25lcik7XG5cdCAgICB9
XG5cdCAgfTtcblx0fVxuXHRcblx0LyoqXG5cdCAqIE9wZXJhdGlvbnMgZm9yIGRlYWxpbmcgd2l0
aCBDU1MgcHJvcGVydGllcy5cblx0ICovXG5cdHZhciBDU1NQcm9wZXJ0eU9wZXJhdGlvbnMgPSB7
XG5cdCAgLyoqXG5cdCAgICogU2VyaWFsaXplcyBhIG1hcHBpbmcgb2Ygc3R5bGUgcHJvcGVydGll
cyBmb3IgdXNlIGFzIGlubGluZSBzdHlsZXM6XG5cdCAgICpcblx0ICAgKiAgID4gY3JlYXRlTWFy
a3VwRm9yU3R5bGVzKHt3aWR0aDogJzIwMHB4JywgaGVpZ2h0OiAwfSlcblx0ICAgKiAgIFwid2lk
dGg6MjAwcHg7aGVpZ2h0OjA7XCJcblx0ICAgKlxuXHQgICAqIFVuZGVmaW5lZCB2YWx1ZXMgYXJl
IGlnbm9yZWQgc28gdGhhdCBkZWNsYXJhdGl2ZSBwcm9ncmFtbWluZyBpcyBlYXNpZXIuXG5cdCAg
ICogVGhlIHJlc3VsdCBzaG91bGQgYmUgSFRNTC1lc2NhcGVkIGJlZm9yZSBpbnNlcnRpb24gaW50
byB0aGUgRE9NLlxuXHQgICAqXG5cdCAgICogQHBhcmFtIHtvYmplY3R9IHN0eWxlc1xuXHQgICAq
IEBwYXJhbSB7UmVhY3RET01Db21wb25lbnR9IGNvbXBvbmVudFxuXHQgICAqIEByZXR1cm4gez9z
dHJpbmd9XG5cdCAgICovXG5cdCAgY3JlYXRlTWFya3VwRm9yU3R5bGVzOiBmdW5jdGlvbiAoc3R5
bGVzLCBjb21wb25lbnQpIHtcblx0ICAgIHZhciBzZXJpYWxpemVkID0gJyc7XG5cdCAgICBmb3Ig
KHZhciBzdHlsZU5hbWUgaW4gc3R5bGVzKSB7XG5cdCAgICAgIGlmICghc3R5bGVzLmhhc093blBy
b3BlcnR5KHN0eWxlTmFtZSkpIHtcblx0ICAgICAgICBjb250aW51ZTtcblx0ICAgICAgfVxuXHQg
ICAgICB2YXIgaXNDdXN0b21Qcm9wZXJ0eSA9IHN0eWxlTmFtZS5pbmRleE9mKCctLScpID09PSAw
O1xuXHQgICAgICB2YXIgc3R5bGVWYWx1ZSA9IHN0eWxlc1tzdHlsZU5hbWVdO1xuXHQgICAgICBp
ZiAoZmFsc2UpIHtcblx0ICAgICAgICBpZiAoIWlzQ3VzdG9tUHJvcGVydHkpIHtcblx0ICAgICAg
ICAgIHdhcm5WYWxpZFN0eWxlKHN0eWxlTmFtZSwgc3R5bGVWYWx1ZSwgY29tcG9uZW50KTtcblx0
ICAgICAgICB9XG5cdCAgICAgIH1cblx0ICAgICAgaWYgKHN0eWxlVmFsdWUgIT0gbnVsbCkge1xu
XHQgICAgICAgIHNlcmlhbGl6ZWQgKz0gcHJvY2Vzc1N0eWxlTmFtZShzdHlsZU5hbWUpICsgJzon
O1xuXHQgICAgICAgIHNlcmlhbGl6ZWQgKz0gZGFuZ2Vyb3VzU3R5bGVWYWx1ZShzdHlsZU5hbWUs
IHN0eWxlVmFsdWUsIGNvbXBvbmVudCwgaXNDdXN0b21Qcm9wZXJ0eSkgKyAnOyc7XG5cdCAgICAg
IH1cblx0ICAgIH1cblx0ICAgIHJldHVybiBzZXJpYWxpemVkIHx8IG51bGw7XG5cdCAgfSxcblx0
XG5cdCAgLyoqXG5cdCAgICogU2V0cyB0aGUgdmFsdWUgZm9yIG11bHRpcGxlIHN0eWxlcyBvbiBh
IG5vZGUuICBJZiBhIHZhbHVlIGlzIHNwZWNpZmllZCBhc1xuXHQgICAqICcnIChlbXB0eSBzdHJp
bmcpLCB0aGUgY29ycmVzcG9uZGluZyBzdHlsZSBwcm9wZXJ0eSB3aWxsIGJlIHVuc2V0LlxuXHQg
ICAqXG5cdCAgICogQHBhcmFtIHtET01FbGVtZW50fSBub2RlXG5cdCAgICogQHBhcmFtIHtvYmpl
Y3R9IHN0eWxlc1xuXHQgICAqIEBwYXJhbSB7UmVhY3RET01Db21wb25lbnR9IGNvbXBvbmVudFxu
XHQgICAqL1xuXHQgIHNldFZhbHVlRm9yU3R5bGVzOiBmdW5jdGlvbiAobm9kZSwgc3R5bGVzLCBj
b21wb25lbnQpIHtcblx0ICAgIGlmIChmYWxzZSkge1xuXHQgICAgICBSZWFjdEluc3RydW1lbnRh
dGlvbi5kZWJ1Z1Rvb2wub25Ib3N0T3BlcmF0aW9uKHtcblx0ICAgICAgICBpbnN0YW5jZUlEOiBj
b21wb25lbnQuX2RlYnVnSUQsXG5cdCAgICAgICAgdHlwZTogJ3VwZGF0ZSBzdHlsZXMnLFxuXHQg
ICAgICAgIHBheWxvYWQ6IHN0eWxlc1xuXHQgICAgICB9KTtcblx0ICAgIH1cblx0XG5cdCAgICB2
YXIgc3R5bGUgPSBub2RlLnN0eWxlO1xuXHQgICAgZm9yICh2YXIgc3R5bGVOYW1lIGluIHN0eWxl
cykge1xuXHQgICAgICBpZiAoIXN0eWxlcy5oYXNPd25Qcm9wZXJ0eShzdHlsZU5hbWUpKSB7XG5c
dCAgICAgICAgY29udGludWU7XG5cdCAgICAgIH1cblx0ICAgICAgdmFyIGlzQ3VzdG9tUHJvcGVy
dHkgPSBzdHlsZU5hbWUuaW5kZXhPZignLS0nKSA9PT0gMDtcblx0ICAgICAgaWYgKGZhbHNlKSB7
XG5cdCAgICAgICAgaWYgKCFpc0N1c3RvbVByb3BlcnR5KSB7XG5cdCAgICAgICAgICB3YXJuVmFs
aWRTdHlsZShzdHlsZU5hbWUsIHN0eWxlc1tzdHlsZU5hbWVdLCBjb21wb25lbnQpO1xuXHQgICAg
ICAgIH1cblx0ICAgICAgfVxuXHQgICAgICB2YXIgc3R5bGVWYWx1ZSA9IGRhbmdlcm91c1N0eWxl
VmFsdWUoc3R5bGVOYW1lLCBzdHlsZXNbc3R5bGVOYW1lXSwgY29tcG9uZW50LCBpc0N1c3RvbVBy
b3BlcnR5KTtcblx0ICAgICAgaWYgKHN0eWxlTmFtZSA9PT0gJ2Zsb2F0JyB8fCBzdHlsZU5hbWUg
PT09ICdjc3NGbG9hdCcpIHtcblx0ICAgICAgICBzdHlsZU5hbWUgPSBzdHlsZUZsb2F0QWNjZXNz
b3I7XG5cdCAgICAgIH1cblx0ICAgICAgaWYgKGlzQ3VzdG9tUHJvcGVydHkpIHtcblx0ICAgICAg
ICBzdHlsZS5zZXRQcm9wZXJ0eShzdHlsZU5hbWUsIHN0eWxlVmFsdWUpO1xuXHQgICAgICB9IGVs
c2UgaWYgKHN0eWxlVmFsdWUpIHtcblx0ICAgICAgICBzdHlsZVtzdHlsZU5hbWVdID0gc3R5bGVW
YWx1ZTtcblx0ICAgICAgfSBlbHNlIHtcblx0ICAgICAgICB2YXIgZXhwYW5zaW9uID0gaGFzU2hv
cnRoYW5kUHJvcGVydHlCdWcgJiYgQ1NTUHJvcGVydHkuc2hvcnRoYW5kUHJvcGVydHlFeHBhbnNp
b25zW3N0eWxlTmFtZV07XG5cdCAgICAgICAgaWYgKGV4cGFuc2lvbikge1xuXHQgICAgICAgICAg
Ly8gU2hvcnRoYW5kIHByb3BlcnR5IHRoYXQgSUU4IHdvbid0IGxpa2UgdW5zZXR0aW5nLCBzbyB1
bnNldCBlYWNoXG5cdCAgICAgICAgICAvLyBjb21wb25lbnQgdG8gcGxhY2F0ZSBpdFxuXHQgICAg
ICAgICAgZm9yICh2YXIgaW5kaXZpZHVhbFN0eWxlTmFtZSBpbiBleHBhbnNpb24pIHtcblx0ICAg
ICAgICAgICAgc3R5bGVbaW5kaXZpZHVhbFN0eWxlTmFtZV0gPSAnJztcblx0ICAgICAgICAgIH1c
blx0ICAgICAgICB9IGVsc2Uge1xuXHQgICAgICAgICAgc3R5bGVbc3R5bGVOYW1lXSA9ICcnO1xu
XHQgICAgICAgIH1cblx0ICAgICAgfVxuXHQgICAgfVxuXHQgIH1cblx0fTtcblx0XG5cdG1vZHVs
ZS5leHBvcnRzID0gQ1NTUHJvcGVydHlPcGVyYXRpb25zO1xuXG4vKioqLyB9LFxuLyogMTI4ICov
XG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtc
blxuXHQvKipcblx0ICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0
ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBs
aWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJ
Q0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4g
YWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0
aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpcblx0ICovXG5cdFxu
XHQndXNlIHN0cmljdCc7XG5cdFxuXHR2YXIgRXZlbnRQbHVnaW5IdWIgPSBfX3dlYnBhY2tfcmVx
dWlyZV9fKDE5KTtcblx0dmFyIEV2ZW50UHJvcGFnYXRvcnMgPSBfX3dlYnBhY2tfcmVxdWlyZV9f
KDIwKTtcblx0dmFyIEV4ZWN1dGlvbkVudmlyb25tZW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg2
KTtcblx0dmFyIFJlYWN0RE9NQ29tcG9uZW50VHJlZSA9IF9fd2VicGFja19yZXF1aXJlX18oNSk7
XG5cdHZhciBSZWFjdFVwZGF0ZXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDkpO1xuXHR2YXIgU3lu
dGhldGljRXZlbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEwKTtcblx0XG5cdHZhciBpbnB1dFZh
bHVlVHJhY2tpbmcgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDc0KTtcblx0dmFyIGdldEV2ZW50VGFy
Z2V0ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0Nik7XG5cdHZhciBpc0V2ZW50U3VwcG9ydGVkID0g
X193ZWJwYWNrX3JlcXVpcmVfXyg0Nyk7XG5cdHZhciBpc1RleHRJbnB1dEVsZW1lbnQgPSBfX3dl
YnBhY2tfcmVxdWlyZV9fKDc2KTtcblx0XG5cdHZhciBldmVudFR5cGVzID0ge1xuXHQgIGNoYW5n
ZToge1xuXHQgICAgcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6IHtcblx0ICAgICAgYnViYmxlZDog
J29uQ2hhbmdlJyxcblx0ICAgICAgY2FwdHVyZWQ6ICdvbkNoYW5nZUNhcHR1cmUnXG5cdCAgICB9
LFxuXHQgICAgZGVwZW5kZW5jaWVzOiBbJ3RvcEJsdXInLCAndG9wQ2hhbmdlJywgJ3RvcENsaWNr
JywgJ3RvcEZvY3VzJywgJ3RvcElucHV0JywgJ3RvcEtleURvd24nLCAndG9wS2V5VXAnLCAndG9w
U2VsZWN0aW9uQ2hhbmdlJ11cblx0ICB9XG5cdH07XG5cdFxuXHRmdW5jdGlvbiBjcmVhdGVBbmRB
Y2N1bXVsYXRlQ2hhbmdlRXZlbnQoaW5zdCwgbmF0aXZlRXZlbnQsIHRhcmdldCkge1xuXHQgIHZh
ciBldmVudCA9IFN5bnRoZXRpY0V2ZW50LmdldFBvb2xlZChldmVudFR5cGVzLmNoYW5nZSwgaW5z
dCwgbmF0aXZlRXZlbnQsIHRhcmdldCk7XG5cdCAgZXZlbnQudHlwZSA9ICdjaGFuZ2UnO1xuXHQg
IEV2ZW50UHJvcGFnYXRvcnMuYWNjdW11bGF0ZVR3b1BoYXNlRGlzcGF0Y2hlcyhldmVudCk7XG5c
dCAgcmV0dXJuIGV2ZW50O1xuXHR9XG5cdC8qKlxuXHQgKiBGb3IgSUUgc2hpbXNcblx0ICovXG5c
dHZhciBhY3RpdmVFbGVtZW50ID0gbnVsbDtcblx0dmFyIGFjdGl2ZUVsZW1lbnRJbnN0ID0gbnVs
bDtcblx0XG5cdC8qKlxuXHQgKiBTRUNUSU9OOiBoYW5kbGUgYGNoYW5nZWAgZXZlbnRcblx0ICov
XG5cdGZ1bmN0aW9uIHNob3VsZFVzZUNoYW5nZUV2ZW50KGVsZW0pIHtcblx0ICB2YXIgbm9kZU5h
bWUgPSBlbGVtLm5vZGVOYW1lICYmIGVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtcblx0ICBy
ZXR1cm4gbm9kZU5hbWUgPT09ICdzZWxlY3QnIHx8IG5vZGVOYW1lID09PSAnaW5wdXQnICYmIGVs
ZW0udHlwZSA9PT0gJ2ZpbGUnO1xuXHR9XG5cdFxuXHR2YXIgZG9lc0NoYW5nZUV2ZW50QnViYmxl
ID0gZmFsc2U7XG5cdGlmIChFeGVjdXRpb25FbnZpcm9ubWVudC5jYW5Vc2VET00pIHtcblx0ICAv
LyBTZWUgYGhhbmRsZUNoYW5nZWAgY29tbWVudCBiZWxvd1xuXHQgIGRvZXNDaGFuZ2VFdmVudEJ1
YmJsZSA9IGlzRXZlbnRTdXBwb3J0ZWQoJ2NoYW5nZScpICYmICghZG9jdW1lbnQuZG9jdW1lbnRN
b2RlIHx8IGRvY3VtZW50LmRvY3VtZW50TW9kZSA+IDgpO1xuXHR9XG5cdFxuXHRmdW5jdGlvbiBt
YW51YWxEaXNwYXRjaENoYW5nZUV2ZW50KG5hdGl2ZUV2ZW50KSB7XG5cdCAgdmFyIGV2ZW50ID0g
Y3JlYXRlQW5kQWNjdW11bGF0ZUNoYW5nZUV2ZW50KGFjdGl2ZUVsZW1lbnRJbnN0LCBuYXRpdmVF
dmVudCwgZ2V0RXZlbnRUYXJnZXQobmF0aXZlRXZlbnQpKTtcblx0XG5cdCAgLy8gSWYgY2hhbmdl
IGFuZCBwcm9wZXJ0eWNoYW5nZSBidWJibGVkLCB3ZSdkIGp1c3QgYmluZCB0byBpdCBsaWtlIGFs
bCB0aGVcblx0ICAvLyBvdGhlciBldmVudHMgYW5kIGhhdmUgaXQgZ28gdGhyb3VnaCBSZWFjdEJy
b3dzZXJFdmVudEVtaXR0ZXIuIFNpbmNlIGl0XG5cdCAgLy8gZG9lc24ndCwgd2UgbWFudWFsbHkg
bGlzdGVuIGZvciB0aGUgZXZlbnRzIGFuZCBzbyB3ZSBoYXZlIHRvIGVucXVldWUgYW5kXG5cdCAg
Ly8gcHJvY2VzcyB0aGUgYWJzdHJhY3QgZXZlbnQgbWFudWFsbHkuXG5cdCAgLy9cblx0ICAvLyBC
YXRjaGluZyBpcyBuZWNlc3NhcnkgaGVyZSBpbiBvcmRlciB0byBlbnN1cmUgdGhhdCBhbGwgZXZl
bnQgaGFuZGxlcnMgcnVuXG5cdCAgLy8gYmVmb3JlIHRoZSBuZXh0IHJlcmVuZGVyIChpbmNsdWRp
bmcgZXZlbnQgaGFuZGxlcnMgYXR0YWNoZWQgdG8gYW5jZXN0b3Jcblx0ICAvLyBlbGVtZW50cyBp
bnN0ZWFkIG9mIGRpcmVjdGx5IG9uIHRoZSBpbnB1dCkuIFdpdGhvdXQgdGhpcywgY29udHJvbGxl
ZFxuXHQgIC8vIGNvbXBvbmVudHMgZG9uJ3Qgd29yayBwcm9wZXJseSBpbiBjb25qdW5jdGlvbiB3
aXRoIGV2ZW50IGJ1YmJsaW5nIGJlY2F1c2Vcblx0ICAvLyB0aGUgY29tcG9uZW50IGlzIHJlcmVu
ZGVyZWQgYW5kIHRoZSB2YWx1ZSByZXZlcnRlZCBiZWZvcmUgYWxsIHRoZSBldmVudFxuXHQgIC8v
IGhhbmRsZXJzIGNhbiBydW4uIFNlZSBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3Qv
aXNzdWVzLzcwOC5cblx0ICBSZWFjdFVwZGF0ZXMuYmF0Y2hlZFVwZGF0ZXMocnVuRXZlbnRJbkJh
dGNoLCBldmVudCk7XG5cdH1cblx0XG5cdGZ1bmN0aW9uIHJ1bkV2ZW50SW5CYXRjaChldmVudCkg
e1xuXHQgIEV2ZW50UGx1Z2luSHViLmVucXVldWVFdmVudHMoZXZlbnQpO1xuXHQgIEV2ZW50UGx1
Z2luSHViLnByb2Nlc3NFdmVudFF1ZXVlKGZhbHNlKTtcblx0fVxuXHRcblx0ZnVuY3Rpb24gc3Rh
cnRXYXRjaGluZ0ZvckNoYW5nZUV2ZW50SUU4KHRhcmdldCwgdGFyZ2V0SW5zdCkge1xuXHQgIGFj
dGl2ZUVsZW1lbnQgPSB0YXJnZXQ7XG5cdCAgYWN0aXZlRWxlbWVudEluc3QgPSB0YXJnZXRJbnN0
O1xuXHQgIGFjdGl2ZUVsZW1lbnQuYXR0YWNoRXZlbnQoJ29uY2hhbmdlJywgbWFudWFsRGlzcGF0
Y2hDaGFuZ2VFdmVudCk7XG5cdH1cblx0XG5cdGZ1bmN0aW9uIHN0b3BXYXRjaGluZ0ZvckNoYW5n
ZUV2ZW50SUU4KCkge1xuXHQgIGlmICghYWN0aXZlRWxlbWVudCkge1xuXHQgICAgcmV0dXJuO1xu
XHQgIH1cblx0ICBhY3RpdmVFbGVtZW50LmRldGFjaEV2ZW50KCdvbmNoYW5nZScsIG1hbnVhbERp
c3BhdGNoQ2hhbmdlRXZlbnQpO1xuXHQgIGFjdGl2ZUVsZW1lbnQgPSBudWxsO1xuXHQgIGFjdGl2
ZUVsZW1lbnRJbnN0ID0gbnVsbDtcblx0fVxuXHRcblx0ZnVuY3Rpb24gZ2V0SW5zdElmVmFsdWVD
aGFuZ2VkKHRhcmdldEluc3QsIG5hdGl2ZUV2ZW50KSB7XG5cdCAgdmFyIHVwZGF0ZWQgPSBpbnB1
dFZhbHVlVHJhY2tpbmcudXBkYXRlVmFsdWVJZkNoYW5nZWQodGFyZ2V0SW5zdCk7XG5cdCAgdmFy
IHNpbXVsYXRlZCA9IG5hdGl2ZUV2ZW50LnNpbXVsYXRlZCA9PT0gdHJ1ZSAmJiBDaGFuZ2VFdmVu
dFBsdWdpbi5fYWxsb3dTaW11bGF0ZWRQYXNzVGhyb3VnaDtcblx0XG5cdCAgaWYgKHVwZGF0ZWQg
fHwgc2ltdWxhdGVkKSB7XG5cdCAgICByZXR1cm4gdGFyZ2V0SW5zdDtcblx0ICB9XG5cdH1cblx0
XG5cdGZ1bmN0aW9uIGdldFRhcmdldEluc3RGb3JDaGFuZ2VFdmVudCh0b3BMZXZlbFR5cGUsIHRh
cmdldEluc3QpIHtcblx0ICBpZiAodG9wTGV2ZWxUeXBlID09PSAndG9wQ2hhbmdlJykge1xuXHQg
ICAgcmV0dXJuIHRhcmdldEluc3Q7XG5cdCAgfVxuXHR9XG5cdFxuXHRmdW5jdGlvbiBoYW5kbGVF
dmVudHNGb3JDaGFuZ2VFdmVudElFOCh0b3BMZXZlbFR5cGUsIHRhcmdldCwgdGFyZ2V0SW5zdCkg
e1xuXHQgIGlmICh0b3BMZXZlbFR5cGUgPT09ICd0b3BGb2N1cycpIHtcblx0ICAgIC8vIHN0b3BX
YXRjaGluZygpIHNob3VsZCBiZSBhIG5vb3AgaGVyZSBidXQgd2UgY2FsbCBpdCBqdXN0IGluIGNh
c2Ugd2Vcblx0ICAgIC8vIG1pc3NlZCBhIGJsdXIgZXZlbnQgc29tZWhvdy5cblx0ICAgIHN0b3BX
YXRjaGluZ0ZvckNoYW5nZUV2ZW50SUU4KCk7XG5cdCAgICBzdGFydFdhdGNoaW5nRm9yQ2hhbmdl
RXZlbnRJRTgodGFyZ2V0LCB0YXJnZXRJbnN0KTtcblx0ICB9IGVsc2UgaWYgKHRvcExldmVsVHlw
ZSA9PT0gJ3RvcEJsdXInKSB7XG5cdCAgICBzdG9wV2F0Y2hpbmdGb3JDaGFuZ2VFdmVudElFOCgp
O1xuXHQgIH1cblx0fVxuXHRcblx0LyoqXG5cdCAqIFNFQ1RJT046IGhhbmRsZSBgaW5wdXRgIGV2
ZW50XG5cdCAqL1xuXHR2YXIgaXNJbnB1dEV2ZW50U3VwcG9ydGVkID0gZmFsc2U7XG5cdGlmIChF
eGVjdXRpb25FbnZpcm9ubWVudC5jYW5Vc2VET00pIHtcblx0ICAvLyBJRTkgY2xhaW1zIHRvIHN1
cHBvcnQgdGhlIGlucHV0IGV2ZW50IGJ1dCBmYWlscyB0byB0cmlnZ2VyIGl0IHdoZW5cblx0ICAv
LyBkZWxldGluZyB0ZXh0LCBzbyB3ZSBpZ25vcmUgaXRzIGlucHV0IGV2ZW50cy5cblx0XG5cdCAg
aXNJbnB1dEV2ZW50U3VwcG9ydGVkID0gaXNFdmVudFN1cHBvcnRlZCgnaW5wdXQnKSAmJiAoISgn
ZG9jdW1lbnRNb2RlJyBpbiBkb2N1bWVudCkgfHwgZG9jdW1lbnQuZG9jdW1lbnRNb2RlID4gOSk7
XG5cdH1cblx0XG5cdC8qKlxuXHQgKiAoRm9yIElFIDw9OSkgU3RhcnRzIHRyYWNraW5nIHByb3Bl
cnR5Y2hhbmdlIGV2ZW50cyBvbiB0aGUgcGFzc2VkLWluIGVsZW1lbnRcblx0ICogYW5kIG92ZXJy
aWRlIHRoZSB2YWx1ZSBwcm9wZXJ0eSBzbyB0aGF0IHdlIGNhbiBkaXN0aW5ndWlzaCB1c2VyIGV2
ZW50cyBmcm9tXG5cdCAqIHZhbHVlIGNoYW5nZXMgaW4gSlMuXG5cdCAqL1xuXHRmdW5jdGlvbiBz
dGFydFdhdGNoaW5nRm9yVmFsdWVDaGFuZ2UodGFyZ2V0LCB0YXJnZXRJbnN0KSB7XG5cdCAgYWN0
aXZlRWxlbWVudCA9IHRhcmdldDtcblx0ICBhY3RpdmVFbGVtZW50SW5zdCA9IHRhcmdldEluc3Q7
XG5cdCAgYWN0aXZlRWxlbWVudC5hdHRhY2hFdmVudCgnb25wcm9wZXJ0eWNoYW5nZScsIGhhbmRs
ZVByb3BlcnR5Q2hhbmdlKTtcblx0fVxuXHRcblx0LyoqXG5cdCAqIChGb3IgSUUgPD05KSBSZW1v
dmVzIHRoZSBldmVudCBsaXN0ZW5lcnMgZnJvbSB0aGUgY3VycmVudGx5LXRyYWNrZWQgZWxlbWVu
dCxcblx0ICogaWYgYW55IGV4aXN0cy5cblx0ICovXG5cdGZ1bmN0aW9uIHN0b3BXYXRjaGluZ0Zv
clZhbHVlQ2hhbmdlKCkge1xuXHQgIGlmICghYWN0aXZlRWxlbWVudCkge1xuXHQgICAgcmV0dXJu
O1xuXHQgIH1cblx0ICBhY3RpdmVFbGVtZW50LmRldGFjaEV2ZW50KCdvbnByb3BlcnR5Y2hhbmdl
JywgaGFuZGxlUHJvcGVydHlDaGFuZ2UpO1xuXHRcblx0ICBhY3RpdmVFbGVtZW50ID0gbnVsbDtc
blx0ICBhY3RpdmVFbGVtZW50SW5zdCA9IG51bGw7XG5cdH1cblx0XG5cdC8qKlxuXHQgKiAoRm9y
IElFIDw9OSkgSGFuZGxlcyBhIHByb3BlcnR5Y2hhbmdlIGV2ZW50LCBzZW5kaW5nIGEgYGNoYW5n
ZWAgZXZlbnQgaWZcblx0ICogdGhlIHZhbHVlIG9mIHRoZSBhY3RpdmUgZWxlbWVudCBoYXMgY2hh
bmdlZC5cblx0ICovXG5cdGZ1bmN0aW9uIGhhbmRsZVByb3BlcnR5Q2hhbmdlKG5hdGl2ZUV2ZW50
KSB7XG5cdCAgaWYgKG5hdGl2ZUV2ZW50LnByb3BlcnR5TmFtZSAhPT0gJ3ZhbHVlJykge1xuXHQg
ICAgcmV0dXJuO1xuXHQgIH1cblx0ICBpZiAoZ2V0SW5zdElmVmFsdWVDaGFuZ2VkKGFjdGl2ZUVs
ZW1lbnRJbnN0LCBuYXRpdmVFdmVudCkpIHtcblx0ICAgIG1hbnVhbERpc3BhdGNoQ2hhbmdlRXZl
bnQobmF0aXZlRXZlbnQpO1xuXHQgIH1cblx0fVxuXHRcblx0ZnVuY3Rpb24gaGFuZGxlRXZlbnRz
Rm9ySW5wdXRFdmVudFBvbHlmaWxsKHRvcExldmVsVHlwZSwgdGFyZ2V0LCB0YXJnZXRJbnN0KSB7
XG5cdCAgaWYgKHRvcExldmVsVHlwZSA9PT0gJ3RvcEZvY3VzJykge1xuXHQgICAgLy8gSW4gSUU4
LCB3ZSBjYW4gY2FwdHVyZSBhbG1vc3QgYWxsIC52YWx1ZSBjaGFuZ2VzIGJ5IGFkZGluZyBhXG5c
dCAgICAvLyBwcm9wZXJ0eWNoYW5nZSBoYW5kbGVyIGFuZCBsb29raW5nIGZvciBldmVudHMgd2l0
aCBwcm9wZXJ0eU5hbWVcblx0ICAgIC8vIGVxdWFsIHRvICd2YWx1ZSdcblx0ICAgIC8vIEluIElF
OSwgcHJvcGVydHljaGFuZ2UgZmlyZXMgZm9yIG1vc3QgaW5wdXQgZXZlbnRzIGJ1dCBpcyBidWdn
eSBhbmRcblx0ICAgIC8vIGRvZXNuJ3QgZmlyZSB3aGVuIHRleHQgaXMgZGVsZXRlZCwgYnV0IGNv
bnZlbmllbnRseSwgc2VsZWN0aW9uY2hhbmdlXG5cdCAgICAvLyBhcHBlYXJzIHRvIGZpcmUgaW4g
YWxsIG9mIHRoZSByZW1haW5pbmcgY2FzZXMgc28gd2UgY2F0Y2ggdGhvc2UgYW5kXG5cdCAgICAv
LyBmb3J3YXJkIHRoZSBldmVudCBpZiB0aGUgdmFsdWUgaGFzIGNoYW5nZWRcblx0ICAgIC8vIElu
IGVpdGhlciBjYXNlLCB3ZSBkb24ndCB3YW50IHRvIGNhbGwgdGhlIGV2ZW50IGhhbmRsZXIgaWYg
dGhlIHZhbHVlXG5cdCAgICAvLyBpcyBjaGFuZ2VkIGZyb20gSlMgc28gd2UgcmVkZWZpbmUgYSBz
ZXR0ZXIgZm9yIGAudmFsdWVgIHRoYXQgdXBkYXRlc1xuXHQgICAgLy8gb3VyIGFjdGl2ZUVsZW1l
bnRWYWx1ZSB2YXJpYWJsZSwgYWxsb3dpbmcgdXMgdG8gaWdub3JlIHRob3NlIGNoYW5nZXNcblx0
ICAgIC8vXG5cdCAgICAvLyBzdG9wV2F0Y2hpbmcoKSBzaG91bGQgYmUgYSBub29wIGhlcmUgYnV0
IHdlIGNhbGwgaXQganVzdCBpbiBjYXNlIHdlXG5cdCAgICAvLyBtaXNzZWQgYSBibHVyIGV2ZW50
IHNvbWVob3cuXG5cdCAgICBzdG9wV2F0Y2hpbmdGb3JWYWx1ZUNoYW5nZSgpO1xuXHQgICAgc3Rh
cnRXYXRjaGluZ0ZvclZhbHVlQ2hhbmdlKHRhcmdldCwgdGFyZ2V0SW5zdCk7XG5cdCAgfSBlbHNl
IGlmICh0b3BMZXZlbFR5cGUgPT09ICd0b3BCbHVyJykge1xuXHQgICAgc3RvcFdhdGNoaW5nRm9y
VmFsdWVDaGFuZ2UoKTtcblx0ICB9XG5cdH1cblx0XG5cdC8vIEZvciBJRTggYW5kIElFOS5cblx0
ZnVuY3Rpb24gZ2V0VGFyZ2V0SW5zdEZvcklucHV0RXZlbnRQb2x5ZmlsbCh0b3BMZXZlbFR5cGUs
IHRhcmdldEluc3QsIG5hdGl2ZUV2ZW50KSB7XG5cdCAgaWYgKHRvcExldmVsVHlwZSA9PT0gJ3Rv
cFNlbGVjdGlvbkNoYW5nZScgfHwgdG9wTGV2ZWxUeXBlID09PSAndG9wS2V5VXAnIHx8IHRvcExl
dmVsVHlwZSA9PT0gJ3RvcEtleURvd24nKSB7XG5cdCAgICAvLyBPbiB0aGUgc2VsZWN0aW9uY2hh
bmdlIGV2ZW50LCB0aGUgdGFyZ2V0IGlzIGp1c3QgZG9jdW1lbnQgd2hpY2ggaXNuJ3Rcblx0ICAg
IC8vIGhlbHBmdWwgZm9yIHVzIHNvIGp1c3QgY2hlY2sgYWN0aXZlRWxlbWVudCBpbnN0ZWFkLlxu
XHQgICAgLy9cblx0ICAgIC8vIDk5JSBvZiB0aGUgdGltZSwga2V5ZG93biBhbmQga2V5dXAgYXJl
bid0IG5lY2Vzc2FyeS4gSUU4IGZhaWxzIHRvIGZpcmVcblx0ICAgIC8vIHByb3BlcnR5Y2hhbmdl
IG9uIHRoZSBmaXJzdCBpbnB1dCBldmVudCBhZnRlciBzZXR0aW5nIGB2YWx1ZWAgZnJvbSBhXG5c
dCAgICAvLyBzY3JpcHQgYW5kIGZpcmVzIG9ubHkga2V5ZG93biwga2V5cHJlc3MsIGtleXVwLiBD
YXRjaGluZyBrZXl1cCB1c3VhbGx5XG5cdCAgICAvLyBnZXRzIGl0IGFuZCBjYXRjaGluZyBrZXlk
b3duIGxldHMgdXMgZmlyZSBhbiBldmVudCBmb3IgdGhlIGZpcnN0XG5cdCAgICAvLyBrZXlzdHJv
a2UgaWYgdXNlciBkb2VzIGEga2V5IHJlcGVhdCAoaXQnbGwgYmUgYSBsaXR0bGUgZGVsYXllZDog
cmlnaHRcblx0ICAgIC8vIGJlZm9yZSB0aGUgc2Vjb25kIGtleXN0cm9rZSkuIE90aGVyIGlucHV0
IG1ldGhvZHMgKGUuZy4sIHBhc3RlKSBzZWVtIHRvXG5cdCAgICAvLyBmaXJlIHNlbGVjdGlvbmNo
YW5nZSBub3JtYWxseS5cblx0ICAgIHJldHVybiBnZXRJbnN0SWZWYWx1ZUNoYW5nZWQoYWN0aXZl
RWxlbWVudEluc3QsIG5hdGl2ZUV2ZW50KTtcblx0ICB9XG5cdH1cblx0XG5cdC8qKlxuXHQgKiBT
RUNUSU9OOiBoYW5kbGUgYGNsaWNrYCBldmVudFxuXHQgKi9cblx0ZnVuY3Rpb24gc2hvdWxkVXNl
Q2xpY2tFdmVudChlbGVtKSB7XG5cdCAgLy8gVXNlIHRoZSBgY2xpY2tgIGV2ZW50IHRvIGRldGVj
dCBjaGFuZ2VzIHRvIGNoZWNrYm94IGFuZCByYWRpbyBpbnB1dHMuXG5cdCAgLy8gVGhpcyBhcHBy
b2FjaCB3b3JrcyBhY3Jvc3MgYWxsIGJyb3dzZXJzLCB3aGVyZWFzIGBjaGFuZ2VgIGRvZXMgbm90
IGZpcmVcblx0ICAvLyB1bnRpbCBgYmx1cmAgaW4gSUU4LlxuXHQgIHZhciBub2RlTmFtZSA9IGVs
ZW0ubm9kZU5hbWU7XG5cdCAgcmV0dXJuIG5vZGVOYW1lICYmIG5vZGVOYW1lLnRvTG93ZXJDYXNl
KCkgPT09ICdpbnB1dCcgJiYgKGVsZW0udHlwZSA9PT0gJ2NoZWNrYm94JyB8fCBlbGVtLnR5cGUg
PT09ICdyYWRpbycpO1xuXHR9XG5cdFxuXHRmdW5jdGlvbiBnZXRUYXJnZXRJbnN0Rm9yQ2xpY2tF
dmVudCh0b3BMZXZlbFR5cGUsIHRhcmdldEluc3QsIG5hdGl2ZUV2ZW50KSB7XG5cdCAgaWYgKHRv
cExldmVsVHlwZSA9PT0gJ3RvcENsaWNrJykge1xuXHQgICAgcmV0dXJuIGdldEluc3RJZlZhbHVl
Q2hhbmdlZCh0YXJnZXRJbnN0LCBuYXRpdmVFdmVudCk7XG5cdCAgfVxuXHR9XG5cdFxuXHRmdW5j
dGlvbiBnZXRUYXJnZXRJbnN0Rm9ySW5wdXRPckNoYW5nZUV2ZW50KHRvcExldmVsVHlwZSwgdGFy
Z2V0SW5zdCwgbmF0aXZlRXZlbnQpIHtcblx0ICBpZiAodG9wTGV2ZWxUeXBlID09PSAndG9wSW5w
dXQnIHx8IHRvcExldmVsVHlwZSA9PT0gJ3RvcENoYW5nZScpIHtcblx0ICAgIHJldHVybiBnZXRJ
bnN0SWZWYWx1ZUNoYW5nZWQodGFyZ2V0SW5zdCwgbmF0aXZlRXZlbnQpO1xuXHQgIH1cblx0fVxu
XHRcblx0ZnVuY3Rpb24gaGFuZGxlQ29udHJvbGxlZElucHV0Qmx1cihpbnN0LCBub2RlKSB7XG5c
dCAgLy8gVE9ETzogSW4gSUUsIGluc3QgaXMgb2NjYXNpb25hbGx5IG51bGwuIFdoeT9cblx0ICBp
ZiAoaW5zdCA9PSBudWxsKSB7XG5cdCAgICByZXR1cm47XG5cdCAgfVxuXHRcblx0ICAvLyBGaWJl
ciBhbmQgUmVhY3RET00ga2VlcCB3cmFwcGVyIHN0YXRlIGluIHNlcGFyYXRlIHBsYWNlc1xuXHQg
IHZhciBzdGF0ZSA9IGluc3QuX3dyYXBwZXJTdGF0ZSB8fCBub2RlLl93cmFwcGVyU3RhdGU7XG5c
dFxuXHQgIGlmICghc3RhdGUgfHwgIXN0YXRlLmNvbnRyb2xsZWQgfHwgbm9kZS50eXBlICE9PSAn
bnVtYmVyJykge1xuXHQgICAgcmV0dXJuO1xuXHQgIH1cblx0XG5cdCAgLy8gSWYgY29udHJvbGxl
ZCwgYXNzaWduIHRoZSB2YWx1ZSBhdHRyaWJ1dGUgdG8gdGhlIGN1cnJlbnQgdmFsdWUgb24gYmx1
clxuXHQgIHZhciB2YWx1ZSA9ICcnICsgbm9kZS52YWx1ZTtcblx0ICBpZiAobm9kZS5nZXRBdHRy
aWJ1dGUoJ3ZhbHVlJykgIT09IHZhbHVlKSB7XG5cdCAgICBub2RlLnNldEF0dHJpYnV0ZSgndmFs
dWUnLCB2YWx1ZSk7XG5cdCAgfVxuXHR9XG5cdFxuXHQvKipcblx0ICogVGhpcyBwbHVnaW4gY3Jl
YXRlcyBhbiBgb25DaGFuZ2VgIGV2ZW50IHRoYXQgbm9ybWFsaXplcyBjaGFuZ2UgZXZlbnRzXG5c
dCAqIGFjcm9zcyBmb3JtIGVsZW1lbnRzLiBUaGlzIGV2ZW50IGZpcmVzIGF0IGEgdGltZSB3aGVu
IGl0J3MgcG9zc2libGUgdG9cblx0ICogY2hhbmdlIHRoZSBlbGVtZW50J3MgdmFsdWUgd2l0aG91
dCBzZWVpbmcgYSBmbGlja2VyLlxuXHQgKlxuXHQgKiBTdXBwb3J0ZWQgZWxlbWVudHMgYXJlOlxu
XHQgKiAtIGlucHV0IChzZWUgYGlzVGV4dElucHV0RWxlbWVudGApXG5cdCAqIC0gdGV4dGFyZWFc
blx0ICogLSBzZWxlY3Rcblx0ICovXG5cdHZhciBDaGFuZ2VFdmVudFBsdWdpbiA9IHtcblx0ICBl
dmVudFR5cGVzOiBldmVudFR5cGVzLFxuXHRcblx0ICBfYWxsb3dTaW11bGF0ZWRQYXNzVGhyb3Vn
aDogdHJ1ZSxcblx0ICBfaXNJbnB1dEV2ZW50U3VwcG9ydGVkOiBpc0lucHV0RXZlbnRTdXBwb3J0
ZWQsXG5cdFxuXHQgIGV4dHJhY3RFdmVudHM6IGZ1bmN0aW9uICh0b3BMZXZlbFR5cGUsIHRhcmdl
dEluc3QsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCkge1xuXHQgICAgdmFyIHRhcmdl
dE5vZGUgPSB0YXJnZXRJbnN0ID8gUmVhY3RET01Db21wb25lbnRUcmVlLmdldE5vZGVGcm9tSW5z
dGFuY2UodGFyZ2V0SW5zdCkgOiB3aW5kb3c7XG5cdFxuXHQgICAgdmFyIGdldFRhcmdldEluc3RG
dW5jLCBoYW5kbGVFdmVudEZ1bmM7XG5cdCAgICBpZiAoc2hvdWxkVXNlQ2hhbmdlRXZlbnQodGFy
Z2V0Tm9kZSkpIHtcblx0ICAgICAgaWYgKGRvZXNDaGFuZ2VFdmVudEJ1YmJsZSkge1xuXHQgICAg
ICAgIGdldFRhcmdldEluc3RGdW5jID0gZ2V0VGFyZ2V0SW5zdEZvckNoYW5nZUV2ZW50O1xuXHQg
ICAgICB9IGVsc2Uge1xuXHQgICAgICAgIGhhbmRsZUV2ZW50RnVuYyA9IGhhbmRsZUV2ZW50c0Zv
ckNoYW5nZUV2ZW50SUU4O1xuXHQgICAgICB9XG5cdCAgICB9IGVsc2UgaWYgKGlzVGV4dElucHV0
RWxlbWVudCh0YXJnZXROb2RlKSkge1xuXHQgICAgICBpZiAoaXNJbnB1dEV2ZW50U3VwcG9ydGVk
KSB7XG5cdCAgICAgICAgZ2V0VGFyZ2V0SW5zdEZ1bmMgPSBnZXRUYXJnZXRJbnN0Rm9ySW5wdXRP
ckNoYW5nZUV2ZW50O1xuXHQgICAgICB9IGVsc2Uge1xuXHQgICAgICAgIGdldFRhcmdldEluc3RG
dW5jID0gZ2V0VGFyZ2V0SW5zdEZvcklucHV0RXZlbnRQb2x5ZmlsbDtcblx0ICAgICAgICBoYW5k
bGVFdmVudEZ1bmMgPSBoYW5kbGVFdmVudHNGb3JJbnB1dEV2ZW50UG9seWZpbGw7XG5cdCAgICAg
IH1cblx0ICAgIH0gZWxzZSBpZiAoc2hvdWxkVXNlQ2xpY2tFdmVudCh0YXJnZXROb2RlKSkge1xu
XHQgICAgICBnZXRUYXJnZXRJbnN0RnVuYyA9IGdldFRhcmdldEluc3RGb3JDbGlja0V2ZW50O1xu
XHQgICAgfVxuXHRcblx0ICAgIGlmIChnZXRUYXJnZXRJbnN0RnVuYykge1xuXHQgICAgICB2YXIg
aW5zdCA9IGdldFRhcmdldEluc3RGdW5jKHRvcExldmVsVHlwZSwgdGFyZ2V0SW5zdCwgbmF0aXZl
RXZlbnQpO1xuXHQgICAgICBpZiAoaW5zdCkge1xuXHQgICAgICAgIHZhciBldmVudCA9IGNyZWF0
ZUFuZEFjY3VtdWxhdGVDaGFuZ2VFdmVudChpbnN0LCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRU
YXJnZXQpO1xuXHQgICAgICAgIHJldHVybiBldmVudDtcblx0ICAgICAgfVxuXHQgICAgfVxuXHRc
blx0ICAgIGlmIChoYW5kbGVFdmVudEZ1bmMpIHtcblx0ICAgICAgaGFuZGxlRXZlbnRGdW5jKHRv
cExldmVsVHlwZSwgdGFyZ2V0Tm9kZSwgdGFyZ2V0SW5zdCk7XG5cdCAgICB9XG5cdFxuXHQgICAg
Ly8gV2hlbiBibHVycmluZywgc2V0IHRoZSB2YWx1ZSBhdHRyaWJ1dGUgZm9yIG51bWJlciBpbnB1
dHNcblx0ICAgIGlmICh0b3BMZXZlbFR5cGUgPT09ICd0b3BCbHVyJykge1xuXHQgICAgICBoYW5k
bGVDb250cm9sbGVkSW5wdXRCbHVyKHRhcmdldEluc3QsIHRhcmdldE5vZGUpO1xuXHQgICAgfVxu
XHQgIH1cblx0fTtcblx0XG5cdG1vZHVsZS5leHBvcnRzID0gQ2hhbmdlRXZlbnRQbHVnaW47XG5c
bi8qKiovIH0sXG4vKiAxMjkgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193
ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50
LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBU
aGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBm
b3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0
aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdo
dHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5
LlxuXHQgKlxuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdHZhciBfcHJvZEludmFy
aWFudCA9IF9fd2VicGFja19yZXF1aXJlX18oMyk7XG5cdFxuXHR2YXIgRE9NTGF6eVRyZWUgPSBf
X3dlYnBhY2tfcmVxdWlyZV9fKDE0KTtcblx0dmFyIEV4ZWN1dGlvbkVudmlyb25tZW50ID0gX193
ZWJwYWNrX3JlcXVpcmVfXyg2KTtcblx0XG5cdHZhciBjcmVhdGVOb2Rlc0Zyb21NYXJrdXAgPSBf
X3dlYnBhY2tfcmVxdWlyZV9fKDEwMik7XG5cdHZhciBlbXB0eUZ1bmN0aW9uID0gX193ZWJwYWNr
X3JlcXVpcmVfXyg3KTtcblx0dmFyIGludmFyaWFudCA9IF9fd2VicGFja19yZXF1aXJlX18oMSk7
XG5cdFxuXHR2YXIgRGFuZ2VyID0ge1xuXHQgIC8qKlxuXHQgICAqIFJlcGxhY2VzIGEgbm9kZSB3
aXRoIGEgc3RyaW5nIG9mIG1hcmt1cCBhdCBpdHMgY3VycmVudCBwb3NpdGlvbiB3aXRoaW4gaXRz
XG5cdCAgICogcGFyZW50LiBUaGUgbWFya3VwIG11c3QgcmVuZGVyIGludG8gYSBzaW5nbGUgcm9v
dCBub2RlLlxuXHQgICAqXG5cdCAgICogQHBhcmFtIHtET01FbGVtZW50fSBvbGRDaGlsZCBDaGls
ZCBub2RlIHRvIHJlcGxhY2UuXG5cdCAgICogQHBhcmFtIHtzdHJpbmd9IG1hcmt1cCBNYXJrdXAg
dG8gcmVuZGVyIGluIHBsYWNlIG9mIHRoZSBjaGlsZCBub2RlLlxuXHQgICAqIEBpbnRlcm5hbFxu
XHQgICAqL1xuXHQgIGRhbmdlcm91c2x5UmVwbGFjZU5vZGVXaXRoTWFya3VwOiBmdW5jdGlvbiAo
b2xkQ2hpbGQsIG1hcmt1cCkge1xuXHQgICAgIUV4ZWN1dGlvbkVudmlyb25tZW50LmNhblVzZURP
TSA/ICBmYWxzZSA/IGludmFyaWFudChmYWxzZSwgJ2Rhbmdlcm91c2x5UmVwbGFjZU5vZGVXaXRo
TWFya3VwKC4uLik6IENhbm5vdCByZW5kZXIgbWFya3VwIGluIGEgd29ya2VyIHRocmVhZC4gTWFr
ZSBzdXJlIGB3aW5kb3dgIGFuZCBgZG9jdW1lbnRgIGFyZSBhdmFpbGFibGUgZ2xvYmFsbHkgYmVm
b3JlIHJlcXVpcmluZyBSZWFjdCB3aGVuIHVuaXQgdGVzdGluZyBvciB1c2UgUmVhY3RET01TZXJ2
ZXIucmVuZGVyVG9TdHJpbmcoKSBmb3Igc2VydmVyIHJlbmRlcmluZy4nKSA6IF9wcm9kSW52YXJp
YW50KCc1NicpIDogdm9pZCAwO1xuXHQgICAgIW1hcmt1cCA/ICBmYWxzZSA/IGludmFyaWFudChm
YWxzZSwgJ2Rhbmdlcm91c2x5UmVwbGFjZU5vZGVXaXRoTWFya3VwKC4uLik6IE1pc3NpbmcgbWFy
a3VwLicpIDogX3Byb2RJbnZhcmlhbnQoJzU3JykgOiB2b2lkIDA7XG5cdCAgICAhKG9sZENoaWxk
Lm5vZGVOYW1lICE9PSAnSFRNTCcpID8gIGZhbHNlID8gaW52YXJpYW50KGZhbHNlLCAnZGFuZ2Vy
b3VzbHlSZXBsYWNlTm9kZVdpdGhNYXJrdXAoLi4uKTogQ2Fubm90IHJlcGxhY2UgbWFya3VwIG9m
IHRoZSA8aHRtbD4gbm9kZS4gVGhpcyBpcyBiZWNhdXNlIGJyb3dzZXIgcXVpcmtzIG1ha2UgdGhp
cyB1bnJlbGlhYmxlIGFuZC9vciBzbG93LiBJZiB5b3Ugd2FudCB0byByZW5kZXIgdG8gdGhlIHJv
b3QgeW91IG11c3QgdXNlIHNlcnZlciByZW5kZXJpbmcuIFNlZSBSZWFjdERPTVNlcnZlci5yZW5k
ZXJUb1N0cmluZygpLicpIDogX3Byb2RJbnZhcmlhbnQoJzU4JykgOiB2b2lkIDA7XG5cdFxuXHQg
ICAgaWYgKHR5cGVvZiBtYXJrdXAgPT09ICdzdHJpbmcnKSB7XG5cdCAgICAgIHZhciBuZXdDaGls
ZCA9IGNyZWF0ZU5vZGVzRnJvbU1hcmt1cChtYXJrdXAsIGVtcHR5RnVuY3Rpb24pWzBdO1xuXHQg
ICAgICBvbGRDaGlsZC5wYXJlbnROb2RlLnJlcGxhY2VDaGlsZChuZXdDaGlsZCwgb2xkQ2hpbGQp
O1xuXHQgICAgfSBlbHNlIHtcblx0ICAgICAgRE9NTGF6eVRyZWUucmVwbGFjZUNoaWxkV2l0aFRy
ZWUob2xkQ2hpbGQsIG1hcmt1cCk7XG5cdCAgICB9XG5cdCAgfVxuXHR9O1xuXHRcblx0bW9kdWxl
LmV4cG9ydHMgPSBEYW5nZXI7XG5cbi8qKiovIH0sXG4vKiAxMzAgKi9cbi8qKiovIGZ1bmN0aW9u
KG1vZHVsZSwgZXhwb3J0cykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50
LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBU
aGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBm
b3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0
aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdo
dHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5
LlxuXHQgKlxuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdC8qKlxuXHQgKiBNb2R1
bGUgdGhhdCBpcyBpbmplY3RhYmxlIGludG8gYEV2ZW50UGx1Z2luSHViYCwgdGhhdCBzcGVjaWZp
ZXMgYVxuXHQgKiBkZXRlcm1pbmlzdGljIG9yZGVyaW5nIG9mIGBFdmVudFBsdWdpbmBzLiBBIGNv
bnZlbmllbnQgd2F5IHRvIHJlYXNvbiBhYm91dFxuXHQgKiBwbHVnaW5zLCB3aXRob3V0IGhhdmlu
ZyB0byBwYWNrYWdlIGV2ZXJ5IG9uZSBvZiB0aGVtLiBUaGlzIGlzIGJldHRlciB0aGFuXG5cdCAq
IGhhdmluZyBwbHVnaW5zIGJlIG9yZGVyZWQgaW4gdGhlIHNhbWUgb3JkZXIgdGhhdCB0aGV5IGFy
ZSBpbmplY3RlZCBiZWNhdXNlXG5cdCAqIHRoYXQgb3JkZXJpbmcgd291bGQgYmUgaW5mbHVlbmNl
ZCBieSB0aGUgcGFja2FnaW5nIG9yZGVyLlxuXHQgKiBgUmVzcG9uZGVyRXZlbnRQbHVnaW5gIG11
c3Qgb2NjdXIgYmVmb3JlIGBTaW1wbGVFdmVudFBsdWdpbmAgc28gdGhhdFxuXHQgKiBwcmV2ZW50
aW5nIGRlZmF1bHQgb24gZXZlbnRzIGlzIGNvbnZlbmllbnQgaW4gYFNpbXBsZUV2ZW50UGx1Z2lu
YCBoYW5kbGVycy5cblx0ICovXG5cdFxuXHR2YXIgRGVmYXVsdEV2ZW50UGx1Z2luT3JkZXIgPSBb
J1Jlc3BvbmRlckV2ZW50UGx1Z2luJywgJ1NpbXBsZUV2ZW50UGx1Z2luJywgJ1RhcEV2ZW50UGx1
Z2luJywgJ0VudGVyTGVhdmVFdmVudFBsdWdpbicsICdDaGFuZ2VFdmVudFBsdWdpbicsICdTZWxl
Y3RFdmVudFBsdWdpbicsICdCZWZvcmVJbnB1dEV2ZW50UGx1Z2luJ107XG5cdFxuXHRtb2R1bGUu
ZXhwb3J0cyA9IERlZmF1bHRFdmVudFBsdWdpbk9yZGVyO1xuXG4vKioqLyB9LFxuLyogMTMxICov
XG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtc
blxuXHQvKipcblx0ICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0
ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBs
aWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJ
Q0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4g
YWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0
aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpcblx0ICovXG5cdFxu
XHQndXNlIHN0cmljdCc7XG5cdFxuXHR2YXIgRXZlbnRQcm9wYWdhdG9ycyA9IF9fd2VicGFja19y
ZXF1aXJlX18oMjApO1xuXHR2YXIgUmVhY3RET01Db21wb25lbnRUcmVlID0gX193ZWJwYWNrX3Jl
cXVpcmVfXyg1KTtcblx0dmFyIFN5bnRoZXRpY01vdXNlRXZlbnQgPSBfX3dlYnBhY2tfcmVxdWly
ZV9fKDI2KTtcblx0XG5cdHZhciBldmVudFR5cGVzID0ge1xuXHQgIG1vdXNlRW50ZXI6IHtcblx0
ICAgIHJlZ2lzdHJhdGlvbk5hbWU6ICdvbk1vdXNlRW50ZXInLFxuXHQgICAgZGVwZW5kZW5jaWVz
OiBbJ3RvcE1vdXNlT3V0JywgJ3RvcE1vdXNlT3ZlciddXG5cdCAgfSxcblx0ICBtb3VzZUxlYXZl
OiB7XG5cdCAgICByZWdpc3RyYXRpb25OYW1lOiAnb25Nb3VzZUxlYXZlJyxcblx0ICAgIGRlcGVu
ZGVuY2llczogWyd0b3BNb3VzZU91dCcsICd0b3BNb3VzZU92ZXInXVxuXHQgIH1cblx0fTtcblx0
XG5cdHZhciBFbnRlckxlYXZlRXZlbnRQbHVnaW4gPSB7XG5cdCAgZXZlbnRUeXBlczogZXZlbnRU
eXBlcyxcblx0XG5cdCAgLyoqXG5cdCAgICogRm9yIGFsbW9zdCBldmVyeSBpbnRlcmFjdGlvbiB3
ZSBjYXJlIGFib3V0LCB0aGVyZSB3aWxsIGJlIGJvdGggYSB0b3AtbGV2ZWxcblx0ICAgKiBgbW91
c2VvdmVyYCBhbmQgYG1vdXNlb3V0YCBldmVudCB0aGF0IG9jY3Vycy4gT25seSB1c2UgYG1vdXNl
b3V0YCBzbyB0aGF0XG5cdCAgICogd2UgZG8gbm90IGV4dHJhY3QgZHVwbGljYXRlIGV2ZW50cy4g
SG93ZXZlciwgbW92aW5nIHRoZSBtb3VzZSBpbnRvIHRoZVxuXHQgICAqIGJyb3dzZXIgZnJvbSBv
dXRzaWRlIHdpbGwgbm90IGZpcmUgYSBgbW91c2VvdXRgIGV2ZW50LiBJbiB0aGlzIGNhc2UsIHdl
IHVzZVxuXHQgICAqIHRoZSBgbW91c2VvdmVyYCB0b3AtbGV2ZWwgZXZlbnQuXG5cdCAgICovXG5c
dCAgZXh0cmFjdEV2ZW50czogZnVuY3Rpb24gKHRvcExldmVsVHlwZSwgdGFyZ2V0SW5zdCwgbmF0
aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KSB7XG5cdCAgICBpZiAodG9wTGV2ZWxUeXBlID09
PSAndG9wTW91c2VPdmVyJyAmJiAobmF0aXZlRXZlbnQucmVsYXRlZFRhcmdldCB8fCBuYXRpdmVF
dmVudC5mcm9tRWxlbWVudCkpIHtcblx0ICAgICAgcmV0dXJuIG51bGw7XG5cdCAgICB9XG5cdCAg
ICBpZiAodG9wTGV2ZWxUeXBlICE9PSAndG9wTW91c2VPdXQnICYmIHRvcExldmVsVHlwZSAhPT0g
J3RvcE1vdXNlT3ZlcicpIHtcblx0ICAgICAgLy8gTXVzdCBub3QgYmUgYSBtb3VzZSBpbiBvciBt
b3VzZSBvdXQgLSBpZ25vcmluZy5cblx0ICAgICAgcmV0dXJuIG51bGw7XG5cdCAgICB9XG5cdFxu
XHQgICAgdmFyIHdpbjtcblx0ICAgIGlmIChuYXRpdmVFdmVudFRhcmdldC53aW5kb3cgPT09IG5h
dGl2ZUV2ZW50VGFyZ2V0KSB7XG5cdCAgICAgIC8vIGBuYXRpdmVFdmVudFRhcmdldGAgaXMgcHJv
YmFibHkgYSB3aW5kb3cgb2JqZWN0LlxuXHQgICAgICB3aW4gPSBuYXRpdmVFdmVudFRhcmdldDtc
blx0ICAgIH0gZWxzZSB7XG5cdCAgICAgIC8vIFRPRE86IEZpZ3VyZSBvdXQgd2h5IGBvd25lckRv
Y3VtZW50YCBpcyBzb21ldGltZXMgdW5kZWZpbmVkIGluIElFOC5cblx0ICAgICAgdmFyIGRvYyA9
IG5hdGl2ZUV2ZW50VGFyZ2V0Lm93bmVyRG9jdW1lbnQ7XG5cdCAgICAgIGlmIChkb2MpIHtcblx0
ICAgICAgICB3aW4gPSBkb2MuZGVmYXVsdFZpZXcgfHwgZG9jLnBhcmVudFdpbmRvdztcblx0ICAg
ICAgfSBlbHNlIHtcblx0ICAgICAgICB3aW4gPSB3aW5kb3c7XG5cdCAgICAgIH1cblx0ICAgIH1c
blx0XG5cdCAgICB2YXIgZnJvbTtcblx0ICAgIHZhciB0bztcblx0ICAgIGlmICh0b3BMZXZlbFR5
cGUgPT09ICd0b3BNb3VzZU91dCcpIHtcblx0ICAgICAgZnJvbSA9IHRhcmdldEluc3Q7XG5cdCAg
ICAgIHZhciByZWxhdGVkID0gbmF0aXZlRXZlbnQucmVsYXRlZFRhcmdldCB8fCBuYXRpdmVFdmVu
dC50b0VsZW1lbnQ7XG5cdCAgICAgIHRvID0gcmVsYXRlZCA/IFJlYWN0RE9NQ29tcG9uZW50VHJl
ZS5nZXRDbG9zZXN0SW5zdGFuY2VGcm9tTm9kZShyZWxhdGVkKSA6IG51bGw7XG5cdCAgICB9IGVs
c2Uge1xuXHQgICAgICAvLyBNb3ZpbmcgdG8gYSBub2RlIGZyb20gb3V0c2lkZSB0aGUgd2luZG93
LlxuXHQgICAgICBmcm9tID0gbnVsbDtcblx0ICAgICAgdG8gPSB0YXJnZXRJbnN0O1xuXHQgICAg
fVxuXHRcblx0ICAgIGlmIChmcm9tID09PSB0bykge1xuXHQgICAgICAvLyBOb3RoaW5nIHBlcnRh
aW5zIHRvIG91ciBtYW5hZ2VkIGNvbXBvbmVudHMuXG5cdCAgICAgIHJldHVybiBudWxsO1xuXHQg
ICAgfVxuXHRcblx0ICAgIHZhciBmcm9tTm9kZSA9IGZyb20gPT0gbnVsbCA/IHdpbiA6IFJlYWN0
RE9NQ29tcG9uZW50VHJlZS5nZXROb2RlRnJvbUluc3RhbmNlKGZyb20pO1xuXHQgICAgdmFyIHRv
Tm9kZSA9IHRvID09IG51bGwgPyB3aW4gOiBSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0Tm9kZUZy
b21JbnN0YW5jZSh0byk7XG5cdFxuXHQgICAgdmFyIGxlYXZlID0gU3ludGhldGljTW91c2VFdmVu
dC5nZXRQb29sZWQoZXZlbnRUeXBlcy5tb3VzZUxlYXZlLCBmcm9tLCBuYXRpdmVFdmVudCwgbmF0
aXZlRXZlbnRUYXJnZXQpO1xuXHQgICAgbGVhdmUudHlwZSA9ICdtb3VzZWxlYXZlJztcblx0ICAg
IGxlYXZlLnRhcmdldCA9IGZyb21Ob2RlO1xuXHQgICAgbGVhdmUucmVsYXRlZFRhcmdldCA9IHRv
Tm9kZTtcblx0XG5cdCAgICB2YXIgZW50ZXIgPSBTeW50aGV0aWNNb3VzZUV2ZW50LmdldFBvb2xl
ZChldmVudFR5cGVzLm1vdXNlRW50ZXIsIHRvLCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJn
ZXQpO1xuXHQgICAgZW50ZXIudHlwZSA9ICdtb3VzZWVudGVyJztcblx0ICAgIGVudGVyLnRhcmdl
dCA9IHRvTm9kZTtcblx0ICAgIGVudGVyLnJlbGF0ZWRUYXJnZXQgPSBmcm9tTm9kZTtcblx0XG5c
dCAgICBFdmVudFByb3BhZ2F0b3JzLmFjY3VtdWxhdGVFbnRlckxlYXZlRGlzcGF0Y2hlcyhsZWF2
ZSwgZW50ZXIsIGZyb20sIHRvKTtcblx0XG5cdCAgICByZXR1cm4gW2xlYXZlLCBlbnRlcl07XG5c
dCAgfVxuXHR9O1xuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBFbnRlckxlYXZlRXZlbnRQbHVnaW47
XG5cbi8qKiovIH0sXG4vKiAxMzIgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywg
X193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxMy1wcmVz
ZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQg
KiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5z
ZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBv
ZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCBy
aWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0
b3J5LlxuXHQgKlxuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdHZhciBfYXNzaWdu
ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0KTtcblx0XG5cdHZhciBQb29sZWRDbGFzcyA9IF9fd2Vi
cGFja19yZXF1aXJlX18oMTMpO1xuXHRcblx0dmFyIGdldFRleHRDb250ZW50QWNjZXNzb3IgPSBf
X3dlYnBhY2tfcmVxdWlyZV9fKDczKTtcblx0XG5cdC8qKlxuXHQgKiBUaGlzIGhlbHBlciBjbGFz
cyBzdG9yZXMgaW5mb3JtYXRpb24gYWJvdXQgdGV4dCBjb250ZW50IG9mIGEgdGFyZ2V0IG5vZGUs
XG5cdCAqIGFsbG93aW5nIGNvbXBhcmlzb24gb2YgY29udGVudCBiZWZvcmUgYW5kIGFmdGVyIGEg
Z2l2ZW4gZXZlbnQuXG5cdCAqXG5cdCAqIElkZW50aWZ5IHRoZSBub2RlIHdoZXJlIHNlbGVjdGlv
biBjdXJyZW50bHkgYmVnaW5zLCB0aGVuIG9ic2VydmVcblx0ICogYm90aCBpdHMgdGV4dCBjb250
ZW50IGFuZCBpdHMgY3VycmVudCBwb3NpdGlvbiBpbiB0aGUgRE9NLiBTaW5jZSB0aGVcblx0ICog
YnJvd3NlciBtYXkgbmF0aXZlbHkgcmVwbGFjZSB0aGUgdGFyZ2V0IG5vZGUgZHVyaW5nIGNvbXBv
c2l0aW9uLCB3ZSBjYW5cblx0ICogdXNlIGl0cyBwb3NpdGlvbiB0byBmaW5kIGl0cyByZXBsYWNl
bWVudC5cblx0ICpcblx0ICogQHBhcmFtIHtET01FdmVudFRhcmdldH0gcm9vdFxuXHQgKi9cblx0
ZnVuY3Rpb24gRmFsbGJhY2tDb21wb3NpdGlvblN0YXRlKHJvb3QpIHtcblx0ICB0aGlzLl9yb290
ID0gcm9vdDtcblx0ICB0aGlzLl9zdGFydFRleHQgPSB0aGlzLmdldFRleHQoKTtcblx0ICB0aGlz
Ll9mYWxsYmFja1RleHQgPSBudWxsO1xuXHR9XG5cdFxuXHRfYXNzaWduKEZhbGxiYWNrQ29tcG9z
aXRpb25TdGF0ZS5wcm90b3R5cGUsIHtcblx0ICBkZXN0cnVjdG9yOiBmdW5jdGlvbiAoKSB7XG5c
dCAgICB0aGlzLl9yb290ID0gbnVsbDtcblx0ICAgIHRoaXMuX3N0YXJ0VGV4dCA9IG51bGw7XG5c
dCAgICB0aGlzLl9mYWxsYmFja1RleHQgPSBudWxsO1xuXHQgIH0sXG5cdFxuXHQgIC8qKlxuXHQg
ICAqIEdldCBjdXJyZW50IHRleHQgb2YgaW5wdXQuXG5cdCAgICpcblx0ICAgKiBAcmV0dXJuIHtz
dHJpbmd9XG5cdCAgICovXG5cdCAgZ2V0VGV4dDogZnVuY3Rpb24gKCkge1xuXHQgICAgaWYgKCd2
YWx1ZScgaW4gdGhpcy5fcm9vdCkge1xuXHQgICAgICByZXR1cm4gdGhpcy5fcm9vdC52YWx1ZTtc
blx0ICAgIH1cblx0ICAgIHJldHVybiB0aGlzLl9yb290W2dldFRleHRDb250ZW50QWNjZXNzb3Io
KV07XG5cdCAgfSxcblx0XG5cdCAgLyoqXG5cdCAgICogRGV0ZXJtaW5lIHRoZSBkaWZmZXJpbmcg
c3Vic3RyaW5nIGJldHdlZW4gdGhlIGluaXRpYWxseSBzdG9yZWRcblx0ICAgKiB0ZXh0IGNvbnRl
bnQgYW5kIHRoZSBjdXJyZW50IGNvbnRlbnQuXG5cdCAgICpcblx0ICAgKiBAcmV0dXJuIHtzdHJp
bmd9XG5cdCAgICovXG5cdCAgZ2V0RGF0YTogZnVuY3Rpb24gKCkge1xuXHQgICAgaWYgKHRoaXMu
X2ZhbGxiYWNrVGV4dCkge1xuXHQgICAgICByZXR1cm4gdGhpcy5fZmFsbGJhY2tUZXh0O1xuXHQg
ICAgfVxuXHRcblx0ICAgIHZhciBzdGFydDtcblx0ICAgIHZhciBzdGFydFZhbHVlID0gdGhpcy5f
c3RhcnRUZXh0O1xuXHQgICAgdmFyIHN0YXJ0TGVuZ3RoID0gc3RhcnRWYWx1ZS5sZW5ndGg7XG5c
dCAgICB2YXIgZW5kO1xuXHQgICAgdmFyIGVuZFZhbHVlID0gdGhpcy5nZXRUZXh0KCk7XG5cdCAg
ICB2YXIgZW5kTGVuZ3RoID0gZW5kVmFsdWUubGVuZ3RoO1xuXHRcblx0ICAgIGZvciAoc3RhcnQg
PSAwOyBzdGFydCA8IHN0YXJ0TGVuZ3RoOyBzdGFydCsrKSB7XG5cdCAgICAgIGlmIChzdGFydFZh
bHVlW3N0YXJ0XSAhPT0gZW5kVmFsdWVbc3RhcnRdKSB7XG5cdCAgICAgICAgYnJlYWs7XG5cdCAg
ICAgIH1cblx0ICAgIH1cblx0XG5cdCAgICB2YXIgbWluRW5kID0gc3RhcnRMZW5ndGggLSBzdGFy
dDtcblx0ICAgIGZvciAoZW5kID0gMTsgZW5kIDw9IG1pbkVuZDsgZW5kKyspIHtcblx0ICAgICAg
aWYgKHN0YXJ0VmFsdWVbc3RhcnRMZW5ndGggLSBlbmRdICE9PSBlbmRWYWx1ZVtlbmRMZW5ndGgg
LSBlbmRdKSB7XG5cdCAgICAgICAgYnJlYWs7XG5cdCAgICAgIH1cblx0ICAgIH1cblx0XG5cdCAg
ICB2YXIgc2xpY2VUYWlsID0gZW5kID4gMSA/IDEgLSBlbmQgOiB1bmRlZmluZWQ7XG5cdCAgICB0
aGlzLl9mYWxsYmFja1RleHQgPSBlbmRWYWx1ZS5zbGljZShzdGFydCwgc2xpY2VUYWlsKTtcblx0
ICAgIHJldHVybiB0aGlzLl9mYWxsYmFja1RleHQ7XG5cdCAgfVxuXHR9KTtcblx0XG5cdFBvb2xl
ZENsYXNzLmFkZFBvb2xpbmdUbyhGYWxsYmFja0NvbXBvc2l0aW9uU3RhdGUpO1xuXHRcblx0bW9k
dWxlLmV4cG9ydHMgPSBGYWxsYmFja0NvbXBvc2l0aW9uU3RhdGU7XG5cbi8qKiovIH0sXG4vKiAx
MzMgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVf
Xykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5j
LlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2Rl
IGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0
ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVl
LiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5k
IGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKi9c
blx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdHZhciBET01Qcm9wZXJ0eSA9IF9fd2VicGFja19y
ZXF1aXJlX18oMTUpO1xuXHRcblx0dmFyIE1VU1RfVVNFX1BST1BFUlRZID0gRE9NUHJvcGVydHku
aW5qZWN0aW9uLk1VU1RfVVNFX1BST1BFUlRZO1xuXHR2YXIgSEFTX0JPT0xFQU5fVkFMVUUgPSBE
T01Qcm9wZXJ0eS5pbmplY3Rpb24uSEFTX0JPT0xFQU5fVkFMVUU7XG5cdHZhciBIQVNfTlVNRVJJ
Q19WQUxVRSA9IERPTVByb3BlcnR5LmluamVjdGlvbi5IQVNfTlVNRVJJQ19WQUxVRTtcblx0dmFy
IEhBU19QT1NJVElWRV9OVU1FUklDX1ZBTFVFID0gRE9NUHJvcGVydHkuaW5qZWN0aW9uLkhBU19Q
T1NJVElWRV9OVU1FUklDX1ZBTFVFO1xuXHR2YXIgSEFTX09WRVJMT0FERURfQk9PTEVBTl9WQUxV
RSA9IERPTVByb3BlcnR5LmluamVjdGlvbi5IQVNfT1ZFUkxPQURFRF9CT09MRUFOX1ZBTFVFO1xu
XHRcblx0dmFyIEhUTUxET01Qcm9wZXJ0eUNvbmZpZyA9IHtcblx0ICBpc0N1c3RvbUF0dHJpYnV0
ZTogUmVnRXhwLnByb3RvdHlwZS50ZXN0LmJpbmQobmV3IFJlZ0V4cCgnXihkYXRhfGFyaWEpLVsn
ICsgRE9NUHJvcGVydHkuQVRUUklCVVRFX05BTUVfQ0hBUiArICddKiQnKSksXG5cdCAgUHJvcGVy
dGllczoge1xuXHQgICAgLyoqXG5cdCAgICAgKiBTdGFuZGFyZCBQcm9wZXJ0aWVzXG5cdCAgICAg
Ki9cblx0ICAgIGFjY2VwdDogMCxcblx0ICAgIGFjY2VwdENoYXJzZXQ6IDAsXG5cdCAgICBhY2Nl
c3NLZXk6IDAsXG5cdCAgICBhY3Rpb246IDAsXG5cdCAgICBhbGxvd0Z1bGxTY3JlZW46IEhBU19C
T09MRUFOX1ZBTFVFLFxuXHQgICAgYWxsb3dUcmFuc3BhcmVuY3k6IDAsXG5cdCAgICBhbHQ6IDAs
XG5cdCAgICAvLyBzcGVjaWZpZXMgdGFyZ2V0IGNvbnRleHQgZm9yIGxpbmtzIHdpdGggYHByZWxv
YWRgIHR5cGVcblx0ICAgIGFzOiAwLFxuXHQgICAgYXN5bmM6IEhBU19CT09MRUFOX1ZBTFVFLFxu
XHQgICAgYXV0b0NvbXBsZXRlOiAwLFxuXHQgICAgLy8gYXV0b0ZvY3VzIGlzIHBvbHlmaWxsZWQv
bm9ybWFsaXplZCBieSBBdXRvRm9jdXNVdGlsc1xuXHQgICAgLy8gYXV0b0ZvY3VzOiBIQVNfQk9P
TEVBTl9WQUxVRSxcblx0ICAgIGF1dG9QbGF5OiBIQVNfQk9PTEVBTl9WQUxVRSxcblx0ICAgIGNh
cHR1cmU6IEhBU19CT09MRUFOX1ZBTFVFLFxuXHQgICAgY2VsbFBhZGRpbmc6IDAsXG5cdCAgICBj
ZWxsU3BhY2luZzogMCxcblx0ICAgIGNoYXJTZXQ6IDAsXG5cdCAgICBjaGFsbGVuZ2U6IDAsXG5c
dCAgICBjaGVja2VkOiBNVVNUX1VTRV9QUk9QRVJUWSB8IEhBU19CT09MRUFOX1ZBTFVFLFxuXHQg
ICAgY2l0ZTogMCxcblx0ICAgIGNsYXNzSUQ6IDAsXG5cdCAgICBjbGFzc05hbWU6IDAsXG5cdCAg
ICBjb2xzOiBIQVNfUE9TSVRJVkVfTlVNRVJJQ19WQUxVRSxcblx0ICAgIGNvbFNwYW46IDAsXG5c
dCAgICBjb250ZW50OiAwLFxuXHQgICAgY29udGVudEVkaXRhYmxlOiAwLFxuXHQgICAgY29udGV4
dE1lbnU6IDAsXG5cdCAgICBjb250cm9sczogSEFTX0JPT0xFQU5fVkFMVUUsXG5cdCAgICBjb29y
ZHM6IDAsXG5cdCAgICBjcm9zc09yaWdpbjogMCxcblx0ICAgIGRhdGE6IDAsIC8vIEZvciBgPG9i
amVjdCAvPmAgYWN0cyBhcyBgc3JjYC5cblx0ICAgIGRhdGVUaW1lOiAwLFxuXHQgICAgJ2RlZmF1
bHQnOiBIQVNfQk9PTEVBTl9WQUxVRSxcblx0ICAgIGRlZmVyOiBIQVNfQk9PTEVBTl9WQUxVRSxc
blx0ICAgIGRpcjogMCxcblx0ICAgIGRpc2FibGVkOiBIQVNfQk9PTEVBTl9WQUxVRSxcblx0ICAg
IGRvd25sb2FkOiBIQVNfT1ZFUkxPQURFRF9CT09MRUFOX1ZBTFVFLFxuXHQgICAgZHJhZ2dhYmxl
OiAwLFxuXHQgICAgZW5jVHlwZTogMCxcblx0ICAgIGZvcm06IDAsXG5cdCAgICBmb3JtQWN0aW9u
OiAwLFxuXHQgICAgZm9ybUVuY1R5cGU6IDAsXG5cdCAgICBmb3JtTWV0aG9kOiAwLFxuXHQgICAg
Zm9ybU5vVmFsaWRhdGU6IEhBU19CT09MRUFOX1ZBTFVFLFxuXHQgICAgZm9ybVRhcmdldDogMCxc
blx0ICAgIGZyYW1lQm9yZGVyOiAwLFxuXHQgICAgaGVhZGVyczogMCxcblx0ICAgIGhlaWdodDog
MCxcblx0ICAgIGhpZGRlbjogSEFTX0JPT0xFQU5fVkFMVUUsXG5cdCAgICBoaWdoOiAwLFxuXHQg
ICAgaHJlZjogMCxcblx0ICAgIGhyZWZMYW5nOiAwLFxuXHQgICAgaHRtbEZvcjogMCxcblx0ICAg
IGh0dHBFcXVpdjogMCxcblx0ICAgIGljb246IDAsXG5cdCAgICBpZDogMCxcblx0ICAgIGlucHV0
TW9kZTogMCxcblx0ICAgIGludGVncml0eTogMCxcblx0ICAgIGlzOiAwLFxuXHQgICAga2V5UGFy
YW1zOiAwLFxuXHQgICAga2V5VHlwZTogMCxcblx0ICAgIGtpbmQ6IDAsXG5cdCAgICBsYWJlbDog
MCxcblx0ICAgIGxhbmc6IDAsXG5cdCAgICBsaXN0OiAwLFxuXHQgICAgbG9vcDogSEFTX0JPT0xF
QU5fVkFMVUUsXG5cdCAgICBsb3c6IDAsXG5cdCAgICBtYW5pZmVzdDogMCxcblx0ICAgIG1hcmdp
bkhlaWdodDogMCxcblx0ICAgIG1hcmdpbldpZHRoOiAwLFxuXHQgICAgbWF4OiAwLFxuXHQgICAg
bWF4TGVuZ3RoOiAwLFxuXHQgICAgbWVkaWE6IDAsXG5cdCAgICBtZWRpYUdyb3VwOiAwLFxuXHQg
ICAgbWV0aG9kOiAwLFxuXHQgICAgbWluOiAwLFxuXHQgICAgbWluTGVuZ3RoOiAwLFxuXHQgICAg
Ly8gQ2F1dGlvbjsgYG9wdGlvbi5zZWxlY3RlZGAgaXMgbm90IHVwZGF0ZWQgaWYgYHNlbGVjdC5t
dWx0aXBsZWAgaXNcblx0ICAgIC8vIGRpc2FibGVkIHdpdGggYHJlbW92ZUF0dHJpYnV0ZWAuXG5c
dCAgICBtdWx0aXBsZTogTVVTVF9VU0VfUFJPUEVSVFkgfCBIQVNfQk9PTEVBTl9WQUxVRSxcblx0
ICAgIG11dGVkOiBNVVNUX1VTRV9QUk9QRVJUWSB8IEhBU19CT09MRUFOX1ZBTFVFLFxuXHQgICAg
bmFtZTogMCxcblx0ICAgIG5vbmNlOiAwLFxuXHQgICAgbm9WYWxpZGF0ZTogSEFTX0JPT0xFQU5f
VkFMVUUsXG5cdCAgICBvcGVuOiBIQVNfQk9PTEVBTl9WQUxVRSxcblx0ICAgIG9wdGltdW06IDAs
XG5cdCAgICBwYXR0ZXJuOiAwLFxuXHQgICAgcGxhY2Vob2xkZXI6IDAsXG5cdCAgICBwbGF5c0lu
bGluZTogSEFTX0JPT0xFQU5fVkFMVUUsXG5cdCAgICBwb3N0ZXI6IDAsXG5cdCAgICBwcmVsb2Fk
OiAwLFxuXHQgICAgcHJvZmlsZTogMCxcblx0ICAgIHJhZGlvR3JvdXA6IDAsXG5cdCAgICByZWFk
T25seTogSEFTX0JPT0xFQU5fVkFMVUUsXG5cdCAgICByZWZlcnJlclBvbGljeTogMCxcblx0ICAg
IHJlbDogMCxcblx0ICAgIHJlcXVpcmVkOiBIQVNfQk9PTEVBTl9WQUxVRSxcblx0ICAgIHJldmVy
c2VkOiBIQVNfQk9PTEVBTl9WQUxVRSxcblx0ICAgIHJvbGU6IDAsXG5cdCAgICByb3dzOiBIQVNf
UE9TSVRJVkVfTlVNRVJJQ19WQUxVRSxcblx0ICAgIHJvd1NwYW46IEhBU19OVU1FUklDX1ZBTFVF
LFxuXHQgICAgc2FuZGJveDogMCxcblx0ICAgIHNjb3BlOiAwLFxuXHQgICAgc2NvcGVkOiBIQVNf
Qk9PTEVBTl9WQUxVRSxcblx0ICAgIHNjcm9sbGluZzogMCxcblx0ICAgIHNlYW1sZXNzOiBIQVNf
Qk9PTEVBTl9WQUxVRSxcblx0ICAgIHNlbGVjdGVkOiBNVVNUX1VTRV9QUk9QRVJUWSB8IEhBU19C
T09MRUFOX1ZBTFVFLFxuXHQgICAgc2hhcGU6IDAsXG5cdCAgICBzaXplOiBIQVNfUE9TSVRJVkVf
TlVNRVJJQ19WQUxVRSxcblx0ICAgIHNpemVzOiAwLFxuXHQgICAgc3BhbjogSEFTX1BPU0lUSVZF
X05VTUVSSUNfVkFMVUUsXG5cdCAgICBzcGVsbENoZWNrOiAwLFxuXHQgICAgc3JjOiAwLFxuXHQg
ICAgc3JjRG9jOiAwLFxuXHQgICAgc3JjTGFuZzogMCxcblx0ICAgIHNyY1NldDogMCxcblx0ICAg
IHN0YXJ0OiBIQVNfTlVNRVJJQ19WQUxVRSxcblx0ICAgIHN0ZXA6IDAsXG5cdCAgICBzdHlsZTog
MCxcblx0ICAgIHN1bW1hcnk6IDAsXG5cdCAgICB0YWJJbmRleDogMCxcblx0ICAgIHRhcmdldDog
MCxcblx0ICAgIHRpdGxlOiAwLFxuXHQgICAgLy8gU2V0dGluZyAudHlwZSB0aHJvd3Mgb24gbm9u
LTxpbnB1dD4gdGFnc1xuXHQgICAgdHlwZTogMCxcblx0ICAgIHVzZU1hcDogMCxcblx0ICAgIHZh
bHVlOiAwLFxuXHQgICAgd2lkdGg6IDAsXG5cdCAgICB3bW9kZTogMCxcblx0ICAgIHdyYXA6IDAs
XG5cdFxuXHQgICAgLyoqXG5cdCAgICAgKiBSREZhIFByb3BlcnRpZXNcblx0ICAgICAqL1xuXHQg
ICAgYWJvdXQ6IDAsXG5cdCAgICBkYXRhdHlwZTogMCxcblx0ICAgIGlubGlzdDogMCxcblx0ICAg
IHByZWZpeDogMCxcblx0ICAgIC8vIHByb3BlcnR5IGlzIGFsc28gc3VwcG9ydGVkIGZvciBPcGVu
R3JhcGggaW4gbWV0YSB0YWdzLlxuXHQgICAgcHJvcGVydHk6IDAsXG5cdCAgICByZXNvdXJjZTog
MCxcblx0ICAgICd0eXBlb2YnOiAwLFxuXHQgICAgdm9jYWI6IDAsXG5cdFxuXHQgICAgLyoqXG5c
dCAgICAgKiBOb24tc3RhbmRhcmQgUHJvcGVydGllc1xuXHQgICAgICovXG5cdCAgICAvLyBhdXRv
Q2FwaXRhbGl6ZSBhbmQgYXV0b0NvcnJlY3QgYXJlIHN1cHBvcnRlZCBpbiBNb2JpbGUgU2FmYXJp
IGZvclxuXHQgICAgLy8ga2V5Ym9hcmQgaGludHMuXG5cdCAgICBhdXRvQ2FwaXRhbGl6ZTogMCxc
blx0ICAgIGF1dG9Db3JyZWN0OiAwLFxuXHQgICAgLy8gYXV0b1NhdmUgYWxsb3dzIFdlYktpdC9C
bGluayB0byBwZXJzaXN0IHZhbHVlcyBvZiBpbnB1dCBmaWVsZHMgb24gcGFnZSByZWxvYWRzXG5c
dCAgICBhdXRvU2F2ZTogMCxcblx0ICAgIC8vIGNvbG9yIGlzIGZvciBTYWZhcmkgbWFzay1pY29u
IGxpbmtcblx0ICAgIGNvbG9yOiAwLFxuXHQgICAgLy8gaXRlbVByb3AsIGl0ZW1TY29wZSwgaXRl
bVR5cGUgYXJlIGZvclxuXHQgICAgLy8gTWljcm9kYXRhIHN1cHBvcnQuIFNlZSBodHRwOi8vc2No
ZW1hLm9yZy9kb2NzL2dzLmh0bWxcblx0ICAgIGl0ZW1Qcm9wOiAwLFxuXHQgICAgaXRlbVNjb3Bl
OiBIQVNfQk9PTEVBTl9WQUxVRSxcblx0ICAgIGl0ZW1UeXBlOiAwLFxuXHQgICAgLy8gaXRlbUlE
IGFuZCBpdGVtUmVmIGFyZSBmb3IgTWljcm9kYXRhIHN1cHBvcnQgYXMgd2VsbCBidXRcblx0ICAg
IC8vIG9ubHkgc3BlY2lmaWVkIGluIHRoZSBXSEFUV0cgc3BlYyBkb2N1bWVudC4gU2VlXG5cdCAg
ICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9taWNyb2RhdGEuaHRt
bCNtaWNyb2RhdGEtZG9tLWFwaVxuXHQgICAgaXRlbUlEOiAwLFxuXHQgICAgaXRlbVJlZjogMCxc
blx0ICAgIC8vIHJlc3VsdHMgc2hvdyBsb29raW5nIGdsYXNzIGljb24gYW5kIHJlY2VudCBzZWFy
Y2hlcyBvbiBpbnB1dFxuXHQgICAgLy8gc2VhcmNoIGZpZWxkcyBpbiBXZWJLaXQvQmxpbmtcblx0
ICAgIHJlc3VsdHM6IDAsXG5cdCAgICAvLyBJRS1vbmx5IGF0dHJpYnV0ZSB0aGF0IHNwZWNpZmll
cyBzZWN1cml0eSByZXN0cmljdGlvbnMgb24gYW4gaWZyYW1lXG5cdCAgICAvLyBhcyBhbiBhbHRl
cm5hdGl2ZSB0byB0aGUgc2FuZGJveCBhdHRyaWJ1dGUgb24gSUU8MTBcblx0ICAgIHNlY3VyaXR5
OiAwLFxuXHQgICAgLy8gSUUtb25seSBhdHRyaWJ1dGUgdGhhdCBjb250cm9scyBmb2N1cyBiZWhh
dmlvclxuXHQgICAgdW5zZWxlY3RhYmxlOiAwXG5cdCAgfSxcblx0ICBET01BdHRyaWJ1dGVOYW1l
czoge1xuXHQgICAgYWNjZXB0Q2hhcnNldDogJ2FjY2VwdC1jaGFyc2V0Jyxcblx0ICAgIGNsYXNz
TmFtZTogJ2NsYXNzJyxcblx0ICAgIGh0bWxGb3I6ICdmb3InLFxuXHQgICAgaHR0cEVxdWl2OiAn
aHR0cC1lcXVpdidcblx0ICB9LFxuXHQgIERPTVByb3BlcnR5TmFtZXM6IHt9LFxuXHQgIERPTU11
dGF0aW9uTWV0aG9kczoge1xuXHQgICAgdmFsdWU6IGZ1bmN0aW9uIChub2RlLCB2YWx1ZSkge1xu
XHQgICAgICBpZiAodmFsdWUgPT0gbnVsbCkge1xuXHQgICAgICAgIHJldHVybiBub2RlLnJlbW92
ZUF0dHJpYnV0ZSgndmFsdWUnKTtcblx0ICAgICAgfVxuXHRcblx0ICAgICAgLy8gTnVtYmVyIGlu
cHV0cyBnZXQgc3BlY2lhbCB0cmVhdG1lbnQgZHVlIHRvIHNvbWUgZWRnZSBjYXNlcyBpblxuXHQg
ICAgICAvLyBDaHJvbWUuIExldCBldmVyeXRoaW5nIGVsc2UgYXNzaWduIHRoZSB2YWx1ZSBhdHRy
aWJ1dGUgYXMgbm9ybWFsLlxuXHQgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2sv
cmVhY3QvaXNzdWVzLzcyNTMjaXNzdWVjb21tZW50LTIzNjA3NDMyNlxuXHQgICAgICBpZiAobm9k
ZS50eXBlICE9PSAnbnVtYmVyJyB8fCBub2RlLmhhc0F0dHJpYnV0ZSgndmFsdWUnKSA9PT0gZmFs
c2UpIHtcblx0ICAgICAgICBub2RlLnNldEF0dHJpYnV0ZSgndmFsdWUnLCAnJyArIHZhbHVlKTtc
blx0ICAgICAgfSBlbHNlIGlmIChub2RlLnZhbGlkaXR5ICYmICFub2RlLnZhbGlkaXR5LmJhZElu
cHV0ICYmIG5vZGUub3duZXJEb2N1bWVudC5hY3RpdmVFbGVtZW50ICE9PSBub2RlKSB7XG5cdCAg
ICAgICAgLy8gRG9uJ3QgYXNzaWduIGFuIGF0dHJpYnV0ZSBpZiB2YWxpZGF0aW9uIHJlcG9ydHMg
YmFkXG5cdCAgICAgICAgLy8gaW5wdXQuIENocm9tZSB3aWxsIGNsZWFyIHRoZSB2YWx1ZS4gQWRk
aXRpb25hbGx5LCBkb24ndFxuXHQgICAgICAgIC8vIG9wZXJhdGUgb24gaW5wdXRzIHRoYXQgaGF2
ZSBmb2N1cywgb3RoZXJ3aXNlIENocm9tZSBtaWdodFxuXHQgICAgICAgIC8vIHN0cmlwIG9mZiB0
cmFpbGluZyBkZWNpbWFsIHBsYWNlcyBhbmQgY2F1c2UgdGhlIHVzZXInc1xuXHQgICAgICAgIC8v
IGN1cnNvciBwb3NpdGlvbiB0byBqdW1wIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGlucHV0Llxu
XHQgICAgICAgIC8vXG5cdCAgICAgICAgLy8gSW4gUmVhY3RET01JbnB1dCwgd2UgaGF2ZSBhbiBv
bkJsdXIgZXZlbnQgdGhhdCB3aWxsIHRyaWdnZXJcblx0ICAgICAgICAvLyB0aGlzIGZ1bmN0aW9u
IGFnYWluIHdoZW4gZm9jdXMgaXMgbG9zdC5cblx0ICAgICAgICBub2RlLnNldEF0dHJpYnV0ZSgn
dmFsdWUnLCAnJyArIHZhbHVlKTtcblx0ICAgICAgfVxuXHQgICAgfVxuXHQgIH1cblx0fTtcblx0
XG5cdG1vZHVsZS5leHBvcnRzID0gSFRNTERPTVByb3BlcnR5Q29uZmlnO1xuXG4vKioqLyB9LFxu
LyogMTM0ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1
aXJlX18pIHtcblxuXHQvKiBXRUJQQUNLIFZBUiBJTkpFQ1RJT04gKi8oZnVuY3Rpb24ocHJvY2Vz
cykgey8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQg
KiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxp
Y2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElD
RU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBh
ZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRo
ZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKi9cblx0XG5c
dCd1c2Ugc3RyaWN0Jztcblx0XG5cdHZhciBSZWFjdFJlY29uY2lsZXIgPSBfX3dlYnBhY2tfcmVx
dWlyZV9fKDE2KTtcblx0XG5cdHZhciBpbnN0YW50aWF0ZVJlYWN0Q29tcG9uZW50ID0gX193ZWJw
YWNrX3JlcXVpcmVfXyg3NSk7XG5cdHZhciBLZXlFc2NhcGVVdGlscyA9IF9fd2VicGFja19yZXF1
aXJlX18oMzgpO1xuXHR2YXIgc2hvdWxkVXBkYXRlUmVhY3RDb21wb25lbnQgPSBfX3dlYnBhY2tf
cmVxdWlyZV9fKDQ4KTtcblx0dmFyIHRyYXZlcnNlQWxsQ2hpbGRyZW4gPSBfX3dlYnBhY2tfcmVx
dWlyZV9fKDc4KTtcblx0dmFyIHdhcm5pbmcgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIpO1xuXHRc
blx0dmFyIFJlYWN0Q29tcG9uZW50VHJlZUhvb2s7XG5cdFxuXHRpZiAodHlwZW9mIHByb2Nlc3Mg
IT09ICd1bmRlZmluZWQnICYmIHByb2Nlc3MuZW52ICYmIChcInByb2R1Y3Rpb25cIikgPT09ICd0
ZXN0Jykge1xuXHQgIC8vIFRlbXBvcmFyeSBoYWNrLlxuXHQgIC8vIElubGluZSByZXF1aXJlcyBk
b24ndCB3b3JrIHdlbGwgd2l0aCBKZXN0OlxuXHQgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNl
Ym9vay9yZWFjdC9pc3N1ZXMvNzI0MFxuXHQgIC8vIFJlbW92ZSB0aGUgaW5saW5lIHJlcXVpcmVz
IHdoZW4gd2UgZG9uJ3QgbmVlZCB0aGVtIGFueW1vcmU6XG5cdCAgLy8gaHR0cHM6Ly9naXRodWIu
Y29tL2ZhY2Vib29rL3JlYWN0L3B1bGwvNzE3OFxuXHQgIFJlYWN0Q29tcG9uZW50VHJlZUhvb2sg
PSBfX3dlYnBhY2tfcmVxdWlyZV9fKDkwKTtcblx0fVxuXHRcblx0ZnVuY3Rpb24gaW5zdGFudGlh
dGVDaGlsZChjaGlsZEluc3RhbmNlcywgY2hpbGQsIG5hbWUsIHNlbGZEZWJ1Z0lEKSB7XG5cdCAg
Ly8gV2UgZm91bmQgYSBjb21wb25lbnQgaW5zdGFuY2UuXG5cdCAgdmFyIGtleVVuaXF1ZSA9IGNo
aWxkSW5zdGFuY2VzW25hbWVdID09PSB1bmRlZmluZWQ7XG5cdCAgaWYgKGZhbHNlKSB7XG5cdCAg
ICBpZiAoIVJlYWN0Q29tcG9uZW50VHJlZUhvb2spIHtcblx0ICAgICAgUmVhY3RDb21wb25lbnRU
cmVlSG9vayA9IHJlcXVpcmUoJ3JlYWN0L2xpYi9SZWFjdENvbXBvbmVudFRyZWVIb29rJyk7XG5c
dCAgICB9XG5cdCAgICBpZiAoIWtleVVuaXF1ZSkge1xuXHQgICAgICBwcm9jZXNzLmVudi5OT0RF
X0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ2ZsYXR0ZW5DaGlsZHJlbigu
Li4pOiBFbmNvdW50ZXJlZCB0d28gY2hpbGRyZW4gd2l0aCB0aGUgc2FtZSBrZXksICcgKyAnYCVz
YC4gQ2hpbGQga2V5cyBtdXN0IGJlIHVuaXF1ZTsgd2hlbiB0d28gY2hpbGRyZW4gc2hhcmUgYSBr
ZXksIG9ubHkgJyArICd0aGUgZmlyc3QgY2hpbGQgd2lsbCBiZSB1c2VkLiVzJywgS2V5RXNjYXBl
VXRpbHMudW5lc2NhcGUobmFtZSksIFJlYWN0Q29tcG9uZW50VHJlZUhvb2suZ2V0U3RhY2tBZGRl
bmR1bUJ5SUQoc2VsZkRlYnVnSUQpKSA6IHZvaWQgMDtcblx0ICAgIH1cblx0ICB9XG5cdCAgaWYg
KGNoaWxkICE9IG51bGwgJiYga2V5VW5pcXVlKSB7XG5cdCAgICBjaGlsZEluc3RhbmNlc1tuYW1l
XSA9IGluc3RhbnRpYXRlUmVhY3RDb21wb25lbnQoY2hpbGQsIHRydWUpO1xuXHQgIH1cblx0fVxu
XHRcblx0LyoqXG5cdCAqIFJlYWN0Q2hpbGRSZWNvbmNpbGVyIHByb3ZpZGVzIGhlbHBlcnMgZm9y
IGluaXRpYWxpemluZyBvciB1cGRhdGluZyBhIHNldCBvZlxuXHQgKiBjaGlsZHJlbi4gSXRzIG91
dHB1dCBpcyBzdWl0YWJsZSBmb3IgcGFzc2luZyBpdCBvbnRvIFJlYWN0TXVsdGlDaGlsZCB3aGlj
aFxuXHQgKiBkb2VzIGRpZmZlZCByZW9yZGVyaW5nIGFuZCBpbnNlcnRpb24uXG5cdCAqL1xuXHR2
YXIgUmVhY3RDaGlsZFJlY29uY2lsZXIgPSB7XG5cdCAgLyoqXG5cdCAgICogR2VuZXJhdGVzIGEg
XCJtb3VudCBpbWFnZVwiIGZvciBlYWNoIG9mIHRoZSBzdXBwbGllZCBjaGlsZHJlbi4gSW4gdGhl
IGNhc2Vcblx0ICAgKiBvZiBgUmVhY3RET01Db21wb25lbnRgLCBhIG1vdW50IGltYWdlIGlzIGEg
c3RyaW5nIG9mIG1hcmt1cC5cblx0ICAgKlxuXHQgICAqIEBwYXJhbSB7P29iamVjdH0gbmVzdGVk
Q2hpbGROb2RlcyBOZXN0ZWQgY2hpbGQgbWFwcy5cblx0ICAgKiBAcmV0dXJuIHs/b2JqZWN0fSBB
IHNldCBvZiBjaGlsZCBpbnN0YW5jZXMuXG5cdCAgICogQGludGVybmFsXG5cdCAgICovXG5cdCAg
aW5zdGFudGlhdGVDaGlsZHJlbjogZnVuY3Rpb24gKG5lc3RlZENoaWxkTm9kZXMsIHRyYW5zYWN0
aW9uLCBjb250ZXh0LCBzZWxmRGVidWdJRCkgLy8gMCBpbiBwcm9kdWN0aW9uIGFuZCBmb3Igcm9v
dHNcblx0ICB7XG5cdCAgICBpZiAobmVzdGVkQ2hpbGROb2RlcyA9PSBudWxsKSB7XG5cdCAgICAg
IHJldHVybiBudWxsO1xuXHQgICAgfVxuXHQgICAgdmFyIGNoaWxkSW5zdGFuY2VzID0ge307XG5c
dFxuXHQgICAgaWYgKGZhbHNlKSB7XG5cdCAgICAgIHRyYXZlcnNlQWxsQ2hpbGRyZW4obmVzdGVk
Q2hpbGROb2RlcywgZnVuY3Rpb24gKGNoaWxkSW5zdHMsIGNoaWxkLCBuYW1lKSB7XG5cdCAgICAg
ICAgcmV0dXJuIGluc3RhbnRpYXRlQ2hpbGQoY2hpbGRJbnN0cywgY2hpbGQsIG5hbWUsIHNlbGZE
ZWJ1Z0lEKTtcblx0ICAgICAgfSwgY2hpbGRJbnN0YW5jZXMpO1xuXHQgICAgfSBlbHNlIHtcblx0
ICAgICAgdHJhdmVyc2VBbGxDaGlsZHJlbihuZXN0ZWRDaGlsZE5vZGVzLCBpbnN0YW50aWF0ZUNo
aWxkLCBjaGlsZEluc3RhbmNlcyk7XG5cdCAgICB9XG5cdCAgICByZXR1cm4gY2hpbGRJbnN0YW5j
ZXM7XG5cdCAgfSxcblx0XG5cdCAgLyoqXG5cdCAgICogVXBkYXRlcyB0aGUgcmVuZGVyZWQgY2hp
bGRyZW4gYW5kIHJldHVybnMgYSBuZXcgc2V0IG9mIGNoaWxkcmVuLlxuXHQgICAqXG5cdCAgICog
QHBhcmFtIHs/b2JqZWN0fSBwcmV2Q2hpbGRyZW4gUHJldmlvdXNseSBpbml0aWFsaXplZCBzZXQg
b2YgY2hpbGRyZW4uXG5cdCAgICogQHBhcmFtIHs/b2JqZWN0fSBuZXh0Q2hpbGRyZW4gRmxhdCBj
aGlsZCBlbGVtZW50IG1hcHMuXG5cdCAgICogQHBhcmFtIHtSZWFjdFJlY29uY2lsZVRyYW5zYWN0
aW9ufSB0cmFuc2FjdGlvblxuXHQgICAqIEBwYXJhbSB7b2JqZWN0fSBjb250ZXh0XG5cdCAgICog
QHJldHVybiB7P29iamVjdH0gQSBuZXcgc2V0IG9mIGNoaWxkIGluc3RhbmNlcy5cblx0ICAgKiBA
aW50ZXJuYWxcblx0ICAgKi9cblx0ICB1cGRhdGVDaGlsZHJlbjogZnVuY3Rpb24gKHByZXZDaGls
ZHJlbiwgbmV4dENoaWxkcmVuLCBtb3VudEltYWdlcywgcmVtb3ZlZE5vZGVzLCB0cmFuc2FjdGlv
biwgaG9zdFBhcmVudCwgaG9zdENvbnRhaW5lckluZm8sIGNvbnRleHQsIHNlbGZEZWJ1Z0lEKSAv
LyAwIGluIHByb2R1Y3Rpb24gYW5kIGZvciByb290c1xuXHQgIHtcblx0ICAgIC8vIFdlIGN1cnJl
bnRseSBkb24ndCBoYXZlIGEgd2F5IHRvIHRyYWNrIG1vdmVzIGhlcmUgYnV0IGlmIHdlIHVzZSBp
dGVyYXRvcnNcblx0ICAgIC8vIGluc3RlYWQgb2YgZm9yLi5pbiB3ZSBjYW4gemlwIHRoZSBpdGVy
YXRvcnMgYW5kIGNoZWNrIGlmIGFuIGl0ZW0gaGFzXG5cdCAgICAvLyBtb3ZlZC5cblx0ICAgIC8v
IFRPRE86IElmIG5vdGhpbmcgaGFzIGNoYW5nZWQsIHJldHVybiB0aGUgcHJldkNoaWxkcmVuIG9i
amVjdCBzbyB0aGF0IHdlXG5cdCAgICAvLyBjYW4gcXVpY2tseSBiYWlsb3V0IGlmIG5vdGhpbmcg
aGFzIGNoYW5nZWQuXG5cdCAgICBpZiAoIW5leHRDaGlsZHJlbiAmJiAhcHJldkNoaWxkcmVuKSB7
XG5cdCAgICAgIHJldHVybjtcblx0ICAgIH1cblx0ICAgIHZhciBuYW1lO1xuXHQgICAgdmFyIHBy
ZXZDaGlsZDtcblx0ICAgIGZvciAobmFtZSBpbiBuZXh0Q2hpbGRyZW4pIHtcblx0ICAgICAgaWYg
KCFuZXh0Q2hpbGRyZW4uaGFzT3duUHJvcGVydHkobmFtZSkpIHtcblx0ICAgICAgICBjb250aW51
ZTtcblx0ICAgICAgfVxuXHQgICAgICBwcmV2Q2hpbGQgPSBwcmV2Q2hpbGRyZW4gJiYgcHJldkNo
aWxkcmVuW25hbWVdO1xuXHQgICAgICB2YXIgcHJldkVsZW1lbnQgPSBwcmV2Q2hpbGQgJiYgcHJl
dkNoaWxkLl9jdXJyZW50RWxlbWVudDtcblx0ICAgICAgdmFyIG5leHRFbGVtZW50ID0gbmV4dENo
aWxkcmVuW25hbWVdO1xuXHQgICAgICBpZiAocHJldkNoaWxkICE9IG51bGwgJiYgc2hvdWxkVXBk
YXRlUmVhY3RDb21wb25lbnQocHJldkVsZW1lbnQsIG5leHRFbGVtZW50KSkge1xuXHQgICAgICAg
IFJlYWN0UmVjb25jaWxlci5yZWNlaXZlQ29tcG9uZW50KHByZXZDaGlsZCwgbmV4dEVsZW1lbnQs
IHRyYW5zYWN0aW9uLCBjb250ZXh0KTtcblx0ICAgICAgICBuZXh0Q2hpbGRyZW5bbmFtZV0gPSBw
cmV2Q2hpbGQ7XG5cdCAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgaWYgKHByZXZDaGlsZCkge1xu
XHQgICAgICAgICAgcmVtb3ZlZE5vZGVzW25hbWVdID0gUmVhY3RSZWNvbmNpbGVyLmdldEhvc3RO
b2RlKHByZXZDaGlsZCk7XG5cdCAgICAgICAgICBSZWFjdFJlY29uY2lsZXIudW5tb3VudENvbXBv
bmVudChwcmV2Q2hpbGQsIGZhbHNlKTtcblx0ICAgICAgICB9XG5cdCAgICAgICAgLy8gVGhlIGNo
aWxkIG11c3QgYmUgaW5zdGFudGlhdGVkIGJlZm9yZSBpdCdzIG1vdW50ZWQuXG5cdCAgICAgICAg
dmFyIG5leHRDaGlsZEluc3RhbmNlID0gaW5zdGFudGlhdGVSZWFjdENvbXBvbmVudChuZXh0RWxl
bWVudCwgdHJ1ZSk7XG5cdCAgICAgICAgbmV4dENoaWxkcmVuW25hbWVdID0gbmV4dENoaWxkSW5z
dGFuY2U7XG5cdCAgICAgICAgLy8gQ3JlYXRpbmcgbW91bnQgaW1hZ2Ugbm93IGVuc3VyZXMgcmVm
cyBhcmUgcmVzb2x2ZWQgaW4gcmlnaHQgb3JkZXJcblx0ICAgICAgICAvLyAoc2VlIGh0dHBzOi8v
Z2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9wdWxsLzcxMDEgZm9yIGV4cGxhbmF0aW9uKS5cblx0
ICAgICAgICB2YXIgbmV4dENoaWxkTW91bnRJbWFnZSA9IFJlYWN0UmVjb25jaWxlci5tb3VudENv
bXBvbmVudChuZXh0Q2hpbGRJbnN0YW5jZSwgdHJhbnNhY3Rpb24sIGhvc3RQYXJlbnQsIGhvc3RD
b250YWluZXJJbmZvLCBjb250ZXh0LCBzZWxmRGVidWdJRCk7XG5cdCAgICAgICAgbW91bnRJbWFn
ZXMucHVzaChuZXh0Q2hpbGRNb3VudEltYWdlKTtcblx0ICAgICAgfVxuXHQgICAgfVxuXHQgICAg
Ly8gVW5tb3VudCBjaGlsZHJlbiB0aGF0IGFyZSBubyBsb25nZXIgcHJlc2VudC5cblx0ICAgIGZv
ciAobmFtZSBpbiBwcmV2Q2hpbGRyZW4pIHtcblx0ICAgICAgaWYgKHByZXZDaGlsZHJlbi5oYXNP
d25Qcm9wZXJ0eShuYW1lKSAmJiAhKG5leHRDaGlsZHJlbiAmJiBuZXh0Q2hpbGRyZW4uaGFzT3du
UHJvcGVydHkobmFtZSkpKSB7XG5cdCAgICAgICAgcHJldkNoaWxkID0gcHJldkNoaWxkcmVuW25h
bWVdO1xuXHQgICAgICAgIHJlbW92ZWROb2Rlc1tuYW1lXSA9IFJlYWN0UmVjb25jaWxlci5nZXRI
b3N0Tm9kZShwcmV2Q2hpbGQpO1xuXHQgICAgICAgIFJlYWN0UmVjb25jaWxlci51bm1vdW50Q29t
cG9uZW50KHByZXZDaGlsZCwgZmFsc2UpO1xuXHQgICAgICB9XG5cdCAgICB9XG5cdCAgfSxcblx0
XG5cdCAgLyoqXG5cdCAgICogVW5tb3VudHMgYWxsIHJlbmRlcmVkIGNoaWxkcmVuLiBUaGlzIHNo
b3VsZCBiZSB1c2VkIHRvIGNsZWFuIHVwIGNoaWxkcmVuXG5cdCAgICogd2hlbiB0aGlzIGNvbXBv
bmVudCBpcyB1bm1vdW50ZWQuXG5cdCAgICpcblx0ICAgKiBAcGFyYW0gez9vYmplY3R9IHJlbmRl
cmVkQ2hpbGRyZW4gUHJldmlvdXNseSBpbml0aWFsaXplZCBzZXQgb2YgY2hpbGRyZW4uXG5cdCAg
ICogQGludGVybmFsXG5cdCAgICovXG5cdCAgdW5tb3VudENoaWxkcmVuOiBmdW5jdGlvbiAocmVu
ZGVyZWRDaGlsZHJlbiwgc2FmZWx5KSB7XG5cdCAgICBmb3IgKHZhciBuYW1lIGluIHJlbmRlcmVk
Q2hpbGRyZW4pIHtcblx0ICAgICAgaWYgKHJlbmRlcmVkQ2hpbGRyZW4uaGFzT3duUHJvcGVydHko
bmFtZSkpIHtcblx0ICAgICAgICB2YXIgcmVuZGVyZWRDaGlsZCA9IHJlbmRlcmVkQ2hpbGRyZW5b
bmFtZV07XG5cdCAgICAgICAgUmVhY3RSZWNvbmNpbGVyLnVubW91bnRDb21wb25lbnQocmVuZGVy
ZWRDaGlsZCwgc2FmZWx5KTtcblx0ICAgICAgfVxuXHQgICAgfVxuXHQgIH1cblx0fTtcblx0XG5c
dG1vZHVsZS5leHBvcnRzID0gUmVhY3RDaGlsZFJlY29uY2lsZXI7XG5cdC8qIFdFQlBBQ0sgVkFS
IElOSkVDVElPTiAqL30uY2FsbChleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKDg3KSkpXG5c
bi8qKiovIH0sXG4vKiAxMzUgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193
ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50
LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBU
aGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBm
b3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0
aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdo
dHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5
LlxuXHQgKlxuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdHZhciBET01DaGlsZHJl
bk9wZXJhdGlvbnMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDM0KTtcblx0dmFyIFJlYWN0RE9NSURP
cGVyYXRpb25zID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNDIpO1xuXHRcblx0LyoqXG5cdCAqIEFi
c3RyYWN0cyBhd2F5IGFsbCBmdW5jdGlvbmFsaXR5IG9mIHRoZSByZWNvbmNpbGVyIHRoYXQgcmVx
dWlyZXMga25vd2xlZGdlIG9mXG5cdCAqIHRoZSBicm93c2VyIGNvbnRleHQuIFRPRE86IFRoZXNl
IGNhbGxlcnMgc2hvdWxkIGJlIHJlZmFjdG9yZWQgdG8gYXZvaWQgdGhlXG5cdCAqIG5lZWQgZm9y
IHRoaXMgaW5qZWN0aW9uLlxuXHQgKi9cblx0dmFyIFJlYWN0Q29tcG9uZW50QnJvd3NlckVudmly
b25tZW50ID0ge1xuXHQgIHByb2Nlc3NDaGlsZHJlblVwZGF0ZXM6IFJlYWN0RE9NSURPcGVyYXRp
b25zLmRhbmdlcm91c2x5UHJvY2Vzc0NoaWxkcmVuVXBkYXRlcyxcblx0XG5cdCAgcmVwbGFjZU5v
ZGVXaXRoTWFya3VwOiBET01DaGlsZHJlbk9wZXJhdGlvbnMuZGFuZ2Vyb3VzbHlSZXBsYWNlTm9k
ZVdpdGhNYXJrdXBcblx0fTtcblx0XG5cdG1vZHVsZS5leHBvcnRzID0gUmVhY3RDb21wb25lbnRC
cm93c2VyRW52aXJvbm1lbnQ7XG5cbi8qKiovIH0sXG4vKiAxMzYgKi9cbi8qKiovIGZ1bmN0aW9u
KG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8qKlxuXHQgKiBD
b3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJl
c2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRo
ZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxlIGluIHRo
ZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50
XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUg
aW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0Jztc
blx0XG5cdHZhciBfcHJvZEludmFyaWFudCA9IF9fd2VicGFja19yZXF1aXJlX18oMyksXG5cdCAg
ICBfYXNzaWduID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0KTtcblx0XG5cdHZhciBSZWFjdCA9IF9f
d2VicGFja19yZXF1aXJlX18oMTcpO1xuXHR2YXIgUmVhY3RDb21wb25lbnRFbnZpcm9ubWVudCA9
IF9fd2VicGFja19yZXF1aXJlX18oNDApO1xuXHR2YXIgUmVhY3RDdXJyZW50T3duZXIgPSBfX3dl
YnBhY2tfcmVxdWlyZV9fKDExKTtcblx0dmFyIFJlYWN0RXJyb3JVdGlscyA9IF9fd2VicGFja19y
ZXF1aXJlX18oNDEpO1xuXHR2YXIgUmVhY3RJbnN0YW5jZU1hcCA9IF9fd2VicGFja19yZXF1aXJl
X18oMjEpO1xuXHR2YXIgUmVhY3RJbnN0cnVtZW50YXRpb24gPSBfX3dlYnBhY2tfcmVxdWlyZV9f
KDgpO1xuXHR2YXIgUmVhY3ROb2RlVHlwZXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDY4KTtcblx0
dmFyIFJlYWN0UmVjb25jaWxlciA9IF9fd2VicGFja19yZXF1aXJlX18oMTYpO1xuXHRcblx0aWYg
KGZhbHNlKSB7XG5cdCAgdmFyIGNoZWNrUmVhY3RUeXBlU3BlYyA9IHJlcXVpcmUoJy4vY2hlY2tS
ZWFjdFR5cGVTcGVjJyk7XG5cdH1cblx0XG5cdHZhciBlbXB0eU9iamVjdCA9IF9fd2VicGFja19y
ZXF1aXJlX18oMjQpO1xuXHR2YXIgaW52YXJpYW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxKTtc
blx0dmFyIHNoYWxsb3dFcXVhbCA9IF9fd2VicGFja19yZXF1aXJlX18oMzIpO1xuXHR2YXIgc2hv
dWxkVXBkYXRlUmVhY3RDb21wb25lbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQ4KTtcblx0dmFy
IHdhcm5pbmcgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIpO1xuXHRcblx0dmFyIENvbXBvc2l0ZVR5
cGVzID0ge1xuXHQgIEltcHVyZUNsYXNzOiAwLFxuXHQgIFB1cmVDbGFzczogMSxcblx0ICBTdGF0
ZWxlc3NGdW5jdGlvbmFsOiAyXG5cdH07XG5cdFxuXHRmdW5jdGlvbiBTdGF0ZWxlc3NDb21wb25l
bnQoQ29tcG9uZW50KSB7fVxuXHRTdGF0ZWxlc3NDb21wb25lbnQucHJvdG90eXBlLnJlbmRlciA9
IGZ1bmN0aW9uICgpIHtcblx0ICB2YXIgQ29tcG9uZW50ID0gUmVhY3RJbnN0YW5jZU1hcC5nZXQo
dGhpcykuX2N1cnJlbnRFbGVtZW50LnR5cGU7XG5cdCAgdmFyIGVsZW1lbnQgPSBDb21wb25lbnQo
dGhpcy5wcm9wcywgdGhpcy5jb250ZXh0LCB0aGlzLnVwZGF0ZXIpO1xuXHQgIHdhcm5JZkludmFs
aWRFbGVtZW50KENvbXBvbmVudCwgZWxlbWVudCk7XG5cdCAgcmV0dXJuIGVsZW1lbnQ7XG5cdH07
XG5cdFxuXHRmdW5jdGlvbiB3YXJuSWZJbnZhbGlkRWxlbWVudChDb21wb25lbnQsIGVsZW1lbnQp
IHtcblx0ICBpZiAoZmFsc2UpIHtcblx0ICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJv
ZHVjdGlvbicgPyB3YXJuaW5nKGVsZW1lbnQgPT09IG51bGwgfHwgZWxlbWVudCA9PT0gZmFsc2Ug
fHwgUmVhY3QuaXNWYWxpZEVsZW1lbnQoZWxlbWVudCksICclcyguLi4pOiBBIHZhbGlkIFJlYWN0
IGVsZW1lbnQgKG9yIG51bGwpIG11c3QgYmUgcmV0dXJuZWQuIFlvdSBtYXkgaGF2ZSAnICsgJ3Jl
dHVybmVkIHVuZGVmaW5lZCwgYW4gYXJyYXkgb3Igc29tZSBvdGhlciBpbnZhbGlkIG9iamVjdC4n
LCBDb21wb25lbnQuZGlzcGxheU5hbWUgfHwgQ29tcG9uZW50Lm5hbWUgfHwgJ0NvbXBvbmVudCcp
IDogdm9pZCAwO1xuXHQgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/
IHdhcm5pbmcoIUNvbXBvbmVudC5jaGlsZENvbnRleHRUeXBlcywgJyVzKC4uLik6IGNoaWxkQ29u
dGV4dFR5cGVzIGNhbm5vdCBiZSBkZWZpbmVkIG9uIGEgZnVuY3Rpb25hbCBjb21wb25lbnQuJywg
Q29tcG9uZW50LmRpc3BsYXlOYW1lIHx8IENvbXBvbmVudC5uYW1lIHx8ICdDb21wb25lbnQnKSA6
IHZvaWQgMDtcblx0ICB9XG5cdH1cblx0XG5cdGZ1bmN0aW9uIHNob3VsZENvbnN0cnVjdChDb21w
b25lbnQpIHtcblx0ICByZXR1cm4gISEoQ29tcG9uZW50LnByb3RvdHlwZSAmJiBDb21wb25lbnQu
cHJvdG90eXBlLmlzUmVhY3RDb21wb25lbnQpO1xuXHR9XG5cdFxuXHRmdW5jdGlvbiBpc1B1cmVD
b21wb25lbnQoQ29tcG9uZW50KSB7XG5cdCAgcmV0dXJuICEhKENvbXBvbmVudC5wcm90b3R5cGUg
JiYgQ29tcG9uZW50LnByb3RvdHlwZS5pc1B1cmVSZWFjdENvbXBvbmVudCk7XG5cdH1cblx0XG5c
dC8vIFNlcGFyYXRlZCBpbnRvIGEgZnVuY3Rpb24gdG8gY29udGFpbiBkZW9wdGltaXphdGlvbnMg
Y2F1c2VkIGJ5IHRyeS9maW5hbGx5LlxuXHRmdW5jdGlvbiBtZWFzdXJlTGlmZUN5Y2xlUGVyZihm
biwgZGVidWdJRCwgdGltZXJUeXBlKSB7XG5cdCAgaWYgKGRlYnVnSUQgPT09IDApIHtcblx0ICAg
IC8vIFRvcC1sZXZlbCB3cmFwcGVycyAoc2VlIFJlYWN0TW91bnQpIGFuZCBlbXB0eSBjb21wb25l
bnRzIChzZWVcblx0ICAgIC8vIFJlYWN0RE9NRW1wdHlDb21wb25lbnQpIGFyZSBpbnZpc2libGUg
dG8gaG9va3MgYW5kIGRldnRvb2xzLlxuXHQgICAgLy8gQm90aCBhcmUgaW1wbGVtZW50YXRpb24g
ZGV0YWlscyB0aGF0IHNob3VsZCBnbyBhd2F5IGluIHRoZSBmdXR1cmUuXG5cdCAgICByZXR1cm4g
Zm4oKTtcblx0ICB9XG5cdFxuXHQgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vbkJl
Z2luTGlmZUN5Y2xlVGltZXIoZGVidWdJRCwgdGltZXJUeXBlKTtcblx0ICB0cnkge1xuXHQgICAg
cmV0dXJuIGZuKCk7XG5cdCAgfSBmaW5hbGx5IHtcblx0ICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9u
LmRlYnVnVG9vbC5vbkVuZExpZmVDeWNsZVRpbWVyKGRlYnVnSUQsIHRpbWVyVHlwZSk7XG5cdCAg
fVxuXHR9XG5cdFxuXHQvKipcblx0ICogLS0tLS0tLS0tLS0tLS0tLS0tIFRoZSBMaWZlLUN5Y2xl
IG9mIGEgQ29tcG9zaXRlIENvbXBvbmVudCAtLS0tLS0tLS0tLS0tLS0tLS1cblx0ICpcblx0ICog
LSBjb25zdHJ1Y3RvcjogSW5pdGlhbGl6YXRpb24gb2Ygc3RhdGUuIFRoZSBpbnN0YW5jZSBpcyBu
b3cgcmV0YWluZWQuXG5cdCAqICAgLSBjb21wb25lbnRXaWxsTW91bnRcblx0ICogICAtIHJlbmRl
clxuXHQgKiAgIC0gW2NoaWxkcmVuJ3MgY29uc3RydWN0b3JzXVxuXHQgKiAgICAgLSBbY2hpbGRy
ZW4ncyBjb21wb25lbnRXaWxsTW91bnQgYW5kIHJlbmRlcl1cblx0ICogICAgIC0gW2NoaWxkcmVu
J3MgY29tcG9uZW50RGlkTW91bnRdXG5cdCAqICAgICAtIGNvbXBvbmVudERpZE1vdW50XG5cdCAq
XG5cdCAqICAgICAgIFVwZGF0ZSBQaGFzZXM6XG5cdCAqICAgICAgIC0gY29tcG9uZW50V2lsbFJl
Y2VpdmVQcm9wcyAob25seSBjYWxsZWQgaWYgcGFyZW50IHVwZGF0ZWQpXG5cdCAqICAgICAgIC0g
c2hvdWxkQ29tcG9uZW50VXBkYXRlXG5cdCAqICAgICAgICAgLSBjb21wb25lbnRXaWxsVXBkYXRl
XG5cdCAqICAgICAgICAgICAtIHJlbmRlclxuXHQgKiAgICAgICAgICAgLSBbY2hpbGRyZW4ncyBj
b25zdHJ1Y3RvcnMgb3IgcmVjZWl2ZSBwcm9wcyBwaGFzZXNdXG5cdCAqICAgICAgICAgLSBjb21w
b25lbnREaWRVcGRhdGVcblx0ICpcblx0ICogICAgIC0gY29tcG9uZW50V2lsbFVubW91bnRcblx0
ICogICAgIC0gW2NoaWxkcmVuJ3MgY29tcG9uZW50V2lsbFVubW91bnRdXG5cdCAqICAgLSBbY2hp
bGRyZW4gZGVzdHJveWVkXVxuXHQgKiAtIChkZXN0cm95ZWQpOiBUaGUgaW5zdGFuY2UgaXMgbm93
IGJsYW5rLCByZWxlYXNlZCBieSBSZWFjdCBhbmQgcmVhZHkgZm9yIEdDLlxuXHQgKlxuXHQgKiAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLVxuXHQgKi9cblx0XG5cdC8qKlxuXHQgKiBBbiBpbmNyZW1lbnRp
bmcgSUQgYXNzaWduZWQgdG8gZWFjaCBjb21wb25lbnQgd2hlbiBpdCBpcyBtb3VudGVkLiBUaGlz
IGlzXG5cdCAqIHVzZWQgdG8gZW5mb3JjZSB0aGUgb3JkZXIgaW4gd2hpY2ggYFJlYWN0VXBkYXRl
c2AgdXBkYXRlcyBkaXJ0eSBjb21wb25lbnRzLlxuXHQgKlxuXHQgKiBAcHJpdmF0ZVxuXHQgKi9c
blx0dmFyIG5leHRNb3VudElEID0gMTtcblx0XG5cdC8qKlxuXHQgKiBAbGVuZHMge1JlYWN0Q29t
cG9zaXRlQ29tcG9uZW50LnByb3RvdHlwZX1cblx0ICovXG5cdHZhciBSZWFjdENvbXBvc2l0ZUNv
bXBvbmVudCA9IHtcblx0ICAvKipcblx0ICAgKiBCYXNlIGNvbnN0cnVjdG9yIGZvciBhbGwgY29t
cG9zaXRlIGNvbXBvbmVudC5cblx0ICAgKlxuXHQgICAqIEBwYXJhbSB7UmVhY3RFbGVtZW50fSBl
bGVtZW50XG5cdCAgICogQGZpbmFsXG5cdCAgICogQGludGVybmFsXG5cdCAgICovXG5cdCAgY29u
c3RydWN0OiBmdW5jdGlvbiAoZWxlbWVudCkge1xuXHQgICAgdGhpcy5fY3VycmVudEVsZW1lbnQg
PSBlbGVtZW50O1xuXHQgICAgdGhpcy5fcm9vdE5vZGVJRCA9IDA7XG5cdCAgICB0aGlzLl9jb21w
b3NpdGVUeXBlID0gbnVsbDtcblx0ICAgIHRoaXMuX2luc3RhbmNlID0gbnVsbDtcblx0ICAgIHRo
aXMuX2hvc3RQYXJlbnQgPSBudWxsO1xuXHQgICAgdGhpcy5faG9zdENvbnRhaW5lckluZm8gPSBu
dWxsO1xuXHRcblx0ICAgIC8vIFNlZSBSZWFjdFVwZGF0ZVF1ZXVlXG5cdCAgICB0aGlzLl91cGRh
dGVCYXRjaE51bWJlciA9IG51bGw7XG5cdCAgICB0aGlzLl9wZW5kaW5nRWxlbWVudCA9IG51bGw7
XG5cdCAgICB0aGlzLl9wZW5kaW5nU3RhdGVRdWV1ZSA9IG51bGw7XG5cdCAgICB0aGlzLl9wZW5k
aW5nUmVwbGFjZVN0YXRlID0gZmFsc2U7XG5cdCAgICB0aGlzLl9wZW5kaW5nRm9yY2VVcGRhdGUg
PSBmYWxzZTtcblx0XG5cdCAgICB0aGlzLl9yZW5kZXJlZE5vZGVUeXBlID0gbnVsbDtcblx0ICAg
IHRoaXMuX3JlbmRlcmVkQ29tcG9uZW50ID0gbnVsbDtcblx0ICAgIHRoaXMuX2NvbnRleHQgPSBu
dWxsO1xuXHQgICAgdGhpcy5fbW91bnRPcmRlciA9IDA7XG5cdCAgICB0aGlzLl90b3BMZXZlbFdy
YXBwZXIgPSBudWxsO1xuXHRcblx0ICAgIC8vIFNlZSBSZWFjdFVwZGF0ZXMgYW5kIFJlYWN0VXBk
YXRlUXVldWUuXG5cdCAgICB0aGlzLl9wZW5kaW5nQ2FsbGJhY2tzID0gbnVsbDtcblx0XG5cdCAg
ICAvLyBDb21wb25lbnRXaWxsVW5tb3VudCBzaGFsbCBvbmx5IGJlIGNhbGxlZCBvbmNlXG5cdCAg
ICB0aGlzLl9jYWxsZWRDb21wb25lbnRXaWxsVW5tb3VudCA9IGZhbHNlO1xuXHRcblx0ICAgIGlm
IChmYWxzZSkge1xuXHQgICAgICB0aGlzLl93YXJuZWRBYm91dFJlZnNJblJlbmRlciA9IGZhbHNl
O1xuXHQgICAgfVxuXHQgIH0sXG5cdFxuXHQgIC8qKlxuXHQgICAqIEluaXRpYWxpemVzIHRoZSBj
b21wb25lbnQsIHJlbmRlcnMgbWFya3VwLCBhbmQgcmVnaXN0ZXJzIGV2ZW50IGxpc3RlbmVycy5c
blx0ICAgKlxuXHQgICAqIEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbnxSZWFjdFNl
cnZlclJlbmRlcmluZ1RyYW5zYWN0aW9ufSB0cmFuc2FjdGlvblxuXHQgICAqIEBwYXJhbSB7P29i
amVjdH0gaG9zdFBhcmVudFxuXHQgICAqIEBwYXJhbSB7P29iamVjdH0gaG9zdENvbnRhaW5lcklu
Zm9cblx0ICAgKiBAcGFyYW0gez9vYmplY3R9IGNvbnRleHRcblx0ICAgKiBAcmV0dXJuIHs/c3Ry
aW5nfSBSZW5kZXJlZCBtYXJrdXAgdG8gYmUgaW5zZXJ0ZWQgaW50byB0aGUgRE9NLlxuXHQgICAq
IEBmaW5hbFxuXHQgICAqIEBpbnRlcm5hbFxuXHQgICAqL1xuXHQgIG1vdW50Q29tcG9uZW50OiBm
dW5jdGlvbiAodHJhbnNhY3Rpb24sIGhvc3RQYXJlbnQsIGhvc3RDb250YWluZXJJbmZvLCBjb250
ZXh0KSB7XG5cdCAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXHRcblx0ICAgIHRoaXMuX2NvbnRleHQg
PSBjb250ZXh0O1xuXHQgICAgdGhpcy5fbW91bnRPcmRlciA9IG5leHRNb3VudElEKys7XG5cdCAg
ICB0aGlzLl9ob3N0UGFyZW50ID0gaG9zdFBhcmVudDtcblx0ICAgIHRoaXMuX2hvc3RDb250YWlu
ZXJJbmZvID0gaG9zdENvbnRhaW5lckluZm87XG5cdFxuXHQgICAgdmFyIHB1YmxpY1Byb3BzID0g
dGhpcy5fY3VycmVudEVsZW1lbnQucHJvcHM7XG5cdCAgICB2YXIgcHVibGljQ29udGV4dCA9IHRo
aXMuX3Byb2Nlc3NDb250ZXh0KGNvbnRleHQpO1xuXHRcblx0ICAgIHZhciBDb21wb25lbnQgPSB0
aGlzLl9jdXJyZW50RWxlbWVudC50eXBlO1xuXHRcblx0ICAgIHZhciB1cGRhdGVRdWV1ZSA9IHRy
YW5zYWN0aW9uLmdldFVwZGF0ZVF1ZXVlKCk7XG5cdFxuXHQgICAgLy8gSW5pdGlhbGl6ZSB0aGUg
cHVibGljIGNsYXNzXG5cdCAgICB2YXIgZG9Db25zdHJ1Y3QgPSBzaG91bGRDb25zdHJ1Y3QoQ29t
cG9uZW50KTtcblx0ICAgIHZhciBpbnN0ID0gdGhpcy5fY29uc3RydWN0Q29tcG9uZW50KGRvQ29u
c3RydWN0LCBwdWJsaWNQcm9wcywgcHVibGljQ29udGV4dCwgdXBkYXRlUXVldWUpO1xuXHQgICAg
dmFyIHJlbmRlcmVkRWxlbWVudDtcblx0XG5cdCAgICAvLyBTdXBwb3J0IGZ1bmN0aW9uYWwgY29t
cG9uZW50c1xuXHQgICAgaWYgKCFkb0NvbnN0cnVjdCAmJiAoaW5zdCA9PSBudWxsIHx8IGluc3Qu
cmVuZGVyID09IG51bGwpKSB7XG5cdCAgICAgIHJlbmRlcmVkRWxlbWVudCA9IGluc3Q7XG5cdCAg
ICAgIHdhcm5JZkludmFsaWRFbGVtZW50KENvbXBvbmVudCwgcmVuZGVyZWRFbGVtZW50KTtcblx0
ICAgICAgIShpbnN0ID09PSBudWxsIHx8IGluc3QgPT09IGZhbHNlIHx8IFJlYWN0LmlzVmFsaWRF
bGVtZW50KGluc3QpKSA/ICBmYWxzZSA/IGludmFyaWFudChmYWxzZSwgJyVzKC4uLik6IEEgdmFs
aWQgUmVhY3QgZWxlbWVudCAob3IgbnVsbCkgbXVzdCBiZSByZXR1cm5lZC4gWW91IG1heSBoYXZl
IHJldHVybmVkIHVuZGVmaW5lZCwgYW4gYXJyYXkgb3Igc29tZSBvdGhlciBpbnZhbGlkIG9iamVj
dC4nLCBDb21wb25lbnQuZGlzcGxheU5hbWUgfHwgQ29tcG9uZW50Lm5hbWUgfHwgJ0NvbXBvbmVu
dCcpIDogX3Byb2RJbnZhcmlhbnQoJzEwNScsIENvbXBvbmVudC5kaXNwbGF5TmFtZSB8fCBDb21w
b25lbnQubmFtZSB8fCAnQ29tcG9uZW50JykgOiB2b2lkIDA7XG5cdCAgICAgIGluc3QgPSBuZXcg
U3RhdGVsZXNzQ29tcG9uZW50KENvbXBvbmVudCk7XG5cdCAgICAgIHRoaXMuX2NvbXBvc2l0ZVR5
cGUgPSBDb21wb3NpdGVUeXBlcy5TdGF0ZWxlc3NGdW5jdGlvbmFsO1xuXHQgICAgfSBlbHNlIHtc
blx0ICAgICAgaWYgKGlzUHVyZUNvbXBvbmVudChDb21wb25lbnQpKSB7XG5cdCAgICAgICAgdGhp
cy5fY29tcG9zaXRlVHlwZSA9IENvbXBvc2l0ZVR5cGVzLlB1cmVDbGFzcztcblx0ICAgICAgfSBl
bHNlIHtcblx0ICAgICAgICB0aGlzLl9jb21wb3NpdGVUeXBlID0gQ29tcG9zaXRlVHlwZXMuSW1w
dXJlQ2xhc3M7XG5cdCAgICAgIH1cblx0ICAgIH1cblx0XG5cdCAgICBpZiAoZmFsc2UpIHtcblx0
ICAgICAgLy8gVGhpcyB3aWxsIHRocm93IGxhdGVyIGluIF9yZW5kZXJWYWxpZGF0ZWRDb21wb25l
bnQsIGJ1dCBhZGQgYW4gZWFybHlcblx0ICAgICAgLy8gd2FybmluZyBub3cgdG8gaGVscCBkZWJ1
Z2dpbmdcblx0ICAgICAgaWYgKGluc3QucmVuZGVyID09IG51bGwpIHtcblx0ICAgICAgICBwcm9j
ZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJyVzKC4u
Lik6IE5vIGByZW5kZXJgIG1ldGhvZCBmb3VuZCBvbiB0aGUgcmV0dXJuZWQgY29tcG9uZW50ICcg
KyAnaW5zdGFuY2U6IHlvdSBtYXkgaGF2ZSBmb3Jnb3R0ZW4gdG8gZGVmaW5lIGByZW5kZXJgLics
IENvbXBvbmVudC5kaXNwbGF5TmFtZSB8fCBDb21wb25lbnQubmFtZSB8fCAnQ29tcG9uZW50Jykg
OiB2b2lkIDA7XG5cdCAgICAgIH1cblx0XG5cdCAgICAgIHZhciBwcm9wc011dGF0ZWQgPSBpbnN0
LnByb3BzICE9PSBwdWJsaWNQcm9wcztcblx0ICAgICAgdmFyIGNvbXBvbmVudE5hbWUgPSBDb21w
b25lbnQuZGlzcGxheU5hbWUgfHwgQ29tcG9uZW50Lm5hbWUgfHwgJ0NvbXBvbmVudCc7XG5cdFxu
XHQgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhp
bnN0LnByb3BzID09PSB1bmRlZmluZWQgfHwgIXByb3BzTXV0YXRlZCwgJyVzKC4uLik6IFdoZW4g
Y2FsbGluZyBzdXBlcigpIGluIGAlc2AsIG1ha2Ugc3VyZSB0byBwYXNzICcgKyBcInVwIHRoZSBz
YW1lIHByb3BzIHRoYXQgeW91ciBjb21wb25lbnQncyBjb25zdHJ1Y3RvciB3YXMgcGFzc2VkLlwi
LCBjb21wb25lbnROYW1lLCBjb21wb25lbnROYW1lKSA6IHZvaWQgMDtcblx0ICAgIH1cblx0XG5c
dCAgICAvLyBUaGVzZSBzaG91bGQgYmUgc2V0IHVwIGluIHRoZSBjb25zdHJ1Y3RvciwgYnV0IGFz
IGEgY29udmVuaWVuY2UgZm9yXG5cdCAgICAvLyBzaW1wbGVyIGNsYXNzIGFic3RyYWN0aW9ucywg
d2Ugc2V0IHRoZW0gdXAgYWZ0ZXIgdGhlIGZhY3QuXG5cdCAgICBpbnN0LnByb3BzID0gcHVibGlj
UHJvcHM7XG5cdCAgICBpbnN0LmNvbnRleHQgPSBwdWJsaWNDb250ZXh0O1xuXHQgICAgaW5zdC5y
ZWZzID0gZW1wdHlPYmplY3Q7XG5cdCAgICBpbnN0LnVwZGF0ZXIgPSB1cGRhdGVRdWV1ZTtcblx0
XG5cdCAgICB0aGlzLl9pbnN0YW5jZSA9IGluc3Q7XG5cdFxuXHQgICAgLy8gU3RvcmUgYSByZWZl
cmVuY2UgZnJvbSB0aGUgaW5zdGFuY2UgYmFjayB0byB0aGUgaW50ZXJuYWwgcmVwcmVzZW50YXRp
b25cblx0ICAgIFJlYWN0SW5zdGFuY2VNYXAuc2V0KGluc3QsIHRoaXMpO1xuXHRcblx0ICAgIGlm
IChmYWxzZSkge1xuXHQgICAgICAvLyBTaW5jZSBwbGFpbiBKUyBjbGFzc2VzIGFyZSBkZWZpbmVk
IHdpdGhvdXQgYW55IHNwZWNpYWwgaW5pdGlhbGl6YXRpb25cblx0ICAgICAgLy8gbG9naWMsIHdl
IGNhbiBub3QgY2F0Y2ggY29tbW9uIGVycm9ycyBlYXJseS4gVGhlcmVmb3JlLCB3ZSBoYXZlIHRv
XG5cdCAgICAgIC8vIGNhdGNoIHRoZW0gaGVyZSwgYXQgaW5pdGlhbGl6YXRpb24gdGltZSwgaW5z
dGVhZC5cblx0ICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdh
cm5pbmcoIWluc3QuZ2V0SW5pdGlhbFN0YXRlIHx8IGluc3QuZ2V0SW5pdGlhbFN0YXRlLmlzUmVh
Y3RDbGFzc0FwcHJvdmVkIHx8IGluc3Quc3RhdGUsICdnZXRJbml0aWFsU3RhdGUgd2FzIGRlZmlu
ZWQgb24gJXMsIGEgcGxhaW4gSmF2YVNjcmlwdCBjbGFzcy4gJyArICdUaGlzIGlzIG9ubHkgc3Vw
cG9ydGVkIGZvciBjbGFzc2VzIGNyZWF0ZWQgdXNpbmcgUmVhY3QuY3JlYXRlQ2xhc3MuICcgKyAn
RGlkIHlvdSBtZWFuIHRvIGRlZmluZSBhIHN0YXRlIHByb3BlcnR5IGluc3RlYWQ/JywgdGhpcy5n
ZXROYW1lKCkgfHwgJ2EgY29tcG9uZW50JykgOiB2b2lkIDA7XG5cdCAgICAgIHByb2Nlc3MuZW52
Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKCFpbnN0LmdldERlZmF1bHRQcm9w
cyB8fCBpbnN0LmdldERlZmF1bHRQcm9wcy5pc1JlYWN0Q2xhc3NBcHByb3ZlZCwgJ2dldERlZmF1
bHRQcm9wcyB3YXMgZGVmaW5lZCBvbiAlcywgYSBwbGFpbiBKYXZhU2NyaXB0IGNsYXNzLiAnICsg
J1RoaXMgaXMgb25seSBzdXBwb3J0ZWQgZm9yIGNsYXNzZXMgY3JlYXRlZCB1c2luZyBSZWFjdC5j
cmVhdGVDbGFzcy4gJyArICdVc2UgYSBzdGF0aWMgcHJvcGVydHkgdG8gZGVmaW5lIGRlZmF1bHRQ
cm9wcyBpbnN0ZWFkLicsIHRoaXMuZ2V0TmFtZSgpIHx8ICdhIGNvbXBvbmVudCcpIDogdm9pZCAw
O1xuXHQgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2Fybmlu
ZyghaW5zdC5wcm9wVHlwZXMsICdwcm9wVHlwZXMgd2FzIGRlZmluZWQgYXMgYW4gaW5zdGFuY2Ug
cHJvcGVydHkgb24gJXMuIFVzZSBhIHN0YXRpYyAnICsgJ3Byb3BlcnR5IHRvIGRlZmluZSBwcm9w
VHlwZXMgaW5zdGVhZC4nLCB0aGlzLmdldE5hbWUoKSB8fCAnYSBjb21wb25lbnQnKSA6IHZvaWQg
MDtcblx0ICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5p
bmcoIWluc3QuY29udGV4dFR5cGVzLCAnY29udGV4dFR5cGVzIHdhcyBkZWZpbmVkIGFzIGFuIGlu
c3RhbmNlIHByb3BlcnR5IG9uICVzLiBVc2UgYSAnICsgJ3N0YXRpYyBwcm9wZXJ0eSB0byBkZWZp
bmUgY29udGV4dFR5cGVzIGluc3RlYWQuJywgdGhpcy5nZXROYW1lKCkgfHwgJ2EgY29tcG9uZW50
JykgOiB2b2lkIDA7XG5cdCAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlv
bicgPyB3YXJuaW5nKHR5cGVvZiBpbnN0LmNvbXBvbmVudFNob3VsZFVwZGF0ZSAhPT0gJ2Z1bmN0
aW9uJywgJyVzIGhhcyBhIG1ldGhvZCBjYWxsZWQgJyArICdjb21wb25lbnRTaG91bGRVcGRhdGUo
KS4gRGlkIHlvdSBtZWFuIHNob3VsZENvbXBvbmVudFVwZGF0ZSgpPyAnICsgJ1RoZSBuYW1lIGlz
IHBocmFzZWQgYXMgYSBxdWVzdGlvbiBiZWNhdXNlIHRoZSBmdW5jdGlvbiBpcyAnICsgJ2V4cGVj
dGVkIHRvIHJldHVybiBhIHZhbHVlLicsIHRoaXMuZ2V0TmFtZSgpIHx8ICdBIGNvbXBvbmVudCcp
IDogdm9pZCAwO1xuXHQgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24n
ID8gd2FybmluZyh0eXBlb2YgaW5zdC5jb21wb25lbnREaWRVbm1vdW50ICE9PSAnZnVuY3Rpb24n
LCAnJXMgaGFzIGEgbWV0aG9kIGNhbGxlZCAnICsgJ2NvbXBvbmVudERpZFVubW91bnQoKS4gQnV0
IHRoZXJlIGlzIG5vIHN1Y2ggbGlmZWN5Y2xlIG1ldGhvZC4gJyArICdEaWQgeW91IG1lYW4gY29t
cG9uZW50V2lsbFVubW91bnQoKT8nLCB0aGlzLmdldE5hbWUoKSB8fCAnQSBjb21wb25lbnQnKSA6
IHZvaWQgMDtcblx0ICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/
IHdhcm5pbmcodHlwZW9mIGluc3QuY29tcG9uZW50V2lsbFJlY2lldmVQcm9wcyAhPT0gJ2Z1bmN0
aW9uJywgJyVzIGhhcyBhIG1ldGhvZCBjYWxsZWQgJyArICdjb21wb25lbnRXaWxsUmVjaWV2ZVBy
b3BzKCkuIERpZCB5b3UgbWVhbiBjb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzKCk/JywgdGhpcy5n
ZXROYW1lKCkgfHwgJ0EgY29tcG9uZW50JykgOiB2b2lkIDA7XG5cdCAgICB9XG5cdFxuXHQgICAg
dmFyIGluaXRpYWxTdGF0ZSA9IGluc3Quc3RhdGU7XG5cdCAgICBpZiAoaW5pdGlhbFN0YXRlID09
PSB1bmRlZmluZWQpIHtcblx0ICAgICAgaW5zdC5zdGF0ZSA9IGluaXRpYWxTdGF0ZSA9IG51bGw7
XG5cdCAgICB9XG5cdCAgICAhKHR5cGVvZiBpbml0aWFsU3RhdGUgPT09ICdvYmplY3QnICYmICFB
cnJheS5pc0FycmF5KGluaXRpYWxTdGF0ZSkpID8gIGZhbHNlID8gaW52YXJpYW50KGZhbHNlLCAn
JXMuc3RhdGU6IG11c3QgYmUgc2V0IHRvIGFuIG9iamVjdCBvciBudWxsJywgdGhpcy5nZXROYW1l
KCkgfHwgJ1JlYWN0Q29tcG9zaXRlQ29tcG9uZW50JykgOiBfcHJvZEludmFyaWFudCgnMTA2Jywg
dGhpcy5nZXROYW1lKCkgfHwgJ1JlYWN0Q29tcG9zaXRlQ29tcG9uZW50JykgOiB2b2lkIDA7XG5c
dFxuXHQgICAgdGhpcy5fcGVuZGluZ1N0YXRlUXVldWUgPSBudWxsO1xuXHQgICAgdGhpcy5fcGVu
ZGluZ1JlcGxhY2VTdGF0ZSA9IGZhbHNlO1xuXHQgICAgdGhpcy5fcGVuZGluZ0ZvcmNlVXBkYXRl
ID0gZmFsc2U7XG5cdFxuXHQgICAgdmFyIG1hcmt1cDtcblx0ICAgIGlmIChpbnN0LnVuc3RhYmxl
X2hhbmRsZUVycm9yKSB7XG5cdCAgICAgIG1hcmt1cCA9IHRoaXMucGVyZm9ybUluaXRpYWxNb3Vu
dFdpdGhFcnJvckhhbmRsaW5nKHJlbmRlcmVkRWxlbWVudCwgaG9zdFBhcmVudCwgaG9zdENvbnRh
aW5lckluZm8sIHRyYW5zYWN0aW9uLCBjb250ZXh0KTtcblx0ICAgIH0gZWxzZSB7XG5cdCAgICAg
IG1hcmt1cCA9IHRoaXMucGVyZm9ybUluaXRpYWxNb3VudChyZW5kZXJlZEVsZW1lbnQsIGhvc3RQ
YXJlbnQsIGhvc3RDb250YWluZXJJbmZvLCB0cmFuc2FjdGlvbiwgY29udGV4dCk7XG5cdCAgICB9
XG5cdFxuXHQgICAgaWYgKGluc3QuY29tcG9uZW50RGlkTW91bnQpIHtcblx0ICAgICAgaWYgKGZh
bHNlKSB7XG5cdCAgICAgICAgdHJhbnNhY3Rpb24uZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1
ZShmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgICBtZWFzdXJlTGlmZUN5Y2xlUGVyZihmdW5jdGlv
biAoKSB7XG5cdCAgICAgICAgICAgIHJldHVybiBpbnN0LmNvbXBvbmVudERpZE1vdW50KCk7XG5c
dCAgICAgICAgICB9LCBfdGhpcy5fZGVidWdJRCwgJ2NvbXBvbmVudERpZE1vdW50Jyk7XG5cdCAg
ICAgICAgfSk7XG5cdCAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgdHJhbnNhY3Rpb24uZ2V0UmVh
Y3RNb3VudFJlYWR5KCkuZW5xdWV1ZShpbnN0LmNvbXBvbmVudERpZE1vdW50LCBpbnN0KTtcblx0
ICAgICAgfVxuXHQgICAgfVxuXHRcblx0ICAgIHJldHVybiBtYXJrdXA7XG5cdCAgfSxcblx0XG5c
dCAgX2NvbnN0cnVjdENvbXBvbmVudDogZnVuY3Rpb24gKGRvQ29uc3RydWN0LCBwdWJsaWNQcm9w
cywgcHVibGljQ29udGV4dCwgdXBkYXRlUXVldWUpIHtcblx0ICAgIGlmIChmYWxzZSkge1xuXHQg
ICAgICBSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50ID0gdGhpcztcblx0ICAgICAgdHJ5IHtcblx0
ICAgICAgICByZXR1cm4gdGhpcy5fY29uc3RydWN0Q29tcG9uZW50V2l0aG91dE93bmVyKGRvQ29u
c3RydWN0LCBwdWJsaWNQcm9wcywgcHVibGljQ29udGV4dCwgdXBkYXRlUXVldWUpO1xuXHQgICAg
ICB9IGZpbmFsbHkge1xuXHQgICAgICAgIFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQgPSBudWxs
O1xuXHQgICAgICB9XG5cdCAgICB9IGVsc2Uge1xuXHQgICAgICByZXR1cm4gdGhpcy5fY29uc3Ry
dWN0Q29tcG9uZW50V2l0aG91dE93bmVyKGRvQ29uc3RydWN0LCBwdWJsaWNQcm9wcywgcHVibGlj
Q29udGV4dCwgdXBkYXRlUXVldWUpO1xuXHQgICAgfVxuXHQgIH0sXG5cdFxuXHQgIF9jb25zdHJ1
Y3RDb21wb25lbnRXaXRob3V0T3duZXI6IGZ1bmN0aW9uIChkb0NvbnN0cnVjdCwgcHVibGljUHJv
cHMsIHB1YmxpY0NvbnRleHQsIHVwZGF0ZVF1ZXVlKSB7XG5cdCAgICB2YXIgQ29tcG9uZW50ID0g
dGhpcy5fY3VycmVudEVsZW1lbnQudHlwZTtcblx0XG5cdCAgICBpZiAoZG9Db25zdHJ1Y3QpIHtc
blx0ICAgICAgaWYgKGZhbHNlKSB7XG5cdCAgICAgICAgcmV0dXJuIG1lYXN1cmVMaWZlQ3ljbGVQ
ZXJmKGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICAgIHJldHVybiBuZXcgQ29tcG9uZW50KHB1Ymxp
Y1Byb3BzLCBwdWJsaWNDb250ZXh0LCB1cGRhdGVRdWV1ZSk7XG5cdCAgICAgICAgfSwgdGhpcy5f
ZGVidWdJRCwgJ2N0b3InKTtcblx0ICAgICAgfSBlbHNlIHtcblx0ICAgICAgICByZXR1cm4gbmV3
IENvbXBvbmVudChwdWJsaWNQcm9wcywgcHVibGljQ29udGV4dCwgdXBkYXRlUXVldWUpO1xuXHQg
ICAgICB9XG5cdCAgICB9XG5cdFxuXHQgICAgLy8gVGhpcyBjYW4gc3RpbGwgYmUgYW4gaW5zdGFu
Y2UgaW4gY2FzZSBvZiBmYWN0b3J5IGNvbXBvbmVudHNcblx0ICAgIC8vIGJ1dCB3ZSdsbCBjb3Vu
dCB0aGlzIGFzIHRpbWUgc3BlbnQgcmVuZGVyaW5nIGFzIHRoZSBtb3JlIGNvbW1vbiBjYXNlLlxu
XHQgICAgaWYgKGZhbHNlKSB7XG5cdCAgICAgIHJldHVybiBtZWFzdXJlTGlmZUN5Y2xlUGVyZihm
dW5jdGlvbiAoKSB7XG5cdCAgICAgICAgcmV0dXJuIENvbXBvbmVudChwdWJsaWNQcm9wcywgcHVi
bGljQ29udGV4dCwgdXBkYXRlUXVldWUpO1xuXHQgICAgICB9LCB0aGlzLl9kZWJ1Z0lELCAncmVu
ZGVyJyk7XG5cdCAgICB9IGVsc2Uge1xuXHQgICAgICByZXR1cm4gQ29tcG9uZW50KHB1YmxpY1By
b3BzLCBwdWJsaWNDb250ZXh0LCB1cGRhdGVRdWV1ZSk7XG5cdCAgICB9XG5cdCAgfSxcblx0XG5c
dCAgcGVyZm9ybUluaXRpYWxNb3VudFdpdGhFcnJvckhhbmRsaW5nOiBmdW5jdGlvbiAocmVuZGVy
ZWRFbGVtZW50LCBob3N0UGFyZW50LCBob3N0Q29udGFpbmVySW5mbywgdHJhbnNhY3Rpb24sIGNv
bnRleHQpIHtcblx0ICAgIHZhciBtYXJrdXA7XG5cdCAgICB2YXIgY2hlY2twb2ludCA9IHRyYW5z
YWN0aW9uLmNoZWNrcG9pbnQoKTtcblx0ICAgIHRyeSB7XG5cdCAgICAgIG1hcmt1cCA9IHRoaXMu
cGVyZm9ybUluaXRpYWxNb3VudChyZW5kZXJlZEVsZW1lbnQsIGhvc3RQYXJlbnQsIGhvc3RDb250
YWluZXJJbmZvLCB0cmFuc2FjdGlvbiwgY29udGV4dCk7XG5cdCAgICB9IGNhdGNoIChlKSB7XG5c
dCAgICAgIC8vIFJvbGwgYmFjayB0byBjaGVja3BvaW50LCBoYW5kbGUgZXJyb3IgKHdoaWNoIG1h
eSBhZGQgaXRlbXMgdG8gdGhlIHRyYW5zYWN0aW9uKSwgYW5kIHRha2UgYSBuZXcgY2hlY2twb2lu
dFxuXHQgICAgICB0cmFuc2FjdGlvbi5yb2xsYmFjayhjaGVja3BvaW50KTtcblx0ICAgICAgdGhp
cy5faW5zdGFuY2UudW5zdGFibGVfaGFuZGxlRXJyb3IoZSk7XG5cdCAgICAgIGlmICh0aGlzLl9w
ZW5kaW5nU3RhdGVRdWV1ZSkge1xuXHQgICAgICAgIHRoaXMuX2luc3RhbmNlLnN0YXRlID0gdGhp
cy5fcHJvY2Vzc1BlbmRpbmdTdGF0ZSh0aGlzLl9pbnN0YW5jZS5wcm9wcywgdGhpcy5faW5zdGFu
Y2UuY29udGV4dCk7XG5cdCAgICAgIH1cblx0ICAgICAgY2hlY2twb2ludCA9IHRyYW5zYWN0aW9u
LmNoZWNrcG9pbnQoKTtcblx0XG5cdCAgICAgIHRoaXMuX3JlbmRlcmVkQ29tcG9uZW50LnVubW91
bnRDb21wb25lbnQodHJ1ZSk7XG5cdCAgICAgIHRyYW5zYWN0aW9uLnJvbGxiYWNrKGNoZWNrcG9p
bnQpO1xuXHRcblx0ICAgICAgLy8gVHJ5IGFnYWluIC0gd2UndmUgaW5mb3JtZWQgdGhlIGNvbXBv
bmVudCBhYm91dCB0aGUgZXJyb3IsIHNvIHRoZXkgY2FuIHJlbmRlciBhbiBlcnJvciBtZXNzYWdl
IHRoaXMgdGltZS5cblx0ICAgICAgLy8gSWYgdGhpcyB0aHJvd3MgYWdhaW4sIHRoZSBlcnJvciB3
aWxsIGJ1YmJsZSB1cCAoYW5kIGNhbiBiZSBjYXVnaHQgYnkgYSBoaWdoZXIgZXJyb3IgYm91bmRh
cnkpLlxuXHQgICAgICBtYXJrdXAgPSB0aGlzLnBlcmZvcm1Jbml0aWFsTW91bnQocmVuZGVyZWRF
bGVtZW50LCBob3N0UGFyZW50LCBob3N0Q29udGFpbmVySW5mbywgdHJhbnNhY3Rpb24sIGNvbnRl
eHQpO1xuXHQgICAgfVxuXHQgICAgcmV0dXJuIG1hcmt1cDtcblx0ICB9LFxuXHRcblx0ICBwZXJm
b3JtSW5pdGlhbE1vdW50OiBmdW5jdGlvbiAocmVuZGVyZWRFbGVtZW50LCBob3N0UGFyZW50LCBo
b3N0Q29udGFpbmVySW5mbywgdHJhbnNhY3Rpb24sIGNvbnRleHQpIHtcblx0ICAgIHZhciBpbnN0
ID0gdGhpcy5faW5zdGFuY2U7XG5cdFxuXHQgICAgdmFyIGRlYnVnSUQgPSAwO1xuXHQgICAgaWYg
KGZhbHNlKSB7XG5cdCAgICAgIGRlYnVnSUQgPSB0aGlzLl9kZWJ1Z0lEO1xuXHQgICAgfVxuXHRc
blx0ICAgIGlmIChpbnN0LmNvbXBvbmVudFdpbGxNb3VudCkge1xuXHQgICAgICBpZiAoZmFsc2Up
IHtcblx0ICAgICAgICBtZWFzdXJlTGlmZUN5Y2xlUGVyZihmdW5jdGlvbiAoKSB7XG5cdCAgICAg
ICAgICByZXR1cm4gaW5zdC5jb21wb25lbnRXaWxsTW91bnQoKTtcblx0ICAgICAgICB9LCBkZWJ1
Z0lELCAnY29tcG9uZW50V2lsbE1vdW50Jyk7XG5cdCAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAg
aW5zdC5jb21wb25lbnRXaWxsTW91bnQoKTtcblx0ICAgICAgfVxuXHQgICAgICAvLyBXaGVuIG1v
dW50aW5nLCBjYWxscyB0byBgc2V0U3RhdGVgIGJ5IGBjb21wb25lbnRXaWxsTW91bnRgIHdpbGwg
c2V0XG5cdCAgICAgIC8vIGB0aGlzLl9wZW5kaW5nU3RhdGVRdWV1ZWAgd2l0aG91dCB0cmlnZ2Vy
aW5nIGEgcmUtcmVuZGVyLlxuXHQgICAgICBpZiAodGhpcy5fcGVuZGluZ1N0YXRlUXVldWUpIHtc
blx0ICAgICAgICBpbnN0LnN0YXRlID0gdGhpcy5fcHJvY2Vzc1BlbmRpbmdTdGF0ZShpbnN0LnBy
b3BzLCBpbnN0LmNvbnRleHQpO1xuXHQgICAgICB9XG5cdCAgICB9XG5cdFxuXHQgICAgLy8gSWYg
bm90IGEgc3RhdGVsZXNzIGNvbXBvbmVudCwgd2Ugbm93IHJlbmRlclxuXHQgICAgaWYgKHJlbmRl
cmVkRWxlbWVudCA9PT0gdW5kZWZpbmVkKSB7XG5cdCAgICAgIHJlbmRlcmVkRWxlbWVudCA9IHRo
aXMuX3JlbmRlclZhbGlkYXRlZENvbXBvbmVudCgpO1xuXHQgICAgfVxuXHRcblx0ICAgIHZhciBu
b2RlVHlwZSA9IFJlYWN0Tm9kZVR5cGVzLmdldFR5cGUocmVuZGVyZWRFbGVtZW50KTtcblx0ICAg
IHRoaXMuX3JlbmRlcmVkTm9kZVR5cGUgPSBub2RlVHlwZTtcblx0ICAgIHZhciBjaGlsZCA9IHRo
aXMuX2luc3RhbnRpYXRlUmVhY3RDb21wb25lbnQocmVuZGVyZWRFbGVtZW50LCBub2RlVHlwZSAh
PT0gUmVhY3ROb2RlVHlwZXMuRU1QVFkgLyogc2hvdWxkSGF2ZURlYnVnSUQgKi9cblx0ICAgICk7
XG5cdCAgICB0aGlzLl9yZW5kZXJlZENvbXBvbmVudCA9IGNoaWxkO1xuXHRcblx0ICAgIHZhciBt
YXJrdXAgPSBSZWFjdFJlY29uY2lsZXIubW91bnRDb21wb25lbnQoY2hpbGQsIHRyYW5zYWN0aW9u
LCBob3N0UGFyZW50LCBob3N0Q29udGFpbmVySW5mbywgdGhpcy5fcHJvY2Vzc0NoaWxkQ29udGV4
dChjb250ZXh0KSwgZGVidWdJRCk7XG5cdFxuXHQgICAgaWYgKGZhbHNlKSB7XG5cdCAgICAgIGlm
IChkZWJ1Z0lEICE9PSAwKSB7XG5cdCAgICAgICAgdmFyIGNoaWxkRGVidWdJRHMgPSBjaGlsZC5f
ZGVidWdJRCAhPT0gMCA/IFtjaGlsZC5fZGVidWdJRF0gOiBbXTtcblx0ICAgICAgICBSZWFjdElu
c3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25TZXRDaGlsZHJlbihkZWJ1Z0lELCBjaGlsZERlYnVn
SURzKTtcblx0ICAgICAgfVxuXHQgICAgfVxuXHRcblx0ICAgIHJldHVybiBtYXJrdXA7XG5cdCAg
fSxcblx0XG5cdCAgZ2V0SG9zdE5vZGU6IGZ1bmN0aW9uICgpIHtcblx0ICAgIHJldHVybiBSZWFj
dFJlY29uY2lsZXIuZ2V0SG9zdE5vZGUodGhpcy5fcmVuZGVyZWRDb21wb25lbnQpO1xuXHQgIH0s
XG5cdFxuXHQgIC8qKlxuXHQgICAqIFJlbGVhc2VzIGFueSByZXNvdXJjZXMgYWxsb2NhdGVkIGJ5
IGBtb3VudENvbXBvbmVudGAuXG5cdCAgICpcblx0ICAgKiBAZmluYWxcblx0ICAgKiBAaW50ZXJu
YWxcblx0ICAgKi9cblx0ICB1bm1vdW50Q29tcG9uZW50OiBmdW5jdGlvbiAoc2FmZWx5KSB7XG5c
dCAgICBpZiAoIXRoaXMuX3JlbmRlcmVkQ29tcG9uZW50KSB7XG5cdCAgICAgIHJldHVybjtcblx0
ICAgIH1cblx0XG5cdCAgICB2YXIgaW5zdCA9IHRoaXMuX2luc3RhbmNlO1xuXHRcblx0ICAgIGlm
IChpbnN0LmNvbXBvbmVudFdpbGxVbm1vdW50ICYmICFpbnN0Ll9jYWxsZWRDb21wb25lbnRXaWxs
VW5tb3VudCkge1xuXHQgICAgICBpbnN0Ll9jYWxsZWRDb21wb25lbnRXaWxsVW5tb3VudCA9IHRy
dWU7XG5cdFxuXHQgICAgICBpZiAoc2FmZWx5KSB7XG5cdCAgICAgICAgdmFyIG5hbWUgPSB0aGlz
LmdldE5hbWUoKSArICcuY29tcG9uZW50V2lsbFVubW91bnQoKSc7XG5cdCAgICAgICAgUmVhY3RF
cnJvclV0aWxzLmludm9rZUd1YXJkZWRDYWxsYmFjayhuYW1lLCBpbnN0LmNvbXBvbmVudFdpbGxV
bm1vdW50LmJpbmQoaW5zdCkpO1xuXHQgICAgICB9IGVsc2Uge1xuXHQgICAgICAgIGlmIChmYWxz
ZSkge1xuXHQgICAgICAgICAgbWVhc3VyZUxpZmVDeWNsZVBlcmYoZnVuY3Rpb24gKCkge1xuXHQg
ICAgICAgICAgICByZXR1cm4gaW5zdC5jb21wb25lbnRXaWxsVW5tb3VudCgpO1xuXHQgICAgICAg
ICAgfSwgdGhpcy5fZGVidWdJRCwgJ2NvbXBvbmVudFdpbGxVbm1vdW50Jyk7XG5cdCAgICAgICAg
fSBlbHNlIHtcblx0ICAgICAgICAgIGluc3QuY29tcG9uZW50V2lsbFVubW91bnQoKTtcblx0ICAg
ICAgICB9XG5cdCAgICAgIH1cblx0ICAgIH1cblx0XG5cdCAgICBpZiAodGhpcy5fcmVuZGVyZWRD
b21wb25lbnQpIHtcblx0ICAgICAgUmVhY3RSZWNvbmNpbGVyLnVubW91bnRDb21wb25lbnQodGhp
cy5fcmVuZGVyZWRDb21wb25lbnQsIHNhZmVseSk7XG5cdCAgICAgIHRoaXMuX3JlbmRlcmVkTm9k
ZVR5cGUgPSBudWxsO1xuXHQgICAgICB0aGlzLl9yZW5kZXJlZENvbXBvbmVudCA9IG51bGw7XG5c
dCAgICAgIHRoaXMuX2luc3RhbmNlID0gbnVsbDtcblx0ICAgIH1cblx0XG5cdCAgICAvLyBSZXNl
dCBwZW5kaW5nIGZpZWxkc1xuXHQgICAgLy8gRXZlbiBpZiB0aGlzIGNvbXBvbmVudCBpcyBzY2hl
ZHVsZWQgZm9yIGFub3RoZXIgdXBkYXRlIGluIFJlYWN0VXBkYXRlcyxcblx0ICAgIC8vIGl0IHdv
dWxkIHN0aWxsIGJlIGlnbm9yZWQgYmVjYXVzZSB0aGVzZSBmaWVsZHMgYXJlIHJlc2V0LlxuXHQg
ICAgdGhpcy5fcGVuZGluZ1N0YXRlUXVldWUgPSBudWxsO1xuXHQgICAgdGhpcy5fcGVuZGluZ1Jl
cGxhY2VTdGF0ZSA9IGZhbHNlO1xuXHQgICAgdGhpcy5fcGVuZGluZ0ZvcmNlVXBkYXRlID0gZmFs
c2U7XG5cdCAgICB0aGlzLl9wZW5kaW5nQ2FsbGJhY2tzID0gbnVsbDtcblx0ICAgIHRoaXMuX3Bl
bmRpbmdFbGVtZW50ID0gbnVsbDtcblx0XG5cdCAgICAvLyBUaGVzZSBmaWVsZHMgZG8gbm90IHJl
YWxseSBuZWVkIHRvIGJlIHJlc2V0IHNpbmNlIHRoaXMgb2JqZWN0IGlzIG5vXG5cdCAgICAvLyBs
b25nZXIgYWNjZXNzaWJsZS5cblx0ICAgIHRoaXMuX2NvbnRleHQgPSBudWxsO1xuXHQgICAgdGhp
cy5fcm9vdE5vZGVJRCA9IDA7XG5cdCAgICB0aGlzLl90b3BMZXZlbFdyYXBwZXIgPSBudWxsO1xu
XHRcblx0ICAgIC8vIERlbGV0ZSB0aGUgcmVmZXJlbmNlIGZyb20gdGhlIGluc3RhbmNlIHRvIHRo
aXMgaW50ZXJuYWwgcmVwcmVzZW50YXRpb25cblx0ICAgIC8vIHdoaWNoIGFsbG93IHRoZSBpbnRl
cm5hbHMgdG8gYmUgcHJvcGVybHkgY2xlYW5lZCB1cCBldmVuIGlmIHRoZSB1c2VyXG5cdCAgICAv
LyBsZWFrcyBhIHJlZmVyZW5jZSB0byB0aGUgcHVibGljIGluc3RhbmNlLlxuXHQgICAgUmVhY3RJ
bnN0YW5jZU1hcC5yZW1vdmUoaW5zdCk7XG5cdFxuXHQgICAgLy8gU29tZSBleGlzdGluZyBjb21w
b25lbnRzIHJlbHkgb24gaW5zdC5wcm9wcyBldmVuIGFmdGVyIHRoZXkndmUgYmVlblxuXHQgICAg
Ly8gZGVzdHJveWVkIChpbiBldmVudCBoYW5kbGVycykuXG5cdCAgICAvLyBUT0RPOiBpbnN0LnBy
b3BzID0gbnVsbDtcblx0ICAgIC8vIFRPRE86IGluc3Quc3RhdGUgPSBudWxsO1xuXHQgICAgLy8g
VE9ETzogaW5zdC5jb250ZXh0ID0gbnVsbDtcblx0ICB9LFxuXHRcblx0ICAvKipcblx0ICAgKiBG
aWx0ZXJzIHRoZSBjb250ZXh0IG9iamVjdCB0byBvbmx5IGNvbnRhaW4ga2V5cyBzcGVjaWZpZWQg
aW5cblx0ICAgKiBgY29udGV4dFR5cGVzYFxuXHQgICAqXG5cdCAgICogQHBhcmFtIHtvYmplY3R9
IGNvbnRleHRcblx0ICAgKiBAcmV0dXJuIHs/b2JqZWN0fVxuXHQgICAqIEBwcml2YXRlXG5cdCAg
ICovXG5cdCAgX21hc2tDb250ZXh0OiBmdW5jdGlvbiAoY29udGV4dCkge1xuXHQgICAgdmFyIENv
bXBvbmVudCA9IHRoaXMuX2N1cnJlbnRFbGVtZW50LnR5cGU7XG5cdCAgICB2YXIgY29udGV4dFR5
cGVzID0gQ29tcG9uZW50LmNvbnRleHRUeXBlcztcblx0ICAgIGlmICghY29udGV4dFR5cGVzKSB7
XG5cdCAgICAgIHJldHVybiBlbXB0eU9iamVjdDtcblx0ICAgIH1cblx0ICAgIHZhciBtYXNrZWRD
b250ZXh0ID0ge307XG5cdCAgICBmb3IgKHZhciBjb250ZXh0TmFtZSBpbiBjb250ZXh0VHlwZXMp
IHtcblx0ICAgICAgbWFza2VkQ29udGV4dFtjb250ZXh0TmFtZV0gPSBjb250ZXh0W2NvbnRleHRO
YW1lXTtcblx0ICAgIH1cblx0ICAgIHJldHVybiBtYXNrZWRDb250ZXh0O1xuXHQgIH0sXG5cdFxu
XHQgIC8qKlxuXHQgICAqIEZpbHRlcnMgdGhlIGNvbnRleHQgb2JqZWN0IHRvIG9ubHkgY29udGFp
biBrZXlzIHNwZWNpZmllZCBpblxuXHQgICAqIGBjb250ZXh0VHlwZXNgLCBhbmQgYXNzZXJ0cyB0
aGF0IHRoZXkgYXJlIHZhbGlkLlxuXHQgICAqXG5cdCAgICogQHBhcmFtIHtvYmplY3R9IGNvbnRl
eHRcblx0ICAgKiBAcmV0dXJuIHs/b2JqZWN0fVxuXHQgICAqIEBwcml2YXRlXG5cdCAgICovXG5c
dCAgX3Byb2Nlc3NDb250ZXh0OiBmdW5jdGlvbiAoY29udGV4dCkge1xuXHQgICAgdmFyIG1hc2tl
ZENvbnRleHQgPSB0aGlzLl9tYXNrQ29udGV4dChjb250ZXh0KTtcblx0ICAgIGlmIChmYWxzZSkg
e1xuXHQgICAgICB2YXIgQ29tcG9uZW50ID0gdGhpcy5fY3VycmVudEVsZW1lbnQudHlwZTtcblx0
ICAgICAgaWYgKENvbXBvbmVudC5jb250ZXh0VHlwZXMpIHtcblx0ICAgICAgICB0aGlzLl9jaGVj
a0NvbnRleHRUeXBlcyhDb21wb25lbnQuY29udGV4dFR5cGVzLCBtYXNrZWRDb250ZXh0LCAnY29u
dGV4dCcpO1xuXHQgICAgICB9XG5cdCAgICB9XG5cdCAgICByZXR1cm4gbWFza2VkQ29udGV4dDtc
blx0ICB9LFxuXHRcblx0ICAvKipcblx0ICAgKiBAcGFyYW0ge29iamVjdH0gY3VycmVudENvbnRl
eHRcblx0ICAgKiBAcmV0dXJuIHtvYmplY3R9XG5cdCAgICogQHByaXZhdGVcblx0ICAgKi9cblx0
ICBfcHJvY2Vzc0NoaWxkQ29udGV4dDogZnVuY3Rpb24gKGN1cnJlbnRDb250ZXh0KSB7XG5cdCAg
ICB2YXIgQ29tcG9uZW50ID0gdGhpcy5fY3VycmVudEVsZW1lbnQudHlwZTtcblx0ICAgIHZhciBp
bnN0ID0gdGhpcy5faW5zdGFuY2U7XG5cdCAgICB2YXIgY2hpbGRDb250ZXh0O1xuXHRcblx0ICAg
IGlmIChpbnN0LmdldENoaWxkQ29udGV4dCkge1xuXHQgICAgICBpZiAoZmFsc2UpIHtcblx0ICAg
ICAgICBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25CZWdpblByb2Nlc3NpbmdDaGls
ZENvbnRleHQoKTtcblx0ICAgICAgICB0cnkge1xuXHQgICAgICAgICAgY2hpbGRDb250ZXh0ID0g
aW5zdC5nZXRDaGlsZENvbnRleHQoKTtcblx0ICAgICAgICB9IGZpbmFsbHkge1xuXHQgICAgICAg
ICAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9uRW5kUHJvY2Vzc2luZ0NoaWxkQ29u
dGV4dCgpO1xuXHQgICAgICAgIH1cblx0ICAgICAgfSBlbHNlIHtcblx0ICAgICAgICBjaGlsZENv
bnRleHQgPSBpbnN0LmdldENoaWxkQ29udGV4dCgpO1xuXHQgICAgICB9XG5cdCAgICB9XG5cdFxu
XHQgICAgaWYgKGNoaWxkQ29udGV4dCkge1xuXHQgICAgICAhKHR5cGVvZiBDb21wb25lbnQuY2hp
bGRDb250ZXh0VHlwZXMgPT09ICdvYmplY3QnKSA/ICBmYWxzZSA/IGludmFyaWFudChmYWxzZSwg
JyVzLmdldENoaWxkQ29udGV4dCgpOiBjaGlsZENvbnRleHRUeXBlcyBtdXN0IGJlIGRlZmluZWQg
aW4gb3JkZXIgdG8gdXNlIGdldENoaWxkQ29udGV4dCgpLicsIHRoaXMuZ2V0TmFtZSgpIHx8ICdS
ZWFjdENvbXBvc2l0ZUNvbXBvbmVudCcpIDogX3Byb2RJbnZhcmlhbnQoJzEwNycsIHRoaXMuZ2V0
TmFtZSgpIHx8ICdSZWFjdENvbXBvc2l0ZUNvbXBvbmVudCcpIDogdm9pZCAwO1xuXHQgICAgICBp
ZiAoZmFsc2UpIHtcblx0ICAgICAgICB0aGlzLl9jaGVja0NvbnRleHRUeXBlcyhDb21wb25lbnQu
Y2hpbGRDb250ZXh0VHlwZXMsIGNoaWxkQ29udGV4dCwgJ2NoaWxkIGNvbnRleHQnKTtcblx0ICAg
ICAgfVxuXHQgICAgICBmb3IgKHZhciBuYW1lIGluIGNoaWxkQ29udGV4dCkge1xuXHQgICAgICAg
ICEobmFtZSBpbiBDb21wb25lbnQuY2hpbGRDb250ZXh0VHlwZXMpID8gIGZhbHNlID8gaW52YXJp
YW50KGZhbHNlLCAnJXMuZ2V0Q2hpbGRDb250ZXh0KCk6IGtleSBcIiVzXCIgaXMgbm90IGRlZmlu
ZWQgaW4gY2hpbGRDb250ZXh0VHlwZXMuJywgdGhpcy5nZXROYW1lKCkgfHwgJ1JlYWN0Q29tcG9z
aXRlQ29tcG9uZW50JywgbmFtZSkgOiBfcHJvZEludmFyaWFudCgnMTA4JywgdGhpcy5nZXROYW1l
KCkgfHwgJ1JlYWN0Q29tcG9zaXRlQ29tcG9uZW50JywgbmFtZSkgOiB2b2lkIDA7XG5cdCAgICAg
IH1cblx0ICAgICAgcmV0dXJuIF9hc3NpZ24oe30sIGN1cnJlbnRDb250ZXh0LCBjaGlsZENvbnRl
eHQpO1xuXHQgICAgfVxuXHQgICAgcmV0dXJuIGN1cnJlbnRDb250ZXh0O1xuXHQgIH0sXG5cdFxu
XHQgIC8qKlxuXHQgICAqIEFzc2VydCB0aGF0IHRoZSBjb250ZXh0IHR5cGVzIGFyZSB2YWxpZFxu
XHQgICAqXG5cdCAgICogQHBhcmFtIHtvYmplY3R9IHR5cGVTcGVjcyBNYXAgb2YgY29udGV4dCBm
aWVsZCB0byBhIFJlYWN0UHJvcFR5cGVcblx0ICAgKiBAcGFyYW0ge29iamVjdH0gdmFsdWVzIFJ1
bnRpbWUgdmFsdWVzIHRoYXQgbmVlZCB0byBiZSB0eXBlLWNoZWNrZWRcblx0ICAgKiBAcGFyYW0g
e3N0cmluZ30gbG9jYXRpb24gZS5nLiBcInByb3BcIiwgXCJjb250ZXh0XCIsIFwiY2hpbGQgY29u
dGV4dFwiXG5cdCAgICogQHByaXZhdGVcblx0ICAgKi9cblx0ICBfY2hlY2tDb250ZXh0VHlwZXM6
IGZ1bmN0aW9uICh0eXBlU3BlY3MsIHZhbHVlcywgbG9jYXRpb24pIHtcblx0ICAgIGlmIChmYWxz
ZSkge1xuXHQgICAgICBjaGVja1JlYWN0VHlwZVNwZWModHlwZVNwZWNzLCB2YWx1ZXMsIGxvY2F0
aW9uLCB0aGlzLmdldE5hbWUoKSwgbnVsbCwgdGhpcy5fZGVidWdJRCk7XG5cdCAgICB9XG5cdCAg
fSxcblx0XG5cdCAgcmVjZWl2ZUNvbXBvbmVudDogZnVuY3Rpb24gKG5leHRFbGVtZW50LCB0cmFu
c2FjdGlvbiwgbmV4dENvbnRleHQpIHtcblx0ICAgIHZhciBwcmV2RWxlbWVudCA9IHRoaXMuX2N1
cnJlbnRFbGVtZW50O1xuXHQgICAgdmFyIHByZXZDb250ZXh0ID0gdGhpcy5fY29udGV4dDtcblx0
XG5cdCAgICB0aGlzLl9wZW5kaW5nRWxlbWVudCA9IG51bGw7XG5cdFxuXHQgICAgdGhpcy51cGRh
dGVDb21wb25lbnQodHJhbnNhY3Rpb24sIHByZXZFbGVtZW50LCBuZXh0RWxlbWVudCwgcHJldkNv
bnRleHQsIG5leHRDb250ZXh0KTtcblx0ICB9LFxuXHRcblx0ICAvKipcblx0ICAgKiBJZiBhbnkg
b2YgYF9wZW5kaW5nRWxlbWVudGAsIGBfcGVuZGluZ1N0YXRlUXVldWVgLCBvciBgX3BlbmRpbmdG
b3JjZVVwZGF0ZWBcblx0ICAgKiBpcyBzZXQsIHVwZGF0ZSB0aGUgY29tcG9uZW50LlxuXHQgICAq
XG5cdCAgICogQHBhcmFtIHtSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9ufSB0cmFuc2FjdGlvblxu
XHQgICAqIEBpbnRlcm5hbFxuXHQgICAqL1xuXHQgIHBlcmZvcm1VcGRhdGVJZk5lY2Vzc2FyeTog
ZnVuY3Rpb24gKHRyYW5zYWN0aW9uKSB7XG5cdCAgICBpZiAodGhpcy5fcGVuZGluZ0VsZW1lbnQg
IT0gbnVsbCkge1xuXHQgICAgICBSZWFjdFJlY29uY2lsZXIucmVjZWl2ZUNvbXBvbmVudCh0aGlz
LCB0aGlzLl9wZW5kaW5nRWxlbWVudCwgdHJhbnNhY3Rpb24sIHRoaXMuX2NvbnRleHQpO1xuXHQg
ICAgfSBlbHNlIGlmICh0aGlzLl9wZW5kaW5nU3RhdGVRdWV1ZSAhPT0gbnVsbCB8fCB0aGlzLl9w
ZW5kaW5nRm9yY2VVcGRhdGUpIHtcblx0ICAgICAgdGhpcy51cGRhdGVDb21wb25lbnQodHJhbnNh
Y3Rpb24sIHRoaXMuX2N1cnJlbnRFbGVtZW50LCB0aGlzLl9jdXJyZW50RWxlbWVudCwgdGhpcy5f
Y29udGV4dCwgdGhpcy5fY29udGV4dCk7XG5cdCAgICB9IGVsc2Uge1xuXHQgICAgICB0aGlzLl91
cGRhdGVCYXRjaE51bWJlciA9IG51bGw7XG5cdCAgICB9XG5cdCAgfSxcblx0XG5cdCAgLyoqXG5c
dCAgICogUGVyZm9ybSBhbiB1cGRhdGUgdG8gYSBtb3VudGVkIGNvbXBvbmVudC4gVGhlIGNvbXBv
bmVudFdpbGxSZWNlaXZlUHJvcHMgYW5kXG5cdCAgICogc2hvdWxkQ29tcG9uZW50VXBkYXRlIG1l
dGhvZHMgYXJlIGNhbGxlZCwgdGhlbiAoYXNzdW1pbmcgdGhlIHVwZGF0ZSBpc24ndFxuXHQgICAq
IHNraXBwZWQpIHRoZSByZW1haW5pbmcgdXBkYXRlIGxpZmVjeWNsZSBtZXRob2RzIGFyZSBjYWxs
ZWQgYW5kIHRoZSBET01cblx0ICAgKiByZXByZXNlbnRhdGlvbiBpcyB1cGRhdGVkLlxuXHQgICAq
XG5cdCAgICogQnkgZGVmYXVsdCwgdGhpcyBpbXBsZW1lbnRzIFJlYWN0J3MgcmVuZGVyaW5nIGFu
ZCByZWNvbmNpbGlhdGlvbiBhbGdvcml0aG0uXG5cdCAgICogU29waGlzdGljYXRlZCBjbGllbnRz
IG1heSB3aXNoIHRvIG92ZXJyaWRlIHRoaXMuXG5cdCAgICpcblx0ICAgKiBAcGFyYW0ge1JlYWN0
UmVjb25jaWxlVHJhbnNhY3Rpb259IHRyYW5zYWN0aW9uXG5cdCAgICogQHBhcmFtIHtSZWFjdEVs
ZW1lbnR9IHByZXZQYXJlbnRFbGVtZW50XG5cdCAgICogQHBhcmFtIHtSZWFjdEVsZW1lbnR9IG5l
eHRQYXJlbnRFbGVtZW50XG5cdCAgICogQGludGVybmFsXG5cdCAgICogQG92ZXJyaWRhYmxlXG5c
dCAgICovXG5cdCAgdXBkYXRlQ29tcG9uZW50OiBmdW5jdGlvbiAodHJhbnNhY3Rpb24sIHByZXZQ
YXJlbnRFbGVtZW50LCBuZXh0UGFyZW50RWxlbWVudCwgcHJldlVubWFza2VkQ29udGV4dCwgbmV4
dFVubWFza2VkQ29udGV4dCkge1xuXHQgICAgdmFyIGluc3QgPSB0aGlzLl9pbnN0YW5jZTtcblx0
ICAgICEoaW5zdCAhPSBudWxsKSA/ICBmYWxzZSA/IGludmFyaWFudChmYWxzZSwgJ0F0dGVtcHRl
ZCB0byB1cGRhdGUgY29tcG9uZW50IGAlc2AgdGhhdCBoYXMgYWxyZWFkeSBiZWVuIHVubW91bnRl
ZCAob3IgZmFpbGVkIHRvIG1vdW50KS4nLCB0aGlzLmdldE5hbWUoKSB8fCAnUmVhY3RDb21wb3Np
dGVDb21wb25lbnQnKSA6IF9wcm9kSW52YXJpYW50KCcxMzYnLCB0aGlzLmdldE5hbWUoKSB8fCAn
UmVhY3RDb21wb3NpdGVDb21wb25lbnQnKSA6IHZvaWQgMDtcblx0XG5cdCAgICB2YXIgd2lsbFJl
Y2VpdmUgPSBmYWxzZTtcblx0ICAgIHZhciBuZXh0Q29udGV4dDtcblx0XG5cdCAgICAvLyBEZXRl
cm1pbmUgaWYgdGhlIGNvbnRleHQgaGFzIGNoYW5nZWQgb3Igbm90XG5cdCAgICBpZiAodGhpcy5f
Y29udGV4dCA9PT0gbmV4dFVubWFza2VkQ29udGV4dCkge1xuXHQgICAgICBuZXh0Q29udGV4dCA9
IGluc3QuY29udGV4dDtcblx0ICAgIH0gZWxzZSB7XG5cdCAgICAgIG5leHRDb250ZXh0ID0gdGhp
cy5fcHJvY2Vzc0NvbnRleHQobmV4dFVubWFza2VkQ29udGV4dCk7XG5cdCAgICAgIHdpbGxSZWNl
aXZlID0gdHJ1ZTtcblx0ICAgIH1cblx0XG5cdCAgICB2YXIgcHJldlByb3BzID0gcHJldlBhcmVu
dEVsZW1lbnQucHJvcHM7XG5cdCAgICB2YXIgbmV4dFByb3BzID0gbmV4dFBhcmVudEVsZW1lbnQu
cHJvcHM7XG5cdFxuXHQgICAgLy8gTm90IGEgc2ltcGxlIHN0YXRlIHVwZGF0ZSBidXQgYSBwcm9w
cyB1cGRhdGVcblx0ICAgIGlmIChwcmV2UGFyZW50RWxlbWVudCAhPT0gbmV4dFBhcmVudEVsZW1l
bnQpIHtcblx0ICAgICAgd2lsbFJlY2VpdmUgPSB0cnVlO1xuXHQgICAgfVxuXHRcblx0ICAgIC8v
IEFuIHVwZGF0ZSBoZXJlIHdpbGwgc2NoZWR1bGUgYW4gdXBkYXRlIGJ1dCBpbW1lZGlhdGVseSBz
ZXRcblx0ICAgIC8vIF9wZW5kaW5nU3RhdGVRdWV1ZSB3aGljaCB3aWxsIGVuc3VyZSB0aGF0IGFu
eSBzdGF0ZSB1cGRhdGVzIGdldHNcblx0ICAgIC8vIGltbWVkaWF0ZWx5IHJlY29uY2lsZWQgaW5z
dGVhZCBvZiB3YWl0aW5nIGZvciB0aGUgbmV4dCBiYXRjaC5cblx0ICAgIGlmICh3aWxsUmVjZWl2
ZSAmJiBpbnN0LmNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMpIHtcblx0ICAgICAgaWYgKGZhbHNl
KSB7XG5cdCAgICAgICAgbWVhc3VyZUxpZmVDeWNsZVBlcmYoZnVuY3Rpb24gKCkge1xuXHQgICAg
ICAgICAgcmV0dXJuIGluc3QuY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyhuZXh0UHJvcHMsIG5l
eHRDb250ZXh0KTtcblx0ICAgICAgICB9LCB0aGlzLl9kZWJ1Z0lELCAnY29tcG9uZW50V2lsbFJl
Y2VpdmVQcm9wcycpO1xuXHQgICAgICB9IGVsc2Uge1xuXHQgICAgICAgIGluc3QuY29tcG9uZW50
V2lsbFJlY2VpdmVQcm9wcyhuZXh0UHJvcHMsIG5leHRDb250ZXh0KTtcblx0ICAgICAgfVxuXHQg
ICAgfVxuXHRcblx0ICAgIHZhciBuZXh0U3RhdGUgPSB0aGlzLl9wcm9jZXNzUGVuZGluZ1N0YXRl
KG5leHRQcm9wcywgbmV4dENvbnRleHQpO1xuXHQgICAgdmFyIHNob3VsZFVwZGF0ZSA9IHRydWU7
XG5cdFxuXHQgICAgaWYgKCF0aGlzLl9wZW5kaW5nRm9yY2VVcGRhdGUpIHtcblx0ICAgICAgaWYg
KGluc3Quc2hvdWxkQ29tcG9uZW50VXBkYXRlKSB7XG5cdCAgICAgICAgaWYgKGZhbHNlKSB7XG5c
dCAgICAgICAgICBzaG91bGRVcGRhdGUgPSBtZWFzdXJlTGlmZUN5Y2xlUGVyZihmdW5jdGlvbiAo
KSB7XG5cdCAgICAgICAgICAgIHJldHVybiBpbnN0LnNob3VsZENvbXBvbmVudFVwZGF0ZShuZXh0
UHJvcHMsIG5leHRTdGF0ZSwgbmV4dENvbnRleHQpO1xuXHQgICAgICAgICAgfSwgdGhpcy5fZGVi
dWdJRCwgJ3Nob3VsZENvbXBvbmVudFVwZGF0ZScpO1xuXHQgICAgICAgIH0gZWxzZSB7XG5cdCAg
ICAgICAgICBzaG91bGRVcGRhdGUgPSBpbnN0LnNob3VsZENvbXBvbmVudFVwZGF0ZShuZXh0UHJv
cHMsIG5leHRTdGF0ZSwgbmV4dENvbnRleHQpO1xuXHQgICAgICAgIH1cblx0ICAgICAgfSBlbHNl
IHtcblx0ICAgICAgICBpZiAodGhpcy5fY29tcG9zaXRlVHlwZSA9PT0gQ29tcG9zaXRlVHlwZXMu
UHVyZUNsYXNzKSB7XG5cdCAgICAgICAgICBzaG91bGRVcGRhdGUgPSAhc2hhbGxvd0VxdWFsKHBy
ZXZQcm9wcywgbmV4dFByb3BzKSB8fCAhc2hhbGxvd0VxdWFsKGluc3Quc3RhdGUsIG5leHRTdGF0
ZSk7XG5cdCAgICAgICAgfVxuXHQgICAgICB9XG5cdCAgICB9XG5cdFxuXHQgICAgaWYgKGZhbHNl
KSB7XG5cdCAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJu
aW5nKHNob3VsZFVwZGF0ZSAhPT0gdW5kZWZpbmVkLCAnJXMuc2hvdWxkQ29tcG9uZW50VXBkYXRl
KCk6IFJldHVybmVkIHVuZGVmaW5lZCBpbnN0ZWFkIG9mIGEgJyArICdib29sZWFuIHZhbHVlLiBN
YWtlIHN1cmUgdG8gcmV0dXJuIHRydWUgb3IgZmFsc2UuJywgdGhpcy5nZXROYW1lKCkgfHwgJ1Jl
YWN0Q29tcG9zaXRlQ29tcG9uZW50JykgOiB2b2lkIDA7XG5cdCAgICB9XG5cdFxuXHQgICAgdGhp
cy5fdXBkYXRlQmF0Y2hOdW1iZXIgPSBudWxsO1xuXHQgICAgaWYgKHNob3VsZFVwZGF0ZSkge1xu
XHQgICAgICB0aGlzLl9wZW5kaW5nRm9yY2VVcGRhdGUgPSBmYWxzZTtcblx0ICAgICAgLy8gV2ls
bCBzZXQgYHRoaXMucHJvcHNgLCBgdGhpcy5zdGF0ZWAgYW5kIGB0aGlzLmNvbnRleHRgLlxuXHQg
ICAgICB0aGlzLl9wZXJmb3JtQ29tcG9uZW50VXBkYXRlKG5leHRQYXJlbnRFbGVtZW50LCBuZXh0
UHJvcHMsIG5leHRTdGF0ZSwgbmV4dENvbnRleHQsIHRyYW5zYWN0aW9uLCBuZXh0VW5tYXNrZWRD
b250ZXh0KTtcblx0ICAgIH0gZWxzZSB7XG5cdCAgICAgIC8vIElmIGl0J3MgZGV0ZXJtaW5lZCB0
aGF0IGEgY29tcG9uZW50IHNob3VsZCBub3QgdXBkYXRlLCB3ZSBzdGlsbCB3YW50XG5cdCAgICAg
IC8vIHRvIHNldCBwcm9wcyBhbmQgc3RhdGUgYnV0IHdlIHNob3J0Y3V0IHRoZSByZXN0IG9mIHRo
ZSB1cGRhdGUuXG5cdCAgICAgIHRoaXMuX2N1cnJlbnRFbGVtZW50ID0gbmV4dFBhcmVudEVsZW1l
bnQ7XG5cdCAgICAgIHRoaXMuX2NvbnRleHQgPSBuZXh0VW5tYXNrZWRDb250ZXh0O1xuXHQgICAg
ICBpbnN0LnByb3BzID0gbmV4dFByb3BzO1xuXHQgICAgICBpbnN0LnN0YXRlID0gbmV4dFN0YXRl
O1xuXHQgICAgICBpbnN0LmNvbnRleHQgPSBuZXh0Q29udGV4dDtcblx0ICAgIH1cblx0ICB9LFxu
XHRcblx0ICBfcHJvY2Vzc1BlbmRpbmdTdGF0ZTogZnVuY3Rpb24gKHByb3BzLCBjb250ZXh0KSB7
XG5cdCAgICB2YXIgaW5zdCA9IHRoaXMuX2luc3RhbmNlO1xuXHQgICAgdmFyIHF1ZXVlID0gdGhp
cy5fcGVuZGluZ1N0YXRlUXVldWU7XG5cdCAgICB2YXIgcmVwbGFjZSA9IHRoaXMuX3BlbmRpbmdS
ZXBsYWNlU3RhdGU7XG5cdCAgICB0aGlzLl9wZW5kaW5nUmVwbGFjZVN0YXRlID0gZmFsc2U7XG5c
dCAgICB0aGlzLl9wZW5kaW5nU3RhdGVRdWV1ZSA9IG51bGw7XG5cdFxuXHQgICAgaWYgKCFxdWV1
ZSkge1xuXHQgICAgICByZXR1cm4gaW5zdC5zdGF0ZTtcblx0ICAgIH1cblx0XG5cdCAgICBpZiAo
cmVwbGFjZSAmJiBxdWV1ZS5sZW5ndGggPT09IDEpIHtcblx0ICAgICAgcmV0dXJuIHF1ZXVlWzBd
O1xuXHQgICAgfVxuXHRcblx0ICAgIHZhciBuZXh0U3RhdGUgPSBfYXNzaWduKHt9LCByZXBsYWNl
ID8gcXVldWVbMF0gOiBpbnN0LnN0YXRlKTtcblx0ICAgIGZvciAodmFyIGkgPSByZXBsYWNlID8g
MSA6IDA7IGkgPCBxdWV1ZS5sZW5ndGg7IGkrKykge1xuXHQgICAgICB2YXIgcGFydGlhbCA9IHF1
ZXVlW2ldO1xuXHQgICAgICBfYXNzaWduKG5leHRTdGF0ZSwgdHlwZW9mIHBhcnRpYWwgPT09ICdm
dW5jdGlvbicgPyBwYXJ0aWFsLmNhbGwoaW5zdCwgbmV4dFN0YXRlLCBwcm9wcywgY29udGV4dCkg
OiBwYXJ0aWFsKTtcblx0ICAgIH1cblx0XG5cdCAgICByZXR1cm4gbmV4dFN0YXRlO1xuXHQgIH0s
XG5cdFxuXHQgIC8qKlxuXHQgICAqIE1lcmdlcyBuZXcgcHJvcHMgYW5kIHN0YXRlLCBub3RpZmll
cyBkZWxlZ2F0ZSBtZXRob2RzIG9mIHVwZGF0ZSBhbmRcblx0ICAgKiBwZXJmb3JtcyB1cGRhdGUu
XG5cdCAgICpcblx0ICAgKiBAcGFyYW0ge1JlYWN0RWxlbWVudH0gbmV4dEVsZW1lbnQgTmV4dCBl
bGVtZW50XG5cdCAgICogQHBhcmFtIHtvYmplY3R9IG5leHRQcm9wcyBOZXh0IHB1YmxpYyBvYmpl
Y3QgdG8gc2V0IGFzIHByb3BlcnRpZXMuXG5cdCAgICogQHBhcmFtIHs/b2JqZWN0fSBuZXh0U3Rh
dGUgTmV4dCBvYmplY3QgdG8gc2V0IGFzIHN0YXRlLlxuXHQgICAqIEBwYXJhbSB7P29iamVjdH0g
bmV4dENvbnRleHQgTmV4dCBwdWJsaWMgb2JqZWN0IHRvIHNldCBhcyBjb250ZXh0LlxuXHQgICAq
IEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbn0gdHJhbnNhY3Rpb25cblx0ICAgKiBA
cGFyYW0gez9vYmplY3R9IHVubWFza2VkQ29udGV4dFxuXHQgICAqIEBwcml2YXRlXG5cdCAgICov
XG5cdCAgX3BlcmZvcm1Db21wb25lbnRVcGRhdGU6IGZ1bmN0aW9uIChuZXh0RWxlbWVudCwgbmV4
dFByb3BzLCBuZXh0U3RhdGUsIG5leHRDb250ZXh0LCB0cmFuc2FjdGlvbiwgdW5tYXNrZWRDb250
ZXh0KSB7XG5cdCAgICB2YXIgX3RoaXMyID0gdGhpcztcblx0XG5cdCAgICB2YXIgaW5zdCA9IHRo
aXMuX2luc3RhbmNlO1xuXHRcblx0ICAgIHZhciBoYXNDb21wb25lbnREaWRVcGRhdGUgPSBCb29s
ZWFuKGluc3QuY29tcG9uZW50RGlkVXBkYXRlKTtcblx0ICAgIHZhciBwcmV2UHJvcHM7XG5cdCAg
ICB2YXIgcHJldlN0YXRlO1xuXHQgICAgdmFyIHByZXZDb250ZXh0O1xuXHQgICAgaWYgKGhhc0Nv
bXBvbmVudERpZFVwZGF0ZSkge1xuXHQgICAgICBwcmV2UHJvcHMgPSBpbnN0LnByb3BzO1xuXHQg
ICAgICBwcmV2U3RhdGUgPSBpbnN0LnN0YXRlO1xuXHQgICAgICBwcmV2Q29udGV4dCA9IGluc3Qu
Y29udGV4dDtcblx0ICAgIH1cblx0XG5cdCAgICBpZiAoaW5zdC5jb21wb25lbnRXaWxsVXBkYXRl
KSB7XG5cdCAgICAgIGlmIChmYWxzZSkge1xuXHQgICAgICAgIG1lYXN1cmVMaWZlQ3ljbGVQZXJm
KGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICAgIHJldHVybiBpbnN0LmNvbXBvbmVudFdpbGxVcGRh
dGUobmV4dFByb3BzLCBuZXh0U3RhdGUsIG5leHRDb250ZXh0KTtcblx0ICAgICAgICB9LCB0aGlz
Ll9kZWJ1Z0lELCAnY29tcG9uZW50V2lsbFVwZGF0ZScpO1xuXHQgICAgICB9IGVsc2Uge1xuXHQg
ICAgICAgIGluc3QuY29tcG9uZW50V2lsbFVwZGF0ZShuZXh0UHJvcHMsIG5leHRTdGF0ZSwgbmV4
dENvbnRleHQpO1xuXHQgICAgICB9XG5cdCAgICB9XG5cdFxuXHQgICAgdGhpcy5fY3VycmVudEVs
ZW1lbnQgPSBuZXh0RWxlbWVudDtcblx0ICAgIHRoaXMuX2NvbnRleHQgPSB1bm1hc2tlZENvbnRl
eHQ7XG5cdCAgICBpbnN0LnByb3BzID0gbmV4dFByb3BzO1xuXHQgICAgaW5zdC5zdGF0ZSA9IG5l
eHRTdGF0ZTtcblx0ICAgIGluc3QuY29udGV4dCA9IG5leHRDb250ZXh0O1xuXHRcblx0ICAgIHRo
aXMuX3VwZGF0ZVJlbmRlcmVkQ29tcG9uZW50KHRyYW5zYWN0aW9uLCB1bm1hc2tlZENvbnRleHQp
O1xuXHRcblx0ICAgIGlmIChoYXNDb21wb25lbnREaWRVcGRhdGUpIHtcblx0ICAgICAgaWYgKGZh
bHNlKSB7XG5cdCAgICAgICAgdHJhbnNhY3Rpb24uZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1
ZShmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgICBtZWFzdXJlTGlmZUN5Y2xlUGVyZihpbnN0LmNv
bXBvbmVudERpZFVwZGF0ZS5iaW5kKGluc3QsIHByZXZQcm9wcywgcHJldlN0YXRlLCBwcmV2Q29u
dGV4dCksIF90aGlzMi5fZGVidWdJRCwgJ2NvbXBvbmVudERpZFVwZGF0ZScpO1xuXHQgICAgICAg
IH0pO1xuXHQgICAgICB9IGVsc2Uge1xuXHQgICAgICAgIHRyYW5zYWN0aW9uLmdldFJlYWN0TW91
bnRSZWFkeSgpLmVucXVldWUoaW5zdC5jb21wb25lbnREaWRVcGRhdGUuYmluZChpbnN0LCBwcmV2
UHJvcHMsIHByZXZTdGF0ZSwgcHJldkNvbnRleHQpLCBpbnN0KTtcblx0ICAgICAgfVxuXHQgICAg
fVxuXHQgIH0sXG5cdFxuXHQgIC8qKlxuXHQgICAqIENhbGwgdGhlIGNvbXBvbmVudCdzIGByZW5k
ZXJgIG1ldGhvZCBhbmQgdXBkYXRlIHRoZSBET00gYWNjb3JkaW5nbHkuXG5cdCAgICpcblx0ICAg
KiBAcGFyYW0ge1JlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb259IHRyYW5zYWN0aW9uXG5cdCAgICog
QGludGVybmFsXG5cdCAgICovXG5cdCAgX3VwZGF0ZVJlbmRlcmVkQ29tcG9uZW50OiBmdW5jdGlv
biAodHJhbnNhY3Rpb24sIGNvbnRleHQpIHtcblx0ICAgIHZhciBwcmV2Q29tcG9uZW50SW5zdGFu
Y2UgPSB0aGlzLl9yZW5kZXJlZENvbXBvbmVudDtcblx0ICAgIHZhciBwcmV2UmVuZGVyZWRFbGVt
ZW50ID0gcHJldkNvbXBvbmVudEluc3RhbmNlLl9jdXJyZW50RWxlbWVudDtcblx0ICAgIHZhciBu
ZXh0UmVuZGVyZWRFbGVtZW50ID0gdGhpcy5fcmVuZGVyVmFsaWRhdGVkQ29tcG9uZW50KCk7XG5c
dFxuXHQgICAgdmFyIGRlYnVnSUQgPSAwO1xuXHQgICAgaWYgKGZhbHNlKSB7XG5cdCAgICAgIGRl
YnVnSUQgPSB0aGlzLl9kZWJ1Z0lEO1xuXHQgICAgfVxuXHRcblx0ICAgIGlmIChzaG91bGRVcGRh
dGVSZWFjdENvbXBvbmVudChwcmV2UmVuZGVyZWRFbGVtZW50LCBuZXh0UmVuZGVyZWRFbGVtZW50
KSkge1xuXHQgICAgICBSZWFjdFJlY29uY2lsZXIucmVjZWl2ZUNvbXBvbmVudChwcmV2Q29tcG9u
ZW50SW5zdGFuY2UsIG5leHRSZW5kZXJlZEVsZW1lbnQsIHRyYW5zYWN0aW9uLCB0aGlzLl9wcm9j
ZXNzQ2hpbGRDb250ZXh0KGNvbnRleHQpKTtcblx0ICAgIH0gZWxzZSB7XG5cdCAgICAgIHZhciBv
bGRIb3N0Tm9kZSA9IFJlYWN0UmVjb25jaWxlci5nZXRIb3N0Tm9kZShwcmV2Q29tcG9uZW50SW5z
dGFuY2UpO1xuXHQgICAgICBSZWFjdFJlY29uY2lsZXIudW5tb3VudENvbXBvbmVudChwcmV2Q29t
cG9uZW50SW5zdGFuY2UsIGZhbHNlKTtcblx0XG5cdCAgICAgIHZhciBub2RlVHlwZSA9IFJlYWN0
Tm9kZVR5cGVzLmdldFR5cGUobmV4dFJlbmRlcmVkRWxlbWVudCk7XG5cdCAgICAgIHRoaXMuX3Jl
bmRlcmVkTm9kZVR5cGUgPSBub2RlVHlwZTtcblx0ICAgICAgdmFyIGNoaWxkID0gdGhpcy5faW5z
dGFudGlhdGVSZWFjdENvbXBvbmVudChuZXh0UmVuZGVyZWRFbGVtZW50LCBub2RlVHlwZSAhPT0g
UmVhY3ROb2RlVHlwZXMuRU1QVFkgLyogc2hvdWxkSGF2ZURlYnVnSUQgKi9cblx0ICAgICAgKTtc
blx0ICAgICAgdGhpcy5fcmVuZGVyZWRDb21wb25lbnQgPSBjaGlsZDtcblx0XG5cdCAgICAgIHZh
ciBuZXh0TWFya3VwID0gUmVhY3RSZWNvbmNpbGVyLm1vdW50Q29tcG9uZW50KGNoaWxkLCB0cmFu
c2FjdGlvbiwgdGhpcy5faG9zdFBhcmVudCwgdGhpcy5faG9zdENvbnRhaW5lckluZm8sIHRoaXMu
X3Byb2Nlc3NDaGlsZENvbnRleHQoY29udGV4dCksIGRlYnVnSUQpO1xuXHRcblx0ICAgICAgaWYg
KGZhbHNlKSB7XG5cdCAgICAgICAgaWYgKGRlYnVnSUQgIT09IDApIHtcblx0ICAgICAgICAgIHZh
ciBjaGlsZERlYnVnSURzID0gY2hpbGQuX2RlYnVnSUQgIT09IDAgPyBbY2hpbGQuX2RlYnVnSURd
IDogW107XG5cdCAgICAgICAgICBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25TZXRD
aGlsZHJlbihkZWJ1Z0lELCBjaGlsZERlYnVnSURzKTtcblx0ICAgICAgICB9XG5cdCAgICAgIH1c
blx0XG5cdCAgICAgIHRoaXMuX3JlcGxhY2VOb2RlV2l0aE1hcmt1cChvbGRIb3N0Tm9kZSwgbmV4
dE1hcmt1cCwgcHJldkNvbXBvbmVudEluc3RhbmNlKTtcblx0ICAgIH1cblx0ICB9LFxuXHRcblx0
ICAvKipcblx0ICAgKiBPdmVycmlkZGVuIGluIHNoYWxsb3cgcmVuZGVyaW5nLlxuXHQgICAqXG5c
dCAgICogQHByb3RlY3RlZFxuXHQgICAqL1xuXHQgIF9yZXBsYWNlTm9kZVdpdGhNYXJrdXA6IGZ1
bmN0aW9uIChvbGRIb3N0Tm9kZSwgbmV4dE1hcmt1cCwgcHJldkluc3RhbmNlKSB7XG5cdCAgICBS
ZWFjdENvbXBvbmVudEVudmlyb25tZW50LnJlcGxhY2VOb2RlV2l0aE1hcmt1cChvbGRIb3N0Tm9k
ZSwgbmV4dE1hcmt1cCwgcHJldkluc3RhbmNlKTtcblx0ICB9LFxuXHRcblx0ICAvKipcblx0ICAg
KiBAcHJvdGVjdGVkXG5cdCAgICovXG5cdCAgX3JlbmRlclZhbGlkYXRlZENvbXBvbmVudFdpdGhv
dXRPd25lck9yQ29udGV4dDogZnVuY3Rpb24gKCkge1xuXHQgICAgdmFyIGluc3QgPSB0aGlzLl9p
bnN0YW5jZTtcblx0ICAgIHZhciByZW5kZXJlZEVsZW1lbnQ7XG5cdFxuXHQgICAgaWYgKGZhbHNl
KSB7XG5cdCAgICAgIHJlbmRlcmVkRWxlbWVudCA9IG1lYXN1cmVMaWZlQ3ljbGVQZXJmKGZ1bmN0
aW9uICgpIHtcblx0ICAgICAgICByZXR1cm4gaW5zdC5yZW5kZXIoKTtcblx0ICAgICAgfSwgdGhp
cy5fZGVidWdJRCwgJ3JlbmRlcicpO1xuXHQgICAgfSBlbHNlIHtcblx0ICAgICAgcmVuZGVyZWRF
bGVtZW50ID0gaW5zdC5yZW5kZXIoKTtcblx0ICAgIH1cblx0XG5cdCAgICBpZiAoZmFsc2UpIHtc
blx0ICAgICAgLy8gV2UgYWxsb3cgYXV0by1tb2NrcyB0byBwcm9jZWVkIGFzIGlmIHRoZXkncmUg
cmV0dXJuaW5nIG51bGwuXG5cdCAgICAgIGlmIChyZW5kZXJlZEVsZW1lbnQgPT09IHVuZGVmaW5l
ZCAmJiBpbnN0LnJlbmRlci5faXNNb2NrRnVuY3Rpb24pIHtcblx0ICAgICAgICAvLyBUaGlzIGlz
IHByb2JhYmx5IGJhZCBwcmFjdGljZS4gQ29uc2lkZXIgd2FybmluZyBoZXJlIGFuZFxuXHQgICAg
ICAgIC8vIGRlcHJlY2F0aW5nIHRoaXMgY29udmVuaWVuY2UuXG5cdCAgICAgICAgcmVuZGVyZWRF
bGVtZW50ID0gbnVsbDtcblx0ICAgICAgfVxuXHQgICAgfVxuXHRcblx0ICAgIHJldHVybiByZW5k
ZXJlZEVsZW1lbnQ7XG5cdCAgfSxcblx0XG5cdCAgLyoqXG5cdCAgICogQHByaXZhdGVcblx0ICAg
Ki9cblx0ICBfcmVuZGVyVmFsaWRhdGVkQ29tcG9uZW50OiBmdW5jdGlvbiAoKSB7XG5cdCAgICB2
YXIgcmVuZGVyZWRFbGVtZW50O1xuXHQgICAgaWYgKChcInByb2R1Y3Rpb25cIikgIT09ICdwcm9k
dWN0aW9uJyB8fCB0aGlzLl9jb21wb3NpdGVUeXBlICE9PSBDb21wb3NpdGVUeXBlcy5TdGF0ZWxl
c3NGdW5jdGlvbmFsKSB7XG5cdCAgICAgIFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQgPSB0aGlz
O1xuXHQgICAgICB0cnkge1xuXHQgICAgICAgIHJlbmRlcmVkRWxlbWVudCA9IHRoaXMuX3JlbmRl
clZhbGlkYXRlZENvbXBvbmVudFdpdGhvdXRPd25lck9yQ29udGV4dCgpO1xuXHQgICAgICB9IGZp
bmFsbHkge1xuXHQgICAgICAgIFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQgPSBudWxsO1xuXHQg
ICAgICB9XG5cdCAgICB9IGVsc2Uge1xuXHQgICAgICByZW5kZXJlZEVsZW1lbnQgPSB0aGlzLl9y
ZW5kZXJWYWxpZGF0ZWRDb21wb25lbnRXaXRob3V0T3duZXJPckNvbnRleHQoKTtcblx0ICAgIH1c
blx0ICAgICEoXG5cdCAgICAvLyBUT0RPOiBBbiBgaXNWYWxpZE5vZGVgIGZ1bmN0aW9uIHdvdWxk
IHByb2JhYmx5IGJlIG1vcmUgYXBwcm9wcmlhdGVcblx0ICAgIHJlbmRlcmVkRWxlbWVudCA9PT0g
bnVsbCB8fCByZW5kZXJlZEVsZW1lbnQgPT09IGZhbHNlIHx8IFJlYWN0LmlzVmFsaWRFbGVtZW50
KHJlbmRlcmVkRWxlbWVudCkpID8gIGZhbHNlID8gaW52YXJpYW50KGZhbHNlLCAnJXMucmVuZGVy
KCk6IEEgdmFsaWQgUmVhY3QgZWxlbWVudCAob3IgbnVsbCkgbXVzdCBiZSByZXR1cm5lZC4gWW91
IG1heSBoYXZlIHJldHVybmVkIHVuZGVmaW5lZCwgYW4gYXJyYXkgb3Igc29tZSBvdGhlciBpbnZh
bGlkIG9iamVjdC4nLCB0aGlzLmdldE5hbWUoKSB8fCAnUmVhY3RDb21wb3NpdGVDb21wb25lbnQn
KSA6IF9wcm9kSW52YXJpYW50KCcxMDknLCB0aGlzLmdldE5hbWUoKSB8fCAnUmVhY3RDb21wb3Np
dGVDb21wb25lbnQnKSA6IHZvaWQgMDtcblx0XG5cdCAgICByZXR1cm4gcmVuZGVyZWRFbGVtZW50
O1xuXHQgIH0sXG5cdFxuXHQgIC8qKlxuXHQgICAqIExhemlseSBhbGxvY2F0ZXMgdGhlIHJlZnMg
b2JqZWN0IGFuZCBzdG9yZXMgYGNvbXBvbmVudGAgYXMgYHJlZmAuXG5cdCAgICpcblx0ICAgKiBA
cGFyYW0ge3N0cmluZ30gcmVmIFJlZmVyZW5jZSBuYW1lLlxuXHQgICAqIEBwYXJhbSB7Y29tcG9u
ZW50fSBjb21wb25lbnQgQ29tcG9uZW50IHRvIHN0b3JlIGFzIGByZWZgLlxuXHQgICAqIEBmaW5h
bFxuXHQgICAqIEBwcml2YXRlXG5cdCAgICovXG5cdCAgYXR0YWNoUmVmOiBmdW5jdGlvbiAocmVm
LCBjb21wb25lbnQpIHtcblx0ICAgIHZhciBpbnN0ID0gdGhpcy5nZXRQdWJsaWNJbnN0YW5jZSgp
O1xuXHQgICAgIShpbnN0ICE9IG51bGwpID8gIGZhbHNlID8gaW52YXJpYW50KGZhbHNlLCAnU3Rh
dGVsZXNzIGZ1bmN0aW9uIGNvbXBvbmVudHMgY2Fubm90IGhhdmUgcmVmcy4nKSA6IF9wcm9kSW52
YXJpYW50KCcxMTAnKSA6IHZvaWQgMDtcblx0ICAgIHZhciBwdWJsaWNDb21wb25lbnRJbnN0YW5j
ZSA9IGNvbXBvbmVudC5nZXRQdWJsaWNJbnN0YW5jZSgpO1xuXHQgICAgaWYgKGZhbHNlKSB7XG5c
dCAgICAgIHZhciBjb21wb25lbnROYW1lID0gY29tcG9uZW50ICYmIGNvbXBvbmVudC5nZXROYW1l
ID8gY29tcG9uZW50LmdldE5hbWUoKSA6ICdhIGNvbXBvbmVudCc7XG5cdCAgICAgIHByb2Nlc3Mu
ZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKHB1YmxpY0NvbXBvbmVudElu
c3RhbmNlICE9IG51bGwgfHwgY29tcG9uZW50Ll9jb21wb3NpdGVUeXBlICE9PSBDb21wb3NpdGVU
eXBlcy5TdGF0ZWxlc3NGdW5jdGlvbmFsLCAnU3RhdGVsZXNzIGZ1bmN0aW9uIGNvbXBvbmVudHMg
Y2Fubm90IGJlIGdpdmVuIHJlZnMgJyArICcoU2VlIHJlZiBcIiVzXCIgaW4gJXMgY3JlYXRlZCBi
eSAlcykuICcgKyAnQXR0ZW1wdHMgdG8gYWNjZXNzIHRoaXMgcmVmIHdpbGwgZmFpbC4nLCByZWYs
IGNvbXBvbmVudE5hbWUsIHRoaXMuZ2V0TmFtZSgpKSA6IHZvaWQgMDtcblx0ICAgIH1cblx0ICAg
IHZhciByZWZzID0gaW5zdC5yZWZzID09PSBlbXB0eU9iamVjdCA/IGluc3QucmVmcyA9IHt9IDog
aW5zdC5yZWZzO1xuXHQgICAgcmVmc1tyZWZdID0gcHVibGljQ29tcG9uZW50SW5zdGFuY2U7XG5c
dCAgfSxcblx0XG5cdCAgLyoqXG5cdCAgICogRGV0YWNoZXMgYSByZWZlcmVuY2UgbmFtZS5cblx0
ICAgKlxuXHQgICAqIEBwYXJhbSB7c3RyaW5nfSByZWYgTmFtZSB0byBkZXJlZmVyZW5jZS5cblx0
ICAgKiBAZmluYWxcblx0ICAgKiBAcHJpdmF0ZVxuXHQgICAqL1xuXHQgIGRldGFjaFJlZjogZnVu
Y3Rpb24gKHJlZikge1xuXHQgICAgdmFyIHJlZnMgPSB0aGlzLmdldFB1YmxpY0luc3RhbmNlKCku
cmVmcztcblx0ICAgIGRlbGV0ZSByZWZzW3JlZl07XG5cdCAgfSxcblx0XG5cdCAgLyoqXG5cdCAg
ICogR2V0IGEgdGV4dCBkZXNjcmlwdGlvbiBvZiB0aGUgY29tcG9uZW50IHRoYXQgY2FuIGJlIHVz
ZWQgdG8gaWRlbnRpZnkgaXRcblx0ICAgKiBpbiBlcnJvciBtZXNzYWdlcy5cblx0ICAgKiBAcmV0
dXJuIHtzdHJpbmd9IFRoZSBuYW1lIG9yIG51bGwuXG5cdCAgICogQGludGVybmFsXG5cdCAgICov
XG5cdCAgZ2V0TmFtZTogZnVuY3Rpb24gKCkge1xuXHQgICAgdmFyIHR5cGUgPSB0aGlzLl9jdXJy
ZW50RWxlbWVudC50eXBlO1xuXHQgICAgdmFyIGNvbnN0cnVjdG9yID0gdGhpcy5faW5zdGFuY2Ug
JiYgdGhpcy5faW5zdGFuY2UuY29uc3RydWN0b3I7XG5cdCAgICByZXR1cm4gdHlwZS5kaXNwbGF5
TmFtZSB8fCBjb25zdHJ1Y3RvciAmJiBjb25zdHJ1Y3Rvci5kaXNwbGF5TmFtZSB8fCB0eXBlLm5h
bWUgfHwgY29uc3RydWN0b3IgJiYgY29uc3RydWN0b3IubmFtZSB8fCBudWxsO1xuXHQgIH0sXG5c
dFxuXHQgIC8qKlxuXHQgICAqIEdldCB0aGUgcHVibGljbHkgYWNjZXNzaWJsZSByZXByZXNlbnRh
dGlvbiBvZiB0aGlzIGNvbXBvbmVudCAtIGkuZS4gd2hhdFxuXHQgICAqIGlzIGV4cG9zZWQgYnkg
cmVmcyBhbmQgcmV0dXJuZWQgYnkgcmVuZGVyLiBDYW4gYmUgbnVsbCBmb3Igc3RhdGVsZXNzXG5c
dCAgICogY29tcG9uZW50cy5cblx0ICAgKlxuXHQgICAqIEByZXR1cm4ge1JlYWN0Q29tcG9uZW50
fSB0aGUgcHVibGljIGNvbXBvbmVudCBpbnN0YW5jZS5cblx0ICAgKiBAaW50ZXJuYWxcblx0ICAg
Ki9cblx0ICBnZXRQdWJsaWNJbnN0YW5jZTogZnVuY3Rpb24gKCkge1xuXHQgICAgdmFyIGluc3Qg
PSB0aGlzLl9pbnN0YW5jZTtcblx0ICAgIGlmICh0aGlzLl9jb21wb3NpdGVUeXBlID09PSBDb21w
b3NpdGVUeXBlcy5TdGF0ZWxlc3NGdW5jdGlvbmFsKSB7XG5cdCAgICAgIHJldHVybiBudWxsO1xu
XHQgICAgfVxuXHQgICAgcmV0dXJuIGluc3Q7XG5cdCAgfSxcblx0XG5cdCAgLy8gU3R1YlxuXHQg
IF9pbnN0YW50aWF0ZVJlYWN0Q29tcG9uZW50OiBudWxsXG5cdH07XG5cdFxuXHRtb2R1bGUuZXhw
b3J0cyA9IFJlYWN0Q29tcG9zaXRlQ29tcG9uZW50O1xuXG4vKioqLyB9LFxuLyogMTM3ICovXG4v
KioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxu
XHQvKipcblx0ICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICog
QWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNl
bnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VO
U0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRk
aXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUg
UEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpcblx0ICovXG5cdFxuXHQv
KiBnbG9iYWxzIF9fUkVBQ1RfREVWVE9PTFNfR0xPQkFMX0hPT0tfXyovXG5cdFxuXHQndXNlIHN0
cmljdCc7XG5cdFxuXHR2YXIgUmVhY3RET01Db21wb25lbnRUcmVlID0gX193ZWJwYWNrX3JlcXVp
cmVfXyg1KTtcblx0dmFyIFJlYWN0RGVmYXVsdEluamVjdGlvbiA9IF9fd2VicGFja19yZXF1aXJl
X18oMTUwKTtcblx0dmFyIFJlYWN0TW91bnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDY3KTtcblx0
dmFyIFJlYWN0UmVjb25jaWxlciA9IF9fd2VicGFja19yZXF1aXJlX18oMTYpO1xuXHR2YXIgUmVh
Y3RVcGRhdGVzID0gX193ZWJwYWNrX3JlcXVpcmVfXyg5KTtcblx0dmFyIFJlYWN0VmVyc2lvbiA9
IF9fd2VicGFja19yZXF1aXJlX18oMTYzKTtcblx0XG5cdHZhciBmaW5kRE9NTm9kZSA9IF9fd2Vi
cGFja19yZXF1aXJlX18oMTc5KTtcblx0dmFyIGdldEhvc3RDb21wb25lbnRGcm9tQ29tcG9zaXRl
ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg3Mik7XG5cdHZhciByZW5kZXJTdWJ0cmVlSW50b0NvbnRh
aW5lciA9IF9fd2VicGFja19yZXF1aXJlX18oMTg2KTtcblx0dmFyIHdhcm5pbmcgPSBfX3dlYnBh
Y2tfcmVxdWlyZV9fKDIpO1xuXHRcblx0UmVhY3REZWZhdWx0SW5qZWN0aW9uLmluamVjdCgpO1xu
XHRcblx0dmFyIFJlYWN0RE9NID0ge1xuXHQgIGZpbmRET01Ob2RlOiBmaW5kRE9NTm9kZSxcblx0
ICByZW5kZXI6IFJlYWN0TW91bnQucmVuZGVyLFxuXHQgIHVubW91bnRDb21wb25lbnRBdE5vZGU6
IFJlYWN0TW91bnQudW5tb3VudENvbXBvbmVudEF0Tm9kZSxcblx0ICB2ZXJzaW9uOiBSZWFjdFZl
cnNpb24sXG5cdFxuXHQgIC8qIGVzbGludC1kaXNhYmxlIGNhbWVsY2FzZSAqL1xuXHQgIHVuc3Rh
YmxlX2JhdGNoZWRVcGRhdGVzOiBSZWFjdFVwZGF0ZXMuYmF0Y2hlZFVwZGF0ZXMsXG5cdCAgdW5z
dGFibGVfcmVuZGVyU3VidHJlZUludG9Db250YWluZXI6IHJlbmRlclN1YnRyZWVJbnRvQ29udGFp
bmVyXG5cdCAgLyogZXNsaW50LWVuYWJsZSBjYW1lbGNhc2UgKi9cblx0fTtcblx0XG5cdC8vIElu
amVjdCB0aGUgcnVudGltZSBpbnRvIGEgZGV2dG9vbHMgZ2xvYmFsIGhvb2sgcmVnYXJkbGVzcyBv
ZiBicm93c2VyLlxuXHQvLyBBbGxvd3MgZm9yIGRlYnVnZ2luZyB3aGVuIHRoZSBob29rIGlzIGlu
amVjdGVkIG9uIHRoZSBwYWdlLlxuXHRpZiAodHlwZW9mIF9fUkVBQ1RfREVWVE9PTFNfR0xPQkFM
X0hPT0tfXyAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIF9fUkVBQ1RfREVWVE9PTFNfR0xPQkFM
X0hPT0tfXy5pbmplY3QgPT09ICdmdW5jdGlvbicpIHtcblx0ICBfX1JFQUNUX0RFVlRPT0xTX0dM
T0JBTF9IT09LX18uaW5qZWN0KHtcblx0ICAgIENvbXBvbmVudFRyZWU6IHtcblx0ICAgICAgZ2V0
Q2xvc2VzdEluc3RhbmNlRnJvbU5vZGU6IFJlYWN0RE9NQ29tcG9uZW50VHJlZS5nZXRDbG9zZXN0
SW5zdGFuY2VGcm9tTm9kZSxcblx0ICAgICAgZ2V0Tm9kZUZyb21JbnN0YW5jZTogZnVuY3Rpb24g
KGluc3QpIHtcblx0ICAgICAgICAvLyBpbnN0IGlzIGFuIGludGVybmFsIGluc3RhbmNlIChidXQg
Y291bGQgYmUgYSBjb21wb3NpdGUpXG5cdCAgICAgICAgaWYgKGluc3QuX3JlbmRlcmVkQ29tcG9u
ZW50KSB7XG5cdCAgICAgICAgICBpbnN0ID0gZ2V0SG9zdENvbXBvbmVudEZyb21Db21wb3NpdGUo
aW5zdCk7XG5cdCAgICAgICAgfVxuXHQgICAgICAgIGlmIChpbnN0KSB7XG5cdCAgICAgICAgICBy
ZXR1cm4gUmVhY3RET01Db21wb25lbnRUcmVlLmdldE5vZGVGcm9tSW5zdGFuY2UoaW5zdCk7XG5c
dCAgICAgICAgfSBlbHNlIHtcblx0ICAgICAgICAgIHJldHVybiBudWxsO1xuXHQgICAgICAgIH1c
blx0ICAgICAgfVxuXHQgICAgfSxcblx0ICAgIE1vdW50OiBSZWFjdE1vdW50LFxuXHQgICAgUmVj
b25jaWxlcjogUmVhY3RSZWNvbmNpbGVyXG5cdCAgfSk7XG5cdH1cblx0XG5cdGlmIChmYWxzZSkg
e1xuXHQgIHZhciBFeGVjdXRpb25FbnZpcm9ubWVudCA9IHJlcXVpcmUoJ2ZianMvbGliL0V4ZWN1
dGlvbkVudmlyb25tZW50Jyk7XG5cdCAgaWYgKEV4ZWN1dGlvbkVudmlyb25tZW50LmNhblVzZURP
TSAmJiB3aW5kb3cudG9wID09PSB3aW5kb3cuc2VsZikge1xuXHQgICAgLy8gRmlyc3QgY2hlY2sg
aWYgZGV2dG9vbHMgaXMgbm90IGluc3RhbGxlZFxuXHQgICAgaWYgKHR5cGVvZiBfX1JFQUNUX0RF
VlRPT0xTX0dMT0JBTF9IT09LX18gPT09ICd1bmRlZmluZWQnKSB7XG5cdCAgICAgIC8vIElmIHdl
J3JlIGluIENocm9tZSBvciBGaXJlZm94LCBwcm92aWRlIGEgZG93bmxvYWQgbGluayBpZiBub3Qg
aW5zdGFsbGVkLlxuXHQgICAgICBpZiAobmF2aWdhdG9yLnVzZXJBZ2VudC5pbmRleE9mKCdDaHJv
bWUnKSA+IC0xICYmIG5hdmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZignRWRnZScpID09PSAtMSB8
fCBuYXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YoJ0ZpcmVmb3gnKSA+IC0xKSB7XG5cdCAgICAg
ICAgLy8gRmlyZWZveCBkb2VzIG5vdCBoYXZlIHRoZSBpc3N1ZSB3aXRoIGRldnRvb2xzIGxvYWRl
ZCBvdmVyIGZpbGU6Ly9cblx0ICAgICAgICB2YXIgc2hvd0ZpbGVVcmxNZXNzYWdlID0gd2luZG93
LmxvY2F0aW9uLnByb3RvY29sLmluZGV4T2YoJ2h0dHAnKSA9PT0gLTEgJiYgbmF2aWdhdG9yLnVz
ZXJBZ2VudC5pbmRleE9mKCdGaXJlZm94JykgPT09IC0xO1xuXHQgICAgICAgIGNvbnNvbGUuZGVi
dWcoJ0Rvd25sb2FkIHRoZSBSZWFjdCBEZXZUb29scyAnICsgKHNob3dGaWxlVXJsTWVzc2FnZSA/
ICdhbmQgdXNlIGFuIEhUVFAgc2VydmVyIChpbnN0ZWFkIG9mIGEgZmlsZTogVVJMKSAnIDogJycp
ICsgJ2ZvciBhIGJldHRlciBkZXZlbG9wbWVudCBleHBlcmllbmNlOiAnICsgJ2h0dHBzOi8vZmIu
bWUvcmVhY3QtZGV2dG9vbHMnKTtcblx0ICAgICAgfVxuXHQgICAgfVxuXHRcblx0ICAgIHZhciB0
ZXN0RnVuYyA9IGZ1bmN0aW9uIHRlc3RGbigpIHt9O1xuXHQgICAgcHJvY2Vzcy5lbnYuTk9ERV9F
TlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoKHRlc3RGdW5jLm5hbWUgfHwgdGVzdEZ1bmMu
dG9TdHJpbmcoKSkuaW5kZXhPZigndGVzdEZuJykgIT09IC0xLCBcIkl0IGxvb2tzIGxpa2UgeW91
J3JlIHVzaW5nIGEgbWluaWZpZWQgY29weSBvZiB0aGUgZGV2ZWxvcG1lbnQgYnVpbGQgXCIgKyAn
b2YgUmVhY3QuIFdoZW4gZGVwbG95aW5nIFJlYWN0IGFwcHMgdG8gcHJvZHVjdGlvbiwgbWFrZSBz
dXJlIHRvIHVzZSAnICsgJ3RoZSBwcm9kdWN0aW9uIGJ1aWxkIHdoaWNoIHNraXBzIGRldmVsb3Bt
ZW50IHdhcm5pbmdzIGFuZCBpcyBmYXN0ZXIuICcgKyAnU2VlIGh0dHBzOi8vZmIubWUvcmVhY3Qt
bWluaWZpY2F0aW9uIGZvciBtb3JlIGRldGFpbHMuJykgOiB2b2lkIDA7XG5cdFxuXHQgICAgLy8g
SWYgd2UncmUgaW4gSUU4LCBjaGVjayB0byBzZWUgaWYgd2UgYXJlIGluIGNvbXBhdGliaWxpdHkg
bW9kZSBhbmQgcHJvdmlkZVxuXHQgICAgLy8gaW5mb3JtYXRpb24gb24gcHJldmVudGluZyBjb21w
YXRpYmlsaXR5IG1vZGVcblx0ICAgIHZhciBpZUNvbXBhdGliaWxpdHlNb2RlID0gZG9jdW1lbnQu
ZG9jdW1lbnRNb2RlICYmIGRvY3VtZW50LmRvY3VtZW50TW9kZSA8IDg7XG5cdFxuXHQgICAgcHJv
Y2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoIWllQ29tcGF0aWJp
bGl0eU1vZGUsICdJbnRlcm5ldCBFeHBsb3JlciBpcyBydW5uaW5nIGluIGNvbXBhdGliaWxpdHkg
bW9kZTsgcGxlYXNlIGFkZCB0aGUgJyArICdmb2xsb3dpbmcgdGFnIHRvIHlvdXIgSFRNTCB0byBw
cmV2ZW50IHRoaXMgZnJvbSBoYXBwZW5pbmc6ICcgKyAnPG1ldGEgaHR0cC1lcXVpdj1cIlgtVUEt
Q29tcGF0aWJsZVwiIGNvbnRlbnQ9XCJJRT1lZGdlXCIgLz4nKSA6IHZvaWQgMDtcblx0XG5cdCAg
ICB2YXIgZXhwZWN0ZWRGZWF0dXJlcyA9IFtcblx0ICAgIC8vIHNoaW1zXG5cdCAgICBBcnJheS5p
c0FycmF5LCBBcnJheS5wcm90b3R5cGUuZXZlcnksIEFycmF5LnByb3RvdHlwZS5mb3JFYWNoLCBB
cnJheS5wcm90b3R5cGUuaW5kZXhPZiwgQXJyYXkucHJvdG90eXBlLm1hcCwgRGF0ZS5ub3csIEZ1
bmN0aW9uLnByb3RvdHlwZS5iaW5kLCBPYmplY3Qua2V5cywgU3RyaW5nLnByb3RvdHlwZS50cmlt
XTtcblx0XG5cdCAgICBmb3IgKHZhciBpID0gMDsgaSA8IGV4cGVjdGVkRmVhdHVyZXMubGVuZ3Ro
OyBpKyspIHtcblx0ICAgICAgaWYgKCFleHBlY3RlZEZlYXR1cmVzW2ldKSB7XG5cdCAgICAgICAg
cHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdP
bmUgb3IgbW9yZSBFUzUgc2hpbXMgZXhwZWN0ZWQgYnkgUmVhY3QgYXJlIG5vdCBhdmFpbGFibGU6
ICcgKyAnaHR0cHM6Ly9mYi5tZS9yZWFjdC13YXJuaW5nLXBvbHlmaWxscycpIDogdm9pZCAwO1xu
XHQgICAgICAgIGJyZWFrO1xuXHQgICAgICB9XG5cdCAgICB9XG5cdCAgfVxuXHR9XG5cdFxuXHRp
ZiAoZmFsc2UpIHtcblx0ICB2YXIgUmVhY3RJbnN0cnVtZW50YXRpb24gPSByZXF1aXJlKCcuL1Jl
YWN0SW5zdHJ1bWVudGF0aW9uJyk7XG5cdCAgdmFyIFJlYWN0RE9NVW5rbm93blByb3BlcnR5SG9v
ayA9IHJlcXVpcmUoJy4vUmVhY3RET01Vbmtub3duUHJvcGVydHlIb29rJyk7XG5cdCAgdmFyIFJl
YWN0RE9NTnVsbElucHV0VmFsdWVQcm9wSG9vayA9IHJlcXVpcmUoJy4vUmVhY3RET01OdWxsSW5w
dXRWYWx1ZVByb3BIb29rJyk7XG5cdCAgdmFyIFJlYWN0RE9NSW52YWxpZEFSSUFIb29rID0gcmVx
dWlyZSgnLi9SZWFjdERPTUludmFsaWRBUklBSG9vaycpO1xuXHRcblx0ICBSZWFjdEluc3RydW1l
bnRhdGlvbi5kZWJ1Z1Rvb2wuYWRkSG9vayhSZWFjdERPTVVua25vd25Qcm9wZXJ0eUhvb2spO1xu
XHQgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5hZGRIb29rKFJlYWN0RE9NTnVsbElu
cHV0VmFsdWVQcm9wSG9vayk7XG5cdCAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29sLmFk
ZEhvb2soUmVhY3RET01JbnZhbGlkQVJJQUhvb2spO1xuXHR9XG5cdFxuXHRtb2R1bGUuZXhwb3J0
cyA9IFJlYWN0RE9NO1xuXG4vKioqLyB9LFxuLyogMTM4ICovXG4vKioqLyBmdW5jdGlvbihtb2R1
bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvKipcblx0ICogQ29weXJp
Z2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZl
ZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNE
LXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9v
dCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQg
KiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRo
ZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpcblx0ICovXG5cdFxuXHQvKiBnbG9iYWwgaGFzT3duUHJv
cGVydHk6dHJ1ZSAqL1xuXHRcblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0dmFyIF9wcm9kSW52YXJp
YW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXygzKSxcblx0ICAgIF9hc3NpZ24gPSBfX3dlYnBhY2tf
cmVxdWlyZV9fKDQpO1xuXHRcblx0dmFyIEF1dG9Gb2N1c1V0aWxzID0gX193ZWJwYWNrX3JlcXVp
cmVfXygxMjUpO1xuXHR2YXIgQ1NTUHJvcGVydHlPcGVyYXRpb25zID0gX193ZWJwYWNrX3JlcXVp
cmVfXygxMjcpO1xuXHR2YXIgRE9NTGF6eVRyZWUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE0KTtc
blx0dmFyIERPTU5hbWVzcGFjZXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDM1KTtcblx0dmFyIERP
TVByb3BlcnR5ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNSk7XG5cdHZhciBET01Qcm9wZXJ0eU9w
ZXJhdGlvbnMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDYwKTtcblx0dmFyIEV2ZW50UGx1Z2luSHVi
ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxOSk7XG5cdHZhciBFdmVudFBsdWdpblJlZ2lzdHJ5ID0g
X193ZWJwYWNrX3JlcXVpcmVfXygzNik7XG5cdHZhciBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIg
PSBfX3dlYnBhY2tfcmVxdWlyZV9fKDI1KTtcblx0dmFyIFJlYWN0RE9NQ29tcG9uZW50RmxhZ3Mg
PSBfX3dlYnBhY2tfcmVxdWlyZV9fKDYxKTtcblx0dmFyIFJlYWN0RE9NQ29tcG9uZW50VHJlZSA9
IF9fd2VicGFja19yZXF1aXJlX18oNSk7XG5cdHZhciBSZWFjdERPTUlucHV0ID0gX193ZWJwYWNr
X3JlcXVpcmVfXygxNDMpO1xuXHR2YXIgUmVhY3RET01PcHRpb24gPSBfX3dlYnBhY2tfcmVxdWly
ZV9fKDE0NCk7XG5cdHZhciBSZWFjdERPTVNlbGVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oNjIp
O1xuXHR2YXIgUmVhY3RET01UZXh0YXJlYSA9IF9fd2VicGFja19yZXF1aXJlX18oMTQ3KTtcblx0
dmFyIFJlYWN0SW5zdHJ1bWVudGF0aW9uID0gX193ZWJwYWNrX3JlcXVpcmVfXyg4KTtcblx0dmFy
IFJlYWN0TXVsdGlDaGlsZCA9IF9fd2VicGFja19yZXF1aXJlX18oMTU2KTtcblx0dmFyIFJlYWN0
U2VydmVyUmVuZGVyaW5nVHJhbnNhY3Rpb24gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE2MSk7XG5c
dFxuXHR2YXIgZW1wdHlGdW5jdGlvbiA9IF9fd2VicGFja19yZXF1aXJlX18oNyk7XG5cdHZhciBl
c2NhcGVUZXh0Q29udGVudEZvckJyb3dzZXIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDI4KTtcblx0
dmFyIGludmFyaWFudCA9IF9fd2VicGFja19yZXF1aXJlX18oMSk7XG5cdHZhciBpc0V2ZW50U3Vw
cG9ydGVkID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0Nyk7XG5cdHZhciBzaGFsbG93RXF1YWwgPSBf
X3dlYnBhY2tfcmVxdWlyZV9fKDMyKTtcblx0dmFyIGlucHV0VmFsdWVUcmFja2luZyA9IF9fd2Vi
cGFja19yZXF1aXJlX18oNzQpO1xuXHR2YXIgdmFsaWRhdGVET01OZXN0aW5nID0gX193ZWJwYWNr
X3JlcXVpcmVfXyg0OSk7XG5cdHZhciB3YXJuaW5nID0gX193ZWJwYWNrX3JlcXVpcmVfXygyKTtc
blx0XG5cdHZhciBGbGFncyA9IFJlYWN0RE9NQ29tcG9uZW50RmxhZ3M7XG5cdHZhciBkZWxldGVM
aXN0ZW5lciA9IEV2ZW50UGx1Z2luSHViLmRlbGV0ZUxpc3RlbmVyO1xuXHR2YXIgZ2V0Tm9kZSA9
IFJlYWN0RE9NQ29tcG9uZW50VHJlZS5nZXROb2RlRnJvbUluc3RhbmNlO1xuXHR2YXIgbGlzdGVu
VG8gPSBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIubGlzdGVuVG87XG5cdHZhciByZWdpc3RyYXRp
b25OYW1lTW9kdWxlcyA9IEV2ZW50UGx1Z2luUmVnaXN0cnkucmVnaXN0cmF0aW9uTmFtZU1vZHVs
ZXM7XG5cdFxuXHQvLyBGb3IgcXVpY2tseSBtYXRjaGluZyBjaGlsZHJlbiB0eXBlLCB0byB0ZXN0
IGlmIGNhbiBiZSB0cmVhdGVkIGFzIGNvbnRlbnQuXG5cdHZhciBDT05URU5UX1RZUEVTID0geyBz
dHJpbmc6IHRydWUsIG51bWJlcjogdHJ1ZSB9O1xuXHRcblx0dmFyIFNUWUxFID0gJ3N0eWxlJztc
blx0dmFyIEhUTUwgPSAnX19odG1sJztcblx0dmFyIFJFU0VSVkVEX1BST1BTID0ge1xuXHQgIGNo
aWxkcmVuOiBudWxsLFxuXHQgIGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MOiBudWxsLFxuXHQgIHN1
cHByZXNzQ29udGVudEVkaXRhYmxlV2FybmluZzogbnVsbFxuXHR9O1xuXHRcblx0Ly8gTm9kZSB0
eXBlIGZvciBkb2N1bWVudCBmcmFnbWVudHMgKE5vZGUuRE9DVU1FTlRfRlJBR01FTlRfTk9ERSku
XG5cdHZhciBET0NfRlJBR01FTlRfVFlQRSA9IDExO1xuXHRcblx0ZnVuY3Rpb24gZ2V0RGVjbGFy
YXRpb25FcnJvckFkZGVuZHVtKGludGVybmFsSW5zdGFuY2UpIHtcblx0ICBpZiAoaW50ZXJuYWxJ
bnN0YW5jZSkge1xuXHQgICAgdmFyIG93bmVyID0gaW50ZXJuYWxJbnN0YW5jZS5fY3VycmVudEVs
ZW1lbnQuX293bmVyIHx8IG51bGw7XG5cdCAgICBpZiAob3duZXIpIHtcblx0ICAgICAgdmFyIG5h
bWUgPSBvd25lci5nZXROYW1lKCk7XG5cdCAgICAgIGlmIChuYW1lKSB7XG5cdCAgICAgICAgcmV0
dXJuICcgVGhpcyBET00gbm9kZSB3YXMgcmVuZGVyZWQgYnkgYCcgKyBuYW1lICsgJ2AuJztcblx0
ICAgICAgfVxuXHQgICAgfVxuXHQgIH1cblx0ICByZXR1cm4gJyc7XG5cdH1cblx0XG5cdGZ1bmN0
aW9uIGZyaWVuZGx5U3RyaW5naWZ5KG9iaikge1xuXHQgIGlmICh0eXBlb2Ygb2JqID09PSAnb2Jq
ZWN0Jykge1xuXHQgICAgaWYgKEFycmF5LmlzQXJyYXkob2JqKSkge1xuXHQgICAgICByZXR1cm4g
J1snICsgb2JqLm1hcChmcmllbmRseVN0cmluZ2lmeSkuam9pbignLCAnKSArICddJztcblx0ICAg
IH0gZWxzZSB7XG5cdCAgICAgIHZhciBwYWlycyA9IFtdO1xuXHQgICAgICBmb3IgKHZhciBrZXkg
aW4gb2JqKSB7XG5cdCAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHku
Y2FsbChvYmosIGtleSkpIHtcblx0ICAgICAgICAgIHZhciBrZXlFc2NhcGVkID0gL15bYS16JF9d
W1xcdyRfXSokL2kudGVzdChrZXkpID8ga2V5IDogSlNPTi5zdHJpbmdpZnkoa2V5KTtcblx0ICAg
ICAgICAgIHBhaXJzLnB1c2goa2V5RXNjYXBlZCArICc6ICcgKyBmcmllbmRseVN0cmluZ2lmeShv
Ympba2V5XSkpO1xuXHQgICAgICAgIH1cblx0ICAgICAgfVxuXHQgICAgICByZXR1cm4gJ3snICsg
cGFpcnMuam9pbignLCAnKSArICd9Jztcblx0ICAgIH1cblx0ICB9IGVsc2UgaWYgKHR5cGVvZiBv
YmogPT09ICdzdHJpbmcnKSB7XG5cdCAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkob2JqKTtcblx0
ICB9IGVsc2UgaWYgKHR5cGVvZiBvYmogPT09ICdmdW5jdGlvbicpIHtcblx0ICAgIHJldHVybiAn
W2Z1bmN0aW9uIG9iamVjdF0nO1xuXHQgIH1cblx0ICAvLyBEaWZmZXJzIGZyb20gSlNPTi5zdHJp
bmdpZnkgaW4gdGhhdCB1bmRlZmluZWQgYmVjYXVzZSB1bmRlZmluZWQgYW5kIHRoYXRcblx0ICAv
LyBpbmYgYW5kIG5hbiBkb24ndCBiZWNvbWUgbnVsbFxuXHQgIHJldHVybiBTdHJpbmcob2JqKTtc
blx0fVxuXHRcblx0dmFyIHN0eWxlTXV0YXRpb25XYXJuaW5nID0ge307XG5cdFxuXHRmdW5jdGlv
biBjaGVja0FuZFdhcm5Gb3JNdXRhdGVkU3R5bGUoc3R5bGUxLCBzdHlsZTIsIGNvbXBvbmVudCkg
e1xuXHQgIGlmIChzdHlsZTEgPT0gbnVsbCB8fCBzdHlsZTIgPT0gbnVsbCkge1xuXHQgICAgcmV0
dXJuO1xuXHQgIH1cblx0ICBpZiAoc2hhbGxvd0VxdWFsKHN0eWxlMSwgc3R5bGUyKSkge1xuXHQg
ICAgcmV0dXJuO1xuXHQgIH1cblx0XG5cdCAgdmFyIGNvbXBvbmVudE5hbWUgPSBjb21wb25lbnQu
X3RhZztcblx0ICB2YXIgb3duZXIgPSBjb21wb25lbnQuX2N1cnJlbnRFbGVtZW50Ll9vd25lcjtc
blx0ICB2YXIgb3duZXJOYW1lO1xuXHQgIGlmIChvd25lcikge1xuXHQgICAgb3duZXJOYW1lID0g
b3duZXIuZ2V0TmFtZSgpO1xuXHQgIH1cblx0XG5cdCAgdmFyIGhhc2ggPSBvd25lck5hbWUgKyAn
fCcgKyBjb21wb25lbnROYW1lO1xuXHRcblx0ICBpZiAoc3R5bGVNdXRhdGlvbldhcm5pbmcuaGFz
T3duUHJvcGVydHkoaGFzaCkpIHtcblx0ICAgIHJldHVybjtcblx0ICB9XG5cdFxuXHQgIHN0eWxl
TXV0YXRpb25XYXJuaW5nW2hhc2hdID0gdHJ1ZTtcblx0XG5cdCAgIGZhbHNlID8gd2FybmluZyhm
YWxzZSwgJ2Alc2Agd2FzIHBhc3NlZCBhIHN0eWxlIG9iamVjdCB0aGF0IGhhcyBwcmV2aW91c2x5
IGJlZW4gbXV0YXRlZC4gJyArICdNdXRhdGluZyBgc3R5bGVgIGlzIGRlcHJlY2F0ZWQuIENvbnNp
ZGVyIGNsb25pbmcgaXQgYmVmb3JlaGFuZC4gQ2hlY2sgJyArICd0aGUgYHJlbmRlcmAgJXMuIFBy
ZXZpb3VzIHN0eWxlOiAlcy4gTXV0YXRlZCBzdHlsZTogJXMuJywgY29tcG9uZW50TmFtZSwgb3du
ZXIgPyAnb2YgYCcgKyBvd25lck5hbWUgKyAnYCcgOiAndXNpbmcgPCcgKyBjb21wb25lbnROYW1l
ICsgJz4nLCBmcmllbmRseVN0cmluZ2lmeShzdHlsZTEpLCBmcmllbmRseVN0cmluZ2lmeShzdHls
ZTIpKSA6IHZvaWQgMDtcblx0fVxuXHRcblx0LyoqXG5cdCAqIEBwYXJhbSB7b2JqZWN0fSBjb21w
b25lbnRcblx0ICogQHBhcmFtIHs/b2JqZWN0fSBwcm9wc1xuXHQgKi9cblx0ZnVuY3Rpb24gYXNz
ZXJ0VmFsaWRQcm9wcyhjb21wb25lbnQsIHByb3BzKSB7XG5cdCAgaWYgKCFwcm9wcykge1xuXHQg
ICAgcmV0dXJuO1xuXHQgIH1cblx0ICAvLyBOb3RlIHRoZSB1c2Ugb2YgYD09YCB3aGljaCBjaGVj
a3MgZm9yIG51bGwgb3IgdW5kZWZpbmVkLlxuXHQgIGlmICh2b2lkRWxlbWVudFRhZ3NbY29tcG9u
ZW50Ll90YWddKSB7XG5cdCAgICAhKHByb3BzLmNoaWxkcmVuID09IG51bGwgJiYgcHJvcHMuZGFu
Z2Vyb3VzbHlTZXRJbm5lckhUTUwgPT0gbnVsbCkgPyAgZmFsc2UgPyBpbnZhcmlhbnQoZmFsc2Us
ICclcyBpcyBhIHZvaWQgZWxlbWVudCB0YWcgYW5kIG11c3QgbmVpdGhlciBoYXZlIGBjaGlsZHJl
bmAgbm9yIHVzZSBgZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUxgLiVzJywgY29tcG9uZW50Ll90YWcs
IGNvbXBvbmVudC5fY3VycmVudEVsZW1lbnQuX293bmVyID8gJyBDaGVjayB0aGUgcmVuZGVyIG1l
dGhvZCBvZiAnICsgY29tcG9uZW50Ll9jdXJyZW50RWxlbWVudC5fb3duZXIuZ2V0TmFtZSgpICsg
Jy4nIDogJycpIDogX3Byb2RJbnZhcmlhbnQoJzEzNycsIGNvbXBvbmVudC5fdGFnLCBjb21wb25l
bnQuX2N1cnJlbnRFbGVtZW50Ll9vd25lciA/ICcgQ2hlY2sgdGhlIHJlbmRlciBtZXRob2Qgb2Yg
JyArIGNvbXBvbmVudC5fY3VycmVudEVsZW1lbnQuX293bmVyLmdldE5hbWUoKSArICcuJyA6ICcn
KSA6IHZvaWQgMDtcblx0ICB9XG5cdCAgaWYgKHByb3BzLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1M
ICE9IG51bGwpIHtcblx0ICAgICEocHJvcHMuY2hpbGRyZW4gPT0gbnVsbCkgPyAgZmFsc2UgPyBp
bnZhcmlhbnQoZmFsc2UsICdDYW4gb25seSBzZXQgb25lIG9mIGBjaGlsZHJlbmAgb3IgYHByb3Bz
LmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MYC4nKSA6IF9wcm9kSW52YXJpYW50KCc2MCcpIDogdm9p
ZCAwO1xuXHQgICAgISh0eXBlb2YgcHJvcHMuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwgPT09ICdv
YmplY3QnICYmIEhUTUwgaW4gcHJvcHMuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwpID8gIGZhbHNl
ID8gaW52YXJpYW50KGZhbHNlLCAnYHByb3BzLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MYCBtdXN0
IGJlIGluIHRoZSBmb3JtIGB7X19odG1sOiAuLi59YC4gUGxlYXNlIHZpc2l0IGh0dHBzOi8vZmIu
bWUvcmVhY3QtaW52YXJpYW50LWRhbmdlcm91c2x5LXNldC1pbm5lci1odG1sIGZvciBtb3JlIGlu
Zm9ybWF0aW9uLicpIDogX3Byb2RJbnZhcmlhbnQoJzYxJykgOiB2b2lkIDA7XG5cdCAgfVxuXHQg
IGlmIChmYWxzZSkge1xuXHQgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9u
JyA/IHdhcm5pbmcocHJvcHMuaW5uZXJIVE1MID09IG51bGwsICdEaXJlY3RseSBzZXR0aW5nIHBy
b3BlcnR5IGBpbm5lckhUTUxgIGlzIG5vdCBwZXJtaXR0ZWQuICcgKyAnRm9yIG1vcmUgaW5mb3Jt
YXRpb24sIGxvb2t1cCBkb2N1bWVudGF0aW9uIG9uIGBkYW5nZXJvdXNseVNldElubmVySFRNTGAu
JykgOiB2b2lkIDA7XG5cdCAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24n
ID8gd2FybmluZyhwcm9wcy5zdXBwcmVzc0NvbnRlbnRFZGl0YWJsZVdhcm5pbmcgfHwgIXByb3Bz
LmNvbnRlbnRFZGl0YWJsZSB8fCBwcm9wcy5jaGlsZHJlbiA9PSBudWxsLCAnQSBjb21wb25lbnQg
aXMgYGNvbnRlbnRFZGl0YWJsZWAgYW5kIGNvbnRhaW5zIGBjaGlsZHJlbmAgbWFuYWdlZCBieSAn
ICsgJ1JlYWN0LiBJdCBpcyBub3cgeW91ciByZXNwb25zaWJpbGl0eSB0byBndWFyYW50ZWUgdGhh
dCBub25lIG9mICcgKyAndGhvc2Ugbm9kZXMgYXJlIHVuZXhwZWN0ZWRseSBtb2RpZmllZCBvciBk
dXBsaWNhdGVkLiBUaGlzIGlzICcgKyAncHJvYmFibHkgbm90IGludGVudGlvbmFsLicpIDogdm9p
ZCAwO1xuXHQgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5p
bmcocHJvcHMub25Gb2N1c0luID09IG51bGwgJiYgcHJvcHMub25Gb2N1c091dCA9PSBudWxsLCAn
UmVhY3QgdXNlcyBvbkZvY3VzIGFuZCBvbkJsdXIgaW5zdGVhZCBvZiBvbkZvY3VzSW4gYW5kIG9u
Rm9jdXNPdXQuICcgKyAnQWxsIFJlYWN0IGV2ZW50cyBhcmUgbm9ybWFsaXplZCB0byBidWJibGUs
IHNvIG9uRm9jdXNJbiBhbmQgb25Gb2N1c091dCAnICsgJ2FyZSBub3QgbmVlZGVkL3N1cHBvcnRl
ZCBieSBSZWFjdC4nKSA6IHZvaWQgMDtcblx0ICB9XG5cdCAgIShwcm9wcy5zdHlsZSA9PSBudWxs
IHx8IHR5cGVvZiBwcm9wcy5zdHlsZSA9PT0gJ29iamVjdCcpID8gIGZhbHNlID8gaW52YXJpYW50
KGZhbHNlLCAnVGhlIGBzdHlsZWAgcHJvcCBleHBlY3RzIGEgbWFwcGluZyBmcm9tIHN0eWxlIHBy
b3BlcnRpZXMgdG8gdmFsdWVzLCBub3QgYSBzdHJpbmcuIEZvciBleGFtcGxlLCBzdHlsZT17e21h
cmdpblJpZ2h0OiBzcGFjaW5nICsgXFwnZW1cXCd9fSB3aGVuIHVzaW5nIEpTWC4lcycsIGdldERl
Y2xhcmF0aW9uRXJyb3JBZGRlbmR1bShjb21wb25lbnQpKSA6IF9wcm9kSW52YXJpYW50KCc2Mics
IGdldERlY2xhcmF0aW9uRXJyb3JBZGRlbmR1bShjb21wb25lbnQpKSA6IHZvaWQgMDtcblx0fVxu
XHRcblx0ZnVuY3Rpb24gZW5xdWV1ZVB1dExpc3RlbmVyKGluc3QsIHJlZ2lzdHJhdGlvbk5hbWUs
IGxpc3RlbmVyLCB0cmFuc2FjdGlvbikge1xuXHQgIGlmICh0cmFuc2FjdGlvbiBpbnN0YW5jZW9m
IFJlYWN0U2VydmVyUmVuZGVyaW5nVHJhbnNhY3Rpb24pIHtcblx0ICAgIHJldHVybjtcblx0ICB9
XG5cdCAgaWYgKGZhbHNlKSB7XG5cdCAgICAvLyBJRTggaGFzIG5vIEFQSSBmb3IgZXZlbnQgY2Fw
dHVyaW5nIGFuZCB0aGUgYG9uU2Nyb2xsYCBldmVudCBkb2Vzbid0XG5cdCAgICAvLyBidWJibGUu
XG5cdCAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhy
ZWdpc3RyYXRpb25OYW1lICE9PSAnb25TY3JvbGwnIHx8IGlzRXZlbnRTdXBwb3J0ZWQoJ3Njcm9s
bCcsIHRydWUpLCBcIlRoaXMgYnJvd3NlciBkb2Vzbid0IHN1cHBvcnQgdGhlIGBvblNjcm9sbGAg
ZXZlbnRcIikgOiB2b2lkIDA7XG5cdCAgfVxuXHQgIHZhciBjb250YWluZXJJbmZvID0gaW5zdC5f
aG9zdENvbnRhaW5lckluZm87XG5cdCAgdmFyIGlzRG9jdW1lbnRGcmFnbWVudCA9IGNvbnRhaW5l
ckluZm8uX25vZGUgJiYgY29udGFpbmVySW5mby5fbm9kZS5ub2RlVHlwZSA9PT0gRE9DX0ZSQUdN
RU5UX1RZUEU7XG5cdCAgdmFyIGRvYyA9IGlzRG9jdW1lbnRGcmFnbWVudCA/IGNvbnRhaW5lcklu
Zm8uX25vZGUgOiBjb250YWluZXJJbmZvLl9vd25lckRvY3VtZW50O1xuXHQgIGxpc3RlblRvKHJl
Z2lzdHJhdGlvbk5hbWUsIGRvYyk7XG5cdCAgdHJhbnNhY3Rpb24uZ2V0UmVhY3RNb3VudFJlYWR5
KCkuZW5xdWV1ZShwdXRMaXN0ZW5lciwge1xuXHQgICAgaW5zdDogaW5zdCxcblx0ICAgIHJlZ2lz
dHJhdGlvbk5hbWU6IHJlZ2lzdHJhdGlvbk5hbWUsXG5cdCAgICBsaXN0ZW5lcjogbGlzdGVuZXJc
blx0ICB9KTtcblx0fVxuXHRcblx0ZnVuY3Rpb24gcHV0TGlzdGVuZXIoKSB7XG5cdCAgdmFyIGxp
c3RlbmVyVG9QdXQgPSB0aGlzO1xuXHQgIEV2ZW50UGx1Z2luSHViLnB1dExpc3RlbmVyKGxpc3Rl
bmVyVG9QdXQuaW5zdCwgbGlzdGVuZXJUb1B1dC5yZWdpc3RyYXRpb25OYW1lLCBsaXN0ZW5lclRv
UHV0Lmxpc3RlbmVyKTtcblx0fVxuXHRcblx0ZnVuY3Rpb24gaW5wdXRQb3N0TW91bnQoKSB7XG5c
dCAgdmFyIGluc3QgPSB0aGlzO1xuXHQgIFJlYWN0RE9NSW5wdXQucG9zdE1vdW50V3JhcHBlcihp
bnN0KTtcblx0fVxuXHRcblx0ZnVuY3Rpb24gdGV4dGFyZWFQb3N0TW91bnQoKSB7XG5cdCAgdmFy
IGluc3QgPSB0aGlzO1xuXHQgIFJlYWN0RE9NVGV4dGFyZWEucG9zdE1vdW50V3JhcHBlcihpbnN0
KTtcblx0fVxuXHRcblx0ZnVuY3Rpb24gb3B0aW9uUG9zdE1vdW50KCkge1xuXHQgIHZhciBpbnN0
ID0gdGhpcztcblx0ICBSZWFjdERPTU9wdGlvbi5wb3N0TW91bnRXcmFwcGVyKGluc3QpO1xuXHR9
XG5cdFxuXHR2YXIgc2V0QW5kVmFsaWRhdGVDb250ZW50Q2hpbGREZXYgPSBlbXB0eUZ1bmN0aW9u
O1xuXHRpZiAoZmFsc2UpIHtcblx0ICBzZXRBbmRWYWxpZGF0ZUNvbnRlbnRDaGlsZERldiA9IGZ1
bmN0aW9uIChjb250ZW50KSB7XG5cdCAgICB2YXIgaGFzRXhpc3RpbmdDb250ZW50ID0gdGhpcy5f
Y29udGVudERlYnVnSUQgIT0gbnVsbDtcblx0ICAgIHZhciBkZWJ1Z0lEID0gdGhpcy5fZGVidWdJ
RDtcblx0ICAgIC8vIFRoaXMgSUQgcmVwcmVzZW50cyB0aGUgaW5saW5lZCBjaGlsZCB0aGF0IGhh
cyBubyBiYWNraW5nIGluc3RhbmNlOlxuXHQgICAgdmFyIGNvbnRlbnREZWJ1Z0lEID0gLWRlYnVn
SUQ7XG5cdFxuXHQgICAgaWYgKGNvbnRlbnQgPT0gbnVsbCkge1xuXHQgICAgICBpZiAoaGFzRXhp
c3RpbmdDb250ZW50KSB7XG5cdCAgICAgICAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29s
Lm9uVW5tb3VudENvbXBvbmVudCh0aGlzLl9jb250ZW50RGVidWdJRCk7XG5cdCAgICAgIH1cblx0
ICAgICAgdGhpcy5fY29udGVudERlYnVnSUQgPSBudWxsO1xuXHQgICAgICByZXR1cm47XG5cdCAg
ICB9XG5cdFxuXHQgICAgdmFsaWRhdGVET01OZXN0aW5nKG51bGwsIFN0cmluZyhjb250ZW50KSwg
dGhpcywgdGhpcy5fYW5jZXN0b3JJbmZvKTtcblx0ICAgIHRoaXMuX2NvbnRlbnREZWJ1Z0lEID0g
Y29udGVudERlYnVnSUQ7XG5cdCAgICBpZiAoaGFzRXhpc3RpbmdDb250ZW50KSB7XG5cdCAgICAg
IFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vbkJlZm9yZVVwZGF0ZUNvbXBvbmVudChj
b250ZW50RGVidWdJRCwgY29udGVudCk7XG5cdCAgICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRl
YnVnVG9vbC5vblVwZGF0ZUNvbXBvbmVudChjb250ZW50RGVidWdJRCk7XG5cdCAgICB9IGVsc2Ug
e1xuXHQgICAgICBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25CZWZvcmVNb3VudENv
bXBvbmVudChjb250ZW50RGVidWdJRCwgY29udGVudCwgZGVidWdJRCk7XG5cdCAgICAgIFJlYWN0
SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vbk1vdW50Q29tcG9uZW50KGNvbnRlbnREZWJ1Z0lE
KTtcblx0ICAgICAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9uU2V0Q2hpbGRyZW4o
ZGVidWdJRCwgW2NvbnRlbnREZWJ1Z0lEXSk7XG5cdCAgICB9XG5cdCAgfTtcblx0fVxuXHRcblx0
Ly8gVGhlcmUgYXJlIHNvIG1hbnkgbWVkaWEgZXZlbnRzLCBpdCBtYWtlcyBzZW5zZSB0byBqdXN0
XG5cdC8vIG1haW50YWluIGEgbGlzdCByYXRoZXIgdGhhbiBjcmVhdGUgYSBgdHJhcEJ1YmJsZWRF
dmVudGAgZm9yIGVhY2hcblx0dmFyIG1lZGlhRXZlbnRzID0ge1xuXHQgIHRvcEFib3J0OiAnYWJv
cnQnLFxuXHQgIHRvcENhblBsYXk6ICdjYW5wbGF5Jyxcblx0ICB0b3BDYW5QbGF5VGhyb3VnaDog
J2NhbnBsYXl0aHJvdWdoJyxcblx0ICB0b3BEdXJhdGlvbkNoYW5nZTogJ2R1cmF0aW9uY2hhbmdl
Jyxcblx0ICB0b3BFbXB0aWVkOiAnZW1wdGllZCcsXG5cdCAgdG9wRW5jcnlwdGVkOiAnZW5jcnlw
dGVkJyxcblx0ICB0b3BFbmRlZDogJ2VuZGVkJyxcblx0ICB0b3BFcnJvcjogJ2Vycm9yJyxcblx0
ICB0b3BMb2FkZWREYXRhOiAnbG9hZGVkZGF0YScsXG5cdCAgdG9wTG9hZGVkTWV0YWRhdGE6ICds
b2FkZWRtZXRhZGF0YScsXG5cdCAgdG9wTG9hZFN0YXJ0OiAnbG9hZHN0YXJ0Jyxcblx0ICB0b3BQ
YXVzZTogJ3BhdXNlJyxcblx0ICB0b3BQbGF5OiAncGxheScsXG5cdCAgdG9wUGxheWluZzogJ3Bs
YXlpbmcnLFxuXHQgIHRvcFByb2dyZXNzOiAncHJvZ3Jlc3MnLFxuXHQgIHRvcFJhdGVDaGFuZ2U6
ICdyYXRlY2hhbmdlJyxcblx0ICB0b3BTZWVrZWQ6ICdzZWVrZWQnLFxuXHQgIHRvcFNlZWtpbmc6
ICdzZWVraW5nJyxcblx0ICB0b3BTdGFsbGVkOiAnc3RhbGxlZCcsXG5cdCAgdG9wU3VzcGVuZDog
J3N1c3BlbmQnLFxuXHQgIHRvcFRpbWVVcGRhdGU6ICd0aW1ldXBkYXRlJyxcblx0ICB0b3BWb2x1
bWVDaGFuZ2U6ICd2b2x1bWVjaGFuZ2UnLFxuXHQgIHRvcFdhaXRpbmc6ICd3YWl0aW5nJ1xuXHR9
O1xuXHRcblx0ZnVuY3Rpb24gdHJhY2tJbnB1dFZhbHVlKCkge1xuXHQgIGlucHV0VmFsdWVUcmFj
a2luZy50cmFjayh0aGlzKTtcblx0fVxuXHRcblx0ZnVuY3Rpb24gdHJhcEJ1YmJsZWRFdmVudHNM
b2NhbCgpIHtcblx0ICB2YXIgaW5zdCA9IHRoaXM7XG5cdCAgLy8gSWYgYSBjb21wb25lbnQgcmVu
ZGVycyB0byBudWxsIG9yIGlmIGFub3RoZXIgY29tcG9uZW50IGZhdGFscyBhbmQgY2F1c2VzXG5c
dCAgLy8gdGhlIHN0YXRlIG9mIHRoZSB0cmVlIHRvIGJlIGNvcnJ1cHRlZCwgYG5vZGVgIGhlcmUg
Y2FuIGJlIG51bGwuXG5cdCAgIWluc3QuX3Jvb3ROb2RlSUQgPyAgZmFsc2UgPyBpbnZhcmlhbnQo
ZmFsc2UsICdNdXN0IGJlIG1vdW50ZWQgdG8gdHJhcCBldmVudHMnKSA6IF9wcm9kSW52YXJpYW50
KCc2MycpIDogdm9pZCAwO1xuXHQgIHZhciBub2RlID0gZ2V0Tm9kZShpbnN0KTtcblx0ICAhbm9k
ZSA/ICBmYWxzZSA/IGludmFyaWFudChmYWxzZSwgJ3RyYXBCdWJibGVkRXZlbnQoLi4uKTogUmVx
dWlyZXMgbm9kZSB0byBiZSByZW5kZXJlZC4nKSA6IF9wcm9kSW52YXJpYW50KCc2NCcpIDogdm9p
ZCAwO1xuXHRcblx0ICBzd2l0Y2ggKGluc3QuX3RhZykge1xuXHQgICAgY2FzZSAnaWZyYW1lJzpc
blx0ICAgIGNhc2UgJ29iamVjdCc6XG5cdCAgICAgIGluc3QuX3dyYXBwZXJTdGF0ZS5saXN0ZW5l
cnMgPSBbUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLnRyYXBCdWJibGVkRXZlbnQoJ3RvcExvYWQn
LCAnbG9hZCcsIG5vZGUpXTtcblx0ICAgICAgYnJlYWs7XG5cdCAgICBjYXNlICd2aWRlbyc6XG5c
dCAgICBjYXNlICdhdWRpbyc6XG5cdCAgICAgIGluc3QuX3dyYXBwZXJTdGF0ZS5saXN0ZW5lcnMg
PSBbXTtcblx0ICAgICAgLy8gQ3JlYXRlIGxpc3RlbmVyIGZvciBlYWNoIG1lZGlhIGV2ZW50XG5c
dCAgICAgIGZvciAodmFyIGV2ZW50IGluIG1lZGlhRXZlbnRzKSB7XG5cdCAgICAgICAgaWYgKG1l
ZGlhRXZlbnRzLmhhc093blByb3BlcnR5KGV2ZW50KSkge1xuXHQgICAgICAgICAgaW5zdC5fd3Jh
cHBlclN0YXRlLmxpc3RlbmVycy5wdXNoKFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlci50cmFwQnVi
YmxlZEV2ZW50KGV2ZW50LCBtZWRpYUV2ZW50c1tldmVudF0sIG5vZGUpKTtcblx0ICAgICAgICB9
XG5cdCAgICAgIH1cblx0ICAgICAgYnJlYWs7XG5cdCAgICBjYXNlICdzb3VyY2UnOlxuXHQgICAg
ICBpbnN0Ll93cmFwcGVyU3RhdGUubGlzdGVuZXJzID0gW1JlYWN0QnJvd3NlckV2ZW50RW1pdHRl
ci50cmFwQnViYmxlZEV2ZW50KCd0b3BFcnJvcicsICdlcnJvcicsIG5vZGUpXTtcblx0ICAgICAg
YnJlYWs7XG5cdCAgICBjYXNlICdpbWcnOlxuXHQgICAgICBpbnN0Ll93cmFwcGVyU3RhdGUubGlz
dGVuZXJzID0gW1JlYWN0QnJvd3NlckV2ZW50RW1pdHRlci50cmFwQnViYmxlZEV2ZW50KCd0b3BF
cnJvcicsICdlcnJvcicsIG5vZGUpLCBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIudHJhcEJ1YmJs
ZWRFdmVudCgndG9wTG9hZCcsICdsb2FkJywgbm9kZSldO1xuXHQgICAgICBicmVhaztcblx0ICAg
IGNhc2UgJ2Zvcm0nOlxuXHQgICAgICBpbnN0Ll93cmFwcGVyU3RhdGUubGlzdGVuZXJzID0gW1Jl
YWN0QnJvd3NlckV2ZW50RW1pdHRlci50cmFwQnViYmxlZEV2ZW50KCd0b3BSZXNldCcsICdyZXNl
dCcsIG5vZGUpLCBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIudHJhcEJ1YmJsZWRFdmVudCgndG9w
U3VibWl0JywgJ3N1Ym1pdCcsIG5vZGUpXTtcblx0ICAgICAgYnJlYWs7XG5cdCAgICBjYXNlICdp
bnB1dCc6XG5cdCAgICBjYXNlICdzZWxlY3QnOlxuXHQgICAgY2FzZSAndGV4dGFyZWEnOlxuXHQg
ICAgICBpbnN0Ll93cmFwcGVyU3RhdGUubGlzdGVuZXJzID0gW1JlYWN0QnJvd3NlckV2ZW50RW1p
dHRlci50cmFwQnViYmxlZEV2ZW50KCd0b3BJbnZhbGlkJywgJ2ludmFsaWQnLCBub2RlKV07XG5c
dCAgICAgIGJyZWFrO1xuXHQgIH1cblx0fVxuXHRcblx0ZnVuY3Rpb24gcG9zdFVwZGF0ZVNlbGVj
dFdyYXBwZXIoKSB7XG5cdCAgUmVhY3RET01TZWxlY3QucG9zdFVwZGF0ZVdyYXBwZXIodGhpcyk7
XG5cdH1cblx0XG5cdC8vIEZvciBIVE1MLCBjZXJ0YWluIHRhZ3Mgc2hvdWxkIG9taXQgdGhlaXIg
Y2xvc2UgdGFnLiBXZSBrZWVwIGEgd2hpdGVsaXN0IGZvclxuXHQvLyB0aG9zZSBzcGVjaWFsLWNh
c2UgdGFncy5cblx0XG5cdHZhciBvbWl0dGVkQ2xvc2VUYWdzID0ge1xuXHQgIGFyZWE6IHRydWUs
XG5cdCAgYmFzZTogdHJ1ZSxcblx0ICBicjogdHJ1ZSxcblx0ICBjb2w6IHRydWUsXG5cdCAgZW1i
ZWQ6IHRydWUsXG5cdCAgaHI6IHRydWUsXG5cdCAgaW1nOiB0cnVlLFxuXHQgIGlucHV0OiB0cnVl
LFxuXHQgIGtleWdlbjogdHJ1ZSxcblx0ICBsaW5rOiB0cnVlLFxuXHQgIG1ldGE6IHRydWUsXG5c
dCAgcGFyYW06IHRydWUsXG5cdCAgc291cmNlOiB0cnVlLFxuXHQgIHRyYWNrOiB0cnVlLFxuXHQg
IHdicjogdHJ1ZVxuXHQgIC8vIE5PVEU6IG1lbnVpdGVtJ3MgY2xvc2UgdGFnIHNob3VsZCBiZSBv
bWl0dGVkLCBidXQgdGhhdCBjYXVzZXMgcHJvYmxlbXMuXG5cdH07XG5cdFxuXHR2YXIgbmV3bGlu
ZUVhdGluZ1RhZ3MgPSB7XG5cdCAgbGlzdGluZzogdHJ1ZSxcblx0ICBwcmU6IHRydWUsXG5cdCAg
dGV4dGFyZWE6IHRydWVcblx0fTtcblx0XG5cdC8vIEZvciBIVE1MLCBjZXJ0YWluIHRhZ3MgY2Fu
bm90IGhhdmUgY2hpbGRyZW4uIFRoaXMgaGFzIHRoZSBzYW1lIHB1cnBvc2UgYXNcblx0Ly8gYG9t
aXR0ZWRDbG9zZVRhZ3NgIGV4Y2VwdCB0aGF0IGBtZW51aXRlbWAgc2hvdWxkIHN0aWxsIGhhdmUg
aXRzIGNsb3NpbmcgdGFnLlxuXHRcblx0dmFyIHZvaWRFbGVtZW50VGFncyA9IF9hc3NpZ24oe1xu
XHQgIG1lbnVpdGVtOiB0cnVlXG5cdH0sIG9taXR0ZWRDbG9zZVRhZ3MpO1xuXHRcblx0Ly8gV2Ug
YWNjZXB0IGFueSB0YWcgdG8gYmUgcmVuZGVyZWQgYnV0IHNpbmNlIHRoaXMgZ2V0cyBpbmplY3Rl
ZCBpbnRvIGFyYml0cmFyeVxuXHQvLyBIVE1MLCB3ZSB3YW50IHRvIG1ha2Ugc3VyZSB0aGF0IGl0
J3MgYSBzYWZlIHRhZy5cblx0Ly8gaHR0cDovL3d3dy53My5vcmcvVFIvUkVDLXhtbC8jTlQtTmFt
ZVxuXHRcblx0dmFyIFZBTElEX1RBR19SRUdFWCA9IC9eW2EtekEtWl1bYS16QS1aOl9cXC5cXC1c
XGRdKiQvOyAvLyBTaW1wbGlmaWVkIHN1YnNldFxuXHR2YXIgdmFsaWRhdGVkVGFnQ2FjaGUgPSB7
fTtcblx0dmFyIGhhc093blByb3BlcnR5ID0ge30uaGFzT3duUHJvcGVydHk7XG5cdFxuXHRmdW5j
dGlvbiB2YWxpZGF0ZURhbmdlcm91c1RhZyh0YWcpIHtcblx0ICBpZiAoIWhhc093blByb3BlcnR5
LmNhbGwodmFsaWRhdGVkVGFnQ2FjaGUsIHRhZykpIHtcblx0ICAgICFWQUxJRF9UQUdfUkVHRVgu
dGVzdCh0YWcpID8gIGZhbHNlID8gaW52YXJpYW50KGZhbHNlLCAnSW52YWxpZCB0YWc6ICVzJywg
dGFnKSA6IF9wcm9kSW52YXJpYW50KCc2NScsIHRhZykgOiB2b2lkIDA7XG5cdCAgICB2YWxpZGF0
ZWRUYWdDYWNoZVt0YWddID0gdHJ1ZTtcblx0ICB9XG5cdH1cblx0XG5cdGZ1bmN0aW9uIGlzQ3Vz
dG9tQ29tcG9uZW50KHRhZ05hbWUsIHByb3BzKSB7XG5cdCAgcmV0dXJuIHRhZ05hbWUuaW5kZXhP
ZignLScpID49IDAgfHwgcHJvcHMuaXMgIT0gbnVsbDtcblx0fVxuXHRcblx0dmFyIGdsb2JhbElk
Q291bnRlciA9IDE7XG5cdFxuXHQvKipcblx0ICogQ3JlYXRlcyBhIG5ldyBSZWFjdCBjbGFzcyB0
aGF0IGlzIGlkZW1wb3RlbnQgYW5kIGNhcGFibGUgb2YgY29udGFpbmluZyBvdGhlclxuXHQgKiBS
ZWFjdCBjb21wb25lbnRzLiBJdCBhY2NlcHRzIGV2ZW50IGxpc3RlbmVycyBhbmQgRE9NIHByb3Bl
cnRpZXMgdGhhdCBhcmVcblx0ICogdmFsaWQgYWNjb3JkaW5nIHRvIGBET01Qcm9wZXJ0eWAuXG5c
dCAqXG5cdCAqICAtIEV2ZW50IGxpc3RlbmVyczogYG9uQ2xpY2tgLCBgb25Nb3VzZURvd25gLCBl
dGMuXG5cdCAqICAtIERPTSBwcm9wZXJ0aWVzOiBgY2xhc3NOYW1lYCwgYG5hbWVgLCBgdGl0bGVg
LCBldGMuXG5cdCAqXG5cdCAqIFRoZSBgc3R5bGVgIHByb3BlcnR5IGZ1bmN0aW9ucyBkaWZmZXJl
bnRseSBmcm9tIHRoZSBET00gQVBJLiBJdCBhY2NlcHRzIGFuXG5cdCAqIG9iamVjdCBtYXBwaW5n
IG9mIHN0eWxlIHByb3BlcnRpZXMgdG8gdmFsdWVzLlxuXHQgKlxuXHQgKiBAY29uc3RydWN0b3Ig
UmVhY3RET01Db21wb25lbnRcblx0ICogQGV4dGVuZHMgUmVhY3RNdWx0aUNoaWxkXG5cdCAqL1xu
XHRmdW5jdGlvbiBSZWFjdERPTUNvbXBvbmVudChlbGVtZW50KSB7XG5cdCAgdmFyIHRhZyA9IGVs
ZW1lbnQudHlwZTtcblx0ICB2YWxpZGF0ZURhbmdlcm91c1RhZyh0YWcpO1xuXHQgIHRoaXMuX2N1
cnJlbnRFbGVtZW50ID0gZWxlbWVudDtcblx0ICB0aGlzLl90YWcgPSB0YWcudG9Mb3dlckNhc2Uo
KTtcblx0ICB0aGlzLl9uYW1lc3BhY2VVUkkgPSBudWxsO1xuXHQgIHRoaXMuX3JlbmRlcmVkQ2hp
bGRyZW4gPSBudWxsO1xuXHQgIHRoaXMuX3ByZXZpb3VzU3R5bGUgPSBudWxsO1xuXHQgIHRoaXMu
X3ByZXZpb3VzU3R5bGVDb3B5ID0gbnVsbDtcblx0ICB0aGlzLl9ob3N0Tm9kZSA9IG51bGw7XG5c
dCAgdGhpcy5faG9zdFBhcmVudCA9IG51bGw7XG5cdCAgdGhpcy5fcm9vdE5vZGVJRCA9IDA7XG5c
dCAgdGhpcy5fZG9tSUQgPSAwO1xuXHQgIHRoaXMuX2hvc3RDb250YWluZXJJbmZvID0gbnVsbDtc
blx0ICB0aGlzLl93cmFwcGVyU3RhdGUgPSBudWxsO1xuXHQgIHRoaXMuX3RvcExldmVsV3JhcHBl
ciA9IG51bGw7XG5cdCAgdGhpcy5fZmxhZ3MgPSAwO1xuXHQgIGlmIChmYWxzZSkge1xuXHQgICAg
dGhpcy5fYW5jZXN0b3JJbmZvID0gbnVsbDtcblx0ICAgIHNldEFuZFZhbGlkYXRlQ29udGVudENo
aWxkRGV2LmNhbGwodGhpcywgbnVsbCk7XG5cdCAgfVxuXHR9XG5cdFxuXHRSZWFjdERPTUNvbXBv
bmVudC5kaXNwbGF5TmFtZSA9ICdSZWFjdERPTUNvbXBvbmVudCc7XG5cdFxuXHRSZWFjdERPTUNv
bXBvbmVudC5NaXhpbiA9IHtcblx0ICAvKipcblx0ICAgKiBHZW5lcmF0ZXMgcm9vdCB0YWcgbWFy
a3VwIHRoZW4gcmVjdXJzZXMuIFRoaXMgbWV0aG9kIGhhcyBzaWRlIGVmZmVjdHMgYW5kXG5cdCAg
ICogaXMgbm90IGlkZW1wb3RlbnQuXG5cdCAgICpcblx0ICAgKiBAaW50ZXJuYWxcblx0ICAgKiBA
cGFyYW0ge1JlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb258UmVhY3RTZXJ2ZXJSZW5kZXJpbmdUcmFu
c2FjdGlvbn0gdHJhbnNhY3Rpb25cblx0ICAgKiBAcGFyYW0gez9SZWFjdERPTUNvbXBvbmVudH0g
dGhlIHBhcmVudCBjb21wb25lbnQgaW5zdGFuY2Vcblx0ICAgKiBAcGFyYW0gez9vYmplY3R9IGlu
Zm8gYWJvdXQgdGhlIGhvc3QgY29udGFpbmVyXG5cdCAgICogQHBhcmFtIHtvYmplY3R9IGNvbnRl
eHRcblx0ICAgKiBAcmV0dXJuIHtzdHJpbmd9IFRoZSBjb21wdXRlZCBtYXJrdXAuXG5cdCAgICov
XG5cdCAgbW91bnRDb21wb25lbnQ6IGZ1bmN0aW9uICh0cmFuc2FjdGlvbiwgaG9zdFBhcmVudCwg
aG9zdENvbnRhaW5lckluZm8sIGNvbnRleHQpIHtcblx0ICAgIHRoaXMuX3Jvb3ROb2RlSUQgPSBn
bG9iYWxJZENvdW50ZXIrKztcblx0ICAgIHRoaXMuX2RvbUlEID0gaG9zdENvbnRhaW5lckluZm8u
X2lkQ291bnRlcisrO1xuXHQgICAgdGhpcy5faG9zdFBhcmVudCA9IGhvc3RQYXJlbnQ7XG5cdCAg
ICB0aGlzLl9ob3N0Q29udGFpbmVySW5mbyA9IGhvc3RDb250YWluZXJJbmZvO1xuXHRcblx0ICAg
IHZhciBwcm9wcyA9IHRoaXMuX2N1cnJlbnRFbGVtZW50LnByb3BzO1xuXHRcblx0ICAgIHN3aXRj
aCAodGhpcy5fdGFnKSB7XG5cdCAgICAgIGNhc2UgJ2F1ZGlvJzpcblx0ICAgICAgY2FzZSAnZm9y
bSc6XG5cdCAgICAgIGNhc2UgJ2lmcmFtZSc6XG5cdCAgICAgIGNhc2UgJ2ltZyc6XG5cdCAgICAg
IGNhc2UgJ2xpbmsnOlxuXHQgICAgICBjYXNlICdvYmplY3QnOlxuXHQgICAgICBjYXNlICdzb3Vy
Y2UnOlxuXHQgICAgICBjYXNlICd2aWRlbyc6XG5cdCAgICAgICAgdGhpcy5fd3JhcHBlclN0YXRl
ID0ge1xuXHQgICAgICAgICAgbGlzdGVuZXJzOiBudWxsXG5cdCAgICAgICAgfTtcblx0ICAgICAg
ICB0cmFuc2FjdGlvbi5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKHRyYXBCdWJibGVkRXZl
bnRzTG9jYWwsIHRoaXMpO1xuXHQgICAgICAgIGJyZWFrO1xuXHQgICAgICBjYXNlICdpbnB1dCc6
XG5cdCAgICAgICAgUmVhY3RET01JbnB1dC5tb3VudFdyYXBwZXIodGhpcywgcHJvcHMsIGhvc3RQ
YXJlbnQpO1xuXHQgICAgICAgIHByb3BzID0gUmVhY3RET01JbnB1dC5nZXRIb3N0UHJvcHModGhp
cywgcHJvcHMpO1xuXHQgICAgICAgIHRyYW5zYWN0aW9uLmdldFJlYWN0TW91bnRSZWFkeSgpLmVu
cXVldWUodHJhY2tJbnB1dFZhbHVlLCB0aGlzKTtcblx0ICAgICAgICB0cmFuc2FjdGlvbi5nZXRS
ZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKHRyYXBCdWJibGVkRXZlbnRzTG9jYWwsIHRoaXMpO1xu
XHQgICAgICAgIGJyZWFrO1xuXHQgICAgICBjYXNlICdvcHRpb24nOlxuXHQgICAgICAgIFJlYWN0
RE9NT3B0aW9uLm1vdW50V3JhcHBlcih0aGlzLCBwcm9wcywgaG9zdFBhcmVudCk7XG5cdCAgICAg
ICAgcHJvcHMgPSBSZWFjdERPTU9wdGlvbi5nZXRIb3N0UHJvcHModGhpcywgcHJvcHMpO1xuXHQg
ICAgICAgIGJyZWFrO1xuXHQgICAgICBjYXNlICdzZWxlY3QnOlxuXHQgICAgICAgIFJlYWN0RE9N
U2VsZWN0Lm1vdW50V3JhcHBlcih0aGlzLCBwcm9wcywgaG9zdFBhcmVudCk7XG5cdCAgICAgICAg
cHJvcHMgPSBSZWFjdERPTVNlbGVjdC5nZXRIb3N0UHJvcHModGhpcywgcHJvcHMpO1xuXHQgICAg
ICAgIHRyYW5zYWN0aW9uLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUodHJhcEJ1YmJsZWRF
dmVudHNMb2NhbCwgdGhpcyk7XG5cdCAgICAgICAgYnJlYWs7XG5cdCAgICAgIGNhc2UgJ3RleHRh
cmVhJzpcblx0ICAgICAgICBSZWFjdERPTVRleHRhcmVhLm1vdW50V3JhcHBlcih0aGlzLCBwcm9w
cywgaG9zdFBhcmVudCk7XG5cdCAgICAgICAgcHJvcHMgPSBSZWFjdERPTVRleHRhcmVhLmdldEhv
c3RQcm9wcyh0aGlzLCBwcm9wcyk7XG5cdCAgICAgICAgdHJhbnNhY3Rpb24uZ2V0UmVhY3RNb3Vu
dFJlYWR5KCkuZW5xdWV1ZSh0cmFja0lucHV0VmFsdWUsIHRoaXMpO1xuXHQgICAgICAgIHRyYW5z
YWN0aW9uLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUodHJhcEJ1YmJsZWRFdmVudHNMb2Nh
bCwgdGhpcyk7XG5cdCAgICAgICAgYnJlYWs7XG5cdCAgICB9XG5cdFxuXHQgICAgYXNzZXJ0VmFs
aWRQcm9wcyh0aGlzLCBwcm9wcyk7XG5cdFxuXHQgICAgLy8gV2UgY3JlYXRlIHRhZ3MgaW4gdGhl
IG5hbWVzcGFjZSBvZiB0aGVpciBwYXJlbnQgY29udGFpbmVyLCBleGNlcHQgSFRNTFxuXHQgICAg
Ly8gdGFncyBnZXQgbm8gbmFtZXNwYWNlLlxuXHQgICAgdmFyIG5hbWVzcGFjZVVSSTtcblx0ICAg
IHZhciBwYXJlbnRUYWc7XG5cdCAgICBpZiAoaG9zdFBhcmVudCAhPSBudWxsKSB7XG5cdCAgICAg
IG5hbWVzcGFjZVVSSSA9IGhvc3RQYXJlbnQuX25hbWVzcGFjZVVSSTtcblx0ICAgICAgcGFyZW50
VGFnID0gaG9zdFBhcmVudC5fdGFnO1xuXHQgICAgfSBlbHNlIGlmIChob3N0Q29udGFpbmVySW5m
by5fdGFnKSB7XG5cdCAgICAgIG5hbWVzcGFjZVVSSSA9IGhvc3RDb250YWluZXJJbmZvLl9uYW1l
c3BhY2VVUkk7XG5cdCAgICAgIHBhcmVudFRhZyA9IGhvc3RDb250YWluZXJJbmZvLl90YWc7XG5c
dCAgICB9XG5cdCAgICBpZiAobmFtZXNwYWNlVVJJID09IG51bGwgfHwgbmFtZXNwYWNlVVJJID09
PSBET01OYW1lc3BhY2VzLnN2ZyAmJiBwYXJlbnRUYWcgPT09ICdmb3JlaWdub2JqZWN0Jykge1xu
XHQgICAgICBuYW1lc3BhY2VVUkkgPSBET01OYW1lc3BhY2VzLmh0bWw7XG5cdCAgICB9XG5cdCAg
ICBpZiAobmFtZXNwYWNlVVJJID09PSBET01OYW1lc3BhY2VzLmh0bWwpIHtcblx0ICAgICAgaWYg
KHRoaXMuX3RhZyA9PT0gJ3N2ZycpIHtcblx0ICAgICAgICBuYW1lc3BhY2VVUkkgPSBET01OYW1l
c3BhY2VzLnN2Zztcblx0ICAgICAgfSBlbHNlIGlmICh0aGlzLl90YWcgPT09ICdtYXRoJykge1xu
XHQgICAgICAgIG5hbWVzcGFjZVVSSSA9IERPTU5hbWVzcGFjZXMubWF0aG1sO1xuXHQgICAgICB9
XG5cdCAgICB9XG5cdCAgICB0aGlzLl9uYW1lc3BhY2VVUkkgPSBuYW1lc3BhY2VVUkk7XG5cdFxu
XHQgICAgaWYgKGZhbHNlKSB7XG5cdCAgICAgIHZhciBwYXJlbnRJbmZvO1xuXHQgICAgICBpZiAo
aG9zdFBhcmVudCAhPSBudWxsKSB7XG5cdCAgICAgICAgcGFyZW50SW5mbyA9IGhvc3RQYXJlbnQu
X2FuY2VzdG9ySW5mbztcblx0ICAgICAgfSBlbHNlIGlmIChob3N0Q29udGFpbmVySW5mby5fdGFn
KSB7XG5cdCAgICAgICAgcGFyZW50SW5mbyA9IGhvc3RDb250YWluZXJJbmZvLl9hbmNlc3Rvcklu
Zm87XG5cdCAgICAgIH1cblx0ICAgICAgaWYgKHBhcmVudEluZm8pIHtcblx0ICAgICAgICAvLyBw
YXJlbnRJbmZvIHNob3VsZCBhbHdheXMgYmUgcHJlc2VudCBleGNlcHQgZm9yIHRoZSB0b3AtbGV2
ZWxcblx0ICAgICAgICAvLyBjb21wb25lbnQgd2hlbiBzZXJ2ZXIgcmVuZGVyaW5nXG5cdCAgICAg
ICAgdmFsaWRhdGVET01OZXN0aW5nKHRoaXMuX3RhZywgbnVsbCwgdGhpcywgcGFyZW50SW5mbyk7
XG5cdCAgICAgIH1cblx0ICAgICAgdGhpcy5fYW5jZXN0b3JJbmZvID0gdmFsaWRhdGVET01OZXN0
aW5nLnVwZGF0ZWRBbmNlc3RvckluZm8ocGFyZW50SW5mbywgdGhpcy5fdGFnLCB0aGlzKTtcblx0
ICAgIH1cblx0XG5cdCAgICB2YXIgbW91bnRJbWFnZTtcblx0ICAgIGlmICh0cmFuc2FjdGlvbi51
c2VDcmVhdGVFbGVtZW50KSB7XG5cdCAgICAgIHZhciBvd25lckRvY3VtZW50ID0gaG9zdENvbnRh
aW5lckluZm8uX293bmVyRG9jdW1lbnQ7XG5cdCAgICAgIHZhciBlbDtcblx0ICAgICAgaWYgKG5h
bWVzcGFjZVVSSSA9PT0gRE9NTmFtZXNwYWNlcy5odG1sKSB7XG5cdCAgICAgICAgaWYgKHRoaXMu
X3RhZyA9PT0gJ3NjcmlwdCcpIHtcblx0ICAgICAgICAgIC8vIENyZWF0ZSB0aGUgc2NyaXB0IHZp
YSAuaW5uZXJIVE1MIHNvIGl0cyBcInBhcnNlci1pbnNlcnRlZFwiIGZsYWcgaXNcblx0ICAgICAg
ICAgIC8vIHNldCB0byB0cnVlIGFuZCBpdCBkb2VzIG5vdCBleGVjdXRlXG5cdCAgICAgICAgICB2
YXIgZGl2ID0gb3duZXJEb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcblx0ICAgICAgICAg
IHZhciB0eXBlID0gdGhpcy5fY3VycmVudEVsZW1lbnQudHlwZTtcblx0ICAgICAgICAgIGRpdi5p
bm5lckhUTUwgPSAnPCcgKyB0eXBlICsgJz48LycgKyB0eXBlICsgJz4nO1xuXHQgICAgICAgICAg
ZWwgPSBkaXYucmVtb3ZlQ2hpbGQoZGl2LmZpcnN0Q2hpbGQpO1xuXHQgICAgICAgIH0gZWxzZSBp
ZiAocHJvcHMuaXMpIHtcblx0ICAgICAgICAgIGVsID0gb3duZXJEb2N1bWVudC5jcmVhdGVFbGVt
ZW50KHRoaXMuX2N1cnJlbnRFbGVtZW50LnR5cGUsIHByb3BzLmlzKTtcblx0ICAgICAgICB9IGVs
c2Uge1xuXHQgICAgICAgICAgLy8gU2VwYXJhdGUgZWxzZSBicmFuY2ggaW5zdGVhZCBvZiB1c2lu
ZyBgcHJvcHMuaXMgfHwgdW5kZWZpbmVkYCBhYm92ZSBiZWN1YXNlIG9mIGEgRmlyZWZveCBidWcu
XG5cdCAgICAgICAgICAvLyBTZWUgZGlzY3Vzc2lvbiBpbiBodHRwczovL2dpdGh1Yi5jb20vZmFj
ZWJvb2svcmVhY3QvcHVsbC82ODk2XG5cdCAgICAgICAgICAvLyBhbmQgZGlzY3Vzc2lvbiBpbiBo
dHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjc2MjQwXG5cdCAg
ICAgICAgICBlbCA9IG93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudCh0aGlzLl9jdXJyZW50RWxl
bWVudC50eXBlKTtcblx0ICAgICAgICB9XG5cdCAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgZWwg
PSBvd25lckRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhuYW1lc3BhY2VVUkksIHRoaXMuX2N1cnJl
bnRFbGVtZW50LnR5cGUpO1xuXHQgICAgICB9XG5cdCAgICAgIFJlYWN0RE9NQ29tcG9uZW50VHJl
ZS5wcmVjYWNoZU5vZGUodGhpcywgZWwpO1xuXHQgICAgICB0aGlzLl9mbGFncyB8PSBGbGFncy5o
YXNDYWNoZWRDaGlsZE5vZGVzO1xuXHQgICAgICBpZiAoIXRoaXMuX2hvc3RQYXJlbnQpIHtcblx0
ICAgICAgICBET01Qcm9wZXJ0eU9wZXJhdGlvbnMuc2V0QXR0cmlidXRlRm9yUm9vdChlbCk7XG5c
dCAgICAgIH1cblx0ICAgICAgdGhpcy5fdXBkYXRlRE9NUHJvcGVydGllcyhudWxsLCBwcm9wcywg
dHJhbnNhY3Rpb24pO1xuXHQgICAgICB2YXIgbGF6eVRyZWUgPSBET01MYXp5VHJlZShlbCk7XG5c
dCAgICAgIHRoaXMuX2NyZWF0ZUluaXRpYWxDaGlsZHJlbih0cmFuc2FjdGlvbiwgcHJvcHMsIGNv
bnRleHQsIGxhenlUcmVlKTtcblx0ICAgICAgbW91bnRJbWFnZSA9IGxhenlUcmVlO1xuXHQgICAg
fSBlbHNlIHtcblx0ICAgICAgdmFyIHRhZ09wZW4gPSB0aGlzLl9jcmVhdGVPcGVuVGFnTWFya3Vw
QW5kUHV0TGlzdGVuZXJzKHRyYW5zYWN0aW9uLCBwcm9wcyk7XG5cdCAgICAgIHZhciB0YWdDb250
ZW50ID0gdGhpcy5fY3JlYXRlQ29udGVudE1hcmt1cCh0cmFuc2FjdGlvbiwgcHJvcHMsIGNvbnRl
eHQpO1xuXHQgICAgICBpZiAoIXRhZ0NvbnRlbnQgJiYgb21pdHRlZENsb3NlVGFnc1t0aGlzLl90
YWddKSB7XG5cdCAgICAgICAgbW91bnRJbWFnZSA9IHRhZ09wZW4gKyAnLz4nO1xuXHQgICAgICB9
IGVsc2Uge1xuXHQgICAgICAgIG1vdW50SW1hZ2UgPSB0YWdPcGVuICsgJz4nICsgdGFnQ29udGVu
dCArICc8LycgKyB0aGlzLl9jdXJyZW50RWxlbWVudC50eXBlICsgJz4nO1xuXHQgICAgICB9XG5c
dCAgICB9XG5cdFxuXHQgICAgc3dpdGNoICh0aGlzLl90YWcpIHtcblx0ICAgICAgY2FzZSAnaW5w
dXQnOlxuXHQgICAgICAgIHRyYW5zYWN0aW9uLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUo
aW5wdXRQb3N0TW91bnQsIHRoaXMpO1xuXHQgICAgICAgIGlmIChwcm9wcy5hdXRvRm9jdXMpIHtc
blx0ICAgICAgICAgIHRyYW5zYWN0aW9uLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUoQXV0
b0ZvY3VzVXRpbHMuZm9jdXNET01Db21wb25lbnQsIHRoaXMpO1xuXHQgICAgICAgIH1cblx0ICAg
ICAgICBicmVhaztcblx0ICAgICAgY2FzZSAndGV4dGFyZWEnOlxuXHQgICAgICAgIHRyYW5zYWN0
aW9uLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUodGV4dGFyZWFQb3N0TW91bnQsIHRoaXMp
O1xuXHQgICAgICAgIGlmIChwcm9wcy5hdXRvRm9jdXMpIHtcblx0ICAgICAgICAgIHRyYW5zYWN0
aW9uLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUoQXV0b0ZvY3VzVXRpbHMuZm9jdXNET01D
b21wb25lbnQsIHRoaXMpO1xuXHQgICAgICAgIH1cblx0ICAgICAgICBicmVhaztcblx0ICAgICAg
Y2FzZSAnc2VsZWN0Jzpcblx0ICAgICAgICBpZiAocHJvcHMuYXV0b0ZvY3VzKSB7XG5cdCAgICAg
ICAgICB0cmFuc2FjdGlvbi5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKEF1dG9Gb2N1c1V0
aWxzLmZvY3VzRE9NQ29tcG9uZW50LCB0aGlzKTtcblx0ICAgICAgICB9XG5cdCAgICAgICAgYnJl
YWs7XG5cdCAgICAgIGNhc2UgJ2J1dHRvbic6XG5cdCAgICAgICAgaWYgKHByb3BzLmF1dG9Gb2N1
cykge1xuXHQgICAgICAgICAgdHJhbnNhY3Rpb24uZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1
ZShBdXRvRm9jdXNVdGlscy5mb2N1c0RPTUNvbXBvbmVudCwgdGhpcyk7XG5cdCAgICAgICAgfVxu
XHQgICAgICAgIGJyZWFrO1xuXHQgICAgICBjYXNlICdvcHRpb24nOlxuXHQgICAgICAgIHRyYW5z
YWN0aW9uLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUob3B0aW9uUG9zdE1vdW50LCB0aGlz
KTtcblx0ICAgICAgICBicmVhaztcblx0ICAgIH1cblx0XG5cdCAgICByZXR1cm4gbW91bnRJbWFn
ZTtcblx0ICB9LFxuXHRcblx0ICAvKipcblx0ICAgKiBDcmVhdGVzIG1hcmt1cCBmb3IgdGhlIG9w
ZW4gdGFnIGFuZCBhbGwgYXR0cmlidXRlcy5cblx0ICAgKlxuXHQgICAqIFRoaXMgbWV0aG9kIGhh
cyBzaWRlIGVmZmVjdHMgYmVjYXVzZSBldmVudHMgZ2V0IHJlZ2lzdGVyZWQuXG5cdCAgICpcblx0
ICAgKiBJdGVyYXRpbmcgb3ZlciBvYmplY3QgcHJvcGVydGllcyBpcyBmYXN0ZXIgdGhhbiBpdGVy
YXRpbmcgb3ZlciBhcnJheXMuXG5cdCAgICogQHNlZSBodHRwOi8vanNwZXJmLmNvbS9vYmotdnMt
YXJyLWl0ZXJhdGlvblxuXHQgICAqXG5cdCAgICogQHByaXZhdGVcblx0ICAgKiBAcGFyYW0ge1Jl
YWN0UmVjb25jaWxlVHJhbnNhY3Rpb258UmVhY3RTZXJ2ZXJSZW5kZXJpbmdUcmFuc2FjdGlvbn0g
dHJhbnNhY3Rpb25cblx0ICAgKiBAcGFyYW0ge29iamVjdH0gcHJvcHNcblx0ICAgKiBAcmV0dXJu
IHtzdHJpbmd9IE1hcmt1cCBvZiBvcGVuaW5nIHRhZy5cblx0ICAgKi9cblx0ICBfY3JlYXRlT3Bl
blRhZ01hcmt1cEFuZFB1dExpc3RlbmVyczogZnVuY3Rpb24gKHRyYW5zYWN0aW9uLCBwcm9wcykg
e1xuXHQgICAgdmFyIHJldCA9ICc8JyArIHRoaXMuX2N1cnJlbnRFbGVtZW50LnR5cGU7XG5cdFxu
XHQgICAgZm9yICh2YXIgcHJvcEtleSBpbiBwcm9wcykge1xuXHQgICAgICBpZiAoIXByb3BzLmhh
c093blByb3BlcnR5KHByb3BLZXkpKSB7XG5cdCAgICAgICAgY29udGludWU7XG5cdCAgICAgIH1c
blx0ICAgICAgdmFyIHByb3BWYWx1ZSA9IHByb3BzW3Byb3BLZXldO1xuXHQgICAgICBpZiAocHJv
cFZhbHVlID09IG51bGwpIHtcblx0ICAgICAgICBjb250aW51ZTtcblx0ICAgICAgfVxuXHQgICAg
ICBpZiAocmVnaXN0cmF0aW9uTmFtZU1vZHVsZXMuaGFzT3duUHJvcGVydHkocHJvcEtleSkpIHtc
blx0ICAgICAgICBpZiAocHJvcFZhbHVlKSB7XG5cdCAgICAgICAgICBlbnF1ZXVlUHV0TGlzdGVu
ZXIodGhpcywgcHJvcEtleSwgcHJvcFZhbHVlLCB0cmFuc2FjdGlvbik7XG5cdCAgICAgICAgfVxu
XHQgICAgICB9IGVsc2Uge1xuXHQgICAgICAgIGlmIChwcm9wS2V5ID09PSBTVFlMRSkge1xuXHQg
ICAgICAgICAgaWYgKHByb3BWYWx1ZSkge1xuXHQgICAgICAgICAgICBpZiAoZmFsc2UpIHtcblx0
ICAgICAgICAgICAgICAvLyBTZWUgYF91cGRhdGVET01Qcm9wZXJ0aWVzYC4gc3R5bGUgYmxvY2tc
blx0ICAgICAgICAgICAgICB0aGlzLl9wcmV2aW91c1N0eWxlID0gcHJvcFZhbHVlO1xuXHQgICAg
ICAgICAgICB9XG5cdCAgICAgICAgICAgIHByb3BWYWx1ZSA9IHRoaXMuX3ByZXZpb3VzU3R5bGVD
b3B5ID0gX2Fzc2lnbih7fSwgcHJvcHMuc3R5bGUpO1xuXHQgICAgICAgICAgfVxuXHQgICAgICAg
ICAgcHJvcFZhbHVlID0gQ1NTUHJvcGVydHlPcGVyYXRpb25zLmNyZWF0ZU1hcmt1cEZvclN0eWxl
cyhwcm9wVmFsdWUsIHRoaXMpO1xuXHQgICAgICAgIH1cblx0ICAgICAgICB2YXIgbWFya3VwID0g
bnVsbDtcblx0ICAgICAgICBpZiAodGhpcy5fdGFnICE9IG51bGwgJiYgaXNDdXN0b21Db21wb25l
bnQodGhpcy5fdGFnLCBwcm9wcykpIHtcblx0ICAgICAgICAgIGlmICghUkVTRVJWRURfUFJPUFMu
aGFzT3duUHJvcGVydHkocHJvcEtleSkpIHtcblx0ICAgICAgICAgICAgbWFya3VwID0gRE9NUHJv
cGVydHlPcGVyYXRpb25zLmNyZWF0ZU1hcmt1cEZvckN1c3RvbUF0dHJpYnV0ZShwcm9wS2V5LCBw
cm9wVmFsdWUpO1xuXHQgICAgICAgICAgfVxuXHQgICAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAg
ICBtYXJrdXAgPSBET01Qcm9wZXJ0eU9wZXJhdGlvbnMuY3JlYXRlTWFya3VwRm9yUHJvcGVydHko
cHJvcEtleSwgcHJvcFZhbHVlKTtcblx0ICAgICAgICB9XG5cdCAgICAgICAgaWYgKG1hcmt1cCkg
e1xuXHQgICAgICAgICAgcmV0ICs9ICcgJyArIG1hcmt1cDtcblx0ICAgICAgICB9XG5cdCAgICAg
IH1cblx0ICAgIH1cblx0XG5cdCAgICAvLyBGb3Igc3RhdGljIHBhZ2VzLCBubyBuZWVkIHRvIHB1
dCBSZWFjdCBJRCBhbmQgY2hlY2tzdW0uIFNhdmVzIGxvdHMgb2Zcblx0ICAgIC8vIGJ5dGVzLlxu
XHQgICAgaWYgKHRyYW5zYWN0aW9uLnJlbmRlclRvU3RhdGljTWFya3VwKSB7XG5cdCAgICAgIHJl
dHVybiByZXQ7XG5cdCAgICB9XG5cdFxuXHQgICAgaWYgKCF0aGlzLl9ob3N0UGFyZW50KSB7XG5c
dCAgICAgIHJldCArPSAnICcgKyBET01Qcm9wZXJ0eU9wZXJhdGlvbnMuY3JlYXRlTWFya3VwRm9y
Um9vdCgpO1xuXHQgICAgfVxuXHQgICAgcmV0ICs9ICcgJyArIERPTVByb3BlcnR5T3BlcmF0aW9u
cy5jcmVhdGVNYXJrdXBGb3JJRCh0aGlzLl9kb21JRCk7XG5cdCAgICByZXR1cm4gcmV0O1xuXHQg
IH0sXG5cdFxuXHQgIC8qKlxuXHQgICAqIENyZWF0ZXMgbWFya3VwIGZvciB0aGUgY29udGVudCBi
ZXR3ZWVuIHRoZSB0YWdzLlxuXHQgICAqXG5cdCAgICogQHByaXZhdGVcblx0ICAgKiBAcGFyYW0g
e1JlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb258UmVhY3RTZXJ2ZXJSZW5kZXJpbmdUcmFuc2FjdGlv
bn0gdHJhbnNhY3Rpb25cblx0ICAgKiBAcGFyYW0ge29iamVjdH0gcHJvcHNcblx0ICAgKiBAcGFy
YW0ge29iamVjdH0gY29udGV4dFxuXHQgICAqIEByZXR1cm4ge3N0cmluZ30gQ29udGVudCBtYXJr
dXAuXG5cdCAgICovXG5cdCAgX2NyZWF0ZUNvbnRlbnRNYXJrdXA6IGZ1bmN0aW9uICh0cmFuc2Fj
dGlvbiwgcHJvcHMsIGNvbnRleHQpIHtcblx0ICAgIHZhciByZXQgPSAnJztcblx0XG5cdCAgICAv
LyBJbnRlbnRpb25hbCB1c2Ugb2YgIT0gdG8gYXZvaWQgY2F0Y2hpbmcgemVyby9mYWxzZS5cblx0
ICAgIHZhciBpbm5lckhUTUwgPSBwcm9wcy5kYW5nZXJvdXNseVNldElubmVySFRNTDtcblx0ICAg
IGlmIChpbm5lckhUTUwgIT0gbnVsbCkge1xuXHQgICAgICBpZiAoaW5uZXJIVE1MLl9faHRtbCAh
PSBudWxsKSB7XG5cdCAgICAgICAgcmV0ID0gaW5uZXJIVE1MLl9faHRtbDtcblx0ICAgICAgfVxu
XHQgICAgfSBlbHNlIHtcblx0ICAgICAgdmFyIGNvbnRlbnRUb1VzZSA9IENPTlRFTlRfVFlQRVNb
dHlwZW9mIHByb3BzLmNoaWxkcmVuXSA/IHByb3BzLmNoaWxkcmVuIDogbnVsbDtcblx0ICAgICAg
dmFyIGNoaWxkcmVuVG9Vc2UgPSBjb250ZW50VG9Vc2UgIT0gbnVsbCA/IG51bGwgOiBwcm9wcy5j
aGlsZHJlbjtcblx0ICAgICAgaWYgKGNvbnRlbnRUb1VzZSAhPSBudWxsKSB7XG5cdCAgICAgICAg
Ly8gVE9ETzogVmFsaWRhdGUgdGhhdCB0ZXh0IGlzIGFsbG93ZWQgYXMgYSBjaGlsZCBvZiB0aGlz
IG5vZGVcblx0ICAgICAgICByZXQgPSBlc2NhcGVUZXh0Q29udGVudEZvckJyb3dzZXIoY29udGVu
dFRvVXNlKTtcblx0ICAgICAgICBpZiAoZmFsc2UpIHtcblx0ICAgICAgICAgIHNldEFuZFZhbGlk
YXRlQ29udGVudENoaWxkRGV2LmNhbGwodGhpcywgY29udGVudFRvVXNlKTtcblx0ICAgICAgICB9
XG5cdCAgICAgIH0gZWxzZSBpZiAoY2hpbGRyZW5Ub1VzZSAhPSBudWxsKSB7XG5cdCAgICAgICAg
dmFyIG1vdW50SW1hZ2VzID0gdGhpcy5tb3VudENoaWxkcmVuKGNoaWxkcmVuVG9Vc2UsIHRyYW5z
YWN0aW9uLCBjb250ZXh0KTtcblx0ICAgICAgICByZXQgPSBtb3VudEltYWdlcy5qb2luKCcnKTtc
blx0ICAgICAgfVxuXHQgICAgfVxuXHQgICAgaWYgKG5ld2xpbmVFYXRpbmdUYWdzW3RoaXMuX3Rh
Z10gJiYgcmV0LmNoYXJBdCgwKSA9PT0gJ1xcbicpIHtcblx0ICAgICAgLy8gdGV4dC9odG1sIGln
bm9yZXMgdGhlIGZpcnN0IGNoYXJhY3RlciBpbiB0aGVzZSB0YWdzIGlmIGl0J3MgYSBuZXdsaW5l
XG5cdCAgICAgIC8vIFByZWZlciB0byBicmVhayBhcHBsaWNhdGlvbi94bWwgb3ZlciB0ZXh0L2h0
bWwgKGZvciBub3cpIGJ5IGFkZGluZ1xuXHQgICAgICAvLyBhIG5ld2xpbmUgc3BlY2lmaWNhbGx5
IHRvIGdldCBlYXRlbiBieSB0aGUgcGFyc2VyLiAoQWx0ZXJuYXRlbHkgZm9yXG5cdCAgICAgIC8v
IHRleHRhcmVhcywgcmVwbGFjaW5nIFwiXlxcblwiIHdpdGggXCJcXHJcXG5cIiBkb2Vzbid0IGdl
dCBlYXRlbiwgYW5kIHRoZSBmaXJzdFxuXHQgICAgICAvLyBcXHIgaXMgbm9ybWFsaXplZCBvdXQg
YnkgSFRNTFRleHRBcmVhRWxlbWVudCN2YWx1ZS4pXG5cdCAgICAgIC8vIFNlZTogPGh0dHA6Ly93
d3cudzMub3JnL1RSL2h0bWwtcG9seWdsb3QvI25ld2xpbmVzLWluLXRleHRhcmVhLWFuZC1wcmU+
XG5cdCAgICAgIC8vIFNlZTogPGh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw1L3N5bnRheC5odG1s
I2VsZW1lbnQtcmVzdHJpY3Rpb25zPlxuXHQgICAgICAvLyBTZWU6IDxodHRwOi8vd3d3LnczLm9y
Zy9UUi9odG1sNS9zeW50YXguaHRtbCNuZXdsaW5lcz5cblx0ICAgICAgLy8gU2VlOiBQYXJzaW5n
IG9mIFwidGV4dGFyZWFcIiBcImxpc3RpbmdcIiBhbmQgXCJwcmVcIiBlbGVtZW50c1xuXHQgICAg
ICAvLyAgZnJvbSA8aHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDUvc3ludGF4Lmh0bWwjcGFyc2lu
Zy1tYWluLWluYm9keT5cblx0ICAgICAgcmV0dXJuICdcXG4nICsgcmV0O1xuXHQgICAgfSBlbHNl
IHtcblx0ICAgICAgcmV0dXJuIHJldDtcblx0ICAgIH1cblx0ICB9LFxuXHRcblx0ICBfY3JlYXRl
SW5pdGlhbENoaWxkcmVuOiBmdW5jdGlvbiAodHJhbnNhY3Rpb24sIHByb3BzLCBjb250ZXh0LCBs
YXp5VHJlZSkge1xuXHQgICAgLy8gSW50ZW50aW9uYWwgdXNlIG9mICE9IHRvIGF2b2lkIGNhdGNo
aW5nIHplcm8vZmFsc2UuXG5cdCAgICB2YXIgaW5uZXJIVE1MID0gcHJvcHMuZGFuZ2Vyb3VzbHlT
ZXRJbm5lckhUTUw7XG5cdCAgICBpZiAoaW5uZXJIVE1MICE9IG51bGwpIHtcblx0ICAgICAgaWYg
KGlubmVySFRNTC5fX2h0bWwgIT0gbnVsbCkge1xuXHQgICAgICAgIERPTUxhenlUcmVlLnF1ZXVl
SFRNTChsYXp5VHJlZSwgaW5uZXJIVE1MLl9faHRtbCk7XG5cdCAgICAgIH1cblx0ICAgIH0gZWxz
ZSB7XG5cdCAgICAgIHZhciBjb250ZW50VG9Vc2UgPSBDT05URU5UX1RZUEVTW3R5cGVvZiBwcm9w
cy5jaGlsZHJlbl0gPyBwcm9wcy5jaGlsZHJlbiA6IG51bGw7XG5cdCAgICAgIHZhciBjaGlsZHJl
blRvVXNlID0gY29udGVudFRvVXNlICE9IG51bGwgPyBudWxsIDogcHJvcHMuY2hpbGRyZW47XG5c
dCAgICAgIC8vIFRPRE86IFZhbGlkYXRlIHRoYXQgdGV4dCBpcyBhbGxvd2VkIGFzIGEgY2hpbGQg
b2YgdGhpcyBub2RlXG5cdCAgICAgIGlmIChjb250ZW50VG9Vc2UgIT0gbnVsbCkge1xuXHQgICAg
ICAgIC8vIEF2b2lkIHNldHRpbmcgdGV4dENvbnRlbnQgd2hlbiB0aGUgdGV4dCBpcyBlbXB0eS4g
SW4gSUUxMSBzZXR0aW5nXG5cdCAgICAgICAgLy8gdGV4dENvbnRlbnQgb24gYSB0ZXh0IGFyZWEg
d2lsbCBjYXVzZSB0aGUgcGxhY2Vob2xkZXIgdG8gbm90XG5cdCAgICAgICAgLy8gc2hvdyB3aXRo
aW4gdGhlIHRleHRhcmVhIHVudGlsIGl0IGhhcyBiZWVuIGZvY3VzZWQgYW5kIGJsdXJyZWQgYWdh
aW4uXG5cdCAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0L2lzc3Vl
cy82NzMxI2lzc3VlY29tbWVudC0yNTQ4NzQ1NTNcblx0ICAgICAgICBpZiAoY29udGVudFRvVXNl
ICE9PSAnJykge1xuXHQgICAgICAgICAgaWYgKGZhbHNlKSB7XG5cdCAgICAgICAgICAgIHNldEFu
ZFZhbGlkYXRlQ29udGVudENoaWxkRGV2LmNhbGwodGhpcywgY29udGVudFRvVXNlKTtcblx0ICAg
ICAgICAgIH1cblx0ICAgICAgICAgIERPTUxhenlUcmVlLnF1ZXVlVGV4dChsYXp5VHJlZSwgY29u
dGVudFRvVXNlKTtcblx0ICAgICAgICB9XG5cdCAgICAgIH0gZWxzZSBpZiAoY2hpbGRyZW5Ub1Vz
ZSAhPSBudWxsKSB7XG5cdCAgICAgICAgdmFyIG1vdW50SW1hZ2VzID0gdGhpcy5tb3VudENoaWxk
cmVuKGNoaWxkcmVuVG9Vc2UsIHRyYW5zYWN0aW9uLCBjb250ZXh0KTtcblx0ICAgICAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IG1vdW50SW1hZ2VzLmxlbmd0aDsgaSsrKSB7XG5cdCAgICAgICAgICBE
T01MYXp5VHJlZS5xdWV1ZUNoaWxkKGxhenlUcmVlLCBtb3VudEltYWdlc1tpXSk7XG5cdCAgICAg
ICAgfVxuXHQgICAgICB9XG5cdCAgICB9XG5cdCAgfSxcblx0XG5cdCAgLyoqXG5cdCAgICogUmVj
ZWl2ZXMgYSBuZXh0IGVsZW1lbnQgYW5kIHVwZGF0ZXMgdGhlIGNvbXBvbmVudC5cblx0ICAgKlxu
XHQgICAqIEBpbnRlcm5hbFxuXHQgICAqIEBwYXJhbSB7UmVhY3RFbGVtZW50fSBuZXh0RWxlbWVu
dFxuXHQgICAqIEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbnxSZWFjdFNlcnZlclJl
bmRlcmluZ1RyYW5zYWN0aW9ufSB0cmFuc2FjdGlvblxuXHQgICAqIEBwYXJhbSB7b2JqZWN0fSBj
b250ZXh0XG5cdCAgICovXG5cdCAgcmVjZWl2ZUNvbXBvbmVudDogZnVuY3Rpb24gKG5leHRFbGVt
ZW50LCB0cmFuc2FjdGlvbiwgY29udGV4dCkge1xuXHQgICAgdmFyIHByZXZFbGVtZW50ID0gdGhp
cy5fY3VycmVudEVsZW1lbnQ7XG5cdCAgICB0aGlzLl9jdXJyZW50RWxlbWVudCA9IG5leHRFbGVt
ZW50O1xuXHQgICAgdGhpcy51cGRhdGVDb21wb25lbnQodHJhbnNhY3Rpb24sIHByZXZFbGVtZW50
LCBuZXh0RWxlbWVudCwgY29udGV4dCk7XG5cdCAgfSxcblx0XG5cdCAgLyoqXG5cdCAgICogVXBk
YXRlcyBhIERPTSBjb21wb25lbnQgYWZ0ZXIgaXQgaGFzIGFscmVhZHkgYmVlbiBhbGxvY2F0ZWQg
YW5kXG5cdCAgICogYXR0YWNoZWQgdG8gdGhlIERPTS4gUmVjb25jaWxlcyB0aGUgcm9vdCBET00g
bm9kZSwgdGhlbiByZWN1cnNlcy5cblx0ICAgKlxuXHQgICAqIEBwYXJhbSB7UmVhY3RSZWNvbmNp
bGVUcmFuc2FjdGlvbn0gdHJhbnNhY3Rpb25cblx0ICAgKiBAcGFyYW0ge1JlYWN0RWxlbWVudH0g
cHJldkVsZW1lbnRcblx0ICAgKiBAcGFyYW0ge1JlYWN0RWxlbWVudH0gbmV4dEVsZW1lbnRcblx0
ICAgKiBAaW50ZXJuYWxcblx0ICAgKiBAb3ZlcnJpZGFibGVcblx0ICAgKi9cblx0ICB1cGRhdGVD
b21wb25lbnQ6IGZ1bmN0aW9uICh0cmFuc2FjdGlvbiwgcHJldkVsZW1lbnQsIG5leHRFbGVtZW50
LCBjb250ZXh0KSB7XG5cdCAgICB2YXIgbGFzdFByb3BzID0gcHJldkVsZW1lbnQucHJvcHM7XG5c
dCAgICB2YXIgbmV4dFByb3BzID0gdGhpcy5fY3VycmVudEVsZW1lbnQucHJvcHM7XG5cdFxuXHQg
ICAgc3dpdGNoICh0aGlzLl90YWcpIHtcblx0ICAgICAgY2FzZSAnaW5wdXQnOlxuXHQgICAgICAg
IGxhc3RQcm9wcyA9IFJlYWN0RE9NSW5wdXQuZ2V0SG9zdFByb3BzKHRoaXMsIGxhc3RQcm9wcyk7
XG5cdCAgICAgICAgbmV4dFByb3BzID0gUmVhY3RET01JbnB1dC5nZXRIb3N0UHJvcHModGhpcywg
bmV4dFByb3BzKTtcblx0ICAgICAgICBicmVhaztcblx0ICAgICAgY2FzZSAnb3B0aW9uJzpcblx0
ICAgICAgICBsYXN0UHJvcHMgPSBSZWFjdERPTU9wdGlvbi5nZXRIb3N0UHJvcHModGhpcywgbGFz
dFByb3BzKTtcblx0ICAgICAgICBuZXh0UHJvcHMgPSBSZWFjdERPTU9wdGlvbi5nZXRIb3N0UHJv
cHModGhpcywgbmV4dFByb3BzKTtcblx0ICAgICAgICBicmVhaztcblx0ICAgICAgY2FzZSAnc2Vs
ZWN0Jzpcblx0ICAgICAgICBsYXN0UHJvcHMgPSBSZWFjdERPTVNlbGVjdC5nZXRIb3N0UHJvcHMo
dGhpcywgbGFzdFByb3BzKTtcblx0ICAgICAgICBuZXh0UHJvcHMgPSBSZWFjdERPTVNlbGVjdC5n
ZXRIb3N0UHJvcHModGhpcywgbmV4dFByb3BzKTtcblx0ICAgICAgICBicmVhaztcblx0ICAgICAg
Y2FzZSAndGV4dGFyZWEnOlxuXHQgICAgICAgIGxhc3RQcm9wcyA9IFJlYWN0RE9NVGV4dGFyZWEu
Z2V0SG9zdFByb3BzKHRoaXMsIGxhc3RQcm9wcyk7XG5cdCAgICAgICAgbmV4dFByb3BzID0gUmVh
Y3RET01UZXh0YXJlYS5nZXRIb3N0UHJvcHModGhpcywgbmV4dFByb3BzKTtcblx0ICAgICAgICBi
cmVhaztcblx0ICAgIH1cblx0XG5cdCAgICBhc3NlcnRWYWxpZFByb3BzKHRoaXMsIG5leHRQcm9w
cyk7XG5cdCAgICB0aGlzLl91cGRhdGVET01Qcm9wZXJ0aWVzKGxhc3RQcm9wcywgbmV4dFByb3Bz
LCB0cmFuc2FjdGlvbik7XG5cdCAgICB0aGlzLl91cGRhdGVET01DaGlsZHJlbihsYXN0UHJvcHMs
IG5leHRQcm9wcywgdHJhbnNhY3Rpb24sIGNvbnRleHQpO1xuXHRcblx0ICAgIHN3aXRjaCAodGhp
cy5fdGFnKSB7XG5cdCAgICAgIGNhc2UgJ2lucHV0Jzpcblx0ICAgICAgICAvLyBVcGRhdGUgdGhl
IHdyYXBwZXIgYXJvdW5kIGlucHV0cyAqYWZ0ZXIqIHVwZGF0aW5nIHByb3BzLiBUaGlzIGhhcyB0
b1xuXHQgICAgICAgIC8vIGhhcHBlbiBhZnRlciBgX3VwZGF0ZURPTVByb3BlcnRpZXNgLiBPdGhl
cndpc2UgSFRNTDUgaW5wdXQgdmFsaWRhdGlvbnNcblx0ICAgICAgICAvLyByYWlzZSB3YXJuaW5n
cyBhbmQgcHJldmVudCB0aGUgbmV3IHZhbHVlIGZyb20gYmVpbmcgYXNzaWduZWQuXG5cdCAgICAg
ICAgUmVhY3RET01JbnB1dC51cGRhdGVXcmFwcGVyKHRoaXMpO1xuXHQgICAgICAgIGJyZWFrO1xu
XHQgICAgICBjYXNlICd0ZXh0YXJlYSc6XG5cdCAgICAgICAgUmVhY3RET01UZXh0YXJlYS51cGRh
dGVXcmFwcGVyKHRoaXMpO1xuXHQgICAgICAgIGJyZWFrO1xuXHQgICAgICBjYXNlICdzZWxlY3Qn
OlxuXHQgICAgICAgIC8vIDxzZWxlY3Q+IHZhbHVlIHVwZGF0ZSBuZWVkcyB0byBvY2N1ciBhZnRl
ciA8b3B0aW9uPiBjaGlsZHJlblxuXHQgICAgICAgIC8vIHJlY29uY2lsaWF0aW9uXG5cdCAgICAg
ICAgdHJhbnNhY3Rpb24uZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1ZShwb3N0VXBkYXRlU2Vs
ZWN0V3JhcHBlciwgdGhpcyk7XG5cdCAgICAgICAgYnJlYWs7XG5cdCAgICB9XG5cdCAgfSxcblx0
XG5cdCAgLyoqXG5cdCAgICogUmVjb25jaWxlcyB0aGUgcHJvcGVydGllcyBieSBkZXRlY3Rpbmcg
ZGlmZmVyZW5jZXMgaW4gcHJvcGVydHkgdmFsdWVzIGFuZFxuXHQgICAqIHVwZGF0aW5nIHRoZSBE
T00gYXMgbmVjZXNzYXJ5LiBUaGlzIGZ1bmN0aW9uIGlzIHByb2JhYmx5IHRoZSBzaW5nbGUgbW9z
dFxuXHQgICAqIGNyaXRpY2FsIHBhdGggZm9yIHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbi5cblx0
ICAgKlxuXHQgICAqIFRPRE86IEJlbmNobWFyayB3aGV0aGVyIGNoZWNraW5nIGZvciBjaGFuZ2Vk
IHZhbHVlcyBpbiBtZW1vcnkgYWN0dWFsbHlcblx0ICAgKiAgICAgICBpbXByb3ZlcyBwZXJmb3Jt
YW5jZSAoZXNwZWNpYWxseSBzdGF0aWNhbGx5IHBvc2l0aW9uZWQgZWxlbWVudHMpLlxuXHQgICAq
IFRPRE86IEJlbmNobWFyayB0aGUgZWZmZWN0cyBvZiBwdXR0aW5nIHRoaXMgYXQgdGhlIHRvcCBz
aW5jZSA5OSUgb2YgcHJvcHNcblx0ICAgKiAgICAgICBkbyBub3QgY2hhbmdlIGZvciBhIGdpdmVu
IHJlY29uY2lsaWF0aW9uLlxuXHQgICAqIFRPRE86IEJlbmNobWFyayBhcmVhcyB0aGF0IGNhbiBi
ZSBpbXByb3ZlZCB3aXRoIGNhY2hpbmcuXG5cdCAgICpcblx0ICAgKiBAcHJpdmF0ZVxuXHQgICAq
IEBwYXJhbSB7b2JqZWN0fSBsYXN0UHJvcHNcblx0ICAgKiBAcGFyYW0ge29iamVjdH0gbmV4dFBy
b3BzXG5cdCAgICogQHBhcmFtIHs/RE9NRWxlbWVudH0gbm9kZVxuXHQgICAqL1xuXHQgIF91cGRh
dGVET01Qcm9wZXJ0aWVzOiBmdW5jdGlvbiAobGFzdFByb3BzLCBuZXh0UHJvcHMsIHRyYW5zYWN0
aW9uKSB7XG5cdCAgICB2YXIgcHJvcEtleTtcblx0ICAgIHZhciBzdHlsZU5hbWU7XG5cdCAgICB2
YXIgc3R5bGVVcGRhdGVzO1xuXHQgICAgZm9yIChwcm9wS2V5IGluIGxhc3RQcm9wcykge1xuXHQg
ICAgICBpZiAobmV4dFByb3BzLmhhc093blByb3BlcnR5KHByb3BLZXkpIHx8ICFsYXN0UHJvcHMu
aGFzT3duUHJvcGVydHkocHJvcEtleSkgfHwgbGFzdFByb3BzW3Byb3BLZXldID09IG51bGwpIHtc
blx0ICAgICAgICBjb250aW51ZTtcblx0ICAgICAgfVxuXHQgICAgICBpZiAocHJvcEtleSA9PT0g
U1RZTEUpIHtcblx0ICAgICAgICB2YXIgbGFzdFN0eWxlID0gdGhpcy5fcHJldmlvdXNTdHlsZUNv
cHk7XG5cdCAgICAgICAgZm9yIChzdHlsZU5hbWUgaW4gbGFzdFN0eWxlKSB7XG5cdCAgICAgICAg
ICBpZiAobGFzdFN0eWxlLmhhc093blByb3BlcnR5KHN0eWxlTmFtZSkpIHtcblx0ICAgICAgICAg
ICAgc3R5bGVVcGRhdGVzID0gc3R5bGVVcGRhdGVzIHx8IHt9O1xuXHQgICAgICAgICAgICBzdHls
ZVVwZGF0ZXNbc3R5bGVOYW1lXSA9ICcnO1xuXHQgICAgICAgICAgfVxuXHQgICAgICAgIH1cblx0
ICAgICAgICB0aGlzLl9wcmV2aW91c1N0eWxlQ29weSA9IG51bGw7XG5cdCAgICAgIH0gZWxzZSBp
ZiAocmVnaXN0cmF0aW9uTmFtZU1vZHVsZXMuaGFzT3duUHJvcGVydHkocHJvcEtleSkpIHtcblx0
ICAgICAgICBpZiAobGFzdFByb3BzW3Byb3BLZXldKSB7XG5cdCAgICAgICAgICAvLyBPbmx5IGNh
bGwgZGVsZXRlTGlzdGVuZXIgaWYgdGhlcmUgd2FzIGEgbGlzdGVuZXIgcHJldmlvdXNseSBvclxu
XHQgICAgICAgICAgLy8gZWxzZSB3aWxsRGVsZXRlTGlzdGVuZXIgZ2V0cyBjYWxsZWQgd2hlbiB0
aGVyZSB3YXNuJ3QgYWN0dWFsbHkgYVxuXHQgICAgICAgICAgLy8gbGlzdGVuZXIgKGUuZy4sIG9u
Q2xpY2s9e251bGx9KVxuXHQgICAgICAgICAgZGVsZXRlTGlzdGVuZXIodGhpcywgcHJvcEtleSk7
XG5cdCAgICAgICAgfVxuXHQgICAgICB9IGVsc2UgaWYgKGlzQ3VzdG9tQ29tcG9uZW50KHRoaXMu
X3RhZywgbGFzdFByb3BzKSkge1xuXHQgICAgICAgIGlmICghUkVTRVJWRURfUFJPUFMuaGFzT3du
UHJvcGVydHkocHJvcEtleSkpIHtcblx0ICAgICAgICAgIERPTVByb3BlcnR5T3BlcmF0aW9ucy5k
ZWxldGVWYWx1ZUZvckF0dHJpYnV0ZShnZXROb2RlKHRoaXMpLCBwcm9wS2V5KTtcblx0ICAgICAg
ICB9XG5cdCAgICAgIH0gZWxzZSBpZiAoRE9NUHJvcGVydHkucHJvcGVydGllc1twcm9wS2V5XSB8
fCBET01Qcm9wZXJ0eS5pc0N1c3RvbUF0dHJpYnV0ZShwcm9wS2V5KSkge1xuXHQgICAgICAgIERP
TVByb3BlcnR5T3BlcmF0aW9ucy5kZWxldGVWYWx1ZUZvclByb3BlcnR5KGdldE5vZGUodGhpcyks
IHByb3BLZXkpO1xuXHQgICAgICB9XG5cdCAgICB9XG5cdCAgICBmb3IgKHByb3BLZXkgaW4gbmV4
dFByb3BzKSB7XG5cdCAgICAgIHZhciBuZXh0UHJvcCA9IG5leHRQcm9wc1twcm9wS2V5XTtcblx0
ICAgICAgdmFyIGxhc3RQcm9wID0gcHJvcEtleSA9PT0gU1RZTEUgPyB0aGlzLl9wcmV2aW91c1N0
eWxlQ29weSA6IGxhc3RQcm9wcyAhPSBudWxsID8gbGFzdFByb3BzW3Byb3BLZXldIDogdW5kZWZp
bmVkO1xuXHQgICAgICBpZiAoIW5leHRQcm9wcy5oYXNPd25Qcm9wZXJ0eShwcm9wS2V5KSB8fCBu
ZXh0UHJvcCA9PT0gbGFzdFByb3AgfHwgbmV4dFByb3AgPT0gbnVsbCAmJiBsYXN0UHJvcCA9PSBu
dWxsKSB7XG5cdCAgICAgICAgY29udGludWU7XG5cdCAgICAgIH1cblx0ICAgICAgaWYgKHByb3BL
ZXkgPT09IFNUWUxFKSB7XG5cdCAgICAgICAgaWYgKG5leHRQcm9wKSB7XG5cdCAgICAgICAgICBp
ZiAoZmFsc2UpIHtcblx0ICAgICAgICAgICAgY2hlY2tBbmRXYXJuRm9yTXV0YXRlZFN0eWxlKHRo
aXMuX3ByZXZpb3VzU3R5bGVDb3B5LCB0aGlzLl9wcmV2aW91c1N0eWxlLCB0aGlzKTtcblx0ICAg
ICAgICAgICAgdGhpcy5fcHJldmlvdXNTdHlsZSA9IG5leHRQcm9wO1xuXHQgICAgICAgICAgfVxu
XHQgICAgICAgICAgbmV4dFByb3AgPSB0aGlzLl9wcmV2aW91c1N0eWxlQ29weSA9IF9hc3NpZ24o
e30sIG5leHRQcm9wKTtcblx0ICAgICAgICB9IGVsc2Uge1xuXHQgICAgICAgICAgdGhpcy5fcHJl
dmlvdXNTdHlsZUNvcHkgPSBudWxsO1xuXHQgICAgICAgIH1cblx0ICAgICAgICBpZiAobGFzdFBy
b3ApIHtcblx0ICAgICAgICAgIC8vIFVuc2V0IHN0eWxlcyBvbiBgbGFzdFByb3BgIGJ1dCBub3Qg
b24gYG5leHRQcm9wYC5cblx0ICAgICAgICAgIGZvciAoc3R5bGVOYW1lIGluIGxhc3RQcm9wKSB7
XG5cdCAgICAgICAgICAgIGlmIChsYXN0UHJvcC5oYXNPd25Qcm9wZXJ0eShzdHlsZU5hbWUpICYm
ICghbmV4dFByb3AgfHwgIW5leHRQcm9wLmhhc093blByb3BlcnR5KHN0eWxlTmFtZSkpKSB7XG5c
dCAgICAgICAgICAgICAgc3R5bGVVcGRhdGVzID0gc3R5bGVVcGRhdGVzIHx8IHt9O1xuXHQgICAg
ICAgICAgICAgIHN0eWxlVXBkYXRlc1tzdHlsZU5hbWVdID0gJyc7XG5cdCAgICAgICAgICAgIH1c
blx0ICAgICAgICAgIH1cblx0ICAgICAgICAgIC8vIFVwZGF0ZSBzdHlsZXMgdGhhdCBjaGFuZ2Vk
IHNpbmNlIGBsYXN0UHJvcGAuXG5cdCAgICAgICAgICBmb3IgKHN0eWxlTmFtZSBpbiBuZXh0UHJv
cCkge1xuXHQgICAgICAgICAgICBpZiAobmV4dFByb3AuaGFzT3duUHJvcGVydHkoc3R5bGVOYW1l
KSAmJiBsYXN0UHJvcFtzdHlsZU5hbWVdICE9PSBuZXh0UHJvcFtzdHlsZU5hbWVdKSB7XG5cdCAg
ICAgICAgICAgICAgc3R5bGVVcGRhdGVzID0gc3R5bGVVcGRhdGVzIHx8IHt9O1xuXHQgICAgICAg
ICAgICAgIHN0eWxlVXBkYXRlc1tzdHlsZU5hbWVdID0gbmV4dFByb3Bbc3R5bGVOYW1lXTtcblx0
ICAgICAgICAgICAgfVxuXHQgICAgICAgICAgfVxuXHQgICAgICAgIH0gZWxzZSB7XG5cdCAgICAg
ICAgICAvLyBSZWxpZXMgb24gYHVwZGF0ZVN0eWxlc0J5SURgIG5vdCBtdXRhdGluZyBgc3R5bGVV
cGRhdGVzYC5cblx0ICAgICAgICAgIHN0eWxlVXBkYXRlcyA9IG5leHRQcm9wO1xuXHQgICAgICAg
IH1cblx0ICAgICAgfSBlbHNlIGlmIChyZWdpc3RyYXRpb25OYW1lTW9kdWxlcy5oYXNPd25Qcm9w
ZXJ0eShwcm9wS2V5KSkge1xuXHQgICAgICAgIGlmIChuZXh0UHJvcCkge1xuXHQgICAgICAgICAg
ZW5xdWV1ZVB1dExpc3RlbmVyKHRoaXMsIHByb3BLZXksIG5leHRQcm9wLCB0cmFuc2FjdGlvbik7
XG5cdCAgICAgICAgfSBlbHNlIGlmIChsYXN0UHJvcCkge1xuXHQgICAgICAgICAgZGVsZXRlTGlz
dGVuZXIodGhpcywgcHJvcEtleSk7XG5cdCAgICAgICAgfVxuXHQgICAgICB9IGVsc2UgaWYgKGlz
Q3VzdG9tQ29tcG9uZW50KHRoaXMuX3RhZywgbmV4dFByb3BzKSkge1xuXHQgICAgICAgIGlmICgh
UkVTRVJWRURfUFJPUFMuaGFzT3duUHJvcGVydHkocHJvcEtleSkpIHtcblx0ICAgICAgICAgIERP
TVByb3BlcnR5T3BlcmF0aW9ucy5zZXRWYWx1ZUZvckF0dHJpYnV0ZShnZXROb2RlKHRoaXMpLCBw
cm9wS2V5LCBuZXh0UHJvcCk7XG5cdCAgICAgICAgfVxuXHQgICAgICB9IGVsc2UgaWYgKERPTVBy
b3BlcnR5LnByb3BlcnRpZXNbcHJvcEtleV0gfHwgRE9NUHJvcGVydHkuaXNDdXN0b21BdHRyaWJ1
dGUocHJvcEtleSkpIHtcblx0ICAgICAgICB2YXIgbm9kZSA9IGdldE5vZGUodGhpcyk7XG5cdCAg
ICAgICAgLy8gSWYgd2UncmUgdXBkYXRpbmcgdG8gbnVsbCBvciB1bmRlZmluZWQsIHdlIHNob3Vs
ZCByZW1vdmUgdGhlIHByb3BlcnR5XG5cdCAgICAgICAgLy8gZnJvbSB0aGUgRE9NIG5vZGUgaW5z
dGVhZCBvZiBpbmFkdmVydGVudGx5IHNldHRpbmcgdG8gYSBzdHJpbmcuIFRoaXNcblx0ICAgICAg
ICAvLyBicmluZ3MgdXMgaW4gbGluZSB3aXRoIHRoZSBzYW1lIGJlaGF2aW9yIHdlIGhhdmUgb24g
aW5pdGlhbCByZW5kZXIuXG5cdCAgICAgICAgaWYgKG5leHRQcm9wICE9IG51bGwpIHtcblx0ICAg
ICAgICAgIERPTVByb3BlcnR5T3BlcmF0aW9ucy5zZXRWYWx1ZUZvclByb3BlcnR5KG5vZGUsIHBy
b3BLZXksIG5leHRQcm9wKTtcblx0ICAgICAgICB9IGVsc2Uge1xuXHQgICAgICAgICAgRE9NUHJv
cGVydHlPcGVyYXRpb25zLmRlbGV0ZVZhbHVlRm9yUHJvcGVydHkobm9kZSwgcHJvcEtleSk7XG5c
dCAgICAgICAgfVxuXHQgICAgICB9XG5cdCAgICB9XG5cdCAgICBpZiAoc3R5bGVVcGRhdGVzKSB7
XG5cdCAgICAgIENTU1Byb3BlcnR5T3BlcmF0aW9ucy5zZXRWYWx1ZUZvclN0eWxlcyhnZXROb2Rl
KHRoaXMpLCBzdHlsZVVwZGF0ZXMsIHRoaXMpO1xuXHQgICAgfVxuXHQgIH0sXG5cdFxuXHQgIC8q
KlxuXHQgICAqIFJlY29uY2lsZXMgdGhlIGNoaWxkcmVuIHdpdGggdGhlIHZhcmlvdXMgcHJvcGVy
dGllcyB0aGF0IGFmZmVjdCB0aGVcblx0ICAgKiBjaGlsZHJlbiBjb250ZW50LlxuXHQgICAqXG5c
dCAgICogQHBhcmFtIHtvYmplY3R9IGxhc3RQcm9wc1xuXHQgICAqIEBwYXJhbSB7b2JqZWN0fSBu
ZXh0UHJvcHNcblx0ICAgKiBAcGFyYW0ge1JlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb259IHRyYW5z
YWN0aW9uXG5cdCAgICogQHBhcmFtIHtvYmplY3R9IGNvbnRleHRcblx0ICAgKi9cblx0ICBfdXBk
YXRlRE9NQ2hpbGRyZW46IGZ1bmN0aW9uIChsYXN0UHJvcHMsIG5leHRQcm9wcywgdHJhbnNhY3Rp
b24sIGNvbnRleHQpIHtcblx0ICAgIHZhciBsYXN0Q29udGVudCA9IENPTlRFTlRfVFlQRVNbdHlw
ZW9mIGxhc3RQcm9wcy5jaGlsZHJlbl0gPyBsYXN0UHJvcHMuY2hpbGRyZW4gOiBudWxsO1xuXHQg
ICAgdmFyIG5leHRDb250ZW50ID0gQ09OVEVOVF9UWVBFU1t0eXBlb2YgbmV4dFByb3BzLmNoaWxk
cmVuXSA/IG5leHRQcm9wcy5jaGlsZHJlbiA6IG51bGw7XG5cdFxuXHQgICAgdmFyIGxhc3RIdG1s
ID0gbGFzdFByb3BzLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MICYmIGxhc3RQcm9wcy5kYW5nZXJv
dXNseVNldElubmVySFRNTC5fX2h0bWw7XG5cdCAgICB2YXIgbmV4dEh0bWwgPSBuZXh0UHJvcHMu
ZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwgJiYgbmV4dFByb3BzLmRhbmdlcm91c2x5U2V0SW5uZXJI
VE1MLl9faHRtbDtcblx0XG5cdCAgICAvLyBOb3RlIHRoZSB1c2Ugb2YgYCE9YCB3aGljaCBjaGVj
a3MgZm9yIG51bGwgb3IgdW5kZWZpbmVkLlxuXHQgICAgdmFyIGxhc3RDaGlsZHJlbiA9IGxhc3RD
b250ZW50ICE9IG51bGwgPyBudWxsIDogbGFzdFByb3BzLmNoaWxkcmVuO1xuXHQgICAgdmFyIG5l
eHRDaGlsZHJlbiA9IG5leHRDb250ZW50ICE9IG51bGwgPyBudWxsIDogbmV4dFByb3BzLmNoaWxk
cmVuO1xuXHRcblx0ICAgIC8vIElmIHdlJ3JlIHN3aXRjaGluZyBmcm9tIGNoaWxkcmVuIHRvIGNv
bnRlbnQvaHRtbCBvciB2aWNlIHZlcnNhLCByZW1vdmVcblx0ICAgIC8vIHRoZSBvbGQgY29udGVu
dFxuXHQgICAgdmFyIGxhc3RIYXNDb250ZW50T3JIdG1sID0gbGFzdENvbnRlbnQgIT0gbnVsbCB8
fCBsYXN0SHRtbCAhPSBudWxsO1xuXHQgICAgdmFyIG5leHRIYXNDb250ZW50T3JIdG1sID0gbmV4
dENvbnRlbnQgIT0gbnVsbCB8fCBuZXh0SHRtbCAhPSBudWxsO1xuXHQgICAgaWYgKGxhc3RDaGls
ZHJlbiAhPSBudWxsICYmIG5leHRDaGlsZHJlbiA9PSBudWxsKSB7XG5cdCAgICAgIHRoaXMudXBk
YXRlQ2hpbGRyZW4obnVsbCwgdHJhbnNhY3Rpb24sIGNvbnRleHQpO1xuXHQgICAgfSBlbHNlIGlm
IChsYXN0SGFzQ29udGVudE9ySHRtbCAmJiAhbmV4dEhhc0NvbnRlbnRPckh0bWwpIHtcblx0ICAg
ICAgdGhpcy51cGRhdGVUZXh0Q29udGVudCgnJyk7XG5cdCAgICAgIGlmIChmYWxzZSkge1xuXHQg
ICAgICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vblNldENoaWxkcmVuKHRoaXMu
X2RlYnVnSUQsIFtdKTtcblx0ICAgICAgfVxuXHQgICAgfVxuXHRcblx0ICAgIGlmIChuZXh0Q29u
dGVudCAhPSBudWxsKSB7XG5cdCAgICAgIGlmIChsYXN0Q29udGVudCAhPT0gbmV4dENvbnRlbnQp
IHtcblx0ICAgICAgICB0aGlzLnVwZGF0ZVRleHRDb250ZW50KCcnICsgbmV4dENvbnRlbnQpO1xu
XHQgICAgICAgIGlmIChmYWxzZSkge1xuXHQgICAgICAgICAgc2V0QW5kVmFsaWRhdGVDb250ZW50
Q2hpbGREZXYuY2FsbCh0aGlzLCBuZXh0Q29udGVudCk7XG5cdCAgICAgICAgfVxuXHQgICAgICB9
XG5cdCAgICB9IGVsc2UgaWYgKG5leHRIdG1sICE9IG51bGwpIHtcblx0ICAgICAgaWYgKGxhc3RI
dG1sICE9PSBuZXh0SHRtbCkge1xuXHQgICAgICAgIHRoaXMudXBkYXRlTWFya3VwKCcnICsgbmV4
dEh0bWwpO1xuXHQgICAgICB9XG5cdCAgICAgIGlmIChmYWxzZSkge1xuXHQgICAgICAgIFJlYWN0
SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vblNldENoaWxkcmVuKHRoaXMuX2RlYnVnSUQsIFtd
KTtcblx0ICAgICAgfVxuXHQgICAgfSBlbHNlIGlmIChuZXh0Q2hpbGRyZW4gIT0gbnVsbCkge1xu
XHQgICAgICBpZiAoZmFsc2UpIHtcblx0ICAgICAgICBzZXRBbmRWYWxpZGF0ZUNvbnRlbnRDaGls
ZERldi5jYWxsKHRoaXMsIG51bGwpO1xuXHQgICAgICB9XG5cdFxuXHQgICAgICB0aGlzLnVwZGF0
ZUNoaWxkcmVuKG5leHRDaGlsZHJlbiwgdHJhbnNhY3Rpb24sIGNvbnRleHQpO1xuXHQgICAgfVxu
XHQgIH0sXG5cdFxuXHQgIGdldEhvc3ROb2RlOiBmdW5jdGlvbiAoKSB7XG5cdCAgICByZXR1cm4g
Z2V0Tm9kZSh0aGlzKTtcblx0ICB9LFxuXHRcblx0ICAvKipcblx0ICAgKiBEZXN0cm95cyBhbGwg
ZXZlbnQgcmVnaXN0cmF0aW9ucyBmb3IgdGhpcyBpbnN0YW5jZS4gRG9lcyBub3QgcmVtb3ZlIGZy
b21cblx0ICAgKiB0aGUgRE9NLiBUaGF0IG11c3QgYmUgZG9uZSBieSB0aGUgcGFyZW50LlxuXHQg
ICAqXG5cdCAgICogQGludGVybmFsXG5cdCAgICovXG5cdCAgdW5tb3VudENvbXBvbmVudDogZnVu
Y3Rpb24gKHNhZmVseSkge1xuXHQgICAgc3dpdGNoICh0aGlzLl90YWcpIHtcblx0ICAgICAgY2Fz
ZSAnYXVkaW8nOlxuXHQgICAgICBjYXNlICdmb3JtJzpcblx0ICAgICAgY2FzZSAnaWZyYW1lJzpc
blx0ICAgICAgY2FzZSAnaW1nJzpcblx0ICAgICAgY2FzZSAnbGluayc6XG5cdCAgICAgIGNhc2Ug
J29iamVjdCc6XG5cdCAgICAgIGNhc2UgJ3NvdXJjZSc6XG5cdCAgICAgIGNhc2UgJ3ZpZGVvJzpc
blx0ICAgICAgICB2YXIgbGlzdGVuZXJzID0gdGhpcy5fd3JhcHBlclN0YXRlLmxpc3RlbmVycztc
blx0ICAgICAgICBpZiAobGlzdGVuZXJzKSB7XG5cdCAgICAgICAgICBmb3IgKHZhciBpID0gMDsg
aSA8IGxpc3RlbmVycy5sZW5ndGg7IGkrKykge1xuXHQgICAgICAgICAgICBsaXN0ZW5lcnNbaV0u
cmVtb3ZlKCk7XG5cdCAgICAgICAgICB9XG5cdCAgICAgICAgfVxuXHQgICAgICAgIGJyZWFrO1xu
XHQgICAgICBjYXNlICdpbnB1dCc6XG5cdCAgICAgIGNhc2UgJ3RleHRhcmVhJzpcblx0ICAgICAg
ICBpbnB1dFZhbHVlVHJhY2tpbmcuc3RvcFRyYWNraW5nKHRoaXMpO1xuXHQgICAgICAgIGJyZWFr
O1xuXHQgICAgICBjYXNlICdodG1sJzpcblx0ICAgICAgY2FzZSAnaGVhZCc6XG5cdCAgICAgIGNh
c2UgJ2JvZHknOlxuXHQgICAgICAgIC8qKlxuXHQgICAgICAgICAqIENvbXBvbmVudHMgbGlrZSA8
aHRtbD4gPGhlYWQ+IGFuZCA8Ym9keT4gY2FuJ3QgYmUgcmVtb3ZlZCBvciBhZGRlZFxuXHQgICAg
ICAgICAqIGVhc2lseSBpbiBhIGNyb3NzLWJyb3dzZXIgd2F5LCBob3dldmVyIGl0J3MgdmFsdWFi
bGUgdG8gYmUgYWJsZSB0b1xuXHQgICAgICAgICAqIHRha2UgYWR2YW50YWdlIG9mIFJlYWN0J3Mg
cmVjb25jaWxpYXRpb24gZm9yIHN0eWxpbmcgYW5kIDx0aXRsZT5cblx0ICAgICAgICAgKiBtYW5h
Z2VtZW50LiBTbyB3ZSBqdXN0IGRvY3VtZW50IGl0IGFuZCB0aHJvdyBpbiBkYW5nZXJvdXMgY2Fz
ZXMuXG5cdCAgICAgICAgICovXG5cdCAgICAgICAgIHRydWUgPyAgZmFsc2UgPyBpbnZhcmlhbnQo
ZmFsc2UsICc8JXM+IHRyaWVkIHRvIHVubW91bnQuIEJlY2F1c2Ugb2YgY3Jvc3MtYnJvd3NlciBx
dWlya3MgaXQgaXMgaW1wb3NzaWJsZSB0byB1bm1vdW50IHNvbWUgdG9wLWxldmVsIGNvbXBvbmVu
dHMgKGVnIDxodG1sPiwgPGhlYWQ+LCBhbmQgPGJvZHk+KSByZWxpYWJseSBhbmQgZWZmaWNpZW50
bHkuIFRvIGZpeCB0aGlzLCBoYXZlIGEgc2luZ2xlIHRvcC1sZXZlbCBjb21wb25lbnQgdGhhdCBu
ZXZlciB1bm1vdW50cyByZW5kZXIgdGhlc2UgZWxlbWVudHMuJywgdGhpcy5fdGFnKSA6IF9wcm9k
SW52YXJpYW50KCc2NicsIHRoaXMuX3RhZykgOiB2b2lkIDA7XG5cdCAgICAgICAgYnJlYWs7XG5c
dCAgICB9XG5cdFxuXHQgICAgdGhpcy51bm1vdW50Q2hpbGRyZW4oc2FmZWx5KTtcblx0ICAgIFJl
YWN0RE9NQ29tcG9uZW50VHJlZS51bmNhY2hlTm9kZSh0aGlzKTtcblx0ICAgIEV2ZW50UGx1Z2lu
SHViLmRlbGV0ZUFsbExpc3RlbmVycyh0aGlzKTtcblx0ICAgIHRoaXMuX3Jvb3ROb2RlSUQgPSAw
O1xuXHQgICAgdGhpcy5fZG9tSUQgPSAwO1xuXHQgICAgdGhpcy5fd3JhcHBlclN0YXRlID0gbnVs
bDtcblx0XG5cdCAgICBpZiAoZmFsc2UpIHtcblx0ICAgICAgc2V0QW5kVmFsaWRhdGVDb250ZW50
Q2hpbGREZXYuY2FsbCh0aGlzLCBudWxsKTtcblx0ICAgIH1cblx0ICB9LFxuXHRcblx0ICBnZXRQ
dWJsaWNJbnN0YW5jZTogZnVuY3Rpb24gKCkge1xuXHQgICAgcmV0dXJuIGdldE5vZGUodGhpcyk7
XG5cdCAgfVxuXHR9O1xuXHRcblx0X2Fzc2lnbihSZWFjdERPTUNvbXBvbmVudC5wcm90b3R5cGUs
IFJlYWN0RE9NQ29tcG9uZW50Lk1peGluLCBSZWFjdE11bHRpQ2hpbGQuTWl4aW4pO1xuXHRcblx0
bW9kdWxlLmV4cG9ydHMgPSBSZWFjdERPTUNvbXBvbmVudDtcblxuLyoqKi8gfSxcbi8qIDEzOSAq
L1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7
XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5c
dCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMg
bGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBM
SUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFu
IGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4g
dGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqL1xuXHRc
blx0J3VzZSBzdHJpY3QnO1xuXHRcblx0dmFyIHZhbGlkYXRlRE9NTmVzdGluZyA9IF9fd2VicGFj
a19yZXF1aXJlX18oNDkpO1xuXHRcblx0dmFyIERPQ19OT0RFX1RZUEUgPSA5O1xuXHRcblx0ZnVu
Y3Rpb24gUmVhY3RET01Db250YWluZXJJbmZvKHRvcExldmVsV3JhcHBlciwgbm9kZSkge1xuXHQg
IHZhciBpbmZvID0ge1xuXHQgICAgX3RvcExldmVsV3JhcHBlcjogdG9wTGV2ZWxXcmFwcGVyLFxu
XHQgICAgX2lkQ291bnRlcjogMSxcblx0ICAgIF9vd25lckRvY3VtZW50OiBub2RlID8gbm9kZS5u
b2RlVHlwZSA9PT0gRE9DX05PREVfVFlQRSA/IG5vZGUgOiBub2RlLm93bmVyRG9jdW1lbnQgOiBu
dWxsLFxuXHQgICAgX25vZGU6IG5vZGUsXG5cdCAgICBfdGFnOiBub2RlID8gbm9kZS5ub2RlTmFt
ZS50b0xvd2VyQ2FzZSgpIDogbnVsbCxcblx0ICAgIF9uYW1lc3BhY2VVUkk6IG5vZGUgPyBub2Rl
Lm5hbWVzcGFjZVVSSSA6IG51bGxcblx0ICB9O1xuXHQgIGlmIChmYWxzZSkge1xuXHQgICAgaW5m
by5fYW5jZXN0b3JJbmZvID0gbm9kZSA/IHZhbGlkYXRlRE9NTmVzdGluZy51cGRhdGVkQW5jZXN0
b3JJbmZvKG51bGwsIGluZm8uX3RhZywgbnVsbCkgOiBudWxsO1xuXHQgIH1cblx0ICByZXR1cm4g
aW5mbztcblx0fVxuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBSZWFjdERPTUNvbnRhaW5lckluZm87
XG5cbi8qKiovIH0sXG4vKiAxNDAgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywg
X193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxNC1wcmVz
ZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQg
KiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5z
ZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBv
ZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCBy
aWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0
b3J5LlxuXHQgKlxuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdHZhciBfYXNzaWdu
ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0KTtcblx0XG5cdHZhciBET01MYXp5VHJlZSA9IF9fd2Vi
cGFja19yZXF1aXJlX18oMTQpO1xuXHR2YXIgUmVhY3RET01Db21wb25lbnRUcmVlID0gX193ZWJw
YWNrX3JlcXVpcmVfXyg1KTtcblx0XG5cdHZhciBSZWFjdERPTUVtcHR5Q29tcG9uZW50ID0gZnVu
Y3Rpb24gKGluc3RhbnRpYXRlKSB7XG5cdCAgLy8gUmVhY3RDb21wb3NpdGVDb21wb25lbnQgdXNl
cyB0aGlzOlxuXHQgIHRoaXMuX2N1cnJlbnRFbGVtZW50ID0gbnVsbDtcblx0ICAvLyBSZWFjdERP
TUNvbXBvbmVudFRyZWUgdXNlcyB0aGVzZTpcblx0ICB0aGlzLl9ob3N0Tm9kZSA9IG51bGw7XG5c
dCAgdGhpcy5faG9zdFBhcmVudCA9IG51bGw7XG5cdCAgdGhpcy5faG9zdENvbnRhaW5lckluZm8g
PSBudWxsO1xuXHQgIHRoaXMuX2RvbUlEID0gMDtcblx0fTtcblx0X2Fzc2lnbihSZWFjdERPTUVt
cHR5Q29tcG9uZW50LnByb3RvdHlwZSwge1xuXHQgIG1vdW50Q29tcG9uZW50OiBmdW5jdGlvbiAo
dHJhbnNhY3Rpb24sIGhvc3RQYXJlbnQsIGhvc3RDb250YWluZXJJbmZvLCBjb250ZXh0KSB7XG5c
dCAgICB2YXIgZG9tSUQgPSBob3N0Q29udGFpbmVySW5mby5faWRDb3VudGVyKys7XG5cdCAgICB0
aGlzLl9kb21JRCA9IGRvbUlEO1xuXHQgICAgdGhpcy5faG9zdFBhcmVudCA9IGhvc3RQYXJlbnQ7
XG5cdCAgICB0aGlzLl9ob3N0Q29udGFpbmVySW5mbyA9IGhvc3RDb250YWluZXJJbmZvO1xuXHRc
blx0ICAgIHZhciBub2RlVmFsdWUgPSAnIHJlYWN0LWVtcHR5OiAnICsgdGhpcy5fZG9tSUQgKyAn
ICc7XG5cdCAgICBpZiAodHJhbnNhY3Rpb24udXNlQ3JlYXRlRWxlbWVudCkge1xuXHQgICAgICB2
YXIgb3duZXJEb2N1bWVudCA9IGhvc3RDb250YWluZXJJbmZvLl9vd25lckRvY3VtZW50O1xuXHQg
ICAgICB2YXIgbm9kZSA9IG93bmVyRG9jdW1lbnQuY3JlYXRlQ29tbWVudChub2RlVmFsdWUpO1xu
XHQgICAgICBSZWFjdERPTUNvbXBvbmVudFRyZWUucHJlY2FjaGVOb2RlKHRoaXMsIG5vZGUpO1xu
XHQgICAgICByZXR1cm4gRE9NTGF6eVRyZWUobm9kZSk7XG5cdCAgICB9IGVsc2Uge1xuXHQgICAg
ICBpZiAodHJhbnNhY3Rpb24ucmVuZGVyVG9TdGF0aWNNYXJrdXApIHtcblx0ICAgICAgICAvLyBO
b3JtYWxseSB3ZSdkIGluc2VydCBhIGNvbW1lbnQgbm9kZSwgYnV0IHNpbmNlIHRoaXMgaXMgYSBz
aXR1YXRpb25cblx0ICAgICAgICAvLyB3aGVyZSBSZWFjdCB3b24ndCB0YWtlIG92ZXIgKHN0YXRp
YyBwYWdlcyksIHdlIGNhbiBzaW1wbHkgcmV0dXJuXG5cdCAgICAgICAgLy8gbm90aGluZy5cblx0
ICAgICAgICByZXR1cm4gJyc7XG5cdCAgICAgIH1cblx0ICAgICAgcmV0dXJuICc8IS0tJyArIG5v
ZGVWYWx1ZSArICctLT4nO1xuXHQgICAgfVxuXHQgIH0sXG5cdCAgcmVjZWl2ZUNvbXBvbmVudDog
ZnVuY3Rpb24gKCkge30sXG5cdCAgZ2V0SG9zdE5vZGU6IGZ1bmN0aW9uICgpIHtcblx0ICAgIHJl
dHVybiBSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0Tm9kZUZyb21JbnN0YW5jZSh0aGlzKTtcblx0
ICB9LFxuXHQgIHVubW91bnRDb21wb25lbnQ6IGZ1bmN0aW9uICgpIHtcblx0ICAgIFJlYWN0RE9N
Q29tcG9uZW50VHJlZS51bmNhY2hlTm9kZSh0aGlzKTtcblx0ICB9XG5cdH0pO1xuXHRcblx0bW9k
dWxlLmV4cG9ydHMgPSBSZWFjdERPTUVtcHR5Q29tcG9uZW50O1xuXG4vKioqLyB9LFxuLyogMTQx
ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuXHQvKipcblx0ICogQ29w
eXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNl
cnZlZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUg
QlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUg
cm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxu
XHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGlu
IHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpcblx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5c
dFxuXHR2YXIgUmVhY3RET01GZWF0dXJlRmxhZ3MgPSB7XG5cdCAgdXNlQ3JlYXRlRWxlbWVudDog
dHJ1ZSxcblx0ICB1c2VGaWJlcjogZmFsc2Vcblx0fTtcblx0XG5cdG1vZHVsZS5leHBvcnRzID0g
UmVhY3RET01GZWF0dXJlRmxhZ3M7XG5cbi8qKiovIH0sXG4vKiAxNDIgKi9cbi8qKiovIGZ1bmN0
aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8qKlxuXHQg
KiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRz
IHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVy
IHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxlIGlu
IHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdy
YW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZp
bGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0
Jztcblx0XG5cdHZhciBET01DaGlsZHJlbk9wZXJhdGlvbnMgPSBfX3dlYnBhY2tfcmVxdWlyZV9f
KDM0KTtcblx0dmFyIFJlYWN0RE9NQ29tcG9uZW50VHJlZSA9IF9fd2VicGFja19yZXF1aXJlX18o
NSk7XG5cdFxuXHQvKipcblx0ICogT3BlcmF0aW9ucyB1c2VkIHRvIHByb2Nlc3MgdXBkYXRlcyB0
byBET00gbm9kZXMuXG5cdCAqL1xuXHR2YXIgUmVhY3RET01JRE9wZXJhdGlvbnMgPSB7XG5cdCAg
LyoqXG5cdCAgICogVXBkYXRlcyBhIGNvbXBvbmVudCdzIGNoaWxkcmVuIGJ5IHByb2Nlc3Npbmcg
YSBzZXJpZXMgb2YgdXBkYXRlcy5cblx0ICAgKlxuXHQgICAqIEBwYXJhbSB7YXJyYXk8b2JqZWN0
Pn0gdXBkYXRlcyBMaXN0IG9mIHVwZGF0ZSBjb25maWd1cmF0aW9ucy5cblx0ICAgKiBAaW50ZXJu
YWxcblx0ICAgKi9cblx0ICBkYW5nZXJvdXNseVByb2Nlc3NDaGlsZHJlblVwZGF0ZXM6IGZ1bmN0
aW9uIChwYXJlbnRJbnN0LCB1cGRhdGVzKSB7XG5cdCAgICB2YXIgbm9kZSA9IFJlYWN0RE9NQ29t
cG9uZW50VHJlZS5nZXROb2RlRnJvbUluc3RhbmNlKHBhcmVudEluc3QpO1xuXHQgICAgRE9NQ2hp
bGRyZW5PcGVyYXRpb25zLnByb2Nlc3NVcGRhdGVzKG5vZGUsIHVwZGF0ZXMpO1xuXHQgIH1cblx0
fTtcblx0XG5cdG1vZHVsZS5leHBvcnRzID0gUmVhY3RET01JRE9wZXJhdGlvbnM7XG5cbi8qKiov
IH0sXG4vKiAxNDMgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNr
X3JlcXVpcmVfXykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNl
Ym9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNv
dXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBp
biB0aGVcblx0ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNv
dXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2Fu
IGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQg
KlxuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdHZhciBfcHJvZEludmFyaWFudCA9
IF9fd2VicGFja19yZXF1aXJlX18oMyksXG5cdCAgICBfYXNzaWduID0gX193ZWJwYWNrX3JlcXVp
cmVfXyg0KTtcblx0XG5cdHZhciBET01Qcm9wZXJ0eU9wZXJhdGlvbnMgPSBfX3dlYnBhY2tfcmVx
dWlyZV9fKDYwKTtcblx0dmFyIExpbmtlZFZhbHVlVXRpbHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9f
KDM5KTtcblx0dmFyIFJlYWN0RE9NQ29tcG9uZW50VHJlZSA9IF9fd2VicGFja19yZXF1aXJlX18o
NSk7XG5cdHZhciBSZWFjdFVwZGF0ZXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDkpO1xuXHRcblx0
dmFyIGludmFyaWFudCA9IF9fd2VicGFja19yZXF1aXJlX18oMSk7XG5cdHZhciB3YXJuaW5nID0g
X193ZWJwYWNrX3JlcXVpcmVfXygyKTtcblx0XG5cdHZhciBkaWRXYXJuVmFsdWVMaW5rID0gZmFs
c2U7XG5cdHZhciBkaWRXYXJuQ2hlY2tlZExpbmsgPSBmYWxzZTtcblx0dmFyIGRpZFdhcm5WYWx1
ZURlZmF1bHRWYWx1ZSA9IGZhbHNlO1xuXHR2YXIgZGlkV2FybkNoZWNrZWREZWZhdWx0Q2hlY2tl
ZCA9IGZhbHNlO1xuXHR2YXIgZGlkV2FybkNvbnRyb2xsZWRUb1VuY29udHJvbGxlZCA9IGZhbHNl
O1xuXHR2YXIgZGlkV2FyblVuY29udHJvbGxlZFRvQ29udHJvbGxlZCA9IGZhbHNlO1xuXHRcblx0
ZnVuY3Rpb24gZm9yY2VVcGRhdGVJZk1vdW50ZWQoKSB7XG5cdCAgaWYgKHRoaXMuX3Jvb3ROb2Rl
SUQpIHtcblx0ICAgIC8vIERPTSBjb21wb25lbnQgaXMgc3RpbGwgbW91bnRlZDsgdXBkYXRlXG5c
dCAgICBSZWFjdERPTUlucHV0LnVwZGF0ZVdyYXBwZXIodGhpcyk7XG5cdCAgfVxuXHR9XG5cdFxu
XHRmdW5jdGlvbiBpc0NvbnRyb2xsZWQocHJvcHMpIHtcblx0ICB2YXIgdXNlc0NoZWNrZWQgPSBw
cm9wcy50eXBlID09PSAnY2hlY2tib3gnIHx8IHByb3BzLnR5cGUgPT09ICdyYWRpbyc7XG5cdCAg
cmV0dXJuIHVzZXNDaGVja2VkID8gcHJvcHMuY2hlY2tlZCAhPSBudWxsIDogcHJvcHMudmFsdWUg
IT0gbnVsbDtcblx0fVxuXHRcblx0LyoqXG5cdCAqIEltcGxlbWVudHMgYW4gPGlucHV0PiBob3N0
IGNvbXBvbmVudCB0aGF0IGFsbG93cyBzZXR0aW5nIHRoZXNlIG9wdGlvbmFsXG5cdCAqIHByb3Bz
OiBgY2hlY2tlZGAsIGB2YWx1ZWAsIGBkZWZhdWx0Q2hlY2tlZGAsIGFuZCBgZGVmYXVsdFZhbHVl
YC5cblx0ICpcblx0ICogSWYgYGNoZWNrZWRgIG9yIGB2YWx1ZWAgYXJlIG5vdCBzdXBwbGllZCAo
b3IgbnVsbC91bmRlZmluZWQpLCB1c2VyIGFjdGlvbnNcblx0ICogdGhhdCBhZmZlY3QgdGhlIGNo
ZWNrZWQgc3RhdGUgb3IgdmFsdWUgd2lsbCB0cmlnZ2VyIHVwZGF0ZXMgdG8gdGhlIGVsZW1lbnQu
XG5cdCAqXG5cdCAqIElmIHRoZXkgYXJlIHN1cHBsaWVkIChhbmQgbm90IG51bGwvdW5kZWZpbmVk
KSwgdGhlIHJlbmRlcmVkIGVsZW1lbnQgd2lsbCBub3Rcblx0ICogdHJpZ2dlciB1cGRhdGVzIHRv
IHRoZSBlbGVtZW50LiBJbnN0ZWFkLCB0aGUgcHJvcHMgbXVzdCBjaGFuZ2UgaW4gb3JkZXIgZm9y
XG5cdCAqIHRoZSByZW5kZXJlZCBlbGVtZW50IHRvIGJlIHVwZGF0ZWQuXG5cdCAqXG5cdCAqIFRo
ZSByZW5kZXJlZCBlbGVtZW50IHdpbGwgYmUgaW5pdGlhbGl6ZWQgYXMgdW5jaGVja2VkIChvciBg
ZGVmYXVsdENoZWNrZWRgKVxuXHQgKiB3aXRoIGFuIGVtcHR5IHZhbHVlIChvciBgZGVmYXVsdFZh
bHVlYCkuXG5cdCAqXG5cdCAqIEBzZWUgaHR0cDovL3d3dy53My5vcmcvVFIvMjAxMi9XRC1odG1s
NS0yMDEyMTAyNS90aGUtaW5wdXQtZWxlbWVudC5odG1sXG5cdCAqL1xuXHR2YXIgUmVhY3RET01J
bnB1dCA9IHtcblx0ICBnZXRIb3N0UHJvcHM6IGZ1bmN0aW9uIChpbnN0LCBwcm9wcykge1xuXHQg
ICAgdmFyIHZhbHVlID0gTGlua2VkVmFsdWVVdGlscy5nZXRWYWx1ZShwcm9wcyk7XG5cdCAgICB2
YXIgY2hlY2tlZCA9IExpbmtlZFZhbHVlVXRpbHMuZ2V0Q2hlY2tlZChwcm9wcyk7XG5cdFxuXHQg
ICAgdmFyIGhvc3RQcm9wcyA9IF9hc3NpZ24oe1xuXHQgICAgICAvLyBNYWtlIHN1cmUgd2Ugc2V0
IC50eXBlIGJlZm9yZSBhbnkgb3RoZXIgcHJvcGVydGllcyAoc2V0dGluZyAudmFsdWVcblx0ICAg
ICAgLy8gYmVmb3JlIC50eXBlIG1lYW5zIC52YWx1ZSBpcyBsb3N0IGluIElFMTEgYW5kIGJlbG93
KVxuXHQgICAgICB0eXBlOiB1bmRlZmluZWQsXG5cdCAgICAgIC8vIE1ha2Ugc3VyZSB3ZSBzZXQg
LnN0ZXAgYmVmb3JlIC52YWx1ZSAoc2V0dGluZyAudmFsdWUgYmVmb3JlIC5zdGVwXG5cdCAgICAg
IC8vIG1lYW5zIC52YWx1ZSBpcyByb3VuZGVkIG9uIG1vdW50LCBiYXNlZCB1cG9uIHN0ZXAgcHJl
Y2lzaW9uKVxuXHQgICAgICBzdGVwOiB1bmRlZmluZWQsXG5cdCAgICAgIC8vIE1ha2Ugc3VyZSB3
ZSBzZXQgLm1pbiAmIC5tYXggYmVmb3JlIC52YWx1ZSAodG8gZW5zdXJlIHByb3BlciBvcmRlclxu
XHQgICAgICAvLyBpbiBjb3JuZXIgY2FzZXMgc3VjaCBhcyBtaW4gb3IgbWF4IGRlcml2aW5nIGZy
b20gdmFsdWUsIGUuZy4gSXNzdWUgIzcxNzApXG5cdCAgICAgIG1pbjogdW5kZWZpbmVkLFxuXHQg
ICAgICBtYXg6IHVuZGVmaW5lZFxuXHQgICAgfSwgcHJvcHMsIHtcblx0ICAgICAgZGVmYXVsdENo
ZWNrZWQ6IHVuZGVmaW5lZCxcblx0ICAgICAgZGVmYXVsdFZhbHVlOiB1bmRlZmluZWQsXG5cdCAg
ICAgIHZhbHVlOiB2YWx1ZSAhPSBudWxsID8gdmFsdWUgOiBpbnN0Ll93cmFwcGVyU3RhdGUuaW5p
dGlhbFZhbHVlLFxuXHQgICAgICBjaGVja2VkOiBjaGVja2VkICE9IG51bGwgPyBjaGVja2VkIDog
aW5zdC5fd3JhcHBlclN0YXRlLmluaXRpYWxDaGVja2VkLFxuXHQgICAgICBvbkNoYW5nZTogaW5z
dC5fd3JhcHBlclN0YXRlLm9uQ2hhbmdlXG5cdCAgICB9KTtcblx0XG5cdCAgICByZXR1cm4gaG9z
dFByb3BzO1xuXHQgIH0sXG5cdFxuXHQgIG1vdW50V3JhcHBlcjogZnVuY3Rpb24gKGluc3QsIHBy
b3BzKSB7XG5cdCAgICBpZiAoZmFsc2UpIHtcblx0ICAgICAgTGlua2VkVmFsdWVVdGlscy5jaGVj
a1Byb3BUeXBlcygnaW5wdXQnLCBwcm9wcywgaW5zdC5fY3VycmVudEVsZW1lbnQuX293bmVyKTtc
blx0XG5cdCAgICAgIHZhciBvd25lciA9IGluc3QuX2N1cnJlbnRFbGVtZW50Ll9vd25lcjtcblx0
XG5cdCAgICAgIGlmIChwcm9wcy52YWx1ZUxpbmsgIT09IHVuZGVmaW5lZCAmJiAhZGlkV2FyblZh
bHVlTGluaykge1xuXHQgICAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlv
bicgPyB3YXJuaW5nKGZhbHNlLCAnYHZhbHVlTGlua2AgcHJvcCBvbiBgaW5wdXRgIGlzIGRlcHJl
Y2F0ZWQ7IHNldCBgdmFsdWVgIGFuZCBgb25DaGFuZ2VgIGluc3RlYWQuJykgOiB2b2lkIDA7XG5c
dCAgICAgICAgZGlkV2FyblZhbHVlTGluayA9IHRydWU7XG5cdCAgICAgIH1cblx0ICAgICAgaWYg
KHByb3BzLmNoZWNrZWRMaW5rICE9PSB1bmRlZmluZWQgJiYgIWRpZFdhcm5DaGVja2VkTGluaykg
e1xuXHQgICAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJu
aW5nKGZhbHNlLCAnYGNoZWNrZWRMaW5rYCBwcm9wIG9uIGBpbnB1dGAgaXMgZGVwcmVjYXRlZDsg
c2V0IGB2YWx1ZWAgYW5kIGBvbkNoYW5nZWAgaW5zdGVhZC4nKSA6IHZvaWQgMDtcblx0ICAgICAg
ICBkaWRXYXJuQ2hlY2tlZExpbmsgPSB0cnVlO1xuXHQgICAgICB9XG5cdCAgICAgIGlmIChwcm9w
cy5jaGVja2VkICE9PSB1bmRlZmluZWQgJiYgcHJvcHMuZGVmYXVsdENoZWNrZWQgIT09IHVuZGVm
aW5lZCAmJiAhZGlkV2FybkNoZWNrZWREZWZhdWx0Q2hlY2tlZCkge1xuXHQgICAgICAgIHByb2Nl
c3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnJXMgY29u
dGFpbnMgYW4gaW5wdXQgb2YgdHlwZSAlcyB3aXRoIGJvdGggY2hlY2tlZCBhbmQgZGVmYXVsdENo
ZWNrZWQgcHJvcHMuICcgKyAnSW5wdXQgZWxlbWVudHMgbXVzdCBiZSBlaXRoZXIgY29udHJvbGxl
ZCBvciB1bmNvbnRyb2xsZWQgJyArICcoc3BlY2lmeSBlaXRoZXIgdGhlIGNoZWNrZWQgcHJvcCwg
b3IgdGhlIGRlZmF1bHRDaGVja2VkIHByb3AsIGJ1dCBub3QgJyArICdib3RoKS4gRGVjaWRlIGJl
dHdlZW4gdXNpbmcgYSBjb250cm9sbGVkIG9yIHVuY29udHJvbGxlZCBpbnB1dCAnICsgJ2VsZW1l
bnQgYW5kIHJlbW92ZSBvbmUgb2YgdGhlc2UgcHJvcHMuIE1vcmUgaW5mbzogJyArICdodHRwczov
L2ZiLm1lL3JlYWN0LWNvbnRyb2xsZWQtY29tcG9uZW50cycsIG93bmVyICYmIG93bmVyLmdldE5h
bWUoKSB8fCAnQSBjb21wb25lbnQnLCBwcm9wcy50eXBlKSA6IHZvaWQgMDtcblx0ICAgICAgICBk
aWRXYXJuQ2hlY2tlZERlZmF1bHRDaGVja2VkID0gdHJ1ZTtcblx0ICAgICAgfVxuXHQgICAgICBp
ZiAocHJvcHMudmFsdWUgIT09IHVuZGVmaW5lZCAmJiBwcm9wcy5kZWZhdWx0VmFsdWUgIT09IHVu
ZGVmaW5lZCAmJiAhZGlkV2FyblZhbHVlRGVmYXVsdFZhbHVlKSB7XG5cdCAgICAgICAgcHJvY2Vz
cy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICclcyBjb250
YWlucyBhbiBpbnB1dCBvZiB0eXBlICVzIHdpdGggYm90aCB2YWx1ZSBhbmQgZGVmYXVsdFZhbHVl
IHByb3BzLiAnICsgJ0lucHV0IGVsZW1lbnRzIG11c3QgYmUgZWl0aGVyIGNvbnRyb2xsZWQgb3Ig
dW5jb250cm9sbGVkICcgKyAnKHNwZWNpZnkgZWl0aGVyIHRoZSB2YWx1ZSBwcm9wLCBvciB0aGUg
ZGVmYXVsdFZhbHVlIHByb3AsIGJ1dCBub3QgJyArICdib3RoKS4gRGVjaWRlIGJldHdlZW4gdXNp
bmcgYSBjb250cm9sbGVkIG9yIHVuY29udHJvbGxlZCBpbnB1dCAnICsgJ2VsZW1lbnQgYW5kIHJl
bW92ZSBvbmUgb2YgdGhlc2UgcHJvcHMuIE1vcmUgaW5mbzogJyArICdodHRwczovL2ZiLm1lL3Jl
YWN0LWNvbnRyb2xsZWQtY29tcG9uZW50cycsIG93bmVyICYmIG93bmVyLmdldE5hbWUoKSB8fCAn
QSBjb21wb25lbnQnLCBwcm9wcy50eXBlKSA6IHZvaWQgMDtcblx0ICAgICAgICBkaWRXYXJuVmFs
dWVEZWZhdWx0VmFsdWUgPSB0cnVlO1xuXHQgICAgICB9XG5cdCAgICB9XG5cdFxuXHQgICAgdmFy
IGRlZmF1bHRWYWx1ZSA9IHByb3BzLmRlZmF1bHRWYWx1ZTtcblx0ICAgIGluc3QuX3dyYXBwZXJT
dGF0ZSA9IHtcblx0ICAgICAgaW5pdGlhbENoZWNrZWQ6IHByb3BzLmNoZWNrZWQgIT0gbnVsbCA/
IHByb3BzLmNoZWNrZWQgOiBwcm9wcy5kZWZhdWx0Q2hlY2tlZCxcblx0ICAgICAgaW5pdGlhbFZh
bHVlOiBwcm9wcy52YWx1ZSAhPSBudWxsID8gcHJvcHMudmFsdWUgOiBkZWZhdWx0VmFsdWUsXG5c
dCAgICAgIGxpc3RlbmVyczogbnVsbCxcblx0ICAgICAgb25DaGFuZ2U6IF9oYW5kbGVDaGFuZ2Uu
YmluZChpbnN0KSxcblx0ICAgICAgY29udHJvbGxlZDogaXNDb250cm9sbGVkKHByb3BzKVxuXHQg
ICAgfTtcblx0ICB9LFxuXHRcblx0ICB1cGRhdGVXcmFwcGVyOiBmdW5jdGlvbiAoaW5zdCkge1xu
XHQgICAgdmFyIHByb3BzID0gaW5zdC5fY3VycmVudEVsZW1lbnQucHJvcHM7XG5cdFxuXHQgICAg
aWYgKGZhbHNlKSB7XG5cdCAgICAgIHZhciBjb250cm9sbGVkID0gaXNDb250cm9sbGVkKHByb3Bz
KTtcblx0ICAgICAgdmFyIG93bmVyID0gaW5zdC5fY3VycmVudEVsZW1lbnQuX293bmVyO1xuXHRc
blx0ICAgICAgaWYgKCFpbnN0Ll93cmFwcGVyU3RhdGUuY29udHJvbGxlZCAmJiBjb250cm9sbGVk
ICYmICFkaWRXYXJuVW5jb250cm9sbGVkVG9Db250cm9sbGVkKSB7XG5cdCAgICAgICAgcHJvY2Vz
cy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICclcyBpcyBj
aGFuZ2luZyBhbiB1bmNvbnRyb2xsZWQgaW5wdXQgb2YgdHlwZSAlcyB0byBiZSBjb250cm9sbGVk
LiAnICsgJ0lucHV0IGVsZW1lbnRzIHNob3VsZCBub3Qgc3dpdGNoIGZyb20gdW5jb250cm9sbGVk
IHRvIGNvbnRyb2xsZWQgKG9yIHZpY2UgdmVyc2EpLiAnICsgJ0RlY2lkZSBiZXR3ZWVuIHVzaW5n
IGEgY29udHJvbGxlZCBvciB1bmNvbnRyb2xsZWQgaW5wdXQgJyArICdlbGVtZW50IGZvciB0aGUg
bGlmZXRpbWUgb2YgdGhlIGNvbXBvbmVudC4gTW9yZSBpbmZvOiBodHRwczovL2ZiLm1lL3JlYWN0
LWNvbnRyb2xsZWQtY29tcG9uZW50cycsIG93bmVyICYmIG93bmVyLmdldE5hbWUoKSB8fCAnQSBj
b21wb25lbnQnLCBwcm9wcy50eXBlKSA6IHZvaWQgMDtcblx0ICAgICAgICBkaWRXYXJuVW5jb250
cm9sbGVkVG9Db250cm9sbGVkID0gdHJ1ZTtcblx0ICAgICAgfVxuXHQgICAgICBpZiAoaW5zdC5f
d3JhcHBlclN0YXRlLmNvbnRyb2xsZWQgJiYgIWNvbnRyb2xsZWQgJiYgIWRpZFdhcm5Db250cm9s
bGVkVG9VbmNvbnRyb2xsZWQpIHtcblx0ICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0g
J3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJyVzIGlzIGNoYW5naW5nIGEgY29udHJvbGxl
ZCBpbnB1dCBvZiB0eXBlICVzIHRvIGJlIHVuY29udHJvbGxlZC4gJyArICdJbnB1dCBlbGVtZW50
cyBzaG91bGQgbm90IHN3aXRjaCBmcm9tIGNvbnRyb2xsZWQgdG8gdW5jb250cm9sbGVkIChvciB2
aWNlIHZlcnNhKS4gJyArICdEZWNpZGUgYmV0d2VlbiB1c2luZyBhIGNvbnRyb2xsZWQgb3IgdW5j
b250cm9sbGVkIGlucHV0ICcgKyAnZWxlbWVudCBmb3IgdGhlIGxpZmV0aW1lIG9mIHRoZSBjb21w
b25lbnQuIE1vcmUgaW5mbzogaHR0cHM6Ly9mYi5tZS9yZWFjdC1jb250cm9sbGVkLWNvbXBvbmVu
dHMnLCBvd25lciAmJiBvd25lci5nZXROYW1lKCkgfHwgJ0EgY29tcG9uZW50JywgcHJvcHMudHlw
ZSkgOiB2b2lkIDA7XG5cdCAgICAgICAgZGlkV2FybkNvbnRyb2xsZWRUb1VuY29udHJvbGxlZCA9
IHRydWU7XG5cdCAgICAgIH1cblx0ICAgIH1cblx0XG5cdCAgICAvLyBUT0RPOiBTaG91bGRuJ3Qg
dGhpcyBiZSBnZXRDaGVja2VkKHByb3BzKT9cblx0ICAgIHZhciBjaGVja2VkID0gcHJvcHMuY2hl
Y2tlZDtcblx0ICAgIGlmIChjaGVja2VkICE9IG51bGwpIHtcblx0ICAgICAgRE9NUHJvcGVydHlP
cGVyYXRpb25zLnNldFZhbHVlRm9yUHJvcGVydHkoUmVhY3RET01Db21wb25lbnRUcmVlLmdldE5v
ZGVGcm9tSW5zdGFuY2UoaW5zdCksICdjaGVja2VkJywgY2hlY2tlZCB8fCBmYWxzZSk7XG5cdCAg
ICB9XG5cdFxuXHQgICAgdmFyIG5vZGUgPSBSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0Tm9kZUZy
b21JbnN0YW5jZShpbnN0KTtcblx0ICAgIHZhciB2YWx1ZSA9IExpbmtlZFZhbHVlVXRpbHMuZ2V0
VmFsdWUocHJvcHMpO1xuXHQgICAgaWYgKHZhbHVlICE9IG51bGwpIHtcblx0ICAgICAgaWYgKHZh
bHVlID09PSAwICYmIG5vZGUudmFsdWUgPT09ICcnKSB7XG5cdCAgICAgICAgbm9kZS52YWx1ZSA9
ICcwJztcblx0ICAgICAgICAvLyBOb3RlOiBJRTkgcmVwb3J0cyBhIG51bWJlciBpbnB1dHMgYXMg
J3RleHQnLCBzbyBjaGVjayBwcm9wcyBpbnN0ZWFkLlxuXHQgICAgICB9IGVsc2UgaWYgKHByb3Bz
LnR5cGUgPT09ICdudW1iZXInKSB7XG5cdCAgICAgICAgLy8gU2ltdWxhdGUgYGlucHV0LnZhbHVl
QXNOdW1iZXJgLiBJRTkgZG9lcyBub3Qgc3VwcG9ydCBpdFxuXHQgICAgICAgIHZhciB2YWx1ZUFz
TnVtYmVyID0gcGFyc2VGbG9hdChub2RlLnZhbHVlLCAxMCkgfHwgMDtcblx0XG5cdCAgICAgICAg
aWYgKFxuXHQgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuXHQgICAgICAgIHZh
bHVlICE9IHZhbHVlQXNOdW1iZXIgfHxcblx0ICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0
LWxpbmVcblx0ICAgICAgICB2YWx1ZSA9PSB2YWx1ZUFzTnVtYmVyICYmIG5vZGUudmFsdWUgIT0g
dmFsdWUpIHtcblx0ICAgICAgICAgIC8vIENhc3QgYHZhbHVlYCB0byBhIHN0cmluZyB0byBlbnN1
cmUgdGhlIHZhbHVlIGlzIHNldCBjb3JyZWN0bHkuIFdoaWxlXG5cdCAgICAgICAgICAvLyBicm93
c2VycyB0eXBpY2FsbHkgZG8gdGhpcyBhcyBuZWNlc3NhcnksIGpzZG9tIGRvZXNuJ3QuXG5cdCAg
ICAgICAgICBub2RlLnZhbHVlID0gJycgKyB2YWx1ZTtcblx0ICAgICAgICB9XG5cdCAgICAgIH0g
ZWxzZSBpZiAobm9kZS52YWx1ZSAhPT0gJycgKyB2YWx1ZSkge1xuXHQgICAgICAgIC8vIENhc3Qg
YHZhbHVlYCB0byBhIHN0cmluZyB0byBlbnN1cmUgdGhlIHZhbHVlIGlzIHNldCBjb3JyZWN0bHku
IFdoaWxlXG5cdCAgICAgICAgLy8gYnJvd3NlcnMgdHlwaWNhbGx5IGRvIHRoaXMgYXMgbmVjZXNz
YXJ5LCBqc2RvbSBkb2Vzbid0LlxuXHQgICAgICAgIG5vZGUudmFsdWUgPSAnJyArIHZhbHVlO1xu
XHQgICAgICB9XG5cdCAgICB9IGVsc2Uge1xuXHQgICAgICBpZiAocHJvcHMudmFsdWUgPT0gbnVs
bCAmJiBwcm9wcy5kZWZhdWx0VmFsdWUgIT0gbnVsbCkge1xuXHQgICAgICAgIC8vIEluIENocm9t
ZSwgYXNzaWduaW5nIGRlZmF1bHRWYWx1ZSB0byBjZXJ0YWluIGlucHV0IHR5cGVzIHRyaWdnZXJz
IGlucHV0IHZhbGlkYXRpb24uXG5cdCAgICAgICAgLy8gRm9yIG51bWJlciBpbnB1dHMsIHRoZSBk
aXNwbGF5IHZhbHVlIGxvc2VzIHRyYWlsaW5nIGRlY2ltYWwgcG9pbnRzLiBGb3IgZW1haWwgaW5w
dXRzLFxuXHQgICAgICAgIC8vIENocm9tZSByYWlzZXMgXCJUaGUgc3BlY2lmaWVkIHZhbHVlIDx4
PiBpcyBub3QgYSB2YWxpZCBlbWFpbCBhZGRyZXNzXCIuXG5cdCAgICAgICAgLy9cblx0ICAgICAg
ICAvLyBIZXJlIHdlIGNoZWNrIHRvIHNlZSBpZiB0aGUgZGVmYXVsdFZhbHVlIGhhcyBhY3R1YWxs
eSBjaGFuZ2VkLCBhdm9pZGluZyB0aGVzZSBwcm9ibGVtc1xuXHQgICAgICAgIC8vIHdoZW4gdGhl
IHVzZXIgaXMgaW5wdXR0aW5nIHRleHRcblx0ICAgICAgICAvL1xuXHQgICAgICAgIC8vIGh0dHBz
Oi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9pc3N1ZXMvNzI1M1xuXHQgICAgICAgIGlmIChu
b2RlLmRlZmF1bHRWYWx1ZSAhPT0gJycgKyBwcm9wcy5kZWZhdWx0VmFsdWUpIHtcblx0ICAgICAg
ICAgIG5vZGUuZGVmYXVsdFZhbHVlID0gJycgKyBwcm9wcy5kZWZhdWx0VmFsdWU7XG5cdCAgICAg
ICAgfVxuXHQgICAgICB9XG5cdCAgICAgIGlmIChwcm9wcy5jaGVja2VkID09IG51bGwgJiYgcHJv
cHMuZGVmYXVsdENoZWNrZWQgIT0gbnVsbCkge1xuXHQgICAgICAgIG5vZGUuZGVmYXVsdENoZWNr
ZWQgPSAhIXByb3BzLmRlZmF1bHRDaGVja2VkO1xuXHQgICAgICB9XG5cdCAgICB9XG5cdCAgfSxc
blx0XG5cdCAgcG9zdE1vdW50V3JhcHBlcjogZnVuY3Rpb24gKGluc3QpIHtcblx0ICAgIHZhciBw
cm9wcyA9IGluc3QuX2N1cnJlbnRFbGVtZW50LnByb3BzO1xuXHRcblx0ICAgIC8vIFRoaXMgaXMg
aW4gcG9zdE1vdW50IGJlY2F1c2Ugd2UgbmVlZCBhY2Nlc3MgdG8gdGhlIERPTSBub2RlLCB3aGlj
aCBpcyBub3Rcblx0ICAgIC8vIGF2YWlsYWJsZSB1bnRpbCBhZnRlciB0aGUgY29tcG9uZW50IGhh
cyBtb3VudGVkLlxuXHQgICAgdmFyIG5vZGUgPSBSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0Tm9k
ZUZyb21JbnN0YW5jZShpbnN0KTtcblx0XG5cdCAgICAvLyBEZXRhY2ggdmFsdWUgZnJvbSBkZWZh
dWx0VmFsdWUuIFdlIHdvbid0IGRvIGFueXRoaW5nIGlmIHdlJ3JlIHdvcmtpbmcgb25cblx0ICAg
IC8vIHN1Ym1pdCBvciByZXNldCBpbnB1dHMgYXMgdGhvc2UgdmFsdWVzICYgZGVmYXVsdFZhbHVl
cyBhcmUgbGlua2VkLiBUaGV5XG5cdCAgICAvLyBhcmUgbm90IHJlc2V0YWJsZSBub2RlcyBzbyB0
aGlzIG9wZXJhdGlvbiBkb2Vzbid0IG1hdHRlciBhbmQgYWN0dWFsbHlcblx0ICAgIC8vIHJlbW92
ZXMgYnJvd3Nlci1kZWZhdWx0IHZhbHVlcyAoZWcgXCJTdWJtaXQgUXVlcnlcIikgd2hlbiBubyB2
YWx1ZSBpc1xuXHQgICAgLy8gcHJvdmlkZWQuXG5cdFxuXHQgICAgc3dpdGNoIChwcm9wcy50eXBl
KSB7XG5cdCAgICAgIGNhc2UgJ3N1Ym1pdCc6XG5cdCAgICAgIGNhc2UgJ3Jlc2V0Jzpcblx0ICAg
ICAgICBicmVhaztcblx0ICAgICAgY2FzZSAnY29sb3InOlxuXHQgICAgICBjYXNlICdkYXRlJzpc
blx0ICAgICAgY2FzZSAnZGF0ZXRpbWUnOlxuXHQgICAgICBjYXNlICdkYXRldGltZS1sb2NhbCc6
XG5cdCAgICAgIGNhc2UgJ21vbnRoJzpcblx0ICAgICAgY2FzZSAndGltZSc6XG5cdCAgICAgIGNh
c2UgJ3dlZWsnOlxuXHQgICAgICAgIC8vIFRoaXMgZml4ZXMgdGhlIG5vLXNob3cgaXNzdWUgb24g
aU9TIFNhZmFyaSBhbmQgQW5kcm9pZCBDaHJvbWU6XG5cdCAgICAgICAgLy8gaHR0cHM6Ly9naXRo
dWIuY29tL2ZhY2Vib29rL3JlYWN0L2lzc3Vlcy83MjMzXG5cdCAgICAgICAgbm9kZS52YWx1ZSA9
ICcnO1xuXHQgICAgICAgIG5vZGUudmFsdWUgPSBub2RlLmRlZmF1bHRWYWx1ZTtcblx0ICAgICAg
ICBicmVhaztcblx0ICAgICAgZGVmYXVsdDpcblx0ICAgICAgICBub2RlLnZhbHVlID0gbm9kZS52
YWx1ZTtcblx0ICAgICAgICBicmVhaztcblx0ICAgIH1cblx0XG5cdCAgICAvLyBOb3JtYWxseSwg
d2UnZCBqdXN0IGRvIGBub2RlLmNoZWNrZWQgPSBub2RlLmNoZWNrZWRgIHVwb24gaW5pdGlhbCBt
b3VudCwgbGVzcyB0aGlzIGJ1Z1xuXHQgICAgLy8gdGhpcyBpcyBuZWVkZWQgdG8gd29yayBhcm91
bmQgYSBjaHJvbWUgYnVnIHdoZXJlIHNldHRpbmcgZGVmYXVsdENoZWNrZWRcblx0ICAgIC8vIHdp
bGwgc29tZXRpbWVzIGluZmx1ZW5jZSB0aGUgdmFsdWUgb2YgY2hlY2tlZCAoZXZlbiBhZnRlciBk
ZXRhY2htZW50KS5cblx0ICAgIC8vIFJlZmVyZW5jZTogaHR0cHM6Ly9idWdzLmNocm9taXVtLm9y
Zy9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9NjA4NDE2XG5cdCAgICAvLyBXZSBuZWVkIHRv
IHRlbXBvcmFyaWx5IHVuc2V0IG5hbWUgdG8gYXZvaWQgZGlzcnVwdGluZyByYWRpbyBidXR0b24g
Z3JvdXBzLlxuXHQgICAgdmFyIG5hbWUgPSBub2RlLm5hbWU7XG5cdCAgICBpZiAobmFtZSAhPT0g
JycpIHtcblx0ICAgICAgbm9kZS5uYW1lID0gJyc7XG5cdCAgICB9XG5cdCAgICBub2RlLmRlZmF1
bHRDaGVja2VkID0gIW5vZGUuZGVmYXVsdENoZWNrZWQ7XG5cdCAgICBub2RlLmRlZmF1bHRDaGVj
a2VkID0gIW5vZGUuZGVmYXVsdENoZWNrZWQ7XG5cdCAgICBpZiAobmFtZSAhPT0gJycpIHtcblx0
ICAgICAgbm9kZS5uYW1lID0gbmFtZTtcblx0ICAgIH1cblx0ICB9XG5cdH07XG5cdFxuXHRmdW5j
dGlvbiBfaGFuZGxlQ2hhbmdlKGV2ZW50KSB7XG5cdCAgdmFyIHByb3BzID0gdGhpcy5fY3VycmVu
dEVsZW1lbnQucHJvcHM7XG5cdFxuXHQgIHZhciByZXR1cm5WYWx1ZSA9IExpbmtlZFZhbHVlVXRp
bHMuZXhlY3V0ZU9uQ2hhbmdlKHByb3BzLCBldmVudCk7XG5cdFxuXHQgIC8vIEhlcmUgd2UgdXNl
IGFzYXAgdG8gd2FpdCB1bnRpbCBhbGwgdXBkYXRlcyBoYXZlIHByb3BhZ2F0ZWQsIHdoaWNoXG5c
dCAgLy8gaXMgaW1wb3J0YW50IHdoZW4gdXNpbmcgY29udHJvbGxlZCBjb21wb25lbnRzIHdpdGhp
biBsYXllcnM6XG5cdCAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0L2lzc3Vl
cy8xNjk4XG5cdCAgUmVhY3RVcGRhdGVzLmFzYXAoZm9yY2VVcGRhdGVJZk1vdW50ZWQsIHRoaXMp
O1xuXHRcblx0ICB2YXIgbmFtZSA9IHByb3BzLm5hbWU7XG5cdCAgaWYgKHByb3BzLnR5cGUgPT09
ICdyYWRpbycgJiYgbmFtZSAhPSBudWxsKSB7XG5cdCAgICB2YXIgcm9vdE5vZGUgPSBSZWFjdERP
TUNvbXBvbmVudFRyZWUuZ2V0Tm9kZUZyb21JbnN0YW5jZSh0aGlzKTtcblx0ICAgIHZhciBxdWVy
eVJvb3QgPSByb290Tm9kZTtcblx0XG5cdCAgICB3aGlsZSAocXVlcnlSb290LnBhcmVudE5vZGUp
IHtcblx0ICAgICAgcXVlcnlSb290ID0gcXVlcnlSb290LnBhcmVudE5vZGU7XG5cdCAgICB9XG5c
dFxuXHQgICAgLy8gSWYgYHJvb3ROb2RlLmZvcm1gIHdhcyBub24tbnVsbCwgdGhlbiB3ZSBjb3Vs
ZCB0cnkgYGZvcm0uZWxlbWVudHNgLFxuXHQgICAgLy8gYnV0IHRoYXQgc29tZXRpbWVzIGJlaGF2
ZXMgc3RyYW5nZWx5IGluIElFOC4gV2UgY291bGQgYWxzbyB0cnkgdXNpbmdcblx0ICAgIC8vIGBm
b3JtLmdldEVsZW1lbnRzQnlOYW1lYCwgYnV0IHRoYXQgd2lsbCBvbmx5IHJldHVybiBkaXJlY3Qg
Y2hpbGRyZW5cblx0ICAgIC8vIGFuZCB3b24ndCBpbmNsdWRlIGlucHV0cyB0aGF0IHVzZSB0aGUg
SFRNTDUgYGZvcm09YCBhdHRyaWJ1dGUuIFNpbmNlXG5cdCAgICAvLyB0aGUgaW5wdXQgbWlnaHQg
bm90IGV2ZW4gYmUgaW4gYSBmb3JtLCBsZXQncyBqdXN0IHVzZSB0aGUgZ2xvYmFsXG5cdCAgICAv
LyBgcXVlcnlTZWxlY3RvckFsbGAgdG8gZW5zdXJlIHdlIGRvbid0IG1pc3MgYW55dGhpbmcuXG5c
dCAgICB2YXIgZ3JvdXAgPSBxdWVyeVJvb3QucXVlcnlTZWxlY3RvckFsbCgnaW5wdXRbbmFtZT0n
ICsgSlNPTi5zdHJpbmdpZnkoJycgKyBuYW1lKSArICddW3R5cGU9XCJyYWRpb1wiXScpO1xuXHRc
blx0ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZ3JvdXAubGVuZ3RoOyBpKyspIHtcblx0ICAgICAg
dmFyIG90aGVyTm9kZSA9IGdyb3VwW2ldO1xuXHQgICAgICBpZiAob3RoZXJOb2RlID09PSByb290
Tm9kZSB8fCBvdGhlck5vZGUuZm9ybSAhPT0gcm9vdE5vZGUuZm9ybSkge1xuXHQgICAgICAgIGNv
bnRpbnVlO1xuXHQgICAgICB9XG5cdCAgICAgIC8vIFRoaXMgd2lsbCB0aHJvdyBpZiByYWRpbyBi
dXR0b25zIHJlbmRlcmVkIGJ5IGRpZmZlcmVudCBjb3BpZXMgb2YgUmVhY3Rcblx0ICAgICAgLy8g
YW5kIHRoZSBzYW1lIG5hbWUgYXJlIHJlbmRlcmVkIGludG8gdGhlIHNhbWUgZm9ybSAoc2FtZSBh
cyAjMTkzOSkuXG5cdCAgICAgIC8vIFRoYXQncyBwcm9iYWJseSBva2F5OyB3ZSBkb24ndCBzdXBw
b3J0IGl0IGp1c3QgYXMgd2UgZG9uJ3Qgc3VwcG9ydFxuXHQgICAgICAvLyBtaXhpbmcgUmVhY3Qg
cmFkaW8gYnV0dG9ucyB3aXRoIG5vbi1SZWFjdCBvbmVzLlxuXHQgICAgICB2YXIgb3RoZXJJbnN0
YW5jZSA9IFJlYWN0RE9NQ29tcG9uZW50VHJlZS5nZXRJbnN0YW5jZUZyb21Ob2RlKG90aGVyTm9k
ZSk7XG5cdCAgICAgICFvdGhlckluc3RhbmNlID8gIGZhbHNlID8gaW52YXJpYW50KGZhbHNlLCAn
UmVhY3RET01JbnB1dDogTWl4aW5nIFJlYWN0IGFuZCBub24tUmVhY3QgcmFkaW8gaW5wdXRzIHdp
dGggdGhlIHNhbWUgYG5hbWVgIGlzIG5vdCBzdXBwb3J0ZWQuJykgOiBfcHJvZEludmFyaWFudCgn
OTAnKSA6IHZvaWQgMDtcblx0ICAgICAgLy8gSWYgdGhpcyBpcyBhIGNvbnRyb2xsZWQgcmFkaW8g
YnV0dG9uIGdyb3VwLCBmb3JjaW5nIHRoZSBpbnB1dCB0aGF0XG5cdCAgICAgIC8vIHdhcyBwcmV2
aW91c2x5IGNoZWNrZWQgdG8gdXBkYXRlIHdpbGwgY2F1c2UgaXQgdG8gYmUgY29tZSByZS1jaGVj
a2VkXG5cdCAgICAgIC8vIGFzIGFwcHJvcHJpYXRlLlxuXHQgICAgICBSZWFjdFVwZGF0ZXMuYXNh
cChmb3JjZVVwZGF0ZUlmTW91bnRlZCwgb3RoZXJJbnN0YW5jZSk7XG5cdCAgICB9XG5cdCAgfVxu
XHRcblx0ICByZXR1cm4gcmV0dXJuVmFsdWU7XG5cdH1cblx0XG5cdG1vZHVsZS5leHBvcnRzID0g
UmVhY3RET01JbnB1dDtcblxuLyoqKi8gfSxcbi8qIDE0NCAqL1xuLyoqKi8gZnVuY3Rpb24obW9k
dWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0LyoqXG5cdCAqIENvcHly
aWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2
ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJT
RC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJv
b3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0
ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0
aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqL1xuXHRcblx0J3VzZSBzdHJpY3QnO1xuXHRc
blx0dmFyIF9hc3NpZ24gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQpO1xuXHRcblx0dmFyIFJlYWN0
ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNyk7XG5cdHZhciBSZWFjdERPTUNvbXBvbmVudFRyZWUg
PSBfX3dlYnBhY2tfcmVxdWlyZV9fKDUpO1xuXHR2YXIgUmVhY3RET01TZWxlY3QgPSBfX3dlYnBh
Y2tfcmVxdWlyZV9fKDYyKTtcblx0XG5cdHZhciB3YXJuaW5nID0gX193ZWJwYWNrX3JlcXVpcmVf
XygyKTtcblx0dmFyIGRpZFdhcm5JbnZhbGlkT3B0aW9uQ2hpbGRyZW4gPSBmYWxzZTtcblx0XG5c
dGZ1bmN0aW9uIGZsYXR0ZW5DaGlsZHJlbihjaGlsZHJlbikge1xuXHQgIHZhciBjb250ZW50ID0g
Jyc7XG5cdFxuXHQgIC8vIEZsYXR0ZW4gY2hpbGRyZW4gYW5kIHdhcm4gaWYgdGhleSBhcmVuJ3Qg
c3RyaW5ncyBvciBudW1iZXJzO1xuXHQgIC8vIGludmFsaWQgdHlwZXMgYXJlIGlnbm9yZWQuXG5c
dCAgUmVhY3QuQ2hpbGRyZW4uZm9yRWFjaChjaGlsZHJlbiwgZnVuY3Rpb24gKGNoaWxkKSB7XG5c
dCAgICBpZiAoY2hpbGQgPT0gbnVsbCkge1xuXHQgICAgICByZXR1cm47XG5cdCAgICB9XG5cdCAg
ICBpZiAodHlwZW9mIGNoaWxkID09PSAnc3RyaW5nJyB8fCB0eXBlb2YgY2hpbGQgPT09ICdudW1i
ZXInKSB7XG5cdCAgICAgIGNvbnRlbnQgKz0gY2hpbGQ7XG5cdCAgICB9IGVsc2UgaWYgKCFkaWRX
YXJuSW52YWxpZE9wdGlvbkNoaWxkcmVuKSB7XG5cdCAgICAgIGRpZFdhcm5JbnZhbGlkT3B0aW9u
Q2hpbGRyZW4gPSB0cnVlO1xuXHQgICAgICAgZmFsc2UgPyB3YXJuaW5nKGZhbHNlLCAnT25seSBz
dHJpbmdzIGFuZCBudW1iZXJzIGFyZSBzdXBwb3J0ZWQgYXMgPG9wdGlvbj4gY2hpbGRyZW4uJykg
OiB2b2lkIDA7XG5cdCAgICB9XG5cdCAgfSk7XG5cdFxuXHQgIHJldHVybiBjb250ZW50O1xuXHR9
XG5cdFxuXHQvKipcblx0ICogSW1wbGVtZW50cyBhbiA8b3B0aW9uPiBob3N0IGNvbXBvbmVudCB0
aGF0IHdhcm5zIHdoZW4gYHNlbGVjdGVkYCBpcyBzZXQuXG5cdCAqL1xuXHR2YXIgUmVhY3RET01P
cHRpb24gPSB7XG5cdCAgbW91bnRXcmFwcGVyOiBmdW5jdGlvbiAoaW5zdCwgcHJvcHMsIGhvc3RQ
YXJlbnQpIHtcblx0ICAgIC8vIFRPRE8gKHl1bmdzdGVycyk6IFJlbW92ZSBzdXBwb3J0IGZvciBg
c2VsZWN0ZWRgIGluIDxvcHRpb24+LlxuXHQgICAgaWYgKGZhbHNlKSB7XG5cdCAgICAgIHByb2Nl
c3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKHByb3BzLnNlbGVjdGVk
ID09IG51bGwsICdVc2UgdGhlIGBkZWZhdWx0VmFsdWVgIG9yIGB2YWx1ZWAgcHJvcHMgb24gPHNl
bGVjdD4gaW5zdGVhZCBvZiAnICsgJ3NldHRpbmcgYHNlbGVjdGVkYCBvbiA8b3B0aW9uPi4nKSA6
IHZvaWQgMDtcblx0ICAgIH1cblx0XG5cdCAgICAvLyBMb29rIHVwIHdoZXRoZXIgdGhpcyBvcHRp
b24gaXMgJ3NlbGVjdGVkJ1xuXHQgICAgdmFyIHNlbGVjdFZhbHVlID0gbnVsbDtcblx0ICAgIGlm
IChob3N0UGFyZW50ICE9IG51bGwpIHtcblx0ICAgICAgdmFyIHNlbGVjdFBhcmVudCA9IGhvc3RQ
YXJlbnQ7XG5cdFxuXHQgICAgICBpZiAoc2VsZWN0UGFyZW50Ll90YWcgPT09ICdvcHRncm91cCcp
IHtcblx0ICAgICAgICBzZWxlY3RQYXJlbnQgPSBzZWxlY3RQYXJlbnQuX2hvc3RQYXJlbnQ7XG5c
dCAgICAgIH1cblx0XG5cdCAgICAgIGlmIChzZWxlY3RQYXJlbnQgIT0gbnVsbCAmJiBzZWxlY3RQ
YXJlbnQuX3RhZyA9PT0gJ3NlbGVjdCcpIHtcblx0ICAgICAgICBzZWxlY3RWYWx1ZSA9IFJlYWN0
RE9NU2VsZWN0LmdldFNlbGVjdFZhbHVlQ29udGV4dChzZWxlY3RQYXJlbnQpO1xuXHQgICAgICB9
XG5cdCAgICB9XG5cdFxuXHQgICAgLy8gSWYgdGhlIHZhbHVlIGlzIG51bGwgKGUuZy4sIG5vIHNw
ZWNpZmllZCB2YWx1ZSBvciBhZnRlciBpbml0aWFsIG1vdW50KVxuXHQgICAgLy8gb3IgbWlzc2lu
ZyAoZS5nLiwgZm9yIDxkYXRhbGlzdD4pLCB3ZSBkb24ndCBjaGFuZ2UgcHJvcHMuc2VsZWN0ZWRc
blx0ICAgIHZhciBzZWxlY3RlZCA9IG51bGw7XG5cdCAgICBpZiAoc2VsZWN0VmFsdWUgIT0gbnVs
bCkge1xuXHQgICAgICB2YXIgdmFsdWU7XG5cdCAgICAgIGlmIChwcm9wcy52YWx1ZSAhPSBudWxs
KSB7XG5cdCAgICAgICAgdmFsdWUgPSBwcm9wcy52YWx1ZSArICcnO1xuXHQgICAgICB9IGVsc2Ug
e1xuXHQgICAgICAgIHZhbHVlID0gZmxhdHRlbkNoaWxkcmVuKHByb3BzLmNoaWxkcmVuKTtcblx0
ICAgICAgfVxuXHQgICAgICBzZWxlY3RlZCA9IGZhbHNlO1xuXHQgICAgICBpZiAoQXJyYXkuaXNB
cnJheShzZWxlY3RWYWx1ZSkpIHtcblx0ICAgICAgICAvLyBtdWx0aXBsZVxuXHQgICAgICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgc2VsZWN0VmFsdWUubGVuZ3RoOyBpKyspIHtcblx0ICAgICAgICAg
IGlmICgnJyArIHNlbGVjdFZhbHVlW2ldID09PSB2YWx1ZSkge1xuXHQgICAgICAgICAgICBzZWxl
Y3RlZCA9IHRydWU7XG5cdCAgICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgICAgfVxuXHQgICAg
ICAgIH1cblx0ICAgICAgfSBlbHNlIHtcblx0ICAgICAgICBzZWxlY3RlZCA9ICcnICsgc2VsZWN0
VmFsdWUgPT09IHZhbHVlO1xuXHQgICAgICB9XG5cdCAgICB9XG5cdFxuXHQgICAgaW5zdC5fd3Jh
cHBlclN0YXRlID0geyBzZWxlY3RlZDogc2VsZWN0ZWQgfTtcblx0ICB9LFxuXHRcblx0ICBwb3N0
TW91bnRXcmFwcGVyOiBmdW5jdGlvbiAoaW5zdCkge1xuXHQgICAgLy8gdmFsdWU9XCJcIiBzaG91
bGQgbWFrZSBhIHZhbHVlIGF0dHJpYnV0ZSAoIzYyMTkpXG5cdCAgICB2YXIgcHJvcHMgPSBpbnN0
Ll9jdXJyZW50RWxlbWVudC5wcm9wcztcblx0ICAgIGlmIChwcm9wcy52YWx1ZSAhPSBudWxsKSB7
XG5cdCAgICAgIHZhciBub2RlID0gUmVhY3RET01Db21wb25lbnRUcmVlLmdldE5vZGVGcm9tSW5z
dGFuY2UoaW5zdCk7XG5cdCAgICAgIG5vZGUuc2V0QXR0cmlidXRlKCd2YWx1ZScsIHByb3BzLnZh
bHVlKTtcblx0ICAgIH1cblx0ICB9LFxuXHRcblx0ICBnZXRIb3N0UHJvcHM6IGZ1bmN0aW9uIChp
bnN0LCBwcm9wcykge1xuXHQgICAgdmFyIGhvc3RQcm9wcyA9IF9hc3NpZ24oeyBzZWxlY3RlZDog
dW5kZWZpbmVkLCBjaGlsZHJlbjogdW5kZWZpbmVkIH0sIHByb3BzKTtcblx0XG5cdCAgICAvLyBS
ZWFkIHN0YXRlIG9ubHkgZnJvbSBpbml0aWFsIG1vdW50IGJlY2F1c2UgPHNlbGVjdD4gdXBkYXRl
cyB2YWx1ZVxuXHQgICAgLy8gbWFudWFsbHk7IHdlIG5lZWQgdGhlIGluaXRpYWwgc3RhdGUgb25s
eSBmb3Igc2VydmVyIHJlbmRlcmluZ1xuXHQgICAgaWYgKGluc3QuX3dyYXBwZXJTdGF0ZS5zZWxl
Y3RlZCAhPSBudWxsKSB7XG5cdCAgICAgIGhvc3RQcm9wcy5zZWxlY3RlZCA9IGluc3QuX3dyYXBw
ZXJTdGF0ZS5zZWxlY3RlZDtcblx0ICAgIH1cblx0XG5cdCAgICB2YXIgY29udGVudCA9IGZsYXR0
ZW5DaGlsZHJlbihwcm9wcy5jaGlsZHJlbik7XG5cdFxuXHQgICAgaWYgKGNvbnRlbnQpIHtcblx0
ICAgICAgaG9zdFByb3BzLmNoaWxkcmVuID0gY29udGVudDtcblx0ICAgIH1cblx0XG5cdCAgICBy
ZXR1cm4gaG9zdFByb3BzO1xuXHQgIH1cblx0fTtcblx0XG5cdG1vZHVsZS5leHBvcnRzID0gUmVh
Y3RET01PcHRpb247XG5cbi8qKiovIH0sXG4vKiAxNDUgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVs
ZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmln
aHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVk
LlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qt
c3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290
IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAq
IG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhl
IHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5c
dHZhciBFeGVjdXRpb25FbnZpcm9ubWVudCA9IF9fd2VicGFja19yZXF1aXJlX18oNik7XG5cdFxu
XHR2YXIgZ2V0Tm9kZUZvckNoYXJhY3Rlck9mZnNldCA9IF9fd2VicGFja19yZXF1aXJlX18oMTgz
KTtcblx0dmFyIGdldFRleHRDb250ZW50QWNjZXNzb3IgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDcz
KTtcblx0XG5cdC8qKlxuXHQgKiBXaGlsZSBgaXNDb2xsYXBzZWRgIGlzIGF2YWlsYWJsZSBvbiB0
aGUgU2VsZWN0aW9uIG9iamVjdCBhbmQgYGNvbGxhcHNlZGBcblx0ICogaXMgYXZhaWxhYmxlIG9u
IHRoZSBSYW5nZSBvYmplY3QsIElFMTEgc29tZXRpbWVzIGdldHMgdGhlbSB3cm9uZy5cblx0ICog
SWYgdGhlIGFuY2hvci9mb2N1cyBub2RlcyBhbmQgb2Zmc2V0cyBhcmUgdGhlIHNhbWUsIHRoZSBy
YW5nZSBpcyBjb2xsYXBzZWQuXG5cdCAqL1xuXHRmdW5jdGlvbiBpc0NvbGxhcHNlZChhbmNob3JO
b2RlLCBhbmNob3JPZmZzZXQsIGZvY3VzTm9kZSwgZm9jdXNPZmZzZXQpIHtcblx0ICByZXR1cm4g
YW5jaG9yTm9kZSA9PT0gZm9jdXNOb2RlICYmIGFuY2hvck9mZnNldCA9PT0gZm9jdXNPZmZzZXQ7
XG5cdH1cblx0XG5cdC8qKlxuXHQgKiBHZXQgdGhlIGFwcHJvcHJpYXRlIGFuY2hvciBhbmQgZm9j
dXMgbm9kZS9vZmZzZXQgcGFpcnMgZm9yIElFLlxuXHQgKlxuXHQgKiBUaGUgY2F0Y2ggaGVyZSBp
cyB0aGF0IElFJ3Mgc2VsZWN0aW9uIEFQSSBkb2Vzbid0IHByb3ZpZGUgaW5mb3JtYXRpb25cblx0
ICogYWJvdXQgd2hldGhlciB0aGUgc2VsZWN0aW9uIGlzIGZvcndhcmQgb3IgYmFja3dhcmQsIHNv
IHdlIGhhdmUgdG9cblx0ICogYmVoYXZlIGFzIHRob3VnaCBpdCdzIGFsd2F5cyBmb3J3YXJkLlxu
XHQgKlxuXHQgKiBJRSB0ZXh0IGRpZmZlcnMgZnJvbSBtb2Rlcm4gc2VsZWN0aW9uIGluIHRoYXQg
aXQgYmVoYXZlcyBhcyB0aG91Z2hcblx0ICogYmxvY2sgZWxlbWVudHMgZW5kIHdpdGggYSBuZXcg
bGluZS4gVGhpcyBtZWFucyBjaGFyYWN0ZXIgb2Zmc2V0cyB3aWxsXG5cdCAqIGRpZmZlciBiZXR3
ZWVuIHRoZSB0d28gQVBJcy5cblx0ICpcblx0ICogQHBhcmFtIHtET01FbGVtZW50fSBub2RlXG5c
dCAqIEByZXR1cm4ge29iamVjdH1cblx0ICovXG5cdGZ1bmN0aW9uIGdldElFT2Zmc2V0cyhub2Rl
KSB7XG5cdCAgdmFyIHNlbGVjdGlvbiA9IGRvY3VtZW50LnNlbGVjdGlvbjtcblx0ICB2YXIgc2Vs
ZWN0ZWRSYW5nZSA9IHNlbGVjdGlvbi5jcmVhdGVSYW5nZSgpO1xuXHQgIHZhciBzZWxlY3RlZExl
bmd0aCA9IHNlbGVjdGVkUmFuZ2UudGV4dC5sZW5ndGg7XG5cdFxuXHQgIC8vIER1cGxpY2F0ZSBz
ZWxlY3Rpb24gc28gd2UgY2FuIG1vdmUgcmFuZ2Ugd2l0aG91dCBicmVha2luZyB1c2VyIHNlbGVj
dGlvbi5cblx0ICB2YXIgZnJvbVN0YXJ0ID0gc2VsZWN0ZWRSYW5nZS5kdXBsaWNhdGUoKTtcblx0
ICBmcm9tU3RhcnQubW92ZVRvRWxlbWVudFRleHQobm9kZSk7XG5cdCAgZnJvbVN0YXJ0LnNldEVu
ZFBvaW50KCdFbmRUb1N0YXJ0Jywgc2VsZWN0ZWRSYW5nZSk7XG5cdFxuXHQgIHZhciBzdGFydE9m
ZnNldCA9IGZyb21TdGFydC50ZXh0Lmxlbmd0aDtcblx0ICB2YXIgZW5kT2Zmc2V0ID0gc3RhcnRP
ZmZzZXQgKyBzZWxlY3RlZExlbmd0aDtcblx0XG5cdCAgcmV0dXJuIHtcblx0ICAgIHN0YXJ0OiBz
dGFydE9mZnNldCxcblx0ICAgIGVuZDogZW5kT2Zmc2V0XG5cdCAgfTtcblx0fVxuXHRcblx0Lyoq
XG5cdCAqIEBwYXJhbSB7RE9NRWxlbWVudH0gbm9kZVxuXHQgKiBAcmV0dXJuIHs/b2JqZWN0fVxu
XHQgKi9cblx0ZnVuY3Rpb24gZ2V0TW9kZXJuT2Zmc2V0cyhub2RlKSB7XG5cdCAgdmFyIHNlbGVj
dGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24gJiYgd2luZG93LmdldFNlbGVjdGlvbigpO1xuXHRc
blx0ICBpZiAoIXNlbGVjdGlvbiB8fCBzZWxlY3Rpb24ucmFuZ2VDb3VudCA9PT0gMCkge1xuXHQg
ICAgcmV0dXJuIG51bGw7XG5cdCAgfVxuXHRcblx0ICB2YXIgYW5jaG9yTm9kZSA9IHNlbGVjdGlv
bi5hbmNob3JOb2RlO1xuXHQgIHZhciBhbmNob3JPZmZzZXQgPSBzZWxlY3Rpb24uYW5jaG9yT2Zm
c2V0O1xuXHQgIHZhciBmb2N1c05vZGUgPSBzZWxlY3Rpb24uZm9jdXNOb2RlO1xuXHQgIHZhciBm
b2N1c09mZnNldCA9IHNlbGVjdGlvbi5mb2N1c09mZnNldDtcblx0XG5cdCAgdmFyIGN1cnJlbnRS
YW5nZSA9IHNlbGVjdGlvbi5nZXRSYW5nZUF0KDApO1xuXHRcblx0ICAvLyBJbiBGaXJlZm94LCBy
YW5nZS5zdGFydENvbnRhaW5lciBhbmQgcmFuZ2UuZW5kQ29udGFpbmVyIGNhbiBiZSBcImFub255
bW91c1xuXHQgIC8vIGRpdnNcIiwgZS5nLiB0aGUgdXAvZG93biBidXR0b25zIG9uIGFuIDxpbnB1
dCB0eXBlPVwibnVtYmVyXCI+LiBBbm9ueW1vdXNcblx0ICAvLyBkaXZzIGRvIG5vdCBzZWVtIHRv
IGV4cG9zZSBwcm9wZXJ0aWVzLCB0cmlnZ2VyaW5nIGEgXCJQZXJtaXNzaW9uIGRlbmllZFxuXHQg
IC8vIGVycm9yXCIgaWYgYW55IG9mIGl0cyBwcm9wZXJ0aWVzIGFyZSBhY2Nlc3NlZC4gVGhlIG9u
bHkgc2VlbWluZ2x5IHBvc3NpYmxlXG5cdCAgLy8gd2F5IHRvIGF2b2lkIGVycm9yaW5nIGlzIHRv
IGFjY2VzcyBhIHByb3BlcnR5IHRoYXQgdHlwaWNhbGx5IHdvcmtzIGZvclxuXHQgIC8vIG5vbi1h
bm9ueW1vdXMgZGl2cyBhbmQgY2F0Y2ggYW55IGVycm9yIHRoYXQgbWF5IG90aGVyd2lzZSBhcmlz
ZS4gU2VlXG5cdCAgLy8gaHR0cHM6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjA4NDI3XG5cdCAgdHJ5IHtcblx0ICAgIC8qIGVzbGludC1kaXNhYmxlIG5vLXVudXNlZC1l
eHByZXNzaW9ucyAqL1xuXHQgICAgY3VycmVudFJhbmdlLnN0YXJ0Q29udGFpbmVyLm5vZGVUeXBl
O1xuXHQgICAgY3VycmVudFJhbmdlLmVuZENvbnRhaW5lci5ub2RlVHlwZTtcblx0ICAgIC8qIGVz
bGludC1lbmFibGUgbm8tdW51c2VkLWV4cHJlc3Npb25zICovXG5cdCAgfSBjYXRjaCAoZSkge1xu
XHQgICAgcmV0dXJuIG51bGw7XG5cdCAgfVxuXHRcblx0ICAvLyBJZiB0aGUgbm9kZSBhbmQgb2Zm
c2V0IHZhbHVlcyBhcmUgdGhlIHNhbWUsIHRoZSBzZWxlY3Rpb24gaXMgY29sbGFwc2VkLlxuXHQg
IC8vIGBTZWxlY3Rpb24uaXNDb2xsYXBzZWRgIGlzIGF2YWlsYWJsZSBuYXRpdmVseSwgYnV0IElF
IHNvbWV0aW1lcyBnZXRzXG5cdCAgLy8gdGhpcyB2YWx1ZSB3cm9uZy5cblx0ICB2YXIgaXNTZWxl
Y3Rpb25Db2xsYXBzZWQgPSBpc0NvbGxhcHNlZChzZWxlY3Rpb24uYW5jaG9yTm9kZSwgc2VsZWN0
aW9uLmFuY2hvck9mZnNldCwgc2VsZWN0aW9uLmZvY3VzTm9kZSwgc2VsZWN0aW9uLmZvY3VzT2Zm
c2V0KTtcblx0XG5cdCAgdmFyIHJhbmdlTGVuZ3RoID0gaXNTZWxlY3Rpb25Db2xsYXBzZWQgPyAw
IDogY3VycmVudFJhbmdlLnRvU3RyaW5nKCkubGVuZ3RoO1xuXHRcblx0ICB2YXIgdGVtcFJhbmdl
ID0gY3VycmVudFJhbmdlLmNsb25lUmFuZ2UoKTtcblx0ICB0ZW1wUmFuZ2Uuc2VsZWN0Tm9kZUNv
bnRlbnRzKG5vZGUpO1xuXHQgIHRlbXBSYW5nZS5zZXRFbmQoY3VycmVudFJhbmdlLnN0YXJ0Q29u
dGFpbmVyLCBjdXJyZW50UmFuZ2Uuc3RhcnRPZmZzZXQpO1xuXHRcblx0ICB2YXIgaXNUZW1wUmFu
Z2VDb2xsYXBzZWQgPSBpc0NvbGxhcHNlZCh0ZW1wUmFuZ2Uuc3RhcnRDb250YWluZXIsIHRlbXBS
YW5nZS5zdGFydE9mZnNldCwgdGVtcFJhbmdlLmVuZENvbnRhaW5lciwgdGVtcFJhbmdlLmVuZE9m
ZnNldCk7XG5cdFxuXHQgIHZhciBzdGFydCA9IGlzVGVtcFJhbmdlQ29sbGFwc2VkID8gMCA6IHRl
bXBSYW5nZS50b1N0cmluZygpLmxlbmd0aDtcblx0ICB2YXIgZW5kID0gc3RhcnQgKyByYW5nZUxl
bmd0aDtcblx0XG5cdCAgLy8gRGV0ZWN0IHdoZXRoZXIgdGhlIHNlbGVjdGlvbiBpcyBiYWNrd2Fy
ZC5cblx0ICB2YXIgZGV0ZWN0aW9uUmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpO1xuXHQg
IGRldGVjdGlvblJhbmdlLnNldFN0YXJ0KGFuY2hvck5vZGUsIGFuY2hvck9mZnNldCk7XG5cdCAg
ZGV0ZWN0aW9uUmFuZ2Uuc2V0RW5kKGZvY3VzTm9kZSwgZm9jdXNPZmZzZXQpO1xuXHQgIHZhciBp
c0JhY2t3YXJkID0gZGV0ZWN0aW9uUmFuZ2UuY29sbGFwc2VkO1xuXHRcblx0ICByZXR1cm4ge1xu
XHQgICAgc3RhcnQ6IGlzQmFja3dhcmQgPyBlbmQgOiBzdGFydCxcblx0ICAgIGVuZDogaXNCYWNr
d2FyZCA/IHN0YXJ0IDogZW5kXG5cdCAgfTtcblx0fVxuXHRcblx0LyoqXG5cdCAqIEBwYXJhbSB7
RE9NRWxlbWVudHxET01UZXh0Tm9kZX0gbm9kZVxuXHQgKiBAcGFyYW0ge29iamVjdH0gb2Zmc2V0
c1xuXHQgKi9cblx0ZnVuY3Rpb24gc2V0SUVPZmZzZXRzKG5vZGUsIG9mZnNldHMpIHtcblx0ICB2
YXIgcmFuZ2UgPSBkb2N1bWVudC5zZWxlY3Rpb24uY3JlYXRlUmFuZ2UoKS5kdXBsaWNhdGUoKTtc
blx0ICB2YXIgc3RhcnQsIGVuZDtcblx0XG5cdCAgaWYgKG9mZnNldHMuZW5kID09PSB1bmRlZmlu
ZWQpIHtcblx0ICAgIHN0YXJ0ID0gb2Zmc2V0cy5zdGFydDtcblx0ICAgIGVuZCA9IHN0YXJ0O1xu
XHQgIH0gZWxzZSBpZiAob2Zmc2V0cy5zdGFydCA+IG9mZnNldHMuZW5kKSB7XG5cdCAgICBzdGFy
dCA9IG9mZnNldHMuZW5kO1xuXHQgICAgZW5kID0gb2Zmc2V0cy5zdGFydDtcblx0ICB9IGVsc2Ug
e1xuXHQgICAgc3RhcnQgPSBvZmZzZXRzLnN0YXJ0O1xuXHQgICAgZW5kID0gb2Zmc2V0cy5lbmQ7
XG5cdCAgfVxuXHRcblx0ICByYW5nZS5tb3ZlVG9FbGVtZW50VGV4dChub2RlKTtcblx0ICByYW5n
ZS5tb3ZlU3RhcnQoJ2NoYXJhY3RlcicsIHN0YXJ0KTtcblx0ICByYW5nZS5zZXRFbmRQb2ludCgn
RW5kVG9TdGFydCcsIHJhbmdlKTtcblx0ICByYW5nZS5tb3ZlRW5kKCdjaGFyYWN0ZXInLCBlbmQg
LSBzdGFydCk7XG5cdCAgcmFuZ2Uuc2VsZWN0KCk7XG5cdH1cblx0XG5cdC8qKlxuXHQgKiBJbiBt
b2Rlcm4gbm9uLUlFIGJyb3dzZXJzLCB3ZSBjYW4gc3VwcG9ydCBib3RoIGZvcndhcmQgYW5kIGJh
Y2t3YXJkXG5cdCAqIHNlbGVjdGlvbnMuXG5cdCAqXG5cdCAqIE5vdGU6IElFMTArIHN1cHBvcnRz
IHRoZSBTZWxlY3Rpb24gb2JqZWN0LCBidXQgaXQgZG9lcyBub3Qgc3VwcG9ydFxuXHQgKiB0aGUg
YGV4dGVuZGAgbWV0aG9kLCB3aGljaCBtZWFucyB0aGF0IGV2ZW4gaW4gbW9kZXJuIElFLCBpdCdz
IG5vdCBwb3NzaWJsZVxuXHQgKiB0byBwcm9ncmFtbWF0aWNhbGx5IGNyZWF0ZSBhIGJhY2t3YXJk
IHNlbGVjdGlvbi4gVGh1cywgZm9yIGFsbCBJRVxuXHQgKiB2ZXJzaW9ucywgd2UgdXNlIHRoZSBv
bGQgSUUgQVBJIHRvIGNyZWF0ZSBvdXIgc2VsZWN0aW9ucy5cblx0ICpcblx0ICogQHBhcmFtIHtE
T01FbGVtZW50fERPTVRleHROb2RlfSBub2RlXG5cdCAqIEBwYXJhbSB7b2JqZWN0fSBvZmZzZXRz
XG5cdCAqL1xuXHRmdW5jdGlvbiBzZXRNb2Rlcm5PZmZzZXRzKG5vZGUsIG9mZnNldHMpIHtcblx0
ICBpZiAoIXdpbmRvdy5nZXRTZWxlY3Rpb24pIHtcblx0ICAgIHJldHVybjtcblx0ICB9XG5cdFxu
XHQgIHZhciBzZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7XG5cdCAgdmFyIGxlbmd0
aCA9IG5vZGVbZ2V0VGV4dENvbnRlbnRBY2Nlc3NvcigpXS5sZW5ndGg7XG5cdCAgdmFyIHN0YXJ0
ID0gTWF0aC5taW4ob2Zmc2V0cy5zdGFydCwgbGVuZ3RoKTtcblx0ICB2YXIgZW5kID0gb2Zmc2V0
cy5lbmQgPT09IHVuZGVmaW5lZCA/IHN0YXJ0IDogTWF0aC5taW4ob2Zmc2V0cy5lbmQsIGxlbmd0
aCk7XG5cdFxuXHQgIC8vIElFIDExIHVzZXMgbW9kZXJuIHNlbGVjdGlvbiwgYnV0IGRvZXNuJ3Qg
c3VwcG9ydCB0aGUgZXh0ZW5kIG1ldGhvZC5cblx0ICAvLyBGbGlwIGJhY2t3YXJkIHNlbGVjdGlv
bnMsIHNvIHdlIGNhbiBzZXQgd2l0aCBhIHNpbmdsZSByYW5nZS5cblx0ICBpZiAoIXNlbGVjdGlv
bi5leHRlbmQgJiYgc3RhcnQgPiBlbmQpIHtcblx0ICAgIHZhciB0ZW1wID0gZW5kO1xuXHQgICAg
ZW5kID0gc3RhcnQ7XG5cdCAgICBzdGFydCA9IHRlbXA7XG5cdCAgfVxuXHRcblx0ICB2YXIgc3Rh
cnRNYXJrZXIgPSBnZXROb2RlRm9yQ2hhcmFjdGVyT2Zmc2V0KG5vZGUsIHN0YXJ0KTtcblx0ICB2
YXIgZW5kTWFya2VyID0gZ2V0Tm9kZUZvckNoYXJhY3Rlck9mZnNldChub2RlLCBlbmQpO1xuXHRc
blx0ICBpZiAoc3RhcnRNYXJrZXIgJiYgZW5kTWFya2VyKSB7XG5cdCAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpO1xuXHQgICAgcmFuZ2Uuc2V0U3RhcnQoc3RhcnRNYXJrZXIu
bm9kZSwgc3RhcnRNYXJrZXIub2Zmc2V0KTtcblx0ICAgIHNlbGVjdGlvbi5yZW1vdmVBbGxSYW5n
ZXMoKTtcblx0XG5cdCAgICBpZiAoc3RhcnQgPiBlbmQpIHtcblx0ICAgICAgc2VsZWN0aW9uLmFk
ZFJhbmdlKHJhbmdlKTtcblx0ICAgICAgc2VsZWN0aW9uLmV4dGVuZChlbmRNYXJrZXIubm9kZSwg
ZW5kTWFya2VyLm9mZnNldCk7XG5cdCAgICB9IGVsc2Uge1xuXHQgICAgICByYW5nZS5zZXRFbmQo
ZW5kTWFya2VyLm5vZGUsIGVuZE1hcmtlci5vZmZzZXQpO1xuXHQgICAgICBzZWxlY3Rpb24uYWRk
UmFuZ2UocmFuZ2UpO1xuXHQgICAgfVxuXHQgIH1cblx0fVxuXHRcblx0dmFyIHVzZUlFT2Zmc2V0
cyA9IEV4ZWN1dGlvbkVudmlyb25tZW50LmNhblVzZURPTSAmJiAnc2VsZWN0aW9uJyBpbiBkb2N1
bWVudCAmJiAhKCdnZXRTZWxlY3Rpb24nIGluIHdpbmRvdyk7XG5cdFxuXHR2YXIgUmVhY3RET01T
ZWxlY3Rpb24gPSB7XG5cdCAgLyoqXG5cdCAgICogQHBhcmFtIHtET01FbGVtZW50fSBub2RlXG5c
dCAgICovXG5cdCAgZ2V0T2Zmc2V0czogdXNlSUVPZmZzZXRzID8gZ2V0SUVPZmZzZXRzIDogZ2V0
TW9kZXJuT2Zmc2V0cyxcblx0XG5cdCAgLyoqXG5cdCAgICogQHBhcmFtIHtET01FbGVtZW50fERP
TVRleHROb2RlfSBub2RlXG5cdCAgICogQHBhcmFtIHtvYmplY3R9IG9mZnNldHNcblx0ICAgKi9c
blx0ICBzZXRPZmZzZXRzOiB1c2VJRU9mZnNldHMgPyBzZXRJRU9mZnNldHMgOiBzZXRNb2Rlcm5P
ZmZzZXRzXG5cdH07XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IFJlYWN0RE9NU2VsZWN0aW9uO1xu
XG4vKioqLyB9LFxuLyogMTQ2ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9f
d2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvKipcblx0ICogQ29weXJpZ2h0IDIwMTMtcHJlc2Vu
dCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICog
VGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2Ug
Zm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2Yg
dGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmln
aHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9y
eS5cblx0ICpcblx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHR2YXIgX3Byb2RJbnZh
cmlhbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMpLFxuXHQgICAgX2Fzc2lnbiA9IF9fd2VicGFj
a19yZXF1aXJlX18oNCk7XG5cdFxuXHR2YXIgRE9NQ2hpbGRyZW5PcGVyYXRpb25zID0gX193ZWJw
YWNrX3JlcXVpcmVfXygzNCk7XG5cdHZhciBET01MYXp5VHJlZSA9IF9fd2VicGFja19yZXF1aXJl
X18oMTQpO1xuXHR2YXIgUmVhY3RET01Db21wb25lbnRUcmVlID0gX193ZWJwYWNrX3JlcXVpcmVf
Xyg1KTtcblx0XG5cdHZhciBlc2NhcGVUZXh0Q29udGVudEZvckJyb3dzZXIgPSBfX3dlYnBhY2tf
cmVxdWlyZV9fKDI4KTtcblx0dmFyIGludmFyaWFudCA9IF9fd2VicGFja19yZXF1aXJlX18oMSk7
XG5cdHZhciB2YWxpZGF0ZURPTU5lc3RpbmcgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQ5KTtcblx0
XG5cdC8qKlxuXHQgKiBUZXh0IG5vZGVzIHZpb2xhdGUgYSBjb3VwbGUgYXNzdW1wdGlvbnMgdGhh
dCBSZWFjdCBtYWtlcyBhYm91dCBjb21wb25lbnRzOlxuXHQgKlxuXHQgKiAgLSBXaGVuIG1vdW50
aW5nIHRleHQgaW50byB0aGUgRE9NLCBhZGphY2VudCB0ZXh0IG5vZGVzIGFyZSBtZXJnZWQuXG5c
dCAqICAtIFRleHQgbm9kZXMgY2Fubm90IGJlIGFzc2lnbmVkIGEgUmVhY3Qgcm9vdCBJRC5cblx0
ICpcblx0ICogVGhpcyBjb21wb25lbnQgaXMgdXNlZCB0byB3cmFwIHN0cmluZ3MgYmV0d2VlbiBj
b21tZW50IG5vZGVzIHNvIHRoYXQgdGhleVxuXHQgKiBjYW4gdW5kZXJnbyB0aGUgc2FtZSByZWNv
bmNpbGlhdGlvbiB0aGF0IGlzIGFwcGxpZWQgdG8gZWxlbWVudHMuXG5cdCAqXG5cdCAqIFRPRE86
IEludmVzdGlnYXRlIHJlcHJlc2VudGluZyBSZWFjdCBjb21wb25lbnRzIGluIHRoZSBET00gd2l0
aCB0ZXh0IG5vZGVzLlxuXHQgKlxuXHQgKiBAY2xhc3MgUmVhY3RET01UZXh0Q29tcG9uZW50XG5c
dCAqIEBleHRlbmRzIFJlYWN0Q29tcG9uZW50XG5cdCAqIEBpbnRlcm5hbFxuXHQgKi9cblx0dmFy
IFJlYWN0RE9NVGV4dENvbXBvbmVudCA9IGZ1bmN0aW9uICh0ZXh0KSB7XG5cdCAgLy8gVE9ETzog
VGhpcyBpcyByZWFsbHkgYSBSZWFjdFRleHQgKFJlYWN0Tm9kZSksIG5vdCBhIFJlYWN0RWxlbWVu
dFxuXHQgIHRoaXMuX2N1cnJlbnRFbGVtZW50ID0gdGV4dDtcblx0ICB0aGlzLl9zdHJpbmdUZXh0
ID0gJycgKyB0ZXh0O1xuXHQgIC8vIFJlYWN0RE9NQ29tcG9uZW50VHJlZSB1c2VzIHRoZXNlOlxu
XHQgIHRoaXMuX2hvc3ROb2RlID0gbnVsbDtcblx0ICB0aGlzLl9ob3N0UGFyZW50ID0gbnVsbDtc
blx0XG5cdCAgLy8gUHJvcGVydGllc1xuXHQgIHRoaXMuX2RvbUlEID0gMDtcblx0ICB0aGlzLl9t
b3VudEluZGV4ID0gMDtcblx0ICB0aGlzLl9jbG9zaW5nQ29tbWVudCA9IG51bGw7XG5cdCAgdGhp
cy5fY29tbWVudE5vZGVzID0gbnVsbDtcblx0fTtcblx0XG5cdF9hc3NpZ24oUmVhY3RET01UZXh0
Q29tcG9uZW50LnByb3RvdHlwZSwge1xuXHQgIC8qKlxuXHQgICAqIENyZWF0ZXMgdGhlIG1hcmt1
cCBmb3IgdGhpcyB0ZXh0IG5vZGUuIFRoaXMgbm9kZSBpcyBub3QgaW50ZW5kZWQgdG8gaGF2ZVxu
XHQgICAqIGFueSBmZWF0dXJlcyBiZXNpZGVzIGNvbnRhaW5pbmcgdGV4dCBjb250ZW50LlxuXHQg
ICAqXG5cdCAgICogQHBhcmFtIHtSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9ufFJlYWN0U2VydmVy
UmVuZGVyaW5nVHJhbnNhY3Rpb259IHRyYW5zYWN0aW9uXG5cdCAgICogQHJldHVybiB7c3RyaW5n
fSBNYXJrdXAgZm9yIHRoaXMgdGV4dCBub2RlLlxuXHQgICAqIEBpbnRlcm5hbFxuXHQgICAqL1xu
XHQgIG1vdW50Q29tcG9uZW50OiBmdW5jdGlvbiAodHJhbnNhY3Rpb24sIGhvc3RQYXJlbnQsIGhv
c3RDb250YWluZXJJbmZvLCBjb250ZXh0KSB7XG5cdCAgICBpZiAoZmFsc2UpIHtcblx0ICAgICAg
dmFyIHBhcmVudEluZm87XG5cdCAgICAgIGlmIChob3N0UGFyZW50ICE9IG51bGwpIHtcblx0ICAg
ICAgICBwYXJlbnRJbmZvID0gaG9zdFBhcmVudC5fYW5jZXN0b3JJbmZvO1xuXHQgICAgICB9IGVs
c2UgaWYgKGhvc3RDb250YWluZXJJbmZvICE9IG51bGwpIHtcblx0ICAgICAgICBwYXJlbnRJbmZv
ID0gaG9zdENvbnRhaW5lckluZm8uX2FuY2VzdG9ySW5mbztcblx0ICAgICAgfVxuXHQgICAgICBp
ZiAocGFyZW50SW5mbykge1xuXHQgICAgICAgIC8vIHBhcmVudEluZm8gc2hvdWxkIGFsd2F5cyBi
ZSBwcmVzZW50IGV4Y2VwdCBmb3IgdGhlIHRvcC1sZXZlbFxuXHQgICAgICAgIC8vIGNvbXBvbmVu
dCB3aGVuIHNlcnZlciByZW5kZXJpbmdcblx0ICAgICAgICB2YWxpZGF0ZURPTU5lc3RpbmcobnVs
bCwgdGhpcy5fc3RyaW5nVGV4dCwgdGhpcywgcGFyZW50SW5mbyk7XG5cdCAgICAgIH1cblx0ICAg
IH1cblx0XG5cdCAgICB2YXIgZG9tSUQgPSBob3N0Q29udGFpbmVySW5mby5faWRDb3VudGVyKys7
XG5cdCAgICB2YXIgb3BlbmluZ1ZhbHVlID0gJyByZWFjdC10ZXh0OiAnICsgZG9tSUQgKyAnICc7
XG5cdCAgICB2YXIgY2xvc2luZ1ZhbHVlID0gJyAvcmVhY3QtdGV4dCAnO1xuXHQgICAgdGhpcy5f
ZG9tSUQgPSBkb21JRDtcblx0ICAgIHRoaXMuX2hvc3RQYXJlbnQgPSBob3N0UGFyZW50O1xuXHQg
ICAgaWYgKHRyYW5zYWN0aW9uLnVzZUNyZWF0ZUVsZW1lbnQpIHtcblx0ICAgICAgdmFyIG93bmVy
RG9jdW1lbnQgPSBob3N0Q29udGFpbmVySW5mby5fb3duZXJEb2N1bWVudDtcblx0ICAgICAgdmFy
IG9wZW5pbmdDb21tZW50ID0gb3duZXJEb2N1bWVudC5jcmVhdGVDb21tZW50KG9wZW5pbmdWYWx1
ZSk7XG5cdCAgICAgIHZhciBjbG9zaW5nQ29tbWVudCA9IG93bmVyRG9jdW1lbnQuY3JlYXRlQ29t
bWVudChjbG9zaW5nVmFsdWUpO1xuXHQgICAgICB2YXIgbGF6eVRyZWUgPSBET01MYXp5VHJlZShv
d25lckRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKSk7XG5cdCAgICAgIERPTUxhenlU
cmVlLnF1ZXVlQ2hpbGQobGF6eVRyZWUsIERPTUxhenlUcmVlKG9wZW5pbmdDb21tZW50KSk7XG5c
dCAgICAgIGlmICh0aGlzLl9zdHJpbmdUZXh0KSB7XG5cdCAgICAgICAgRE9NTGF6eVRyZWUucXVl
dWVDaGlsZChsYXp5VHJlZSwgRE9NTGF6eVRyZWUob3duZXJEb2N1bWVudC5jcmVhdGVUZXh0Tm9k
ZSh0aGlzLl9zdHJpbmdUZXh0KSkpO1xuXHQgICAgICB9XG5cdCAgICAgIERPTUxhenlUcmVlLnF1
ZXVlQ2hpbGQobGF6eVRyZWUsIERPTUxhenlUcmVlKGNsb3NpbmdDb21tZW50KSk7XG5cdCAgICAg
IFJlYWN0RE9NQ29tcG9uZW50VHJlZS5wcmVjYWNoZU5vZGUodGhpcywgb3BlbmluZ0NvbW1lbnQp
O1xuXHQgICAgICB0aGlzLl9jbG9zaW5nQ29tbWVudCA9IGNsb3NpbmdDb21tZW50O1xuXHQgICAg
ICByZXR1cm4gbGF6eVRyZWU7XG5cdCAgICB9IGVsc2Uge1xuXHQgICAgICB2YXIgZXNjYXBlZFRl
eHQgPSBlc2NhcGVUZXh0Q29udGVudEZvckJyb3dzZXIodGhpcy5fc3RyaW5nVGV4dCk7XG5cdFxu
XHQgICAgICBpZiAodHJhbnNhY3Rpb24ucmVuZGVyVG9TdGF0aWNNYXJrdXApIHtcblx0ICAgICAg
ICAvLyBOb3JtYWxseSB3ZSdkIHdyYXAgdGhpcyBiZXR3ZWVuIGNvbW1lbnQgbm9kZXMgZm9yIHRo
ZSByZWFzb25zIHN0YXRlZFxuXHQgICAgICAgIC8vIGFib3ZlLCBidXQgc2luY2UgdGhpcyBpcyBh
IHNpdHVhdGlvbiB3aGVyZSBSZWFjdCB3b24ndCB0YWtlIG92ZXJcblx0ICAgICAgICAvLyAoc3Rh
dGljIHBhZ2VzKSwgd2UgY2FuIHNpbXBseSByZXR1cm4gdGhlIHRleHQgYXMgaXQgaXMuXG5cdCAg
ICAgICAgcmV0dXJuIGVzY2FwZWRUZXh0O1xuXHQgICAgICB9XG5cdFxuXHQgICAgICByZXR1cm4g
JzwhLS0nICsgb3BlbmluZ1ZhbHVlICsgJy0tPicgKyBlc2NhcGVkVGV4dCArICc8IS0tJyArIGNs
b3NpbmdWYWx1ZSArICctLT4nO1xuXHQgICAgfVxuXHQgIH0sXG5cdFxuXHQgIC8qKlxuXHQgICAq
IFVwZGF0ZXMgdGhpcyBjb21wb25lbnQgYnkgdXBkYXRpbmcgdGhlIHRleHQgY29udGVudC5cblx0
ICAgKlxuXHQgICAqIEBwYXJhbSB7UmVhY3RUZXh0fSBuZXh0VGV4dCBUaGUgbmV4dCB0ZXh0IGNv
bnRlbnRcblx0ICAgKiBAcGFyYW0ge1JlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb259IHRyYW5zYWN0
aW9uXG5cdCAgICogQGludGVybmFsXG5cdCAgICovXG5cdCAgcmVjZWl2ZUNvbXBvbmVudDogZnVu
Y3Rpb24gKG5leHRUZXh0LCB0cmFuc2FjdGlvbikge1xuXHQgICAgaWYgKG5leHRUZXh0ICE9PSB0
aGlzLl9jdXJyZW50RWxlbWVudCkge1xuXHQgICAgICB0aGlzLl9jdXJyZW50RWxlbWVudCA9IG5l
eHRUZXh0O1xuXHQgICAgICB2YXIgbmV4dFN0cmluZ1RleHQgPSAnJyArIG5leHRUZXh0O1xuXHQg
ICAgICBpZiAobmV4dFN0cmluZ1RleHQgIT09IHRoaXMuX3N0cmluZ1RleHQpIHtcblx0ICAgICAg
ICAvLyBUT0RPOiBTYXZlIHRoaXMgYXMgcGVuZGluZyBwcm9wcyBhbmQgdXNlIHBlcmZvcm1VcGRh
dGVJZk5lY2Vzc2FyeVxuXHQgICAgICAgIC8vIGFuZC9vciB1cGRhdGVDb21wb25lbnQgdG8gZG8g
dGhlIGFjdHVhbCB1cGRhdGUgZm9yIGNvbnNpc3RlbmN5IHdpdGhcblx0ICAgICAgICAvLyBvdGhl
ciBjb21wb25lbnQgdHlwZXM/XG5cdCAgICAgICAgdGhpcy5fc3RyaW5nVGV4dCA9IG5leHRTdHJp
bmdUZXh0O1xuXHQgICAgICAgIHZhciBjb21tZW50Tm9kZXMgPSB0aGlzLmdldEhvc3ROb2RlKCk7
XG5cdCAgICAgICAgRE9NQ2hpbGRyZW5PcGVyYXRpb25zLnJlcGxhY2VEZWxpbWl0ZWRUZXh0KGNv
bW1lbnROb2Rlc1swXSwgY29tbWVudE5vZGVzWzFdLCBuZXh0U3RyaW5nVGV4dCk7XG5cdCAgICAg
IH1cblx0ICAgIH1cblx0ICB9LFxuXHRcblx0ICBnZXRIb3N0Tm9kZTogZnVuY3Rpb24gKCkge1xu
XHQgICAgdmFyIGhvc3ROb2RlID0gdGhpcy5fY29tbWVudE5vZGVzO1xuXHQgICAgaWYgKGhvc3RO
b2RlKSB7XG5cdCAgICAgIHJldHVybiBob3N0Tm9kZTtcblx0ICAgIH1cblx0ICAgIGlmICghdGhp
cy5fY2xvc2luZ0NvbW1lbnQpIHtcblx0ICAgICAgdmFyIG9wZW5pbmdDb21tZW50ID0gUmVhY3RE
T01Db21wb25lbnRUcmVlLmdldE5vZGVGcm9tSW5zdGFuY2UodGhpcyk7XG5cdCAgICAgIHZhciBu
b2RlID0gb3BlbmluZ0NvbW1lbnQubmV4dFNpYmxpbmc7XG5cdCAgICAgIHdoaWxlICh0cnVlKSB7
XG5cdCAgICAgICAgIShub2RlICE9IG51bGwpID8gIGZhbHNlID8gaW52YXJpYW50KGZhbHNlLCAn
TWlzc2luZyBjbG9zaW5nIGNvbW1lbnQgZm9yIHRleHQgY29tcG9uZW50ICVzJywgdGhpcy5fZG9t
SUQpIDogX3Byb2RJbnZhcmlhbnQoJzY3JywgdGhpcy5fZG9tSUQpIDogdm9pZCAwO1xuXHQgICAg
ICAgIGlmIChub2RlLm5vZGVUeXBlID09PSA4ICYmIG5vZGUubm9kZVZhbHVlID09PSAnIC9yZWFj
dC10ZXh0ICcpIHtcblx0ICAgICAgICAgIHRoaXMuX2Nsb3NpbmdDb21tZW50ID0gbm9kZTtcblx0
ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblx0ICAgICAgICBub2RlID0gbm9kZS5uZXh0
U2libGluZztcblx0ICAgICAgfVxuXHQgICAgfVxuXHQgICAgaG9zdE5vZGUgPSBbdGhpcy5faG9z
dE5vZGUsIHRoaXMuX2Nsb3NpbmdDb21tZW50XTtcblx0ICAgIHRoaXMuX2NvbW1lbnROb2RlcyA9
IGhvc3ROb2RlO1xuXHQgICAgcmV0dXJuIGhvc3ROb2RlO1xuXHQgIH0sXG5cdFxuXHQgIHVubW91
bnRDb21wb25lbnQ6IGZ1bmN0aW9uICgpIHtcblx0ICAgIHRoaXMuX2Nsb3NpbmdDb21tZW50ID0g
bnVsbDtcblx0ICAgIHRoaXMuX2NvbW1lbnROb2RlcyA9IG51bGw7XG5cdCAgICBSZWFjdERPTUNv
bXBvbmVudFRyZWUudW5jYWNoZU5vZGUodGhpcyk7XG5cdCAgfVxuXHR9KTtcblx0XG5cdG1vZHVs
ZS5leHBvcnRzID0gUmVhY3RET01UZXh0Q29tcG9uZW50O1xuXG4vKioqLyB9LFxuLyogMTQ3ICov
XG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtc
blxuXHQvKipcblx0ICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0
ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBs
aWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJ
Q0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4g
YWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0
aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpcblx0ICovXG5cdFxu
XHQndXNlIHN0cmljdCc7XG5cdFxuXHR2YXIgX3Byb2RJbnZhcmlhbnQgPSBfX3dlYnBhY2tfcmVx
dWlyZV9fKDMpLFxuXHQgICAgX2Fzc2lnbiA9IF9fd2VicGFja19yZXF1aXJlX18oNCk7XG5cdFxu
XHR2YXIgTGlua2VkVmFsdWVVdGlscyA9IF9fd2VicGFja19yZXF1aXJlX18oMzkpO1xuXHR2YXIg
UmVhY3RET01Db21wb25lbnRUcmVlID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1KTtcblx0dmFyIFJl
YWN0VXBkYXRlcyA9IF9fd2VicGFja19yZXF1aXJlX18oOSk7XG5cdFxuXHR2YXIgaW52YXJpYW50
ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxKTtcblx0dmFyIHdhcm5pbmcgPSBfX3dlYnBhY2tfcmVx
dWlyZV9fKDIpO1xuXHRcblx0dmFyIGRpZFdhcm5WYWx1ZUxpbmsgPSBmYWxzZTtcblx0dmFyIGRp
ZFdhcm5WYWxEZWZhdWx0VmFsID0gZmFsc2U7XG5cdFxuXHRmdW5jdGlvbiBmb3JjZVVwZGF0ZUlm
TW91bnRlZCgpIHtcblx0ICBpZiAodGhpcy5fcm9vdE5vZGVJRCkge1xuXHQgICAgLy8gRE9NIGNv
bXBvbmVudCBpcyBzdGlsbCBtb3VudGVkOyB1cGRhdGVcblx0ICAgIFJlYWN0RE9NVGV4dGFyZWEu
dXBkYXRlV3JhcHBlcih0aGlzKTtcblx0ICB9XG5cdH1cblx0XG5cdC8qKlxuXHQgKiBJbXBsZW1l
bnRzIGEgPHRleHRhcmVhPiBob3N0IGNvbXBvbmVudCB0aGF0IGFsbG93cyBzZXR0aW5nIGB2YWx1
ZWAsIGFuZFxuXHQgKiBgZGVmYXVsdFZhbHVlYC4gVGhpcyBkaWZmZXJzIGZyb20gdGhlIHRyYWRp
dGlvbmFsIERPTSBBUEkgYmVjYXVzZSB2YWx1ZSBpc1xuXHQgKiB1c3VhbGx5IHNldCBhcyBQQ0RB
VEEgY2hpbGRyZW4uXG5cdCAqXG5cdCAqIElmIGB2YWx1ZWAgaXMgbm90IHN1cHBsaWVkIChvciBu
dWxsL3VuZGVmaW5lZCksIHVzZXIgYWN0aW9ucyB0aGF0IGFmZmVjdCB0aGVcblx0ICogdmFsdWUg
d2lsbCB0cmlnZ2VyIHVwZGF0ZXMgdG8gdGhlIGVsZW1lbnQuXG5cdCAqXG5cdCAqIElmIGB2YWx1
ZWAgaXMgc3VwcGxpZWQgKGFuZCBub3QgbnVsbC91bmRlZmluZWQpLCB0aGUgcmVuZGVyZWQgZWxl
bWVudCB3aWxsXG5cdCAqIG5vdCB0cmlnZ2VyIHVwZGF0ZXMgdG8gdGhlIGVsZW1lbnQuIEluc3Rl
YWQsIHRoZSBgdmFsdWVgIHByb3AgbXVzdCBjaGFuZ2UgaW5cblx0ICogb3JkZXIgZm9yIHRoZSBy
ZW5kZXJlZCBlbGVtZW50IHRvIGJlIHVwZGF0ZWQuXG5cdCAqXG5cdCAqIFRoZSByZW5kZXJlZCBl
bGVtZW50IHdpbGwgYmUgaW5pdGlhbGl6ZWQgd2l0aCBhbiBlbXB0eSB2YWx1ZSwgdGhlIHByb3Bc
blx0ICogYGRlZmF1bHRWYWx1ZWAgaWYgc3BlY2lmaWVkLCBvciB0aGUgY2hpbGRyZW4gY29udGVu
dCAoZGVwcmVjYXRlZCkuXG5cdCAqL1xuXHR2YXIgUmVhY3RET01UZXh0YXJlYSA9IHtcblx0ICBn
ZXRIb3N0UHJvcHM6IGZ1bmN0aW9uIChpbnN0LCBwcm9wcykge1xuXHQgICAgIShwcm9wcy5kYW5n
ZXJvdXNseVNldElubmVySFRNTCA9PSBudWxsKSA/ICBmYWxzZSA/IGludmFyaWFudChmYWxzZSwg
J2BkYW5nZXJvdXNseVNldElubmVySFRNTGAgZG9lcyBub3QgbWFrZSBzZW5zZSBvbiA8dGV4dGFy
ZWE+LicpIDogX3Byb2RJbnZhcmlhbnQoJzkxJykgOiB2b2lkIDA7XG5cdFxuXHQgICAgLy8gQWx3
YXlzIHNldCBjaGlsZHJlbiB0byB0aGUgc2FtZSB0aGluZy4gSW4gSUU5LCB0aGUgc2VsZWN0aW9u
IHJhbmdlIHdpbGxcblx0ICAgIC8vIGdldCByZXNldCBpZiBgdGV4dENvbnRlbnRgIGlzIG11dGF0
ZWQuICBXZSBjb3VsZCBhZGQgYSBjaGVjayBpbiBzZXRUZXh0Q29udGVudFxuXHQgICAgLy8gdG8g
b25seSBzZXQgdGhlIHZhbHVlIGlmL3doZW4gdGhlIHZhbHVlIGRpZmZlcnMgZnJvbSB0aGUgbm9k
ZSB2YWx1ZSAod2hpY2ggd291bGRcblx0ICAgIC8vIGNvbXBsZXRlbHkgc29sdmUgdGhpcyBJRTkg
YnVnKSwgYnV0IFNlYmFzdGlhbitCZW4gc2VlbWVkIHRvIGxpa2UgdGhpcyBzb2x1dGlvbi5cblx0
ICAgIC8vIFRoZSB2YWx1ZSBjYW4gYmUgYSBib29sZWFuIG9yIG9iamVjdCBzbyB0aGF0J3Mgd2h5
IGl0J3MgZm9yY2VkIHRvIGJlIGEgc3RyaW5nLlxuXHQgICAgdmFyIGhvc3RQcm9wcyA9IF9hc3Np
Z24oe30sIHByb3BzLCB7XG5cdCAgICAgIHZhbHVlOiB1bmRlZmluZWQsXG5cdCAgICAgIGRlZmF1
bHRWYWx1ZTogdW5kZWZpbmVkLFxuXHQgICAgICBjaGlsZHJlbjogJycgKyBpbnN0Ll93cmFwcGVy
U3RhdGUuaW5pdGlhbFZhbHVlLFxuXHQgICAgICBvbkNoYW5nZTogaW5zdC5fd3JhcHBlclN0YXRl
Lm9uQ2hhbmdlXG5cdCAgICB9KTtcblx0XG5cdCAgICByZXR1cm4gaG9zdFByb3BzO1xuXHQgIH0s
XG5cdFxuXHQgIG1vdW50V3JhcHBlcjogZnVuY3Rpb24gKGluc3QsIHByb3BzKSB7XG5cdCAgICBp
ZiAoZmFsc2UpIHtcblx0ICAgICAgTGlua2VkVmFsdWVVdGlscy5jaGVja1Byb3BUeXBlcygndGV4
dGFyZWEnLCBwcm9wcywgaW5zdC5fY3VycmVudEVsZW1lbnQuX293bmVyKTtcblx0ICAgICAgaWYg
KHByb3BzLnZhbHVlTGluayAhPT0gdW5kZWZpbmVkICYmICFkaWRXYXJuVmFsdWVMaW5rKSB7XG5c
dCAgICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmco
ZmFsc2UsICdgdmFsdWVMaW5rYCBwcm9wIG9uIGB0ZXh0YXJlYWAgaXMgZGVwcmVjYXRlZDsgc2V0
IGB2YWx1ZWAgYW5kIGBvbkNoYW5nZWAgaW5zdGVhZC4nKSA6IHZvaWQgMDtcblx0ICAgICAgICBk
aWRXYXJuVmFsdWVMaW5rID0gdHJ1ZTtcblx0ICAgICAgfVxuXHQgICAgICBpZiAocHJvcHMudmFs
dWUgIT09IHVuZGVmaW5lZCAmJiBwcm9wcy5kZWZhdWx0VmFsdWUgIT09IHVuZGVmaW5lZCAmJiAh
ZGlkV2FyblZhbERlZmF1bHRWYWwpIHtcblx0ICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAh
PT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ1RleHRhcmVhIGVsZW1lbnRzIG11c3Qg
YmUgZWl0aGVyIGNvbnRyb2xsZWQgb3IgdW5jb250cm9sbGVkICcgKyAnKHNwZWNpZnkgZWl0aGVy
IHRoZSB2YWx1ZSBwcm9wLCBvciB0aGUgZGVmYXVsdFZhbHVlIHByb3AsIGJ1dCBub3QgJyArICdi
b3RoKS4gRGVjaWRlIGJldHdlZW4gdXNpbmcgYSBjb250cm9sbGVkIG9yIHVuY29udHJvbGxlZCB0
ZXh0YXJlYSAnICsgJ2FuZCByZW1vdmUgb25lIG9mIHRoZXNlIHByb3BzLiBNb3JlIGluZm86ICcg
KyAnaHR0cHM6Ly9mYi5tZS9yZWFjdC1jb250cm9sbGVkLWNvbXBvbmVudHMnKSA6IHZvaWQgMDtc
blx0ICAgICAgICBkaWRXYXJuVmFsRGVmYXVsdFZhbCA9IHRydWU7XG5cdCAgICAgIH1cblx0ICAg
IH1cblx0XG5cdCAgICB2YXIgdmFsdWUgPSBMaW5rZWRWYWx1ZVV0aWxzLmdldFZhbHVlKHByb3Bz
KTtcblx0ICAgIHZhciBpbml0aWFsVmFsdWUgPSB2YWx1ZTtcblx0XG5cdCAgICAvLyBPbmx5IGJv
dGhlciBmZXRjaGluZyBkZWZhdWx0IHZhbHVlIGlmIHdlJ3JlIGdvaW5nIHRvIHVzZSBpdFxuXHQg
ICAgaWYgKHZhbHVlID09IG51bGwpIHtcblx0ICAgICAgdmFyIGRlZmF1bHRWYWx1ZSA9IHByb3Bz
LmRlZmF1bHRWYWx1ZTtcblx0ICAgICAgLy8gVE9ETyAoeXVuZ3N0ZXJzKTogUmVtb3ZlIHN1cHBv
cnQgZm9yIGNoaWxkcmVuIGNvbnRlbnQgaW4gPHRleHRhcmVhPi5cblx0ICAgICAgdmFyIGNoaWxk
cmVuID0gcHJvcHMuY2hpbGRyZW47XG5cdCAgICAgIGlmIChjaGlsZHJlbiAhPSBudWxsKSB7XG5c
dCAgICAgICAgaWYgKGZhbHNlKSB7XG5cdCAgICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAh
PT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ1VzZSB0aGUgYGRlZmF1bHRWYWx1ZWAg
b3IgYHZhbHVlYCBwcm9wcyBpbnN0ZWFkIG9mIHNldHRpbmcgJyArICdjaGlsZHJlbiBvbiA8dGV4
dGFyZWE+LicpIDogdm9pZCAwO1xuXHQgICAgICAgIH1cblx0ICAgICAgICAhKGRlZmF1bHRWYWx1
ZSA9PSBudWxsKSA/ICBmYWxzZSA/IGludmFyaWFudChmYWxzZSwgJ0lmIHlvdSBzdXBwbHkgYGRl
ZmF1bHRWYWx1ZWAgb24gYSA8dGV4dGFyZWE+LCBkbyBub3QgcGFzcyBjaGlsZHJlbi4nKSA6IF9w
cm9kSW52YXJpYW50KCc5MicpIDogdm9pZCAwO1xuXHQgICAgICAgIGlmIChBcnJheS5pc0FycmF5
KGNoaWxkcmVuKSkge1xuXHQgICAgICAgICAgIShjaGlsZHJlbi5sZW5ndGggPD0gMSkgPyAgZmFs
c2UgPyBpbnZhcmlhbnQoZmFsc2UsICc8dGV4dGFyZWE+IGNhbiBvbmx5IGhhdmUgYXQgbW9zdCBv
bmUgY2hpbGQuJykgOiBfcHJvZEludmFyaWFudCgnOTMnKSA6IHZvaWQgMDtcblx0ICAgICAgICAg
IGNoaWxkcmVuID0gY2hpbGRyZW5bMF07XG5cdCAgICAgICAgfVxuXHRcblx0ICAgICAgICBkZWZh
dWx0VmFsdWUgPSAnJyArIGNoaWxkcmVuO1xuXHQgICAgICB9XG5cdCAgICAgIGlmIChkZWZhdWx0
VmFsdWUgPT0gbnVsbCkge1xuXHQgICAgICAgIGRlZmF1bHRWYWx1ZSA9ICcnO1xuXHQgICAgICB9
XG5cdCAgICAgIGluaXRpYWxWYWx1ZSA9IGRlZmF1bHRWYWx1ZTtcblx0ICAgIH1cblx0XG5cdCAg
ICBpbnN0Ll93cmFwcGVyU3RhdGUgPSB7XG5cdCAgICAgIGluaXRpYWxWYWx1ZTogJycgKyBpbml0
aWFsVmFsdWUsXG5cdCAgICAgIGxpc3RlbmVyczogbnVsbCxcblx0ICAgICAgb25DaGFuZ2U6IF9o
YW5kbGVDaGFuZ2UuYmluZChpbnN0KVxuXHQgICAgfTtcblx0ICB9LFxuXHRcblx0ICB1cGRhdGVX
cmFwcGVyOiBmdW5jdGlvbiAoaW5zdCkge1xuXHQgICAgdmFyIHByb3BzID0gaW5zdC5fY3VycmVu
dEVsZW1lbnQucHJvcHM7XG5cdFxuXHQgICAgdmFyIG5vZGUgPSBSZWFjdERPTUNvbXBvbmVudFRy
ZWUuZ2V0Tm9kZUZyb21JbnN0YW5jZShpbnN0KTtcblx0ICAgIHZhciB2YWx1ZSA9IExpbmtlZFZh
bHVlVXRpbHMuZ2V0VmFsdWUocHJvcHMpO1xuXHQgICAgaWYgKHZhbHVlICE9IG51bGwpIHtcblx0
ICAgICAgLy8gQ2FzdCBgdmFsdWVgIHRvIGEgc3RyaW5nIHRvIGVuc3VyZSB0aGUgdmFsdWUgaXMg
c2V0IGNvcnJlY3RseS4gV2hpbGVcblx0ICAgICAgLy8gYnJvd3NlcnMgdHlwaWNhbGx5IGRvIHRo
aXMgYXMgbmVjZXNzYXJ5LCBqc2RvbSBkb2Vzbid0LlxuXHQgICAgICB2YXIgbmV3VmFsdWUgPSAn
JyArIHZhbHVlO1xuXHRcblx0ICAgICAgLy8gVG8gYXZvaWQgc2lkZSBlZmZlY3RzIChzdWNoIGFz
IGxvc2luZyB0ZXh0IHNlbGVjdGlvbiksIG9ubHkgc2V0IHZhbHVlIGlmIGNoYW5nZWRcblx0ICAg
ICAgaWYgKG5ld1ZhbHVlICE9PSBub2RlLnZhbHVlKSB7XG5cdCAgICAgICAgbm9kZS52YWx1ZSA9
IG5ld1ZhbHVlO1xuXHQgICAgICB9XG5cdCAgICAgIGlmIChwcm9wcy5kZWZhdWx0VmFsdWUgPT0g
bnVsbCkge1xuXHQgICAgICAgIG5vZGUuZGVmYXVsdFZhbHVlID0gbmV3VmFsdWU7XG5cdCAgICAg
IH1cblx0ICAgIH1cblx0ICAgIGlmIChwcm9wcy5kZWZhdWx0VmFsdWUgIT0gbnVsbCkge1xuXHQg
ICAgICBub2RlLmRlZmF1bHRWYWx1ZSA9IHByb3BzLmRlZmF1bHRWYWx1ZTtcblx0ICAgIH1cblx0
ICB9LFxuXHRcblx0ICBwb3N0TW91bnRXcmFwcGVyOiBmdW5jdGlvbiAoaW5zdCkge1xuXHQgICAg
Ly8gVGhpcyBpcyBpbiBwb3N0TW91bnQgYmVjYXVzZSB3ZSBuZWVkIGFjY2VzcyB0byB0aGUgRE9N
IG5vZGUsIHdoaWNoIGlzIG5vdFxuXHQgICAgLy8gYXZhaWxhYmxlIHVudGlsIGFmdGVyIHRoZSBj
b21wb25lbnQgaGFzIG1vdW50ZWQuXG5cdCAgICB2YXIgbm9kZSA9IFJlYWN0RE9NQ29tcG9uZW50
VHJlZS5nZXROb2RlRnJvbUluc3RhbmNlKGluc3QpO1xuXHQgICAgdmFyIHRleHRDb250ZW50ID0g
bm9kZS50ZXh0Q29udGVudDtcblx0XG5cdCAgICAvLyBPbmx5IHNldCBub2RlLnZhbHVlIGlmIHRl
eHRDb250ZW50IGlzIGVxdWFsIHRvIHRoZSBleHBlY3RlZFxuXHQgICAgLy8gaW5pdGlhbCB2YWx1
ZS4gSW4gSUUxMC9JRTExIHRoZXJlIGlzIGEgYnVnIHdoZXJlIHRoZSBwbGFjZWhvbGRlciBhdHRy
aWJ1dGVcblx0ICAgIC8vIHdpbGwgcG9wdWxhdGUgdGV4dENvbnRlbnQgYXMgd2VsbC5cblx0ICAg
IC8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1pY3Jvc29mdC5jb20vbWljcm9zb2Z0LWVkZ2UvcGxhdGZv
cm0vaXNzdWVzLzEwMTUyNS9cblx0ICAgIGlmICh0ZXh0Q29udGVudCA9PT0gaW5zdC5fd3JhcHBl
clN0YXRlLmluaXRpYWxWYWx1ZSkge1xuXHQgICAgICBub2RlLnZhbHVlID0gdGV4dENvbnRlbnQ7
XG5cdCAgICB9XG5cdCAgfVxuXHR9O1xuXHRcblx0ZnVuY3Rpb24gX2hhbmRsZUNoYW5nZShldmVu
dCkge1xuXHQgIHZhciBwcm9wcyA9IHRoaXMuX2N1cnJlbnRFbGVtZW50LnByb3BzO1xuXHQgIHZh
ciByZXR1cm5WYWx1ZSA9IExpbmtlZFZhbHVlVXRpbHMuZXhlY3V0ZU9uQ2hhbmdlKHByb3BzLCBl
dmVudCk7XG5cdCAgUmVhY3RVcGRhdGVzLmFzYXAoZm9yY2VVcGRhdGVJZk1vdW50ZWQsIHRoaXMp
O1xuXHQgIHJldHVybiByZXR1cm5WYWx1ZTtcblx0fVxuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBS
ZWFjdERPTVRleHRhcmVhO1xuXG4vKioqLyB9LFxuLyogMTQ4ICovXG4vKioqLyBmdW5jdGlvbiht
b2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvKipcblx0ICogQ29w
eXJpZ2h0IDIwMTUtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNl
cnZlZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUg
QlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUg
cm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxu
XHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGlu
IHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpcblx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5c
dFxuXHR2YXIgX3Byb2RJbnZhcmlhbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMpO1xuXHRcblx0
dmFyIGludmFyaWFudCA9IF9fd2VicGFja19yZXF1aXJlX18oMSk7XG5cdFxuXHQvKipcblx0ICog
UmV0dXJuIHRoZSBsb3dlc3QgY29tbW9uIGFuY2VzdG9yIG9mIEEgYW5kIEIsIG9yIG51bGwgaWYg
dGhleSBhcmUgaW5cblx0ICogZGlmZmVyZW50IHRyZWVzLlxuXHQgKi9cblx0ZnVuY3Rpb24gZ2V0
TG93ZXN0Q29tbW9uQW5jZXN0b3IoaW5zdEEsIGluc3RCKSB7XG5cdCAgISgnX2hvc3ROb2RlJyBp
biBpbnN0QSkgPyAgZmFsc2UgPyBpbnZhcmlhbnQoZmFsc2UsICdnZXROb2RlRnJvbUluc3RhbmNl
OiBJbnZhbGlkIGFyZ3VtZW50LicpIDogX3Byb2RJbnZhcmlhbnQoJzMzJykgOiB2b2lkIDA7XG5c
dCAgISgnX2hvc3ROb2RlJyBpbiBpbnN0QikgPyAgZmFsc2UgPyBpbnZhcmlhbnQoZmFsc2UsICdn
ZXROb2RlRnJvbUluc3RhbmNlOiBJbnZhbGlkIGFyZ3VtZW50LicpIDogX3Byb2RJbnZhcmlhbnQo
JzMzJykgOiB2b2lkIDA7XG5cdFxuXHQgIHZhciBkZXB0aEEgPSAwO1xuXHQgIGZvciAodmFyIHRl
bXBBID0gaW5zdEE7IHRlbXBBOyB0ZW1wQSA9IHRlbXBBLl9ob3N0UGFyZW50KSB7XG5cdCAgICBk
ZXB0aEErKztcblx0ICB9XG5cdCAgdmFyIGRlcHRoQiA9IDA7XG5cdCAgZm9yICh2YXIgdGVtcEIg
PSBpbnN0QjsgdGVtcEI7IHRlbXBCID0gdGVtcEIuX2hvc3RQYXJlbnQpIHtcblx0ICAgIGRlcHRo
QisrO1xuXHQgIH1cblx0XG5cdCAgLy8gSWYgQSBpcyBkZWVwZXIsIGNyYXdsIHVwLlxuXHQgIHdo
aWxlIChkZXB0aEEgLSBkZXB0aEIgPiAwKSB7XG5cdCAgICBpbnN0QSA9IGluc3RBLl9ob3N0UGFy
ZW50O1xuXHQgICAgZGVwdGhBLS07XG5cdCAgfVxuXHRcblx0ICAvLyBJZiBCIGlzIGRlZXBlciwg
Y3Jhd2wgdXAuXG5cdCAgd2hpbGUgKGRlcHRoQiAtIGRlcHRoQSA+IDApIHtcblx0ICAgIGluc3RC
ID0gaW5zdEIuX2hvc3RQYXJlbnQ7XG5cdCAgICBkZXB0aEItLTtcblx0ICB9XG5cdFxuXHQgIC8v
IFdhbGsgaW4gbG9ja3N0ZXAgdW50aWwgd2UgZmluZCBhIG1hdGNoLlxuXHQgIHZhciBkZXB0aCA9
IGRlcHRoQTtcblx0ICB3aGlsZSAoZGVwdGgtLSkge1xuXHQgICAgaWYgKGluc3RBID09PSBpbnN0
Qikge1xuXHQgICAgICByZXR1cm4gaW5zdEE7XG5cdCAgICB9XG5cdCAgICBpbnN0QSA9IGluc3RB
Ll9ob3N0UGFyZW50O1xuXHQgICAgaW5zdEIgPSBpbnN0Qi5faG9zdFBhcmVudDtcblx0ICB9XG5c
dCAgcmV0dXJuIG51bGw7XG5cdH1cblx0XG5cdC8qKlxuXHQgKiBSZXR1cm4gaWYgQSBpcyBhbiBh
bmNlc3RvciBvZiBCLlxuXHQgKi9cblx0ZnVuY3Rpb24gaXNBbmNlc3RvcihpbnN0QSwgaW5zdEIp
IHtcblx0ICAhKCdfaG9zdE5vZGUnIGluIGluc3RBKSA/ICBmYWxzZSA/IGludmFyaWFudChmYWxz
ZSwgJ2lzQW5jZXN0b3I6IEludmFsaWQgYXJndW1lbnQuJykgOiBfcHJvZEludmFyaWFudCgnMzUn
KSA6IHZvaWQgMDtcblx0ICAhKCdfaG9zdE5vZGUnIGluIGluc3RCKSA/ICBmYWxzZSA/IGludmFy
aWFudChmYWxzZSwgJ2lzQW5jZXN0b3I6IEludmFsaWQgYXJndW1lbnQuJykgOiBfcHJvZEludmFy
aWFudCgnMzUnKSA6IHZvaWQgMDtcblx0XG5cdCAgd2hpbGUgKGluc3RCKSB7XG5cdCAgICBpZiAo
aW5zdEIgPT09IGluc3RBKSB7XG5cdCAgICAgIHJldHVybiB0cnVlO1xuXHQgICAgfVxuXHQgICAg
aW5zdEIgPSBpbnN0Qi5faG9zdFBhcmVudDtcblx0ICB9XG5cdCAgcmV0dXJuIGZhbHNlO1xuXHR9
XG5cdFxuXHQvKipcblx0ICogUmV0dXJuIHRoZSBwYXJlbnQgaW5zdGFuY2Ugb2YgdGhlIHBhc3Nl
ZC1pbiBpbnN0YW5jZS5cblx0ICovXG5cdGZ1bmN0aW9uIGdldFBhcmVudEluc3RhbmNlKGluc3Qp
IHtcblx0ICAhKCdfaG9zdE5vZGUnIGluIGluc3QpID8gIGZhbHNlID8gaW52YXJpYW50KGZhbHNl
LCAnZ2V0UGFyZW50SW5zdGFuY2U6IEludmFsaWQgYXJndW1lbnQuJykgOiBfcHJvZEludmFyaWFu
dCgnMzYnKSA6IHZvaWQgMDtcblx0XG5cdCAgcmV0dXJuIGluc3QuX2hvc3RQYXJlbnQ7XG5cdH1c
blx0XG5cdC8qKlxuXHQgKiBTaW11bGF0ZXMgdGhlIHRyYXZlcnNhbCBvZiBhIHR3by1waGFzZSwg
Y2FwdHVyZS9idWJibGUgZXZlbnQgZGlzcGF0Y2guXG5cdCAqL1xuXHRmdW5jdGlvbiB0cmF2ZXJz
ZVR3b1BoYXNlKGluc3QsIGZuLCBhcmcpIHtcblx0ICB2YXIgcGF0aCA9IFtdO1xuXHQgIHdoaWxl
IChpbnN0KSB7XG5cdCAgICBwYXRoLnB1c2goaW5zdCk7XG5cdCAgICBpbnN0ID0gaW5zdC5faG9z
dFBhcmVudDtcblx0ICB9XG5cdCAgdmFyIGk7XG5cdCAgZm9yIChpID0gcGF0aC5sZW5ndGg7IGkt
LSA+IDA7KSB7XG5cdCAgICBmbihwYXRoW2ldLCAnY2FwdHVyZWQnLCBhcmcpO1xuXHQgIH1cblx0
ICBmb3IgKGkgPSAwOyBpIDwgcGF0aC5sZW5ndGg7IGkrKykge1xuXHQgICAgZm4ocGF0aFtpXSwg
J2J1YmJsZWQnLCBhcmcpO1xuXHQgIH1cblx0fVxuXHRcblx0LyoqXG5cdCAqIFRyYXZlcnNlcyB0
aGUgSUQgaGllcmFyY2h5IGFuZCBpbnZva2VzIHRoZSBzdXBwbGllZCBgY2JgIG9uIGFueSBJRHMg
dGhhdFxuXHQgKiBzaG91bGQgd291bGQgcmVjZWl2ZSBhIGBtb3VzZUVudGVyYCBvciBgbW91c2VM
ZWF2ZWAgZXZlbnQuXG5cdCAqXG5cdCAqIERvZXMgbm90IGludm9rZSB0aGUgY2FsbGJhY2sgb24g
dGhlIG5lYXJlc3QgY29tbW9uIGFuY2VzdG9yIGJlY2F1c2Ugbm90aGluZ1xuXHQgKiBcImVudGVy
ZWRcIiBvciBcImxlZnRcIiB0aGF0IGVsZW1lbnQuXG5cdCAqL1xuXHRmdW5jdGlvbiB0cmF2ZXJz
ZUVudGVyTGVhdmUoZnJvbSwgdG8sIGZuLCBhcmdGcm9tLCBhcmdUbykge1xuXHQgIHZhciBjb21t
b24gPSBmcm9tICYmIHRvID8gZ2V0TG93ZXN0Q29tbW9uQW5jZXN0b3IoZnJvbSwgdG8pIDogbnVs
bDtcblx0ICB2YXIgcGF0aEZyb20gPSBbXTtcblx0ICB3aGlsZSAoZnJvbSAmJiBmcm9tICE9PSBj
b21tb24pIHtcblx0ICAgIHBhdGhGcm9tLnB1c2goZnJvbSk7XG5cdCAgICBmcm9tID0gZnJvbS5f
aG9zdFBhcmVudDtcblx0ICB9XG5cdCAgdmFyIHBhdGhUbyA9IFtdO1xuXHQgIHdoaWxlICh0byAm
JiB0byAhPT0gY29tbW9uKSB7XG5cdCAgICBwYXRoVG8ucHVzaCh0byk7XG5cdCAgICB0byA9IHRv
Ll9ob3N0UGFyZW50O1xuXHQgIH1cblx0ICB2YXIgaTtcblx0ICBmb3IgKGkgPSAwOyBpIDwgcGF0
aEZyb20ubGVuZ3RoOyBpKyspIHtcblx0ICAgIGZuKHBhdGhGcm9tW2ldLCAnYnViYmxlZCcsIGFy
Z0Zyb20pO1xuXHQgIH1cblx0ICBmb3IgKGkgPSBwYXRoVG8ubGVuZ3RoOyBpLS0gPiAwOykge1xu
XHQgICAgZm4ocGF0aFRvW2ldLCAnY2FwdHVyZWQnLCBhcmdUbyk7XG5cdCAgfVxuXHR9XG5cdFxu
XHRtb2R1bGUuZXhwb3J0cyA9IHtcblx0ICBpc0FuY2VzdG9yOiBpc0FuY2VzdG9yLFxuXHQgIGdl
dExvd2VzdENvbW1vbkFuY2VzdG9yOiBnZXRMb3dlc3RDb21tb25BbmNlc3Rvcixcblx0ICBnZXRQ
YXJlbnRJbnN0YW5jZTogZ2V0UGFyZW50SW5zdGFuY2UsXG5cdCAgdHJhdmVyc2VUd29QaGFzZTog
dHJhdmVyc2VUd29QaGFzZSxcblx0ICB0cmF2ZXJzZUVudGVyTGVhdmU6IHRyYXZlcnNlRW50ZXJM
ZWF2ZVxuXHR9O1xuXG4vKioqLyB9LFxuLyogMTQ5ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUs
IGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvKipcblx0ICogQ29weXJpZ2h0
IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5c
blx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0
eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBk
aXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBv
ZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBz
YW1lIGRpcmVjdG9yeS5cblx0ICpcblx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHR2
YXIgX2Fzc2lnbiA9IF9fd2VicGFja19yZXF1aXJlX18oNCk7XG5cdFxuXHR2YXIgUmVhY3RVcGRh
dGVzID0gX193ZWJwYWNrX3JlcXVpcmVfXyg5KTtcblx0dmFyIFRyYW5zYWN0aW9uID0gX193ZWJw
YWNrX3JlcXVpcmVfXygyNyk7XG5cdFxuXHR2YXIgZW1wdHlGdW5jdGlvbiA9IF9fd2VicGFja19y
ZXF1aXJlX18oNyk7XG5cdFxuXHR2YXIgUkVTRVRfQkFUQ0hFRF9VUERBVEVTID0ge1xuXHQgIGlu
aXRpYWxpemU6IGVtcHR5RnVuY3Rpb24sXG5cdCAgY2xvc2U6IGZ1bmN0aW9uICgpIHtcblx0ICAg
IFJlYWN0RGVmYXVsdEJhdGNoaW5nU3RyYXRlZ3kuaXNCYXRjaGluZ1VwZGF0ZXMgPSBmYWxzZTtc
blx0ICB9XG5cdH07XG5cdFxuXHR2YXIgRkxVU0hfQkFUQ0hFRF9VUERBVEVTID0ge1xuXHQgIGlu
aXRpYWxpemU6IGVtcHR5RnVuY3Rpb24sXG5cdCAgY2xvc2U6IFJlYWN0VXBkYXRlcy5mbHVzaEJh
dGNoZWRVcGRhdGVzLmJpbmQoUmVhY3RVcGRhdGVzKVxuXHR9O1xuXHRcblx0dmFyIFRSQU5TQUNU
SU9OX1dSQVBQRVJTID0gW0ZMVVNIX0JBVENIRURfVVBEQVRFUywgUkVTRVRfQkFUQ0hFRF9VUERB
VEVTXTtcblx0XG5cdGZ1bmN0aW9uIFJlYWN0RGVmYXVsdEJhdGNoaW5nU3RyYXRlZ3lUcmFuc2Fj
dGlvbigpIHtcblx0ICB0aGlzLnJlaW5pdGlhbGl6ZVRyYW5zYWN0aW9uKCk7XG5cdH1cblx0XG5c
dF9hc3NpZ24oUmVhY3REZWZhdWx0QmF0Y2hpbmdTdHJhdGVneVRyYW5zYWN0aW9uLnByb3RvdHlw
ZSwgVHJhbnNhY3Rpb24sIHtcblx0ICBnZXRUcmFuc2FjdGlvbldyYXBwZXJzOiBmdW5jdGlvbiAo
KSB7XG5cdCAgICByZXR1cm4gVFJBTlNBQ1RJT05fV1JBUFBFUlM7XG5cdCAgfVxuXHR9KTtcblx0
XG5cdHZhciB0cmFuc2FjdGlvbiA9IG5ldyBSZWFjdERlZmF1bHRCYXRjaGluZ1N0cmF0ZWd5VHJh
bnNhY3Rpb24oKTtcblx0XG5cdHZhciBSZWFjdERlZmF1bHRCYXRjaGluZ1N0cmF0ZWd5ID0ge1xu
XHQgIGlzQmF0Y2hpbmdVcGRhdGVzOiBmYWxzZSxcblx0XG5cdCAgLyoqXG5cdCAgICogQ2FsbCB0
aGUgcHJvdmlkZWQgZnVuY3Rpb24gaW4gYSBjb250ZXh0IHdpdGhpbiB3aGljaCBjYWxscyB0byBg
c2V0U3RhdGVgXG5cdCAgICogYW5kIGZyaWVuZHMgYXJlIGJhdGNoZWQgc3VjaCB0aGF0IGNvbXBv
bmVudHMgYXJlbid0IHVwZGF0ZWQgdW5uZWNlc3NhcmlseS5cblx0ICAgKi9cblx0ICBiYXRjaGVk
VXBkYXRlczogZnVuY3Rpb24gKGNhbGxiYWNrLCBhLCBiLCBjLCBkLCBlKSB7XG5cdCAgICB2YXIg
YWxyZWFkeUJhdGNoaW5nVXBkYXRlcyA9IFJlYWN0RGVmYXVsdEJhdGNoaW5nU3RyYXRlZ3kuaXNC
YXRjaGluZ1VwZGF0ZXM7XG5cdFxuXHQgICAgUmVhY3REZWZhdWx0QmF0Y2hpbmdTdHJhdGVneS5p
c0JhdGNoaW5nVXBkYXRlcyA9IHRydWU7XG5cdFxuXHQgICAgLy8gVGhlIGNvZGUgaXMgd3JpdHRl
biB0aGlzIHdheSB0byBhdm9pZCBleHRyYSBhbGxvY2F0aW9uc1xuXHQgICAgaWYgKGFscmVhZHlC
YXRjaGluZ1VwZGF0ZXMpIHtcblx0ICAgICAgcmV0dXJuIGNhbGxiYWNrKGEsIGIsIGMsIGQsIGUp
O1xuXHQgICAgfSBlbHNlIHtcblx0ICAgICAgcmV0dXJuIHRyYW5zYWN0aW9uLnBlcmZvcm0oY2Fs
bGJhY2ssIG51bGwsIGEsIGIsIGMsIGQsIGUpO1xuXHQgICAgfVxuXHQgIH1cblx0fTtcblx0XG5c
dG1vZHVsZS5leHBvcnRzID0gUmVhY3REZWZhdWx0QmF0Y2hpbmdTdHJhdGVneTtcblxuLyoqKi8g
fSxcbi8qIDE1MCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tf
cmVxdWlyZV9fKSB7XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vi
b29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291
cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGlu
IHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291
cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4g
YmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAq
XG5cdCAqL1xuXHRcblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0dmFyIEFSSUFET01Qcm9wZXJ0eUNv
bmZpZyA9IF9fd2VicGFja19yZXF1aXJlX18oMTI0KTtcblx0dmFyIEJlZm9yZUlucHV0RXZlbnRQ
bHVnaW4gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEyNik7XG5cdHZhciBDaGFuZ2VFdmVudFBsdWdp
biA9IF9fd2VicGFja19yZXF1aXJlX18oMTI4KTtcblx0dmFyIERlZmF1bHRFdmVudFBsdWdpbk9y
ZGVyID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMzApO1xuXHR2YXIgRW50ZXJMZWF2ZUV2ZW50UGx1
Z2luID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMzEpO1xuXHR2YXIgSFRNTERPTVByb3BlcnR5Q29u
ZmlnID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMzMpO1xuXHR2YXIgUmVhY3RDb21wb25lbnRCcm93
c2VyRW52aXJvbm1lbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEzNSk7XG5cdHZhciBSZWFjdERP
TUNvbXBvbmVudCA9IF9fd2VicGFja19yZXF1aXJlX18oMTM4KTtcblx0dmFyIFJlYWN0RE9NQ29t
cG9uZW50VHJlZSA9IF9fd2VicGFja19yZXF1aXJlX18oNSk7XG5cdHZhciBSZWFjdERPTUVtcHR5
Q29tcG9uZW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNDApO1xuXHR2YXIgUmVhY3RET01UcmVl
VHJhdmVyc2FsID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNDgpO1xuXHR2YXIgUmVhY3RET01UZXh0
Q29tcG9uZW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNDYpO1xuXHR2YXIgUmVhY3REZWZhdWx0
QmF0Y2hpbmdTdHJhdGVneSA9IF9fd2VicGFja19yZXF1aXJlX18oMTQ5KTtcblx0dmFyIFJlYWN0
RXZlbnRMaXN0ZW5lciA9IF9fd2VicGFja19yZXF1aXJlX18oMTUzKTtcblx0dmFyIFJlYWN0SW5q
ZWN0aW9uID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNTQpO1xuXHR2YXIgUmVhY3RSZWNvbmNpbGVU
cmFuc2FjdGlvbiA9IF9fd2VicGFja19yZXF1aXJlX18oMTU5KTtcblx0dmFyIFNWR0RPTVByb3Bl
cnR5Q29uZmlnID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNjQpO1xuXHR2YXIgU2VsZWN0RXZlbnRQ
bHVnaW4gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE2NSk7XG5cdHZhciBTaW1wbGVFdmVudFBsdWdp
biA9IF9fd2VicGFja19yZXF1aXJlX18oMTY2KTtcblx0XG5cdHZhciBhbHJlYWR5SW5qZWN0ZWQg
PSBmYWxzZTtcblx0XG5cdGZ1bmN0aW9uIGluamVjdCgpIHtcblx0ICBpZiAoYWxyZWFkeUluamVj
dGVkKSB7XG5cdCAgICAvLyBUT0RPOiBUaGlzIGlzIGN1cnJlbnRseSB0cnVlIGJlY2F1c2UgdGhl
c2UgaW5qZWN0aW9ucyBhcmUgc2hhcmVkIGJldHdlZW5cblx0ICAgIC8vIHRoZSBjbGllbnQgYW5k
IHRoZSBzZXJ2ZXIgcGFja2FnZS4gVGhleSBzaG91bGQgYmUgYnVpbHQgaW5kZXBlbmRlbnRseVxu
XHQgICAgLy8gYW5kIG5vdCBzaGFyZSBhbnkgaW5qZWN0aW9uIHN0YXRlLiBUaGVuIHRoaXMgcHJv
YmxlbSB3aWxsIGJlIHNvbHZlZC5cblx0ICAgIHJldHVybjtcblx0ICB9XG5cdCAgYWxyZWFkeUlu
amVjdGVkID0gdHJ1ZTtcblx0XG5cdCAgUmVhY3RJbmplY3Rpb24uRXZlbnRFbWl0dGVyLmluamVj
dFJlYWN0RXZlbnRMaXN0ZW5lcihSZWFjdEV2ZW50TGlzdGVuZXIpO1xuXHRcblx0ICAvKipcblx0
ICAgKiBJbmplY3QgbW9kdWxlcyBmb3IgcmVzb2x2aW5nIERPTSBoaWVyYXJjaHkgYW5kIHBsdWdp
biBvcmRlcmluZy5cblx0ICAgKi9cblx0ICBSZWFjdEluamVjdGlvbi5FdmVudFBsdWdpbkh1Yi5p
bmplY3RFdmVudFBsdWdpbk9yZGVyKERlZmF1bHRFdmVudFBsdWdpbk9yZGVyKTtcblx0ICBSZWFj
dEluamVjdGlvbi5FdmVudFBsdWdpblV0aWxzLmluamVjdENvbXBvbmVudFRyZWUoUmVhY3RET01D
b21wb25lbnRUcmVlKTtcblx0ICBSZWFjdEluamVjdGlvbi5FdmVudFBsdWdpblV0aWxzLmluamVj
dFRyZWVUcmF2ZXJzYWwoUmVhY3RET01UcmVlVHJhdmVyc2FsKTtcblx0XG5cdCAgLyoqXG5cdCAg
ICogU29tZSBpbXBvcnRhbnQgZXZlbnQgcGx1Z2lucyBpbmNsdWRlZCBieSBkZWZhdWx0ICh3aXRo
b3V0IGhhdmluZyB0byByZXF1aXJlXG5cdCAgICogdGhlbSkuXG5cdCAgICovXG5cdCAgUmVhY3RJ
bmplY3Rpb24uRXZlbnRQbHVnaW5IdWIuaW5qZWN0RXZlbnRQbHVnaW5zQnlOYW1lKHtcblx0ICAg
IFNpbXBsZUV2ZW50UGx1Z2luOiBTaW1wbGVFdmVudFBsdWdpbixcblx0ICAgIEVudGVyTGVhdmVF
dmVudFBsdWdpbjogRW50ZXJMZWF2ZUV2ZW50UGx1Z2luLFxuXHQgICAgQ2hhbmdlRXZlbnRQbHVn
aW46IENoYW5nZUV2ZW50UGx1Z2luLFxuXHQgICAgU2VsZWN0RXZlbnRQbHVnaW46IFNlbGVjdEV2
ZW50UGx1Z2luLFxuXHQgICAgQmVmb3JlSW5wdXRFdmVudFBsdWdpbjogQmVmb3JlSW5wdXRFdmVu
dFBsdWdpblxuXHQgIH0pO1xuXHRcblx0ICBSZWFjdEluamVjdGlvbi5Ib3N0Q29tcG9uZW50Lmlu
amVjdEdlbmVyaWNDb21wb25lbnRDbGFzcyhSZWFjdERPTUNvbXBvbmVudCk7XG5cdFxuXHQgIFJl
YWN0SW5qZWN0aW9uLkhvc3RDb21wb25lbnQuaW5qZWN0VGV4dENvbXBvbmVudENsYXNzKFJlYWN0
RE9NVGV4dENvbXBvbmVudCk7XG5cdFxuXHQgIFJlYWN0SW5qZWN0aW9uLkRPTVByb3BlcnR5Lmlu
amVjdERPTVByb3BlcnR5Q29uZmlnKEFSSUFET01Qcm9wZXJ0eUNvbmZpZyk7XG5cdCAgUmVhY3RJ
bmplY3Rpb24uRE9NUHJvcGVydHkuaW5qZWN0RE9NUHJvcGVydHlDb25maWcoSFRNTERPTVByb3Bl
cnR5Q29uZmlnKTtcblx0ICBSZWFjdEluamVjdGlvbi5ET01Qcm9wZXJ0eS5pbmplY3RET01Qcm9w
ZXJ0eUNvbmZpZyhTVkdET01Qcm9wZXJ0eUNvbmZpZyk7XG5cdFxuXHQgIFJlYWN0SW5qZWN0aW9u
LkVtcHR5Q29tcG9uZW50LmluamVjdEVtcHR5Q29tcG9uZW50RmFjdG9yeShmdW5jdGlvbiAoaW5z
dGFudGlhdGUpIHtcblx0ICAgIHJldHVybiBuZXcgUmVhY3RET01FbXB0eUNvbXBvbmVudChpbnN0
YW50aWF0ZSk7XG5cdCAgfSk7XG5cdFxuXHQgIFJlYWN0SW5qZWN0aW9uLlVwZGF0ZXMuaW5qZWN0
UmVjb25jaWxlVHJhbnNhY3Rpb24oUmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbik7XG5cdCAgUmVh
Y3RJbmplY3Rpb24uVXBkYXRlcy5pbmplY3RCYXRjaGluZ1N0cmF0ZWd5KFJlYWN0RGVmYXVsdEJh
dGNoaW5nU3RyYXRlZ3kpO1xuXHRcblx0ICBSZWFjdEluamVjdGlvbi5Db21wb25lbnQuaW5qZWN0
RW52aXJvbm1lbnQoUmVhY3RDb21wb25lbnRCcm93c2VyRW52aXJvbm1lbnQpO1xuXHR9XG5cdFxu
XHRtb2R1bGUuZXhwb3J0cyA9IHtcblx0ICBpbmplY3Q6IGluamVjdFxuXHR9O1xuXG4vKioqLyB9
LFxuLyogMTUxICovXG45MSxcbi8qIDE1MiAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBv
cnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAyMDEz
LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAq
XG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBs
aWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0
b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0
ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBk
aXJlY3RvcnkuXG5cdCAqXG5cdCAqL1xuXHRcblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0dmFyIEV2
ZW50UGx1Z2luSHViID0gX193ZWJwYWNrX3JlcXVpcmVfXygxOSk7XG5cdFxuXHRmdW5jdGlvbiBy
dW5FdmVudFF1ZXVlSW5CYXRjaChldmVudHMpIHtcblx0ICBFdmVudFBsdWdpbkh1Yi5lbnF1ZXVl
RXZlbnRzKGV2ZW50cyk7XG5cdCAgRXZlbnRQbHVnaW5IdWIucHJvY2Vzc0V2ZW50UXVldWUoZmFs
c2UpO1xuXHR9XG5cdFxuXHR2YXIgUmVhY3RFdmVudEVtaXR0ZXJNaXhpbiA9IHtcblx0ICAvKipc
blx0ICAgKiBTdHJlYW1zIGEgZmlyZWQgdG9wLWxldmVsIGV2ZW50IHRvIGBFdmVudFBsdWdpbkh1
YmAgd2hlcmUgcGx1Z2lucyBoYXZlIHRoZVxuXHQgICAqIG9wcG9ydHVuaXR5IHRvIGNyZWF0ZSBg
UmVhY3RFdmVudGBzIHRvIGJlIGRpc3BhdGNoZWQuXG5cdCAgICovXG5cdCAgaGFuZGxlVG9wTGV2
ZWw6IGZ1bmN0aW9uICh0b3BMZXZlbFR5cGUsIHRhcmdldEluc3QsIG5hdGl2ZUV2ZW50LCBuYXRp
dmVFdmVudFRhcmdldCkge1xuXHQgICAgdmFyIGV2ZW50cyA9IEV2ZW50UGx1Z2luSHViLmV4dHJh
Y3RFdmVudHModG9wTGV2ZWxUeXBlLCB0YXJnZXRJbnN0LCBuYXRpdmVFdmVudCwgbmF0aXZlRXZl
bnRUYXJnZXQpO1xuXHQgICAgcnVuRXZlbnRRdWV1ZUluQmF0Y2goZXZlbnRzKTtcblx0ICB9XG5c
dH07XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IFJlYWN0RXZlbnRFbWl0dGVyTWl4aW47XG5cbi8q
KiovIH0sXG4vKiAxNTMgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJw
YWNrX3JlcXVpcmVfXykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBG
YWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlz
IHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3Vu
ZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlz
IHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMg
Y2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5Llxu
XHQgKlxuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdHZhciBfYXNzaWduID0gX193
ZWJwYWNrX3JlcXVpcmVfXyg0KTtcblx0XG5cdHZhciBFdmVudExpc3RlbmVyID0gX193ZWJwYWNr
X3JlcXVpcmVfXyg1MSk7XG5cdHZhciBFeGVjdXRpb25FbnZpcm9ubWVudCA9IF9fd2VicGFja19y
ZXF1aXJlX18oNik7XG5cdHZhciBQb29sZWRDbGFzcyA9IF9fd2VicGFja19yZXF1aXJlX18oMTMp
O1xuXHR2YXIgUmVhY3RET01Db21wb25lbnRUcmVlID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1KTtc
blx0dmFyIFJlYWN0VXBkYXRlcyA9IF9fd2VicGFja19yZXF1aXJlX18oOSk7XG5cdFxuXHR2YXIg
Z2V0RXZlbnRUYXJnZXQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQ2KTtcblx0dmFyIGdldFVuYm91
bmRlZFNjcm9sbFBvc2l0aW9uID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMDQpO1xuXHRcblx0Lyoq
XG5cdCAqIEZpbmQgdGhlIGRlZXBlc3QgUmVhY3QgY29tcG9uZW50IGNvbXBsZXRlbHkgY29udGFp
bmluZyB0aGUgcm9vdCBvZiB0aGVcblx0ICogcGFzc2VkLWluIGluc3RhbmNlIChmb3IgdXNlIHdo
ZW4gZW50aXJlIFJlYWN0IHRyZWVzIGFyZSBuZXN0ZWQgd2l0aGluIGVhY2hcblx0ICogb3RoZXIp
LiBJZiBSZWFjdCB0cmVlcyBhcmUgbm90IG5lc3RlZCwgcmV0dXJucyBudWxsLlxuXHQgKi9cblx0
ZnVuY3Rpb24gZmluZFBhcmVudChpbnN0KSB7XG5cdCAgLy8gVE9ETzogSXQgbWF5IGJlIGEgZ29v
ZCBpZGVhIHRvIGNhY2hlIHRoaXMgdG8gcHJldmVudCB1bm5lY2Vzc2FyeSBET01cblx0ICAvLyB0
cmF2ZXJzYWwsIGJ1dCBjYWNoaW5nIGlzIGRpZmZpY3VsdCB0byBkbyBjb3JyZWN0bHkgd2l0aG91
dCB1c2luZyBhXG5cdCAgLy8gbXV0YXRpb24gb2JzZXJ2ZXIgdG8gbGlzdGVuIGZvciBhbGwgRE9N
IGNoYW5nZXMuXG5cdCAgd2hpbGUgKGluc3QuX2hvc3RQYXJlbnQpIHtcblx0ICAgIGluc3QgPSBp
bnN0Ll9ob3N0UGFyZW50O1xuXHQgIH1cblx0ICB2YXIgcm9vdE5vZGUgPSBSZWFjdERPTUNvbXBv
bmVudFRyZWUuZ2V0Tm9kZUZyb21JbnN0YW5jZShpbnN0KTtcblx0ICB2YXIgY29udGFpbmVyID0g
cm9vdE5vZGUucGFyZW50Tm9kZTtcblx0ICByZXR1cm4gUmVhY3RET01Db21wb25lbnRUcmVlLmdl
dENsb3Nlc3RJbnN0YW5jZUZyb21Ob2RlKGNvbnRhaW5lcik7XG5cdH1cblx0XG5cdC8vIFVzZWQg
dG8gc3RvcmUgYW5jZXN0b3IgaGllcmFyY2h5IGluIHRvcCBsZXZlbCBjYWxsYmFja1xuXHRmdW5j
dGlvbiBUb3BMZXZlbENhbGxiYWNrQm9va0tlZXBpbmcodG9wTGV2ZWxUeXBlLCBuYXRpdmVFdmVu
dCkge1xuXHQgIHRoaXMudG9wTGV2ZWxUeXBlID0gdG9wTGV2ZWxUeXBlO1xuXHQgIHRoaXMubmF0
aXZlRXZlbnQgPSBuYXRpdmVFdmVudDtcblx0ICB0aGlzLmFuY2VzdG9ycyA9IFtdO1xuXHR9XG5c
dF9hc3NpZ24oVG9wTGV2ZWxDYWxsYmFja0Jvb2tLZWVwaW5nLnByb3RvdHlwZSwge1xuXHQgIGRl
c3RydWN0b3I6IGZ1bmN0aW9uICgpIHtcblx0ICAgIHRoaXMudG9wTGV2ZWxUeXBlID0gbnVsbDtc
blx0ICAgIHRoaXMubmF0aXZlRXZlbnQgPSBudWxsO1xuXHQgICAgdGhpcy5hbmNlc3RvcnMubGVu
Z3RoID0gMDtcblx0ICB9XG5cdH0pO1xuXHRQb29sZWRDbGFzcy5hZGRQb29saW5nVG8oVG9wTGV2
ZWxDYWxsYmFja0Jvb2tLZWVwaW5nLCBQb29sZWRDbGFzcy50d29Bcmd1bWVudFBvb2xlcik7XG5c
dFxuXHRmdW5jdGlvbiBoYW5kbGVUb3BMZXZlbEltcGwoYm9va0tlZXBpbmcpIHtcblx0ICB2YXIg
bmF0aXZlRXZlbnRUYXJnZXQgPSBnZXRFdmVudFRhcmdldChib29rS2VlcGluZy5uYXRpdmVFdmVu
dCk7XG5cdCAgdmFyIHRhcmdldEluc3QgPSBSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0Q2xvc2Vz
dEluc3RhbmNlRnJvbU5vZGUobmF0aXZlRXZlbnRUYXJnZXQpO1xuXHRcblx0ICAvLyBMb29wIHRo
cm91Z2ggdGhlIGhpZXJhcmNoeSwgaW4gY2FzZSB0aGVyZSdzIGFueSBuZXN0ZWQgY29tcG9uZW50
cy5cblx0ICAvLyBJdCdzIGltcG9ydGFudCB0aGF0IHdlIGJ1aWxkIHRoZSBhcnJheSBvZiBhbmNl
c3RvcnMgYmVmb3JlIGNhbGxpbmcgYW55XG5cdCAgLy8gZXZlbnQgaGFuZGxlcnMsIGJlY2F1c2Ug
ZXZlbnQgaGFuZGxlcnMgY2FuIG1vZGlmeSB0aGUgRE9NLCBsZWFkaW5nIHRvXG5cdCAgLy8gaW5j
b25zaXN0ZW5jaWVzIHdpdGggUmVhY3RNb3VudCdzIG5vZGUgY2FjaGUuIFNlZSAjMTEwNS5cblx0
ICB2YXIgYW5jZXN0b3IgPSB0YXJnZXRJbnN0O1xuXHQgIGRvIHtcblx0ICAgIGJvb2tLZWVwaW5n
LmFuY2VzdG9ycy5wdXNoKGFuY2VzdG9yKTtcblx0ICAgIGFuY2VzdG9yID0gYW5jZXN0b3IgJiYg
ZmluZFBhcmVudChhbmNlc3Rvcik7XG5cdCAgfSB3aGlsZSAoYW5jZXN0b3IpO1xuXHRcblx0ICBm
b3IgKHZhciBpID0gMDsgaSA8IGJvb2tLZWVwaW5nLmFuY2VzdG9ycy5sZW5ndGg7IGkrKykge1xu
XHQgICAgdGFyZ2V0SW5zdCA9IGJvb2tLZWVwaW5nLmFuY2VzdG9yc1tpXTtcblx0ICAgIFJlYWN0
RXZlbnRMaXN0ZW5lci5faGFuZGxlVG9wTGV2ZWwoYm9va0tlZXBpbmcudG9wTGV2ZWxUeXBlLCB0
YXJnZXRJbnN0LCBib29rS2VlcGluZy5uYXRpdmVFdmVudCwgZ2V0RXZlbnRUYXJnZXQoYm9va0tl
ZXBpbmcubmF0aXZlRXZlbnQpKTtcblx0ICB9XG5cdH1cblx0XG5cdGZ1bmN0aW9uIHNjcm9sbFZh
bHVlTW9uaXRvcihjYikge1xuXHQgIHZhciBzY3JvbGxQb3NpdGlvbiA9IGdldFVuYm91bmRlZFNj
cm9sbFBvc2l0aW9uKHdpbmRvdyk7XG5cdCAgY2Ioc2Nyb2xsUG9zaXRpb24pO1xuXHR9XG5cdFxu
XHR2YXIgUmVhY3RFdmVudExpc3RlbmVyID0ge1xuXHQgIF9lbmFibGVkOiB0cnVlLFxuXHQgIF9o
YW5kbGVUb3BMZXZlbDogbnVsbCxcblx0XG5cdCAgV0lORE9XX0hBTkRMRTogRXhlY3V0aW9uRW52
aXJvbm1lbnQuY2FuVXNlRE9NID8gd2luZG93IDogbnVsbCxcblx0XG5cdCAgc2V0SGFuZGxlVG9w
TGV2ZWw6IGZ1bmN0aW9uIChoYW5kbGVUb3BMZXZlbCkge1xuXHQgICAgUmVhY3RFdmVudExpc3Rl
bmVyLl9oYW5kbGVUb3BMZXZlbCA9IGhhbmRsZVRvcExldmVsO1xuXHQgIH0sXG5cdFxuXHQgIHNl
dEVuYWJsZWQ6IGZ1bmN0aW9uIChlbmFibGVkKSB7XG5cdCAgICBSZWFjdEV2ZW50TGlzdGVuZXIu
X2VuYWJsZWQgPSAhIWVuYWJsZWQ7XG5cdCAgfSxcblx0XG5cdCAgaXNFbmFibGVkOiBmdW5jdGlv
biAoKSB7XG5cdCAgICByZXR1cm4gUmVhY3RFdmVudExpc3RlbmVyLl9lbmFibGVkO1xuXHQgIH0s
XG5cdFxuXHQgIC8qKlxuXHQgICAqIFRyYXBzIHRvcC1sZXZlbCBldmVudHMgYnkgdXNpbmcgZXZl
bnQgYnViYmxpbmcuXG5cdCAgICpcblx0ICAgKiBAcGFyYW0ge3N0cmluZ30gdG9wTGV2ZWxUeXBl
IFJlY29yZCBmcm9tIGBFdmVudENvbnN0YW50c2AuXG5cdCAgICogQHBhcmFtIHtzdHJpbmd9IGhh
bmRsZXJCYXNlTmFtZSBFdmVudCBuYW1lIChlLmcuIFwiY2xpY2tcIikuXG5cdCAgICogQHBhcmFt
IHtvYmplY3R9IGVsZW1lbnQgRWxlbWVudCBvbiB3aGljaCB0byBhdHRhY2ggbGlzdGVuZXIuXG5c
dCAgICogQHJldHVybiB7P29iamVjdH0gQW4gb2JqZWN0IHdpdGggYSByZW1vdmUgZnVuY3Rpb24g
d2hpY2ggd2lsbCBmb3JjZWZ1bGx5XG5cdCAgICogICAgICAgICAgICAgICAgICByZW1vdmUgdGhl
IGxpc3RlbmVyLlxuXHQgICAqIEBpbnRlcm5hbFxuXHQgICAqL1xuXHQgIHRyYXBCdWJibGVkRXZl
bnQ6IGZ1bmN0aW9uICh0b3BMZXZlbFR5cGUsIGhhbmRsZXJCYXNlTmFtZSwgZWxlbWVudCkge1xu
XHQgICAgaWYgKCFlbGVtZW50KSB7XG5cdCAgICAgIHJldHVybiBudWxsO1xuXHQgICAgfVxuXHQg
ICAgcmV0dXJuIEV2ZW50TGlzdGVuZXIubGlzdGVuKGVsZW1lbnQsIGhhbmRsZXJCYXNlTmFtZSwg
UmVhY3RFdmVudExpc3RlbmVyLmRpc3BhdGNoRXZlbnQuYmluZChudWxsLCB0b3BMZXZlbFR5cGUp
KTtcblx0ICB9LFxuXHRcblx0ICAvKipcblx0ICAgKiBUcmFwcyBhIHRvcC1sZXZlbCBldmVudCBi
eSB1c2luZyBldmVudCBjYXB0dXJpbmcuXG5cdCAgICpcblx0ICAgKiBAcGFyYW0ge3N0cmluZ30g
dG9wTGV2ZWxUeXBlIFJlY29yZCBmcm9tIGBFdmVudENvbnN0YW50c2AuXG5cdCAgICogQHBhcmFt
IHtzdHJpbmd9IGhhbmRsZXJCYXNlTmFtZSBFdmVudCBuYW1lIChlLmcuIFwiY2xpY2tcIikuXG5c
dCAgICogQHBhcmFtIHtvYmplY3R9IGVsZW1lbnQgRWxlbWVudCBvbiB3aGljaCB0byBhdHRhY2gg
bGlzdGVuZXIuXG5cdCAgICogQHJldHVybiB7P29iamVjdH0gQW4gb2JqZWN0IHdpdGggYSByZW1v
dmUgZnVuY3Rpb24gd2hpY2ggd2lsbCBmb3JjZWZ1bGx5XG5cdCAgICogICAgICAgICAgICAgICAg
ICByZW1vdmUgdGhlIGxpc3RlbmVyLlxuXHQgICAqIEBpbnRlcm5hbFxuXHQgICAqL1xuXHQgIHRy
YXBDYXB0dXJlZEV2ZW50OiBmdW5jdGlvbiAodG9wTGV2ZWxUeXBlLCBoYW5kbGVyQmFzZU5hbWUs
IGVsZW1lbnQpIHtcblx0ICAgIGlmICghZWxlbWVudCkge1xuXHQgICAgICByZXR1cm4gbnVsbDtc
blx0ICAgIH1cblx0ICAgIHJldHVybiBFdmVudExpc3RlbmVyLmNhcHR1cmUoZWxlbWVudCwgaGFu
ZGxlckJhc2VOYW1lLCBSZWFjdEV2ZW50TGlzdGVuZXIuZGlzcGF0Y2hFdmVudC5iaW5kKG51bGws
IHRvcExldmVsVHlwZSkpO1xuXHQgIH0sXG5cdFxuXHQgIG1vbml0b3JTY3JvbGxWYWx1ZTogZnVu
Y3Rpb24gKHJlZnJlc2gpIHtcblx0ICAgIHZhciBjYWxsYmFjayA9IHNjcm9sbFZhbHVlTW9uaXRv
ci5iaW5kKG51bGwsIHJlZnJlc2gpO1xuXHQgICAgRXZlbnRMaXN0ZW5lci5saXN0ZW4od2luZG93
LCAnc2Nyb2xsJywgY2FsbGJhY2spO1xuXHQgIH0sXG5cdFxuXHQgIGRpc3BhdGNoRXZlbnQ6IGZ1
bmN0aW9uICh0b3BMZXZlbFR5cGUsIG5hdGl2ZUV2ZW50KSB7XG5cdCAgICBpZiAoIVJlYWN0RXZl
bnRMaXN0ZW5lci5fZW5hYmxlZCkge1xuXHQgICAgICByZXR1cm47XG5cdCAgICB9XG5cdFxuXHQg
ICAgdmFyIGJvb2tLZWVwaW5nID0gVG9wTGV2ZWxDYWxsYmFja0Jvb2tLZWVwaW5nLmdldFBvb2xl
ZCh0b3BMZXZlbFR5cGUsIG5hdGl2ZUV2ZW50KTtcblx0ICAgIHRyeSB7XG5cdCAgICAgIC8vIEV2
ZW50IHF1ZXVlIGJlaW5nIHByb2Nlc3NlZCBpbiB0aGUgc2FtZSBjeWNsZSBhbGxvd3Ncblx0ICAg
ICAgLy8gYHByZXZlbnREZWZhdWx0YC5cblx0ICAgICAgUmVhY3RVcGRhdGVzLmJhdGNoZWRVcGRh
dGVzKGhhbmRsZVRvcExldmVsSW1wbCwgYm9va0tlZXBpbmcpO1xuXHQgICAgfSBmaW5hbGx5IHtc
blx0ICAgICAgVG9wTGV2ZWxDYWxsYmFja0Jvb2tLZWVwaW5nLnJlbGVhc2UoYm9va0tlZXBpbmcp
O1xuXHQgICAgfVxuXHQgIH1cblx0fTtcblx0XG5cdG1vZHVsZS5leHBvcnRzID0gUmVhY3RFdmVu
dExpc3RlbmVyO1xuXG4vKioqLyB9LFxuLyogMTU0ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUs
IGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvKipcblx0ICogQ29weXJpZ2h0
IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5c
blx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0
eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBk
aXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBv
ZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBz
YW1lIGRpcmVjdG9yeS5cblx0ICpcblx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHR2
YXIgRE9NUHJvcGVydHkgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE1KTtcblx0dmFyIEV2ZW50UGx1
Z2luSHViID0gX193ZWJwYWNrX3JlcXVpcmVfXygxOSk7XG5cdHZhciBFdmVudFBsdWdpblV0aWxz
ID0gX193ZWJwYWNrX3JlcXVpcmVfXygzNyk7XG5cdHZhciBSZWFjdENvbXBvbmVudEVudmlyb25t
ZW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0MCk7XG5cdHZhciBSZWFjdEVtcHR5Q29tcG9uZW50
ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg2Myk7XG5cdHZhciBSZWFjdEJyb3dzZXJFdmVudEVtaXR0
ZXIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDI1KTtcblx0dmFyIFJlYWN0SG9zdENvbXBvbmVudCA9
IF9fd2VicGFja19yZXF1aXJlX18oNjUpO1xuXHR2YXIgUmVhY3RVcGRhdGVzID0gX193ZWJwYWNr
X3JlcXVpcmVfXyg5KTtcblx0XG5cdHZhciBSZWFjdEluamVjdGlvbiA9IHtcblx0ICBDb21wb25l
bnQ6IFJlYWN0Q29tcG9uZW50RW52aXJvbm1lbnQuaW5qZWN0aW9uLFxuXHQgIERPTVByb3BlcnR5
OiBET01Qcm9wZXJ0eS5pbmplY3Rpb24sXG5cdCAgRW1wdHlDb21wb25lbnQ6IFJlYWN0RW1wdHlD
b21wb25lbnQuaW5qZWN0aW9uLFxuXHQgIEV2ZW50UGx1Z2luSHViOiBFdmVudFBsdWdpbkh1Yi5p
bmplY3Rpb24sXG5cdCAgRXZlbnRQbHVnaW5VdGlsczogRXZlbnRQbHVnaW5VdGlscy5pbmplY3Rp
b24sXG5cdCAgRXZlbnRFbWl0dGVyOiBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIuaW5qZWN0aW9u
LFxuXHQgIEhvc3RDb21wb25lbnQ6IFJlYWN0SG9zdENvbXBvbmVudC5pbmplY3Rpb24sXG5cdCAg
VXBkYXRlczogUmVhY3RVcGRhdGVzLmluamVjdGlvblxuXHR9O1xuXHRcblx0bW9kdWxlLmV4cG9y
dHMgPSBSZWFjdEluamVjdGlvbjtcblxuLyoqKi8gfSxcbi8qIDE1NSAqL1xuLyoqKi8gZnVuY3Rp
b24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0LyoqXG5cdCAq
IENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMg
cmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIg
dGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4g
dGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3Jh
bnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmls
ZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqL1xuXHRcblx0J3VzZSBzdHJpY3Qn
O1xuXHRcblx0dmFyIGFkbGVyMzIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE3Nyk7XG5cdFxuXHR2
YXIgVEFHX0VORCA9IC9cXC8/Pi87XG5cdHZhciBDT01NRU5UX1NUQVJUID0gL148XFwhXFwtXFwt
Lztcblx0XG5cdHZhciBSZWFjdE1hcmt1cENoZWNrc3VtID0ge1xuXHQgIENIRUNLU1VNX0FUVFJf
TkFNRTogJ2RhdGEtcmVhY3QtY2hlY2tzdW0nLFxuXHRcblx0ICAvKipcblx0ICAgKiBAcGFyYW0g
e3N0cmluZ30gbWFya3VwIE1hcmt1cCBzdHJpbmdcblx0ICAgKiBAcmV0dXJuIHtzdHJpbmd9IE1h
cmt1cCBzdHJpbmcgd2l0aCBjaGVja3N1bSBhdHRyaWJ1dGUgYXR0YWNoZWRcblx0ICAgKi9cblx0
ICBhZGRDaGVja3N1bVRvTWFya3VwOiBmdW5jdGlvbiAobWFya3VwKSB7XG5cdCAgICB2YXIgY2hl
Y2tzdW0gPSBhZGxlcjMyKG1hcmt1cCk7XG5cdFxuXHQgICAgLy8gQWRkIGNoZWNrc3VtIChoYW5k
bGUgYm90aCBwYXJlbnQgdGFncywgY29tbWVudHMgYW5kIHNlbGYtY2xvc2luZyB0YWdzKVxuXHQg
ICAgaWYgKENPTU1FTlRfU1RBUlQudGVzdChtYXJrdXApKSB7XG5cdCAgICAgIHJldHVybiBtYXJr
dXA7XG5cdCAgICB9IGVsc2Uge1xuXHQgICAgICByZXR1cm4gbWFya3VwLnJlcGxhY2UoVEFHX0VO
RCwgJyAnICsgUmVhY3RNYXJrdXBDaGVja3N1bS5DSEVDS1NVTV9BVFRSX05BTUUgKyAnPVwiJyAr
IGNoZWNrc3VtICsgJ1wiJCYnKTtcblx0ICAgIH1cblx0ICB9LFxuXHRcblx0ICAvKipcblx0ICAg
KiBAcGFyYW0ge3N0cmluZ30gbWFya3VwIHRvIHVzZVxuXHQgICAqIEBwYXJhbSB7RE9NRWxlbWVu
dH0gZWxlbWVudCByb290IFJlYWN0IGVsZW1lbnRcblx0ICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0g
d2hldGhlciBvciBub3QgdGhlIG1hcmt1cCBpcyB0aGUgc2FtZVxuXHQgICAqL1xuXHQgIGNhblJl
dXNlTWFya3VwOiBmdW5jdGlvbiAobWFya3VwLCBlbGVtZW50KSB7XG5cdCAgICB2YXIgZXhpc3Rp
bmdDaGVja3N1bSA9IGVsZW1lbnQuZ2V0QXR0cmlidXRlKFJlYWN0TWFya3VwQ2hlY2tzdW0uQ0hF
Q0tTVU1fQVRUUl9OQU1FKTtcblx0ICAgIGV4aXN0aW5nQ2hlY2tzdW0gPSBleGlzdGluZ0NoZWNr
c3VtICYmIHBhcnNlSW50KGV4aXN0aW5nQ2hlY2tzdW0sIDEwKTtcblx0ICAgIHZhciBtYXJrdXBD
aGVja3N1bSA9IGFkbGVyMzIobWFya3VwKTtcblx0ICAgIHJldHVybiBtYXJrdXBDaGVja3N1bSA9
PT0gZXhpc3RpbmdDaGVja3N1bTtcblx0ICB9XG5cdH07XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9
IFJlYWN0TWFya3VwQ2hlY2tzdW07XG5cbi8qKiovIH0sXG4vKiAxNTYgKi9cbi8qKiovIGZ1bmN0
aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8qKlxuXHQg
KiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRz
IHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVy
IHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxlIGlu
IHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdy
YW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZp
bGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0
Jztcblx0XG5cdHZhciBfcHJvZEludmFyaWFudCA9IF9fd2VicGFja19yZXF1aXJlX18oMyk7XG5c
dFxuXHR2YXIgUmVhY3RDb21wb25lbnRFbnZpcm9ubWVudCA9IF9fd2VicGFja19yZXF1aXJlX18o
NDApO1xuXHR2YXIgUmVhY3RJbnN0YW5jZU1hcCA9IF9fd2VicGFja19yZXF1aXJlX18oMjEpO1xu
XHR2YXIgUmVhY3RJbnN0cnVtZW50YXRpb24gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDgpO1xuXHRc
blx0dmFyIFJlYWN0Q3VycmVudE93bmVyID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMSk7XG5cdHZh
ciBSZWFjdFJlY29uY2lsZXIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE2KTtcblx0dmFyIFJlYWN0
Q2hpbGRSZWNvbmNpbGVyID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMzQpO1xuXHRcblx0dmFyIGVt
cHR5RnVuY3Rpb24gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDcpO1xuXHR2YXIgZmxhdHRlbkNoaWxk
cmVuID0gX193ZWJwYWNrX3JlcXVpcmVfXygxODApO1xuXHR2YXIgaW52YXJpYW50ID0gX193ZWJw
YWNrX3JlcXVpcmVfXygxKTtcblx0XG5cdC8qKlxuXHQgKiBNYWtlIGFuIHVwZGF0ZSBmb3IgbWFy
a3VwIHRvIGJlIHJlbmRlcmVkIGFuZCBpbnNlcnRlZCBhdCBhIHN1cHBsaWVkIGluZGV4LlxuXHQg
KlxuXHQgKiBAcGFyYW0ge3N0cmluZ30gbWFya3VwIE1hcmt1cCB0aGF0IHJlbmRlcnMgaW50byBh
biBlbGVtZW50LlxuXHQgKiBAcGFyYW0ge251bWJlcn0gdG9JbmRleCBEZXN0aW5hdGlvbiBpbmRl
eC5cblx0ICogQHByaXZhdGVcblx0ICovXG5cdGZ1bmN0aW9uIG1ha2VJbnNlcnRNYXJrdXAobWFy
a3VwLCBhZnRlck5vZGUsIHRvSW5kZXgpIHtcblx0ICAvLyBOT1RFOiBOdWxsIHZhbHVlcyByZWR1
Y2UgaGlkZGVuIGNsYXNzZXMuXG5cdCAgcmV0dXJuIHtcblx0ICAgIHR5cGU6ICdJTlNFUlRfTUFS
S1VQJyxcblx0ICAgIGNvbnRlbnQ6IG1hcmt1cCxcblx0ICAgIGZyb21JbmRleDogbnVsbCxcblx0
ICAgIGZyb21Ob2RlOiBudWxsLFxuXHQgICAgdG9JbmRleDogdG9JbmRleCxcblx0ICAgIGFmdGVy
Tm9kZTogYWZ0ZXJOb2RlXG5cdCAgfTtcblx0fVxuXHRcblx0LyoqXG5cdCAqIE1ha2UgYW4gdXBk
YXRlIGZvciBtb3ZpbmcgYW4gZXhpc3RpbmcgZWxlbWVudCB0byBhbm90aGVyIGluZGV4LlxuXHQg
KlxuXHQgKiBAcGFyYW0ge251bWJlcn0gZnJvbUluZGV4IFNvdXJjZSBpbmRleCBvZiB0aGUgZXhp
c3RpbmcgZWxlbWVudC5cblx0ICogQHBhcmFtIHtudW1iZXJ9IHRvSW5kZXggRGVzdGluYXRpb24g
aW5kZXggb2YgdGhlIGVsZW1lbnQuXG5cdCAqIEBwcml2YXRlXG5cdCAqL1xuXHRmdW5jdGlvbiBt
YWtlTW92ZShjaGlsZCwgYWZ0ZXJOb2RlLCB0b0luZGV4KSB7XG5cdCAgLy8gTk9URTogTnVsbCB2
YWx1ZXMgcmVkdWNlIGhpZGRlbiBjbGFzc2VzLlxuXHQgIHJldHVybiB7XG5cdCAgICB0eXBlOiAn
TU9WRV9FWElTVElORycsXG5cdCAgICBjb250ZW50OiBudWxsLFxuXHQgICAgZnJvbUluZGV4OiBj
aGlsZC5fbW91bnRJbmRleCxcblx0ICAgIGZyb21Ob2RlOiBSZWFjdFJlY29uY2lsZXIuZ2V0SG9z
dE5vZGUoY2hpbGQpLFxuXHQgICAgdG9JbmRleDogdG9JbmRleCxcblx0ICAgIGFmdGVyTm9kZTog
YWZ0ZXJOb2RlXG5cdCAgfTtcblx0fVxuXHRcblx0LyoqXG5cdCAqIE1ha2UgYW4gdXBkYXRlIGZv
ciByZW1vdmluZyBhbiBlbGVtZW50IGF0IGFuIGluZGV4LlxuXHQgKlxuXHQgKiBAcGFyYW0ge251
bWJlcn0gZnJvbUluZGV4IEluZGV4IG9mIHRoZSBlbGVtZW50IHRvIHJlbW92ZS5cblx0ICogQHBy
aXZhdGVcblx0ICovXG5cdGZ1bmN0aW9uIG1ha2VSZW1vdmUoY2hpbGQsIG5vZGUpIHtcblx0ICAv
LyBOT1RFOiBOdWxsIHZhbHVlcyByZWR1Y2UgaGlkZGVuIGNsYXNzZXMuXG5cdCAgcmV0dXJuIHtc
blx0ICAgIHR5cGU6ICdSRU1PVkVfTk9ERScsXG5cdCAgICBjb250ZW50OiBudWxsLFxuXHQgICAg
ZnJvbUluZGV4OiBjaGlsZC5fbW91bnRJbmRleCxcblx0ICAgIGZyb21Ob2RlOiBub2RlLFxuXHQg
ICAgdG9JbmRleDogbnVsbCxcblx0ICAgIGFmdGVyTm9kZTogbnVsbFxuXHQgIH07XG5cdH1cblx0
XG5cdC8qKlxuXHQgKiBNYWtlIGFuIHVwZGF0ZSBmb3Igc2V0dGluZyB0aGUgbWFya3VwIG9mIGEg
bm9kZS5cblx0ICpcblx0ICogQHBhcmFtIHtzdHJpbmd9IG1hcmt1cCBNYXJrdXAgdGhhdCByZW5k
ZXJzIGludG8gYW4gZWxlbWVudC5cblx0ICogQHByaXZhdGVcblx0ICovXG5cdGZ1bmN0aW9uIG1h
a2VTZXRNYXJrdXAobWFya3VwKSB7XG5cdCAgLy8gTk9URTogTnVsbCB2YWx1ZXMgcmVkdWNlIGhp
ZGRlbiBjbGFzc2VzLlxuXHQgIHJldHVybiB7XG5cdCAgICB0eXBlOiAnU0VUX01BUktVUCcsXG5c
dCAgICBjb250ZW50OiBtYXJrdXAsXG5cdCAgICBmcm9tSW5kZXg6IG51bGwsXG5cdCAgICBmcm9t
Tm9kZTogbnVsbCxcblx0ICAgIHRvSW5kZXg6IG51bGwsXG5cdCAgICBhZnRlck5vZGU6IG51bGxc
blx0ICB9O1xuXHR9XG5cdFxuXHQvKipcblx0ICogTWFrZSBhbiB1cGRhdGUgZm9yIHNldHRpbmcg
dGhlIHRleHQgY29udGVudC5cblx0ICpcblx0ICogQHBhcmFtIHtzdHJpbmd9IHRleHRDb250ZW50
IFRleHQgY29udGVudCB0byBzZXQuXG5cdCAqIEBwcml2YXRlXG5cdCAqL1xuXHRmdW5jdGlvbiBt
YWtlVGV4dENvbnRlbnQodGV4dENvbnRlbnQpIHtcblx0ICAvLyBOT1RFOiBOdWxsIHZhbHVlcyBy
ZWR1Y2UgaGlkZGVuIGNsYXNzZXMuXG5cdCAgcmV0dXJuIHtcblx0ICAgIHR5cGU6ICdURVhUX0NP
TlRFTlQnLFxuXHQgICAgY29udGVudDogdGV4dENvbnRlbnQsXG5cdCAgICBmcm9tSW5kZXg6IG51
bGwsXG5cdCAgICBmcm9tTm9kZTogbnVsbCxcblx0ICAgIHRvSW5kZXg6IG51bGwsXG5cdCAgICBh
ZnRlck5vZGU6IG51bGxcblx0ICB9O1xuXHR9XG5cdFxuXHQvKipcblx0ICogUHVzaCBhbiB1cGRh
dGUsIGlmIGFueSwgb250byB0aGUgcXVldWUuIENyZWF0ZXMgYSBuZXcgcXVldWUgaWYgbm9uZSBp
c1xuXHQgKiBwYXNzZWQgYW5kIGFsd2F5cyByZXR1cm5zIHRoZSBxdWV1ZS4gTXV0YXRpdmUuXG5c
dCAqL1xuXHRmdW5jdGlvbiBlbnF1ZXVlKHF1ZXVlLCB1cGRhdGUpIHtcblx0ICBpZiAodXBkYXRl
KSB7XG5cdCAgICBxdWV1ZSA9IHF1ZXVlIHx8IFtdO1xuXHQgICAgcXVldWUucHVzaCh1cGRhdGUp
O1xuXHQgIH1cblx0ICByZXR1cm4gcXVldWU7XG5cdH1cblx0XG5cdC8qKlxuXHQgKiBQcm9jZXNz
ZXMgYW55IGVucXVldWVkIHVwZGF0ZXMuXG5cdCAqXG5cdCAqIEBwcml2YXRlXG5cdCAqL1xuXHRm
dW5jdGlvbiBwcm9jZXNzUXVldWUoaW5zdCwgdXBkYXRlUXVldWUpIHtcblx0ICBSZWFjdENvbXBv
bmVudEVudmlyb25tZW50LnByb2Nlc3NDaGlsZHJlblVwZGF0ZXMoaW5zdCwgdXBkYXRlUXVldWUp
O1xuXHR9XG5cdFxuXHR2YXIgc2V0Q2hpbGRyZW5Gb3JJbnN0cnVtZW50YXRpb24gPSBlbXB0eUZ1
bmN0aW9uO1xuXHRpZiAoZmFsc2UpIHtcblx0ICB2YXIgZ2V0RGVidWdJRCA9IGZ1bmN0aW9uIChp
bnN0KSB7XG5cdCAgICBpZiAoIWluc3QuX2RlYnVnSUQpIHtcblx0ICAgICAgLy8gQ2hlY2sgZm9y
IEFSVC1saWtlIGluc3RhbmNlcy4gVE9ETzogVGhpcyBpcyBzaWxseS9ncm9zcy5cblx0ICAgICAg
dmFyIGludGVybmFsO1xuXHQgICAgICBpZiAoaW50ZXJuYWwgPSBSZWFjdEluc3RhbmNlTWFwLmdl
dChpbnN0KSkge1xuXHQgICAgICAgIGluc3QgPSBpbnRlcm5hbDtcblx0ICAgICAgfVxuXHQgICAg
fVxuXHQgICAgcmV0dXJuIGluc3QuX2RlYnVnSUQ7XG5cdCAgfTtcblx0ICBzZXRDaGlsZHJlbkZv
ckluc3RydW1lbnRhdGlvbiA9IGZ1bmN0aW9uIChjaGlsZHJlbikge1xuXHQgICAgdmFyIGRlYnVn
SUQgPSBnZXREZWJ1Z0lEKHRoaXMpO1xuXHQgICAgLy8gVE9ETzogUmVhY3QgTmF0aXZlIGVtcHR5
IGNvbXBvbmVudHMgYXJlIGFsc28gbXVsdGljaGlsZC5cblx0ICAgIC8vIFRoaXMgbWVhbnMgdGhl
eSBzdGlsbCBnZXQgaW50byB0aGlzIG1ldGhvZCBidXQgZG9uJ3QgaGF2ZSBfZGVidWdJRC5cblx0
ICAgIGlmIChkZWJ1Z0lEICE9PSAwKSB7XG5cdCAgICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRl
YnVnVG9vbC5vblNldENoaWxkcmVuKGRlYnVnSUQsIGNoaWxkcmVuID8gT2JqZWN0LmtleXMoY2hp
bGRyZW4pLm1hcChmdW5jdGlvbiAoa2V5KSB7XG5cdCAgICAgICAgcmV0dXJuIGNoaWxkcmVuW2tl
eV0uX2RlYnVnSUQ7XG5cdCAgICAgIH0pIDogW10pO1xuXHQgICAgfVxuXHQgIH07XG5cdH1cblx0
XG5cdC8qKlxuXHQgKiBSZWFjdE11bHRpQ2hpbGQgYXJlIGNhcGFibGUgb2YgcmVjb25jaWxpbmcg
bXVsdGlwbGUgY2hpbGRyZW4uXG5cdCAqXG5cdCAqIEBjbGFzcyBSZWFjdE11bHRpQ2hpbGRcblx0
ICogQGludGVybmFsXG5cdCAqL1xuXHR2YXIgUmVhY3RNdWx0aUNoaWxkID0ge1xuXHQgIC8qKlxu
XHQgICAqIFByb3ZpZGVzIGNvbW1vbiBmdW5jdGlvbmFsaXR5IGZvciBjb21wb25lbnRzIHRoYXQg
bXVzdCByZWNvbmNpbGUgbXVsdGlwbGVcblx0ICAgKiBjaGlsZHJlbi4gVGhpcyBpcyB1c2VkIGJ5
IGBSZWFjdERPTUNvbXBvbmVudGAgdG8gbW91bnQsIHVwZGF0ZSwgYW5kXG5cdCAgICogdW5tb3Vu
dCBjaGlsZCBjb21wb25lbnRzLlxuXHQgICAqXG5cdCAgICogQGxlbmRzIHtSZWFjdE11bHRpQ2hp
bGQucHJvdG90eXBlfVxuXHQgICAqL1xuXHQgIE1peGluOiB7XG5cdCAgICBfcmVjb25jaWxlcklu
c3RhbnRpYXRlQ2hpbGRyZW46IGZ1bmN0aW9uIChuZXN0ZWRDaGlsZHJlbiwgdHJhbnNhY3Rpb24s
IGNvbnRleHQpIHtcblx0ICAgICAgaWYgKGZhbHNlKSB7XG5cdCAgICAgICAgdmFyIHNlbGZEZWJ1
Z0lEID0gZ2V0RGVidWdJRCh0aGlzKTtcblx0ICAgICAgICBpZiAodGhpcy5fY3VycmVudEVsZW1l
bnQpIHtcblx0ICAgICAgICAgIHRyeSB7XG5cdCAgICAgICAgICAgIFJlYWN0Q3VycmVudE93bmVy
LmN1cnJlbnQgPSB0aGlzLl9jdXJyZW50RWxlbWVudC5fb3duZXI7XG5cdCAgICAgICAgICAgIHJl
dHVybiBSZWFjdENoaWxkUmVjb25jaWxlci5pbnN0YW50aWF0ZUNoaWxkcmVuKG5lc3RlZENoaWxk
cmVuLCB0cmFuc2FjdGlvbiwgY29udGV4dCwgc2VsZkRlYnVnSUQpO1xuXHQgICAgICAgICAgfSBm
aW5hbGx5IHtcblx0ICAgICAgICAgICAgUmVhY3RDdXJyZW50T3duZXIuY3VycmVudCA9IG51bGw7
XG5cdCAgICAgICAgICB9XG5cdCAgICAgICAgfVxuXHQgICAgICB9XG5cdCAgICAgIHJldHVybiBS
ZWFjdENoaWxkUmVjb25jaWxlci5pbnN0YW50aWF0ZUNoaWxkcmVuKG5lc3RlZENoaWxkcmVuLCB0
cmFuc2FjdGlvbiwgY29udGV4dCk7XG5cdCAgICB9LFxuXHRcblx0ICAgIF9yZWNvbmNpbGVyVXBk
YXRlQ2hpbGRyZW46IGZ1bmN0aW9uIChwcmV2Q2hpbGRyZW4sIG5leHROZXN0ZWRDaGlsZHJlbkVs
ZW1lbnRzLCBtb3VudEltYWdlcywgcmVtb3ZlZE5vZGVzLCB0cmFuc2FjdGlvbiwgY29udGV4dCkg
e1xuXHQgICAgICB2YXIgbmV4dENoaWxkcmVuO1xuXHQgICAgICB2YXIgc2VsZkRlYnVnSUQgPSAw
O1xuXHQgICAgICBpZiAoZmFsc2UpIHtcblx0ICAgICAgICBzZWxmRGVidWdJRCA9IGdldERlYnVn
SUQodGhpcyk7XG5cdCAgICAgICAgaWYgKHRoaXMuX2N1cnJlbnRFbGVtZW50KSB7XG5cdCAgICAg
ICAgICB0cnkge1xuXHQgICAgICAgICAgICBSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50ID0gdGhp
cy5fY3VycmVudEVsZW1lbnQuX293bmVyO1xuXHQgICAgICAgICAgICBuZXh0Q2hpbGRyZW4gPSBm
bGF0dGVuQ2hpbGRyZW4obmV4dE5lc3RlZENoaWxkcmVuRWxlbWVudHMsIHNlbGZEZWJ1Z0lEKTtc
blx0ICAgICAgICAgIH0gZmluYWxseSB7XG5cdCAgICAgICAgICAgIFJlYWN0Q3VycmVudE93bmVy
LmN1cnJlbnQgPSBudWxsO1xuXHQgICAgICAgICAgfVxuXHQgICAgICAgICAgUmVhY3RDaGlsZFJl
Y29uY2lsZXIudXBkYXRlQ2hpbGRyZW4ocHJldkNoaWxkcmVuLCBuZXh0Q2hpbGRyZW4sIG1vdW50
SW1hZ2VzLCByZW1vdmVkTm9kZXMsIHRyYW5zYWN0aW9uLCB0aGlzLCB0aGlzLl9ob3N0Q29udGFp
bmVySW5mbywgY29udGV4dCwgc2VsZkRlYnVnSUQpO1xuXHQgICAgICAgICAgcmV0dXJuIG5leHRD
aGlsZHJlbjtcblx0ICAgICAgICB9XG5cdCAgICAgIH1cblx0ICAgICAgbmV4dENoaWxkcmVuID0g
ZmxhdHRlbkNoaWxkcmVuKG5leHROZXN0ZWRDaGlsZHJlbkVsZW1lbnRzLCBzZWxmRGVidWdJRCk7
XG5cdCAgICAgIFJlYWN0Q2hpbGRSZWNvbmNpbGVyLnVwZGF0ZUNoaWxkcmVuKHByZXZDaGlsZHJl
biwgbmV4dENoaWxkcmVuLCBtb3VudEltYWdlcywgcmVtb3ZlZE5vZGVzLCB0cmFuc2FjdGlvbiwg
dGhpcywgdGhpcy5faG9zdENvbnRhaW5lckluZm8sIGNvbnRleHQsIHNlbGZEZWJ1Z0lEKTtcblx0
ICAgICAgcmV0dXJuIG5leHRDaGlsZHJlbjtcblx0ICAgIH0sXG5cdFxuXHQgICAgLyoqXG5cdCAg
ICAgKiBHZW5lcmF0ZXMgYSBcIm1vdW50IGltYWdlXCIgZm9yIGVhY2ggb2YgdGhlIHN1cHBsaWVk
IGNoaWxkcmVuLiBJbiB0aGUgY2FzZVxuXHQgICAgICogb2YgYFJlYWN0RE9NQ29tcG9uZW50YCwg
YSBtb3VudCBpbWFnZSBpcyBhIHN0cmluZyBvZiBtYXJrdXAuXG5cdCAgICAgKlxuXHQgICAgICog
QHBhcmFtIHs/b2JqZWN0fSBuZXN0ZWRDaGlsZHJlbiBOZXN0ZWQgY2hpbGQgbWFwcy5cblx0ICAg
ICAqIEByZXR1cm4ge2FycmF5fSBBbiBhcnJheSBvZiBtb3VudGVkIHJlcHJlc2VudGF0aW9ucy5c
blx0ICAgICAqIEBpbnRlcm5hbFxuXHQgICAgICovXG5cdCAgICBtb3VudENoaWxkcmVuOiBmdW5j
dGlvbiAobmVzdGVkQ2hpbGRyZW4sIHRyYW5zYWN0aW9uLCBjb250ZXh0KSB7XG5cdCAgICAgIHZh
ciBjaGlsZHJlbiA9IHRoaXMuX3JlY29uY2lsZXJJbnN0YW50aWF0ZUNoaWxkcmVuKG5lc3RlZENo
aWxkcmVuLCB0cmFuc2FjdGlvbiwgY29udGV4dCk7XG5cdCAgICAgIHRoaXMuX3JlbmRlcmVkQ2hp
bGRyZW4gPSBjaGlsZHJlbjtcblx0XG5cdCAgICAgIHZhciBtb3VudEltYWdlcyA9IFtdO1xuXHQg
ICAgICB2YXIgaW5kZXggPSAwO1xuXHQgICAgICBmb3IgKHZhciBuYW1lIGluIGNoaWxkcmVuKSB7
XG5cdCAgICAgICAgaWYgKGNoaWxkcmVuLmhhc093blByb3BlcnR5KG5hbWUpKSB7XG5cdCAgICAg
ICAgICB2YXIgY2hpbGQgPSBjaGlsZHJlbltuYW1lXTtcblx0ICAgICAgICAgIHZhciBzZWxmRGVi
dWdJRCA9IDA7XG5cdCAgICAgICAgICBpZiAoZmFsc2UpIHtcblx0ICAgICAgICAgICAgc2VsZkRl
YnVnSUQgPSBnZXREZWJ1Z0lEKHRoaXMpO1xuXHQgICAgICAgICAgfVxuXHQgICAgICAgICAgdmFy
IG1vdW50SW1hZ2UgPSBSZWFjdFJlY29uY2lsZXIubW91bnRDb21wb25lbnQoY2hpbGQsIHRyYW5z
YWN0aW9uLCB0aGlzLCB0aGlzLl9ob3N0Q29udGFpbmVySW5mbywgY29udGV4dCwgc2VsZkRlYnVn
SUQpO1xuXHQgICAgICAgICAgY2hpbGQuX21vdW50SW5kZXggPSBpbmRleCsrO1xuXHQgICAgICAg
ICAgbW91bnRJbWFnZXMucHVzaChtb3VudEltYWdlKTtcblx0ICAgICAgICB9XG5cdCAgICAgIH1c
blx0XG5cdCAgICAgIGlmIChmYWxzZSkge1xuXHQgICAgICAgIHNldENoaWxkcmVuRm9ySW5zdHJ1
bWVudGF0aW9uLmNhbGwodGhpcywgY2hpbGRyZW4pO1xuXHQgICAgICB9XG5cdFxuXHQgICAgICBy
ZXR1cm4gbW91bnRJbWFnZXM7XG5cdCAgICB9LFxuXHRcblx0ICAgIC8qKlxuXHQgICAgICogUmVw
bGFjZXMgYW55IHJlbmRlcmVkIGNoaWxkcmVuIHdpdGggYSB0ZXh0IGNvbnRlbnQgc3RyaW5nLlxu
XHQgICAgICpcblx0ICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuZXh0Q29udGVudCBTdHJpbmcgb2Yg
Y29udGVudC5cblx0ICAgICAqIEBpbnRlcm5hbFxuXHQgICAgICovXG5cdCAgICB1cGRhdGVUZXh0
Q29udGVudDogZnVuY3Rpb24gKG5leHRDb250ZW50KSB7XG5cdCAgICAgIHZhciBwcmV2Q2hpbGRy
ZW4gPSB0aGlzLl9yZW5kZXJlZENoaWxkcmVuO1xuXHQgICAgICAvLyBSZW1vdmUgYW55IHJlbmRl
cmVkIGNoaWxkcmVuLlxuXHQgICAgICBSZWFjdENoaWxkUmVjb25jaWxlci51bm1vdW50Q2hpbGRy
ZW4ocHJldkNoaWxkcmVuLCBmYWxzZSk7XG5cdCAgICAgIGZvciAodmFyIG5hbWUgaW4gcHJldkNo
aWxkcmVuKSB7XG5cdCAgICAgICAgaWYgKHByZXZDaGlsZHJlbi5oYXNPd25Qcm9wZXJ0eShuYW1l
KSkge1xuXHQgICAgICAgICAgIHRydWUgPyAgZmFsc2UgPyBpbnZhcmlhbnQoZmFsc2UsICd1cGRh
dGVUZXh0Q29udGVudCBjYWxsZWQgb24gbm9uLWVtcHR5IGNvbXBvbmVudC4nKSA6IF9wcm9kSW52
YXJpYW50KCcxMTgnKSA6IHZvaWQgMDtcblx0ICAgICAgICB9XG5cdCAgICAgIH1cblx0ICAgICAg
Ly8gU2V0IG5ldyB0ZXh0IGNvbnRlbnQuXG5cdCAgICAgIHZhciB1cGRhdGVzID0gW21ha2VUZXh0
Q29udGVudChuZXh0Q29udGVudCldO1xuXHQgICAgICBwcm9jZXNzUXVldWUodGhpcywgdXBkYXRl
cyk7XG5cdCAgICB9LFxuXHRcblx0ICAgIC8qKlxuXHQgICAgICogUmVwbGFjZXMgYW55IHJlbmRl
cmVkIGNoaWxkcmVuIHdpdGggYSBtYXJrdXAgc3RyaW5nLlxuXHQgICAgICpcblx0ICAgICAqIEBw
YXJhbSB7c3RyaW5nfSBuZXh0TWFya3VwIFN0cmluZyBvZiBtYXJrdXAuXG5cdCAgICAgKiBAaW50
ZXJuYWxcblx0ICAgICAqL1xuXHQgICAgdXBkYXRlTWFya3VwOiBmdW5jdGlvbiAobmV4dE1hcmt1
cCkge1xuXHQgICAgICB2YXIgcHJldkNoaWxkcmVuID0gdGhpcy5fcmVuZGVyZWRDaGlsZHJlbjtc
blx0ICAgICAgLy8gUmVtb3ZlIGFueSByZW5kZXJlZCBjaGlsZHJlbi5cblx0ICAgICAgUmVhY3RD
aGlsZFJlY29uY2lsZXIudW5tb3VudENoaWxkcmVuKHByZXZDaGlsZHJlbiwgZmFsc2UpO1xuXHQg
ICAgICBmb3IgKHZhciBuYW1lIGluIHByZXZDaGlsZHJlbikge1xuXHQgICAgICAgIGlmIChwcmV2
Q2hpbGRyZW4uaGFzT3duUHJvcGVydHkobmFtZSkpIHtcblx0ICAgICAgICAgICB0cnVlID8gIGZh
bHNlID8gaW52YXJpYW50KGZhbHNlLCAndXBkYXRlVGV4dENvbnRlbnQgY2FsbGVkIG9uIG5vbi1l
bXB0eSBjb21wb25lbnQuJykgOiBfcHJvZEludmFyaWFudCgnMTE4JykgOiB2b2lkIDA7XG5cdCAg
ICAgICAgfVxuXHQgICAgICB9XG5cdCAgICAgIHZhciB1cGRhdGVzID0gW21ha2VTZXRNYXJrdXAo
bmV4dE1hcmt1cCldO1xuXHQgICAgICBwcm9jZXNzUXVldWUodGhpcywgdXBkYXRlcyk7XG5cdCAg
ICB9LFxuXHRcblx0ICAgIC8qKlxuXHQgICAgICogVXBkYXRlcyB0aGUgcmVuZGVyZWQgY2hpbGRy
ZW4gd2l0aCBuZXcgY2hpbGRyZW4uXG5cdCAgICAgKlxuXHQgICAgICogQHBhcmFtIHs/b2JqZWN0
fSBuZXh0TmVzdGVkQ2hpbGRyZW5FbGVtZW50cyBOZXN0ZWQgY2hpbGQgZWxlbWVudCBtYXBzLlxu
XHQgICAgICogQHBhcmFtIHtSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9ufSB0cmFuc2FjdGlvblxu
XHQgICAgICogQGludGVybmFsXG5cdCAgICAgKi9cblx0ICAgIHVwZGF0ZUNoaWxkcmVuOiBmdW5j
dGlvbiAobmV4dE5lc3RlZENoaWxkcmVuRWxlbWVudHMsIHRyYW5zYWN0aW9uLCBjb250ZXh0KSB7
XG5cdCAgICAgIC8vIEhvb2sgdXNlZCBieSBSZWFjdCBBUlRcblx0ICAgICAgdGhpcy5fdXBkYXRl
Q2hpbGRyZW4obmV4dE5lc3RlZENoaWxkcmVuRWxlbWVudHMsIHRyYW5zYWN0aW9uLCBjb250ZXh0
KTtcblx0ICAgIH0sXG5cdFxuXHQgICAgLyoqXG5cdCAgICAgKiBAcGFyYW0gez9vYmplY3R9IG5l
eHROZXN0ZWRDaGlsZHJlbkVsZW1lbnRzIE5lc3RlZCBjaGlsZCBlbGVtZW50IG1hcHMuXG5cdCAg
ICAgKiBAcGFyYW0ge1JlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb259IHRyYW5zYWN0aW9uXG5cdCAg
ICAgKiBAZmluYWxcblx0ICAgICAqIEBwcm90ZWN0ZWRcblx0ICAgICAqL1xuXHQgICAgX3VwZGF0
ZUNoaWxkcmVuOiBmdW5jdGlvbiAobmV4dE5lc3RlZENoaWxkcmVuRWxlbWVudHMsIHRyYW5zYWN0
aW9uLCBjb250ZXh0KSB7XG5cdCAgICAgIHZhciBwcmV2Q2hpbGRyZW4gPSB0aGlzLl9yZW5kZXJl
ZENoaWxkcmVuO1xuXHQgICAgICB2YXIgcmVtb3ZlZE5vZGVzID0ge307XG5cdCAgICAgIHZhciBt
b3VudEltYWdlcyA9IFtdO1xuXHQgICAgICB2YXIgbmV4dENoaWxkcmVuID0gdGhpcy5fcmVjb25j
aWxlclVwZGF0ZUNoaWxkcmVuKHByZXZDaGlsZHJlbiwgbmV4dE5lc3RlZENoaWxkcmVuRWxlbWVu
dHMsIG1vdW50SW1hZ2VzLCByZW1vdmVkTm9kZXMsIHRyYW5zYWN0aW9uLCBjb250ZXh0KTtcblx0
ICAgICAgaWYgKCFuZXh0Q2hpbGRyZW4gJiYgIXByZXZDaGlsZHJlbikge1xuXHQgICAgICAgIHJl
dHVybjtcblx0ICAgICAgfVxuXHQgICAgICB2YXIgdXBkYXRlcyA9IG51bGw7XG5cdCAgICAgIHZh
ciBuYW1lO1xuXHQgICAgICAvLyBgbmV4dEluZGV4YCB3aWxsIGluY3JlbWVudCBmb3IgZWFjaCBj
aGlsZCBpbiBgbmV4dENoaWxkcmVuYCwgYnV0XG5cdCAgICAgIC8vIGBsYXN0SW5kZXhgIHdpbGwg
YmUgdGhlIGxhc3QgaW5kZXggdmlzaXRlZCBpbiBgcHJldkNoaWxkcmVuYC5cblx0ICAgICAgdmFy
IG5leHRJbmRleCA9IDA7XG5cdCAgICAgIHZhciBsYXN0SW5kZXggPSAwO1xuXHQgICAgICAvLyBg
bmV4dE1vdW50SW5kZXhgIHdpbGwgaW5jcmVtZW50IGZvciBlYWNoIG5ld2x5IG1vdW50ZWQgY2hp
bGQuXG5cdCAgICAgIHZhciBuZXh0TW91bnRJbmRleCA9IDA7XG5cdCAgICAgIHZhciBsYXN0UGxh
Y2VkTm9kZSA9IG51bGw7XG5cdCAgICAgIGZvciAobmFtZSBpbiBuZXh0Q2hpbGRyZW4pIHtcblx0
ICAgICAgICBpZiAoIW5leHRDaGlsZHJlbi5oYXNPd25Qcm9wZXJ0eShuYW1lKSkge1xuXHQgICAg
ICAgICAgY29udGludWU7XG5cdCAgICAgICAgfVxuXHQgICAgICAgIHZhciBwcmV2Q2hpbGQgPSBw
cmV2Q2hpbGRyZW4gJiYgcHJldkNoaWxkcmVuW25hbWVdO1xuXHQgICAgICAgIHZhciBuZXh0Q2hp
bGQgPSBuZXh0Q2hpbGRyZW5bbmFtZV07XG5cdCAgICAgICAgaWYgKHByZXZDaGlsZCA9PT0gbmV4
dENoaWxkKSB7XG5cdCAgICAgICAgICB1cGRhdGVzID0gZW5xdWV1ZSh1cGRhdGVzLCB0aGlzLm1v
dmVDaGlsZChwcmV2Q2hpbGQsIGxhc3RQbGFjZWROb2RlLCBuZXh0SW5kZXgsIGxhc3RJbmRleCkp
O1xuXHQgICAgICAgICAgbGFzdEluZGV4ID0gTWF0aC5tYXgocHJldkNoaWxkLl9tb3VudEluZGV4
LCBsYXN0SW5kZXgpO1xuXHQgICAgICAgICAgcHJldkNoaWxkLl9tb3VudEluZGV4ID0gbmV4dElu
ZGV4O1xuXHQgICAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgICBpZiAocHJldkNoaWxkKSB7XG5c
dCAgICAgICAgICAgIC8vIFVwZGF0ZSBgbGFzdEluZGV4YCBiZWZvcmUgYF9tb3VudEluZGV4YCBn
ZXRzIHVuc2V0IGJ5IHVubW91bnRpbmcuXG5cdCAgICAgICAgICAgIGxhc3RJbmRleCA9IE1hdGgu
bWF4KHByZXZDaGlsZC5fbW91bnRJbmRleCwgbGFzdEluZGV4KTtcblx0ICAgICAgICAgICAgLy8g
VGhlIGByZW1vdmVkTm9kZXNgIGxvb3AgYmVsb3cgd2lsbCBhY3R1YWxseSByZW1vdmUgdGhlIGNo
aWxkLlxuXHQgICAgICAgICAgfVxuXHQgICAgICAgICAgLy8gVGhlIGNoaWxkIG11c3QgYmUgaW5z
dGFudGlhdGVkIGJlZm9yZSBpdCdzIG1vdW50ZWQuXG5cdCAgICAgICAgICB1cGRhdGVzID0gZW5x
dWV1ZSh1cGRhdGVzLCB0aGlzLl9tb3VudENoaWxkQXRJbmRleChuZXh0Q2hpbGQsIG1vdW50SW1h
Z2VzW25leHRNb3VudEluZGV4XSwgbGFzdFBsYWNlZE5vZGUsIG5leHRJbmRleCwgdHJhbnNhY3Rp
b24sIGNvbnRleHQpKTtcblx0ICAgICAgICAgIG5leHRNb3VudEluZGV4Kys7XG5cdCAgICAgICAg
fVxuXHQgICAgICAgIG5leHRJbmRleCsrO1xuXHQgICAgICAgIGxhc3RQbGFjZWROb2RlID0gUmVh
Y3RSZWNvbmNpbGVyLmdldEhvc3ROb2RlKG5leHRDaGlsZCk7XG5cdCAgICAgIH1cblx0ICAgICAg
Ly8gUmVtb3ZlIGNoaWxkcmVuIHRoYXQgYXJlIG5vIGxvbmdlciBwcmVzZW50LlxuXHQgICAgICBm
b3IgKG5hbWUgaW4gcmVtb3ZlZE5vZGVzKSB7XG5cdCAgICAgICAgaWYgKHJlbW92ZWROb2Rlcy5o
YXNPd25Qcm9wZXJ0eShuYW1lKSkge1xuXHQgICAgICAgICAgdXBkYXRlcyA9IGVucXVldWUodXBk
YXRlcywgdGhpcy5fdW5tb3VudENoaWxkKHByZXZDaGlsZHJlbltuYW1lXSwgcmVtb3ZlZE5vZGVz
W25hbWVdKSk7XG5cdCAgICAgICAgfVxuXHQgICAgICB9XG5cdCAgICAgIGlmICh1cGRhdGVzKSB7
XG5cdCAgICAgICAgcHJvY2Vzc1F1ZXVlKHRoaXMsIHVwZGF0ZXMpO1xuXHQgICAgICB9XG5cdCAg
ICAgIHRoaXMuX3JlbmRlcmVkQ2hpbGRyZW4gPSBuZXh0Q2hpbGRyZW47XG5cdFxuXHQgICAgICBp
ZiAoZmFsc2UpIHtcblx0ICAgICAgICBzZXRDaGlsZHJlbkZvckluc3RydW1lbnRhdGlvbi5jYWxs
KHRoaXMsIG5leHRDaGlsZHJlbik7XG5cdCAgICAgIH1cblx0ICAgIH0sXG5cdFxuXHQgICAgLyoq
XG5cdCAgICAgKiBVbm1vdW50cyBhbGwgcmVuZGVyZWQgY2hpbGRyZW4uIFRoaXMgc2hvdWxkIGJl
IHVzZWQgdG8gY2xlYW4gdXAgY2hpbGRyZW5cblx0ICAgICAqIHdoZW4gdGhpcyBjb21wb25lbnQg
aXMgdW5tb3VudGVkLiBJdCBkb2VzIG5vdCBhY3R1YWxseSBwZXJmb3JtIGFueVxuXHQgICAgICog
YmFja2VuZCBvcGVyYXRpb25zLlxuXHQgICAgICpcblx0ICAgICAqIEBpbnRlcm5hbFxuXHQgICAg
ICovXG5cdCAgICB1bm1vdW50Q2hpbGRyZW46IGZ1bmN0aW9uIChzYWZlbHkpIHtcblx0ICAgICAg
dmFyIHJlbmRlcmVkQ2hpbGRyZW4gPSB0aGlzLl9yZW5kZXJlZENoaWxkcmVuO1xuXHQgICAgICBS
ZWFjdENoaWxkUmVjb25jaWxlci51bm1vdW50Q2hpbGRyZW4ocmVuZGVyZWRDaGlsZHJlbiwgc2Fm
ZWx5KTtcblx0ICAgICAgdGhpcy5fcmVuZGVyZWRDaGlsZHJlbiA9IG51bGw7XG5cdCAgICB9LFxu
XHRcblx0ICAgIC8qKlxuXHQgICAgICogTW92ZXMgYSBjaGlsZCBjb21wb25lbnQgdG8gdGhlIHN1
cHBsaWVkIGluZGV4LlxuXHQgICAgICpcblx0ICAgICAqIEBwYXJhbSB7UmVhY3RDb21wb25lbnR9
IGNoaWxkIENvbXBvbmVudCB0byBtb3ZlLlxuXHQgICAgICogQHBhcmFtIHtudW1iZXJ9IHRvSW5k
ZXggRGVzdGluYXRpb24gaW5kZXggb2YgdGhlIGVsZW1lbnQuXG5cdCAgICAgKiBAcGFyYW0ge251
bWJlcn0gbGFzdEluZGV4IExhc3QgaW5kZXggdmlzaXRlZCBvZiB0aGUgc2libGluZ3Mgb2YgYGNo
aWxkYC5cblx0ICAgICAqIEBwcm90ZWN0ZWRcblx0ICAgICAqL1xuXHQgICAgbW92ZUNoaWxkOiBm
dW5jdGlvbiAoY2hpbGQsIGFmdGVyTm9kZSwgdG9JbmRleCwgbGFzdEluZGV4KSB7XG5cdCAgICAg
IC8vIElmIHRoZSBpbmRleCBvZiBgY2hpbGRgIGlzIGxlc3MgdGhhbiBgbGFzdEluZGV4YCwgdGhl
biBpdCBuZWVkcyB0b1xuXHQgICAgICAvLyBiZSBtb3ZlZC4gT3RoZXJ3aXNlLCB3ZSBkbyBub3Qg
bmVlZCB0byBtb3ZlIGl0IGJlY2F1c2UgYSBjaGlsZCB3aWxsIGJlXG5cdCAgICAgIC8vIGluc2Vy
dGVkIG9yIG1vdmVkIGJlZm9yZSBgY2hpbGRgLlxuXHQgICAgICBpZiAoY2hpbGQuX21vdW50SW5k
ZXggPCBsYXN0SW5kZXgpIHtcblx0ICAgICAgICByZXR1cm4gbWFrZU1vdmUoY2hpbGQsIGFmdGVy
Tm9kZSwgdG9JbmRleCk7XG5cdCAgICAgIH1cblx0ICAgIH0sXG5cdFxuXHQgICAgLyoqXG5cdCAg
ICAgKiBDcmVhdGVzIGEgY2hpbGQgY29tcG9uZW50LlxuXHQgICAgICpcblx0ICAgICAqIEBwYXJh
bSB7UmVhY3RDb21wb25lbnR9IGNoaWxkIENvbXBvbmVudCB0byBjcmVhdGUuXG5cdCAgICAgKiBA
cGFyYW0ge3N0cmluZ30gbW91bnRJbWFnZSBNYXJrdXAgdG8gaW5zZXJ0LlxuXHQgICAgICogQHBy
b3RlY3RlZFxuXHQgICAgICovXG5cdCAgICBjcmVhdGVDaGlsZDogZnVuY3Rpb24gKGNoaWxkLCBh
ZnRlck5vZGUsIG1vdW50SW1hZ2UpIHtcblx0ICAgICAgcmV0dXJuIG1ha2VJbnNlcnRNYXJrdXAo
bW91bnRJbWFnZSwgYWZ0ZXJOb2RlLCBjaGlsZC5fbW91bnRJbmRleCk7XG5cdCAgICB9LFxuXHRc
blx0ICAgIC8qKlxuXHQgICAgICogUmVtb3ZlcyBhIGNoaWxkIGNvbXBvbmVudC5cblx0ICAgICAq
XG5cdCAgICAgKiBAcGFyYW0ge1JlYWN0Q29tcG9uZW50fSBjaGlsZCBDaGlsZCB0byByZW1vdmUu
XG5cdCAgICAgKiBAcHJvdGVjdGVkXG5cdCAgICAgKi9cblx0ICAgIHJlbW92ZUNoaWxkOiBmdW5j
dGlvbiAoY2hpbGQsIG5vZGUpIHtcblx0ICAgICAgcmV0dXJuIG1ha2VSZW1vdmUoY2hpbGQsIG5v
ZGUpO1xuXHQgICAgfSxcblx0XG5cdCAgICAvKipcblx0ICAgICAqIE1vdW50cyBhIGNoaWxkIHdp
dGggdGhlIHN1cHBsaWVkIG5hbWUuXG5cdCAgICAgKlxuXHQgICAgICogTk9URTogVGhpcyBpcyBw
YXJ0IG9mIGB1cGRhdGVDaGlsZHJlbmAgYW5kIGlzIGhlcmUgZm9yIHJlYWRhYmlsaXR5LlxuXHQg
ICAgICpcblx0ICAgICAqIEBwYXJhbSB7UmVhY3RDb21wb25lbnR9IGNoaWxkIENvbXBvbmVudCB0
byBtb3VudC5cblx0ICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIE5hbWUgb2YgdGhlIGNoaWxk
LlxuXHQgICAgICogQHBhcmFtIHtudW1iZXJ9IGluZGV4IEluZGV4IGF0IHdoaWNoIHRvIGluc2Vy
dCB0aGUgY2hpbGQuXG5cdCAgICAgKiBAcGFyYW0ge1JlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb259
IHRyYW5zYWN0aW9uXG5cdCAgICAgKiBAcHJpdmF0ZVxuXHQgICAgICovXG5cdCAgICBfbW91bnRD
aGlsZEF0SW5kZXg6IGZ1bmN0aW9uIChjaGlsZCwgbW91bnRJbWFnZSwgYWZ0ZXJOb2RlLCBpbmRl
eCwgdHJhbnNhY3Rpb24sIGNvbnRleHQpIHtcblx0ICAgICAgY2hpbGQuX21vdW50SW5kZXggPSBp
bmRleDtcblx0ICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlQ2hpbGQoY2hpbGQsIGFmdGVyTm9kZSwg
bW91bnRJbWFnZSk7XG5cdCAgICB9LFxuXHRcblx0ICAgIC8qKlxuXHQgICAgICogVW5tb3VudHMg
YSByZW5kZXJlZCBjaGlsZC5cblx0ICAgICAqXG5cdCAgICAgKiBOT1RFOiBUaGlzIGlzIHBhcnQg
b2YgYHVwZGF0ZUNoaWxkcmVuYCBhbmQgaXMgaGVyZSBmb3IgcmVhZGFiaWxpdHkuXG5cdCAgICAg
KlxuXHQgICAgICogQHBhcmFtIHtSZWFjdENvbXBvbmVudH0gY2hpbGQgQ29tcG9uZW50IHRvIHVu
bW91bnQuXG5cdCAgICAgKiBAcHJpdmF0ZVxuXHQgICAgICovXG5cdCAgICBfdW5tb3VudENoaWxk
OiBmdW5jdGlvbiAoY2hpbGQsIG5vZGUpIHtcblx0ICAgICAgdmFyIHVwZGF0ZSA9IHRoaXMucmVt
b3ZlQ2hpbGQoY2hpbGQsIG5vZGUpO1xuXHQgICAgICBjaGlsZC5fbW91bnRJbmRleCA9IG51bGw7
XG5cdCAgICAgIHJldHVybiB1cGRhdGU7XG5cdCAgICB9XG5cdCAgfVxuXHR9O1xuXHRcblx0bW9k
dWxlLmV4cG9ydHMgPSBSZWFjdE11bHRpQ2hpbGQ7XG5cbi8qKiovIH0sXG4vKiAxNTcgKi9cbi8q
KiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5c
dC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBB
bGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vu
c2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5T
RSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRp
dGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQ
QVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKiBcblx0ICovXG5c
dFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHR2YXIgX3Byb2RJbnZhcmlhbnQgPSBfX3dlYnBhY2tf
cmVxdWlyZV9fKDMpO1xuXHRcblx0dmFyIGludmFyaWFudCA9IF9fd2VicGFja19yZXF1aXJlX18o
MSk7XG5cdFxuXHQvKipcblx0ICogQHBhcmFtIHs/b2JqZWN0fSBvYmplY3Rcblx0ICogQHJldHVy
biB7Ym9vbGVhbn0gVHJ1ZSBpZiBgb2JqZWN0YCBpcyBhIHZhbGlkIG93bmVyLlxuXHQgKiBAZmlu
YWxcblx0ICovXG5cdGZ1bmN0aW9uIGlzVmFsaWRPd25lcihvYmplY3QpIHtcblx0ICByZXR1cm4g
ISEob2JqZWN0ICYmIHR5cGVvZiBvYmplY3QuYXR0YWNoUmVmID09PSAnZnVuY3Rpb24nICYmIHR5
cGVvZiBvYmplY3QuZGV0YWNoUmVmID09PSAnZnVuY3Rpb24nKTtcblx0fVxuXHRcblx0LyoqXG5c
dCAqIFJlYWN0T3duZXJzIGFyZSBjYXBhYmxlIG9mIHN0b3JpbmcgcmVmZXJlbmNlcyB0byBvd25l
ZCBjb21wb25lbnRzLlxuXHQgKlxuXHQgKiBBbGwgY29tcG9uZW50cyBhcmUgY2FwYWJsZSBvZiAv
L2JlaW5nLy8gcmVmZXJlbmNlZCBieSBvd25lciBjb21wb25lbnRzLCBidXRcblx0ICogb25seSBS
ZWFjdE93bmVyIGNvbXBvbmVudHMgYXJlIGNhcGFibGUgb2YgLy9yZWZlcmVuY2luZy8vIG93bmVk
IGNvbXBvbmVudHMuXG5cdCAqIFRoZSBuYW1lZCByZWZlcmVuY2UgaXMga25vd24gYXMgYSBcInJl
ZlwiLlxuXHQgKlxuXHQgKiBSZWZzIGFyZSBhdmFpbGFibGUgd2hlbiBtb3VudGVkIGFuZCB1cGRh
dGVkIGR1cmluZyByZWNvbmNpbGlhdGlvbi5cblx0ICpcblx0ICogICB2YXIgTXlDb21wb25lbnQg
PSBSZWFjdC5jcmVhdGVDbGFzcyh7XG5cdCAqICAgICByZW5kZXI6IGZ1bmN0aW9uKCkge1xuXHQg
KiAgICAgICByZXR1cm4gKFxuXHQgKiAgICAgICAgIDxkaXYgb25DbGljaz17dGhpcy5oYW5kbGVD
bGlja30+XG5cdCAqICAgICAgICAgICA8Q3VzdG9tQ29tcG9uZW50IHJlZj1cImN1c3RvbVwiIC8+
XG5cdCAqICAgICAgICAgPC9kaXY+XG5cdCAqICAgICAgICk7XG5cdCAqICAgICB9LFxuXHQgKiAg
ICAgaGFuZGxlQ2xpY2s6IGZ1bmN0aW9uKCkge1xuXHQgKiAgICAgICB0aGlzLnJlZnMuY3VzdG9t
LmhhbmRsZUNsaWNrKCk7XG5cdCAqICAgICB9LFxuXHQgKiAgICAgY29tcG9uZW50RGlkTW91bnQ6
IGZ1bmN0aW9uKCkge1xuXHQgKiAgICAgICB0aGlzLnJlZnMuY3VzdG9tLmluaXRpYWxpemUoKTtc
blx0ICogICAgIH1cblx0ICogICB9KTtcblx0ICpcblx0ICogUmVmcyBzaG91bGQgcmFyZWx5IGJl
IHVzZWQuIFdoZW4gcmVmcyBhcmUgdXNlZCwgdGhleSBzaG91bGQgb25seSBiZSBkb25lIHRvXG5c
dCAqIGNvbnRyb2wgZGF0YSB0aGF0IGlzIG5vdCBoYW5kbGVkIGJ5IFJlYWN0J3MgZGF0YSBmbG93
LlxuXHQgKlxuXHQgKiBAY2xhc3MgUmVhY3RPd25lclxuXHQgKi9cblx0dmFyIFJlYWN0T3duZXIg
PSB7XG5cdCAgLyoqXG5cdCAgICogQWRkcyBhIGNvbXBvbmVudCBieSByZWYgdG8gYW4gb3duZXIg
Y29tcG9uZW50LlxuXHQgICAqXG5cdCAgICogQHBhcmFtIHtSZWFjdENvbXBvbmVudH0gY29tcG9u
ZW50IENvbXBvbmVudCB0byByZWZlcmVuY2UuXG5cdCAgICogQHBhcmFtIHtzdHJpbmd9IHJlZiBO
YW1lIGJ5IHdoaWNoIHRvIHJlZmVyIHRvIHRoZSBjb21wb25lbnQuXG5cdCAgICogQHBhcmFtIHtS
ZWFjdE93bmVyfSBvd25lciBDb21wb25lbnQgb24gd2hpY2ggdG8gcmVjb3JkIHRoZSByZWYuXG5c
dCAgICogQGZpbmFsXG5cdCAgICogQGludGVybmFsXG5cdCAgICovXG5cdCAgYWRkQ29tcG9uZW50
QXNSZWZUbzogZnVuY3Rpb24gKGNvbXBvbmVudCwgcmVmLCBvd25lcikge1xuXHQgICAgIWlzVmFs
aWRPd25lcihvd25lcikgPyAgZmFsc2UgPyBpbnZhcmlhbnQoZmFsc2UsICdhZGRDb21wb25lbnRB
c1JlZlRvKC4uLik6IE9ubHkgYSBSZWFjdE93bmVyIGNhbiBoYXZlIHJlZnMuIFlvdSBtaWdodCBi
ZSBhZGRpbmcgYSByZWYgdG8gYSBjb21wb25lbnQgdGhhdCB3YXMgbm90IGNyZWF0ZWQgaW5zaWRl
IGEgY29tcG9uZW50XFwncyBgcmVuZGVyYCBtZXRob2QsIG9yIHlvdSBoYXZlIG11bHRpcGxlIGNv
cGllcyBvZiBSZWFjdCBsb2FkZWQgKGRldGFpbHM6IGh0dHBzOi8vZmIubWUvcmVhY3QtcmVmcy1t
dXN0LWhhdmUtb3duZXIpLicpIDogX3Byb2RJbnZhcmlhbnQoJzExOScpIDogdm9pZCAwO1xuXHQg
ICAgb3duZXIuYXR0YWNoUmVmKHJlZiwgY29tcG9uZW50KTtcblx0ICB9LFxuXHRcblx0ICAvKipc
blx0ICAgKiBSZW1vdmVzIGEgY29tcG9uZW50IGJ5IHJlZiBmcm9tIGFuIG93bmVyIGNvbXBvbmVu
dC5cblx0ICAgKlxuXHQgICAqIEBwYXJhbSB7UmVhY3RDb21wb25lbnR9IGNvbXBvbmVudCBDb21w
b25lbnQgdG8gZGVyZWZlcmVuY2UuXG5cdCAgICogQHBhcmFtIHtzdHJpbmd9IHJlZiBOYW1lIG9m
IHRoZSByZWYgdG8gcmVtb3ZlLlxuXHQgICAqIEBwYXJhbSB7UmVhY3RPd25lcn0gb3duZXIgQ29t
cG9uZW50IG9uIHdoaWNoIHRoZSByZWYgaXMgcmVjb3JkZWQuXG5cdCAgICogQGZpbmFsXG5cdCAg
ICogQGludGVybmFsXG5cdCAgICovXG5cdCAgcmVtb3ZlQ29tcG9uZW50QXNSZWZGcm9tOiBmdW5j
dGlvbiAoY29tcG9uZW50LCByZWYsIG93bmVyKSB7XG5cdCAgICAhaXNWYWxpZE93bmVyKG93bmVy
KSA/ICBmYWxzZSA/IGludmFyaWFudChmYWxzZSwgJ3JlbW92ZUNvbXBvbmVudEFzUmVmRnJvbSgu
Li4pOiBPbmx5IGEgUmVhY3RPd25lciBjYW4gaGF2ZSByZWZzLiBZb3UgbWlnaHQgYmUgcmVtb3Zp
bmcgYSByZWYgdG8gYSBjb21wb25lbnQgdGhhdCB3YXMgbm90IGNyZWF0ZWQgaW5zaWRlIGEgY29t
cG9uZW50XFwncyBgcmVuZGVyYCBtZXRob2QsIG9yIHlvdSBoYXZlIG11bHRpcGxlIGNvcGllcyBv
ZiBSZWFjdCBsb2FkZWQgKGRldGFpbHM6IGh0dHBzOi8vZmIubWUvcmVhY3QtcmVmcy1tdXN0LWhh
dmUtb3duZXIpLicpIDogX3Byb2RJbnZhcmlhbnQoJzEyMCcpIDogdm9pZCAwO1xuXHQgICAgdmFy
IG93bmVyUHVibGljSW5zdGFuY2UgPSBvd25lci5nZXRQdWJsaWNJbnN0YW5jZSgpO1xuXHQgICAg
Ly8gQ2hlY2sgdGhhdCBgY29tcG9uZW50YCdzIG93bmVyIGlzIHN0aWxsIGFsaXZlIGFuZCB0aGF0
IGBjb21wb25lbnRgIGlzIHN0aWxsIHRoZSBjdXJyZW50IHJlZlxuXHQgICAgLy8gYmVjYXVzZSB3
ZSBkbyBub3Qgd2FudCB0byBkZXRhY2ggdGhlIHJlZiBpZiBhbm90aGVyIGNvbXBvbmVudCBzdG9s
ZSBpdC5cblx0ICAgIGlmIChvd25lclB1YmxpY0luc3RhbmNlICYmIG93bmVyUHVibGljSW5zdGFu
Y2UucmVmc1tyZWZdID09PSBjb21wb25lbnQuZ2V0UHVibGljSW5zdGFuY2UoKSkge1xuXHQgICAg
ICBvd25lci5kZXRhY2hSZWYocmVmKTtcblx0ICAgIH1cblx0ICB9XG5cdH07XG5cdFxuXHRtb2R1
bGUuZXhwb3J0cyA9IFJlYWN0T3duZXI7XG5cbi8qKiovIH0sXG4vKiAxNTggKi9cbi8qKiovIGZ1
bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxMy1w
cmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxu
XHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGlj
ZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9y
eSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVu
dCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGly
ZWN0b3J5LlxuXHQgKlxuXHQgKiBcblx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHR2
YXIgUmVhY3RQcm9wVHlwZXNTZWNyZXQgPSAnU0VDUkVUX0RPX05PVF9QQVNTX1RISVNfT1JfWU9V
X1dJTExfQkVfRklSRUQnO1xuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBSZWFjdFByb3BUeXBlc1Nl
Y3JldDtcblxuLyoqKi8gfSxcbi8qIDE1OSAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBv
cnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAyMDEz
LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAq
XG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBs
aWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0
b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0
ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBk
aXJlY3RvcnkuXG5cdCAqXG5cdCAqL1xuXHRcblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0dmFyIF9h
c3NpZ24gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQpO1xuXHRcblx0dmFyIENhbGxiYWNrUXVldWUg
PSBfX3dlYnBhY2tfcmVxdWlyZV9fKDU5KTtcblx0dmFyIFBvb2xlZENsYXNzID0gX193ZWJwYWNr
X3JlcXVpcmVfXygxMyk7XG5cdHZhciBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIgPSBfX3dlYnBh
Y2tfcmVxdWlyZV9fKDI1KTtcblx0dmFyIFJlYWN0SW5wdXRTZWxlY3Rpb24gPSBfX3dlYnBhY2tf
cmVxdWlyZV9fKDY2KTtcblx0dmFyIFJlYWN0SW5zdHJ1bWVudGF0aW9uID0gX193ZWJwYWNrX3Jl
cXVpcmVfXyg4KTtcblx0dmFyIFRyYW5zYWN0aW9uID0gX193ZWJwYWNrX3JlcXVpcmVfXygyNyk7
XG5cdHZhciBSZWFjdFVwZGF0ZVF1ZXVlID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0Mik7XG5cdFxu
XHQvKipcblx0ICogRW5zdXJlcyB0aGF0LCB3aGVuIHBvc3NpYmxlLCB0aGUgc2VsZWN0aW9uIHJh
bmdlIChjdXJyZW50bHkgc2VsZWN0ZWQgdGV4dFxuXHQgKiBpbnB1dCkgaXMgbm90IGRpc3R1cmJl
ZCBieSBwZXJmb3JtaW5nIHRoZSB0cmFuc2FjdGlvbi5cblx0ICovXG5cdHZhciBTRUxFQ1RJT05f
UkVTVE9SQVRJT04gPSB7XG5cdCAgLyoqXG5cdCAgICogQHJldHVybiB7U2VsZWN0aW9ufSBTZWxl
Y3Rpb24gaW5mb3JtYXRpb24uXG5cdCAgICovXG5cdCAgaW5pdGlhbGl6ZTogUmVhY3RJbnB1dFNl
bGVjdGlvbi5nZXRTZWxlY3Rpb25JbmZvcm1hdGlvbixcblx0ICAvKipcblx0ICAgKiBAcGFyYW0g
e1NlbGVjdGlvbn0gc2VsIFNlbGVjdGlvbiBpbmZvcm1hdGlvbiByZXR1cm5lZCBmcm9tIGBpbml0
aWFsaXplYC5cblx0ICAgKi9cblx0ICBjbG9zZTogUmVhY3RJbnB1dFNlbGVjdGlvbi5yZXN0b3Jl
U2VsZWN0aW9uXG5cdH07XG5cdFxuXHQvKipcblx0ICogU3VwcHJlc3NlcyBldmVudHMgKGJsdXIv
Zm9jdXMpIHRoYXQgY291bGQgYmUgaW5hZHZlcnRlbnRseSBkaXNwYXRjaGVkIGR1ZSB0b1xuXHQg
KiBoaWdoIGxldmVsIERPTSBtYW5pcHVsYXRpb25zIChsaWtlIHRlbXBvcmFyaWx5IHJlbW92aW5n
IGEgdGV4dCBpbnB1dCBmcm9tIHRoZVxuXHQgKiBET00pLlxuXHQgKi9cblx0dmFyIEVWRU5UX1NV
UFBSRVNTSU9OID0ge1xuXHQgIC8qKlxuXHQgICAqIEByZXR1cm4ge2Jvb2xlYW59IFRoZSBlbmFi
bGVkIHN0YXR1cyBvZiBgUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyYCBiZWZvcmVcblx0ICAgKiB0
aGUgcmVjb25jaWxpYXRpb24uXG5cdCAgICovXG5cdCAgaW5pdGlhbGl6ZTogZnVuY3Rpb24gKCkg
e1xuXHQgICAgdmFyIGN1cnJlbnRseUVuYWJsZWQgPSBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIu
aXNFbmFibGVkKCk7XG5cdCAgICBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIuc2V0RW5hYmxlZChm
YWxzZSk7XG5cdCAgICByZXR1cm4gY3VycmVudGx5RW5hYmxlZDtcblx0ICB9LFxuXHRcblx0ICAv
Kipcblx0ICAgKiBAcGFyYW0ge2Jvb2xlYW59IHByZXZpb3VzbHlFbmFibGVkIEVuYWJsZWQgc3Rh
dHVzIG9mXG5cdCAgICogICBgUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyYCBiZWZvcmUgdGhlIHJl
Y29uY2lsaWF0aW9uIG9jY3VycmVkLiBgY2xvc2VgXG5cdCAgICogICByZXN0b3JlcyB0aGUgcHJl
dmlvdXMgdmFsdWUuXG5cdCAgICovXG5cdCAgY2xvc2U6IGZ1bmN0aW9uIChwcmV2aW91c2x5RW5h
YmxlZCkge1xuXHQgICAgUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLnNldEVuYWJsZWQocHJldmlv
dXNseUVuYWJsZWQpO1xuXHQgIH1cblx0fTtcblx0XG5cdC8qKlxuXHQgKiBQcm92aWRlcyBhIHF1
ZXVlIGZvciBjb2xsZWN0aW5nIGBjb21wb25lbnREaWRNb3VudGAgYW5kXG5cdCAqIGBjb21wb25l
bnREaWRVcGRhdGVgIGNhbGxiYWNrcyBkdXJpbmcgdGhlIHRyYW5zYWN0aW9uLlxuXHQgKi9cblx0
dmFyIE9OX0RPTV9SRUFEWV9RVUVVRUlORyA9IHtcblx0ICAvKipcblx0ICAgKiBJbml0aWFsaXpl
cyB0aGUgaW50ZXJuYWwgYG9uRE9NUmVhZHlgIHF1ZXVlLlxuXHQgICAqL1xuXHQgIGluaXRpYWxp
emU6IGZ1bmN0aW9uICgpIHtcblx0ICAgIHRoaXMucmVhY3RNb3VudFJlYWR5LnJlc2V0KCk7XG5c
dCAgfSxcblx0XG5cdCAgLyoqXG5cdCAgICogQWZ0ZXIgRE9NIGlzIGZsdXNoZWQsIGludm9rZSBh
bGwgcmVnaXN0ZXJlZCBgb25ET01SZWFkeWAgY2FsbGJhY2tzLlxuXHQgICAqL1xuXHQgIGNsb3Nl
OiBmdW5jdGlvbiAoKSB7XG5cdCAgICB0aGlzLnJlYWN0TW91bnRSZWFkeS5ub3RpZnlBbGwoKTtc
blx0ICB9XG5cdH07XG5cdFxuXHQvKipcblx0ICogRXhlY3V0ZWQgd2l0aGluIHRoZSBzY29wZSBv
ZiB0aGUgYFRyYW5zYWN0aW9uYCBpbnN0YW5jZS4gQ29uc2lkZXIgdGhlc2UgYXNcblx0ICogYmVp
bmcgbWVtYmVyIG1ldGhvZHMsIGJ1dCB3aXRoIGFuIGltcGxpZWQgb3JkZXJpbmcgd2hpbGUgYmVp
bmcgaXNvbGF0ZWQgZnJvbVxuXHQgKiBlYWNoIG90aGVyLlxuXHQgKi9cblx0dmFyIFRSQU5TQUNU
SU9OX1dSQVBQRVJTID0gW1NFTEVDVElPTl9SRVNUT1JBVElPTiwgRVZFTlRfU1VQUFJFU1NJT04s
IE9OX0RPTV9SRUFEWV9RVUVVRUlOR107XG5cdFxuXHRpZiAoZmFsc2UpIHtcblx0ICBUUkFOU0FD
VElPTl9XUkFQUEVSUy5wdXNoKHtcblx0ICAgIGluaXRpYWxpemU6IFJlYWN0SW5zdHJ1bWVudGF0
aW9uLmRlYnVnVG9vbC5vbkJlZ2luRmx1c2gsXG5cdCAgICBjbG9zZTogUmVhY3RJbnN0cnVtZW50
YXRpb24uZGVidWdUb29sLm9uRW5kRmx1c2hcblx0ICB9KTtcblx0fVxuXHRcblx0LyoqXG5cdCAq
IEN1cnJlbnRseTpcblx0ICogLSBUaGUgb3JkZXIgdGhhdCB0aGVzZSBhcmUgbGlzdGVkIGluIHRo
ZSB0cmFuc2FjdGlvbiBpcyBjcml0aWNhbDpcblx0ICogLSBTdXBwcmVzc2VzIGV2ZW50cy5cblx0
ICogLSBSZXN0b3JlcyBzZWxlY3Rpb24gcmFuZ2UuXG5cdCAqXG5cdCAqIEZ1dHVyZTpcblx0ICog
LSBSZXN0b3JlIGRvY3VtZW50L292ZXJmbG93IHNjcm9sbCBwb3NpdGlvbnMgdGhhdCB3ZXJlIHVu
aW50ZW50aW9uYWxseVxuXHQgKiAgIG1vZGlmaWVkIHZpYSBET00gaW5zZXJ0aW9ucyBhYm92ZSB0
aGUgdG9wIHZpZXdwb3J0IGJvdW5kYXJ5LlxuXHQgKiAtIEltcGxlbWVudC9pbnRlZ3JhdGUgd2l0
aCBjdXN0b21pemVkIGNvbnN0cmFpbnQgYmFzZWQgbGF5b3V0IHN5c3RlbSBhbmQga2VlcFxuXHQg
KiAgIHRyYWNrIG9mIHdoaWNoIGRpbWVuc2lvbnMgbXVzdCBiZSByZW1lYXN1cmVkLlxuXHQgKlxu
XHQgKiBAY2xhc3MgUmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvblxuXHQgKi9cblx0ZnVuY3Rpb24g
UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbih1c2VDcmVhdGVFbGVtZW50KSB7XG5cdCAgdGhpcy5y
ZWluaXRpYWxpemVUcmFuc2FjdGlvbigpO1xuXHQgIC8vIE9ubHkgc2VydmVyLXNpZGUgcmVuZGVy
aW5nIHJlYWxseSBuZWVkcyB0aGlzIG9wdGlvbiAoc2VlXG5cdCAgLy8gYFJlYWN0U2VydmVyUmVu
ZGVyaW5nYCksIGJ1dCBzZXJ2ZXItc2lkZSB1c2VzXG5cdCAgLy8gYFJlYWN0U2VydmVyUmVuZGVy
aW5nVHJhbnNhY3Rpb25gIGluc3RlYWQuIFRoaXMgb3B0aW9uIGlzIGhlcmUgc28gdGhhdCBpdCdz
XG5cdCAgLy8gYWNjZXNzaWJsZSBhbmQgZGVmYXVsdHMgdG8gZmFsc2Ugd2hlbiBgUmVhY3RET01D
b21wb25lbnRgIGFuZFxuXHQgIC8vIGBSZWFjdERPTVRleHRDb21wb25lbnRgIGNoZWNrcyBpdCBp
biBgbW91bnRDb21wb25lbnRgLmBcblx0ICB0aGlzLnJlbmRlclRvU3RhdGljTWFya3VwID0gZmFs
c2U7XG5cdCAgdGhpcy5yZWFjdE1vdW50UmVhZHkgPSBDYWxsYmFja1F1ZXVlLmdldFBvb2xlZChu
dWxsKTtcblx0ICB0aGlzLnVzZUNyZWF0ZUVsZW1lbnQgPSB1c2VDcmVhdGVFbGVtZW50O1xuXHR9
XG5cdFxuXHR2YXIgTWl4aW4gPSB7XG5cdCAgLyoqXG5cdCAgICogQHNlZSBUcmFuc2FjdGlvblxu
XHQgICAqIEBhYnN0cmFjdFxuXHQgICAqIEBmaW5hbFxuXHQgICAqIEByZXR1cm4ge2FycmF5PG9i
amVjdD59IExpc3Qgb2Ygb3BlcmF0aW9uIHdyYXAgcHJvY2VkdXJlcy5cblx0ICAgKiAgIFRPRE86
IGNvbnZlcnQgdG8gYXJyYXk8VHJhbnNhY3Rpb25XcmFwcGVyPlxuXHQgICAqL1xuXHQgIGdldFRy
YW5zYWN0aW9uV3JhcHBlcnM6IGZ1bmN0aW9uICgpIHtcblx0ICAgIHJldHVybiBUUkFOU0FDVElP
Tl9XUkFQUEVSUztcblx0ICB9LFxuXHRcblx0ICAvKipcblx0ICAgKiBAcmV0dXJuIHtvYmplY3R9
IFRoZSBxdWV1ZSB0byBjb2xsZWN0IGBvbkRPTVJlYWR5YCBjYWxsYmFja3Mgd2l0aC5cblx0ICAg
Ki9cblx0ICBnZXRSZWFjdE1vdW50UmVhZHk6IGZ1bmN0aW9uICgpIHtcblx0ICAgIHJldHVybiB0
aGlzLnJlYWN0TW91bnRSZWFkeTtcblx0ICB9LFxuXHRcblx0ICAvKipcblx0ICAgKiBAcmV0dXJu
IHtvYmplY3R9IFRoZSBxdWV1ZSB0byBjb2xsZWN0IFJlYWN0IGFzeW5jIGV2ZW50cy5cblx0ICAg
Ki9cblx0ICBnZXRVcGRhdGVRdWV1ZTogZnVuY3Rpb24gKCkge1xuXHQgICAgcmV0dXJuIFJlYWN0
VXBkYXRlUXVldWU7XG5cdCAgfSxcblx0XG5cdCAgLyoqXG5cdCAgICogU2F2ZSBjdXJyZW50IHRy
YW5zYWN0aW9uIHN0YXRlIC0tIGlmIHRoZSByZXR1cm4gdmFsdWUgZnJvbSB0aGlzIG1ldGhvZCBp
c1xuXHQgICAqIHBhc3NlZCB0byBgcm9sbGJhY2tgLCB0aGUgdHJhbnNhY3Rpb24gd2lsbCBiZSBy
ZXNldCB0byB0aGF0IHN0YXRlLlxuXHQgICAqL1xuXHQgIGNoZWNrcG9pbnQ6IGZ1bmN0aW9uICgp
IHtcblx0ICAgIC8vIHJlYWN0TW91bnRSZWFkeSBpcyB0aGUgb3VyIG9ubHkgc3RhdGVmdWwgd3Jh
cHBlclxuXHQgICAgcmV0dXJuIHRoaXMucmVhY3RNb3VudFJlYWR5LmNoZWNrcG9pbnQoKTtcblx0
ICB9LFxuXHRcblx0ICByb2xsYmFjazogZnVuY3Rpb24gKGNoZWNrcG9pbnQpIHtcblx0ICAgIHRo
aXMucmVhY3RNb3VudFJlYWR5LnJvbGxiYWNrKGNoZWNrcG9pbnQpO1xuXHQgIH0sXG5cdFxuXHQg
IC8qKlxuXHQgICAqIGBQb29sZWRDbGFzc2AgbG9va3MgZm9yIHRoaXMsIGFuZCB3aWxsIGludm9r
ZSB0aGlzIGJlZm9yZSBhbGxvd2luZyB0aGlzXG5cdCAgICogaW5zdGFuY2UgdG8gYmUgcmV1c2Vk
LlxuXHQgICAqL1xuXHQgIGRlc3RydWN0b3I6IGZ1bmN0aW9uICgpIHtcblx0ICAgIENhbGxiYWNr
UXVldWUucmVsZWFzZSh0aGlzLnJlYWN0TW91bnRSZWFkeSk7XG5cdCAgICB0aGlzLnJlYWN0TW91
bnRSZWFkeSA9IG51bGw7XG5cdCAgfVxuXHR9O1xuXHRcblx0X2Fzc2lnbihSZWFjdFJlY29uY2ls
ZVRyYW5zYWN0aW9uLnByb3RvdHlwZSwgVHJhbnNhY3Rpb24sIE1peGluKTtcblx0XG5cdFBvb2xl
ZENsYXNzLmFkZFBvb2xpbmdUbyhSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9uKTtcblx0XG5cdG1v
ZHVsZS5leHBvcnRzID0gUmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbjtcblxuLyoqKi8gfSxcbi8q
IDE2MCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWly
ZV9fKSB7XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJ
bmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNv
ZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxu
XHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRy
ZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91
bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAq
IFxuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdHZhciBSZWFjdE93bmVyID0gX193
ZWJwYWNrX3JlcXVpcmVfXygxNTcpO1xuXHRcblx0dmFyIFJlYWN0UmVmID0ge307XG5cdFxuXHRm
dW5jdGlvbiBhdHRhY2hSZWYocmVmLCBjb21wb25lbnQsIG93bmVyKSB7XG5cdCAgaWYgKHR5cGVv
ZiByZWYgPT09ICdmdW5jdGlvbicpIHtcblx0ICAgIHJlZihjb21wb25lbnQuZ2V0UHVibGljSW5z
dGFuY2UoKSk7XG5cdCAgfSBlbHNlIHtcblx0ICAgIC8vIExlZ2FjeSByZWZcblx0ICAgIFJlYWN0
T3duZXIuYWRkQ29tcG9uZW50QXNSZWZUbyhjb21wb25lbnQsIHJlZiwgb3duZXIpO1xuXHQgIH1c
blx0fVxuXHRcblx0ZnVuY3Rpb24gZGV0YWNoUmVmKHJlZiwgY29tcG9uZW50LCBvd25lcikge1xu
XHQgIGlmICh0eXBlb2YgcmVmID09PSAnZnVuY3Rpb24nKSB7XG5cdCAgICByZWYobnVsbCk7XG5c
dCAgfSBlbHNlIHtcblx0ICAgIC8vIExlZ2FjeSByZWZcblx0ICAgIFJlYWN0T3duZXIucmVtb3Zl
Q29tcG9uZW50QXNSZWZGcm9tKGNvbXBvbmVudCwgcmVmLCBvd25lcik7XG5cdCAgfVxuXHR9XG5c
dFxuXHRSZWFjdFJlZi5hdHRhY2hSZWZzID0gZnVuY3Rpb24gKGluc3RhbmNlLCBlbGVtZW50KSB7
XG5cdCAgaWYgKGVsZW1lbnQgPT09IG51bGwgfHwgdHlwZW9mIGVsZW1lbnQgIT09ICdvYmplY3Qn
KSB7XG5cdCAgICByZXR1cm47XG5cdCAgfVxuXHQgIHZhciByZWYgPSBlbGVtZW50LnJlZjtcblx0
ICBpZiAocmVmICE9IG51bGwpIHtcblx0ICAgIGF0dGFjaFJlZihyZWYsIGluc3RhbmNlLCBlbGVt
ZW50Ll9vd25lcik7XG5cdCAgfVxuXHR9O1xuXHRcblx0UmVhY3RSZWYuc2hvdWxkVXBkYXRlUmVm
cyA9IGZ1bmN0aW9uIChwcmV2RWxlbWVudCwgbmV4dEVsZW1lbnQpIHtcblx0ICAvLyBJZiBlaXRo
ZXIgdGhlIG93bmVyIG9yIGEgYHJlZmAgaGFzIGNoYW5nZWQsIG1ha2Ugc3VyZSB0aGUgbmV3ZXN0
IG93bmVyXG5cdCAgLy8gaGFzIHN0b3JlZCBhIHJlZmVyZW5jZSB0byBgdGhpc2AsIGFuZCB0aGUg
cHJldmlvdXMgb3duZXIgKGlmIGRpZmZlcmVudClcblx0ICAvLyBoYXMgZm9yZ290dGVuIHRoZSBy
ZWZlcmVuY2UgdG8gYHRoaXNgLiBXZSB1c2UgdGhlIGVsZW1lbnQgaW5zdGVhZFxuXHQgIC8vIG9m
IHRoZSBwdWJsaWMgdGhpcy5wcm9wcyBiZWNhdXNlIHRoZSBwb3N0IHByb2Nlc3NpbmcgY2Fubm90
IGRldGVybWluZVxuXHQgIC8vIGEgcmVmLiBUaGUgcmVmIGNvbmNlcHR1YWxseSBsaXZlcyBvbiB0
aGUgZWxlbWVudC5cblx0XG5cdCAgLy8gVE9ETzogU2hvdWxkIHRoaXMgZXZlbiBiZSBwb3NzaWJs
ZT8gVGhlIG93bmVyIGNhbm5vdCBjaGFuZ2UgYmVjYXVzZVxuXHQgIC8vIGl0J3MgZm9yYmlkZGVu
IGJ5IHNob3VsZFVwZGF0ZVJlYWN0Q29tcG9uZW50LiBUaGUgcmVmIGNhbiBjaGFuZ2Vcblx0ICAv
LyBpZiB5b3Ugc3dhcCB0aGUga2V5cyBvZiBidXQgbm90IHRoZSByZWZzLiBSZWNvbnNpZGVyIHdo
ZXJlIHRoaXMgY2hlY2tcblx0ICAvLyBpcyBtYWRlLiBJdCBwcm9iYWJseSBiZWxvbmdzIHdoZXJl
IHRoZSBrZXkgY2hlY2tpbmcgYW5kXG5cdCAgLy8gaW5zdGFudGlhdGVSZWFjdENvbXBvbmVudCBp
cyBkb25lLlxuXHRcblx0ICB2YXIgcHJldlJlZiA9IG51bGw7XG5cdCAgdmFyIHByZXZPd25lciA9
IG51bGw7XG5cdCAgaWYgKHByZXZFbGVtZW50ICE9PSBudWxsICYmIHR5cGVvZiBwcmV2RWxlbWVu
dCA9PT0gJ29iamVjdCcpIHtcblx0ICAgIHByZXZSZWYgPSBwcmV2RWxlbWVudC5yZWY7XG5cdCAg
ICBwcmV2T3duZXIgPSBwcmV2RWxlbWVudC5fb3duZXI7XG5cdCAgfVxuXHRcblx0ICB2YXIgbmV4
dFJlZiA9IG51bGw7XG5cdCAgdmFyIG5leHRPd25lciA9IG51bGw7XG5cdCAgaWYgKG5leHRFbGVt
ZW50ICE9PSBudWxsICYmIHR5cGVvZiBuZXh0RWxlbWVudCA9PT0gJ29iamVjdCcpIHtcblx0ICAg
IG5leHRSZWYgPSBuZXh0RWxlbWVudC5yZWY7XG5cdCAgICBuZXh0T3duZXIgPSBuZXh0RWxlbWVu
dC5fb3duZXI7XG5cdCAgfVxuXHRcblx0ICByZXR1cm4gcHJldlJlZiAhPT0gbmV4dFJlZiB8fFxu
XHQgIC8vIElmIG93bmVyIGNoYW5nZXMgYnV0IHdlIGhhdmUgYW4gdW5jaGFuZ2VkIGZ1bmN0aW9u
IHJlZiwgZG9uJ3QgdXBkYXRlIHJlZnNcblx0ICB0eXBlb2YgbmV4dFJlZiA9PT0gJ3N0cmluZycg
JiYgbmV4dE93bmVyICE9PSBwcmV2T3duZXI7XG5cdH07XG5cdFxuXHRSZWFjdFJlZi5kZXRhY2hS
ZWZzID0gZnVuY3Rpb24gKGluc3RhbmNlLCBlbGVtZW50KSB7XG5cdCAgaWYgKGVsZW1lbnQgPT09
IG51bGwgfHwgdHlwZW9mIGVsZW1lbnQgIT09ICdvYmplY3QnKSB7XG5cdCAgICByZXR1cm47XG5c
dCAgfVxuXHQgIHZhciByZWYgPSBlbGVtZW50LnJlZjtcblx0ICBpZiAocmVmICE9IG51bGwpIHtc
blx0ICAgIGRldGFjaFJlZihyZWYsIGluc3RhbmNlLCBlbGVtZW50Ll9vd25lcik7XG5cdCAgfVxu
XHR9O1xuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBSZWFjdFJlZjtcblxuLyoqKi8gfSxcbi8qIDE2
MSAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9f
KSB7XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQsIEZhY2Vib29rLCBJbmMu
XG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUg
aXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQg
KiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUu
IEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQg
aW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqL1xu
XHRcblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0dmFyIF9hc3NpZ24gPSBfX3dlYnBhY2tfcmVxdWly
ZV9fKDQpO1xuXHRcblx0dmFyIFBvb2xlZENsYXNzID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMyk7
XG5cdHZhciBUcmFuc2FjdGlvbiA9IF9fd2VicGFja19yZXF1aXJlX18oMjcpO1xuXHR2YXIgUmVh
Y3RJbnN0cnVtZW50YXRpb24gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDgpO1xuXHR2YXIgUmVhY3RT
ZXJ2ZXJVcGRhdGVRdWV1ZSA9IF9fd2VicGFja19yZXF1aXJlX18oMTYyKTtcblx0XG5cdC8qKlxu
XHQgKiBFeGVjdXRlZCB3aXRoaW4gdGhlIHNjb3BlIG9mIHRoZSBgVHJhbnNhY3Rpb25gIGluc3Rh
bmNlLiBDb25zaWRlciB0aGVzZSBhc1xuXHQgKiBiZWluZyBtZW1iZXIgbWV0aG9kcywgYnV0IHdp
dGggYW4gaW1wbGllZCBvcmRlcmluZyB3aGlsZSBiZWluZyBpc29sYXRlZCBmcm9tXG5cdCAqIGVh
Y2ggb3RoZXIuXG5cdCAqL1xuXHR2YXIgVFJBTlNBQ1RJT05fV1JBUFBFUlMgPSBbXTtcblx0XG5c
dGlmIChmYWxzZSkge1xuXHQgIFRSQU5TQUNUSU9OX1dSQVBQRVJTLnB1c2goe1xuXHQgICAgaW5p
dGlhbGl6ZTogUmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9uQmVnaW5GbHVzaCxcblx0
ICAgIGNsb3NlOiBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25FbmRGbHVzaFxuXHQg
IH0pO1xuXHR9XG5cdFxuXHR2YXIgbm9vcENhbGxiYWNrUXVldWUgPSB7XG5cdCAgZW5xdWV1ZTog
ZnVuY3Rpb24gKCkge31cblx0fTtcblx0XG5cdC8qKlxuXHQgKiBAY2xhc3MgUmVhY3RTZXJ2ZXJS
ZW5kZXJpbmdUcmFuc2FjdGlvblxuXHQgKiBAcGFyYW0ge2Jvb2xlYW59IHJlbmRlclRvU3RhdGlj
TWFya3VwXG5cdCAqL1xuXHRmdW5jdGlvbiBSZWFjdFNlcnZlclJlbmRlcmluZ1RyYW5zYWN0aW9u
KHJlbmRlclRvU3RhdGljTWFya3VwKSB7XG5cdCAgdGhpcy5yZWluaXRpYWxpemVUcmFuc2FjdGlv
bigpO1xuXHQgIHRoaXMucmVuZGVyVG9TdGF0aWNNYXJrdXAgPSByZW5kZXJUb1N0YXRpY01hcmt1
cDtcblx0ICB0aGlzLnVzZUNyZWF0ZUVsZW1lbnQgPSBmYWxzZTtcblx0ICB0aGlzLnVwZGF0ZVF1
ZXVlID0gbmV3IFJlYWN0U2VydmVyVXBkYXRlUXVldWUodGhpcyk7XG5cdH1cblx0XG5cdHZhciBN
aXhpbiA9IHtcblx0ICAvKipcblx0ICAgKiBAc2VlIFRyYW5zYWN0aW9uXG5cdCAgICogQGFic3Ry
YWN0XG5cdCAgICogQGZpbmFsXG5cdCAgICogQHJldHVybiB7YXJyYXl9IEVtcHR5IGxpc3Qgb2Yg
b3BlcmF0aW9uIHdyYXAgcHJvY2VkdXJlcy5cblx0ICAgKi9cblx0ICBnZXRUcmFuc2FjdGlvbldy
YXBwZXJzOiBmdW5jdGlvbiAoKSB7XG5cdCAgICByZXR1cm4gVFJBTlNBQ1RJT05fV1JBUFBFUlM7
XG5cdCAgfSxcblx0XG5cdCAgLyoqXG5cdCAgICogQHJldHVybiB7b2JqZWN0fSBUaGUgcXVldWUg
dG8gY29sbGVjdCBgb25ET01SZWFkeWAgY2FsbGJhY2tzIHdpdGguXG5cdCAgICovXG5cdCAgZ2V0
UmVhY3RNb3VudFJlYWR5OiBmdW5jdGlvbiAoKSB7XG5cdCAgICByZXR1cm4gbm9vcENhbGxiYWNr
UXVldWU7XG5cdCAgfSxcblx0XG5cdCAgLyoqXG5cdCAgICogQHJldHVybiB7b2JqZWN0fSBUaGUg
cXVldWUgdG8gY29sbGVjdCBSZWFjdCBhc3luYyBldmVudHMuXG5cdCAgICovXG5cdCAgZ2V0VXBk
YXRlUXVldWU6IGZ1bmN0aW9uICgpIHtcblx0ICAgIHJldHVybiB0aGlzLnVwZGF0ZVF1ZXVlO1xu
XHQgIH0sXG5cdFxuXHQgIC8qKlxuXHQgICAqIGBQb29sZWRDbGFzc2AgbG9va3MgZm9yIHRoaXMs
IGFuZCB3aWxsIGludm9rZSB0aGlzIGJlZm9yZSBhbGxvd2luZyB0aGlzXG5cdCAgICogaW5zdGFu
Y2UgdG8gYmUgcmV1c2VkLlxuXHQgICAqL1xuXHQgIGRlc3RydWN0b3I6IGZ1bmN0aW9uICgpIHt9
LFxuXHRcblx0ICBjaGVja3BvaW50OiBmdW5jdGlvbiAoKSB7fSxcblx0XG5cdCAgcm9sbGJhY2s6
IGZ1bmN0aW9uICgpIHt9XG5cdH07XG5cdFxuXHRfYXNzaWduKFJlYWN0U2VydmVyUmVuZGVyaW5n
VHJhbnNhY3Rpb24ucHJvdG90eXBlLCBUcmFuc2FjdGlvbiwgTWl4aW4pO1xuXHRcblx0UG9vbGVk
Q2xhc3MuYWRkUG9vbGluZ1RvKFJlYWN0U2VydmVyUmVuZGVyaW5nVHJhbnNhY3Rpb24pO1xuXHRc
blx0bW9kdWxlLmV4cG9ydHMgPSBSZWFjdFNlcnZlclJlbmRlcmluZ1RyYW5zYWN0aW9uO1xuXG4v
KioqLyB9LFxuLyogMTYyICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2Vi
cGFja19yZXF1aXJlX18pIHtcblxuXHQvKipcblx0ICogQ29weXJpZ2h0IDIwMTUtcHJlc2VudCwg
RmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICogVGhp
cyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91
bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhp
cyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRz
IGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5c
blx0ICpcblx0ICogXG5cdCAqL1xuXHRcblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0ZnVuY3Rpb24g
X2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBp
bnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNh
bGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpOyB9IH1cblx0XG5cdHZhciBSZWFjdFVwZGF0ZVF1
ZXVlID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0Mik7XG5cdFxuXHR2YXIgd2FybmluZyA9IF9fd2Vi
cGFja19yZXF1aXJlX18oMik7XG5cdFxuXHRmdW5jdGlvbiB3YXJuTm9vcChwdWJsaWNJbnN0YW5j
ZSwgY2FsbGVyTmFtZSkge1xuXHQgIGlmIChmYWxzZSkge1xuXHQgICAgdmFyIGNvbnN0cnVjdG9y
ID0gcHVibGljSW5zdGFuY2UuY29uc3RydWN0b3I7XG5cdCAgICBwcm9jZXNzLmVudi5OT0RFX0VO
ViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJyVzKC4uLik6IENhbiBvbmx5IHVw
ZGF0ZSBhIG1vdW50aW5nIGNvbXBvbmVudC4gJyArICdUaGlzIHVzdWFsbHkgbWVhbnMgeW91IGNh
bGxlZCAlcygpIG91dHNpZGUgY29tcG9uZW50V2lsbE1vdW50KCkgb24gdGhlIHNlcnZlci4gJyAr
ICdUaGlzIGlzIGEgbm8tb3AuIFBsZWFzZSBjaGVjayB0aGUgY29kZSBmb3IgdGhlICVzIGNvbXBv
bmVudC4nLCBjYWxsZXJOYW1lLCBjYWxsZXJOYW1lLCBjb25zdHJ1Y3RvciAmJiAoY29uc3RydWN0
b3IuZGlzcGxheU5hbWUgfHwgY29uc3RydWN0b3IubmFtZSkgfHwgJ1JlYWN0Q2xhc3MnKSA6IHZv
aWQgMDtcblx0ICB9XG5cdH1cblx0XG5cdC8qKlxuXHQgKiBUaGlzIGlzIHRoZSB1cGRhdGUgcXVl
dWUgdXNlZCBmb3Igc2VydmVyIHJlbmRlcmluZy5cblx0ICogSXQgZGVsZWdhdGVzIHRvIFJlYWN0
VXBkYXRlUXVldWUgd2hpbGUgc2VydmVyIHJlbmRlcmluZyBpcyBpbiBwcm9ncmVzcyBhbmRcblx0
ICogc3dpdGNoZXMgdG8gUmVhY3ROb29wVXBkYXRlUXVldWUgYWZ0ZXIgdGhlIHRyYW5zYWN0aW9u
IGhhcyBjb21wbGV0ZWQuXG5cdCAqIEBjbGFzcyBSZWFjdFNlcnZlclVwZGF0ZVF1ZXVlXG5cdCAq
IEBwYXJhbSB7VHJhbnNhY3Rpb259IHRyYW5zYWN0aW9uXG5cdCAqL1xuXHRcblx0dmFyIFJlYWN0
U2VydmVyVXBkYXRlUXVldWUgPSBmdW5jdGlvbiAoKSB7XG5cdCAgZnVuY3Rpb24gUmVhY3RTZXJ2
ZXJVcGRhdGVRdWV1ZSh0cmFuc2FjdGlvbikge1xuXHQgICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMs
IFJlYWN0U2VydmVyVXBkYXRlUXVldWUpO1xuXHRcblx0ICAgIHRoaXMudHJhbnNhY3Rpb24gPSB0
cmFuc2FjdGlvbjtcblx0ICB9XG5cdFxuXHQgIC8qKlxuXHQgICAqIENoZWNrcyB3aGV0aGVyIG9y
IG5vdCB0aGlzIGNvbXBvc2l0ZSBjb21wb25lbnQgaXMgbW91bnRlZC5cblx0ICAgKiBAcGFyYW0g
e1JlYWN0Q2xhc3N9IHB1YmxpY0luc3RhbmNlIFRoZSBpbnN0YW5jZSB3ZSB3YW50IHRvIHRlc3Qu
XG5cdCAgICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBpZiBtb3VudGVkLCBmYWxzZSBvdGhlcndp
c2UuXG5cdCAgICogQHByb3RlY3RlZFxuXHQgICAqIEBmaW5hbFxuXHQgICAqL1xuXHRcblx0XG5c
dCAgUmVhY3RTZXJ2ZXJVcGRhdGVRdWV1ZS5wcm90b3R5cGUuaXNNb3VudGVkID0gZnVuY3Rpb24g
aXNNb3VudGVkKHB1YmxpY0luc3RhbmNlKSB7XG5cdCAgICByZXR1cm4gZmFsc2U7XG5cdCAgfTtc
blx0XG5cdCAgLyoqXG5cdCAgICogRW5xdWV1ZSBhIGNhbGxiYWNrIHRoYXQgd2lsbCBiZSBleGVj
dXRlZCBhZnRlciBhbGwgdGhlIHBlbmRpbmcgdXBkYXRlc1xuXHQgICAqIGhhdmUgcHJvY2Vzc2Vk
LlxuXHQgICAqXG5cdCAgICogQHBhcmFtIHtSZWFjdENsYXNzfSBwdWJsaWNJbnN0YW5jZSBUaGUg
aW5zdGFuY2UgdG8gdXNlIGFzIGB0aGlzYCBjb250ZXh0LlxuXHQgICAqIEBwYXJhbSB7P2Z1bmN0
aW9ufSBjYWxsYmFjayBDYWxsZWQgYWZ0ZXIgc3RhdGUgaXMgdXBkYXRlZC5cblx0ICAgKiBAaW50
ZXJuYWxcblx0ICAgKi9cblx0XG5cdFxuXHQgIFJlYWN0U2VydmVyVXBkYXRlUXVldWUucHJvdG90
eXBlLmVucXVldWVDYWxsYmFjayA9IGZ1bmN0aW9uIGVucXVldWVDYWxsYmFjayhwdWJsaWNJbnN0
YW5jZSwgY2FsbGJhY2ssIGNhbGxlck5hbWUpIHtcblx0ICAgIGlmICh0aGlzLnRyYW5zYWN0aW9u
LmlzSW5UcmFuc2FjdGlvbigpKSB7XG5cdCAgICAgIFJlYWN0VXBkYXRlUXVldWUuZW5xdWV1ZUNh
bGxiYWNrKHB1YmxpY0luc3RhbmNlLCBjYWxsYmFjaywgY2FsbGVyTmFtZSk7XG5cdCAgICB9XG5c
dCAgfTtcblx0XG5cdCAgLyoqXG5cdCAgICogRm9yY2VzIGFuIHVwZGF0ZS4gVGhpcyBzaG91bGQg
b25seSBiZSBpbnZva2VkIHdoZW4gaXQgaXMga25vd24gd2l0aFxuXHQgICAqIGNlcnRhaW50eSB0
aGF0IHdlIGFyZSAqKm5vdCoqIGluIGEgRE9NIHRyYW5zYWN0aW9uLlxuXHQgICAqXG5cdCAgICog
WW91IG1heSB3YW50IHRvIGNhbGwgdGhpcyB3aGVuIHlvdSBrbm93IHRoYXQgc29tZSBkZWVwZXIg
YXNwZWN0IG9mIHRoZVxuXHQgICAqIGNvbXBvbmVudCdzIHN0YXRlIGhhcyBjaGFuZ2VkIGJ1dCBg
c2V0U3RhdGVgIHdhcyBub3QgY2FsbGVkLlxuXHQgICAqXG5cdCAgICogVGhpcyB3aWxsIG5vdCBp
bnZva2UgYHNob3VsZENvbXBvbmVudFVwZGF0ZWAsIGJ1dCBpdCB3aWxsIGludm9rZVxuXHQgICAq
IGBjb21wb25lbnRXaWxsVXBkYXRlYCBhbmQgYGNvbXBvbmVudERpZFVwZGF0ZWAuXG5cdCAgICpc
blx0ICAgKiBAcGFyYW0ge1JlYWN0Q2xhc3N9IHB1YmxpY0luc3RhbmNlIFRoZSBpbnN0YW5jZSB0
aGF0IHNob3VsZCByZXJlbmRlci5cblx0ICAgKiBAaW50ZXJuYWxcblx0ICAgKi9cblx0XG5cdFxu
XHQgIFJlYWN0U2VydmVyVXBkYXRlUXVldWUucHJvdG90eXBlLmVucXVldWVGb3JjZVVwZGF0ZSA9
IGZ1bmN0aW9uIGVucXVldWVGb3JjZVVwZGF0ZShwdWJsaWNJbnN0YW5jZSkge1xuXHQgICAgaWYg
KHRoaXMudHJhbnNhY3Rpb24uaXNJblRyYW5zYWN0aW9uKCkpIHtcblx0ICAgICAgUmVhY3RVcGRh
dGVRdWV1ZS5lbnF1ZXVlRm9yY2VVcGRhdGUocHVibGljSW5zdGFuY2UpO1xuXHQgICAgfSBlbHNl
IHtcblx0ICAgICAgd2Fybk5vb3AocHVibGljSW5zdGFuY2UsICdmb3JjZVVwZGF0ZScpO1xuXHQg
ICAgfVxuXHQgIH07XG5cdFxuXHQgIC8qKlxuXHQgICAqIFJlcGxhY2VzIGFsbCBvZiB0aGUgc3Rh
dGUuIEFsd2F5cyB1c2UgdGhpcyBvciBgc2V0U3RhdGVgIHRvIG11dGF0ZSBzdGF0ZS5cblx0ICAg
KiBZb3Ugc2hvdWxkIHRyZWF0IGB0aGlzLnN0YXRlYCBhcyBpbW11dGFibGUuXG5cdCAgICpcblx0
ICAgKiBUaGVyZSBpcyBubyBndWFyYW50ZWUgdGhhdCBgdGhpcy5zdGF0ZWAgd2lsbCBiZSBpbW1l
ZGlhdGVseSB1cGRhdGVkLCBzb1xuXHQgICAqIGFjY2Vzc2luZyBgdGhpcy5zdGF0ZWAgYWZ0ZXIg
Y2FsbGluZyB0aGlzIG1ldGhvZCBtYXkgcmV0dXJuIHRoZSBvbGQgdmFsdWUuXG5cdCAgICpcblx0
ICAgKiBAcGFyYW0ge1JlYWN0Q2xhc3N9IHB1YmxpY0luc3RhbmNlIFRoZSBpbnN0YW5jZSB0aGF0
IHNob3VsZCByZXJlbmRlci5cblx0ICAgKiBAcGFyYW0ge29iamVjdHxmdW5jdGlvbn0gY29tcGxl
dGVTdGF0ZSBOZXh0IHN0YXRlLlxuXHQgICAqIEBpbnRlcm5hbFxuXHQgICAqL1xuXHRcblx0XG5c
dCAgUmVhY3RTZXJ2ZXJVcGRhdGVRdWV1ZS5wcm90b3R5cGUuZW5xdWV1ZVJlcGxhY2VTdGF0ZSA9
IGZ1bmN0aW9uIGVucXVldWVSZXBsYWNlU3RhdGUocHVibGljSW5zdGFuY2UsIGNvbXBsZXRlU3Rh
dGUpIHtcblx0ICAgIGlmICh0aGlzLnRyYW5zYWN0aW9uLmlzSW5UcmFuc2FjdGlvbigpKSB7XG5c
dCAgICAgIFJlYWN0VXBkYXRlUXVldWUuZW5xdWV1ZVJlcGxhY2VTdGF0ZShwdWJsaWNJbnN0YW5j
ZSwgY29tcGxldGVTdGF0ZSk7XG5cdCAgICB9IGVsc2Uge1xuXHQgICAgICB3YXJuTm9vcChwdWJs
aWNJbnN0YW5jZSwgJ3JlcGxhY2VTdGF0ZScpO1xuXHQgICAgfVxuXHQgIH07XG5cdFxuXHQgIC8q
KlxuXHQgICAqIFNldHMgYSBzdWJzZXQgb2YgdGhlIHN0YXRlLiBUaGlzIG9ubHkgZXhpc3RzIGJl
Y2F1c2UgX3BlbmRpbmdTdGF0ZSBpc1xuXHQgICAqIGludGVybmFsLiBUaGlzIHByb3ZpZGVzIGEg
bWVyZ2luZyBzdHJhdGVneSB0aGF0IGlzIG5vdCBhdmFpbGFibGUgdG8gZGVlcFxuXHQgICAqIHBy
b3BlcnRpZXMgd2hpY2ggaXMgY29uZnVzaW5nLiBUT0RPOiBFeHBvc2UgcGVuZGluZ1N0YXRlIG9y
IGRvbid0IHVzZSBpdFxuXHQgICAqIGR1cmluZyB0aGUgbWVyZ2UuXG5cdCAgICpcblx0ICAgKiBA
cGFyYW0ge1JlYWN0Q2xhc3N9IHB1YmxpY0luc3RhbmNlIFRoZSBpbnN0YW5jZSB0aGF0IHNob3Vs
ZCByZXJlbmRlci5cblx0ICAgKiBAcGFyYW0ge29iamVjdHxmdW5jdGlvbn0gcGFydGlhbFN0YXRl
IE5leHQgcGFydGlhbCBzdGF0ZSB0byBiZSBtZXJnZWQgd2l0aCBzdGF0ZS5cblx0ICAgKiBAaW50
ZXJuYWxcblx0ICAgKi9cblx0XG5cdFxuXHQgIFJlYWN0U2VydmVyVXBkYXRlUXVldWUucHJvdG90
eXBlLmVucXVldWVTZXRTdGF0ZSA9IGZ1bmN0aW9uIGVucXVldWVTZXRTdGF0ZShwdWJsaWNJbnN0
YW5jZSwgcGFydGlhbFN0YXRlKSB7XG5cdCAgICBpZiAodGhpcy50cmFuc2FjdGlvbi5pc0luVHJh
bnNhY3Rpb24oKSkge1xuXHQgICAgICBSZWFjdFVwZGF0ZVF1ZXVlLmVucXVldWVTZXRTdGF0ZShw
dWJsaWNJbnN0YW5jZSwgcGFydGlhbFN0YXRlKTtcblx0ICAgIH0gZWxzZSB7XG5cdCAgICAgIHdh
cm5Ob29wKHB1YmxpY0luc3RhbmNlLCAnc2V0U3RhdGUnKTtcblx0ICAgIH1cblx0ICB9O1xuXHRc
blx0ICByZXR1cm4gUmVhY3RTZXJ2ZXJVcGRhdGVRdWV1ZTtcblx0fSgpO1xuXHRcblx0bW9kdWxl
LmV4cG9ydHMgPSBSZWFjdFNlcnZlclVwZGF0ZVF1ZXVlO1xuXG4vKioqLyB9LFxuLyogMTYzICov
XG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuXHQvKipcblx0ICogQ29weXJp
Z2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZl
ZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNE
LXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9v
dCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQg
KiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRo
ZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpcblx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxu
XHRtb2R1bGUuZXhwb3J0cyA9ICcxNS42LjEnO1xuXG4vKioqLyB9LFxuLyogMTY0ICovXG4vKioq
LyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuXHQvKipcblx0ICogQ29weXJpZ2h0IDIw
MTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0
ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxl
IGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJl
Y3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBw
YXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1l
IGRpcmVjdG9yeS5cblx0ICpcblx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHR2YXIg
TlMgPSB7XG5cdCAgeGxpbms6ICdodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rJyxcblx0ICB4
bWw6ICdodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1lc3BhY2UnXG5cdH07XG5cdFxuXHQv
LyBXZSB1c2UgYXR0cmlidXRlcyBmb3IgZXZlcnl0aGluZyBTVkcgc28gbGV0J3MgYXZvaWQgc29t
ZSBkdXBsaWNhdGlvbiBhbmQgcnVuXG5cdC8vIGNvZGUgaW5zdGVhZC5cblx0Ly8gVGhlIGZvbGxv
d2luZyBhcmUgYWxsIHNwZWNpZmllZCBpbiB0aGUgSFRNTCBjb25maWcgYWxyZWFkeSBzbyB3ZSBl
eGNsdWRlIGhlcmUuXG5cdC8vIC0gY2xhc3MgKGFzIGNsYXNzTmFtZSlcblx0Ly8gLSBjb2xvclxu
XHQvLyAtIGhlaWdodFxuXHQvLyAtIGlkXG5cdC8vIC0gbGFuZ1xuXHQvLyAtIG1heFxuXHQvLyAt
IG1lZGlhXG5cdC8vIC0gbWV0aG9kXG5cdC8vIC0gbWluXG5cdC8vIC0gbmFtZVxuXHQvLyAtIHN0
eWxlXG5cdC8vIC0gdGFyZ2V0XG5cdC8vIC0gdHlwZVxuXHQvLyAtIHdpZHRoXG5cdHZhciBBVFRS
UyA9IHtcblx0ICBhY2NlbnRIZWlnaHQ6ICdhY2NlbnQtaGVpZ2h0Jyxcblx0ICBhY2N1bXVsYXRl
OiAwLFxuXHQgIGFkZGl0aXZlOiAwLFxuXHQgIGFsaWdubWVudEJhc2VsaW5lOiAnYWxpZ25tZW50
LWJhc2VsaW5lJyxcblx0ICBhbGxvd1Jlb3JkZXI6ICdhbGxvd1Jlb3JkZXInLFxuXHQgIGFscGhh
YmV0aWM6IDAsXG5cdCAgYW1wbGl0dWRlOiAwLFxuXHQgIGFyYWJpY0Zvcm06ICdhcmFiaWMtZm9y
bScsXG5cdCAgYXNjZW50OiAwLFxuXHQgIGF0dHJpYnV0ZU5hbWU6ICdhdHRyaWJ1dGVOYW1lJyxc
blx0ICBhdHRyaWJ1dGVUeXBlOiAnYXR0cmlidXRlVHlwZScsXG5cdCAgYXV0b1JldmVyc2U6ICdh
dXRvUmV2ZXJzZScsXG5cdCAgYXppbXV0aDogMCxcblx0ICBiYXNlRnJlcXVlbmN5OiAnYmFzZUZy
ZXF1ZW5jeScsXG5cdCAgYmFzZVByb2ZpbGU6ICdiYXNlUHJvZmlsZScsXG5cdCAgYmFzZWxpbmVT
aGlmdDogJ2Jhc2VsaW5lLXNoaWZ0Jyxcblx0ICBiYm94OiAwLFxuXHQgIGJlZ2luOiAwLFxuXHQg
IGJpYXM6IDAsXG5cdCAgYnk6IDAsXG5cdCAgY2FsY01vZGU6ICdjYWxjTW9kZScsXG5cdCAgY2Fw
SGVpZ2h0OiAnY2FwLWhlaWdodCcsXG5cdCAgY2xpcDogMCxcblx0ICBjbGlwUGF0aDogJ2NsaXAt
cGF0aCcsXG5cdCAgY2xpcFJ1bGU6ICdjbGlwLXJ1bGUnLFxuXHQgIGNsaXBQYXRoVW5pdHM6ICdj
bGlwUGF0aFVuaXRzJyxcblx0ICBjb2xvckludGVycG9sYXRpb246ICdjb2xvci1pbnRlcnBvbGF0
aW9uJyxcblx0ICBjb2xvckludGVycG9sYXRpb25GaWx0ZXJzOiAnY29sb3ItaW50ZXJwb2xhdGlv
bi1maWx0ZXJzJyxcblx0ICBjb2xvclByb2ZpbGU6ICdjb2xvci1wcm9maWxlJyxcblx0ICBjb2xv
clJlbmRlcmluZzogJ2NvbG9yLXJlbmRlcmluZycsXG5cdCAgY29udGVudFNjcmlwdFR5cGU6ICdj
b250ZW50U2NyaXB0VHlwZScsXG5cdCAgY29udGVudFN0eWxlVHlwZTogJ2NvbnRlbnRTdHlsZVR5
cGUnLFxuXHQgIGN1cnNvcjogMCxcblx0ICBjeDogMCxcblx0ICBjeTogMCxcblx0ICBkOiAwLFxu
XHQgIGRlY2VsZXJhdGU6IDAsXG5cdCAgZGVzY2VudDogMCxcblx0ICBkaWZmdXNlQ29uc3RhbnQ6
ICdkaWZmdXNlQ29uc3RhbnQnLFxuXHQgIGRpcmVjdGlvbjogMCxcblx0ICBkaXNwbGF5OiAwLFxu
XHQgIGRpdmlzb3I6IDAsXG5cdCAgZG9taW5hbnRCYXNlbGluZTogJ2RvbWluYW50LWJhc2VsaW5l
Jyxcblx0ICBkdXI6IDAsXG5cdCAgZHg6IDAsXG5cdCAgZHk6IDAsXG5cdCAgZWRnZU1vZGU6ICdl
ZGdlTW9kZScsXG5cdCAgZWxldmF0aW9uOiAwLFxuXHQgIGVuYWJsZUJhY2tncm91bmQ6ICdlbmFi
bGUtYmFja2dyb3VuZCcsXG5cdCAgZW5kOiAwLFxuXHQgIGV4cG9uZW50OiAwLFxuXHQgIGV4dGVy
bmFsUmVzb3VyY2VzUmVxdWlyZWQ6ICdleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkJyxcblx0ICBm
aWxsOiAwLFxuXHQgIGZpbGxPcGFjaXR5OiAnZmlsbC1vcGFjaXR5Jyxcblx0ICBmaWxsUnVsZTog
J2ZpbGwtcnVsZScsXG5cdCAgZmlsdGVyOiAwLFxuXHQgIGZpbHRlclJlczogJ2ZpbHRlclJlcycs
XG5cdCAgZmlsdGVyVW5pdHM6ICdmaWx0ZXJVbml0cycsXG5cdCAgZmxvb2RDb2xvcjogJ2Zsb29k
LWNvbG9yJyxcblx0ICBmbG9vZE9wYWNpdHk6ICdmbG9vZC1vcGFjaXR5Jyxcblx0ICBmb2N1c2Fi
bGU6IDAsXG5cdCAgZm9udEZhbWlseTogJ2ZvbnQtZmFtaWx5Jyxcblx0ICBmb250U2l6ZTogJ2Zv
bnQtc2l6ZScsXG5cdCAgZm9udFNpemVBZGp1c3Q6ICdmb250LXNpemUtYWRqdXN0Jyxcblx0ICBm
b250U3RyZXRjaDogJ2ZvbnQtc3RyZXRjaCcsXG5cdCAgZm9udFN0eWxlOiAnZm9udC1zdHlsZScs
XG5cdCAgZm9udFZhcmlhbnQ6ICdmb250LXZhcmlhbnQnLFxuXHQgIGZvbnRXZWlnaHQ6ICdmb250
LXdlaWdodCcsXG5cdCAgZm9ybWF0OiAwLFxuXHQgIGZyb206IDAsXG5cdCAgZng6IDAsXG5cdCAg
Znk6IDAsXG5cdCAgZzE6IDAsXG5cdCAgZzI6IDAsXG5cdCAgZ2x5cGhOYW1lOiAnZ2x5cGgtbmFt
ZScsXG5cdCAgZ2x5cGhPcmllbnRhdGlvbkhvcml6b250YWw6ICdnbHlwaC1vcmllbnRhdGlvbi1o
b3Jpem9udGFsJyxcblx0ICBnbHlwaE9yaWVudGF0aW9uVmVydGljYWw6ICdnbHlwaC1vcmllbnRh
dGlvbi12ZXJ0aWNhbCcsXG5cdCAgZ2x5cGhSZWY6ICdnbHlwaFJlZicsXG5cdCAgZ3JhZGllbnRU
cmFuc2Zvcm06ICdncmFkaWVudFRyYW5zZm9ybScsXG5cdCAgZ3JhZGllbnRVbml0czogJ2dyYWRp
ZW50VW5pdHMnLFxuXHQgIGhhbmdpbmc6IDAsXG5cdCAgaG9yaXpBZHZYOiAnaG9yaXotYWR2LXgn
LFxuXHQgIGhvcml6T3JpZ2luWDogJ2hvcml6LW9yaWdpbi14Jyxcblx0ICBpZGVvZ3JhcGhpYzog
MCxcblx0ICBpbWFnZVJlbmRlcmluZzogJ2ltYWdlLXJlbmRlcmluZycsXG5cdCAgJ2luJzogMCxc
blx0ICBpbjI6IDAsXG5cdCAgaW50ZXJjZXB0OiAwLFxuXHQgIGs6IDAsXG5cdCAgazE6IDAsXG5c
dCAgazI6IDAsXG5cdCAgazM6IDAsXG5cdCAgazQ6IDAsXG5cdCAga2VybmVsTWF0cml4OiAna2Vy
bmVsTWF0cml4Jyxcblx0ICBrZXJuZWxVbml0TGVuZ3RoOiAna2VybmVsVW5pdExlbmd0aCcsXG5c
dCAga2VybmluZzogMCxcblx0ICBrZXlQb2ludHM6ICdrZXlQb2ludHMnLFxuXHQgIGtleVNwbGlu
ZXM6ICdrZXlTcGxpbmVzJyxcblx0ICBrZXlUaW1lczogJ2tleVRpbWVzJyxcblx0ICBsZW5ndGhB
ZGp1c3Q6ICdsZW5ndGhBZGp1c3QnLFxuXHQgIGxldHRlclNwYWNpbmc6ICdsZXR0ZXItc3BhY2lu
ZycsXG5cdCAgbGlnaHRpbmdDb2xvcjogJ2xpZ2h0aW5nLWNvbG9yJyxcblx0ICBsaW1pdGluZ0Nv
bmVBbmdsZTogJ2xpbWl0aW5nQ29uZUFuZ2xlJyxcblx0ICBsb2NhbDogMCxcblx0ICBtYXJrZXJF
bmQ6ICdtYXJrZXItZW5kJyxcblx0ICBtYXJrZXJNaWQ6ICdtYXJrZXItbWlkJyxcblx0ICBtYXJr
ZXJTdGFydDogJ21hcmtlci1zdGFydCcsXG5cdCAgbWFya2VySGVpZ2h0OiAnbWFya2VySGVpZ2h0
Jyxcblx0ICBtYXJrZXJVbml0czogJ21hcmtlclVuaXRzJyxcblx0ICBtYXJrZXJXaWR0aDogJ21h
cmtlcldpZHRoJyxcblx0ICBtYXNrOiAwLFxuXHQgIG1hc2tDb250ZW50VW5pdHM6ICdtYXNrQ29u
dGVudFVuaXRzJyxcblx0ICBtYXNrVW5pdHM6ICdtYXNrVW5pdHMnLFxuXHQgIG1hdGhlbWF0aWNh
bDogMCxcblx0ICBtb2RlOiAwLFxuXHQgIG51bU9jdGF2ZXM6ICdudW1PY3RhdmVzJyxcblx0ICBv
ZmZzZXQ6IDAsXG5cdCAgb3BhY2l0eTogMCxcblx0ICBvcGVyYXRvcjogMCxcblx0ICBvcmRlcjog
MCxcblx0ICBvcmllbnQ6IDAsXG5cdCAgb3JpZW50YXRpb246IDAsXG5cdCAgb3JpZ2luOiAwLFxu
XHQgIG92ZXJmbG93OiAwLFxuXHQgIG92ZXJsaW5lUG9zaXRpb246ICdvdmVybGluZS1wb3NpdGlv
bicsXG5cdCAgb3ZlcmxpbmVUaGlja25lc3M6ICdvdmVybGluZS10aGlja25lc3MnLFxuXHQgIHBh
aW50T3JkZXI6ICdwYWludC1vcmRlcicsXG5cdCAgcGFub3NlMTogJ3Bhbm9zZS0xJyxcblx0ICBw
YXRoTGVuZ3RoOiAncGF0aExlbmd0aCcsXG5cdCAgcGF0dGVybkNvbnRlbnRVbml0czogJ3BhdHRl
cm5Db250ZW50VW5pdHMnLFxuXHQgIHBhdHRlcm5UcmFuc2Zvcm06ICdwYXR0ZXJuVHJhbnNmb3Jt
Jyxcblx0ICBwYXR0ZXJuVW5pdHM6ICdwYXR0ZXJuVW5pdHMnLFxuXHQgIHBvaW50ZXJFdmVudHM6
ICdwb2ludGVyLWV2ZW50cycsXG5cdCAgcG9pbnRzOiAwLFxuXHQgIHBvaW50c0F0WDogJ3BvaW50
c0F0WCcsXG5cdCAgcG9pbnRzQXRZOiAncG9pbnRzQXRZJyxcblx0ICBwb2ludHNBdFo6ICdwb2lu
dHNBdFonLFxuXHQgIHByZXNlcnZlQWxwaGE6ICdwcmVzZXJ2ZUFscGhhJyxcblx0ICBwcmVzZXJ2
ZUFzcGVjdFJhdGlvOiAncHJlc2VydmVBc3BlY3RSYXRpbycsXG5cdCAgcHJpbWl0aXZlVW5pdHM6
ICdwcmltaXRpdmVVbml0cycsXG5cdCAgcjogMCxcblx0ICByYWRpdXM6IDAsXG5cdCAgcmVmWDog
J3JlZlgnLFxuXHQgIHJlZlk6ICdyZWZZJyxcblx0ICByZW5kZXJpbmdJbnRlbnQ6ICdyZW5kZXJp
bmctaW50ZW50Jyxcblx0ICByZXBlYXRDb3VudDogJ3JlcGVhdENvdW50Jyxcblx0ICByZXBlYXRE
dXI6ICdyZXBlYXREdXInLFxuXHQgIHJlcXVpcmVkRXh0ZW5zaW9uczogJ3JlcXVpcmVkRXh0ZW5z
aW9ucycsXG5cdCAgcmVxdWlyZWRGZWF0dXJlczogJ3JlcXVpcmVkRmVhdHVyZXMnLFxuXHQgIHJl
c3RhcnQ6IDAsXG5cdCAgcmVzdWx0OiAwLFxuXHQgIHJvdGF0ZTogMCxcblx0ICByeDogMCxcblx0
ICByeTogMCxcblx0ICBzY2FsZTogMCxcblx0ICBzZWVkOiAwLFxuXHQgIHNoYXBlUmVuZGVyaW5n
OiAnc2hhcGUtcmVuZGVyaW5nJyxcblx0ICBzbG9wZTogMCxcblx0ICBzcGFjaW5nOiAwLFxuXHQg
IHNwZWN1bGFyQ29uc3RhbnQ6ICdzcGVjdWxhckNvbnN0YW50Jyxcblx0ICBzcGVjdWxhckV4cG9u
ZW50OiAnc3BlY3VsYXJFeHBvbmVudCcsXG5cdCAgc3BlZWQ6IDAsXG5cdCAgc3ByZWFkTWV0aG9k
OiAnc3ByZWFkTWV0aG9kJyxcblx0ICBzdGFydE9mZnNldDogJ3N0YXJ0T2Zmc2V0Jyxcblx0ICBz
dGREZXZpYXRpb246ICdzdGREZXZpYXRpb24nLFxuXHQgIHN0ZW1oOiAwLFxuXHQgIHN0ZW12OiAw
LFxuXHQgIHN0aXRjaFRpbGVzOiAnc3RpdGNoVGlsZXMnLFxuXHQgIHN0b3BDb2xvcjogJ3N0b3At
Y29sb3InLFxuXHQgIHN0b3BPcGFjaXR5OiAnc3RvcC1vcGFjaXR5Jyxcblx0ICBzdHJpa2V0aHJv
dWdoUG9zaXRpb246ICdzdHJpa2V0aHJvdWdoLXBvc2l0aW9uJyxcblx0ICBzdHJpa2V0aHJvdWdo
VGhpY2tuZXNzOiAnc3RyaWtldGhyb3VnaC10aGlja25lc3MnLFxuXHQgIHN0cmluZzogMCxcblx0
ICBzdHJva2U6IDAsXG5cdCAgc3Ryb2tlRGFzaGFycmF5OiAnc3Ryb2tlLWRhc2hhcnJheScsXG5c
dCAgc3Ryb2tlRGFzaG9mZnNldDogJ3N0cm9rZS1kYXNob2Zmc2V0Jyxcblx0ICBzdHJva2VMaW5l
Y2FwOiAnc3Ryb2tlLWxpbmVjYXAnLFxuXHQgIHN0cm9rZUxpbmVqb2luOiAnc3Ryb2tlLWxpbmVq
b2luJyxcblx0ICBzdHJva2VNaXRlcmxpbWl0OiAnc3Ryb2tlLW1pdGVybGltaXQnLFxuXHQgIHN0
cm9rZU9wYWNpdHk6ICdzdHJva2Utb3BhY2l0eScsXG5cdCAgc3Ryb2tlV2lkdGg6ICdzdHJva2Ut
d2lkdGgnLFxuXHQgIHN1cmZhY2VTY2FsZTogJ3N1cmZhY2VTY2FsZScsXG5cdCAgc3lzdGVtTGFu
Z3VhZ2U6ICdzeXN0ZW1MYW5ndWFnZScsXG5cdCAgdGFibGVWYWx1ZXM6ICd0YWJsZVZhbHVlcycs
XG5cdCAgdGFyZ2V0WDogJ3RhcmdldFgnLFxuXHQgIHRhcmdldFk6ICd0YXJnZXRZJyxcblx0ICB0
ZXh0QW5jaG9yOiAndGV4dC1hbmNob3InLFxuXHQgIHRleHREZWNvcmF0aW9uOiAndGV4dC1kZWNv
cmF0aW9uJyxcblx0ICB0ZXh0UmVuZGVyaW5nOiAndGV4dC1yZW5kZXJpbmcnLFxuXHQgIHRleHRM
ZW5ndGg6ICd0ZXh0TGVuZ3RoJyxcblx0ICB0bzogMCxcblx0ICB0cmFuc2Zvcm06IDAsXG5cdCAg
dTE6IDAsXG5cdCAgdTI6IDAsXG5cdCAgdW5kZXJsaW5lUG9zaXRpb246ICd1bmRlcmxpbmUtcG9z
aXRpb24nLFxuXHQgIHVuZGVybGluZVRoaWNrbmVzczogJ3VuZGVybGluZS10aGlja25lc3MnLFxu
XHQgIHVuaWNvZGU6IDAsXG5cdCAgdW5pY29kZUJpZGk6ICd1bmljb2RlLWJpZGknLFxuXHQgIHVu
aWNvZGVSYW5nZTogJ3VuaWNvZGUtcmFuZ2UnLFxuXHQgIHVuaXRzUGVyRW06ICd1bml0cy1wZXIt
ZW0nLFxuXHQgIHZBbHBoYWJldGljOiAndi1hbHBoYWJldGljJyxcblx0ICB2SGFuZ2luZzogJ3Yt
aGFuZ2luZycsXG5cdCAgdklkZW9ncmFwaGljOiAndi1pZGVvZ3JhcGhpYycsXG5cdCAgdk1hdGhl
bWF0aWNhbDogJ3YtbWF0aGVtYXRpY2FsJyxcblx0ICB2YWx1ZXM6IDAsXG5cdCAgdmVjdG9yRWZm
ZWN0OiAndmVjdG9yLWVmZmVjdCcsXG5cdCAgdmVyc2lvbjogMCxcblx0ICB2ZXJ0QWR2WTogJ3Zl
cnQtYWR2LXknLFxuXHQgIHZlcnRPcmlnaW5YOiAndmVydC1vcmlnaW4teCcsXG5cdCAgdmVydE9y
aWdpblk6ICd2ZXJ0LW9yaWdpbi15Jyxcblx0ICB2aWV3Qm94OiAndmlld0JveCcsXG5cdCAgdmll
d1RhcmdldDogJ3ZpZXdUYXJnZXQnLFxuXHQgIHZpc2liaWxpdHk6IDAsXG5cdCAgd2lkdGhzOiAw
LFxuXHQgIHdvcmRTcGFjaW5nOiAnd29yZC1zcGFjaW5nJyxcblx0ICB3cml0aW5nTW9kZTogJ3dy
aXRpbmctbW9kZScsXG5cdCAgeDogMCxcblx0ICB4SGVpZ2h0OiAneC1oZWlnaHQnLFxuXHQgIHgx
OiAwLFxuXHQgIHgyOiAwLFxuXHQgIHhDaGFubmVsU2VsZWN0b3I6ICd4Q2hhbm5lbFNlbGVjdG9y
Jyxcblx0ICB4bGlua0FjdHVhdGU6ICd4bGluazphY3R1YXRlJyxcblx0ICB4bGlua0FyY3JvbGU6
ICd4bGluazphcmNyb2xlJyxcblx0ICB4bGlua0hyZWY6ICd4bGluazpocmVmJyxcblx0ICB4bGlu
a1JvbGU6ICd4bGluazpyb2xlJyxcblx0ICB4bGlua1Nob3c6ICd4bGluazpzaG93Jyxcblx0ICB4
bGlua1RpdGxlOiAneGxpbms6dGl0bGUnLFxuXHQgIHhsaW5rVHlwZTogJ3hsaW5rOnR5cGUnLFxu
XHQgIHhtbEJhc2U6ICd4bWw6YmFzZScsXG5cdCAgeG1sbnM6IDAsXG5cdCAgeG1sbnNYbGluazog
J3htbG5zOnhsaW5rJyxcblx0ICB4bWxMYW5nOiAneG1sOmxhbmcnLFxuXHQgIHhtbFNwYWNlOiAn
eG1sOnNwYWNlJyxcblx0ICB5OiAwLFxuXHQgIHkxOiAwLFxuXHQgIHkyOiAwLFxuXHQgIHlDaGFu
bmVsU2VsZWN0b3I6ICd5Q2hhbm5lbFNlbGVjdG9yJyxcblx0ICB6OiAwLFxuXHQgIHpvb21BbmRQ
YW46ICd6b29tQW5kUGFuJ1xuXHR9O1xuXHRcblx0dmFyIFNWR0RPTVByb3BlcnR5Q29uZmlnID0g
e1xuXHQgIFByb3BlcnRpZXM6IHt9LFxuXHQgIERPTUF0dHJpYnV0ZU5hbWVzcGFjZXM6IHtcblx0
ICAgIHhsaW5rQWN0dWF0ZTogTlMueGxpbmssXG5cdCAgICB4bGlua0FyY3JvbGU6IE5TLnhsaW5r
LFxuXHQgICAgeGxpbmtIcmVmOiBOUy54bGluayxcblx0ICAgIHhsaW5rUm9sZTogTlMueGxpbmss
XG5cdCAgICB4bGlua1Nob3c6IE5TLnhsaW5rLFxuXHQgICAgeGxpbmtUaXRsZTogTlMueGxpbmss
XG5cdCAgICB4bGlua1R5cGU6IE5TLnhsaW5rLFxuXHQgICAgeG1sQmFzZTogTlMueG1sLFxuXHQg
ICAgeG1sTGFuZzogTlMueG1sLFxuXHQgICAgeG1sU3BhY2U6IE5TLnhtbFxuXHQgIH0sXG5cdCAg
RE9NQXR0cmlidXRlTmFtZXM6IHt9XG5cdH07XG5cdFxuXHRPYmplY3Qua2V5cyhBVFRSUykuZm9y
RWFjaChmdW5jdGlvbiAoa2V5KSB7XG5cdCAgU1ZHRE9NUHJvcGVydHlDb25maWcuUHJvcGVydGll
c1trZXldID0gMDtcblx0ICBpZiAoQVRUUlNba2V5XSkge1xuXHQgICAgU1ZHRE9NUHJvcGVydHlD
b25maWcuRE9NQXR0cmlidXRlTmFtZXNba2V5XSA9IEFUVFJTW2tleV07XG5cdCAgfVxuXHR9KTtc
blx0XG5cdG1vZHVsZS5leHBvcnRzID0gU1ZHRE9NUHJvcGVydHlDb25maWc7XG5cbi8qKiovIH0s
XG4vKiAxNjUgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3Jl
cXVpcmVfXykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9v
aywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJj
ZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0
aGVcblx0ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJj
ZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJl
IGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxu
XHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdHZhciBFdmVudFByb3BhZ2F0b3JzID0g
X193ZWJwYWNrX3JlcXVpcmVfXygyMCk7XG5cdHZhciBFeGVjdXRpb25FbnZpcm9ubWVudCA9IF9f
d2VicGFja19yZXF1aXJlX18oNik7XG5cdHZhciBSZWFjdERPTUNvbXBvbmVudFRyZWUgPSBfX3dl
YnBhY2tfcmVxdWlyZV9fKDUpO1xuXHR2YXIgUmVhY3RJbnB1dFNlbGVjdGlvbiA9IF9fd2VicGFj
a19yZXF1aXJlX18oNjYpO1xuXHR2YXIgU3ludGhldGljRXZlbnQgPSBfX3dlYnBhY2tfcmVxdWly
ZV9fKDEwKTtcblx0XG5cdHZhciBnZXRBY3RpdmVFbGVtZW50ID0gX193ZWJwYWNrX3JlcXVpcmVf
Xyg1Myk7XG5cdHZhciBpc1RleHRJbnB1dEVsZW1lbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDc2
KTtcblx0dmFyIHNoYWxsb3dFcXVhbCA9IF9fd2VicGFja19yZXF1aXJlX18oMzIpO1xuXHRcblx0
dmFyIHNraXBTZWxlY3Rpb25DaGFuZ2VFdmVudCA9IEV4ZWN1dGlvbkVudmlyb25tZW50LmNhblVz
ZURPTSAmJiAnZG9jdW1lbnRNb2RlJyBpbiBkb2N1bWVudCAmJiBkb2N1bWVudC5kb2N1bWVudE1v
ZGUgPD0gMTE7XG5cdFxuXHR2YXIgZXZlbnRUeXBlcyA9IHtcblx0ICBzZWxlY3Q6IHtcblx0ICAg
IHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOiB7XG5cdCAgICAgIGJ1YmJsZWQ6ICdvblNlbGVjdCcs
XG5cdCAgICAgIGNhcHR1cmVkOiAnb25TZWxlY3RDYXB0dXJlJ1xuXHQgICAgfSxcblx0ICAgIGRl
cGVuZGVuY2llczogWyd0b3BCbHVyJywgJ3RvcENvbnRleHRNZW51JywgJ3RvcEZvY3VzJywgJ3Rv
cEtleURvd24nLCAndG9wS2V5VXAnLCAndG9wTW91c2VEb3duJywgJ3RvcE1vdXNlVXAnLCAndG9w
U2VsZWN0aW9uQ2hhbmdlJ11cblx0ICB9XG5cdH07XG5cdFxuXHR2YXIgYWN0aXZlRWxlbWVudCA9
IG51bGw7XG5cdHZhciBhY3RpdmVFbGVtZW50SW5zdCA9IG51bGw7XG5cdHZhciBsYXN0U2VsZWN0
aW9uID0gbnVsbDtcblx0dmFyIG1vdXNlRG93biA9IGZhbHNlO1xuXHRcblx0Ly8gVHJhY2sgd2hl
dGhlciBhIGxpc3RlbmVyIGV4aXN0cyBmb3IgdGhpcyBwbHVnaW4uIElmIG5vbmUgZXhpc3QsIHdl
IGRvXG5cdC8vIG5vdCBleHRyYWN0IGV2ZW50cy4gU2VlICMzNjM5LlxuXHR2YXIgaGFzTGlzdGVu
ZXIgPSBmYWxzZTtcblx0XG5cdC8qKlxuXHQgKiBHZXQgYW4gb2JqZWN0IHdoaWNoIGlzIGEgdW5p
cXVlIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBjdXJyZW50IHNlbGVjdGlvbi5cblx0ICpcblx0ICog
VGhlIHJldHVybiB2YWx1ZSB3aWxsIG5vdCBiZSBjb25zaXN0ZW50IGFjcm9zcyBub2RlcyBvciBi
cm93c2VycywgYnV0XG5cdCAqIHR3byBpZGVudGljYWwgc2VsZWN0aW9ucyBvbiB0aGUgc2FtZSBu
b2RlIHdpbGwgcmV0dXJuIGlkZW50aWNhbCBvYmplY3RzLlxuXHQgKlxuXHQgKiBAcGFyYW0ge0RP
TUVsZW1lbnR9IG5vZGVcblx0ICogQHJldHVybiB7b2JqZWN0fVxuXHQgKi9cblx0ZnVuY3Rpb24g
Z2V0U2VsZWN0aW9uKG5vZGUpIHtcblx0ICBpZiAoJ3NlbGVjdGlvblN0YXJ0JyBpbiBub2RlICYm
IFJlYWN0SW5wdXRTZWxlY3Rpb24uaGFzU2VsZWN0aW9uQ2FwYWJpbGl0aWVzKG5vZGUpKSB7XG5c
dCAgICByZXR1cm4ge1xuXHQgICAgICBzdGFydDogbm9kZS5zZWxlY3Rpb25TdGFydCxcblx0ICAg
ICAgZW5kOiBub2RlLnNlbGVjdGlvbkVuZFxuXHQgICAgfTtcblx0ICB9IGVsc2UgaWYgKHdpbmRv
dy5nZXRTZWxlY3Rpb24pIHtcblx0ICAgIHZhciBzZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCk7XG5cdCAgICByZXR1cm4ge1xuXHQgICAgICBhbmNob3JOb2RlOiBzZWxlY3Rpb24uYW5j
aG9yTm9kZSxcblx0ICAgICAgYW5jaG9yT2Zmc2V0OiBzZWxlY3Rpb24uYW5jaG9yT2Zmc2V0LFxu
XHQgICAgICBmb2N1c05vZGU6IHNlbGVjdGlvbi5mb2N1c05vZGUsXG5cdCAgICAgIGZvY3VzT2Zm
c2V0OiBzZWxlY3Rpb24uZm9jdXNPZmZzZXRcblx0ICAgIH07XG5cdCAgfSBlbHNlIGlmIChkb2N1
bWVudC5zZWxlY3Rpb24pIHtcblx0ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LnNlbGVjdGlvbi5j
cmVhdGVSYW5nZSgpO1xuXHQgICAgcmV0dXJuIHtcblx0ICAgICAgcGFyZW50RWxlbWVudDogcmFu
Z2UucGFyZW50RWxlbWVudCgpLFxuXHQgICAgICB0ZXh0OiByYW5nZS50ZXh0LFxuXHQgICAgICB0
b3A6IHJhbmdlLmJvdW5kaW5nVG9wLFxuXHQgICAgICBsZWZ0OiByYW5nZS5ib3VuZGluZ0xlZnRc
blx0ICAgIH07XG5cdCAgfVxuXHR9XG5cdFxuXHQvKipcblx0ICogUG9sbCBzZWxlY3Rpb24gdG8g
c2VlIHdoZXRoZXIgaXQncyBjaGFuZ2VkLlxuXHQgKlxuXHQgKiBAcGFyYW0ge29iamVjdH0gbmF0
aXZlRXZlbnRcblx0ICogQHJldHVybiB7P1N5bnRoZXRpY0V2ZW50fVxuXHQgKi9cblx0ZnVuY3Rp
b24gY29uc3RydWN0U2VsZWN0RXZlbnQobmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KSB7
XG5cdCAgLy8gRW5zdXJlIHdlIGhhdmUgdGhlIHJpZ2h0IGVsZW1lbnQsIGFuZCB0aGF0IHRoZSB1
c2VyIGlzIG5vdCBkcmFnZ2luZyBhXG5cdCAgLy8gc2VsZWN0aW9uICh0aGlzIG1hdGNoZXMgbmF0
aXZlIGBzZWxlY3RgIGV2ZW50IGJlaGF2aW9yKS4gSW4gSFRNTDUsIHNlbGVjdFxuXHQgIC8vIGZp
cmVzIG9ubHkgb24gaW5wdXQgYW5kIHRleHRhcmVhIHRodXMgaWYgdGhlcmUncyBubyBmb2N1c2Vk
IGVsZW1lbnQgd2Vcblx0ICAvLyB3b24ndCBkaXNwYXRjaC5cblx0ICBpZiAobW91c2VEb3duIHx8
IGFjdGl2ZUVsZW1lbnQgPT0gbnVsbCB8fCBhY3RpdmVFbGVtZW50ICE9PSBnZXRBY3RpdmVFbGVt
ZW50KCkpIHtcblx0ICAgIHJldHVybiBudWxsO1xuXHQgIH1cblx0XG5cdCAgLy8gT25seSBmaXJl
IHdoZW4gc2VsZWN0aW9uIGhhcyBhY3R1YWxseSBjaGFuZ2VkLlxuXHQgIHZhciBjdXJyZW50U2Vs
ZWN0aW9uID0gZ2V0U2VsZWN0aW9uKGFjdGl2ZUVsZW1lbnQpO1xuXHQgIGlmICghbGFzdFNlbGVj
dGlvbiB8fCAhc2hhbGxvd0VxdWFsKGxhc3RTZWxlY3Rpb24sIGN1cnJlbnRTZWxlY3Rpb24pKSB7
XG5cdCAgICBsYXN0U2VsZWN0aW9uID0gY3VycmVudFNlbGVjdGlvbjtcblx0XG5cdCAgICB2YXIg
c3ludGhldGljRXZlbnQgPSBTeW50aGV0aWNFdmVudC5nZXRQb29sZWQoZXZlbnRUeXBlcy5zZWxl
Y3QsIGFjdGl2ZUVsZW1lbnRJbnN0LCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpO1xu
XHRcblx0ICAgIHN5bnRoZXRpY0V2ZW50LnR5cGUgPSAnc2VsZWN0Jztcblx0ICAgIHN5bnRoZXRp
Y0V2ZW50LnRhcmdldCA9IGFjdGl2ZUVsZW1lbnQ7XG5cdFxuXHQgICAgRXZlbnRQcm9wYWdhdG9y
cy5hY2N1bXVsYXRlVHdvUGhhc2VEaXNwYXRjaGVzKHN5bnRoZXRpY0V2ZW50KTtcblx0XG5cdCAg
ICByZXR1cm4gc3ludGhldGljRXZlbnQ7XG5cdCAgfVxuXHRcblx0ICByZXR1cm4gbnVsbDtcblx0
fVxuXHRcblx0LyoqXG5cdCAqIFRoaXMgcGx1Z2luIGNyZWF0ZXMgYW4gYG9uU2VsZWN0YCBldmVu
dCB0aGF0IG5vcm1hbGl6ZXMgc2VsZWN0IGV2ZW50c1xuXHQgKiBhY3Jvc3MgZm9ybSBlbGVtZW50
cy5cblx0ICpcblx0ICogU3VwcG9ydGVkIGVsZW1lbnRzIGFyZTpcblx0ICogLSBpbnB1dCAoc2Vl
IGBpc1RleHRJbnB1dEVsZW1lbnRgKVxuXHQgKiAtIHRleHRhcmVhXG5cdCAqIC0gY29udGVudEVk
aXRhYmxlXG5cdCAqXG5cdCAqIFRoaXMgZGlmZmVycyBmcm9tIG5hdGl2ZSBicm93c2VyIGltcGxl
bWVudGF0aW9ucyBpbiB0aGUgZm9sbG93aW5nIHdheXM6XG5cdCAqIC0gRmlyZXMgb24gY29udGVu
dEVkaXRhYmxlIGZpZWxkcyBhcyB3ZWxsIGFzIGlucHV0cy5cblx0ICogLSBGaXJlcyBmb3IgY29s
bGFwc2VkIHNlbGVjdGlvbi5cblx0ICogLSBGaXJlcyBhZnRlciB1c2VyIGlucHV0LlxuXHQgKi9c
blx0dmFyIFNlbGVjdEV2ZW50UGx1Z2luID0ge1xuXHQgIGV2ZW50VHlwZXM6IGV2ZW50VHlwZXMs
XG5cdFxuXHQgIGV4dHJhY3RFdmVudHM6IGZ1bmN0aW9uICh0b3BMZXZlbFR5cGUsIHRhcmdldElu
c3QsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCkge1xuXHQgICAgaWYgKCFoYXNMaXN0
ZW5lcikge1xuXHQgICAgICByZXR1cm4gbnVsbDtcblx0ICAgIH1cblx0XG5cdCAgICB2YXIgdGFy
Z2V0Tm9kZSA9IHRhcmdldEluc3QgPyBSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0Tm9kZUZyb21J
bnN0YW5jZSh0YXJnZXRJbnN0KSA6IHdpbmRvdztcblx0XG5cdCAgICBzd2l0Y2ggKHRvcExldmVs
VHlwZSkge1xuXHQgICAgICAvLyBUcmFjayB0aGUgaW5wdXQgbm9kZSB0aGF0IGhhcyBmb2N1cy5c
blx0ICAgICAgY2FzZSAndG9wRm9jdXMnOlxuXHQgICAgICAgIGlmIChpc1RleHRJbnB1dEVsZW1l
bnQodGFyZ2V0Tm9kZSkgfHwgdGFyZ2V0Tm9kZS5jb250ZW50RWRpdGFibGUgPT09ICd0cnVlJykg
e1xuXHQgICAgICAgICAgYWN0aXZlRWxlbWVudCA9IHRhcmdldE5vZGU7XG5cdCAgICAgICAgICBh
Y3RpdmVFbGVtZW50SW5zdCA9IHRhcmdldEluc3Q7XG5cdCAgICAgICAgICBsYXN0U2VsZWN0aW9u
ID0gbnVsbDtcblx0ICAgICAgICB9XG5cdCAgICAgICAgYnJlYWs7XG5cdCAgICAgIGNhc2UgJ3Rv
cEJsdXInOlxuXHQgICAgICAgIGFjdGl2ZUVsZW1lbnQgPSBudWxsO1xuXHQgICAgICAgIGFjdGl2
ZUVsZW1lbnRJbnN0ID0gbnVsbDtcblx0ICAgICAgICBsYXN0U2VsZWN0aW9uID0gbnVsbDtcblx0
ICAgICAgICBicmVhaztcblx0ICAgICAgLy8gRG9uJ3QgZmlyZSB0aGUgZXZlbnQgd2hpbGUgdGhl
IHVzZXIgaXMgZHJhZ2dpbmcuIFRoaXMgbWF0Y2hlcyB0aGVcblx0ICAgICAgLy8gc2VtYW50aWNz
IG9mIHRoZSBuYXRpdmUgc2VsZWN0IGV2ZW50LlxuXHQgICAgICBjYXNlICd0b3BNb3VzZURvd24n
OlxuXHQgICAgICAgIG1vdXNlRG93biA9IHRydWU7XG5cdCAgICAgICAgYnJlYWs7XG5cdCAgICAg
IGNhc2UgJ3RvcENvbnRleHRNZW51Jzpcblx0ICAgICAgY2FzZSAndG9wTW91c2VVcCc6XG5cdCAg
ICAgICAgbW91c2VEb3duID0gZmFsc2U7XG5cdCAgICAgICAgcmV0dXJuIGNvbnN0cnVjdFNlbGVj
dEV2ZW50KG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCk7XG5cdCAgICAgIC8vIENocm9t
ZSBhbmQgSUUgZmlyZSBub24tc3RhbmRhcmQgZXZlbnQgd2hlbiBzZWxlY3Rpb24gaXMgY2hhbmdl
ZCAoYW5kXG5cdCAgICAgIC8vIHNvbWV0aW1lcyB3aGVuIGl0IGhhc24ndCkuIElFJ3MgZXZlbnQg
ZmlyZXMgb3V0IG9mIG9yZGVyIHdpdGggcmVzcGVjdFxuXHQgICAgICAvLyB0byBrZXkgYW5kIGlu
cHV0IGV2ZW50cyBvbiBkZWxldGlvbiwgc28gd2UgZGlzY2FyZCBpdC5cblx0ICAgICAgLy9cblx0
ICAgICAgLy8gRmlyZWZveCBkb2Vzbid0IHN1cHBvcnQgc2VsZWN0aW9uY2hhbmdlLCBzbyBjaGVj
ayBzZWxlY3Rpb24gc3RhdHVzXG5cdCAgICAgIC8vIGFmdGVyIGVhY2gga2V5IGVudHJ5LiBUaGUg
c2VsZWN0aW9uIGNoYW5nZXMgYWZ0ZXIga2V5ZG93biBhbmQgYmVmb3JlXG5cdCAgICAgIC8vIGtl
eXVwLCBidXQgd2UgY2hlY2sgb24ga2V5ZG93biBhcyB3ZWxsIGluIHRoZSBjYXNlIG9mIGhvbGRp
bmcgZG93biBhXG5cdCAgICAgIC8vIGtleSwgd2hlbiBtdWx0aXBsZSBrZXlkb3duIGV2ZW50cyBh
cmUgZmlyZWQgYnV0IG9ubHkgb25lIGtleXVwIGlzLlxuXHQgICAgICAvLyBUaGlzIGlzIGFsc28g
b3VyIGFwcHJvYWNoIGZvciBJRSBoYW5kbGluZywgZm9yIHRoZSByZWFzb24gYWJvdmUuXG5cdCAg
ICAgIGNhc2UgJ3RvcFNlbGVjdGlvbkNoYW5nZSc6XG5cdCAgICAgICAgaWYgKHNraXBTZWxlY3Rp
b25DaGFuZ2VFdmVudCkge1xuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgfVxuXHQgICAg
ICAvLyBmYWxscyB0aHJvdWdoXG5cdCAgICAgIGNhc2UgJ3RvcEtleURvd24nOlxuXHQgICAgICBj
YXNlICd0b3BLZXlVcCc6XG5cdCAgICAgICAgcmV0dXJuIGNvbnN0cnVjdFNlbGVjdEV2ZW50KG5h
dGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCk7XG5cdCAgICB9XG5cdFxuXHQgICAgcmV0dXJu
IG51bGw7XG5cdCAgfSxcblx0XG5cdCAgZGlkUHV0TGlzdGVuZXI6IGZ1bmN0aW9uIChpbnN0LCBy
ZWdpc3RyYXRpb25OYW1lLCBsaXN0ZW5lcikge1xuXHQgICAgaWYgKHJlZ2lzdHJhdGlvbk5hbWUg
PT09ICdvblNlbGVjdCcpIHtcblx0ICAgICAgaGFzTGlzdGVuZXIgPSB0cnVlO1xuXHQgICAgfVxu
XHQgIH1cblx0fTtcblx0XG5cdG1vZHVsZS5leHBvcnRzID0gU2VsZWN0RXZlbnRQbHVnaW47XG5c
bi8qKiovIH0sXG4vKiAxNjYgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193
ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50
LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBU
aGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBm
b3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0
aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdo
dHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5
LlxuXHQgKlxuXHQgKiBcblx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHR2YXIgX3By
b2RJbnZhcmlhbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMpO1xuXHRcblx0dmFyIEV2ZW50TGlz
dGVuZXIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDUxKTtcblx0dmFyIEV2ZW50UHJvcGFnYXRvcnMg
PSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIwKTtcblx0dmFyIFJlYWN0RE9NQ29tcG9uZW50VHJlZSA9
IF9fd2VicGFja19yZXF1aXJlX18oNSk7XG5cdHZhciBTeW50aGV0aWNBbmltYXRpb25FdmVudCA9
IF9fd2VicGFja19yZXF1aXJlX18oMTY3KTtcblx0dmFyIFN5bnRoZXRpY0NsaXBib2FyZEV2ZW50
ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNjgpO1xuXHR2YXIgU3ludGhldGljRXZlbnQgPSBfX3dl
YnBhY2tfcmVxdWlyZV9fKDEwKTtcblx0dmFyIFN5bnRoZXRpY0ZvY3VzRXZlbnQgPSBfX3dlYnBh
Y2tfcmVxdWlyZV9fKDE3MSk7XG5cdHZhciBTeW50aGV0aWNLZXlib2FyZEV2ZW50ID0gX193ZWJw
YWNrX3JlcXVpcmVfXygxNzMpO1xuXHR2YXIgU3ludGhldGljTW91c2VFdmVudCA9IF9fd2VicGFj
a19yZXF1aXJlX18oMjYpO1xuXHR2YXIgU3ludGhldGljRHJhZ0V2ZW50ID0gX193ZWJwYWNrX3Jl
cXVpcmVfXygxNzApO1xuXHR2YXIgU3ludGhldGljVG91Y2hFdmVudCA9IF9fd2VicGFja19yZXF1
aXJlX18oMTc0KTtcblx0dmFyIFN5bnRoZXRpY1RyYW5zaXRpb25FdmVudCA9IF9fd2VicGFja19y
ZXF1aXJlX18oMTc1KTtcblx0dmFyIFN5bnRoZXRpY1VJRXZlbnQgPSBfX3dlYnBhY2tfcmVxdWly
ZV9fKDIyKTtcblx0dmFyIFN5bnRoZXRpY1doZWVsRXZlbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9f
KDE3Nik7XG5cdFxuXHR2YXIgZW1wdHlGdW5jdGlvbiA9IF9fd2VicGFja19yZXF1aXJlX18oNyk7
XG5cdHZhciBnZXRFdmVudENoYXJDb2RlID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0NCk7XG5cdHZh
ciBpbnZhcmlhbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEpO1xuXHRcblx0LyoqXG5cdCAqIFR1
cm5zXG5cdCAqIFsnYWJvcnQnLCAuLi5dXG5cdCAqIGludG9cblx0ICogZXZlbnRUeXBlcyA9IHtc
blx0ICogICAnYWJvcnQnOiB7XG5cdCAqICAgICBwaGFzZWRSZWdpc3RyYXRpb25OYW1lczoge1xu
XHQgKiAgICAgICBidWJibGVkOiAnb25BYm9ydCcsXG5cdCAqICAgICAgIGNhcHR1cmVkOiAnb25B
Ym9ydENhcHR1cmUnLFxuXHQgKiAgICAgfSxcblx0ICogICAgIGRlcGVuZGVuY2llczogWyd0b3BB
Ym9ydCddLFxuXHQgKiAgIH0sXG5cdCAqICAgLi4uXG5cdCAqIH07XG5cdCAqIHRvcExldmVsRXZl
bnRzVG9EaXNwYXRjaENvbmZpZyA9IHtcblx0ICogICAndG9wQWJvcnQnOiB7IHNhbWVDb25maWcg
fVxuXHQgKiB9O1xuXHQgKi9cblx0dmFyIGV2ZW50VHlwZXMgPSB7fTtcblx0dmFyIHRvcExldmVs
RXZlbnRzVG9EaXNwYXRjaENvbmZpZyA9IHt9O1xuXHRbJ2Fib3J0JywgJ2FuaW1hdGlvbkVuZCcs
ICdhbmltYXRpb25JdGVyYXRpb24nLCAnYW5pbWF0aW9uU3RhcnQnLCAnYmx1cicsICdjYW5QbGF5
JywgJ2NhblBsYXlUaHJvdWdoJywgJ2NsaWNrJywgJ2NvbnRleHRNZW51JywgJ2NvcHknLCAnY3V0
JywgJ2RvdWJsZUNsaWNrJywgJ2RyYWcnLCAnZHJhZ0VuZCcsICdkcmFnRW50ZXInLCAnZHJhZ0V4
aXQnLCAnZHJhZ0xlYXZlJywgJ2RyYWdPdmVyJywgJ2RyYWdTdGFydCcsICdkcm9wJywgJ2R1cmF0
aW9uQ2hhbmdlJywgJ2VtcHRpZWQnLCAnZW5jcnlwdGVkJywgJ2VuZGVkJywgJ2Vycm9yJywgJ2Zv
Y3VzJywgJ2lucHV0JywgJ2ludmFsaWQnLCAna2V5RG93bicsICdrZXlQcmVzcycsICdrZXlVcCcs
ICdsb2FkJywgJ2xvYWRlZERhdGEnLCAnbG9hZGVkTWV0YWRhdGEnLCAnbG9hZFN0YXJ0JywgJ21v
dXNlRG93bicsICdtb3VzZU1vdmUnLCAnbW91c2VPdXQnLCAnbW91c2VPdmVyJywgJ21vdXNlVXAn
LCAncGFzdGUnLCAncGF1c2UnLCAncGxheScsICdwbGF5aW5nJywgJ3Byb2dyZXNzJywgJ3JhdGVD
aGFuZ2UnLCAncmVzZXQnLCAnc2Nyb2xsJywgJ3NlZWtlZCcsICdzZWVraW5nJywgJ3N0YWxsZWQn
LCAnc3VibWl0JywgJ3N1c3BlbmQnLCAndGltZVVwZGF0ZScsICd0b3VjaENhbmNlbCcsICd0b3Vj
aEVuZCcsICd0b3VjaE1vdmUnLCAndG91Y2hTdGFydCcsICd0cmFuc2l0aW9uRW5kJywgJ3ZvbHVt
ZUNoYW5nZScsICd3YWl0aW5nJywgJ3doZWVsJ10uZm9yRWFjaChmdW5jdGlvbiAoZXZlbnQpIHtc
blx0ICB2YXIgY2FwaXRhbGl6ZWRFdmVudCA9IGV2ZW50WzBdLnRvVXBwZXJDYXNlKCkgKyBldmVu
dC5zbGljZSgxKTtcblx0ICB2YXIgb25FdmVudCA9ICdvbicgKyBjYXBpdGFsaXplZEV2ZW50O1xu
XHQgIHZhciB0b3BFdmVudCA9ICd0b3AnICsgY2FwaXRhbGl6ZWRFdmVudDtcblx0XG5cdCAgdmFy
IHR5cGUgPSB7XG5cdCAgICBwaGFzZWRSZWdpc3RyYXRpb25OYW1lczoge1xuXHQgICAgICBidWJi
bGVkOiBvbkV2ZW50LFxuXHQgICAgICBjYXB0dXJlZDogb25FdmVudCArICdDYXB0dXJlJ1xuXHQg
ICAgfSxcblx0ICAgIGRlcGVuZGVuY2llczogW3RvcEV2ZW50XVxuXHQgIH07XG5cdCAgZXZlbnRU
eXBlc1tldmVudF0gPSB0eXBlO1xuXHQgIHRvcExldmVsRXZlbnRzVG9EaXNwYXRjaENvbmZpZ1t0
b3BFdmVudF0gPSB0eXBlO1xuXHR9KTtcblx0XG5cdHZhciBvbkNsaWNrTGlzdGVuZXJzID0ge307
XG5cdFxuXHRmdW5jdGlvbiBnZXREaWN0aW9uYXJ5S2V5KGluc3QpIHtcblx0ICAvLyBQcmV2ZW50
cyBWOCBwZXJmb3JtYW5jZSBpc3N1ZTpcblx0ICAvLyBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJv
b2svcmVhY3QvcHVsbC83MjMyXG5cdCAgcmV0dXJuICcuJyArIGluc3QuX3Jvb3ROb2RlSUQ7XG5c
dH1cblx0XG5cdGZ1bmN0aW9uIGlzSW50ZXJhY3RpdmUodGFnKSB7XG5cdCAgcmV0dXJuIHRhZyA9
PT0gJ2J1dHRvbicgfHwgdGFnID09PSAnaW5wdXQnIHx8IHRhZyA9PT0gJ3NlbGVjdCcgfHwgdGFn
ID09PSAndGV4dGFyZWEnO1xuXHR9XG5cdFxuXHR2YXIgU2ltcGxlRXZlbnRQbHVnaW4gPSB7XG5c
dCAgZXZlbnRUeXBlczogZXZlbnRUeXBlcyxcblx0XG5cdCAgZXh0cmFjdEV2ZW50czogZnVuY3Rp
b24gKHRvcExldmVsVHlwZSwgdGFyZ2V0SW5zdCwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFy
Z2V0KSB7XG5cdCAgICB2YXIgZGlzcGF0Y2hDb25maWcgPSB0b3BMZXZlbEV2ZW50c1RvRGlzcGF0
Y2hDb25maWdbdG9wTGV2ZWxUeXBlXTtcblx0ICAgIGlmICghZGlzcGF0Y2hDb25maWcpIHtcblx0
ICAgICAgcmV0dXJuIG51bGw7XG5cdCAgICB9XG5cdCAgICB2YXIgRXZlbnRDb25zdHJ1Y3Rvcjtc
blx0ICAgIHN3aXRjaCAodG9wTGV2ZWxUeXBlKSB7XG5cdCAgICAgIGNhc2UgJ3RvcEFib3J0Jzpc
blx0ICAgICAgY2FzZSAndG9wQ2FuUGxheSc6XG5cdCAgICAgIGNhc2UgJ3RvcENhblBsYXlUaHJv
dWdoJzpcblx0ICAgICAgY2FzZSAndG9wRHVyYXRpb25DaGFuZ2UnOlxuXHQgICAgICBjYXNlICd0
b3BFbXB0aWVkJzpcblx0ICAgICAgY2FzZSAndG9wRW5jcnlwdGVkJzpcblx0ICAgICAgY2FzZSAn
dG9wRW5kZWQnOlxuXHQgICAgICBjYXNlICd0b3BFcnJvcic6XG5cdCAgICAgIGNhc2UgJ3RvcElu
cHV0Jzpcblx0ICAgICAgY2FzZSAndG9wSW52YWxpZCc6XG5cdCAgICAgIGNhc2UgJ3RvcExvYWQn
OlxuXHQgICAgICBjYXNlICd0b3BMb2FkZWREYXRhJzpcblx0ICAgICAgY2FzZSAndG9wTG9hZGVk
TWV0YWRhdGEnOlxuXHQgICAgICBjYXNlICd0b3BMb2FkU3RhcnQnOlxuXHQgICAgICBjYXNlICd0
b3BQYXVzZSc6XG5cdCAgICAgIGNhc2UgJ3RvcFBsYXknOlxuXHQgICAgICBjYXNlICd0b3BQbGF5
aW5nJzpcblx0ICAgICAgY2FzZSAndG9wUHJvZ3Jlc3MnOlxuXHQgICAgICBjYXNlICd0b3BSYXRl
Q2hhbmdlJzpcblx0ICAgICAgY2FzZSAndG9wUmVzZXQnOlxuXHQgICAgICBjYXNlICd0b3BTZWVr
ZWQnOlxuXHQgICAgICBjYXNlICd0b3BTZWVraW5nJzpcblx0ICAgICAgY2FzZSAndG9wU3RhbGxl
ZCc6XG5cdCAgICAgIGNhc2UgJ3RvcFN1Ym1pdCc6XG5cdCAgICAgIGNhc2UgJ3RvcFN1c3BlbmQn
OlxuXHQgICAgICBjYXNlICd0b3BUaW1lVXBkYXRlJzpcblx0ICAgICAgY2FzZSAndG9wVm9sdW1l
Q2hhbmdlJzpcblx0ICAgICAgY2FzZSAndG9wV2FpdGluZyc6XG5cdCAgICAgICAgLy8gSFRNTCBF
dmVudHNcblx0ICAgICAgICAvLyBAc2VlIGh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw1L2luZGV4
Lmh0bWwjZXZlbnRzLTBcblx0ICAgICAgICBFdmVudENvbnN0cnVjdG9yID0gU3ludGhldGljRXZl
bnQ7XG5cdCAgICAgICAgYnJlYWs7XG5cdCAgICAgIGNhc2UgJ3RvcEtleVByZXNzJzpcblx0ICAg
ICAgICAvLyBGaXJlZm94IGNyZWF0ZXMgYSBrZXlwcmVzcyBldmVudCBmb3IgZnVuY3Rpb24ga2V5
cyB0b28uIFRoaXMgcmVtb3Zlc1xuXHQgICAgICAgIC8vIHRoZSB1bndhbnRlZCBrZXlwcmVzcyBl
dmVudHMuIEVudGVyIGlzIGhvd2V2ZXIgYm90aCBwcmludGFibGUgYW5kXG5cdCAgICAgICAgLy8g
bm9uLXByaW50YWJsZS4gT25lIHdvdWxkIGV4cGVjdCBUYWIgdG8gYmUgYXMgd2VsbCAoYnV0IGl0
IGlzbid0KS5cblx0ICAgICAgICBpZiAoZ2V0RXZlbnRDaGFyQ29kZShuYXRpdmVFdmVudCkgPT09
IDApIHtcblx0ICAgICAgICAgIHJldHVybiBudWxsO1xuXHQgICAgICAgIH1cblx0ICAgICAgLyog
ZmFsbHMgdGhyb3VnaCAqL1xuXHQgICAgICBjYXNlICd0b3BLZXlEb3duJzpcblx0ICAgICAgY2Fz
ZSAndG9wS2V5VXAnOlxuXHQgICAgICAgIEV2ZW50Q29uc3RydWN0b3IgPSBTeW50aGV0aWNLZXli
b2FyZEV2ZW50O1xuXHQgICAgICAgIGJyZWFrO1xuXHQgICAgICBjYXNlICd0b3BCbHVyJzpcblx0
ICAgICAgY2FzZSAndG9wRm9jdXMnOlxuXHQgICAgICAgIEV2ZW50Q29uc3RydWN0b3IgPSBTeW50
aGV0aWNGb2N1c0V2ZW50O1xuXHQgICAgICAgIGJyZWFrO1xuXHQgICAgICBjYXNlICd0b3BDbGlj
ayc6XG5cdCAgICAgICAgLy8gRmlyZWZveCBjcmVhdGVzIGEgY2xpY2sgZXZlbnQgb24gcmlnaHQg
bW91c2UgY2xpY2tzLiBUaGlzIHJlbW92ZXMgdGhlXG5cdCAgICAgICAgLy8gdW53YW50ZWQgY2xp
Y2sgZXZlbnRzLlxuXHQgICAgICAgIGlmIChuYXRpdmVFdmVudC5idXR0b24gPT09IDIpIHtcblx0
ICAgICAgICAgIHJldHVybiBudWxsO1xuXHQgICAgICAgIH1cblx0ICAgICAgLyogZmFsbHMgdGhy
b3VnaCAqL1xuXHQgICAgICBjYXNlICd0b3BEb3VibGVDbGljayc6XG5cdCAgICAgIGNhc2UgJ3Rv
cE1vdXNlRG93bic6XG5cdCAgICAgIGNhc2UgJ3RvcE1vdXNlTW92ZSc6XG5cdCAgICAgIGNhc2Ug
J3RvcE1vdXNlVXAnOlxuXHQgICAgICAvLyBUT0RPOiBEaXNhYmxlZCBlbGVtZW50cyBzaG91bGQg
bm90IHJlc3BvbmQgdG8gbW91c2UgZXZlbnRzXG5cdCAgICAgIC8qIGZhbGxzIHRocm91Z2ggKi9c
blx0ICAgICAgY2FzZSAndG9wTW91c2VPdXQnOlxuXHQgICAgICBjYXNlICd0b3BNb3VzZU92ZXIn
OlxuXHQgICAgICBjYXNlICd0b3BDb250ZXh0TWVudSc6XG5cdCAgICAgICAgRXZlbnRDb25zdHJ1
Y3RvciA9IFN5bnRoZXRpY01vdXNlRXZlbnQ7XG5cdCAgICAgICAgYnJlYWs7XG5cdCAgICAgIGNh
c2UgJ3RvcERyYWcnOlxuXHQgICAgICBjYXNlICd0b3BEcmFnRW5kJzpcblx0ICAgICAgY2FzZSAn
dG9wRHJhZ0VudGVyJzpcblx0ICAgICAgY2FzZSAndG9wRHJhZ0V4aXQnOlxuXHQgICAgICBjYXNl
ICd0b3BEcmFnTGVhdmUnOlxuXHQgICAgICBjYXNlICd0b3BEcmFnT3Zlcic6XG5cdCAgICAgIGNh
c2UgJ3RvcERyYWdTdGFydCc6XG5cdCAgICAgIGNhc2UgJ3RvcERyb3AnOlxuXHQgICAgICAgIEV2
ZW50Q29uc3RydWN0b3IgPSBTeW50aGV0aWNEcmFnRXZlbnQ7XG5cdCAgICAgICAgYnJlYWs7XG5c
dCAgICAgIGNhc2UgJ3RvcFRvdWNoQ2FuY2VsJzpcblx0ICAgICAgY2FzZSAndG9wVG91Y2hFbmQn
OlxuXHQgICAgICBjYXNlICd0b3BUb3VjaE1vdmUnOlxuXHQgICAgICBjYXNlICd0b3BUb3VjaFN0
YXJ0Jzpcblx0ICAgICAgICBFdmVudENvbnN0cnVjdG9yID0gU3ludGhldGljVG91Y2hFdmVudDtc
blx0ICAgICAgICBicmVhaztcblx0ICAgICAgY2FzZSAndG9wQW5pbWF0aW9uRW5kJzpcblx0ICAg
ICAgY2FzZSAndG9wQW5pbWF0aW9uSXRlcmF0aW9uJzpcblx0ICAgICAgY2FzZSAndG9wQW5pbWF0
aW9uU3RhcnQnOlxuXHQgICAgICAgIEV2ZW50Q29uc3RydWN0b3IgPSBTeW50aGV0aWNBbmltYXRp
b25FdmVudDtcblx0ICAgICAgICBicmVhaztcblx0ICAgICAgY2FzZSAndG9wVHJhbnNpdGlvbkVu
ZCc6XG5cdCAgICAgICAgRXZlbnRDb25zdHJ1Y3RvciA9IFN5bnRoZXRpY1RyYW5zaXRpb25FdmVu
dDtcblx0ICAgICAgICBicmVhaztcblx0ICAgICAgY2FzZSAndG9wU2Nyb2xsJzpcblx0ICAgICAg
ICBFdmVudENvbnN0cnVjdG9yID0gU3ludGhldGljVUlFdmVudDtcblx0ICAgICAgICBicmVhaztc
blx0ICAgICAgY2FzZSAndG9wV2hlZWwnOlxuXHQgICAgICAgIEV2ZW50Q29uc3RydWN0b3IgPSBT
eW50aGV0aWNXaGVlbEV2ZW50O1xuXHQgICAgICAgIGJyZWFrO1xuXHQgICAgICBjYXNlICd0b3BD
b3B5Jzpcblx0ICAgICAgY2FzZSAndG9wQ3V0Jzpcblx0ICAgICAgY2FzZSAndG9wUGFzdGUnOlxu
XHQgICAgICAgIEV2ZW50Q29uc3RydWN0b3IgPSBTeW50aGV0aWNDbGlwYm9hcmRFdmVudDtcblx0
ICAgICAgICBicmVhaztcblx0ICAgIH1cblx0ICAgICFFdmVudENvbnN0cnVjdG9yID8gIGZhbHNl
ID8gaW52YXJpYW50KGZhbHNlLCAnU2ltcGxlRXZlbnRQbHVnaW46IFVuaGFuZGxlZCBldmVudCB0
eXBlLCBgJXNgLicsIHRvcExldmVsVHlwZSkgOiBfcHJvZEludmFyaWFudCgnODYnLCB0b3BMZXZl
bFR5cGUpIDogdm9pZCAwO1xuXHQgICAgdmFyIGV2ZW50ID0gRXZlbnRDb25zdHJ1Y3Rvci5nZXRQ
b29sZWQoZGlzcGF0Y2hDb25maWcsIHRhcmdldEluc3QsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVu
dFRhcmdldCk7XG5cdCAgICBFdmVudFByb3BhZ2F0b3JzLmFjY3VtdWxhdGVUd29QaGFzZURpc3Bh
dGNoZXMoZXZlbnQpO1xuXHQgICAgcmV0dXJuIGV2ZW50O1xuXHQgIH0sXG5cdFxuXHQgIGRpZFB1
dExpc3RlbmVyOiBmdW5jdGlvbiAoaW5zdCwgcmVnaXN0cmF0aW9uTmFtZSwgbGlzdGVuZXIpIHtc
blx0ICAgIC8vIE1vYmlsZSBTYWZhcmkgZG9lcyBub3QgZmlyZSBwcm9wZXJseSBidWJibGUgY2xp
Y2sgZXZlbnRzIG9uXG5cdCAgICAvLyBub24taW50ZXJhY3RpdmUgZWxlbWVudHMsIHdoaWNoIG1l
YW5zIGRlbGVnYXRlZCBjbGljayBsaXN0ZW5lcnMgZG8gbm90XG5cdCAgICAvLyBmaXJlLiBUaGUg
d29ya2Fyb3VuZCBmb3IgdGhpcyBidWcgaW52b2x2ZXMgYXR0YWNoaW5nIGFuIGVtcHR5IGNsaWNr
XG5cdCAgICAvLyBsaXN0ZW5lciBvbiB0aGUgdGFyZ2V0IG5vZGUuXG5cdCAgICAvLyBodHRwOi8v
d3d3LnF1aXJrc21vZGUub3JnL2Jsb2cvYXJjaGl2ZXMvMjAxMC8wOS9jbGlja19ldmVudF9kZWwu
aHRtbFxuXHQgICAgaWYgKHJlZ2lzdHJhdGlvbk5hbWUgPT09ICdvbkNsaWNrJyAmJiAhaXNJbnRl
cmFjdGl2ZShpbnN0Ll90YWcpKSB7XG5cdCAgICAgIHZhciBrZXkgPSBnZXREaWN0aW9uYXJ5S2V5
KGluc3QpO1xuXHQgICAgICB2YXIgbm9kZSA9IFJlYWN0RE9NQ29tcG9uZW50VHJlZS5nZXROb2Rl
RnJvbUluc3RhbmNlKGluc3QpO1xuXHQgICAgICBpZiAoIW9uQ2xpY2tMaXN0ZW5lcnNba2V5XSkg
e1xuXHQgICAgICAgIG9uQ2xpY2tMaXN0ZW5lcnNba2V5XSA9IEV2ZW50TGlzdGVuZXIubGlzdGVu
KG5vZGUsICdjbGljaycsIGVtcHR5RnVuY3Rpb24pO1xuXHQgICAgICB9XG5cdCAgICB9XG5cdCAg
fSxcblx0XG5cdCAgd2lsbERlbGV0ZUxpc3RlbmVyOiBmdW5jdGlvbiAoaW5zdCwgcmVnaXN0cmF0
aW9uTmFtZSkge1xuXHQgICAgaWYgKHJlZ2lzdHJhdGlvbk5hbWUgPT09ICdvbkNsaWNrJyAmJiAh
aXNJbnRlcmFjdGl2ZShpbnN0Ll90YWcpKSB7XG5cdCAgICAgIHZhciBrZXkgPSBnZXREaWN0aW9u
YXJ5S2V5KGluc3QpO1xuXHQgICAgICBvbkNsaWNrTGlzdGVuZXJzW2tleV0ucmVtb3ZlKCk7XG5c
dCAgICAgIGRlbGV0ZSBvbkNsaWNrTGlzdGVuZXJzW2tleV07XG5cdCAgICB9XG5cdCAgfVxuXHR9
O1xuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBTaW1wbGVFdmVudFBsdWdpbjtcblxuLyoqKi8gfSxc
bi8qIDE2NyAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVx
dWlyZV9fKSB7XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29r
LCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNl
IGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRo
ZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNl
IHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUg
Zm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5c
dCAqL1xuXHRcblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0dmFyIFN5bnRoZXRpY0V2ZW50ID0gX193
ZWJwYWNrX3JlcXVpcmVfXygxMCk7XG5cdFxuXHQvKipcblx0ICogQGludGVyZmFjZSBFdmVudFxu
XHQgKiBAc2VlIGh0dHA6Ly93d3cudzMub3JnL1RSL2NzczMtYW5pbWF0aW9ucy8jQW5pbWF0aW9u
RXZlbnQtaW50ZXJmYWNlXG5cdCAqIEBzZWUgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcv
ZW4tVVMvZG9jcy9XZWIvQVBJL0FuaW1hdGlvbkV2ZW50XG5cdCAqL1xuXHR2YXIgQW5pbWF0aW9u
RXZlbnRJbnRlcmZhY2UgPSB7XG5cdCAgYW5pbWF0aW9uTmFtZTogbnVsbCxcblx0ICBlbGFwc2Vk
VGltZTogbnVsbCxcblx0ICBwc2V1ZG9FbGVtZW50OiBudWxsXG5cdH07XG5cdFxuXHQvKipcblx0
ICogQHBhcmFtIHtvYmplY3R9IGRpc3BhdGNoQ29uZmlnIENvbmZpZ3VyYXRpb24gdXNlZCB0byBk
aXNwYXRjaCB0aGlzIGV2ZW50LlxuXHQgKiBAcGFyYW0ge3N0cmluZ30gZGlzcGF0Y2hNYXJrZXIg
TWFya2VyIGlkZW50aWZ5aW5nIHRoZSBldmVudCB0YXJnZXQuXG5cdCAqIEBwYXJhbSB7b2JqZWN0
fSBuYXRpdmVFdmVudCBOYXRpdmUgYnJvd3NlciBldmVudC5cblx0ICogQGV4dGVuZHMge1N5bnRo
ZXRpY0V2ZW50fVxuXHQgKi9cblx0ZnVuY3Rpb24gU3ludGhldGljQW5pbWF0aW9uRXZlbnQoZGlz
cGF0Y2hDb25maWcsIGRpc3BhdGNoTWFya2VyLCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJn
ZXQpIHtcblx0ICByZXR1cm4gU3ludGhldGljRXZlbnQuY2FsbCh0aGlzLCBkaXNwYXRjaENvbmZp
ZywgZGlzcGF0Y2hNYXJrZXIsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCk7XG5cdH1c
blx0XG5cdFN5bnRoZXRpY0V2ZW50LmF1Z21lbnRDbGFzcyhTeW50aGV0aWNBbmltYXRpb25FdmVu
dCwgQW5pbWF0aW9uRXZlbnRJbnRlcmZhY2UpO1xuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBTeW50
aGV0aWNBbmltYXRpb25FdmVudDtcblxuLyoqKi8gfSxcbi8qIDE2OCAqL1xuLyoqKi8gZnVuY3Rp
b24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0LyoqXG5cdCAq
IENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMg
cmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIg
dGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4g
dGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3Jh
bnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmls
ZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqL1xuXHRcblx0J3VzZSBzdHJpY3Qn
O1xuXHRcblx0dmFyIFN5bnRoZXRpY0V2ZW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMCk7XG5c
dFxuXHQvKipcblx0ICogQGludGVyZmFjZSBFdmVudFxuXHQgKiBAc2VlIGh0dHA6Ly93d3cudzMu
b3JnL1RSL2NsaXBib2FyZC1hcGlzL1xuXHQgKi9cblx0dmFyIENsaXBib2FyZEV2ZW50SW50ZXJm
YWNlID0ge1xuXHQgIGNsaXBib2FyZERhdGE6IGZ1bmN0aW9uIChldmVudCkge1xuXHQgICAgcmV0
dXJuICdjbGlwYm9hcmREYXRhJyBpbiBldmVudCA/IGV2ZW50LmNsaXBib2FyZERhdGEgOiB3aW5k
b3cuY2xpcGJvYXJkRGF0YTtcblx0ICB9XG5cdH07XG5cdFxuXHQvKipcblx0ICogQHBhcmFtIHtv
YmplY3R9IGRpc3BhdGNoQ29uZmlnIENvbmZpZ3VyYXRpb24gdXNlZCB0byBkaXNwYXRjaCB0aGlz
IGV2ZW50LlxuXHQgKiBAcGFyYW0ge3N0cmluZ30gZGlzcGF0Y2hNYXJrZXIgTWFya2VyIGlkZW50
aWZ5aW5nIHRoZSBldmVudCB0YXJnZXQuXG5cdCAqIEBwYXJhbSB7b2JqZWN0fSBuYXRpdmVFdmVu
dCBOYXRpdmUgYnJvd3NlciBldmVudC5cblx0ICogQGV4dGVuZHMge1N5bnRoZXRpY1VJRXZlbnR9
XG5cdCAqL1xuXHRmdW5jdGlvbiBTeW50aGV0aWNDbGlwYm9hcmRFdmVudChkaXNwYXRjaENvbmZp
ZywgZGlzcGF0Y2hNYXJrZXIsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCkge1xuXHQg
IHJldHVybiBTeW50aGV0aWNFdmVudC5jYWxsKHRoaXMsIGRpc3BhdGNoQ29uZmlnLCBkaXNwYXRj
aE1hcmtlciwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KTtcblx0fVxuXHRcblx0U3lu
dGhldGljRXZlbnQuYXVnbWVudENsYXNzKFN5bnRoZXRpY0NsaXBib2FyZEV2ZW50LCBDbGlwYm9h
cmRFdmVudEludGVyZmFjZSk7XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IFN5bnRoZXRpY0NsaXBi
b2FyZEV2ZW50O1xuXG4vKioqLyB9LFxuLyogMTY5ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUs
IGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvKipcblx0ICogQ29weXJpZ2h0
IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5c
blx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0
eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBk
aXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBv
ZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBz
YW1lIGRpcmVjdG9yeS5cblx0ICpcblx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHR2
YXIgU3ludGhldGljRXZlbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEwKTtcblx0XG5cdC8qKlxu
XHQgKiBAaW50ZXJmYWNlIEV2ZW50XG5cdCAqIEBzZWUgaHR0cDovL3d3dy53My5vcmcvVFIvRE9N
LUxldmVsLTMtRXZlbnRzLyNldmVudHMtY29tcG9zaXRpb25ldmVudHNcblx0ICovXG5cdHZhciBD
b21wb3NpdGlvbkV2ZW50SW50ZXJmYWNlID0ge1xuXHQgIGRhdGE6IG51bGxcblx0fTtcblx0XG5c
dC8qKlxuXHQgKiBAcGFyYW0ge29iamVjdH0gZGlzcGF0Y2hDb25maWcgQ29uZmlndXJhdGlvbiB1
c2VkIHRvIGRpc3BhdGNoIHRoaXMgZXZlbnQuXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBkaXNwYXRj
aE1hcmtlciBNYXJrZXIgaWRlbnRpZnlpbmcgdGhlIGV2ZW50IHRhcmdldC5cblx0ICogQHBhcmFt
IHtvYmplY3R9IG5hdGl2ZUV2ZW50IE5hdGl2ZSBicm93c2VyIGV2ZW50LlxuXHQgKiBAZXh0ZW5k
cyB7U3ludGhldGljVUlFdmVudH1cblx0ICovXG5cdGZ1bmN0aW9uIFN5bnRoZXRpY0NvbXBvc2l0
aW9uRXZlbnQoZGlzcGF0Y2hDb25maWcsIGRpc3BhdGNoTWFya2VyLCBuYXRpdmVFdmVudCwgbmF0
aXZlRXZlbnRUYXJnZXQpIHtcblx0ICByZXR1cm4gU3ludGhldGljRXZlbnQuY2FsbCh0aGlzLCBk
aXNwYXRjaENvbmZpZywgZGlzcGF0Y2hNYXJrZXIsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRh
cmdldCk7XG5cdH1cblx0XG5cdFN5bnRoZXRpY0V2ZW50LmF1Z21lbnRDbGFzcyhTeW50aGV0aWND
b21wb3NpdGlvbkV2ZW50LCBDb21wb3NpdGlvbkV2ZW50SW50ZXJmYWNlKTtcblx0XG5cdG1vZHVs
ZS5leHBvcnRzID0gU3ludGhldGljQ29tcG9zaXRpb25FdmVudDtcblxuLyoqKi8gfSxcbi8qIDE3
MCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9f
KSB7XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMu
XG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUg
aXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQg
KiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUu
IEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQg
aW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqL1xu
XHRcblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0dmFyIFN5bnRoZXRpY01vdXNlRXZlbnQgPSBfX3dl
YnBhY2tfcmVxdWlyZV9fKDI2KTtcblx0XG5cdC8qKlxuXHQgKiBAaW50ZXJmYWNlIERyYWdFdmVu
dFxuXHQgKiBAc2VlIGh0dHA6Ly93d3cudzMub3JnL1RSL0RPTS1MZXZlbC0zLUV2ZW50cy9cblx0
ICovXG5cdHZhciBEcmFnRXZlbnRJbnRlcmZhY2UgPSB7XG5cdCAgZGF0YVRyYW5zZmVyOiBudWxs
XG5cdH07XG5cdFxuXHQvKipcblx0ICogQHBhcmFtIHtvYmplY3R9IGRpc3BhdGNoQ29uZmlnIENv
bmZpZ3VyYXRpb24gdXNlZCB0byBkaXNwYXRjaCB0aGlzIGV2ZW50LlxuXHQgKiBAcGFyYW0ge3N0
cmluZ30gZGlzcGF0Y2hNYXJrZXIgTWFya2VyIGlkZW50aWZ5aW5nIHRoZSBldmVudCB0YXJnZXQu
XG5cdCAqIEBwYXJhbSB7b2JqZWN0fSBuYXRpdmVFdmVudCBOYXRpdmUgYnJvd3NlciBldmVudC5c
blx0ICogQGV4dGVuZHMge1N5bnRoZXRpY1VJRXZlbnR9XG5cdCAqL1xuXHRmdW5jdGlvbiBTeW50
aGV0aWNEcmFnRXZlbnQoZGlzcGF0Y2hDb25maWcsIGRpc3BhdGNoTWFya2VyLCBuYXRpdmVFdmVu
dCwgbmF0aXZlRXZlbnRUYXJnZXQpIHtcblx0ICByZXR1cm4gU3ludGhldGljTW91c2VFdmVudC5j
YWxsKHRoaXMsIGRpc3BhdGNoQ29uZmlnLCBkaXNwYXRjaE1hcmtlciwgbmF0aXZlRXZlbnQsIG5h
dGl2ZUV2ZW50VGFyZ2V0KTtcblx0fVxuXHRcblx0U3ludGhldGljTW91c2VFdmVudC5hdWdtZW50
Q2xhc3MoU3ludGhldGljRHJhZ0V2ZW50LCBEcmFnRXZlbnRJbnRlcmZhY2UpO1xuXHRcblx0bW9k
dWxlLmV4cG9ydHMgPSBTeW50aGV0aWNEcmFnRXZlbnQ7XG5cbi8qKiovIH0sXG4vKiAxNzEgKi9c
bi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xu
XG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQg
KiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxp
Y2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElD
RU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBh
ZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRo
ZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKi9cblx0XG5c
dCd1c2Ugc3RyaWN0Jztcblx0XG5cdHZhciBTeW50aGV0aWNVSUV2ZW50ID0gX193ZWJwYWNrX3Jl
cXVpcmVfXygyMik7XG5cdFxuXHQvKipcblx0ICogQGludGVyZmFjZSBGb2N1c0V2ZW50XG5cdCAq
IEBzZWUgaHR0cDovL3d3dy53My5vcmcvVFIvRE9NLUxldmVsLTMtRXZlbnRzL1xuXHQgKi9cblx0
dmFyIEZvY3VzRXZlbnRJbnRlcmZhY2UgPSB7XG5cdCAgcmVsYXRlZFRhcmdldDogbnVsbFxuXHR9
O1xuXHRcblx0LyoqXG5cdCAqIEBwYXJhbSB7b2JqZWN0fSBkaXNwYXRjaENvbmZpZyBDb25maWd1
cmF0aW9uIHVzZWQgdG8gZGlzcGF0Y2ggdGhpcyBldmVudC5cblx0ICogQHBhcmFtIHtzdHJpbmd9
IGRpc3BhdGNoTWFya2VyIE1hcmtlciBpZGVudGlmeWluZyB0aGUgZXZlbnQgdGFyZ2V0LlxuXHQg
KiBAcGFyYW0ge29iamVjdH0gbmF0aXZlRXZlbnQgTmF0aXZlIGJyb3dzZXIgZXZlbnQuXG5cdCAq
IEBleHRlbmRzIHtTeW50aGV0aWNVSUV2ZW50fVxuXHQgKi9cblx0ZnVuY3Rpb24gU3ludGhldGlj
Rm9jdXNFdmVudChkaXNwYXRjaENvbmZpZywgZGlzcGF0Y2hNYXJrZXIsIG5hdGl2ZUV2ZW50LCBu
YXRpdmVFdmVudFRhcmdldCkge1xuXHQgIHJldHVybiBTeW50aGV0aWNVSUV2ZW50LmNhbGwodGhp
cywgZGlzcGF0Y2hDb25maWcsIGRpc3BhdGNoTWFya2VyLCBuYXRpdmVFdmVudCwgbmF0aXZlRXZl
bnRUYXJnZXQpO1xuXHR9XG5cdFxuXHRTeW50aGV0aWNVSUV2ZW50LmF1Z21lbnRDbGFzcyhTeW50
aGV0aWNGb2N1c0V2ZW50LCBGb2N1c0V2ZW50SW50ZXJmYWNlKTtcblx0XG5cdG1vZHVsZS5leHBv
cnRzID0gU3ludGhldGljRm9jdXNFdmVudDtcblxuLyoqKi8gfSxcbi8qIDE3MiAqL1xuLyoqKi8g
ZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0Lyoq
XG5cdCAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQg
dW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZp
bGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9u
YWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVO
VFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqL1xuXHRcblx0J3VzZSBz
dHJpY3QnO1xuXHRcblx0dmFyIFN5bnRoZXRpY0V2ZW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXygx
MCk7XG5cdFxuXHQvKipcblx0ICogQGludGVyZmFjZSBFdmVudFxuXHQgKiBAc2VlIGh0dHA6Ly93
d3cudzMub3JnL1RSLzIwMTMvV0QtRE9NLUxldmVsLTMtRXZlbnRzLTIwMTMxMTA1XG5cdCAqICAg
ICAgLyNldmVudHMtaW5wdXRldmVudHNcblx0ICovXG5cdHZhciBJbnB1dEV2ZW50SW50ZXJmYWNl
ID0ge1xuXHQgIGRhdGE6IG51bGxcblx0fTtcblx0XG5cdC8qKlxuXHQgKiBAcGFyYW0ge29iamVj
dH0gZGlzcGF0Y2hDb25maWcgQ29uZmlndXJhdGlvbiB1c2VkIHRvIGRpc3BhdGNoIHRoaXMgZXZl
bnQuXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBkaXNwYXRjaE1hcmtlciBNYXJrZXIgaWRlbnRpZnlp
bmcgdGhlIGV2ZW50IHRhcmdldC5cblx0ICogQHBhcmFtIHtvYmplY3R9IG5hdGl2ZUV2ZW50IE5h
dGl2ZSBicm93c2VyIGV2ZW50LlxuXHQgKiBAZXh0ZW5kcyB7U3ludGhldGljVUlFdmVudH1cblx0
ICovXG5cdGZ1bmN0aW9uIFN5bnRoZXRpY0lucHV0RXZlbnQoZGlzcGF0Y2hDb25maWcsIGRpc3Bh
dGNoTWFya2VyLCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpIHtcblx0ICByZXR1cm4g
U3ludGhldGljRXZlbnQuY2FsbCh0aGlzLCBkaXNwYXRjaENvbmZpZywgZGlzcGF0Y2hNYXJrZXIs
IG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCk7XG5cdH1cblx0XG5cdFN5bnRoZXRpY0V2
ZW50LmF1Z21lbnRDbGFzcyhTeW50aGV0aWNJbnB1dEV2ZW50LCBJbnB1dEV2ZW50SW50ZXJmYWNl
KTtcblx0XG5cdG1vZHVsZS5leHBvcnRzID0gU3ludGhldGljSW5wdXRFdmVudDtcblxuLyoqKi8g
fSxcbi8qIDE3MyAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tf
cmVxdWlyZV9fKSB7XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vi
b29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291
cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGlu
IHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291
cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4g
YmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAq
XG5cdCAqL1xuXHRcblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0dmFyIFN5bnRoZXRpY1VJRXZlbnQg
PSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIyKTtcblx0XG5cdHZhciBnZXRFdmVudENoYXJDb2RlID0g
X193ZWJwYWNrX3JlcXVpcmVfXyg0NCk7XG5cdHZhciBnZXRFdmVudEtleSA9IF9fd2VicGFja19y
ZXF1aXJlX18oMTgxKTtcblx0dmFyIGdldEV2ZW50TW9kaWZpZXJTdGF0ZSA9IF9fd2VicGFja19y
ZXF1aXJlX18oNDUpO1xuXHRcblx0LyoqXG5cdCAqIEBpbnRlcmZhY2UgS2V5Ym9hcmRFdmVudFxu
XHQgKiBAc2VlIGh0dHA6Ly93d3cudzMub3JnL1RSL0RPTS1MZXZlbC0zLUV2ZW50cy9cblx0ICov
XG5cdHZhciBLZXlib2FyZEV2ZW50SW50ZXJmYWNlID0ge1xuXHQgIGtleTogZ2V0RXZlbnRLZXks
XG5cdCAgbG9jYXRpb246IG51bGwsXG5cdCAgY3RybEtleTogbnVsbCxcblx0ICBzaGlmdEtleTog
bnVsbCxcblx0ICBhbHRLZXk6IG51bGwsXG5cdCAgbWV0YUtleTogbnVsbCxcblx0ICByZXBlYXQ6
IG51bGwsXG5cdCAgbG9jYWxlOiBudWxsLFxuXHQgIGdldE1vZGlmaWVyU3RhdGU6IGdldEV2ZW50
TW9kaWZpZXJTdGF0ZSxcblx0ICAvLyBMZWdhY3kgSW50ZXJmYWNlXG5cdCAgY2hhckNvZGU6IGZ1
bmN0aW9uIChldmVudCkge1xuXHQgICAgLy8gYGNoYXJDb2RlYCBpcyB0aGUgcmVzdWx0IG9mIGEg
S2V5UHJlc3MgZXZlbnQgYW5kIHJlcHJlc2VudHMgdGhlIHZhbHVlIG9mXG5cdCAgICAvLyB0aGUg
YWN0dWFsIHByaW50YWJsZSBjaGFyYWN0ZXIuXG5cdFxuXHQgICAgLy8gS2V5UHJlc3MgaXMgZGVw
cmVjYXRlZCwgYnV0IGl0cyByZXBsYWNlbWVudCBpcyBub3QgeWV0IGZpbmFsIGFuZCBub3Rcblx0
ICAgIC8vIGltcGxlbWVudGVkIGluIGFueSBtYWpvciBicm93c2VyLiBPbmx5IEtleVByZXNzIGhh
cyBjaGFyQ29kZS5cblx0ICAgIGlmIChldmVudC50eXBlID09PSAna2V5cHJlc3MnKSB7XG5cdCAg
ICAgIHJldHVybiBnZXRFdmVudENoYXJDb2RlKGV2ZW50KTtcblx0ICAgIH1cblx0ICAgIHJldHVy
biAwO1xuXHQgIH0sXG5cdCAga2V5Q29kZTogZnVuY3Rpb24gKGV2ZW50KSB7XG5cdCAgICAvLyBg
a2V5Q29kZWAgaXMgdGhlIHJlc3VsdCBvZiBhIEtleURvd24vVXAgZXZlbnQgYW5kIHJlcHJlc2Vu
dHMgdGhlIHZhbHVlIG9mXG5cdCAgICAvLyBwaHlzaWNhbCBrZXlib2FyZCBrZXkuXG5cdFxuXHQg
ICAgLy8gVGhlIGFjdHVhbCBtZWFuaW5nIG9mIHRoZSB2YWx1ZSBkZXBlbmRzIG9uIHRoZSB1c2Vy
cycga2V5Ym9hcmQgbGF5b3V0XG5cdCAgICAvLyB3aGljaCBjYW5ub3QgYmUgZGV0ZWN0ZWQuIEFz
c3VtaW5nIHRoYXQgaXQgaXMgYSBVUyBrZXlib2FyZCBsYXlvdXRcblx0ICAgIC8vIHByb3ZpZGVz
IGEgc3VycHJpc2luZ2x5IGFjY3VyYXRlIG1hcHBpbmcgZm9yIFVTIGFuZCBFdXJvcGVhbiB1c2Vy
cy5cblx0ICAgIC8vIER1ZSB0byB0aGlzLCBpdCBpcyBsZWZ0IHRvIHRoZSB1c2VyIHRvIGltcGxl
bWVudCBhdCB0aGlzIHRpbWUuXG5cdCAgICBpZiAoZXZlbnQudHlwZSA9PT0gJ2tleWRvd24nIHx8
IGV2ZW50LnR5cGUgPT09ICdrZXl1cCcpIHtcblx0ICAgICAgcmV0dXJuIGV2ZW50LmtleUNvZGU7
XG5cdCAgICB9XG5cdCAgICByZXR1cm4gMDtcblx0ICB9LFxuXHQgIHdoaWNoOiBmdW5jdGlvbiAo
ZXZlbnQpIHtcblx0ICAgIC8vIGB3aGljaGAgaXMgYW4gYWxpYXMgZm9yIGVpdGhlciBga2V5Q29k
ZWAgb3IgYGNoYXJDb2RlYCBkZXBlbmRpbmcgb24gdGhlXG5cdCAgICAvLyB0eXBlIG9mIHRoZSBl
dmVudC5cblx0ICAgIGlmIChldmVudC50eXBlID09PSAna2V5cHJlc3MnKSB7XG5cdCAgICAgIHJl
dHVybiBnZXRFdmVudENoYXJDb2RlKGV2ZW50KTtcblx0ICAgIH1cblx0ICAgIGlmIChldmVudC50
eXBlID09PSAna2V5ZG93bicgfHwgZXZlbnQudHlwZSA9PT0gJ2tleXVwJykge1xuXHQgICAgICBy
ZXR1cm4gZXZlbnQua2V5Q29kZTtcblx0ICAgIH1cblx0ICAgIHJldHVybiAwO1xuXHQgIH1cblx0
fTtcblx0XG5cdC8qKlxuXHQgKiBAcGFyYW0ge29iamVjdH0gZGlzcGF0Y2hDb25maWcgQ29uZmln
dXJhdGlvbiB1c2VkIHRvIGRpc3BhdGNoIHRoaXMgZXZlbnQuXG5cdCAqIEBwYXJhbSB7c3RyaW5n
fSBkaXNwYXRjaE1hcmtlciBNYXJrZXIgaWRlbnRpZnlpbmcgdGhlIGV2ZW50IHRhcmdldC5cblx0
ICogQHBhcmFtIHtvYmplY3R9IG5hdGl2ZUV2ZW50IE5hdGl2ZSBicm93c2VyIGV2ZW50LlxuXHQg
KiBAZXh0ZW5kcyB7U3ludGhldGljVUlFdmVudH1cblx0ICovXG5cdGZ1bmN0aW9uIFN5bnRoZXRp
Y0tleWJvYXJkRXZlbnQoZGlzcGF0Y2hDb25maWcsIGRpc3BhdGNoTWFya2VyLCBuYXRpdmVFdmVu
dCwgbmF0aXZlRXZlbnRUYXJnZXQpIHtcblx0ICByZXR1cm4gU3ludGhldGljVUlFdmVudC5jYWxs
KHRoaXMsIGRpc3BhdGNoQ29uZmlnLCBkaXNwYXRjaE1hcmtlciwgbmF0aXZlRXZlbnQsIG5hdGl2
ZUV2ZW50VGFyZ2V0KTtcblx0fVxuXHRcblx0U3ludGhldGljVUlFdmVudC5hdWdtZW50Q2xhc3Mo
U3ludGhldGljS2V5Ym9hcmRFdmVudCwgS2V5Ym9hcmRFdmVudEludGVyZmFjZSk7XG5cdFxuXHRt
b2R1bGUuZXhwb3J0cyA9IFN5bnRoZXRpY0tleWJvYXJkRXZlbnQ7XG5cbi8qKiovIH0sXG4vKiAx
NzQgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVf
Xykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5j
LlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2Rl
IGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0
ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVl
LiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5k
IGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKi9c
blx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdHZhciBTeW50aGV0aWNVSUV2ZW50ID0gX193ZWJw
YWNrX3JlcXVpcmVfXygyMik7XG5cdFxuXHR2YXIgZ2V0RXZlbnRNb2RpZmllclN0YXRlID0gX193
ZWJwYWNrX3JlcXVpcmVfXyg0NSk7XG5cdFxuXHQvKipcblx0ICogQGludGVyZmFjZSBUb3VjaEV2
ZW50XG5cdCAqIEBzZWUgaHR0cDovL3d3dy53My5vcmcvVFIvdG91Y2gtZXZlbnRzL1xuXHQgKi9c
blx0dmFyIFRvdWNoRXZlbnRJbnRlcmZhY2UgPSB7XG5cdCAgdG91Y2hlczogbnVsbCxcblx0ICB0
YXJnZXRUb3VjaGVzOiBudWxsLFxuXHQgIGNoYW5nZWRUb3VjaGVzOiBudWxsLFxuXHQgIGFsdEtl
eTogbnVsbCxcblx0ICBtZXRhS2V5OiBudWxsLFxuXHQgIGN0cmxLZXk6IG51bGwsXG5cdCAgc2hp
ZnRLZXk6IG51bGwsXG5cdCAgZ2V0TW9kaWZpZXJTdGF0ZTogZ2V0RXZlbnRNb2RpZmllclN0YXRl
XG5cdH07XG5cdFxuXHQvKipcblx0ICogQHBhcmFtIHtvYmplY3R9IGRpc3BhdGNoQ29uZmlnIENv
bmZpZ3VyYXRpb24gdXNlZCB0byBkaXNwYXRjaCB0aGlzIGV2ZW50LlxuXHQgKiBAcGFyYW0ge3N0
cmluZ30gZGlzcGF0Y2hNYXJrZXIgTWFya2VyIGlkZW50aWZ5aW5nIHRoZSBldmVudCB0YXJnZXQu
XG5cdCAqIEBwYXJhbSB7b2JqZWN0fSBuYXRpdmVFdmVudCBOYXRpdmUgYnJvd3NlciBldmVudC5c
blx0ICogQGV4dGVuZHMge1N5bnRoZXRpY1VJRXZlbnR9XG5cdCAqL1xuXHRmdW5jdGlvbiBTeW50
aGV0aWNUb3VjaEV2ZW50KGRpc3BhdGNoQ29uZmlnLCBkaXNwYXRjaE1hcmtlciwgbmF0aXZlRXZl
bnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KSB7XG5cdCAgcmV0dXJuIFN5bnRoZXRpY1VJRXZlbnQuY2Fs
bCh0aGlzLCBkaXNwYXRjaENvbmZpZywgZGlzcGF0Y2hNYXJrZXIsIG5hdGl2ZUV2ZW50LCBuYXRp
dmVFdmVudFRhcmdldCk7XG5cdH1cblx0XG5cdFN5bnRoZXRpY1VJRXZlbnQuYXVnbWVudENsYXNz
KFN5bnRoZXRpY1RvdWNoRXZlbnQsIFRvdWNoRXZlbnRJbnRlcmZhY2UpO1xuXHRcblx0bW9kdWxl
LmV4cG9ydHMgPSBTeW50aGV0aWNUb3VjaEV2ZW50O1xuXG4vKioqLyB9LFxuLyogMTc1ICovXG4v
KioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxu
XHQvKipcblx0ICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICog
QWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNl
bnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VO
U0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRk
aXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUg
UEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpcblx0ICovXG5cdFxuXHQn
dXNlIHN0cmljdCc7XG5cdFxuXHR2YXIgU3ludGhldGljRXZlbnQgPSBfX3dlYnBhY2tfcmVxdWly
ZV9fKDEwKTtcblx0XG5cdC8qKlxuXHQgKiBAaW50ZXJmYWNlIEV2ZW50XG5cdCAqIEBzZWUgaHR0
cDovL3d3dy53My5vcmcvVFIvMjAwOS9XRC1jc3MzLXRyYW5zaXRpb25zLTIwMDkwMzIwLyN0cmFu
c2l0aW9uLWV2ZW50cy1cblx0ICogQHNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9l
bi1VUy9kb2NzL1dlYi9BUEkvVHJhbnNpdGlvbkV2ZW50XG5cdCAqL1xuXHR2YXIgVHJhbnNpdGlv
bkV2ZW50SW50ZXJmYWNlID0ge1xuXHQgIHByb3BlcnR5TmFtZTogbnVsbCxcblx0ICBlbGFwc2Vk
VGltZTogbnVsbCxcblx0ICBwc2V1ZG9FbGVtZW50OiBudWxsXG5cdH07XG5cdFxuXHQvKipcblx0
ICogQHBhcmFtIHtvYmplY3R9IGRpc3BhdGNoQ29uZmlnIENvbmZpZ3VyYXRpb24gdXNlZCB0byBk
aXNwYXRjaCB0aGlzIGV2ZW50LlxuXHQgKiBAcGFyYW0ge3N0cmluZ30gZGlzcGF0Y2hNYXJrZXIg
TWFya2VyIGlkZW50aWZ5aW5nIHRoZSBldmVudCB0YXJnZXQuXG5cdCAqIEBwYXJhbSB7b2JqZWN0
fSBuYXRpdmVFdmVudCBOYXRpdmUgYnJvd3NlciBldmVudC5cblx0ICogQGV4dGVuZHMge1N5bnRo
ZXRpY0V2ZW50fVxuXHQgKi9cblx0ZnVuY3Rpb24gU3ludGhldGljVHJhbnNpdGlvbkV2ZW50KGRp
c3BhdGNoQ29uZmlnLCBkaXNwYXRjaE1hcmtlciwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFy
Z2V0KSB7XG5cdCAgcmV0dXJuIFN5bnRoZXRpY0V2ZW50LmNhbGwodGhpcywgZGlzcGF0Y2hDb25m
aWcsIGRpc3BhdGNoTWFya2VyLCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpO1xuXHR9
XG5cdFxuXHRTeW50aGV0aWNFdmVudC5hdWdtZW50Q2xhc3MoU3ludGhldGljVHJhbnNpdGlvbkV2
ZW50LCBUcmFuc2l0aW9uRXZlbnRJbnRlcmZhY2UpO1xuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBT
eW50aGV0aWNUcmFuc2l0aW9uRXZlbnQ7XG5cbi8qKiovIH0sXG4vKiAxNzYgKi9cbi8qKiovIGZ1
bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8qKlxu
XHQgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmln
aHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVu
ZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxl
IGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFs
IGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRT
IGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKi9cblx0XG5cdCd1c2Ugc3Ry
aWN0Jztcblx0XG5cdHZhciBTeW50aGV0aWNNb3VzZUV2ZW50ID0gX193ZWJwYWNrX3JlcXVpcmVf
XygyNik7XG5cdFxuXHQvKipcblx0ICogQGludGVyZmFjZSBXaGVlbEV2ZW50XG5cdCAqIEBzZWUg
aHR0cDovL3d3dy53My5vcmcvVFIvRE9NLUxldmVsLTMtRXZlbnRzL1xuXHQgKi9cblx0dmFyIFdo
ZWVsRXZlbnRJbnRlcmZhY2UgPSB7XG5cdCAgZGVsdGFYOiBmdW5jdGlvbiAoZXZlbnQpIHtcblx0
ICAgIHJldHVybiAnZGVsdGFYJyBpbiBldmVudCA/IGV2ZW50LmRlbHRhWCA6IC8vIEZhbGxiYWNr
IHRvIGB3aGVlbERlbHRhWGAgZm9yIFdlYmtpdCBhbmQgbm9ybWFsaXplIChyaWdodCBpcyBwb3Np
dGl2ZSkuXG5cdCAgICAnd2hlZWxEZWx0YVgnIGluIGV2ZW50ID8gLWV2ZW50LndoZWVsRGVsdGFY
IDogMDtcblx0ICB9LFxuXHQgIGRlbHRhWTogZnVuY3Rpb24gKGV2ZW50KSB7XG5cdCAgICByZXR1
cm4gJ2RlbHRhWScgaW4gZXZlbnQgPyBldmVudC5kZWx0YVkgOiAvLyBGYWxsYmFjayB0byBgd2hl
ZWxEZWx0YVlgIGZvciBXZWJraXQgYW5kIG5vcm1hbGl6ZSAoZG93biBpcyBwb3NpdGl2ZSkuXG5c
dCAgICAnd2hlZWxEZWx0YVknIGluIGV2ZW50ID8gLWV2ZW50LndoZWVsRGVsdGFZIDogLy8gRmFs
bGJhY2sgdG8gYHdoZWVsRGVsdGFgIGZvciBJRTw5IGFuZCBub3JtYWxpemUgKGRvd24gaXMgcG9z
aXRpdmUpLlxuXHQgICAgJ3doZWVsRGVsdGEnIGluIGV2ZW50ID8gLWV2ZW50LndoZWVsRGVsdGEg
OiAwO1xuXHQgIH0sXG5cdCAgZGVsdGFaOiBudWxsLFxuXHRcblx0ICAvLyBCcm93c2VycyB3aXRo
b3V0IFwiZGVsdGFNb2RlXCIgaXMgcmVwb3J0aW5nIGluIHJhdyB3aGVlbCBkZWx0YSB3aGVyZSBv
bmVcblx0ICAvLyBub3RjaCBvbiB0aGUgc2Nyb2xsIGlzIGFsd2F5cyArLy0gMTIwLCByb3VnaGx5
IGVxdWl2YWxlbnQgdG8gcGl4ZWxzLlxuXHQgIC8vIEEgZ29vZCBhcHByb3hpbWF0aW9uIG9mIERP
TV9ERUxUQV9MSU5FICgxKSBpcyA1JSBvZiB2aWV3cG9ydCBzaXplIG9yXG5cdCAgLy8gfjQwIHBp
eGVscywgZm9yIERPTV9ERUxUQV9TQ1JFRU4gKDIpIGl0IGlzIDg3LjUlIG9mIHZpZXdwb3J0IHNp
emUuXG5cdCAgZGVsdGFNb2RlOiBudWxsXG5cdH07XG5cdFxuXHQvKipcblx0ICogQHBhcmFtIHtv
YmplY3R9IGRpc3BhdGNoQ29uZmlnIENvbmZpZ3VyYXRpb24gdXNlZCB0byBkaXNwYXRjaCB0aGlz
IGV2ZW50LlxuXHQgKiBAcGFyYW0ge3N0cmluZ30gZGlzcGF0Y2hNYXJrZXIgTWFya2VyIGlkZW50
aWZ5aW5nIHRoZSBldmVudCB0YXJnZXQuXG5cdCAqIEBwYXJhbSB7b2JqZWN0fSBuYXRpdmVFdmVu
dCBOYXRpdmUgYnJvd3NlciBldmVudC5cblx0ICogQGV4dGVuZHMge1N5bnRoZXRpY01vdXNlRXZl
bnR9XG5cdCAqL1xuXHRmdW5jdGlvbiBTeW50aGV0aWNXaGVlbEV2ZW50KGRpc3BhdGNoQ29uZmln
LCBkaXNwYXRjaE1hcmtlciwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KSB7XG5cdCAg
cmV0dXJuIFN5bnRoZXRpY01vdXNlRXZlbnQuY2FsbCh0aGlzLCBkaXNwYXRjaENvbmZpZywgZGlz
cGF0Y2hNYXJrZXIsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCk7XG5cdH1cblx0XG5c
dFN5bnRoZXRpY01vdXNlRXZlbnQuYXVnbWVudENsYXNzKFN5bnRoZXRpY1doZWVsRXZlbnQsIFdo
ZWVsRXZlbnRJbnRlcmZhY2UpO1xuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBTeW50aGV0aWNXaGVl
bEV2ZW50O1xuXG4vKioqLyB9LFxuLyogMTc3ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4
cG9ydHMpIHtcblxuXHQvKipcblx0ICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ss
IEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2Ug
Y29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhl
XG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2Ug
dHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBm
b3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpcblx0
ICogXG5cdCAqL1xuXHRcblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0dmFyIE1PRCA9IDY1NTIxO1xu
XHRcblx0Ly8gYWRsZXIzMiBpcyBub3QgY3J5cHRvZ3JhcGhpY2FsbHkgc3Ryb25nLCBhbmQgaXMg
b25seSB1c2VkIHRvIHNhbml0eSBjaGVjayB0aGF0XG5cdC8vIG1hcmt1cCBnZW5lcmF0ZWQgb24g
dGhlIHNlcnZlciBtYXRjaGVzIHRoZSBtYXJrdXAgZ2VuZXJhdGVkIG9uIHRoZSBjbGllbnQuXG5c
dC8vIFRoaXMgaW1wbGVtZW50YXRpb24gKGEgbW9kaWZpZWQgdmVyc2lvbiBvZiB0aGUgU2hlZXRK
UyB2ZXJzaW9uKSBoYXMgYmVlbiBvcHRpbWl6ZWRcblx0Ly8gZm9yIG91ciB1c2UgY2FzZSwgYXQg
dGhlIGV4cGVuc2Ugb2YgY29uZm9ybWluZyB0byB0aGUgYWRsZXIzMiBzcGVjaWZpY2F0aW9uXG5c
dC8vIGZvciBub24tYXNjaWkgaW5wdXRzLlxuXHRmdW5jdGlvbiBhZGxlcjMyKGRhdGEpIHtcblx0
ICB2YXIgYSA9IDE7XG5cdCAgdmFyIGIgPSAwO1xuXHQgIHZhciBpID0gMDtcblx0ICB2YXIgbCA9
IGRhdGEubGVuZ3RoO1xuXHQgIHZhciBtID0gbCAmIH4weDM7XG5cdCAgd2hpbGUgKGkgPCBtKSB7
XG5cdCAgICB2YXIgbiA9IE1hdGgubWluKGkgKyA0MDk2LCBtKTtcblx0ICAgIGZvciAoOyBpIDwg
bjsgaSArPSA0KSB7XG5cdCAgICAgIGIgKz0gKGEgKz0gZGF0YS5jaGFyQ29kZUF0KGkpKSArIChh
ICs9IGRhdGEuY2hhckNvZGVBdChpICsgMSkpICsgKGEgKz0gZGF0YS5jaGFyQ29kZUF0KGkgKyAy
KSkgKyAoYSArPSBkYXRhLmNoYXJDb2RlQXQoaSArIDMpKTtcblx0ICAgIH1cblx0ICAgIGEgJT0g
TU9EO1xuXHQgICAgYiAlPSBNT0Q7XG5cdCAgfVxuXHQgIGZvciAoOyBpIDwgbDsgaSsrKSB7XG5c
dCAgICBiICs9IGEgKz0gZGF0YS5jaGFyQ29kZUF0KGkpO1xuXHQgIH1cblx0ICBhICU9IE1PRDtc
blx0ICBiICU9IE1PRDtcblx0ICByZXR1cm4gYSB8IGIgPDwgMTY7XG5cdH1cblx0XG5cdG1vZHVs
ZS5leHBvcnRzID0gYWRsZXIzMjtcblxuLyoqKi8gfSxcbi8qIDE3OCAqL1xuLyoqKi8gZnVuY3Rp
b24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0LyoqXG5cdCAq
IENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMg
cmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIg
dGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4g
dGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3Jh
bnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmls
ZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqL1xuXHRcblx0J3VzZSBzdHJpY3Qn
O1xuXHRcblx0dmFyIENTU1Byb3BlcnR5ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1OCk7XG5cdHZh
ciB3YXJuaW5nID0gX193ZWJwYWNrX3JlcXVpcmVfXygyKTtcblx0XG5cdHZhciBpc1VuaXRsZXNz
TnVtYmVyID0gQ1NTUHJvcGVydHkuaXNVbml0bGVzc051bWJlcjtcblx0dmFyIHN0eWxlV2Fybmlu
Z3MgPSB7fTtcblx0XG5cdC8qKlxuXHQgKiBDb252ZXJ0IGEgdmFsdWUgaW50byB0aGUgcHJvcGVy
IGNzcyB3cml0YWJsZSB2YWx1ZS4gVGhlIHN0eWxlIG5hbWUgYG5hbWVgXG5cdCAqIHNob3VsZCBi
ZSBsb2dpY2FsIChubyBoeXBoZW5zKSwgYXMgc3BlY2lmaWVkXG5cdCAqIGluIGBDU1NQcm9wZXJ0
eS5pc1VuaXRsZXNzTnVtYmVyYC5cblx0ICpcblx0ICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgQ1NT
IHByb3BlcnR5IG5hbWUgc3VjaCBhcyBgdG9wTWFyZ2luYC5cblx0ICogQHBhcmFtIHsqfSB2YWx1
ZSBDU1MgcHJvcGVydHkgdmFsdWUgc3VjaCBhcyBgMTBweGAuXG5cdCAqIEBwYXJhbSB7UmVhY3RE
T01Db21wb25lbnR9IGNvbXBvbmVudFxuXHQgKiBAcmV0dXJuIHtzdHJpbmd9IE5vcm1hbGl6ZWQg
c3R5bGUgdmFsdWUgd2l0aCBkaW1lbnNpb25zIGFwcGxpZWQuXG5cdCAqL1xuXHRmdW5jdGlvbiBk
YW5nZXJvdXNTdHlsZVZhbHVlKG5hbWUsIHZhbHVlLCBjb21wb25lbnQsIGlzQ3VzdG9tUHJvcGVy
dHkpIHtcblx0ICAvLyBOb3RlIHRoYXQgd2UndmUgcmVtb3ZlZCBlc2NhcGVUZXh0Rm9yQnJvd3Nl
cigpIGNhbGxzIGhlcmUgc2luY2UgdGhlXG5cdCAgLy8gd2hvbGUgc3RyaW5nIHdpbGwgYmUgZXNj
YXBlZCB3aGVuIHRoZSBhdHRyaWJ1dGUgaXMgaW5qZWN0ZWQgaW50b1xuXHQgIC8vIHRoZSBtYXJr
dXAuIElmIHlvdSBwcm92aWRlIHVuc2FmZSB1c2VyIGRhdGEgaGVyZSB0aGV5IGNhbiBpbmplY3Rc
blx0ICAvLyBhcmJpdHJhcnkgQ1NTIHdoaWNoIG1heSBiZSBwcm9ibGVtYXRpYyAoSSBjb3VsZG4n
dCByZXBybyB0aGlzKTpcblx0ICAvLyBodHRwczovL3d3dy5vd2FzcC5vcmcvaW5kZXgucGhwL1hT
U19GaWx0ZXJfRXZhc2lvbl9DaGVhdF9TaGVldFxuXHQgIC8vIGh0dHA6Ly93d3cudGhlc3Bhbm5l
ci5jby51ay8yMDA3LzExLzI2L3VsdGltYXRlLXhzcy1jc3MtaW5qZWN0aW9uL1xuXHQgIC8vIFRo
aXMgaXMgbm90IGFuIFhTUyBob2xlIGJ1dCBpbnN0ZWFkIGEgcG90ZW50aWFsIENTUyBpbmplY3Rp
b24gaXNzdWVcblx0ICAvLyB3aGljaCBoYXMgbGVhZCB0byBhIGdyZWF0ZXIgZGlzY3Vzc2lvbiBh
Ym91dCBob3cgd2UncmUgZ29pbmcgdG9cblx0ICAvLyB0cnVzdCBVUkxzIG1vdmluZyBmb3J3YXJk
LiBTZWUgIzIxMTU5MDFcblx0XG5cdCAgdmFyIGlzRW1wdHkgPSB2YWx1ZSA9PSBudWxsIHx8IHR5
cGVvZiB2YWx1ZSA9PT0gJ2Jvb2xlYW4nIHx8IHZhbHVlID09PSAnJztcblx0ICBpZiAoaXNFbXB0
eSkge1xuXHQgICAgcmV0dXJuICcnO1xuXHQgIH1cblx0XG5cdCAgdmFyIGlzTm9uTnVtZXJpYyA9
IGlzTmFOKHZhbHVlKTtcblx0ICBpZiAoaXNDdXN0b21Qcm9wZXJ0eSB8fCBpc05vbk51bWVyaWMg
fHwgdmFsdWUgPT09IDAgfHwgaXNVbml0bGVzc051bWJlci5oYXNPd25Qcm9wZXJ0eShuYW1lKSAm
JiBpc1VuaXRsZXNzTnVtYmVyW25hbWVdKSB7XG5cdCAgICByZXR1cm4gJycgKyB2YWx1ZTsgLy8g
Y2FzdCB0byBzdHJpbmdcblx0ICB9XG5cdFxuXHQgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJp
bmcnKSB7XG5cdCAgICBpZiAoZmFsc2UpIHtcblx0ICAgICAgLy8gQWxsb3cgJzAnIHRvIHBhc3Mg
dGhyb3VnaCB3aXRob3V0IHdhcm5pbmcuIDAgaXMgYWxyZWFkeSBzcGVjaWFsIGFuZFxuXHQgICAg
ICAvLyBkb2Vzbid0IHJlcXVpcmUgdW5pdHMsIHNvIHdlIGRvbid0IG5lZWQgdG8gd2FybiBhYm91
dCBpdC5cblx0ICAgICAgaWYgKGNvbXBvbmVudCAmJiB2YWx1ZSAhPT0gJzAnKSB7XG5cdCAgICAg
ICAgdmFyIG93bmVyID0gY29tcG9uZW50Ll9jdXJyZW50RWxlbWVudC5fb3duZXI7XG5cdCAgICAg
ICAgdmFyIG93bmVyTmFtZSA9IG93bmVyID8gb3duZXIuZ2V0TmFtZSgpIDogbnVsbDtcblx0ICAg
ICAgICBpZiAob3duZXJOYW1lICYmICFzdHlsZVdhcm5pbmdzW293bmVyTmFtZV0pIHtcblx0ICAg
ICAgICAgIHN0eWxlV2FybmluZ3Nbb3duZXJOYW1lXSA9IHt9O1xuXHQgICAgICAgIH1cblx0ICAg
ICAgICB2YXIgd2FybmVkID0gZmFsc2U7XG5cdCAgICAgICAgaWYgKG93bmVyTmFtZSkge1xuXHQg
ICAgICAgICAgdmFyIHdhcm5pbmdzID0gc3R5bGVXYXJuaW5nc1tvd25lck5hbWVdO1xuXHQgICAg
ICAgICAgd2FybmVkID0gd2FybmluZ3NbbmFtZV07XG5cdCAgICAgICAgICBpZiAoIXdhcm5lZCkg
e1xuXHQgICAgICAgICAgICB3YXJuaW5nc1tuYW1lXSA9IHRydWU7XG5cdCAgICAgICAgICB9XG5c
dCAgICAgICAgfVxuXHQgICAgICAgIGlmICghd2FybmVkKSB7XG5cdCAgICAgICAgICBwcm9jZXNz
LmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ2EgYCVzYCB0
YWcgKG93bmVyOiBgJXNgKSB3YXMgcGFzc2VkIGEgbnVtZXJpYyBzdHJpbmcgdmFsdWUgJyArICdm
b3IgQ1NTIHByb3BlcnR5IGAlc2AgKHZhbHVlOiBgJXNgKSB3aGljaCB3aWxsIGJlIHRyZWF0ZWQg
JyArICdhcyBhIHVuaXRsZXNzIG51bWJlciBpbiBhIGZ1dHVyZSB2ZXJzaW9uIG9mIFJlYWN0Lics
IGNvbXBvbmVudC5fY3VycmVudEVsZW1lbnQudHlwZSwgb3duZXJOYW1lIHx8ICd1bmtub3duJywg
bmFtZSwgdmFsdWUpIDogdm9pZCAwO1xuXHQgICAgICAgIH1cblx0ICAgICAgfVxuXHQgICAgfVxu
XHQgICAgdmFsdWUgPSB2YWx1ZS50cmltKCk7XG5cdCAgfVxuXHQgIHJldHVybiB2YWx1ZSArICdw
eCc7XG5cdH1cblx0XG5cdG1vZHVsZS5leHBvcnRzID0gZGFuZ2Vyb3VzU3R5bGVWYWx1ZTtcblxu
LyoqKi8gfSxcbi8qIDE3OSAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dl
YnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQs
IEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRo
aXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZv
dW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRo
aXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0
cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3Rvcnku
XG5cdCAqXG5cdCAqL1xuXHRcblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0dmFyIF9wcm9kSW52YXJp
YW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXygzKTtcblx0XG5cdHZhciBSZWFjdEN1cnJlbnRPd25l
ciA9IF9fd2VicGFja19yZXF1aXJlX18oMTEpO1xuXHR2YXIgUmVhY3RET01Db21wb25lbnRUcmVl
ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1KTtcblx0dmFyIFJlYWN0SW5zdGFuY2VNYXAgPSBfX3dl
YnBhY2tfcmVxdWlyZV9fKDIxKTtcblx0XG5cdHZhciBnZXRIb3N0Q29tcG9uZW50RnJvbUNvbXBv
c2l0ZSA9IF9fd2VicGFja19yZXF1aXJlX18oNzIpO1xuXHR2YXIgaW52YXJpYW50ID0gX193ZWJw
YWNrX3JlcXVpcmVfXygxKTtcblx0dmFyIHdhcm5pbmcgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIp
O1xuXHRcblx0LyoqXG5cdCAqIFJldHVybnMgdGhlIERPTSBub2RlIHJlbmRlcmVkIGJ5IHRoaXMg
ZWxlbWVudC5cblx0ICpcblx0ICogU2VlIGh0dHBzOi8vZmFjZWJvb2suZ2l0aHViLmlvL3JlYWN0
L2RvY3MvdG9wLWxldmVsLWFwaS5odG1sI3JlYWN0ZG9tLmZpbmRkb21ub2RlXG5cdCAqXG5cdCAq
IEBwYXJhbSB7UmVhY3RDb21wb25lbnR8RE9NRWxlbWVudH0gY29tcG9uZW50T3JFbGVtZW50XG5c
dCAqIEByZXR1cm4gez9ET01FbGVtZW50fSBUaGUgcm9vdCBub2RlIG9mIHRoaXMgZWxlbWVudC5c
blx0ICovXG5cdGZ1bmN0aW9uIGZpbmRET01Ob2RlKGNvbXBvbmVudE9yRWxlbWVudCkge1xuXHQg
IGlmIChmYWxzZSkge1xuXHQgICAgdmFyIG93bmVyID0gUmVhY3RDdXJyZW50T3duZXIuY3VycmVu
dDtcblx0ICAgIGlmIChvd25lciAhPT0gbnVsbCkge1xuXHQgICAgICBwcm9jZXNzLmVudi5OT0RF
X0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhvd25lci5fd2FybmVkQWJvdXRSZWZzSW5S
ZW5kZXIsICclcyBpcyBhY2Nlc3NpbmcgZmluZERPTU5vZGUgaW5zaWRlIGl0cyByZW5kZXIoKS4g
JyArICdyZW5kZXIoKSBzaG91bGQgYmUgYSBwdXJlIGZ1bmN0aW9uIG9mIHByb3BzIGFuZCBzdGF0
ZS4gSXQgc2hvdWxkICcgKyAnbmV2ZXIgYWNjZXNzIHNvbWV0aGluZyB0aGF0IHJlcXVpcmVzIHN0
YWxlIGRhdGEgZnJvbSB0aGUgcHJldmlvdXMgJyArICdyZW5kZXIsIHN1Y2ggYXMgcmVmcy4gTW92
ZSB0aGlzIGxvZ2ljIHRvIGNvbXBvbmVudERpZE1vdW50IGFuZCAnICsgJ2NvbXBvbmVudERpZFVw
ZGF0ZSBpbnN0ZWFkLicsIG93bmVyLmdldE5hbWUoKSB8fCAnQSBjb21wb25lbnQnKSA6IHZvaWQg
MDtcblx0ICAgICAgb3duZXIuX3dhcm5lZEFib3V0UmVmc0luUmVuZGVyID0gdHJ1ZTtcblx0ICAg
IH1cblx0ICB9XG5cdCAgaWYgKGNvbXBvbmVudE9yRWxlbWVudCA9PSBudWxsKSB7XG5cdCAgICBy
ZXR1cm4gbnVsbDtcblx0ICB9XG5cdCAgaWYgKGNvbXBvbmVudE9yRWxlbWVudC5ub2RlVHlwZSA9
PT0gMSkge1xuXHQgICAgcmV0dXJuIGNvbXBvbmVudE9yRWxlbWVudDtcblx0ICB9XG5cdFxuXHQg
IHZhciBpbnN0ID0gUmVhY3RJbnN0YW5jZU1hcC5nZXQoY29tcG9uZW50T3JFbGVtZW50KTtcblx0
ICBpZiAoaW5zdCkge1xuXHQgICAgaW5zdCA9IGdldEhvc3RDb21wb25lbnRGcm9tQ29tcG9zaXRl
KGluc3QpO1xuXHQgICAgcmV0dXJuIGluc3QgPyBSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0Tm9k
ZUZyb21JbnN0YW5jZShpbnN0KSA6IG51bGw7XG5cdCAgfVxuXHRcblx0ICBpZiAodHlwZW9mIGNv
bXBvbmVudE9yRWxlbWVudC5yZW5kZXIgPT09ICdmdW5jdGlvbicpIHtcblx0ICAgICB0cnVlID8g
IGZhbHNlID8gaW52YXJpYW50KGZhbHNlLCAnZmluZERPTU5vZGUgd2FzIGNhbGxlZCBvbiBhbiB1
bm1vdW50ZWQgY29tcG9uZW50LicpIDogX3Byb2RJbnZhcmlhbnQoJzQ0JykgOiB2b2lkIDA7XG5c
dCAgfSBlbHNlIHtcblx0ICAgICB0cnVlID8gIGZhbHNlID8gaW52YXJpYW50KGZhbHNlLCAnRWxl
bWVudCBhcHBlYXJzIHRvIGJlIG5laXRoZXIgUmVhY3RDb21wb25lbnQgbm9yIERPTU5vZGUgKGtl
eXM6ICVzKScsIE9iamVjdC5rZXlzKGNvbXBvbmVudE9yRWxlbWVudCkpIDogX3Byb2RJbnZhcmlh
bnQoJzQ1JywgT2JqZWN0LmtleXMoY29tcG9uZW50T3JFbGVtZW50KSkgOiB2b2lkIDA7XG5cdCAg
fVxuXHR9XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IGZpbmRET01Ob2RlO1xuXG4vKioqLyB9LFxu
LyogMTgwICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1
aXJlX18pIHtcblxuXHQvKiBXRUJQQUNLIFZBUiBJTkpFQ1RJT04gKi8oZnVuY3Rpb24ocHJvY2Vz
cykgey8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQg
KiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxp
Y2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElD
RU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBh
ZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRo
ZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKiBcblx0ICov
XG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHR2YXIgS2V5RXNjYXBlVXRpbHMgPSBfX3dlYnBh
Y2tfcmVxdWlyZV9fKDM4KTtcblx0dmFyIHRyYXZlcnNlQWxsQ2hpbGRyZW4gPSBfX3dlYnBhY2tf
cmVxdWlyZV9fKDc4KTtcblx0dmFyIHdhcm5pbmcgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIpO1xu
XHRcblx0dmFyIFJlYWN0Q29tcG9uZW50VHJlZUhvb2s7XG5cdFxuXHRpZiAodHlwZW9mIHByb2Nl
c3MgIT09ICd1bmRlZmluZWQnICYmIHByb2Nlc3MuZW52ICYmIChcInByb2R1Y3Rpb25cIikgPT09
ICd0ZXN0Jykge1xuXHQgIC8vIFRlbXBvcmFyeSBoYWNrLlxuXHQgIC8vIElubGluZSByZXF1aXJl
cyBkb24ndCB3b3JrIHdlbGwgd2l0aCBKZXN0OlxuXHQgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9m
YWNlYm9vay9yZWFjdC9pc3N1ZXMvNzI0MFxuXHQgIC8vIFJlbW92ZSB0aGUgaW5saW5lIHJlcXVp
cmVzIHdoZW4gd2UgZG9uJ3QgbmVlZCB0aGVtIGFueW1vcmU6XG5cdCAgLy8gaHR0cHM6Ly9naXRo
dWIuY29tL2ZhY2Vib29rL3JlYWN0L3B1bGwvNzE3OFxuXHQgIFJlYWN0Q29tcG9uZW50VHJlZUhv
b2sgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDkwKTtcblx0fVxuXHRcblx0LyoqXG5cdCAqIEBwYXJh
bSB7ZnVuY3Rpb259IHRyYXZlcnNlQ29udGV4dCBDb250ZXh0IHBhc3NlZCB0aHJvdWdoIHRyYXZl
cnNhbC5cblx0ICogQHBhcmFtIHs/UmVhY3RDb21wb25lbnR9IGNoaWxkIFJlYWN0IGNoaWxkIGNv
bXBvbmVudC5cblx0ICogQHBhcmFtIHshc3RyaW5nfSBuYW1lIFN0cmluZyBuYW1lIG9mIGtleSBw
YXRoIHRvIGNoaWxkLlxuXHQgKiBAcGFyYW0ge251bWJlcj19IHNlbGZEZWJ1Z0lEIE9wdGlvbmFs
IGRlYnVnSUQgb2YgdGhlIGN1cnJlbnQgaW50ZXJuYWwgaW5zdGFuY2UuXG5cdCAqL1xuXHRmdW5j
dGlvbiBmbGF0dGVuU2luZ2xlQ2hpbGRJbnRvQ29udGV4dCh0cmF2ZXJzZUNvbnRleHQsIGNoaWxk
LCBuYW1lLCBzZWxmRGVidWdJRCkge1xuXHQgIC8vIFdlIGZvdW5kIGEgY29tcG9uZW50IGluc3Rh
bmNlLlxuXHQgIGlmICh0cmF2ZXJzZUNvbnRleHQgJiYgdHlwZW9mIHRyYXZlcnNlQ29udGV4dCA9
PT0gJ29iamVjdCcpIHtcblx0ICAgIHZhciByZXN1bHQgPSB0cmF2ZXJzZUNvbnRleHQ7XG5cdCAg
ICB2YXIga2V5VW5pcXVlID0gcmVzdWx0W25hbWVdID09PSB1bmRlZmluZWQ7XG5cdCAgICBpZiAo
ZmFsc2UpIHtcblx0ICAgICAgaWYgKCFSZWFjdENvbXBvbmVudFRyZWVIb29rKSB7XG5cdCAgICAg
ICAgUmVhY3RDb21wb25lbnRUcmVlSG9vayA9IHJlcXVpcmUoJ3JlYWN0L2xpYi9SZWFjdENvbXBv
bmVudFRyZWVIb29rJyk7XG5cdCAgICAgIH1cblx0ICAgICAgaWYgKCFrZXlVbmlxdWUpIHtcblx0
ICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhm
YWxzZSwgJ2ZsYXR0ZW5DaGlsZHJlbiguLi4pOiBFbmNvdW50ZXJlZCB0d28gY2hpbGRyZW4gd2l0
aCB0aGUgc2FtZSBrZXksICcgKyAnYCVzYC4gQ2hpbGQga2V5cyBtdXN0IGJlIHVuaXF1ZTsgd2hl
biB0d28gY2hpbGRyZW4gc2hhcmUgYSBrZXksIG9ubHkgJyArICd0aGUgZmlyc3QgY2hpbGQgd2ls
bCBiZSB1c2VkLiVzJywgS2V5RXNjYXBlVXRpbHMudW5lc2NhcGUobmFtZSksIFJlYWN0Q29tcG9u
ZW50VHJlZUhvb2suZ2V0U3RhY2tBZGRlbmR1bUJ5SUQoc2VsZkRlYnVnSUQpKSA6IHZvaWQgMDtc
blx0ICAgICAgfVxuXHQgICAgfVxuXHQgICAgaWYgKGtleVVuaXF1ZSAmJiBjaGlsZCAhPSBudWxs
KSB7XG5cdCAgICAgIHJlc3VsdFtuYW1lXSA9IGNoaWxkO1xuXHQgICAgfVxuXHQgIH1cblx0fVxu
XHRcblx0LyoqXG5cdCAqIEZsYXR0ZW5zIGNoaWxkcmVuIHRoYXQgYXJlIHR5cGljYWxseSBzcGVj
aWZpZWQgYXMgYHByb3BzLmNoaWxkcmVuYC4gQW55IG51bGxcblx0ICogY2hpbGRyZW4gd2lsbCBu
b3QgYmUgaW5jbHVkZWQgaW4gdGhlIHJlc3VsdGluZyBvYmplY3QuXG5cdCAqIEByZXR1cm4geyFv
YmplY3R9IGZsYXR0ZW5lZCBjaGlsZHJlbiBrZXllZCBieSBuYW1lLlxuXHQgKi9cblx0ZnVuY3Rp
b24gZmxhdHRlbkNoaWxkcmVuKGNoaWxkcmVuLCBzZWxmRGVidWdJRCkge1xuXHQgIGlmIChjaGls
ZHJlbiA9PSBudWxsKSB7XG5cdCAgICByZXR1cm4gY2hpbGRyZW47XG5cdCAgfVxuXHQgIHZhciBy
ZXN1bHQgPSB7fTtcblx0XG5cdCAgaWYgKGZhbHNlKSB7XG5cdCAgICB0cmF2ZXJzZUFsbENoaWxk
cmVuKGNoaWxkcmVuLCBmdW5jdGlvbiAodHJhdmVyc2VDb250ZXh0LCBjaGlsZCwgbmFtZSkge1xu
XHQgICAgICByZXR1cm4gZmxhdHRlblNpbmdsZUNoaWxkSW50b0NvbnRleHQodHJhdmVyc2VDb250
ZXh0LCBjaGlsZCwgbmFtZSwgc2VsZkRlYnVnSUQpO1xuXHQgICAgfSwgcmVzdWx0KTtcblx0ICB9
IGVsc2Uge1xuXHQgICAgdHJhdmVyc2VBbGxDaGlsZHJlbihjaGlsZHJlbiwgZmxhdHRlblNpbmds
ZUNoaWxkSW50b0NvbnRleHQsIHJlc3VsdCk7XG5cdCAgfVxuXHQgIHJldHVybiByZXN1bHQ7XG5c
dH1cblx0XG5cdG1vZHVsZS5leHBvcnRzID0gZmxhdHRlbkNoaWxkcmVuO1xuXHQvKiBXRUJQQUNL
IFZBUiBJTkpFQ1RJT04gKi99LmNhbGwoZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyg4Nykp
KVxuXG4vKioqLyB9LFxuLyogMTgxICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMs
IF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvKipcblx0ICogQ29weXJpZ2h0IDIwMTMtcHJl
c2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0
ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vu
c2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkg
b2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQg
cmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVj
dG9yeS5cblx0ICpcblx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHR2YXIgZ2V0RXZl
bnRDaGFyQ29kZSA9IF9fd2VicGFja19yZXF1aXJlX18oNDQpO1xuXHRcblx0LyoqXG5cdCAqIE5v
cm1hbGl6YXRpb24gb2YgZGVwcmVjYXRlZCBIVE1MNSBga2V5YCB2YWx1ZXNcblx0ICogQHNlZSBo
dHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvS2V5Ym9hcmRF
dmVudCNLZXlfbmFtZXNcblx0ICovXG5cdHZhciBub3JtYWxpemVLZXkgPSB7XG5cdCAgRXNjOiAn
RXNjYXBlJyxcblx0ICBTcGFjZWJhcjogJyAnLFxuXHQgIExlZnQ6ICdBcnJvd0xlZnQnLFxuXHQg
IFVwOiAnQXJyb3dVcCcsXG5cdCAgUmlnaHQ6ICdBcnJvd1JpZ2h0Jyxcblx0ICBEb3duOiAnQXJy
b3dEb3duJyxcblx0ICBEZWw6ICdEZWxldGUnLFxuXHQgIFdpbjogJ09TJyxcblx0ICBNZW51OiAn
Q29udGV4dE1lbnUnLFxuXHQgIEFwcHM6ICdDb250ZXh0TWVudScsXG5cdCAgU2Nyb2xsOiAnU2Ny
b2xsTG9jaycsXG5cdCAgTW96UHJpbnRhYmxlS2V5OiAnVW5pZGVudGlmaWVkJ1xuXHR9O1xuXHRc
blx0LyoqXG5cdCAqIFRyYW5zbGF0aW9uIGZyb20gbGVnYWN5IGBrZXlDb2RlYCB0byBIVE1MNSBg
a2V5YFxuXHQgKiBPbmx5IHNwZWNpYWwga2V5cyBzdXBwb3J0ZWQsIGFsbCBvdGhlcnMgZGVwZW5k
IG9uIGtleWJvYXJkIGxheW91dCBvciBicm93c2VyXG5cdCAqIEBzZWUgaHR0cHM6Ly9kZXZlbG9w
ZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0tleWJvYXJkRXZlbnQjS2V5X25hbWVz
XG5cdCAqL1xuXHR2YXIgdHJhbnNsYXRlVG9LZXkgPSB7XG5cdCAgODogJ0JhY2tzcGFjZScsXG5c
dCAgOTogJ1RhYicsXG5cdCAgMTI6ICdDbGVhcicsXG5cdCAgMTM6ICdFbnRlcicsXG5cdCAgMTY6
ICdTaGlmdCcsXG5cdCAgMTc6ICdDb250cm9sJyxcblx0ICAxODogJ0FsdCcsXG5cdCAgMTk6ICdQ
YXVzZScsXG5cdCAgMjA6ICdDYXBzTG9jaycsXG5cdCAgMjc6ICdFc2NhcGUnLFxuXHQgIDMyOiAn
ICcsXG5cdCAgMzM6ICdQYWdlVXAnLFxuXHQgIDM0OiAnUGFnZURvd24nLFxuXHQgIDM1OiAnRW5k
Jyxcblx0ICAzNjogJ0hvbWUnLFxuXHQgIDM3OiAnQXJyb3dMZWZ0Jyxcblx0ICAzODogJ0Fycm93
VXAnLFxuXHQgIDM5OiAnQXJyb3dSaWdodCcsXG5cdCAgNDA6ICdBcnJvd0Rvd24nLFxuXHQgIDQ1
OiAnSW5zZXJ0Jyxcblx0ICA0NjogJ0RlbGV0ZScsXG5cdCAgMTEyOiAnRjEnLFxuXHQgIDExMzog
J0YyJyxcblx0ICAxMTQ6ICdGMycsXG5cdCAgMTE1OiAnRjQnLFxuXHQgIDExNjogJ0Y1Jyxcblx0
ICAxMTc6ICdGNicsXG5cdCAgMTE4OiAnRjcnLFxuXHQgIDExOTogJ0Y4Jyxcblx0ICAxMjA6ICdG
OScsXG5cdCAgMTIxOiAnRjEwJyxcblx0ICAxMjI6ICdGMTEnLFxuXHQgIDEyMzogJ0YxMicsXG5c
dCAgMTQ0OiAnTnVtTG9jaycsXG5cdCAgMTQ1OiAnU2Nyb2xsTG9jaycsXG5cdCAgMjI0OiAnTWV0
YSdcblx0fTtcblx0XG5cdC8qKlxuXHQgKiBAcGFyYW0ge29iamVjdH0gbmF0aXZlRXZlbnQgTmF0
aXZlIGJyb3dzZXIgZXZlbnQuXG5cdCAqIEByZXR1cm4ge3N0cmluZ30gTm9ybWFsaXplZCBga2V5
YCBwcm9wZXJ0eS5cblx0ICovXG5cdGZ1bmN0aW9uIGdldEV2ZW50S2V5KG5hdGl2ZUV2ZW50KSB7
XG5cdCAgaWYgKG5hdGl2ZUV2ZW50LmtleSkge1xuXHQgICAgLy8gTm9ybWFsaXplIGluY29uc2lz
dGVudCB2YWx1ZXMgcmVwb3J0ZWQgYnkgYnJvd3NlcnMgZHVlIHRvXG5cdCAgICAvLyBpbXBsZW1l
bnRhdGlvbnMgb2YgYSB3b3JraW5nIGRyYWZ0IHNwZWNpZmljYXRpb24uXG5cdFxuXHQgICAgLy8g
RmlyZUZveCBpbXBsZW1lbnRzIGBrZXlgIGJ1dCByZXR1cm5zIGBNb3pQcmludGFibGVLZXlgIGZv
ciBhbGxcblx0ICAgIC8vIHByaW50YWJsZSBjaGFyYWN0ZXJzIChub3JtYWxpemVkIHRvIGBVbmlk
ZW50aWZpZWRgKSwgaWdub3JlIGl0LlxuXHQgICAgdmFyIGtleSA9IG5vcm1hbGl6ZUtleVtuYXRp
dmVFdmVudC5rZXldIHx8IG5hdGl2ZUV2ZW50LmtleTtcblx0ICAgIGlmIChrZXkgIT09ICdVbmlk
ZW50aWZpZWQnKSB7XG5cdCAgICAgIHJldHVybiBrZXk7XG5cdCAgICB9XG5cdCAgfVxuXHRcblx0
ICAvLyBCcm93c2VyIGRvZXMgbm90IGltcGxlbWVudCBga2V5YCwgcG9seWZpbGwgYXMgbXVjaCBv
ZiBpdCBhcyB3ZSBjYW4uXG5cdCAgaWYgKG5hdGl2ZUV2ZW50LnR5cGUgPT09ICdrZXlwcmVzcycp
IHtcblx0ICAgIHZhciBjaGFyQ29kZSA9IGdldEV2ZW50Q2hhckNvZGUobmF0aXZlRXZlbnQpO1xu
XHRcblx0ICAgIC8vIFRoZSBlbnRlci1rZXkgaXMgdGVjaG5pY2FsbHkgYm90aCBwcmludGFibGUg
YW5kIG5vbi1wcmludGFibGUgYW5kIGNhblxuXHQgICAgLy8gdGh1cyBiZSBjYXB0dXJlZCBieSBg
a2V5cHJlc3NgLCBubyBvdGhlciBub24tcHJpbnRhYmxlIGtleSBzaG91bGQuXG5cdCAgICByZXR1
cm4gY2hhckNvZGUgPT09IDEzID8gJ0VudGVyJyA6IFN0cmluZy5mcm9tQ2hhckNvZGUoY2hhckNv
ZGUpO1xuXHQgIH1cblx0ICBpZiAobmF0aXZlRXZlbnQudHlwZSA9PT0gJ2tleWRvd24nIHx8IG5h
dGl2ZUV2ZW50LnR5cGUgPT09ICdrZXl1cCcpIHtcblx0ICAgIC8vIFdoaWxlIHVzZXIga2V5Ym9h
cmQgbGF5b3V0IGRldGVybWluZXMgdGhlIGFjdHVhbCBtZWFuaW5nIG9mIGVhY2hcblx0ICAgIC8v
IGBrZXlDb2RlYCB2YWx1ZSwgYWxtb3N0IGFsbCBmdW5jdGlvbiBrZXlzIGhhdmUgYSB1bml2ZXJz
YWwgdmFsdWUuXG5cdCAgICByZXR1cm4gdHJhbnNsYXRlVG9LZXlbbmF0aXZlRXZlbnQua2V5Q29k
ZV0gfHwgJ1VuaWRlbnRpZmllZCc7XG5cdCAgfVxuXHQgIHJldHVybiAnJztcblx0fVxuXHRcblx0
bW9kdWxlLmV4cG9ydHMgPSBnZXRFdmVudEtleTtcblxuLyoqKi8gfSxcbi8qIDE4MiAqL1xuLyoq
Ki8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAy
MDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5c
dCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHls
ZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGly
ZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2Yg
cGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2Ft
ZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqIFxuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0
XG5cdC8qIGdsb2JhbCBTeW1ib2wgKi9cblx0XG5cdHZhciBJVEVSQVRPUl9TWU1CT0wgPSB0eXBl
b2YgU3ltYm9sID09PSAnZnVuY3Rpb24nICYmIFN5bWJvbC5pdGVyYXRvcjtcblx0dmFyIEZBVVhf
SVRFUkFUT1JfU1lNQk9MID0gJ0BAaXRlcmF0b3InOyAvLyBCZWZvcmUgU3ltYm9sIHNwZWMuXG5c
dFxuXHQvKipcblx0ICogUmV0dXJucyB0aGUgaXRlcmF0b3IgbWV0aG9kIGZ1bmN0aW9uIGNvbnRh
aW5lZCBvbiB0aGUgaXRlcmFibGUgb2JqZWN0LlxuXHQgKlxuXHQgKiBCZSBzdXJlIHRvIGludm9r
ZSB0aGUgZnVuY3Rpb24gd2l0aCB0aGUgaXRlcmFibGUgYXMgY29udGV4dDpcblx0ICpcblx0ICog
ICAgIHZhciBpdGVyYXRvckZuID0gZ2V0SXRlcmF0b3JGbihteUl0ZXJhYmxlKTtcblx0ICogICAg
IGlmIChpdGVyYXRvckZuKSB7XG5cdCAqICAgICAgIHZhciBpdGVyYXRvciA9IGl0ZXJhdG9yRm4u
Y2FsbChteUl0ZXJhYmxlKTtcblx0ICogICAgICAgLi4uXG5cdCAqICAgICB9XG5cdCAqXG5cdCAq
IEBwYXJhbSB7P29iamVjdH0gbWF5YmVJdGVyYWJsZVxuXHQgKiBAcmV0dXJuIHs/ZnVuY3Rpb259
XG5cdCAqL1xuXHRmdW5jdGlvbiBnZXRJdGVyYXRvckZuKG1heWJlSXRlcmFibGUpIHtcblx0ICB2
YXIgaXRlcmF0b3JGbiA9IG1heWJlSXRlcmFibGUgJiYgKElURVJBVE9SX1NZTUJPTCAmJiBtYXli
ZUl0ZXJhYmxlW0lURVJBVE9SX1NZTUJPTF0gfHwgbWF5YmVJdGVyYWJsZVtGQVVYX0lURVJBVE9S
X1NZTUJPTF0pO1xuXHQgIGlmICh0eXBlb2YgaXRlcmF0b3JGbiA9PT0gJ2Z1bmN0aW9uJykge1xu
XHQgICAgcmV0dXJuIGl0ZXJhdG9yRm47XG5cdCAgfVxuXHR9XG5cdFxuXHRtb2R1bGUuZXhwb3J0
cyA9IGdldEl0ZXJhdG9yRm47XG5cbi8qKiovIH0sXG4vKiAxODMgKi9cbi8qKiovIGZ1bmN0aW9u
KG1vZHVsZSwgZXhwb3J0cykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50
LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBU
aGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBm
b3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0
aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdo
dHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5
LlxuXHQgKlxuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdC8qKlxuXHQgKiBHaXZl
biBhbnkgbm9kZSByZXR1cm4gdGhlIGZpcnN0IGxlYWYgbm9kZSB3aXRob3V0IGNoaWxkcmVuLlxu
XHQgKlxuXHQgKiBAcGFyYW0ge0RPTUVsZW1lbnR8RE9NVGV4dE5vZGV9IG5vZGVcblx0ICogQHJl
dHVybiB7RE9NRWxlbWVudHxET01UZXh0Tm9kZX1cblx0ICovXG5cdFxuXHRmdW5jdGlvbiBnZXRM
ZWFmTm9kZShub2RlKSB7XG5cdCAgd2hpbGUgKG5vZGUgJiYgbm9kZS5maXJzdENoaWxkKSB7XG5c
dCAgICBub2RlID0gbm9kZS5maXJzdENoaWxkO1xuXHQgIH1cblx0ICByZXR1cm4gbm9kZTtcblx0
fVxuXHRcblx0LyoqXG5cdCAqIEdldCB0aGUgbmV4dCBzaWJsaW5nIHdpdGhpbiBhIGNvbnRhaW5l
ci4gVGhpcyB3aWxsIHdhbGsgdXAgdGhlXG5cdCAqIERPTSBpZiBhIG5vZGUncyBzaWJsaW5ncyBo
YXZlIGJlZW4gZXhoYXVzdGVkLlxuXHQgKlxuXHQgKiBAcGFyYW0ge0RPTUVsZW1lbnR8RE9NVGV4
dE5vZGV9IG5vZGVcblx0ICogQHJldHVybiB7P0RPTUVsZW1lbnR8RE9NVGV4dE5vZGV9XG5cdCAq
L1xuXHRmdW5jdGlvbiBnZXRTaWJsaW5nTm9kZShub2RlKSB7XG5cdCAgd2hpbGUgKG5vZGUpIHtc
blx0ICAgIGlmIChub2RlLm5leHRTaWJsaW5nKSB7XG5cdCAgICAgIHJldHVybiBub2RlLm5leHRT
aWJsaW5nO1xuXHQgICAgfVxuXHQgICAgbm9kZSA9IG5vZGUucGFyZW50Tm9kZTtcblx0ICB9XG5c
dH1cblx0XG5cdC8qKlxuXHQgKiBHZXQgb2JqZWN0IGRlc2NyaWJpbmcgdGhlIG5vZGVzIHdoaWNo
IGNvbnRhaW4gY2hhcmFjdGVycyBhdCBvZmZzZXQuXG5cdCAqXG5cdCAqIEBwYXJhbSB7RE9NRWxl
bWVudHxET01UZXh0Tm9kZX0gcm9vdFxuXHQgKiBAcGFyYW0ge251bWJlcn0gb2Zmc2V0XG5cdCAq
IEByZXR1cm4gez9vYmplY3R9XG5cdCAqL1xuXHRmdW5jdGlvbiBnZXROb2RlRm9yQ2hhcmFjdGVy
T2Zmc2V0KHJvb3QsIG9mZnNldCkge1xuXHQgIHZhciBub2RlID0gZ2V0TGVhZk5vZGUocm9vdCk7
XG5cdCAgdmFyIG5vZGVTdGFydCA9IDA7XG5cdCAgdmFyIG5vZGVFbmQgPSAwO1xuXHRcblx0ICB3
aGlsZSAobm9kZSkge1xuXHQgICAgaWYgKG5vZGUubm9kZVR5cGUgPT09IDMpIHtcblx0ICAgICAg
bm9kZUVuZCA9IG5vZGVTdGFydCArIG5vZGUudGV4dENvbnRlbnQubGVuZ3RoO1xuXHRcblx0ICAg
ICAgaWYgKG5vZGVTdGFydCA8PSBvZmZzZXQgJiYgbm9kZUVuZCA+PSBvZmZzZXQpIHtcblx0ICAg
ICAgICByZXR1cm4ge1xuXHQgICAgICAgICAgbm9kZTogbm9kZSxcblx0ICAgICAgICAgIG9mZnNl
dDogb2Zmc2V0IC0gbm9kZVN0YXJ0XG5cdCAgICAgICAgfTtcblx0ICAgICAgfVxuXHRcblx0ICAg
ICAgbm9kZVN0YXJ0ID0gbm9kZUVuZDtcblx0ICAgIH1cblx0XG5cdCAgICBub2RlID0gZ2V0TGVh
Zk5vZGUoZ2V0U2libGluZ05vZGUobm9kZSkpO1xuXHQgIH1cblx0fVxuXHRcblx0bW9kdWxlLmV4
cG9ydHMgPSBnZXROb2RlRm9yQ2hhcmFjdGVyT2Zmc2V0O1xuXG4vKioqLyB9LFxuLyogMTg0ICov
XG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtc
blxuXHQvKipcblx0ICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0
ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBs
aWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJ
Q0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4g
YWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0
aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpcblx0ICovXG5cdFxu
XHQndXNlIHN0cmljdCc7XG5cdFxuXHR2YXIgRXhlY3V0aW9uRW52aXJvbm1lbnQgPSBfX3dlYnBh
Y2tfcmVxdWlyZV9fKDYpO1xuXHRcblx0LyoqXG5cdCAqIEdlbmVyYXRlIGEgbWFwcGluZyBvZiBz
dGFuZGFyZCB2ZW5kb3IgcHJlZml4ZXMgdXNpbmcgdGhlIGRlZmluZWQgc3R5bGUgcHJvcGVydHkg
YW5kIGV2ZW50IG5hbWUuXG5cdCAqXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBzdHlsZVByb3Bcblx0
ICogQHBhcmFtIHtzdHJpbmd9IGV2ZW50TmFtZVxuXHQgKiBAcmV0dXJucyB7b2JqZWN0fVxuXHQg
Ki9cblx0ZnVuY3Rpb24gbWFrZVByZWZpeE1hcChzdHlsZVByb3AsIGV2ZW50TmFtZSkge1xuXHQg
IHZhciBwcmVmaXhlcyA9IHt9O1xuXHRcblx0ICBwcmVmaXhlc1tzdHlsZVByb3AudG9Mb3dlckNh
c2UoKV0gPSBldmVudE5hbWUudG9Mb3dlckNhc2UoKTtcblx0ICBwcmVmaXhlc1snV2Via2l0JyAr
IHN0eWxlUHJvcF0gPSAnd2Via2l0JyArIGV2ZW50TmFtZTtcblx0ICBwcmVmaXhlc1snTW96JyAr
IHN0eWxlUHJvcF0gPSAnbW96JyArIGV2ZW50TmFtZTtcblx0ICBwcmVmaXhlc1snbXMnICsgc3R5
bGVQcm9wXSA9ICdNUycgKyBldmVudE5hbWU7XG5cdCAgcHJlZml4ZXNbJ08nICsgc3R5bGVQcm9w
XSA9ICdvJyArIGV2ZW50TmFtZS50b0xvd2VyQ2FzZSgpO1xuXHRcblx0ICByZXR1cm4gcHJlZml4
ZXM7XG5cdH1cblx0XG5cdC8qKlxuXHQgKiBBIGxpc3Qgb2YgZXZlbnQgbmFtZXMgdG8gYSBjb25m
aWd1cmFibGUgbGlzdCBvZiB2ZW5kb3IgcHJlZml4ZXMuXG5cdCAqL1xuXHR2YXIgdmVuZG9yUHJl
Zml4ZXMgPSB7XG5cdCAgYW5pbWF0aW9uZW5kOiBtYWtlUHJlZml4TWFwKCdBbmltYXRpb24nLCAn
QW5pbWF0aW9uRW5kJyksXG5cdCAgYW5pbWF0aW9uaXRlcmF0aW9uOiBtYWtlUHJlZml4TWFwKCdB
bmltYXRpb24nLCAnQW5pbWF0aW9uSXRlcmF0aW9uJyksXG5cdCAgYW5pbWF0aW9uc3RhcnQ6IG1h
a2VQcmVmaXhNYXAoJ0FuaW1hdGlvbicsICdBbmltYXRpb25TdGFydCcpLFxuXHQgIHRyYW5zaXRp
b25lbmQ6IG1ha2VQcmVmaXhNYXAoJ1RyYW5zaXRpb24nLCAnVHJhbnNpdGlvbkVuZCcpXG5cdH07
XG5cdFxuXHQvKipcblx0ICogRXZlbnQgbmFtZXMgdGhhdCBoYXZlIGFscmVhZHkgYmVlbiBkZXRl
Y3RlZCBhbmQgcHJlZml4ZWQgKGlmIGFwcGxpY2FibGUpLlxuXHQgKi9cblx0dmFyIHByZWZpeGVk
RXZlbnROYW1lcyA9IHt9O1xuXHRcblx0LyoqXG5cdCAqIEVsZW1lbnQgdG8gY2hlY2sgZm9yIHBy
ZWZpeGVzIG9uLlxuXHQgKi9cblx0dmFyIHN0eWxlID0ge307XG5cdFxuXHQvKipcblx0ICogQm9v
dHN0cmFwIGlmIGEgRE9NIGV4aXN0cy5cblx0ICovXG5cdGlmIChFeGVjdXRpb25FbnZpcm9ubWVu
dC5jYW5Vc2VET00pIHtcblx0ICBzdHlsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2Rpdicp
LnN0eWxlO1xuXHRcblx0ICAvLyBPbiBzb21lIHBsYXRmb3JtcywgaW4gcGFydGljdWxhciBzb21l
IHJlbGVhc2VzIG9mIEFuZHJvaWQgNC54LFxuXHQgIC8vIHRoZSB1bi1wcmVmaXhlZCBcImFuaW1h
dGlvblwiIGFuZCBcInRyYW5zaXRpb25cIiBwcm9wZXJ0aWVzIGFyZSBkZWZpbmVkIG9uIHRoZVxu
XHQgIC8vIHN0eWxlIG9iamVjdCBidXQgdGhlIGV2ZW50cyB0aGF0IGZpcmUgd2lsbCBzdGlsbCBi
ZSBwcmVmaXhlZCwgc28gd2UgbmVlZFxuXHQgIC8vIHRvIGNoZWNrIGlmIHRoZSB1bi1wcmVmaXhl
ZCBldmVudHMgYXJlIHVzYWJsZSwgYW5kIGlmIG5vdCByZW1vdmUgdGhlbSBmcm9tIHRoZSBtYXAu
XG5cdCAgaWYgKCEoJ0FuaW1hdGlvbkV2ZW50JyBpbiB3aW5kb3cpKSB7XG5cdCAgICBkZWxldGUg
dmVuZG9yUHJlZml4ZXMuYW5pbWF0aW9uZW5kLmFuaW1hdGlvbjtcblx0ICAgIGRlbGV0ZSB2ZW5k
b3JQcmVmaXhlcy5hbmltYXRpb25pdGVyYXRpb24uYW5pbWF0aW9uO1xuXHQgICAgZGVsZXRlIHZl
bmRvclByZWZpeGVzLmFuaW1hdGlvbnN0YXJ0LmFuaW1hdGlvbjtcblx0ICB9XG5cdFxuXHQgIC8v
IFNhbWUgYXMgYWJvdmVcblx0ICBpZiAoISgnVHJhbnNpdGlvbkV2ZW50JyBpbiB3aW5kb3cpKSB7
XG5cdCAgICBkZWxldGUgdmVuZG9yUHJlZml4ZXMudHJhbnNpdGlvbmVuZC50cmFuc2l0aW9uO1xu
XHQgIH1cblx0fVxuXHRcblx0LyoqXG5cdCAqIEF0dGVtcHRzIHRvIGRldGVybWluZSB0aGUgY29y
cmVjdCB2ZW5kb3IgcHJlZml4ZWQgZXZlbnQgbmFtZS5cblx0ICpcblx0ICogQHBhcmFtIHtzdHJp
bmd9IGV2ZW50TmFtZVxuXHQgKiBAcmV0dXJucyB7c3RyaW5nfVxuXHQgKi9cblx0ZnVuY3Rpb24g
Z2V0VmVuZG9yUHJlZml4ZWRFdmVudE5hbWUoZXZlbnROYW1lKSB7XG5cdCAgaWYgKHByZWZpeGVk
RXZlbnROYW1lc1tldmVudE5hbWVdKSB7XG5cdCAgICByZXR1cm4gcHJlZml4ZWRFdmVudE5hbWVz
W2V2ZW50TmFtZV07XG5cdCAgfSBlbHNlIGlmICghdmVuZG9yUHJlZml4ZXNbZXZlbnROYW1lXSkg
e1xuXHQgICAgcmV0dXJuIGV2ZW50TmFtZTtcblx0ICB9XG5cdFxuXHQgIHZhciBwcmVmaXhNYXAg
PSB2ZW5kb3JQcmVmaXhlc1tldmVudE5hbWVdO1xuXHRcblx0ICBmb3IgKHZhciBzdHlsZVByb3Ag
aW4gcHJlZml4TWFwKSB7XG5cdCAgICBpZiAocHJlZml4TWFwLmhhc093blByb3BlcnR5KHN0eWxl
UHJvcCkgJiYgc3R5bGVQcm9wIGluIHN0eWxlKSB7XG5cdCAgICAgIHJldHVybiBwcmVmaXhlZEV2
ZW50TmFtZXNbZXZlbnROYW1lXSA9IHByZWZpeE1hcFtzdHlsZVByb3BdO1xuXHQgICAgfVxuXHQg
IH1cblx0XG5cdCAgcmV0dXJuICcnO1xuXHR9XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IGdldFZl
bmRvclByZWZpeGVkRXZlbnROYW1lO1xuXG4vKioqLyB9LFxuLyogMTg1ICovXG4vKioqLyBmdW5j
dGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvKipcblx0
ICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0
cyByZXNlcnZlZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRl
ciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBp
biB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBn
cmFudFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBm
aWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpcblx0ICovXG5cdFxuXHQndXNlIHN0cmlj
dCc7XG5cdFxuXHR2YXIgZXNjYXBlVGV4dENvbnRlbnRGb3JCcm93c2VyID0gX193ZWJwYWNrX3Jl
cXVpcmVfXygyOCk7XG5cdFxuXHQvKipcblx0ICogRXNjYXBlcyBhdHRyaWJ1dGUgdmFsdWUgdG8g
cHJldmVudCBzY3JpcHRpbmcgYXR0YWNrcy5cblx0ICpcblx0ICogQHBhcmFtIHsqfSB2YWx1ZSBW
YWx1ZSB0byBlc2NhcGUuXG5cdCAqIEByZXR1cm4ge3N0cmluZ30gQW4gZXNjYXBlZCBzdHJpbmcu
XG5cdCAqL1xuXHRmdW5jdGlvbiBxdW90ZUF0dHJpYnV0ZVZhbHVlRm9yQnJvd3Nlcih2YWx1ZSkg
e1xuXHQgIHJldHVybiAnXCInICsgZXNjYXBlVGV4dENvbnRlbnRGb3JCcm93c2VyKHZhbHVlKSAr
ICdcIic7XG5cdH1cblx0XG5cdG1vZHVsZS5leHBvcnRzID0gcXVvdGVBdHRyaWJ1dGVWYWx1ZUZv
ckJyb3dzZXI7XG5cbi8qKiovIH0sXG4vKiAxODYgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwg
ZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQg
MjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxu
XHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5
bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRp
cmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9m
IHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNh
bWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdHZh
ciBSZWFjdE1vdW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg2Nyk7XG5cdFxuXHRtb2R1bGUuZXhw
b3J0cyA9IFJlYWN0TW91bnQucmVuZGVyU3VidHJlZUludG9Db250YWluZXI7XG5cbi8qKiovIH0s
XG4vKiAxODcgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3Jl
cXVpcmVfXykge1xuXG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdGV4cG9ydHMuX19lc01vZHVsZSA9
IHRydWU7XG5cdGV4cG9ydHMuY3JlYXRlUHJvdmlkZXIgPSBjcmVhdGVQcm92aWRlcjtcblx0XG5c
dHZhciBfcmVhY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEyKTtcblx0XG5cdHZhciBfcHJvcFR5
cGVzID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1Nik7XG5cdFxuXHR2YXIgX3Byb3BUeXBlczIgPSBf
aW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9wcm9wVHlwZXMpO1xuXHRcblx0dmFyIF9Qcm9wVHlwZXMg
PSBfX3dlYnBhY2tfcmVxdWlyZV9fKDgyKTtcblx0XG5cdHZhciBfd2FybmluZyA9IF9fd2VicGFj
a19yZXF1aXJlX18oNTApO1xuXHRcblx0dmFyIF93YXJuaW5nMiA9IF9pbnRlcm9wUmVxdWlyZURl
ZmF1bHQoX3dhcm5pbmcpO1xuXHRcblx0ZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChv
YmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2Jq
IH07IH1cblx0XG5cdGZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0
b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3
IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKTsgfSB9XG5c
dFxuXHRmdW5jdGlvbiBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybihzZWxmLCBjYWxsKSB7IGlm
ICghc2VsZikgeyB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoXCJ0aGlzIGhhc24ndCBiZWVuIGlu
aXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWRcIik7IH0gcmV0dXJuIGNhbGwg
JiYgKHR5cGVvZiBjYWxsID09PSBcIm9iamVjdFwiIHx8IHR5cGVvZiBjYWxsID09PSBcImZ1bmN0
aW9uXCIpID8gY2FsbCA6IHNlbGY7IH1cblx0XG5cdGZ1bmN0aW9uIF9pbmhlcml0cyhzdWJDbGFz
cywgc3VwZXJDbGFzcykgeyBpZiAodHlwZW9mIHN1cGVyQ2xhc3MgIT09IFwiZnVuY3Rpb25cIiAm
JiBzdXBlckNsYXNzICE9PSBudWxsKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHBy
ZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90IFwiICsgdHlwZW9m
IHN1cGVyQ2xhc3MpOyB9IHN1YkNsYXNzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoc3VwZXJD
bGFzcyAmJiBzdXBlckNsYXNzLnByb3RvdHlwZSwgeyBjb25zdHJ1Y3RvcjogeyB2YWx1ZTogc3Vi
Q2xhc3MsIGVudW1lcmFibGU6IGZhbHNlLCB3cml0YWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0
cnVlIH0gfSk7IGlmIChzdXBlckNsYXNzKSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3Qu
c2V0UHJvdG90eXBlT2Yoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIDogc3ViQ2xhc3MuX19wcm90b19f
ID0gc3VwZXJDbGFzczsgfVxuXHRcblx0dmFyIGRpZFdhcm5BYm91dFJlY2VpdmluZ1N0b3JlID0g
ZmFsc2U7XG5cdGZ1bmN0aW9uIHdhcm5BYm91dFJlY2VpdmluZ1N0b3JlKCkge1xuXHQgIGlmIChk
aWRXYXJuQWJvdXRSZWNlaXZpbmdTdG9yZSkge1xuXHQgICAgcmV0dXJuO1xuXHQgIH1cblx0ICBk
aWRXYXJuQWJvdXRSZWNlaXZpbmdTdG9yZSA9IHRydWU7XG5cdFxuXHQgICgwLCBfd2FybmluZzIu
ZGVmYXVsdCkoJzxQcm92aWRlcj4gZG9lcyBub3Qgc3VwcG9ydCBjaGFuZ2luZyBgc3RvcmVgIG9u
IHRoZSBmbHkuICcgKyAnSXQgaXMgbW9zdCBsaWtlbHkgdGhhdCB5b3Ugc2VlIHRoaXMgZXJyb3Ig
YmVjYXVzZSB5b3UgdXBkYXRlZCB0byAnICsgJ1JlZHV4IDIueCBhbmQgUmVhY3QgUmVkdXggMi54
IHdoaWNoIG5vIGxvbmdlciBob3QgcmVsb2FkIHJlZHVjZXJzICcgKyAnYXV0b21hdGljYWxseS4g
U2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9yZWFjdGpzL3JlYWN0LXJlZHV4L3JlbGVhc2VzLycgKyAn
dGFnL3YyLjAuMCBmb3IgdGhlIG1pZ3JhdGlvbiBpbnN0cnVjdGlvbnMuJyk7XG5cdH1cblx0XG5c
dGZ1bmN0aW9uIGNyZWF0ZVByb3ZpZGVyKCkge1xuXHQgIHZhciBfUHJvdmlkZXIkY2hpbGRDb250
ZXg7XG5cdFxuXHQgIHZhciBzdG9yZUtleSA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIGFyZ3Vt
ZW50c1swXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzBdIDogJ3N0b3JlJztcblx0ICB2YXIg
c3ViS2V5ID0gYXJndW1lbnRzWzFdO1xuXHRcblx0ICB2YXIgc3Vic2NyaXB0aW9uS2V5ID0gc3Vi
S2V5IHx8IHN0b3JlS2V5ICsgJ1N1YnNjcmlwdGlvbic7XG5cdFxuXHQgIHZhciBQcm92aWRlciA9
IGZ1bmN0aW9uIChfQ29tcG9uZW50KSB7XG5cdCAgICBfaW5oZXJpdHMoUHJvdmlkZXIsIF9Db21w
b25lbnQpO1xuXHRcblx0ICAgIFByb3ZpZGVyLnByb3RvdHlwZS5nZXRDaGlsZENvbnRleHQgPSBm
dW5jdGlvbiBnZXRDaGlsZENvbnRleHQoKSB7XG5cdCAgICAgIHZhciBfcmVmO1xuXHRcblx0ICAg
ICAgcmV0dXJuIF9yZWYgPSB7fSwgX3JlZltzdG9yZUtleV0gPSB0aGlzW3N0b3JlS2V5XSwgX3Jl
ZltzdWJzY3JpcHRpb25LZXldID0gbnVsbCwgX3JlZjtcblx0ICAgIH07XG5cdFxuXHQgICAgZnVu
Y3Rpb24gUHJvdmlkZXIocHJvcHMsIGNvbnRleHQpIHtcblx0ICAgICAgX2NsYXNzQ2FsbENoZWNr
KHRoaXMsIFByb3ZpZGVyKTtcblx0XG5cdCAgICAgIHZhciBfdGhpcyA9IF9wb3NzaWJsZUNvbnN0
cnVjdG9yUmV0dXJuKHRoaXMsIF9Db21wb25lbnQuY2FsbCh0aGlzLCBwcm9wcywgY29udGV4dCkp
O1xuXHRcblx0ICAgICAgX3RoaXNbc3RvcmVLZXldID0gcHJvcHMuc3RvcmU7XG5cdCAgICAgIHJl
dHVybiBfdGhpcztcblx0ICAgIH1cblx0XG5cdCAgICBQcm92aWRlci5wcm90b3R5cGUucmVuZGVy
ID0gZnVuY3Rpb24gcmVuZGVyKCkge1xuXHQgICAgICByZXR1cm4gX3JlYWN0LkNoaWxkcmVuLm9u
bHkodGhpcy5wcm9wcy5jaGlsZHJlbik7XG5cdCAgICB9O1xuXHRcblx0ICAgIHJldHVybiBQcm92
aWRlcjtcblx0ICB9KF9yZWFjdC5Db21wb25lbnQpO1xuXHRcblx0ICBpZiAoZmFsc2UpIHtcblx0
ICAgIFByb3ZpZGVyLnByb3RvdHlwZS5jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzID0gZnVuY3Rp
b24gKG5leHRQcm9wcykge1xuXHQgICAgICBpZiAodGhpc1tzdG9yZUtleV0gIT09IG5leHRQcm9w
cy5zdG9yZSkge1xuXHQgICAgICAgIHdhcm5BYm91dFJlY2VpdmluZ1N0b3JlKCk7XG5cdCAgICAg
IH1cblx0ICAgIH07XG5cdCAgfVxuXHRcblx0ICBQcm92aWRlci5wcm9wVHlwZXMgPSB7XG5cdCAg
ICBzdG9yZTogX1Byb3BUeXBlcy5zdG9yZVNoYXBlLmlzUmVxdWlyZWQsXG5cdCAgICBjaGlsZHJl
bjogX3Byb3BUeXBlczIuZGVmYXVsdC5lbGVtZW50LmlzUmVxdWlyZWRcblx0ICB9O1xuXHQgIFBy
b3ZpZGVyLmNoaWxkQ29udGV4dFR5cGVzID0gKF9Qcm92aWRlciRjaGlsZENvbnRleCA9IHt9LCBf
UHJvdmlkZXIkY2hpbGRDb250ZXhbc3RvcmVLZXldID0gX1Byb3BUeXBlcy5zdG9yZVNoYXBlLmlz
UmVxdWlyZWQsIF9Qcm92aWRlciRjaGlsZENvbnRleFtzdWJzY3JpcHRpb25LZXldID0gX1Byb3BU
eXBlcy5zdWJzY3JpcHRpb25TaGFwZSwgX1Byb3ZpZGVyJGNoaWxkQ29udGV4KTtcblx0XG5cdCAg
cmV0dXJuIFByb3ZpZGVyO1xuXHR9XG5cdFxuXHRleHBvcnRzLmRlZmF1bHQgPSBjcmVhdGVQcm92
aWRlcigpO1xuXG4vKioqLyB9LFxuLyogMTg4ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4
cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHRl
eHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuXHRcblx0dmFyIF9leHRlbmRzID0gT2JqZWN0LmFz
c2lnbiB8fCBmdW5jdGlvbiAodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRz
Lmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07IGZvciAodmFyIGtleSBp
biBzb3VyY2UpIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3Vy
Y2UsIGtleSkpIHsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IH0gcmV0dXJuIHRhcmdl
dDsgfTtcblx0XG5cdGV4cG9ydHMuY3JlYXRlQ29ubmVjdCA9IGNyZWF0ZUNvbm5lY3Q7XG5cdFxu
XHR2YXIgX2Nvbm5lY3RBZHZhbmNlZCA9IF9fd2VicGFja19yZXF1aXJlX18oNzkpO1xuXHRcblx0
dmFyIF9jb25uZWN0QWR2YW5jZWQyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfY29ubmVjdEFk
dmFuY2VkKTtcblx0XG5cdHZhciBfc2hhbGxvd0VxdWFsID0gX193ZWJwYWNrX3JlcXVpcmVfXygx
OTUpO1xuXHRcblx0dmFyIF9zaGFsbG93RXF1YWwyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChf
c2hhbGxvd0VxdWFsKTtcblx0XG5cdHZhciBfbWFwRGlzcGF0Y2hUb1Byb3BzID0gX193ZWJwYWNr
X3JlcXVpcmVfXygxODkpO1xuXHRcblx0dmFyIF9tYXBEaXNwYXRjaFRvUHJvcHMyID0gX2ludGVy
b3BSZXF1aXJlRGVmYXVsdChfbWFwRGlzcGF0Y2hUb1Byb3BzKTtcblx0XG5cdHZhciBfbWFwU3Rh
dGVUb1Byb3BzID0gX193ZWJwYWNrX3JlcXVpcmVfXygxOTApO1xuXHRcblx0dmFyIF9tYXBTdGF0
ZVRvUHJvcHMyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfbWFwU3RhdGVUb1Byb3BzKTtcblx0
XG5cdHZhciBfbWVyZ2VQcm9wcyA9IF9fd2VicGFja19yZXF1aXJlX18oMTkxKTtcblx0XG5cdHZh
ciBfbWVyZ2VQcm9wczIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9tZXJnZVByb3BzKTtcblx0
XG5cdHZhciBfc2VsZWN0b3JGYWN0b3J5ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxOTIpO1xuXHRc
blx0dmFyIF9zZWxlY3RvckZhY3RvcnkyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfc2VsZWN0
b3JGYWN0b3J5KTtcblx0XG5cdGZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7
IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9
XG5cdFxuXHRmdW5jdGlvbiBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMob2JqLCBrZXlzKSB7IHZh
ciB0YXJnZXQgPSB7fTsgZm9yICh2YXIgaSBpbiBvYmopIHsgaWYgKGtleXMuaW5kZXhPZihpKSA+
PSAwKSBjb250aW51ZTsgaWYgKCFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwo
b2JqLCBpKSkgY29udGludWU7IHRhcmdldFtpXSA9IG9ialtpXTsgfSByZXR1cm4gdGFyZ2V0OyB9
XG5cdFxuXHQvKlxuXHQgIGNvbm5lY3QgaXMgYSBmYWNhZGUgb3ZlciBjb25uZWN0QWR2YW5jZWQu
IEl0IHR1cm5zIGl0cyBhcmdzIGludG8gYSBjb21wYXRpYmxlXG5cdCAgc2VsZWN0b3JGYWN0b3J5
LCB3aGljaCBoYXMgdGhlIHNpZ25hdHVyZTpcblx0XG5cdCAgICAoZGlzcGF0Y2gsIG9wdGlvbnMp
ID0+IChuZXh0U3RhdGUsIG5leHRPd25Qcm9wcykgPT4gbmV4dEZpbmFsUHJvcHNcblx0ICBcblx0
ICBjb25uZWN0IHBhc3NlcyBpdHMgYXJncyB0byBjb25uZWN0QWR2YW5jZWQgYXMgb3B0aW9ucywg
d2hpY2ggd2lsbCBpbiB0dXJuIHBhc3MgdGhlbSB0b1xuXHQgIHNlbGVjdG9yRmFjdG9yeSBlYWNo
IHRpbWUgYSBDb25uZWN0IGNvbXBvbmVudCBpbnN0YW5jZSBpcyBpbnN0YW50aWF0ZWQgb3IgaG90
IHJlbG9hZGVkLlxuXHRcblx0ICBzZWxlY3RvckZhY3RvcnkgcmV0dXJucyBhIGZpbmFsIHByb3Bz
IHNlbGVjdG9yIGZyb20gaXRzIG1hcFN0YXRlVG9Qcm9wcyxcblx0ICBtYXBTdGF0ZVRvUHJvcHNG
YWN0b3JpZXMsIG1hcERpc3BhdGNoVG9Qcm9wcywgbWFwRGlzcGF0Y2hUb1Byb3BzRmFjdG9yaWVz
LCBtZXJnZVByb3BzLFxuXHQgIG1lcmdlUHJvcHNGYWN0b3JpZXMsIGFuZCBwdXJlIGFyZ3MuXG5c
dFxuXHQgIFRoZSByZXN1bHRpbmcgZmluYWwgcHJvcHMgc2VsZWN0b3IgaXMgY2FsbGVkIGJ5IHRo
ZSBDb25uZWN0IGNvbXBvbmVudCBpbnN0YW5jZSB3aGVuZXZlclxuXHQgIGl0IHJlY2VpdmVzIG5l
dyBwcm9wcyBvciBzdG9yZSBzdGF0ZS5cblx0ICovXG5cdFxuXHRmdW5jdGlvbiBtYXRjaChhcmcs
IGZhY3RvcmllcywgbmFtZSkge1xuXHQgIGZvciAodmFyIGkgPSBmYWN0b3JpZXMubGVuZ3RoIC0g
MTsgaSA+PSAwOyBpLS0pIHtcblx0ICAgIHZhciByZXN1bHQgPSBmYWN0b3JpZXNbaV0oYXJnKTtc
blx0ICAgIGlmIChyZXN1bHQpIHJldHVybiByZXN1bHQ7XG5cdCAgfVxuXHRcblx0ICByZXR1cm4g
ZnVuY3Rpb24gKGRpc3BhdGNoLCBvcHRpb25zKSB7XG5cdCAgICB0aHJvdyBuZXcgRXJyb3IoJ0lu
dmFsaWQgdmFsdWUgb2YgdHlwZSAnICsgdHlwZW9mIGFyZyArICcgZm9yICcgKyBuYW1lICsgJyBh
cmd1bWVudCB3aGVuIGNvbm5lY3RpbmcgY29tcG9uZW50ICcgKyBvcHRpb25zLndyYXBwZWRDb21w
b25lbnROYW1lICsgJy4nKTtcblx0ICB9O1xuXHR9XG5cdFxuXHRmdW5jdGlvbiBzdHJpY3RFcXVh
bChhLCBiKSB7XG5cdCAgcmV0dXJuIGEgPT09IGI7XG5cdH1cblx0XG5cdC8vIGNyZWF0ZUNvbm5l
Y3Qgd2l0aCBkZWZhdWx0IGFyZ3MgYnVpbGRzIHRoZSAnb2ZmaWNpYWwnIGNvbm5lY3QgYmVoYXZp
b3IuIENhbGxpbmcgaXQgd2l0aFxuXHQvLyBkaWZmZXJlbnQgb3B0aW9ucyBvcGVucyB1cCBzb21l
IHRlc3RpbmcgYW5kIGV4dGVuc2liaWxpdHkgc2NlbmFyaW9zXG5cdGZ1bmN0aW9uIGNyZWF0ZUNv
bm5lY3QoKSB7XG5cdCAgdmFyIF9yZWYgPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiBhcmd1bWVu
dHNbMF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1swXSA6IHt9LFxuXHQgICAgICBfcmVmJGNv
bm5lY3RIT0MgPSBfcmVmLmNvbm5lY3RIT0MsXG5cdCAgICAgIGNvbm5lY3RIT0MgPSBfcmVmJGNv
bm5lY3RIT0MgPT09IHVuZGVmaW5lZCA/IF9jb25uZWN0QWR2YW5jZWQyLmRlZmF1bHQgOiBfcmVm
JGNvbm5lY3RIT0MsXG5cdCAgICAgIF9yZWYkbWFwU3RhdGVUb1Byb3BzRiA9IF9yZWYubWFwU3Rh
dGVUb1Byb3BzRmFjdG9yaWVzLFxuXHQgICAgICBtYXBTdGF0ZVRvUHJvcHNGYWN0b3JpZXMgPSBf
cmVmJG1hcFN0YXRlVG9Qcm9wc0YgPT09IHVuZGVmaW5lZCA/IF9tYXBTdGF0ZVRvUHJvcHMyLmRl
ZmF1bHQgOiBfcmVmJG1hcFN0YXRlVG9Qcm9wc0YsXG5cdCAgICAgIF9yZWYkbWFwRGlzcGF0Y2hU
b1BybyA9IF9yZWYubWFwRGlzcGF0Y2hUb1Byb3BzRmFjdG9yaWVzLFxuXHQgICAgICBtYXBEaXNw
YXRjaFRvUHJvcHNGYWN0b3JpZXMgPSBfcmVmJG1hcERpc3BhdGNoVG9Qcm8gPT09IHVuZGVmaW5l
ZCA/IF9tYXBEaXNwYXRjaFRvUHJvcHMyLmRlZmF1bHQgOiBfcmVmJG1hcERpc3BhdGNoVG9Qcm8s
XG5cdCAgICAgIF9yZWYkbWVyZ2VQcm9wc0ZhY3RvciA9IF9yZWYubWVyZ2VQcm9wc0ZhY3Rvcmll
cyxcblx0ICAgICAgbWVyZ2VQcm9wc0ZhY3RvcmllcyA9IF9yZWYkbWVyZ2VQcm9wc0ZhY3RvciA9
PT0gdW5kZWZpbmVkID8gX21lcmdlUHJvcHMyLmRlZmF1bHQgOiBfcmVmJG1lcmdlUHJvcHNGYWN0
b3IsXG5cdCAgICAgIF9yZWYkc2VsZWN0b3JGYWN0b3J5ID0gX3JlZi5zZWxlY3RvckZhY3Rvcnks
XG5cdCAgICAgIHNlbGVjdG9yRmFjdG9yeSA9IF9yZWYkc2VsZWN0b3JGYWN0b3J5ID09PSB1bmRl
ZmluZWQgPyBfc2VsZWN0b3JGYWN0b3J5Mi5kZWZhdWx0IDogX3JlZiRzZWxlY3RvckZhY3Rvcnk7
XG5cdFxuXHQgIHJldHVybiBmdW5jdGlvbiBjb25uZWN0KG1hcFN0YXRlVG9Qcm9wcywgbWFwRGlz
cGF0Y2hUb1Byb3BzLCBtZXJnZVByb3BzKSB7XG5cdCAgICB2YXIgX3JlZjIgPSBhcmd1bWVudHMu
bGVuZ3RoID4gMyAmJiBhcmd1bWVudHNbM10gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1szXSA6
IHt9LFxuXHQgICAgICAgIF9yZWYyJHB1cmUgPSBfcmVmMi5wdXJlLFxuXHQgICAgICAgIHB1cmUg
PSBfcmVmMiRwdXJlID09PSB1bmRlZmluZWQgPyB0cnVlIDogX3JlZjIkcHVyZSxcblx0ICAgICAg
ICBfcmVmMiRhcmVTdGF0ZXNFcXVhbCA9IF9yZWYyLmFyZVN0YXRlc0VxdWFsLFxuXHQgICAgICAg
IGFyZVN0YXRlc0VxdWFsID0gX3JlZjIkYXJlU3RhdGVzRXF1YWwgPT09IHVuZGVmaW5lZCA/IHN0
cmljdEVxdWFsIDogX3JlZjIkYXJlU3RhdGVzRXF1YWwsXG5cdCAgICAgICAgX3JlZjIkYXJlT3du
UHJvcHNFcXVhID0gX3JlZjIuYXJlT3duUHJvcHNFcXVhbCxcblx0ICAgICAgICBhcmVPd25Qcm9w
c0VxdWFsID0gX3JlZjIkYXJlT3duUHJvcHNFcXVhID09PSB1bmRlZmluZWQgPyBfc2hhbGxvd0Vx
dWFsMi5kZWZhdWx0IDogX3JlZjIkYXJlT3duUHJvcHNFcXVhLFxuXHQgICAgICAgIF9yZWYyJGFy
ZVN0YXRlUHJvcHNFcSA9IF9yZWYyLmFyZVN0YXRlUHJvcHNFcXVhbCxcblx0ICAgICAgICBhcmVT
dGF0ZVByb3BzRXF1YWwgPSBfcmVmMiRhcmVTdGF0ZVByb3BzRXEgPT09IHVuZGVmaW5lZCA/IF9z
aGFsbG93RXF1YWwyLmRlZmF1bHQgOiBfcmVmMiRhcmVTdGF0ZVByb3BzRXEsXG5cdCAgICAgICAg
X3JlZjIkYXJlTWVyZ2VkUHJvcHNFID0gX3JlZjIuYXJlTWVyZ2VkUHJvcHNFcXVhbCxcblx0ICAg
ICAgICBhcmVNZXJnZWRQcm9wc0VxdWFsID0gX3JlZjIkYXJlTWVyZ2VkUHJvcHNFID09PSB1bmRl
ZmluZWQgPyBfc2hhbGxvd0VxdWFsMi5kZWZhdWx0IDogX3JlZjIkYXJlTWVyZ2VkUHJvcHNFLFxu
XHQgICAgICAgIGV4dHJhT3B0aW9ucyA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhfcmVmMiwg
WydwdXJlJywgJ2FyZVN0YXRlc0VxdWFsJywgJ2FyZU93blByb3BzRXF1YWwnLCAnYXJlU3RhdGVQ
cm9wc0VxdWFsJywgJ2FyZU1lcmdlZFByb3BzRXF1YWwnXSk7XG5cdFxuXHQgICAgdmFyIGluaXRN
YXBTdGF0ZVRvUHJvcHMgPSBtYXRjaChtYXBTdGF0ZVRvUHJvcHMsIG1hcFN0YXRlVG9Qcm9wc0Zh
Y3RvcmllcywgJ21hcFN0YXRlVG9Qcm9wcycpO1xuXHQgICAgdmFyIGluaXRNYXBEaXNwYXRjaFRv
UHJvcHMgPSBtYXRjaChtYXBEaXNwYXRjaFRvUHJvcHMsIG1hcERpc3BhdGNoVG9Qcm9wc0ZhY3Rv
cmllcywgJ21hcERpc3BhdGNoVG9Qcm9wcycpO1xuXHQgICAgdmFyIGluaXRNZXJnZVByb3BzID0g
bWF0Y2gobWVyZ2VQcm9wcywgbWVyZ2VQcm9wc0ZhY3RvcmllcywgJ21lcmdlUHJvcHMnKTtcblx0
XG5cdCAgICByZXR1cm4gY29ubmVjdEhPQyhzZWxlY3RvckZhY3RvcnksIF9leHRlbmRzKHtcblx0
ICAgICAgLy8gdXNlZCBpbiBlcnJvciBtZXNzYWdlc1xuXHQgICAgICBtZXRob2ROYW1lOiAnY29u
bmVjdCcsXG5cdFxuXHQgICAgICAvLyB1c2VkIHRvIGNvbXB1dGUgQ29ubmVjdCdzIGRpc3BsYXlO
YW1lIGZyb20gdGhlIHdyYXBwZWQgY29tcG9uZW50J3MgZGlzcGxheU5hbWUuXG5cdCAgICAgIGdl
dERpc3BsYXlOYW1lOiBmdW5jdGlvbiBnZXREaXNwbGF5TmFtZShuYW1lKSB7XG5cdCAgICAgICAg
cmV0dXJuICdDb25uZWN0KCcgKyBuYW1lICsgJyknO1xuXHQgICAgICB9LFxuXHRcblx0ICAgICAg
Ly8gaWYgbWFwU3RhdGVUb1Byb3BzIGlzIGZhbHN5LCB0aGUgQ29ubmVjdCBjb21wb25lbnQgZG9l
c24ndCBzdWJzY3JpYmUgdG8gc3RvcmUgc3RhdGUgY2hhbmdlc1xuXHQgICAgICBzaG91bGRIYW5k
bGVTdGF0ZUNoYW5nZXM6IEJvb2xlYW4obWFwU3RhdGVUb1Byb3BzKSxcblx0XG5cdCAgICAgIC8v
IHBhc3NlZCB0aHJvdWdoIHRvIHNlbGVjdG9yRmFjdG9yeVxuXHQgICAgICBpbml0TWFwU3RhdGVU
b1Byb3BzOiBpbml0TWFwU3RhdGVUb1Byb3BzLFxuXHQgICAgICBpbml0TWFwRGlzcGF0Y2hUb1By
b3BzOiBpbml0TWFwRGlzcGF0Y2hUb1Byb3BzLFxuXHQgICAgICBpbml0TWVyZ2VQcm9wczogaW5p
dE1lcmdlUHJvcHMsXG5cdCAgICAgIHB1cmU6IHB1cmUsXG5cdCAgICAgIGFyZVN0YXRlc0VxdWFs
OiBhcmVTdGF0ZXNFcXVhbCxcblx0ICAgICAgYXJlT3duUHJvcHNFcXVhbDogYXJlT3duUHJvcHNF
cXVhbCxcblx0ICAgICAgYXJlU3RhdGVQcm9wc0VxdWFsOiBhcmVTdGF0ZVByb3BzRXF1YWwsXG5c
dCAgICAgIGFyZU1lcmdlZFByb3BzRXF1YWw6IGFyZU1lcmdlZFByb3BzRXF1YWxcblx0XG5cdCAg
ICB9LCBleHRyYU9wdGlvbnMpKTtcblx0ICB9O1xuXHR9XG5cdFxuXHRleHBvcnRzLmRlZmF1bHQg
PSBjcmVhdGVDb25uZWN0KCk7XG5cbi8qKiovIH0sXG4vKiAxODkgKi9cbi8qKiovIGZ1bmN0aW9u
KG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdCd1c2Ugc3RyaWN0
Jztcblx0XG5cdGV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5cdGV4cG9ydHMud2hlbk1hcERp
c3BhdGNoVG9Qcm9wc0lzRnVuY3Rpb24gPSB3aGVuTWFwRGlzcGF0Y2hUb1Byb3BzSXNGdW5jdGlv
bjtcblx0ZXhwb3J0cy53aGVuTWFwRGlzcGF0Y2hUb1Byb3BzSXNNaXNzaW5nID0gd2hlbk1hcERp
c3BhdGNoVG9Qcm9wc0lzTWlzc2luZztcblx0ZXhwb3J0cy53aGVuTWFwRGlzcGF0Y2hUb1Byb3Bz
SXNPYmplY3QgPSB3aGVuTWFwRGlzcGF0Y2hUb1Byb3BzSXNPYmplY3Q7XG5cdFxuXHR2YXIgX3Jl
ZHV4ID0gX193ZWJwYWNrX3JlcXVpcmVfXygzMCk7XG5cdFxuXHR2YXIgX3dyYXBNYXBUb1Byb3Bz
ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg4MCk7XG5cdFxuXHRmdW5jdGlvbiB3aGVuTWFwRGlzcGF0
Y2hUb1Byb3BzSXNGdW5jdGlvbihtYXBEaXNwYXRjaFRvUHJvcHMpIHtcblx0ICByZXR1cm4gdHlw
ZW9mIG1hcERpc3BhdGNoVG9Qcm9wcyA9PT0gJ2Z1bmN0aW9uJyA/ICgwLCBfd3JhcE1hcFRvUHJv
cHMud3JhcE1hcFRvUHJvcHNGdW5jKShtYXBEaXNwYXRjaFRvUHJvcHMsICdtYXBEaXNwYXRjaFRv
UHJvcHMnKSA6IHVuZGVmaW5lZDtcblx0fVxuXHRcblx0ZnVuY3Rpb24gd2hlbk1hcERpc3BhdGNo
VG9Qcm9wc0lzTWlzc2luZyhtYXBEaXNwYXRjaFRvUHJvcHMpIHtcblx0ICByZXR1cm4gIW1hcERp
c3BhdGNoVG9Qcm9wcyA/ICgwLCBfd3JhcE1hcFRvUHJvcHMud3JhcE1hcFRvUHJvcHNDb25zdGFu
dCkoZnVuY3Rpb24gKGRpc3BhdGNoKSB7XG5cdCAgICByZXR1cm4geyBkaXNwYXRjaDogZGlzcGF0
Y2ggfTtcblx0ICB9KSA6IHVuZGVmaW5lZDtcblx0fVxuXHRcblx0ZnVuY3Rpb24gd2hlbk1hcERp
c3BhdGNoVG9Qcm9wc0lzT2JqZWN0KG1hcERpc3BhdGNoVG9Qcm9wcykge1xuXHQgIHJldHVybiBt
YXBEaXNwYXRjaFRvUHJvcHMgJiYgdHlwZW9mIG1hcERpc3BhdGNoVG9Qcm9wcyA9PT0gJ29iamVj
dCcgPyAoMCwgX3dyYXBNYXBUb1Byb3BzLndyYXBNYXBUb1Byb3BzQ29uc3RhbnQpKGZ1bmN0aW9u
IChkaXNwYXRjaCkge1xuXHQgICAgcmV0dXJuICgwLCBfcmVkdXguYmluZEFjdGlvbkNyZWF0b3Jz
KShtYXBEaXNwYXRjaFRvUHJvcHMsIGRpc3BhdGNoKTtcblx0ICB9KSA6IHVuZGVmaW5lZDtcblx0
fVxuXHRcblx0ZXhwb3J0cy5kZWZhdWx0ID0gW3doZW5NYXBEaXNwYXRjaFRvUHJvcHNJc0Z1bmN0
aW9uLCB3aGVuTWFwRGlzcGF0Y2hUb1Byb3BzSXNNaXNzaW5nLCB3aGVuTWFwRGlzcGF0Y2hUb1By
b3BzSXNPYmplY3RdO1xuXG4vKioqLyB9LFxuLyogMTkwICovXG4vKioqLyBmdW5jdGlvbihtb2R1
bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQndXNlIHN0cmljdCc7XG5c
dFxuXHRleHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuXHRleHBvcnRzLndoZW5NYXBTdGF0ZVRv
UHJvcHNJc0Z1bmN0aW9uID0gd2hlbk1hcFN0YXRlVG9Qcm9wc0lzRnVuY3Rpb247XG5cdGV4cG9y
dHMud2hlbk1hcFN0YXRlVG9Qcm9wc0lzTWlzc2luZyA9IHdoZW5NYXBTdGF0ZVRvUHJvcHNJc01p
c3Npbmc7XG5cdFxuXHR2YXIgX3dyYXBNYXBUb1Byb3BzID0gX193ZWJwYWNrX3JlcXVpcmVfXyg4
MCk7XG5cdFxuXHRmdW5jdGlvbiB3aGVuTWFwU3RhdGVUb1Byb3BzSXNGdW5jdGlvbihtYXBTdGF0
ZVRvUHJvcHMpIHtcblx0ICByZXR1cm4gdHlwZW9mIG1hcFN0YXRlVG9Qcm9wcyA9PT0gJ2Z1bmN0
aW9uJyA/ICgwLCBfd3JhcE1hcFRvUHJvcHMud3JhcE1hcFRvUHJvcHNGdW5jKShtYXBTdGF0ZVRv
UHJvcHMsICdtYXBTdGF0ZVRvUHJvcHMnKSA6IHVuZGVmaW5lZDtcblx0fVxuXHRcblx0ZnVuY3Rp
b24gd2hlbk1hcFN0YXRlVG9Qcm9wc0lzTWlzc2luZyhtYXBTdGF0ZVRvUHJvcHMpIHtcblx0ICBy
ZXR1cm4gIW1hcFN0YXRlVG9Qcm9wcyA/ICgwLCBfd3JhcE1hcFRvUHJvcHMud3JhcE1hcFRvUHJv
cHNDb25zdGFudCkoZnVuY3Rpb24gKCkge1xuXHQgICAgcmV0dXJuIHt9O1xuXHQgIH0pIDogdW5k
ZWZpbmVkO1xuXHR9XG5cdFxuXHRleHBvcnRzLmRlZmF1bHQgPSBbd2hlbk1hcFN0YXRlVG9Qcm9w
c0lzRnVuY3Rpb24sIHdoZW5NYXBTdGF0ZVRvUHJvcHNJc01pc3NpbmddO1xuXG4vKioqLyB9LFxu
LyogMTkxICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1
aXJlX18pIHtcblxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHRleHBvcnRzLl9fZXNNb2R1bGUgPSB0
cnVlO1xuXHRcblx0dmFyIF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiAodGFy
Z2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBz
b3VyY2UgPSBhcmd1bWVudHNbaV07IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsgaWYgKE9iamVj
dC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsgdGFyZ2V0W2tl
eV0gPSBzb3VyY2Vba2V5XTsgfSB9IH0gcmV0dXJuIHRhcmdldDsgfTtcblx0XG5cdGV4cG9ydHMu
ZGVmYXVsdE1lcmdlUHJvcHMgPSBkZWZhdWx0TWVyZ2VQcm9wcztcblx0ZXhwb3J0cy53cmFwTWVy
Z2VQcm9wc0Z1bmMgPSB3cmFwTWVyZ2VQcm9wc0Z1bmM7XG5cdGV4cG9ydHMud2hlbk1lcmdlUHJv
cHNJc0Z1bmN0aW9uID0gd2hlbk1lcmdlUHJvcHNJc0Z1bmN0aW9uO1xuXHRleHBvcnRzLndoZW5N
ZXJnZVByb3BzSXNPbWl0dGVkID0gd2hlbk1lcmdlUHJvcHNJc09taXR0ZWQ7XG5cdFxuXHR2YXIg
X3ZlcmlmeVBsYWluT2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg4Myk7XG5cdFxuXHR2YXIg
X3ZlcmlmeVBsYWluT2JqZWN0MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3ZlcmlmeVBsYWlu
T2JqZWN0KTtcblx0XG5cdGZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJl
dHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5c
dFxuXHRmdW5jdGlvbiBkZWZhdWx0TWVyZ2VQcm9wcyhzdGF0ZVByb3BzLCBkaXNwYXRjaFByb3Bz
LCBvd25Qcm9wcykge1xuXHQgIHJldHVybiBfZXh0ZW5kcyh7fSwgb3duUHJvcHMsIHN0YXRlUHJv
cHMsIGRpc3BhdGNoUHJvcHMpO1xuXHR9XG5cdFxuXHRmdW5jdGlvbiB3cmFwTWVyZ2VQcm9wc0Z1
bmMobWVyZ2VQcm9wcykge1xuXHQgIHJldHVybiBmdW5jdGlvbiBpbml0TWVyZ2VQcm9wc1Byb3h5
KGRpc3BhdGNoLCBfcmVmKSB7XG5cdCAgICB2YXIgZGlzcGxheU5hbWUgPSBfcmVmLmRpc3BsYXlO
YW1lLFxuXHQgICAgICAgIHB1cmUgPSBfcmVmLnB1cmUsXG5cdCAgICAgICAgYXJlTWVyZ2VkUHJv
cHNFcXVhbCA9IF9yZWYuYXJlTWVyZ2VkUHJvcHNFcXVhbDtcblx0XG5cdCAgICB2YXIgaGFzUnVu
T25jZSA9IGZhbHNlO1xuXHQgICAgdmFyIG1lcmdlZFByb3BzID0gdm9pZCAwO1xuXHRcblx0ICAg
IHJldHVybiBmdW5jdGlvbiBtZXJnZVByb3BzUHJveHkoc3RhdGVQcm9wcywgZGlzcGF0Y2hQcm9w
cywgb3duUHJvcHMpIHtcblx0ICAgICAgdmFyIG5leHRNZXJnZWRQcm9wcyA9IG1lcmdlUHJvcHMo
c3RhdGVQcm9wcywgZGlzcGF0Y2hQcm9wcywgb3duUHJvcHMpO1xuXHRcblx0ICAgICAgaWYgKGhh
c1J1bk9uY2UpIHtcblx0ICAgICAgICBpZiAoIXB1cmUgfHwgIWFyZU1lcmdlZFByb3BzRXF1YWwo
bmV4dE1lcmdlZFByb3BzLCBtZXJnZWRQcm9wcykpIG1lcmdlZFByb3BzID0gbmV4dE1lcmdlZFBy
b3BzO1xuXHQgICAgICB9IGVsc2Uge1xuXHQgICAgICAgIGhhc1J1bk9uY2UgPSB0cnVlO1xuXHQg
ICAgICAgIG1lcmdlZFByb3BzID0gbmV4dE1lcmdlZFByb3BzO1xuXHRcblx0ICAgICAgICBpZiAo
ZmFsc2UpICgwLCBfdmVyaWZ5UGxhaW5PYmplY3QyLmRlZmF1bHQpKG1lcmdlZFByb3BzLCBkaXNw
bGF5TmFtZSwgJ21lcmdlUHJvcHMnKTtcblx0ICAgICAgfVxuXHRcblx0ICAgICAgcmV0dXJuIG1l
cmdlZFByb3BzO1xuXHQgICAgfTtcblx0ICB9O1xuXHR9XG5cdFxuXHRmdW5jdGlvbiB3aGVuTWVy
Z2VQcm9wc0lzRnVuY3Rpb24obWVyZ2VQcm9wcykge1xuXHQgIHJldHVybiB0eXBlb2YgbWVyZ2VQ
cm9wcyA9PT0gJ2Z1bmN0aW9uJyA/IHdyYXBNZXJnZVByb3BzRnVuYyhtZXJnZVByb3BzKSA6IHVu
ZGVmaW5lZDtcblx0fVxuXHRcblx0ZnVuY3Rpb24gd2hlbk1lcmdlUHJvcHNJc09taXR0ZWQobWVy
Z2VQcm9wcykge1xuXHQgIHJldHVybiAhbWVyZ2VQcm9wcyA/IGZ1bmN0aW9uICgpIHtcblx0ICAg
IHJldHVybiBkZWZhdWx0TWVyZ2VQcm9wcztcblx0ICB9IDogdW5kZWZpbmVkO1xuXHR9XG5cdFxu
XHRleHBvcnRzLmRlZmF1bHQgPSBbd2hlbk1lcmdlUHJvcHNJc0Z1bmN0aW9uLCB3aGVuTWVyZ2VQ
cm9wc0lzT21pdHRlZF07XG5cbi8qKiovIH0sXG4vKiAxOTIgKi9cbi8qKiovIGZ1bmN0aW9uKG1v
ZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdCd1c2Ugc3RyaWN0Jztc
blx0XG5cdGV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5cdGV4cG9ydHMuaW1wdXJlRmluYWxQ
cm9wc1NlbGVjdG9yRmFjdG9yeSA9IGltcHVyZUZpbmFsUHJvcHNTZWxlY3RvckZhY3Rvcnk7XG5c
dGV4cG9ydHMucHVyZUZpbmFsUHJvcHNTZWxlY3RvckZhY3RvcnkgPSBwdXJlRmluYWxQcm9wc1Nl
bGVjdG9yRmFjdG9yeTtcblx0ZXhwb3J0cy5kZWZhdWx0ID0gZmluYWxQcm9wc1NlbGVjdG9yRmFj
dG9yeTtcblx0XG5cdHZhciBfdmVyaWZ5U3Vic2VsZWN0b3JzID0gX193ZWJwYWNrX3JlcXVpcmVf
XygxOTMpO1xuXHRcblx0dmFyIF92ZXJpZnlTdWJzZWxlY3RvcnMyID0gX2ludGVyb3BSZXF1aXJl
RGVmYXVsdChfdmVyaWZ5U3Vic2VsZWN0b3JzKTtcblx0XG5cdGZ1bmN0aW9uIF9pbnRlcm9wUmVx
dWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7
IGRlZmF1bHQ6IG9iaiB9OyB9XG5cdFxuXHRmdW5jdGlvbiBfb2JqZWN0V2l0aG91dFByb3BlcnRp
ZXMob2JqLCBrZXlzKSB7IHZhciB0YXJnZXQgPSB7fTsgZm9yICh2YXIgaSBpbiBvYmopIHsgaWYg
KGtleXMuaW5kZXhPZihpKSA+PSAwKSBjb250aW51ZTsgaWYgKCFPYmplY3QucHJvdG90eXBlLmhh
c093blByb3BlcnR5LmNhbGwob2JqLCBpKSkgY29udGludWU7IHRhcmdldFtpXSA9IG9ialtpXTsg
fSByZXR1cm4gdGFyZ2V0OyB9XG5cdFxuXHRmdW5jdGlvbiBpbXB1cmVGaW5hbFByb3BzU2VsZWN0
b3JGYWN0b3J5KG1hcFN0YXRlVG9Qcm9wcywgbWFwRGlzcGF0Y2hUb1Byb3BzLCBtZXJnZVByb3Bz
LCBkaXNwYXRjaCkge1xuXHQgIHJldHVybiBmdW5jdGlvbiBpbXB1cmVGaW5hbFByb3BzU2VsZWN0
b3Ioc3RhdGUsIG93blByb3BzKSB7XG5cdCAgICByZXR1cm4gbWVyZ2VQcm9wcyhtYXBTdGF0ZVRv
UHJvcHMoc3RhdGUsIG93blByb3BzKSwgbWFwRGlzcGF0Y2hUb1Byb3BzKGRpc3BhdGNoLCBvd25Q
cm9wcyksIG93blByb3BzKTtcblx0ICB9O1xuXHR9XG5cdFxuXHRmdW5jdGlvbiBwdXJlRmluYWxQ
cm9wc1NlbGVjdG9yRmFjdG9yeShtYXBTdGF0ZVRvUHJvcHMsIG1hcERpc3BhdGNoVG9Qcm9wcywg
bWVyZ2VQcm9wcywgZGlzcGF0Y2gsIF9yZWYpIHtcblx0ICB2YXIgYXJlU3RhdGVzRXF1YWwgPSBf
cmVmLmFyZVN0YXRlc0VxdWFsLFxuXHQgICAgICBhcmVPd25Qcm9wc0VxdWFsID0gX3JlZi5hcmVP
d25Qcm9wc0VxdWFsLFxuXHQgICAgICBhcmVTdGF0ZVByb3BzRXF1YWwgPSBfcmVmLmFyZVN0YXRl
UHJvcHNFcXVhbDtcblx0XG5cdCAgdmFyIGhhc1J1bkF0TGVhc3RPbmNlID0gZmFsc2U7XG5cdCAg
dmFyIHN0YXRlID0gdm9pZCAwO1xuXHQgIHZhciBvd25Qcm9wcyA9IHZvaWQgMDtcblx0ICB2YXIg
c3RhdGVQcm9wcyA9IHZvaWQgMDtcblx0ICB2YXIgZGlzcGF0Y2hQcm9wcyA9IHZvaWQgMDtcblx0
ICB2YXIgbWVyZ2VkUHJvcHMgPSB2b2lkIDA7XG5cdFxuXHQgIGZ1bmN0aW9uIGhhbmRsZUZpcnN0
Q2FsbChmaXJzdFN0YXRlLCBmaXJzdE93blByb3BzKSB7XG5cdCAgICBzdGF0ZSA9IGZpcnN0U3Rh
dGU7XG5cdCAgICBvd25Qcm9wcyA9IGZpcnN0T3duUHJvcHM7XG5cdCAgICBzdGF0ZVByb3BzID0g
bWFwU3RhdGVUb1Byb3BzKHN0YXRlLCBvd25Qcm9wcyk7XG5cdCAgICBkaXNwYXRjaFByb3BzID0g
bWFwRGlzcGF0Y2hUb1Byb3BzKGRpc3BhdGNoLCBvd25Qcm9wcyk7XG5cdCAgICBtZXJnZWRQcm9w
cyA9IG1lcmdlUHJvcHMoc3RhdGVQcm9wcywgZGlzcGF0Y2hQcm9wcywgb3duUHJvcHMpO1xuXHQg
ICAgaGFzUnVuQXRMZWFzdE9uY2UgPSB0cnVlO1xuXHQgICAgcmV0dXJuIG1lcmdlZFByb3BzO1xu
XHQgIH1cblx0XG5cdCAgZnVuY3Rpb24gaGFuZGxlTmV3UHJvcHNBbmROZXdTdGF0ZSgpIHtcblx0
ICAgIHN0YXRlUHJvcHMgPSBtYXBTdGF0ZVRvUHJvcHMoc3RhdGUsIG93blByb3BzKTtcblx0XG5c
dCAgICBpZiAobWFwRGlzcGF0Y2hUb1Byb3BzLmRlcGVuZHNPbk93blByb3BzKSBkaXNwYXRjaFBy
b3BzID0gbWFwRGlzcGF0Y2hUb1Byb3BzKGRpc3BhdGNoLCBvd25Qcm9wcyk7XG5cdFxuXHQgICAg
bWVyZ2VkUHJvcHMgPSBtZXJnZVByb3BzKHN0YXRlUHJvcHMsIGRpc3BhdGNoUHJvcHMsIG93blBy
b3BzKTtcblx0ICAgIHJldHVybiBtZXJnZWRQcm9wcztcblx0ICB9XG5cdFxuXHQgIGZ1bmN0aW9u
IGhhbmRsZU5ld1Byb3BzKCkge1xuXHQgICAgaWYgKG1hcFN0YXRlVG9Qcm9wcy5kZXBlbmRzT25P
d25Qcm9wcykgc3RhdGVQcm9wcyA9IG1hcFN0YXRlVG9Qcm9wcyhzdGF0ZSwgb3duUHJvcHMpO1xu
XHRcblx0ICAgIGlmIChtYXBEaXNwYXRjaFRvUHJvcHMuZGVwZW5kc09uT3duUHJvcHMpIGRpc3Bh
dGNoUHJvcHMgPSBtYXBEaXNwYXRjaFRvUHJvcHMoZGlzcGF0Y2gsIG93blByb3BzKTtcblx0XG5c
dCAgICBtZXJnZWRQcm9wcyA9IG1lcmdlUHJvcHMoc3RhdGVQcm9wcywgZGlzcGF0Y2hQcm9wcywg
b3duUHJvcHMpO1xuXHQgICAgcmV0dXJuIG1lcmdlZFByb3BzO1xuXHQgIH1cblx0XG5cdCAgZnVu
Y3Rpb24gaGFuZGxlTmV3U3RhdGUoKSB7XG5cdCAgICB2YXIgbmV4dFN0YXRlUHJvcHMgPSBtYXBT
dGF0ZVRvUHJvcHMoc3RhdGUsIG93blByb3BzKTtcblx0ICAgIHZhciBzdGF0ZVByb3BzQ2hhbmdl
ZCA9ICFhcmVTdGF0ZVByb3BzRXF1YWwobmV4dFN0YXRlUHJvcHMsIHN0YXRlUHJvcHMpO1xuXHQg
ICAgc3RhdGVQcm9wcyA9IG5leHRTdGF0ZVByb3BzO1xuXHRcblx0ICAgIGlmIChzdGF0ZVByb3Bz
Q2hhbmdlZCkgbWVyZ2VkUHJvcHMgPSBtZXJnZVByb3BzKHN0YXRlUHJvcHMsIGRpc3BhdGNoUHJv
cHMsIG93blByb3BzKTtcblx0XG5cdCAgICByZXR1cm4gbWVyZ2VkUHJvcHM7XG5cdCAgfVxuXHRc
blx0ICBmdW5jdGlvbiBoYW5kbGVTdWJzZXF1ZW50Q2FsbHMobmV4dFN0YXRlLCBuZXh0T3duUHJv
cHMpIHtcblx0ICAgIHZhciBwcm9wc0NoYW5nZWQgPSAhYXJlT3duUHJvcHNFcXVhbChuZXh0T3du
UHJvcHMsIG93blByb3BzKTtcblx0ICAgIHZhciBzdGF0ZUNoYW5nZWQgPSAhYXJlU3RhdGVzRXF1
YWwobmV4dFN0YXRlLCBzdGF0ZSk7XG5cdCAgICBzdGF0ZSA9IG5leHRTdGF0ZTtcblx0ICAgIG93
blByb3BzID0gbmV4dE93blByb3BzO1xuXHRcblx0ICAgIGlmIChwcm9wc0NoYW5nZWQgJiYgc3Rh
dGVDaGFuZ2VkKSByZXR1cm4gaGFuZGxlTmV3UHJvcHNBbmROZXdTdGF0ZSgpO1xuXHQgICAgaWYg
KHByb3BzQ2hhbmdlZCkgcmV0dXJuIGhhbmRsZU5ld1Byb3BzKCk7XG5cdCAgICBpZiAoc3RhdGVD
aGFuZ2VkKSByZXR1cm4gaGFuZGxlTmV3U3RhdGUoKTtcblx0ICAgIHJldHVybiBtZXJnZWRQcm9w
cztcblx0ICB9XG5cdFxuXHQgIHJldHVybiBmdW5jdGlvbiBwdXJlRmluYWxQcm9wc1NlbGVjdG9y
KG5leHRTdGF0ZSwgbmV4dE93blByb3BzKSB7XG5cdCAgICByZXR1cm4gaGFzUnVuQXRMZWFzdE9u
Y2UgPyBoYW5kbGVTdWJzZXF1ZW50Q2FsbHMobmV4dFN0YXRlLCBuZXh0T3duUHJvcHMpIDogaGFu
ZGxlRmlyc3RDYWxsKG5leHRTdGF0ZSwgbmV4dE93blByb3BzKTtcblx0ICB9O1xuXHR9XG5cdFxu
XHQvLyBUT0RPOiBBZGQgbW9yZSBjb21tZW50c1xuXHRcblx0Ly8gSWYgcHVyZSBpcyB0cnVlLCB0
aGUgc2VsZWN0b3IgcmV0dXJuZWQgYnkgc2VsZWN0b3JGYWN0b3J5IHdpbGwgbWVtb2l6ZSBpdHMg
cmVzdWx0cyxcblx0Ly8gYWxsb3dpbmcgY29ubmVjdEFkdmFuY2VkJ3Mgc2hvdWxkQ29tcG9uZW50
VXBkYXRlIHRvIHJldHVybiBmYWxzZSBpZiBmaW5hbFxuXHQvLyBwcm9wcyBoYXZlIG5vdCBjaGFu
Z2VkLiBJZiBmYWxzZSwgdGhlIHNlbGVjdG9yIHdpbGwgYWx3YXlzIHJldHVybiBhIG5ld1xuXHQv
LyBvYmplY3QgYW5kIHNob3VsZENvbXBvbmVudFVwZGF0ZSB3aWxsIGFsd2F5cyByZXR1cm4gdHJ1
ZS5cblx0XG5cdGZ1bmN0aW9uIGZpbmFsUHJvcHNTZWxlY3RvckZhY3RvcnkoZGlzcGF0Y2gsIF9y
ZWYyKSB7XG5cdCAgdmFyIGluaXRNYXBTdGF0ZVRvUHJvcHMgPSBfcmVmMi5pbml0TWFwU3RhdGVU
b1Byb3BzLFxuXHQgICAgICBpbml0TWFwRGlzcGF0Y2hUb1Byb3BzID0gX3JlZjIuaW5pdE1hcERp
c3BhdGNoVG9Qcm9wcyxcblx0ICAgICAgaW5pdE1lcmdlUHJvcHMgPSBfcmVmMi5pbml0TWVyZ2VQ
cm9wcyxcblx0ICAgICAgb3B0aW9ucyA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhfcmVmMiwg
Wydpbml0TWFwU3RhdGVUb1Byb3BzJywgJ2luaXRNYXBEaXNwYXRjaFRvUHJvcHMnLCAnaW5pdE1l
cmdlUHJvcHMnXSk7XG5cdFxuXHQgIHZhciBtYXBTdGF0ZVRvUHJvcHMgPSBpbml0TWFwU3RhdGVU
b1Byb3BzKGRpc3BhdGNoLCBvcHRpb25zKTtcblx0ICB2YXIgbWFwRGlzcGF0Y2hUb1Byb3BzID0g
aW5pdE1hcERpc3BhdGNoVG9Qcm9wcyhkaXNwYXRjaCwgb3B0aW9ucyk7XG5cdCAgdmFyIG1lcmdl
UHJvcHMgPSBpbml0TWVyZ2VQcm9wcyhkaXNwYXRjaCwgb3B0aW9ucyk7XG5cdFxuXHQgIGlmIChm
YWxzZSkge1xuXHQgICAgKDAsIF92ZXJpZnlTdWJzZWxlY3RvcnMyLmRlZmF1bHQpKG1hcFN0YXRl
VG9Qcm9wcywgbWFwRGlzcGF0Y2hUb1Byb3BzLCBtZXJnZVByb3BzLCBvcHRpb25zLmRpc3BsYXlO
YW1lKTtcblx0ICB9XG5cdFxuXHQgIHZhciBzZWxlY3RvckZhY3RvcnkgPSBvcHRpb25zLnB1cmUg
PyBwdXJlRmluYWxQcm9wc1NlbGVjdG9yRmFjdG9yeSA6IGltcHVyZUZpbmFsUHJvcHNTZWxlY3Rv
ckZhY3Rvcnk7XG5cdFxuXHQgIHJldHVybiBzZWxlY3RvckZhY3RvcnkobWFwU3RhdGVUb1Byb3Bz
LCBtYXBEaXNwYXRjaFRvUHJvcHMsIG1lcmdlUHJvcHMsIGRpc3BhdGNoLCBvcHRpb25zKTtcblx0
fVxuXG4vKioqLyB9LFxuLyogMTkzICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMs
IF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHRleHBvcnRz
Ll9fZXNNb2R1bGUgPSB0cnVlO1xuXHRleHBvcnRzLmRlZmF1bHQgPSB2ZXJpZnlTdWJzZWxlY3Rv
cnM7XG5cdFxuXHR2YXIgX3dhcm5pbmcgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDUwKTtcblx0XG5c
dHZhciBfd2FybmluZzIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF93YXJuaW5nKTtcblx0XG5c
dGZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2Jq
Ll9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cdFxuXHRmdW5jdGlvbiB2
ZXJpZnkoc2VsZWN0b3IsIG1ldGhvZE5hbWUsIGRpc3BsYXlOYW1lKSB7XG5cdCAgaWYgKCFzZWxl
Y3Rvcikge1xuXHQgICAgdGhyb3cgbmV3IEVycm9yKCdVbmV4cGVjdGVkIHZhbHVlIGZvciAnICsg
bWV0aG9kTmFtZSArICcgaW4gJyArIGRpc3BsYXlOYW1lICsgJy4nKTtcblx0ICB9IGVsc2UgaWYg
KG1ldGhvZE5hbWUgPT09ICdtYXBTdGF0ZVRvUHJvcHMnIHx8IG1ldGhvZE5hbWUgPT09ICdtYXBE
aXNwYXRjaFRvUHJvcHMnKSB7XG5cdCAgICBpZiAoIXNlbGVjdG9yLmhhc093blByb3BlcnR5KCdk
ZXBlbmRzT25Pd25Qcm9wcycpKSB7XG5cdCAgICAgICgwLCBfd2FybmluZzIuZGVmYXVsdCkoJ1Ro
ZSBzZWxlY3RvciBmb3IgJyArIG1ldGhvZE5hbWUgKyAnIG9mICcgKyBkaXNwbGF5TmFtZSArICcg
ZGlkIG5vdCBzcGVjaWZ5IGEgdmFsdWUgZm9yIGRlcGVuZHNPbk93blByb3BzLicpO1xuXHQgICAg
fVxuXHQgIH1cblx0fVxuXHRcblx0ZnVuY3Rpb24gdmVyaWZ5U3Vic2VsZWN0b3JzKG1hcFN0YXRl
VG9Qcm9wcywgbWFwRGlzcGF0Y2hUb1Byb3BzLCBtZXJnZVByb3BzLCBkaXNwbGF5TmFtZSkge1xu
XHQgIHZlcmlmeShtYXBTdGF0ZVRvUHJvcHMsICdtYXBTdGF0ZVRvUHJvcHMnLCBkaXNwbGF5TmFt
ZSk7XG5cdCAgdmVyaWZ5KG1hcERpc3BhdGNoVG9Qcm9wcywgJ21hcERpc3BhdGNoVG9Qcm9wcycs
IGRpc3BsYXlOYW1lKTtcblx0ICB2ZXJpZnkobWVyZ2VQcm9wcywgJ21lcmdlUHJvcHMnLCBkaXNw
bGF5TmFtZSk7XG5cdH1cblxuLyoqKi8gfSxcbi8qIDE5NCAqL1xuLyoqKi8gZnVuY3Rpb24obW9k
dWxlLCBleHBvcnRzKSB7XG5cblx0XCJ1c2Ugc3RyaWN0XCI7XG5cdFxuXHRleHBvcnRzLl9fZXNN
b2R1bGUgPSB0cnVlO1xuXHRcblx0ZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBD
b25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0
aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIp
OyB9IH1cblx0XG5cdC8vIGVuY2Fwc3VsYXRlcyB0aGUgc3Vic2NyaXB0aW9uIGxvZ2ljIGZvciBj
b25uZWN0aW5nIGEgY29tcG9uZW50IHRvIHRoZSByZWR1eCBzdG9yZSwgYXNcblx0Ly8gd2VsbCBh
cyBuZXN0aW5nIHN1YnNjcmlwdGlvbnMgb2YgZGVzY2VuZGFudCBjb21wb25lbnRzLCBzbyB0aGF0
IHdlIGNhbiBlbnN1cmUgdGhlXG5cdC8vIGFuY2VzdG9yIGNvbXBvbmVudHMgcmUtcmVuZGVyIGJl
Zm9yZSBkZXNjZW5kYW50c1xuXHRcblx0dmFyIENMRUFSRUQgPSBudWxsO1xuXHR2YXIgbnVsbExp
c3RlbmVycyA9IHtcblx0ICBub3RpZnk6IGZ1bmN0aW9uIG5vdGlmeSgpIHt9XG5cdH07XG5cdFxu
XHRmdW5jdGlvbiBjcmVhdGVMaXN0ZW5lckNvbGxlY3Rpb24oKSB7XG5cdCAgLy8gdGhlIGN1cnJl
bnQvbmV4dCBwYXR0ZXJuIGlzIGNvcGllZCBmcm9tIHJlZHV4J3MgY3JlYXRlU3RvcmUgY29kZS5c
blx0ICAvLyBUT0RPOiByZWZhY3RvcitleHBvc2UgdGhhdCBjb2RlIHRvIGJlIHJldXNhYmxlIGhl
cmU/XG5cdCAgdmFyIGN1cnJlbnQgPSBbXTtcblx0ICB2YXIgbmV4dCA9IFtdO1xuXHRcblx0ICBy
ZXR1cm4ge1xuXHQgICAgY2xlYXI6IGZ1bmN0aW9uIGNsZWFyKCkge1xuXHQgICAgICBuZXh0ID0g
Q0xFQVJFRDtcblx0ICAgICAgY3VycmVudCA9IENMRUFSRUQ7XG5cdCAgICB9LFxuXHQgICAgbm90
aWZ5OiBmdW5jdGlvbiBub3RpZnkoKSB7XG5cdCAgICAgIHZhciBsaXN0ZW5lcnMgPSBjdXJyZW50
ID0gbmV4dDtcblx0ICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsaXN0ZW5lcnMubGVuZ3RoOyBp
KyspIHtcblx0ICAgICAgICBsaXN0ZW5lcnNbaV0oKTtcblx0ICAgICAgfVxuXHQgICAgfSxcblx0
ICAgIGdldDogZnVuY3Rpb24gZ2V0KCkge1xuXHQgICAgICByZXR1cm4gbmV4dDtcblx0ICAgIH0s
XG5cdCAgICBzdWJzY3JpYmU6IGZ1bmN0aW9uIHN1YnNjcmliZShsaXN0ZW5lcikge1xuXHQgICAg
ICB2YXIgaXNTdWJzY3JpYmVkID0gdHJ1ZTtcblx0ICAgICAgaWYgKG5leHQgPT09IGN1cnJlbnQp
IG5leHQgPSBjdXJyZW50LnNsaWNlKCk7XG5cdCAgICAgIG5leHQucHVzaChsaXN0ZW5lcik7XG5c
dFxuXHQgICAgICByZXR1cm4gZnVuY3Rpb24gdW5zdWJzY3JpYmUoKSB7XG5cdCAgICAgICAgaWYg
KCFpc1N1YnNjcmliZWQgfHwgY3VycmVudCA9PT0gQ0xFQVJFRCkgcmV0dXJuO1xuXHQgICAgICAg
IGlzU3Vic2NyaWJlZCA9IGZhbHNlO1xuXHRcblx0ICAgICAgICBpZiAobmV4dCA9PT0gY3VycmVu
dCkgbmV4dCA9IGN1cnJlbnQuc2xpY2UoKTtcblx0ICAgICAgICBuZXh0LnNwbGljZShuZXh0Lmlu
ZGV4T2YobGlzdGVuZXIpLCAxKTtcblx0ICAgICAgfTtcblx0ICAgIH1cblx0ICB9O1xuXHR9XG5c
dFxuXHR2YXIgU3Vic2NyaXB0aW9uID0gZnVuY3Rpb24gKCkge1xuXHQgIGZ1bmN0aW9uIFN1YnNj
cmlwdGlvbihzdG9yZSwgcGFyZW50U3ViLCBvblN0YXRlQ2hhbmdlKSB7XG5cdCAgICBfY2xhc3ND
YWxsQ2hlY2sodGhpcywgU3Vic2NyaXB0aW9uKTtcblx0XG5cdCAgICB0aGlzLnN0b3JlID0gc3Rv
cmU7XG5cdCAgICB0aGlzLnBhcmVudFN1YiA9IHBhcmVudFN1Yjtcblx0ICAgIHRoaXMub25TdGF0
ZUNoYW5nZSA9IG9uU3RhdGVDaGFuZ2U7XG5cdCAgICB0aGlzLnVuc3Vic2NyaWJlID0gbnVsbDtc
blx0ICAgIHRoaXMubGlzdGVuZXJzID0gbnVsbExpc3RlbmVycztcblx0ICB9XG5cdFxuXHQgIFN1
YnNjcmlwdGlvbi5wcm90b3R5cGUuYWRkTmVzdGVkU3ViID0gZnVuY3Rpb24gYWRkTmVzdGVkU3Vi
KGxpc3RlbmVyKSB7XG5cdCAgICB0aGlzLnRyeVN1YnNjcmliZSgpO1xuXHQgICAgcmV0dXJuIHRo
aXMubGlzdGVuZXJzLnN1YnNjcmliZShsaXN0ZW5lcik7XG5cdCAgfTtcblx0XG5cdCAgU3Vic2Ny
aXB0aW9uLnByb3RvdHlwZS5ub3RpZnlOZXN0ZWRTdWJzID0gZnVuY3Rpb24gbm90aWZ5TmVzdGVk
U3VicygpIHtcblx0ICAgIHRoaXMubGlzdGVuZXJzLm5vdGlmeSgpO1xuXHQgIH07XG5cdFxuXHQg
IFN1YnNjcmlwdGlvbi5wcm90b3R5cGUuaXNTdWJzY3JpYmVkID0gZnVuY3Rpb24gaXNTdWJzY3Jp
YmVkKCkge1xuXHQgICAgcmV0dXJuIEJvb2xlYW4odGhpcy51bnN1YnNjcmliZSk7XG5cdCAgfTtc
blx0XG5cdCAgU3Vic2NyaXB0aW9uLnByb3RvdHlwZS50cnlTdWJzY3JpYmUgPSBmdW5jdGlvbiB0
cnlTdWJzY3JpYmUoKSB7XG5cdCAgICBpZiAoIXRoaXMudW5zdWJzY3JpYmUpIHtcblx0ICAgICAg
dGhpcy51bnN1YnNjcmliZSA9IHRoaXMucGFyZW50U3ViID8gdGhpcy5wYXJlbnRTdWIuYWRkTmVz
dGVkU3ViKHRoaXMub25TdGF0ZUNoYW5nZSkgOiB0aGlzLnN0b3JlLnN1YnNjcmliZSh0aGlzLm9u
U3RhdGVDaGFuZ2UpO1xuXHRcblx0ICAgICAgdGhpcy5saXN0ZW5lcnMgPSBjcmVhdGVMaXN0ZW5l
ckNvbGxlY3Rpb24oKTtcblx0ICAgIH1cblx0ICB9O1xuXHRcblx0ICBTdWJzY3JpcHRpb24ucHJv
dG90eXBlLnRyeVVuc3Vic2NyaWJlID0gZnVuY3Rpb24gdHJ5VW5zdWJzY3JpYmUoKSB7XG5cdCAg
ICBpZiAodGhpcy51bnN1YnNjcmliZSkge1xuXHQgICAgICB0aGlzLnVuc3Vic2NyaWJlKCk7XG5c
dCAgICAgIHRoaXMudW5zdWJzY3JpYmUgPSBudWxsO1xuXHQgICAgICB0aGlzLmxpc3RlbmVycy5j
bGVhcigpO1xuXHQgICAgICB0aGlzLmxpc3RlbmVycyA9IG51bGxMaXN0ZW5lcnM7XG5cdCAgICB9
XG5cdCAgfTtcblx0XG5cdCAgcmV0dXJuIFN1YnNjcmlwdGlvbjtcblx0fSgpO1xuXHRcblx0ZXhw
b3J0cy5kZWZhdWx0ID0gU3Vic2NyaXB0aW9uO1xuXG4vKioqLyB9LFxuLyogMTk1ICovXG4vKioq
LyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHRl
eHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuXHRleHBvcnRzLmRlZmF1bHQgPSBzaGFsbG93RXF1
YWw7XG5cdHZhciBoYXNPd24gPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xuXHRc
blx0ZnVuY3Rpb24gaXMoeCwgeSkge1xuXHQgIGlmICh4ID09PSB5KSB7XG5cdCAgICByZXR1cm4g
eCAhPT0gMCB8fCB5ICE9PSAwIHx8IDEgLyB4ID09PSAxIC8geTtcblx0ICB9IGVsc2Uge1xuXHQg
ICAgcmV0dXJuIHggIT09IHggJiYgeSAhPT0geTtcblx0ICB9XG5cdH1cblx0XG5cdGZ1bmN0aW9u
IHNoYWxsb3dFcXVhbChvYmpBLCBvYmpCKSB7XG5cdCAgaWYgKGlzKG9iakEsIG9iakIpKSByZXR1
cm4gdHJ1ZTtcblx0XG5cdCAgaWYgKHR5cGVvZiBvYmpBICE9PSAnb2JqZWN0JyB8fCBvYmpBID09
PSBudWxsIHx8IHR5cGVvZiBvYmpCICE9PSAnb2JqZWN0JyB8fCBvYmpCID09PSBudWxsKSB7XG5c
dCAgICByZXR1cm4gZmFsc2U7XG5cdCAgfVxuXHRcblx0ICB2YXIga2V5c0EgPSBPYmplY3Qua2V5
cyhvYmpBKTtcblx0ICB2YXIga2V5c0IgPSBPYmplY3Qua2V5cyhvYmpCKTtcblx0XG5cdCAgaWYg
KGtleXNBLmxlbmd0aCAhPT0ga2V5c0IubGVuZ3RoKSByZXR1cm4gZmFsc2U7XG5cdFxuXHQgIGZv
ciAodmFyIGkgPSAwOyBpIDwga2V5c0EubGVuZ3RoOyBpKyspIHtcblx0ICAgIGlmICghaGFzT3du
LmNhbGwob2JqQiwga2V5c0FbaV0pIHx8ICFpcyhvYmpBW2tleXNBW2ldXSwgb2JqQltrZXlzQVtp
XV0pKSB7XG5cdCAgICAgIHJldHVybiBmYWxzZTtcblx0ICAgIH1cblx0ICB9XG5cdFxuXHQgIHJl
dHVybiB0cnVlO1xuXHR9XG5cbi8qKiovIH0sXG4vKiAxOTYgKi9cbi8qKiovIGZ1bmN0aW9uKG1v
ZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8vIEByZW1vdmUtb24t
ZWplY3QtYmVnaW5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAoYykgMjAxNS1wcmVzZW50LCBGYWNl
Ym9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNv
dXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBp
biB0aGVcblx0ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNv
dXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2Fu
IGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQg
Ki9cblx0Ly8gQHJlbW92ZS1vbi1lamVjdC1lbmRcblx0XG5cdGlmICh0eXBlb2YgUHJvbWlzZSA9
PT0gJ3VuZGVmaW5lZCcpIHtcblx0ICAvLyBSZWplY3Rpb24gdHJhY2tpbmcgcHJldmVudHMgYSBj
b21tb24gaXNzdWUgd2hlcmUgUmVhY3QgZ2V0cyBpbnRvIGFuXG5cdCAgLy8gaW5jb25zaXN0ZW50
IHN0YXRlIGR1ZSB0byBhbiBlcnJvciwgYnV0IGl0IGdldHMgc3dhbGxvd2VkIGJ5IGEgUHJvbWlz
ZSxcblx0ICAvLyBhbmQgdGhlIHVzZXIgaGFzIG5vIGlkZWEgd2hhdCBjYXVzZXMgUmVhY3QncyBl
cnJhdGljIGZ1dHVyZSBiZWhhdmlvci5cblx0ICBfX3dlYnBhY2tfcmVxdWlyZV9fKDIxMCkuZW5h
YmxlKCk7XG5cdCAgd2luZG93LlByb21pc2UgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIwOSk7XG5c
dH1cblx0XG5cdC8vIGZldGNoKCkgcG9seWZpbGwgZm9yIG1ha2luZyBBUEkgY2FsbHMuXG5cdF9f
d2VicGFja19yZXF1aXJlX18oMjEyKTtcblx0XG5cdC8vIE9iamVjdC5hc3NpZ24oKSBpcyBjb21t
b25seSB1c2VkIHdpdGggUmVhY3QuXG5cdC8vIEl0IHdpbGwgdXNlIHRoZSBuYXRpdmUgaW1wbGVt
ZW50YXRpb24gaWYgaXQncyBwcmVzZW50IGFuZCBpc24ndCBidWdneS5cblx0T2JqZWN0LmFzc2ln
biA9IF9fd2VicGFja19yZXF1aXJlX18oMjA4KTtcblxuXG4vKioqLyB9LFxuLyogMTk3ICovXG4v
KioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuXHQvKiBXRUJQQUNLIFZBUiBJTkpF
Q1RJT04gKi8oZnVuY3Rpb24oZ2xvYmFsKSB7XCJ1c2Ugc3RyaWN0XCI7XG5cdFxuXHQvLyBVc2Ug
dGhlIGZhc3Rlc3QgbWVhbnMgcG9zc2libGUgdG8gZXhlY3V0ZSBhIHRhc2sgaW4gaXRzIG93biB0
dXJuLCB3aXRoXG5cdC8vIHByaW9yaXR5IG92ZXIgb3RoZXIgZXZlbnRzIGluY2x1ZGluZyBJTywg
YW5pbWF0aW9uLCByZWZsb3csIGFuZCByZWRyYXdcblx0Ly8gZXZlbnRzIGluIGJyb3dzZXJzLlxu
XHQvL1xuXHQvLyBBbiBleGNlcHRpb24gdGhyb3duIGJ5IGEgdGFzayB3aWxsIHBlcm1hbmVudGx5
IGludGVycnVwdCB0aGUgcHJvY2Vzc2luZyBvZlxuXHQvLyBzdWJzZXF1ZW50IHRhc2tzLiBUaGUg
aGlnaGVyIGxldmVsIGBhc2FwYCBmdW5jdGlvbiBlbnN1cmVzIHRoYXQgaWYgYW5cblx0Ly8gZXhj
ZXB0aW9uIGlzIHRocm93biBieSBhIHRhc2ssIHRoYXQgdGhlIHRhc2sgcXVldWUgd2lsbCBjb250
aW51ZSBmbHVzaGluZyBhc1xuXHQvLyBzb29uIGFzIHBvc3NpYmxlLCBidXQgaWYgeW91IHVzZSBg
cmF3QXNhcGAgZGlyZWN0bHksIHlvdSBhcmUgcmVzcG9uc2libGUgdG9cblx0Ly8gZWl0aGVyIGVu
c3VyZSB0aGF0IG5vIGV4Y2VwdGlvbnMgYXJlIHRocm93biBmcm9tIHlvdXIgdGFzaywgb3IgdG8g
bWFudWFsbHlcblx0Ly8gY2FsbCBgcmF3QXNhcC5yZXF1ZXN0Rmx1c2hgIGlmIGFuIGV4Y2VwdGlv
biBpcyB0aHJvd24uXG5cdG1vZHVsZS5leHBvcnRzID0gcmF3QXNhcDtcblx0ZnVuY3Rpb24gcmF3
QXNhcCh0YXNrKSB7XG5cdCAgICBpZiAoIXF1ZXVlLmxlbmd0aCkge1xuXHQgICAgICAgIHJlcXVl
c3RGbHVzaCgpO1xuXHQgICAgICAgIGZsdXNoaW5nID0gdHJ1ZTtcblx0ICAgIH1cblx0ICAgIC8v
IEVxdWl2YWxlbnQgdG8gcHVzaCwgYnV0IGF2b2lkcyBhIGZ1bmN0aW9uIGNhbGwuXG5cdCAgICBx
dWV1ZVtxdWV1ZS5sZW5ndGhdID0gdGFzaztcblx0fVxuXHRcblx0dmFyIHF1ZXVlID0gW107XG5c
dC8vIE9uY2UgYSBmbHVzaCBoYXMgYmVlbiByZXF1ZXN0ZWQsIG5vIGZ1cnRoZXIgY2FsbHMgdG8g
YHJlcXVlc3RGbHVzaGAgYXJlXG5cdC8vIG5lY2Vzc2FyeSB1bnRpbCB0aGUgbmV4dCBgZmx1c2hg
IGNvbXBsZXRlcy5cblx0dmFyIGZsdXNoaW5nID0gZmFsc2U7XG5cdC8vIGByZXF1ZXN0Rmx1c2hg
IGlzIGFuIGltcGxlbWVudGF0aW9uLXNwZWNpZmljIG1ldGhvZCB0aGF0IGF0dGVtcHRzIHRvIGtp
Y2tcblx0Ly8gb2ZmIGEgYGZsdXNoYCBldmVudCBhcyBxdWlja2x5IGFzIHBvc3NpYmxlLiBgZmx1
c2hgIHdpbGwgYXR0ZW1wdCB0byBleGhhdXN0XG5cdC8vIHRoZSBldmVudCBxdWV1ZSBiZWZvcmUg
eWllbGRpbmcgdG8gdGhlIGJyb3dzZXIncyBvd24gZXZlbnQgbG9vcC5cblx0dmFyIHJlcXVlc3RG
bHVzaDtcblx0Ly8gVGhlIHBvc2l0aW9uIG9mIHRoZSBuZXh0IHRhc2sgdG8gZXhlY3V0ZSBpbiB0
aGUgdGFzayBxdWV1ZS4gVGhpcyBpc1xuXHQvLyBwcmVzZXJ2ZWQgYmV0d2VlbiBjYWxscyB0byBg
Zmx1c2hgIHNvIHRoYXQgaXQgY2FuIGJlIHJlc3VtZWQgaWZcblx0Ly8gYSB0YXNrIHRocm93cyBh
biBleGNlcHRpb24uXG5cdHZhciBpbmRleCA9IDA7XG5cdC8vIElmIGEgdGFzayBzY2hlZHVsZXMg
YWRkaXRpb25hbCB0YXNrcyByZWN1cnNpdmVseSwgdGhlIHRhc2sgcXVldWUgY2FuIGdyb3dcblx0
Ly8gdW5ib3VuZGVkLiBUbyBwcmV2ZW50IG1lbW9yeSBleGhhdXN0aW9uLCB0aGUgdGFzayBxdWV1
ZSB3aWxsIHBlcmlvZGljYWxseVxuXHQvLyB0cnVuY2F0ZSBhbHJlYWR5LWNvbXBsZXRlZCB0YXNr
cy5cblx0dmFyIGNhcGFjaXR5ID0gMTAyNDtcblx0XG5cdC8vIFRoZSBmbHVzaCBmdW5jdGlvbiBw
cm9jZXNzZXMgYWxsIHRhc2tzIHRoYXQgaGF2ZSBiZWVuIHNjaGVkdWxlZCB3aXRoXG5cdC8vIGBy
YXdBc2FwYCB1bmxlc3MgYW5kIHVudGlsIG9uZSBvZiB0aG9zZSB0YXNrcyB0aHJvd3MgYW4gZXhj
ZXB0aW9uLlxuXHQvLyBJZiBhIHRhc2sgdGhyb3dzIGFuIGV4Y2VwdGlvbiwgYGZsdXNoYCBlbnN1
cmVzIHRoYXQgaXRzIHN0YXRlIHdpbGwgcmVtYWluXG5cdC8vIGNvbnNpc3RlbnQgYW5kIHdpbGwg
cmVzdW1lIHdoZXJlIGl0IGxlZnQgb2ZmIHdoZW4gY2FsbGVkIGFnYWluLlxuXHQvLyBIb3dldmVy
LCBgZmx1c2hgIGRvZXMgbm90IG1ha2UgYW55IGFycmFuZ2VtZW50cyB0byBiZSBjYWxsZWQgYWdh
aW4gaWYgYW5cblx0Ly8gZXhjZXB0aW9uIGlzIHRocm93bi5cblx0ZnVuY3Rpb24gZmx1c2goKSB7
XG5cdCAgICB3aGlsZSAoaW5kZXggPCBxdWV1ZS5sZW5ndGgpIHtcblx0ICAgICAgICB2YXIgY3Vy
cmVudEluZGV4ID0gaW5kZXg7XG5cdCAgICAgICAgLy8gQWR2YW5jZSB0aGUgaW5kZXggYmVmb3Jl
IGNhbGxpbmcgdGhlIHRhc2suIFRoaXMgZW5zdXJlcyB0aGF0IHdlIHdpbGxcblx0ICAgICAgICAv
LyBiZWdpbiBmbHVzaGluZyBvbiB0aGUgbmV4dCB0YXNrIHRoZSB0YXNrIHRocm93cyBhbiBlcnJv
ci5cblx0ICAgICAgICBpbmRleCA9IGluZGV4ICsgMTtcblx0ICAgICAgICBxdWV1ZVtjdXJyZW50
SW5kZXhdLmNhbGwoKTtcblx0ICAgICAgICAvLyBQcmV2ZW50IGxlYWtpbmcgbWVtb3J5IGZvciBs
b25nIGNoYWlucyBvZiByZWN1cnNpdmUgY2FsbHMgdG8gYGFzYXBgLlxuXHQgICAgICAgIC8vIElm
IHdlIGNhbGwgYGFzYXBgIHdpdGhpbiB0YXNrcyBzY2hlZHVsZWQgYnkgYGFzYXBgLCB0aGUgcXVl
dWUgd2lsbFxuXHQgICAgICAgIC8vIGdyb3csIGJ1dCB0byBhdm9pZCBhbiBPKG4pIHdhbGsgZm9y
IGV2ZXJ5IHRhc2sgd2UgZXhlY3V0ZSwgd2UgZG9uJ3Rcblx0ICAgICAgICAvLyBzaGlmdCB0YXNr
cyBvZmYgdGhlIHF1ZXVlIGFmdGVyIHRoZXkgaGF2ZSBiZWVuIGV4ZWN1dGVkLlxuXHQgICAgICAg
IC8vIEluc3RlYWQsIHdlIHBlcmlvZGljYWxseSBzaGlmdCAxMDI0IHRhc2tzIG9mZiB0aGUgcXVl
dWUuXG5cdCAgICAgICAgaWYgKGluZGV4ID4gY2FwYWNpdHkpIHtcblx0ICAgICAgICAgICAgLy8g
TWFudWFsbHkgc2hpZnQgYWxsIHZhbHVlcyBzdGFydGluZyBhdCB0aGUgaW5kZXggYmFjayB0byB0
aGVcblx0ICAgICAgICAgICAgLy8gYmVnaW5uaW5nIG9mIHRoZSBxdWV1ZS5cblx0ICAgICAgICAg
ICAgZm9yICh2YXIgc2NhbiA9IDAsIG5ld0xlbmd0aCA9IHF1ZXVlLmxlbmd0aCAtIGluZGV4OyBz
Y2FuIDwgbmV3TGVuZ3RoOyBzY2FuKyspIHtcblx0ICAgICAgICAgICAgICAgIHF1ZXVlW3NjYW5d
ID0gcXVldWVbc2NhbiArIGluZGV4XTtcblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICBx
dWV1ZS5sZW5ndGggLT0gaW5kZXg7XG5cdCAgICAgICAgICAgIGluZGV4ID0gMDtcblx0ICAgICAg
ICB9XG5cdCAgICB9XG5cdCAgICBxdWV1ZS5sZW5ndGggPSAwO1xuXHQgICAgaW5kZXggPSAwO1xu
XHQgICAgZmx1c2hpbmcgPSBmYWxzZTtcblx0fVxuXHRcblx0Ly8gYHJlcXVlc3RGbHVzaGAgaXMg
aW1wbGVtZW50ZWQgdXNpbmcgYSBzdHJhdGVneSBiYXNlZCBvbiBkYXRhIGNvbGxlY3RlZCBmcm9t
XG5cdC8vIGV2ZXJ5IGF2YWlsYWJsZSBTYXVjZUxhYnMgU2VsZW5pdW0gd2ViIGRyaXZlciB3b3Jr
ZXIgYXQgdGltZSBvZiB3cml0aW5nLlxuXHQvLyBodHRwczovL2RvY3MuZ29vZ2xlLmNvbS9zcHJl
YWRzaGVldHMvZC8xbUctNVVZR3VwNXF4R2RFTVdraFA2QldDejA1M05VYjJFMVFvVVRVMTZ1QS9l
ZGl0I2dpZD03ODM3MjQ1OTNcblx0XG5cdC8vIFNhZmFyaSA2IGFuZCA2LjEgZm9yIGRlc2t0b3As
IGlQYWQsIGFuZCBpUGhvbmUgYXJlIHRoZSBvbmx5IGJyb3dzZXJzIHRoYXRcblx0Ly8gaGF2ZSBX
ZWJLaXRNdXRhdGlvbk9ic2VydmVyIGJ1dCBub3QgdW4tcHJlZml4ZWQgTXV0YXRpb25PYnNlcnZl
ci5cblx0Ly8gTXVzdCB1c2UgYGdsb2JhbGAgb3IgYHNlbGZgIGluc3RlYWQgb2YgYHdpbmRvd2Ag
dG8gd29yayBpbiBib3RoIGZyYW1lcyBhbmQgd2ViXG5cdC8vIHdvcmtlcnMuIGBnbG9iYWxgIGlz
IGEgcHJvdmlzaW9uIG9mIEJyb3dzZXJpZnksIE1yLCBNcnMsIG9yIE1vcC5cblx0XG5cdC8qIGds
b2JhbHMgc2VsZiAqL1xuXHR2YXIgc2NvcGUgPSB0eXBlb2YgZ2xvYmFsICE9PSBcInVuZGVmaW5l
ZFwiID8gZ2xvYmFsIDogc2VsZjtcblx0dmFyIEJyb3dzZXJNdXRhdGlvbk9ic2VydmVyID0gc2Nv
cGUuTXV0YXRpb25PYnNlcnZlciB8fCBzY29wZS5XZWJLaXRNdXRhdGlvbk9ic2VydmVyO1xuXHRc
blx0Ly8gTXV0YXRpb25PYnNlcnZlcnMgYXJlIGRlc2lyYWJsZSBiZWNhdXNlIHRoZXkgaGF2ZSBo
aWdoIHByaW9yaXR5IGFuZCB3b3JrXG5cdC8vIHJlbGlhYmx5IGV2ZXJ5d2hlcmUgdGhleSBhcmUg
aW1wbGVtZW50ZWQuXG5cdC8vIFRoZXkgYXJlIGltcGxlbWVudGVkIGluIGFsbCBtb2Rlcm4gYnJv
d3NlcnMuXG5cdC8vXG5cdC8vIC0gQW5kcm9pZCA0LTQuM1xuXHQvLyAtIENocm9tZSAyNi0zNFxu
XHQvLyAtIEZpcmVmb3ggMTQtMjlcblx0Ly8gLSBJbnRlcm5ldCBFeHBsb3JlciAxMVxuXHQvLyAt
IGlQYWQgU2FmYXJpIDYtNy4xXG5cdC8vIC0gaVBob25lIFNhZmFyaSA3LTcuMVxuXHQvLyAtIFNh
ZmFyaSA2LTdcblx0aWYgKHR5cGVvZiBCcm93c2VyTXV0YXRpb25PYnNlcnZlciA9PT0gXCJmdW5j
dGlvblwiKSB7XG5cdCAgICByZXF1ZXN0Rmx1c2ggPSBtYWtlUmVxdWVzdENhbGxGcm9tTXV0YXRp
b25PYnNlcnZlcihmbHVzaCk7XG5cdFxuXHQvLyBNZXNzYWdlQ2hhbm5lbHMgYXJlIGRlc2lyYWJs
ZSBiZWNhdXNlIHRoZXkgZ2l2ZSBkaXJlY3QgYWNjZXNzIHRvIHRoZSBIVE1MXG5cdC8vIHRhc2sg
cXVldWUsIGFyZSBpbXBsZW1lbnRlZCBpbiBJbnRlcm5ldCBFeHBsb3JlciAxMCwgU2FmYXJpIDUu
MC0xLCBhbmQgT3BlcmFcblx0Ly8gMTEtMTIsIGFuZCBpbiB3ZWIgd29ya2VycyBpbiBtYW55IGVu
Z2luZXMuXG5cdC8vIEFsdGhvdWdoIG1lc3NhZ2UgY2hhbm5lbHMgeWllbGQgdG8gYW55IHF1ZXVl
ZCByZW5kZXJpbmcgYW5kIElPIHRhc2tzLCB0aGV5XG5cdC8vIHdvdWxkIGJlIGJldHRlciB0aGFu
IGltcG9zaW5nIHRoZSA0bXMgZGVsYXkgb2YgdGltZXJzLlxuXHQvLyBIb3dldmVyLCB0aGV5IGRv
IG5vdCB3b3JrIHJlbGlhYmx5IGluIEludGVybmV0IEV4cGxvcmVyIG9yIFNhZmFyaS5cblx0XG5c
dC8vIEludGVybmV0IEV4cGxvcmVyIDEwIGlzIHRoZSBvbmx5IGJyb3dzZXIgdGhhdCBoYXMgc2V0
SW1tZWRpYXRlIGJ1dCBkb2VzXG5cdC8vIG5vdCBoYXZlIE11dGF0aW9uT2JzZXJ2ZXJzLlxuXHQv
LyBBbHRob3VnaCBzZXRJbW1lZGlhdGUgeWllbGRzIHRvIHRoZSBicm93c2VyJ3MgcmVuZGVyZXIs
IGl0IHdvdWxkIGJlXG5cdC8vIHByZWZlcnJhYmxlIHRvIGZhbGxpbmcgYmFjayB0byBzZXRUaW1l
b3V0IHNpbmNlIGl0IGRvZXMgbm90IGhhdmVcblx0Ly8gdGhlIG1pbmltdW0gNG1zIHBlbmFsdHku
XG5cdC8vIFVuZm9ydHVuYXRlbHkgdGhlcmUgYXBwZWFycyB0byBiZSBhIGJ1ZyBpbiBJbnRlcm5l
dCBFeHBsb3JlciAxMCBNb2JpbGUgKGFuZFxuXHQvLyBEZXNrdG9wIHRvIGEgbGVzc2VyIGV4dGVu
dCkgdGhhdCByZW5kZXJzIGJvdGggc2V0SW1tZWRpYXRlIGFuZFxuXHQvLyBNZXNzYWdlQ2hhbm5l
bCB1c2VsZXNzIGZvciB0aGUgcHVycG9zZXMgb2YgQVNBUC5cblx0Ly8gaHR0cHM6Ly9naXRodWIu
Y29tL2tyaXNrb3dhbC9xL2lzc3Vlcy8zOTZcblx0XG5cdC8vIFRpbWVycyBhcmUgaW1wbGVtZW50
ZWQgdW5pdmVyc2FsbHkuXG5cdC8vIFdlIGZhbGwgYmFjayB0byB0aW1lcnMgaW4gd29ya2VycyBp
biBtb3N0IGVuZ2luZXMsIGFuZCBpbiBmb3JlZ3JvdW5kXG5cdC8vIGNvbnRleHRzIGluIHRoZSBm
b2xsb3dpbmcgYnJvd3NlcnMuXG5cdC8vIEhvd2V2ZXIsIG5vdGUgdGhhdCBldmVuIHRoaXMgc2lt
cGxlIGNhc2UgcmVxdWlyZXMgbnVhbmNlcyB0byBvcGVyYXRlIGluIGFcblx0Ly8gYnJvYWQgc3Bl
Y3RydW0gb2YgYnJvd3NlcnMuXG5cdC8vXG5cdC8vIC0gRmlyZWZveCAzLTEzXG5cdC8vIC0gSW50
ZXJuZXQgRXhwbG9yZXIgNi05XG5cdC8vIC0gaVBhZCBTYWZhcmkgNC4zXG5cdC8vIC0gTHlueCAy
LjguN1xuXHR9IGVsc2Uge1xuXHQgICAgcmVxdWVzdEZsdXNoID0gbWFrZVJlcXVlc3RDYWxsRnJv
bVRpbWVyKGZsdXNoKTtcblx0fVxuXHRcblx0Ly8gYHJlcXVlc3RGbHVzaGAgcmVxdWVzdHMgdGhh
dCB0aGUgaGlnaCBwcmlvcml0eSBldmVudCBxdWV1ZSBiZSBmbHVzaGVkIGFzXG5cdC8vIHNvb24g
YXMgcG9zc2libGUuXG5cdC8vIFRoaXMgaXMgdXNlZnVsIHRvIHByZXZlbnQgYW4gZXJyb3IgdGhy
b3duIGluIGEgdGFzayBmcm9tIHN0YWxsaW5nIHRoZSBldmVudFxuXHQvLyBxdWV1ZSBpZiB0aGUg
ZXhjZXB0aW9uIGhhbmRsZWQgYnkgTm9kZS5qc+KAmXNcblx0Ly8gYHByb2Nlc3Mub24oXCJ1bmNh
dWdodEV4Y2VwdGlvblwiKWAgb3IgYnkgYSBkb21haW4uXG5cdHJhd0FzYXAucmVxdWVzdEZsdXNo
ID0gcmVxdWVzdEZsdXNoO1xuXHRcblx0Ly8gVG8gcmVxdWVzdCBhIGhpZ2ggcHJpb3JpdHkgZXZl
bnQsIHdlIGluZHVjZSBhIG11dGF0aW9uIG9ic2VydmVyIGJ5IHRvZ2dsaW5nXG5cdC8vIHRoZSB0
ZXh0IG9mIGEgdGV4dCBub2RlIGJldHdlZW4gXCIxXCIgYW5kIFwiLTFcIi5cblx0ZnVuY3Rpb24g
bWFrZVJlcXVlc3RDYWxsRnJvbU11dGF0aW9uT2JzZXJ2ZXIoY2FsbGJhY2spIHtcblx0ICAgIHZh
ciB0b2dnbGUgPSAxO1xuXHQgICAgdmFyIG9ic2VydmVyID0gbmV3IEJyb3dzZXJNdXRhdGlvbk9i
c2VydmVyKGNhbGxiYWNrKTtcblx0ICAgIHZhciBub2RlID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5v
ZGUoXCJcIik7XG5cdCAgICBvYnNlcnZlci5vYnNlcnZlKG5vZGUsIHtjaGFyYWN0ZXJEYXRhOiB0
cnVlfSk7XG5cdCAgICByZXR1cm4gZnVuY3Rpb24gcmVxdWVzdENhbGwoKSB7XG5cdCAgICAgICAg
dG9nZ2xlID0gLXRvZ2dsZTtcblx0ICAgICAgICBub2RlLmRhdGEgPSB0b2dnbGU7XG5cdCAgICB9
O1xuXHR9XG5cdFxuXHQvLyBUaGUgbWVzc2FnZSBjaGFubmVsIHRlY2huaXF1ZSB3YXMgZGlzY292
ZXJlZCBieSBNYWx0ZSBVYmwgYW5kIHdhcyB0aGVcblx0Ly8gb3JpZ2luYWwgZm91bmRhdGlvbiBm
b3IgdGhpcyBsaWJyYXJ5LlxuXHQvLyBodHRwOi8vd3d3Lm5vbmJsb2NraW5nLmlvLzIwMTEvMDYv
d2luZG93bmV4dHRpY2suaHRtbFxuXHRcblx0Ly8gU2FmYXJpIDYuMC41IChhdCBsZWFzdCkgaW50
ZXJtaXR0ZW50bHkgZmFpbHMgdG8gY3JlYXRlIG1lc3NhZ2UgcG9ydHMgb24gYVxuXHQvLyBwYWdl
J3MgZmlyc3QgbG9hZC4gVGhhbmtmdWxseSwgdGhpcyB2ZXJzaW9uIG9mIFNhZmFyaSBzdXBwb3J0
c1xuXHQvLyBNdXRhdGlvbk9ic2VydmVycywgc28gd2UgZG9uJ3QgbmVlZCB0byBmYWxsIGJhY2sg
aW4gdGhhdCBjYXNlLlxuXHRcblx0Ly8gZnVuY3Rpb24gbWFrZVJlcXVlc3RDYWxsRnJvbU1lc3Nh
Z2VDaGFubmVsKGNhbGxiYWNrKSB7XG5cdC8vICAgICB2YXIgY2hhbm5lbCA9IG5ldyBNZXNzYWdl
Q2hhbm5lbCgpO1xuXHQvLyAgICAgY2hhbm5lbC5wb3J0MS5vbm1lc3NhZ2UgPSBjYWxsYmFjaztc
blx0Ly8gICAgIHJldHVybiBmdW5jdGlvbiByZXF1ZXN0Q2FsbCgpIHtcblx0Ly8gICAgICAgICBj
aGFubmVsLnBvcnQyLnBvc3RNZXNzYWdlKDApO1xuXHQvLyAgICAgfTtcblx0Ly8gfVxuXHRcblx0
Ly8gRm9yIHJlYXNvbnMgZXhwbGFpbmVkIGFib3ZlLCB3ZSBhcmUgYWxzbyB1bmFibGUgdG8gdXNl
IGBzZXRJbW1lZGlhdGVgXG5cdC8vIHVuZGVyIGFueSBjaXJjdW1zdGFuY2VzLlxuXHQvLyBFdmVu
IGlmIHdlIHdlcmUsIHRoZXJlIGlzIGFub3RoZXIgYnVnIGluIEludGVybmV0IEV4cGxvcmVyIDEw
LlxuXHQvLyBJdCBpcyBub3Qgc3VmZmljaWVudCB0byBhc3NpZ24gYHNldEltbWVkaWF0ZWAgdG8g
YHJlcXVlc3RGbHVzaGAgYmVjYXVzZVxuXHQvLyBgc2V0SW1tZWRpYXRlYCBtdXN0IGJlIGNhbGxl
ZCAqYnkgbmFtZSogYW5kIHRoZXJlZm9yZSBtdXN0IGJlIHdyYXBwZWQgaW4gYVxuXHQvLyBjbG9z
dXJlLlxuXHQvLyBOZXZlciBmb3JnZXQuXG5cdFxuXHQvLyBmdW5jdGlvbiBtYWtlUmVxdWVzdENh
bGxGcm9tU2V0SW1tZWRpYXRlKGNhbGxiYWNrKSB7XG5cdC8vICAgICByZXR1cm4gZnVuY3Rpb24g
cmVxdWVzdENhbGwoKSB7XG5cdC8vICAgICAgICAgc2V0SW1tZWRpYXRlKGNhbGxiYWNrKTtcblx0
Ly8gICAgIH07XG5cdC8vIH1cblx0XG5cdC8vIFNhZmFyaSA2LjAgaGFzIGEgcHJvYmxlbSB3aGVy
ZSB0aW1lcnMgd2lsbCBnZXQgbG9zdCB3aGlsZSB0aGUgdXNlciBpc1xuXHQvLyBzY3JvbGxpbmcu
IFRoaXMgcHJvYmxlbSBkb2VzIG5vdCBpbXBhY3QgQVNBUCBiZWNhdXNlIFNhZmFyaSA2LjAgc3Vw
cG9ydHNcblx0Ly8gbXV0YXRpb24gb2JzZXJ2ZXJzLCBzbyB0aGF0IGltcGxlbWVudGF0aW9uIGlz
IHVzZWQgaW5zdGVhZC5cblx0Ly8gSG93ZXZlciwgaWYgd2UgZXZlciBlbGVjdCB0byB1c2UgdGlt
ZXJzIGluIFNhZmFyaSwgdGhlIHByZXZhbGVudCB3b3JrLWFyb3VuZFxuXHQvLyBpcyB0byBhZGQg
YSBzY3JvbGwgZXZlbnQgbGlzdGVuZXIgdGhhdCBjYWxscyBmb3IgYSBmbHVzaC5cblx0XG5cdC8v
IGBzZXRUaW1lb3V0YCBkb2VzIG5vdCBjYWxsIHRoZSBwYXNzZWQgY2FsbGJhY2sgaWYgdGhlIGRl
bGF5IGlzIGxlc3MgdGhhblxuXHQvLyBhcHByb3hpbWF0ZWx5IDcgaW4gd2ViIHdvcmtlcnMgaW4g
RmlyZWZveCA4IHRocm91Z2ggMTgsIGFuZCBzb21ldGltZXMgbm90XG5cdC8vIGV2ZW4gdGhlbi5c
blx0XG5cdGZ1bmN0aW9uIG1ha2VSZXF1ZXN0Q2FsbEZyb21UaW1lcihjYWxsYmFjaykge1xuXHQg
ICAgcmV0dXJuIGZ1bmN0aW9uIHJlcXVlc3RDYWxsKCkge1xuXHQgICAgICAgIC8vIFdlIGRpc3Bh
dGNoIGEgdGltZW91dCB3aXRoIGEgc3BlY2lmaWVkIGRlbGF5IG9mIDAgZm9yIGVuZ2luZXMgdGhh
dFxuXHQgICAgICAgIC8vIGNhbiByZWxpYWJseSBhY2NvbW1vZGF0ZSB0aGF0IHJlcXVlc3QuIFRo
aXMgd2lsbCB1c3VhbGx5IGJlIHNuYXBwZWRcblx0ICAgICAgICAvLyB0byBhIDQgbWlsaXNlY29u
ZCBkZWxheSwgYnV0IG9uY2Ugd2UncmUgZmx1c2hpbmcsIHRoZXJlJ3Mgbm8gZGVsYXlcblx0ICAg
ICAgICAvLyBiZXR3ZWVuIGV2ZW50cy5cblx0ICAgICAgICB2YXIgdGltZW91dEhhbmRsZSA9IHNl
dFRpbWVvdXQoaGFuZGxlVGltZXIsIDApO1xuXHQgICAgICAgIC8vIEhvd2V2ZXIsIHNpbmNlIHRo
aXMgdGltZXIgZ2V0cyBmcmVxdWVudGx5IGRyb3BwZWQgaW4gRmlyZWZveFxuXHQgICAgICAgIC8v
IHdvcmtlcnMsIHdlIGVubGlzdCBhbiBpbnRlcnZhbCBoYW5kbGUgdGhhdCB3aWxsIHRyeSB0byBm
aXJlXG5cdCAgICAgICAgLy8gYW4gZXZlbnQgMjAgdGltZXMgcGVyIHNlY29uZCB1bnRpbCBpdCBz
dWNjZWVkcy5cblx0ICAgICAgICB2YXIgaW50ZXJ2YWxIYW5kbGUgPSBzZXRJbnRlcnZhbChoYW5k
bGVUaW1lciwgNTApO1xuXHRcblx0ICAgICAgICBmdW5jdGlvbiBoYW5kbGVUaW1lcigpIHtcblx0
ICAgICAgICAgICAgLy8gV2hpY2hldmVyIHRpbWVyIHN1Y2NlZWRzIHdpbGwgY2FuY2VsIGJvdGgg
dGltZXJzIGFuZFxuXHQgICAgICAgICAgICAvLyBleGVjdXRlIHRoZSBjYWxsYmFjay5cblx0ICAg
ICAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXRIYW5kbGUpO1xuXHQgICAgICAgICAgICBjbGVh
ckludGVydmFsKGludGVydmFsSGFuZGxlKTtcblx0ICAgICAgICAgICAgY2FsbGJhY2soKTtcblx0
ICAgICAgICB9XG5cdCAgICB9O1xuXHR9XG5cdFxuXHQvLyBUaGlzIGlzIGZvciBgYXNhcC5qc2Ag
b25seS5cblx0Ly8gSXRzIG5hbWUgd2lsbCBiZSBwZXJpb2RpY2FsbHkgcmFuZG9taXplZCB0byBi
cmVhayBhbnkgY29kZSB0aGF0IGRlcGVuZHMgb25cblx0Ly8gaXRzIGV4aXN0ZW5jZS5cblx0cmF3
QXNhcC5tYWtlUmVxdWVzdENhbGxGcm9tVGltZXIgPSBtYWtlUmVxdWVzdENhbGxGcm9tVGltZXI7
XG5cdFxuXHQvLyBBU0FQIHdhcyBvcmlnaW5hbGx5IGEgbmV4dFRpY2sgc2hpbSBpbmNsdWRlZCBp
biBRLiBUaGlzIHdhcyBmYWN0b3JlZCBvdXRcblx0Ly8gaW50byB0aGlzIEFTQVAgcGFja2FnZS4g
SXQgd2FzIGxhdGVyIGFkYXB0ZWQgdG8gUlNWUCB3aGljaCBtYWRlIGZ1cnRoZXJcblx0Ly8gYW1l
bmRtZW50cy4gVGhlc2UgZGVjaXNpb25zLCBwYXJ0aWN1bGFybHkgdG8gbWFyZ2luYWxpemUgTWVz
c2FnZUNoYW5uZWwgYW5kXG5cdC8vIHRvIGNhcHR1cmUgdGhlIE11dGF0aW9uT2JzZXJ2ZXIgaW1w
bGVtZW50YXRpb24gaW4gYSBjbG9zdXJlLCB3ZXJlIGludGVncmF0ZWRcblx0Ly8gYmFjayBpbnRv
IEFTQVAgcHJvcGVyLlxuXHQvLyBodHRwczovL2dpdGh1Yi5jb20vdGlsZGVpby9yc3ZwLmpzL2Js
b2IvY2RkZjcyMzI1NDZhOWNmODU4NTI0Yjc1Y2RlNmY5ZWRmNzI2MjBhNy9saWIvcnN2cC9hc2Fw
LmpzXG5cdFxuXHQvKiBXRUJQQUNLIFZBUiBJTkpFQ1RJT04gKi99LmNhbGwoZXhwb3J0cywgKGZ1
bmN0aW9uKCkgeyByZXR1cm4gdGhpczsgfSgpKSkpXG5cbi8qKiovIH0sXG4vKiAxOTggKi9cbi8q
KiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5c
dCd1c2Ugc3RyaWN0Jztcblx0XG5cdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9f
ZXNNb2R1bGVcIiwge1xuXHQgIHZhbHVlOiB0cnVlXG5cdH0pO1xuXHRleHBvcnRzLmNsZWFyQ29t
cGxldGVkID0gZXhwb3J0cy5jb21wbGV0ZUFsbCA9IGV4cG9ydHMuY29tcGxldGVUb2RvID0gZXhw
b3J0cy5lZGl0VG9kbyA9IGV4cG9ydHMuZGVsZXRlVG9kbyA9IGV4cG9ydHMuYWRkVG9kbyA9IHVu
ZGVmaW5lZDtcblx0XG5cdHZhciBfQWN0aW9uVHlwZXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDg1
KTtcblx0XG5cdHZhciB0eXBlcyA9IF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKF9BY3Rpb25UeXBl
cyk7XG5cdFxuXHRmdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChvYmopIHsgaWYgKG9i
aiAmJiBvYmouX19lc01vZHVsZSkgeyByZXR1cm4gb2JqOyB9IGVsc2UgeyB2YXIgbmV3T2JqID0g
e307IGlmIChvYmogIT0gbnVsbCkgeyBmb3IgKHZhciBrZXkgaW4gb2JqKSB7IGlmIChPYmplY3Qu
cHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBrZXkpKSBuZXdPYmpba2V5XSA9IG9i
altrZXldOyB9IH0gbmV3T2JqLmRlZmF1bHQgPSBvYmo7IHJldHVybiBuZXdPYmo7IH0gfVxuXHRc
blx0dmFyIGFkZFRvZG8gPSBleHBvcnRzLmFkZFRvZG8gPSBmdW5jdGlvbiBhZGRUb2RvKHRleHQp
IHtcblx0ICByZXR1cm4geyB0eXBlOiB0eXBlcy5BRERfVE9ETywgdGV4dDogdGV4dCB9O1xuXHR9
O1xuXHR2YXIgZGVsZXRlVG9kbyA9IGV4cG9ydHMuZGVsZXRlVG9kbyA9IGZ1bmN0aW9uIGRlbGV0
ZVRvZG8oaWQpIHtcblx0ICByZXR1cm4geyB0eXBlOiB0eXBlcy5ERUxFVEVfVE9ETywgaWQ6IGlk
IH07XG5cdH07XG5cdHZhciBlZGl0VG9kbyA9IGV4cG9ydHMuZWRpdFRvZG8gPSBmdW5jdGlvbiBl
ZGl0VG9kbyhpZCwgdGV4dCkge1xuXHQgIHJldHVybiB7IHR5cGU6IHR5cGVzLkVESVRfVE9ETywg
aWQ6IGlkLCB0ZXh0OiB0ZXh0IH07XG5cdH07XG5cdHZhciBjb21wbGV0ZVRvZG8gPSBleHBvcnRz
LmNvbXBsZXRlVG9kbyA9IGZ1bmN0aW9uIGNvbXBsZXRlVG9kbyhpZCkge1xuXHQgIHJldHVybiB7
IHR5cGU6IHR5cGVzLkNPTVBMRVRFX1RPRE8sIGlkOiBpZCB9O1xuXHR9O1xuXHR2YXIgY29tcGxl
dGVBbGwgPSBleHBvcnRzLmNvbXBsZXRlQWxsID0gZnVuY3Rpb24gY29tcGxldGVBbGwoKSB7XG5c
dCAgcmV0dXJuIHsgdHlwZTogdHlwZXMuQ09NUExFVEVfQUxMIH07XG5cdH07XG5cdHZhciBjbGVh
ckNvbXBsZXRlZCA9IGV4cG9ydHMuY2xlYXJDb21wbGV0ZWQgPSBmdW5jdGlvbiBjbGVhckNvbXBs
ZXRlZCgpIHtcblx0ICByZXR1cm4geyB0eXBlOiB0eXBlcy5DTEVBUl9DT01QTEVURUQgfTtcblx0
fTtcblxuLyoqKi8gfSxcbi8qIDE5OSAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRz
LCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0T2JqZWN0
LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG5cdCAgdmFsdWU6IHRy
dWVcblx0fSk7XG5cdFxuXHR2YXIgX2NyZWF0ZUNsYXNzID0gZnVuY3Rpb24gKCkgeyBmdW5jdGlv
biBkZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCBw
cm9wcy5sZW5ndGg7IGkrKykgeyB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldOyBkZXNjcmlwdG9y
LmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7IGRlc2NyaXB0b3Iu
Y29uZmlndXJhYmxlID0gdHJ1ZTsgaWYgKFwidmFsdWVcIiBpbiBkZXNjcmlwdG9yKSBkZXNjcmlw
dG9yLndyaXRhYmxlID0gdHJ1ZTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgZGVzY3Jp
cHRvci5rZXksIGRlc2NyaXB0b3IpOyB9IH0gcmV0dXJuIGZ1bmN0aW9uIChDb25zdHJ1Y3Rvciwg
cHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHsgaWYgKHByb3RvUHJvcHMpIGRlZmluZVByb3BlcnRp
ZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTsgaWYgKHN0YXRpY1Byb3BzKSBk
ZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7IHJldHVybiBDb25zdHJ1
Y3RvcjsgfTsgfSgpO1xuXHRcblx0dmFyIF9GSUxURVJfVElUTEVTO1xuXHRcblx0dmFyIF9yZWFj
dCA9IF9fd2VicGFja19yZXF1aXJlX18oMTIpO1xuXHRcblx0dmFyIF9yZWFjdDIgPSBfaW50ZXJv
cFJlcXVpcmVEZWZhdWx0KF9yZWFjdCk7XG5cdFxuXHR2YXIgX2NsYXNzbmFtZXMgPSBfX3dlYnBh
Y2tfcmVxdWlyZV9fKDMxKTtcblx0XG5cdHZhciBfY2xhc3NuYW1lczIgPSBfaW50ZXJvcFJlcXVp
cmVEZWZhdWx0KF9jbGFzc25hbWVzKTtcblx0XG5cdHZhciBfVG9kb0ZpbHRlcnMgPSBfX3dlYnBh
Y2tfcmVxdWlyZV9fKDg2KTtcblx0XG5cdGZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQo
b2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9i
aiB9OyB9XG5cdFxuXHRmdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVj
dG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5l
dyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7IH0gfVxu
XHRcblx0ZnVuY3Rpb24gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4oc2VsZiwgY2FsbCkgeyBp
ZiAoIXNlbGYpIHsgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBp
bml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpOyB9IHJldHVybiBjYWxs
ICYmICh0eXBlb2YgY2FsbCA9PT0gXCJvYmplY3RcIiB8fCB0eXBlb2YgY2FsbCA9PT0gXCJmdW5j
dGlvblwiKSA/IGNhbGwgOiBzZWxmOyB9XG5cdFxuXHRmdW5jdGlvbiBfaW5oZXJpdHMoc3ViQ2xh
c3MsIHN1cGVyQ2xhc3MpIHsgaWYgKHR5cGVvZiBzdXBlckNsYXNzICE9PSBcImZ1bmN0aW9uXCIg
JiYgc3VwZXJDbGFzcyAhPT0gbnVsbCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIgZXhw
cmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCBcIiArIHR5cGVv
ZiBzdXBlckNsYXNzKTsgfSBzdWJDbGFzcy5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHN1cGVy
Q2xhc3MgJiYgc3VwZXJDbGFzcy5wcm90b3R5cGUsIHsgY29uc3RydWN0b3I6IHsgdmFsdWU6IHN1
YkNsYXNzLCBlbnVtZXJhYmxlOiBmYWxzZSwgd3JpdGFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTog
dHJ1ZSB9IH0pOyBpZiAoc3VwZXJDbGFzcykgT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0
LnNldFByb3RvdHlwZU9mKHN1YkNsYXNzLCBzdXBlckNsYXNzKSA6IHN1YkNsYXNzLl9fcHJvdG9f
XyA9IHN1cGVyQ2xhc3M7IH1cblx0XG5cdGZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShvYmosIGtl
eSwgdmFsdWUpIHsgaWYgKGtleSBpbiBvYmopIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwg
a2V5LCB7IHZhbHVlOiB2YWx1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVl
LCB3cml0YWJsZTogdHJ1ZSB9KTsgfSBlbHNlIHsgb2JqW2tleV0gPSB2YWx1ZTsgfSByZXR1cm4g
b2JqOyB9XG5cdFxuXHR2YXIgRklMVEVSX1RJVExFUyA9IChfRklMVEVSX1RJVExFUyA9IHt9LCBf
ZGVmaW5lUHJvcGVydHkoX0ZJTFRFUl9USVRMRVMsIF9Ub2RvRmlsdGVycy5TSE9XX0FMTCwgJ0Fs
bCcpLCBfZGVmaW5lUHJvcGVydHkoX0ZJTFRFUl9USVRMRVMsIF9Ub2RvRmlsdGVycy5TSE9XX0FD
VElWRSwgJ0FjdGl2ZScpLCBfZGVmaW5lUHJvcGVydHkoX0ZJTFRFUl9USVRMRVMsIF9Ub2RvRmls
dGVycy5TSE9XX0NPTVBMRVRFRCwgJ0NvbXBsZXRlZCcpLCBfRklMVEVSX1RJVExFUyk7XG5cdFxu
XHR2YXIgRm9vdGVyID0gZnVuY3Rpb24gKF9Db21wb25lbnQpIHtcblx0ICBfaW5oZXJpdHMoRm9v
dGVyLCBfQ29tcG9uZW50KTtcblx0XG5cdCAgZnVuY3Rpb24gRm9vdGVyKCkge1xuXHQgICAgX2Ns
YXNzQ2FsbENoZWNrKHRoaXMsIEZvb3Rlcik7XG5cdFxuXHQgICAgcmV0dXJuIF9wb3NzaWJsZUNv
bnN0cnVjdG9yUmV0dXJuKHRoaXMsIChGb290ZXIuX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90
b3R5cGVPZihGb290ZXIpKS5hcHBseSh0aGlzLCBhcmd1bWVudHMpKTtcblx0ICB9XG5cdFxuXHQg
IF9jcmVhdGVDbGFzcyhGb290ZXIsIFt7XG5cdCAgICBrZXk6ICdyZW5kZXJUb2RvQ291bnQnLFxu
XHQgICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlclRvZG9Db3VudCgpIHtcblx0ICAgICAgdmFyIGFj
dGl2ZUNvdW50ID0gdGhpcy5wcm9wcy5hY3RpdmVDb3VudDtcblx0XG5cdCAgICAgIHZhciBpdGVt
V29yZCA9IGFjdGl2ZUNvdW50ID09PSAxID8gJ2l0ZW0nIDogJ2l0ZW1zJztcblx0XG5cdCAgICAg
IHJldHVybiBfcmVhY3QyLmRlZmF1bHQuY3JlYXRlRWxlbWVudChcblx0ICAgICAgICAnc3Bhbics
XG5cdCAgICAgICAgeyBjbGFzc05hbWU6ICd0b2RvLWNvdW50JyB9LFxuXHQgICAgICAgIF9yZWFj
dDIuZGVmYXVsdC5jcmVhdGVFbGVtZW50KFxuXHQgICAgICAgICAgJ3N0cm9uZycsXG5cdCAgICAg
ICAgICBudWxsLFxuXHQgICAgICAgICAgYWN0aXZlQ291bnQgfHwgJ05vJ1xuXHQgICAgICAgICks
XG5cdCAgICAgICAgJyAnLFxuXHQgICAgICAgIGl0ZW1Xb3JkLFxuXHQgICAgICAgICcgbGVmdCdc
blx0ICAgICAgKTtcblx0ICAgIH1cblx0ICB9LCB7XG5cdCAgICBrZXk6ICdyZW5kZXJGaWx0ZXJM
aW5rJyxcblx0ICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXJGaWx0ZXJMaW5rKGZpbHRlcikge1xu
XHQgICAgICB2YXIgdGl0bGUgPSBGSUxURVJfVElUTEVTW2ZpbHRlcl07XG5cdCAgICAgIHZhciBf
cHJvcHMgPSB0aGlzLnByb3BzO1xuXHQgICAgICB2YXIgc2VsZWN0ZWRGaWx0ZXIgPSBfcHJvcHMu
ZmlsdGVyO1xuXHQgICAgICB2YXIgb25TaG93ID0gX3Byb3BzLm9uU2hvdztcblx0XG5cdFxuXHQg
ICAgICByZXR1cm4gX3JlYWN0Mi5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXG5cdCAgICAgICAgJ2En
LFxuXHQgICAgICAgIHsgY2xhc3NOYW1lOiAoMCwgX2NsYXNzbmFtZXMyLmRlZmF1bHQpKHsgc2Vs
ZWN0ZWQ6IGZpbHRlciA9PT0gc2VsZWN0ZWRGaWx0ZXIgfSksXG5cdCAgICAgICAgICBzdHlsZTog
eyBjdXJzb3I6ICdwb2ludGVyJyB9LFxuXHQgICAgICAgICAgb25DbGljazogZnVuY3Rpb24gb25D
bGljaygpIHtcblx0ICAgICAgICAgICAgcmV0dXJuIG9uU2hvdyhmaWx0ZXIpO1xuXHQgICAgICAg
ICAgfSB9LFxuXHQgICAgICAgIHRpdGxlXG5cdCAgICAgICk7XG5cdCAgICB9XG5cdCAgfSwge1xu
XHQgICAga2V5OiAncmVuZGVyQ2xlYXJCdXR0b24nLFxuXHQgICAgdmFsdWU6IGZ1bmN0aW9uIHJl
bmRlckNsZWFyQnV0dG9uKCkge1xuXHQgICAgICB2YXIgX3Byb3BzMiA9IHRoaXMucHJvcHM7XG5c
dCAgICAgIHZhciBjb21wbGV0ZWRDb3VudCA9IF9wcm9wczIuY29tcGxldGVkQ291bnQ7XG5cdCAg
ICAgIHZhciBvbkNsZWFyQ29tcGxldGVkID0gX3Byb3BzMi5vbkNsZWFyQ29tcGxldGVkO1xuXHRc
blx0ICAgICAgaWYgKGNvbXBsZXRlZENvdW50ID4gMCkge1xuXHQgICAgICAgIHJldHVybiBfcmVh
Y3QyLmRlZmF1bHQuY3JlYXRlRWxlbWVudChcblx0ICAgICAgICAgICdidXR0b24nLFxuXHQgICAg
ICAgICAgeyBjbGFzc05hbWU6ICdjbGVhci1jb21wbGV0ZWQnLFxuXHQgICAgICAgICAgICBvbkNs
aWNrOiBvbkNsZWFyQ29tcGxldGVkIH0sXG5cdCAgICAgICAgICAnQ2xlYXIgY29tcGxldGVkJ1xu
XHQgICAgICAgICk7XG5cdCAgICAgIH1cblx0ICAgIH1cblx0ICB9LCB7XG5cdCAgICBrZXk6ICdy
ZW5kZXInLFxuXHQgICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlcigpIHtcblx0ICAgICAgdmFyIF90
aGlzMiA9IHRoaXM7XG5cdFxuXHQgICAgICByZXR1cm4gX3JlYWN0Mi5kZWZhdWx0LmNyZWF0ZUVs
ZW1lbnQoXG5cdCAgICAgICAgJ2Zvb3RlcicsXG5cdCAgICAgICAgeyBjbGFzc05hbWU6ICdmb290
ZXInIH0sXG5cdCAgICAgICAgdGhpcy5yZW5kZXJUb2RvQ291bnQoKSxcblx0ICAgICAgICBfcmVh
Y3QyLmRlZmF1bHQuY3JlYXRlRWxlbWVudChcblx0ICAgICAgICAgICd1bCcsXG5cdCAgICAgICAg
ICB7IGNsYXNzTmFtZTogJ2ZpbHRlcnMnIH0sXG5cdCAgICAgICAgICBbX1RvZG9GaWx0ZXJzLlNI
T1dfQUxMLCBfVG9kb0ZpbHRlcnMuU0hPV19BQ1RJVkUsIF9Ub2RvRmlsdGVycy5TSE9XX0NPTVBM
RVRFRF0ubWFwKGZ1bmN0aW9uIChmaWx0ZXIpIHtcblx0ICAgICAgICAgICAgcmV0dXJuIF9yZWFj
dDIuZGVmYXVsdC5jcmVhdGVFbGVtZW50KFxuXHQgICAgICAgICAgICAgICdsaScsXG5cdCAgICAg
ICAgICAgICAgeyBrZXk6IGZpbHRlciB9LFxuXHQgICAgICAgICAgICAgIF90aGlzMi5yZW5kZXJG
aWx0ZXJMaW5rKGZpbHRlcilcblx0ICAgICAgICAgICAgKTtcblx0ICAgICAgICAgIH0pXG5cdCAg
ICAgICAgKSxcblx0ICAgICAgICB0aGlzLnJlbmRlckNsZWFyQnV0dG9uKClcblx0ICAgICAgKTtc
blx0ICAgIH1cblx0ICB9XSk7XG5cdFxuXHQgIHJldHVybiBGb290ZXI7XG5cdH0oX3JlYWN0LkNv
bXBvbmVudCk7XG5cdFxuXHRGb290ZXIucHJvcFR5cGVzID0ge1xuXHQgIGNvbXBsZXRlZENvdW50
OiBfcmVhY3QuUHJvcFR5cGVzLm51bWJlci5pc1JlcXVpcmVkLFxuXHQgIGFjdGl2ZUNvdW50OiBf
cmVhY3QuUHJvcFR5cGVzLm51bWJlci5pc1JlcXVpcmVkLFxuXHQgIGZpbHRlcjogX3JlYWN0LlBy
b3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcblx0ICBvbkNsZWFyQ29tcGxldGVkOiBfcmVhY3Qu
UHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcblx0ICBvblNob3c6IF9yZWFjdC5Qcm9wVHlwZXMu
ZnVuYy5pc1JlcXVpcmVkXG5cdH07XG5cdGV4cG9ydHMuZGVmYXVsdCA9IEZvb3RlcjtcblxuLyoq
Ki8gfSxcbi8qIDIwMCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBh
Y2tfcmVxdWlyZV9fKSB7XG5cblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0T2JqZWN0LmRlZmluZVBy
b3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG5cdCAgdmFsdWU6IHRydWVcblx0fSk7
XG5cdFxuXHR2YXIgX2NyZWF0ZUNsYXNzID0gZnVuY3Rpb24gKCkgeyBmdW5jdGlvbiBkZWZpbmVQ
cm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5n
dGg7IGkrKykgeyB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldOyBkZXNjcmlwdG9yLmVudW1lcmFi
bGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7IGRlc2NyaXB0b3IuY29uZmlndXJh
YmxlID0gdHJ1ZTsgaWYgKFwidmFsdWVcIiBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRh
YmxlID0gdHJ1ZTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgZGVzY3JpcHRvci5rZXks
IGRlc2NyaXB0b3IpOyB9IH0gcmV0dXJuIGZ1bmN0aW9uIChDb25zdHJ1Y3RvciwgcHJvdG9Qcm9w
cywgc3RhdGljUHJvcHMpIHsgaWYgKHByb3RvUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3Ry
dWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTsgaWYgKHN0YXRpY1Byb3BzKSBkZWZpbmVQcm9w
ZXJ0aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7IHJldHVybiBDb25zdHJ1Y3RvcjsgfTsg
fSgpO1xuXHRcblx0dmFyIF9yZWFjdCA9IF9fd2VicGFja19yZXF1aXJlX18oMTIpO1xuXHRcblx0
dmFyIF9yZWFjdDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9yZWFjdCk7XG5cdFxuXHR2YXIg
X1RvZG9UZXh0SW5wdXQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDg0KTtcblx0XG5cdHZhciBfVG9k
b1RleHRJbnB1dDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9Ub2RvVGV4dElucHV0KTtcblx0
XG5cdGZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYg
b2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cdFxuXHRmdW5jdGlv
biBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNl
IGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3Qg
Y2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7IH0gfVxuXHRcblx0ZnVuY3Rpb24gX3Bvc3Np
YmxlQ29uc3RydWN0b3JSZXR1cm4oc2VsZiwgY2FsbCkgeyBpZiAoIXNlbGYpIHsgdGhyb3cgbmV3
IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkg
aGFzbid0IGJlZW4gY2FsbGVkXCIpOyB9IHJldHVybiBjYWxsICYmICh0eXBlb2YgY2FsbCA9PT0g
XCJvYmplY3RcIiB8fCB0eXBlb2YgY2FsbCA9PT0gXCJmdW5jdGlvblwiKSA/IGNhbGwgOiBzZWxm
OyB9XG5cdFxuXHRmdW5jdGlvbiBfaW5oZXJpdHMoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIHsgaWYg
KHR5cGVvZiBzdXBlckNsYXNzICE9PSBcImZ1bmN0aW9uXCIgJiYgc3VwZXJDbGFzcyAhPT0gbnVs
bCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBi
ZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCBcIiArIHR5cGVvZiBzdXBlckNsYXNzKTsgfSBzdWJD
bGFzcy5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHN1cGVyQ2xhc3MgJiYgc3VwZXJDbGFzcy5w
cm90b3R5cGUsIHsgY29uc3RydWN0b3I6IHsgdmFsdWU6IHN1YkNsYXNzLCBlbnVtZXJhYmxlOiBm
YWxzZSwgd3JpdGFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9IH0pOyBpZiAoc3VwZXJD
bGFzcykgT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LnNldFByb3RvdHlwZU9mKHN1YkNs
YXNzLCBzdXBlckNsYXNzKSA6IHN1YkNsYXNzLl9fcHJvdG9fXyA9IHN1cGVyQ2xhc3M7IH1cblx0
XG5cdHZhciBIZWFkZXIgPSBmdW5jdGlvbiAoX0NvbXBvbmVudCkge1xuXHQgIF9pbmhlcml0cyhI
ZWFkZXIsIF9Db21wb25lbnQpO1xuXHRcblx0ICBmdW5jdGlvbiBIZWFkZXIoKSB7XG5cdCAgICB2
YXIgX3JlZjtcblx0XG5cdCAgICB2YXIgX3RlbXAsIF90aGlzLCBfcmV0O1xuXHRcblx0ICAgIF9j
bGFzc0NhbGxDaGVjayh0aGlzLCBIZWFkZXIpO1xuXHRcblx0ICAgIGZvciAodmFyIF9sZW4gPSBh
cmd1bWVudHMubGVuZ3RoLCBhcmdzID0gQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xl
bjsgX2tleSsrKSB7XG5cdCAgICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG5cdCAg
ICB9XG5cdFxuXHQgICAgcmV0dXJuIF9yZXQgPSAoX3RlbXAgPSAoX3RoaXMgPSBfcG9zc2libGVD
b25zdHJ1Y3RvclJldHVybih0aGlzLCAoX3JlZiA9IEhlYWRlci5fX3Byb3RvX18gfHwgT2JqZWN0
LmdldFByb3RvdHlwZU9mKEhlYWRlcikpLmNhbGwuYXBwbHkoX3JlZiwgW3RoaXNdLmNvbmNhdChh
cmdzKSkpLCBfdGhpcyksIF90aGlzLmhhbmRsZVNhdmUgPSBmdW5jdGlvbiAodGV4dCkge1xuXHQg
ICAgICBpZiAodGV4dC5sZW5ndGggIT09IDApIHtcblx0ICAgICAgICBfdGhpcy5wcm9wcy5hZGRU
b2RvKHRleHQpO1xuXHQgICAgICB9XG5cdCAgICB9LCBfdGVtcCksIF9wb3NzaWJsZUNvbnN0cnVj
dG9yUmV0dXJuKF90aGlzLCBfcmV0KTtcblx0ICB9XG5cdFxuXHQgIF9jcmVhdGVDbGFzcyhIZWFk
ZXIsIFt7XG5cdCAgICBrZXk6ICdyZW5kZXInLFxuXHQgICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRl
cigpIHtcblx0ICAgICAgcmV0dXJuIF9yZWFjdDIuZGVmYXVsdC5jcmVhdGVFbGVtZW50KFxuXHQg
ICAgICAgICdoZWFkZXInLFxuXHQgICAgICAgIHsgY2xhc3NOYW1lOiAnaGVhZGVyJyB9LFxuXHQg
ICAgICAgIF9yZWFjdDIuZGVmYXVsdC5jcmVhdGVFbGVtZW50KFxuXHQgICAgICAgICAgJ2gxJyxc
blx0ICAgICAgICAgIG51bGwsXG5cdCAgICAgICAgICAndG9kb3MnXG5cdCAgICAgICAgKSxcblx0
ICAgICAgICBfcmVhY3QyLmRlZmF1bHQuY3JlYXRlRWxlbWVudChfVG9kb1RleHRJbnB1dDIuZGVm
YXVsdCwgeyBuZXdUb2RvOiB0cnVlLFxuXHQgICAgICAgICAgb25TYXZlOiB0aGlzLmhhbmRsZVNh
dmUsXG5cdCAgICAgICAgICBwbGFjZWhvbGRlcjogJ1doYXQgbmVlZHMgdG8gYmUgZG9uZT8nIH0p
XG5cdCAgICAgICk7XG5cdCAgICB9XG5cdCAgfV0pO1xuXHRcblx0ICByZXR1cm4gSGVhZGVyO1xu
XHR9KF9yZWFjdC5Db21wb25lbnQpO1xuXHRcblx0SGVhZGVyLnByb3BUeXBlcyA9IHtcblx0ICBh
ZGRUb2RvOiBfcmVhY3QuUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZFxuXHR9O1xuXHRleHBvcnRz
LmRlZmF1bHQgPSBIZWFkZXI7XG5cbi8qKiovIH0sXG4vKiAyMDEgKi9cbi8qKiovIGZ1bmN0aW9u
KG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdCd1c2Ugc3RyaWN0
Jztcblx0XG5cdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwg
e1xuXHQgIHZhbHVlOiB0cnVlXG5cdH0pO1xuXHRcblx0dmFyIF9leHRlbmRzID0gT2JqZWN0LmFz
c2lnbiB8fCBmdW5jdGlvbiAodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRz
Lmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07IGZvciAodmFyIGtleSBp
biBzb3VyY2UpIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3Vy
Y2UsIGtleSkpIHsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IH0gcmV0dXJuIHRhcmdl
dDsgfTtcblx0XG5cdHZhciBfY3JlYXRlQ2xhc3MgPSBmdW5jdGlvbiAoKSB7IGZ1bmN0aW9uIGRl
ZmluZVByb3BlcnRpZXModGFyZ2V0LCBwcm9wcykgeyBmb3IgKHZhciBpID0gMDsgaSA8IHByb3Bz
Lmxlbmd0aDsgaSsrKSB7IHZhciBkZXNjcmlwdG9yID0gcHJvcHNbaV07IGRlc2NyaXB0b3IuZW51
bWVyYWJsZSA9IGRlc2NyaXB0b3IuZW51bWVyYWJsZSB8fCBmYWxzZTsgZGVzY3JpcHRvci5jb25m
aWd1cmFibGUgPSB0cnVlOyBpZiAoXCJ2YWx1ZVwiIGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3Iu
d3JpdGFibGUgPSB0cnVlOyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBkZXNjcmlwdG9y
LmtleSwgZGVzY3JpcHRvcik7IH0gfSByZXR1cm4gZnVuY3Rpb24gKENvbnN0cnVjdG9yLCBwcm90
b1Byb3BzLCBzdGF0aWNQcm9wcykgeyBpZiAocHJvdG9Qcm9wcykgZGVmaW5lUHJvcGVydGllcyhD
b25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpOyBpZiAoc3RhdGljUHJvcHMpIGRlZmlu
ZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTsgcmV0dXJuIENvbnN0cnVjdG9y
OyB9OyB9KCk7XG5cdFxuXHR2YXIgX1RPRE9fRklMVEVSUztcblx0XG5cdHZhciBfcmVhY3QgPSBf
X3dlYnBhY2tfcmVxdWlyZV9fKDEyKTtcblx0XG5cdHZhciBfcmVhY3QyID0gX2ludGVyb3BSZXF1
aXJlRGVmYXVsdChfcmVhY3QpO1xuXHRcblx0dmFyIF9Ub2RvSXRlbSA9IF9fd2VicGFja19yZXF1
aXJlX18oMjAyKTtcblx0XG5cdHZhciBfVG9kb0l0ZW0yID0gX2ludGVyb3BSZXF1aXJlRGVmYXVs
dChfVG9kb0l0ZW0pO1xuXHRcblx0dmFyIF9Gb290ZXIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE5
OSk7XG5cdFxuXHR2YXIgX0Zvb3RlcjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9Gb290ZXIp
O1xuXHRcblx0dmFyIF9Ub2RvRmlsdGVycyA9IF9fd2VicGFja19yZXF1aXJlX18oODYpO1xuXHRc
blx0ZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBv
YmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblx0XG5cdGZ1bmN0aW9u
IF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2Ug
aW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBj
YWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKTsgfSB9XG5cdFxuXHRmdW5jdGlvbiBfcG9zc2li
bGVDb25zdHJ1Y3RvclJldHVybihzZWxmLCBjYWxsKSB7IGlmICghc2VsZikgeyB0aHJvdyBuZXcg
UmVmZXJlbmNlRXJyb3IoXCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBo
YXNuJ3QgYmVlbiBjYWxsZWRcIik7IH0gcmV0dXJuIGNhbGwgJiYgKHR5cGVvZiBjYWxsID09PSBc
Im9iamVjdFwiIHx8IHR5cGVvZiBjYWxsID09PSBcImZ1bmN0aW9uXCIpID8gY2FsbCA6IHNlbGY7
IH1cblx0XG5cdGZ1bmN0aW9uIF9pbmhlcml0cyhzdWJDbGFzcywgc3VwZXJDbGFzcykgeyBpZiAo
dHlwZW9mIHN1cGVyQ2xhc3MgIT09IFwiZnVuY3Rpb25cIiAmJiBzdXBlckNsYXNzICE9PSBudWxs
KSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJl
IG51bGwgb3IgYSBmdW5jdGlvbiwgbm90IFwiICsgdHlwZW9mIHN1cGVyQ2xhc3MpOyB9IHN1YkNs
YXNzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoc3VwZXJDbGFzcyAmJiBzdXBlckNsYXNzLnBy
b3RvdHlwZSwgeyBjb25zdHJ1Y3RvcjogeyB2YWx1ZTogc3ViQ2xhc3MsIGVudW1lcmFibGU6IGZh
bHNlLCB3cml0YWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlIH0gfSk7IGlmIChzdXBlckNs
YXNzKSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3Quc2V0UHJvdG90eXBlT2Yoc3ViQ2xh
c3MsIHN1cGVyQ2xhc3MpIDogc3ViQ2xhc3MuX19wcm90b19fID0gc3VwZXJDbGFzczsgfVxuXHRc
blx0ZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KG9iaiwga2V5LCB2YWx1ZSkgeyBpZiAoa2V5IGlu
IG9iaikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHsgdmFsdWU6IHZhbHVlLCBl
bnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlIH0pOyB9
IGVsc2UgeyBvYmpba2V5XSA9IHZhbHVlOyB9IHJldHVybiBvYmo7IH1cblx0XG5cdHZhciBUT0RP
X0ZJTFRFUlMgPSAoX1RPRE9fRklMVEVSUyA9IHt9LCBfZGVmaW5lUHJvcGVydHkoX1RPRE9fRklM
VEVSUywgX1RvZG9GaWx0ZXJzLlNIT1dfQUxMLCBmdW5jdGlvbiAoKSB7XG5cdCAgcmV0dXJuIHRy
dWU7XG5cdH0pLCBfZGVmaW5lUHJvcGVydHkoX1RPRE9fRklMVEVSUywgX1RvZG9GaWx0ZXJzLlNI
T1dfQUNUSVZFLCBmdW5jdGlvbiAodG9kbykge1xuXHQgIHJldHVybiAhdG9kby5jb21wbGV0ZWQ7
XG5cdH0pLCBfZGVmaW5lUHJvcGVydHkoX1RPRE9fRklMVEVSUywgX1RvZG9GaWx0ZXJzLlNIT1df
Q09NUExFVEVELCBmdW5jdGlvbiAodG9kbykge1xuXHQgIHJldHVybiB0b2RvLmNvbXBsZXRlZDtc
blx0fSksIF9UT0RPX0ZJTFRFUlMpO1xuXHRcblx0dmFyIE1haW5TZWN0aW9uID0gZnVuY3Rpb24g
KF9Db21wb25lbnQpIHtcblx0ICBfaW5oZXJpdHMoTWFpblNlY3Rpb24sIF9Db21wb25lbnQpO1xu
XHRcblx0ICBmdW5jdGlvbiBNYWluU2VjdGlvbigpIHtcblx0ICAgIHZhciBfcmVmO1xuXHRcblx0
ICAgIHZhciBfdGVtcCwgX3RoaXMsIF9yZXQ7XG5cdFxuXHQgICAgX2NsYXNzQ2FsbENoZWNrKHRo
aXMsIE1haW5TZWN0aW9uKTtcblx0XG5cdCAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxl
bmd0aCwgYXJncyA9IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykg
e1xuXHQgICAgICBhcmdzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuXHQgICAgfVxuXHRcblx0
ICAgIHJldHVybiBfcmV0ID0gKF90ZW1wID0gKF90aGlzID0gX3Bvc3NpYmxlQ29uc3RydWN0b3JS
ZXR1cm4odGhpcywgKF9yZWYgPSBNYWluU2VjdGlvbi5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFBy
b3RvdHlwZU9mKE1haW5TZWN0aW9uKSkuY2FsbC5hcHBseShfcmVmLCBbdGhpc10uY29uY2F0KGFy
Z3MpKSksIF90aGlzKSwgX3RoaXMuc3RhdGUgPSB7IGZpbHRlcjogX1RvZG9GaWx0ZXJzLlNIT1df
QUxMIH0sIF90aGlzLmhhbmRsZUNsZWFyQ29tcGxldGVkID0gZnVuY3Rpb24gKCkge1xuXHQgICAg
ICBfdGhpcy5wcm9wcy5hY3Rpb25zLmNsZWFyQ29tcGxldGVkKCk7XG5cdCAgICB9LCBfdGhpcy5o
YW5kbGVTaG93ID0gZnVuY3Rpb24gKGZpbHRlcikge1xuXHQgICAgICBfdGhpcy5zZXRTdGF0ZSh7
IGZpbHRlcjogZmlsdGVyIH0pO1xuXHQgICAgfSwgX3RlbXApLCBfcG9zc2libGVDb25zdHJ1Y3Rv
clJldHVybihfdGhpcywgX3JldCk7XG5cdCAgfVxuXHRcblx0ICBfY3JlYXRlQ2xhc3MoTWFpblNl
Y3Rpb24sIFt7XG5cdCAgICBrZXk6ICdyZW5kZXJUb2dnbGVBbGwnLFxuXHQgICAgdmFsdWU6IGZ1
bmN0aW9uIHJlbmRlclRvZ2dsZUFsbChjb21wbGV0ZWRDb3VudCkge1xuXHQgICAgICB2YXIgX3By
b3BzID0gdGhpcy5wcm9wcztcblx0ICAgICAgdmFyIHRvZG9zID0gX3Byb3BzLnRvZG9zO1xuXHQg
ICAgICB2YXIgYWN0aW9ucyA9IF9wcm9wcy5hY3Rpb25zO1xuXHRcblx0ICAgICAgaWYgKHRvZG9z
Lmxlbmd0aCA+IDApIHtcblx0ICAgICAgICByZXR1cm4gX3JlYWN0Mi5kZWZhdWx0LmNyZWF0ZUVs
ZW1lbnQoJ2lucHV0JywgeyBjbGFzc05hbWU6ICd0b2dnbGUtYWxsJyxcblx0ICAgICAgICAgIHR5
cGU6ICdjaGVja2JveCcsXG5cdCAgICAgICAgICBjaGVja2VkOiBjb21wbGV0ZWRDb3VudCA9PT0g
dG9kb3MubGVuZ3RoLFxuXHQgICAgICAgICAgb25DaGFuZ2U6IGFjdGlvbnMuY29tcGxldGVBbGwg
fSk7XG5cdCAgICAgIH1cblx0ICAgIH1cblx0ICB9LCB7XG5cdCAgICBrZXk6ICdyZW5kZXJGb290
ZXInLFxuXHQgICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlckZvb3Rlcihjb21wbGV0ZWRDb3VudCkg
e1xuXHQgICAgICB2YXIgdG9kb3MgPSB0aGlzLnByb3BzLnRvZG9zO1xuXHQgICAgICB2YXIgZmls
dGVyID0gdGhpcy5zdGF0ZS5maWx0ZXI7XG5cdFxuXHQgICAgICB2YXIgYWN0aXZlQ291bnQgPSB0
b2Rvcy5sZW5ndGggLSBjb21wbGV0ZWRDb3VudDtcblx0XG5cdCAgICAgIGlmICh0b2Rvcy5sZW5n
dGgpIHtcblx0ICAgICAgICByZXR1cm4gX3JlYWN0Mi5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoX0Zv
b3RlcjIuZGVmYXVsdCwgeyBjb21wbGV0ZWRDb3VudDogY29tcGxldGVkQ291bnQsXG5cdCAgICAg
ICAgICBhY3RpdmVDb3VudDogYWN0aXZlQ291bnQsXG5cdCAgICAgICAgICBmaWx0ZXI6IGZpbHRl
cixcblx0ICAgICAgICAgIG9uQ2xlYXJDb21wbGV0ZWQ6IHRoaXMuaGFuZGxlQ2xlYXJDb21wbGV0
ZWQuYmluZCh0aGlzKSxcblx0ICAgICAgICAgIG9uU2hvdzogdGhpcy5oYW5kbGVTaG93LmJpbmQo
dGhpcykgfSk7XG5cdCAgICAgIH1cblx0ICAgIH1cblx0ICB9LCB7XG5cdCAgICBrZXk6ICdyZW5k
ZXInLFxuXHQgICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlcigpIHtcblx0ICAgICAgdmFyIF9wcm9w
czIgPSB0aGlzLnByb3BzO1xuXHQgICAgICB2YXIgdG9kb3MgPSBfcHJvcHMyLnRvZG9zO1xuXHQg
ICAgICB2YXIgYWN0aW9ucyA9IF9wcm9wczIuYWN0aW9ucztcblx0ICAgICAgdmFyIGZpbHRlciA9
IHRoaXMuc3RhdGUuZmlsdGVyO1xuXHRcblx0XG5cdCAgICAgIHZhciBmaWx0ZXJlZFRvZG9zID0g
dG9kb3MuZmlsdGVyKFRPRE9fRklMVEVSU1tmaWx0ZXJdKTtcblx0ICAgICAgdmFyIGNvbXBsZXRl
ZENvdW50ID0gdG9kb3MucmVkdWNlKGZ1bmN0aW9uIChjb3VudCwgdG9kbykge1xuXHQgICAgICAg
IHJldHVybiB0b2RvLmNvbXBsZXRlZCA/IGNvdW50ICsgMSA6IGNvdW50O1xuXHQgICAgICB9LCAw
KTtcblx0XG5cdCAgICAgIHJldHVybiBfcmVhY3QyLmRlZmF1bHQuY3JlYXRlRWxlbWVudChcblx0
ICAgICAgICAnc2VjdGlvbicsXG5cdCAgICAgICAgeyBjbGFzc05hbWU6ICdtYWluJyB9LFxuXHQg
ICAgICAgIHRoaXMucmVuZGVyVG9nZ2xlQWxsKGNvbXBsZXRlZENvdW50KSxcblx0ICAgICAgICBf
cmVhY3QyLmRlZmF1bHQuY3JlYXRlRWxlbWVudChcblx0ICAgICAgICAgICd1bCcsXG5cdCAgICAg
ICAgICB7IGNsYXNzTmFtZTogJ3RvZG8tbGlzdCcgfSxcblx0ICAgICAgICAgIGZpbHRlcmVkVG9k
b3MubWFwKGZ1bmN0aW9uICh0b2RvKSB7XG5cdCAgICAgICAgICAgIHJldHVybiBfcmVhY3QyLmRl
ZmF1bHQuY3JlYXRlRWxlbWVudChfVG9kb0l0ZW0yLmRlZmF1bHQsIF9leHRlbmRzKHsga2V5OiB0
b2RvLmlkLCB0b2RvOiB0b2RvIH0sIGFjdGlvbnMpKTtcblx0ICAgICAgICAgIH0pXG5cdCAgICAg
ICAgKSxcblx0ICAgICAgICB0aGlzLnJlbmRlckZvb3Rlcihjb21wbGV0ZWRDb3VudClcblx0ICAg
ICAgKTtcblx0ICAgIH1cblx0ICB9XSk7XG5cdFxuXHQgIHJldHVybiBNYWluU2VjdGlvbjtcblx0
fShfcmVhY3QuQ29tcG9uZW50KTtcblx0XG5cdE1haW5TZWN0aW9uLnByb3BUeXBlcyA9IHtcblx0
ICB0b2RvczogX3JlYWN0LlByb3BUeXBlcy5hcnJheS5pc1JlcXVpcmVkLFxuXHQgIGFjdGlvbnM6
IF9yZWFjdC5Qcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWRcblx0fTtcblx0ZXhwb3J0cy5kZWZh
dWx0ID0gTWFpblNlY3Rpb247XG5cbi8qKiovIH0sXG4vKiAyMDIgKi9cbi8qKiovIGZ1bmN0aW9u
KG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdCd1c2Ugc3RyaWN0
Jztcblx0XG5cdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwg
e1xuXHQgIHZhbHVlOiB0cnVlXG5cdH0pO1xuXHRcblx0dmFyIF9jcmVhdGVDbGFzcyA9IGZ1bmN0
aW9uICgpIHsgZnVuY3Rpb24gZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7IGZvciAo
dmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHsgdmFyIGRlc2NyaXB0b3IgPSBwcm9w
c1tpXTsgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZh
bHNlOyBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7IGlmIChcInZhbHVlXCIgaW4gZGVz
Y3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7IE9iamVjdC5kZWZpbmVQcm9wZXJ0
eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTsgfSB9IHJldHVybiBmdW5jdGlv
biAoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7IGlmIChwcm90b1Byb3Bz
KSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7IGlm
IChzdGF0aWNQcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMp
OyByZXR1cm4gQ29uc3RydWN0b3I7IH07IH0oKTtcblx0XG5cdHZhciBfcmVhY3QgPSBfX3dlYnBh
Y2tfcmVxdWlyZV9fKDEyKTtcblx0XG5cdHZhciBfcmVhY3QyID0gX2ludGVyb3BSZXF1aXJlRGVm
YXVsdChfcmVhY3QpO1xuXHRcblx0dmFyIF9jbGFzc25hbWVzID0gX193ZWJwYWNrX3JlcXVpcmVf
XygzMSk7XG5cdFxuXHR2YXIgX2NsYXNzbmFtZXMyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChf
Y2xhc3NuYW1lcyk7XG5cdFxuXHR2YXIgX1RvZG9UZXh0SW5wdXQgPSBfX3dlYnBhY2tfcmVxdWly
ZV9fKDg0KTtcblx0XG5cdHZhciBfVG9kb1RleHRJbnB1dDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZh
dWx0KF9Ub2RvVGV4dElucHV0KTtcblx0XG5cdGZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1
bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6
IG9iaiB9OyB9XG5cdFxuXHRmdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0
cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93
IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7IH0g
fVxuXHRcblx0ZnVuY3Rpb24gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4oc2VsZiwgY2FsbCkg
eyBpZiAoIXNlbGYpIHsgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVl
biBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpOyB9IHJldHVybiBj
YWxsICYmICh0eXBlb2YgY2FsbCA9PT0gXCJvYmplY3RcIiB8fCB0eXBlb2YgY2FsbCA9PT0gXCJm
dW5jdGlvblwiKSA/IGNhbGwgOiBzZWxmOyB9XG5cdFxuXHRmdW5jdGlvbiBfaW5oZXJpdHMoc3Vi
Q2xhc3MsIHN1cGVyQ2xhc3MpIHsgaWYgKHR5cGVvZiBzdXBlckNsYXNzICE9PSBcImZ1bmN0aW9u
XCIgJiYgc3VwZXJDbGFzcyAhPT0gbnVsbCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIg
ZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCBcIiArIHR5
cGVvZiBzdXBlckNsYXNzKTsgfSBzdWJDbGFzcy5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHN1
cGVyQ2xhc3MgJiYgc3VwZXJDbGFzcy5wcm90b3R5cGUsIHsgY29uc3RydWN0b3I6IHsgdmFsdWU6
IHN1YkNsYXNzLCBlbnVtZXJhYmxlOiBmYWxzZSwgd3JpdGFibGU6IHRydWUsIGNvbmZpZ3VyYWJs
ZTogdHJ1ZSB9IH0pOyBpZiAoc3VwZXJDbGFzcykgT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2Jq
ZWN0LnNldFByb3RvdHlwZU9mKHN1YkNsYXNzLCBzdXBlckNsYXNzKSA6IHN1YkNsYXNzLl9fcHJv
dG9fXyA9IHN1cGVyQ2xhc3M7IH1cblx0XG5cdHZhciBUb2RvSXRlbSA9IGZ1bmN0aW9uIChfQ29t
cG9uZW50KSB7XG5cdCAgX2luaGVyaXRzKFRvZG9JdGVtLCBfQ29tcG9uZW50KTtcblx0XG5cdCAg
ZnVuY3Rpb24gVG9kb0l0ZW0oKSB7XG5cdCAgICB2YXIgX3JlZjtcblx0XG5cdCAgICB2YXIgX3Rl
bXAsIF90aGlzLCBfcmV0O1xuXHRcblx0ICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBUb2RvSXRl
bSk7XG5cdFxuXHQgICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBB
cnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcblx0ICAgICAgYXJn
c1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcblx0ICAgIH1cblx0XG5cdCAgICByZXR1cm4gX3Jl
dCA9IChfdGVtcCA9IChfdGhpcyA9IF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHRoaXMsIChf
cmVmID0gVG9kb0l0ZW0uX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZihUb2RvSXRl
bSkpLmNhbGwuYXBwbHkoX3JlZiwgW3RoaXNdLmNvbmNhdChhcmdzKSkpLCBfdGhpcyksIF90aGlz
LnN0YXRlID0ge1xuXHQgICAgICBlZGl0aW5nOiBmYWxzZVxuXHQgICAgfSwgX3RoaXMuaGFuZGxl
RG91YmxlQ2xpY2sgPSBmdW5jdGlvbiAoKSB7XG5cdCAgICAgIF90aGlzLnNldFN0YXRlKHsgZWRp
dGluZzogdHJ1ZSB9KTtcblx0ICAgIH0sIF90aGlzLmhhbmRsZVNhdmUgPSBmdW5jdGlvbiAoaWQs
IHRleHQpIHtcblx0ICAgICAgaWYgKHRleHQubGVuZ3RoID09PSAwKSB7XG5cdCAgICAgICAgX3Ro
aXMucHJvcHMuZGVsZXRlVG9kbyhpZCk7XG5cdCAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgX3Ro
aXMucHJvcHMuZWRpdFRvZG8oaWQsIHRleHQpO1xuXHQgICAgICB9XG5cdCAgICAgIF90aGlzLnNl
dFN0YXRlKHsgZWRpdGluZzogZmFsc2UgfSk7XG5cdCAgICB9LCBfdGVtcCksIF9wb3NzaWJsZUNv
bnN0cnVjdG9yUmV0dXJuKF90aGlzLCBfcmV0KTtcblx0ICB9XG5cdFxuXHQgIF9jcmVhdGVDbGFz
cyhUb2RvSXRlbSwgW3tcblx0ICAgIGtleTogJ3JlbmRlcicsXG5cdCAgICB2YWx1ZTogZnVuY3Rp
b24gcmVuZGVyKCkge1xuXHQgICAgICB2YXIgX3RoaXMyID0gdGhpcztcblx0XG5cdCAgICAgIHZh
ciBfcHJvcHMgPSB0aGlzLnByb3BzO1xuXHQgICAgICB2YXIgdG9kbyA9IF9wcm9wcy50b2RvO1xu
XHQgICAgICB2YXIgY29tcGxldGVUb2RvID0gX3Byb3BzLmNvbXBsZXRlVG9kbztcblx0ICAgICAg
dmFyIGRlbGV0ZVRvZG8gPSBfcHJvcHMuZGVsZXRlVG9kbztcblx0XG5cdFxuXHQgICAgICB2YXIg
ZWxlbWVudCA9IHZvaWQgMDtcblx0ICAgICAgaWYgKHRoaXMuc3RhdGUuZWRpdGluZykge1xuXHQg
ICAgICAgIGVsZW1lbnQgPSBfcmVhY3QyLmRlZmF1bHQuY3JlYXRlRWxlbWVudChfVG9kb1RleHRJ
bnB1dDIuZGVmYXVsdCwgeyB0ZXh0OiB0b2RvLnRleHQsXG5cdCAgICAgICAgICBlZGl0aW5nOiB0
aGlzLnN0YXRlLmVkaXRpbmcsXG5cdCAgICAgICAgICBvblNhdmU6IGZ1bmN0aW9uIG9uU2F2ZSh0
ZXh0KSB7XG5cdCAgICAgICAgICAgIHJldHVybiBfdGhpczIuaGFuZGxlU2F2ZSh0b2RvLmlkLCB0
ZXh0KTtcblx0ICAgICAgICAgIH0gfSk7XG5cdCAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgZWxl
bWVudCA9IF9yZWFjdDIuZGVmYXVsdC5jcmVhdGVFbGVtZW50KFxuXHQgICAgICAgICAgJ2Rpdics
XG5cdCAgICAgICAgICB7IGNsYXNzTmFtZTogJ3ZpZXcnIH0sXG5cdCAgICAgICAgICBfcmVhY3Qy
LmRlZmF1bHQuY3JlYXRlRWxlbWVudCgnaW5wdXQnLCB7IGNsYXNzTmFtZTogJ3RvZ2dsZScsXG5c
dCAgICAgICAgICAgIHR5cGU6ICdjaGVja2JveCcsXG5cdCAgICAgICAgICAgIGNoZWNrZWQ6IHRv
ZG8uY29tcGxldGVkLFxuXHQgICAgICAgICAgICBvbkNoYW5nZTogZnVuY3Rpb24gb25DaGFuZ2Uo
KSB7XG5cdCAgICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRlVG9kbyh0b2RvLmlkKTtcblx0ICAg
ICAgICAgICAgfSB9KSxcblx0ICAgICAgICAgIF9yZWFjdDIuZGVmYXVsdC5jcmVhdGVFbGVtZW50
KFxuXHQgICAgICAgICAgICAnbGFiZWwnLFxuXHQgICAgICAgICAgICB7IG9uRG91YmxlQ2xpY2s6
IHRoaXMuaGFuZGxlRG91YmxlQ2xpY2sgfSxcblx0ICAgICAgICAgICAgdG9kby50ZXh0XG5cdCAg
ICAgICAgICApLFxuXHQgICAgICAgICAgX3JlYWN0Mi5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoJ2J1
dHRvbicsIHsgY2xhc3NOYW1lOiAnZGVzdHJveScsXG5cdCAgICAgICAgICAgIG9uQ2xpY2s6IGZ1
bmN0aW9uIG9uQ2xpY2soKSB7XG5cdCAgICAgICAgICAgICAgcmV0dXJuIGRlbGV0ZVRvZG8odG9k
by5pZCk7XG5cdCAgICAgICAgICAgIH0gfSlcblx0ICAgICAgICApO1xuXHQgICAgICB9XG5cdFxu
XHQgICAgICByZXR1cm4gX3JlYWN0Mi5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXG5cdCAgICAgICAg
J2xpJyxcblx0ICAgICAgICB7IGNsYXNzTmFtZTogKDAsIF9jbGFzc25hbWVzMi5kZWZhdWx0KSh7
XG5cdCAgICAgICAgICAgIGNvbXBsZXRlZDogdG9kby5jb21wbGV0ZWQsXG5cdCAgICAgICAgICAg
IGVkaXRpbmc6IHRoaXMuc3RhdGUuZWRpdGluZ1xuXHQgICAgICAgICAgfSkgfSxcblx0ICAgICAg
ICBlbGVtZW50XG5cdCAgICAgICk7XG5cdCAgICB9XG5cdCAgfV0pO1xuXHRcblx0ICByZXR1cm4g
VG9kb0l0ZW07XG5cdH0oX3JlYWN0LkNvbXBvbmVudCk7XG5cdFxuXHRUb2RvSXRlbS5wcm9wVHlw
ZXMgPSB7XG5cdCAgdG9kbzogX3JlYWN0LlByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcblx0
ICBlZGl0VG9kbzogX3JlYWN0LlByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG5cdCAgZGVsZXRl
VG9kbzogX3JlYWN0LlByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG5cdCAgY29tcGxldGVUb2Rv
OiBfcmVhY3QuUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZFxuXHR9O1xuXHRleHBvcnRzLmRlZmF1
bHQgPSBUb2RvSXRlbTtcblxuLyoqKi8gfSxcbi8qIDIwMyAqL1xuLyoqKi8gZnVuY3Rpb24obW9k
dWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0J3VzZSBzdHJpY3QnO1xu
XHRcblx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG5c
dCAgdmFsdWU6IHRydWVcblx0fSk7XG5cdFxuXHR2YXIgX3JlYWN0ID0gX193ZWJwYWNrX3JlcXVp
cmVfXygxMik7XG5cdFxuXHR2YXIgX3JlYWN0MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3Jl
YWN0KTtcblx0XG5cdHZhciBfcmVkdXggPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMwKTtcblx0XG5c
dHZhciBfcmVhY3RSZWR1eCA9IF9fd2VicGFja19yZXF1aXJlX18oODEpO1xuXHRcblx0dmFyIF9I
ZWFkZXIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIwMCk7XG5cdFxuXHR2YXIgX0hlYWRlcjIgPSBf
aW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9IZWFkZXIpO1xuXHRcblx0dmFyIF9NYWluU2VjdGlvbiA9
IF9fd2VicGFja19yZXF1aXJlX18oMjAxKTtcblx0XG5cdHZhciBfTWFpblNlY3Rpb24yID0gX2lu
dGVyb3BSZXF1aXJlRGVmYXVsdChfTWFpblNlY3Rpb24pO1xuXHRcblx0dmFyIF9hY3Rpb25zID0g
X193ZWJwYWNrX3JlcXVpcmVfXygxOTgpO1xuXHRcblx0dmFyIFRvZG9BY3Rpb25zID0gX2ludGVy
b3BSZXF1aXJlV2lsZGNhcmQoX2FjdGlvbnMpO1xuXHRcblx0ZnVuY3Rpb24gX2ludGVyb3BSZXF1
aXJlV2lsZGNhcmQob2JqKSB7IGlmIChvYmogJiYgb2JqLl9fZXNNb2R1bGUpIHsgcmV0dXJuIG9i
ajsgfSBlbHNlIHsgdmFyIG5ld09iaiA9IHt9OyBpZiAob2JqICE9IG51bGwpIHsgZm9yICh2YXIg
a2V5IGluIG9iaikgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9i
aiwga2V5KSkgbmV3T2JqW2tleV0gPSBvYmpba2V5XTsgfSB9IG5ld09iai5kZWZhdWx0ID0gb2Jq
OyByZXR1cm4gbmV3T2JqOyB9IH1cblx0XG5cdGZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1
bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6
IG9iaiB9OyB9XG5cdFxuXHR2YXIgQXBwID0gZnVuY3Rpb24gQXBwKF9yZWYpIHtcblx0ICB2YXIg
dG9kb3MgPSBfcmVmLnRvZG9zO1xuXHQgIHZhciBhY3Rpb25zID0gX3JlZi5hY3Rpb25zO1xuXHQg
IHJldHVybiBfcmVhY3QyLmRlZmF1bHQuY3JlYXRlRWxlbWVudChcblx0ICAgICdkaXYnLFxuXHQg
ICAgbnVsbCxcblx0ICAgIF9yZWFjdDIuZGVmYXVsdC5jcmVhdGVFbGVtZW50KF9IZWFkZXIyLmRl
ZmF1bHQsIHsgYWRkVG9kbzogYWN0aW9ucy5hZGRUb2RvIH0pLFxuXHQgICAgX3JlYWN0Mi5kZWZh
dWx0LmNyZWF0ZUVsZW1lbnQoX01haW5TZWN0aW9uMi5kZWZhdWx0LCB7IHRvZG9zOiB0b2Rvcywg
YWN0aW9uczogYWN0aW9ucyB9KVxuXHQgICk7XG5cdH07XG5cdFxuXHRBcHAucHJvcFR5cGVzID0g
e1xuXHQgIHRvZG9zOiBfcmVhY3QuUHJvcFR5cGVzLmFycmF5LmlzUmVxdWlyZWQsXG5cdCAgYWN0
aW9uczogX3JlYWN0LlByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZFxuXHR9O1xuXHRcblx0dmFy
IG1hcFN0YXRlVG9Qcm9wcyA9IGZ1bmN0aW9uIG1hcFN0YXRlVG9Qcm9wcyhzdGF0ZSkge1xuXHQg
IHJldHVybiB7XG5cdCAgICB0b2Rvczogc3RhdGUudG9kb3Ncblx0ICB9O1xuXHR9O1xuXHRcblx0
dmFyIG1hcERpc3BhdGNoVG9Qcm9wcyA9IGZ1bmN0aW9uIG1hcERpc3BhdGNoVG9Qcm9wcyhkaXNw
YXRjaCkge1xuXHQgIHJldHVybiB7XG5cdCAgICBhY3Rpb25zOiAoMCwgX3JlZHV4LmJpbmRBY3Rp
b25DcmVhdG9ycykoVG9kb0FjdGlvbnMsIGRpc3BhdGNoKVxuXHQgIH07XG5cdH07XG5cdFxuXHRl
eHBvcnRzLmRlZmF1bHQgPSAoMCwgX3JlYWN0UmVkdXguY29ubmVjdCkobWFwU3RhdGVUb1Byb3Bz
LCBtYXBEaXNwYXRjaFRvUHJvcHMpKEFwcCk7XG5cbi8qKiovIH0sXG4vKiAyMDQgKi9cbi8qKiov
IGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdCd1
c2Ugc3RyaWN0Jztcblx0XG5cdHZhciBfcmVhY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEyKTtc
blx0XG5cdHZhciBfcmVhY3QyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfcmVhY3QpO1xuXHRc
blx0dmFyIF9yZWFjdERvbSA9IF9fd2VicGFja19yZXF1aXJlX18oMTIzKTtcblx0XG5cdHZhciBf
cmVkdXggPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMwKTtcblx0XG5cdHZhciBfcmVhY3RSZWR1eCA9
IF9fd2VicGFja19yZXF1aXJlX18oODEpO1xuXHRcblx0dmFyIF9BcHAgPSBfX3dlYnBhY2tfcmVx
dWlyZV9fKDIwMyk7XG5cdFxuXHR2YXIgX0FwcDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9B
cHApO1xuXHRcblx0dmFyIF9yZWR1Y2VycyA9IF9fd2VicGFja19yZXF1aXJlX18oMjA1KTtcblx0
XG5cdHZhciBfcmVkdWNlcnMyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfcmVkdWNlcnMpO1xu
XHRcblx0X193ZWJwYWNrX3JlcXVpcmVfXygyMDcpO1xuXHRcblx0ZnVuY3Rpb24gX2ludGVyb3BS
ZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6
IHsgZGVmYXVsdDogb2JqIH07IH1cblx0XG5cdHZhciBzdG9yZSA9ICgwLCBfcmVkdXguY3JlYXRl
U3RvcmUpKF9yZWR1Y2VyczIuZGVmYXVsdCk7XG5cdFxuXHQoMCwgX3JlYWN0RG9tLnJlbmRlciko
X3JlYWN0Mi5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXG5cdCAgX3JlYWN0UmVkdXguUHJvdmlkZXIs
XG5cdCAgeyBzdG9yZTogc3RvcmUgfSxcblx0ICBfcmVhY3QyLmRlZmF1bHQuY3JlYXRlRWxlbWVu
dChfQXBwMi5kZWZhdWx0LCBudWxsKVxuXHQpLCBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncm9v
dCcpKTtcblxuLyoqKi8gfSxcbi8qIDIwNSAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBv
cnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0T2Jq
ZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG5cdCAgdmFsdWU6
IHRydWVcblx0fSk7XG5cdFxuXHR2YXIgX3JlZHV4ID0gX193ZWJwYWNrX3JlcXVpcmVfXygzMCk7
XG5cdFxuXHR2YXIgX3RvZG9zID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMDYpO1xuXHRcblx0dmFy
IF90b2RvczIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF90b2Rvcyk7XG5cdFxuXHRmdW5jdGlv
biBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9k
dWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXHRcblx0dmFyIHJvb3RSZWR1Y2VyID0g
KDAsIF9yZWR1eC5jb21iaW5lUmVkdWNlcnMpKHtcblx0ICB0b2RvczogX3RvZG9zMi5kZWZhdWx0
XG5cdH0pO1xuXHRcblx0ZXhwb3J0cy5kZWZhdWx0ID0gcm9vdFJlZHVjZXI7XG5cbi8qKiovIH0s
XG4vKiAyMDYgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3Jl
cXVpcmVfXykge1xuXG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdE9iamVjdC5kZWZpbmVQcm9wZXJ0
eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuXHQgIHZhbHVlOiB0cnVlXG5cdH0pO1xuXHRc
blx0dmFyIF90eXBlb2YgPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgdHlwZW9m
IFN5bWJvbC5pdGVyYXRvciA9PT0gXCJzeW1ib2xcIiA/IGZ1bmN0aW9uIChvYmopIHsgcmV0dXJu
IHR5cGVvZiBvYmo7IH0gOiBmdW5jdGlvbiAob2JqKSB7IHJldHVybiBvYmogJiYgdHlwZW9mIFN5
bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9iai5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sID8gXCJz
eW1ib2xcIiA6IHR5cGVvZiBvYmo7IH07XG5cdFxuXHR2YXIgX2V4dGVuZHMgPSBPYmplY3QuYXNz
aWduIHx8IGZ1bmN0aW9uICh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMu
bGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTsgZm9yICh2YXIga2V5IGlu
IHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJj
ZSwga2V5KSkgeyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gfSByZXR1cm4gdGFyZ2V0
OyB9O1xuXHRcblx0ZXhwb3J0cy5kZWZhdWx0ID0gdG9kb3M7XG5cdFxuXHR2YXIgX0FjdGlvblR5
cGVzID0gX193ZWJwYWNrX3JlcXVpcmVfXyg4NSk7XG5cdFxuXHRmdW5jdGlvbiBfdG9Db25zdW1h
YmxlQXJyYXkoYXJyKSB7IGlmIChBcnJheS5pc0FycmF5KGFycikpIHsgZm9yICh2YXIgaSA9IDAs
IGFycjIgPSBBcnJheShhcnIubGVuZ3RoKTsgaSA8IGFyci5sZW5ndGg7IGkrKykgeyBhcnIyW2ld
ID0gYXJyW2ldOyB9IHJldHVybiBhcnIyOyB9IGVsc2UgeyByZXR1cm4gQXJyYXkuZnJvbShhcnIp
OyB9IH1cblx0XG5cdHZhciBpbml0aWFsU3RhdGUgPSBbXTtcblx0XG5cdGZ1bmN0aW9uIHRvZG9z
KCkge1xuXHQgIHZhciBzdGF0ZSA9IGFyZ3VtZW50cy5sZW5ndGggPD0gMCB8fCBhcmd1bWVudHNb
MF0gPT09IHVuZGVmaW5lZCA/IGluaXRpYWxTdGF0ZSA6IGFyZ3VtZW50c1swXTtcblx0ICB2YXIg
YWN0aW9uID0gYXJndW1lbnRzWzFdO1xuXHRcblx0ICB2YXIgX3JldCA9IGZ1bmN0aW9uICgpIHtc
blx0ICAgIHN3aXRjaCAoYWN0aW9uLnR5cGUpIHtcblx0ICAgICAgY2FzZSBfQWN0aW9uVHlwZXMu
QUREX1RPRE86XG5cdCAgICAgICAgcmV0dXJuIHtcblx0ICAgICAgICAgIHY6IFt7XG5cdCAgICAg
ICAgICAgIGlkOiBzdGF0ZS5yZWR1Y2UoZnVuY3Rpb24gKG1heElkLCB0b2RvKSB7XG5cdCAgICAg
ICAgICAgICAgcmV0dXJuIE1hdGgubWF4KHRvZG8uaWQsIG1heElkKTtcblx0ICAgICAgICAgICAg
fSwgLTEpICsgMSxcblx0ICAgICAgICAgICAgY29tcGxldGVkOiBmYWxzZSxcblx0ICAgICAgICAg
ICAgdGV4dDogYWN0aW9uLnRleHRcblx0ICAgICAgICAgIH1dLmNvbmNhdChfdG9Db25zdW1hYmxl
QXJyYXkoc3RhdGUpKVxuXHQgICAgICAgIH07XG5cdFxuXHQgICAgICBjYXNlIF9BY3Rpb25UeXBl
cy5ERUxFVEVfVE9ETzpcblx0ICAgICAgICByZXR1cm4ge1xuXHQgICAgICAgICAgdjogc3RhdGUu
ZmlsdGVyKGZ1bmN0aW9uICh0b2RvKSB7XG5cdCAgICAgICAgICAgIHJldHVybiB0b2RvLmlkICE9
PSBhY3Rpb24uaWQ7XG5cdCAgICAgICAgICB9KVxuXHQgICAgICAgIH07XG5cdFxuXHQgICAgICBj
YXNlIF9BY3Rpb25UeXBlcy5FRElUX1RPRE86XG5cdCAgICAgICAgcmV0dXJuIHtcblx0ICAgICAg
ICAgIHY6IHN0YXRlLm1hcChmdW5jdGlvbiAodG9kbykge1xuXHQgICAgICAgICAgICByZXR1cm4g
dG9kby5pZCA9PT0gYWN0aW9uLmlkID8gX2V4dGVuZHMoe30sIHRvZG8sIHsgdGV4dDogYWN0aW9u
LnRleHQgfSkgOiB0b2RvO1xuXHQgICAgICAgICAgfSlcblx0ICAgICAgICB9O1xuXHRcblx0ICAg
ICAgY2FzZSBfQWN0aW9uVHlwZXMuQ09NUExFVEVfVE9ETzpcblx0ICAgICAgICByZXR1cm4ge1xu
XHQgICAgICAgICAgdjogc3RhdGUubWFwKGZ1bmN0aW9uICh0b2RvKSB7XG5cdCAgICAgICAgICAg
IHJldHVybiB0b2RvLmlkID09PSBhY3Rpb24uaWQgPyBfZXh0ZW5kcyh7fSwgdG9kbywgeyBjb21w
bGV0ZWQ6ICF0b2RvLmNvbXBsZXRlZCB9KSA6IHRvZG87XG5cdCAgICAgICAgICB9KVxuXHQgICAg
ICAgIH07XG5cdFxuXHQgICAgICBjYXNlIF9BY3Rpb25UeXBlcy5DT01QTEVURV9BTEw6XG5cdCAg
ICAgICAgdmFyIGFyZUFsbE1hcmtlZCA9IHN0YXRlLmV2ZXJ5KGZ1bmN0aW9uICh0b2RvKSB7XG5c
dCAgICAgICAgICByZXR1cm4gdG9kby5jb21wbGV0ZWQ7XG5cdCAgICAgICAgfSk7XG5cdCAgICAg
ICAgcmV0dXJuIHtcblx0ICAgICAgICAgIHY6IHN0YXRlLm1hcChmdW5jdGlvbiAodG9kbykge1xu
XHQgICAgICAgICAgICByZXR1cm4gX2V4dGVuZHMoe30sIHRvZG8sIHtcblx0ICAgICAgICAgICAg
ICBjb21wbGV0ZWQ6ICFhcmVBbGxNYXJrZWRcblx0ICAgICAgICAgICAgfSk7XG5cdCAgICAgICAg
ICB9KVxuXHQgICAgICAgIH07XG5cdFxuXHQgICAgICBjYXNlIF9BY3Rpb25UeXBlcy5DTEVBUl9D
T01QTEVURUQ6XG5cdCAgICAgICAgcmV0dXJuIHtcblx0ICAgICAgICAgIHY6IHN0YXRlLmZpbHRl
cihmdW5jdGlvbiAodG9kbykge1xuXHQgICAgICAgICAgICByZXR1cm4gdG9kby5jb21wbGV0ZWQg
PT09IGZhbHNlO1xuXHQgICAgICAgICAgfSlcblx0ICAgICAgICB9O1xuXHRcblx0ICAgICAgZGVm
YXVsdDpcblx0ICAgICAgICByZXR1cm4ge1xuXHQgICAgICAgICAgdjogc3RhdGVcblx0ICAgICAg
ICB9O1xuXHQgICAgfVxuXHQgIH0oKTtcblx0XG5cdCAgaWYgKCh0eXBlb2YgX3JldCA9PT0gJ3Vu
ZGVmaW5lZCcgPyAndW5kZWZpbmVkJyA6IF90eXBlb2YoX3JldCkpID09PSBcIm9iamVjdFwiKSBy
ZXR1cm4gX3JldC52O1xuXHR9XG5cbi8qKiovIH0sXG4vKiAyMDcgKi9cbi8qKiovIGZ1bmN0aW9u
KG1vZHVsZSwgZXhwb3J0cykge1xuXG5cdC8vIHJlbW92ZWQgYnkgZXh0cmFjdC10ZXh0LXdlYnBh
Y2stcGx1Z2luXG5cbi8qKiovIH0sXG4vKiAyMDggKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwg
ZXhwb3J0cykge1xuXG5cdCd1c2Ugc3RyaWN0Jztcblx0LyogZXNsaW50LWRpc2FibGUgbm8tdW51
c2VkLXZhcnMgKi9cblx0dmFyIGhhc093blByb3BlcnR5ID0gT2JqZWN0LnByb3RvdHlwZS5oYXNP
d25Qcm9wZXJ0eTtcblx0dmFyIHByb3BJc0VudW1lcmFibGUgPSBPYmplY3QucHJvdG90eXBlLnBy
b3BlcnR5SXNFbnVtZXJhYmxlO1xuXHRcblx0ZnVuY3Rpb24gdG9PYmplY3QodmFsKSB7XG5cdFx0
aWYgKHZhbCA9PT0gbnVsbCB8fCB2YWwgPT09IHVuZGVmaW5lZCkge1xuXHRcdFx0dGhyb3cgbmV3
IFR5cGVFcnJvcignT2JqZWN0LmFzc2lnbiBjYW5ub3QgYmUgY2FsbGVkIHdpdGggbnVsbCBvciB1
bmRlZmluZWQnKTtcblx0XHR9XG5cdFxuXHRcdHJldHVybiBPYmplY3QodmFsKTtcblx0fVxuXHRc
blx0ZnVuY3Rpb24gc2hvdWxkVXNlTmF0aXZlKCkge1xuXHRcdHRyeSB7XG5cdFx0XHRpZiAoIU9i
amVjdC5hc3NpZ24pIHtcblx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0fVxuXHRcblx0XHRc
dC8vIERldGVjdCBidWdneSBwcm9wZXJ0eSBlbnVtZXJhdGlvbiBvcmRlciBpbiBvbGRlciBWOCB2
ZXJzaW9ucy5cblx0XG5cdFx0XHQvLyBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvdjgvaXNz
dWVzL2RldGFpbD9pZD00MTE4XG5cdFx0XHR2YXIgdGVzdDEgPSBuZXcgU3RyaW5nKCdhYmMnKTsg
IC8vIGVzbGludC1kaXNhYmxlLWxpbmVcblx0XHRcdHRlc3QxWzVdID0gJ2RlJztcblx0XHRcdGlm
IChPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0ZXN0MSlbMF0gPT09ICc1Jykge1xuXHRcdFx0
XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9XG5cdFxuXHRcdFx0Ly8gaHR0cHM6Ly9idWdzLmNocm9t
aXVtLm9yZy9wL3Y4L2lzc3Vlcy9kZXRhaWw/aWQ9MzA1NlxuXHRcdFx0dmFyIHRlc3QyID0ge307
XG5cdFx0XHRmb3IgKHZhciBpID0gMDsgaSA8IDEwOyBpKyspIHtcblx0XHRcdFx0dGVzdDJbJ18n
ICsgU3RyaW5nLmZyb21DaGFyQ29kZShpKV0gPSBpO1xuXHRcdFx0fVxuXHRcdFx0dmFyIG9yZGVy
MiA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRlc3QyKS5tYXAoZnVuY3Rpb24gKG4pIHtc
blx0XHRcdFx0cmV0dXJuIHRlc3QyW25dO1xuXHRcdFx0fSk7XG5cdFx0XHRpZiAob3JkZXIyLmpv
aW4oJycpICE9PSAnMDEyMzQ1Njc4OScpIHtcblx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0
fVxuXHRcblx0XHRcdC8vIGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC92OC9pc3N1ZXMvZGV0
YWlsP2lkPTMwNTZcblx0XHRcdHZhciB0ZXN0MyA9IHt9O1xuXHRcdFx0J2FiY2RlZmdoaWprbG1u
b3BxcnN0Jy5zcGxpdCgnJykuZm9yRWFjaChmdW5jdGlvbiAobGV0dGVyKSB7XG5cdFx0XHRcdHRl
c3QzW2xldHRlcl0gPSBsZXR0ZXI7XG5cdFx0XHR9KTtcblx0XHRcdGlmIChPYmplY3Qua2V5cyhP
YmplY3QuYXNzaWduKHt9LCB0ZXN0MykpLmpvaW4oJycpICE9PVxuXHRcdFx0XHRcdCdhYmNkZWZn
aGlqa2xtbm9wcXJzdCcpIHtcblx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0fVxuXHRcblx0
XHRcdHJldHVybiB0cnVlO1xuXHRcdH0gY2F0Y2ggKGUpIHtcblx0XHRcdC8vIFdlIGRvbid0IGV4
cGVjdCBhbnkgb2YgdGhlIGFib3ZlIHRvIHRocm93LCBidXQgYmV0dGVyIHRvIGJlIHNhZmUuXG5c
dFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXHR9XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IHNo
b3VsZFVzZU5hdGl2ZSgpID8gT2JqZWN0LmFzc2lnbiA6IGZ1bmN0aW9uICh0YXJnZXQsIHNvdXJj
ZSkge1xuXHRcdHZhciBmcm9tO1xuXHRcdHZhciB0byA9IHRvT2JqZWN0KHRhcmdldCk7XG5cdFx0
dmFyIHN5bWJvbHM7XG5cdFxuXHRcdGZvciAodmFyIHMgPSAxOyBzIDwgYXJndW1lbnRzLmxlbmd0
aDsgcysrKSB7XG5cdFx0XHRmcm9tID0gT2JqZWN0KGFyZ3VtZW50c1tzXSk7XG5cdFxuXHRcdFx0
Zm9yICh2YXIga2V5IGluIGZyb20pIHtcblx0XHRcdFx0aWYgKGhhc093blByb3BlcnR5LmNhbGwo
ZnJvbSwga2V5KSkge1xuXHRcdFx0XHRcdHRvW2tleV0gPSBmcm9tW2tleV07XG5cdFx0XHRcdH1c
blx0XHRcdH1cblx0XG5cdFx0XHRpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykge1xu
XHRcdFx0XHRzeW1ib2xzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhmcm9tKTtcblx0
XHRcdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCBzeW1ib2xzLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRc
dFx0aWYgKHByb3BJc0VudW1lcmFibGUuY2FsbChmcm9tLCBzeW1ib2xzW2ldKSkge1xuXHRcdFx0
XHRcdFx0dG9bc3ltYm9sc1tpXV0gPSBmcm9tW3N5bWJvbHNbaV1dO1xuXHRcdFx0XHRcdH1cblx0
XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0XG5cdFx0cmV0dXJuIHRvO1xuXHR9O1xuXG5cbi8q
KiovIH0sXG4vKiAyMDkgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJw
YWNrX3JlcXVpcmVfXykge1xuXG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdC8vVGhpcyBmaWxlIGNv
bnRhaW5zIHRoZSBFUzYgZXh0ZW5zaW9ucyB0byB0aGUgY29yZSBQcm9taXNlcy9BKyBBUElcblx0
XG5cdHZhciBQcm9taXNlID0gX193ZWJwYWNrX3JlcXVpcmVfXyg4OCk7XG5cdFxuXHRtb2R1bGUu
ZXhwb3J0cyA9IFByb21pc2U7XG5cdFxuXHQvKiBTdGF0aWMgRnVuY3Rpb25zICovXG5cdFxuXHR2
YXIgVFJVRSA9IHZhbHVlUHJvbWlzZSh0cnVlKTtcblx0dmFyIEZBTFNFID0gdmFsdWVQcm9taXNl
KGZhbHNlKTtcblx0dmFyIE5VTEwgPSB2YWx1ZVByb21pc2UobnVsbCk7XG5cdHZhciBVTkRFRklO
RUQgPSB2YWx1ZVByb21pc2UodW5kZWZpbmVkKTtcblx0dmFyIFpFUk8gPSB2YWx1ZVByb21pc2Uo
MCk7XG5cdHZhciBFTVBUWVNUUklORyA9IHZhbHVlUHJvbWlzZSgnJyk7XG5cdFxuXHRmdW5jdGlv
biB2YWx1ZVByb21pc2UodmFsdWUpIHtcblx0ICB2YXIgcCA9IG5ldyBQcm9taXNlKFByb21pc2Uu
XzYxKTtcblx0ICBwLl84MSA9IDE7XG5cdCAgcC5fNjUgPSB2YWx1ZTtcblx0ICByZXR1cm4gcDtc
blx0fVxuXHRQcm9taXNlLnJlc29sdmUgPSBmdW5jdGlvbiAodmFsdWUpIHtcblx0ICBpZiAodmFs
dWUgaW5zdGFuY2VvZiBQcm9taXNlKSByZXR1cm4gdmFsdWU7XG5cdFxuXHQgIGlmICh2YWx1ZSA9
PT0gbnVsbCkgcmV0dXJuIE5VTEw7XG5cdCAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQpIHJldHVy
biBVTkRFRklORUQ7XG5cdCAgaWYgKHZhbHVlID09PSB0cnVlKSByZXR1cm4gVFJVRTtcblx0ICBp
ZiAodmFsdWUgPT09IGZhbHNlKSByZXR1cm4gRkFMU0U7XG5cdCAgaWYgKHZhbHVlID09PSAwKSBy
ZXR1cm4gWkVSTztcblx0ICBpZiAodmFsdWUgPT09ICcnKSByZXR1cm4gRU1QVFlTVFJJTkc7XG5c
dFxuXHQgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnIHx8IHR5cGVvZiB2YWx1ZSA9PT0g
J2Z1bmN0aW9uJykge1xuXHQgICAgdHJ5IHtcblx0ICAgICAgdmFyIHRoZW4gPSB2YWx1ZS50aGVu
O1xuXHQgICAgICBpZiAodHlwZW9mIHRoZW4gPT09ICdmdW5jdGlvbicpIHtcblx0ICAgICAgICBy
ZXR1cm4gbmV3IFByb21pc2UodGhlbi5iaW5kKHZhbHVlKSk7XG5cdCAgICAgIH1cblx0ICAgIH0g
Y2F0Y2ggKGV4KSB7XG5cdCAgICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2
ZSwgcmVqZWN0KSB7XG5cdCAgICAgICAgcmVqZWN0KGV4KTtcblx0ICAgICAgfSk7XG5cdCAgICB9
XG5cdCAgfVxuXHQgIHJldHVybiB2YWx1ZVByb21pc2UodmFsdWUpO1xuXHR9O1xuXHRcblx0UHJv
bWlzZS5hbGwgPSBmdW5jdGlvbiAoYXJyKSB7XG5cdCAgdmFyIGFyZ3MgPSBBcnJheS5wcm90b3R5
cGUuc2xpY2UuY2FsbChhcnIpO1xuXHRcblx0ICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24g
KHJlc29sdmUsIHJlamVjdCkge1xuXHQgICAgaWYgKGFyZ3MubGVuZ3RoID09PSAwKSByZXR1cm4g
cmVzb2x2ZShbXSk7XG5cdCAgICB2YXIgcmVtYWluaW5nID0gYXJncy5sZW5ndGg7XG5cdCAgICBm
dW5jdGlvbiByZXMoaSwgdmFsKSB7XG5cdCAgICAgIGlmICh2YWwgJiYgKHR5cGVvZiB2YWwgPT09
ICdvYmplY3QnIHx8IHR5cGVvZiB2YWwgPT09ICdmdW5jdGlvbicpKSB7XG5cdCAgICAgICAgaWYg
KHZhbCBpbnN0YW5jZW9mIFByb21pc2UgJiYgdmFsLnRoZW4gPT09IFByb21pc2UucHJvdG90eXBl
LnRoZW4pIHtcblx0ICAgICAgICAgIHdoaWxlICh2YWwuXzgxID09PSAzKSB7XG5cdCAgICAgICAg
ICAgIHZhbCA9IHZhbC5fNjU7XG5cdCAgICAgICAgICB9XG5cdCAgICAgICAgICBpZiAodmFsLl84
MSA9PT0gMSkgcmV0dXJuIHJlcyhpLCB2YWwuXzY1KTtcblx0ICAgICAgICAgIGlmICh2YWwuXzgx
ID09PSAyKSByZWplY3QodmFsLl82NSk7XG5cdCAgICAgICAgICB2YWwudGhlbihmdW5jdGlvbiAo
dmFsKSB7XG5cdCAgICAgICAgICAgIHJlcyhpLCB2YWwpO1xuXHQgICAgICAgICAgfSwgcmVqZWN0
KTtcblx0ICAgICAgICAgIHJldHVybjtcblx0ICAgICAgICB9IGVsc2Uge1xuXHQgICAgICAgICAg
dmFyIHRoZW4gPSB2YWwudGhlbjtcblx0ICAgICAgICAgIGlmICh0eXBlb2YgdGhlbiA9PT0gJ2Z1
bmN0aW9uJykge1xuXHQgICAgICAgICAgICB2YXIgcCA9IG5ldyBQcm9taXNlKHRoZW4uYmluZCh2
YWwpKTtcblx0ICAgICAgICAgICAgcC50aGVuKGZ1bmN0aW9uICh2YWwpIHtcblx0ICAgICAgICAg
ICAgICByZXMoaSwgdmFsKTtcblx0ICAgICAgICAgICAgfSwgcmVqZWN0KTtcblx0ICAgICAgICAg
ICAgcmV0dXJuO1xuXHQgICAgICAgICAgfVxuXHQgICAgICAgIH1cblx0ICAgICAgfVxuXHQgICAg
ICBhcmdzW2ldID0gdmFsO1xuXHQgICAgICBpZiAoLS1yZW1haW5pbmcgPT09IDApIHtcblx0ICAg
ICAgICByZXNvbHZlKGFyZ3MpO1xuXHQgICAgICB9XG5cdCAgICB9XG5cdCAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IGFyZ3MubGVuZ3RoOyBpKyspIHtcblx0ICAgICAgcmVzKGksIGFyZ3NbaV0pO1xu
XHQgICAgfVxuXHQgIH0pO1xuXHR9O1xuXHRcblx0UHJvbWlzZS5yZWplY3QgPSBmdW5jdGlvbiAo
dmFsdWUpIHtcblx0ICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVj
dCkge1xuXHQgICAgcmVqZWN0KHZhbHVlKTtcblx0ICB9KTtcblx0fTtcblx0XG5cdFByb21pc2Uu
cmFjZSA9IGZ1bmN0aW9uICh2YWx1ZXMpIHtcblx0ICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rp
b24gKHJlc29sdmUsIHJlamVjdCkge1xuXHQgICAgdmFsdWVzLmZvckVhY2goZnVuY3Rpb24odmFs
dWUpe1xuXHQgICAgICBQcm9taXNlLnJlc29sdmUodmFsdWUpLnRoZW4ocmVzb2x2ZSwgcmVqZWN0
KTtcblx0ICAgIH0pO1xuXHQgIH0pO1xuXHR9O1xuXHRcblx0LyogUHJvdG90eXBlIE1ldGhvZHMg
Ki9cblx0XG5cdFByb21pc2UucHJvdG90eXBlWydjYXRjaCddID0gZnVuY3Rpb24gKG9uUmVqZWN0
ZWQpIHtcblx0ICByZXR1cm4gdGhpcy50aGVuKG51bGwsIG9uUmVqZWN0ZWQpO1xuXHR9O1xuXG5c
bi8qKiovIH0sXG4vKiAyMTAgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193
ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdHZhciBQcm9taXNl
ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg4OCk7XG5cdFxuXHR2YXIgREVGQVVMVF9XSElURUxJU1Qg
PSBbXG5cdCAgUmVmZXJlbmNlRXJyb3IsXG5cdCAgVHlwZUVycm9yLFxuXHQgIFJhbmdlRXJyb3Jc
blx0XTtcblx0XG5cdHZhciBlbmFibGVkID0gZmFsc2U7XG5cdGV4cG9ydHMuZGlzYWJsZSA9IGRp
c2FibGU7XG5cdGZ1bmN0aW9uIGRpc2FibGUoKSB7XG5cdCAgZW5hYmxlZCA9IGZhbHNlO1xuXHQg
IFByb21pc2UuXzEwID0gbnVsbDtcblx0ICBQcm9taXNlLl85NyA9IG51bGw7XG5cdH1cblx0XG5c
dGV4cG9ydHMuZW5hYmxlID0gZW5hYmxlO1xuXHRmdW5jdGlvbiBlbmFibGUob3B0aW9ucykge1xu
XHQgIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuXHQgIGlmIChlbmFibGVkKSBkaXNhYmxlKCk7
XG5cdCAgZW5hYmxlZCA9IHRydWU7XG5cdCAgdmFyIGlkID0gMDtcblx0ICB2YXIgZGlzcGxheUlk
ID0gMDtcblx0ICB2YXIgcmVqZWN0aW9ucyA9IHt9O1xuXHQgIFByb21pc2UuXzEwID0gZnVuY3Rp
b24gKHByb21pc2UpIHtcblx0ICAgIGlmIChcblx0ICAgICAgcHJvbWlzZS5fODEgPT09IDIgJiYg
Ly8gSVMgUkVKRUNURURcblx0ICAgICAgcmVqZWN0aW9uc1twcm9taXNlLl83Ml1cblx0ICAgICkg
e1xuXHQgICAgICBpZiAocmVqZWN0aW9uc1twcm9taXNlLl83Ml0ubG9nZ2VkKSB7XG5cdCAgICAg
ICAgb25IYW5kbGVkKHByb21pc2UuXzcyKTtcblx0ICAgICAgfSBlbHNlIHtcblx0ICAgICAgICBj
bGVhclRpbWVvdXQocmVqZWN0aW9uc1twcm9taXNlLl83Ml0udGltZW91dCk7XG5cdCAgICAgIH1c
blx0ICAgICAgZGVsZXRlIHJlamVjdGlvbnNbcHJvbWlzZS5fNzJdO1xuXHQgICAgfVxuXHQgIH07
XG5cdCAgUHJvbWlzZS5fOTcgPSBmdW5jdGlvbiAocHJvbWlzZSwgZXJyKSB7XG5cdCAgICBpZiAo
cHJvbWlzZS5fNDUgPT09IDApIHsgLy8gbm90IHlldCBoYW5kbGVkXG5cdCAgICAgIHByb21pc2Uu
XzcyID0gaWQrKztcblx0ICAgICAgcmVqZWN0aW9uc1twcm9taXNlLl83Ml0gPSB7XG5cdCAgICAg
ICAgZGlzcGxheUlkOiBudWxsLFxuXHQgICAgICAgIGVycm9yOiBlcnIsXG5cdCAgICAgICAgdGlt
ZW91dDogc2V0VGltZW91dChcblx0ICAgICAgICAgIG9uVW5oYW5kbGVkLmJpbmQobnVsbCwgcHJv
bWlzZS5fNzIpLFxuXHQgICAgICAgICAgLy8gRm9yIHJlZmVyZW5jZSBlcnJvcnMgYW5kIHR5cGUg
ZXJyb3JzLCB0aGlzIGFsbW9zdCBhbHdheXNcblx0ICAgICAgICAgIC8vIG1lYW5zIHRoZSBwcm9n
cmFtbWVyIG1hZGUgYSBtaXN0YWtlLCBzbyBsb2cgdGhlbSBhZnRlciBqdXN0XG5cdCAgICAgICAg
ICAvLyAxMDBtc1xuXHQgICAgICAgICAgLy8gb3RoZXJ3aXNlLCB3YWl0IDIgc2Vjb25kcyB0byBz
ZWUgaWYgdGhleSBnZXQgaGFuZGxlZFxuXHQgICAgICAgICAgbWF0Y2hXaGl0ZWxpc3QoZXJyLCBE
RUZBVUxUX1dISVRFTElTVClcblx0ICAgICAgICAgICAgPyAxMDBcblx0ICAgICAgICAgICAgOiAy
MDAwXG5cdCAgICAgICAgKSxcblx0ICAgICAgICBsb2dnZWQ6IGZhbHNlXG5cdCAgICAgIH07XG5c
dCAgICB9XG5cdCAgfTtcblx0ICBmdW5jdGlvbiBvblVuaGFuZGxlZChpZCkge1xuXHQgICAgaWYg
KFxuXHQgICAgICBvcHRpb25zLmFsbFJlamVjdGlvbnMgfHxcblx0ICAgICAgbWF0Y2hXaGl0ZWxp
c3QoXG5cdCAgICAgICAgcmVqZWN0aW9uc1tpZF0uZXJyb3IsXG5cdCAgICAgICAgb3B0aW9ucy53
aGl0ZWxpc3QgfHwgREVGQVVMVF9XSElURUxJU1Rcblx0ICAgICAgKVxuXHQgICAgKSB7XG5cdCAg
ICAgIHJlamVjdGlvbnNbaWRdLmRpc3BsYXlJZCA9IGRpc3BsYXlJZCsrO1xuXHQgICAgICBpZiAo
b3B0aW9ucy5vblVuaGFuZGxlZCkge1xuXHQgICAgICAgIHJlamVjdGlvbnNbaWRdLmxvZ2dlZCA9
IHRydWU7XG5cdCAgICAgICAgb3B0aW9ucy5vblVuaGFuZGxlZChcblx0ICAgICAgICAgIHJlamVj
dGlvbnNbaWRdLmRpc3BsYXlJZCxcblx0ICAgICAgICAgIHJlamVjdGlvbnNbaWRdLmVycm9yXG5c
dCAgICAgICAgKTtcblx0ICAgICAgfSBlbHNlIHtcblx0ICAgICAgICByZWplY3Rpb25zW2lkXS5s
b2dnZWQgPSB0cnVlO1xuXHQgICAgICAgIGxvZ0Vycm9yKFxuXHQgICAgICAgICAgcmVqZWN0aW9u
c1tpZF0uZGlzcGxheUlkLFxuXHQgICAgICAgICAgcmVqZWN0aW9uc1tpZF0uZXJyb3Jcblx0ICAg
ICAgICApO1xuXHQgICAgICB9XG5cdCAgICB9XG5cdCAgfVxuXHQgIGZ1bmN0aW9uIG9uSGFuZGxl
ZChpZCkge1xuXHQgICAgaWYgKHJlamVjdGlvbnNbaWRdLmxvZ2dlZCkge1xuXHQgICAgICBpZiAo
b3B0aW9ucy5vbkhhbmRsZWQpIHtcblx0ICAgICAgICBvcHRpb25zLm9uSGFuZGxlZChyZWplY3Rp
b25zW2lkXS5kaXNwbGF5SWQsIHJlamVjdGlvbnNbaWRdLmVycm9yKTtcblx0ICAgICAgfSBlbHNl
IGlmICghcmVqZWN0aW9uc1tpZF0ub25VbmhhbmRsZWQpIHtcblx0ICAgICAgICBjb25zb2xlLndh
cm4oXG5cdCAgICAgICAgICAnUHJvbWlzZSBSZWplY3Rpb24gSGFuZGxlZCAoaWQ6ICcgKyByZWpl
Y3Rpb25zW2lkXS5kaXNwbGF5SWQgKyAnKTonXG5cdCAgICAgICAgKTtcblx0ICAgICAgICBjb25z
b2xlLndhcm4oXG5cdCAgICAgICAgICAnICBUaGlzIG1lYW5zIHlvdSBjYW4gaWdub3JlIGFueSBw
cmV2aW91cyBtZXNzYWdlcyBvZiB0aGUgZm9ybSBcIlBvc3NpYmxlIFVuaGFuZGxlZCBQcm9taXNl
IFJlamVjdGlvblwiIHdpdGggaWQgJyArXG5cdCAgICAgICAgICByZWplY3Rpb25zW2lkXS5kaXNw
bGF5SWQgKyAnLidcblx0ICAgICAgICApO1xuXHQgICAgICB9XG5cdCAgICB9XG5cdCAgfVxuXHR9
XG5cdFxuXHRmdW5jdGlvbiBsb2dFcnJvcihpZCwgZXJyb3IpIHtcblx0ICBjb25zb2xlLndhcm4o
J1Bvc3NpYmxlIFVuaGFuZGxlZCBQcm9taXNlIFJlamVjdGlvbiAoaWQ6ICcgKyBpZCArICcpOicp
O1xuXHQgIHZhciBlcnJTdHIgPSAoZXJyb3IgJiYgKGVycm9yLnN0YWNrIHx8IGVycm9yKSkgKyAn
Jztcblx0ICBlcnJTdHIuc3BsaXQoJ1xcbicpLmZvckVhY2goZnVuY3Rpb24gKGxpbmUpIHtcblx0
ICAgIGNvbnNvbGUud2FybignICAnICsgbGluZSk7XG5cdCAgfSk7XG5cdH1cblx0XG5cdGZ1bmN0
aW9uIG1hdGNoV2hpdGVsaXN0KGVycm9yLCBsaXN0KSB7XG5cdCAgcmV0dXJuIGxpc3Quc29tZShm
dW5jdGlvbiAoY2xzKSB7XG5cdCAgICByZXR1cm4gZXJyb3IgaW5zdGFuY2VvZiBjbHM7XG5cdCAg
fSk7XG5cdH1cblxuLyoqKi8gfSxcbi8qIDIxMSAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBl
eHBvcnRzKSB7XG5cblx0bW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihtb2R1bGUpIHtcclxuXHRc
dGlmKCFtb2R1bGUud2VicGFja1BvbHlmaWxsKSB7XHJcblx0XHRcdG1vZHVsZS5kZXByZWNhdGUg
PSBmdW5jdGlvbigpIHt9O1xyXG5cdFx0XHRtb2R1bGUucGF0aHMgPSBbXTtcclxuXHRcdFx0Ly8g
bW9kdWxlLnBhcmVudCA9IHVuZGVmaW5lZCBieSBkZWZhdWx0XHJcblx0XHRcdG1vZHVsZS5jaGls
ZHJlbiA9IFtdO1xyXG5cdFx0XHRtb2R1bGUud2VicGFja1BvbHlmaWxsID0gMTtcclxuXHRcdH1c
clxuXHRcdHJldHVybiBtb2R1bGU7XHJcblx0fVxyXG5cblxuLyoqKi8gfSxcbi8qIDIxMiAqL1xu
LyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cblx0KGZ1bmN0aW9uKHNlbGYpIHtc
blx0ICAndXNlIHN0cmljdCc7XG5cdFxuXHQgIGlmIChzZWxmLmZldGNoKSB7XG5cdCAgICByZXR1
cm5cblx0ICB9XG5cdFxuXHQgIHZhciBzdXBwb3J0ID0ge1xuXHQgICAgc2VhcmNoUGFyYW1zOiAn
VVJMU2VhcmNoUGFyYW1zJyBpbiBzZWxmLFxuXHQgICAgaXRlcmFibGU6ICdTeW1ib2wnIGluIHNl
bGYgJiYgJ2l0ZXJhdG9yJyBpbiBTeW1ib2wsXG5cdCAgICBibG9iOiAnRmlsZVJlYWRlcicgaW4g
c2VsZiAmJiAnQmxvYicgaW4gc2VsZiAmJiAoZnVuY3Rpb24oKSB7XG5cdCAgICAgIHRyeSB7XG5c
dCAgICAgICAgbmV3IEJsb2IoKVxuXHQgICAgICAgIHJldHVybiB0cnVlXG5cdCAgICAgIH0gY2F0
Y2goZSkge1xuXHQgICAgICAgIHJldHVybiBmYWxzZVxuXHQgICAgICB9XG5cdCAgICB9KSgpLFxu
XHQgICAgZm9ybURhdGE6ICdGb3JtRGF0YScgaW4gc2VsZixcblx0ICAgIGFycmF5QnVmZmVyOiAn
QXJyYXlCdWZmZXInIGluIHNlbGZcblx0ICB9XG5cdFxuXHQgIGZ1bmN0aW9uIG5vcm1hbGl6ZU5h
bWUobmFtZSkge1xuXHQgICAgaWYgKHR5cGVvZiBuYW1lICE9PSAnc3RyaW5nJykge1xuXHQgICAg
ICBuYW1lID0gU3RyaW5nKG5hbWUpXG5cdCAgICB9XG5cdCAgICBpZiAoL1teYS16MC05XFwtIyQl
JicqKy5cXF5fYHx+XS9pLnRlc3QobmFtZSkpIHtcblx0ICAgICAgdGhyb3cgbmV3IFR5cGVFcnJv
cignSW52YWxpZCBjaGFyYWN0ZXIgaW4gaGVhZGVyIGZpZWxkIG5hbWUnKVxuXHQgICAgfVxuXHQg
ICAgcmV0dXJuIG5hbWUudG9Mb3dlckNhc2UoKVxuXHQgIH1cblx0XG5cdCAgZnVuY3Rpb24gbm9y
bWFsaXplVmFsdWUodmFsdWUpIHtcblx0ICAgIGlmICh0eXBlb2YgdmFsdWUgIT09ICdzdHJpbmcn
KSB7XG5cdCAgICAgIHZhbHVlID0gU3RyaW5nKHZhbHVlKVxuXHQgICAgfVxuXHQgICAgcmV0dXJu
IHZhbHVlXG5cdCAgfVxuXHRcblx0ICAvLyBCdWlsZCBhIGRlc3RydWN0aXZlIGl0ZXJhdG9yIGZv
ciB0aGUgdmFsdWUgbGlzdFxuXHQgIGZ1bmN0aW9uIGl0ZXJhdG9yRm9yKGl0ZW1zKSB7XG5cdCAg
ICB2YXIgaXRlcmF0b3IgPSB7XG5cdCAgICAgIG5leHQ6IGZ1bmN0aW9uKCkge1xuXHQgICAgICAg
IHZhciB2YWx1ZSA9IGl0ZW1zLnNoaWZ0KClcblx0ICAgICAgICByZXR1cm4ge2RvbmU6IHZhbHVl
ID09PSB1bmRlZmluZWQsIHZhbHVlOiB2YWx1ZX1cblx0ICAgICAgfVxuXHQgICAgfVxuXHRcblx0
ICAgIGlmIChzdXBwb3J0Lml0ZXJhYmxlKSB7XG5cdCAgICAgIGl0ZXJhdG9yW1N5bWJvbC5pdGVy
YXRvcl0gPSBmdW5jdGlvbigpIHtcblx0ICAgICAgICByZXR1cm4gaXRlcmF0b3Jcblx0ICAgICAg
fVxuXHQgICAgfVxuXHRcblx0ICAgIHJldHVybiBpdGVyYXRvclxuXHQgIH1cblx0XG5cdCAgZnVu
Y3Rpb24gSGVhZGVycyhoZWFkZXJzKSB7XG5cdCAgICB0aGlzLm1hcCA9IHt9XG5cdFxuXHQgICAg
aWYgKGhlYWRlcnMgaW5zdGFuY2VvZiBIZWFkZXJzKSB7XG5cdCAgICAgIGhlYWRlcnMuZm9yRWFj
aChmdW5jdGlvbih2YWx1ZSwgbmFtZSkge1xuXHQgICAgICAgIHRoaXMuYXBwZW5kKG5hbWUsIHZh
bHVlKVxuXHQgICAgICB9LCB0aGlzKVxuXHRcblx0ICAgIH0gZWxzZSBpZiAoaGVhZGVycykge1xu
XHQgICAgICBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhoZWFkZXJzKS5mb3JFYWNoKGZ1bmN0
aW9uKG5hbWUpIHtcblx0ICAgICAgICB0aGlzLmFwcGVuZChuYW1lLCBoZWFkZXJzW25hbWVdKVxu
XHQgICAgICB9LCB0aGlzKVxuXHQgICAgfVxuXHQgIH1cblx0XG5cdCAgSGVhZGVycy5wcm90b3R5
cGUuYXBwZW5kID0gZnVuY3Rpb24obmFtZSwgdmFsdWUpIHtcblx0ICAgIG5hbWUgPSBub3JtYWxp
emVOYW1lKG5hbWUpXG5cdCAgICB2YWx1ZSA9IG5vcm1hbGl6ZVZhbHVlKHZhbHVlKVxuXHQgICAg
dmFyIGxpc3QgPSB0aGlzLm1hcFtuYW1lXVxuXHQgICAgaWYgKCFsaXN0KSB7XG5cdCAgICAgIGxp
c3QgPSBbXVxuXHQgICAgICB0aGlzLm1hcFtuYW1lXSA9IGxpc3Rcblx0ICAgIH1cblx0ICAgIGxp
c3QucHVzaCh2YWx1ZSlcblx0ICB9XG5cdFxuXHQgIEhlYWRlcnMucHJvdG90eXBlWydkZWxldGUn
XSA9IGZ1bmN0aW9uKG5hbWUpIHtcblx0ICAgIGRlbGV0ZSB0aGlzLm1hcFtub3JtYWxpemVOYW1l
KG5hbWUpXVxuXHQgIH1cblx0XG5cdCAgSGVhZGVycy5wcm90b3R5cGUuZ2V0ID0gZnVuY3Rpb24o
bmFtZSkge1xuXHQgICAgdmFyIHZhbHVlcyA9IHRoaXMubWFwW25vcm1hbGl6ZU5hbWUobmFtZSld
XG5cdCAgICByZXR1cm4gdmFsdWVzID8gdmFsdWVzWzBdIDogbnVsbFxuXHQgIH1cblx0XG5cdCAg
SGVhZGVycy5wcm90b3R5cGUuZ2V0QWxsID0gZnVuY3Rpb24obmFtZSkge1xuXHQgICAgcmV0dXJu
IHRoaXMubWFwW25vcm1hbGl6ZU5hbWUobmFtZSldIHx8IFtdXG5cdCAgfVxuXHRcblx0ICBIZWFk
ZXJzLnByb3RvdHlwZS5oYXMgPSBmdW5jdGlvbihuYW1lKSB7XG5cdCAgICByZXR1cm4gdGhpcy5t
YXAuaGFzT3duUHJvcGVydHkobm9ybWFsaXplTmFtZShuYW1lKSlcblx0ICB9XG5cdFxuXHQgIEhl
YWRlcnMucHJvdG90eXBlLnNldCA9IGZ1bmN0aW9uKG5hbWUsIHZhbHVlKSB7XG5cdCAgICB0aGlz
Lm1hcFtub3JtYWxpemVOYW1lKG5hbWUpXSA9IFtub3JtYWxpemVWYWx1ZSh2YWx1ZSldXG5cdCAg
fVxuXHRcblx0ICBIZWFkZXJzLnByb3RvdHlwZS5mb3JFYWNoID0gZnVuY3Rpb24oY2FsbGJhY2ss
IHRoaXNBcmcpIHtcblx0ICAgIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXMubWFwKS5m
b3JFYWNoKGZ1bmN0aW9uKG5hbWUpIHtcblx0ICAgICAgdGhpcy5tYXBbbmFtZV0uZm9yRWFjaChm
dW5jdGlvbih2YWx1ZSkge1xuXHQgICAgICAgIGNhbGxiYWNrLmNhbGwodGhpc0FyZywgdmFsdWUs
IG5hbWUsIHRoaXMpXG5cdCAgICAgIH0sIHRoaXMpXG5cdCAgICB9LCB0aGlzKVxuXHQgIH1cblx0
XG5cdCAgSGVhZGVycy5wcm90b3R5cGUua2V5cyA9IGZ1bmN0aW9uKCkge1xuXHQgICAgdmFyIGl0
ZW1zID0gW11cblx0ICAgIHRoaXMuZm9yRWFjaChmdW5jdGlvbih2YWx1ZSwgbmFtZSkgeyBpdGVt
cy5wdXNoKG5hbWUpIH0pXG5cdCAgICByZXR1cm4gaXRlcmF0b3JGb3IoaXRlbXMpXG5cdCAgfVxu
XHRcblx0ICBIZWFkZXJzLnByb3RvdHlwZS52YWx1ZXMgPSBmdW5jdGlvbigpIHtcblx0ICAgIHZh
ciBpdGVtcyA9IFtdXG5cdCAgICB0aGlzLmZvckVhY2goZnVuY3Rpb24odmFsdWUpIHsgaXRlbXMu
cHVzaCh2YWx1ZSkgfSlcblx0ICAgIHJldHVybiBpdGVyYXRvckZvcihpdGVtcylcblx0ICB9XG5c
dFxuXHQgIEhlYWRlcnMucHJvdG90eXBlLmVudHJpZXMgPSBmdW5jdGlvbigpIHtcblx0ICAgIHZh
ciBpdGVtcyA9IFtdXG5cdCAgICB0aGlzLmZvckVhY2goZnVuY3Rpb24odmFsdWUsIG5hbWUpIHsg
aXRlbXMucHVzaChbbmFtZSwgdmFsdWVdKSB9KVxuXHQgICAgcmV0dXJuIGl0ZXJhdG9yRm9yKGl0
ZW1zKVxuXHQgIH1cblx0XG5cdCAgaWYgKHN1cHBvcnQuaXRlcmFibGUpIHtcblx0ICAgIEhlYWRl
cnMucHJvdG90eXBlW1N5bWJvbC5pdGVyYXRvcl0gPSBIZWFkZXJzLnByb3RvdHlwZS5lbnRyaWVz
XG5cdCAgfVxuXHRcblx0ICBmdW5jdGlvbiBjb25zdW1lZChib2R5KSB7XG5cdCAgICBpZiAoYm9k
eS5ib2R5VXNlZCkge1xuXHQgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IFR5cGVFcnJv
cignQWxyZWFkeSByZWFkJykpXG5cdCAgICB9XG5cdCAgICBib2R5LmJvZHlVc2VkID0gdHJ1ZVxu
XHQgIH1cblx0XG5cdCAgZnVuY3Rpb24gZmlsZVJlYWRlclJlYWR5KHJlYWRlcikge1xuXHQgICAg
cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkge1xuXHQgICAgICBy
ZWFkZXIub25sb2FkID0gZnVuY3Rpb24oKSB7XG5cdCAgICAgICAgcmVzb2x2ZShyZWFkZXIucmVz
dWx0KVxuXHQgICAgICB9XG5cdCAgICAgIHJlYWRlci5vbmVycm9yID0gZnVuY3Rpb24oKSB7XG5c
dCAgICAgICAgcmVqZWN0KHJlYWRlci5lcnJvcilcblx0ICAgICAgfVxuXHQgICAgfSlcblx0ICB9
XG5cdFxuXHQgIGZ1bmN0aW9uIHJlYWRCbG9iQXNBcnJheUJ1ZmZlcihibG9iKSB7XG5cdCAgICB2
YXIgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKVxuXHQgICAgcmVhZGVyLnJlYWRBc0FycmF5QnVm
ZmVyKGJsb2IpXG5cdCAgICByZXR1cm4gZmlsZVJlYWRlclJlYWR5KHJlYWRlcilcblx0ICB9XG5c
dFxuXHQgIGZ1bmN0aW9uIHJlYWRCbG9iQXNUZXh0KGJsb2IpIHtcblx0ICAgIHZhciByZWFkZXIg
PSBuZXcgRmlsZVJlYWRlcigpXG5cdCAgICByZWFkZXIucmVhZEFzVGV4dChibG9iKVxuXHQgICAg
cmV0dXJuIGZpbGVSZWFkZXJSZWFkeShyZWFkZXIpXG5cdCAgfVxuXHRcblx0ICBmdW5jdGlvbiBC
b2R5KCkge1xuXHQgICAgdGhpcy5ib2R5VXNlZCA9IGZhbHNlXG5cdFxuXHQgICAgdGhpcy5faW5p
dEJvZHkgPSBmdW5jdGlvbihib2R5KSB7XG5cdCAgICAgIHRoaXMuX2JvZHlJbml0ID0gYm9keVxu
XHQgICAgICBpZiAodHlwZW9mIGJvZHkgPT09ICdzdHJpbmcnKSB7XG5cdCAgICAgICAgdGhpcy5f
Ym9keVRleHQgPSBib2R5XG5cdCAgICAgIH0gZWxzZSBpZiAoc3VwcG9ydC5ibG9iICYmIEJsb2Iu
cHJvdG90eXBlLmlzUHJvdG90eXBlT2YoYm9keSkpIHtcblx0ICAgICAgICB0aGlzLl9ib2R5Qmxv
YiA9IGJvZHlcblx0ICAgICAgfSBlbHNlIGlmIChzdXBwb3J0LmZvcm1EYXRhICYmIEZvcm1EYXRh
LnByb3RvdHlwZS5pc1Byb3RvdHlwZU9mKGJvZHkpKSB7XG5cdCAgICAgICAgdGhpcy5fYm9keUZv
cm1EYXRhID0gYm9keVxuXHQgICAgICB9IGVsc2UgaWYgKHN1cHBvcnQuc2VhcmNoUGFyYW1zICYm
IFVSTFNlYXJjaFBhcmFtcy5wcm90b3R5cGUuaXNQcm90b3R5cGVPZihib2R5KSkge1xuXHQgICAg
ICAgIHRoaXMuX2JvZHlUZXh0ID0gYm9keS50b1N0cmluZygpXG5cdCAgICAgIH0gZWxzZSBpZiAo
IWJvZHkpIHtcblx0ICAgICAgICB0aGlzLl9ib2R5VGV4dCA9ICcnXG5cdCAgICAgIH0gZWxzZSBp
ZiAoc3VwcG9ydC5hcnJheUJ1ZmZlciAmJiBBcnJheUJ1ZmZlci5wcm90b3R5cGUuaXNQcm90b3R5
cGVPZihib2R5KSkge1xuXHQgICAgICAgIC8vIE9ubHkgc3VwcG9ydCBBcnJheUJ1ZmZlcnMgZm9y
IFBPU1QgbWV0aG9kLlxuXHQgICAgICAgIC8vIFJlY2VpdmluZyBBcnJheUJ1ZmZlcnMgaGFwcGVu
cyB2aWEgQmxvYnMsIGluc3RlYWQuXG5cdCAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgdGhyb3cg
bmV3IEVycm9yKCd1bnN1cHBvcnRlZCBCb2R5SW5pdCB0eXBlJylcblx0ICAgICAgfVxuXHRcblx0
ICAgICAgaWYgKCF0aGlzLmhlYWRlcnMuZ2V0KCdjb250ZW50LXR5cGUnKSkge1xuXHQgICAgICAg
IGlmICh0eXBlb2YgYm9keSA9PT0gJ3N0cmluZycpIHtcblx0ICAgICAgICAgIHRoaXMuaGVhZGVy
cy5zZXQoJ2NvbnRlbnQtdHlwZScsICd0ZXh0L3BsYWluO2NoYXJzZXQ9VVRGLTgnKVxuXHQgICAg
ICAgIH0gZWxzZSBpZiAodGhpcy5fYm9keUJsb2IgJiYgdGhpcy5fYm9keUJsb2IudHlwZSkge1xu
XHQgICAgICAgICAgdGhpcy5oZWFkZXJzLnNldCgnY29udGVudC10eXBlJywgdGhpcy5fYm9keUJs
b2IudHlwZSlcblx0ICAgICAgICB9IGVsc2UgaWYgKHN1cHBvcnQuc2VhcmNoUGFyYW1zICYmIFVS
TFNlYXJjaFBhcmFtcy5wcm90b3R5cGUuaXNQcm90b3R5cGVPZihib2R5KSkge1xuXHQgICAgICAg
ICAgdGhpcy5oZWFkZXJzLnNldCgnY29udGVudC10eXBlJywgJ2FwcGxpY2F0aW9uL3gtd3d3LWZv
cm0tdXJsZW5jb2RlZDtjaGFyc2V0PVVURi04Jylcblx0ICAgICAgICB9XG5cdCAgICAgIH1cblx0
ICAgIH1cblx0XG5cdCAgICBpZiAoc3VwcG9ydC5ibG9iKSB7XG5cdCAgICAgIHRoaXMuYmxvYiA9
IGZ1bmN0aW9uKCkge1xuXHQgICAgICAgIHZhciByZWplY3RlZCA9IGNvbnN1bWVkKHRoaXMpXG5c
dCAgICAgICAgaWYgKHJlamVjdGVkKSB7XG5cdCAgICAgICAgICByZXR1cm4gcmVqZWN0ZWRcblx0
ICAgICAgICB9XG5cdFxuXHQgICAgICAgIGlmICh0aGlzLl9ib2R5QmxvYikge1xuXHQgICAgICAg
ICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh0aGlzLl9ib2R5QmxvYilcblx0ICAgICAgICB9IGVs
c2UgaWYgKHRoaXMuX2JvZHlGb3JtRGF0YSkge1xuXHQgICAgICAgICAgdGhyb3cgbmV3IEVycm9y
KCdjb3VsZCBub3QgcmVhZCBGb3JtRGF0YSBib2R5IGFzIGJsb2InKVxuXHQgICAgICAgIH0gZWxz
ZSB7XG5cdCAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKG5ldyBCbG9iKFt0aGlzLl9i
b2R5VGV4dF0pKVxuXHQgICAgICAgIH1cblx0ICAgICAgfVxuXHRcblx0ICAgICAgdGhpcy5hcnJh
eUJ1ZmZlciA9IGZ1bmN0aW9uKCkge1xuXHQgICAgICAgIHJldHVybiB0aGlzLmJsb2IoKS50aGVu
KHJlYWRCbG9iQXNBcnJheUJ1ZmZlcilcblx0ICAgICAgfVxuXHRcblx0ICAgICAgdGhpcy50ZXh0
ID0gZnVuY3Rpb24oKSB7XG5cdCAgICAgICAgdmFyIHJlamVjdGVkID0gY29uc3VtZWQodGhpcylc
blx0ICAgICAgICBpZiAocmVqZWN0ZWQpIHtcblx0ICAgICAgICAgIHJldHVybiByZWplY3RlZFxu
XHQgICAgICAgIH1cblx0XG5cdCAgICAgICAgaWYgKHRoaXMuX2JvZHlCbG9iKSB7XG5cdCAgICAg
ICAgICByZXR1cm4gcmVhZEJsb2JBc1RleHQodGhpcy5fYm9keUJsb2IpXG5cdCAgICAgICAgfSBl
bHNlIGlmICh0aGlzLl9ib2R5Rm9ybURhdGEpIHtcblx0ICAgICAgICAgIHRocm93IG5ldyBFcnJv
cignY291bGQgbm90IHJlYWQgRm9ybURhdGEgYm9keSBhcyB0ZXh0Jylcblx0ICAgICAgICB9IGVs
c2Uge1xuXHQgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh0aGlzLl9ib2R5VGV4dClc
blx0ICAgICAgICB9XG5cdCAgICAgIH1cblx0ICAgIH0gZWxzZSB7XG5cdCAgICAgIHRoaXMudGV4
dCA9IGZ1bmN0aW9uKCkge1xuXHQgICAgICAgIHZhciByZWplY3RlZCA9IGNvbnN1bWVkKHRoaXMp
XG5cdCAgICAgICAgcmV0dXJuIHJlamVjdGVkID8gcmVqZWN0ZWQgOiBQcm9taXNlLnJlc29sdmUo
dGhpcy5fYm9keVRleHQpXG5cdCAgICAgIH1cblx0ICAgIH1cblx0XG5cdCAgICBpZiAoc3VwcG9y
dC5mb3JtRGF0YSkge1xuXHQgICAgICB0aGlzLmZvcm1EYXRhID0gZnVuY3Rpb24oKSB7XG5cdCAg
ICAgICAgcmV0dXJuIHRoaXMudGV4dCgpLnRoZW4oZGVjb2RlKVxuXHQgICAgICB9XG5cdCAgICB9
XG5cdFxuXHQgICAgdGhpcy5qc29uID0gZnVuY3Rpb24oKSB7XG5cdCAgICAgIHJldHVybiB0aGlz
LnRleHQoKS50aGVuKEpTT04ucGFyc2UpXG5cdCAgICB9XG5cdFxuXHQgICAgcmV0dXJuIHRoaXNc
blx0ICB9XG5cdFxuXHQgIC8vIEhUVFAgbWV0aG9kcyB3aG9zZSBjYXBpdGFsaXphdGlvbiBzaG91
bGQgYmUgbm9ybWFsaXplZFxuXHQgIHZhciBtZXRob2RzID0gWydERUxFVEUnLCAnR0VUJywgJ0hF
QUQnLCAnT1BUSU9OUycsICdQT1NUJywgJ1BVVCddXG5cdFxuXHQgIGZ1bmN0aW9uIG5vcm1hbGl6
ZU1ldGhvZChtZXRob2QpIHtcblx0ICAgIHZhciB1cGNhc2VkID0gbWV0aG9kLnRvVXBwZXJDYXNl
KClcblx0ICAgIHJldHVybiAobWV0aG9kcy5pbmRleE9mKHVwY2FzZWQpID4gLTEpID8gdXBjYXNl
ZCA6IG1ldGhvZFxuXHQgIH1cblx0XG5cdCAgZnVuY3Rpb24gUmVxdWVzdChpbnB1dCwgb3B0aW9u
cykge1xuXHQgICAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge31cblx0ICAgIHZhciBib2R5ID0gb3B0
aW9ucy5ib2R5XG5cdCAgICBpZiAoUmVxdWVzdC5wcm90b3R5cGUuaXNQcm90b3R5cGVPZihpbnB1
dCkpIHtcblx0ICAgICAgaWYgKGlucHV0LmJvZHlVc2VkKSB7XG5cdCAgICAgICAgdGhyb3cgbmV3
IFR5cGVFcnJvcignQWxyZWFkeSByZWFkJylcblx0ICAgICAgfVxuXHQgICAgICB0aGlzLnVybCA9
IGlucHV0LnVybFxuXHQgICAgICB0aGlzLmNyZWRlbnRpYWxzID0gaW5wdXQuY3JlZGVudGlhbHNc
blx0ICAgICAgaWYgKCFvcHRpb25zLmhlYWRlcnMpIHtcblx0ICAgICAgICB0aGlzLmhlYWRlcnMg
PSBuZXcgSGVhZGVycyhpbnB1dC5oZWFkZXJzKVxuXHQgICAgICB9XG5cdCAgICAgIHRoaXMubWV0
aG9kID0gaW5wdXQubWV0aG9kXG5cdCAgICAgIHRoaXMubW9kZSA9IGlucHV0Lm1vZGVcblx0ICAg
ICAgaWYgKCFib2R5KSB7XG5cdCAgICAgICAgYm9keSA9IGlucHV0Ll9ib2R5SW5pdFxuXHQgICAg
ICAgIGlucHV0LmJvZHlVc2VkID0gdHJ1ZVxuXHQgICAgICB9XG5cdCAgICB9IGVsc2Uge1xuXHQg
ICAgICB0aGlzLnVybCA9IGlucHV0XG5cdCAgICB9XG5cdFxuXHQgICAgdGhpcy5jcmVkZW50aWFs
cyA9IG9wdGlvbnMuY3JlZGVudGlhbHMgfHwgdGhpcy5jcmVkZW50aWFscyB8fCAnb21pdCdcblx0
ICAgIGlmIChvcHRpb25zLmhlYWRlcnMgfHwgIXRoaXMuaGVhZGVycykge1xuXHQgICAgICB0aGlz
LmhlYWRlcnMgPSBuZXcgSGVhZGVycyhvcHRpb25zLmhlYWRlcnMpXG5cdCAgICB9XG5cdCAgICB0
aGlzLm1ldGhvZCA9IG5vcm1hbGl6ZU1ldGhvZChvcHRpb25zLm1ldGhvZCB8fCB0aGlzLm1ldGhv
ZCB8fCAnR0VUJylcblx0ICAgIHRoaXMubW9kZSA9IG9wdGlvbnMubW9kZSB8fCB0aGlzLm1vZGUg
fHwgbnVsbFxuXHQgICAgdGhpcy5yZWZlcnJlciA9IG51bGxcblx0XG5cdCAgICBpZiAoKHRoaXMu
bWV0aG9kID09PSAnR0VUJyB8fCB0aGlzLm1ldGhvZCA9PT0gJ0hFQUQnKSAmJiBib2R5KSB7XG5c
dCAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0JvZHkgbm90IGFsbG93ZWQgZm9yIEdFVCBvciBI
RUFEIHJlcXVlc3RzJylcblx0ICAgIH1cblx0ICAgIHRoaXMuX2luaXRCb2R5KGJvZHkpXG5cdCAg
fVxuXHRcblx0ICBSZXF1ZXN0LnByb3RvdHlwZS5jbG9uZSA9IGZ1bmN0aW9uKCkge1xuXHQgICAg
cmV0dXJuIG5ldyBSZXF1ZXN0KHRoaXMpXG5cdCAgfVxuXHRcblx0ICBmdW5jdGlvbiBkZWNvZGUo
Ym9keSkge1xuXHQgICAgdmFyIGZvcm0gPSBuZXcgRm9ybURhdGEoKVxuXHQgICAgYm9keS50cmlt
KCkuc3BsaXQoJyYnKS5mb3JFYWNoKGZ1bmN0aW9uKGJ5dGVzKSB7XG5cdCAgICAgIGlmIChieXRl
cykge1xuXHQgICAgICAgIHZhciBzcGxpdCA9IGJ5dGVzLnNwbGl0KCc9Jylcblx0ICAgICAgICB2
YXIgbmFtZSA9IHNwbGl0LnNoaWZ0KCkucmVwbGFjZSgvXFwrL2csICcgJylcblx0ICAgICAgICB2
YXIgdmFsdWUgPSBzcGxpdC5qb2luKCc9JykucmVwbGFjZSgvXFwrL2csICcgJylcblx0ICAgICAg
ICBmb3JtLmFwcGVuZChkZWNvZGVVUklDb21wb25lbnQobmFtZSksIGRlY29kZVVSSUNvbXBvbmVu
dCh2YWx1ZSkpXG5cdCAgICAgIH1cblx0ICAgIH0pXG5cdCAgICByZXR1cm4gZm9ybVxuXHQgIH1c
blx0XG5cdCAgZnVuY3Rpb24gaGVhZGVycyh4aHIpIHtcblx0ICAgIHZhciBoZWFkID0gbmV3IEhl
YWRlcnMoKVxuXHQgICAgdmFyIHBhaXJzID0gKHhoci5nZXRBbGxSZXNwb25zZUhlYWRlcnMoKSB8
fCAnJykudHJpbSgpLnNwbGl0KCdcXG4nKVxuXHQgICAgcGFpcnMuZm9yRWFjaChmdW5jdGlvbiho
ZWFkZXIpIHtcblx0ICAgICAgdmFyIHNwbGl0ID0gaGVhZGVyLnRyaW0oKS5zcGxpdCgnOicpXG5c
dCAgICAgIHZhciBrZXkgPSBzcGxpdC5zaGlmdCgpLnRyaW0oKVxuXHQgICAgICB2YXIgdmFsdWUg
PSBzcGxpdC5qb2luKCc6JykudHJpbSgpXG5cdCAgICAgIGhlYWQuYXBwZW5kKGtleSwgdmFsdWUp
XG5cdCAgICB9KVxuXHQgICAgcmV0dXJuIGhlYWRcblx0ICB9XG5cdFxuXHQgIEJvZHkuY2FsbChS
ZXF1ZXN0LnByb3RvdHlwZSlcblx0XG5cdCAgZnVuY3Rpb24gUmVzcG9uc2UoYm9keUluaXQsIG9w
dGlvbnMpIHtcblx0ICAgIGlmICghb3B0aW9ucykge1xuXHQgICAgICBvcHRpb25zID0ge31cblx0
ICAgIH1cblx0XG5cdCAgICB0aGlzLnR5cGUgPSAnZGVmYXVsdCdcblx0ICAgIHRoaXMuc3RhdHVz
ID0gb3B0aW9ucy5zdGF0dXNcblx0ICAgIHRoaXMub2sgPSB0aGlzLnN0YXR1cyA+PSAyMDAgJiYg
dGhpcy5zdGF0dXMgPCAzMDBcblx0ICAgIHRoaXMuc3RhdHVzVGV4dCA9IG9wdGlvbnMuc3RhdHVz
VGV4dFxuXHQgICAgdGhpcy5oZWFkZXJzID0gb3B0aW9ucy5oZWFkZXJzIGluc3RhbmNlb2YgSGVh
ZGVycyA/IG9wdGlvbnMuaGVhZGVycyA6IG5ldyBIZWFkZXJzKG9wdGlvbnMuaGVhZGVycylcblx0
ICAgIHRoaXMudXJsID0gb3B0aW9ucy51cmwgfHwgJydcblx0ICAgIHRoaXMuX2luaXRCb2R5KGJv
ZHlJbml0KVxuXHQgIH1cblx0XG5cdCAgQm9keS5jYWxsKFJlc3BvbnNlLnByb3RvdHlwZSlcblx0
XG5cdCAgUmVzcG9uc2UucHJvdG90eXBlLmNsb25lID0gZnVuY3Rpb24oKSB7XG5cdCAgICByZXR1
cm4gbmV3IFJlc3BvbnNlKHRoaXMuX2JvZHlJbml0LCB7XG5cdCAgICAgIHN0YXR1czogdGhpcy5z
dGF0dXMsXG5cdCAgICAgIHN0YXR1c1RleHQ6IHRoaXMuc3RhdHVzVGV4dCxcblx0ICAgICAgaGVh
ZGVyczogbmV3IEhlYWRlcnModGhpcy5oZWFkZXJzKSxcblx0ICAgICAgdXJsOiB0aGlzLnVybFxu
XHQgICAgfSlcblx0ICB9XG5cdFxuXHQgIFJlc3BvbnNlLmVycm9yID0gZnVuY3Rpb24oKSB7XG5c
dCAgICB2YXIgcmVzcG9uc2UgPSBuZXcgUmVzcG9uc2UobnVsbCwge3N0YXR1czogMCwgc3RhdHVz
VGV4dDogJyd9KVxuXHQgICAgcmVzcG9uc2UudHlwZSA9ICdlcnJvcidcblx0ICAgIHJldHVybiBy
ZXNwb25zZVxuXHQgIH1cblx0XG5cdCAgdmFyIHJlZGlyZWN0U3RhdHVzZXMgPSBbMzAxLCAzMDIs
IDMwMywgMzA3LCAzMDhdXG5cdFxuXHQgIFJlc3BvbnNlLnJlZGlyZWN0ID0gZnVuY3Rpb24odXJs
LCBzdGF0dXMpIHtcblx0ICAgIGlmIChyZWRpcmVjdFN0YXR1c2VzLmluZGV4T2Yoc3RhdHVzKSA9
PT0gLTEpIHtcblx0ICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0ludmFsaWQgc3RhdHVzIGNv
ZGUnKVxuXHQgICAgfVxuXHRcblx0ICAgIHJldHVybiBuZXcgUmVzcG9uc2UobnVsbCwge3N0YXR1
czogc3RhdHVzLCBoZWFkZXJzOiB7bG9jYXRpb246IHVybH19KVxuXHQgIH1cblx0XG5cdCAgc2Vs
Zi5IZWFkZXJzID0gSGVhZGVyc1xuXHQgIHNlbGYuUmVxdWVzdCA9IFJlcXVlc3Rcblx0ICBzZWxm
LlJlc3BvbnNlID0gUmVzcG9uc2Vcblx0XG5cdCAgc2VsZi5mZXRjaCA9IGZ1bmN0aW9uKGlucHV0
LCBpbml0KSB7XG5cdCAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVq
ZWN0KSB7XG5cdCAgICAgIHZhciByZXF1ZXN0XG5cdCAgICAgIGlmIChSZXF1ZXN0LnByb3RvdHlw
ZS5pc1Byb3RvdHlwZU9mKGlucHV0KSAmJiAhaW5pdCkge1xuXHQgICAgICAgIHJlcXVlc3QgPSBp
bnB1dFxuXHQgICAgICB9IGVsc2Uge1xuXHQgICAgICAgIHJlcXVlc3QgPSBuZXcgUmVxdWVzdChp
bnB1dCwgaW5pdClcblx0ICAgICAgfVxuXHRcblx0ICAgICAgdmFyIHhociA9IG5ldyBYTUxIdHRw
UmVxdWVzdCgpXG5cdFxuXHQgICAgICBmdW5jdGlvbiByZXNwb25zZVVSTCgpIHtcblx0ICAgICAg
ICBpZiAoJ3Jlc3BvbnNlVVJMJyBpbiB4aHIpIHtcblx0ICAgICAgICAgIHJldHVybiB4aHIucmVz
cG9uc2VVUkxcblx0ICAgICAgICB9XG5cdFxuXHQgICAgICAgIC8vIEF2b2lkIHNlY3VyaXR5IHdh
cm5pbmdzIG9uIGdldFJlc3BvbnNlSGVhZGVyIHdoZW4gbm90IGFsbG93ZWQgYnkgQ09SU1xuXHQg
ICAgICAgIGlmICgvXlgtUmVxdWVzdC1VUkw6L20udGVzdCh4aHIuZ2V0QWxsUmVzcG9uc2VIZWFk
ZXJzKCkpKSB7XG5cdCAgICAgICAgICByZXR1cm4geGhyLmdldFJlc3BvbnNlSGVhZGVyKCdYLVJl
cXVlc3QtVVJMJylcblx0ICAgICAgICB9XG5cdFxuXHQgICAgICAgIHJldHVyblxuXHQgICAgICB9
XG5cdFxuXHQgICAgICB4aHIub25sb2FkID0gZnVuY3Rpb24oKSB7XG5cdCAgICAgICAgdmFyIG9w
dGlvbnMgPSB7XG5cdCAgICAgICAgICBzdGF0dXM6IHhoci5zdGF0dXMsXG5cdCAgICAgICAgICBz
dGF0dXNUZXh0OiB4aHIuc3RhdHVzVGV4dCxcblx0ICAgICAgICAgIGhlYWRlcnM6IGhlYWRlcnMo
eGhyKSxcblx0ICAgICAgICAgIHVybDogcmVzcG9uc2VVUkwoKVxuXHQgICAgICAgIH1cblx0ICAg
ICAgICB2YXIgYm9keSA9ICdyZXNwb25zZScgaW4geGhyID8geGhyLnJlc3BvbnNlIDogeGhyLnJl
c3BvbnNlVGV4dFxuXHQgICAgICAgIHJlc29sdmUobmV3IFJlc3BvbnNlKGJvZHksIG9wdGlvbnMp
KVxuXHQgICAgICB9XG5cdFxuXHQgICAgICB4aHIub25lcnJvciA9IGZ1bmN0aW9uKCkge1xuXHQg
ICAgICAgIHJlamVjdChuZXcgVHlwZUVycm9yKCdOZXR3b3JrIHJlcXVlc3QgZmFpbGVkJykpXG5c
dCAgICAgIH1cblx0XG5cdCAgICAgIHhoci5vbnRpbWVvdXQgPSBmdW5jdGlvbigpIHtcblx0ICAg
ICAgICByZWplY3QobmV3IFR5cGVFcnJvcignTmV0d29yayByZXF1ZXN0IGZhaWxlZCcpKVxuXHQg
ICAgICB9XG5cdFxuXHQgICAgICB4aHIub3BlbihyZXF1ZXN0Lm1ldGhvZCwgcmVxdWVzdC51cmws
IHRydWUpXG5cdFxuXHQgICAgICBpZiAocmVxdWVzdC5jcmVkZW50aWFscyA9PT0gJ2luY2x1ZGUn
KSB7XG5cdCAgICAgICAgeGhyLndpdGhDcmVkZW50aWFscyA9IHRydWVcblx0ICAgICAgfVxuXHRc
blx0ICAgICAgaWYgKCdyZXNwb25zZVR5cGUnIGluIHhociAmJiBzdXBwb3J0LmJsb2IpIHtcblx0
ICAgICAgICB4aHIucmVzcG9uc2VUeXBlID0gJ2Jsb2InXG5cdCAgICAgIH1cblx0XG5cdCAgICAg
IHJlcXVlc3QuaGVhZGVycy5mb3JFYWNoKGZ1bmN0aW9uKHZhbHVlLCBuYW1lKSB7XG5cdCAgICAg
ICAgeGhyLnNldFJlcXVlc3RIZWFkZXIobmFtZSwgdmFsdWUpXG5cdCAgICAgIH0pXG5cdFxuXHQg
ICAgICB4aHIuc2VuZCh0eXBlb2YgcmVxdWVzdC5fYm9keUluaXQgPT09ICd1bmRlZmluZWQnID8g
bnVsbCA6IHJlcXVlc3QuX2JvZHlJbml0KVxuXHQgICAgfSlcblx0ICB9XG5cdCAgc2VsZi5mZXRj
aC5wb2x5ZmlsbCA9IHRydWVcblx0fSkodHlwZW9mIHNlbGYgIT09ICd1bmRlZmluZWQnID8gc2Vs
ZiA6IHRoaXMpO1xuXG5cbi8qKiovIH0sXG4vKiAyMTMgKi9cbjM4LFxuLyogMjE0ICovXG5bMjMx
LCAyM10sXG4vKiAyMTUgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJw
YWNrX3JlcXVpcmVfXykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBG
YWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlz
IHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3Vu
ZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlz
IHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMg
Y2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5Llxu
XHQgKlxuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdHZhciBQb29sZWRDbGFzcyA9
IF9fd2VicGFja19yZXF1aXJlX18oMjE0KTtcblx0dmFyIFJlYWN0RWxlbWVudCA9IF9fd2VicGFj
a19yZXF1aXJlX18oMTgpO1xuXHRcblx0dmFyIGVtcHR5RnVuY3Rpb24gPSBfX3dlYnBhY2tfcmVx
dWlyZV9fKDcpO1xuXHR2YXIgdHJhdmVyc2VBbGxDaGlsZHJlbiA9IF9fd2VicGFja19yZXF1aXJl
X18oMjI0KTtcblx0XG5cdHZhciB0d29Bcmd1bWVudFBvb2xlciA9IFBvb2xlZENsYXNzLnR3b0Fy
Z3VtZW50UG9vbGVyO1xuXHR2YXIgZm91ckFyZ3VtZW50UG9vbGVyID0gUG9vbGVkQ2xhc3MuZm91
ckFyZ3VtZW50UG9vbGVyO1xuXHRcblx0dmFyIHVzZXJQcm92aWRlZEtleUVzY2FwZVJlZ2V4ID0g
L1xcLysvZztcblx0ZnVuY3Rpb24gZXNjYXBlVXNlclByb3ZpZGVkS2V5KHRleHQpIHtcblx0ICBy
ZXR1cm4gKCcnICsgdGV4dCkucmVwbGFjZSh1c2VyUHJvdmlkZWRLZXlFc2NhcGVSZWdleCwgJyQm
LycpO1xuXHR9XG5cdFxuXHQvKipcblx0ICogUG9vbGVkQ2xhc3MgcmVwcmVzZW50aW5nIHRoZSBi
b29ra2VlcGluZyBhc3NvY2lhdGVkIHdpdGggcGVyZm9ybWluZyBhIGNoaWxkXG5cdCAqIHRyYXZl
cnNhbC4gQWxsb3dzIGF2b2lkaW5nIGJpbmRpbmcgY2FsbGJhY2tzLlxuXHQgKlxuXHQgKiBAY29u
c3RydWN0b3IgRm9yRWFjaEJvb2tLZWVwaW5nXG5cdCAqIEBwYXJhbSB7IWZ1bmN0aW9ufSBmb3JF
YWNoRnVuY3Rpb24gRnVuY3Rpb24gdG8gcGVyZm9ybSB0cmF2ZXJzYWwgd2l0aC5cblx0ICogQHBh
cmFtIHs/Kn0gZm9yRWFjaENvbnRleHQgQ29udGV4dCB0byBwZXJmb3JtIGNvbnRleHQgd2l0aC5c
blx0ICovXG5cdGZ1bmN0aW9uIEZvckVhY2hCb29rS2VlcGluZyhmb3JFYWNoRnVuY3Rpb24sIGZv
ckVhY2hDb250ZXh0KSB7XG5cdCAgdGhpcy5mdW5jID0gZm9yRWFjaEZ1bmN0aW9uO1xuXHQgIHRo
aXMuY29udGV4dCA9IGZvckVhY2hDb250ZXh0O1xuXHQgIHRoaXMuY291bnQgPSAwO1xuXHR9XG5c
dEZvckVhY2hCb29rS2VlcGluZy5wcm90b3R5cGUuZGVzdHJ1Y3RvciA9IGZ1bmN0aW9uICgpIHtc
blx0ICB0aGlzLmZ1bmMgPSBudWxsO1xuXHQgIHRoaXMuY29udGV4dCA9IG51bGw7XG5cdCAgdGhp
cy5jb3VudCA9IDA7XG5cdH07XG5cdFBvb2xlZENsYXNzLmFkZFBvb2xpbmdUbyhGb3JFYWNoQm9v
a0tlZXBpbmcsIHR3b0FyZ3VtZW50UG9vbGVyKTtcblx0XG5cdGZ1bmN0aW9uIGZvckVhY2hTaW5n
bGVDaGlsZChib29rS2VlcGluZywgY2hpbGQsIG5hbWUpIHtcblx0ICB2YXIgZnVuYyA9IGJvb2tL
ZWVwaW5nLmZ1bmMsXG5cdCAgICAgIGNvbnRleHQgPSBib29rS2VlcGluZy5jb250ZXh0O1xuXHRc
blx0ICBmdW5jLmNhbGwoY29udGV4dCwgY2hpbGQsIGJvb2tLZWVwaW5nLmNvdW50KyspO1xuXHR9
XG5cdFxuXHQvKipcblx0ICogSXRlcmF0ZXMgdGhyb3VnaCBjaGlsZHJlbiB0aGF0IGFyZSB0eXBp
Y2FsbHkgc3BlY2lmaWVkIGFzIGBwcm9wcy5jaGlsZHJlbmAuXG5cdCAqXG5cdCAqIFNlZSBodHRw
czovL2ZhY2Vib29rLmdpdGh1Yi5pby9yZWFjdC9kb2NzL3RvcC1sZXZlbC1hcGkuaHRtbCNyZWFj
dC5jaGlsZHJlbi5mb3JlYWNoXG5cdCAqXG5cdCAqIFRoZSBwcm92aWRlZCBmb3JFYWNoRnVuYyhj
aGlsZCwgaW5kZXgpIHdpbGwgYmUgY2FsbGVkIGZvciBlYWNoXG5cdCAqIGxlYWYgY2hpbGQuXG5c
dCAqXG5cdCAqIEBwYXJhbSB7Pyp9IGNoaWxkcmVuIENoaWxkcmVuIHRyZWUgY29udGFpbmVyLlxu
XHQgKiBAcGFyYW0ge2Z1bmN0aW9uKCosIGludCl9IGZvckVhY2hGdW5jXG5cdCAqIEBwYXJhbSB7
Kn0gZm9yRWFjaENvbnRleHQgQ29udGV4dCBmb3IgZm9yRWFjaENvbnRleHQuXG5cdCAqL1xuXHRm
dW5jdGlvbiBmb3JFYWNoQ2hpbGRyZW4oY2hpbGRyZW4sIGZvckVhY2hGdW5jLCBmb3JFYWNoQ29u
dGV4dCkge1xuXHQgIGlmIChjaGlsZHJlbiA9PSBudWxsKSB7XG5cdCAgICByZXR1cm4gY2hpbGRy
ZW47XG5cdCAgfVxuXHQgIHZhciB0cmF2ZXJzZUNvbnRleHQgPSBGb3JFYWNoQm9va0tlZXBpbmcu
Z2V0UG9vbGVkKGZvckVhY2hGdW5jLCBmb3JFYWNoQ29udGV4dCk7XG5cdCAgdHJhdmVyc2VBbGxD
aGlsZHJlbihjaGlsZHJlbiwgZm9yRWFjaFNpbmdsZUNoaWxkLCB0cmF2ZXJzZUNvbnRleHQpO1xu
XHQgIEZvckVhY2hCb29rS2VlcGluZy5yZWxlYXNlKHRyYXZlcnNlQ29udGV4dCk7XG5cdH1cblx0
XG5cdC8qKlxuXHQgKiBQb29sZWRDbGFzcyByZXByZXNlbnRpbmcgdGhlIGJvb2trZWVwaW5nIGFz
c29jaWF0ZWQgd2l0aCBwZXJmb3JtaW5nIGEgY2hpbGRcblx0ICogbWFwcGluZy4gQWxsb3dzIGF2
b2lkaW5nIGJpbmRpbmcgY2FsbGJhY2tzLlxuXHQgKlxuXHQgKiBAY29uc3RydWN0b3IgTWFwQm9v
a0tlZXBpbmdcblx0ICogQHBhcmFtIHshKn0gbWFwUmVzdWx0IE9iamVjdCBjb250YWluaW5nIHRo
ZSBvcmRlcmVkIG1hcCBvZiByZXN1bHRzLlxuXHQgKiBAcGFyYW0geyFmdW5jdGlvbn0gbWFwRnVu
Y3Rpb24gRnVuY3Rpb24gdG8gcGVyZm9ybSBtYXBwaW5nIHdpdGguXG5cdCAqIEBwYXJhbSB7Pyp9
IG1hcENvbnRleHQgQ29udGV4dCB0byBwZXJmb3JtIG1hcHBpbmcgd2l0aC5cblx0ICovXG5cdGZ1
bmN0aW9uIE1hcEJvb2tLZWVwaW5nKG1hcFJlc3VsdCwga2V5UHJlZml4LCBtYXBGdW5jdGlvbiwg
bWFwQ29udGV4dCkge1xuXHQgIHRoaXMucmVzdWx0ID0gbWFwUmVzdWx0O1xuXHQgIHRoaXMua2V5
UHJlZml4ID0ga2V5UHJlZml4O1xuXHQgIHRoaXMuZnVuYyA9IG1hcEZ1bmN0aW9uO1xuXHQgIHRo
aXMuY29udGV4dCA9IG1hcENvbnRleHQ7XG5cdCAgdGhpcy5jb3VudCA9IDA7XG5cdH1cblx0TWFw
Qm9va0tlZXBpbmcucHJvdG90eXBlLmRlc3RydWN0b3IgPSBmdW5jdGlvbiAoKSB7XG5cdCAgdGhp
cy5yZXN1bHQgPSBudWxsO1xuXHQgIHRoaXMua2V5UHJlZml4ID0gbnVsbDtcblx0ICB0aGlzLmZ1
bmMgPSBudWxsO1xuXHQgIHRoaXMuY29udGV4dCA9IG51bGw7XG5cdCAgdGhpcy5jb3VudCA9IDA7
XG5cdH07XG5cdFBvb2xlZENsYXNzLmFkZFBvb2xpbmdUbyhNYXBCb29rS2VlcGluZywgZm91ckFy
Z3VtZW50UG9vbGVyKTtcblx0XG5cdGZ1bmN0aW9uIG1hcFNpbmdsZUNoaWxkSW50b0NvbnRleHQo
Ym9va0tlZXBpbmcsIGNoaWxkLCBjaGlsZEtleSkge1xuXHQgIHZhciByZXN1bHQgPSBib29rS2Vl
cGluZy5yZXN1bHQsXG5cdCAgICAgIGtleVByZWZpeCA9IGJvb2tLZWVwaW5nLmtleVByZWZpeCxc
blx0ICAgICAgZnVuYyA9IGJvb2tLZWVwaW5nLmZ1bmMsXG5cdCAgICAgIGNvbnRleHQgPSBib29r
S2VlcGluZy5jb250ZXh0O1xuXHRcblx0XG5cdCAgdmFyIG1hcHBlZENoaWxkID0gZnVuYy5jYWxs
KGNvbnRleHQsIGNoaWxkLCBib29rS2VlcGluZy5jb3VudCsrKTtcblx0ICBpZiAoQXJyYXkuaXNB
cnJheShtYXBwZWRDaGlsZCkpIHtcblx0ICAgIG1hcEludG9XaXRoS2V5UHJlZml4SW50ZXJuYWwo
bWFwcGVkQ2hpbGQsIHJlc3VsdCwgY2hpbGRLZXksIGVtcHR5RnVuY3Rpb24udGhhdFJldHVybnNB
cmd1bWVudCk7XG5cdCAgfSBlbHNlIGlmIChtYXBwZWRDaGlsZCAhPSBudWxsKSB7XG5cdCAgICBp
ZiAoUmVhY3RFbGVtZW50LmlzVmFsaWRFbGVtZW50KG1hcHBlZENoaWxkKSkge1xuXHQgICAgICBt
YXBwZWRDaGlsZCA9IFJlYWN0RWxlbWVudC5jbG9uZUFuZFJlcGxhY2VLZXkobWFwcGVkQ2hpbGQs
XG5cdCAgICAgIC8vIEtlZXAgYm90aCB0aGUgKG1hcHBlZCkgYW5kIG9sZCBrZXlzIGlmIHRoZXkg
ZGlmZmVyLCBqdXN0IGFzXG5cdCAgICAgIC8vIHRyYXZlcnNlQWxsQ2hpbGRyZW4gdXNlZCB0byBk
byBmb3Igb2JqZWN0cyBhcyBjaGlsZHJlblxuXHQgICAgICBrZXlQcmVmaXggKyAobWFwcGVkQ2hp
bGQua2V5ICYmICghY2hpbGQgfHwgY2hpbGQua2V5ICE9PSBtYXBwZWRDaGlsZC5rZXkpID8gZXNj
YXBlVXNlclByb3ZpZGVkS2V5KG1hcHBlZENoaWxkLmtleSkgKyAnLycgOiAnJykgKyBjaGlsZEtl
eSk7XG5cdCAgICB9XG5cdCAgICByZXN1bHQucHVzaChtYXBwZWRDaGlsZCk7XG5cdCAgfVxuXHR9
XG5cdFxuXHRmdW5jdGlvbiBtYXBJbnRvV2l0aEtleVByZWZpeEludGVybmFsKGNoaWxkcmVuLCBh
cnJheSwgcHJlZml4LCBmdW5jLCBjb250ZXh0KSB7XG5cdCAgdmFyIGVzY2FwZWRQcmVmaXggPSAn
Jztcblx0ICBpZiAocHJlZml4ICE9IG51bGwpIHtcblx0ICAgIGVzY2FwZWRQcmVmaXggPSBlc2Nh
cGVVc2VyUHJvdmlkZWRLZXkocHJlZml4KSArICcvJztcblx0ICB9XG5cdCAgdmFyIHRyYXZlcnNl
Q29udGV4dCA9IE1hcEJvb2tLZWVwaW5nLmdldFBvb2xlZChhcnJheSwgZXNjYXBlZFByZWZpeCwg
ZnVuYywgY29udGV4dCk7XG5cdCAgdHJhdmVyc2VBbGxDaGlsZHJlbihjaGlsZHJlbiwgbWFwU2lu
Z2xlQ2hpbGRJbnRvQ29udGV4dCwgdHJhdmVyc2VDb250ZXh0KTtcblx0ICBNYXBCb29rS2VlcGlu
Zy5yZWxlYXNlKHRyYXZlcnNlQ29udGV4dCk7XG5cdH1cblx0XG5cdC8qKlxuXHQgKiBNYXBzIGNo
aWxkcmVuIHRoYXQgYXJlIHR5cGljYWxseSBzcGVjaWZpZWQgYXMgYHByb3BzLmNoaWxkcmVuYC5c
blx0ICpcblx0ICogU2VlIGh0dHBzOi8vZmFjZWJvb2suZ2l0aHViLmlvL3JlYWN0L2RvY3MvdG9w
LWxldmVsLWFwaS5odG1sI3JlYWN0LmNoaWxkcmVuLm1hcFxuXHQgKlxuXHQgKiBUaGUgcHJvdmlk
ZWQgbWFwRnVuY3Rpb24oY2hpbGQsIGtleSwgaW5kZXgpIHdpbGwgYmUgY2FsbGVkIGZvciBlYWNo
XG5cdCAqIGxlYWYgY2hpbGQuXG5cdCAqXG5cdCAqIEBwYXJhbSB7Pyp9IGNoaWxkcmVuIENoaWxk
cmVuIHRyZWUgY29udGFpbmVyLlxuXHQgKiBAcGFyYW0ge2Z1bmN0aW9uKCosIGludCl9IGZ1bmMg
VGhlIG1hcCBmdW5jdGlvbi5cblx0ICogQHBhcmFtIHsqfSBjb250ZXh0IENvbnRleHQgZm9yIG1h
cEZ1bmN0aW9uLlxuXHQgKiBAcmV0dXJuIHtvYmplY3R9IE9iamVjdCBjb250YWluaW5nIHRoZSBv
cmRlcmVkIG1hcCBvZiByZXN1bHRzLlxuXHQgKi9cblx0ZnVuY3Rpb24gbWFwQ2hpbGRyZW4oY2hp
bGRyZW4sIGZ1bmMsIGNvbnRleHQpIHtcblx0ICBpZiAoY2hpbGRyZW4gPT0gbnVsbCkge1xuXHQg
ICAgcmV0dXJuIGNoaWxkcmVuO1xuXHQgIH1cblx0ICB2YXIgcmVzdWx0ID0gW107XG5cdCAgbWFw
SW50b1dpdGhLZXlQcmVmaXhJbnRlcm5hbChjaGlsZHJlbiwgcmVzdWx0LCBudWxsLCBmdW5jLCBj
b250ZXh0KTtcblx0ICByZXR1cm4gcmVzdWx0O1xuXHR9XG5cdFxuXHRmdW5jdGlvbiBmb3JFYWNo
U2luZ2xlQ2hpbGREdW1teSh0cmF2ZXJzZUNvbnRleHQsIGNoaWxkLCBuYW1lKSB7XG5cdCAgcmV0
dXJuIG51bGw7XG5cdH1cblx0XG5cdC8qKlxuXHQgKiBDb3VudCB0aGUgbnVtYmVyIG9mIGNoaWxk
cmVuIHRoYXQgYXJlIHR5cGljYWxseSBzcGVjaWZpZWQgYXNcblx0ICogYHByb3BzLmNoaWxkcmVu
YC5cblx0ICpcblx0ICogU2VlIGh0dHBzOi8vZmFjZWJvb2suZ2l0aHViLmlvL3JlYWN0L2RvY3Mv
dG9wLWxldmVsLWFwaS5odG1sI3JlYWN0LmNoaWxkcmVuLmNvdW50XG5cdCAqXG5cdCAqIEBwYXJh
bSB7Pyp9IGNoaWxkcmVuIENoaWxkcmVuIHRyZWUgY29udGFpbmVyLlxuXHQgKiBAcmV0dXJuIHtu
dW1iZXJ9IFRoZSBudW1iZXIgb2YgY2hpbGRyZW4uXG5cdCAqL1xuXHRmdW5jdGlvbiBjb3VudENo
aWxkcmVuKGNoaWxkcmVuLCBjb250ZXh0KSB7XG5cdCAgcmV0dXJuIHRyYXZlcnNlQWxsQ2hpbGRy
ZW4oY2hpbGRyZW4sIGZvckVhY2hTaW5nbGVDaGlsZER1bW15LCBudWxsKTtcblx0fVxuXHRcblx0
LyoqXG5cdCAqIEZsYXR0ZW4gYSBjaGlsZHJlbiBvYmplY3QgKHR5cGljYWxseSBzcGVjaWZpZWQg
YXMgYHByb3BzLmNoaWxkcmVuYCkgYW5kXG5cdCAqIHJldHVybiBhbiBhcnJheSB3aXRoIGFwcHJv
cHJpYXRlbHkgcmUta2V5ZWQgY2hpbGRyZW4uXG5cdCAqXG5cdCAqIFNlZSBodHRwczovL2ZhY2Vi
b29rLmdpdGh1Yi5pby9yZWFjdC9kb2NzL3RvcC1sZXZlbC1hcGkuaHRtbCNyZWFjdC5jaGlsZHJl
bi50b2FycmF5XG5cdCAqL1xuXHRmdW5jdGlvbiB0b0FycmF5KGNoaWxkcmVuKSB7XG5cdCAgdmFy
IHJlc3VsdCA9IFtdO1xuXHQgIG1hcEludG9XaXRoS2V5UHJlZml4SW50ZXJuYWwoY2hpbGRyZW4s
IHJlc3VsdCwgbnVsbCwgZW1wdHlGdW5jdGlvbi50aGF0UmV0dXJuc0FyZ3VtZW50KTtcblx0ICBy
ZXR1cm4gcmVzdWx0O1xuXHR9XG5cdFxuXHR2YXIgUmVhY3RDaGlsZHJlbiA9IHtcblx0ICBmb3JF
YWNoOiBmb3JFYWNoQ2hpbGRyZW4sXG5cdCAgbWFwOiBtYXBDaGlsZHJlbixcblx0ICBtYXBJbnRv
V2l0aEtleVByZWZpeEludGVybmFsOiBtYXBJbnRvV2l0aEtleVByZWZpeEludGVybmFsLFxuXHQg
IGNvdW50OiBjb3VudENoaWxkcmVuLFxuXHQgIHRvQXJyYXk6IHRvQXJyYXlcblx0fTtcblx0XG5c
dG1vZHVsZS5leHBvcnRzID0gUmVhY3RDaGlsZHJlbjtcblxuLyoqKi8gfSxcbi8qIDIxNiAqL1xu
LyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5c
blx0LyoqXG5cdCAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAq
IEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGlj
ZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNF
TlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFk
ZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhl
IFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqL1xuXHRcblx0
J3VzZSBzdHJpY3QnO1xuXHRcblx0dmFyIFJlYWN0RWxlbWVudCA9IF9fd2VicGFja19yZXF1aXJl
X18oMTgpO1xuXHRcblx0LyoqXG5cdCAqIENyZWF0ZSBhIGZhY3RvcnkgdGhhdCBjcmVhdGVzIEhU
TUwgdGFnIGVsZW1lbnRzLlxuXHQgKlxuXHQgKiBAcHJpdmF0ZVxuXHQgKi9cblx0dmFyIGNyZWF0
ZURPTUZhY3RvcnkgPSBSZWFjdEVsZW1lbnQuY3JlYXRlRmFjdG9yeTtcblx0aWYgKGZhbHNlKSB7
XG5cdCAgdmFyIFJlYWN0RWxlbWVudFZhbGlkYXRvciA9IHJlcXVpcmUoJy4vUmVhY3RFbGVtZW50
VmFsaWRhdG9yJyk7XG5cdCAgY3JlYXRlRE9NRmFjdG9yeSA9IFJlYWN0RWxlbWVudFZhbGlkYXRv
ci5jcmVhdGVGYWN0b3J5O1xuXHR9XG5cdFxuXHQvKipcblx0ICogQ3JlYXRlcyBhIG1hcHBpbmcg
ZnJvbSBzdXBwb3J0ZWQgSFRNTCB0YWdzIHRvIGBSZWFjdERPTUNvbXBvbmVudGAgY2xhc3Nlcy5c
blx0ICpcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0dmFyIFJlYWN0RE9NRmFjdG9yaWVzID0ge1xu
XHQgIGE6IGNyZWF0ZURPTUZhY3RvcnkoJ2EnKSxcblx0ICBhYmJyOiBjcmVhdGVET01GYWN0b3J5
KCdhYmJyJyksXG5cdCAgYWRkcmVzczogY3JlYXRlRE9NRmFjdG9yeSgnYWRkcmVzcycpLFxuXHQg
IGFyZWE6IGNyZWF0ZURPTUZhY3RvcnkoJ2FyZWEnKSxcblx0ICBhcnRpY2xlOiBjcmVhdGVET01G
YWN0b3J5KCdhcnRpY2xlJyksXG5cdCAgYXNpZGU6IGNyZWF0ZURPTUZhY3RvcnkoJ2FzaWRlJyks
XG5cdCAgYXVkaW86IGNyZWF0ZURPTUZhY3RvcnkoJ2F1ZGlvJyksXG5cdCAgYjogY3JlYXRlRE9N
RmFjdG9yeSgnYicpLFxuXHQgIGJhc2U6IGNyZWF0ZURPTUZhY3RvcnkoJ2Jhc2UnKSxcblx0ICBi
ZGk6IGNyZWF0ZURPTUZhY3RvcnkoJ2JkaScpLFxuXHQgIGJkbzogY3JlYXRlRE9NRmFjdG9yeSgn
YmRvJyksXG5cdCAgYmlnOiBjcmVhdGVET01GYWN0b3J5KCdiaWcnKSxcblx0ICBibG9ja3F1b3Rl
OiBjcmVhdGVET01GYWN0b3J5KCdibG9ja3F1b3RlJyksXG5cdCAgYm9keTogY3JlYXRlRE9NRmFj
dG9yeSgnYm9keScpLFxuXHQgIGJyOiBjcmVhdGVET01GYWN0b3J5KCdicicpLFxuXHQgIGJ1dHRv
bjogY3JlYXRlRE9NRmFjdG9yeSgnYnV0dG9uJyksXG5cdCAgY2FudmFzOiBjcmVhdGVET01GYWN0
b3J5KCdjYW52YXMnKSxcblx0ICBjYXB0aW9uOiBjcmVhdGVET01GYWN0b3J5KCdjYXB0aW9uJyks
XG5cdCAgY2l0ZTogY3JlYXRlRE9NRmFjdG9yeSgnY2l0ZScpLFxuXHQgIGNvZGU6IGNyZWF0ZURP
TUZhY3RvcnkoJ2NvZGUnKSxcblx0ICBjb2w6IGNyZWF0ZURPTUZhY3RvcnkoJ2NvbCcpLFxuXHQg
IGNvbGdyb3VwOiBjcmVhdGVET01GYWN0b3J5KCdjb2xncm91cCcpLFxuXHQgIGRhdGE6IGNyZWF0
ZURPTUZhY3RvcnkoJ2RhdGEnKSxcblx0ICBkYXRhbGlzdDogY3JlYXRlRE9NRmFjdG9yeSgnZGF0
YWxpc3QnKSxcblx0ICBkZDogY3JlYXRlRE9NRmFjdG9yeSgnZGQnKSxcblx0ICBkZWw6IGNyZWF0
ZURPTUZhY3RvcnkoJ2RlbCcpLFxuXHQgIGRldGFpbHM6IGNyZWF0ZURPTUZhY3RvcnkoJ2RldGFp
bHMnKSxcblx0ICBkZm46IGNyZWF0ZURPTUZhY3RvcnkoJ2RmbicpLFxuXHQgIGRpYWxvZzogY3Jl
YXRlRE9NRmFjdG9yeSgnZGlhbG9nJyksXG5cdCAgZGl2OiBjcmVhdGVET01GYWN0b3J5KCdkaXYn
KSxcblx0ICBkbDogY3JlYXRlRE9NRmFjdG9yeSgnZGwnKSxcblx0ICBkdDogY3JlYXRlRE9NRmFj
dG9yeSgnZHQnKSxcblx0ICBlbTogY3JlYXRlRE9NRmFjdG9yeSgnZW0nKSxcblx0ICBlbWJlZDog
Y3JlYXRlRE9NRmFjdG9yeSgnZW1iZWQnKSxcblx0ICBmaWVsZHNldDogY3JlYXRlRE9NRmFjdG9y
eSgnZmllbGRzZXQnKSxcblx0ICBmaWdjYXB0aW9uOiBjcmVhdGVET01GYWN0b3J5KCdmaWdjYXB0
aW9uJyksXG5cdCAgZmlndXJlOiBjcmVhdGVET01GYWN0b3J5KCdmaWd1cmUnKSxcblx0ICBmb290
ZXI6IGNyZWF0ZURPTUZhY3RvcnkoJ2Zvb3RlcicpLFxuXHQgIGZvcm06IGNyZWF0ZURPTUZhY3Rv
cnkoJ2Zvcm0nKSxcblx0ICBoMTogY3JlYXRlRE9NRmFjdG9yeSgnaDEnKSxcblx0ICBoMjogY3Jl
YXRlRE9NRmFjdG9yeSgnaDInKSxcblx0ICBoMzogY3JlYXRlRE9NRmFjdG9yeSgnaDMnKSxcblx0
ICBoNDogY3JlYXRlRE9NRmFjdG9yeSgnaDQnKSxcblx0ICBoNTogY3JlYXRlRE9NRmFjdG9yeSgn
aDUnKSxcblx0ICBoNjogY3JlYXRlRE9NRmFjdG9yeSgnaDYnKSxcblx0ICBoZWFkOiBjcmVhdGVE
T01GYWN0b3J5KCdoZWFkJyksXG5cdCAgaGVhZGVyOiBjcmVhdGVET01GYWN0b3J5KCdoZWFkZXIn
KSxcblx0ICBoZ3JvdXA6IGNyZWF0ZURPTUZhY3RvcnkoJ2hncm91cCcpLFxuXHQgIGhyOiBjcmVh
dGVET01GYWN0b3J5KCdocicpLFxuXHQgIGh0bWw6IGNyZWF0ZURPTUZhY3RvcnkoJ2h0bWwnKSxc
blx0ICBpOiBjcmVhdGVET01GYWN0b3J5KCdpJyksXG5cdCAgaWZyYW1lOiBjcmVhdGVET01GYWN0
b3J5KCdpZnJhbWUnKSxcblx0ICBpbWc6IGNyZWF0ZURPTUZhY3RvcnkoJ2ltZycpLFxuXHQgIGlu
cHV0OiBjcmVhdGVET01GYWN0b3J5KCdpbnB1dCcpLFxuXHQgIGluczogY3JlYXRlRE9NRmFjdG9y
eSgnaW5zJyksXG5cdCAga2JkOiBjcmVhdGVET01GYWN0b3J5KCdrYmQnKSxcblx0ICBrZXlnZW46
IGNyZWF0ZURPTUZhY3RvcnkoJ2tleWdlbicpLFxuXHQgIGxhYmVsOiBjcmVhdGVET01GYWN0b3J5
KCdsYWJlbCcpLFxuXHQgIGxlZ2VuZDogY3JlYXRlRE9NRmFjdG9yeSgnbGVnZW5kJyksXG5cdCAg
bGk6IGNyZWF0ZURPTUZhY3RvcnkoJ2xpJyksXG5cdCAgbGluazogY3JlYXRlRE9NRmFjdG9yeSgn
bGluaycpLFxuXHQgIG1haW46IGNyZWF0ZURPTUZhY3RvcnkoJ21haW4nKSxcblx0ICBtYXA6IGNy
ZWF0ZURPTUZhY3RvcnkoJ21hcCcpLFxuXHQgIG1hcms6IGNyZWF0ZURPTUZhY3RvcnkoJ21hcmsn
KSxcblx0ICBtZW51OiBjcmVhdGVET01GYWN0b3J5KCdtZW51JyksXG5cdCAgbWVudWl0ZW06IGNy
ZWF0ZURPTUZhY3RvcnkoJ21lbnVpdGVtJyksXG5cdCAgbWV0YTogY3JlYXRlRE9NRmFjdG9yeSgn
bWV0YScpLFxuXHQgIG1ldGVyOiBjcmVhdGVET01GYWN0b3J5KCdtZXRlcicpLFxuXHQgIG5hdjog
Y3JlYXRlRE9NRmFjdG9yeSgnbmF2JyksXG5cdCAgbm9zY3JpcHQ6IGNyZWF0ZURPTUZhY3Rvcnko
J25vc2NyaXB0JyksXG5cdCAgb2JqZWN0OiBjcmVhdGVET01GYWN0b3J5KCdvYmplY3QnKSxcblx0
ICBvbDogY3JlYXRlRE9NRmFjdG9yeSgnb2wnKSxcblx0ICBvcHRncm91cDogY3JlYXRlRE9NRmFj
dG9yeSgnb3B0Z3JvdXAnKSxcblx0ICBvcHRpb246IGNyZWF0ZURPTUZhY3RvcnkoJ29wdGlvbicp
LFxuXHQgIG91dHB1dDogY3JlYXRlRE9NRmFjdG9yeSgnb3V0cHV0JyksXG5cdCAgcDogY3JlYXRl
RE9NRmFjdG9yeSgncCcpLFxuXHQgIHBhcmFtOiBjcmVhdGVET01GYWN0b3J5KCdwYXJhbScpLFxu
XHQgIHBpY3R1cmU6IGNyZWF0ZURPTUZhY3RvcnkoJ3BpY3R1cmUnKSxcblx0ICBwcmU6IGNyZWF0
ZURPTUZhY3RvcnkoJ3ByZScpLFxuXHQgIHByb2dyZXNzOiBjcmVhdGVET01GYWN0b3J5KCdwcm9n
cmVzcycpLFxuXHQgIHE6IGNyZWF0ZURPTUZhY3RvcnkoJ3EnKSxcblx0ICBycDogY3JlYXRlRE9N
RmFjdG9yeSgncnAnKSxcblx0ICBydDogY3JlYXRlRE9NRmFjdG9yeSgncnQnKSxcblx0ICBydWJ5
OiBjcmVhdGVET01GYWN0b3J5KCdydWJ5JyksXG5cdCAgczogY3JlYXRlRE9NRmFjdG9yeSgncycp
LFxuXHQgIHNhbXA6IGNyZWF0ZURPTUZhY3RvcnkoJ3NhbXAnKSxcblx0ICBzY3JpcHQ6IGNyZWF0
ZURPTUZhY3RvcnkoJ3NjcmlwdCcpLFxuXHQgIHNlY3Rpb246IGNyZWF0ZURPTUZhY3RvcnkoJ3Nl
Y3Rpb24nKSxcblx0ICBzZWxlY3Q6IGNyZWF0ZURPTUZhY3RvcnkoJ3NlbGVjdCcpLFxuXHQgIHNt
YWxsOiBjcmVhdGVET01GYWN0b3J5KCdzbWFsbCcpLFxuXHQgIHNvdXJjZTogY3JlYXRlRE9NRmFj
dG9yeSgnc291cmNlJyksXG5cdCAgc3BhbjogY3JlYXRlRE9NRmFjdG9yeSgnc3BhbicpLFxuXHQg
IHN0cm9uZzogY3JlYXRlRE9NRmFjdG9yeSgnc3Ryb25nJyksXG5cdCAgc3R5bGU6IGNyZWF0ZURP
TUZhY3RvcnkoJ3N0eWxlJyksXG5cdCAgc3ViOiBjcmVhdGVET01GYWN0b3J5KCdzdWInKSxcblx0
ICBzdW1tYXJ5OiBjcmVhdGVET01GYWN0b3J5KCdzdW1tYXJ5JyksXG5cdCAgc3VwOiBjcmVhdGVE
T01GYWN0b3J5KCdzdXAnKSxcblx0ICB0YWJsZTogY3JlYXRlRE9NRmFjdG9yeSgndGFibGUnKSxc
blx0ICB0Ym9keTogY3JlYXRlRE9NRmFjdG9yeSgndGJvZHknKSxcblx0ICB0ZDogY3JlYXRlRE9N
RmFjdG9yeSgndGQnKSxcblx0ICB0ZXh0YXJlYTogY3JlYXRlRE9NRmFjdG9yeSgndGV4dGFyZWEn
KSxcblx0ICB0Zm9vdDogY3JlYXRlRE9NRmFjdG9yeSgndGZvb3QnKSxcblx0ICB0aDogY3JlYXRl
RE9NRmFjdG9yeSgndGgnKSxcblx0ICB0aGVhZDogY3JlYXRlRE9NRmFjdG9yeSgndGhlYWQnKSxc
blx0ICB0aW1lOiBjcmVhdGVET01GYWN0b3J5KCd0aW1lJyksXG5cdCAgdGl0bGU6IGNyZWF0ZURP
TUZhY3RvcnkoJ3RpdGxlJyksXG5cdCAgdHI6IGNyZWF0ZURPTUZhY3RvcnkoJ3RyJyksXG5cdCAg
dHJhY2s6IGNyZWF0ZURPTUZhY3RvcnkoJ3RyYWNrJyksXG5cdCAgdTogY3JlYXRlRE9NRmFjdG9y
eSgndScpLFxuXHQgIHVsOiBjcmVhdGVET01GYWN0b3J5KCd1bCcpLFxuXHQgICd2YXInOiBjcmVh
dGVET01GYWN0b3J5KCd2YXInKSxcblx0ICB2aWRlbzogY3JlYXRlRE9NRmFjdG9yeSgndmlkZW8n
KSxcblx0ICB3YnI6IGNyZWF0ZURPTUZhY3RvcnkoJ3dicicpLFxuXHRcblx0ICAvLyBTVkdcblx0
ICBjaXJjbGU6IGNyZWF0ZURPTUZhY3RvcnkoJ2NpcmNsZScpLFxuXHQgIGNsaXBQYXRoOiBjcmVh
dGVET01GYWN0b3J5KCdjbGlwUGF0aCcpLFxuXHQgIGRlZnM6IGNyZWF0ZURPTUZhY3RvcnkoJ2Rl
ZnMnKSxcblx0ICBlbGxpcHNlOiBjcmVhdGVET01GYWN0b3J5KCdlbGxpcHNlJyksXG5cdCAgZzog
Y3JlYXRlRE9NRmFjdG9yeSgnZycpLFxuXHQgIGltYWdlOiBjcmVhdGVET01GYWN0b3J5KCdpbWFn
ZScpLFxuXHQgIGxpbmU6IGNyZWF0ZURPTUZhY3RvcnkoJ2xpbmUnKSxcblx0ICBsaW5lYXJHcmFk
aWVudDogY3JlYXRlRE9NRmFjdG9yeSgnbGluZWFyR3JhZGllbnQnKSxcblx0ICBtYXNrOiBjcmVh
dGVET01GYWN0b3J5KCdtYXNrJyksXG5cdCAgcGF0aDogY3JlYXRlRE9NRmFjdG9yeSgncGF0aCcp
LFxuXHQgIHBhdHRlcm46IGNyZWF0ZURPTUZhY3RvcnkoJ3BhdHRlcm4nKSxcblx0ICBwb2x5Z29u
OiBjcmVhdGVET01GYWN0b3J5KCdwb2x5Z29uJyksXG5cdCAgcG9seWxpbmU6IGNyZWF0ZURPTUZh
Y3RvcnkoJ3BvbHlsaW5lJyksXG5cdCAgcmFkaWFsR3JhZGllbnQ6IGNyZWF0ZURPTUZhY3Rvcnko
J3JhZGlhbEdyYWRpZW50JyksXG5cdCAgcmVjdDogY3JlYXRlRE9NRmFjdG9yeSgncmVjdCcpLFxu
XHQgIHN0b3A6IGNyZWF0ZURPTUZhY3RvcnkoJ3N0b3AnKSxcblx0ICBzdmc6IGNyZWF0ZURPTUZh
Y3RvcnkoJ3N2ZycpLFxuXHQgIHRleHQ6IGNyZWF0ZURPTUZhY3RvcnkoJ3RleHQnKSxcblx0ICB0
c3BhbjogY3JlYXRlRE9NRmFjdG9yeSgndHNwYW4nKVxuXHR9O1xuXHRcblx0bW9kdWxlLmV4cG9y
dHMgPSBSZWFjdERPTUZhY3RvcmllcztcblxuLyoqKi8gfSxcbi8qIDIxNyAqL1xuLyoqKi8gZnVu
Y3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0LyoqXG5c
dCAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5k
ZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUg
aW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwg
Z3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMg
ZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqL1xuXHRcblx0J3VzZSBzdHJp
Y3QnO1xuXHRcblx0dmFyIF9yZXF1aXJlID0gX193ZWJwYWNrX3JlcXVpcmVfXygxOCksXG5cdCAg
ICBpc1ZhbGlkRWxlbWVudCA9IF9yZXF1aXJlLmlzVmFsaWRFbGVtZW50O1xuXHRcblx0dmFyIGZh
Y3RvcnkgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDU1KTtcblx0XG5cdG1vZHVsZS5leHBvcnRzID0g
ZmFjdG9yeShpc1ZhbGlkRWxlbWVudCk7XG5cbi8qKiovIH0sXG4vKiAyMTggKi9cbjE2Myxcbi8q
IDIxOSAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWly
ZV9fKSB7XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJ
bmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNv
ZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxu
XHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRy
ZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91
bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAq
L1xuXHRcblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0dmFyIF9yZXF1aXJlID0gX193ZWJwYWNrX3Jl
cXVpcmVfXyg4OSksXG5cdCAgICBDb21wb25lbnQgPSBfcmVxdWlyZS5Db21wb25lbnQ7XG5cdFxu
XHR2YXIgX3JlcXVpcmUyID0gX193ZWJwYWNrX3JlcXVpcmVfXygxOCksXG5cdCAgICBpc1ZhbGlk
RWxlbWVudCA9IF9yZXF1aXJlMi5pc1ZhbGlkRWxlbWVudDtcblx0XG5cdHZhciBSZWFjdE5vb3BV
cGRhdGVRdWV1ZSA9IF9fd2VicGFja19yZXF1aXJlX18oOTIpO1xuXHR2YXIgZmFjdG9yeSA9IF9f
d2VicGFja19yZXF1aXJlX18oOTcpO1xuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5KENv
bXBvbmVudCwgaXNWYWxpZEVsZW1lbnQsIFJlYWN0Tm9vcFVwZGF0ZVF1ZXVlKTtcblxuLyoqKi8g
fSxcbi8qIDIyMCAqL1xuMTgyLFxuLyogMjIxICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4
cG9ydHMpIHtcblxuXHQvKipcblx0ICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ss
IEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2Ug
Y29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhl
XG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2Ug
dHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBm
b3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpcblx0
ICogXG5cdCAqL1xuXHRcblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0dmFyIG5leHREZWJ1Z0lEID0g
MTtcblx0XG5cdGZ1bmN0aW9uIGdldE5leHREZWJ1Z0lEKCkge1xuXHQgIHJldHVybiBuZXh0RGVi
dWdJRCsrO1xuXHR9XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IGdldE5leHREZWJ1Z0lEO1xuXG4v
KioqLyB9LFxuLyogMjIyICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2Vi
cGFja19yZXF1aXJlX18pIHtcblxuXHQvKipcblx0ICogQ29weXJpZ2h0IDIwMTQtMjAxNSwgRmFj
ZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICogVGhpcyBz
b3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQg
aW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBz
b3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNh
biBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0
ICpcblx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHQvKipcblx0ICogRm9ya2VkIGZy
b20gZmJqcy93YXJuaW5nOlxuXHQgKiBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svZmJqcy9i
bG9iL2U2NmJhMjBhZDViZTQzM2ViNTQ0MjNmMmIwOTdkODI5MzI0ZDlkZTYvcGFja2FnZXMvZmJq
cy9zcmMvX19mb3Jrc19fL3dhcm5pbmcuanNcblx0ICpcblx0ICogT25seSBjaGFuZ2UgaXMgd2Ug
dXNlIGNvbnNvbGUud2FybiBpbnN0ZWFkIG9mIGNvbnNvbGUuZXJyb3IsXG5cdCAqIGFuZCBkbyBu
b3RoaW5nIHdoZW4gJ2NvbnNvbGUnIGlzIG5vdCBzdXBwb3J0ZWQuXG5cdCAqIFRoaXMgcmVhbGx5
IHNpbXBsaWZpZXMgdGhlIGNvZGUuXG5cdCAqIC0tLVxuXHQgKiBTaW1pbGFyIHRvIGludmFyaWFu
dCBidXQgb25seSBsb2dzIGEgd2FybmluZyBpZiB0aGUgY29uZGl0aW9uIGlzIG5vdCBtZXQuXG5c
dCAqIFRoaXMgY2FuIGJlIHVzZWQgdG8gbG9nIGlzc3VlcyBpbiBkZXZlbG9wbWVudCBlbnZpcm9u
bWVudHMgaW4gY3JpdGljYWxcblx0ICogcGF0aHMuIFJlbW92aW5nIHRoZSBsb2dnaW5nIGNvZGUg
Zm9yIHByb2R1Y3Rpb24gZW52aXJvbm1lbnRzIHdpbGwga2VlcCB0aGVcblx0ICogc2FtZSBsb2dp
YyBhbmQgZm9sbG93IHRoZSBzYW1lIGNvZGUgcGF0aHMuXG5cdCAqL1xuXHRcblx0dmFyIGxvd1By
aW9yaXR5V2FybmluZyA9IGZ1bmN0aW9uICgpIHt9O1xuXHRcblx0aWYgKGZhbHNlKSB7XG5cdCAg
dmFyIHByaW50V2FybmluZyA9IGZ1bmN0aW9uIChmb3JtYXQpIHtcblx0ICAgIGZvciAodmFyIF9s
ZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gQXJyYXkoX2xlbiA+IDEgPyBfbGVuIC0gMSA6
IDApLCBfa2V5ID0gMTsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuXHQgICAgICBhcmdzW19rZXkg
LSAxXSA9IGFyZ3VtZW50c1tfa2V5XTtcblx0ICAgIH1cblx0XG5cdCAgICB2YXIgYXJnSW5kZXgg
PSAwO1xuXHQgICAgdmFyIG1lc3NhZ2UgPSAnV2FybmluZzogJyArIGZvcm1hdC5yZXBsYWNlKC8l
cy9nLCBmdW5jdGlvbiAoKSB7XG5cdCAgICAgIHJldHVybiBhcmdzW2FyZ0luZGV4KytdO1xuXHQg
ICAgfSk7XG5cdCAgICBpZiAodHlwZW9mIGNvbnNvbGUgIT09ICd1bmRlZmluZWQnKSB7XG5cdCAg
ICAgIGNvbnNvbGUud2FybihtZXNzYWdlKTtcblx0ICAgIH1cblx0ICAgIHRyeSB7XG5cdCAgICAg
IC8vIC0tLSBXZWxjb21lIHRvIGRlYnVnZ2luZyBSZWFjdCAtLS1cblx0ICAgICAgLy8gVGhpcyBl
cnJvciB3YXMgdGhyb3duIGFzIGEgY29udmVuaWVuY2Ugc28gdGhhdCB5b3UgY2FuIHVzZSB0aGlz
IHN0YWNrXG5cdCAgICAgIC8vIHRvIGZpbmQgdGhlIGNhbGxzaXRlIHRoYXQgY2F1c2VkIHRoaXMg
d2FybmluZyB0byBmaXJlLlxuXHQgICAgICB0aHJvdyBuZXcgRXJyb3IobWVzc2FnZSk7XG5cdCAg
ICB9IGNhdGNoICh4KSB7fVxuXHQgIH07XG5cdFxuXHQgIGxvd1ByaW9yaXR5V2FybmluZyA9IGZ1
bmN0aW9uIChjb25kaXRpb24sIGZvcm1hdCkge1xuXHQgICAgaWYgKGZvcm1hdCA9PT0gdW5kZWZp
bmVkKSB7XG5cdCAgICAgIHRocm93IG5ldyBFcnJvcignYHdhcm5pbmcoY29uZGl0aW9uLCBmb3Jt
YXQsIC4uLmFyZ3MpYCByZXF1aXJlcyBhIHdhcm5pbmcgJyArICdtZXNzYWdlIGFyZ3VtZW50Jyk7
XG5cdCAgICB9XG5cdCAgICBpZiAoIWNvbmRpdGlvbikge1xuXHQgICAgICBmb3IgKHZhciBfbGVu
MiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBBcnJheShfbGVuMiA+IDIgPyBfbGVuMiAtIDIg
OiAwKSwgX2tleTIgPSAyOyBfa2V5MiA8IF9sZW4yOyBfa2V5MisrKSB7XG5cdCAgICAgICAgYXJn
c1tfa2V5MiAtIDJdID0gYXJndW1lbnRzW19rZXkyXTtcblx0ICAgICAgfVxuXHRcblx0ICAgICAg
cHJpbnRXYXJuaW5nLmFwcGx5KHVuZGVmaW5lZCwgW2Zvcm1hdF0uY29uY2F0KGFyZ3MpKTtcblx0
ICAgIH1cblx0ICB9O1xuXHR9XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IGxvd1ByaW9yaXR5V2Fy
bmluZztcblxuLyoqKi8gfSxcbi8qIDIyMyAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBv
cnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAyMDEz
LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAq
XG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBs
aWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0
b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0
ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBk
aXJlY3RvcnkuXG5cdCAqXG5cdCAqL1xuXHQndXNlIHN0cmljdCc7XG5cdFxuXHR2YXIgX3Byb2RJ
bnZhcmlhbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIzKTtcblx0XG5cdHZhciBSZWFjdEVsZW1l
bnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE4KTtcblx0XG5cdHZhciBpbnZhcmlhbnQgPSBfX3dl
YnBhY2tfcmVxdWlyZV9fKDEpO1xuXHRcblx0LyoqXG5cdCAqIFJldHVybnMgdGhlIGZpcnN0IGNo
aWxkIGluIGEgY29sbGVjdGlvbiBvZiBjaGlsZHJlbiBhbmQgdmVyaWZpZXMgdGhhdCB0aGVyZVxu
XHQgKiBpcyBvbmx5IG9uZSBjaGlsZCBpbiB0aGUgY29sbGVjdGlvbi5cblx0ICpcblx0ICogU2Vl
IGh0dHBzOi8vZmFjZWJvb2suZ2l0aHViLmlvL3JlYWN0L2RvY3MvdG9wLWxldmVsLWFwaS5odG1s
I3JlYWN0LmNoaWxkcmVuLm9ubHlcblx0ICpcblx0ICogVGhlIGN1cnJlbnQgaW1wbGVtZW50YXRp
b24gb2YgdGhpcyBmdW5jdGlvbiBhc3N1bWVzIHRoYXQgYSBzaW5nbGUgY2hpbGQgZ2V0c1xuXHQg
KiBwYXNzZWQgd2l0aG91dCBhIHdyYXBwZXIsIGJ1dCB0aGUgcHVycG9zZSBvZiB0aGlzIGhlbHBl
ciBmdW5jdGlvbiBpcyB0b1xuXHQgKiBhYnN0cmFjdCBhd2F5IHRoZSBwYXJ0aWN1bGFyIHN0cnVj
dHVyZSBvZiBjaGlsZHJlbi5cblx0ICpcblx0ICogQHBhcmFtIHs/b2JqZWN0fSBjaGlsZHJlbiBD
aGlsZCBjb2xsZWN0aW9uIHN0cnVjdHVyZS5cblx0ICogQHJldHVybiB7UmVhY3RFbGVtZW50fSBU
aGUgZmlyc3QgYW5kIG9ubHkgYFJlYWN0RWxlbWVudGAgY29udGFpbmVkIGluIHRoZVxuXHQgKiBz
dHJ1Y3R1cmUuXG5cdCAqL1xuXHRmdW5jdGlvbiBvbmx5Q2hpbGQoY2hpbGRyZW4pIHtcblx0ICAh
UmVhY3RFbGVtZW50LmlzVmFsaWRFbGVtZW50KGNoaWxkcmVuKSA/ICBmYWxzZSA/IGludmFyaWFu
dChmYWxzZSwgJ1JlYWN0LkNoaWxkcmVuLm9ubHkgZXhwZWN0ZWQgdG8gcmVjZWl2ZSBhIHNpbmds
ZSBSZWFjdCBlbGVtZW50IGNoaWxkLicpIDogX3Byb2RJbnZhcmlhbnQoJzE0MycpIDogdm9pZCAw
O1xuXHQgIHJldHVybiBjaGlsZHJlbjtcblx0fVxuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBvbmx5
Q2hpbGQ7XG5cbi8qKiovIH0sXG4vKiAyMjQgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhw
b3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAx
My1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQg
KlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUg
bGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVj
dG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBh
dGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUg
ZGlyZWN0b3J5LlxuXHQgKlxuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdHZhciBf
cHJvZEludmFyaWFudCA9IF9fd2VicGFja19yZXF1aXJlX18oMjMpO1xuXHRcblx0dmFyIFJlYWN0
Q3VycmVudE93bmVyID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMSk7XG5cdHZhciBSRUFDVF9FTEVN
RU5UX1RZUEUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDkxKTtcblx0XG5cdHZhciBnZXRJdGVyYXRv
ckZuID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMjApO1xuXHR2YXIgaW52YXJpYW50ID0gX193ZWJw
YWNrX3JlcXVpcmVfXygxKTtcblx0dmFyIEtleUVzY2FwZVV0aWxzID0gX193ZWJwYWNrX3JlcXVp
cmVfXygyMTMpO1xuXHR2YXIgd2FybmluZyA9IF9fd2VicGFja19yZXF1aXJlX18oMik7XG5cdFxu
XHR2YXIgU0VQQVJBVE9SID0gJy4nO1xuXHR2YXIgU1VCU0VQQVJBVE9SID0gJzonO1xuXHRcblx0
LyoqXG5cdCAqIFRoaXMgaXMgaW5saW5lZCBmcm9tIFJlYWN0RWxlbWVudCBzaW5jZSB0aGlzIGZp
bGUgaXMgc2hhcmVkIGJldHdlZW5cblx0ICogaXNvbW9ycGhpYyBhbmQgcmVuZGVyZXJzLiBXZSBj
b3VsZCBleHRyYWN0IHRoaXMgdG8gYVxuXHQgKlxuXHQgKi9cblx0XG5cdC8qKlxuXHQgKiBUT0RP
OiBUZXN0IHRoYXQgYSBzaW5nbGUgY2hpbGQgYW5kIGFuIGFycmF5IHdpdGggb25lIGl0ZW0gaGF2
ZSB0aGUgc2FtZSBrZXlcblx0ICogcGF0dGVybi5cblx0ICovXG5cdFxuXHR2YXIgZGlkV2FybkFi
b3V0TWFwcyA9IGZhbHNlO1xuXHRcblx0LyoqXG5cdCAqIEdlbmVyYXRlIGEga2V5IHN0cmluZyB0
aGF0IGlkZW50aWZpZXMgYSBjb21wb25lbnQgd2l0aGluIGEgc2V0LlxuXHQgKlxuXHQgKiBAcGFy
YW0geyp9IGNvbXBvbmVudCBBIGNvbXBvbmVudCB0aGF0IGNvdWxkIGNvbnRhaW4gYSBtYW51YWwg
a2V5LlxuXHQgKiBAcGFyYW0ge251bWJlcn0gaW5kZXggSW5kZXggdGhhdCBpcyB1c2VkIGlmIGEg
bWFudWFsIGtleSBpcyBub3QgcHJvdmlkZWQuXG5cdCAqIEByZXR1cm4ge3N0cmluZ31cblx0ICov
XG5cdGZ1bmN0aW9uIGdldENvbXBvbmVudEtleShjb21wb25lbnQsIGluZGV4KSB7XG5cdCAgLy8g
RG8gc29tZSB0eXBlY2hlY2tpbmcgaGVyZSBzaW5jZSB3ZSBjYWxsIHRoaXMgYmxpbmRseS4gV2Ug
d2FudCB0byBlbnN1cmVcblx0ICAvLyB0aGF0IHdlIGRvbid0IGJsb2NrIHBvdGVudGlhbCBmdXR1
cmUgRVMgQVBJcy5cblx0ICBpZiAoY29tcG9uZW50ICYmIHR5cGVvZiBjb21wb25lbnQgPT09ICdv
YmplY3QnICYmIGNvbXBvbmVudC5rZXkgIT0gbnVsbCkge1xuXHQgICAgLy8gRXhwbGljaXQga2V5
XG5cdCAgICByZXR1cm4gS2V5RXNjYXBlVXRpbHMuZXNjYXBlKGNvbXBvbmVudC5rZXkpO1xuXHQg
IH1cblx0ICAvLyBJbXBsaWNpdCBrZXkgZGV0ZXJtaW5lZCBieSB0aGUgaW5kZXggaW4gdGhlIHNl
dFxuXHQgIHJldHVybiBpbmRleC50b1N0cmluZygzNik7XG5cdH1cblx0XG5cdC8qKlxuXHQgKiBA
cGFyYW0gez8qfSBjaGlsZHJlbiBDaGlsZHJlbiB0cmVlIGNvbnRhaW5lci5cblx0ICogQHBhcmFt
IHshc3RyaW5nfSBuYW1lU29GYXIgTmFtZSBvZiB0aGUga2V5IHBhdGggc28gZmFyLlxuXHQgKiBA
cGFyYW0geyFmdW5jdGlvbn0gY2FsbGJhY2sgQ2FsbGJhY2sgdG8gaW52b2tlIHdpdGggZWFjaCBj
aGlsZCBmb3VuZC5cblx0ICogQHBhcmFtIHs/Kn0gdHJhdmVyc2VDb250ZXh0IFVzZWQgdG8gcGFz
cyBpbmZvcm1hdGlvbiB0aHJvdWdob3V0IHRoZSB0cmF2ZXJzYWxcblx0ICogcHJvY2Vzcy5cblx0
ICogQHJldHVybiB7IW51bWJlcn0gVGhlIG51bWJlciBvZiBjaGlsZHJlbiBpbiB0aGlzIHN1YnRy
ZWUuXG5cdCAqL1xuXHRmdW5jdGlvbiB0cmF2ZXJzZUFsbENoaWxkcmVuSW1wbChjaGlsZHJlbiwg
bmFtZVNvRmFyLCBjYWxsYmFjaywgdHJhdmVyc2VDb250ZXh0KSB7XG5cdCAgdmFyIHR5cGUgPSB0
eXBlb2YgY2hpbGRyZW47XG5cdFxuXHQgIGlmICh0eXBlID09PSAndW5kZWZpbmVkJyB8fCB0eXBl
ID09PSAnYm9vbGVhbicpIHtcblx0ICAgIC8vIEFsbCBvZiB0aGUgYWJvdmUgYXJlIHBlcmNlaXZl
ZCBhcyBudWxsLlxuXHQgICAgY2hpbGRyZW4gPSBudWxsO1xuXHQgIH1cblx0XG5cdCAgaWYgKGNo
aWxkcmVuID09PSBudWxsIHx8IHR5cGUgPT09ICdzdHJpbmcnIHx8IHR5cGUgPT09ICdudW1iZXIn
IHx8XG5cdCAgLy8gVGhlIGZvbGxvd2luZyBpcyBpbmxpbmVkIGZyb20gUmVhY3RFbGVtZW50LiBU
aGlzIG1lYW5zIHdlIGNhbiBvcHRpbWl6ZVxuXHQgIC8vIHNvbWUgY2hlY2tzLiBSZWFjdCBGaWJl
ciBhbHNvIGlubGluZXMgdGhpcyBsb2dpYyBmb3Igc2ltaWxhciBwdXJwb3Nlcy5cblx0ICB0eXBl
ID09PSAnb2JqZWN0JyAmJiBjaGlsZHJlbi4kJHR5cGVvZiA9PT0gUkVBQ1RfRUxFTUVOVF9UWVBF
KSB7XG5cdCAgICBjYWxsYmFjayh0cmF2ZXJzZUNvbnRleHQsIGNoaWxkcmVuLFxuXHQgICAgLy8g
SWYgaXQncyB0aGUgb25seSBjaGlsZCwgdHJlYXQgdGhlIG5hbWUgYXMgaWYgaXQgd2FzIHdyYXBw
ZWQgaW4gYW4gYXJyYXlcblx0ICAgIC8vIHNvIHRoYXQgaXQncyBjb25zaXN0ZW50IGlmIHRoZSBu
dW1iZXIgb2YgY2hpbGRyZW4gZ3Jvd3MuXG5cdCAgICBuYW1lU29GYXIgPT09ICcnID8gU0VQQVJB
VE9SICsgZ2V0Q29tcG9uZW50S2V5KGNoaWxkcmVuLCAwKSA6IG5hbWVTb0Zhcik7XG5cdCAgICBy
ZXR1cm4gMTtcblx0ICB9XG5cdFxuXHQgIHZhciBjaGlsZDtcblx0ICB2YXIgbmV4dE5hbWU7XG5c
dCAgdmFyIHN1YnRyZWVDb3VudCA9IDA7IC8vIENvdW50IG9mIGNoaWxkcmVuIGZvdW5kIGluIHRo
ZSBjdXJyZW50IHN1YnRyZWUuXG5cdCAgdmFyIG5leHROYW1lUHJlZml4ID0gbmFtZVNvRmFyID09
PSAnJyA/IFNFUEFSQVRPUiA6IG5hbWVTb0ZhciArIFNVQlNFUEFSQVRPUjtcblx0XG5cdCAgaWYg
KEFycmF5LmlzQXJyYXkoY2hpbGRyZW4pKSB7XG5cdCAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNo
aWxkcmVuLmxlbmd0aDsgaSsrKSB7XG5cdCAgICAgIGNoaWxkID0gY2hpbGRyZW5baV07XG5cdCAg
ICAgIG5leHROYW1lID0gbmV4dE5hbWVQcmVmaXggKyBnZXRDb21wb25lbnRLZXkoY2hpbGQsIGkp
O1xuXHQgICAgICBzdWJ0cmVlQ291bnQgKz0gdHJhdmVyc2VBbGxDaGlsZHJlbkltcGwoY2hpbGQs
IG5leHROYW1lLCBjYWxsYmFjaywgdHJhdmVyc2VDb250ZXh0KTtcblx0ICAgIH1cblx0ICB9IGVs
c2Uge1xuXHQgICAgdmFyIGl0ZXJhdG9yRm4gPSBnZXRJdGVyYXRvckZuKGNoaWxkcmVuKTtcblx0
ICAgIGlmIChpdGVyYXRvckZuKSB7XG5cdCAgICAgIHZhciBpdGVyYXRvciA9IGl0ZXJhdG9yRm4u
Y2FsbChjaGlsZHJlbik7XG5cdCAgICAgIHZhciBzdGVwO1xuXHQgICAgICBpZiAoaXRlcmF0b3JG
biAhPT0gY2hpbGRyZW4uZW50cmllcykge1xuXHQgICAgICAgIHZhciBpaSA9IDA7XG5cdCAgICAg
ICAgd2hpbGUgKCEoc3RlcCA9IGl0ZXJhdG9yLm5leHQoKSkuZG9uZSkge1xuXHQgICAgICAgICAg
Y2hpbGQgPSBzdGVwLnZhbHVlO1xuXHQgICAgICAgICAgbmV4dE5hbWUgPSBuZXh0TmFtZVByZWZp
eCArIGdldENvbXBvbmVudEtleShjaGlsZCwgaWkrKyk7XG5cdCAgICAgICAgICBzdWJ0cmVlQ291
bnQgKz0gdHJhdmVyc2VBbGxDaGlsZHJlbkltcGwoY2hpbGQsIG5leHROYW1lLCBjYWxsYmFjaywg
dHJhdmVyc2VDb250ZXh0KTtcblx0ICAgICAgICB9XG5cdCAgICAgIH0gZWxzZSB7XG5cdCAgICAg
ICAgaWYgKGZhbHNlKSB7XG5cdCAgICAgICAgICB2YXIgbWFwc0FzQ2hpbGRyZW5BZGRlbmR1bSA9
ICcnO1xuXHQgICAgICAgICAgaWYgKFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQpIHtcblx0ICAg
ICAgICAgICAgdmFyIG1hcHNBc0NoaWxkcmVuT3duZXJOYW1lID0gUmVhY3RDdXJyZW50T3duZXIu
Y3VycmVudC5nZXROYW1lKCk7XG5cdCAgICAgICAgICAgIGlmIChtYXBzQXNDaGlsZHJlbk93bmVy
TmFtZSkge1xuXHQgICAgICAgICAgICAgIG1hcHNBc0NoaWxkcmVuQWRkZW5kdW0gPSAnIENoZWNr
IHRoZSByZW5kZXIgbWV0aG9kIG9mIGAnICsgbWFwc0FzQ2hpbGRyZW5Pd25lck5hbWUgKyAnYC4n
O1xuXHQgICAgICAgICAgICB9XG5cdCAgICAgICAgICB9XG5cdCAgICAgICAgICBwcm9jZXNzLmVu
di5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhkaWRXYXJuQWJvdXRNYXBzLCAn
VXNpbmcgTWFwcyBhcyBjaGlsZHJlbiBpcyBub3QgeWV0IGZ1bGx5IHN1cHBvcnRlZC4gSXQgaXMg
YW4gJyArICdleHBlcmltZW50YWwgZmVhdHVyZSB0aGF0IG1pZ2h0IGJlIHJlbW92ZWQuIENvbnZl
cnQgaXQgdG8gYSAnICsgJ3NlcXVlbmNlIC8gaXRlcmFibGUgb2Yga2V5ZWQgUmVhY3RFbGVtZW50
cyBpbnN0ZWFkLiVzJywgbWFwc0FzQ2hpbGRyZW5BZGRlbmR1bSkgOiB2b2lkIDA7XG5cdCAgICAg
ICAgICBkaWRXYXJuQWJvdXRNYXBzID0gdHJ1ZTtcblx0ICAgICAgICB9XG5cdCAgICAgICAgLy8g
SXRlcmF0b3Igd2lsbCBwcm92aWRlIGVudHJ5IFtrLHZdIHR1cGxlcyByYXRoZXIgdGhhbiB2YWx1
ZXMuXG5cdCAgICAgICAgd2hpbGUgKCEoc3RlcCA9IGl0ZXJhdG9yLm5leHQoKSkuZG9uZSkge1xu
XHQgICAgICAgICAgdmFyIGVudHJ5ID0gc3RlcC52YWx1ZTtcblx0ICAgICAgICAgIGlmIChlbnRy
eSkge1xuXHQgICAgICAgICAgICBjaGlsZCA9IGVudHJ5WzFdO1xuXHQgICAgICAgICAgICBuZXh0
TmFtZSA9IG5leHROYW1lUHJlZml4ICsgS2V5RXNjYXBlVXRpbHMuZXNjYXBlKGVudHJ5WzBdKSAr
IFNVQlNFUEFSQVRPUiArIGdldENvbXBvbmVudEtleShjaGlsZCwgMCk7XG5cdCAgICAgICAgICAg
IHN1YnRyZWVDb3VudCArPSB0cmF2ZXJzZUFsbENoaWxkcmVuSW1wbChjaGlsZCwgbmV4dE5hbWUs
IGNhbGxiYWNrLCB0cmF2ZXJzZUNvbnRleHQpO1xuXHQgICAgICAgICAgfVxuXHQgICAgICAgIH1c
blx0ICAgICAgfVxuXHQgICAgfSBlbHNlIGlmICh0eXBlID09PSAnb2JqZWN0Jykge1xuXHQgICAg
ICB2YXIgYWRkZW5kdW0gPSAnJztcblx0ICAgICAgaWYgKGZhbHNlKSB7XG5cdCAgICAgICAgYWRk
ZW5kdW0gPSAnIElmIHlvdSBtZWFudCB0byByZW5kZXIgYSBjb2xsZWN0aW9uIG9mIGNoaWxkcmVu
LCB1c2UgYW4gYXJyYXkgJyArICdpbnN0ZWFkIG9yIHdyYXAgdGhlIG9iamVjdCB1c2luZyBjcmVh
dGVGcmFnbWVudChvYmplY3QpIGZyb20gdGhlICcgKyAnUmVhY3QgYWRkLW9ucy4nO1xuXHQgICAg
ICAgIGlmIChjaGlsZHJlbi5faXNSZWFjdEVsZW1lbnQpIHtcblx0ICAgICAgICAgIGFkZGVuZHVt
ID0gXCIgSXQgbG9va3MgbGlrZSB5b3UncmUgdXNpbmcgYW4gZWxlbWVudCBjcmVhdGVkIGJ5IGEg
ZGlmZmVyZW50IFwiICsgJ3ZlcnNpb24gb2YgUmVhY3QuIE1ha2Ugc3VyZSB0byB1c2Ugb25seSBv
bmUgY29weSBvZiBSZWFjdC4nO1xuXHQgICAgICAgIH1cblx0ICAgICAgICBpZiAoUmVhY3RDdXJy
ZW50T3duZXIuY3VycmVudCkge1xuXHQgICAgICAgICAgdmFyIG5hbWUgPSBSZWFjdEN1cnJlbnRP
d25lci5jdXJyZW50LmdldE5hbWUoKTtcblx0ICAgICAgICAgIGlmIChuYW1lKSB7XG5cdCAgICAg
ICAgICAgIGFkZGVuZHVtICs9ICcgQ2hlY2sgdGhlIHJlbmRlciBtZXRob2Qgb2YgYCcgKyBuYW1l
ICsgJ2AuJztcblx0ICAgICAgICAgIH1cblx0ICAgICAgICB9XG5cdCAgICAgIH1cblx0ICAgICAg
dmFyIGNoaWxkcmVuU3RyaW5nID0gU3RyaW5nKGNoaWxkcmVuKTtcblx0ICAgICAgIHRydWUgPyAg
ZmFsc2UgPyBpbnZhcmlhbnQoZmFsc2UsICdPYmplY3RzIGFyZSBub3QgdmFsaWQgYXMgYSBSZWFj
dCBjaGlsZCAoZm91bmQ6ICVzKS4lcycsIGNoaWxkcmVuU3RyaW5nID09PSAnW29iamVjdCBPYmpl
Y3RdJyA/ICdvYmplY3Qgd2l0aCBrZXlzIHsnICsgT2JqZWN0LmtleXMoY2hpbGRyZW4pLmpvaW4o
JywgJykgKyAnfScgOiBjaGlsZHJlblN0cmluZywgYWRkZW5kdW0pIDogX3Byb2RJbnZhcmlhbnQo
JzMxJywgY2hpbGRyZW5TdHJpbmcgPT09ICdbb2JqZWN0IE9iamVjdF0nID8gJ29iamVjdCB3aXRo
IGtleXMgeycgKyBPYmplY3Qua2V5cyhjaGlsZHJlbikuam9pbignLCAnKSArICd9JyA6IGNoaWxk
cmVuU3RyaW5nLCBhZGRlbmR1bSkgOiB2b2lkIDA7XG5cdCAgICB9XG5cdCAgfVxuXHRcblx0ICBy
ZXR1cm4gc3VidHJlZUNvdW50O1xuXHR9XG5cdFxuXHQvKipcblx0ICogVHJhdmVyc2VzIGNoaWxk
cmVuIHRoYXQgYXJlIHR5cGljYWxseSBzcGVjaWZpZWQgYXMgYHByb3BzLmNoaWxkcmVuYCwgYnV0
XG5cdCAqIG1pZ2h0IGFsc28gYmUgc3BlY2lmaWVkIHRocm91Z2ggYXR0cmlidXRlczpcblx0ICpc
blx0ICogLSBgdHJhdmVyc2VBbGxDaGlsZHJlbih0aGlzLnByb3BzLmNoaWxkcmVuLCAuLi4pYFxu
XHQgKiAtIGB0cmF2ZXJzZUFsbENoaWxkcmVuKHRoaXMucHJvcHMubGVmdFBhbmVsQ2hpbGRyZW4s
IC4uLilgXG5cdCAqXG5cdCAqIFRoZSBgdHJhdmVyc2VDb250ZXh0YCBpcyBhbiBvcHRpb25hbCBh
cmd1bWVudCB0aGF0IGlzIHBhc3NlZCB0aHJvdWdoIHRoZVxuXHQgKiBlbnRpcmUgdHJhdmVyc2Fs
LiBJdCBjYW4gYmUgdXNlZCB0byBzdG9yZSBhY2N1bXVsYXRpb25zIG9yIGFueXRoaW5nIGVsc2Ug
dGhhdFxuXHQgKiB0aGUgY2FsbGJhY2sgbWlnaHQgZmluZCByZWxldmFudC5cblx0ICpcblx0ICog
QHBhcmFtIHs/Kn0gY2hpbGRyZW4gQ2hpbGRyZW4gdHJlZSBvYmplY3QuXG5cdCAqIEBwYXJhbSB7
IWZ1bmN0aW9ufSBjYWxsYmFjayBUbyBpbnZva2UgdXBvbiB0cmF2ZXJzaW5nIGVhY2ggY2hpbGQu
XG5cdCAqIEBwYXJhbSB7Pyp9IHRyYXZlcnNlQ29udGV4dCBDb250ZXh0IGZvciB0cmF2ZXJzYWwu
XG5cdCAqIEByZXR1cm4geyFudW1iZXJ9IFRoZSBudW1iZXIgb2YgY2hpbGRyZW4gaW4gdGhpcyBz
dWJ0cmVlLlxuXHQgKi9cblx0ZnVuY3Rpb24gdHJhdmVyc2VBbGxDaGlsZHJlbihjaGlsZHJlbiwg
Y2FsbGJhY2ssIHRyYXZlcnNlQ29udGV4dCkge1xuXHQgIGlmIChjaGlsZHJlbiA9PSBudWxsKSB7
XG5cdCAgICByZXR1cm4gMDtcblx0ICB9XG5cdFxuXHQgIHJldHVybiB0cmF2ZXJzZUFsbENoaWxk
cmVuSW1wbChjaGlsZHJlbiwgJycsIGNhbGxiYWNrLCB0cmF2ZXJzZUNvbnRleHQpO1xuXHR9XG5c
dFxuXHRtb2R1bGUuZXhwb3J0cyA9IHRyYXZlcnNlQWxsQ2hpbGRyZW47XG5cbi8qKiovIH0sXG4v
KiAyMjUgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVp
cmVfXykge1xuXG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdGV4cG9ydHMuX19lc01vZHVsZSA9IHRy
dWU7XG5cdFxuXHR2YXIgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uICh0YXJn
ZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNv
dXJjZSA9IGFyZ3VtZW50c1tpXTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgeyBpZiAoT2JqZWN0
LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgeyB0YXJnZXRba2V5
XSA9IHNvdXJjZVtrZXldOyB9IH0gfSByZXR1cm4gdGFyZ2V0OyB9O1xuXHRcblx0ZXhwb3J0c1sn
ZGVmYXVsdCddID0gYXBwbHlNaWRkbGV3YXJlO1xuXHRcblx0dmFyIF9jb21wb3NlID0gX193ZWJw
YWNrX3JlcXVpcmVfXyg5NCk7XG5cdFxuXHR2YXIgX2NvbXBvc2UyID0gX2ludGVyb3BSZXF1aXJl
RGVmYXVsdChfY29tcG9zZSk7XG5cdFxuXHRmdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0
KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyAnZGVmYXVsdCc6
IG9iaiB9OyB9XG5cdFxuXHQvKipcblx0ICogQ3JlYXRlcyBhIHN0b3JlIGVuaGFuY2VyIHRoYXQg
YXBwbGllcyBtaWRkbGV3YXJlIHRvIHRoZSBkaXNwYXRjaCBtZXRob2Rcblx0ICogb2YgdGhlIFJl
ZHV4IHN0b3JlLiBUaGlzIGlzIGhhbmR5IGZvciBhIHZhcmlldHkgb2YgdGFza3MsIHN1Y2ggYXMg
ZXhwcmVzc2luZ1xuXHQgKiBhc3luY2hyb25vdXMgYWN0aW9ucyBpbiBhIGNvbmNpc2UgbWFubmVy
LCBvciBsb2dnaW5nIGV2ZXJ5IGFjdGlvbiBwYXlsb2FkLlxuXHQgKlxuXHQgKiBTZWUgYHJlZHV4
LXRodW5rYCBwYWNrYWdlIGFzIGFuIGV4YW1wbGUgb2YgdGhlIFJlZHV4IG1pZGRsZXdhcmUuXG5c
dCAqXG5cdCAqIEJlY2F1c2UgbWlkZGxld2FyZSBpcyBwb3RlbnRpYWxseSBhc3luY2hyb25vdXMs
IHRoaXMgc2hvdWxkIGJlIHRoZSBmaXJzdFxuXHQgKiBzdG9yZSBlbmhhbmNlciBpbiB0aGUgY29t
cG9zaXRpb24gY2hhaW4uXG5cdCAqXG5cdCAqIE5vdGUgdGhhdCBlYWNoIG1pZGRsZXdhcmUgd2ls
bCBiZSBnaXZlbiB0aGUgYGRpc3BhdGNoYCBhbmQgYGdldFN0YXRlYCBmdW5jdGlvbnNcblx0ICog
YXMgbmFtZWQgYXJndW1lbnRzLlxuXHQgKlxuXHQgKiBAcGFyYW0gey4uLkZ1bmN0aW9ufSBtaWRk
bGV3YXJlcyBUaGUgbWlkZGxld2FyZSBjaGFpbiB0byBiZSBhcHBsaWVkLlxuXHQgKiBAcmV0dXJu
cyB7RnVuY3Rpb259IEEgc3RvcmUgZW5oYW5jZXIgYXBwbHlpbmcgdGhlIG1pZGRsZXdhcmUuXG5c
dCAqL1xuXHRmdW5jdGlvbiBhcHBseU1pZGRsZXdhcmUoKSB7XG5cdCAgZm9yICh2YXIgX2xlbiA9
IGFyZ3VtZW50cy5sZW5ndGgsIG1pZGRsZXdhcmVzID0gQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBf
a2V5IDwgX2xlbjsgX2tleSsrKSB7XG5cdCAgICBtaWRkbGV3YXJlc1tfa2V5XSA9IGFyZ3VtZW50
c1tfa2V5XTtcblx0ICB9XG5cdFxuXHQgIHJldHVybiBmdW5jdGlvbiAoY3JlYXRlU3RvcmUpIHtc
blx0ICAgIHJldHVybiBmdW5jdGlvbiAocmVkdWNlciwgcHJlbG9hZGVkU3RhdGUsIGVuaGFuY2Vy
KSB7XG5cdCAgICAgIHZhciBzdG9yZSA9IGNyZWF0ZVN0b3JlKHJlZHVjZXIsIHByZWxvYWRlZFN0
YXRlLCBlbmhhbmNlcik7XG5cdCAgICAgIHZhciBfZGlzcGF0Y2ggPSBzdG9yZS5kaXNwYXRjaDtc
blx0ICAgICAgdmFyIGNoYWluID0gW107XG5cdFxuXHQgICAgICB2YXIgbWlkZGxld2FyZUFQSSA9
IHtcblx0ICAgICAgICBnZXRTdGF0ZTogc3RvcmUuZ2V0U3RhdGUsXG5cdCAgICAgICAgZGlzcGF0
Y2g6IGZ1bmN0aW9uIGRpc3BhdGNoKGFjdGlvbikge1xuXHQgICAgICAgICAgcmV0dXJuIF9kaXNw
YXRjaChhY3Rpb24pO1xuXHQgICAgICAgIH1cblx0ICAgICAgfTtcblx0ICAgICAgY2hhaW4gPSBt
aWRkbGV3YXJlcy5tYXAoZnVuY3Rpb24gKG1pZGRsZXdhcmUpIHtcblx0ICAgICAgICByZXR1cm4g
bWlkZGxld2FyZShtaWRkbGV3YXJlQVBJKTtcblx0ICAgICAgfSk7XG5cdCAgICAgIF9kaXNwYXRj
aCA9IF9jb21wb3NlMlsnZGVmYXVsdCddLmFwcGx5KHVuZGVmaW5lZCwgY2hhaW4pKHN0b3JlLmRp
c3BhdGNoKTtcblx0XG5cdCAgICAgIHJldHVybiBfZXh0ZW5kcyh7fSwgc3RvcmUsIHtcblx0ICAg
ICAgICBkaXNwYXRjaDogX2Rpc3BhdGNoXG5cdCAgICAgIH0pO1xuXHQgICAgfTtcblx0ICB9O1xu
XHR9XG5cbi8qKiovIH0sXG4vKiAyMjYgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0
cykge1xuXG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdGV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7
XG5cdGV4cG9ydHNbJ2RlZmF1bHQnXSA9IGJpbmRBY3Rpb25DcmVhdG9ycztcblx0ZnVuY3Rpb24g
YmluZEFjdGlvbkNyZWF0b3IoYWN0aW9uQ3JlYXRvciwgZGlzcGF0Y2gpIHtcblx0ICByZXR1cm4g
ZnVuY3Rpb24gKCkge1xuXHQgICAgcmV0dXJuIGRpc3BhdGNoKGFjdGlvbkNyZWF0b3IuYXBwbHko
dW5kZWZpbmVkLCBhcmd1bWVudHMpKTtcblx0ICB9O1xuXHR9XG5cdFxuXHQvKipcblx0ICogVHVy
bnMgYW4gb2JqZWN0IHdob3NlIHZhbHVlcyBhcmUgYWN0aW9uIGNyZWF0b3JzLCBpbnRvIGFuIG9i
amVjdCB3aXRoIHRoZVxuXHQgKiBzYW1lIGtleXMsIGJ1dCB3aXRoIGV2ZXJ5IGZ1bmN0aW9uIHdy
YXBwZWQgaW50byBhIGBkaXNwYXRjaGAgY2FsbCBzbyB0aGV5XG5cdCAqIG1heSBiZSBpbnZva2Vk
IGRpcmVjdGx5LiBUaGlzIGlzIGp1c3QgYSBjb252ZW5pZW5jZSBtZXRob2QsIGFzIHlvdSBjYW4g
Y2FsbFxuXHQgKiBgc3RvcmUuZGlzcGF0Y2goTXlBY3Rpb25DcmVhdG9ycy5kb1NvbWV0aGluZygp
KWAgeW91cnNlbGYganVzdCBmaW5lLlxuXHQgKlxuXHQgKiBGb3IgY29udmVuaWVuY2UsIHlvdSBj
YW4gYWxzbyBwYXNzIGEgc2luZ2xlIGZ1bmN0aW9uIGFzIHRoZSBmaXJzdCBhcmd1bWVudCxcblx0
ICogYW5kIGdldCBhIGZ1bmN0aW9uIGluIHJldHVybi5cblx0ICpcblx0ICogQHBhcmFtIHtGdW5j
dGlvbnxPYmplY3R9IGFjdGlvbkNyZWF0b3JzIEFuIG9iamVjdCB3aG9zZSB2YWx1ZXMgYXJlIGFj
dGlvblxuXHQgKiBjcmVhdG9yIGZ1bmN0aW9ucy4gT25lIGhhbmR5IHdheSB0byBvYnRhaW4gaXQg
aXMgdG8gdXNlIEVTNiBgaW1wb3J0ICogYXNgXG5cdCAqIHN5bnRheC4gWW91IG1heSBhbHNvIHBh
c3MgYSBzaW5nbGUgZnVuY3Rpb24uXG5cdCAqXG5cdCAqIEBwYXJhbSB7RnVuY3Rpb259IGRpc3Bh
dGNoIFRoZSBgZGlzcGF0Y2hgIGZ1bmN0aW9uIGF2YWlsYWJsZSBvbiB5b3VyIFJlZHV4XG5cdCAq
IHN0b3JlLlxuXHQgKlxuXHQgKiBAcmV0dXJucyB7RnVuY3Rpb258T2JqZWN0fSBUaGUgb2JqZWN0
IG1pbWlja2luZyB0aGUgb3JpZ2luYWwgb2JqZWN0LCBidXQgd2l0aFxuXHQgKiBldmVyeSBhY3Rp
b24gY3JlYXRvciB3cmFwcGVkIGludG8gdGhlIGBkaXNwYXRjaGAgY2FsbC4gSWYgeW91IHBhc3Nl
ZCBhXG5cdCAqIGZ1bmN0aW9uIGFzIGBhY3Rpb25DcmVhdG9yc2AsIHRoZSByZXR1cm4gdmFsdWUg
d2lsbCBhbHNvIGJlIGEgc2luZ2xlXG5cdCAqIGZ1bmN0aW9uLlxuXHQgKi9cblx0ZnVuY3Rpb24g
YmluZEFjdGlvbkNyZWF0b3JzKGFjdGlvbkNyZWF0b3JzLCBkaXNwYXRjaCkge1xuXHQgIGlmICh0
eXBlb2YgYWN0aW9uQ3JlYXRvcnMgPT09ICdmdW5jdGlvbicpIHtcblx0ICAgIHJldHVybiBiaW5k
QWN0aW9uQ3JlYXRvcihhY3Rpb25DcmVhdG9ycywgZGlzcGF0Y2gpO1xuXHQgIH1cblx0XG5cdCAg
aWYgKHR5cGVvZiBhY3Rpb25DcmVhdG9ycyAhPT0gJ29iamVjdCcgfHwgYWN0aW9uQ3JlYXRvcnMg
PT09IG51bGwpIHtcblx0ICAgIHRocm93IG5ldyBFcnJvcignYmluZEFjdGlvbkNyZWF0b3JzIGV4
cGVjdGVkIGFuIG9iamVjdCBvciBhIGZ1bmN0aW9uLCBpbnN0ZWFkIHJlY2VpdmVkICcgKyAoYWN0
aW9uQ3JlYXRvcnMgPT09IG51bGwgPyAnbnVsbCcgOiB0eXBlb2YgYWN0aW9uQ3JlYXRvcnMpICsg
Jy4gJyArICdEaWQgeW91IHdyaXRlIFwiaW1wb3J0IEFjdGlvbkNyZWF0b3JzIGZyb21cIiBpbnN0
ZWFkIG9mIFwiaW1wb3J0ICogYXMgQWN0aW9uQ3JlYXRvcnMgZnJvbVwiPycpO1xuXHQgIH1cblx0
XG5cdCAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhhY3Rpb25DcmVhdG9ycyk7XG5cdCAgdmFyIGJv
dW5kQWN0aW9uQ3JlYXRvcnMgPSB7fTtcblx0ICBmb3IgKHZhciBpID0gMDsgaSA8IGtleXMubGVu
Z3RoOyBpKyspIHtcblx0ICAgIHZhciBrZXkgPSBrZXlzW2ldO1xuXHQgICAgdmFyIGFjdGlvbkNy
ZWF0b3IgPSBhY3Rpb25DcmVhdG9yc1trZXldO1xuXHQgICAgaWYgKHR5cGVvZiBhY3Rpb25DcmVh
dG9yID09PSAnZnVuY3Rpb24nKSB7XG5cdCAgICAgIGJvdW5kQWN0aW9uQ3JlYXRvcnNba2V5XSA9
IGJpbmRBY3Rpb25DcmVhdG9yKGFjdGlvbkNyZWF0b3IsIGRpc3BhdGNoKTtcblx0ICAgIH1cblx0
ICB9XG5cdCAgcmV0dXJuIGJvdW5kQWN0aW9uQ3JlYXRvcnM7XG5cdH1cblxuLyoqKi8gfSxcbi8q
IDIyNyAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWly
ZV9fKSB7XG5cblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0ZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1
ZTtcblx0ZXhwb3J0c1snZGVmYXVsdCddID0gY29tYmluZVJlZHVjZXJzO1xuXHRcblx0dmFyIF9j
cmVhdGVTdG9yZSA9IF9fd2VicGFja19yZXF1aXJlX18oOTUpO1xuXHRcblx0dmFyIF9pc1BsYWlu
T2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygzMyk7XG5cdFxuXHR2YXIgX2lzUGxhaW5PYmpl
Y3QyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaXNQbGFpbk9iamVjdCk7XG5cdFxuXHR2YXIg
X3dhcm5pbmcgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDk2KTtcblx0XG5cdHZhciBfd2FybmluZzIg
PSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF93YXJuaW5nKTtcblx0XG5cdGZ1bmN0aW9uIF9pbnRl
cm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBv
YmogOiB7ICdkZWZhdWx0Jzogb2JqIH07IH1cblx0XG5cdGZ1bmN0aW9uIGdldFVuZGVmaW5lZFN0
YXRlRXJyb3JNZXNzYWdlKGtleSwgYWN0aW9uKSB7XG5cdCAgdmFyIGFjdGlvblR5cGUgPSBhY3Rp
b24gJiYgYWN0aW9uLnR5cGU7XG5cdCAgdmFyIGFjdGlvbk5hbWUgPSBhY3Rpb25UeXBlICYmICdc
IicgKyBhY3Rpb25UeXBlLnRvU3RyaW5nKCkgKyAnXCInIHx8ICdhbiBhY3Rpb24nO1xuXHRcblx0
ICByZXR1cm4gJ0dpdmVuIGFjdGlvbiAnICsgYWN0aW9uTmFtZSArICcsIHJlZHVjZXIgXCInICsg
a2V5ICsgJ1wiIHJldHVybmVkIHVuZGVmaW5lZC4gJyArICdUbyBpZ25vcmUgYW4gYWN0aW9uLCB5
b3UgbXVzdCBleHBsaWNpdGx5IHJldHVybiB0aGUgcHJldmlvdXMgc3RhdGUuICcgKyAnSWYgeW91
IHdhbnQgdGhpcyByZWR1Y2VyIHRvIGhvbGQgbm8gdmFsdWUsIHlvdSBjYW4gcmV0dXJuIG51bGwg
aW5zdGVhZCBvZiB1bmRlZmluZWQuJztcblx0fVxuXHRcblx0ZnVuY3Rpb24gZ2V0VW5leHBlY3Rl
ZFN0YXRlU2hhcGVXYXJuaW5nTWVzc2FnZShpbnB1dFN0YXRlLCByZWR1Y2VycywgYWN0aW9uLCB1
bmV4cGVjdGVkS2V5Q2FjaGUpIHtcblx0ICB2YXIgcmVkdWNlcktleXMgPSBPYmplY3Qua2V5cyhy
ZWR1Y2Vycyk7XG5cdCAgdmFyIGFyZ3VtZW50TmFtZSA9IGFjdGlvbiAmJiBhY3Rpb24udHlwZSA9
PT0gX2NyZWF0ZVN0b3JlLkFjdGlvblR5cGVzLklOSVQgPyAncHJlbG9hZGVkU3RhdGUgYXJndW1l
bnQgcGFzc2VkIHRvIGNyZWF0ZVN0b3JlJyA6ICdwcmV2aW91cyBzdGF0ZSByZWNlaXZlZCBieSB0
aGUgcmVkdWNlcic7XG5cdFxuXHQgIGlmIChyZWR1Y2VyS2V5cy5sZW5ndGggPT09IDApIHtcblx0
ICAgIHJldHVybiAnU3RvcmUgZG9lcyBub3QgaGF2ZSBhIHZhbGlkIHJlZHVjZXIuIE1ha2Ugc3Vy
ZSB0aGUgYXJndW1lbnQgcGFzc2VkICcgKyAndG8gY29tYmluZVJlZHVjZXJzIGlzIGFuIG9iamVj
dCB3aG9zZSB2YWx1ZXMgYXJlIHJlZHVjZXJzLic7XG5cdCAgfVxuXHRcblx0ICBpZiAoISgwLCBf
aXNQbGFpbk9iamVjdDJbJ2RlZmF1bHQnXSkoaW5wdXRTdGF0ZSkpIHtcblx0ICAgIHJldHVybiAn
VGhlICcgKyBhcmd1bWVudE5hbWUgKyAnIGhhcyB1bmV4cGVjdGVkIHR5cGUgb2YgXCInICsge30u
dG9TdHJpbmcuY2FsbChpbnB1dFN0YXRlKS5tYXRjaCgvXFxzKFthLXp8QS1aXSspLylbMV0gKyAn
XCIuIEV4cGVjdGVkIGFyZ3VtZW50IHRvIGJlIGFuIG9iamVjdCB3aXRoIHRoZSBmb2xsb3dpbmcg
JyArICgna2V5czogXCInICsgcmVkdWNlcktleXMuam9pbignXCIsIFwiJykgKyAnXCInKTtcblx0
ICB9XG5cdFxuXHQgIHZhciB1bmV4cGVjdGVkS2V5cyA9IE9iamVjdC5rZXlzKGlucHV0U3RhdGUp
LmZpbHRlcihmdW5jdGlvbiAoa2V5KSB7XG5cdCAgICByZXR1cm4gIXJlZHVjZXJzLmhhc093blBy
b3BlcnR5KGtleSkgJiYgIXVuZXhwZWN0ZWRLZXlDYWNoZVtrZXldO1xuXHQgIH0pO1xuXHRcblx0
ICB1bmV4cGVjdGVkS2V5cy5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcblx0ICAgIHVuZXhwZWN0
ZWRLZXlDYWNoZVtrZXldID0gdHJ1ZTtcblx0ICB9KTtcblx0XG5cdCAgaWYgKHVuZXhwZWN0ZWRL
ZXlzLmxlbmd0aCA+IDApIHtcblx0ICAgIHJldHVybiAnVW5leHBlY3RlZCAnICsgKHVuZXhwZWN0
ZWRLZXlzLmxlbmd0aCA+IDEgPyAna2V5cycgOiAna2V5JykgKyAnICcgKyAoJ1wiJyArIHVuZXhw
ZWN0ZWRLZXlzLmpvaW4oJ1wiLCBcIicpICsgJ1wiIGZvdW5kIGluICcgKyBhcmd1bWVudE5hbWUg
KyAnLiAnKSArICdFeHBlY3RlZCB0byBmaW5kIG9uZSBvZiB0aGUga25vd24gcmVkdWNlciBrZXlz
IGluc3RlYWQ6ICcgKyAoJ1wiJyArIHJlZHVjZXJLZXlzLmpvaW4oJ1wiLCBcIicpICsgJ1wiLiBV
bmV4cGVjdGVkIGtleXMgd2lsbCBiZSBpZ25vcmVkLicpO1xuXHQgIH1cblx0fVxuXHRcblx0ZnVu
Y3Rpb24gYXNzZXJ0UmVkdWNlclNoYXBlKHJlZHVjZXJzKSB7XG5cdCAgT2JqZWN0LmtleXMocmVk
dWNlcnMpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuXHQgICAgdmFyIHJlZHVjZXIgPSByZWR1
Y2Vyc1trZXldO1xuXHQgICAgdmFyIGluaXRpYWxTdGF0ZSA9IHJlZHVjZXIodW5kZWZpbmVkLCB7
IHR5cGU6IF9jcmVhdGVTdG9yZS5BY3Rpb25UeXBlcy5JTklUIH0pO1xuXHRcblx0ICAgIGlmICh0
eXBlb2YgaW5pdGlhbFN0YXRlID09PSAndW5kZWZpbmVkJykge1xuXHQgICAgICB0aHJvdyBuZXcg
RXJyb3IoJ1JlZHVjZXIgXCInICsga2V5ICsgJ1wiIHJldHVybmVkIHVuZGVmaW5lZCBkdXJpbmcg
aW5pdGlhbGl6YXRpb24uICcgKyAnSWYgdGhlIHN0YXRlIHBhc3NlZCB0byB0aGUgcmVkdWNlciBp
cyB1bmRlZmluZWQsIHlvdSBtdXN0ICcgKyAnZXhwbGljaXRseSByZXR1cm4gdGhlIGluaXRpYWwg
c3RhdGUuIFRoZSBpbml0aWFsIHN0YXRlIG1heSAnICsgJ25vdCBiZSB1bmRlZmluZWQuIElmIHlv
dSBkb25cXCd0IHdhbnQgdG8gc2V0IGEgdmFsdWUgZm9yIHRoaXMgcmVkdWNlciwgJyArICd5b3Ug
Y2FuIHVzZSBudWxsIGluc3RlYWQgb2YgdW5kZWZpbmVkLicpO1xuXHQgICAgfVxuXHRcblx0ICAg
IHZhciB0eXBlID0gJ0BAcmVkdXgvUFJPQkVfVU5LTk9XTl9BQ1RJT05fJyArIE1hdGgucmFuZG9t
KCkudG9TdHJpbmcoMzYpLnN1YnN0cmluZyg3KS5zcGxpdCgnJykuam9pbignLicpO1xuXHQgICAg
aWYgKHR5cGVvZiByZWR1Y2VyKHVuZGVmaW5lZCwgeyB0eXBlOiB0eXBlIH0pID09PSAndW5kZWZp
bmVkJykge1xuXHQgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1JlZHVjZXIgXCInICsga2V5ICsgJ1wi
IHJldHVybmVkIHVuZGVmaW5lZCB3aGVuIHByb2JlZCB3aXRoIGEgcmFuZG9tIHR5cGUuICcgKyAo
J0RvblxcJ3QgdHJ5IHRvIGhhbmRsZSAnICsgX2NyZWF0ZVN0b3JlLkFjdGlvblR5cGVzLklOSVQg
KyAnIG9yIG90aGVyIGFjdGlvbnMgaW4gXCJyZWR1eC8qXCIgJykgKyAnbmFtZXNwYWNlLiBUaGV5
IGFyZSBjb25zaWRlcmVkIHByaXZhdGUuIEluc3RlYWQsIHlvdSBtdXN0IHJldHVybiB0aGUgJyAr
ICdjdXJyZW50IHN0YXRlIGZvciBhbnkgdW5rbm93biBhY3Rpb25zLCB1bmxlc3MgaXQgaXMgdW5k
ZWZpbmVkLCAnICsgJ2luIHdoaWNoIGNhc2UgeW91IG11c3QgcmV0dXJuIHRoZSBpbml0aWFsIHN0
YXRlLCByZWdhcmRsZXNzIG9mIHRoZSAnICsgJ2FjdGlvbiB0eXBlLiBUaGUgaW5pdGlhbCBzdGF0
ZSBtYXkgbm90IGJlIHVuZGVmaW5lZCwgYnV0IGNhbiBiZSBudWxsLicpO1xuXHQgICAgfVxuXHQg
IH0pO1xuXHR9XG5cdFxuXHQvKipcblx0ICogVHVybnMgYW4gb2JqZWN0IHdob3NlIHZhbHVlcyBh
cmUgZGlmZmVyZW50IHJlZHVjZXIgZnVuY3Rpb25zLCBpbnRvIGEgc2luZ2xlXG5cdCAqIHJlZHVj
ZXIgZnVuY3Rpb24uIEl0IHdpbGwgY2FsbCBldmVyeSBjaGlsZCByZWR1Y2VyLCBhbmQgZ2F0aGVy
IHRoZWlyIHJlc3VsdHNcblx0ICogaW50byBhIHNpbmdsZSBzdGF0ZSBvYmplY3QsIHdob3NlIGtl
eXMgY29ycmVzcG9uZCB0byB0aGUga2V5cyBvZiB0aGUgcGFzc2VkXG5cdCAqIHJlZHVjZXIgZnVu
Y3Rpb25zLlxuXHQgKlxuXHQgKiBAcGFyYW0ge09iamVjdH0gcmVkdWNlcnMgQW4gb2JqZWN0IHdo
b3NlIHZhbHVlcyBjb3JyZXNwb25kIHRvIGRpZmZlcmVudFxuXHQgKiByZWR1Y2VyIGZ1bmN0aW9u
cyB0aGF0IG5lZWQgdG8gYmUgY29tYmluZWQgaW50byBvbmUuIE9uZSBoYW5keSB3YXkgdG8gb2J0
YWluXG5cdCAqIGl0IGlzIHRvIHVzZSBFUzYgYGltcG9ydCAqIGFzIHJlZHVjZXJzYCBzeW50YXgu
IFRoZSByZWR1Y2VycyBtYXkgbmV2ZXIgcmV0dXJuXG5cdCAqIHVuZGVmaW5lZCBmb3IgYW55IGFj
dGlvbi4gSW5zdGVhZCwgdGhleSBzaG91bGQgcmV0dXJuIHRoZWlyIGluaXRpYWwgc3RhdGVcblx0
ICogaWYgdGhlIHN0YXRlIHBhc3NlZCB0byB0aGVtIHdhcyB1bmRlZmluZWQsIGFuZCB0aGUgY3Vy
cmVudCBzdGF0ZSBmb3IgYW55XG5cdCAqIHVucmVjb2duaXplZCBhY3Rpb24uXG5cdCAqXG5cdCAq
IEByZXR1cm5zIHtGdW5jdGlvbn0gQSByZWR1Y2VyIGZ1bmN0aW9uIHRoYXQgaW52b2tlcyBldmVy
eSByZWR1Y2VyIGluc2lkZSB0aGVcblx0ICogcGFzc2VkIG9iamVjdCwgYW5kIGJ1aWxkcyBhIHN0
YXRlIG9iamVjdCB3aXRoIHRoZSBzYW1lIHNoYXBlLlxuXHQgKi9cblx0ZnVuY3Rpb24gY29tYmlu
ZVJlZHVjZXJzKHJlZHVjZXJzKSB7XG5cdCAgdmFyIHJlZHVjZXJLZXlzID0gT2JqZWN0LmtleXMo
cmVkdWNlcnMpO1xuXHQgIHZhciBmaW5hbFJlZHVjZXJzID0ge307XG5cdCAgZm9yICh2YXIgaSA9
IDA7IGkgPCByZWR1Y2VyS2V5cy5sZW5ndGg7IGkrKykge1xuXHQgICAgdmFyIGtleSA9IHJlZHVj
ZXJLZXlzW2ldO1xuXHRcblx0ICAgIGlmIChmYWxzZSkge1xuXHQgICAgICBpZiAodHlwZW9mIHJl
ZHVjZXJzW2tleV0gPT09ICd1bmRlZmluZWQnKSB7XG5cdCAgICAgICAgKDAsIF93YXJuaW5nMlsn
ZGVmYXVsdCddKSgnTm8gcmVkdWNlciBwcm92aWRlZCBmb3Iga2V5IFwiJyArIGtleSArICdcIicp
O1xuXHQgICAgICB9XG5cdCAgICB9XG5cdFxuXHQgICAgaWYgKHR5cGVvZiByZWR1Y2Vyc1trZXld
ID09PSAnZnVuY3Rpb24nKSB7XG5cdCAgICAgIGZpbmFsUmVkdWNlcnNba2V5XSA9IHJlZHVjZXJz
W2tleV07XG5cdCAgICB9XG5cdCAgfVxuXHQgIHZhciBmaW5hbFJlZHVjZXJLZXlzID0gT2JqZWN0
LmtleXMoZmluYWxSZWR1Y2Vycyk7XG5cdFxuXHQgIHZhciB1bmV4cGVjdGVkS2V5Q2FjaGUgPSB2
b2lkIDA7XG5cdCAgaWYgKGZhbHNlKSB7XG5cdCAgICB1bmV4cGVjdGVkS2V5Q2FjaGUgPSB7fTtc
blx0ICB9XG5cdFxuXHQgIHZhciBzaGFwZUFzc2VydGlvbkVycm9yID0gdm9pZCAwO1xuXHQgIHRy
eSB7XG5cdCAgICBhc3NlcnRSZWR1Y2VyU2hhcGUoZmluYWxSZWR1Y2Vycyk7XG5cdCAgfSBjYXRj
aCAoZSkge1xuXHQgICAgc2hhcGVBc3NlcnRpb25FcnJvciA9IGU7XG5cdCAgfVxuXHRcblx0ICBy
ZXR1cm4gZnVuY3Rpb24gY29tYmluYXRpb24oKSB7XG5cdCAgICB2YXIgc3RhdGUgPSBhcmd1bWVu
dHMubGVuZ3RoID4gMCAmJiBhcmd1bWVudHNbMF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sw
XSA6IHt9O1xuXHQgICAgdmFyIGFjdGlvbiA9IGFyZ3VtZW50c1sxXTtcblx0XG5cdCAgICBpZiAo
c2hhcGVBc3NlcnRpb25FcnJvcikge1xuXHQgICAgICB0aHJvdyBzaGFwZUFzc2VydGlvbkVycm9y
O1xuXHQgICAgfVxuXHRcblx0ICAgIGlmIChmYWxzZSkge1xuXHQgICAgICB2YXIgd2FybmluZ01l
c3NhZ2UgPSBnZXRVbmV4cGVjdGVkU3RhdGVTaGFwZVdhcm5pbmdNZXNzYWdlKHN0YXRlLCBmaW5h
bFJlZHVjZXJzLCBhY3Rpb24sIHVuZXhwZWN0ZWRLZXlDYWNoZSk7XG5cdCAgICAgIGlmICh3YXJu
aW5nTWVzc2FnZSkge1xuXHQgICAgICAgICgwLCBfd2FybmluZzJbJ2RlZmF1bHQnXSkod2Fybmlu
Z01lc3NhZ2UpO1xuXHQgICAgICB9XG5cdCAgICB9XG5cdFxuXHQgICAgdmFyIGhhc0NoYW5nZWQg
PSBmYWxzZTtcblx0ICAgIHZhciBuZXh0U3RhdGUgPSB7fTtcblx0ICAgIGZvciAodmFyIF9pID0g
MDsgX2kgPCBmaW5hbFJlZHVjZXJLZXlzLmxlbmd0aDsgX2krKykge1xuXHQgICAgICB2YXIgX2tl
eSA9IGZpbmFsUmVkdWNlcktleXNbX2ldO1xuXHQgICAgICB2YXIgcmVkdWNlciA9IGZpbmFsUmVk
dWNlcnNbX2tleV07XG5cdCAgICAgIHZhciBwcmV2aW91c1N0YXRlRm9yS2V5ID0gc3RhdGVbX2tl
eV07XG5cdCAgICAgIHZhciBuZXh0U3RhdGVGb3JLZXkgPSByZWR1Y2VyKHByZXZpb3VzU3RhdGVG
b3JLZXksIGFjdGlvbik7XG5cdCAgICAgIGlmICh0eXBlb2YgbmV4dFN0YXRlRm9yS2V5ID09PSAn
dW5kZWZpbmVkJykge1xuXHQgICAgICAgIHZhciBlcnJvck1lc3NhZ2UgPSBnZXRVbmRlZmluZWRT
dGF0ZUVycm9yTWVzc2FnZShfa2V5LCBhY3Rpb24pO1xuXHQgICAgICAgIHRocm93IG5ldyBFcnJv
cihlcnJvck1lc3NhZ2UpO1xuXHQgICAgICB9XG5cdCAgICAgIG5leHRTdGF0ZVtfa2V5XSA9IG5l
eHRTdGF0ZUZvcktleTtcblx0ICAgICAgaGFzQ2hhbmdlZCA9IGhhc0NoYW5nZWQgfHwgbmV4dFN0
YXRlRm9yS2V5ICE9PSBwcmV2aW91c1N0YXRlRm9yS2V5O1xuXHQgICAgfVxuXHQgICAgcmV0dXJu
IGhhc0NoYW5nZWQgPyBuZXh0U3RhdGUgOiBzdGF0ZTtcblx0ICB9O1xuXHR9XG5cbi8qKiovIH0s
XG4vKiAyMjggKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3Jl
cXVpcmVfXykge1xuXG5cdG1vZHVsZS5leHBvcnRzID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMjkp
O1xuXG5cbi8qKiovIH0sXG4vKiAyMjkgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0
cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8qIFdFQlBBQ0sgVkFSIElOSkVDVElPTiAq
LyhmdW5jdGlvbihnbG9iYWwsIG1vZHVsZSkgeyd1c2Ugc3RyaWN0Jztcblx0XG5cdE9iamVjdC5k
ZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuXHQgIHZhbHVlOiB0cnVl
XG5cdH0pO1xuXHRcblx0dmFyIF9wb255ZmlsbCA9IF9fd2VicGFja19yZXF1aXJlX18oMjMwKTtc
blx0XG5cdHZhciBfcG9ueWZpbGwyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfcG9ueWZpbGwp
O1xuXHRcblx0ZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9i
aiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgJ2RlZmF1bHQnOiBvYmogfTsgfVxuXHRcblx0
dmFyIHJvb3Q7IC8qIGdsb2JhbCB3aW5kb3cgKi9cblx0XG5cdFxuXHRpZiAodHlwZW9mIHNlbGYg
IT09ICd1bmRlZmluZWQnKSB7XG5cdCAgcm9vdCA9IHNlbGY7XG5cdH0gZWxzZSBpZiAodHlwZW9m
IHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpIHtcblx0ICByb290ID0gd2luZG93O1xuXHR9IGVsc2Ug
aWYgKHR5cGVvZiBnbG9iYWwgIT09ICd1bmRlZmluZWQnKSB7XG5cdCAgcm9vdCA9IGdsb2JhbDtc
blx0fSBlbHNlIGlmICh0cnVlKSB7XG5cdCAgcm9vdCA9IG1vZHVsZTtcblx0fSBlbHNlIHtcblx0
ICByb290ID0gRnVuY3Rpb24oJ3JldHVybiB0aGlzJykoKTtcblx0fVxuXHRcblx0dmFyIHJlc3Vs
dCA9ICgwLCBfcG9ueWZpbGwyWydkZWZhdWx0J10pKHJvb3QpO1xuXHRleHBvcnRzWydkZWZhdWx0
J10gPSByZXN1bHQ7XG5cdC8qIFdFQlBBQ0sgVkFSIElOSkVDVElPTiAqL30uY2FsbChleHBvcnRz
LCAoZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzOyB9KCkpLCBfX3dlYnBhY2tfcmVxdWlyZV9fKDIx
MSkobW9kdWxlKSkpXG5cbi8qKiovIH0sXG4vKiAyMzAgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVs
ZSwgZXhwb3J0cykge1xuXG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdE9iamVjdC5kZWZpbmVQcm9w
ZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuXHRcdHZhbHVlOiB0cnVlXG5cdH0pO1xu
XHRleHBvcnRzWydkZWZhdWx0J10gPSBzeW1ib2xPYnNlcnZhYmxlUG9ueWZpbGw7XG5cdGZ1bmN0
aW9uIHN5bWJvbE9ic2VydmFibGVQb255ZmlsbChyb290KSB7XG5cdFx0dmFyIHJlc3VsdDtcblx0
XHR2YXIgX1N5bWJvbCA9IHJvb3QuU3ltYm9sO1xuXHRcblx0XHRpZiAodHlwZW9mIF9TeW1ib2wg
PT09ICdmdW5jdGlvbicpIHtcblx0XHRcdGlmIChfU3ltYm9sLm9ic2VydmFibGUpIHtcblx0XHRc
dFx0cmVzdWx0ID0gX1N5bWJvbC5vYnNlcnZhYmxlO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0
cmVzdWx0ID0gX1N5bWJvbCgnb2JzZXJ2YWJsZScpO1xuXHRcdFx0XHRfU3ltYm9sLm9ic2VydmFi
bGUgPSByZXN1bHQ7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJlc3VsdCA9ICdAQG9i
c2VydmFibGUnO1xuXHRcdH1cblx0XG5cdFx0cmV0dXJuIHJlc3VsdDtcblx0fTtcblxuLyoqKi8g
fSxcbi8qIDIzMSAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tf
cmVxdWlyZV9fLCBfX3dlYnBhY2tfbW9kdWxlX3RlbXBsYXRlX2FyZ3VtZW50XzBfXykge1xuXG5c
dC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBB
bGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vu
c2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5T
RSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRp
dGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQ
QVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKiBcblx0ICovXG5c
dFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHR2YXIgX3Byb2RJbnZhcmlhbnQgPSBfX3dlYnBhY2tf
cmVxdWlyZV9fKF9fd2VicGFja19tb2R1bGVfdGVtcGxhdGVfYXJndW1lbnRfMF9fKTtcblx0XG5c
dHZhciBpbnZhcmlhbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEpO1xuXHRcblx0LyoqXG5cdCAq
IFN0YXRpYyBwb29sZXJzLiBTZXZlcmFsIGN1c3RvbSB2ZXJzaW9ucyBmb3IgZWFjaCBwb3RlbnRp
YWwgbnVtYmVyIG9mXG5cdCAqIGFyZ3VtZW50cy4gQSBjb21wbGV0ZWx5IGdlbmVyaWMgcG9vbGVy
IGlzIGVhc3kgdG8gaW1wbGVtZW50LCBidXQgd291bGRcblx0ICogcmVxdWlyZSBhY2Nlc3Npbmcg
dGhlIGBhcmd1bWVudHNgIG9iamVjdC4gSW4gZWFjaCBvZiB0aGVzZSwgYHRoaXNgIHJlZmVycyB0
b1xuXHQgKiB0aGUgQ2xhc3MgaXRzZWxmLCBub3QgYW4gaW5zdGFuY2UuIElmIGFueSBvdGhlcnMg
YXJlIG5lZWRlZCwgc2ltcGx5IGFkZCB0aGVtXG5cdCAqIGhlcmUsIG9yIGluIHRoZWlyIG93biBm
aWxlcy5cblx0ICovXG5cdHZhciBvbmVBcmd1bWVudFBvb2xlciA9IGZ1bmN0aW9uIChjb3B5Rmll
bGRzRnJvbSkge1xuXHQgIHZhciBLbGFzcyA9IHRoaXM7XG5cdCAgaWYgKEtsYXNzLmluc3RhbmNl
UG9vbC5sZW5ndGgpIHtcblx0ICAgIHZhciBpbnN0YW5jZSA9IEtsYXNzLmluc3RhbmNlUG9vbC5w
b3AoKTtcblx0ICAgIEtsYXNzLmNhbGwoaW5zdGFuY2UsIGNvcHlGaWVsZHNGcm9tKTtcblx0ICAg
IHJldHVybiBpbnN0YW5jZTtcblx0ICB9IGVsc2Uge1xuXHQgICAgcmV0dXJuIG5ldyBLbGFzcyhj
b3B5RmllbGRzRnJvbSk7XG5cdCAgfVxuXHR9O1xuXHRcblx0dmFyIHR3b0FyZ3VtZW50UG9vbGVy
ID0gZnVuY3Rpb24gKGExLCBhMikge1xuXHQgIHZhciBLbGFzcyA9IHRoaXM7XG5cdCAgaWYgKEts
YXNzLmluc3RhbmNlUG9vbC5sZW5ndGgpIHtcblx0ICAgIHZhciBpbnN0YW5jZSA9IEtsYXNzLmlu
c3RhbmNlUG9vbC5wb3AoKTtcblx0ICAgIEtsYXNzLmNhbGwoaW5zdGFuY2UsIGExLCBhMik7XG5c
dCAgICByZXR1cm4gaW5zdGFuY2U7XG5cdCAgfSBlbHNlIHtcblx0ICAgIHJldHVybiBuZXcgS2xh
c3MoYTEsIGEyKTtcblx0ICB9XG5cdH07XG5cdFxuXHR2YXIgdGhyZWVBcmd1bWVudFBvb2xlciA9
IGZ1bmN0aW9uIChhMSwgYTIsIGEzKSB7XG5cdCAgdmFyIEtsYXNzID0gdGhpcztcblx0ICBpZiAo
S2xhc3MuaW5zdGFuY2VQb29sLmxlbmd0aCkge1xuXHQgICAgdmFyIGluc3RhbmNlID0gS2xhc3Mu
aW5zdGFuY2VQb29sLnBvcCgpO1xuXHQgICAgS2xhc3MuY2FsbChpbnN0YW5jZSwgYTEsIGEyLCBh
Myk7XG5cdCAgICByZXR1cm4gaW5zdGFuY2U7XG5cdCAgfSBlbHNlIHtcblx0ICAgIHJldHVybiBu
ZXcgS2xhc3MoYTEsIGEyLCBhMyk7XG5cdCAgfVxuXHR9O1xuXHRcblx0dmFyIGZvdXJBcmd1bWVu
dFBvb2xlciA9IGZ1bmN0aW9uIChhMSwgYTIsIGEzLCBhNCkge1xuXHQgIHZhciBLbGFzcyA9IHRo
aXM7XG5cdCAgaWYgKEtsYXNzLmluc3RhbmNlUG9vbC5sZW5ndGgpIHtcblx0ICAgIHZhciBpbnN0
YW5jZSA9IEtsYXNzLmluc3RhbmNlUG9vbC5wb3AoKTtcblx0ICAgIEtsYXNzLmNhbGwoaW5zdGFu
Y2UsIGExLCBhMiwgYTMsIGE0KTtcblx0ICAgIHJldHVybiBpbnN0YW5jZTtcblx0ICB9IGVsc2Ug
e1xuXHQgICAgcmV0dXJuIG5ldyBLbGFzcyhhMSwgYTIsIGEzLCBhNCk7XG5cdCAgfVxuXHR9O1xu
XHRcblx0dmFyIHN0YW5kYXJkUmVsZWFzZXIgPSBmdW5jdGlvbiAoaW5zdGFuY2UpIHtcblx0ICB2
YXIgS2xhc3MgPSB0aGlzO1xuXHQgICEoaW5zdGFuY2UgaW5zdGFuY2VvZiBLbGFzcykgPyAgZmFs
c2UgPyBpbnZhcmlhbnQoZmFsc2UsICdUcnlpbmcgdG8gcmVsZWFzZSBhbiBpbnN0YW5jZSBpbnRv
IGEgcG9vbCBvZiBhIGRpZmZlcmVudCB0eXBlLicpIDogX3Byb2RJbnZhcmlhbnQoJzI1JykgOiB2
b2lkIDA7XG5cdCAgaW5zdGFuY2UuZGVzdHJ1Y3RvcigpO1xuXHQgIGlmIChLbGFzcy5pbnN0YW5j
ZVBvb2wubGVuZ3RoIDwgS2xhc3MucG9vbFNpemUpIHtcblx0ICAgIEtsYXNzLmluc3RhbmNlUG9v
bC5wdXNoKGluc3RhbmNlKTtcblx0ICB9XG5cdH07XG5cdFxuXHR2YXIgREVGQVVMVF9QT09MX1NJ
WkUgPSAxMDtcblx0dmFyIERFRkFVTFRfUE9PTEVSID0gb25lQXJndW1lbnRQb29sZXI7XG5cdFxu
XHQvKipcblx0ICogQXVnbWVudHMgYENvcHlDb25zdHJ1Y3RvcmAgdG8gYmUgYSBwb29sYWJsZSBj
bGFzcywgYXVnbWVudGluZyBvbmx5IHRoZSBjbGFzc1xuXHQgKiBpdHNlbGYgKHN0YXRpY2FsbHkp
IG5vdCBhZGRpbmcgYW55IHByb3RvdHlwaWNhbCBmaWVsZHMuIEFueSBDb3B5Q29uc3RydWN0b3Jc
blx0ICogeW91IGdpdmUgdGhpcyBtYXkgaGF2ZSBhIGBwb29sU2l6ZWAgcHJvcGVydHksIGFuZCB3
aWxsIGxvb2sgZm9yIGFcblx0ICogcHJvdG90eXBpY2FsIGBkZXN0cnVjdG9yYCBvbiBpbnN0YW5j
ZXMuXG5cdCAqXG5cdCAqIEBwYXJhbSB7RnVuY3Rpb259IENvcHlDb25zdHJ1Y3RvciBDb25zdHJ1
Y3RvciB0aGF0IGNhbiBiZSB1c2VkIHRvIHJlc2V0LlxuXHQgKiBAcGFyYW0ge0Z1bmN0aW9ufSBw
b29sZXIgQ3VzdG9taXphYmxlIHBvb2xlci5cblx0ICovXG5cdHZhciBhZGRQb29saW5nVG8gPSBm
dW5jdGlvbiAoQ29weUNvbnN0cnVjdG9yLCBwb29sZXIpIHtcblx0ICAvLyBDYXN0aW5nIGFzIGFu
eSBzbyB0aGF0IGZsb3cgaWdub3JlcyB0aGUgYWN0dWFsIGltcGxlbWVudGF0aW9uIGFuZCB0cnVz
dHNcblx0ICAvLyBpdCB0byBtYXRjaCB0aGUgdHlwZSB3ZSBkZWNsYXJlZFxuXHQgIHZhciBOZXdL
bGFzcyA9IENvcHlDb25zdHJ1Y3Rvcjtcblx0ICBOZXdLbGFzcy5pbnN0YW5jZVBvb2wgPSBbXTtc
blx0ICBOZXdLbGFzcy5nZXRQb29sZWQgPSBwb29sZXIgfHwgREVGQVVMVF9QT09MRVI7XG5cdCAg
aWYgKCFOZXdLbGFzcy5wb29sU2l6ZSkge1xuXHQgICAgTmV3S2xhc3MucG9vbFNpemUgPSBERUZB
VUxUX1BPT0xfU0laRTtcblx0ICB9XG5cdCAgTmV3S2xhc3MucmVsZWFzZSA9IHN0YW5kYXJkUmVs
ZWFzZXI7XG5cdCAgcmV0dXJuIE5ld0tsYXNzO1xuXHR9O1xuXHRcblx0dmFyIFBvb2xlZENsYXNz
ID0ge1xuXHQgIGFkZFBvb2xpbmdUbzogYWRkUG9vbGluZ1RvLFxuXHQgIG9uZUFyZ3VtZW50UG9v
bGVyOiBvbmVBcmd1bWVudFBvb2xlcixcblx0ICB0d29Bcmd1bWVudFBvb2xlcjogdHdvQXJndW1l
bnRQb29sZXIsXG5cdCAgdGhyZWVBcmd1bWVudFBvb2xlcjogdGhyZWVBcmd1bWVudFBvb2xlcixc
blx0ICBmb3VyQXJndW1lbnRQb29sZXI6IGZvdXJBcmd1bWVudFBvb2xlclxuXHR9O1xuXHRcblx0
bW9kdWxlLmV4cG9ydHMgPSBQb29sZWRDbGFzcztcblxuLyoqKi8gfVxuLyoqKioqKi8gXSkpKTtc
blxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiBzdGF0aWMvanMvbWFpbi40M2EwOTQ4Yy5q
c1xuICoqLyIsIiBcdC8vIFRoZSBtb2R1bGUgY2FjaGVcbiBcdHZhciBpbnN0YWxsZWRNb2R1bGVz
ID0ge307XG5cbiBcdC8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG4gXHRmdW5jdGlvbiBfX3dlYnBh
Y2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cbiBcdFx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGlu
IGNhY2hlXG4gXHRcdGlmKGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdKVxuIFx0XHRcdHJldHVy
biBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXS5leHBvcnRzO1xuXG4gXHRcdC8vIENyZWF0ZSBh
IG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG4gXHRcdHZhciBtb2R1bGUg
PSBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSA9IHtcbiBcdFx0XHRleHBvcnRzOiB7fSxcbiBc
dFx0XHRpZDogbW9kdWxlSWQsXG4gXHRcdFx0bG9hZGVkOiBmYWxzZVxuIFx0XHR9O1xuXG4gXHRc
dC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuIFx0XHRtb2R1bGVzW21vZHVsZUlkXS5j
YWxsKG1vZHVsZS5leHBvcnRzLCBtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVx
dWlyZV9fKTtcblxuIFx0XHQvLyBGbGFnIHRoZSBtb2R1bGUgYXMgbG9hZGVkXG4gXHRcdG1vZHVs
ZS5sb2FkZWQgPSB0cnVlO1xuXG4gXHRcdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9k
dWxlXG4gXHRcdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbiBcdH1cblxuXG4gXHQvLyBleHBvc2Ug
dGhlIG1vZHVsZXMgb2JqZWN0IChfX3dlYnBhY2tfbW9kdWxlc19fKVxuIFx0X193ZWJwYWNrX3Jl
cXVpcmVfXy5tID0gbW9kdWxlcztcblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGUgY2FjaGVcbiBc
dF9fd2VicGFja19yZXF1aXJlX18uYyA9IGluc3RhbGxlZE1vZHVsZXM7XG5cbiBcdC8vIF9fd2Vi
cGFja19wdWJsaWNfcGF0aF9fXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnAgPSBcIi4vXCI7XG5c
biBcdC8vIExvYWQgZW50cnkgbW9kdWxlIGFuZCByZXR1cm4gZXhwb3J0c1xuIFx0cmV0dXJuIF9f
d2VicGFja19yZXF1aXJlX18oMCk7XG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiB3
ZWJwYWNrL2Jvb3RzdHJhcCA2YTNhNjgwN2UxMmQxNTdlNjkwY1xuICoqLyIsIi8qKlxuICogQ29w
eXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJl
c2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJT
RC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290
IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBv
ZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBz
YW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG4vKipcbiAqIFVzZSBp
bnZhcmlhbnQoKSB0byBhc3NlcnQgc3RhdGUgd2hpY2ggeW91ciBwcm9ncmFtIGFzc3VtZXMgdG8g
YmUgdHJ1ZS5cbiAqXG4gKiBQcm92aWRlIHNwcmludGYtc3R5bGUgZm9ybWF0IChvbmx5ICVzIGlz
IHN1cHBvcnRlZCkgYW5kIGFyZ3VtZW50c1xuICogdG8gcHJvdmlkZSBpbmZvcm1hdGlvbiBhYm91
dCB3aGF0IGJyb2tlIGFuZCB3aGF0IHlvdSB3ZXJlXG4gKiBleHBlY3RpbmcuXG4gKlxuICogVGhl
IGludmFyaWFudCBtZXNzYWdlIHdpbGwgYmUgc3RyaXBwZWQgaW4gcHJvZHVjdGlvbiwgYnV0IHRo
ZSBpbnZhcmlhbnRcbiAqIHdpbGwgcmVtYWluIHRvIGVuc3VyZSBsb2dpYyBkb2VzIG5vdCBkaWZm
ZXIgaW4gcHJvZHVjdGlvbi5cbiAqL1xuXG52YXIgdmFsaWRhdGVGb3JtYXQgPSBmdW5jdGlvbiB2
YWxpZGF0ZUZvcm1hdChmb3JtYXQpIHt9O1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09
ICdwcm9kdWN0aW9uJykge1xuICB2YWxpZGF0ZUZvcm1hdCA9IGZ1bmN0aW9uIHZhbGlkYXRlRm9y
bWF0KGZvcm1hdCkge1xuICAgIGlmIChmb3JtYXQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhy
b3cgbmV3IEVycm9yKCdpbnZhcmlhbnQgcmVxdWlyZXMgYW4gZXJyb3IgbWVzc2FnZSBhcmd1bWVu
dCcpO1xuICAgIH1cbiAgfTtcbn1cblxuZnVuY3Rpb24gaW52YXJpYW50KGNvbmRpdGlvbiwgZm9y
bWF0LCBhLCBiLCBjLCBkLCBlLCBmKSB7XG4gIHZhbGlkYXRlRm9ybWF0KGZvcm1hdCk7XG5cbiAg
aWYgKCFjb25kaXRpb24pIHtcbiAgICB2YXIgZXJyb3I7XG4gICAgaWYgKGZvcm1hdCA9PT0gdW5k
ZWZpbmVkKSB7XG4gICAgICBlcnJvciA9IG5ldyBFcnJvcignTWluaWZpZWQgZXhjZXB0aW9uIG9j
Y3VycmVkOyB1c2UgdGhlIG5vbi1taW5pZmllZCBkZXYgZW52aXJvbm1lbnQgJyArICdmb3IgdGhl
IGZ1bGwgZXJyb3IgbWVzc2FnZSBhbmQgYWRkaXRpb25hbCBoZWxwZnVsIHdhcm5pbmdzLicpO1xu
ICAgIH0gZWxzZSB7XG4gICAgICB2YXIgYXJncyA9IFthLCBiLCBjLCBkLCBlLCBmXTtcbiAgICAg
IHZhciBhcmdJbmRleCA9IDA7XG4gICAgICBlcnJvciA9IG5ldyBFcnJvcihmb3JtYXQucmVwbGFj
ZSgvJXMvZywgZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gYXJnc1thcmdJbmRleCsrXTtc
biAgICAgIH0pKTtcbiAgICAgIGVycm9yLm5hbWUgPSAnSW52YXJpYW50IFZpb2xhdGlvbic7XG4g
ICAgfVxuXG4gICAgZXJyb3IuZnJhbWVzVG9Qb3AgPSAxOyAvLyB3ZSBkb24ndCBjYXJlIGFib3V0
IGludmFyaWFudCdzIG93biBmcmFtZVxuICAgIHRocm93IGVycm9yO1xuICB9XG59XG5cbm1vZHVs
ZS5leHBvcnRzID0gaW52YXJpYW50O1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBB
Q0sgRk9PVEVSXG4gKiogLi9+L2ZianMvbGliL2ludmFyaWFudC5qc1xuICoqIG1vZHVsZSBpZCA9
IDFcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTQt
MjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhp
cyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91
bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMg
c291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2Fu
IGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpc
biAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBlbXB0eUZ1bmN0aW9uID0gcmVxdWlyZSgnLi9l
bXB0eUZ1bmN0aW9uJyk7XG5cbi8qKlxuICogU2ltaWxhciB0byBpbnZhcmlhbnQgYnV0IG9ubHkg
bG9ncyBhIHdhcm5pbmcgaWYgdGhlIGNvbmRpdGlvbiBpcyBub3QgbWV0LlxuICogVGhpcyBjYW4g
YmUgdXNlZCB0byBsb2cgaXNzdWVzIGluIGRldmVsb3BtZW50IGVudmlyb25tZW50cyBpbiBjcml0
aWNhbFxuICogcGF0aHMuIFJlbW92aW5nIHRoZSBsb2dnaW5nIGNvZGUgZm9yIHByb2R1Y3Rpb24g
ZW52aXJvbm1lbnRzIHdpbGwga2VlcCB0aGVcbiAqIHNhbWUgbG9naWMgYW5kIGZvbGxvdyB0aGUg
c2FtZSBjb2RlIHBhdGhzLlxuICovXG5cbnZhciB3YXJuaW5nID0gZW1wdHlGdW5jdGlvbjtcblxu
aWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgdmFyIHByaW50
V2FybmluZyA9IGZ1bmN0aW9uIHByaW50V2FybmluZyhmb3JtYXQpIHtcbiAgICBmb3IgKHZhciBf
bGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IEFycmF5KF9sZW4gPiAxID8gX2xlbiAtIDEg
OiAwKSwgX2tleSA9IDE7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICAgIGFyZ3NbX2tleSAt
IDFdID0gYXJndW1lbnRzW19rZXldO1xuICAgIH1cblxuICAgIHZhciBhcmdJbmRleCA9IDA7XG4g
ICAgdmFyIG1lc3NhZ2UgPSAnV2FybmluZzogJyArIGZvcm1hdC5yZXBsYWNlKC8lcy9nLCBmdW5j
dGlvbiAoKSB7XG4gICAgICByZXR1cm4gYXJnc1thcmdJbmRleCsrXTtcbiAgICB9KTtcbiAgICBp
ZiAodHlwZW9mIGNvbnNvbGUgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBjb25zb2xlLmVycm9y
KG1lc3NhZ2UpO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgLy8gLS0tIFdlbGNvbWUgdG8gZGVi
dWdnaW5nIFJlYWN0IC0tLVxuICAgICAgLy8gVGhpcyBlcnJvciB3YXMgdGhyb3duIGFzIGEgY29u
dmVuaWVuY2Ugc28gdGhhdCB5b3UgY2FuIHVzZSB0aGlzIHN0YWNrXG4gICAgICAvLyB0byBmaW5k
IHRoZSBjYWxsc2l0ZSB0aGF0IGNhdXNlZCB0aGlzIHdhcm5pbmcgdG8gZmlyZS5cbiAgICAgIHRo
cm93IG5ldyBFcnJvcihtZXNzYWdlKTtcbiAgICB9IGNhdGNoICh4KSB7fVxuICB9O1xuXG4gIHdh
cm5pbmcgPSBmdW5jdGlvbiB3YXJuaW5nKGNvbmRpdGlvbiwgZm9ybWF0KSB7XG4gICAgaWYgKGZv
cm1hdCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2B3YXJuaW5nKGNv
bmRpdGlvbiwgZm9ybWF0LCAuLi5hcmdzKWAgcmVxdWlyZXMgYSB3YXJuaW5nICcgKyAnbWVzc2Fn
ZSBhcmd1bWVudCcpO1xuICAgIH1cblxuICAgIGlmIChmb3JtYXQuaW5kZXhPZignRmFpbGVkIENv
bXBvc2l0ZSBwcm9wVHlwZTogJykgPT09IDApIHtcbiAgICAgIHJldHVybjsgLy8gSWdub3JlIENv
bXBvc2l0ZUNvbXBvbmVudCBwcm9wdHlwZSBjaGVjay5cbiAgICB9XG5cbiAgICBpZiAoIWNvbmRp
dGlvbikge1xuICAgICAgZm9yICh2YXIgX2xlbjIgPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0g
QXJyYXkoX2xlbjIgPiAyID8gX2xlbjIgLSAyIDogMCksIF9rZXkyID0gMjsgX2tleTIgPCBfbGVu
MjsgX2tleTIrKykge1xuICAgICAgICBhcmdzW19rZXkyIC0gMl0gPSBhcmd1bWVudHNbX2tleTJd
O1xuICAgICAgfVxuXG4gICAgICBwcmludFdhcm5pbmcuYXBwbHkodW5kZWZpbmVkLCBbZm9ybWF0
XS5jb25jYXQoYXJncykpO1xuICAgIH1cbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB3YXJu
aW5nO1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+
L2ZianMvbGliL3dhcm5pbmcuanNcbiAqKiBtb2R1bGUgaWQgPSAyXG4gKiogbW9kdWxlIGNodW5r
cyA9IDBcbiAqKi8iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9v
aywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2Rl
IGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAq
IExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4g
QW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4g
dGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogXG4gKi9cbid1
c2Ugc3RyaWN0JztcblxuLyoqXG4gKiBXQVJOSU5HOiBETyBOT1QgbWFudWFsbHkgcmVxdWlyZSB0
aGlzIG1vZHVsZS5cbiAqIFRoaXMgaXMgYSByZXBsYWNlbWVudCBmb3IgYGludmFyaWFudCguLi4p
YCB1c2VkIGJ5IHRoZSBlcnJvciBjb2RlIHN5c3RlbVxuICogYW5kIHdpbGwgX29ubHlfIGJlIHJl
cXVpcmVkIGJ5IHRoZSBjb3JyZXNwb25kaW5nIGJhYmVsIHBhc3MuXG4gKiBJdCBhbHdheXMgdGhy
b3dzLlxuICovXG5cbmZ1bmN0aW9uIHJlYWN0UHJvZEludmFyaWFudChjb2RlKSB7XG4gIHZhciBh
cmdDb3VudCA9IGFyZ3VtZW50cy5sZW5ndGggLSAxO1xuXG4gIHZhciBtZXNzYWdlID0gJ01pbmlm
aWVkIFJlYWN0IGVycm9yICMnICsgY29kZSArICc7IHZpc2l0ICcgKyAnaHR0cDovL2ZhY2Vib29r
LmdpdGh1Yi5pby9yZWFjdC9kb2NzL2Vycm9yLWRlY29kZXIuaHRtbD9pbnZhcmlhbnQ9JyArIGNv
ZGU7XG5cbiAgZm9yICh2YXIgYXJnSWR4ID0gMDsgYXJnSWR4IDwgYXJnQ291bnQ7IGFyZ0lkeCsr
KSB7XG4gICAgbWVzc2FnZSArPSAnJmFyZ3NbXT0nICsgZW5jb2RlVVJJQ29tcG9uZW50KGFyZ3Vt
ZW50c1thcmdJZHggKyAxXSk7XG4gIH1cblxuICBtZXNzYWdlICs9ICcgZm9yIHRoZSBmdWxsIG1l
c3NhZ2Ugb3IgdXNlIHRoZSBub24tbWluaWZpZWQgZGV2IGVudmlyb25tZW50JyArICcgZm9yIGZ1
bGwgZXJyb3JzIGFuZCBhZGRpdGlvbmFsIGhlbHBmdWwgd2FybmluZ3MuJztcblxuICB2YXIgZXJy
b3IgPSBuZXcgRXJyb3IobWVzc2FnZSk7XG4gIGVycm9yLm5hbWUgPSAnSW52YXJpYW50IFZpb2xh
dGlvbic7XG4gIGVycm9yLmZyYW1lc1RvUG9wID0gMTsgLy8gd2UgZG9uJ3QgY2FyZSBhYm91dCBy
ZWFjdFByb2RJbnZhcmlhbnQncyBvd24gZnJhbWVcblxuICB0aHJvdyBlcnJvcjtcbn1cblxubW9k
dWxlLmV4cG9ydHMgPSByZWFjdFByb2RJbnZhcmlhbnQ7XG5cblxuLyoqKioqKioqKioqKioqKioq
XG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3QtZG9tL2xpYi9yZWFjdFByb2RJbnZh
cmlhbnQuanNcbiAqKiBtb2R1bGUgaWQgPSAzXG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8i
LCIvKlxub2JqZWN0LWFzc2lnblxuKGMpIFNpbmRyZSBTb3JodXNcbkBsaWNlbnNlIE1JVFxuKi9c
blxuJ3VzZSBzdHJpY3QnO1xuLyogZXNsaW50LWRpc2FibGUgbm8tdW51c2VkLXZhcnMgKi9cbnZh
ciBnZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzO1xu
dmFyIGhhc093blByb3BlcnR5ID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcbnZh
ciBwcm9wSXNFbnVtZXJhYmxlID0gT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJs
ZTtcblxuZnVuY3Rpb24gdG9PYmplY3QodmFsKSB7XG5cdGlmICh2YWwgPT09IG51bGwgfHwgdmFs
ID09PSB1bmRlZmluZWQpIHtcblx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKCdPYmplY3QuYXNzaWdu
IGNhbm5vdCBiZSBjYWxsZWQgd2l0aCBudWxsIG9yIHVuZGVmaW5lZCcpO1xuXHR9XG5cblx0cmV0
dXJuIE9iamVjdCh2YWwpO1xufVxuXG5mdW5jdGlvbiBzaG91bGRVc2VOYXRpdmUoKSB7XG5cdHRy
eSB7XG5cdFx0aWYgKCFPYmplY3QuYXNzaWduKSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0
fVxuXG5cdFx0Ly8gRGV0ZWN0IGJ1Z2d5IHByb3BlcnR5IGVudW1lcmF0aW9uIG9yZGVyIGluIG9s
ZGVyIFY4IHZlcnNpb25zLlxuXG5cdFx0Ly8gaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL3Y4
L2lzc3Vlcy9kZXRhaWw/aWQ9NDExOFxuXHRcdHZhciB0ZXN0MSA9IG5ldyBTdHJpbmcoJ2FiYycp
OyAgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1uZXctd3JhcHBlcnNcblx0XHR0ZXN0MVs1XSA9
ICdkZSc7XG5cdFx0aWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRlc3QxKVswXSA9PT0g
JzUnKSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXG5cdFx0Ly8gaHR0cHM6Ly9idWdz
LmNocm9taXVtLm9yZy9wL3Y4L2lzc3Vlcy9kZXRhaWw/aWQ9MzA1NlxuXHRcdHZhciB0ZXN0MiA9
IHt9O1xuXHRcdGZvciAodmFyIGkgPSAwOyBpIDwgMTA7IGkrKykge1xuXHRcdFx0dGVzdDJbJ18n
ICsgU3RyaW5nLmZyb21DaGFyQ29kZShpKV0gPSBpO1xuXHRcdH1cblx0XHR2YXIgb3JkZXIyID0g
T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGVzdDIpLm1hcChmdW5jdGlvbiAobikge1xuXHRc
dFx0cmV0dXJuIHRlc3QyW25dO1xuXHRcdH0pO1xuXHRcdGlmIChvcmRlcjIuam9pbignJykgIT09
ICcwMTIzNDU2Nzg5Jykge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblxuXHRcdC8vIGh0
dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC92OC9pc3N1ZXMvZGV0YWlsP2lkPTMwNTZcblx0XHR2
YXIgdGVzdDMgPSB7fTtcblx0XHQnYWJjZGVmZ2hpamtsbW5vcHFyc3QnLnNwbGl0KCcnKS5mb3JF
YWNoKGZ1bmN0aW9uIChsZXR0ZXIpIHtcblx0XHRcdHRlc3QzW2xldHRlcl0gPSBsZXR0ZXI7XG5c
dFx0fSk7XG5cdFx0aWYgKE9iamVjdC5rZXlzKE9iamVjdC5hc3NpZ24oe30sIHRlc3QzKSkuam9p
bignJykgIT09XG5cdFx0XHRcdCdhYmNkZWZnaGlqa2xtbm9wcXJzdCcpIHtcblx0XHRcdHJldHVy
biBmYWxzZTtcblx0XHR9XG5cblx0XHRyZXR1cm4gdHJ1ZTtcblx0fSBjYXRjaCAoZXJyKSB7XG5c
dFx0Ly8gV2UgZG9uJ3QgZXhwZWN0IGFueSBvZiB0aGUgYWJvdmUgdG8gdGhyb3csIGJ1dCBiZXR0
ZXIgdG8gYmUgc2FmZS5cblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cbn1cblxubW9kdWxlLmV4cG9y
dHMgPSBzaG91bGRVc2VOYXRpdmUoKSA/IE9iamVjdC5hc3NpZ24gOiBmdW5jdGlvbiAodGFyZ2V0
LCBzb3VyY2UpIHtcblx0dmFyIGZyb207XG5cdHZhciB0byA9IHRvT2JqZWN0KHRhcmdldCk7XG5c
dHZhciBzeW1ib2xzO1xuXG5cdGZvciAodmFyIHMgPSAxOyBzIDwgYXJndW1lbnRzLmxlbmd0aDsg
cysrKSB7XG5cdFx0ZnJvbSA9IE9iamVjdChhcmd1bWVudHNbc10pO1xuXG5cdFx0Zm9yICh2YXIg
a2V5IGluIGZyb20pIHtcblx0XHRcdGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKGZyb20sIGtleSkp
IHtcblx0XHRcdFx0dG9ba2V5XSA9IGZyb21ba2V5XTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRp
ZiAoZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7XG5cdFx0XHRzeW1ib2xzID0gZ2V0T3duUHJvcGVy
dHlTeW1ib2xzKGZyb20pO1xuXHRcdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCBzeW1ib2xzLmxlbmd0
aDsgaSsrKSB7XG5cdFx0XHRcdGlmIChwcm9wSXNFbnVtZXJhYmxlLmNhbGwoZnJvbSwgc3ltYm9s
c1tpXSkpIHtcblx0XHRcdFx0XHR0b1tzeW1ib2xzW2ldXSA9IGZyb21bc3ltYm9sc1tpXV07XG5c
dFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gdG87XG59O1xuXG5cblxu
LyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vb2JqZWN0LWFz
c2lnbi9pbmRleC5qc1xuICoqIG1vZHVsZSBpZCA9IDRcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxu
ICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAq
IEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNl
ZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZp
bGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9u
YWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRT
IGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5c
bnZhciBfcHJvZEludmFyaWFudCA9IHJlcXVpcmUoJy4vcmVhY3RQcm9kSW52YXJpYW50Jyk7XG5c
bnZhciBET01Qcm9wZXJ0eSA9IHJlcXVpcmUoJy4vRE9NUHJvcGVydHknKTtcbnZhciBSZWFjdERP
TUNvbXBvbmVudEZsYWdzID0gcmVxdWlyZSgnLi9SZWFjdERPTUNvbXBvbmVudEZsYWdzJyk7XG5c
bnZhciBpbnZhcmlhbnQgPSByZXF1aXJlKCdmYmpzL2xpYi9pbnZhcmlhbnQnKTtcblxudmFyIEFU
VFJfTkFNRSA9IERPTVByb3BlcnR5LklEX0FUVFJJQlVURV9OQU1FO1xudmFyIEZsYWdzID0gUmVh
Y3RET01Db21wb25lbnRGbGFncztcblxudmFyIGludGVybmFsSW5zdGFuY2VLZXkgPSAnX19yZWFj
dEludGVybmFsSW5zdGFuY2UkJyArIE1hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnNsaWNlKDIp
O1xuXG4vKipcbiAqIENoZWNrIGlmIGEgZ2l2ZW4gbm9kZSBzaG91bGQgYmUgY2FjaGVkLlxuICov
XG5mdW5jdGlvbiBzaG91bGRQcmVjYWNoZU5vZGUobm9kZSwgbm9kZUlEKSB7XG4gIHJldHVybiBu
b2RlLm5vZGVUeXBlID09PSAxICYmIG5vZGUuZ2V0QXR0cmlidXRlKEFUVFJfTkFNRSkgPT09IFN0
cmluZyhub2RlSUQpIHx8IG5vZGUubm9kZVR5cGUgPT09IDggJiYgbm9kZS5ub2RlVmFsdWUgPT09
ICcgcmVhY3QtdGV4dDogJyArIG5vZGVJRCArICcgJyB8fCBub2RlLm5vZGVUeXBlID09PSA4ICYm
IG5vZGUubm9kZVZhbHVlID09PSAnIHJlYWN0LWVtcHR5OiAnICsgbm9kZUlEICsgJyAnO1xufVxu
XG4vKipcbiAqIERyaWxsIGRvd24gKHRocm91Z2ggY29tcG9zaXRlcyBhbmQgZW1wdHkgY29tcG9u
ZW50cykgdW50aWwgd2UgZ2V0IGEgaG9zdCBvclxuICogaG9zdCB0ZXh0IGNvbXBvbmVudC5cbiAq
XG4gKiBUaGlzIGlzIHByZXR0eSBwb2x5bW9ycGhpYyBidXQgdW5hdm9pZGFibGUgd2l0aCB0aGUg
Y3VycmVudCBzdHJ1Y3R1cmUgd2UgaGF2ZVxuICogZm9yIGBfcmVuZGVyZWRDaGlsZHJlbmAuXG4g
Ki9cbmZ1bmN0aW9uIGdldFJlbmRlcmVkSG9zdE9yVGV4dEZyb21Db21wb25lbnQoY29tcG9uZW50
KSB7XG4gIHZhciByZW5kZXJlZDtcbiAgd2hpbGUgKHJlbmRlcmVkID0gY29tcG9uZW50Ll9yZW5k
ZXJlZENvbXBvbmVudCkge1xuICAgIGNvbXBvbmVudCA9IHJlbmRlcmVkO1xuICB9XG4gIHJldHVy
biBjb21wb25lbnQ7XG59XG5cbi8qKlxuICogUG9wdWxhdGUgYF9ob3N0Tm9kZWAgb24gdGhlIHJl
bmRlcmVkIGhvc3QvdGV4dCBjb21wb25lbnQgd2l0aCB0aGUgZ2l2ZW5cbiAqIERPTSBub2RlLiBU
aGUgcGFzc2VkIGBpbnN0YCBjYW4gYmUgYSBjb21wb3NpdGUuXG4gKi9cbmZ1bmN0aW9uIHByZWNh
Y2hlTm9kZShpbnN0LCBub2RlKSB7XG4gIHZhciBob3N0SW5zdCA9IGdldFJlbmRlcmVkSG9zdE9y
VGV4dEZyb21Db21wb25lbnQoaW5zdCk7XG4gIGhvc3RJbnN0Ll9ob3N0Tm9kZSA9IG5vZGU7XG4g
IG5vZGVbaW50ZXJuYWxJbnN0YW5jZUtleV0gPSBob3N0SW5zdDtcbn1cblxuZnVuY3Rpb24gdW5j
YWNoZU5vZGUoaW5zdCkge1xuICB2YXIgbm9kZSA9IGluc3QuX2hvc3ROb2RlO1xuICBpZiAobm9k
ZSkge1xuICAgIGRlbGV0ZSBub2RlW2ludGVybmFsSW5zdGFuY2VLZXldO1xuICAgIGluc3QuX2hv
c3ROb2RlID0gbnVsbDtcbiAgfVxufVxuXG4vKipcbiAqIFBvcHVsYXRlIGBfaG9zdE5vZGVgIG9u
IGVhY2ggY2hpbGQgb2YgYGluc3RgLCBhc3N1bWluZyB0aGF0IHRoZSBjaGlsZHJlblxuICogbWF0
Y2ggdXAgd2l0aCB0aGUgRE9NIChlbGVtZW50KSBjaGlsZHJlbiBvZiBgbm9kZWAuXG4gKlxuICog
V2UgY2FjaGUgZW50aXJlIGxldmVscyBhdCBvbmNlIHRvIGF2b2lkIGFuIG5eMiBwcm9ibGVtIHdo
ZXJlIHdlIGFjY2VzcyB0aGVcbiAqIGNoaWxkcmVuIG9mIGEgbm9kZSBzZXF1ZW50aWFsbHkgYW5k
IGhhdmUgdG8gd2FsayBmcm9tIHRoZSBzdGFydCB0byBvdXIgdGFyZ2V0XG4gKiBub2RlIGV2ZXJ5
IHRpbWUuXG4gKlxuICogU2luY2Ugd2UgdXBkYXRlIGBfcmVuZGVyZWRDaGlsZHJlbmAgYW5kIHRo
ZSBhY3R1YWwgRE9NIGF0IChzbGlnaHRseSlcbiAqIGRpZmZlcmVudCB0aW1lcywgd2UgY291bGQg
cmFjZSBoZXJlIGFuZCBzZWUgYSBuZXdlciBgX3JlbmRlcmVkQ2hpbGRyZW5gIHRoYW5cbiAqIHRo
ZSBET00gbm9kZXMgd2Ugc2VlLiBUbyBhdm9pZCB0aGlzLCBSZWFjdE11bHRpQ2hpbGQgY2FsbHNc
biAqIGBwcmVwYXJlVG9NYW5hZ2VDaGlsZHJlbmAgYmVmb3JlIHdlIGNoYW5nZSBgX3JlbmRlcmVk
Q2hpbGRyZW5gLCBhdCB3aGljaFxuICogdGltZSB0aGUgY29udGFpbmVyJ3MgY2hpbGQgbm9kZXMg
YXJlIGFsd2F5cyBjYWNoZWQgKHVudGlsIGl0IHVubW91bnRzKS5cbiAqL1xuZnVuY3Rpb24gcHJl
Y2FjaGVDaGlsZE5vZGVzKGluc3QsIG5vZGUpIHtcbiAgaWYgKGluc3QuX2ZsYWdzICYgRmxhZ3Mu
aGFzQ2FjaGVkQ2hpbGROb2Rlcykge1xuICAgIHJldHVybjtcbiAgfVxuICB2YXIgY2hpbGRyZW4g
PSBpbnN0Ll9yZW5kZXJlZENoaWxkcmVuO1xuICB2YXIgY2hpbGROb2RlID0gbm9kZS5maXJzdENo
aWxkO1xuICBvdXRlcjogZm9yICh2YXIgbmFtZSBpbiBjaGlsZHJlbikge1xuICAgIGlmICghY2hp
bGRyZW4uaGFzT3duUHJvcGVydHkobmFtZSkpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAg
ICB2YXIgY2hpbGRJbnN0ID0gY2hpbGRyZW5bbmFtZV07XG4gICAgdmFyIGNoaWxkSUQgPSBnZXRS
ZW5kZXJlZEhvc3RPclRleHRGcm9tQ29tcG9uZW50KGNoaWxkSW5zdCkuX2RvbUlEO1xuICAgIGlm
IChjaGlsZElEID09PSAwKSB7XG4gICAgICAvLyBXZSdyZSBjdXJyZW50bHkgdW5tb3VudGluZyB0
aGlzIGNoaWxkIGluIFJlYWN0TXVsdGlDaGlsZDsgc2tpcCBpdC5cbiAgICAgIGNvbnRpbnVlO1xu
ICAgIH1cbiAgICAvLyBXZSBhc3N1bWUgdGhlIGNoaWxkIG5vZGVzIGFyZSBpbiB0aGUgc2FtZSBv
cmRlciBhcyB0aGUgY2hpbGQgaW5zdGFuY2VzLlxuICAgIGZvciAoOyBjaGlsZE5vZGUgIT09IG51
bGw7IGNoaWxkTm9kZSA9IGNoaWxkTm9kZS5uZXh0U2libGluZykge1xuICAgICAgaWYgKHNob3Vs
ZFByZWNhY2hlTm9kZShjaGlsZE5vZGUsIGNoaWxkSUQpKSB7XG4gICAgICAgIHByZWNhY2hlTm9k
ZShjaGlsZEluc3QsIGNoaWxkTm9kZSk7XG4gICAgICAgIGNvbnRpbnVlIG91dGVyO1xuICAgICAg
fVxuICAgIH1cbiAgICAvLyBXZSByZWFjaGVkIHRoZSBlbmQgb2YgdGhlIERPTSBjaGlsZHJlbiB3
aXRob3V0IGZpbmRpbmcgYW4gSUQgbWF0Y2guXG4gICAgIWZhbHNlID8gcHJvY2Vzcy5lbnYuTk9E
RV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ1VuYWJsZSB0byBmaW5k
IGVsZW1lbnQgd2l0aCBJRCAlcy4nLCBjaGlsZElEKSA6IF9wcm9kSW52YXJpYW50KCczMicsIGNo
aWxkSUQpIDogdm9pZCAwO1xuICB9XG4gIGluc3QuX2ZsYWdzIHw9IEZsYWdzLmhhc0NhY2hlZENo
aWxkTm9kZXM7XG59XG5cbi8qKlxuICogR2l2ZW4gYSBET00gbm9kZSwgcmV0dXJuIHRoZSBjbG9z
ZXN0IFJlYWN0RE9NQ29tcG9uZW50IG9yXG4gKiBSZWFjdERPTVRleHRDb21wb25lbnQgaW5zdGFu
Y2UgYW5jZXN0b3IuXG4gKi9cbmZ1bmN0aW9uIGdldENsb3Nlc3RJbnN0YW5jZUZyb21Ob2RlKG5v
ZGUpIHtcbiAgaWYgKG5vZGVbaW50ZXJuYWxJbnN0YW5jZUtleV0pIHtcbiAgICByZXR1cm4gbm9k
ZVtpbnRlcm5hbEluc3RhbmNlS2V5XTtcbiAgfVxuXG4gIC8vIFdhbGsgdXAgdGhlIHRyZWUgdW50
aWwgd2UgZmluZCBhbiBhbmNlc3RvciB3aG9zZSBpbnN0YW5jZSB3ZSBoYXZlIGNhY2hlZC5cbiAg
dmFyIHBhcmVudHMgPSBbXTtcbiAgd2hpbGUgKCFub2RlW2ludGVybmFsSW5zdGFuY2VLZXldKSB7
XG4gICAgcGFyZW50cy5wdXNoKG5vZGUpO1xuICAgIGlmIChub2RlLnBhcmVudE5vZGUpIHtcbiAg
ICAgIG5vZGUgPSBub2RlLnBhcmVudE5vZGU7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFRvcCBv
ZiB0aGUgdHJlZS4gVGhpcyBub2RlIG11c3Qgbm90IGJlIHBhcnQgb2YgYSBSZWFjdCB0cmVlIChv
ciBpc1xuICAgICAgLy8gdW5tb3VudGVkLCBwb3RlbnRpYWxseSkuXG4gICAgICByZXR1cm4gbnVs
bDtcbiAgICB9XG4gIH1cblxuICB2YXIgY2xvc2VzdDtcbiAgdmFyIGluc3Q7XG4gIGZvciAoOyBu
b2RlICYmIChpbnN0ID0gbm9kZVtpbnRlcm5hbEluc3RhbmNlS2V5XSk7IG5vZGUgPSBwYXJlbnRz
LnBvcCgpKSB7XG4gICAgY2xvc2VzdCA9IGluc3Q7XG4gICAgaWYgKHBhcmVudHMubGVuZ3RoKSB7
XG4gICAgICBwcmVjYWNoZUNoaWxkTm9kZXMoaW5zdCwgbm9kZSk7XG4gICAgfVxuICB9XG5cbiAg
cmV0dXJuIGNsb3Nlc3Q7XG59XG5cbi8qKlxuICogR2l2ZW4gYSBET00gbm9kZSwgcmV0dXJuIHRo
ZSBSZWFjdERPTUNvbXBvbmVudCBvciBSZWFjdERPTVRleHRDb21wb25lbnRcbiAqIGluc3RhbmNl
LCBvciBudWxsIGlmIHRoZSBub2RlIHdhcyBub3QgcmVuZGVyZWQgYnkgdGhpcyBSZWFjdC5cbiAq
L1xuZnVuY3Rpb24gZ2V0SW5zdGFuY2VGcm9tTm9kZShub2RlKSB7XG4gIHZhciBpbnN0ID0gZ2V0
Q2xvc2VzdEluc3RhbmNlRnJvbU5vZGUobm9kZSk7XG4gIGlmIChpbnN0ICE9IG51bGwgJiYgaW5z
dC5faG9zdE5vZGUgPT09IG5vZGUpIHtcbiAgICByZXR1cm4gaW5zdDtcbiAgfSBlbHNlIHtcbiAg
ICByZXR1cm4gbnVsbDtcbiAgfVxufVxuXG4vKipcbiAqIEdpdmVuIGEgUmVhY3RET01Db21wb25l
bnQgb3IgUmVhY3RET01UZXh0Q29tcG9uZW50LCByZXR1cm4gdGhlIGNvcnJlc3BvbmRpbmdcbiAq
IERPTSBub2RlLlxuICovXG5mdW5jdGlvbiBnZXROb2RlRnJvbUluc3RhbmNlKGluc3QpIHtcbiAg
Ly8gV2l0aG91dCB0aGlzIGZpcnN0IGludmFyaWFudCwgcGFzc2luZyBhIG5vbi1ET00tY29tcG9u
ZW50IHRyaWdnZXJzIHRoZSBuZXh0XG4gIC8vIGludmFyaWFudCBmb3IgYSBtaXNzaW5nIHBhcmVu
dCwgd2hpY2ggaXMgc3VwZXIgY29uZnVzaW5nLlxuICAhKGluc3QuX2hvc3ROb2RlICE9PSB1bmRl
ZmluZWQpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFu
dChmYWxzZSwgJ2dldE5vZGVGcm9tSW5zdGFuY2U6IEludmFsaWQgYXJndW1lbnQuJykgOiBfcHJv
ZEludmFyaWFudCgnMzMnKSA6IHZvaWQgMDtcblxuICBpZiAoaW5zdC5faG9zdE5vZGUpIHtcbiAg
ICByZXR1cm4gaW5zdC5faG9zdE5vZGU7XG4gIH1cblxuICAvLyBXYWxrIHVwIHRoZSB0cmVlIHVu
dGlsIHdlIGZpbmQgYW4gYW5jZXN0b3Igd2hvc2UgRE9NIG5vZGUgd2UgaGF2ZSBjYWNoZWQuXG4g
IHZhciBwYXJlbnRzID0gW107XG4gIHdoaWxlICghaW5zdC5faG9zdE5vZGUpIHtcbiAgICBwYXJl
bnRzLnB1c2goaW5zdCk7XG4gICAgIWluc3QuX2hvc3RQYXJlbnQgPyBwcm9jZXNzLmVudi5OT0RF
X0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnUmVhY3QgRE9NIHRyZWUg
cm9vdCBzaG91bGQgYWx3YXlzIGhhdmUgYSBub2RlIHJlZmVyZW5jZS4nKSA6IF9wcm9kSW52YXJp
YW50KCczNCcpIDogdm9pZCAwO1xuICAgIGluc3QgPSBpbnN0Ll9ob3N0UGFyZW50O1xuICB9XG5c
biAgLy8gTm93IHBhcmVudHMgY29udGFpbnMgZWFjaCBhbmNlc3RvciB0aGF0IGRvZXMgKm5vdCog
aGF2ZSBhIGNhY2hlZCBuYXRpdmVcbiAgLy8gbm9kZSwgYW5kIGBpbnN0YCBpcyB0aGUgZGVlcGVz
dCBhbmNlc3RvciB0aGF0IGRvZXMuXG4gIGZvciAoOyBwYXJlbnRzLmxlbmd0aDsgaW5zdCA9IHBh
cmVudHMucG9wKCkpIHtcbiAgICBwcmVjYWNoZUNoaWxkTm9kZXMoaW5zdCwgaW5zdC5faG9zdE5v
ZGUpO1xuICB9XG5cbiAgcmV0dXJuIGluc3QuX2hvc3ROb2RlO1xufVxuXG52YXIgUmVhY3RET01D
b21wb25lbnRUcmVlID0ge1xuICBnZXRDbG9zZXN0SW5zdGFuY2VGcm9tTm9kZTogZ2V0Q2xvc2Vz
dEluc3RhbmNlRnJvbU5vZGUsXG4gIGdldEluc3RhbmNlRnJvbU5vZGU6IGdldEluc3RhbmNlRnJv
bU5vZGUsXG4gIGdldE5vZGVGcm9tSW5zdGFuY2U6IGdldE5vZGVGcm9tSW5zdGFuY2UsXG4gIHBy
ZWNhY2hlQ2hpbGROb2RlczogcHJlY2FjaGVDaGlsZE5vZGVzLFxuICBwcmVjYWNoZU5vZGU6IHBy
ZWNhY2hlTm9kZSxcbiAgdW5jYWNoZU5vZGU6IHVuY2FjaGVOb2RlXG59O1xuXG5tb2R1bGUuZXhw
b3J0cyA9IFJlYWN0RE9NQ29tcG9uZW50VHJlZTtcblxuXG4vKioqKioqKioqKioqKioqKipcbiAq
KiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFjdC1kb20vbGliL1JlYWN0RE9NQ29tcG9uZW50
VHJlZS5qc1xuICoqIG1vZHVsZSBpZCA9IDVcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIs
Ii8qKlxuICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBB
bGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQg
dW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxl
IGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFs
IGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBm
aWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52
YXIgY2FuVXNlRE9NID0gISEodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93
LmRvY3VtZW50ICYmIHdpbmRvdy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KTtcblxuLyoqXG4gKiBT
aW1wbGUsIGxpZ2h0d2VpZ2h0IG1vZHVsZSBhc3Npc3Rpbmcgd2l0aCB0aGUgZGV0ZWN0aW9uIGFu
ZCBjb250ZXh0IG9mXG4gKiBXb3JrZXIuIEhlbHBzIGF2b2lkIGNpcmN1bGFyIGRlcGVuZGVuY2ll
cyBhbmQgYWxsb3dzIGNvZGUgdG8gcmVhc29uIGFib3V0XG4gKiB3aGV0aGVyIG9yIG5vdCB0aGV5
IGFyZSBpbiBhIFdvcmtlciwgZXZlbiBpZiB0aGV5IG5ldmVyIGluY2x1ZGUgdGhlIG1haW5cbiAq
IGBSZWFjdFdvcmtlcmAgZGVwZW5kZW5jeS5cbiAqL1xudmFyIEV4ZWN1dGlvbkVudmlyb25tZW50
ID0ge1xuXG4gIGNhblVzZURPTTogY2FuVXNlRE9NLFxuXG4gIGNhblVzZVdvcmtlcnM6IHR5cGVv
ZiBXb3JrZXIgIT09ICd1bmRlZmluZWQnLFxuXG4gIGNhblVzZUV2ZW50TGlzdGVuZXJzOiBjYW5V
c2VET00gJiYgISEod2luZG93LmFkZEV2ZW50TGlzdGVuZXIgfHwgd2luZG93LmF0dGFjaEV2ZW50
KSxcblxuICBjYW5Vc2VWaWV3cG9ydDogY2FuVXNlRE9NICYmICEhd2luZG93LnNjcmVlbixcblxu
ICBpc0luV29ya2VyOiAhY2FuVXNlRE9NIC8vIEZvciBub3csIHRoaXMgaXMgdHJ1ZSAtIG1pZ2h0
IGNoYW5nZSBpbiB0aGUgZnV0dXJlLlxuXG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IEV4ZWN1dGlv
bkVudmlyb25tZW50O1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVS
XG4gKiogLi9+L2ZianMvbGliL0V4ZWN1dGlvbkVudmlyb25tZW50LmpzXG4gKiogbW9kdWxlIGlk
ID0gNlxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbi8q
KlxuICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwg
cmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5k
ZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGlu
IHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdy
YW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxl
IGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBcbiAqL1xuXG5mdW5jdGlvbiBtYWtlRW1w
dHlGdW5jdGlvbihhcmcpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gYXJn
O1xuICB9O1xufVxuXG4vKipcbiAqIFRoaXMgZnVuY3Rpb24gYWNjZXB0cyBhbmQgZGlzY2FyZHMg
aW5wdXRzOyBpdCBoYXMgbm8gc2lkZSBlZmZlY3RzLiBUaGlzIGlzXG4gKiBwcmltYXJpbHkgdXNl
ZnVsIGlkaW9tYXRpY2FsbHkgZm9yIG92ZXJyaWRhYmxlIGZ1bmN0aW9uIGVuZHBvaW50cyB3aGlj
aFxuICogYWx3YXlzIG5lZWQgdG8gYmUgY2FsbGFibGUsIHNpbmNlIEpTIGxhY2tzIGEgbnVsbC1j
YWxsIGlkaW9tIGFsYSBDb2NvYS5cbiAqL1xudmFyIGVtcHR5RnVuY3Rpb24gPSBmdW5jdGlvbiBl
bXB0eUZ1bmN0aW9uKCkge307XG5cbmVtcHR5RnVuY3Rpb24udGhhdFJldHVybnMgPSBtYWtlRW1w
dHlGdW5jdGlvbjtcbmVtcHR5RnVuY3Rpb24udGhhdFJldHVybnNGYWxzZSA9IG1ha2VFbXB0eUZ1
bmN0aW9uKGZhbHNlKTtcbmVtcHR5RnVuY3Rpb24udGhhdFJldHVybnNUcnVlID0gbWFrZUVtcHR5
RnVuY3Rpb24odHJ1ZSk7XG5lbXB0eUZ1bmN0aW9uLnRoYXRSZXR1cm5zTnVsbCA9IG1ha2VFbXB0
eUZ1bmN0aW9uKG51bGwpO1xuZW1wdHlGdW5jdGlvbi50aGF0UmV0dXJuc1RoaXMgPSBmdW5jdGlv
biAoKSB7XG4gIHJldHVybiB0aGlzO1xufTtcbmVtcHR5RnVuY3Rpb24udGhhdFJldHVybnNBcmd1
bWVudCA9IGZ1bmN0aW9uIChhcmcpIHtcbiAgcmV0dXJuIGFyZztcbn07XG5cbm1vZHVsZS5leHBv
cnRzID0gZW1wdHlGdW5jdGlvbjtcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNL
IEZPT1RFUlxuICoqIC4vfi9mYmpzL2xpYi9lbXB0eUZ1bmN0aW9uLmpzXG4gKiogbW9kdWxlIGlk
ID0gN1xuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAx
Ni1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4g
KiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5z
ZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2Yg
dGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0
cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3Rvcnku
XG4gKlxuICogXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG4vLyBUcnVzdCB0aGUgZGV2ZWxvcGVy
IHRvIG9ubHkgdXNlIFJlYWN0SW5zdHJ1bWVudGF0aW9uIHdpdGggYSBfX0RFVl9fIGNoZWNrXG5c
bnZhciBkZWJ1Z1Rvb2wgPSBudWxsO1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdw
cm9kdWN0aW9uJykge1xuICB2YXIgUmVhY3REZWJ1Z1Rvb2wgPSByZXF1aXJlKCcuL1JlYWN0RGVi
dWdUb29sJyk7XG4gIGRlYnVnVG9vbCA9IFJlYWN0RGVidWdUb29sO1xufVxuXG5tb2R1bGUuZXhw
b3J0cyA9IHsgZGVidWdUb29sOiBkZWJ1Z1Rvb2wgfTtcblxuXG4vKioqKioqKioqKioqKioqKipc
biAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFjdC1kb20vbGliL1JlYWN0SW5zdHJ1bWVu
dGF0aW9uLmpzXG4gKiogbW9kdWxlIGlkID0gOFxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiov
IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxs
IHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVu
ZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBp
biB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBn
cmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmls
ZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFy
IF9wcm9kSW52YXJpYW50ID0gcmVxdWlyZSgnLi9yZWFjdFByb2RJbnZhcmlhbnQnKSxcbiAgICBf
YXNzaWduID0gcmVxdWlyZSgnb2JqZWN0LWFzc2lnbicpO1xuXG52YXIgQ2FsbGJhY2tRdWV1ZSA9
IHJlcXVpcmUoJy4vQ2FsbGJhY2tRdWV1ZScpO1xudmFyIFBvb2xlZENsYXNzID0gcmVxdWlyZSgn
Li9Qb29sZWRDbGFzcycpO1xudmFyIFJlYWN0RmVhdHVyZUZsYWdzID0gcmVxdWlyZSgnLi9SZWFj
dEZlYXR1cmVGbGFncycpO1xudmFyIFJlYWN0UmVjb25jaWxlciA9IHJlcXVpcmUoJy4vUmVhY3RS
ZWNvbmNpbGVyJyk7XG52YXIgVHJhbnNhY3Rpb24gPSByZXF1aXJlKCcuL1RyYW5zYWN0aW9uJyk7
XG5cbnZhciBpbnZhcmlhbnQgPSByZXF1aXJlKCdmYmpzL2xpYi9pbnZhcmlhbnQnKTtcblxudmFy
IGRpcnR5Q29tcG9uZW50cyA9IFtdO1xudmFyIHVwZGF0ZUJhdGNoTnVtYmVyID0gMDtcbnZhciBh
c2FwQ2FsbGJhY2tRdWV1ZSA9IENhbGxiYWNrUXVldWUuZ2V0UG9vbGVkKCk7XG52YXIgYXNhcEVu
cXVldWVkID0gZmFsc2U7XG5cbnZhciBiYXRjaGluZ1N0cmF0ZWd5ID0gbnVsbDtcblxuZnVuY3Rp
b24gZW5zdXJlSW5qZWN0ZWQoKSB7XG4gICEoUmVhY3RVcGRhdGVzLlJlYWN0UmVjb25jaWxlVHJh
bnNhY3Rpb24gJiYgYmF0Y2hpbmdTdHJhdGVneSkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0g
J3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnUmVhY3RVcGRhdGVzOiBtdXN0IGluamVj
dCBhIHJlY29uY2lsZSB0cmFuc2FjdGlvbiBjbGFzcyBhbmQgYmF0Y2hpbmcgc3RyYXRlZ3knKSA6
IF9wcm9kSW52YXJpYW50KCcxMjMnKSA6IHZvaWQgMDtcbn1cblxudmFyIE5FU1RFRF9VUERBVEVT
ID0ge1xuICBpbml0aWFsaXplOiBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5kaXJ0eUNvbXBvbmVu
dHNMZW5ndGggPSBkaXJ0eUNvbXBvbmVudHMubGVuZ3RoO1xuICB9LFxuICBjbG9zZTogZnVuY3Rp
b24gKCkge1xuICAgIGlmICh0aGlzLmRpcnR5Q29tcG9uZW50c0xlbmd0aCAhPT0gZGlydHlDb21w
b25lbnRzLmxlbmd0aCkge1xuICAgICAgLy8gQWRkaXRpb25hbCB1cGRhdGVzIHdlcmUgZW5xdWV1
ZWQgYnkgY29tcG9uZW50RGlkVXBkYXRlIGhhbmRsZXJzIG9yXG4gICAgICAvLyBzaW1pbGFyOyBi
ZWZvcmUgb3VyIG93biBVUERBVEVfUVVFVUVJTkcgd3JhcHBlciBjbG9zZXMsIHdlIHdhbnQgdG8g
cnVuXG4gICAgICAvLyB0aGVzZSBuZXcgdXBkYXRlcyBzbyB0aGF0IGlmIEEncyBjb21wb25lbnRE
aWRVcGRhdGUgY2FsbHMgc2V0U3RhdGUgb25cbiAgICAgIC8vIEIsIEIgd2lsbCB1cGRhdGUgYmVm
b3JlIHRoZSBjYWxsYmFjayBBJ3MgdXBkYXRlciBwcm92aWRlZCB3aGVuIGNhbGxpbmdcbiAgICAg
IC8vIHNldFN0YXRlLlxuICAgICAgZGlydHlDb21wb25lbnRzLnNwbGljZSgwLCB0aGlzLmRpcnR5
Q29tcG9uZW50c0xlbmd0aCk7XG4gICAgICBmbHVzaEJhdGNoZWRVcGRhdGVzKCk7XG4gICAgfSBl
bHNlIHtcbiAgICAgIGRpcnR5Q29tcG9uZW50cy5sZW5ndGggPSAwO1xuICAgIH1cbiAgfVxufTtc
blxudmFyIFVQREFURV9RVUVVRUlORyA9IHtcbiAgaW5pdGlhbGl6ZTogZnVuY3Rpb24gKCkge1xu
ICAgIHRoaXMuY2FsbGJhY2tRdWV1ZS5yZXNldCgpO1xuICB9LFxuICBjbG9zZTogZnVuY3Rpb24g
KCkge1xuICAgIHRoaXMuY2FsbGJhY2tRdWV1ZS5ub3RpZnlBbGwoKTtcbiAgfVxufTtcblxudmFy
IFRSQU5TQUNUSU9OX1dSQVBQRVJTID0gW05FU1RFRF9VUERBVEVTLCBVUERBVEVfUVVFVUVJTkdd
O1xuXG5mdW5jdGlvbiBSZWFjdFVwZGF0ZXNGbHVzaFRyYW5zYWN0aW9uKCkge1xuICB0aGlzLnJl
aW5pdGlhbGl6ZVRyYW5zYWN0aW9uKCk7XG4gIHRoaXMuZGlydHlDb21wb25lbnRzTGVuZ3RoID0g
bnVsbDtcbiAgdGhpcy5jYWxsYmFja1F1ZXVlID0gQ2FsbGJhY2tRdWV1ZS5nZXRQb29sZWQoKTtc
biAgdGhpcy5yZWNvbmNpbGVUcmFuc2FjdGlvbiA9IFJlYWN0VXBkYXRlcy5SZWFjdFJlY29uY2ls
ZVRyYW5zYWN0aW9uLmdldFBvb2xlZChcbiAgLyogdXNlQ3JlYXRlRWxlbWVudCAqL3RydWUpO1xu
fVxuXG5fYXNzaWduKFJlYWN0VXBkYXRlc0ZsdXNoVHJhbnNhY3Rpb24ucHJvdG90eXBlLCBUcmFu
c2FjdGlvbiwge1xuICBnZXRUcmFuc2FjdGlvbldyYXBwZXJzOiBmdW5jdGlvbiAoKSB7XG4gICAg
cmV0dXJuIFRSQU5TQUNUSU9OX1dSQVBQRVJTO1xuICB9LFxuXG4gIGRlc3RydWN0b3I6IGZ1bmN0
aW9uICgpIHtcbiAgICB0aGlzLmRpcnR5Q29tcG9uZW50c0xlbmd0aCA9IG51bGw7XG4gICAgQ2Fs
bGJhY2tRdWV1ZS5yZWxlYXNlKHRoaXMuY2FsbGJhY2tRdWV1ZSk7XG4gICAgdGhpcy5jYWxsYmFj
a1F1ZXVlID0gbnVsbDtcbiAgICBSZWFjdFVwZGF0ZXMuUmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlv
bi5yZWxlYXNlKHRoaXMucmVjb25jaWxlVHJhbnNhY3Rpb24pO1xuICAgIHRoaXMucmVjb25jaWxl
VHJhbnNhY3Rpb24gPSBudWxsO1xuICB9LFxuXG4gIHBlcmZvcm06IGZ1bmN0aW9uIChtZXRob2Qs
IHNjb3BlLCBhKSB7XG4gICAgLy8gRXNzZW50aWFsbHkgY2FsbHMgYHRoaXMucmVjb25jaWxlVHJh
bnNhY3Rpb24ucGVyZm9ybShtZXRob2QsIHNjb3BlLCBhKWBcbiAgICAvLyB3aXRoIHRoaXMgdHJh
bnNhY3Rpb24ncyB3cmFwcGVycyBhcm91bmQgaXQuXG4gICAgcmV0dXJuIFRyYW5zYWN0aW9uLnBl
cmZvcm0uY2FsbCh0aGlzLCB0aGlzLnJlY29uY2lsZVRyYW5zYWN0aW9uLnBlcmZvcm0sIHRoaXMu
cmVjb25jaWxlVHJhbnNhY3Rpb24sIG1ldGhvZCwgc2NvcGUsIGEpO1xuICB9XG59KTtcblxuUG9v
bGVkQ2xhc3MuYWRkUG9vbGluZ1RvKFJlYWN0VXBkYXRlc0ZsdXNoVHJhbnNhY3Rpb24pO1xuXG5m
dW5jdGlvbiBiYXRjaGVkVXBkYXRlcyhjYWxsYmFjaywgYSwgYiwgYywgZCwgZSkge1xuICBlbnN1
cmVJbmplY3RlZCgpO1xuICByZXR1cm4gYmF0Y2hpbmdTdHJhdGVneS5iYXRjaGVkVXBkYXRlcyhj
YWxsYmFjaywgYSwgYiwgYywgZCwgZSk7XG59XG5cbi8qKlxuICogQXJyYXkgY29tcGFyYXRvciBm
b3IgUmVhY3RDb21wb25lbnRzIGJ5IG1vdW50IG9yZGVyaW5nLlxuICpcbiAqIEBwYXJhbSB7UmVh
Y3RDb21wb25lbnR9IGMxIGZpcnN0IGNvbXBvbmVudCB5b3UncmUgY29tcGFyaW5nXG4gKiBAcGFy
YW0ge1JlYWN0Q29tcG9uZW50fSBjMiBzZWNvbmQgY29tcG9uZW50IHlvdSdyZSBjb21wYXJpbmdc
biAqIEByZXR1cm4ge251bWJlcn0gUmV0dXJuIHZhbHVlIHVzYWJsZSBieSBBcnJheS5wcm90b3R5
cGUuc29ydCgpLlxuICovXG5mdW5jdGlvbiBtb3VudE9yZGVyQ29tcGFyYXRvcihjMSwgYzIpIHtc
biAgcmV0dXJuIGMxLl9tb3VudE9yZGVyIC0gYzIuX21vdW50T3JkZXI7XG59XG5cbmZ1bmN0aW9u
IHJ1bkJhdGNoZWRVcGRhdGVzKHRyYW5zYWN0aW9uKSB7XG4gIHZhciBsZW4gPSB0cmFuc2FjdGlv
bi5kaXJ0eUNvbXBvbmVudHNMZW5ndGg7XG4gICEobGVuID09PSBkaXJ0eUNvbXBvbmVudHMubGVu
Z3RoKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQo
ZmFsc2UsICdFeHBlY3RlZCBmbHVzaCB0cmFuc2FjdGlvblxcJ3Mgc3RvcmVkIGRpcnR5LWNvbXBv
bmVudHMgbGVuZ3RoICglcykgdG8gbWF0Y2ggZGlydHktY29tcG9uZW50cyBhcnJheSBsZW5ndGgg
KCVzKS4nLCBsZW4sIGRpcnR5Q29tcG9uZW50cy5sZW5ndGgpIDogX3Byb2RJbnZhcmlhbnQoJzEy
NCcsIGxlbiwgZGlydHlDb21wb25lbnRzLmxlbmd0aCkgOiB2b2lkIDA7XG5cbiAgLy8gU2luY2Ug
cmVjb25jaWxpbmcgYSBjb21wb25lbnQgaGlnaGVyIGluIHRoZSBvd25lciBoaWVyYXJjaHkgdXN1
YWxseSAobm90XG4gIC8vIGFsd2F5cyAtLSBzZWUgc2hvdWxkQ29tcG9uZW50VXBkYXRlKCkpIHdp
bGwgcmVjb25jaWxlIGNoaWxkcmVuLCByZWNvbmNpbGVcbiAgLy8gdGhlbSBiZWZvcmUgdGhlaXIg
Y2hpbGRyZW4gYnkgc29ydGluZyB0aGUgYXJyYXkuXG4gIGRpcnR5Q29tcG9uZW50cy5zb3J0KG1v
dW50T3JkZXJDb21wYXJhdG9yKTtcblxuICAvLyBBbnkgdXBkYXRlcyBlbnF1ZXVlZCB3aGlsZSBy
ZWNvbmNpbGluZyBtdXN0IGJlIHBlcmZvcm1lZCBhZnRlciB0aGlzIGVudGlyZVxuICAvLyBiYXRj
aC4gT3RoZXJ3aXNlLCBpZiBkaXJ0eUNvbXBvbmVudHMgaXMgW0EsIEJdIHdoZXJlIEEgaGFzIGNo
aWxkcmVuIEIgYW5kXG4gIC8vIEMsIEIgY291bGQgdXBkYXRlIHR3aWNlIGluIGEgc2luZ2xlIGJh
dGNoIGlmIEMncyByZW5kZXIgZW5xdWV1ZXMgYW4gdXBkYXRlXG4gIC8vIHRvIEIgKHNpbmNlIEIg
d291bGQgaGF2ZSBhbHJlYWR5IHVwZGF0ZWQsIHdlIHNob3VsZCBza2lwIGl0LCBhbmQgdGhlIG9u
bHlcbiAgLy8gd2F5IHdlIGNhbiBrbm93IHRvIGRvIHNvIGlzIGJ5IGNoZWNraW5nIHRoZSBiYXRj
aCBjb3VudGVyKS5cbiAgdXBkYXRlQmF0Y2hOdW1iZXIrKztcblxuICBmb3IgKHZhciBpID0gMDsg
aSA8IGxlbjsgaSsrKSB7XG4gICAgLy8gSWYgYSBjb21wb25lbnQgaXMgdW5tb3VudGVkIGJlZm9y
ZSBwZW5kaW5nIGNoYW5nZXMgYXBwbHksIGl0IHdpbGwgc3RpbGxcbiAgICAvLyBiZSBoZXJlLCBi
dXQgd2UgYXNzdW1lIHRoYXQgaXQgaGFzIGNsZWFyZWQgaXRzIF9wZW5kaW5nQ2FsbGJhY2tzIGFu
ZFxuICAgIC8vIHRoYXQgcGVyZm9ybVVwZGF0ZUlmTmVjZXNzYXJ5IGlzIGEgbm9vcC5cbiAgICB2
YXIgY29tcG9uZW50ID0gZGlydHlDb21wb25lbnRzW2ldO1xuXG4gICAgLy8gSWYgcGVyZm9ybVVw
ZGF0ZUlmTmVjZXNzYXJ5IGhhcHBlbnMgdG8gZW5xdWV1ZSBhbnkgbmV3IHVwZGF0ZXMsIHdlXG4g
ICAgLy8gc2hvdWxkbid0IGV4ZWN1dGUgdGhlIGNhbGxiYWNrcyB1bnRpbCB0aGUgbmV4dCByZW5k
ZXIgaGFwcGVucywgc29cbiAgICAvLyBzdGFzaCB0aGUgY2FsbGJhY2tzIGZpcnN0XG4gICAgdmFy
IGNhbGxiYWNrcyA9IGNvbXBvbmVudC5fcGVuZGluZ0NhbGxiYWNrcztcbiAgICBjb21wb25lbnQu
X3BlbmRpbmdDYWxsYmFja3MgPSBudWxsO1xuXG4gICAgdmFyIG1hcmtlck5hbWU7XG4gICAgaWYg
KFJlYWN0RmVhdHVyZUZsYWdzLmxvZ1RvcExldmVsUmVuZGVycykge1xuICAgICAgdmFyIG5hbWVk
Q29tcG9uZW50ID0gY29tcG9uZW50O1xuICAgICAgLy8gRHVjayB0eXBlIFRvcExldmVsV3JhcHBl
ci4gVGhpcyBpcyBwcm9iYWJseSBhbHdheXMgdHJ1ZS5cbiAgICAgIGlmIChjb21wb25lbnQuX2N1
cnJlbnRFbGVtZW50LnR5cGUuaXNSZWFjdFRvcExldmVsV3JhcHBlcikge1xuICAgICAgICBuYW1l
ZENvbXBvbmVudCA9IGNvbXBvbmVudC5fcmVuZGVyZWRDb21wb25lbnQ7XG4gICAgICB9XG4gICAg
ICBtYXJrZXJOYW1lID0gJ1JlYWN0IHVwZGF0ZTogJyArIG5hbWVkQ29tcG9uZW50LmdldE5hbWUo
KTtcbiAgICAgIGNvbnNvbGUudGltZShtYXJrZXJOYW1lKTtcbiAgICB9XG5cbiAgICBSZWFjdFJl
Y29uY2lsZXIucGVyZm9ybVVwZGF0ZUlmTmVjZXNzYXJ5KGNvbXBvbmVudCwgdHJhbnNhY3Rpb24u
cmVjb25jaWxlVHJhbnNhY3Rpb24sIHVwZGF0ZUJhdGNoTnVtYmVyKTtcblxuICAgIGlmIChtYXJr
ZXJOYW1lKSB7XG4gICAgICBjb25zb2xlLnRpbWVFbmQobWFya2VyTmFtZSk7XG4gICAgfVxuXG4g
ICAgaWYgKGNhbGxiYWNrcykge1xuICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBjYWxsYmFja3Mu
bGVuZ3RoOyBqKyspIHtcbiAgICAgICAgdHJhbnNhY3Rpb24uY2FsbGJhY2tRdWV1ZS5lbnF1ZXVl
KGNhbGxiYWNrc1tqXSwgY29tcG9uZW50LmdldFB1YmxpY0luc3RhbmNlKCkpO1xuICAgICAgfVxu
ICAgIH1cbiAgfVxufVxuXG52YXIgZmx1c2hCYXRjaGVkVXBkYXRlcyA9IGZ1bmN0aW9uICgpIHtc
biAgLy8gUmVhY3RVcGRhdGVzRmx1c2hUcmFuc2FjdGlvbidzIHdyYXBwZXJzIHdpbGwgY2xlYXIg
dGhlIGRpcnR5Q29tcG9uZW50c1xuICAvLyBhcnJheSBhbmQgcGVyZm9ybSBhbnkgdXBkYXRlcyBl
bnF1ZXVlZCBieSBtb3VudC1yZWFkeSBoYW5kbGVycyAoaS5lLixcbiAgLy8gY29tcG9uZW50RGlk
VXBkYXRlKSBidXQgd2UgbmVlZCB0byBjaGVjayBoZXJlIHRvbyBpbiBvcmRlciB0byBjYXRjaFxu
ICAvLyB1cGRhdGVzIGVucXVldWVkIGJ5IHNldFN0YXRlIGNhbGxiYWNrcyBhbmQgYXNhcCBjYWxs
cy5cbiAgd2hpbGUgKGRpcnR5Q29tcG9uZW50cy5sZW5ndGggfHwgYXNhcEVucXVldWVkKSB7XG4g
ICAgaWYgKGRpcnR5Q29tcG9uZW50cy5sZW5ndGgpIHtcbiAgICAgIHZhciB0cmFuc2FjdGlvbiA9
IFJlYWN0VXBkYXRlc0ZsdXNoVHJhbnNhY3Rpb24uZ2V0UG9vbGVkKCk7XG4gICAgICB0cmFuc2Fj
dGlvbi5wZXJmb3JtKHJ1bkJhdGNoZWRVcGRhdGVzLCBudWxsLCB0cmFuc2FjdGlvbik7XG4gICAg
ICBSZWFjdFVwZGF0ZXNGbHVzaFRyYW5zYWN0aW9uLnJlbGVhc2UodHJhbnNhY3Rpb24pO1xuICAg
IH1cblxuICAgIGlmIChhc2FwRW5xdWV1ZWQpIHtcbiAgICAgIGFzYXBFbnF1ZXVlZCA9IGZhbHNl
O1xuICAgICAgdmFyIHF1ZXVlID0gYXNhcENhbGxiYWNrUXVldWU7XG4gICAgICBhc2FwQ2FsbGJh
Y2tRdWV1ZSA9IENhbGxiYWNrUXVldWUuZ2V0UG9vbGVkKCk7XG4gICAgICBxdWV1ZS5ub3RpZnlB
bGwoKTtcbiAgICAgIENhbGxiYWNrUXVldWUucmVsZWFzZShxdWV1ZSk7XG4gICAgfVxuICB9XG59
O1xuXG4vKipcbiAqIE1hcmsgYSBjb21wb25lbnQgYXMgbmVlZGluZyBhIHJlcmVuZGVyLCBhZGRp
bmcgYW4gb3B0aW9uYWwgY2FsbGJhY2sgdG8gYVxuICogbGlzdCBvZiBmdW5jdGlvbnMgd2hpY2gg
d2lsbCBiZSBleGVjdXRlZCBvbmNlIHRoZSByZXJlbmRlciBvY2N1cnMuXG4gKi9cbmZ1bmN0aW9u
IGVucXVldWVVcGRhdGUoY29tcG9uZW50KSB7XG4gIGVuc3VyZUluamVjdGVkKCk7XG5cbiAgLy8g
VmFyaW91cyBwYXJ0cyBvZiBvdXIgY29kZSAoc3VjaCBhcyBSZWFjdENvbXBvc2l0ZUNvbXBvbmVu
dCdzXG4gIC8vIF9yZW5kZXJWYWxpZGF0ZWRDb21wb25lbnQpIGFzc3VtZSB0aGF0IGNhbGxzIHRv
IHJlbmRlciBhcmVuJ3QgbmVzdGVkO1xuICAvLyB2ZXJpZnkgdGhhdCB0aGF0J3MgdGhlIGNhc2Uu
IChUaGlzIGlzIGNhbGxlZCBieSBlYWNoIHRvcC1sZXZlbCB1cGRhdGVcbiAgLy8gZnVuY3Rpb24s
IGxpa2Ugc2V0U3RhdGUsIGZvcmNlVXBkYXRlLCBldGMuOyBjcmVhdGlvbiBhbmRcbiAgLy8gZGVz
dHJ1Y3Rpb24gb2YgdG9wLWxldmVsIGNvbXBvbmVudHMgaXMgZ3VhcmRlZCBpbiBSZWFjdE1vdW50
LilcblxuICBpZiAoIWJhdGNoaW5nU3RyYXRlZ3kuaXNCYXRjaGluZ1VwZGF0ZXMpIHtcbiAgICBi
YXRjaGluZ1N0cmF0ZWd5LmJhdGNoZWRVcGRhdGVzKGVucXVldWVVcGRhdGUsIGNvbXBvbmVudCk7
XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgZGlydHlDb21wb25lbnRzLnB1c2goY29tcG9uZW50KTtc
biAgaWYgKGNvbXBvbmVudC5fdXBkYXRlQmF0Y2hOdW1iZXIgPT0gbnVsbCkge1xuICAgIGNvbXBv
bmVudC5fdXBkYXRlQmF0Y2hOdW1iZXIgPSB1cGRhdGVCYXRjaE51bWJlciArIDE7XG4gIH1cbn1c
blxuLyoqXG4gKiBFbnF1ZXVlIGEgY2FsbGJhY2sgdG8gYmUgcnVuIGF0IHRoZSBlbmQgb2YgdGhl
IGN1cnJlbnQgYmF0Y2hpbmcgY3ljbGUuIFRocm93c1xuICogaWYgbm8gdXBkYXRlcyBhcmUgY3Vy
cmVudGx5IGJlaW5nIHBlcmZvcm1lZC5cbiAqL1xuZnVuY3Rpb24gYXNhcChjYWxsYmFjaywgY29u
dGV4dCkge1xuICAhYmF0Y2hpbmdTdHJhdGVneS5pc0JhdGNoaW5nVXBkYXRlcyA/IHByb2Nlc3Mu
ZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdSZWFjdFVw
ZGF0ZXMuYXNhcDogQ2FuXFwndCBlbnF1ZXVlIGFuIGFzYXAgY2FsbGJhY2sgaW4gYSBjb250ZXh0
IHdoZXJldXBkYXRlcyBhcmUgbm90IGJlaW5nIGJhdGNoZWQuJykgOiBfcHJvZEludmFyaWFudCgn
MTI1JykgOiB2b2lkIDA7XG4gIGFzYXBDYWxsYmFja1F1ZXVlLmVucXVldWUoY2FsbGJhY2ssIGNv
bnRleHQpO1xuICBhc2FwRW5xdWV1ZWQgPSB0cnVlO1xufVxuXG52YXIgUmVhY3RVcGRhdGVzSW5q
ZWN0aW9uID0ge1xuICBpbmplY3RSZWNvbmNpbGVUcmFuc2FjdGlvbjogZnVuY3Rpb24gKFJlY29u
Y2lsZVRyYW5zYWN0aW9uKSB7XG4gICAgIVJlY29uY2lsZVRyYW5zYWN0aW9uID8gcHJvY2Vzcy5l
bnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ1JlYWN0VXBk
YXRlczogbXVzdCBwcm92aWRlIGEgcmVjb25jaWxlIHRyYW5zYWN0aW9uIGNsYXNzJykgOiBfcHJv
ZEludmFyaWFudCgnMTI2JykgOiB2b2lkIDA7XG4gICAgUmVhY3RVcGRhdGVzLlJlYWN0UmVjb25j
aWxlVHJhbnNhY3Rpb24gPSBSZWNvbmNpbGVUcmFuc2FjdGlvbjtcbiAgfSxcblxuICBpbmplY3RC
YXRjaGluZ1N0cmF0ZWd5OiBmdW5jdGlvbiAoX2JhdGNoaW5nU3RyYXRlZ3kpIHtcbiAgICAhX2Jh
dGNoaW5nU3RyYXRlZ3kgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8g
aW52YXJpYW50KGZhbHNlLCAnUmVhY3RVcGRhdGVzOiBtdXN0IHByb3ZpZGUgYSBiYXRjaGluZyBz
dHJhdGVneScpIDogX3Byb2RJbnZhcmlhbnQoJzEyNycpIDogdm9pZCAwO1xuICAgICEodHlwZW9m
IF9iYXRjaGluZ1N0cmF0ZWd5LmJhdGNoZWRVcGRhdGVzID09PSAnZnVuY3Rpb24nKSA/IHByb2Nl
c3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdSZWFj
dFVwZGF0ZXM6IG11c3QgcHJvdmlkZSBhIGJhdGNoZWRVcGRhdGVzKCkgZnVuY3Rpb24nKSA6IF9w
cm9kSW52YXJpYW50KCcxMjgnKSA6IHZvaWQgMDtcbiAgICAhKHR5cGVvZiBfYmF0Y2hpbmdTdHJh
dGVneS5pc0JhdGNoaW5nVXBkYXRlcyA9PT0gJ2Jvb2xlYW4nKSA/IHByb2Nlc3MuZW52Lk5PREVf
RU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdSZWFjdFVwZGF0ZXM6IG11
c3QgcHJvdmlkZSBhbiBpc0JhdGNoaW5nVXBkYXRlcyBib29sZWFuIGF0dHJpYnV0ZScpIDogX3By
b2RJbnZhcmlhbnQoJzEyOScpIDogdm9pZCAwO1xuICAgIGJhdGNoaW5nU3RyYXRlZ3kgPSBfYmF0
Y2hpbmdTdHJhdGVneTtcbiAgfVxufTtcblxudmFyIFJlYWN0VXBkYXRlcyA9IHtcbiAgLyoqXG4g
ICAqIFJlYWN0IHJlZmVyZW5jZXMgYFJlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb25gIHVzaW5nIHRo
aXMgcHJvcGVydHkgaW4gb3JkZXJcbiAgICogdG8gYWxsb3cgZGVwZW5kZW5jeSBpbmplY3Rpb24u
XG4gICAqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgUmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlv
bjogbnVsbCxcblxuICBiYXRjaGVkVXBkYXRlczogYmF0Y2hlZFVwZGF0ZXMsXG4gIGVucXVldWVV
cGRhdGU6IGVucXVldWVVcGRhdGUsXG4gIGZsdXNoQmF0Y2hlZFVwZGF0ZXM6IGZsdXNoQmF0Y2hl
ZFVwZGF0ZXMsXG4gIGluamVjdGlvbjogUmVhY3RVcGRhdGVzSW5qZWN0aW9uLFxuICBhc2FwOiBh
c2FwXG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0VXBkYXRlcztcblxuXG4vKioqKioqKioq
KioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFjdC1kb20vbGliL1JlYWN0
VXBkYXRlcy5qc1xuICoqIG1vZHVsZSBpZCA9IDlcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoq
LyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFs
bCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1
bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUg
aW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwg
Z3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZp
bGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZh
ciBfYXNzaWduID0gcmVxdWlyZSgnb2JqZWN0LWFzc2lnbicpO1xuXG52YXIgUG9vbGVkQ2xhc3Mg
PSByZXF1aXJlKCcuL1Bvb2xlZENsYXNzJyk7XG5cbnZhciBlbXB0eUZ1bmN0aW9uID0gcmVxdWly
ZSgnZmJqcy9saWIvZW1wdHlGdW5jdGlvbicpO1xudmFyIHdhcm5pbmcgPSByZXF1aXJlKCdmYmpz
L2xpYi93YXJuaW5nJyk7XG5cbnZhciBkaWRXYXJuRm9yQWRkZWROZXdQcm9wZXJ0eSA9IGZhbHNl
O1xudmFyIGlzUHJveHlTdXBwb3J0ZWQgPSB0eXBlb2YgUHJveHkgPT09ICdmdW5jdGlvbic7XG5c
bnZhciBzaG91bGRCZVJlbGVhc2VkUHJvcGVydGllcyA9IFsnZGlzcGF0Y2hDb25maWcnLCAnX3Rh
cmdldEluc3QnLCAnbmF0aXZlRXZlbnQnLCAnaXNEZWZhdWx0UHJldmVudGVkJywgJ2lzUHJvcGFn
YXRpb25TdG9wcGVkJywgJ19kaXNwYXRjaExpc3RlbmVycycsICdfZGlzcGF0Y2hJbnN0YW5jZXMn
XTtcblxuLyoqXG4gKiBAaW50ZXJmYWNlIEV2ZW50XG4gKiBAc2VlIGh0dHA6Ly93d3cudzMub3Jn
L1RSL0RPTS1MZXZlbC0zLUV2ZW50cy9cbiAqL1xudmFyIEV2ZW50SW50ZXJmYWNlID0ge1xuICB0
eXBlOiBudWxsLFxuICB0YXJnZXQ6IG51bGwsXG4gIC8vIGN1cnJlbnRUYXJnZXQgaXMgc2V0IHdo
ZW4gZGlzcGF0Y2hpbmc7IG5vIHVzZSBpbiBjb3B5aW5nIGl0IGhlcmVcbiAgY3VycmVudFRhcmdl
dDogZW1wdHlGdW5jdGlvbi50aGF0UmV0dXJuc051bGwsXG4gIGV2ZW50UGhhc2U6IG51bGwsXG4g
IGJ1YmJsZXM6IG51bGwsXG4gIGNhbmNlbGFibGU6IG51bGwsXG4gIHRpbWVTdGFtcDogZnVuY3Rp
b24gKGV2ZW50KSB7XG4gICAgcmV0dXJuIGV2ZW50LnRpbWVTdGFtcCB8fCBEYXRlLm5vdygpO1xu
ICB9LFxuICBkZWZhdWx0UHJldmVudGVkOiBudWxsLFxuICBpc1RydXN0ZWQ6IG51bGxcbn07XG5c
bi8qKlxuICogU3ludGhldGljIGV2ZW50cyBhcmUgZGlzcGF0Y2hlZCBieSBldmVudCBwbHVnaW5z
LCB0eXBpY2FsbHkgaW4gcmVzcG9uc2UgdG8gYVxuICogdG9wLWxldmVsIGV2ZW50IGRlbGVnYXRp
b24gaGFuZGxlci5cbiAqXG4gKiBUaGVzZSBzeXN0ZW1zIHNob3VsZCBnZW5lcmFsbHkgdXNlIHBv
b2xpbmcgdG8gcmVkdWNlIHRoZSBmcmVxdWVuY3kgb2YgZ2FyYmFnZVxuICogY29sbGVjdGlvbi4g
VGhlIHN5c3RlbSBzaG91bGQgY2hlY2sgYGlzUGVyc2lzdGVudGAgdG8gZGV0ZXJtaW5lIHdoZXRo
ZXIgdGhlXG4gKiBldmVudCBzaG91bGQgYmUgcmVsZWFzZWQgaW50byB0aGUgcG9vbCBhZnRlciBi
ZWluZyBkaXNwYXRjaGVkLiBVc2VycyB0aGF0XG4gKiBuZWVkIGEgcGVyc2lzdGVkIGV2ZW50IHNo
b3VsZCBpbnZva2UgYHBlcnNpc3RgLlxuICpcbiAqIFN5bnRoZXRpYyBldmVudHMgKGFuZCBzdWJj
bGFzc2VzKSBpbXBsZW1lbnQgdGhlIERPTSBMZXZlbCAzIEV2ZW50cyBBUEkgYnlcbiAqIG5vcm1h
bGl6aW5nIGJyb3dzZXIgcXVpcmtzLiBTdWJjbGFzc2VzIGRvIG5vdCBuZWNlc3NhcmlseSBoYXZl
IHRvIGltcGxlbWVudCBhXG4gKiBET00gaW50ZXJmYWNlOyBjdXN0b20gYXBwbGljYXRpb24tc3Bl
Y2lmaWMgZXZlbnRzIGNhbiBhbHNvIHN1YmNsYXNzIHRoaXMuXG4gKlxuICogQHBhcmFtIHtvYmpl
Y3R9IGRpc3BhdGNoQ29uZmlnIENvbmZpZ3VyYXRpb24gdXNlZCB0byBkaXNwYXRjaCB0aGlzIGV2
ZW50LlxuICogQHBhcmFtIHsqfSB0YXJnZXRJbnN0IE1hcmtlciBpZGVudGlmeWluZyB0aGUgZXZl
bnQgdGFyZ2V0LlxuICogQHBhcmFtIHtvYmplY3R9IG5hdGl2ZUV2ZW50IE5hdGl2ZSBicm93c2Vy
IGV2ZW50LlxuICogQHBhcmFtIHtET01FdmVudFRhcmdldH0gbmF0aXZlRXZlbnRUYXJnZXQgVGFy
Z2V0IG5vZGUuXG4gKi9cbmZ1bmN0aW9uIFN5bnRoZXRpY0V2ZW50KGRpc3BhdGNoQ29uZmlnLCB0
YXJnZXRJbnN0LCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpIHtcbiAgaWYgKHByb2Nl
c3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAvLyB0aGVzZSBoYXZlIGEg
Z2V0dGVyL3NldHRlciBmb3Igd2FybmluZ3NcbiAgICBkZWxldGUgdGhpcy5uYXRpdmVFdmVudDtc
biAgICBkZWxldGUgdGhpcy5wcmV2ZW50RGVmYXVsdDtcbiAgICBkZWxldGUgdGhpcy5zdG9wUHJv
cGFnYXRpb247XG4gIH1cblxuICB0aGlzLmRpc3BhdGNoQ29uZmlnID0gZGlzcGF0Y2hDb25maWc7
XG4gIHRoaXMuX3RhcmdldEluc3QgPSB0YXJnZXRJbnN0O1xuICB0aGlzLm5hdGl2ZUV2ZW50ID0g
bmF0aXZlRXZlbnQ7XG5cbiAgdmFyIEludGVyZmFjZSA9IHRoaXMuY29uc3RydWN0b3IuSW50ZXJm
YWNlO1xuICBmb3IgKHZhciBwcm9wTmFtZSBpbiBJbnRlcmZhY2UpIHtcbiAgICBpZiAoIUludGVy
ZmFjZS5oYXNPd25Qcm9wZXJ0eShwcm9wTmFtZSkpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1c
biAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAg
ZGVsZXRlIHRoaXNbcHJvcE5hbWVdOyAvLyB0aGlzIGhhcyBhIGdldHRlci9zZXR0ZXIgZm9yIHdh
cm5pbmdzXG4gICAgfVxuICAgIHZhciBub3JtYWxpemUgPSBJbnRlcmZhY2VbcHJvcE5hbWVdO1xu
ICAgIGlmIChub3JtYWxpemUpIHtcbiAgICAgIHRoaXNbcHJvcE5hbWVdID0gbm9ybWFsaXplKG5h
dGl2ZUV2ZW50KTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHByb3BOYW1lID09PSAndGFyZ2V0
Jykge1xuICAgICAgICB0aGlzLnRhcmdldCA9IG5hdGl2ZUV2ZW50VGFyZ2V0O1xuICAgICAgfSBl
bHNlIHtcbiAgICAgICAgdGhpc1twcm9wTmFtZV0gPSBuYXRpdmVFdmVudFtwcm9wTmFtZV07XG4g
ICAgICB9XG4gICAgfVxuICB9XG5cbiAgdmFyIGRlZmF1bHRQcmV2ZW50ZWQgPSBuYXRpdmVFdmVu
dC5kZWZhdWx0UHJldmVudGVkICE9IG51bGwgPyBuYXRpdmVFdmVudC5kZWZhdWx0UHJldmVudGVk
IDogbmF0aXZlRXZlbnQucmV0dXJuVmFsdWUgPT09IGZhbHNlO1xuICBpZiAoZGVmYXVsdFByZXZl
bnRlZCkge1xuICAgIHRoaXMuaXNEZWZhdWx0UHJldmVudGVkID0gZW1wdHlGdW5jdGlvbi50aGF0
UmV0dXJuc1RydWU7XG4gIH0gZWxzZSB7XG4gICAgdGhpcy5pc0RlZmF1bHRQcmV2ZW50ZWQgPSBl
bXB0eUZ1bmN0aW9uLnRoYXRSZXR1cm5zRmFsc2U7XG4gIH1cbiAgdGhpcy5pc1Byb3BhZ2F0aW9u
U3RvcHBlZCA9IGVtcHR5RnVuY3Rpb24udGhhdFJldHVybnNGYWxzZTtcbiAgcmV0dXJuIHRoaXM7
XG59XG5cbl9hc3NpZ24oU3ludGhldGljRXZlbnQucHJvdG90eXBlLCB7XG4gIHByZXZlbnREZWZh
dWx0OiBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5kZWZhdWx0UHJldmVudGVkID0gdHJ1ZTtcbiAg
ICB2YXIgZXZlbnQgPSB0aGlzLm5hdGl2ZUV2ZW50O1xuICAgIGlmICghZXZlbnQpIHtcbiAgICAg
IHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoZXZlbnQucHJldmVudERlZmF1bHQpIHtcbiAgICAg
IGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxp
bmUgdmFsaWQtdHlwZW9mXG4gICAgfSBlbHNlIGlmICh0eXBlb2YgZXZlbnQucmV0dXJuVmFsdWUg
IT09ICd1bmtub3duJykge1xuICAgICAgZXZlbnQucmV0dXJuVmFsdWUgPSBmYWxzZTtcbiAgICB9
XG4gICAgdGhpcy5pc0RlZmF1bHRQcmV2ZW50ZWQgPSBlbXB0eUZ1bmN0aW9uLnRoYXRSZXR1cm5z
VHJ1ZTtcbiAgfSxcblxuICBzdG9wUHJvcGFnYXRpb246IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIg
ZXZlbnQgPSB0aGlzLm5hdGl2ZUV2ZW50O1xuICAgIGlmICghZXZlbnQpIHtcbiAgICAgIHJldHVy
bjtcbiAgICB9XG5cbiAgICBpZiAoZXZlbnQuc3RvcFByb3BhZ2F0aW9uKSB7XG4gICAgICBldmVu
dC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSB2
YWxpZC10eXBlb2ZcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBldmVudC5jYW5jZWxCdWJibGUgIT09
ICd1bmtub3duJykge1xuICAgICAgLy8gVGhlIENoYW5nZUV2ZW50UGx1Z2luIHJlZ2lzdGVycyBh
IFwicHJvcGVydHljaGFuZ2VcIiBldmVudCBmb3JcbiAgICAgIC8vIElFLiBUaGlzIGV2ZW50IGRv
ZXMgbm90IHN1cHBvcnQgYnViYmxpbmcgb3IgY2FuY2VsbGluZywgYW5kXG4gICAgICAvLyBhbnkg
cmVmZXJlbmNlcyB0byBjYW5jZWxCdWJibGUgdGhyb3cgXCJNZW1iZXIgbm90IGZvdW5kXCIuICBB
XG4gICAgICAvLyB0eXBlb2YgY2hlY2sgb2YgXCJ1bmtub3duXCIgY2lyY3VtdmVudHMgdGhpcyBp
c3N1ZSAoYW5kIGlzIGFsc29cbiAgICAgIC8vIElFIHNwZWNpZmljKS5cbiAgICAgIGV2ZW50LmNh
bmNlbEJ1YmJsZSA9IHRydWU7XG4gICAgfVxuXG4gICAgdGhpcy5pc1Byb3BhZ2F0aW9uU3RvcHBl
ZCA9IGVtcHR5RnVuY3Rpb24udGhhdFJldHVybnNUcnVlO1xuICB9LFxuXG4gIC8qKlxuICAgKiBX
ZSByZWxlYXNlIGFsbCBkaXNwYXRjaGVkIGBTeW50aGV0aWNFdmVudGBzIGFmdGVyIGVhY2ggZXZl
bnQgbG9vcCwgYWRkaW5nXG4gICAqIHRoZW0gYmFjayBpbnRvIHRoZSBwb29sLiBUaGlzIGFsbG93
cyBhIHdheSB0byBob2xkIG9udG8gYSByZWZlcmVuY2UgdGhhdFxuICAgKiB3b24ndCBiZSBhZGRl
ZCBiYWNrIGludG8gdGhlIHBvb2wuXG4gICAqL1xuICBwZXJzaXN0OiBmdW5jdGlvbiAoKSB7XG4g
ICAgdGhpcy5pc1BlcnNpc3RlbnQgPSBlbXB0eUZ1bmN0aW9uLnRoYXRSZXR1cm5zVHJ1ZTtcbiAg
fSxcblxuICAvKipcbiAgICogQ2hlY2tzIGlmIHRoaXMgZXZlbnQgc2hvdWxkIGJlIHJlbGVhc2Vk
IGJhY2sgaW50byB0aGUgcG9vbC5cbiAgICpcbiAgICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBp
ZiB0aGlzIHNob3VsZCBub3QgYmUgcmVsZWFzZWQsIGZhbHNlIG90aGVyd2lzZS5cbiAgICovXG4g
IGlzUGVyc2lzdGVudDogZW1wdHlGdW5jdGlvbi50aGF0UmV0dXJuc0ZhbHNlLFxuXG4gIC8qKlxu
ICAgKiBgUG9vbGVkQ2xhc3NgIGxvb2tzIGZvciBgZGVzdHJ1Y3RvcmAgb24gZWFjaCBpbnN0YW5j
ZSBpdCByZWxlYXNlcy5cbiAgICovXG4gIGRlc3RydWN0b3I6IGZ1bmN0aW9uICgpIHtcbiAgICB2
YXIgSW50ZXJmYWNlID0gdGhpcy5jb25zdHJ1Y3Rvci5JbnRlcmZhY2U7XG4gICAgZm9yICh2YXIg
cHJvcE5hbWUgaW4gSW50ZXJmYWNlKSB7XG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYg
IT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywg
cHJvcE5hbWUsIGdldFBvb2xlZFdhcm5pbmdQcm9wZXJ0eURlZmluaXRpb24ocHJvcE5hbWUsIElu
dGVyZmFjZVtwcm9wTmFtZV0pKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXNbcHJvcE5h
bWVdID0gbnVsbDtcbiAgICAgIH1cbiAgICB9XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzaG91
bGRCZVJlbGVhc2VkUHJvcGVydGllcy5sZW5ndGg7IGkrKykge1xuICAgICAgdGhpc1tzaG91bGRC
ZVJlbGVhc2VkUHJvcGVydGllc1tpXV0gPSBudWxsO1xuICAgIH1cbiAgICBpZiAocHJvY2Vzcy5l
bnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgT2JqZWN0LmRlZmluZVByb3Bl
cnR5KHRoaXMsICduYXRpdmVFdmVudCcsIGdldFBvb2xlZFdhcm5pbmdQcm9wZXJ0eURlZmluaXRp
b24oJ25hdGl2ZUV2ZW50JywgbnVsbCkpO1xuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRo
aXMsICdwcmV2ZW50RGVmYXVsdCcsIGdldFBvb2xlZFdhcm5pbmdQcm9wZXJ0eURlZmluaXRpb24o
J3ByZXZlbnREZWZhdWx0JywgZW1wdHlGdW5jdGlvbikpO1xuICAgICAgT2JqZWN0LmRlZmluZVBy
b3BlcnR5KHRoaXMsICdzdG9wUHJvcGFnYXRpb24nLCBnZXRQb29sZWRXYXJuaW5nUHJvcGVydHlE
ZWZpbml0aW9uKCdzdG9wUHJvcGFnYXRpb24nLCBlbXB0eUZ1bmN0aW9uKSk7XG4gICAgfVxuICB9
XG59KTtcblxuU3ludGhldGljRXZlbnQuSW50ZXJmYWNlID0gRXZlbnRJbnRlcmZhY2U7XG5cbmlm
IChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIGlmIChpc1Byb3h5
U3VwcG9ydGVkKSB7XG4gICAgLyplc2xpbnQtZGlzYWJsZSBuby1mdW5jLWFzc2lnbiAqL1xuICAg
IFN5bnRoZXRpY0V2ZW50ID0gbmV3IFByb3h5KFN5bnRoZXRpY0V2ZW50LCB7XG4gICAgICBjb25z
dHJ1Y3Q6IGZ1bmN0aW9uICh0YXJnZXQsIGFyZ3MpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBw
bHkodGFyZ2V0LCBPYmplY3QuY3JlYXRlKHRhcmdldC5wcm90b3R5cGUpLCBhcmdzKTtcbiAgICAg
IH0sXG4gICAgICBhcHBseTogZnVuY3Rpb24gKGNvbnN0cnVjdG9yLCB0aGF0LCBhcmdzKSB7XG4g
ICAgICAgIHJldHVybiBuZXcgUHJveHkoY29uc3RydWN0b3IuYXBwbHkodGhhdCwgYXJncyksIHtc
biAgICAgICAgICBzZXQ6IGZ1bmN0aW9uICh0YXJnZXQsIHByb3AsIHZhbHVlKSB7XG4gICAgICAg
ICAgICBpZiAocHJvcCAhPT0gJ2lzUGVyc2lzdGVudCcgJiYgIXRhcmdldC5jb25zdHJ1Y3Rvci5J
bnRlcmZhY2UuaGFzT3duUHJvcGVydHkocHJvcCkgJiYgc2hvdWxkQmVSZWxlYXNlZFByb3BlcnRp
ZXMuaW5kZXhPZihwcm9wKSA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgcHJvY2Vzcy5lbnYuTk9E
RV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZGlkV2FybkZvckFkZGVkTmV3UHJvcGVy
dHkgfHwgdGFyZ2V0LmlzUGVyc2lzdGVudCgpLCBcIlRoaXMgc3ludGhldGljIGV2ZW50IGlzIHJl
dXNlZCBmb3IgcGVyZm9ybWFuY2UgcmVhc29ucy4gSWYgeW91J3JlIFwiICsgXCJzZWVpbmcgdGhp
cywgeW91J3JlIGFkZGluZyBhIG5ldyBwcm9wZXJ0eSBpbiB0aGUgc3ludGhldGljIGV2ZW50IG9i
amVjdC4gXCIgKyAnVGhlIHByb3BlcnR5IGlzIG5ldmVyIHJlbGVhc2VkLiBTZWUgJyArICdodHRw
czovL2ZiLm1lL3JlYWN0LWV2ZW50LXBvb2xpbmcgZm9yIG1vcmUgaW5mb3JtYXRpb24uJykgOiB2
b2lkIDA7XG4gICAgICAgICAgICAgIGRpZFdhcm5Gb3JBZGRlZE5ld1Byb3BlcnR5ID0gdHJ1ZTtc
biAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRhcmdldFtwcm9wXSA9IHZhbHVlO1xuICAgICAg
ICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAg
ICB9KTtcbiAgICAvKmVzbGludC1lbmFibGUgbm8tZnVuYy1hc3NpZ24gKi9cbiAgfVxufVxuLyoq
XG4gKiBIZWxwZXIgdG8gcmVkdWNlIGJvaWxlcnBsYXRlIHdoZW4gY3JlYXRpbmcgc3ViY2xhc3Nl
cy5cbiAqXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBDbGFzc1xuICogQHBhcmFtIHs/b2JqZWN0fSBJ
bnRlcmZhY2VcbiAqL1xuU3ludGhldGljRXZlbnQuYXVnbWVudENsYXNzID0gZnVuY3Rpb24gKENs
YXNzLCBJbnRlcmZhY2UpIHtcbiAgdmFyIFN1cGVyID0gdGhpcztcblxuICB2YXIgRSA9IGZ1bmN0
aW9uICgpIHt9O1xuICBFLnByb3RvdHlwZSA9IFN1cGVyLnByb3RvdHlwZTtcbiAgdmFyIHByb3Rv
dHlwZSA9IG5ldyBFKCk7XG5cbiAgX2Fzc2lnbihwcm90b3R5cGUsIENsYXNzLnByb3RvdHlwZSk7
XG4gIENsYXNzLnByb3RvdHlwZSA9IHByb3RvdHlwZTtcbiAgQ2xhc3MucHJvdG90eXBlLmNvbnN0
cnVjdG9yID0gQ2xhc3M7XG5cbiAgQ2xhc3MuSW50ZXJmYWNlID0gX2Fzc2lnbih7fSwgU3VwZXIu
SW50ZXJmYWNlLCBJbnRlcmZhY2UpO1xuICBDbGFzcy5hdWdtZW50Q2xhc3MgPSBTdXBlci5hdWdt
ZW50Q2xhc3M7XG5cbiAgUG9vbGVkQ2xhc3MuYWRkUG9vbGluZ1RvKENsYXNzLCBQb29sZWRDbGFz
cy5mb3VyQXJndW1lbnRQb29sZXIpO1xufTtcblxuUG9vbGVkQ2xhc3MuYWRkUG9vbGluZ1RvKFN5
bnRoZXRpY0V2ZW50LCBQb29sZWRDbGFzcy5mb3VyQXJndW1lbnRQb29sZXIpO1xuXG5tb2R1bGUu
ZXhwb3J0cyA9IFN5bnRoZXRpY0V2ZW50O1xuXG4vKipcbiAgKiBIZWxwZXIgdG8gbnVsbGlmeSBz
eW50aGV0aWNFdmVudCBpbnN0YW5jZSBwcm9wZXJ0aWVzIHdoZW4gZGVzdHJ1Y3RpbmdcbiAgKlxu
ICAqIEBwYXJhbSB7b2JqZWN0fSBTeW50aGV0aWNFdmVudFxuICAqIEBwYXJhbSB7U3RyaW5nfSBw
cm9wTmFtZVxuICAqIEByZXR1cm4ge29iamVjdH0gZGVmaW5lUHJvcGVydHkgb2JqZWN0XG4gICov
XG5mdW5jdGlvbiBnZXRQb29sZWRXYXJuaW5nUHJvcGVydHlEZWZpbml0aW9uKHByb3BOYW1lLCBn
ZXRWYWwpIHtcbiAgdmFyIGlzRnVuY3Rpb24gPSB0eXBlb2YgZ2V0VmFsID09PSAnZnVuY3Rpb24n
O1xuICByZXR1cm4ge1xuICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICBzZXQ6IHNldCxcbiAg
ICBnZXQ6IGdldFxuICB9O1xuXG4gIGZ1bmN0aW9uIHNldCh2YWwpIHtcbiAgICB2YXIgYWN0aW9u
ID0gaXNGdW5jdGlvbiA/ICdzZXR0aW5nIHRoZSBtZXRob2QnIDogJ3NldHRpbmcgdGhlIHByb3Bl
cnR5JztcbiAgICB3YXJuKGFjdGlvbiwgJ1RoaXMgaXMgZWZmZWN0aXZlbHkgYSBuby1vcCcpO1xu
ICAgIHJldHVybiB2YWw7XG4gIH1cblxuICBmdW5jdGlvbiBnZXQoKSB7XG4gICAgdmFyIGFjdGlv
biA9IGlzRnVuY3Rpb24gPyAnYWNjZXNzaW5nIHRoZSBtZXRob2QnIDogJ2FjY2Vzc2luZyB0aGUg
cHJvcGVydHknO1xuICAgIHZhciByZXN1bHQgPSBpc0Z1bmN0aW9uID8gJ1RoaXMgaXMgYSBuby1v
cCBmdW5jdGlvbicgOiAnVGhpcyBpcyBzZXQgdG8gbnVsbCc7XG4gICAgd2FybihhY3Rpb24sIHJl
c3VsdCk7XG4gICAgcmV0dXJuIGdldFZhbDtcbiAgfVxuXG4gIGZ1bmN0aW9uIHdhcm4oYWN0aW9u
LCByZXN1bHQpIHtcbiAgICB2YXIgd2FybmluZ0NvbmRpdGlvbiA9IGZhbHNlO1xuICAgIHByb2Nl
c3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKHdhcm5pbmdDb25kaXRp
b24sIFwiVGhpcyBzeW50aGV0aWMgZXZlbnQgaXMgcmV1c2VkIGZvciBwZXJmb3JtYW5jZSByZWFz
b25zLiBJZiB5b3UncmUgc2VlaW5nIHRoaXMsIFwiICsgXCJ5b3UncmUgJXMgYCVzYCBvbiBhIHJl
bGVhc2VkL251bGxpZmllZCBzeW50aGV0aWMgZXZlbnQuICVzLiBcIiArICdJZiB5b3UgbXVzdCBr
ZWVwIHRoZSBvcmlnaW5hbCBzeW50aGV0aWMgZXZlbnQgYXJvdW5kLCB1c2UgZXZlbnQucGVyc2lz
dCgpLiAnICsgJ1NlZSBodHRwczovL2ZiLm1lL3JlYWN0LWV2ZW50LXBvb2xpbmcgZm9yIG1vcmUg
aW5mb3JtYXRpb24uJywgYWN0aW9uLCBwcm9wTmFtZSwgcmVzdWx0KSA6IHZvaWQgMDtcbiAgfVxu
fVxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3Jl
YWN0LWRvbS9saWIvU3ludGhldGljRXZlbnQuanNcbiAqKiBtb2R1bGUgaWQgPSAxMFxuICoqIG1v
ZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBG
YWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJj
ZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0
aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2Ug
dHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91
bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogXG4g
Ki9cblxuJ3VzZSBzdHJpY3QnO1xuXG4vKipcbiAqIEtlZXBzIHRyYWNrIG9mIHRoZSBjdXJyZW50
IG93bmVyLlxuICpcbiAqIFRoZSBjdXJyZW50IG93bmVyIGlzIHRoZSBjb21wb25lbnQgd2hvIHNo
b3VsZCBvd24gYW55IGNvbXBvbmVudHMgdGhhdCBhcmVcbiAqIGN1cnJlbnRseSBiZWluZyBjb25z
dHJ1Y3RlZC5cbiAqL1xudmFyIFJlYWN0Q3VycmVudE93bmVyID0ge1xuICAvKipcbiAgICogQGlu
dGVybmFsXG4gICAqIEB0eXBlIHtSZWFjdENvbXBvbmVudH1cbiAgICovXG4gIGN1cnJlbnQ6IG51
bGxcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RDdXJyZW50T3duZXI7XG5cblxuLyoqKioq
KioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3QvbGliL1JlYWN0
Q3VycmVudE93bmVyLmpzXG4gKiogbW9kdWxlIGlkID0gMTFcbiAqKiBtb2R1bGUgY2h1bmtzID0g
MFxuICoqLyIsIid1c2Ugc3RyaWN0JztcblxubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2xp
Yi9SZWFjdCcpO1xuXG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJc
biAqKiAuL34vcmVhY3QvcmVhY3QuanNcbiAqKiBtb2R1bGUgaWQgPSAxMlxuICoqIG1vZHVsZSBj
aHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNS1wcmVzZW50LCBGYWNlYm9v
aywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2Rl
IGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAq
IExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4g
QW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4g
dGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICovXG5cbid1c2Ug
c3RyaWN0JztcblxudmFyIERPTU5hbWVzcGFjZXMgPSByZXF1aXJlKCcuL0RPTU5hbWVzcGFjZXMn
KTtcbnZhciBzZXRJbm5lckhUTUwgPSByZXF1aXJlKCcuL3NldElubmVySFRNTCcpO1xuXG52YXIg
Y3JlYXRlTWljcm9zb2Z0VW5zYWZlTG9jYWxGdW5jdGlvbiA9IHJlcXVpcmUoJy4vY3JlYXRlTWlj
cm9zb2Z0VW5zYWZlTG9jYWxGdW5jdGlvbicpO1xudmFyIHNldFRleHRDb250ZW50ID0gcmVxdWly
ZSgnLi9zZXRUZXh0Q29udGVudCcpO1xuXG52YXIgRUxFTUVOVF9OT0RFX1RZUEUgPSAxO1xudmFy
IERPQ1VNRU5UX0ZSQUdNRU5UX05PREVfVFlQRSA9IDExO1xuXG4vKipcbiAqIEluIElFICg4LTEx
KSBhbmQgRWRnZSwgYXBwZW5kaW5nIG5vZGVzIHdpdGggbm8gY2hpbGRyZW4gaXMgZHJhbWF0aWNh
bGx5XG4gKiBmYXN0ZXIgdGhhbiBhcHBlbmRpbmcgYSBmdWxsIHN1YnRyZWUsIHNvIHdlIGVzc2Vu
dGlhbGx5IHF1ZXVlIHVwIHRoZVxuICogLmFwcGVuZENoaWxkIGNhbGxzIGhlcmUgYW5kIGFwcGx5
IHRoZW0gc28gZWFjaCBub2RlIGlzIGFkZGVkIHRvIGl0cyBwYXJlbnRcbiAqIGJlZm9yZSBhbnkg
Y2hpbGRyZW4gYXJlIGFkZGVkLlxuICpcbiAqIEluIG90aGVyIGJyb3dzZXJzLCBkb2luZyBzbyBp
cyBzbG93ZXIgb3IgbmV1dHJhbCBjb21wYXJlZCB0byB0aGUgb3RoZXIgb3JkZXJcbiAqIChpbiBG
aXJlZm94LCB0d2ljZSBhcyBzbG93KSBzbyB3ZSBvbmx5IGRvIHRoaXMgaW52ZXJzaW9uIGluIElF
LlxuICpcbiAqIFNlZSBodHRwczovL2dpdGh1Yi5jb20vc3BpY3lqL2lubmVyaHRtbC12cy1jcmVh
dGVlbGVtZW50LXZzLWNsb25lbm9kZS5cbiAqL1xudmFyIGVuYWJsZUxhenkgPSB0eXBlb2YgZG9j
dW1lbnQgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiBkb2N1bWVudC5kb2N1bWVudE1vZGUgPT09
ICdudW1iZXInIHx8IHR5cGVvZiBuYXZpZ2F0b3IgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiBu
YXZpZ2F0b3IudXNlckFnZW50ID09PSAnc3RyaW5nJyAmJiAvXFxiRWRnZVxcL1xcZC8udGVzdChu
YXZpZ2F0b3IudXNlckFnZW50KTtcblxuZnVuY3Rpb24gaW5zZXJ0VHJlZUNoaWxkcmVuKHRyZWUp
IHtcbiAgaWYgKCFlbmFibGVMYXp5KSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIHZhciBub2RlID0g
dHJlZS5ub2RlO1xuICB2YXIgY2hpbGRyZW4gPSB0cmVlLmNoaWxkcmVuO1xuICBpZiAoY2hpbGRy
ZW4ubGVuZ3RoKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7IGkr
Kykge1xuICAgICAgaW5zZXJ0VHJlZUJlZm9yZShub2RlLCBjaGlsZHJlbltpXSwgbnVsbCk7XG4g
ICAgfVxuICB9IGVsc2UgaWYgKHRyZWUuaHRtbCAhPSBudWxsKSB7XG4gICAgc2V0SW5uZXJIVE1M
KG5vZGUsIHRyZWUuaHRtbCk7XG4gIH0gZWxzZSBpZiAodHJlZS50ZXh0ICE9IG51bGwpIHtcbiAg
ICBzZXRUZXh0Q29udGVudChub2RlLCB0cmVlLnRleHQpO1xuICB9XG59XG5cbnZhciBpbnNlcnRU
cmVlQmVmb3JlID0gY3JlYXRlTWljcm9zb2Z0VW5zYWZlTG9jYWxGdW5jdGlvbihmdW5jdGlvbiAo
cGFyZW50Tm9kZSwgdHJlZSwgcmVmZXJlbmNlTm9kZSkge1xuICAvLyBEb2N1bWVudEZyYWdtZW50
cyBhcmVuJ3QgYWN0dWFsbHkgcGFydCBvZiB0aGUgRE9NIGFmdGVyIGluc2VydGlvbiBzb1xuICAv
LyBhcHBlbmRpbmcgY2hpbGRyZW4gd29uJ3QgdXBkYXRlIHRoZSBET00uIFdlIG5lZWQgdG8gZW5z
dXJlIHRoZSBmcmFnbWVudFxuICAvLyBpcyBwcm9wZXJseSBwb3B1bGF0ZWQgZmlyc3QsIGJyZWFr
aW5nIG91dCBvZiBvdXIgbGF6eSBhcHByb2FjaCBmb3IganVzdFxuICAvLyB0aGlzIGxldmVsLiBB
bHNvLCBzb21lIDxvYmplY3Q+IHBsdWdpbnMgKGxpa2UgRmxhc2ggUGxheWVyKSB3aWxsIHJlYWRc
biAgLy8gPHBhcmFtPiBub2RlcyBpbW1lZGlhdGVseSB1cG9uIGluc2VydGlvbiBpbnRvIHRoZSBE
T00sIHNvIDxvYmplY3Q+XG4gIC8vIG11c3QgYWxzbyBiZSBwb3B1bGF0ZWQgcHJpb3IgdG8gaW5z
ZXJ0aW9uIGludG8gdGhlIERPTS5cbiAgaWYgKHRyZWUubm9kZS5ub2RlVHlwZSA9PT0gRE9DVU1F
TlRfRlJBR01FTlRfTk9ERV9UWVBFIHx8IHRyZWUubm9kZS5ub2RlVHlwZSA9PT0gRUxFTUVOVF9O
T0RFX1RZUEUgJiYgdHJlZS5ub2RlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09ICdvYmplY3Qn
ICYmICh0cmVlLm5vZGUubmFtZXNwYWNlVVJJID09IG51bGwgfHwgdHJlZS5ub2RlLm5hbWVzcGFj
ZVVSSSA9PT0gRE9NTmFtZXNwYWNlcy5odG1sKSkge1xuICAgIGluc2VydFRyZWVDaGlsZHJlbih0
cmVlKTtcbiAgICBwYXJlbnROb2RlLmluc2VydEJlZm9yZSh0cmVlLm5vZGUsIHJlZmVyZW5jZU5v
ZGUpO1xuICB9IGVsc2Uge1xuICAgIHBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHRyZWUubm9kZSwg
cmVmZXJlbmNlTm9kZSk7XG4gICAgaW5zZXJ0VHJlZUNoaWxkcmVuKHRyZWUpO1xuICB9XG59KTtc
blxuZnVuY3Rpb24gcmVwbGFjZUNoaWxkV2l0aFRyZWUob2xkTm9kZSwgbmV3VHJlZSkge1xuICBv
bGROb2RlLnBhcmVudE5vZGUucmVwbGFjZUNoaWxkKG5ld1RyZWUubm9kZSwgb2xkTm9kZSk7XG4g
IGluc2VydFRyZWVDaGlsZHJlbihuZXdUcmVlKTtcbn1cblxuZnVuY3Rpb24gcXVldWVDaGlsZChw
YXJlbnRUcmVlLCBjaGlsZFRyZWUpIHtcbiAgaWYgKGVuYWJsZUxhenkpIHtcbiAgICBwYXJlbnRU
cmVlLmNoaWxkcmVuLnB1c2goY2hpbGRUcmVlKTtcbiAgfSBlbHNlIHtcbiAgICBwYXJlbnRUcmVl
Lm5vZGUuYXBwZW5kQ2hpbGQoY2hpbGRUcmVlLm5vZGUpO1xuICB9XG59XG5cbmZ1bmN0aW9uIHF1
ZXVlSFRNTCh0cmVlLCBodG1sKSB7XG4gIGlmIChlbmFibGVMYXp5KSB7XG4gICAgdHJlZS5odG1s
ID0gaHRtbDtcbiAgfSBlbHNlIHtcbiAgICBzZXRJbm5lckhUTUwodHJlZS5ub2RlLCBodG1sKTtc
biAgfVxufVxuXG5mdW5jdGlvbiBxdWV1ZVRleHQodHJlZSwgdGV4dCkge1xuICBpZiAoZW5hYmxl
TGF6eSkge1xuICAgIHRyZWUudGV4dCA9IHRleHQ7XG4gIH0gZWxzZSB7XG4gICAgc2V0VGV4dENv
bnRlbnQodHJlZS5ub2RlLCB0ZXh0KTtcbiAgfVxufVxuXG5mdW5jdGlvbiB0b1N0cmluZygpIHtc
biAgcmV0dXJuIHRoaXMubm9kZS5ub2RlTmFtZTtcbn1cblxuZnVuY3Rpb24gRE9NTGF6eVRyZWUo
bm9kZSkge1xuICByZXR1cm4ge1xuICAgIG5vZGU6IG5vZGUsXG4gICAgY2hpbGRyZW46IFtdLFxu
ICAgIGh0bWw6IG51bGwsXG4gICAgdGV4dDogbnVsbCxcbiAgICB0b1N0cmluZzogdG9TdHJpbmdc
biAgfTtcbn1cblxuRE9NTGF6eVRyZWUuaW5zZXJ0VHJlZUJlZm9yZSA9IGluc2VydFRyZWVCZWZv
cmU7XG5ET01MYXp5VHJlZS5yZXBsYWNlQ2hpbGRXaXRoVHJlZSA9IHJlcGxhY2VDaGlsZFdpdGhU
cmVlO1xuRE9NTGF6eVRyZWUucXVldWVDaGlsZCA9IHF1ZXVlQ2hpbGQ7XG5ET01MYXp5VHJlZS5x
dWV1ZUhUTUwgPSBxdWV1ZUhUTUw7XG5ET01MYXp5VHJlZS5xdWV1ZVRleHQgPSBxdWV1ZVRleHQ7
XG5cbm1vZHVsZS5leHBvcnRzID0gRE9NTGF6eVRyZWU7XG5cblxuLyoqKioqKioqKioqKioqKioq
XG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3QtZG9tL2xpYi9ET01MYXp5VHJlZS5q
c1xuICoqIG1vZHVsZSBpZCA9IDE0XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipc
biAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRz
IHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhl
IEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSBy
b290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4g
KiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRo
ZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgX3Byb2RJ
bnZhcmlhbnQgPSByZXF1aXJlKCcuL3JlYWN0UHJvZEludmFyaWFudCcpO1xuXG52YXIgaW52YXJp
YW50ID0gcmVxdWlyZSgnZmJqcy9saWIvaW52YXJpYW50Jyk7XG5cbmZ1bmN0aW9uIGNoZWNrTWFz
ayh2YWx1ZSwgYml0bWFzaykge1xuICByZXR1cm4gKHZhbHVlICYgYml0bWFzaykgPT09IGJpdG1h
c2s7XG59XG5cbnZhciBET01Qcm9wZXJ0eUluamVjdGlvbiA9IHtcbiAgLyoqXG4gICAqIE1hcHBp
bmcgZnJvbSBub3JtYWxpemVkLCBjYW1lbGNhc2VkIHByb3BlcnR5IG5hbWVzIHRvIGEgY29uZmln
dXJhdGlvbiB0aGF0XG4gICAqIHNwZWNpZmllcyBob3cgdGhlIGFzc29jaWF0ZWQgRE9NIHByb3Bl
cnR5IHNob3VsZCBiZSBhY2Nlc3NlZCBvciByZW5kZXJlZC5cbiAgICovXG4gIE1VU1RfVVNFX1BS
T1BFUlRZOiAweDEsXG4gIEhBU19CT09MRUFOX1ZBTFVFOiAweDQsXG4gIEhBU19OVU1FUklDX1ZB
TFVFOiAweDgsXG4gIEhBU19QT1NJVElWRV9OVU1FUklDX1ZBTFVFOiAweDEwIHwgMHg4LFxuICBI
QVNfT1ZFUkxPQURFRF9CT09MRUFOX1ZBTFVFOiAweDIwLFxuXG4gIC8qKlxuICAgKiBJbmplY3Qg
c29tZSBzcGVjaWFsaXplZCBrbm93bGVkZ2UgYWJvdXQgdGhlIERPTS4gVGhpcyB0YWtlcyBhIGNv
bmZpZyBvYmplY3RcbiAgICogd2l0aCB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XG4gICAqXG4g
ICAqIGlzQ3VzdG9tQXR0cmlidXRlOiBmdW5jdGlvbiB0aGF0IGdpdmVuIGFuIGF0dHJpYnV0ZSBu
YW1lIHdpbGwgcmV0dXJuIHRydWVcbiAgICogaWYgaXQgY2FuIGJlIGluc2VydGVkIGludG8gdGhl
IERPTSB2ZXJiYXRpbS4gVXNlZnVsIGZvciBkYXRhLSogb3IgYXJpYS0qXG4gICAqIGF0dHJpYnV0
ZXMgd2hlcmUgaXQncyBpbXBvc3NpYmxlIHRvIGVudW1lcmF0ZSBhbGwgb2YgdGhlIHBvc3NpYmxl
XG4gICAqIGF0dHJpYnV0ZSBuYW1lcyxcbiAgICpcbiAgICogUHJvcGVydGllczogb2JqZWN0IG1h
cHBpbmcgRE9NIHByb3BlcnR5IG5hbWUgdG8gb25lIG9mIHRoZVxuICAgKiBET01Qcm9wZXJ0eUlu
amVjdGlvbiBjb25zdGFudHMgb3IgbnVsbC4gSWYgeW91ciBhdHRyaWJ1dGUgaXNuJ3QgaW4gaGVy
ZSxcbiAgICogaXQgd29uJ3QgZ2V0IHdyaXR0ZW4gdG8gdGhlIERPTS5cbiAgICpcbiAgICogRE9N
QXR0cmlidXRlTmFtZXM6IG9iamVjdCBtYXBwaW5nIFJlYWN0IGF0dHJpYnV0ZSBuYW1lIHRvIHRo
ZSBET01cbiAgICogYXR0cmlidXRlIG5hbWUuIEF0dHJpYnV0ZSBuYW1lcyBub3Qgc3BlY2lmaWVk
IHVzZSB0aGUgKipsb3dlcmNhc2UqKlxuICAgKiBub3JtYWxpemVkIG5hbWUuXG4gICAqXG4gICAq
IERPTUF0dHJpYnV0ZU5hbWVzcGFjZXM6IG9iamVjdCBtYXBwaW5nIFJlYWN0IGF0dHJpYnV0ZSBu
YW1lIHRvIHRoZSBET01cbiAgICogYXR0cmlidXRlIG5hbWVzcGFjZSBVUkwuIChBdHRyaWJ1dGUg
bmFtZXMgbm90IHNwZWNpZmllZCB1c2Ugbm8gbmFtZXNwYWNlLilcbiAgICpcbiAgICogRE9NUHJv
cGVydHlOYW1lczogc2ltaWxhciB0byBET01BdHRyaWJ1dGVOYW1lcyBidXQgZm9yIERPTSBwcm9w
ZXJ0aWVzLlxuICAgKiBQcm9wZXJ0eSBuYW1lcyBub3Qgc3BlY2lmaWVkIHVzZSB0aGUgbm9ybWFs
aXplZCBuYW1lLlxuICAgKlxuICAgKiBET01NdXRhdGlvbk1ldGhvZHM6IFByb3BlcnRpZXMgdGhh
dCByZXF1aXJlIHNwZWNpYWwgbXV0YXRpb24gbWV0aG9kcy4gSWZcbiAgICogYHZhbHVlYCBpcyB1
bmRlZmluZWQsIHRoZSBtdXRhdGlvbiBtZXRob2Qgc2hvdWxkIHVuc2V0IHRoZSBwcm9wZXJ0eS5c
biAgICpcbiAgICogQHBhcmFtIHtvYmplY3R9IGRvbVByb3BlcnR5Q29uZmlnIHRoZSBjb25maWcg
YXMgZGVzY3JpYmVkIGFib3ZlLlxuICAgKi9cbiAgaW5qZWN0RE9NUHJvcGVydHlDb25maWc6IGZ1
bmN0aW9uIChkb21Qcm9wZXJ0eUNvbmZpZykge1xuICAgIHZhciBJbmplY3Rpb24gPSBET01Qcm9w
ZXJ0eUluamVjdGlvbjtcbiAgICB2YXIgUHJvcGVydGllcyA9IGRvbVByb3BlcnR5Q29uZmlnLlBy
b3BlcnRpZXMgfHwge307XG4gICAgdmFyIERPTUF0dHJpYnV0ZU5hbWVzcGFjZXMgPSBkb21Qcm9w
ZXJ0eUNvbmZpZy5ET01BdHRyaWJ1dGVOYW1lc3BhY2VzIHx8IHt9O1xuICAgIHZhciBET01BdHRy
aWJ1dGVOYW1lcyA9IGRvbVByb3BlcnR5Q29uZmlnLkRPTUF0dHJpYnV0ZU5hbWVzIHx8IHt9O1xu
ICAgIHZhciBET01Qcm9wZXJ0eU5hbWVzID0gZG9tUHJvcGVydHlDb25maWcuRE9NUHJvcGVydHlO
YW1lcyB8fCB7fTtcbiAgICB2YXIgRE9NTXV0YXRpb25NZXRob2RzID0gZG9tUHJvcGVydHlDb25m
aWcuRE9NTXV0YXRpb25NZXRob2RzIHx8IHt9O1xuXG4gICAgaWYgKGRvbVByb3BlcnR5Q29uZmln
LmlzQ3VzdG9tQXR0cmlidXRlKSB7XG4gICAgICBET01Qcm9wZXJ0eS5faXNDdXN0b21BdHRyaWJ1
dGVGdW5jdGlvbnMucHVzaChkb21Qcm9wZXJ0eUNvbmZpZy5pc0N1c3RvbUF0dHJpYnV0ZSk7XG4g
ICAgfVxuXG4gICAgZm9yICh2YXIgcHJvcE5hbWUgaW4gUHJvcGVydGllcykge1xuICAgICAgISFE
T01Qcm9wZXJ0eS5wcm9wZXJ0aWVzLmhhc093blByb3BlcnR5KHByb3BOYW1lKSA/IHByb2Nlc3Mu
ZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdpbmplY3RE
T01Qcm9wZXJ0eUNvbmZpZyguLi4pOiBZb3VcXCdyZSB0cnlpbmcgdG8gaW5qZWN0IERPTSBwcm9w
ZXJ0eSBcXCclc1xcJyB3aGljaCBoYXMgYWxyZWFkeSBiZWVuIGluamVjdGVkLiBZb3UgbWF5IGJl
IGFjY2lkZW50YWxseSBpbmplY3RpbmcgdGhlIHNhbWUgRE9NIHByb3BlcnR5IGNvbmZpZyB0d2lj
ZSwgb3IgeW91IG1heSBiZSBpbmplY3RpbmcgdHdvIGNvbmZpZ3MgdGhhdCBoYXZlIGNvbmZsaWN0
aW5nIHByb3BlcnR5IG5hbWVzLicsIHByb3BOYW1lKSA6IF9wcm9kSW52YXJpYW50KCc0OCcsIHBy
b3BOYW1lKSA6IHZvaWQgMDtcblxuICAgICAgdmFyIGxvd2VyQ2FzZWQgPSBwcm9wTmFtZS50b0xv
d2VyQ2FzZSgpO1xuICAgICAgdmFyIHByb3BDb25maWcgPSBQcm9wZXJ0aWVzW3Byb3BOYW1lXTtc
blxuICAgICAgdmFyIHByb3BlcnR5SW5mbyA9IHtcbiAgICAgICAgYXR0cmlidXRlTmFtZTogbG93
ZXJDYXNlZCxcbiAgICAgICAgYXR0cmlidXRlTmFtZXNwYWNlOiBudWxsLFxuICAgICAgICBwcm9w
ZXJ0eU5hbWU6IHByb3BOYW1lLFxuICAgICAgICBtdXRhdGlvbk1ldGhvZDogbnVsbCxcblxuICAg
ICAgICBtdXN0VXNlUHJvcGVydHk6IGNoZWNrTWFzayhwcm9wQ29uZmlnLCBJbmplY3Rpb24uTVVT
VF9VU0VfUFJPUEVSVFkpLFxuICAgICAgICBoYXNCb29sZWFuVmFsdWU6IGNoZWNrTWFzayhwcm9w
Q29uZmlnLCBJbmplY3Rpb24uSEFTX0JPT0xFQU5fVkFMVUUpLFxuICAgICAgICBoYXNOdW1lcmlj
VmFsdWU6IGNoZWNrTWFzayhwcm9wQ29uZmlnLCBJbmplY3Rpb24uSEFTX05VTUVSSUNfVkFMVUUp
LFxuICAgICAgICBoYXNQb3NpdGl2ZU51bWVyaWNWYWx1ZTogY2hlY2tNYXNrKHByb3BDb25maWcs
IEluamVjdGlvbi5IQVNfUE9TSVRJVkVfTlVNRVJJQ19WQUxVRSksXG4gICAgICAgIGhhc092ZXJs
b2FkZWRCb29sZWFuVmFsdWU6IGNoZWNrTWFzayhwcm9wQ29uZmlnLCBJbmplY3Rpb24uSEFTX09W
RVJMT0FERURfQk9PTEVBTl9WQUxVRSlcbiAgICAgIH07XG4gICAgICAhKHByb3BlcnR5SW5mby5o
YXNCb29sZWFuVmFsdWUgKyBwcm9wZXJ0eUluZm8uaGFzTnVtZXJpY1ZhbHVlICsgcHJvcGVydHlJ
bmZvLmhhc092ZXJsb2FkZWRCb29sZWFuVmFsdWUgPD0gMSkgPyBwcm9jZXNzLmVudi5OT0RFX0VO
ViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnRE9NUHJvcGVydHk6IFZhbHVl
IGNhbiBiZSBvbmUgb2YgYm9vbGVhbiwgb3ZlcmxvYWRlZCBib29sZWFuLCBvciBudW1lcmljIHZh
bHVlLCBidXQgbm90IGEgY29tYmluYXRpb246ICVzJywgcHJvcE5hbWUpIDogX3Byb2RJbnZhcmlh
bnQoJzUwJywgcHJvcE5hbWUpIDogdm9pZCAwO1xuXG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9E
RV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICBET01Qcm9wZXJ0eS5nZXRQb3NzaWJs
ZVN0YW5kYXJkTmFtZVtsb3dlckNhc2VkXSA9IHByb3BOYW1lO1xuICAgICAgfVxuXG4gICAgICBp
ZiAoRE9NQXR0cmlidXRlTmFtZXMuaGFzT3duUHJvcGVydHkocHJvcE5hbWUpKSB7XG4gICAgICAg
IHZhciBhdHRyaWJ1dGVOYW1lID0gRE9NQXR0cmlidXRlTmFtZXNbcHJvcE5hbWVdO1xuICAgICAg
ICBwcm9wZXJ0eUluZm8uYXR0cmlidXRlTmFtZSA9IGF0dHJpYnV0ZU5hbWU7XG4gICAgICAgIGlm
IChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgICAgRE9N
UHJvcGVydHkuZ2V0UG9zc2libGVTdGFuZGFyZE5hbWVbYXR0cmlidXRlTmFtZV0gPSBwcm9wTmFt
ZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoRE9NQXR0cmlidXRlTmFtZXNwYWNl
cy5oYXNPd25Qcm9wZXJ0eShwcm9wTmFtZSkpIHtcbiAgICAgICAgcHJvcGVydHlJbmZvLmF0dHJp
YnV0ZU5hbWVzcGFjZSA9IERPTUF0dHJpYnV0ZU5hbWVzcGFjZXNbcHJvcE5hbWVdO1xuICAgICAg
fVxuXG4gICAgICBpZiAoRE9NUHJvcGVydHlOYW1lcy5oYXNPd25Qcm9wZXJ0eShwcm9wTmFtZSkp
IHtcbiAgICAgICAgcHJvcGVydHlJbmZvLnByb3BlcnR5TmFtZSA9IERPTVByb3BlcnR5TmFtZXNb
cHJvcE5hbWVdO1xuICAgICAgfVxuXG4gICAgICBpZiAoRE9NTXV0YXRpb25NZXRob2RzLmhhc093
blByb3BlcnR5KHByb3BOYW1lKSkge1xuICAgICAgICBwcm9wZXJ0eUluZm8ubXV0YXRpb25NZXRo
b2QgPSBET01NdXRhdGlvbk1ldGhvZHNbcHJvcE5hbWVdO1xuICAgICAgfVxuXG4gICAgICBET01Q
cm9wZXJ0eS5wcm9wZXJ0aWVzW3Byb3BOYW1lXSA9IHByb3BlcnR5SW5mbztcbiAgICB9XG4gIH1c
bn07XG5cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4gKi9cbnZhciBBVFRSSUJVVEVfTkFNRV9T
VEFSVF9DSEFSID0gJzpBLVpfYS16XFxcXHUwMEMwLVxcXFx1MDBENlxcXFx1MDBEOC1cXFxcdTAw
RjZcXFxcdTAwRjgtXFxcXHUwMkZGXFxcXHUwMzcwLVxcXFx1MDM3RFxcXFx1MDM3Ri1cXFxcdTFG
RkZcXFxcdTIwMEMtXFxcXHUyMDBEXFxcXHUyMDcwLVxcXFx1MjE4RlxcXFx1MkMwMC1cXFxcdTJG
RUZcXFxcdTMwMDEtXFxcXHVEN0ZGXFxcXHVGOTAwLVxcXFx1RkRDRlxcXFx1RkRGMC1cXFxcdUZG
RkQnO1xuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuICovXG5cbi8qKlxuICogRE9NUHJvcGVydHkg
ZXhwb3J0cyBsb29rdXAgb2JqZWN0cyB0aGF0IGNhbiBiZSB1c2VkIGxpa2UgZnVuY3Rpb25zOlxu
ICpcbiAqICAgPiBET01Qcm9wZXJ0eS5pc1ZhbGlkWydpZCddXG4gKiAgIHRydWVcbiAqICAgPiBE
T01Qcm9wZXJ0eS5pc1ZhbGlkWydmb29iYXInXVxuICogICB1bmRlZmluZWRcbiAqXG4gKiBBbHRo
b3VnaCB0aGlzIG1heSBiZSBjb25mdXNpbmcsIGl0IHBlcmZvcm1zIGJldHRlciBpbiBnZW5lcmFs
LlxuICpcbiAqIEBzZWUgaHR0cDovL2pzcGVyZi5jb20va2V5LWV4aXN0c1xuICogQHNlZSBodHRw
Oi8vanNwZXJmLmNvbS9rZXktbWlzc2luZ1xuICovXG52YXIgRE9NUHJvcGVydHkgPSB7XG4gIElE
X0FUVFJJQlVURV9OQU1FOiAnZGF0YS1yZWFjdGlkJyxcbiAgUk9PVF9BVFRSSUJVVEVfTkFNRTog
J2RhdGEtcmVhY3Ryb290JyxcblxuICBBVFRSSUJVVEVfTkFNRV9TVEFSVF9DSEFSOiBBVFRSSUJV
VEVfTkFNRV9TVEFSVF9DSEFSLFxuICBBVFRSSUJVVEVfTkFNRV9DSEFSOiBBVFRSSUJVVEVfTkFN
RV9TVEFSVF9DSEFSICsgJ1xcXFwtLjAtOVxcXFx1MDBCN1xcXFx1MDMwMC1cXFxcdTAzNkZcXFxc
dTIwM0YtXFxcXHUyMDQwJyxcblxuICAvKipcbiAgICogTWFwIGZyb20gcHJvcGVydHkgXCJzdGFu
ZGFyZCBuYW1lXCIgdG8gYW4gb2JqZWN0IHdpdGggaW5mbyBhYm91dCBob3cgdG8gc2V0XG4gICAq
IHRoZSBwcm9wZXJ0eSBpbiB0aGUgRE9NLiBFYWNoIG9iamVjdCBjb250YWluczpcbiAgICpcbiAg
ICogYXR0cmlidXRlTmFtZTpcbiAgICogICBVc2VkIHdoZW4gcmVuZGVyaW5nIG1hcmt1cCBvciB3
aXRoIGAqQXR0cmlidXRlKClgLlxuICAgKiBhdHRyaWJ1dGVOYW1lc3BhY2VcbiAgICogcHJvcGVy
dHlOYW1lOlxuICAgKiAgIFVzZWQgb24gRE9NIG5vZGUgaW5zdGFuY2VzLiAoVGhpcyBpbmNsdWRl
cyBwcm9wZXJ0aWVzIHRoYXQgbXV0YXRlIGR1ZSB0b1xuICAgKiAgIGV4dGVybmFsIGZhY3RvcnMu
KVxuICAgKiBtdXRhdGlvbk1ldGhvZDpcbiAgICogICBJZiBub24tbnVsbCwgdXNlZCBpbnN0ZWFk
IG9mIHRoZSBwcm9wZXJ0eSBvciBgc2V0QXR0cmlidXRlKClgIGFmdGVyXG4gICAqICAgaW5pdGlh
bCByZW5kZXIuXG4gICAqIG11c3RVc2VQcm9wZXJ0eTpcbiAgICogICBXaGV0aGVyIHRoZSBwcm9w
ZXJ0eSBtdXN0IGJlIGFjY2Vzc2VkIGFuZCBtdXRhdGVkIGFzIGFuIG9iamVjdCBwcm9wZXJ0eS5c
biAgICogaGFzQm9vbGVhblZhbHVlOlxuICAgKiAgIFdoZXRoZXIgdGhlIHByb3BlcnR5IHNob3Vs
ZCBiZSByZW1vdmVkIHdoZW4gc2V0IHRvIGEgZmFsc2V5IHZhbHVlLlxuICAgKiBoYXNOdW1lcmlj
VmFsdWU6XG4gICAqICAgV2hldGhlciB0aGUgcHJvcGVydHkgbXVzdCBiZSBudW1lcmljIG9yIHBh
cnNlIGFzIGEgbnVtZXJpYyBhbmQgc2hvdWxkIGJlXG4gICAqICAgcmVtb3ZlZCB3aGVuIHNldCB0
byBhIGZhbHNleSB2YWx1ZS5cbiAgICogaGFzUG9zaXRpdmVOdW1lcmljVmFsdWU6XG4gICAqICAg
V2hldGhlciB0aGUgcHJvcGVydHkgbXVzdCBiZSBwb3NpdGl2ZSBudW1lcmljIG9yIHBhcnNlIGFz
IGEgcG9zaXRpdmVcbiAgICogICBudW1lcmljIGFuZCBzaG91bGQgYmUgcmVtb3ZlZCB3aGVuIHNl
dCB0byBhIGZhbHNleSB2YWx1ZS5cbiAgICogaGFzT3ZlcmxvYWRlZEJvb2xlYW5WYWx1ZTpcbiAg
ICogICBXaGV0aGVyIHRoZSBwcm9wZXJ0eSBjYW4gYmUgdXNlZCBhcyBhIGZsYWcgYXMgd2VsbCBh
cyB3aXRoIGEgdmFsdWUuXG4gICAqICAgUmVtb3ZlZCB3aGVuIHN0cmljdGx5IGVxdWFsIHRvIGZh
bHNlOyBwcmVzZW50IHdpdGhvdXQgYSB2YWx1ZSB3aGVuXG4gICAqICAgc3RyaWN0bHkgZXF1YWwg
dG8gdHJ1ZTsgcHJlc2VudCB3aXRoIGEgdmFsdWUgb3RoZXJ3aXNlLlxuICAgKi9cbiAgcHJvcGVy
dGllczoge30sXG5cbiAgLyoqXG4gICAqIE1hcHBpbmcgZnJvbSBsb3dlcmNhc2UgcHJvcGVydHkg
bmFtZXMgdG8gdGhlIHByb3Blcmx5IGNhc2VkIHZlcnNpb24sIHVzZWRcbiAgICogdG8gd2FybiBp
biB0aGUgY2FzZSBvZiBtaXNzaW5nIHByb3BlcnRpZXMuIEF2YWlsYWJsZSBvbmx5IGluIF9fREVW
X18uXG4gICAqXG4gICAqIGF1dG9mb2N1cyBpcyBwcmVkZWZpbmVkLCBiZWNhdXNlIGFkZGluZyBp
dCB0byB0aGUgcHJvcGVydHkgd2hpdGVsaXN0XG4gICAqIGNhdXNlcyB1bmludGVuZGVkIHNpZGUg
ZWZmZWN0cy5cbiAgICpcbiAgICogQHR5cGUge09iamVjdH1cbiAgICovXG4gIGdldFBvc3NpYmxl
U3RhbmRhcmROYW1lOiBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8geyBh
dXRvZm9jdXM6ICdhdXRvRm9jdXMnIH0gOiBudWxsLFxuXG4gIC8qKlxuICAgKiBBbGwgb2YgdGhl
IGlzQ3VzdG9tQXR0cmlidXRlKCkgZnVuY3Rpb25zIHRoYXQgaGF2ZSBiZWVuIGluamVjdGVkLlxu
ICAgKi9cbiAgX2lzQ3VzdG9tQXR0cmlidXRlRnVuY3Rpb25zOiBbXSxcblxuICAvKipcbiAgICog
Q2hlY2tzIHdoZXRoZXIgYSBwcm9wZXJ0eSBuYW1lIGlzIGEgY3VzdG9tIGF0dHJpYnV0ZS5cbiAg
ICogQG1ldGhvZFxuICAgKi9cbiAgaXNDdXN0b21BdHRyaWJ1dGU6IGZ1bmN0aW9uIChhdHRyaWJ1
dGVOYW1lKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBET01Qcm9wZXJ0eS5faXNDdXN0b21B
dHRyaWJ1dGVGdW5jdGlvbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBpc0N1c3RvbUF0dHJp
YnV0ZUZuID0gRE9NUHJvcGVydHkuX2lzQ3VzdG9tQXR0cmlidXRlRnVuY3Rpb25zW2ldO1xuICAg
ICAgaWYgKGlzQ3VzdG9tQXR0cmlidXRlRm4oYXR0cmlidXRlTmFtZSkpIHtcbiAgICAgICAgcmV0
dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfSxcblxuICBp
bmplY3Rpb246IERPTVByb3BlcnR5SW5qZWN0aW9uXG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IERP
TVByb3BlcnR5O1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4g
KiogLi9+L3JlYWN0LWRvbS9saWIvRE9NUHJvcGVydHkuanNcbiAqKiBtb2R1bGUgaWQgPSAxNVxu
ICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVz
ZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlz
IHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3Vu
ZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBz
b3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4g
YmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxu
ICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIFJlYWN0UmVmID0gcmVxdWlyZSgnLi9SZWFjdFJl
ZicpO1xudmFyIFJlYWN0SW5zdHJ1bWVudGF0aW9uID0gcmVxdWlyZSgnLi9SZWFjdEluc3RydW1l
bnRhdGlvbicpO1xuXG52YXIgd2FybmluZyA9IHJlcXVpcmUoJ2ZianMvbGliL3dhcm5pbmcnKTtc
blxuLyoqXG4gKiBIZWxwZXIgdG8gY2FsbCBSZWFjdFJlZi5hdHRhY2hSZWZzIHdpdGggdGhpcyBj
b21wb3NpdGUgY29tcG9uZW50LCBzcGxpdCBvdXRcbiAqIHRvIGF2b2lkIGFsbG9jYXRpb25zIGlu
IHRoZSB0cmFuc2FjdGlvbiBtb3VudC1yZWFkeSBxdWV1ZS5cbiAqL1xuZnVuY3Rpb24gYXR0YWNo
UmVmcygpIHtcbiAgUmVhY3RSZWYuYXR0YWNoUmVmcyh0aGlzLCB0aGlzLl9jdXJyZW50RWxlbWVu
dCk7XG59XG5cbnZhciBSZWFjdFJlY29uY2lsZXIgPSB7XG4gIC8qKlxuICAgKiBJbml0aWFsaXpl
cyB0aGUgY29tcG9uZW50LCByZW5kZXJzIG1hcmt1cCwgYW5kIHJlZ2lzdGVycyBldmVudCBsaXN0
ZW5lcnMuXG4gICAqXG4gICAqIEBwYXJhbSB7UmVhY3RDb21wb25lbnR9IGludGVybmFsSW5zdGFu
Y2VcbiAgICogQHBhcmFtIHtSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9ufFJlYWN0U2VydmVyUmVu
ZGVyaW5nVHJhbnNhY3Rpb259IHRyYW5zYWN0aW9uXG4gICAqIEBwYXJhbSB7P29iamVjdH0gdGhl
IGNvbnRhaW5pbmcgaG9zdCBjb21wb25lbnQgaW5zdGFuY2VcbiAgICogQHBhcmFtIHs/b2JqZWN0
fSBpbmZvIGFib3V0IHRoZSBob3N0IGNvbnRhaW5lclxuICAgKiBAcmV0dXJuIHs/c3RyaW5nfSBS
ZW5kZXJlZCBtYXJrdXAgdG8gYmUgaW5zZXJ0ZWQgaW50byB0aGUgRE9NLlxuICAgKiBAZmluYWxc
biAgICogQGludGVybmFsXG4gICAqL1xuICBtb3VudENvbXBvbmVudDogZnVuY3Rpb24gKGludGVy
bmFsSW5zdGFuY2UsIHRyYW5zYWN0aW9uLCBob3N0UGFyZW50LCBob3N0Q29udGFpbmVySW5mbywg
Y29udGV4dCwgcGFyZW50RGVidWdJRCkgLy8gMCBpbiBwcm9kdWN0aW9uIGFuZCBmb3Igcm9vdHNc
biAge1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4g
ICAgICBpZiAoaW50ZXJuYWxJbnN0YW5jZS5fZGVidWdJRCAhPT0gMCkge1xuICAgICAgICBSZWFj
dEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25CZWZvcmVNb3VudENvbXBvbmVudChpbnRlcm5h
bEluc3RhbmNlLl9kZWJ1Z0lELCBpbnRlcm5hbEluc3RhbmNlLl9jdXJyZW50RWxlbWVudCwgcGFy
ZW50RGVidWdJRCk7XG4gICAgICB9XG4gICAgfVxuICAgIHZhciBtYXJrdXAgPSBpbnRlcm5hbElu
c3RhbmNlLm1vdW50Q29tcG9uZW50KHRyYW5zYWN0aW9uLCBob3N0UGFyZW50LCBob3N0Q29udGFp
bmVySW5mbywgY29udGV4dCwgcGFyZW50RGVidWdJRCk7XG4gICAgaWYgKGludGVybmFsSW5zdGFu
Y2UuX2N1cnJlbnRFbGVtZW50ICYmIGludGVybmFsSW5zdGFuY2UuX2N1cnJlbnRFbGVtZW50LnJl
ZiAhPSBudWxsKSB7XG4gICAgICB0cmFuc2FjdGlvbi5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1
ZXVlKGF0dGFjaFJlZnMsIGludGVybmFsSW5zdGFuY2UpO1xuICAgIH1cbiAgICBpZiAocHJvY2Vz
cy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgaWYgKGludGVybmFsSW5z
dGFuY2UuX2RlYnVnSUQgIT09IDApIHtcbiAgICAgICAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVi
dWdUb29sLm9uTW91bnRDb21wb25lbnQoaW50ZXJuYWxJbnN0YW5jZS5fZGVidWdJRCk7XG4gICAg
ICB9XG4gICAgfVxuICAgIHJldHVybiBtYXJrdXA7XG4gIH0sXG5cbiAgLyoqXG4gICAqIFJldHVy
bnMgYSB2YWx1ZSB0aGF0IGNhbiBiZSBwYXNzZWQgdG9cbiAgICogUmVhY3RDb21wb25lbnRFbnZp
cm9ubWVudC5yZXBsYWNlTm9kZVdpdGhNYXJrdXAuXG4gICAqL1xuICBnZXRIb3N0Tm9kZTogZnVu
Y3Rpb24gKGludGVybmFsSW5zdGFuY2UpIHtcbiAgICByZXR1cm4gaW50ZXJuYWxJbnN0YW5jZS5n
ZXRIb3N0Tm9kZSgpO1xuICB9LFxuXG4gIC8qKlxuICAgKiBSZWxlYXNlcyBhbnkgcmVzb3VyY2Vz
IGFsbG9jYXRlZCBieSBgbW91bnRDb21wb25lbnRgLlxuICAgKlxuICAgKiBAZmluYWxcbiAgICog
QGludGVybmFsXG4gICAqL1xuICB1bm1vdW50Q29tcG9uZW50OiBmdW5jdGlvbiAoaW50ZXJuYWxJ
bnN0YW5jZSwgc2FmZWx5KSB7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJv
ZHVjdGlvbicpIHtcbiAgICAgIGlmIChpbnRlcm5hbEluc3RhbmNlLl9kZWJ1Z0lEICE9PSAwKSB7
XG4gICAgICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vbkJlZm9yZVVubW91bnRD
b21wb25lbnQoaW50ZXJuYWxJbnN0YW5jZS5fZGVidWdJRCk7XG4gICAgICB9XG4gICAgfVxuICAg
IFJlYWN0UmVmLmRldGFjaFJlZnMoaW50ZXJuYWxJbnN0YW5jZSwgaW50ZXJuYWxJbnN0YW5jZS5f
Y3VycmVudEVsZW1lbnQpO1xuICAgIGludGVybmFsSW5zdGFuY2UudW5tb3VudENvbXBvbmVudChz
YWZlbHkpO1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7
XG4gICAgICBpZiAoaW50ZXJuYWxJbnN0YW5jZS5fZGVidWdJRCAhPT0gMCkge1xuICAgICAgICBS
ZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25Vbm1vdW50Q29tcG9uZW50KGludGVybmFs
SW5zdGFuY2UuX2RlYnVnSUQpO1xuICAgICAgfVxuICAgIH1cbiAgfSxcblxuICAvKipcbiAgICog
VXBkYXRlIGEgY29tcG9uZW50IHVzaW5nIGEgbmV3IGVsZW1lbnQuXG4gICAqXG4gICAqIEBwYXJh
bSB7UmVhY3RDb21wb25lbnR9IGludGVybmFsSW5zdGFuY2VcbiAgICogQHBhcmFtIHtSZWFjdEVs
ZW1lbnR9IG5leHRFbGVtZW50XG4gICAqIEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlv
bn0gdHJhbnNhY3Rpb25cbiAgICogQHBhcmFtIHtvYmplY3R9IGNvbnRleHRcbiAgICogQGludGVy
bmFsXG4gICAqL1xuICByZWNlaXZlQ29tcG9uZW50OiBmdW5jdGlvbiAoaW50ZXJuYWxJbnN0YW5j
ZSwgbmV4dEVsZW1lbnQsIHRyYW5zYWN0aW9uLCBjb250ZXh0KSB7XG4gICAgdmFyIHByZXZFbGVt
ZW50ID0gaW50ZXJuYWxJbnN0YW5jZS5fY3VycmVudEVsZW1lbnQ7XG5cbiAgICBpZiAobmV4dEVs
ZW1lbnQgPT09IHByZXZFbGVtZW50ICYmIGNvbnRleHQgPT09IGludGVybmFsSW5zdGFuY2UuX2Nv
bnRleHQpIHtcbiAgICAgIC8vIFNpbmNlIGVsZW1lbnRzIGFyZSBpbW11dGFibGUgYWZ0ZXIgdGhl
IG93bmVyIGlzIHJlbmRlcmVkLFxuICAgICAgLy8gd2UgY2FuIGRvIGEgY2hlYXAgaWRlbnRpdHkg
Y29tcGFyZSBoZXJlIHRvIGRldGVybWluZSBpZiB0aGlzIGlzIGFcbiAgICAgIC8vIHN1cGVyZmx1
b3VzIHJlY29uY2lsZS4gSXQncyBwb3NzaWJsZSBmb3Igc3RhdGUgdG8gYmUgbXV0YWJsZSBidXQg
c3VjaFxuICAgICAgLy8gY2hhbmdlIHNob3VsZCB0cmlnZ2VyIGFuIHVwZGF0ZSBvZiB0aGUgb3du
ZXIgd2hpY2ggd291bGQgcmVjcmVhdGVcbiAgICAgIC8vIHRoZSBlbGVtZW50LiBXZSBleHBsaWNp
dGx5IGNoZWNrIGZvciB0aGUgZXhpc3RlbmNlIG9mIGFuIG93bmVyIHNpbmNlXG4gICAgICAvLyBp
dCdzIHBvc3NpYmxlIGZvciBhbiBlbGVtZW50IGNyZWF0ZWQgb3V0c2lkZSBhIGNvbXBvc2l0ZSB0
byBiZVxuICAgICAgLy8gZGVlcGx5IG11dGF0ZWQgYW5kIHJldXNlZC5cblxuICAgICAgLy8gVE9E
TzogQmFpbGluZyBvdXQgZWFybHkgaXMganVzdCBhIHBlcmYgb3B0aW1pemF0aW9uIHJpZ2h0P1xu
ICAgICAgLy8gVE9ETzogUmVtb3ZpbmcgdGhlIHJldHVybiBzdGF0ZW1lbnQgc2hvdWxkIGFmZmVj
dCBjb3JyZWN0bmVzcz9cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAocHJvY2Vzcy5l
bnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgaWYgKGludGVybmFsSW5zdGFu
Y2UuX2RlYnVnSUQgIT09IDApIHtcbiAgICAgICAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdU
b29sLm9uQmVmb3JlVXBkYXRlQ29tcG9uZW50KGludGVybmFsSW5zdGFuY2UuX2RlYnVnSUQsIG5l
eHRFbGVtZW50KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgcmVmc0NoYW5nZWQgPSBSZWFj
dFJlZi5zaG91bGRVcGRhdGVSZWZzKHByZXZFbGVtZW50LCBuZXh0RWxlbWVudCk7XG5cbiAgICBp
ZiAocmVmc0NoYW5nZWQpIHtcbiAgICAgIFJlYWN0UmVmLmRldGFjaFJlZnMoaW50ZXJuYWxJbnN0
YW5jZSwgcHJldkVsZW1lbnQpO1xuICAgIH1cblxuICAgIGludGVybmFsSW5zdGFuY2UucmVjZWl2
ZUNvbXBvbmVudChuZXh0RWxlbWVudCwgdHJhbnNhY3Rpb24sIGNvbnRleHQpO1xuXG4gICAgaWYg
KHJlZnNDaGFuZ2VkICYmIGludGVybmFsSW5zdGFuY2UuX2N1cnJlbnRFbGVtZW50ICYmIGludGVy
bmFsSW5zdGFuY2UuX2N1cnJlbnRFbGVtZW50LnJlZiAhPSBudWxsKSB7XG4gICAgICB0cmFuc2Fj
dGlvbi5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKGF0dGFjaFJlZnMsIGludGVybmFsSW5z
dGFuY2UpO1xuICAgIH1cblxuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1
Y3Rpb24nKSB7XG4gICAgICBpZiAoaW50ZXJuYWxJbnN0YW5jZS5fZGVidWdJRCAhPT0gMCkge1xu
ICAgICAgICBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25VcGRhdGVDb21wb25lbnQo
aW50ZXJuYWxJbnN0YW5jZS5fZGVidWdJRCk7XG4gICAgICB9XG4gICAgfVxuICB9LFxuXG4gIC8q
KlxuICAgKiBGbHVzaCBhbnkgZGlydHkgY2hhbmdlcyBpbiBhIGNvbXBvbmVudC5cbiAgICpcbiAg
ICogQHBhcmFtIHtSZWFjdENvbXBvbmVudH0gaW50ZXJuYWxJbnN0YW5jZVxuICAgKiBAcGFyYW0g
e1JlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb259IHRyYW5zYWN0aW9uXG4gICAqIEBpbnRlcm5hbFxu
ICAgKi9cbiAgcGVyZm9ybVVwZGF0ZUlmTmVjZXNzYXJ5OiBmdW5jdGlvbiAoaW50ZXJuYWxJbnN0
YW5jZSwgdHJhbnNhY3Rpb24sIHVwZGF0ZUJhdGNoTnVtYmVyKSB7XG4gICAgaWYgKGludGVybmFs
SW5zdGFuY2UuX3VwZGF0ZUJhdGNoTnVtYmVyICE9PSB1cGRhdGVCYXRjaE51bWJlcikge1xuICAg
ICAgLy8gVGhlIGNvbXBvbmVudCdzIGVucXVldWVkIGJhdGNoIG51bWJlciBzaG91bGQgYWx3YXlz
IGJlIHRoZSBjdXJyZW50XG4gICAgICAvLyBiYXRjaCBvciB0aGUgZm9sbG93aW5nIG9uZS5cbiAg
ICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGludGVy
bmFsSW5zdGFuY2UuX3VwZGF0ZUJhdGNoTnVtYmVyID09IG51bGwgfHwgaW50ZXJuYWxJbnN0YW5j
ZS5fdXBkYXRlQmF0Y2hOdW1iZXIgPT09IHVwZGF0ZUJhdGNoTnVtYmVyICsgMSwgJ3BlcmZvcm1V
cGRhdGVJZk5lY2Vzc2FyeTogVW5leHBlY3RlZCBiYXRjaCBudW1iZXIgKGN1cnJlbnQgJXMsICcg
KyAncGVuZGluZyAlcyknLCB1cGRhdGVCYXRjaE51bWJlciwgaW50ZXJuYWxJbnN0YW5jZS5fdXBk
YXRlQmF0Y2hOdW1iZXIpIDogdm9pZCAwO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAo
cHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgaWYgKGludGVy
bmFsSW5zdGFuY2UuX2RlYnVnSUQgIT09IDApIHtcbiAgICAgICAgUmVhY3RJbnN0cnVtZW50YXRp
b24uZGVidWdUb29sLm9uQmVmb3JlVXBkYXRlQ29tcG9uZW50KGludGVybmFsSW5zdGFuY2UuX2Rl
YnVnSUQsIGludGVybmFsSW5zdGFuY2UuX2N1cnJlbnRFbGVtZW50KTtcbiAgICAgIH1cbiAgICB9
XG4gICAgaW50ZXJuYWxJbnN0YW5jZS5wZXJmb3JtVXBkYXRlSWZOZWNlc3NhcnkodHJhbnNhY3Rp
b24pO1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4g
ICAgICBpZiAoaW50ZXJuYWxJbnN0YW5jZS5fZGVidWdJRCAhPT0gMCkge1xuICAgICAgICBSZWFj
dEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25VcGRhdGVDb21wb25lbnQoaW50ZXJuYWxJbnN0
YW5jZS5fZGVidWdJRCk7XG4gICAgICB9XG4gICAgfVxuICB9XG59O1xuXG5tb2R1bGUuZXhwb3J0
cyA9IFJlYWN0UmVjb25jaWxlcjtcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNL
IEZPT1RFUlxuICoqIC4vfi9yZWFjdC1kb20vbGliL1JlYWN0UmVjb25jaWxlci5qc1xuICoqIG1v
ZHVsZSBpZCA9IDE2XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENvcHly
aWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVk
LlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHls
ZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVj
dG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRl
bnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRp
cmVjdG9yeS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgX2Fzc2lnbiA9IHJlcXVp
cmUoJ29iamVjdC1hc3NpZ24nKTtcblxudmFyIFJlYWN0QmFzZUNsYXNzZXMgPSByZXF1aXJlKCcu
L1JlYWN0QmFzZUNsYXNzZXMnKTtcbnZhciBSZWFjdENoaWxkcmVuID0gcmVxdWlyZSgnLi9SZWFj
dENoaWxkcmVuJyk7XG52YXIgUmVhY3RET01GYWN0b3JpZXMgPSByZXF1aXJlKCcuL1JlYWN0RE9N
RmFjdG9yaWVzJyk7XG52YXIgUmVhY3RFbGVtZW50ID0gcmVxdWlyZSgnLi9SZWFjdEVsZW1lbnQn
KTtcbnZhciBSZWFjdFByb3BUeXBlcyA9IHJlcXVpcmUoJy4vUmVhY3RQcm9wVHlwZXMnKTtcbnZh
ciBSZWFjdFZlcnNpb24gPSByZXF1aXJlKCcuL1JlYWN0VmVyc2lvbicpO1xuXG52YXIgY3JlYXRl
UmVhY3RDbGFzcyA9IHJlcXVpcmUoJy4vY3JlYXRlQ2xhc3MnKTtcbnZhciBvbmx5Q2hpbGQgPSBy
ZXF1aXJlKCcuL29ubHlDaGlsZCcpO1xuXG52YXIgY3JlYXRlRWxlbWVudCA9IFJlYWN0RWxlbWVu
dC5jcmVhdGVFbGVtZW50O1xudmFyIGNyZWF0ZUZhY3RvcnkgPSBSZWFjdEVsZW1lbnQuY3JlYXRl
RmFjdG9yeTtcbnZhciBjbG9uZUVsZW1lbnQgPSBSZWFjdEVsZW1lbnQuY2xvbmVFbGVtZW50O1xu
XG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICB2YXIgbG93
UHJpb3JpdHlXYXJuaW5nID0gcmVxdWlyZSgnLi9sb3dQcmlvcml0eVdhcm5pbmcnKTtcbiAgdmFy
IGNhbkRlZmluZVByb3BlcnR5ID0gcmVxdWlyZSgnLi9jYW5EZWZpbmVQcm9wZXJ0eScpO1xuICB2
YXIgUmVhY3RFbGVtZW50VmFsaWRhdG9yID0gcmVxdWlyZSgnLi9SZWFjdEVsZW1lbnRWYWxpZGF0
b3InKTtcbiAgdmFyIGRpZFdhcm5Qcm9wVHlwZXNEZXByZWNhdGVkID0gZmFsc2U7XG4gIGNyZWF0
ZUVsZW1lbnQgPSBSZWFjdEVsZW1lbnRWYWxpZGF0b3IuY3JlYXRlRWxlbWVudDtcbiAgY3JlYXRl
RmFjdG9yeSA9IFJlYWN0RWxlbWVudFZhbGlkYXRvci5jcmVhdGVGYWN0b3J5O1xuICBjbG9uZUVs
ZW1lbnQgPSBSZWFjdEVsZW1lbnRWYWxpZGF0b3IuY2xvbmVFbGVtZW50O1xufVxuXG52YXIgX19z
cHJlYWQgPSBfYXNzaWduO1xudmFyIGNyZWF0ZU1peGluID0gZnVuY3Rpb24gKG1peGluKSB7XG4g
IHJldHVybiBtaXhpbjtcbn07XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1
Y3Rpb24nKSB7XG4gIHZhciB3YXJuZWRGb3JTcHJlYWQgPSBmYWxzZTtcbiAgdmFyIHdhcm5lZEZv
ckNyZWF0ZU1peGluID0gZmFsc2U7XG4gIF9fc3ByZWFkID0gZnVuY3Rpb24gKCkge1xuICAgIGxv
d1ByaW9yaXR5V2FybmluZyh3YXJuZWRGb3JTcHJlYWQsICdSZWFjdC5fX3NwcmVhZCBpcyBkZXBy
ZWNhdGVkIGFuZCBzaG91bGQgbm90IGJlIHVzZWQuIFVzZSAnICsgJ09iamVjdC5hc3NpZ24gZGly
ZWN0bHkgb3IgYW5vdGhlciBoZWxwZXIgZnVuY3Rpb24gd2l0aCBzaW1pbGFyICcgKyAnc2VtYW50
aWNzLiBZb3UgbWF5IGJlIHNlZWluZyB0aGlzIHdhcm5pbmcgZHVlIHRvIHlvdXIgY29tcGlsZXIu
ICcgKyAnU2VlIGh0dHBzOi8vZmIubWUvcmVhY3Qtc3ByZWFkLWRlcHJlY2F0aW9uIGZvciBtb3Jl
IGRldGFpbHMuJyk7XG4gICAgd2FybmVkRm9yU3ByZWFkID0gdHJ1ZTtcbiAgICByZXR1cm4gX2Fz
c2lnbi5hcHBseShudWxsLCBhcmd1bWVudHMpO1xuICB9O1xuXG4gIGNyZWF0ZU1peGluID0gZnVu
Y3Rpb24gKG1peGluKSB7XG4gICAgbG93UHJpb3JpdHlXYXJuaW5nKHdhcm5lZEZvckNyZWF0ZU1p
eGluLCAnUmVhY3QuY3JlYXRlTWl4aW4gaXMgZGVwcmVjYXRlZCBhbmQgc2hvdWxkIG5vdCBiZSB1
c2VkLiAnICsgJ0luIFJlYWN0IHYxNi4wLCBpdCB3aWxsIGJlIHJlbW92ZWQuICcgKyAnWW91IGNh
biB1c2UgdGhpcyBtaXhpbiBkaXJlY3RseSBpbnN0ZWFkLiAnICsgJ1NlZSBodHRwczovL2ZiLm1l
L2NyZWF0ZW1peGluLXdhcy1uZXZlci1pbXBsZW1lbnRlZCBmb3IgbW9yZSBpbmZvLicpO1xuICAg
IHdhcm5lZEZvckNyZWF0ZU1peGluID0gdHJ1ZTtcbiAgICByZXR1cm4gbWl4aW47XG4gIH07XG59
XG5cbnZhciBSZWFjdCA9IHtcbiAgLy8gTW9kZXJuXG5cbiAgQ2hpbGRyZW46IHtcbiAgICBtYXA6
IFJlYWN0Q2hpbGRyZW4ubWFwLFxuICAgIGZvckVhY2g6IFJlYWN0Q2hpbGRyZW4uZm9yRWFjaCxc
biAgICBjb3VudDogUmVhY3RDaGlsZHJlbi5jb3VudCxcbiAgICB0b0FycmF5OiBSZWFjdENoaWxk
cmVuLnRvQXJyYXksXG4gICAgb25seTogb25seUNoaWxkXG4gIH0sXG5cbiAgQ29tcG9uZW50OiBS
ZWFjdEJhc2VDbGFzc2VzLkNvbXBvbmVudCxcbiAgUHVyZUNvbXBvbmVudDogUmVhY3RCYXNlQ2xh
c3Nlcy5QdXJlQ29tcG9uZW50LFxuXG4gIGNyZWF0ZUVsZW1lbnQ6IGNyZWF0ZUVsZW1lbnQsXG4g
IGNsb25lRWxlbWVudDogY2xvbmVFbGVtZW50LFxuICBpc1ZhbGlkRWxlbWVudDogUmVhY3RFbGVt
ZW50LmlzVmFsaWRFbGVtZW50LFxuXG4gIC8vIENsYXNzaWNcblxuICBQcm9wVHlwZXM6IFJlYWN0
UHJvcFR5cGVzLFxuICBjcmVhdGVDbGFzczogY3JlYXRlUmVhY3RDbGFzcyxcbiAgY3JlYXRlRmFj
dG9yeTogY3JlYXRlRmFjdG9yeSxcbiAgY3JlYXRlTWl4aW46IGNyZWF0ZU1peGluLFxuXG4gIC8v
IFRoaXMgbG9va3MgRE9NIHNwZWNpZmljIGJ1dCB0aGVzZSBhcmUgYWN0dWFsbHkgaXNvbW9ycGhp
YyBoZWxwZXJzXG4gIC8vIHNpbmNlIHRoZXkgYXJlIGp1c3QgZ2VuZXJhdGluZyBET00gc3RyaW5n
cy5cbiAgRE9NOiBSZWFjdERPTUZhY3RvcmllcyxcblxuICB2ZXJzaW9uOiBSZWFjdFZlcnNpb24s
XG5cbiAgLy8gRGVwcmVjYXRlZCBob29rIGZvciBKU1ggc3ByZWFkLCBkb24ndCB1c2UgdGhpcyBm
b3IgYW55dGhpbmcuXG4gIF9fc3ByZWFkOiBfX3NwcmVhZFxufTtcblxuaWYgKHByb2Nlc3MuZW52
Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgdmFyIHdhcm5lZEZvckNyZWF0ZUNsYXNz
ID0gZmFsc2U7XG4gIGlmIChjYW5EZWZpbmVQcm9wZXJ0eSkge1xuICAgIE9iamVjdC5kZWZpbmVQ
cm9wZXJ0eShSZWFjdCwgJ1Byb3BUeXBlcycsIHtcbiAgICAgIGdldDogZnVuY3Rpb24gKCkge1xu
ICAgICAgICBsb3dQcmlvcml0eVdhcm5pbmcoZGlkV2FyblByb3BUeXBlc0RlcHJlY2F0ZWQsICdB
Y2Nlc3NpbmcgUHJvcFR5cGVzIHZpYSB0aGUgbWFpbiBSZWFjdCBwYWNrYWdlIGlzIGRlcHJlY2F0
ZWQsJyArICcgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiAgUmVhY3QgdjE2LjAuJyArICcgVXNlIHRo
ZSBsYXRlc3QgYXZhaWxhYmxlIHYxNS4qIHByb3AtdHlwZXMgcGFja2FnZSBmcm9tIG5wbSBpbnN0
ZWFkLicgKyAnIEZvciBpbmZvIG9uIHVzYWdlLCBjb21wYXRpYmlsaXR5LCBtaWdyYXRpb24gYW5k
IG1vcmUsIHNlZSAnICsgJ2h0dHBzOi8vZmIubWUvcHJvcC10eXBlcy1kb2NzJyk7XG4gICAgICAg
IGRpZFdhcm5Qcm9wVHlwZXNEZXByZWNhdGVkID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIFJlYWN0
UHJvcFR5cGVzO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5
KFJlYWN0LCAnY3JlYXRlQ2xhc3MnLCB7XG4gICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAg
ICAgbG93UHJpb3JpdHlXYXJuaW5nKHdhcm5lZEZvckNyZWF0ZUNsYXNzLCAnQWNjZXNzaW5nIGNy
ZWF0ZUNsYXNzIHZpYSB0aGUgbWFpbiBSZWFjdCBwYWNrYWdlIGlzIGRlcHJlY2F0ZWQsJyArICcg
YW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBSZWFjdCB2MTYuMC4nICsgXCIgVXNlIGEgcGxhaW4gSmF2
YVNjcmlwdCBjbGFzcyBpbnN0ZWFkLiBJZiB5b3UncmUgbm90IHlldCBcIiArICdyZWFkeSB0byBt
aWdyYXRlLCBjcmVhdGUtcmVhY3QtY2xhc3MgdjE1LiogaXMgYXZhaWxhYmxlICcgKyAnb24gbnBt
IGFzIGEgdGVtcG9yYXJ5LCBkcm9wLWluIHJlcGxhY2VtZW50LiAnICsgJ0ZvciBtb3JlIGluZm8g
c2VlIGh0dHBzOi8vZmIubWUvcmVhY3QtY3JlYXRlLWNsYXNzJyk7XG4gICAgICAgIHdhcm5lZEZv
ckNyZWF0ZUNsYXNzID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZVJlYWN0Q2xhc3M7XG4g
ICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvLyBSZWFjdC5ET00gZmFjdG9yaWVzIGFyZSBkZXBy
ZWNhdGVkLiBXcmFwIHRoZXNlIG1ldGhvZHMgc28gdGhhdFxuICAvLyBpbnZvY2F0aW9ucyBvZiB0
aGUgUmVhY3QuRE9NIG5hbWVzcGFjZSBhbmQgYWxlcnQgdXNlcnMgdG8gc3dpdGNoXG4gIC8vIHRv
IHRoZSBgcmVhY3QtZG9tLWZhY3Rvcmllc2AgcGFja2FnZS5cbiAgUmVhY3QuRE9NID0ge307XG4g
IHZhciB3YXJuZWRGb3JGYWN0b3JpZXMgPSBmYWxzZTtcbiAgT2JqZWN0LmtleXMoUmVhY3RET01G
YWN0b3JpZXMpLmZvckVhY2goZnVuY3Rpb24gKGZhY3RvcnkpIHtcbiAgICBSZWFjdC5ET01bZmFj
dG9yeV0gPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpZiAoIXdhcm5lZEZvckZhY3Rvcmllcykge1xu
ICAgICAgICBsb3dQcmlvcml0eVdhcm5pbmcoZmFsc2UsICdBY2Nlc3NpbmcgZmFjdG9yaWVzIGxp
a2UgUmVhY3QuRE9NLiVzIGhhcyBiZWVuIGRlcHJlY2F0ZWQgJyArICdhbmQgd2lsbCBiZSByZW1v
dmVkIGluIHYxNi4wKy4gVXNlIHRoZSAnICsgJ3JlYWN0LWRvbS1mYWN0b3JpZXMgcGFja2FnZSBp
bnN0ZWFkLiAnICsgJyBWZXJzaW9uIDEuMCBwcm92aWRlcyBhIGRyb3AtaW4gcmVwbGFjZW1lbnQu
JyArICcgRm9yIG1vcmUgaW5mbywgc2VlIGh0dHBzOi8vZmIubWUvcmVhY3QtZG9tLWZhY3Rvcmll
cycsIGZhY3RvcnkpO1xuICAgICAgICB3YXJuZWRGb3JGYWN0b3JpZXMgPSB0cnVlO1xuICAgICAg
fVxuICAgICAgcmV0dXJuIFJlYWN0RE9NRmFjdG9yaWVzW2ZhY3RvcnldLmFwcGx5KFJlYWN0RE9N
RmFjdG9yaWVzLCBhcmd1bWVudHMpO1xuICAgIH07XG4gIH0pO1xufVxuXG5tb2R1bGUuZXhwb3J0
cyA9IFJlYWN0O1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4g
KiogLi9+L3JlYWN0L2xpYi9SZWFjdC5qc1xuICoqIG1vZHVsZSBpZCA9IDE3XG4gKiogbW9kdWxl
IGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQsIEZhY2Vi
b29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNv
ZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxu
ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVl
LiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBp
biB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuJ3Vz
ZSBzdHJpY3QnO1xuXG52YXIgX2Fzc2lnbiA9IHJlcXVpcmUoJ29iamVjdC1hc3NpZ24nKTtcblxu
dmFyIFJlYWN0Q3VycmVudE93bmVyID0gcmVxdWlyZSgnLi9SZWFjdEN1cnJlbnRPd25lcicpO1xu
XG52YXIgd2FybmluZyA9IHJlcXVpcmUoJ2ZianMvbGliL3dhcm5pbmcnKTtcbnZhciBjYW5EZWZp
bmVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4vY2FuRGVmaW5lUHJvcGVydHknKTtcbnZhciBoYXNPd25Q
cm9wZXJ0eSA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG5cbnZhciBSRUFDVF9F
TEVNRU5UX1RZUEUgPSByZXF1aXJlKCcuL1JlYWN0RWxlbWVudFN5bWJvbCcpO1xuXG52YXIgUkVT
RVJWRURfUFJPUFMgPSB7XG4gIGtleTogdHJ1ZSxcbiAgcmVmOiB0cnVlLFxuICBfX3NlbGY6IHRy
dWUsXG4gIF9fc291cmNlOiB0cnVlXG59O1xuXG52YXIgc3BlY2lhbFByb3BLZXlXYXJuaW5nU2hv
d24sIHNwZWNpYWxQcm9wUmVmV2FybmluZ1Nob3duO1xuXG5mdW5jdGlvbiBoYXNWYWxpZFJlZihj
b25maWcpIHtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtc
biAgICBpZiAoaGFzT3duUHJvcGVydHkuY2FsbChjb25maWcsICdyZWYnKSkge1xuICAgICAgdmFy
IGdldHRlciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoY29uZmlnLCAncmVmJyku
Z2V0O1xuICAgICAgaWYgKGdldHRlciAmJiBnZXR0ZXIuaXNSZWFjdFdhcm5pbmcpIHtcbiAgICAg
ICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gY29uZmlnLnJl
ZiAhPT0gdW5kZWZpbmVkO1xufVxuXG5mdW5jdGlvbiBoYXNWYWxpZEtleShjb25maWcpIHtcbiAg
aWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICBpZiAoaGFz
T3duUHJvcGVydHkuY2FsbChjb25maWcsICdrZXknKSkge1xuICAgICAgdmFyIGdldHRlciA9IE9i
amVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoY29uZmlnLCAna2V5JykuZ2V0O1xuICAgICAg
aWYgKGdldHRlciAmJiBnZXR0ZXIuaXNSZWFjdFdhcm5pbmcpIHtcbiAgICAgICAgcmV0dXJuIGZh
bHNlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gY29uZmlnLmtleSAhPT0gdW5kZWZp
bmVkO1xufVxuXG5mdW5jdGlvbiBkZWZpbmVLZXlQcm9wV2FybmluZ0dldHRlcihwcm9wcywgZGlz
cGxheU5hbWUpIHtcbiAgdmFyIHdhcm5BYm91dEFjY2Vzc2luZ0tleSA9IGZ1bmN0aW9uICgpIHtc
biAgICBpZiAoIXNwZWNpYWxQcm9wS2V5V2FybmluZ1Nob3duKSB7XG4gICAgICBzcGVjaWFsUHJv
cEtleVdhcm5pbmdTaG93biA9IHRydWU7XG4gICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0g
J3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJyVzOiBga2V5YCBpcyBub3QgYSBwcm9wLiBU
cnlpbmcgdG8gYWNjZXNzIGl0IHdpbGwgcmVzdWx0ICcgKyAnaW4gYHVuZGVmaW5lZGAgYmVpbmcg
cmV0dXJuZWQuIElmIHlvdSBuZWVkIHRvIGFjY2VzcyB0aGUgc2FtZSAnICsgJ3ZhbHVlIHdpdGhp
biB0aGUgY2hpbGQgY29tcG9uZW50LCB5b3Ugc2hvdWxkIHBhc3MgaXQgYXMgYSBkaWZmZXJlbnQg
JyArICdwcm9wLiAoaHR0cHM6Ly9mYi5tZS9yZWFjdC1zcGVjaWFsLXByb3BzKScsIGRpc3BsYXlO
YW1lKSA6IHZvaWQgMDtcbiAgICB9XG4gIH07XG4gIHdhcm5BYm91dEFjY2Vzc2luZ0tleS5pc1Jl
YWN0V2FybmluZyA9IHRydWU7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwcm9wcywgJ2tleScs
IHtcbiAgICBnZXQ6IHdhcm5BYm91dEFjY2Vzc2luZ0tleSxcbiAgICBjb25maWd1cmFibGU6IHRy
dWVcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGRlZmluZVJlZlByb3BXYXJuaW5nR2V0dGVyKHByb3Bz
LCBkaXNwbGF5TmFtZSkge1xuICB2YXIgd2FybkFib3V0QWNjZXNzaW5nUmVmID0gZnVuY3Rpb24g
KCkge1xuICAgIGlmICghc3BlY2lhbFByb3BSZWZXYXJuaW5nU2hvd24pIHtcbiAgICAgIHNwZWNp
YWxQcm9wUmVmV2FybmluZ1Nob3duID0gdHJ1ZTtcbiAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5W
ICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnJXM6IGByZWZgIGlzIG5vdCBhIHBy
b3AuIFRyeWluZyB0byBhY2Nlc3MgaXQgd2lsbCByZXN1bHQgJyArICdpbiBgdW5kZWZpbmVkYCBi
ZWluZyByZXR1cm5lZC4gSWYgeW91IG5lZWQgdG8gYWNjZXNzIHRoZSBzYW1lICcgKyAndmFsdWUg
d2l0aGluIHRoZSBjaGlsZCBjb21wb25lbnQsIHlvdSBzaG91bGQgcGFzcyBpdCBhcyBhIGRpZmZl
cmVudCAnICsgJ3Byb3AuIChodHRwczovL2ZiLm1lL3JlYWN0LXNwZWNpYWwtcHJvcHMpJywgZGlz
cGxheU5hbWUpIDogdm9pZCAwO1xuICAgIH1cbiAgfTtcbiAgd2FybkFib3V0QWNjZXNzaW5nUmVm
LmlzUmVhY3RXYXJuaW5nID0gdHJ1ZTtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHByb3BzLCAn
cmVmJywge1xuICAgIGdldDogd2FybkFib3V0QWNjZXNzaW5nUmVmLFxuICAgIGNvbmZpZ3VyYWJs
ZTogdHJ1ZVxuICB9KTtcbn1cblxuLyoqXG4gKiBGYWN0b3J5IG1ldGhvZCB0byBjcmVhdGUgYSBu
ZXcgUmVhY3QgZWxlbWVudC4gVGhpcyBubyBsb25nZXIgYWRoZXJlcyB0b1xuICogdGhlIGNsYXNz
IHBhdHRlcm4sIHNvIGRvIG5vdCB1c2UgbmV3IHRvIGNhbGwgaXQuIEFsc28sIG5vIGluc3RhbmNl
b2YgY2hlY2tcbiAqIHdpbGwgd29yay4gSW5zdGVhZCB0ZXN0ICQkdHlwZW9mIGZpZWxkIGFnYWlu
c3QgU3ltYm9sLmZvcigncmVhY3QuZWxlbWVudCcpIHRvIGNoZWNrXG4gKiBpZiBzb21ldGhpbmcg
aXMgYSBSZWFjdCBFbGVtZW50LlxuICpcbiAqIEBwYXJhbSB7Kn0gdHlwZVxuICogQHBhcmFtIHsq
fSBrZXlcbiAqIEBwYXJhbSB7c3RyaW5nfG9iamVjdH0gcmVmXG4gKiBAcGFyYW0geyp9IHNlbGYg
QSAqdGVtcG9yYXJ5KiBoZWxwZXIgdG8gZGV0ZWN0IHBsYWNlcyB3aGVyZSBgdGhpc2AgaXNcbiAq
IGRpZmZlcmVudCBmcm9tIHRoZSBgb3duZXJgIHdoZW4gUmVhY3QuY3JlYXRlRWxlbWVudCBpcyBj
YWxsZWQsIHNvIHRoYXQgd2VcbiAqIGNhbiB3YXJuLiBXZSB3YW50IHRvIGdldCByaWQgb2Ygb3du
ZXIgYW5kIHJlcGxhY2Ugc3RyaW5nIGByZWZgcyB3aXRoIGFycm93XG4gKiBmdW5jdGlvbnMsIGFu
ZCBhcyBsb25nIGFzIGB0aGlzYCBhbmQgb3duZXIgYXJlIHRoZSBzYW1lLCB0aGVyZSB3aWxsIGJl
IG5vXG4gKiBjaGFuZ2UgaW4gYmVoYXZpb3IuXG4gKiBAcGFyYW0geyp9IHNvdXJjZSBBbiBhbm5v
dGF0aW9uIG9iamVjdCAoYWRkZWQgYnkgYSB0cmFuc3BpbGVyIG9yIG90aGVyd2lzZSlcbiAqIGlu
ZGljYXRpbmcgZmlsZW5hbWUsIGxpbmUgbnVtYmVyLCBhbmQvb3Igb3RoZXIgaW5mb3JtYXRpb24u
XG4gKiBAcGFyYW0geyp9IG93bmVyXG4gKiBAcGFyYW0geyp9IHByb3BzXG4gKiBAaW50ZXJuYWxc
biAqL1xudmFyIFJlYWN0RWxlbWVudCA9IGZ1bmN0aW9uICh0eXBlLCBrZXksIHJlZiwgc2VsZiwg
c291cmNlLCBvd25lciwgcHJvcHMpIHtcbiAgdmFyIGVsZW1lbnQgPSB7XG4gICAgLy8gVGhpcyB0
YWcgYWxsb3cgdXMgdG8gdW5pcXVlbHkgaWRlbnRpZnkgdGhpcyBhcyBhIFJlYWN0IEVsZW1lbnRc
biAgICAkJHR5cGVvZjogUkVBQ1RfRUxFTUVOVF9UWVBFLFxuXG4gICAgLy8gQnVpbHQtaW4gcHJv
cGVydGllcyB0aGF0IGJlbG9uZyBvbiB0aGUgZWxlbWVudFxuICAgIHR5cGU6IHR5cGUsXG4gICAg
a2V5OiBrZXksXG4gICAgcmVmOiByZWYsXG4gICAgcHJvcHM6IHByb3BzLFxuXG4gICAgLy8gUmVj
b3JkIHRoZSBjb21wb25lbnQgcmVzcG9uc2libGUgZm9yIGNyZWF0aW5nIHRoaXMgZWxlbWVudC5c
biAgICBfb3duZXI6IG93bmVyXG4gIH07XG5cbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9
PSAncHJvZHVjdGlvbicpIHtcbiAgICAvLyBUaGUgdmFsaWRhdGlvbiBmbGFnIGlzIGN1cnJlbnRs
eSBtdXRhdGl2ZS4gV2UgcHV0IGl0IG9uXG4gICAgLy8gYW4gZXh0ZXJuYWwgYmFja2luZyBzdG9y
ZSBzbyB0aGF0IHdlIGNhbiBmcmVlemUgdGhlIHdob2xlIG9iamVjdC5cbiAgICAvLyBUaGlzIGNh
biBiZSByZXBsYWNlZCB3aXRoIGEgV2Vha01hcCBvbmNlIHRoZXkgYXJlIGltcGxlbWVudGVkIGlu
XG4gICAgLy8gY29tbW9ubHkgdXNlZCBkZXZlbG9wbWVudCBlbnZpcm9ubWVudHMuXG4gICAgZWxl
bWVudC5fc3RvcmUgPSB7fTtcblxuICAgIC8vIFRvIG1ha2UgY29tcGFyaW5nIFJlYWN0RWxlbWVu
dHMgZWFzaWVyIGZvciB0ZXN0aW5nIHB1cnBvc2VzLCB3ZSBtYWtlXG4gICAgLy8gdGhlIHZhbGlk
YXRpb24gZmxhZyBub24tZW51bWVyYWJsZSAod2hlcmUgcG9zc2libGUsIHdoaWNoIHNob3VsZFxu
ICAgIC8vIGluY2x1ZGUgZXZlcnkgZW52aXJvbm1lbnQgd2UgcnVuIHRlc3RzIGluKSwgc28gdGhl
IHRlc3QgZnJhbWV3b3JrXG4gICAgLy8gaWdub3JlcyBpdC5cbiAgICBpZiAoY2FuRGVmaW5lUHJv
cGVydHkpIHtcbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlbGVtZW50Ll9zdG9yZSwgJ3Zh
bGlkYXRlZCcsIHtcbiAgICAgICAgY29uZmlndXJhYmxlOiBmYWxzZSxcbiAgICAgICAgZW51bWVy
YWJsZTogZmFsc2UsXG4gICAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgICB2YWx1ZTogZmFs
c2VcbiAgICAgIH0pO1xuICAgICAgLy8gc2VsZiBhbmQgc291cmNlIGFyZSBERVYgb25seSBwcm9w
ZXJ0aWVzLlxuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGVsZW1lbnQsICdfc2VsZicsIHtc
biAgICAgICAgY29uZmlndXJhYmxlOiBmYWxzZSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2Us
XG4gICAgICAgIHdyaXRhYmxlOiBmYWxzZSxcbiAgICAgICAgdmFsdWU6IHNlbGZcbiAgICAgIH0p
O1xuICAgICAgLy8gVHdvIGVsZW1lbnRzIGNyZWF0ZWQgaW4gdHdvIGRpZmZlcmVudCBwbGFjZXMg
c2hvdWxkIGJlIGNvbnNpZGVyZWRcbiAgICAgIC8vIGVxdWFsIGZvciB0ZXN0aW5nIHB1cnBvc2Vz
IGFuZCB0aGVyZWZvcmUgd2UgaGlkZSBpdCBmcm9tIGVudW1lcmF0aW9uLlxuICAgICAgT2JqZWN0
LmRlZmluZVByb3BlcnR5KGVsZW1lbnQsICdfc291cmNlJywge1xuICAgICAgICBjb25maWd1cmFi
bGU6IGZhbHNlLFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgd3JpdGFibGU6
IGZhbHNlLFxuICAgICAgICB2YWx1ZTogc291cmNlXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xu
ICAgICAgZWxlbWVudC5fc3RvcmUudmFsaWRhdGVkID0gZmFsc2U7XG4gICAgICBlbGVtZW50Ll9z
ZWxmID0gc2VsZjtcbiAgICAgIGVsZW1lbnQuX3NvdXJjZSA9IHNvdXJjZTtcbiAgICB9XG4gICAg
aWYgKE9iamVjdC5mcmVlemUpIHtcbiAgICAgIE9iamVjdC5mcmVlemUoZWxlbWVudC5wcm9wcyk7
XG4gICAgICBPYmplY3QuZnJlZXplKGVsZW1lbnQpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBl
bGVtZW50O1xufTtcblxuLyoqXG4gKiBDcmVhdGUgYW5kIHJldHVybiBhIG5ldyBSZWFjdEVsZW1l
bnQgb2YgdGhlIGdpdmVuIHR5cGUuXG4gKiBTZWUgaHR0cHM6Ly9mYWNlYm9vay5naXRodWIuaW8v
cmVhY3QvZG9jcy90b3AtbGV2ZWwtYXBpLmh0bWwjcmVhY3QuY3JlYXRlZWxlbWVudFxuICovXG5S
ZWFjdEVsZW1lbnQuY3JlYXRlRWxlbWVudCA9IGZ1bmN0aW9uICh0eXBlLCBjb25maWcsIGNoaWxk
cmVuKSB7XG4gIHZhciBwcm9wTmFtZTtcblxuICAvLyBSZXNlcnZlZCBuYW1lcyBhcmUgZXh0cmFj
dGVkXG4gIHZhciBwcm9wcyA9IHt9O1xuXG4gIHZhciBrZXkgPSBudWxsO1xuICB2YXIgcmVmID0g
bnVsbDtcbiAgdmFyIHNlbGYgPSBudWxsO1xuICB2YXIgc291cmNlID0gbnVsbDtcblxuICBpZiAo
Y29uZmlnICE9IG51bGwpIHtcbiAgICBpZiAoaGFzVmFsaWRSZWYoY29uZmlnKSkge1xuICAgICAg
cmVmID0gY29uZmlnLnJlZjtcbiAgICB9XG4gICAgaWYgKGhhc1ZhbGlkS2V5KGNvbmZpZykpIHtc
biAgICAgIGtleSA9ICcnICsgY29uZmlnLmtleTtcbiAgICB9XG5cbiAgICBzZWxmID0gY29uZmln
Ll9fc2VsZiA9PT0gdW5kZWZpbmVkID8gbnVsbCA6IGNvbmZpZy5fX3NlbGY7XG4gICAgc291cmNl
ID0gY29uZmlnLl9fc291cmNlID09PSB1bmRlZmluZWQgPyBudWxsIDogY29uZmlnLl9fc291cmNl
O1xuICAgIC8vIFJlbWFpbmluZyBwcm9wZXJ0aWVzIGFyZSBhZGRlZCB0byBhIG5ldyBwcm9wcyBv
YmplY3RcbiAgICBmb3IgKHByb3BOYW1lIGluIGNvbmZpZykge1xuICAgICAgaWYgKGhhc093blBy
b3BlcnR5LmNhbGwoY29uZmlnLCBwcm9wTmFtZSkgJiYgIVJFU0VSVkVEX1BST1BTLmhhc093blBy
b3BlcnR5KHByb3BOYW1lKSkge1xuICAgICAgICBwcm9wc1twcm9wTmFtZV0gPSBjb25maWdbcHJv
cE5hbWVdO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIENoaWxkcmVuIGNhbiBiZSBtb3Jl
IHRoYW4gb25lIGFyZ3VtZW50LCBhbmQgdGhvc2UgYXJlIHRyYW5zZmVycmVkIG9udG9cbiAgLy8g
dGhlIG5ld2x5IGFsbG9jYXRlZCBwcm9wcyBvYmplY3QuXG4gIHZhciBjaGlsZHJlbkxlbmd0aCA9
IGFyZ3VtZW50cy5sZW5ndGggLSAyO1xuICBpZiAoY2hpbGRyZW5MZW5ndGggPT09IDEpIHtcbiAg
ICBwcm9wcy5jaGlsZHJlbiA9IGNoaWxkcmVuO1xuICB9IGVsc2UgaWYgKGNoaWxkcmVuTGVuZ3Ro
ID4gMSkge1xuICAgIHZhciBjaGlsZEFycmF5ID0gQXJyYXkoY2hpbGRyZW5MZW5ndGgpO1xuICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgY2hpbGRyZW5MZW5ndGg7IGkrKykge1xuICAgICAgY2hpbGRB
cnJheVtpXSA9IGFyZ3VtZW50c1tpICsgMl07XG4gICAgfVxuICAgIGlmIChwcm9jZXNzLmVudi5O
T0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICBpZiAoT2JqZWN0LmZyZWV6ZSkge1xu
ICAgICAgICBPYmplY3QuZnJlZXplKGNoaWxkQXJyYXkpO1xuICAgICAgfVxuICAgIH1cbiAgICBw
cm9wcy5jaGlsZHJlbiA9IGNoaWxkQXJyYXk7XG4gIH1cblxuICAvLyBSZXNvbHZlIGRlZmF1bHQg
cHJvcHNcbiAgaWYgKHR5cGUgJiYgdHlwZS5kZWZhdWx0UHJvcHMpIHtcbiAgICB2YXIgZGVmYXVs
dFByb3BzID0gdHlwZS5kZWZhdWx0UHJvcHM7XG4gICAgZm9yIChwcm9wTmFtZSBpbiBkZWZhdWx0
UHJvcHMpIHtcbiAgICAgIGlmIChwcm9wc1twcm9wTmFtZV0gPT09IHVuZGVmaW5lZCkge1xuICAg
ICAgICBwcm9wc1twcm9wTmFtZV0gPSBkZWZhdWx0UHJvcHNbcHJvcE5hbWVdO1xuICAgICAgfVxu
ICAgIH1cbiAgfVxuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykg
e1xuICAgIGlmIChrZXkgfHwgcmVmKSB7XG4gICAgICBpZiAodHlwZW9mIHByb3BzLiQkdHlwZW9m
ID09PSAndW5kZWZpbmVkJyB8fCBwcm9wcy4kJHR5cGVvZiAhPT0gUkVBQ1RfRUxFTUVOVF9UWVBF
KSB7XG4gICAgICAgIHZhciBkaXNwbGF5TmFtZSA9IHR5cGVvZiB0eXBlID09PSAnZnVuY3Rpb24n
ID8gdHlwZS5kaXNwbGF5TmFtZSB8fCB0eXBlLm5hbWUgfHwgJ1Vua25vd24nIDogdHlwZTtcbiAg
ICAgICAgaWYgKGtleSkge1xuICAgICAgICAgIGRlZmluZUtleVByb3BXYXJuaW5nR2V0dGVyKHBy
b3BzLCBkaXNwbGF5TmFtZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHJlZikge1xuICAgICAg
ICAgIGRlZmluZVJlZlByb3BXYXJuaW5nR2V0dGVyKHByb3BzLCBkaXNwbGF5TmFtZSk7XG4gICAg
ICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIFJlYWN0RWxlbWVudCh0eXBlLCBr
ZXksIHJlZiwgc2VsZiwgc291cmNlLCBSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50LCBwcm9wcyk7
XG59O1xuXG4vKipcbiAqIFJldHVybiBhIGZ1bmN0aW9uIHRoYXQgcHJvZHVjZXMgUmVhY3RFbGVt
ZW50cyBvZiBhIGdpdmVuIHR5cGUuXG4gKiBTZWUgaHR0cHM6Ly9mYWNlYm9vay5naXRodWIuaW8v
cmVhY3QvZG9jcy90b3AtbGV2ZWwtYXBpLmh0bWwjcmVhY3QuY3JlYXRlZmFjdG9yeVxuICovXG5S
ZWFjdEVsZW1lbnQuY3JlYXRlRmFjdG9yeSA9IGZ1bmN0aW9uICh0eXBlKSB7XG4gIHZhciBmYWN0
b3J5ID0gUmVhY3RFbGVtZW50LmNyZWF0ZUVsZW1lbnQuYmluZChudWxsLCB0eXBlKTtcbiAgLy8g
RXhwb3NlIHRoZSB0eXBlIG9uIHRoZSBmYWN0b3J5IGFuZCB0aGUgcHJvdG90eXBlIHNvIHRoYXQg
aXQgY2FuIGJlXG4gIC8vIGVhc2lseSBhY2Nlc3NlZCBvbiBlbGVtZW50cy4gRS5nLiBgPEZvbyAv
Pi50eXBlID09PSBGb29gLlxuICAvLyBUaGlzIHNob3VsZCBub3QgYmUgbmFtZWQgYGNvbnN0cnVj
dG9yYCBzaW5jZSB0aGlzIG1heSBub3QgYmUgdGhlIGZ1bmN0aW9uXG4gIC8vIHRoYXQgY3JlYXRl
ZCB0aGUgZWxlbWVudCwgYW5kIGl0IG1heSBub3QgZXZlbiBiZSBhIGNvbnN0cnVjdG9yLlxuICAv
LyBMZWdhY3kgaG9vayBUT0RPOiBXYXJuIGlmIHRoaXMgaXMgYWNjZXNzZWRcbiAgZmFjdG9yeS50
eXBlID0gdHlwZTtcbiAgcmV0dXJuIGZhY3Rvcnk7XG59O1xuXG5SZWFjdEVsZW1lbnQuY2xvbmVB
bmRSZXBsYWNlS2V5ID0gZnVuY3Rpb24gKG9sZEVsZW1lbnQsIG5ld0tleSkge1xuICB2YXIgbmV3
RWxlbWVudCA9IFJlYWN0RWxlbWVudChvbGRFbGVtZW50LnR5cGUsIG5ld0tleSwgb2xkRWxlbWVu
dC5yZWYsIG9sZEVsZW1lbnQuX3NlbGYsIG9sZEVsZW1lbnQuX3NvdXJjZSwgb2xkRWxlbWVudC5f
b3duZXIsIG9sZEVsZW1lbnQucHJvcHMpO1xuXG4gIHJldHVybiBuZXdFbGVtZW50O1xufTtcblxu
LyoqXG4gKiBDbG9uZSBhbmQgcmV0dXJuIGEgbmV3IFJlYWN0RWxlbWVudCB1c2luZyBlbGVtZW50
IGFzIHRoZSBzdGFydGluZyBwb2ludC5cbiAqIFNlZSBodHRwczovL2ZhY2Vib29rLmdpdGh1Yi5p
by9yZWFjdC9kb2NzL3RvcC1sZXZlbC1hcGkuaHRtbCNyZWFjdC5jbG9uZWVsZW1lbnRcbiAqL1xu
UmVhY3RFbGVtZW50LmNsb25lRWxlbWVudCA9IGZ1bmN0aW9uIChlbGVtZW50LCBjb25maWcsIGNo
aWxkcmVuKSB7XG4gIHZhciBwcm9wTmFtZTtcblxuICAvLyBPcmlnaW5hbCBwcm9wcyBhcmUgY29w
aWVkXG4gIHZhciBwcm9wcyA9IF9hc3NpZ24oe30sIGVsZW1lbnQucHJvcHMpO1xuXG4gIC8vIFJl
c2VydmVkIG5hbWVzIGFyZSBleHRyYWN0ZWRcbiAgdmFyIGtleSA9IGVsZW1lbnQua2V5O1xuICB2
YXIgcmVmID0gZWxlbWVudC5yZWY7XG4gIC8vIFNlbGYgaXMgcHJlc2VydmVkIHNpbmNlIHRoZSBv
d25lciBpcyBwcmVzZXJ2ZWQuXG4gIHZhciBzZWxmID0gZWxlbWVudC5fc2VsZjtcbiAgLy8gU291
cmNlIGlzIHByZXNlcnZlZCBzaW5jZSBjbG9uZUVsZW1lbnQgaXMgdW5saWtlbHkgdG8gYmUgdGFy
Z2V0ZWQgYnkgYVxuICAvLyB0cmFuc3BpbGVyLCBhbmQgdGhlIG9yaWdpbmFsIHNvdXJjZSBpcyBw
cm9iYWJseSBhIGJldHRlciBpbmRpY2F0b3Igb2YgdGhlXG4gIC8vIHRydWUgb3duZXIuXG4gIHZh
ciBzb3VyY2UgPSBlbGVtZW50Ll9zb3VyY2U7XG5cbiAgLy8gT3duZXIgd2lsbCBiZSBwcmVzZXJ2
ZWQsIHVubGVzcyByZWYgaXMgb3ZlcnJpZGRlblxuICB2YXIgb3duZXIgPSBlbGVtZW50Ll9vd25l
cjtcblxuICBpZiAoY29uZmlnICE9IG51bGwpIHtcbiAgICBpZiAoaGFzVmFsaWRSZWYoY29uZmln
KSkge1xuICAgICAgLy8gU2lsZW50bHkgc3RlYWwgdGhlIHJlZiBmcm9tIHRoZSBwYXJlbnQuXG4g
ICAgICByZWYgPSBjb25maWcucmVmO1xuICAgICAgb3duZXIgPSBSZWFjdEN1cnJlbnRPd25lci5j
dXJyZW50O1xuICAgIH1cbiAgICBpZiAoaGFzVmFsaWRLZXkoY29uZmlnKSkge1xuICAgICAga2V5
ID0gJycgKyBjb25maWcua2V5O1xuICAgIH1cblxuICAgIC8vIFJlbWFpbmluZyBwcm9wZXJ0aWVz
IG92ZXJyaWRlIGV4aXN0aW5nIHByb3BzXG4gICAgdmFyIGRlZmF1bHRQcm9wcztcbiAgICBpZiAo
ZWxlbWVudC50eXBlICYmIGVsZW1lbnQudHlwZS5kZWZhdWx0UHJvcHMpIHtcbiAgICAgIGRlZmF1
bHRQcm9wcyA9IGVsZW1lbnQudHlwZS5kZWZhdWx0UHJvcHM7XG4gICAgfVxuICAgIGZvciAocHJv
cE5hbWUgaW4gY29uZmlnKSB7XG4gICAgICBpZiAoaGFzT3duUHJvcGVydHkuY2FsbChjb25maWcs
IHByb3BOYW1lKSAmJiAhUkVTRVJWRURfUFJPUFMuaGFzT3duUHJvcGVydHkocHJvcE5hbWUpKSB7
XG4gICAgICAgIGlmIChjb25maWdbcHJvcE5hbWVdID09PSB1bmRlZmluZWQgJiYgZGVmYXVsdFBy
b3BzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAvLyBSZXNvbHZlIGRlZmF1bHQgcHJvcHNc
biAgICAgICAgICBwcm9wc1twcm9wTmFtZV0gPSBkZWZhdWx0UHJvcHNbcHJvcE5hbWVdO1xuICAg
ICAgICB9IGVsc2Uge1xuICAgICAgICAgIHByb3BzW3Byb3BOYW1lXSA9IGNvbmZpZ1twcm9wTmFt
ZV07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBDaGlsZHJlbiBjYW4g
YmUgbW9yZSB0aGFuIG9uZSBhcmd1bWVudCwgYW5kIHRob3NlIGFyZSB0cmFuc2ZlcnJlZCBvbnRv
XG4gIC8vIHRoZSBuZXdseSBhbGxvY2F0ZWQgcHJvcHMgb2JqZWN0LlxuICB2YXIgY2hpbGRyZW5M
ZW5ndGggPSBhcmd1bWVudHMubGVuZ3RoIC0gMjtcbiAgaWYgKGNoaWxkcmVuTGVuZ3RoID09PSAx
KSB7XG4gICAgcHJvcHMuY2hpbGRyZW4gPSBjaGlsZHJlbjtcbiAgfSBlbHNlIGlmIChjaGlsZHJl
bkxlbmd0aCA+IDEpIHtcbiAgICB2YXIgY2hpbGRBcnJheSA9IEFycmF5KGNoaWxkcmVuTGVuZ3Ro
KTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNoaWxkcmVuTGVuZ3RoOyBpKyspIHtcbiAgICAg
IGNoaWxkQXJyYXlbaV0gPSBhcmd1bWVudHNbaSArIDJdO1xuICAgIH1cbiAgICBwcm9wcy5jaGls
ZHJlbiA9IGNoaWxkQXJyYXk7XG4gIH1cblxuICByZXR1cm4gUmVhY3RFbGVtZW50KGVsZW1lbnQu
dHlwZSwga2V5LCByZWYsIHNlbGYsIHNvdXJjZSwgb3duZXIsIHByb3BzKTtcbn07XG5cbi8qKlxu
ICogVmVyaWZpZXMgdGhlIG9iamVjdCBpcyBhIFJlYWN0RWxlbWVudC5cbiAqIFNlZSBodHRwczov
L2ZhY2Vib29rLmdpdGh1Yi5pby9yZWFjdC9kb2NzL3RvcC1sZXZlbC1hcGkuaHRtbCNyZWFjdC5p
c3ZhbGlkZWxlbWVudFxuICogQHBhcmFtIHs/b2JqZWN0fSBvYmplY3RcbiAqIEByZXR1cm4ge2Jv
b2xlYW59IFRydWUgaWYgYG9iamVjdGAgaXMgYSB2YWxpZCBjb21wb25lbnQuXG4gKiBAZmluYWxc
biAqL1xuUmVhY3RFbGVtZW50LmlzVmFsaWRFbGVtZW50ID0gZnVuY3Rpb24gKG9iamVjdCkge1xu
ICByZXR1cm4gdHlwZW9mIG9iamVjdCA9PT0gJ29iamVjdCcgJiYgb2JqZWN0ICE9PSBudWxsICYm
IG9iamVjdC4kJHR5cGVvZiA9PT0gUkVBQ1RfRUxFTUVOVF9UWVBFO1xufTtcblxubW9kdWxlLmV4
cG9ydHMgPSBSZWFjdEVsZW1lbnQ7XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFD
SyBGT09URVJcbiAqKiAuL34vcmVhY3QvbGliL1JlYWN0RWxlbWVudC5qc1xuICoqIG1vZHVsZSBp
ZCA9IDE4XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENvcHlyaWdodCAy
MDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpc
biAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNl
bnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBv
ZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmln
aHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9y
eS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgX3Byb2RJbnZhcmlhbnQgPSByZXF1
aXJlKCcuL3JlYWN0UHJvZEludmFyaWFudCcpO1xuXG52YXIgRXZlbnRQbHVnaW5SZWdpc3RyeSA9
IHJlcXVpcmUoJy4vRXZlbnRQbHVnaW5SZWdpc3RyeScpO1xudmFyIEV2ZW50UGx1Z2luVXRpbHMg
PSByZXF1aXJlKCcuL0V2ZW50UGx1Z2luVXRpbHMnKTtcbnZhciBSZWFjdEVycm9yVXRpbHMgPSBy
ZXF1aXJlKCcuL1JlYWN0RXJyb3JVdGlscycpO1xuXG52YXIgYWNjdW11bGF0ZUludG8gPSByZXF1
aXJlKCcuL2FjY3VtdWxhdGVJbnRvJyk7XG52YXIgZm9yRWFjaEFjY3VtdWxhdGVkID0gcmVxdWly
ZSgnLi9mb3JFYWNoQWNjdW11bGF0ZWQnKTtcbnZhciBpbnZhcmlhbnQgPSByZXF1aXJlKCdmYmpz
L2xpYi9pbnZhcmlhbnQnKTtcblxuLyoqXG4gKiBJbnRlcm5hbCBzdG9yZSBmb3IgZXZlbnQgbGlz
dGVuZXJzXG4gKi9cbnZhciBsaXN0ZW5lckJhbmsgPSB7fTtcblxuLyoqXG4gKiBJbnRlcm5hbCBx
dWV1ZSBvZiBldmVudHMgdGhhdCBoYXZlIGFjY3VtdWxhdGVkIHRoZWlyIGRpc3BhdGNoZXMgYW5k
IGFyZVxuICogd2FpdGluZyB0byBoYXZlIHRoZWlyIGRpc3BhdGNoZXMgZXhlY3V0ZWQuXG4gKi9c
bnZhciBldmVudFF1ZXVlID0gbnVsbDtcblxuLyoqXG4gKiBEaXNwYXRjaGVzIGFuIGV2ZW50IGFu
ZCByZWxlYXNlcyBpdCBiYWNrIGludG8gdGhlIHBvb2wsIHVubGVzcyBwZXJzaXN0ZW50LlxuICpc
biAqIEBwYXJhbSB7P29iamVjdH0gZXZlbnQgU3ludGhldGljIGV2ZW50IHRvIGJlIGRpc3BhdGNo
ZWQuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IHNpbXVsYXRlZCBJZiB0aGUgZXZlbnQgaXMgc2ltdWxh
dGVkIChjaGFuZ2VzIGV4biBiZWhhdmlvcilcbiAqIEBwcml2YXRlXG4gKi9cbnZhciBleGVjdXRl
RGlzcGF0Y2hlc0FuZFJlbGVhc2UgPSBmdW5jdGlvbiAoZXZlbnQsIHNpbXVsYXRlZCkge1xuICBp
ZiAoZXZlbnQpIHtcbiAgICBFdmVudFBsdWdpblV0aWxzLmV4ZWN1dGVEaXNwYXRjaGVzSW5PcmRl
cihldmVudCwgc2ltdWxhdGVkKTtcblxuICAgIGlmICghZXZlbnQuaXNQZXJzaXN0ZW50KCkpIHtc
biAgICAgIGV2ZW50LmNvbnN0cnVjdG9yLnJlbGVhc2UoZXZlbnQpO1xuICAgIH1cbiAgfVxufTtc
bnZhciBleGVjdXRlRGlzcGF0Y2hlc0FuZFJlbGVhc2VTaW11bGF0ZWQgPSBmdW5jdGlvbiAoZSkg
e1xuICByZXR1cm4gZXhlY3V0ZURpc3BhdGNoZXNBbmRSZWxlYXNlKGUsIHRydWUpO1xufTtcbnZh
ciBleGVjdXRlRGlzcGF0Y2hlc0FuZFJlbGVhc2VUb3BMZXZlbCA9IGZ1bmN0aW9uIChlKSB7XG4g
IHJldHVybiBleGVjdXRlRGlzcGF0Y2hlc0FuZFJlbGVhc2UoZSwgZmFsc2UpO1xufTtcblxudmFy
IGdldERpY3Rpb25hcnlLZXkgPSBmdW5jdGlvbiAoaW5zdCkge1xuICAvLyBQcmV2ZW50cyBWOCBw
ZXJmb3JtYW5jZSBpc3N1ZTpcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0
L3B1bGwvNzIzMlxuICByZXR1cm4gJy4nICsgaW5zdC5fcm9vdE5vZGVJRDtcbn07XG5cbmZ1bmN0
aW9uIGlzSW50ZXJhY3RpdmUodGFnKSB7XG4gIHJldHVybiB0YWcgPT09ICdidXR0b24nIHx8IHRh
ZyA9PT0gJ2lucHV0JyB8fCB0YWcgPT09ICdzZWxlY3QnIHx8IHRhZyA9PT0gJ3RleHRhcmVhJztc
bn1cblxuZnVuY3Rpb24gc2hvdWxkUHJldmVudE1vdXNlRXZlbnQobmFtZSwgdHlwZSwgcHJvcHMp
IHtcbiAgc3dpdGNoIChuYW1lKSB7XG4gICAgY2FzZSAnb25DbGljayc6XG4gICAgY2FzZSAnb25D
bGlja0NhcHR1cmUnOlxuICAgIGNhc2UgJ29uRG91YmxlQ2xpY2snOlxuICAgIGNhc2UgJ29uRG91
YmxlQ2xpY2tDYXB0dXJlJzpcbiAgICBjYXNlICdvbk1vdXNlRG93bic6XG4gICAgY2FzZSAnb25N
b3VzZURvd25DYXB0dXJlJzpcbiAgICBjYXNlICdvbk1vdXNlTW92ZSc6XG4gICAgY2FzZSAnb25N
b3VzZU1vdmVDYXB0dXJlJzpcbiAgICBjYXNlICdvbk1vdXNlVXAnOlxuICAgIGNhc2UgJ29uTW91
c2VVcENhcHR1cmUnOlxuICAgICAgcmV0dXJuICEhKHByb3BzLmRpc2FibGVkICYmIGlzSW50ZXJh
Y3RpdmUodHlwZSkpO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1c
blxuLyoqXG4gKiBUaGlzIGlzIGEgdW5pZmllZCBpbnRlcmZhY2UgZm9yIGV2ZW50IHBsdWdpbnMg
dG8gYmUgaW5zdGFsbGVkIGFuZCBjb25maWd1cmVkLlxuICpcbiAqIEV2ZW50IHBsdWdpbnMgY2Fu
IGltcGxlbWVudCB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XG4gKlxuICogICBgZXh0cmFjdEV2
ZW50c2Age2Z1bmN0aW9uKHN0cmluZywgRE9NRXZlbnRUYXJnZXQsIHN0cmluZywgb2JqZWN0KTog
Kn1cbiAqICAgICBSZXF1aXJlZC4gV2hlbiBhIHRvcC1sZXZlbCBldmVudCBpcyBmaXJlZCwgdGhp
cyBtZXRob2QgaXMgZXhwZWN0ZWQgdG9cbiAqICAgICBleHRyYWN0IHN5bnRoZXRpYyBldmVudHMg
dGhhdCB3aWxsIGluIHR1cm4gYmUgcXVldWVkIGFuZCBkaXNwYXRjaGVkLlxuICpcbiAqICAgYGV2
ZW50VHlwZXNgIHtvYmplY3R9XG4gKiAgICAgT3B0aW9uYWwsIHBsdWdpbnMgdGhhdCBmaXJlIGV2
ZW50cyBtdXN0IHB1Ymxpc2ggYSBtYXBwaW5nIG9mIHJlZ2lzdHJhdGlvblxuICogICAgIG5hbWVz
IHRoYXQgYXJlIHVzZWQgdG8gcmVnaXN0ZXIgbGlzdGVuZXJzLiBWYWx1ZXMgb2YgdGhpcyBtYXBw
aW5nIG11c3RcbiAqICAgICBiZSBvYmplY3RzIHRoYXQgY29udGFpbiBgcmVnaXN0cmF0aW9uTmFt
ZWAgb3IgYHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzYC5cbiAqXG4gKiAgIGBleGVjdXRlRGlzcGF0
Y2hgIHtmdW5jdGlvbihvYmplY3QsIGZ1bmN0aW9uLCBzdHJpbmcpfVxuICogICAgIE9wdGlvbmFs
LCBhbGxvd3MgcGx1Z2lucyB0byBvdmVycmlkZSBob3cgYW4gZXZlbnQgZ2V0cyBkaXNwYXRjaGVk
LiBCeVxuICogICAgIGRlZmF1bHQsIHRoZSBsaXN0ZW5lciBpcyBzaW1wbHkgaW52b2tlZC5cbiAq
XG4gKiBFYWNoIHBsdWdpbiB0aGF0IGlzIGluamVjdGVkIGludG8gYEV2ZW50c1BsdWdpbkh1YmAg
aXMgaW1tZWRpYXRlbHkgb3BlcmFibGUuXG4gKlxuICogQHB1YmxpY1xuICovXG52YXIgRXZlbnRQ
bHVnaW5IdWIgPSB7XG4gIC8qKlxuICAgKiBNZXRob2RzIGZvciBpbmplY3RpbmcgZGVwZW5kZW5j
aWVzLlxuICAgKi9cbiAgaW5qZWN0aW9uOiB7XG4gICAgLyoqXG4gICAgICogQHBhcmFtIHthcnJh
eX0gSW5qZWN0ZWRFdmVudFBsdWdpbk9yZGVyXG4gICAgICogQHB1YmxpY1xuICAgICAqL1xuICAg
IGluamVjdEV2ZW50UGx1Z2luT3JkZXI6IEV2ZW50UGx1Z2luUmVnaXN0cnkuaW5qZWN0RXZlbnRQ
bHVnaW5PcmRlcixcblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSB7b2JqZWN0fSBpbmplY3RlZE5h
bWVzVG9QbHVnaW5zIE1hcCBmcm9tIG5hbWVzIHRvIHBsdWdpbiBtb2R1bGVzLlxuICAgICAqL1xu
ICAgIGluamVjdEV2ZW50UGx1Z2luc0J5TmFtZTogRXZlbnRQbHVnaW5SZWdpc3RyeS5pbmplY3RF
dmVudFBsdWdpbnNCeU5hbWVcbiAgfSxcblxuICAvKipcbiAgICogU3RvcmVzIGBsaXN0ZW5lcmAg
YXQgYGxpc3RlbmVyQmFua1tyZWdpc3RyYXRpb25OYW1lXVtrZXldYC4gSXMgaWRlbXBvdGVudC5c
biAgICpcbiAgICogQHBhcmFtIHtvYmplY3R9IGluc3QgVGhlIGluc3RhbmNlLCB3aGljaCBpcyB0
aGUgc291cmNlIG9mIGV2ZW50cy5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHJlZ2lzdHJhdGlvbk5h
bWUgTmFtZSBvZiBsaXN0ZW5lciAoZS5nLiBgb25DbGlja2ApLlxuICAgKiBAcGFyYW0ge2Z1bmN0
aW9ufSBsaXN0ZW5lciBUaGUgY2FsbGJhY2sgdG8gc3RvcmUuXG4gICAqL1xuICBwdXRMaXN0ZW5l
cjogZnVuY3Rpb24gKGluc3QsIHJlZ2lzdHJhdGlvbk5hbWUsIGxpc3RlbmVyKSB7XG4gICAgISh0
eXBlb2YgbGlzdGVuZXIgPT09ICdmdW5jdGlvbicpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09
ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ0V4cGVjdGVkICVzIGxpc3RlbmVyIHRv
IGJlIGEgZnVuY3Rpb24sIGluc3RlYWQgZ290IHR5cGUgJXMnLCByZWdpc3RyYXRpb25OYW1lLCB0
eXBlb2YgbGlzdGVuZXIpIDogX3Byb2RJbnZhcmlhbnQoJzk0JywgcmVnaXN0cmF0aW9uTmFtZSwg
dHlwZW9mIGxpc3RlbmVyKSA6IHZvaWQgMDtcblxuICAgIHZhciBrZXkgPSBnZXREaWN0aW9uYXJ5
S2V5KGluc3QpO1xuICAgIHZhciBiYW5rRm9yUmVnaXN0cmF0aW9uTmFtZSA9IGxpc3RlbmVyQmFu
a1tyZWdpc3RyYXRpb25OYW1lXSB8fCAobGlzdGVuZXJCYW5rW3JlZ2lzdHJhdGlvbk5hbWVdID0g
e30pO1xuICAgIGJhbmtGb3JSZWdpc3RyYXRpb25OYW1lW2tleV0gPSBsaXN0ZW5lcjtcblxuICAg
IHZhciBQbHVnaW5Nb2R1bGUgPSBFdmVudFBsdWdpblJlZ2lzdHJ5LnJlZ2lzdHJhdGlvbk5hbWVN
b2R1bGVzW3JlZ2lzdHJhdGlvbk5hbWVdO1xuICAgIGlmIChQbHVnaW5Nb2R1bGUgJiYgUGx1Z2lu
TW9kdWxlLmRpZFB1dExpc3RlbmVyKSB7XG4gICAgICBQbHVnaW5Nb2R1bGUuZGlkUHV0TGlzdGVu
ZXIoaW5zdCwgcmVnaXN0cmF0aW9uTmFtZSwgbGlzdGVuZXIpO1xuICAgIH1cbiAgfSxcblxuICAv
KipcbiAgICogQHBhcmFtIHtvYmplY3R9IGluc3QgVGhlIGluc3RhbmNlLCB3aGljaCBpcyB0aGUg
c291cmNlIG9mIGV2ZW50cy5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHJlZ2lzdHJhdGlvbk5hbWUg
TmFtZSBvZiBsaXN0ZW5lciAoZS5nLiBgb25DbGlja2ApLlxuICAgKiBAcmV0dXJuIHs/ZnVuY3Rp
b259IFRoZSBzdG9yZWQgY2FsbGJhY2suXG4gICAqL1xuICBnZXRMaXN0ZW5lcjogZnVuY3Rpb24g
KGluc3QsIHJlZ2lzdHJhdGlvbk5hbWUpIHtcbiAgICAvLyBUT0RPOiBzaG91bGRQcmV2ZW50TW91
c2VFdmVudCBpcyBET00tc3BlY2lmaWMgYW5kIGRlZmluaXRlbHkgc2hvdWxkIG5vdFxuICAgIC8v
IGxpdmUgaGVyZTsgbmVlZHMgdG8gYmUgbW92ZWQgdG8gYSBiZXR0ZXIgcGxhY2Ugc29vblxuICAg
IHZhciBiYW5rRm9yUmVnaXN0cmF0aW9uTmFtZSA9IGxpc3RlbmVyQmFua1tyZWdpc3RyYXRpb25O
YW1lXTtcbiAgICBpZiAoc2hvdWxkUHJldmVudE1vdXNlRXZlbnQocmVnaXN0cmF0aW9uTmFtZSwg
aW5zdC5fY3VycmVudEVsZW1lbnQudHlwZSwgaW5zdC5fY3VycmVudEVsZW1lbnQucHJvcHMpKSB7
XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgdmFyIGtleSA9IGdldERpY3Rpb25hcnlL
ZXkoaW5zdCk7XG4gICAgcmV0dXJuIGJhbmtGb3JSZWdpc3RyYXRpb25OYW1lICYmIGJhbmtGb3JS
ZWdpc3RyYXRpb25OYW1lW2tleV07XG4gIH0sXG5cbiAgLyoqXG4gICAqIERlbGV0ZXMgYSBsaXN0
ZW5lciBmcm9tIHRoZSByZWdpc3RyYXRpb24gYmFuay5cbiAgICpcbiAgICogQHBhcmFtIHtvYmpl
Y3R9IGluc3QgVGhlIGluc3RhbmNlLCB3aGljaCBpcyB0aGUgc291cmNlIG9mIGV2ZW50cy5cbiAg
ICogQHBhcmFtIHtzdHJpbmd9IHJlZ2lzdHJhdGlvbk5hbWUgTmFtZSBvZiBsaXN0ZW5lciAoZS5n
LiBgb25DbGlja2ApLlxuICAgKi9cbiAgZGVsZXRlTGlzdGVuZXI6IGZ1bmN0aW9uIChpbnN0LCBy
ZWdpc3RyYXRpb25OYW1lKSB7XG4gICAgdmFyIFBsdWdpbk1vZHVsZSA9IEV2ZW50UGx1Z2luUmVn
aXN0cnkucmVnaXN0cmF0aW9uTmFtZU1vZHVsZXNbcmVnaXN0cmF0aW9uTmFtZV07XG4gICAgaWYg
KFBsdWdpbk1vZHVsZSAmJiBQbHVnaW5Nb2R1bGUud2lsbERlbGV0ZUxpc3RlbmVyKSB7XG4gICAg
ICBQbHVnaW5Nb2R1bGUud2lsbERlbGV0ZUxpc3RlbmVyKGluc3QsIHJlZ2lzdHJhdGlvbk5hbWUp
O1xuICAgIH1cblxuICAgIHZhciBiYW5rRm9yUmVnaXN0cmF0aW9uTmFtZSA9IGxpc3RlbmVyQmFu
a1tyZWdpc3RyYXRpb25OYW1lXTtcbiAgICAvLyBUT0RPOiBUaGlzIHNob3VsZCBuZXZlciBiZSBu
dWxsIC0tIHdoZW4gaXMgaXQ/XG4gICAgaWYgKGJhbmtGb3JSZWdpc3RyYXRpb25OYW1lKSB7XG4g
ICAgICB2YXIga2V5ID0gZ2V0RGljdGlvbmFyeUtleShpbnN0KTtcbiAgICAgIGRlbGV0ZSBiYW5r
Rm9yUmVnaXN0cmF0aW9uTmFtZVtrZXldO1xuICAgIH1cbiAgfSxcblxuICAvKipcbiAgICogRGVs
ZXRlcyBhbGwgbGlzdGVuZXJzIGZvciB0aGUgRE9NIGVsZW1lbnQgd2l0aCB0aGUgc3VwcGxpZWQg
SUQuXG4gICAqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBpbnN0IFRoZSBpbnN0YW5jZSwgd2hpY2gg
aXMgdGhlIHNvdXJjZSBvZiBldmVudHMuXG4gICAqL1xuICBkZWxldGVBbGxMaXN0ZW5lcnM6IGZ1
bmN0aW9uIChpbnN0KSB7XG4gICAgdmFyIGtleSA9IGdldERpY3Rpb25hcnlLZXkoaW5zdCk7XG4g
ICAgZm9yICh2YXIgcmVnaXN0cmF0aW9uTmFtZSBpbiBsaXN0ZW5lckJhbmspIHtcbiAgICAgIGlm
ICghbGlzdGVuZXJCYW5rLmhhc093blByb3BlcnR5KHJlZ2lzdHJhdGlvbk5hbWUpKSB7XG4gICAg
ICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAoIWxpc3RlbmVyQmFua1tyZWdpc3Ry
YXRpb25OYW1lXVtrZXldKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICB2
YXIgUGx1Z2luTW9kdWxlID0gRXZlbnRQbHVnaW5SZWdpc3RyeS5yZWdpc3RyYXRpb25OYW1lTW9k
dWxlc1tyZWdpc3RyYXRpb25OYW1lXTtcbiAgICAgIGlmIChQbHVnaW5Nb2R1bGUgJiYgUGx1Z2lu
TW9kdWxlLndpbGxEZWxldGVMaXN0ZW5lcikge1xuICAgICAgICBQbHVnaW5Nb2R1bGUud2lsbERl
bGV0ZUxpc3RlbmVyKGluc3QsIHJlZ2lzdHJhdGlvbk5hbWUpO1xuICAgICAgfVxuXG4gICAgICBk
ZWxldGUgbGlzdGVuZXJCYW5rW3JlZ2lzdHJhdGlvbk5hbWVdW2tleV07XG4gICAgfVxuICB9LFxu
XG4gIC8qKlxuICAgKiBBbGxvd3MgcmVnaXN0ZXJlZCBwbHVnaW5zIGFuIG9wcG9ydHVuaXR5IHRv
IGV4dHJhY3QgZXZlbnRzIGZyb20gdG9wLWxldmVsXG4gICAqIG5hdGl2ZSBicm93c2VyIGV2ZW50
cy5cbiAgICpcbiAgICogQHJldHVybiB7Kn0gQW4gYWNjdW11bGF0aW9uIG9mIHN5bnRoZXRpYyBl
dmVudHMuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgZXh0cmFjdEV2ZW50czogZnVuY3Rpb24g
KHRvcExldmVsVHlwZSwgdGFyZ2V0SW5zdCwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0
KSB7XG4gICAgdmFyIGV2ZW50cztcbiAgICB2YXIgcGx1Z2lucyA9IEV2ZW50UGx1Z2luUmVnaXN0
cnkucGx1Z2lucztcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBsdWdpbnMubGVuZ3RoOyBpKysp
IHtcbiAgICAgIC8vIE5vdCBldmVyeSBwbHVnaW4gaW4gdGhlIG9yZGVyaW5nIG1heSBiZSBsb2Fk
ZWQgYXQgcnVudGltZS5cbiAgICAgIHZhciBwb3NzaWJsZVBsdWdpbiA9IHBsdWdpbnNbaV07XG4g
ICAgICBpZiAocG9zc2libGVQbHVnaW4pIHtcbiAgICAgICAgdmFyIGV4dHJhY3RlZEV2ZW50cyA9
IHBvc3NpYmxlUGx1Z2luLmV4dHJhY3RFdmVudHModG9wTGV2ZWxUeXBlLCB0YXJnZXRJbnN0LCBu
YXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpO1xuICAgICAgICBpZiAoZXh0cmFjdGVkRXZl
bnRzKSB7XG4gICAgICAgICAgZXZlbnRzID0gYWNjdW11bGF0ZUludG8oZXZlbnRzLCBleHRyYWN0
ZWRFdmVudHMpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBldmVudHM7
XG4gIH0sXG5cbiAgLyoqXG4gICAqIEVucXVldWVzIGEgc3ludGhldGljIGV2ZW50IHRoYXQgc2hv
dWxkIGJlIGRpc3BhdGNoZWQgd2hlblxuICAgKiBgcHJvY2Vzc0V2ZW50UXVldWVgIGlzIGludm9r
ZWQuXG4gICAqXG4gICAqIEBwYXJhbSB7Kn0gZXZlbnRzIEFuIGFjY3VtdWxhdGlvbiBvZiBzeW50
aGV0aWMgZXZlbnRzLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIGVucXVldWVFdmVudHM6IGZ1
bmN0aW9uIChldmVudHMpIHtcbiAgICBpZiAoZXZlbnRzKSB7XG4gICAgICBldmVudFF1ZXVlID0g
YWNjdW11bGF0ZUludG8oZXZlbnRRdWV1ZSwgZXZlbnRzKTtcbiAgICB9XG4gIH0sXG5cbiAgLyoq
XG4gICAqIERpc3BhdGNoZXMgYWxsIHN5bnRoZXRpYyBldmVudHMgb24gdGhlIGV2ZW50IHF1ZXVl
LlxuICAgKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHByb2Nlc3NFdmVudFF1ZXVlOiBmdW5j
dGlvbiAoc2ltdWxhdGVkKSB7XG4gICAgLy8gU2V0IGBldmVudFF1ZXVlYCB0byBudWxsIGJlZm9y
ZSBwcm9jZXNzaW5nIGl0IHNvIHRoYXQgd2UgY2FuIHRlbGwgaWYgbW9yZVxuICAgIC8vIGV2ZW50
cyBnZXQgZW5xdWV1ZWQgd2hpbGUgcHJvY2Vzc2luZy5cbiAgICB2YXIgcHJvY2Vzc2luZ0V2ZW50
UXVldWUgPSBldmVudFF1ZXVlO1xuICAgIGV2ZW50UXVldWUgPSBudWxsO1xuICAgIGlmIChzaW11
bGF0ZWQpIHtcbiAgICAgIGZvckVhY2hBY2N1bXVsYXRlZChwcm9jZXNzaW5nRXZlbnRRdWV1ZSwg
ZXhlY3V0ZURpc3BhdGNoZXNBbmRSZWxlYXNlU2ltdWxhdGVkKTtcbiAgICB9IGVsc2Uge1xuICAg
ICAgZm9yRWFjaEFjY3VtdWxhdGVkKHByb2Nlc3NpbmdFdmVudFF1ZXVlLCBleGVjdXRlRGlzcGF0
Y2hlc0FuZFJlbGVhc2VUb3BMZXZlbCk7XG4gICAgfVxuICAgICEhZXZlbnRRdWV1ZSA/IHByb2Nl
c3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdwcm9j
ZXNzRXZlbnRRdWV1ZSgpOiBBZGRpdGlvbmFsIGV2ZW50cyB3ZXJlIGVucXVldWVkIHdoaWxlIHBy
b2Nlc3NpbmcgYW4gZXZlbnQgcXVldWUuIFN1cHBvcnQgZm9yIHRoaXMgaGFzIG5vdCB5ZXQgYmVl
biBpbXBsZW1lbnRlZC4nKSA6IF9wcm9kSW52YXJpYW50KCc5NScpIDogdm9pZCAwO1xuICAgIC8v
IFRoaXMgd291bGQgYmUgYSBnb29kIHRpbWUgdG8gcmV0aHJvdyBpZiBhbnkgb2YgdGhlIGV2ZW50
IGhhbmRsZXJzIHRocmV3LlxuICAgIFJlYWN0RXJyb3JVdGlscy5yZXRocm93Q2F1Z2h0RXJyb3Io
KTtcbiAgfSxcblxuICAvKipcbiAgICogVGhlc2UgYXJlIG5lZWRlZCBmb3IgdGVzdHMgb25seS4g
RG8gbm90IHVzZSFcbiAgICovXG4gIF9fcHVyZ2U6IGZ1bmN0aW9uICgpIHtcbiAgICBsaXN0ZW5l
ckJhbmsgPSB7fTtcbiAgfSxcblxuICBfX2dldExpc3RlbmVyQmFuazogZnVuY3Rpb24gKCkge1xu
ICAgIHJldHVybiBsaXN0ZW5lckJhbms7XG4gIH1cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gRXZl
bnRQbHVnaW5IdWI7XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJc
biAqKiAuL34vcmVhY3QtZG9tL2xpYi9FdmVudFBsdWdpbkh1Yi5qc1xuICoqIG1vZHVsZSBpZCA9
IDE5XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENvcHlyaWdodCAyMDEz
LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAq
IFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNl
IGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0
aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRz
IGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5c
biAqXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgRXZlbnRQbHVnaW5IdWIgPSByZXF1aXJl
KCcuL0V2ZW50UGx1Z2luSHViJyk7XG52YXIgRXZlbnRQbHVnaW5VdGlscyA9IHJlcXVpcmUoJy4v
RXZlbnRQbHVnaW5VdGlscycpO1xuXG52YXIgYWNjdW11bGF0ZUludG8gPSByZXF1aXJlKCcuL2Fj
Y3VtdWxhdGVJbnRvJyk7XG52YXIgZm9yRWFjaEFjY3VtdWxhdGVkID0gcmVxdWlyZSgnLi9mb3JF
YWNoQWNjdW11bGF0ZWQnKTtcbnZhciB3YXJuaW5nID0gcmVxdWlyZSgnZmJqcy9saWIvd2Fybmlu
ZycpO1xuXG52YXIgZ2V0TGlzdGVuZXIgPSBFdmVudFBsdWdpbkh1Yi5nZXRMaXN0ZW5lcjtcblxu
LyoqXG4gKiBTb21lIGV2ZW50IHR5cGVzIGhhdmUgYSBub3Rpb24gb2YgZGlmZmVyZW50IHJlZ2lz
dHJhdGlvbiBuYW1lcyBmb3IgZGlmZmVyZW50XG4gKiBcInBoYXNlc1wiIG9mIHByb3BhZ2F0aW9u
LiBUaGlzIGZpbmRzIGxpc3RlbmVycyBieSBhIGdpdmVuIHBoYXNlLlxuICovXG5mdW5jdGlvbiBs
aXN0ZW5lckF0UGhhc2UoaW5zdCwgZXZlbnQsIHByb3BhZ2F0aW9uUGhhc2UpIHtcbiAgdmFyIHJl
Z2lzdHJhdGlvbk5hbWUgPSBldmVudC5kaXNwYXRjaENvbmZpZy5waGFzZWRSZWdpc3RyYXRpb25O
YW1lc1twcm9wYWdhdGlvblBoYXNlXTtcbiAgcmV0dXJuIGdldExpc3RlbmVyKGluc3QsIHJlZ2lz
dHJhdGlvbk5hbWUpO1xufVxuXG4vKipcbiAqIFRhZ3MgYSBgU3ludGhldGljRXZlbnRgIHdpdGgg
ZGlzcGF0Y2hlZCBsaXN0ZW5lcnMuIENyZWF0aW5nIHRoaXMgZnVuY3Rpb25cbiAqIGhlcmUsIGFs
bG93cyB1cyB0byBub3QgaGF2ZSB0byBiaW5kIG9yIGNyZWF0ZSBmdW5jdGlvbnMgZm9yIGVhY2gg
ZXZlbnQuXG4gKiBNdXRhdGluZyB0aGUgZXZlbnQncyBtZW1iZXJzIGFsbG93cyB1cyB0byBub3Qg
aGF2ZSB0byBjcmVhdGUgYSB3cmFwcGluZ1xuICogXCJkaXNwYXRjaFwiIG9iamVjdCB0aGF0IHBh
aXJzIHRoZSBldmVudCB3aXRoIHRoZSBsaXN0ZW5lci5cbiAqL1xuZnVuY3Rpb24gYWNjdW11bGF0
ZURpcmVjdGlvbmFsRGlzcGF0Y2hlcyhpbnN0LCBwaGFzZSwgZXZlbnQpIHtcbiAgaWYgKHByb2Nl
c3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICBwcm9jZXNzLmVudi5OT0RF
X0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhpbnN0LCAnRGlzcGF0Y2hpbmcgaW5zdCBt
dXN0IG5vdCBiZSBudWxsJykgOiB2b2lkIDA7XG4gIH1cbiAgdmFyIGxpc3RlbmVyID0gbGlzdGVu
ZXJBdFBoYXNlKGluc3QsIGV2ZW50LCBwaGFzZSk7XG4gIGlmIChsaXN0ZW5lcikge1xuICAgIGV2
ZW50Ll9kaXNwYXRjaExpc3RlbmVycyA9IGFjY3VtdWxhdGVJbnRvKGV2ZW50Ll9kaXNwYXRjaExp
c3RlbmVycywgbGlzdGVuZXIpO1xuICAgIGV2ZW50Ll9kaXNwYXRjaEluc3RhbmNlcyA9IGFjY3Vt
dWxhdGVJbnRvKGV2ZW50Ll9kaXNwYXRjaEluc3RhbmNlcywgaW5zdCk7XG4gIH1cbn1cblxuLyoq
XG4gKiBDb2xsZWN0IGRpc3BhdGNoZXMgKG11c3QgYmUgZW50aXJlbHkgY29sbGVjdGVkIGJlZm9y
ZSBkaXNwYXRjaGluZyAtIHNlZSB1bml0XG4gKiB0ZXN0cykuIExhemlseSBhbGxvY2F0ZSB0aGUg
YXJyYXkgdG8gY29uc2VydmUgbWVtb3J5LiAgV2UgbXVzdCBsb29wIHRocm91Z2hcbiAqIGVhY2gg
ZXZlbnQgYW5kIHBlcmZvcm0gdGhlIHRyYXZlcnNhbCBmb3IgZWFjaCBvbmUuIFdlIGNhbm5vdCBw
ZXJmb3JtIGFcbiAqIHNpbmdsZSB0cmF2ZXJzYWwgZm9yIHRoZSBlbnRpcmUgY29sbGVjdGlvbiBv
ZiBldmVudHMgYmVjYXVzZSBlYWNoIGV2ZW50IG1heVxuICogaGF2ZSBhIGRpZmZlcmVudCB0YXJn
ZXQuXG4gKi9cbmZ1bmN0aW9uIGFjY3VtdWxhdGVUd29QaGFzZURpc3BhdGNoZXNTaW5nbGUoZXZl
bnQpIHtcbiAgaWYgKGV2ZW50ICYmIGV2ZW50LmRpc3BhdGNoQ29uZmlnLnBoYXNlZFJlZ2lzdHJh
dGlvbk5hbWVzKSB7XG4gICAgRXZlbnRQbHVnaW5VdGlscy50cmF2ZXJzZVR3b1BoYXNlKGV2ZW50
Ll90YXJnZXRJbnN0LCBhY2N1bXVsYXRlRGlyZWN0aW9uYWxEaXNwYXRjaGVzLCBldmVudCk7XG4g
IH1cbn1cblxuLyoqXG4gKiBTYW1lIGFzIGBhY2N1bXVsYXRlVHdvUGhhc2VEaXNwYXRjaGVzU2lu
Z2xlYCwgYnV0IHNraXBzIG92ZXIgdGhlIHRhcmdldElELlxuICovXG5mdW5jdGlvbiBhY2N1bXVs
YXRlVHdvUGhhc2VEaXNwYXRjaGVzU2luZ2xlU2tpcFRhcmdldChldmVudCkge1xuICBpZiAoZXZl
bnQgJiYgZXZlbnQuZGlzcGF0Y2hDb25maWcucGhhc2VkUmVnaXN0cmF0aW9uTmFtZXMpIHtcbiAg
ICB2YXIgdGFyZ2V0SW5zdCA9IGV2ZW50Ll90YXJnZXRJbnN0O1xuICAgIHZhciBwYXJlbnRJbnN0
ID0gdGFyZ2V0SW5zdCA/IEV2ZW50UGx1Z2luVXRpbHMuZ2V0UGFyZW50SW5zdGFuY2UodGFyZ2V0
SW5zdCkgOiBudWxsO1xuICAgIEV2ZW50UGx1Z2luVXRpbHMudHJhdmVyc2VUd29QaGFzZShwYXJl
bnRJbnN0LCBhY2N1bXVsYXRlRGlyZWN0aW9uYWxEaXNwYXRjaGVzLCBldmVudCk7XG4gIH1cbn1c
blxuLyoqXG4gKiBBY2N1bXVsYXRlcyB3aXRob3V0IHJlZ2FyZCB0byBkaXJlY3Rpb24sIGRvZXMg
bm90IGxvb2sgZm9yIHBoYXNlZFxuICogcmVnaXN0cmF0aW9uIG5hbWVzLiBTYW1lIGFzIGBhY2N1
bXVsYXRlRGlyZWN0RGlzcGF0Y2hlc1NpbmdsZWAgYnV0IHdpdGhvdXRcbiAqIHJlcXVpcmluZyB0
aGF0IHRoZSBgZGlzcGF0Y2hNYXJrZXJgIGJlIHRoZSBzYW1lIGFzIHRoZSBkaXNwYXRjaGVkIElE
LlxuICovXG5mdW5jdGlvbiBhY2N1bXVsYXRlRGlzcGF0Y2hlcyhpbnN0LCBpZ25vcmVkRGlyZWN0
aW9uLCBldmVudCkge1xuICBpZiAoZXZlbnQgJiYgZXZlbnQuZGlzcGF0Y2hDb25maWcucmVnaXN0
cmF0aW9uTmFtZSkge1xuICAgIHZhciByZWdpc3RyYXRpb25OYW1lID0gZXZlbnQuZGlzcGF0Y2hD
b25maWcucmVnaXN0cmF0aW9uTmFtZTtcbiAgICB2YXIgbGlzdGVuZXIgPSBnZXRMaXN0ZW5lcihp
bnN0LCByZWdpc3RyYXRpb25OYW1lKTtcbiAgICBpZiAobGlzdGVuZXIpIHtcbiAgICAgIGV2ZW50
Ll9kaXNwYXRjaExpc3RlbmVycyA9IGFjY3VtdWxhdGVJbnRvKGV2ZW50Ll9kaXNwYXRjaExpc3Rl
bmVycywgbGlzdGVuZXIpO1xuICAgICAgZXZlbnQuX2Rpc3BhdGNoSW5zdGFuY2VzID0gYWNjdW11
bGF0ZUludG8oZXZlbnQuX2Rpc3BhdGNoSW5zdGFuY2VzLCBpbnN0KTtcbiAgICB9XG4gIH1cbn1c
blxuLyoqXG4gKiBBY2N1bXVsYXRlcyBkaXNwYXRjaGVzIG9uIGFuIGBTeW50aGV0aWNFdmVudGAs
IGJ1dCBvbmx5IGZvciB0aGVcbiAqIGBkaXNwYXRjaE1hcmtlcmAuXG4gKiBAcGFyYW0ge1N5bnRo
ZXRpY0V2ZW50fSBldmVudFxuICovXG5mdW5jdGlvbiBhY2N1bXVsYXRlRGlyZWN0RGlzcGF0Y2hl
c1NpbmdsZShldmVudCkge1xuICBpZiAoZXZlbnQgJiYgZXZlbnQuZGlzcGF0Y2hDb25maWcucmVn
aXN0cmF0aW9uTmFtZSkge1xuICAgIGFjY3VtdWxhdGVEaXNwYXRjaGVzKGV2ZW50Ll90YXJnZXRJ
bnN0LCBudWxsLCBldmVudCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gYWNjdW11bGF0ZVR3b1BoYXNl
RGlzcGF0Y2hlcyhldmVudHMpIHtcbiAgZm9yRWFjaEFjY3VtdWxhdGVkKGV2ZW50cywgYWNjdW11
bGF0ZVR3b1BoYXNlRGlzcGF0Y2hlc1NpbmdsZSk7XG59XG5cbmZ1bmN0aW9uIGFjY3VtdWxhdGVU
d29QaGFzZURpc3BhdGNoZXNTa2lwVGFyZ2V0KGV2ZW50cykge1xuICBmb3JFYWNoQWNjdW11bGF0
ZWQoZXZlbnRzLCBhY2N1bXVsYXRlVHdvUGhhc2VEaXNwYXRjaGVzU2luZ2xlU2tpcFRhcmdldCk7
XG59XG5cbmZ1bmN0aW9uIGFjY3VtdWxhdGVFbnRlckxlYXZlRGlzcGF0Y2hlcyhsZWF2ZSwgZW50
ZXIsIGZyb20sIHRvKSB7XG4gIEV2ZW50UGx1Z2luVXRpbHMudHJhdmVyc2VFbnRlckxlYXZlKGZy
b20sIHRvLCBhY2N1bXVsYXRlRGlzcGF0Y2hlcywgbGVhdmUsIGVudGVyKTtcbn1cblxuZnVuY3Rp
b24gYWNjdW11bGF0ZURpcmVjdERpc3BhdGNoZXMoZXZlbnRzKSB7XG4gIGZvckVhY2hBY2N1bXVs
YXRlZChldmVudHMsIGFjY3VtdWxhdGVEaXJlY3REaXNwYXRjaGVzU2luZ2xlKTtcbn1cblxuLyoq
XG4gKiBBIHNtYWxsIHNldCBvZiBwcm9wYWdhdGlvbiBwYXR0ZXJucywgZWFjaCBvZiB3aGljaCB3
aWxsIGFjY2VwdCBhIHNtYWxsIGFtb3VudFxuICogb2YgaW5mb3JtYXRpb24sIGFuZCBnZW5lcmF0
ZSBhIHNldCBvZiBcImRpc3BhdGNoIHJlYWR5IGV2ZW50IG9iamVjdHNcIiAtIHdoaWNoXG4gKiBh
cmUgc2V0cyBvZiBldmVudHMgdGhhdCBoYXZlIGFscmVhZHkgYmVlbiBhbm5vdGF0ZWQgd2l0aCBh
IHNldCBvZiBkaXNwYXRjaGVkXG4gKiBsaXN0ZW5lciBmdW5jdGlvbnMvaWRzLiBUaGUgQVBJIGlz
IGRlc2lnbmVkIHRoaXMgd2F5IHRvIGRpc2NvdXJhZ2UgdGhlc2VcbiAqIHByb3BhZ2F0aW9uIHN0
cmF0ZWdpZXMgZnJvbSBhY3R1YWxseSBleGVjdXRpbmcgdGhlIGRpc3BhdGNoZXMsIHNpbmNlIHdl
XG4gKiBhbHdheXMgd2FudCB0byBjb2xsZWN0IHRoZSBlbnRpcmUgc2V0IG9mIGRpc3BhdGNoZXMg
YmVmb3JlIGV4ZWN1dGluZyBldmVudCBhXG4gKiBzaW5nbGUgb25lLlxuICpcbiAqIEBjb25zdHJ1
Y3RvciBFdmVudFByb3BhZ2F0b3JzXG4gKi9cbnZhciBFdmVudFByb3BhZ2F0b3JzID0ge1xuICBh
Y2N1bXVsYXRlVHdvUGhhc2VEaXNwYXRjaGVzOiBhY2N1bXVsYXRlVHdvUGhhc2VEaXNwYXRjaGVz
LFxuICBhY2N1bXVsYXRlVHdvUGhhc2VEaXNwYXRjaGVzU2tpcFRhcmdldDogYWNjdW11bGF0ZVR3
b1BoYXNlRGlzcGF0Y2hlc1NraXBUYXJnZXQsXG4gIGFjY3VtdWxhdGVEaXJlY3REaXNwYXRjaGVz
OiBhY2N1bXVsYXRlRGlyZWN0RGlzcGF0Y2hlcyxcbiAgYWNjdW11bGF0ZUVudGVyTGVhdmVEaXNw
YXRjaGVzOiBhY2N1bXVsYXRlRW50ZXJMZWF2ZURpc3BhdGNoZXNcbn07XG5cbm1vZHVsZS5leHBv
cnRzID0gRXZlbnRQcm9wYWdhdG9ycztcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQ
QUNLIEZPT1RFUlxuICoqIC4vfi9yZWFjdC1kb20vbGliL0V2ZW50UHJvcGFnYXRvcnMuanNcbiAq
KiBtb2R1bGUgaWQgPSAyMFxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBD
b3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNl
cnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qt
c3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBk
aXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2Yg
cGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2Ft
ZSBkaXJlY3RvcnkuXG4gKlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxuLyoqXG4gKiBgUmVhY3RJ
bnN0YW5jZU1hcGAgbWFpbnRhaW5zIGEgbWFwcGluZyBmcm9tIGEgcHVibGljIGZhY2luZyBzdGF0
ZWZ1bFxuICogaW5zdGFuY2UgKGtleSkgYW5kIHRoZSBpbnRlcm5hbCByZXByZXNlbnRhdGlvbiAo
dmFsdWUpLiBUaGlzIGFsbG93cyBwdWJsaWNcbiAqIG1ldGhvZHMgdG8gYWNjZXB0IHRoZSB1c2Vy
IGZhY2luZyBpbnN0YW5jZSBhcyBhbiBhcmd1bWVudCBhbmQgbWFwIHRoZW0gYmFja1xuICogdG8g
aW50ZXJuYWwgbWV0aG9kcy5cbiAqL1xuXG4vLyBUT0RPOiBSZXBsYWNlIHRoaXMgd2l0aCBFUzY6
IHZhciBSZWFjdEluc3RhbmNlTWFwID0gbmV3IE1hcCgpO1xuXG52YXIgUmVhY3RJbnN0YW5jZU1h
cCA9IHtcbiAgLyoqXG4gICAqIFRoaXMgQVBJIHNob3VsZCBiZSBjYWxsZWQgYGRlbGV0ZWAgYnV0
IHdlJ2QgaGF2ZSB0byBtYWtlIHN1cmUgdG8gYWx3YXlzXG4gICAqIHRyYW5zZm9ybSB0aGVzZSB0
byBzdHJpbmdzIGZvciBJRSBzdXBwb3J0LiBXaGVuIHRoaXMgdHJhbnNmb3JtIGlzIGZ1bGx5XG4g
ICAqIHN1cHBvcnRlZCB3ZSBjYW4gcmVuYW1lIGl0LlxuICAgKi9cbiAgcmVtb3ZlOiBmdW5jdGlv
biAoa2V5KSB7XG4gICAga2V5Ll9yZWFjdEludGVybmFsSW5zdGFuY2UgPSB1bmRlZmluZWQ7XG4g
IH0sXG5cbiAgZ2V0OiBmdW5jdGlvbiAoa2V5KSB7XG4gICAgcmV0dXJuIGtleS5fcmVhY3RJbnRl
cm5hbEluc3RhbmNlO1xuICB9LFxuXG4gIGhhczogZnVuY3Rpb24gKGtleSkge1xuICAgIHJldHVy
biBrZXkuX3JlYWN0SW50ZXJuYWxJbnN0YW5jZSAhPT0gdW5kZWZpbmVkO1xuICB9LFxuXG4gIHNl
dDogZnVuY3Rpb24gKGtleSwgdmFsdWUpIHtcbiAgICBrZXkuX3JlYWN0SW50ZXJuYWxJbnN0YW5j
ZSA9IHZhbHVlO1xuICB9XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0SW5zdGFuY2VNYXA7
XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVh
Y3QtZG9tL2xpYi9SZWFjdEluc3RhbmNlTWFwLmpzXG4gKiogbW9kdWxlIGlkID0gMjFcbiAqKiBt
b2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwg
RmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3Vy
Y2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4g
dGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNl
IHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZv
dW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xu
XG4ndXNlIHN0cmljdCc7XG5cbnZhciBTeW50aGV0aWNFdmVudCA9IHJlcXVpcmUoJy4vU3ludGhl
dGljRXZlbnQnKTtcblxudmFyIGdldEV2ZW50VGFyZ2V0ID0gcmVxdWlyZSgnLi9nZXRFdmVudFRh
cmdldCcpO1xuXG4vKipcbiAqIEBpbnRlcmZhY2UgVUlFdmVudFxuICogQHNlZSBodHRwOi8vd3d3
LnczLm9yZy9UUi9ET00tTGV2ZWwtMy1FdmVudHMvXG4gKi9cbnZhciBVSUV2ZW50SW50ZXJmYWNl
ID0ge1xuICB2aWV3OiBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICBpZiAoZXZlbnQudmlldykge1xu
ICAgICAgcmV0dXJuIGV2ZW50LnZpZXc7XG4gICAgfVxuXG4gICAgdmFyIHRhcmdldCA9IGdldEV2
ZW50VGFyZ2V0KGV2ZW50KTtcbiAgICBpZiAodGFyZ2V0LndpbmRvdyA9PT0gdGFyZ2V0KSB7XG4g
ICAgICAvLyB0YXJnZXQgaXMgYSB3aW5kb3cgb2JqZWN0XG4gICAgICByZXR1cm4gdGFyZ2V0O1xu
ICAgIH1cblxuICAgIHZhciBkb2MgPSB0YXJnZXQub3duZXJEb2N1bWVudDtcbiAgICAvLyBUT0RP
OiBGaWd1cmUgb3V0IHdoeSBgb3duZXJEb2N1bWVudGAgaXMgc29tZXRpbWVzIHVuZGVmaW5lZCBp
biBJRTguXG4gICAgaWYgKGRvYykge1xuICAgICAgcmV0dXJuIGRvYy5kZWZhdWx0VmlldyB8fCBk
b2MucGFyZW50V2luZG93O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gd2luZG93O1xuICAg
IH1cbiAgfSxcbiAgZGV0YWlsOiBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICByZXR1cm4gZXZlbnQu
ZGV0YWlsIHx8IDA7XG4gIH1cbn07XG5cbi8qKlxuICogQHBhcmFtIHtvYmplY3R9IGRpc3BhdGNo
Q29uZmlnIENvbmZpZ3VyYXRpb24gdXNlZCB0byBkaXNwYXRjaCB0aGlzIGV2ZW50LlxuICogQHBh
cmFtIHtzdHJpbmd9IGRpc3BhdGNoTWFya2VyIE1hcmtlciBpZGVudGlmeWluZyB0aGUgZXZlbnQg
dGFyZ2V0LlxuICogQHBhcmFtIHtvYmplY3R9IG5hdGl2ZUV2ZW50IE5hdGl2ZSBicm93c2VyIGV2
ZW50LlxuICogQGV4dGVuZHMge1N5bnRoZXRpY0V2ZW50fVxuICovXG5mdW5jdGlvbiBTeW50aGV0
aWNVSUV2ZW50KGRpc3BhdGNoQ29uZmlnLCBkaXNwYXRjaE1hcmtlciwgbmF0aXZlRXZlbnQsIG5h
dGl2ZUV2ZW50VGFyZ2V0KSB7XG4gIHJldHVybiBTeW50aGV0aWNFdmVudC5jYWxsKHRoaXMsIGRp
c3BhdGNoQ29uZmlnLCBkaXNwYXRjaE1hcmtlciwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFy
Z2V0KTtcbn1cblxuU3ludGhldGljRXZlbnQuYXVnbWVudENsYXNzKFN5bnRoZXRpY1VJRXZlbnQs
IFVJRXZlbnRJbnRlcmZhY2UpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFN5bnRoZXRpY1VJRXZlbnQ7
XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVh
Y3QtZG9tL2xpYi9TeW50aGV0aWNVSUV2ZW50LmpzXG4gKiogbW9kdWxlIGlkID0gMjJcbiAqKiBt
b2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNl
bnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMg
c291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5k
IGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNv
dXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBi
ZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4g
Ki9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgZW1wdHlPYmplY3QgPSB7fTtcblxuaWYgKHByb2Nl
c3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgT2JqZWN0LmZyZWV6ZShlbXB0
eU9iamVjdCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZW1wdHlPYmplY3Q7XG5cblxuLyoqKioq
KioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vZmJqcy9saWIvZW1wdHlP
YmplY3QuanNcbiAqKiBtb2R1bGUgaWQgPSAyNFxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiov
IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxs
IHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVu
ZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBp
biB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBn
cmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmls
ZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFy
IF9hc3NpZ24gPSByZXF1aXJlKCdvYmplY3QtYXNzaWduJyk7XG5cbnZhciBFdmVudFBsdWdpblJl
Z2lzdHJ5ID0gcmVxdWlyZSgnLi9FdmVudFBsdWdpblJlZ2lzdHJ5Jyk7XG52YXIgUmVhY3RFdmVu
dEVtaXR0ZXJNaXhpbiA9IHJlcXVpcmUoJy4vUmVhY3RFdmVudEVtaXR0ZXJNaXhpbicpO1xudmFy
IFZpZXdwb3J0TWV0cmljcyA9IHJlcXVpcmUoJy4vVmlld3BvcnRNZXRyaWNzJyk7XG5cbnZhciBn
ZXRWZW5kb3JQcmVmaXhlZEV2ZW50TmFtZSA9IHJlcXVpcmUoJy4vZ2V0VmVuZG9yUHJlZml4ZWRF
dmVudE5hbWUnKTtcbnZhciBpc0V2ZW50U3VwcG9ydGVkID0gcmVxdWlyZSgnLi9pc0V2ZW50U3Vw
cG9ydGVkJyk7XG5cbi8qKlxuICogU3VtbWFyeSBvZiBgUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVy
YCBldmVudCBoYW5kbGluZzpcbiAqXG4gKiAgLSBUb3AtbGV2ZWwgZGVsZWdhdGlvbiBpcyB1c2Vk
IHRvIHRyYXAgbW9zdCBuYXRpdmUgYnJvd3NlciBldmVudHMuIFRoaXNcbiAqICAgIG1heSBvbmx5
IG9jY3VyIGluIHRoZSBtYWluIHRocmVhZCBhbmQgaXMgdGhlIHJlc3BvbnNpYmlsaXR5IG9mXG4g
KiAgICBSZWFjdEV2ZW50TGlzdGVuZXIsIHdoaWNoIGlzIGluamVjdGVkIGFuZCBjYW4gdGhlcmVm
b3JlIHN1cHBvcnQgcGx1Z2dhYmxlXG4gKiAgICBldmVudCBzb3VyY2VzLiBUaGlzIGlzIHRoZSBv
bmx5IHdvcmsgdGhhdCBvY2N1cnMgaW4gdGhlIG1haW4gdGhyZWFkLlxuICpcbiAqICAtIFdlIG5v
cm1hbGl6ZSBhbmQgZGUtZHVwbGljYXRlIGV2ZW50cyB0byBhY2NvdW50IGZvciBicm93c2VyIHF1
aXJrcy4gVGhpc1xuICogICAgbWF5IGJlIGRvbmUgaW4gdGhlIHdvcmtlciB0aHJlYWQuXG4gKlxu
ICogIC0gRm9yd2FyZCB0aGVzZSBuYXRpdmUgZXZlbnRzICh3aXRoIHRoZSBhc3NvY2lhdGVkIHRv
cC1sZXZlbCB0eXBlIHVzZWQgdG9cbiAqICAgIHRyYXAgaXQpIHRvIGBFdmVudFBsdWdpbkh1YmAs
IHdoaWNoIGluIHR1cm4gd2lsbCBhc2sgcGx1Z2lucyBpZiB0aGV5IHdhbnRcbiAqICAgIHRvIGV4
dHJhY3QgYW55IHN5bnRoZXRpYyBldmVudHMuXG4gKlxuICogIC0gVGhlIGBFdmVudFBsdWdpbkh1
YmAgd2lsbCB0aGVuIHByb2Nlc3MgZWFjaCBldmVudCBieSBhbm5vdGF0aW5nIHRoZW0gd2l0aFxu
ICogICAgXCJkaXNwYXRjaGVzXCIsIGEgc2VxdWVuY2Ugb2YgbGlzdGVuZXJzIGFuZCBJRHMgdGhh
dCBjYXJlIGFib3V0IHRoYXQgZXZlbnQuXG4gKlxuICogIC0gVGhlIGBFdmVudFBsdWdpbkh1YmAg
dGhlbiBkaXNwYXRjaGVzIHRoZSBldmVudHMuXG4gKlxuICogT3ZlcnZpZXcgb2YgUmVhY3QgYW5k
IHRoZSBldmVudCBzeXN0ZW06XG4gKlxuICogKy0tLS0tLS0tLS0tLSsgICAgLlxuICogfCAgICBE
T00gICAgIHwgICAgLlxuICogKy0tLS0tLS0tLS0tLSsgICAgLlxuICogICAgICAgfCAgICAgICAg
ICAgLlxuICogICAgICAgdiAgICAgICAgICAgLlxuICogKy0tLS0tLS0tLS0tLSsgICAgLlxuICog
fCBSZWFjdEV2ZW50IHwgICAgLlxuICogfCAgTGlzdGVuZXIgIHwgICAgLlxuICogKy0tLS0tLS0t
LS0tLSsgICAgLiAgICAgICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0rXG4gKiAgICAg
ICB8ICAgICAgICAgICAuICAgICAgICAgICAgICAgKy0tLS0tLS0tK3xTaW1wbGVFdmVudHxcbiAq
ICAgICAgIHwgICAgICAgICAgIC4gICAgICAgICAgICAgICB8ICAgICAgICAgfFBsdWdpbiAgICAg
fFxuICogKy0tLS0tfC0tLS0tLSsgICAgLiAgICAgICAgICAgICAgIHYgICAgICAgICArLS0tLS0t
LS0tLS0rXG4gKiB8ICAgICB8ICAgICAgfCAgICAuICAgICstLS0tLS0tLS0tLS0tLSsgICAgICAg
ICAgICAgICAgICAgICstLS0tLS0tLS0tLS0rXG4gKiB8ICAgICArLS0tLS0tLS0tLS0uLS0tPnxF
dmVudFBsdWdpbkh1YnwgICAgICAgICAgICAgICAgICAgIHwgICAgRXZlbnQgICB8XG4gKiB8ICAg
ICAgICAgICAgfCAgICAuICAgIHwgICAgICAgICAgICAgIHwgICAgICstLS0tLS0tLS0tLSsgIHwg
UHJvcGFnYXRvcnN8XG4gKiB8IFJlYWN0RXZlbnQgfCAgICAuICAgIHwgICAgICAgICAgICAgIHwg
ICAgIHxUYXBFdmVudCAgIHwgIHwtLS0tLS0tLS0tLS18XG4gKiB8ICBFbWl0dGVyICAgfCAgICAu
ICAgIHwgICAgICAgICAgICAgIHw8LS0tK3xQbHVnaW4gICAgIHwgIHxvdGhlciBwbHVnaW58XG4g
KiB8ICAgICAgICAgICAgfCAgICAuICAgIHwgICAgICAgICAgICAgIHwgICAgICstLS0tLS0tLS0t
LSsgIHwgIHV0aWxpdGllcyB8XG4gKiB8ICAgICArLS0tLS0tLS0tLS0uLS0tPnwgICAgICAgICAg
ICAgIHwgICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0rXG4gKiB8ICAgICB8ICAgICAg
fCAgICAuICAgICstLS0tLS0tLS0tLS0tLStcbiAqICstLS0tLXwtLS0tLS0rICAgIC4gICAgICAg
ICAgICAgICAgXiAgICAgICAgKy0tLS0tLS0tLS0tK1xuICogICAgICAgfCAgICAgICAgICAgLiAg
ICAgICAgICAgICAgICB8ICAgICAgICB8RW50ZXIvTGVhdmV8XG4gKiAgICAgICArICAgICAgICAg
ICAuICAgICAgICAgICAgICAgICstLS0tLS0tK3xQbHVnaW4gICAgIHxcbiAqICstLS0tLS0tLS0t
LS0tKyAgIC4gICAgICAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tK1xuICogfCBhcHBs
aWNhdGlvbiB8ICAgLlxuICogfC0tLS0tLS0tLS0tLS18ICAgLlxuICogfCAgICAgICAgICAgICB8
ICAgLlxuICogfCAgICAgICAgICAgICB8ICAgLlxuICogKy0tLS0tLS0tLS0tLS0rICAgLlxuICog
ICAgICAgICAgICAgICAgICAgLlxuICogICAgUmVhY3QgQ29yZSAgICAgLiAgR2VuZXJhbCBQdXJw
b3NlIEV2ZW50IFBsdWdpbiBTeXN0ZW1cbiAqL1xuXG52YXIgaGFzRXZlbnRQYWdlWFk7XG52YXIg
YWxyZWFkeUxpc3RlbmluZ1RvID0ge307XG52YXIgaXNNb25pdG9yaW5nU2Nyb2xsVmFsdWUgPSBm
YWxzZTtcbnZhciByZWFjdFRvcExpc3RlbmVyc0NvdW50ZXIgPSAwO1xuXG4vLyBGb3IgZXZlbnRz
IGxpa2UgJ3N1Ym1pdCcgd2hpY2ggZG9uJ3QgY29uc2lzdGVudGx5IGJ1YmJsZSAod2hpY2ggd2Ug
dHJhcCBhdCBhXG4vLyBsb3dlciBub2RlIHRoYW4gYGRvY3VtZW50YCksIGJpbmRpbmcgYXQgYGRv
Y3VtZW50YCB3b3VsZCBjYXVzZSBkdXBsaWNhdGVcbi8vIGV2ZW50cyBzbyB3ZSBkb24ndCBpbmNs
dWRlIHRoZW0gaGVyZVxudmFyIHRvcEV2ZW50TWFwcGluZyA9IHtcbiAgdG9wQWJvcnQ6ICdhYm9y
dCcsXG4gIHRvcEFuaW1hdGlvbkVuZDogZ2V0VmVuZG9yUHJlZml4ZWRFdmVudE5hbWUoJ2FuaW1h
dGlvbmVuZCcpIHx8ICdhbmltYXRpb25lbmQnLFxuICB0b3BBbmltYXRpb25JdGVyYXRpb246IGdl
dFZlbmRvclByZWZpeGVkRXZlbnROYW1lKCdhbmltYXRpb25pdGVyYXRpb24nKSB8fCAnYW5pbWF0
aW9uaXRlcmF0aW9uJyxcbiAgdG9wQW5pbWF0aW9uU3RhcnQ6IGdldFZlbmRvclByZWZpeGVkRXZl
bnROYW1lKCdhbmltYXRpb25zdGFydCcpIHx8ICdhbmltYXRpb25zdGFydCcsXG4gIHRvcEJsdXI6
ICdibHVyJyxcbiAgdG9wQ2FuUGxheTogJ2NhbnBsYXknLFxuICB0b3BDYW5QbGF5VGhyb3VnaDog
J2NhbnBsYXl0aHJvdWdoJyxcbiAgdG9wQ2hhbmdlOiAnY2hhbmdlJyxcbiAgdG9wQ2xpY2s6ICdj
bGljaycsXG4gIHRvcENvbXBvc2l0aW9uRW5kOiAnY29tcG9zaXRpb25lbmQnLFxuICB0b3BDb21w
b3NpdGlvblN0YXJ0OiAnY29tcG9zaXRpb25zdGFydCcsXG4gIHRvcENvbXBvc2l0aW9uVXBkYXRl
OiAnY29tcG9zaXRpb251cGRhdGUnLFxuICB0b3BDb250ZXh0TWVudTogJ2NvbnRleHRtZW51Jyxc
biAgdG9wQ29weTogJ2NvcHknLFxuICB0b3BDdXQ6ICdjdXQnLFxuICB0b3BEb3VibGVDbGljazog
J2RibGNsaWNrJyxcbiAgdG9wRHJhZzogJ2RyYWcnLFxuICB0b3BEcmFnRW5kOiAnZHJhZ2VuZCcs
XG4gIHRvcERyYWdFbnRlcjogJ2RyYWdlbnRlcicsXG4gIHRvcERyYWdFeGl0OiAnZHJhZ2V4aXQn
LFxuICB0b3BEcmFnTGVhdmU6ICdkcmFnbGVhdmUnLFxuICB0b3BEcmFnT3ZlcjogJ2RyYWdvdmVy
JyxcbiAgdG9wRHJhZ1N0YXJ0OiAnZHJhZ3N0YXJ0JyxcbiAgdG9wRHJvcDogJ2Ryb3AnLFxuICB0
b3BEdXJhdGlvbkNoYW5nZTogJ2R1cmF0aW9uY2hhbmdlJyxcbiAgdG9wRW1wdGllZDogJ2VtcHRp
ZWQnLFxuICB0b3BFbmNyeXB0ZWQ6ICdlbmNyeXB0ZWQnLFxuICB0b3BFbmRlZDogJ2VuZGVkJyxc
biAgdG9wRXJyb3I6ICdlcnJvcicsXG4gIHRvcEZvY3VzOiAnZm9jdXMnLFxuICB0b3BJbnB1dDog
J2lucHV0JyxcbiAgdG9wS2V5RG93bjogJ2tleWRvd24nLFxuICB0b3BLZXlQcmVzczogJ2tleXBy
ZXNzJyxcbiAgdG9wS2V5VXA6ICdrZXl1cCcsXG4gIHRvcExvYWRlZERhdGE6ICdsb2FkZWRkYXRh
JyxcbiAgdG9wTG9hZGVkTWV0YWRhdGE6ICdsb2FkZWRtZXRhZGF0YScsXG4gIHRvcExvYWRTdGFy
dDogJ2xvYWRzdGFydCcsXG4gIHRvcE1vdXNlRG93bjogJ21vdXNlZG93bicsXG4gIHRvcE1vdXNl
TW92ZTogJ21vdXNlbW92ZScsXG4gIHRvcE1vdXNlT3V0OiAnbW91c2VvdXQnLFxuICB0b3BNb3Vz
ZU92ZXI6ICdtb3VzZW92ZXInLFxuICB0b3BNb3VzZVVwOiAnbW91c2V1cCcsXG4gIHRvcFBhc3Rl
OiAncGFzdGUnLFxuICB0b3BQYXVzZTogJ3BhdXNlJyxcbiAgdG9wUGxheTogJ3BsYXknLFxuICB0
b3BQbGF5aW5nOiAncGxheWluZycsXG4gIHRvcFByb2dyZXNzOiAncHJvZ3Jlc3MnLFxuICB0b3BS
YXRlQ2hhbmdlOiAncmF0ZWNoYW5nZScsXG4gIHRvcFNjcm9sbDogJ3Njcm9sbCcsXG4gIHRvcFNl
ZWtlZDogJ3NlZWtlZCcsXG4gIHRvcFNlZWtpbmc6ICdzZWVraW5nJyxcbiAgdG9wU2VsZWN0aW9u
Q2hhbmdlOiAnc2VsZWN0aW9uY2hhbmdlJyxcbiAgdG9wU3RhbGxlZDogJ3N0YWxsZWQnLFxuICB0
b3BTdXNwZW5kOiAnc3VzcGVuZCcsXG4gIHRvcFRleHRJbnB1dDogJ3RleHRJbnB1dCcsXG4gIHRv
cFRpbWVVcGRhdGU6ICd0aW1ldXBkYXRlJyxcbiAgdG9wVG91Y2hDYW5jZWw6ICd0b3VjaGNhbmNl
bCcsXG4gIHRvcFRvdWNoRW5kOiAndG91Y2hlbmQnLFxuICB0b3BUb3VjaE1vdmU6ICd0b3VjaG1v
dmUnLFxuICB0b3BUb3VjaFN0YXJ0OiAndG91Y2hzdGFydCcsXG4gIHRvcFRyYW5zaXRpb25FbmQ6
IGdldFZlbmRvclByZWZpeGVkRXZlbnROYW1lKCd0cmFuc2l0aW9uZW5kJykgfHwgJ3RyYW5zaXRp
b25lbmQnLFxuICB0b3BWb2x1bWVDaGFuZ2U6ICd2b2x1bWVjaGFuZ2UnLFxuICB0b3BXYWl0aW5n
OiAnd2FpdGluZycsXG4gIHRvcFdoZWVsOiAnd2hlZWwnXG59O1xuXG4vKipcbiAqIFRvIGVuc3Vy
ZSBubyBjb25mbGljdHMgd2l0aCBvdGhlciBwb3RlbnRpYWwgUmVhY3QgaW5zdGFuY2VzIG9uIHRo
ZSBwYWdlXG4gKi9cbnZhciB0b3BMaXN0ZW5lcnNJREtleSA9ICdfcmVhY3RMaXN0ZW5lcnNJRCcg
KyBTdHJpbmcoTWF0aC5yYW5kb20oKSkuc2xpY2UoMik7XG5cbmZ1bmN0aW9uIGdldExpc3Rlbmlu
Z0ZvckRvY3VtZW50KG1vdW50QXQpIHtcbiAgLy8gSW4gSUU4LCBgbW91bnRBdGAgaXMgYSBob3N0
IG9iamVjdCBhbmQgZG9lc24ndCBoYXZlIGBoYXNPd25Qcm9wZXJ0eWBcbiAgLy8gZGlyZWN0bHku
XG4gIGlmICghT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG1vdW50QXQsIHRv
cExpc3RlbmVyc0lES2V5KSkge1xuICAgIG1vdW50QXRbdG9wTGlzdGVuZXJzSURLZXldID0gcmVh
Y3RUb3BMaXN0ZW5lcnNDb3VudGVyKys7XG4gICAgYWxyZWFkeUxpc3RlbmluZ1RvW21vdW50QXRb
dG9wTGlzdGVuZXJzSURLZXldXSA9IHt9O1xuICB9XG4gIHJldHVybiBhbHJlYWR5TGlzdGVuaW5n
VG9bbW91bnRBdFt0b3BMaXN0ZW5lcnNJREtleV1dO1xufVxuXG4vKipcbiAqIGBSZWFjdEJyb3dz
ZXJFdmVudEVtaXR0ZXJgIGlzIHVzZWQgdG8gYXR0YWNoIHRvcC1sZXZlbCBldmVudCBsaXN0ZW5l
cnMuIEZvclxuICogZXhhbXBsZTpcbiAqXG4gKiAgIEV2ZW50UGx1Z2luSHViLnB1dExpc3RlbmVy
KCdteUlEJywgJ29uQ2xpY2snLCBteUZ1bmN0aW9uKTtcbiAqXG4gKiBUaGlzIHdvdWxkIGFsbG9j
YXRlIGEgXCJyZWdpc3RyYXRpb25cIiBvZiBgKCdvbkNsaWNrJywgbXlGdW5jdGlvbilgIG9uICdt
eUlEJy5cbiAqXG4gKiBAaW50ZXJuYWxcbiAqL1xudmFyIFJlYWN0QnJvd3NlckV2ZW50RW1pdHRl
ciA9IF9hc3NpZ24oe30sIFJlYWN0RXZlbnRFbWl0dGVyTWl4aW4sIHtcbiAgLyoqXG4gICAqIElu
amVjdGFibGUgZXZlbnQgYmFja2VuZFxuICAgKi9cbiAgUmVhY3RFdmVudExpc3RlbmVyOiBudWxs
LFxuXG4gIGluamVjdGlvbjoge1xuICAgIC8qKlxuICAgICAqIEBwYXJhbSB7b2JqZWN0fSBSZWFj
dEV2ZW50TGlzdGVuZXJcbiAgICAgKi9cbiAgICBpbmplY3RSZWFjdEV2ZW50TGlzdGVuZXI6IGZ1
bmN0aW9uIChSZWFjdEV2ZW50TGlzdGVuZXIpIHtcbiAgICAgIFJlYWN0RXZlbnRMaXN0ZW5lci5z
ZXRIYW5kbGVUb3BMZXZlbChSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIuaGFuZGxlVG9wTGV2ZWwp
O1xuICAgICAgUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLlJlYWN0RXZlbnRMaXN0ZW5lciA9IFJl
YWN0RXZlbnRMaXN0ZW5lcjtcbiAgICB9XG4gIH0sXG5cbiAgLyoqXG4gICAqIFNldHMgd2hldGhl
ciBvciBub3QgYW55IGNyZWF0ZWQgY2FsbGJhY2tzIHNob3VsZCBiZSBlbmFibGVkLlxuICAgKlxu
ICAgKiBAcGFyYW0ge2Jvb2xlYW59IGVuYWJsZWQgVHJ1ZSBpZiBjYWxsYmFja3Mgc2hvdWxkIGJl
IGVuYWJsZWQuXG4gICAqL1xuICBzZXRFbmFibGVkOiBmdW5jdGlvbiAoZW5hYmxlZCkge1xuICAg
IGlmIChSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIuUmVhY3RFdmVudExpc3RlbmVyKSB7XG4gICAg
ICBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIuUmVhY3RFdmVudExpc3RlbmVyLnNldEVuYWJsZWQo
ZW5hYmxlZCk7XG4gICAgfVxuICB9LFxuXG4gIC8qKlxuICAgKiBAcmV0dXJuIHtib29sZWFufSBU
cnVlIGlmIGNhbGxiYWNrcyBhcmUgZW5hYmxlZC5cbiAgICovXG4gIGlzRW5hYmxlZDogZnVuY3Rp
b24gKCkge1xuICAgIHJldHVybiAhIShSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIuUmVhY3RFdmVu
dExpc3RlbmVyICYmIFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlci5SZWFjdEV2ZW50TGlzdGVuZXIu
aXNFbmFibGVkKCkpO1xuICB9LFxuXG4gIC8qKlxuICAgKiBXZSBsaXN0ZW4gZm9yIGJ1YmJsZWQg
dG91Y2ggZXZlbnRzIG9uIHRoZSBkb2N1bWVudCBvYmplY3QuXG4gICAqXG4gICAqIEZpcmVmb3gg
djguMDEgKGFuZCBwb3NzaWJseSBvdGhlcnMpIGV4aGliaXRlZCBzdHJhbmdlIGJlaGF2aW9yIHdo
ZW5cbiAgICogbW91bnRpbmcgYG9ubW91c2Vtb3ZlYCBldmVudHMgYXQgc29tZSBub2RlIHRoYXQg
d2FzIG5vdCB0aGUgZG9jdW1lbnRcbiAgICogZWxlbWVudC4gVGhlIHN5bXB0b21zIHdlcmUgdGhh
dCBpZiB5b3VyIG1vdXNlIGlzIG5vdCBtb3Zpbmcgb3ZlciBzb21ldGhpbmdcbiAgICogY29udGFp
bmVkIHdpdGhpbiB0aGF0IG1vdW50IHBvaW50IChmb3IgZXhhbXBsZSBvbiB0aGUgYmFja2dyb3Vu
ZCkgdGhlXG4gICAqIHRvcC1sZXZlbCBsaXN0ZW5lcnMgZm9yIGBvbm1vdXNlbW92ZWAgd29uJ3Qg
YmUgY2FsbGVkLiBIb3dldmVyLCBpZiB5b3VcbiAgICogcmVnaXN0ZXIgdGhlIGBtb3VzZW1vdmVg
IG9uIHRoZSBkb2N1bWVudCBvYmplY3QsIHRoZW4gaXQgd2lsbCBvZiBjb3Vyc2VcbiAgICogY2F0
Y2ggYWxsIGBtb3VzZW1vdmVgcy4gVGhpcyBhbG9uZyB3aXRoIGlPUyBxdWlya3MsIGp1c3RpZmll
cyByZXN0cmljdGluZ1xuICAgKiB0b3AtbGV2ZWwgbGlzdGVuZXJzIHRvIHRoZSBkb2N1bWVudCBv
YmplY3Qgb25seSwgYXQgbGVhc3QgZm9yIHRoZXNlXG4gICAqIG1vdmVtZW50IHR5cGVzIG9mIGV2
ZW50cyBhbmQgcG9zc2libHkgYWxsIGV2ZW50cy5cbiAgICpcbiAgICogQHNlZSBodHRwOi8vd3d3
LnF1aXJrc21vZGUub3JnL2Jsb2cvYXJjaGl2ZXMvMjAxMC8wOS9jbGlja19ldmVudF9kZWwuaHRt
bFxuICAgKlxuICAgKiBBbHNvLCBga2V5dXBgL2BrZXlwcmVzc2AvYGtleWRvd25gIGRvIG5vdCBi
dWJibGUgdG8gdGhlIHdpbmRvdyBvbiBJRSwgYnV0XG4gICAqIHRoZXkgYnViYmxlIHRvIGRvY3Vt
ZW50LlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gcmVnaXN0cmF0aW9uTmFtZSBOYW1lIG9m
IGxpc3RlbmVyIChlLmcuIGBvbkNsaWNrYCkuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBjb250ZW50
RG9jdW1lbnRIYW5kbGUgRG9jdW1lbnQgd2hpY2ggb3ducyB0aGUgY29udGFpbmVyXG4gICAqL1xu
ICBsaXN0ZW5UbzogZnVuY3Rpb24gKHJlZ2lzdHJhdGlvbk5hbWUsIGNvbnRlbnREb2N1bWVudEhh
bmRsZSkge1xuICAgIHZhciBtb3VudEF0ID0gY29udGVudERvY3VtZW50SGFuZGxlO1xuICAgIHZh
ciBpc0xpc3RlbmluZyA9IGdldExpc3RlbmluZ0ZvckRvY3VtZW50KG1vdW50QXQpO1xuICAgIHZh
ciBkZXBlbmRlbmNpZXMgPSBFdmVudFBsdWdpblJlZ2lzdHJ5LnJlZ2lzdHJhdGlvbk5hbWVEZXBl
bmRlbmNpZXNbcmVnaXN0cmF0aW9uTmFtZV07XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRl
cGVuZGVuY2llcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGRlcGVuZGVuY3kgPSBkZXBlbmRl
bmNpZXNbaV07XG4gICAgICBpZiAoIShpc0xpc3RlbmluZy5oYXNPd25Qcm9wZXJ0eShkZXBlbmRl
bmN5KSAmJiBpc0xpc3RlbmluZ1tkZXBlbmRlbmN5XSkpIHtcbiAgICAgICAgaWYgKGRlcGVuZGVu
Y3kgPT09ICd0b3BXaGVlbCcpIHtcbiAgICAgICAgICBpZiAoaXNFdmVudFN1cHBvcnRlZCgnd2hl
ZWwnKSkge1xuICAgICAgICAgICAgUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLlJlYWN0RXZlbnRM
aXN0ZW5lci50cmFwQnViYmxlZEV2ZW50KCd0b3BXaGVlbCcsICd3aGVlbCcsIG1vdW50QXQpO1xu
ICAgICAgICAgIH0gZWxzZSBpZiAoaXNFdmVudFN1cHBvcnRlZCgnbW91c2V3aGVlbCcpKSB7XG4g
ICAgICAgICAgICBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIuUmVhY3RFdmVudExpc3RlbmVyLnRy
YXBCdWJibGVkRXZlbnQoJ3RvcFdoZWVsJywgJ21vdXNld2hlZWwnLCBtb3VudEF0KTtcbiAgICAg
ICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gRmlyZWZveCBuZWVkcyB0byBjYXB0dXJlIGEg
ZGlmZmVyZW50IG1vdXNlIHNjcm9sbCBldmVudC5cbiAgICAgICAgICAgIC8vIEBzZWUgaHR0cDov
L3d3dy5xdWlya3Ntb2RlLm9yZy9kb20vZXZlbnRzL3Rlc3RzL3Njcm9sbC5odG1sXG4gICAgICAg
ICAgICBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIuUmVhY3RFdmVudExpc3RlbmVyLnRyYXBCdWJi
bGVkRXZlbnQoJ3RvcFdoZWVsJywgJ0RPTU1vdXNlU2Nyb2xsJywgbW91bnRBdCk7XG4gICAgICAg
ICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGRlcGVuZGVuY3kgPT09ICd0b3BTY3JvbGwnKSB7XG4g
ICAgICAgICAgaWYgKGlzRXZlbnRTdXBwb3J0ZWQoJ3Njcm9sbCcsIHRydWUpKSB7XG4gICAgICAg
ICAgICBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIuUmVhY3RFdmVudExpc3RlbmVyLnRyYXBDYXB0
dXJlZEV2ZW50KCd0b3BTY3JvbGwnLCAnc2Nyb2xsJywgbW91bnRBdCk7XG4gICAgICAgICAgfSBl
bHNlIHtcbiAgICAgICAgICAgIFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlci5SZWFjdEV2ZW50TGlz
dGVuZXIudHJhcEJ1YmJsZWRFdmVudCgndG9wU2Nyb2xsJywgJ3Njcm9sbCcsIFJlYWN0QnJvd3Nl
ckV2ZW50RW1pdHRlci5SZWFjdEV2ZW50TGlzdGVuZXIuV0lORE9XX0hBTkRMRSk7XG4gICAgICAg
ICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGRlcGVuZGVuY3kgPT09ICd0b3BGb2N1cycgfHwgZGVw
ZW5kZW5jeSA9PT0gJ3RvcEJsdXInKSB7XG4gICAgICAgICAgaWYgKGlzRXZlbnRTdXBwb3J0ZWQo
J2ZvY3VzJywgdHJ1ZSkpIHtcbiAgICAgICAgICAgIFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlci5S
ZWFjdEV2ZW50TGlzdGVuZXIudHJhcENhcHR1cmVkRXZlbnQoJ3RvcEZvY3VzJywgJ2ZvY3VzJywg
bW91bnRBdCk7XG4gICAgICAgICAgICBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIuUmVhY3RFdmVu
dExpc3RlbmVyLnRyYXBDYXB0dXJlZEV2ZW50KCd0b3BCbHVyJywgJ2JsdXInLCBtb3VudEF0KTtc
biAgICAgICAgICB9IGVsc2UgaWYgKGlzRXZlbnRTdXBwb3J0ZWQoJ2ZvY3VzaW4nKSkge1xuICAg
ICAgICAgICAgLy8gSUUgaGFzIGBmb2N1c2luYCBhbmQgYGZvY3Vzb3V0YCBldmVudHMgd2hpY2gg
YnViYmxlLlxuICAgICAgICAgICAgLy8gQHNlZSBodHRwOi8vd3d3LnF1aXJrc21vZGUub3JnL2Js
b2cvYXJjaGl2ZXMvMjAwOC8wNC9kZWxlZ2F0aW5nX3RoZS5odG1sXG4gICAgICAgICAgICBSZWFj
dEJyb3dzZXJFdmVudEVtaXR0ZXIuUmVhY3RFdmVudExpc3RlbmVyLnRyYXBCdWJibGVkRXZlbnQo
J3RvcEZvY3VzJywgJ2ZvY3VzaW4nLCBtb3VudEF0KTtcbiAgICAgICAgICAgIFJlYWN0QnJvd3Nl
ckV2ZW50RW1pdHRlci5SZWFjdEV2ZW50TGlzdGVuZXIudHJhcEJ1YmJsZWRFdmVudCgndG9wQmx1
cicsICdmb2N1c291dCcsIG1vdW50QXQpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIHRv
IG1ha2Ugc3VyZSBibHVyIGFuZCBmb2N1cyBldmVudCBsaXN0ZW5lcnMgYXJlIG9ubHkgYXR0YWNo
ZWQgb25jZVxuICAgICAgICAgIGlzTGlzdGVuaW5nLnRvcEJsdXIgPSB0cnVlO1xuICAgICAgICAg
IGlzTGlzdGVuaW5nLnRvcEZvY3VzID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIGlmICh0b3BFdmVu
dE1hcHBpbmcuaGFzT3duUHJvcGVydHkoZGVwZW5kZW5jeSkpIHtcbiAgICAgICAgICBSZWFjdEJy
b3dzZXJFdmVudEVtaXR0ZXIuUmVhY3RFdmVudExpc3RlbmVyLnRyYXBCdWJibGVkRXZlbnQoZGVw
ZW5kZW5jeSwgdG9wRXZlbnRNYXBwaW5nW2RlcGVuZGVuY3ldLCBtb3VudEF0KTtcbiAgICAgICAg
fVxuXG4gICAgICAgIGlzTGlzdGVuaW5nW2RlcGVuZGVuY3ldID0gdHJ1ZTtcbiAgICAgIH1cbiAg
ICB9XG4gIH0sXG5cbiAgdHJhcEJ1YmJsZWRFdmVudDogZnVuY3Rpb24gKHRvcExldmVsVHlwZSwg
aGFuZGxlckJhc2VOYW1lLCBoYW5kbGUpIHtcbiAgICByZXR1cm4gUmVhY3RCcm93c2VyRXZlbnRF
bWl0dGVyLlJlYWN0RXZlbnRMaXN0ZW5lci50cmFwQnViYmxlZEV2ZW50KHRvcExldmVsVHlwZSwg
aGFuZGxlckJhc2VOYW1lLCBoYW5kbGUpO1xuICB9LFxuXG4gIHRyYXBDYXB0dXJlZEV2ZW50OiBm
dW5jdGlvbiAodG9wTGV2ZWxUeXBlLCBoYW5kbGVyQmFzZU5hbWUsIGhhbmRsZSkge1xuICAgIHJl
dHVybiBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIuUmVhY3RFdmVudExpc3RlbmVyLnRyYXBDYXB0
dXJlZEV2ZW50KHRvcExldmVsVHlwZSwgaGFuZGxlckJhc2VOYW1lLCBoYW5kbGUpO1xuICB9LFxu
XG4gIC8qKlxuICAgKiBQcm90ZWN0IGFnYWluc3QgZG9jdW1lbnQuY3JlYXRlRXZlbnQoKSByZXR1
cm5pbmcgbnVsbFxuICAgKiBTb21lIHBvcHVwIGJsb2NrZXIgZXh0ZW5zaW9ucyBhcHBlYXIgdG8g
ZG8gdGhpczpcbiAgICogaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0L2lzc3Vlcy82
ODg3XG4gICAqL1xuICBzdXBwb3J0c0V2ZW50UGFnZVhZOiBmdW5jdGlvbiAoKSB7XG4gICAgaWYg
KCFkb2N1bWVudC5jcmVhdGVFdmVudCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAg
ICB2YXIgZXYgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgnTW91c2VFdmVudCcpO1xuICAgIHJldHVy
biBldiAhPSBudWxsICYmICdwYWdlWCcgaW4gZXY7XG4gIH0sXG5cbiAgLyoqXG4gICAqIExpc3Rl
bnMgdG8gd2luZG93IHNjcm9sbCBhbmQgcmVzaXplIGV2ZW50cy4gV2UgY2FjaGUgc2Nyb2xsIHZh
bHVlcyBzbyB0aGF0XG4gICAqIGFwcGxpY2F0aW9uIGNvZGUgY2FuIGFjY2VzcyB0aGVtIHdpdGhv
dXQgdHJpZ2dlcmluZyByZWZsb3dzLlxuICAgKlxuICAgKiBWaWV3cG9ydE1ldHJpY3MgaXMgb25s
eSB1c2VkIGJ5IFN5bnRoZXRpY01vdXNlL1RvdWNoRXZlbnQgYW5kIG9ubHkgd2hlblxuICAgKiBw
YWdlWC9wYWdlWSBpc24ndCBzdXBwb3J0ZWQgKGxlZ2FjeSBicm93c2VycykuXG4gICAqXG4gICAq
IE5PVEU6IFNjcm9sbCBldmVudHMgZG8gbm90IGJ1YmJsZS5cbiAgICpcbiAgICogQHNlZSBodHRw
Oi8vd3d3LnF1aXJrc21vZGUub3JnL2RvbS9ldmVudHMvc2Nyb2xsLmh0bWxcbiAgICovXG4gIGVu
c3VyZVNjcm9sbFZhbHVlTW9uaXRvcmluZzogZnVuY3Rpb24gKCkge1xuICAgIGlmIChoYXNFdmVu
dFBhZ2VYWSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBoYXNFdmVudFBhZ2VYWSA9IFJlYWN0QnJv
d3NlckV2ZW50RW1pdHRlci5zdXBwb3J0c0V2ZW50UGFnZVhZKCk7XG4gICAgfVxuICAgIGlmICgh
aGFzRXZlbnRQYWdlWFkgJiYgIWlzTW9uaXRvcmluZ1Njcm9sbFZhbHVlKSB7XG4gICAgICB2YXIg
cmVmcmVzaCA9IFZpZXdwb3J0TWV0cmljcy5yZWZyZXNoU2Nyb2xsVmFsdWVzO1xuICAgICAgUmVh
Y3RCcm93c2VyRXZlbnRFbWl0dGVyLlJlYWN0RXZlbnRMaXN0ZW5lci5tb25pdG9yU2Nyb2xsVmFs
dWUocmVmcmVzaCk7XG4gICAgICBpc01vbml0b3JpbmdTY3JvbGxWYWx1ZSA9IHRydWU7XG4gICAg
fVxuICB9XG59KTtcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXI7
XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVh
Y3QtZG9tL2xpYi9SZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIuanNcbiAqKiBtb2R1bGUgaWQgPSAy
NVxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1w
cmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBU
aGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBm
b3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhp
cyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBj
YW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4g
KlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIFN5bnRoZXRpY1VJRXZlbnQgPSByZXF1aXJl
KCcuL1N5bnRoZXRpY1VJRXZlbnQnKTtcbnZhciBWaWV3cG9ydE1ldHJpY3MgPSByZXF1aXJlKCcu
L1ZpZXdwb3J0TWV0cmljcycpO1xuXG52YXIgZ2V0RXZlbnRNb2RpZmllclN0YXRlID0gcmVxdWly
ZSgnLi9nZXRFdmVudE1vZGlmaWVyU3RhdGUnKTtcblxuLyoqXG4gKiBAaW50ZXJmYWNlIE1vdXNl
RXZlbnRcbiAqIEBzZWUgaHR0cDovL3d3dy53My5vcmcvVFIvRE9NLUxldmVsLTMtRXZlbnRzL1xu
ICovXG52YXIgTW91c2VFdmVudEludGVyZmFjZSA9IHtcbiAgc2NyZWVuWDogbnVsbCxcbiAgc2Ny
ZWVuWTogbnVsbCxcbiAgY2xpZW50WDogbnVsbCxcbiAgY2xpZW50WTogbnVsbCxcbiAgY3RybEtl
eTogbnVsbCxcbiAgc2hpZnRLZXk6IG51bGwsXG4gIGFsdEtleTogbnVsbCxcbiAgbWV0YUtleTog
bnVsbCxcbiAgZ2V0TW9kaWZpZXJTdGF0ZTogZ2V0RXZlbnRNb2RpZmllclN0YXRlLFxuICBidXR0
b246IGZ1bmN0aW9uIChldmVudCkge1xuICAgIC8vIFdlYmtpdCwgRmlyZWZveCwgSUU5K1xuICAg
IC8vIHdoaWNoOiAgMSAyIDNcbiAgICAvLyBidXR0b246IDAgMSAyIChzdGFuZGFyZClcbiAgICB2
YXIgYnV0dG9uID0gZXZlbnQuYnV0dG9uO1xuICAgIGlmICgnd2hpY2gnIGluIGV2ZW50KSB7XG4g
ICAgICByZXR1cm4gYnV0dG9uO1xuICAgIH1cbiAgICAvLyBJRTw5XG4gICAgLy8gd2hpY2g6ICB1
bmRlZmluZWRcbiAgICAvLyBidXR0b246IDAgMCAwXG4gICAgLy8gYnV0dG9uOiAxIDQgMiAob25t
b3VzZXVwKVxuICAgIHJldHVybiBidXR0b24gPT09IDIgPyAyIDogYnV0dG9uID09PSA0ID8gMSA6
IDA7XG4gIH0sXG4gIGJ1dHRvbnM6IG51bGwsXG4gIHJlbGF0ZWRUYXJnZXQ6IGZ1bmN0aW9uIChl
dmVudCkge1xuICAgIHJldHVybiBldmVudC5yZWxhdGVkVGFyZ2V0IHx8IChldmVudC5mcm9tRWxl
bWVudCA9PT0gZXZlbnQuc3JjRWxlbWVudCA/IGV2ZW50LnRvRWxlbWVudCA6IGV2ZW50LmZyb21F
bGVtZW50KTtcbiAgfSxcbiAgLy8gXCJQcm9wcmlldGFyeVwiIEludGVyZmFjZS5cbiAgcGFnZVg6
IGZ1bmN0aW9uIChldmVudCkge1xuICAgIHJldHVybiAncGFnZVgnIGluIGV2ZW50ID8gZXZlbnQu
cGFnZVggOiBldmVudC5jbGllbnRYICsgVmlld3BvcnRNZXRyaWNzLmN1cnJlbnRTY3JvbGxMZWZ0
O1xuICB9LFxuICBwYWdlWTogZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgcmV0dXJuICdwYWdlWScg
aW4gZXZlbnQgPyBldmVudC5wYWdlWSA6IGV2ZW50LmNsaWVudFkgKyBWaWV3cG9ydE1ldHJpY3Mu
Y3VycmVudFNjcm9sbFRvcDtcbiAgfVxufTtcblxuLyoqXG4gKiBAcGFyYW0ge29iamVjdH0gZGlz
cGF0Y2hDb25maWcgQ29uZmlndXJhdGlvbiB1c2VkIHRvIGRpc3BhdGNoIHRoaXMgZXZlbnQuXG4g
KiBAcGFyYW0ge3N0cmluZ30gZGlzcGF0Y2hNYXJrZXIgTWFya2VyIGlkZW50aWZ5aW5nIHRoZSBl
dmVudCB0YXJnZXQuXG4gKiBAcGFyYW0ge29iamVjdH0gbmF0aXZlRXZlbnQgTmF0aXZlIGJyb3dz
ZXIgZXZlbnQuXG4gKiBAZXh0ZW5kcyB7U3ludGhldGljVUlFdmVudH1cbiAqL1xuZnVuY3Rpb24g
U3ludGhldGljTW91c2VFdmVudChkaXNwYXRjaENvbmZpZywgZGlzcGF0Y2hNYXJrZXIsIG5hdGl2
ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCkge1xuICByZXR1cm4gU3ludGhldGljVUlFdmVudC5j
YWxsKHRoaXMsIGRpc3BhdGNoQ29uZmlnLCBkaXNwYXRjaE1hcmtlciwgbmF0aXZlRXZlbnQsIG5h
dGl2ZUV2ZW50VGFyZ2V0KTtcbn1cblxuU3ludGhldGljVUlFdmVudC5hdWdtZW50Q2xhc3MoU3lu
dGhldGljTW91c2VFdmVudCwgTW91c2VFdmVudEludGVyZmFjZSk7XG5cbm1vZHVsZS5leHBvcnRz
ID0gU3ludGhldGljTW91c2VFdmVudDtcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQ
QUNLIEZPT1RFUlxuICoqIC4vfi9yZWFjdC1kb20vbGliL1N5bnRoZXRpY01vdXNlRXZlbnQuanNc
biAqKiBtb2R1bGUgaWQgPSAyNlxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4g
KiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyBy
ZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBC
U0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9v
dCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICog
b2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUg
c2FtZSBkaXJlY3RvcnkuXG4gKlxuICogXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgX3By
b2RJbnZhcmlhbnQgPSByZXF1aXJlKCcuL3JlYWN0UHJvZEludmFyaWFudCcpO1xuXG52YXIgaW52
YXJpYW50ID0gcmVxdWlyZSgnZmJqcy9saWIvaW52YXJpYW50Jyk7XG5cbnZhciBPQlNFUlZFRF9F
UlJPUiA9IHt9O1xuXG4vKipcbiAqIGBUcmFuc2FjdGlvbmAgY3JlYXRlcyBhIGJsYWNrIGJveCB0
aGF0IGlzIGFibGUgdG8gd3JhcCBhbnkgbWV0aG9kIHN1Y2ggdGhhdFxuICogY2VydGFpbiBpbnZh
cmlhbnRzIGFyZSBtYWludGFpbmVkIGJlZm9yZSBhbmQgYWZ0ZXIgdGhlIG1ldGhvZCBpcyBpbnZv
a2VkXG4gKiAoRXZlbiBpZiBhbiBleGNlcHRpb24gaXMgdGhyb3duIHdoaWxlIGludm9raW5nIHRo
ZSB3cmFwcGVkIG1ldGhvZCkuIFdob2V2ZXJcbiAqIGluc3RhbnRpYXRlcyBhIHRyYW5zYWN0aW9u
IGNhbiBwcm92aWRlIGVuZm9yY2VycyBvZiB0aGUgaW52YXJpYW50cyBhdFxuICogY3JlYXRpb24g
dGltZS4gVGhlIGBUcmFuc2FjdGlvbmAgY2xhc3MgaXRzZWxmIHdpbGwgc3VwcGx5IG9uZSBhZGRp
dGlvbmFsXG4gKiBhdXRvbWF0aWMgaW52YXJpYW50IGZvciB5b3UgLSB0aGUgaW52YXJpYW50IHRo
YXQgYW55IHRyYW5zYWN0aW9uIGluc3RhbmNlXG4gKiBzaG91bGQgbm90IGJlIHJ1biB3aGlsZSBp
dCBpcyBhbHJlYWR5IGJlaW5nIHJ1bi4gWW91IHdvdWxkIHR5cGljYWxseSBjcmVhdGUgYVxuICog
c2luZ2xlIGluc3RhbmNlIG9mIGEgYFRyYW5zYWN0aW9uYCBmb3IgcmV1c2UgbXVsdGlwbGUgdGlt
ZXMsIHRoYXQgcG90ZW50aWFsbHlcbiAqIGlzIHVzZWQgdG8gd3JhcCBzZXZlcmFsIGRpZmZlcmVu
dCBtZXRob2RzLiBXcmFwcGVycyBhcmUgZXh0cmVtZWx5IHNpbXBsZSAtXG4gKiB0aGV5IG9ubHkg
cmVxdWlyZSBpbXBsZW1lbnRpbmcgdHdvIG1ldGhvZHMuXG4gKlxuICogPHByZT5cbiAqICAgICAg
ICAgICAgICAgICAgICAgICB3cmFwcGVycyAoaW5qZWN0ZWQgYXQgY3JlYXRpb24gdGltZSlcbiAq
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArICAgICAgICArXG4gKiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgfFxuICogICAgICAgICAg
ICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLXwtLS0tLS0tLS0tLS0tLStcbiAq
ICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICB2ICAgICAgICB8ICAgICAgICAg
ICAgICB8XG4gKiAgICAgICAgICAgICAgICAgICAgfCAgICAgICstLS0tLS0tLS0tLS0tLS0rICAg
fCAgICAgICAgICAgICAgfFxuICogICAgICAgICAgICAgICAgICAgIHwgICArLS18ICAgIHdyYXBw
ZXIxICAgfC0tLXwtLS0tKyAgICAgICAgIHxcbiAqICAgICAgICAgICAgICAgICAgICB8ICAgfCAg
Ky0tLS0tLS0tLS0tLS0tLSsgICB2ICAgIHwgICAgICAgICB8XG4gKiAgICAgICAgICAgICAgICAg
ICAgfCAgIHwgICAgICAgICAgKy0tLS0tLS0tLS0tLS0rICB8ICAgICAgICAgfFxuICogICAgICAg
ICAgICAgICAgICAgIHwgICB8ICAgICArLS0tLXwgICB3cmFwcGVyMiAgfC0tLS0tLS0tKyAgIHxc
biAqICAgICAgICAgICAgICAgICAgICB8ICAgfCAgICAgfCAgICArLS0tLS0tLS0tLS0tLSsgIHwg
ICAgIHwgICB8XG4gKiAgICAgICAgICAgICAgICAgICAgfCAgIHwgICAgIHwgICAgICAgICAgICAg
ICAgICAgICB8ICAgICB8ICAgfFxuICogICAgICAgICAgICAgICAgICAgIHwgICB2ICAgICB2ICAg
ICAgICAgICAgICAgICAgICAgdiAgICAgdiAgIHwgd3JhcHBlclxuICogICAgICAgICAgICAgICAg
ICAgIHwgKy0tLSsgKy0tLSsgICArLS0tLS0tLS0tKyAgICstLS0rICstLS0rIHwgaW52YXJpYW50
c1xuICogcGVyZm9ybShhbnlNZXRob2QpIHwgfCAgIHwgfCAgIHwgICB8ICAgICAgICAgfCAgIHwg
ICB8IHwgICB8IHwgbWFpbnRhaW5lZFxuICogKy0tLS0tLS0tLS0tLS0tLS0tPnwtfC0tLXwtfC0t
LXwtLT58YW55TWV0aG9kfC0tLXwtLS18LXwtLS18LXwtLS0tLS0tLT5cbiAqICAgICAgICAgICAg
ICAgICAgICB8IHwgICB8IHwgICB8ICAgfCAgICAgICAgIHwgICB8ICAgfCB8ICAgfCB8XG4gKiAg
ICAgICAgICAgICAgICAgICAgfCB8ICAgfCB8ICAgfCAgIHwgICAgICAgICB8ICAgfCAgIHwgfCAg
IHwgfFxuICogICAgICAgICAgICAgICAgICAgIHwgfCAgIHwgfCAgIHwgICB8ICAgICAgICAgfCAg
IHwgICB8IHwgICB8IHxcbiAqICAgICAgICAgICAgICAgICAgICB8ICstLS0rICstLS0rICAgKy0t
LS0tLS0tLSsgICArLS0tKyArLS0tKyB8XG4gKiAgICAgICAgICAgICAgICAgICAgfCAgaW5pdGlh
bGl6ZSAgICAgICAgICAgICAgICAgICAgY2xvc2UgICAgfFxuICogICAgICAgICAgICAgICAgICAg
ICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAqIDwvcHJlPlxu
ICpcbiAqIFVzZSBjYXNlczpcbiAqIC0gUHJlc2VydmluZyB0aGUgaW5wdXQgc2VsZWN0aW9uIHJh
bmdlcyBiZWZvcmUvYWZ0ZXIgcmVjb25jaWxpYXRpb24uXG4gKiAgIFJlc3RvcmluZyBzZWxlY3Rp
b24gZXZlbiBpbiB0aGUgZXZlbnQgb2YgYW4gdW5leHBlY3RlZCBlcnJvci5cbiAqIC0gRGVhY3Rp
dmF0aW5nIGV2ZW50cyB3aGlsZSByZWFycmFuZ2luZyB0aGUgRE9NLCBwcmV2ZW50aW5nIGJsdXJz
L2ZvY3VzZXMsXG4gKiAgIHdoaWxlIGd1YXJhbnRlZWluZyB0aGF0IGFmdGVyd2FyZHMsIHRoZSBl
dmVudCBzeXN0ZW0gaXMgcmVhY3RpdmF0ZWQuXG4gKiAtIEZsdXNoaW5nIGEgcXVldWUgb2YgY29s
bGVjdGVkIERPTSBtdXRhdGlvbnMgdG8gdGhlIG1haW4gVUkgdGhyZWFkIGFmdGVyIGFcbiAqICAg
cmVjb25jaWxpYXRpb24gdGFrZXMgcGxhY2UgaW4gYSB3b3JrZXIgdGhyZWFkLlxuICogLSBJbnZv
a2luZyBhbnkgY29sbGVjdGVkIGBjb21wb25lbnREaWRVcGRhdGVgIGNhbGxiYWNrcyBhZnRlciBy
ZW5kZXJpbmcgbmV3XG4gKiAgIGNvbnRlbnQuXG4gKiAtIChGdXR1cmUgdXNlIGNhc2UpOiBXcmFw
cGluZyBwYXJ0aWN1bGFyIGZsdXNoZXMgb2YgdGhlIGBSZWFjdFdvcmtlcmAgcXVldWVcbiAqICAg
dG8gcHJlc2VydmUgdGhlIGBzY3JvbGxUb3BgIChhbiBhdXRvbWF0aWMgc2Nyb2xsIGF3YXJlIERP
TSkuXG4gKiAtIChGdXR1cmUgdXNlIGNhc2UpOiBMYXlvdXQgY2FsY3VsYXRpb25zIGJlZm9yZSBh
bmQgYWZ0ZXIgRE9NIHVwZGF0ZXMuXG4gKlxuICogVHJhbnNhY3Rpb25hbCBwbHVnaW4gQVBJOlxu
ICogLSBBIG1vZHVsZSB0aGF0IGhhcyBhbiBgaW5pdGlhbGl6ZWAgbWV0aG9kIHRoYXQgcmV0dXJu
cyBhbnkgcHJlY29tcHV0YXRpb24uXG4gKiAtIGFuZCBhIGBjbG9zZWAgbWV0aG9kIHRoYXQgYWNj
ZXB0cyB0aGUgcHJlY29tcHV0YXRpb24uIGBjbG9zZWAgaXMgaW52b2tlZFxuICogICB3aGVuIHRo
ZSB3cmFwcGVkIHByb2Nlc3MgaXMgY29tcGxldGVkLCBvciBoYXMgZmFpbGVkLlxuICpcbiAqIEBw
YXJhbSB7QXJyYXk8VHJhbnNhY3Rpb25hbFdyYXBwZXI+fSB0cmFuc2FjdGlvbldyYXBwZXIgV3Jh
cHBlciBtb2R1bGVzXG4gKiB0aGF0IGltcGxlbWVudCBgaW5pdGlhbGl6ZWAgYW5kIGBjbG9zZWAu
XG4gKiBAcmV0dXJuIHtUcmFuc2FjdGlvbn0gU2luZ2xlIHRyYW5zYWN0aW9uIGZvciByZXVzZSBp
biB0aHJlYWQuXG4gKlxuICogQGNsYXNzIFRyYW5zYWN0aW9uXG4gKi9cbnZhciBUcmFuc2FjdGlv
bkltcGwgPSB7XG4gIC8qKlxuICAgKiBTZXRzIHVwIHRoaXMgaW5zdGFuY2Ugc28gdGhhdCBpdCBp
cyBwcmVwYXJlZCBmb3IgY29sbGVjdGluZyBtZXRyaWNzLiBEb2VzXG4gICAqIHNvIHN1Y2ggdGhh
dCB0aGlzIHNldHVwIG1ldGhvZCBtYXkgYmUgdXNlZCBvbiBhbiBpbnN0YW5jZSB0aGF0IGlzIGFs
cmVhZHlcbiAgICogaW5pdGlhbGl6ZWQsIGluIGEgd2F5IHRoYXQgZG9lcyBub3QgY29uc3VtZSBh
ZGRpdGlvbmFsIG1lbW9yeSB1cG9uIHJldXNlLlxuICAgKiBUaGF0IGNhbiBiZSB1c2VmdWwgaWYg
eW91IGRlY2lkZSB0byBtYWtlIHlvdXIgc3ViY2xhc3Mgb2YgdGhpcyBtaXhpbiBhXG4gICAqIFwi
UG9vbGVkQ2xhc3NcIi5cbiAgICovXG4gIHJlaW5pdGlhbGl6ZVRyYW5zYWN0aW9uOiBmdW5jdGlv
biAoKSB7XG4gICAgdGhpcy50cmFuc2FjdGlvbldyYXBwZXJzID0gdGhpcy5nZXRUcmFuc2FjdGlv
bldyYXBwZXJzKCk7XG4gICAgaWYgKHRoaXMud3JhcHBlckluaXREYXRhKSB7XG4gICAgICB0aGlz
LndyYXBwZXJJbml0RGF0YS5sZW5ndGggPSAwO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLndy
YXBwZXJJbml0RGF0YSA9IFtdO1xuICAgIH1cbiAgICB0aGlzLl9pc0luVHJhbnNhY3Rpb24gPSBm
YWxzZTtcbiAgfSxcblxuICBfaXNJblRyYW5zYWN0aW9uOiBmYWxzZSxcblxuICAvKipcbiAgICog
QGFic3RyYWN0XG4gICAqIEByZXR1cm4ge0FycmF5PFRyYW5zYWN0aW9uV3JhcHBlcj59IEFycmF5
IG9mIHRyYW5zYWN0aW9uIHdyYXBwZXJzLlxuICAgKi9cbiAgZ2V0VHJhbnNhY3Rpb25XcmFwcGVy
czogbnVsbCxcblxuICBpc0luVHJhbnNhY3Rpb246IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4g
ISF0aGlzLl9pc0luVHJhbnNhY3Rpb247XG4gIH0sXG5cbiAgLyogZXNsaW50LWRpc2FibGUgc3Bh
Y2UtYmVmb3JlLWZ1bmN0aW9uLXBhcmVuICovXG5cbiAgLyoqXG4gICAqIEV4ZWN1dGVzIHRoZSBm
dW5jdGlvbiB3aXRoaW4gYSBzYWZldHkgd2luZG93LiBVc2UgdGhpcyBmb3IgdGhlIHRvcCBsZXZl
bFxuICAgKiBtZXRob2RzIHRoYXQgcmVzdWx0IGluIGxhcmdlIGFtb3VudHMgb2YgY29tcHV0YXRp
b24vbXV0YXRpb25zIHRoYXQgd291bGRcbiAgICogbmVlZCB0byBiZSBzYWZldHkgY2hlY2tlZC4g
VGhlIG9wdGlvbmFsIGFyZ3VtZW50cyBoZWxwcyBwcmV2ZW50IHRoZSBuZWVkXG4gICAqIHRvIGJp
bmQgaW4gbWFueSBjYXNlcy5cbiAgICpcbiAgICogQHBhcmFtIHtmdW5jdGlvbn0gbWV0aG9kIE1l
bWJlciBvZiBzY29wZSB0byBjYWxsLlxuICAgKiBAcGFyYW0ge09iamVjdH0gc2NvcGUgU2NvcGUg
dG8gaW52b2tlIGZyb20uXG4gICAqIEBwYXJhbSB7T2JqZWN0Pz19IGEgQXJndW1lbnQgdG8gcGFz
cyB0byB0aGUgbWV0aG9kLlxuICAgKiBAcGFyYW0ge09iamVjdD89fSBiIEFyZ3VtZW50IHRvIHBh
c3MgdG8gdGhlIG1ldGhvZC5cbiAgICogQHBhcmFtIHtPYmplY3Q/PX0gYyBBcmd1bWVudCB0byBw
YXNzIHRvIHRoZSBtZXRob2QuXG4gICAqIEBwYXJhbSB7T2JqZWN0Pz19IGQgQXJndW1lbnQgdG8g
cGFzcyB0byB0aGUgbWV0aG9kLlxuICAgKiBAcGFyYW0ge09iamVjdD89fSBlIEFyZ3VtZW50IHRv
IHBhc3MgdG8gdGhlIG1ldGhvZC5cbiAgICogQHBhcmFtIHtPYmplY3Q/PX0gZiBBcmd1bWVudCB0
byBwYXNzIHRvIHRoZSBtZXRob2QuXG4gICAqXG4gICAqIEByZXR1cm4geyp9IFJldHVybiB2YWx1
ZSBmcm9tIGBtZXRob2RgLlxuICAgKi9cbiAgcGVyZm9ybTogZnVuY3Rpb24gKG1ldGhvZCwgc2Nv
cGUsIGEsIGIsIGMsIGQsIGUsIGYpIHtcbiAgICAvKiBlc2xpbnQtZW5hYmxlIHNwYWNlLWJlZm9y
ZS1mdW5jdGlvbi1wYXJlbiAqL1xuICAgICEhdGhpcy5pc0luVHJhbnNhY3Rpb24oKSA/IHByb2Nl
c3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdUcmFu
c2FjdGlvbi5wZXJmb3JtKC4uLik6IENhbm5vdCBpbml0aWFsaXplIGEgdHJhbnNhY3Rpb24gd2hl
biB0aGVyZSBpcyBhbHJlYWR5IGFuIG91dHN0YW5kaW5nIHRyYW5zYWN0aW9uLicpIDogX3Byb2RJ
bnZhcmlhbnQoJzI3JykgOiB2b2lkIDA7XG4gICAgdmFyIGVycm9yVGhyb3duO1xuICAgIHZhciBy
ZXQ7XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMuX2lzSW5UcmFuc2FjdGlvbiA9IHRydWU7XG4gICAg
ICAvLyBDYXRjaGluZyBlcnJvcnMgbWFrZXMgZGVidWdnaW5nIG1vcmUgZGlmZmljdWx0LCBzbyB3
ZSBzdGFydCB3aXRoXG4gICAgICAvLyBlcnJvclRocm93biBzZXQgdG8gdHJ1ZSBiZWZvcmUgc2V0
dGluZyBpdCB0byBmYWxzZSBhZnRlciBjYWxsaW5nXG4gICAgICAvLyBjbG9zZSAtLSBpZiBpdCdz
IHN0aWxsIHNldCB0byB0cnVlIGluIHRoZSBmaW5hbGx5IGJsb2NrLCBpdCBtZWFuc1xuICAgICAg
Ly8gb25lIG9mIHRoZXNlIGNhbGxzIHRocmV3LlxuICAgICAgZXJyb3JUaHJvd24gPSB0cnVlO1xu
ICAgICAgdGhpcy5pbml0aWFsaXplQWxsKDApO1xuICAgICAgcmV0ID0gbWV0aG9kLmNhbGwoc2Nv
cGUsIGEsIGIsIGMsIGQsIGUsIGYpO1xuICAgICAgZXJyb3JUaHJvd24gPSBmYWxzZTtcbiAgICB9
IGZpbmFsbHkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgaWYgKGVycm9yVGhyb3duKSB7XG4gICAg
ICAgICAgLy8gSWYgYG1ldGhvZGAgdGhyb3dzLCBwcmVmZXIgdG8gc2hvdyB0aGF0IHN0YWNrIHRy
YWNlIG92ZXIgYW55IHRocm93blxuICAgICAgICAgIC8vIGJ5IGludm9raW5nIGBjbG9zZUFsbGAu
XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHRoaXMuY2xvc2VBbGwoMCk7XG4gICAgICAg
ICAgfSBjYXRjaCAoZXJyKSB7fVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIFNpbmNl
IGBtZXRob2RgIGRpZG4ndCB0aHJvdywgd2UgZG9uJ3Qgd2FudCB0byBzaWxlbmNlIHRoZSBleGNl
cHRpb25cbiAgICAgICAgICAvLyBoZXJlLlxuICAgICAgICAgIHRoaXMuY2xvc2VBbGwoMCk7XG4g
ICAgICAgIH1cbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIHRoaXMuX2lzSW5UcmFuc2FjdGlv
biA9IGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmV0O1xuICB9LFxuXG4gIGlu
aXRpYWxpemVBbGw6IGZ1bmN0aW9uIChzdGFydEluZGV4KSB7XG4gICAgdmFyIHRyYW5zYWN0aW9u
V3JhcHBlcnMgPSB0aGlzLnRyYW5zYWN0aW9uV3JhcHBlcnM7XG4gICAgZm9yICh2YXIgaSA9IHN0
YXJ0SW5kZXg7IGkgPCB0cmFuc2FjdGlvbldyYXBwZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2
YXIgd3JhcHBlciA9IHRyYW5zYWN0aW9uV3JhcHBlcnNbaV07XG4gICAgICB0cnkge1xuICAgICAg
ICAvLyBDYXRjaGluZyBlcnJvcnMgbWFrZXMgZGVidWdnaW5nIG1vcmUgZGlmZmljdWx0LCBzbyB3
ZSBzdGFydCB3aXRoIHRoZVxuICAgICAgICAvLyBPQlNFUlZFRF9FUlJPUiBzdGF0ZSBiZWZvcmUg
b3ZlcndyaXRpbmcgaXQgd2l0aCB0aGUgcmVhbCByZXR1cm4gdmFsdWVcbiAgICAgICAgLy8gb2Yg
aW5pdGlhbGl6ZSAtLSBpZiBpdCdzIHN0aWxsIHNldCB0byBPQlNFUlZFRF9FUlJPUiBpbiB0aGUg
ZmluYWxseVxuICAgICAgICAvLyBibG9jaywgaXQgbWVhbnMgd3JhcHBlci5pbml0aWFsaXplIHRo
cmV3LlxuICAgICAgICB0aGlzLndyYXBwZXJJbml0RGF0YVtpXSA9IE9CU0VSVkVEX0VSUk9SO1xu
ICAgICAgICB0aGlzLndyYXBwZXJJbml0RGF0YVtpXSA9IHdyYXBwZXIuaW5pdGlhbGl6ZSA/IHdy
YXBwZXIuaW5pdGlhbGl6ZS5jYWxsKHRoaXMpIDogbnVsbDtcbiAgICAgIH0gZmluYWxseSB7XG4g
ICAgICAgIGlmICh0aGlzLndyYXBwZXJJbml0RGF0YVtpXSA9PT0gT0JTRVJWRURfRVJST1IpIHtc
biAgICAgICAgICAvLyBUaGUgaW5pdGlhbGl6ZXIgZm9yIHdyYXBwZXIgaSB0aHJldyBhbiBlcnJv
cjsgaW5pdGlhbGl6ZSB0aGVcbiAgICAgICAgICAvLyByZW1haW5pbmcgd3JhcHBlcnMgYnV0IHNp
bGVuY2UgYW55IGV4Y2VwdGlvbnMgZnJvbSB0aGVtIHRvIGVuc3VyZVxuICAgICAgICAgIC8vIHRo
YXQgdGhlIGZpcnN0IGVycm9yIGlzIHRoZSBvbmUgdG8gYnViYmxlIHVwLlxuICAgICAgICAgIHRy
eSB7XG4gICAgICAgICAgICB0aGlzLmluaXRpYWxpemVBbGwoaSArIDEpO1xuICAgICAgICAgIH0g
Y2F0Y2ggKGVycikge31cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfSxcblxuICAvKipc
biAgICogSW52b2tlcyBlYWNoIG9mIGB0aGlzLnRyYW5zYWN0aW9uV3JhcHBlcnMuY2xvc2VbaV1g
IGZ1bmN0aW9ucywgcGFzc2luZyBpbnRvXG4gICAqIHRoZW0gdGhlIHJlc3BlY3RpdmUgcmV0dXJu
IHZhbHVlcyBvZiBgdGhpcy50cmFuc2FjdGlvbldyYXBwZXJzLmluaXRbaV1gXG4gICAqIChgY2xv
c2VgcnMgdGhhdCBjb3JyZXNwb25kIHRvIGluaXRpYWxpemVycyB0aGF0IGZhaWxlZCB3aWxsIG5v
dCBiZVxuICAgKiBpbnZva2VkKS5cbiAgICovXG4gIGNsb3NlQWxsOiBmdW5jdGlvbiAoc3RhcnRJ
bmRleCkge1xuICAgICF0aGlzLmlzSW5UcmFuc2FjdGlvbigpID8gcHJvY2Vzcy5lbnYuTk9ERV9F
TlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ1RyYW5zYWN0aW9uLmNsb3Nl
QWxsKCk6IENhbm5vdCBjbG9zZSB0cmFuc2FjdGlvbiB3aGVuIG5vbmUgYXJlIG9wZW4uJykgOiBf
cHJvZEludmFyaWFudCgnMjgnKSA6IHZvaWQgMDtcbiAgICB2YXIgdHJhbnNhY3Rpb25XcmFwcGVy
cyA9IHRoaXMudHJhbnNhY3Rpb25XcmFwcGVycztcbiAgICBmb3IgKHZhciBpID0gc3RhcnRJbmRl
eDsgaSA8IHRyYW5zYWN0aW9uV3JhcHBlcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciB3cmFw
cGVyID0gdHJhbnNhY3Rpb25XcmFwcGVyc1tpXTtcbiAgICAgIHZhciBpbml0RGF0YSA9IHRoaXMu
d3JhcHBlckluaXREYXRhW2ldO1xuICAgICAgdmFyIGVycm9yVGhyb3duO1xuICAgICAgdHJ5IHtc
biAgICAgICAgLy8gQ2F0Y2hpbmcgZXJyb3JzIG1ha2VzIGRlYnVnZ2luZyBtb3JlIGRpZmZpY3Vs
dCwgc28gd2Ugc3RhcnQgd2l0aFxuICAgICAgICAvLyBlcnJvclRocm93biBzZXQgdG8gdHJ1ZSBi
ZWZvcmUgc2V0dGluZyBpdCB0byBmYWxzZSBhZnRlciBjYWxsaW5nXG4gICAgICAgIC8vIGNsb3Nl
IC0tIGlmIGl0J3Mgc3RpbGwgc2V0IHRvIHRydWUgaW4gdGhlIGZpbmFsbHkgYmxvY2ssIGl0IG1l
YW5zXG4gICAgICAgIC8vIHdyYXBwZXIuY2xvc2UgdGhyZXcuXG4gICAgICAgIGVycm9yVGhyb3du
ID0gdHJ1ZTtcbiAgICAgICAgaWYgKGluaXREYXRhICE9PSBPQlNFUlZFRF9FUlJPUiAmJiB3cmFw
cGVyLmNsb3NlKSB7XG4gICAgICAgICAgd3JhcHBlci5jbG9zZS5jYWxsKHRoaXMsIGluaXREYXRh
KTtcbiAgICAgICAgfVxuICAgICAgICBlcnJvclRocm93biA9IGZhbHNlO1xuICAgICAgfSBmaW5h
bGx5IHtcbiAgICAgICAgaWYgKGVycm9yVGhyb3duKSB7XG4gICAgICAgICAgLy8gVGhlIGNsb3Nl
ciBmb3Igd3JhcHBlciBpIHRocmV3IGFuIGVycm9yOyBjbG9zZSB0aGUgcmVtYWluaW5nXG4gICAg
ICAgICAgLy8gd3JhcHBlcnMgYnV0IHNpbGVuY2UgYW55IGV4Y2VwdGlvbnMgZnJvbSB0aGVtIHRv
IGVuc3VyZSB0aGF0IHRoZVxuICAgICAgICAgIC8vIGZpcnN0IGVycm9yIGlzIHRoZSBvbmUgdG8g
YnViYmxlIHVwLlxuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICB0aGlzLmNsb3NlQWxsKGkg
KyAxKTtcbiAgICAgICAgICB9IGNhdGNoIChlKSB7fVxuICAgICAgICB9XG4gICAgICB9XG4gICAg
fVxuICAgIHRoaXMud3JhcHBlckluaXREYXRhLmxlbmd0aCA9IDA7XG4gIH1cbn07XG5cbm1vZHVs
ZS5leHBvcnRzID0gVHJhbnNhY3Rpb25JbXBsO1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoq
IFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0LWRvbS9saWIvVHJhbnNhY3Rpb24uanNcbiAq
KiBtb2R1bGUgaWQgPSAyN1xuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBD
b3B5cmlnaHQgMjAxNi1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNl
cnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qt
c3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBk
aXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2Yg
cGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2Ft
ZSBkaXJlY3RvcnkuXG4gKlxuICogQmFzZWQgb24gdGhlIGVzY2FwZS1odG1sIGxpYnJhcnksIHdo
aWNoIGlzIHVzZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlIGJlbG93OlxuICpcbiAqIENvcHlyaWdo
dCAoYykgMjAxMi0yMDEzIFRKIEhvbG93YXljaHVrXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTUgQW5k
cmVhcyBMdWJiZVxuICogQ29weXJpZ2h0IChjKSAyMDE1IFRpYW5jaGVuZyBcIlRpbW90aHlcIiBH
dVxuICpcbiAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0
byBhbnkgcGVyc29uIG9idGFpbmluZ1xuICogYSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFz
c29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlXG4gKiAnU29mdHdhcmUnKSwgdG8gZGVh
bCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nXG4gKiB3aXRo
b3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1
Ymxpc2gsXG4gKiBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2Yg
dGhlIFNvZnR3YXJlLCBhbmQgdG9cbiAqIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3
YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0b1xuICogdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zOlxuICpcbiAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBl
cm1pc3Npb24gbm90aWNlIHNoYWxsIGJlXG4gKiBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1
YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbiAqXG4gKiBUSEUgU09GVFdBUkUg
SVMgUFJPVklERUQgJ0FTIElTJywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCxcbiAqIEVY
UFJFU1MgT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFO
VElFUyBPRlxuICogTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULlxuICogSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhP
UlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTllcbiAqIENMQUlNLCBEQU1B
R0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1Qs
XG4gKiBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVD
VElPTiBXSVRIIFRIRVxuICogU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJ
TiBUSEUgU09GVFdBUkUuXG4gKlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxuLy8gY29kZSBjb3Bp
ZWQgYW5kIG1vZGlmaWVkIGZyb20gZXNjYXBlLWh0bWxcbi8qKlxuICogTW9kdWxlIHZhcmlhYmxl
cy5cbiAqIEBwcml2YXRlXG4gKi9cblxudmFyIG1hdGNoSHRtbFJlZ0V4cCA9IC9bXCInJjw+XS87
XG5cbi8qKlxuICogRXNjYXBlIHNwZWNpYWwgY2hhcmFjdGVycyBpbiB0aGUgZ2l2ZW4gc3RyaW5n
IG9mIGh0bWwuXG4gKlxuICogQHBhcmFtICB7c3RyaW5nfSBzdHJpbmcgVGhlIHN0cmluZyB0byBl
c2NhcGUgZm9yIGluc2VydGluZyBpbnRvIEhUTUxcbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqIEBw
dWJsaWNcbiAqL1xuXG5mdW5jdGlvbiBlc2NhcGVIdG1sKHN0cmluZykge1xuICB2YXIgc3RyID0g
JycgKyBzdHJpbmc7XG4gIHZhciBtYXRjaCA9IG1hdGNoSHRtbFJlZ0V4cC5leGVjKHN0cik7XG5c
biAgaWYgKCFtYXRjaCkge1xuICAgIHJldHVybiBzdHI7XG4gIH1cblxuICB2YXIgZXNjYXBlO1xu
ICB2YXIgaHRtbCA9ICcnO1xuICB2YXIgaW5kZXggPSAwO1xuICB2YXIgbGFzdEluZGV4ID0gMDtc
blxuICBmb3IgKGluZGV4ID0gbWF0Y2guaW5kZXg7IGluZGV4IDwgc3RyLmxlbmd0aDsgaW5kZXgr
Kykge1xuICAgIHN3aXRjaCAoc3RyLmNoYXJDb2RlQXQoaW5kZXgpKSB7XG4gICAgICBjYXNlIDM0
OlxuICAgICAgICAvLyBcIlxuICAgICAgICBlc2NhcGUgPSAnJnF1b3Q7JztcbiAgICAgICAgYnJl
YWs7XG4gICAgICBjYXNlIDM4OlxuICAgICAgICAvLyAmXG4gICAgICAgIGVzY2FwZSA9ICcmYW1w
Oyc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAzOTpcbiAgICAgICAgLy8gJ1xuICAgICAg
ICBlc2NhcGUgPSAnJiN4Mjc7JzsgLy8gbW9kaWZpZWQgZnJvbSBlc2NhcGUtaHRtbDsgdXNlZCB0
byBiZSAnJiMzOSdcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDYwOlxuICAgICAgICAvLyA8
XG4gICAgICAgIGVzY2FwZSA9ICcmbHQ7JztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDYy
OlxuICAgICAgICAvLyA+XG4gICAgICAgIGVzY2FwZSA9ICcmZ3Q7JztcbiAgICAgICAgYnJlYWs7
XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBpZiAobGFz
dEluZGV4ICE9PSBpbmRleCkge1xuICAgICAgaHRtbCArPSBzdHIuc3Vic3RyaW5nKGxhc3RJbmRl
eCwgaW5kZXgpO1xuICAgIH1cblxuICAgIGxhc3RJbmRleCA9IGluZGV4ICsgMTtcbiAgICBodG1s
ICs9IGVzY2FwZTtcbiAgfVxuXG4gIHJldHVybiBsYXN0SW5kZXggIT09IGluZGV4ID8gaHRtbCAr
IHN0ci5zdWJzdHJpbmcobGFzdEluZGV4LCBpbmRleCkgOiBodG1sO1xufVxuLy8gZW5kIGNvZGUg
Y29waWVkIGFuZCBtb2RpZmllZCBmcm9tIGVzY2FwZS1odG1sXG5cbi8qKlxuICogRXNjYXBlcyB0
ZXh0IHRvIHByZXZlbnQgc2NyaXB0aW5nIGF0dGFja3MuXG4gKlxuICogQHBhcmFtIHsqfSB0ZXh0
IFRleHQgdmFsdWUgdG8gZXNjYXBlLlxuICogQHJldHVybiB7c3RyaW5nfSBBbiBlc2NhcGVkIHN0
cmluZy5cbiAqL1xuZnVuY3Rpb24gZXNjYXBlVGV4dENvbnRlbnRGb3JCcm93c2VyKHRleHQpIHtc
biAgaWYgKHR5cGVvZiB0ZXh0ID09PSAnYm9vbGVhbicgfHwgdHlwZW9mIHRleHQgPT09ICdudW1i
ZXInKSB7XG4gICAgLy8gdGhpcyBzaG9ydGNpcmN1aXQgaGVscHMgcGVyZiBmb3IgdHlwZXMgdGhh
dCB3ZSBrbm93IHdpbGwgbmV2ZXIgaGF2ZVxuICAgIC8vIHNwZWNpYWwgY2hhcmFjdGVycywgZXNw
ZWNpYWxseSBnaXZlbiB0aGF0IHRoaXMgZnVuY3Rpb24gaXMgdXNlZCBvZnRlblxuICAgIC8vIGZv
ciBudW1lcmljIGRvbSBpZHMuXG4gICAgcmV0dXJuICcnICsgdGV4dDtcbiAgfVxuICByZXR1cm4g
ZXNjYXBlSHRtbCh0ZXh0KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBlc2NhcGVUZXh0Q29udGVu
dEZvckJyb3dzZXI7XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJc
biAqKiAuL34vcmVhY3QtZG9tL2xpYi9lc2NhcGVUZXh0Q29udGVudEZvckJyb3dzZXIuanNcbiAq
KiBtb2R1bGUgaWQgPSAyOFxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBD
b3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNl
cnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qt
c3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBk
aXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2Yg
cGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2Ft
ZSBkaXJlY3RvcnkuXG4gKlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIEV4ZWN1dGlvbkVu
dmlyb25tZW50ID0gcmVxdWlyZSgnZmJqcy9saWIvRXhlY3V0aW9uRW52aXJvbm1lbnQnKTtcbnZh
ciBET01OYW1lc3BhY2VzID0gcmVxdWlyZSgnLi9ET01OYW1lc3BhY2VzJyk7XG5cbnZhciBXSElU
RVNQQUNFX1RFU1QgPSAvXlsgXFxyXFxuXFx0XFxmXS87XG52YXIgTk9OVklTSUJMRV9URVNUID0g
LzwoIS0tfGxpbmt8bm9zY3JpcHR8bWV0YXxzY3JpcHR8c3R5bGUpWyBcXHJcXG5cXHRcXGZcXC8+
XS87XG5cbnZhciBjcmVhdGVNaWNyb3NvZnRVbnNhZmVMb2NhbEZ1bmN0aW9uID0gcmVxdWlyZSgn
Li9jcmVhdGVNaWNyb3NvZnRVbnNhZmVMb2NhbEZ1bmN0aW9uJyk7XG5cbi8vIFNWRyB0ZW1wIGNv
bnRhaW5lciBmb3IgSUUgbGFja2luZyBpbm5lckhUTUxcbnZhciByZXVzYWJsZVNWR0NvbnRhaW5l
cjtcblxuLyoqXG4gKiBTZXQgdGhlIGlubmVySFRNTCBwcm9wZXJ0eSBvZiBhIG5vZGUsIGVuc3Vy
aW5nIHRoYXQgd2hpdGVzcGFjZSBpcyBwcmVzZXJ2ZWRcbiAqIGV2ZW4gaW4gSUU4LlxuICpcbiAq
IEBwYXJhbSB7RE9NRWxlbWVudH0gbm9kZVxuICogQHBhcmFtIHtzdHJpbmd9IGh0bWxcbiAqIEBp
bnRlcm5hbFxuICovXG52YXIgc2V0SW5uZXJIVE1MID0gY3JlYXRlTWljcm9zb2Z0VW5zYWZlTG9j
YWxGdW5jdGlvbihmdW5jdGlvbiAobm9kZSwgaHRtbCkge1xuICAvLyBJRSBkb2VzIG5vdCBoYXZl
IGlubmVySFRNTCBmb3IgU1ZHIG5vZGVzLCBzbyBpbnN0ZWFkIHdlIGluamVjdCB0aGVcbiAgLy8g
bmV3IG1hcmt1cCBpbiBhIHRlbXAgbm9kZSBhbmQgdGhlbiBtb3ZlIHRoZSBjaGlsZCBub2RlcyBh
Y3Jvc3MgaW50b1xuICAvLyB0aGUgdGFyZ2V0IG5vZGVcbiAgaWYgKG5vZGUubmFtZXNwYWNlVVJJ
ID09PSBET01OYW1lc3BhY2VzLnN2ZyAmJiAhKCdpbm5lckhUTUwnIGluIG5vZGUpKSB7XG4gICAg
cmV1c2FibGVTVkdDb250YWluZXIgPSByZXVzYWJsZVNWR0NvbnRhaW5lciB8fCBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICByZXVzYWJsZVNWR0NvbnRhaW5lci5pbm5lckhUTUwg
PSAnPHN2Zz4nICsgaHRtbCArICc8L3N2Zz4nO1xuICAgIHZhciBzdmdOb2RlID0gcmV1c2FibGVT
VkdDb250YWluZXIuZmlyc3RDaGlsZDtcbiAgICB3aGlsZSAoc3ZnTm9kZS5maXJzdENoaWxkKSB7
XG4gICAgICBub2RlLmFwcGVuZENoaWxkKHN2Z05vZGUuZmlyc3RDaGlsZCk7XG4gICAgfVxuICB9
IGVsc2Uge1xuICAgIG5vZGUuaW5uZXJIVE1MID0gaHRtbDtcbiAgfVxufSk7XG5cbmlmIChFeGVj
dXRpb25FbnZpcm9ubWVudC5jYW5Vc2VET00pIHtcbiAgLy8gSUU4OiBXaGVuIHVwZGF0aW5nIGEg
anVzdCBjcmVhdGVkIG5vZGUgd2l0aCBpbm5lckhUTUwgb25seSBsZWFkaW5nXG4gIC8vIHdoaXRl
c3BhY2UgaXMgcmVtb3ZlZC4gV2hlbiB1cGRhdGluZyBhbiBleGlzdGluZyBub2RlIHdpdGggaW5u
ZXJIVE1MXG4gIC8vIHdoaXRlc3BhY2UgaW4gcm9vdCBUZXh0Tm9kZXMgaXMgYWxzbyBjb2xsYXBz
ZWQuXG4gIC8vIEBzZWUgcXVpcmtzbW9kZS5vcmcvYnVncmVwb3J0cy9hcmNoaXZlcy8yMDA0LzEx
L2lubmVyaHRtbF9hbmRfdC5odG1sXG5cbiAgLy8gRmVhdHVyZSBkZXRlY3Rpb247IG9ubHkgSUU4
IGlzIGtub3duIHRvIGJlaGF2ZSBpbXByb3Blcmx5IGxpa2UgdGhpcy5cbiAgdmFyIHRlc3RFbGVt
ZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gIHRlc3RFbGVtZW50LmlubmVy
SFRNTCA9ICcgJztcbiAgaWYgKHRlc3RFbGVtZW50LmlubmVySFRNTCA9PT0gJycpIHtcbiAgICBz
ZXRJbm5lckhUTUwgPSBmdW5jdGlvbiAobm9kZSwgaHRtbCkge1xuICAgICAgLy8gTWFnaWMgdGhl
b3J5OiBJRTggc3VwcG9zZWRseSBkaWZmZXJlbnRpYXRlcyBiZXR3ZWVuIGFkZGVkIGFuZCB1cGRh
dGVkXG4gICAgICAvLyBub2RlcyB3aGVuIHByb2Nlc3NpbmcgaW5uZXJIVE1MLCBpbm5lckhUTUwg
b24gdXBkYXRlZCBub2RlcyBzdWZmZXJzXG4gICAgICAvLyBmcm9tIHdvcnNlIHdoaXRlc3BhY2Ug
YmVoYXZpb3IuIFJlLWFkZGluZyBhIG5vZGUgbGlrZSB0aGlzIHRyaWdnZXJzXG4gICAgICAvLyB0
aGUgaW5pdGlhbCBhbmQgbW9yZSBmYXZvcmFibGUgd2hpdGVzcGFjZSBiZWhhdmlvci5cbiAgICAg
IC8vIFRPRE86IFdoYXQgdG8gZG8gb24gYSBkZXRhY2hlZCBub2RlP1xuICAgICAgaWYgKG5vZGUu
cGFyZW50Tm9kZSkge1xuICAgICAgICBub2RlLnBhcmVudE5vZGUucmVwbGFjZUNoaWxkKG5vZGUs
IG5vZGUpO1xuICAgICAgfVxuXG4gICAgICAvLyBXZSBhbHNvIGltcGxlbWVudCBhIHdvcmthcm91
bmQgZm9yIG5vbi12aXNpYmxlIHRhZ3MgZGlzYXBwZWFyaW5nIGludG9cbiAgICAgIC8vIHRoaW4g
YWlyIG9uIElFOCwgdGhpcyBvbmx5IGhhcHBlbnMgaWYgdGhlcmUgaXMgbm8gdmlzaWJsZSB0ZXh0
XG4gICAgICAvLyBpbi1mcm9udCBvZiB0aGUgbm9uLXZpc2libGUgdGFncy4gUGlnZ3liYWNrIG9u
IHRoZSB3aGl0ZXNwYWNlIGZpeFxuICAgICAgLy8gYW5kIHNpbXBseSBjaGVjayBpZiBhbnkgbm9u
LXZpc2libGUgdGFncyBhcHBlYXIgaW4gdGhlIHNvdXJjZS5cbiAgICAgIGlmIChXSElURVNQQUNF
X1RFU1QudGVzdChodG1sKSB8fCBodG1sWzBdID09PSAnPCcgJiYgTk9OVklTSUJMRV9URVNULnRl
c3QoaHRtbCkpIHtcbiAgICAgICAgLy8gUmVjb3ZlciBsZWFkaW5nIHdoaXRlc3BhY2UgYnkgdGVt
cG9yYXJpbHkgcHJlcGVuZGluZyBhbnkgY2hhcmFjdGVyLlxuICAgICAgICAvLyBcXHVGRUZGIGhh
cyB0aGUgcG90ZW50aWFsIGFkdmFudGFnZSBvZiBiZWluZyB6ZXJvLXdpZHRoL2ludmlzaWJsZS5c
biAgICAgICAgLy8gVWdsaWZ5SlMgZHJvcHMgVStGRUZGIGNoYXJzIHdoZW4gcGFyc2luZywgc28g
dXNlIFN0cmluZy5mcm9tQ2hhckNvZGVcbiAgICAgICAgLy8gaW4gaG9wZXMgdGhhdCB0aGlzIGlz
IHByZXNlcnZlZCBldmVuIGlmIFwiXFx1RkVGRlwiIGlzIHRyYW5zZm9ybWVkIHRvXG4gICAgICAg
IC8vIHRoZSBhY3R1YWwgVW5pY29kZSBjaGFyYWN0ZXIgKGJ5IEJhYmVsLCBmb3IgZXhhbXBsZSku
XG4gICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9taXNob28vVWdsaWZ5SlMyL2Jsb2IvdjIu
NC4yMC9saWIvcGFyc2UuanMjTDIxNlxuICAgICAgICBub2RlLmlubmVySFRNTCA9IFN0cmluZy5m
cm9tQ2hhckNvZGUoMHhmZWZmKSArIGh0bWw7XG5cbiAgICAgICAgLy8gZGVsZXRlRGF0YSBsZWF2
ZXMgYW4gZW1wdHkgYFRleHROb2RlYCB3aGljaCBvZmZzZXRzIHRoZSBpbmRleCBvZiBhbGxcbiAg
ICAgICAgLy8gY2hpbGRyZW4uIERlZmluaXRlbHkgd2FudCB0byBhdm9pZCB0aGlzLlxuICAgICAg
ICB2YXIgdGV4dE5vZGUgPSBub2RlLmZpcnN0Q2hpbGQ7XG4gICAgICAgIGlmICh0ZXh0Tm9kZS5k
YXRhLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgIG5vZGUucmVtb3ZlQ2hpbGQodGV4dE5vZGUp
O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRleHROb2RlLmRlbGV0ZURhdGEoMCwgMSk7
XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG5vZGUuaW5uZXJIVE1MID0gaHRt
bDtcbiAgICAgIH1cbiAgICB9O1xuICB9XG4gIHRlc3RFbGVtZW50ID0gbnVsbDtcbn1cblxubW9k
dWxlLmV4cG9ydHMgPSBzZXRJbm5lckhUTUw7XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiog
V0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3QtZG9tL2xpYi9zZXRJbm5lckhUTUwuanNcbiAq
KiBtb2R1bGUgaWQgPSAyOVxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiJ3VzZSBzdHJp
Y3QnO1xuXG5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuZXhwb3J0cy5jb21wb3NlID0gZXhw
b3J0cy5hcHBseU1pZGRsZXdhcmUgPSBleHBvcnRzLmJpbmRBY3Rpb25DcmVhdG9ycyA9IGV4cG9y
dHMuY29tYmluZVJlZHVjZXJzID0gZXhwb3J0cy5jcmVhdGVTdG9yZSA9IHVuZGVmaW5lZDtcblxu
dmFyIF9jcmVhdGVTdG9yZSA9IHJlcXVpcmUoJy4vY3JlYXRlU3RvcmUnKTtcblxudmFyIF9jcmVh
dGVTdG9yZTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9jcmVhdGVTdG9yZSk7XG5cbnZhciBf
Y29tYmluZVJlZHVjZXJzID0gcmVxdWlyZSgnLi9jb21iaW5lUmVkdWNlcnMnKTtcblxudmFyIF9j
b21iaW5lUmVkdWNlcnMyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfY29tYmluZVJlZHVjZXJz
KTtcblxudmFyIF9iaW5kQWN0aW9uQ3JlYXRvcnMgPSByZXF1aXJlKCcuL2JpbmRBY3Rpb25DcmVh
dG9ycycpO1xuXG52YXIgX2JpbmRBY3Rpb25DcmVhdG9yczIgPSBfaW50ZXJvcFJlcXVpcmVEZWZh
dWx0KF9iaW5kQWN0aW9uQ3JlYXRvcnMpO1xuXG52YXIgX2FwcGx5TWlkZGxld2FyZSA9IHJlcXVp
cmUoJy4vYXBwbHlNaWRkbGV3YXJlJyk7XG5cbnZhciBfYXBwbHlNaWRkbGV3YXJlMiA9IF9pbnRl
cm9wUmVxdWlyZURlZmF1bHQoX2FwcGx5TWlkZGxld2FyZSk7XG5cbnZhciBfY29tcG9zZSA9IHJl
cXVpcmUoJy4vY29tcG9zZScpO1xuXG52YXIgX2NvbXBvc2UyID0gX2ludGVyb3BSZXF1aXJlRGVm
YXVsdChfY29tcG9zZSk7XG5cbnZhciBfd2FybmluZyA9IHJlcXVpcmUoJy4vdXRpbHMvd2Fybmlu
ZycpO1xuXG52YXIgX3dhcm5pbmcyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfd2FybmluZyk7
XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYg
b2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7ICdkZWZhdWx0Jzogb2JqIH07IH1cblxuLypcbiogVGhp
cyBpcyBhIGR1bW15IGZ1bmN0aW9uIHRvIGNoZWNrIGlmIHRoZSBmdW5jdGlvbiBuYW1lIGhhcyBi
ZWVuIGFsdGVyZWQgYnkgbWluaWZpY2F0aW9uLlxuKiBJZiB0aGUgZnVuY3Rpb24gaGFzIGJlZW4g
bWluaWZpZWQgYW5kIE5PREVfRU5WICE9PSAncHJvZHVjdGlvbicsIHdhcm4gdGhlIHVzZXIuXG4q
L1xuZnVuY3Rpb24gaXNDcnVzaGVkKCkge31cblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9
PSAncHJvZHVjdGlvbicgJiYgdHlwZW9mIGlzQ3J1c2hlZC5uYW1lID09PSAnc3RyaW5nJyAmJiBp
c0NydXNoZWQubmFtZSAhPT0gJ2lzQ3J1c2hlZCcpIHtcbiAgKDAsIF93YXJuaW5nMlsnZGVmYXVs
dCddKSgnWW91IGFyZSBjdXJyZW50bHkgdXNpbmcgbWluaWZpZWQgY29kZSBvdXRzaWRlIG9mIE5P
REVfRU5WID09PSBcXCdwcm9kdWN0aW9uXFwnLiAnICsgJ1RoaXMgbWVhbnMgdGhhdCB5b3UgYXJl
IHJ1bm5pbmcgYSBzbG93ZXIgZGV2ZWxvcG1lbnQgYnVpbGQgb2YgUmVkdXguICcgKyAnWW91IGNh
biB1c2UgbG9vc2UtZW52aWZ5IChodHRwczovL2dpdGh1Yi5jb20vemVydG9zaC9sb29zZS1lbnZp
ZnkpIGZvciBicm93c2VyaWZ5ICcgKyAnb3IgRGVmaW5lUGx1Z2luIGZvciB3ZWJwYWNrIChodHRw
Oi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzMwMDMwMDMxKSAnICsgJ3RvIGVuc3VyZSB5
b3UgaGF2ZSB0aGUgY29ycmVjdCBjb2RlIGZvciB5b3VyIHByb2R1Y3Rpb24gYnVpbGQuJyk7XG59
XG5cbmV4cG9ydHMuY3JlYXRlU3RvcmUgPSBfY3JlYXRlU3RvcmUyWydkZWZhdWx0J107XG5leHBv
cnRzLmNvbWJpbmVSZWR1Y2VycyA9IF9jb21iaW5lUmVkdWNlcnMyWydkZWZhdWx0J107XG5leHBv
cnRzLmJpbmRBY3Rpb25DcmVhdG9ycyA9IF9iaW5kQWN0aW9uQ3JlYXRvcnMyWydkZWZhdWx0J107
XG5leHBvcnRzLmFwcGx5TWlkZGxld2FyZSA9IF9hcHBseU1pZGRsZXdhcmUyWydkZWZhdWx0J107
XG5leHBvcnRzLmNvbXBvc2UgPSBfY29tcG9zZTJbJ2RlZmF1bHQnXTtcblxuXG4vKioqKioqKioq
KioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWR1eC9saWIvaW5kZXguanNc
biAqKiBtb2R1bGUgaWQgPSAzMFxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyohXG4g
IENvcHlyaWdodCAoYykgMjAxNiBKZWQgV2F0c29uLlxuICBMaWNlbnNlZCB1bmRlciB0aGUgTUlU
IExpY2Vuc2UgKE1JVCksIHNlZVxuICBodHRwOi8vamVkd2F0c29uLmdpdGh1Yi5pby9jbGFzc25h
bWVzXG4qL1xuLyogZ2xvYmFsIGRlZmluZSAqL1xuXG4oZnVuY3Rpb24gKCkge1xuXHQndXNlIHN0
cmljdCc7XG5cblx0dmFyIGhhc093biA9IHt9Lmhhc093blByb3BlcnR5O1xuXG5cdGZ1bmN0aW9u
IGNsYXNzTmFtZXMgKCkge1xuXHRcdHZhciBjbGFzc2VzID0gW107XG5cblx0XHRmb3IgKHZhciBp
ID0gMDsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykge1xuXHRcdFx0dmFyIGFyZyA9IGFyZ3Vt
ZW50c1tpXTtcblx0XHRcdGlmICghYXJnKSBjb250aW51ZTtcblxuXHRcdFx0dmFyIGFyZ1R5cGUg
PSB0eXBlb2YgYXJnO1xuXG5cdFx0XHRpZiAoYXJnVHlwZSA9PT0gJ3N0cmluZycgfHwgYXJnVHlw
ZSA9PT0gJ251bWJlcicpIHtcblx0XHRcdFx0Y2xhc3Nlcy5wdXNoKGFyZyk7XG5cdFx0XHR9IGVs
c2UgaWYgKEFycmF5LmlzQXJyYXkoYXJnKSkge1xuXHRcdFx0XHRjbGFzc2VzLnB1c2goY2xhc3NO
YW1lcy5hcHBseShudWxsLCBhcmcpKTtcblx0XHRcdH0gZWxzZSBpZiAoYXJnVHlwZSA9PT0gJ29i
amVjdCcpIHtcblx0XHRcdFx0Zm9yICh2YXIga2V5IGluIGFyZykge1xuXHRcdFx0XHRcdGlmICho
YXNPd24uY2FsbChhcmcsIGtleSkgJiYgYXJnW2tleV0pIHtcblx0XHRcdFx0XHRcdGNsYXNzZXMu
cHVzaChrZXkpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRc
dHJldHVybiBjbGFzc2VzLmpvaW4oJyAnKTtcblx0fVxuXG5cdGlmICh0eXBlb2YgbW9kdWxlICE9
PSAndW5kZWZpbmVkJyAmJiBtb2R1bGUuZXhwb3J0cykge1xuXHRcdG1vZHVsZS5leHBvcnRzID0g
Y2xhc3NOYW1lcztcblx0fSBlbHNlIGlmICh0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYm
IHR5cGVvZiBkZWZpbmUuYW1kID09PSAnb2JqZWN0JyAmJiBkZWZpbmUuYW1kKSB7XG5cdFx0Ly8g
cmVnaXN0ZXIgYXMgJ2NsYXNzbmFtZXMnLCBjb25zaXN0ZW50IHdpdGggbnBtIHBhY2thZ2UgbmFt
ZVxuXHRcdGRlZmluZSgnY2xhc3NuYW1lcycsIFtdLCBmdW5jdGlvbiAoKSB7XG5cdFx0XHRyZXR1
cm4gY2xhc3NOYW1lcztcblx0XHR9KTtcblx0fSBlbHNlIHtcblx0XHR3aW5kb3cuY2xhc3NOYW1l
cyA9IGNsYXNzTmFtZXM7XG5cdH1cbn0oKSk7XG5cblxuXG4vKioqKioqKioqKioqKioqKipcbiAq
KiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9jbGFzc25hbWVzL2luZGV4LmpzXG4gKiogbW9kdWxl
IGlkID0gMzFcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29weXJpZ2h0
IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVk
LlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHls
ZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVj
dG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRl
bnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRp
cmVjdG9yeS5cbiAqXG4gKiBAdHlwZWNoZWNrc1xuICogXG4gKi9cblxuLyplc2xpbnQtZGlzYWJs
ZSBuby1zZWxmLWNvbXBhcmUgKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgaGFzT3duUHJvcGVy
dHkgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xuXG4vKipcbiAqIGlubGluZWQg
T2JqZWN0LmlzIHBvbHlmaWxsIHRvIGF2b2lkIHJlcXVpcmluZyBjb25zdW1lcnMgc2hpcCB0aGVp
ciBvd25cbiAqIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0ph
dmFTY3JpcHQvUmVmZXJlbmNlL0dsb2JhbF9PYmplY3RzL09iamVjdC9pc1xuICovXG5mdW5jdGlv
biBpcyh4LCB5KSB7XG4gIC8vIFNhbWVWYWx1ZSBhbGdvcml0aG1cbiAgaWYgKHggPT09IHkpIHtc
biAgICAvLyBTdGVwcyAxLTUsIDctMTBcbiAgICAvLyBTdGVwcyA2LmItNi5lOiArMCAhPSAtMFxu
ICAgIC8vIEFkZGVkIHRoZSBub256ZXJvIHkgY2hlY2sgdG8gbWFrZSBGbG93IGhhcHB5LCBidXQg
aXQgaXMgcmVkdW5kYW50XG4gICAgcmV0dXJuIHggIT09IDAgfHwgeSAhPT0gMCB8fCAxIC8geCA9
PT0gMSAvIHk7XG4gIH0gZWxzZSB7XG4gICAgLy8gU3RlcCA2LmE6IE5hTiA9PSBOYU5cbiAgICBy
ZXR1cm4geCAhPT0geCAmJiB5ICE9PSB5O1xuICB9XG59XG5cbi8qKlxuICogUGVyZm9ybXMgZXF1
YWxpdHkgYnkgaXRlcmF0aW5nIHRocm91Z2gga2V5cyBvbiBhbiBvYmplY3QgYW5kIHJldHVybmlu
ZyBmYWxzZVxuICogd2hlbiBhbnkga2V5IGhhcyB2YWx1ZXMgd2hpY2ggYXJlIG5vdCBzdHJpY3Rs
eSBlcXVhbCBiZXR3ZWVuIHRoZSBhcmd1bWVudHMuXG4gKiBSZXR1cm5zIHRydWUgd2hlbiB0aGUg
dmFsdWVzIG9mIGFsbCBrZXlzIGFyZSBzdHJpY3RseSBlcXVhbC5cbiAqL1xuZnVuY3Rpb24gc2hh
bGxvd0VxdWFsKG9iakEsIG9iakIpIHtcbiAgaWYgKGlzKG9iakEsIG9iakIpKSB7XG4gICAgcmV0
dXJuIHRydWU7XG4gIH1cblxuICBpZiAodHlwZW9mIG9iakEgIT09ICdvYmplY3QnIHx8IG9iakEg
PT09IG51bGwgfHwgdHlwZW9mIG9iakIgIT09ICdvYmplY3QnIHx8IG9iakIgPT09IG51bGwpIHtc
biAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICB2YXIga2V5c0EgPSBPYmplY3Qua2V5cyhvYmpB
KTtcbiAgdmFyIGtleXNCID0gT2JqZWN0LmtleXMob2JqQik7XG5cbiAgaWYgKGtleXNBLmxlbmd0
aCAhPT0ga2V5c0IubGVuZ3RoKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLy8gVGVz
dCBmb3IgQSdzIGtleXMgZGlmZmVyZW50IGZyb20gQi5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBr
ZXlzQS5sZW5ndGg7IGkrKykge1xuICAgIGlmICghaGFzT3duUHJvcGVydHkuY2FsbChvYmpCLCBr
ZXlzQVtpXSkgfHwgIWlzKG9iakFba2V5c0FbaV1dLCBvYmpCW2tleXNBW2ldXSkpIHtcbiAgICAg
IHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn1cblxubW9kdWxl
LmV4cG9ydHMgPSBzaGFsbG93RXF1YWw7XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VC
UEFDSyBGT09URVJcbiAqKiAuL34vZmJqcy9saWIvc2hhbGxvd0VxdWFsLmpzXG4gKiogbW9kdWxl
IGlkID0gMzJcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsInZhciBiYXNlR2V0VGFnID0g
cmVxdWlyZSgnLi9fYmFzZUdldFRhZycpLFxuICAgIGdldFByb3RvdHlwZSA9IHJlcXVpcmUoJy4v
X2dldFByb3RvdHlwZScpLFxuICAgIGlzT2JqZWN0TGlrZSA9IHJlcXVpcmUoJy4vaXNPYmplY3RM
aWtlJyk7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZh
ciBvYmplY3RUYWcgPSAnW29iamVjdCBPYmplY3RdJztcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWlu
IG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIGZ1bmNQcm90byA9IEZ1bmN0aW9uLnByb3RvdHlw
ZSxcbiAgICBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIHJl
c29sdmUgdGhlIGRlY29tcGlsZWQgc291cmNlIG9mIGZ1bmN0aW9ucy4gKi9cbnZhciBmdW5jVG9T
dHJpbmcgPSBmdW5jUHJvdG8udG9TdHJpbmc7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMg
Zm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8u
aGFzT3duUHJvcGVydHk7XG5cbi8qKiBVc2VkIHRvIGluZmVyIHRoZSBgT2JqZWN0YCBjb25zdHJ1
Y3Rvci4gKi9cbnZhciBvYmplY3RDdG9yU3RyaW5nID0gZnVuY1RvU3RyaW5nLmNhbGwoT2JqZWN0
KTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhIHBsYWluIG9iamVjdCwgdGhhdCBp
cywgYW4gb2JqZWN0IGNyZWF0ZWQgYnkgdGhlXG4gKiBgT2JqZWN0YCBjb25zdHJ1Y3RvciBvciBv
bmUgd2l0aCBhIGBbW1Byb3RvdHlwZV1dYCBvZiBgbnVsbGAuXG4gKlxuICogQHN0YXRpY1xuICog
QG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjguMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJh
bSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJl
dHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBwbGFpbiBvYmplY3QsIGVsc2UgYGZhbHNlYC5c
biAqIEBleGFtcGxlXG4gKlxuICogZnVuY3Rpb24gRm9vKCkge1xuICogICB0aGlzLmEgPSAxO1xu
ICogfVxuICpcbiAqIF8uaXNQbGFpbk9iamVjdChuZXcgRm9vKTtcbiAqIC8vID0+IGZhbHNlXG4g
KlxuICogXy5pc1BsYWluT2JqZWN0KFsxLCAyLCAzXSk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAq
IF8uaXNQbGFpbk9iamVjdCh7ICd4JzogMCwgJ3knOiAwIH0pO1xuICogLy8gPT4gdHJ1ZVxuICpc
biAqIF8uaXNQbGFpbk9iamVjdChPYmplY3QuY3JlYXRlKG51bGwpKTtcbiAqIC8vID0+IHRydWVc
biAqL1xuZnVuY3Rpb24gaXNQbGFpbk9iamVjdCh2YWx1ZSkge1xuICBpZiAoIWlzT2JqZWN0TGlr
ZSh2YWx1ZSkgfHwgYmFzZUdldFRhZyh2YWx1ZSkgIT0gb2JqZWN0VGFnKSB7XG4gICAgcmV0dXJu
IGZhbHNlO1xuICB9XG4gIHZhciBwcm90byA9IGdldFByb3RvdHlwZSh2YWx1ZSk7XG4gIGlmIChw
cm90byA9PT0gbnVsbCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIHZhciBDdG9yID0gaGFz
T3duUHJvcGVydHkuY2FsbChwcm90bywgJ2NvbnN0cnVjdG9yJykgJiYgcHJvdG8uY29uc3RydWN0
b3I7XG4gIHJldHVybiB0eXBlb2YgQ3RvciA9PSAnZnVuY3Rpb24nICYmIEN0b3IgaW5zdGFuY2Vv
ZiBDdG9yICYmXG4gICAgZnVuY1RvU3RyaW5nLmNhbGwoQ3RvcikgPT0gb2JqZWN0Q3RvclN0cmlu
Zztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc1BsYWluT2JqZWN0O1xuXG5cblxuLyoqKioqKioq
KioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vbG9kYXNoL2lzUGxhaW5PYmpl
Y3QuanNcbiAqKiBtb2R1bGUgaWQgPSAzM1xuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwi
LyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJp
Z2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVy
IHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0
aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFu
dFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBp
biB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIERP
TUxhenlUcmVlID0gcmVxdWlyZSgnLi9ET01MYXp5VHJlZScpO1xudmFyIERhbmdlciA9IHJlcXVp
cmUoJy4vRGFuZ2VyJyk7XG52YXIgUmVhY3RET01Db21wb25lbnRUcmVlID0gcmVxdWlyZSgnLi9S
ZWFjdERPTUNvbXBvbmVudFRyZWUnKTtcbnZhciBSZWFjdEluc3RydW1lbnRhdGlvbiA9IHJlcXVp
cmUoJy4vUmVhY3RJbnN0cnVtZW50YXRpb24nKTtcblxudmFyIGNyZWF0ZU1pY3Jvc29mdFVuc2Fm
ZUxvY2FsRnVuY3Rpb24gPSByZXF1aXJlKCcuL2NyZWF0ZU1pY3Jvc29mdFVuc2FmZUxvY2FsRnVu
Y3Rpb24nKTtcbnZhciBzZXRJbm5lckhUTUwgPSByZXF1aXJlKCcuL3NldElubmVySFRNTCcpO1xu
dmFyIHNldFRleHRDb250ZW50ID0gcmVxdWlyZSgnLi9zZXRUZXh0Q29udGVudCcpO1xuXG5mdW5j
dGlvbiBnZXROb2RlQWZ0ZXIocGFyZW50Tm9kZSwgbm9kZSkge1xuICAvLyBTcGVjaWFsIGNhc2Ug
Zm9yIHRleHQgY29tcG9uZW50cywgd2hpY2ggcmV0dXJuIFtvcGVuLCBjbG9zZV0gY29tbWVudHNc
biAgLy8gZnJvbSBnZXRIb3N0Tm9kZS5cbiAgaWYgKEFycmF5LmlzQXJyYXkobm9kZSkpIHtcbiAg
ICBub2RlID0gbm9kZVsxXTtcbiAgfVxuICByZXR1cm4gbm9kZSA/IG5vZGUubmV4dFNpYmxpbmcg
OiBwYXJlbnROb2RlLmZpcnN0Q2hpbGQ7XG59XG5cbi8qKlxuICogSW5zZXJ0cyBgY2hpbGROb2Rl
YCBhcyBhIGNoaWxkIG9mIGBwYXJlbnROb2RlYCBhdCB0aGUgYGluZGV4YC5cbiAqXG4gKiBAcGFy
YW0ge0RPTUVsZW1lbnR9IHBhcmVudE5vZGUgUGFyZW50IG5vZGUgaW4gd2hpY2ggdG8gaW5zZXJ0
LlxuICogQHBhcmFtIHtET01FbGVtZW50fSBjaGlsZE5vZGUgQ2hpbGQgbm9kZSB0byBpbnNlcnQu
XG4gKiBAcGFyYW0ge251bWJlcn0gaW5kZXggSW5kZXggYXQgd2hpY2ggdG8gaW5zZXJ0IHRoZSBj
aGlsZC5cbiAqIEBpbnRlcm5hbFxuICovXG52YXIgaW5zZXJ0Q2hpbGRBdCA9IGNyZWF0ZU1pY3Jv
c29mdFVuc2FmZUxvY2FsRnVuY3Rpb24oZnVuY3Rpb24gKHBhcmVudE5vZGUsIGNoaWxkTm9kZSwg
cmVmZXJlbmNlTm9kZSkge1xuICAvLyBXZSByZWx5IGV4Y2x1c2l2ZWx5IG9uIGBpbnNlcnRCZWZv
cmUobm9kZSwgbnVsbClgIGluc3RlYWQgb2YgYWxzbyB1c2luZ1xuICAvLyBgYXBwZW5kQ2hpbGQo
bm9kZSlgLiAoVXNpbmcgYHVuZGVmaW5lZGAgaXMgbm90IGFsbG93ZWQgYnkgYWxsIGJyb3dzZXJz
IHNvXG4gIC8vIHdlIGFyZSBjYXJlZnVsIHRvIHVzZSBgbnVsbGAuKVxuICBwYXJlbnROb2RlLmlu
c2VydEJlZm9yZShjaGlsZE5vZGUsIHJlZmVyZW5jZU5vZGUpO1xufSk7XG5cbmZ1bmN0aW9uIGlu
c2VydExhenlUcmVlQ2hpbGRBdChwYXJlbnROb2RlLCBjaGlsZFRyZWUsIHJlZmVyZW5jZU5vZGUp
IHtcbiAgRE9NTGF6eVRyZWUuaW5zZXJ0VHJlZUJlZm9yZShwYXJlbnROb2RlLCBjaGlsZFRyZWUs
IHJlZmVyZW5jZU5vZGUpO1xufVxuXG5mdW5jdGlvbiBtb3ZlQ2hpbGQocGFyZW50Tm9kZSwgY2hp
bGROb2RlLCByZWZlcmVuY2VOb2RlKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KGNoaWxkTm9kZSkp
IHtcbiAgICBtb3ZlRGVsaW1pdGVkVGV4dChwYXJlbnROb2RlLCBjaGlsZE5vZGVbMF0sIGNoaWxk
Tm9kZVsxXSwgcmVmZXJlbmNlTm9kZSk7XG4gIH0gZWxzZSB7XG4gICAgaW5zZXJ0Q2hpbGRBdChw
YXJlbnROb2RlLCBjaGlsZE5vZGUsIHJlZmVyZW5jZU5vZGUpO1xuICB9XG59XG5cbmZ1bmN0aW9u
IHJlbW92ZUNoaWxkKHBhcmVudE5vZGUsIGNoaWxkTm9kZSkge1xuICBpZiAoQXJyYXkuaXNBcnJh
eShjaGlsZE5vZGUpKSB7XG4gICAgdmFyIGNsb3NpbmdDb21tZW50ID0gY2hpbGROb2RlWzFdO1xu
ICAgIGNoaWxkTm9kZSA9IGNoaWxkTm9kZVswXTtcbiAgICByZW1vdmVEZWxpbWl0ZWRUZXh0KHBh
cmVudE5vZGUsIGNoaWxkTm9kZSwgY2xvc2luZ0NvbW1lbnQpO1xuICAgIHBhcmVudE5vZGUucmVt
b3ZlQ2hpbGQoY2xvc2luZ0NvbW1lbnQpO1xuICB9XG4gIHBhcmVudE5vZGUucmVtb3ZlQ2hpbGQo
Y2hpbGROb2RlKTtcbn1cblxuZnVuY3Rpb24gbW92ZURlbGltaXRlZFRleHQocGFyZW50Tm9kZSwg
b3BlbmluZ0NvbW1lbnQsIGNsb3NpbmdDb21tZW50LCByZWZlcmVuY2VOb2RlKSB7XG4gIHZhciBu
b2RlID0gb3BlbmluZ0NvbW1lbnQ7XG4gIHdoaWxlICh0cnVlKSB7XG4gICAgdmFyIG5leHROb2Rl
ID0gbm9kZS5uZXh0U2libGluZztcbiAgICBpbnNlcnRDaGlsZEF0KHBhcmVudE5vZGUsIG5vZGUs
IHJlZmVyZW5jZU5vZGUpO1xuICAgIGlmIChub2RlID09PSBjbG9zaW5nQ29tbWVudCkge1xuICAg
ICAgYnJlYWs7XG4gICAgfVxuICAgIG5vZGUgPSBuZXh0Tm9kZTtcbiAgfVxufVxuXG5mdW5jdGlv
biByZW1vdmVEZWxpbWl0ZWRUZXh0KHBhcmVudE5vZGUsIHN0YXJ0Tm9kZSwgY2xvc2luZ0NvbW1l
bnQpIHtcbiAgd2hpbGUgKHRydWUpIHtcbiAgICB2YXIgbm9kZSA9IHN0YXJ0Tm9kZS5uZXh0U2li
bGluZztcbiAgICBpZiAobm9kZSA9PT0gY2xvc2luZ0NvbW1lbnQpIHtcbiAgICAgIC8vIFRoZSBj
bG9zaW5nIGNvbW1lbnQgaXMgcmVtb3ZlZCBieSBSZWFjdE11bHRpQ2hpbGQuXG4gICAgICBicmVh
aztcbiAgICB9IGVsc2Uge1xuICAgICAgcGFyZW50Tm9kZS5yZW1vdmVDaGlsZChub2RlKTtcbiAg
ICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gcmVwbGFjZURlbGltaXRlZFRleHQob3BlbmluZ0NvbW1l
bnQsIGNsb3NpbmdDb21tZW50LCBzdHJpbmdUZXh0KSB7XG4gIHZhciBwYXJlbnROb2RlID0gb3Bl
bmluZ0NvbW1lbnQucGFyZW50Tm9kZTtcbiAgdmFyIG5vZGVBZnRlckNvbW1lbnQgPSBvcGVuaW5n
Q29tbWVudC5uZXh0U2libGluZztcbiAgaWYgKG5vZGVBZnRlckNvbW1lbnQgPT09IGNsb3NpbmdD
b21tZW50KSB7XG4gICAgLy8gVGhlcmUgYXJlIG5vIHRleHQgbm9kZXMgYmV0d2VlbiB0aGUgb3Bl
bmluZyBhbmQgY2xvc2luZyBjb21tZW50czsgaW5zZXJ0XG4gICAgLy8gYSBuZXcgb25lIGlmIHN0
cmluZ1RleHQgaXNuJ3QgZW1wdHkuXG4gICAgaWYgKHN0cmluZ1RleHQpIHtcbiAgICAgIGluc2Vy
dENoaWxkQXQocGFyZW50Tm9kZSwgZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoc3RyaW5nVGV4dCks
IG5vZGVBZnRlckNvbW1lbnQpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBpZiAoc3RyaW5nVGV4
dCkge1xuICAgICAgLy8gU2V0IHRoZSB0ZXh0IGNvbnRlbnQgb2YgdGhlIGZpcnN0IG5vZGUgYWZ0
ZXIgdGhlIG9wZW5pbmcgY29tbWVudCwgYW5kXG4gICAgICAvLyByZW1vdmUgYWxsIGZvbGxvd2lu
ZyBub2RlcyB1cCB1bnRpbCB0aGUgY2xvc2luZyBjb21tZW50LlxuICAgICAgc2V0VGV4dENvbnRl
bnQobm9kZUFmdGVyQ29tbWVudCwgc3RyaW5nVGV4dCk7XG4gICAgICByZW1vdmVEZWxpbWl0ZWRU
ZXh0KHBhcmVudE5vZGUsIG5vZGVBZnRlckNvbW1lbnQsIGNsb3NpbmdDb21tZW50KTtcbiAgICB9
IGVsc2Uge1xuICAgICAgcmVtb3ZlRGVsaW1pdGVkVGV4dChwYXJlbnROb2RlLCBvcGVuaW5nQ29t
bWVudCwgY2xvc2luZ0NvbW1lbnQpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChwcm9jZXNzLmVudi5O
T0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVi
dWdUb29sLm9uSG9zdE9wZXJhdGlvbih7XG4gICAgICBpbnN0YW5jZUlEOiBSZWFjdERPTUNvbXBv
bmVudFRyZWUuZ2V0SW5zdGFuY2VGcm9tTm9kZShvcGVuaW5nQ29tbWVudCkuX2RlYnVnSUQsXG4g
ICAgICB0eXBlOiAncmVwbGFjZSB0ZXh0JyxcbiAgICAgIHBheWxvYWQ6IHN0cmluZ1RleHRcbiAg
ICB9KTtcbiAgfVxufVxuXG52YXIgZGFuZ2Vyb3VzbHlSZXBsYWNlTm9kZVdpdGhNYXJrdXAgPSBE
YW5nZXIuZGFuZ2Vyb3VzbHlSZXBsYWNlTm9kZVdpdGhNYXJrdXA7XG5pZiAocHJvY2Vzcy5lbnYu
Tk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICBkYW5nZXJvdXNseVJlcGxhY2VOb2RlV2l0
aE1hcmt1cCA9IGZ1bmN0aW9uIChvbGRDaGlsZCwgbWFya3VwLCBwcmV2SW5zdGFuY2UpIHtcbiAg
ICBEYW5nZXIuZGFuZ2Vyb3VzbHlSZXBsYWNlTm9kZVdpdGhNYXJrdXAob2xkQ2hpbGQsIG1hcmt1
cCk7XG4gICAgaWYgKHByZXZJbnN0YW5jZS5fZGVidWdJRCAhPT0gMCkge1xuICAgICAgUmVhY3RJ
bnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9uSG9zdE9wZXJhdGlvbih7XG4gICAgICAgIGluc3Rh
bmNlSUQ6IHByZXZJbnN0YW5jZS5fZGVidWdJRCxcbiAgICAgICAgdHlwZTogJ3JlcGxhY2Ugd2l0
aCcsXG4gICAgICAgIHBheWxvYWQ6IG1hcmt1cC50b1N0cmluZygpXG4gICAgICB9KTtcbiAgICB9
IGVsc2Uge1xuICAgICAgdmFyIG5leHRJbnN0YW5jZSA9IFJlYWN0RE9NQ29tcG9uZW50VHJlZS5n
ZXRJbnN0YW5jZUZyb21Ob2RlKG1hcmt1cC5ub2RlKTtcbiAgICAgIGlmIChuZXh0SW5zdGFuY2Uu
X2RlYnVnSUQgIT09IDApIHtcbiAgICAgICAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29s
Lm9uSG9zdE9wZXJhdGlvbih7XG4gICAgICAgICAgaW5zdGFuY2VJRDogbmV4dEluc3RhbmNlLl9k
ZWJ1Z0lELFxuICAgICAgICAgIHR5cGU6ICdtb3VudCcsXG4gICAgICAgICAgcGF5bG9hZDogbWFy
a3VwLnRvU3RyaW5nKClcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9O1xufVxuXG4v
KipcbiAqIE9wZXJhdGlvbnMgZm9yIHVwZGF0aW5nIHdpdGggRE9NIGNoaWxkcmVuLlxuICovXG52
YXIgRE9NQ2hpbGRyZW5PcGVyYXRpb25zID0ge1xuICBkYW5nZXJvdXNseVJlcGxhY2VOb2RlV2l0
aE1hcmt1cDogZGFuZ2Vyb3VzbHlSZXBsYWNlTm9kZVdpdGhNYXJrdXAsXG5cbiAgcmVwbGFjZURl
bGltaXRlZFRleHQ6IHJlcGxhY2VEZWxpbWl0ZWRUZXh0LFxuXG4gIC8qKlxuICAgKiBVcGRhdGVz
IGEgY29tcG9uZW50J3MgY2hpbGRyZW4gYnkgcHJvY2Vzc2luZyBhIHNlcmllcyBvZiB1cGRhdGVz
LiBUaGVcbiAgICogdXBkYXRlIGNvbmZpZ3VyYXRpb25zIGFyZSBlYWNoIGV4cGVjdGVkIHRvIGhh
dmUgYSBgcGFyZW50Tm9kZWAgcHJvcGVydHkuXG4gICAqXG4gICAqIEBwYXJhbSB7YXJyYXk8b2Jq
ZWN0Pn0gdXBkYXRlcyBMaXN0IG9mIHVwZGF0ZSBjb25maWd1cmF0aW9ucy5cbiAgICogQGludGVy
bmFsXG4gICAqL1xuICBwcm9jZXNzVXBkYXRlczogZnVuY3Rpb24gKHBhcmVudE5vZGUsIHVwZGF0
ZXMpIHtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xu
ICAgICAgdmFyIHBhcmVudE5vZGVEZWJ1Z0lEID0gUmVhY3RET01Db21wb25lbnRUcmVlLmdldElu
c3RhbmNlRnJvbU5vZGUocGFyZW50Tm9kZSkuX2RlYnVnSUQ7XG4gICAgfVxuXG4gICAgZm9yICh2
YXIgayA9IDA7IGsgPCB1cGRhdGVzLmxlbmd0aDsgaysrKSB7XG4gICAgICB2YXIgdXBkYXRlID0g
dXBkYXRlc1trXTtcbiAgICAgIHN3aXRjaCAodXBkYXRlLnR5cGUpIHtcbiAgICAgICAgY2FzZSAn
SU5TRVJUX01BUktVUCc6XG4gICAgICAgICAgaW5zZXJ0TGF6eVRyZWVDaGlsZEF0KHBhcmVudE5v
ZGUsIHVwZGF0ZS5jb250ZW50LCBnZXROb2RlQWZ0ZXIocGFyZW50Tm9kZSwgdXBkYXRlLmFmdGVy
Tm9kZSkpO1xuICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rp
b24nKSB7XG4gICAgICAgICAgICBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25Ib3N0
T3BlcmF0aW9uKHtcbiAgICAgICAgICAgICAgaW5zdGFuY2VJRDogcGFyZW50Tm9kZURlYnVnSUQs
XG4gICAgICAgICAgICAgIHR5cGU6ICdpbnNlcnQgY2hpbGQnLFxuICAgICAgICAgICAgICBwYXls
b2FkOiB7XG4gICAgICAgICAgICAgICAgdG9JbmRleDogdXBkYXRlLnRvSW5kZXgsXG4gICAgICAg
ICAgICAgICAgY29udGVudDogdXBkYXRlLmNvbnRlbnQudG9TdHJpbmcoKVxuICAgICAgICAgICAg
ICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAg
ICAgIGNhc2UgJ01PVkVfRVhJU1RJTkcnOlxuICAgICAgICAgIG1vdmVDaGlsZChwYXJlbnROb2Rl
LCB1cGRhdGUuZnJvbU5vZGUsIGdldE5vZGVBZnRlcihwYXJlbnROb2RlLCB1cGRhdGUuYWZ0ZXJO
b2RlKSk7XG4gICAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlv
bicpIHtcbiAgICAgICAgICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vbkhvc3RP
cGVyYXRpb24oe1xuICAgICAgICAgICAgICBpbnN0YW5jZUlEOiBwYXJlbnROb2RlRGVidWdJRCxc
biAgICAgICAgICAgICAgdHlwZTogJ21vdmUgY2hpbGQnLFxuICAgICAgICAgICAgICBwYXlsb2Fk
OiB7IGZyb21JbmRleDogdXBkYXRlLmZyb21JbmRleCwgdG9JbmRleDogdXBkYXRlLnRvSW5kZXgg
fVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAg
ICBjYXNlICdTRVRfTUFSS1VQJzpcbiAgICAgICAgICBzZXRJbm5lckhUTUwocGFyZW50Tm9kZSwg
dXBkYXRlLmNvbnRlbnQpO1xuICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0g
J3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgICAgICBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rv
b2wub25Ib3N0T3BlcmF0aW9uKHtcbiAgICAgICAgICAgICAgaW5zdGFuY2VJRDogcGFyZW50Tm9k
ZURlYnVnSUQsXG4gICAgICAgICAgICAgIHR5cGU6ICdyZXBsYWNlIGNoaWxkcmVuJyxcbiAgICAg
ICAgICAgICAgcGF5bG9hZDogdXBkYXRlLmNvbnRlbnQudG9TdHJpbmcoKVxuICAgICAgICAgICAg
fSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdURVhUX0NP
TlRFTlQnOlxuICAgICAgICAgIHNldFRleHRDb250ZW50KHBhcmVudE5vZGUsIHVwZGF0ZS5jb250
ZW50KTtcbiAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9u
Jykge1xuICAgICAgICAgICAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9uSG9zdE9w
ZXJhdGlvbih7XG4gICAgICAgICAgICAgIGluc3RhbmNlSUQ6IHBhcmVudE5vZGVEZWJ1Z0lELFxu
ICAgICAgICAgICAgICB0eXBlOiAncmVwbGFjZSB0ZXh0JyxcbiAgICAgICAgICAgICAgcGF5bG9h
ZDogdXBkYXRlLmNvbnRlbnQudG9TdHJpbmcoKVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAg
fVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdSRU1PVkVfTk9ERSc6XG4gICAgICAg
ICAgcmVtb3ZlQ2hpbGQocGFyZW50Tm9kZSwgdXBkYXRlLmZyb21Ob2RlKTtcbiAgICAgICAgICBp
ZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICAgICAg
UmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9uSG9zdE9wZXJhdGlvbih7XG4gICAgICAg
ICAgICAgIGluc3RhbmNlSUQ6IHBhcmVudE5vZGVEZWJ1Z0lELFxuICAgICAgICAgICAgICB0eXBl
OiAncmVtb3ZlIGNoaWxkJyxcbiAgICAgICAgICAgICAgcGF5bG9hZDogeyBmcm9tSW5kZXg6IHVw
ZGF0ZS5mcm9tSW5kZXggfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICAg
IGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfVxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBET01D
aGlsZHJlbk9wZXJhdGlvbnM7XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBG
T09URVJcbiAqKiAuL34vcmVhY3QtZG9tL2xpYi9ET01DaGlsZHJlbk9wZXJhdGlvbnMuanNcbiAq
KiBtb2R1bGUgaWQgPSAzNFxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBD
b3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNl
cnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qt
c3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBk
aXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2Yg
cGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2Ft
ZSBkaXJlY3RvcnkuXG4gKlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIERPTU5hbWVzcGFj
ZXMgPSB7XG4gIGh0bWw6ICdodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sJyxcbiAgbWF0aG1s
OiAnaHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTCcsXG4gIHN2ZzogJ2h0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnJ1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBET01OYW1lc3BhY2Vz
O1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3Jl
YWN0LWRvbS9saWIvRE9NTmFtZXNwYWNlcy5qc1xuICoqIG1vZHVsZSBpZCA9IDM1XG4gKiogbW9k
dWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZh
Y2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNl
IGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRo
ZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0
cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3Vu
ZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBcbiAq
L1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBfcHJvZEludmFyaWFudCA9IHJlcXVpcmUoJy4vcmVh
Y3RQcm9kSW52YXJpYW50Jyk7XG5cbnZhciBpbnZhcmlhbnQgPSByZXF1aXJlKCdmYmpzL2xpYi9p
bnZhcmlhbnQnKTtcblxuLyoqXG4gKiBJbmplY3RhYmxlIG9yZGVyaW5nIG9mIGV2ZW50IHBsdWdp
bnMuXG4gKi9cbnZhciBldmVudFBsdWdpbk9yZGVyID0gbnVsbDtcblxuLyoqXG4gKiBJbmplY3Rh
YmxlIG1hcHBpbmcgZnJvbSBuYW1lcyB0byBldmVudCBwbHVnaW4gbW9kdWxlcy5cbiAqL1xudmFy
IG5hbWVzVG9QbHVnaW5zID0ge307XG5cbi8qKlxuICogUmVjb21wdXRlcyB0aGUgcGx1Z2luIGxp
c3QgdXNpbmcgdGhlIGluamVjdGVkIHBsdWdpbnMgYW5kIHBsdWdpbiBvcmRlcmluZy5cbiAqXG4g
KiBAcHJpdmF0ZVxuICovXG5mdW5jdGlvbiByZWNvbXB1dGVQbHVnaW5PcmRlcmluZygpIHtcbiAg
aWYgKCFldmVudFBsdWdpbk9yZGVyKSB7XG4gICAgLy8gV2FpdCB1bnRpbCBhbiBgZXZlbnRQbHVn
aW5PcmRlcmAgaXMgaW5qZWN0ZWQuXG4gICAgcmV0dXJuO1xuICB9XG4gIGZvciAodmFyIHBsdWdp
bk5hbWUgaW4gbmFtZXNUb1BsdWdpbnMpIHtcbiAgICB2YXIgcGx1Z2luTW9kdWxlID0gbmFtZXNU
b1BsdWdpbnNbcGx1Z2luTmFtZV07XG4gICAgdmFyIHBsdWdpbkluZGV4ID0gZXZlbnRQbHVnaW5P
cmRlci5pbmRleE9mKHBsdWdpbk5hbWUpO1xuICAgICEocGx1Z2luSW5kZXggPiAtMSkgPyBwcm9j
ZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnRXZl
bnRQbHVnaW5SZWdpc3RyeTogQ2Fubm90IGluamVjdCBldmVudCBwbHVnaW5zIHRoYXQgZG8gbm90
IGV4aXN0IGluIHRoZSBwbHVnaW4gb3JkZXJpbmcsIGAlc2AuJywgcGx1Z2luTmFtZSkgOiBfcHJv
ZEludmFyaWFudCgnOTYnLCBwbHVnaW5OYW1lKSA6IHZvaWQgMDtcbiAgICBpZiAoRXZlbnRQbHVn
aW5SZWdpc3RyeS5wbHVnaW5zW3BsdWdpbkluZGV4XSkge1xuICAgICAgY29udGludWU7XG4gICAg
fVxuICAgICFwbHVnaW5Nb2R1bGUuZXh0cmFjdEV2ZW50cyA/IHByb2Nlc3MuZW52Lk5PREVfRU5W
ICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdFdmVudFBsdWdpblJlZ2lzdHJ5
OiBFdmVudCBwbHVnaW5zIG11c3QgaW1wbGVtZW50IGFuIGBleHRyYWN0RXZlbnRzYCBtZXRob2Qs
IGJ1dCBgJXNgIGRvZXMgbm90LicsIHBsdWdpbk5hbWUpIDogX3Byb2RJbnZhcmlhbnQoJzk3Jywg
cGx1Z2luTmFtZSkgOiB2b2lkIDA7XG4gICAgRXZlbnRQbHVnaW5SZWdpc3RyeS5wbHVnaW5zW3Bs
dWdpbkluZGV4XSA9IHBsdWdpbk1vZHVsZTtcbiAgICB2YXIgcHVibGlzaGVkRXZlbnRzID0gcGx1
Z2luTW9kdWxlLmV2ZW50VHlwZXM7XG4gICAgZm9yICh2YXIgZXZlbnROYW1lIGluIHB1Ymxpc2hl
ZEV2ZW50cykge1xuICAgICAgIXB1Ymxpc2hFdmVudEZvclBsdWdpbihwdWJsaXNoZWRFdmVudHNb
ZXZlbnROYW1lXSwgcGx1Z2luTW9kdWxlLCBldmVudE5hbWUpID8gcHJvY2Vzcy5lbnYuTk9ERV9F
TlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ0V2ZW50UGx1Z2luUmVnaXN0
cnk6IEZhaWxlZCB0byBwdWJsaXNoIGV2ZW50IGAlc2AgZm9yIHBsdWdpbiBgJXNgLicsIGV2ZW50
TmFtZSwgcGx1Z2luTmFtZSkgOiBfcHJvZEludmFyaWFudCgnOTgnLCBldmVudE5hbWUsIHBsdWdp
bk5hbWUpIDogdm9pZCAwO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIFB1Ymxpc2hlcyBhbiBl
dmVudCBzbyB0aGF0IGl0IGNhbiBiZSBkaXNwYXRjaGVkIGJ5IHRoZSBzdXBwbGllZCBwbHVnaW4u
XG4gKlxuICogQHBhcmFtIHtvYmplY3R9IGRpc3BhdGNoQ29uZmlnIERpc3BhdGNoIGNvbmZpZ3Vy
YXRpb24gZm9yIHRoZSBldmVudC5cbiAqIEBwYXJhbSB7b2JqZWN0fSBQbHVnaW5Nb2R1bGUgUGx1
Z2luIHB1Ymxpc2hpbmcgdGhlIGV2ZW50LlxuICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBpZiB0
aGUgZXZlbnQgd2FzIHN1Y2Nlc3NmdWxseSBwdWJsaXNoZWQuXG4gKiBAcHJpdmF0ZVxuICovXG5m
dW5jdGlvbiBwdWJsaXNoRXZlbnRGb3JQbHVnaW4oZGlzcGF0Y2hDb25maWcsIHBsdWdpbk1vZHVs
ZSwgZXZlbnROYW1lKSB7XG4gICEhRXZlbnRQbHVnaW5SZWdpc3RyeS5ldmVudE5hbWVEaXNwYXRj
aENvbmZpZ3MuaGFzT3duUHJvcGVydHkoZXZlbnROYW1lKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5W
ICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdFdmVudFBsdWdpbkh1YjogTW9y
ZSB0aGFuIG9uZSBwbHVnaW4gYXR0ZW1wdGVkIHRvIHB1Ymxpc2ggdGhlIHNhbWUgZXZlbnQgbmFt
ZSwgYCVzYC4nLCBldmVudE5hbWUpIDogX3Byb2RJbnZhcmlhbnQoJzk5JywgZXZlbnROYW1lKSA6
IHZvaWQgMDtcbiAgRXZlbnRQbHVnaW5SZWdpc3RyeS5ldmVudE5hbWVEaXNwYXRjaENvbmZpZ3Nb
ZXZlbnROYW1lXSA9IGRpc3BhdGNoQ29uZmlnO1xuXG4gIHZhciBwaGFzZWRSZWdpc3RyYXRpb25O
YW1lcyA9IGRpc3BhdGNoQ29uZmlnLnBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzO1xuICBpZiAocGhh
c2VkUmVnaXN0cmF0aW9uTmFtZXMpIHtcbiAgICBmb3IgKHZhciBwaGFzZU5hbWUgaW4gcGhhc2Vk
UmVnaXN0cmF0aW9uTmFtZXMpIHtcbiAgICAgIGlmIChwaGFzZWRSZWdpc3RyYXRpb25OYW1lcy5o
YXNPd25Qcm9wZXJ0eShwaGFzZU5hbWUpKSB7XG4gICAgICAgIHZhciBwaGFzZWRSZWdpc3RyYXRp
b25OYW1lID0gcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXNbcGhhc2VOYW1lXTtcbiAgICAgICAgcHVi
bGlzaFJlZ2lzdHJhdGlvbk5hbWUocGhhc2VkUmVnaXN0cmF0aW9uTmFtZSwgcGx1Z2luTW9kdWxl
LCBldmVudE5hbWUpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSBlbHNl
IGlmIChkaXNwYXRjaENvbmZpZy5yZWdpc3RyYXRpb25OYW1lKSB7XG4gICAgcHVibGlzaFJlZ2lz
dHJhdGlvbk5hbWUoZGlzcGF0Y2hDb25maWcucmVnaXN0cmF0aW9uTmFtZSwgcGx1Z2luTW9kdWxl
LCBldmVudE5hbWUpO1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIHJldHVybiBmYWxzZTtcbn1c
blxuLyoqXG4gKiBQdWJsaXNoZXMgYSByZWdpc3RyYXRpb24gbmFtZSB0aGF0IGlzIHVzZWQgdG8g
aWRlbnRpZnkgZGlzcGF0Y2hlZCBldmVudHMgYW5kXG4gKiBjYW4gYmUgdXNlZCB3aXRoIGBFdmVu
dFBsdWdpbkh1Yi5wdXRMaXN0ZW5lcmAgdG8gcmVnaXN0ZXIgbGlzdGVuZXJzLlxuICpcbiAqIEBw
YXJhbSB7c3RyaW5nfSByZWdpc3RyYXRpb25OYW1lIFJlZ2lzdHJhdGlvbiBuYW1lIHRvIGFkZC5c
biAqIEBwYXJhbSB7b2JqZWN0fSBQbHVnaW5Nb2R1bGUgUGx1Z2luIHB1Ymxpc2hpbmcgdGhlIGV2
ZW50LlxuICogQHByaXZhdGVcbiAqL1xuZnVuY3Rpb24gcHVibGlzaFJlZ2lzdHJhdGlvbk5hbWUo
cmVnaXN0cmF0aW9uTmFtZSwgcGx1Z2luTW9kdWxlLCBldmVudE5hbWUpIHtcbiAgISFFdmVudFBs
dWdpblJlZ2lzdHJ5LnJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVzW3JlZ2lzdHJhdGlvbk5hbWVdID8g
cHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwg
J0V2ZW50UGx1Z2luSHViOiBNb3JlIHRoYW4gb25lIHBsdWdpbiBhdHRlbXB0ZWQgdG8gcHVibGlz
aCB0aGUgc2FtZSByZWdpc3RyYXRpb24gbmFtZSwgYCVzYC4nLCByZWdpc3RyYXRpb25OYW1lKSA6
IF9wcm9kSW52YXJpYW50KCcxMDAnLCByZWdpc3RyYXRpb25OYW1lKSA6IHZvaWQgMDtcbiAgRXZl
bnRQbHVnaW5SZWdpc3RyeS5yZWdpc3RyYXRpb25OYW1lTW9kdWxlc1tyZWdpc3RyYXRpb25OYW1l
XSA9IHBsdWdpbk1vZHVsZTtcbiAgRXZlbnRQbHVnaW5SZWdpc3RyeS5yZWdpc3RyYXRpb25OYW1l
RGVwZW5kZW5jaWVzW3JlZ2lzdHJhdGlvbk5hbWVdID0gcGx1Z2luTW9kdWxlLmV2ZW50VHlwZXNb
ZXZlbnROYW1lXS5kZXBlbmRlbmNpZXM7XG5cbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9
PSAncHJvZHVjdGlvbicpIHtcbiAgICB2YXIgbG93ZXJDYXNlZE5hbWUgPSByZWdpc3RyYXRpb25O
YW1lLnRvTG93ZXJDYXNlKCk7XG4gICAgRXZlbnRQbHVnaW5SZWdpc3RyeS5wb3NzaWJsZVJlZ2lz
dHJhdGlvbk5hbWVzW2xvd2VyQ2FzZWROYW1lXSA9IHJlZ2lzdHJhdGlvbk5hbWU7XG5cbiAgICBp
ZiAocmVnaXN0cmF0aW9uTmFtZSA9PT0gJ29uRG91YmxlQ2xpY2snKSB7XG4gICAgICBFdmVudFBs
dWdpblJlZ2lzdHJ5LnBvc3NpYmxlUmVnaXN0cmF0aW9uTmFtZXMub25kYmxjbGljayA9IHJlZ2lz
dHJhdGlvbk5hbWU7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogUmVnaXN0ZXJzIHBsdWdpbnMg
c28gdGhhdCB0aGV5IGNhbiBleHRyYWN0IGFuZCBkaXNwYXRjaCBldmVudHMuXG4gKlxuICogQHNl
ZSB7RXZlbnRQbHVnaW5IdWJ9XG4gKi9cbnZhciBFdmVudFBsdWdpblJlZ2lzdHJ5ID0ge1xuICAv
KipcbiAgICogT3JkZXJlZCBsaXN0IG9mIGluamVjdGVkIHBsdWdpbnMuXG4gICAqL1xuICBwbHVn
aW5zOiBbXSxcblxuICAvKipcbiAgICogTWFwcGluZyBmcm9tIGV2ZW50IG5hbWUgdG8gZGlzcGF0
Y2ggY29uZmlnXG4gICAqL1xuICBldmVudE5hbWVEaXNwYXRjaENvbmZpZ3M6IHt9LFxuXG4gIC8q
KlxuICAgKiBNYXBwaW5nIGZyb20gcmVnaXN0cmF0aW9uIG5hbWUgdG8gcGx1Z2luIG1vZHVsZVxu
ICAgKi9cbiAgcmVnaXN0cmF0aW9uTmFtZU1vZHVsZXM6IHt9LFxuXG4gIC8qKlxuICAgKiBNYXBw
aW5nIGZyb20gcmVnaXN0cmF0aW9uIG5hbWUgdG8gZXZlbnQgbmFtZVxuICAgKi9cbiAgcmVnaXN0
cmF0aW9uTmFtZURlcGVuZGVuY2llczoge30sXG5cbiAgLyoqXG4gICAqIE1hcHBpbmcgZnJvbSBs
b3dlcmNhc2UgcmVnaXN0cmF0aW9uIG5hbWVzIHRvIHRoZSBwcm9wZXJseSBjYXNlZCB2ZXJzaW9u
LFxuICAgKiB1c2VkIHRvIHdhcm4gaW4gdGhlIGNhc2Ugb2YgbWlzc2luZyBldmVudCBoYW5kbGVy
cy4gQXZhaWxhYmxlXG4gICAqIG9ubHkgaW4gX19ERVZfXy5cbiAgICogQHR5cGUge09iamVjdH1c
biAgICovXG4gIHBvc3NpYmxlUmVnaXN0cmF0aW9uTmFtZXM6IHByb2Nlc3MuZW52Lk5PREVfRU5W
ICE9PSAncHJvZHVjdGlvbicgPyB7fSA6IG51bGwsXG4gIC8vIFRydXN0IHRoZSBkZXZlbG9wZXIg
dG8gb25seSB1c2UgcG9zc2libGVSZWdpc3RyYXRpb25OYW1lcyBpbiBfX0RFVl9fXG5cbiAgLyoq
XG4gICAqIEluamVjdHMgYW4gb3JkZXJpbmcgb2YgcGx1Z2lucyAoYnkgcGx1Z2luIG5hbWUpLiBU
aGlzIGFsbG93cyB0aGUgb3JkZXJpbmdcbiAgICogdG8gYmUgZGVjb3VwbGVkIGZyb20gaW5qZWN0
aW9uIG9mIHRoZSBhY3R1YWwgcGx1Z2lucyBzbyB0aGF0IG9yZGVyaW5nIGlzXG4gICAqIGFsd2F5
cyBkZXRlcm1pbmlzdGljIHJlZ2FyZGxlc3Mgb2YgcGFja2FnaW5nLCBvbi10aGUtZmx5IGluamVj
dGlvbiwgZXRjLlxuICAgKlxuICAgKiBAcGFyYW0ge2FycmF5fSBJbmplY3RlZEV2ZW50UGx1Z2lu
T3JkZXJcbiAgICogQGludGVybmFsXG4gICAqIEBzZWUge0V2ZW50UGx1Z2luSHViLmluamVjdGlv
bi5pbmplY3RFdmVudFBsdWdpbk9yZGVyfVxuICAgKi9cbiAgaW5qZWN0RXZlbnRQbHVnaW5PcmRl
cjogZnVuY3Rpb24gKGluamVjdGVkRXZlbnRQbHVnaW5PcmRlcikge1xuICAgICEhZXZlbnRQbHVn
aW5PcmRlciA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlh
bnQoZmFsc2UsICdFdmVudFBsdWdpblJlZ2lzdHJ5OiBDYW5ub3QgaW5qZWN0IGV2ZW50IHBsdWdp
biBvcmRlcmluZyBtb3JlIHRoYW4gb25jZS4gWW91IGFyZSBsaWtlbHkgdHJ5aW5nIHRvIGxvYWQg
bW9yZSB0aGFuIG9uZSBjb3B5IG9mIFJlYWN0LicpIDogX3Byb2RJbnZhcmlhbnQoJzEwMScpIDog
dm9pZCAwO1xuICAgIC8vIENsb25lIHRoZSBvcmRlcmluZyBzbyBpdCBjYW5ub3QgYmUgZHluYW1p
Y2FsbHkgbXV0YXRlZC5cbiAgICBldmVudFBsdWdpbk9yZGVyID0gQXJyYXkucHJvdG90eXBlLnNs
aWNlLmNhbGwoaW5qZWN0ZWRFdmVudFBsdWdpbk9yZGVyKTtcbiAgICByZWNvbXB1dGVQbHVnaW5P
cmRlcmluZygpO1xuICB9LFxuXG4gIC8qKlxuICAgKiBJbmplY3RzIHBsdWdpbnMgdG8gYmUgdXNl
ZCBieSBgRXZlbnRQbHVnaW5IdWJgLiBUaGUgcGx1Z2luIG5hbWVzIG11c3QgYmVcbiAgICogaW4g
dGhlIG9yZGVyaW5nIGluamVjdGVkIGJ5IGBpbmplY3RFdmVudFBsdWdpbk9yZGVyYC5cbiAgICpc
biAgICogUGx1Z2lucyBjYW4gYmUgaW5qZWN0ZWQgYXMgcGFydCBvZiBwYWdlIGluaXRpYWxpemF0
aW9uIG9yIG9uLXRoZS1mbHkuXG4gICAqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBpbmplY3RlZE5h
bWVzVG9QbHVnaW5zIE1hcCBmcm9tIG5hbWVzIHRvIHBsdWdpbiBtb2R1bGVzLlxuICAgKiBAaW50
ZXJuYWxcbiAgICogQHNlZSB7RXZlbnRQbHVnaW5IdWIuaW5qZWN0aW9uLmluamVjdEV2ZW50UGx1
Z2luc0J5TmFtZX1cbiAgICovXG4gIGluamVjdEV2ZW50UGx1Z2luc0J5TmFtZTogZnVuY3Rpb24g
KGluamVjdGVkTmFtZXNUb1BsdWdpbnMpIHtcbiAgICB2YXIgaXNPcmRlcmluZ0RpcnR5ID0gZmFs
c2U7XG4gICAgZm9yICh2YXIgcGx1Z2luTmFtZSBpbiBpbmplY3RlZE5hbWVzVG9QbHVnaW5zKSB7
XG4gICAgICBpZiAoIWluamVjdGVkTmFtZXNUb1BsdWdpbnMuaGFzT3duUHJvcGVydHkocGx1Z2lu
TmFtZSkpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICB2YXIgcGx1Z2luTW9k
dWxlID0gaW5qZWN0ZWROYW1lc1RvUGx1Z2luc1twbHVnaW5OYW1lXTtcbiAgICAgIGlmICghbmFt
ZXNUb1BsdWdpbnMuaGFzT3duUHJvcGVydHkocGx1Z2luTmFtZSkgfHwgbmFtZXNUb1BsdWdpbnNb
cGx1Z2luTmFtZV0gIT09IHBsdWdpbk1vZHVsZSkge1xuICAgICAgICAhIW5hbWVzVG9QbHVnaW5z
W3BsdWdpbk5hbWVdID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGlu
dmFyaWFudChmYWxzZSwgJ0V2ZW50UGx1Z2luUmVnaXN0cnk6IENhbm5vdCBpbmplY3QgdHdvIGRp
ZmZlcmVudCBldmVudCBwbHVnaW5zIHVzaW5nIHRoZSBzYW1lIG5hbWUsIGAlc2AuJywgcGx1Z2lu
TmFtZSkgOiBfcHJvZEludmFyaWFudCgnMTAyJywgcGx1Z2luTmFtZSkgOiB2b2lkIDA7XG4gICAg
ICAgIG5hbWVzVG9QbHVnaW5zW3BsdWdpbk5hbWVdID0gcGx1Z2luTW9kdWxlO1xuICAgICAgICBp
c09yZGVyaW5nRGlydHkgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoaXNPcmRlcmlu
Z0RpcnR5KSB7XG4gICAgICByZWNvbXB1dGVQbHVnaW5PcmRlcmluZygpO1xuICAgIH1cbiAgfSxc
blxuICAvKipcbiAgICogTG9va3MgdXAgdGhlIHBsdWdpbiBmb3IgdGhlIHN1cHBsaWVkIGV2ZW50
LlxuICAgKlxuICAgKiBAcGFyYW0ge29iamVjdH0gZXZlbnQgQSBzeW50aGV0aWMgZXZlbnQuXG4g
ICAqIEByZXR1cm4gez9vYmplY3R9IFRoZSBwbHVnaW4gdGhhdCBjcmVhdGVkIHRoZSBzdXBwbGll
ZCBldmVudC5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBnZXRQbHVnaW5Nb2R1bGVGb3JFdmVu
dDogZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgdmFyIGRpc3BhdGNoQ29uZmlnID0gZXZlbnQuZGlz
cGF0Y2hDb25maWc7XG4gICAgaWYgKGRpc3BhdGNoQ29uZmlnLnJlZ2lzdHJhdGlvbk5hbWUpIHtc
biAgICAgIHJldHVybiBFdmVudFBsdWdpblJlZ2lzdHJ5LnJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVz
W2Rpc3BhdGNoQ29uZmlnLnJlZ2lzdHJhdGlvbk5hbWVdIHx8IG51bGw7XG4gICAgfVxuICAgIGlm
IChkaXNwYXRjaENvbmZpZy5waGFzZWRSZWdpc3RyYXRpb25OYW1lcyAhPT0gdW5kZWZpbmVkKSB7
XG4gICAgICAvLyBwdWxsaW5nIHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzIG91dCBvZiBkaXNwYXRj
aENvbmZpZyBoZWxwcyBGbG93IHNlZVxuICAgICAgLy8gdGhhdCBpdCBpcyBub3QgdW5kZWZpbmVk
LlxuICAgICAgdmFyIHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzID0gZGlzcGF0Y2hDb25maWcucGhh
c2VkUmVnaXN0cmF0aW9uTmFtZXM7XG5cbiAgICAgIGZvciAodmFyIHBoYXNlIGluIHBoYXNlZFJl
Z2lzdHJhdGlvbk5hbWVzKSB7XG4gICAgICAgIGlmICghcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXMu
aGFzT3duUHJvcGVydHkocGhhc2UpKSB7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1c
biAgICAgICAgdmFyIHBsdWdpbk1vZHVsZSA9IEV2ZW50UGx1Z2luUmVnaXN0cnkucmVnaXN0cmF0
aW9uTmFtZU1vZHVsZXNbcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXNbcGhhc2VdXTtcbiAgICAgICAg
aWYgKHBsdWdpbk1vZHVsZSkge1xuICAgICAgICAgIHJldHVybiBwbHVnaW5Nb2R1bGU7XG4gICAg
ICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH0sXG5cbiAgLyoqXG4g
ICAqIEV4cG9zZWQgZm9yIHVuaXQgdGVzdGluZy5cbiAgICogQHByaXZhdGVcbiAgICovXG4gIF9y
ZXNldEV2ZW50UGx1Z2luczogZnVuY3Rpb24gKCkge1xuICAgIGV2ZW50UGx1Z2luT3JkZXIgPSBu
dWxsO1xuICAgIGZvciAodmFyIHBsdWdpbk5hbWUgaW4gbmFtZXNUb1BsdWdpbnMpIHtcbiAgICAg
IGlmIChuYW1lc1RvUGx1Z2lucy5oYXNPd25Qcm9wZXJ0eShwbHVnaW5OYW1lKSkge1xuICAgICAg
ICBkZWxldGUgbmFtZXNUb1BsdWdpbnNbcGx1Z2luTmFtZV07XG4gICAgICB9XG4gICAgfVxuICAg
IEV2ZW50UGx1Z2luUmVnaXN0cnkucGx1Z2lucy5sZW5ndGggPSAwO1xuXG4gICAgdmFyIGV2ZW50
TmFtZURpc3BhdGNoQ29uZmlncyA9IEV2ZW50UGx1Z2luUmVnaXN0cnkuZXZlbnROYW1lRGlzcGF0
Y2hDb25maWdzO1xuICAgIGZvciAodmFyIGV2ZW50TmFtZSBpbiBldmVudE5hbWVEaXNwYXRjaENv
bmZpZ3MpIHtcbiAgICAgIGlmIChldmVudE5hbWVEaXNwYXRjaENvbmZpZ3MuaGFzT3duUHJvcGVy
dHkoZXZlbnROYW1lKSkge1xuICAgICAgICBkZWxldGUgZXZlbnROYW1lRGlzcGF0Y2hDb25maWdz
W2V2ZW50TmFtZV07XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIHJlZ2lzdHJhdGlvbk5hbWVN
b2R1bGVzID0gRXZlbnRQbHVnaW5SZWdpc3RyeS5yZWdpc3RyYXRpb25OYW1lTW9kdWxlcztcbiAg
ICBmb3IgKHZhciByZWdpc3RyYXRpb25OYW1lIGluIHJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVzKSB7
XG4gICAgICBpZiAocmVnaXN0cmF0aW9uTmFtZU1vZHVsZXMuaGFzT3duUHJvcGVydHkocmVnaXN0
cmF0aW9uTmFtZSkpIHtcbiAgICAgICAgZGVsZXRlIHJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVzW3Jl
Z2lzdHJhdGlvbk5hbWVdO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChwcm9jZXNzLmVudi5O
T0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICB2YXIgcG9zc2libGVSZWdpc3RyYXRp
b25OYW1lcyA9IEV2ZW50UGx1Z2luUmVnaXN0cnkucG9zc2libGVSZWdpc3RyYXRpb25OYW1lcztc
biAgICAgIGZvciAodmFyIGxvd2VyQ2FzZWROYW1lIGluIHBvc3NpYmxlUmVnaXN0cmF0aW9uTmFt
ZXMpIHtcbiAgICAgICAgaWYgKHBvc3NpYmxlUmVnaXN0cmF0aW9uTmFtZXMuaGFzT3duUHJvcGVy
dHkobG93ZXJDYXNlZE5hbWUpKSB7XG4gICAgICAgICAgZGVsZXRlIHBvc3NpYmxlUmVnaXN0cmF0
aW9uTmFtZXNbbG93ZXJDYXNlZE5hbWVdO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9
XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IEV2ZW50UGx1Z2luUmVnaXN0cnk7XG5cblxuLyoqKioq
KioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3QtZG9tL2xpYi9F
dmVudFBsdWdpblJlZ2lzdHJ5LmpzXG4gKiogbW9kdWxlIGlkID0gMzZcbiAqKiBtb2R1bGUgY2h1
bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ss
IEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBp
cyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBM
SUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFu
IGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRo
ZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNlIHN0
cmljdCc7XG5cbnZhciBfcHJvZEludmFyaWFudCA9IHJlcXVpcmUoJy4vcmVhY3RQcm9kSW52YXJp
YW50Jyk7XG5cbnZhciBSZWFjdEVycm9yVXRpbHMgPSByZXF1aXJlKCcuL1JlYWN0RXJyb3JVdGls
cycpO1xuXG52YXIgaW52YXJpYW50ID0gcmVxdWlyZSgnZmJqcy9saWIvaW52YXJpYW50Jyk7XG52
YXIgd2FybmluZyA9IHJlcXVpcmUoJ2ZianMvbGliL3dhcm5pbmcnKTtcblxuLyoqXG4gKiBJbmpl
Y3RlZCBkZXBlbmRlbmNpZXM6XG4gKi9cblxuLyoqXG4gKiAtIGBDb21wb25lbnRUcmVlYDogW3Jl
cXVpcmVkXSBNb2R1bGUgdGhhdCBjYW4gY29udmVydCBiZXR3ZWVuIFJlYWN0IGluc3RhbmNlc1xu
ICogICBhbmQgYWN0dWFsIG5vZGUgcmVmZXJlbmNlcy5cbiAqL1xudmFyIENvbXBvbmVudFRyZWU7
XG52YXIgVHJlZVRyYXZlcnNhbDtcbnZhciBpbmplY3Rpb24gPSB7XG4gIGluamVjdENvbXBvbmVu
dFRyZWU6IGZ1bmN0aW9uIChJbmplY3RlZCkge1xuICAgIENvbXBvbmVudFRyZWUgPSBJbmplY3Rl
ZDtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAg
ICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoSW5qZWN0
ZWQgJiYgSW5qZWN0ZWQuZ2V0Tm9kZUZyb21JbnN0YW5jZSAmJiBJbmplY3RlZC5nZXRJbnN0YW5j
ZUZyb21Ob2RlLCAnRXZlbnRQbHVnaW5VdGlscy5pbmplY3Rpb24uaW5qZWN0Q29tcG9uZW50VHJl
ZSguLi4pOiBJbmplY3RlZCAnICsgJ21vZHVsZSBpcyBtaXNzaW5nIGdldE5vZGVGcm9tSW5zdGFu
Y2Ugb3IgZ2V0SW5zdGFuY2VGcm9tTm9kZS4nKSA6IHZvaWQgMDtcbiAgICB9XG4gIH0sXG4gIGlu
amVjdFRyZWVUcmF2ZXJzYWw6IGZ1bmN0aW9uIChJbmplY3RlZCkge1xuICAgIFRyZWVUcmF2ZXJz
YWwgPSBJbmplY3RlZDtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0
aW9uJykge1xuICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdh
cm5pbmcoSW5qZWN0ZWQgJiYgSW5qZWN0ZWQuaXNBbmNlc3RvciAmJiBJbmplY3RlZC5nZXRMb3dl
c3RDb21tb25BbmNlc3RvciwgJ0V2ZW50UGx1Z2luVXRpbHMuaW5qZWN0aW9uLmluamVjdFRyZWVU
cmF2ZXJzYWwoLi4uKTogSW5qZWN0ZWQgJyArICdtb2R1bGUgaXMgbWlzc2luZyBpc0FuY2VzdG9y
IG9yIGdldExvd2VzdENvbW1vbkFuY2VzdG9yLicpIDogdm9pZCAwO1xuICAgIH1cbiAgfVxufTtc
blxuZnVuY3Rpb24gaXNFbmRpc2godG9wTGV2ZWxUeXBlKSB7XG4gIHJldHVybiB0b3BMZXZlbFR5
cGUgPT09ICd0b3BNb3VzZVVwJyB8fCB0b3BMZXZlbFR5cGUgPT09ICd0b3BUb3VjaEVuZCcgfHwg
dG9wTGV2ZWxUeXBlID09PSAndG9wVG91Y2hDYW5jZWwnO1xufVxuXG5mdW5jdGlvbiBpc01vdmVp
c2godG9wTGV2ZWxUeXBlKSB7XG4gIHJldHVybiB0b3BMZXZlbFR5cGUgPT09ICd0b3BNb3VzZU1v
dmUnIHx8IHRvcExldmVsVHlwZSA9PT0gJ3RvcFRvdWNoTW92ZSc7XG59XG5mdW5jdGlvbiBpc1N0
YXJ0aXNoKHRvcExldmVsVHlwZSkge1xuICByZXR1cm4gdG9wTGV2ZWxUeXBlID09PSAndG9wTW91
c2VEb3duJyB8fCB0b3BMZXZlbFR5cGUgPT09ICd0b3BUb3VjaFN0YXJ0Jztcbn1cblxudmFyIHZh
bGlkYXRlRXZlbnREaXNwYXRjaGVzO1xuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJv
ZHVjdGlvbicpIHtcbiAgdmFsaWRhdGVFdmVudERpc3BhdGNoZXMgPSBmdW5jdGlvbiAoZXZlbnQp
IHtcbiAgICB2YXIgZGlzcGF0Y2hMaXN0ZW5lcnMgPSBldmVudC5fZGlzcGF0Y2hMaXN0ZW5lcnM7
XG4gICAgdmFyIGRpc3BhdGNoSW5zdGFuY2VzID0gZXZlbnQuX2Rpc3BhdGNoSW5zdGFuY2VzO1xu
XG4gICAgdmFyIGxpc3RlbmVyc0lzQXJyID0gQXJyYXkuaXNBcnJheShkaXNwYXRjaExpc3RlbmVy
cyk7XG4gICAgdmFyIGxpc3RlbmVyc0xlbiA9IGxpc3RlbmVyc0lzQXJyID8gZGlzcGF0Y2hMaXN0
ZW5lcnMubGVuZ3RoIDogZGlzcGF0Y2hMaXN0ZW5lcnMgPyAxIDogMDtcblxuICAgIHZhciBpbnN0
YW5jZXNJc0FyciA9IEFycmF5LmlzQXJyYXkoZGlzcGF0Y2hJbnN0YW5jZXMpO1xuICAgIHZhciBp
bnN0YW5jZXNMZW4gPSBpbnN0YW5jZXNJc0FyciA/IGRpc3BhdGNoSW5zdGFuY2VzLmxlbmd0aCA6
IGRpc3BhdGNoSW5zdGFuY2VzID8gMSA6IDA7XG5cbiAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAh
PT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhpbnN0YW5jZXNJc0FyciA9PT0gbGlzdGVuZXJzSXNB
cnIgJiYgaW5zdGFuY2VzTGVuID09PSBsaXN0ZW5lcnNMZW4sICdFdmVudFBsdWdpblV0aWxzOiBJ
bnZhbGlkIGBldmVudGAuJykgOiB2b2lkIDA7XG4gIH07XG59XG5cbi8qKlxuICogRGlzcGF0Y2gg
dGhlIGV2ZW50IHRvIHRoZSBsaXN0ZW5lci5cbiAqIEBwYXJhbSB7U3ludGhldGljRXZlbnR9IGV2
ZW50IFN5bnRoZXRpY0V2ZW50IHRvIGhhbmRsZVxuICogQHBhcmFtIHtib29sZWFufSBzaW11bGF0
ZWQgSWYgdGhlIGV2ZW50IGlzIHNpbXVsYXRlZCAoY2hhbmdlcyBleG4gYmVoYXZpb3IpXG4gKiBA
cGFyYW0ge2Z1bmN0aW9ufSBsaXN0ZW5lciBBcHBsaWNhdGlvbi1sZXZlbCBjYWxsYmFja1xuICog
QHBhcmFtIHsqfSBpbnN0IEludGVybmFsIGNvbXBvbmVudCBpbnN0YW5jZVxuICovXG5mdW5jdGlv
biBleGVjdXRlRGlzcGF0Y2goZXZlbnQsIHNpbXVsYXRlZCwgbGlzdGVuZXIsIGluc3QpIHtcbiAg
dmFyIHR5cGUgPSBldmVudC50eXBlIHx8ICd1bmtub3duLWV2ZW50JztcbiAgZXZlbnQuY3VycmVu
dFRhcmdldCA9IEV2ZW50UGx1Z2luVXRpbHMuZ2V0Tm9kZUZyb21JbnN0YW5jZShpbnN0KTtcbiAg
aWYgKHNpbXVsYXRlZCkge1xuICAgIFJlYWN0RXJyb3JVdGlscy5pbnZva2VHdWFyZGVkQ2FsbGJh
Y2tXaXRoQ2F0Y2godHlwZSwgbGlzdGVuZXIsIGV2ZW50KTtcbiAgfSBlbHNlIHtcbiAgICBSZWFj
dEVycm9yVXRpbHMuaW52b2tlR3VhcmRlZENhbGxiYWNrKHR5cGUsIGxpc3RlbmVyLCBldmVudCk7
XG4gIH1cbiAgZXZlbnQuY3VycmVudFRhcmdldCA9IG51bGw7XG59XG5cbi8qKlxuICogU3RhbmRh
cmQvc2ltcGxlIGl0ZXJhdGlvbiB0aHJvdWdoIGFuIGV2ZW50J3MgY29sbGVjdGVkIGRpc3BhdGNo
ZXMuXG4gKi9cbmZ1bmN0aW9uIGV4ZWN1dGVEaXNwYXRjaGVzSW5PcmRlcihldmVudCwgc2ltdWxh
dGVkKSB7XG4gIHZhciBkaXNwYXRjaExpc3RlbmVycyA9IGV2ZW50Ll9kaXNwYXRjaExpc3RlbmVy
cztcbiAgdmFyIGRpc3BhdGNoSW5zdGFuY2VzID0gZXZlbnQuX2Rpc3BhdGNoSW5zdGFuY2VzO1xu
ICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIHZhbGlk
YXRlRXZlbnREaXNwYXRjaGVzKGV2ZW50KTtcbiAgfVxuICBpZiAoQXJyYXkuaXNBcnJheShkaXNw
YXRjaExpc3RlbmVycykpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRpc3BhdGNoTGlzdGVu
ZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAoZXZlbnQuaXNQcm9wYWdhdGlvblN0b3BwZWQo
KSkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIC8vIExpc3RlbmVycyBhbmQgSW5z
dGFuY2VzIGFyZSB0d28gcGFyYWxsZWwgYXJyYXlzIHRoYXQgYXJlIGFsd2F5cyBpbiBzeW5jLlxu
ICAgICAgZXhlY3V0ZURpc3BhdGNoKGV2ZW50LCBzaW11bGF0ZWQsIGRpc3BhdGNoTGlzdGVuZXJz
W2ldLCBkaXNwYXRjaEluc3RhbmNlc1tpXSk7XG4gICAgfVxuICB9IGVsc2UgaWYgKGRpc3BhdGNo
TGlzdGVuZXJzKSB7XG4gICAgZXhlY3V0ZURpc3BhdGNoKGV2ZW50LCBzaW11bGF0ZWQsIGRpc3Bh
dGNoTGlzdGVuZXJzLCBkaXNwYXRjaEluc3RhbmNlcyk7XG4gIH1cbiAgZXZlbnQuX2Rpc3BhdGNo
TGlzdGVuZXJzID0gbnVsbDtcbiAgZXZlbnQuX2Rpc3BhdGNoSW5zdGFuY2VzID0gbnVsbDtcbn1c
blxuLyoqXG4gKiBTdGFuZGFyZC9zaW1wbGUgaXRlcmF0aW9uIHRocm91Z2ggYW4gZXZlbnQncyBj
b2xsZWN0ZWQgZGlzcGF0Y2hlcywgYnV0IHN0b3BzXG4gKiBhdCB0aGUgZmlyc3QgZGlzcGF0Y2gg
ZXhlY3V0aW9uIHJldHVybmluZyB0cnVlLCBhbmQgcmV0dXJucyB0aGF0IGlkLlxuICpcbiAqIEBy
ZXR1cm4gez9zdHJpbmd9IGlkIG9mIHRoZSBmaXJzdCBkaXNwYXRjaCBleGVjdXRpb24gd2hvJ3Mg
bGlzdGVuZXIgcmV0dXJuc1xuICogdHJ1ZSwgb3IgbnVsbCBpZiBubyBsaXN0ZW5lciByZXR1cm5l
ZCB0cnVlLlxuICovXG5mdW5jdGlvbiBleGVjdXRlRGlzcGF0Y2hlc0luT3JkZXJTdG9wQXRUcnVl
SW1wbChldmVudCkge1xuICB2YXIgZGlzcGF0Y2hMaXN0ZW5lcnMgPSBldmVudC5fZGlzcGF0Y2hM
aXN0ZW5lcnM7XG4gIHZhciBkaXNwYXRjaEluc3RhbmNlcyA9IGV2ZW50Ll9kaXNwYXRjaEluc3Rh
bmNlcztcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAg
ICB2YWxpZGF0ZUV2ZW50RGlzcGF0Y2hlcyhldmVudCk7XG4gIH1cbiAgaWYgKEFycmF5LmlzQXJy
YXkoZGlzcGF0Y2hMaXN0ZW5lcnMpKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkaXNwYXRj
aExpc3RlbmVycy5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKGV2ZW50LmlzUHJvcGFnYXRpb25T
dG9wcGVkKCkpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICAvLyBMaXN0ZW5lcnMg
YW5kIEluc3RhbmNlcyBhcmUgdHdvIHBhcmFsbGVsIGFycmF5cyB0aGF0IGFyZSBhbHdheXMgaW4g
c3luYy5cbiAgICAgIGlmIChkaXNwYXRjaExpc3RlbmVyc1tpXShldmVudCwgZGlzcGF0Y2hJbnN0
YW5jZXNbaV0pKSB7XG4gICAgICAgIHJldHVybiBkaXNwYXRjaEluc3RhbmNlc1tpXTtcbiAgICAg
IH1cbiAgICB9XG4gIH0gZWxzZSBpZiAoZGlzcGF0Y2hMaXN0ZW5lcnMpIHtcbiAgICBpZiAoZGlz
cGF0Y2hMaXN0ZW5lcnMoZXZlbnQsIGRpc3BhdGNoSW5zdGFuY2VzKSkge1xuICAgICAgcmV0dXJu
IGRpc3BhdGNoSW5zdGFuY2VzO1xuICAgIH1cbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cblxuLyoq
XG4gKiBAc2VlIGV4ZWN1dGVEaXNwYXRjaGVzSW5PcmRlclN0b3BBdFRydWVJbXBsXG4gKi9cbmZ1
bmN0aW9uIGV4ZWN1dGVEaXNwYXRjaGVzSW5PcmRlclN0b3BBdFRydWUoZXZlbnQpIHtcbiAgdmFy
IHJldCA9IGV4ZWN1dGVEaXNwYXRjaGVzSW5PcmRlclN0b3BBdFRydWVJbXBsKGV2ZW50KTtcbiAg
ZXZlbnQuX2Rpc3BhdGNoSW5zdGFuY2VzID0gbnVsbDtcbiAgZXZlbnQuX2Rpc3BhdGNoTGlzdGVu
ZXJzID0gbnVsbDtcbiAgcmV0dXJuIHJldDtcbn1cblxuLyoqXG4gKiBFeGVjdXRpb24gb2YgYSBc
ImRpcmVjdFwiIGRpc3BhdGNoIC0gdGhlcmUgbXVzdCBiZSBhdCBtb3N0IG9uZSBkaXNwYXRjaFxu
ICogYWNjdW11bGF0ZWQgb24gdGhlIGV2ZW50IG9yIGl0IGlzIGNvbnNpZGVyZWQgYW4gZXJyb3Iu
IEl0IGRvZXNuJ3QgcmVhbGx5IG1ha2VcbiAqIHNlbnNlIGZvciBhbiBldmVudCB3aXRoIG11bHRp
cGxlIGRpc3BhdGNoZXMgKGJ1YmJsZWQpIHRvIGtlZXAgdHJhY2sgb2YgdGhlXG4gKiByZXR1cm4g
dmFsdWVzIGF0IGVhY2ggZGlzcGF0Y2ggZXhlY3V0aW9uLCBidXQgaXQgZG9lcyB0ZW5kIHRvIG1h
a2Ugc2Vuc2Ugd2hlblxuICogZGVhbGluZyB3aXRoIFwiZGlyZWN0XCIgZGlzcGF0Y2hlcy5cbiAq
XG4gKiBAcmV0dXJuIHsqfSBUaGUgcmV0dXJuIHZhbHVlIG9mIGV4ZWN1dGluZyB0aGUgc2luZ2xl
IGRpc3BhdGNoLlxuICovXG5mdW5jdGlvbiBleGVjdXRlRGlyZWN0RGlzcGF0Y2goZXZlbnQpIHtc
biAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICB2YWxp
ZGF0ZUV2ZW50RGlzcGF0Y2hlcyhldmVudCk7XG4gIH1cbiAgdmFyIGRpc3BhdGNoTGlzdGVuZXIg
PSBldmVudC5fZGlzcGF0Y2hMaXN0ZW5lcnM7XG4gIHZhciBkaXNwYXRjaEluc3RhbmNlID0gZXZl
bnQuX2Rpc3BhdGNoSW5zdGFuY2VzO1xuICAhIUFycmF5LmlzQXJyYXkoZGlzcGF0Y2hMaXN0ZW5l
cikgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZh
bHNlLCAnZXhlY3V0ZURpcmVjdERpc3BhdGNoKC4uLik6IEludmFsaWQgYGV2ZW50YC4nKSA6IF9w
cm9kSW52YXJpYW50KCcxMDMnKSA6IHZvaWQgMDtcbiAgZXZlbnQuY3VycmVudFRhcmdldCA9IGRp
c3BhdGNoTGlzdGVuZXIgPyBFdmVudFBsdWdpblV0aWxzLmdldE5vZGVGcm9tSW5zdGFuY2UoZGlz
cGF0Y2hJbnN0YW5jZSkgOiBudWxsO1xuICB2YXIgcmVzID0gZGlzcGF0Y2hMaXN0ZW5lciA/IGRp
c3BhdGNoTGlzdGVuZXIoZXZlbnQpIDogbnVsbDtcbiAgZXZlbnQuY3VycmVudFRhcmdldCA9IG51
bGw7XG4gIGV2ZW50Ll9kaXNwYXRjaExpc3RlbmVycyA9IG51bGw7XG4gIGV2ZW50Ll9kaXNwYXRj
aEluc3RhbmNlcyA9IG51bGw7XG4gIHJldHVybiByZXM7XG59XG5cbi8qKlxuICogQHBhcmFtIHtT
eW50aGV0aWNFdmVudH0gZXZlbnRcbiAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUgaWZmIG51bWJl
ciBvZiBkaXNwYXRjaGVzIGFjY3VtdWxhdGVkIGlzIGdyZWF0ZXIgdGhhbiAwLlxuICovXG5mdW5j
dGlvbiBoYXNEaXNwYXRjaGVzKGV2ZW50KSB7XG4gIHJldHVybiAhIWV2ZW50Ll9kaXNwYXRjaExp
c3RlbmVycztcbn1cblxuLyoqXG4gKiBHZW5lcmFsIHV0aWxpdGllcyB0aGF0IGFyZSB1c2VmdWwg
aW4gY3JlYXRpbmcgY3VzdG9tIEV2ZW50IFBsdWdpbnMuXG4gKi9cbnZhciBFdmVudFBsdWdpblV0
aWxzID0ge1xuICBpc0VuZGlzaDogaXNFbmRpc2gsXG4gIGlzTW92ZWlzaDogaXNNb3ZlaXNoLFxu
ICBpc1N0YXJ0aXNoOiBpc1N0YXJ0aXNoLFxuXG4gIGV4ZWN1dGVEaXJlY3REaXNwYXRjaDogZXhl
Y3V0ZURpcmVjdERpc3BhdGNoLFxuICBleGVjdXRlRGlzcGF0Y2hlc0luT3JkZXI6IGV4ZWN1dGVE
aXNwYXRjaGVzSW5PcmRlcixcbiAgZXhlY3V0ZURpc3BhdGNoZXNJbk9yZGVyU3RvcEF0VHJ1ZTog
ZXhlY3V0ZURpc3BhdGNoZXNJbk9yZGVyU3RvcEF0VHJ1ZSxcbiAgaGFzRGlzcGF0Y2hlczogaGFz
RGlzcGF0Y2hlcyxcblxuICBnZXRJbnN0YW5jZUZyb21Ob2RlOiBmdW5jdGlvbiAobm9kZSkge1xu
ICAgIHJldHVybiBDb21wb25lbnRUcmVlLmdldEluc3RhbmNlRnJvbU5vZGUobm9kZSk7XG4gIH0s
XG4gIGdldE5vZGVGcm9tSW5zdGFuY2U6IGZ1bmN0aW9uIChub2RlKSB7XG4gICAgcmV0dXJuIENv
bXBvbmVudFRyZWUuZ2V0Tm9kZUZyb21JbnN0YW5jZShub2RlKTtcbiAgfSxcbiAgaXNBbmNlc3Rv
cjogZnVuY3Rpb24gKGEsIGIpIHtcbiAgICByZXR1cm4gVHJlZVRyYXZlcnNhbC5pc0FuY2VzdG9y
KGEsIGIpO1xuICB9LFxuICBnZXRMb3dlc3RDb21tb25BbmNlc3RvcjogZnVuY3Rpb24gKGEsIGIp
IHtcbiAgICByZXR1cm4gVHJlZVRyYXZlcnNhbC5nZXRMb3dlc3RDb21tb25BbmNlc3RvcihhLCBi
KTtcbiAgfSxcbiAgZ2V0UGFyZW50SW5zdGFuY2U6IGZ1bmN0aW9uIChpbnN0KSB7XG4gICAgcmV0
dXJuIFRyZWVUcmF2ZXJzYWwuZ2V0UGFyZW50SW5zdGFuY2UoaW5zdCk7XG4gIH0sXG4gIHRyYXZl
cnNlVHdvUGhhc2U6IGZ1bmN0aW9uICh0YXJnZXQsIGZuLCBhcmcpIHtcbiAgICByZXR1cm4gVHJl
ZVRyYXZlcnNhbC50cmF2ZXJzZVR3b1BoYXNlKHRhcmdldCwgZm4sIGFyZyk7XG4gIH0sXG4gIHRy
YXZlcnNlRW50ZXJMZWF2ZTogZnVuY3Rpb24gKGZyb20sIHRvLCBmbiwgYXJnRnJvbSwgYXJnVG8p
IHtcbiAgICByZXR1cm4gVHJlZVRyYXZlcnNhbC50cmF2ZXJzZUVudGVyTGVhdmUoZnJvbSwgdG8s
IGZuLCBhcmdGcm9tLCBhcmdUbyk7XG4gIH0sXG5cbiAgaW5qZWN0aW9uOiBpbmplY3Rpb25cbn07
XG5cbm1vZHVsZS5leHBvcnRzID0gRXZlbnRQbHVnaW5VdGlscztcblxuXG4vKioqKioqKioqKioq
KioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFjdC1kb20vbGliL0V2ZW50UGx1
Z2luVXRpbHMuanNcbiAqKiBtb2R1bGUgaWQgPSAzN1xuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4g
KiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICog
QWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2Vk
IHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmls
ZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25h
bCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMg
ZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogXG4gKi9cblxuJ3VzZSBzdHJpY3Qn
O1xuXG4vKipcbiAqIEVzY2FwZSBhbmQgd3JhcCBrZXkgc28gaXQgaXMgc2FmZSB0byB1c2UgYXMg
YSByZWFjdGlkXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGtleSB0byBiZSBlc2NhcGVkLlxuICog
QHJldHVybiB7c3RyaW5nfSB0aGUgZXNjYXBlZCBrZXkuXG4gKi9cblxuZnVuY3Rpb24gZXNjYXBl
KGtleSkge1xuICB2YXIgZXNjYXBlUmVnZXggPSAvWz06XS9nO1xuICB2YXIgZXNjYXBlckxvb2t1
cCA9IHtcbiAgICAnPSc6ICc9MCcsXG4gICAgJzonOiAnPTInXG4gIH07XG4gIHZhciBlc2NhcGVk
U3RyaW5nID0gKCcnICsga2V5KS5yZXBsYWNlKGVzY2FwZVJlZ2V4LCBmdW5jdGlvbiAobWF0Y2gp
IHtcbiAgICByZXR1cm4gZXNjYXBlckxvb2t1cFttYXRjaF07XG4gIH0pO1xuXG4gIHJldHVybiAn
JCcgKyBlc2NhcGVkU3RyaW5nO1xufVxuXG4vKipcbiAqIFVuZXNjYXBlIGFuZCB1bndyYXAga2V5
IGZvciBodW1hbi1yZWFkYWJsZSBkaXNwbGF5XG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGtleSB0
byB1bmVzY2FwZS5cbiAqIEByZXR1cm4ge3N0cmluZ30gdGhlIHVuZXNjYXBlZCBrZXkuXG4gKi9c
bmZ1bmN0aW9uIHVuZXNjYXBlKGtleSkge1xuICB2YXIgdW5lc2NhcGVSZWdleCA9IC8oPTB8PTIp
L2c7XG4gIHZhciB1bmVzY2FwZXJMb29rdXAgPSB7XG4gICAgJz0wJzogJz0nLFxuICAgICc9Mic6
ICc6J1xuICB9O1xuICB2YXIga2V5U3Vic3RyaW5nID0ga2V5WzBdID09PSAnLicgJiYga2V5WzFd
ID09PSAnJCcgPyBrZXkuc3Vic3RyaW5nKDIpIDoga2V5LnN1YnN0cmluZygxKTtcblxuICByZXR1
cm4gKCcnICsga2V5U3Vic3RyaW5nKS5yZXBsYWNlKHVuZXNjYXBlUmVnZXgsIGZ1bmN0aW9uICht
YXRjaCkge1xuICAgIHJldHVybiB1bmVzY2FwZXJMb29rdXBbbWF0Y2hdO1xuICB9KTtcbn1cblxu
dmFyIEtleUVzY2FwZVV0aWxzID0ge1xuICBlc2NhcGU6IGVzY2FwZSxcbiAgdW5lc2NhcGU6IHVu
ZXNjYXBlXG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IEtleUVzY2FwZVV0aWxzO1xuXG5cbi8qKioq
KioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0LWRvbS9saWIv
S2V5RXNjYXBlVXRpbHMuanNcbiAqKiBtb2R1bGUgaWQgPSAzOFxuICoqIG1vZHVsZSBjaHVua3Mg
PSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5j
LlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxp
Y2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VO
U0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRk
aXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBB
VEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICovXG5cbid1c2Ugc3RyaWN0
JztcblxudmFyIF9wcm9kSW52YXJpYW50ID0gcmVxdWlyZSgnLi9yZWFjdFByb2RJbnZhcmlhbnQn
KTtcblxudmFyIFJlYWN0UHJvcFR5cGVzU2VjcmV0ID0gcmVxdWlyZSgnLi9SZWFjdFByb3BUeXBl
c1NlY3JldCcpO1xudmFyIHByb3BUeXBlc0ZhY3RvcnkgPSByZXF1aXJlKCdwcm9wLXR5cGVzL2Zh
Y3RvcnknKTtcblxudmFyIFJlYWN0ID0gcmVxdWlyZSgncmVhY3QvbGliL1JlYWN0Jyk7XG52YXIg
UHJvcFR5cGVzID0gcHJvcFR5cGVzRmFjdG9yeShSZWFjdC5pc1ZhbGlkRWxlbWVudCk7XG5cbnZh
ciBpbnZhcmlhbnQgPSByZXF1aXJlKCdmYmpzL2xpYi9pbnZhcmlhbnQnKTtcbnZhciB3YXJuaW5n
ID0gcmVxdWlyZSgnZmJqcy9saWIvd2FybmluZycpO1xuXG52YXIgaGFzUmVhZE9ubHlWYWx1ZSA9
IHtcbiAgYnV0dG9uOiB0cnVlLFxuICBjaGVja2JveDogdHJ1ZSxcbiAgaW1hZ2U6IHRydWUsXG4g
IGhpZGRlbjogdHJ1ZSxcbiAgcmFkaW86IHRydWUsXG4gIHJlc2V0OiB0cnVlLFxuICBzdWJtaXQ6
IHRydWVcbn07XG5cbmZ1bmN0aW9uIF9hc3NlcnRTaW5nbGVMaW5rKGlucHV0UHJvcHMpIHtcbiAg
IShpbnB1dFByb3BzLmNoZWNrZWRMaW5rID09IG51bGwgfHwgaW5wdXRQcm9wcy52YWx1ZUxpbmsg
PT0gbnVsbCkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJp
YW50KGZhbHNlLCAnQ2Fubm90IHByb3ZpZGUgYSBjaGVja2VkTGluayBhbmQgYSB2YWx1ZUxpbmsu
IElmIHlvdSB3YW50IHRvIHVzZSBjaGVja2VkTGluaywgeW91IHByb2JhYmx5IGRvblxcJ3Qgd2Fu
dCB0byB1c2UgdmFsdWVMaW5rIGFuZCB2aWNlIHZlcnNhLicpIDogX3Byb2RJbnZhcmlhbnQoJzg3
JykgOiB2b2lkIDA7XG59XG5mdW5jdGlvbiBfYXNzZXJ0VmFsdWVMaW5rKGlucHV0UHJvcHMpIHtc
biAgX2Fzc2VydFNpbmdsZUxpbmsoaW5wdXRQcm9wcyk7XG4gICEoaW5wdXRQcm9wcy52YWx1ZSA9
PSBudWxsICYmIGlucHV0UHJvcHMub25DaGFuZ2UgPT0gbnVsbCkgPyBwcm9jZXNzLmVudi5OT0RF
X0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnQ2Fubm90IHByb3ZpZGUg
YSB2YWx1ZUxpbmsgYW5kIGEgdmFsdWUgb3Igb25DaGFuZ2UgZXZlbnQuIElmIHlvdSB3YW50IHRv
IHVzZSB2YWx1ZSBvciBvbkNoYW5nZSwgeW91IHByb2JhYmx5IGRvblxcJ3Qgd2FudCB0byB1c2Ug
dmFsdWVMaW5rLicpIDogX3Byb2RJbnZhcmlhbnQoJzg4JykgOiB2b2lkIDA7XG59XG5cbmZ1bmN0
aW9uIF9hc3NlcnRDaGVja2VkTGluayhpbnB1dFByb3BzKSB7XG4gIF9hc3NlcnRTaW5nbGVMaW5r
KGlucHV0UHJvcHMpO1xuICAhKGlucHV0UHJvcHMuY2hlY2tlZCA9PSBudWxsICYmIGlucHV0UHJv
cHMub25DaGFuZ2UgPT0gbnVsbCkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rp
b24nID8gaW52YXJpYW50KGZhbHNlLCAnQ2Fubm90IHByb3ZpZGUgYSBjaGVja2VkTGluayBhbmQg
YSBjaGVja2VkIHByb3BlcnR5IG9yIG9uQ2hhbmdlIGV2ZW50LiBJZiB5b3Ugd2FudCB0byB1c2Ug
Y2hlY2tlZCBvciBvbkNoYW5nZSwgeW91IHByb2JhYmx5IGRvblxcJ3Qgd2FudCB0byB1c2UgY2hl
Y2tlZExpbmsnKSA6IF9wcm9kSW52YXJpYW50KCc4OScpIDogdm9pZCAwO1xufVxuXG52YXIgcHJv
cFR5cGVzID0ge1xuICB2YWx1ZTogZnVuY3Rpb24gKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50
TmFtZSkge1xuICAgIGlmICghcHJvcHNbcHJvcE5hbWVdIHx8IGhhc1JlYWRPbmx5VmFsdWVbcHJv
cHMudHlwZV0gfHwgcHJvcHMub25DaGFuZ2UgfHwgcHJvcHMucmVhZE9ubHkgfHwgcHJvcHMuZGlz
YWJsZWQpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IEVycm9y
KCdZb3UgcHJvdmlkZWQgYSBgdmFsdWVgIHByb3AgdG8gYSBmb3JtIGZpZWxkIHdpdGhvdXQgYW4g
JyArICdgb25DaGFuZ2VgIGhhbmRsZXIuIFRoaXMgd2lsbCByZW5kZXIgYSByZWFkLW9ubHkgZmll
bGQuIElmICcgKyAndGhlIGZpZWxkIHNob3VsZCBiZSBtdXRhYmxlIHVzZSBgZGVmYXVsdFZhbHVl
YC4gT3RoZXJ3aXNlLCAnICsgJ3NldCBlaXRoZXIgYG9uQ2hhbmdlYCBvciBgcmVhZE9ubHlgLicp
O1xuICB9LFxuICBjaGVja2VkOiBmdW5jdGlvbiAocHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnRO
YW1lKSB7XG4gICAgaWYgKCFwcm9wc1twcm9wTmFtZV0gfHwgcHJvcHMub25DaGFuZ2UgfHwgcHJv
cHMucmVhZE9ubHkgfHwgcHJvcHMuZGlzYWJsZWQpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAg
IH1cbiAgICByZXR1cm4gbmV3IEVycm9yKCdZb3UgcHJvdmlkZWQgYSBgY2hlY2tlZGAgcHJvcCB0
byBhIGZvcm0gZmllbGQgd2l0aG91dCBhbiAnICsgJ2BvbkNoYW5nZWAgaGFuZGxlci4gVGhpcyB3
aWxsIHJlbmRlciBhIHJlYWQtb25seSBmaWVsZC4gSWYgJyArICd0aGUgZmllbGQgc2hvdWxkIGJl
IG11dGFibGUgdXNlIGBkZWZhdWx0Q2hlY2tlZGAuIE90aGVyd2lzZSwgJyArICdzZXQgZWl0aGVy
IGBvbkNoYW5nZWAgb3IgYHJlYWRPbmx5YC4nKTtcbiAgfSxcbiAgb25DaGFuZ2U6IFByb3BUeXBl
cy5mdW5jXG59O1xuXG52YXIgbG9nZ2VkVHlwZUZhaWx1cmVzID0ge307XG5mdW5jdGlvbiBnZXRE
ZWNsYXJhdGlvbkVycm9yQWRkZW5kdW0ob3duZXIpIHtcbiAgaWYgKG93bmVyKSB7XG4gICAgdmFy
IG5hbWUgPSBvd25lci5nZXROYW1lKCk7XG4gICAgaWYgKG5hbWUpIHtcbiAgICAgIHJldHVybiAn
IENoZWNrIHRoZSByZW5kZXIgbWV0aG9kIG9mIGAnICsgbmFtZSArICdgLic7XG4gICAgfVxuICB9
XG4gIHJldHVybiAnJztcbn1cblxuLyoqXG4gKiBQcm92aWRlIGEgbGlua2VkIGB2YWx1ZWAgYXR0
cmlidXRlIGZvciBjb250cm9sbGVkIGZvcm1zLiBZb3Ugc2hvdWxkIG5vdCB1c2VcbiAqIHRoaXMg
b3V0c2lkZSBvZiB0aGUgUmVhY3RET00gY29udHJvbGxlZCBmb3JtIGNvbXBvbmVudHMuXG4gKi9c
bnZhciBMaW5rZWRWYWx1ZVV0aWxzID0ge1xuICBjaGVja1Byb3BUeXBlczogZnVuY3Rpb24gKHRh
Z05hbWUsIHByb3BzLCBvd25lcikge1xuICAgIGZvciAodmFyIHByb3BOYW1lIGluIHByb3BUeXBl
cykge1xuICAgICAgaWYgKHByb3BUeXBlcy5oYXNPd25Qcm9wZXJ0eShwcm9wTmFtZSkpIHtcbiAg
ICAgICAgdmFyIGVycm9yID0gcHJvcFR5cGVzW3Byb3BOYW1lXShwcm9wcywgcHJvcE5hbWUsIHRh
Z05hbWUsICdwcm9wJywgbnVsbCwgUmVhY3RQcm9wVHlwZXNTZWNyZXQpO1xuICAgICAgfVxuICAg
ICAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IgJiYgIShlcnJvci5tZXNzYWdlIGluIGxvZ2dl
ZFR5cGVGYWlsdXJlcykpIHtcbiAgICAgICAgLy8gT25seSBtb25pdG9yIHRoaXMgZmFpbHVyZSBv
bmNlIGJlY2F1c2UgdGhlcmUgdGVuZHMgdG8gYmUgYSBsb3Qgb2YgdGhlXG4gICAgICAgIC8vIHNh
bWUgZXJyb3IuXG4gICAgICAgIGxvZ2dlZFR5cGVGYWlsdXJlc1tlcnJvci5tZXNzYWdlXSA9IHRy
dWU7XG5cbiAgICAgICAgdmFyIGFkZGVuZHVtID0gZ2V0RGVjbGFyYXRpb25FcnJvckFkZGVuZHVt
KG93bmVyKTtcbiAgICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/
IHdhcm5pbmcoZmFsc2UsICdGYWlsZWQgZm9ybSBwcm9wVHlwZTogJXMlcycsIGVycm9yLm1lc3Nh
Z2UsIGFkZGVuZHVtKSA6IHZvaWQgMDtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG5cbiAgLyoqXG4g
ICAqIEBwYXJhbSB7b2JqZWN0fSBpbnB1dFByb3BzIFByb3BzIGZvciBmb3JtIGNvbXBvbmVudFxu
ICAgKiBAcmV0dXJuIHsqfSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpbnB1dCBlaXRoZXIgZnJvbSB2
YWx1ZSBwcm9wIG9yIGxpbmsuXG4gICAqL1xuICBnZXRWYWx1ZTogZnVuY3Rpb24gKGlucHV0UHJv
cHMpIHtcbiAgICBpZiAoaW5wdXRQcm9wcy52YWx1ZUxpbmspIHtcbiAgICAgIF9hc3NlcnRWYWx1
ZUxpbmsoaW5wdXRQcm9wcyk7XG4gICAgICByZXR1cm4gaW5wdXRQcm9wcy52YWx1ZUxpbmsudmFs
dWU7XG4gICAgfVxuICAgIHJldHVybiBpbnB1dFByb3BzLnZhbHVlO1xuICB9LFxuXG4gIC8qKlxu
ICAgKiBAcGFyYW0ge29iamVjdH0gaW5wdXRQcm9wcyBQcm9wcyBmb3IgZm9ybSBjb21wb25lbnRc
biAgICogQHJldHVybiB7Kn0gY3VycmVudCBjaGVja2VkIHN0YXR1cyBvZiB0aGUgaW5wdXQgZWl0
aGVyIGZyb20gY2hlY2tlZCBwcm9wXG4gICAqICAgICAgICAgICAgIG9yIGxpbmsuXG4gICAqL1xu
ICBnZXRDaGVja2VkOiBmdW5jdGlvbiAoaW5wdXRQcm9wcykge1xuICAgIGlmIChpbnB1dFByb3Bz
LmNoZWNrZWRMaW5rKSB7XG4gICAgICBfYXNzZXJ0Q2hlY2tlZExpbmsoaW5wdXRQcm9wcyk7XG4g
ICAgICByZXR1cm4gaW5wdXRQcm9wcy5jaGVja2VkTGluay52YWx1ZTtcbiAgICB9XG4gICAgcmV0
dXJuIGlucHV0UHJvcHMuY2hlY2tlZDtcbiAgfSxcblxuICAvKipcbiAgICogQHBhcmFtIHtvYmpl
Y3R9IGlucHV0UHJvcHMgUHJvcHMgZm9yIGZvcm0gY29tcG9uZW50XG4gICAqIEBwYXJhbSB7U3lu
dGhldGljRXZlbnR9IGV2ZW50IGNoYW5nZSBldmVudCB0byBoYW5kbGVcbiAgICovXG4gIGV4ZWN1
dGVPbkNoYW5nZTogZnVuY3Rpb24gKGlucHV0UHJvcHMsIGV2ZW50KSB7XG4gICAgaWYgKGlucHV0
UHJvcHMudmFsdWVMaW5rKSB7XG4gICAgICBfYXNzZXJ0VmFsdWVMaW5rKGlucHV0UHJvcHMpO1xu
ICAgICAgcmV0dXJuIGlucHV0UHJvcHMudmFsdWVMaW5rLnJlcXVlc3RDaGFuZ2UoZXZlbnQudGFy
Z2V0LnZhbHVlKTtcbiAgICB9IGVsc2UgaWYgKGlucHV0UHJvcHMuY2hlY2tlZExpbmspIHtcbiAg
ICAgIF9hc3NlcnRDaGVja2VkTGluayhpbnB1dFByb3BzKTtcbiAgICAgIHJldHVybiBpbnB1dFBy
b3BzLmNoZWNrZWRMaW5rLnJlcXVlc3RDaGFuZ2UoZXZlbnQudGFyZ2V0LmNoZWNrZWQpO1xuICAg
IH0gZWxzZSBpZiAoaW5wdXRQcm9wcy5vbkNoYW5nZSkge1xuICAgICAgcmV0dXJuIGlucHV0UHJv
cHMub25DaGFuZ2UuY2FsbCh1bmRlZmluZWQsIGV2ZW50KTtcbiAgICB9XG4gIH1cbn07XG5cbm1v
ZHVsZS5leHBvcnRzID0gTGlua2VkVmFsdWVVdGlscztcblxuXG4vKioqKioqKioqKioqKioqKipc
biAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFjdC1kb20vbGliL0xpbmtlZFZhbHVlVXRp
bHMuanNcbiAqKiBtb2R1bGUgaWQgPSAzOVxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwi
LyoqXG4gKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJp
Z2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVy
IHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0
aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFu
dFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBp
biB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52
YXIgX3Byb2RJbnZhcmlhbnQgPSByZXF1aXJlKCcuL3JlYWN0UHJvZEludmFyaWFudCcpO1xuXG52
YXIgaW52YXJpYW50ID0gcmVxdWlyZSgnZmJqcy9saWIvaW52YXJpYW50Jyk7XG5cbnZhciBpbmpl
Y3RlZCA9IGZhbHNlO1xuXG52YXIgUmVhY3RDb21wb25lbnRFbnZpcm9ubWVudCA9IHtcbiAgLyoq
XG4gICAqIE9wdGlvbmFsbHkgaW5qZWN0YWJsZSBob29rIGZvciBzd2FwcGluZyBvdXQgbW91bnQg
aW1hZ2VzIGluIHRoZSBtaWRkbGUgb2ZcbiAgICogdGhlIHRyZWUuXG4gICAqL1xuICByZXBsYWNl
Tm9kZVdpdGhNYXJrdXA6IG51bGwsXG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsbHkgaW5qZWN0YWJs
ZSBob29rIGZvciBwcm9jZXNzaW5nIGEgcXVldWUgb2YgY2hpbGQgdXBkYXRlcy4gV2lsbFxuICAg
KiBsYXRlciBtb3ZlIGludG8gTXVsdGlDaGlsZENvbXBvbmVudHMuXG4gICAqL1xuICBwcm9jZXNz
Q2hpbGRyZW5VcGRhdGVzOiBudWxsLFxuXG4gIGluamVjdGlvbjoge1xuICAgIGluamVjdEVudmly
b25tZW50OiBmdW5jdGlvbiAoZW52aXJvbm1lbnQpIHtcbiAgICAgICEhaW5qZWN0ZWQgPyBwcm9j
ZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnUmVh
Y3RDb21wb3NpdGVDb21wb25lbnQ6IGluamVjdEVudmlyb25tZW50KCkgY2FuIG9ubHkgYmUgY2Fs
bGVkIG9uY2UuJykgOiBfcHJvZEludmFyaWFudCgnMTA0JykgOiB2b2lkIDA7XG4gICAgICBSZWFj
dENvbXBvbmVudEVudmlyb25tZW50LnJlcGxhY2VOb2RlV2l0aE1hcmt1cCA9IGVudmlyb25tZW50
LnJlcGxhY2VOb2RlV2l0aE1hcmt1cDtcbiAgICAgIFJlYWN0Q29tcG9uZW50RW52aXJvbm1lbnQu
cHJvY2Vzc0NoaWxkcmVuVXBkYXRlcyA9IGVudmlyb25tZW50LnByb2Nlc3NDaGlsZHJlblVwZGF0
ZXM7XG4gICAgICBpbmplY3RlZCA9IHRydWU7XG4gICAgfVxuICB9XG59O1xuXG5tb2R1bGUuZXhw
b3J0cyA9IFJlYWN0Q29tcG9uZW50RW52aXJvbm1lbnQ7XG5cblxuLyoqKioqKioqKioqKioqKioq
XG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3QtZG9tL2xpYi9SZWFjdENvbXBvbmVu
dEVudmlyb25tZW50LmpzXG4gKiogbW9kdWxlIGlkID0gNDBcbiAqKiBtb2R1bGUgY2h1bmtzID0g
MFxuICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5c
biAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNl
bnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNF
IGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0
aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRF
TlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIFxuICovXG5cbid1c2Ugc3Ry
aWN0JztcblxudmFyIGNhdWdodEVycm9yID0gbnVsbDtcblxuLyoqXG4gKiBDYWxsIGEgZnVuY3Rp
b24gd2hpbGUgZ3VhcmRpbmcgYWdhaW5zdCBlcnJvcnMgdGhhdCBoYXBwZW5zIHdpdGhpbiBpdC5c
biAqXG4gKiBAcGFyYW0ge1N0cmluZ30gbmFtZSBvZiB0aGUgZ3VhcmQgdG8gdXNlIGZvciBsb2dn
aW5nIG9yIGRlYnVnZ2luZ1xuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24g
dG8gaW52b2tlXG4gKiBAcGFyYW0geyp9IGEgRmlyc3QgYXJndW1lbnRcbiAqIEBwYXJhbSB7Kn0g
YiBTZWNvbmQgYXJndW1lbnRcbiAqL1xuZnVuY3Rpb24gaW52b2tlR3VhcmRlZENhbGxiYWNrKG5h
bWUsIGZ1bmMsIGEpIHtcbiAgdHJ5IHtcbiAgICBmdW5jKGEpO1xuICB9IGNhdGNoICh4KSB7XG4g
ICAgaWYgKGNhdWdodEVycm9yID09PSBudWxsKSB7XG4gICAgICBjYXVnaHRFcnJvciA9IHg7XG4g
ICAgfVxuICB9XG59XG5cbnZhciBSZWFjdEVycm9yVXRpbHMgPSB7XG4gIGludm9rZUd1YXJkZWRD
YWxsYmFjazogaW52b2tlR3VhcmRlZENhbGxiYWNrLFxuXG4gIC8qKlxuICAgKiBJbnZva2VkIGJ5
IFJlYWN0VGVzdFV0aWxzLlNpbXVsYXRlIHNvIHRoYXQgYW55IGVycm9ycyB0aHJvd24gYnkgdGhl
IGV2ZW50XG4gICAqIGhhbmRsZXIgYXJlIHN1cmUgdG8gYmUgcmV0aHJvd24gYnkgcmV0aHJvd0Nh
dWdodEVycm9yLlxuICAgKi9cbiAgaW52b2tlR3VhcmRlZENhbGxiYWNrV2l0aENhdGNoOiBpbnZv
a2VHdWFyZGVkQ2FsbGJhY2ssXG5cbiAgLyoqXG4gICAqIER1cmluZyBleGVjdXRpb24gb2YgZ3Vh
cmRlZCBmdW5jdGlvbnMgd2Ugd2lsbCBjYXB0dXJlIHRoZSBmaXJzdCBlcnJvciB3aGljaFxuICAg
KiB3ZSB3aWxsIHJldGhyb3cgdG8gYmUgaGFuZGxlZCBieSB0aGUgdG9wIGxldmVsIGVycm9yIGhh
bmRsZXIuXG4gICAqL1xuICByZXRocm93Q2F1Z2h0RXJyb3I6IGZ1bmN0aW9uICgpIHtcbiAgICBp
ZiAoY2F1Z2h0RXJyb3IpIHtcbiAgICAgIHZhciBlcnJvciA9IGNhdWdodEVycm9yO1xuICAgICAg
Y2F1Z2h0RXJyb3IgPSBudWxsO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICB9XG59O1xu
XG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAvKipcbiAg
ICogVG8gaGVscCBkZXZlbG9wbWVudCB3ZSBjYW4gZ2V0IGJldHRlciBkZXZ0b29scyBpbnRlZ3Jh
dGlvbiBieSBzaW11bGF0aW5nIGFcbiAgICogcmVhbCBicm93c2VyIGV2ZW50LlxuICAgKi9cbiAg
aWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiB3aW5kb3cuZGlzcGF0
Y2hFdmVudCA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgZG9jdW1lbnQgIT09ICd1bmRlZmluZWQn
ICYmIHR5cGVvZiBkb2N1bWVudC5jcmVhdGVFdmVudCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHZh
ciBmYWtlTm9kZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3JlYWN0Jyk7XG4gICAgUmVhY3RF
cnJvclV0aWxzLmludm9rZUd1YXJkZWRDYWxsYmFjayA9IGZ1bmN0aW9uIChuYW1lLCBmdW5jLCBh
KSB7XG4gICAgICB2YXIgYm91bmRGdW5jID0gZnVuYy5iaW5kKG51bGwsIGEpO1xuICAgICAgdmFy
IGV2dFR5cGUgPSAncmVhY3QtJyArIG5hbWU7XG4gICAgICBmYWtlTm9kZS5hZGRFdmVudExpc3Rl
bmVyKGV2dFR5cGUsIGJvdW5kRnVuYywgZmFsc2UpO1xuICAgICAgdmFyIGV2dCA9IGRvY3VtZW50
LmNyZWF0ZUV2ZW50KCdFdmVudCcpO1xuICAgICAgZXZ0LmluaXRFdmVudChldnRUeXBlLCBmYWxz
ZSwgZmFsc2UpO1xuICAgICAgZmFrZU5vZGUuZGlzcGF0Y2hFdmVudChldnQpO1xuICAgICAgZmFr
ZU5vZGUucmVtb3ZlRXZlbnRMaXN0ZW5lcihldnRUeXBlLCBib3VuZEZ1bmMsIGZhbHNlKTtcbiAg
ICB9O1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RFcnJvclV0aWxzO1xuXG5cbi8q
KioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0LWRvbS9s
aWIvUmVhY3RFcnJvclV0aWxzLmpzXG4gKiogbW9kdWxlIGlkID0gNDFcbiAqKiBtb2R1bGUgY2h1
bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTUtcHJlc2VudCwgRmFjZWJvb2ss
IEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBp
cyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBM
SUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFu
IGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRo
ZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNlIHN0
cmljdCc7XG5cbnZhciBfcHJvZEludmFyaWFudCA9IHJlcXVpcmUoJy4vcmVhY3RQcm9kSW52YXJp
YW50Jyk7XG5cbnZhciBSZWFjdEN1cnJlbnRPd25lciA9IHJlcXVpcmUoJ3JlYWN0L2xpYi9SZWFj
dEN1cnJlbnRPd25lcicpO1xudmFyIFJlYWN0SW5zdGFuY2VNYXAgPSByZXF1aXJlKCcuL1JlYWN0
SW5zdGFuY2VNYXAnKTtcbnZhciBSZWFjdEluc3RydW1lbnRhdGlvbiA9IHJlcXVpcmUoJy4vUmVh
Y3RJbnN0cnVtZW50YXRpb24nKTtcbnZhciBSZWFjdFVwZGF0ZXMgPSByZXF1aXJlKCcuL1JlYWN0
VXBkYXRlcycpO1xuXG52YXIgaW52YXJpYW50ID0gcmVxdWlyZSgnZmJqcy9saWIvaW52YXJpYW50
Jyk7XG52YXIgd2FybmluZyA9IHJlcXVpcmUoJ2ZianMvbGliL3dhcm5pbmcnKTtcblxuZnVuY3Rp
b24gZW5xdWV1ZVVwZGF0ZShpbnRlcm5hbEluc3RhbmNlKSB7XG4gIFJlYWN0VXBkYXRlcy5lbnF1
ZXVlVXBkYXRlKGludGVybmFsSW5zdGFuY2UpO1xufVxuXG5mdW5jdGlvbiBmb3JtYXRVbmV4cGVj
dGVkQXJndW1lbnQoYXJnKSB7XG4gIHZhciB0eXBlID0gdHlwZW9mIGFyZztcbiAgaWYgKHR5cGUg
IT09ICdvYmplY3QnKSB7XG4gICAgcmV0dXJuIHR5cGU7XG4gIH1cbiAgdmFyIGRpc3BsYXlOYW1l
ID0gYXJnLmNvbnN0cnVjdG9yICYmIGFyZy5jb25zdHJ1Y3Rvci5uYW1lIHx8IHR5cGU7XG4gIHZh
ciBrZXlzID0gT2JqZWN0LmtleXMoYXJnKTtcbiAgaWYgKGtleXMubGVuZ3RoID4gMCAmJiBrZXlz
Lmxlbmd0aCA8IDIwKSB7XG4gICAgcmV0dXJuIGRpc3BsYXlOYW1lICsgJyAoa2V5czogJyArIGtl
eXMuam9pbignLCAnKSArICcpJztcbiAgfVxuICByZXR1cm4gZGlzcGxheU5hbWU7XG59XG5cbmZ1
bmN0aW9uIGdldEludGVybmFsSW5zdGFuY2VSZWFkeUZvclVwZGF0ZShwdWJsaWNJbnN0YW5jZSwg
Y2FsbGVyTmFtZSkge1xuICB2YXIgaW50ZXJuYWxJbnN0YW5jZSA9IFJlYWN0SW5zdGFuY2VNYXAu
Z2V0KHB1YmxpY0luc3RhbmNlKTtcbiAgaWYgKCFpbnRlcm5hbEluc3RhbmNlKSB7XG4gICAgaWYg
KHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIHZhciBjdG9y
ID0gcHVibGljSW5zdGFuY2UuY29uc3RydWN0b3I7XG4gICAgICAvLyBPbmx5IHdhcm4gd2hlbiB3
ZSBoYXZlIGEgY2FsbGVyTmFtZS4gT3RoZXJ3aXNlIHdlIHNob3VsZCBiZSBzaWxlbnQuXG4gICAg
ICAvLyBXZSdyZSBwcm9iYWJseSBjYWxsaW5nIGZyb20gZW5xdWV1ZUNhbGxiYWNrLiBXZSBkb24n
dCB3YW50IHRvIHdhcm5cbiAgICAgIC8vIHRoZXJlIGJlY2F1c2Ugd2UgYWxyZWFkeSB3YXJuZWQg
Zm9yIHRoZSBjb3JyZXNwb25kaW5nIGxpZmVjeWNsZSBtZXRob2QuXG4gICAgICBwcm9jZXNzLmVu
di5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyghY2FsbGVyTmFtZSwgJyVzKC4u
Lik6IENhbiBvbmx5IHVwZGF0ZSBhIG1vdW50ZWQgb3IgbW91bnRpbmcgY29tcG9uZW50LiAnICsg
J1RoaXMgdXN1YWxseSBtZWFucyB5b3UgY2FsbGVkICVzKCkgb24gYW4gdW5tb3VudGVkIGNvbXBv
bmVudC4gJyArICdUaGlzIGlzIGEgbm8tb3AuIFBsZWFzZSBjaGVjayB0aGUgY29kZSBmb3IgdGhl
ICVzIGNvbXBvbmVudC4nLCBjYWxsZXJOYW1lLCBjYWxsZXJOYW1lLCBjdG9yICYmIChjdG9yLmRp
c3BsYXlOYW1lIHx8IGN0b3IubmFtZSkgfHwgJ1JlYWN0Q2xhc3MnKSA6IHZvaWQgMDtcbiAgICB9
XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09
ICdwcm9kdWN0aW9uJykge1xuICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlv
bicgPyB3YXJuaW5nKFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQgPT0gbnVsbCwgJyVzKC4uLik6
IENhbm5vdCB1cGRhdGUgZHVyaW5nIGFuIGV4aXN0aW5nIHN0YXRlIHRyYW5zaXRpb24gKHN1Y2gg
YXMgJyArIFwid2l0aGluIGByZW5kZXJgIG9yIGFub3RoZXIgY29tcG9uZW50J3MgY29uc3RydWN0
b3IpLiBSZW5kZXIgbWV0aG9kcyBcIiArICdzaG91bGQgYmUgYSBwdXJlIGZ1bmN0aW9uIG9mIHBy
b3BzIGFuZCBzdGF0ZTsgY29uc3RydWN0b3IgJyArICdzaWRlLWVmZmVjdHMgYXJlIGFuIGFudGkt
cGF0dGVybiwgYnV0IGNhbiBiZSBtb3ZlZCB0byAnICsgJ2Bjb21wb25lbnRXaWxsTW91bnRgLics
IGNhbGxlck5hbWUpIDogdm9pZCAwO1xuICB9XG5cbiAgcmV0dXJuIGludGVybmFsSW5zdGFuY2U7
XG59XG5cbi8qKlxuICogUmVhY3RVcGRhdGVRdWV1ZSBhbGxvd3MgZm9yIHN0YXRlIHVwZGF0ZXMg
dG8gYmUgc2NoZWR1bGVkIGludG8gYSBsYXRlclxuICogcmVjb25jaWxpYXRpb24gc3RlcC5cbiAq
L1xudmFyIFJlYWN0VXBkYXRlUXVldWUgPSB7XG4gIC8qKlxuICAgKiBDaGVja3Mgd2hldGhlciBv
ciBub3QgdGhpcyBjb21wb3NpdGUgY29tcG9uZW50IGlzIG1vdW50ZWQuXG4gICAqIEBwYXJhbSB7
UmVhY3RDbGFzc30gcHVibGljSW5zdGFuY2UgVGhlIGluc3RhbmNlIHdlIHdhbnQgdG8gdGVzdC5c
biAgICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBpZiBtb3VudGVkLCBmYWxzZSBvdGhlcndpc2Uu
XG4gICAqIEBwcm90ZWN0ZWRcbiAgICogQGZpbmFsXG4gICAqL1xuICBpc01vdW50ZWQ6IGZ1bmN0
aW9uIChwdWJsaWNJbnN0YW5jZSkge1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0g
J3Byb2R1Y3Rpb24nKSB7XG4gICAgICB2YXIgb3duZXIgPSBSZWFjdEN1cnJlbnRPd25lci5jdXJy
ZW50O1xuICAgICAgaWYgKG93bmVyICE9PSBudWxsKSB7XG4gICAgICAgIHByb2Nlc3MuZW52Lk5P
REVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKG93bmVyLl93YXJuZWRBYm91dFJlZnNJ
blJlbmRlciwgJyVzIGlzIGFjY2Vzc2luZyBpc01vdW50ZWQgaW5zaWRlIGl0cyByZW5kZXIoKSBm
dW5jdGlvbi4gJyArICdyZW5kZXIoKSBzaG91bGQgYmUgYSBwdXJlIGZ1bmN0aW9uIG9mIHByb3Bz
IGFuZCBzdGF0ZS4gSXQgc2hvdWxkICcgKyAnbmV2ZXIgYWNjZXNzIHNvbWV0aGluZyB0aGF0IHJl
cXVpcmVzIHN0YWxlIGRhdGEgZnJvbSB0aGUgcHJldmlvdXMgJyArICdyZW5kZXIsIHN1Y2ggYXMg
cmVmcy4gTW92ZSB0aGlzIGxvZ2ljIHRvIGNvbXBvbmVudERpZE1vdW50IGFuZCAnICsgJ2NvbXBv
bmVudERpZFVwZGF0ZSBpbnN0ZWFkLicsIG93bmVyLmdldE5hbWUoKSB8fCAnQSBjb21wb25lbnQn
KSA6IHZvaWQgMDtcbiAgICAgICAgb3duZXIuX3dhcm5lZEFib3V0UmVmc0luUmVuZGVyID0gdHJ1
ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgdmFyIGludGVybmFsSW5zdGFuY2UgPSBSZWFjdEluc3Rh
bmNlTWFwLmdldChwdWJsaWNJbnN0YW5jZSk7XG4gICAgaWYgKGludGVybmFsSW5zdGFuY2UpIHtc
biAgICAgIC8vIER1cmluZyBjb21wb25lbnRXaWxsTW91bnQgYW5kIHJlbmRlciB0aGlzIHdpbGwg
c3RpbGwgYmUgbnVsbCBidXQgYWZ0ZXJcbiAgICAgIC8vIHRoYXQgd2lsbCBhbHdheXMgcmVuZGVy
IHRvIHNvbWV0aGluZy4gQXQgbGVhc3QgZm9yIG5vdy4gU28gd2UgY2FuIHVzZVxuICAgICAgLy8g
dGhpcyBoYWNrLlxuICAgICAgcmV0dXJuICEhaW50ZXJuYWxJbnN0YW5jZS5fcmVuZGVyZWRDb21w
b25lbnQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH0sXG5c
biAgLyoqXG4gICAqIEVucXVldWUgYSBjYWxsYmFjayB0aGF0IHdpbGwgYmUgZXhlY3V0ZWQgYWZ0
ZXIgYWxsIHRoZSBwZW5kaW5nIHVwZGF0ZXNcbiAgICogaGF2ZSBwcm9jZXNzZWQuXG4gICAqXG4g
ICAqIEBwYXJhbSB7UmVhY3RDbGFzc30gcHVibGljSW5zdGFuY2UgVGhlIGluc3RhbmNlIHRvIHVz
ZSBhcyBgdGhpc2AgY29udGV4dC5cbiAgICogQHBhcmFtIHs/ZnVuY3Rpb259IGNhbGxiYWNrIENh
bGxlZCBhZnRlciBzdGF0ZSBpcyB1cGRhdGVkLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gY2FsbGVy
TmFtZSBOYW1lIG9mIHRoZSBjYWxsaW5nIGZ1bmN0aW9uIGluIHRoZSBwdWJsaWMgQVBJLlxuICAg
KiBAaW50ZXJuYWxcbiAgICovXG4gIGVucXVldWVDYWxsYmFjazogZnVuY3Rpb24gKHB1YmxpY0lu
c3RhbmNlLCBjYWxsYmFjaywgY2FsbGVyTmFtZSkge1xuICAgIFJlYWN0VXBkYXRlUXVldWUudmFs
aWRhdGVDYWxsYmFjayhjYWxsYmFjaywgY2FsbGVyTmFtZSk7XG4gICAgdmFyIGludGVybmFsSW5z
dGFuY2UgPSBnZXRJbnRlcm5hbEluc3RhbmNlUmVhZHlGb3JVcGRhdGUocHVibGljSW5zdGFuY2Up
O1xuXG4gICAgLy8gUHJldmlvdXNseSB3ZSB3b3VsZCB0aHJvdyBhbiBlcnJvciBpZiB3ZSBkaWRu
J3QgaGF2ZSBhbiBpbnRlcm5hbFxuICAgIC8vIGluc3RhbmNlLiBTaW5jZSB3ZSB3YW50IHRvIG1h
a2UgaXQgYSBuby1vcCBpbnN0ZWFkLCB3ZSBtaXJyb3IgdGhlIHNhbWVcbiAgICAvLyBiZWhhdmlv
ciB3ZSBoYXZlIGluIG90aGVyIGVucXVldWUqIG1ldGhvZHMuXG4gICAgLy8gV2UgYWxzbyBuZWVk
IHRvIGlnbm9yZSBjYWxsYmFja3MgaW4gY29tcG9uZW50V2lsbE1vdW50LiBTZWVcbiAgICAvLyBl
bnF1ZXVlVXBkYXRlcy5cbiAgICBpZiAoIWludGVybmFsSW5zdGFuY2UpIHtcbiAgICAgIHJldHVy
biBudWxsO1xuICAgIH1cblxuICAgIGlmIChpbnRlcm5hbEluc3RhbmNlLl9wZW5kaW5nQ2FsbGJh
Y2tzKSB7XG4gICAgICBpbnRlcm5hbEluc3RhbmNlLl9wZW5kaW5nQ2FsbGJhY2tzLnB1c2goY2Fs
bGJhY2spO1xuICAgIH0gZWxzZSB7XG4gICAgICBpbnRlcm5hbEluc3RhbmNlLl9wZW5kaW5nQ2Fs
bGJhY2tzID0gW2NhbGxiYWNrXTtcbiAgICB9XG4gICAgLy8gVE9ETzogVGhlIGNhbGxiYWNrIGhl
cmUgaXMgaWdub3JlZCB3aGVuIHNldFN0YXRlIGlzIGNhbGxlZCBmcm9tXG4gICAgLy8gY29tcG9u
ZW50V2lsbE1vdW50LiBFaXRoZXIgZml4IGl0IG9yIGRpc2FsbG93IGRvaW5nIHNvIGNvbXBsZXRl
bHkgaW5cbiAgICAvLyBmYXZvciBvZiBnZXRJbml0aWFsU3RhdGUuIEFsdGVybmF0aXZlbHksIHdl
IGNhbiBkaXNhbGxvd1xuICAgIC8vIGNvbXBvbmVudFdpbGxNb3VudCBkdXJpbmcgc2VydmVyLXNp
ZGUgcmVuZGVyaW5nLlxuICAgIGVucXVldWVVcGRhdGUoaW50ZXJuYWxJbnN0YW5jZSk7XG4gIH0s
XG5cbiAgZW5xdWV1ZUNhbGxiYWNrSW50ZXJuYWw6IGZ1bmN0aW9uIChpbnRlcm5hbEluc3RhbmNl
LCBjYWxsYmFjaykge1xuICAgIGlmIChpbnRlcm5hbEluc3RhbmNlLl9wZW5kaW5nQ2FsbGJhY2tz
KSB7XG4gICAgICBpbnRlcm5hbEluc3RhbmNlLl9wZW5kaW5nQ2FsbGJhY2tzLnB1c2goY2FsbGJh
Y2spO1xuICAgIH0gZWxzZSB7XG4gICAgICBpbnRlcm5hbEluc3RhbmNlLl9wZW5kaW5nQ2FsbGJh
Y2tzID0gW2NhbGxiYWNrXTtcbiAgICB9XG4gICAgZW5xdWV1ZVVwZGF0ZShpbnRlcm5hbEluc3Rh
bmNlKTtcbiAgfSxcblxuICAvKipcbiAgICogRm9yY2VzIGFuIHVwZGF0ZS4gVGhpcyBzaG91bGQg
b25seSBiZSBpbnZva2VkIHdoZW4gaXQgaXMga25vd24gd2l0aFxuICAgKiBjZXJ0YWludHkgdGhh
dCB3ZSBhcmUgKipub3QqKiBpbiBhIERPTSB0cmFuc2FjdGlvbi5cbiAgICpcbiAgICogWW91IG1h
eSB3YW50IHRvIGNhbGwgdGhpcyB3aGVuIHlvdSBrbm93IHRoYXQgc29tZSBkZWVwZXIgYXNwZWN0
IG9mIHRoZVxuICAgKiBjb21wb25lbnQncyBzdGF0ZSBoYXMgY2hhbmdlZCBidXQgYHNldFN0YXRl
YCB3YXMgbm90IGNhbGxlZC5cbiAgICpcbiAgICogVGhpcyB3aWxsIG5vdCBpbnZva2UgYHNob3Vs
ZENvbXBvbmVudFVwZGF0ZWAsIGJ1dCBpdCB3aWxsIGludm9rZVxuICAgKiBgY29tcG9uZW50V2ls
bFVwZGF0ZWAgYW5kIGBjb21wb25lbnREaWRVcGRhdGVgLlxuICAgKlxuICAgKiBAcGFyYW0ge1Jl
YWN0Q2xhc3N9IHB1YmxpY0luc3RhbmNlIFRoZSBpbnN0YW5jZSB0aGF0IHNob3VsZCByZXJlbmRl
ci5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBlbnF1ZXVlRm9yY2VVcGRhdGU6IGZ1bmN0aW9u
IChwdWJsaWNJbnN0YW5jZSkge1xuICAgIHZhciBpbnRlcm5hbEluc3RhbmNlID0gZ2V0SW50ZXJu
YWxJbnN0YW5jZVJlYWR5Rm9yVXBkYXRlKHB1YmxpY0luc3RhbmNlLCAnZm9yY2VVcGRhdGUnKTtc
blxuICAgIGlmICghaW50ZXJuYWxJbnN0YW5jZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxu
ICAgIGludGVybmFsSW5zdGFuY2UuX3BlbmRpbmdGb3JjZVVwZGF0ZSA9IHRydWU7XG5cbiAgICBl
bnF1ZXVlVXBkYXRlKGludGVybmFsSW5zdGFuY2UpO1xuICB9LFxuXG4gIC8qKlxuICAgKiBSZXBs
YWNlcyBhbGwgb2YgdGhlIHN0YXRlLiBBbHdheXMgdXNlIHRoaXMgb3IgYHNldFN0YXRlYCB0byBt
dXRhdGUgc3RhdGUuXG4gICAqIFlvdSBzaG91bGQgdHJlYXQgYHRoaXMuc3RhdGVgIGFzIGltbXV0
YWJsZS5cbiAgICpcbiAgICogVGhlcmUgaXMgbm8gZ3VhcmFudGVlIHRoYXQgYHRoaXMuc3RhdGVg
IHdpbGwgYmUgaW1tZWRpYXRlbHkgdXBkYXRlZCwgc29cbiAgICogYWNjZXNzaW5nIGB0aGlzLnN0
YXRlYCBhZnRlciBjYWxsaW5nIHRoaXMgbWV0aG9kIG1heSByZXR1cm4gdGhlIG9sZCB2YWx1ZS5c
biAgICpcbiAgICogQHBhcmFtIHtSZWFjdENsYXNzfSBwdWJsaWNJbnN0YW5jZSBUaGUgaW5zdGFu
Y2UgdGhhdCBzaG91bGQgcmVyZW5kZXIuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBjb21wbGV0ZVN0
YXRlIE5leHQgc3RhdGUuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgZW5xdWV1ZVJlcGxhY2VT
dGF0ZTogZnVuY3Rpb24gKHB1YmxpY0luc3RhbmNlLCBjb21wbGV0ZVN0YXRlLCBjYWxsYmFjaykg
e1xuICAgIHZhciBpbnRlcm5hbEluc3RhbmNlID0gZ2V0SW50ZXJuYWxJbnN0YW5jZVJlYWR5Rm9y
VXBkYXRlKHB1YmxpY0luc3RhbmNlLCAncmVwbGFjZVN0YXRlJyk7XG5cbiAgICBpZiAoIWludGVy
bmFsSW5zdGFuY2UpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpbnRlcm5hbEluc3Rh
bmNlLl9wZW5kaW5nU3RhdGVRdWV1ZSA9IFtjb21wbGV0ZVN0YXRlXTtcbiAgICBpbnRlcm5hbElu
c3RhbmNlLl9wZW5kaW5nUmVwbGFjZVN0YXRlID0gdHJ1ZTtcblxuICAgIC8vIEZ1dHVyZS1wcm9v
ZiAxNS41XG4gICAgaWYgKGNhbGxiYWNrICE9PSB1bmRlZmluZWQgJiYgY2FsbGJhY2sgIT09IG51
bGwpIHtcbiAgICAgIFJlYWN0VXBkYXRlUXVldWUudmFsaWRhdGVDYWxsYmFjayhjYWxsYmFjaywg
J3JlcGxhY2VTdGF0ZScpO1xuICAgICAgaWYgKGludGVybmFsSW5zdGFuY2UuX3BlbmRpbmdDYWxs
YmFja3MpIHtcbiAgICAgICAgaW50ZXJuYWxJbnN0YW5jZS5fcGVuZGluZ0NhbGxiYWNrcy5wdXNo
KGNhbGxiYWNrKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGludGVybmFsSW5zdGFuY2UuX3Bl
bmRpbmdDYWxsYmFja3MgPSBbY2FsbGJhY2tdO1xuICAgICAgfVxuICAgIH1cblxuICAgIGVucXVl
dWVVcGRhdGUoaW50ZXJuYWxJbnN0YW5jZSk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIFNldHMgYSBz
dWJzZXQgb2YgdGhlIHN0YXRlLiBUaGlzIG9ubHkgZXhpc3RzIGJlY2F1c2UgX3BlbmRpbmdTdGF0
ZSBpc1xuICAgKiBpbnRlcm5hbC4gVGhpcyBwcm92aWRlcyBhIG1lcmdpbmcgc3RyYXRlZ3kgdGhh
dCBpcyBub3QgYXZhaWxhYmxlIHRvIGRlZXBcbiAgICogcHJvcGVydGllcyB3aGljaCBpcyBjb25m
dXNpbmcuIFRPRE86IEV4cG9zZSBwZW5kaW5nU3RhdGUgb3IgZG9uJ3QgdXNlIGl0XG4gICAqIGR1
cmluZyB0aGUgbWVyZ2UuXG4gICAqXG4gICAqIEBwYXJhbSB7UmVhY3RDbGFzc30gcHVibGljSW5z
dGFuY2UgVGhlIGluc3RhbmNlIHRoYXQgc2hvdWxkIHJlcmVuZGVyLlxuICAgKiBAcGFyYW0ge29i
amVjdH0gcGFydGlhbFN0YXRlIE5leHQgcGFydGlhbCBzdGF0ZSB0byBiZSBtZXJnZWQgd2l0aCBz
dGF0ZS5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBlbnF1ZXVlU2V0U3RhdGU6IGZ1bmN0aW9u
IChwdWJsaWNJbnN0YW5jZSwgcGFydGlhbFN0YXRlKSB7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5P
REVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRl
YnVnVG9vbC5vblNldFN0YXRlKCk7XG4gICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3By
b2R1Y3Rpb24nID8gd2FybmluZyhwYXJ0aWFsU3RhdGUgIT0gbnVsbCwgJ3NldFN0YXRlKC4uLik6
IFlvdSBwYXNzZWQgYW4gdW5kZWZpbmVkIG9yIG51bGwgc3RhdGUgb2JqZWN0OyAnICsgJ2luc3Rl
YWQsIHVzZSBmb3JjZVVwZGF0ZSgpLicpIDogdm9pZCAwO1xuICAgIH1cblxuICAgIHZhciBpbnRl
cm5hbEluc3RhbmNlID0gZ2V0SW50ZXJuYWxJbnN0YW5jZVJlYWR5Rm9yVXBkYXRlKHB1YmxpY0lu
c3RhbmNlLCAnc2V0U3RhdGUnKTtcblxuICAgIGlmICghaW50ZXJuYWxJbnN0YW5jZSkge1xuICAg
ICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZhciBxdWV1ZSA9IGludGVybmFsSW5zdGFuY2UuX3Bl
bmRpbmdTdGF0ZVF1ZXVlIHx8IChpbnRlcm5hbEluc3RhbmNlLl9wZW5kaW5nU3RhdGVRdWV1ZSA9
IFtdKTtcbiAgICBxdWV1ZS5wdXNoKHBhcnRpYWxTdGF0ZSk7XG5cbiAgICBlbnF1ZXVlVXBkYXRl
KGludGVybmFsSW5zdGFuY2UpO1xuICB9LFxuXG4gIGVucXVldWVFbGVtZW50SW50ZXJuYWw6IGZ1
bmN0aW9uIChpbnRlcm5hbEluc3RhbmNlLCBuZXh0RWxlbWVudCwgbmV4dENvbnRleHQpIHtcbiAg
ICBpbnRlcm5hbEluc3RhbmNlLl9wZW5kaW5nRWxlbWVudCA9IG5leHRFbGVtZW50O1xuICAgIC8v
IFRPRE86IGludHJvZHVjZSBfcGVuZGluZ0NvbnRleHQgaW5zdGVhZCBvZiBzZXR0aW5nIGl0IGRp
cmVjdGx5LlxuICAgIGludGVybmFsSW5zdGFuY2UuX2NvbnRleHQgPSBuZXh0Q29udGV4dDtcbiAg
ICBlbnF1ZXVlVXBkYXRlKGludGVybmFsSW5zdGFuY2UpO1xuICB9LFxuXG4gIHZhbGlkYXRlQ2Fs
bGJhY2s6IGZ1bmN0aW9uIChjYWxsYmFjaywgY2FsbGVyTmFtZSkge1xuICAgICEoIWNhbGxiYWNr
IHx8IHR5cGVvZiBjYWxsYmFjayA9PT0gJ2Z1bmN0aW9uJykgPyBwcm9jZXNzLmVudi5OT0RFX0VO
ViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnJXMoLi4uKTogRXhwZWN0ZWQg
dGhlIGxhc3Qgb3B0aW9uYWwgYGNhbGxiYWNrYCBhcmd1bWVudCB0byBiZSBhIGZ1bmN0aW9uLiBJ
bnN0ZWFkIHJlY2VpdmVkOiAlcy4nLCBjYWxsZXJOYW1lLCBmb3JtYXRVbmV4cGVjdGVkQXJndW1l
bnQoY2FsbGJhY2spKSA6IF9wcm9kSW52YXJpYW50KCcxMjInLCBjYWxsZXJOYW1lLCBmb3JtYXRV
bmV4cGVjdGVkQXJndW1lbnQoY2FsbGJhY2spKSA6IHZvaWQgMDtcbiAgfVxufTtcblxubW9kdWxl
LmV4cG9ydHMgPSBSZWFjdFVwZGF0ZVF1ZXVlO1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoq
IFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0LWRvbS9saWIvUmVhY3RVcGRhdGVRdWV1ZS5q
c1xuICoqIG1vZHVsZSBpZCA9IDQyXG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipc
biAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRz
IHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhl
IEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSBy
b290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4g
KiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRo
ZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuLyogZ2xvYmFscyBNU0FwcCAqL1xuXG4ndXNl
IHN0cmljdCc7XG5cbi8qKlxuICogQ3JlYXRlIGEgZnVuY3Rpb24gd2hpY2ggaGFzICd1bnNhZmUn
IHByaXZpbGVnZXMgKHJlcXVpcmVkIGJ5IHdpbmRvd3M4IGFwcHMpXG4gKi9cblxudmFyIGNyZWF0
ZU1pY3Jvc29mdFVuc2FmZUxvY2FsRnVuY3Rpb24gPSBmdW5jdGlvbiAoZnVuYykge1xuICBpZiAo
dHlwZW9mIE1TQXBwICE9PSAndW5kZWZpbmVkJyAmJiBNU0FwcC5leGVjVW5zYWZlTG9jYWxGdW5j
dGlvbikge1xuICAgIHJldHVybiBmdW5jdGlvbiAoYXJnMCwgYXJnMSwgYXJnMiwgYXJnMykge1xu
ICAgICAgTVNBcHAuZXhlY1Vuc2FmZUxvY2FsRnVuY3Rpb24oZnVuY3Rpb24gKCkge1xuICAgICAg
ICByZXR1cm4gZnVuYyhhcmcwLCBhcmcxLCBhcmcyLCBhcmczKTtcbiAgICAgIH0pO1xuICAgIH07
XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGZ1bmM7XG4gIH1cbn07XG5cbm1vZHVsZS5leHBvcnRz
ID0gY3JlYXRlTWljcm9zb2Z0VW5zYWZlTG9jYWxGdW5jdGlvbjtcblxuXG4vKioqKioqKioqKioq
KioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFjdC1kb20vbGliL2NyZWF0ZU1p
Y3Jvc29mdFVuc2FmZUxvY2FsRnVuY3Rpb24uanNcbiAqKiBtb2R1bGUgaWQgPSA0M1xuICoqIG1v
ZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBG
YWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJj
ZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0
aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2Ug
dHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91
bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICovXG5c
bid1c2Ugc3RyaWN0JztcblxuLyoqXG4gKiBgY2hhckNvZGVgIHJlcHJlc2VudHMgdGhlIGFjdHVh
bCBcImNoYXJhY3RlciBjb2RlXCIgYW5kIGlzIHNhZmUgdG8gdXNlIHdpdGhcbiAqIGBTdHJpbmcu
ZnJvbUNoYXJDb2RlYC4gQXMgc3VjaCwgb25seSBrZXlzIHRoYXQgY29ycmVzcG9uZCB0byBwcmlu
dGFibGVcbiAqIGNoYXJhY3RlcnMgcHJvZHVjZSBhIHZhbGlkIGBjaGFyQ29kZWAsIHRoZSBvbmx5
IGV4Y2VwdGlvbiB0byB0aGlzIGlzIEVudGVyLlxuICogVGhlIFRhYi1rZXkgaXMgY29uc2lkZXJl
ZCBub24tcHJpbnRhYmxlIGFuZCBkb2VzIG5vdCBoYXZlIGEgYGNoYXJDb2RlYCxcbiAqIHByZXN1
bWFibHkgYmVjYXVzZSBpdCBkb2VzIG5vdCBwcm9kdWNlIGEgdGFiLWNoYXJhY3RlciBpbiBicm93
c2Vycy5cbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gbmF0aXZlRXZlbnQgTmF0aXZlIGJyb3dzZXIg
ZXZlbnQuXG4gKiBAcmV0dXJuIHtudW1iZXJ9IE5vcm1hbGl6ZWQgYGNoYXJDb2RlYCBwcm9wZXJ0
eS5cbiAqL1xuXG5mdW5jdGlvbiBnZXRFdmVudENoYXJDb2RlKG5hdGl2ZUV2ZW50KSB7XG4gIHZh
ciBjaGFyQ29kZTtcbiAgdmFyIGtleUNvZGUgPSBuYXRpdmVFdmVudC5rZXlDb2RlO1xuXG4gIGlm
ICgnY2hhckNvZGUnIGluIG5hdGl2ZUV2ZW50KSB7XG4gICAgY2hhckNvZGUgPSBuYXRpdmVFdmVu
dC5jaGFyQ29kZTtcblxuICAgIC8vIEZGIGRvZXMgbm90IHNldCBgY2hhckNvZGVgIGZvciB0aGUg
RW50ZXIta2V5LCBjaGVjayBhZ2FpbnN0IGBrZXlDb2RlYC5cbiAgICBpZiAoY2hhckNvZGUgPT09
IDAgJiYga2V5Q29kZSA9PT0gMTMpIHtcbiAgICAgIGNoYXJDb2RlID0gMTM7XG4gICAgfVxuICB9
IGVsc2Uge1xuICAgIC8vIElFOCBkb2VzIG5vdCBpbXBsZW1lbnQgYGNoYXJDb2RlYCwgYnV0IGBr
ZXlDb2RlYCBoYXMgdGhlIGNvcnJlY3QgdmFsdWUuXG4gICAgY2hhckNvZGUgPSBrZXlDb2RlO1xu
ICB9XG5cbiAgLy8gU29tZSBub24tcHJpbnRhYmxlIGtleXMgYXJlIHJlcG9ydGVkIGluIGBjaGFy
Q29kZWAvYGtleUNvZGVgLCBkaXNjYXJkIHRoZW0uXG4gIC8vIE11c3Qgbm90IGRpc2NhcmQgdGhl
IChub24tKXByaW50YWJsZSBFbnRlci1rZXkuXG4gIGlmIChjaGFyQ29kZSA+PSAzMiB8fCBjaGFy
Q29kZSA9PT0gMTMpIHtcbiAgICByZXR1cm4gY2hhckNvZGU7XG4gIH1cblxuICByZXR1cm4gMDtc
bn1cblxubW9kdWxlLmV4cG9ydHMgPSBnZXRFdmVudENoYXJDb2RlO1xuXG5cbi8qKioqKioqKioq
KioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0LWRvbS9saWIvZ2V0RXZl
bnRDaGFyQ29kZS5qc1xuICoqIG1vZHVsZSBpZCA9IDQ0XG4gKiogbW9kdWxlIGNodW5rcyA9IDBc
biAqKi8iLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4g
KiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5z
ZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBm
aWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlv
bmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5U
UyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xu
XG4vKipcbiAqIFRyYW5zbGF0aW9uIGZyb20gbW9kaWZpZXIga2V5IHRvIHRoZSBhc3NvY2lhdGVk
IHByb3BlcnR5IGluIHRoZSBldmVudC5cbiAqIEBzZWUgaHR0cDovL3d3dy53My5vcmcvVFIvRE9N
LUxldmVsLTMtRXZlbnRzLyNrZXlzLU1vZGlmaWVyc1xuICovXG5cbnZhciBtb2RpZmllcktleVRv
UHJvcCA9IHtcbiAgQWx0OiAnYWx0S2V5JyxcbiAgQ29udHJvbDogJ2N0cmxLZXknLFxuICBNZXRh
OiAnbWV0YUtleScsXG4gIFNoaWZ0OiAnc2hpZnRLZXknXG59O1xuXG4vLyBJRTggZG9lcyBub3Qg
aW1wbGVtZW50IGdldE1vZGlmaWVyU3RhdGUgc28gd2Ugc2ltcGx5IG1hcCBpdCB0byB0aGUgb25s
eVxuLy8gbW9kaWZpZXIga2V5cyBleHBvc2VkIGJ5IHRoZSBldmVudCBpdHNlbGYsIGRvZXMgbm90
IHN1cHBvcnQgTG9jay1rZXlzLlxuLy8gQ3VycmVudGx5LCBhbGwgbWFqb3IgYnJvd3NlcnMgZXhj
ZXB0IENocm9tZSBzZWVtcyB0byBzdXBwb3J0IExvY2sta2V5cy5cbmZ1bmN0aW9uIG1vZGlmaWVy
U3RhdGVHZXR0ZXIoa2V5QXJnKSB7XG4gIHZhciBzeW50aGV0aWNFdmVudCA9IHRoaXM7XG4gIHZh
ciBuYXRpdmVFdmVudCA9IHN5bnRoZXRpY0V2ZW50Lm5hdGl2ZUV2ZW50O1xuICBpZiAobmF0aXZl
RXZlbnQuZ2V0TW9kaWZpZXJTdGF0ZSkge1xuICAgIHJldHVybiBuYXRpdmVFdmVudC5nZXRNb2Rp
ZmllclN0YXRlKGtleUFyZyk7XG4gIH1cbiAgdmFyIGtleVByb3AgPSBtb2RpZmllcktleVRvUHJv
cFtrZXlBcmddO1xuICByZXR1cm4ga2V5UHJvcCA/ICEhbmF0aXZlRXZlbnRba2V5UHJvcF0gOiBm
YWxzZTtcbn1cblxuZnVuY3Rpb24gZ2V0RXZlbnRNb2RpZmllclN0YXRlKG5hdGl2ZUV2ZW50KSB7
XG4gIHJldHVybiBtb2RpZmllclN0YXRlR2V0dGVyO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGdl
dEV2ZW50TW9kaWZpZXJTdGF0ZTtcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNL
IEZPT1RFUlxuICoqIC4vfi9yZWFjdC1kb20vbGliL2dldEV2ZW50TW9kaWZpZXJTdGF0ZS5qc1xu
ICoqIG1vZHVsZSBpZCA9IDQ1XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAq
IENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJl
c2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJT
RC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290
IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBv
ZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBz
YW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG4vKipcbiAqIEdldHMg
dGhlIHRhcmdldCBub2RlIGZyb20gYSBuYXRpdmUgYnJvd3NlciBldmVudCBieSBhY2NvdW50aW5n
IGZvclxuICogaW5jb25zaXN0ZW5jaWVzIGluIGJyb3dzZXIgRE9NIEFQSXMuXG4gKlxuICogQHBh
cmFtIHtvYmplY3R9IG5hdGl2ZUV2ZW50IE5hdGl2ZSBicm93c2VyIGV2ZW50LlxuICogQHJldHVy
biB7RE9NRXZlbnRUYXJnZXR9IFRhcmdldCBub2RlLlxuICovXG5cbmZ1bmN0aW9uIGdldEV2ZW50
VGFyZ2V0KG5hdGl2ZUV2ZW50KSB7XG4gIHZhciB0YXJnZXQgPSBuYXRpdmVFdmVudC50YXJnZXQg
fHwgbmF0aXZlRXZlbnQuc3JjRWxlbWVudCB8fCB3aW5kb3c7XG5cbiAgLy8gTm9ybWFsaXplIFNW
RyA8dXNlPiBlbGVtZW50IGV2ZW50cyAjNDk2M1xuICBpZiAodGFyZ2V0LmNvcnJlc3BvbmRpbmdV
c2VFbGVtZW50KSB7XG4gICAgdGFyZ2V0ID0gdGFyZ2V0LmNvcnJlc3BvbmRpbmdVc2VFbGVtZW50
O1xuICB9XG5cbiAgLy8gU2FmYXJpIG1heSBmaXJlIGV2ZW50cyBvbiB0ZXh0IG5vZGVzIChOb2Rl
LlRFWFRfTk9ERSBpcyAzKS5cbiAgLy8gQHNlZSBodHRwOi8vd3d3LnF1aXJrc21vZGUub3JnL2pz
L2V2ZW50c19wcm9wZXJ0aWVzLmh0bWxcbiAgcmV0dXJuIHRhcmdldC5ub2RlVHlwZSA9PT0gMyA/
IHRhcmdldC5wYXJlbnROb2RlIDogdGFyZ2V0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGdldEV2
ZW50VGFyZ2V0O1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4g
KiogLi9+L3JlYWN0LWRvbS9saWIvZ2V0RXZlbnRUYXJnZXQuanNcbiAqKiBtb2R1bGUgaWQgPSA0
NlxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1w
cmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBU
aGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBm
b3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhp
cyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBj
YW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4g
KlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIEV4ZWN1dGlvbkVudmlyb25tZW50ID0gcmVx
dWlyZSgnZmJqcy9saWIvRXhlY3V0aW9uRW52aXJvbm1lbnQnKTtcblxudmFyIHVzZUhhc0ZlYXR1
cmU7XG5pZiAoRXhlY3V0aW9uRW52aXJvbm1lbnQuY2FuVXNlRE9NKSB7XG4gIHVzZUhhc0ZlYXR1
cmUgPSBkb2N1bWVudC5pbXBsZW1lbnRhdGlvbiAmJiBkb2N1bWVudC5pbXBsZW1lbnRhdGlvbi5o
YXNGZWF0dXJlICYmXG4gIC8vIGFsd2F5cyByZXR1cm5zIHRydWUgaW4gbmV3ZXIgYnJvd3NlcnMg
YXMgcGVyIHRoZSBzdGFuZGFyZC5cbiAgLy8gQHNlZSBodHRwOi8vZG9tLnNwZWMud2hhdHdnLm9y
Zy8jZG9tLWRvbWltcGxlbWVudGF0aW9uLWhhc2ZlYXR1cmVcbiAgZG9jdW1lbnQuaW1wbGVtZW50
YXRpb24uaGFzRmVhdHVyZSgnJywgJycpICE9PSB0cnVlO1xufVxuXG4vKipcbiAqIENoZWNrcyBp
ZiBhbiBldmVudCBpcyBzdXBwb3J0ZWQgaW4gdGhlIGN1cnJlbnQgZXhlY3V0aW9uIGVudmlyb25t
ZW50LlxuICpcbiAqIE5PVEU6IFRoaXMgd2lsbCBub3Qgd29yayBjb3JyZWN0bHkgZm9yIG5vbi1n
ZW5lcmljIGV2ZW50cyBzdWNoIGFzIGBjaGFuZ2VgLFxuICogYHJlc2V0YCwgYGxvYWRgLCBgZXJy
b3JgLCBhbmQgYHNlbGVjdGAuXG4gKlxuICogQm9ycm93cyBmcm9tIE1vZGVybml6ci5cbiAqXG4g
KiBAcGFyYW0ge3N0cmluZ30gZXZlbnROYW1lU3VmZml4IEV2ZW50IG5hbWUsIGUuZy4gXCJjbGlj
a1wiLlxuICogQHBhcmFtIHs/Ym9vbGVhbn0gY2FwdHVyZSBDaGVjayBpZiB0aGUgY2FwdHVyZSBw
aGFzZSBpcyBzdXBwb3J0ZWQuXG4gKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmIHRoZSBldmVu
dCBpcyBzdXBwb3J0ZWQuXG4gKiBAaW50ZXJuYWxcbiAqIEBsaWNlbnNlIE1vZGVybml6ciAzLjAu
MHByZSAoQ3VzdG9tIEJ1aWxkKSB8IE1JVFxuICovXG5mdW5jdGlvbiBpc0V2ZW50U3VwcG9ydGVk
KGV2ZW50TmFtZVN1ZmZpeCwgY2FwdHVyZSkge1xuICBpZiAoIUV4ZWN1dGlvbkVudmlyb25tZW50
LmNhblVzZURPTSB8fCBjYXB0dXJlICYmICEoJ2FkZEV2ZW50TGlzdGVuZXInIGluIGRvY3VtZW50
KSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHZhciBldmVudE5hbWUgPSAnb24nICsg
ZXZlbnROYW1lU3VmZml4O1xuICB2YXIgaXNTdXBwb3J0ZWQgPSBldmVudE5hbWUgaW4gZG9jdW1l
bnQ7XG5cbiAgaWYgKCFpc1N1cHBvcnRlZCkge1xuICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoZXZlbnROYW1l
LCAncmV0dXJuOycpO1xuICAgIGlzU3VwcG9ydGVkID0gdHlwZW9mIGVsZW1lbnRbZXZlbnROYW1l
XSA9PT0gJ2Z1bmN0aW9uJztcbiAgfVxuXG4gIGlmICghaXNTdXBwb3J0ZWQgJiYgdXNlSGFzRmVh
dHVyZSAmJiBldmVudE5hbWVTdWZmaXggPT09ICd3aGVlbCcpIHtcbiAgICAvLyBUaGlzIGlzIHRo
ZSBvbmx5IHdheSB0byB0ZXN0IHN1cHBvcnQgZm9yIHRoZSBgd2hlZWxgIGV2ZW50IGluIElFOSsu
XG4gICAgaXNTdXBwb3J0ZWQgPSBkb2N1bWVudC5pbXBsZW1lbnRhdGlvbi5oYXNGZWF0dXJlKCdF
dmVudHMud2hlZWwnLCAnMy4wJyk7XG4gIH1cblxuICByZXR1cm4gaXNTdXBwb3J0ZWQ7XG59XG5c
bm1vZHVsZS5leHBvcnRzID0gaXNFdmVudFN1cHBvcnRlZDtcblxuXG4vKioqKioqKioqKioqKioq
KipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFjdC1kb20vbGliL2lzRXZlbnRTdXBw
b3J0ZWQuanNcbiAqKiBtb2R1bGUgaWQgPSA0N1xuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiov
IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxs
IHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVu
ZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBp
biB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBn
cmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmls
ZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxuLyoq
XG4gKiBHaXZlbiBhIGBwcmV2RWxlbWVudGAgYW5kIGBuZXh0RWxlbWVudGAsIGRldGVybWluZXMg
aWYgdGhlIGV4aXN0aW5nXG4gKiBpbnN0YW5jZSBzaG91bGQgYmUgdXBkYXRlZCBhcyBvcHBvc2Vk
IHRvIGJlaW5nIGRlc3Ryb3llZCBvciByZXBsYWNlZCBieSBhIG5ld1xuICogaW5zdGFuY2UuIEJv
dGggYXJndW1lbnRzIGFyZSBlbGVtZW50cy4gVGhpcyBlbnN1cmVzIHRoYXQgdGhpcyBsb2dpYyBj
YW5cbiAqIG9wZXJhdGUgb24gc3RhdGVsZXNzIHRyZWVzIHdpdGhvdXQgYW55IGJhY2tpbmcgaW5z
dGFuY2UuXG4gKlxuICogQHBhcmFtIHs/b2JqZWN0fSBwcmV2RWxlbWVudFxuICogQHBhcmFtIHs/
b2JqZWN0fSBuZXh0RWxlbWVudFxuICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBpZiB0aGUgZXhp
c3RpbmcgaW5zdGFuY2Ugc2hvdWxkIGJlIHVwZGF0ZWQuXG4gKiBAcHJvdGVjdGVkXG4gKi9cblxu
ZnVuY3Rpb24gc2hvdWxkVXBkYXRlUmVhY3RDb21wb25lbnQocHJldkVsZW1lbnQsIG5leHRFbGVt
ZW50KSB7XG4gIHZhciBwcmV2RW1wdHkgPSBwcmV2RWxlbWVudCA9PT0gbnVsbCB8fCBwcmV2RWxl
bWVudCA9PT0gZmFsc2U7XG4gIHZhciBuZXh0RW1wdHkgPSBuZXh0RWxlbWVudCA9PT0gbnVsbCB8
fCBuZXh0RWxlbWVudCA9PT0gZmFsc2U7XG4gIGlmIChwcmV2RW1wdHkgfHwgbmV4dEVtcHR5KSB7
XG4gICAgcmV0dXJuIHByZXZFbXB0eSA9PT0gbmV4dEVtcHR5O1xuICB9XG5cbiAgdmFyIHByZXZU
eXBlID0gdHlwZW9mIHByZXZFbGVtZW50O1xuICB2YXIgbmV4dFR5cGUgPSB0eXBlb2YgbmV4dEVs
ZW1lbnQ7XG4gIGlmIChwcmV2VHlwZSA9PT0gJ3N0cmluZycgfHwgcHJldlR5cGUgPT09ICdudW1i
ZXInKSB7XG4gICAgcmV0dXJuIG5leHRUeXBlID09PSAnc3RyaW5nJyB8fCBuZXh0VHlwZSA9PT0g
J251bWJlcic7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG5leHRUeXBlID09PSAnb2JqZWN0JyAm
JiBwcmV2RWxlbWVudC50eXBlID09PSBuZXh0RWxlbWVudC50eXBlICYmIHByZXZFbGVtZW50Lmtl
eSA9PT0gbmV4dEVsZW1lbnQua2V5O1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc2hvdWxk
VXBkYXRlUmVhY3RDb21wb25lbnQ7XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFD
SyBGT09URVJcbiAqKiAuL34vcmVhY3QtZG9tL2xpYi9zaG91bGRVcGRhdGVSZWFjdENvbXBvbmVu
dC5qc1xuICoqIG1vZHVsZSBpZCA9IDQ4XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIv
KipcbiAqIENvcHlyaWdodCAyMDE1LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmln
aHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIg
dGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRo
ZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50
XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGlu
IHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgX2Fz
c2lnbiA9IHJlcXVpcmUoJ29iamVjdC1hc3NpZ24nKTtcblxudmFyIGVtcHR5RnVuY3Rpb24gPSBy
ZXF1aXJlKCdmYmpzL2xpYi9lbXB0eUZ1bmN0aW9uJyk7XG52YXIgd2FybmluZyA9IHJlcXVpcmUo
J2ZianMvbGliL3dhcm5pbmcnKTtcblxudmFyIHZhbGlkYXRlRE9NTmVzdGluZyA9IGVtcHR5RnVu
Y3Rpb247XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4g
IC8vIFRoaXMgdmFsaWRhdGlvbiBjb2RlIHdhcyB3cml0dGVuIGJhc2VkIG9uIHRoZSBIVE1MNSBw
YXJzaW5nIHNwZWM6XG4gIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdl
L3N5bnRheC5odG1sI2hhcy1hbi1lbGVtZW50LWluLXNjb3BlXG4gIC8vXG4gIC8vIE5vdGU6IHRo
aXMgZG9lcyBub3QgY2F0Y2ggYWxsIGludmFsaWQgbmVzdGluZywgbm9yIGRvZXMgaXQgdHJ5IHRv
IChhcyBpdCdzXG4gIC8vIG5vdCBjbGVhciB3aGF0IHByYWN0aWNhbCBiZW5lZml0IGRvaW5nIHNv
IHByb3ZpZGVzKTsgaW5zdGVhZCwgd2Ugd2FybiBvbmx5XG4gIC8vIGZvciBjYXNlcyB3aGVyZSB0
aGUgcGFyc2VyIHdpbGwgZ2l2ZSBhIHBhcnNlIHRyZWUgZGlmZmVyaW5nIGZyb20gd2hhdCBSZWFj
dFxuICAvLyBpbnRlbmRlZC4gRm9yIGV4YW1wbGUsIDxiPjxkaXY+PC9kaXY+PC9iPiBpcyBpbnZh
bGlkIGJ1dCB3ZSBkb24ndCB3YXJuXG4gIC8vIGJlY2F1c2UgaXQgc3RpbGwgcGFyc2VzIGNvcnJl
Y3RseTsgd2UgZG8gd2FybiBmb3Igb3RoZXIgY2FzZXMgbGlrZSBuZXN0ZWRcbiAgLy8gPHA+IHRh
Z3Mgd2hlcmUgdGhlIGJlZ2lubmluZyBvZiB0aGUgc2Vjb25kIGVsZW1lbnQgaW1wbGljaXRseSBj
bG9zZXMgdGhlXG4gIC8vIGZpcnN0LCBjYXVzaW5nIGEgY29uZnVzaW5nIG1lc3MuXG5cbiAgLy8g
aHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvc3ludGF4Lmh0bWwjc3BlY2lh
bFxuICB2YXIgc3BlY2lhbFRhZ3MgPSBbJ2FkZHJlc3MnLCAnYXBwbGV0JywgJ2FyZWEnLCAnYXJ0
aWNsZScsICdhc2lkZScsICdiYXNlJywgJ2Jhc2Vmb250JywgJ2Jnc291bmQnLCAnYmxvY2txdW90
ZScsICdib2R5JywgJ2JyJywgJ2J1dHRvbicsICdjYXB0aW9uJywgJ2NlbnRlcicsICdjb2wnLCAn
Y29sZ3JvdXAnLCAnZGQnLCAnZGV0YWlscycsICdkaXInLCAnZGl2JywgJ2RsJywgJ2R0JywgJ2Vt
YmVkJywgJ2ZpZWxkc2V0JywgJ2ZpZ2NhcHRpb24nLCAnZmlndXJlJywgJ2Zvb3RlcicsICdmb3Jt
JywgJ2ZyYW1lJywgJ2ZyYW1lc2V0JywgJ2gxJywgJ2gyJywgJ2gzJywgJ2g0JywgJ2g1JywgJ2g2
JywgJ2hlYWQnLCAnaGVhZGVyJywgJ2hncm91cCcsICdocicsICdodG1sJywgJ2lmcmFtZScsICdp
bWcnLCAnaW5wdXQnLCAnaXNpbmRleCcsICdsaScsICdsaW5rJywgJ2xpc3RpbmcnLCAnbWFpbics
ICdtYXJxdWVlJywgJ21lbnUnLCAnbWVudWl0ZW0nLCAnbWV0YScsICduYXYnLCAnbm9lbWJlZCcs
ICdub2ZyYW1lcycsICdub3NjcmlwdCcsICdvYmplY3QnLCAnb2wnLCAncCcsICdwYXJhbScsICdw
bGFpbnRleHQnLCAncHJlJywgJ3NjcmlwdCcsICdzZWN0aW9uJywgJ3NlbGVjdCcsICdzb3VyY2Un
LCAnc3R5bGUnLCAnc3VtbWFyeScsICd0YWJsZScsICd0Ym9keScsICd0ZCcsICd0ZW1wbGF0ZScs
ICd0ZXh0YXJlYScsICd0Zm9vdCcsICd0aCcsICd0aGVhZCcsICd0aXRsZScsICd0cicsICd0cmFj
aycsICd1bCcsICd3YnInLCAneG1wJ107XG5cbiAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdn
Lm9yZy9tdWx0aXBhZ2Uvc3ludGF4Lmh0bWwjaGFzLWFuLWVsZW1lbnQtaW4tc2NvcGVcbiAgdmFy
IGluU2NvcGVUYWdzID0gWydhcHBsZXQnLCAnY2FwdGlvbicsICdodG1sJywgJ3RhYmxlJywgJ3Rk
JywgJ3RoJywgJ21hcnF1ZWUnLCAnb2JqZWN0JywgJ3RlbXBsYXRlJyxcblxuICAvLyBodHRwczov
L2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9zeW50YXguaHRtbCNodG1sLWludGVncmF0
aW9uLXBvaW50XG4gIC8vIFRPRE86IERpc3Rpbmd1aXNoIGJ5IG5hbWVzcGFjZSBoZXJlIC0tIGZv
ciA8dGl0bGU+LCBpbmNsdWRpbmcgaXQgaGVyZVxuICAvLyBlcnJzIG9uIHRoZSBzaWRlIG9mIGZl
d2VyIHdhcm5pbmdzXG4gICdmb3JlaWduT2JqZWN0JywgJ2Rlc2MnLCAndGl0bGUnXTtcblxuICAv
LyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9zeW50YXguaHRtbCNoYXMt
YW4tZWxlbWVudC1pbi1idXR0b24tc2NvcGVcbiAgdmFyIGJ1dHRvblNjb3BlVGFncyA9IGluU2Nv
cGVUYWdzLmNvbmNhdChbJ2J1dHRvbiddKTtcblxuICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0
d2cub3JnL211bHRpcGFnZS9zeW50YXguaHRtbCNnZW5lcmF0ZS1pbXBsaWVkLWVuZC10YWdzXG4g
IHZhciBpbXBsaWVkRW5kVGFncyA9IFsnZGQnLCAnZHQnLCAnbGknLCAnb3B0aW9uJywgJ29wdGdy
b3VwJywgJ3AnLCAncnAnLCAncnQnXTtcblxuICB2YXIgZW1wdHlBbmNlc3RvckluZm8gPSB7XG4g
ICAgY3VycmVudDogbnVsbCxcblxuICAgIGZvcm1UYWc6IG51bGwsXG4gICAgYVRhZ0luU2NvcGU6
IG51bGwsXG4gICAgYnV0dG9uVGFnSW5TY29wZTogbnVsbCxcbiAgICBub2JyVGFnSW5TY29wZTog
bnVsbCxcbiAgICBwVGFnSW5CdXR0b25TY29wZTogbnVsbCxcblxuICAgIGxpc3RJdGVtVGFnQXV0
b2Nsb3Npbmc6IG51bGwsXG4gICAgZGxJdGVtVGFnQXV0b2Nsb3Npbmc6IG51bGxcbiAgfTtcblxu
ICB2YXIgdXBkYXRlZEFuY2VzdG9ySW5mbyA9IGZ1bmN0aW9uIChvbGRJbmZvLCB0YWcsIGluc3Rh
bmNlKSB7XG4gICAgdmFyIGFuY2VzdG9ySW5mbyA9IF9hc3NpZ24oe30sIG9sZEluZm8gfHwgZW1w
dHlBbmNlc3RvckluZm8pO1xuICAgIHZhciBpbmZvID0geyB0YWc6IHRhZywgaW5zdGFuY2U6IGlu
c3RhbmNlIH07XG5cbiAgICBpZiAoaW5TY29wZVRhZ3MuaW5kZXhPZih0YWcpICE9PSAtMSkge1xu
ICAgICAgYW5jZXN0b3JJbmZvLmFUYWdJblNjb3BlID0gbnVsbDtcbiAgICAgIGFuY2VzdG9ySW5m
by5idXR0b25UYWdJblNjb3BlID0gbnVsbDtcbiAgICAgIGFuY2VzdG9ySW5mby5ub2JyVGFnSW5T
Y29wZSA9IG51bGw7XG4gICAgfVxuICAgIGlmIChidXR0b25TY29wZVRhZ3MuaW5kZXhPZih0YWcp
ICE9PSAtMSkge1xuICAgICAgYW5jZXN0b3JJbmZvLnBUYWdJbkJ1dHRvblNjb3BlID0gbnVsbDtc
biAgICB9XG5cbiAgICAvLyBTZWUgcnVsZXMgZm9yICdsaScsICdkZCcsICdkdCcgc3RhcnQgdGFn
cyBpblxuICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3N5bnRh
eC5odG1sI3BhcnNpbmctbWFpbi1pbmJvZHlcbiAgICBpZiAoc3BlY2lhbFRhZ3MuaW5kZXhPZih0
YWcpICE9PSAtMSAmJiB0YWcgIT09ICdhZGRyZXNzJyAmJiB0YWcgIT09ICdkaXYnICYmIHRhZyAh
PT0gJ3AnKSB7XG4gICAgICBhbmNlc3RvckluZm8ubGlzdEl0ZW1UYWdBdXRvY2xvc2luZyA9IG51
bGw7XG4gICAgICBhbmNlc3RvckluZm8uZGxJdGVtVGFnQXV0b2Nsb3NpbmcgPSBudWxsO1xuICAg
IH1cblxuICAgIGFuY2VzdG9ySW5mby5jdXJyZW50ID0gaW5mbztcblxuICAgIGlmICh0YWcgPT09
ICdmb3JtJykge1xuICAgICAgYW5jZXN0b3JJbmZvLmZvcm1UYWcgPSBpbmZvO1xuICAgIH1cbiAg
ICBpZiAodGFnID09PSAnYScpIHtcbiAgICAgIGFuY2VzdG9ySW5mby5hVGFnSW5TY29wZSA9IGlu
Zm87XG4gICAgfVxuICAgIGlmICh0YWcgPT09ICdidXR0b24nKSB7XG4gICAgICBhbmNlc3Rvcklu
Zm8uYnV0dG9uVGFnSW5TY29wZSA9IGluZm87XG4gICAgfVxuICAgIGlmICh0YWcgPT09ICdub2Jy
Jykge1xuICAgICAgYW5jZXN0b3JJbmZvLm5vYnJUYWdJblNjb3BlID0gaW5mbztcbiAgICB9XG4g
ICAgaWYgKHRhZyA9PT0gJ3AnKSB7XG4gICAgICBhbmNlc3RvckluZm8ucFRhZ0luQnV0dG9uU2Nv
cGUgPSBpbmZvO1xuICAgIH1cbiAgICBpZiAodGFnID09PSAnbGknKSB7XG4gICAgICBhbmNlc3Rv
ckluZm8ubGlzdEl0ZW1UYWdBdXRvY2xvc2luZyA9IGluZm87XG4gICAgfVxuICAgIGlmICh0YWcg
PT09ICdkZCcgfHwgdGFnID09PSAnZHQnKSB7XG4gICAgICBhbmNlc3RvckluZm8uZGxJdGVtVGFn
QXV0b2Nsb3NpbmcgPSBpbmZvO1xuICAgIH1cblxuICAgIHJldHVybiBhbmNlc3RvckluZm87XG4g
IH07XG5cbiAgLyoqXG4gICAqIFJldHVybnMgd2hldGhlclxuICAgKi9cbiAgdmFyIGlzVGFnVmFs
aWRXaXRoUGFyZW50ID0gZnVuY3Rpb24gKHRhZywgcGFyZW50VGFnKSB7XG4gICAgLy8gRmlyc3Qs
IGxldCdzIGNoZWNrIGlmIHdlJ3JlIGluIGFuIHVudXN1YWwgcGFyc2luZyBtb2RlLi4uXG4gICAg
c3dpdGNoIChwYXJlbnRUYWcpIHtcbiAgICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5v
cmcvbXVsdGlwYWdlL3N5bnRheC5odG1sI3BhcnNpbmctbWFpbi1pbnNlbGVjdFxuICAgICAgY2Fz
ZSAnc2VsZWN0JzpcbiAgICAgICAgcmV0dXJuIHRhZyA9PT0gJ29wdGlvbicgfHwgdGFnID09PSAn
b3B0Z3JvdXAnIHx8IHRhZyA9PT0gJyN0ZXh0JztcbiAgICAgIGNhc2UgJ29wdGdyb3VwJzpcbiAg
ICAgICAgcmV0dXJuIHRhZyA9PT0gJ29wdGlvbicgfHwgdGFnID09PSAnI3RleHQnO1xuICAgICAg
Ly8gU3RyaWN0bHkgc3BlYWtpbmcsIHNlZWluZyBhbiA8b3B0aW9uPiBkb2Vzbid0IG1lYW4gd2Un
cmUgaW4gYSA8c2VsZWN0PlxuICAgICAgLy8gYnV0XG4gICAgICBjYXNlICdvcHRpb24nOlxuICAg
ICAgICByZXR1cm4gdGFnID09PSAnI3RleHQnO1xuICAgICAgLy8gaHR0cHM6Ly9odG1sLnNwZWMu
d2hhdHdnLm9yZy9tdWx0aXBhZ2Uvc3ludGF4Lmh0bWwjcGFyc2luZy1tYWluLWludGRcbiAgICAg
IC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3N5bnRheC5odG1sI3Bh
cnNpbmctbWFpbi1pbmNhcHRpb25cbiAgICAgIC8vIE5vIHNwZWNpYWwgYmVoYXZpb3Igc2luY2Ug
dGhlc2UgcnVsZXMgZmFsbCBiYWNrIHRvIFwiaW4gYm9keVwiIG1vZGUgZm9yXG4gICAgICAvLyBh
bGwgZXhjZXB0IHNwZWNpYWwgdGFibGUgbm9kZXMgd2hpY2ggY2F1c2UgYmFkIHBhcnNpbmcgYmVo
YXZpb3IgYW55d2F5LlxuXG4gICAgICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211
bHRpcGFnZS9zeW50YXguaHRtbCNwYXJzaW5nLW1haW4taW50clxuICAgICAgY2FzZSAndHInOlxu
ICAgICAgICByZXR1cm4gdGFnID09PSAndGgnIHx8IHRhZyA9PT0gJ3RkJyB8fCB0YWcgPT09ICdz
dHlsZScgfHwgdGFnID09PSAnc2NyaXB0JyB8fCB0YWcgPT09ICd0ZW1wbGF0ZSc7XG4gICAgICAv
LyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9zeW50YXguaHRtbCNwYXJz
aW5nLW1haW4taW50Ym9keVxuICAgICAgY2FzZSAndGJvZHknOlxuICAgICAgY2FzZSAndGhlYWQn
OlxuICAgICAgY2FzZSAndGZvb3QnOlxuICAgICAgICByZXR1cm4gdGFnID09PSAndHInIHx8IHRh
ZyA9PT0gJ3N0eWxlJyB8fCB0YWcgPT09ICdzY3JpcHQnIHx8IHRhZyA9PT0gJ3RlbXBsYXRlJztc
biAgICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3N5bnRheC5o
dG1sI3BhcnNpbmctbWFpbi1pbmNvbGdyb3VwXG4gICAgICBjYXNlICdjb2xncm91cCc6XG4gICAg
ICAgIHJldHVybiB0YWcgPT09ICdjb2wnIHx8IHRhZyA9PT0gJ3RlbXBsYXRlJztcbiAgICAgIC8v
IGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3N5bnRheC5odG1sI3BhcnNp
bmctbWFpbi1pbnRhYmxlXG4gICAgICBjYXNlICd0YWJsZSc6XG4gICAgICAgIHJldHVybiB0YWcg
PT09ICdjYXB0aW9uJyB8fCB0YWcgPT09ICdjb2xncm91cCcgfHwgdGFnID09PSAndGJvZHknIHx8
IHRhZyA9PT0gJ3Rmb290JyB8fCB0YWcgPT09ICd0aGVhZCcgfHwgdGFnID09PSAnc3R5bGUnIHx8
IHRhZyA9PT0gJ3NjcmlwdCcgfHwgdGFnID09PSAndGVtcGxhdGUnO1xuICAgICAgLy8gaHR0cHM6
Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvc3ludGF4Lmh0bWwjcGFyc2luZy1tYWlu
LWluaGVhZFxuICAgICAgY2FzZSAnaGVhZCc6XG4gICAgICAgIHJldHVybiB0YWcgPT09ICdiYXNl
JyB8fCB0YWcgPT09ICdiYXNlZm9udCcgfHwgdGFnID09PSAnYmdzb3VuZCcgfHwgdGFnID09PSAn
bGluaycgfHwgdGFnID09PSAnbWV0YScgfHwgdGFnID09PSAndGl0bGUnIHx8IHRhZyA9PT0gJ25v
c2NyaXB0JyB8fCB0YWcgPT09ICdub2ZyYW1lcycgfHwgdGFnID09PSAnc3R5bGUnIHx8IHRhZyA9
PT0gJ3NjcmlwdCcgfHwgdGFnID09PSAndGVtcGxhdGUnO1xuICAgICAgLy8gaHR0cHM6Ly9odG1s
LnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvc2VtYW50aWNzLmh0bWwjdGhlLWh0bWwtZWxlbWVu
dFxuICAgICAgY2FzZSAnaHRtbCc6XG4gICAgICAgIHJldHVybiB0YWcgPT09ICdoZWFkJyB8fCB0
YWcgPT09ICdib2R5JztcbiAgICAgIGNhc2UgJyNkb2N1bWVudCc6XG4gICAgICAgIHJldHVybiB0
YWcgPT09ICdodG1sJztcbiAgICB9XG5cbiAgICAvLyBQcm9iYWJseSBpbiB0aGUgXCJpbiBib2R5
XCIgcGFyc2luZyBtb2RlLCBzbyB3ZSBvdXRsYXcgb25seSB0YWcgY29tYm9zXG4gICAgLy8gd2hl
cmUgdGhlIHBhcnNpbmcgcnVsZXMgY2F1c2UgaW1wbGljaXQgb3BlbnMgb3IgY2xvc2VzIHRvIGJl
IGFkZGVkLlxuICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3N5
bnRheC5odG1sI3BhcnNpbmctbWFpbi1pbmJvZHlcbiAgICBzd2l0Y2ggKHRhZykge1xuICAgICAg
Y2FzZSAnaDEnOlxuICAgICAgY2FzZSAnaDInOlxuICAgICAgY2FzZSAnaDMnOlxuICAgICAgY2Fz
ZSAnaDQnOlxuICAgICAgY2FzZSAnaDUnOlxuICAgICAgY2FzZSAnaDYnOlxuICAgICAgICByZXR1
cm4gcGFyZW50VGFnICE9PSAnaDEnICYmIHBhcmVudFRhZyAhPT0gJ2gyJyAmJiBwYXJlbnRUYWcg
IT09ICdoMycgJiYgcGFyZW50VGFnICE9PSAnaDQnICYmIHBhcmVudFRhZyAhPT0gJ2g1JyAmJiBw
YXJlbnRUYWcgIT09ICdoNic7XG5cbiAgICAgIGNhc2UgJ3JwJzpcbiAgICAgIGNhc2UgJ3J0Jzpc
biAgICAgICAgcmV0dXJuIGltcGxpZWRFbmRUYWdzLmluZGV4T2YocGFyZW50VGFnKSA9PT0gLTE7
XG5cbiAgICAgIGNhc2UgJ2JvZHknOlxuICAgICAgY2FzZSAnY2FwdGlvbic6XG4gICAgICBjYXNl
ICdjb2wnOlxuICAgICAgY2FzZSAnY29sZ3JvdXAnOlxuICAgICAgY2FzZSAnZnJhbWUnOlxuICAg
ICAgY2FzZSAnaGVhZCc6XG4gICAgICBjYXNlICdodG1sJzpcbiAgICAgIGNhc2UgJ3Rib2R5Jzpc
biAgICAgIGNhc2UgJ3RkJzpcbiAgICAgIGNhc2UgJ3Rmb290JzpcbiAgICAgIGNhc2UgJ3RoJzpc
biAgICAgIGNhc2UgJ3RoZWFkJzpcbiAgICAgIGNhc2UgJ3RyJzpcbiAgICAgICAgLy8gVGhlc2Ug
dGFncyBhcmUgb25seSB2YWxpZCB3aXRoIGEgZmV3IHBhcmVudHMgdGhhdCBoYXZlIHNwZWNpYWwg
Y2hpbGRcbiAgICAgICAgLy8gcGFyc2luZyBydWxlcyAtLSBpZiB3ZSdyZSBkb3duIGhlcmUsIHRo
ZW4gbm9uZSBvZiB0aG9zZSBtYXRjaGVkIGFuZFxuICAgICAgICAvLyBzbyB3ZSBhbGxvdyBpdCBv
bmx5IGlmIHdlIGRvbid0IGtub3cgd2hhdCB0aGUgcGFyZW50IGlzLCBhcyBhbGwgb3RoZXJcbiAg
ICAgICAgLy8gY2FzZXMgYXJlIGludmFsaWQuXG4gICAgICAgIHJldHVybiBwYXJlbnRUYWcgPT0g
bnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfTtcblxuICAvKipcbiAgICogUmV0
dXJucyB3aGV0aGVyXG4gICAqL1xuICB2YXIgZmluZEludmFsaWRBbmNlc3RvckZvclRhZyA9IGZ1
bmN0aW9uICh0YWcsIGFuY2VzdG9ySW5mbykge1xuICAgIHN3aXRjaCAodGFnKSB7XG4gICAgICBj
YXNlICdhZGRyZXNzJzpcbiAgICAgIGNhc2UgJ2FydGljbGUnOlxuICAgICAgY2FzZSAnYXNpZGUn
OlxuICAgICAgY2FzZSAnYmxvY2txdW90ZSc6XG4gICAgICBjYXNlICdjZW50ZXInOlxuICAgICAg
Y2FzZSAnZGV0YWlscyc6XG4gICAgICBjYXNlICdkaWFsb2cnOlxuICAgICAgY2FzZSAnZGlyJzpc
biAgICAgIGNhc2UgJ2Rpdic6XG4gICAgICBjYXNlICdkbCc6XG4gICAgICBjYXNlICdmaWVsZHNl
dCc6XG4gICAgICBjYXNlICdmaWdjYXB0aW9uJzpcbiAgICAgIGNhc2UgJ2ZpZ3VyZSc6XG4gICAg
ICBjYXNlICdmb290ZXInOlxuICAgICAgY2FzZSAnaGVhZGVyJzpcbiAgICAgIGNhc2UgJ2hncm91
cCc6XG4gICAgICBjYXNlICdtYWluJzpcbiAgICAgIGNhc2UgJ21lbnUnOlxuICAgICAgY2FzZSAn
bmF2JzpcbiAgICAgIGNhc2UgJ29sJzpcbiAgICAgIGNhc2UgJ3AnOlxuICAgICAgY2FzZSAnc2Vj
dGlvbic6XG4gICAgICBjYXNlICdzdW1tYXJ5JzpcbiAgICAgIGNhc2UgJ3VsJzpcbiAgICAgIGNh
c2UgJ3ByZSc6XG4gICAgICBjYXNlICdsaXN0aW5nJzpcbiAgICAgIGNhc2UgJ3RhYmxlJzpcbiAg
ICAgIGNhc2UgJ2hyJzpcbiAgICAgIGNhc2UgJ3htcCc6XG4gICAgICBjYXNlICdoMSc6XG4gICAg
ICBjYXNlICdoMic6XG4gICAgICBjYXNlICdoMyc6XG4gICAgICBjYXNlICdoNCc6XG4gICAgICBj
YXNlICdoNSc6XG4gICAgICBjYXNlICdoNic6XG4gICAgICAgIHJldHVybiBhbmNlc3RvckluZm8u
cFRhZ0luQnV0dG9uU2NvcGU7XG5cbiAgICAgIGNhc2UgJ2Zvcm0nOlxuICAgICAgICByZXR1cm4g
YW5jZXN0b3JJbmZvLmZvcm1UYWcgfHwgYW5jZXN0b3JJbmZvLnBUYWdJbkJ1dHRvblNjb3BlO1xu
XG4gICAgICBjYXNlICdsaSc6XG4gICAgICAgIHJldHVybiBhbmNlc3RvckluZm8ubGlzdEl0ZW1U
YWdBdXRvY2xvc2luZztcblxuICAgICAgY2FzZSAnZGQnOlxuICAgICAgY2FzZSAnZHQnOlxuICAg
ICAgICByZXR1cm4gYW5jZXN0b3JJbmZvLmRsSXRlbVRhZ0F1dG9jbG9zaW5nO1xuXG4gICAgICBj
YXNlICdidXR0b24nOlxuICAgICAgICByZXR1cm4gYW5jZXN0b3JJbmZvLmJ1dHRvblRhZ0luU2Nv
cGU7XG5cbiAgICAgIGNhc2UgJ2EnOlxuICAgICAgICAvLyBTcGVjIHNheXMgc29tZXRoaW5nIGFi
b3V0IHN0b3JpbmcgYSBsaXN0IG9mIG1hcmtlcnMsIGJ1dCBpdCBzb3VuZHNcbiAgICAgICAgLy8g
ZXF1aXZhbGVudCB0byB0aGlzIGNoZWNrLlxuICAgICAgICByZXR1cm4gYW5jZXN0b3JJbmZvLmFU
YWdJblNjb3BlO1xuXG4gICAgICBjYXNlICdub2JyJzpcbiAgICAgICAgcmV0dXJuIGFuY2VzdG9y
SW5mby5ub2JyVGFnSW5TY29wZTtcbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfTtcblxu
ICAvKipcbiAgICogR2l2ZW4gYSBSZWFjdENvbXBvc2l0ZUNvbXBvbmVudCBpbnN0YW5jZSwgcmV0
dXJuIGEgbGlzdCBvZiBpdHMgcmVjdXJzaXZlXG4gICAqIG93bmVycywgc3RhcnRpbmcgYXQgdGhl
IHJvb3QgYW5kIGVuZGluZyB3aXRoIHRoZSBpbnN0YW5jZSBpdHNlbGYuXG4gICAqL1xuICB2YXIg
ZmluZE93bmVyU3RhY2sgPSBmdW5jdGlvbiAoaW5zdGFuY2UpIHtcbiAgICBpZiAoIWluc3RhbmNl
KSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgdmFyIHN0YWNrID0gW107XG4gICAg
ZG8ge1xuICAgICAgc3RhY2sucHVzaChpbnN0YW5jZSk7XG4gICAgfSB3aGlsZSAoaW5zdGFuY2Ug
PSBpbnN0YW5jZS5fY3VycmVudEVsZW1lbnQuX293bmVyKTtcbiAgICBzdGFjay5yZXZlcnNlKCk7
XG4gICAgcmV0dXJuIHN0YWNrO1xuICB9O1xuXG4gIHZhciBkaWRXYXJuID0ge307XG5cbiAgdmFs
aWRhdGVET01OZXN0aW5nID0gZnVuY3Rpb24gKGNoaWxkVGFnLCBjaGlsZFRleHQsIGNoaWxkSW5z
dGFuY2UsIGFuY2VzdG9ySW5mbykge1xuICAgIGFuY2VzdG9ySW5mbyA9IGFuY2VzdG9ySW5mbyB8
fCBlbXB0eUFuY2VzdG9ySW5mbztcbiAgICB2YXIgcGFyZW50SW5mbyA9IGFuY2VzdG9ySW5mby5j
dXJyZW50O1xuICAgIHZhciBwYXJlbnRUYWcgPSBwYXJlbnRJbmZvICYmIHBhcmVudEluZm8udGFn
O1xuXG4gICAgaWYgKGNoaWxkVGV4dCAhPSBudWxsKSB7XG4gICAgICBwcm9jZXNzLmVudi5OT0RF
X0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhjaGlsZFRhZyA9PSBudWxsLCAndmFsaWRh
dGVET01OZXN0aW5nOiB3aGVuIGNoaWxkVGV4dCBpcyBwYXNzZWQsIGNoaWxkVGFnIHNob3VsZCBi
ZSBudWxsJykgOiB2b2lkIDA7XG4gICAgICBjaGlsZFRhZyA9ICcjdGV4dCc7XG4gICAgfVxuXG4g
ICAgdmFyIGludmFsaWRQYXJlbnQgPSBpc1RhZ1ZhbGlkV2l0aFBhcmVudChjaGlsZFRhZywgcGFy
ZW50VGFnKSA/IG51bGwgOiBwYXJlbnRJbmZvO1xuICAgIHZhciBpbnZhbGlkQW5jZXN0b3IgPSBp
bnZhbGlkUGFyZW50ID8gbnVsbCA6IGZpbmRJbnZhbGlkQW5jZXN0b3JGb3JUYWcoY2hpbGRUYWcs
IGFuY2VzdG9ySW5mbyk7XG4gICAgdmFyIHByb2JsZW1hdGljID0gaW52YWxpZFBhcmVudCB8fCBp
bnZhbGlkQW5jZXN0b3I7XG5cbiAgICBpZiAocHJvYmxlbWF0aWMpIHtcbiAgICAgIHZhciBhbmNl
c3RvclRhZyA9IHByb2JsZW1hdGljLnRhZztcbiAgICAgIHZhciBhbmNlc3Rvckluc3RhbmNlID0g
cHJvYmxlbWF0aWMuaW5zdGFuY2U7XG5cbiAgICAgIHZhciBjaGlsZE93bmVyID0gY2hpbGRJbnN0
YW5jZSAmJiBjaGlsZEluc3RhbmNlLl9jdXJyZW50RWxlbWVudC5fb3duZXI7XG4gICAgICB2YXIg
YW5jZXN0b3JPd25lciA9IGFuY2VzdG9ySW5zdGFuY2UgJiYgYW5jZXN0b3JJbnN0YW5jZS5fY3Vy
cmVudEVsZW1lbnQuX293bmVyO1xuXG4gICAgICB2YXIgY2hpbGRPd25lcnMgPSBmaW5kT3duZXJT
dGFjayhjaGlsZE93bmVyKTtcbiAgICAgIHZhciBhbmNlc3Rvck93bmVycyA9IGZpbmRPd25lclN0
YWNrKGFuY2VzdG9yT3duZXIpO1xuXG4gICAgICB2YXIgbWluU3RhY2tMZW4gPSBNYXRoLm1pbihj
aGlsZE93bmVycy5sZW5ndGgsIGFuY2VzdG9yT3duZXJzLmxlbmd0aCk7XG4gICAgICB2YXIgaTtc
blxuICAgICAgdmFyIGRlZXBlc3RDb21tb24gPSAtMTtcbiAgICAgIGZvciAoaSA9IDA7IGkgPCBt
aW5TdGFja0xlbjsgaSsrKSB7XG4gICAgICAgIGlmIChjaGlsZE93bmVyc1tpXSA9PT0gYW5jZXN0
b3JPd25lcnNbaV0pIHtcbiAgICAgICAgICBkZWVwZXN0Q29tbW9uID0gaTtcbiAgICAgICAgfSBl
bHNlIHtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB2YXIg
VU5LTk9XTiA9ICcodW5rbm93biknO1xuICAgICAgdmFyIGNoaWxkT3duZXJOYW1lcyA9IGNoaWxk
T3duZXJzLnNsaWNlKGRlZXBlc3RDb21tb24gKyAxKS5tYXAoZnVuY3Rpb24gKGluc3QpIHtcbiAg
ICAgICAgcmV0dXJuIGluc3QuZ2V0TmFtZSgpIHx8IFVOS05PV047XG4gICAgICB9KTtcbiAgICAg
IHZhciBhbmNlc3Rvck93bmVyTmFtZXMgPSBhbmNlc3Rvck93bmVycy5zbGljZShkZWVwZXN0Q29t
bW9uICsgMSkubWFwKGZ1bmN0aW9uIChpbnN0KSB7XG4gICAgICAgIHJldHVybiBpbnN0LmdldE5h
bWUoKSB8fCBVTktOT1dOO1xuICAgICAgfSk7XG4gICAgICB2YXIgb3duZXJJbmZvID0gW10uY29u
Y2F0KFxuICAgICAgLy8gSWYgdGhlIHBhcmVudCBhbmQgY2hpbGQgaW5zdGFuY2VzIGhhdmUgYSBj
b21tb24gb3duZXIgYW5jZXN0b3IsIHN0YXJ0XG4gICAgICAvLyB3aXRoIHRoYXQgLS0gb3RoZXJ3
aXNlIHdlIGp1c3Qgc3RhcnQgd2l0aCB0aGUgcGFyZW50J3Mgb3duZXJzLlxuICAgICAgZGVlcGVz
dENvbW1vbiAhPT0gLTEgPyBjaGlsZE93bmVyc1tkZWVwZXN0Q29tbW9uXS5nZXROYW1lKCkgfHwg
VU5LTk9XTiA6IFtdLCBhbmNlc3Rvck93bmVyTmFtZXMsIGFuY2VzdG9yVGFnLFxuICAgICAgLy8g
SWYgd2UncmUgd2FybmluZyBhYm91dCBhbiBpbnZhbGlkIChub24tcGFyZW50KSBhbmNlc3RyeSwg
YWRkICcuLi4nXG4gICAgICBpbnZhbGlkQW5jZXN0b3IgPyBbJy4uLiddIDogW10sIGNoaWxkT3du
ZXJOYW1lcywgY2hpbGRUYWcpLmpvaW4oJyA+ICcpO1xuXG4gICAgICB2YXIgd2FybktleSA9ICEh
aW52YWxpZFBhcmVudCArICd8JyArIGNoaWxkVGFnICsgJ3wnICsgYW5jZXN0b3JUYWcgKyAnfCcg
KyBvd25lckluZm87XG4gICAgICBpZiAoZGlkV2Fyblt3YXJuS2V5XSkge1xuICAgICAgICByZXR1
cm47XG4gICAgICB9XG4gICAgICBkaWRXYXJuW3dhcm5LZXldID0gdHJ1ZTtcblxuICAgICAgdmFy
IHRhZ0Rpc3BsYXlOYW1lID0gY2hpbGRUYWc7XG4gICAgICB2YXIgd2hpdGVzcGFjZUluZm8gPSAn
JztcbiAgICAgIGlmIChjaGlsZFRhZyA9PT0gJyN0ZXh0Jykge1xuICAgICAgICBpZiAoL1xcUy8u
dGVzdChjaGlsZFRleHQpKSB7XG4gICAgICAgICAgdGFnRGlzcGxheU5hbWUgPSAnVGV4dCBub2Rl
cyc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGFnRGlzcGxheU5hbWUgPSAnV2hpdGVz
cGFjZSB0ZXh0IG5vZGVzJztcbiAgICAgICAgICB3aGl0ZXNwYWNlSW5mbyA9IFwiIE1ha2Ugc3Vy
ZSB5b3UgZG9uJ3QgaGF2ZSBhbnkgZXh0cmEgd2hpdGVzcGFjZSBiZXR3ZWVuIHRhZ3Mgb24gXCIg
KyAnZWFjaCBsaW5lIG9mIHlvdXIgc291cmNlIGNvZGUuJztcbiAgICAgICAgfVxuICAgICAgfSBl
bHNlIHtcbiAgICAgICAgdGFnRGlzcGxheU5hbWUgPSAnPCcgKyBjaGlsZFRhZyArICc+JztcbiAg
ICAgIH1cblxuICAgICAgaWYgKGludmFsaWRQYXJlbnQpIHtcbiAgICAgICAgdmFyIGluZm8gPSAn
JztcbiAgICAgICAgaWYgKGFuY2VzdG9yVGFnID09PSAndGFibGUnICYmIGNoaWxkVGFnID09PSAn
dHInKSB7XG4gICAgICAgICAgaW5mbyArPSAnIEFkZCBhIDx0Ym9keT4gdG8geW91ciBjb2RlIHRv
IG1hdGNoIHRoZSBET00gdHJlZSBnZW5lcmF0ZWQgYnkgJyArICd0aGUgYnJvd3Nlci4nO1xuICAg
ICAgICB9XG4gICAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3
YXJuaW5nKGZhbHNlLCAndmFsaWRhdGVET01OZXN0aW5nKC4uLik6ICVzIGNhbm5vdCBhcHBlYXIg
YXMgYSBjaGlsZCBvZiA8JXM+LiVzICcgKyAnU2VlICVzLiVzJywgdGFnRGlzcGxheU5hbWUsIGFu
Y2VzdG9yVGFnLCB3aGl0ZXNwYWNlSW5mbywgb3duZXJJbmZvLCBpbmZvKSA6IHZvaWQgMDtcbiAg
ICAgIH0gZWxzZSB7XG4gICAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlv
bicgPyB3YXJuaW5nKGZhbHNlLCAndmFsaWRhdGVET01OZXN0aW5nKC4uLik6ICVzIGNhbm5vdCBh
cHBlYXIgYXMgYSBkZXNjZW5kYW50IG9mICcgKyAnPCVzPi4gU2VlICVzLicsIHRhZ0Rpc3BsYXlO
YW1lLCBhbmNlc3RvclRhZywgb3duZXJJbmZvKSA6IHZvaWQgMDtcbiAgICAgIH1cbiAgICB9XG4g
IH07XG5cbiAgdmFsaWRhdGVET01OZXN0aW5nLnVwZGF0ZWRBbmNlc3RvckluZm8gPSB1cGRhdGVk
QW5jZXN0b3JJbmZvO1xuXG4gIC8vIEZvciB0ZXN0aW5nXG4gIHZhbGlkYXRlRE9NTmVzdGluZy5p
c1RhZ1ZhbGlkSW5Db250ZXh0ID0gZnVuY3Rpb24gKHRhZywgYW5jZXN0b3JJbmZvKSB7XG4gICAg
YW5jZXN0b3JJbmZvID0gYW5jZXN0b3JJbmZvIHx8IGVtcHR5QW5jZXN0b3JJbmZvO1xuICAgIHZh
ciBwYXJlbnRJbmZvID0gYW5jZXN0b3JJbmZvLmN1cnJlbnQ7XG4gICAgdmFyIHBhcmVudFRhZyA9
IHBhcmVudEluZm8gJiYgcGFyZW50SW5mby50YWc7XG4gICAgcmV0dXJuIGlzVGFnVmFsaWRXaXRo
UGFyZW50KHRhZywgcGFyZW50VGFnKSAmJiAhZmluZEludmFsaWRBbmNlc3RvckZvclRhZyh0YWcs
IGFuY2VzdG9ySW5mbyk7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gdmFsaWRhdGVET01O
ZXN0aW5nO1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiog
Li9+L3JlYWN0LWRvbS9saWIvdmFsaWRhdGVET01OZXN0aW5nLmpzXG4gKiogbW9kdWxlIGlkID0g
NDlcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIid1c2Ugc3RyaWN0JztcblxuZXhwb3J0
cy5fX2VzTW9kdWxlID0gdHJ1ZTtcbmV4cG9ydHMuZGVmYXVsdCA9IHdhcm5pbmc7XG4vKipcbiAq
IFByaW50cyBhIHdhcm5pbmcgaW4gdGhlIGNvbnNvbGUgaWYgaXQgZXhpc3RzLlxuICpcbiAqIEBw
YXJhbSB7U3RyaW5nfSBtZXNzYWdlIFRoZSB3YXJuaW5nIG1lc3NhZ2UuXG4gKiBAcmV0dXJucyB7
dm9pZH1cbiAqL1xuZnVuY3Rpb24gd2FybmluZyhtZXNzYWdlKSB7XG4gIC8qIGVzbGludC1kaXNh
YmxlIG5vLWNvbnNvbGUgKi9cbiAgaWYgKHR5cGVvZiBjb25zb2xlICE9PSAndW5kZWZpbmVkJyAm
JiB0eXBlb2YgY29uc29sZS5lcnJvciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGNvbnNvbGUuZXJy
b3IobWVzc2FnZSk7XG4gIH1cbiAgLyogZXNsaW50LWVuYWJsZSBuby1jb25zb2xlICovXG4gIHRy
eSB7XG4gICAgLy8gVGhpcyBlcnJvciB3YXMgdGhyb3duIGFzIGEgY29udmVuaWVuY2Ugc28gdGhh
dCBpZiB5b3UgZW5hYmxlXG4gICAgLy8gXCJicmVhayBvbiBhbGwgZXhjZXB0aW9uc1wiIGluIHlv
dXIgY29uc29sZSxcbiAgICAvLyBpdCB3b3VsZCBwYXVzZSB0aGUgZXhlY3V0aW9uIGF0IHRoaXMg
bGluZS5cbiAgICB0aHJvdyBuZXcgRXJyb3IobWVzc2FnZSk7XG4gICAgLyogZXNsaW50LWRpc2Fi
bGUgbm8tZW1wdHkgKi9cbiAgfSBjYXRjaCAoZSkge31cbiAgLyogZXNsaW50LWVuYWJsZSBuby1l
bXB0eSAqL1xufVxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4g
KiogLi9+L3JlYWN0LXJlZHV4L2xpYi91dGlscy93YXJuaW5nLmpzXG4gKiogbW9kdWxlIGlkID0g
NTBcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIid1c2Ugc3RyaWN0JztcblxuLyoqXG4g
KiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0
aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhl
IHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRc
biAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4g
dGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEB0eXBlY2hlY2tzXG4gKi9cblxudmFyIGVtcHR5
RnVuY3Rpb24gPSByZXF1aXJlKCcuL2VtcHR5RnVuY3Rpb24nKTtcblxuLyoqXG4gKiBVcHN0cmVh
bSB2ZXJzaW9uIG9mIGV2ZW50IGxpc3RlbmVyLiBEb2VzIG5vdCB0YWtlIGludG8gYWNjb3VudCBz
cGVjaWZpY1xuICogbmF0dXJlIG9mIHBsYXRmb3JtLlxuICovXG52YXIgRXZlbnRMaXN0ZW5lciA9
IHtcbiAgLyoqXG4gICAqIExpc3RlbiB0byBET00gZXZlbnRzIGR1cmluZyB0aGUgYnViYmxlIHBo
YXNlLlxuICAgKlxuICAgKiBAcGFyYW0ge0RPTUV2ZW50VGFyZ2V0fSB0YXJnZXQgRE9NIGVsZW1l
bnQgdG8gcmVnaXN0ZXIgbGlzdGVuZXIgb24uXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBldmVudFR5
cGUgRXZlbnQgdHlwZSwgZS5nLiAnY2xpY2snIG9yICdtb3VzZW92ZXInLlxuICAgKiBAcGFyYW0g
e2Z1bmN0aW9ufSBjYWxsYmFjayBDYWxsYmFjayBmdW5jdGlvbi5cbiAgICogQHJldHVybiB7b2Jq
ZWN0fSBPYmplY3Qgd2l0aCBhIGByZW1vdmVgIG1ldGhvZC5cbiAgICovXG4gIGxpc3RlbjogZnVu
Y3Rpb24gbGlzdGVuKHRhcmdldCwgZXZlbnRUeXBlLCBjYWxsYmFjaykge1xuICAgIGlmICh0YXJn
ZXQuYWRkRXZlbnRMaXN0ZW5lcikge1xuICAgICAgdGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIoZXZl
bnRUeXBlLCBjYWxsYmFjaywgZmFsc2UpO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgcmVtb3Zl
OiBmdW5jdGlvbiByZW1vdmUoKSB7XG4gICAgICAgICAgdGFyZ2V0LnJlbW92ZUV2ZW50TGlzdGVu
ZXIoZXZlbnRUeXBlLCBjYWxsYmFjaywgZmFsc2UpO1xuICAgICAgICB9XG4gICAgICB9O1xuICAg
IH0gZWxzZSBpZiAodGFyZ2V0LmF0dGFjaEV2ZW50KSB7XG4gICAgICB0YXJnZXQuYXR0YWNoRXZl
bnQoJ29uJyArIGV2ZW50VHlwZSwgY2FsbGJhY2spO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAg
cmVtb3ZlOiBmdW5jdGlvbiByZW1vdmUoKSB7XG4gICAgICAgICAgdGFyZ2V0LmRldGFjaEV2ZW50
KCdvbicgKyBldmVudFR5cGUsIGNhbGxiYWNrKTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9
XG4gIH0sXG5cbiAgLyoqXG4gICAqIExpc3RlbiB0byBET00gZXZlbnRzIGR1cmluZyB0aGUgY2Fw
dHVyZSBwaGFzZS5cbiAgICpcbiAgICogQHBhcmFtIHtET01FdmVudFRhcmdldH0gdGFyZ2V0IERP
TSBlbGVtZW50IHRvIHJlZ2lzdGVyIGxpc3RlbmVyIG9uLlxuICAgKiBAcGFyYW0ge3N0cmluZ30g
ZXZlbnRUeXBlIEV2ZW50IHR5cGUsIGUuZy4gJ2NsaWNrJyBvciAnbW91c2VvdmVyJy5cbiAgICog
QHBhcmFtIHtmdW5jdGlvbn0gY2FsbGJhY2sgQ2FsbGJhY2sgZnVuY3Rpb24uXG4gICAqIEByZXR1
cm4ge29iamVjdH0gT2JqZWN0IHdpdGggYSBgcmVtb3ZlYCBtZXRob2QuXG4gICAqL1xuICBjYXB0
dXJlOiBmdW5jdGlvbiBjYXB0dXJlKHRhcmdldCwgZXZlbnRUeXBlLCBjYWxsYmFjaykge1xuICAg
IGlmICh0YXJnZXQuYWRkRXZlbnRMaXN0ZW5lcikge1xuICAgICAgdGFyZ2V0LmFkZEV2ZW50TGlz
dGVuZXIoZXZlbnRUeXBlLCBjYWxsYmFjaywgdHJ1ZSk7XG4gICAgICByZXR1cm4ge1xuICAgICAg
ICByZW1vdmU6IGZ1bmN0aW9uIHJlbW92ZSgpIHtcbiAgICAgICAgICB0YXJnZXQucmVtb3ZlRXZl
bnRMaXN0ZW5lcihldmVudFR5cGUsIGNhbGxiYWNrLCB0cnVlKTtcbiAgICAgICAgfVxuICAgICAg
fTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJv
ZHVjdGlvbicpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignQXR0ZW1wdGVkIHRvIGxpc3RlbiB0
byBldmVudHMgZHVyaW5nIHRoZSBjYXB0dXJlIHBoYXNlIG9uIGEgJyArICdicm93c2VyIHRoYXQg
ZG9lcyBub3Qgc3VwcG9ydCB0aGUgY2FwdHVyZSBwaGFzZS4gWW91ciBhcHBsaWNhdGlvbiAnICsg
J3dpbGwgbm90IHJlY2VpdmUgc29tZSBldmVudHMuJyk7XG4gICAgICB9XG4gICAgICByZXR1cm4g
e1xuICAgICAgICByZW1vdmU6IGVtcHR5RnVuY3Rpb25cbiAgICAgIH07XG4gICAgfVxuICB9LFxu
XG4gIHJlZ2lzdGVyRGVmYXVsdDogZnVuY3Rpb24gcmVnaXN0ZXJEZWZhdWx0KCkge31cbn07XG5c
bm1vZHVsZS5leHBvcnRzID0gRXZlbnRMaXN0ZW5lcjtcblxuXG4vKioqKioqKioqKioqKioqKipc
biAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9mYmpzL2xpYi9FdmVudExpc3RlbmVyLmpzXG4g
KiogbW9kdWxlIGlkID0gNTFcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICog
Q29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRz
IHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhl
IEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSBy
b290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4g
KiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRo
ZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG4vKipcbiAqIEBw
YXJhbSB7RE9NRWxlbWVudH0gbm9kZSBpbnB1dC90ZXh0YXJlYSB0byBmb2N1c1xuICovXG5cbmZ1
bmN0aW9uIGZvY3VzTm9kZShub2RlKSB7XG4gIC8vIElFOCBjYW4gdGhyb3cgXCJDYW4ndCBtb3Zl
IGZvY3VzIHRvIHRoZSBjb250cm9sIGJlY2F1c2UgaXQgaXMgaW52aXNpYmxlLFxuICAvLyBub3Qg
ZW5hYmxlZCwgb3Igb2YgYSB0eXBlIHRoYXQgZG9lcyBub3QgYWNjZXB0IHRoZSBmb2N1cy5cIiBm
b3IgYWxsIGtpbmRzIG9mXG4gIC8vIHJlYXNvbnMgdGhhdCBhcmUgdG9vIGV4cGVuc2l2ZSBhbmQg
ZnJhZ2lsZSB0byB0ZXN0LlxuICB0cnkge1xuICAgIG5vZGUuZm9jdXMoKTtcbiAgfSBjYXRjaCAo
ZSkge31cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBmb2N1c05vZGU7XG5cblxuLyoqKioqKioqKioq
KioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vZmJqcy9saWIvZm9jdXNOb2RlLmpz
XG4gKiogbW9kdWxlIGlkID0gNTJcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIid1c2Ug
c3RyaWN0JztcblxuLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ss
IEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBp
cyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBM
SUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFu
IGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRo
ZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEB0eXBlY2hlY2tz
XG4gKi9cblxuLyogZXNsaW50LWRpc2FibGUgZmItd3d3L3R5cGVvZi11bmRlZmluZWQgKi9cblxu
LyoqXG4gKiBTYW1lIGFzIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgYnV0IHdyYXBzIGluIGEgdHJ5
LWNhdGNoIGJsb2NrLiBJbiBJRSBpdCBpc1xuICogbm90IHNhZmUgdG8gY2FsbCBkb2N1bWVudC5h
Y3RpdmVFbGVtZW50IGlmIHRoZXJlIGlzIG5vdGhpbmcgZm9jdXNlZC5cbiAqXG4gKiBUaGUgYWN0
aXZlRWxlbWVudCB3aWxsIGJlIG51bGwgb25seSBpZiB0aGUgZG9jdW1lbnQgb3IgZG9jdW1lbnQg
Ym9keSBpcyBub3RcbiAqIHlldCBkZWZpbmVkLlxuICpcbiAqIEBwYXJhbSB7P0RPTURvY3VtZW50
fSBkb2MgRGVmYXVsdHMgdG8gY3VycmVudCBkb2N1bWVudC5cbiAqIEByZXR1cm4gez9ET01FbGVt
ZW50fVxuICovXG5mdW5jdGlvbiBnZXRBY3RpdmVFbGVtZW50KGRvYykgLyo/RE9NRWxlbWVudCov
e1xuICBkb2MgPSBkb2MgfHwgKHR5cGVvZiBkb2N1bWVudCAhPT0gJ3VuZGVmaW5lZCcgPyBkb2N1
bWVudCA6IHVuZGVmaW5lZCk7XG4gIGlmICh0eXBlb2YgZG9jID09PSAndW5kZWZpbmVkJykge1xu
ICAgIHJldHVybiBudWxsO1xuICB9XG4gIHRyeSB7XG4gICAgcmV0dXJuIGRvYy5hY3RpdmVFbGVt
ZW50IHx8IGRvYy5ib2R5O1xuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIGRvYy5ib2R5O1xu
ICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0QWN0aXZlRWxlbWVudDtcblxuXG4vKioqKioq
KioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9mYmpzL2xpYi9nZXRBY3Rp
dmVFbGVtZW50LmpzXG4gKiogbW9kdWxlIGlkID0gNTNcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxu
ICoqLyIsInZhciByb290ID0gcmVxdWlyZSgnLi9fcm9vdCcpO1xuXG4vKiogQnVpbHQtaW4gdmFs
dWUgcmVmZXJlbmNlcy4gKi9cbnZhciBTeW1ib2wgPSByb290LlN5bWJvbDtcblxubW9kdWxlLmV4
cG9ydHMgPSBTeW1ib2w7XG5cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZP
T1RFUlxuICoqIC4vfi9sb2Rhc2gvX1N5bWJvbC5qc1xuICoqIG1vZHVsZSBpZCA9IDU0XG4gKiog
bW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQs
IEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291
cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGlu
IHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJj
ZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBm
b3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqL1xuXG4n
dXNlIHN0cmljdCc7XG5cbi8vIFJlYWN0IDE1LjUgcmVmZXJlbmNlcyB0aGlzIG1vZHVsZSwgYW5k
IGFzc3VtZXMgUHJvcFR5cGVzIGFyZSBzdGlsbCBjYWxsYWJsZSBpbiBwcm9kdWN0aW9uLlxuLy8g
VGhlcmVmb3JlIHdlIHJlLWV4cG9ydCBkZXZlbG9wbWVudC1vbmx5IHZlcnNpb24gd2l0aCBhbGwg
dGhlIFByb3BUeXBlcyBjaGVja3MgaGVyZS5cbi8vIEhvd2V2ZXIgaWYgb25lIGlzIG1pZ3JhdGlu
ZyB0byB0aGUgYHByb3AtdHlwZXNgIG5wbSBsaWJyYXJ5LCB0aGV5IHdpbGwgZ28gdGhyb3VnaCB0
aGVcbi8vIGBpbmRleC5qc2AgZW50cnkgcG9pbnQsIGFuZCBpdCB3aWxsIGJyYW5jaCBkZXBlbmRp
bmcgb24gdGhlIGVudmlyb25tZW50LlxudmFyIGZhY3RvcnkgPSByZXF1aXJlKCcuL2ZhY3RvcnlX
aXRoVHlwZUNoZWNrZXJzJyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGlzVmFsaWRFbGVt
ZW50KSB7XG4gIC8vIEl0IGlzIHN0aWxsIGFsbG93ZWQgaW4gMTUuNS5cbiAgdmFyIHRocm93T25E
aXJlY3RBY2Nlc3MgPSBmYWxzZTtcbiAgcmV0dXJuIGZhY3RvcnkoaXNWYWxpZEVsZW1lbnQsIHRo
cm93T25EaXJlY3RBY2Nlc3MpO1xufTtcblxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdF
QlBBQ0sgRk9PVEVSXG4gKiogLi9+L3Byb3AtdHlwZXMvZmFjdG9yeS5qc1xuICoqIG1vZHVsZSBp
ZCA9IDU1XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENvcHlyaWdodCAy
MDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpc
biAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNl
bnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBv
ZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmln
aHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9y
eS5cbiAqL1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xu
ICB2YXIgUkVBQ1RfRUxFTUVOVF9UWVBFID0gKHR5cGVvZiBTeW1ib2wgPT09ICdmdW5jdGlvbicg
JiZcbiAgICBTeW1ib2wuZm9yICYmXG4gICAgU3ltYm9sLmZvcigncmVhY3QuZWxlbWVudCcpKSB8
fFxuICAgIDB4ZWFjNztcblxuICB2YXIgaXNWYWxpZEVsZW1lbnQgPSBmdW5jdGlvbihvYmplY3Qp
IHtcbiAgICByZXR1cm4gdHlwZW9mIG9iamVjdCA9PT0gJ29iamVjdCcgJiZcbiAgICAgIG9iamVj
dCAhPT0gbnVsbCAmJlxuICAgICAgb2JqZWN0LiQkdHlwZW9mID09PSBSRUFDVF9FTEVNRU5UX1RZ
UEU7XG4gIH07XG5cbiAgLy8gQnkgZXhwbGljaXRseSB1c2luZyBgcHJvcC10eXBlc2AgeW91IGFy
ZSBvcHRpbmcgaW50byBuZXcgZGV2ZWxvcG1lbnQgYmVoYXZpb3IuXG4gIC8vIGh0dHA6Ly9mYi5t
ZS9wcm9wLXR5cGVzLWluLXByb2RcbiAgdmFyIHRocm93T25EaXJlY3RBY2Nlc3MgPSB0cnVlO1xu
ICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vZmFjdG9yeVdpdGhUeXBlQ2hlY2tlcnMnKShp
c1ZhbGlkRWxlbWVudCwgdGhyb3dPbkRpcmVjdEFjY2Vzcyk7XG59IGVsc2Uge1xuICAvLyBCeSBl
eHBsaWNpdGx5IHVzaW5nIGBwcm9wLXR5cGVzYCB5b3UgYXJlIG9wdGluZyBpbnRvIG5ldyBwcm9k
dWN0aW9uIGJlaGF2aW9yLlxuICAvLyBodHRwOi8vZmIubWUvcHJvcC10eXBlcy1pbi1wcm9kXG4g
IG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9mYWN0b3J5V2l0aFRocm93aW5nU2hpbXMnKSgp
O1xufVxuXG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAu
L34vcHJvcC10eXBlcy9pbmRleC5qc1xuICoqIG1vZHVsZSBpZCA9IDU2XG4gKiogbW9kdWxlIGNo
dW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29r
LCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUg
aXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICog
TElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBB
biBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0
aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqL1xuXG4ndXNlIHN0cmlj
dCc7XG5cbnZhciBSZWFjdFByb3BUeXBlc1NlY3JldCA9ICdTRUNSRVRfRE9fTk9UX1BBU1NfVEhJ
U19PUl9ZT1VfV0lMTF9CRV9GSVJFRCc7XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RQcm9wVHlw
ZXNTZWNyZXQ7XG5cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxu
ICoqIC4vfi9wcm9wLXR5cGVzL2xpYi9SZWFjdFByb3BUeXBlc1NlY3JldC5qc1xuICoqIG1vZHVs
ZSBpZCA9IDU3XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENvcHlyaWdo
dCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxu
ICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBs
aWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9y
eSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQg
cmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVj
dG9yeS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG4vKipcbiAqIENTUyBwcm9wZXJ0aWVz
IHdoaWNoIGFjY2VwdCBudW1iZXJzIGJ1dCBhcmUgbm90IGluIHVuaXRzIG9mIFwicHhcIi5cbiAq
L1xuXG52YXIgaXNVbml0bGVzc051bWJlciA9IHtcbiAgYW5pbWF0aW9uSXRlcmF0aW9uQ291bnQ6
IHRydWUsXG4gIGJvcmRlckltYWdlT3V0c2V0OiB0cnVlLFxuICBib3JkZXJJbWFnZVNsaWNlOiB0
cnVlLFxuICBib3JkZXJJbWFnZVdpZHRoOiB0cnVlLFxuICBib3hGbGV4OiB0cnVlLFxuICBib3hG
bGV4R3JvdXA6IHRydWUsXG4gIGJveE9yZGluYWxHcm91cDogdHJ1ZSxcbiAgY29sdW1uQ291bnQ6
IHRydWUsXG4gIGZsZXg6IHRydWUsXG4gIGZsZXhHcm93OiB0cnVlLFxuICBmbGV4UG9zaXRpdmU6
IHRydWUsXG4gIGZsZXhTaHJpbms6IHRydWUsXG4gIGZsZXhOZWdhdGl2ZTogdHJ1ZSxcbiAgZmxl
eE9yZGVyOiB0cnVlLFxuICBncmlkUm93OiB0cnVlLFxuICBncmlkUm93RW5kOiB0cnVlLFxuICBn
cmlkUm93U3BhbjogdHJ1ZSxcbiAgZ3JpZFJvd1N0YXJ0OiB0cnVlLFxuICBncmlkQ29sdW1uOiB0
cnVlLFxuICBncmlkQ29sdW1uRW5kOiB0cnVlLFxuICBncmlkQ29sdW1uU3BhbjogdHJ1ZSxcbiAg
Z3JpZENvbHVtblN0YXJ0OiB0cnVlLFxuICBmb250V2VpZ2h0OiB0cnVlLFxuICBsaW5lQ2xhbXA6
IHRydWUsXG4gIGxpbmVIZWlnaHQ6IHRydWUsXG4gIG9wYWNpdHk6IHRydWUsXG4gIG9yZGVyOiB0
cnVlLFxuICBvcnBoYW5zOiB0cnVlLFxuICB0YWJTaXplOiB0cnVlLFxuICB3aWRvd3M6IHRydWUs
XG4gIHpJbmRleDogdHJ1ZSxcbiAgem9vbTogdHJ1ZSxcblxuICAvLyBTVkctcmVsYXRlZCBwcm9w
ZXJ0aWVzXG4gIGZpbGxPcGFjaXR5OiB0cnVlLFxuICBmbG9vZE9wYWNpdHk6IHRydWUsXG4gIHN0
b3BPcGFjaXR5OiB0cnVlLFxuICBzdHJva2VEYXNoYXJyYXk6IHRydWUsXG4gIHN0cm9rZURhc2hv
ZmZzZXQ6IHRydWUsXG4gIHN0cm9rZU1pdGVybGltaXQ6IHRydWUsXG4gIHN0cm9rZU9wYWNpdHk6
IHRydWUsXG4gIHN0cm9rZVdpZHRoOiB0cnVlXG59O1xuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5n
fSBwcmVmaXggdmVuZG9yLXNwZWNpZmljIHByZWZpeCwgZWc6IFdlYmtpdFxuICogQHBhcmFtIHtz
dHJpbmd9IGtleSBzdHlsZSBuYW1lLCBlZzogdHJhbnNpdGlvbkR1cmF0aW9uXG4gKiBAcmV0dXJu
IHtzdHJpbmd9IHN0eWxlIG5hbWUgcHJlZml4ZWQgd2l0aCBgcHJlZml4YCwgcHJvcGVybHkgY2Ft
ZWxDYXNlZCwgZWc6XG4gKiBXZWJraXRUcmFuc2l0aW9uRHVyYXRpb25cbiAqL1xuZnVuY3Rpb24g
cHJlZml4S2V5KHByZWZpeCwga2V5KSB7XG4gIHJldHVybiBwcmVmaXggKyBrZXkuY2hhckF0KDAp
LnRvVXBwZXJDYXNlKCkgKyBrZXkuc3Vic3RyaW5nKDEpO1xufVxuXG4vKipcbiAqIFN1cHBvcnQg
c3R5bGUgbmFtZXMgdGhhdCBtYXkgY29tZSBwYXNzZWQgaW4gcHJlZml4ZWQgYnkgYWRkaW5nIHBl
cm11dGF0aW9uc1xuICogb2YgdmVuZG9yIHByZWZpeGVzLlxuICovXG52YXIgcHJlZml4ZXMgPSBb
J1dlYmtpdCcsICdtcycsICdNb3onLCAnTyddO1xuXG4vLyBVc2luZyBPYmplY3Qua2V5cyBoZXJl
LCBvciBlbHNlIHRoZSB2YW5pbGxhIGZvci1pbiBsb29wIG1ha2VzIElFOCBnbyBpbnRvIGFuXG4v
LyBpbmZpbml0ZSBsb29wLCBiZWNhdXNlIGl0IGl0ZXJhdGVzIG92ZXIgdGhlIG5ld2x5IGFkZGVk
IHByb3BzIHRvby5cbk9iamVjdC5rZXlzKGlzVW5pdGxlc3NOdW1iZXIpLmZvckVhY2goZnVuY3Rp
b24gKHByb3ApIHtcbiAgcHJlZml4ZXMuZm9yRWFjaChmdW5jdGlvbiAocHJlZml4KSB7XG4gICAg
aXNVbml0bGVzc051bWJlcltwcmVmaXhLZXkocHJlZml4LCBwcm9wKV0gPSBpc1VuaXRsZXNzTnVt
YmVyW3Byb3BdO1xuICB9KTtcbn0pO1xuXG4vKipcbiAqIE1vc3Qgc3R5bGUgcHJvcGVydGllcyBj
YW4gYmUgdW5zZXQgYnkgZG9pbmcgLnN0eWxlW3Byb3BdID0gJycgYnV0IElFOFxuICogZG9lc24n
dCBsaWtlIGRvaW5nIHRoYXQgd2l0aCBzaG9ydGhhbmQgcHJvcGVydGllcyBzbyBmb3IgdGhlIHBy
b3BlcnRpZXMgdGhhdFxuICogSUU4IGJyZWFrcyBvbiwgd2hpY2ggYXJlIGxpc3RlZCBoZXJlLCB3
ZSBpbnN0ZWFkIHVuc2V0IGVhY2ggb2YgdGhlXG4gKiBpbmRpdmlkdWFsIHByb3BlcnRpZXMuIFNl
ZSBodHRwOi8vYnVncy5qcXVlcnkuY29tL3RpY2tldC8xMjM4NS5cbiAqIFRoZSA0LXZhbHVlICdj
bG9jaycgcHJvcGVydGllcyBsaWtlIG1hcmdpbiwgcGFkZGluZywgYm9yZGVyLXdpZHRoIHNlZW0g
dG9cbiAqIGJlaGF2ZSB3aXRob3V0IGFueSBwcm9ibGVtcy4gQ3VyaW91c2x5LCBsaXN0LXN0eWxl
IHdvcmtzIHRvbyB3aXRob3V0IGFueVxuICogc3BlY2lhbCBwcm9kZGluZy5cbiAqL1xudmFyIHNo
b3J0aGFuZFByb3BlcnR5RXhwYW5zaW9ucyA9IHtcbiAgYmFja2dyb3VuZDoge1xuICAgIGJhY2tn
cm91bmRBdHRhY2htZW50OiB0cnVlLFxuICAgIGJhY2tncm91bmRDb2xvcjogdHJ1ZSxcbiAgICBi
YWNrZ3JvdW5kSW1hZ2U6IHRydWUsXG4gICAgYmFja2dyb3VuZFBvc2l0aW9uWDogdHJ1ZSxcbiAg
ICBiYWNrZ3JvdW5kUG9zaXRpb25ZOiB0cnVlLFxuICAgIGJhY2tncm91bmRSZXBlYXQ6IHRydWVc
biAgfSxcbiAgYmFja2dyb3VuZFBvc2l0aW9uOiB7XG4gICAgYmFja2dyb3VuZFBvc2l0aW9uWDog
dHJ1ZSxcbiAgICBiYWNrZ3JvdW5kUG9zaXRpb25ZOiB0cnVlXG4gIH0sXG4gIGJvcmRlcjoge1xu
ICAgIGJvcmRlcldpZHRoOiB0cnVlLFxuICAgIGJvcmRlclN0eWxlOiB0cnVlLFxuICAgIGJvcmRl
ckNvbG9yOiB0cnVlXG4gIH0sXG4gIGJvcmRlckJvdHRvbToge1xuICAgIGJvcmRlckJvdHRvbVdp
ZHRoOiB0cnVlLFxuICAgIGJvcmRlckJvdHRvbVN0eWxlOiB0cnVlLFxuICAgIGJvcmRlckJvdHRv
bUNvbG9yOiB0cnVlXG4gIH0sXG4gIGJvcmRlckxlZnQ6IHtcbiAgICBib3JkZXJMZWZ0V2lkdGg6
IHRydWUsXG4gICAgYm9yZGVyTGVmdFN0eWxlOiB0cnVlLFxuICAgIGJvcmRlckxlZnRDb2xvcjog
dHJ1ZVxuICB9LFxuICBib3JkZXJSaWdodDoge1xuICAgIGJvcmRlclJpZ2h0V2lkdGg6IHRydWUs
XG4gICAgYm9yZGVyUmlnaHRTdHlsZTogdHJ1ZSxcbiAgICBib3JkZXJSaWdodENvbG9yOiB0cnVl
XG4gIH0sXG4gIGJvcmRlclRvcDoge1xuICAgIGJvcmRlclRvcFdpZHRoOiB0cnVlLFxuICAgIGJv
cmRlclRvcFN0eWxlOiB0cnVlLFxuICAgIGJvcmRlclRvcENvbG9yOiB0cnVlXG4gIH0sXG4gIGZv
bnQ6IHtcbiAgICBmb250U3R5bGU6IHRydWUsXG4gICAgZm9udFZhcmlhbnQ6IHRydWUsXG4gICAg
Zm9udFdlaWdodDogdHJ1ZSxcbiAgICBmb250U2l6ZTogdHJ1ZSxcbiAgICBsaW5lSGVpZ2h0OiB0
cnVlLFxuICAgIGZvbnRGYW1pbHk6IHRydWVcbiAgfSxcbiAgb3V0bGluZToge1xuICAgIG91dGxp
bmVXaWR0aDogdHJ1ZSxcbiAgICBvdXRsaW5lU3R5bGU6IHRydWUsXG4gICAgb3V0bGluZUNvbG9y
OiB0cnVlXG4gIH1cbn07XG5cbnZhciBDU1NQcm9wZXJ0eSA9IHtcbiAgaXNVbml0bGVzc051bWJl
cjogaXNVbml0bGVzc051bWJlcixcbiAgc2hvcnRoYW5kUHJvcGVydHlFeHBhbnNpb25zOiBzaG9y
dGhhbmRQcm9wZXJ0eUV4cGFuc2lvbnNcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gQ1NTUHJvcGVy
dHk7XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34v
cmVhY3QtZG9tL2xpYi9DU1NQcm9wZXJ0eS5qc1xuICoqIG1vZHVsZSBpZCA9IDU4XG4gKiogbW9k
dWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZh
Y2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNl
IGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRo
ZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0
cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3Vu
ZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBcbiAq
L1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBfcHJvZEludmFyaWFudCA9IHJlcXVpcmUoJy4vcmVh
Y3RQcm9kSW52YXJpYW50Jyk7XG5cbmZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwg
Q29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsg
dGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwi
KTsgfSB9XG5cbnZhciBQb29sZWRDbGFzcyA9IHJlcXVpcmUoJy4vUG9vbGVkQ2xhc3MnKTtcblxu
dmFyIGludmFyaWFudCA9IHJlcXVpcmUoJ2ZianMvbGliL2ludmFyaWFudCcpO1xuXG4vKipcbiAq
IEEgc3BlY2lhbGl6ZWQgcHNldWRvLWV2ZW50IG1vZHVsZSB0byBoZWxwIGtlZXAgdHJhY2sgb2Yg
Y29tcG9uZW50cyB3YWl0aW5nIHRvXG4gKiBiZSBub3RpZmllZCB3aGVuIHRoZWlyIERPTSByZXBy
ZXNlbnRhdGlvbnMgYXJlIGF2YWlsYWJsZSBmb3IgdXNlLlxuICpcbiAqIFRoaXMgaW1wbGVtZW50
cyBgUG9vbGVkQ2xhc3NgLCBzbyB5b3Ugc2hvdWxkIG5ldmVyIG5lZWQgdG8gaW5zdGFudGlhdGUg
dGhpcy5cbiAqIEluc3RlYWQsIHVzZSBgQ2FsbGJhY2tRdWV1ZS5nZXRQb29sZWQoKWAuXG4gKlxu
ICogQGNsYXNzIFJlYWN0TW91bnRSZWFkeVxuICogQGltcGxlbWVudHMgUG9vbGVkQ2xhc3NcbiAq
IEBpbnRlcm5hbFxuICovXG5cbnZhciBDYWxsYmFja1F1ZXVlID0gZnVuY3Rpb24gKCkge1xuICBm
dW5jdGlvbiBDYWxsYmFja1F1ZXVlKGFyZykge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBD
YWxsYmFja1F1ZXVlKTtcblxuICAgIHRoaXMuX2NhbGxiYWNrcyA9IG51bGw7XG4gICAgdGhpcy5f
Y29udGV4dHMgPSBudWxsO1xuICAgIHRoaXMuX2FyZyA9IGFyZztcbiAgfVxuXG4gIC8qKlxuICAg
KiBFbnF1ZXVlcyBhIGNhbGxiYWNrIHRvIGJlIGludm9rZWQgd2hlbiBgbm90aWZ5QWxsYCBpcyBp
bnZva2VkLlxuICAgKlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBjYWxsYmFjayBJbnZva2VkIHdo
ZW4gYG5vdGlmeUFsbGAgaXMgaW52b2tlZC5cbiAgICogQHBhcmFtIHs/b2JqZWN0fSBjb250ZXh0
IENvbnRleHQgdG8gY2FsbCBgY2FsbGJhY2tgIHdpdGguXG4gICAqIEBpbnRlcm5hbFxuICAgKi9c
blxuXG4gIENhbGxiYWNrUXVldWUucHJvdG90eXBlLmVucXVldWUgPSBmdW5jdGlvbiBlbnF1ZXVl
KGNhbGxiYWNrLCBjb250ZXh0KSB7XG4gICAgdGhpcy5fY2FsbGJhY2tzID0gdGhpcy5fY2FsbGJh
Y2tzIHx8IFtdO1xuICAgIHRoaXMuX2NhbGxiYWNrcy5wdXNoKGNhbGxiYWNrKTtcbiAgICB0aGlz
Ll9jb250ZXh0cyA9IHRoaXMuX2NvbnRleHRzIHx8IFtdO1xuICAgIHRoaXMuX2NvbnRleHRzLnB1
c2goY29udGV4dCk7XG4gIH07XG5cbiAgLyoqXG4gICAqIEludm9rZXMgYWxsIGVucXVldWVkIGNh
bGxiYWNrcyBhbmQgY2xlYXJzIHRoZSBxdWV1ZS4gVGhpcyBpcyBpbnZva2VkIGFmdGVyXG4gICAq
IHRoZSBET00gcmVwcmVzZW50YXRpb24gb2YgYSBjb21wb25lbnQgaGFzIGJlZW4gY3JlYXRlZCBv
ciB1cGRhdGVkLlxuICAgKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG5cblxuICBDYWxsYmFja1F1
ZXVlLnByb3RvdHlwZS5ub3RpZnlBbGwgPSBmdW5jdGlvbiBub3RpZnlBbGwoKSB7XG4gICAgdmFy
IGNhbGxiYWNrcyA9IHRoaXMuX2NhbGxiYWNrcztcbiAgICB2YXIgY29udGV4dHMgPSB0aGlzLl9j
b250ZXh0cztcbiAgICB2YXIgYXJnID0gdGhpcy5fYXJnO1xuICAgIGlmIChjYWxsYmFja3MgJiYg
Y29udGV4dHMpIHtcbiAgICAgICEoY2FsbGJhY2tzLmxlbmd0aCA9PT0gY29udGV4dHMubGVuZ3Ro
KSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFs
c2UsICdNaXNtYXRjaGVkIGxpc3Qgb2YgY29udGV4dHMgaW4gY2FsbGJhY2sgcXVldWUnKSA6IF9w
cm9kSW52YXJpYW50KCcyNCcpIDogdm9pZCAwO1xuICAgICAgdGhpcy5fY2FsbGJhY2tzID0gbnVs
bDtcbiAgICAgIHRoaXMuX2NvbnRleHRzID0gbnVsbDtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgY2FsbGJhY2tzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNhbGxiYWNrc1tpXS5jYWxsKGNv
bnRleHRzW2ldLCBhcmcpO1xuICAgICAgfVxuICAgICAgY2FsbGJhY2tzLmxlbmd0aCA9IDA7XG4g
ICAgICBjb250ZXh0cy5sZW5ndGggPSAwO1xuICAgIH1cbiAgfTtcblxuICBDYWxsYmFja1F1ZXVl
LnByb3RvdHlwZS5jaGVja3BvaW50ID0gZnVuY3Rpb24gY2hlY2twb2ludCgpIHtcbiAgICByZXR1
cm4gdGhpcy5fY2FsbGJhY2tzID8gdGhpcy5fY2FsbGJhY2tzLmxlbmd0aCA6IDA7XG4gIH07XG5c
biAgQ2FsbGJhY2tRdWV1ZS5wcm90b3R5cGUucm9sbGJhY2sgPSBmdW5jdGlvbiByb2xsYmFjayhs
ZW4pIHtcbiAgICBpZiAodGhpcy5fY2FsbGJhY2tzICYmIHRoaXMuX2NvbnRleHRzKSB7XG4gICAg
ICB0aGlzLl9jYWxsYmFja3MubGVuZ3RoID0gbGVuO1xuICAgICAgdGhpcy5fY29udGV4dHMubGVu
Z3RoID0gbGVuO1xuICAgIH1cbiAgfTtcblxuICAvKipcbiAgICogUmVzZXRzIHRoZSBpbnRlcm5h
bCBxdWV1ZS5cbiAgICpcbiAgICogQGludGVybmFsXG4gICAqL1xuXG5cbiAgQ2FsbGJhY2tRdWV1
ZS5wcm90b3R5cGUucmVzZXQgPSBmdW5jdGlvbiByZXNldCgpIHtcbiAgICB0aGlzLl9jYWxsYmFj
a3MgPSBudWxsO1xuICAgIHRoaXMuX2NvbnRleHRzID0gbnVsbDtcbiAgfTtcblxuICAvKipcbiAg
ICogYFBvb2xlZENsYXNzYCBsb29rcyBmb3IgdGhpcy5cbiAgICovXG5cblxuICBDYWxsYmFja1F1
ZXVlLnByb3RvdHlwZS5kZXN0cnVjdG9yID0gZnVuY3Rpb24gZGVzdHJ1Y3RvcigpIHtcbiAgICB0
aGlzLnJlc2V0KCk7XG4gIH07XG5cbiAgcmV0dXJuIENhbGxiYWNrUXVldWU7XG59KCk7XG5cbm1v
ZHVsZS5leHBvcnRzID0gUG9vbGVkQ2xhc3MuYWRkUG9vbGluZ1RvKENhbGxiYWNrUXVldWUpO1xu
XG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0
LWRvbS9saWIvQ2FsbGJhY2tRdWV1ZS5qc1xuICoqIG1vZHVsZSBpZCA9IDU5XG4gKiogbW9kdWxl
IGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vi
b29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNv
ZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxu
ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVl
LiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBp
biB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuJ3Vz
ZSBzdHJpY3QnO1xuXG52YXIgRE9NUHJvcGVydHkgPSByZXF1aXJlKCcuL0RPTVByb3BlcnR5Jyk7
XG52YXIgUmVhY3RET01Db21wb25lbnRUcmVlID0gcmVxdWlyZSgnLi9SZWFjdERPTUNvbXBvbmVu
dFRyZWUnKTtcbnZhciBSZWFjdEluc3RydW1lbnRhdGlvbiA9IHJlcXVpcmUoJy4vUmVhY3RJbnN0
cnVtZW50YXRpb24nKTtcblxudmFyIHF1b3RlQXR0cmlidXRlVmFsdWVGb3JCcm93c2VyID0gcmVx
dWlyZSgnLi9xdW90ZUF0dHJpYnV0ZVZhbHVlRm9yQnJvd3NlcicpO1xudmFyIHdhcm5pbmcgPSBy
ZXF1aXJlKCdmYmpzL2xpYi93YXJuaW5nJyk7XG5cbnZhciBWQUxJRF9BVFRSSUJVVEVfTkFNRV9S
RUdFWCA9IG5ldyBSZWdFeHAoJ15bJyArIERPTVByb3BlcnR5LkFUVFJJQlVURV9OQU1FX1NUQVJU
X0NIQVIgKyAnXVsnICsgRE9NUHJvcGVydHkuQVRUUklCVVRFX05BTUVfQ0hBUiArICddKiQnKTtc
bnZhciBpbGxlZ2FsQXR0cmlidXRlTmFtZUNhY2hlID0ge307XG52YXIgdmFsaWRhdGVkQXR0cmli
dXRlTmFtZUNhY2hlID0ge307XG5cbmZ1bmN0aW9uIGlzQXR0cmlidXRlTmFtZVNhZmUoYXR0cmli
dXRlTmFtZSkge1xuICBpZiAodmFsaWRhdGVkQXR0cmlidXRlTmFtZUNhY2hlLmhhc093blByb3Bl
cnR5KGF0dHJpYnV0ZU5hbWUpKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgaWYgKGlsbGVn
YWxBdHRyaWJ1dGVOYW1lQ2FjaGUuaGFzT3duUHJvcGVydHkoYXR0cmlidXRlTmFtZSkpIHtcbiAg
ICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgaWYgKFZBTElEX0FUVFJJQlVURV9OQU1FX1JFR0VYLnRl
c3QoYXR0cmlidXRlTmFtZSkpIHtcbiAgICB2YWxpZGF0ZWRBdHRyaWJ1dGVOYW1lQ2FjaGVbYXR0
cmlidXRlTmFtZV0gPSB0cnVlO1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIGlsbGVnYWxBdHRy
aWJ1dGVOYW1lQ2FjaGVbYXR0cmlidXRlTmFtZV0gPSB0cnVlO1xuICBwcm9jZXNzLmVudi5OT0RF
X0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ0ludmFsaWQgYXR0cmlidXRl
IG5hbWU6IGAlc2AnLCBhdHRyaWJ1dGVOYW1lKSA6IHZvaWQgMDtcbiAgcmV0dXJuIGZhbHNlO1xu
fVxuXG5mdW5jdGlvbiBzaG91bGRJZ25vcmVWYWx1ZShwcm9wZXJ0eUluZm8sIHZhbHVlKSB7XG4g
IHJldHVybiB2YWx1ZSA9PSBudWxsIHx8IHByb3BlcnR5SW5mby5oYXNCb29sZWFuVmFsdWUgJiYg
IXZhbHVlIHx8IHByb3BlcnR5SW5mby5oYXNOdW1lcmljVmFsdWUgJiYgaXNOYU4odmFsdWUpIHx8
IHByb3BlcnR5SW5mby5oYXNQb3NpdGl2ZU51bWVyaWNWYWx1ZSAmJiB2YWx1ZSA8IDEgfHwgcHJv
cGVydHlJbmZvLmhhc092ZXJsb2FkZWRCb29sZWFuVmFsdWUgJiYgdmFsdWUgPT09IGZhbHNlO1xu
fVxuXG4vKipcbiAqIE9wZXJhdGlvbnMgZm9yIGRlYWxpbmcgd2l0aCBET00gcHJvcGVydGllcy5c
biAqL1xudmFyIERPTVByb3BlcnR5T3BlcmF0aW9ucyA9IHtcbiAgLyoqXG4gICAqIENyZWF0ZXMg
bWFya3VwIGZvciB0aGUgSUQgcHJvcGVydHkuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBp
ZCBVbmVzY2FwZWQgSUQuXG4gICAqIEByZXR1cm4ge3N0cmluZ30gTWFya3VwIHN0cmluZy5cbiAg
ICovXG4gIGNyZWF0ZU1hcmt1cEZvcklEOiBmdW5jdGlvbiAoaWQpIHtcbiAgICByZXR1cm4gRE9N
UHJvcGVydHkuSURfQVRUUklCVVRFX05BTUUgKyAnPScgKyBxdW90ZUF0dHJpYnV0ZVZhbHVlRm9y
QnJvd3NlcihpZCk7XG4gIH0sXG5cbiAgc2V0QXR0cmlidXRlRm9ySUQ6IGZ1bmN0aW9uIChub2Rl
LCBpZCkge1xuICAgIG5vZGUuc2V0QXR0cmlidXRlKERPTVByb3BlcnR5LklEX0FUVFJJQlVURV9O
QU1FLCBpZCk7XG4gIH0sXG5cbiAgY3JlYXRlTWFya3VwRm9yUm9vdDogZnVuY3Rpb24gKCkge1xu
ICAgIHJldHVybiBET01Qcm9wZXJ0eS5ST09UX0FUVFJJQlVURV9OQU1FICsgJz1cIlwiJztcbiAg
fSxcblxuICBzZXRBdHRyaWJ1dGVGb3JSb290OiBmdW5jdGlvbiAobm9kZSkge1xuICAgIG5vZGUu
c2V0QXR0cmlidXRlKERPTVByb3BlcnR5LlJPT1RfQVRUUklCVVRFX05BTUUsICcnKTtcbiAgfSxc
blxuICAvKipcbiAgICogQ3JlYXRlcyBtYXJrdXAgZm9yIGEgcHJvcGVydHkuXG4gICAqXG4gICAq
IEBwYXJhbSB7c3RyaW5nfSBuYW1lXG4gICAqIEBwYXJhbSB7Kn0gdmFsdWVcbiAgICogQHJldHVy
biB7P3N0cmluZ30gTWFya3VwIHN0cmluZywgb3IgbnVsbCBpZiB0aGUgcHJvcGVydHkgd2FzIGlu
dmFsaWQuXG4gICAqL1xuICBjcmVhdGVNYXJrdXBGb3JQcm9wZXJ0eTogZnVuY3Rpb24gKG5hbWUs
IHZhbHVlKSB7XG4gICAgdmFyIHByb3BlcnR5SW5mbyA9IERPTVByb3BlcnR5LnByb3BlcnRpZXMu
aGFzT3duUHJvcGVydHkobmFtZSkgPyBET01Qcm9wZXJ0eS5wcm9wZXJ0aWVzW25hbWVdIDogbnVs
bDtcbiAgICBpZiAocHJvcGVydHlJbmZvKSB7XG4gICAgICBpZiAoc2hvdWxkSWdub3JlVmFsdWUo
cHJvcGVydHlJbmZvLCB2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuICcnO1xuICAgICAgfVxuICAg
ICAgdmFyIGF0dHJpYnV0ZU5hbWUgPSBwcm9wZXJ0eUluZm8uYXR0cmlidXRlTmFtZTtcbiAgICAg
IGlmIChwcm9wZXJ0eUluZm8uaGFzQm9vbGVhblZhbHVlIHx8IHByb3BlcnR5SW5mby5oYXNPdmVy
bG9hZGVkQm9vbGVhblZhbHVlICYmIHZhbHVlID09PSB0cnVlKSB7XG4gICAgICAgIHJldHVybiBh
dHRyaWJ1dGVOYW1lICsgJz1cIlwiJztcbiAgICAgIH1cbiAgICAgIHJldHVybiBhdHRyaWJ1dGVO
YW1lICsgJz0nICsgcXVvdGVBdHRyaWJ1dGVWYWx1ZUZvckJyb3dzZXIodmFsdWUpO1xuICAgIH0g
ZWxzZSBpZiAoRE9NUHJvcGVydHkuaXNDdXN0b21BdHRyaWJ1dGUobmFtZSkpIHtcbiAgICAgIGlm
ICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiAnJztcbiAgICAgIH1cbiAgICAgIHJl
dHVybiBuYW1lICsgJz0nICsgcXVvdGVBdHRyaWJ1dGVWYWx1ZUZvckJyb3dzZXIodmFsdWUpO1xu
ICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfSxcblxuICAvKipcbiAgICogQ3JlYXRlcyBtYXJr
dXAgZm9yIGEgY3VzdG9tIHByb3BlcnR5LlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFt
ZVxuICAgKiBAcGFyYW0geyp9IHZhbHVlXG4gICAqIEByZXR1cm4ge3N0cmluZ30gTWFya3VwIHN0
cmluZywgb3IgZW1wdHkgc3RyaW5nIGlmIHRoZSBwcm9wZXJ0eSB3YXMgaW52YWxpZC5cbiAgICov
XG4gIGNyZWF0ZU1hcmt1cEZvckN1c3RvbUF0dHJpYnV0ZTogZnVuY3Rpb24gKG5hbWUsIHZhbHVl
KSB7XG4gICAgaWYgKCFpc0F0dHJpYnV0ZU5hbWVTYWZlKG5hbWUpIHx8IHZhbHVlID09IG51bGwp
IHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG4gICAgcmV0dXJuIG5hbWUgKyAnPScgKyBxdW90
ZUF0dHJpYnV0ZVZhbHVlRm9yQnJvd3Nlcih2YWx1ZSk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIFNl
dHMgdGhlIHZhbHVlIGZvciBhIHByb3BlcnR5IG9uIGEgbm9kZS5cbiAgICpcbiAgICogQHBhcmFt
IHtET01FbGVtZW50fSBub2RlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lXG4gICAqIEBwYXJh
bSB7Kn0gdmFsdWVcbiAgICovXG4gIHNldFZhbHVlRm9yUHJvcGVydHk6IGZ1bmN0aW9uIChub2Rl
LCBuYW1lLCB2YWx1ZSkge1xuICAgIHZhciBwcm9wZXJ0eUluZm8gPSBET01Qcm9wZXJ0eS5wcm9w
ZXJ0aWVzLmhhc093blByb3BlcnR5KG5hbWUpID8gRE9NUHJvcGVydHkucHJvcGVydGllc1tuYW1l
XSA6IG51bGw7XG4gICAgaWYgKHByb3BlcnR5SW5mbykge1xuICAgICAgdmFyIG11dGF0aW9uTWV0
aG9kID0gcHJvcGVydHlJbmZvLm11dGF0aW9uTWV0aG9kO1xuICAgICAgaWYgKG11dGF0aW9uTWV0
aG9kKSB7XG4gICAgICAgIG11dGF0aW9uTWV0aG9kKG5vZGUsIHZhbHVlKTtcbiAgICAgIH0gZWxz
ZSBpZiAoc2hvdWxkSWdub3JlVmFsdWUocHJvcGVydHlJbmZvLCB2YWx1ZSkpIHtcbiAgICAgICAg
dGhpcy5kZWxldGVWYWx1ZUZvclByb3BlcnR5KG5vZGUsIG5hbWUpO1xuICAgICAgICByZXR1cm47
XG4gICAgICB9IGVsc2UgaWYgKHByb3BlcnR5SW5mby5tdXN0VXNlUHJvcGVydHkpIHtcbiAgICAg
ICAgLy8gQ29udHJhcnkgdG8gYHNldEF0dHJpYnV0ZWAsIG9iamVjdCBwcm9wZXJ0aWVzIGFyZSBw
cm9wZXJseVxuICAgICAgICAvLyBgdG9TdHJpbmdgZWQgYnkgSUU4LzkuXG4gICAgICAgIG5vZGVb
cHJvcGVydHlJbmZvLnByb3BlcnR5TmFtZV0gPSB2YWx1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAg
ICAgIHZhciBhdHRyaWJ1dGVOYW1lID0gcHJvcGVydHlJbmZvLmF0dHJpYnV0ZU5hbWU7XG4gICAg
ICAgIHZhciBuYW1lc3BhY2UgPSBwcm9wZXJ0eUluZm8uYXR0cmlidXRlTmFtZXNwYWNlO1xuICAg
ICAgICAvLyBgc2V0QXR0cmlidXRlYCB3aXRoIG9iamVjdHMgYmVjb21lcyBvbmx5IGBbb2JqZWN0
XWAgaW4gSUU4LzksXG4gICAgICAgIC8vICgnJyArIHZhbHVlKSBtYWtlcyBpdCBvdXRwdXQgdGhl
IGNvcnJlY3QgdG9TdHJpbmcoKS12YWx1ZS5cbiAgICAgICAgaWYgKG5hbWVzcGFjZSkge1xuICAg
ICAgICAgIG5vZGUuc2V0QXR0cmlidXRlTlMobmFtZXNwYWNlLCBhdHRyaWJ1dGVOYW1lLCAnJyAr
IHZhbHVlKTtcbiAgICAgICAgfSBlbHNlIGlmIChwcm9wZXJ0eUluZm8uaGFzQm9vbGVhblZhbHVl
IHx8IHByb3BlcnR5SW5mby5oYXNPdmVybG9hZGVkQm9vbGVhblZhbHVlICYmIHZhbHVlID09PSB0
cnVlKSB7XG4gICAgICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSwgJycpO1xu
ICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG5vZGUuc2V0QXR0cmlidXRlKGF0dHJpYnV0ZU5h
bWUsICcnICsgdmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChET01Q
cm9wZXJ0eS5pc0N1c3RvbUF0dHJpYnV0ZShuYW1lKSkge1xuICAgICAgRE9NUHJvcGVydHlPcGVy
YXRpb25zLnNldFZhbHVlRm9yQXR0cmlidXRlKG5vZGUsIG5hbWUsIHZhbHVlKTtcbiAgICAgIHJl
dHVybjtcbiAgICB9XG5cbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0
aW9uJykge1xuICAgICAgdmFyIHBheWxvYWQgPSB7fTtcbiAgICAgIHBheWxvYWRbbmFtZV0gPSB2
YWx1ZTtcbiAgICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vbkhvc3RPcGVyYXRp
b24oe1xuICAgICAgICBpbnN0YW5jZUlEOiBSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0SW5zdGFu
Y2VGcm9tTm9kZShub2RlKS5fZGVidWdJRCxcbiAgICAgICAgdHlwZTogJ3VwZGF0ZSBhdHRyaWJ1
dGUnLFxuICAgICAgICBwYXlsb2FkOiBwYXlsb2FkXG4gICAgICB9KTtcbiAgICB9XG4gIH0sXG5c
biAgc2V0VmFsdWVGb3JBdHRyaWJ1dGU6IGZ1bmN0aW9uIChub2RlLCBuYW1lLCB2YWx1ZSkge1xu
ICAgIGlmICghaXNBdHRyaWJ1dGVOYW1lU2FmZShuYW1lKSkge1xuICAgICAgcmV0dXJuO1xuICAg
IH1cbiAgICBpZiAodmFsdWUgPT0gbnVsbCkge1xuICAgICAgbm9kZS5yZW1vdmVBdHRyaWJ1dGUo
bmFtZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG5vZGUuc2V0QXR0cmlidXRlKG5hbWUsICcnICsg
dmFsdWUpO1xuICAgIH1cblxuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1
Y3Rpb24nKSB7XG4gICAgICB2YXIgcGF5bG9hZCA9IHt9O1xuICAgICAgcGF5bG9hZFtuYW1lXSA9
IHZhbHVlO1xuICAgICAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9uSG9zdE9wZXJh
dGlvbih7XG4gICAgICAgIGluc3RhbmNlSUQ6IFJlYWN0RE9NQ29tcG9uZW50VHJlZS5nZXRJbnN0
YW5jZUZyb21Ob2RlKG5vZGUpLl9kZWJ1Z0lELFxuICAgICAgICB0eXBlOiAndXBkYXRlIGF0dHJp
YnV0ZScsXG4gICAgICAgIHBheWxvYWQ6IHBheWxvYWRcbiAgICAgIH0pO1xuICAgIH1cbiAgfSxc
blxuICAvKipcbiAgICogRGVsZXRlcyBhbiBhdHRyaWJ1dGVzIGZyb20gYSBub2RlLlxuICAgKlxu
ICAgKiBAcGFyYW0ge0RPTUVsZW1lbnR9IG5vZGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWVc
biAgICovXG4gIGRlbGV0ZVZhbHVlRm9yQXR0cmlidXRlOiBmdW5jdGlvbiAobm9kZSwgbmFtZSkg
e1xuICAgIG5vZGUucmVtb3ZlQXR0cmlidXRlKG5hbWUpO1xuICAgIGlmIChwcm9jZXNzLmVudi5O
T0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICBSZWFjdEluc3RydW1lbnRhdGlvbi5k
ZWJ1Z1Rvb2wub25Ib3N0T3BlcmF0aW9uKHtcbiAgICAgICAgaW5zdGFuY2VJRDogUmVhY3RET01D
b21wb25lbnRUcmVlLmdldEluc3RhbmNlRnJvbU5vZGUobm9kZSkuX2RlYnVnSUQsXG4gICAgICAg
IHR5cGU6ICdyZW1vdmUgYXR0cmlidXRlJyxcbiAgICAgICAgcGF5bG9hZDogbmFtZVxuICAgICAg
fSk7XG4gICAgfVxuICB9LFxuXG4gIC8qKlxuICAgKiBEZWxldGVzIHRoZSB2YWx1ZSBmb3IgYSBw
cm9wZXJ0eSBvbiBhIG5vZGUuXG4gICAqXG4gICAqIEBwYXJhbSB7RE9NRWxlbWVudH0gbm9kZVxu
ICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZVxuICAgKi9cbiAgZGVsZXRlVmFsdWVGb3JQcm9wZXJ0
eTogZnVuY3Rpb24gKG5vZGUsIG5hbWUpIHtcbiAgICB2YXIgcHJvcGVydHlJbmZvID0gRE9NUHJv
cGVydHkucHJvcGVydGllcy5oYXNPd25Qcm9wZXJ0eShuYW1lKSA/IERPTVByb3BlcnR5LnByb3Bl
cnRpZXNbbmFtZV0gOiBudWxsO1xuICAgIGlmIChwcm9wZXJ0eUluZm8pIHtcbiAgICAgIHZhciBt
dXRhdGlvbk1ldGhvZCA9IHByb3BlcnR5SW5mby5tdXRhdGlvbk1ldGhvZDtcbiAgICAgIGlmICht
dXRhdGlvbk1ldGhvZCkge1xuICAgICAgICBtdXRhdGlvbk1ldGhvZChub2RlLCB1bmRlZmluZWQp
O1xuICAgICAgfSBlbHNlIGlmIChwcm9wZXJ0eUluZm8ubXVzdFVzZVByb3BlcnR5KSB7XG4gICAg
ICAgIHZhciBwcm9wTmFtZSA9IHByb3BlcnR5SW5mby5wcm9wZXJ0eU5hbWU7XG4gICAgICAgIGlm
IChwcm9wZXJ0eUluZm8uaGFzQm9vbGVhblZhbHVlKSB7XG4gICAgICAgICAgbm9kZVtwcm9wTmFt
ZV0gPSBmYWxzZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBub2RlW3Byb3BOYW1lXSA9
ICcnO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBub2RlLnJlbW92ZUF0dHJp
YnV0ZShwcm9wZXJ0eUluZm8uYXR0cmlidXRlTmFtZSk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlm
IChET01Qcm9wZXJ0eS5pc0N1c3RvbUF0dHJpYnV0ZShuYW1lKSkge1xuICAgICAgbm9kZS5yZW1v
dmVBdHRyaWJ1dGUobmFtZSk7XG4gICAgfVxuXG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5W
ICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9v
bC5vbkhvc3RPcGVyYXRpb24oe1xuICAgICAgICBpbnN0YW5jZUlEOiBSZWFjdERPTUNvbXBvbmVu
dFRyZWUuZ2V0SW5zdGFuY2VGcm9tTm9kZShub2RlKS5fZGVidWdJRCxcbiAgICAgICAgdHlwZTog
J3JlbW92ZSBhdHRyaWJ1dGUnLFxuICAgICAgICBwYXlsb2FkOiBuYW1lXG4gICAgICB9KTtcbiAg
ICB9XG4gIH1cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gRE9NUHJvcGVydHlPcGVyYXRpb25zO1xu
XG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0
LWRvbS9saWIvRE9NUHJvcGVydHlPcGVyYXRpb25zLmpzXG4gKiogbW9kdWxlIGlkID0gNjBcbiAq
KiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTUtcHJlc2Vu
dCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBz
b3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQg
aW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291
cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJl
IGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAq
L1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBSZWFjdERPTUNvbXBvbmVudEZsYWdzID0ge1xuICBo
YXNDYWNoZWRDaGlsZE5vZGVzOiAxIDw8IDBcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RE
T01Db21wb25lbnRGbGFncztcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZP
T1RFUlxuICoqIC4vfi9yZWFjdC1kb20vbGliL1JlYWN0RE9NQ29tcG9uZW50RmxhZ3MuanNcbiAq
KiBtb2R1bGUgaWQgPSA2MVxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBD
b3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNl
cnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qt
c3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBk
aXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2Yg
cGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2Ft
ZSBkaXJlY3RvcnkuXG4gKlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIF9hc3NpZ24gPSBy
ZXF1aXJlKCdvYmplY3QtYXNzaWduJyk7XG5cbnZhciBMaW5rZWRWYWx1ZVV0aWxzID0gcmVxdWly
ZSgnLi9MaW5rZWRWYWx1ZVV0aWxzJyk7XG52YXIgUmVhY3RET01Db21wb25lbnRUcmVlID0gcmVx
dWlyZSgnLi9SZWFjdERPTUNvbXBvbmVudFRyZWUnKTtcbnZhciBSZWFjdFVwZGF0ZXMgPSByZXF1
aXJlKCcuL1JlYWN0VXBkYXRlcycpO1xuXG52YXIgd2FybmluZyA9IHJlcXVpcmUoJ2ZianMvbGli
L3dhcm5pbmcnKTtcblxudmFyIGRpZFdhcm5WYWx1ZUxpbmsgPSBmYWxzZTtcbnZhciBkaWRXYXJu
VmFsdWVEZWZhdWx0VmFsdWUgPSBmYWxzZTtcblxuZnVuY3Rpb24gdXBkYXRlT3B0aW9uc0lmUGVu
ZGluZ1VwZGF0ZUFuZE1vdW50ZWQoKSB7XG4gIGlmICh0aGlzLl9yb290Tm9kZUlEICYmIHRoaXMu
X3dyYXBwZXJTdGF0ZS5wZW5kaW5nVXBkYXRlKSB7XG4gICAgdGhpcy5fd3JhcHBlclN0YXRlLnBl
bmRpbmdVcGRhdGUgPSBmYWxzZTtcblxuICAgIHZhciBwcm9wcyA9IHRoaXMuX2N1cnJlbnRFbGVt
ZW50LnByb3BzO1xuICAgIHZhciB2YWx1ZSA9IExpbmtlZFZhbHVlVXRpbHMuZ2V0VmFsdWUocHJv
cHMpO1xuXG4gICAgaWYgKHZhbHVlICE9IG51bGwpIHtcbiAgICAgIHVwZGF0ZU9wdGlvbnModGhp
cywgQm9vbGVhbihwcm9wcy5tdWx0aXBsZSksIHZhbHVlKTtcbiAgICB9XG4gIH1cbn1cblxuZnVu
Y3Rpb24gZ2V0RGVjbGFyYXRpb25FcnJvckFkZGVuZHVtKG93bmVyKSB7XG4gIGlmIChvd25lcikg
e1xuICAgIHZhciBuYW1lID0gb3duZXIuZ2V0TmFtZSgpO1xuICAgIGlmIChuYW1lKSB7XG4gICAg
ICByZXR1cm4gJyBDaGVjayB0aGUgcmVuZGVyIG1ldGhvZCBvZiBgJyArIG5hbWUgKyAnYC4nO1xu
ICAgIH1cbiAgfVxuICByZXR1cm4gJyc7XG59XG5cbnZhciB2YWx1ZVByb3BOYW1lcyA9IFsndmFs
dWUnLCAnZGVmYXVsdFZhbHVlJ107XG5cbi8qKlxuICogVmFsaWRhdGlvbiBmdW5jdGlvbiBmb3Ig
YHZhbHVlYCBhbmQgYGRlZmF1bHRWYWx1ZWAuXG4gKiBAcHJpdmF0ZVxuICovXG5mdW5jdGlvbiBj
aGVja1NlbGVjdFByb3BUeXBlcyhpbnN0LCBwcm9wcykge1xuICB2YXIgb3duZXIgPSBpbnN0Ll9j
dXJyZW50RWxlbWVudC5fb3duZXI7XG4gIExpbmtlZFZhbHVlVXRpbHMuY2hlY2tQcm9wVHlwZXMo
J3NlbGVjdCcsIHByb3BzLCBvd25lcik7XG5cbiAgaWYgKHByb3BzLnZhbHVlTGluayAhPT0gdW5k
ZWZpbmVkICYmICFkaWRXYXJuVmFsdWVMaW5rKSB7XG4gICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYg
IT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdgdmFsdWVMaW5rYCBwcm9wIG9uIGBz
ZWxlY3RgIGlzIGRlcHJlY2F0ZWQ7IHNldCBgdmFsdWVgIGFuZCBgb25DaGFuZ2VgIGluc3RlYWQu
JykgOiB2b2lkIDA7XG4gICAgZGlkV2FyblZhbHVlTGluayA9IHRydWU7XG4gIH1cblxuICBmb3Ig
KHZhciBpID0gMDsgaSA8IHZhbHVlUHJvcE5hbWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIHBy
b3BOYW1lID0gdmFsdWVQcm9wTmFtZXNbaV07XG4gICAgaWYgKHByb3BzW3Byb3BOYW1lXSA9PSBu
dWxsKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgdmFyIGlzQXJyYXkgPSBBcnJheS5p
c0FycmF5KHByb3BzW3Byb3BOYW1lXSk7XG4gICAgaWYgKHByb3BzLm11bHRpcGxlICYmICFpc0Fy
cmF5KSB7XG4gICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2Fy
bmluZyhmYWxzZSwgJ1RoZSBgJXNgIHByb3Agc3VwcGxpZWQgdG8gPHNlbGVjdD4gbXVzdCBiZSBh
biBhcnJheSBpZiAnICsgJ2BtdWx0aXBsZWAgaXMgdHJ1ZS4lcycsIHByb3BOYW1lLCBnZXREZWNs
YXJhdGlvbkVycm9yQWRkZW5kdW0ob3duZXIpKSA6IHZvaWQgMDtcbiAgICB9IGVsc2UgaWYgKCFw
cm9wcy5tdWx0aXBsZSAmJiBpc0FycmF5KSB7XG4gICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAh
PT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ1RoZSBgJXNgIHByb3Agc3VwcGxpZWQg
dG8gPHNlbGVjdD4gbXVzdCBiZSBhIHNjYWxhciAnICsgJ3ZhbHVlIGlmIGBtdWx0aXBsZWAgaXMg
ZmFsc2UuJXMnLCBwcm9wTmFtZSwgZ2V0RGVjbGFyYXRpb25FcnJvckFkZGVuZHVtKG93bmVyKSkg
OiB2b2lkIDA7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogQHBhcmFtIHtSZWFjdERPTUNvbXBv
bmVudH0gaW5zdFxuICogQHBhcmFtIHtib29sZWFufSBtdWx0aXBsZVxuICogQHBhcmFtIHsqfSBw
cm9wVmFsdWUgQSBzdHJpbmdhYmxlICh3aXRoIGBtdWx0aXBsZWAsIGEgbGlzdCBvZiBzdHJpbmdh
YmxlcykuXG4gKiBAcHJpdmF0ZVxuICovXG5mdW5jdGlvbiB1cGRhdGVPcHRpb25zKGluc3QsIG11
bHRpcGxlLCBwcm9wVmFsdWUpIHtcbiAgdmFyIHNlbGVjdGVkVmFsdWUsIGk7XG4gIHZhciBvcHRp
b25zID0gUmVhY3RET01Db21wb25lbnRUcmVlLmdldE5vZGVGcm9tSW5zdGFuY2UoaW5zdCkub3B0
aW9ucztcblxuICBpZiAobXVsdGlwbGUpIHtcbiAgICBzZWxlY3RlZFZhbHVlID0ge307XG4gICAg
Zm9yIChpID0gMDsgaSA8IHByb3BWYWx1ZS5sZW5ndGg7IGkrKykge1xuICAgICAgc2VsZWN0ZWRW
YWx1ZVsnJyArIHByb3BWYWx1ZVtpXV0gPSB0cnVlO1xuICAgIH1cbiAgICBmb3IgKGkgPSAwOyBp
IDwgb3B0aW9ucy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHNlbGVjdGVkID0gc2VsZWN0ZWRW
YWx1ZS5oYXNPd25Qcm9wZXJ0eShvcHRpb25zW2ldLnZhbHVlKTtcbiAgICAgIGlmIChvcHRpb25z
W2ldLnNlbGVjdGVkICE9PSBzZWxlY3RlZCkge1xuICAgICAgICBvcHRpb25zW2ldLnNlbGVjdGVk
ID0gc2VsZWN0ZWQ7XG4gICAgICB9XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIC8vIERvIG5vdCBz
ZXQgYHNlbGVjdC52YWx1ZWAgYXMgZXhhY3QgYmVoYXZpb3IgaXNuJ3QgY29uc2lzdGVudCBhY3Jv
c3MgYWxsXG4gICAgLy8gYnJvd3NlcnMgZm9yIGFsbCBjYXNlcy5cbiAgICBzZWxlY3RlZFZhbHVl
ID0gJycgKyBwcm9wVmFsdWU7XG4gICAgZm9yIChpID0gMDsgaSA8IG9wdGlvbnMubGVuZ3RoOyBp
KyspIHtcbiAgICAgIGlmIChvcHRpb25zW2ldLnZhbHVlID09PSBzZWxlY3RlZFZhbHVlKSB7XG4g
ICAgICAgIG9wdGlvbnNbaV0uc2VsZWN0ZWQgPSB0cnVlO1xuICAgICAgICByZXR1cm47XG4gICAg
ICB9XG4gICAgfVxuICAgIGlmIChvcHRpb25zLmxlbmd0aCkge1xuICAgICAgb3B0aW9uc1swXS5z
ZWxlY3RlZCA9IHRydWU7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogSW1wbGVtZW50cyBhIDxz
ZWxlY3Q+IGhvc3QgY29tcG9uZW50IHRoYXQgYWxsb3dzIG9wdGlvbmFsbHkgc2V0dGluZyB0aGVc
biAqIHByb3BzIGB2YWx1ZWAgYW5kIGBkZWZhdWx0VmFsdWVgLiBJZiBgbXVsdGlwbGVgIGlzIGZh
bHNlLCB0aGUgcHJvcCBtdXN0IGJlIGFcbiAqIHN0cmluZ2FibGUuIElmIGBtdWx0aXBsZWAgaXMg
dHJ1ZSwgdGhlIHByb3AgbXVzdCBiZSBhbiBhcnJheSBvZiBzdHJpbmdhYmxlcy5cbiAqXG4gKiBJ
ZiBgdmFsdWVgIGlzIG5vdCBzdXBwbGllZCAob3IgbnVsbC91bmRlZmluZWQpLCB1c2VyIGFjdGlv
bnMgdGhhdCBjaGFuZ2UgdGhlXG4gKiBzZWxlY3RlZCBvcHRpb24gd2lsbCB0cmlnZ2VyIHVwZGF0
ZXMgdG8gdGhlIHJlbmRlcmVkIG9wdGlvbnMuXG4gKlxuICogSWYgaXQgaXMgc3VwcGxpZWQgKGFu
ZCBub3QgbnVsbC91bmRlZmluZWQpLCB0aGUgcmVuZGVyZWQgb3B0aW9ucyB3aWxsIG5vdFxuICog
dXBkYXRlIGluIHJlc3BvbnNlIHRvIHVzZXIgYWN0aW9ucy4gSW5zdGVhZCwgdGhlIGB2YWx1ZWAg
cHJvcCBtdXN0IGNoYW5nZSBpblxuICogb3JkZXIgZm9yIHRoZSByZW5kZXJlZCBvcHRpb25zIHRv
IHVwZGF0ZS5cbiAqXG4gKiBJZiBgZGVmYXVsdFZhbHVlYCBpcyBwcm92aWRlZCwgYW55IG9wdGlv
bnMgd2l0aCB0aGUgc3VwcGxpZWQgdmFsdWVzIHdpbGwgYmVcbiAqIHNlbGVjdGVkLlxuICovXG52
YXIgUmVhY3RET01TZWxlY3QgPSB7XG4gIGdldEhvc3RQcm9wczogZnVuY3Rpb24gKGluc3QsIHBy
b3BzKSB7XG4gICAgcmV0dXJuIF9hc3NpZ24oe30sIHByb3BzLCB7XG4gICAgICBvbkNoYW5nZTog
aW5zdC5fd3JhcHBlclN0YXRlLm9uQ2hhbmdlLFxuICAgICAgdmFsdWU6IHVuZGVmaW5lZFxuICAg
IH0pO1xuICB9LFxuXG4gIG1vdW50V3JhcHBlcjogZnVuY3Rpb24gKGluc3QsIHByb3BzKSB7XG4g
ICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIGNo
ZWNrU2VsZWN0UHJvcFR5cGVzKGluc3QsIHByb3BzKTtcbiAgICB9XG5cbiAgICB2YXIgdmFsdWUg
PSBMaW5rZWRWYWx1ZVV0aWxzLmdldFZhbHVlKHByb3BzKTtcbiAgICBpbnN0Ll93cmFwcGVyU3Rh
dGUgPSB7XG4gICAgICBwZW5kaW5nVXBkYXRlOiBmYWxzZSxcbiAgICAgIGluaXRpYWxWYWx1ZTog
dmFsdWUgIT0gbnVsbCA/IHZhbHVlIDogcHJvcHMuZGVmYXVsdFZhbHVlLFxuICAgICAgbGlzdGVu
ZXJzOiBudWxsLFxuICAgICAgb25DaGFuZ2U6IF9oYW5kbGVDaGFuZ2UuYmluZChpbnN0KSxcbiAg
ICAgIHdhc011bHRpcGxlOiBCb29sZWFuKHByb3BzLm11bHRpcGxlKVxuICAgIH07XG5cbiAgICBp
ZiAocHJvcHMudmFsdWUgIT09IHVuZGVmaW5lZCAmJiBwcm9wcy5kZWZhdWx0VmFsdWUgIT09IHVu
ZGVmaW5lZCAmJiAhZGlkV2FyblZhbHVlRGVmYXVsdFZhbHVlKSB7XG4gICAgICBwcm9jZXNzLmVu
di5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ1NlbGVjdCBlbGVt
ZW50cyBtdXN0IGJlIGVpdGhlciBjb250cm9sbGVkIG9yIHVuY29udHJvbGxlZCAnICsgJyhzcGVj
aWZ5IGVpdGhlciB0aGUgdmFsdWUgcHJvcCwgb3IgdGhlIGRlZmF1bHRWYWx1ZSBwcm9wLCBidXQg
bm90ICcgKyAnYm90aCkuIERlY2lkZSBiZXR3ZWVuIHVzaW5nIGEgY29udHJvbGxlZCBvciB1bmNv
bnRyb2xsZWQgc2VsZWN0ICcgKyAnZWxlbWVudCBhbmQgcmVtb3ZlIG9uZSBvZiB0aGVzZSBwcm9w
cy4gTW9yZSBpbmZvOiAnICsgJ2h0dHBzOi8vZmIubWUvcmVhY3QtY29udHJvbGxlZC1jb21wb25l
bnRzJykgOiB2b2lkIDA7XG4gICAgICBkaWRXYXJuVmFsdWVEZWZhdWx0VmFsdWUgPSB0cnVlO1xu
ICAgIH1cbiAgfSxcblxuICBnZXRTZWxlY3RWYWx1ZUNvbnRleHQ6IGZ1bmN0aW9uIChpbnN0KSB7
XG4gICAgLy8gUmVhY3RET01PcHRpb24gbG9va3MgYXQgdGhpcyBpbml0aWFsIHZhbHVlIHNvIHRo
ZSBpbml0aWFsIGdlbmVyYXRlZFxuICAgIC8vIG1hcmt1cCBoYXMgY29ycmVjdCBgc2VsZWN0ZWRg
IGF0dHJpYnV0ZXNcbiAgICByZXR1cm4gaW5zdC5fd3JhcHBlclN0YXRlLmluaXRpYWxWYWx1ZTtc
biAgfSxcblxuICBwb3N0VXBkYXRlV3JhcHBlcjogZnVuY3Rpb24gKGluc3QpIHtcbiAgICB2YXIg
cHJvcHMgPSBpbnN0Ll9jdXJyZW50RWxlbWVudC5wcm9wcztcblxuICAgIC8vIEFmdGVyIHRoZSBp
bml0aWFsIG1vdW50LCB3ZSBjb250cm9sIHNlbGVjdGVkLW5lc3MgbWFudWFsbHkgc28gZG9uJ3Qg
cGFzc1xuICAgIC8vIHRoaXMgdmFsdWUgZG93blxuICAgIGluc3QuX3dyYXBwZXJTdGF0ZS5pbml0
aWFsVmFsdWUgPSB1bmRlZmluZWQ7XG5cbiAgICB2YXIgd2FzTXVsdGlwbGUgPSBpbnN0Ll93cmFw
cGVyU3RhdGUud2FzTXVsdGlwbGU7XG4gICAgaW5zdC5fd3JhcHBlclN0YXRlLndhc011bHRpcGxl
ID0gQm9vbGVhbihwcm9wcy5tdWx0aXBsZSk7XG5cbiAgICB2YXIgdmFsdWUgPSBMaW5rZWRWYWx1
ZVV0aWxzLmdldFZhbHVlKHByb3BzKTtcbiAgICBpZiAodmFsdWUgIT0gbnVsbCkge1xuICAgICAg
aW5zdC5fd3JhcHBlclN0YXRlLnBlbmRpbmdVcGRhdGUgPSBmYWxzZTtcbiAgICAgIHVwZGF0ZU9w
dGlvbnMoaW5zdCwgQm9vbGVhbihwcm9wcy5tdWx0aXBsZSksIHZhbHVlKTtcbiAgICB9IGVsc2Ug
aWYgKHdhc011bHRpcGxlICE9PSBCb29sZWFuKHByb3BzLm11bHRpcGxlKSkge1xuICAgICAgLy8g
Rm9yIHNpbXBsaWNpdHksIHJlYXBwbHkgYGRlZmF1bHRWYWx1ZWAgaWYgYG11bHRpcGxlYCBpcyB0
b2dnbGVkLlxuICAgICAgaWYgKHByb3BzLmRlZmF1bHRWYWx1ZSAhPSBudWxsKSB7XG4gICAgICAg
IHVwZGF0ZU9wdGlvbnMoaW5zdCwgQm9vbGVhbihwcm9wcy5tdWx0aXBsZSksIHByb3BzLmRlZmF1
bHRWYWx1ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBSZXZlcnQgdGhlIHNlbGVjdCBi
YWNrIHRvIGl0cyBkZWZhdWx0IHVuc2VsZWN0ZWQgc3RhdGUuXG4gICAgICAgIHVwZGF0ZU9wdGlv
bnMoaW5zdCwgQm9vbGVhbihwcm9wcy5tdWx0aXBsZSksIHByb3BzLm11bHRpcGxlID8gW10gOiAn
Jyk7XG4gICAgICB9XG4gICAgfVxuICB9XG59O1xuXG5mdW5jdGlvbiBfaGFuZGxlQ2hhbmdlKGV2
ZW50KSB7XG4gIHZhciBwcm9wcyA9IHRoaXMuX2N1cnJlbnRFbGVtZW50LnByb3BzO1xuICB2YXIg
cmV0dXJuVmFsdWUgPSBMaW5rZWRWYWx1ZVV0aWxzLmV4ZWN1dGVPbkNoYW5nZShwcm9wcywgZXZl
bnQpO1xuXG4gIGlmICh0aGlzLl9yb290Tm9kZUlEKSB7XG4gICAgdGhpcy5fd3JhcHBlclN0YXRl
LnBlbmRpbmdVcGRhdGUgPSB0cnVlO1xuICB9XG4gIFJlYWN0VXBkYXRlcy5hc2FwKHVwZGF0ZU9w
dGlvbnNJZlBlbmRpbmdVcGRhdGVBbmRNb3VudGVkLCB0aGlzKTtcbiAgcmV0dXJuIHJldHVyblZh
bHVlO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0RE9NU2VsZWN0O1xuXG5cbi8qKioqKioq
KioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0LWRvbS9saWIvUmVh
Y3RET01TZWxlY3QuanNcbiAqKiBtb2R1bGUgaWQgPSA2MlxuICoqIG1vZHVsZSBjaHVua3MgPSAw
XG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxu
ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vu
c2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0Ug
ZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRp
b25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVO
VFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICovXG5cbid1c2Ugc3RyaWN0Jztc
blxudmFyIGVtcHR5Q29tcG9uZW50RmFjdG9yeTtcblxudmFyIFJlYWN0RW1wdHlDb21wb25lbnRJ
bmplY3Rpb24gPSB7XG4gIGluamVjdEVtcHR5Q29tcG9uZW50RmFjdG9yeTogZnVuY3Rpb24gKGZh
Y3RvcnkpIHtcbiAgICBlbXB0eUNvbXBvbmVudEZhY3RvcnkgPSBmYWN0b3J5O1xuICB9XG59O1xu
XG52YXIgUmVhY3RFbXB0eUNvbXBvbmVudCA9IHtcbiAgY3JlYXRlOiBmdW5jdGlvbiAoaW5zdGFu
dGlhdGUpIHtcbiAgICByZXR1cm4gZW1wdHlDb21wb25lbnRGYWN0b3J5KGluc3RhbnRpYXRlKTtc
biAgfVxufTtcblxuUmVhY3RFbXB0eUNvbXBvbmVudC5pbmplY3Rpb24gPSBSZWFjdEVtcHR5Q29t
cG9uZW50SW5qZWN0aW9uO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0RW1wdHlDb21wb25lbnQ7
XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVh
Y3QtZG9tL2xpYi9SZWFjdEVtcHR5Q29tcG9uZW50LmpzXG4gKiogbW9kdWxlIGlkID0gNjNcbiAq
KiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2Vu
dCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBz
b3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQg
aW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291
cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJl
IGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAq
IFxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIFJlYWN0RmVhdHVyZUZsYWdzID0ge1xuICAv
LyBXaGVuIHRydWUsIGNhbGwgY29uc29sZS50aW1lKCkgYmVmb3JlIGFuZCAudGltZUVuZCgpIGFm
dGVyIGVhY2ggdG9wLWxldmVsXG4gIC8vIHJlbmRlciAoYm90aCBpbml0aWFsIHJlbmRlcnMgYW5k
IHVwZGF0ZXMpLiBVc2VmdWwgd2hlbiBsb29raW5nIGF0IHByb2QtbW9kZVxuICAvLyB0aW1lbGlu
ZSBwcm9maWxlcyBpbiBDaHJvbWUsIGZvciBleGFtcGxlLlxuICBsb2dUb3BMZXZlbFJlbmRlcnM6
IGZhbHNlXG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0RmVhdHVyZUZsYWdzO1xuXG5cbi8q
KioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0LWRvbS9s
aWIvUmVhY3RGZWF0dXJlRmxhZ3MuanNcbiAqKiBtb2R1bGUgaWQgPSA2NFxuICoqIG1vZHVsZSBj
aHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50LCBGYWNlYm9v
aywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2Rl
IGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAq
IExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4g
QW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4g
dGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICovXG5cbid1c2Ug
c3RyaWN0JztcblxudmFyIF9wcm9kSW52YXJpYW50ID0gcmVxdWlyZSgnLi9yZWFjdFByb2RJbnZh
cmlhbnQnKTtcblxudmFyIGludmFyaWFudCA9IHJlcXVpcmUoJ2ZianMvbGliL2ludmFyaWFudCcp
O1xuXG52YXIgZ2VuZXJpY0NvbXBvbmVudENsYXNzID0gbnVsbDtcbnZhciB0ZXh0Q29tcG9uZW50
Q2xhc3MgPSBudWxsO1xuXG52YXIgUmVhY3RIb3N0Q29tcG9uZW50SW5qZWN0aW9uID0ge1xuICAv
LyBUaGlzIGFjY2VwdHMgYSBjbGFzcyB0aGF0IHJlY2VpdmVzIHRoZSB0YWcgc3RyaW5nLiBUaGlz
IGlzIGEgY2F0Y2ggYWxsXG4gIC8vIHRoYXQgY2FuIHJlbmRlciBhbnkga2luZCBvZiB0YWcuXG4g
IGluamVjdEdlbmVyaWNDb21wb25lbnRDbGFzczogZnVuY3Rpb24gKGNvbXBvbmVudENsYXNzKSB7
XG4gICAgZ2VuZXJpY0NvbXBvbmVudENsYXNzID0gY29tcG9uZW50Q2xhc3M7XG4gIH0sXG4gIC8v
IFRoaXMgYWNjZXB0cyBhIHRleHQgY29tcG9uZW50IGNsYXNzIHRoYXQgdGFrZXMgdGhlIHRleHQg
c3RyaW5nIHRvIGJlXG4gIC8vIHJlbmRlcmVkIGFzIHByb3BzLlxuICBpbmplY3RUZXh0Q29tcG9u
ZW50Q2xhc3M6IGZ1bmN0aW9uIChjb21wb25lbnRDbGFzcykge1xuICAgIHRleHRDb21wb25lbnRD
bGFzcyA9IGNvbXBvbmVudENsYXNzO1xuICB9XG59O1xuXG4vKipcbiAqIEdldCBhIGhvc3QgaW50
ZXJuYWwgY29tcG9uZW50IGNsYXNzIGZvciBhIHNwZWNpZmljIHRhZy5cbiAqXG4gKiBAcGFyYW0g
e1JlYWN0RWxlbWVudH0gZWxlbWVudCBUaGUgZWxlbWVudCB0byBjcmVhdGUuXG4gKiBAcmV0dXJu
IHtmdW5jdGlvbn0gVGhlIGludGVybmFsIGNsYXNzIGNvbnN0cnVjdG9yIGZ1bmN0aW9uLlxuICov
XG5mdW5jdGlvbiBjcmVhdGVJbnRlcm5hbENvbXBvbmVudChlbGVtZW50KSB7XG4gICFnZW5lcmlj
Q29tcG9uZW50Q2xhc3MgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8g
aW52YXJpYW50KGZhbHNlLCAnVGhlcmUgaXMgbm8gcmVnaXN0ZXJlZCBjb21wb25lbnQgZm9yIHRo
ZSB0YWcgJXMnLCBlbGVtZW50LnR5cGUpIDogX3Byb2RJbnZhcmlhbnQoJzExMScsIGVsZW1lbnQu
dHlwZSkgOiB2b2lkIDA7XG4gIHJldHVybiBuZXcgZ2VuZXJpY0NvbXBvbmVudENsYXNzKGVsZW1l
bnQpO1xufVxuXG4vKipcbiAqIEBwYXJhbSB7UmVhY3RUZXh0fSB0ZXh0XG4gKiBAcmV0dXJuIHtS
ZWFjdENvbXBvbmVudH1cbiAqL1xuZnVuY3Rpb24gY3JlYXRlSW5zdGFuY2VGb3JUZXh0KHRleHQp
IHtcbiAgcmV0dXJuIG5ldyB0ZXh0Q29tcG9uZW50Q2xhc3ModGV4dCk7XG59XG5cbi8qKlxuICog
QHBhcmFtIHtSZWFjdENvbXBvbmVudH0gY29tcG9uZW50XG4gKiBAcmV0dXJuIHtib29sZWFufVxu
ICovXG5mdW5jdGlvbiBpc1RleHRDb21wb25lbnQoY29tcG9uZW50KSB7XG4gIHJldHVybiBjb21w
b25lbnQgaW5zdGFuY2VvZiB0ZXh0Q29tcG9uZW50Q2xhc3M7XG59XG5cbnZhciBSZWFjdEhvc3RD
b21wb25lbnQgPSB7XG4gIGNyZWF0ZUludGVybmFsQ29tcG9uZW50OiBjcmVhdGVJbnRlcm5hbENv
bXBvbmVudCxcbiAgY3JlYXRlSW5zdGFuY2VGb3JUZXh0OiBjcmVhdGVJbnN0YW5jZUZvclRleHQs
XG4gIGlzVGV4dENvbXBvbmVudDogaXNUZXh0Q29tcG9uZW50LFxuICBpbmplY3Rpb246IFJlYWN0
SG9zdENvbXBvbmVudEluamVjdGlvblxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdEhvc3RD
b21wb25lbnQ7XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAq
KiAuL34vcmVhY3QtZG9tL2xpYi9SZWFjdEhvc3RDb21wb25lbnQuanNcbiAqKiBtb2R1bGUgaWQg
PSA2NVxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAx
My1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4g
KiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5z
ZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2Yg
dGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0
cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3Rvcnku
XG4gKlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIFJlYWN0RE9NU2VsZWN0aW9uID0gcmVx
dWlyZSgnLi9SZWFjdERPTVNlbGVjdGlvbicpO1xuXG52YXIgY29udGFpbnNOb2RlID0gcmVxdWly
ZSgnZmJqcy9saWIvY29udGFpbnNOb2RlJyk7XG52YXIgZm9jdXNOb2RlID0gcmVxdWlyZSgnZmJq
cy9saWIvZm9jdXNOb2RlJyk7XG52YXIgZ2V0QWN0aXZlRWxlbWVudCA9IHJlcXVpcmUoJ2ZianMv
bGliL2dldEFjdGl2ZUVsZW1lbnQnKTtcblxuZnVuY3Rpb24gaXNJbkRvY3VtZW50KG5vZGUpIHtc
biAgcmV0dXJuIGNvbnRhaW5zTm9kZShkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsIG5vZGUpO1xu
fVxuXG4vKipcbiAqIEBSZWFjdElucHV0U2VsZWN0aW9uOiBSZWFjdCBpbnB1dCBzZWxlY3Rpb24g
bW9kdWxlLiBCYXNlZCBvbiBTZWxlY3Rpb24uanMsXG4gKiBidXQgbW9kaWZpZWQgdG8gYmUgc3Vp
dGFibGUgZm9yIHJlYWN0IGFuZCBoYXMgYSBjb3VwbGUgb2YgYnVnIGZpeGVzIChkb2Vzbid0XG4g
KiBhc3N1bWUgYnV0dG9ucyBoYXZlIHJhbmdlIHNlbGVjdGlvbnMgYWxsb3dlZCkuXG4gKiBJbnB1
dCBzZWxlY3Rpb24gbW9kdWxlIGZvciBSZWFjdC5cbiAqL1xudmFyIFJlYWN0SW5wdXRTZWxlY3Rp
b24gPSB7XG4gIGhhc1NlbGVjdGlvbkNhcGFiaWxpdGllczogZnVuY3Rpb24gKGVsZW0pIHtcbiAg
ICB2YXIgbm9kZU5hbWUgPSBlbGVtICYmIGVsZW0ubm9kZU5hbWUgJiYgZWxlbS5ub2RlTmFtZS50
b0xvd2VyQ2FzZSgpO1xuICAgIHJldHVybiBub2RlTmFtZSAmJiAobm9kZU5hbWUgPT09ICdpbnB1
dCcgJiYgZWxlbS50eXBlID09PSAndGV4dCcgfHwgbm9kZU5hbWUgPT09ICd0ZXh0YXJlYScgfHwg
ZWxlbS5jb250ZW50RWRpdGFibGUgPT09ICd0cnVlJyk7XG4gIH0sXG5cbiAgZ2V0U2VsZWN0aW9u
SW5mb3JtYXRpb246IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgZm9jdXNlZEVsZW0gPSBnZXRBY3Rp
dmVFbGVtZW50KCk7XG4gICAgcmV0dXJuIHtcbiAgICAgIGZvY3VzZWRFbGVtOiBmb2N1c2VkRWxl
bSxcbiAgICAgIHNlbGVjdGlvblJhbmdlOiBSZWFjdElucHV0U2VsZWN0aW9uLmhhc1NlbGVjdGlv
bkNhcGFiaWxpdGllcyhmb2N1c2VkRWxlbSkgPyBSZWFjdElucHV0U2VsZWN0aW9uLmdldFNlbGVj
dGlvbihmb2N1c2VkRWxlbSkgOiBudWxsXG4gICAgfTtcbiAgfSxcblxuICAvKipcbiAgICogQHJl
c3RvcmVTZWxlY3Rpb246IElmIGFueSBzZWxlY3Rpb24gaW5mb3JtYXRpb24gd2FzIHBvdGVudGlh
bGx5IGxvc3QsXG4gICAqIHJlc3RvcmUgaXQuIFRoaXMgaXMgdXNlZnVsIHdoZW4gcGVyZm9ybWlu
ZyBvcGVyYXRpb25zIHRoYXQgY291bGQgcmVtb3ZlIGRvbVxuICAgKiBub2RlcyBhbmQgcGxhY2Ug
dGhlbSBiYWNrIGluLCByZXN1bHRpbmcgaW4gZm9jdXMgYmVpbmcgbG9zdC5cbiAgICovXG4gIHJl
c3RvcmVTZWxlY3Rpb246IGZ1bmN0aW9uIChwcmlvclNlbGVjdGlvbkluZm9ybWF0aW9uKSB7XG4g
ICAgdmFyIGN1ckZvY3VzZWRFbGVtID0gZ2V0QWN0aXZlRWxlbWVudCgpO1xuICAgIHZhciBwcmlv
ckZvY3VzZWRFbGVtID0gcHJpb3JTZWxlY3Rpb25JbmZvcm1hdGlvbi5mb2N1c2VkRWxlbTtcbiAg
ICB2YXIgcHJpb3JTZWxlY3Rpb25SYW5nZSA9IHByaW9yU2VsZWN0aW9uSW5mb3JtYXRpb24uc2Vs
ZWN0aW9uUmFuZ2U7XG4gICAgaWYgKGN1ckZvY3VzZWRFbGVtICE9PSBwcmlvckZvY3VzZWRFbGVt
ICYmIGlzSW5Eb2N1bWVudChwcmlvckZvY3VzZWRFbGVtKSkge1xuICAgICAgaWYgKFJlYWN0SW5w
dXRTZWxlY3Rpb24uaGFzU2VsZWN0aW9uQ2FwYWJpbGl0aWVzKHByaW9yRm9jdXNlZEVsZW0pKSB7
XG4gICAgICAgIFJlYWN0SW5wdXRTZWxlY3Rpb24uc2V0U2VsZWN0aW9uKHByaW9yRm9jdXNlZEVs
ZW0sIHByaW9yU2VsZWN0aW9uUmFuZ2UpO1xuICAgICAgfVxuICAgICAgZm9jdXNOb2RlKHByaW9y
Rm9jdXNlZEVsZW0pO1xuICAgIH1cbiAgfSxcblxuICAvKipcbiAgICogQGdldFNlbGVjdGlvbjog
R2V0cyB0aGUgc2VsZWN0aW9uIGJvdW5kcyBvZiBhIGZvY3VzZWQgdGV4dGFyZWEsIGlucHV0IG9y
XG4gICAqIGNvbnRlbnRFZGl0YWJsZSBub2RlLlxuICAgKiAtQGlucHV0OiBMb29rIHVwIHNlbGVj
dGlvbiBib3VuZHMgb2YgdGhpcyBpbnB1dFxuICAgKiAtQHJldHVybiB7c3RhcnQ6IHNlbGVjdGlv
blN0YXJ0LCBlbmQ6IHNlbGVjdGlvbkVuZH1cbiAgICovXG4gIGdldFNlbGVjdGlvbjogZnVuY3Rp
b24gKGlucHV0KSB7XG4gICAgdmFyIHNlbGVjdGlvbjtcblxuICAgIGlmICgnc2VsZWN0aW9uU3Rh
cnQnIGluIGlucHV0KSB7XG4gICAgICAvLyBNb2Rlcm4gYnJvd3NlciB3aXRoIGlucHV0IG9yIHRl
eHRhcmVhLlxuICAgICAgc2VsZWN0aW9uID0ge1xuICAgICAgICBzdGFydDogaW5wdXQuc2VsZWN0
aW9uU3RhcnQsXG4gICAgICAgIGVuZDogaW5wdXQuc2VsZWN0aW9uRW5kXG4gICAgICB9O1xuICAg
IH0gZWxzZSBpZiAoZG9jdW1lbnQuc2VsZWN0aW9uICYmIGlucHV0Lm5vZGVOYW1lICYmIGlucHV0
Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09ICdpbnB1dCcpIHtcbiAgICAgIC8vIElFOCBpbnB1
dC5cbiAgICAgIHZhciByYW5nZSA9IGRvY3VtZW50LnNlbGVjdGlvbi5jcmVhdGVSYW5nZSgpO1xu
ICAgICAgLy8gVGhlcmUgY2FuIG9ubHkgYmUgb25lIHNlbGVjdGlvbiBwZXIgZG9jdW1lbnQgaW4g
SUUsIHNvIGl0IG11c3RcbiAgICAgIC8vIGJlIGluIG91ciBlbGVtZW50LlxuICAgICAgaWYgKHJh
bmdlLnBhcmVudEVsZW1lbnQoKSA9PT0gaW5wdXQpIHtcbiAgICAgICAgc2VsZWN0aW9uID0ge1xu
ICAgICAgICAgIHN0YXJ0OiAtcmFuZ2UubW92ZVN0YXJ0KCdjaGFyYWN0ZXInLCAtaW5wdXQudmFs
dWUubGVuZ3RoKSxcbiAgICAgICAgICBlbmQ6IC1yYW5nZS5tb3ZlRW5kKCdjaGFyYWN0ZXInLCAt
aW5wdXQudmFsdWUubGVuZ3RoKVxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4g
ICAgICAvLyBDb250ZW50IGVkaXRhYmxlIG9yIG9sZCBJRSB0ZXh0YXJlYS5cbiAgICAgIHNlbGVj
dGlvbiA9IFJlYWN0RE9NU2VsZWN0aW9uLmdldE9mZnNldHMoaW5wdXQpO1xuICAgIH1cblxuICAg
IHJldHVybiBzZWxlY3Rpb24gfHwgeyBzdGFydDogMCwgZW5kOiAwIH07XG4gIH0sXG5cbiAgLyoq
XG4gICAqIEBzZXRTZWxlY3Rpb246IFNldHMgdGhlIHNlbGVjdGlvbiBib3VuZHMgb2YgYSB0ZXh0
YXJlYSBvciBpbnB1dCBhbmQgZm9jdXNlc1xuICAgKiB0aGUgaW5wdXQuXG4gICAqIC1AaW5wdXQg
ICAgIFNldCBzZWxlY3Rpb24gYm91bmRzIG9mIHRoaXMgaW5wdXQgb3IgdGV4dGFyZWFcbiAgICog
LUBvZmZzZXRzICAgT2JqZWN0IG9mIHNhbWUgZm9ybSB0aGF0IGlzIHJldHVybmVkIGZyb20gZ2V0
KlxuICAgKi9cbiAgc2V0U2VsZWN0aW9uOiBmdW5jdGlvbiAoaW5wdXQsIG9mZnNldHMpIHtcbiAg
ICB2YXIgc3RhcnQgPSBvZmZzZXRzLnN0YXJ0O1xuICAgIHZhciBlbmQgPSBvZmZzZXRzLmVuZDtc
biAgICBpZiAoZW5kID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGVuZCA9IHN0YXJ0O1xuICAgIH1c
blxuICAgIGlmICgnc2VsZWN0aW9uU3RhcnQnIGluIGlucHV0KSB7XG4gICAgICBpbnB1dC5zZWxl
Y3Rpb25TdGFydCA9IHN0YXJ0O1xuICAgICAgaW5wdXQuc2VsZWN0aW9uRW5kID0gTWF0aC5taW4o
ZW5kLCBpbnB1dC52YWx1ZS5sZW5ndGgpO1xuICAgIH0gZWxzZSBpZiAoZG9jdW1lbnQuc2VsZWN0
aW9uICYmIGlucHV0Lm5vZGVOYW1lICYmIGlucHV0Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09
ICdpbnB1dCcpIHtcbiAgICAgIHZhciByYW5nZSA9IGlucHV0LmNyZWF0ZVRleHRSYW5nZSgpO1xu
ICAgICAgcmFuZ2UuY29sbGFwc2UodHJ1ZSk7XG4gICAgICByYW5nZS5tb3ZlU3RhcnQoJ2NoYXJh
Y3RlcicsIHN0YXJ0KTtcbiAgICAgIHJhbmdlLm1vdmVFbmQoJ2NoYXJhY3RlcicsIGVuZCAtIHN0
YXJ0KTtcbiAgICAgIHJhbmdlLnNlbGVjdCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBSZWFjdERP
TVNlbGVjdGlvbi5zZXRPZmZzZXRzKGlucHV0LCBvZmZzZXRzKTtcbiAgICB9XG4gIH1cbn07XG5c
bm1vZHVsZS5leHBvcnRzID0gUmVhY3RJbnB1dFNlbGVjdGlvbjtcblxuXG4vKioqKioqKioqKioq
KioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFjdC1kb20vbGliL1JlYWN0SW5w
dXRTZWxlY3Rpb24uanNcbiAqKiBtb2R1bGUgaWQgPSA2NlxuICoqIG1vZHVsZSBjaHVua3MgPSAw
XG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxu
ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vu
c2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0Ug
ZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRp
b25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVO
VFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICovXG5cbid1c2Ugc3RyaWN0Jztc
blxudmFyIF9wcm9kSW52YXJpYW50ID0gcmVxdWlyZSgnLi9yZWFjdFByb2RJbnZhcmlhbnQnKTtc
blxudmFyIERPTUxhenlUcmVlID0gcmVxdWlyZSgnLi9ET01MYXp5VHJlZScpO1xudmFyIERPTVBy
b3BlcnR5ID0gcmVxdWlyZSgnLi9ET01Qcm9wZXJ0eScpO1xudmFyIFJlYWN0ID0gcmVxdWlyZSgn
cmVhY3QvbGliL1JlYWN0Jyk7XG52YXIgUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyID0gcmVxdWly
ZSgnLi9SZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXInKTtcbnZhciBSZWFjdEN1cnJlbnRPd25lciA9
IHJlcXVpcmUoJ3JlYWN0L2xpYi9SZWFjdEN1cnJlbnRPd25lcicpO1xudmFyIFJlYWN0RE9NQ29t
cG9uZW50VHJlZSA9IHJlcXVpcmUoJy4vUmVhY3RET01Db21wb25lbnRUcmVlJyk7XG52YXIgUmVh
Y3RET01Db250YWluZXJJbmZvID0gcmVxdWlyZSgnLi9SZWFjdERPTUNvbnRhaW5lckluZm8nKTtc
bnZhciBSZWFjdERPTUZlYXR1cmVGbGFncyA9IHJlcXVpcmUoJy4vUmVhY3RET01GZWF0dXJlRmxh
Z3MnKTtcbnZhciBSZWFjdEZlYXR1cmVGbGFncyA9IHJlcXVpcmUoJy4vUmVhY3RGZWF0dXJlRmxh
Z3MnKTtcbnZhciBSZWFjdEluc3RhbmNlTWFwID0gcmVxdWlyZSgnLi9SZWFjdEluc3RhbmNlTWFw
Jyk7XG52YXIgUmVhY3RJbnN0cnVtZW50YXRpb24gPSByZXF1aXJlKCcuL1JlYWN0SW5zdHJ1bWVu
dGF0aW9uJyk7XG52YXIgUmVhY3RNYXJrdXBDaGVja3N1bSA9IHJlcXVpcmUoJy4vUmVhY3RNYXJr
dXBDaGVja3N1bScpO1xudmFyIFJlYWN0UmVjb25jaWxlciA9IHJlcXVpcmUoJy4vUmVhY3RSZWNv
bmNpbGVyJyk7XG52YXIgUmVhY3RVcGRhdGVRdWV1ZSA9IHJlcXVpcmUoJy4vUmVhY3RVcGRhdGVR
dWV1ZScpO1xudmFyIFJlYWN0VXBkYXRlcyA9IHJlcXVpcmUoJy4vUmVhY3RVcGRhdGVzJyk7XG5c
bnZhciBlbXB0eU9iamVjdCA9IHJlcXVpcmUoJ2ZianMvbGliL2VtcHR5T2JqZWN0Jyk7XG52YXIg
aW5zdGFudGlhdGVSZWFjdENvbXBvbmVudCA9IHJlcXVpcmUoJy4vaW5zdGFudGlhdGVSZWFjdENv
bXBvbmVudCcpO1xudmFyIGludmFyaWFudCA9IHJlcXVpcmUoJ2ZianMvbGliL2ludmFyaWFudCcp
O1xudmFyIHNldElubmVySFRNTCA9IHJlcXVpcmUoJy4vc2V0SW5uZXJIVE1MJyk7XG52YXIgc2hv
dWxkVXBkYXRlUmVhY3RDb21wb25lbnQgPSByZXF1aXJlKCcuL3Nob3VsZFVwZGF0ZVJlYWN0Q29t
cG9uZW50Jyk7XG52YXIgd2FybmluZyA9IHJlcXVpcmUoJ2ZianMvbGliL3dhcm5pbmcnKTtcblxu
dmFyIEFUVFJfTkFNRSA9IERPTVByb3BlcnR5LklEX0FUVFJJQlVURV9OQU1FO1xudmFyIFJPT1Rf
QVRUUl9OQU1FID0gRE9NUHJvcGVydHkuUk9PVF9BVFRSSUJVVEVfTkFNRTtcblxudmFyIEVMRU1F
TlRfTk9ERV9UWVBFID0gMTtcbnZhciBET0NfTk9ERV9UWVBFID0gOTtcbnZhciBET0NVTUVOVF9G
UkFHTUVOVF9OT0RFX1RZUEUgPSAxMTtcblxudmFyIGluc3RhbmNlc0J5UmVhY3RSb290SUQgPSB7
fTtcblxuLyoqXG4gKiBGaW5kcyB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IGNoYXJhY3RlclxuICog
dGhhdCdzIG5vdCBjb21tb24gYmV0d2VlbiB0aGUgdHdvIGdpdmVuIHN0cmluZ3MuXG4gKlxuICog
QHJldHVybiB7bnVtYmVyfSB0aGUgaW5kZXggb2YgdGhlIGNoYXJhY3RlciB3aGVyZSB0aGUgc3Ry
aW5ncyBkaXZlcmdlXG4gKi9cbmZ1bmN0aW9uIGZpcnN0RGlmZmVyZW5jZUluZGV4KHN0cmluZzEs
IHN0cmluZzIpIHtcbiAgdmFyIG1pbkxlbiA9IE1hdGgubWluKHN0cmluZzEubGVuZ3RoLCBzdHJp
bmcyLmxlbmd0aCk7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbWluTGVuOyBpKyspIHtcbiAgICBp
ZiAoc3RyaW5nMS5jaGFyQXQoaSkgIT09IHN0cmluZzIuY2hhckF0KGkpKSB7XG4gICAgICByZXR1
cm4gaTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHN0cmluZzEubGVuZ3RoID09PSBzdHJpbmcyLmxl
bmd0aCA/IC0xIDogbWluTGVuO1xufVxuXG4vKipcbiAqIEBwYXJhbSB7RE9NRWxlbWVudHxET01E
b2N1bWVudH0gY29udGFpbmVyIERPTSBlbGVtZW50IHRoYXQgbWF5IGNvbnRhaW5cbiAqIGEgUmVh
Y3QgY29tcG9uZW50XG4gKiBAcmV0dXJuIHs/Kn0gRE9NIGVsZW1lbnQgdGhhdCBtYXkgaGF2ZSB0
aGUgcmVhY3RSb290IElELCBvciBudWxsLlxuICovXG5mdW5jdGlvbiBnZXRSZWFjdFJvb3RFbGVt
ZW50SW5Db250YWluZXIoY29udGFpbmVyKSB7XG4gIGlmICghY29udGFpbmVyKSB7XG4gICAgcmV0
dXJuIG51bGw7XG4gIH1cblxuICBpZiAoY29udGFpbmVyLm5vZGVUeXBlID09PSBET0NfTk9ERV9U
WVBFKSB7XG4gICAgcmV0dXJuIGNvbnRhaW5lci5kb2N1bWVudEVsZW1lbnQ7XG4gIH0gZWxzZSB7
XG4gICAgcmV0dXJuIGNvbnRhaW5lci5maXJzdENoaWxkO1xuICB9XG59XG5cbmZ1bmN0aW9uIGlu
dGVybmFsR2V0SUQobm9kZSkge1xuICAvLyBJZiBub2RlIGlzIHNvbWV0aGluZyBsaWtlIGEgd2lu
ZG93LCBkb2N1bWVudCwgb3IgdGV4dCBub2RlLCBub25lIG9mXG4gIC8vIHdoaWNoIHN1cHBvcnQg
YXR0cmlidXRlcyBvciBhIC5nZXRBdHRyaWJ1dGUgbWV0aG9kLCBncmFjZWZ1bGx5IHJldHVyblxu
ICAvLyB0aGUgZW1wdHkgc3RyaW5nLCBhcyBpZiB0aGUgYXR0cmlidXRlIHdlcmUgbWlzc2luZy5c
biAgcmV0dXJuIG5vZGUuZ2V0QXR0cmlidXRlICYmIG5vZGUuZ2V0QXR0cmlidXRlKEFUVFJfTkFN
RSkgfHwgJyc7XG59XG5cbi8qKlxuICogTW91bnRzIHRoaXMgY29tcG9uZW50IGFuZCBpbnNlcnRz
IGl0IGludG8gdGhlIERPTS5cbiAqXG4gKiBAcGFyYW0ge1JlYWN0Q29tcG9uZW50fSBjb21wb25l
bnRJbnN0YW5jZSBUaGUgaW5zdGFuY2UgdG8gbW91bnQuXG4gKiBAcGFyYW0ge0RPTUVsZW1lbnR9
IGNvbnRhaW5lciBET00gZWxlbWVudCB0byBtb3VudCBpbnRvLlxuICogQHBhcmFtIHtSZWFjdFJl
Y29uY2lsZVRyYW5zYWN0aW9ufSB0cmFuc2FjdGlvblxuICogQHBhcmFtIHtib29sZWFufSBzaG91
bGRSZXVzZU1hcmt1cCBJZiB0cnVlLCBkbyBub3QgaW5zZXJ0IG1hcmt1cFxuICovXG5mdW5jdGlv
biBtb3VudENvbXBvbmVudEludG9Ob2RlKHdyYXBwZXJJbnN0YW5jZSwgY29udGFpbmVyLCB0cmFu
c2FjdGlvbiwgc2hvdWxkUmV1c2VNYXJrdXAsIGNvbnRleHQpIHtcbiAgdmFyIG1hcmtlck5hbWU7
XG4gIGlmIChSZWFjdEZlYXR1cmVGbGFncy5sb2dUb3BMZXZlbFJlbmRlcnMpIHtcbiAgICB2YXIg
d3JhcHBlZEVsZW1lbnQgPSB3cmFwcGVySW5zdGFuY2UuX2N1cnJlbnRFbGVtZW50LnByb3BzLmNo
aWxkO1xuICAgIHZhciB0eXBlID0gd3JhcHBlZEVsZW1lbnQudHlwZTtcbiAgICBtYXJrZXJOYW1l
ID0gJ1JlYWN0IG1vdW50OiAnICsgKHR5cGVvZiB0eXBlID09PSAnc3RyaW5nJyA/IHR5cGUgOiB0
eXBlLmRpc3BsYXlOYW1lIHx8IHR5cGUubmFtZSk7XG4gICAgY29uc29sZS50aW1lKG1hcmtlck5h
bWUpO1xuICB9XG5cbiAgdmFyIG1hcmt1cCA9IFJlYWN0UmVjb25jaWxlci5tb3VudENvbXBvbmVu
dCh3cmFwcGVySW5zdGFuY2UsIHRyYW5zYWN0aW9uLCBudWxsLCBSZWFjdERPTUNvbnRhaW5lcklu
Zm8od3JhcHBlckluc3RhbmNlLCBjb250YWluZXIpLCBjb250ZXh0LCAwIC8qIHBhcmVudERlYnVn
SUQgKi9cbiAgKTtcblxuICBpZiAobWFya2VyTmFtZSkge1xuICAgIGNvbnNvbGUudGltZUVuZCht
YXJrZXJOYW1lKTtcbiAgfVxuXG4gIHdyYXBwZXJJbnN0YW5jZS5fcmVuZGVyZWRDb21wb25lbnQu
X3RvcExldmVsV3JhcHBlciA9IHdyYXBwZXJJbnN0YW5jZTtcbiAgUmVhY3RNb3VudC5fbW91bnRJ
bWFnZUludG9Ob2RlKG1hcmt1cCwgY29udGFpbmVyLCB3cmFwcGVySW5zdGFuY2UsIHNob3VsZFJl
dXNlTWFya3VwLCB0cmFuc2FjdGlvbik7XG59XG5cbi8qKlxuICogQmF0Y2hlZCBtb3VudC5cbiAq
XG4gKiBAcGFyYW0ge1JlYWN0Q29tcG9uZW50fSBjb21wb25lbnRJbnN0YW5jZSBUaGUgaW5zdGFu
Y2UgdG8gbW91bnQuXG4gKiBAcGFyYW0ge0RPTUVsZW1lbnR9IGNvbnRhaW5lciBET00gZWxlbWVu
dCB0byBtb3VudCBpbnRvLlxuICogQHBhcmFtIHtib29sZWFufSBzaG91bGRSZXVzZU1hcmt1cCBJ
ZiB0cnVlLCBkbyBub3QgaW5zZXJ0IG1hcmt1cFxuICovXG5mdW5jdGlvbiBiYXRjaGVkTW91bnRD
b21wb25lbnRJbnRvTm9kZShjb21wb25lbnRJbnN0YW5jZSwgY29udGFpbmVyLCBzaG91bGRSZXVz
ZU1hcmt1cCwgY29udGV4dCkge1xuICB2YXIgdHJhbnNhY3Rpb24gPSBSZWFjdFVwZGF0ZXMuUmVh
Y3RSZWNvbmNpbGVUcmFuc2FjdGlvbi5nZXRQb29sZWQoXG4gIC8qIHVzZUNyZWF0ZUVsZW1lbnQg
Ki9cbiAgIXNob3VsZFJldXNlTWFya3VwICYmIFJlYWN0RE9NRmVhdHVyZUZsYWdzLnVzZUNyZWF0
ZUVsZW1lbnQpO1xuICB0cmFuc2FjdGlvbi5wZXJmb3JtKG1vdW50Q29tcG9uZW50SW50b05vZGUs
IG51bGwsIGNvbXBvbmVudEluc3RhbmNlLCBjb250YWluZXIsIHRyYW5zYWN0aW9uLCBzaG91bGRS
ZXVzZU1hcmt1cCwgY29udGV4dCk7XG4gIFJlYWN0VXBkYXRlcy5SZWFjdFJlY29uY2lsZVRyYW5z
YWN0aW9uLnJlbGVhc2UodHJhbnNhY3Rpb24pO1xufVxuXG4vKipcbiAqIFVubW91bnRzIGEgY29t
cG9uZW50IGFuZCByZW1vdmVzIGl0IGZyb20gdGhlIERPTS5cbiAqXG4gKiBAcGFyYW0ge1JlYWN0
Q29tcG9uZW50fSBpbnN0YW5jZSBSZWFjdCBjb21wb25lbnQgaW5zdGFuY2UuXG4gKiBAcGFyYW0g
e0RPTUVsZW1lbnR9IGNvbnRhaW5lciBET00gZWxlbWVudCB0byB1bm1vdW50IGZyb20uXG4gKiBA
ZmluYWxcbiAqIEBpbnRlcm5hbFxuICogQHNlZSB7UmVhY3RNb3VudC51bm1vdW50Q29tcG9uZW50
QXROb2RlfVxuICovXG5mdW5jdGlvbiB1bm1vdW50Q29tcG9uZW50RnJvbU5vZGUoaW5zdGFuY2Us
IGNvbnRhaW5lciwgc2FmZWx5KSB7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3By
b2R1Y3Rpb24nKSB7XG4gICAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9uQmVnaW5G
bHVzaCgpO1xuICB9XG4gIFJlYWN0UmVjb25jaWxlci51bm1vdW50Q29tcG9uZW50KGluc3RhbmNl
LCBzYWZlbHkpO1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykg
e1xuICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vbkVuZEZsdXNoKCk7XG4gIH1c
blxuICBpZiAoY29udGFpbmVyLm5vZGVUeXBlID09PSBET0NfTk9ERV9UWVBFKSB7XG4gICAgY29u
dGFpbmVyID0gY29udGFpbmVyLmRvY3VtZW50RWxlbWVudDtcbiAgfVxuXG4gIC8vIGh0dHA6Ly9q
c3BlcmYuY29tL2VtcHR5aW5nLWEtbm9kZVxuICB3aGlsZSAoY29udGFpbmVyLmxhc3RDaGlsZCkg
e1xuICAgIGNvbnRhaW5lci5yZW1vdmVDaGlsZChjb250YWluZXIubGFzdENoaWxkKTtcbiAgfVxu
fVxuXG4vKipcbiAqIFRydWUgaWYgdGhlIHN1cHBsaWVkIERPTSBub2RlIGhhcyBhIGRpcmVjdCBS
ZWFjdC1yZW5kZXJlZCBjaGlsZCB0aGF0IGlzXG4gKiBub3QgYSBSZWFjdCByb290IGVsZW1lbnQu
IFVzZWZ1bCBmb3Igd2FybmluZyBpbiBgcmVuZGVyYCxcbiAqIGB1bm1vdW50Q29tcG9uZW50QXRO
b2RlYCwgZXRjLlxuICpcbiAqIEBwYXJhbSB7P0RPTUVsZW1lbnR9IG5vZGUgVGhlIGNhbmRpZGF0
ZSBET00gbm9kZS5cbiAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUgaWYgdGhlIERPTSBlbGVtZW50
IGNvbnRhaW5zIGEgZGlyZWN0IGNoaWxkIHRoYXQgd2FzXG4gKiByZW5kZXJlZCBieSBSZWFjdCBi
dXQgaXMgbm90IGEgcm9vdCBlbGVtZW50LlxuICogQGludGVybmFsXG4gKi9cbmZ1bmN0aW9uIGhh
c05vblJvb3RSZWFjdENoaWxkKGNvbnRhaW5lcikge1xuICB2YXIgcm9vdEVsID0gZ2V0UmVhY3RS
b290RWxlbWVudEluQ29udGFpbmVyKGNvbnRhaW5lcik7XG4gIGlmIChyb290RWwpIHtcbiAgICB2
YXIgaW5zdCA9IFJlYWN0RE9NQ29tcG9uZW50VHJlZS5nZXRJbnN0YW5jZUZyb21Ob2RlKHJvb3RF
bCk7XG4gICAgcmV0dXJuICEhKGluc3QgJiYgaW5zdC5faG9zdFBhcmVudCk7XG4gIH1cbn1cblxu
LyoqXG4gKiBUcnVlIGlmIHRoZSBzdXBwbGllZCBET00gbm9kZSBpcyBhIFJlYWN0IERPTSBlbGVt
ZW50IGFuZFxuICogaXQgaGFzIGJlZW4gcmVuZGVyZWQgYnkgYW5vdGhlciBjb3B5IG9mIFJlYWN0
LlxuICpcbiAqIEBwYXJhbSB7P0RPTUVsZW1lbnR9IG5vZGUgVGhlIGNhbmRpZGF0ZSBET00gbm9k
ZS5cbiAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUgaWYgdGhlIERPTSBoYXMgYmVlbiByZW5kZXJl
ZCBieSBhbm90aGVyIGNvcHkgb2YgUmVhY3RcbiAqIEBpbnRlcm5hbFxuICovXG5mdW5jdGlvbiBu
b2RlSXNSZW5kZXJlZEJ5T3RoZXJJbnN0YW5jZShjb250YWluZXIpIHtcbiAgdmFyIHJvb3RFbCA9
IGdldFJlYWN0Um9vdEVsZW1lbnRJbkNvbnRhaW5lcihjb250YWluZXIpO1xuICByZXR1cm4gISEo
cm9vdEVsICYmIGlzUmVhY3ROb2RlKHJvb3RFbCkgJiYgIVJlYWN0RE9NQ29tcG9uZW50VHJlZS5n
ZXRJbnN0YW5jZUZyb21Ob2RlKHJvb3RFbCkpO1xufVxuXG4vKipcbiAqIFRydWUgaWYgdGhlIHN1
cHBsaWVkIERPTSBub2RlIGlzIGEgdmFsaWQgbm9kZSBlbGVtZW50LlxuICpcbiAqIEBwYXJhbSB7
P0RPTUVsZW1lbnR9IG5vZGUgVGhlIGNhbmRpZGF0ZSBET00gbm9kZS5cbiAqIEByZXR1cm4ge2Jv
b2xlYW59IFRydWUgaWYgdGhlIERPTSBpcyBhIHZhbGlkIERPTSBub2RlLlxuICogQGludGVybmFs
XG4gKi9cbmZ1bmN0aW9uIGlzVmFsaWRDb250YWluZXIobm9kZSkge1xuICByZXR1cm4gISEobm9k
ZSAmJiAobm9kZS5ub2RlVHlwZSA9PT0gRUxFTUVOVF9OT0RFX1RZUEUgfHwgbm9kZS5ub2RlVHlw
ZSA9PT0gRE9DX05PREVfVFlQRSB8fCBub2RlLm5vZGVUeXBlID09PSBET0NVTUVOVF9GUkFHTUVO
VF9OT0RFX1RZUEUpKTtcbn1cblxuLyoqXG4gKiBUcnVlIGlmIHRoZSBzdXBwbGllZCBET00gbm9k
ZSBpcyBhIHZhbGlkIFJlYWN0IG5vZGUgZWxlbWVudC5cbiAqXG4gKiBAcGFyYW0gez9ET01FbGVt
ZW50fSBub2RlIFRoZSBjYW5kaWRhdGUgRE9NIG5vZGUuXG4gKiBAcmV0dXJuIHtib29sZWFufSBU
cnVlIGlmIHRoZSBET00gaXMgYSB2YWxpZCBSZWFjdCBET00gbm9kZS5cbiAqIEBpbnRlcm5hbFxu
ICovXG5mdW5jdGlvbiBpc1JlYWN0Tm9kZShub2RlKSB7XG4gIHJldHVybiBpc1ZhbGlkQ29udGFp
bmVyKG5vZGUpICYmIChub2RlLmhhc0F0dHJpYnV0ZShST09UX0FUVFJfTkFNRSkgfHwgbm9kZS5o
YXNBdHRyaWJ1dGUoQVRUUl9OQU1FKSk7XG59XG5cbmZ1bmN0aW9uIGdldEhvc3RSb290SW5zdGFu
Y2VJbkNvbnRhaW5lcihjb250YWluZXIpIHtcbiAgdmFyIHJvb3RFbCA9IGdldFJlYWN0Um9vdEVs
ZW1lbnRJbkNvbnRhaW5lcihjb250YWluZXIpO1xuICB2YXIgcHJldkhvc3RJbnN0YW5jZSA9IHJv
b3RFbCAmJiBSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0SW5zdGFuY2VGcm9tTm9kZShyb290RWwp
O1xuICByZXR1cm4gcHJldkhvc3RJbnN0YW5jZSAmJiAhcHJldkhvc3RJbnN0YW5jZS5faG9zdFBh
cmVudCA/IHByZXZIb3N0SW5zdGFuY2UgOiBudWxsO1xufVxuXG5mdW5jdGlvbiBnZXRUb3BMZXZl
bFdyYXBwZXJJbkNvbnRhaW5lcihjb250YWluZXIpIHtcbiAgdmFyIHJvb3QgPSBnZXRIb3N0Um9v
dEluc3RhbmNlSW5Db250YWluZXIoY29udGFpbmVyKTtcbiAgcmV0dXJuIHJvb3QgPyByb290Ll9o
b3N0Q29udGFpbmVySW5mby5fdG9wTGV2ZWxXcmFwcGVyIDogbnVsbDtcbn1cblxuLyoqXG4gKiBU
ZW1wb3JhcnkgKD8pIGhhY2sgc28gdGhhdCB3ZSBjYW4gc3RvcmUgYWxsIHRvcC1sZXZlbCBwZW5k
aW5nIHVwZGF0ZXMgb25cbiAqIGNvbXBvc2l0ZXMgaW5zdGVhZCBvZiBoYXZpbmcgdG8gd29ycnkg
YWJvdXQgZGlmZmVyZW50IHR5cGVzIG9mIGNvbXBvbmVudHNcbiAqIGhlcmUuXG4gKi9cbnZhciB0
b3BMZXZlbFJvb3RDb3VudGVyID0gMTtcbnZhciBUb3BMZXZlbFdyYXBwZXIgPSBmdW5jdGlvbiAo
KSB7XG4gIHRoaXMucm9vdElEID0gdG9wTGV2ZWxSb290Q291bnRlcisrO1xufTtcblRvcExldmVs
V3JhcHBlci5wcm90b3R5cGUuaXNSZWFjdENvbXBvbmVudCA9IHt9O1xuaWYgKHByb2Nlc3MuZW52
Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgVG9wTGV2ZWxXcmFwcGVyLmRpc3BsYXlO
YW1lID0gJ1RvcExldmVsV3JhcHBlcic7XG59XG5Ub3BMZXZlbFdyYXBwZXIucHJvdG90eXBlLnJl
bmRlciA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMucHJvcHMuY2hpbGQ7XG59O1xuVG9w
TGV2ZWxXcmFwcGVyLmlzUmVhY3RUb3BMZXZlbFdyYXBwZXIgPSB0cnVlO1xuXG4vKipcbiAqIE1v
dW50aW5nIGlzIHRoZSBwcm9jZXNzIG9mIGluaXRpYWxpemluZyBhIFJlYWN0IGNvbXBvbmVudCBi
eSBjcmVhdGluZyBpdHNcbiAqIHJlcHJlc2VudGF0aXZlIERPTSBlbGVtZW50cyBhbmQgaW5zZXJ0
aW5nIHRoZW0gaW50byBhIHN1cHBsaWVkIGBjb250YWluZXJgLlxuICogQW55IHByaW9yIGNvbnRl
bnQgaW5zaWRlIGBjb250YWluZXJgIGlzIGRlc3Ryb3llZCBpbiB0aGUgcHJvY2Vzcy5cbiAqXG4g
KiAgIFJlYWN0TW91bnQucmVuZGVyKFxuICogICAgIGNvbXBvbmVudCxcbiAqICAgICBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnY29udGFpbmVyJylcbiAqICAgKTtcbiAqXG4gKiAgIDxkaXYgaWQ9
XCJjb250YWluZXJcIj4gICAgICAgICAgICAgICAgICAgPC0tIFN1cHBsaWVkIGBjb250YWluZXJg
LlxuICogICAgIDxkaXYgZGF0YS1yZWFjdGlkPVwiLjNcIj4gICAgICAgICAgICAgIDwtLSBSZW5k
ZXJlZCByZWFjdFJvb3Qgb2YgUmVhY3RcbiAqICAgICAgIC8vIC4uLiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbXBvbmVudC5cbiAqICAgICA8L2Rpdj5cbiAqICAgPC9kaXY+XG4g
KlxuICogSW5zaWRlIG9mIGBjb250YWluZXJgLCB0aGUgZmlyc3QgZWxlbWVudCByZW5kZXJlZCBp
cyB0aGUgXCJyZWFjdFJvb3RcIi5cbiAqL1xudmFyIFJlYWN0TW91bnQgPSB7XG4gIFRvcExldmVs
V3JhcHBlcjogVG9wTGV2ZWxXcmFwcGVyLFxuXG4gIC8qKlxuICAgKiBVc2VkIGJ5IGRldnRvb2xz
LiBUaGUga2V5cyBhcmUgbm90IGltcG9ydGFudC5cbiAgICovXG4gIF9pbnN0YW5jZXNCeVJlYWN0
Um9vdElEOiBpbnN0YW5jZXNCeVJlYWN0Um9vdElELFxuXG4gIC8qKlxuICAgKiBUaGlzIGlzIGEg
aG9vayBwcm92aWRlZCB0byBzdXBwb3J0IHJlbmRlcmluZyBSZWFjdCBjb21wb25lbnRzIHdoaWxl
XG4gICAqIGVuc3VyaW5nIHRoYXQgdGhlIGFwcGFyZW50IHNjcm9sbCBwb3NpdGlvbiBvZiBpdHMg
YGNvbnRhaW5lcmAgZG9lcyBub3RcbiAgICogY2hhbmdlLlxuICAgKlxuICAgKiBAcGFyYW0ge0RP
TUVsZW1lbnR9IGNvbnRhaW5lciBUaGUgYGNvbnRhaW5lcmAgYmVpbmcgcmVuZGVyZWQgaW50by5c
biAgICogQHBhcmFtIHtmdW5jdGlvbn0gcmVuZGVyQ2FsbGJhY2sgVGhpcyBtdXN0IGJlIGNhbGxl
ZCBvbmNlIHRvIGRvIHRoZSByZW5kZXIuXG4gICAqL1xuICBzY3JvbGxNb25pdG9yOiBmdW5jdGlv
biAoY29udGFpbmVyLCByZW5kZXJDYWxsYmFjaykge1xuICAgIHJlbmRlckNhbGxiYWNrKCk7XG4g
IH0sXG5cbiAgLyoqXG4gICAqIFRha2UgYSBjb21wb25lbnQgdGhhdCdzIGFscmVhZHkgbW91bnRl
ZCBpbnRvIHRoZSBET00gYW5kIHJlcGxhY2UgaXRzIHByb3BzXG4gICAqIEBwYXJhbSB7UmVhY3RD
b21wb25lbnR9IHByZXZDb21wb25lbnQgY29tcG9uZW50IGluc3RhbmNlIGFscmVhZHkgaW4gdGhl
IERPTVxuICAgKiBAcGFyYW0ge1JlYWN0RWxlbWVudH0gbmV4dEVsZW1lbnQgY29tcG9uZW50IGlu
c3RhbmNlIHRvIHJlbmRlclxuICAgKiBAcGFyYW0ge0RPTUVsZW1lbnR9IGNvbnRhaW5lciBjb250
YWluZXIgdG8gcmVuZGVyIGludG9cbiAgICogQHBhcmFtIHs/ZnVuY3Rpb259IGNhbGxiYWNrIGZ1
bmN0aW9uIHRyaWdnZXJlZCBvbiBjb21wbGV0aW9uXG4gICAqL1xuICBfdXBkYXRlUm9vdENvbXBv
bmVudDogZnVuY3Rpb24gKHByZXZDb21wb25lbnQsIG5leHRFbGVtZW50LCBuZXh0Q29udGV4dCwg
Y29udGFpbmVyLCBjYWxsYmFjaykge1xuICAgIFJlYWN0TW91bnQuc2Nyb2xsTW9uaXRvcihjb250
YWluZXIsIGZ1bmN0aW9uICgpIHtcbiAgICAgIFJlYWN0VXBkYXRlUXVldWUuZW5xdWV1ZUVsZW1l
bnRJbnRlcm5hbChwcmV2Q29tcG9uZW50LCBuZXh0RWxlbWVudCwgbmV4dENvbnRleHQpO1xuICAg
ICAgaWYgKGNhbGxiYWNrKSB7XG4gICAgICAgIFJlYWN0VXBkYXRlUXVldWUuZW5xdWV1ZUNhbGxi
YWNrSW50ZXJuYWwocHJldkNvbXBvbmVudCwgY2FsbGJhY2spO1xuICAgICAgfVxuICAgIH0pO1xu
XG4gICAgcmV0dXJuIHByZXZDb21wb25lbnQ7XG4gIH0sXG5cbiAgLyoqXG4gICAqIFJlbmRlciBh
IG5ldyBjb21wb25lbnQgaW50byB0aGUgRE9NLiBIb29rZWQgYnkgaG9va3MhXG4gICAqXG4gICAq
IEBwYXJhbSB7UmVhY3RFbGVtZW50fSBuZXh0RWxlbWVudCBlbGVtZW50IHRvIHJlbmRlclxuICAg
KiBAcGFyYW0ge0RPTUVsZW1lbnR9IGNvbnRhaW5lciBjb250YWluZXIgdG8gcmVuZGVyIGludG9c
biAgICogQHBhcmFtIHtib29sZWFufSBzaG91bGRSZXVzZU1hcmt1cCBpZiB3ZSBzaG91bGQgc2tp
cCB0aGUgbWFya3VwIGluc2VydGlvblxuICAgKiBAcmV0dXJuIHtSZWFjdENvbXBvbmVudH0gbmV4
dENvbXBvbmVudFxuICAgKi9cbiAgX3JlbmRlck5ld1Jvb3RDb21wb25lbnQ6IGZ1bmN0aW9uIChu
ZXh0RWxlbWVudCwgY29udGFpbmVyLCBzaG91bGRSZXVzZU1hcmt1cCwgY29udGV4dCkge1xuICAg
IC8vIFZhcmlvdXMgcGFydHMgb2Ygb3VyIGNvZGUgKHN1Y2ggYXMgUmVhY3RDb21wb3NpdGVDb21w
b25lbnQnc1xuICAgIC8vIF9yZW5kZXJWYWxpZGF0ZWRDb21wb25lbnQpIGFzc3VtZSB0aGF0IGNh
bGxzIHRvIHJlbmRlciBhcmVuJ3QgbmVzdGVkO1xuICAgIC8vIHZlcmlmeSB0aGF0IHRoYXQncyB0
aGUgY2FzZS5cbiAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2Fy
bmluZyhSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50ID09IG51bGwsICdfcmVuZGVyTmV3Um9vdENv
bXBvbmVudCgpOiBSZW5kZXIgbWV0aG9kcyBzaG91bGQgYmUgYSBwdXJlIGZ1bmN0aW9uICcgKyAn
b2YgcHJvcHMgYW5kIHN0YXRlOyB0cmlnZ2VyaW5nIG5lc3RlZCBjb21wb25lbnQgdXBkYXRlcyBm
cm9tICcgKyAncmVuZGVyIGlzIG5vdCBhbGxvd2VkLiBJZiBuZWNlc3NhcnksIHRyaWdnZXIgbmVz
dGVkIHVwZGF0ZXMgaW4gJyArICdjb21wb25lbnREaWRVcGRhdGUuIENoZWNrIHRoZSByZW5kZXIg
bWV0aG9kIG9mICVzLicsIFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQgJiYgUmVhY3RDdXJyZW50
T3duZXIuY3VycmVudC5nZXROYW1lKCkgfHwgJ1JlYWN0Q29tcG9zaXRlQ29tcG9uZW50JykgOiB2
b2lkIDA7XG5cbiAgICAhaXNWYWxpZENvbnRhaW5lcihjb250YWluZXIpID8gcHJvY2Vzcy5lbnYu
Tk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ19yZWdpc3RlckNv
bXBvbmVudCguLi4pOiBUYXJnZXQgY29udGFpbmVyIGlzIG5vdCBhIERPTSBlbGVtZW50LicpIDog
X3Byb2RJbnZhcmlhbnQoJzM3JykgOiB2b2lkIDA7XG5cbiAgICBSZWFjdEJyb3dzZXJFdmVudEVt
aXR0ZXIuZW5zdXJlU2Nyb2xsVmFsdWVNb25pdG9yaW5nKCk7XG4gICAgdmFyIGNvbXBvbmVudElu
c3RhbmNlID0gaW5zdGFudGlhdGVSZWFjdENvbXBvbmVudChuZXh0RWxlbWVudCwgZmFsc2UpO1xu
XG4gICAgLy8gVGhlIGluaXRpYWwgcmVuZGVyIGlzIHN5bmNocm9ub3VzIGJ1dCBhbnkgdXBkYXRl
cyB0aGF0IGhhcHBlbiBkdXJpbmdcbiAgICAvLyByZW5kZXJpbmcsIGluIGNvbXBvbmVudFdpbGxN
b3VudCBvciBjb21wb25lbnREaWRNb3VudCwgd2lsbCBiZSBiYXRjaGVkXG4gICAgLy8gYWNjb3Jk
aW5nIHRvIHRoZSBjdXJyZW50IGJhdGNoaW5nIHN0cmF0ZWd5LlxuXG4gICAgUmVhY3RVcGRhdGVz
LmJhdGNoZWRVcGRhdGVzKGJhdGNoZWRNb3VudENvbXBvbmVudEludG9Ob2RlLCBjb21wb25lbnRJ
bnN0YW5jZSwgY29udGFpbmVyLCBzaG91bGRSZXVzZU1hcmt1cCwgY29udGV4dCk7XG5cbiAgICB2
YXIgd3JhcHBlcklEID0gY29tcG9uZW50SW5zdGFuY2UuX2luc3RhbmNlLnJvb3RJRDtcbiAgICBp
bnN0YW5jZXNCeVJlYWN0Um9vdElEW3dyYXBwZXJJRF0gPSBjb21wb25lbnRJbnN0YW5jZTtcblxu
ICAgIHJldHVybiBjb21wb25lbnRJbnN0YW5jZTtcbiAgfSxcblxuICAvKipcbiAgICogUmVuZGVy
cyBhIFJlYWN0IGNvbXBvbmVudCBpbnRvIHRoZSBET00gaW4gdGhlIHN1cHBsaWVkIGBjb250YWlu
ZXJgLlxuICAgKlxuICAgKiBJZiB0aGUgUmVhY3QgY29tcG9uZW50IHdhcyBwcmV2aW91c2x5IHJl
bmRlcmVkIGludG8gYGNvbnRhaW5lcmAsIHRoaXMgd2lsbFxuICAgKiBwZXJmb3JtIGFuIHVwZGF0
ZSBvbiBpdCBhbmQgb25seSBtdXRhdGUgdGhlIERPTSBhcyBuZWNlc3NhcnkgdG8gcmVmbGVjdCB0
aGVcbiAgICogbGF0ZXN0IFJlYWN0IGNvbXBvbmVudC5cbiAgICpcbiAgICogQHBhcmFtIHtSZWFj
dENvbXBvbmVudH0gcGFyZW50Q29tcG9uZW50IFRoZSBjb25jZXB0dWFsIHBhcmVudCBvZiB0aGlz
IHJlbmRlciB0cmVlLlxuICAgKiBAcGFyYW0ge1JlYWN0RWxlbWVudH0gbmV4dEVsZW1lbnQgQ29t
cG9uZW50IGVsZW1lbnQgdG8gcmVuZGVyLlxuICAgKiBAcGFyYW0ge0RPTUVsZW1lbnR9IGNvbnRh
aW5lciBET00gZWxlbWVudCB0byByZW5kZXIgaW50by5cbiAgICogQHBhcmFtIHs/ZnVuY3Rpb259
IGNhbGxiYWNrIGZ1bmN0aW9uIHRyaWdnZXJlZCBvbiBjb21wbGV0aW9uXG4gICAqIEByZXR1cm4g
e1JlYWN0Q29tcG9uZW50fSBDb21wb25lbnQgaW5zdGFuY2UgcmVuZGVyZWQgaW4gYGNvbnRhaW5l
cmAuXG4gICAqL1xuICByZW5kZXJTdWJ0cmVlSW50b0NvbnRhaW5lcjogZnVuY3Rpb24gKHBhcmVu
dENvbXBvbmVudCwgbmV4dEVsZW1lbnQsIGNvbnRhaW5lciwgY2FsbGJhY2spIHtcbiAgICAhKHBh
cmVudENvbXBvbmVudCAhPSBudWxsICYmIFJlYWN0SW5zdGFuY2VNYXAuaGFzKHBhcmVudENvbXBv
bmVudCkpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFu
dChmYWxzZSwgJ3BhcmVudENvbXBvbmVudCBtdXN0IGJlIGEgdmFsaWQgUmVhY3QgQ29tcG9uZW50
JykgOiBfcHJvZEludmFyaWFudCgnMzgnKSA6IHZvaWQgMDtcbiAgICByZXR1cm4gUmVhY3RNb3Vu
dC5fcmVuZGVyU3VidHJlZUludG9Db250YWluZXIocGFyZW50Q29tcG9uZW50LCBuZXh0RWxlbWVu
dCwgY29udGFpbmVyLCBjYWxsYmFjayk7XG4gIH0sXG5cbiAgX3JlbmRlclN1YnRyZWVJbnRvQ29u
dGFpbmVyOiBmdW5jdGlvbiAocGFyZW50Q29tcG9uZW50LCBuZXh0RWxlbWVudCwgY29udGFpbmVy
LCBjYWxsYmFjaykge1xuICAgIFJlYWN0VXBkYXRlUXVldWUudmFsaWRhdGVDYWxsYmFjayhjYWxs
YmFjaywgJ1JlYWN0RE9NLnJlbmRlcicpO1xuICAgICFSZWFjdC5pc1ZhbGlkRWxlbWVudChuZXh0
RWxlbWVudCkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJp
YW50KGZhbHNlLCAnUmVhY3RET00ucmVuZGVyKCk6IEludmFsaWQgY29tcG9uZW50IGVsZW1lbnQu
JXMnLCB0eXBlb2YgbmV4dEVsZW1lbnQgPT09ICdzdHJpbmcnID8gXCIgSW5zdGVhZCBvZiBwYXNz
aW5nIGEgc3RyaW5nIGxpa2UgJ2RpdicsIHBhc3MgXCIgKyBcIlJlYWN0LmNyZWF0ZUVsZW1lbnQo
J2RpdicpIG9yIDxkaXYgLz4uXCIgOiB0eXBlb2YgbmV4dEVsZW1lbnQgPT09ICdmdW5jdGlvbicg
PyAnIEluc3RlYWQgb2YgcGFzc2luZyBhIGNsYXNzIGxpa2UgRm9vLCBwYXNzICcgKyAnUmVhY3Qu
Y3JlYXRlRWxlbWVudChGb28pIG9yIDxGb28gLz4uJyA6IC8vIENoZWNrIGlmIGl0IHF1YWNrcyBs
aWtlIGFuIGVsZW1lbnRcbiAgICBuZXh0RWxlbWVudCAhPSBudWxsICYmIG5leHRFbGVtZW50LnBy
b3BzICE9PSB1bmRlZmluZWQgPyAnIFRoaXMgbWF5IGJlIGNhdXNlZCBieSB1bmludGVudGlvbmFs
bHkgbG9hZGluZyB0d28gaW5kZXBlbmRlbnQgJyArICdjb3BpZXMgb2YgUmVhY3QuJyA6ICcnKSA6
IF9wcm9kSW52YXJpYW50KCczOScsIHR5cGVvZiBuZXh0RWxlbWVudCA9PT0gJ3N0cmluZycgPyBc
IiBJbnN0ZWFkIG9mIHBhc3NpbmcgYSBzdHJpbmcgbGlrZSAnZGl2JywgcGFzcyBcIiArIFwiUmVh
Y3QuY3JlYXRlRWxlbWVudCgnZGl2Jykgb3IgPGRpdiAvPi5cIiA6IHR5cGVvZiBuZXh0RWxlbWVu
dCA9PT0gJ2Z1bmN0aW9uJyA/ICcgSW5zdGVhZCBvZiBwYXNzaW5nIGEgY2xhc3MgbGlrZSBGb28s
IHBhc3MgJyArICdSZWFjdC5jcmVhdGVFbGVtZW50KEZvbykgb3IgPEZvbyAvPi4nIDogbmV4dEVs
ZW1lbnQgIT0gbnVsbCAmJiBuZXh0RWxlbWVudC5wcm9wcyAhPT0gdW5kZWZpbmVkID8gJyBUaGlz
IG1heSBiZSBjYXVzZWQgYnkgdW5pbnRlbnRpb25hbGx5IGxvYWRpbmcgdHdvIGluZGVwZW5kZW50
ICcgKyAnY29waWVzIG9mIFJlYWN0LicgOiAnJykgOiB2b2lkIDA7XG5cbiAgICBwcm9jZXNzLmVu
di5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyghY29udGFpbmVyIHx8ICFjb250
YWluZXIudGFnTmFtZSB8fCBjb250YWluZXIudGFnTmFtZS50b1VwcGVyQ2FzZSgpICE9PSAnQk9E
WScsICdyZW5kZXIoKTogUmVuZGVyaW5nIGNvbXBvbmVudHMgZGlyZWN0bHkgaW50byBkb2N1bWVu
dC5ib2R5IGlzICcgKyAnZGlzY291cmFnZWQsIHNpbmNlIGl0cyBjaGlsZHJlbiBhcmUgb2Z0ZW4g
bWFuaXB1bGF0ZWQgYnkgdGhpcmQtcGFydHkgJyArICdzY3JpcHRzIGFuZCBicm93c2VyIGV4dGVu
c2lvbnMuIFRoaXMgbWF5IGxlYWQgdG8gc3VidGxlICcgKyAncmVjb25jaWxpYXRpb24gaXNzdWVz
LiBUcnkgcmVuZGVyaW5nIGludG8gYSBjb250YWluZXIgZWxlbWVudCBjcmVhdGVkICcgKyAnZm9y
IHlvdXIgYXBwLicpIDogdm9pZCAwO1xuXG4gICAgdmFyIG5leHRXcmFwcGVkRWxlbWVudCA9IFJl
YWN0LmNyZWF0ZUVsZW1lbnQoVG9wTGV2ZWxXcmFwcGVyLCB7XG4gICAgICBjaGlsZDogbmV4dEVs
ZW1lbnRcbiAgICB9KTtcblxuICAgIHZhciBuZXh0Q29udGV4dDtcbiAgICBpZiAocGFyZW50Q29t
cG9uZW50KSB7XG4gICAgICB2YXIgcGFyZW50SW5zdCA9IFJlYWN0SW5zdGFuY2VNYXAuZ2V0KHBh
cmVudENvbXBvbmVudCk7XG4gICAgICBuZXh0Q29udGV4dCA9IHBhcmVudEluc3QuX3Byb2Nlc3ND
aGlsZENvbnRleHQocGFyZW50SW5zdC5fY29udGV4dCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG5l
eHRDb250ZXh0ID0gZW1wdHlPYmplY3Q7XG4gICAgfVxuXG4gICAgdmFyIHByZXZDb21wb25lbnQg
PSBnZXRUb3BMZXZlbFdyYXBwZXJJbkNvbnRhaW5lcihjb250YWluZXIpO1xuXG4gICAgaWYgKHBy
ZXZDb21wb25lbnQpIHtcbiAgICAgIHZhciBwcmV2V3JhcHBlZEVsZW1lbnQgPSBwcmV2Q29tcG9u
ZW50Ll9jdXJyZW50RWxlbWVudDtcbiAgICAgIHZhciBwcmV2RWxlbWVudCA9IHByZXZXcmFwcGVk
RWxlbWVudC5wcm9wcy5jaGlsZDtcbiAgICAgIGlmIChzaG91bGRVcGRhdGVSZWFjdENvbXBvbmVu
dChwcmV2RWxlbWVudCwgbmV4dEVsZW1lbnQpKSB7XG4gICAgICAgIHZhciBwdWJsaWNJbnN0ID0g
cHJldkNvbXBvbmVudC5fcmVuZGVyZWRDb21wb25lbnQuZ2V0UHVibGljSW5zdGFuY2UoKTtcbiAg
ICAgICAgdmFyIHVwZGF0ZWRDYWxsYmFjayA9IGNhbGxiYWNrICYmIGZ1bmN0aW9uICgpIHtcbiAg
ICAgICAgICBjYWxsYmFjay5jYWxsKHB1YmxpY0luc3QpO1xuICAgICAgICB9O1xuICAgICAgICBS
ZWFjdE1vdW50Ll91cGRhdGVSb290Q29tcG9uZW50KHByZXZDb21wb25lbnQsIG5leHRXcmFwcGVk
RWxlbWVudCwgbmV4dENvbnRleHQsIGNvbnRhaW5lciwgdXBkYXRlZENhbGxiYWNrKTtcbiAgICAg
ICAgcmV0dXJuIHB1YmxpY0luc3Q7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBSZWFjdE1vdW50
LnVubW91bnRDb21wb25lbnRBdE5vZGUoY29udGFpbmVyKTtcbiAgICAgIH1cbiAgICB9XG5cbiAg
ICB2YXIgcmVhY3RSb290RWxlbWVudCA9IGdldFJlYWN0Um9vdEVsZW1lbnRJbkNvbnRhaW5lcihj
b250YWluZXIpO1xuICAgIHZhciBjb250YWluZXJIYXNSZWFjdE1hcmt1cCA9IHJlYWN0Um9vdEVs
ZW1lbnQgJiYgISFpbnRlcm5hbEdldElEKHJlYWN0Um9vdEVsZW1lbnQpO1xuICAgIHZhciBjb250
YWluZXJIYXNOb25Sb290UmVhY3RDaGlsZCA9IGhhc05vblJvb3RSZWFjdENoaWxkKGNvbnRhaW5l
cik7XG5cbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xu
ICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoIWNv
bnRhaW5lckhhc05vblJvb3RSZWFjdENoaWxkLCAncmVuZGVyKC4uLik6IFJlcGxhY2luZyBSZWFj
dC1yZW5kZXJlZCBjaGlsZHJlbiB3aXRoIGEgbmV3IHJvb3QgJyArICdjb21wb25lbnQuIElmIHlv
dSBpbnRlbmRlZCB0byB1cGRhdGUgdGhlIGNoaWxkcmVuIG9mIHRoaXMgbm9kZSwgJyArICd5b3Ug
c2hvdWxkIGluc3RlYWQgaGF2ZSB0aGUgZXhpc3RpbmcgY2hpbGRyZW4gdXBkYXRlIHRoZWlyIHN0
YXRlICcgKyAnYW5kIHJlbmRlciB0aGUgbmV3IGNvbXBvbmVudHMgaW5zdGVhZCBvZiBjYWxsaW5n
IFJlYWN0RE9NLnJlbmRlci4nKSA6IHZvaWQgMDtcblxuICAgICAgaWYgKCFjb250YWluZXJIYXNS
ZWFjdE1hcmt1cCB8fCByZWFjdFJvb3RFbGVtZW50Lm5leHRTaWJsaW5nKSB7XG4gICAgICAgIHZh
ciByb290RWxlbWVudFNpYmxpbmcgPSByZWFjdFJvb3RFbGVtZW50O1xuICAgICAgICB3aGlsZSAo
cm9vdEVsZW1lbnRTaWJsaW5nKSB7XG4gICAgICAgICAgaWYgKGludGVybmFsR2V0SUQocm9vdEVs
ZW1lbnRTaWJsaW5nKSkge1xuICAgICAgICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdw
cm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdyZW5kZXIoKTogVGFyZ2V0IG5vZGUgaGFzIG1h
cmt1cCByZW5kZXJlZCBieSBSZWFjdCwgYnV0IHRoZXJlICcgKyAnYXJlIHVucmVsYXRlZCBub2Rl
cyBhcyB3ZWxsLiBUaGlzIGlzIG1vc3QgY29tbW9ubHkgY2F1c2VkIGJ5ICcgKyAnd2hpdGUtc3Bh
Y2UgaW5zZXJ0ZWQgYXJvdW5kIHNlcnZlci1yZW5kZXJlZCBtYXJrdXAuJykgOiB2b2lkIDA7XG4g
ICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgcm9vdEVsZW1lbnRTaWJs
aW5nID0gcm9vdEVsZW1lbnRTaWJsaW5nLm5leHRTaWJsaW5nO1xuICAgICAgICB9XG4gICAgICB9
XG4gICAgfVxuXG4gICAgdmFyIHNob3VsZFJldXNlTWFya3VwID0gY29udGFpbmVySGFzUmVhY3RN
YXJrdXAgJiYgIXByZXZDb21wb25lbnQgJiYgIWNvbnRhaW5lckhhc05vblJvb3RSZWFjdENoaWxk
O1xuICAgIHZhciBjb21wb25lbnQgPSBSZWFjdE1vdW50Ll9yZW5kZXJOZXdSb290Q29tcG9uZW50
KG5leHRXcmFwcGVkRWxlbWVudCwgY29udGFpbmVyLCBzaG91bGRSZXVzZU1hcmt1cCwgbmV4dENv
bnRleHQpLl9yZW5kZXJlZENvbXBvbmVudC5nZXRQdWJsaWNJbnN0YW5jZSgpO1xuICAgIGlmIChj
YWxsYmFjaykge1xuICAgICAgY2FsbGJhY2suY2FsbChjb21wb25lbnQpO1xuICAgIH1cbiAgICBy
ZXR1cm4gY29tcG9uZW50O1xuICB9LFxuXG4gIC8qKlxuICAgKiBSZW5kZXJzIGEgUmVhY3QgY29t
cG9uZW50IGludG8gdGhlIERPTSBpbiB0aGUgc3VwcGxpZWQgYGNvbnRhaW5lcmAuXG4gICAqIFNl
ZSBodHRwczovL2ZhY2Vib29rLmdpdGh1Yi5pby9yZWFjdC9kb2NzL3RvcC1sZXZlbC1hcGkuaHRt
bCNyZWFjdGRvbS5yZW5kZXJcbiAgICpcbiAgICogSWYgdGhlIFJlYWN0IGNvbXBvbmVudCB3YXMg
cHJldmlvdXNseSByZW5kZXJlZCBpbnRvIGBjb250YWluZXJgLCB0aGlzIHdpbGxcbiAgICogcGVy
Zm9ybSBhbiB1cGRhdGUgb24gaXQgYW5kIG9ubHkgbXV0YXRlIHRoZSBET00gYXMgbmVjZXNzYXJ5
IHRvIHJlZmxlY3QgdGhlXG4gICAqIGxhdGVzdCBSZWFjdCBjb21wb25lbnQuXG4gICAqXG4gICAq
IEBwYXJhbSB7UmVhY3RFbGVtZW50fSBuZXh0RWxlbWVudCBDb21wb25lbnQgZWxlbWVudCB0byBy
ZW5kZXIuXG4gICAqIEBwYXJhbSB7RE9NRWxlbWVudH0gY29udGFpbmVyIERPTSBlbGVtZW50IHRv
IHJlbmRlciBpbnRvLlxuICAgKiBAcGFyYW0gez9mdW5jdGlvbn0gY2FsbGJhY2sgZnVuY3Rpb24g
dHJpZ2dlcmVkIG9uIGNvbXBsZXRpb25cbiAgICogQHJldHVybiB7UmVhY3RDb21wb25lbnR9IENv
bXBvbmVudCBpbnN0YW5jZSByZW5kZXJlZCBpbiBgY29udGFpbmVyYC5cbiAgICovXG4gIHJlbmRl
cjogZnVuY3Rpb24gKG5leHRFbGVtZW50LCBjb250YWluZXIsIGNhbGxiYWNrKSB7XG4gICAgcmV0
dXJuIFJlYWN0TW91bnQuX3JlbmRlclN1YnRyZWVJbnRvQ29udGFpbmVyKG51bGwsIG5leHRFbGVt
ZW50LCBjb250YWluZXIsIGNhbGxiYWNrKTtcbiAgfSxcblxuICAvKipcbiAgICogVW5tb3VudHMg
YW5kIGRlc3Ryb3lzIHRoZSBSZWFjdCBjb21wb25lbnQgcmVuZGVyZWQgaW4gdGhlIGBjb250YWlu
ZXJgLlxuICAgKiBTZWUgaHR0cHM6Ly9mYWNlYm9vay5naXRodWIuaW8vcmVhY3QvZG9jcy90b3At
bGV2ZWwtYXBpLmh0bWwjcmVhY3Rkb20udW5tb3VudGNvbXBvbmVudGF0bm9kZVxuICAgKlxuICAg
KiBAcGFyYW0ge0RPTUVsZW1lbnR9IGNvbnRhaW5lciBET00gZWxlbWVudCBjb250YWluaW5nIGEg
UmVhY3QgY29tcG9uZW50LlxuICAgKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmIGEgY29tcG9u
ZW50IHdhcyBmb3VuZCBpbiBhbmQgdW5tb3VudGVkIGZyb21cbiAgICogICAgICAgICAgICAgICAg
ICAgYGNvbnRhaW5lcmBcbiAgICovXG4gIHVubW91bnRDb21wb25lbnRBdE5vZGU6IGZ1bmN0aW9u
IChjb250YWluZXIpIHtcbiAgICAvLyBWYXJpb3VzIHBhcnRzIG9mIG91ciBjb2RlIChzdWNoIGFz
IFJlYWN0Q29tcG9zaXRlQ29tcG9uZW50J3NcbiAgICAvLyBfcmVuZGVyVmFsaWRhdGVkQ29tcG9u
ZW50KSBhc3N1bWUgdGhhdCBjYWxscyB0byByZW5kZXIgYXJlbid0IG5lc3RlZDtcbiAgICAvLyB2
ZXJpZnkgdGhhdCB0aGF0J3MgdGhlIGNhc2UuIChTdHJpY3RseSBzcGVha2luZywgdW5tb3VudGlu
ZyB3b24ndCBjYXVzZSBhXG4gICAgLy8gcmVuZGVyIGJ1dCB3ZSBzdGlsbCBkb24ndCBleHBlY3Qg
dG8gYmUgaW4gYSByZW5kZXIgY2FsbCBoZXJlLilcbiAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAh
PT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50ID09IG51
bGwsICd1bm1vdW50Q29tcG9uZW50QXROb2RlKCk6IFJlbmRlciBtZXRob2RzIHNob3VsZCBiZSBh
IHB1cmUgZnVuY3Rpb24gJyArICdvZiBwcm9wcyBhbmQgc3RhdGU7IHRyaWdnZXJpbmcgbmVzdGVk
IGNvbXBvbmVudCB1cGRhdGVzIGZyb20gcmVuZGVyICcgKyAnaXMgbm90IGFsbG93ZWQuIElmIG5l
Y2Vzc2FyeSwgdHJpZ2dlciBuZXN0ZWQgdXBkYXRlcyBpbiAnICsgJ2NvbXBvbmVudERpZFVwZGF0
ZS4gQ2hlY2sgdGhlIHJlbmRlciBtZXRob2Qgb2YgJXMuJywgUmVhY3RDdXJyZW50T3duZXIuY3Vy
cmVudCAmJiBSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50LmdldE5hbWUoKSB8fCAnUmVhY3RDb21w
b3NpdGVDb21wb25lbnQnKSA6IHZvaWQgMDtcblxuICAgICFpc1ZhbGlkQ29udGFpbmVyKGNvbnRh
aW5lcikgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50
KGZhbHNlLCAndW5tb3VudENvbXBvbmVudEF0Tm9kZSguLi4pOiBUYXJnZXQgY29udGFpbmVyIGlz
IG5vdCBhIERPTSBlbGVtZW50LicpIDogX3Byb2RJbnZhcmlhbnQoJzQwJykgOiB2b2lkIDA7XG5c
biAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAg
cHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoIW5vZGVJc1Jl
bmRlcmVkQnlPdGhlckluc3RhbmNlKGNvbnRhaW5lciksIFwidW5tb3VudENvbXBvbmVudEF0Tm9k
ZSgpOiBUaGUgbm9kZSB5b3UncmUgYXR0ZW1wdGluZyB0byB1bm1vdW50IFwiICsgJ3dhcyByZW5k
ZXJlZCBieSBhbm90aGVyIGNvcHkgb2YgUmVhY3QuJykgOiB2b2lkIDA7XG4gICAgfVxuXG4gICAg
dmFyIHByZXZDb21wb25lbnQgPSBnZXRUb3BMZXZlbFdyYXBwZXJJbkNvbnRhaW5lcihjb250YWlu
ZXIpO1xuICAgIGlmICghcHJldkNvbXBvbmVudCkge1xuICAgICAgLy8gQ2hlY2sgaWYgdGhlIG5v
ZGUgYmVpbmcgdW5tb3VudGVkIHdhcyByZW5kZXJlZCBieSBSZWFjdCwgYnV0IGlzbid0IGFcbiAg
ICAgIC8vIHJvb3Qgbm9kZS5cbiAgICAgIHZhciBjb250YWluZXJIYXNOb25Sb290UmVhY3RDaGls
ZCA9IGhhc05vblJvb3RSZWFjdENoaWxkKGNvbnRhaW5lcik7XG5cbiAgICAgIC8vIENoZWNrIGlm
IHRoZSBjb250YWluZXIgaXRzZWxmIGlzIGEgUmVhY3Qgcm9vdCBub2RlLlxuICAgICAgdmFyIGlz
Q29udGFpbmVyUmVhY3RSb290ID0gY29udGFpbmVyLm5vZGVUeXBlID09PSAxICYmIGNvbnRhaW5l
ci5oYXNBdHRyaWJ1dGUoUk9PVF9BVFRSX05BTUUpO1xuXG4gICAgICBpZiAocHJvY2Vzcy5lbnYu
Tk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VO
ViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyghY29udGFpbmVySGFzTm9uUm9vdFJlYWN0Q2hp
bGQsIFwidW5tb3VudENvbXBvbmVudEF0Tm9kZSgpOiBUaGUgbm9kZSB5b3UncmUgYXR0ZW1wdGlu
ZyB0byB1bm1vdW50IFwiICsgJ3dhcyByZW5kZXJlZCBieSBSZWFjdCBhbmQgaXMgbm90IGEgdG9w
LWxldmVsIGNvbnRhaW5lci4gJXMnLCBpc0NvbnRhaW5lclJlYWN0Um9vdCA/ICdZb3UgbWF5IGhh
dmUgYWNjaWRlbnRhbGx5IHBhc3NlZCBpbiBhIFJlYWN0IHJvb3Qgbm9kZSBpbnN0ZWFkICcgKyAn
b2YgaXRzIGNvbnRhaW5lci4nIDogJ0luc3RlYWQsIGhhdmUgdGhlIHBhcmVudCBjb21wb25lbnQg
dXBkYXRlIGl0cyBzdGF0ZSBhbmQgJyArICdyZXJlbmRlciBpbiBvcmRlciB0byByZW1vdmUgdGhp
cyBjb21wb25lbnQuJykgOiB2b2lkIDA7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBmYWxzZTtc
biAgICB9XG4gICAgZGVsZXRlIGluc3RhbmNlc0J5UmVhY3RSb290SURbcHJldkNvbXBvbmVudC5f
aW5zdGFuY2Uucm9vdElEXTtcbiAgICBSZWFjdFVwZGF0ZXMuYmF0Y2hlZFVwZGF0ZXModW5tb3Vu
dENvbXBvbmVudEZyb21Ob2RlLCBwcmV2Q29tcG9uZW50LCBjb250YWluZXIsIGZhbHNlKTtcbiAg
ICByZXR1cm4gdHJ1ZTtcbiAgfSxcblxuICBfbW91bnRJbWFnZUludG9Ob2RlOiBmdW5jdGlvbiAo
bWFya3VwLCBjb250YWluZXIsIGluc3RhbmNlLCBzaG91bGRSZXVzZU1hcmt1cCwgdHJhbnNhY3Rp
b24pIHtcbiAgICAhaXNWYWxpZENvbnRhaW5lcihjb250YWluZXIpID8gcHJvY2Vzcy5lbnYuTk9E
RV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ21vdW50Q29tcG9uZW50
SW50b05vZGUoLi4uKTogVGFyZ2V0IGNvbnRhaW5lciBpcyBub3QgdmFsaWQuJykgOiBfcHJvZElu
dmFyaWFudCgnNDEnKSA6IHZvaWQgMDtcblxuICAgIGlmIChzaG91bGRSZXVzZU1hcmt1cCkge1xu
ICAgICAgdmFyIHJvb3RFbGVtZW50ID0gZ2V0UmVhY3RSb290RWxlbWVudEluQ29udGFpbmVyKGNv
bnRhaW5lcik7XG4gICAgICBpZiAoUmVhY3RNYXJrdXBDaGVja3N1bS5jYW5SZXVzZU1hcmt1cCht
YXJrdXAsIHJvb3RFbGVtZW50KSkge1xuICAgICAgICBSZWFjdERPTUNvbXBvbmVudFRyZWUucHJl
Y2FjaGVOb2RlKGluc3RhbmNlLCByb290RWxlbWVudCk7XG4gICAgICAgIHJldHVybjtcbiAgICAg
IH0gZWxzZSB7XG4gICAgICAgIHZhciBjaGVja3N1bSA9IHJvb3RFbGVtZW50LmdldEF0dHJpYnV0
ZShSZWFjdE1hcmt1cENoZWNrc3VtLkNIRUNLU1VNX0FUVFJfTkFNRSk7XG4gICAgICAgIHJvb3RF
bGVtZW50LnJlbW92ZUF0dHJpYnV0ZShSZWFjdE1hcmt1cENoZWNrc3VtLkNIRUNLU1VNX0FUVFJf
TkFNRSk7XG5cbiAgICAgICAgdmFyIHJvb3RNYXJrdXAgPSByb290RWxlbWVudC5vdXRlckhUTUw7
XG4gICAgICAgIHJvb3RFbGVtZW50LnNldEF0dHJpYnV0ZShSZWFjdE1hcmt1cENoZWNrc3VtLkNI
RUNLU1VNX0FUVFJfTkFNRSwgY2hlY2tzdW0pO1xuXG4gICAgICAgIHZhciBub3JtYWxpemVkTWFy
a3VwID0gbWFya3VwO1xuICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9k
dWN0aW9uJykge1xuICAgICAgICAgIC8vIGJlY2F1c2Ugcm9vdE1hcmt1cCBpcyByZXRyaWV2ZWQg
ZnJvbSB0aGUgRE9NLCB2YXJpb3VzIG5vcm1hbGl6YXRpb25zXG4gICAgICAgICAgLy8gd2lsbCBo
YXZlIG9jY3VycmVkIHdoaWNoIHdpbGwgbm90IGJlIHByZXNlbnQgaW4gYG1hcmt1cGAuIEhlcmUs
XG4gICAgICAgICAgLy8gaW5zZXJ0IG1hcmt1cCBpbnRvIGEgPGRpdj4gb3IgPGlmcmFtZT4gZGVw
ZW5kaW5nIG9uIHRoZSBjb250YWluZXJcbiAgICAgICAgICAvLyB0eXBlIHRvIHBlcmZvcm0gdGhl
IHNhbWUgbm9ybWFsaXphdGlvbnMgYmVmb3JlIGNvbXBhcmluZy5cbiAgICAgICAgICB2YXIgbm9y
bWFsaXplcjtcbiAgICAgICAgICBpZiAoY29udGFpbmVyLm5vZGVUeXBlID09PSBFTEVNRU5UX05P
REVfVFlQRSkge1xuICAgICAgICAgICAgbm9ybWFsaXplciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoJ2RpdicpO1xuICAgICAgICAgICAgbm9ybWFsaXplci5pbm5lckhUTUwgPSBtYXJrdXA7XG4g
ICAgICAgICAgICBub3JtYWxpemVkTWFya3VwID0gbm9ybWFsaXplci5pbm5lckhUTUw7XG4gICAg
ICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG5vcm1hbGl6ZXIgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCdpZnJhbWUnKTtcbiAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQo
bm9ybWFsaXplcik7XG4gICAgICAgICAgICBub3JtYWxpemVyLmNvbnRlbnREb2N1bWVudC53cml0
ZShtYXJrdXApO1xuICAgICAgICAgICAgbm9ybWFsaXplZE1hcmt1cCA9IG5vcm1hbGl6ZXIuY29u
dGVudERvY3VtZW50LmRvY3VtZW50RWxlbWVudC5vdXRlckhUTUw7XG4gICAgICAgICAgICBkb2N1
bWVudC5ib2R5LnJlbW92ZUNoaWxkKG5vcm1hbGl6ZXIpO1xuICAgICAgICAgIH1cbiAgICAgICAg
fVxuXG4gICAgICAgIHZhciBkaWZmSW5kZXggPSBmaXJzdERpZmZlcmVuY2VJbmRleChub3JtYWxp
emVkTWFya3VwLCByb290TWFya3VwKTtcbiAgICAgICAgdmFyIGRpZmZlcmVuY2UgPSAnIChjbGll
bnQpICcgKyBub3JtYWxpemVkTWFya3VwLnN1YnN0cmluZyhkaWZmSW5kZXggLSAyMCwgZGlmZklu
ZGV4ICsgMjApICsgJ1xcbiAoc2VydmVyKSAnICsgcm9vdE1hcmt1cC5zdWJzdHJpbmcoZGlmZklu
ZGV4IC0gMjAsIGRpZmZJbmRleCArIDIwKTtcblxuICAgICAgICAhKGNvbnRhaW5lci5ub2RlVHlw
ZSAhPT0gRE9DX05PREVfVFlQRSkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rp
b24nID8gaW52YXJpYW50KGZhbHNlLCAnWW91XFwncmUgdHJ5aW5nIHRvIHJlbmRlciBhIGNvbXBv
bmVudCB0byB0aGUgZG9jdW1lbnQgdXNpbmcgc2VydmVyIHJlbmRlcmluZyBidXQgdGhlIGNoZWNr
c3VtIHdhcyBpbnZhbGlkLiBUaGlzIHVzdWFsbHkgbWVhbnMgeW91IHJlbmRlcmVkIGEgZGlmZmVy
ZW50IGNvbXBvbmVudCB0eXBlIG9yIHByb3BzIG9uIHRoZSBjbGllbnQgZnJvbSB0aGUgb25lIG9u
IHRoZSBzZXJ2ZXIsIG9yIHlvdXIgcmVuZGVyKCkgbWV0aG9kcyBhcmUgaW1wdXJlLiBSZWFjdCBj
YW5ub3QgaGFuZGxlIHRoaXMgY2FzZSBkdWUgdG8gY3Jvc3MtYnJvd3NlciBxdWlya3MgYnkgcmVu
ZGVyaW5nIGF0IHRoZSBkb2N1bWVudCByb290LiBZb3Ugc2hvdWxkIGxvb2sgZm9yIGVudmlyb25t
ZW50IGRlcGVuZGVudCBjb2RlIGluIHlvdXIgY29tcG9uZW50cyBhbmQgZW5zdXJlIHRoZSBwcm9w
cyBhcmUgdGhlIHNhbWUgY2xpZW50IGFuZCBzZXJ2ZXIgc2lkZTpcXG4lcycsIGRpZmZlcmVuY2Up
IDogX3Byb2RJbnZhcmlhbnQoJzQyJywgZGlmZmVyZW5jZSkgOiB2b2lkIDA7XG5cbiAgICAgICAg
aWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICBw
cm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ1Jl
YWN0IGF0dGVtcHRlZCB0byByZXVzZSBtYXJrdXAgaW4gYSBjb250YWluZXIgYnV0IHRoZSAnICsg
J2NoZWNrc3VtIHdhcyBpbnZhbGlkLiBUaGlzIGdlbmVyYWxseSBtZWFucyB0aGF0IHlvdSBhcmUg
JyArICd1c2luZyBzZXJ2ZXIgcmVuZGVyaW5nIGFuZCB0aGUgbWFya3VwIGdlbmVyYXRlZCBvbiB0
aGUgJyArICdzZXJ2ZXIgd2FzIG5vdCB3aGF0IHRoZSBjbGllbnQgd2FzIGV4cGVjdGluZy4gUmVh
Y3QgaW5qZWN0ZWQgJyArICduZXcgbWFya3VwIHRvIGNvbXBlbnNhdGUgd2hpY2ggd29ya3MgYnV0
IHlvdSBoYXZlIGxvc3QgbWFueSAnICsgJ29mIHRoZSBiZW5lZml0cyBvZiBzZXJ2ZXIgcmVuZGVy
aW5nLiBJbnN0ZWFkLCBmaWd1cmUgb3V0ICcgKyAnd2h5IHRoZSBtYXJrdXAgYmVpbmcgZ2VuZXJh
dGVkIGlzIGRpZmZlcmVudCBvbiB0aGUgY2xpZW50ICcgKyAnb3Igc2VydmVyOlxcbiVzJywgZGlm
ZmVyZW5jZSkgOiB2b2lkIDA7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAhKGNv
bnRhaW5lci5ub2RlVHlwZSAhPT0gRE9DX05PREVfVFlQRSkgPyBwcm9jZXNzLmVudi5OT0RFX0VO
ViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnWW91XFwncmUgdHJ5aW5nIHRv
IHJlbmRlciBhIGNvbXBvbmVudCB0byB0aGUgZG9jdW1lbnQgYnV0IHlvdSBkaWRuXFwndCB1c2Ug
c2VydmVyIHJlbmRlcmluZy4gV2UgY2FuXFwndCBkbyB0aGlzIHdpdGhvdXQgdXNpbmcgc2VydmVy
IHJlbmRlcmluZyBkdWUgdG8gY3Jvc3MtYnJvd3NlciBxdWlya3MuIFNlZSBSZWFjdERPTVNlcnZl
ci5yZW5kZXJUb1N0cmluZygpIGZvciBzZXJ2ZXIgcmVuZGVyaW5nLicpIDogX3Byb2RJbnZhcmlh
bnQoJzQzJykgOiB2b2lkIDA7XG5cbiAgICBpZiAodHJhbnNhY3Rpb24udXNlQ3JlYXRlRWxlbWVu
dCkge1xuICAgICAgd2hpbGUgKGNvbnRhaW5lci5sYXN0Q2hpbGQpIHtcbiAgICAgICAgY29udGFp
bmVyLnJlbW92ZUNoaWxkKGNvbnRhaW5lci5sYXN0Q2hpbGQpO1xuICAgICAgfVxuICAgICAgRE9N
TGF6eVRyZWUuaW5zZXJ0VHJlZUJlZm9yZShjb250YWluZXIsIG1hcmt1cCwgbnVsbCk7XG4gICAg
fSBlbHNlIHtcbiAgICAgIHNldElubmVySFRNTChjb250YWluZXIsIG1hcmt1cCk7XG4gICAgICBS
ZWFjdERPTUNvbXBvbmVudFRyZWUucHJlY2FjaGVOb2RlKGluc3RhbmNlLCBjb250YWluZXIuZmly
c3RDaGlsZCk7XG4gICAgfVxuXG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJv
ZHVjdGlvbicpIHtcbiAgICAgIHZhciBob3N0Tm9kZSA9IFJlYWN0RE9NQ29tcG9uZW50VHJlZS5n
ZXRJbnN0YW5jZUZyb21Ob2RlKGNvbnRhaW5lci5maXJzdENoaWxkKTtcbiAgICAgIGlmIChob3N0
Tm9kZS5fZGVidWdJRCAhPT0gMCkge1xuICAgICAgICBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1
Z1Rvb2wub25Ib3N0T3BlcmF0aW9uKHtcbiAgICAgICAgICBpbnN0YW5jZUlEOiBob3N0Tm9kZS5f
ZGVidWdJRCxcbiAgICAgICAgICB0eXBlOiAnbW91bnQnLFxuICAgICAgICAgIHBheWxvYWQ6IG1h
cmt1cC50b1N0cmluZygpXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxufTtcblxu
bW9kdWxlLmV4cG9ydHMgPSBSZWFjdE1vdW50O1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoq
IFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0LWRvbS9saWIvUmVhY3RNb3VudC5qc1xuICoq
IG1vZHVsZSBpZCA9IDY3XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENv
cHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1z
dHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRp
cmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBw
YXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1l
IGRpcmVjdG9yeS5cbiAqXG4gKiBcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBfcHJvZElu
dmFyaWFudCA9IHJlcXVpcmUoJy4vcmVhY3RQcm9kSW52YXJpYW50Jyk7XG5cbnZhciBSZWFjdCA9
IHJlcXVpcmUoJ3JlYWN0L2xpYi9SZWFjdCcpO1xuXG52YXIgaW52YXJpYW50ID0gcmVxdWlyZSgn
ZmJqcy9saWIvaW52YXJpYW50Jyk7XG5cbnZhciBSZWFjdE5vZGVUeXBlcyA9IHtcbiAgSE9TVDog
MCxcbiAgQ09NUE9TSVRFOiAxLFxuICBFTVBUWTogMixcblxuICBnZXRUeXBlOiBmdW5jdGlvbiAo
bm9kZSkge1xuICAgIGlmIChub2RlID09PSBudWxsIHx8IG5vZGUgPT09IGZhbHNlKSB7XG4gICAg
ICByZXR1cm4gUmVhY3ROb2RlVHlwZXMuRU1QVFk7XG4gICAgfSBlbHNlIGlmIChSZWFjdC5pc1Zh
bGlkRWxlbWVudChub2RlKSkge1xuICAgICAgaWYgKHR5cGVvZiBub2RlLnR5cGUgPT09ICdmdW5j
dGlvbicpIHtcbiAgICAgICAgcmV0dXJuIFJlYWN0Tm9kZVR5cGVzLkNPTVBPU0lURTtcbiAgICAg
IH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBSZWFjdE5vZGVUeXBlcy5IT1NUO1xuICAgICAgfVxu
ICAgIH1cbiAgICAhZmFsc2UgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24n
ID8gaW52YXJpYW50KGZhbHNlLCAnVW5leHBlY3RlZCBub2RlOiAlcycsIG5vZGUpIDogX3Byb2RJ
bnZhcmlhbnQoJzI2Jywgbm9kZSkgOiB2b2lkIDA7XG4gIH1cbn07XG5cbm1vZHVsZS5leHBvcnRz
ID0gUmVhY3ROb2RlVHlwZXM7XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBG
T09URVJcbiAqKiAuL34vcmVhY3QtZG9tL2xpYi9SZWFjdE5vZGVUeXBlcy5qc1xuICoqIG1vZHVs
ZSBpZCA9IDY4XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENvcHlyaWdo
dCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxu
ICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBs
aWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9y
eSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQg
cmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVj
dG9yeS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgVmlld3BvcnRNZXRyaWNzID0g
e1xuICBjdXJyZW50U2Nyb2xsTGVmdDogMCxcblxuICBjdXJyZW50U2Nyb2xsVG9wOiAwLFxuXG4g
IHJlZnJlc2hTY3JvbGxWYWx1ZXM6IGZ1bmN0aW9uIChzY3JvbGxQb3NpdGlvbikge1xuICAgIFZp
ZXdwb3J0TWV0cmljcy5jdXJyZW50U2Nyb2xsTGVmdCA9IHNjcm9sbFBvc2l0aW9uLng7XG4gICAg
Vmlld3BvcnRNZXRyaWNzLmN1cnJlbnRTY3JvbGxUb3AgPSBzY3JvbGxQb3NpdGlvbi55O1xuICB9
XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFZpZXdwb3J0TWV0cmljcztcblxuXG4vKioqKioqKioq
KioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFjdC1kb20vbGliL1ZpZXdw
b3J0TWV0cmljcy5qc1xuICoqIG1vZHVsZSBpZCA9IDY5XG4gKiogbW9kdWxlIGNodW5rcyA9IDBc
biAqKi8iLCIvKipcbiAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4g
KiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5z
ZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBm
aWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlv
bmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5U
UyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBcbiAqL1xuXG4ndXNlIHN0cmlj
dCc7XG5cbnZhciBfcHJvZEludmFyaWFudCA9IHJlcXVpcmUoJy4vcmVhY3RQcm9kSW52YXJpYW50
Jyk7XG5cbnZhciBpbnZhcmlhbnQgPSByZXF1aXJlKCdmYmpzL2xpYi9pbnZhcmlhbnQnKTtcblxu
LyoqXG4gKiBBY2N1bXVsYXRlcyBpdGVtcyB0aGF0IG11c3Qgbm90IGJlIG51bGwgb3IgdW5kZWZp
bmVkIGludG8gdGhlIGZpcnN0IG9uZS4gVGhpc1xuICogaXMgdXNlZCB0byBjb25zZXJ2ZSBtZW1v
cnkgYnkgYXZvaWRpbmcgYXJyYXkgYWxsb2NhdGlvbnMsIGFuZCB0aHVzIHNhY3JpZmljZXNcbiAq
IEFQSSBjbGVhbm5lc3MuIFNpbmNlIGBjdXJyZW50YCBjYW4gYmUgbnVsbCBiZWZvcmUgYmVpbmcg
cGFzc2VkIGluIGFuZCBub3RcbiAqIG51bGwgYWZ0ZXIgdGhpcyBmdW5jdGlvbiwgbWFrZSBzdXJl
IHRvIGFzc2lnbiBpdCBiYWNrIHRvIGBjdXJyZW50YDpcbiAqXG4gKiBgYSA9IGFjY3VtdWxhdGVJ
bnRvKGEsIGIpO2BcbiAqXG4gKiBUaGlzIEFQSSBzaG91bGQgYmUgc3BhcmluZ2x5IHVzZWQuIFRy
eSBgYWNjdW11bGF0ZWAgZm9yIHNvbWV0aGluZyBjbGVhbmVyLlxuICpcbiAqIEByZXR1cm4geyp8
YXJyYXk8Kj59IEFuIGFjY3VtdWxhdGlvbiBvZiBpdGVtcy5cbiAqL1xuXG5mdW5jdGlvbiBhY2N1
bXVsYXRlSW50byhjdXJyZW50LCBuZXh0KSB7XG4gICEobmV4dCAhPSBudWxsKSA/IHByb2Nlc3Mu
ZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdhY2N1bXVs
YXRlSW50byguLi4pOiBBY2N1bXVsYXRlZCBpdGVtcyBtdXN0IG5vdCBiZSBudWxsIG9yIHVuZGVm
aW5lZC4nKSA6IF9wcm9kSW52YXJpYW50KCczMCcpIDogdm9pZCAwO1xuXG4gIGlmIChjdXJyZW50
ID09IG51bGwpIHtcbiAgICByZXR1cm4gbmV4dDtcbiAgfVxuXG4gIC8vIEJvdGggYXJlIG5vdCBl
bXB0eS4gV2FybmluZzogTmV2ZXIgY2FsbCB4LmNvbmNhdCh5KSB3aGVuIHlvdSBhcmUgbm90XG4g
IC8vIGNlcnRhaW4gdGhhdCB4IGlzIGFuIEFycmF5ICh4IGNvdWxkIGJlIGEgc3RyaW5nIHdpdGgg
Y29uY2F0IG1ldGhvZCkuXG4gIGlmIChBcnJheS5pc0FycmF5KGN1cnJlbnQpKSB7XG4gICAgaWYg
KEFycmF5LmlzQXJyYXkobmV4dCkpIHtcbiAgICAgIGN1cnJlbnQucHVzaC5hcHBseShjdXJyZW50
LCBuZXh0KTtcbiAgICAgIHJldHVybiBjdXJyZW50O1xuICAgIH1cbiAgICBjdXJyZW50LnB1c2go
bmV4dCk7XG4gICAgcmV0dXJuIGN1cnJlbnQ7XG4gIH1cblxuICBpZiAoQXJyYXkuaXNBcnJheShu
ZXh0KSkge1xuICAgIC8vIEEgYml0IHRvbyBkYW5nZXJvdXMgdG8gbXV0YXRlIGBuZXh0YC5cbiAg
ICByZXR1cm4gW2N1cnJlbnRdLmNvbmNhdChuZXh0KTtcbiAgfVxuXG4gIHJldHVybiBbY3VycmVu
dCwgbmV4dF07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYWNjdW11bGF0ZUludG87XG5cblxuLyoq
KioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3QtZG9tL2xp
Yi9hY2N1bXVsYXRlSW50by5qc1xuICoqIG1vZHVsZSBpZCA9IDcwXG4gKiogbW9kdWxlIGNodW5r
cyA9IDBcbiAqKi8iLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJ
bmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMg
bGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElD
RU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBh
ZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUg
UEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBcbiAqL1xuXG4ndXNl
IHN0cmljdCc7XG5cbi8qKlxuICogQHBhcmFtIHthcnJheX0gYXJyIGFuIFwiYWNjdW11bGF0aW9u
XCIgb2YgaXRlbXMgd2hpY2ggaXMgZWl0aGVyIGFuIEFycmF5IG9yXG4gKiBhIHNpbmdsZSBpdGVt
LiBVc2VmdWwgd2hlbiBwYWlyZWQgd2l0aCB0aGUgYGFjY3VtdWxhdGVgIG1vZHVsZS4gVGhpcyBp
cyBhXG4gKiBzaW1wbGUgdXRpbGl0eSB0aGF0IGFsbG93cyB1cyB0byByZWFzb24gYWJvdXQgYSBj
b2xsZWN0aW9uIG9mIGl0ZW1zLCBidXRcbiAqIGhhbmRsaW5nIHRoZSBjYXNlIHdoZW4gdGhlcmUg
aXMgZXhhY3RseSBvbmUgaXRlbSAoYW5kIHdlIGRvIG5vdCBuZWVkIHRvXG4gKiBhbGxvY2F0ZSBh
biBhcnJheSkuXG4gKi9cblxuZnVuY3Rpb24gZm9yRWFjaEFjY3VtdWxhdGVkKGFyciwgY2IsIHNj
b3BlKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KGFycikpIHtcbiAgICBhcnIuZm9yRWFjaChjYiwg
c2NvcGUpO1xuICB9IGVsc2UgaWYgKGFycikge1xuICAgIGNiLmNhbGwoc2NvcGUsIGFycik7XG4g
IH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBmb3JFYWNoQWNjdW11bGF0ZWQ7XG5cblxuLyoqKioq
KioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3QtZG9tL2xpYi9m
b3JFYWNoQWNjdW11bGF0ZWQuanNcbiAqKiBtb2R1bGUgaWQgPSA3MVxuICoqIG1vZHVsZSBjaHVu
a3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywg
SW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlz
IGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJ
Q0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4g
YWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhl
IFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICovXG5cbid1c2Ugc3Ry
aWN0JztcblxudmFyIFJlYWN0Tm9kZVR5cGVzID0gcmVxdWlyZSgnLi9SZWFjdE5vZGVUeXBlcycp
O1xuXG5mdW5jdGlvbiBnZXRIb3N0Q29tcG9uZW50RnJvbUNvbXBvc2l0ZShpbnN0KSB7XG4gIHZh
ciB0eXBlO1xuXG4gIHdoaWxlICgodHlwZSA9IGluc3QuX3JlbmRlcmVkTm9kZVR5cGUpID09PSBS
ZWFjdE5vZGVUeXBlcy5DT01QT1NJVEUpIHtcbiAgICBpbnN0ID0gaW5zdC5fcmVuZGVyZWRDb21w
b25lbnQ7XG4gIH1cblxuICBpZiAodHlwZSA9PT0gUmVhY3ROb2RlVHlwZXMuSE9TVCkge1xuICAg
IHJldHVybiBpbnN0Ll9yZW5kZXJlZENvbXBvbmVudDtcbiAgfSBlbHNlIGlmICh0eXBlID09PSBS
ZWFjdE5vZGVUeXBlcy5FTVBUWSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG59XG5cbm1vZHVs
ZS5leHBvcnRzID0gZ2V0SG9zdENvbXBvbmVudEZyb21Db21wb3NpdGU7XG5cblxuLyoqKioqKioq
KioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3QtZG9tL2xpYi9nZXRI
b3N0Q29tcG9uZW50RnJvbUNvbXBvc2l0ZS5qc1xuICoqIG1vZHVsZSBpZCA9IDcyXG4gKiogbW9k
dWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZh
Y2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNl
IGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRo
ZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0
cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3Vu
ZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxu
J3VzZSBzdHJpY3QnO1xuXG52YXIgRXhlY3V0aW9uRW52aXJvbm1lbnQgPSByZXF1aXJlKCdmYmpz
L2xpYi9FeGVjdXRpb25FbnZpcm9ubWVudCcpO1xuXG52YXIgY29udGVudEtleSA9IG51bGw7XG5c
bi8qKlxuICogR2V0cyB0aGUga2V5IHVzZWQgdG8gYWNjZXNzIHRleHQgY29udGVudCBvbiBhIERP
TSBub2RlLlxuICpcbiAqIEByZXR1cm4gez9zdHJpbmd9IEtleSB1c2VkIHRvIGFjY2VzcyB0ZXh0
IGNvbnRlbnQuXG4gKiBAaW50ZXJuYWxcbiAqL1xuZnVuY3Rpb24gZ2V0VGV4dENvbnRlbnRBY2Nl
c3NvcigpIHtcbiAgaWYgKCFjb250ZW50S2V5ICYmIEV4ZWN1dGlvbkVudmlyb25tZW50LmNhblVz
ZURPTSkge1xuICAgIC8vIFByZWZlciB0ZXh0Q29udGVudCB0byBpbm5lclRleHQgYmVjYXVzZSBt
YW55IGJyb3dzZXJzIHN1cHBvcnQgYm90aCBidXRcbiAgICAvLyBTVkcgPHRleHQ+IGVsZW1lbnRz
IGRvbid0IHN1cHBvcnQgaW5uZXJUZXh0IGV2ZW4gd2hlbiA8ZGl2PiBkb2VzLlxuICAgIGNvbnRl
bnRLZXkgPSAndGV4dENvbnRlbnQnIGluIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCA/ICd0ZXh0
Q29udGVudCcgOiAnaW5uZXJUZXh0JztcbiAgfVxuICByZXR1cm4gY29udGVudEtleTtcbn1cblxu
bW9kdWxlLmV4cG9ydHMgPSBnZXRUZXh0Q29udGVudEFjY2Vzc29yO1xuXG5cbi8qKioqKioqKioq
KioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0LWRvbS9saWIvZ2V0VGV4
dENvbnRlbnRBY2Nlc3Nvci5qc1xuICoqIG1vZHVsZSBpZCA9IDczXG4gKiogbW9kdWxlIGNodW5r
cyA9IDBcbiAqKi8iLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJ
bmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMg
bGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElD
RU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBh
ZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUg
UEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJp
Y3QnO1xuXG52YXIgUmVhY3RET01Db21wb25lbnRUcmVlID0gcmVxdWlyZSgnLi9SZWFjdERPTUNv
bXBvbmVudFRyZWUnKTtcblxuZnVuY3Rpb24gaXNDaGVja2FibGUoZWxlbSkge1xuICB2YXIgdHlw
ZSA9IGVsZW0udHlwZTtcbiAgdmFyIG5vZGVOYW1lID0gZWxlbS5ub2RlTmFtZTtcbiAgcmV0dXJu
IG5vZGVOYW1lICYmIG5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09ICdpbnB1dCcgJiYgKHR5cGUg
PT09ICdjaGVja2JveCcgfHwgdHlwZSA9PT0gJ3JhZGlvJyk7XG59XG5cbmZ1bmN0aW9uIGdldFRy
YWNrZXIoaW5zdCkge1xuICByZXR1cm4gaW5zdC5fd3JhcHBlclN0YXRlLnZhbHVlVHJhY2tlcjtc
bn1cblxuZnVuY3Rpb24gYXR0YWNoVHJhY2tlcihpbnN0LCB0cmFja2VyKSB7XG4gIGluc3QuX3dy
YXBwZXJTdGF0ZS52YWx1ZVRyYWNrZXIgPSB0cmFja2VyO1xufVxuXG5mdW5jdGlvbiBkZXRhY2hU
cmFja2VyKGluc3QpIHtcbiAgZGVsZXRlIGluc3QuX3dyYXBwZXJTdGF0ZS52YWx1ZVRyYWNrZXI7
XG59XG5cbmZ1bmN0aW9uIGdldFZhbHVlRnJvbU5vZGUobm9kZSkge1xuICB2YXIgdmFsdWU7XG4g
IGlmIChub2RlKSB7XG4gICAgdmFsdWUgPSBpc0NoZWNrYWJsZShub2RlKSA/ICcnICsgbm9kZS5j
aGVja2VkIDogbm9kZS52YWx1ZTtcbiAgfVxuICByZXR1cm4gdmFsdWU7XG59XG5cbnZhciBpbnB1
dFZhbHVlVHJhY2tpbmcgPSB7XG4gIC8vIGV4cG9zZWQgZm9yIHRlc3RpbmdcbiAgX2dldFRyYWNr
ZXJGcm9tTm9kZTogZnVuY3Rpb24gKG5vZGUpIHtcbiAgICByZXR1cm4gZ2V0VHJhY2tlcihSZWFj
dERPTUNvbXBvbmVudFRyZWUuZ2V0SW5zdGFuY2VGcm9tTm9kZShub2RlKSk7XG4gIH0sXG5cblxu
ICB0cmFjazogZnVuY3Rpb24gKGluc3QpIHtcbiAgICBpZiAoZ2V0VHJhY2tlcihpbnN0KSkge1xu
ICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZhciBub2RlID0gUmVhY3RET01Db21wb25lbnRU
cmVlLmdldE5vZGVGcm9tSW5zdGFuY2UoaW5zdCk7XG4gICAgdmFyIHZhbHVlRmllbGQgPSBpc0No
ZWNrYWJsZShub2RlKSA/ICdjaGVja2VkJyA6ICd2YWx1ZSc7XG4gICAgdmFyIGRlc2NyaXB0b3Ig
PSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG5vZGUuY29uc3RydWN0b3IucHJvdG90
eXBlLCB2YWx1ZUZpZWxkKTtcblxuICAgIHZhciBjdXJyZW50VmFsdWUgPSAnJyArIG5vZGVbdmFs
dWVGaWVsZF07XG5cbiAgICAvLyBpZiBzb21lb25lIGhhcyBhbHJlYWR5IGRlZmluZWQgYSB2YWx1
ZSBvciBTYWZhcmksIHRoZW4gYmFpbFxuICAgIC8vIGFuZCBkb24ndCB0cmFjayB2YWx1ZSB3aWxs
IGNhdXNlIG92ZXIgcmVwb3J0aW5nIG9mIGNoYW5nZXMsXG4gICAgLy8gYnV0IGl0J3MgYmV0dGVy
IHRoZW4gYSBoYXJkIGZhaWx1cmVcbiAgICAvLyAobmVlZGVkIGZvciBjZXJ0YWluIHRlc3RzIHRo
YXQgc3B5T24gaW5wdXQgdmFsdWVzIGFuZCBTYWZhcmkpXG4gICAgaWYgKG5vZGUuaGFzT3duUHJv
cGVydHkodmFsdWVGaWVsZCkgfHwgdHlwZW9mIGRlc2NyaXB0b3IuZ2V0ICE9PSAnZnVuY3Rpb24n
IHx8IHR5cGVvZiBkZXNjcmlwdG9yLnNldCAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJu
O1xuICAgIH1cblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShub2RlLCB2YWx1ZUZpZWxkLCB7
XG4gICAgICBlbnVtZXJhYmxlOiBkZXNjcmlwdG9yLmVudW1lcmFibGUsXG4gICAgICBjb25maWd1
cmFibGU6IHRydWUsXG4gICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIGRl
c2NyaXB0b3IuZ2V0LmNhbGwodGhpcyk7XG4gICAgICB9LFxuICAgICAgc2V0OiBmdW5jdGlvbiAo
dmFsdWUpIHtcbiAgICAgICAgY3VycmVudFZhbHVlID0gJycgKyB2YWx1ZTtcbiAgICAgICAgZGVz
Y3JpcHRvci5zZXQuY2FsbCh0aGlzLCB2YWx1ZSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBh
dHRhY2hUcmFja2VyKGluc3QsIHtcbiAgICAgIGdldFZhbHVlOiBmdW5jdGlvbiAoKSB7XG4gICAg
ICAgIHJldHVybiBjdXJyZW50VmFsdWU7XG4gICAgICB9LFxuICAgICAgc2V0VmFsdWU6IGZ1bmN0
aW9uICh2YWx1ZSkge1xuICAgICAgICBjdXJyZW50VmFsdWUgPSAnJyArIHZhbHVlO1xuICAgICAg
fSxcbiAgICAgIHN0b3BUcmFja2luZzogZnVuY3Rpb24gKCkge1xuICAgICAgICBkZXRhY2hUcmFj
a2VyKGluc3QpO1xuICAgICAgICBkZWxldGUgbm9kZVt2YWx1ZUZpZWxkXTtcbiAgICAgIH1cbiAg
ICB9KTtcbiAgfSxcblxuICB1cGRhdGVWYWx1ZUlmQ2hhbmdlZDogZnVuY3Rpb24gKGluc3QpIHtc
biAgICBpZiAoIWluc3QpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgdmFyIHRy
YWNrZXIgPSBnZXRUcmFja2VyKGluc3QpO1xuXG4gICAgaWYgKCF0cmFja2VyKSB7XG4gICAgICBp
bnB1dFZhbHVlVHJhY2tpbmcudHJhY2soaW5zdCk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9
XG5cbiAgICB2YXIgbGFzdFZhbHVlID0gdHJhY2tlci5nZXRWYWx1ZSgpO1xuICAgIHZhciBuZXh0
VmFsdWUgPSBnZXRWYWx1ZUZyb21Ob2RlKFJlYWN0RE9NQ29tcG9uZW50VHJlZS5nZXROb2RlRnJv
bUluc3RhbmNlKGluc3QpKTtcblxuICAgIGlmIChuZXh0VmFsdWUgIT09IGxhc3RWYWx1ZSkge1xu
ICAgICAgdHJhY2tlci5zZXRWYWx1ZShuZXh0VmFsdWUpO1xuICAgICAgcmV0dXJuIHRydWU7XG4g
ICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9LFxuICBzdG9wVHJhY2tpbmc6IGZ1bmN0aW9u
IChpbnN0KSB7XG4gICAgdmFyIHRyYWNrZXIgPSBnZXRUcmFja2VyKGluc3QpO1xuICAgIGlmICh0
cmFja2VyKSB7XG4gICAgICB0cmFja2VyLnN0b3BUcmFja2luZygpO1xuICAgIH1cbiAgfVxufTtc
blxubW9kdWxlLmV4cG9ydHMgPSBpbnB1dFZhbHVlVHJhY2tpbmc7XG5cblxuLyoqKioqKioqKioq
KioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3QtZG9tL2xpYi9pbnB1dFZh
bHVlVHJhY2tpbmcuanNcbiAqKiBtb2R1bGUgaWQgPSA3NFxuICoqIG1vZHVsZSBjaHVua3MgPSAw
XG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxu
ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vu
c2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0Ug
ZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRp
b25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVO
VFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICovXG5cbid1c2Ugc3RyaWN0Jztc
blxudmFyIF9wcm9kSW52YXJpYW50ID0gcmVxdWlyZSgnLi9yZWFjdFByb2RJbnZhcmlhbnQnKSxc
biAgICBfYXNzaWduID0gcmVxdWlyZSgnb2JqZWN0LWFzc2lnbicpO1xuXG52YXIgUmVhY3RDb21w
b3NpdGVDb21wb25lbnQgPSByZXF1aXJlKCcuL1JlYWN0Q29tcG9zaXRlQ29tcG9uZW50Jyk7XG52
YXIgUmVhY3RFbXB0eUNvbXBvbmVudCA9IHJlcXVpcmUoJy4vUmVhY3RFbXB0eUNvbXBvbmVudCcp
O1xudmFyIFJlYWN0SG9zdENvbXBvbmVudCA9IHJlcXVpcmUoJy4vUmVhY3RIb3N0Q29tcG9uZW50
Jyk7XG5cbnZhciBnZXROZXh0RGVidWdJRCA9IHJlcXVpcmUoJ3JlYWN0L2xpYi9nZXROZXh0RGVi
dWdJRCcpO1xudmFyIGludmFyaWFudCA9IHJlcXVpcmUoJ2ZianMvbGliL2ludmFyaWFudCcpO1xu
dmFyIHdhcm5pbmcgPSByZXF1aXJlKCdmYmpzL2xpYi93YXJuaW5nJyk7XG5cbi8vIFRvIGF2b2lk
IGEgY3ljbGljIGRlcGVuZGVuY3ksIHdlIGNyZWF0ZSB0aGUgZmluYWwgY2xhc3MgaW4gdGhpcyBt
b2R1bGVcbnZhciBSZWFjdENvbXBvc2l0ZUNvbXBvbmVudFdyYXBwZXIgPSBmdW5jdGlvbiAoZWxl
bWVudCkge1xuICB0aGlzLmNvbnN0cnVjdChlbGVtZW50KTtcbn07XG5cbmZ1bmN0aW9uIGdldERl
Y2xhcmF0aW9uRXJyb3JBZGRlbmR1bShvd25lcikge1xuICBpZiAob3duZXIpIHtcbiAgICB2YXIg
bmFtZSA9IG93bmVyLmdldE5hbWUoKTtcbiAgICBpZiAobmFtZSkge1xuICAgICAgcmV0dXJuICcg
Q2hlY2sgdGhlIHJlbmRlciBtZXRob2Qgb2YgYCcgKyBuYW1lICsgJ2AuJztcbiAgICB9XG4gIH1c
biAgcmV0dXJuICcnO1xufVxuXG4vKipcbiAqIENoZWNrIGlmIHRoZSB0eXBlIHJlZmVyZW5jZSBp
cyBhIGtub3duIGludGVybmFsIHR5cGUuIEkuZS4gbm90IGEgdXNlclxuICogcHJvdmlkZWQgY29t
cG9zaXRlIHR5cGUuXG4gKlxuICogQHBhcmFtIHtmdW5jdGlvbn0gdHlwZVxuICogQHJldHVybiB7
Ym9vbGVhbn0gUmV0dXJucyB0cnVlIGlmIHRoaXMgaXMgYSB2YWxpZCBpbnRlcm5hbCB0eXBlLlxu
ICovXG5mdW5jdGlvbiBpc0ludGVybmFsQ29tcG9uZW50VHlwZSh0eXBlKSB7XG4gIHJldHVybiB0
eXBlb2YgdHlwZSA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgdHlwZS5wcm90b3R5cGUgIT09ICd1
bmRlZmluZWQnICYmIHR5cGVvZiB0eXBlLnByb3RvdHlwZS5tb3VudENvbXBvbmVudCA9PT0gJ2Z1
bmN0aW9uJyAmJiB0eXBlb2YgdHlwZS5wcm90b3R5cGUucmVjZWl2ZUNvbXBvbmVudCA9PT0gJ2Z1
bmN0aW9uJztcbn1cblxuLyoqXG4gKiBHaXZlbiBhIFJlYWN0Tm9kZSwgY3JlYXRlIGFuIGluc3Rh
bmNlIHRoYXQgd2lsbCBhY3R1YWxseSBiZSBtb3VudGVkLlxuICpcbiAqIEBwYXJhbSB7UmVhY3RO
b2RlfSBub2RlXG4gKiBAcGFyYW0ge2Jvb2xlYW59IHNob3VsZEhhdmVEZWJ1Z0lEXG4gKiBAcmV0
dXJuIHtvYmplY3R9IEEgbmV3IGluc3RhbmNlIG9mIHRoZSBlbGVtZW50J3MgY29uc3RydWN0b3Iu
XG4gKiBAcHJvdGVjdGVkXG4gKi9cbmZ1bmN0aW9uIGluc3RhbnRpYXRlUmVhY3RDb21wb25lbnQo
bm9kZSwgc2hvdWxkSGF2ZURlYnVnSUQpIHtcbiAgdmFyIGluc3RhbmNlO1xuXG4gIGlmIChub2Rl
ID09PSBudWxsIHx8IG5vZGUgPT09IGZhbHNlKSB7XG4gICAgaW5zdGFuY2UgPSBSZWFjdEVtcHR5
Q29tcG9uZW50LmNyZWF0ZShpbnN0YW50aWF0ZVJlYWN0Q29tcG9uZW50KTtcbiAgfSBlbHNlIGlm
ICh0eXBlb2Ygbm9kZSA9PT0gJ29iamVjdCcpIHtcbiAgICB2YXIgZWxlbWVudCA9IG5vZGU7XG4g
ICAgdmFyIHR5cGUgPSBlbGVtZW50LnR5cGU7XG4gICAgaWYgKHR5cGVvZiB0eXBlICE9PSAnZnVu
Y3Rpb24nICYmIHR5cGVvZiB0eXBlICE9PSAnc3RyaW5nJykge1xuICAgICAgdmFyIGluZm8gPSAn
JztcbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4g
ICAgICAgIGlmICh0eXBlID09PSB1bmRlZmluZWQgfHwgdHlwZW9mIHR5cGUgPT09ICdvYmplY3Qn
ICYmIHR5cGUgIT09IG51bGwgJiYgT2JqZWN0LmtleXModHlwZSkubGVuZ3RoID09PSAwKSB7XG4g
ICAgICAgICAgaW5mbyArPSAnIFlvdSBsaWtlbHkgZm9yZ290IHRvIGV4cG9ydCB5b3VyIGNvbXBv
bmVudCBmcm9tIHRoZSBmaWxlICcgKyBcIml0J3MgZGVmaW5lZCBpbi5cIjtcbiAgICAgICAgfVxu
ICAgICAgfVxuICAgICAgaW5mbyArPSBnZXREZWNsYXJhdGlvbkVycm9yQWRkZW5kdW0oZWxlbWVu
dC5fb3duZXIpO1xuICAgICAgIWZhbHNlID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9k
dWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ0VsZW1lbnQgdHlwZSBpcyBpbnZhbGlkOiBleHBl
Y3RlZCBhIHN0cmluZyAoZm9yIGJ1aWx0LWluIGNvbXBvbmVudHMpIG9yIGEgY2xhc3MvZnVuY3Rp
b24gKGZvciBjb21wb3NpdGUgY29tcG9uZW50cykgYnV0IGdvdDogJXMuJXMnLCB0eXBlID09IG51
bGwgPyB0eXBlIDogdHlwZW9mIHR5cGUsIGluZm8pIDogX3Byb2RJbnZhcmlhbnQoJzEzMCcsIHR5
cGUgPT0gbnVsbCA/IHR5cGUgOiB0eXBlb2YgdHlwZSwgaW5mbykgOiB2b2lkIDA7XG4gICAgfVxu
XG4gICAgLy8gU3BlY2lhbCBjYXNlIHN0cmluZyB2YWx1ZXNcbiAgICBpZiAodHlwZW9mIGVsZW1l
bnQudHlwZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGluc3RhbmNlID0gUmVhY3RIb3N0Q29tcG9u
ZW50LmNyZWF0ZUludGVybmFsQ29tcG9uZW50KGVsZW1lbnQpO1xuICAgIH0gZWxzZSBpZiAoaXNJ
bnRlcm5hbENvbXBvbmVudFR5cGUoZWxlbWVudC50eXBlKSkge1xuICAgICAgLy8gVGhpcyBpcyB0
ZW1wb3JhcmlseSBhdmFpbGFibGUgZm9yIGN1c3RvbSBjb21wb25lbnRzIHRoYXQgYXJlIG5vdCBz
dHJpbmdcbiAgICAgIC8vIHJlcHJlc2VudGF0aW9ucy4gSS5lLiBBUlQuIE9uY2UgdGhvc2UgYXJl
IHVwZGF0ZWQgdG8gdXNlIHRoZSBzdHJpbmdcbiAgICAgIC8vIHJlcHJlc2VudGF0aW9uLCB3ZSBj
YW4gZHJvcCB0aGlzIGNvZGUgcGF0aC5cbiAgICAgIGluc3RhbmNlID0gbmV3IGVsZW1lbnQudHlw
ZShlbGVtZW50KTtcblxuICAgICAgLy8gV2UgcmVuYW1lZCB0aGlzLiBBbGxvdyB0aGUgb2xkIG5h
bWUgZm9yIGNvbXBhdC4gOihcbiAgICAgIGlmICghaW5zdGFuY2UuZ2V0SG9zdE5vZGUpIHtcbiAg
ICAgICAgaW5zdGFuY2UuZ2V0SG9zdE5vZGUgPSBpbnN0YW5jZS5nZXROYXRpdmVOb2RlO1xuICAg
ICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpbnN0YW5jZSA9IG5ldyBSZWFjdENvbXBvc2l0ZUNv
bXBvbmVudFdyYXBwZXIoZWxlbWVudCk7XG4gICAgfVxuICB9IGVsc2UgaWYgKHR5cGVvZiBub2Rl
ID09PSAnc3RyaW5nJyB8fCB0eXBlb2Ygbm9kZSA9PT0gJ251bWJlcicpIHtcbiAgICBpbnN0YW5j
ZSA9IFJlYWN0SG9zdENvbXBvbmVudC5jcmVhdGVJbnN0YW5jZUZvclRleHQobm9kZSk7XG4gIH0g
ZWxzZSB7XG4gICAgIWZhbHNlID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9u
JyA/IGludmFyaWFudChmYWxzZSwgJ0VuY291bnRlcmVkIGludmFsaWQgUmVhY3Qgbm9kZSBvZiB0
eXBlICVzJywgdHlwZW9mIG5vZGUpIDogX3Byb2RJbnZhcmlhbnQoJzEzMScsIHR5cGVvZiBub2Rl
KSA6IHZvaWQgMDtcbiAgfVxuXG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1
Y3Rpb24nKSB7XG4gICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdh
cm5pbmcodHlwZW9mIGluc3RhbmNlLm1vdW50Q29tcG9uZW50ID09PSAnZnVuY3Rpb24nICYmIHR5
cGVvZiBpbnN0YW5jZS5yZWNlaXZlQ29tcG9uZW50ID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiBp
bnN0YW5jZS5nZXRIb3N0Tm9kZSA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgaW5zdGFuY2UudW5t
b3VudENvbXBvbmVudCA9PT0gJ2Z1bmN0aW9uJywgJ09ubHkgUmVhY3QgQ29tcG9uZW50cyBjYW4g
YmUgbW91bnRlZC4nKSA6IHZvaWQgMDtcbiAgfVxuXG4gIC8vIFRoZXNlIHR3byBmaWVsZHMgYXJl
IHVzZWQgYnkgdGhlIERPTSBhbmQgQVJUIGRpZmZpbmcgYWxnb3JpdGhtc1xuICAvLyByZXNwZWN0
aXZlbHkuIEluc3RlYWQgb2YgdXNpbmcgZXhwYW5kb3Mgb24gY29tcG9uZW50cywgd2Ugc2hvdWxk
IGJlXG4gIC8vIHN0b3JpbmcgdGhlIHN0YXRlIG5lZWRlZCBieSB0aGUgZGlmZmluZyBhbGdvcml0
aG1zIGVsc2V3aGVyZS5cbiAgaW5zdGFuY2UuX21vdW50SW5kZXggPSAwO1xuICBpbnN0YW5jZS5f
bW91bnRJbWFnZSA9IG51bGw7XG5cbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJv
ZHVjdGlvbicpIHtcbiAgICBpbnN0YW5jZS5fZGVidWdJRCA9IHNob3VsZEhhdmVEZWJ1Z0lEID8g
Z2V0TmV4dERlYnVnSUQoKSA6IDA7XG4gIH1cblxuICAvLyBJbnRlcm5hbCBpbnN0YW5jZXMgc2hv
dWxkIGZ1bGx5IGNvbnN0cnVjdGVkIGF0IHRoaXMgcG9pbnQsIHNvIHRoZXkgc2hvdWxkXG4gIC8v
IG5vdCBnZXQgYW55IG5ldyBmaWVsZHMgYWRkZWQgdG8gdGhlbSBhdCB0aGlzIHBvaW50LlxuICBp
ZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIGlmIChPYmpl
Y3QucHJldmVudEV4dGVuc2lvbnMpIHtcbiAgICAgIE9iamVjdC5wcmV2ZW50RXh0ZW5zaW9ucyhp
bnN0YW5jZSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGluc3RhbmNlO1xufVxuXG5fYXNzaWdu
KFJlYWN0Q29tcG9zaXRlQ29tcG9uZW50V3JhcHBlci5wcm90b3R5cGUsIFJlYWN0Q29tcG9zaXRl
Q29tcG9uZW50LCB7XG4gIF9pbnN0YW50aWF0ZVJlYWN0Q29tcG9uZW50OiBpbnN0YW50aWF0ZVJl
YWN0Q29tcG9uZW50XG59KTtcblxubW9kdWxlLmV4cG9ydHMgPSBpbnN0YW50aWF0ZVJlYWN0Q29t
cG9uZW50O1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiog
Li9+L3JlYWN0LWRvbS9saWIvaW5zdGFudGlhdGVSZWFjdENvbXBvbmVudC5qc1xuICoqIG1vZHVs
ZSBpZCA9IDc1XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENvcHlyaWdo
dCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxu
ICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBs
aWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9y
eSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQg
cmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVj
dG9yeS5cbiAqXG4gKiBcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbi8qKlxuICogQHNlZSBodHRw
Oi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrL211bHRpcGFnZS90
aGUtaW5wdXQtZWxlbWVudC5odG1sI2lucHV0LXR5cGUtYXR0ci1zdW1tYXJ5XG4gKi9cblxudmFy
IHN1cHBvcnRlZElucHV0VHlwZXMgPSB7XG4gIGNvbG9yOiB0cnVlLFxuICBkYXRlOiB0cnVlLFxu
ICBkYXRldGltZTogdHJ1ZSxcbiAgJ2RhdGV0aW1lLWxvY2FsJzogdHJ1ZSxcbiAgZW1haWw6IHRy
dWUsXG4gIG1vbnRoOiB0cnVlLFxuICBudW1iZXI6IHRydWUsXG4gIHBhc3N3b3JkOiB0cnVlLFxu
ICByYW5nZTogdHJ1ZSxcbiAgc2VhcmNoOiB0cnVlLFxuICB0ZWw6IHRydWUsXG4gIHRleHQ6IHRy
dWUsXG4gIHRpbWU6IHRydWUsXG4gIHVybDogdHJ1ZSxcbiAgd2VlazogdHJ1ZVxufTtcblxuZnVu
Y3Rpb24gaXNUZXh0SW5wdXRFbGVtZW50KGVsZW0pIHtcbiAgdmFyIG5vZGVOYW1lID0gZWxlbSAm
JiBlbGVtLm5vZGVOYW1lICYmIGVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtcblxuICBpZiAo
bm9kZU5hbWUgPT09ICdpbnB1dCcpIHtcbiAgICByZXR1cm4gISFzdXBwb3J0ZWRJbnB1dFR5cGVz
W2VsZW0udHlwZV07XG4gIH1cblxuICBpZiAobm9kZU5hbWUgPT09ICd0ZXh0YXJlYScpIHtcbiAg
ICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn1cblxubW9kdWxlLmV4cG9y
dHMgPSBpc1RleHRJbnB1dEVsZW1lbnQ7XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VC
UEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3QtZG9tL2xpYi9pc1RleHRJbnB1dEVsZW1lbnQuanNc
biAqKiBtb2R1bGUgaWQgPSA3NlxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4g
KiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyBy
ZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBC
U0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9v
dCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICog
b2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUg
c2FtZSBkaXJlY3RvcnkuXG4gKlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIEV4ZWN1dGlv
bkVudmlyb25tZW50ID0gcmVxdWlyZSgnZmJqcy9saWIvRXhlY3V0aW9uRW52aXJvbm1lbnQnKTtc
bnZhciBlc2NhcGVUZXh0Q29udGVudEZvckJyb3dzZXIgPSByZXF1aXJlKCcuL2VzY2FwZVRleHRD
b250ZW50Rm9yQnJvd3NlcicpO1xudmFyIHNldElubmVySFRNTCA9IHJlcXVpcmUoJy4vc2V0SW5u
ZXJIVE1MJyk7XG5cbi8qKlxuICogU2V0IHRoZSB0ZXh0Q29udGVudCBwcm9wZXJ0eSBvZiBhIG5v
ZGUsIGVuc3VyaW5nIHRoYXQgd2hpdGVzcGFjZSBpcyBwcmVzZXJ2ZWRcbiAqIGV2ZW4gaW4gSUU4
LiBpbm5lclRleHQgaXMgYSBwb29yIHN1YnN0aXR1dGUgZm9yIHRleHRDb250ZW50IGFuZCwgYW1v
bmcgbWFueVxuICogaXNzdWVzLCBpbnNlcnRzIDxicj4gaW5zdGVhZCBvZiB0aGUgbGl0ZXJhbCBu
ZXdsaW5lIGNoYXJzLiBpbm5lckhUTUwgYmVoYXZlc1xuICogYXMgaXQgc2hvdWxkLlxuICpcbiAq
IEBwYXJhbSB7RE9NRWxlbWVudH0gbm9kZVxuICogQHBhcmFtIHtzdHJpbmd9IHRleHRcbiAqIEBp
bnRlcm5hbFxuICovXG52YXIgc2V0VGV4dENvbnRlbnQgPSBmdW5jdGlvbiAobm9kZSwgdGV4dCkg
e1xuICBpZiAodGV4dCkge1xuICAgIHZhciBmaXJzdENoaWxkID0gbm9kZS5maXJzdENoaWxkO1xu
XG4gICAgaWYgKGZpcnN0Q2hpbGQgJiYgZmlyc3RDaGlsZCA9PT0gbm9kZS5sYXN0Q2hpbGQgJiYg
Zmlyc3RDaGlsZC5ub2RlVHlwZSA9PT0gMykge1xuICAgICAgZmlyc3RDaGlsZC5ub2RlVmFsdWUg
PSB0ZXh0O1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfVxuICBub2RlLnRleHRDb250ZW50ID0g
dGV4dDtcbn07XG5cbmlmIChFeGVjdXRpb25FbnZpcm9ubWVudC5jYW5Vc2VET00pIHtcbiAgaWYg
KCEoJ3RleHRDb250ZW50JyBpbiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpKSB7XG4gICAgc2V0
VGV4dENvbnRlbnQgPSBmdW5jdGlvbiAobm9kZSwgdGV4dCkge1xuICAgICAgaWYgKG5vZGUubm9k
ZVR5cGUgPT09IDMpIHtcbiAgICAgICAgbm9kZS5ub2RlVmFsdWUgPSB0ZXh0O1xuICAgICAgICBy
ZXR1cm47XG4gICAgICB9XG4gICAgICBzZXRJbm5lckhUTUwobm9kZSwgZXNjYXBlVGV4dENvbnRl
bnRGb3JCcm93c2VyKHRleHQpKTtcbiAgICB9O1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0g
c2V0VGV4dENvbnRlbnQ7XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09U
RVJcbiAqKiAuL34vcmVhY3QtZG9tL2xpYi9zZXRUZXh0Q29udGVudC5qc1xuICoqIG1vZHVsZSBp
ZCA9IDc3XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENvcHlyaWdodCAy
MDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpc
biAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNl
bnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBv
ZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmln
aHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9y
eS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgX3Byb2RJbnZhcmlhbnQgPSByZXF1
aXJlKCcuL3JlYWN0UHJvZEludmFyaWFudCcpO1xuXG52YXIgUmVhY3RDdXJyZW50T3duZXIgPSBy
ZXF1aXJlKCdyZWFjdC9saWIvUmVhY3RDdXJyZW50T3duZXInKTtcbnZhciBSRUFDVF9FTEVNRU5U
X1RZUEUgPSByZXF1aXJlKCcuL1JlYWN0RWxlbWVudFN5bWJvbCcpO1xuXG52YXIgZ2V0SXRlcmF0
b3JGbiA9IHJlcXVpcmUoJy4vZ2V0SXRlcmF0b3JGbicpO1xudmFyIGludmFyaWFudCA9IHJlcXVp
cmUoJ2ZianMvbGliL2ludmFyaWFudCcpO1xudmFyIEtleUVzY2FwZVV0aWxzID0gcmVxdWlyZSgn
Li9LZXlFc2NhcGVVdGlscycpO1xudmFyIHdhcm5pbmcgPSByZXF1aXJlKCdmYmpzL2xpYi93YXJu
aW5nJyk7XG5cbnZhciBTRVBBUkFUT1IgPSAnLic7XG52YXIgU1VCU0VQQVJBVE9SID0gJzonO1xu
XG4vKipcbiAqIFRoaXMgaXMgaW5saW5lZCBmcm9tIFJlYWN0RWxlbWVudCBzaW5jZSB0aGlzIGZp
bGUgaXMgc2hhcmVkIGJldHdlZW5cbiAqIGlzb21vcnBoaWMgYW5kIHJlbmRlcmVycy4gV2UgY291
bGQgZXh0cmFjdCB0aGlzIHRvIGFcbiAqXG4gKi9cblxuLyoqXG4gKiBUT0RPOiBUZXN0IHRoYXQg
YSBzaW5nbGUgY2hpbGQgYW5kIGFuIGFycmF5IHdpdGggb25lIGl0ZW0gaGF2ZSB0aGUgc2FtZSBr
ZXlcbiAqIHBhdHRlcm4uXG4gKi9cblxudmFyIGRpZFdhcm5BYm91dE1hcHMgPSBmYWxzZTtcblxu
LyoqXG4gKiBHZW5lcmF0ZSBhIGtleSBzdHJpbmcgdGhhdCBpZGVudGlmaWVzIGEgY29tcG9uZW50
IHdpdGhpbiBhIHNldC5cbiAqXG4gKiBAcGFyYW0geyp9IGNvbXBvbmVudCBBIGNvbXBvbmVudCB0
aGF0IGNvdWxkIGNvbnRhaW4gYSBtYW51YWwga2V5LlxuICogQHBhcmFtIHtudW1iZXJ9IGluZGV4
IEluZGV4IHRoYXQgaXMgdXNlZCBpZiBhIG1hbnVhbCBrZXkgaXMgbm90IHByb3ZpZGVkLlxuICog
QHJldHVybiB7c3RyaW5nfVxuICovXG5mdW5jdGlvbiBnZXRDb21wb25lbnRLZXkoY29tcG9uZW50
LCBpbmRleCkge1xuICAvLyBEbyBzb21lIHR5cGVjaGVja2luZyBoZXJlIHNpbmNlIHdlIGNhbGwg
dGhpcyBibGluZGx5LiBXZSB3YW50IHRvIGVuc3VyZVxuICAvLyB0aGF0IHdlIGRvbid0IGJsb2Nr
IHBvdGVudGlhbCBmdXR1cmUgRVMgQVBJcy5cbiAgaWYgKGNvbXBvbmVudCAmJiB0eXBlb2YgY29t
cG9uZW50ID09PSAnb2JqZWN0JyAmJiBjb21wb25lbnQua2V5ICE9IG51bGwpIHtcbiAgICAvLyBF
eHBsaWNpdCBrZXlcbiAgICByZXR1cm4gS2V5RXNjYXBlVXRpbHMuZXNjYXBlKGNvbXBvbmVudC5r
ZXkpO1xuICB9XG4gIC8vIEltcGxpY2l0IGtleSBkZXRlcm1pbmVkIGJ5IHRoZSBpbmRleCBpbiB0
aGUgc2V0XG4gIHJldHVybiBpbmRleC50b1N0cmluZygzNik7XG59XG5cbi8qKlxuICogQHBhcmFt
IHs/Kn0gY2hpbGRyZW4gQ2hpbGRyZW4gdHJlZSBjb250YWluZXIuXG4gKiBAcGFyYW0geyFzdHJp
bmd9IG5hbWVTb0ZhciBOYW1lIG9mIHRoZSBrZXkgcGF0aCBzbyBmYXIuXG4gKiBAcGFyYW0geyFm
dW5jdGlvbn0gY2FsbGJhY2sgQ2FsbGJhY2sgdG8gaW52b2tlIHdpdGggZWFjaCBjaGlsZCBmb3Vu
ZC5cbiAqIEBwYXJhbSB7Pyp9IHRyYXZlcnNlQ29udGV4dCBVc2VkIHRvIHBhc3MgaW5mb3JtYXRp
b24gdGhyb3VnaG91dCB0aGUgdHJhdmVyc2FsXG4gKiBwcm9jZXNzLlxuICogQHJldHVybiB7IW51
bWJlcn0gVGhlIG51bWJlciBvZiBjaGlsZHJlbiBpbiB0aGlzIHN1YnRyZWUuXG4gKi9cbmZ1bmN0
aW9uIHRyYXZlcnNlQWxsQ2hpbGRyZW5JbXBsKGNoaWxkcmVuLCBuYW1lU29GYXIsIGNhbGxiYWNr
LCB0cmF2ZXJzZUNvbnRleHQpIHtcbiAgdmFyIHR5cGUgPSB0eXBlb2YgY2hpbGRyZW47XG5cbiAg
aWYgKHR5cGUgPT09ICd1bmRlZmluZWQnIHx8IHR5cGUgPT09ICdib29sZWFuJykge1xuICAgIC8v
IEFsbCBvZiB0aGUgYWJvdmUgYXJlIHBlcmNlaXZlZCBhcyBudWxsLlxuICAgIGNoaWxkcmVuID0g
bnVsbDtcbiAgfVxuXG4gIGlmIChjaGlsZHJlbiA9PT0gbnVsbCB8fCB0eXBlID09PSAnc3RyaW5n
JyB8fCB0eXBlID09PSAnbnVtYmVyJyB8fFxuICAvLyBUaGUgZm9sbG93aW5nIGlzIGlubGluZWQg
ZnJvbSBSZWFjdEVsZW1lbnQuIFRoaXMgbWVhbnMgd2UgY2FuIG9wdGltaXplXG4gIC8vIHNvbWUg
Y2hlY2tzLiBSZWFjdCBGaWJlciBhbHNvIGlubGluZXMgdGhpcyBsb2dpYyBmb3Igc2ltaWxhciBw
dXJwb3Nlcy5cbiAgdHlwZSA9PT0gJ29iamVjdCcgJiYgY2hpbGRyZW4uJCR0eXBlb2YgPT09IFJF
QUNUX0VMRU1FTlRfVFlQRSkge1xuICAgIGNhbGxiYWNrKHRyYXZlcnNlQ29udGV4dCwgY2hpbGRy
ZW4sXG4gICAgLy8gSWYgaXQncyB0aGUgb25seSBjaGlsZCwgdHJlYXQgdGhlIG5hbWUgYXMgaWYg
aXQgd2FzIHdyYXBwZWQgaW4gYW4gYXJyYXlcbiAgICAvLyBzbyB0aGF0IGl0J3MgY29uc2lzdGVu
dCBpZiB0aGUgbnVtYmVyIG9mIGNoaWxkcmVuIGdyb3dzLlxuICAgIG5hbWVTb0ZhciA9PT0gJycg
PyBTRVBBUkFUT1IgKyBnZXRDb21wb25lbnRLZXkoY2hpbGRyZW4sIDApIDogbmFtZVNvRmFyKTtc
biAgICByZXR1cm4gMTtcbiAgfVxuXG4gIHZhciBjaGlsZDtcbiAgdmFyIG5leHROYW1lO1xuICB2
YXIgc3VidHJlZUNvdW50ID0gMDsgLy8gQ291bnQgb2YgY2hpbGRyZW4gZm91bmQgaW4gdGhlIGN1
cnJlbnQgc3VidHJlZS5cbiAgdmFyIG5leHROYW1lUHJlZml4ID0gbmFtZVNvRmFyID09PSAnJyA/
IFNFUEFSQVRPUiA6IG5hbWVTb0ZhciArIFNVQlNFUEFSQVRPUjtcblxuICBpZiAoQXJyYXkuaXNB
cnJheShjaGlsZHJlbikpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0
aDsgaSsrKSB7XG4gICAgICBjaGlsZCA9IGNoaWxkcmVuW2ldO1xuICAgICAgbmV4dE5hbWUgPSBu
ZXh0TmFtZVByZWZpeCArIGdldENvbXBvbmVudEtleShjaGlsZCwgaSk7XG4gICAgICBzdWJ0cmVl
Q291bnQgKz0gdHJhdmVyc2VBbGxDaGlsZHJlbkltcGwoY2hpbGQsIG5leHROYW1lLCBjYWxsYmFj
aywgdHJhdmVyc2VDb250ZXh0KTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgdmFyIGl0ZXJhdG9y
Rm4gPSBnZXRJdGVyYXRvckZuKGNoaWxkcmVuKTtcbiAgICBpZiAoaXRlcmF0b3JGbikge1xuICAg
ICAgdmFyIGl0ZXJhdG9yID0gaXRlcmF0b3JGbi5jYWxsKGNoaWxkcmVuKTtcbiAgICAgIHZhciBz
dGVwO1xuICAgICAgaWYgKGl0ZXJhdG9yRm4gIT09IGNoaWxkcmVuLmVudHJpZXMpIHtcbiAgICAg
ICAgdmFyIGlpID0gMDtcbiAgICAgICAgd2hpbGUgKCEoc3RlcCA9IGl0ZXJhdG9yLm5leHQoKSku
ZG9uZSkge1xuICAgICAgICAgIGNoaWxkID0gc3RlcC52YWx1ZTtcbiAgICAgICAgICBuZXh0TmFt
ZSA9IG5leHROYW1lUHJlZml4ICsgZ2V0Q29tcG9uZW50S2V5KGNoaWxkLCBpaSsrKTtcbiAgICAg
ICAgICBzdWJ0cmVlQ291bnQgKz0gdHJhdmVyc2VBbGxDaGlsZHJlbkltcGwoY2hpbGQsIG5leHRO
YW1lLCBjYWxsYmFjaywgdHJhdmVyc2VDb250ZXh0KTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNl
IHtcbiAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtc
biAgICAgICAgICB2YXIgbWFwc0FzQ2hpbGRyZW5BZGRlbmR1bSA9ICcnO1xuICAgICAgICAgIGlm
IChSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50KSB7XG4gICAgICAgICAgICB2YXIgbWFwc0FzQ2hp
bGRyZW5Pd25lck5hbWUgPSBSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50LmdldE5hbWUoKTtcbiAg
ICAgICAgICAgIGlmIChtYXBzQXNDaGlsZHJlbk93bmVyTmFtZSkge1xuICAgICAgICAgICAgICBt
YXBzQXNDaGlsZHJlbkFkZGVuZHVtID0gJyBDaGVjayB0aGUgcmVuZGVyIG1ldGhvZCBvZiBgJyAr
IG1hcHNBc0NoaWxkcmVuT3duZXJOYW1lICsgJ2AuJztcbiAgICAgICAgICAgIH1cbiAgICAgICAg
ICB9XG4gICAgICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdh
cm5pbmcoZGlkV2FybkFib3V0TWFwcywgJ1VzaW5nIE1hcHMgYXMgY2hpbGRyZW4gaXMgbm90IHll
dCBmdWxseSBzdXBwb3J0ZWQuIEl0IGlzIGFuICcgKyAnZXhwZXJpbWVudGFsIGZlYXR1cmUgdGhh
dCBtaWdodCBiZSByZW1vdmVkLiBDb252ZXJ0IGl0IHRvIGEgJyArICdzZXF1ZW5jZSAvIGl0ZXJh
YmxlIG9mIGtleWVkIFJlYWN0RWxlbWVudHMgaW5zdGVhZC4lcycsIG1hcHNBc0NoaWxkcmVuQWRk
ZW5kdW0pIDogdm9pZCAwO1xuICAgICAgICAgIGRpZFdhcm5BYm91dE1hcHMgPSB0cnVlO1xuICAg
ICAgICB9XG4gICAgICAgIC8vIEl0ZXJhdG9yIHdpbGwgcHJvdmlkZSBlbnRyeSBbayx2XSB0dXBs
ZXMgcmF0aGVyIHRoYW4gdmFsdWVzLlxuICAgICAgICB3aGlsZSAoIShzdGVwID0gaXRlcmF0b3Iu
bmV4dCgpKS5kb25lKSB7XG4gICAgICAgICAgdmFyIGVudHJ5ID0gc3RlcC52YWx1ZTtcbiAgICAg
ICAgICBpZiAoZW50cnkpIHtcbiAgICAgICAgICAgIGNoaWxkID0gZW50cnlbMV07XG4gICAgICAg
ICAgICBuZXh0TmFtZSA9IG5leHROYW1lUHJlZml4ICsgS2V5RXNjYXBlVXRpbHMuZXNjYXBlKGVu
dHJ5WzBdKSArIFNVQlNFUEFSQVRPUiArIGdldENvbXBvbmVudEtleShjaGlsZCwgMCk7XG4gICAg
ICAgICAgICBzdWJ0cmVlQ291bnQgKz0gdHJhdmVyc2VBbGxDaGlsZHJlbkltcGwoY2hpbGQsIG5l
eHROYW1lLCBjYWxsYmFjaywgdHJhdmVyc2VDb250ZXh0KTtcbiAgICAgICAgICB9XG4gICAgICAg
IH1cbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdvYmplY3QnKSB7XG4gICAgICB2
YXIgYWRkZW5kdW0gPSAnJztcbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3By
b2R1Y3Rpb24nKSB7XG4gICAgICAgIGFkZGVuZHVtID0gJyBJZiB5b3UgbWVhbnQgdG8gcmVuZGVy
IGEgY29sbGVjdGlvbiBvZiBjaGlsZHJlbiwgdXNlIGFuIGFycmF5ICcgKyAnaW5zdGVhZCBvciB3
cmFwIHRoZSBvYmplY3QgdXNpbmcgY3JlYXRlRnJhZ21lbnQob2JqZWN0KSBmcm9tIHRoZSAnICsg
J1JlYWN0IGFkZC1vbnMuJztcbiAgICAgICAgaWYgKGNoaWxkcmVuLl9pc1JlYWN0RWxlbWVudCkg
e1xuICAgICAgICAgIGFkZGVuZHVtID0gXCIgSXQgbG9va3MgbGlrZSB5b3UncmUgdXNpbmcgYW4g
ZWxlbWVudCBjcmVhdGVkIGJ5IGEgZGlmZmVyZW50IFwiICsgJ3ZlcnNpb24gb2YgUmVhY3QuIE1h
a2Ugc3VyZSB0byB1c2Ugb25seSBvbmUgY29weSBvZiBSZWFjdC4nO1xuICAgICAgICB9XG4gICAg
ICAgIGlmIChSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50KSB7XG4gICAgICAgICAgdmFyIG5hbWUg
PSBSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50LmdldE5hbWUoKTtcbiAgICAgICAgICBpZiAobmFt
ZSkge1xuICAgICAgICAgICAgYWRkZW5kdW0gKz0gJyBDaGVjayB0aGUgcmVuZGVyIG1ldGhvZCBv
ZiBgJyArIG5hbWUgKyAnYC4nO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAg
ICAgdmFyIGNoaWxkcmVuU3RyaW5nID0gU3RyaW5nKGNoaWxkcmVuKTtcbiAgICAgICFmYWxzZSA/
IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2Us
ICdPYmplY3RzIGFyZSBub3QgdmFsaWQgYXMgYSBSZWFjdCBjaGlsZCAoZm91bmQ6ICVzKS4lcycs
IGNoaWxkcmVuU3RyaW5nID09PSAnW29iamVjdCBPYmplY3RdJyA/ICdvYmplY3Qgd2l0aCBrZXlz
IHsnICsgT2JqZWN0LmtleXMoY2hpbGRyZW4pLmpvaW4oJywgJykgKyAnfScgOiBjaGlsZHJlblN0
cmluZywgYWRkZW5kdW0pIDogX3Byb2RJbnZhcmlhbnQoJzMxJywgY2hpbGRyZW5TdHJpbmcgPT09
ICdbb2JqZWN0IE9iamVjdF0nID8gJ29iamVjdCB3aXRoIGtleXMgeycgKyBPYmplY3Qua2V5cyhj
aGlsZHJlbikuam9pbignLCAnKSArICd9JyA6IGNoaWxkcmVuU3RyaW5nLCBhZGRlbmR1bSkgOiB2
b2lkIDA7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHN1YnRyZWVDb3VudDtcbn1cblxuLyoqXG4g
KiBUcmF2ZXJzZXMgY2hpbGRyZW4gdGhhdCBhcmUgdHlwaWNhbGx5IHNwZWNpZmllZCBhcyBgcHJv
cHMuY2hpbGRyZW5gLCBidXRcbiAqIG1pZ2h0IGFsc28gYmUgc3BlY2lmaWVkIHRocm91Z2ggYXR0
cmlidXRlczpcbiAqXG4gKiAtIGB0cmF2ZXJzZUFsbENoaWxkcmVuKHRoaXMucHJvcHMuY2hpbGRy
ZW4sIC4uLilgXG4gKiAtIGB0cmF2ZXJzZUFsbENoaWxkcmVuKHRoaXMucHJvcHMubGVmdFBhbmVs
Q2hpbGRyZW4sIC4uLilgXG4gKlxuICogVGhlIGB0cmF2ZXJzZUNvbnRleHRgIGlzIGFuIG9wdGlv
bmFsIGFyZ3VtZW50IHRoYXQgaXMgcGFzc2VkIHRocm91Z2ggdGhlXG4gKiBlbnRpcmUgdHJhdmVy
c2FsLiBJdCBjYW4gYmUgdXNlZCB0byBzdG9yZSBhY2N1bXVsYXRpb25zIG9yIGFueXRoaW5nIGVs
c2UgdGhhdFxuICogdGhlIGNhbGxiYWNrIG1pZ2h0IGZpbmQgcmVsZXZhbnQuXG4gKlxuICogQHBh
cmFtIHs/Kn0gY2hpbGRyZW4gQ2hpbGRyZW4gdHJlZSBvYmplY3QuXG4gKiBAcGFyYW0geyFmdW5j
dGlvbn0gY2FsbGJhY2sgVG8gaW52b2tlIHVwb24gdHJhdmVyc2luZyBlYWNoIGNoaWxkLlxuICog
QHBhcmFtIHs/Kn0gdHJhdmVyc2VDb250ZXh0IENvbnRleHQgZm9yIHRyYXZlcnNhbC5cbiAqIEBy
ZXR1cm4geyFudW1iZXJ9IFRoZSBudW1iZXIgb2YgY2hpbGRyZW4gaW4gdGhpcyBzdWJ0cmVlLlxu
ICovXG5mdW5jdGlvbiB0cmF2ZXJzZUFsbENoaWxkcmVuKGNoaWxkcmVuLCBjYWxsYmFjaywgdHJh
dmVyc2VDb250ZXh0KSB7XG4gIGlmIChjaGlsZHJlbiA9PSBudWxsKSB7XG4gICAgcmV0dXJuIDA7
XG4gIH1cblxuICByZXR1cm4gdHJhdmVyc2VBbGxDaGlsZHJlbkltcGwoY2hpbGRyZW4sICcnLCBj
YWxsYmFjaywgdHJhdmVyc2VDb250ZXh0KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB0cmF2ZXJz
ZUFsbENoaWxkcmVuO1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVS
XG4gKiogLi9+L3JlYWN0LWRvbS9saWIvdHJhdmVyc2VBbGxDaGlsZHJlbi5qc1xuICoqIG1vZHVs
ZSBpZCA9IDc4XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIndXNlIHN0cmljdCc7XG5c
bmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5cbnZhciBfZXh0ZW5kcyA9IE9iamVjdC5hc3Np
Z24gfHwgZnVuY3Rpb24gKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5s
ZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldOyBmb3IgKHZhciBrZXkgaW4g
c291cmNlKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNl
LCBrZXkpKSB7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSB9IHJldHVybiB0YXJnZXQ7
IH07XG5cbmV4cG9ydHMuZGVmYXVsdCA9IGNvbm5lY3RBZHZhbmNlZDtcblxudmFyIF9ob2lzdE5v
blJlYWN0U3RhdGljcyA9IHJlcXVpcmUoJ2hvaXN0LW5vbi1yZWFjdC1zdGF0aWNzJyk7XG5cbnZh
ciBfaG9pc3ROb25SZWFjdFN0YXRpY3MyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaG9pc3RO
b25SZWFjdFN0YXRpY3MpO1xuXG52YXIgX2ludmFyaWFudCA9IHJlcXVpcmUoJ2ludmFyaWFudCcp
O1xuXG52YXIgX2ludmFyaWFudDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9pbnZhcmlhbnQp
O1xuXG52YXIgX3JlYWN0ID0gcmVxdWlyZSgncmVhY3QnKTtcblxudmFyIF9TdWJzY3JpcHRpb24g
PSByZXF1aXJlKCcuLi91dGlscy9TdWJzY3JpcHRpb24nKTtcblxudmFyIF9TdWJzY3JpcHRpb24y
ID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfU3Vic2NyaXB0aW9uKTtcblxudmFyIF9Qcm9wVHlw
ZXMgPSByZXF1aXJlKCcuLi91dGlscy9Qcm9wVHlwZXMnKTtcblxuZnVuY3Rpb24gX2ludGVyb3BS
ZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6
IHsgZGVmYXVsdDogb2JqIH07IH1cblxuZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNl
LCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkg
eyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9u
XCIpOyB9IH1cblxuZnVuY3Rpb24gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4oc2VsZiwgY2Fs
bCkgeyBpZiAoIXNlbGYpIHsgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3Qg
YmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpOyB9IHJldHVy
biBjYWxsICYmICh0eXBlb2YgY2FsbCA9PT0gXCJvYmplY3RcIiB8fCB0eXBlb2YgY2FsbCA9PT0g
XCJmdW5jdGlvblwiKSA/IGNhbGwgOiBzZWxmOyB9XG5cbmZ1bmN0aW9uIF9pbmhlcml0cyhzdWJD
bGFzcywgc3VwZXJDbGFzcykgeyBpZiAodHlwZW9mIHN1cGVyQ2xhc3MgIT09IFwiZnVuY3Rpb25c
IiAmJiBzdXBlckNsYXNzICE9PSBudWxsKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBl
eHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90IFwiICsgdHlw
ZW9mIHN1cGVyQ2xhc3MpOyB9IHN1YkNsYXNzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoc3Vw
ZXJDbGFzcyAmJiBzdXBlckNsYXNzLnByb3RvdHlwZSwgeyBjb25zdHJ1Y3RvcjogeyB2YWx1ZTog
c3ViQ2xhc3MsIGVudW1lcmFibGU6IGZhbHNlLCB3cml0YWJsZTogdHJ1ZSwgY29uZmlndXJhYmxl
OiB0cnVlIH0gfSk7IGlmIChzdXBlckNsYXNzKSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmpl
Y3Quc2V0UHJvdG90eXBlT2Yoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIDogc3ViQ2xhc3MuX19wcm90
b19fID0gc3VwZXJDbGFzczsgfVxuXG5mdW5jdGlvbiBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMo
b2JqLCBrZXlzKSB7IHZhciB0YXJnZXQgPSB7fTsgZm9yICh2YXIgaSBpbiBvYmopIHsgaWYgKGtl
eXMuaW5kZXhPZihpKSA+PSAwKSBjb250aW51ZTsgaWYgKCFPYmplY3QucHJvdG90eXBlLmhhc093
blByb3BlcnR5LmNhbGwob2JqLCBpKSkgY29udGludWU7IHRhcmdldFtpXSA9IG9ialtpXTsgfSBy
ZXR1cm4gdGFyZ2V0OyB9XG5cbnZhciBob3RSZWxvYWRpbmdWZXJzaW9uID0gMDtcbnZhciBkdW1t
eVN0YXRlID0ge307XG5mdW5jdGlvbiBub29wKCkge31cbmZ1bmN0aW9uIG1ha2VTZWxlY3RvclN0
YXRlZnVsKHNvdXJjZVNlbGVjdG9yLCBzdG9yZSkge1xuICAvLyB3cmFwIHRoZSBzZWxlY3RvciBp
biBhbiBvYmplY3QgdGhhdCB0cmFja3MgaXRzIHJlc3VsdHMgYmV0d2VlbiBydW5zLlxuICB2YXIg
c2VsZWN0b3IgPSB7XG4gICAgcnVuOiBmdW5jdGlvbiBydW5Db21wb25lbnRTZWxlY3Rvcihwcm9w
cykge1xuICAgICAgdHJ5IHtcbiAgICAgICAgdmFyIG5leHRQcm9wcyA9IHNvdXJjZVNlbGVjdG9y
KHN0b3JlLmdldFN0YXRlKCksIHByb3BzKTtcbiAgICAgICAgaWYgKG5leHRQcm9wcyAhPT0gc2Vs
ZWN0b3IucHJvcHMgfHwgc2VsZWN0b3IuZXJyb3IpIHtcbiAgICAgICAgICBzZWxlY3Rvci5zaG91
bGRDb21wb25lbnRVcGRhdGUgPSB0cnVlO1xuICAgICAgICAgIHNlbGVjdG9yLnByb3BzID0gbmV4
dFByb3BzO1xuICAgICAgICAgIHNlbGVjdG9yLmVycm9yID0gbnVsbDtcbiAgICAgICAgfVxuICAg
ICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgc2VsZWN0b3Iuc2hvdWxkQ29tcG9uZW50VXBk
YXRlID0gdHJ1ZTtcbiAgICAgICAgc2VsZWN0b3IuZXJyb3IgPSBlcnJvcjtcbiAgICAgIH1cbiAg
ICB9XG4gIH07XG5cbiAgcmV0dXJuIHNlbGVjdG9yO1xufVxuXG5mdW5jdGlvbiBjb25uZWN0QWR2
YW5jZWQoXG4vKlxuICBzZWxlY3RvckZhY3RvcnkgaXMgYSBmdW5jIHRoYXQgaXMgcmVzcG9uc2li
bGUgZm9yIHJldHVybmluZyB0aGUgc2VsZWN0b3IgZnVuY3Rpb24gdXNlZCB0b1xuICBjb21wdXRl
IG5ldyBwcm9wcyBmcm9tIHN0YXRlLCBwcm9wcywgYW5kIGRpc3BhdGNoLiBGb3IgZXhhbXBsZTpc
biAgICAgZXhwb3J0IGRlZmF1bHQgY29ubmVjdEFkdmFuY2VkKChkaXNwYXRjaCwgb3B0aW9ucykg
PT4gKHN0YXRlLCBwcm9wcykgPT4gKHtcbiAgICAgIHRoaW5nOiBzdGF0ZS50aGluZ3NbcHJvcHMu
dGhpbmdJZF0sXG4gICAgICBzYXZlVGhpbmc6IGZpZWxkcyA9PiBkaXNwYXRjaChhY3Rpb25DcmVh
dG9ycy5zYXZlVGhpbmcocHJvcHMudGhpbmdJZCwgZmllbGRzKSksXG4gICAgfSkpKFlvdXJDb21w
b25lbnQpXG4gICBBY2Nlc3MgdG8gZGlzcGF0Y2ggaXMgcHJvdmlkZWQgdG8gdGhlIGZhY3Rvcnkg
c28gc2VsZWN0b3JGYWN0b3JpZXMgY2FuIGJpbmQgYWN0aW9uQ3JlYXRvcnNcbiAgb3V0c2lkZSBv
ZiB0aGVpciBzZWxlY3RvciBhcyBhbiBvcHRpbWl6YXRpb24uIE9wdGlvbnMgcGFzc2VkIHRvIGNv
bm5lY3RBZHZhbmNlZCBhcmUgcGFzc2VkIHRvXG4gIHRoZSBzZWxlY3RvckZhY3RvcnksIGFsb25n
IHdpdGggZGlzcGxheU5hbWUgYW5kIFdyYXBwZWRDb21wb25lbnQsIGFzIHRoZSBzZWNvbmQgYXJn
dW1lbnQuXG4gICBOb3RlIHRoYXQgc2VsZWN0b3JGYWN0b3J5IGlzIHJlc3BvbnNpYmxlIGZvciBh
bGwgY2FjaGluZy9tZW1vaXphdGlvbiBvZiBpbmJvdW5kIGFuZCBvdXRib3VuZFxuICBwcm9wcy4g
RG8gbm90IHVzZSBjb25uZWN0QWR2YW5jZWQgZGlyZWN0bHkgd2l0aG91dCBtZW1vaXppbmcgcmVz
dWx0cyBiZXR3ZWVuIGNhbGxzIHRvIHlvdXJcbiAgc2VsZWN0b3IsIG90aGVyd2lzZSB0aGUgQ29u
bmVjdCBjb21wb25lbnQgd2lsbCByZS1yZW5kZXIgb24gZXZlcnkgc3RhdGUgb3IgcHJvcHMgY2hh
bmdlLlxuKi9cbnNlbGVjdG9yRmFjdG9yeSkge1xuICB2YXIgX2NvbnRleHRUeXBlcywgX2NoaWxk
Q29udGV4dFR5cGVzO1xuXG4gIHZhciBfcmVmID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJn
dW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiB7fSxcbiAgICAgIF9yZWYk
Z2V0RGlzcGxheU5hbWUgPSBfcmVmLmdldERpc3BsYXlOYW1lLFxuICAgICAgZ2V0RGlzcGxheU5h
bWUgPSBfcmVmJGdldERpc3BsYXlOYW1lID09PSB1bmRlZmluZWQgPyBmdW5jdGlvbiAobmFtZSkg
e1xuICAgIHJldHVybiAnQ29ubmVjdEFkdmFuY2VkKCcgKyBuYW1lICsgJyknO1xuICB9IDogX3Jl
ZiRnZXREaXNwbGF5TmFtZSxcbiAgICAgIF9yZWYkbWV0aG9kTmFtZSA9IF9yZWYubWV0aG9kTmFt
ZSxcbiAgICAgIG1ldGhvZE5hbWUgPSBfcmVmJG1ldGhvZE5hbWUgPT09IHVuZGVmaW5lZCA/ICdj
b25uZWN0QWR2YW5jZWQnIDogX3JlZiRtZXRob2ROYW1lLFxuICAgICAgX3JlZiRyZW5kZXJDb3Vu
dFByb3AgPSBfcmVmLnJlbmRlckNvdW50UHJvcCxcbiAgICAgIHJlbmRlckNvdW50UHJvcCA9IF9y
ZWYkcmVuZGVyQ291bnRQcm9wID09PSB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiBfcmVmJHJlbmRl
ckNvdW50UHJvcCxcbiAgICAgIF9yZWYkc2hvdWxkSGFuZGxlU3RhdCA9IF9yZWYuc2hvdWxkSGFu
ZGxlU3RhdGVDaGFuZ2VzLFxuICAgICAgc2hvdWxkSGFuZGxlU3RhdGVDaGFuZ2VzID0gX3JlZiRz
aG91bGRIYW5kbGVTdGF0ID09PSB1bmRlZmluZWQgPyB0cnVlIDogX3JlZiRzaG91bGRIYW5kbGVT
dGF0LFxuICAgICAgX3JlZiRzdG9yZUtleSA9IF9yZWYuc3RvcmVLZXksXG4gICAgICBzdG9yZUtl
eSA9IF9yZWYkc3RvcmVLZXkgPT09IHVuZGVmaW5lZCA/ICdzdG9yZScgOiBfcmVmJHN0b3JlS2V5
LFxuICAgICAgX3JlZiR3aXRoUmVmID0gX3JlZi53aXRoUmVmLFxuICAgICAgd2l0aFJlZiA9IF9y
ZWYkd2l0aFJlZiA9PT0gdW5kZWZpbmVkID8gZmFsc2UgOiBfcmVmJHdpdGhSZWYsXG4gICAgICBj
b25uZWN0T3B0aW9ucyA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhfcmVmLCBbJ2dldERpc3Bs
YXlOYW1lJywgJ21ldGhvZE5hbWUnLCAncmVuZGVyQ291bnRQcm9wJywgJ3Nob3VsZEhhbmRsZVN0
YXRlQ2hhbmdlcycsICdzdG9yZUtleScsICd3aXRoUmVmJ10pO1xuXG4gIHZhciBzdWJzY3JpcHRp
b25LZXkgPSBzdG9yZUtleSArICdTdWJzY3JpcHRpb24nO1xuICB2YXIgdmVyc2lvbiA9IGhvdFJl
bG9hZGluZ1ZlcnNpb24rKztcblxuICB2YXIgY29udGV4dFR5cGVzID0gKF9jb250ZXh0VHlwZXMg
PSB7fSwgX2NvbnRleHRUeXBlc1tzdG9yZUtleV0gPSBfUHJvcFR5cGVzLnN0b3JlU2hhcGUsIF9j
b250ZXh0VHlwZXNbc3Vic2NyaXB0aW9uS2V5XSA9IF9Qcm9wVHlwZXMuc3Vic2NyaXB0aW9uU2hh
cGUsIF9jb250ZXh0VHlwZXMpO1xuICB2YXIgY2hpbGRDb250ZXh0VHlwZXMgPSAoX2NoaWxkQ29u
dGV4dFR5cGVzID0ge30sIF9jaGlsZENvbnRleHRUeXBlc1tzdWJzY3JpcHRpb25LZXldID0gX1By
b3BUeXBlcy5zdWJzY3JpcHRpb25TaGFwZSwgX2NoaWxkQ29udGV4dFR5cGVzKTtcblxuICByZXR1
cm4gZnVuY3Rpb24gd3JhcFdpdGhDb25uZWN0KFdyYXBwZWRDb21wb25lbnQpIHtcbiAgICAoMCwg
X2ludmFyaWFudDIuZGVmYXVsdCkodHlwZW9mIFdyYXBwZWRDb21wb25lbnQgPT0gJ2Z1bmN0aW9u
JywgJ1lvdSBtdXN0IHBhc3MgYSBjb21wb25lbnQgdG8gdGhlIGZ1bmN0aW9uIHJldHVybmVkIGJ5
ICcgKyAoJ2Nvbm5lY3QuIEluc3RlYWQgcmVjZWl2ZWQgJyArIEpTT04uc3RyaW5naWZ5KFdyYXBw
ZWRDb21wb25lbnQpKSk7XG5cbiAgICB2YXIgd3JhcHBlZENvbXBvbmVudE5hbWUgPSBXcmFwcGVk
Q29tcG9uZW50LmRpc3BsYXlOYW1lIHx8IFdyYXBwZWRDb21wb25lbnQubmFtZSB8fCAnQ29tcG9u
ZW50JztcblxuICAgIHZhciBkaXNwbGF5TmFtZSA9IGdldERpc3BsYXlOYW1lKHdyYXBwZWRDb21w
b25lbnROYW1lKTtcblxuICAgIHZhciBzZWxlY3RvckZhY3RvcnlPcHRpb25zID0gX2V4dGVuZHMo
e30sIGNvbm5lY3RPcHRpb25zLCB7XG4gICAgICBnZXREaXNwbGF5TmFtZTogZ2V0RGlzcGxheU5h
bWUsXG4gICAgICBtZXRob2ROYW1lOiBtZXRob2ROYW1lLFxuICAgICAgcmVuZGVyQ291bnRQcm9w
OiByZW5kZXJDb3VudFByb3AsXG4gICAgICBzaG91bGRIYW5kbGVTdGF0ZUNoYW5nZXM6IHNob3Vs
ZEhhbmRsZVN0YXRlQ2hhbmdlcyxcbiAgICAgIHN0b3JlS2V5OiBzdG9yZUtleSxcbiAgICAgIHdp
dGhSZWY6IHdpdGhSZWYsXG4gICAgICBkaXNwbGF5TmFtZTogZGlzcGxheU5hbWUsXG4gICAgICB3
cmFwcGVkQ29tcG9uZW50TmFtZTogd3JhcHBlZENvbXBvbmVudE5hbWUsXG4gICAgICBXcmFwcGVk
Q29tcG9uZW50OiBXcmFwcGVkQ29tcG9uZW50XG4gICAgfSk7XG5cbiAgICB2YXIgQ29ubmVjdCA9
IGZ1bmN0aW9uIChfQ29tcG9uZW50KSB7XG4gICAgICBfaW5oZXJpdHMoQ29ubmVjdCwgX0NvbXBv
bmVudCk7XG5cbiAgICAgIGZ1bmN0aW9uIENvbm5lY3QocHJvcHMsIGNvbnRleHQpIHtcbiAgICAg
ICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIENvbm5lY3QpO1xuXG4gICAgICAgIHZhciBfdGhpcyA9
IF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHRoaXMsIF9Db21wb25lbnQuY2FsbCh0aGlzLCBw
cm9wcywgY29udGV4dCkpO1xuXG4gICAgICAgIF90aGlzLnZlcnNpb24gPSB2ZXJzaW9uO1xuICAg
ICAgICBfdGhpcy5zdGF0ZSA9IHt9O1xuICAgICAgICBfdGhpcy5yZW5kZXJDb3VudCA9IDA7XG4g
ICAgICAgIF90aGlzLnN0b3JlID0gcHJvcHNbc3RvcmVLZXldIHx8IGNvbnRleHRbc3RvcmVLZXld
O1xuICAgICAgICBfdGhpcy5wcm9wc01vZGUgPSBCb29sZWFuKHByb3BzW3N0b3JlS2V5XSk7XG4g
ICAgICAgIF90aGlzLnNldFdyYXBwZWRJbnN0YW5jZSA9IF90aGlzLnNldFdyYXBwZWRJbnN0YW5j
ZS5iaW5kKF90aGlzKTtcblxuICAgICAgICAoMCwgX2ludmFyaWFudDIuZGVmYXVsdCkoX3RoaXMu
c3RvcmUsICdDb3VsZCBub3QgZmluZCBcIicgKyBzdG9yZUtleSArICdcIiBpbiBlaXRoZXIgdGhl
IGNvbnRleHQgb3IgcHJvcHMgb2YgJyArICgnXCInICsgZGlzcGxheU5hbWUgKyAnXCIuIEVpdGhl
ciB3cmFwIHRoZSByb290IGNvbXBvbmVudCBpbiBhIDxQcm92aWRlcj4sICcpICsgKCdvciBleHBs
aWNpdGx5IHBhc3MgXCInICsgc3RvcmVLZXkgKyAnXCIgYXMgYSBwcm9wIHRvIFwiJyArIGRpc3Bs
YXlOYW1lICsgJ1wiLicpKTtcblxuICAgICAgICBfdGhpcy5pbml0U2VsZWN0b3IoKTtcbiAgICAg
ICAgX3RoaXMuaW5pdFN1YnNjcmlwdGlvbigpO1xuICAgICAgICByZXR1cm4gX3RoaXM7XG4gICAg
ICB9XG5cbiAgICAgIENvbm5lY3QucHJvdG90eXBlLmdldENoaWxkQ29udGV4dCA9IGZ1bmN0aW9u
IGdldENoaWxkQ29udGV4dCgpIHtcbiAgICAgICAgdmFyIF9yZWYyO1xuXG4gICAgICAgIC8vIElm
IHRoaXMgY29tcG9uZW50IHJlY2VpdmVkIHN0b3JlIGZyb20gcHJvcHMsIGl0cyBzdWJzY3JpcHRp
b24gc2hvdWxkIGJlIHRyYW5zcGFyZW50XG4gICAgICAgIC8vIHRvIGFueSBkZXNjZW5kYW50cyBy
ZWNlaXZpbmcgc3RvcmUrc3Vic2NyaXB0aW9uIGZyb20gY29udGV4dDsgaXQgcGFzc2VzIGFsb25n
XG4gICAgICAgIC8vIHN1YnNjcmlwdGlvbiBwYXNzZWQgdG8gaXQuIE90aGVyd2lzZSwgaXQgc2hh
ZG93cyB0aGUgcGFyZW50IHN1YnNjcmlwdGlvbiwgd2hpY2ggYWxsb3dzXG4gICAgICAgIC8vIENv
bm5lY3QgdG8gY29udHJvbCBvcmRlcmluZyBvZiBub3RpZmljYXRpb25zIHRvIGZsb3cgdG9wLWRv
d24uXG4gICAgICAgIHZhciBzdWJzY3JpcHRpb24gPSB0aGlzLnByb3BzTW9kZSA/IG51bGwgOiB0
aGlzLnN1YnNjcmlwdGlvbjtcbiAgICAgICAgcmV0dXJuIF9yZWYyID0ge30sIF9yZWYyW3N1YnNj
cmlwdGlvbktleV0gPSBzdWJzY3JpcHRpb24gfHwgdGhpcy5jb250ZXh0W3N1YnNjcmlwdGlvbktl
eV0sIF9yZWYyO1xuICAgICAgfTtcblxuICAgICAgQ29ubmVjdC5wcm90b3R5cGUuY29tcG9uZW50
RGlkTW91bnQgPSBmdW5jdGlvbiBjb21wb25lbnREaWRNb3VudCgpIHtcbiAgICAgICAgaWYgKCFz
aG91bGRIYW5kbGVTdGF0ZUNoYW5nZXMpIHJldHVybjtcblxuICAgICAgICAvLyBjb21wb25lbnRX
aWxsTW91bnQgZmlyZXMgZHVyaW5nIHNlcnZlciBzaWRlIHJlbmRlcmluZywgYnV0IGNvbXBvbmVu
dERpZE1vdW50IGFuZFxuICAgICAgICAvLyBjb21wb25lbnRXaWxsVW5tb3VudCBkbyBub3QuIEJl
Y2F1c2Ugb2YgdGhpcywgdHJ5U3Vic2NyaWJlIGhhcHBlbnMgZHVyaW5nIC4uLmRpZE1vdW50Llxu
ICAgICAgICAvLyBPdGhlcndpc2UsIHVuc3Vic2NyaXB0aW9uIHdvdWxkIG5ldmVyIHRha2UgcGxh
Y2UgZHVyaW5nIFNTUiwgY2F1c2luZyBhIG1lbW9yeSBsZWFrLlxuICAgICAgICAvLyBUbyBoYW5k
bGUgdGhlIGNhc2Ugd2hlcmUgYSBjaGlsZCBjb21wb25lbnQgbWF5IGhhdmUgdHJpZ2dlcmVkIGEg
c3RhdGUgY2hhbmdlIGJ5XG4gICAgICAgIC8vIGRpc3BhdGNoaW5nIGFuIGFjdGlvbiBpbiBpdHMg
Y29tcG9uZW50V2lsbE1vdW50LCB3ZSBoYXZlIHRvIHJlLXJ1biB0aGUgc2VsZWN0IGFuZCBtYXli
ZVxuICAgICAgICAvLyByZS1yZW5kZXIuXG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uLnRyeVN1
YnNjcmliZSgpO1xuICAgICAgICB0aGlzLnNlbGVjdG9yLnJ1bih0aGlzLnByb3BzKTtcbiAgICAg
ICAgaWYgKHRoaXMuc2VsZWN0b3Iuc2hvdWxkQ29tcG9uZW50VXBkYXRlKSB0aGlzLmZvcmNlVXBk
YXRlKCk7XG4gICAgICB9O1xuXG4gICAgICBDb25uZWN0LnByb3RvdHlwZS5jb21wb25lbnRXaWxs
UmVjZWl2ZVByb3BzID0gZnVuY3Rpb24gY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyhuZXh0UHJv
cHMpIHtcbiAgICAgICAgdGhpcy5zZWxlY3Rvci5ydW4obmV4dFByb3BzKTtcbiAgICAgIH07XG5c
biAgICAgIENvbm5lY3QucHJvdG90eXBlLnNob3VsZENvbXBvbmVudFVwZGF0ZSA9IGZ1bmN0aW9u
IHNob3VsZENvbXBvbmVudFVwZGF0ZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0b3Iu
c2hvdWxkQ29tcG9uZW50VXBkYXRlO1xuICAgICAgfTtcblxuICAgICAgQ29ubmVjdC5wcm90b3R5
cGUuY29tcG9uZW50V2lsbFVubW91bnQgPSBmdW5jdGlvbiBjb21wb25lbnRXaWxsVW5tb3VudCgp
IHtcbiAgICAgICAgaWYgKHRoaXMuc3Vic2NyaXB0aW9uKSB0aGlzLnN1YnNjcmlwdGlvbi50cnlV
bnN1YnNjcmliZSgpO1xuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbiA9IG51bGw7XG4gICAgICAg
IHRoaXMubm90aWZ5TmVzdGVkU3VicyA9IG5vb3A7XG4gICAgICAgIHRoaXMuc3RvcmUgPSBudWxs
O1xuICAgICAgICB0aGlzLnNlbGVjdG9yLnJ1biA9IG5vb3A7XG4gICAgICAgIHRoaXMuc2VsZWN0
b3Iuc2hvdWxkQ29tcG9uZW50VXBkYXRlID0gZmFsc2U7XG4gICAgICB9O1xuXG4gICAgICBDb25u
ZWN0LnByb3RvdHlwZS5nZXRXcmFwcGVkSW5zdGFuY2UgPSBmdW5jdGlvbiBnZXRXcmFwcGVkSW5z
dGFuY2UoKSB7XG4gICAgICAgICgwLCBfaW52YXJpYW50Mi5kZWZhdWx0KSh3aXRoUmVmLCAnVG8g
YWNjZXNzIHRoZSB3cmFwcGVkIGluc3RhbmNlLCB5b3UgbmVlZCB0byBzcGVjaWZ5ICcgKyAoJ3sg
d2l0aFJlZjogdHJ1ZSB9IGluIHRoZSBvcHRpb25zIGFyZ3VtZW50IG9mIHRoZSAnICsgbWV0aG9k
TmFtZSArICcoKSBjYWxsLicpKTtcbiAgICAgICAgcmV0dXJuIHRoaXMud3JhcHBlZEluc3RhbmNl
O1xuICAgICAgfTtcblxuICAgICAgQ29ubmVjdC5wcm90b3R5cGUuc2V0V3JhcHBlZEluc3RhbmNl
ID0gZnVuY3Rpb24gc2V0V3JhcHBlZEluc3RhbmNlKHJlZikge1xuICAgICAgICB0aGlzLndyYXBw
ZWRJbnN0YW5jZSA9IHJlZjtcbiAgICAgIH07XG5cbiAgICAgIENvbm5lY3QucHJvdG90eXBlLmlu
aXRTZWxlY3RvciA9IGZ1bmN0aW9uIGluaXRTZWxlY3RvcigpIHtcbiAgICAgICAgdmFyIHNvdXJj
ZVNlbGVjdG9yID0gc2VsZWN0b3JGYWN0b3J5KHRoaXMuc3RvcmUuZGlzcGF0Y2gsIHNlbGVjdG9y
RmFjdG9yeU9wdGlvbnMpO1xuICAgICAgICB0aGlzLnNlbGVjdG9yID0gbWFrZVNlbGVjdG9yU3Rh
dGVmdWwoc291cmNlU2VsZWN0b3IsIHRoaXMuc3RvcmUpO1xuICAgICAgICB0aGlzLnNlbGVjdG9y
LnJ1bih0aGlzLnByb3BzKTtcbiAgICAgIH07XG5cbiAgICAgIENvbm5lY3QucHJvdG90eXBlLmlu
aXRTdWJzY3JpcHRpb24gPSBmdW5jdGlvbiBpbml0U3Vic2NyaXB0aW9uKCkge1xuICAgICAgICBp
ZiAoIXNob3VsZEhhbmRsZVN0YXRlQ2hhbmdlcykgcmV0dXJuO1xuXG4gICAgICAgIC8vIHBhcmVu
dFN1YidzIHNvdXJjZSBzaG91bGQgbWF0Y2ggd2hlcmUgc3RvcmUgY2FtZSBmcm9tOiBwcm9wcyB2
cy4gY29udGV4dC4gQSBjb21wb25lbnRcbiAgICAgICAgLy8gY29ubmVjdGVkIHRvIHRoZSBzdG9y
ZSB2aWEgcHJvcHMgc2hvdWxkbid0IHVzZSBzdWJzY3JpcHRpb24gZnJvbSBjb250ZXh0LCBvciB2
aWNlIHZlcnNhLlxuICAgICAgICB2YXIgcGFyZW50U3ViID0gKHRoaXMucHJvcHNNb2RlID8gdGhp
cy5wcm9wcyA6IHRoaXMuY29udGV4dClbc3Vic2NyaXB0aW9uS2V5XTtcbiAgICAgICAgdGhpcy5z
dWJzY3JpcHRpb24gPSBuZXcgX1N1YnNjcmlwdGlvbjIuZGVmYXVsdCh0aGlzLnN0b3JlLCBwYXJl
bnRTdWIsIHRoaXMub25TdGF0ZUNoYW5nZS5iaW5kKHRoaXMpKTtcblxuICAgICAgICAvLyBgbm90
aWZ5TmVzdGVkU3Vic2AgaXMgZHVwbGljYXRlZCB0byBoYW5kbGUgdGhlIGNhc2Ugd2hlcmUgdGhl
IGNvbXBvbmVudCBpcyAgdW5tb3VudGVkIGluXG4gICAgICAgIC8vIHRoZSBtaWRkbGUgb2YgdGhl
IG5vdGlmaWNhdGlvbiBsb29wLCB3aGVyZSBgdGhpcy5zdWJzY3JpcHRpb25gIHdpbGwgdGhlbiBi
ZSBudWxsLiBBblxuICAgICAgICAvLyBleHRyYSBudWxsIGNoZWNrIGV2ZXJ5IGNoYW5nZSBjYW4g
YmUgYXZvaWRlZCBieSBjb3B5aW5nIHRoZSBtZXRob2Qgb250byBgdGhpc2AgYW5kIHRoZW5cbiAg
ICAgICAgLy8gcmVwbGFjaW5nIGl0IHdpdGggYSBuby1vcCBvbiB1bm1vdW50LiBUaGlzIGNhbiBw
cm9iYWJseSBiZSBhdm9pZGVkIGlmIFN1YnNjcmlwdGlvbidzXG4gICAgICAgIC8vIGxpc3RlbmVy
cyBsb2dpYyBpcyBjaGFuZ2VkIHRvIG5vdCBjYWxsIGxpc3RlbmVycyB0aGF0IGhhdmUgYmVlbiB1
bnN1YnNjcmliZWQgaW4gdGhlXG4gICAgICAgIC8vIG1pZGRsZSBvZiB0aGUgbm90aWZpY2F0aW9u
IGxvb3AuXG4gICAgICAgIHRoaXMubm90aWZ5TmVzdGVkU3VicyA9IHRoaXMuc3Vic2NyaXB0aW9u
Lm5vdGlmeU5lc3RlZFN1YnMuYmluZCh0aGlzLnN1YnNjcmlwdGlvbik7XG4gICAgICB9O1xuXG4g
ICAgICBDb25uZWN0LnByb3RvdHlwZS5vblN0YXRlQ2hhbmdlID0gZnVuY3Rpb24gb25TdGF0ZUNo
YW5nZSgpIHtcbiAgICAgICAgdGhpcy5zZWxlY3Rvci5ydW4odGhpcy5wcm9wcyk7XG5cbiAgICAg
ICAgaWYgKCF0aGlzLnNlbGVjdG9yLnNob3VsZENvbXBvbmVudFVwZGF0ZSkge1xuICAgICAgICAg
IHRoaXMubm90aWZ5TmVzdGVkU3VicygpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRo
aXMuY29tcG9uZW50RGlkVXBkYXRlID0gdGhpcy5ub3RpZnlOZXN0ZWRTdWJzT25Db21wb25lbnRE
aWRVcGRhdGU7XG4gICAgICAgICAgdGhpcy5zZXRTdGF0ZShkdW1teVN0YXRlKTtcbiAgICAgICAg
fVxuICAgICAgfTtcblxuICAgICAgQ29ubmVjdC5wcm90b3R5cGUubm90aWZ5TmVzdGVkU3Vic09u
Q29tcG9uZW50RGlkVXBkYXRlID0gZnVuY3Rpb24gbm90aWZ5TmVzdGVkU3Vic09uQ29tcG9uZW50
RGlkVXBkYXRlKCkge1xuICAgICAgICAvLyBgY29tcG9uZW50RGlkVXBkYXRlYCBpcyBjb25kaXRp
b25hbGx5IGltcGxlbWVudGVkIHdoZW4gYG9uU3RhdGVDaGFuZ2VgIGRldGVybWluZXMgaXRcbiAg
ICAgICAgLy8gbmVlZHMgdG8gbm90aWZ5IG5lc3RlZCBzdWJzLiBPbmNlIGNhbGxlZCwgaXQgdW5p
bXBsZW1lbnRzIGl0c2VsZiB1bnRpbCBmdXJ0aGVyIHN0YXRlXG4gICAgICAgIC8vIGNoYW5nZXMg
b2NjdXIuIERvaW5nIGl0IHRoaXMgd2F5IHZzIGhhdmluZyBhIHBlcm1hbmVudCBgY29tcG9uZW50
RGlkVXBkYXRlYCB0aGF0IGRvZXNcbiAgICAgICAgLy8gYSBib29sZWFuIGNoZWNrIGV2ZXJ5IHRp
bWUgYXZvaWRzIGFuIGV4dHJhIG1ldGhvZCBjYWxsIG1vc3Qgb2YgdGhlIHRpbWUsIHJlc3VsdGlu
Z1xuICAgICAgICAvLyBpbiBzb21lIHBlcmYgYm9vc3QuXG4gICAgICAgIHRoaXMuY29tcG9uZW50
RGlkVXBkYXRlID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLm5vdGlmeU5lc3RlZFN1YnMoKTtc
biAgICAgIH07XG5cbiAgICAgIENvbm5lY3QucHJvdG90eXBlLmlzU3Vic2NyaWJlZCA9IGZ1bmN0
aW9uIGlzU3Vic2NyaWJlZCgpIHtcbiAgICAgICAgcmV0dXJuIEJvb2xlYW4odGhpcy5zdWJzY3Jp
cHRpb24pICYmIHRoaXMuc3Vic2NyaXB0aW9uLmlzU3Vic2NyaWJlZCgpO1xuICAgICAgfTtcblxu
ICAgICAgQ29ubmVjdC5wcm90b3R5cGUuYWRkRXh0cmFQcm9wcyA9IGZ1bmN0aW9uIGFkZEV4dHJh
UHJvcHMocHJvcHMpIHtcbiAgICAgICAgaWYgKCF3aXRoUmVmICYmICFyZW5kZXJDb3VudFByb3Ag
JiYgISh0aGlzLnByb3BzTW9kZSAmJiB0aGlzLnN1YnNjcmlwdGlvbikpIHJldHVybiBwcm9wcztc
biAgICAgICAgLy8gbWFrZSBhIHNoYWxsb3cgY29weSBzbyB0aGF0IGZpZWxkcyBhZGRlZCBkb24n
dCBsZWFrIHRvIHRoZSBvcmlnaW5hbCBzZWxlY3Rvci5cbiAgICAgICAgLy8gdGhpcyBpcyBlc3Bl
Y2lhbGx5IGltcG9ydGFudCBmb3IgJ3JlZicgc2luY2UgdGhhdCdzIGEgcmVmZXJlbmNlIGJhY2sg
dG8gdGhlIGNvbXBvbmVudFxuICAgICAgICAvLyBpbnN0YW5jZS4gYSBzaW5nbGV0b24gbWVtb2l6
ZWQgc2VsZWN0b3Igd291bGQgdGhlbiBiZSBob2xkaW5nIGEgcmVmZXJlbmNlIHRvIHRoZVxuICAg
ICAgICAvLyBpbnN0YW5jZSwgcHJldmVudGluZyB0aGUgaW5zdGFuY2UgZnJvbSBiZWluZyBnYXJi
YWdlIGNvbGxlY3RlZCwgYW5kIHRoYXQgd291bGQgYmUgYmFkXG4gICAgICAgIHZhciB3aXRoRXh0
cmFzID0gX2V4dGVuZHMoe30sIHByb3BzKTtcbiAgICAgICAgaWYgKHdpdGhSZWYpIHdpdGhFeHRy
YXMucmVmID0gdGhpcy5zZXRXcmFwcGVkSW5zdGFuY2U7XG4gICAgICAgIGlmIChyZW5kZXJDb3Vu
dFByb3ApIHdpdGhFeHRyYXNbcmVuZGVyQ291bnRQcm9wXSA9IHRoaXMucmVuZGVyQ291bnQrKztc
biAgICAgICAgaWYgKHRoaXMucHJvcHNNb2RlICYmIHRoaXMuc3Vic2NyaXB0aW9uKSB3aXRoRXh0
cmFzW3N1YnNjcmlwdGlvbktleV0gPSB0aGlzLnN1YnNjcmlwdGlvbjtcbiAgICAgICAgcmV0dXJu
IHdpdGhFeHRyYXM7XG4gICAgICB9O1xuXG4gICAgICBDb25uZWN0LnByb3RvdHlwZS5yZW5kZXIg
PSBmdW5jdGlvbiByZW5kZXIoKSB7XG4gICAgICAgIHZhciBzZWxlY3RvciA9IHRoaXMuc2VsZWN0
b3I7XG4gICAgICAgIHNlbGVjdG9yLnNob3VsZENvbXBvbmVudFVwZGF0ZSA9IGZhbHNlO1xuXG4g
ICAgICAgIGlmIChzZWxlY3Rvci5lcnJvcikge1xuICAgICAgICAgIHRocm93IHNlbGVjdG9yLmVy
cm9yO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiAoMCwgX3JlYWN0LmNyZWF0
ZUVsZW1lbnQpKFdyYXBwZWRDb21wb25lbnQsIHRoaXMuYWRkRXh0cmFQcm9wcyhzZWxlY3Rvci5w
cm9wcykpO1xuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICByZXR1cm4gQ29ubmVjdDtcbiAg
ICB9KF9yZWFjdC5Db21wb25lbnQpO1xuXG4gICAgQ29ubmVjdC5XcmFwcGVkQ29tcG9uZW50ID0g
V3JhcHBlZENvbXBvbmVudDtcbiAgICBDb25uZWN0LmRpc3BsYXlOYW1lID0gZGlzcGxheU5hbWU7
XG4gICAgQ29ubmVjdC5jaGlsZENvbnRleHRUeXBlcyA9IGNoaWxkQ29udGV4dFR5cGVzO1xuICAg
IENvbm5lY3QuY29udGV4dFR5cGVzID0gY29udGV4dFR5cGVzO1xuICAgIENvbm5lY3QucHJvcFR5
cGVzID0gY29udGV4dFR5cGVzO1xuXG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAn
cHJvZHVjdGlvbicpIHtcbiAgICAgIENvbm5lY3QucHJvdG90eXBlLmNvbXBvbmVudFdpbGxVcGRh
dGUgPSBmdW5jdGlvbiBjb21wb25lbnRXaWxsVXBkYXRlKCkge1xuICAgICAgICB2YXIgX3RoaXMy
ID0gdGhpcztcblxuICAgICAgICAvLyBXZSBhcmUgaG90IHJlbG9hZGluZyFcbiAgICAgICAgaWYg
KHRoaXMudmVyc2lvbiAhPT0gdmVyc2lvbikge1xuICAgICAgICAgIHRoaXMudmVyc2lvbiA9IHZl
cnNpb247XG4gICAgICAgICAgdGhpcy5pbml0U2VsZWN0b3IoKTtcblxuICAgICAgICAgIC8vIElm
IGFueSBjb25uZWN0ZWQgZGVzY2VuZGFudHMgZG9uJ3QgaG90IHJlbG9hZCAoYW5kIHJlc3Vic2Ny
aWJlIGluIHRoZSBwcm9jZXNzKSwgdGhlaXJcbiAgICAgICAgICAvLyBsaXN0ZW5lcnMgd2lsbCBi
ZSBsb3N0IHdoZW4gd2UgdW5zdWJzY3JpYmUuIFVuZm9ydHVuYXRlbHksIGJ5IGNvcHlpbmcgb3Zl
ciBhbGxcbiAgICAgICAgICAvLyBsaXN0ZW5lcnMsIHRoaXMgZG9lcyBtZWFuIHRoYXQgdGhlIG9s
ZCB2ZXJzaW9ucyBvZiBjb25uZWN0ZWQgZGVzY2VuZGFudHMgd2lsbCBzdGlsbCBiZVxuICAgICAg
ICAgIC8vIG5vdGlmaWVkIG9mIHN0YXRlIGNoYW5nZXM7IGhvd2V2ZXIsIHRoZWlyIG9uU3RhdGVD
aGFuZ2UgZnVuY3Rpb24gaXMgYSBuby1vcCBzbyB0aGlzXG4gICAgICAgICAgLy8gaXNuJ3QgYSBo
dWdlIGRlYWwuXG4gICAgICAgICAgdmFyIG9sZExpc3RlbmVycyA9IFtdO1xuXG4gICAgICAgICAg
aWYgKHRoaXMuc3Vic2NyaXB0aW9uKSB7XG4gICAgICAgICAgICBvbGRMaXN0ZW5lcnMgPSB0aGlz
LnN1YnNjcmlwdGlvbi5saXN0ZW5lcnMuZ2V0KCk7XG4gICAgICAgICAgICB0aGlzLnN1YnNjcmlw
dGlvbi50cnlVbnN1YnNjcmliZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLmluaXRT
dWJzY3JpcHRpb24oKTtcbiAgICAgICAgICBpZiAoc2hvdWxkSGFuZGxlU3RhdGVDaGFuZ2VzKSB7
XG4gICAgICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbi50cnlTdWJzY3JpYmUoKTtcbiAgICAgICAg
ICAgIG9sZExpc3RlbmVycy5mb3JFYWNoKGZ1bmN0aW9uIChsaXN0ZW5lcikge1xuICAgICAgICAg
ICAgICByZXR1cm4gX3RoaXMyLnN1YnNjcmlwdGlvbi5saXN0ZW5lcnMuc3Vic2NyaWJlKGxpc3Rl
bmVyKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfTtc
biAgICB9XG5cbiAgICByZXR1cm4gKDAsIF9ob2lzdE5vblJlYWN0U3RhdGljczIuZGVmYXVsdCko
Q29ubmVjdCwgV3JhcHBlZENvbXBvbmVudCk7XG4gIH07XG59XG5cblxuLyoqKioqKioqKioqKioq
KioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3QtcmVkdXgvbGliL2NvbXBvbmVu
dHMvY29ubmVjdEFkdmFuY2VkLmpzXG4gKiogbW9kdWxlIGlkID0gNzlcbiAqKiBtb2R1bGUgY2h1
bmtzID0gMFxuICoqLyIsIid1c2Ugc3RyaWN0JztcblxuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1
ZTtcbmV4cG9ydHMud3JhcE1hcFRvUHJvcHNDb25zdGFudCA9IHdyYXBNYXBUb1Byb3BzQ29uc3Rh
bnQ7XG5leHBvcnRzLmdldERlcGVuZHNPbk93blByb3BzID0gZ2V0RGVwZW5kc09uT3duUHJvcHM7
XG5leHBvcnRzLndyYXBNYXBUb1Byb3BzRnVuYyA9IHdyYXBNYXBUb1Byb3BzRnVuYztcblxudmFy
IF92ZXJpZnlQbGFpbk9iamVjdCA9IHJlcXVpcmUoJy4uL3V0aWxzL3ZlcmlmeVBsYWluT2JqZWN0
Jyk7XG5cbnZhciBfdmVyaWZ5UGxhaW5PYmplY3QyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChf
dmVyaWZ5UGxhaW5PYmplY3QpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9i
aikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmog
fTsgfVxuXG5mdW5jdGlvbiB3cmFwTWFwVG9Qcm9wc0NvbnN0YW50KGdldENvbnN0YW50KSB7XG4g
IHJldHVybiBmdW5jdGlvbiBpbml0Q29uc3RhbnRTZWxlY3RvcihkaXNwYXRjaCwgb3B0aW9ucykg
e1xuICAgIHZhciBjb25zdGFudCA9IGdldENvbnN0YW50KGRpc3BhdGNoLCBvcHRpb25zKTtcblxu
ICAgIGZ1bmN0aW9uIGNvbnN0YW50U2VsZWN0b3IoKSB7XG4gICAgICByZXR1cm4gY29uc3RhbnQ7
XG4gICAgfVxuICAgIGNvbnN0YW50U2VsZWN0b3IuZGVwZW5kc09uT3duUHJvcHMgPSBmYWxzZTtc
biAgICByZXR1cm4gY29uc3RhbnRTZWxlY3RvcjtcbiAgfTtcbn1cblxuLy8gZGVwZW5kc09uT3du
UHJvcHMgaXMgdXNlZCBieSBjcmVhdGVNYXBUb1Byb3BzUHJveHkgdG8gZGV0ZXJtaW5lIHdoZXRo
ZXIgdG8gcGFzcyBwcm9wcyBhcyBhcmdzXG4vLyB0byB0aGUgbWFwVG9Qcm9wcyBmdW5jdGlvbiBi
ZWluZyB3cmFwcGVkLiBJdCBpcyBhbHNvIHVzZWQgYnkgbWFrZVB1cmVQcm9wc1NlbGVjdG9yIHRv
IGRldGVybWluZVxuLy8gd2hldGhlciBtYXBUb1Byb3BzIG5lZWRzIHRvIGJlIGludm9rZWQgd2hl
biBwcm9wcyBoYXZlIGNoYW5nZWQuXG4vLyBcbi8vIEEgbGVuZ3RoIG9mIG9uZSBzaWduYWxzIHRo
YXQgbWFwVG9Qcm9wcyBkb2VzIG5vdCBkZXBlbmQgb24gcHJvcHMgZnJvbSB0aGUgcGFyZW50IGNv
bXBvbmVudC5cbi8vIEEgbGVuZ3RoIG9mIHplcm8gaXMgYXNzdW1lZCB0byBtZWFuIG1hcFRvUHJv
cHMgaXMgZ2V0dGluZyBhcmdzIHZpYSBhcmd1bWVudHMgb3IgLi4uYXJncyBhbmRcbi8vIHRoZXJl
Zm9yZSBub3QgcmVwb3J0aW5nIGl0cyBsZW5ndGggYWNjdXJhdGVseS4uXG5mdW5jdGlvbiBnZXRE
ZXBlbmRzT25Pd25Qcm9wcyhtYXBUb1Byb3BzKSB7XG4gIHJldHVybiBtYXBUb1Byb3BzLmRlcGVu
ZHNPbk93blByb3BzICE9PSBudWxsICYmIG1hcFRvUHJvcHMuZGVwZW5kc09uT3duUHJvcHMgIT09
IHVuZGVmaW5lZCA/IEJvb2xlYW4obWFwVG9Qcm9wcy5kZXBlbmRzT25Pd25Qcm9wcykgOiBtYXBU
b1Byb3BzLmxlbmd0aCAhPT0gMTtcbn1cblxuLy8gVXNlZCBieSB3aGVuTWFwU3RhdGVUb1Byb3Bz
SXNGdW5jdGlvbiBhbmQgd2hlbk1hcERpc3BhdGNoVG9Qcm9wc0lzRnVuY3Rpb24sXG4vLyB0aGlz
IGZ1bmN0aW9uIHdyYXBzIG1hcFRvUHJvcHMgaW4gYSBwcm94eSBmdW5jdGlvbiB3aGljaCBkb2Vz
IHNldmVyYWwgdGhpbmdzOlxuLy8gXG4vLyAgKiBEZXRlY3RzIHdoZXRoZXIgdGhlIG1hcFRvUHJv
cHMgZnVuY3Rpb24gYmVpbmcgY2FsbGVkIGRlcGVuZHMgb24gcHJvcHMsIHdoaWNoXG4vLyAgICBp
cyB1c2VkIGJ5IHNlbGVjdG9yRmFjdG9yeSB0byBkZWNpZGUgaWYgaXQgc2hvdWxkIHJlaW52b2tl
IG9uIHByb3BzIGNoYW5nZXMuXG4vLyAgICBcbi8vICAqIE9uIGZpcnN0IGNhbGwsIGhhbmRsZXMg
bWFwVG9Qcm9wcyBpZiByZXR1cm5zIGFub3RoZXIgZnVuY3Rpb24sIGFuZCB0cmVhdHMgdGhhdFxu
Ly8gICAgbmV3IGZ1bmN0aW9uIGFzIHRoZSB0cnVlIG1hcFRvUHJvcHMgZm9yIHN1YnNlcXVlbnQg
Y2FsbHMuXG4vLyAgICBcbi8vICAqIE9uIGZpcnN0IGNhbGwsIHZlcmlmaWVzIHRoZSBmaXJzdCBy
ZXN1bHQgaXMgYSBwbGFpbiBvYmplY3QsIGluIG9yZGVyIHRvIHdhcm5cbi8vICAgIHRoZSBkZXZl
bG9wZXIgdGhhdCB0aGVpciBtYXBUb1Byb3BzIGZ1bmN0aW9uIGlzIG5vdCByZXR1cm5pbmcgYSB2
YWxpZCByZXN1bHQuXG4vLyAgICBcbmZ1bmN0aW9uIHdyYXBNYXBUb1Byb3BzRnVuYyhtYXBUb1By
b3BzLCBtZXRob2ROYW1lKSB7XG4gIHJldHVybiBmdW5jdGlvbiBpbml0UHJveHlTZWxlY3Rvcihk
aXNwYXRjaCwgX3JlZikge1xuICAgIHZhciBkaXNwbGF5TmFtZSA9IF9yZWYuZGlzcGxheU5hbWU7
XG5cbiAgICB2YXIgcHJveHkgPSBmdW5jdGlvbiBtYXBUb1Byb3BzUHJveHkoc3RhdGVPckRpc3Bh
dGNoLCBvd25Qcm9wcykge1xuICAgICAgcmV0dXJuIHByb3h5LmRlcGVuZHNPbk93blByb3BzID8g
cHJveHkubWFwVG9Qcm9wcyhzdGF0ZU9yRGlzcGF0Y2gsIG93blByb3BzKSA6IHByb3h5Lm1hcFRv
UHJvcHMoc3RhdGVPckRpc3BhdGNoKTtcbiAgICB9O1xuXG4gICAgLy8gYWxsb3cgZGV0ZWN0RmFj
dG9yeUFuZFZlcmlmeSB0byBnZXQgb3duUHJvcHNcbiAgICBwcm94eS5kZXBlbmRzT25Pd25Qcm9w
cyA9IHRydWU7XG5cbiAgICBwcm94eS5tYXBUb1Byb3BzID0gZnVuY3Rpb24gZGV0ZWN0RmFjdG9y
eUFuZFZlcmlmeShzdGF0ZU9yRGlzcGF0Y2gsIG93blByb3BzKSB7XG4gICAgICBwcm94eS5tYXBU
b1Byb3BzID0gbWFwVG9Qcm9wcztcbiAgICAgIHByb3h5LmRlcGVuZHNPbk93blByb3BzID0gZ2V0
RGVwZW5kc09uT3duUHJvcHMobWFwVG9Qcm9wcyk7XG4gICAgICB2YXIgcHJvcHMgPSBwcm94eShz
dGF0ZU9yRGlzcGF0Y2gsIG93blByb3BzKTtcblxuICAgICAgaWYgKHR5cGVvZiBwcm9wcyA9PT0g
J2Z1bmN0aW9uJykge1xuICAgICAgICBwcm94eS5tYXBUb1Byb3BzID0gcHJvcHM7XG4gICAgICAg
IHByb3h5LmRlcGVuZHNPbk93blByb3BzID0gZ2V0RGVwZW5kc09uT3duUHJvcHMocHJvcHMpO1xu
ICAgICAgICBwcm9wcyA9IHByb3h5KHN0YXRlT3JEaXNwYXRjaCwgb3duUHJvcHMpO1xuICAgICAg
fVxuXG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgKDAs
IF92ZXJpZnlQbGFpbk9iamVjdDIuZGVmYXVsdCkocHJvcHMsIGRpc3BsYXlOYW1lLCBtZXRob2RO
YW1lKTtcblxuICAgICAgcmV0dXJuIHByb3BzO1xuICAgIH07XG5cbiAgICByZXR1cm4gcHJveHk7
XG4gIH07XG59XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAq
KiAuL34vcmVhY3QtcmVkdXgvbGliL2Nvbm5lY3Qvd3JhcE1hcFRvUHJvcHMuanNcbiAqKiBtb2R1
bGUgaWQgPSA4MFxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiJ3VzZSBzdHJpY3QnO1xu
XG5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuZXhwb3J0cy5jb25uZWN0ID0gZXhwb3J0cy5j
b25uZWN0QWR2YW5jZWQgPSBleHBvcnRzLmNyZWF0ZVByb3ZpZGVyID0gZXhwb3J0cy5Qcm92aWRl
ciA9IHVuZGVmaW5lZDtcblxudmFyIF9Qcm92aWRlciA9IHJlcXVpcmUoJy4vY29tcG9uZW50cy9Q
cm92aWRlcicpO1xuXG52YXIgX1Byb3ZpZGVyMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX1By
b3ZpZGVyKTtcblxudmFyIF9jb25uZWN0QWR2YW5jZWQgPSByZXF1aXJlKCcuL2NvbXBvbmVudHMv
Y29ubmVjdEFkdmFuY2VkJyk7XG5cbnZhciBfY29ubmVjdEFkdmFuY2VkMiA9IF9pbnRlcm9wUmVx
dWlyZURlZmF1bHQoX2Nvbm5lY3RBZHZhbmNlZCk7XG5cbnZhciBfY29ubmVjdCA9IHJlcXVpcmUo
Jy4vY29ubmVjdC9jb25uZWN0Jyk7XG5cbnZhciBfY29ubmVjdDIgPSBfaW50ZXJvcFJlcXVpcmVE
ZWZhdWx0KF9jb25uZWN0KTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmop
IHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07
IH1cblxuZXhwb3J0cy5Qcm92aWRlciA9IF9Qcm92aWRlcjIuZGVmYXVsdDtcbmV4cG9ydHMuY3Jl
YXRlUHJvdmlkZXIgPSBfUHJvdmlkZXIuY3JlYXRlUHJvdmlkZXI7XG5leHBvcnRzLmNvbm5lY3RB
ZHZhbmNlZCA9IF9jb25uZWN0QWR2YW5jZWQyLmRlZmF1bHQ7XG5leHBvcnRzLmNvbm5lY3QgPSBf
Y29ubmVjdDIuZGVmYXVsdDtcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZP
T1RFUlxuICoqIC4vfi9yZWFjdC1yZWR1eC9saWIvaW5kZXguanNcbiAqKiBtb2R1bGUgaWQgPSA4
MVxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiJ3VzZSBzdHJpY3QnO1xuXG5leHBvcnRz
Ll9fZXNNb2R1bGUgPSB0cnVlO1xuZXhwb3J0cy5zdG9yZVNoYXBlID0gZXhwb3J0cy5zdWJzY3Jp
cHRpb25TaGFwZSA9IHVuZGVmaW5lZDtcblxudmFyIF9wcm9wVHlwZXMgPSByZXF1aXJlKCdwcm9w
LXR5cGVzJyk7XG5cbnZhciBfcHJvcFR5cGVzMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3By
b3BUeXBlcyk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVy
biBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbnZh
ciBzdWJzY3JpcHRpb25TaGFwZSA9IGV4cG9ydHMuc3Vic2NyaXB0aW9uU2hhcGUgPSBfcHJvcFR5
cGVzMi5kZWZhdWx0LnNoYXBlKHtcbiAgdHJ5U3Vic2NyaWJlOiBfcHJvcFR5cGVzMi5kZWZhdWx0
LmZ1bmMuaXNSZXF1aXJlZCxcbiAgdHJ5VW5zdWJzY3JpYmU6IF9wcm9wVHlwZXMyLmRlZmF1bHQu
ZnVuYy5pc1JlcXVpcmVkLFxuICBub3RpZnlOZXN0ZWRTdWJzOiBfcHJvcFR5cGVzMi5kZWZhdWx0
LmZ1bmMuaXNSZXF1aXJlZCxcbiAgaXNTdWJzY3JpYmVkOiBfcHJvcFR5cGVzMi5kZWZhdWx0LmZ1
bmMuaXNSZXF1aXJlZFxufSk7XG5cbnZhciBzdG9yZVNoYXBlID0gZXhwb3J0cy5zdG9yZVNoYXBl
ID0gX3Byb3BUeXBlczIuZGVmYXVsdC5zaGFwZSh7XG4gIHN1YnNjcmliZTogX3Byb3BUeXBlczIu
ZGVmYXVsdC5mdW5jLmlzUmVxdWlyZWQsXG4gIGRpc3BhdGNoOiBfcHJvcFR5cGVzMi5kZWZhdWx0
LmZ1bmMuaXNSZXF1aXJlZCxcbiAgZ2V0U3RhdGU6IF9wcm9wVHlwZXMyLmRlZmF1bHQuZnVuYy5p
c1JlcXVpcmVkXG59KTtcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RF
UlxuICoqIC4vfi9yZWFjdC1yZWR1eC9saWIvdXRpbHMvUHJvcFR5cGVzLmpzXG4gKiogbW9kdWxl
IGlkID0gODJcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIid1c2Ugc3RyaWN0Jztcblxu
ZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcbmV4cG9ydHMuZGVmYXVsdCA9IHZlcmlmeVBsYWlu
T2JqZWN0O1xuXG52YXIgX2lzUGxhaW5PYmplY3QgPSByZXF1aXJlKCdsb2Rhc2gvaXNQbGFpbk9i
amVjdCcpO1xuXG52YXIgX2lzUGxhaW5PYmplY3QyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChf
aXNQbGFpbk9iamVjdCk7XG5cbnZhciBfd2FybmluZyA9IHJlcXVpcmUoJy4vd2FybmluZycpO1xu
XG52YXIgX3dhcm5pbmcyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfd2FybmluZyk7XG5cbmZ1
bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9f
ZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbmZ1bmN0aW9uIHZlcmlmeVBs
YWluT2JqZWN0KHZhbHVlLCBkaXNwbGF5TmFtZSwgbWV0aG9kTmFtZSkge1xuICBpZiAoISgwLCBf
aXNQbGFpbk9iamVjdDIuZGVmYXVsdCkodmFsdWUpKSB7XG4gICAgKDAsIF93YXJuaW5nMi5kZWZh
dWx0KShtZXRob2ROYW1lICsgJygpIGluICcgKyBkaXNwbGF5TmFtZSArICcgbXVzdCByZXR1cm4g
YSBwbGFpbiBvYmplY3QuIEluc3RlYWQgcmVjZWl2ZWQgJyArIHZhbHVlICsgJy4nKTtcbiAgfVxu
fVxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3Jl
YWN0LXJlZHV4L2xpYi91dGlscy92ZXJpZnlQbGFpbk9iamVjdC5qc1xuICoqIG1vZHVsZSBpZCA9
IDgzXG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCJpbXBvcnQgUmVhY3QsIHsgQ29tcG9u
ZW50LCBQcm9wVHlwZXMgfSBmcm9tICdyZWFjdCdcbmltcG9ydCBjbGFzc25hbWVzIGZyb20gJ2Ns
YXNzbmFtZXMnXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFRvZG9UZXh0SW5wdXQgZXh0ZW5kcyBD
b21wb25lbnQge1xuICBzdGF0aWMgcHJvcFR5cGVzID0ge1xuICAgIG9uU2F2ZTogUHJvcFR5cGVz
LmZ1bmMuaXNSZXF1aXJlZCxcbiAgICB0ZXh0OiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIHBsYWNl
aG9sZGVyOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIGVkaXRpbmc6IFByb3BUeXBlcy5ib29sLFxu
ICAgIG5ld1RvZG86IFByb3BUeXBlcy5ib29sXG4gIH1cblxuICBzdGF0ZSA9IHtcbiAgICB0ZXh0
OiB0aGlzLnByb3BzLnRleHQgfHwgJydcbiAgfVxuXG4gIGhhbmRsZVN1Ym1pdCA9IGUgPT4ge1xu
ICAgIGNvbnN0IHRleHQgPSBlLnRhcmdldC52YWx1ZS50cmltKClcbiAgICBpZiAoZS53aGljaCA9
PT0gMTMpIHtcbiAgICAgIHRoaXMucHJvcHMub25TYXZlKHRleHQpXG4gICAgICBpZiAodGhpcy5w
cm9wcy5uZXdUb2RvKSB7XG4gICAgICAgIHRoaXMuc2V0U3RhdGUoeyB0ZXh0OiAnJyB9KVxuICAg
ICAgfVxuICAgIH1cbiAgfVxuXG4gIGhhbmRsZUNoYW5nZSA9IGUgPT4ge1xuICAgIHRoaXMuc2V0
U3RhdGUoeyB0ZXh0OiBlLnRhcmdldC52YWx1ZSB9KVxuICB9XG5cbiAgaGFuZGxlQmx1ciA9IGUg
PT4ge1xuICAgIGlmICghdGhpcy5wcm9wcy5uZXdUb2RvKSB7XG4gICAgICB0aGlzLnByb3BzLm9u
U2F2ZShlLnRhcmdldC52YWx1ZSlcbiAgICB9XG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgcmV0
dXJuIChcbiAgICAgIDxpbnB1dCBjbGFzc05hbWU9e1xuICAgICAgICBjbGFzc25hbWVzKHtcbiAg
ICAgICAgICBlZGl0OiB0aGlzLnByb3BzLmVkaXRpbmcsXG4gICAgICAgICAgJ25ldy10b2RvJzog
dGhpcy5wcm9wcy5uZXdUb2RvXG4gICAgICAgIH0pfVxuICAgICAgICB0eXBlPVwidGV4dFwiXG4g
ICAgICAgIHBsYWNlaG9sZGVyPXt0aGlzLnByb3BzLnBsYWNlaG9sZGVyfVxuICAgICAgICBhdXRv
Rm9jdXM9XCJ0cnVlXCJcbiAgICAgICAgdmFsdWU9e3RoaXMuc3RhdGUudGV4dH1cbiAgICAgICAg
b25CbHVyPXt0aGlzLmhhbmRsZUJsdXJ9XG4gICAgICAgIG9uQ2hhbmdlPXt0aGlzLmhhbmRsZUNo
YW5nZX1cbiAgICAgICAgb25LZXlEb3duPXt0aGlzLmhhbmRsZVN1Ym1pdH0gLz5cbiAgICApXG4g
IH1cbn1cblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIC4vc3JjL2NvbXBvbmVudHMv
VG9kb1RleHRJbnB1dC5qc1xuICoqLyIsImV4cG9ydCBjb25zdCBBRERfVE9ETyA9ICdBRERfVE9E
TydcbmV4cG9ydCBjb25zdCBERUxFVEVfVE9ETyA9ICdERUxFVEVfVE9ETydcbmV4cG9ydCBjb25z
dCBFRElUX1RPRE8gPSAnRURJVF9UT0RPJ1xuZXhwb3J0IGNvbnN0IENPTVBMRVRFX1RPRE8gPSAn
Q09NUExFVEVfVE9ETydcbmV4cG9ydCBjb25zdCBDT01QTEVURV9BTEwgPSAnQ09NUExFVEVfQUxM
J1xuZXhwb3J0IGNvbnN0IENMRUFSX0NPTVBMRVRFRCA9ICdDTEVBUl9DT01QTEVURUQnXG5cblxu
XG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiAuL3NyYy9jb25zdGFudHMvQWN0aW9uVHlwZXMu
anNcbiAqKi8iLCJleHBvcnQgY29uc3QgU0hPV19BTEwgPSAnc2hvd19hbGwnXG5leHBvcnQgY29u
c3QgU0hPV19DT01QTEVURUQgPSAnc2hvd19jb21wbGV0ZWQnXG5leHBvcnQgY29uc3QgU0hPV19B
Q1RJVkUgPSAnc2hvd19hY3RpdmUnXG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiAu
L3NyYy9jb25zdGFudHMvVG9kb0ZpbHRlcnMuanNcbiAqKi8iLCIvLyBzaGltIGZvciB1c2luZyBw
cm9jZXNzIGluIGJyb3dzZXJcbnZhciBwcm9jZXNzID0gbW9kdWxlLmV4cG9ydHMgPSB7fTtcblxu
Ly8gY2FjaGVkIGZyb20gd2hhdGV2ZXIgZ2xvYmFsIGlzIHByZXNlbnQgc28gdGhhdCB0ZXN0IHJ1
bm5lcnMgdGhhdCBzdHViIGl0XG4vLyBkb24ndCBicmVhayB0aGluZ3MuICBCdXQgd2UgbmVlZCB0
byB3cmFwIGl0IGluIGEgdHJ5IGNhdGNoIGluIGNhc2UgaXQgaXNcbi8vIHdyYXBwZWQgaW4gc3Ry
aWN0IG1vZGUgY29kZSB3aGljaCBkb2Vzbid0IGRlZmluZSBhbnkgZ2xvYmFscy4gIEl0J3MgaW5z
aWRlIGFcbi8vIGZ1bmN0aW9uIGJlY2F1c2UgdHJ5L2NhdGNoZXMgZGVvcHRpbWl6ZSBpbiBjZXJ0
YWluIGVuZ2luZXMuXG5cbnZhciBjYWNoZWRTZXRUaW1lb3V0O1xudmFyIGNhY2hlZENsZWFyVGlt
ZW91dDtcblxuZnVuY3Rpb24gZGVmYXVsdFNldFRpbW91dCgpIHtcbiAgICB0aHJvdyBuZXcgRXJy
b3IoJ3NldFRpbWVvdXQgaGFzIG5vdCBiZWVuIGRlZmluZWQnKTtcbn1cbmZ1bmN0aW9uIGRlZmF1
bHRDbGVhclRpbWVvdXQgKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignY2xlYXJUaW1lb3V0IGhh
cyBub3QgYmVlbiBkZWZpbmVkJyk7XG59XG4oZnVuY3Rpb24gKCkge1xuICAgIHRyeSB7XG4gICAg
ICAgIGlmICh0eXBlb2Ygc2V0VGltZW91dCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAg
Y2FjaGVkU2V0VGltZW91dCA9IHNldFRpbWVvdXQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAg
ICAgICBjYWNoZWRTZXRUaW1lb3V0ID0gZGVmYXVsdFNldFRpbW91dDtcbiAgICAgICAgfVxuICAg
IH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgY2FjaGVkU2V0VGltZW91dCA9IGRlZmF1bHRTZXRUaW1v
dXQ7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICAgIGlmICh0eXBlb2YgY2xlYXJUaW1lb3V0ID09
PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBjYWNoZWRDbGVhclRpbWVvdXQgPSBjbGVhclRp
bWVvdXQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjYWNoZWRDbGVhclRpbWVvdXQg
PSBkZWZhdWx0Q2xlYXJUaW1lb3V0O1xuICAgICAgICB9XG4gICAgfSBjYXRjaCAoZSkge1xuICAg
ICAgICBjYWNoZWRDbGVhclRpbWVvdXQgPSBkZWZhdWx0Q2xlYXJUaW1lb3V0O1xuICAgIH1cbn0g
KCkpXG5mdW5jdGlvbiBydW5UaW1lb3V0KGZ1bikge1xuICAgIGlmIChjYWNoZWRTZXRUaW1lb3V0
ID09PSBzZXRUaW1lb3V0KSB7XG4gICAgICAgIC8vbm9ybWFsIGVudmlyb21lbnRzIGluIHNhbmUg
c2l0dWF0aW9uc1xuICAgICAgICByZXR1cm4gc2V0VGltZW91dChmdW4sIDApO1xuICAgIH1cbiAg
ICAvLyBpZiBzZXRUaW1lb3V0IHdhc24ndCBhdmFpbGFibGUgYnV0IHdhcyBsYXR0ZXIgZGVmaW5l
ZFxuICAgIGlmICgoY2FjaGVkU2V0VGltZW91dCA9PT0gZGVmYXVsdFNldFRpbW91dCB8fCAhY2Fj
aGVkU2V0VGltZW91dCkgJiYgc2V0VGltZW91dCkge1xuICAgICAgICBjYWNoZWRTZXRUaW1lb3V0
ID0gc2V0VGltZW91dDtcbiAgICAgICAgcmV0dXJuIHNldFRpbWVvdXQoZnVuLCAwKTtcbiAgICB9
XG4gICAgdHJ5IHtcbiAgICAgICAgLy8gd2hlbiB3aGVuIHNvbWVib2R5IGhhcyBzY3Jld2VkIHdp
dGggc2V0VGltZW91dCBidXQgbm8gSS5FLiBtYWRkbmVzc1xuICAgICAgICByZXR1cm4gY2FjaGVk
U2V0VGltZW91dChmdW4sIDApO1xuICAgIH0gY2F0Y2goZSl7XG4gICAgICAgIHRyeSB7XG4gICAg
ICAgICAgICAvLyBXaGVuIHdlIGFyZSBpbiBJLkUuIGJ1dCB0aGUgc2NyaXB0IGhhcyBiZWVuIGV2
YWxlZCBzbyBJLkUuIGRvZXNuJ3QgdHJ1c3QgdGhlIGdsb2JhbCBvYmplY3Qgd2hlbiBjYWxsZWQg
bm9ybWFsbHlcbiAgICAgICAgICAgIHJldHVybiBjYWNoZWRTZXRUaW1lb3V0LmNhbGwobnVsbCwg
ZnVuLCAwKTtcbiAgICAgICAgfSBjYXRjaChlKXtcbiAgICAgICAgICAgIC8vIHNhbWUgYXMgYWJv
dmUgYnV0IHdoZW4gaXQncyBhIHZlcnNpb24gb2YgSS5FLiB0aGF0IG11c3QgaGF2ZSB0aGUgZ2xv
YmFsIG9iamVjdCBmb3IgJ3RoaXMnLCBob3BmdWxseSBvdXIgY29udGV4dCBjb3JyZWN0IG90aGVy
d2lzZSBpdCB3aWxsIHRocm93IGEgZ2xvYmFsIGVycm9yXG4gICAgICAgICAgICByZXR1cm4gY2Fj
aGVkU2V0VGltZW91dC5jYWxsKHRoaXMsIGZ1biwgMCk7XG4gICAgICAgIH1cbiAgICB9XG5cblxu
fVxuZnVuY3Rpb24gcnVuQ2xlYXJUaW1lb3V0KG1hcmtlcikge1xuICAgIGlmIChjYWNoZWRDbGVh
clRpbWVvdXQgPT09IGNsZWFyVGltZW91dCkge1xuICAgICAgICAvL25vcm1hbCBlbnZpcm9tZW50
cyBpbiBzYW5lIHNpdHVhdGlvbnNcbiAgICAgICAgcmV0dXJuIGNsZWFyVGltZW91dChtYXJrZXIp
O1xuICAgIH1cbiAgICAvLyBpZiBjbGVhclRpbWVvdXQgd2Fzbid0IGF2YWlsYWJsZSBidXQgd2Fz
IGxhdHRlciBkZWZpbmVkXG4gICAgaWYgKChjYWNoZWRDbGVhclRpbWVvdXQgPT09IGRlZmF1bHRD
bGVhclRpbWVvdXQgfHwgIWNhY2hlZENsZWFyVGltZW91dCkgJiYgY2xlYXJUaW1lb3V0KSB7XG4g
ICAgICAgIGNhY2hlZENsZWFyVGltZW91dCA9IGNsZWFyVGltZW91dDtcbiAgICAgICAgcmV0dXJu
IGNsZWFyVGltZW91dChtYXJrZXIpO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgICAvLyB3aGVu
IHdoZW4gc29tZWJvZHkgaGFzIHNjcmV3ZWQgd2l0aCBzZXRUaW1lb3V0IGJ1dCBubyBJLkUuIG1h
ZGRuZXNzXG4gICAgICAgIHJldHVybiBjYWNoZWRDbGVhclRpbWVvdXQobWFya2VyKTtcbiAgICB9
IGNhdGNoIChlKXtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIC8vIFdoZW4gd2UgYXJlIGlu
IEkuRS4gYnV0IHRoZSBzY3JpcHQgaGFzIGJlZW4gZXZhbGVkIHNvIEkuRS4gZG9lc24ndCAgdHJ1
c3QgdGhlIGdsb2JhbCBvYmplY3Qgd2hlbiBjYWxsZWQgbm9ybWFsbHlcbiAgICAgICAgICAgIHJl
dHVybiBjYWNoZWRDbGVhclRpbWVvdXQuY2FsbChudWxsLCBtYXJrZXIpO1xuICAgICAgICB9IGNh
dGNoIChlKXtcbiAgICAgICAgICAgIC8vIHNhbWUgYXMgYWJvdmUgYnV0IHdoZW4gaXQncyBhIHZl
cnNpb24gb2YgSS5FLiB0aGF0IG11c3QgaGF2ZSB0aGUgZ2xvYmFsIG9iamVjdCBmb3IgJ3RoaXMn
LCBob3BmdWxseSBvdXIgY29udGV4dCBjb3JyZWN0IG90aGVyd2lzZSBpdCB3aWxsIHRocm93IGEg
Z2xvYmFsIGVycm9yLlxuICAgICAgICAgICAgLy8gU29tZSB2ZXJzaW9ucyBvZiBJLkUuIGhhdmUg
ZGlmZmVyZW50IHJ1bGVzIGZvciBjbGVhclRpbWVvdXQgdnMgc2V0VGltZW91dFxuICAgICAgICAg
ICAgcmV0dXJuIGNhY2hlZENsZWFyVGltZW91dC5jYWxsKHRoaXMsIG1hcmtlcik7XG4gICAgICAg
IH1cbiAgICB9XG5cblxuXG59XG52YXIgcXVldWUgPSBbXTtcbnZhciBkcmFpbmluZyA9IGZhbHNl
O1xudmFyIGN1cnJlbnRRdWV1ZTtcbnZhciBxdWV1ZUluZGV4ID0gLTE7XG5cbmZ1bmN0aW9uIGNs
ZWFuVXBOZXh0VGljaygpIHtcbiAgICBpZiAoIWRyYWluaW5nIHx8ICFjdXJyZW50UXVldWUpIHtc
biAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBkcmFpbmluZyA9IGZhbHNlO1xuICAgIGlmIChj
dXJyZW50UXVldWUubGVuZ3RoKSB7XG4gICAgICAgIHF1ZXVlID0gY3VycmVudFF1ZXVlLmNvbmNh
dChxdWV1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcXVldWVJbmRleCA9IC0xO1xuICAgIH1c
biAgICBpZiAocXVldWUubGVuZ3RoKSB7XG4gICAgICAgIGRyYWluUXVldWUoKTtcbiAgICB9XG59
XG5cbmZ1bmN0aW9uIGRyYWluUXVldWUoKSB7XG4gICAgaWYgKGRyYWluaW5nKSB7XG4gICAgICAg
IHJldHVybjtcbiAgICB9XG4gICAgdmFyIHRpbWVvdXQgPSBydW5UaW1lb3V0KGNsZWFuVXBOZXh0
VGljayk7XG4gICAgZHJhaW5pbmcgPSB0cnVlO1xuXG4gICAgdmFyIGxlbiA9IHF1ZXVlLmxlbmd0
aDtcbiAgICB3aGlsZShsZW4pIHtcbiAgICAgICAgY3VycmVudFF1ZXVlID0gcXVldWU7XG4gICAg
ICAgIHF1ZXVlID0gW107XG4gICAgICAgIHdoaWxlICgrK3F1ZXVlSW5kZXggPCBsZW4pIHtcbiAg
ICAgICAgICAgIGlmIChjdXJyZW50UXVldWUpIHtcbiAgICAgICAgICAgICAgICBjdXJyZW50UXVl
dWVbcXVldWVJbmRleF0ucnVuKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAg
cXVldWVJbmRleCA9IC0xO1xuICAgICAgICBsZW4gPSBxdWV1ZS5sZW5ndGg7XG4gICAgfVxuICAg
IGN1cnJlbnRRdWV1ZSA9IG51bGw7XG4gICAgZHJhaW5pbmcgPSBmYWxzZTtcbiAgICBydW5DbGVh
clRpbWVvdXQodGltZW91dCk7XG59XG5cbnByb2Nlc3MubmV4dFRpY2sgPSBmdW5jdGlvbiAoZnVu
KSB7XG4gICAgdmFyIGFyZ3MgPSBuZXcgQXJyYXkoYXJndW1lbnRzLmxlbmd0aCAtIDEpO1xuICAg
IGlmIChhcmd1bWVudHMubGVuZ3RoID4gMSkge1xuICAgICAgICBmb3IgKHZhciBpID0gMTsgaSA8
IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgYXJnc1tpIC0gMV0gPSBhcmd1
bWVudHNbaV07XG4gICAgICAgIH1cbiAgICB9XG4gICAgcXVldWUucHVzaChuZXcgSXRlbShmdW4s
IGFyZ3MpKTtcbiAgICBpZiAocXVldWUubGVuZ3RoID09PSAxICYmICFkcmFpbmluZykge1xuICAg
ICAgICBydW5UaW1lb3V0KGRyYWluUXVldWUpO1xuICAgIH1cbn07XG5cbi8vIHY4IGxpa2VzIHBy
ZWRpY3RpYmxlIG9iamVjdHNcbmZ1bmN0aW9uIEl0ZW0oZnVuLCBhcnJheSkge1xuICAgIHRoaXMu
ZnVuID0gZnVuO1xuICAgIHRoaXMuYXJyYXkgPSBhcnJheTtcbn1cbkl0ZW0ucHJvdG90eXBlLnJ1
biA9IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLmZ1bi5hcHBseShudWxsLCB0aGlzLmFycmF5KTtc
bn07XG5wcm9jZXNzLnRpdGxlID0gJ2Jyb3dzZXInO1xucHJvY2Vzcy5icm93c2VyID0gdHJ1ZTtc
bnByb2Nlc3MuZW52ID0ge307XG5wcm9jZXNzLmFyZ3YgPSBbXTtcbnByb2Nlc3MudmVyc2lvbiA9
ICcnOyAvLyBlbXB0eSBzdHJpbmcgdG8gYXZvaWQgcmVnZXhwIGlzc3Vlc1xucHJvY2Vzcy52ZXJz
aW9ucyA9IHt9O1xuXG5mdW5jdGlvbiBub29wKCkge31cblxucHJvY2Vzcy5vbiA9IG5vb3A7XG5w
cm9jZXNzLmFkZExpc3RlbmVyID0gbm9vcDtcbnByb2Nlc3Mub25jZSA9IG5vb3A7XG5wcm9jZXNz
Lm9mZiA9IG5vb3A7XG5wcm9jZXNzLnJlbW92ZUxpc3RlbmVyID0gbm9vcDtcbnByb2Nlc3MucmVt
b3ZlQWxsTGlzdGVuZXJzID0gbm9vcDtcbnByb2Nlc3MuZW1pdCA9IG5vb3A7XG5cbnByb2Nlc3Mu
YmluZGluZyA9IGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdwcm9jZXNz
LmJpbmRpbmcgaXMgbm90IHN1cHBvcnRlZCcpO1xufTtcblxucHJvY2Vzcy5jd2QgPSBmdW5jdGlv
biAoKSB7IHJldHVybiAnLycgfTtcbnByb2Nlc3MuY2hkaXIgPSBmdW5jdGlvbiAoZGlyKSB7XG4g
ICAgdGhyb3cgbmV3IEVycm9yKCdwcm9jZXNzLmNoZGlyIGlzIG5vdCBzdXBwb3J0ZWQnKTtcbn07
XG5wcm9jZXNzLnVtYXNrID0gZnVuY3Rpb24oKSB7IHJldHVybiAwOyB9O1xuXG5cblxuLyoqKioq
KioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3Qtc2NyaXB0cy9+
L3Byb2Nlc3MvYnJvd3Nlci5qc1xuICoqIG1vZHVsZSBpZCA9IDg3XG4gKiogbW9kdWxlIGNodW5r
cyA9IDBcbiAqKi8iLCIndXNlIHN0cmljdCc7XG5cbnZhciBhc2FwID0gcmVxdWlyZSgnYXNhcC9y
YXcnKTtcblxuZnVuY3Rpb24gbm9vcCgpIHt9XG5cbi8vIFN0YXRlczpcbi8vXG4vLyAwIC0gcGVu
ZGluZ1xuLy8gMSAtIGZ1bGZpbGxlZCB3aXRoIF92YWx1ZVxuLy8gMiAtIHJlamVjdGVkIHdpdGgg
X3ZhbHVlXG4vLyAzIC0gYWRvcHRlZCB0aGUgc3RhdGUgb2YgYW5vdGhlciBwcm9taXNlLCBfdmFs
dWVcbi8vXG4vLyBvbmNlIHRoZSBzdGF0ZSBpcyBubyBsb25nZXIgcGVuZGluZyAoMCkgaXQgaXMg
aW1tdXRhYmxlXG5cbi8vIEFsbCBgX2AgcHJlZml4ZWQgcHJvcGVydGllcyB3aWxsIGJlIHJlZHVj
ZWQgdG8gYF97cmFuZG9tIG51bWJlcn1gXG4vLyBhdCBidWlsZCB0aW1lIHRvIG9iZnVzY2F0ZSB0
aGVtIGFuZCBkaXNjb3VyYWdlIHRoZWlyIHVzZS5cbi8vIFdlIGRvbid0IHVzZSBzeW1ib2xzIG9y
IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSB0byBmdWxseSBoaWRlIHRoZW1cbi8vIGJlY2F1c2UgdGhl
IHBlcmZvcm1hbmNlIGlzbid0IGdvb2QgZW5vdWdoLlxuXG5cbi8vIHRvIGF2b2lkIHVzaW5nIHRy
eS9jYXRjaCBpbnNpZGUgY3JpdGljYWwgZnVuY3Rpb25zLCB3ZVxuLy8gZXh0cmFjdCB0aGVtIHRv
IGhlcmUuXG52YXIgTEFTVF9FUlJPUiA9IG51bGw7XG52YXIgSVNfRVJST1IgPSB7fTtcbmZ1bmN0
aW9uIGdldFRoZW4ob2JqKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIG9iai50aGVuO1xuICB9IGNh
dGNoIChleCkge1xuICAgIExBU1RfRVJST1IgPSBleDtcbiAgICByZXR1cm4gSVNfRVJST1I7XG4g
IH1cbn1cblxuZnVuY3Rpb24gdHJ5Q2FsbE9uZShmbiwgYSkge1xuICB0cnkge1xuICAgIHJldHVy
biBmbihhKTtcbiAgfSBjYXRjaCAoZXgpIHtcbiAgICBMQVNUX0VSUk9SID0gZXg7XG4gICAgcmV0
dXJuIElTX0VSUk9SO1xuICB9XG59XG5mdW5jdGlvbiB0cnlDYWxsVHdvKGZuLCBhLCBiKSB7XG4g
IHRyeSB7XG4gICAgZm4oYSwgYik7XG4gIH0gY2F0Y2ggKGV4KSB7XG4gICAgTEFTVF9FUlJPUiA9
IGV4O1xuICAgIHJldHVybiBJU19FUlJPUjtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IFBy
b21pc2U7XG5cbmZ1bmN0aW9uIFByb21pc2UoZm4pIHtcbiAgaWYgKHR5cGVvZiB0aGlzICE9PSAn
b2JqZWN0Jykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1Byb21pc2VzIG11c3QgYmUgY29u
c3RydWN0ZWQgdmlhIG5ldycpO1xuICB9XG4gIGlmICh0eXBlb2YgZm4gIT09ICdmdW5jdGlvbicp
IHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdub3QgYSBmdW5jdGlvbicpO1xuICB9XG4gIHRo
aXMuXzQ1ID0gMDtcbiAgdGhpcy5fODEgPSAwO1xuICB0aGlzLl82NSA9IG51bGw7XG4gIHRoaXMu
XzU0ID0gbnVsbDtcbiAgaWYgKGZuID09PSBub29wKSByZXR1cm47XG4gIGRvUmVzb2x2ZShmbiwg
dGhpcyk7XG59XG5Qcm9taXNlLl8xMCA9IG51bGw7XG5Qcm9taXNlLl85NyA9IG51bGw7XG5Qcm9t
aXNlLl82MSA9IG5vb3A7XG5cblByb21pc2UucHJvdG90eXBlLnRoZW4gPSBmdW5jdGlvbihvbkZ1
bGZpbGxlZCwgb25SZWplY3RlZCkge1xuICBpZiAodGhpcy5jb25zdHJ1Y3RvciAhPT0gUHJvbWlz
ZSkge1xuICAgIHJldHVybiBzYWZlVGhlbih0aGlzLCBvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCk7
XG4gIH1cbiAgdmFyIHJlcyA9IG5ldyBQcm9taXNlKG5vb3ApO1xuICBoYW5kbGUodGhpcywgbmV3
IEhhbmRsZXIob25GdWxmaWxsZWQsIG9uUmVqZWN0ZWQsIHJlcykpO1xuICByZXR1cm4gcmVzO1xu
fTtcblxuZnVuY3Rpb24gc2FmZVRoZW4oc2VsZiwgb25GdWxmaWxsZWQsIG9uUmVqZWN0ZWQpIHtc
biAgcmV0dXJuIG5ldyBzZWxmLmNvbnN0cnVjdG9yKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3Qp
IHtcbiAgICB2YXIgcmVzID0gbmV3IFByb21pc2Uobm9vcCk7XG4gICAgcmVzLnRoZW4ocmVzb2x2
ZSwgcmVqZWN0KTtcbiAgICBoYW5kbGUoc2VsZiwgbmV3IEhhbmRsZXIob25GdWxmaWxsZWQsIG9u
UmVqZWN0ZWQsIHJlcykpO1xuICB9KTtcbn07XG5mdW5jdGlvbiBoYW5kbGUoc2VsZiwgZGVmZXJy
ZWQpIHtcbiAgd2hpbGUgKHNlbGYuXzgxID09PSAzKSB7XG4gICAgc2VsZiA9IHNlbGYuXzY1O1xu
ICB9XG4gIGlmIChQcm9taXNlLl8xMCkge1xuICAgIFByb21pc2UuXzEwKHNlbGYpO1xuICB9XG4g
IGlmIChzZWxmLl84MSA9PT0gMCkge1xuICAgIGlmIChzZWxmLl80NSA9PT0gMCkge1xuICAgICAg
c2VsZi5fNDUgPSAxO1xuICAgICAgc2VsZi5fNTQgPSBkZWZlcnJlZDtcbiAgICAgIHJldHVybjtc
biAgICB9XG4gICAgaWYgKHNlbGYuXzQ1ID09PSAxKSB7XG4gICAgICBzZWxmLl80NSA9IDI7XG4g
ICAgICBzZWxmLl81NCA9IFtzZWxmLl81NCwgZGVmZXJyZWRdO1xuICAgICAgcmV0dXJuO1xuICAg
IH1cbiAgICBzZWxmLl81NC5wdXNoKGRlZmVycmVkKTtcbiAgICByZXR1cm47XG4gIH1cbiAgaGFu
ZGxlUmVzb2x2ZWQoc2VsZiwgZGVmZXJyZWQpO1xufVxuXG5mdW5jdGlvbiBoYW5kbGVSZXNvbHZl
ZChzZWxmLCBkZWZlcnJlZCkge1xuICBhc2FwKGZ1bmN0aW9uKCkge1xuICAgIHZhciBjYiA9IHNl
bGYuXzgxID09PSAxID8gZGVmZXJyZWQub25GdWxmaWxsZWQgOiBkZWZlcnJlZC5vblJlamVjdGVk
O1xuICAgIGlmIChjYiA9PT0gbnVsbCkge1xuICAgICAgaWYgKHNlbGYuXzgxID09PSAxKSB7XG4g
ICAgICAgIHJlc29sdmUoZGVmZXJyZWQucHJvbWlzZSwgc2VsZi5fNjUpO1xuICAgICAgfSBlbHNl
IHtcbiAgICAgICAgcmVqZWN0KGRlZmVycmVkLnByb21pc2UsIHNlbGYuXzY1KTtcbiAgICAgIH1c
biAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdmFyIHJldCA9IHRyeUNhbGxPbmUoY2IsIHNlbGYu
XzY1KTtcbiAgICBpZiAocmV0ID09PSBJU19FUlJPUikge1xuICAgICAgcmVqZWN0KGRlZmVycmVk
LnByb21pc2UsIExBU1RfRVJST1IpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXNvbHZlKGRlZmVy
cmVkLnByb21pc2UsIHJldCk7XG4gICAgfVxuICB9KTtcbn1cbmZ1bmN0aW9uIHJlc29sdmUoc2Vs
ZiwgbmV3VmFsdWUpIHtcbiAgLy8gUHJvbWlzZSBSZXNvbHV0aW9uIFByb2NlZHVyZTogaHR0cHM6
Ly9naXRodWIuY29tL3Byb21pc2VzLWFwbHVzL3Byb21pc2VzLXNwZWMjdGhlLXByb21pc2UtcmVz
b2x1dGlvbi1wcm9jZWR1cmVcbiAgaWYgKG5ld1ZhbHVlID09PSBzZWxmKSB7XG4gICAgcmV0dXJu
IHJlamVjdChcbiAgICAgIHNlbGYsXG4gICAgICBuZXcgVHlwZUVycm9yKCdBIHByb21pc2UgY2Fu
bm90IGJlIHJlc29sdmVkIHdpdGggaXRzZWxmLicpXG4gICAgKTtcbiAgfVxuICBpZiAoXG4gICAg
bmV3VmFsdWUgJiZcbiAgICAodHlwZW9mIG5ld1ZhbHVlID09PSAnb2JqZWN0JyB8fCB0eXBlb2Yg
bmV3VmFsdWUgPT09ICdmdW5jdGlvbicpXG4gICkge1xuICAgIHZhciB0aGVuID0gZ2V0VGhlbihu
ZXdWYWx1ZSk7XG4gICAgaWYgKHRoZW4gPT09IElTX0VSUk9SKSB7XG4gICAgICByZXR1cm4gcmVq
ZWN0KHNlbGYsIExBU1RfRVJST1IpO1xuICAgIH1cbiAgICBpZiAoXG4gICAgICB0aGVuID09PSBz
ZWxmLnRoZW4gJiZcbiAgICAgIG5ld1ZhbHVlIGluc3RhbmNlb2YgUHJvbWlzZVxuICAgICkge1xu
ICAgICAgc2VsZi5fODEgPSAzO1xuICAgICAgc2VsZi5fNjUgPSBuZXdWYWx1ZTtcbiAgICAgIGZp
bmFsZShzZWxmKTtcbiAgICAgIHJldHVybjtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB0aGVuID09
PSAnZnVuY3Rpb24nKSB7XG4gICAgICBkb1Jlc29sdmUodGhlbi5iaW5kKG5ld1ZhbHVlKSwgc2Vs
Zik7XG4gICAgICByZXR1cm47XG4gICAgfVxuICB9XG4gIHNlbGYuXzgxID0gMTtcbiAgc2VsZi5f
NjUgPSBuZXdWYWx1ZTtcbiAgZmluYWxlKHNlbGYpO1xufVxuXG5mdW5jdGlvbiByZWplY3Qoc2Vs
ZiwgbmV3VmFsdWUpIHtcbiAgc2VsZi5fODEgPSAyO1xuICBzZWxmLl82NSA9IG5ld1ZhbHVlO1xu
ICBpZiAoUHJvbWlzZS5fOTcpIHtcbiAgICBQcm9taXNlLl85NyhzZWxmLCBuZXdWYWx1ZSk7XG4g
IH1cbiAgZmluYWxlKHNlbGYpO1xufVxuZnVuY3Rpb24gZmluYWxlKHNlbGYpIHtcbiAgaWYgKHNl
bGYuXzQ1ID09PSAxKSB7XG4gICAgaGFuZGxlKHNlbGYsIHNlbGYuXzU0KTtcbiAgICBzZWxmLl81
NCA9IG51bGw7XG4gIH1cbiAgaWYgKHNlbGYuXzQ1ID09PSAyKSB7XG4gICAgZm9yICh2YXIgaSA9
IDA7IGkgPCBzZWxmLl81NC5sZW5ndGg7IGkrKykge1xuICAgICAgaGFuZGxlKHNlbGYsIHNlbGYu
XzU0W2ldKTtcbiAgICB9XG4gICAgc2VsZi5fNTQgPSBudWxsO1xuICB9XG59XG5cbmZ1bmN0aW9u
IEhhbmRsZXIob25GdWxmaWxsZWQsIG9uUmVqZWN0ZWQsIHByb21pc2Upe1xuICB0aGlzLm9uRnVs
ZmlsbGVkID0gdHlwZW9mIG9uRnVsZmlsbGVkID09PSAnZnVuY3Rpb24nID8gb25GdWxmaWxsZWQg
OiBudWxsO1xuICB0aGlzLm9uUmVqZWN0ZWQgPSB0eXBlb2Ygb25SZWplY3RlZCA9PT0gJ2Z1bmN0
aW9uJyA/IG9uUmVqZWN0ZWQgOiBudWxsO1xuICB0aGlzLnByb21pc2UgPSBwcm9taXNlO1xufVxu
XG4vKipcbiAqIFRha2UgYSBwb3RlbnRpYWxseSBtaXNiZWhhdmluZyByZXNvbHZlciBmdW5jdGlv
biBhbmQgbWFrZSBzdXJlXG4gKiBvbkZ1bGZpbGxlZCBhbmQgb25SZWplY3RlZCBhcmUgb25seSBj
YWxsZWQgb25jZS5cbiAqXG4gKiBNYWtlcyBubyBndWFyYW50ZWVzIGFib3V0IGFzeW5jaHJvbnku
XG4gKi9cbmZ1bmN0aW9uIGRvUmVzb2x2ZShmbiwgcHJvbWlzZSkge1xuICB2YXIgZG9uZSA9IGZh
bHNlO1xuICB2YXIgcmVzID0gdHJ5Q2FsbFR3byhmbiwgZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAg
aWYgKGRvbmUpIHJldHVybjtcbiAgICBkb25lID0gdHJ1ZTtcbiAgICByZXNvbHZlKHByb21pc2Us
IHZhbHVlKTtcbiAgfSwgZnVuY3Rpb24gKHJlYXNvbikge1xuICAgIGlmIChkb25lKSByZXR1cm47
XG4gICAgZG9uZSA9IHRydWU7XG4gICAgcmVqZWN0KHByb21pc2UsIHJlYXNvbik7XG4gIH0pXG4g
IGlmICghZG9uZSAmJiByZXMgPT09IElTX0VSUk9SKSB7XG4gICAgZG9uZSA9IHRydWU7XG4gICAg
cmVqZWN0KHByb21pc2UsIExBU1RfRVJST1IpO1xuICB9XG59XG5cblxuXG4vKioqKioqKioqKioq
KioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFjdC1zY3JpcHRzL34vcHJvbWlz
ZS9saWIvY29yZS5qc1xuICoqIG1vZHVsZSBpZCA9IDg4XG4gKiogbW9kdWxlIGNodW5rcyA9IDBc
biAqKi8iLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4g
KiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5z
ZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBm
aWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlv
bmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5U
UyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xu
XG52YXIgX3Byb2RJbnZhcmlhbnQgPSByZXF1aXJlKCcuL3JlYWN0UHJvZEludmFyaWFudCcpLFxu
ICAgIF9hc3NpZ24gPSByZXF1aXJlKCdvYmplY3QtYXNzaWduJyk7XG5cbnZhciBSZWFjdE5vb3BV
cGRhdGVRdWV1ZSA9IHJlcXVpcmUoJy4vUmVhY3ROb29wVXBkYXRlUXVldWUnKTtcblxudmFyIGNh
bkRlZmluZVByb3BlcnR5ID0gcmVxdWlyZSgnLi9jYW5EZWZpbmVQcm9wZXJ0eScpO1xudmFyIGVt
cHR5T2JqZWN0ID0gcmVxdWlyZSgnZmJqcy9saWIvZW1wdHlPYmplY3QnKTtcbnZhciBpbnZhcmlh
bnQgPSByZXF1aXJlKCdmYmpzL2xpYi9pbnZhcmlhbnQnKTtcbnZhciBsb3dQcmlvcml0eVdhcm5p
bmcgPSByZXF1aXJlKCcuL2xvd1ByaW9yaXR5V2FybmluZycpO1xuXG4vKipcbiAqIEJhc2UgY2xh
c3MgaGVscGVycyBmb3IgdGhlIHVwZGF0aW5nIHN0YXRlIG9mIGEgY29tcG9uZW50LlxuICovXG5m
dW5jdGlvbiBSZWFjdENvbXBvbmVudChwcm9wcywgY29udGV4dCwgdXBkYXRlcikge1xuICB0aGlz
LnByb3BzID0gcHJvcHM7XG4gIHRoaXMuY29udGV4dCA9IGNvbnRleHQ7XG4gIHRoaXMucmVmcyA9
IGVtcHR5T2JqZWN0O1xuICAvLyBXZSBpbml0aWFsaXplIHRoZSBkZWZhdWx0IHVwZGF0ZXIgYnV0
IHRoZSByZWFsIG9uZSBnZXRzIGluamVjdGVkIGJ5IHRoZVxuICAvLyByZW5kZXJlci5cbiAgdGhp
cy51cGRhdGVyID0gdXBkYXRlciB8fCBSZWFjdE5vb3BVcGRhdGVRdWV1ZTtcbn1cblxuUmVhY3RD
b21wb25lbnQucHJvdG90eXBlLmlzUmVhY3RDb21wb25lbnQgPSB7fTtcblxuLyoqXG4gKiBTZXRz
IGEgc3Vic2V0IG9mIHRoZSBzdGF0ZS4gQWx3YXlzIHVzZSB0aGlzIHRvIG11dGF0ZVxuICogc3Rh
dGUuIFlvdSBzaG91bGQgdHJlYXQgYHRoaXMuc3RhdGVgIGFzIGltbXV0YWJsZS5cbiAqXG4gKiBU
aGVyZSBpcyBubyBndWFyYW50ZWUgdGhhdCBgdGhpcy5zdGF0ZWAgd2lsbCBiZSBpbW1lZGlhdGVs
eSB1cGRhdGVkLCBzb1xuICogYWNjZXNzaW5nIGB0aGlzLnN0YXRlYCBhZnRlciBjYWxsaW5nIHRo
aXMgbWV0aG9kIG1heSByZXR1cm4gdGhlIG9sZCB2YWx1ZS5cbiAqXG4gKiBUaGVyZSBpcyBubyBn
dWFyYW50ZWUgdGhhdCBjYWxscyB0byBgc2V0U3RhdGVgIHdpbGwgcnVuIHN5bmNocm9ub3VzbHks
XG4gKiBhcyB0aGV5IG1heSBldmVudHVhbGx5IGJlIGJhdGNoZWQgdG9nZXRoZXIuICBZb3UgY2Fu
IHByb3ZpZGUgYW4gb3B0aW9uYWxcbiAqIGNhbGxiYWNrIHRoYXQgd2lsbCBiZSBleGVjdXRlZCB3
aGVuIHRoZSBjYWxsIHRvIHNldFN0YXRlIGlzIGFjdHVhbGx5XG4gKiBjb21wbGV0ZWQuXG4gKlxu
ICogV2hlbiBhIGZ1bmN0aW9uIGlzIHByb3ZpZGVkIHRvIHNldFN0YXRlLCBpdCB3aWxsIGJlIGNh
bGxlZCBhdCBzb21lIHBvaW50IGluXG4gKiB0aGUgZnV0dXJlIChub3Qgc3luY2hyb25vdXNseSku
IEl0IHdpbGwgYmUgY2FsbGVkIHdpdGggdGhlIHVwIHRvIGRhdGVcbiAqIGNvbXBvbmVudCBhcmd1
bWVudHMgKHN0YXRlLCBwcm9wcywgY29udGV4dCkuIFRoZXNlIHZhbHVlcyBjYW4gYmUgZGlmZmVy
ZW50XG4gKiBmcm9tIHRoaXMuKiBiZWNhdXNlIHlvdXIgZnVuY3Rpb24gbWF5IGJlIGNhbGxlZCBh
ZnRlciByZWNlaXZlUHJvcHMgYnV0IGJlZm9yZVxuICogc2hvdWxkQ29tcG9uZW50VXBkYXRlLCBh
bmQgdGhpcyBuZXcgc3RhdGUsIHByb3BzLCBhbmQgY29udGV4dCB3aWxsIG5vdCB5ZXQgYmVcbiAq
IGFzc2lnbmVkIHRvIHRoaXMuXG4gKlxuICogQHBhcmFtIHtvYmplY3R8ZnVuY3Rpb259IHBhcnRp
YWxTdGF0ZSBOZXh0IHBhcnRpYWwgc3RhdGUgb3IgZnVuY3Rpb24gdG9cbiAqICAgICAgICBwcm9k
dWNlIG5leHQgcGFydGlhbCBzdGF0ZSB0byBiZSBtZXJnZWQgd2l0aCBjdXJyZW50IHN0YXRlLlxu
ICogQHBhcmFtIHs/ZnVuY3Rpb259IGNhbGxiYWNrIENhbGxlZCBhZnRlciBzdGF0ZSBpcyB1cGRh
dGVkLlxuICogQGZpbmFsXG4gKiBAcHJvdGVjdGVkXG4gKi9cblJlYWN0Q29tcG9uZW50LnByb3Rv
dHlwZS5zZXRTdGF0ZSA9IGZ1bmN0aW9uIChwYXJ0aWFsU3RhdGUsIGNhbGxiYWNrKSB7XG4gICEo
dHlwZW9mIHBhcnRpYWxTdGF0ZSA9PT0gJ29iamVjdCcgfHwgdHlwZW9mIHBhcnRpYWxTdGF0ZSA9
PT0gJ2Z1bmN0aW9uJyB8fCBwYXJ0aWFsU3RhdGUgPT0gbnVsbCkgPyBwcm9jZXNzLmVudi5OT0RF
X0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnc2V0U3RhdGUoLi4uKTog
dGFrZXMgYW4gb2JqZWN0IG9mIHN0YXRlIHZhcmlhYmxlcyB0byB1cGRhdGUgb3IgYSBmdW5jdGlv
biB3aGljaCByZXR1cm5zIGFuIG9iamVjdCBvZiBzdGF0ZSB2YXJpYWJsZXMuJykgOiBfcHJvZElu
dmFyaWFudCgnODUnKSA6IHZvaWQgMDtcbiAgdGhpcy51cGRhdGVyLmVucXVldWVTZXRTdGF0ZSh0
aGlzLCBwYXJ0aWFsU3RhdGUpO1xuICBpZiAoY2FsbGJhY2spIHtcbiAgICB0aGlzLnVwZGF0ZXIu
ZW5xdWV1ZUNhbGxiYWNrKHRoaXMsIGNhbGxiYWNrLCAnc2V0U3RhdGUnKTtcbiAgfVxufTtcblxu
LyoqXG4gKiBGb3JjZXMgYW4gdXBkYXRlLiBUaGlzIHNob3VsZCBvbmx5IGJlIGludm9rZWQgd2hl
biBpdCBpcyBrbm93biB3aXRoXG4gKiBjZXJ0YWludHkgdGhhdCB3ZSBhcmUgKipub3QqKiBpbiBh
IERPTSB0cmFuc2FjdGlvbi5cbiAqXG4gKiBZb3UgbWF5IHdhbnQgdG8gY2FsbCB0aGlzIHdoZW4g
eW91IGtub3cgdGhhdCBzb21lIGRlZXBlciBhc3BlY3Qgb2YgdGhlXG4gKiBjb21wb25lbnQncyBz
dGF0ZSBoYXMgY2hhbmdlZCBidXQgYHNldFN0YXRlYCB3YXMgbm90IGNhbGxlZC5cbiAqXG4gKiBU
aGlzIHdpbGwgbm90IGludm9rZSBgc2hvdWxkQ29tcG9uZW50VXBkYXRlYCwgYnV0IGl0IHdpbGwg
aW52b2tlXG4gKiBgY29tcG9uZW50V2lsbFVwZGF0ZWAgYW5kIGBjb21wb25lbnREaWRVcGRhdGVg
LlxuICpcbiAqIEBwYXJhbSB7P2Z1bmN0aW9ufSBjYWxsYmFjayBDYWxsZWQgYWZ0ZXIgdXBkYXRl
IGlzIGNvbXBsZXRlLlxuICogQGZpbmFsXG4gKiBAcHJvdGVjdGVkXG4gKi9cblJlYWN0Q29tcG9u
ZW50LnByb3RvdHlwZS5mb3JjZVVwZGF0ZSA9IGZ1bmN0aW9uIChjYWxsYmFjaykge1xuICB0aGlz
LnVwZGF0ZXIuZW5xdWV1ZUZvcmNlVXBkYXRlKHRoaXMpO1xuICBpZiAoY2FsbGJhY2spIHtcbiAg
ICB0aGlzLnVwZGF0ZXIuZW5xdWV1ZUNhbGxiYWNrKHRoaXMsIGNhbGxiYWNrLCAnZm9yY2VVcGRh
dGUnKTtcbiAgfVxufTtcblxuLyoqXG4gKiBEZXByZWNhdGVkIEFQSXMuIFRoZXNlIEFQSXMgdXNl
ZCB0byBleGlzdCBvbiBjbGFzc2ljIFJlYWN0IGNsYXNzZXMgYnV0IHNpbmNlXG4gKiB3ZSB3b3Vs
ZCBsaWtlIHRvIGRlcHJlY2F0ZSB0aGVtLCB3ZSdyZSBub3QgZ29pbmcgdG8gbW92ZSB0aGVtIG92
ZXIgdG8gdGhpc1xuICogbW9kZXJuIGJhc2UgY2xhc3MuIEluc3RlYWQsIHdlIGRlZmluZSBhIGdl
dHRlciB0aGF0IHdhcm5zIGlmIGl0J3MgYWNjZXNzZWQuXG4gKi9cbmlmIChwcm9jZXNzLmVudi5O
T0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIHZhciBkZXByZWNhdGVkQVBJcyA9IHtcbiAg
ICBpc01vdW50ZWQ6IFsnaXNNb3VudGVkJywgJ0luc3RlYWQsIG1ha2Ugc3VyZSB0byBjbGVhbiB1
cCBzdWJzY3JpcHRpb25zIGFuZCBwZW5kaW5nIHJlcXVlc3RzIGluICcgKyAnY29tcG9uZW50V2ls
bFVubW91bnQgdG8gcHJldmVudCBtZW1vcnkgbGVha3MuJ10sXG4gICAgcmVwbGFjZVN0YXRlOiBb
J3JlcGxhY2VTdGF0ZScsICdSZWZhY3RvciB5b3VyIGNvZGUgdG8gdXNlIHNldFN0YXRlIGluc3Rl
YWQgKHNlZSAnICsgJ2h0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9pc3N1ZXMvMzIz
NikuJ11cbiAgfTtcbiAgdmFyIGRlZmluZURlcHJlY2F0aW9uV2FybmluZyA9IGZ1bmN0aW9uICht
ZXRob2ROYW1lLCBpbmZvKSB7XG4gICAgaWYgKGNhbkRlZmluZVByb3BlcnR5KSB7XG4gICAgICBP
YmplY3QuZGVmaW5lUHJvcGVydHkoUmVhY3RDb21wb25lbnQucHJvdG90eXBlLCBtZXRob2ROYW1l
LCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGxvd1ByaW9yaXR5V2Fy
bmluZyhmYWxzZSwgJyVzKC4uLikgaXMgZGVwcmVjYXRlZCBpbiBwbGFpbiBKYXZhU2NyaXB0IFJl
YWN0IGNsYXNzZXMuICVzJywgaW5mb1swXSwgaW5mb1sxXSk7XG4gICAgICAgICAgcmV0dXJuIHVu
ZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9O1xuICBmb3IgKHZhciBm
bk5hbWUgaW4gZGVwcmVjYXRlZEFQSXMpIHtcbiAgICBpZiAoZGVwcmVjYXRlZEFQSXMuaGFzT3du
UHJvcGVydHkoZm5OYW1lKSkge1xuICAgICAgZGVmaW5lRGVwcmVjYXRpb25XYXJuaW5nKGZuTmFt
ZSwgZGVwcmVjYXRlZEFQSXNbZm5OYW1lXSk7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogQmFz
ZSBjbGFzcyBoZWxwZXJzIGZvciB0aGUgdXBkYXRpbmcgc3RhdGUgb2YgYSBjb21wb25lbnQuXG4g
Ki9cbmZ1bmN0aW9uIFJlYWN0UHVyZUNvbXBvbmVudChwcm9wcywgY29udGV4dCwgdXBkYXRlcikg
e1xuICAvLyBEdXBsaWNhdGVkIGZyb20gUmVhY3RDb21wb25lbnQuXG4gIHRoaXMucHJvcHMgPSBw
cm9wcztcbiAgdGhpcy5jb250ZXh0ID0gY29udGV4dDtcbiAgdGhpcy5yZWZzID0gZW1wdHlPYmpl
Y3Q7XG4gIC8vIFdlIGluaXRpYWxpemUgdGhlIGRlZmF1bHQgdXBkYXRlciBidXQgdGhlIHJlYWwg
b25lIGdldHMgaW5qZWN0ZWQgYnkgdGhlXG4gIC8vIHJlbmRlcmVyLlxuICB0aGlzLnVwZGF0ZXIg
PSB1cGRhdGVyIHx8IFJlYWN0Tm9vcFVwZGF0ZVF1ZXVlO1xufVxuXG5mdW5jdGlvbiBDb21wb25l
bnREdW1teSgpIHt9XG5Db21wb25lbnREdW1teS5wcm90b3R5cGUgPSBSZWFjdENvbXBvbmVudC5w
cm90b3R5cGU7XG5SZWFjdFB1cmVDb21wb25lbnQucHJvdG90eXBlID0gbmV3IENvbXBvbmVudER1
bW15KCk7XG5SZWFjdFB1cmVDb21wb25lbnQucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gUmVhY3RQ
dXJlQ29tcG9uZW50O1xuLy8gQXZvaWQgYW4gZXh0cmEgcHJvdG90eXBlIGp1bXAgZm9yIHRoZXNl
IG1ldGhvZHMuXG5fYXNzaWduKFJlYWN0UHVyZUNvbXBvbmVudC5wcm90b3R5cGUsIFJlYWN0Q29t
cG9uZW50LnByb3RvdHlwZSk7XG5SZWFjdFB1cmVDb21wb25lbnQucHJvdG90eXBlLmlzUHVyZVJl
YWN0Q29tcG9uZW50ID0gdHJ1ZTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIENvbXBvbmVudDog
UmVhY3RDb21wb25lbnQsXG4gIFB1cmVDb21wb25lbnQ6IFJlYWN0UHVyZUNvbXBvbmVudFxufTtc
blxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFj
dC9saWIvUmVhY3RCYXNlQ2xhc3Nlcy5qc1xuICoqIG1vZHVsZSBpZCA9IDg5XG4gKiogbW9kdWxl
IGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENvcHlyaWdodCAyMDE2LXByZXNlbnQsIEZhY2Vi
b29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNv
ZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxu
ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVl
LiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBp
biB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBcbiAqL1xu
XG4ndXNlIHN0cmljdCc7XG5cbnZhciBfcHJvZEludmFyaWFudCA9IHJlcXVpcmUoJy4vcmVhY3RQ
cm9kSW52YXJpYW50Jyk7XG5cbnZhciBSZWFjdEN1cnJlbnRPd25lciA9IHJlcXVpcmUoJy4vUmVh
Y3RDdXJyZW50T3duZXInKTtcblxudmFyIGludmFyaWFudCA9IHJlcXVpcmUoJ2ZianMvbGliL2lu
dmFyaWFudCcpO1xudmFyIHdhcm5pbmcgPSByZXF1aXJlKCdmYmpzL2xpYi93YXJuaW5nJyk7XG5c
bmZ1bmN0aW9uIGlzTmF0aXZlKGZuKSB7XG4gIC8vIEJhc2VkIG9uIGlzTmF0aXZlKCkgZnJvbSBM
b2Rhc2hcbiAgdmFyIGZ1bmNUb1N0cmluZyA9IEZ1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZztc
biAgdmFyIGhhc093blByb3BlcnR5ID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtc
biAgdmFyIHJlSXNOYXRpdmUgPSBSZWdFeHAoJ14nICsgZnVuY1RvU3RyaW5nXG4gIC8vIFRha2Ug
YW4gZXhhbXBsZSBuYXRpdmUgZnVuY3Rpb24gc291cmNlIGZvciBjb21wYXJpc29uXG4gIC5jYWxs
KGhhc093blByb3BlcnR5XG4gIC8vIFN0cmlwIHJlZ2V4IGNoYXJhY3RlcnMgc28gd2UgY2FuIHVz
ZSBpdCBmb3IgcmVnZXhcbiAgKS5yZXBsYWNlKC9bXFxcXF4kLiorPygpW1xcXXt9fF0vZywgJ1xc
XFwkJidcbiAgLy8gUmVtb3ZlIGhhc093blByb3BlcnR5IGZyb20gdGhlIHRlbXBsYXRlIHRvIG1h
a2UgaXQgZ2VuZXJpY1xuICApLnJlcGxhY2UoL2hhc093blByb3BlcnR5fChmdW5jdGlvbikuKj8o
Pz1cXFxcXFwoKXwgZm9yIC4rPyg/PVxcXFxcXF0pL2csICckMS4qPycpICsgJyQnKTtcbiAgdHJ5
IHtcbiAgICB2YXIgc291cmNlID0gZnVuY1RvU3RyaW5nLmNhbGwoZm4pO1xuICAgIHJldHVybiBy
ZUlzTmF0aXZlLnRlc3Qoc291cmNlKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgcmV0dXJuIGZh
bHNlO1xuICB9XG59XG5cbnZhciBjYW5Vc2VDb2xsZWN0aW9ucyA9XG4vLyBBcnJheS5mcm9tXG50
eXBlb2YgQXJyYXkuZnJvbSA9PT0gJ2Z1bmN0aW9uJyAmJlxuLy8gTWFwXG50eXBlb2YgTWFwID09
PSAnZnVuY3Rpb24nICYmIGlzTmF0aXZlKE1hcCkgJiZcbi8vIE1hcC5wcm90b3R5cGUua2V5c1xu
TWFwLnByb3RvdHlwZSAhPSBudWxsICYmIHR5cGVvZiBNYXAucHJvdG90eXBlLmtleXMgPT09ICdm
dW5jdGlvbicgJiYgaXNOYXRpdmUoTWFwLnByb3RvdHlwZS5rZXlzKSAmJlxuLy8gU2V0XG50eXBl
b2YgU2V0ID09PSAnZnVuY3Rpb24nICYmIGlzTmF0aXZlKFNldCkgJiZcbi8vIFNldC5wcm90b3R5
cGUua2V5c1xuU2V0LnByb3RvdHlwZSAhPSBudWxsICYmIHR5cGVvZiBTZXQucHJvdG90eXBlLmtl
eXMgPT09ICdmdW5jdGlvbicgJiYgaXNOYXRpdmUoU2V0LnByb3RvdHlwZS5rZXlzKTtcblxudmFy
IHNldEl0ZW07XG52YXIgZ2V0SXRlbTtcbnZhciByZW1vdmVJdGVtO1xudmFyIGdldEl0ZW1JRHM7
XG52YXIgYWRkUm9vdDtcbnZhciByZW1vdmVSb290O1xudmFyIGdldFJvb3RJRHM7XG5cbmlmIChj
YW5Vc2VDb2xsZWN0aW9ucykge1xuICB2YXIgaXRlbU1hcCA9IG5ldyBNYXAoKTtcbiAgdmFyIHJv
b3RJRFNldCA9IG5ldyBTZXQoKTtcblxuICBzZXRJdGVtID0gZnVuY3Rpb24gKGlkLCBpdGVtKSB7
XG4gICAgaXRlbU1hcC5zZXQoaWQsIGl0ZW0pO1xuICB9O1xuICBnZXRJdGVtID0gZnVuY3Rpb24g
KGlkKSB7XG4gICAgcmV0dXJuIGl0ZW1NYXAuZ2V0KGlkKTtcbiAgfTtcbiAgcmVtb3ZlSXRlbSA9
IGZ1bmN0aW9uIChpZCkge1xuICAgIGl0ZW1NYXBbJ2RlbGV0ZSddKGlkKTtcbiAgfTtcbiAgZ2V0
SXRlbUlEcyA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gQXJyYXkuZnJvbShpdGVtTWFwLmtl
eXMoKSk7XG4gIH07XG5cbiAgYWRkUm9vdCA9IGZ1bmN0aW9uIChpZCkge1xuICAgIHJvb3RJRFNl
dC5hZGQoaWQpO1xuICB9O1xuICByZW1vdmVSb290ID0gZnVuY3Rpb24gKGlkKSB7XG4gICAgcm9v
dElEU2V0WydkZWxldGUnXShpZCk7XG4gIH07XG4gIGdldFJvb3RJRHMgPSBmdW5jdGlvbiAoKSB7
XG4gICAgcmV0dXJuIEFycmF5LmZyb20ocm9vdElEU2V0LmtleXMoKSk7XG4gIH07XG59IGVsc2Ug
e1xuICB2YXIgaXRlbUJ5S2V5ID0ge307XG4gIHZhciByb290QnlLZXkgPSB7fTtcblxuICAvLyBV
c2Ugbm9uLW51bWVyaWMga2V5cyB0byBwcmV2ZW50IFY4IHBlcmZvcm1hbmNlIGlzc3VlczpcbiAg
Ly8gaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0L3B1bGwvNzIzMlxuICB2YXIgZ2V0
S2V5RnJvbUlEID0gZnVuY3Rpb24gKGlkKSB7XG4gICAgcmV0dXJuICcuJyArIGlkO1xuICB9O1xu
ICB2YXIgZ2V0SURGcm9tS2V5ID0gZnVuY3Rpb24gKGtleSkge1xuICAgIHJldHVybiBwYXJzZUlu
dChrZXkuc3Vic3RyKDEpLCAxMCk7XG4gIH07XG5cbiAgc2V0SXRlbSA9IGZ1bmN0aW9uIChpZCwg
aXRlbSkge1xuICAgIHZhciBrZXkgPSBnZXRLZXlGcm9tSUQoaWQpO1xuICAgIGl0ZW1CeUtleVtr
ZXldID0gaXRlbTtcbiAgfTtcbiAgZ2V0SXRlbSA9IGZ1bmN0aW9uIChpZCkge1xuICAgIHZhciBr
ZXkgPSBnZXRLZXlGcm9tSUQoaWQpO1xuICAgIHJldHVybiBpdGVtQnlLZXlba2V5XTtcbiAgfTtc
biAgcmVtb3ZlSXRlbSA9IGZ1bmN0aW9uIChpZCkge1xuICAgIHZhciBrZXkgPSBnZXRLZXlGcm9t
SUQoaWQpO1xuICAgIGRlbGV0ZSBpdGVtQnlLZXlba2V5XTtcbiAgfTtcbiAgZ2V0SXRlbUlEcyA9
IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXMoaXRlbUJ5S2V5KS5tYXAoZ2V0
SURGcm9tS2V5KTtcbiAgfTtcblxuICBhZGRSb290ID0gZnVuY3Rpb24gKGlkKSB7XG4gICAgdmFy
IGtleSA9IGdldEtleUZyb21JRChpZCk7XG4gICAgcm9vdEJ5S2V5W2tleV0gPSB0cnVlO1xuICB9
O1xuICByZW1vdmVSb290ID0gZnVuY3Rpb24gKGlkKSB7XG4gICAgdmFyIGtleSA9IGdldEtleUZy
b21JRChpZCk7XG4gICAgZGVsZXRlIHJvb3RCeUtleVtrZXldO1xuICB9O1xuICBnZXRSb290SURz
ID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBPYmplY3Qua2V5cyhyb290QnlLZXkpLm1hcChn
ZXRJREZyb21LZXkpO1xuICB9O1xufVxuXG52YXIgdW5tb3VudGVkSURzID0gW107XG5cbmZ1bmN0
aW9uIHB1cmdlRGVlcChpZCkge1xuICB2YXIgaXRlbSA9IGdldEl0ZW0oaWQpO1xuICBpZiAoaXRl
bSkge1xuICAgIHZhciBjaGlsZElEcyA9IGl0ZW0uY2hpbGRJRHM7XG5cbiAgICByZW1vdmVJdGVt
KGlkKTtcbiAgICBjaGlsZElEcy5mb3JFYWNoKHB1cmdlRGVlcCk7XG4gIH1cbn1cblxuZnVuY3Rp
b24gZGVzY3JpYmVDb21wb25lbnRGcmFtZShuYW1lLCBzb3VyY2UsIG93bmVyTmFtZSkge1xuICBy
ZXR1cm4gJ1xcbiAgICBpbiAnICsgKG5hbWUgfHwgJ1Vua25vd24nKSArIChzb3VyY2UgPyAnIChh
dCAnICsgc291cmNlLmZpbGVOYW1lLnJlcGxhY2UoL14uKltcXFxcXFwvXS8sICcnKSArICc6JyAr
IHNvdXJjZS5saW5lTnVtYmVyICsgJyknIDogb3duZXJOYW1lID8gJyAoY3JlYXRlZCBieSAnICsg
b3duZXJOYW1lICsgJyknIDogJycpO1xufVxuXG5mdW5jdGlvbiBnZXREaXNwbGF5TmFtZShlbGVt
ZW50KSB7XG4gIGlmIChlbGVtZW50ID09IG51bGwpIHtcbiAgICByZXR1cm4gJyNlbXB0eSc7XG4g
IH0gZWxzZSBpZiAodHlwZW9mIGVsZW1lbnQgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiBlbGVtZW50
ID09PSAnbnVtYmVyJykge1xuICAgIHJldHVybiAnI3RleHQnO1xuICB9IGVsc2UgaWYgKHR5cGVv
ZiBlbGVtZW50LnR5cGUgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIGVsZW1lbnQudHlwZTtc
biAgfSBlbHNlIHtcbiAgICByZXR1cm4gZWxlbWVudC50eXBlLmRpc3BsYXlOYW1lIHx8IGVsZW1l
bnQudHlwZS5uYW1lIHx8ICdVbmtub3duJztcbiAgfVxufVxuXG5mdW5jdGlvbiBkZXNjcmliZUlE
KGlkKSB7XG4gIHZhciBuYW1lID0gUmVhY3RDb21wb25lbnRUcmVlSG9vay5nZXREaXNwbGF5TmFt
ZShpZCk7XG4gIHZhciBlbGVtZW50ID0gUmVhY3RDb21wb25lbnRUcmVlSG9vay5nZXRFbGVtZW50
KGlkKTtcbiAgdmFyIG93bmVySUQgPSBSZWFjdENvbXBvbmVudFRyZWVIb29rLmdldE93bmVySUQo
aWQpO1xuICB2YXIgb3duZXJOYW1lO1xuICBpZiAob3duZXJJRCkge1xuICAgIG93bmVyTmFtZSA9
IFJlYWN0Q29tcG9uZW50VHJlZUhvb2suZ2V0RGlzcGxheU5hbWUob3duZXJJRCk7XG4gIH1cbiAg
cHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZWxlbWVudCwg
J1JlYWN0Q29tcG9uZW50VHJlZUhvb2s6IE1pc3NpbmcgUmVhY3QgZWxlbWVudCBmb3IgZGVidWdJ
RCAlcyB3aGVuICcgKyAnYnVpbGRpbmcgc3RhY2snLCBpZCkgOiB2b2lkIDA7XG4gIHJldHVybiBk
ZXNjcmliZUNvbXBvbmVudEZyYW1lKG5hbWUsIGVsZW1lbnQgJiYgZWxlbWVudC5fc291cmNlLCBv
d25lck5hbWUpO1xufVxuXG52YXIgUmVhY3RDb21wb25lbnRUcmVlSG9vayA9IHtcbiAgb25TZXRD
aGlsZHJlbjogZnVuY3Rpb24gKGlkLCBuZXh0Q2hpbGRJRHMpIHtcbiAgICB2YXIgaXRlbSA9IGdl
dEl0ZW0oaWQpO1xuICAgICFpdGVtID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0
aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ0l0ZW0gbXVzdCBoYXZlIGJlZW4gc2V0JykgOiBfcHJv
ZEludmFyaWFudCgnMTQ0JykgOiB2b2lkIDA7XG4gICAgaXRlbS5jaGlsZElEcyA9IG5leHRDaGls
ZElEcztcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbmV4dENoaWxkSURzLmxlbmd0aDsgaSsr
KSB7XG4gICAgICB2YXIgbmV4dENoaWxkSUQgPSBuZXh0Q2hpbGRJRHNbaV07XG4gICAgICB2YXIg
bmV4dENoaWxkID0gZ2V0SXRlbShuZXh0Q2hpbGRJRCk7XG4gICAgICAhbmV4dENoaWxkID8gcHJv
Y2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ0V4
cGVjdGVkIGhvb2sgZXZlbnRzIHRvIGZpcmUgZm9yIHRoZSBjaGlsZCBiZWZvcmUgaXRzIHBhcmVu
dCBpbmNsdWRlcyBpdCBpbiBvblNldENoaWxkcmVuKCkuJykgOiBfcHJvZEludmFyaWFudCgnMTQw
JykgOiB2b2lkIDA7XG4gICAgICAhKG5leHRDaGlsZC5jaGlsZElEcyAhPSBudWxsIHx8IHR5cGVv
ZiBuZXh0Q2hpbGQuZWxlbWVudCAhPT0gJ29iamVjdCcgfHwgbmV4dENoaWxkLmVsZW1lbnQgPT0g
bnVsbCkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50
KGZhbHNlLCAnRXhwZWN0ZWQgb25TZXRDaGlsZHJlbigpIHRvIGZpcmUgZm9yIGEgY29udGFpbmVy
IGNoaWxkIGJlZm9yZSBpdHMgcGFyZW50IGluY2x1ZGVzIGl0IGluIG9uU2V0Q2hpbGRyZW4oKS4n
KSA6IF9wcm9kSW52YXJpYW50KCcxNDEnKSA6IHZvaWQgMDtcbiAgICAgICFuZXh0Q2hpbGQuaXNN
b3VudGVkID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFu
dChmYWxzZSwgJ0V4cGVjdGVkIG9uTW91bnRDb21wb25lbnQoKSB0byBmaXJlIGZvciB0aGUgY2hp
bGQgYmVmb3JlIGl0cyBwYXJlbnQgaW5jbHVkZXMgaXQgaW4gb25TZXRDaGlsZHJlbigpLicpIDog
X3Byb2RJbnZhcmlhbnQoJzcxJykgOiB2b2lkIDA7XG4gICAgICBpZiAobmV4dENoaWxkLnBhcmVu
dElEID09IG51bGwpIHtcbiAgICAgICAgbmV4dENoaWxkLnBhcmVudElEID0gaWQ7XG4gICAgICAg
IC8vIFRPRE86IFRoaXMgc2hvdWxkbid0IGJlIG5lY2Vzc2FyeSBidXQgbW91bnRpbmcgYSBuZXcg
cm9vdCBkdXJpbmcgaW5cbiAgICAgICAgLy8gY29tcG9uZW50V2lsbE1vdW50IGN1cnJlbnRseSBj
YXVzZXMgbm90LXlldC1tb3VudGVkIGNvbXBvbmVudHMgdG9cbiAgICAgICAgLy8gYmUgcHVyZ2Vk
IGZyb20gb3VyIHRyZWUgZGF0YSBzbyB0aGVpciBwYXJlbnQgaWQgaXMgbWlzc2luZy5cbiAgICAg
IH1cbiAgICAgICEobmV4dENoaWxkLnBhcmVudElEID09PSBpZCkgPyBwcm9jZXNzLmVudi5OT0RF
X0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnRXhwZWN0ZWQgb25CZWZv
cmVNb3VudENvbXBvbmVudCgpIHBhcmVudCBhbmQgb25TZXRDaGlsZHJlbigpIHRvIGJlIGNvbnNp
c3RlbnQgKCVzIGhhcyBwYXJlbnRzICVzIGFuZCAlcykuJywgbmV4dENoaWxkSUQsIG5leHRDaGls
ZC5wYXJlbnRJRCwgaWQpIDogX3Byb2RJbnZhcmlhbnQoJzE0MicsIG5leHRDaGlsZElELCBuZXh0
Q2hpbGQucGFyZW50SUQsIGlkKSA6IHZvaWQgMDtcbiAgICB9XG4gIH0sXG4gIG9uQmVmb3JlTW91
bnRDb21wb25lbnQ6IGZ1bmN0aW9uIChpZCwgZWxlbWVudCwgcGFyZW50SUQpIHtcbiAgICB2YXIg
aXRlbSA9IHtcbiAgICAgIGVsZW1lbnQ6IGVsZW1lbnQsXG4gICAgICBwYXJlbnRJRDogcGFyZW50
SUQsXG4gICAgICB0ZXh0OiBudWxsLFxuICAgICAgY2hpbGRJRHM6IFtdLFxuICAgICAgaXNNb3Vu
dGVkOiBmYWxzZSxcbiAgICAgIHVwZGF0ZUNvdW50OiAwXG4gICAgfTtcbiAgICBzZXRJdGVtKGlk
LCBpdGVtKTtcbiAgfSxcbiAgb25CZWZvcmVVcGRhdGVDb21wb25lbnQ6IGZ1bmN0aW9uIChpZCwg
ZWxlbWVudCkge1xuICAgIHZhciBpdGVtID0gZ2V0SXRlbShpZCk7XG4gICAgaWYgKCFpdGVtIHx8
ICFpdGVtLmlzTW91bnRlZCkge1xuICAgICAgLy8gV2UgbWF5IGVuZCB1cCBoZXJlIGFzIGEgcmVz
dWx0IG9mIHNldFN0YXRlKCkgaW4gY29tcG9uZW50V2lsbFVubW91bnQoKS5cbiAgICAgIC8vIElu
IHRoaXMgY2FzZSwgaWdub3JlIHRoZSBlbGVtZW50LlxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAg
ICBpdGVtLmVsZW1lbnQgPSBlbGVtZW50O1xuICB9LFxuICBvbk1vdW50Q29tcG9uZW50OiBmdW5j
dGlvbiAoaWQpIHtcbiAgICB2YXIgaXRlbSA9IGdldEl0ZW0oaWQpO1xuICAgICFpdGVtID8gcHJv
Y2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ0l0
ZW0gbXVzdCBoYXZlIGJlZW4gc2V0JykgOiBfcHJvZEludmFyaWFudCgnMTQ0JykgOiB2b2lkIDA7
XG4gICAgaXRlbS5pc01vdW50ZWQgPSB0cnVlO1xuICAgIHZhciBpc1Jvb3QgPSBpdGVtLnBhcmVu
dElEID09PSAwO1xuICAgIGlmIChpc1Jvb3QpIHtcbiAgICAgIGFkZFJvb3QoaWQpO1xuICAgIH1c
biAgfSxcbiAgb25VcGRhdGVDb21wb25lbnQ6IGZ1bmN0aW9uIChpZCkge1xuICAgIHZhciBpdGVt
ID0gZ2V0SXRlbShpZCk7XG4gICAgaWYgKCFpdGVtIHx8ICFpdGVtLmlzTW91bnRlZCkge1xuICAg
ICAgLy8gV2UgbWF5IGVuZCB1cCBoZXJlIGFzIGEgcmVzdWx0IG9mIHNldFN0YXRlKCkgaW4gY29t
cG9uZW50V2lsbFVubW91bnQoKS5cbiAgICAgIC8vIEluIHRoaXMgY2FzZSwgaWdub3JlIHRoZSBl
bGVtZW50LlxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpdGVtLnVwZGF0ZUNvdW50Kys7XG4g
IH0sXG4gIG9uVW5tb3VudENvbXBvbmVudDogZnVuY3Rpb24gKGlkKSB7XG4gICAgdmFyIGl0ZW0g
PSBnZXRJdGVtKGlkKTtcbiAgICBpZiAoaXRlbSkge1xuICAgICAgLy8gV2UgbmVlZCB0byBjaGVj
ayBpZiBpdCBleGlzdHMuXG4gICAgICAvLyBgaXRlbWAgbWlnaHQgbm90IGV4aXN0IGlmIGl0IGlz
IGluc2lkZSBhbiBlcnJvciBib3VuZGFyeSwgYW5kIGEgc2libGluZ1xuICAgICAgLy8gZXJyb3Ig
Ym91bmRhcnkgY2hpbGQgdGhyZXcgd2hpbGUgbW91bnRpbmcuIFRoZW4gdGhpcyBpbnN0YW5jZSBu
ZXZlclxuICAgICAgLy8gZ290IGEgY2hhbmNlIHRvIG1vdW50LCBidXQgaXQgc3RpbGwgZ2V0cyBh
biB1bm1vdW50aW5nIGV2ZW50IGR1cmluZ1xuICAgICAgLy8gdGhlIGVycm9yIGJvdW5kYXJ5IGNs
ZWFudXAuXG4gICAgICBpdGVtLmlzTW91bnRlZCA9IGZhbHNlO1xuICAgICAgdmFyIGlzUm9vdCA9
IGl0ZW0ucGFyZW50SUQgPT09IDA7XG4gICAgICBpZiAoaXNSb290KSB7XG4gICAgICAgIHJlbW92
ZVJvb3QoaWQpO1xuICAgICAgfVxuICAgIH1cbiAgICB1bm1vdW50ZWRJRHMucHVzaChpZCk7XG4g
IH0sXG4gIHB1cmdlVW5tb3VudGVkQ29tcG9uZW50czogZnVuY3Rpb24gKCkge1xuICAgIGlmIChS
ZWFjdENvbXBvbmVudFRyZWVIb29rLl9wcmV2ZW50UHVyZ2luZykge1xuICAgICAgLy8gU2hvdWxk
IG9ubHkgYmUgdXNlZCBmb3IgdGVzdGluZy5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBm
b3IgKHZhciBpID0gMDsgaSA8IHVubW91bnRlZElEcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFy
IGlkID0gdW5tb3VudGVkSURzW2ldO1xuICAgICAgcHVyZ2VEZWVwKGlkKTtcbiAgICB9XG4gICAg
dW5tb3VudGVkSURzLmxlbmd0aCA9IDA7XG4gIH0sXG4gIGlzTW91bnRlZDogZnVuY3Rpb24gKGlk
KSB7XG4gICAgdmFyIGl0ZW0gPSBnZXRJdGVtKGlkKTtcbiAgICByZXR1cm4gaXRlbSA/IGl0ZW0u
aXNNb3VudGVkIDogZmFsc2U7XG4gIH0sXG4gIGdldEN1cnJlbnRTdGFja0FkZGVuZHVtOiBmdW5j
dGlvbiAodG9wRWxlbWVudCkge1xuICAgIHZhciBpbmZvID0gJyc7XG4gICAgaWYgKHRvcEVsZW1l
bnQpIHtcbiAgICAgIHZhciBuYW1lID0gZ2V0RGlzcGxheU5hbWUodG9wRWxlbWVudCk7XG4gICAg
ICB2YXIgb3duZXIgPSB0b3BFbGVtZW50Ll9vd25lcjtcbiAgICAgIGluZm8gKz0gZGVzY3JpYmVD
b21wb25lbnRGcmFtZShuYW1lLCB0b3BFbGVtZW50Ll9zb3VyY2UsIG93bmVyICYmIG93bmVyLmdl
dE5hbWUoKSk7XG4gICAgfVxuXG4gICAgdmFyIGN1cnJlbnRPd25lciA9IFJlYWN0Q3VycmVudE93
bmVyLmN1cnJlbnQ7XG4gICAgdmFyIGlkID0gY3VycmVudE93bmVyICYmIGN1cnJlbnRPd25lci5f
ZGVidWdJRDtcblxuICAgIGluZm8gKz0gUmVhY3RDb21wb25lbnRUcmVlSG9vay5nZXRTdGFja0Fk
ZGVuZHVtQnlJRChpZCk7XG4gICAgcmV0dXJuIGluZm87XG4gIH0sXG4gIGdldFN0YWNrQWRkZW5k
dW1CeUlEOiBmdW5jdGlvbiAoaWQpIHtcbiAgICB2YXIgaW5mbyA9ICcnO1xuICAgIHdoaWxlIChp
ZCkge1xuICAgICAgaW5mbyArPSBkZXNjcmliZUlEKGlkKTtcbiAgICAgIGlkID0gUmVhY3RDb21w
b25lbnRUcmVlSG9vay5nZXRQYXJlbnRJRChpZCk7XG4gICAgfVxuICAgIHJldHVybiBpbmZvO1xu
ICB9LFxuICBnZXRDaGlsZElEczogZnVuY3Rpb24gKGlkKSB7XG4gICAgdmFyIGl0ZW0gPSBnZXRJ
dGVtKGlkKTtcbiAgICByZXR1cm4gaXRlbSA/IGl0ZW0uY2hpbGRJRHMgOiBbXTtcbiAgfSxcbiAg
Z2V0RGlzcGxheU5hbWU6IGZ1bmN0aW9uIChpZCkge1xuICAgIHZhciBlbGVtZW50ID0gUmVhY3RD
b21wb25lbnRUcmVlSG9vay5nZXRFbGVtZW50KGlkKTtcbiAgICBpZiAoIWVsZW1lbnQpIHtcbiAg
ICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gZ2V0RGlzcGxheU5hbWUoZWxlbWVu
dCk7XG4gIH0sXG4gIGdldEVsZW1lbnQ6IGZ1bmN0aW9uIChpZCkge1xuICAgIHZhciBpdGVtID0g
Z2V0SXRlbShpZCk7XG4gICAgcmV0dXJuIGl0ZW0gPyBpdGVtLmVsZW1lbnQgOiBudWxsO1xuICB9
LFxuICBnZXRPd25lcklEOiBmdW5jdGlvbiAoaWQpIHtcbiAgICB2YXIgZWxlbWVudCA9IFJlYWN0
Q29tcG9uZW50VHJlZUhvb2suZ2V0RWxlbWVudChpZCk7XG4gICAgaWYgKCFlbGVtZW50IHx8ICFl
bGVtZW50Ll9vd25lcikge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJldHVybiBl
bGVtZW50Ll9vd25lci5fZGVidWdJRDtcbiAgfSxcbiAgZ2V0UGFyZW50SUQ6IGZ1bmN0aW9uIChp
ZCkge1xuICAgIHZhciBpdGVtID0gZ2V0SXRlbShpZCk7XG4gICAgcmV0dXJuIGl0ZW0gPyBpdGVt
LnBhcmVudElEIDogbnVsbDtcbiAgfSxcbiAgZ2V0U291cmNlOiBmdW5jdGlvbiAoaWQpIHtcbiAg
ICB2YXIgaXRlbSA9IGdldEl0ZW0oaWQpO1xuICAgIHZhciBlbGVtZW50ID0gaXRlbSA/IGl0ZW0u
ZWxlbWVudCA6IG51bGw7XG4gICAgdmFyIHNvdXJjZSA9IGVsZW1lbnQgIT0gbnVsbCA/IGVsZW1l
bnQuX3NvdXJjZSA6IG51bGw7XG4gICAgcmV0dXJuIHNvdXJjZTtcbiAgfSxcbiAgZ2V0VGV4dDog
ZnVuY3Rpb24gKGlkKSB7XG4gICAgdmFyIGVsZW1lbnQgPSBSZWFjdENvbXBvbmVudFRyZWVIb29r
LmdldEVsZW1lbnQoaWQpO1xuICAgIGlmICh0eXBlb2YgZWxlbWVudCA9PT0gJ3N0cmluZycpIHtc
biAgICAgIHJldHVybiBlbGVtZW50O1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIGVsZW1lbnQgPT09
ICdudW1iZXInKSB7XG4gICAgICByZXR1cm4gJycgKyBlbGVtZW50O1xuICAgIH0gZWxzZSB7XG4g
ICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH0sXG4gIGdldFVwZGF0ZUNvdW50OiBmdW5jdGlv
biAoaWQpIHtcbiAgICB2YXIgaXRlbSA9IGdldEl0ZW0oaWQpO1xuICAgIHJldHVybiBpdGVtID8g
aXRlbS51cGRhdGVDb3VudCA6IDA7XG4gIH0sXG5cblxuICBnZXRSb290SURzOiBnZXRSb290SURz
LFxuICBnZXRSZWdpc3RlcmVkSURzOiBnZXRJdGVtSURzLFxuXG4gIHB1c2hOb25TdGFuZGFyZFdh
cm5pbmdTdGFjazogZnVuY3Rpb24gKGlzQ3JlYXRpbmdFbGVtZW50LCBjdXJyZW50U291cmNlKSB7
XG4gICAgaWYgKHR5cGVvZiBjb25zb2xlLnJlYWN0U3RhY2sgIT09ICdmdW5jdGlvbicpIHtcbiAg
ICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgc3RhY2sgPSBbXTtcbiAgICB2YXIgY3VycmVu
dE93bmVyID0gUmVhY3RDdXJyZW50T3duZXIuY3VycmVudDtcbiAgICB2YXIgaWQgPSBjdXJyZW50
T3duZXIgJiYgY3VycmVudE93bmVyLl9kZWJ1Z0lEO1xuXG4gICAgdHJ5IHtcbiAgICAgIGlmIChp
c0NyZWF0aW5nRWxlbWVudCkge1xuICAgICAgICBzdGFjay5wdXNoKHtcbiAgICAgICAgICBuYW1l
OiBpZCA/IFJlYWN0Q29tcG9uZW50VHJlZUhvb2suZ2V0RGlzcGxheU5hbWUoaWQpIDogbnVsbCxc
biAgICAgICAgICBmaWxlTmFtZTogY3VycmVudFNvdXJjZSA/IGN1cnJlbnRTb3VyY2UuZmlsZU5h
bWUgOiBudWxsLFxuICAgICAgICAgIGxpbmVOdW1iZXI6IGN1cnJlbnRTb3VyY2UgPyBjdXJyZW50
U291cmNlLmxpbmVOdW1iZXIgOiBudWxsXG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICB3
aGlsZSAoaWQpIHtcbiAgICAgICAgdmFyIGVsZW1lbnQgPSBSZWFjdENvbXBvbmVudFRyZWVIb29r
LmdldEVsZW1lbnQoaWQpO1xuICAgICAgICB2YXIgcGFyZW50SUQgPSBSZWFjdENvbXBvbmVudFRy
ZWVIb29rLmdldFBhcmVudElEKGlkKTtcbiAgICAgICAgdmFyIG93bmVySUQgPSBSZWFjdENvbXBv
bmVudFRyZWVIb29rLmdldE93bmVySUQoaWQpO1xuICAgICAgICB2YXIgb3duZXJOYW1lID0gb3du
ZXJJRCA/IFJlYWN0Q29tcG9uZW50VHJlZUhvb2suZ2V0RGlzcGxheU5hbWUob3duZXJJRCkgOiBu
dWxsO1xuICAgICAgICB2YXIgc291cmNlID0gZWxlbWVudCAmJiBlbGVtZW50Ll9zb3VyY2U7XG4g
ICAgICAgIHN0YWNrLnB1c2goe1xuICAgICAgICAgIG5hbWU6IG93bmVyTmFtZSxcbiAgICAgICAg
ICBmaWxlTmFtZTogc291cmNlID8gc291cmNlLmZpbGVOYW1lIDogbnVsbCxcbiAgICAgICAgICBs
aW5lTnVtYmVyOiBzb3VyY2UgPyBzb3VyY2UubGluZU51bWJlciA6IG51bGxcbiAgICAgICAgfSk7
XG4gICAgICAgIGlkID0gcGFyZW50SUQ7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4g
ICAgICAvLyBJbnRlcm5hbCBzdGF0ZSBpcyBtZXNzZWQgdXAuXG4gICAgICAvLyBTdG9wIGJ1aWxk
aW5nIHRoZSBzdGFjayAoaXQncyBqdXN0IGEgbmljZSB0byBoYXZlKS5cbiAgICB9XG5cbiAgICBj
b25zb2xlLnJlYWN0U3RhY2soc3RhY2spO1xuICB9LFxuICBwb3BOb25TdGFuZGFyZFdhcm5pbmdT
dGFjazogZnVuY3Rpb24gKCkge1xuICAgIGlmICh0eXBlb2YgY29uc29sZS5yZWFjdFN0YWNrRW5k
ICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnNvbGUucmVh
Y3RTdGFja0VuZCgpO1xuICB9XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0Q29tcG9uZW50
VHJlZUhvb2s7XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAq
KiAuL34vcmVhY3QvbGliL1JlYWN0Q29tcG9uZW50VHJlZUhvb2suanNcbiAqKiBtb2R1bGUgaWQg
PSA5MFxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAx
NC1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4g
KiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5z
ZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2Yg
dGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0
cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3Rvcnku
XG4gKlxuICogXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG4vLyBUaGUgU3ltYm9sIHVzZWQgdG8g
dGFnIHRoZSBSZWFjdEVsZW1lbnQgdHlwZS4gSWYgdGhlcmUgaXMgbm8gbmF0aXZlIFN5bWJvbFxu
Ly8gbm9yIHBvbHlmaWxsLCB0aGVuIGEgcGxhaW4gbnVtYmVyIGlzIHVzZWQgZm9yIHBlcmZvcm1h
bmNlLlxuXG52YXIgUkVBQ1RfRUxFTUVOVF9UWVBFID0gdHlwZW9mIFN5bWJvbCA9PT0gJ2Z1bmN0
aW9uJyAmJiBTeW1ib2xbJ2ZvciddICYmIFN5bWJvbFsnZm9yJ10oJ3JlYWN0LmVsZW1lbnQnKSB8
fCAweGVhYzc7XG5cbm1vZHVsZS5leHBvcnRzID0gUkVBQ1RfRUxFTUVOVF9UWVBFO1xuXG5cbi8q
KioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0L2xpYi9S
ZWFjdEVsZW1lbnRTeW1ib2wuanNcbiAqKiBtb2R1bGUgaWQgPSA5MVxuICoqIG1vZHVsZSBjaHVu
a3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNS1wcmVzZW50LCBGYWNlYm9vaywg
SW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlz
IGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJ
Q0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4g
YWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhl
IFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICovXG5cbid1c2Ugc3Ry
aWN0JztcblxudmFyIHdhcm5pbmcgPSByZXF1aXJlKCdmYmpzL2xpYi93YXJuaW5nJyk7XG5cbmZ1
bmN0aW9uIHdhcm5Ob29wKHB1YmxpY0luc3RhbmNlLCBjYWxsZXJOYW1lKSB7XG4gIGlmIChwcm9j
ZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgdmFyIGNvbnN0cnVjdG9y
ID0gcHVibGljSW5zdGFuY2UuY29uc3RydWN0b3I7XG4gICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYg
IT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICclcyguLi4pOiBDYW4gb25seSB1cGRh
dGUgYSBtb3VudGVkIG9yIG1vdW50aW5nIGNvbXBvbmVudC4gJyArICdUaGlzIHVzdWFsbHkgbWVh
bnMgeW91IGNhbGxlZCAlcygpIG9uIGFuIHVubW91bnRlZCBjb21wb25lbnQuICcgKyAnVGhpcyBp
cyBhIG5vLW9wLiBQbGVhc2UgY2hlY2sgdGhlIGNvZGUgZm9yIHRoZSAlcyBjb21wb25lbnQuJywg
Y2FsbGVyTmFtZSwgY2FsbGVyTmFtZSwgY29uc3RydWN0b3IgJiYgKGNvbnN0cnVjdG9yLmRpc3Bs
YXlOYW1lIHx8IGNvbnN0cnVjdG9yLm5hbWUpIHx8ICdSZWFjdENsYXNzJykgOiB2b2lkIDA7XG4g
IH1cbn1cblxuLyoqXG4gKiBUaGlzIGlzIHRoZSBhYnN0cmFjdCBBUEkgZm9yIGFuIHVwZGF0ZSBx
dWV1ZS5cbiAqL1xudmFyIFJlYWN0Tm9vcFVwZGF0ZVF1ZXVlID0ge1xuICAvKipcbiAgICogQ2hl
Y2tzIHdoZXRoZXIgb3Igbm90IHRoaXMgY29tcG9zaXRlIGNvbXBvbmVudCBpcyBtb3VudGVkLlxu
ICAgKiBAcGFyYW0ge1JlYWN0Q2xhc3N9IHB1YmxpY0luc3RhbmNlIFRoZSBpbnN0YW5jZSB3ZSB3
YW50IHRvIHRlc3QuXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUgaWYgbW91bnRlZCwgZmFs
c2Ugb3RoZXJ3aXNlLlxuICAgKiBAcHJvdGVjdGVkXG4gICAqIEBmaW5hbFxuICAgKi9cbiAgaXNN
b3VudGVkOiBmdW5jdGlvbiAocHVibGljSW5zdGFuY2UpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4g
IH0sXG5cbiAgLyoqXG4gICAqIEVucXVldWUgYSBjYWxsYmFjayB0aGF0IHdpbGwgYmUgZXhlY3V0
ZWQgYWZ0ZXIgYWxsIHRoZSBwZW5kaW5nIHVwZGF0ZXNcbiAgICogaGF2ZSBwcm9jZXNzZWQuXG4g
ICAqXG4gICAqIEBwYXJhbSB7UmVhY3RDbGFzc30gcHVibGljSW5zdGFuY2UgVGhlIGluc3RhbmNl
IHRvIHVzZSBhcyBgdGhpc2AgY29udGV4dC5cbiAgICogQHBhcmFtIHs/ZnVuY3Rpb259IGNhbGxi
YWNrIENhbGxlZCBhZnRlciBzdGF0ZSBpcyB1cGRhdGVkLlxuICAgKiBAaW50ZXJuYWxcbiAgICov
XG4gIGVucXVldWVDYWxsYmFjazogZnVuY3Rpb24gKHB1YmxpY0luc3RhbmNlLCBjYWxsYmFjaykg
e30sXG5cbiAgLyoqXG4gICAqIEZvcmNlcyBhbiB1cGRhdGUuIFRoaXMgc2hvdWxkIG9ubHkgYmUg
aW52b2tlZCB3aGVuIGl0IGlzIGtub3duIHdpdGhcbiAgICogY2VydGFpbnR5IHRoYXQgd2UgYXJl
ICoqbm90KiogaW4gYSBET00gdHJhbnNhY3Rpb24uXG4gICAqXG4gICAqIFlvdSBtYXkgd2FudCB0
byBjYWxsIHRoaXMgd2hlbiB5b3Uga25vdyB0aGF0IHNvbWUgZGVlcGVyIGFzcGVjdCBvZiB0aGVc
biAgICogY29tcG9uZW50J3Mgc3RhdGUgaGFzIGNoYW5nZWQgYnV0IGBzZXRTdGF0ZWAgd2FzIG5v
dCBjYWxsZWQuXG4gICAqXG4gICAqIFRoaXMgd2lsbCBub3QgaW52b2tlIGBzaG91bGRDb21wb25l
bnRVcGRhdGVgLCBidXQgaXQgd2lsbCBpbnZva2VcbiAgICogYGNvbXBvbmVudFdpbGxVcGRhdGVg
IGFuZCBgY29tcG9uZW50RGlkVXBkYXRlYC5cbiAgICpcbiAgICogQHBhcmFtIHtSZWFjdENsYXNz
fSBwdWJsaWNJbnN0YW5jZSBUaGUgaW5zdGFuY2UgdGhhdCBzaG91bGQgcmVyZW5kZXIuXG4gICAq
IEBpbnRlcm5hbFxuICAgKi9cbiAgZW5xdWV1ZUZvcmNlVXBkYXRlOiBmdW5jdGlvbiAocHVibGlj
SW5zdGFuY2UpIHtcbiAgICB3YXJuTm9vcChwdWJsaWNJbnN0YW5jZSwgJ2ZvcmNlVXBkYXRlJyk7
XG4gIH0sXG5cbiAgLyoqXG4gICAqIFJlcGxhY2VzIGFsbCBvZiB0aGUgc3RhdGUuIEFsd2F5cyB1
c2UgdGhpcyBvciBgc2V0U3RhdGVgIHRvIG11dGF0ZSBzdGF0ZS5cbiAgICogWW91IHNob3VsZCB0
cmVhdCBgdGhpcy5zdGF0ZWAgYXMgaW1tdXRhYmxlLlxuICAgKlxuICAgKiBUaGVyZSBpcyBubyBn
dWFyYW50ZWUgdGhhdCBgdGhpcy5zdGF0ZWAgd2lsbCBiZSBpbW1lZGlhdGVseSB1cGRhdGVkLCBz
b1xuICAgKiBhY2Nlc3NpbmcgYHRoaXMuc3RhdGVgIGFmdGVyIGNhbGxpbmcgdGhpcyBtZXRob2Qg
bWF5IHJldHVybiB0aGUgb2xkIHZhbHVlLlxuICAgKlxuICAgKiBAcGFyYW0ge1JlYWN0Q2xhc3N9
IHB1YmxpY0luc3RhbmNlIFRoZSBpbnN0YW5jZSB0aGF0IHNob3VsZCByZXJlbmRlci5cbiAgICog
QHBhcmFtIHtvYmplY3R9IGNvbXBsZXRlU3RhdGUgTmV4dCBzdGF0ZS5cbiAgICogQGludGVybmFs
XG4gICAqL1xuICBlbnF1ZXVlUmVwbGFjZVN0YXRlOiBmdW5jdGlvbiAocHVibGljSW5zdGFuY2Us
IGNvbXBsZXRlU3RhdGUpIHtcbiAgICB3YXJuTm9vcChwdWJsaWNJbnN0YW5jZSwgJ3JlcGxhY2VT
dGF0ZScpO1xuICB9LFxuXG4gIC8qKlxuICAgKiBTZXRzIGEgc3Vic2V0IG9mIHRoZSBzdGF0ZS4g
VGhpcyBvbmx5IGV4aXN0cyBiZWNhdXNlIF9wZW5kaW5nU3RhdGUgaXNcbiAgICogaW50ZXJuYWwu
IFRoaXMgcHJvdmlkZXMgYSBtZXJnaW5nIHN0cmF0ZWd5IHRoYXQgaXMgbm90IGF2YWlsYWJsZSB0
byBkZWVwXG4gICAqIHByb3BlcnRpZXMgd2hpY2ggaXMgY29uZnVzaW5nLiBUT0RPOiBFeHBvc2Ug
cGVuZGluZ1N0YXRlIG9yIGRvbid0IHVzZSBpdFxuICAgKiBkdXJpbmcgdGhlIG1lcmdlLlxuICAg
KlxuICAgKiBAcGFyYW0ge1JlYWN0Q2xhc3N9IHB1YmxpY0luc3RhbmNlIFRoZSBpbnN0YW5jZSB0
aGF0IHNob3VsZCByZXJlbmRlci5cbiAgICogQHBhcmFtIHtvYmplY3R9IHBhcnRpYWxTdGF0ZSBO
ZXh0IHBhcnRpYWwgc3RhdGUgdG8gYmUgbWVyZ2VkIHdpdGggc3RhdGUuXG4gICAqIEBpbnRlcm5h
bFxuICAgKi9cbiAgZW5xdWV1ZVNldFN0YXRlOiBmdW5jdGlvbiAocHVibGljSW5zdGFuY2UsIHBh
cnRpYWxTdGF0ZSkge1xuICAgIHdhcm5Ob29wKHB1YmxpY0luc3RhbmNlLCAnc2V0U3RhdGUnKTtc
biAgfVxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdE5vb3BVcGRhdGVRdWV1ZTtcblxuXG4v
KioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFjdC9saWIv
UmVhY3ROb29wVXBkYXRlUXVldWUuanNcbiAqKiBtb2R1bGUgaWQgPSA5MlxuICoqIG1vZHVsZSBj
aHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9v
aywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2Rl
IGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAq
IExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4g
QW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4g
dGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogXG4gKi9cblxu
J3VzZSBzdHJpY3QnO1xuXG52YXIgY2FuRGVmaW5lUHJvcGVydHkgPSBmYWxzZTtcbmlmIChwcm9j
ZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIHRyeSB7XG4gICAgLy8gJEZs
b3dGaXhNZSBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svZmxvdy9pc3N1ZXMvMjg1XG4gICAg
T2JqZWN0LmRlZmluZVByb3BlcnR5KHt9LCAneCcsIHsgZ2V0OiBmdW5jdGlvbiAoKSB7fSB9KTtc
biAgICBjYW5EZWZpbmVQcm9wZXJ0eSA9IHRydWU7XG4gIH0gY2F0Y2ggKHgpIHtcbiAgICAvLyBJ
RSB3aWxsIGZhaWwgb24gZGVmaW5lUHJvcGVydHlcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9
IGNhbkRlZmluZVByb3BlcnR5O1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sg
Rk9PVEVSXG4gKiogLi9+L3JlYWN0L2xpYi9jYW5EZWZpbmVQcm9wZXJ0eS5qc1xuICoqIG1vZHVs
ZSBpZCA9IDkzXG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCJcInVzZSBzdHJpY3RcIjtc
blxuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcbmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gY29t
cG9zZTtcbi8qKlxuICogQ29tcG9zZXMgc2luZ2xlLWFyZ3VtZW50IGZ1bmN0aW9ucyBmcm9tIHJp
Z2h0IHRvIGxlZnQuIFRoZSByaWdodG1vc3RcbiAqIGZ1bmN0aW9uIGNhbiB0YWtlIG11bHRpcGxl
IGFyZ3VtZW50cyBhcyBpdCBwcm92aWRlcyB0aGUgc2lnbmF0dXJlIGZvclxuICogdGhlIHJlc3Vs
dGluZyBjb21wb3NpdGUgZnVuY3Rpb24uXG4gKlxuICogQHBhcmFtIHsuLi5GdW5jdGlvbn0gZnVu
Y3MgVGhlIGZ1bmN0aW9ucyB0byBjb21wb3NlLlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBBIGZ1
bmN0aW9uIG9idGFpbmVkIGJ5IGNvbXBvc2luZyB0aGUgYXJndW1lbnQgZnVuY3Rpb25zXG4gKiBm
cm9tIHJpZ2h0IHRvIGxlZnQuIEZvciBleGFtcGxlLCBjb21wb3NlKGYsIGcsIGgpIGlzIGlkZW50
aWNhbCB0byBkb2luZ1xuICogKC4uLmFyZ3MpID0+IGYoZyhoKC4uLmFyZ3MpKSkuXG4gKi9cblxu
ZnVuY3Rpb24gY29tcG9zZSgpIHtcbiAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgs
IGZ1bmNzID0gQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4g
ICAgZnVuY3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gIH1cblxuICBpZiAoZnVuY3MubGVu
Z3RoID09PSAwKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChhcmcpIHtcbiAgICAgIHJldHVybiBh
cmc7XG4gICAgfTtcbiAgfVxuXG4gIGlmIChmdW5jcy5sZW5ndGggPT09IDEpIHtcbiAgICByZXR1
cm4gZnVuY3NbMF07XG4gIH1cblxuICByZXR1cm4gZnVuY3MucmVkdWNlKGZ1bmN0aW9uIChhLCBi
KSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBhKGIuYXBwbHkodW5k
ZWZpbmVkLCBhcmd1bWVudHMpKTtcbiAgICB9O1xuICB9KTtcbn1cblxuXG4vKioqKioqKioqKioq
KioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWR1eC9saWIvY29tcG9zZS5qc1xu
ICoqIG1vZHVsZSBpZCA9IDk0XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIndXNlIHN0
cmljdCc7XG5cbmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5leHBvcnRzLkFjdGlvblR5cGVz
ID0gdW5kZWZpbmVkO1xuZXhwb3J0c1snZGVmYXVsdCddID0gY3JlYXRlU3RvcmU7XG5cbnZhciBf
aXNQbGFpbk9iamVjdCA9IHJlcXVpcmUoJ2xvZGFzaC9pc1BsYWluT2JqZWN0Jyk7XG5cbnZhciBf
aXNQbGFpbk9iamVjdDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9pc1BsYWluT2JqZWN0KTtc
blxudmFyIF9zeW1ib2xPYnNlcnZhYmxlID0gcmVxdWlyZSgnc3ltYm9sLW9ic2VydmFibGUnKTtc
blxudmFyIF9zeW1ib2xPYnNlcnZhYmxlMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3N5bWJv
bE9ic2VydmFibGUpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyBy
ZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyAnZGVmYXVsdCc6IG9iaiB9OyB9
XG5cbi8qKlxuICogVGhlc2UgYXJlIHByaXZhdGUgYWN0aW9uIHR5cGVzIHJlc2VydmVkIGJ5IFJl
ZHV4LlxuICogRm9yIGFueSB1bmtub3duIGFjdGlvbnMsIHlvdSBtdXN0IHJldHVybiB0aGUgY3Vy
cmVudCBzdGF0ZS5cbiAqIElmIHRoZSBjdXJyZW50IHN0YXRlIGlzIHVuZGVmaW5lZCwgeW91IG11
c3QgcmV0dXJuIHRoZSBpbml0aWFsIHN0YXRlLlxuICogRG8gbm90IHJlZmVyZW5jZSB0aGVzZSBh
Y3Rpb24gdHlwZXMgZGlyZWN0bHkgaW4geW91ciBjb2RlLlxuICovXG52YXIgQWN0aW9uVHlwZXMg
PSBleHBvcnRzLkFjdGlvblR5cGVzID0ge1xuICBJTklUOiAnQEByZWR1eC9JTklUJ1xuXG4gIC8q
KlxuICAgKiBDcmVhdGVzIGEgUmVkdXggc3RvcmUgdGhhdCBob2xkcyB0aGUgc3RhdGUgdHJlZS5c
biAgICogVGhlIG9ubHkgd2F5IHRvIGNoYW5nZSB0aGUgZGF0YSBpbiB0aGUgc3RvcmUgaXMgdG8g
Y2FsbCBgZGlzcGF0Y2goKWAgb24gaXQuXG4gICAqXG4gICAqIFRoZXJlIHNob3VsZCBvbmx5IGJl
IGEgc2luZ2xlIHN0b3JlIGluIHlvdXIgYXBwLiBUbyBzcGVjaWZ5IGhvdyBkaWZmZXJlbnRcbiAg
ICogcGFydHMgb2YgdGhlIHN0YXRlIHRyZWUgcmVzcG9uZCB0byBhY3Rpb25zLCB5b3UgbWF5IGNv
bWJpbmUgc2V2ZXJhbCByZWR1Y2Vyc1xuICAgKiBpbnRvIGEgc2luZ2xlIHJlZHVjZXIgZnVuY3Rp
b24gYnkgdXNpbmcgYGNvbWJpbmVSZWR1Y2Vyc2AuXG4gICAqXG4gICAqIEBwYXJhbSB7RnVuY3Rp
b259IHJlZHVjZXIgQSBmdW5jdGlvbiB0aGF0IHJldHVybnMgdGhlIG5leHQgc3RhdGUgdHJlZSwg
Z2l2ZW5cbiAgICogdGhlIGN1cnJlbnQgc3RhdGUgdHJlZSBhbmQgdGhlIGFjdGlvbiB0byBoYW5k
bGUuXG4gICAqXG4gICAqIEBwYXJhbSB7YW55fSBbcHJlbG9hZGVkU3RhdGVdIFRoZSBpbml0aWFs
IHN0YXRlLiBZb3UgbWF5IG9wdGlvbmFsbHkgc3BlY2lmeSBpdFxuICAgKiB0byBoeWRyYXRlIHRo
ZSBzdGF0ZSBmcm9tIHRoZSBzZXJ2ZXIgaW4gdW5pdmVyc2FsIGFwcHMsIG9yIHRvIHJlc3RvcmUg
YVxuICAgKiBwcmV2aW91c2x5IHNlcmlhbGl6ZWQgdXNlciBzZXNzaW9uLlxuICAgKiBJZiB5b3Ug
dXNlIGBjb21iaW5lUmVkdWNlcnNgIHRvIHByb2R1Y2UgdGhlIHJvb3QgcmVkdWNlciBmdW5jdGlv
biwgdGhpcyBtdXN0IGJlXG4gICAqIGFuIG9iamVjdCB3aXRoIHRoZSBzYW1lIHNoYXBlIGFzIGBj
b21iaW5lUmVkdWNlcnNgIGtleXMuXG4gICAqXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IFtlbmhh
bmNlcl0gVGhlIHN0b3JlIGVuaGFuY2VyLiBZb3UgbWF5IG9wdGlvbmFsbHkgc3BlY2lmeSBpdFxu
ICAgKiB0byBlbmhhbmNlIHRoZSBzdG9yZSB3aXRoIHRoaXJkLXBhcnR5IGNhcGFiaWxpdGllcyBz
dWNoIGFzIG1pZGRsZXdhcmUsXG4gICAqIHRpbWUgdHJhdmVsLCBwZXJzaXN0ZW5jZSwgZXRjLiBU
aGUgb25seSBzdG9yZSBlbmhhbmNlciB0aGF0IHNoaXBzIHdpdGggUmVkdXhcbiAgICogaXMgYGFw
cGx5TWlkZGxld2FyZSgpYC5cbiAgICpcbiAgICogQHJldHVybnMge1N0b3JlfSBBIFJlZHV4IHN0
b3JlIHRoYXQgbGV0cyB5b3UgcmVhZCB0aGUgc3RhdGUsIGRpc3BhdGNoIGFjdGlvbnNcbiAgICog
YW5kIHN1YnNjcmliZSB0byBjaGFuZ2VzLlxuICAgKi9cbn07ZnVuY3Rpb24gY3JlYXRlU3RvcmUo
cmVkdWNlciwgcHJlbG9hZGVkU3RhdGUsIGVuaGFuY2VyKSB7XG4gIHZhciBfcmVmMjtcblxuICBp
ZiAodHlwZW9mIHByZWxvYWRlZFN0YXRlID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiBlbmhhbmNl
ciA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICBlbmhhbmNlciA9IHByZWxvYWRlZFN0YXRlO1xuICAg
IHByZWxvYWRlZFN0YXRlID0gdW5kZWZpbmVkO1xuICB9XG5cbiAgaWYgKHR5cGVvZiBlbmhhbmNl
ciAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICBpZiAodHlwZW9mIGVuaGFuY2VyICE9PSAnZnVuY3Rp
b24nKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0V4cGVjdGVkIHRoZSBlbmhhbmNlciB0byBi
ZSBhIGZ1bmN0aW9uLicpO1xuICAgIH1cblxuICAgIHJldHVybiBlbmhhbmNlcihjcmVhdGVTdG9y
ZSkocmVkdWNlciwgcHJlbG9hZGVkU3RhdGUpO1xuICB9XG5cbiAgaWYgKHR5cGVvZiByZWR1Y2Vy
ICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdFeHBlY3RlZCB0aGUgcmVk
dWNlciB0byBiZSBhIGZ1bmN0aW9uLicpO1xuICB9XG5cbiAgdmFyIGN1cnJlbnRSZWR1Y2VyID0g
cmVkdWNlcjtcbiAgdmFyIGN1cnJlbnRTdGF0ZSA9IHByZWxvYWRlZFN0YXRlO1xuICB2YXIgY3Vy
cmVudExpc3RlbmVycyA9IFtdO1xuICB2YXIgbmV4dExpc3RlbmVycyA9IGN1cnJlbnRMaXN0ZW5l
cnM7XG4gIHZhciBpc0Rpc3BhdGNoaW5nID0gZmFsc2U7XG5cbiAgZnVuY3Rpb24gZW5zdXJlQ2Fu
TXV0YXRlTmV4dExpc3RlbmVycygpIHtcbiAgICBpZiAobmV4dExpc3RlbmVycyA9PT0gY3VycmVu
dExpc3RlbmVycykge1xuICAgICAgbmV4dExpc3RlbmVycyA9IGN1cnJlbnRMaXN0ZW5lcnMuc2xp
Y2UoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmVhZHMgdGhlIHN0YXRlIHRyZWUgbWFu
YWdlZCBieSB0aGUgc3RvcmUuXG4gICAqXG4gICAqIEByZXR1cm5zIHthbnl9IFRoZSBjdXJyZW50
IHN0YXRlIHRyZWUgb2YgeW91ciBhcHBsaWNhdGlvbi5cbiAgICovXG4gIGZ1bmN0aW9uIGdldFN0
YXRlKCkge1xuICAgIHJldHVybiBjdXJyZW50U3RhdGU7XG4gIH1cblxuICAvKipcbiAgICogQWRk
cyBhIGNoYW5nZSBsaXN0ZW5lci4gSXQgd2lsbCBiZSBjYWxsZWQgYW55IHRpbWUgYW4gYWN0aW9u
IGlzIGRpc3BhdGNoZWQsXG4gICAqIGFuZCBzb21lIHBhcnQgb2YgdGhlIHN0YXRlIHRyZWUgbWF5
IHBvdGVudGlhbGx5IGhhdmUgY2hhbmdlZC4gWW91IG1heSB0aGVuXG4gICAqIGNhbGwgYGdldFN0
YXRlKClgIHRvIHJlYWQgdGhlIGN1cnJlbnQgc3RhdGUgdHJlZSBpbnNpZGUgdGhlIGNhbGxiYWNr
LlxuICAgKlxuICAgKiBZb3UgbWF5IGNhbGwgYGRpc3BhdGNoKClgIGZyb20gYSBjaGFuZ2UgbGlz
dGVuZXIsIHdpdGggdGhlIGZvbGxvd2luZ1xuICAgKiBjYXZlYXRzOlxuICAgKlxuICAgKiAxLiBU
aGUgc3Vic2NyaXB0aW9ucyBhcmUgc25hcHNob3R0ZWQganVzdCBiZWZvcmUgZXZlcnkgYGRpc3Bh
dGNoKClgIGNhbGwuXG4gICAqIElmIHlvdSBzdWJzY3JpYmUgb3IgdW5zdWJzY3JpYmUgd2hpbGUg
dGhlIGxpc3RlbmVycyBhcmUgYmVpbmcgaW52b2tlZCwgdGhpc1xuICAgKiB3aWxsIG5vdCBoYXZl
IGFueSBlZmZlY3Qgb24gdGhlIGBkaXNwYXRjaCgpYCB0aGF0IGlzIGN1cnJlbnRseSBpbiBwcm9n
cmVzcy5cbiAgICogSG93ZXZlciwgdGhlIG5leHQgYGRpc3BhdGNoKClgIGNhbGwsIHdoZXRoZXIg
bmVzdGVkIG9yIG5vdCwgd2lsbCB1c2UgYSBtb3JlXG4gICAqIHJlY2VudCBzbmFwc2hvdCBvZiB0
aGUgc3Vic2NyaXB0aW9uIGxpc3QuXG4gICAqXG4gICAqIDIuIFRoZSBsaXN0ZW5lciBzaG91bGQg
bm90IGV4cGVjdCB0byBzZWUgYWxsIHN0YXRlIGNoYW5nZXMsIGFzIHRoZSBzdGF0ZVxuICAgKiBt
aWdodCBoYXZlIGJlZW4gdXBkYXRlZCBtdWx0aXBsZSB0aW1lcyBkdXJpbmcgYSBuZXN0ZWQgYGRp
c3BhdGNoKClgIGJlZm9yZVxuICAgKiB0aGUgbGlzdGVuZXIgaXMgY2FsbGVkLiBJdCBpcywgaG93
ZXZlciwgZ3VhcmFudGVlZCB0aGF0IGFsbCBzdWJzY3JpYmVyc1xuICAgKiByZWdpc3RlcmVkIGJl
Zm9yZSB0aGUgYGRpc3BhdGNoKClgIHN0YXJ0ZWQgd2lsbCBiZSBjYWxsZWQgd2l0aCB0aGUgbGF0
ZXN0XG4gICAqIHN0YXRlIGJ5IHRoZSB0aW1lIGl0IGV4aXRzLlxuICAgKlxuICAgKiBAcGFyYW0g
e0Z1bmN0aW9ufSBsaXN0ZW5lciBBIGNhbGxiYWNrIHRvIGJlIGludm9rZWQgb24gZXZlcnkgZGlz
cGF0Y2guXG4gICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gQSBmdW5jdGlvbiB0byByZW1vdmUgdGhp
cyBjaGFuZ2UgbGlzdGVuZXIuXG4gICAqL1xuICBmdW5jdGlvbiBzdWJzY3JpYmUobGlzdGVuZXIp
IHtcbiAgICBpZiAodHlwZW9mIGxpc3RlbmVyICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICB0aHJv
dyBuZXcgRXJyb3IoJ0V4cGVjdGVkIGxpc3RlbmVyIHRvIGJlIGEgZnVuY3Rpb24uJyk7XG4gICAg
fVxuXG4gICAgdmFyIGlzU3Vic2NyaWJlZCA9IHRydWU7XG5cbiAgICBlbnN1cmVDYW5NdXRhdGVO
ZXh0TGlzdGVuZXJzKCk7XG4gICAgbmV4dExpc3RlbmVycy5wdXNoKGxpc3RlbmVyKTtcblxuICAg
IHJldHVybiBmdW5jdGlvbiB1bnN1YnNjcmliZSgpIHtcbiAgICAgIGlmICghaXNTdWJzY3JpYmVk
KSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaXNTdWJzY3JpYmVkID0gZmFs
c2U7XG5cbiAgICAgIGVuc3VyZUNhbk11dGF0ZU5leHRMaXN0ZW5lcnMoKTtcbiAgICAgIHZhciBp
bmRleCA9IG5leHRMaXN0ZW5lcnMuaW5kZXhPZihsaXN0ZW5lcik7XG4gICAgICBuZXh0TGlzdGVu
ZXJzLnNwbGljZShpbmRleCwgMSk7XG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEaXNwYXRj
aGVzIGFuIGFjdGlvbi4gSXQgaXMgdGhlIG9ubHkgd2F5IHRvIHRyaWdnZXIgYSBzdGF0ZSBjaGFu
Z2UuXG4gICAqXG4gICAqIFRoZSBgcmVkdWNlcmAgZnVuY3Rpb24sIHVzZWQgdG8gY3JlYXRlIHRo
ZSBzdG9yZSwgd2lsbCBiZSBjYWxsZWQgd2l0aCB0aGVcbiAgICogY3VycmVudCBzdGF0ZSB0cmVl
IGFuZCB0aGUgZ2l2ZW4gYGFjdGlvbmAuIEl0cyByZXR1cm4gdmFsdWUgd2lsbFxuICAgKiBiZSBj
b25zaWRlcmVkIHRoZSAqKm5leHQqKiBzdGF0ZSBvZiB0aGUgdHJlZSwgYW5kIHRoZSBjaGFuZ2Ug
bGlzdGVuZXJzXG4gICAqIHdpbGwgYmUgbm90aWZpZWQuXG4gICAqXG4gICAqIFRoZSBiYXNlIGlt
cGxlbWVudGF0aW9uIG9ubHkgc3VwcG9ydHMgcGxhaW4gb2JqZWN0IGFjdGlvbnMuIElmIHlvdSB3
YW50IHRvXG4gICAqIGRpc3BhdGNoIGEgUHJvbWlzZSwgYW4gT2JzZXJ2YWJsZSwgYSB0aHVuaywg
b3Igc29tZXRoaW5nIGVsc2UsIHlvdSBuZWVkIHRvXG4gICAqIHdyYXAgeW91ciBzdG9yZSBjcmVh
dGluZyBmdW5jdGlvbiBpbnRvIHRoZSBjb3JyZXNwb25kaW5nIG1pZGRsZXdhcmUuIEZvclxuICAg
KiBleGFtcGxlLCBzZWUgdGhlIGRvY3VtZW50YXRpb24gZm9yIHRoZSBgcmVkdXgtdGh1bmtgIHBh
Y2thZ2UuIEV2ZW4gdGhlXG4gICAqIG1pZGRsZXdhcmUgd2lsbCBldmVudHVhbGx5IGRpc3BhdGNo
IHBsYWluIG9iamVjdCBhY3Rpb25zIHVzaW5nIHRoaXMgbWV0aG9kLlxuICAgKlxuICAgKiBAcGFy
YW0ge09iamVjdH0gYWN0aW9uIEEgcGxhaW4gb2JqZWN0IHJlcHJlc2VudGluZyDigJx3aGF0IGNo
YW5nZWTigJ0uIEl0IGlzXG4gICAqIGEgZ29vZCBpZGVhIHRvIGtlZXAgYWN0aW9ucyBzZXJpYWxp
emFibGUgc28geW91IGNhbiByZWNvcmQgYW5kIHJlcGxheSB1c2VyXG4gICAqIHNlc3Npb25zLCBv
ciB1c2UgdGhlIHRpbWUgdHJhdmVsbGluZyBgcmVkdXgtZGV2dG9vbHNgLiBBbiBhY3Rpb24gbXVz
dCBoYXZlXG4gICAqIGEgYHR5cGVgIHByb3BlcnR5IHdoaWNoIG1heSBub3QgYmUgYHVuZGVmaW5l
ZGAuIEl0IGlzIGEgZ29vZCBpZGVhIHRvIHVzZVxuICAgKiBzdHJpbmcgY29uc3RhbnRzIGZvciBh
Y3Rpb24gdHlwZXMuXG4gICAqXG4gICAqIEByZXR1cm5zIHtPYmplY3R9IEZvciBjb252ZW5pZW5j
ZSwgdGhlIHNhbWUgYWN0aW9uIG9iamVjdCB5b3UgZGlzcGF0Y2hlZC5cbiAgICpcbiAgICogTm90
ZSB0aGF0LCBpZiB5b3UgdXNlIGEgY3VzdG9tIG1pZGRsZXdhcmUsIGl0IG1heSB3cmFwIGBkaXNw
YXRjaCgpYCB0b1xuICAgKiByZXR1cm4gc29tZXRoaW5nIGVsc2UgKGZvciBleGFtcGxlLCBhIFBy
b21pc2UgeW91IGNhbiBhd2FpdCkuXG4gICAqL1xuICBmdW5jdGlvbiBkaXNwYXRjaChhY3Rpb24p
IHtcbiAgICBpZiAoISgwLCBfaXNQbGFpbk9iamVjdDJbJ2RlZmF1bHQnXSkoYWN0aW9uKSkge1xu
ICAgICAgdGhyb3cgbmV3IEVycm9yKCdBY3Rpb25zIG11c3QgYmUgcGxhaW4gb2JqZWN0cy4gJyAr
ICdVc2UgY3VzdG9tIG1pZGRsZXdhcmUgZm9yIGFzeW5jIGFjdGlvbnMuJyk7XG4gICAgfVxuXG4g
ICAgaWYgKHR5cGVvZiBhY3Rpb24udHlwZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHRocm93
IG5ldyBFcnJvcignQWN0aW9ucyBtYXkgbm90IGhhdmUgYW4gdW5kZWZpbmVkIFwidHlwZVwiIHBy
b3BlcnR5LiAnICsgJ0hhdmUgeW91IG1pc3NwZWxsZWQgYSBjb25zdGFudD8nKTtcbiAgICB9XG5c
biAgICBpZiAoaXNEaXNwYXRjaGluZykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdSZWR1Y2Vy
cyBtYXkgbm90IGRpc3BhdGNoIGFjdGlvbnMuJyk7XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAg
IGlzRGlzcGF0Y2hpbmcgPSB0cnVlO1xuICAgICAgY3VycmVudFN0YXRlID0gY3VycmVudFJlZHVj
ZXIoY3VycmVudFN0YXRlLCBhY3Rpb24pO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBpc0Rpc3Bh
dGNoaW5nID0gZmFsc2U7XG4gICAgfVxuXG4gICAgdmFyIGxpc3RlbmVycyA9IGN1cnJlbnRMaXN0
ZW5lcnMgPSBuZXh0TGlzdGVuZXJzO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGlzdGVuZXJz
Lmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgbGlzdGVuZXIgPSBsaXN0ZW5lcnNbaV07XG4gICAg
ICBsaXN0ZW5lcigpO1xuICAgIH1cblxuICAgIHJldHVybiBhY3Rpb247XG4gIH1cblxuICAvKipc
biAgICogUmVwbGFjZXMgdGhlIHJlZHVjZXIgY3VycmVudGx5IHVzZWQgYnkgdGhlIHN0b3JlIHRv
IGNhbGN1bGF0ZSB0aGUgc3RhdGUuXG4gICAqXG4gICAqIFlvdSBtaWdodCBuZWVkIHRoaXMgaWYg
eW91ciBhcHAgaW1wbGVtZW50cyBjb2RlIHNwbGl0dGluZyBhbmQgeW91IHdhbnQgdG9cbiAgICog
bG9hZCBzb21lIG9mIHRoZSByZWR1Y2VycyBkeW5hbWljYWxseS4gWW91IG1pZ2h0IGFsc28gbmVl
ZCB0aGlzIGlmIHlvdVxuICAgKiBpbXBsZW1lbnQgYSBob3QgcmVsb2FkaW5nIG1lY2hhbmlzbSBm
b3IgUmVkdXguXG4gICAqXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IG5leHRSZWR1Y2VyIFRoZSBy
ZWR1Y2VyIGZvciB0aGUgc3RvcmUgdG8gdXNlIGluc3RlYWQuXG4gICAqIEByZXR1cm5zIHt2b2lk
fVxuICAgKi9cbiAgZnVuY3Rpb24gcmVwbGFjZVJlZHVjZXIobmV4dFJlZHVjZXIpIHtcbiAgICBp
ZiAodHlwZW9mIG5leHRSZWR1Y2VyICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICB0aHJvdyBuZXcg
RXJyb3IoJ0V4cGVjdGVkIHRoZSBuZXh0UmVkdWNlciB0byBiZSBhIGZ1bmN0aW9uLicpO1xuICAg
IH1cblxuICAgIGN1cnJlbnRSZWR1Y2VyID0gbmV4dFJlZHVjZXI7XG4gICAgZGlzcGF0Y2goeyB0
eXBlOiBBY3Rpb25UeXBlcy5JTklUIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEludGVyb3BlcmFi
aWxpdHkgcG9pbnQgZm9yIG9ic2VydmFibGUvcmVhY3RpdmUgbGlicmFyaWVzLlxuICAgKiBAcmV0
dXJucyB7b2JzZXJ2YWJsZX0gQSBtaW5pbWFsIG9ic2VydmFibGUgb2Ygc3RhdGUgY2hhbmdlcy5c
biAgICogRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSB0aGUgb2JzZXJ2YWJsZSBwcm9wb3NhbDpc
biAgICogaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtb2JzZXJ2YWJsZVxuICAgKi9c
biAgZnVuY3Rpb24gb2JzZXJ2YWJsZSgpIHtcbiAgICB2YXIgX3JlZjtcblxuICAgIHZhciBvdXRl
clN1YnNjcmliZSA9IHN1YnNjcmliZTtcbiAgICByZXR1cm4gX3JlZiA9IHtcbiAgICAgIC8qKlxu
ICAgICAgICogVGhlIG1pbmltYWwgb2JzZXJ2YWJsZSBzdWJzY3JpcHRpb24gbWV0aG9kLlxuICAg
ICAgICogQHBhcmFtIHtPYmplY3R9IG9ic2VydmVyIEFueSBvYmplY3QgdGhhdCBjYW4gYmUgdXNl
ZCBhcyBhbiBvYnNlcnZlci5cbiAgICAgICAqIFRoZSBvYnNlcnZlciBvYmplY3Qgc2hvdWxkIGhh
dmUgYSBgbmV4dGAgbWV0aG9kLlxuICAgICAgICogQHJldHVybnMge3N1YnNjcmlwdGlvbn0gQW4g
b2JqZWN0IHdpdGggYW4gYHVuc3Vic2NyaWJlYCBtZXRob2QgdGhhdCBjYW5cbiAgICAgICAqIGJl
IHVzZWQgdG8gdW5zdWJzY3JpYmUgdGhlIG9ic2VydmFibGUgZnJvbSB0aGUgc3RvcmUsIGFuZCBw
cmV2ZW50IGZ1cnRoZXJcbiAgICAgICAqIGVtaXNzaW9uIG9mIHZhbHVlcyBmcm9tIHRoZSBvYnNl
cnZhYmxlLlxuICAgICAgICovXG4gICAgICBzdWJzY3JpYmU6IGZ1bmN0aW9uIHN1YnNjcmliZShv
YnNlcnZlcikge1xuICAgICAgICBpZiAodHlwZW9mIG9ic2VydmVyICE9PSAnb2JqZWN0Jykge1xu
ICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0V4cGVjdGVkIHRoZSBvYnNlcnZlciB0byBi
ZSBhbiBvYmplY3QuJyk7XG4gICAgICAgIH1cblxuICAgICAgICBmdW5jdGlvbiBvYnNlcnZlU3Rh
dGUoKSB7XG4gICAgICAgICAgaWYgKG9ic2VydmVyLm5leHQpIHtcbiAgICAgICAgICAgIG9ic2Vy
dmVyLm5leHQoZ2V0U3RhdGUoKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAg
b2JzZXJ2ZVN0YXRlKCk7XG4gICAgICAgIHZhciB1bnN1YnNjcmliZSA9IG91dGVyU3Vic2NyaWJl
KG9ic2VydmVTdGF0ZSk7XG4gICAgICAgIHJldHVybiB7IHVuc3Vic2NyaWJlOiB1bnN1YnNjcmli
ZSB9O1xuICAgICAgfVxuICAgIH0sIF9yZWZbX3N5bWJvbE9ic2VydmFibGUyWydkZWZhdWx0J11d
ID0gZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfSwgX3JlZjtcbiAgfVxu
XG4gIC8vIFdoZW4gYSBzdG9yZSBpcyBjcmVhdGVkLCBhbiBcIklOSVRcIiBhY3Rpb24gaXMgZGlz
cGF0Y2hlZCBzbyB0aGF0IGV2ZXJ5XG4gIC8vIHJlZHVjZXIgcmV0dXJucyB0aGVpciBpbml0aWFs
IHN0YXRlLiBUaGlzIGVmZmVjdGl2ZWx5IHBvcHVsYXRlc1xuICAvLyB0aGUgaW5pdGlhbCBzdGF0
ZSB0cmVlLlxuICBkaXNwYXRjaCh7IHR5cGU6IEFjdGlvblR5cGVzLklOSVQgfSk7XG5cbiAgcmV0
dXJuIF9yZWYyID0ge1xuICAgIGRpc3BhdGNoOiBkaXNwYXRjaCxcbiAgICBzdWJzY3JpYmU6IHN1
YnNjcmliZSxcbiAgICBnZXRTdGF0ZTogZ2V0U3RhdGUsXG4gICAgcmVwbGFjZVJlZHVjZXI6IHJl
cGxhY2VSZWR1Y2VyXG4gIH0sIF9yZWYyW19zeW1ib2xPYnNlcnZhYmxlMlsnZGVmYXVsdCddXSA9
IG9ic2VydmFibGUsIF9yZWYyO1xufVxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBB
Q0sgRk9PVEVSXG4gKiogLi9+L3JlZHV4L2xpYi9jcmVhdGVTdG9yZS5qc1xuICoqIG1vZHVsZSBp
ZCA9IDk1XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIndXNlIHN0cmljdCc7XG5cbmV4
cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5leHBvcnRzWydkZWZhdWx0J10gPSB3YXJuaW5nO1xu
LyoqXG4gKiBQcmludHMgYSB3YXJuaW5nIGluIHRoZSBjb25zb2xlIGlmIGl0IGV4aXN0cy5cbiAq
XG4gKiBAcGFyYW0ge1N0cmluZ30gbWVzc2FnZSBUaGUgd2FybmluZyBtZXNzYWdlLlxuICogQHJl
dHVybnMge3ZvaWR9XG4gKi9cbmZ1bmN0aW9uIHdhcm5pbmcobWVzc2FnZSkge1xuICAvKiBlc2xp
bnQtZGlzYWJsZSBuby1jb25zb2xlICovXG4gIGlmICh0eXBlb2YgY29uc29sZSAhPT0gJ3VuZGVm
aW5lZCcgJiYgdHlwZW9mIGNvbnNvbGUuZXJyb3IgPT09ICdmdW5jdGlvbicpIHtcbiAgICBjb25z
b2xlLmVycm9yKG1lc3NhZ2UpO1xuICB9XG4gIC8qIGVzbGludC1lbmFibGUgbm8tY29uc29sZSAq
L1xuICB0cnkge1xuICAgIC8vIFRoaXMgZXJyb3Igd2FzIHRocm93biBhcyBhIGNvbnZlbmllbmNl
IHNvIHRoYXQgaWYgeW91IGVuYWJsZVxuICAgIC8vIFwiYnJlYWsgb24gYWxsIGV4Y2VwdGlvbnNc
IiBpbiB5b3VyIGNvbnNvbGUsXG4gICAgLy8gaXQgd291bGQgcGF1c2UgdGhlIGV4ZWN1dGlvbiBh
dCB0aGlzIGxpbmUuXG4gICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xuICAgIC8qIGVzbGlu
dC1kaXNhYmxlIG5vLWVtcHR5ICovXG4gIH0gY2F0Y2ggKGUpIHt9XG4gIC8qIGVzbGludC1lbmFi
bGUgbm8tZW1wdHkgKi9cbn1cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZP
T1RFUlxuICoqIC4vfi9yZWR1eC9saWIvdXRpbHMvd2FybmluZy5qc1xuICoqIG1vZHVsZSBpZCA9
IDk2XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENvcHlyaWdodCAyMDEz
LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAq
IFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNl
IGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0
aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRz
IGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5c
biAqXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgX2Fzc2lnbiA9IHJlcXVpcmUoJ29iamVj
dC1hc3NpZ24nKTtcblxudmFyIGVtcHR5T2JqZWN0ID0gcmVxdWlyZSgnZmJqcy9saWIvZW1wdHlP
YmplY3QnKTtcbnZhciBfaW52YXJpYW50ID0gcmVxdWlyZSgnZmJqcy9saWIvaW52YXJpYW50Jyk7
XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIHZhciB3
YXJuaW5nID0gcmVxdWlyZSgnZmJqcy9saWIvd2FybmluZycpO1xufVxuXG52YXIgTUlYSU5TX0tF
WSA9ICdtaXhpbnMnO1xuXG4vLyBIZWxwZXIgZnVuY3Rpb24gdG8gYWxsb3cgdGhlIGNyZWF0aW9u
IG9mIGFub255bW91cyBmdW5jdGlvbnMgd2hpY2ggZG8gbm90XG4vLyBoYXZlIC5uYW1lIHNldCB0
byB0aGUgbmFtZSBvZiB0aGUgdmFyaWFibGUgYmVpbmcgYXNzaWduZWQgdG8uXG5mdW5jdGlvbiBp
ZGVudGl0eShmbikge1xuICByZXR1cm4gZm47XG59XG5cbnZhciBSZWFjdFByb3BUeXBlTG9jYXRp
b25OYW1lcztcbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4g
IFJlYWN0UHJvcFR5cGVMb2NhdGlvbk5hbWVzID0ge1xuICAgIHByb3A6ICdwcm9wJyxcbiAgICBj
b250ZXh0OiAnY29udGV4dCcsXG4gICAgY2hpbGRDb250ZXh0OiAnY2hpbGQgY29udGV4dCdcbiAg
fTtcbn0gZWxzZSB7XG4gIFJlYWN0UHJvcFR5cGVMb2NhdGlvbk5hbWVzID0ge307XG59XG5cbmZ1
bmN0aW9uIGZhY3RvcnkoUmVhY3RDb21wb25lbnQsIGlzVmFsaWRFbGVtZW50LCBSZWFjdE5vb3BV
cGRhdGVRdWV1ZSkge1xuICAvKipcbiAgICogUG9saWNpZXMgdGhhdCBkZXNjcmliZSBtZXRob2Rz
IGluIGBSZWFjdENsYXNzSW50ZXJmYWNlYC5cbiAgICovXG5cbiAgdmFyIGluamVjdGVkTWl4aW5z
ID0gW107XG5cbiAgLyoqXG4gICAqIENvbXBvc2l0ZSBjb21wb25lbnRzIGFyZSBoaWdoZXItbGV2
ZWwgY29tcG9uZW50cyB0aGF0IGNvbXBvc2Ugb3RoZXIgY29tcG9zaXRlXG4gICAqIG9yIGhvc3Qg
Y29tcG9uZW50cy5cbiAgICpcbiAgICogVG8gY3JlYXRlIGEgbmV3IHR5cGUgb2YgYFJlYWN0Q2xh
c3NgLCBwYXNzIGEgc3BlY2lmaWNhdGlvbiBvZlxuICAgKiB5b3VyIG5ldyBjbGFzcyB0byBgUmVh
Y3QuY3JlYXRlQ2xhc3NgLiBUaGUgb25seSByZXF1aXJlbWVudCBvZiB5b3VyIGNsYXNzXG4gICAq
IHNwZWNpZmljYXRpb24gaXMgdGhhdCB5b3UgaW1wbGVtZW50IGEgYHJlbmRlcmAgbWV0aG9kLlxu
ICAgKlxuICAgKiAgIHZhciBNeUNvbXBvbmVudCA9IFJlYWN0LmNyZWF0ZUNsYXNzKHtcbiAgICog
ICAgIHJlbmRlcjogZnVuY3Rpb24oKSB7XG4gICAqICAgICAgIHJldHVybiA8ZGl2PkhlbGxvIFdv
cmxkPC9kaXY+O1xuICAgKiAgICAgfVxuICAgKiAgIH0pO1xuICAgKlxuICAgKiBUaGUgY2xhc3Mg
c3BlY2lmaWNhdGlvbiBzdXBwb3J0cyBhIHNwZWNpZmljIHByb3RvY29sIG9mIG1ldGhvZHMgdGhh
dCBoYXZlXG4gICAqIHNwZWNpYWwgbWVhbmluZyAoZS5nLiBgcmVuZGVyYCkuIFNlZSBgUmVhY3RD
bGFzc0ludGVyZmFjZWAgZm9yXG4gICAqIG1vcmUgdGhlIGNvbXByZWhlbnNpdmUgcHJvdG9jb2wu
IEFueSBvdGhlciBwcm9wZXJ0aWVzIGFuZCBtZXRob2RzIGluIHRoZVxuICAgKiBjbGFzcyBzcGVj
aWZpY2F0aW9uIHdpbGwgYmUgYXZhaWxhYmxlIG9uIHRoZSBwcm90b3R5cGUuXG4gICAqXG4gICAq
IEBpbnRlcmZhY2UgUmVhY3RDbGFzc0ludGVyZmFjZVxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4g
IHZhciBSZWFjdENsYXNzSW50ZXJmYWNlID0ge1xuICAgIC8qKlxuICAgICAqIEFuIGFycmF5IG9m
IE1peGluIG9iamVjdHMgdG8gaW5jbHVkZSB3aGVuIGRlZmluaW5nIHlvdXIgY29tcG9uZW50Llxu
ICAgICAqXG4gICAgICogQHR5cGUge2FycmF5fVxuICAgICAqIEBvcHRpb25hbFxuICAgICAqL1xu
ICAgIG1peGluczogJ0RFRklORV9NQU5ZJyxcblxuICAgIC8qKlxuICAgICAqIEFuIG9iamVjdCBj
b250YWluaW5nIHByb3BlcnRpZXMgYW5kIG1ldGhvZHMgdGhhdCBzaG91bGQgYmUgZGVmaW5lZCBv
blxuICAgICAqIHRoZSBjb21wb25lbnQncyBjb25zdHJ1Y3RvciBpbnN0ZWFkIG9mIGl0cyBwcm90
b3R5cGUgKHN0YXRpYyBtZXRob2RzKS5cbiAgICAgKlxuICAgICAqIEB0eXBlIHtvYmplY3R9XG4g
ICAgICogQG9wdGlvbmFsXG4gICAgICovXG4gICAgc3RhdGljczogJ0RFRklORV9NQU5ZJyxcblxu
ICAgIC8qKlxuICAgICAqIERlZmluaXRpb24gb2YgcHJvcCB0eXBlcyBmb3IgdGhpcyBjb21wb25l
bnQuXG4gICAgICpcbiAgICAgKiBAdHlwZSB7b2JqZWN0fVxuICAgICAqIEBvcHRpb25hbFxuICAg
ICAqL1xuICAgIHByb3BUeXBlczogJ0RFRklORV9NQU5ZJyxcblxuICAgIC8qKlxuICAgICAqIERl
ZmluaXRpb24gb2YgY29udGV4dCB0eXBlcyBmb3IgdGhpcyBjb21wb25lbnQuXG4gICAgICpcbiAg
ICAgKiBAdHlwZSB7b2JqZWN0fVxuICAgICAqIEBvcHRpb25hbFxuICAgICAqL1xuICAgIGNvbnRl
eHRUeXBlczogJ0RFRklORV9NQU5ZJyxcblxuICAgIC8qKlxuICAgICAqIERlZmluaXRpb24gb2Yg
Y29udGV4dCB0eXBlcyB0aGlzIGNvbXBvbmVudCBzZXRzIGZvciBpdHMgY2hpbGRyZW4uXG4gICAg
ICpcbiAgICAgKiBAdHlwZSB7b2JqZWN0fVxuICAgICAqIEBvcHRpb25hbFxuICAgICAqL1xuICAg
IGNoaWxkQ29udGV4dFR5cGVzOiAnREVGSU5FX01BTlknLFxuXG4gICAgLy8gPT09PSBEZWZpbml0
aW9uIG1ldGhvZHMgPT09PVxuXG4gICAgLyoqXG4gICAgICogSW52b2tlZCB3aGVuIHRoZSBjb21w
b25lbnQgaXMgbW91bnRlZC4gVmFsdWVzIGluIHRoZSBtYXBwaW5nIHdpbGwgYmUgc2V0IG9uXG4g
ICAgICogYHRoaXMucHJvcHNgIGlmIHRoYXQgcHJvcCBpcyBub3Qgc3BlY2lmaWVkIChpLmUuIHVz
aW5nIGFuIGBpbmAgY2hlY2spLlxuICAgICAqXG4gICAgICogVGhpcyBtZXRob2QgaXMgaW52b2tl
ZCBiZWZvcmUgYGdldEluaXRpYWxTdGF0ZWAgYW5kIHRoZXJlZm9yZSBjYW5ub3QgcmVseVxuICAg
ICAqIG9uIGB0aGlzLnN0YXRlYCBvciB1c2UgYHRoaXMuc2V0U3RhdGVgLlxuICAgICAqXG4gICAg
ICogQHJldHVybiB7b2JqZWN0fVxuICAgICAqIEBvcHRpb25hbFxuICAgICAqL1xuICAgIGdldERl
ZmF1bHRQcm9wczogJ0RFRklORV9NQU5ZX01FUkdFRCcsXG5cbiAgICAvKipcbiAgICAgKiBJbnZv
a2VkIG9uY2UgYmVmb3JlIHRoZSBjb21wb25lbnQgaXMgbW91bnRlZC4gVGhlIHJldHVybiB2YWx1
ZSB3aWxsIGJlIHVzZWRcbiAgICAgKiBhcyB0aGUgaW5pdGlhbCB2YWx1ZSBvZiBgdGhpcy5zdGF0
ZWAuXG4gICAgICpcbiAgICAgKiAgIGdldEluaXRpYWxTdGF0ZTogZnVuY3Rpb24oKSB7XG4gICAg
ICogICAgIHJldHVybiB7XG4gICAgICogICAgICAgaXNPbjogZmFsc2UsXG4gICAgICogICAgICAg
Zm9vQmF6OiBuZXcgQmF6Rm9vKClcbiAgICAgKiAgICAgfVxuICAgICAqICAgfVxuICAgICAqXG4g
ICAgICogQHJldHVybiB7b2JqZWN0fVxuICAgICAqIEBvcHRpb25hbFxuICAgICAqL1xuICAgIGdl
dEluaXRpYWxTdGF0ZTogJ0RFRklORV9NQU5ZX01FUkdFRCcsXG5cbiAgICAvKipcbiAgICAgKiBA
cmV0dXJuIHtvYmplY3R9XG4gICAgICogQG9wdGlvbmFsXG4gICAgICovXG4gICAgZ2V0Q2hpbGRD
b250ZXh0OiAnREVGSU5FX01BTllfTUVSR0VEJyxcblxuICAgIC8qKlxuICAgICAqIFVzZXMgcHJv
cHMgZnJvbSBgdGhpcy5wcm9wc2AgYW5kIHN0YXRlIGZyb20gYHRoaXMuc3RhdGVgIHRvIHJlbmRl
ciB0aGVcbiAgICAgKiBzdHJ1Y3R1cmUgb2YgdGhlIGNvbXBvbmVudC5cbiAgICAgKlxuICAgICAq
IE5vIGd1YXJhbnRlZXMgYXJlIG1hZGUgYWJvdXQgd2hlbiBvciBob3cgb2Z0ZW4gdGhpcyBtZXRo
b2QgaXMgaW52b2tlZCwgc29cbiAgICAgKiBpdCBtdXN0IG5vdCBoYXZlIHNpZGUgZWZmZWN0cy5c
biAgICAgKlxuICAgICAqICAgcmVuZGVyOiBmdW5jdGlvbigpIHtcbiAgICAgKiAgICAgdmFyIG5h
bWUgPSB0aGlzLnByb3BzLm5hbWU7XG4gICAgICogICAgIHJldHVybiA8ZGl2PkhlbGxvLCB7bmFt
ZX0hPC9kaXY+O1xuICAgICAqICAgfVxuICAgICAqXG4gICAgICogQHJldHVybiB7UmVhY3RDb21w
b25lbnR9XG4gICAgICogQHJlcXVpcmVkXG4gICAgICovXG4gICAgcmVuZGVyOiAnREVGSU5FX09O
Q0UnLFxuXG4gICAgLy8gPT09PSBEZWxlZ2F0ZSBtZXRob2RzID09PT1cblxuICAgIC8qKlxuICAg
ICAqIEludm9rZWQgd2hlbiB0aGUgY29tcG9uZW50IGlzIGluaXRpYWxseSBjcmVhdGVkIGFuZCBh
Ym91dCB0byBiZSBtb3VudGVkLlxuICAgICAqIFRoaXMgbWF5IGhhdmUgc2lkZSBlZmZlY3RzLCBi
dXQgYW55IGV4dGVybmFsIHN1YnNjcmlwdGlvbnMgb3IgZGF0YSBjcmVhdGVkXG4gICAgICogYnkg
dGhpcyBtZXRob2QgbXVzdCBiZSBjbGVhbmVkIHVwIGluIGBjb21wb25lbnRXaWxsVW5tb3VudGAu
XG4gICAgICpcbiAgICAgKiBAb3B0aW9uYWxcbiAgICAgKi9cbiAgICBjb21wb25lbnRXaWxsTW91
bnQ6ICdERUZJTkVfTUFOWScsXG5cbiAgICAvKipcbiAgICAgKiBJbnZva2VkIHdoZW4gdGhlIGNv
bXBvbmVudCBoYXMgYmVlbiBtb3VudGVkIGFuZCBoYXMgYSBET00gcmVwcmVzZW50YXRpb24uXG4g
ICAgICogSG93ZXZlciwgdGhlcmUgaXMgbm8gZ3VhcmFudGVlIHRoYXQgdGhlIERPTSBub2RlIGlz
IGluIHRoZSBkb2N1bWVudC5cbiAgICAgKlxuICAgICAqIFVzZSB0aGlzIGFzIGFuIG9wcG9ydHVu
aXR5IHRvIG9wZXJhdGUgb24gdGhlIERPTSB3aGVuIHRoZSBjb21wb25lbnQgaGFzXG4gICAgICog
YmVlbiBtb3VudGVkIChpbml0aWFsaXplZCBhbmQgcmVuZGVyZWQpIGZvciB0aGUgZmlyc3QgdGlt
ZS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7RE9NRWxlbWVudH0gcm9vdE5vZGUgRE9NIGVsZW1l
bnQgcmVwcmVzZW50aW5nIHRoZSBjb21wb25lbnQuXG4gICAgICogQG9wdGlvbmFsXG4gICAgICov
XG4gICAgY29tcG9uZW50RGlkTW91bnQ6ICdERUZJTkVfTUFOWScsXG5cbiAgICAvKipcbiAgICAg
KiBJbnZva2VkIGJlZm9yZSB0aGUgY29tcG9uZW50IHJlY2VpdmVzIG5ldyBwcm9wcy5cbiAgICAg
KlxuICAgICAqIFVzZSB0aGlzIGFzIGFuIG9wcG9ydHVuaXR5IHRvIHJlYWN0IHRvIGEgcHJvcCB0
cmFuc2l0aW9uIGJ5IHVwZGF0aW5nIHRoZVxuICAgICAqIHN0YXRlIHVzaW5nIGB0aGlzLnNldFN0
YXRlYC4gQ3VycmVudCBwcm9wcyBhcmUgYWNjZXNzZWQgdmlhIGB0aGlzLnByb3BzYC5cbiAgICAg
KlxuICAgICAqICAgY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wczogZnVuY3Rpb24obmV4dFByb3Bz
LCBuZXh0Q29udGV4dCkge1xuICAgICAqICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgKiAgICAg
ICBsaWtlc0luY3JlYXNpbmc6IG5leHRQcm9wcy5saWtlQ291bnQgPiB0aGlzLnByb3BzLmxpa2VD
b3VudFxuICAgICAqICAgICB9KTtcbiAgICAgKiAgIH1cbiAgICAgKlxuICAgICAqIE5PVEU6IFRo
ZXJlIGlzIG5vIGVxdWl2YWxlbnQgYGNvbXBvbmVudFdpbGxSZWNlaXZlU3RhdGVgLiBBbiBpbmNv
bWluZyBwcm9wXG4gICAgICogdHJhbnNpdGlvbiBtYXkgY2F1c2UgYSBzdGF0ZSBjaGFuZ2UsIGJ1
dCB0aGUgb3Bwb3NpdGUgaXMgbm90IHRydWUuIElmIHlvdVxuICAgICAqIG5lZWQgaXQsIHlvdSBh
cmUgcHJvYmFibHkgbG9va2luZyBmb3IgYGNvbXBvbmVudFdpbGxVcGRhdGVgLlxuICAgICAqXG4g
ICAgICogQHBhcmFtIHtvYmplY3R9IG5leHRQcm9wc1xuICAgICAqIEBvcHRpb25hbFxuICAgICAq
L1xuICAgIGNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHM6ICdERUZJTkVfTUFOWScsXG5cbiAgICAv
KipcbiAgICAgKiBJbnZva2VkIHdoaWxlIGRlY2lkaW5nIGlmIHRoZSBjb21wb25lbnQgc2hvdWxk
IGJlIHVwZGF0ZWQgYXMgYSByZXN1bHQgb2ZcbiAgICAgKiByZWNlaXZpbmcgbmV3IHByb3BzLCBz
dGF0ZSBhbmQvb3IgY29udGV4dC5cbiAgICAgKlxuICAgICAqIFVzZSB0aGlzIGFzIGFuIG9wcG9y
dHVuaXR5IHRvIGByZXR1cm4gZmFsc2VgIHdoZW4geW91J3JlIGNlcnRhaW4gdGhhdCB0aGVcbiAg
ICAgKiB0cmFuc2l0aW9uIHRvIHRoZSBuZXcgcHJvcHMvc3RhdGUvY29udGV4dCB3aWxsIG5vdCBy
ZXF1aXJlIGEgY29tcG9uZW50XG4gICAgICogdXBkYXRlLlxuICAgICAqXG4gICAgICogICBzaG91
bGRDb21wb25lbnRVcGRhdGU6IGZ1bmN0aW9uKG5leHRQcm9wcywgbmV4dFN0YXRlLCBuZXh0Q29u
dGV4dCkge1xuICAgICAqICAgICByZXR1cm4gIWVxdWFsKG5leHRQcm9wcywgdGhpcy5wcm9wcykg
fHxcbiAgICAgKiAgICAgICAhZXF1YWwobmV4dFN0YXRlLCB0aGlzLnN0YXRlKSB8fFxuICAgICAq
ICAgICAgICFlcXVhbChuZXh0Q29udGV4dCwgdGhpcy5jb250ZXh0KTtcbiAgICAgKiAgIH1cbiAg
ICAgKlxuICAgICAqIEBwYXJhbSB7b2JqZWN0fSBuZXh0UHJvcHNcbiAgICAgKiBAcGFyYW0gez9v
YmplY3R9IG5leHRTdGF0ZVxuICAgICAqIEBwYXJhbSB7P29iamVjdH0gbmV4dENvbnRleHRcbiAg
ICAgKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmIHRoZSBjb21wb25lbnQgc2hvdWxkIHVwZGF0
ZS5cbiAgICAgKiBAb3B0aW9uYWxcbiAgICAgKi9cbiAgICBzaG91bGRDb21wb25lbnRVcGRhdGU6
ICdERUZJTkVfT05DRScsXG5cbiAgICAvKipcbiAgICAgKiBJbnZva2VkIHdoZW4gdGhlIGNvbXBv
bmVudCBpcyBhYm91dCB0byB1cGRhdGUgZHVlIHRvIGEgdHJhbnNpdGlvbiBmcm9tXG4gICAgICog
YHRoaXMucHJvcHNgLCBgdGhpcy5zdGF0ZWAgYW5kIGB0aGlzLmNvbnRleHRgIHRvIGBuZXh0UHJv
cHNgLCBgbmV4dFN0YXRlYFxuICAgICAqIGFuZCBgbmV4dENvbnRleHRgLlxuICAgICAqXG4gICAg
ICogVXNlIHRoaXMgYXMgYW4gb3Bwb3J0dW5pdHkgdG8gcGVyZm9ybSBwcmVwYXJhdGlvbiBiZWZv
cmUgYW4gdXBkYXRlIG9jY3Vycy5cbiAgICAgKlxuICAgICAqIE5PVEU6IFlvdSAqKmNhbm5vdCoq
IHVzZSBgdGhpcy5zZXRTdGF0ZSgpYCBpbiB0aGlzIG1ldGhvZC5cbiAgICAgKlxuICAgICAqIEBw
YXJhbSB7b2JqZWN0fSBuZXh0UHJvcHNcbiAgICAgKiBAcGFyYW0gez9vYmplY3R9IG5leHRTdGF0
ZVxuICAgICAqIEBwYXJhbSB7P29iamVjdH0gbmV4dENvbnRleHRcbiAgICAgKiBAcGFyYW0ge1Jl
YWN0UmVjb25jaWxlVHJhbnNhY3Rpb259IHRyYW5zYWN0aW9uXG4gICAgICogQG9wdGlvbmFsXG4g
ICAgICovXG4gICAgY29tcG9uZW50V2lsbFVwZGF0ZTogJ0RFRklORV9NQU5ZJyxcblxuICAgIC8q
KlxuICAgICAqIEludm9rZWQgd2hlbiB0aGUgY29tcG9uZW50J3MgRE9NIHJlcHJlc2VudGF0aW9u
IGhhcyBiZWVuIHVwZGF0ZWQuXG4gICAgICpcbiAgICAgKiBVc2UgdGhpcyBhcyBhbiBvcHBvcnR1
bml0eSB0byBvcGVyYXRlIG9uIHRoZSBET00gd2hlbiB0aGUgY29tcG9uZW50IGhhc1xuICAgICAq
IGJlZW4gdXBkYXRlZC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7b2JqZWN0fSBwcmV2UHJvcHNc
biAgICAgKiBAcGFyYW0gez9vYmplY3R9IHByZXZTdGF0ZVxuICAgICAqIEBwYXJhbSB7P29iamVj
dH0gcHJldkNvbnRleHRcbiAgICAgKiBAcGFyYW0ge0RPTUVsZW1lbnR9IHJvb3ROb2RlIERPTSBl
bGVtZW50IHJlcHJlc2VudGluZyB0aGUgY29tcG9uZW50LlxuICAgICAqIEBvcHRpb25hbFxuICAg
ICAqL1xuICAgIGNvbXBvbmVudERpZFVwZGF0ZTogJ0RFRklORV9NQU5ZJyxcblxuICAgIC8qKlxu
ICAgICAqIEludm9rZWQgd2hlbiB0aGUgY29tcG9uZW50IGlzIGFib3V0IHRvIGJlIHJlbW92ZWQg
ZnJvbSBpdHMgcGFyZW50IGFuZCBoYXZlXG4gICAgICogaXRzIERPTSByZXByZXNlbnRhdGlvbiBk
ZXN0cm95ZWQuXG4gICAgICpcbiAgICAgKiBVc2UgdGhpcyBhcyBhbiBvcHBvcnR1bml0eSB0byBk
ZWFsbG9jYXRlIGFueSBleHRlcm5hbCByZXNvdXJjZXMuXG4gICAgICpcbiAgICAgKiBOT1RFOiBU
aGVyZSBpcyBubyBgY29tcG9uZW50RGlkVW5tb3VudGAgc2luY2UgeW91ciBjb21wb25lbnQgd2ls
bCBoYXZlIGJlZW5cbiAgICAgKiBkZXN0cm95ZWQgYnkgdGhhdCBwb2ludC5cbiAgICAgKlxuICAg
ICAqIEBvcHRpb25hbFxuICAgICAqL1xuICAgIGNvbXBvbmVudFdpbGxVbm1vdW50OiAnREVGSU5F
X01BTlknLFxuXG4gICAgLy8gPT09PSBBZHZhbmNlZCBtZXRob2RzID09PT1cblxuICAgIC8qKlxu
ICAgICAqIFVwZGF0ZXMgdGhlIGNvbXBvbmVudCdzIGN1cnJlbnRseSBtb3VudGVkIERPTSByZXBy
ZXNlbnRhdGlvbi5cbiAgICAgKlxuICAgICAqIEJ5IGRlZmF1bHQsIHRoaXMgaW1wbGVtZW50cyBS
ZWFjdCdzIHJlbmRlcmluZyBhbmQgcmVjb25jaWxpYXRpb24gYWxnb3JpdGhtLlxuICAgICAqIFNv
cGhpc3RpY2F0ZWQgY2xpZW50cyBtYXkgd2lzaCB0byBvdmVycmlkZSB0aGlzLlxuICAgICAqXG4g
ICAgICogQHBhcmFtIHtSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9ufSB0cmFuc2FjdGlvblxuICAg
ICAqIEBpbnRlcm5hbFxuICAgICAqIEBvdmVycmlkYWJsZVxuICAgICAqL1xuICAgIHVwZGF0ZUNv
bXBvbmVudDogJ09WRVJSSURFX0JBU0UnXG4gIH07XG5cbiAgLyoqXG4gICAqIE1hcHBpbmcgZnJv
bSBjbGFzcyBzcGVjaWZpY2F0aW9uIGtleXMgdG8gc3BlY2lhbCBwcm9jZXNzaW5nIGZ1bmN0aW9u
cy5cbiAgICpcbiAgICogQWx0aG91Z2ggdGhlc2UgYXJlIGRlY2xhcmVkIGxpa2UgaW5zdGFuY2Ug
cHJvcGVydGllcyBpbiB0aGUgc3BlY2lmaWNhdGlvblxuICAgKiB3aGVuIGRlZmluaW5nIGNsYXNz
ZXMgdXNpbmcgYFJlYWN0LmNyZWF0ZUNsYXNzYCwgdGhleSBhcmUgYWN0dWFsbHkgc3RhdGljXG4g
ICAqIGFuZCBhcmUgYWNjZXNzaWJsZSBvbiB0aGUgY29uc3RydWN0b3IgaW5zdGVhZCBvZiB0aGUg
cHJvdG90eXBlLiBEZXNwaXRlXG4gICAqIGJlaW5nIHN0YXRpYywgdGhleSBtdXN0IGJlIGRlZmlu
ZWQgb3V0c2lkZSBvZiB0aGUgXCJzdGF0aWNzXCIga2V5IHVuZGVyXG4gICAqIHdoaWNoIGFsbCBv
dGhlciBzdGF0aWMgbWV0aG9kcyBhcmUgZGVmaW5lZC5cbiAgICovXG4gIHZhciBSRVNFUlZFRF9T
UEVDX0tFWVMgPSB7XG4gICAgZGlzcGxheU5hbWU6IGZ1bmN0aW9uKENvbnN0cnVjdG9yLCBkaXNw
bGF5TmFtZSkge1xuICAgICAgQ29uc3RydWN0b3IuZGlzcGxheU5hbWUgPSBkaXNwbGF5TmFtZTtc
biAgICB9LFxuICAgIG1peGluczogZnVuY3Rpb24oQ29uc3RydWN0b3IsIG1peGlucykge1xuICAg
ICAgaWYgKG1peGlucykge1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG1peGlucy5sZW5n
dGg7IGkrKykge1xuICAgICAgICAgIG1peFNwZWNJbnRvQ29tcG9uZW50KENvbnN0cnVjdG9yLCBt
aXhpbnNbaV0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBjaGlsZENvbnRleHRU
eXBlczogZnVuY3Rpb24oQ29uc3RydWN0b3IsIGNoaWxkQ29udGV4dFR5cGVzKSB7XG4gICAgICBp
ZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICB2YWxp
ZGF0ZVR5cGVEZWYoQ29uc3RydWN0b3IsIGNoaWxkQ29udGV4dFR5cGVzLCAnY2hpbGRDb250ZXh0
Jyk7XG4gICAgICB9XG4gICAgICBDb25zdHJ1Y3Rvci5jaGlsZENvbnRleHRUeXBlcyA9IF9hc3Np
Z24oXG4gICAgICAgIHt9LFxuICAgICAgICBDb25zdHJ1Y3Rvci5jaGlsZENvbnRleHRUeXBlcyxc
biAgICAgICAgY2hpbGRDb250ZXh0VHlwZXNcbiAgICAgICk7XG4gICAgfSxcbiAgICBjb250ZXh0
VHlwZXM6IGZ1bmN0aW9uKENvbnN0cnVjdG9yLCBjb250ZXh0VHlwZXMpIHtcbiAgICAgIGlmIChw
cm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgIHZhbGlkYXRl
VHlwZURlZihDb25zdHJ1Y3RvciwgY29udGV4dFR5cGVzLCAnY29udGV4dCcpO1xuICAgICAgfVxu
ICAgICAgQ29uc3RydWN0b3IuY29udGV4dFR5cGVzID0gX2Fzc2lnbihcbiAgICAgICAge30sXG4g
ICAgICAgIENvbnN0cnVjdG9yLmNvbnRleHRUeXBlcyxcbiAgICAgICAgY29udGV4dFR5cGVzXG4g
ICAgICApO1xuICAgIH0sXG4gICAgLyoqXG4gICAgICogU3BlY2lhbCBjYXNlIGdldERlZmF1bHRQ
cm9wcyB3aGljaCBzaG91bGQgbW92ZSBpbnRvIHN0YXRpY3MgYnV0IHJlcXVpcmVzXG4gICAgICog
YXV0b21hdGljIG1lcmdpbmcuXG4gICAgICovXG4gICAgZ2V0RGVmYXVsdFByb3BzOiBmdW5jdGlv
bihDb25zdHJ1Y3RvciwgZ2V0RGVmYXVsdFByb3BzKSB7XG4gICAgICBpZiAoQ29uc3RydWN0b3Iu
Z2V0RGVmYXVsdFByb3BzKSB7XG4gICAgICAgIENvbnN0cnVjdG9yLmdldERlZmF1bHRQcm9wcyA9
IGNyZWF0ZU1lcmdlZFJlc3VsdEZ1bmN0aW9uKFxuICAgICAgICAgIENvbnN0cnVjdG9yLmdldERl
ZmF1bHRQcm9wcyxcbiAgICAgICAgICBnZXREZWZhdWx0UHJvcHNcbiAgICAgICAgKTtcbiAgICAg
IH0gZWxzZSB7XG4gICAgICAgIENvbnN0cnVjdG9yLmdldERlZmF1bHRQcm9wcyA9IGdldERlZmF1
bHRQcm9wcztcbiAgICAgIH1cbiAgICB9LFxuICAgIHByb3BUeXBlczogZnVuY3Rpb24oQ29uc3Ry
dWN0b3IsIHByb3BUeXBlcykge1xuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAn
cHJvZHVjdGlvbicpIHtcbiAgICAgICAgdmFsaWRhdGVUeXBlRGVmKENvbnN0cnVjdG9yLCBwcm9w
VHlwZXMsICdwcm9wJyk7XG4gICAgICB9XG4gICAgICBDb25zdHJ1Y3Rvci5wcm9wVHlwZXMgPSBf
YXNzaWduKHt9LCBDb25zdHJ1Y3Rvci5wcm9wVHlwZXMsIHByb3BUeXBlcyk7XG4gICAgfSxcbiAg
ICBzdGF0aWNzOiBmdW5jdGlvbihDb25zdHJ1Y3Rvciwgc3RhdGljcykge1xuICAgICAgbWl4U3Rh
dGljU3BlY0ludG9Db21wb25lbnQoQ29uc3RydWN0b3IsIHN0YXRpY3MpO1xuICAgIH0sXG4gICAg
YXV0b2JpbmQ6IGZ1bmN0aW9uKCkge31cbiAgfTtcblxuICBmdW5jdGlvbiB2YWxpZGF0ZVR5cGVE
ZWYoQ29uc3RydWN0b3IsIHR5cGVEZWYsIGxvY2F0aW9uKSB7XG4gICAgZm9yICh2YXIgcHJvcE5h
bWUgaW4gdHlwZURlZikge1xuICAgICAgaWYgKHR5cGVEZWYuaGFzT3duUHJvcGVydHkocHJvcE5h
bWUpKSB7XG4gICAgICAgIC8vIHVzZSBhIHdhcm5pbmcgaW5zdGVhZCBvZiBhbiBfaW52YXJpYW50
IHNvIGNvbXBvbmVudHNcbiAgICAgICAgLy8gZG9uJ3Qgc2hvdyB1cCBpbiBwcm9kIGJ1dCBvbmx5
IGluIF9fREVWX19cbiAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVj
dGlvbicpIHtcbiAgICAgICAgICB3YXJuaW5nKFxuICAgICAgICAgICAgdHlwZW9mIHR5cGVEZWZb
cHJvcE5hbWVdID09PSAnZnVuY3Rpb24nLFxuICAgICAgICAgICAgJyVzOiAlcyB0eXBlIGAlc2Ag
aXMgaW52YWxpZDsgaXQgbXVzdCBiZSBhIGZ1bmN0aW9uLCB1c3VhbGx5IGZyb20gJyArXG4gICAg
ICAgICAgICAgICdSZWFjdC5Qcm9wVHlwZXMuJyxcbiAgICAgICAgICAgIENvbnN0cnVjdG9yLmRp
c3BsYXlOYW1lIHx8ICdSZWFjdENsYXNzJyxcbiAgICAgICAgICAgIFJlYWN0UHJvcFR5cGVMb2Nh
dGlvbk5hbWVzW2xvY2F0aW9uXSxcbiAgICAgICAgICAgIHByb3BOYW1lXG4gICAgICAgICAgKTtc
biAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHZhbGlkYXRlTWV0
aG9kT3ZlcnJpZGUoaXNBbHJlYWR5RGVmaW5lZCwgbmFtZSkge1xuICAgIHZhciBzcGVjUG9saWN5
ID0gUmVhY3RDbGFzc0ludGVyZmFjZS5oYXNPd25Qcm9wZXJ0eShuYW1lKVxuICAgICAgPyBSZWFj
dENsYXNzSW50ZXJmYWNlW25hbWVdXG4gICAgICA6IG51bGw7XG5cbiAgICAvLyBEaXNhbGxvdyBv
dmVycmlkaW5nIG9mIGJhc2UgY2xhc3MgbWV0aG9kcyB1bmxlc3MgZXhwbGljaXRseSBhbGxvd2Vk
LlxuICAgIGlmIChSZWFjdENsYXNzTWl4aW4uaGFzT3duUHJvcGVydHkobmFtZSkpIHtcbiAgICAg
IF9pbnZhcmlhbnQoXG4gICAgICAgIHNwZWNQb2xpY3kgPT09ICdPVkVSUklERV9CQVNFJyxcbiAg
ICAgICAgJ1JlYWN0Q2xhc3NJbnRlcmZhY2U6IFlvdSBhcmUgYXR0ZW1wdGluZyB0byBvdmVycmlk
ZSAnICtcbiAgICAgICAgICAnYCVzYCBmcm9tIHlvdXIgY2xhc3Mgc3BlY2lmaWNhdGlvbi4gRW5z
dXJlIHRoYXQgeW91ciBtZXRob2QgbmFtZXMgJyArXG4gICAgICAgICAgJ2RvIG5vdCBvdmVybGFw
IHdpdGggUmVhY3QgbWV0aG9kcy4nLFxuICAgICAgICBuYW1lXG4gICAgICApO1xuICAgIH1cblxu
ICAgIC8vIERpc2FsbG93IGRlZmluaW5nIG1ldGhvZHMgbW9yZSB0aGFuIG9uY2UgdW5sZXNzIGV4
cGxpY2l0bHkgYWxsb3dlZC5cbiAgICBpZiAoaXNBbHJlYWR5RGVmaW5lZCkge1xuICAgICAgX2lu
dmFyaWFudChcbiAgICAgICAgc3BlY1BvbGljeSA9PT0gJ0RFRklORV9NQU5ZJyB8fCBzcGVjUG9s
aWN5ID09PSAnREVGSU5FX01BTllfTUVSR0VEJyxcbiAgICAgICAgJ1JlYWN0Q2xhc3NJbnRlcmZh
Y2U6IFlvdSBhcmUgYXR0ZW1wdGluZyB0byBkZWZpbmUgJyArXG4gICAgICAgICAgJ2Alc2Agb24g
eW91ciBjb21wb25lbnQgbW9yZSB0aGFuIG9uY2UuIFRoaXMgY29uZmxpY3QgbWF5IGJlIGR1ZSAn
ICtcbiAgICAgICAgICAndG8gYSBtaXhpbi4nLFxuICAgICAgICBuYW1lXG4gICAgICApO1xuICAg
IH1cbiAgfVxuXG4gIC8qKlxuICAgKiBNaXhpbiBoZWxwZXIgd2hpY2ggaGFuZGxlcyBwb2xpY3kg
dmFsaWRhdGlvbiBhbmQgcmVzZXJ2ZWRcbiAgICogc3BlY2lmaWNhdGlvbiBrZXlzIHdoZW4gYnVp
bGRpbmcgUmVhY3QgY2xhc3Nlcy5cbiAgICovXG4gIGZ1bmN0aW9uIG1peFNwZWNJbnRvQ29tcG9u
ZW50KENvbnN0cnVjdG9yLCBzcGVjKSB7XG4gICAgaWYgKCFzcGVjKSB7XG4gICAgICBpZiAocHJv
Y2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICB2YXIgdHlwZW9m
U3BlYyA9IHR5cGVvZiBzcGVjO1xuICAgICAgICB2YXIgaXNNaXhpblZhbGlkID0gdHlwZW9mU3Bl
YyA9PT0gJ29iamVjdCcgJiYgc3BlYyAhPT0gbnVsbDtcblxuICAgICAgICBpZiAocHJvY2Vzcy5l
bnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICAgIHdhcm5pbmcoXG4gICAg
ICAgICAgICBpc01peGluVmFsaWQsXG4gICAgICAgICAgICBcIiVzOiBZb3UncmUgYXR0ZW1wdGlu
ZyB0byBpbmNsdWRlIGEgbWl4aW4gdGhhdCBpcyBlaXRoZXIgbnVsbCBcIiArXG4gICAgICAgICAg
ICAgICdvciBub3QgYW4gb2JqZWN0LiBDaGVjayB0aGUgbWl4aW5zIGluY2x1ZGVkIGJ5IHRoZSBj
b21wb25lbnQsICcgK1xuICAgICAgICAgICAgICAnYXMgd2VsbCBhcyBhbnkgbWl4aW5zIHRoZXkg
aW5jbHVkZSB0aGVtc2VsdmVzLiAnICtcbiAgICAgICAgICAgICAgJ0V4cGVjdGVkIG9iamVjdCBi
dXQgZ290ICVzLicsXG4gICAgICAgICAgICBDb25zdHJ1Y3Rvci5kaXNwbGF5TmFtZSB8fCAnUmVh
Y3RDbGFzcycsXG4gICAgICAgICAgICBzcGVjID09PSBudWxsID8gbnVsbCA6IHR5cGVvZlNwZWNc
biAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybjtcbiAgICB9
XG5cbiAgICBfaW52YXJpYW50KFxuICAgICAgdHlwZW9mIHNwZWMgIT09ICdmdW5jdGlvbicsXG4g
ICAgICBcIlJlYWN0Q2xhc3M6IFlvdSdyZSBhdHRlbXB0aW5nIHRvIFwiICtcbiAgICAgICAgJ3Vz
ZSBhIGNvbXBvbmVudCBjbGFzcyBvciBmdW5jdGlvbiBhcyBhIG1peGluLiBJbnN0ZWFkLCBqdXN0
IHVzZSBhICcgK1xuICAgICAgICAncmVndWxhciBvYmplY3QuJ1xuICAgICk7XG4gICAgX2ludmFy
aWFudChcbiAgICAgICFpc1ZhbGlkRWxlbWVudChzcGVjKSxcbiAgICAgIFwiUmVhY3RDbGFzczog
WW91J3JlIGF0dGVtcHRpbmcgdG8gXCIgK1xuICAgICAgICAndXNlIGEgY29tcG9uZW50IGFzIGEg
bWl4aW4uIEluc3RlYWQsIGp1c3QgdXNlIGEgcmVndWxhciBvYmplY3QuJ1xuICAgICk7XG5cbiAg
ICB2YXIgcHJvdG8gPSBDb25zdHJ1Y3Rvci5wcm90b3R5cGU7XG4gICAgdmFyIGF1dG9CaW5kUGFp
cnMgPSBwcm90by5fX3JlYWN0QXV0b0JpbmRQYWlycztcblxuICAgIC8vIEJ5IGhhbmRsaW5nIG1p
eGlucyBiZWZvcmUgYW55IG90aGVyIHByb3BlcnRpZXMsIHdlIGVuc3VyZSB0aGUgc2FtZVxuICAg
IC8vIGNoYWluaW5nIG9yZGVyIGlzIGFwcGxpZWQgdG8gbWV0aG9kcyB3aXRoIERFRklORV9NQU5Z
IHBvbGljeSwgd2hldGhlclxuICAgIC8vIG1peGlucyBhcmUgbGlzdGVkIGJlZm9yZSBvciBhZnRl
ciB0aGVzZSBtZXRob2RzIGluIHRoZSBzcGVjLlxuICAgIGlmIChzcGVjLmhhc093blByb3BlcnR5
KE1JWElOU19LRVkpKSB7XG4gICAgICBSRVNFUlZFRF9TUEVDX0tFWVMubWl4aW5zKENvbnN0cnVj
dG9yLCBzcGVjLm1peGlucyk7XG4gICAgfVxuXG4gICAgZm9yICh2YXIgbmFtZSBpbiBzcGVjKSB7
XG4gICAgICBpZiAoIXNwZWMuaGFzT3duUHJvcGVydHkobmFtZSkpIHtcbiAgICAgICAgY29udGlu
dWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChuYW1lID09PSBNSVhJTlNfS0VZKSB7XG4gICAgICAg
IC8vIFdlIGhhdmUgYWxyZWFkeSBoYW5kbGVkIG1peGlucyBpbiBhIHNwZWNpYWwgY2FzZSBhYm92
ZS5cbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIHZhciBwcm9wZXJ0eSA9IHNw
ZWNbbmFtZV07XG4gICAgICB2YXIgaXNBbHJlYWR5RGVmaW5lZCA9IHByb3RvLmhhc093blByb3Bl
cnR5KG5hbWUpO1xuICAgICAgdmFsaWRhdGVNZXRob2RPdmVycmlkZShpc0FscmVhZHlEZWZpbmVk
LCBuYW1lKTtcblxuICAgICAgaWYgKFJFU0VSVkVEX1NQRUNfS0VZUy5oYXNPd25Qcm9wZXJ0eShu
YW1lKSkge1xuICAgICAgICBSRVNFUlZFRF9TUEVDX0tFWVNbbmFtZV0oQ29uc3RydWN0b3IsIHBy
b3BlcnR5KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIFNldHVwIG1ldGhvZHMgb24gcHJv
dG90eXBlOlxuICAgICAgICAvLyBUaGUgZm9sbG93aW5nIG1lbWJlciBtZXRob2RzIHNob3VsZCBu
b3QgYmUgYXV0b21hdGljYWxseSBib3VuZDpcbiAgICAgICAgLy8gMS4gRXhwZWN0ZWQgUmVhY3RD
bGFzcyBtZXRob2RzIChpbiB0aGUgXCJpbnRlcmZhY2VcIikuXG4gICAgICAgIC8vIDIuIE92ZXJy
aWRkZW4gbWV0aG9kcyAodGhhdCB3ZXJlIG1peGVkIGluKS5cbiAgICAgICAgdmFyIGlzUmVhY3RD
bGFzc01ldGhvZCA9IFJlYWN0Q2xhc3NJbnRlcmZhY2UuaGFzT3duUHJvcGVydHkobmFtZSk7XG4g
ICAgICAgIHZhciBpc0Z1bmN0aW9uID0gdHlwZW9mIHByb3BlcnR5ID09PSAnZnVuY3Rpb24nO1xu
ICAgICAgICB2YXIgc2hvdWxkQXV0b0JpbmQgPVxuICAgICAgICAgIGlzRnVuY3Rpb24gJiZcbiAg
ICAgICAgICAhaXNSZWFjdENsYXNzTWV0aG9kICYmXG4gICAgICAgICAgIWlzQWxyZWFkeURlZmlu
ZWQgJiZcbiAgICAgICAgICBzcGVjLmF1dG9iaW5kICE9PSBmYWxzZTtcblxuICAgICAgICBpZiAo
c2hvdWxkQXV0b0JpbmQpIHtcbiAgICAgICAgICBhdXRvQmluZFBhaXJzLnB1c2gobmFtZSwgcHJv
cGVydHkpO1xuICAgICAgICAgIHByb3RvW25hbWVdID0gcHJvcGVydHk7XG4gICAgICAgIH0gZWxz
ZSB7XG4gICAgICAgICAgaWYgKGlzQWxyZWFkeURlZmluZWQpIHtcbiAgICAgICAgICAgIHZhciBz
cGVjUG9saWN5ID0gUmVhY3RDbGFzc0ludGVyZmFjZVtuYW1lXTtcblxuICAgICAgICAgICAgLy8g
VGhlc2UgY2FzZXMgc2hvdWxkIGFscmVhZHkgYmUgY2F1Z2h0IGJ5IHZhbGlkYXRlTWV0aG9kT3Zl
cnJpZGUuXG4gICAgICAgICAgICBfaW52YXJpYW50KFxuICAgICAgICAgICAgICBpc1JlYWN0Q2xh
c3NNZXRob2QgJiZcbiAgICAgICAgICAgICAgICAoc3BlY1BvbGljeSA9PT0gJ0RFRklORV9NQU5Z
X01FUkdFRCcgfHxcbiAgICAgICAgICAgICAgICAgIHNwZWNQb2xpY3kgPT09ICdERUZJTkVfTUFO
WScpLFxuICAgICAgICAgICAgICAnUmVhY3RDbGFzczogVW5leHBlY3RlZCBzcGVjIHBvbGljeSAl
cyBmb3Iga2V5ICVzICcgK1xuICAgICAgICAgICAgICAgICd3aGVuIG1peGluZyBpbiBjb21wb25l
bnQgc3BlY3MuJyxcbiAgICAgICAgICAgICAgc3BlY1BvbGljeSxcbiAgICAgICAgICAgICAgbmFt
ZVxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgLy8gRm9yIG1ldGhvZHMgd2hpY2ggYXJl
IGRlZmluZWQgbW9yZSB0aGFuIG9uY2UsIGNhbGwgdGhlIGV4aXN0aW5nXG4gICAgICAgICAgICAv
LyBtZXRob2RzIGJlZm9yZSBjYWxsaW5nIHRoZSBuZXcgcHJvcGVydHksIG1lcmdpbmcgaWYgYXBw
cm9wcmlhdGUuXG4gICAgICAgICAgICBpZiAoc3BlY1BvbGljeSA9PT0gJ0RFRklORV9NQU5ZX01F
UkdFRCcpIHtcbiAgICAgICAgICAgICAgcHJvdG9bbmFtZV0gPSBjcmVhdGVNZXJnZWRSZXN1bHRG
dW5jdGlvbihwcm90b1tuYW1lXSwgcHJvcGVydHkpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChz
cGVjUG9saWN5ID09PSAnREVGSU5FX01BTlknKSB7XG4gICAgICAgICAgICAgIHByb3RvW25hbWVd
ID0gY3JlYXRlQ2hhaW5lZEZ1bmN0aW9uKHByb3RvW25hbWVdLCBwcm9wZXJ0eSk7XG4gICAgICAg
ICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHByb3RvW25hbWVdID0gcHJv
cGVydHk7XG4gICAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0
aW9uJykge1xuICAgICAgICAgICAgICAvLyBBZGQgdmVyYm9zZSBkaXNwbGF5TmFtZSB0byB0aGUg
ZnVuY3Rpb24sIHdoaWNoIGhlbHBzIHdoZW4gbG9va2luZ1xuICAgICAgICAgICAgICAvLyBhdCBw
cm9maWxpbmcgdG9vbHMuXG4gICAgICAgICAgICAgIGlmICh0eXBlb2YgcHJvcGVydHkgPT09ICdm
dW5jdGlvbicgJiYgc3BlYy5kaXNwbGF5TmFtZSkge1xuICAgICAgICAgICAgICAgIHByb3RvW25h
bWVdLmRpc3BsYXlOYW1lID0gc3BlYy5kaXNwbGF5TmFtZSArICdfJyArIG5hbWU7XG4gICAgICAg
ICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1c
biAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBtaXhTdGF0aWNTcGVjSW50b0NvbXBvbmVudChDb25z
dHJ1Y3Rvciwgc3RhdGljcykge1xuICAgIGlmICghc3RhdGljcykge1xuICAgICAgcmV0dXJuO1xu
ICAgIH1cbiAgICBmb3IgKHZhciBuYW1lIGluIHN0YXRpY3MpIHtcbiAgICAgIHZhciBwcm9wZXJ0
eSA9IHN0YXRpY3NbbmFtZV07XG4gICAgICBpZiAoIXN0YXRpY3MuaGFzT3duUHJvcGVydHkobmFt
ZSkpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIHZhciBpc1Jlc2VydmVk
ID0gbmFtZSBpbiBSRVNFUlZFRF9TUEVDX0tFWVM7XG4gICAgICBfaW52YXJpYW50KFxuICAgICAg
ICAhaXNSZXNlcnZlZCxcbiAgICAgICAgJ1JlYWN0Q2xhc3M6IFlvdSBhcmUgYXR0ZW1wdGluZyB0
byBkZWZpbmUgYSByZXNlcnZlZCAnICtcbiAgICAgICAgICAncHJvcGVydHksIGAlc2AsIHRoYXQg
c2hvdWxkblxcJ3QgYmUgb24gdGhlIFwic3RhdGljc1wiIGtleS4gRGVmaW5lIGl0ICcgK1xuICAg
ICAgICAgICdhcyBhbiBpbnN0YW5jZSBwcm9wZXJ0eSBpbnN0ZWFkOyBpdCB3aWxsIHN0aWxsIGJl
IGFjY2Vzc2libGUgb24gdGhlICcgK1xuICAgICAgICAgICdjb25zdHJ1Y3Rvci4nLFxuICAgICAg
ICBuYW1lXG4gICAgICApO1xuXG4gICAgICB2YXIgaXNJbmhlcml0ZWQgPSBuYW1lIGluIENvbnN0
cnVjdG9yO1xuICAgICAgX2ludmFyaWFudChcbiAgICAgICAgIWlzSW5oZXJpdGVkLFxuICAgICAg
ICAnUmVhY3RDbGFzczogWW91IGFyZSBhdHRlbXB0aW5nIHRvIGRlZmluZSAnICtcbiAgICAgICAg
ICAnYCVzYCBvbiB5b3VyIGNvbXBvbmVudCBtb3JlIHRoYW4gb25jZS4gVGhpcyBjb25mbGljdCBt
YXkgYmUgJyArXG4gICAgICAgICAgJ2R1ZSB0byBhIG1peGluLicsXG4gICAgICAgIG5hbWVcbiAg
ICAgICk7XG4gICAgICBDb25zdHJ1Y3RvcltuYW1lXSA9IHByb3BlcnR5O1xuICAgIH1cbiAgfVxu
XG4gIC8qKlxuICAgKiBNZXJnZSB0d28gb2JqZWN0cywgYnV0IHRocm93IGlmIGJvdGggY29udGFp
biB0aGUgc2FtZSBrZXkuXG4gICAqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBvbmUgVGhlIGZpcnN0
IG9iamVjdCwgd2hpY2ggaXMgbXV0YXRlZC5cbiAgICogQHBhcmFtIHtvYmplY3R9IHR3byBUaGUg
c2Vjb25kIG9iamVjdFxuICAgKiBAcmV0dXJuIHtvYmplY3R9IG9uZSBhZnRlciBpdCBoYXMgYmVl
biBtdXRhdGVkIHRvIGNvbnRhaW4gZXZlcnl0aGluZyBpbiB0d28uXG4gICAqL1xuICBmdW5jdGlv
biBtZXJnZUludG9XaXRoTm9EdXBsaWNhdGVLZXlzKG9uZSwgdHdvKSB7XG4gICAgX2ludmFyaWFu
dChcbiAgICAgIG9uZSAmJiB0d28gJiYgdHlwZW9mIG9uZSA9PT0gJ29iamVjdCcgJiYgdHlwZW9m
IHR3byA9PT0gJ29iamVjdCcsXG4gICAgICAnbWVyZ2VJbnRvV2l0aE5vRHVwbGljYXRlS2V5cygp
OiBDYW5ub3QgbWVyZ2Ugbm9uLW9iamVjdHMuJ1xuICAgICk7XG5cbiAgICBmb3IgKHZhciBrZXkg
aW4gdHdvKSB7XG4gICAgICBpZiAodHdvLmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgICAg
X2ludmFyaWFudChcbiAgICAgICAgICBvbmVba2V5XSA9PT0gdW5kZWZpbmVkLFxuICAgICAgICAg
ICdtZXJnZUludG9XaXRoTm9EdXBsaWNhdGVLZXlzKCk6ICcgK1xuICAgICAgICAgICAgJ1RyaWVk
IHRvIG1lcmdlIHR3byBvYmplY3RzIHdpdGggdGhlIHNhbWUga2V5OiBgJXNgLiBUaGlzIGNvbmZs
aWN0ICcgK1xuICAgICAgICAgICAgJ21heSBiZSBkdWUgdG8gYSBtaXhpbjsgaW4gcGFydGljdWxh
ciwgdGhpcyBtYXkgYmUgY2F1c2VkIGJ5IHR3byAnICtcbiAgICAgICAgICAgICdnZXRJbml0aWFs
U3RhdGUoKSBvciBnZXREZWZhdWx0UHJvcHMoKSBtZXRob2RzIHJldHVybmluZyBvYmplY3RzICcg
K1xuICAgICAgICAgICAgJ3dpdGggY2xhc2hpbmcga2V5cy4nLFxuICAgICAgICAgIGtleVxuICAg
ICAgICApO1xuICAgICAgICBvbmVba2V5XSA9IHR3b1trZXldO1xuICAgICAgfVxuICAgIH1cbiAg
ICByZXR1cm4gb25lO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0
IGludm9rZXMgdHdvIGZ1bmN0aW9ucyBhbmQgbWVyZ2VzIHRoZWlyIHJldHVybiB2YWx1ZXMuXG4g
ICAqXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IG9uZSBGdW5jdGlvbiB0byBpbnZva2UgZmlyc3Qu
XG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IHR3byBGdW5jdGlvbiB0byBpbnZva2Ugc2Vjb25kLlxu
ICAgKiBAcmV0dXJuIHtmdW5jdGlvbn0gRnVuY3Rpb24gdGhhdCBpbnZva2VzIHRoZSB0d28gYXJn
dW1lbnQgZnVuY3Rpb25zLlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZnVuY3Rpb24gY3JlYXRl
TWVyZ2VkUmVzdWx0RnVuY3Rpb24ob25lLCB0d28pIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gbWVy
Z2VkUmVzdWx0KCkge1xuICAgICAgdmFyIGEgPSBvbmUuYXBwbHkodGhpcywgYXJndW1lbnRzKTtc
biAgICAgIHZhciBiID0gdHdvLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICBpZiAoYSA9
PSBudWxsKSB7XG4gICAgICAgIHJldHVybiBiO1xuICAgICAgfSBlbHNlIGlmIChiID09IG51bGwp
IHtcbiAgICAgICAgcmV0dXJuIGE7XG4gICAgICB9XG4gICAgICB2YXIgYyA9IHt9O1xuICAgICAg
bWVyZ2VJbnRvV2l0aE5vRHVwbGljYXRlS2V5cyhjLCBhKTtcbiAgICAgIG1lcmdlSW50b1dpdGhO
b0R1cGxpY2F0ZUtleXMoYywgYik7XG4gICAgICByZXR1cm4gYztcbiAgICB9O1xuICB9XG5cbiAg
LyoqXG4gICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IGludm9rZXMgdHdvIGZ1bmN0aW9ucyBh
bmQgaWdub3JlcyB0aGVpciByZXR1cm4gdmFsZXMuXG4gICAqXG4gICAqIEBwYXJhbSB7ZnVuY3Rp
b259IG9uZSBGdW5jdGlvbiB0byBpbnZva2UgZmlyc3QuXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259
IHR3byBGdW5jdGlvbiB0byBpbnZva2Ugc2Vjb25kLlxuICAgKiBAcmV0dXJuIHtmdW5jdGlvbn0g
RnVuY3Rpb24gdGhhdCBpbnZva2VzIHRoZSB0d28gYXJndW1lbnQgZnVuY3Rpb25zLlxuICAgKiBA
cHJpdmF0ZVxuICAgKi9cbiAgZnVuY3Rpb24gY3JlYXRlQ2hhaW5lZEZ1bmN0aW9uKG9uZSwgdHdv
KSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIGNoYWluZWRGdW5jdGlvbigpIHtcbiAgICAgIG9uZS5h
cHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgdHdvLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7
XG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBCaW5kcyBhIG1ldGhvZCB0byB0aGUgY29tcG9u
ZW50LlxuICAgKlxuICAgKiBAcGFyYW0ge29iamVjdH0gY29tcG9uZW50IENvbXBvbmVudCB3aG9z
ZSBtZXRob2QgaXMgZ29pbmcgdG8gYmUgYm91bmQuXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IG1l
dGhvZCBNZXRob2QgdG8gYmUgYm91bmQuXG4gICAqIEByZXR1cm4ge2Z1bmN0aW9ufSBUaGUgYm91
bmQgbWV0aG9kLlxuICAgKi9cbiAgZnVuY3Rpb24gYmluZEF1dG9CaW5kTWV0aG9kKGNvbXBvbmVu
dCwgbWV0aG9kKSB7XG4gICAgdmFyIGJvdW5kTWV0aG9kID0gbWV0aG9kLmJpbmQoY29tcG9uZW50
KTtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAg
ICAgYm91bmRNZXRob2QuX19yZWFjdEJvdW5kQ29udGV4dCA9IGNvbXBvbmVudDtcbiAgICAgIGJv
dW5kTWV0aG9kLl9fcmVhY3RCb3VuZE1ldGhvZCA9IG1ldGhvZDtcbiAgICAgIGJvdW5kTWV0aG9k
Ll9fcmVhY3RCb3VuZEFyZ3VtZW50cyA9IG51bGw7XG4gICAgICB2YXIgY29tcG9uZW50TmFtZSA9
IGNvbXBvbmVudC5jb25zdHJ1Y3Rvci5kaXNwbGF5TmFtZTtcbiAgICAgIHZhciBfYmluZCA9IGJv
dW5kTWV0aG9kLmJpbmQ7XG4gICAgICBib3VuZE1ldGhvZC5iaW5kID0gZnVuY3Rpb24obmV3VGhp
cykge1xuICAgICAgICBmb3IgKFxuICAgICAgICAgIHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0
aCxcbiAgICAgICAgICAgIGFyZ3MgPSBBcnJheShfbGVuID4gMSA/IF9sZW4gLSAxIDogMCksXG4g
ICAgICAgICAgICBfa2V5ID0gMTtcbiAgICAgICAgICBfa2V5IDwgX2xlbjtcbiAgICAgICAgICBf
a2V5KytcbiAgICAgICAgKSB7XG4gICAgICAgICAgYXJnc1tfa2V5IC0gMV0gPSBhcmd1bWVudHNb
X2tleV07XG4gICAgICAgIH1cblxuICAgICAgICAvLyBVc2VyIGlzIHRyeWluZyB0byBiaW5kKCkg
YW4gYXV0b2JvdW5kIG1ldGhvZDsgd2UgZWZmZWN0aXZlbHkgd2lsbFxuICAgICAgICAvLyBpZ25v
cmUgdGhlIHZhbHVlIG9mIFwidGhpc1wiIHRoYXQgdGhlIHVzZXIgaXMgdHJ5aW5nIHRvIHVzZSwg
c29cbiAgICAgICAgLy8gbGV0J3Mgd2Fybi5cbiAgICAgICAgaWYgKG5ld1RoaXMgIT09IGNvbXBv
bmVudCAmJiBuZXdUaGlzICE9PSBudWxsKSB7XG4gICAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5P
REVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICAgIHdhcm5pbmcoXG4gICAgICAg
ICAgICAgIGZhbHNlLFxuICAgICAgICAgICAgICAnYmluZCgpOiBSZWFjdCBjb21wb25lbnQgbWV0
aG9kcyBtYXkgb25seSBiZSBib3VuZCB0byB0aGUgJyArXG4gICAgICAgICAgICAgICAgJ2NvbXBv
bmVudCBpbnN0YW5jZS4gU2VlICVzJyxcbiAgICAgICAgICAgICAgY29tcG9uZW50TmFtZVxuICAg
ICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoIWFyZ3MubGVuZ3Ro
KSB7XG4gICAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicp
IHtcbiAgICAgICAgICAgIHdhcm5pbmcoXG4gICAgICAgICAgICAgIGZhbHNlLFxuICAgICAgICAg
ICAgICAnYmluZCgpOiBZb3UgYXJlIGJpbmRpbmcgYSBjb21wb25lbnQgbWV0aG9kIHRvIHRoZSBj
b21wb25lbnQuICcgK1xuICAgICAgICAgICAgICAgICdSZWFjdCBkb2VzIHRoaXMgZm9yIHlvdSBh
dXRvbWF0aWNhbGx5IGluIGEgaGlnaC1wZXJmb3JtYW5jZSAnICtcbiAgICAgICAgICAgICAgICAn
d2F5LCBzbyB5b3UgY2FuIHNhZmVseSByZW1vdmUgdGhpcyBjYWxsLiBTZWUgJXMnLFxuICAgICAg
ICAgICAgICBjb21wb25lbnROYW1lXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAg
ICAgICByZXR1cm4gYm91bmRNZXRob2Q7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHJlYm91bmRN
ZXRob2QgPSBfYmluZC5hcHBseShib3VuZE1ldGhvZCwgYXJndW1lbnRzKTtcbiAgICAgICAgcmVi
b3VuZE1ldGhvZC5fX3JlYWN0Qm91bmRDb250ZXh0ID0gY29tcG9uZW50O1xuICAgICAgICByZWJv
dW5kTWV0aG9kLl9fcmVhY3RCb3VuZE1ldGhvZCA9IG1ldGhvZDtcbiAgICAgICAgcmVib3VuZE1l
dGhvZC5fX3JlYWN0Qm91bmRBcmd1bWVudHMgPSBhcmdzO1xuICAgICAgICByZXR1cm4gcmVib3Vu
ZE1ldGhvZDtcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiBib3VuZE1ldGhvZDtcbiAgfVxu
XG4gIC8qKlxuICAgKiBCaW5kcyBhbGwgYXV0by1ib3VuZCBtZXRob2RzIGluIGEgY29tcG9uZW50
LlxuICAgKlxuICAgKiBAcGFyYW0ge29iamVjdH0gY29tcG9uZW50IENvbXBvbmVudCB3aG9zZSBt
ZXRob2QgaXMgZ29pbmcgdG8gYmUgYm91bmQuXG4gICAqL1xuICBmdW5jdGlvbiBiaW5kQXV0b0Jp
bmRNZXRob2RzKGNvbXBvbmVudCkge1xuICAgIHZhciBwYWlycyA9IGNvbXBvbmVudC5fX3JlYWN0
QXV0b0JpbmRQYWlycztcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBhaXJzLmxlbmd0aDsgaSAr
PSAyKSB7XG4gICAgICB2YXIgYXV0b0JpbmRLZXkgPSBwYWlyc1tpXTtcbiAgICAgIHZhciBtZXRo
b2QgPSBwYWlyc1tpICsgMV07XG4gICAgICBjb21wb25lbnRbYXV0b0JpbmRLZXldID0gYmluZEF1
dG9CaW5kTWV0aG9kKGNvbXBvbmVudCwgbWV0aG9kKTtcbiAgICB9XG4gIH1cblxuICB2YXIgSXNN
b3VudGVkUHJlTWl4aW4gPSB7XG4gICAgY29tcG9uZW50RGlkTW91bnQ6IGZ1bmN0aW9uKCkge1xu
ICAgICAgdGhpcy5fX2lzTW91bnRlZCA9IHRydWU7XG4gICAgfVxuICB9O1xuXG4gIHZhciBJc01v
dW50ZWRQb3N0TWl4aW4gPSB7XG4gICAgY29tcG9uZW50V2lsbFVubW91bnQ6IGZ1bmN0aW9uKCkg
e1xuICAgICAgdGhpcy5fX2lzTW91bnRlZCA9IGZhbHNlO1xuICAgIH1cbiAgfTtcblxuICAvKipc
biAgICogQWRkIG1vcmUgdG8gdGhlIFJlYWN0Q2xhc3MgYmFzZSBjbGFzcy4gVGhlc2UgYXJlIGFs
bCBsZWdhY3kgZmVhdHVyZXMgYW5kXG4gICAqIHRoZXJlZm9yZSBub3QgYWxyZWFkeSBwYXJ0IG9m
IHRoZSBtb2Rlcm4gUmVhY3RDb21wb25lbnQuXG4gICAqL1xuICB2YXIgUmVhY3RDbGFzc01peGlu
ID0ge1xuICAgIC8qKlxuICAgICAqIFRPRE86IFRoaXMgd2lsbCBiZSBkZXByZWNhdGVkIGJlY2F1
c2Ugc3RhdGUgc2hvdWxkIGFsd2F5cyBrZWVwIGEgY29uc2lzdGVudFxuICAgICAqIHR5cGUgc2ln
bmF0dXJlIGFuZCB0aGUgb25seSB1c2UgY2FzZSBmb3IgdGhpcywgaXMgdG8gYXZvaWQgdGhhdC5c
biAgICAgKi9cbiAgICByZXBsYWNlU3RhdGU6IGZ1bmN0aW9uKG5ld1N0YXRlLCBjYWxsYmFjaykg
e1xuICAgICAgdGhpcy51cGRhdGVyLmVucXVldWVSZXBsYWNlU3RhdGUodGhpcywgbmV3U3RhdGUs
IGNhbGxiYWNrKTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIHdoZXRoZXIgb3Ig
bm90IHRoaXMgY29tcG9zaXRlIGNvbXBvbmVudCBpcyBtb3VudGVkLlxuICAgICAqIEByZXR1cm4g
e2Jvb2xlYW59IFRydWUgaWYgbW91bnRlZCwgZmFsc2Ugb3RoZXJ3aXNlLlxuICAgICAqIEBwcm90
ZWN0ZWRcbiAgICAgKiBAZmluYWxcbiAgICAgKi9cbiAgICBpc01vdW50ZWQ6IGZ1bmN0aW9uKCkg
e1xuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAg
ICAgICAgd2FybmluZyhcbiAgICAgICAgICB0aGlzLl9fZGlkV2FybklzTW91bnRlZCxcbiAgICAg
ICAgICAnJXM6IGlzTW91bnRlZCBpcyBkZXByZWNhdGVkLiBJbnN0ZWFkLCBtYWtlIHN1cmUgdG8g
Y2xlYW4gdXAgJyArXG4gICAgICAgICAgICAnc3Vic2NyaXB0aW9ucyBhbmQgcGVuZGluZyByZXF1
ZXN0cyBpbiBjb21wb25lbnRXaWxsVW5tb3VudCB0byAnICtcbiAgICAgICAgICAgICdwcmV2ZW50
IG1lbW9yeSBsZWFrcy4nLFxuICAgICAgICAgICh0aGlzLmNvbnN0cnVjdG9yICYmIHRoaXMuY29u
c3RydWN0b3IuZGlzcGxheU5hbWUpIHx8XG4gICAgICAgICAgICB0aGlzLm5hbWUgfHxcbiAgICAg
ICAgICAgICdDb21wb25lbnQnXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuX19kaWRXYXJuSXNN
b3VudGVkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiAhIXRoaXMuX19pc01vdW50ZWQ7
XG4gICAgfVxuICB9O1xuXG4gIHZhciBSZWFjdENsYXNzQ29tcG9uZW50ID0gZnVuY3Rpb24oKSB7
fTtcbiAgX2Fzc2lnbihcbiAgICBSZWFjdENsYXNzQ29tcG9uZW50LnByb3RvdHlwZSxcbiAgICBS
ZWFjdENvbXBvbmVudC5wcm90b3R5cGUsXG4gICAgUmVhY3RDbGFzc01peGluXG4gICk7XG5cbiAg
LyoqXG4gICAqIENyZWF0ZXMgYSBjb21wb3NpdGUgY29tcG9uZW50IGNsYXNzIGdpdmVuIGEgY2xh
c3Mgc3BlY2lmaWNhdGlvbi5cbiAgICogU2VlIGh0dHBzOi8vZmFjZWJvb2suZ2l0aHViLmlvL3Jl
YWN0L2RvY3MvdG9wLWxldmVsLWFwaS5odG1sI3JlYWN0LmNyZWF0ZWNsYXNzXG4gICAqXG4gICAq
IEBwYXJhbSB7b2JqZWN0fSBzcGVjIENsYXNzIHNwZWNpZmljYXRpb24gKHdoaWNoIG11c3QgZGVm
aW5lIGByZW5kZXJgKS5cbiAgICogQHJldHVybiB7ZnVuY3Rpb259IENvbXBvbmVudCBjb25zdHJ1
Y3RvciBmdW5jdGlvbi5cbiAgICogQHB1YmxpY1xuICAgKi9cbiAgZnVuY3Rpb24gY3JlYXRlQ2xh
c3Moc3BlYykge1xuICAgIC8vIFRvIGtlZXAgb3VyIHdhcm5pbmdzIG1vcmUgdW5kZXJzdGFuZGFi
bGUsIHdlJ2xsIHVzZSBhIGxpdHRsZSBoYWNrIGhlcmUgdG9cbiAgICAvLyBlbnN1cmUgdGhhdCBD
b25zdHJ1Y3Rvci5uYW1lICE9PSAnQ29uc3RydWN0b3InLiBUaGlzIG1ha2VzIHN1cmUgd2UgZG9u
J3RcbiAgICAvLyB1bm5lY2Vzc2FyaWx5IGlkZW50aWZ5IGEgY2xhc3Mgd2l0aG91dCBkaXNwbGF5
TmFtZSBhcyAnQ29uc3RydWN0b3InLlxuICAgIHZhciBDb25zdHJ1Y3RvciA9IGlkZW50aXR5KGZ1
bmN0aW9uKHByb3BzLCBjb250ZXh0LCB1cGRhdGVyKSB7XG4gICAgICAvLyBUaGlzIGNvbnN0cnVj
dG9yIGdldHMgb3ZlcnJpZGRlbiBieSBtb2Nrcy4gVGhlIGFyZ3VtZW50IGlzIHVzZWRcbiAgICAg
IC8vIGJ5IG1vY2tzIHRvIGFzc2VydCBvbiB3aGF0IGdldHMgbW91bnRlZC5cblxuICAgICAgaWYg
KHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgd2Fybmlu
ZyhcbiAgICAgICAgICB0aGlzIGluc3RhbmNlb2YgQ29uc3RydWN0b3IsXG4gICAgICAgICAgJ1Nv
bWV0aGluZyBpcyBjYWxsaW5nIGEgUmVhY3QgY29tcG9uZW50IGRpcmVjdGx5LiBVc2UgYSBmYWN0
b3J5IG9yICcgK1xuICAgICAgICAgICAgJ0pTWCBpbnN0ZWFkLiBTZWU6IGh0dHBzOi8vZmIubWUv
cmVhY3QtbGVnYWN5ZmFjdG9yeSdcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgLy8gV2ly
ZSB1cCBhdXRvLWJpbmRpbmdcbiAgICAgIGlmICh0aGlzLl9fcmVhY3RBdXRvQmluZFBhaXJzLmxl
bmd0aCkge1xuICAgICAgICBiaW5kQXV0b0JpbmRNZXRob2RzKHRoaXMpO1xuICAgICAgfVxuXG4g
ICAgICB0aGlzLnByb3BzID0gcHJvcHM7XG4gICAgICB0aGlzLmNvbnRleHQgPSBjb250ZXh0O1xu
ICAgICAgdGhpcy5yZWZzID0gZW1wdHlPYmplY3Q7XG4gICAgICB0aGlzLnVwZGF0ZXIgPSB1cGRh
dGVyIHx8IFJlYWN0Tm9vcFVwZGF0ZVF1ZXVlO1xuXG4gICAgICB0aGlzLnN0YXRlID0gbnVsbDtc
blxuICAgICAgLy8gUmVhY3RDbGFzc2VzIGRvZXNuJ3QgaGF2ZSBjb25zdHJ1Y3RvcnMuIEluc3Rl
YWQsIHRoZXkgdXNlIHRoZVxuICAgICAgLy8gZ2V0SW5pdGlhbFN0YXRlIGFuZCBjb21wb25lbnRX
aWxsTW91bnQgbWV0aG9kcyBmb3IgaW5pdGlhbGl6YXRpb24uXG5cbiAgICAgIHZhciBpbml0aWFs
U3RhdGUgPSB0aGlzLmdldEluaXRpYWxTdGF0ZSA/IHRoaXMuZ2V0SW5pdGlhbFN0YXRlKCkgOiBu
dWxsO1xuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtc
biAgICAgICAgLy8gV2UgYWxsb3cgYXV0by1tb2NrcyB0byBwcm9jZWVkIGFzIGlmIHRoZXkncmUg
cmV0dXJuaW5nIG51bGwuXG4gICAgICAgIGlmIChcbiAgICAgICAgICBpbml0aWFsU3RhdGUgPT09
IHVuZGVmaW5lZCAmJlxuICAgICAgICAgIHRoaXMuZ2V0SW5pdGlhbFN0YXRlLl9pc01vY2tGdW5j
dGlvblxuICAgICAgICApIHtcbiAgICAgICAgICAvLyBUaGlzIGlzIHByb2JhYmx5IGJhZCBwcmFj
dGljZS4gQ29uc2lkZXIgd2FybmluZyBoZXJlIGFuZFxuICAgICAgICAgIC8vIGRlcHJlY2F0aW5n
IHRoaXMgY29udmVuaWVuY2UuXG4gICAgICAgICAgaW5pdGlhbFN0YXRlID0gbnVsbDtcbiAgICAg
ICAgfVxuICAgICAgfVxuICAgICAgX2ludmFyaWFudChcbiAgICAgICAgdHlwZW9mIGluaXRpYWxT
dGF0ZSA9PT0gJ29iamVjdCcgJiYgIUFycmF5LmlzQXJyYXkoaW5pdGlhbFN0YXRlKSxcbiAgICAg
ICAgJyVzLmdldEluaXRpYWxTdGF0ZSgpOiBtdXN0IHJldHVybiBhbiBvYmplY3Qgb3IgbnVsbCcs
XG4gICAgICAgIENvbnN0cnVjdG9yLmRpc3BsYXlOYW1lIHx8ICdSZWFjdENvbXBvc2l0ZUNvbXBv
bmVudCdcbiAgICAgICk7XG5cbiAgICAgIHRoaXMuc3RhdGUgPSBpbml0aWFsU3RhdGU7XG4gICAg
fSk7XG4gICAgQ29uc3RydWN0b3IucHJvdG90eXBlID0gbmV3IFJlYWN0Q2xhc3NDb21wb25lbnQo
KTtcbiAgICBDb25zdHJ1Y3Rvci5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBDb25zdHJ1Y3Rvcjtc
biAgICBDb25zdHJ1Y3Rvci5wcm90b3R5cGUuX19yZWFjdEF1dG9CaW5kUGFpcnMgPSBbXTtcblxu
ICAgIGluamVjdGVkTWl4aW5zLmZvckVhY2gobWl4U3BlY0ludG9Db21wb25lbnQuYmluZChudWxs
LCBDb25zdHJ1Y3RvcikpO1xuXG4gICAgbWl4U3BlY0ludG9Db21wb25lbnQoQ29uc3RydWN0b3Is
IElzTW91bnRlZFByZU1peGluKTtcbiAgICBtaXhTcGVjSW50b0NvbXBvbmVudChDb25zdHJ1Y3Rv
ciwgc3BlYyk7XG4gICAgbWl4U3BlY0ludG9Db21wb25lbnQoQ29uc3RydWN0b3IsIElzTW91bnRl
ZFBvc3RNaXhpbik7XG5cbiAgICAvLyBJbml0aWFsaXplIHRoZSBkZWZhdWx0UHJvcHMgcHJvcGVy
dHkgYWZ0ZXIgYWxsIG1peGlucyBoYXZlIGJlZW4gbWVyZ2VkLlxuICAgIGlmIChDb25zdHJ1Y3Rv
ci5nZXREZWZhdWx0UHJvcHMpIHtcbiAgICAgIENvbnN0cnVjdG9yLmRlZmF1bHRQcm9wcyA9IENv
bnN0cnVjdG9yLmdldERlZmF1bHRQcm9wcygpO1xuICAgIH1cblxuICAgIGlmIChwcm9jZXNzLmVu
di5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAvLyBUaGlzIGlzIGEgdGFnIHRv
IGluZGljYXRlIHRoYXQgdGhlIHVzZSBvZiB0aGVzZSBtZXRob2QgbmFtZXMgaXMgb2ssXG4gICAg
ICAvLyBzaW5jZSBpdCdzIHVzZWQgd2l0aCBjcmVhdGVDbGFzcy4gSWYgaXQncyBub3QsIHRoZW4g
aXQncyBsaWtlbHkgYVxuICAgICAgLy8gbWlzdGFrZSBzbyB3ZSdsbCB3YXJuIHlvdSB0byB1c2Ug
dGhlIHN0YXRpYyBwcm9wZXJ0eSwgcHJvcGVydHlcbiAgICAgIC8vIGluaXRpYWxpemVyIG9yIGNv
bnN0cnVjdG9yIHJlc3BlY3RpdmVseS5cbiAgICAgIGlmIChDb25zdHJ1Y3Rvci5nZXREZWZhdWx0
UHJvcHMpIHtcbiAgICAgICAgQ29uc3RydWN0b3IuZ2V0RGVmYXVsdFByb3BzLmlzUmVhY3RDbGFz
c0FwcHJvdmVkID0ge307XG4gICAgICB9XG4gICAgICBpZiAoQ29uc3RydWN0b3IucHJvdG90eXBl
LmdldEluaXRpYWxTdGF0ZSkge1xuICAgICAgICBDb25zdHJ1Y3Rvci5wcm90b3R5cGUuZ2V0SW5p
dGlhbFN0YXRlLmlzUmVhY3RDbGFzc0FwcHJvdmVkID0ge307XG4gICAgICB9XG4gICAgfVxuXG4g
ICAgX2ludmFyaWFudChcbiAgICAgIENvbnN0cnVjdG9yLnByb3RvdHlwZS5yZW5kZXIsXG4gICAg
ICAnY3JlYXRlQ2xhc3MoLi4uKTogQ2xhc3Mgc3BlY2lmaWNhdGlvbiBtdXN0IGltcGxlbWVudCBh
IGByZW5kZXJgIG1ldGhvZC4nXG4gICAgKTtcblxuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VO
ViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICB3YXJuaW5nKFxuICAgICAgICAhQ29uc3RydWN0
b3IucHJvdG90eXBlLmNvbXBvbmVudFNob3VsZFVwZGF0ZSxcbiAgICAgICAgJyVzIGhhcyBhIG1l
dGhvZCBjYWxsZWQgJyArXG4gICAgICAgICAgJ2NvbXBvbmVudFNob3VsZFVwZGF0ZSgpLiBEaWQg
eW91IG1lYW4gc2hvdWxkQ29tcG9uZW50VXBkYXRlKCk/ICcgK1xuICAgICAgICAgICdUaGUgbmFt
ZSBpcyBwaHJhc2VkIGFzIGEgcXVlc3Rpb24gYmVjYXVzZSB0aGUgZnVuY3Rpb24gaXMgJyArXG4g
ICAgICAgICAgJ2V4cGVjdGVkIHRvIHJldHVybiBhIHZhbHVlLicsXG4gICAgICAgIHNwZWMuZGlz
cGxheU5hbWUgfHwgJ0EgY29tcG9uZW50J1xuICAgICAgKTtcbiAgICAgIHdhcm5pbmcoXG4gICAg
ICAgICFDb25zdHJ1Y3Rvci5wcm90b3R5cGUuY29tcG9uZW50V2lsbFJlY2lldmVQcm9wcyxcbiAg
ICAgICAgJyVzIGhhcyBhIG1ldGhvZCBjYWxsZWQgJyArXG4gICAgICAgICAgJ2NvbXBvbmVudFdp
bGxSZWNpZXZlUHJvcHMoKS4gRGlkIHlvdSBtZWFuIGNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMo
KT8nLFxuICAgICAgICBzcGVjLmRpc3BsYXlOYW1lIHx8ICdBIGNvbXBvbmVudCdcbiAgICAgICk7
XG4gICAgfVxuXG4gICAgLy8gUmVkdWNlIHRpbWUgc3BlbnQgZG9pbmcgbG9va3VwcyBieSBzZXR0
aW5nIHRoZXNlIG9uIHRoZSBwcm90b3R5cGUuXG4gICAgZm9yICh2YXIgbWV0aG9kTmFtZSBpbiBS
ZWFjdENsYXNzSW50ZXJmYWNlKSB7XG4gICAgICBpZiAoIUNvbnN0cnVjdG9yLnByb3RvdHlwZVtt
ZXRob2ROYW1lXSkge1xuICAgICAgICBDb25zdHJ1Y3Rvci5wcm90b3R5cGVbbWV0aG9kTmFtZV0g
PSBudWxsO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBDb25zdHJ1Y3RvcjtcbiAgfVxu
XG4gIHJldHVybiBjcmVhdGVDbGFzcztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5O1xu
XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vY3Jl
YXRlLXJlYWN0LWNsYXNzL2ZhY3RvcnkuanNcbiAqKiBtb2R1bGUgaWQgPSA5N1xuICoqIG1vZHVs
ZSBjaHVua3MgPSAwXG4gKiovIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbi8qKlxuICogQ29weXJpZ2h0
IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVk
LlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHls
ZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVj
dG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRl
bnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRp
cmVjdG9yeS5cbiAqXG4gKiBAdHlwZWNoZWNrc1xuICovXG5cbnZhciBfaHlwaGVuUGF0dGVybiA9
IC8tKC4pL2c7XG5cbi8qKlxuICogQ2FtZWxjYXNlcyBhIGh5cGhlbmF0ZWQgc3RyaW5nLCBmb3Ig
ZXhhbXBsZTpcbiAqXG4gKiAgID4gY2FtZWxpemUoJ2JhY2tncm91bmQtY29sb3InKVxuICogICA8
IFwiYmFja2dyb3VuZENvbG9yXCJcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nXG4gKiBA
cmV0dXJuIHtzdHJpbmd9XG4gKi9cbmZ1bmN0aW9uIGNhbWVsaXplKHN0cmluZykge1xuICByZXR1
cm4gc3RyaW5nLnJlcGxhY2UoX2h5cGhlblBhdHRlcm4sIGZ1bmN0aW9uIChfLCBjaGFyYWN0ZXIp
IHtcbiAgICByZXR1cm4gY2hhcmFjdGVyLnRvVXBwZXJDYXNlKCk7XG4gIH0pO1xufVxuXG5tb2R1
bGUuZXhwb3J0cyA9IGNhbWVsaXplO1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBB
Q0sgRk9PVEVSXG4gKiogLi9+L2ZianMvbGliL2NhbWVsaXplLmpzXG4gKiogbW9kdWxlIGlkID0g
OThcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAy
MDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpc
biAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNl
bnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBv
ZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmln
aHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9y
eS5cbiAqXG4gKiBAdHlwZWNoZWNrc1xuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIGNhbWVs
aXplID0gcmVxdWlyZSgnLi9jYW1lbGl6ZScpO1xuXG52YXIgbXNQYXR0ZXJuID0gL14tbXMtLztc
blxuLyoqXG4gKiBDYW1lbGNhc2VzIGEgaHlwaGVuYXRlZCBDU1MgcHJvcGVydHkgbmFtZSwgZm9y
IGV4YW1wbGU6XG4gKlxuICogICA+IGNhbWVsaXplU3R5bGVOYW1lKCdiYWNrZ3JvdW5kLWNvbG9y
JylcbiAqICAgPCBcImJhY2tncm91bmRDb2xvclwiXG4gKiAgID4gY2FtZWxpemVTdHlsZU5hbWUo
Jy1tb3otdHJhbnNpdGlvbicpXG4gKiAgIDwgXCJNb3pUcmFuc2l0aW9uXCJcbiAqICAgPiBjYW1l
bGl6ZVN0eWxlTmFtZSgnLW1zLXRyYW5zaXRpb24nKVxuICogICA8IFwibXNUcmFuc2l0aW9uXCJc
biAqXG4gKiBBcyBBbmRpIFNtaXRoIHN1Z2dlc3RzXG4gKiAoaHR0cDovL3d3dy5hbmRpc21pdGgu
Y29tL2Jsb2cvMjAxMi8wMi9tb2Rlcm5penItcHJlZml4ZWQvKSwgYW4gYC1tc2AgcHJlZml4XG4g
KiBpcyBjb252ZXJ0ZWQgdG8gbG93ZXJjYXNlIGBtc2AuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9
IHN0cmluZ1xuICogQHJldHVybiB7c3RyaW5nfVxuICovXG5mdW5jdGlvbiBjYW1lbGl6ZVN0eWxl
TmFtZShzdHJpbmcpIHtcbiAgcmV0dXJuIGNhbWVsaXplKHN0cmluZy5yZXBsYWNlKG1zUGF0dGVy
biwgJ21zLScpKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjYW1lbGl6ZVN0eWxlTmFtZTtcblxu
XG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9mYmpzL2xp
Yi9jYW1lbGl6ZVN0eWxlTmFtZS5qc1xuICoqIG1vZHVsZSBpZCA9IDk5XG4gKiogbW9kdWxlIGNo
dW5rcyA9IDBcbiAqKi8iLCIndXNlIHN0cmljdCc7XG5cbi8qKlxuICogQ29weXJpZ2h0IChjKSAy
MDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpc
biAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNl
bnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBv
ZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmln
aHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9y
eS5cbiAqXG4gKiBcbiAqL1xuXG52YXIgaXNUZXh0Tm9kZSA9IHJlcXVpcmUoJy4vaXNUZXh0Tm9k
ZScpO1xuXG4vKmVzbGludC1kaXNhYmxlIG5vLWJpdHdpc2UgKi9cblxuLyoqXG4gKiBDaGVja3Mg
aWYgYSBnaXZlbiBET00gbm9kZSBjb250YWlucyBvciBpcyBhbm90aGVyIERPTSBub2RlLlxuICov
XG5mdW5jdGlvbiBjb250YWluc05vZGUob3V0ZXJOb2RlLCBpbm5lck5vZGUpIHtcbiAgaWYgKCFv
dXRlck5vZGUgfHwgIWlubmVyTm9kZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfSBlbHNlIGlm
IChvdXRlck5vZGUgPT09IGlubmVyTm9kZSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9IGVsc2Ug
aWYgKGlzVGV4dE5vZGUob3V0ZXJOb2RlKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfSBlbHNl
IGlmIChpc1RleHROb2RlKGlubmVyTm9kZSkpIHtcbiAgICByZXR1cm4gY29udGFpbnNOb2RlKG91
dGVyTm9kZSwgaW5uZXJOb2RlLnBhcmVudE5vZGUpO1xuICB9IGVsc2UgaWYgKCdjb250YWlucycg
aW4gb3V0ZXJOb2RlKSB7XG4gICAgcmV0dXJuIG91dGVyTm9kZS5jb250YWlucyhpbm5lck5vZGUp
O1xuICB9IGVsc2UgaWYgKG91dGVyTm9kZS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbikge1xuICAg
IHJldHVybiAhIShvdXRlck5vZGUuY29tcGFyZURvY3VtZW50UG9zaXRpb24oaW5uZXJOb2RlKSAm
IDE2KTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxubW9kdWxlLmV4
cG9ydHMgPSBjb250YWluc05vZGU7XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFD
SyBGT09URVJcbiAqKiAuL34vZmJqcy9saWIvY29udGFpbnNOb2RlLmpzXG4gKiogbW9kdWxlIGlk
ID0gMTAwXG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIndXNlIHN0cmljdCc7XG5cbi8q
KlxuICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwg
cmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5k
ZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGlu
IHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdy
YW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxl
IGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAdHlwZWNoZWNrc1xuICovXG5cbnZhciBp
bnZhcmlhbnQgPSByZXF1aXJlKCcuL2ludmFyaWFudCcpO1xuXG4vKipcbiAqIENvbnZlcnQgYXJy
YXktbGlrZSBvYmplY3RzIHRvIGFycmF5cy5cbiAqXG4gKiBUaGlzIEFQSSBhc3N1bWVzIHRoZSBj
YWxsZXIga25vd3MgdGhlIGNvbnRlbnRzIG9mIHRoZSBkYXRhIHR5cGUuIEZvciBsZXNzXG4gKiB3
ZWxsIGRlZmluZWQgaW5wdXRzIHVzZSBjcmVhdGVBcnJheUZyb21NaXhlZC5cbiAqXG4gKiBAcGFy
YW0ge29iamVjdHxmdW5jdGlvbnxmaWxlbGlzdH0gb2JqXG4gKiBAcmV0dXJuIHthcnJheX1cbiAq
L1xuZnVuY3Rpb24gdG9BcnJheShvYmopIHtcbiAgdmFyIGxlbmd0aCA9IG9iai5sZW5ndGg7XG5c
biAgLy8gU29tZSBicm93c2VycyBidWlsdGluIG9iamVjdHMgY2FuIHJlcG9ydCB0eXBlb2YgJ2Z1
bmN0aW9uJyAoZS5nLiBOb2RlTGlzdFxuICAvLyBpbiBvbGQgdmVyc2lvbnMgb2YgU2FmYXJpKS5c
biAgISghQXJyYXkuaXNBcnJheShvYmopICYmICh0eXBlb2Ygb2JqID09PSAnb2JqZWN0JyB8fCB0
eXBlb2Ygb2JqID09PSAnZnVuY3Rpb24nKSkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3By
b2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAndG9BcnJheTogQXJyYXktbGlrZSBvYmplY3Qg
ZXhwZWN0ZWQnKSA6IGludmFyaWFudChmYWxzZSkgOiB2b2lkIDA7XG5cbiAgISh0eXBlb2YgbGVu
Z3RoID09PSAnbnVtYmVyJykgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24n
ID8gaW52YXJpYW50KGZhbHNlLCAndG9BcnJheTogT2JqZWN0IG5lZWRzIGEgbGVuZ3RoIHByb3Bl
cnR5JykgOiBpbnZhcmlhbnQoZmFsc2UpIDogdm9pZCAwO1xuXG4gICEobGVuZ3RoID09PSAwIHx8
IGxlbmd0aCAtIDEgaW4gb2JqKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlv
bicgPyBpbnZhcmlhbnQoZmFsc2UsICd0b0FycmF5OiBPYmplY3Qgc2hvdWxkIGhhdmUga2V5cyBm
b3IgaW5kaWNlcycpIDogaW52YXJpYW50KGZhbHNlKSA6IHZvaWQgMDtcblxuICAhKHR5cGVvZiBv
YmouY2FsbGVlICE9PSAnZnVuY3Rpb24nKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJv
ZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICd0b0FycmF5OiBPYmplY3QgY2FuXFwndCBiZSBg
YXJndW1lbnRzYC4gVXNlIHJlc3QgcGFyYW1zICcgKyAnKGZ1bmN0aW9uKC4uLmFyZ3MpIHt9KSBv
ciBBcnJheS5mcm9tKCkgaW5zdGVhZC4nKSA6IGludmFyaWFudChmYWxzZSkgOiB2b2lkIDA7XG5c
biAgLy8gT2xkIElFIGRvZXNuJ3QgZ2l2ZSBjb2xsZWN0aW9ucyBhY2Nlc3MgdG8gaGFzT3duUHJv
cGVydHkuIEFzc3VtZSBpbnB1dHNcbiAgLy8gd2l0aG91dCBtZXRob2Qgd2lsbCB0aHJvdyBkdXJp
bmcgdGhlIHNsaWNlIGNhbGwgYW5kIHNraXAgc3RyYWlnaHQgdG8gdGhlXG4gIC8vIGZhbGxiYWNr
LlxuICBpZiAob2JqLmhhc093blByb3BlcnR5KSB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBB
cnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChvYmopO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAg
IC8vIElFIDwgOSBkb2VzIG5vdCBzdXBwb3J0IEFycmF5I3NsaWNlIG9uIGNvbGxlY3Rpb25zIG9i
amVjdHNcbiAgICB9XG4gIH1cblxuICAvLyBGYWxsIGJhY2sgdG8gY29weWluZyBrZXkgYnkga2V5
LiBUaGlzIGFzc3VtZXMgYWxsIGtleXMgaGF2ZSBhIHZhbHVlLFxuICAvLyBzbyB3aWxsIG5vdCBw
cmVzZXJ2ZSBzcGFyc2VseSBwb3B1bGF0ZWQgaW5wdXRzLlxuICB2YXIgcmV0ID0gQXJyYXkobGVu
Z3RoKTtcbiAgZm9yICh2YXIgaWkgPSAwOyBpaSA8IGxlbmd0aDsgaWkrKykge1xuICAgIHJldFtp
aV0gPSBvYmpbaWldO1xuICB9XG4gIHJldHVybiByZXQ7XG59XG5cbi8qKlxuICogUGVyZm9ybSBh
IGhldXJpc3RpYyB0ZXN0IHRvIGRldGVybWluZSBpZiBhbiBvYmplY3QgaXMgXCJhcnJheS1saWtl
XCIuXG4gKlxuICogICBBIG1vbmsgYXNrZWQgSm9zaHUsIGEgWmVuIG1hc3RlciwgXCJIYXMgYSBk
b2cgQnVkZGhhIG5hdHVyZT9cIlxuICogICBKb3NodSByZXBsaWVkOiBcIk11LlwiXG4gKlxuICog
VGhpcyBmdW5jdGlvbiBkZXRlcm1pbmVzIGlmIGl0cyBhcmd1bWVudCBoYXMgXCJhcnJheSBuYXR1
cmVcIjogaXQgcmV0dXJuc1xuICogdHJ1ZSBpZiB0aGUgYXJndW1lbnQgaXMgYW4gYWN0dWFsIGFy
cmF5LCBhbiBgYXJndW1lbnRzJyBvYmplY3QsIG9yIGFuXG4gKiBIVE1MQ29sbGVjdGlvbiAoZS5n
LiBub2RlLmNoaWxkTm9kZXMgb3Igbm9kZS5nZXRFbGVtZW50c0J5VGFnTmFtZSgpKS5cbiAqXG4g
KiBJdCB3aWxsIHJldHVybiBmYWxzZSBmb3Igb3RoZXIgYXJyYXktbGlrZSBvYmplY3RzIGxpa2Ug
RmlsZWxpc3QuXG4gKlxuICogQHBhcmFtIHsqfSBvYmpcbiAqIEByZXR1cm4ge2Jvb2xlYW59XG4g
Ki9cbmZ1bmN0aW9uIGhhc0FycmF5TmF0dXJlKG9iaikge1xuICByZXR1cm4gKFxuICAgIC8vIG5v
dCBudWxsL2ZhbHNlXG4gICAgISFvYmogJiYgKFxuICAgIC8vIGFycmF5cyBhcmUgb2JqZWN0cywg
Tm9kZUxpc3RzIGFyZSBmdW5jdGlvbnMgaW4gU2FmYXJpXG4gICAgdHlwZW9mIG9iaiA9PSAnb2Jq
ZWN0JyB8fCB0eXBlb2Ygb2JqID09ICdmdW5jdGlvbicpICYmXG4gICAgLy8gcXVhY2tzIGxpa2Ug
YW4gYXJyYXlcbiAgICAnbGVuZ3RoJyBpbiBvYmogJiZcbiAgICAvLyBub3Qgd2luZG93XG4gICAg
ISgnc2V0SW50ZXJ2YWwnIGluIG9iaikgJiZcbiAgICAvLyBubyBET00gbm9kZSBzaG91bGQgYmUg
Y29uc2lkZXJlZCBhbiBhcnJheS1saWtlXG4gICAgLy8gYSAnc2VsZWN0JyBlbGVtZW50IGhhcyAn
bGVuZ3RoJyBhbmQgJ2l0ZW0nIHByb3BlcnRpZXMgb24gSUU4XG4gICAgdHlwZW9mIG9iai5ub2Rl
VHlwZSAhPSAnbnVtYmVyJyAmJiAoXG4gICAgLy8gYSByZWFsIGFycmF5XG4gICAgQXJyYXkuaXNB
cnJheShvYmopIHx8XG4gICAgLy8gYXJndW1lbnRzXG4gICAgJ2NhbGxlZScgaW4gb2JqIHx8XG4g
ICAgLy8gSFRNTENvbGxlY3Rpb24vTm9kZUxpc3RcbiAgICAnaXRlbScgaW4gb2JqKVxuICApO1xu
fVxuXG4vKipcbiAqIEVuc3VyZSB0aGF0IHRoZSBhcmd1bWVudCBpcyBhbiBhcnJheSBieSB3cmFw
cGluZyBpdCBpbiBhbiBhcnJheSBpZiBpdCBpcyBub3QuXG4gKiBDcmVhdGVzIGEgY29weSBvZiB0
aGUgYXJndW1lbnQgaWYgaXQgaXMgYWxyZWFkeSBhbiBhcnJheS5cbiAqXG4gKiBUaGlzIGlzIG1v
c3RseSB1c2VmdWwgaWRpb21hdGljYWxseTpcbiAqXG4gKiAgIHZhciBjcmVhdGVBcnJheUZyb21N
aXhlZCA9IHJlcXVpcmUoJ2NyZWF0ZUFycmF5RnJvbU1peGVkJyk7XG4gKlxuICogICBmdW5jdGlv
biB0YWtlc09uZU9yTW9yZVRoaW5ncyh0aGluZ3MpIHtcbiAqICAgICB0aGluZ3MgPSBjcmVhdGVB
cnJheUZyb21NaXhlZCh0aGluZ3MpO1xuICogICAgIC4uLlxuICogICB9XG4gKlxuICogVGhpcyBh
bGxvd3MgeW91IHRvIHRyZWF0IGB0aGluZ3MnIGFzIGFuIGFycmF5LCBidXQgYWNjZXB0IHNjYWxh
cnMgaW4gdGhlIEFQSS5cbiAqXG4gKiBJZiB5b3UgbmVlZCB0byBjb252ZXJ0IGFuIGFycmF5LWxp
a2Ugb2JqZWN0LCBsaWtlIGBhcmd1bWVudHNgLCBpbnRvIGFuIGFycmF5XG4gKiB1c2UgdG9BcnJh
eSBpbnN0ZWFkLlxuICpcbiAqIEBwYXJhbSB7Kn0gb2JqXG4gKiBAcmV0dXJuIHthcnJheX1cbiAq
L1xuZnVuY3Rpb24gY3JlYXRlQXJyYXlGcm9tTWl4ZWQob2JqKSB7XG4gIGlmICghaGFzQXJyYXlO
YXR1cmUob2JqKSkge1xuICAgIHJldHVybiBbb2JqXTtcbiAgfSBlbHNlIGlmIChBcnJheS5pc0Fy
cmF5KG9iaikpIHtcbiAgICByZXR1cm4gb2JqLnNsaWNlKCk7XG4gIH0gZWxzZSB7XG4gICAgcmV0
dXJuIHRvQXJyYXkob2JqKTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNyZWF0ZUFycmF5
RnJvbU1peGVkO1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4g
KiogLi9+L2ZianMvbGliL2NyZWF0ZUFycmF5RnJvbU1peGVkLmpzXG4gKiogbW9kdWxlIGlkID0g
MTAxXG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIndXNlIHN0cmljdCc7XG5cbi8qKlxu
ICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmln
aHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIg
dGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRo
ZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50
XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGlu
IHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAdHlwZWNoZWNrc1xuICovXG5cbi8qZXNsaW50
LWRpc2FibGUgZmItd3d3L3Vuc2FmZS1odG1sKi9cblxudmFyIEV4ZWN1dGlvbkVudmlyb25tZW50
ID0gcmVxdWlyZSgnLi9FeGVjdXRpb25FbnZpcm9ubWVudCcpO1xuXG52YXIgY3JlYXRlQXJyYXlG
cm9tTWl4ZWQgPSByZXF1aXJlKCcuL2NyZWF0ZUFycmF5RnJvbU1peGVkJyk7XG52YXIgZ2V0TWFy
a3VwV3JhcCA9IHJlcXVpcmUoJy4vZ2V0TWFya3VwV3JhcCcpO1xudmFyIGludmFyaWFudCA9IHJl
cXVpcmUoJy4vaW52YXJpYW50Jyk7XG5cbi8qKlxuICogRHVtbXkgY29udGFpbmVyIHVzZWQgdG8g
cmVuZGVyIGFsbCBtYXJrdXAuXG4gKi9cbnZhciBkdW1teU5vZGUgPSBFeGVjdXRpb25FbnZpcm9u
bWVudC5jYW5Vc2VET00gPyBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKSA6IG51bGw7XG5c
bi8qKlxuICogUGF0dGVybiB1c2VkIGJ5IGBnZXROb2RlTmFtZWAuXG4gKi9cbnZhciBub2RlTmFt
ZVBhdHRlcm4gPSAvXlxccyo8KFxcdyspLztcblxuLyoqXG4gKiBFeHRyYWN0cyB0aGUgYG5vZGVO
YW1lYCBvZiB0aGUgZmlyc3QgZWxlbWVudCBpbiBhIHN0cmluZyBvZiBtYXJrdXAuXG4gKlxuICog
QHBhcmFtIHtzdHJpbmd9IG1hcmt1cCBTdHJpbmcgb2YgbWFya3VwLlxuICogQHJldHVybiB7P3N0
cmluZ30gTm9kZSBuYW1lIG9mIHRoZSBzdXBwbGllZCBtYXJrdXAuXG4gKi9cbmZ1bmN0aW9uIGdl
dE5vZGVOYW1lKG1hcmt1cCkge1xuICB2YXIgbm9kZU5hbWVNYXRjaCA9IG1hcmt1cC5tYXRjaChu
b2RlTmFtZVBhdHRlcm4pO1xuICByZXR1cm4gbm9kZU5hbWVNYXRjaCAmJiBub2RlTmFtZU1hdGNo
WzFdLnRvTG93ZXJDYXNlKCk7XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBhcnJheSBjb250YWlu
aW5nIHRoZSBub2RlcyByZW5kZXJlZCBmcm9tIHRoZSBzdXBwbGllZCBtYXJrdXAuIFRoZVxuICog
b3B0aW9uYWxseSBzdXBwbGllZCBgaGFuZGxlU2NyaXB0YCBmdW5jdGlvbiB3aWxsIGJlIGludm9r
ZWQgb25jZSBmb3IgZWFjaFxuICogPHNjcmlwdD4gZWxlbWVudCB0aGF0IGlzIHJlbmRlcmVkLiBJ
ZiBubyBgaGFuZGxlU2NyaXB0YCBmdW5jdGlvbiBpcyBzdXBwbGllZCxcbiAqIGFuIGV4Y2VwdGlv
biBpcyB0aHJvd24gaWYgYW55IDxzY3JpcHQ+IGVsZW1lbnRzIGFyZSByZW5kZXJlZC5cbiAqXG4g
KiBAcGFyYW0ge3N0cmluZ30gbWFya3VwIEEgc3RyaW5nIG9mIHZhbGlkIEhUTUwgbWFya3VwLlxu
ICogQHBhcmFtIHs/ZnVuY3Rpb259IGhhbmRsZVNjcmlwdCBJbnZva2VkIG9uY2UgZm9yIGVhY2gg
cmVuZGVyZWQgPHNjcmlwdD4uXG4gKiBAcmV0dXJuIHthcnJheTxET01FbGVtZW50fERPTVRleHRO
b2RlPn0gQW4gYXJyYXkgb2YgcmVuZGVyZWQgbm9kZXMuXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZU5v
ZGVzRnJvbU1hcmt1cChtYXJrdXAsIGhhbmRsZVNjcmlwdCkge1xuICB2YXIgbm9kZSA9IGR1bW15
Tm9kZTtcbiAgISEhZHVtbXlOb2RlID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0
aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ2NyZWF0ZU5vZGVzRnJvbU1hcmt1cCBkdW1teSBub3Qg
aW5pdGlhbGl6ZWQnKSA6IGludmFyaWFudChmYWxzZSkgOiB2b2lkIDA7XG4gIHZhciBub2RlTmFt
ZSA9IGdldE5vZGVOYW1lKG1hcmt1cCk7XG5cbiAgdmFyIHdyYXAgPSBub2RlTmFtZSAmJiBnZXRN
YXJrdXBXcmFwKG5vZGVOYW1lKTtcbiAgaWYgKHdyYXApIHtcbiAgICBub2RlLmlubmVySFRNTCA9
IHdyYXBbMV0gKyBtYXJrdXAgKyB3cmFwWzJdO1xuXG4gICAgdmFyIHdyYXBEZXB0aCA9IHdyYXBb
MF07XG4gICAgd2hpbGUgKHdyYXBEZXB0aC0tKSB7XG4gICAgICBub2RlID0gbm9kZS5sYXN0Q2hp
bGQ7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIG5vZGUuaW5uZXJIVE1MID0gbWFya3VwO1xuICB9
XG5cbiAgdmFyIHNjcmlwdHMgPSBub2RlLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdzY3JpcHQnKTtc
biAgaWYgKHNjcmlwdHMubGVuZ3RoKSB7XG4gICAgIWhhbmRsZVNjcmlwdCA/IHByb2Nlc3MuZW52
Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdjcmVhdGVOb2Rl
c0Zyb21NYXJrdXAoLi4uKTogVW5leHBlY3RlZCA8c2NyaXB0PiBlbGVtZW50IHJlbmRlcmVkLicp
IDogaW52YXJpYW50KGZhbHNlKSA6IHZvaWQgMDtcbiAgICBjcmVhdGVBcnJheUZyb21NaXhlZChz
Y3JpcHRzKS5mb3JFYWNoKGhhbmRsZVNjcmlwdCk7XG4gIH1cblxuICB2YXIgbm9kZXMgPSBBcnJh
eS5mcm9tKG5vZGUuY2hpbGROb2Rlcyk7XG4gIHdoaWxlIChub2RlLmxhc3RDaGlsZCkge1xuICAg
IG5vZGUucmVtb3ZlQ2hpbGQobm9kZS5sYXN0Q2hpbGQpO1xuICB9XG4gIHJldHVybiBub2Rlcztc
bn1cblxubW9kdWxlLmV4cG9ydHMgPSBjcmVhdGVOb2Rlc0Zyb21NYXJrdXA7XG5cblxuLyoqKioq
KioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vZmJqcy9saWIvY3JlYXRl
Tm9kZXNGcm9tTWFya3VwLmpzXG4gKiogbW9kdWxlIGlkID0gMTAyXG4gKiogbW9kdWxlIGNodW5r
cyA9IDBcbiAqKi8iLCIndXNlIHN0cmljdCc7XG5cbi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDEz
LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAq
IFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNl
IGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0
aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRz
IGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5c
biAqXG4gKi9cblxuLyplc2xpbnQtZGlzYWJsZSBmYi13d3cvdW5zYWZlLWh0bWwgKi9cblxudmFy
IEV4ZWN1dGlvbkVudmlyb25tZW50ID0gcmVxdWlyZSgnLi9FeGVjdXRpb25FbnZpcm9ubWVudCcp
O1xuXG52YXIgaW52YXJpYW50ID0gcmVxdWlyZSgnLi9pbnZhcmlhbnQnKTtcblxuLyoqXG4gKiBE
dW1teSBjb250YWluZXIgdXNlZCB0byBkZXRlY3Qgd2hpY2ggd3JhcHMgYXJlIG5lY2Vzc2FyeS5c
biAqL1xudmFyIGR1bW15Tm9kZSA9IEV4ZWN1dGlvbkVudmlyb25tZW50LmNhblVzZURPTSA/IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpIDogbnVsbDtcblxuLyoqXG4gKiBTb21lIGJyb3dz
ZXJzIGNhbm5vdCB1c2UgYGlubmVySFRNTGAgdG8gcmVuZGVyIGNlcnRhaW4gZWxlbWVudHMgc3Rh
bmRhbG9uZSxcbiAqIHNvIHdlIHdyYXAgdGhlbSwgcmVuZGVyIHRoZSB3cmFwcGVkIG5vZGVzLCB0
aGVuIGV4dHJhY3QgdGhlIGRlc2lyZWQgbm9kZS5cbiAqXG4gKiBJbiBJRTgsIGNlcnRhaW4gZWxl
bWVudHMgY2Fubm90IHJlbmRlciBhbG9uZSwgc28gd3JhcCBhbGwgZWxlbWVudHMgKCcqJykuXG4g
Ki9cblxudmFyIHNob3VsZFdyYXAgPSB7fTtcblxudmFyIHNlbGVjdFdyYXAgPSBbMSwgJzxzZWxl
Y3QgbXVsdGlwbGU9XCJ0cnVlXCI+JywgJzwvc2VsZWN0PiddO1xudmFyIHRhYmxlV3JhcCA9IFsx
LCAnPHRhYmxlPicsICc8L3RhYmxlPiddO1xudmFyIHRyV3JhcCA9IFszLCAnPHRhYmxlPjx0Ym9k
eT48dHI+JywgJzwvdHI+PC90Ym9keT48L3RhYmxlPiddO1xuXG52YXIgc3ZnV3JhcCA9IFsxLCAn
PHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+JywgJzwvc3ZnPiddO1xu
XG52YXIgbWFya3VwV3JhcCA9IHtcbiAgJyonOiBbMSwgJz88ZGl2PicsICc8L2Rpdj4nXSxcblxu
ICAnYXJlYSc6IFsxLCAnPG1hcD4nLCAnPC9tYXA+J10sXG4gICdjb2wnOiBbMiwgJzx0YWJsZT48
dGJvZHk+PC90Ym9keT48Y29sZ3JvdXA+JywgJzwvY29sZ3JvdXA+PC90YWJsZT4nXSxcbiAgJ2xl
Z2VuZCc6IFsxLCAnPGZpZWxkc2V0PicsICc8L2ZpZWxkc2V0PiddLFxuICAncGFyYW0nOiBbMSwg
JzxvYmplY3Q+JywgJzwvb2JqZWN0PiddLFxuICAndHInOiBbMiwgJzx0YWJsZT48dGJvZHk+Jywg
JzwvdGJvZHk+PC90YWJsZT4nXSxcblxuICAnb3B0Z3JvdXAnOiBzZWxlY3RXcmFwLFxuICAnb3B0
aW9uJzogc2VsZWN0V3JhcCxcblxuICAnY2FwdGlvbic6IHRhYmxlV3JhcCxcbiAgJ2NvbGdyb3Vw
JzogdGFibGVXcmFwLFxuICAndGJvZHknOiB0YWJsZVdyYXAsXG4gICd0Zm9vdCc6IHRhYmxlV3Jh
cCxcbiAgJ3RoZWFkJzogdGFibGVXcmFwLFxuXG4gICd0ZCc6IHRyV3JhcCxcbiAgJ3RoJzogdHJX
cmFwXG59O1xuXG4vLyBJbml0aWFsaXplIHRoZSBTVkcgZWxlbWVudHMgc2luY2Ugd2Uga25vdyB0
aGV5J2xsIGFsd2F5cyBuZWVkIHRvIGJlIHdyYXBwZWRcbi8vIGNvbnNpc3RlbnRseS4gSWYgdGhl
eSBhcmUgY3JlYXRlZCBpbnNpZGUgYSA8ZGl2PiB0aGV5IHdpbGwgYmUgaW5pdGlhbGl6ZWQgaW5c
bi8vIHRoZSB3cm9uZyBuYW1lc3BhY2UgKGFuZCB3aWxsIG5vdCBkaXNwbGF5KS5cbnZhciBzdmdF
bGVtZW50cyA9IFsnY2lyY2xlJywgJ2NsaXBQYXRoJywgJ2RlZnMnLCAnZWxsaXBzZScsICdnJywg
J2ltYWdlJywgJ2xpbmUnLCAnbGluZWFyR3JhZGllbnQnLCAnbWFzaycsICdwYXRoJywgJ3BhdHRl
cm4nLCAncG9seWdvbicsICdwb2x5bGluZScsICdyYWRpYWxHcmFkaWVudCcsICdyZWN0JywgJ3N0
b3AnLCAndGV4dCcsICd0c3BhbiddO1xuc3ZnRWxlbWVudHMuZm9yRWFjaChmdW5jdGlvbiAobm9k
ZU5hbWUpIHtcbiAgbWFya3VwV3JhcFtub2RlTmFtZV0gPSBzdmdXcmFwO1xuICBzaG91bGRXcmFw
W25vZGVOYW1lXSA9IHRydWU7XG59KTtcblxuLyoqXG4gKiBHZXRzIHRoZSBtYXJrdXAgd3JhcCBj
b25maWd1cmF0aW9uIGZvciB0aGUgc3VwcGxpZWQgYG5vZGVOYW1lYC5cbiAqXG4gKiBOT1RFOiBU
aGlzIGxhemlseSBkZXRlY3RzIHdoaWNoIHdyYXBzIGFyZSBuZWNlc3NhcnkgZm9yIHRoZSBjdXJy
ZW50IGJyb3dzZXIuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IG5vZGVOYW1lIExvd2VyY2FzZSBg
bm9kZU5hbWVgLlxuICogQHJldHVybiB7P2FycmF5fSBNYXJrdXAgd3JhcCBjb25maWd1cmF0aW9u
LCBpZiBhcHBsaWNhYmxlLlxuICovXG5mdW5jdGlvbiBnZXRNYXJrdXBXcmFwKG5vZGVOYW1lKSB7
XG4gICEhIWR1bW15Tm9kZSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicg
PyBpbnZhcmlhbnQoZmFsc2UsICdNYXJrdXAgd3JhcHBpbmcgbm9kZSBub3QgaW5pdGlhbGl6ZWQn
KSA6IGludmFyaWFudChmYWxzZSkgOiB2b2lkIDA7XG4gIGlmICghbWFya3VwV3JhcC5oYXNPd25Q
cm9wZXJ0eShub2RlTmFtZSkpIHtcbiAgICBub2RlTmFtZSA9ICcqJztcbiAgfVxuICBpZiAoIXNo
b3VsZFdyYXAuaGFzT3duUHJvcGVydHkobm9kZU5hbWUpKSB7XG4gICAgaWYgKG5vZGVOYW1lID09
PSAnKicpIHtcbiAgICAgIGR1bW15Tm9kZS5pbm5lckhUTUwgPSAnPGxpbmsgLz4nO1xuICAgIH0g
ZWxzZSB7XG4gICAgICBkdW1teU5vZGUuaW5uZXJIVE1MID0gJzwnICsgbm9kZU5hbWUgKyAnPjwv
JyArIG5vZGVOYW1lICsgJz4nO1xuICAgIH1cbiAgICBzaG91bGRXcmFwW25vZGVOYW1lXSA9ICFk
dW1teU5vZGUuZmlyc3RDaGlsZDtcbiAgfVxuICByZXR1cm4gc2hvdWxkV3JhcFtub2RlTmFtZV0g
PyBtYXJrdXBXcmFwW25vZGVOYW1lXSA6IG51bGw7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0
TWFya3VwV3JhcDtcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxu
ICoqIC4vfi9mYmpzL2xpYi9nZXRNYXJrdXBXcmFwLmpzXG4gKiogbW9kdWxlIGlkID0gMTAzXG4g
KiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxMy1w
cmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBU
aGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBm
b3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhp
cyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBj
YW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4g
KlxuICogQHR5cGVjaGVja3NcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbi8qKlxuICogR2V0cyB0
aGUgc2Nyb2xsIHBvc2l0aW9uIG9mIHRoZSBzdXBwbGllZCBlbGVtZW50IG9yIHdpbmRvdy5cbiAq
XG4gKiBUaGUgcmV0dXJuIHZhbHVlcyBhcmUgdW5ib3VuZGVkLCB1bmxpa2UgYGdldFNjcm9sbFBv
c2l0aW9uYC4gVGhpcyBtZWFucyB0aGV5XG4gKiBtYXkgYmUgbmVnYXRpdmUgb3IgZXhjZWVkIHRo
ZSBlbGVtZW50IGJvdW5kYXJpZXMgKHdoaWNoIGlzIHBvc3NpYmxlIHVzaW5nXG4gKiBpbmVydGlh
bCBzY3JvbGxpbmcpLlxuICpcbiAqIEBwYXJhbSB7RE9NV2luZG93fERPTUVsZW1lbnR9IHNjcm9s
bGFibGVcbiAqIEByZXR1cm4ge29iamVjdH0gTWFwIHdpdGggYHhgIGFuZCBgeWAga2V5cy5cbiAq
L1xuXG5mdW5jdGlvbiBnZXRVbmJvdW5kZWRTY3JvbGxQb3NpdGlvbihzY3JvbGxhYmxlKSB7XG4g
IGlmIChzY3JvbGxhYmxlLldpbmRvdyAmJiBzY3JvbGxhYmxlIGluc3RhbmNlb2Ygc2Nyb2xsYWJs
ZS5XaW5kb3cpIHtcbiAgICByZXR1cm4ge1xuICAgICAgeDogc2Nyb2xsYWJsZS5wYWdlWE9mZnNl
dCB8fCBzY3JvbGxhYmxlLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxMZWZ0LFxuICAg
ICAgeTogc2Nyb2xsYWJsZS5wYWdlWU9mZnNldCB8fCBzY3JvbGxhYmxlLmRvY3VtZW50LmRvY3Vt
ZW50RWxlbWVudC5zY3JvbGxUb3BcbiAgICB9O1xuICB9XG4gIHJldHVybiB7XG4gICAgeDogc2Ny
b2xsYWJsZS5zY3JvbGxMZWZ0LFxuICAgIHk6IHNjcm9sbGFibGUuc2Nyb2xsVG9wXG4gIH07XG59
XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0VW5ib3VuZGVkU2Nyb2xsUG9zaXRpb247XG5cblxuLyoq
KioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vZmJqcy9saWIvZ2V0
VW5ib3VuZGVkU2Nyb2xsUG9zaXRpb24uanNcbiAqKiBtb2R1bGUgaWQgPSAxMDRcbiAqKiBtb2R1
bGUgY2h1bmtzID0gMFxuICoqLyIsIid1c2Ugc3RyaWN0JztcblxuLyoqXG4gKiBDb3B5cmlnaHQg
KGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQu
XG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxl
IGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0
b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVu
dCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGly
ZWN0b3J5LlxuICpcbiAqIEB0eXBlY2hlY2tzXG4gKi9cblxudmFyIF91cHBlcmNhc2VQYXR0ZXJu
ID0gLyhbQS1aXSkvZztcblxuLyoqXG4gKiBIeXBoZW5hdGVzIGEgY2FtZWxjYXNlZCBzdHJpbmcs
IGZvciBleGFtcGxlOlxuICpcbiAqICAgPiBoeXBoZW5hdGUoJ2JhY2tncm91bmRDb2xvcicpXG4g
KiAgIDwgXCJiYWNrZ3JvdW5kLWNvbG9yXCJcbiAqXG4gKiBGb3IgQ1NTIHN0eWxlIG5hbWVzLCB1
c2UgYGh5cGhlbmF0ZVN0eWxlTmFtZWAgaW5zdGVhZCB3aGljaCB3b3JrcyBwcm9wZXJseVxuICog
d2l0aCBhbGwgdmVuZG9yIHByZWZpeGVzLCBpbmNsdWRpbmcgYG1zYC5cbiAqXG4gKiBAcGFyYW0g
e3N0cmluZ30gc3RyaW5nXG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKi9cbmZ1bmN0aW9uIGh5cGhl
bmF0ZShzdHJpbmcpIHtcbiAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKF91cHBlcmNhc2VQYXR0ZXJu
LCAnLSQxJykudG9Mb3dlckNhc2UoKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBoeXBoZW5hdGU7
XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vZmJq
cy9saWIvaHlwaGVuYXRlLmpzXG4gKiogbW9kdWxlIGlkID0gMTA1XG4gKiogbW9kdWxlIGNodW5r
cyA9IDBcbiAqKi8iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9v
aywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2Rl
IGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAq
IExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4g
QW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4g
dGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHR5cGVjaGVj
a3NcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBoeXBoZW5hdGUgPSByZXF1aXJlKCcuL2h5
cGhlbmF0ZScpO1xuXG52YXIgbXNQYXR0ZXJuID0gL15tcy0vO1xuXG4vKipcbiAqIEh5cGhlbmF0
ZXMgYSBjYW1lbGNhc2VkIENTUyBwcm9wZXJ0eSBuYW1lLCBmb3IgZXhhbXBsZTpcbiAqXG4gKiAg
ID4gaHlwaGVuYXRlU3R5bGVOYW1lKCdiYWNrZ3JvdW5kQ29sb3InKVxuICogICA8IFwiYmFja2dy
b3VuZC1jb2xvclwiXG4gKiAgID4gaHlwaGVuYXRlU3R5bGVOYW1lKCdNb3pUcmFuc2l0aW9uJylc
biAqICAgPCBcIi1tb3otdHJhbnNpdGlvblwiXG4gKiAgID4gaHlwaGVuYXRlU3R5bGVOYW1lKCdt
c1RyYW5zaXRpb24nKVxuICogICA8IFwiLW1zLXRyYW5zaXRpb25cIlxuICpcbiAqIEFzIE1vZGVy
bml6ciBzdWdnZXN0cyAoaHR0cDovL21vZGVybml6ci5jb20vZG9jcy8jcHJlZml4ZWQpLCBhbiBg
bXNgIHByZWZpeFxuICogaXMgY29udmVydGVkIHRvIGAtbXMtYC5cbiAqXG4gKiBAcGFyYW0ge3N0
cmluZ30gc3RyaW5nXG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKi9cbmZ1bmN0aW9uIGh5cGhlbmF0
ZVN0eWxlTmFtZShzdHJpbmcpIHtcbiAgcmV0dXJuIGh5cGhlbmF0ZShzdHJpbmcpLnJlcGxhY2Uo
bXNQYXR0ZXJuLCAnLW1zLScpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGh5cGhlbmF0ZVN0eWxl
TmFtZTtcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4v
fi9mYmpzL2xpYi9oeXBoZW5hdGVTdHlsZU5hbWUuanNcbiAqKiBtb2R1bGUgaWQgPSAxMDZcbiAq
KiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIid1c2Ugc3RyaWN0JztcblxuLyoqXG4gKiBDb3B5
cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNE
LXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qg
ZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9m
IHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNh
bWUgZGlyZWN0b3J5LlxuICpcbiAqIEB0eXBlY2hlY2tzXG4gKi9cblxuLyoqXG4gKiBAcGFyYW0g
eyp9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGNoZWNrLlxuICogQHJldHVybiB7Ym9vbGVhbn0gV2hl
dGhlciBvciBub3QgdGhlIG9iamVjdCBpcyBhIERPTSBub2RlLlxuICovXG5mdW5jdGlvbiBpc05v
ZGUob2JqZWN0KSB7XG4gIHZhciBkb2MgPSBvYmplY3QgPyBvYmplY3Qub3duZXJEb2N1bWVudCB8
fCBvYmplY3QgOiBkb2N1bWVudDtcbiAgdmFyIGRlZmF1bHRWaWV3ID0gZG9jLmRlZmF1bHRWaWV3
IHx8IHdpbmRvdztcbiAgcmV0dXJuICEhKG9iamVjdCAmJiAodHlwZW9mIGRlZmF1bHRWaWV3Lk5v
ZGUgPT09ICdmdW5jdGlvbicgPyBvYmplY3QgaW5zdGFuY2VvZiBkZWZhdWx0Vmlldy5Ob2RlIDog
dHlwZW9mIG9iamVjdCA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG9iamVjdC5ub2RlVHlwZSA9PT0g
J251bWJlcicgJiYgdHlwZW9mIG9iamVjdC5ub2RlTmFtZSA9PT0gJ3N0cmluZycpKTtcbn1cblxu
bW9kdWxlLmV4cG9ydHMgPSBpc05vZGU7XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VC
UEFDSyBGT09URVJcbiAqKiAuL34vZmJqcy9saWIvaXNOb2RlLmpzXG4gKiogbW9kdWxlIGlkID0g
MTA3XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIndXNlIHN0cmljdCc7XG5cbi8qKlxu
ICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmln
aHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIg
dGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRo
ZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50
XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGlu
IHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAdHlwZWNoZWNrc1xuICovXG5cbnZhciBpc05v
ZGUgPSByZXF1aXJlKCcuL2lzTm9kZScpO1xuXG4vKipcbiAqIEBwYXJhbSB7Kn0gb2JqZWN0IFRo
ZSBvYmplY3QgdG8gY2hlY2suXG4gKiBAcmV0dXJuIHtib29sZWFufSBXaGV0aGVyIG9yIG5vdCB0
aGUgb2JqZWN0IGlzIGEgRE9NIHRleHQgbm9kZS5cbiAqL1xuZnVuY3Rpb24gaXNUZXh0Tm9kZShv
YmplY3QpIHtcbiAgcmV0dXJuIGlzTm9kZShvYmplY3QpICYmIG9iamVjdC5ub2RlVHlwZSA9PSAz
O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzVGV4dE5vZGU7XG5cblxuLyoqKioqKioqKioqKioq
KioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vZmJqcy9saWIvaXNUZXh0Tm9kZS5qc1xu
ICoqIG1vZHVsZSBpZCA9IDEwOFxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4g
KiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0
aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhl
IHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRc
biAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4g
dGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIFxuICogQHR5cGVjaGVja3Mgc3RhdGljLW9ubHlc
biAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbi8qKlxuICogTWVtb2l6ZXMgdGhlIHJldHVybiB2YWx1
ZSBvZiBhIGZ1bmN0aW9uIHRoYXQgYWNjZXB0cyBvbmUgc3RyaW5nIGFyZ3VtZW50LlxuICovXG5c
bmZ1bmN0aW9uIG1lbW9pemVTdHJpbmdPbmx5KGNhbGxiYWNrKSB7XG4gIHZhciBjYWNoZSA9IHt9
O1xuICByZXR1cm4gZnVuY3Rpb24gKHN0cmluZykge1xuICAgIGlmICghY2FjaGUuaGFzT3duUHJv
cGVydHkoc3RyaW5nKSkge1xuICAgICAgY2FjaGVbc3RyaW5nXSA9IGNhbGxiYWNrLmNhbGwodGhp
cywgc3RyaW5nKTtcbiAgICB9XG4gICAgcmV0dXJuIGNhY2hlW3N0cmluZ107XG4gIH07XG59XG5c
bm1vZHVsZS5leHBvcnRzID0gbWVtb2l6ZVN0cmluZ09ubHk7XG5cblxuLyoqKioqKioqKioqKioq
KioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vZmJqcy9saWIvbWVtb2l6ZVN0cmluZ09u
bHkuanNcbiAqKiBtb2R1bGUgaWQgPSAxMDlcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIs
Ii8qKlxuICogQ29weXJpZ2h0IDIwMTUsIFlhaG9vISBJbmMuXG4gKiBDb3B5cmlnaHRzIGxpY2Vu
c2VkIHVuZGVyIHRoZSBOZXcgQlNEIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VO
U0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbid1c2Ugc3RyaWN0JztcblxudmFyIFJFQUNUX1NUQVRJ
Q1MgPSB7XG4gICAgY2hpbGRDb250ZXh0VHlwZXM6IHRydWUsXG4gICAgY29udGV4dFR5cGVzOiB0
cnVlLFxuICAgIGRlZmF1bHRQcm9wczogdHJ1ZSxcbiAgICBkaXNwbGF5TmFtZTogdHJ1ZSxcbiAg
ICBnZXREZWZhdWx0UHJvcHM6IHRydWUsXG4gICAgbWl4aW5zOiB0cnVlLFxuICAgIHByb3BUeXBl
czogdHJ1ZSxcbiAgICB0eXBlOiB0cnVlXG59O1xuXG52YXIgS05PV05fU1RBVElDUyA9IHtcbiAg
bmFtZTogdHJ1ZSxcbiAgbGVuZ3RoOiB0cnVlLFxuICBwcm90b3R5cGU6IHRydWUsXG4gIGNhbGxl
cjogdHJ1ZSxcbiAgY2FsbGVlOiB0cnVlLFxuICBhcmd1bWVudHM6IHRydWUsXG4gIGFyaXR5OiB0
cnVlXG59O1xuXG52YXIgZ2V0T3duUHJvcGVydHlTeW1ib2xzID0gT2JqZWN0LmdldE93blByb3Bl
cnR5U3ltYm9scztcbnZhciBoYXNPd25Qcm9wZXJ0eSA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3du
UHJvcGVydHk7XG52YXIgcHJvcElzRW51bWVyYWJsZSA9IE9iamVjdC5wcm90b3R5cGUucHJvcGVy
dHlJc0VudW1lcmFibGU7XG52YXIgZ2V0UHJvdG90eXBlT2YgPSBPYmplY3QuZ2V0UHJvdG90eXBl
T2Y7XG52YXIgb2JqZWN0UHJvdG90eXBlID0gZ2V0UHJvdG90eXBlT2YgJiYgZ2V0UHJvdG90eXBl
T2YoT2JqZWN0KTtcbnZhciBnZXRPd25Qcm9wZXJ0eU5hbWVzID0gT2JqZWN0LmdldE93blByb3Bl
cnR5TmFtZXM7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gaG9pc3ROb25SZWFjdFN0YXRp
Y3ModGFyZ2V0Q29tcG9uZW50LCBzb3VyY2VDb21wb25lbnQsIGJsYWNrbGlzdCkge1xuICAgIGlm
ICh0eXBlb2Ygc291cmNlQ29tcG9uZW50ICE9PSAnc3RyaW5nJykgeyAvLyBkb24ndCBob2lzdCBv
dmVyIHN0cmluZyAoaHRtbCkgY29tcG9uZW50c1xuXG4gICAgICAgIGlmIChvYmplY3RQcm90b3R5
cGUpIHtcbiAgICAgICAgICAgIHZhciBpbmhlcml0ZWRDb21wb25lbnQgPSBnZXRQcm90b3R5cGVP
Zihzb3VyY2VDb21wb25lbnQpO1xuICAgICAgICAgICAgaWYgKGluaGVyaXRlZENvbXBvbmVudCAm
JiBpbmhlcml0ZWRDb21wb25lbnQgIT09IG9iamVjdFByb3RvdHlwZSkge1xuICAgICAgICAgICAg
ICAgIGhvaXN0Tm9uUmVhY3RTdGF0aWNzKHRhcmdldENvbXBvbmVudCwgaW5oZXJpdGVkQ29tcG9u
ZW50LCBibGFja2xpc3QpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdmFy
IGtleXMgPSBnZXRPd25Qcm9wZXJ0eU5hbWVzKHNvdXJjZUNvbXBvbmVudCk7XG5cbiAgICAgICAg
aWYgKGdldE93blByb3BlcnR5U3ltYm9scykge1xuICAgICAgICAgICAga2V5cyA9IGtleXMuY29u
Y2F0KGdldE93blByb3BlcnR5U3ltYm9scyhzb3VyY2VDb21wb25lbnQpKTtcbiAgICAgICAgfVxu
XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7ICsraSkge1xuICAgICAg
ICAgICAgdmFyIGtleSA9IGtleXNbaV07XG4gICAgICAgICAgICBpZiAoIVJFQUNUX1NUQVRJQ1Nb
a2V5XSAmJiAhS05PV05fU1RBVElDU1trZXldICYmICghYmxhY2tsaXN0IHx8ICFibGFja2xpc3Rb
a2V5XSkpIHtcbiAgICAgICAgICAgICAgICAvLyBPbmx5IGhvaXN0IGVudW1lcmFibGVzIGFuZCBu
b24tZW51bWVyYWJsZSBmdW5jdGlvbnNcbiAgICAgICAgICAgICAgICBpZihwcm9wSXNFbnVtZXJh
YmxlLmNhbGwoc291cmNlQ29tcG9uZW50LCBrZXkpIHx8IHR5cGVvZiBzb3VyY2VDb21wb25lbnRb
a2V5XSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgICAgICB0cnkgeyAvLyBBdm9p
ZCBmYWlsdXJlcyBmcm9tIHJlYWQtb25seSBwcm9wZXJ0aWVzXG4gICAgICAgICAgICAgICAgICAg
ICAgICB0YXJnZXRDb21wb25lbnRba2V5XSA9IHNvdXJjZUNvbXBvbmVudFtrZXldO1xuICAgICAg
ICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7fVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAg
ICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0YXJnZXRDb21wb25lbnQ7XG4gICAg
fVxuXG4gICAgcmV0dXJuIHRhcmdldENvbXBvbmVudDtcbn07XG5cblxuXG4vKioqKioqKioqKioq
KioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9ob2lzdC1ub24tcmVhY3Qtc3RhdGlj
cy9pbmRleC5qc1xuICoqIG1vZHVsZSBpZCA9IDExMFxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4g
KiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxs
IHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVu
ZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBp
biB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBn
cmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmls
ZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG4vKipcbiAq
IFVzZSBpbnZhcmlhbnQoKSB0byBhc3NlcnQgc3RhdGUgd2hpY2ggeW91ciBwcm9ncmFtIGFzc3Vt
ZXMgdG8gYmUgdHJ1ZS5cbiAqXG4gKiBQcm92aWRlIHNwcmludGYtc3R5bGUgZm9ybWF0IChvbmx5
ICVzIGlzIHN1cHBvcnRlZCkgYW5kIGFyZ3VtZW50c1xuICogdG8gcHJvdmlkZSBpbmZvcm1hdGlv
biBhYm91dCB3aGF0IGJyb2tlIGFuZCB3aGF0IHlvdSB3ZXJlXG4gKiBleHBlY3RpbmcuXG4gKlxu
ICogVGhlIGludmFyaWFudCBtZXNzYWdlIHdpbGwgYmUgc3RyaXBwZWQgaW4gcHJvZHVjdGlvbiwg
YnV0IHRoZSBpbnZhcmlhbnRcbiAqIHdpbGwgcmVtYWluIHRvIGVuc3VyZSBsb2dpYyBkb2VzIG5v
dCBkaWZmZXIgaW4gcHJvZHVjdGlvbi5cbiAqL1xuXG52YXIgaW52YXJpYW50ID0gZnVuY3Rpb24o
Y29uZGl0aW9uLCBmb3JtYXQsIGEsIGIsIGMsIGQsIGUsIGYpIHtcbiAgaWYgKHByb2Nlc3MuZW52
Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICBpZiAoZm9ybWF0ID09PSB1bmRlZmlu
ZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignaW52YXJpYW50IHJlcXVpcmVzIGFuIGVycm9y
IG1lc3NhZ2UgYXJndW1lbnQnKTtcbiAgICB9XG4gIH1cblxuICBpZiAoIWNvbmRpdGlvbikge1xu
ICAgIHZhciBlcnJvcjtcbiAgICBpZiAoZm9ybWF0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGVy
cm9yID0gbmV3IEVycm9yKFxuICAgICAgICAnTWluaWZpZWQgZXhjZXB0aW9uIG9jY3VycmVkOyB1
c2UgdGhlIG5vbi1taW5pZmllZCBkZXYgZW52aXJvbm1lbnQgJyArXG4gICAgICAgICdmb3IgdGhl
IGZ1bGwgZXJyb3IgbWVzc2FnZSBhbmQgYWRkaXRpb25hbCBoZWxwZnVsIHdhcm5pbmdzLidcbiAg
ICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBhcmdzID0gW2EsIGIsIGMsIGQsIGUsIGZd
O1xuICAgICAgdmFyIGFyZ0luZGV4ID0gMDtcbiAgICAgIGVycm9yID0gbmV3IEVycm9yKFxuICAg
ICAgICBmb3JtYXQucmVwbGFjZSgvJXMvZywgZnVuY3Rpb24oKSB7IHJldHVybiBhcmdzW2FyZ0lu
ZGV4KytdOyB9KVxuICAgICAgKTtcbiAgICAgIGVycm9yLm5hbWUgPSAnSW52YXJpYW50IFZpb2xh
dGlvbic7XG4gICAgfVxuXG4gICAgZXJyb3IuZnJhbWVzVG9Qb3AgPSAxOyAvLyB3ZSBkb24ndCBj
YXJlIGFib3V0IGludmFyaWFudCdzIG93biBmcmFtZVxuICAgIHRocm93IGVycm9yO1xuICB9XG59
O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGludmFyaWFudDtcblxuXG5cbi8qKioqKioqKioqKioqKioq
KlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L2ludmFyaWFudC9icm93c2VyLmpzXG4gKiog
bW9kdWxlIGlkID0gMTExXG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCJ2YXIgU3ltYm9s
ID0gcmVxdWlyZSgnLi9fU3ltYm9sJyksXG4gICAgZ2V0UmF3VGFnID0gcmVxdWlyZSgnLi9fZ2V0
UmF3VGFnJyksXG4gICAgb2JqZWN0VG9TdHJpbmcgPSByZXF1aXJlKCcuL19vYmplY3RUb1N0cmlu
ZycpO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIg
bnVsbFRhZyA9ICdbb2JqZWN0IE51bGxdJyxcbiAgICB1bmRlZmluZWRUYWcgPSAnW29iamVjdCBV
bmRlZmluZWRdJztcblxuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgc3lt
VG9TdHJpbmdUYWcgPSBTeW1ib2wgPyBTeW1ib2wudG9TdHJpbmdUYWcgOiB1bmRlZmluZWQ7XG5c
bi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYGdldFRhZ2Agd2l0aG91dCBmYWxs
YmFja3MgZm9yIGJ1Z2d5IGVudmlyb25tZW50cy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFt
IHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1
cm5zIHRoZSBgdG9TdHJpbmdUYWdgLlxuICovXG5mdW5jdGlvbiBiYXNlR2V0VGFnKHZhbHVlKSB7
XG4gIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgcmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQg
PyB1bmRlZmluZWRUYWcgOiBudWxsVGFnO1xuICB9XG4gIHJldHVybiAoc3ltVG9TdHJpbmdUYWcg
JiYgc3ltVG9TdHJpbmdUYWcgaW4gT2JqZWN0KHZhbHVlKSlcbiAgICA/IGdldFJhd1RhZyh2YWx1
ZSlcbiAgICA6IG9iamVjdFRvU3RyaW5nKHZhbHVlKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBi
YXNlR2V0VGFnO1xuXG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJc
biAqKiAuL34vbG9kYXNoL19iYXNlR2V0VGFnLmpzXG4gKiogbW9kdWxlIGlkID0gMTEyXG4gKiog
bW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKiogRGV0ZWN0IGZyZWUgdmFyaWFibGUgYGdsb2Jh
bGAgZnJvbSBOb2RlLmpzLiAqL1xudmFyIGZyZWVHbG9iYWwgPSB0eXBlb2YgZ2xvYmFsID09ICdv
YmplY3QnICYmIGdsb2JhbCAmJiBnbG9iYWwuT2JqZWN0ID09PSBPYmplY3QgJiYgZ2xvYmFsO1xu
XG5tb2R1bGUuZXhwb3J0cyA9IGZyZWVHbG9iYWw7XG5cblxuXG4vKioqKioqKioqKioqKioqKipc
biAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9sb2Rhc2gvX2ZyZWVHbG9iYWwuanNcbiAqKiBt
b2R1bGUgaWQgPSAxMTNcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsInZhciBvdmVyQXJn
ID0gcmVxdWlyZSgnLi9fb3ZlckFyZycpO1xuXG4vKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNl
cy4gKi9cbnZhciBnZXRQcm90b3R5cGUgPSBvdmVyQXJnKE9iamVjdC5nZXRQcm90b3R5cGVPZiwg
T2JqZWN0KTtcblxubW9kdWxlLmV4cG9ydHMgPSBnZXRQcm90b3R5cGU7XG5cblxuXG4vKioqKioq
KioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9sb2Rhc2gvX2dldFByb3Rv
dHlwZS5qc1xuICoqIG1vZHVsZSBpZCA9IDExNFxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiov
IiwidmFyIFN5bWJvbCA9IHJlcXVpcmUoJy4vX1N5bWJvbCcpO1xuXG4vKiogVXNlZCBmb3IgYnVp
bHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJv
dG90eXBlO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4g
Ki9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4v
KipcbiAqIFVzZWQgdG8gcmVzb2x2ZSB0aGVcbiAqIFtgdG9TdHJpbmdUYWdgXShodHRwOi8vZWNt
YS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1vYmplY3QucHJvdG90eXBlLnRv
c3RyaW5nKVxuICogb2YgdmFsdWVzLlxuICovXG52YXIgbmF0aXZlT2JqZWN0VG9TdHJpbmcgPSBv
YmplY3RQcm90by50b1N0cmluZztcblxuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICov
XG52YXIgc3ltVG9TdHJpbmdUYWcgPSBTeW1ib2wgPyBTeW1ib2wudG9TdHJpbmdUYWcgOiB1bmRl
ZmluZWQ7XG5cbi8qKlxuICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBiYXNlR2V0VGFnYCB3
aGljaCBpZ25vcmVzIGBTeW1ib2wudG9TdHJpbmdUYWdgIHZhbHVlcy5cbiAqXG4gKiBAcHJpdmF0
ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7
c3RyaW5nfSBSZXR1cm5zIHRoZSByYXcgYHRvU3RyaW5nVGFnYC5cbiAqL1xuZnVuY3Rpb24gZ2V0
UmF3VGFnKHZhbHVlKSB7XG4gIHZhciBpc093biA9IGhhc093blByb3BlcnR5LmNhbGwodmFsdWUs
IHN5bVRvU3RyaW5nVGFnKSxcbiAgICAgIHRhZyA9IHZhbHVlW3N5bVRvU3RyaW5nVGFnXTtcblxu
ICB0cnkge1xuICAgIHZhbHVlW3N5bVRvU3RyaW5nVGFnXSA9IHVuZGVmaW5lZDtcbiAgICB2YXIg
dW5tYXNrZWQgPSB0cnVlO1xuICB9IGNhdGNoIChlKSB7fVxuXG4gIHZhciByZXN1bHQgPSBuYXRp
dmVPYmplY3RUb1N0cmluZy5jYWxsKHZhbHVlKTtcbiAgaWYgKHVubWFza2VkKSB7XG4gICAgaWYg
KGlzT3duKSB7XG4gICAgICB2YWx1ZVtzeW1Ub1N0cmluZ1RhZ10gPSB0YWc7XG4gICAgfSBlbHNl
IHtcbiAgICAgIGRlbGV0ZSB2YWx1ZVtzeW1Ub1N0cmluZ1RhZ107XG4gICAgfVxuICB9XG4gIHJl
dHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0UmF3VGFnO1xuXG5cblxuLyoq
KioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vbG9kYXNoL19nZXRS
YXdUYWcuanNcbiAqKiBtb2R1bGUgaWQgPSAxMTVcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoq
LyIsIi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmpl
Y3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKlxuICogVXNlZCB0byByZXNvbHZlIHRo
ZVxuICogW2B0b1N0cmluZ1RhZ2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEt
MjYyLzcuMC8jc2VjLW9iamVjdC5wcm90b3R5cGUudG9zdHJpbmcpXG4gKiBvZiB2YWx1ZXMuXG4g
Ki9cbnZhciBuYXRpdmVPYmplY3RUb1N0cmluZyA9IG9iamVjdFByb3RvLnRvU3RyaW5nO1xuXG4v
KipcbiAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYSBzdHJpbmcgdXNpbmcgYE9iamVjdC5wcm90b3R5
cGUudG9TdHJpbmdgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2
YWx1ZSB0byBjb252ZXJ0LlxuICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgY29udmVy
dGVkIHN0cmluZy5cbiAqL1xuZnVuY3Rpb24gb2JqZWN0VG9TdHJpbmcodmFsdWUpIHtcbiAgcmV0
dXJuIG5hdGl2ZU9iamVjdFRvU3RyaW5nLmNhbGwodmFsdWUpO1xufVxuXG5tb2R1bGUuZXhwb3J0
cyA9IG9iamVjdFRvU3RyaW5nO1xuXG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFD
SyBGT09URVJcbiAqKiAuL34vbG9kYXNoL19vYmplY3RUb1N0cmluZy5qc1xuICoqIG1vZHVsZSBp
ZCA9IDExNlxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDcmVhdGVzIGEg
dW5hcnkgZnVuY3Rpb24gdGhhdCBpbnZva2VzIGBmdW5jYCB3aXRoIGl0cyBhcmd1bWVudCB0cmFu
c2Zvcm1lZC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUg
ZnVuY3Rpb24gdG8gd3JhcC5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IHRyYW5zZm9ybSBUaGUgYXJn
dW1lbnQgdHJhbnNmb3JtLlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcg
ZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIG92ZXJBcmcoZnVuYywgdHJhbnNmb3JtKSB7XG4gIHJl
dHVybiBmdW5jdGlvbihhcmcpIHtcbiAgICByZXR1cm4gZnVuYyh0cmFuc2Zvcm0oYXJnKSk7XG4g
IH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gb3ZlckFyZztcblxuXG5cbi8qKioqKioqKioqKioq
KioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L2xvZGFzaC9fb3ZlckFyZy5qc1xuICoq
IG1vZHVsZSBpZCA9IDExN1xuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwidmFyIGZyZWVH
bG9iYWwgPSByZXF1aXJlKCcuL19mcmVlR2xvYmFsJyk7XG5cbi8qKiBEZXRlY3QgZnJlZSB2YXJp
YWJsZSBgc2VsZmAuICovXG52YXIgZnJlZVNlbGYgPSB0eXBlb2Ygc2VsZiA9PSAnb2JqZWN0JyAm
JiBzZWxmICYmIHNlbGYuT2JqZWN0ID09PSBPYmplY3QgJiYgc2VsZjtcblxuLyoqIFVzZWQgYXMg
YSByZWZlcmVuY2UgdG8gdGhlIGdsb2JhbCBvYmplY3QuICovXG52YXIgcm9vdCA9IGZyZWVHbG9i
YWwgfHwgZnJlZVNlbGYgfHwgRnVuY3Rpb24oJ3JldHVybiB0aGlzJykoKTtcblxubW9kdWxlLmV4
cG9ydHMgPSByb290O1xuXG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09U
RVJcbiAqKiAuL34vbG9kYXNoL19yb290LmpzXG4gKiogbW9kdWxlIGlkID0gMTE4XG4gKiogbW9k
dWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIG9iamVj
dC1saWtlLiBBIHZhbHVlIGlzIG9iamVjdC1saWtlIGlmIGl0J3Mgbm90IGBudWxsYFxuICogYW5k
IGhhcyBhIGB0eXBlb2ZgIHJlc3VsdCBvZiBcIm9iamVjdFwiLlxuICpcbiAqIEBzdGF0aWNcbiAq
IEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFy
YW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBS
ZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIG9iamVjdC1saWtlLCBlbHNlIGBmYWxzZWAuXG4g
KiBAZXhhbXBsZVxuICpcbiAqIF8uaXNPYmplY3RMaWtlKHt9KTtcbiAqIC8vID0+IHRydWVcbiAq
XG4gKiBfLmlzT2JqZWN0TGlrZShbMSwgMiwgM10pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8u
aXNPYmplY3RMaWtlKF8ubm9vcCk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNPYmplY3RM
aWtlKG51bGwpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNPYmplY3RMaWtlKHZh
bHVlKSB7XG4gIHJldHVybiB2YWx1ZSAhPSBudWxsICYmIHR5cGVvZiB2YWx1ZSA9PSAnb2JqZWN0
Jztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc09iamVjdExpa2U7XG5cblxuXG4vKioqKioqKioq
KioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9sb2Rhc2gvaXNPYmplY3RMaWtl
LmpzXG4gKiogbW9kdWxlIGlkID0gMTE5XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIv
KipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmln
aHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIg
dGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRo
ZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50
XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGlu
IHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbmlmIChwcm9jZXNz
LmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIHZhciBpbnZhcmlhbnQgPSByZXF1
aXJlKCdmYmpzL2xpYi9pbnZhcmlhbnQnKTtcbiAgdmFyIHdhcm5pbmcgPSByZXF1aXJlKCdmYmpz
L2xpYi93YXJuaW5nJyk7XG4gIHZhciBSZWFjdFByb3BUeXBlc1NlY3JldCA9IHJlcXVpcmUoJy4v
bGliL1JlYWN0UHJvcFR5cGVzU2VjcmV0Jyk7XG4gIHZhciBsb2dnZWRUeXBlRmFpbHVyZXMgPSB7
fTtcbn1cblxuLyoqXG4gKiBBc3NlcnQgdGhhdCB0aGUgdmFsdWVzIG1hdGNoIHdpdGggdGhlIHR5
cGUgc3BlY3MuXG4gKiBFcnJvciBtZXNzYWdlcyBhcmUgbWVtb3JpemVkIGFuZCB3aWxsIG9ubHkg
YmUgc2hvd24gb25jZS5cbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gdHlwZVNwZWNzIE1hcCBvZiBu
YW1lIHRvIGEgUmVhY3RQcm9wVHlwZVxuICogQHBhcmFtIHtvYmplY3R9IHZhbHVlcyBSdW50aW1l
IHZhbHVlcyB0aGF0IG5lZWQgdG8gYmUgdHlwZS1jaGVja2VkXG4gKiBAcGFyYW0ge3N0cmluZ30g
bG9jYXRpb24gZS5nLiBcInByb3BcIiwgXCJjb250ZXh0XCIsIFwiY2hpbGQgY29udGV4dFwiXG4g
KiBAcGFyYW0ge3N0cmluZ30gY29tcG9uZW50TmFtZSBOYW1lIG9mIHRoZSBjb21wb25lbnQgZm9y
IGVycm9yIG1lc3NhZ2VzLlxuICogQHBhcmFtIHs/RnVuY3Rpb259IGdldFN0YWNrIFJldHVybnMg
dGhlIGNvbXBvbmVudCBzdGFjay5cbiAqIEBwcml2YXRlXG4gKi9cbmZ1bmN0aW9uIGNoZWNrUHJv
cFR5cGVzKHR5cGVTcGVjcywgdmFsdWVzLCBsb2NhdGlvbiwgY29tcG9uZW50TmFtZSwgZ2V0U3Rh
Y2spIHtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAg
ICBmb3IgKHZhciB0eXBlU3BlY05hbWUgaW4gdHlwZVNwZWNzKSB7XG4gICAgICBpZiAodHlwZVNw
ZWNzLmhhc093blByb3BlcnR5KHR5cGVTcGVjTmFtZSkpIHtcbiAgICAgICAgdmFyIGVycm9yO1xu
ICAgICAgICAvLyBQcm9wIHR5cGUgdmFsaWRhdGlvbiBtYXkgdGhyb3cuIEluIGNhc2UgdGhleSBk
bywgd2UgZG9uJ3Qgd2FudCB0b1xuICAgICAgICAvLyBmYWlsIHRoZSByZW5kZXIgcGhhc2Ugd2hl
cmUgaXQgZGlkbid0IGZhaWwgYmVmb3JlLiBTbyB3ZSBsb2cgaXQuXG4gICAgICAgIC8vIEFmdGVy
IHRoZXNlIGhhdmUgYmVlbiBjbGVhbmVkIHVwLCB3ZSdsbCBsZXQgdGhlbSB0aHJvdy5cbiAgICAg
ICAgdHJ5IHtcbiAgICAgICAgICAvLyBUaGlzIGlzIGludGVudGlvbmFsbHkgYW4gaW52YXJpYW50
IHRoYXQgZ2V0cyBjYXVnaHQuIEl0J3MgdGhlIHNhbWVcbiAgICAgICAgICAvLyBiZWhhdmlvciBh
cyB3aXRob3V0IHRoaXMgc3RhdGVtZW50IGV4Y2VwdCB3aXRoIGEgYmV0dGVyIG1lc3NhZ2UuXG4g
ICAgICAgICAgaW52YXJpYW50KHR5cGVvZiB0eXBlU3BlY3NbdHlwZVNwZWNOYW1lXSA9PT0gJ2Z1
bmN0aW9uJywgJyVzOiAlcyB0eXBlIGAlc2AgaXMgaW52YWxpZDsgaXQgbXVzdCBiZSBhIGZ1bmN0
aW9uLCB1c3VhbGx5IGZyb20gJyArICdSZWFjdC5Qcm9wVHlwZXMuJywgY29tcG9uZW50TmFtZSB8
fCAnUmVhY3QgY2xhc3MnLCBsb2NhdGlvbiwgdHlwZVNwZWNOYW1lKTtcbiAgICAgICAgICBlcnJv
ciA9IHR5cGVTcGVjc1t0eXBlU3BlY05hbWVdKHZhbHVlcywgdHlwZVNwZWNOYW1lLCBjb21wb25l
bnROYW1lLCBsb2NhdGlvbiwgbnVsbCwgUmVhY3RQcm9wVHlwZXNTZWNyZXQpO1xuICAgICAgICB9
IGNhdGNoIChleCkge1xuICAgICAgICAgIGVycm9yID0gZXg7XG4gICAgICAgIH1cbiAgICAgICAg
d2FybmluZyghZXJyb3IgfHwgZXJyb3IgaW5zdGFuY2VvZiBFcnJvciwgJyVzOiB0eXBlIHNwZWNp
ZmljYXRpb24gb2YgJXMgYCVzYCBpcyBpbnZhbGlkOyB0aGUgdHlwZSBjaGVja2VyICcgKyAnZnVu
Y3Rpb24gbXVzdCByZXR1cm4gYG51bGxgIG9yIGFuIGBFcnJvcmAgYnV0IHJldHVybmVkIGEgJXMu
ICcgKyAnWW91IG1heSBoYXZlIGZvcmdvdHRlbiB0byBwYXNzIGFuIGFyZ3VtZW50IHRvIHRoZSB0
eXBlIGNoZWNrZXIgJyArICdjcmVhdG9yIChhcnJheU9mLCBpbnN0YW5jZU9mLCBvYmplY3RPZiwg
b25lT2YsIG9uZU9mVHlwZSwgYW5kICcgKyAnc2hhcGUgYWxsIHJlcXVpcmUgYW4gYXJndW1lbnQp
LicsIGNvbXBvbmVudE5hbWUgfHwgJ1JlYWN0IGNsYXNzJywgbG9jYXRpb24sIHR5cGVTcGVjTmFt
ZSwgdHlwZW9mIGVycm9yKTtcbiAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IgJiYg
IShlcnJvci5tZXNzYWdlIGluIGxvZ2dlZFR5cGVGYWlsdXJlcykpIHtcbiAgICAgICAgICAvLyBP
bmx5IG1vbml0b3IgdGhpcyBmYWlsdXJlIG9uY2UgYmVjYXVzZSB0aGVyZSB0ZW5kcyB0byBiZSBh
IGxvdCBvZiB0aGVcbiAgICAgICAgICAvLyBzYW1lIGVycm9yLlxuICAgICAgICAgIGxvZ2dlZFR5
cGVGYWlsdXJlc1tlcnJvci5tZXNzYWdlXSA9IHRydWU7XG5cbiAgICAgICAgICB2YXIgc3RhY2sg
PSBnZXRTdGFjayA/IGdldFN0YWNrKCkgOiAnJztcblxuICAgICAgICAgIHdhcm5pbmcoZmFsc2Us
ICdGYWlsZWQgJXMgdHlwZTogJXMlcycsIGxvY2F0aW9uLCBlcnJvci5tZXNzYWdlLCBzdGFjayAh
PSBudWxsID8gc3RhY2sgOiAnJyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1c
blxubW9kdWxlLmV4cG9ydHMgPSBjaGVja1Byb3BUeXBlcztcblxuXG5cbi8qKioqKioqKioqKioq
KioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3Byb3AtdHlwZXMvY2hlY2tQcm9wVHlw
ZXMuanNcbiAqKiBtb2R1bGUgaWQgPSAxMjBcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIs
Ii8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRl
ciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4g
dGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3Jh
bnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUg
aW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIGVtcHR5
RnVuY3Rpb24gPSByZXF1aXJlKCdmYmpzL2xpYi9lbXB0eUZ1bmN0aW9uJyk7XG52YXIgaW52YXJp
YW50ID0gcmVxdWlyZSgnZmJqcy9saWIvaW52YXJpYW50Jyk7XG52YXIgUmVhY3RQcm9wVHlwZXNT
ZWNyZXQgPSByZXF1aXJlKCcuL2xpYi9SZWFjdFByb3BUeXBlc1NlY3JldCcpO1xuXG5tb2R1bGUu
ZXhwb3J0cyA9IGZ1bmN0aW9uKCkge1xuICBmdW5jdGlvbiBzaGltKHByb3BzLCBwcm9wTmFtZSwg
Y29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSwgc2VjcmV0KSB7XG4gICAgaWYg
KHNlY3JldCA9PT0gUmVhY3RQcm9wVHlwZXNTZWNyZXQpIHtcbiAgICAgIC8vIEl0IGlzIHN0aWxs
IHNhZmUgd2hlbiBjYWxsZWQgZnJvbSBSZWFjdC5cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAg
aW52YXJpYW50KFxuICAgICAgZmFsc2UsXG4gICAgICAnQ2FsbGluZyBQcm9wVHlwZXMgdmFsaWRh
dG9ycyBkaXJlY3RseSBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBgcHJvcC10eXBlc2AgcGFja2Fn
ZS4gJyArXG4gICAgICAnVXNlIFByb3BUeXBlcy5jaGVja1Byb3BUeXBlcygpIHRvIGNhbGwgdGhl
bS4gJyArXG4gICAgICAnUmVhZCBtb3JlIGF0IGh0dHA6Ly9mYi5tZS91c2UtY2hlY2stcHJvcC10
eXBlcydcbiAgICApO1xuICB9O1xuICBzaGltLmlzUmVxdWlyZWQgPSBzaGltO1xuICBmdW5jdGlv
biBnZXRTaGltKCkge1xuICAgIHJldHVybiBzaGltO1xuICB9O1xuICAvLyBJbXBvcnRhbnQhXG4g
IC8vIEtlZXAgdGhpcyBsaXN0IGluIHN5bmMgd2l0aCBwcm9kdWN0aW9uIHZlcnNpb24gaW4gYC4v
ZmFjdG9yeVdpdGhUeXBlQ2hlY2tlcnMuanNgLlxuICB2YXIgUmVhY3RQcm9wVHlwZXMgPSB7XG4g
ICAgYXJyYXk6IHNoaW0sXG4gICAgYm9vbDogc2hpbSxcbiAgICBmdW5jOiBzaGltLFxuICAgIG51
bWJlcjogc2hpbSxcbiAgICBvYmplY3Q6IHNoaW0sXG4gICAgc3RyaW5nOiBzaGltLFxuICAgIHN5
bWJvbDogc2hpbSxcblxuICAgIGFueTogc2hpbSxcbiAgICBhcnJheU9mOiBnZXRTaGltLFxuICAg
IGVsZW1lbnQ6IHNoaW0sXG4gICAgaW5zdGFuY2VPZjogZ2V0U2hpbSxcbiAgICBub2RlOiBzaGlt
LFxuICAgIG9iamVjdE9mOiBnZXRTaGltLFxuICAgIG9uZU9mOiBnZXRTaGltLFxuICAgIG9uZU9m
VHlwZTogZ2V0U2hpbSxcbiAgICBzaGFwZTogZ2V0U2hpbVxuICB9O1xuXG4gIFJlYWN0UHJvcFR5
cGVzLmNoZWNrUHJvcFR5cGVzID0gZW1wdHlGdW5jdGlvbjtcbiAgUmVhY3RQcm9wVHlwZXMuUHJv
cFR5cGVzID0gUmVhY3RQcm9wVHlwZXM7XG5cbiAgcmV0dXJuIFJlYWN0UHJvcFR5cGVzO1xufTtc
blxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3By
b3AtdHlwZXMvZmFjdG9yeVdpdGhUaHJvd2luZ1NoaW1zLmpzXG4gKiogbW9kdWxlIGlkID0gMTIx
XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLXBy
ZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRo
aXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZv
dW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlz
IHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNh
biBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAq
L1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBlbXB0eUZ1bmN0aW9uID0gcmVxdWlyZSgnZmJqcy9s
aWIvZW1wdHlGdW5jdGlvbicpO1xudmFyIGludmFyaWFudCA9IHJlcXVpcmUoJ2ZianMvbGliL2lu
dmFyaWFudCcpO1xudmFyIHdhcm5pbmcgPSByZXF1aXJlKCdmYmpzL2xpYi93YXJuaW5nJyk7XG5c
bnZhciBSZWFjdFByb3BUeXBlc1NlY3JldCA9IHJlcXVpcmUoJy4vbGliL1JlYWN0UHJvcFR5cGVz
U2VjcmV0Jyk7XG52YXIgY2hlY2tQcm9wVHlwZXMgPSByZXF1aXJlKCcuL2NoZWNrUHJvcFR5cGVz
Jyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaXNWYWxpZEVsZW1lbnQsIHRocm93T25E
aXJlY3RBY2Nlc3MpIHtcbiAgLyogZ2xvYmFsIFN5bWJvbCAqL1xuICB2YXIgSVRFUkFUT1JfU1lN
Qk9MID0gdHlwZW9mIFN5bWJvbCA9PT0gJ2Z1bmN0aW9uJyAmJiBTeW1ib2wuaXRlcmF0b3I7XG4g
IHZhciBGQVVYX0lURVJBVE9SX1NZTUJPTCA9ICdAQGl0ZXJhdG9yJzsgLy8gQmVmb3JlIFN5bWJv
bCBzcGVjLlxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBpdGVyYXRvciBtZXRob2QgZnVuY3Rp
b24gY29udGFpbmVkIG9uIHRoZSBpdGVyYWJsZSBvYmplY3QuXG4gICAqXG4gICAqIEJlIHN1cmUg
dG8gaW52b2tlIHRoZSBmdW5jdGlvbiB3aXRoIHRoZSBpdGVyYWJsZSBhcyBjb250ZXh0OlxuICAg
KlxuICAgKiAgICAgdmFyIGl0ZXJhdG9yRm4gPSBnZXRJdGVyYXRvckZuKG15SXRlcmFibGUpO1xu
ICAgKiAgICAgaWYgKGl0ZXJhdG9yRm4pIHtcbiAgICogICAgICAgdmFyIGl0ZXJhdG9yID0gaXRl
cmF0b3JGbi5jYWxsKG15SXRlcmFibGUpO1xuICAgKiAgICAgICAuLi5cbiAgICogICAgIH1cbiAg
ICpcbiAgICogQHBhcmFtIHs/b2JqZWN0fSBtYXliZUl0ZXJhYmxlXG4gICAqIEByZXR1cm4gez9m
dW5jdGlvbn1cbiAgICovXG4gIGZ1bmN0aW9uIGdldEl0ZXJhdG9yRm4obWF5YmVJdGVyYWJsZSkg
e1xuICAgIHZhciBpdGVyYXRvckZuID0gbWF5YmVJdGVyYWJsZSAmJiAoSVRFUkFUT1JfU1lNQk9M
ICYmIG1heWJlSXRlcmFibGVbSVRFUkFUT1JfU1lNQk9MXSB8fCBtYXliZUl0ZXJhYmxlW0ZBVVhf
SVRFUkFUT1JfU1lNQk9MXSk7XG4gICAgaWYgKHR5cGVvZiBpdGVyYXRvckZuID09PSAnZnVuY3Rp
b24nKSB7XG4gICAgICByZXR1cm4gaXRlcmF0b3JGbjtcbiAgICB9XG4gIH1cblxuICAvKipcbiAg
ICogQ29sbGVjdGlvbiBvZiBtZXRob2RzIHRoYXQgYWxsb3cgZGVjbGFyYXRpb24gYW5kIHZhbGlk
YXRpb24gb2YgcHJvcHMgdGhhdCBhcmVcbiAgICogc3VwcGxpZWQgdG8gUmVhY3QgY29tcG9uZW50
cy4gRXhhbXBsZSB1c2FnZTpcbiAgICpcbiAgICogICB2YXIgUHJvcHMgPSByZXF1aXJlKCdSZWFj
dFByb3BUeXBlcycpO1xuICAgKiAgIHZhciBNeUFydGljbGUgPSBSZWFjdC5jcmVhdGVDbGFzcyh7
XG4gICAqICAgICBwcm9wVHlwZXM6IHtcbiAgICogICAgICAgLy8gQW4gb3B0aW9uYWwgc3RyaW5n
IHByb3AgbmFtZWQgXCJkZXNjcmlwdGlvblwiLlxuICAgKiAgICAgICBkZXNjcmlwdGlvbjogUHJv
cHMuc3RyaW5nLFxuICAgKlxuICAgKiAgICAgICAvLyBBIHJlcXVpcmVkIGVudW0gcHJvcCBuYW1l
ZCBcImNhdGVnb3J5XCIuXG4gICAqICAgICAgIGNhdGVnb3J5OiBQcm9wcy5vbmVPZihbJ05ld3Mn
LCdQaG90b3MnXSkuaXNSZXF1aXJlZCxcbiAgICpcbiAgICogICAgICAgLy8gQSBwcm9wIG5hbWVk
IFwiZGlhbG9nXCIgdGhhdCByZXF1aXJlcyBhbiBpbnN0YW5jZSBvZiBEaWFsb2cuXG4gICAqICAg
ICAgIGRpYWxvZzogUHJvcHMuaW5zdGFuY2VPZihEaWFsb2cpLmlzUmVxdWlyZWRcbiAgICogICAg
IH0sXG4gICAqICAgICByZW5kZXI6IGZ1bmN0aW9uKCkgeyAuLi4gfVxuICAgKiAgIH0pO1xuICAg
KlxuICAgKiBBIG1vcmUgZm9ybWFsIHNwZWNpZmljYXRpb24gb2YgaG93IHRoZXNlIG1ldGhvZHMg
YXJlIHVzZWQ6XG4gICAqXG4gICAqICAgdHlwZSA6PSBhcnJheXxib29sfGZ1bmN8b2JqZWN0fG51
bWJlcnxzdHJpbmd8b25lT2YoWy4uLl0pfGluc3RhbmNlT2YoLi4uKVxuICAgKiAgIGRlY2wgOj0g
UmVhY3RQcm9wVHlwZXMue3R5cGV9KC5pc1JlcXVpcmVkKT9cbiAgICpcbiAgICogRWFjaCBhbmQg
ZXZlcnkgZGVjbGFyYXRpb24gcHJvZHVjZXMgYSBmdW5jdGlvbiB3aXRoIHRoZSBzYW1lIHNpZ25h
dHVyZS4gVGhpc1xuICAgKiBhbGxvd3MgdGhlIGNyZWF0aW9uIG9mIGN1c3RvbSB2YWxpZGF0aW9u
IGZ1bmN0aW9ucy4gRm9yIGV4YW1wbGU6XG4gICAqXG4gICAqICB2YXIgTXlMaW5rID0gUmVhY3Qu
Y3JlYXRlQ2xhc3Moe1xuICAgKiAgICBwcm9wVHlwZXM6IHtcbiAgICogICAgICAvLyBBbiBvcHRp
b25hbCBzdHJpbmcgb3IgVVJJIHByb3AgbmFtZWQgXCJocmVmXCIuXG4gICAqICAgICAgaHJlZjog
ZnVuY3Rpb24ocHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1lKSB7XG4gICAqICAgICAgICB2
YXIgcHJvcFZhbHVlID0gcHJvcHNbcHJvcE5hbWVdO1xuICAgKiAgICAgICAgaWYgKHByb3BWYWx1
ZSAhPSBudWxsICYmIHR5cGVvZiBwcm9wVmFsdWUgIT09ICdzdHJpbmcnICYmXG4gICAqICAgICAg
ICAgICAgIShwcm9wVmFsdWUgaW5zdGFuY2VvZiBVUkkpKSB7XG4gICAqICAgICAgICAgIHJldHVy
biBuZXcgRXJyb3IoXG4gICAqICAgICAgICAgICAgJ0V4cGVjdGVkIGEgc3RyaW5nIG9yIGFuIFVS
SSBmb3IgJyArIHByb3BOYW1lICsgJyBpbiAnICtcbiAgICogICAgICAgICAgICBjb21wb25lbnRO
YW1lXG4gICAqICAgICAgICAgICk7XG4gICAqICAgICAgICB9XG4gICAqICAgICAgfVxuICAgKiAg
ICB9LFxuICAgKiAgICByZW5kZXI6IGZ1bmN0aW9uKCkgey4uLn1cbiAgICogIH0pO1xuICAgKlxu
ICAgKiBAaW50ZXJuYWxcbiAgICovXG5cbiAgdmFyIEFOT05ZTU9VUyA9ICc8PGFub255bW91cz4+
JztcblxuICAvLyBJbXBvcnRhbnQhXG4gIC8vIEtlZXAgdGhpcyBsaXN0IGluIHN5bmMgd2l0aCBw
cm9kdWN0aW9uIHZlcnNpb24gaW4gYC4vZmFjdG9yeVdpdGhUaHJvd2luZ1NoaW1zLmpzYC5cbiAg
dmFyIFJlYWN0UHJvcFR5cGVzID0ge1xuICAgIGFycmF5OiBjcmVhdGVQcmltaXRpdmVUeXBlQ2hl
Y2tlcignYXJyYXknKSxcbiAgICBib29sOiBjcmVhdGVQcmltaXRpdmVUeXBlQ2hlY2tlcignYm9v
bGVhbicpLFxuICAgIGZ1bmM6IGNyZWF0ZVByaW1pdGl2ZVR5cGVDaGVja2VyKCdmdW5jdGlvbicp
LFxuICAgIG51bWJlcjogY3JlYXRlUHJpbWl0aXZlVHlwZUNoZWNrZXIoJ251bWJlcicpLFxuICAg
IG9iamVjdDogY3JlYXRlUHJpbWl0aXZlVHlwZUNoZWNrZXIoJ29iamVjdCcpLFxuICAgIHN0cmlu
ZzogY3JlYXRlUHJpbWl0aXZlVHlwZUNoZWNrZXIoJ3N0cmluZycpLFxuICAgIHN5bWJvbDogY3Jl
YXRlUHJpbWl0aXZlVHlwZUNoZWNrZXIoJ3N5bWJvbCcpLFxuXG4gICAgYW55OiBjcmVhdGVBbnlU
eXBlQ2hlY2tlcigpLFxuICAgIGFycmF5T2Y6IGNyZWF0ZUFycmF5T2ZUeXBlQ2hlY2tlcixcbiAg
ICBlbGVtZW50OiBjcmVhdGVFbGVtZW50VHlwZUNoZWNrZXIoKSxcbiAgICBpbnN0YW5jZU9mOiBj
cmVhdGVJbnN0YW5jZVR5cGVDaGVja2VyLFxuICAgIG5vZGU6IGNyZWF0ZU5vZGVDaGVja2VyKCks
XG4gICAgb2JqZWN0T2Y6IGNyZWF0ZU9iamVjdE9mVHlwZUNoZWNrZXIsXG4gICAgb25lT2Y6IGNy
ZWF0ZUVudW1UeXBlQ2hlY2tlcixcbiAgICBvbmVPZlR5cGU6IGNyZWF0ZVVuaW9uVHlwZUNoZWNr
ZXIsXG4gICAgc2hhcGU6IGNyZWF0ZVNoYXBlVHlwZUNoZWNrZXJcbiAgfTtcblxuICAvKipcbiAg
ICogaW5saW5lZCBPYmplY3QuaXMgcG9seWZpbGwgdG8gYXZvaWQgcmVxdWlyaW5nIGNvbnN1bWVy
cyBzaGlwIHRoZWlyIG93blxuICAgKiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1V
Uy9kb2NzL1dlYi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9HbG9iYWxfT2JqZWN0cy9PYmplY3QvaXNc
biAgICovXG4gIC8qZXNsaW50LWRpc2FibGUgbm8tc2VsZi1jb21wYXJlKi9cbiAgZnVuY3Rpb24g
aXMoeCwgeSkge1xuICAgIC8vIFNhbWVWYWx1ZSBhbGdvcml0aG1cbiAgICBpZiAoeCA9PT0geSkg
e1xuICAgICAgLy8gU3RlcHMgMS01LCA3LTEwXG4gICAgICAvLyBTdGVwcyA2LmItNi5lOiArMCAh
PSAtMFxuICAgICAgcmV0dXJuIHggIT09IDAgfHwgMSAvIHggPT09IDEgLyB5O1xuICAgIH0gZWxz
ZSB7XG4gICAgICAvLyBTdGVwIDYuYTogTmFOID09IE5hTlxuICAgICAgcmV0dXJuIHggIT09IHgg
JiYgeSAhPT0geTtcbiAgICB9XG4gIH1cbiAgLyplc2xpbnQtZW5hYmxlIG5vLXNlbGYtY29tcGFy
ZSovXG5cbiAgLyoqXG4gICAqIFdlIHVzZSBhbiBFcnJvci1saWtlIG9iamVjdCBmb3IgYmFja3dh
cmQgY29tcGF0aWJpbGl0eSBhcyBwZW9wbGUgbWF5IGNhbGxcbiAgICogUHJvcFR5cGVzIGRpcmVj
dGx5IGFuZCBpbnNwZWN0IHRoZWlyIG91dHB1dC4gSG93ZXZlciwgd2UgZG9uJ3QgdXNlIHJlYWxc
biAgICogRXJyb3JzIGFueW1vcmUuIFdlIGRvbid0IGluc3BlY3QgdGhlaXIgc3RhY2sgYW55d2F5
LCBhbmQgY3JlYXRpbmcgdGhlbVxuICAgKiBpcyBwcm9oaWJpdGl2ZWx5IGV4cGVuc2l2ZSBpZiB0
aGV5IGFyZSBjcmVhdGVkIHRvbyBvZnRlbiwgc3VjaCBhcyB3aGF0XG4gICAqIGhhcHBlbnMgaW4g
b25lT2ZUeXBlKCkgZm9yIGFueSB0eXBlIGJlZm9yZSB0aGUgb25lIHRoYXQgbWF0Y2hlZC5cbiAg
ICovXG4gIGZ1bmN0aW9uIFByb3BUeXBlRXJyb3IobWVzc2FnZSkge1xuICAgIHRoaXMubWVzc2Fn
ZSA9IG1lc3NhZ2U7XG4gICAgdGhpcy5zdGFjayA9ICcnO1xuICB9XG4gIC8vIE1ha2UgYGluc3Rh
bmNlb2YgRXJyb3JgIHN0aWxsIHdvcmsgZm9yIHJldHVybmVkIGVycm9ycy5cbiAgUHJvcFR5cGVF
cnJvci5wcm90b3R5cGUgPSBFcnJvci5wcm90b3R5cGU7XG5cbiAgZnVuY3Rpb24gY3JlYXRlQ2hh
aW5hYmxlVHlwZUNoZWNrZXIodmFsaWRhdGUpIHtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9F
TlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgdmFyIG1hbnVhbFByb3BUeXBlQ2FsbENhY2hl
ID0ge307XG4gICAgICB2YXIgbWFudWFsUHJvcFR5cGVXYXJuaW5nQ291bnQgPSAwO1xuICAgIH1c
biAgICBmdW5jdGlvbiBjaGVja1R5cGUoaXNSZXF1aXJlZCwgcHJvcHMsIHByb3BOYW1lLCBjb21w
b25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lLCBzZWNyZXQpIHtcbiAgICAgIGNvbXBv
bmVudE5hbWUgPSBjb21wb25lbnROYW1lIHx8IEFOT05ZTU9VUztcbiAgICAgIHByb3BGdWxsTmFt
ZSA9IHByb3BGdWxsTmFtZSB8fCBwcm9wTmFtZTtcblxuICAgICAgaWYgKHNlY3JldCAhPT0gUmVh
Y3RQcm9wVHlwZXNTZWNyZXQpIHtcbiAgICAgICAgaWYgKHRocm93T25EaXJlY3RBY2Nlc3MpIHtc
biAgICAgICAgICAvLyBOZXcgYmVoYXZpb3Igb25seSBmb3IgdXNlcnMgb2YgYHByb3AtdHlwZXNg
IHBhY2thZ2VcbiAgICAgICAgICBpbnZhcmlhbnQoXG4gICAgICAgICAgICBmYWxzZSxcbiAgICAg
ICAgICAgICdDYWxsaW5nIFByb3BUeXBlcyB2YWxpZGF0b3JzIGRpcmVjdGx5IGlzIG5vdCBzdXBw
b3J0ZWQgYnkgdGhlIGBwcm9wLXR5cGVzYCBwYWNrYWdlLiAnICtcbiAgICAgICAgICAgICdVc2Ug
YFByb3BUeXBlcy5jaGVja1Byb3BUeXBlcygpYCB0byBjYWxsIHRoZW0uICcgK1xuICAgICAgICAg
ICAgJ1JlYWQgbW9yZSBhdCBodHRwOi8vZmIubWUvdXNlLWNoZWNrLXByb3AtdHlwZXMnXG4gICAg
ICAgICAgKTtcbiAgICAgICAgfSBlbHNlIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3By
b2R1Y3Rpb24nICYmIHR5cGVvZiBjb25zb2xlICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAg
IC8vIE9sZCBiZWhhdmlvciBmb3IgcGVvcGxlIHVzaW5nIFJlYWN0LlByb3BUeXBlc1xuICAgICAg
ICAgIHZhciBjYWNoZUtleSA9IGNvbXBvbmVudE5hbWUgKyAnOicgKyBwcm9wTmFtZTtcbiAgICAg
ICAgICBpZiAoXG4gICAgICAgICAgICAhbWFudWFsUHJvcFR5cGVDYWxsQ2FjaGVbY2FjaGVLZXld
ICYmXG4gICAgICAgICAgICAvLyBBdm9pZCBzcGFtbWluZyB0aGUgY29uc29sZSBiZWNhdXNlIHRo
ZXkgYXJlIG9mdGVuIG5vdCBhY3Rpb25hYmxlIGV4Y2VwdCBmb3IgbGliIGF1dGhvcnNcbiAgICAg
ICAgICAgIG1hbnVhbFByb3BUeXBlV2FybmluZ0NvdW50IDwgM1xuICAgICAgICAgICkge1xuICAg
ICAgICAgICAgd2FybmluZyhcbiAgICAgICAgICAgICAgZmFsc2UsXG4gICAgICAgICAgICAgICdZ
b3UgYXJlIG1hbnVhbGx5IGNhbGxpbmcgYSBSZWFjdC5Qcm9wVHlwZXMgdmFsaWRhdGlvbiAnICtc
biAgICAgICAgICAgICAgJ2Z1bmN0aW9uIGZvciB0aGUgYCVzYCBwcm9wIG9uIGAlc2AuIFRoaXMg
aXMgZGVwcmVjYXRlZCAnICtcbiAgICAgICAgICAgICAgJ2FuZCB3aWxsIHRocm93IGluIHRoZSBz
dGFuZGFsb25lIGBwcm9wLXR5cGVzYCBwYWNrYWdlLiAnICtcbiAgICAgICAgICAgICAgJ1lvdSBt
YXkgYmUgc2VlaW5nIHRoaXMgd2FybmluZyBkdWUgdG8gYSB0aGlyZC1wYXJ0eSBQcm9wVHlwZXMg
JyArXG4gICAgICAgICAgICAgICdsaWJyYXJ5LiBTZWUgaHR0cHM6Ly9mYi5tZS9yZWFjdC13YXJu
aW5nLWRvbnQtY2FsbC1wcm9wdHlwZXMgJyArICdmb3IgZGV0YWlscy4nLFxuICAgICAgICAgICAg
ICBwcm9wRnVsbE5hbWUsXG4gICAgICAgICAgICAgIGNvbXBvbmVudE5hbWVcbiAgICAgICAgICAg
ICk7XG4gICAgICAgICAgICBtYW51YWxQcm9wVHlwZUNhbGxDYWNoZVtjYWNoZUtleV0gPSB0cnVl
O1xuICAgICAgICAgICAgbWFudWFsUHJvcFR5cGVXYXJuaW5nQ291bnQrKztcbiAgICAgICAgICB9
XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChwcm9wc1twcm9wTmFtZV0gPT0gbnVsbCkg
e1xuICAgICAgICBpZiAoaXNSZXF1aXJlZCkge1xuICAgICAgICAgIGlmIChwcm9wc1twcm9wTmFt
ZV0gPT09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgUHJvcFR5cGVFcnJvcignVGhl
ICcgKyBsb2NhdGlvbiArICcgYCcgKyBwcm9wRnVsbE5hbWUgKyAnYCBpcyBtYXJrZWQgYXMgcmVx
dWlyZWQgJyArICgnaW4gYCcgKyBjb21wb25lbnROYW1lICsgJ2AsIGJ1dCBpdHMgdmFsdWUgaXMg
YG51bGxgLicpKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIG5ldyBQcm9wVHlwZUVy
cm9yKCdUaGUgJyArIGxvY2F0aW9uICsgJyBgJyArIHByb3BGdWxsTmFtZSArICdgIGlzIG1hcmtl
ZCBhcyByZXF1aXJlZCBpbiAnICsgKCdgJyArIGNvbXBvbmVudE5hbWUgKyAnYCwgYnV0IGl0cyB2
YWx1ZSBpcyBgdW5kZWZpbmVkYC4nKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7
XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdmFsaWRhdGUocHJvcHMsIHByb3BOYW1l
LCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lKTtcbiAgICAgIH1cbiAgICB9
XG5cbiAgICB2YXIgY2hhaW5lZENoZWNrVHlwZSA9IGNoZWNrVHlwZS5iaW5kKG51bGwsIGZhbHNl
KTtcbiAgICBjaGFpbmVkQ2hlY2tUeXBlLmlzUmVxdWlyZWQgPSBjaGVja1R5cGUuYmluZChudWxs
LCB0cnVlKTtcblxuICAgIHJldHVybiBjaGFpbmVkQ2hlY2tUeXBlO1xuICB9XG5cbiAgZnVuY3Rp
b24gY3JlYXRlUHJpbWl0aXZlVHlwZUNoZWNrZXIoZXhwZWN0ZWRUeXBlKSB7XG4gICAgZnVuY3Rp
b24gdmFsaWRhdGUocHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJv
cEZ1bGxOYW1lLCBzZWNyZXQpIHtcbiAgICAgIHZhciBwcm9wVmFsdWUgPSBwcm9wc1twcm9wTmFt
ZV07XG4gICAgICB2YXIgcHJvcFR5cGUgPSBnZXRQcm9wVHlwZShwcm9wVmFsdWUpO1xuICAgICAg
aWYgKHByb3BUeXBlICE9PSBleHBlY3RlZFR5cGUpIHtcbiAgICAgICAgLy8gYHByb3BWYWx1ZWAg
YmVpbmcgaW5zdGFuY2Ugb2YsIHNheSwgZGF0ZS9yZWdleHAsIHBhc3MgdGhlICdvYmplY3QnXG4g
ICAgICAgIC8vIGNoZWNrLCBidXQgd2UgY2FuIG9mZmVyIGEgbW9yZSBwcmVjaXNlIGVycm9yIG1l
c3NhZ2UgaGVyZSByYXRoZXIgdGhhblxuICAgICAgICAvLyAnb2YgdHlwZSBgb2JqZWN0YCcuXG4g
ICAgICAgIHZhciBwcmVjaXNlVHlwZSA9IGdldFByZWNpc2VUeXBlKHByb3BWYWx1ZSk7XG5cbiAg
ICAgICAgcmV0dXJuIG5ldyBQcm9wVHlwZUVycm9yKCdJbnZhbGlkICcgKyBsb2NhdGlvbiArICcg
YCcgKyBwcm9wRnVsbE5hbWUgKyAnYCBvZiB0eXBlICcgKyAoJ2AnICsgcHJlY2lzZVR5cGUgKyAn
YCBzdXBwbGllZCB0byBgJyArIGNvbXBvbmVudE5hbWUgKyAnYCwgZXhwZWN0ZWQgJykgKyAoJ2An
ICsgZXhwZWN0ZWRUeXBlICsgJ2AuJykpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG51bGw7XG4g
ICAgfVxuICAgIHJldHVybiBjcmVhdGVDaGFpbmFibGVUeXBlQ2hlY2tlcih2YWxpZGF0ZSk7XG4g
IH1cblxuICBmdW5jdGlvbiBjcmVhdGVBbnlUeXBlQ2hlY2tlcigpIHtcbiAgICByZXR1cm4gY3Jl
YXRlQ2hhaW5hYmxlVHlwZUNoZWNrZXIoZW1wdHlGdW5jdGlvbi50aGF0UmV0dXJuc051bGwpO1xu
ICB9XG5cbiAgZnVuY3Rpb24gY3JlYXRlQXJyYXlPZlR5cGVDaGVja2VyKHR5cGVDaGVja2VyKSB7
XG4gICAgZnVuY3Rpb24gdmFsaWRhdGUocHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1lLCBs
b2NhdGlvbiwgcHJvcEZ1bGxOYW1lKSB7XG4gICAgICBpZiAodHlwZW9mIHR5cGVDaGVja2VyICE9
PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvcFR5cGVFcnJvcignUHJvcGVy
dHkgYCcgKyBwcm9wRnVsbE5hbWUgKyAnYCBvZiBjb21wb25lbnQgYCcgKyBjb21wb25lbnROYW1l
ICsgJ2AgaGFzIGludmFsaWQgUHJvcFR5cGUgbm90YXRpb24gaW5zaWRlIGFycmF5T2YuJyk7XG4g
ICAgICB9XG4gICAgICB2YXIgcHJvcFZhbHVlID0gcHJvcHNbcHJvcE5hbWVdO1xuICAgICAgaWYg
KCFBcnJheS5pc0FycmF5KHByb3BWYWx1ZSkpIHtcbiAgICAgICAgdmFyIHByb3BUeXBlID0gZ2V0
UHJvcFR5cGUocHJvcFZhbHVlKTtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9wVHlwZUVycm9yKCdJ
bnZhbGlkICcgKyBsb2NhdGlvbiArICcgYCcgKyBwcm9wRnVsbE5hbWUgKyAnYCBvZiB0eXBlICcg
KyAoJ2AnICsgcHJvcFR5cGUgKyAnYCBzdXBwbGllZCB0byBgJyArIGNvbXBvbmVudE5hbWUgKyAn
YCwgZXhwZWN0ZWQgYW4gYXJyYXkuJykpO1xuICAgICAgfVxuICAgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCBwcm9wVmFsdWUubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIGVycm9yID0gdHlwZUNo
ZWNrZXIocHJvcFZhbHVlLCBpLCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1l
ICsgJ1snICsgaSArICddJywgUmVhY3RQcm9wVHlwZXNTZWNyZXQpO1xuICAgICAgICBpZiAoZXJy
b3IgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgICAgIHJldHVybiBlcnJvcjtcbiAgICAgICAg
fVxuICAgICAgfVxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJldHVybiBjcmVhdGVD
aGFpbmFibGVUeXBlQ2hlY2tlcih2YWxpZGF0ZSk7XG4gIH1cblxuICBmdW5jdGlvbiBjcmVhdGVF
bGVtZW50VHlwZUNoZWNrZXIoKSB7XG4gICAgZnVuY3Rpb24gdmFsaWRhdGUocHJvcHMsIHByb3BO
YW1lLCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lKSB7XG4gICAgICB2YXIg
cHJvcFZhbHVlID0gcHJvcHNbcHJvcE5hbWVdO1xuICAgICAgaWYgKCFpc1ZhbGlkRWxlbWVudChw
cm9wVmFsdWUpKSB7XG4gICAgICAgIHZhciBwcm9wVHlwZSA9IGdldFByb3BUeXBlKHByb3BWYWx1
ZSk7XG4gICAgICAgIHJldHVybiBuZXcgUHJvcFR5cGVFcnJvcignSW52YWxpZCAnICsgbG9jYXRp
b24gKyAnIGAnICsgcHJvcEZ1bGxOYW1lICsgJ2Agb2YgdHlwZSAnICsgKCdgJyArIHByb3BUeXBl
ICsgJ2Agc3VwcGxpZWQgdG8gYCcgKyBjb21wb25lbnROYW1lICsgJ2AsIGV4cGVjdGVkIGEgc2lu
Z2xlIFJlYWN0RWxlbWVudC4nKSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9
XG4gICAgcmV0dXJuIGNyZWF0ZUNoYWluYWJsZVR5cGVDaGVja2VyKHZhbGlkYXRlKTtcbiAgfVxu
XG4gIGZ1bmN0aW9uIGNyZWF0ZUluc3RhbmNlVHlwZUNoZWNrZXIoZXhwZWN0ZWRDbGFzcykge1xu
ICAgIGZ1bmN0aW9uIHZhbGlkYXRlKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9j
YXRpb24sIHByb3BGdWxsTmFtZSkge1xuICAgICAgaWYgKCEocHJvcHNbcHJvcE5hbWVdIGluc3Rh
bmNlb2YgZXhwZWN0ZWRDbGFzcykpIHtcbiAgICAgICAgdmFyIGV4cGVjdGVkQ2xhc3NOYW1lID0g
ZXhwZWN0ZWRDbGFzcy5uYW1lIHx8IEFOT05ZTU9VUztcbiAgICAgICAgdmFyIGFjdHVhbENsYXNz
TmFtZSA9IGdldENsYXNzTmFtZShwcm9wc1twcm9wTmFtZV0pO1xuICAgICAgICByZXR1cm4gbmV3
IFByb3BUeXBlRXJyb3IoJ0ludmFsaWQgJyArIGxvY2F0aW9uICsgJyBgJyArIHByb3BGdWxsTmFt
ZSArICdgIG9mIHR5cGUgJyArICgnYCcgKyBhY3R1YWxDbGFzc05hbWUgKyAnYCBzdXBwbGllZCB0
byBgJyArIGNvbXBvbmVudE5hbWUgKyAnYCwgZXhwZWN0ZWQgJykgKyAoJ2luc3RhbmNlIG9mIGAn
ICsgZXhwZWN0ZWRDbGFzc05hbWUgKyAnYC4nKSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gbnVs
bDtcbiAgICB9XG4gICAgcmV0dXJuIGNyZWF0ZUNoYWluYWJsZVR5cGVDaGVja2VyKHZhbGlkYXRl
KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNyZWF0ZUVudW1UeXBlQ2hlY2tlcihleHBlY3RlZFZhbHVl
cykge1xuICAgIGlmICghQXJyYXkuaXNBcnJheShleHBlY3RlZFZhbHVlcykpIHtcbiAgICAgIHBy
b2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnSW52
YWxpZCBhcmd1bWVudCBzdXBwbGllZCB0byBvbmVPZiwgZXhwZWN0ZWQgYW4gaW5zdGFuY2Ugb2Yg
YXJyYXkuJykgOiB2b2lkIDA7XG4gICAgICByZXR1cm4gZW1wdHlGdW5jdGlvbi50aGF0UmV0dXJu
c051bGw7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdmFsaWRhdGUocHJvcHMsIHByb3BOYW1lLCBj
b21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lKSB7XG4gICAgICB2YXIgcHJvcFZh
bHVlID0gcHJvcHNbcHJvcE5hbWVdO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBleHBlY3Rl
ZFZhbHVlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICBpZiAoaXMocHJvcFZhbHVlLCBleHBlY3Rl
ZFZhbHVlc1tpXSkpIHtcbiAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAg
fVxuXG4gICAgICB2YXIgdmFsdWVzU3RyaW5nID0gSlNPTi5zdHJpbmdpZnkoZXhwZWN0ZWRWYWx1
ZXMpO1xuICAgICAgcmV0dXJuIG5ldyBQcm9wVHlwZUVycm9yKCdJbnZhbGlkICcgKyBsb2NhdGlv
biArICcgYCcgKyBwcm9wRnVsbE5hbWUgKyAnYCBvZiB2YWx1ZSBgJyArIHByb3BWYWx1ZSArICdg
ICcgKyAoJ3N1cHBsaWVkIHRvIGAnICsgY29tcG9uZW50TmFtZSArICdgLCBleHBlY3RlZCBvbmUg
b2YgJyArIHZhbHVlc1N0cmluZyArICcuJykpO1xuICAgIH1cbiAgICByZXR1cm4gY3JlYXRlQ2hh
aW5hYmxlVHlwZUNoZWNrZXIodmFsaWRhdGUpO1xuICB9XG5cbiAgZnVuY3Rpb24gY3JlYXRlT2Jq
ZWN0T2ZUeXBlQ2hlY2tlcih0eXBlQ2hlY2tlcikge1xuICAgIGZ1bmN0aW9uIHZhbGlkYXRlKHBy
b3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSkge1xu
ICAgICAgaWYgKHR5cGVvZiB0eXBlQ2hlY2tlciAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBy
ZXR1cm4gbmV3IFByb3BUeXBlRXJyb3IoJ1Byb3BlcnR5IGAnICsgcHJvcEZ1bGxOYW1lICsgJ2Ag
b2YgY29tcG9uZW50IGAnICsgY29tcG9uZW50TmFtZSArICdgIGhhcyBpbnZhbGlkIFByb3BUeXBl
IG5vdGF0aW9uIGluc2lkZSBvYmplY3RPZi4nKTtcbiAgICAgIH1cbiAgICAgIHZhciBwcm9wVmFs
dWUgPSBwcm9wc1twcm9wTmFtZV07XG4gICAgICB2YXIgcHJvcFR5cGUgPSBnZXRQcm9wVHlwZShw
cm9wVmFsdWUpO1xuICAgICAgaWYgKHByb3BUeXBlICE9PSAnb2JqZWN0Jykge1xuICAgICAgICBy
ZXR1cm4gbmV3IFByb3BUeXBlRXJyb3IoJ0ludmFsaWQgJyArIGxvY2F0aW9uICsgJyBgJyArIHBy
b3BGdWxsTmFtZSArICdgIG9mIHR5cGUgJyArICgnYCcgKyBwcm9wVHlwZSArICdgIHN1cHBsaWVk
IHRvIGAnICsgY29tcG9uZW50TmFtZSArICdgLCBleHBlY3RlZCBhbiBvYmplY3QuJykpO1xuICAg
ICAgfVxuICAgICAgZm9yICh2YXIga2V5IGluIHByb3BWYWx1ZSkge1xuICAgICAgICBpZiAocHJv
cFZhbHVlLmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgICAgICB2YXIgZXJyb3IgPSB0eXBl
Q2hlY2tlcihwcm9wVmFsdWUsIGtleSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxs
TmFtZSArICcuJyArIGtleSwgUmVhY3RQcm9wVHlwZXNTZWNyZXQpO1xuICAgICAgICAgIGlmIChl
cnJvciBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICAgICAgICByZXR1cm4gZXJyb3I7XG4gICAg
ICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4g
ICAgcmV0dXJuIGNyZWF0ZUNoYWluYWJsZVR5cGVDaGVja2VyKHZhbGlkYXRlKTtcbiAgfVxuXG4g
IGZ1bmN0aW9uIGNyZWF0ZVVuaW9uVHlwZUNoZWNrZXIoYXJyYXlPZlR5cGVDaGVja2Vycykge1xu
ICAgIGlmICghQXJyYXkuaXNBcnJheShhcnJheU9mVHlwZUNoZWNrZXJzKSkge1xuICAgICAgcHJv
Y2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdJbnZh
bGlkIGFyZ3VtZW50IHN1cHBsaWVkIHRvIG9uZU9mVHlwZSwgZXhwZWN0ZWQgYW4gaW5zdGFuY2Ug
b2YgYXJyYXkuJykgOiB2b2lkIDA7XG4gICAgICByZXR1cm4gZW1wdHlGdW5jdGlvbi50aGF0UmV0
dXJuc051bGw7XG4gICAgfVxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcnJheU9mVHlwZUNo
ZWNrZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgY2hlY2tlciA9IGFycmF5T2ZUeXBlQ2hl
Y2tlcnNbaV07XG4gICAgICBpZiAodHlwZW9mIGNoZWNrZXIgIT09ICdmdW5jdGlvbicpIHtcbiAg
ICAgICAgd2FybmluZyhcbiAgICAgICAgICBmYWxzZSxcbiAgICAgICAgICAnSW52YWxpZCBhcmd1
bWVudCBzdXBwbGlkIHRvIG9uZU9mVHlwZS4gRXhwZWN0ZWQgYW4gYXJyYXkgb2YgY2hlY2sgZnVu
Y3Rpb25zLCBidXQgJyArXG4gICAgICAgICAgJ3JlY2VpdmVkICVzIGF0IGluZGV4ICVzLicsXG4g
ICAgICAgICAgZ2V0UG9zdGZpeEZvclR5cGVXYXJuaW5nKGNoZWNrZXIpLFxuICAgICAgICAgIGlc
biAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIGVtcHR5RnVuY3Rpb24udGhhdFJldHVybnNOdWxs
O1xuICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHZhbGlkYXRlKHByb3BzLCBwcm9wTmFt
ZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSkge1xuICAgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCBhcnJheU9mVHlwZUNoZWNrZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAg
IHZhciBjaGVja2VyID0gYXJyYXlPZlR5cGVDaGVja2Vyc1tpXTtcbiAgICAgICAgaWYgKGNoZWNr
ZXIocHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1l
LCBSZWFjdFByb3BUeXBlc1NlY3JldCkgPT0gbnVsbCkge1xuICAgICAgICAgIHJldHVybiBudWxs
O1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBuZXcgUHJvcFR5cGVFcnJvcign
SW52YWxpZCAnICsgbG9jYXRpb24gKyAnIGAnICsgcHJvcEZ1bGxOYW1lICsgJ2Agc3VwcGxpZWQg
dG8gJyArICgnYCcgKyBjb21wb25lbnROYW1lICsgJ2AuJykpO1xuICAgIH1cbiAgICByZXR1cm4g
Y3JlYXRlQ2hhaW5hYmxlVHlwZUNoZWNrZXIodmFsaWRhdGUpO1xuICB9XG5cbiAgZnVuY3Rpb24g
Y3JlYXRlTm9kZUNoZWNrZXIoKSB7XG4gICAgZnVuY3Rpb24gdmFsaWRhdGUocHJvcHMsIHByb3BO
YW1lLCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lKSB7XG4gICAgICBpZiAo
IWlzTm9kZShwcm9wc1twcm9wTmFtZV0pKSB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvcFR5cGVF
cnJvcignSW52YWxpZCAnICsgbG9jYXRpb24gKyAnIGAnICsgcHJvcEZ1bGxOYW1lICsgJ2Agc3Vw
cGxpZWQgdG8gJyArICgnYCcgKyBjb21wb25lbnROYW1lICsgJ2AsIGV4cGVjdGVkIGEgUmVhY3RO
b2RlLicpKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4g
Y3JlYXRlQ2hhaW5hYmxlVHlwZUNoZWNrZXIodmFsaWRhdGUpO1xuICB9XG5cbiAgZnVuY3Rpb24g
Y3JlYXRlU2hhcGVUeXBlQ2hlY2tlcihzaGFwZVR5cGVzKSB7XG4gICAgZnVuY3Rpb24gdmFsaWRh
dGUocHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1l
KSB7XG4gICAgICB2YXIgcHJvcFZhbHVlID0gcHJvcHNbcHJvcE5hbWVdO1xuICAgICAgdmFyIHBy
b3BUeXBlID0gZ2V0UHJvcFR5cGUocHJvcFZhbHVlKTtcbiAgICAgIGlmIChwcm9wVHlwZSAhPT0g
J29iamVjdCcpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9wVHlwZUVycm9yKCdJbnZhbGlkICcg
KyBsb2NhdGlvbiArICcgYCcgKyBwcm9wRnVsbE5hbWUgKyAnYCBvZiB0eXBlIGAnICsgcHJvcFR5
cGUgKyAnYCAnICsgKCdzdXBwbGllZCB0byBgJyArIGNvbXBvbmVudE5hbWUgKyAnYCwgZXhwZWN0
ZWQgYG9iamVjdGAuJykpO1xuICAgICAgfVxuICAgICAgZm9yICh2YXIga2V5IGluIHNoYXBlVHlw
ZXMpIHtcbiAgICAgICAgdmFyIGNoZWNrZXIgPSBzaGFwZVR5cGVzW2tleV07XG4gICAgICAgIGlm
ICghY2hlY2tlcikge1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIHZh
ciBlcnJvciA9IGNoZWNrZXIocHJvcFZhbHVlLCBrZXksIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9u
LCBwcm9wRnVsbE5hbWUgKyAnLicgKyBrZXksIFJlYWN0UHJvcFR5cGVzU2VjcmV0KTtcbiAgICAg
ICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgcmV0dXJuIGVycm9yO1xuICAgICAgICB9XG4gICAg
ICB9XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIGNyZWF0ZUNoYWluYWJs
ZVR5cGVDaGVja2VyKHZhbGlkYXRlKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGlzTm9kZShwcm9wVmFs
dWUpIHtcbiAgICBzd2l0Y2ggKHR5cGVvZiBwcm9wVmFsdWUpIHtcbiAgICAgIGNhc2UgJ251bWJl
cic6XG4gICAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgY2FzZSAndW5kZWZpbmVkJzpcbiAgICAg
ICAgcmV0dXJuIHRydWU7XG4gICAgICBjYXNlICdib29sZWFuJzpcbiAgICAgICAgcmV0dXJuICFw
cm9wVmFsdWU7XG4gICAgICBjYXNlICdvYmplY3QnOlxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJh
eShwcm9wVmFsdWUpKSB7XG4gICAgICAgICAgcmV0dXJuIHByb3BWYWx1ZS5ldmVyeShpc05vZGUp
O1xuICAgICAgICB9XG4gICAgICAgIGlmIChwcm9wVmFsdWUgPT09IG51bGwgfHwgaXNWYWxpZEVs
ZW1lbnQocHJvcFZhbHVlKSkge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG5c
biAgICAgICAgdmFyIGl0ZXJhdG9yRm4gPSBnZXRJdGVyYXRvckZuKHByb3BWYWx1ZSk7XG4gICAg
ICAgIGlmIChpdGVyYXRvckZuKSB7XG4gICAgICAgICAgdmFyIGl0ZXJhdG9yID0gaXRlcmF0b3JG
bi5jYWxsKHByb3BWYWx1ZSk7XG4gICAgICAgICAgdmFyIHN0ZXA7XG4gICAgICAgICAgaWYgKGl0
ZXJhdG9yRm4gIT09IHByb3BWYWx1ZS5lbnRyaWVzKSB7XG4gICAgICAgICAgICB3aGlsZSAoIShz
dGVwID0gaXRlcmF0b3IubmV4dCgpKS5kb25lKSB7XG4gICAgICAgICAgICAgIGlmICghaXNOb2Rl
KHN0ZXAudmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAg
ICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8v
IEl0ZXJhdG9yIHdpbGwgcHJvdmlkZSBlbnRyeSBbayx2XSB0dXBsZXMgcmF0aGVyIHRoYW4gdmFs
dWVzLlxuICAgICAgICAgICAgd2hpbGUgKCEoc3RlcCA9IGl0ZXJhdG9yLm5leHQoKSkuZG9uZSkg
e1xuICAgICAgICAgICAgICB2YXIgZW50cnkgPSBzdGVwLnZhbHVlO1xuICAgICAgICAgICAgICBp
ZiAoZW50cnkpIHtcbiAgICAgICAgICAgICAgICBpZiAoIWlzTm9kZShlbnRyeVsxXSkpIHtcbiAg
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAg
ICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4g
ICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRydWU7
XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAg
ZnVuY3Rpb24gaXNTeW1ib2wocHJvcFR5cGUsIHByb3BWYWx1ZSkge1xuICAgIC8vIE5hdGl2ZSBT
eW1ib2wuXG4gICAgaWYgKHByb3BUeXBlID09PSAnc3ltYm9sJykge1xuICAgICAgcmV0dXJuIHRy
dWU7XG4gICAgfVxuXG4gICAgLy8gMTkuNC4zLjUgU3ltYm9sLnByb3RvdHlwZVtAQHRvU3RyaW5n
VGFnXSA9PT0gJ1N5bWJvbCdcbiAgICBpZiAocHJvcFZhbHVlWydAQHRvU3RyaW5nVGFnJ10gPT09
ICdTeW1ib2wnKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICAvLyBGYWxsYmFj
ayBmb3Igbm9uLXNwZWMgY29tcGxpYW50IFN5bWJvbHMgd2hpY2ggYXJlIHBvbHlmaWxsZWQuXG4g
ICAgaWYgKHR5cGVvZiBTeW1ib2wgPT09ICdmdW5jdGlvbicgJiYgcHJvcFZhbHVlIGluc3RhbmNl
b2YgU3ltYm9sKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFs
c2U7XG4gIH1cblxuICAvLyBFcXVpdmFsZW50IG9mIGB0eXBlb2ZgIGJ1dCB3aXRoIHNwZWNpYWwg
aGFuZGxpbmcgZm9yIGFycmF5IGFuZCByZWdleHAuXG4gIGZ1bmN0aW9uIGdldFByb3BUeXBlKHBy
b3BWYWx1ZSkge1xuICAgIHZhciBwcm9wVHlwZSA9IHR5cGVvZiBwcm9wVmFsdWU7XG4gICAgaWYg
KEFycmF5LmlzQXJyYXkocHJvcFZhbHVlKSkge1xuICAgICAgcmV0dXJuICdhcnJheSc7XG4gICAg
fVxuICAgIGlmIChwcm9wVmFsdWUgaW5zdGFuY2VvZiBSZWdFeHApIHtcbiAgICAgIC8vIE9sZCB3
ZWJraXRzIChhdCBsZWFzdCB1bnRpbCBBbmRyb2lkIDQuMCkgcmV0dXJuICdmdW5jdGlvbicgcmF0
aGVyIHRoYW5cbiAgICAgIC8vICdvYmplY3QnIGZvciB0eXBlb2YgYSBSZWdFeHAuIFdlJ2xsIG5v
cm1hbGl6ZSB0aGlzIGhlcmUgc28gdGhhdCAvYmxhL1xuICAgICAgLy8gcGFzc2VzIFByb3BUeXBl
cy5vYmplY3QuXG4gICAgICByZXR1cm4gJ29iamVjdCc7XG4gICAgfVxuICAgIGlmIChpc1N5bWJv
bChwcm9wVHlwZSwgcHJvcFZhbHVlKSkge1xuICAgICAgcmV0dXJuICdzeW1ib2wnO1xuICAgIH1c
biAgICByZXR1cm4gcHJvcFR5cGU7XG4gIH1cblxuICAvLyBUaGlzIGhhbmRsZXMgbW9yZSB0eXBl
cyB0aGFuIGBnZXRQcm9wVHlwZWAuIE9ubHkgdXNlZCBmb3IgZXJyb3IgbWVzc2FnZXMuXG4gIC8v
IFNlZSBgY3JlYXRlUHJpbWl0aXZlVHlwZUNoZWNrZXJgLlxuICBmdW5jdGlvbiBnZXRQcmVjaXNl
VHlwZShwcm9wVmFsdWUpIHtcbiAgICBpZiAodHlwZW9mIHByb3BWYWx1ZSA9PT0gJ3VuZGVmaW5l
ZCcgfHwgcHJvcFZhbHVlID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gJycgKyBwcm9wVmFsdWU7
XG4gICAgfVxuICAgIHZhciBwcm9wVHlwZSA9IGdldFByb3BUeXBlKHByb3BWYWx1ZSk7XG4gICAg
aWYgKHByb3BUeXBlID09PSAnb2JqZWN0Jykge1xuICAgICAgaWYgKHByb3BWYWx1ZSBpbnN0YW5j
ZW9mIERhdGUpIHtcbiAgICAgICAgcmV0dXJuICdkYXRlJztcbiAgICAgIH0gZWxzZSBpZiAocHJv
cFZhbHVlIGluc3RhbmNlb2YgUmVnRXhwKSB7XG4gICAgICAgIHJldHVybiAncmVnZXhwJztcbiAg
ICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHByb3BUeXBlO1xuICB9XG5cbiAgLy8gUmV0dXJucyBh
IHN0cmluZyB0aGF0IGlzIHBvc3RmaXhlZCB0byBhIHdhcm5pbmcgYWJvdXQgYW4gaW52YWxpZCB0
eXBlLlxuICAvLyBGb3IgZXhhbXBsZSwgXCJ1bmRlZmluZWRcIiBvciBcIm9mIHR5cGUgYXJyYXlc
IlxuICBmdW5jdGlvbiBnZXRQb3N0Zml4Rm9yVHlwZVdhcm5pbmcodmFsdWUpIHtcbiAgICB2YXIg
dHlwZSA9IGdldFByZWNpc2VUeXBlKHZhbHVlKTtcbiAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAg
IGNhc2UgJ2FycmF5JzpcbiAgICAgIGNhc2UgJ29iamVjdCc6XG4gICAgICAgIHJldHVybiAnYW4g
JyArIHR5cGU7XG4gICAgICBjYXNlICdib29sZWFuJzpcbiAgICAgIGNhc2UgJ2RhdGUnOlxuICAg
ICAgY2FzZSAncmVnZXhwJzpcbiAgICAgICAgcmV0dXJuICdhICcgKyB0eXBlO1xuICAgICAgZGVm
YXVsdDpcbiAgICAgICAgcmV0dXJuIHR5cGU7XG4gICAgfVxuICB9XG5cbiAgLy8gUmV0dXJucyBj
bGFzcyBuYW1lIG9mIHRoZSBvYmplY3QsIGlmIGFueS5cbiAgZnVuY3Rpb24gZ2V0Q2xhc3NOYW1l
KHByb3BWYWx1ZSkge1xuICAgIGlmICghcHJvcFZhbHVlLmNvbnN0cnVjdG9yIHx8ICFwcm9wVmFs
dWUuY29uc3RydWN0b3IubmFtZSkge1xuICAgICAgcmV0dXJuIEFOT05ZTU9VUztcbiAgICB9XG4g
ICAgcmV0dXJuIHByb3BWYWx1ZS5jb25zdHJ1Y3Rvci5uYW1lO1xuICB9XG5cbiAgUmVhY3RQcm9w
VHlwZXMuY2hlY2tQcm9wVHlwZXMgPSBjaGVja1Byb3BUeXBlcztcbiAgUmVhY3RQcm9wVHlwZXMu
UHJvcFR5cGVzID0gUmVhY3RQcm9wVHlwZXM7XG5cbiAgcmV0dXJuIFJlYWN0UHJvcFR5cGVzO1xu
fTtcblxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+
L3Byb3AtdHlwZXMvZmFjdG9yeVdpdGhUeXBlQ2hlY2tlcnMuanNcbiAqKiBtb2R1bGUgaWQgPSAx
MjJcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIid1c2Ugc3RyaWN0JztcblxubW9kdWxl
LmV4cG9ydHMgPSByZXF1aXJlKCcuL2xpYi9SZWFjdERPTScpO1xuXG5cblxuLyoqKioqKioqKioq
KioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3QtZG9tL2luZGV4LmpzXG4g
KiogbW9kdWxlIGlkID0gMTIzXG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAq
IENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJl
c2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJT
RC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290
IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBv
ZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBz
YW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgQVJJQURPTVBy
b3BlcnR5Q29uZmlnID0ge1xuICBQcm9wZXJ0aWVzOiB7XG4gICAgLy8gR2xvYmFsIFN0YXRlcyBh
bmQgUHJvcGVydGllc1xuICAgICdhcmlhLWN1cnJlbnQnOiAwLCAvLyBzdGF0ZVxuICAgICdhcmlh
LWRldGFpbHMnOiAwLFxuICAgICdhcmlhLWRpc2FibGVkJzogMCwgLy8gc3RhdGVcbiAgICAnYXJp
YS1oaWRkZW4nOiAwLCAvLyBzdGF0ZVxuICAgICdhcmlhLWludmFsaWQnOiAwLCAvLyBzdGF0ZVxu
ICAgICdhcmlhLWtleXNob3J0Y3V0cyc6IDAsXG4gICAgJ2FyaWEtbGFiZWwnOiAwLFxuICAgICdh
cmlhLXJvbGVkZXNjcmlwdGlvbic6IDAsXG4gICAgLy8gV2lkZ2V0IEF0dHJpYnV0ZXNcbiAgICAn
YXJpYS1hdXRvY29tcGxldGUnOiAwLFxuICAgICdhcmlhLWNoZWNrZWQnOiAwLFxuICAgICdhcmlh
LWV4cGFuZGVkJzogMCxcbiAgICAnYXJpYS1oYXNwb3B1cCc6IDAsXG4gICAgJ2FyaWEtbGV2ZWwn
OiAwLFxuICAgICdhcmlhLW1vZGFsJzogMCxcbiAgICAnYXJpYS1tdWx0aWxpbmUnOiAwLFxuICAg
ICdhcmlhLW11bHRpc2VsZWN0YWJsZSc6IDAsXG4gICAgJ2FyaWEtb3JpZW50YXRpb24nOiAwLFxu
ICAgICdhcmlhLXBsYWNlaG9sZGVyJzogMCxcbiAgICAnYXJpYS1wcmVzc2VkJzogMCxcbiAgICAn
YXJpYS1yZWFkb25seSc6IDAsXG4gICAgJ2FyaWEtcmVxdWlyZWQnOiAwLFxuICAgICdhcmlhLXNl
bGVjdGVkJzogMCxcbiAgICAnYXJpYS1zb3J0JzogMCxcbiAgICAnYXJpYS12YWx1ZW1heCc6IDAs
XG4gICAgJ2FyaWEtdmFsdWVtaW4nOiAwLFxuICAgICdhcmlhLXZhbHVlbm93JzogMCxcbiAgICAn
YXJpYS12YWx1ZXRleHQnOiAwLFxuICAgIC8vIExpdmUgUmVnaW9uIEF0dHJpYnV0ZXNcbiAgICAn
YXJpYS1hdG9taWMnOiAwLFxuICAgICdhcmlhLWJ1c3knOiAwLFxuICAgICdhcmlhLWxpdmUnOiAw
LFxuICAgICdhcmlhLXJlbGV2YW50JzogMCxcbiAgICAvLyBEcmFnLWFuZC1Ecm9wIEF0dHJpYnV0
ZXNcbiAgICAnYXJpYS1kcm9wZWZmZWN0JzogMCxcbiAgICAnYXJpYS1ncmFiYmVkJzogMCxcbiAg
ICAvLyBSZWxhdGlvbnNoaXAgQXR0cmlidXRlc1xuICAgICdhcmlhLWFjdGl2ZWRlc2NlbmRhbnQn
OiAwLFxuICAgICdhcmlhLWNvbGNvdW50JzogMCxcbiAgICAnYXJpYS1jb2xpbmRleCc6IDAsXG4g
ICAgJ2FyaWEtY29sc3Bhbic6IDAsXG4gICAgJ2FyaWEtY29udHJvbHMnOiAwLFxuICAgICdhcmlh
LWRlc2NyaWJlZGJ5JzogMCxcbiAgICAnYXJpYS1lcnJvcm1lc3NhZ2UnOiAwLFxuICAgICdhcmlh
LWZsb3d0byc6IDAsXG4gICAgJ2FyaWEtbGFiZWxsZWRieSc6IDAsXG4gICAgJ2FyaWEtb3ducyc6
IDAsXG4gICAgJ2FyaWEtcG9zaW5zZXQnOiAwLFxuICAgICdhcmlhLXJvd2NvdW50JzogMCxcbiAg
ICAnYXJpYS1yb3dpbmRleCc6IDAsXG4gICAgJ2FyaWEtcm93c3Bhbic6IDAsXG4gICAgJ2FyaWEt
c2V0c2l6ZSc6IDBcbiAgfSxcbiAgRE9NQXR0cmlidXRlTmFtZXM6IHt9LFxuICBET01Qcm9wZXJ0
eU5hbWVzOiB7fVxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBBUklBRE9NUHJvcGVydHlDb25maWc7
XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVh
Y3QtZG9tL2xpYi9BUklBRE9NUHJvcGVydHlDb25maWcuanNcbiAqKiBtb2R1bGUgaWQgPSAxMjRc
biAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJl
c2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhp
cyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91
bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMg
c291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2Fu
IGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpc
biAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBSZWFjdERPTUNvbXBvbmVudFRyZWUgPSByZXF1
aXJlKCcuL1JlYWN0RE9NQ29tcG9uZW50VHJlZScpO1xuXG52YXIgZm9jdXNOb2RlID0gcmVxdWly
ZSgnZmJqcy9saWIvZm9jdXNOb2RlJyk7XG5cbnZhciBBdXRvRm9jdXNVdGlscyA9IHtcbiAgZm9j
dXNET01Db21wb25lbnQ6IGZ1bmN0aW9uICgpIHtcbiAgICBmb2N1c05vZGUoUmVhY3RET01Db21w
b25lbnRUcmVlLmdldE5vZGVGcm9tSW5zdGFuY2UodGhpcykpO1xuICB9XG59O1xuXG5tb2R1bGUu
ZXhwb3J0cyA9IEF1dG9Gb2N1c1V0aWxzO1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdF
QlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0LWRvbS9saWIvQXV0b0ZvY3VzVXRpbHMuanNcbiAq
KiBtb2R1bGUgaWQgPSAxMjVcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICog
Q29weXJpZ2h0IDIwMTMtcHJlc2VudCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNl
cnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qt
c3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBk
aXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2Yg
cGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2Ft
ZSBkaXJlY3RvcnkuXG4gKlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIEV2ZW50UHJvcGFn
YXRvcnMgPSByZXF1aXJlKCcuL0V2ZW50UHJvcGFnYXRvcnMnKTtcbnZhciBFeGVjdXRpb25FbnZp
cm9ubWVudCA9IHJlcXVpcmUoJ2ZianMvbGliL0V4ZWN1dGlvbkVudmlyb25tZW50Jyk7XG52YXIg
RmFsbGJhY2tDb21wb3NpdGlvblN0YXRlID0gcmVxdWlyZSgnLi9GYWxsYmFja0NvbXBvc2l0aW9u
U3RhdGUnKTtcbnZhciBTeW50aGV0aWNDb21wb3NpdGlvbkV2ZW50ID0gcmVxdWlyZSgnLi9TeW50
aGV0aWNDb21wb3NpdGlvbkV2ZW50Jyk7XG52YXIgU3ludGhldGljSW5wdXRFdmVudCA9IHJlcXVp
cmUoJy4vU3ludGhldGljSW5wdXRFdmVudCcpO1xuXG52YXIgRU5EX0tFWUNPREVTID0gWzksIDEz
LCAyNywgMzJdOyAvLyBUYWIsIFJldHVybiwgRXNjLCBTcGFjZVxudmFyIFNUQVJUX0tFWUNPREUg
PSAyMjk7XG5cbnZhciBjYW5Vc2VDb21wb3NpdGlvbkV2ZW50ID0gRXhlY3V0aW9uRW52aXJvbm1l
bnQuY2FuVXNlRE9NICYmICdDb21wb3NpdGlvbkV2ZW50JyBpbiB3aW5kb3c7XG5cbnZhciBkb2N1
bWVudE1vZGUgPSBudWxsO1xuaWYgKEV4ZWN1dGlvbkVudmlyb25tZW50LmNhblVzZURPTSAmJiAn
ZG9jdW1lbnRNb2RlJyBpbiBkb2N1bWVudCkge1xuICBkb2N1bWVudE1vZGUgPSBkb2N1bWVudC5k
b2N1bWVudE1vZGU7XG59XG5cbi8vIFdlYmtpdCBvZmZlcnMgYSB2ZXJ5IHVzZWZ1bCBgdGV4dElu
cHV0YCBldmVudCB0aGF0IGNhbiBiZSB1c2VkIHRvXG4vLyBkaXJlY3RseSByZXByZXNlbnQgYGJl
Zm9yZUlucHV0YC4gVGhlIElFIGB0ZXh0aW5wdXRgIGV2ZW50IGlzIG5vdCBhc1xuLy8gdXNlZnVs
LCBzbyB3ZSBkb24ndCB1c2UgaXQuXG52YXIgY2FuVXNlVGV4dElucHV0RXZlbnQgPSBFeGVjdXRp
b25FbnZpcm9ubWVudC5jYW5Vc2VET00gJiYgJ1RleHRFdmVudCcgaW4gd2luZG93ICYmICFkb2N1
bWVudE1vZGUgJiYgIWlzUHJlc3RvKCk7XG5cbi8vIEluIElFOSssIHdlIGhhdmUgYWNjZXNzIHRv
IGNvbXBvc2l0aW9uIGV2ZW50cywgYnV0IHRoZSBkYXRhIHN1cHBsaWVkXG4vLyBieSB0aGUgbmF0
aXZlIGNvbXBvc2l0aW9uZW5kIGV2ZW50IG1heSBiZSBpbmNvcnJlY3QuIEphcGFuZXNlIGlkZW9n
cmFwaGljXG4vLyBzcGFjZXMsIGZvciBpbnN0YW5jZSAoXFx1MzAwMCkgYXJlIG5vdCByZWNvcmRl
ZCBjb3JyZWN0bHkuXG52YXIgdXNlRmFsbGJhY2tDb21wb3NpdGlvbkRhdGEgPSBFeGVjdXRpb25F
bnZpcm9ubWVudC5jYW5Vc2VET00gJiYgKCFjYW5Vc2VDb21wb3NpdGlvbkV2ZW50IHx8IGRvY3Vt
ZW50TW9kZSAmJiBkb2N1bWVudE1vZGUgPiA4ICYmIGRvY3VtZW50TW9kZSA8PSAxMSk7XG5cbi8q
KlxuICogT3BlcmEgPD0gMTIgaW5jbHVkZXMgVGV4dEV2ZW50IGluIHdpbmRvdywgYnV0IGRvZXMg
bm90IGZpcmVcbiAqIHRleHQgaW5wdXQgZXZlbnRzLiBSZWx5IG9uIGtleXByZXNzIGluc3RlYWQu
XG4gKi9cbmZ1bmN0aW9uIGlzUHJlc3RvKCkge1xuICB2YXIgb3BlcmEgPSB3aW5kb3cub3BlcmE7
XG4gIHJldHVybiB0eXBlb2Ygb3BlcmEgPT09ICdvYmplY3QnICYmIHR5cGVvZiBvcGVyYS52ZXJz
aW9uID09PSAnZnVuY3Rpb24nICYmIHBhcnNlSW50KG9wZXJhLnZlcnNpb24oKSwgMTApIDw9IDEy
O1xufVxuXG52YXIgU1BBQ0VCQVJfQ09ERSA9IDMyO1xudmFyIFNQQUNFQkFSX0NIQVIgPSBTdHJp
bmcuZnJvbUNoYXJDb2RlKFNQQUNFQkFSX0NPREUpO1xuXG4vLyBFdmVudHMgYW5kIHRoZWlyIGNv
cnJlc3BvbmRpbmcgcHJvcGVydHkgbmFtZXMuXG52YXIgZXZlbnRUeXBlcyA9IHtcbiAgYmVmb3Jl
SW5wdXQ6IHtcbiAgICBwaGFzZWRSZWdpc3RyYXRpb25OYW1lczoge1xuICAgICAgYnViYmxlZDog
J29uQmVmb3JlSW5wdXQnLFxuICAgICAgY2FwdHVyZWQ6ICdvbkJlZm9yZUlucHV0Q2FwdHVyZSdc
biAgICB9LFxuICAgIGRlcGVuZGVuY2llczogWyd0b3BDb21wb3NpdGlvbkVuZCcsICd0b3BLZXlQ
cmVzcycsICd0b3BUZXh0SW5wdXQnLCAndG9wUGFzdGUnXVxuICB9LFxuICBjb21wb3NpdGlvbkVu
ZDoge1xuICAgIHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOiB7XG4gICAgICBidWJibGVkOiAnb25D
b21wb3NpdGlvbkVuZCcsXG4gICAgICBjYXB0dXJlZDogJ29uQ29tcG9zaXRpb25FbmRDYXB0dXJl
J1xuICAgIH0sXG4gICAgZGVwZW5kZW5jaWVzOiBbJ3RvcEJsdXInLCAndG9wQ29tcG9zaXRpb25F
bmQnLCAndG9wS2V5RG93bicsICd0b3BLZXlQcmVzcycsICd0b3BLZXlVcCcsICd0b3BNb3VzZURv
d24nXVxuICB9LFxuICBjb21wb3NpdGlvblN0YXJ0OiB7XG4gICAgcGhhc2VkUmVnaXN0cmF0aW9u
TmFtZXM6IHtcbiAgICAgIGJ1YmJsZWQ6ICdvbkNvbXBvc2l0aW9uU3RhcnQnLFxuICAgICAgY2Fw
dHVyZWQ6ICdvbkNvbXBvc2l0aW9uU3RhcnRDYXB0dXJlJ1xuICAgIH0sXG4gICAgZGVwZW5kZW5j
aWVzOiBbJ3RvcEJsdXInLCAndG9wQ29tcG9zaXRpb25TdGFydCcsICd0b3BLZXlEb3duJywgJ3Rv
cEtleVByZXNzJywgJ3RvcEtleVVwJywgJ3RvcE1vdXNlRG93biddXG4gIH0sXG4gIGNvbXBvc2l0
aW9uVXBkYXRlOiB7XG4gICAgcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6IHtcbiAgICAgIGJ1YmJs
ZWQ6ICdvbkNvbXBvc2l0aW9uVXBkYXRlJyxcbiAgICAgIGNhcHR1cmVkOiAnb25Db21wb3NpdGlv
blVwZGF0ZUNhcHR1cmUnXG4gICAgfSxcbiAgICBkZXBlbmRlbmNpZXM6IFsndG9wQmx1cicsICd0
b3BDb21wb3NpdGlvblVwZGF0ZScsICd0b3BLZXlEb3duJywgJ3RvcEtleVByZXNzJywgJ3RvcEtl
eVVwJywgJ3RvcE1vdXNlRG93biddXG4gIH1cbn07XG5cbi8vIFRyYWNrIHdoZXRoZXIgd2UndmUg
ZXZlciBoYW5kbGVkIGEga2V5cHJlc3Mgb24gdGhlIHNwYWNlIGtleS5cbnZhciBoYXNTcGFjZUtl
eXByZXNzID0gZmFsc2U7XG5cbi8qKlxuICogUmV0dXJuIHdoZXRoZXIgYSBuYXRpdmUga2V5cHJl
c3MgZXZlbnQgaXMgYXNzdW1lZCB0byBiZSBhIGNvbW1hbmQuXG4gKiBUaGlzIGlzIHJlcXVpcmVk
IGJlY2F1c2UgRmlyZWZveCBmaXJlcyBga2V5cHJlc3NgIGV2ZW50cyBmb3Iga2V5IGNvbW1hbmRz
XG4gKiAoY3V0LCBjb3B5LCBzZWxlY3QtYWxsLCBldGMuKSBldmVuIHRob3VnaCBubyBjaGFyYWN0
ZXIgaXMgaW5zZXJ0ZWQuXG4gKi9cbmZ1bmN0aW9uIGlzS2V5cHJlc3NDb21tYW5kKG5hdGl2ZUV2
ZW50KSB7XG4gIHJldHVybiAobmF0aXZlRXZlbnQuY3RybEtleSB8fCBuYXRpdmVFdmVudC5hbHRL
ZXkgfHwgbmF0aXZlRXZlbnQubWV0YUtleSkgJiZcbiAgLy8gY3RybEtleSAmJiBhbHRLZXkgaXMg
ZXF1aXZhbGVudCB0byBBbHRHciwgYW5kIGlzIG5vdCBhIGNvbW1hbmQuXG4gICEobmF0aXZlRXZl
bnQuY3RybEtleSAmJiBuYXRpdmVFdmVudC5hbHRLZXkpO1xufVxuXG4vKipcbiAqIFRyYW5zbGF0
ZSBuYXRpdmUgdG9wIGxldmVsIGV2ZW50cyBpbnRvIGV2ZW50IHR5cGVzLlxuICpcbiAqIEBwYXJh
bSB7c3RyaW5nfSB0b3BMZXZlbFR5cGVcbiAqIEByZXR1cm4ge29iamVjdH1cbiAqL1xuZnVuY3Rp
b24gZ2V0Q29tcG9zaXRpb25FdmVudFR5cGUodG9wTGV2ZWxUeXBlKSB7XG4gIHN3aXRjaCAodG9w
TGV2ZWxUeXBlKSB7XG4gICAgY2FzZSAndG9wQ29tcG9zaXRpb25TdGFydCc6XG4gICAgICByZXR1
cm4gZXZlbnRUeXBlcy5jb21wb3NpdGlvblN0YXJ0O1xuICAgIGNhc2UgJ3RvcENvbXBvc2l0aW9u
RW5kJzpcbiAgICAgIHJldHVybiBldmVudFR5cGVzLmNvbXBvc2l0aW9uRW5kO1xuICAgIGNhc2Ug
J3RvcENvbXBvc2l0aW9uVXBkYXRlJzpcbiAgICAgIHJldHVybiBldmVudFR5cGVzLmNvbXBvc2l0
aW9uVXBkYXRlO1xuICB9XG59XG5cbi8qKlxuICogRG9lcyBvdXIgZmFsbGJhY2sgYmVzdC1ndWVz
cyBtb2RlbCB0aGluayB0aGlzIGV2ZW50IHNpZ25pZmllcyB0aGF0XG4gKiBjb21wb3NpdGlvbiBo
YXMgYmVndW4/XG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHRvcExldmVsVHlwZVxuICogQHBhcmFt
IHtvYmplY3R9IG5hdGl2ZUV2ZW50XG4gKiBAcmV0dXJuIHtib29sZWFufVxuICovXG5mdW5jdGlv
biBpc0ZhbGxiYWNrQ29tcG9zaXRpb25TdGFydCh0b3BMZXZlbFR5cGUsIG5hdGl2ZUV2ZW50KSB7
XG4gIHJldHVybiB0b3BMZXZlbFR5cGUgPT09ICd0b3BLZXlEb3duJyAmJiBuYXRpdmVFdmVudC5r
ZXlDb2RlID09PSBTVEFSVF9LRVlDT0RFO1xufVxuXG4vKipcbiAqIERvZXMgb3VyIGZhbGxiYWNr
IG1vZGUgdGhpbmsgdGhhdCB0aGlzIGV2ZW50IGlzIHRoZSBlbmQgb2YgY29tcG9zaXRpb24/XG4g
KlxuICogQHBhcmFtIHtzdHJpbmd9IHRvcExldmVsVHlwZVxuICogQHBhcmFtIHtvYmplY3R9IG5h
dGl2ZUV2ZW50XG4gKiBAcmV0dXJuIHtib29sZWFufVxuICovXG5mdW5jdGlvbiBpc0ZhbGxiYWNr
Q29tcG9zaXRpb25FbmQodG9wTGV2ZWxUeXBlLCBuYXRpdmVFdmVudCkge1xuICBzd2l0Y2ggKHRv
cExldmVsVHlwZSkge1xuICAgIGNhc2UgJ3RvcEtleVVwJzpcbiAgICAgIC8vIENvbW1hbmQga2V5
cyBpbnNlcnQgb3IgY2xlYXIgSU1FIGlucHV0LlxuICAgICAgcmV0dXJuIEVORF9LRVlDT0RFUy5p
bmRleE9mKG5hdGl2ZUV2ZW50LmtleUNvZGUpICE9PSAtMTtcbiAgICBjYXNlICd0b3BLZXlEb3du
JzpcbiAgICAgIC8vIEV4cGVjdCBJTUUga2V5Q29kZSBvbiBlYWNoIGtleWRvd24uIElmIHdlIGdl
dCBhbnkgb3RoZXJcbiAgICAgIC8vIGNvZGUgd2UgbXVzdCBoYXZlIGV4aXRlZCBlYXJsaWVyLlxu
ICAgICAgcmV0dXJuIG5hdGl2ZUV2ZW50LmtleUNvZGUgIT09IFNUQVJUX0tFWUNPREU7XG4gICAg
Y2FzZSAndG9wS2V5UHJlc3MnOlxuICAgIGNhc2UgJ3RvcE1vdXNlRG93bic6XG4gICAgY2FzZSAn
dG9wQmx1cic6XG4gICAgICAvLyBFdmVudHMgYXJlIG5vdCBwb3NzaWJsZSB3aXRob3V0IGNhbmNl
bGxpbmcgSU1FLlxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVy
biBmYWxzZTtcbiAgfVxufVxuXG4vKipcbiAqIEdvb2dsZSBJbnB1dCBUb29scyBwcm92aWRlcyBj
b21wb3NpdGlvbiBkYXRhIHZpYSBhIEN1c3RvbUV2ZW50LFxuICogd2l0aCB0aGUgYGRhdGFgIHBy
b3BlcnR5IHBvcHVsYXRlZCBpbiB0aGUgYGRldGFpbGAgb2JqZWN0LiBJZiB0aGlzXG4gKiBpcyBh
dmFpbGFibGUgb24gdGhlIGV2ZW50IG9iamVjdCwgdXNlIGl0LiBJZiBub3QsIHRoaXMgaXMgYSBw
bGFpblxuICogY29tcG9zaXRpb24gZXZlbnQgYW5kIHdlIGhhdmUgbm90aGluZyBzcGVjaWFsIHRv
IGV4dHJhY3QuXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IG5hdGl2ZUV2ZW50XG4gKiBAcmV0dXJu
IHs/c3RyaW5nfVxuICovXG5mdW5jdGlvbiBnZXREYXRhRnJvbUN1c3RvbUV2ZW50KG5hdGl2ZUV2
ZW50KSB7XG4gIHZhciBkZXRhaWwgPSBuYXRpdmVFdmVudC5kZXRhaWw7XG4gIGlmICh0eXBlb2Yg
ZGV0YWlsID09PSAnb2JqZWN0JyAmJiAnZGF0YScgaW4gZGV0YWlsKSB7XG4gICAgcmV0dXJuIGRl
dGFpbC5kYXRhO1xuICB9XG4gIHJldHVybiBudWxsO1xufVxuXG4vLyBUcmFjayB0aGUgY3VycmVu
dCBJTUUgY29tcG9zaXRpb24gZmFsbGJhY2sgb2JqZWN0LCBpZiBhbnkuXG52YXIgY3VycmVudENv
bXBvc2l0aW9uID0gbnVsbDtcblxuLyoqXG4gKiBAcmV0dXJuIHs/b2JqZWN0fSBBIFN5bnRoZXRp
Y0NvbXBvc2l0aW9uRXZlbnQuXG4gKi9cbmZ1bmN0aW9uIGV4dHJhY3RDb21wb3NpdGlvbkV2ZW50
KHRvcExldmVsVHlwZSwgdGFyZ2V0SW5zdCwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0
KSB7XG4gIHZhciBldmVudFR5cGU7XG4gIHZhciBmYWxsYmFja0RhdGE7XG5cbiAgaWYgKGNhblVz
ZUNvbXBvc2l0aW9uRXZlbnQpIHtcbiAgICBldmVudFR5cGUgPSBnZXRDb21wb3NpdGlvbkV2ZW50
VHlwZSh0b3BMZXZlbFR5cGUpO1xuICB9IGVsc2UgaWYgKCFjdXJyZW50Q29tcG9zaXRpb24pIHtc
biAgICBpZiAoaXNGYWxsYmFja0NvbXBvc2l0aW9uU3RhcnQodG9wTGV2ZWxUeXBlLCBuYXRpdmVF
dmVudCkpIHtcbiAgICAgIGV2ZW50VHlwZSA9IGV2ZW50VHlwZXMuY29tcG9zaXRpb25TdGFydDtc
biAgICB9XG4gIH0gZWxzZSBpZiAoaXNGYWxsYmFja0NvbXBvc2l0aW9uRW5kKHRvcExldmVsVHlw
ZSwgbmF0aXZlRXZlbnQpKSB7XG4gICAgZXZlbnRUeXBlID0gZXZlbnRUeXBlcy5jb21wb3NpdGlv
bkVuZDtcbiAgfVxuXG4gIGlmICghZXZlbnRUeXBlKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1c
blxuICBpZiAodXNlRmFsbGJhY2tDb21wb3NpdGlvbkRhdGEpIHtcbiAgICAvLyBUaGUgY3VycmVu
dCBjb21wb3NpdGlvbiBpcyBzdG9yZWQgc3RhdGljYWxseSBhbmQgbXVzdCBub3QgYmVcbiAgICAv
LyBvdmVyd3JpdHRlbiB3aGlsZSBjb21wb3NpdGlvbiBjb250aW51ZXMuXG4gICAgaWYgKCFjdXJy
ZW50Q29tcG9zaXRpb24gJiYgZXZlbnRUeXBlID09PSBldmVudFR5cGVzLmNvbXBvc2l0aW9uU3Rh
cnQpIHtcbiAgICAgIGN1cnJlbnRDb21wb3NpdGlvbiA9IEZhbGxiYWNrQ29tcG9zaXRpb25TdGF0
ZS5nZXRQb29sZWQobmF0aXZlRXZlbnRUYXJnZXQpO1xuICAgIH0gZWxzZSBpZiAoZXZlbnRUeXBl
ID09PSBldmVudFR5cGVzLmNvbXBvc2l0aW9uRW5kKSB7XG4gICAgICBpZiAoY3VycmVudENvbXBv
c2l0aW9uKSB7XG4gICAgICAgIGZhbGxiYWNrRGF0YSA9IGN1cnJlbnRDb21wb3NpdGlvbi5nZXRE
YXRhKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgdmFyIGV2ZW50ID0gU3ludGhldGljQ29t
cG9zaXRpb25FdmVudC5nZXRQb29sZWQoZXZlbnRUeXBlLCB0YXJnZXRJbnN0LCBuYXRpdmVFdmVu
dCwgbmF0aXZlRXZlbnRUYXJnZXQpO1xuXG4gIGlmIChmYWxsYmFja0RhdGEpIHtcbiAgICAvLyBJ
bmplY3QgZGF0YSBnZW5lcmF0ZWQgZnJvbSBmYWxsYmFjayBwYXRoIGludG8gdGhlIHN5bnRoZXRp
YyBldmVudC5cbiAgICAvLyBUaGlzIG1hdGNoZXMgdGhlIHByb3BlcnR5IG9mIG5hdGl2ZSBDb21w
b3NpdGlvbkV2ZW50SW50ZXJmYWNlLlxuICAgIGV2ZW50LmRhdGEgPSBmYWxsYmFja0RhdGE7XG4g
IH0gZWxzZSB7XG4gICAgdmFyIGN1c3RvbURhdGEgPSBnZXREYXRhRnJvbUN1c3RvbUV2ZW50KG5h
dGl2ZUV2ZW50KTtcbiAgICBpZiAoY3VzdG9tRGF0YSAhPT0gbnVsbCkge1xuICAgICAgZXZlbnQu
ZGF0YSA9IGN1c3RvbURhdGE7XG4gICAgfVxuICB9XG5cbiAgRXZlbnRQcm9wYWdhdG9ycy5hY2N1
bXVsYXRlVHdvUGhhc2VEaXNwYXRjaGVzKGV2ZW50KTtcbiAgcmV0dXJuIGV2ZW50O1xufVxuXG4v
KipcbiAqIEBwYXJhbSB7c3RyaW5nfSB0b3BMZXZlbFR5cGUgUmVjb3JkIGZyb20gYEV2ZW50Q29u
c3RhbnRzYC5cbiAqIEBwYXJhbSB7b2JqZWN0fSBuYXRpdmVFdmVudCBOYXRpdmUgYnJvd3NlciBl
dmVudC5cbiAqIEByZXR1cm4gez9zdHJpbmd9IFRoZSBzdHJpbmcgY29ycmVzcG9uZGluZyB0byB0
aGlzIGBiZWZvcmVJbnB1dGAgZXZlbnQuXG4gKi9cbmZ1bmN0aW9uIGdldE5hdGl2ZUJlZm9yZUlu
cHV0Q2hhcnModG9wTGV2ZWxUeXBlLCBuYXRpdmVFdmVudCkge1xuICBzd2l0Y2ggKHRvcExldmVs
VHlwZSkge1xuICAgIGNhc2UgJ3RvcENvbXBvc2l0aW9uRW5kJzpcbiAgICAgIHJldHVybiBnZXRE
YXRhRnJvbUN1c3RvbUV2ZW50KG5hdGl2ZUV2ZW50KTtcbiAgICBjYXNlICd0b3BLZXlQcmVzcyc6
XG4gICAgICAvKipcbiAgICAgICAqIElmIG5hdGl2ZSBgdGV4dElucHV0YCBldmVudHMgYXJlIGF2
YWlsYWJsZSwgb3VyIGdvYWwgaXMgdG8gbWFrZVxuICAgICAgICogdXNlIG9mIHRoZW0uIEhvd2V2
ZXIsIHRoZXJlIGlzIGEgc3BlY2lhbCBjYXNlOiB0aGUgc3BhY2ViYXIga2V5LlxuICAgICAgICog
SW4gV2Via2l0LCBwcmV2ZW50aW5nIGRlZmF1bHQgb24gYSBzcGFjZWJhciBgdGV4dElucHV0YCBl
dmVudFxuICAgICAgICogY2FuY2VscyBjaGFyYWN0ZXIgaW5zZXJ0aW9uLCBidXQgaXQgKmFsc28q
IGNhdXNlcyB0aGUgYnJvd3NlclxuICAgICAgICogdG8gZmFsbCBiYWNrIHRvIGl0cyBkZWZhdWx0
IHNwYWNlYmFyIGJlaGF2aW9yIG9mIHNjcm9sbGluZyB0aGVcbiAgICAgICAqIHBhZ2UuXG4gICAg
ICAgKlxuICAgICAgICogVHJhY2tpbmcgYXQ6XG4gICAgICAgKiBodHRwczovL2NvZGUuZ29vZ2xl
LmNvbS9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9MzU1MTAzXG4gICAgICAgKlxuICAgICAg
ICogVG8gYXZvaWQgdGhpcyBpc3N1ZSwgdXNlIHRoZSBrZXlwcmVzcyBldmVudCBhcyBpZiBubyBg
dGV4dElucHV0YFxuICAgICAgICogZXZlbnQgaXMgYXZhaWxhYmxlLlxuICAgICAgICovXG4gICAg
ICB2YXIgd2hpY2ggPSBuYXRpdmVFdmVudC53aGljaDtcbiAgICAgIGlmICh3aGljaCAhPT0gU1BB
Q0VCQVJfQ09ERSkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cblxuICAgICAgaGFz
U3BhY2VLZXlwcmVzcyA9IHRydWU7XG4gICAgICByZXR1cm4gU1BBQ0VCQVJfQ0hBUjtcblxuICAg
IGNhc2UgJ3RvcFRleHRJbnB1dCc6XG4gICAgICAvLyBSZWNvcmQgdGhlIGNoYXJhY3RlcnMgdG8g
YmUgYWRkZWQgdG8gdGhlIERPTS5cbiAgICAgIHZhciBjaGFycyA9IG5hdGl2ZUV2ZW50LmRhdGE7
XG5cbiAgICAgIC8vIElmIGl0J3MgYSBzcGFjZWJhciBjaGFyYWN0ZXIsIGFzc3VtZSB0aGF0IHdl
IGhhdmUgYWxyZWFkeSBoYW5kbGVkXG4gICAgICAvLyBpdCBhdCB0aGUga2V5cHJlc3MgbGV2ZWwg
YW5kIGJhaWwgaW1tZWRpYXRlbHkuIEFuZHJvaWQgQ2hyb21lXG4gICAgICAvLyBkb2Vzbid0IGdp
dmUgdXMga2V5Y29kZXMsIHNvIHdlIG5lZWQgdG8gYmxhY2tsaXN0IGl0LlxuICAgICAgaWYgKGNo
YXJzID09PSBTUEFDRUJBUl9DSEFSICYmIGhhc1NwYWNlS2V5cHJlc3MpIHtcbiAgICAgICAgcmV0
dXJuIG51bGw7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjaGFycztcblxuICAgIGRlZmF1bHQ6
XG4gICAgICAvLyBGb3Igb3RoZXIgbmF0aXZlIGV2ZW50IHR5cGVzLCBkbyBub3RoaW5nLlxuICAg
ICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cblxuLyoqXG4gKiBGb3IgYnJvd3NlcnMgdGhhdCBkbyBu
b3QgcHJvdmlkZSB0aGUgYHRleHRJbnB1dGAgZXZlbnQsIGV4dHJhY3QgdGhlXG4gKiBhcHByb3By
aWF0ZSBzdHJpbmcgdG8gdXNlIGZvciBTeW50aGV0aWNJbnB1dEV2ZW50LlxuICpcbiAqIEBwYXJh
bSB7c3RyaW5nfSB0b3BMZXZlbFR5cGUgUmVjb3JkIGZyb20gYEV2ZW50Q29uc3RhbnRzYC5cbiAq
IEBwYXJhbSB7b2JqZWN0fSBuYXRpdmVFdmVudCBOYXRpdmUgYnJvd3NlciBldmVudC5cbiAqIEBy
ZXR1cm4gez9zdHJpbmd9IFRoZSBmYWxsYmFjayBzdHJpbmcgZm9yIHRoaXMgYGJlZm9yZUlucHV0
YCBldmVudC5cbiAqL1xuZnVuY3Rpb24gZ2V0RmFsbGJhY2tCZWZvcmVJbnB1dENoYXJzKHRvcExl
dmVsVHlwZSwgbmF0aXZlRXZlbnQpIHtcbiAgLy8gSWYgd2UgYXJlIGN1cnJlbnRseSBjb21wb3Np
bmcgKElNRSkgYW5kIHVzaW5nIGEgZmFsbGJhY2sgdG8gZG8gc28sXG4gIC8vIHRyeSB0byBleHRy
YWN0IHRoZSBjb21wb3NlZCBjaGFyYWN0ZXJzIGZyb20gdGhlIGZhbGxiYWNrIG9iamVjdC5cbiAg
Ly8gSWYgY29tcG9zaXRpb24gZXZlbnQgaXMgYXZhaWxhYmxlLCB3ZSBleHRyYWN0IGEgc3RyaW5n
IG9ubHkgYXRcbiAgLy8gY29tcG9zaXRpb25ldmVudCwgb3RoZXJ3aXNlIGV4dHJhY3QgaXQgYXQg
ZmFsbGJhY2sgZXZlbnRzLlxuICBpZiAoY3VycmVudENvbXBvc2l0aW9uKSB7XG4gICAgaWYgKHRv
cExldmVsVHlwZSA9PT0gJ3RvcENvbXBvc2l0aW9uRW5kJyB8fCAhY2FuVXNlQ29tcG9zaXRpb25F
dmVudCAmJiBpc0ZhbGxiYWNrQ29tcG9zaXRpb25FbmQodG9wTGV2ZWxUeXBlLCBuYXRpdmVFdmVu
dCkpIHtcbiAgICAgIHZhciBjaGFycyA9IGN1cnJlbnRDb21wb3NpdGlvbi5nZXREYXRhKCk7XG4g
ICAgICBGYWxsYmFja0NvbXBvc2l0aW9uU3RhdGUucmVsZWFzZShjdXJyZW50Q29tcG9zaXRpb24p
O1xuICAgICAgY3VycmVudENvbXBvc2l0aW9uID0gbnVsbDtcbiAgICAgIHJldHVybiBjaGFycztc
biAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBzd2l0Y2ggKHRvcExldmVsVHlwZSkg
e1xuICAgIGNhc2UgJ3RvcFBhc3RlJzpcbiAgICAgIC8vIElmIGEgcGFzdGUgZXZlbnQgb2NjdXJz
IGFmdGVyIGEga2V5cHJlc3MsIHRocm93IG91dCB0aGUgaW5wdXRcbiAgICAgIC8vIGNoYXJzLiBQ
YXN0ZSBldmVudHMgc2hvdWxkIG5vdCBsZWFkIHRvIEJlZm9yZUlucHV0IGV2ZW50cy5cbiAgICAg
IHJldHVybiBudWxsO1xuICAgIGNhc2UgJ3RvcEtleVByZXNzJzpcbiAgICAgIC8qKlxuICAgICAg
ICogQXMgb2YgdjI3LCBGaXJlZm94IG1heSBmaXJlIGtleXByZXNzIGV2ZW50cyBldmVuIHdoZW4g
bm8gY2hhcmFjdGVyXG4gICAgICAgKiB3aWxsIGJlIGluc2VydGVkLiBBIGZldyBwb3NzaWJpbGl0
aWVzOlxuICAgICAgICpcbiAgICAgICAqIC0gYHdoaWNoYCBpcyBgMGAuIEFycm93IGtleXMsIEVz
YyBrZXksIGV0Yy5cbiAgICAgICAqXG4gICAgICAgKiAtIGB3aGljaGAgaXMgdGhlIHByZXNzZWQg
a2V5IGNvZGUsIGJ1dCBubyBjaGFyIGlzIGF2YWlsYWJsZS5cbiAgICAgICAqICAgRXg6ICdBbHRH
ciArIGRgIGluIFBvbGlzaC4gVGhlcmUgaXMgbm8gbW9kaWZpZWQgY2hhcmFjdGVyIGZvclxuICAg
ICAgICogICB0aGlzIGtleSBjb21iaW5hdGlvbiBhbmQgbm8gY2hhcmFjdGVyIGlzIGluc2VydGVk
IGludG8gdGhlXG4gICAgICAgKiAgIGRvY3VtZW50LCBidXQgRkYgZmlyZXMgdGhlIGtleXByZXNz
IGZvciBjaGFyIGNvZGUgYDEwMGAgYW55d2F5LlxuICAgICAgICogICBObyBgaW5wdXRgIGV2ZW50
IHdpbGwgb2NjdXIuXG4gICAgICAgKlxuICAgICAgICogLSBgd2hpY2hgIGlzIHRoZSBwcmVzc2Vk
IGtleSBjb2RlLCBidXQgYSBjb21tYW5kIGNvbWJpbmF0aW9uIGlzXG4gICAgICAgKiAgIGJlaW5n
IHVzZWQuIEV4OiBgQ21kK0NgLiBObyBjaGFyYWN0ZXIgaXMgaW5zZXJ0ZWQsIGFuZCBub1xuICAg
ICAgICogICBgaW5wdXRgIGV2ZW50IHdpbGwgb2NjdXIuXG4gICAgICAgKi9cbiAgICAgIGlmIChu
YXRpdmVFdmVudC53aGljaCAmJiAhaXNLZXlwcmVzc0NvbW1hbmQobmF0aXZlRXZlbnQpKSB7XG4g
ICAgICAgIHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKG5hdGl2ZUV2ZW50LndoaWNoKTtcbiAg
ICAgIH1cbiAgICAgIHJldHVybiBudWxsO1xuICAgIGNhc2UgJ3RvcENvbXBvc2l0aW9uRW5kJzpc
biAgICAgIHJldHVybiB1c2VGYWxsYmFja0NvbXBvc2l0aW9uRGF0YSA/IG51bGwgOiBuYXRpdmVF
dmVudC5kYXRhO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuXG4v
KipcbiAqIEV4dHJhY3QgYSBTeW50aGV0aWNJbnB1dEV2ZW50IGZvciBgYmVmb3JlSW5wdXRgLCBi
YXNlZCBvbiBlaXRoZXIgbmF0aXZlXG4gKiBgdGV4dElucHV0YCBvciBmYWxsYmFjayBiZWhhdmlv
ci5cbiAqXG4gKiBAcmV0dXJuIHs/b2JqZWN0fSBBIFN5bnRoZXRpY0lucHV0RXZlbnQuXG4gKi9c
bmZ1bmN0aW9uIGV4dHJhY3RCZWZvcmVJbnB1dEV2ZW50KHRvcExldmVsVHlwZSwgdGFyZ2V0SW5z
dCwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KSB7XG4gIHZhciBjaGFycztcblxuICBp
ZiAoY2FuVXNlVGV4dElucHV0RXZlbnQpIHtcbiAgICBjaGFycyA9IGdldE5hdGl2ZUJlZm9yZUlu
cHV0Q2hhcnModG9wTGV2ZWxUeXBlLCBuYXRpdmVFdmVudCk7XG4gIH0gZWxzZSB7XG4gICAgY2hh
cnMgPSBnZXRGYWxsYmFja0JlZm9yZUlucHV0Q2hhcnModG9wTGV2ZWxUeXBlLCBuYXRpdmVFdmVu
dCk7XG4gIH1cblxuICAvLyBJZiBubyBjaGFyYWN0ZXJzIGFyZSBiZWluZyBpbnNlcnRlZCwgbm8g
QmVmb3JlSW5wdXQgZXZlbnQgc2hvdWxkXG4gIC8vIGJlIGZpcmVkLlxuICBpZiAoIWNoYXJzKSB7
XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICB2YXIgZXZlbnQgPSBTeW50aGV0aWNJbnB1dEV2
ZW50LmdldFBvb2xlZChldmVudFR5cGVzLmJlZm9yZUlucHV0LCB0YXJnZXRJbnN0LCBuYXRpdmVF
dmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpO1xuXG4gIGV2ZW50LmRhdGEgPSBjaGFycztcbiAgRXZl
bnRQcm9wYWdhdG9ycy5hY2N1bXVsYXRlVHdvUGhhc2VEaXNwYXRjaGVzKGV2ZW50KTtcbiAgcmV0
dXJuIGV2ZW50O1xufVxuXG4vKipcbiAqIENyZWF0ZSBhbiBgb25CZWZvcmVJbnB1dGAgZXZlbnQg
dG8gbWF0Y2hcbiAqIGh0dHA6Ly93d3cudzMub3JnL1RSLzIwMTMvV0QtRE9NLUxldmVsLTMtRXZl
bnRzLTIwMTMxMTA1LyNldmVudHMtaW5wdXRldmVudHMuXG4gKlxuICogVGhpcyBldmVudCBwbHVn
aW4gaXMgYmFzZWQgb24gdGhlIG5hdGl2ZSBgdGV4dElucHV0YCBldmVudFxuICogYXZhaWxhYmxl
IGluIENocm9tZSwgU2FmYXJpLCBPcGVyYSwgYW5kIElFLiBUaGlzIGV2ZW50IGZpcmVzIGFmdGVy
XG4gKiBgb25LZXlQcmVzc2AgYW5kIGBvbkNvbXBvc2l0aW9uRW5kYCwgYnV0IGJlZm9yZSBgb25J
bnB1dGAuXG4gKlxuICogYGJlZm9yZUlucHV0YCBpcyBzcGVjJ2QgYnV0IG5vdCBpbXBsZW1lbnRl
ZCBpbiBhbnkgYnJvd3NlcnMsIGFuZFxuICogdGhlIGBpbnB1dGAgZXZlbnQgZG9lcyBub3QgcHJv
dmlkZSBhbnkgdXNlZnVsIGluZm9ybWF0aW9uIGFib3V0IHdoYXQgaGFzXG4gKiBhY3R1YWxseSBi
ZWVuIGFkZGVkLCBjb250cmFyeSB0byB0aGUgc3BlYy4gVGh1cywgYHRleHRJbnB1dGAgaXMgdGhl
IGJlc3RcbiAqIGF2YWlsYWJsZSBldmVudCB0byBpZGVudGlmeSB0aGUgY2hhcmFjdGVycyB0aGF0
IGhhdmUgYWN0dWFsbHkgYmVlbiBpbnNlcnRlZFxuICogaW50byB0aGUgdGFyZ2V0IG5vZGUuXG4g
KlxuICogVGhpcyBwbHVnaW4gaXMgYWxzbyByZXNwb25zaWJsZSBmb3IgZW1pdHRpbmcgYGNvbXBv
c2l0aW9uYCBldmVudHMsIHRodXNcbiAqIGFsbG93aW5nIHVzIHRvIHNoYXJlIGNvbXBvc2l0aW9u
IGZhbGxiYWNrIGNvZGUgZm9yIGJvdGggYGJlZm9yZUlucHV0YCBhbmRcbiAqIGBjb21wb3NpdGlv
bmAgZXZlbnQgdHlwZXMuXG4gKi9cbnZhciBCZWZvcmVJbnB1dEV2ZW50UGx1Z2luID0ge1xuICBl
dmVudFR5cGVzOiBldmVudFR5cGVzLFxuXG4gIGV4dHJhY3RFdmVudHM6IGZ1bmN0aW9uICh0b3BM
ZXZlbFR5cGUsIHRhcmdldEluc3QsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCkge1xu
ICAgIHJldHVybiBbZXh0cmFjdENvbXBvc2l0aW9uRXZlbnQodG9wTGV2ZWxUeXBlLCB0YXJnZXRJ
bnN0LCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpLCBleHRyYWN0QmVmb3JlSW5wdXRF
dmVudCh0b3BMZXZlbFR5cGUsIHRhcmdldEluc3QsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRh
cmdldCldO1xuICB9XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IEJlZm9yZUlucHV0RXZlbnRQbHVn
aW47XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34v
cmVhY3QtZG9tL2xpYi9CZWZvcmVJbnB1dEV2ZW50UGx1Z2luLmpzXG4gKiogbW9kdWxlIGlkID0g
MTI2XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENvcHlyaWdodCAyMDEz
LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAq
IFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNl
IGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0
aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRz
IGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5c
biAqXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgQ1NTUHJvcGVydHkgPSByZXF1aXJlKCcu
L0NTU1Byb3BlcnR5Jyk7XG52YXIgRXhlY3V0aW9uRW52aXJvbm1lbnQgPSByZXF1aXJlKCdmYmpz
L2xpYi9FeGVjdXRpb25FbnZpcm9ubWVudCcpO1xudmFyIFJlYWN0SW5zdHJ1bWVudGF0aW9uID0g
cmVxdWlyZSgnLi9SZWFjdEluc3RydW1lbnRhdGlvbicpO1xuXG52YXIgY2FtZWxpemVTdHlsZU5h
bWUgPSByZXF1aXJlKCdmYmpzL2xpYi9jYW1lbGl6ZVN0eWxlTmFtZScpO1xudmFyIGRhbmdlcm91
c1N0eWxlVmFsdWUgPSByZXF1aXJlKCcuL2Rhbmdlcm91c1N0eWxlVmFsdWUnKTtcbnZhciBoeXBo
ZW5hdGVTdHlsZU5hbWUgPSByZXF1aXJlKCdmYmpzL2xpYi9oeXBoZW5hdGVTdHlsZU5hbWUnKTtc
bnZhciBtZW1vaXplU3RyaW5nT25seSA9IHJlcXVpcmUoJ2ZianMvbGliL21lbW9pemVTdHJpbmdP
bmx5Jyk7XG52YXIgd2FybmluZyA9IHJlcXVpcmUoJ2ZianMvbGliL3dhcm5pbmcnKTtcblxudmFy
IHByb2Nlc3NTdHlsZU5hbWUgPSBtZW1vaXplU3RyaW5nT25seShmdW5jdGlvbiAoc3R5bGVOYW1l
KSB7XG4gIHJldHVybiBoeXBoZW5hdGVTdHlsZU5hbWUoc3R5bGVOYW1lKTtcbn0pO1xuXG52YXIg
aGFzU2hvcnRoYW5kUHJvcGVydHlCdWcgPSBmYWxzZTtcbnZhciBzdHlsZUZsb2F0QWNjZXNzb3Ig
PSAnY3NzRmxvYXQnO1xuaWYgKEV4ZWN1dGlvbkVudmlyb25tZW50LmNhblVzZURPTSkge1xuICB2
YXIgdGVtcFN0eWxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jykuc3R5bGU7XG4gIHRy
eSB7XG4gICAgLy8gSUU4IHRocm93cyBcIkludmFsaWQgYXJndW1lbnQuXCIgaWYgcmVzZXR0aW5n
IHNob3J0aGFuZCBzdHlsZSBwcm9wZXJ0aWVzLlxuICAgIHRlbXBTdHlsZS5mb250ID0gJyc7XG4g
IH0gY2F0Y2ggKGUpIHtcbiAgICBoYXNTaG9ydGhhbmRQcm9wZXJ0eUJ1ZyA9IHRydWU7XG4gIH1c
biAgLy8gSUU4IG9ubHkgc3VwcG9ydHMgYWNjZXNzaW5nIGNzc0Zsb2F0IChzdGFuZGFyZCkgYXMg
c3R5bGVGbG9hdFxuICBpZiAoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLmNzc0Zsb2F0
ID09PSB1bmRlZmluZWQpIHtcbiAgICBzdHlsZUZsb2F0QWNjZXNzb3IgPSAnc3R5bGVGbG9hdCc7
XG4gIH1cbn1cblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtc
biAgLy8gJ21zVHJhbnNmb3JtJyBpcyBjb3JyZWN0LCBidXQgdGhlIG90aGVyIHByZWZpeGVzIHNo
b3VsZCBiZSBjYXBpdGFsaXplZFxuICB2YXIgYmFkVmVuZG9yZWRTdHlsZU5hbWVQYXR0ZXJuID0g
L14oPzp3ZWJraXR8bW96fG8pW0EtWl0vO1xuXG4gIC8vIHN0eWxlIHZhbHVlcyBzaG91bGRuJ3Qg
Y29udGFpbiBhIHNlbWljb2xvblxuICB2YXIgYmFkU3R5bGVWYWx1ZVdpdGhTZW1pY29sb25QYXR0
ZXJuID0gLztcXHMqJC87XG5cbiAgdmFyIHdhcm5lZFN0eWxlTmFtZXMgPSB7fTtcbiAgdmFyIHdh
cm5lZFN0eWxlVmFsdWVzID0ge307XG4gIHZhciB3YXJuZWRGb3JOYU5WYWx1ZSA9IGZhbHNlO1xu
XG4gIHZhciB3YXJuSHlwaGVuYXRlZFN0eWxlTmFtZSA9IGZ1bmN0aW9uIChuYW1lLCBvd25lcikg
e1xuICAgIGlmICh3YXJuZWRTdHlsZU5hbWVzLmhhc093blByb3BlcnR5KG5hbWUpICYmIHdhcm5l
ZFN0eWxlTmFtZXNbbmFtZV0pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB3YXJuZWRT
dHlsZU5hbWVzW25hbWVdID0gdHJ1ZTtcbiAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3By
b2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ1Vuc3VwcG9ydGVkIHN0eWxlIHByb3BlcnR5ICVz
LiBEaWQgeW91IG1lYW4gJXM/JXMnLCBuYW1lLCBjYW1lbGl6ZVN0eWxlTmFtZShuYW1lKSwgY2hl
Y2tSZW5kZXJNZXNzYWdlKG93bmVyKSkgOiB2b2lkIDA7XG4gIH07XG5cbiAgdmFyIHdhcm5CYWRW
ZW5kb3JlZFN0eWxlTmFtZSA9IGZ1bmN0aW9uIChuYW1lLCBvd25lcikge1xuICAgIGlmICh3YXJu
ZWRTdHlsZU5hbWVzLmhhc093blByb3BlcnR5KG5hbWUpICYmIHdhcm5lZFN0eWxlTmFtZXNbbmFt
ZV0pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB3YXJuZWRTdHlsZU5hbWVzW25hbWVd
ID0gdHJ1ZTtcbiAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2Fy
bmluZyhmYWxzZSwgJ1Vuc3VwcG9ydGVkIHZlbmRvci1wcmVmaXhlZCBzdHlsZSBwcm9wZXJ0eSAl
cy4gRGlkIHlvdSBtZWFuICVzPyVzJywgbmFtZSwgbmFtZS5jaGFyQXQoMCkudG9VcHBlckNhc2Uo
KSArIG5hbWUuc2xpY2UoMSksIGNoZWNrUmVuZGVyTWVzc2FnZShvd25lcikpIDogdm9pZCAwO1xu
ICB9O1xuXG4gIHZhciB3YXJuU3R5bGVWYWx1ZVdpdGhTZW1pY29sb24gPSBmdW5jdGlvbiAobmFt
ZSwgdmFsdWUsIG93bmVyKSB7XG4gICAgaWYgKHdhcm5lZFN0eWxlVmFsdWVzLmhhc093blByb3Bl
cnR5KHZhbHVlKSAmJiB3YXJuZWRTdHlsZVZhbHVlc1t2YWx1ZV0pIHtcbiAgICAgIHJldHVybjtc
biAgICB9XG5cbiAgICB3YXJuZWRTdHlsZVZhbHVlc1t2YWx1ZV0gPSB0cnVlO1xuICAgIHByb2Nl
c3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCBcIlN0eWxl
IHByb3BlcnR5IHZhbHVlcyBzaG91bGRuJ3QgY29udGFpbiBhIHNlbWljb2xvbi4lcyBcIiArICdU
cnkgXCIlczogJXNcIiBpbnN0ZWFkLicsIGNoZWNrUmVuZGVyTWVzc2FnZShvd25lciksIG5hbWUs
IHZhbHVlLnJlcGxhY2UoYmFkU3R5bGVWYWx1ZVdpdGhTZW1pY29sb25QYXR0ZXJuLCAnJykpIDog
dm9pZCAwO1xuICB9O1xuXG4gIHZhciB3YXJuU3R5bGVWYWx1ZUlzTmFOID0gZnVuY3Rpb24gKG5h
bWUsIHZhbHVlLCBvd25lcikge1xuICAgIGlmICh3YXJuZWRGb3JOYU5WYWx1ZSkge1xuICAgICAg
cmV0dXJuO1xuICAgIH1cblxuICAgIHdhcm5lZEZvck5hTlZhbHVlID0gdHJ1ZTtcbiAgICBwcm9j
ZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ2BOYU5g
IGlzIGFuIGludmFsaWQgdmFsdWUgZm9yIHRoZSBgJXNgIGNzcyBzdHlsZSBwcm9wZXJ0eS4lcycs
IG5hbWUsIGNoZWNrUmVuZGVyTWVzc2FnZShvd25lcikpIDogdm9pZCAwO1xuICB9O1xuXG4gIHZh
ciBjaGVja1JlbmRlck1lc3NhZ2UgPSBmdW5jdGlvbiAob3duZXIpIHtcbiAgICBpZiAob3duZXIp
IHtcbiAgICAgIHZhciBuYW1lID0gb3duZXIuZ2V0TmFtZSgpO1xuICAgICAgaWYgKG5hbWUpIHtc
biAgICAgICAgcmV0dXJuICcgQ2hlY2sgdGhlIHJlbmRlciBtZXRob2Qgb2YgYCcgKyBuYW1lICsg
J2AuJztcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuICcnO1xuICB9O1xuXG4gIC8qKlxuICAg
KiBAcGFyYW0ge3N0cmluZ30gbmFtZVxuICAgKiBAcGFyYW0geyp9IHZhbHVlXG4gICAqIEBwYXJh
bSB7UmVhY3RET01Db21wb25lbnR9IGNvbXBvbmVudFxuICAgKi9cbiAgdmFyIHdhcm5WYWxpZFN0
eWxlID0gZnVuY3Rpb24gKG5hbWUsIHZhbHVlLCBjb21wb25lbnQpIHtcbiAgICB2YXIgb3duZXI7
XG4gICAgaWYgKGNvbXBvbmVudCkge1xuICAgICAgb3duZXIgPSBjb21wb25lbnQuX2N1cnJlbnRF
bGVtZW50Ll9vd25lcjtcbiAgICB9XG4gICAgaWYgKG5hbWUuaW5kZXhPZignLScpID4gLTEpIHtc
biAgICAgIHdhcm5IeXBoZW5hdGVkU3R5bGVOYW1lKG5hbWUsIG93bmVyKTtcbiAgICB9IGVsc2Ug
aWYgKGJhZFZlbmRvcmVkU3R5bGVOYW1lUGF0dGVybi50ZXN0KG5hbWUpKSB7XG4gICAgICB3YXJu
QmFkVmVuZG9yZWRTdHlsZU5hbWUobmFtZSwgb3duZXIpO1xuICAgIH0gZWxzZSBpZiAoYmFkU3R5
bGVWYWx1ZVdpdGhTZW1pY29sb25QYXR0ZXJuLnRlc3QodmFsdWUpKSB7XG4gICAgICB3YXJuU3R5
bGVWYWx1ZVdpdGhTZW1pY29sb24obmFtZSwgdmFsdWUsIG93bmVyKTtcbiAgICB9XG5cbiAgICBp
ZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJyAmJiBpc05hTih2YWx1ZSkpIHtcbiAgICAgIHdh
cm5TdHlsZVZhbHVlSXNOYU4obmFtZSwgdmFsdWUsIG93bmVyKTtcbiAgICB9XG4gIH07XG59XG5c
bi8qKlxuICogT3BlcmF0aW9ucyBmb3IgZGVhbGluZyB3aXRoIENTUyBwcm9wZXJ0aWVzLlxuICov
XG52YXIgQ1NTUHJvcGVydHlPcGVyYXRpb25zID0ge1xuICAvKipcbiAgICogU2VyaWFsaXplcyBh
IG1hcHBpbmcgb2Ygc3R5bGUgcHJvcGVydGllcyBmb3IgdXNlIGFzIGlubGluZSBzdHlsZXM6XG4g
ICAqXG4gICAqICAgPiBjcmVhdGVNYXJrdXBGb3JTdHlsZXMoe3dpZHRoOiAnMjAwcHgnLCBoZWln
aHQ6IDB9KVxuICAgKiAgIFwid2lkdGg6MjAwcHg7aGVpZ2h0OjA7XCJcbiAgICpcbiAgICogVW5k
ZWZpbmVkIHZhbHVlcyBhcmUgaWdub3JlZCBzbyB0aGF0IGRlY2xhcmF0aXZlIHByb2dyYW1taW5n
IGlzIGVhc2llci5cbiAgICogVGhlIHJlc3VsdCBzaG91bGQgYmUgSFRNTC1lc2NhcGVkIGJlZm9y
ZSBpbnNlcnRpb24gaW50byB0aGUgRE9NLlxuICAgKlxuICAgKiBAcGFyYW0ge29iamVjdH0gc3R5
bGVzXG4gICAqIEBwYXJhbSB7UmVhY3RET01Db21wb25lbnR9IGNvbXBvbmVudFxuICAgKiBAcmV0
dXJuIHs/c3RyaW5nfVxuICAgKi9cbiAgY3JlYXRlTWFya3VwRm9yU3R5bGVzOiBmdW5jdGlvbiAo
c3R5bGVzLCBjb21wb25lbnQpIHtcbiAgICB2YXIgc2VyaWFsaXplZCA9ICcnO1xuICAgIGZvciAo
dmFyIHN0eWxlTmFtZSBpbiBzdHlsZXMpIHtcbiAgICAgIGlmICghc3R5bGVzLmhhc093blByb3Bl
cnR5KHN0eWxlTmFtZSkpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICB2YXIg
aXNDdXN0b21Qcm9wZXJ0eSA9IHN0eWxlTmFtZS5pbmRleE9mKCctLScpID09PSAwO1xuICAgICAg
dmFyIHN0eWxlVmFsdWUgPSBzdHlsZXNbc3R5bGVOYW1lXTtcbiAgICAgIGlmIChwcm9jZXNzLmVu
di5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgIGlmICghaXNDdXN0b21Qcm9w
ZXJ0eSkge1xuICAgICAgICAgIHdhcm5WYWxpZFN0eWxlKHN0eWxlTmFtZSwgc3R5bGVWYWx1ZSwg
Y29tcG9uZW50KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHN0eWxlVmFsdWUgIT0g
bnVsbCkge1xuICAgICAgICBzZXJpYWxpemVkICs9IHByb2Nlc3NTdHlsZU5hbWUoc3R5bGVOYW1l
KSArICc6JztcbiAgICAgICAgc2VyaWFsaXplZCArPSBkYW5nZXJvdXNTdHlsZVZhbHVlKHN0eWxl
TmFtZSwgc3R5bGVWYWx1ZSwgY29tcG9uZW50LCBpc0N1c3RvbVByb3BlcnR5KSArICc7JztcbiAg
ICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHNlcmlhbGl6ZWQgfHwgbnVsbDtcbiAgfSxcblxuICAv
KipcbiAgICogU2V0cyB0aGUgdmFsdWUgZm9yIG11bHRpcGxlIHN0eWxlcyBvbiBhIG5vZGUuICBJ
ZiBhIHZhbHVlIGlzIHNwZWNpZmllZCBhc1xuICAgKiAnJyAoZW1wdHkgc3RyaW5nKSwgdGhlIGNv
cnJlc3BvbmRpbmcgc3R5bGUgcHJvcGVydHkgd2lsbCBiZSB1bnNldC5cbiAgICpcbiAgICogQHBh
cmFtIHtET01FbGVtZW50fSBub2RlXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBzdHlsZXNcbiAgICog
QHBhcmFtIHtSZWFjdERPTUNvbXBvbmVudH0gY29tcG9uZW50XG4gICAqL1xuICBzZXRWYWx1ZUZv
clN0eWxlczogZnVuY3Rpb24gKG5vZGUsIHN0eWxlcywgY29tcG9uZW50KSB7XG4gICAgaWYgKHBy
b2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIFJlYWN0SW5zdHJ1
bWVudGF0aW9uLmRlYnVnVG9vbC5vbkhvc3RPcGVyYXRpb24oe1xuICAgICAgICBpbnN0YW5jZUlE
OiBjb21wb25lbnQuX2RlYnVnSUQsXG4gICAgICAgIHR5cGU6ICd1cGRhdGUgc3R5bGVzJyxcbiAg
ICAgICAgcGF5bG9hZDogc3R5bGVzXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB2YXIgc3R5bGUg
PSBub2RlLnN0eWxlO1xuICAgIGZvciAodmFyIHN0eWxlTmFtZSBpbiBzdHlsZXMpIHtcbiAgICAg
IGlmICghc3R5bGVzLmhhc093blByb3BlcnR5KHN0eWxlTmFtZSkpIHtcbiAgICAgICAgY29udGlu
dWU7XG4gICAgICB9XG4gICAgICB2YXIgaXNDdXN0b21Qcm9wZXJ0eSA9IHN0eWxlTmFtZS5pbmRl
eE9mKCctLScpID09PSAwO1xuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJv
ZHVjdGlvbicpIHtcbiAgICAgICAgaWYgKCFpc0N1c3RvbVByb3BlcnR5KSB7XG4gICAgICAgICAg
d2FyblZhbGlkU3R5bGUoc3R5bGVOYW1lLCBzdHlsZXNbc3R5bGVOYW1lXSwgY29tcG9uZW50KTtc
biAgICAgICAgfVxuICAgICAgfVxuICAgICAgdmFyIHN0eWxlVmFsdWUgPSBkYW5nZXJvdXNTdHls
ZVZhbHVlKHN0eWxlTmFtZSwgc3R5bGVzW3N0eWxlTmFtZV0sIGNvbXBvbmVudCwgaXNDdXN0b21Q
cm9wZXJ0eSk7XG4gICAgICBpZiAoc3R5bGVOYW1lID09PSAnZmxvYXQnIHx8IHN0eWxlTmFtZSA9
PT0gJ2Nzc0Zsb2F0Jykge1xuICAgICAgICBzdHlsZU5hbWUgPSBzdHlsZUZsb2F0QWNjZXNzb3I7
XG4gICAgICB9XG4gICAgICBpZiAoaXNDdXN0b21Qcm9wZXJ0eSkge1xuICAgICAgICBzdHlsZS5z
ZXRQcm9wZXJ0eShzdHlsZU5hbWUsIHN0eWxlVmFsdWUpO1xuICAgICAgfSBlbHNlIGlmIChzdHls
ZVZhbHVlKSB7XG4gICAgICAgIHN0eWxlW3N0eWxlTmFtZV0gPSBzdHlsZVZhbHVlO1xuICAgICAg
fSBlbHNlIHtcbiAgICAgICAgdmFyIGV4cGFuc2lvbiA9IGhhc1Nob3J0aGFuZFByb3BlcnR5QnVn
ICYmIENTU1Byb3BlcnR5LnNob3J0aGFuZFByb3BlcnR5RXhwYW5zaW9uc1tzdHlsZU5hbWVdO1xu
ICAgICAgICBpZiAoZXhwYW5zaW9uKSB7XG4gICAgICAgICAgLy8gU2hvcnRoYW5kIHByb3BlcnR5
IHRoYXQgSUU4IHdvbid0IGxpa2UgdW5zZXR0aW5nLCBzbyB1bnNldCBlYWNoXG4gICAgICAgICAg
Ly8gY29tcG9uZW50IHRvIHBsYWNhdGUgaXRcbiAgICAgICAgICBmb3IgKHZhciBpbmRpdmlkdWFs
U3R5bGVOYW1lIGluIGV4cGFuc2lvbikge1xuICAgICAgICAgICAgc3R5bGVbaW5kaXZpZHVhbFN0
eWxlTmFtZV0gPSAnJztcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAg
c3R5bGVbc3R5bGVOYW1lXSA9ICcnO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59
O1xuXG5tb2R1bGUuZXhwb3J0cyA9IENTU1Byb3BlcnR5T3BlcmF0aW9ucztcblxuXG4vKioqKioq
KioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFjdC1kb20vbGliL0NT
U1Byb3BlcnR5T3BlcmF0aW9ucy5qc1xuICoqIG1vZHVsZSBpZCA9IDEyN1xuICoqIG1vZHVsZSBj
aHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9v
aywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2Rl
IGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAq
IExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4g
QW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4g
dGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICovXG5cbid1c2Ug
c3RyaWN0JztcblxudmFyIEV2ZW50UGx1Z2luSHViID0gcmVxdWlyZSgnLi9FdmVudFBsdWdpbkh1
YicpO1xudmFyIEV2ZW50UHJvcGFnYXRvcnMgPSByZXF1aXJlKCcuL0V2ZW50UHJvcGFnYXRvcnMn
KTtcbnZhciBFeGVjdXRpb25FbnZpcm9ubWVudCA9IHJlcXVpcmUoJ2ZianMvbGliL0V4ZWN1dGlv
bkVudmlyb25tZW50Jyk7XG52YXIgUmVhY3RET01Db21wb25lbnRUcmVlID0gcmVxdWlyZSgnLi9S
ZWFjdERPTUNvbXBvbmVudFRyZWUnKTtcbnZhciBSZWFjdFVwZGF0ZXMgPSByZXF1aXJlKCcuL1Jl
YWN0VXBkYXRlcycpO1xudmFyIFN5bnRoZXRpY0V2ZW50ID0gcmVxdWlyZSgnLi9TeW50aGV0aWNF
dmVudCcpO1xuXG52YXIgaW5wdXRWYWx1ZVRyYWNraW5nID0gcmVxdWlyZSgnLi9pbnB1dFZhbHVl
VHJhY2tpbmcnKTtcbnZhciBnZXRFdmVudFRhcmdldCA9IHJlcXVpcmUoJy4vZ2V0RXZlbnRUYXJn
ZXQnKTtcbnZhciBpc0V2ZW50U3VwcG9ydGVkID0gcmVxdWlyZSgnLi9pc0V2ZW50U3VwcG9ydGVk
Jyk7XG52YXIgaXNUZXh0SW5wdXRFbGVtZW50ID0gcmVxdWlyZSgnLi9pc1RleHRJbnB1dEVsZW1l
bnQnKTtcblxudmFyIGV2ZW50VHlwZXMgPSB7XG4gIGNoYW5nZToge1xuICAgIHBoYXNlZFJlZ2lz
dHJhdGlvbk5hbWVzOiB7XG4gICAgICBidWJibGVkOiAnb25DaGFuZ2UnLFxuICAgICAgY2FwdHVy
ZWQ6ICdvbkNoYW5nZUNhcHR1cmUnXG4gICAgfSxcbiAgICBkZXBlbmRlbmNpZXM6IFsndG9wQmx1
cicsICd0b3BDaGFuZ2UnLCAndG9wQ2xpY2snLCAndG9wRm9jdXMnLCAndG9wSW5wdXQnLCAndG9w
S2V5RG93bicsICd0b3BLZXlVcCcsICd0b3BTZWxlY3Rpb25DaGFuZ2UnXVxuICB9XG59O1xuXG5m
dW5jdGlvbiBjcmVhdGVBbmRBY2N1bXVsYXRlQ2hhbmdlRXZlbnQoaW5zdCwgbmF0aXZlRXZlbnQs
IHRhcmdldCkge1xuICB2YXIgZXZlbnQgPSBTeW50aGV0aWNFdmVudC5nZXRQb29sZWQoZXZlbnRU
eXBlcy5jaGFuZ2UsIGluc3QsIG5hdGl2ZUV2ZW50LCB0YXJnZXQpO1xuICBldmVudC50eXBlID0g
J2NoYW5nZSc7XG4gIEV2ZW50UHJvcGFnYXRvcnMuYWNjdW11bGF0ZVR3b1BoYXNlRGlzcGF0Y2hl
cyhldmVudCk7XG4gIHJldHVybiBldmVudDtcbn1cbi8qKlxuICogRm9yIElFIHNoaW1zXG4gKi9c
bnZhciBhY3RpdmVFbGVtZW50ID0gbnVsbDtcbnZhciBhY3RpdmVFbGVtZW50SW5zdCA9IG51bGw7
XG5cbi8qKlxuICogU0VDVElPTjogaGFuZGxlIGBjaGFuZ2VgIGV2ZW50XG4gKi9cbmZ1bmN0aW9u
IHNob3VsZFVzZUNoYW5nZUV2ZW50KGVsZW0pIHtcbiAgdmFyIG5vZGVOYW1lID0gZWxlbS5ub2Rl
TmFtZSAmJiBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7XG4gIHJldHVybiBub2RlTmFtZSA9
PT0gJ3NlbGVjdCcgfHwgbm9kZU5hbWUgPT09ICdpbnB1dCcgJiYgZWxlbS50eXBlID09PSAnZmls
ZSc7XG59XG5cbnZhciBkb2VzQ2hhbmdlRXZlbnRCdWJibGUgPSBmYWxzZTtcbmlmIChFeGVjdXRp
b25FbnZpcm9ubWVudC5jYW5Vc2VET00pIHtcbiAgLy8gU2VlIGBoYW5kbGVDaGFuZ2VgIGNvbW1l
bnQgYmVsb3dcbiAgZG9lc0NoYW5nZUV2ZW50QnViYmxlID0gaXNFdmVudFN1cHBvcnRlZCgnY2hh
bmdlJykgJiYgKCFkb2N1bWVudC5kb2N1bWVudE1vZGUgfHwgZG9jdW1lbnQuZG9jdW1lbnRNb2Rl
ID4gOCk7XG59XG5cbmZ1bmN0aW9uIG1hbnVhbERpc3BhdGNoQ2hhbmdlRXZlbnQobmF0aXZlRXZl
bnQpIHtcbiAgdmFyIGV2ZW50ID0gY3JlYXRlQW5kQWNjdW11bGF0ZUNoYW5nZUV2ZW50KGFjdGl2
ZUVsZW1lbnRJbnN0LCBuYXRpdmVFdmVudCwgZ2V0RXZlbnRUYXJnZXQobmF0aXZlRXZlbnQpKTtc
blxuICAvLyBJZiBjaGFuZ2UgYW5kIHByb3BlcnR5Y2hhbmdlIGJ1YmJsZWQsIHdlJ2QganVzdCBi
aW5kIHRvIGl0IGxpa2UgYWxsIHRoZVxuICAvLyBvdGhlciBldmVudHMgYW5kIGhhdmUgaXQgZ28g
dGhyb3VnaCBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIuIFNpbmNlIGl0XG4gIC8vIGRvZXNuJ3Qs
IHdlIG1hbnVhbGx5IGxpc3RlbiBmb3IgdGhlIGV2ZW50cyBhbmQgc28gd2UgaGF2ZSB0byBlbnF1
ZXVlIGFuZFxuICAvLyBwcm9jZXNzIHRoZSBhYnN0cmFjdCBldmVudCBtYW51YWxseS5cbiAgLy9c
biAgLy8gQmF0Y2hpbmcgaXMgbmVjZXNzYXJ5IGhlcmUgaW4gb3JkZXIgdG8gZW5zdXJlIHRoYXQg
YWxsIGV2ZW50IGhhbmRsZXJzIHJ1blxuICAvLyBiZWZvcmUgdGhlIG5leHQgcmVyZW5kZXIgKGlu
Y2x1ZGluZyBldmVudCBoYW5kbGVycyBhdHRhY2hlZCB0byBhbmNlc3RvclxuICAvLyBlbGVtZW50
cyBpbnN0ZWFkIG9mIGRpcmVjdGx5IG9uIHRoZSBpbnB1dCkuIFdpdGhvdXQgdGhpcywgY29udHJv
bGxlZFxuICAvLyBjb21wb25lbnRzIGRvbid0IHdvcmsgcHJvcGVybHkgaW4gY29uanVuY3Rpb24g
d2l0aCBldmVudCBidWJibGluZyBiZWNhdXNlXG4gIC8vIHRoZSBjb21wb25lbnQgaXMgcmVyZW5k
ZXJlZCBhbmQgdGhlIHZhbHVlIHJldmVydGVkIGJlZm9yZSBhbGwgdGhlIGV2ZW50XG4gIC8vIGhh
bmRsZXJzIGNhbiBydW4uIFNlZSBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvaXNz
dWVzLzcwOC5cbiAgUmVhY3RVcGRhdGVzLmJhdGNoZWRVcGRhdGVzKHJ1bkV2ZW50SW5CYXRjaCwg
ZXZlbnQpO1xufVxuXG5mdW5jdGlvbiBydW5FdmVudEluQmF0Y2goZXZlbnQpIHtcbiAgRXZlbnRQ
bHVnaW5IdWIuZW5xdWV1ZUV2ZW50cyhldmVudCk7XG4gIEV2ZW50UGx1Z2luSHViLnByb2Nlc3NF
dmVudFF1ZXVlKGZhbHNlKTtcbn1cblxuZnVuY3Rpb24gc3RhcnRXYXRjaGluZ0ZvckNoYW5nZUV2
ZW50SUU4KHRhcmdldCwgdGFyZ2V0SW5zdCkge1xuICBhY3RpdmVFbGVtZW50ID0gdGFyZ2V0O1xu
ICBhY3RpdmVFbGVtZW50SW5zdCA9IHRhcmdldEluc3Q7XG4gIGFjdGl2ZUVsZW1lbnQuYXR0YWNo
RXZlbnQoJ29uY2hhbmdlJywgbWFudWFsRGlzcGF0Y2hDaGFuZ2VFdmVudCk7XG59XG5cbmZ1bmN0
aW9uIHN0b3BXYXRjaGluZ0ZvckNoYW5nZUV2ZW50SUU4KCkge1xuICBpZiAoIWFjdGl2ZUVsZW1l
bnQpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgYWN0aXZlRWxlbWVudC5kZXRhY2hFdmVudCgnb25j
aGFuZ2UnLCBtYW51YWxEaXNwYXRjaENoYW5nZUV2ZW50KTtcbiAgYWN0aXZlRWxlbWVudCA9IG51
bGw7XG4gIGFjdGl2ZUVsZW1lbnRJbnN0ID0gbnVsbDtcbn1cblxuZnVuY3Rpb24gZ2V0SW5zdElm
VmFsdWVDaGFuZ2VkKHRhcmdldEluc3QsIG5hdGl2ZUV2ZW50KSB7XG4gIHZhciB1cGRhdGVkID0g
aW5wdXRWYWx1ZVRyYWNraW5nLnVwZGF0ZVZhbHVlSWZDaGFuZ2VkKHRhcmdldEluc3QpO1xuICB2
YXIgc2ltdWxhdGVkID0gbmF0aXZlRXZlbnQuc2ltdWxhdGVkID09PSB0cnVlICYmIENoYW5nZUV2
ZW50UGx1Z2luLl9hbGxvd1NpbXVsYXRlZFBhc3NUaHJvdWdoO1xuXG4gIGlmICh1cGRhdGVkIHx8
IHNpbXVsYXRlZCkge1xuICAgIHJldHVybiB0YXJnZXRJbnN0O1xuICB9XG59XG5cbmZ1bmN0aW9u
IGdldFRhcmdldEluc3RGb3JDaGFuZ2VFdmVudCh0b3BMZXZlbFR5cGUsIHRhcmdldEluc3QpIHtc
biAgaWYgKHRvcExldmVsVHlwZSA9PT0gJ3RvcENoYW5nZScpIHtcbiAgICByZXR1cm4gdGFyZ2V0
SW5zdDtcbiAgfVxufVxuXG5mdW5jdGlvbiBoYW5kbGVFdmVudHNGb3JDaGFuZ2VFdmVudElFOCh0
b3BMZXZlbFR5cGUsIHRhcmdldCwgdGFyZ2V0SW5zdCkge1xuICBpZiAodG9wTGV2ZWxUeXBlID09
PSAndG9wRm9jdXMnKSB7XG4gICAgLy8gc3RvcFdhdGNoaW5nKCkgc2hvdWxkIGJlIGEgbm9vcCBo
ZXJlIGJ1dCB3ZSBjYWxsIGl0IGp1c3QgaW4gY2FzZSB3ZVxuICAgIC8vIG1pc3NlZCBhIGJsdXIg
ZXZlbnQgc29tZWhvdy5cbiAgICBzdG9wV2F0Y2hpbmdGb3JDaGFuZ2VFdmVudElFOCgpO1xuICAg
IHN0YXJ0V2F0Y2hpbmdGb3JDaGFuZ2VFdmVudElFOCh0YXJnZXQsIHRhcmdldEluc3QpO1xuICB9
IGVsc2UgaWYgKHRvcExldmVsVHlwZSA9PT0gJ3RvcEJsdXInKSB7XG4gICAgc3RvcFdhdGNoaW5n
Rm9yQ2hhbmdlRXZlbnRJRTgoKTtcbiAgfVxufVxuXG4vKipcbiAqIFNFQ1RJT046IGhhbmRsZSBg
aW5wdXRgIGV2ZW50XG4gKi9cbnZhciBpc0lucHV0RXZlbnRTdXBwb3J0ZWQgPSBmYWxzZTtcbmlm
IChFeGVjdXRpb25FbnZpcm9ubWVudC5jYW5Vc2VET00pIHtcbiAgLy8gSUU5IGNsYWltcyB0byBz
dXBwb3J0IHRoZSBpbnB1dCBldmVudCBidXQgZmFpbHMgdG8gdHJpZ2dlciBpdCB3aGVuXG4gIC8v
IGRlbGV0aW5nIHRleHQsIHNvIHdlIGlnbm9yZSBpdHMgaW5wdXQgZXZlbnRzLlxuXG4gIGlzSW5w
dXRFdmVudFN1cHBvcnRlZCA9IGlzRXZlbnRTdXBwb3J0ZWQoJ2lucHV0JykgJiYgKCEoJ2RvY3Vt
ZW50TW9kZScgaW4gZG9jdW1lbnQpIHx8IGRvY3VtZW50LmRvY3VtZW50TW9kZSA+IDkpO1xufVxu
XG4vKipcbiAqIChGb3IgSUUgPD05KSBTdGFydHMgdHJhY2tpbmcgcHJvcGVydHljaGFuZ2UgZXZl
bnRzIG9uIHRoZSBwYXNzZWQtaW4gZWxlbWVudFxuICogYW5kIG92ZXJyaWRlIHRoZSB2YWx1ZSBw
cm9wZXJ0eSBzbyB0aGF0IHdlIGNhbiBkaXN0aW5ndWlzaCB1c2VyIGV2ZW50cyBmcm9tXG4gKiB2
YWx1ZSBjaGFuZ2VzIGluIEpTLlxuICovXG5mdW5jdGlvbiBzdGFydFdhdGNoaW5nRm9yVmFsdWVD
aGFuZ2UodGFyZ2V0LCB0YXJnZXRJbnN0KSB7XG4gIGFjdGl2ZUVsZW1lbnQgPSB0YXJnZXQ7XG4g
IGFjdGl2ZUVsZW1lbnRJbnN0ID0gdGFyZ2V0SW5zdDtcbiAgYWN0aXZlRWxlbWVudC5hdHRhY2hF
dmVudCgnb25wcm9wZXJ0eWNoYW5nZScsIGhhbmRsZVByb3BlcnR5Q2hhbmdlKTtcbn1cblxuLyoq
XG4gKiAoRm9yIElFIDw9OSkgUmVtb3ZlcyB0aGUgZXZlbnQgbGlzdGVuZXJzIGZyb20gdGhlIGN1
cnJlbnRseS10cmFja2VkIGVsZW1lbnQsXG4gKiBpZiBhbnkgZXhpc3RzLlxuICovXG5mdW5jdGlv
biBzdG9wV2F0Y2hpbmdGb3JWYWx1ZUNoYW5nZSgpIHtcbiAgaWYgKCFhY3RpdmVFbGVtZW50KSB7
XG4gICAgcmV0dXJuO1xuICB9XG4gIGFjdGl2ZUVsZW1lbnQuZGV0YWNoRXZlbnQoJ29ucHJvcGVy
dHljaGFuZ2UnLCBoYW5kbGVQcm9wZXJ0eUNoYW5nZSk7XG5cbiAgYWN0aXZlRWxlbWVudCA9IG51
bGw7XG4gIGFjdGl2ZUVsZW1lbnRJbnN0ID0gbnVsbDtcbn1cblxuLyoqXG4gKiAoRm9yIElFIDw9
OSkgSGFuZGxlcyBhIHByb3BlcnR5Y2hhbmdlIGV2ZW50LCBzZW5kaW5nIGEgYGNoYW5nZWAgZXZl
bnQgaWZcbiAqIHRoZSB2YWx1ZSBvZiB0aGUgYWN0aXZlIGVsZW1lbnQgaGFzIGNoYW5nZWQuXG4g
Ki9cbmZ1bmN0aW9uIGhhbmRsZVByb3BlcnR5Q2hhbmdlKG5hdGl2ZUV2ZW50KSB7XG4gIGlmIChu
YXRpdmVFdmVudC5wcm9wZXJ0eU5hbWUgIT09ICd2YWx1ZScpIHtcbiAgICByZXR1cm47XG4gIH1c
biAgaWYgKGdldEluc3RJZlZhbHVlQ2hhbmdlZChhY3RpdmVFbGVtZW50SW5zdCwgbmF0aXZlRXZl
bnQpKSB7XG4gICAgbWFudWFsRGlzcGF0Y2hDaGFuZ2VFdmVudChuYXRpdmVFdmVudCk7XG4gIH1c
bn1cblxuZnVuY3Rpb24gaGFuZGxlRXZlbnRzRm9ySW5wdXRFdmVudFBvbHlmaWxsKHRvcExldmVs
VHlwZSwgdGFyZ2V0LCB0YXJnZXRJbnN0KSB7XG4gIGlmICh0b3BMZXZlbFR5cGUgPT09ICd0b3BG
b2N1cycpIHtcbiAgICAvLyBJbiBJRTgsIHdlIGNhbiBjYXB0dXJlIGFsbW9zdCBhbGwgLnZhbHVl
IGNoYW5nZXMgYnkgYWRkaW5nIGFcbiAgICAvLyBwcm9wZXJ0eWNoYW5nZSBoYW5kbGVyIGFuZCBs
b29raW5nIGZvciBldmVudHMgd2l0aCBwcm9wZXJ0eU5hbWVcbiAgICAvLyBlcXVhbCB0byAndmFs
dWUnXG4gICAgLy8gSW4gSUU5LCBwcm9wZXJ0eWNoYW5nZSBmaXJlcyBmb3IgbW9zdCBpbnB1dCBl
dmVudHMgYnV0IGlzIGJ1Z2d5IGFuZFxuICAgIC8vIGRvZXNuJ3QgZmlyZSB3aGVuIHRleHQgaXMg
ZGVsZXRlZCwgYnV0IGNvbnZlbmllbnRseSwgc2VsZWN0aW9uY2hhbmdlXG4gICAgLy8gYXBwZWFy
cyB0byBmaXJlIGluIGFsbCBvZiB0aGUgcmVtYWluaW5nIGNhc2VzIHNvIHdlIGNhdGNoIHRob3Nl
IGFuZFxuICAgIC8vIGZvcndhcmQgdGhlIGV2ZW50IGlmIHRoZSB2YWx1ZSBoYXMgY2hhbmdlZFxu
ICAgIC8vIEluIGVpdGhlciBjYXNlLCB3ZSBkb24ndCB3YW50IHRvIGNhbGwgdGhlIGV2ZW50IGhh
bmRsZXIgaWYgdGhlIHZhbHVlXG4gICAgLy8gaXMgY2hhbmdlZCBmcm9tIEpTIHNvIHdlIHJlZGVm
aW5lIGEgc2V0dGVyIGZvciBgLnZhbHVlYCB0aGF0IHVwZGF0ZXNcbiAgICAvLyBvdXIgYWN0aXZl
RWxlbWVudFZhbHVlIHZhcmlhYmxlLCBhbGxvd2luZyB1cyB0byBpZ25vcmUgdGhvc2UgY2hhbmdl
c1xuICAgIC8vXG4gICAgLy8gc3RvcFdhdGNoaW5nKCkgc2hvdWxkIGJlIGEgbm9vcCBoZXJlIGJ1
dCB3ZSBjYWxsIGl0IGp1c3QgaW4gY2FzZSB3ZVxuICAgIC8vIG1pc3NlZCBhIGJsdXIgZXZlbnQg
c29tZWhvdy5cbiAgICBzdG9wV2F0Y2hpbmdGb3JWYWx1ZUNoYW5nZSgpO1xuICAgIHN0YXJ0V2F0
Y2hpbmdGb3JWYWx1ZUNoYW5nZSh0YXJnZXQsIHRhcmdldEluc3QpO1xuICB9IGVsc2UgaWYgKHRv
cExldmVsVHlwZSA9PT0gJ3RvcEJsdXInKSB7XG4gICAgc3RvcFdhdGNoaW5nRm9yVmFsdWVDaGFu
Z2UoKTtcbiAgfVxufVxuXG4vLyBGb3IgSUU4IGFuZCBJRTkuXG5mdW5jdGlvbiBnZXRUYXJnZXRJ
bnN0Rm9ySW5wdXRFdmVudFBvbHlmaWxsKHRvcExldmVsVHlwZSwgdGFyZ2V0SW5zdCwgbmF0aXZl
RXZlbnQpIHtcbiAgaWYgKHRvcExldmVsVHlwZSA9PT0gJ3RvcFNlbGVjdGlvbkNoYW5nZScgfHwg
dG9wTGV2ZWxUeXBlID09PSAndG9wS2V5VXAnIHx8IHRvcExldmVsVHlwZSA9PT0gJ3RvcEtleURv
d24nKSB7XG4gICAgLy8gT24gdGhlIHNlbGVjdGlvbmNoYW5nZSBldmVudCwgdGhlIHRhcmdldCBp
cyBqdXN0IGRvY3VtZW50IHdoaWNoIGlzbid0XG4gICAgLy8gaGVscGZ1bCBmb3IgdXMgc28ganVz
dCBjaGVjayBhY3RpdmVFbGVtZW50IGluc3RlYWQuXG4gICAgLy9cbiAgICAvLyA5OSUgb2YgdGhl
IHRpbWUsIGtleWRvd24gYW5kIGtleXVwIGFyZW4ndCBuZWNlc3NhcnkuIElFOCBmYWlscyB0byBm
aXJlXG4gICAgLy8gcHJvcGVydHljaGFuZ2Ugb24gdGhlIGZpcnN0IGlucHV0IGV2ZW50IGFmdGVy
IHNldHRpbmcgYHZhbHVlYCBmcm9tIGFcbiAgICAvLyBzY3JpcHQgYW5kIGZpcmVzIG9ubHkga2V5
ZG93biwga2V5cHJlc3MsIGtleXVwLiBDYXRjaGluZyBrZXl1cCB1c3VhbGx5XG4gICAgLy8gZ2V0
cyBpdCBhbmQgY2F0Y2hpbmcga2V5ZG93biBsZXRzIHVzIGZpcmUgYW4gZXZlbnQgZm9yIHRoZSBm
aXJzdFxuICAgIC8vIGtleXN0cm9rZSBpZiB1c2VyIGRvZXMgYSBrZXkgcmVwZWF0IChpdCdsbCBi
ZSBhIGxpdHRsZSBkZWxheWVkOiByaWdodFxuICAgIC8vIGJlZm9yZSB0aGUgc2Vjb25kIGtleXN0
cm9rZSkuIE90aGVyIGlucHV0IG1ldGhvZHMgKGUuZy4sIHBhc3RlKSBzZWVtIHRvXG4gICAgLy8g
ZmlyZSBzZWxlY3Rpb25jaGFuZ2Ugbm9ybWFsbHkuXG4gICAgcmV0dXJuIGdldEluc3RJZlZhbHVl
Q2hhbmdlZChhY3RpdmVFbGVtZW50SW5zdCwgbmF0aXZlRXZlbnQpO1xuICB9XG59XG5cbi8qKlxu
ICogU0VDVElPTjogaGFuZGxlIGBjbGlja2AgZXZlbnRcbiAqL1xuZnVuY3Rpb24gc2hvdWxkVXNl
Q2xpY2tFdmVudChlbGVtKSB7XG4gIC8vIFVzZSB0aGUgYGNsaWNrYCBldmVudCB0byBkZXRlY3Qg
Y2hhbmdlcyB0byBjaGVja2JveCBhbmQgcmFkaW8gaW5wdXRzLlxuICAvLyBUaGlzIGFwcHJvYWNo
IHdvcmtzIGFjcm9zcyBhbGwgYnJvd3NlcnMsIHdoZXJlYXMgYGNoYW5nZWAgZG9lcyBub3QgZmly
ZVxuICAvLyB1bnRpbCBgYmx1cmAgaW4gSUU4LlxuICB2YXIgbm9kZU5hbWUgPSBlbGVtLm5vZGVO
YW1lO1xuICByZXR1cm4gbm9kZU5hbWUgJiYgbm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PT0gJ2lu
cHV0JyAmJiAoZWxlbS50eXBlID09PSAnY2hlY2tib3gnIHx8IGVsZW0udHlwZSA9PT0gJ3JhZGlv
Jyk7XG59XG5cbmZ1bmN0aW9uIGdldFRhcmdldEluc3RGb3JDbGlja0V2ZW50KHRvcExldmVsVHlw
ZSwgdGFyZ2V0SW5zdCwgbmF0aXZlRXZlbnQpIHtcbiAgaWYgKHRvcExldmVsVHlwZSA9PT0gJ3Rv
cENsaWNrJykge1xuICAgIHJldHVybiBnZXRJbnN0SWZWYWx1ZUNoYW5nZWQodGFyZ2V0SW5zdCwg
bmF0aXZlRXZlbnQpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGdldFRhcmdldEluc3RGb3JJbnB1dE9y
Q2hhbmdlRXZlbnQodG9wTGV2ZWxUeXBlLCB0YXJnZXRJbnN0LCBuYXRpdmVFdmVudCkge1xuICBp
ZiAodG9wTGV2ZWxUeXBlID09PSAndG9wSW5wdXQnIHx8IHRvcExldmVsVHlwZSA9PT0gJ3RvcENo
YW5nZScpIHtcbiAgICByZXR1cm4gZ2V0SW5zdElmVmFsdWVDaGFuZ2VkKHRhcmdldEluc3QsIG5h
dGl2ZUV2ZW50KTtcbiAgfVxufVxuXG5mdW5jdGlvbiBoYW5kbGVDb250cm9sbGVkSW5wdXRCbHVy
KGluc3QsIG5vZGUpIHtcbiAgLy8gVE9ETzogSW4gSUUsIGluc3QgaXMgb2NjYXNpb25hbGx5IG51
bGwuIFdoeT9cbiAgaWYgKGluc3QgPT0gbnVsbCkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8v
IEZpYmVyIGFuZCBSZWFjdERPTSBrZWVwIHdyYXBwZXIgc3RhdGUgaW4gc2VwYXJhdGUgcGxhY2Vz
XG4gIHZhciBzdGF0ZSA9IGluc3QuX3dyYXBwZXJTdGF0ZSB8fCBub2RlLl93cmFwcGVyU3RhdGU7
XG5cbiAgaWYgKCFzdGF0ZSB8fCAhc3RhdGUuY29udHJvbGxlZCB8fCBub2RlLnR5cGUgIT09ICdu
dW1iZXInKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLy8gSWYgY29udHJvbGxlZCwgYXNzaWdu
IHRoZSB2YWx1ZSBhdHRyaWJ1dGUgdG8gdGhlIGN1cnJlbnQgdmFsdWUgb24gYmx1clxuICB2YXIg
dmFsdWUgPSAnJyArIG5vZGUudmFsdWU7XG4gIGlmIChub2RlLmdldEF0dHJpYnV0ZSgndmFsdWUn
KSAhPT0gdmFsdWUpIHtcbiAgICBub2RlLnNldEF0dHJpYnV0ZSgndmFsdWUnLCB2YWx1ZSk7XG4g
IH1cbn1cblxuLyoqXG4gKiBUaGlzIHBsdWdpbiBjcmVhdGVzIGFuIGBvbkNoYW5nZWAgZXZlbnQg
dGhhdCBub3JtYWxpemVzIGNoYW5nZSBldmVudHNcbiAqIGFjcm9zcyBmb3JtIGVsZW1lbnRzLiBU
aGlzIGV2ZW50IGZpcmVzIGF0IGEgdGltZSB3aGVuIGl0J3MgcG9zc2libGUgdG9cbiAqIGNoYW5n
ZSB0aGUgZWxlbWVudCdzIHZhbHVlIHdpdGhvdXQgc2VlaW5nIGEgZmxpY2tlci5cbiAqXG4gKiBT
dXBwb3J0ZWQgZWxlbWVudHMgYXJlOlxuICogLSBpbnB1dCAoc2VlIGBpc1RleHRJbnB1dEVsZW1l
bnRgKVxuICogLSB0ZXh0YXJlYVxuICogLSBzZWxlY3RcbiAqL1xudmFyIENoYW5nZUV2ZW50UGx1
Z2luID0ge1xuICBldmVudFR5cGVzOiBldmVudFR5cGVzLFxuXG4gIF9hbGxvd1NpbXVsYXRlZFBh
c3NUaHJvdWdoOiB0cnVlLFxuICBfaXNJbnB1dEV2ZW50U3VwcG9ydGVkOiBpc0lucHV0RXZlbnRT
dXBwb3J0ZWQsXG5cbiAgZXh0cmFjdEV2ZW50czogZnVuY3Rpb24gKHRvcExldmVsVHlwZSwgdGFy
Z2V0SW5zdCwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KSB7XG4gICAgdmFyIHRhcmdl
dE5vZGUgPSB0YXJnZXRJbnN0ID8gUmVhY3RET01Db21wb25lbnRUcmVlLmdldE5vZGVGcm9tSW5z
dGFuY2UodGFyZ2V0SW5zdCkgOiB3aW5kb3c7XG5cbiAgICB2YXIgZ2V0VGFyZ2V0SW5zdEZ1bmMs
IGhhbmRsZUV2ZW50RnVuYztcbiAgICBpZiAoc2hvdWxkVXNlQ2hhbmdlRXZlbnQodGFyZ2V0Tm9k
ZSkpIHtcbiAgICAgIGlmIChkb2VzQ2hhbmdlRXZlbnRCdWJibGUpIHtcbiAgICAgICAgZ2V0VGFy
Z2V0SW5zdEZ1bmMgPSBnZXRUYXJnZXRJbnN0Rm9yQ2hhbmdlRXZlbnQ7XG4gICAgICB9IGVsc2Ug
e1xuICAgICAgICBoYW5kbGVFdmVudEZ1bmMgPSBoYW5kbGVFdmVudHNGb3JDaGFuZ2VFdmVudElF
ODtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGlzVGV4dElucHV0RWxlbWVudCh0YXJnZXROb2Rl
KSkge1xuICAgICAgaWYgKGlzSW5wdXRFdmVudFN1cHBvcnRlZCkge1xuICAgICAgICBnZXRUYXJn
ZXRJbnN0RnVuYyA9IGdldFRhcmdldEluc3RGb3JJbnB1dE9yQ2hhbmdlRXZlbnQ7XG4gICAgICB9
IGVsc2Uge1xuICAgICAgICBnZXRUYXJnZXRJbnN0RnVuYyA9IGdldFRhcmdldEluc3RGb3JJbnB1
dEV2ZW50UG9seWZpbGw7XG4gICAgICAgIGhhbmRsZUV2ZW50RnVuYyA9IGhhbmRsZUV2ZW50c0Zv
cklucHV0RXZlbnRQb2x5ZmlsbDtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHNob3VsZFVzZUNs
aWNrRXZlbnQodGFyZ2V0Tm9kZSkpIHtcbiAgICAgIGdldFRhcmdldEluc3RGdW5jID0gZ2V0VGFy
Z2V0SW5zdEZvckNsaWNrRXZlbnQ7XG4gICAgfVxuXG4gICAgaWYgKGdldFRhcmdldEluc3RGdW5j
KSB7XG4gICAgICB2YXIgaW5zdCA9IGdldFRhcmdldEluc3RGdW5jKHRvcExldmVsVHlwZSwgdGFy
Z2V0SW5zdCwgbmF0aXZlRXZlbnQpO1xuICAgICAgaWYgKGluc3QpIHtcbiAgICAgICAgdmFyIGV2
ZW50ID0gY3JlYXRlQW5kQWNjdW11bGF0ZUNoYW5nZUV2ZW50KGluc3QsIG5hdGl2ZUV2ZW50LCBu
YXRpdmVFdmVudFRhcmdldCk7XG4gICAgICAgIHJldHVybiBldmVudDtcbiAgICAgIH1cbiAgICB9
XG5cbiAgICBpZiAoaGFuZGxlRXZlbnRGdW5jKSB7XG4gICAgICBoYW5kbGVFdmVudEZ1bmModG9w
TGV2ZWxUeXBlLCB0YXJnZXROb2RlLCB0YXJnZXRJbnN0KTtcbiAgICB9XG5cbiAgICAvLyBXaGVu
IGJsdXJyaW5nLCBzZXQgdGhlIHZhbHVlIGF0dHJpYnV0ZSBmb3IgbnVtYmVyIGlucHV0c1xuICAg
IGlmICh0b3BMZXZlbFR5cGUgPT09ICd0b3BCbHVyJykge1xuICAgICAgaGFuZGxlQ29udHJvbGxl
ZElucHV0Qmx1cih0YXJnZXRJbnN0LCB0YXJnZXROb2RlKTtcbiAgICB9XG4gIH1cbn07XG5cbm1v
ZHVsZS5leHBvcnRzID0gQ2hhbmdlRXZlbnRQbHVnaW47XG5cblxuLyoqKioqKioqKioqKioqKioq
XG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3QtZG9tL2xpYi9DaGFuZ2VFdmVudFBs
dWdpbi5qc1xuICoqIG1vZHVsZSBpZCA9IDEyOFxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiov
IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxs
IHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVu
ZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBp
biB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBn
cmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmls
ZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFy
IF9wcm9kSW52YXJpYW50ID0gcmVxdWlyZSgnLi9yZWFjdFByb2RJbnZhcmlhbnQnKTtcblxudmFy
IERPTUxhenlUcmVlID0gcmVxdWlyZSgnLi9ET01MYXp5VHJlZScpO1xudmFyIEV4ZWN1dGlvbkVu
dmlyb25tZW50ID0gcmVxdWlyZSgnZmJqcy9saWIvRXhlY3V0aW9uRW52aXJvbm1lbnQnKTtcblxu
dmFyIGNyZWF0ZU5vZGVzRnJvbU1hcmt1cCA9IHJlcXVpcmUoJ2ZianMvbGliL2NyZWF0ZU5vZGVz
RnJvbU1hcmt1cCcpO1xudmFyIGVtcHR5RnVuY3Rpb24gPSByZXF1aXJlKCdmYmpzL2xpYi9lbXB0
eUZ1bmN0aW9uJyk7XG52YXIgaW52YXJpYW50ID0gcmVxdWlyZSgnZmJqcy9saWIvaW52YXJpYW50
Jyk7XG5cbnZhciBEYW5nZXIgPSB7XG4gIC8qKlxuICAgKiBSZXBsYWNlcyBhIG5vZGUgd2l0aCBh
IHN0cmluZyBvZiBtYXJrdXAgYXQgaXRzIGN1cnJlbnQgcG9zaXRpb24gd2l0aGluIGl0c1xuICAg
KiBwYXJlbnQuIFRoZSBtYXJrdXAgbXVzdCByZW5kZXIgaW50byBhIHNpbmdsZSByb290IG5vZGUu
XG4gICAqXG4gICAqIEBwYXJhbSB7RE9NRWxlbWVudH0gb2xkQ2hpbGQgQ2hpbGQgbm9kZSB0byBy
ZXBsYWNlLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbWFya3VwIE1hcmt1cCB0byByZW5kZXIgaW4g
cGxhY2Ugb2YgdGhlIGNoaWxkIG5vZGUuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgZGFuZ2Vy
b3VzbHlSZXBsYWNlTm9kZVdpdGhNYXJrdXA6IGZ1bmN0aW9uIChvbGRDaGlsZCwgbWFya3VwKSB7
XG4gICAgIUV4ZWN1dGlvbkVudmlyb25tZW50LmNhblVzZURPTSA/IHByb2Nlc3MuZW52Lk5PREVf
RU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdkYW5nZXJvdXNseVJlcGxh
Y2VOb2RlV2l0aE1hcmt1cCguLi4pOiBDYW5ub3QgcmVuZGVyIG1hcmt1cCBpbiBhIHdvcmtlciB0
aHJlYWQuIE1ha2Ugc3VyZSBgd2luZG93YCBhbmQgYGRvY3VtZW50YCBhcmUgYXZhaWxhYmxlIGds
b2JhbGx5IGJlZm9yZSByZXF1aXJpbmcgUmVhY3Qgd2hlbiB1bml0IHRlc3Rpbmcgb3IgdXNlIFJl
YWN0RE9NU2VydmVyLnJlbmRlclRvU3RyaW5nKCkgZm9yIHNlcnZlciByZW5kZXJpbmcuJykgOiBf
cHJvZEludmFyaWFudCgnNTYnKSA6IHZvaWQgMDtcbiAgICAhbWFya3VwID8gcHJvY2Vzcy5lbnYu
Tk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ2Rhbmdlcm91c2x5
UmVwbGFjZU5vZGVXaXRoTWFya3VwKC4uLik6IE1pc3NpbmcgbWFya3VwLicpIDogX3Byb2RJbnZh
cmlhbnQoJzU3JykgOiB2b2lkIDA7XG4gICAgIShvbGRDaGlsZC5ub2RlTmFtZSAhPT0gJ0hUTUwn
KSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFs
c2UsICdkYW5nZXJvdXNseVJlcGxhY2VOb2RlV2l0aE1hcmt1cCguLi4pOiBDYW5ub3QgcmVwbGFj
ZSBtYXJrdXAgb2YgdGhlIDxodG1sPiBub2RlLiBUaGlzIGlzIGJlY2F1c2UgYnJvd3NlciBxdWly
a3MgbWFrZSB0aGlzIHVucmVsaWFibGUgYW5kL29yIHNsb3cuIElmIHlvdSB3YW50IHRvIHJlbmRl
ciB0byB0aGUgcm9vdCB5b3UgbXVzdCB1c2Ugc2VydmVyIHJlbmRlcmluZy4gU2VlIFJlYWN0RE9N
U2VydmVyLnJlbmRlclRvU3RyaW5nKCkuJykgOiBfcHJvZEludmFyaWFudCgnNTgnKSA6IHZvaWQg
MDtcblxuICAgIGlmICh0eXBlb2YgbWFya3VwID09PSAnc3RyaW5nJykge1xuICAgICAgdmFyIG5l
d0NoaWxkID0gY3JlYXRlTm9kZXNGcm9tTWFya3VwKG1hcmt1cCwgZW1wdHlGdW5jdGlvbilbMF07
XG4gICAgICBvbGRDaGlsZC5wYXJlbnROb2RlLnJlcGxhY2VDaGlsZChuZXdDaGlsZCwgb2xkQ2hp
bGQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBET01MYXp5VHJlZS5yZXBsYWNlQ2hpbGRXaXRoVHJl
ZShvbGRDaGlsZCwgbWFya3VwKTtcbiAgICB9XG4gIH1cbn07XG5cbm1vZHVsZS5leHBvcnRzID0g
RGFuZ2VyO1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiog
Li9+L3JlYWN0LWRvbS9saWIvRGFuZ2VyLmpzXG4gKiogbW9kdWxlIGlkID0gMTI5XG4gKiogbW9k
dWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZh
Y2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNl
IGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRo
ZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0
cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3Vu
ZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxu
J3VzZSBzdHJpY3QnO1xuXG4vKipcbiAqIE1vZHVsZSB0aGF0IGlzIGluamVjdGFibGUgaW50byBg
RXZlbnRQbHVnaW5IdWJgLCB0aGF0IHNwZWNpZmllcyBhXG4gKiBkZXRlcm1pbmlzdGljIG9yZGVy
aW5nIG9mIGBFdmVudFBsdWdpbmBzLiBBIGNvbnZlbmllbnQgd2F5IHRvIHJlYXNvbiBhYm91dFxu
ICogcGx1Z2lucywgd2l0aG91dCBoYXZpbmcgdG8gcGFja2FnZSBldmVyeSBvbmUgb2YgdGhlbS4g
VGhpcyBpcyBiZXR0ZXIgdGhhblxuICogaGF2aW5nIHBsdWdpbnMgYmUgb3JkZXJlZCBpbiB0aGUg
c2FtZSBvcmRlciB0aGF0IHRoZXkgYXJlIGluamVjdGVkIGJlY2F1c2VcbiAqIHRoYXQgb3JkZXJp
bmcgd291bGQgYmUgaW5mbHVlbmNlZCBieSB0aGUgcGFja2FnaW5nIG9yZGVyLlxuICogYFJlc3Bv
bmRlckV2ZW50UGx1Z2luYCBtdXN0IG9jY3VyIGJlZm9yZSBgU2ltcGxlRXZlbnRQbHVnaW5gIHNv
IHRoYXRcbiAqIHByZXZlbnRpbmcgZGVmYXVsdCBvbiBldmVudHMgaXMgY29udmVuaWVudCBpbiBg
U2ltcGxlRXZlbnRQbHVnaW5gIGhhbmRsZXJzLlxuICovXG5cbnZhciBEZWZhdWx0RXZlbnRQbHVn
aW5PcmRlciA9IFsnUmVzcG9uZGVyRXZlbnRQbHVnaW4nLCAnU2ltcGxlRXZlbnRQbHVnaW4nLCAn
VGFwRXZlbnRQbHVnaW4nLCAnRW50ZXJMZWF2ZUV2ZW50UGx1Z2luJywgJ0NoYW5nZUV2ZW50UGx1
Z2luJywgJ1NlbGVjdEV2ZW50UGx1Z2luJywgJ0JlZm9yZUlucHV0RXZlbnRQbHVnaW4nXTtcblxu
bW9kdWxlLmV4cG9ydHMgPSBEZWZhdWx0RXZlbnRQbHVnaW5PcmRlcjtcblxuXG4vKioqKioqKioq
KioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFjdC1kb20vbGliL0RlZmF1
bHRFdmVudFBsdWdpbk9yZGVyLmpzXG4gKiogbW9kdWxlIGlkID0gMTMwXG4gKiogbW9kdWxlIGNo
dW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29r
LCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUg
aXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICog
TElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBB
biBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0
aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuJ3VzZSBz
dHJpY3QnO1xuXG52YXIgRXZlbnRQcm9wYWdhdG9ycyA9IHJlcXVpcmUoJy4vRXZlbnRQcm9wYWdh
dG9ycycpO1xudmFyIFJlYWN0RE9NQ29tcG9uZW50VHJlZSA9IHJlcXVpcmUoJy4vUmVhY3RET01D
b21wb25lbnRUcmVlJyk7XG52YXIgU3ludGhldGljTW91c2VFdmVudCA9IHJlcXVpcmUoJy4vU3lu
dGhldGljTW91c2VFdmVudCcpO1xuXG52YXIgZXZlbnRUeXBlcyA9IHtcbiAgbW91c2VFbnRlcjog
e1xuICAgIHJlZ2lzdHJhdGlvbk5hbWU6ICdvbk1vdXNlRW50ZXInLFxuICAgIGRlcGVuZGVuY2ll
czogWyd0b3BNb3VzZU91dCcsICd0b3BNb3VzZU92ZXInXVxuICB9LFxuICBtb3VzZUxlYXZlOiB7
XG4gICAgcmVnaXN0cmF0aW9uTmFtZTogJ29uTW91c2VMZWF2ZScsXG4gICAgZGVwZW5kZW5jaWVz
OiBbJ3RvcE1vdXNlT3V0JywgJ3RvcE1vdXNlT3ZlciddXG4gIH1cbn07XG5cbnZhciBFbnRlckxl
YXZlRXZlbnRQbHVnaW4gPSB7XG4gIGV2ZW50VHlwZXM6IGV2ZW50VHlwZXMsXG5cbiAgLyoqXG4g
ICAqIEZvciBhbG1vc3QgZXZlcnkgaW50ZXJhY3Rpb24gd2UgY2FyZSBhYm91dCwgdGhlcmUgd2ls
bCBiZSBib3RoIGEgdG9wLWxldmVsXG4gICAqIGBtb3VzZW92ZXJgIGFuZCBgbW91c2VvdXRgIGV2
ZW50IHRoYXQgb2NjdXJzLiBPbmx5IHVzZSBgbW91c2VvdXRgIHNvIHRoYXRcbiAgICogd2UgZG8g
bm90IGV4dHJhY3QgZHVwbGljYXRlIGV2ZW50cy4gSG93ZXZlciwgbW92aW5nIHRoZSBtb3VzZSBp
bnRvIHRoZVxuICAgKiBicm93c2VyIGZyb20gb3V0c2lkZSB3aWxsIG5vdCBmaXJlIGEgYG1vdXNl
b3V0YCBldmVudC4gSW4gdGhpcyBjYXNlLCB3ZSB1c2VcbiAgICogdGhlIGBtb3VzZW92ZXJgIHRv
cC1sZXZlbCBldmVudC5cbiAgICovXG4gIGV4dHJhY3RFdmVudHM6IGZ1bmN0aW9uICh0b3BMZXZl
bFR5cGUsIHRhcmdldEluc3QsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCkge1xuICAg
IGlmICh0b3BMZXZlbFR5cGUgPT09ICd0b3BNb3VzZU92ZXInICYmIChuYXRpdmVFdmVudC5yZWxh
dGVkVGFyZ2V0IHx8IG5hdGl2ZUV2ZW50LmZyb21FbGVtZW50KSkge1xuICAgICAgcmV0dXJuIG51
bGw7XG4gICAgfVxuICAgIGlmICh0b3BMZXZlbFR5cGUgIT09ICd0b3BNb3VzZU91dCcgJiYgdG9w
TGV2ZWxUeXBlICE9PSAndG9wTW91c2VPdmVyJykge1xuICAgICAgLy8gTXVzdCBub3QgYmUgYSBt
b3VzZSBpbiBvciBtb3VzZSBvdXQgLSBpZ25vcmluZy5cbiAgICAgIHJldHVybiBudWxsO1xuICAg
IH1cblxuICAgIHZhciB3aW47XG4gICAgaWYgKG5hdGl2ZUV2ZW50VGFyZ2V0LndpbmRvdyA9PT0g
bmF0aXZlRXZlbnRUYXJnZXQpIHtcbiAgICAgIC8vIGBuYXRpdmVFdmVudFRhcmdldGAgaXMgcHJv
YmFibHkgYSB3aW5kb3cgb2JqZWN0LlxuICAgICAgd2luID0gbmF0aXZlRXZlbnRUYXJnZXQ7XG4g
ICAgfSBlbHNlIHtcbiAgICAgIC8vIFRPRE86IEZpZ3VyZSBvdXQgd2h5IGBvd25lckRvY3VtZW50
YCBpcyBzb21ldGltZXMgdW5kZWZpbmVkIGluIElFOC5cbiAgICAgIHZhciBkb2MgPSBuYXRpdmVF
dmVudFRhcmdldC5vd25lckRvY3VtZW50O1xuICAgICAgaWYgKGRvYykge1xuICAgICAgICB3aW4g
PSBkb2MuZGVmYXVsdFZpZXcgfHwgZG9jLnBhcmVudFdpbmRvdztcbiAgICAgIH0gZWxzZSB7XG4g
ICAgICAgIHdpbiA9IHdpbmRvdztcbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgZnJvbTtcbiAg
ICB2YXIgdG87XG4gICAgaWYgKHRvcExldmVsVHlwZSA9PT0gJ3RvcE1vdXNlT3V0Jykge1xuICAg
ICAgZnJvbSA9IHRhcmdldEluc3Q7XG4gICAgICB2YXIgcmVsYXRlZCA9IG5hdGl2ZUV2ZW50LnJl
bGF0ZWRUYXJnZXQgfHwgbmF0aXZlRXZlbnQudG9FbGVtZW50O1xuICAgICAgdG8gPSByZWxhdGVk
ID8gUmVhY3RET01Db21wb25lbnRUcmVlLmdldENsb3Nlc3RJbnN0YW5jZUZyb21Ob2RlKHJlbGF0
ZWQpIDogbnVsbDtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gTW92aW5nIHRvIGEgbm9kZSBmcm9t
IG91dHNpZGUgdGhlIHdpbmRvdy5cbiAgICAgIGZyb20gPSBudWxsO1xuICAgICAgdG8gPSB0YXJn
ZXRJbnN0O1xuICAgIH1cblxuICAgIGlmIChmcm9tID09PSB0bykge1xuICAgICAgLy8gTm90aGlu
ZyBwZXJ0YWlucyB0byBvdXIgbWFuYWdlZCBjb21wb25lbnRzLlxuICAgICAgcmV0dXJuIG51bGw7
XG4gICAgfVxuXG4gICAgdmFyIGZyb21Ob2RlID0gZnJvbSA9PSBudWxsID8gd2luIDogUmVhY3RE
T01Db21wb25lbnRUcmVlLmdldE5vZGVGcm9tSW5zdGFuY2UoZnJvbSk7XG4gICAgdmFyIHRvTm9k
ZSA9IHRvID09IG51bGwgPyB3aW4gOiBSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0Tm9kZUZyb21J
bnN0YW5jZSh0byk7XG5cbiAgICB2YXIgbGVhdmUgPSBTeW50aGV0aWNNb3VzZUV2ZW50LmdldFBv
b2xlZChldmVudFR5cGVzLm1vdXNlTGVhdmUsIGZyb20sIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVu
dFRhcmdldCk7XG4gICAgbGVhdmUudHlwZSA9ICdtb3VzZWxlYXZlJztcbiAgICBsZWF2ZS50YXJn
ZXQgPSBmcm9tTm9kZTtcbiAgICBsZWF2ZS5yZWxhdGVkVGFyZ2V0ID0gdG9Ob2RlO1xuXG4gICAg
dmFyIGVudGVyID0gU3ludGhldGljTW91c2VFdmVudC5nZXRQb29sZWQoZXZlbnRUeXBlcy5tb3Vz
ZUVudGVyLCB0bywgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KTtcbiAgICBlbnRlci50
eXBlID0gJ21vdXNlZW50ZXInO1xuICAgIGVudGVyLnRhcmdldCA9IHRvTm9kZTtcbiAgICBlbnRl
ci5yZWxhdGVkVGFyZ2V0ID0gZnJvbU5vZGU7XG5cbiAgICBFdmVudFByb3BhZ2F0b3JzLmFjY3Vt
dWxhdGVFbnRlckxlYXZlRGlzcGF0Y2hlcyhsZWF2ZSwgZW50ZXIsIGZyb20sIHRvKTtcblxuICAg
IHJldHVybiBbbGVhdmUsIGVudGVyXTtcbiAgfVxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBFbnRl
ckxlYXZlRXZlbnRQbHVnaW47XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBG
T09URVJcbiAqKiAuL34vcmVhY3QtZG9tL2xpYi9FbnRlckxlYXZlRXZlbnRQbHVnaW4uanNcbiAq
KiBtb2R1bGUgaWQgPSAxMzFcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICog
Q29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNE
LXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qg
ZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9m
IHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNh
bWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBfYXNzaWduID0g
cmVxdWlyZSgnb2JqZWN0LWFzc2lnbicpO1xuXG52YXIgUG9vbGVkQ2xhc3MgPSByZXF1aXJlKCcu
L1Bvb2xlZENsYXNzJyk7XG5cbnZhciBnZXRUZXh0Q29udGVudEFjY2Vzc29yID0gcmVxdWlyZSgn
Li9nZXRUZXh0Q29udGVudEFjY2Vzc29yJyk7XG5cbi8qKlxuICogVGhpcyBoZWxwZXIgY2xhc3Mg
c3RvcmVzIGluZm9ybWF0aW9uIGFib3V0IHRleHQgY29udGVudCBvZiBhIHRhcmdldCBub2RlLFxu
ICogYWxsb3dpbmcgY29tcGFyaXNvbiBvZiBjb250ZW50IGJlZm9yZSBhbmQgYWZ0ZXIgYSBnaXZl
biBldmVudC5cbiAqXG4gKiBJZGVudGlmeSB0aGUgbm9kZSB3aGVyZSBzZWxlY3Rpb24gY3VycmVu
dGx5IGJlZ2lucywgdGhlbiBvYnNlcnZlXG4gKiBib3RoIGl0cyB0ZXh0IGNvbnRlbnQgYW5kIGl0
cyBjdXJyZW50IHBvc2l0aW9uIGluIHRoZSBET00uIFNpbmNlIHRoZVxuICogYnJvd3NlciBtYXkg
bmF0aXZlbHkgcmVwbGFjZSB0aGUgdGFyZ2V0IG5vZGUgZHVyaW5nIGNvbXBvc2l0aW9uLCB3ZSBj
YW5cbiAqIHVzZSBpdHMgcG9zaXRpb24gdG8gZmluZCBpdHMgcmVwbGFjZW1lbnQuXG4gKlxuICog
QHBhcmFtIHtET01FdmVudFRhcmdldH0gcm9vdFxuICovXG5mdW5jdGlvbiBGYWxsYmFja0NvbXBv
c2l0aW9uU3RhdGUocm9vdCkge1xuICB0aGlzLl9yb290ID0gcm9vdDtcbiAgdGhpcy5fc3RhcnRU
ZXh0ID0gdGhpcy5nZXRUZXh0KCk7XG4gIHRoaXMuX2ZhbGxiYWNrVGV4dCA9IG51bGw7XG59XG5c
bl9hc3NpZ24oRmFsbGJhY2tDb21wb3NpdGlvblN0YXRlLnByb3RvdHlwZSwge1xuICBkZXN0cnVj
dG9yOiBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5fcm9vdCA9IG51bGw7XG4gICAgdGhpcy5fc3Rh
cnRUZXh0ID0gbnVsbDtcbiAgICB0aGlzLl9mYWxsYmFja1RleHQgPSBudWxsO1xuICB9LFxuXG4g
IC8qKlxuICAgKiBHZXQgY3VycmVudCB0ZXh0IG9mIGlucHV0LlxuICAgKlxuICAgKiBAcmV0dXJu
IHtzdHJpbmd9XG4gICAqL1xuICBnZXRUZXh0OiBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKCd2YWx1
ZScgaW4gdGhpcy5fcm9vdCkge1xuICAgICAgcmV0dXJuIHRoaXMuX3Jvb3QudmFsdWU7XG4gICAg
fVxuICAgIHJldHVybiB0aGlzLl9yb290W2dldFRleHRDb250ZW50QWNjZXNzb3IoKV07XG4gIH0s
XG5cbiAgLyoqXG4gICAqIERldGVybWluZSB0aGUgZGlmZmVyaW5nIHN1YnN0cmluZyBiZXR3ZWVu
IHRoZSBpbml0aWFsbHkgc3RvcmVkXG4gICAqIHRleHQgY29udGVudCBhbmQgdGhlIGN1cnJlbnQg
Y29udGVudC5cbiAgICpcbiAgICogQHJldHVybiB7c3RyaW5nfVxuICAgKi9cbiAgZ2V0RGF0YTog
ZnVuY3Rpb24gKCkge1xuICAgIGlmICh0aGlzLl9mYWxsYmFja1RleHQpIHtcbiAgICAgIHJldHVy
biB0aGlzLl9mYWxsYmFja1RleHQ7XG4gICAgfVxuXG4gICAgdmFyIHN0YXJ0O1xuICAgIHZhciBz
dGFydFZhbHVlID0gdGhpcy5fc3RhcnRUZXh0O1xuICAgIHZhciBzdGFydExlbmd0aCA9IHN0YXJ0
VmFsdWUubGVuZ3RoO1xuICAgIHZhciBlbmQ7XG4gICAgdmFyIGVuZFZhbHVlID0gdGhpcy5nZXRU
ZXh0KCk7XG4gICAgdmFyIGVuZExlbmd0aCA9IGVuZFZhbHVlLmxlbmd0aDtcblxuICAgIGZvciAo
c3RhcnQgPSAwOyBzdGFydCA8IHN0YXJ0TGVuZ3RoOyBzdGFydCsrKSB7XG4gICAgICBpZiAoc3Rh
cnRWYWx1ZVtzdGFydF0gIT09IGVuZFZhbHVlW3N0YXJ0XSkge1xuICAgICAgICBicmVhaztcbiAg
ICAgIH1cbiAgICB9XG5cbiAgICB2YXIgbWluRW5kID0gc3RhcnRMZW5ndGggLSBzdGFydDtcbiAg
ICBmb3IgKGVuZCA9IDE7IGVuZCA8PSBtaW5FbmQ7IGVuZCsrKSB7XG4gICAgICBpZiAoc3RhcnRW
YWx1ZVtzdGFydExlbmd0aCAtIGVuZF0gIT09IGVuZFZhbHVlW2VuZExlbmd0aCAtIGVuZF0pIHtc
biAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIHNsaWNlVGFpbCA9IGVu
ZCA+IDEgPyAxIC0gZW5kIDogdW5kZWZpbmVkO1xuICAgIHRoaXMuX2ZhbGxiYWNrVGV4dCA9IGVu
ZFZhbHVlLnNsaWNlKHN0YXJ0LCBzbGljZVRhaWwpO1xuICAgIHJldHVybiB0aGlzLl9mYWxsYmFj
a1RleHQ7XG4gIH1cbn0pO1xuXG5Qb29sZWRDbGFzcy5hZGRQb29saW5nVG8oRmFsbGJhY2tDb21w
b3NpdGlvblN0YXRlKTtcblxubW9kdWxlLmV4cG9ydHMgPSBGYWxsYmFja0NvbXBvc2l0aW9uU3Rh
dGU7XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34v
cmVhY3QtZG9tL2xpYi9GYWxsYmFja0NvbXBvc2l0aW9uU3RhdGUuanNcbiAqKiBtb2R1bGUgaWQg
PSAxMzJcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIw
MTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxu
ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vu
c2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9m
IHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdo
dHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5
LlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBET01Qcm9wZXJ0eSA9IHJlcXVpcmUo
Jy4vRE9NUHJvcGVydHknKTtcblxudmFyIE1VU1RfVVNFX1BST1BFUlRZID0gRE9NUHJvcGVydHku
aW5qZWN0aW9uLk1VU1RfVVNFX1BST1BFUlRZO1xudmFyIEhBU19CT09MRUFOX1ZBTFVFID0gRE9N
UHJvcGVydHkuaW5qZWN0aW9uLkhBU19CT09MRUFOX1ZBTFVFO1xudmFyIEhBU19OVU1FUklDX1ZB
TFVFID0gRE9NUHJvcGVydHkuaW5qZWN0aW9uLkhBU19OVU1FUklDX1ZBTFVFO1xudmFyIEhBU19Q
T1NJVElWRV9OVU1FUklDX1ZBTFVFID0gRE9NUHJvcGVydHkuaW5qZWN0aW9uLkhBU19QT1NJVElW
RV9OVU1FUklDX1ZBTFVFO1xudmFyIEhBU19PVkVSTE9BREVEX0JPT0xFQU5fVkFMVUUgPSBET01Q
cm9wZXJ0eS5pbmplY3Rpb24uSEFTX09WRVJMT0FERURfQk9PTEVBTl9WQUxVRTtcblxudmFyIEhU
TUxET01Qcm9wZXJ0eUNvbmZpZyA9IHtcbiAgaXNDdXN0b21BdHRyaWJ1dGU6IFJlZ0V4cC5wcm90
b3R5cGUudGVzdC5iaW5kKG5ldyBSZWdFeHAoJ14oZGF0YXxhcmlhKS1bJyArIERPTVByb3BlcnR5
LkFUVFJJQlVURV9OQU1FX0NIQVIgKyAnXSokJykpLFxuICBQcm9wZXJ0aWVzOiB7XG4gICAgLyoq
XG4gICAgICogU3RhbmRhcmQgUHJvcGVydGllc1xuICAgICAqL1xuICAgIGFjY2VwdDogMCxcbiAg
ICBhY2NlcHRDaGFyc2V0OiAwLFxuICAgIGFjY2Vzc0tleTogMCxcbiAgICBhY3Rpb246IDAsXG4g
ICAgYWxsb3dGdWxsU2NyZWVuOiBIQVNfQk9PTEVBTl9WQUxVRSxcbiAgICBhbGxvd1RyYW5zcGFy
ZW5jeTogMCxcbiAgICBhbHQ6IDAsXG4gICAgLy8gc3BlY2lmaWVzIHRhcmdldCBjb250ZXh0IGZv
ciBsaW5rcyB3aXRoIGBwcmVsb2FkYCB0eXBlXG4gICAgYXM6IDAsXG4gICAgYXN5bmM6IEhBU19C
T09MRUFOX1ZBTFVFLFxuICAgIGF1dG9Db21wbGV0ZTogMCxcbiAgICAvLyBhdXRvRm9jdXMgaXMg
cG9seWZpbGxlZC9ub3JtYWxpemVkIGJ5IEF1dG9Gb2N1c1V0aWxzXG4gICAgLy8gYXV0b0ZvY3Vz
OiBIQVNfQk9PTEVBTl9WQUxVRSxcbiAgICBhdXRvUGxheTogSEFTX0JPT0xFQU5fVkFMVUUsXG4g
ICAgY2FwdHVyZTogSEFTX0JPT0xFQU5fVkFMVUUsXG4gICAgY2VsbFBhZGRpbmc6IDAsXG4gICAg
Y2VsbFNwYWNpbmc6IDAsXG4gICAgY2hhclNldDogMCxcbiAgICBjaGFsbGVuZ2U6IDAsXG4gICAg
Y2hlY2tlZDogTVVTVF9VU0VfUFJPUEVSVFkgfCBIQVNfQk9PTEVBTl9WQUxVRSxcbiAgICBjaXRl
OiAwLFxuICAgIGNsYXNzSUQ6IDAsXG4gICAgY2xhc3NOYW1lOiAwLFxuICAgIGNvbHM6IEhBU19Q
T1NJVElWRV9OVU1FUklDX1ZBTFVFLFxuICAgIGNvbFNwYW46IDAsXG4gICAgY29udGVudDogMCxc
biAgICBjb250ZW50RWRpdGFibGU6IDAsXG4gICAgY29udGV4dE1lbnU6IDAsXG4gICAgY29udHJv
bHM6IEhBU19CT09MRUFOX1ZBTFVFLFxuICAgIGNvb3JkczogMCxcbiAgICBjcm9zc09yaWdpbjog
MCxcbiAgICBkYXRhOiAwLCAvLyBGb3IgYDxvYmplY3QgLz5gIGFjdHMgYXMgYHNyY2AuXG4gICAg
ZGF0ZVRpbWU6IDAsXG4gICAgJ2RlZmF1bHQnOiBIQVNfQk9PTEVBTl9WQUxVRSxcbiAgICBkZWZl
cjogSEFTX0JPT0xFQU5fVkFMVUUsXG4gICAgZGlyOiAwLFxuICAgIGRpc2FibGVkOiBIQVNfQk9P
TEVBTl9WQUxVRSxcbiAgICBkb3dubG9hZDogSEFTX09WRVJMT0FERURfQk9PTEVBTl9WQUxVRSxc
biAgICBkcmFnZ2FibGU6IDAsXG4gICAgZW5jVHlwZTogMCxcbiAgICBmb3JtOiAwLFxuICAgIGZv
cm1BY3Rpb246IDAsXG4gICAgZm9ybUVuY1R5cGU6IDAsXG4gICAgZm9ybU1ldGhvZDogMCxcbiAg
ICBmb3JtTm9WYWxpZGF0ZTogSEFTX0JPT0xFQU5fVkFMVUUsXG4gICAgZm9ybVRhcmdldDogMCxc
biAgICBmcmFtZUJvcmRlcjogMCxcbiAgICBoZWFkZXJzOiAwLFxuICAgIGhlaWdodDogMCxcbiAg
ICBoaWRkZW46IEhBU19CT09MRUFOX1ZBTFVFLFxuICAgIGhpZ2g6IDAsXG4gICAgaHJlZjogMCxc
biAgICBocmVmTGFuZzogMCxcbiAgICBodG1sRm9yOiAwLFxuICAgIGh0dHBFcXVpdjogMCxcbiAg
ICBpY29uOiAwLFxuICAgIGlkOiAwLFxuICAgIGlucHV0TW9kZTogMCxcbiAgICBpbnRlZ3JpdHk6
IDAsXG4gICAgaXM6IDAsXG4gICAga2V5UGFyYW1zOiAwLFxuICAgIGtleVR5cGU6IDAsXG4gICAg
a2luZDogMCxcbiAgICBsYWJlbDogMCxcbiAgICBsYW5nOiAwLFxuICAgIGxpc3Q6IDAsXG4gICAg
bG9vcDogSEFTX0JPT0xFQU5fVkFMVUUsXG4gICAgbG93OiAwLFxuICAgIG1hbmlmZXN0OiAwLFxu
ICAgIG1hcmdpbkhlaWdodDogMCxcbiAgICBtYXJnaW5XaWR0aDogMCxcbiAgICBtYXg6IDAsXG4g
ICAgbWF4TGVuZ3RoOiAwLFxuICAgIG1lZGlhOiAwLFxuICAgIG1lZGlhR3JvdXA6IDAsXG4gICAg
bWV0aG9kOiAwLFxuICAgIG1pbjogMCxcbiAgICBtaW5MZW5ndGg6IDAsXG4gICAgLy8gQ2F1dGlv
bjsgYG9wdGlvbi5zZWxlY3RlZGAgaXMgbm90IHVwZGF0ZWQgaWYgYHNlbGVjdC5tdWx0aXBsZWAg
aXNcbiAgICAvLyBkaXNhYmxlZCB3aXRoIGByZW1vdmVBdHRyaWJ1dGVgLlxuICAgIG11bHRpcGxl
OiBNVVNUX1VTRV9QUk9QRVJUWSB8IEhBU19CT09MRUFOX1ZBTFVFLFxuICAgIG11dGVkOiBNVVNU
X1VTRV9QUk9QRVJUWSB8IEhBU19CT09MRUFOX1ZBTFVFLFxuICAgIG5hbWU6IDAsXG4gICAgbm9u
Y2U6IDAsXG4gICAgbm9WYWxpZGF0ZTogSEFTX0JPT0xFQU5fVkFMVUUsXG4gICAgb3BlbjogSEFT
X0JPT0xFQU5fVkFMVUUsXG4gICAgb3B0aW11bTogMCxcbiAgICBwYXR0ZXJuOiAwLFxuICAgIHBs
YWNlaG9sZGVyOiAwLFxuICAgIHBsYXlzSW5saW5lOiBIQVNfQk9PTEVBTl9WQUxVRSxcbiAgICBw
b3N0ZXI6IDAsXG4gICAgcHJlbG9hZDogMCxcbiAgICBwcm9maWxlOiAwLFxuICAgIHJhZGlvR3Jv
dXA6IDAsXG4gICAgcmVhZE9ubHk6IEhBU19CT09MRUFOX1ZBTFVFLFxuICAgIHJlZmVycmVyUG9s
aWN5OiAwLFxuICAgIHJlbDogMCxcbiAgICByZXF1aXJlZDogSEFTX0JPT0xFQU5fVkFMVUUsXG4g
ICAgcmV2ZXJzZWQ6IEhBU19CT09MRUFOX1ZBTFVFLFxuICAgIHJvbGU6IDAsXG4gICAgcm93czog
SEFTX1BPU0lUSVZFX05VTUVSSUNfVkFMVUUsXG4gICAgcm93U3BhbjogSEFTX05VTUVSSUNfVkFM
VUUsXG4gICAgc2FuZGJveDogMCxcbiAgICBzY29wZTogMCxcbiAgICBzY29wZWQ6IEhBU19CT09M
RUFOX1ZBTFVFLFxuICAgIHNjcm9sbGluZzogMCxcbiAgICBzZWFtbGVzczogSEFTX0JPT0xFQU5f
VkFMVUUsXG4gICAgc2VsZWN0ZWQ6IE1VU1RfVVNFX1BST1BFUlRZIHwgSEFTX0JPT0xFQU5fVkFM
VUUsXG4gICAgc2hhcGU6IDAsXG4gICAgc2l6ZTogSEFTX1BPU0lUSVZFX05VTUVSSUNfVkFMVUUs
XG4gICAgc2l6ZXM6IDAsXG4gICAgc3BhbjogSEFTX1BPU0lUSVZFX05VTUVSSUNfVkFMVUUsXG4g
ICAgc3BlbGxDaGVjazogMCxcbiAgICBzcmM6IDAsXG4gICAgc3JjRG9jOiAwLFxuICAgIHNyY0xh
bmc6IDAsXG4gICAgc3JjU2V0OiAwLFxuICAgIHN0YXJ0OiBIQVNfTlVNRVJJQ19WQUxVRSxcbiAg
ICBzdGVwOiAwLFxuICAgIHN0eWxlOiAwLFxuICAgIHN1bW1hcnk6IDAsXG4gICAgdGFiSW5kZXg6
IDAsXG4gICAgdGFyZ2V0OiAwLFxuICAgIHRpdGxlOiAwLFxuICAgIC8vIFNldHRpbmcgLnR5cGUg
dGhyb3dzIG9uIG5vbi08aW5wdXQ+IHRhZ3NcbiAgICB0eXBlOiAwLFxuICAgIHVzZU1hcDogMCxc
biAgICB2YWx1ZTogMCxcbiAgICB3aWR0aDogMCxcbiAgICB3bW9kZTogMCxcbiAgICB3cmFwOiAw
LFxuXG4gICAgLyoqXG4gICAgICogUkRGYSBQcm9wZXJ0aWVzXG4gICAgICovXG4gICAgYWJvdXQ6
IDAsXG4gICAgZGF0YXR5cGU6IDAsXG4gICAgaW5saXN0OiAwLFxuICAgIHByZWZpeDogMCxcbiAg
ICAvLyBwcm9wZXJ0eSBpcyBhbHNvIHN1cHBvcnRlZCBmb3IgT3BlbkdyYXBoIGluIG1ldGEgdGFn
cy5cbiAgICBwcm9wZXJ0eTogMCxcbiAgICByZXNvdXJjZTogMCxcbiAgICAndHlwZW9mJzogMCxc
biAgICB2b2NhYjogMCxcblxuICAgIC8qKlxuICAgICAqIE5vbi1zdGFuZGFyZCBQcm9wZXJ0aWVz
XG4gICAgICovXG4gICAgLy8gYXV0b0NhcGl0YWxpemUgYW5kIGF1dG9Db3JyZWN0IGFyZSBzdXBw
b3J0ZWQgaW4gTW9iaWxlIFNhZmFyaSBmb3JcbiAgICAvLyBrZXlib2FyZCBoaW50cy5cbiAgICBh
dXRvQ2FwaXRhbGl6ZTogMCxcbiAgICBhdXRvQ29ycmVjdDogMCxcbiAgICAvLyBhdXRvU2F2ZSBh
bGxvd3MgV2ViS2l0L0JsaW5rIHRvIHBlcnNpc3QgdmFsdWVzIG9mIGlucHV0IGZpZWxkcyBvbiBw
YWdlIHJlbG9hZHNcbiAgICBhdXRvU2F2ZTogMCxcbiAgICAvLyBjb2xvciBpcyBmb3IgU2FmYXJp
IG1hc2staWNvbiBsaW5rXG4gICAgY29sb3I6IDAsXG4gICAgLy8gaXRlbVByb3AsIGl0ZW1TY29w
ZSwgaXRlbVR5cGUgYXJlIGZvclxuICAgIC8vIE1pY3JvZGF0YSBzdXBwb3J0LiBTZWUgaHR0cDov
L3NjaGVtYS5vcmcvZG9jcy9ncy5odG1sXG4gICAgaXRlbVByb3A6IDAsXG4gICAgaXRlbVNjb3Bl
OiBIQVNfQk9PTEVBTl9WQUxVRSxcbiAgICBpdGVtVHlwZTogMCxcbiAgICAvLyBpdGVtSUQgYW5k
IGl0ZW1SZWYgYXJlIGZvciBNaWNyb2RhdGEgc3VwcG9ydCBhcyB3ZWxsIGJ1dFxuICAgIC8vIG9u
bHkgc3BlY2lmaWVkIGluIHRoZSBXSEFUV0cgc3BlYyBkb2N1bWVudC4gU2VlXG4gICAgLy8gaHR0
cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvbWljcm9kYXRhLmh0bWwjbWljcm9k
YXRhLWRvbS1hcGlcbiAgICBpdGVtSUQ6IDAsXG4gICAgaXRlbVJlZjogMCxcbiAgICAvLyByZXN1
bHRzIHNob3cgbG9va2luZyBnbGFzcyBpY29uIGFuZCByZWNlbnQgc2VhcmNoZXMgb24gaW5wdXRc
biAgICAvLyBzZWFyY2ggZmllbGRzIGluIFdlYktpdC9CbGlua1xuICAgIHJlc3VsdHM6IDAsXG4g
ICAgLy8gSUUtb25seSBhdHRyaWJ1dGUgdGhhdCBzcGVjaWZpZXMgc2VjdXJpdHkgcmVzdHJpY3Rp
b25zIG9uIGFuIGlmcmFtZVxuICAgIC8vIGFzIGFuIGFsdGVybmF0aXZlIHRvIHRoZSBzYW5kYm94
IGF0dHJpYnV0ZSBvbiBJRTwxMFxuICAgIHNlY3VyaXR5OiAwLFxuICAgIC8vIElFLW9ubHkgYXR0
cmlidXRlIHRoYXQgY29udHJvbHMgZm9jdXMgYmVoYXZpb3JcbiAgICB1bnNlbGVjdGFibGU6IDBc
biAgfSxcbiAgRE9NQXR0cmlidXRlTmFtZXM6IHtcbiAgICBhY2NlcHRDaGFyc2V0OiAnYWNjZXB0
LWNoYXJzZXQnLFxuICAgIGNsYXNzTmFtZTogJ2NsYXNzJyxcbiAgICBodG1sRm9yOiAnZm9yJyxc
biAgICBodHRwRXF1aXY6ICdodHRwLWVxdWl2J1xuICB9LFxuICBET01Qcm9wZXJ0eU5hbWVzOiB7
fSxcbiAgRE9NTXV0YXRpb25NZXRob2RzOiB7XG4gICAgdmFsdWU6IGZ1bmN0aW9uIChub2RlLCB2
YWx1ZSkge1xuICAgICAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIG5vZGUu
cmVtb3ZlQXR0cmlidXRlKCd2YWx1ZScpO1xuICAgICAgfVxuXG4gICAgICAvLyBOdW1iZXIgaW5w
dXRzIGdldCBzcGVjaWFsIHRyZWF0bWVudCBkdWUgdG8gc29tZSBlZGdlIGNhc2VzIGluXG4gICAg
ICAvLyBDaHJvbWUuIExldCBldmVyeXRoaW5nIGVsc2UgYXNzaWduIHRoZSB2YWx1ZSBhdHRyaWJ1
dGUgYXMgbm9ybWFsLlxuICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0
L2lzc3Vlcy83MjUzI2lzc3VlY29tbWVudC0yMzYwNzQzMjZcbiAgICAgIGlmIChub2RlLnR5cGUg
IT09ICdudW1iZXInIHx8IG5vZGUuaGFzQXR0cmlidXRlKCd2YWx1ZScpID09PSBmYWxzZSkge1xu
ICAgICAgICBub2RlLnNldEF0dHJpYnV0ZSgndmFsdWUnLCAnJyArIHZhbHVlKTtcbiAgICAgIH0g
ZWxzZSBpZiAobm9kZS52YWxpZGl0eSAmJiAhbm9kZS52YWxpZGl0eS5iYWRJbnB1dCAmJiBub2Rl
Lm93bmVyRG9jdW1lbnQuYWN0aXZlRWxlbWVudCAhPT0gbm9kZSkge1xuICAgICAgICAvLyBEb24n
dCBhc3NpZ24gYW4gYXR0cmlidXRlIGlmIHZhbGlkYXRpb24gcmVwb3J0cyBiYWRcbiAgICAgICAg
Ly8gaW5wdXQuIENocm9tZSB3aWxsIGNsZWFyIHRoZSB2YWx1ZS4gQWRkaXRpb25hbGx5LCBkb24n
dFxuICAgICAgICAvLyBvcGVyYXRlIG9uIGlucHV0cyB0aGF0IGhhdmUgZm9jdXMsIG90aGVyd2lz
ZSBDaHJvbWUgbWlnaHRcbiAgICAgICAgLy8gc3RyaXAgb2ZmIHRyYWlsaW5nIGRlY2ltYWwgcGxh
Y2VzIGFuZCBjYXVzZSB0aGUgdXNlcidzXG4gICAgICAgIC8vIGN1cnNvciBwb3NpdGlvbiB0byBq
dW1wIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGlucHV0LlxuICAgICAgICAvL1xuICAgICAgICAv
LyBJbiBSZWFjdERPTUlucHV0LCB3ZSBoYXZlIGFuIG9uQmx1ciBldmVudCB0aGF0IHdpbGwgdHJp
Z2dlclxuICAgICAgICAvLyB0aGlzIGZ1bmN0aW9uIGFnYWluIHdoZW4gZm9jdXMgaXMgbG9zdC5c
biAgICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoJ3ZhbHVlJywgJycgKyB2YWx1ZSk7XG4gICAgICB9
XG4gICAgfVxuICB9XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IEhUTUxET01Qcm9wZXJ0eUNvbmZp
ZztcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9y
ZWFjdC1kb20vbGliL0hUTUxET01Qcm9wZXJ0eUNvbmZpZy5qc1xuICoqIG1vZHVsZSBpZCA9IDEz
M1xuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNC1w
cmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBU
aGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBm
b3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhp
cyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBj
YW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4g
KlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIFJlYWN0UmVjb25jaWxlciA9IHJlcXVpcmUo
Jy4vUmVhY3RSZWNvbmNpbGVyJyk7XG5cbnZhciBpbnN0YW50aWF0ZVJlYWN0Q29tcG9uZW50ID0g
cmVxdWlyZSgnLi9pbnN0YW50aWF0ZVJlYWN0Q29tcG9uZW50Jyk7XG52YXIgS2V5RXNjYXBlVXRp
bHMgPSByZXF1aXJlKCcuL0tleUVzY2FwZVV0aWxzJyk7XG52YXIgc2hvdWxkVXBkYXRlUmVhY3RD
b21wb25lbnQgPSByZXF1aXJlKCcuL3Nob3VsZFVwZGF0ZVJlYWN0Q29tcG9uZW50Jyk7XG52YXIg
dHJhdmVyc2VBbGxDaGlsZHJlbiA9IHJlcXVpcmUoJy4vdHJhdmVyc2VBbGxDaGlsZHJlbicpO1xu
dmFyIHdhcm5pbmcgPSByZXF1aXJlKCdmYmpzL2xpYi93YXJuaW5nJyk7XG5cbnZhciBSZWFjdENv
bXBvbmVudFRyZWVIb29rO1xuXG5pZiAodHlwZW9mIHByb2Nlc3MgIT09ICd1bmRlZmluZWQnICYm
IHByb2Nlc3MuZW52ICYmIHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAndGVzdCcpIHtcbiAgLy8g
VGVtcG9yYXJ5IGhhY2suXG4gIC8vIElubGluZSByZXF1aXJlcyBkb24ndCB3b3JrIHdlbGwgd2l0
aCBKZXN0OlxuICAvLyBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvaXNzdWVzLzcy
NDBcbiAgLy8gUmVtb3ZlIHRoZSBpbmxpbmUgcmVxdWlyZXMgd2hlbiB3ZSBkb24ndCBuZWVkIHRo
ZW0gYW55bW9yZTpcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0L3B1bGwv
NzE3OFxuICBSZWFjdENvbXBvbmVudFRyZWVIb29rID0gcmVxdWlyZSgncmVhY3QvbGliL1JlYWN0
Q29tcG9uZW50VHJlZUhvb2snKTtcbn1cblxuZnVuY3Rpb24gaW5zdGFudGlhdGVDaGlsZChjaGls
ZEluc3RhbmNlcywgY2hpbGQsIG5hbWUsIHNlbGZEZWJ1Z0lEKSB7XG4gIC8vIFdlIGZvdW5kIGEg
Y29tcG9uZW50IGluc3RhbmNlLlxuICB2YXIga2V5VW5pcXVlID0gY2hpbGRJbnN0YW5jZXNbbmFt
ZV0gPT09IHVuZGVmaW5lZDtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVj
dGlvbicpIHtcbiAgICBpZiAoIVJlYWN0Q29tcG9uZW50VHJlZUhvb2spIHtcbiAgICAgIFJlYWN0
Q29tcG9uZW50VHJlZUhvb2sgPSByZXF1aXJlKCdyZWFjdC9saWIvUmVhY3RDb21wb25lbnRUcmVl
SG9vaycpO1xuICAgIH1cbiAgICBpZiAoIWtleVVuaXF1ZSkge1xuICAgICAgcHJvY2Vzcy5lbnYu
Tk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdmbGF0dGVuQ2hpbGRy
ZW4oLi4uKTogRW5jb3VudGVyZWQgdHdvIGNoaWxkcmVuIHdpdGggdGhlIHNhbWUga2V5LCAnICsg
J2Alc2AuIENoaWxkIGtleXMgbXVzdCBiZSB1bmlxdWU7IHdoZW4gdHdvIGNoaWxkcmVuIHNoYXJl
IGEga2V5LCBvbmx5ICcgKyAndGhlIGZpcnN0IGNoaWxkIHdpbGwgYmUgdXNlZC4lcycsIEtleUVz
Y2FwZVV0aWxzLnVuZXNjYXBlKG5hbWUpLCBSZWFjdENvbXBvbmVudFRyZWVIb29rLmdldFN0YWNr
QWRkZW5kdW1CeUlEKHNlbGZEZWJ1Z0lEKSkgOiB2b2lkIDA7XG4gICAgfVxuICB9XG4gIGlmIChj
aGlsZCAhPSBudWxsICYmIGtleVVuaXF1ZSkge1xuICAgIGNoaWxkSW5zdGFuY2VzW25hbWVdID0g
aW5zdGFudGlhdGVSZWFjdENvbXBvbmVudChjaGlsZCwgdHJ1ZSk7XG4gIH1cbn1cblxuLyoqXG4g
KiBSZWFjdENoaWxkUmVjb25jaWxlciBwcm92aWRlcyBoZWxwZXJzIGZvciBpbml0aWFsaXppbmcg
b3IgdXBkYXRpbmcgYSBzZXQgb2ZcbiAqIGNoaWxkcmVuLiBJdHMgb3V0cHV0IGlzIHN1aXRhYmxl
IGZvciBwYXNzaW5nIGl0IG9udG8gUmVhY3RNdWx0aUNoaWxkIHdoaWNoXG4gKiBkb2VzIGRpZmZl
ZCByZW9yZGVyaW5nIGFuZCBpbnNlcnRpb24uXG4gKi9cbnZhciBSZWFjdENoaWxkUmVjb25jaWxl
ciA9IHtcbiAgLyoqXG4gICAqIEdlbmVyYXRlcyBhIFwibW91bnQgaW1hZ2VcIiBmb3IgZWFjaCBv
ZiB0aGUgc3VwcGxpZWQgY2hpbGRyZW4uIEluIHRoZSBjYXNlXG4gICAqIG9mIGBSZWFjdERPTUNv
bXBvbmVudGAsIGEgbW91bnQgaW1hZ2UgaXMgYSBzdHJpbmcgb2YgbWFya3VwLlxuICAgKlxuICAg
KiBAcGFyYW0gez9vYmplY3R9IG5lc3RlZENoaWxkTm9kZXMgTmVzdGVkIGNoaWxkIG1hcHMuXG4g
ICAqIEByZXR1cm4gez9vYmplY3R9IEEgc2V0IG9mIGNoaWxkIGluc3RhbmNlcy5cbiAgICogQGlu
dGVybmFsXG4gICAqL1xuICBpbnN0YW50aWF0ZUNoaWxkcmVuOiBmdW5jdGlvbiAobmVzdGVkQ2hp
bGROb2RlcywgdHJhbnNhY3Rpb24sIGNvbnRleHQsIHNlbGZEZWJ1Z0lEKSAvLyAwIGluIHByb2R1
Y3Rpb24gYW5kIGZvciByb290c1xuICB7XG4gICAgaWYgKG5lc3RlZENoaWxkTm9kZXMgPT0gbnVs
bCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHZhciBjaGlsZEluc3RhbmNlcyA9
IHt9O1xuXG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtc
biAgICAgIHRyYXZlcnNlQWxsQ2hpbGRyZW4obmVzdGVkQ2hpbGROb2RlcywgZnVuY3Rpb24gKGNo
aWxkSW5zdHMsIGNoaWxkLCBuYW1lKSB7XG4gICAgICAgIHJldHVybiBpbnN0YW50aWF0ZUNoaWxk
KGNoaWxkSW5zdHMsIGNoaWxkLCBuYW1lLCBzZWxmRGVidWdJRCk7XG4gICAgICB9LCBjaGlsZElu
c3RhbmNlcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRyYXZlcnNlQWxsQ2hpbGRyZW4obmVzdGVk
Q2hpbGROb2RlcywgaW5zdGFudGlhdGVDaGlsZCwgY2hpbGRJbnN0YW5jZXMpO1xuICAgIH1cbiAg
ICByZXR1cm4gY2hpbGRJbnN0YW5jZXM7XG4gIH0sXG5cbiAgLyoqXG4gICAqIFVwZGF0ZXMgdGhl
IHJlbmRlcmVkIGNoaWxkcmVuIGFuZCByZXR1cm5zIGEgbmV3IHNldCBvZiBjaGlsZHJlbi5cbiAg
ICpcbiAgICogQHBhcmFtIHs/b2JqZWN0fSBwcmV2Q2hpbGRyZW4gUHJldmlvdXNseSBpbml0aWFs
aXplZCBzZXQgb2YgY2hpbGRyZW4uXG4gICAqIEBwYXJhbSB7P29iamVjdH0gbmV4dENoaWxkcmVu
IEZsYXQgY2hpbGQgZWxlbWVudCBtYXBzLlxuICAgKiBAcGFyYW0ge1JlYWN0UmVjb25jaWxlVHJh
bnNhY3Rpb259IHRyYW5zYWN0aW9uXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBjb250ZXh0XG4gICAq
IEByZXR1cm4gez9vYmplY3R9IEEgbmV3IHNldCBvZiBjaGlsZCBpbnN0YW5jZXMuXG4gICAqIEBp
bnRlcm5hbFxuICAgKi9cbiAgdXBkYXRlQ2hpbGRyZW46IGZ1bmN0aW9uIChwcmV2Q2hpbGRyZW4s
IG5leHRDaGlsZHJlbiwgbW91bnRJbWFnZXMsIHJlbW92ZWROb2RlcywgdHJhbnNhY3Rpb24sIGhv
c3RQYXJlbnQsIGhvc3RDb250YWluZXJJbmZvLCBjb250ZXh0LCBzZWxmRGVidWdJRCkgLy8gMCBp
biBwcm9kdWN0aW9uIGFuZCBmb3Igcm9vdHNcbiAge1xuICAgIC8vIFdlIGN1cnJlbnRseSBkb24n
dCBoYXZlIGEgd2F5IHRvIHRyYWNrIG1vdmVzIGhlcmUgYnV0IGlmIHdlIHVzZSBpdGVyYXRvcnNc
biAgICAvLyBpbnN0ZWFkIG9mIGZvci4uaW4gd2UgY2FuIHppcCB0aGUgaXRlcmF0b3JzIGFuZCBj
aGVjayBpZiBhbiBpdGVtIGhhc1xuICAgIC8vIG1vdmVkLlxuICAgIC8vIFRPRE86IElmIG5vdGhp
bmcgaGFzIGNoYW5nZWQsIHJldHVybiB0aGUgcHJldkNoaWxkcmVuIG9iamVjdCBzbyB0aGF0IHdl
XG4gICAgLy8gY2FuIHF1aWNrbHkgYmFpbG91dCBpZiBub3RoaW5nIGhhcyBjaGFuZ2VkLlxuICAg
IGlmICghbmV4dENoaWxkcmVuICYmICFwcmV2Q2hpbGRyZW4pIHtcbiAgICAgIHJldHVybjtcbiAg
ICB9XG4gICAgdmFyIG5hbWU7XG4gICAgdmFyIHByZXZDaGlsZDtcbiAgICBmb3IgKG5hbWUgaW4g
bmV4dENoaWxkcmVuKSB7XG4gICAgICBpZiAoIW5leHRDaGlsZHJlbi5oYXNPd25Qcm9wZXJ0eShu
YW1lKSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIHByZXZDaGlsZCA9IHBy
ZXZDaGlsZHJlbiAmJiBwcmV2Q2hpbGRyZW5bbmFtZV07XG4gICAgICB2YXIgcHJldkVsZW1lbnQg
PSBwcmV2Q2hpbGQgJiYgcHJldkNoaWxkLl9jdXJyZW50RWxlbWVudDtcbiAgICAgIHZhciBuZXh0
RWxlbWVudCA9IG5leHRDaGlsZHJlbltuYW1lXTtcbiAgICAgIGlmIChwcmV2Q2hpbGQgIT0gbnVs
bCAmJiBzaG91bGRVcGRhdGVSZWFjdENvbXBvbmVudChwcmV2RWxlbWVudCwgbmV4dEVsZW1lbnQp
KSB7XG4gICAgICAgIFJlYWN0UmVjb25jaWxlci5yZWNlaXZlQ29tcG9uZW50KHByZXZDaGlsZCwg
bmV4dEVsZW1lbnQsIHRyYW5zYWN0aW9uLCBjb250ZXh0KTtcbiAgICAgICAgbmV4dENoaWxkcmVu
W25hbWVdID0gcHJldkNoaWxkO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHByZXZDaGls
ZCkge1xuICAgICAgICAgIHJlbW92ZWROb2Rlc1tuYW1lXSA9IFJlYWN0UmVjb25jaWxlci5nZXRI
b3N0Tm9kZShwcmV2Q2hpbGQpO1xuICAgICAgICAgIFJlYWN0UmVjb25jaWxlci51bm1vdW50Q29t
cG9uZW50KHByZXZDaGlsZCwgZmFsc2UpO1xuICAgICAgICB9XG4gICAgICAgIC8vIFRoZSBjaGls
ZCBtdXN0IGJlIGluc3RhbnRpYXRlZCBiZWZvcmUgaXQncyBtb3VudGVkLlxuICAgICAgICB2YXIg
bmV4dENoaWxkSW5zdGFuY2UgPSBpbnN0YW50aWF0ZVJlYWN0Q29tcG9uZW50KG5leHRFbGVtZW50
LCB0cnVlKTtcbiAgICAgICAgbmV4dENoaWxkcmVuW25hbWVdID0gbmV4dENoaWxkSW5zdGFuY2U7
XG4gICAgICAgIC8vIENyZWF0aW5nIG1vdW50IGltYWdlIG5vdyBlbnN1cmVzIHJlZnMgYXJlIHJl
c29sdmVkIGluIHJpZ2h0IG9yZGVyXG4gICAgICAgIC8vIChzZWUgaHR0cHM6Ly9naXRodWIuY29t
L2ZhY2Vib29rL3JlYWN0L3B1bGwvNzEwMSBmb3IgZXhwbGFuYXRpb24pLlxuICAgICAgICB2YXIg
bmV4dENoaWxkTW91bnRJbWFnZSA9IFJlYWN0UmVjb25jaWxlci5tb3VudENvbXBvbmVudChuZXh0
Q2hpbGRJbnN0YW5jZSwgdHJhbnNhY3Rpb24sIGhvc3RQYXJlbnQsIGhvc3RDb250YWluZXJJbmZv
LCBjb250ZXh0LCBzZWxmRGVidWdJRCk7XG4gICAgICAgIG1vdW50SW1hZ2VzLnB1c2gobmV4dENo
aWxkTW91bnRJbWFnZSk7XG4gICAgICB9XG4gICAgfVxuICAgIC8vIFVubW91bnQgY2hpbGRyZW4g
dGhhdCBhcmUgbm8gbG9uZ2VyIHByZXNlbnQuXG4gICAgZm9yIChuYW1lIGluIHByZXZDaGlsZHJl
bikge1xuICAgICAgaWYgKHByZXZDaGlsZHJlbi5oYXNPd25Qcm9wZXJ0eShuYW1lKSAmJiAhKG5l
eHRDaGlsZHJlbiAmJiBuZXh0Q2hpbGRyZW4uaGFzT3duUHJvcGVydHkobmFtZSkpKSB7XG4gICAg
ICAgIHByZXZDaGlsZCA9IHByZXZDaGlsZHJlbltuYW1lXTtcbiAgICAgICAgcmVtb3ZlZE5vZGVz
W25hbWVdID0gUmVhY3RSZWNvbmNpbGVyLmdldEhvc3ROb2RlKHByZXZDaGlsZCk7XG4gICAgICAg
IFJlYWN0UmVjb25jaWxlci51bm1vdW50Q29tcG9uZW50KHByZXZDaGlsZCwgZmFsc2UpO1xuICAg
ICAgfVxuICAgIH1cbiAgfSxcblxuICAvKipcbiAgICogVW5tb3VudHMgYWxsIHJlbmRlcmVkIGNo
aWxkcmVuLiBUaGlzIHNob3VsZCBiZSB1c2VkIHRvIGNsZWFuIHVwIGNoaWxkcmVuXG4gICAqIHdo
ZW4gdGhpcyBjb21wb25lbnQgaXMgdW5tb3VudGVkLlxuICAgKlxuICAgKiBAcGFyYW0gez9vYmpl
Y3R9IHJlbmRlcmVkQ2hpbGRyZW4gUHJldmlvdXNseSBpbml0aWFsaXplZCBzZXQgb2YgY2hpbGRy
ZW4uXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgdW5tb3VudENoaWxkcmVuOiBmdW5jdGlvbiAo
cmVuZGVyZWRDaGlsZHJlbiwgc2FmZWx5KSB7XG4gICAgZm9yICh2YXIgbmFtZSBpbiByZW5kZXJl
ZENoaWxkcmVuKSB7XG4gICAgICBpZiAocmVuZGVyZWRDaGlsZHJlbi5oYXNPd25Qcm9wZXJ0eShu
YW1lKSkge1xuICAgICAgICB2YXIgcmVuZGVyZWRDaGlsZCA9IHJlbmRlcmVkQ2hpbGRyZW5bbmFt
ZV07XG4gICAgICAgIFJlYWN0UmVjb25jaWxlci51bm1vdW50Q29tcG9uZW50KHJlbmRlcmVkQ2hp
bGQsIHNhZmVseSk7XG4gICAgICB9XG4gICAgfVxuICB9XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9
IFJlYWN0Q2hpbGRSZWNvbmNpbGVyO1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBB
Q0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0LWRvbS9saWIvUmVhY3RDaGlsZFJlY29uY2lsZXIuanNc
biAqKiBtb2R1bGUgaWQgPSAxMzRcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxu
ICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMg
cmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUg
QlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJv
b3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAq
IG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhl
IHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBET01DaGls
ZHJlbk9wZXJhdGlvbnMgPSByZXF1aXJlKCcuL0RPTUNoaWxkcmVuT3BlcmF0aW9ucycpO1xudmFy
IFJlYWN0RE9NSURPcGVyYXRpb25zID0gcmVxdWlyZSgnLi9SZWFjdERPTUlET3BlcmF0aW9ucycp
O1xuXG4vKipcbiAqIEFic3RyYWN0cyBhd2F5IGFsbCBmdW5jdGlvbmFsaXR5IG9mIHRoZSByZWNv
bmNpbGVyIHRoYXQgcmVxdWlyZXMga25vd2xlZGdlIG9mXG4gKiB0aGUgYnJvd3NlciBjb250ZXh0
LiBUT0RPOiBUaGVzZSBjYWxsZXJzIHNob3VsZCBiZSByZWZhY3RvcmVkIHRvIGF2b2lkIHRoZVxu
ICogbmVlZCBmb3IgdGhpcyBpbmplY3Rpb24uXG4gKi9cbnZhciBSZWFjdENvbXBvbmVudEJyb3dz
ZXJFbnZpcm9ubWVudCA9IHtcbiAgcHJvY2Vzc0NoaWxkcmVuVXBkYXRlczogUmVhY3RET01JRE9w
ZXJhdGlvbnMuZGFuZ2Vyb3VzbHlQcm9jZXNzQ2hpbGRyZW5VcGRhdGVzLFxuXG4gIHJlcGxhY2VO
b2RlV2l0aE1hcmt1cDogRE9NQ2hpbGRyZW5PcGVyYXRpb25zLmRhbmdlcm91c2x5UmVwbGFjZU5v
ZGVXaXRoTWFya3VwXG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0Q29tcG9uZW50QnJvd3Nl
ckVudmlyb25tZW50O1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVS
XG4gKiogLi9+L3JlYWN0LWRvbS9saWIvUmVhY3RDb21wb25lbnRCcm93c2VyRW52aXJvbm1lbnQu
anNcbiAqKiBtb2R1bGUgaWQgPSAxMzVcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8q
KlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0
aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhl
IHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRc
biAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4g
dGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBfcHJv
ZEludmFyaWFudCA9IHJlcXVpcmUoJy4vcmVhY3RQcm9kSW52YXJpYW50JyksXG4gICAgX2Fzc2ln
biA9IHJlcXVpcmUoJ29iamVjdC1hc3NpZ24nKTtcblxudmFyIFJlYWN0ID0gcmVxdWlyZSgncmVh
Y3QvbGliL1JlYWN0Jyk7XG52YXIgUmVhY3RDb21wb25lbnRFbnZpcm9ubWVudCA9IHJlcXVpcmUo
Jy4vUmVhY3RDb21wb25lbnRFbnZpcm9ubWVudCcpO1xudmFyIFJlYWN0Q3VycmVudE93bmVyID0g
cmVxdWlyZSgncmVhY3QvbGliL1JlYWN0Q3VycmVudE93bmVyJyk7XG52YXIgUmVhY3RFcnJvclV0
aWxzID0gcmVxdWlyZSgnLi9SZWFjdEVycm9yVXRpbHMnKTtcbnZhciBSZWFjdEluc3RhbmNlTWFw
ID0gcmVxdWlyZSgnLi9SZWFjdEluc3RhbmNlTWFwJyk7XG52YXIgUmVhY3RJbnN0cnVtZW50YXRp
b24gPSByZXF1aXJlKCcuL1JlYWN0SW5zdHJ1bWVudGF0aW9uJyk7XG52YXIgUmVhY3ROb2RlVHlw
ZXMgPSByZXF1aXJlKCcuL1JlYWN0Tm9kZVR5cGVzJyk7XG52YXIgUmVhY3RSZWNvbmNpbGVyID0g
cmVxdWlyZSgnLi9SZWFjdFJlY29uY2lsZXInKTtcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5W
ICE9PSAncHJvZHVjdGlvbicpIHtcbiAgdmFyIGNoZWNrUmVhY3RUeXBlU3BlYyA9IHJlcXVpcmUo
Jy4vY2hlY2tSZWFjdFR5cGVTcGVjJyk7XG59XG5cbnZhciBlbXB0eU9iamVjdCA9IHJlcXVpcmUo
J2ZianMvbGliL2VtcHR5T2JqZWN0Jyk7XG52YXIgaW52YXJpYW50ID0gcmVxdWlyZSgnZmJqcy9s
aWIvaW52YXJpYW50Jyk7XG52YXIgc2hhbGxvd0VxdWFsID0gcmVxdWlyZSgnZmJqcy9saWIvc2hh
bGxvd0VxdWFsJyk7XG52YXIgc2hvdWxkVXBkYXRlUmVhY3RDb21wb25lbnQgPSByZXF1aXJlKCcu
L3Nob3VsZFVwZGF0ZVJlYWN0Q29tcG9uZW50Jyk7XG52YXIgd2FybmluZyA9IHJlcXVpcmUoJ2Zi
anMvbGliL3dhcm5pbmcnKTtcblxudmFyIENvbXBvc2l0ZVR5cGVzID0ge1xuICBJbXB1cmVDbGFz
czogMCxcbiAgUHVyZUNsYXNzOiAxLFxuICBTdGF0ZWxlc3NGdW5jdGlvbmFsOiAyXG59O1xuXG5m
dW5jdGlvbiBTdGF0ZWxlc3NDb21wb25lbnQoQ29tcG9uZW50KSB7fVxuU3RhdGVsZXNzQ29tcG9u
ZW50LnByb3RvdHlwZS5yZW5kZXIgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBDb21wb25lbnQgPSBS
ZWFjdEluc3RhbmNlTWFwLmdldCh0aGlzKS5fY3VycmVudEVsZW1lbnQudHlwZTtcbiAgdmFyIGVs
ZW1lbnQgPSBDb21wb25lbnQodGhpcy5wcm9wcywgdGhpcy5jb250ZXh0LCB0aGlzLnVwZGF0ZXIp
O1xuICB3YXJuSWZJbnZhbGlkRWxlbWVudChDb21wb25lbnQsIGVsZW1lbnQpO1xuICByZXR1cm4g
ZWxlbWVudDtcbn07XG5cbmZ1bmN0aW9uIHdhcm5JZkludmFsaWRFbGVtZW50KENvbXBvbmVudCwg
ZWxlbWVudCkge1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykg
e1xuICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGVs
ZW1lbnQgPT09IG51bGwgfHwgZWxlbWVudCA9PT0gZmFsc2UgfHwgUmVhY3QuaXNWYWxpZEVsZW1l
bnQoZWxlbWVudCksICclcyguLi4pOiBBIHZhbGlkIFJlYWN0IGVsZW1lbnQgKG9yIG51bGwpIG11
c3QgYmUgcmV0dXJuZWQuIFlvdSBtYXkgaGF2ZSAnICsgJ3JldHVybmVkIHVuZGVmaW5lZCwgYW4g
YXJyYXkgb3Igc29tZSBvdGhlciBpbnZhbGlkIG9iamVjdC4nLCBDb21wb25lbnQuZGlzcGxheU5h
bWUgfHwgQ29tcG9uZW50Lm5hbWUgfHwgJ0NvbXBvbmVudCcpIDogdm9pZCAwO1xuICAgIHByb2Nl
c3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKCFDb21wb25lbnQuY2hp
bGRDb250ZXh0VHlwZXMsICclcyguLi4pOiBjaGlsZENvbnRleHRUeXBlcyBjYW5ub3QgYmUgZGVm
aW5lZCBvbiBhIGZ1bmN0aW9uYWwgY29tcG9uZW50LicsIENvbXBvbmVudC5kaXNwbGF5TmFtZSB8
fCBDb21wb25lbnQubmFtZSB8fCAnQ29tcG9uZW50JykgOiB2b2lkIDA7XG4gIH1cbn1cblxuZnVu
Y3Rpb24gc2hvdWxkQ29uc3RydWN0KENvbXBvbmVudCkge1xuICByZXR1cm4gISEoQ29tcG9uZW50
LnByb3RvdHlwZSAmJiBDb21wb25lbnQucHJvdG90eXBlLmlzUmVhY3RDb21wb25lbnQpO1xufVxu
XG5mdW5jdGlvbiBpc1B1cmVDb21wb25lbnQoQ29tcG9uZW50KSB7XG4gIHJldHVybiAhIShDb21w
b25lbnQucHJvdG90eXBlICYmIENvbXBvbmVudC5wcm90b3R5cGUuaXNQdXJlUmVhY3RDb21wb25l
bnQpO1xufVxuXG4vLyBTZXBhcmF0ZWQgaW50byBhIGZ1bmN0aW9uIHRvIGNvbnRhaW4gZGVvcHRp
bWl6YXRpb25zIGNhdXNlZCBieSB0cnkvZmluYWxseS5cbmZ1bmN0aW9uIG1lYXN1cmVMaWZlQ3lj
bGVQZXJmKGZuLCBkZWJ1Z0lELCB0aW1lclR5cGUpIHtcbiAgaWYgKGRlYnVnSUQgPT09IDApIHtc
biAgICAvLyBUb3AtbGV2ZWwgd3JhcHBlcnMgKHNlZSBSZWFjdE1vdW50KSBhbmQgZW1wdHkgY29t
cG9uZW50cyAoc2VlXG4gICAgLy8gUmVhY3RET01FbXB0eUNvbXBvbmVudCkgYXJlIGludmlzaWJs
ZSB0byBob29rcyBhbmQgZGV2dG9vbHMuXG4gICAgLy8gQm90aCBhcmUgaW1wbGVtZW50YXRpb24g
ZGV0YWlscyB0aGF0IHNob3VsZCBnbyBhd2F5IGluIHRoZSBmdXR1cmUuXG4gICAgcmV0dXJuIGZu
KCk7XG4gIH1cblxuICBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25CZWdpbkxpZmVD
eWNsZVRpbWVyKGRlYnVnSUQsIHRpbWVyVHlwZSk7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGZuKCk7
XG4gIH0gZmluYWxseSB7XG4gICAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9uRW5k
TGlmZUN5Y2xlVGltZXIoZGVidWdJRCwgdGltZXJUeXBlKTtcbiAgfVxufVxuXG4vKipcbiAqIC0t
LS0tLS0tLS0tLS0tLS0tLSBUaGUgTGlmZS1DeWNsZSBvZiBhIENvbXBvc2l0ZSBDb21wb25lbnQg
LS0tLS0tLS0tLS0tLS0tLS0tXG4gKlxuICogLSBjb25zdHJ1Y3RvcjogSW5pdGlhbGl6YXRpb24g
b2Ygc3RhdGUuIFRoZSBpbnN0YW5jZSBpcyBub3cgcmV0YWluZWQuXG4gKiAgIC0gY29tcG9uZW50
V2lsbE1vdW50XG4gKiAgIC0gcmVuZGVyXG4gKiAgIC0gW2NoaWxkcmVuJ3MgY29uc3RydWN0b3Jz
XVxuICogICAgIC0gW2NoaWxkcmVuJ3MgY29tcG9uZW50V2lsbE1vdW50IGFuZCByZW5kZXJdXG4g
KiAgICAgLSBbY2hpbGRyZW4ncyBjb21wb25lbnREaWRNb3VudF1cbiAqICAgICAtIGNvbXBvbmVu
dERpZE1vdW50XG4gKlxuICogICAgICAgVXBkYXRlIFBoYXNlczpcbiAqICAgICAgIC0gY29tcG9u
ZW50V2lsbFJlY2VpdmVQcm9wcyAob25seSBjYWxsZWQgaWYgcGFyZW50IHVwZGF0ZWQpXG4gKiAg
ICAgICAtIHNob3VsZENvbXBvbmVudFVwZGF0ZVxuICogICAgICAgICAtIGNvbXBvbmVudFdpbGxV
cGRhdGVcbiAqICAgICAgICAgICAtIHJlbmRlclxuICogICAgICAgICAgIC0gW2NoaWxkcmVuJ3Mg
Y29uc3RydWN0b3JzIG9yIHJlY2VpdmUgcHJvcHMgcGhhc2VzXVxuICogICAgICAgICAtIGNvbXBv
bmVudERpZFVwZGF0ZVxuICpcbiAqICAgICAtIGNvbXBvbmVudFdpbGxVbm1vdW50XG4gKiAgICAg
LSBbY2hpbGRyZW4ncyBjb21wb25lbnRXaWxsVW5tb3VudF1cbiAqICAgLSBbY2hpbGRyZW4gZGVz
dHJveWVkXVxuICogLSAoZGVzdHJveWVkKTogVGhlIGluc3RhbmNlIGlzIG5vdyBibGFuaywgcmVs
ZWFzZWQgYnkgUmVhY3QgYW5kIHJlYWR5IGZvciBHQy5cbiAqXG4gKiAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLVxuICovXG5cbi8qKlxuICogQW4gaW5jcmVtZW50aW5nIElEIGFzc2lnbmVkIHRvIGVhY2gg
Y29tcG9uZW50IHdoZW4gaXQgaXMgbW91bnRlZC4gVGhpcyBpc1xuICogdXNlZCB0byBlbmZvcmNl
IHRoZSBvcmRlciBpbiB3aGljaCBgUmVhY3RVcGRhdGVzYCB1cGRhdGVzIGRpcnR5IGNvbXBvbmVu
dHMuXG4gKlxuICogQHByaXZhdGVcbiAqL1xudmFyIG5leHRNb3VudElEID0gMTtcblxuLyoqXG4g
KiBAbGVuZHMge1JlYWN0Q29tcG9zaXRlQ29tcG9uZW50LnByb3RvdHlwZX1cbiAqL1xudmFyIFJl
YWN0Q29tcG9zaXRlQ29tcG9uZW50ID0ge1xuICAvKipcbiAgICogQmFzZSBjb25zdHJ1Y3RvciBm
b3IgYWxsIGNvbXBvc2l0ZSBjb21wb25lbnQuXG4gICAqXG4gICAqIEBwYXJhbSB7UmVhY3RFbGVt
ZW50fSBlbGVtZW50XG4gICAqIEBmaW5hbFxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIGNvbnN0
cnVjdDogZnVuY3Rpb24gKGVsZW1lbnQpIHtcbiAgICB0aGlzLl9jdXJyZW50RWxlbWVudCA9IGVs
ZW1lbnQ7XG4gICAgdGhpcy5fcm9vdE5vZGVJRCA9IDA7XG4gICAgdGhpcy5fY29tcG9zaXRlVHlw
ZSA9IG51bGw7XG4gICAgdGhpcy5faW5zdGFuY2UgPSBudWxsO1xuICAgIHRoaXMuX2hvc3RQYXJl
bnQgPSBudWxsO1xuICAgIHRoaXMuX2hvc3RDb250YWluZXJJbmZvID0gbnVsbDtcblxuICAgIC8v
IFNlZSBSZWFjdFVwZGF0ZVF1ZXVlXG4gICAgdGhpcy5fdXBkYXRlQmF0Y2hOdW1iZXIgPSBudWxs
O1xuICAgIHRoaXMuX3BlbmRpbmdFbGVtZW50ID0gbnVsbDtcbiAgICB0aGlzLl9wZW5kaW5nU3Rh
dGVRdWV1ZSA9IG51bGw7XG4gICAgdGhpcy5fcGVuZGluZ1JlcGxhY2VTdGF0ZSA9IGZhbHNlO1xu
ICAgIHRoaXMuX3BlbmRpbmdGb3JjZVVwZGF0ZSA9IGZhbHNlO1xuXG4gICAgdGhpcy5fcmVuZGVy
ZWROb2RlVHlwZSA9IG51bGw7XG4gICAgdGhpcy5fcmVuZGVyZWRDb21wb25lbnQgPSBudWxsO1xu
ICAgIHRoaXMuX2NvbnRleHQgPSBudWxsO1xuICAgIHRoaXMuX21vdW50T3JkZXIgPSAwO1xuICAg
IHRoaXMuX3RvcExldmVsV3JhcHBlciA9IG51bGw7XG5cbiAgICAvLyBTZWUgUmVhY3RVcGRhdGVz
IGFuZCBSZWFjdFVwZGF0ZVF1ZXVlLlxuICAgIHRoaXMuX3BlbmRpbmdDYWxsYmFja3MgPSBudWxs
O1xuXG4gICAgLy8gQ29tcG9uZW50V2lsbFVubW91bnQgc2hhbGwgb25seSBiZSBjYWxsZWQgb25j
ZVxuICAgIHRoaXMuX2NhbGxlZENvbXBvbmVudFdpbGxVbm1vdW50ID0gZmFsc2U7XG5cbiAgICBp
ZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgdGhpcy5f
d2FybmVkQWJvdXRSZWZzSW5SZW5kZXIgPSBmYWxzZTtcbiAgICB9XG4gIH0sXG5cbiAgLyoqXG4g
ICAqIEluaXRpYWxpemVzIHRoZSBjb21wb25lbnQsIHJlbmRlcnMgbWFya3VwLCBhbmQgcmVnaXN0
ZXJzIGV2ZW50IGxpc3RlbmVycy5cbiAgICpcbiAgICogQHBhcmFtIHtSZWFjdFJlY29uY2lsZVRy
YW5zYWN0aW9ufFJlYWN0U2VydmVyUmVuZGVyaW5nVHJhbnNhY3Rpb259IHRyYW5zYWN0aW9uXG4g
ICAqIEBwYXJhbSB7P29iamVjdH0gaG9zdFBhcmVudFxuICAgKiBAcGFyYW0gez9vYmplY3R9IGhv
c3RDb250YWluZXJJbmZvXG4gICAqIEBwYXJhbSB7P29iamVjdH0gY29udGV4dFxuICAgKiBAcmV0
dXJuIHs/c3RyaW5nfSBSZW5kZXJlZCBtYXJrdXAgdG8gYmUgaW5zZXJ0ZWQgaW50byB0aGUgRE9N
LlxuICAgKiBAZmluYWxcbiAgICogQGludGVybmFsXG4gICAqL1xuICBtb3VudENvbXBvbmVudDog
ZnVuY3Rpb24gKHRyYW5zYWN0aW9uLCBob3N0UGFyZW50LCBob3N0Q29udGFpbmVySW5mbywgY29u
dGV4dCkge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICB0aGlzLl9jb250ZXh0ID0gY29u
dGV4dDtcbiAgICB0aGlzLl9tb3VudE9yZGVyID0gbmV4dE1vdW50SUQrKztcbiAgICB0aGlzLl9o
b3N0UGFyZW50ID0gaG9zdFBhcmVudDtcbiAgICB0aGlzLl9ob3N0Q29udGFpbmVySW5mbyA9IGhv
c3RDb250YWluZXJJbmZvO1xuXG4gICAgdmFyIHB1YmxpY1Byb3BzID0gdGhpcy5fY3VycmVudEVs
ZW1lbnQucHJvcHM7XG4gICAgdmFyIHB1YmxpY0NvbnRleHQgPSB0aGlzLl9wcm9jZXNzQ29udGV4
dChjb250ZXh0KTtcblxuICAgIHZhciBDb21wb25lbnQgPSB0aGlzLl9jdXJyZW50RWxlbWVudC50
eXBlO1xuXG4gICAgdmFyIHVwZGF0ZVF1ZXVlID0gdHJhbnNhY3Rpb24uZ2V0VXBkYXRlUXVldWUo
KTtcblxuICAgIC8vIEluaXRpYWxpemUgdGhlIHB1YmxpYyBjbGFzc1xuICAgIHZhciBkb0NvbnN0
cnVjdCA9IHNob3VsZENvbnN0cnVjdChDb21wb25lbnQpO1xuICAgIHZhciBpbnN0ID0gdGhpcy5f
Y29uc3RydWN0Q29tcG9uZW50KGRvQ29uc3RydWN0LCBwdWJsaWNQcm9wcywgcHVibGljQ29udGV4
dCwgdXBkYXRlUXVldWUpO1xuICAgIHZhciByZW5kZXJlZEVsZW1lbnQ7XG5cbiAgICAvLyBTdXBw
b3J0IGZ1bmN0aW9uYWwgY29tcG9uZW50c1xuICAgIGlmICghZG9Db25zdHJ1Y3QgJiYgKGluc3Qg
PT0gbnVsbCB8fCBpbnN0LnJlbmRlciA9PSBudWxsKSkge1xuICAgICAgcmVuZGVyZWRFbGVtZW50
ID0gaW5zdDtcbiAgICAgIHdhcm5JZkludmFsaWRFbGVtZW50KENvbXBvbmVudCwgcmVuZGVyZWRF
bGVtZW50KTtcbiAgICAgICEoaW5zdCA9PT0gbnVsbCB8fCBpbnN0ID09PSBmYWxzZSB8fCBSZWFj
dC5pc1ZhbGlkRWxlbWVudChpbnN0KSkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1
Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnJXMoLi4uKTogQSB2YWxpZCBSZWFjdCBlbGVtZW50
IChvciBudWxsKSBtdXN0IGJlIHJldHVybmVkLiBZb3UgbWF5IGhhdmUgcmV0dXJuZWQgdW5kZWZp
bmVkLCBhbiBhcnJheSBvciBzb21lIG90aGVyIGludmFsaWQgb2JqZWN0LicsIENvbXBvbmVudC5k
aXNwbGF5TmFtZSB8fCBDb21wb25lbnQubmFtZSB8fCAnQ29tcG9uZW50JykgOiBfcHJvZEludmFy
aWFudCgnMTA1JywgQ29tcG9uZW50LmRpc3BsYXlOYW1lIHx8IENvbXBvbmVudC5uYW1lIHx8ICdD
b21wb25lbnQnKSA6IHZvaWQgMDtcbiAgICAgIGluc3QgPSBuZXcgU3RhdGVsZXNzQ29tcG9uZW50
KENvbXBvbmVudCk7XG4gICAgICB0aGlzLl9jb21wb3NpdGVUeXBlID0gQ29tcG9zaXRlVHlwZXMu
U3RhdGVsZXNzRnVuY3Rpb25hbDtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGlzUHVyZUNvbXBv
bmVudChDb21wb25lbnQpKSB7XG4gICAgICAgIHRoaXMuX2NvbXBvc2l0ZVR5cGUgPSBDb21wb3Np
dGVUeXBlcy5QdXJlQ2xhc3M7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl9jb21wb3Np
dGVUeXBlID0gQ29tcG9zaXRlVHlwZXMuSW1wdXJlQ2xhc3M7XG4gICAgICB9XG4gICAgfVxuXG4g
ICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIC8v
IFRoaXMgd2lsbCB0aHJvdyBsYXRlciBpbiBfcmVuZGVyVmFsaWRhdGVkQ29tcG9uZW50LCBidXQg
YWRkIGFuIGVhcmx5XG4gICAgICAvLyB3YXJuaW5nIG5vdyB0byBoZWxwIGRlYnVnZ2luZ1xuICAg
ICAgaWYgKGluc3QucmVuZGVyID09IG51bGwpIHtcbiAgICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9F
TlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICclcyguLi4pOiBObyBgcmVuZGVy
YCBtZXRob2QgZm91bmQgb24gdGhlIHJldHVybmVkIGNvbXBvbmVudCAnICsgJ2luc3RhbmNlOiB5
b3UgbWF5IGhhdmUgZm9yZ290dGVuIHRvIGRlZmluZSBgcmVuZGVyYC4nLCBDb21wb25lbnQuZGlz
cGxheU5hbWUgfHwgQ29tcG9uZW50Lm5hbWUgfHwgJ0NvbXBvbmVudCcpIDogdm9pZCAwO1xuICAg
ICAgfVxuXG4gICAgICB2YXIgcHJvcHNNdXRhdGVkID0gaW5zdC5wcm9wcyAhPT0gcHVibGljUHJv
cHM7XG4gICAgICB2YXIgY29tcG9uZW50TmFtZSA9IENvbXBvbmVudC5kaXNwbGF5TmFtZSB8fCBD
b21wb25lbnQubmFtZSB8fCAnQ29tcG9uZW50JztcblxuICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9F
TlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoaW5zdC5wcm9wcyA9PT0gdW5kZWZpbmVkIHx8
ICFwcm9wc011dGF0ZWQsICclcyguLi4pOiBXaGVuIGNhbGxpbmcgc3VwZXIoKSBpbiBgJXNgLCBt
YWtlIHN1cmUgdG8gcGFzcyAnICsgXCJ1cCB0aGUgc2FtZSBwcm9wcyB0aGF0IHlvdXIgY29tcG9u
ZW50J3MgY29uc3RydWN0b3Igd2FzIHBhc3NlZC5cIiwgY29tcG9uZW50TmFtZSwgY29tcG9uZW50
TmFtZSkgOiB2b2lkIDA7XG4gICAgfVxuXG4gICAgLy8gVGhlc2Ugc2hvdWxkIGJlIHNldCB1cCBp
biB0aGUgY29uc3RydWN0b3IsIGJ1dCBhcyBhIGNvbnZlbmllbmNlIGZvclxuICAgIC8vIHNpbXBs
ZXIgY2xhc3MgYWJzdHJhY3Rpb25zLCB3ZSBzZXQgdGhlbSB1cCBhZnRlciB0aGUgZmFjdC5cbiAg
ICBpbnN0LnByb3BzID0gcHVibGljUHJvcHM7XG4gICAgaW5zdC5jb250ZXh0ID0gcHVibGljQ29u
dGV4dDtcbiAgICBpbnN0LnJlZnMgPSBlbXB0eU9iamVjdDtcbiAgICBpbnN0LnVwZGF0ZXIgPSB1
cGRhdGVRdWV1ZTtcblxuICAgIHRoaXMuX2luc3RhbmNlID0gaW5zdDtcblxuICAgIC8vIFN0b3Jl
IGEgcmVmZXJlbmNlIGZyb20gdGhlIGluc3RhbmNlIGJhY2sgdG8gdGhlIGludGVybmFsIHJlcHJl
c2VudGF0aW9uXG4gICAgUmVhY3RJbnN0YW5jZU1hcC5zZXQoaW5zdCwgdGhpcyk7XG5cbiAgICBp
ZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgLy8gU2lu
Y2UgcGxhaW4gSlMgY2xhc3NlcyBhcmUgZGVmaW5lZCB3aXRob3V0IGFueSBzcGVjaWFsIGluaXRp
YWxpemF0aW9uXG4gICAgICAvLyBsb2dpYywgd2UgY2FuIG5vdCBjYXRjaCBjb21tb24gZXJyb3Jz
IGVhcmx5LiBUaGVyZWZvcmUsIHdlIGhhdmUgdG9cbiAgICAgIC8vIGNhdGNoIHRoZW0gaGVyZSwg
YXQgaW5pdGlhbGl6YXRpb24gdGltZSwgaW5zdGVhZC5cbiAgICAgIHByb2Nlc3MuZW52Lk5PREVf
RU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKCFpbnN0LmdldEluaXRpYWxTdGF0ZSB8fCBp
bnN0LmdldEluaXRpYWxTdGF0ZS5pc1JlYWN0Q2xhc3NBcHByb3ZlZCB8fCBpbnN0LnN0YXRlLCAn
Z2V0SW5pdGlhbFN0YXRlIHdhcyBkZWZpbmVkIG9uICVzLCBhIHBsYWluIEphdmFTY3JpcHQgY2xh
c3MuICcgKyAnVGhpcyBpcyBvbmx5IHN1cHBvcnRlZCBmb3IgY2xhc3NlcyBjcmVhdGVkIHVzaW5n
IFJlYWN0LmNyZWF0ZUNsYXNzLiAnICsgJ0RpZCB5b3UgbWVhbiB0byBkZWZpbmUgYSBzdGF0ZSBw
cm9wZXJ0eSBpbnN0ZWFkPycsIHRoaXMuZ2V0TmFtZSgpIHx8ICdhIGNvbXBvbmVudCcpIDogdm9p
ZCAwO1xuICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5p
bmcoIWluc3QuZ2V0RGVmYXVsdFByb3BzIHx8IGluc3QuZ2V0RGVmYXVsdFByb3BzLmlzUmVhY3RD
bGFzc0FwcHJvdmVkLCAnZ2V0RGVmYXVsdFByb3BzIHdhcyBkZWZpbmVkIG9uICVzLCBhIHBsYWlu
IEphdmFTY3JpcHQgY2xhc3MuICcgKyAnVGhpcyBpcyBvbmx5IHN1cHBvcnRlZCBmb3IgY2xhc3Nl
cyBjcmVhdGVkIHVzaW5nIFJlYWN0LmNyZWF0ZUNsYXNzLiAnICsgJ1VzZSBhIHN0YXRpYyBwcm9w
ZXJ0eSB0byBkZWZpbmUgZGVmYXVsdFByb3BzIGluc3RlYWQuJywgdGhpcy5nZXROYW1lKCkgfHwg
J2EgY29tcG9uZW50JykgOiB2b2lkIDA7XG4gICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0g
J3Byb2R1Y3Rpb24nID8gd2FybmluZyghaW5zdC5wcm9wVHlwZXMsICdwcm9wVHlwZXMgd2FzIGRl
ZmluZWQgYXMgYW4gaW5zdGFuY2UgcHJvcGVydHkgb24gJXMuIFVzZSBhIHN0YXRpYyAnICsgJ3By
b3BlcnR5IHRvIGRlZmluZSBwcm9wVHlwZXMgaW5zdGVhZC4nLCB0aGlzLmdldE5hbWUoKSB8fCAn
YSBjb21wb25lbnQnKSA6IHZvaWQgMDtcbiAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAn
cHJvZHVjdGlvbicgPyB3YXJuaW5nKCFpbnN0LmNvbnRleHRUeXBlcywgJ2NvbnRleHRUeXBlcyB3
YXMgZGVmaW5lZCBhcyBhbiBpbnN0YW5jZSBwcm9wZXJ0eSBvbiAlcy4gVXNlIGEgJyArICdzdGF0
aWMgcHJvcGVydHkgdG8gZGVmaW5lIGNvbnRleHRUeXBlcyBpbnN0ZWFkLicsIHRoaXMuZ2V0TmFt
ZSgpIHx8ICdhIGNvbXBvbmVudCcpIDogdm9pZCAwO1xuICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9F
TlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcodHlwZW9mIGluc3QuY29tcG9uZW50U2hvdWxk
VXBkYXRlICE9PSAnZnVuY3Rpb24nLCAnJXMgaGFzIGEgbWV0aG9kIGNhbGxlZCAnICsgJ2NvbXBv
bmVudFNob3VsZFVwZGF0ZSgpLiBEaWQgeW91IG1lYW4gc2hvdWxkQ29tcG9uZW50VXBkYXRlKCk/
ICcgKyAnVGhlIG5hbWUgaXMgcGhyYXNlZCBhcyBhIHF1ZXN0aW9uIGJlY2F1c2UgdGhlIGZ1bmN0
aW9uIGlzICcgKyAnZXhwZWN0ZWQgdG8gcmV0dXJuIGEgdmFsdWUuJywgdGhpcy5nZXROYW1lKCkg
fHwgJ0EgY29tcG9uZW50JykgOiB2b2lkIDA7XG4gICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAh
PT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyh0eXBlb2YgaW5zdC5jb21wb25lbnREaWRVbm1vdW50
ICE9PSAnZnVuY3Rpb24nLCAnJXMgaGFzIGEgbWV0aG9kIGNhbGxlZCAnICsgJ2NvbXBvbmVudERp
ZFVubW91bnQoKS4gQnV0IHRoZXJlIGlzIG5vIHN1Y2ggbGlmZWN5Y2xlIG1ldGhvZC4gJyArICdE
aWQgeW91IG1lYW4gY29tcG9uZW50V2lsbFVubW91bnQoKT8nLCB0aGlzLmdldE5hbWUoKSB8fCAn
QSBjb21wb25lbnQnKSA6IHZvaWQgMDtcbiAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAn
cHJvZHVjdGlvbicgPyB3YXJuaW5nKHR5cGVvZiBpbnN0LmNvbXBvbmVudFdpbGxSZWNpZXZlUHJv
cHMgIT09ICdmdW5jdGlvbicsICclcyBoYXMgYSBtZXRob2QgY2FsbGVkICcgKyAnY29tcG9uZW50
V2lsbFJlY2lldmVQcm9wcygpLiBEaWQgeW91IG1lYW4gY29tcG9uZW50V2lsbFJlY2VpdmVQcm9w
cygpPycsIHRoaXMuZ2V0TmFtZSgpIHx8ICdBIGNvbXBvbmVudCcpIDogdm9pZCAwO1xuICAgIH1c
blxuICAgIHZhciBpbml0aWFsU3RhdGUgPSBpbnN0LnN0YXRlO1xuICAgIGlmIChpbml0aWFsU3Rh
dGUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgaW5zdC5zdGF0ZSA9IGluaXRpYWxTdGF0ZSA9IG51
bGw7XG4gICAgfVxuICAgICEodHlwZW9mIGluaXRpYWxTdGF0ZSA9PT0gJ29iamVjdCcgJiYgIUFy
cmF5LmlzQXJyYXkoaW5pdGlhbFN0YXRlKSkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3By
b2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnJXMuc3RhdGU6IG11c3QgYmUgc2V0IHRvIGFu
IG9iamVjdCBvciBudWxsJywgdGhpcy5nZXROYW1lKCkgfHwgJ1JlYWN0Q29tcG9zaXRlQ29tcG9u
ZW50JykgOiBfcHJvZEludmFyaWFudCgnMTA2JywgdGhpcy5nZXROYW1lKCkgfHwgJ1JlYWN0Q29t
cG9zaXRlQ29tcG9uZW50JykgOiB2b2lkIDA7XG5cbiAgICB0aGlzLl9wZW5kaW5nU3RhdGVRdWV1
ZSA9IG51bGw7XG4gICAgdGhpcy5fcGVuZGluZ1JlcGxhY2VTdGF0ZSA9IGZhbHNlO1xuICAgIHRo
aXMuX3BlbmRpbmdGb3JjZVVwZGF0ZSA9IGZhbHNlO1xuXG4gICAgdmFyIG1hcmt1cDtcbiAgICBp
ZiAoaW5zdC51bnN0YWJsZV9oYW5kbGVFcnJvcikge1xuICAgICAgbWFya3VwID0gdGhpcy5wZXJm
b3JtSW5pdGlhbE1vdW50V2l0aEVycm9ySGFuZGxpbmcocmVuZGVyZWRFbGVtZW50LCBob3N0UGFy
ZW50LCBob3N0Q29udGFpbmVySW5mbywgdHJhbnNhY3Rpb24sIGNvbnRleHQpO1xuICAgIH0gZWxz
ZSB7XG4gICAgICBtYXJrdXAgPSB0aGlzLnBlcmZvcm1Jbml0aWFsTW91bnQocmVuZGVyZWRFbGVt
ZW50LCBob3N0UGFyZW50LCBob3N0Q29udGFpbmVySW5mbywgdHJhbnNhY3Rpb24sIGNvbnRleHQp
O1xuICAgIH1cblxuICAgIGlmIChpbnN0LmNvbXBvbmVudERpZE1vdW50KSB7XG4gICAgICBpZiAo
cHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICB0cmFuc2Fj
dGlvbi5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKGZ1bmN0aW9uICgpIHtcbiAgICAgICAg
ICBtZWFzdXJlTGlmZUN5Y2xlUGVyZihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4g
aW5zdC5jb21wb25lbnREaWRNb3VudCgpO1xuICAgICAgICAgIH0sIF90aGlzLl9kZWJ1Z0lELCAn
Y29tcG9uZW50RGlkTW91bnQnKTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAg
ICB0cmFuc2FjdGlvbi5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKGluc3QuY29tcG9uZW50
RGlkTW91bnQsIGluc3QpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBtYXJrdXA7XG4g
IH0sXG5cbiAgX2NvbnN0cnVjdENvbXBvbmVudDogZnVuY3Rpb24gKGRvQ29uc3RydWN0LCBwdWJs
aWNQcm9wcywgcHVibGljQ29udGV4dCwgdXBkYXRlUXVldWUpIHtcbiAgICBpZiAocHJvY2Vzcy5l
bnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgUmVhY3RDdXJyZW50T3duZXIu
Y3VycmVudCA9IHRoaXM7XG4gICAgICB0cnkge1xuICAgICAgICByZXR1cm4gdGhpcy5fY29uc3Ry
dWN0Q29tcG9uZW50V2l0aG91dE93bmVyKGRvQ29uc3RydWN0LCBwdWJsaWNQcm9wcywgcHVibGlj
Q29udGV4dCwgdXBkYXRlUXVldWUpO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgUmVhY3RD
dXJyZW50T3duZXIuY3VycmVudCA9IG51bGw7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAg
IHJldHVybiB0aGlzLl9jb25zdHJ1Y3RDb21wb25lbnRXaXRob3V0T3duZXIoZG9Db25zdHJ1Y3Qs
IHB1YmxpY1Byb3BzLCBwdWJsaWNDb250ZXh0LCB1cGRhdGVRdWV1ZSk7XG4gICAgfVxuICB9LFxu
XG4gIF9jb25zdHJ1Y3RDb21wb25lbnRXaXRob3V0T3duZXI6IGZ1bmN0aW9uIChkb0NvbnN0cnVj
dCwgcHVibGljUHJvcHMsIHB1YmxpY0NvbnRleHQsIHVwZGF0ZVF1ZXVlKSB7XG4gICAgdmFyIENv
bXBvbmVudCA9IHRoaXMuX2N1cnJlbnRFbGVtZW50LnR5cGU7XG5cbiAgICBpZiAoZG9Db25zdHJ1
Y3QpIHtcbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7
XG4gICAgICAgIHJldHVybiBtZWFzdXJlTGlmZUN5Y2xlUGVyZihmdW5jdGlvbiAoKSB7XG4gICAg
ICAgICAgcmV0dXJuIG5ldyBDb21wb25lbnQocHVibGljUHJvcHMsIHB1YmxpY0NvbnRleHQsIHVw
ZGF0ZVF1ZXVlKTtcbiAgICAgICAgfSwgdGhpcy5fZGVidWdJRCwgJ2N0b3InKTtcbiAgICAgIH0g
ZWxzZSB7XG4gICAgICAgIHJldHVybiBuZXcgQ29tcG9uZW50KHB1YmxpY1Byb3BzLCBwdWJsaWND
b250ZXh0LCB1cGRhdGVRdWV1ZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gVGhpcyBjYW4g
c3RpbGwgYmUgYW4gaW5zdGFuY2UgaW4gY2FzZSBvZiBmYWN0b3J5IGNvbXBvbmVudHNcbiAgICAv
LyBidXQgd2UnbGwgY291bnQgdGhpcyBhcyB0aW1lIHNwZW50IHJlbmRlcmluZyBhcyB0aGUgbW9y
ZSBjb21tb24gY2FzZS5cbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0
aW9uJykge1xuICAgICAgcmV0dXJuIG1lYXN1cmVMaWZlQ3ljbGVQZXJmKGZ1bmN0aW9uICgpIHtc
biAgICAgICAgcmV0dXJuIENvbXBvbmVudChwdWJsaWNQcm9wcywgcHVibGljQ29udGV4dCwgdXBk
YXRlUXVldWUpO1xuICAgICAgfSwgdGhpcy5fZGVidWdJRCwgJ3JlbmRlcicpO1xuICAgIH0gZWxz
ZSB7XG4gICAgICByZXR1cm4gQ29tcG9uZW50KHB1YmxpY1Byb3BzLCBwdWJsaWNDb250ZXh0LCB1
cGRhdGVRdWV1ZSk7XG4gICAgfVxuICB9LFxuXG4gIHBlcmZvcm1Jbml0aWFsTW91bnRXaXRoRXJy
b3JIYW5kbGluZzogZnVuY3Rpb24gKHJlbmRlcmVkRWxlbWVudCwgaG9zdFBhcmVudCwgaG9zdENv
bnRhaW5lckluZm8sIHRyYW5zYWN0aW9uLCBjb250ZXh0KSB7XG4gICAgdmFyIG1hcmt1cDtcbiAg
ICB2YXIgY2hlY2twb2ludCA9IHRyYW5zYWN0aW9uLmNoZWNrcG9pbnQoKTtcbiAgICB0cnkge1xu
ICAgICAgbWFya3VwID0gdGhpcy5wZXJmb3JtSW5pdGlhbE1vdW50KHJlbmRlcmVkRWxlbWVudCwg
aG9zdFBhcmVudCwgaG9zdENvbnRhaW5lckluZm8sIHRyYW5zYWN0aW9uLCBjb250ZXh0KTtcbiAg
ICB9IGNhdGNoIChlKSB7XG4gICAgICAvLyBSb2xsIGJhY2sgdG8gY2hlY2twb2ludCwgaGFuZGxl
IGVycm9yICh3aGljaCBtYXkgYWRkIGl0ZW1zIHRvIHRoZSB0cmFuc2FjdGlvbiksIGFuZCB0YWtl
IGEgbmV3IGNoZWNrcG9pbnRcbiAgICAgIHRyYW5zYWN0aW9uLnJvbGxiYWNrKGNoZWNrcG9pbnQp
O1xuICAgICAgdGhpcy5faW5zdGFuY2UudW5zdGFibGVfaGFuZGxlRXJyb3IoZSk7XG4gICAgICBp
ZiAodGhpcy5fcGVuZGluZ1N0YXRlUXVldWUpIHtcbiAgICAgICAgdGhpcy5faW5zdGFuY2Uuc3Rh
dGUgPSB0aGlzLl9wcm9jZXNzUGVuZGluZ1N0YXRlKHRoaXMuX2luc3RhbmNlLnByb3BzLCB0aGlz
Ll9pbnN0YW5jZS5jb250ZXh0KTtcbiAgICAgIH1cbiAgICAgIGNoZWNrcG9pbnQgPSB0cmFuc2Fj
dGlvbi5jaGVja3BvaW50KCk7XG5cbiAgICAgIHRoaXMuX3JlbmRlcmVkQ29tcG9uZW50LnVubW91
bnRDb21wb25lbnQodHJ1ZSk7XG4gICAgICB0cmFuc2FjdGlvbi5yb2xsYmFjayhjaGVja3BvaW50
KTtcblxuICAgICAgLy8gVHJ5IGFnYWluIC0gd2UndmUgaW5mb3JtZWQgdGhlIGNvbXBvbmVudCBh
Ym91dCB0aGUgZXJyb3IsIHNvIHRoZXkgY2FuIHJlbmRlciBhbiBlcnJvciBtZXNzYWdlIHRoaXMg
dGltZS5cbiAgICAgIC8vIElmIHRoaXMgdGhyb3dzIGFnYWluLCB0aGUgZXJyb3Igd2lsbCBidWJi
bGUgdXAgKGFuZCBjYW4gYmUgY2F1Z2h0IGJ5IGEgaGlnaGVyIGVycm9yIGJvdW5kYXJ5KS5cbiAg
ICAgIG1hcmt1cCA9IHRoaXMucGVyZm9ybUluaXRpYWxNb3VudChyZW5kZXJlZEVsZW1lbnQsIGhv
c3RQYXJlbnQsIGhvc3RDb250YWluZXJJbmZvLCB0cmFuc2FjdGlvbiwgY29udGV4dCk7XG4gICAg
fVxuICAgIHJldHVybiBtYXJrdXA7XG4gIH0sXG5cbiAgcGVyZm9ybUluaXRpYWxNb3VudDogZnVu
Y3Rpb24gKHJlbmRlcmVkRWxlbWVudCwgaG9zdFBhcmVudCwgaG9zdENvbnRhaW5lckluZm8sIHRy
YW5zYWN0aW9uLCBjb250ZXh0KSB7XG4gICAgdmFyIGluc3QgPSB0aGlzLl9pbnN0YW5jZTtcblxu
ICAgIHZhciBkZWJ1Z0lEID0gMDtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdw
cm9kdWN0aW9uJykge1xuICAgICAgZGVidWdJRCA9IHRoaXMuX2RlYnVnSUQ7XG4gICAgfVxuXG4g
ICAgaWYgKGluc3QuY29tcG9uZW50V2lsbE1vdW50KSB7XG4gICAgICBpZiAocHJvY2Vzcy5lbnYu
Tk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICBtZWFzdXJlTGlmZUN5Y2xlUGVy
ZihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgcmV0dXJuIGluc3QuY29tcG9uZW50V2lsbE1vdW50
KCk7XG4gICAgICAgIH0sIGRlYnVnSUQsICdjb21wb25lbnRXaWxsTW91bnQnKTtcbiAgICAgIH0g
ZWxzZSB7XG4gICAgICAgIGluc3QuY29tcG9uZW50V2lsbE1vdW50KCk7XG4gICAgICB9XG4gICAg
ICAvLyBXaGVuIG1vdW50aW5nLCBjYWxscyB0byBgc2V0U3RhdGVgIGJ5IGBjb21wb25lbnRXaWxs
TW91bnRgIHdpbGwgc2V0XG4gICAgICAvLyBgdGhpcy5fcGVuZGluZ1N0YXRlUXVldWVgIHdpdGhv
dXQgdHJpZ2dlcmluZyBhIHJlLXJlbmRlci5cbiAgICAgIGlmICh0aGlzLl9wZW5kaW5nU3RhdGVR
dWV1ZSkge1xuICAgICAgICBpbnN0LnN0YXRlID0gdGhpcy5fcHJvY2Vzc1BlbmRpbmdTdGF0ZShp
bnN0LnByb3BzLCBpbnN0LmNvbnRleHQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIElmIG5v
dCBhIHN0YXRlbGVzcyBjb21wb25lbnQsIHdlIG5vdyByZW5kZXJcbiAgICBpZiAocmVuZGVyZWRF
bGVtZW50ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJlbmRlcmVkRWxlbWVudCA9IHRoaXMuX3Jl
bmRlclZhbGlkYXRlZENvbXBvbmVudCgpO1xuICAgIH1cblxuICAgIHZhciBub2RlVHlwZSA9IFJl
YWN0Tm9kZVR5cGVzLmdldFR5cGUocmVuZGVyZWRFbGVtZW50KTtcbiAgICB0aGlzLl9yZW5kZXJl
ZE5vZGVUeXBlID0gbm9kZVR5cGU7XG4gICAgdmFyIGNoaWxkID0gdGhpcy5faW5zdGFudGlhdGVS
ZWFjdENvbXBvbmVudChyZW5kZXJlZEVsZW1lbnQsIG5vZGVUeXBlICE9PSBSZWFjdE5vZGVUeXBl
cy5FTVBUWSAvKiBzaG91bGRIYXZlRGVidWdJRCAqL1xuICAgICk7XG4gICAgdGhpcy5fcmVuZGVy
ZWRDb21wb25lbnQgPSBjaGlsZDtcblxuICAgIHZhciBtYXJrdXAgPSBSZWFjdFJlY29uY2lsZXIu
bW91bnRDb21wb25lbnQoY2hpbGQsIHRyYW5zYWN0aW9uLCBob3N0UGFyZW50LCBob3N0Q29udGFp
bmVySW5mbywgdGhpcy5fcHJvY2Vzc0NoaWxkQ29udGV4dChjb250ZXh0KSwgZGVidWdJRCk7XG5c
biAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAg
aWYgKGRlYnVnSUQgIT09IDApIHtcbiAgICAgICAgdmFyIGNoaWxkRGVidWdJRHMgPSBjaGlsZC5f
ZGVidWdJRCAhPT0gMCA/IFtjaGlsZC5fZGVidWdJRF0gOiBbXTtcbiAgICAgICAgUmVhY3RJbnN0
cnVtZW50YXRpb24uZGVidWdUb29sLm9uU2V0Q2hpbGRyZW4oZGVidWdJRCwgY2hpbGREZWJ1Z0lE
cyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG1hcmt1cDtcbiAgfSxcblxuICBnZXRI
b3N0Tm9kZTogZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBSZWFjdFJlY29uY2lsZXIuZ2V0SG9z
dE5vZGUodGhpcy5fcmVuZGVyZWRDb21wb25lbnQpO1xuICB9LFxuXG4gIC8qKlxuICAgKiBSZWxl
YXNlcyBhbnkgcmVzb3VyY2VzIGFsbG9jYXRlZCBieSBgbW91bnRDb21wb25lbnRgLlxuICAgKlxu
ICAgKiBAZmluYWxcbiAgICogQGludGVybmFsXG4gICAqL1xuICB1bm1vdW50Q29tcG9uZW50OiBm
dW5jdGlvbiAoc2FmZWx5KSB7XG4gICAgaWYgKCF0aGlzLl9yZW5kZXJlZENvbXBvbmVudCkge1xu
ICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZhciBpbnN0ID0gdGhpcy5faW5zdGFuY2U7XG5c
biAgICBpZiAoaW5zdC5jb21wb25lbnRXaWxsVW5tb3VudCAmJiAhaW5zdC5fY2FsbGVkQ29tcG9u
ZW50V2lsbFVubW91bnQpIHtcbiAgICAgIGluc3QuX2NhbGxlZENvbXBvbmVudFdpbGxVbm1vdW50
ID0gdHJ1ZTtcblxuICAgICAgaWYgKHNhZmVseSkge1xuICAgICAgICB2YXIgbmFtZSA9IHRoaXMu
Z2V0TmFtZSgpICsgJy5jb21wb25lbnRXaWxsVW5tb3VudCgpJztcbiAgICAgICAgUmVhY3RFcnJv
clV0aWxzLmludm9rZUd1YXJkZWRDYWxsYmFjayhuYW1lLCBpbnN0LmNvbXBvbmVudFdpbGxVbm1v
dW50LmJpbmQoaW5zdCkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHByb2Nlc3MuZW52
Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICBtZWFzdXJlTGlmZUN5Y2xl
UGVyZihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gaW5zdC5jb21wb25lbnRXaWxs
VW5tb3VudCgpO1xuICAgICAgICAgIH0sIHRoaXMuX2RlYnVnSUQsICdjb21wb25lbnRXaWxsVW5t
b3VudCcpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGluc3QuY29tcG9uZW50V2lsbFVu
bW91bnQoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLl9yZW5k
ZXJlZENvbXBvbmVudCkge1xuICAgICAgUmVhY3RSZWNvbmNpbGVyLnVubW91bnRDb21wb25lbnQo
dGhpcy5fcmVuZGVyZWRDb21wb25lbnQsIHNhZmVseSk7XG4gICAgICB0aGlzLl9yZW5kZXJlZE5v
ZGVUeXBlID0gbnVsbDtcbiAgICAgIHRoaXMuX3JlbmRlcmVkQ29tcG9uZW50ID0gbnVsbDtcbiAg
ICAgIHRoaXMuX2luc3RhbmNlID0gbnVsbDtcbiAgICB9XG5cbiAgICAvLyBSZXNldCBwZW5kaW5n
IGZpZWxkc1xuICAgIC8vIEV2ZW4gaWYgdGhpcyBjb21wb25lbnQgaXMgc2NoZWR1bGVkIGZvciBh
bm90aGVyIHVwZGF0ZSBpbiBSZWFjdFVwZGF0ZXMsXG4gICAgLy8gaXQgd291bGQgc3RpbGwgYmUg
aWdub3JlZCBiZWNhdXNlIHRoZXNlIGZpZWxkcyBhcmUgcmVzZXQuXG4gICAgdGhpcy5fcGVuZGlu
Z1N0YXRlUXVldWUgPSBudWxsO1xuICAgIHRoaXMuX3BlbmRpbmdSZXBsYWNlU3RhdGUgPSBmYWxz
ZTtcbiAgICB0aGlzLl9wZW5kaW5nRm9yY2VVcGRhdGUgPSBmYWxzZTtcbiAgICB0aGlzLl9wZW5k
aW5nQ2FsbGJhY2tzID0gbnVsbDtcbiAgICB0aGlzLl9wZW5kaW5nRWxlbWVudCA9IG51bGw7XG5c
biAgICAvLyBUaGVzZSBmaWVsZHMgZG8gbm90IHJlYWxseSBuZWVkIHRvIGJlIHJlc2V0IHNpbmNl
IHRoaXMgb2JqZWN0IGlzIG5vXG4gICAgLy8gbG9uZ2VyIGFjY2Vzc2libGUuXG4gICAgdGhpcy5f
Y29udGV4dCA9IG51bGw7XG4gICAgdGhpcy5fcm9vdE5vZGVJRCA9IDA7XG4gICAgdGhpcy5fdG9w
TGV2ZWxXcmFwcGVyID0gbnVsbDtcblxuICAgIC8vIERlbGV0ZSB0aGUgcmVmZXJlbmNlIGZyb20g
dGhlIGluc3RhbmNlIHRvIHRoaXMgaW50ZXJuYWwgcmVwcmVzZW50YXRpb25cbiAgICAvLyB3aGlj
aCBhbGxvdyB0aGUgaW50ZXJuYWxzIHRvIGJlIHByb3Blcmx5IGNsZWFuZWQgdXAgZXZlbiBpZiB0
aGUgdXNlclxuICAgIC8vIGxlYWtzIGEgcmVmZXJlbmNlIHRvIHRoZSBwdWJsaWMgaW5zdGFuY2Uu
XG4gICAgUmVhY3RJbnN0YW5jZU1hcC5yZW1vdmUoaW5zdCk7XG5cbiAgICAvLyBTb21lIGV4aXN0
aW5nIGNvbXBvbmVudHMgcmVseSBvbiBpbnN0LnByb3BzIGV2ZW4gYWZ0ZXIgdGhleSd2ZSBiZWVu
XG4gICAgLy8gZGVzdHJveWVkIChpbiBldmVudCBoYW5kbGVycykuXG4gICAgLy8gVE9ETzogaW5z
dC5wcm9wcyA9IG51bGw7XG4gICAgLy8gVE9ETzogaW5zdC5zdGF0ZSA9IG51bGw7XG4gICAgLy8g
VE9ETzogaW5zdC5jb250ZXh0ID0gbnVsbDtcbiAgfSxcblxuICAvKipcbiAgICogRmlsdGVycyB0
aGUgY29udGV4dCBvYmplY3QgdG8gb25seSBjb250YWluIGtleXMgc3BlY2lmaWVkIGluXG4gICAq
IGBjb250ZXh0VHlwZXNgXG4gICAqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBjb250ZXh0XG4gICAq
IEByZXR1cm4gez9vYmplY3R9XG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBfbWFza0NvbnRleHQ6
IGZ1bmN0aW9uIChjb250ZXh0KSB7XG4gICAgdmFyIENvbXBvbmVudCA9IHRoaXMuX2N1cnJlbnRF
bGVtZW50LnR5cGU7XG4gICAgdmFyIGNvbnRleHRUeXBlcyA9IENvbXBvbmVudC5jb250ZXh0VHlw
ZXM7XG4gICAgaWYgKCFjb250ZXh0VHlwZXMpIHtcbiAgICAgIHJldHVybiBlbXB0eU9iamVjdDtc
biAgICB9XG4gICAgdmFyIG1hc2tlZENvbnRleHQgPSB7fTtcbiAgICBmb3IgKHZhciBjb250ZXh0
TmFtZSBpbiBjb250ZXh0VHlwZXMpIHtcbiAgICAgIG1hc2tlZENvbnRleHRbY29udGV4dE5hbWVd
ID0gY29udGV4dFtjb250ZXh0TmFtZV07XG4gICAgfVxuICAgIHJldHVybiBtYXNrZWRDb250ZXh0
O1xuICB9LFxuXG4gIC8qKlxuICAgKiBGaWx0ZXJzIHRoZSBjb250ZXh0IG9iamVjdCB0byBvbmx5
IGNvbnRhaW4ga2V5cyBzcGVjaWZpZWQgaW5cbiAgICogYGNvbnRleHRUeXBlc2AsIGFuZCBhc3Nl
cnRzIHRoYXQgdGhleSBhcmUgdmFsaWQuXG4gICAqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBjb250
ZXh0XG4gICAqIEByZXR1cm4gez9vYmplY3R9XG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBfcHJv
Y2Vzc0NvbnRleHQ6IGZ1bmN0aW9uIChjb250ZXh0KSB7XG4gICAgdmFyIG1hc2tlZENvbnRleHQg
PSB0aGlzLl9tYXNrQ29udGV4dChjb250ZXh0KTtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9F
TlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgdmFyIENvbXBvbmVudCA9IHRoaXMuX2N1cnJl
bnRFbGVtZW50LnR5cGU7XG4gICAgICBpZiAoQ29tcG9uZW50LmNvbnRleHRUeXBlcykge1xuICAg
ICAgICB0aGlzLl9jaGVja0NvbnRleHRUeXBlcyhDb21wb25lbnQuY29udGV4dFR5cGVzLCBtYXNr
ZWRDb250ZXh0LCAnY29udGV4dCcpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbWFza2Vk
Q29udGV4dDtcbiAgfSxcblxuICAvKipcbiAgICogQHBhcmFtIHtvYmplY3R9IGN1cnJlbnRDb250
ZXh0XG4gICAqIEByZXR1cm4ge29iamVjdH1cbiAgICogQHByaXZhdGVcbiAgICovXG4gIF9wcm9j
ZXNzQ2hpbGRDb250ZXh0OiBmdW5jdGlvbiAoY3VycmVudENvbnRleHQpIHtcbiAgICB2YXIgQ29t
cG9uZW50ID0gdGhpcy5fY3VycmVudEVsZW1lbnQudHlwZTtcbiAgICB2YXIgaW5zdCA9IHRoaXMu
X2luc3RhbmNlO1xuICAgIHZhciBjaGlsZENvbnRleHQ7XG5cbiAgICBpZiAoaW5zdC5nZXRDaGls
ZENvbnRleHQpIHtcbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rp
b24nKSB7XG4gICAgICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vbkJlZ2luUHJv
Y2Vzc2luZ0NoaWxkQ29udGV4dCgpO1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNoaWxkQ29u
dGV4dCA9IGluc3QuZ2V0Q2hpbGRDb250ZXh0KCk7XG4gICAgICAgIH0gZmluYWxseSB7XG4gICAg
ICAgICAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9uRW5kUHJvY2Vzc2luZ0NoaWxk
Q29udGV4dCgpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjaGlsZENvbnRl
eHQgPSBpbnN0LmdldENoaWxkQ29udGV4dCgpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChj
aGlsZENvbnRleHQpIHtcbiAgICAgICEodHlwZW9mIENvbXBvbmVudC5jaGlsZENvbnRleHRUeXBl
cyA9PT0gJ29iamVjdCcpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/
IGludmFyaWFudChmYWxzZSwgJyVzLmdldENoaWxkQ29udGV4dCgpOiBjaGlsZENvbnRleHRUeXBl
cyBtdXN0IGJlIGRlZmluZWQgaW4gb3JkZXIgdG8gdXNlIGdldENoaWxkQ29udGV4dCgpLicsIHRo
aXMuZ2V0TmFtZSgpIHx8ICdSZWFjdENvbXBvc2l0ZUNvbXBvbmVudCcpIDogX3Byb2RJbnZhcmlh
bnQoJzEwNycsIHRoaXMuZ2V0TmFtZSgpIHx8ICdSZWFjdENvbXBvc2l0ZUNvbXBvbmVudCcpIDog
dm9pZCAwO1xuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicp
IHtcbiAgICAgICAgdGhpcy5fY2hlY2tDb250ZXh0VHlwZXMoQ29tcG9uZW50LmNoaWxkQ29udGV4
dFR5cGVzLCBjaGlsZENvbnRleHQsICdjaGlsZCBjb250ZXh0Jyk7XG4gICAgICB9XG4gICAgICBm
b3IgKHZhciBuYW1lIGluIGNoaWxkQ29udGV4dCkge1xuICAgICAgICAhKG5hbWUgaW4gQ29tcG9u
ZW50LmNoaWxkQ29udGV4dFR5cGVzKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVj
dGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICclcy5nZXRDaGlsZENvbnRleHQoKToga2V5IFwiJXNc
IiBpcyBub3QgZGVmaW5lZCBpbiBjaGlsZENvbnRleHRUeXBlcy4nLCB0aGlzLmdldE5hbWUoKSB8
fCAnUmVhY3RDb21wb3NpdGVDb21wb25lbnQnLCBuYW1lKSA6IF9wcm9kSW52YXJpYW50KCcxMDgn
LCB0aGlzLmdldE5hbWUoKSB8fCAnUmVhY3RDb21wb3NpdGVDb21wb25lbnQnLCBuYW1lKSA6IHZv
aWQgMDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBfYXNzaWduKHt9LCBjdXJyZW50Q29udGV4dCwg
Y2hpbGRDb250ZXh0KTtcbiAgICB9XG4gICAgcmV0dXJuIGN1cnJlbnRDb250ZXh0O1xuICB9LFxu
XG4gIC8qKlxuICAgKiBBc3NlcnQgdGhhdCB0aGUgY29udGV4dCB0eXBlcyBhcmUgdmFsaWRcbiAg
ICpcbiAgICogQHBhcmFtIHtvYmplY3R9IHR5cGVTcGVjcyBNYXAgb2YgY29udGV4dCBmaWVsZCB0
byBhIFJlYWN0UHJvcFR5cGVcbiAgICogQHBhcmFtIHtvYmplY3R9IHZhbHVlcyBSdW50aW1lIHZh
bHVlcyB0aGF0IG5lZWQgdG8gYmUgdHlwZS1jaGVja2VkXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBs
b2NhdGlvbiBlLmcuIFwicHJvcFwiLCBcImNvbnRleHRcIiwgXCJjaGlsZCBjb250ZXh0XCJcbiAg
ICogQHByaXZhdGVcbiAgICovXG4gIF9jaGVja0NvbnRleHRUeXBlczogZnVuY3Rpb24gKHR5cGVT
cGVjcywgdmFsdWVzLCBsb2NhdGlvbikge1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAh
PT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICBjaGVja1JlYWN0VHlwZVNwZWModHlwZVNwZWNzLCB2
YWx1ZXMsIGxvY2F0aW9uLCB0aGlzLmdldE5hbWUoKSwgbnVsbCwgdGhpcy5fZGVidWdJRCk7XG4g
ICAgfVxuICB9LFxuXG4gIHJlY2VpdmVDb21wb25lbnQ6IGZ1bmN0aW9uIChuZXh0RWxlbWVudCwg
dHJhbnNhY3Rpb24sIG5leHRDb250ZXh0KSB7XG4gICAgdmFyIHByZXZFbGVtZW50ID0gdGhpcy5f
Y3VycmVudEVsZW1lbnQ7XG4gICAgdmFyIHByZXZDb250ZXh0ID0gdGhpcy5fY29udGV4dDtcblxu
ICAgIHRoaXMuX3BlbmRpbmdFbGVtZW50ID0gbnVsbDtcblxuICAgIHRoaXMudXBkYXRlQ29tcG9u
ZW50KHRyYW5zYWN0aW9uLCBwcmV2RWxlbWVudCwgbmV4dEVsZW1lbnQsIHByZXZDb250ZXh0LCBu
ZXh0Q29udGV4dCk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIElmIGFueSBvZiBgX3BlbmRpbmdFbGVt
ZW50YCwgYF9wZW5kaW5nU3RhdGVRdWV1ZWAsIG9yIGBfcGVuZGluZ0ZvcmNlVXBkYXRlYFxuICAg
KiBpcyBzZXQsIHVwZGF0ZSB0aGUgY29tcG9uZW50LlxuICAgKlxuICAgKiBAcGFyYW0ge1JlYWN0
UmVjb25jaWxlVHJhbnNhY3Rpb259IHRyYW5zYWN0aW9uXG4gICAqIEBpbnRlcm5hbFxuICAgKi9c
biAgcGVyZm9ybVVwZGF0ZUlmTmVjZXNzYXJ5OiBmdW5jdGlvbiAodHJhbnNhY3Rpb24pIHtcbiAg
ICBpZiAodGhpcy5fcGVuZGluZ0VsZW1lbnQgIT0gbnVsbCkge1xuICAgICAgUmVhY3RSZWNvbmNp
bGVyLnJlY2VpdmVDb21wb25lbnQodGhpcywgdGhpcy5fcGVuZGluZ0VsZW1lbnQsIHRyYW5zYWN0
aW9uLCB0aGlzLl9jb250ZXh0KTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuX3BlbmRpbmdTdGF0ZVF1
ZXVlICE9PSBudWxsIHx8IHRoaXMuX3BlbmRpbmdGb3JjZVVwZGF0ZSkge1xuICAgICAgdGhpcy51
cGRhdGVDb21wb25lbnQodHJhbnNhY3Rpb24sIHRoaXMuX2N1cnJlbnRFbGVtZW50LCB0aGlzLl9j
dXJyZW50RWxlbWVudCwgdGhpcy5fY29udGV4dCwgdGhpcy5fY29udGV4dCk7XG4gICAgfSBlbHNl
IHtcbiAgICAgIHRoaXMuX3VwZGF0ZUJhdGNoTnVtYmVyID0gbnVsbDtcbiAgICB9XG4gIH0sXG5c
biAgLyoqXG4gICAqIFBlcmZvcm0gYW4gdXBkYXRlIHRvIGEgbW91bnRlZCBjb21wb25lbnQuIFRo
ZSBjb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzIGFuZFxuICAgKiBzaG91bGRDb21wb25lbnRVcGRh
dGUgbWV0aG9kcyBhcmUgY2FsbGVkLCB0aGVuIChhc3N1bWluZyB0aGUgdXBkYXRlIGlzbid0XG4g
ICAqIHNraXBwZWQpIHRoZSByZW1haW5pbmcgdXBkYXRlIGxpZmVjeWNsZSBtZXRob2RzIGFyZSBj
YWxsZWQgYW5kIHRoZSBET01cbiAgICogcmVwcmVzZW50YXRpb24gaXMgdXBkYXRlZC5cbiAgICpc
biAgICogQnkgZGVmYXVsdCwgdGhpcyBpbXBsZW1lbnRzIFJlYWN0J3MgcmVuZGVyaW5nIGFuZCBy
ZWNvbmNpbGlhdGlvbiBhbGdvcml0aG0uXG4gICAqIFNvcGhpc3RpY2F0ZWQgY2xpZW50cyBtYXkg
d2lzaCB0byBvdmVycmlkZSB0aGlzLlxuICAgKlxuICAgKiBAcGFyYW0ge1JlYWN0UmVjb25jaWxl
VHJhbnNhY3Rpb259IHRyYW5zYWN0aW9uXG4gICAqIEBwYXJhbSB7UmVhY3RFbGVtZW50fSBwcmV2
UGFyZW50RWxlbWVudFxuICAgKiBAcGFyYW0ge1JlYWN0RWxlbWVudH0gbmV4dFBhcmVudEVsZW1l
bnRcbiAgICogQGludGVybmFsXG4gICAqIEBvdmVycmlkYWJsZVxuICAgKi9cbiAgdXBkYXRlQ29t
cG9uZW50OiBmdW5jdGlvbiAodHJhbnNhY3Rpb24sIHByZXZQYXJlbnRFbGVtZW50LCBuZXh0UGFy
ZW50RWxlbWVudCwgcHJldlVubWFza2VkQ29udGV4dCwgbmV4dFVubWFza2VkQ29udGV4dCkge1xu
ICAgIHZhciBpbnN0ID0gdGhpcy5faW5zdGFuY2U7XG4gICAgIShpbnN0ICE9IG51bGwpID8gcHJv
Y2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ0F0
dGVtcHRlZCB0byB1cGRhdGUgY29tcG9uZW50IGAlc2AgdGhhdCBoYXMgYWxyZWFkeSBiZWVuIHVu
bW91bnRlZCAob3IgZmFpbGVkIHRvIG1vdW50KS4nLCB0aGlzLmdldE5hbWUoKSB8fCAnUmVhY3RD
b21wb3NpdGVDb21wb25lbnQnKSA6IF9wcm9kSW52YXJpYW50KCcxMzYnLCB0aGlzLmdldE5hbWUo
KSB8fCAnUmVhY3RDb21wb3NpdGVDb21wb25lbnQnKSA6IHZvaWQgMDtcblxuICAgIHZhciB3aWxs
UmVjZWl2ZSA9IGZhbHNlO1xuICAgIHZhciBuZXh0Q29udGV4dDtcblxuICAgIC8vIERldGVybWlu
ZSBpZiB0aGUgY29udGV4dCBoYXMgY2hhbmdlZCBvciBub3RcbiAgICBpZiAodGhpcy5fY29udGV4
dCA9PT0gbmV4dFVubWFza2VkQ29udGV4dCkge1xuICAgICAgbmV4dENvbnRleHQgPSBpbnN0LmNv
bnRleHQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIG5leHRDb250ZXh0ID0gdGhpcy5fcHJvY2Vzc0Nv
bnRleHQobmV4dFVubWFza2VkQ29udGV4dCk7XG4gICAgICB3aWxsUmVjZWl2ZSA9IHRydWU7XG4g
ICAgfVxuXG4gICAgdmFyIHByZXZQcm9wcyA9IHByZXZQYXJlbnRFbGVtZW50LnByb3BzO1xuICAg
IHZhciBuZXh0UHJvcHMgPSBuZXh0UGFyZW50RWxlbWVudC5wcm9wcztcblxuICAgIC8vIE5vdCBh
IHNpbXBsZSBzdGF0ZSB1cGRhdGUgYnV0IGEgcHJvcHMgdXBkYXRlXG4gICAgaWYgKHByZXZQYXJl
bnRFbGVtZW50ICE9PSBuZXh0UGFyZW50RWxlbWVudCkge1xuICAgICAgd2lsbFJlY2VpdmUgPSB0
cnVlO1xuICAgIH1cblxuICAgIC8vIEFuIHVwZGF0ZSBoZXJlIHdpbGwgc2NoZWR1bGUgYW4gdXBk
YXRlIGJ1dCBpbW1lZGlhdGVseSBzZXRcbiAgICAvLyBfcGVuZGluZ1N0YXRlUXVldWUgd2hpY2gg
d2lsbCBlbnN1cmUgdGhhdCBhbnkgc3RhdGUgdXBkYXRlcyBnZXRzXG4gICAgLy8gaW1tZWRpYXRl
bHkgcmVjb25jaWxlZCBpbnN0ZWFkIG9mIHdhaXRpbmcgZm9yIHRoZSBuZXh0IGJhdGNoLlxuICAg
IGlmICh3aWxsUmVjZWl2ZSAmJiBpbnN0LmNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMpIHtcbiAg
ICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAg
IG1lYXN1cmVMaWZlQ3ljbGVQZXJmKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICByZXR1cm4gaW5z
dC5jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzKG5leHRQcm9wcywgbmV4dENvbnRleHQpO1xuICAg
ICAgICB9LCB0aGlzLl9kZWJ1Z0lELCAnY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcycpO1xuICAg
ICAgfSBlbHNlIHtcbiAgICAgICAgaW5zdC5jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzKG5leHRQ
cm9wcywgbmV4dENvbnRleHQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciBuZXh0U3RhdGUg
PSB0aGlzLl9wcm9jZXNzUGVuZGluZ1N0YXRlKG5leHRQcm9wcywgbmV4dENvbnRleHQpO1xuICAg
IHZhciBzaG91bGRVcGRhdGUgPSB0cnVlO1xuXG4gICAgaWYgKCF0aGlzLl9wZW5kaW5nRm9yY2VV
cGRhdGUpIHtcbiAgICAgIGlmIChpbnN0LnNob3VsZENvbXBvbmVudFVwZGF0ZSkge1xuICAgICAg
ICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICAg
IHNob3VsZFVwZGF0ZSA9IG1lYXN1cmVMaWZlQ3ljbGVQZXJmKGZ1bmN0aW9uICgpIHtcbiAgICAg
ICAgICAgIHJldHVybiBpbnN0LnNob3VsZENvbXBvbmVudFVwZGF0ZShuZXh0UHJvcHMsIG5leHRT
dGF0ZSwgbmV4dENvbnRleHQpO1xuICAgICAgICAgIH0sIHRoaXMuX2RlYnVnSUQsICdzaG91bGRD
b21wb25lbnRVcGRhdGUnKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzaG91bGRVcGRh
dGUgPSBpbnN0LnNob3VsZENvbXBvbmVudFVwZGF0ZShuZXh0UHJvcHMsIG5leHRTdGF0ZSwgbmV4
dENvbnRleHQpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAodGhpcy5f
Y29tcG9zaXRlVHlwZSA9PT0gQ29tcG9zaXRlVHlwZXMuUHVyZUNsYXNzKSB7XG4gICAgICAgICAg
c2hvdWxkVXBkYXRlID0gIXNoYWxsb3dFcXVhbChwcmV2UHJvcHMsIG5leHRQcm9wcykgfHwgIXNo
YWxsb3dFcXVhbChpbnN0LnN0YXRlLCBuZXh0U3RhdGUpO1xuICAgICAgICB9XG4gICAgICB9XG4g
ICAgfVxuXG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtc
biAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKHNo
b3VsZFVwZGF0ZSAhPT0gdW5kZWZpbmVkLCAnJXMuc2hvdWxkQ29tcG9uZW50VXBkYXRlKCk6IFJl
dHVybmVkIHVuZGVmaW5lZCBpbnN0ZWFkIG9mIGEgJyArICdib29sZWFuIHZhbHVlLiBNYWtlIHN1
cmUgdG8gcmV0dXJuIHRydWUgb3IgZmFsc2UuJywgdGhpcy5nZXROYW1lKCkgfHwgJ1JlYWN0Q29t
cG9zaXRlQ29tcG9uZW50JykgOiB2b2lkIDA7XG4gICAgfVxuXG4gICAgdGhpcy5fdXBkYXRlQmF0
Y2hOdW1iZXIgPSBudWxsO1xuICAgIGlmIChzaG91bGRVcGRhdGUpIHtcbiAgICAgIHRoaXMuX3Bl
bmRpbmdGb3JjZVVwZGF0ZSA9IGZhbHNlO1xuICAgICAgLy8gV2lsbCBzZXQgYHRoaXMucHJvcHNg
LCBgdGhpcy5zdGF0ZWAgYW5kIGB0aGlzLmNvbnRleHRgLlxuICAgICAgdGhpcy5fcGVyZm9ybUNv
bXBvbmVudFVwZGF0ZShuZXh0UGFyZW50RWxlbWVudCwgbmV4dFByb3BzLCBuZXh0U3RhdGUsIG5l
eHRDb250ZXh0LCB0cmFuc2FjdGlvbiwgbmV4dFVubWFza2VkQ29udGV4dCk7XG4gICAgfSBlbHNl
IHtcbiAgICAgIC8vIElmIGl0J3MgZGV0ZXJtaW5lZCB0aGF0IGEgY29tcG9uZW50IHNob3VsZCBu
b3QgdXBkYXRlLCB3ZSBzdGlsbCB3YW50XG4gICAgICAvLyB0byBzZXQgcHJvcHMgYW5kIHN0YXRl
IGJ1dCB3ZSBzaG9ydGN1dCB0aGUgcmVzdCBvZiB0aGUgdXBkYXRlLlxuICAgICAgdGhpcy5fY3Vy
cmVudEVsZW1lbnQgPSBuZXh0UGFyZW50RWxlbWVudDtcbiAgICAgIHRoaXMuX2NvbnRleHQgPSBu
ZXh0VW5tYXNrZWRDb250ZXh0O1xuICAgICAgaW5zdC5wcm9wcyA9IG5leHRQcm9wcztcbiAgICAg
IGluc3Quc3RhdGUgPSBuZXh0U3RhdGU7XG4gICAgICBpbnN0LmNvbnRleHQgPSBuZXh0Q29udGV4
dDtcbiAgICB9XG4gIH0sXG5cbiAgX3Byb2Nlc3NQZW5kaW5nU3RhdGU6IGZ1bmN0aW9uIChwcm9w
cywgY29udGV4dCkge1xuICAgIHZhciBpbnN0ID0gdGhpcy5faW5zdGFuY2U7XG4gICAgdmFyIHF1
ZXVlID0gdGhpcy5fcGVuZGluZ1N0YXRlUXVldWU7XG4gICAgdmFyIHJlcGxhY2UgPSB0aGlzLl9w
ZW5kaW5nUmVwbGFjZVN0YXRlO1xuICAgIHRoaXMuX3BlbmRpbmdSZXBsYWNlU3RhdGUgPSBmYWxz
ZTtcbiAgICB0aGlzLl9wZW5kaW5nU3RhdGVRdWV1ZSA9IG51bGw7XG5cbiAgICBpZiAoIXF1ZXVl
KSB7XG4gICAgICByZXR1cm4gaW5zdC5zdGF0ZTtcbiAgICB9XG5cbiAgICBpZiAocmVwbGFjZSAm
JiBxdWV1ZS5sZW5ndGggPT09IDEpIHtcbiAgICAgIHJldHVybiBxdWV1ZVswXTtcbiAgICB9XG5c
biAgICB2YXIgbmV4dFN0YXRlID0gX2Fzc2lnbih7fSwgcmVwbGFjZSA/IHF1ZXVlWzBdIDogaW5z
dC5zdGF0ZSk7XG4gICAgZm9yICh2YXIgaSA9IHJlcGxhY2UgPyAxIDogMDsgaSA8IHF1ZXVlLmxl
bmd0aDsgaSsrKSB7XG4gICAgICB2YXIgcGFydGlhbCA9IHF1ZXVlW2ldO1xuICAgICAgX2Fzc2ln
bihuZXh0U3RhdGUsIHR5cGVvZiBwYXJ0aWFsID09PSAnZnVuY3Rpb24nID8gcGFydGlhbC5jYWxs
KGluc3QsIG5leHRTdGF0ZSwgcHJvcHMsIGNvbnRleHQpIDogcGFydGlhbCk7XG4gICAgfVxuXG4g
ICAgcmV0dXJuIG5leHRTdGF0ZTtcbiAgfSxcblxuICAvKipcbiAgICogTWVyZ2VzIG5ldyBwcm9w
cyBhbmQgc3RhdGUsIG5vdGlmaWVzIGRlbGVnYXRlIG1ldGhvZHMgb2YgdXBkYXRlIGFuZFxuICAg
KiBwZXJmb3JtcyB1cGRhdGUuXG4gICAqXG4gICAqIEBwYXJhbSB7UmVhY3RFbGVtZW50fSBuZXh0
RWxlbWVudCBOZXh0IGVsZW1lbnRcbiAgICogQHBhcmFtIHtvYmplY3R9IG5leHRQcm9wcyBOZXh0
IHB1YmxpYyBvYmplY3QgdG8gc2V0IGFzIHByb3BlcnRpZXMuXG4gICAqIEBwYXJhbSB7P29iamVj
dH0gbmV4dFN0YXRlIE5leHQgb2JqZWN0IHRvIHNldCBhcyBzdGF0ZS5cbiAgICogQHBhcmFtIHs/
b2JqZWN0fSBuZXh0Q29udGV4dCBOZXh0IHB1YmxpYyBvYmplY3QgdG8gc2V0IGFzIGNvbnRleHQu
XG4gICAqIEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbn0gdHJhbnNhY3Rpb25cbiAg
ICogQHBhcmFtIHs/b2JqZWN0fSB1bm1hc2tlZENvbnRleHRcbiAgICogQHByaXZhdGVcbiAgICov
XG4gIF9wZXJmb3JtQ29tcG9uZW50VXBkYXRlOiBmdW5jdGlvbiAobmV4dEVsZW1lbnQsIG5leHRQ
cm9wcywgbmV4dFN0YXRlLCBuZXh0Q29udGV4dCwgdHJhbnNhY3Rpb24sIHVubWFza2VkQ29udGV4
dCkge1xuICAgIHZhciBfdGhpczIgPSB0aGlzO1xuXG4gICAgdmFyIGluc3QgPSB0aGlzLl9pbnN0
YW5jZTtcblxuICAgIHZhciBoYXNDb21wb25lbnREaWRVcGRhdGUgPSBCb29sZWFuKGluc3QuY29t
cG9uZW50RGlkVXBkYXRlKTtcbiAgICB2YXIgcHJldlByb3BzO1xuICAgIHZhciBwcmV2U3RhdGU7
XG4gICAgdmFyIHByZXZDb250ZXh0O1xuICAgIGlmIChoYXNDb21wb25lbnREaWRVcGRhdGUpIHtc
biAgICAgIHByZXZQcm9wcyA9IGluc3QucHJvcHM7XG4gICAgICBwcmV2U3RhdGUgPSBpbnN0LnN0
YXRlO1xuICAgICAgcHJldkNvbnRleHQgPSBpbnN0LmNvbnRleHQ7XG4gICAgfVxuXG4gICAgaWYg
KGluc3QuY29tcG9uZW50V2lsbFVwZGF0ZSkge1xuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVf
RU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgbWVhc3VyZUxpZmVDeWNsZVBlcmYoZnVu
Y3Rpb24gKCkge1xuICAgICAgICAgIHJldHVybiBpbnN0LmNvbXBvbmVudFdpbGxVcGRhdGUobmV4
dFByb3BzLCBuZXh0U3RhdGUsIG5leHRDb250ZXh0KTtcbiAgICAgICAgfSwgdGhpcy5fZGVidWdJ
RCwgJ2NvbXBvbmVudFdpbGxVcGRhdGUnKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGluc3Qu
Y29tcG9uZW50V2lsbFVwZGF0ZShuZXh0UHJvcHMsIG5leHRTdGF0ZSwgbmV4dENvbnRleHQpO1xu
ICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuX2N1cnJlbnRFbGVtZW50ID0gbmV4dEVsZW1lbnQ7
XG4gICAgdGhpcy5fY29udGV4dCA9IHVubWFza2VkQ29udGV4dDtcbiAgICBpbnN0LnByb3BzID0g
bmV4dFByb3BzO1xuICAgIGluc3Quc3RhdGUgPSBuZXh0U3RhdGU7XG4gICAgaW5zdC5jb250ZXh0
ID0gbmV4dENvbnRleHQ7XG5cbiAgICB0aGlzLl91cGRhdGVSZW5kZXJlZENvbXBvbmVudCh0cmFu
c2FjdGlvbiwgdW5tYXNrZWRDb250ZXh0KTtcblxuICAgIGlmIChoYXNDb21wb25lbnREaWRVcGRh
dGUpIHtcbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7
XG4gICAgICAgIHRyYW5zYWN0aW9uLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUoZnVuY3Rp
b24gKCkge1xuICAgICAgICAgIG1lYXN1cmVMaWZlQ3ljbGVQZXJmKGluc3QuY29tcG9uZW50RGlk
VXBkYXRlLmJpbmQoaW5zdCwgcHJldlByb3BzLCBwcmV2U3RhdGUsIHByZXZDb250ZXh0KSwgX3Ro
aXMyLl9kZWJ1Z0lELCAnY29tcG9uZW50RGlkVXBkYXRlJyk7XG4gICAgICAgIH0pO1xuICAgICAg
fSBlbHNlIHtcbiAgICAgICAgdHJhbnNhY3Rpb24uZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1
ZShpbnN0LmNvbXBvbmVudERpZFVwZGF0ZS5iaW5kKGluc3QsIHByZXZQcm9wcywgcHJldlN0YXRl
LCBwcmV2Q29udGV4dCksIGluc3QpO1xuICAgICAgfVxuICAgIH1cbiAgfSxcblxuICAvKipcbiAg
ICogQ2FsbCB0aGUgY29tcG9uZW50J3MgYHJlbmRlcmAgbWV0aG9kIGFuZCB1cGRhdGUgdGhlIERP
TSBhY2NvcmRpbmdseS5cbiAgICpcbiAgICogQHBhcmFtIHtSZWFjdFJlY29uY2lsZVRyYW5zYWN0
aW9ufSB0cmFuc2FjdGlvblxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIF91cGRhdGVSZW5kZXJl
ZENvbXBvbmVudDogZnVuY3Rpb24gKHRyYW5zYWN0aW9uLCBjb250ZXh0KSB7XG4gICAgdmFyIHBy
ZXZDb21wb25lbnRJbnN0YW5jZSA9IHRoaXMuX3JlbmRlcmVkQ29tcG9uZW50O1xuICAgIHZhciBw
cmV2UmVuZGVyZWRFbGVtZW50ID0gcHJldkNvbXBvbmVudEluc3RhbmNlLl9jdXJyZW50RWxlbWVu
dDtcbiAgICB2YXIgbmV4dFJlbmRlcmVkRWxlbWVudCA9IHRoaXMuX3JlbmRlclZhbGlkYXRlZENv
bXBvbmVudCgpO1xuXG4gICAgdmFyIGRlYnVnSUQgPSAwO1xuICAgIGlmIChwcm9jZXNzLmVudi5O
T0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICBkZWJ1Z0lEID0gdGhpcy5fZGVidWdJ
RDtcbiAgICB9XG5cbiAgICBpZiAoc2hvdWxkVXBkYXRlUmVhY3RDb21wb25lbnQocHJldlJlbmRl
cmVkRWxlbWVudCwgbmV4dFJlbmRlcmVkRWxlbWVudCkpIHtcbiAgICAgIFJlYWN0UmVjb25jaWxl
ci5yZWNlaXZlQ29tcG9uZW50KHByZXZDb21wb25lbnRJbnN0YW5jZSwgbmV4dFJlbmRlcmVkRWxl
bWVudCwgdHJhbnNhY3Rpb24sIHRoaXMuX3Byb2Nlc3NDaGlsZENvbnRleHQoY29udGV4dCkpO1xu
ICAgIH0gZWxzZSB7XG4gICAgICB2YXIgb2xkSG9zdE5vZGUgPSBSZWFjdFJlY29uY2lsZXIuZ2V0
SG9zdE5vZGUocHJldkNvbXBvbmVudEluc3RhbmNlKTtcbiAgICAgIFJlYWN0UmVjb25jaWxlci51
bm1vdW50Q29tcG9uZW50KHByZXZDb21wb25lbnRJbnN0YW5jZSwgZmFsc2UpO1xuXG4gICAgICB2
YXIgbm9kZVR5cGUgPSBSZWFjdE5vZGVUeXBlcy5nZXRUeXBlKG5leHRSZW5kZXJlZEVsZW1lbnQp
O1xuICAgICAgdGhpcy5fcmVuZGVyZWROb2RlVHlwZSA9IG5vZGVUeXBlO1xuICAgICAgdmFyIGNo
aWxkID0gdGhpcy5faW5zdGFudGlhdGVSZWFjdENvbXBvbmVudChuZXh0UmVuZGVyZWRFbGVtZW50
LCBub2RlVHlwZSAhPT0gUmVhY3ROb2RlVHlwZXMuRU1QVFkgLyogc2hvdWxkSGF2ZURlYnVnSUQg
Ki9cbiAgICAgICk7XG4gICAgICB0aGlzLl9yZW5kZXJlZENvbXBvbmVudCA9IGNoaWxkO1xuXG4g
ICAgICB2YXIgbmV4dE1hcmt1cCA9IFJlYWN0UmVjb25jaWxlci5tb3VudENvbXBvbmVudChjaGls
ZCwgdHJhbnNhY3Rpb24sIHRoaXMuX2hvc3RQYXJlbnQsIHRoaXMuX2hvc3RDb250YWluZXJJbmZv
LCB0aGlzLl9wcm9jZXNzQ2hpbGRDb250ZXh0KGNvbnRleHQpLCBkZWJ1Z0lEKTtcblxuICAgICAg
aWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgaWYg
KGRlYnVnSUQgIT09IDApIHtcbiAgICAgICAgICB2YXIgY2hpbGREZWJ1Z0lEcyA9IGNoaWxkLl9k
ZWJ1Z0lEICE9PSAwID8gW2NoaWxkLl9kZWJ1Z0lEXSA6IFtdO1xuICAgICAgICAgIFJlYWN0SW5z
dHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vblNldENoaWxkcmVuKGRlYnVnSUQsIGNoaWxkRGVidWdJ
RHMpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX3JlcGxhY2VOb2RlV2l0aE1h
cmt1cChvbGRIb3N0Tm9kZSwgbmV4dE1hcmt1cCwgcHJldkNvbXBvbmVudEluc3RhbmNlKTtcbiAg
ICB9XG4gIH0sXG5cbiAgLyoqXG4gICAqIE92ZXJyaWRkZW4gaW4gc2hhbGxvdyByZW5kZXJpbmcu
XG4gICAqXG4gICAqIEBwcm90ZWN0ZWRcbiAgICovXG4gIF9yZXBsYWNlTm9kZVdpdGhNYXJrdXA6
IGZ1bmN0aW9uIChvbGRIb3N0Tm9kZSwgbmV4dE1hcmt1cCwgcHJldkluc3RhbmNlKSB7XG4gICAg
UmVhY3RDb21wb25lbnRFbnZpcm9ubWVudC5yZXBsYWNlTm9kZVdpdGhNYXJrdXAob2xkSG9zdE5v
ZGUsIG5leHRNYXJrdXAsIHByZXZJbnN0YW5jZSk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIEBwcm90
ZWN0ZWRcbiAgICovXG4gIF9yZW5kZXJWYWxpZGF0ZWRDb21wb25lbnRXaXRob3V0T3duZXJPckNv
bnRleHQ6IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgaW5zdCA9IHRoaXMuX2luc3RhbmNlO1xuICAg
IHZhciByZW5kZXJlZEVsZW1lbnQ7XG5cbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09
ICdwcm9kdWN0aW9uJykge1xuICAgICAgcmVuZGVyZWRFbGVtZW50ID0gbWVhc3VyZUxpZmVDeWNs
ZVBlcmYoZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gaW5zdC5yZW5kZXIoKTtcbiAgICAg
IH0sIHRoaXMuX2RlYnVnSUQsICdyZW5kZXInKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVuZGVy
ZWRFbGVtZW50ID0gaW5zdC5yZW5kZXIoKTtcbiAgICB9XG5cbiAgICBpZiAocHJvY2Vzcy5lbnYu
Tk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgLy8gV2UgYWxsb3cgYXV0by1tb2Nr
cyB0byBwcm9jZWVkIGFzIGlmIHRoZXkncmUgcmV0dXJuaW5nIG51bGwuXG4gICAgICBpZiAocmVu
ZGVyZWRFbGVtZW50ID09PSB1bmRlZmluZWQgJiYgaW5zdC5yZW5kZXIuX2lzTW9ja0Z1bmN0aW9u
KSB7XG4gICAgICAgIC8vIFRoaXMgaXMgcHJvYmFibHkgYmFkIHByYWN0aWNlLiBDb25zaWRlciB3
YXJuaW5nIGhlcmUgYW5kXG4gICAgICAgIC8vIGRlcHJlY2F0aW5nIHRoaXMgY29udmVuaWVuY2Uu
XG4gICAgICAgIHJlbmRlcmVkRWxlbWVudCA9IG51bGw7XG4gICAgICB9XG4gICAgfVxuXG4gICAg
cmV0dXJuIHJlbmRlcmVkRWxlbWVudDtcbiAgfSxcblxuICAvKipcbiAgICogQHByaXZhdGVcbiAg
ICovXG4gIF9yZW5kZXJWYWxpZGF0ZWRDb21wb25lbnQ6IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIg
cmVuZGVyZWRFbGVtZW50O1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1
Y3Rpb24nIHx8IHRoaXMuX2NvbXBvc2l0ZVR5cGUgIT09IENvbXBvc2l0ZVR5cGVzLlN0YXRlbGVz
c0Z1bmN0aW9uYWwpIHtcbiAgICAgIFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQgPSB0aGlzO1xu
ICAgICAgdHJ5IHtcbiAgICAgICAgcmVuZGVyZWRFbGVtZW50ID0gdGhpcy5fcmVuZGVyVmFsaWRh
dGVkQ29tcG9uZW50V2l0aG91dE93bmVyT3JDb250ZXh0KCk7XG4gICAgICB9IGZpbmFsbHkge1xu
ICAgICAgICBSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50ID0gbnVsbDtcbiAgICAgIH1cbiAgICB9
IGVsc2Uge1xuICAgICAgcmVuZGVyZWRFbGVtZW50ID0gdGhpcy5fcmVuZGVyVmFsaWRhdGVkQ29t
cG9uZW50V2l0aG91dE93bmVyT3JDb250ZXh0KCk7XG4gICAgfVxuICAgICEoXG4gICAgLy8gVE9E
TzogQW4gYGlzVmFsaWROb2RlYCBmdW5jdGlvbiB3b3VsZCBwcm9iYWJseSBiZSBtb3JlIGFwcHJv
cHJpYXRlXG4gICAgcmVuZGVyZWRFbGVtZW50ID09PSBudWxsIHx8IHJlbmRlcmVkRWxlbWVudCA9
PT0gZmFsc2UgfHwgUmVhY3QuaXNWYWxpZEVsZW1lbnQocmVuZGVyZWRFbGVtZW50KSkgPyBwcm9j
ZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnJXMu
cmVuZGVyKCk6IEEgdmFsaWQgUmVhY3QgZWxlbWVudCAob3IgbnVsbCkgbXVzdCBiZSByZXR1cm5l
ZC4gWW91IG1heSBoYXZlIHJldHVybmVkIHVuZGVmaW5lZCwgYW4gYXJyYXkgb3Igc29tZSBvdGhl
ciBpbnZhbGlkIG9iamVjdC4nLCB0aGlzLmdldE5hbWUoKSB8fCAnUmVhY3RDb21wb3NpdGVDb21w
b25lbnQnKSA6IF9wcm9kSW52YXJpYW50KCcxMDknLCB0aGlzLmdldE5hbWUoKSB8fCAnUmVhY3RD
b21wb3NpdGVDb21wb25lbnQnKSA6IHZvaWQgMDtcblxuICAgIHJldHVybiByZW5kZXJlZEVsZW1l
bnQ7XG4gIH0sXG5cbiAgLyoqXG4gICAqIExhemlseSBhbGxvY2F0ZXMgdGhlIHJlZnMgb2JqZWN0
IGFuZCBzdG9yZXMgYGNvbXBvbmVudGAgYXMgYHJlZmAuXG4gICAqXG4gICAqIEBwYXJhbSB7c3Ry
aW5nfSByZWYgUmVmZXJlbmNlIG5hbWUuXG4gICAqIEBwYXJhbSB7Y29tcG9uZW50fSBjb21wb25l
bnQgQ29tcG9uZW50IHRvIHN0b3JlIGFzIGByZWZgLlxuICAgKiBAZmluYWxcbiAgICogQHByaXZh
dGVcbiAgICovXG4gIGF0dGFjaFJlZjogZnVuY3Rpb24gKHJlZiwgY29tcG9uZW50KSB7XG4gICAg
dmFyIGluc3QgPSB0aGlzLmdldFB1YmxpY0luc3RhbmNlKCk7XG4gICAgIShpbnN0ICE9IG51bGwp
ID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxz
ZSwgJ1N0YXRlbGVzcyBmdW5jdGlvbiBjb21wb25lbnRzIGNhbm5vdCBoYXZlIHJlZnMuJykgOiBf
cHJvZEludmFyaWFudCgnMTEwJykgOiB2b2lkIDA7XG4gICAgdmFyIHB1YmxpY0NvbXBvbmVudElu
c3RhbmNlID0gY29tcG9uZW50LmdldFB1YmxpY0luc3RhbmNlKCk7XG4gICAgaWYgKHByb2Nlc3Mu
ZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIHZhciBjb21wb25lbnROYW1l
ID0gY29tcG9uZW50ICYmIGNvbXBvbmVudC5nZXROYW1lID8gY29tcG9uZW50LmdldE5hbWUoKSA6
ICdhIGNvbXBvbmVudCc7XG4gICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rp
b24nID8gd2FybmluZyhwdWJsaWNDb21wb25lbnRJbnN0YW5jZSAhPSBudWxsIHx8IGNvbXBvbmVu
dC5fY29tcG9zaXRlVHlwZSAhPT0gQ29tcG9zaXRlVHlwZXMuU3RhdGVsZXNzRnVuY3Rpb25hbCwg
J1N0YXRlbGVzcyBmdW5jdGlvbiBjb21wb25lbnRzIGNhbm5vdCBiZSBnaXZlbiByZWZzICcgKyAn
KFNlZSByZWYgXCIlc1wiIGluICVzIGNyZWF0ZWQgYnkgJXMpLiAnICsgJ0F0dGVtcHRzIHRvIGFj
Y2VzcyB0aGlzIHJlZiB3aWxsIGZhaWwuJywgcmVmLCBjb21wb25lbnROYW1lLCB0aGlzLmdldE5h
bWUoKSkgOiB2b2lkIDA7XG4gICAgfVxuICAgIHZhciByZWZzID0gaW5zdC5yZWZzID09PSBlbXB0
eU9iamVjdCA/IGluc3QucmVmcyA9IHt9IDogaW5zdC5yZWZzO1xuICAgIHJlZnNbcmVmXSA9IHB1
YmxpY0NvbXBvbmVudEluc3RhbmNlO1xuICB9LFxuXG4gIC8qKlxuICAgKiBEZXRhY2hlcyBhIHJl
ZmVyZW5jZSBuYW1lLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gcmVmIE5hbWUgdG8gZGVy
ZWZlcmVuY2UuXG4gICAqIEBmaW5hbFxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZGV0YWNoUmVm
OiBmdW5jdGlvbiAocmVmKSB7XG4gICAgdmFyIHJlZnMgPSB0aGlzLmdldFB1YmxpY0luc3RhbmNl
KCkucmVmcztcbiAgICBkZWxldGUgcmVmc1tyZWZdO1xuICB9LFxuXG4gIC8qKlxuICAgKiBHZXQg
YSB0ZXh0IGRlc2NyaXB0aW9uIG9mIHRoZSBjb21wb25lbnQgdGhhdCBjYW4gYmUgdXNlZCB0byBp
ZGVudGlmeSBpdFxuICAgKiBpbiBlcnJvciBtZXNzYWdlcy5cbiAgICogQHJldHVybiB7c3RyaW5n
fSBUaGUgbmFtZSBvciBudWxsLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIGdldE5hbWU6IGZ1
bmN0aW9uICgpIHtcbiAgICB2YXIgdHlwZSA9IHRoaXMuX2N1cnJlbnRFbGVtZW50LnR5cGU7XG4g
ICAgdmFyIGNvbnN0cnVjdG9yID0gdGhpcy5faW5zdGFuY2UgJiYgdGhpcy5faW5zdGFuY2UuY29u
c3RydWN0b3I7XG4gICAgcmV0dXJuIHR5cGUuZGlzcGxheU5hbWUgfHwgY29uc3RydWN0b3IgJiYg
Y29uc3RydWN0b3IuZGlzcGxheU5hbWUgfHwgdHlwZS5uYW1lIHx8IGNvbnN0cnVjdG9yICYmIGNv
bnN0cnVjdG9yLm5hbWUgfHwgbnVsbDtcbiAgfSxcblxuICAvKipcbiAgICogR2V0IHRoZSBwdWJs
aWNseSBhY2Nlc3NpYmxlIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgY29tcG9uZW50IC0gaS5lLiB3
aGF0XG4gICAqIGlzIGV4cG9zZWQgYnkgcmVmcyBhbmQgcmV0dXJuZWQgYnkgcmVuZGVyLiBDYW4g
YmUgbnVsbCBmb3Igc3RhdGVsZXNzXG4gICAqIGNvbXBvbmVudHMuXG4gICAqXG4gICAqIEByZXR1
cm4ge1JlYWN0Q29tcG9uZW50fSB0aGUgcHVibGljIGNvbXBvbmVudCBpbnN0YW5jZS5cbiAgICog
QGludGVybmFsXG4gICAqL1xuICBnZXRQdWJsaWNJbnN0YW5jZTogZnVuY3Rpb24gKCkge1xuICAg
IHZhciBpbnN0ID0gdGhpcy5faW5zdGFuY2U7XG4gICAgaWYgKHRoaXMuX2NvbXBvc2l0ZVR5cGUg
PT09IENvbXBvc2l0ZVR5cGVzLlN0YXRlbGVzc0Z1bmN0aW9uYWwpIHtcbiAgICAgIHJldHVybiBu
dWxsO1xuICAgIH1cbiAgICByZXR1cm4gaW5zdDtcbiAgfSxcblxuICAvLyBTdHViXG4gIF9pbnN0
YW50aWF0ZVJlYWN0Q29tcG9uZW50OiBudWxsXG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0
Q29tcG9zaXRlQ29tcG9uZW50O1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sg
Rk9PVEVSXG4gKiogLi9+L3JlYWN0LWRvbS9saWIvUmVhY3RDb21wb3NpdGVDb21wb25lbnQuanNc
biAqKiBtb2R1bGUgaWQgPSAxMzZcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxu
ICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMg
cmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUg
QlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJv
b3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAq
IG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhl
IHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4vKiBnbG9iYWxzIF9fUkVBQ1RfREVWVE9PTFNf
R0xPQkFMX0hPT0tfXyovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIFJlYWN0RE9NQ29tcG9uZW50
VHJlZSA9IHJlcXVpcmUoJy4vUmVhY3RET01Db21wb25lbnRUcmVlJyk7XG52YXIgUmVhY3REZWZh
dWx0SW5qZWN0aW9uID0gcmVxdWlyZSgnLi9SZWFjdERlZmF1bHRJbmplY3Rpb24nKTtcbnZhciBS
ZWFjdE1vdW50ID0gcmVxdWlyZSgnLi9SZWFjdE1vdW50Jyk7XG52YXIgUmVhY3RSZWNvbmNpbGVy
ID0gcmVxdWlyZSgnLi9SZWFjdFJlY29uY2lsZXInKTtcbnZhciBSZWFjdFVwZGF0ZXMgPSByZXF1
aXJlKCcuL1JlYWN0VXBkYXRlcycpO1xudmFyIFJlYWN0VmVyc2lvbiA9IHJlcXVpcmUoJy4vUmVh
Y3RWZXJzaW9uJyk7XG5cbnZhciBmaW5kRE9NTm9kZSA9IHJlcXVpcmUoJy4vZmluZERPTU5vZGUn
KTtcbnZhciBnZXRIb3N0Q29tcG9uZW50RnJvbUNvbXBvc2l0ZSA9IHJlcXVpcmUoJy4vZ2V0SG9z
dENvbXBvbmVudEZyb21Db21wb3NpdGUnKTtcbnZhciByZW5kZXJTdWJ0cmVlSW50b0NvbnRhaW5l
ciA9IHJlcXVpcmUoJy4vcmVuZGVyU3VidHJlZUludG9Db250YWluZXInKTtcbnZhciB3YXJuaW5n
ID0gcmVxdWlyZSgnZmJqcy9saWIvd2FybmluZycpO1xuXG5SZWFjdERlZmF1bHRJbmplY3Rpb24u
aW5qZWN0KCk7XG5cbnZhciBSZWFjdERPTSA9IHtcbiAgZmluZERPTU5vZGU6IGZpbmRET01Ob2Rl
LFxuICByZW5kZXI6IFJlYWN0TW91bnQucmVuZGVyLFxuICB1bm1vdW50Q29tcG9uZW50QXROb2Rl
OiBSZWFjdE1vdW50LnVubW91bnRDb21wb25lbnRBdE5vZGUsXG4gIHZlcnNpb246IFJlYWN0VmVy
c2lvbixcblxuICAvKiBlc2xpbnQtZGlzYWJsZSBjYW1lbGNhc2UgKi9cbiAgdW5zdGFibGVfYmF0
Y2hlZFVwZGF0ZXM6IFJlYWN0VXBkYXRlcy5iYXRjaGVkVXBkYXRlcyxcbiAgdW5zdGFibGVfcmVu
ZGVyU3VidHJlZUludG9Db250YWluZXI6IHJlbmRlclN1YnRyZWVJbnRvQ29udGFpbmVyXG4gIC8q
IGVzbGludC1lbmFibGUgY2FtZWxjYXNlICovXG59O1xuXG4vLyBJbmplY3QgdGhlIHJ1bnRpbWUg
aW50byBhIGRldnRvb2xzIGdsb2JhbCBob29rIHJlZ2FyZGxlc3Mgb2YgYnJvd3Nlci5cbi8vIEFs
bG93cyBmb3IgZGVidWdnaW5nIHdoZW4gdGhlIGhvb2sgaXMgaW5qZWN0ZWQgb24gdGhlIHBhZ2Uu
XG5pZiAodHlwZW9mIF9fUkVBQ1RfREVWVE9PTFNfR0xPQkFMX0hPT0tfXyAhPT0gJ3VuZGVmaW5l
ZCcgJiYgdHlwZW9mIF9fUkVBQ1RfREVWVE9PTFNfR0xPQkFMX0hPT0tfXy5pbmplY3QgPT09ICdm
dW5jdGlvbicpIHtcbiAgX19SRUFDVF9ERVZUT09MU19HTE9CQUxfSE9PS19fLmluamVjdCh7XG4g
ICAgQ29tcG9uZW50VHJlZToge1xuICAgICAgZ2V0Q2xvc2VzdEluc3RhbmNlRnJvbU5vZGU6IFJl
YWN0RE9NQ29tcG9uZW50VHJlZS5nZXRDbG9zZXN0SW5zdGFuY2VGcm9tTm9kZSxcbiAgICAgIGdl
dE5vZGVGcm9tSW5zdGFuY2U6IGZ1bmN0aW9uIChpbnN0KSB7XG4gICAgICAgIC8vIGluc3QgaXMg
YW4gaW50ZXJuYWwgaW5zdGFuY2UgKGJ1dCBjb3VsZCBiZSBhIGNvbXBvc2l0ZSlcbiAgICAgICAg
aWYgKGluc3QuX3JlbmRlcmVkQ29tcG9uZW50KSB7XG4gICAgICAgICAgaW5zdCA9IGdldEhvc3RD
b21wb25lbnRGcm9tQ29tcG9zaXRlKGluc3QpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpbnN0
KSB7XG4gICAgICAgICAgcmV0dXJuIFJlYWN0RE9NQ29tcG9uZW50VHJlZS5nZXROb2RlRnJvbUlu
c3RhbmNlKGluc3QpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiBudWxsO1xu
ICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBNb3VudDogUmVhY3RNb3VudCxcbiAgICBS
ZWNvbmNpbGVyOiBSZWFjdFJlY29uY2lsZXJcbiAgfSk7XG59XG5cbmlmIChwcm9jZXNzLmVudi5O
T0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIHZhciBFeGVjdXRpb25FbnZpcm9ubWVudCA9
IHJlcXVpcmUoJ2ZianMvbGliL0V4ZWN1dGlvbkVudmlyb25tZW50Jyk7XG4gIGlmIChFeGVjdXRp
b25FbnZpcm9ubWVudC5jYW5Vc2VET00gJiYgd2luZG93LnRvcCA9PT0gd2luZG93LnNlbGYpIHtc
biAgICAvLyBGaXJzdCBjaGVjayBpZiBkZXZ0b29scyBpcyBub3QgaW5zdGFsbGVkXG4gICAgaWYg
KHR5cGVvZiBfX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX18gPT09ICd1bmRlZmluZWQnKSB7
XG4gICAgICAvLyBJZiB3ZSdyZSBpbiBDaHJvbWUgb3IgRmlyZWZveCwgcHJvdmlkZSBhIGRvd25s
b2FkIGxpbmsgaWYgbm90IGluc3RhbGxlZC5cbiAgICAgIGlmIChuYXZpZ2F0b3IudXNlckFnZW50
LmluZGV4T2YoJ0Nocm9tZScpID4gLTEgJiYgbmF2aWdhdG9yLnVzZXJBZ2VudC5pbmRleE9mKCdF
ZGdlJykgPT09IC0xIHx8IG5hdmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZignRmlyZWZveCcpID4g
LTEpIHtcbiAgICAgICAgLy8gRmlyZWZveCBkb2VzIG5vdCBoYXZlIHRoZSBpc3N1ZSB3aXRoIGRl
dnRvb2xzIGxvYWRlZCBvdmVyIGZpbGU6Ly9cbiAgICAgICAgdmFyIHNob3dGaWxlVXJsTWVzc2Fn
ZSA9IHdpbmRvdy5sb2NhdGlvbi5wcm90b2NvbC5pbmRleE9mKCdodHRwJykgPT09IC0xICYmIG5h
dmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZignRmlyZWZveCcpID09PSAtMTtcbiAgICAgICAgY29u
c29sZS5kZWJ1ZygnRG93bmxvYWQgdGhlIFJlYWN0IERldlRvb2xzICcgKyAoc2hvd0ZpbGVVcmxN
ZXNzYWdlID8gJ2FuZCB1c2UgYW4gSFRUUCBzZXJ2ZXIgKGluc3RlYWQgb2YgYSBmaWxlOiBVUkwp
ICcgOiAnJykgKyAnZm9yIGEgYmV0dGVyIGRldmVsb3BtZW50IGV4cGVyaWVuY2U6ICcgKyAnaHR0
cHM6Ly9mYi5tZS9yZWFjdC1kZXZ0b29scycpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciB0
ZXN0RnVuYyA9IGZ1bmN0aW9uIHRlc3RGbigpIHt9O1xuICAgIHByb2Nlc3MuZW52Lk5PREVfRU5W
ICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKCh0ZXN0RnVuYy5uYW1lIHx8IHRlc3RGdW5jLnRv
U3RyaW5nKCkpLmluZGV4T2YoJ3Rlc3RGbicpICE9PSAtMSwgXCJJdCBsb29rcyBsaWtlIHlvdSdy
ZSB1c2luZyBhIG1pbmlmaWVkIGNvcHkgb2YgdGhlIGRldmVsb3BtZW50IGJ1aWxkIFwiICsgJ29m
IFJlYWN0LiBXaGVuIGRlcGxveWluZyBSZWFjdCBhcHBzIHRvIHByb2R1Y3Rpb24sIG1ha2Ugc3Vy
ZSB0byB1c2UgJyArICd0aGUgcHJvZHVjdGlvbiBidWlsZCB3aGljaCBza2lwcyBkZXZlbG9wbWVu
dCB3YXJuaW5ncyBhbmQgaXMgZmFzdGVyLiAnICsgJ1NlZSBodHRwczovL2ZiLm1lL3JlYWN0LW1p
bmlmaWNhdGlvbiBmb3IgbW9yZSBkZXRhaWxzLicpIDogdm9pZCAwO1xuXG4gICAgLy8gSWYgd2Un
cmUgaW4gSUU4LCBjaGVjayB0byBzZWUgaWYgd2UgYXJlIGluIGNvbXBhdGliaWxpdHkgbW9kZSBh
bmQgcHJvdmlkZVxuICAgIC8vIGluZm9ybWF0aW9uIG9uIHByZXZlbnRpbmcgY29tcGF0aWJpbGl0
eSBtb2RlXG4gICAgdmFyIGllQ29tcGF0aWJpbGl0eU1vZGUgPSBkb2N1bWVudC5kb2N1bWVudE1v
ZGUgJiYgZG9jdW1lbnQuZG9jdW1lbnRNb2RlIDwgODtcblxuICAgIHByb2Nlc3MuZW52Lk5PREVf
RU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKCFpZUNvbXBhdGliaWxpdHlNb2RlLCAnSW50
ZXJuZXQgRXhwbG9yZXIgaXMgcnVubmluZyBpbiBjb21wYXRpYmlsaXR5IG1vZGU7IHBsZWFzZSBh
ZGQgdGhlICcgKyAnZm9sbG93aW5nIHRhZyB0byB5b3VyIEhUTUwgdG8gcHJldmVudCB0aGlzIGZy
b20gaGFwcGVuaW5nOiAnICsgJzxtZXRhIGh0dHAtZXF1aXY9XCJYLVVBLUNvbXBhdGlibGVcIiBj
b250ZW50PVwiSUU9ZWRnZVwiIC8+JykgOiB2b2lkIDA7XG5cbiAgICB2YXIgZXhwZWN0ZWRGZWF0
dXJlcyA9IFtcbiAgICAvLyBzaGltc1xuICAgIEFycmF5LmlzQXJyYXksIEFycmF5LnByb3RvdHlw
ZS5ldmVyeSwgQXJyYXkucHJvdG90eXBlLmZvckVhY2gsIEFycmF5LnByb3RvdHlwZS5pbmRleE9m
LCBBcnJheS5wcm90b3R5cGUubWFwLCBEYXRlLm5vdywgRnVuY3Rpb24ucHJvdG90eXBlLmJpbmQs
IE9iamVjdC5rZXlzLCBTdHJpbmcucHJvdG90eXBlLnRyaW1dO1xuXG4gICAgZm9yICh2YXIgaSA9
IDA7IGkgPCBleHBlY3RlZEZlYXR1cmVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAoIWV4cGVj
dGVkRmVhdHVyZXNbaV0pIHtcbiAgICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9k
dWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdPbmUgb3IgbW9yZSBFUzUgc2hpbXMgZXhwZWN0ZWQg
YnkgUmVhY3QgYXJlIG5vdCBhdmFpbGFibGU6ICcgKyAnaHR0cHM6Ly9mYi5tZS9yZWFjdC13YXJu
aW5nLXBvbHlmaWxscycpIDogdm9pZCAwO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9
XG4gIH1cbn1cblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtc
biAgdmFyIFJlYWN0SW5zdHJ1bWVudGF0aW9uID0gcmVxdWlyZSgnLi9SZWFjdEluc3RydW1lbnRh
dGlvbicpO1xuICB2YXIgUmVhY3RET01Vbmtub3duUHJvcGVydHlIb29rID0gcmVxdWlyZSgnLi9S
ZWFjdERPTVVua25vd25Qcm9wZXJ0eUhvb2snKTtcbiAgdmFyIFJlYWN0RE9NTnVsbElucHV0VmFs
dWVQcm9wSG9vayA9IHJlcXVpcmUoJy4vUmVhY3RET01OdWxsSW5wdXRWYWx1ZVByb3BIb29rJyk7
XG4gIHZhciBSZWFjdERPTUludmFsaWRBUklBSG9vayA9IHJlcXVpcmUoJy4vUmVhY3RET01JbnZh
bGlkQVJJQUhvb2snKTtcblxuICBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wuYWRkSG9v
ayhSZWFjdERPTVVua25vd25Qcm9wZXJ0eUhvb2spO1xuICBSZWFjdEluc3RydW1lbnRhdGlvbi5k
ZWJ1Z1Rvb2wuYWRkSG9vayhSZWFjdERPTU51bGxJbnB1dFZhbHVlUHJvcEhvb2spO1xuICBSZWFj
dEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wuYWRkSG9vayhSZWFjdERPTUludmFsaWRBUklBSG9v
ayk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RET007XG5cblxuLyoqKioqKioqKioqKioq
KioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3QtZG9tL2xpYi9SZWFjdERPTS5q
c1xuICoqIG1vZHVsZSBpZCA9IDEzN1xuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoq
XG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0
cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRo
ZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUg
cm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxu
ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0
aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICovXG5cbi8qIGdsb2JhbCBoYXNPd25Qcm9wZXJ0eTp0
cnVlICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIF9wcm9kSW52YXJpYW50ID0gcmVxdWlyZSgn
Li9yZWFjdFByb2RJbnZhcmlhbnQnKSxcbiAgICBfYXNzaWduID0gcmVxdWlyZSgnb2JqZWN0LWFz
c2lnbicpO1xuXG52YXIgQXV0b0ZvY3VzVXRpbHMgPSByZXF1aXJlKCcuL0F1dG9Gb2N1c1V0aWxz
Jyk7XG52YXIgQ1NTUHJvcGVydHlPcGVyYXRpb25zID0gcmVxdWlyZSgnLi9DU1NQcm9wZXJ0eU9w
ZXJhdGlvbnMnKTtcbnZhciBET01MYXp5VHJlZSA9IHJlcXVpcmUoJy4vRE9NTGF6eVRyZWUnKTtc
bnZhciBET01OYW1lc3BhY2VzID0gcmVxdWlyZSgnLi9ET01OYW1lc3BhY2VzJyk7XG52YXIgRE9N
UHJvcGVydHkgPSByZXF1aXJlKCcuL0RPTVByb3BlcnR5Jyk7XG52YXIgRE9NUHJvcGVydHlPcGVy
YXRpb25zID0gcmVxdWlyZSgnLi9ET01Qcm9wZXJ0eU9wZXJhdGlvbnMnKTtcbnZhciBFdmVudFBs
dWdpbkh1YiA9IHJlcXVpcmUoJy4vRXZlbnRQbHVnaW5IdWInKTtcbnZhciBFdmVudFBsdWdpblJl
Z2lzdHJ5ID0gcmVxdWlyZSgnLi9FdmVudFBsdWdpblJlZ2lzdHJ5Jyk7XG52YXIgUmVhY3RCcm93
c2VyRXZlbnRFbWl0dGVyID0gcmVxdWlyZSgnLi9SZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXInKTtc
bnZhciBSZWFjdERPTUNvbXBvbmVudEZsYWdzID0gcmVxdWlyZSgnLi9SZWFjdERPTUNvbXBvbmVu
dEZsYWdzJyk7XG52YXIgUmVhY3RET01Db21wb25lbnRUcmVlID0gcmVxdWlyZSgnLi9SZWFjdERP
TUNvbXBvbmVudFRyZWUnKTtcbnZhciBSZWFjdERPTUlucHV0ID0gcmVxdWlyZSgnLi9SZWFjdERP
TUlucHV0Jyk7XG52YXIgUmVhY3RET01PcHRpb24gPSByZXF1aXJlKCcuL1JlYWN0RE9NT3B0aW9u
Jyk7XG52YXIgUmVhY3RET01TZWxlY3QgPSByZXF1aXJlKCcuL1JlYWN0RE9NU2VsZWN0Jyk7XG52
YXIgUmVhY3RET01UZXh0YXJlYSA9IHJlcXVpcmUoJy4vUmVhY3RET01UZXh0YXJlYScpO1xudmFy
IFJlYWN0SW5zdHJ1bWVudGF0aW9uID0gcmVxdWlyZSgnLi9SZWFjdEluc3RydW1lbnRhdGlvbicp
O1xudmFyIFJlYWN0TXVsdGlDaGlsZCA9IHJlcXVpcmUoJy4vUmVhY3RNdWx0aUNoaWxkJyk7XG52
YXIgUmVhY3RTZXJ2ZXJSZW5kZXJpbmdUcmFuc2FjdGlvbiA9IHJlcXVpcmUoJy4vUmVhY3RTZXJ2
ZXJSZW5kZXJpbmdUcmFuc2FjdGlvbicpO1xuXG52YXIgZW1wdHlGdW5jdGlvbiA9IHJlcXVpcmUo
J2ZianMvbGliL2VtcHR5RnVuY3Rpb24nKTtcbnZhciBlc2NhcGVUZXh0Q29udGVudEZvckJyb3dz
ZXIgPSByZXF1aXJlKCcuL2VzY2FwZVRleHRDb250ZW50Rm9yQnJvd3NlcicpO1xudmFyIGludmFy
aWFudCA9IHJlcXVpcmUoJ2ZianMvbGliL2ludmFyaWFudCcpO1xudmFyIGlzRXZlbnRTdXBwb3J0
ZWQgPSByZXF1aXJlKCcuL2lzRXZlbnRTdXBwb3J0ZWQnKTtcbnZhciBzaGFsbG93RXF1YWwgPSBy
ZXF1aXJlKCdmYmpzL2xpYi9zaGFsbG93RXF1YWwnKTtcbnZhciBpbnB1dFZhbHVlVHJhY2tpbmcg
PSByZXF1aXJlKCcuL2lucHV0VmFsdWVUcmFja2luZycpO1xudmFyIHZhbGlkYXRlRE9NTmVzdGlu
ZyA9IHJlcXVpcmUoJy4vdmFsaWRhdGVET01OZXN0aW5nJyk7XG52YXIgd2FybmluZyA9IHJlcXVp
cmUoJ2ZianMvbGliL3dhcm5pbmcnKTtcblxudmFyIEZsYWdzID0gUmVhY3RET01Db21wb25lbnRG
bGFncztcbnZhciBkZWxldGVMaXN0ZW5lciA9IEV2ZW50UGx1Z2luSHViLmRlbGV0ZUxpc3RlbmVy
O1xudmFyIGdldE5vZGUgPSBSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0Tm9kZUZyb21JbnN0YW5j
ZTtcbnZhciBsaXN0ZW5UbyA9IFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlci5saXN0ZW5UbztcbnZh
ciByZWdpc3RyYXRpb25OYW1lTW9kdWxlcyA9IEV2ZW50UGx1Z2luUmVnaXN0cnkucmVnaXN0cmF0
aW9uTmFtZU1vZHVsZXM7XG5cbi8vIEZvciBxdWlja2x5IG1hdGNoaW5nIGNoaWxkcmVuIHR5cGUs
IHRvIHRlc3QgaWYgY2FuIGJlIHRyZWF0ZWQgYXMgY29udGVudC5cbnZhciBDT05URU5UX1RZUEVT
ID0geyBzdHJpbmc6IHRydWUsIG51bWJlcjogdHJ1ZSB9O1xuXG52YXIgU1RZTEUgPSAnc3R5bGUn
O1xudmFyIEhUTUwgPSAnX19odG1sJztcbnZhciBSRVNFUlZFRF9QUk9QUyA9IHtcbiAgY2hpbGRy
ZW46IG51bGwsXG4gIGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MOiBudWxsLFxuICBzdXBwcmVzc0Nv
bnRlbnRFZGl0YWJsZVdhcm5pbmc6IG51bGxcbn07XG5cbi8vIE5vZGUgdHlwZSBmb3IgZG9jdW1l
bnQgZnJhZ21lbnRzIChOb2RlLkRPQ1VNRU5UX0ZSQUdNRU5UX05PREUpLlxudmFyIERPQ19GUkFH
TUVOVF9UWVBFID0gMTE7XG5cbmZ1bmN0aW9uIGdldERlY2xhcmF0aW9uRXJyb3JBZGRlbmR1bShp
bnRlcm5hbEluc3RhbmNlKSB7XG4gIGlmIChpbnRlcm5hbEluc3RhbmNlKSB7XG4gICAgdmFyIG93
bmVyID0gaW50ZXJuYWxJbnN0YW5jZS5fY3VycmVudEVsZW1lbnQuX293bmVyIHx8IG51bGw7XG4g
ICAgaWYgKG93bmVyKSB7XG4gICAgICB2YXIgbmFtZSA9IG93bmVyLmdldE5hbWUoKTtcbiAgICAg
IGlmIChuYW1lKSB7XG4gICAgICAgIHJldHVybiAnIFRoaXMgRE9NIG5vZGUgd2FzIHJlbmRlcmVk
IGJ5IGAnICsgbmFtZSArICdgLic7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiAnJztc
bn1cblxuZnVuY3Rpb24gZnJpZW5kbHlTdHJpbmdpZnkob2JqKSB7XG4gIGlmICh0eXBlb2Ygb2Jq
ID09PSAnb2JqZWN0Jykge1xuICAgIGlmIChBcnJheS5pc0FycmF5KG9iaikpIHtcbiAgICAgIHJl
dHVybiAnWycgKyBvYmoubWFwKGZyaWVuZGx5U3RyaW5naWZ5KS5qb2luKCcsICcpICsgJ10nO1xu
ICAgIH0gZWxzZSB7XG4gICAgICB2YXIgcGFpcnMgPSBbXTtcbiAgICAgIGZvciAodmFyIGtleSBp
biBvYmopIHtcbiAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2Fs
bChvYmosIGtleSkpIHtcbiAgICAgICAgICB2YXIga2V5RXNjYXBlZCA9IC9eW2EteiRfXVtcXHck
X10qJC9pLnRlc3Qoa2V5KSA/IGtleSA6IEpTT04uc3RyaW5naWZ5KGtleSk7XG4gICAgICAgICAg
cGFpcnMucHVzaChrZXlFc2NhcGVkICsgJzogJyArIGZyaWVuZGx5U3RyaW5naWZ5KG9ialtrZXld
KSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiAneycgKyBwYWlycy5qb2luKCcs
ICcpICsgJ30nO1xuICAgIH1cbiAgfSBlbHNlIGlmICh0eXBlb2Ygb2JqID09PSAnc3RyaW5nJykg
e1xuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShvYmopO1xuICB9IGVsc2UgaWYgKHR5cGVvZiBv
YmogPT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gJ1tmdW5jdGlvbiBvYmplY3RdJztcbiAg
fVxuICAvLyBEaWZmZXJzIGZyb20gSlNPTi5zdHJpbmdpZnkgaW4gdGhhdCB1bmRlZmluZWQgYmVj
YXVzZSB1bmRlZmluZWQgYW5kIHRoYXRcbiAgLy8gaW5mIGFuZCBuYW4gZG9uJ3QgYmVjb21lIG51
bGxcbiAgcmV0dXJuIFN0cmluZyhvYmopO1xufVxuXG52YXIgc3R5bGVNdXRhdGlvbldhcm5pbmcg
PSB7fTtcblxuZnVuY3Rpb24gY2hlY2tBbmRXYXJuRm9yTXV0YXRlZFN0eWxlKHN0eWxlMSwgc3R5
bGUyLCBjb21wb25lbnQpIHtcbiAgaWYgKHN0eWxlMSA9PSBudWxsIHx8IHN0eWxlMiA9PSBudWxs
KSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGlmIChzaGFsbG93RXF1YWwoc3R5bGUxLCBzdHlsZTIp
KSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgdmFyIGNvbXBvbmVudE5hbWUgPSBjb21wb25lbnQu
X3RhZztcbiAgdmFyIG93bmVyID0gY29tcG9uZW50Ll9jdXJyZW50RWxlbWVudC5fb3duZXI7XG4g
IHZhciBvd25lck5hbWU7XG4gIGlmIChvd25lcikge1xuICAgIG93bmVyTmFtZSA9IG93bmVyLmdl
dE5hbWUoKTtcbiAgfVxuXG4gIHZhciBoYXNoID0gb3duZXJOYW1lICsgJ3wnICsgY29tcG9uZW50
TmFtZTtcblxuICBpZiAoc3R5bGVNdXRhdGlvbldhcm5pbmcuaGFzT3duUHJvcGVydHkoaGFzaCkp
IHtcbiAgICByZXR1cm47XG4gIH1cblxuICBzdHlsZU11dGF0aW9uV2FybmluZ1toYXNoXSA9IHRy
dWU7XG5cbiAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmco
ZmFsc2UsICdgJXNgIHdhcyBwYXNzZWQgYSBzdHlsZSBvYmplY3QgdGhhdCBoYXMgcHJldmlvdXNs
eSBiZWVuIG11dGF0ZWQuICcgKyAnTXV0YXRpbmcgYHN0eWxlYCBpcyBkZXByZWNhdGVkLiBDb25z
aWRlciBjbG9uaW5nIGl0IGJlZm9yZWhhbmQuIENoZWNrICcgKyAndGhlIGByZW5kZXJgICVzLiBQ
cmV2aW91cyBzdHlsZTogJXMuIE11dGF0ZWQgc3R5bGU6ICVzLicsIGNvbXBvbmVudE5hbWUsIG93
bmVyID8gJ29mIGAnICsgb3duZXJOYW1lICsgJ2AnIDogJ3VzaW5nIDwnICsgY29tcG9uZW50TmFt
ZSArICc+JywgZnJpZW5kbHlTdHJpbmdpZnkoc3R5bGUxKSwgZnJpZW5kbHlTdHJpbmdpZnkoc3R5
bGUyKSkgOiB2b2lkIDA7XG59XG5cbi8qKlxuICogQHBhcmFtIHtvYmplY3R9IGNvbXBvbmVudFxu
ICogQHBhcmFtIHs/b2JqZWN0fSBwcm9wc1xuICovXG5mdW5jdGlvbiBhc3NlcnRWYWxpZFByb3Bz
KGNvbXBvbmVudCwgcHJvcHMpIHtcbiAgaWYgKCFwcm9wcykge1xuICAgIHJldHVybjtcbiAgfVxu
ICAvLyBOb3RlIHRoZSB1c2Ugb2YgYD09YCB3aGljaCBjaGVja3MgZm9yIG51bGwgb3IgdW5kZWZp
bmVkLlxuICBpZiAodm9pZEVsZW1lbnRUYWdzW2NvbXBvbmVudC5fdGFnXSkge1xuICAgICEocHJv
cHMuY2hpbGRyZW4gPT0gbnVsbCAmJiBwcm9wcy5kYW5nZXJvdXNseVNldElubmVySFRNTCA9PSBu
dWxsKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQo
ZmFsc2UsICclcyBpcyBhIHZvaWQgZWxlbWVudCB0YWcgYW5kIG11c3QgbmVpdGhlciBoYXZlIGBj
aGlsZHJlbmAgbm9yIHVzZSBgZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUxgLiVzJywgY29tcG9uZW50
Ll90YWcsIGNvbXBvbmVudC5fY3VycmVudEVsZW1lbnQuX293bmVyID8gJyBDaGVjayB0aGUgcmVu
ZGVyIG1ldGhvZCBvZiAnICsgY29tcG9uZW50Ll9jdXJyZW50RWxlbWVudC5fb3duZXIuZ2V0TmFt
ZSgpICsgJy4nIDogJycpIDogX3Byb2RJbnZhcmlhbnQoJzEzNycsIGNvbXBvbmVudC5fdGFnLCBj
b21wb25lbnQuX2N1cnJlbnRFbGVtZW50Ll9vd25lciA/ICcgQ2hlY2sgdGhlIHJlbmRlciBtZXRo
b2Qgb2YgJyArIGNvbXBvbmVudC5fY3VycmVudEVsZW1lbnQuX293bmVyLmdldE5hbWUoKSArICcu
JyA6ICcnKSA6IHZvaWQgMDtcbiAgfVxuICBpZiAocHJvcHMuZGFuZ2Vyb3VzbHlTZXRJbm5lckhU
TUwgIT0gbnVsbCkge1xuICAgICEocHJvcHMuY2hpbGRyZW4gPT0gbnVsbCkgPyBwcm9jZXNzLmVu
di5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnQ2FuIG9ubHkg
c2V0IG9uZSBvZiBgY2hpbGRyZW5gIG9yIGBwcm9wcy5kYW5nZXJvdXNseVNldElubmVySFRNTGAu
JykgOiBfcHJvZEludmFyaWFudCgnNjAnKSA6IHZvaWQgMDtcbiAgICAhKHR5cGVvZiBwcm9wcy5k
YW5nZXJvdXNseVNldElubmVySFRNTCA9PT0gJ29iamVjdCcgJiYgSFRNTCBpbiBwcm9wcy5kYW5n
ZXJvdXNseVNldElubmVySFRNTCkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rp
b24nID8gaW52YXJpYW50KGZhbHNlLCAnYHByb3BzLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MYCBt
dXN0IGJlIGluIHRoZSBmb3JtIGB7X19odG1sOiAuLi59YC4gUGxlYXNlIHZpc2l0IGh0dHBzOi8v
ZmIubWUvcmVhY3QtaW52YXJpYW50LWRhbmdlcm91c2x5LXNldC1pbm5lci1odG1sIGZvciBtb3Jl
IGluZm9ybWF0aW9uLicpIDogX3Byb2RJbnZhcmlhbnQoJzYxJykgOiB2b2lkIDA7XG4gIH1cbiAg
aWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICBwcm9jZXNz
LmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhwcm9wcy5pbm5lckhUTUwg
PT0gbnVsbCwgJ0RpcmVjdGx5IHNldHRpbmcgcHJvcGVydHkgYGlubmVySFRNTGAgaXMgbm90IHBl
cm1pdHRlZC4gJyArICdGb3IgbW9yZSBpbmZvcm1hdGlvbiwgbG9va3VwIGRvY3VtZW50YXRpb24g
b24gYGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MYC4nKSA6IHZvaWQgMDtcbiAgICBwcm9jZXNzLmVu
di5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhwcm9wcy5zdXBwcmVzc0NvbnRl
bnRFZGl0YWJsZVdhcm5pbmcgfHwgIXByb3BzLmNvbnRlbnRFZGl0YWJsZSB8fCBwcm9wcy5jaGls
ZHJlbiA9PSBudWxsLCAnQSBjb21wb25lbnQgaXMgYGNvbnRlbnRFZGl0YWJsZWAgYW5kIGNvbnRh
aW5zIGBjaGlsZHJlbmAgbWFuYWdlZCBieSAnICsgJ1JlYWN0LiBJdCBpcyBub3cgeW91ciByZXNw
b25zaWJpbGl0eSB0byBndWFyYW50ZWUgdGhhdCBub25lIG9mICcgKyAndGhvc2Ugbm9kZXMgYXJl
IHVuZXhwZWN0ZWRseSBtb2RpZmllZCBvciBkdXBsaWNhdGVkLiBUaGlzIGlzICcgKyAncHJvYmFi
bHkgbm90IGludGVudGlvbmFsLicpIDogdm9pZCAwO1xuICAgIHByb2Nlc3MuZW52Lk5PREVfRU5W
ICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKHByb3BzLm9uRm9jdXNJbiA9PSBudWxsICYmIHBy
b3BzLm9uRm9jdXNPdXQgPT0gbnVsbCwgJ1JlYWN0IHVzZXMgb25Gb2N1cyBhbmQgb25CbHVyIGlu
c3RlYWQgb2Ygb25Gb2N1c0luIGFuZCBvbkZvY3VzT3V0LiAnICsgJ0FsbCBSZWFjdCBldmVudHMg
YXJlIG5vcm1hbGl6ZWQgdG8gYnViYmxlLCBzbyBvbkZvY3VzSW4gYW5kIG9uRm9jdXNPdXQgJyAr
ICdhcmUgbm90IG5lZWRlZC9zdXBwb3J0ZWQgYnkgUmVhY3QuJykgOiB2b2lkIDA7XG4gIH1cbiAg
IShwcm9wcy5zdHlsZSA9PSBudWxsIHx8IHR5cGVvZiBwcm9wcy5zdHlsZSA9PT0gJ29iamVjdCcp
ID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxz
ZSwgJ1RoZSBgc3R5bGVgIHByb3AgZXhwZWN0cyBhIG1hcHBpbmcgZnJvbSBzdHlsZSBwcm9wZXJ0
aWVzIHRvIHZhbHVlcywgbm90IGEgc3RyaW5nLiBGb3IgZXhhbXBsZSwgc3R5bGU9e3ttYXJnaW5S
aWdodDogc3BhY2luZyArIFxcJ2VtXFwnfX0gd2hlbiB1c2luZyBKU1guJXMnLCBnZXREZWNsYXJh
dGlvbkVycm9yQWRkZW5kdW0oY29tcG9uZW50KSkgOiBfcHJvZEludmFyaWFudCgnNjInLCBnZXRE
ZWNsYXJhdGlvbkVycm9yQWRkZW5kdW0oY29tcG9uZW50KSkgOiB2b2lkIDA7XG59XG5cbmZ1bmN0
aW9uIGVucXVldWVQdXRMaXN0ZW5lcihpbnN0LCByZWdpc3RyYXRpb25OYW1lLCBsaXN0ZW5lciwg
dHJhbnNhY3Rpb24pIHtcbiAgaWYgKHRyYW5zYWN0aW9uIGluc3RhbmNlb2YgUmVhY3RTZXJ2ZXJS
ZW5kZXJpbmdUcmFuc2FjdGlvbikge1xuICAgIHJldHVybjtcbiAgfVxuICBpZiAocHJvY2Vzcy5l
bnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIC8vIElFOCBoYXMgbm8gQVBJIGZv
ciBldmVudCBjYXB0dXJpbmcgYW5kIHRoZSBgb25TY3JvbGxgIGV2ZW50IGRvZXNuJ3RcbiAgICAv
LyBidWJibGUuXG4gICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdh
cm5pbmcocmVnaXN0cmF0aW9uTmFtZSAhPT0gJ29uU2Nyb2xsJyB8fCBpc0V2ZW50U3VwcG9ydGVk
KCdzY3JvbGwnLCB0cnVlKSwgXCJUaGlzIGJyb3dzZXIgZG9lc24ndCBzdXBwb3J0IHRoZSBgb25T
Y3JvbGxgIGV2ZW50XCIpIDogdm9pZCAwO1xuICB9XG4gIHZhciBjb250YWluZXJJbmZvID0gaW5z
dC5faG9zdENvbnRhaW5lckluZm87XG4gIHZhciBpc0RvY3VtZW50RnJhZ21lbnQgPSBjb250YWlu
ZXJJbmZvLl9ub2RlICYmIGNvbnRhaW5lckluZm8uX25vZGUubm9kZVR5cGUgPT09IERPQ19GUkFH
TUVOVF9UWVBFO1xuICB2YXIgZG9jID0gaXNEb2N1bWVudEZyYWdtZW50ID8gY29udGFpbmVySW5m
by5fbm9kZSA6IGNvbnRhaW5lckluZm8uX293bmVyRG9jdW1lbnQ7XG4gIGxpc3RlblRvKHJlZ2lz
dHJhdGlvbk5hbWUsIGRvYyk7XG4gIHRyYW5zYWN0aW9uLmdldFJlYWN0TW91bnRSZWFkeSgpLmVu
cXVldWUocHV0TGlzdGVuZXIsIHtcbiAgICBpbnN0OiBpbnN0LFxuICAgIHJlZ2lzdHJhdGlvbk5h
bWU6IHJlZ2lzdHJhdGlvbk5hbWUsXG4gICAgbGlzdGVuZXI6IGxpc3RlbmVyXG4gIH0pO1xufVxu
XG5mdW5jdGlvbiBwdXRMaXN0ZW5lcigpIHtcbiAgdmFyIGxpc3RlbmVyVG9QdXQgPSB0aGlzO1xu
ICBFdmVudFBsdWdpbkh1Yi5wdXRMaXN0ZW5lcihsaXN0ZW5lclRvUHV0Lmluc3QsIGxpc3RlbmVy
VG9QdXQucmVnaXN0cmF0aW9uTmFtZSwgbGlzdGVuZXJUb1B1dC5saXN0ZW5lcik7XG59XG5cbmZ1
bmN0aW9uIGlucHV0UG9zdE1vdW50KCkge1xuICB2YXIgaW5zdCA9IHRoaXM7XG4gIFJlYWN0RE9N
SW5wdXQucG9zdE1vdW50V3JhcHBlcihpbnN0KTtcbn1cblxuZnVuY3Rpb24gdGV4dGFyZWFQb3N0
TW91bnQoKSB7XG4gIHZhciBpbnN0ID0gdGhpcztcbiAgUmVhY3RET01UZXh0YXJlYS5wb3N0TW91
bnRXcmFwcGVyKGluc3QpO1xufVxuXG5mdW5jdGlvbiBvcHRpb25Qb3N0TW91bnQoKSB7XG4gIHZh
ciBpbnN0ID0gdGhpcztcbiAgUmVhY3RET01PcHRpb24ucG9zdE1vdW50V3JhcHBlcihpbnN0KTtc
bn1cblxudmFyIHNldEFuZFZhbGlkYXRlQ29udGVudENoaWxkRGV2ID0gZW1wdHlGdW5jdGlvbjtc
bmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIHNldEFuZFZh
bGlkYXRlQ29udGVudENoaWxkRGV2ID0gZnVuY3Rpb24gKGNvbnRlbnQpIHtcbiAgICB2YXIgaGFz
RXhpc3RpbmdDb250ZW50ID0gdGhpcy5fY29udGVudERlYnVnSUQgIT0gbnVsbDtcbiAgICB2YXIg
ZGVidWdJRCA9IHRoaXMuX2RlYnVnSUQ7XG4gICAgLy8gVGhpcyBJRCByZXByZXNlbnRzIHRoZSBp
bmxpbmVkIGNoaWxkIHRoYXQgaGFzIG5vIGJhY2tpbmcgaW5zdGFuY2U6XG4gICAgdmFyIGNvbnRl
bnREZWJ1Z0lEID0gLWRlYnVnSUQ7XG5cbiAgICBpZiAoY29udGVudCA9PSBudWxsKSB7XG4gICAg
ICBpZiAoaGFzRXhpc3RpbmdDb250ZW50KSB7XG4gICAgICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9u
LmRlYnVnVG9vbC5vblVubW91bnRDb21wb25lbnQodGhpcy5fY29udGVudERlYnVnSUQpO1xuICAg
ICAgfVxuICAgICAgdGhpcy5fY29udGVudERlYnVnSUQgPSBudWxsO1xuICAgICAgcmV0dXJuO1xu
ICAgIH1cblxuICAgIHZhbGlkYXRlRE9NTmVzdGluZyhudWxsLCBTdHJpbmcoY29udGVudCksIHRo
aXMsIHRoaXMuX2FuY2VzdG9ySW5mbyk7XG4gICAgdGhpcy5fY29udGVudERlYnVnSUQgPSBjb250
ZW50RGVidWdJRDtcbiAgICBpZiAoaGFzRXhpc3RpbmdDb250ZW50KSB7XG4gICAgICBSZWFjdElu
c3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25CZWZvcmVVcGRhdGVDb21wb25lbnQoY29udGVudERl
YnVnSUQsIGNvbnRlbnQpO1xuICAgICAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9u
VXBkYXRlQ29tcG9uZW50KGNvbnRlbnREZWJ1Z0lEKTtcbiAgICB9IGVsc2Uge1xuICAgICAgUmVh
Y3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9uQmVmb3JlTW91bnRDb21wb25lbnQoY29udGVu
dERlYnVnSUQsIGNvbnRlbnQsIGRlYnVnSUQpO1xuICAgICAgUmVhY3RJbnN0cnVtZW50YXRpb24u
ZGVidWdUb29sLm9uTW91bnRDb21wb25lbnQoY29udGVudERlYnVnSUQpO1xuICAgICAgUmVhY3RJ
bnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9uU2V0Q2hpbGRyZW4oZGVidWdJRCwgW2NvbnRlbnRE
ZWJ1Z0lEXSk7XG4gICAgfVxuICB9O1xufVxuXG4vLyBUaGVyZSBhcmUgc28gbWFueSBtZWRpYSBl
dmVudHMsIGl0IG1ha2VzIHNlbnNlIHRvIGp1c3Rcbi8vIG1haW50YWluIGEgbGlzdCByYXRoZXIg
dGhhbiBjcmVhdGUgYSBgdHJhcEJ1YmJsZWRFdmVudGAgZm9yIGVhY2hcbnZhciBtZWRpYUV2ZW50
cyA9IHtcbiAgdG9wQWJvcnQ6ICdhYm9ydCcsXG4gIHRvcENhblBsYXk6ICdjYW5wbGF5JyxcbiAg
dG9wQ2FuUGxheVRocm91Z2g6ICdjYW5wbGF5dGhyb3VnaCcsXG4gIHRvcER1cmF0aW9uQ2hhbmdl
OiAnZHVyYXRpb25jaGFuZ2UnLFxuICB0b3BFbXB0aWVkOiAnZW1wdGllZCcsXG4gIHRvcEVuY3J5
cHRlZDogJ2VuY3J5cHRlZCcsXG4gIHRvcEVuZGVkOiAnZW5kZWQnLFxuICB0b3BFcnJvcjogJ2Vy
cm9yJyxcbiAgdG9wTG9hZGVkRGF0YTogJ2xvYWRlZGRhdGEnLFxuICB0b3BMb2FkZWRNZXRhZGF0
YTogJ2xvYWRlZG1ldGFkYXRhJyxcbiAgdG9wTG9hZFN0YXJ0OiAnbG9hZHN0YXJ0JyxcbiAgdG9w
UGF1c2U6ICdwYXVzZScsXG4gIHRvcFBsYXk6ICdwbGF5JyxcbiAgdG9wUGxheWluZzogJ3BsYXlp
bmcnLFxuICB0b3BQcm9ncmVzczogJ3Byb2dyZXNzJyxcbiAgdG9wUmF0ZUNoYW5nZTogJ3JhdGVj
aGFuZ2UnLFxuICB0b3BTZWVrZWQ6ICdzZWVrZWQnLFxuICB0b3BTZWVraW5nOiAnc2Vla2luZycs
XG4gIHRvcFN0YWxsZWQ6ICdzdGFsbGVkJyxcbiAgdG9wU3VzcGVuZDogJ3N1c3BlbmQnLFxuICB0
b3BUaW1lVXBkYXRlOiAndGltZXVwZGF0ZScsXG4gIHRvcFZvbHVtZUNoYW5nZTogJ3ZvbHVtZWNo
YW5nZScsXG4gIHRvcFdhaXRpbmc6ICd3YWl0aW5nJ1xufTtcblxuZnVuY3Rpb24gdHJhY2tJbnB1
dFZhbHVlKCkge1xuICBpbnB1dFZhbHVlVHJhY2tpbmcudHJhY2sodGhpcyk7XG59XG5cbmZ1bmN0
aW9uIHRyYXBCdWJibGVkRXZlbnRzTG9jYWwoKSB7XG4gIHZhciBpbnN0ID0gdGhpcztcbiAgLy8g
SWYgYSBjb21wb25lbnQgcmVuZGVycyB0byBudWxsIG9yIGlmIGFub3RoZXIgY29tcG9uZW50IGZh
dGFscyBhbmQgY2F1c2VzXG4gIC8vIHRoZSBzdGF0ZSBvZiB0aGUgdHJlZSB0byBiZSBjb3JydXB0
ZWQsIGBub2RlYCBoZXJlIGNhbiBiZSBudWxsLlxuICAhaW5zdC5fcm9vdE5vZGVJRCA/IHByb2Nl
c3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdNdXN0
IGJlIG1vdW50ZWQgdG8gdHJhcCBldmVudHMnKSA6IF9wcm9kSW52YXJpYW50KCc2MycpIDogdm9p
ZCAwO1xuICB2YXIgbm9kZSA9IGdldE5vZGUoaW5zdCk7XG4gICFub2RlID8gcHJvY2Vzcy5lbnYu
Tk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ3RyYXBCdWJibGVk
RXZlbnQoLi4uKTogUmVxdWlyZXMgbm9kZSB0byBiZSByZW5kZXJlZC4nKSA6IF9wcm9kSW52YXJp
YW50KCc2NCcpIDogdm9pZCAwO1xuXG4gIHN3aXRjaCAoaW5zdC5fdGFnKSB7XG4gICAgY2FzZSAn
aWZyYW1lJzpcbiAgICBjYXNlICdvYmplY3QnOlxuICAgICAgaW5zdC5fd3JhcHBlclN0YXRlLmxp
c3RlbmVycyA9IFtSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIudHJhcEJ1YmJsZWRFdmVudCgndG9w
TG9hZCcsICdsb2FkJywgbm9kZSldO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAndmlkZW8nOlxu
ICAgIGNhc2UgJ2F1ZGlvJzpcbiAgICAgIGluc3QuX3dyYXBwZXJTdGF0ZS5saXN0ZW5lcnMgPSBb
XTtcbiAgICAgIC8vIENyZWF0ZSBsaXN0ZW5lciBmb3IgZWFjaCBtZWRpYSBldmVudFxuICAgICAg
Zm9yICh2YXIgZXZlbnQgaW4gbWVkaWFFdmVudHMpIHtcbiAgICAgICAgaWYgKG1lZGlhRXZlbnRz
Lmhhc093blByb3BlcnR5KGV2ZW50KSkge1xuICAgICAgICAgIGluc3QuX3dyYXBwZXJTdGF0ZS5s
aXN0ZW5lcnMucHVzaChSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIudHJhcEJ1YmJsZWRFdmVudChl
dmVudCwgbWVkaWFFdmVudHNbZXZlbnRdLCBub2RlKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAg
ICAgIGJyZWFrO1xuICAgIGNhc2UgJ3NvdXJjZSc6XG4gICAgICBpbnN0Ll93cmFwcGVyU3RhdGUu
bGlzdGVuZXJzID0gW1JlYWN0QnJvd3NlckV2ZW50RW1pdHRlci50cmFwQnViYmxlZEV2ZW50KCd0
b3BFcnJvcicsICdlcnJvcicsIG5vZGUpXTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2ltZyc6
XG4gICAgICBpbnN0Ll93cmFwcGVyU3RhdGUubGlzdGVuZXJzID0gW1JlYWN0QnJvd3NlckV2ZW50
RW1pdHRlci50cmFwQnViYmxlZEV2ZW50KCd0b3BFcnJvcicsICdlcnJvcicsIG5vZGUpLCBSZWFj
dEJyb3dzZXJFdmVudEVtaXR0ZXIudHJhcEJ1YmJsZWRFdmVudCgndG9wTG9hZCcsICdsb2FkJywg
bm9kZSldO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnZm9ybSc6XG4gICAgICBpbnN0Ll93cmFw
cGVyU3RhdGUubGlzdGVuZXJzID0gW1JlYWN0QnJvd3NlckV2ZW50RW1pdHRlci50cmFwQnViYmxl
ZEV2ZW50KCd0b3BSZXNldCcsICdyZXNldCcsIG5vZGUpLCBSZWFjdEJyb3dzZXJFdmVudEVtaXR0
ZXIudHJhcEJ1YmJsZWRFdmVudCgndG9wU3VibWl0JywgJ3N1Ym1pdCcsIG5vZGUpXTtcbiAgICAg
IGJyZWFrO1xuICAgIGNhc2UgJ2lucHV0JzpcbiAgICBjYXNlICdzZWxlY3QnOlxuICAgIGNhc2Ug
J3RleHRhcmVhJzpcbiAgICAgIGluc3QuX3dyYXBwZXJTdGF0ZS5saXN0ZW5lcnMgPSBbUmVhY3RC
cm93c2VyRXZlbnRFbWl0dGVyLnRyYXBCdWJibGVkRXZlbnQoJ3RvcEludmFsaWQnLCAnaW52YWxp
ZCcsIG5vZGUpXTtcbiAgICAgIGJyZWFrO1xuICB9XG59XG5cbmZ1bmN0aW9uIHBvc3RVcGRhdGVT
ZWxlY3RXcmFwcGVyKCkge1xuICBSZWFjdERPTVNlbGVjdC5wb3N0VXBkYXRlV3JhcHBlcih0aGlz
KTtcbn1cblxuLy8gRm9yIEhUTUwsIGNlcnRhaW4gdGFncyBzaG91bGQgb21pdCB0aGVpciBjbG9z
ZSB0YWcuIFdlIGtlZXAgYSB3aGl0ZWxpc3QgZm9yXG4vLyB0aG9zZSBzcGVjaWFsLWNhc2UgdGFn
cy5cblxudmFyIG9taXR0ZWRDbG9zZVRhZ3MgPSB7XG4gIGFyZWE6IHRydWUsXG4gIGJhc2U6IHRy
dWUsXG4gIGJyOiB0cnVlLFxuICBjb2w6IHRydWUsXG4gIGVtYmVkOiB0cnVlLFxuICBocjogdHJ1
ZSxcbiAgaW1nOiB0cnVlLFxuICBpbnB1dDogdHJ1ZSxcbiAga2V5Z2VuOiB0cnVlLFxuICBsaW5r
OiB0cnVlLFxuICBtZXRhOiB0cnVlLFxuICBwYXJhbTogdHJ1ZSxcbiAgc291cmNlOiB0cnVlLFxu
ICB0cmFjazogdHJ1ZSxcbiAgd2JyOiB0cnVlXG4gIC8vIE5PVEU6IG1lbnVpdGVtJ3MgY2xvc2Ug
dGFnIHNob3VsZCBiZSBvbWl0dGVkLCBidXQgdGhhdCBjYXVzZXMgcHJvYmxlbXMuXG59O1xuXG52
YXIgbmV3bGluZUVhdGluZ1RhZ3MgPSB7XG4gIGxpc3Rpbmc6IHRydWUsXG4gIHByZTogdHJ1ZSxc
biAgdGV4dGFyZWE6IHRydWVcbn07XG5cbi8vIEZvciBIVE1MLCBjZXJ0YWluIHRhZ3MgY2Fubm90
IGhhdmUgY2hpbGRyZW4uIFRoaXMgaGFzIHRoZSBzYW1lIHB1cnBvc2UgYXNcbi8vIGBvbWl0dGVk
Q2xvc2VUYWdzYCBleGNlcHQgdGhhdCBgbWVudWl0ZW1gIHNob3VsZCBzdGlsbCBoYXZlIGl0cyBj
bG9zaW5nIHRhZy5cblxudmFyIHZvaWRFbGVtZW50VGFncyA9IF9hc3NpZ24oe1xuICBtZW51aXRl
bTogdHJ1ZVxufSwgb21pdHRlZENsb3NlVGFncyk7XG5cbi8vIFdlIGFjY2VwdCBhbnkgdGFnIHRv
IGJlIHJlbmRlcmVkIGJ1dCBzaW5jZSB0aGlzIGdldHMgaW5qZWN0ZWQgaW50byBhcmJpdHJhcnlc
bi8vIEhUTUwsIHdlIHdhbnQgdG8gbWFrZSBzdXJlIHRoYXQgaXQncyBhIHNhZmUgdGFnLlxuLy8g
aHR0cDovL3d3dy53My5vcmcvVFIvUkVDLXhtbC8jTlQtTmFtZVxuXG52YXIgVkFMSURfVEFHX1JF
R0VYID0gL15bYS16QS1aXVthLXpBLVo6X1xcLlxcLVxcZF0qJC87IC8vIFNpbXBsaWZpZWQgc3Vi
c2V0XG52YXIgdmFsaWRhdGVkVGFnQ2FjaGUgPSB7fTtcbnZhciBoYXNPd25Qcm9wZXJ0eSA9IHt9
Lmhhc093blByb3BlcnR5O1xuXG5mdW5jdGlvbiB2YWxpZGF0ZURhbmdlcm91c1RhZyh0YWcpIHtc
biAgaWYgKCFoYXNPd25Qcm9wZXJ0eS5jYWxsKHZhbGlkYXRlZFRhZ0NhY2hlLCB0YWcpKSB7XG4g
ICAgIVZBTElEX1RBR19SRUdFWC50ZXN0KHRhZykgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0g
J3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnSW52YWxpZCB0YWc6ICVzJywgdGFnKSA6
IF9wcm9kSW52YXJpYW50KCc2NScsIHRhZykgOiB2b2lkIDA7XG4gICAgdmFsaWRhdGVkVGFnQ2Fj
aGVbdGFnXSA9IHRydWU7XG4gIH1cbn1cblxuZnVuY3Rpb24gaXNDdXN0b21Db21wb25lbnQodGFn
TmFtZSwgcHJvcHMpIHtcbiAgcmV0dXJuIHRhZ05hbWUuaW5kZXhPZignLScpID49IDAgfHwgcHJv
cHMuaXMgIT0gbnVsbDtcbn1cblxudmFyIGdsb2JhbElkQ291bnRlciA9IDE7XG5cbi8qKlxuICog
Q3JlYXRlcyBhIG5ldyBSZWFjdCBjbGFzcyB0aGF0IGlzIGlkZW1wb3RlbnQgYW5kIGNhcGFibGUg
b2YgY29udGFpbmluZyBvdGhlclxuICogUmVhY3QgY29tcG9uZW50cy4gSXQgYWNjZXB0cyBldmVu
dCBsaXN0ZW5lcnMgYW5kIERPTSBwcm9wZXJ0aWVzIHRoYXQgYXJlXG4gKiB2YWxpZCBhY2NvcmRp
bmcgdG8gYERPTVByb3BlcnR5YC5cbiAqXG4gKiAgLSBFdmVudCBsaXN0ZW5lcnM6IGBvbkNsaWNr
YCwgYG9uTW91c2VEb3duYCwgZXRjLlxuICogIC0gRE9NIHByb3BlcnRpZXM6IGBjbGFzc05hbWVg
LCBgbmFtZWAsIGB0aXRsZWAsIGV0Yy5cbiAqXG4gKiBUaGUgYHN0eWxlYCBwcm9wZXJ0eSBmdW5j
dGlvbnMgZGlmZmVyZW50bHkgZnJvbSB0aGUgRE9NIEFQSS4gSXQgYWNjZXB0cyBhblxuICogb2Jq
ZWN0IG1hcHBpbmcgb2Ygc3R5bGUgcHJvcGVydGllcyB0byB2YWx1ZXMuXG4gKlxuICogQGNvbnN0
cnVjdG9yIFJlYWN0RE9NQ29tcG9uZW50XG4gKiBAZXh0ZW5kcyBSZWFjdE11bHRpQ2hpbGRcbiAq
L1xuZnVuY3Rpb24gUmVhY3RET01Db21wb25lbnQoZWxlbWVudCkge1xuICB2YXIgdGFnID0gZWxl
bWVudC50eXBlO1xuICB2YWxpZGF0ZURhbmdlcm91c1RhZyh0YWcpO1xuICB0aGlzLl9jdXJyZW50
RWxlbWVudCA9IGVsZW1lbnQ7XG4gIHRoaXMuX3RhZyA9IHRhZy50b0xvd2VyQ2FzZSgpO1xuICB0
aGlzLl9uYW1lc3BhY2VVUkkgPSBudWxsO1xuICB0aGlzLl9yZW5kZXJlZENoaWxkcmVuID0gbnVs
bDtcbiAgdGhpcy5fcHJldmlvdXNTdHlsZSA9IG51bGw7XG4gIHRoaXMuX3ByZXZpb3VzU3R5bGVD
b3B5ID0gbnVsbDtcbiAgdGhpcy5faG9zdE5vZGUgPSBudWxsO1xuICB0aGlzLl9ob3N0UGFyZW50
ID0gbnVsbDtcbiAgdGhpcy5fcm9vdE5vZGVJRCA9IDA7XG4gIHRoaXMuX2RvbUlEID0gMDtcbiAg
dGhpcy5faG9zdENvbnRhaW5lckluZm8gPSBudWxsO1xuICB0aGlzLl93cmFwcGVyU3RhdGUgPSBu
dWxsO1xuICB0aGlzLl90b3BMZXZlbFdyYXBwZXIgPSBudWxsO1xuICB0aGlzLl9mbGFncyA9IDA7
XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgdGhp
cy5fYW5jZXN0b3JJbmZvID0gbnVsbDtcbiAgICBzZXRBbmRWYWxpZGF0ZUNvbnRlbnRDaGlsZERl
di5jYWxsKHRoaXMsIG51bGwpO1xuICB9XG59XG5cblJlYWN0RE9NQ29tcG9uZW50LmRpc3BsYXlO
YW1lID0gJ1JlYWN0RE9NQ29tcG9uZW50JztcblxuUmVhY3RET01Db21wb25lbnQuTWl4aW4gPSB7
XG4gIC8qKlxuICAgKiBHZW5lcmF0ZXMgcm9vdCB0YWcgbWFya3VwIHRoZW4gcmVjdXJzZXMuIFRo
aXMgbWV0aG9kIGhhcyBzaWRlIGVmZmVjdHMgYW5kXG4gICAqIGlzIG5vdCBpZGVtcG90ZW50Llxu
ICAgKlxuICAgKiBAaW50ZXJuYWxcbiAgICogQHBhcmFtIHtSZWFjdFJlY29uY2lsZVRyYW5zYWN0
aW9ufFJlYWN0U2VydmVyUmVuZGVyaW5nVHJhbnNhY3Rpb259IHRyYW5zYWN0aW9uXG4gICAqIEBw
YXJhbSB7P1JlYWN0RE9NQ29tcG9uZW50fSB0aGUgcGFyZW50IGNvbXBvbmVudCBpbnN0YW5jZVxu
ICAgKiBAcGFyYW0gez9vYmplY3R9IGluZm8gYWJvdXQgdGhlIGhvc3QgY29udGFpbmVyXG4gICAq
IEBwYXJhbSB7b2JqZWN0fSBjb250ZXh0XG4gICAqIEByZXR1cm4ge3N0cmluZ30gVGhlIGNvbXB1
dGVkIG1hcmt1cC5cbiAgICovXG4gIG1vdW50Q29tcG9uZW50OiBmdW5jdGlvbiAodHJhbnNhY3Rp
b24sIGhvc3RQYXJlbnQsIGhvc3RDb250YWluZXJJbmZvLCBjb250ZXh0KSB7XG4gICAgdGhpcy5f
cm9vdE5vZGVJRCA9IGdsb2JhbElkQ291bnRlcisrO1xuICAgIHRoaXMuX2RvbUlEID0gaG9zdENv
bnRhaW5lckluZm8uX2lkQ291bnRlcisrO1xuICAgIHRoaXMuX2hvc3RQYXJlbnQgPSBob3N0UGFy
ZW50O1xuICAgIHRoaXMuX2hvc3RDb250YWluZXJJbmZvID0gaG9zdENvbnRhaW5lckluZm87XG5c
biAgICB2YXIgcHJvcHMgPSB0aGlzLl9jdXJyZW50RWxlbWVudC5wcm9wcztcblxuICAgIHN3aXRj
aCAodGhpcy5fdGFnKSB7XG4gICAgICBjYXNlICdhdWRpbyc6XG4gICAgICBjYXNlICdmb3JtJzpc
biAgICAgIGNhc2UgJ2lmcmFtZSc6XG4gICAgICBjYXNlICdpbWcnOlxuICAgICAgY2FzZSAnbGlu
ayc6XG4gICAgICBjYXNlICdvYmplY3QnOlxuICAgICAgY2FzZSAnc291cmNlJzpcbiAgICAgIGNh
c2UgJ3ZpZGVvJzpcbiAgICAgICAgdGhpcy5fd3JhcHBlclN0YXRlID0ge1xuICAgICAgICAgIGxp
c3RlbmVyczogbnVsbFxuICAgICAgICB9O1xuICAgICAgICB0cmFuc2FjdGlvbi5nZXRSZWFjdE1v
dW50UmVhZHkoKS5lbnF1ZXVlKHRyYXBCdWJibGVkRXZlbnRzTG9jYWwsIHRoaXMpO1xuICAgICAg
ICBicmVhaztcbiAgICAgIGNhc2UgJ2lucHV0JzpcbiAgICAgICAgUmVhY3RET01JbnB1dC5tb3Vu
dFdyYXBwZXIodGhpcywgcHJvcHMsIGhvc3RQYXJlbnQpO1xuICAgICAgICBwcm9wcyA9IFJlYWN0
RE9NSW5wdXQuZ2V0SG9zdFByb3BzKHRoaXMsIHByb3BzKTtcbiAgICAgICAgdHJhbnNhY3Rpb24u
Z2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1ZSh0cmFja0lucHV0VmFsdWUsIHRoaXMpO1xuICAg
ICAgICB0cmFuc2FjdGlvbi5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKHRyYXBCdWJibGVk
RXZlbnRzTG9jYWwsIHRoaXMpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ29wdGlvbic6
XG4gICAgICAgIFJlYWN0RE9NT3B0aW9uLm1vdW50V3JhcHBlcih0aGlzLCBwcm9wcywgaG9zdFBh
cmVudCk7XG4gICAgICAgIHByb3BzID0gUmVhY3RET01PcHRpb24uZ2V0SG9zdFByb3BzKHRoaXMs
IHByb3BzKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdzZWxlY3QnOlxuICAgICAgICBS
ZWFjdERPTVNlbGVjdC5tb3VudFdyYXBwZXIodGhpcywgcHJvcHMsIGhvc3RQYXJlbnQpO1xuICAg
ICAgICBwcm9wcyA9IFJlYWN0RE9NU2VsZWN0LmdldEhvc3RQcm9wcyh0aGlzLCBwcm9wcyk7XG4g
ICAgICAgIHRyYW5zYWN0aW9uLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUodHJhcEJ1YmJs
ZWRFdmVudHNMb2NhbCwgdGhpcyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAndGV4dGFy
ZWEnOlxuICAgICAgICBSZWFjdERPTVRleHRhcmVhLm1vdW50V3JhcHBlcih0aGlzLCBwcm9wcywg
aG9zdFBhcmVudCk7XG4gICAgICAgIHByb3BzID0gUmVhY3RET01UZXh0YXJlYS5nZXRIb3N0UHJv
cHModGhpcywgcHJvcHMpO1xuICAgICAgICB0cmFuc2FjdGlvbi5nZXRSZWFjdE1vdW50UmVhZHko
KS5lbnF1ZXVlKHRyYWNrSW5wdXRWYWx1ZSwgdGhpcyk7XG4gICAgICAgIHRyYW5zYWN0aW9uLmdl
dFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUodHJhcEJ1YmJsZWRFdmVudHNMb2NhbCwgdGhpcyk7
XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGFzc2VydFZhbGlkUHJvcHModGhpcywgcHJv
cHMpO1xuXG4gICAgLy8gV2UgY3JlYXRlIHRhZ3MgaW4gdGhlIG5hbWVzcGFjZSBvZiB0aGVpciBw
YXJlbnQgY29udGFpbmVyLCBleGNlcHQgSFRNTFxuICAgIC8vIHRhZ3MgZ2V0IG5vIG5hbWVzcGFj
ZS5cbiAgICB2YXIgbmFtZXNwYWNlVVJJO1xuICAgIHZhciBwYXJlbnRUYWc7XG4gICAgaWYgKGhv
c3RQYXJlbnQgIT0gbnVsbCkge1xuICAgICAgbmFtZXNwYWNlVVJJID0gaG9zdFBhcmVudC5fbmFt
ZXNwYWNlVVJJO1xuICAgICAgcGFyZW50VGFnID0gaG9zdFBhcmVudC5fdGFnO1xuICAgIH0gZWxz
ZSBpZiAoaG9zdENvbnRhaW5lckluZm8uX3RhZykge1xuICAgICAgbmFtZXNwYWNlVVJJID0gaG9z
dENvbnRhaW5lckluZm8uX25hbWVzcGFjZVVSSTtcbiAgICAgIHBhcmVudFRhZyA9IGhvc3RDb250
YWluZXJJbmZvLl90YWc7XG4gICAgfVxuICAgIGlmIChuYW1lc3BhY2VVUkkgPT0gbnVsbCB8fCBu
YW1lc3BhY2VVUkkgPT09IERPTU5hbWVzcGFjZXMuc3ZnICYmIHBhcmVudFRhZyA9PT0gJ2ZvcmVp
Z25vYmplY3QnKSB7XG4gICAgICBuYW1lc3BhY2VVUkkgPSBET01OYW1lc3BhY2VzLmh0bWw7XG4g
ICAgfVxuICAgIGlmIChuYW1lc3BhY2VVUkkgPT09IERPTU5hbWVzcGFjZXMuaHRtbCkge1xuICAg
ICAgaWYgKHRoaXMuX3RhZyA9PT0gJ3N2ZycpIHtcbiAgICAgICAgbmFtZXNwYWNlVVJJID0gRE9N
TmFtZXNwYWNlcy5zdmc7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMuX3RhZyA9PT0gJ21hdGgnKSB7
XG4gICAgICAgIG5hbWVzcGFjZVVSSSA9IERPTU5hbWVzcGFjZXMubWF0aG1sO1xuICAgICAgfVxu
ICAgIH1cbiAgICB0aGlzLl9uYW1lc3BhY2VVUkkgPSBuYW1lc3BhY2VVUkk7XG5cbiAgICBpZiAo
cHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgdmFyIHBhcmVu
dEluZm87XG4gICAgICBpZiAoaG9zdFBhcmVudCAhPSBudWxsKSB7XG4gICAgICAgIHBhcmVudElu
Zm8gPSBob3N0UGFyZW50Ll9hbmNlc3RvckluZm87XG4gICAgICB9IGVsc2UgaWYgKGhvc3RDb250
YWluZXJJbmZvLl90YWcpIHtcbiAgICAgICAgcGFyZW50SW5mbyA9IGhvc3RDb250YWluZXJJbmZv
Ll9hbmNlc3RvckluZm87XG4gICAgICB9XG4gICAgICBpZiAocGFyZW50SW5mbykge1xuICAgICAg
ICAvLyBwYXJlbnRJbmZvIHNob3VsZCBhbHdheXMgYmUgcHJlc2VudCBleGNlcHQgZm9yIHRoZSB0
b3AtbGV2ZWxcbiAgICAgICAgLy8gY29tcG9uZW50IHdoZW4gc2VydmVyIHJlbmRlcmluZ1xuICAg
ICAgICB2YWxpZGF0ZURPTU5lc3RpbmcodGhpcy5fdGFnLCBudWxsLCB0aGlzLCBwYXJlbnRJbmZv
KTtcbiAgICAgIH1cbiAgICAgIHRoaXMuX2FuY2VzdG9ySW5mbyA9IHZhbGlkYXRlRE9NTmVzdGlu
Zy51cGRhdGVkQW5jZXN0b3JJbmZvKHBhcmVudEluZm8sIHRoaXMuX3RhZywgdGhpcyk7XG4gICAg
fVxuXG4gICAgdmFyIG1vdW50SW1hZ2U7XG4gICAgaWYgKHRyYW5zYWN0aW9uLnVzZUNyZWF0ZUVs
ZW1lbnQpIHtcbiAgICAgIHZhciBvd25lckRvY3VtZW50ID0gaG9zdENvbnRhaW5lckluZm8uX293
bmVyRG9jdW1lbnQ7XG4gICAgICB2YXIgZWw7XG4gICAgICBpZiAobmFtZXNwYWNlVVJJID09PSBE
T01OYW1lc3BhY2VzLmh0bWwpIHtcbiAgICAgICAgaWYgKHRoaXMuX3RhZyA9PT0gJ3NjcmlwdCcp
IHtcbiAgICAgICAgICAvLyBDcmVhdGUgdGhlIHNjcmlwdCB2aWEgLmlubmVySFRNTCBzbyBpdHMg
XCJwYXJzZXItaW5zZXJ0ZWRcIiBmbGFnIGlzXG4gICAgICAgICAgLy8gc2V0IHRvIHRydWUgYW5k
IGl0IGRvZXMgbm90IGV4ZWN1dGVcbiAgICAgICAgICB2YXIgZGl2ID0gb3duZXJEb2N1bWVudC5j
cmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgICAgICB2YXIgdHlwZSA9IHRoaXMuX2N1cnJlbnRF
bGVtZW50LnR5cGU7XG4gICAgICAgICAgZGl2LmlubmVySFRNTCA9ICc8JyArIHR5cGUgKyAnPjwv
JyArIHR5cGUgKyAnPic7XG4gICAgICAgICAgZWwgPSBkaXYucmVtb3ZlQ2hpbGQoZGl2LmZpcnN0
Q2hpbGQpO1xuICAgICAgICB9IGVsc2UgaWYgKHByb3BzLmlzKSB7XG4gICAgICAgICAgZWwgPSBv
d25lckRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodGhpcy5fY3VycmVudEVsZW1lbnQudHlwZSwgcHJv
cHMuaXMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIFNlcGFyYXRlIGVsc2UgYnJh
bmNoIGluc3RlYWQgb2YgdXNpbmcgYHByb3BzLmlzIHx8IHVuZGVmaW5lZGAgYWJvdmUgYmVjdWFz
ZSBvZiBhIEZpcmVmb3ggYnVnLlxuICAgICAgICAgIC8vIFNlZSBkaXNjdXNzaW9uIGluIGh0dHBz
Oi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9wdWxsLzY4OTZcbiAgICAgICAgICAvLyBhbmQg
ZGlzY3Vzc2lvbiBpbiBodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMjc2MjQwXG4gICAgICAgICAgZWwgPSBvd25lckRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodGhp
cy5fY3VycmVudEVsZW1lbnQudHlwZSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAg
ICAgIGVsID0gb3duZXJEb2N1bWVudC5jcmVhdGVFbGVtZW50TlMobmFtZXNwYWNlVVJJLCB0aGlz
Ll9jdXJyZW50RWxlbWVudC50eXBlKTtcbiAgICAgIH1cbiAgICAgIFJlYWN0RE9NQ29tcG9uZW50
VHJlZS5wcmVjYWNoZU5vZGUodGhpcywgZWwpO1xuICAgICAgdGhpcy5fZmxhZ3MgfD0gRmxhZ3Mu
aGFzQ2FjaGVkQ2hpbGROb2RlcztcbiAgICAgIGlmICghdGhpcy5faG9zdFBhcmVudCkge1xuICAg
ICAgICBET01Qcm9wZXJ0eU9wZXJhdGlvbnMuc2V0QXR0cmlidXRlRm9yUm9vdChlbCk7XG4gICAg
ICB9XG4gICAgICB0aGlzLl91cGRhdGVET01Qcm9wZXJ0aWVzKG51bGwsIHByb3BzLCB0cmFuc2Fj
dGlvbik7XG4gICAgICB2YXIgbGF6eVRyZWUgPSBET01MYXp5VHJlZShlbCk7XG4gICAgICB0aGlz
Ll9jcmVhdGVJbml0aWFsQ2hpbGRyZW4odHJhbnNhY3Rpb24sIHByb3BzLCBjb250ZXh0LCBsYXp5
VHJlZSk7XG4gICAgICBtb3VudEltYWdlID0gbGF6eVRyZWU7XG4gICAgfSBlbHNlIHtcbiAgICAg
IHZhciB0YWdPcGVuID0gdGhpcy5fY3JlYXRlT3BlblRhZ01hcmt1cEFuZFB1dExpc3RlbmVycyh0
cmFuc2FjdGlvbiwgcHJvcHMpO1xuICAgICAgdmFyIHRhZ0NvbnRlbnQgPSB0aGlzLl9jcmVhdGVD
b250ZW50TWFya3VwKHRyYW5zYWN0aW9uLCBwcm9wcywgY29udGV4dCk7XG4gICAgICBpZiAoIXRh
Z0NvbnRlbnQgJiYgb21pdHRlZENsb3NlVGFnc1t0aGlzLl90YWddKSB7XG4gICAgICAgIG1vdW50
SW1hZ2UgPSB0YWdPcGVuICsgJy8+JztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG1vdW50SW1h
Z2UgPSB0YWdPcGVuICsgJz4nICsgdGFnQ29udGVudCArICc8LycgKyB0aGlzLl9jdXJyZW50RWxl
bWVudC50eXBlICsgJz4nO1xuICAgICAgfVxuICAgIH1cblxuICAgIHN3aXRjaCAodGhpcy5fdGFn
KSB7XG4gICAgICBjYXNlICdpbnB1dCc6XG4gICAgICAgIHRyYW5zYWN0aW9uLmdldFJlYWN0TW91
bnRSZWFkeSgpLmVucXVldWUoaW5wdXRQb3N0TW91bnQsIHRoaXMpO1xuICAgICAgICBpZiAocHJv
cHMuYXV0b0ZvY3VzKSB7XG4gICAgICAgICAgdHJhbnNhY3Rpb24uZ2V0UmVhY3RNb3VudFJlYWR5
KCkuZW5xdWV1ZShBdXRvRm9jdXNVdGlscy5mb2N1c0RPTUNvbXBvbmVudCwgdGhpcyk7XG4gICAg
ICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICd0ZXh0YXJlYSc6XG4gICAgICAgIHRy
YW5zYWN0aW9uLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUodGV4dGFyZWFQb3N0TW91bnQs
IHRoaXMpO1xuICAgICAgICBpZiAocHJvcHMuYXV0b0ZvY3VzKSB7XG4gICAgICAgICAgdHJhbnNh
Y3Rpb24uZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1ZShBdXRvRm9jdXNVdGlscy5mb2N1c0RP
TUNvbXBvbmVudCwgdGhpcyk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNl
ICdzZWxlY3QnOlxuICAgICAgICBpZiAocHJvcHMuYXV0b0ZvY3VzKSB7XG4gICAgICAgICAgdHJh
bnNhY3Rpb24uZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1ZShBdXRvRm9jdXNVdGlscy5mb2N1
c0RPTUNvbXBvbmVudCwgdGhpcyk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBj
YXNlICdidXR0b24nOlxuICAgICAgICBpZiAocHJvcHMuYXV0b0ZvY3VzKSB7XG4gICAgICAgICAg
dHJhbnNhY3Rpb24uZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1ZShBdXRvRm9jdXNVdGlscy5m
b2N1c0RPTUNvbXBvbmVudCwgdGhpcyk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAg
ICBjYXNlICdvcHRpb24nOlxuICAgICAgICB0cmFuc2FjdGlvbi5nZXRSZWFjdE1vdW50UmVhZHko
KS5lbnF1ZXVlKG9wdGlvblBvc3RNb3VudCwgdGhpcyk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1c
blxuICAgIHJldHVybiBtb3VudEltYWdlO1xuICB9LFxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIG1h
cmt1cCBmb3IgdGhlIG9wZW4gdGFnIGFuZCBhbGwgYXR0cmlidXRlcy5cbiAgICpcbiAgICogVGhp
cyBtZXRob2QgaGFzIHNpZGUgZWZmZWN0cyBiZWNhdXNlIGV2ZW50cyBnZXQgcmVnaXN0ZXJlZC5c
biAgICpcbiAgICogSXRlcmF0aW5nIG92ZXIgb2JqZWN0IHByb3BlcnRpZXMgaXMgZmFzdGVyIHRo
YW4gaXRlcmF0aW5nIG92ZXIgYXJyYXlzLlxuICAgKiBAc2VlIGh0dHA6Ly9qc3BlcmYuY29tL29i
ai12cy1hcnItaXRlcmF0aW9uXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7UmVh
Y3RSZWNvbmNpbGVUcmFuc2FjdGlvbnxSZWFjdFNlcnZlclJlbmRlcmluZ1RyYW5zYWN0aW9ufSB0
cmFuc2FjdGlvblxuICAgKiBAcGFyYW0ge29iamVjdH0gcHJvcHNcbiAgICogQHJldHVybiB7c3Ry
aW5nfSBNYXJrdXAgb2Ygb3BlbmluZyB0YWcuXG4gICAqL1xuICBfY3JlYXRlT3BlblRhZ01hcmt1
cEFuZFB1dExpc3RlbmVyczogZnVuY3Rpb24gKHRyYW5zYWN0aW9uLCBwcm9wcykge1xuICAgIHZh
ciByZXQgPSAnPCcgKyB0aGlzLl9jdXJyZW50RWxlbWVudC50eXBlO1xuXG4gICAgZm9yICh2YXIg
cHJvcEtleSBpbiBwcm9wcykge1xuICAgICAgaWYgKCFwcm9wcy5oYXNPd25Qcm9wZXJ0eShwcm9w
S2V5KSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIHZhciBwcm9wVmFsdWUg
PSBwcm9wc1twcm9wS2V5XTtcbiAgICAgIGlmIChwcm9wVmFsdWUgPT0gbnVsbCkge1xuICAgICAg
ICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGlmIChyZWdpc3RyYXRpb25OYW1lTW9kdWxlcy5o
YXNPd25Qcm9wZXJ0eShwcm9wS2V5KSkge1xuICAgICAgICBpZiAocHJvcFZhbHVlKSB7XG4gICAg
ICAgICAgZW5xdWV1ZVB1dExpc3RlbmVyKHRoaXMsIHByb3BLZXksIHByb3BWYWx1ZSwgdHJhbnNh
Y3Rpb24pO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAocHJvcEtleSA9
PT0gU1RZTEUpIHtcbiAgICAgICAgICBpZiAocHJvcFZhbHVlKSB7XG4gICAgICAgICAgICBpZiAo
cHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICAgICAgICAv
LyBTZWUgYF91cGRhdGVET01Qcm9wZXJ0aWVzYC4gc3R5bGUgYmxvY2tcbiAgICAgICAgICAgICAg
dGhpcy5fcHJldmlvdXNTdHlsZSA9IHByb3BWYWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAg
ICAgIHByb3BWYWx1ZSA9IHRoaXMuX3ByZXZpb3VzU3R5bGVDb3B5ID0gX2Fzc2lnbih7fSwgcHJv
cHMuc3R5bGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBwcm9wVmFsdWUgPSBDU1NQcm9wZXJ0
eU9wZXJhdGlvbnMuY3JlYXRlTWFya3VwRm9yU3R5bGVzKHByb3BWYWx1ZSwgdGhpcyk7XG4gICAg
ICAgIH1cbiAgICAgICAgdmFyIG1hcmt1cCA9IG51bGw7XG4gICAgICAgIGlmICh0aGlzLl90YWcg
IT0gbnVsbCAmJiBpc0N1c3RvbUNvbXBvbmVudCh0aGlzLl90YWcsIHByb3BzKSkge1xuICAgICAg
ICAgIGlmICghUkVTRVJWRURfUFJPUFMuaGFzT3duUHJvcGVydHkocHJvcEtleSkpIHtcbiAgICAg
ICAgICAgIG1hcmt1cCA9IERPTVByb3BlcnR5T3BlcmF0aW9ucy5jcmVhdGVNYXJrdXBGb3JDdXN0
b21BdHRyaWJ1dGUocHJvcEtleSwgcHJvcFZhbHVlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0g
ZWxzZSB7XG4gICAgICAgICAgbWFya3VwID0gRE9NUHJvcGVydHlPcGVyYXRpb25zLmNyZWF0ZU1h
cmt1cEZvclByb3BlcnR5KHByb3BLZXksIHByb3BWYWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAg
aWYgKG1hcmt1cCkge1xuICAgICAgICAgIHJldCArPSAnICcgKyBtYXJrdXA7XG4gICAgICAgIH1c
biAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBGb3Igc3RhdGljIHBhZ2VzLCBubyBuZWVkIHRvIHB1
dCBSZWFjdCBJRCBhbmQgY2hlY2tzdW0uIFNhdmVzIGxvdHMgb2ZcbiAgICAvLyBieXRlcy5cbiAg
ICBpZiAodHJhbnNhY3Rpb24ucmVuZGVyVG9TdGF0aWNNYXJrdXApIHtcbiAgICAgIHJldHVybiBy
ZXQ7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLl9ob3N0UGFyZW50KSB7XG4gICAgICByZXQgKz0g
JyAnICsgRE9NUHJvcGVydHlPcGVyYXRpb25zLmNyZWF0ZU1hcmt1cEZvclJvb3QoKTtcbiAgICB9
XG4gICAgcmV0ICs9ICcgJyArIERPTVByb3BlcnR5T3BlcmF0aW9ucy5jcmVhdGVNYXJrdXBGb3JJ
RCh0aGlzLl9kb21JRCk7XG4gICAgcmV0dXJuIHJldDtcbiAgfSxcblxuICAvKipcbiAgICogQ3Jl
YXRlcyBtYXJrdXAgZm9yIHRoZSBjb250ZW50IGJldHdlZW4gdGhlIHRhZ3MuXG4gICAqXG4gICAq
IEBwcml2YXRlXG4gICAqIEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbnxSZWFjdFNl
cnZlclJlbmRlcmluZ1RyYW5zYWN0aW9ufSB0cmFuc2FjdGlvblxuICAgKiBAcGFyYW0ge29iamVj
dH0gcHJvcHNcbiAgICogQHBhcmFtIHtvYmplY3R9IGNvbnRleHRcbiAgICogQHJldHVybiB7c3Ry
aW5nfSBDb250ZW50IG1hcmt1cC5cbiAgICovXG4gIF9jcmVhdGVDb250ZW50TWFya3VwOiBmdW5j
dGlvbiAodHJhbnNhY3Rpb24sIHByb3BzLCBjb250ZXh0KSB7XG4gICAgdmFyIHJldCA9ICcnO1xu
XG4gICAgLy8gSW50ZW50aW9uYWwgdXNlIG9mICE9IHRvIGF2b2lkIGNhdGNoaW5nIHplcm8vZmFs
c2UuXG4gICAgdmFyIGlubmVySFRNTCA9IHByb3BzLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MO1xu
ICAgIGlmIChpbm5lckhUTUwgIT0gbnVsbCkge1xuICAgICAgaWYgKGlubmVySFRNTC5fX2h0bWwg
IT0gbnVsbCkge1xuICAgICAgICByZXQgPSBpbm5lckhUTUwuX19odG1sO1xuICAgICAgfVxuICAg
IH0gZWxzZSB7XG4gICAgICB2YXIgY29udGVudFRvVXNlID0gQ09OVEVOVF9UWVBFU1t0eXBlb2Yg
cHJvcHMuY2hpbGRyZW5dID8gcHJvcHMuY2hpbGRyZW4gOiBudWxsO1xuICAgICAgdmFyIGNoaWxk
cmVuVG9Vc2UgPSBjb250ZW50VG9Vc2UgIT0gbnVsbCA/IG51bGwgOiBwcm9wcy5jaGlsZHJlbjtc
biAgICAgIGlmIChjb250ZW50VG9Vc2UgIT0gbnVsbCkge1xuICAgICAgICAvLyBUT0RPOiBWYWxp
ZGF0ZSB0aGF0IHRleHQgaXMgYWxsb3dlZCBhcyBhIGNoaWxkIG9mIHRoaXMgbm9kZVxuICAgICAg
ICByZXQgPSBlc2NhcGVUZXh0Q29udGVudEZvckJyb3dzZXIoY29udGVudFRvVXNlKTtcbiAgICAg
ICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAg
ICBzZXRBbmRWYWxpZGF0ZUNvbnRlbnRDaGlsZERldi5jYWxsKHRoaXMsIGNvbnRlbnRUb1VzZSk7
XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoY2hpbGRyZW5Ub1VzZSAhPSBudWxsKSB7XG4g
ICAgICAgIHZhciBtb3VudEltYWdlcyA9IHRoaXMubW91bnRDaGlsZHJlbihjaGlsZHJlblRvVXNl
LCB0cmFuc2FjdGlvbiwgY29udGV4dCk7XG4gICAgICAgIHJldCA9IG1vdW50SW1hZ2VzLmpvaW4o
JycpO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAobmV3bGluZUVhdGluZ1RhZ3NbdGhpcy5fdGFn
XSAmJiByZXQuY2hhckF0KDApID09PSAnXFxuJykge1xuICAgICAgLy8gdGV4dC9odG1sIGlnbm9y
ZXMgdGhlIGZpcnN0IGNoYXJhY3RlciBpbiB0aGVzZSB0YWdzIGlmIGl0J3MgYSBuZXdsaW5lXG4g
ICAgICAvLyBQcmVmZXIgdG8gYnJlYWsgYXBwbGljYXRpb24veG1sIG92ZXIgdGV4dC9odG1sIChm
b3Igbm93KSBieSBhZGRpbmdcbiAgICAgIC8vIGEgbmV3bGluZSBzcGVjaWZpY2FsbHkgdG8gZ2V0
IGVhdGVuIGJ5IHRoZSBwYXJzZXIuIChBbHRlcm5hdGVseSBmb3JcbiAgICAgIC8vIHRleHRhcmVh
cywgcmVwbGFjaW5nIFwiXlxcblwiIHdpdGggXCJcXHJcXG5cIiBkb2Vzbid0IGdldCBlYXRlbiwg
YW5kIHRoZSBmaXJzdFxuICAgICAgLy8gXFxyIGlzIG5vcm1hbGl6ZWQgb3V0IGJ5IEhUTUxUZXh0
QXJlYUVsZW1lbnQjdmFsdWUuKVxuICAgICAgLy8gU2VlOiA8aHR0cDovL3d3dy53My5vcmcvVFIv
aHRtbC1wb2x5Z2xvdC8jbmV3bGluZXMtaW4tdGV4dGFyZWEtYW5kLXByZT5cbiAgICAgIC8vIFNl
ZTogPGh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw1L3N5bnRheC5odG1sI2VsZW1lbnQtcmVzdHJp
Y3Rpb25zPlxuICAgICAgLy8gU2VlOiA8aHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDUvc3ludGF4
Lmh0bWwjbmV3bGluZXM+XG4gICAgICAvLyBTZWU6IFBhcnNpbmcgb2YgXCJ0ZXh0YXJlYVwiIFwi
bGlzdGluZ1wiIGFuZCBcInByZVwiIGVsZW1lbnRzXG4gICAgICAvLyAgZnJvbSA8aHR0cDovL3d3
dy53My5vcmcvVFIvaHRtbDUvc3ludGF4Lmh0bWwjcGFyc2luZy1tYWluLWluYm9keT5cbiAgICAg
IHJldHVybiAnXFxuJyArIHJldDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHJldDtcbiAg
ICB9XG4gIH0sXG5cbiAgX2NyZWF0ZUluaXRpYWxDaGlsZHJlbjogZnVuY3Rpb24gKHRyYW5zYWN0
aW9uLCBwcm9wcywgY29udGV4dCwgbGF6eVRyZWUpIHtcbiAgICAvLyBJbnRlbnRpb25hbCB1c2Ug
b2YgIT0gdG8gYXZvaWQgY2F0Y2hpbmcgemVyby9mYWxzZS5cbiAgICB2YXIgaW5uZXJIVE1MID0g
cHJvcHMuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw7XG4gICAgaWYgKGlubmVySFRNTCAhPSBudWxs
KSB7XG4gICAgICBpZiAoaW5uZXJIVE1MLl9faHRtbCAhPSBudWxsKSB7XG4gICAgICAgIERPTUxh
enlUcmVlLnF1ZXVlSFRNTChsYXp5VHJlZSwgaW5uZXJIVE1MLl9faHRtbCk7XG4gICAgICB9XG4g
ICAgfSBlbHNlIHtcbiAgICAgIHZhciBjb250ZW50VG9Vc2UgPSBDT05URU5UX1RZUEVTW3R5cGVv
ZiBwcm9wcy5jaGlsZHJlbl0gPyBwcm9wcy5jaGlsZHJlbiA6IG51bGw7XG4gICAgICB2YXIgY2hp
bGRyZW5Ub1VzZSA9IGNvbnRlbnRUb1VzZSAhPSBudWxsID8gbnVsbCA6IHByb3BzLmNoaWxkcmVu
O1xuICAgICAgLy8gVE9ETzogVmFsaWRhdGUgdGhhdCB0ZXh0IGlzIGFsbG93ZWQgYXMgYSBjaGls
ZCBvZiB0aGlzIG5vZGVcbiAgICAgIGlmIChjb250ZW50VG9Vc2UgIT0gbnVsbCkge1xuICAgICAg
ICAvLyBBdm9pZCBzZXR0aW5nIHRleHRDb250ZW50IHdoZW4gdGhlIHRleHQgaXMgZW1wdHkuIElu
IElFMTEgc2V0dGluZ1xuICAgICAgICAvLyB0ZXh0Q29udGVudCBvbiBhIHRleHQgYXJlYSB3aWxs
IGNhdXNlIHRoZSBwbGFjZWhvbGRlciB0byBub3RcbiAgICAgICAgLy8gc2hvdyB3aXRoaW4gdGhl
IHRleHRhcmVhIHVudGlsIGl0IGhhcyBiZWVuIGZvY3VzZWQgYW5kIGJsdXJyZWQgYWdhaW4uXG4g
ICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9pc3N1ZXMvNjczMSNp
c3N1ZWNvbW1lbnQtMjU0ODc0NTUzXG4gICAgICAgIGlmIChjb250ZW50VG9Vc2UgIT09ICcnKSB7
XG4gICAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtc
biAgICAgICAgICAgIHNldEFuZFZhbGlkYXRlQ29udGVudENoaWxkRGV2LmNhbGwodGhpcywgY29u
dGVudFRvVXNlKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgRE9NTGF6eVRyZWUucXVldWVUZXh0
KGxhenlUcmVlLCBjb250ZW50VG9Vc2UpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGNo
aWxkcmVuVG9Vc2UgIT0gbnVsbCkge1xuICAgICAgICB2YXIgbW91bnRJbWFnZXMgPSB0aGlzLm1v
dW50Q2hpbGRyZW4oY2hpbGRyZW5Ub1VzZSwgdHJhbnNhY3Rpb24sIGNvbnRleHQpO1xuICAgICAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IG1vdW50SW1hZ2VzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAg
ICAgRE9NTGF6eVRyZWUucXVldWVDaGlsZChsYXp5VHJlZSwgbW91bnRJbWFnZXNbaV0pO1xuICAg
ICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9LFxuXG4gIC8qKlxuICAgKiBSZWNlaXZlcyBhIG5l
eHQgZWxlbWVudCBhbmQgdXBkYXRlcyB0aGUgY29tcG9uZW50LlxuICAgKlxuICAgKiBAaW50ZXJu
YWxcbiAgICogQHBhcmFtIHtSZWFjdEVsZW1lbnR9IG5leHRFbGVtZW50XG4gICAqIEBwYXJhbSB7
UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbnxSZWFjdFNlcnZlclJlbmRlcmluZ1RyYW5zYWN0aW9u
fSB0cmFuc2FjdGlvblxuICAgKiBAcGFyYW0ge29iamVjdH0gY29udGV4dFxuICAgKi9cbiAgcmVj
ZWl2ZUNvbXBvbmVudDogZnVuY3Rpb24gKG5leHRFbGVtZW50LCB0cmFuc2FjdGlvbiwgY29udGV4
dCkge1xuICAgIHZhciBwcmV2RWxlbWVudCA9IHRoaXMuX2N1cnJlbnRFbGVtZW50O1xuICAgIHRo
aXMuX2N1cnJlbnRFbGVtZW50ID0gbmV4dEVsZW1lbnQ7XG4gICAgdGhpcy51cGRhdGVDb21wb25l
bnQodHJhbnNhY3Rpb24sIHByZXZFbGVtZW50LCBuZXh0RWxlbWVudCwgY29udGV4dCk7XG4gIH0s
XG5cbiAgLyoqXG4gICAqIFVwZGF0ZXMgYSBET00gY29tcG9uZW50IGFmdGVyIGl0IGhhcyBhbHJl
YWR5IGJlZW4gYWxsb2NhdGVkIGFuZFxuICAgKiBhdHRhY2hlZCB0byB0aGUgRE9NLiBSZWNvbmNp
bGVzIHRoZSByb290IERPTSBub2RlLCB0aGVuIHJlY3Vyc2VzLlxuICAgKlxuICAgKiBAcGFyYW0g
e1JlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb259IHRyYW5zYWN0aW9uXG4gICAqIEBwYXJhbSB7UmVh
Y3RFbGVtZW50fSBwcmV2RWxlbWVudFxuICAgKiBAcGFyYW0ge1JlYWN0RWxlbWVudH0gbmV4dEVs
ZW1lbnRcbiAgICogQGludGVybmFsXG4gICAqIEBvdmVycmlkYWJsZVxuICAgKi9cbiAgdXBkYXRl
Q29tcG9uZW50OiBmdW5jdGlvbiAodHJhbnNhY3Rpb24sIHByZXZFbGVtZW50LCBuZXh0RWxlbWVu
dCwgY29udGV4dCkge1xuICAgIHZhciBsYXN0UHJvcHMgPSBwcmV2RWxlbWVudC5wcm9wcztcbiAg
ICB2YXIgbmV4dFByb3BzID0gdGhpcy5fY3VycmVudEVsZW1lbnQucHJvcHM7XG5cbiAgICBzd2l0
Y2ggKHRoaXMuX3RhZykge1xuICAgICAgY2FzZSAnaW5wdXQnOlxuICAgICAgICBsYXN0UHJvcHMg
PSBSZWFjdERPTUlucHV0LmdldEhvc3RQcm9wcyh0aGlzLCBsYXN0UHJvcHMpO1xuICAgICAgICBu
ZXh0UHJvcHMgPSBSZWFjdERPTUlucHV0LmdldEhvc3RQcm9wcyh0aGlzLCBuZXh0UHJvcHMpO1xu
ICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ29wdGlvbic6XG4gICAgICAgIGxhc3RQcm9wcyA9
IFJlYWN0RE9NT3B0aW9uLmdldEhvc3RQcm9wcyh0aGlzLCBsYXN0UHJvcHMpO1xuICAgICAgICBu
ZXh0UHJvcHMgPSBSZWFjdERPTU9wdGlvbi5nZXRIb3N0UHJvcHModGhpcywgbmV4dFByb3BzKTtc
biAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdzZWxlY3QnOlxuICAgICAgICBsYXN0UHJvcHMg
PSBSZWFjdERPTVNlbGVjdC5nZXRIb3N0UHJvcHModGhpcywgbGFzdFByb3BzKTtcbiAgICAgICAg
bmV4dFByb3BzID0gUmVhY3RET01TZWxlY3QuZ2V0SG9zdFByb3BzKHRoaXMsIG5leHRQcm9wcyk7
XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAndGV4dGFyZWEnOlxuICAgICAgICBsYXN0UHJv
cHMgPSBSZWFjdERPTVRleHRhcmVhLmdldEhvc3RQcm9wcyh0aGlzLCBsYXN0UHJvcHMpO1xuICAg
ICAgICBuZXh0UHJvcHMgPSBSZWFjdERPTVRleHRhcmVhLmdldEhvc3RQcm9wcyh0aGlzLCBuZXh0
UHJvcHMpO1xuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICBhc3NlcnRWYWxpZFByb3BzKHRo
aXMsIG5leHRQcm9wcyk7XG4gICAgdGhpcy5fdXBkYXRlRE9NUHJvcGVydGllcyhsYXN0UHJvcHMs
IG5leHRQcm9wcywgdHJhbnNhY3Rpb24pO1xuICAgIHRoaXMuX3VwZGF0ZURPTUNoaWxkcmVuKGxh
c3RQcm9wcywgbmV4dFByb3BzLCB0cmFuc2FjdGlvbiwgY29udGV4dCk7XG5cbiAgICBzd2l0Y2gg
KHRoaXMuX3RhZykge1xuICAgICAgY2FzZSAnaW5wdXQnOlxuICAgICAgICAvLyBVcGRhdGUgdGhl
IHdyYXBwZXIgYXJvdW5kIGlucHV0cyAqYWZ0ZXIqIHVwZGF0aW5nIHByb3BzLiBUaGlzIGhhcyB0
b1xuICAgICAgICAvLyBoYXBwZW4gYWZ0ZXIgYF91cGRhdGVET01Qcm9wZXJ0aWVzYC4gT3RoZXJ3
aXNlIEhUTUw1IGlucHV0IHZhbGlkYXRpb25zXG4gICAgICAgIC8vIHJhaXNlIHdhcm5pbmdzIGFu
ZCBwcmV2ZW50IHRoZSBuZXcgdmFsdWUgZnJvbSBiZWluZyBhc3NpZ25lZC5cbiAgICAgICAgUmVh
Y3RET01JbnB1dC51cGRhdGVXcmFwcGVyKHRoaXMpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNh
c2UgJ3RleHRhcmVhJzpcbiAgICAgICAgUmVhY3RET01UZXh0YXJlYS51cGRhdGVXcmFwcGVyKHRo
aXMpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3NlbGVjdCc6XG4gICAgICAgIC8vIDxz
ZWxlY3Q+IHZhbHVlIHVwZGF0ZSBuZWVkcyB0byBvY2N1ciBhZnRlciA8b3B0aW9uPiBjaGlsZHJl
blxuICAgICAgICAvLyByZWNvbmNpbGlhdGlvblxuICAgICAgICB0cmFuc2FjdGlvbi5nZXRSZWFj
dE1vdW50UmVhZHkoKS5lbnF1ZXVlKHBvc3RVcGRhdGVTZWxlY3RXcmFwcGVyLCB0aGlzKTtcbiAg
ICAgICAgYnJlYWs7XG4gICAgfVxuICB9LFxuXG4gIC8qKlxuICAgKiBSZWNvbmNpbGVzIHRoZSBw
cm9wZXJ0aWVzIGJ5IGRldGVjdGluZyBkaWZmZXJlbmNlcyBpbiBwcm9wZXJ0eSB2YWx1ZXMgYW5k
XG4gICAqIHVwZGF0aW5nIHRoZSBET00gYXMgbmVjZXNzYXJ5LiBUaGlzIGZ1bmN0aW9uIGlzIHBy
b2JhYmx5IHRoZSBzaW5nbGUgbW9zdFxuICAgKiBjcml0aWNhbCBwYXRoIGZvciBwZXJmb3JtYW5j
ZSBvcHRpbWl6YXRpb24uXG4gICAqXG4gICAqIFRPRE86IEJlbmNobWFyayB3aGV0aGVyIGNoZWNr
aW5nIGZvciBjaGFuZ2VkIHZhbHVlcyBpbiBtZW1vcnkgYWN0dWFsbHlcbiAgICogICAgICAgaW1w
cm92ZXMgcGVyZm9ybWFuY2UgKGVzcGVjaWFsbHkgc3RhdGljYWxseSBwb3NpdGlvbmVkIGVsZW1l
bnRzKS5cbiAgICogVE9ETzogQmVuY2htYXJrIHRoZSBlZmZlY3RzIG9mIHB1dHRpbmcgdGhpcyBh
dCB0aGUgdG9wIHNpbmNlIDk5JSBvZiBwcm9wc1xuICAgKiAgICAgICBkbyBub3QgY2hhbmdlIGZv
ciBhIGdpdmVuIHJlY29uY2lsaWF0aW9uLlxuICAgKiBUT0RPOiBCZW5jaG1hcmsgYXJlYXMgdGhh
dCBjYW4gYmUgaW1wcm92ZWQgd2l0aCBjYWNoaW5nLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAg
KiBAcGFyYW0ge29iamVjdH0gbGFzdFByb3BzXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBuZXh0UHJv
cHNcbiAgICogQHBhcmFtIHs/RE9NRWxlbWVudH0gbm9kZVxuICAgKi9cbiAgX3VwZGF0ZURPTVBy
b3BlcnRpZXM6IGZ1bmN0aW9uIChsYXN0UHJvcHMsIG5leHRQcm9wcywgdHJhbnNhY3Rpb24pIHtc
biAgICB2YXIgcHJvcEtleTtcbiAgICB2YXIgc3R5bGVOYW1lO1xuICAgIHZhciBzdHlsZVVwZGF0
ZXM7XG4gICAgZm9yIChwcm9wS2V5IGluIGxhc3RQcm9wcykge1xuICAgICAgaWYgKG5leHRQcm9w
cy5oYXNPd25Qcm9wZXJ0eShwcm9wS2V5KSB8fCAhbGFzdFByb3BzLmhhc093blByb3BlcnR5KHBy
b3BLZXkpIHx8IGxhc3RQcm9wc1twcm9wS2V5XSA9PSBudWxsKSB7XG4gICAgICAgIGNvbnRpbnVl
O1xuICAgICAgfVxuICAgICAgaWYgKHByb3BLZXkgPT09IFNUWUxFKSB7XG4gICAgICAgIHZhciBs
YXN0U3R5bGUgPSB0aGlzLl9wcmV2aW91c1N0eWxlQ29weTtcbiAgICAgICAgZm9yIChzdHlsZU5h
bWUgaW4gbGFzdFN0eWxlKSB7XG4gICAgICAgICAgaWYgKGxhc3RTdHlsZS5oYXNPd25Qcm9wZXJ0
eShzdHlsZU5hbWUpKSB7XG4gICAgICAgICAgICBzdHlsZVVwZGF0ZXMgPSBzdHlsZVVwZGF0ZXMg
fHwge307XG4gICAgICAgICAgICBzdHlsZVVwZGF0ZXNbc3R5bGVOYW1lXSA9ICcnO1xuICAgICAg
ICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9wcmV2aW91c1N0eWxlQ29weSA9IG51bGw7
XG4gICAgICB9IGVsc2UgaWYgKHJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVzLmhhc093blByb3BlcnR5
KHByb3BLZXkpKSB7XG4gICAgICAgIGlmIChsYXN0UHJvcHNbcHJvcEtleV0pIHtcbiAgICAgICAg
ICAvLyBPbmx5IGNhbGwgZGVsZXRlTGlzdGVuZXIgaWYgdGhlcmUgd2FzIGEgbGlzdGVuZXIgcHJl
dmlvdXNseSBvclxuICAgICAgICAgIC8vIGVsc2Ugd2lsbERlbGV0ZUxpc3RlbmVyIGdldHMgY2Fs
bGVkIHdoZW4gdGhlcmUgd2Fzbid0IGFjdHVhbGx5IGFcbiAgICAgICAgICAvLyBsaXN0ZW5lciAo
ZS5nLiwgb25DbGljaz17bnVsbH0pXG4gICAgICAgICAgZGVsZXRlTGlzdGVuZXIodGhpcywgcHJv
cEtleSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoaXNDdXN0b21Db21wb25lbnQodGhp
cy5fdGFnLCBsYXN0UHJvcHMpKSB7XG4gICAgICAgIGlmICghUkVTRVJWRURfUFJPUFMuaGFzT3du
UHJvcGVydHkocHJvcEtleSkpIHtcbiAgICAgICAgICBET01Qcm9wZXJ0eU9wZXJhdGlvbnMuZGVs
ZXRlVmFsdWVGb3JBdHRyaWJ1dGUoZ2V0Tm9kZSh0aGlzKSwgcHJvcEtleSk7XG4gICAgICAgIH1c
biAgICAgIH0gZWxzZSBpZiAoRE9NUHJvcGVydHkucHJvcGVydGllc1twcm9wS2V5XSB8fCBET01Q
cm9wZXJ0eS5pc0N1c3RvbUF0dHJpYnV0ZShwcm9wS2V5KSkge1xuICAgICAgICBET01Qcm9wZXJ0
eU9wZXJhdGlvbnMuZGVsZXRlVmFsdWVGb3JQcm9wZXJ0eShnZXROb2RlKHRoaXMpLCBwcm9wS2V5
KTtcbiAgICAgIH1cbiAgICB9XG4gICAgZm9yIChwcm9wS2V5IGluIG5leHRQcm9wcykge1xuICAg
ICAgdmFyIG5leHRQcm9wID0gbmV4dFByb3BzW3Byb3BLZXldO1xuICAgICAgdmFyIGxhc3RQcm9w
ID0gcHJvcEtleSA9PT0gU1RZTEUgPyB0aGlzLl9wcmV2aW91c1N0eWxlQ29weSA6IGxhc3RQcm9w
cyAhPSBudWxsID8gbGFzdFByb3BzW3Byb3BLZXldIDogdW5kZWZpbmVkO1xuICAgICAgaWYgKCFu
ZXh0UHJvcHMuaGFzT3duUHJvcGVydHkocHJvcEtleSkgfHwgbmV4dFByb3AgPT09IGxhc3RQcm9w
IHx8IG5leHRQcm9wID09IG51bGwgJiYgbGFzdFByb3AgPT0gbnVsbCkge1xuICAgICAgICBjb250
aW51ZTtcbiAgICAgIH1cbiAgICAgIGlmIChwcm9wS2V5ID09PSBTVFlMRSkge1xuICAgICAgICBp
ZiAobmV4dFByb3ApIHtcbiAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdw
cm9kdWN0aW9uJykge1xuICAgICAgICAgICAgY2hlY2tBbmRXYXJuRm9yTXV0YXRlZFN0eWxlKHRo
aXMuX3ByZXZpb3VzU3R5bGVDb3B5LCB0aGlzLl9wcmV2aW91c1N0eWxlLCB0aGlzKTtcbiAgICAg
ICAgICAgIHRoaXMuX3ByZXZpb3VzU3R5bGUgPSBuZXh0UHJvcDtcbiAgICAgICAgICB9XG4gICAg
ICAgICAgbmV4dFByb3AgPSB0aGlzLl9wcmV2aW91c1N0eWxlQ29weSA9IF9hc3NpZ24oe30sIG5l
eHRQcm9wKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLl9wcmV2aW91c1N0eWxl
Q29weSA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGxhc3RQcm9wKSB7XG4gICAgICAg
ICAgLy8gVW5zZXQgc3R5bGVzIG9uIGBsYXN0UHJvcGAgYnV0IG5vdCBvbiBgbmV4dFByb3BgLlxu
ICAgICAgICAgIGZvciAoc3R5bGVOYW1lIGluIGxhc3RQcm9wKSB7XG4gICAgICAgICAgICBpZiAo
bGFzdFByb3AuaGFzT3duUHJvcGVydHkoc3R5bGVOYW1lKSAmJiAoIW5leHRQcm9wIHx8ICFuZXh0
UHJvcC5oYXNPd25Qcm9wZXJ0eShzdHlsZU5hbWUpKSkge1xuICAgICAgICAgICAgICBzdHlsZVVw
ZGF0ZXMgPSBzdHlsZVVwZGF0ZXMgfHwge307XG4gICAgICAgICAgICAgIHN0eWxlVXBkYXRlc1tz
dHlsZU5hbWVdID0gJyc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIC8v
IFVwZGF0ZSBzdHlsZXMgdGhhdCBjaGFuZ2VkIHNpbmNlIGBsYXN0UHJvcGAuXG4gICAgICAgICAg
Zm9yIChzdHlsZU5hbWUgaW4gbmV4dFByb3ApIHtcbiAgICAgICAgICAgIGlmIChuZXh0UHJvcC5o
YXNPd25Qcm9wZXJ0eShzdHlsZU5hbWUpICYmIGxhc3RQcm9wW3N0eWxlTmFtZV0gIT09IG5leHRQ
cm9wW3N0eWxlTmFtZV0pIHtcbiAgICAgICAgICAgICAgc3R5bGVVcGRhdGVzID0gc3R5bGVVcGRh
dGVzIHx8IHt9O1xuICAgICAgICAgICAgICBzdHlsZVVwZGF0ZXNbc3R5bGVOYW1lXSA9IG5leHRQ
cm9wW3N0eWxlTmFtZV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9IGVs
c2Uge1xuICAgICAgICAgIC8vIFJlbGllcyBvbiBgdXBkYXRlU3R5bGVzQnlJRGAgbm90IG11dGF0
aW5nIGBzdHlsZVVwZGF0ZXNgLlxuICAgICAgICAgIHN0eWxlVXBkYXRlcyA9IG5leHRQcm9wO1xu
ICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKHJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVzLmhhc093
blByb3BlcnR5KHByb3BLZXkpKSB7XG4gICAgICAgIGlmIChuZXh0UHJvcCkge1xuICAgICAgICAg
IGVucXVldWVQdXRMaXN0ZW5lcih0aGlzLCBwcm9wS2V5LCBuZXh0UHJvcCwgdHJhbnNhY3Rpb24p
O1xuICAgICAgICB9IGVsc2UgaWYgKGxhc3RQcm9wKSB7XG4gICAgICAgICAgZGVsZXRlTGlzdGVu
ZXIodGhpcywgcHJvcEtleSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoaXNDdXN0b21D
b21wb25lbnQodGhpcy5fdGFnLCBuZXh0UHJvcHMpKSB7XG4gICAgICAgIGlmICghUkVTRVJWRURf
UFJPUFMuaGFzT3duUHJvcGVydHkocHJvcEtleSkpIHtcbiAgICAgICAgICBET01Qcm9wZXJ0eU9w
ZXJhdGlvbnMuc2V0VmFsdWVGb3JBdHRyaWJ1dGUoZ2V0Tm9kZSh0aGlzKSwgcHJvcEtleSwgbmV4
dFByb3ApO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKERPTVByb3BlcnR5LnByb3BlcnRp
ZXNbcHJvcEtleV0gfHwgRE9NUHJvcGVydHkuaXNDdXN0b21BdHRyaWJ1dGUocHJvcEtleSkpIHtc
biAgICAgICAgdmFyIG5vZGUgPSBnZXROb2RlKHRoaXMpO1xuICAgICAgICAvLyBJZiB3ZSdyZSB1
cGRhdGluZyB0byBudWxsIG9yIHVuZGVmaW5lZCwgd2Ugc2hvdWxkIHJlbW92ZSB0aGUgcHJvcGVy
dHlcbiAgICAgICAgLy8gZnJvbSB0aGUgRE9NIG5vZGUgaW5zdGVhZCBvZiBpbmFkdmVydGVudGx5
IHNldHRpbmcgdG8gYSBzdHJpbmcuIFRoaXNcbiAgICAgICAgLy8gYnJpbmdzIHVzIGluIGxpbmUg
d2l0aCB0aGUgc2FtZSBiZWhhdmlvciB3ZSBoYXZlIG9uIGluaXRpYWwgcmVuZGVyLlxuICAgICAg
ICBpZiAobmV4dFByb3AgIT0gbnVsbCkge1xuICAgICAgICAgIERPTVByb3BlcnR5T3BlcmF0aW9u
cy5zZXRWYWx1ZUZvclByb3BlcnR5KG5vZGUsIHByb3BLZXksIG5leHRQcm9wKTtcbiAgICAgICAg
fSBlbHNlIHtcbiAgICAgICAgICBET01Qcm9wZXJ0eU9wZXJhdGlvbnMuZGVsZXRlVmFsdWVGb3JQ
cm9wZXJ0eShub2RlLCBwcm9wS2V5KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBp
ZiAoc3R5bGVVcGRhdGVzKSB7XG4gICAgICBDU1NQcm9wZXJ0eU9wZXJhdGlvbnMuc2V0VmFsdWVG
b3JTdHlsZXMoZ2V0Tm9kZSh0aGlzKSwgc3R5bGVVcGRhdGVzLCB0aGlzKTtcbiAgICB9XG4gIH0s
XG5cbiAgLyoqXG4gICAqIFJlY29uY2lsZXMgdGhlIGNoaWxkcmVuIHdpdGggdGhlIHZhcmlvdXMg
cHJvcGVydGllcyB0aGF0IGFmZmVjdCB0aGVcbiAgICogY2hpbGRyZW4gY29udGVudC5cbiAgICpc
biAgICogQHBhcmFtIHtvYmplY3R9IGxhc3RQcm9wc1xuICAgKiBAcGFyYW0ge29iamVjdH0gbmV4
dFByb3BzXG4gICAqIEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbn0gdHJhbnNhY3Rp
b25cbiAgICogQHBhcmFtIHtvYmplY3R9IGNvbnRleHRcbiAgICovXG4gIF91cGRhdGVET01DaGls
ZHJlbjogZnVuY3Rpb24gKGxhc3RQcm9wcywgbmV4dFByb3BzLCB0cmFuc2FjdGlvbiwgY29udGV4
dCkge1xuICAgIHZhciBsYXN0Q29udGVudCA9IENPTlRFTlRfVFlQRVNbdHlwZW9mIGxhc3RQcm9w
cy5jaGlsZHJlbl0gPyBsYXN0UHJvcHMuY2hpbGRyZW4gOiBudWxsO1xuICAgIHZhciBuZXh0Q29u
dGVudCA9IENPTlRFTlRfVFlQRVNbdHlwZW9mIG5leHRQcm9wcy5jaGlsZHJlbl0gPyBuZXh0UHJv
cHMuY2hpbGRyZW4gOiBudWxsO1xuXG4gICAgdmFyIGxhc3RIdG1sID0gbGFzdFByb3BzLmRhbmdl
cm91c2x5U2V0SW5uZXJIVE1MICYmIGxhc3RQcm9wcy5kYW5nZXJvdXNseVNldElubmVySFRNTC5f
X2h0bWw7XG4gICAgdmFyIG5leHRIdG1sID0gbmV4dFByb3BzLmRhbmdlcm91c2x5U2V0SW5uZXJI
VE1MICYmIG5leHRQcm9wcy5kYW5nZXJvdXNseVNldElubmVySFRNTC5fX2h0bWw7XG5cbiAgICAv
LyBOb3RlIHRoZSB1c2Ugb2YgYCE9YCB3aGljaCBjaGVja3MgZm9yIG51bGwgb3IgdW5kZWZpbmVk
LlxuICAgIHZhciBsYXN0Q2hpbGRyZW4gPSBsYXN0Q29udGVudCAhPSBudWxsID8gbnVsbCA6IGxh
c3RQcm9wcy5jaGlsZHJlbjtcbiAgICB2YXIgbmV4dENoaWxkcmVuID0gbmV4dENvbnRlbnQgIT0g
bnVsbCA/IG51bGwgOiBuZXh0UHJvcHMuY2hpbGRyZW47XG5cbiAgICAvLyBJZiB3ZSdyZSBzd2l0
Y2hpbmcgZnJvbSBjaGlsZHJlbiB0byBjb250ZW50L2h0bWwgb3IgdmljZSB2ZXJzYSwgcmVtb3Zl
XG4gICAgLy8gdGhlIG9sZCBjb250ZW50XG4gICAgdmFyIGxhc3RIYXNDb250ZW50T3JIdG1sID0g
bGFzdENvbnRlbnQgIT0gbnVsbCB8fCBsYXN0SHRtbCAhPSBudWxsO1xuICAgIHZhciBuZXh0SGFz
Q29udGVudE9ySHRtbCA9IG5leHRDb250ZW50ICE9IG51bGwgfHwgbmV4dEh0bWwgIT0gbnVsbDtc
biAgICBpZiAobGFzdENoaWxkcmVuICE9IG51bGwgJiYgbmV4dENoaWxkcmVuID09IG51bGwpIHtc
biAgICAgIHRoaXMudXBkYXRlQ2hpbGRyZW4obnVsbCwgdHJhbnNhY3Rpb24sIGNvbnRleHQpO1xu
ICAgIH0gZWxzZSBpZiAobGFzdEhhc0NvbnRlbnRPckh0bWwgJiYgIW5leHRIYXNDb250ZW50T3JI
dG1sKSB7XG4gICAgICB0aGlzLnVwZGF0ZVRleHRDb250ZW50KCcnKTtcbiAgICAgIGlmIChwcm9j
ZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgIFJlYWN0SW5zdHJ1
bWVudGF0aW9uLmRlYnVnVG9vbC5vblNldENoaWxkcmVuKHRoaXMuX2RlYnVnSUQsIFtdKTtcbiAg
ICAgIH1cbiAgICB9XG5cbiAgICBpZiAobmV4dENvbnRlbnQgIT0gbnVsbCkge1xuICAgICAgaWYg
KGxhc3RDb250ZW50ICE9PSBuZXh0Q29udGVudCkge1xuICAgICAgICB0aGlzLnVwZGF0ZVRleHRD
b250ZW50KCcnICsgbmV4dENvbnRlbnQpO1xuICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9F
TlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICAgIHNldEFuZFZhbGlkYXRlQ29udGVudENo
aWxkRGV2LmNhbGwodGhpcywgbmV4dENvbnRlbnQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAg
fSBlbHNlIGlmIChuZXh0SHRtbCAhPSBudWxsKSB7XG4gICAgICBpZiAobGFzdEh0bWwgIT09IG5l
eHRIdG1sKSB7XG4gICAgICAgIHRoaXMudXBkYXRlTWFya3VwKCcnICsgbmV4dEh0bWwpO1xuICAg
ICAgfVxuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtc
biAgICAgICAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9uU2V0Q2hpbGRyZW4odGhp
cy5fZGVidWdJRCwgW10pO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAobmV4dENoaWxkcmVuICE9
IG51bGwpIHtcbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24n
KSB7XG4gICAgICAgIHNldEFuZFZhbGlkYXRlQ29udGVudENoaWxkRGV2LmNhbGwodGhpcywgbnVs
bCk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMudXBkYXRlQ2hpbGRyZW4obmV4dENoaWxkcmVuLCB0
cmFuc2FjdGlvbiwgY29udGV4dCk7XG4gICAgfVxuICB9LFxuXG4gIGdldEhvc3ROb2RlOiBmdW5j
dGlvbiAoKSB7XG4gICAgcmV0dXJuIGdldE5vZGUodGhpcyk7XG4gIH0sXG5cbiAgLyoqXG4gICAq
IERlc3Ryb3lzIGFsbCBldmVudCByZWdpc3RyYXRpb25zIGZvciB0aGlzIGluc3RhbmNlLiBEb2Vz
IG5vdCByZW1vdmUgZnJvbVxuICAgKiB0aGUgRE9NLiBUaGF0IG11c3QgYmUgZG9uZSBieSB0aGUg
cGFyZW50LlxuICAgKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHVubW91bnRDb21wb25lbnQ6
IGZ1bmN0aW9uIChzYWZlbHkpIHtcbiAgICBzd2l0Y2ggKHRoaXMuX3RhZykge1xuICAgICAgY2Fz
ZSAnYXVkaW8nOlxuICAgICAgY2FzZSAnZm9ybSc6XG4gICAgICBjYXNlICdpZnJhbWUnOlxuICAg
ICAgY2FzZSAnaW1nJzpcbiAgICAgIGNhc2UgJ2xpbmsnOlxuICAgICAgY2FzZSAnb2JqZWN0Jzpc
biAgICAgIGNhc2UgJ3NvdXJjZSc6XG4gICAgICBjYXNlICd2aWRlbyc6XG4gICAgICAgIHZhciBs
aXN0ZW5lcnMgPSB0aGlzLl93cmFwcGVyU3RhdGUubGlzdGVuZXJzO1xuICAgICAgICBpZiAobGlz
dGVuZXJzKSB7XG4gICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsaXN0ZW5lcnMubGVuZ3Ro
OyBpKyspIHtcbiAgICAgICAgICAgIGxpc3RlbmVyc1tpXS5yZW1vdmUoKTtcbiAgICAgICAgICB9
XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdpbnB1dCc6XG4gICAgICBj
YXNlICd0ZXh0YXJlYSc6XG4gICAgICAgIGlucHV0VmFsdWVUcmFja2luZy5zdG9wVHJhY2tpbmco
dGhpcyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnaHRtbCc6XG4gICAgICBjYXNlICdo
ZWFkJzpcbiAgICAgIGNhc2UgJ2JvZHknOlxuICAgICAgICAvKipcbiAgICAgICAgICogQ29tcG9u
ZW50cyBsaWtlIDxodG1sPiA8aGVhZD4gYW5kIDxib2R5PiBjYW4ndCBiZSByZW1vdmVkIG9yIGFk
ZGVkXG4gICAgICAgICAqIGVhc2lseSBpbiBhIGNyb3NzLWJyb3dzZXIgd2F5LCBob3dldmVyIGl0
J3MgdmFsdWFibGUgdG8gYmUgYWJsZSB0b1xuICAgICAgICAgKiB0YWtlIGFkdmFudGFnZSBvZiBS
ZWFjdCdzIHJlY29uY2lsaWF0aW9uIGZvciBzdHlsaW5nIGFuZCA8dGl0bGU+XG4gICAgICAgICAq
IG1hbmFnZW1lbnQuIFNvIHdlIGp1c3QgZG9jdW1lbnQgaXQgYW5kIHRocm93IGluIGRhbmdlcm91
cyBjYXNlcy5cbiAgICAgICAgICovXG4gICAgICAgICFmYWxzZSA/IHByb2Nlc3MuZW52Lk5PREVf
RU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICc8JXM+IHRyaWVkIHRvIHVu
bW91bnQuIEJlY2F1c2Ugb2YgY3Jvc3MtYnJvd3NlciBxdWlya3MgaXQgaXMgaW1wb3NzaWJsZSB0
byB1bm1vdW50IHNvbWUgdG9wLWxldmVsIGNvbXBvbmVudHMgKGVnIDxodG1sPiwgPGhlYWQ+LCBh
bmQgPGJvZHk+KSByZWxpYWJseSBhbmQgZWZmaWNpZW50bHkuIFRvIGZpeCB0aGlzLCBoYXZlIGEg
c2luZ2xlIHRvcC1sZXZlbCBjb21wb25lbnQgdGhhdCBuZXZlciB1bm1vdW50cyByZW5kZXIgdGhl
c2UgZWxlbWVudHMuJywgdGhpcy5fdGFnKSA6IF9wcm9kSW52YXJpYW50KCc2NicsIHRoaXMuX3Rh
ZykgOiB2b2lkIDA7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIHRoaXMudW5tb3VudENo
aWxkcmVuKHNhZmVseSk7XG4gICAgUmVhY3RET01Db21wb25lbnRUcmVlLnVuY2FjaGVOb2RlKHRo
aXMpO1xuICAgIEV2ZW50UGx1Z2luSHViLmRlbGV0ZUFsbExpc3RlbmVycyh0aGlzKTtcbiAgICB0
aGlzLl9yb290Tm9kZUlEID0gMDtcbiAgICB0aGlzLl9kb21JRCA9IDA7XG4gICAgdGhpcy5fd3Jh
cHBlclN0YXRlID0gbnVsbDtcblxuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3By
b2R1Y3Rpb24nKSB7XG4gICAgICBzZXRBbmRWYWxpZGF0ZUNvbnRlbnRDaGlsZERldi5jYWxsKHRo
aXMsIG51bGwpO1xuICAgIH1cbiAgfSxcblxuICBnZXRQdWJsaWNJbnN0YW5jZTogZnVuY3Rpb24g
KCkge1xuICAgIHJldHVybiBnZXROb2RlKHRoaXMpO1xuICB9XG59O1xuXG5fYXNzaWduKFJlYWN0
RE9NQ29tcG9uZW50LnByb3RvdHlwZSwgUmVhY3RET01Db21wb25lbnQuTWl4aW4sIFJlYWN0TXVs
dGlDaGlsZC5NaXhpbik7XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RET01Db21wb25lbnQ7XG5c
blxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3Qt
ZG9tL2xpYi9SZWFjdERPTUNvbXBvbmVudC5qc1xuICoqIG1vZHVsZSBpZCA9IDEzOFxuICoqIG1v
ZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBG
YWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJj
ZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0
aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2Ug
dHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91
bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICovXG5c
bid1c2Ugc3RyaWN0JztcblxudmFyIHZhbGlkYXRlRE9NTmVzdGluZyA9IHJlcXVpcmUoJy4vdmFs
aWRhdGVET01OZXN0aW5nJyk7XG5cbnZhciBET0NfTk9ERV9UWVBFID0gOTtcblxuZnVuY3Rpb24g
UmVhY3RET01Db250YWluZXJJbmZvKHRvcExldmVsV3JhcHBlciwgbm9kZSkge1xuICB2YXIgaW5m
byA9IHtcbiAgICBfdG9wTGV2ZWxXcmFwcGVyOiB0b3BMZXZlbFdyYXBwZXIsXG4gICAgX2lkQ291
bnRlcjogMSxcbiAgICBfb3duZXJEb2N1bWVudDogbm9kZSA/IG5vZGUubm9kZVR5cGUgPT09IERP
Q19OT0RFX1RZUEUgPyBub2RlIDogbm9kZS5vd25lckRvY3VtZW50IDogbnVsbCxcbiAgICBfbm9k
ZTogbm9kZSxcbiAgICBfdGFnOiBub2RlID8gbm9kZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpIDog
bnVsbCxcbiAgICBfbmFtZXNwYWNlVVJJOiBub2RlID8gbm9kZS5uYW1lc3BhY2VVUkkgOiBudWxs
XG4gIH07XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4g
ICAgaW5mby5fYW5jZXN0b3JJbmZvID0gbm9kZSA/IHZhbGlkYXRlRE9NTmVzdGluZy51cGRhdGVk
QW5jZXN0b3JJbmZvKG51bGwsIGluZm8uX3RhZywgbnVsbCkgOiBudWxsO1xuICB9XG4gIHJldHVy
biBpbmZvO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0RE9NQ29udGFpbmVySW5mbztcblxu
XG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFjdC1k
b20vbGliL1JlYWN0RE9NQ29udGFpbmVySW5mby5qc1xuICoqIG1vZHVsZSBpZCA9IDEzOVxuICoq
IG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50
LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNv
dXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBp
biB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3Vy
Y2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUg
Zm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICov
XG5cbid1c2Ugc3RyaWN0JztcblxudmFyIF9hc3NpZ24gPSByZXF1aXJlKCdvYmplY3QtYXNzaWdu
Jyk7XG5cbnZhciBET01MYXp5VHJlZSA9IHJlcXVpcmUoJy4vRE9NTGF6eVRyZWUnKTtcbnZhciBS
ZWFjdERPTUNvbXBvbmVudFRyZWUgPSByZXF1aXJlKCcuL1JlYWN0RE9NQ29tcG9uZW50VHJlZScp
O1xuXG52YXIgUmVhY3RET01FbXB0eUNvbXBvbmVudCA9IGZ1bmN0aW9uIChpbnN0YW50aWF0ZSkg
e1xuICAvLyBSZWFjdENvbXBvc2l0ZUNvbXBvbmVudCB1c2VzIHRoaXM6XG4gIHRoaXMuX2N1cnJl
bnRFbGVtZW50ID0gbnVsbDtcbiAgLy8gUmVhY3RET01Db21wb25lbnRUcmVlIHVzZXMgdGhlc2U6
XG4gIHRoaXMuX2hvc3ROb2RlID0gbnVsbDtcbiAgdGhpcy5faG9zdFBhcmVudCA9IG51bGw7XG4g
IHRoaXMuX2hvc3RDb250YWluZXJJbmZvID0gbnVsbDtcbiAgdGhpcy5fZG9tSUQgPSAwO1xufTtc
bl9hc3NpZ24oUmVhY3RET01FbXB0eUNvbXBvbmVudC5wcm90b3R5cGUsIHtcbiAgbW91bnRDb21w
b25lbnQ6IGZ1bmN0aW9uICh0cmFuc2FjdGlvbiwgaG9zdFBhcmVudCwgaG9zdENvbnRhaW5lcklu
Zm8sIGNvbnRleHQpIHtcbiAgICB2YXIgZG9tSUQgPSBob3N0Q29udGFpbmVySW5mby5faWRDb3Vu
dGVyKys7XG4gICAgdGhpcy5fZG9tSUQgPSBkb21JRDtcbiAgICB0aGlzLl9ob3N0UGFyZW50ID0g
aG9zdFBhcmVudDtcbiAgICB0aGlzLl9ob3N0Q29udGFpbmVySW5mbyA9IGhvc3RDb250YWluZXJJ
bmZvO1xuXG4gICAgdmFyIG5vZGVWYWx1ZSA9ICcgcmVhY3QtZW1wdHk6ICcgKyB0aGlzLl9kb21J
RCArICcgJztcbiAgICBpZiAodHJhbnNhY3Rpb24udXNlQ3JlYXRlRWxlbWVudCkge1xuICAgICAg
dmFyIG93bmVyRG9jdW1lbnQgPSBob3N0Q29udGFpbmVySW5mby5fb3duZXJEb2N1bWVudDtcbiAg
ICAgIHZhciBub2RlID0gb3duZXJEb2N1bWVudC5jcmVhdGVDb21tZW50KG5vZGVWYWx1ZSk7XG4g
ICAgICBSZWFjdERPTUNvbXBvbmVudFRyZWUucHJlY2FjaGVOb2RlKHRoaXMsIG5vZGUpO1xuICAg
ICAgcmV0dXJuIERPTUxhenlUcmVlKG5vZGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodHJh
bnNhY3Rpb24ucmVuZGVyVG9TdGF0aWNNYXJrdXApIHtcbiAgICAgICAgLy8gTm9ybWFsbHkgd2Un
ZCBpbnNlcnQgYSBjb21tZW50IG5vZGUsIGJ1dCBzaW5jZSB0aGlzIGlzIGEgc2l0dWF0aW9uXG4g
ICAgICAgIC8vIHdoZXJlIFJlYWN0IHdvbid0IHRha2Ugb3ZlciAoc3RhdGljIHBhZ2VzKSwgd2Ug
Y2FuIHNpbXBseSByZXR1cm5cbiAgICAgICAgLy8gbm90aGluZy5cbiAgICAgICAgcmV0dXJuICcn
O1xuICAgICAgfVxuICAgICAgcmV0dXJuICc8IS0tJyArIG5vZGVWYWx1ZSArICctLT4nO1xuICAg
IH1cbiAgfSxcbiAgcmVjZWl2ZUNvbXBvbmVudDogZnVuY3Rpb24gKCkge30sXG4gIGdldEhvc3RO
b2RlOiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIFJlYWN0RE9NQ29tcG9uZW50VHJlZS5nZXRO
b2RlRnJvbUluc3RhbmNlKHRoaXMpO1xuICB9LFxuICB1bm1vdW50Q29tcG9uZW50OiBmdW5jdGlv
biAoKSB7XG4gICAgUmVhY3RET01Db21wb25lbnRUcmVlLnVuY2FjaGVOb2RlKHRoaXMpO1xuICB9
XG59KTtcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdERPTUVtcHR5Q29tcG9uZW50O1xuXG5cbi8q
KioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0LWRvbS9s
aWIvUmVhY3RET01FbXB0eUNvbXBvbmVudC5qc1xuICoqIG1vZHVsZSBpZCA9IDE0MFxuICoqIG1v
ZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBG
YWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJj
ZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0
aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2Ug
dHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91
bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICovXG5c
bid1c2Ugc3RyaWN0JztcblxudmFyIFJlYWN0RE9NRmVhdHVyZUZsYWdzID0ge1xuICB1c2VDcmVh
dGVFbGVtZW50OiB0cnVlLFxuICB1c2VGaWJlcjogZmFsc2Vcbn07XG5cbm1vZHVsZS5leHBvcnRz
ID0gUmVhY3RET01GZWF0dXJlRmxhZ3M7XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VC
UEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3QtZG9tL2xpYi9SZWFjdERPTUZlYXR1cmVGbGFncy5q
c1xuICoqIG1vZHVsZSBpZCA9IDE0MVxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoq
XG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0
cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRo
ZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUg
cm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxu
ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0
aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIERPTUNo
aWxkcmVuT3BlcmF0aW9ucyA9IHJlcXVpcmUoJy4vRE9NQ2hpbGRyZW5PcGVyYXRpb25zJyk7XG52
YXIgUmVhY3RET01Db21wb25lbnRUcmVlID0gcmVxdWlyZSgnLi9SZWFjdERPTUNvbXBvbmVudFRy
ZWUnKTtcblxuLyoqXG4gKiBPcGVyYXRpb25zIHVzZWQgdG8gcHJvY2VzcyB1cGRhdGVzIHRvIERP
TSBub2Rlcy5cbiAqL1xudmFyIFJlYWN0RE9NSURPcGVyYXRpb25zID0ge1xuICAvKipcbiAgICog
VXBkYXRlcyBhIGNvbXBvbmVudCdzIGNoaWxkcmVuIGJ5IHByb2Nlc3NpbmcgYSBzZXJpZXMgb2Yg
dXBkYXRlcy5cbiAgICpcbiAgICogQHBhcmFtIHthcnJheTxvYmplY3Q+fSB1cGRhdGVzIExpc3Qg
b2YgdXBkYXRlIGNvbmZpZ3VyYXRpb25zLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIGRhbmdl
cm91c2x5UHJvY2Vzc0NoaWxkcmVuVXBkYXRlczogZnVuY3Rpb24gKHBhcmVudEluc3QsIHVwZGF0
ZXMpIHtcbiAgICB2YXIgbm9kZSA9IFJlYWN0RE9NQ29tcG9uZW50VHJlZS5nZXROb2RlRnJvbUlu
c3RhbmNlKHBhcmVudEluc3QpO1xuICAgIERPTUNoaWxkcmVuT3BlcmF0aW9ucy5wcm9jZXNzVXBk
YXRlcyhub2RlLCB1cGRhdGVzKTtcbiAgfVxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdERP
TUlET3BlcmF0aW9ucztcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RF
UlxuICoqIC4vfi9yZWFjdC1kb20vbGliL1JlYWN0RE9NSURPcGVyYXRpb25zLmpzXG4gKiogbW9k
dWxlIGlkID0gMTQyXG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENvcHly
aWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVk
LlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHls
ZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVj
dG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRl
bnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRp
cmVjdG9yeS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgX3Byb2RJbnZhcmlhbnQg
PSByZXF1aXJlKCcuL3JlYWN0UHJvZEludmFyaWFudCcpLFxuICAgIF9hc3NpZ24gPSByZXF1aXJl
KCdvYmplY3QtYXNzaWduJyk7XG5cbnZhciBET01Qcm9wZXJ0eU9wZXJhdGlvbnMgPSByZXF1aXJl
KCcuL0RPTVByb3BlcnR5T3BlcmF0aW9ucycpO1xudmFyIExpbmtlZFZhbHVlVXRpbHMgPSByZXF1
aXJlKCcuL0xpbmtlZFZhbHVlVXRpbHMnKTtcbnZhciBSZWFjdERPTUNvbXBvbmVudFRyZWUgPSBy
ZXF1aXJlKCcuL1JlYWN0RE9NQ29tcG9uZW50VHJlZScpO1xudmFyIFJlYWN0VXBkYXRlcyA9IHJl
cXVpcmUoJy4vUmVhY3RVcGRhdGVzJyk7XG5cbnZhciBpbnZhcmlhbnQgPSByZXF1aXJlKCdmYmpz
L2xpYi9pbnZhcmlhbnQnKTtcbnZhciB3YXJuaW5nID0gcmVxdWlyZSgnZmJqcy9saWIvd2Fybmlu
ZycpO1xuXG52YXIgZGlkV2FyblZhbHVlTGluayA9IGZhbHNlO1xudmFyIGRpZFdhcm5DaGVja2Vk
TGluayA9IGZhbHNlO1xudmFyIGRpZFdhcm5WYWx1ZURlZmF1bHRWYWx1ZSA9IGZhbHNlO1xudmFy
IGRpZFdhcm5DaGVja2VkRGVmYXVsdENoZWNrZWQgPSBmYWxzZTtcbnZhciBkaWRXYXJuQ29udHJv
bGxlZFRvVW5jb250cm9sbGVkID0gZmFsc2U7XG52YXIgZGlkV2FyblVuY29udHJvbGxlZFRvQ29u
dHJvbGxlZCA9IGZhbHNlO1xuXG5mdW5jdGlvbiBmb3JjZVVwZGF0ZUlmTW91bnRlZCgpIHtcbiAg
aWYgKHRoaXMuX3Jvb3ROb2RlSUQpIHtcbiAgICAvLyBET00gY29tcG9uZW50IGlzIHN0aWxsIG1v
dW50ZWQ7IHVwZGF0ZVxuICAgIFJlYWN0RE9NSW5wdXQudXBkYXRlV3JhcHBlcih0aGlzKTtcbiAg
fVxufVxuXG5mdW5jdGlvbiBpc0NvbnRyb2xsZWQocHJvcHMpIHtcbiAgdmFyIHVzZXNDaGVja2Vk
ID0gcHJvcHMudHlwZSA9PT0gJ2NoZWNrYm94JyB8fCBwcm9wcy50eXBlID09PSAncmFkaW8nO1xu
ICByZXR1cm4gdXNlc0NoZWNrZWQgPyBwcm9wcy5jaGVja2VkICE9IG51bGwgOiBwcm9wcy52YWx1
ZSAhPSBudWxsO1xufVxuXG4vKipcbiAqIEltcGxlbWVudHMgYW4gPGlucHV0PiBob3N0IGNvbXBv
bmVudCB0aGF0IGFsbG93cyBzZXR0aW5nIHRoZXNlIG9wdGlvbmFsXG4gKiBwcm9wczogYGNoZWNr
ZWRgLCBgdmFsdWVgLCBgZGVmYXVsdENoZWNrZWRgLCBhbmQgYGRlZmF1bHRWYWx1ZWAuXG4gKlxu
ICogSWYgYGNoZWNrZWRgIG9yIGB2YWx1ZWAgYXJlIG5vdCBzdXBwbGllZCAob3IgbnVsbC91bmRl
ZmluZWQpLCB1c2VyIGFjdGlvbnNcbiAqIHRoYXQgYWZmZWN0IHRoZSBjaGVja2VkIHN0YXRlIG9y
IHZhbHVlIHdpbGwgdHJpZ2dlciB1cGRhdGVzIHRvIHRoZSBlbGVtZW50LlxuICpcbiAqIElmIHRo
ZXkgYXJlIHN1cHBsaWVkIChhbmQgbm90IG51bGwvdW5kZWZpbmVkKSwgdGhlIHJlbmRlcmVkIGVs
ZW1lbnQgd2lsbCBub3RcbiAqIHRyaWdnZXIgdXBkYXRlcyB0byB0aGUgZWxlbWVudC4gSW5zdGVh
ZCwgdGhlIHByb3BzIG11c3QgY2hhbmdlIGluIG9yZGVyIGZvclxuICogdGhlIHJlbmRlcmVkIGVs
ZW1lbnQgdG8gYmUgdXBkYXRlZC5cbiAqXG4gKiBUaGUgcmVuZGVyZWQgZWxlbWVudCB3aWxsIGJl
IGluaXRpYWxpemVkIGFzIHVuY2hlY2tlZCAob3IgYGRlZmF1bHRDaGVja2VkYClcbiAqIHdpdGgg
YW4gZW1wdHkgdmFsdWUgKG9yIGBkZWZhdWx0VmFsdWVgKS5cbiAqXG4gKiBAc2VlIGh0dHA6Ly93
d3cudzMub3JnL1RSLzIwMTIvV0QtaHRtbDUtMjAxMjEwMjUvdGhlLWlucHV0LWVsZW1lbnQuaHRt
bFxuICovXG52YXIgUmVhY3RET01JbnB1dCA9IHtcbiAgZ2V0SG9zdFByb3BzOiBmdW5jdGlvbiAo
aW5zdCwgcHJvcHMpIHtcbiAgICB2YXIgdmFsdWUgPSBMaW5rZWRWYWx1ZVV0aWxzLmdldFZhbHVl
KHByb3BzKTtcbiAgICB2YXIgY2hlY2tlZCA9IExpbmtlZFZhbHVlVXRpbHMuZ2V0Q2hlY2tlZChw
cm9wcyk7XG5cbiAgICB2YXIgaG9zdFByb3BzID0gX2Fzc2lnbih7XG4gICAgICAvLyBNYWtlIHN1
cmUgd2Ugc2V0IC50eXBlIGJlZm9yZSBhbnkgb3RoZXIgcHJvcGVydGllcyAoc2V0dGluZyAudmFs
dWVcbiAgICAgIC8vIGJlZm9yZSAudHlwZSBtZWFucyAudmFsdWUgaXMgbG9zdCBpbiBJRTExIGFu
ZCBiZWxvdylcbiAgICAgIHR5cGU6IHVuZGVmaW5lZCxcbiAgICAgIC8vIE1ha2Ugc3VyZSB3ZSBz
ZXQgLnN0ZXAgYmVmb3JlIC52YWx1ZSAoc2V0dGluZyAudmFsdWUgYmVmb3JlIC5zdGVwXG4gICAg
ICAvLyBtZWFucyAudmFsdWUgaXMgcm91bmRlZCBvbiBtb3VudCwgYmFzZWQgdXBvbiBzdGVwIHBy
ZWNpc2lvbilcbiAgICAgIHN0ZXA6IHVuZGVmaW5lZCxcbiAgICAgIC8vIE1ha2Ugc3VyZSB3ZSBz
ZXQgLm1pbiAmIC5tYXggYmVmb3JlIC52YWx1ZSAodG8gZW5zdXJlIHByb3BlciBvcmRlclxuICAg
ICAgLy8gaW4gY29ybmVyIGNhc2VzIHN1Y2ggYXMgbWluIG9yIG1heCBkZXJpdmluZyBmcm9tIHZh
bHVlLCBlLmcuIElzc3VlICM3MTcwKVxuICAgICAgbWluOiB1bmRlZmluZWQsXG4gICAgICBtYXg6
IHVuZGVmaW5lZFxuICAgIH0sIHByb3BzLCB7XG4gICAgICBkZWZhdWx0Q2hlY2tlZDogdW5kZWZp
bmVkLFxuICAgICAgZGVmYXVsdFZhbHVlOiB1bmRlZmluZWQsXG4gICAgICB2YWx1ZTogdmFsdWUg
IT0gbnVsbCA/IHZhbHVlIDogaW5zdC5fd3JhcHBlclN0YXRlLmluaXRpYWxWYWx1ZSxcbiAgICAg
IGNoZWNrZWQ6IGNoZWNrZWQgIT0gbnVsbCA/IGNoZWNrZWQgOiBpbnN0Ll93cmFwcGVyU3RhdGUu
aW5pdGlhbENoZWNrZWQsXG4gICAgICBvbkNoYW5nZTogaW5zdC5fd3JhcHBlclN0YXRlLm9uQ2hh
bmdlXG4gICAgfSk7XG5cbiAgICByZXR1cm4gaG9zdFByb3BzO1xuICB9LFxuXG4gIG1vdW50V3Jh
cHBlcjogZnVuY3Rpb24gKGluc3QsIHByb3BzKSB7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVf
RU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIExpbmtlZFZhbHVlVXRpbHMuY2hlY2tQcm9w
VHlwZXMoJ2lucHV0JywgcHJvcHMsIGluc3QuX2N1cnJlbnRFbGVtZW50Ll9vd25lcik7XG5cbiAg
ICAgIHZhciBvd25lciA9IGluc3QuX2N1cnJlbnRFbGVtZW50Ll9vd25lcjtcblxuICAgICAgaWYg
KHByb3BzLnZhbHVlTGluayAhPT0gdW5kZWZpbmVkICYmICFkaWRXYXJuVmFsdWVMaW5rKSB7XG4g
ICAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZh
bHNlLCAnYHZhbHVlTGlua2AgcHJvcCBvbiBgaW5wdXRgIGlzIGRlcHJlY2F0ZWQ7IHNldCBgdmFs
dWVgIGFuZCBgb25DaGFuZ2VgIGluc3RlYWQuJykgOiB2b2lkIDA7XG4gICAgICAgIGRpZFdhcm5W
YWx1ZUxpbmsgPSB0cnVlO1xuICAgICAgfVxuICAgICAgaWYgKHByb3BzLmNoZWNrZWRMaW5rICE9
PSB1bmRlZmluZWQgJiYgIWRpZFdhcm5DaGVja2VkTGluaykge1xuICAgICAgICBwcm9jZXNzLmVu
di5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ2BjaGVja2VkTGlu
a2AgcHJvcCBvbiBgaW5wdXRgIGlzIGRlcHJlY2F0ZWQ7IHNldCBgdmFsdWVgIGFuZCBgb25DaGFu
Z2VgIGluc3RlYWQuJykgOiB2b2lkIDA7XG4gICAgICAgIGRpZFdhcm5DaGVja2VkTGluayA9IHRy
dWU7XG4gICAgICB9XG4gICAgICBpZiAocHJvcHMuY2hlY2tlZCAhPT0gdW5kZWZpbmVkICYmIHBy
b3BzLmRlZmF1bHRDaGVja2VkICE9PSB1bmRlZmluZWQgJiYgIWRpZFdhcm5DaGVja2VkRGVmYXVs
dENoZWNrZWQpIHtcbiAgICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9u
JyA/IHdhcm5pbmcoZmFsc2UsICclcyBjb250YWlucyBhbiBpbnB1dCBvZiB0eXBlICVzIHdpdGgg
Ym90aCBjaGVja2VkIGFuZCBkZWZhdWx0Q2hlY2tlZCBwcm9wcy4gJyArICdJbnB1dCBlbGVtZW50
cyBtdXN0IGJlIGVpdGhlciBjb250cm9sbGVkIG9yIHVuY29udHJvbGxlZCAnICsgJyhzcGVjaWZ5
IGVpdGhlciB0aGUgY2hlY2tlZCBwcm9wLCBvciB0aGUgZGVmYXVsdENoZWNrZWQgcHJvcCwgYnV0
IG5vdCAnICsgJ2JvdGgpLiBEZWNpZGUgYmV0d2VlbiB1c2luZyBhIGNvbnRyb2xsZWQgb3IgdW5j
b250cm9sbGVkIGlucHV0ICcgKyAnZWxlbWVudCBhbmQgcmVtb3ZlIG9uZSBvZiB0aGVzZSBwcm9w
cy4gTW9yZSBpbmZvOiAnICsgJ2h0dHBzOi8vZmIubWUvcmVhY3QtY29udHJvbGxlZC1jb21wb25l
bnRzJywgb3duZXIgJiYgb3duZXIuZ2V0TmFtZSgpIHx8ICdBIGNvbXBvbmVudCcsIHByb3BzLnR5
cGUpIDogdm9pZCAwO1xuICAgICAgICBkaWRXYXJuQ2hlY2tlZERlZmF1bHRDaGVja2VkID0gdHJ1
ZTtcbiAgICAgIH1cbiAgICAgIGlmIChwcm9wcy52YWx1ZSAhPT0gdW5kZWZpbmVkICYmIHByb3Bz
LmRlZmF1bHRWYWx1ZSAhPT0gdW5kZWZpbmVkICYmICFkaWRXYXJuVmFsdWVEZWZhdWx0VmFsdWUp
IHtcbiAgICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5p
bmcoZmFsc2UsICclcyBjb250YWlucyBhbiBpbnB1dCBvZiB0eXBlICVzIHdpdGggYm90aCB2YWx1
ZSBhbmQgZGVmYXVsdFZhbHVlIHByb3BzLiAnICsgJ0lucHV0IGVsZW1lbnRzIG11c3QgYmUgZWl0
aGVyIGNvbnRyb2xsZWQgb3IgdW5jb250cm9sbGVkICcgKyAnKHNwZWNpZnkgZWl0aGVyIHRoZSB2
YWx1ZSBwcm9wLCBvciB0aGUgZGVmYXVsdFZhbHVlIHByb3AsIGJ1dCBub3QgJyArICdib3RoKS4g
RGVjaWRlIGJldHdlZW4gdXNpbmcgYSBjb250cm9sbGVkIG9yIHVuY29udHJvbGxlZCBpbnB1dCAn
ICsgJ2VsZW1lbnQgYW5kIHJlbW92ZSBvbmUgb2YgdGhlc2UgcHJvcHMuIE1vcmUgaW5mbzogJyAr
ICdodHRwczovL2ZiLm1lL3JlYWN0LWNvbnRyb2xsZWQtY29tcG9uZW50cycsIG93bmVyICYmIG93
bmVyLmdldE5hbWUoKSB8fCAnQSBjb21wb25lbnQnLCBwcm9wcy50eXBlKSA6IHZvaWQgMDtcbiAg
ICAgICAgZGlkV2FyblZhbHVlRGVmYXVsdFZhbHVlID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5c
biAgICB2YXIgZGVmYXVsdFZhbHVlID0gcHJvcHMuZGVmYXVsdFZhbHVlO1xuICAgIGluc3QuX3dy
YXBwZXJTdGF0ZSA9IHtcbiAgICAgIGluaXRpYWxDaGVja2VkOiBwcm9wcy5jaGVja2VkICE9IG51
bGwgPyBwcm9wcy5jaGVja2VkIDogcHJvcHMuZGVmYXVsdENoZWNrZWQsXG4gICAgICBpbml0aWFs
VmFsdWU6IHByb3BzLnZhbHVlICE9IG51bGwgPyBwcm9wcy52YWx1ZSA6IGRlZmF1bHRWYWx1ZSxc
biAgICAgIGxpc3RlbmVyczogbnVsbCxcbiAgICAgIG9uQ2hhbmdlOiBfaGFuZGxlQ2hhbmdlLmJp
bmQoaW5zdCksXG4gICAgICBjb250cm9sbGVkOiBpc0NvbnRyb2xsZWQocHJvcHMpXG4gICAgfTtc
biAgfSxcblxuICB1cGRhdGVXcmFwcGVyOiBmdW5jdGlvbiAoaW5zdCkge1xuICAgIHZhciBwcm9w
cyA9IGluc3QuX2N1cnJlbnRFbGVtZW50LnByb3BzO1xuXG4gICAgaWYgKHByb2Nlc3MuZW52Lk5P
REVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIHZhciBjb250cm9sbGVkID0gaXNDb250
cm9sbGVkKHByb3BzKTtcbiAgICAgIHZhciBvd25lciA9IGluc3QuX2N1cnJlbnRFbGVtZW50Ll9v
d25lcjtcblxuICAgICAgaWYgKCFpbnN0Ll93cmFwcGVyU3RhdGUuY29udHJvbGxlZCAmJiBjb250
cm9sbGVkICYmICFkaWRXYXJuVW5jb250cm9sbGVkVG9Db250cm9sbGVkKSB7XG4gICAgICAgIHBy
b2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnJXMg
aXMgY2hhbmdpbmcgYW4gdW5jb250cm9sbGVkIGlucHV0IG9mIHR5cGUgJXMgdG8gYmUgY29udHJv
bGxlZC4gJyArICdJbnB1dCBlbGVtZW50cyBzaG91bGQgbm90IHN3aXRjaCBmcm9tIHVuY29udHJv
bGxlZCB0byBjb250cm9sbGVkIChvciB2aWNlIHZlcnNhKS4gJyArICdEZWNpZGUgYmV0d2VlbiB1
c2luZyBhIGNvbnRyb2xsZWQgb3IgdW5jb250cm9sbGVkIGlucHV0ICcgKyAnZWxlbWVudCBmb3Ig
dGhlIGxpZmV0aW1lIG9mIHRoZSBjb21wb25lbnQuIE1vcmUgaW5mbzogaHR0cHM6Ly9mYi5tZS9y
ZWFjdC1jb250cm9sbGVkLWNvbXBvbmVudHMnLCBvd25lciAmJiBvd25lci5nZXROYW1lKCkgfHwg
J0EgY29tcG9uZW50JywgcHJvcHMudHlwZSkgOiB2b2lkIDA7XG4gICAgICAgIGRpZFdhcm5VbmNv
bnRyb2xsZWRUb0NvbnRyb2xsZWQgPSB0cnVlO1xuICAgICAgfVxuICAgICAgaWYgKGluc3QuX3dy
YXBwZXJTdGF0ZS5jb250cm9sbGVkICYmICFjb250cm9sbGVkICYmICFkaWRXYXJuQ29udHJvbGxl
ZFRvVW5jb250cm9sbGVkKSB7XG4gICAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJv
ZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnJXMgaXMgY2hhbmdpbmcgYSBjb250cm9sbGVkIGlu
cHV0IG9mIHR5cGUgJXMgdG8gYmUgdW5jb250cm9sbGVkLiAnICsgJ0lucHV0IGVsZW1lbnRzIHNo
b3VsZCBub3Qgc3dpdGNoIGZyb20gY29udHJvbGxlZCB0byB1bmNvbnRyb2xsZWQgKG9yIHZpY2Ug
dmVyc2EpLiAnICsgJ0RlY2lkZSBiZXR3ZWVuIHVzaW5nIGEgY29udHJvbGxlZCBvciB1bmNvbnRy
b2xsZWQgaW5wdXQgJyArICdlbGVtZW50IGZvciB0aGUgbGlmZXRpbWUgb2YgdGhlIGNvbXBvbmVu
dC4gTW9yZSBpbmZvOiBodHRwczovL2ZiLm1lL3JlYWN0LWNvbnRyb2xsZWQtY29tcG9uZW50cycs
IG93bmVyICYmIG93bmVyLmdldE5hbWUoKSB8fCAnQSBjb21wb25lbnQnLCBwcm9wcy50eXBlKSA6
IHZvaWQgMDtcbiAgICAgICAgZGlkV2FybkNvbnRyb2xsZWRUb1VuY29udHJvbGxlZCA9IHRydWU7
XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gVE9ETzogU2hvdWxkbid0IHRoaXMgYmUgZ2V0Q2hl
Y2tlZChwcm9wcyk/XG4gICAgdmFyIGNoZWNrZWQgPSBwcm9wcy5jaGVja2VkO1xuICAgIGlmIChj
aGVja2VkICE9IG51bGwpIHtcbiAgICAgIERPTVByb3BlcnR5T3BlcmF0aW9ucy5zZXRWYWx1ZUZv
clByb3BlcnR5KFJlYWN0RE9NQ29tcG9uZW50VHJlZS5nZXROb2RlRnJvbUluc3RhbmNlKGluc3Qp
LCAnY2hlY2tlZCcsIGNoZWNrZWQgfHwgZmFsc2UpO1xuICAgIH1cblxuICAgIHZhciBub2RlID0g
UmVhY3RET01Db21wb25lbnRUcmVlLmdldE5vZGVGcm9tSW5zdGFuY2UoaW5zdCk7XG4gICAgdmFy
IHZhbHVlID0gTGlua2VkVmFsdWVVdGlscy5nZXRWYWx1ZShwcm9wcyk7XG4gICAgaWYgKHZhbHVl
ICE9IG51bGwpIHtcbiAgICAgIGlmICh2YWx1ZSA9PT0gMCAmJiBub2RlLnZhbHVlID09PSAnJykg
e1xuICAgICAgICBub2RlLnZhbHVlID0gJzAnO1xuICAgICAgICAvLyBOb3RlOiBJRTkgcmVwb3J0
cyBhIG51bWJlciBpbnB1dHMgYXMgJ3RleHQnLCBzbyBjaGVjayBwcm9wcyBpbnN0ZWFkLlxuICAg
ICAgfSBlbHNlIGlmIChwcm9wcy50eXBlID09PSAnbnVtYmVyJykge1xuICAgICAgICAvLyBTaW11
bGF0ZSBgaW5wdXQudmFsdWVBc051bWJlcmAuIElFOSBkb2VzIG5vdCBzdXBwb3J0IGl0XG4gICAg
ICAgIHZhciB2YWx1ZUFzTnVtYmVyID0gcGFyc2VGbG9hdChub2RlLnZhbHVlLCAxMCkgfHwgMDtc
blxuICAgICAgICBpZiAoXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICAg
ICAgICB2YWx1ZSAhPSB2YWx1ZUFzTnVtYmVyIHx8XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxl
LW5leHQtbGluZVxuICAgICAgICB2YWx1ZSA9PSB2YWx1ZUFzTnVtYmVyICYmIG5vZGUudmFsdWUg
IT0gdmFsdWUpIHtcbiAgICAgICAgICAvLyBDYXN0IGB2YWx1ZWAgdG8gYSBzdHJpbmcgdG8gZW5z
dXJlIHRoZSB2YWx1ZSBpcyBzZXQgY29ycmVjdGx5LiBXaGlsZVxuICAgICAgICAgIC8vIGJyb3dz
ZXJzIHR5cGljYWxseSBkbyB0aGlzIGFzIG5lY2Vzc2FyeSwganNkb20gZG9lc24ndC5cbiAgICAg
ICAgICBub2RlLnZhbHVlID0gJycgKyB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlm
IChub2RlLnZhbHVlICE9PSAnJyArIHZhbHVlKSB7XG4gICAgICAgIC8vIENhc3QgYHZhbHVlYCB0
byBhIHN0cmluZyB0byBlbnN1cmUgdGhlIHZhbHVlIGlzIHNldCBjb3JyZWN0bHkuIFdoaWxlXG4g
ICAgICAgIC8vIGJyb3dzZXJzIHR5cGljYWxseSBkbyB0aGlzIGFzIG5lY2Vzc2FyeSwganNkb20g
ZG9lc24ndC5cbiAgICAgICAgbm9kZS52YWx1ZSA9ICcnICsgdmFsdWU7XG4gICAgICB9XG4gICAg
fSBlbHNlIHtcbiAgICAgIGlmIChwcm9wcy52YWx1ZSA9PSBudWxsICYmIHByb3BzLmRlZmF1bHRW
YWx1ZSAhPSBudWxsKSB7XG4gICAgICAgIC8vIEluIENocm9tZSwgYXNzaWduaW5nIGRlZmF1bHRW
YWx1ZSB0byBjZXJ0YWluIGlucHV0IHR5cGVzIHRyaWdnZXJzIGlucHV0IHZhbGlkYXRpb24uXG4g
ICAgICAgIC8vIEZvciBudW1iZXIgaW5wdXRzLCB0aGUgZGlzcGxheSB2YWx1ZSBsb3NlcyB0cmFp
bGluZyBkZWNpbWFsIHBvaW50cy4gRm9yIGVtYWlsIGlucHV0cyxcbiAgICAgICAgLy8gQ2hyb21l
IHJhaXNlcyBcIlRoZSBzcGVjaWZpZWQgdmFsdWUgPHg+IGlzIG5vdCBhIHZhbGlkIGVtYWlsIGFk
ZHJlc3NcIi5cbiAgICAgICAgLy9cbiAgICAgICAgLy8gSGVyZSB3ZSBjaGVjayB0byBzZWUgaWYg
dGhlIGRlZmF1bHRWYWx1ZSBoYXMgYWN0dWFsbHkgY2hhbmdlZCwgYXZvaWRpbmcgdGhlc2UgcHJv
YmxlbXNcbiAgICAgICAgLy8gd2hlbiB0aGUgdXNlciBpcyBpbnB1dHRpbmcgdGV4dFxuICAgICAg
ICAvL1xuICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvaXNzdWVz
LzcyNTNcbiAgICAgICAgaWYgKG5vZGUuZGVmYXVsdFZhbHVlICE9PSAnJyArIHByb3BzLmRlZmF1
bHRWYWx1ZSkge1xuICAgICAgICAgIG5vZGUuZGVmYXVsdFZhbHVlID0gJycgKyBwcm9wcy5kZWZh
dWx0VmFsdWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChwcm9wcy5jaGVja2VkID09
IG51bGwgJiYgcHJvcHMuZGVmYXVsdENoZWNrZWQgIT0gbnVsbCkge1xuICAgICAgICBub2RlLmRl
ZmF1bHRDaGVja2VkID0gISFwcm9wcy5kZWZhdWx0Q2hlY2tlZDtcbiAgICAgIH1cbiAgICB9XG4g
IH0sXG5cbiAgcG9zdE1vdW50V3JhcHBlcjogZnVuY3Rpb24gKGluc3QpIHtcbiAgICB2YXIgcHJv
cHMgPSBpbnN0Ll9jdXJyZW50RWxlbWVudC5wcm9wcztcblxuICAgIC8vIFRoaXMgaXMgaW4gcG9z
dE1vdW50IGJlY2F1c2Ugd2UgbmVlZCBhY2Nlc3MgdG8gdGhlIERPTSBub2RlLCB3aGljaCBpcyBu
b3RcbiAgICAvLyBhdmFpbGFibGUgdW50aWwgYWZ0ZXIgdGhlIGNvbXBvbmVudCBoYXMgbW91bnRl
ZC5cbiAgICB2YXIgbm9kZSA9IFJlYWN0RE9NQ29tcG9uZW50VHJlZS5nZXROb2RlRnJvbUluc3Rh
bmNlKGluc3QpO1xuXG4gICAgLy8gRGV0YWNoIHZhbHVlIGZyb20gZGVmYXVsdFZhbHVlLiBXZSB3
b24ndCBkbyBhbnl0aGluZyBpZiB3ZSdyZSB3b3JraW5nIG9uXG4gICAgLy8gc3VibWl0IG9yIHJl
c2V0IGlucHV0cyBhcyB0aG9zZSB2YWx1ZXMgJiBkZWZhdWx0VmFsdWVzIGFyZSBsaW5rZWQuIFRo
ZXlcbiAgICAvLyBhcmUgbm90IHJlc2V0YWJsZSBub2RlcyBzbyB0aGlzIG9wZXJhdGlvbiBkb2Vz
bid0IG1hdHRlciBhbmQgYWN0dWFsbHlcbiAgICAvLyByZW1vdmVzIGJyb3dzZXItZGVmYXVsdCB2
YWx1ZXMgKGVnIFwiU3VibWl0IFF1ZXJ5XCIpIHdoZW4gbm8gdmFsdWUgaXNcbiAgICAvLyBwcm92
aWRlZC5cblxuICAgIHN3aXRjaCAocHJvcHMudHlwZSkge1xuICAgICAgY2FzZSAnc3VibWl0Jzpc
biAgICAgIGNhc2UgJ3Jlc2V0JzpcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdjb2xvcic6
XG4gICAgICBjYXNlICdkYXRlJzpcbiAgICAgIGNhc2UgJ2RhdGV0aW1lJzpcbiAgICAgIGNhc2Ug
J2RhdGV0aW1lLWxvY2FsJzpcbiAgICAgIGNhc2UgJ21vbnRoJzpcbiAgICAgIGNhc2UgJ3RpbWUn
OlxuICAgICAgY2FzZSAnd2Vlayc6XG4gICAgICAgIC8vIFRoaXMgZml4ZXMgdGhlIG5vLXNob3cg
aXNzdWUgb24gaU9TIFNhZmFyaSBhbmQgQW5kcm9pZCBDaHJvbWU6XG4gICAgICAgIC8vIGh0dHBz
Oi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9pc3N1ZXMvNzIzM1xuICAgICAgICBub2RlLnZh
bHVlID0gJyc7XG4gICAgICAgIG5vZGUudmFsdWUgPSBub2RlLmRlZmF1bHRWYWx1ZTtcbiAgICAg
ICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBub2RlLnZhbHVlID0gbm9kZS52YWx1
ZTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgLy8gTm9ybWFsbHksIHdlJ2QganVzdCBk
byBgbm9kZS5jaGVja2VkID0gbm9kZS5jaGVja2VkYCB1cG9uIGluaXRpYWwgbW91bnQsIGxlc3Mg
dGhpcyBidWdcbiAgICAvLyB0aGlzIGlzIG5lZWRlZCB0byB3b3JrIGFyb3VuZCBhIGNocm9tZSBi
dWcgd2hlcmUgc2V0dGluZyBkZWZhdWx0Q2hlY2tlZFxuICAgIC8vIHdpbGwgc29tZXRpbWVzIGlu
Zmx1ZW5jZSB0aGUgdmFsdWUgb2YgY2hlY2tlZCAoZXZlbiBhZnRlciBkZXRhY2htZW50KS5cbiAg
ICAvLyBSZWZlcmVuY2U6IGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS9pc3N1
ZXMvZGV0YWlsP2lkPTYwODQxNlxuICAgIC8vIFdlIG5lZWQgdG8gdGVtcG9yYXJpbHkgdW5zZXQg
bmFtZSB0byBhdm9pZCBkaXNydXB0aW5nIHJhZGlvIGJ1dHRvbiBncm91cHMuXG4gICAgdmFyIG5h
bWUgPSBub2RlLm5hbWU7XG4gICAgaWYgKG5hbWUgIT09ICcnKSB7XG4gICAgICBub2RlLm5hbWUg
PSAnJztcbiAgICB9XG4gICAgbm9kZS5kZWZhdWx0Q2hlY2tlZCA9ICFub2RlLmRlZmF1bHRDaGVj
a2VkO1xuICAgIG5vZGUuZGVmYXVsdENoZWNrZWQgPSAhbm9kZS5kZWZhdWx0Q2hlY2tlZDtcbiAg
ICBpZiAobmFtZSAhPT0gJycpIHtcbiAgICAgIG5vZGUubmFtZSA9IG5hbWU7XG4gICAgfVxuICB9
XG59O1xuXG5mdW5jdGlvbiBfaGFuZGxlQ2hhbmdlKGV2ZW50KSB7XG4gIHZhciBwcm9wcyA9IHRo
aXMuX2N1cnJlbnRFbGVtZW50LnByb3BzO1xuXG4gIHZhciByZXR1cm5WYWx1ZSA9IExpbmtlZFZh
bHVlVXRpbHMuZXhlY3V0ZU9uQ2hhbmdlKHByb3BzLCBldmVudCk7XG5cbiAgLy8gSGVyZSB3ZSB1
c2UgYXNhcCB0byB3YWl0IHVudGlsIGFsbCB1cGRhdGVzIGhhdmUgcHJvcGFnYXRlZCwgd2hpY2hc
biAgLy8gaXMgaW1wb3J0YW50IHdoZW4gdXNpbmcgY29udHJvbGxlZCBjb21wb25lbnRzIHdpdGhp
biBsYXllcnM6XG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9pc3N1ZXMv
MTY5OFxuICBSZWFjdFVwZGF0ZXMuYXNhcChmb3JjZVVwZGF0ZUlmTW91bnRlZCwgdGhpcyk7XG5c
biAgdmFyIG5hbWUgPSBwcm9wcy5uYW1lO1xuICBpZiAocHJvcHMudHlwZSA9PT0gJ3JhZGlvJyAm
JiBuYW1lICE9IG51bGwpIHtcbiAgICB2YXIgcm9vdE5vZGUgPSBSZWFjdERPTUNvbXBvbmVudFRy
ZWUuZ2V0Tm9kZUZyb21JbnN0YW5jZSh0aGlzKTtcbiAgICB2YXIgcXVlcnlSb290ID0gcm9vdE5v
ZGU7XG5cbiAgICB3aGlsZSAocXVlcnlSb290LnBhcmVudE5vZGUpIHtcbiAgICAgIHF1ZXJ5Um9v
dCA9IHF1ZXJ5Um9vdC5wYXJlbnROb2RlO1xuICAgIH1cblxuICAgIC8vIElmIGByb290Tm9kZS5m
b3JtYCB3YXMgbm9uLW51bGwsIHRoZW4gd2UgY291bGQgdHJ5IGBmb3JtLmVsZW1lbnRzYCxcbiAg
ICAvLyBidXQgdGhhdCBzb21ldGltZXMgYmVoYXZlcyBzdHJhbmdlbHkgaW4gSUU4LiBXZSBjb3Vs
ZCBhbHNvIHRyeSB1c2luZ1xuICAgIC8vIGBmb3JtLmdldEVsZW1lbnRzQnlOYW1lYCwgYnV0IHRo
YXQgd2lsbCBvbmx5IHJldHVybiBkaXJlY3QgY2hpbGRyZW5cbiAgICAvLyBhbmQgd29uJ3QgaW5j
bHVkZSBpbnB1dHMgdGhhdCB1c2UgdGhlIEhUTUw1IGBmb3JtPWAgYXR0cmlidXRlLiBTaW5jZVxu
ICAgIC8vIHRoZSBpbnB1dCBtaWdodCBub3QgZXZlbiBiZSBpbiBhIGZvcm0sIGxldCdzIGp1c3Qg
dXNlIHRoZSBnbG9iYWxcbiAgICAvLyBgcXVlcnlTZWxlY3RvckFsbGAgdG8gZW5zdXJlIHdlIGRv
bid0IG1pc3MgYW55dGhpbmcuXG4gICAgdmFyIGdyb3VwID0gcXVlcnlSb290LnF1ZXJ5U2VsZWN0
b3JBbGwoJ2lucHV0W25hbWU9JyArIEpTT04uc3RyaW5naWZ5KCcnICsgbmFtZSkgKyAnXVt0eXBl
PVwicmFkaW9cIl0nKTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZ3JvdXAubGVuZ3RoOyBp
KyspIHtcbiAgICAgIHZhciBvdGhlck5vZGUgPSBncm91cFtpXTtcbiAgICAgIGlmIChvdGhlck5v
ZGUgPT09IHJvb3ROb2RlIHx8IG90aGVyTm9kZS5mb3JtICE9PSByb290Tm9kZS5mb3JtKSB7XG4g
ICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgLy8gVGhpcyB3aWxsIHRocm93IGlmIHJh
ZGlvIGJ1dHRvbnMgcmVuZGVyZWQgYnkgZGlmZmVyZW50IGNvcGllcyBvZiBSZWFjdFxuICAgICAg
Ly8gYW5kIHRoZSBzYW1lIG5hbWUgYXJlIHJlbmRlcmVkIGludG8gdGhlIHNhbWUgZm9ybSAoc2Ft
ZSBhcyAjMTkzOSkuXG4gICAgICAvLyBUaGF0J3MgcHJvYmFibHkgb2theTsgd2UgZG9uJ3Qgc3Vw
cG9ydCBpdCBqdXN0IGFzIHdlIGRvbid0IHN1cHBvcnRcbiAgICAgIC8vIG1peGluZyBSZWFjdCBy
YWRpbyBidXR0b25zIHdpdGggbm9uLVJlYWN0IG9uZXMuXG4gICAgICB2YXIgb3RoZXJJbnN0YW5j
ZSA9IFJlYWN0RE9NQ29tcG9uZW50VHJlZS5nZXRJbnN0YW5jZUZyb21Ob2RlKG90aGVyTm9kZSk7
XG4gICAgICAhb3RoZXJJbnN0YW5jZSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVj
dGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdSZWFjdERPTUlucHV0OiBNaXhpbmcgUmVhY3QgYW5k
IG5vbi1SZWFjdCByYWRpbyBpbnB1dHMgd2l0aCB0aGUgc2FtZSBgbmFtZWAgaXMgbm90IHN1cHBv
cnRlZC4nKSA6IF9wcm9kSW52YXJpYW50KCc5MCcpIDogdm9pZCAwO1xuICAgICAgLy8gSWYgdGhp
cyBpcyBhIGNvbnRyb2xsZWQgcmFkaW8gYnV0dG9uIGdyb3VwLCBmb3JjaW5nIHRoZSBpbnB1dCB0
aGF0XG4gICAgICAvLyB3YXMgcHJldmlvdXNseSBjaGVja2VkIHRvIHVwZGF0ZSB3aWxsIGNhdXNl
IGl0IHRvIGJlIGNvbWUgcmUtY2hlY2tlZFxuICAgICAgLy8gYXMgYXBwcm9wcmlhdGUuXG4gICAg
ICBSZWFjdFVwZGF0ZXMuYXNhcChmb3JjZVVwZGF0ZUlmTW91bnRlZCwgb3RoZXJJbnN0YW5jZSk7
XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHJldHVyblZhbHVlO1xufVxuXG5tb2R1bGUuZXhwb3J0
cyA9IFJlYWN0RE9NSW5wdXQ7XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBG
T09URVJcbiAqKiAuL34vcmVhY3QtZG9tL2xpYi9SZWFjdERPTUlucHV0LmpzXG4gKiogbW9kdWxl
IGlkID0gMTQzXG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENvcHlyaWdo
dCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxu
ICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBs
aWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9y
eSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQg
cmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVj
dG9yeS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgX2Fzc2lnbiA9IHJlcXVpcmUo
J29iamVjdC1hc3NpZ24nKTtcblxudmFyIFJlYWN0ID0gcmVxdWlyZSgncmVhY3QvbGliL1JlYWN0
Jyk7XG52YXIgUmVhY3RET01Db21wb25lbnRUcmVlID0gcmVxdWlyZSgnLi9SZWFjdERPTUNvbXBv
bmVudFRyZWUnKTtcbnZhciBSZWFjdERPTVNlbGVjdCA9IHJlcXVpcmUoJy4vUmVhY3RET01TZWxl
Y3QnKTtcblxudmFyIHdhcm5pbmcgPSByZXF1aXJlKCdmYmpzL2xpYi93YXJuaW5nJyk7XG52YXIg
ZGlkV2FybkludmFsaWRPcHRpb25DaGlsZHJlbiA9IGZhbHNlO1xuXG5mdW5jdGlvbiBmbGF0dGVu
Q2hpbGRyZW4oY2hpbGRyZW4pIHtcbiAgdmFyIGNvbnRlbnQgPSAnJztcblxuICAvLyBGbGF0dGVu
IGNoaWxkcmVuIGFuZCB3YXJuIGlmIHRoZXkgYXJlbid0IHN0cmluZ3Mgb3IgbnVtYmVycztcbiAg
Ly8gaW52YWxpZCB0eXBlcyBhcmUgaWdub3JlZC5cbiAgUmVhY3QuQ2hpbGRyZW4uZm9yRWFjaChj
aGlsZHJlbiwgZnVuY3Rpb24gKGNoaWxkKSB7XG4gICAgaWYgKGNoaWxkID09IG51bGwpIHtcbiAg
ICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBjaGlsZCA9PT0gJ3N0cmluZycgfHwg
dHlwZW9mIGNoaWxkID09PSAnbnVtYmVyJykge1xuICAgICAgY29udGVudCArPSBjaGlsZDtcbiAg
ICB9IGVsc2UgaWYgKCFkaWRXYXJuSW52YWxpZE9wdGlvbkNoaWxkcmVuKSB7XG4gICAgICBkaWRX
YXJuSW52YWxpZE9wdGlvbkNoaWxkcmVuID0gdHJ1ZTtcbiAgICAgIHByb2Nlc3MuZW52Lk5PREVf
RU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnT25seSBzdHJpbmdzIGFuZCBu
dW1iZXJzIGFyZSBzdXBwb3J0ZWQgYXMgPG9wdGlvbj4gY2hpbGRyZW4uJykgOiB2b2lkIDA7XG4g
ICAgfVxuICB9KTtcblxuICByZXR1cm4gY29udGVudDtcbn1cblxuLyoqXG4gKiBJbXBsZW1lbnRz
IGFuIDxvcHRpb24+IGhvc3QgY29tcG9uZW50IHRoYXQgd2FybnMgd2hlbiBgc2VsZWN0ZWRgIGlz
IHNldC5cbiAqL1xudmFyIFJlYWN0RE9NT3B0aW9uID0ge1xuICBtb3VudFdyYXBwZXI6IGZ1bmN0
aW9uIChpbnN0LCBwcm9wcywgaG9zdFBhcmVudCkge1xuICAgIC8vIFRPRE8gKHl1bmdzdGVycyk6
IFJlbW92ZSBzdXBwb3J0IGZvciBgc2VsZWN0ZWRgIGluIDxvcHRpb24+LlxuICAgIGlmIChwcm9j
ZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICBwcm9jZXNzLmVudi5O
T0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhwcm9wcy5zZWxlY3RlZCA9PSBudWxs
LCAnVXNlIHRoZSBgZGVmYXVsdFZhbHVlYCBvciBgdmFsdWVgIHByb3BzIG9uIDxzZWxlY3Q+IGlu
c3RlYWQgb2YgJyArICdzZXR0aW5nIGBzZWxlY3RlZGAgb24gPG9wdGlvbj4uJykgOiB2b2lkIDA7
XG4gICAgfVxuXG4gICAgLy8gTG9vayB1cCB3aGV0aGVyIHRoaXMgb3B0aW9uIGlzICdzZWxlY3Rl
ZCdcbiAgICB2YXIgc2VsZWN0VmFsdWUgPSBudWxsO1xuICAgIGlmIChob3N0UGFyZW50ICE9IG51
bGwpIHtcbiAgICAgIHZhciBzZWxlY3RQYXJlbnQgPSBob3N0UGFyZW50O1xuXG4gICAgICBpZiAo
c2VsZWN0UGFyZW50Ll90YWcgPT09ICdvcHRncm91cCcpIHtcbiAgICAgICAgc2VsZWN0UGFyZW50
ID0gc2VsZWN0UGFyZW50Ll9ob3N0UGFyZW50O1xuICAgICAgfVxuXG4gICAgICBpZiAoc2VsZWN0
UGFyZW50ICE9IG51bGwgJiYgc2VsZWN0UGFyZW50Ll90YWcgPT09ICdzZWxlY3QnKSB7XG4gICAg
ICAgIHNlbGVjdFZhbHVlID0gUmVhY3RET01TZWxlY3QuZ2V0U2VsZWN0VmFsdWVDb250ZXh0KHNl
bGVjdFBhcmVudCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gSWYgdGhlIHZhbHVlIGlzIG51
bGwgKGUuZy4sIG5vIHNwZWNpZmllZCB2YWx1ZSBvciBhZnRlciBpbml0aWFsIG1vdW50KVxuICAg
IC8vIG9yIG1pc3NpbmcgKGUuZy4sIGZvciA8ZGF0YWxpc3Q+KSwgd2UgZG9uJ3QgY2hhbmdlIHBy
b3BzLnNlbGVjdGVkXG4gICAgdmFyIHNlbGVjdGVkID0gbnVsbDtcbiAgICBpZiAoc2VsZWN0VmFs
dWUgIT0gbnVsbCkge1xuICAgICAgdmFyIHZhbHVlO1xuICAgICAgaWYgKHByb3BzLnZhbHVlICE9
IG51bGwpIHtcbiAgICAgICAgdmFsdWUgPSBwcm9wcy52YWx1ZSArICcnO1xuICAgICAgfSBlbHNl
IHtcbiAgICAgICAgdmFsdWUgPSBmbGF0dGVuQ2hpbGRyZW4ocHJvcHMuY2hpbGRyZW4pO1xuICAg
ICAgfVxuICAgICAgc2VsZWN0ZWQgPSBmYWxzZTtcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHNl
bGVjdFZhbHVlKSkge1xuICAgICAgICAvLyBtdWx0aXBsZVxuICAgICAgICBmb3IgKHZhciBpID0g
MDsgaSA8IHNlbGVjdFZhbHVlLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgaWYgKCcnICsgc2Vs
ZWN0VmFsdWVbaV0gPT09IHZhbHVlKSB7XG4gICAgICAgICAgICBzZWxlY3RlZCA9IHRydWU7XG4g
ICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7
XG4gICAgICAgIHNlbGVjdGVkID0gJycgKyBzZWxlY3RWYWx1ZSA9PT0gdmFsdWU7XG4gICAgICB9
XG4gICAgfVxuXG4gICAgaW5zdC5fd3JhcHBlclN0YXRlID0geyBzZWxlY3RlZDogc2VsZWN0ZWQg
fTtcbiAgfSxcblxuICBwb3N0TW91bnRXcmFwcGVyOiBmdW5jdGlvbiAoaW5zdCkge1xuICAgIC8v
IHZhbHVlPVwiXCIgc2hvdWxkIG1ha2UgYSB2YWx1ZSBhdHRyaWJ1dGUgKCM2MjE5KVxuICAgIHZh
ciBwcm9wcyA9IGluc3QuX2N1cnJlbnRFbGVtZW50LnByb3BzO1xuICAgIGlmIChwcm9wcy52YWx1
ZSAhPSBudWxsKSB7XG4gICAgICB2YXIgbm9kZSA9IFJlYWN0RE9NQ29tcG9uZW50VHJlZS5nZXRO
b2RlRnJvbUluc3RhbmNlKGluc3QpO1xuICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoJ3ZhbHVlJywg
cHJvcHMudmFsdWUpO1xuICAgIH1cbiAgfSxcblxuICBnZXRIb3N0UHJvcHM6IGZ1bmN0aW9uIChp
bnN0LCBwcm9wcykge1xuICAgIHZhciBob3N0UHJvcHMgPSBfYXNzaWduKHsgc2VsZWN0ZWQ6IHVu
ZGVmaW5lZCwgY2hpbGRyZW46IHVuZGVmaW5lZCB9LCBwcm9wcyk7XG5cbiAgICAvLyBSZWFkIHN0
YXRlIG9ubHkgZnJvbSBpbml0aWFsIG1vdW50IGJlY2F1c2UgPHNlbGVjdD4gdXBkYXRlcyB2YWx1
ZVxuICAgIC8vIG1hbnVhbGx5OyB3ZSBuZWVkIHRoZSBpbml0aWFsIHN0YXRlIG9ubHkgZm9yIHNl
cnZlciByZW5kZXJpbmdcbiAgICBpZiAoaW5zdC5fd3JhcHBlclN0YXRlLnNlbGVjdGVkICE9IG51
bGwpIHtcbiAgICAgIGhvc3RQcm9wcy5zZWxlY3RlZCA9IGluc3QuX3dyYXBwZXJTdGF0ZS5zZWxl
Y3RlZDtcbiAgICB9XG5cbiAgICB2YXIgY29udGVudCA9IGZsYXR0ZW5DaGlsZHJlbihwcm9wcy5j
aGlsZHJlbik7XG5cbiAgICBpZiAoY29udGVudCkge1xuICAgICAgaG9zdFByb3BzLmNoaWxkcmVu
ID0gY29udGVudDtcbiAgICB9XG5cbiAgICByZXR1cm4gaG9zdFByb3BzO1xuICB9XG59O1xuXG5t
b2R1bGUuZXhwb3J0cyA9IFJlYWN0RE9NT3B0aW9uO1xuXG5cbi8qKioqKioqKioqKioqKioqKlxu
ICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0LWRvbS9saWIvUmVhY3RET01PcHRpb24u
anNcbiAqKiBtb2R1bGUgaWQgPSAxNDRcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8q
KlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0
aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhl
IHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRc
biAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4g
dGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBFeGVj
dXRpb25FbnZpcm9ubWVudCA9IHJlcXVpcmUoJ2ZianMvbGliL0V4ZWN1dGlvbkVudmlyb25tZW50
Jyk7XG5cbnZhciBnZXROb2RlRm9yQ2hhcmFjdGVyT2Zmc2V0ID0gcmVxdWlyZSgnLi9nZXROb2Rl
Rm9yQ2hhcmFjdGVyT2Zmc2V0Jyk7XG52YXIgZ2V0VGV4dENvbnRlbnRBY2Nlc3NvciA9IHJlcXVp
cmUoJy4vZ2V0VGV4dENvbnRlbnRBY2Nlc3NvcicpO1xuXG4vKipcbiAqIFdoaWxlIGBpc0NvbGxh
cHNlZGAgaXMgYXZhaWxhYmxlIG9uIHRoZSBTZWxlY3Rpb24gb2JqZWN0IGFuZCBgY29sbGFwc2Vk
YFxuICogaXMgYXZhaWxhYmxlIG9uIHRoZSBSYW5nZSBvYmplY3QsIElFMTEgc29tZXRpbWVzIGdl
dHMgdGhlbSB3cm9uZy5cbiAqIElmIHRoZSBhbmNob3IvZm9jdXMgbm9kZXMgYW5kIG9mZnNldHMg
YXJlIHRoZSBzYW1lLCB0aGUgcmFuZ2UgaXMgY29sbGFwc2VkLlxuICovXG5mdW5jdGlvbiBpc0Nv
bGxhcHNlZChhbmNob3JOb2RlLCBhbmNob3JPZmZzZXQsIGZvY3VzTm9kZSwgZm9jdXNPZmZzZXQp
IHtcbiAgcmV0dXJuIGFuY2hvck5vZGUgPT09IGZvY3VzTm9kZSAmJiBhbmNob3JPZmZzZXQgPT09
IGZvY3VzT2Zmc2V0O1xufVxuXG4vKipcbiAqIEdldCB0aGUgYXBwcm9wcmlhdGUgYW5jaG9yIGFu
ZCBmb2N1cyBub2RlL29mZnNldCBwYWlycyBmb3IgSUUuXG4gKlxuICogVGhlIGNhdGNoIGhlcmUg
aXMgdGhhdCBJRSdzIHNlbGVjdGlvbiBBUEkgZG9lc24ndCBwcm92aWRlIGluZm9ybWF0aW9uXG4g
KiBhYm91dCB3aGV0aGVyIHRoZSBzZWxlY3Rpb24gaXMgZm9yd2FyZCBvciBiYWNrd2FyZCwgc28g
d2UgaGF2ZSB0b1xuICogYmVoYXZlIGFzIHRob3VnaCBpdCdzIGFsd2F5cyBmb3J3YXJkLlxuICpc
biAqIElFIHRleHQgZGlmZmVycyBmcm9tIG1vZGVybiBzZWxlY3Rpb24gaW4gdGhhdCBpdCBiZWhh
dmVzIGFzIHRob3VnaFxuICogYmxvY2sgZWxlbWVudHMgZW5kIHdpdGggYSBuZXcgbGluZS4gVGhp
cyBtZWFucyBjaGFyYWN0ZXIgb2Zmc2V0cyB3aWxsXG4gKiBkaWZmZXIgYmV0d2VlbiB0aGUgdHdv
IEFQSXMuXG4gKlxuICogQHBhcmFtIHtET01FbGVtZW50fSBub2RlXG4gKiBAcmV0dXJuIHtvYmpl
Y3R9XG4gKi9cbmZ1bmN0aW9uIGdldElFT2Zmc2V0cyhub2RlKSB7XG4gIHZhciBzZWxlY3Rpb24g
PSBkb2N1bWVudC5zZWxlY3Rpb247XG4gIHZhciBzZWxlY3RlZFJhbmdlID0gc2VsZWN0aW9uLmNy
ZWF0ZVJhbmdlKCk7XG4gIHZhciBzZWxlY3RlZExlbmd0aCA9IHNlbGVjdGVkUmFuZ2UudGV4dC5s
ZW5ndGg7XG5cbiAgLy8gRHVwbGljYXRlIHNlbGVjdGlvbiBzbyB3ZSBjYW4gbW92ZSByYW5nZSB3
aXRob3V0IGJyZWFraW5nIHVzZXIgc2VsZWN0aW9uLlxuICB2YXIgZnJvbVN0YXJ0ID0gc2VsZWN0
ZWRSYW5nZS5kdXBsaWNhdGUoKTtcbiAgZnJvbVN0YXJ0Lm1vdmVUb0VsZW1lbnRUZXh0KG5vZGUp
O1xuICBmcm9tU3RhcnQuc2V0RW5kUG9pbnQoJ0VuZFRvU3RhcnQnLCBzZWxlY3RlZFJhbmdlKTtc
blxuICB2YXIgc3RhcnRPZmZzZXQgPSBmcm9tU3RhcnQudGV4dC5sZW5ndGg7XG4gIHZhciBlbmRP
ZmZzZXQgPSBzdGFydE9mZnNldCArIHNlbGVjdGVkTGVuZ3RoO1xuXG4gIHJldHVybiB7XG4gICAg
c3RhcnQ6IHN0YXJ0T2Zmc2V0LFxuICAgIGVuZDogZW5kT2Zmc2V0XG4gIH07XG59XG5cbi8qKlxu
ICogQHBhcmFtIHtET01FbGVtZW50fSBub2RlXG4gKiBAcmV0dXJuIHs/b2JqZWN0fVxuICovXG5m
dW5jdGlvbiBnZXRNb2Rlcm5PZmZzZXRzKG5vZGUpIHtcbiAgdmFyIHNlbGVjdGlvbiA9IHdpbmRv
dy5nZXRTZWxlY3Rpb24gJiYgd2luZG93LmdldFNlbGVjdGlvbigpO1xuXG4gIGlmICghc2VsZWN0
aW9uIHx8IHNlbGVjdGlvbi5yYW5nZUNvdW50ID09PSAwKSB7XG4gICAgcmV0dXJuIG51bGw7XG4g
IH1cblxuICB2YXIgYW5jaG9yTm9kZSA9IHNlbGVjdGlvbi5hbmNob3JOb2RlO1xuICB2YXIgYW5j
aG9yT2Zmc2V0ID0gc2VsZWN0aW9uLmFuY2hvck9mZnNldDtcbiAgdmFyIGZvY3VzTm9kZSA9IHNl
bGVjdGlvbi5mb2N1c05vZGU7XG4gIHZhciBmb2N1c09mZnNldCA9IHNlbGVjdGlvbi5mb2N1c09m
ZnNldDtcblxuICB2YXIgY3VycmVudFJhbmdlID0gc2VsZWN0aW9uLmdldFJhbmdlQXQoMCk7XG5c
biAgLy8gSW4gRmlyZWZveCwgcmFuZ2Uuc3RhcnRDb250YWluZXIgYW5kIHJhbmdlLmVuZENvbnRh
aW5lciBjYW4gYmUgXCJhbm9ueW1vdXNcbiAgLy8gZGl2c1wiLCBlLmcuIHRoZSB1cC9kb3duIGJ1
dHRvbnMgb24gYW4gPGlucHV0IHR5cGU9XCJudW1iZXJcIj4uIEFub255bW91c1xuICAvLyBkaXZz
IGRvIG5vdCBzZWVtIHRvIGV4cG9zZSBwcm9wZXJ0aWVzLCB0cmlnZ2VyaW5nIGEgXCJQZXJtaXNz
aW9uIGRlbmllZFxuICAvLyBlcnJvclwiIGlmIGFueSBvZiBpdHMgcHJvcGVydGllcyBhcmUgYWNj
ZXNzZWQuIFRoZSBvbmx5IHNlZW1pbmdseSBwb3NzaWJsZVxuICAvLyB3YXkgdG8gYXZvaWQgZXJy
b3JpbmcgaXMgdG8gYWNjZXNzIGEgcHJvcGVydHkgdGhhdCB0eXBpY2FsbHkgd29ya3MgZm9yXG4g
IC8vIG5vbi1hbm9ueW1vdXMgZGl2cyBhbmQgY2F0Y2ggYW55IGVycm9yIHRoYXQgbWF5IG90aGVy
d2lzZSBhcmlzZS4gU2VlXG4gIC8vIGh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19i
dWcuY2dpP2lkPTIwODQyN1xuICB0cnkge1xuICAgIC8qIGVzbGludC1kaXNhYmxlIG5vLXVudXNl
ZC1leHByZXNzaW9ucyAqL1xuICAgIGN1cnJlbnRSYW5nZS5zdGFydENvbnRhaW5lci5ub2RlVHlw
ZTtcbiAgICBjdXJyZW50UmFuZ2UuZW5kQ29udGFpbmVyLm5vZGVUeXBlO1xuICAgIC8qIGVzbGlu
dC1lbmFibGUgbm8tdW51c2VkLWV4cHJlc3Npb25zICovXG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBy
ZXR1cm4gbnVsbDtcbiAgfVxuXG4gIC8vIElmIHRoZSBub2RlIGFuZCBvZmZzZXQgdmFsdWVzIGFy
ZSB0aGUgc2FtZSwgdGhlIHNlbGVjdGlvbiBpcyBjb2xsYXBzZWQuXG4gIC8vIGBTZWxlY3Rpb24u
aXNDb2xsYXBzZWRgIGlzIGF2YWlsYWJsZSBuYXRpdmVseSwgYnV0IElFIHNvbWV0aW1lcyBnZXRz
XG4gIC8vIHRoaXMgdmFsdWUgd3JvbmcuXG4gIHZhciBpc1NlbGVjdGlvbkNvbGxhcHNlZCA9IGlz
Q29sbGFwc2VkKHNlbGVjdGlvbi5hbmNob3JOb2RlLCBzZWxlY3Rpb24uYW5jaG9yT2Zmc2V0LCBz
ZWxlY3Rpb24uZm9jdXNOb2RlLCBzZWxlY3Rpb24uZm9jdXNPZmZzZXQpO1xuXG4gIHZhciByYW5n
ZUxlbmd0aCA9IGlzU2VsZWN0aW9uQ29sbGFwc2VkID8gMCA6IGN1cnJlbnRSYW5nZS50b1N0cmlu
ZygpLmxlbmd0aDtcblxuICB2YXIgdGVtcFJhbmdlID0gY3VycmVudFJhbmdlLmNsb25lUmFuZ2Uo
KTtcbiAgdGVtcFJhbmdlLnNlbGVjdE5vZGVDb250ZW50cyhub2RlKTtcbiAgdGVtcFJhbmdlLnNl
dEVuZChjdXJyZW50UmFuZ2Uuc3RhcnRDb250YWluZXIsIGN1cnJlbnRSYW5nZS5zdGFydE9mZnNl
dCk7XG5cbiAgdmFyIGlzVGVtcFJhbmdlQ29sbGFwc2VkID0gaXNDb2xsYXBzZWQodGVtcFJhbmdl
LnN0YXJ0Q29udGFpbmVyLCB0ZW1wUmFuZ2Uuc3RhcnRPZmZzZXQsIHRlbXBSYW5nZS5lbmRDb250
YWluZXIsIHRlbXBSYW5nZS5lbmRPZmZzZXQpO1xuXG4gIHZhciBzdGFydCA9IGlzVGVtcFJhbmdl
Q29sbGFwc2VkID8gMCA6IHRlbXBSYW5nZS50b1N0cmluZygpLmxlbmd0aDtcbiAgdmFyIGVuZCA9
IHN0YXJ0ICsgcmFuZ2VMZW5ndGg7XG5cbiAgLy8gRGV0ZWN0IHdoZXRoZXIgdGhlIHNlbGVjdGlv
biBpcyBiYWNrd2FyZC5cbiAgdmFyIGRldGVjdGlvblJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTtcbiAgZGV0ZWN0aW9uUmFuZ2Uuc2V0U3RhcnQoYW5jaG9yTm9kZSwgYW5jaG9yT2Zmc2V0
KTtcbiAgZGV0ZWN0aW9uUmFuZ2Uuc2V0RW5kKGZvY3VzTm9kZSwgZm9jdXNPZmZzZXQpO1xuICB2
YXIgaXNCYWNrd2FyZCA9IGRldGVjdGlvblJhbmdlLmNvbGxhcHNlZDtcblxuICByZXR1cm4ge1xu
ICAgIHN0YXJ0OiBpc0JhY2t3YXJkID8gZW5kIDogc3RhcnQsXG4gICAgZW5kOiBpc0JhY2t3YXJk
ID8gc3RhcnQgOiBlbmRcbiAgfTtcbn1cblxuLyoqXG4gKiBAcGFyYW0ge0RPTUVsZW1lbnR8RE9N
VGV4dE5vZGV9IG5vZGVcbiAqIEBwYXJhbSB7b2JqZWN0fSBvZmZzZXRzXG4gKi9cbmZ1bmN0aW9u
IHNldElFT2Zmc2V0cyhub2RlLCBvZmZzZXRzKSB7XG4gIHZhciByYW5nZSA9IGRvY3VtZW50LnNl
bGVjdGlvbi5jcmVhdGVSYW5nZSgpLmR1cGxpY2F0ZSgpO1xuICB2YXIgc3RhcnQsIGVuZDtcblxu
ICBpZiAob2Zmc2V0cy5lbmQgPT09IHVuZGVmaW5lZCkge1xuICAgIHN0YXJ0ID0gb2Zmc2V0cy5z
dGFydDtcbiAgICBlbmQgPSBzdGFydDtcbiAgfSBlbHNlIGlmIChvZmZzZXRzLnN0YXJ0ID4gb2Zm
c2V0cy5lbmQpIHtcbiAgICBzdGFydCA9IG9mZnNldHMuZW5kO1xuICAgIGVuZCA9IG9mZnNldHMu
c3RhcnQ7XG4gIH0gZWxzZSB7XG4gICAgc3RhcnQgPSBvZmZzZXRzLnN0YXJ0O1xuICAgIGVuZCA9
IG9mZnNldHMuZW5kO1xuICB9XG5cbiAgcmFuZ2UubW92ZVRvRWxlbWVudFRleHQobm9kZSk7XG4g
IHJhbmdlLm1vdmVTdGFydCgnY2hhcmFjdGVyJywgc3RhcnQpO1xuICByYW5nZS5zZXRFbmRQb2lu
dCgnRW5kVG9TdGFydCcsIHJhbmdlKTtcbiAgcmFuZ2UubW92ZUVuZCgnY2hhcmFjdGVyJywgZW5k
IC0gc3RhcnQpO1xuICByYW5nZS5zZWxlY3QoKTtcbn1cblxuLyoqXG4gKiBJbiBtb2Rlcm4gbm9u
LUlFIGJyb3dzZXJzLCB3ZSBjYW4gc3VwcG9ydCBib3RoIGZvcndhcmQgYW5kIGJhY2t3YXJkXG4g
KiBzZWxlY3Rpb25zLlxuICpcbiAqIE5vdGU6IElFMTArIHN1cHBvcnRzIHRoZSBTZWxlY3Rpb24g
b2JqZWN0LCBidXQgaXQgZG9lcyBub3Qgc3VwcG9ydFxuICogdGhlIGBleHRlbmRgIG1ldGhvZCwg
d2hpY2ggbWVhbnMgdGhhdCBldmVuIGluIG1vZGVybiBJRSwgaXQncyBub3QgcG9zc2libGVcbiAq
IHRvIHByb2dyYW1tYXRpY2FsbHkgY3JlYXRlIGEgYmFja3dhcmQgc2VsZWN0aW9uLiBUaHVzLCBm
b3IgYWxsIElFXG4gKiB2ZXJzaW9ucywgd2UgdXNlIHRoZSBvbGQgSUUgQVBJIHRvIGNyZWF0ZSBv
dXIgc2VsZWN0aW9ucy5cbiAqXG4gKiBAcGFyYW0ge0RPTUVsZW1lbnR8RE9NVGV4dE5vZGV9IG5v
ZGVcbiAqIEBwYXJhbSB7b2JqZWN0fSBvZmZzZXRzXG4gKi9cbmZ1bmN0aW9uIHNldE1vZGVybk9m
ZnNldHMobm9kZSwgb2Zmc2V0cykge1xuICBpZiAoIXdpbmRvdy5nZXRTZWxlY3Rpb24pIHtcbiAg
ICByZXR1cm47XG4gIH1cblxuICB2YXIgc2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbigp
O1xuICB2YXIgbGVuZ3RoID0gbm9kZVtnZXRUZXh0Q29udGVudEFjY2Vzc29yKCldLmxlbmd0aDtc
biAgdmFyIHN0YXJ0ID0gTWF0aC5taW4ob2Zmc2V0cy5zdGFydCwgbGVuZ3RoKTtcbiAgdmFyIGVu
ZCA9IG9mZnNldHMuZW5kID09PSB1bmRlZmluZWQgPyBzdGFydCA6IE1hdGgubWluKG9mZnNldHMu
ZW5kLCBsZW5ndGgpO1xuXG4gIC8vIElFIDExIHVzZXMgbW9kZXJuIHNlbGVjdGlvbiwgYnV0IGRv
ZXNuJ3Qgc3VwcG9ydCB0aGUgZXh0ZW5kIG1ldGhvZC5cbiAgLy8gRmxpcCBiYWNrd2FyZCBzZWxl
Y3Rpb25zLCBzbyB3ZSBjYW4gc2V0IHdpdGggYSBzaW5nbGUgcmFuZ2UuXG4gIGlmICghc2VsZWN0
aW9uLmV4dGVuZCAmJiBzdGFydCA+IGVuZCkge1xuICAgIHZhciB0ZW1wID0gZW5kO1xuICAgIGVu
ZCA9IHN0YXJ0O1xuICAgIHN0YXJ0ID0gdGVtcDtcbiAgfVxuXG4gIHZhciBzdGFydE1hcmtlciA9
IGdldE5vZGVGb3JDaGFyYWN0ZXJPZmZzZXQobm9kZSwgc3RhcnQpO1xuICB2YXIgZW5kTWFya2Vy
ID0gZ2V0Tm9kZUZvckNoYXJhY3Rlck9mZnNldChub2RlLCBlbmQpO1xuXG4gIGlmIChzdGFydE1h
cmtlciAmJiBlbmRNYXJrZXIpIHtcbiAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpO1xuICAgIHJhbmdlLnNldFN0YXJ0KHN0YXJ0TWFya2VyLm5vZGUsIHN0YXJ0TWFya2VyLm9m
ZnNldCk7XG4gICAgc2VsZWN0aW9uLnJlbW92ZUFsbFJhbmdlcygpO1xuXG4gICAgaWYgKHN0YXJ0
ID4gZW5kKSB7XG4gICAgICBzZWxlY3Rpb24uYWRkUmFuZ2UocmFuZ2UpO1xuICAgICAgc2VsZWN0
aW9uLmV4dGVuZChlbmRNYXJrZXIubm9kZSwgZW5kTWFya2VyLm9mZnNldCk7XG4gICAgfSBlbHNl
IHtcbiAgICAgIHJhbmdlLnNldEVuZChlbmRNYXJrZXIubm9kZSwgZW5kTWFya2VyLm9mZnNldCk7
XG4gICAgICBzZWxlY3Rpb24uYWRkUmFuZ2UocmFuZ2UpO1xuICAgIH1cbiAgfVxufVxuXG52YXIg
dXNlSUVPZmZzZXRzID0gRXhlY3V0aW9uRW52aXJvbm1lbnQuY2FuVXNlRE9NICYmICdzZWxlY3Rp
b24nIGluIGRvY3VtZW50ICYmICEoJ2dldFNlbGVjdGlvbicgaW4gd2luZG93KTtcblxudmFyIFJl
YWN0RE9NU2VsZWN0aW9uID0ge1xuICAvKipcbiAgICogQHBhcmFtIHtET01FbGVtZW50fSBub2Rl
XG4gICAqL1xuICBnZXRPZmZzZXRzOiB1c2VJRU9mZnNldHMgPyBnZXRJRU9mZnNldHMgOiBnZXRN
b2Rlcm5PZmZzZXRzLFxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge0RPTUVsZW1lbnR8RE9NVGV4dE5v
ZGV9IG5vZGVcbiAgICogQHBhcmFtIHtvYmplY3R9IG9mZnNldHNcbiAgICovXG4gIHNldE9mZnNl
dHM6IHVzZUlFT2Zmc2V0cyA/IHNldElFT2Zmc2V0cyA6IHNldE1vZGVybk9mZnNldHNcbn07XG5c
bm1vZHVsZS5leHBvcnRzID0gUmVhY3RET01TZWxlY3Rpb247XG5cblxuLyoqKioqKioqKioqKioq
KioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3QtZG9tL2xpYi9SZWFjdERPTVNl
bGVjdGlvbi5qc1xuICoqIG1vZHVsZSBpZCA9IDE0NVxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4g
KiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICog
QWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2Vk
IHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmls
ZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25h
bCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMg
ZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICovXG5cbid1c2Ugc3RyaWN0Jztcblxu
dmFyIF9wcm9kSW52YXJpYW50ID0gcmVxdWlyZSgnLi9yZWFjdFByb2RJbnZhcmlhbnQnKSxcbiAg
ICBfYXNzaWduID0gcmVxdWlyZSgnb2JqZWN0LWFzc2lnbicpO1xuXG52YXIgRE9NQ2hpbGRyZW5P
cGVyYXRpb25zID0gcmVxdWlyZSgnLi9ET01DaGlsZHJlbk9wZXJhdGlvbnMnKTtcbnZhciBET01M
YXp5VHJlZSA9IHJlcXVpcmUoJy4vRE9NTGF6eVRyZWUnKTtcbnZhciBSZWFjdERPTUNvbXBvbmVu
dFRyZWUgPSByZXF1aXJlKCcuL1JlYWN0RE9NQ29tcG9uZW50VHJlZScpO1xuXG52YXIgZXNjYXBl
VGV4dENvbnRlbnRGb3JCcm93c2VyID0gcmVxdWlyZSgnLi9lc2NhcGVUZXh0Q29udGVudEZvckJy
b3dzZXInKTtcbnZhciBpbnZhcmlhbnQgPSByZXF1aXJlKCdmYmpzL2xpYi9pbnZhcmlhbnQnKTtc
bnZhciB2YWxpZGF0ZURPTU5lc3RpbmcgPSByZXF1aXJlKCcuL3ZhbGlkYXRlRE9NTmVzdGluZycp
O1xuXG4vKipcbiAqIFRleHQgbm9kZXMgdmlvbGF0ZSBhIGNvdXBsZSBhc3N1bXB0aW9ucyB0aGF0
IFJlYWN0IG1ha2VzIGFib3V0IGNvbXBvbmVudHM6XG4gKlxuICogIC0gV2hlbiBtb3VudGluZyB0
ZXh0IGludG8gdGhlIERPTSwgYWRqYWNlbnQgdGV4dCBub2RlcyBhcmUgbWVyZ2VkLlxuICogIC0g
VGV4dCBub2RlcyBjYW5ub3QgYmUgYXNzaWduZWQgYSBSZWFjdCByb290IElELlxuICpcbiAqIFRo
aXMgY29tcG9uZW50IGlzIHVzZWQgdG8gd3JhcCBzdHJpbmdzIGJldHdlZW4gY29tbWVudCBub2Rl
cyBzbyB0aGF0IHRoZXlcbiAqIGNhbiB1bmRlcmdvIHRoZSBzYW1lIHJlY29uY2lsaWF0aW9uIHRo
YXQgaXMgYXBwbGllZCB0byBlbGVtZW50cy5cbiAqXG4gKiBUT0RPOiBJbnZlc3RpZ2F0ZSByZXBy
ZXNlbnRpbmcgUmVhY3QgY29tcG9uZW50cyBpbiB0aGUgRE9NIHdpdGggdGV4dCBub2Rlcy5cbiAq
XG4gKiBAY2xhc3MgUmVhY3RET01UZXh0Q29tcG9uZW50XG4gKiBAZXh0ZW5kcyBSZWFjdENvbXBv
bmVudFxuICogQGludGVybmFsXG4gKi9cbnZhciBSZWFjdERPTVRleHRDb21wb25lbnQgPSBmdW5j
dGlvbiAodGV4dCkge1xuICAvLyBUT0RPOiBUaGlzIGlzIHJlYWxseSBhIFJlYWN0VGV4dCAoUmVh
Y3ROb2RlKSwgbm90IGEgUmVhY3RFbGVtZW50XG4gIHRoaXMuX2N1cnJlbnRFbGVtZW50ID0gdGV4
dDtcbiAgdGhpcy5fc3RyaW5nVGV4dCA9ICcnICsgdGV4dDtcbiAgLy8gUmVhY3RET01Db21wb25l
bnRUcmVlIHVzZXMgdGhlc2U6XG4gIHRoaXMuX2hvc3ROb2RlID0gbnVsbDtcbiAgdGhpcy5faG9z
dFBhcmVudCA9IG51bGw7XG5cbiAgLy8gUHJvcGVydGllc1xuICB0aGlzLl9kb21JRCA9IDA7XG4g
IHRoaXMuX21vdW50SW5kZXggPSAwO1xuICB0aGlzLl9jbG9zaW5nQ29tbWVudCA9IG51bGw7XG4g
IHRoaXMuX2NvbW1lbnROb2RlcyA9IG51bGw7XG59O1xuXG5fYXNzaWduKFJlYWN0RE9NVGV4dENv
bXBvbmVudC5wcm90b3R5cGUsIHtcbiAgLyoqXG4gICAqIENyZWF0ZXMgdGhlIG1hcmt1cCBmb3Ig
dGhpcyB0ZXh0IG5vZGUuIFRoaXMgbm9kZSBpcyBub3QgaW50ZW5kZWQgdG8gaGF2ZVxuICAgKiBh
bnkgZmVhdHVyZXMgYmVzaWRlcyBjb250YWluaW5nIHRleHQgY29udGVudC5cbiAgICpcbiAgICog
QHBhcmFtIHtSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9ufFJlYWN0U2VydmVyUmVuZGVyaW5nVHJh
bnNhY3Rpb259IHRyYW5zYWN0aW9uXG4gICAqIEByZXR1cm4ge3N0cmluZ30gTWFya3VwIGZvciB0
aGlzIHRleHQgbm9kZS5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBtb3VudENvbXBvbmVudDog
ZnVuY3Rpb24gKHRyYW5zYWN0aW9uLCBob3N0UGFyZW50LCBob3N0Q29udGFpbmVySW5mbywgY29u
dGV4dCkge1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7
XG4gICAgICB2YXIgcGFyZW50SW5mbztcbiAgICAgIGlmIChob3N0UGFyZW50ICE9IG51bGwpIHtc
biAgICAgICAgcGFyZW50SW5mbyA9IGhvc3RQYXJlbnQuX2FuY2VzdG9ySW5mbztcbiAgICAgIH0g
ZWxzZSBpZiAoaG9zdENvbnRhaW5lckluZm8gIT0gbnVsbCkge1xuICAgICAgICBwYXJlbnRJbmZv
ID0gaG9zdENvbnRhaW5lckluZm8uX2FuY2VzdG9ySW5mbztcbiAgICAgIH1cbiAgICAgIGlmIChw
YXJlbnRJbmZvKSB7XG4gICAgICAgIC8vIHBhcmVudEluZm8gc2hvdWxkIGFsd2F5cyBiZSBwcmVz
ZW50IGV4Y2VwdCBmb3IgdGhlIHRvcC1sZXZlbFxuICAgICAgICAvLyBjb21wb25lbnQgd2hlbiBz
ZXJ2ZXIgcmVuZGVyaW5nXG4gICAgICAgIHZhbGlkYXRlRE9NTmVzdGluZyhudWxsLCB0aGlzLl9z
dHJpbmdUZXh0LCB0aGlzLCBwYXJlbnRJbmZvKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIg
ZG9tSUQgPSBob3N0Q29udGFpbmVySW5mby5faWRDb3VudGVyKys7XG4gICAgdmFyIG9wZW5pbmdW
YWx1ZSA9ICcgcmVhY3QtdGV4dDogJyArIGRvbUlEICsgJyAnO1xuICAgIHZhciBjbG9zaW5nVmFs
dWUgPSAnIC9yZWFjdC10ZXh0ICc7XG4gICAgdGhpcy5fZG9tSUQgPSBkb21JRDtcbiAgICB0aGlz
Ll9ob3N0UGFyZW50ID0gaG9zdFBhcmVudDtcbiAgICBpZiAodHJhbnNhY3Rpb24udXNlQ3JlYXRl
RWxlbWVudCkge1xuICAgICAgdmFyIG93bmVyRG9jdW1lbnQgPSBob3N0Q29udGFpbmVySW5mby5f
b3duZXJEb2N1bWVudDtcbiAgICAgIHZhciBvcGVuaW5nQ29tbWVudCA9IG93bmVyRG9jdW1lbnQu
Y3JlYXRlQ29tbWVudChvcGVuaW5nVmFsdWUpO1xuICAgICAgdmFyIGNsb3NpbmdDb21tZW50ID0g
b3duZXJEb2N1bWVudC5jcmVhdGVDb21tZW50KGNsb3NpbmdWYWx1ZSk7XG4gICAgICB2YXIgbGF6
eVRyZWUgPSBET01MYXp5VHJlZShvd25lckRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQo
KSk7XG4gICAgICBET01MYXp5VHJlZS5xdWV1ZUNoaWxkKGxhenlUcmVlLCBET01MYXp5VHJlZShv
cGVuaW5nQ29tbWVudCkpO1xuICAgICAgaWYgKHRoaXMuX3N0cmluZ1RleHQpIHtcbiAgICAgICAg
RE9NTGF6eVRyZWUucXVldWVDaGlsZChsYXp5VHJlZSwgRE9NTGF6eVRyZWUob3duZXJEb2N1bWVu
dC5jcmVhdGVUZXh0Tm9kZSh0aGlzLl9zdHJpbmdUZXh0KSkpO1xuICAgICAgfVxuICAgICAgRE9N
TGF6eVRyZWUucXVldWVDaGlsZChsYXp5VHJlZSwgRE9NTGF6eVRyZWUoY2xvc2luZ0NvbW1lbnQp
KTtcbiAgICAgIFJlYWN0RE9NQ29tcG9uZW50VHJlZS5wcmVjYWNoZU5vZGUodGhpcywgb3Blbmlu
Z0NvbW1lbnQpO1xuICAgICAgdGhpcy5fY2xvc2luZ0NvbW1lbnQgPSBjbG9zaW5nQ29tbWVudDtc
biAgICAgIHJldHVybiBsYXp5VHJlZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIGVzY2FwZWRU
ZXh0ID0gZXNjYXBlVGV4dENvbnRlbnRGb3JCcm93c2VyKHRoaXMuX3N0cmluZ1RleHQpO1xuXG4g
ICAgICBpZiAodHJhbnNhY3Rpb24ucmVuZGVyVG9TdGF0aWNNYXJrdXApIHtcbiAgICAgICAgLy8g
Tm9ybWFsbHkgd2UnZCB3cmFwIHRoaXMgYmV0d2VlbiBjb21tZW50IG5vZGVzIGZvciB0aGUgcmVh
c29ucyBzdGF0ZWRcbiAgICAgICAgLy8gYWJvdmUsIGJ1dCBzaW5jZSB0aGlzIGlzIGEgc2l0dWF0
aW9uIHdoZXJlIFJlYWN0IHdvbid0IHRha2Ugb3ZlclxuICAgICAgICAvLyAoc3RhdGljIHBhZ2Vz
KSwgd2UgY2FuIHNpbXBseSByZXR1cm4gdGhlIHRleHQgYXMgaXQgaXMuXG4gICAgICAgIHJldHVy
biBlc2NhcGVkVGV4dDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuICc8IS0tJyArIG9wZW5pbmdW
YWx1ZSArICctLT4nICsgZXNjYXBlZFRleHQgKyAnPCEtLScgKyBjbG9zaW5nVmFsdWUgKyAnLS0+
JztcbiAgICB9XG4gIH0sXG5cbiAgLyoqXG4gICAqIFVwZGF0ZXMgdGhpcyBjb21wb25lbnQgYnkg
dXBkYXRpbmcgdGhlIHRleHQgY29udGVudC5cbiAgICpcbiAgICogQHBhcmFtIHtSZWFjdFRleHR9
IG5leHRUZXh0IFRoZSBuZXh0IHRleHQgY29udGVudFxuICAgKiBAcGFyYW0ge1JlYWN0UmVjb25j
aWxlVHJhbnNhY3Rpb259IHRyYW5zYWN0aW9uXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcmVj
ZWl2ZUNvbXBvbmVudDogZnVuY3Rpb24gKG5leHRUZXh0LCB0cmFuc2FjdGlvbikge1xuICAgIGlm
IChuZXh0VGV4dCAhPT0gdGhpcy5fY3VycmVudEVsZW1lbnQpIHtcbiAgICAgIHRoaXMuX2N1cnJl
bnRFbGVtZW50ID0gbmV4dFRleHQ7XG4gICAgICB2YXIgbmV4dFN0cmluZ1RleHQgPSAnJyArIG5l
eHRUZXh0O1xuICAgICAgaWYgKG5leHRTdHJpbmdUZXh0ICE9PSB0aGlzLl9zdHJpbmdUZXh0KSB7
XG4gICAgICAgIC8vIFRPRE86IFNhdmUgdGhpcyBhcyBwZW5kaW5nIHByb3BzIGFuZCB1c2UgcGVy
Zm9ybVVwZGF0ZUlmTmVjZXNzYXJ5XG4gICAgICAgIC8vIGFuZC9vciB1cGRhdGVDb21wb25lbnQg
dG8gZG8gdGhlIGFjdHVhbCB1cGRhdGUgZm9yIGNvbnNpc3RlbmN5IHdpdGhcbiAgICAgICAgLy8g
b3RoZXIgY29tcG9uZW50IHR5cGVzP1xuICAgICAgICB0aGlzLl9zdHJpbmdUZXh0ID0gbmV4dFN0
cmluZ1RleHQ7XG4gICAgICAgIHZhciBjb21tZW50Tm9kZXMgPSB0aGlzLmdldEhvc3ROb2RlKCk7
XG4gICAgICAgIERPTUNoaWxkcmVuT3BlcmF0aW9ucy5yZXBsYWNlRGVsaW1pdGVkVGV4dChjb21t
ZW50Tm9kZXNbMF0sIGNvbW1lbnROb2Rlc1sxXSwgbmV4dFN0cmluZ1RleHQpO1xuICAgICAgfVxu
ICAgIH1cbiAgfSxcblxuICBnZXRIb3N0Tm9kZTogZnVuY3Rpb24gKCkge1xuICAgIHZhciBob3N0
Tm9kZSA9IHRoaXMuX2NvbW1lbnROb2RlcztcbiAgICBpZiAoaG9zdE5vZGUpIHtcbiAgICAgIHJl
dHVybiBob3N0Tm9kZTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLl9jbG9zaW5nQ29tbWVudCkge1xu
ICAgICAgdmFyIG9wZW5pbmdDb21tZW50ID0gUmVhY3RET01Db21wb25lbnRUcmVlLmdldE5vZGVG
cm9tSW5zdGFuY2UodGhpcyk7XG4gICAgICB2YXIgbm9kZSA9IG9wZW5pbmdDb21tZW50Lm5leHRT
aWJsaW5nO1xuICAgICAgd2hpbGUgKHRydWUpIHtcbiAgICAgICAgIShub2RlICE9IG51bGwpID8g
cHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwg
J01pc3NpbmcgY2xvc2luZyBjb21tZW50IGZvciB0ZXh0IGNvbXBvbmVudCAlcycsIHRoaXMuX2Rv
bUlEKSA6IF9wcm9kSW52YXJpYW50KCc2NycsIHRoaXMuX2RvbUlEKSA6IHZvaWQgMDtcbiAgICAg
ICAgaWYgKG5vZGUubm9kZVR5cGUgPT09IDggJiYgbm9kZS5ub2RlVmFsdWUgPT09ICcgL3JlYWN0
LXRleHQgJykge1xuICAgICAgICAgIHRoaXMuX2Nsb3NpbmdDb21tZW50ID0gbm9kZTtcbiAgICAg
ICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBub2RlID0gbm9kZS5uZXh0U2libGluZztc
biAgICAgIH1cbiAgICB9XG4gICAgaG9zdE5vZGUgPSBbdGhpcy5faG9zdE5vZGUsIHRoaXMuX2Ns
b3NpbmdDb21tZW50XTtcbiAgICB0aGlzLl9jb21tZW50Tm9kZXMgPSBob3N0Tm9kZTtcbiAgICBy
ZXR1cm4gaG9zdE5vZGU7XG4gIH0sXG5cbiAgdW5tb3VudENvbXBvbmVudDogZnVuY3Rpb24gKCkg
e1xuICAgIHRoaXMuX2Nsb3NpbmdDb21tZW50ID0gbnVsbDtcbiAgICB0aGlzLl9jb21tZW50Tm9k
ZXMgPSBudWxsO1xuICAgIFJlYWN0RE9NQ29tcG9uZW50VHJlZS51bmNhY2hlTm9kZSh0aGlzKTtc
biAgfVxufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RET01UZXh0Q29tcG9uZW50O1xuXG5c
bi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0LWRv
bS9saWIvUmVhY3RET01UZXh0Q29tcG9uZW50LmpzXG4gKiogbW9kdWxlIGlkID0gMTQ2XG4gKiog
bW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQs
IEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291
cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGlu
IHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJj
ZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBm
b3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9c
blxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgX3Byb2RJbnZhcmlhbnQgPSByZXF1aXJlKCcuL3JlYWN0
UHJvZEludmFyaWFudCcpLFxuICAgIF9hc3NpZ24gPSByZXF1aXJlKCdvYmplY3QtYXNzaWduJyk7
XG5cbnZhciBMaW5rZWRWYWx1ZVV0aWxzID0gcmVxdWlyZSgnLi9MaW5rZWRWYWx1ZVV0aWxzJyk7
XG52YXIgUmVhY3RET01Db21wb25lbnRUcmVlID0gcmVxdWlyZSgnLi9SZWFjdERPTUNvbXBvbmVu
dFRyZWUnKTtcbnZhciBSZWFjdFVwZGF0ZXMgPSByZXF1aXJlKCcuL1JlYWN0VXBkYXRlcycpO1xu
XG52YXIgaW52YXJpYW50ID0gcmVxdWlyZSgnZmJqcy9saWIvaW52YXJpYW50Jyk7XG52YXIgd2Fy
bmluZyA9IHJlcXVpcmUoJ2ZianMvbGliL3dhcm5pbmcnKTtcblxudmFyIGRpZFdhcm5WYWx1ZUxp
bmsgPSBmYWxzZTtcbnZhciBkaWRXYXJuVmFsRGVmYXVsdFZhbCA9IGZhbHNlO1xuXG5mdW5jdGlv
biBmb3JjZVVwZGF0ZUlmTW91bnRlZCgpIHtcbiAgaWYgKHRoaXMuX3Jvb3ROb2RlSUQpIHtcbiAg
ICAvLyBET00gY29tcG9uZW50IGlzIHN0aWxsIG1vdW50ZWQ7IHVwZGF0ZVxuICAgIFJlYWN0RE9N
VGV4dGFyZWEudXBkYXRlV3JhcHBlcih0aGlzKTtcbiAgfVxufVxuXG4vKipcbiAqIEltcGxlbWVu
dHMgYSA8dGV4dGFyZWE+IGhvc3QgY29tcG9uZW50IHRoYXQgYWxsb3dzIHNldHRpbmcgYHZhbHVl
YCwgYW5kXG4gKiBgZGVmYXVsdFZhbHVlYC4gVGhpcyBkaWZmZXJzIGZyb20gdGhlIHRyYWRpdGlv
bmFsIERPTSBBUEkgYmVjYXVzZSB2YWx1ZSBpc1xuICogdXN1YWxseSBzZXQgYXMgUENEQVRBIGNo
aWxkcmVuLlxuICpcbiAqIElmIGB2YWx1ZWAgaXMgbm90IHN1cHBsaWVkIChvciBudWxsL3VuZGVm
aW5lZCksIHVzZXIgYWN0aW9ucyB0aGF0IGFmZmVjdCB0aGVcbiAqIHZhbHVlIHdpbGwgdHJpZ2dl
ciB1cGRhdGVzIHRvIHRoZSBlbGVtZW50LlxuICpcbiAqIElmIGB2YWx1ZWAgaXMgc3VwcGxpZWQg
KGFuZCBub3QgbnVsbC91bmRlZmluZWQpLCB0aGUgcmVuZGVyZWQgZWxlbWVudCB3aWxsXG4gKiBu
b3QgdHJpZ2dlciB1cGRhdGVzIHRvIHRoZSBlbGVtZW50LiBJbnN0ZWFkLCB0aGUgYHZhbHVlYCBw
cm9wIG11c3QgY2hhbmdlIGluXG4gKiBvcmRlciBmb3IgdGhlIHJlbmRlcmVkIGVsZW1lbnQgdG8g
YmUgdXBkYXRlZC5cbiAqXG4gKiBUaGUgcmVuZGVyZWQgZWxlbWVudCB3aWxsIGJlIGluaXRpYWxp
emVkIHdpdGggYW4gZW1wdHkgdmFsdWUsIHRoZSBwcm9wXG4gKiBgZGVmYXVsdFZhbHVlYCBpZiBz
cGVjaWZpZWQsIG9yIHRoZSBjaGlsZHJlbiBjb250ZW50IChkZXByZWNhdGVkKS5cbiAqL1xudmFy
IFJlYWN0RE9NVGV4dGFyZWEgPSB7XG4gIGdldEhvc3RQcm9wczogZnVuY3Rpb24gKGluc3QsIHBy
b3BzKSB7XG4gICAgIShwcm9wcy5kYW5nZXJvdXNseVNldElubmVySFRNTCA9PSBudWxsKSA/IHBy
b2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdg
ZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUxgIGRvZXMgbm90IG1ha2Ugc2Vuc2Ugb24gPHRleHRhcmVh
Pi4nKSA6IF9wcm9kSW52YXJpYW50KCc5MScpIDogdm9pZCAwO1xuXG4gICAgLy8gQWx3YXlzIHNl
dCBjaGlsZHJlbiB0byB0aGUgc2FtZSB0aGluZy4gSW4gSUU5LCB0aGUgc2VsZWN0aW9uIHJhbmdl
IHdpbGxcbiAgICAvLyBnZXQgcmVzZXQgaWYgYHRleHRDb250ZW50YCBpcyBtdXRhdGVkLiAgV2Ug
Y291bGQgYWRkIGEgY2hlY2sgaW4gc2V0VGV4dENvbnRlbnRcbiAgICAvLyB0byBvbmx5IHNldCB0
aGUgdmFsdWUgaWYvd2hlbiB0aGUgdmFsdWUgZGlmZmVycyBmcm9tIHRoZSBub2RlIHZhbHVlICh3
aGljaCB3b3VsZFxuICAgIC8vIGNvbXBsZXRlbHkgc29sdmUgdGhpcyBJRTkgYnVnKSwgYnV0IFNl
YmFzdGlhbitCZW4gc2VlbWVkIHRvIGxpa2UgdGhpcyBzb2x1dGlvbi5cbiAgICAvLyBUaGUgdmFs
dWUgY2FuIGJlIGEgYm9vbGVhbiBvciBvYmplY3Qgc28gdGhhdCdzIHdoeSBpdCdzIGZvcmNlZCB0
byBiZSBhIHN0cmluZy5cbiAgICB2YXIgaG9zdFByb3BzID0gX2Fzc2lnbih7fSwgcHJvcHMsIHtc
biAgICAgIHZhbHVlOiB1bmRlZmluZWQsXG4gICAgICBkZWZhdWx0VmFsdWU6IHVuZGVmaW5lZCxc
biAgICAgIGNoaWxkcmVuOiAnJyArIGluc3QuX3dyYXBwZXJTdGF0ZS5pbml0aWFsVmFsdWUsXG4g
ICAgICBvbkNoYW5nZTogaW5zdC5fd3JhcHBlclN0YXRlLm9uQ2hhbmdlXG4gICAgfSk7XG5cbiAg
ICByZXR1cm4gaG9zdFByb3BzO1xuICB9LFxuXG4gIG1vdW50V3JhcHBlcjogZnVuY3Rpb24gKGlu
c3QsIHByb3BzKSB7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlv
bicpIHtcbiAgICAgIExpbmtlZFZhbHVlVXRpbHMuY2hlY2tQcm9wVHlwZXMoJ3RleHRhcmVhJywg
cHJvcHMsIGluc3QuX2N1cnJlbnRFbGVtZW50Ll9vd25lcik7XG4gICAgICBpZiAocHJvcHMudmFs
dWVMaW5rICE9PSB1bmRlZmluZWQgJiYgIWRpZFdhcm5WYWx1ZUxpbmspIHtcbiAgICAgICAgcHJv
Y2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdgdmFs
dWVMaW5rYCBwcm9wIG9uIGB0ZXh0YXJlYWAgaXMgZGVwcmVjYXRlZDsgc2V0IGB2YWx1ZWAgYW5k
IGBvbkNoYW5nZWAgaW5zdGVhZC4nKSA6IHZvaWQgMDtcbiAgICAgICAgZGlkV2FyblZhbHVlTGlu
ayA9IHRydWU7XG4gICAgICB9XG4gICAgICBpZiAocHJvcHMudmFsdWUgIT09IHVuZGVmaW5lZCAm
JiBwcm9wcy5kZWZhdWx0VmFsdWUgIT09IHVuZGVmaW5lZCAmJiAhZGlkV2FyblZhbERlZmF1bHRW
YWwpIHtcbiAgICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdh
cm5pbmcoZmFsc2UsICdUZXh0YXJlYSBlbGVtZW50cyBtdXN0IGJlIGVpdGhlciBjb250cm9sbGVk
IG9yIHVuY29udHJvbGxlZCAnICsgJyhzcGVjaWZ5IGVpdGhlciB0aGUgdmFsdWUgcHJvcCwgb3Ig
dGhlIGRlZmF1bHRWYWx1ZSBwcm9wLCBidXQgbm90ICcgKyAnYm90aCkuIERlY2lkZSBiZXR3ZWVu
IHVzaW5nIGEgY29udHJvbGxlZCBvciB1bmNvbnRyb2xsZWQgdGV4dGFyZWEgJyArICdhbmQgcmVt
b3ZlIG9uZSBvZiB0aGVzZSBwcm9wcy4gTW9yZSBpbmZvOiAnICsgJ2h0dHBzOi8vZmIubWUvcmVh
Y3QtY29udHJvbGxlZC1jb21wb25lbnRzJykgOiB2b2lkIDA7XG4gICAgICAgIGRpZFdhcm5WYWxE
ZWZhdWx0VmFsID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgdmFsdWUgPSBMaW5r
ZWRWYWx1ZVV0aWxzLmdldFZhbHVlKHByb3BzKTtcbiAgICB2YXIgaW5pdGlhbFZhbHVlID0gdmFs
dWU7XG5cbiAgICAvLyBPbmx5IGJvdGhlciBmZXRjaGluZyBkZWZhdWx0IHZhbHVlIGlmIHdlJ3Jl
IGdvaW5nIHRvIHVzZSBpdFxuICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgICB2YXIgZGVm
YXVsdFZhbHVlID0gcHJvcHMuZGVmYXVsdFZhbHVlO1xuICAgICAgLy8gVE9ETyAoeXVuZ3N0ZXJz
KTogUmVtb3ZlIHN1cHBvcnQgZm9yIGNoaWxkcmVuIGNvbnRlbnQgaW4gPHRleHRhcmVhPi5cbiAg
ICAgIHZhciBjaGlsZHJlbiA9IHByb3BzLmNoaWxkcmVuO1xuICAgICAgaWYgKGNoaWxkcmVuICE9
IG51bGwpIHtcbiAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlv
bicpIHtcbiAgICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8g
d2FybmluZyhmYWxzZSwgJ1VzZSB0aGUgYGRlZmF1bHRWYWx1ZWAgb3IgYHZhbHVlYCBwcm9wcyBp
bnN0ZWFkIG9mIHNldHRpbmcgJyArICdjaGlsZHJlbiBvbiA8dGV4dGFyZWE+LicpIDogdm9pZCAw
O1xuICAgICAgICB9XG4gICAgICAgICEoZGVmYXVsdFZhbHVlID09IG51bGwpID8gcHJvY2Vzcy5l
bnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ0lmIHlvdSBz
dXBwbHkgYGRlZmF1bHRWYWx1ZWAgb24gYSA8dGV4dGFyZWE+LCBkbyBub3QgcGFzcyBjaGlsZHJl
bi4nKSA6IF9wcm9kSW52YXJpYW50KCc5MicpIDogdm9pZCAwO1xuICAgICAgICBpZiAoQXJyYXku
aXNBcnJheShjaGlsZHJlbikpIHtcbiAgICAgICAgICAhKGNoaWxkcmVuLmxlbmd0aCA8PSAxKSA/
IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2Us
ICc8dGV4dGFyZWE+IGNhbiBvbmx5IGhhdmUgYXQgbW9zdCBvbmUgY2hpbGQuJykgOiBfcHJvZElu
dmFyaWFudCgnOTMnKSA6IHZvaWQgMDtcbiAgICAgICAgICBjaGlsZHJlbiA9IGNoaWxkcmVuWzBd
O1xuICAgICAgICB9XG5cbiAgICAgICAgZGVmYXVsdFZhbHVlID0gJycgKyBjaGlsZHJlbjtcbiAg
ICAgIH1cbiAgICAgIGlmIChkZWZhdWx0VmFsdWUgPT0gbnVsbCkge1xuICAgICAgICBkZWZhdWx0
VmFsdWUgPSAnJztcbiAgICAgIH1cbiAgICAgIGluaXRpYWxWYWx1ZSA9IGRlZmF1bHRWYWx1ZTtc
biAgICB9XG5cbiAgICBpbnN0Ll93cmFwcGVyU3RhdGUgPSB7XG4gICAgICBpbml0aWFsVmFsdWU6
ICcnICsgaW5pdGlhbFZhbHVlLFxuICAgICAgbGlzdGVuZXJzOiBudWxsLFxuICAgICAgb25DaGFu
Z2U6IF9oYW5kbGVDaGFuZ2UuYmluZChpbnN0KVxuICAgIH07XG4gIH0sXG5cbiAgdXBkYXRlV3Jh
cHBlcjogZnVuY3Rpb24gKGluc3QpIHtcbiAgICB2YXIgcHJvcHMgPSBpbnN0Ll9jdXJyZW50RWxl
bWVudC5wcm9wcztcblxuICAgIHZhciBub2RlID0gUmVhY3RET01Db21wb25lbnRUcmVlLmdldE5v
ZGVGcm9tSW5zdGFuY2UoaW5zdCk7XG4gICAgdmFyIHZhbHVlID0gTGlua2VkVmFsdWVVdGlscy5n
ZXRWYWx1ZShwcm9wcyk7XG4gICAgaWYgKHZhbHVlICE9IG51bGwpIHtcbiAgICAgIC8vIENhc3Qg
YHZhbHVlYCB0byBhIHN0cmluZyB0byBlbnN1cmUgdGhlIHZhbHVlIGlzIHNldCBjb3JyZWN0bHku
IFdoaWxlXG4gICAgICAvLyBicm93c2VycyB0eXBpY2FsbHkgZG8gdGhpcyBhcyBuZWNlc3Nhcnks
IGpzZG9tIGRvZXNuJ3QuXG4gICAgICB2YXIgbmV3VmFsdWUgPSAnJyArIHZhbHVlO1xuXG4gICAg
ICAvLyBUbyBhdm9pZCBzaWRlIGVmZmVjdHMgKHN1Y2ggYXMgbG9zaW5nIHRleHQgc2VsZWN0aW9u
KSwgb25seSBzZXQgdmFsdWUgaWYgY2hhbmdlZFxuICAgICAgaWYgKG5ld1ZhbHVlICE9PSBub2Rl
LnZhbHVlKSB7XG4gICAgICAgIG5vZGUudmFsdWUgPSBuZXdWYWx1ZTtcbiAgICAgIH1cbiAgICAg
IGlmIChwcm9wcy5kZWZhdWx0VmFsdWUgPT0gbnVsbCkge1xuICAgICAgICBub2RlLmRlZmF1bHRW
YWx1ZSA9IG5ld1ZhbHVlO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAocHJvcHMuZGVmYXVsdFZh
bHVlICE9IG51bGwpIHtcbiAgICAgIG5vZGUuZGVmYXVsdFZhbHVlID0gcHJvcHMuZGVmYXVsdFZh
bHVlO1xuICAgIH1cbiAgfSxcblxuICBwb3N0TW91bnRXcmFwcGVyOiBmdW5jdGlvbiAoaW5zdCkg
e1xuICAgIC8vIFRoaXMgaXMgaW4gcG9zdE1vdW50IGJlY2F1c2Ugd2UgbmVlZCBhY2Nlc3MgdG8g
dGhlIERPTSBub2RlLCB3aGljaCBpcyBub3RcbiAgICAvLyBhdmFpbGFibGUgdW50aWwgYWZ0ZXIg
dGhlIGNvbXBvbmVudCBoYXMgbW91bnRlZC5cbiAgICB2YXIgbm9kZSA9IFJlYWN0RE9NQ29tcG9u
ZW50VHJlZS5nZXROb2RlRnJvbUluc3RhbmNlKGluc3QpO1xuICAgIHZhciB0ZXh0Q29udGVudCA9
IG5vZGUudGV4dENvbnRlbnQ7XG5cbiAgICAvLyBPbmx5IHNldCBub2RlLnZhbHVlIGlmIHRleHRD
b250ZW50IGlzIGVxdWFsIHRvIHRoZSBleHBlY3RlZFxuICAgIC8vIGluaXRpYWwgdmFsdWUuIElu
IElFMTAvSUUxMSB0aGVyZSBpcyBhIGJ1ZyB3aGVyZSB0aGUgcGxhY2Vob2xkZXIgYXR0cmlidXRl
XG4gICAgLy8gd2lsbCBwb3B1bGF0ZSB0ZXh0Q29udGVudCBhcyB3ZWxsLlxuICAgIC8vIGh0dHBz
Oi8vZGV2ZWxvcGVyLm1pY3Jvc29mdC5jb20vbWljcm9zb2Z0LWVkZ2UvcGxhdGZvcm0vaXNzdWVz
LzEwMTUyNS9cbiAgICBpZiAodGV4dENvbnRlbnQgPT09IGluc3QuX3dyYXBwZXJTdGF0ZS5pbml0
aWFsVmFsdWUpIHtcbiAgICAgIG5vZGUudmFsdWUgPSB0ZXh0Q29udGVudDtcbiAgICB9XG4gIH1c
bn07XG5cbmZ1bmN0aW9uIF9oYW5kbGVDaGFuZ2UoZXZlbnQpIHtcbiAgdmFyIHByb3BzID0gdGhp
cy5fY3VycmVudEVsZW1lbnQucHJvcHM7XG4gIHZhciByZXR1cm5WYWx1ZSA9IExpbmtlZFZhbHVl
VXRpbHMuZXhlY3V0ZU9uQ2hhbmdlKHByb3BzLCBldmVudCk7XG4gIFJlYWN0VXBkYXRlcy5hc2Fw
KGZvcmNlVXBkYXRlSWZNb3VudGVkLCB0aGlzKTtcbiAgcmV0dXJuIHJldHVyblZhbHVlO1xufVxu
XG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0RE9NVGV4dGFyZWE7XG5cblxuLyoqKioqKioqKioqKioq
KioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3QtZG9tL2xpYi9SZWFjdERPTVRl
eHRhcmVhLmpzXG4gKiogbW9kdWxlIGlkID0gMTQ3XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAq
Ki8iLCIvKipcbiAqIENvcHlyaWdodCAyMDE1LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBB
bGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQg
dW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxl
IGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFs
IGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBm
aWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52
YXIgX3Byb2RJbnZhcmlhbnQgPSByZXF1aXJlKCcuL3JlYWN0UHJvZEludmFyaWFudCcpO1xuXG52
YXIgaW52YXJpYW50ID0gcmVxdWlyZSgnZmJqcy9saWIvaW52YXJpYW50Jyk7XG5cbi8qKlxuICog
UmV0dXJuIHRoZSBsb3dlc3QgY29tbW9uIGFuY2VzdG9yIG9mIEEgYW5kIEIsIG9yIG51bGwgaWYg
dGhleSBhcmUgaW5cbiAqIGRpZmZlcmVudCB0cmVlcy5cbiAqL1xuZnVuY3Rpb24gZ2V0TG93ZXN0
Q29tbW9uQW5jZXN0b3IoaW5zdEEsIGluc3RCKSB7XG4gICEoJ19ob3N0Tm9kZScgaW4gaW5zdEEp
ID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxz
ZSwgJ2dldE5vZGVGcm9tSW5zdGFuY2U6IEludmFsaWQgYXJndW1lbnQuJykgOiBfcHJvZEludmFy
aWFudCgnMzMnKSA6IHZvaWQgMDtcbiAgISgnX2hvc3ROb2RlJyBpbiBpbnN0QikgPyBwcm9jZXNz
LmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnZ2V0Tm9k
ZUZyb21JbnN0YW5jZTogSW52YWxpZCBhcmd1bWVudC4nKSA6IF9wcm9kSW52YXJpYW50KCczMycp
IDogdm9pZCAwO1xuXG4gIHZhciBkZXB0aEEgPSAwO1xuICBmb3IgKHZhciB0ZW1wQSA9IGluc3RB
OyB0ZW1wQTsgdGVtcEEgPSB0ZW1wQS5faG9zdFBhcmVudCkge1xuICAgIGRlcHRoQSsrO1xuICB9
XG4gIHZhciBkZXB0aEIgPSAwO1xuICBmb3IgKHZhciB0ZW1wQiA9IGluc3RCOyB0ZW1wQjsgdGVt
cEIgPSB0ZW1wQi5faG9zdFBhcmVudCkge1xuICAgIGRlcHRoQisrO1xuICB9XG5cbiAgLy8gSWYg
QSBpcyBkZWVwZXIsIGNyYXdsIHVwLlxuICB3aGlsZSAoZGVwdGhBIC0gZGVwdGhCID4gMCkge1xu
ICAgIGluc3RBID0gaW5zdEEuX2hvc3RQYXJlbnQ7XG4gICAgZGVwdGhBLS07XG4gIH1cblxuICAv
LyBJZiBCIGlzIGRlZXBlciwgY3Jhd2wgdXAuXG4gIHdoaWxlIChkZXB0aEIgLSBkZXB0aEEgPiAw
KSB7XG4gICAgaW5zdEIgPSBpbnN0Qi5faG9zdFBhcmVudDtcbiAgICBkZXB0aEItLTtcbiAgfVxu
XG4gIC8vIFdhbGsgaW4gbG9ja3N0ZXAgdW50aWwgd2UgZmluZCBhIG1hdGNoLlxuICB2YXIgZGVw
dGggPSBkZXB0aEE7XG4gIHdoaWxlIChkZXB0aC0tKSB7XG4gICAgaWYgKGluc3RBID09PSBpbnN0
Qikge1xuICAgICAgcmV0dXJuIGluc3RBO1xuICAgIH1cbiAgICBpbnN0QSA9IGluc3RBLl9ob3N0
UGFyZW50O1xuICAgIGluc3RCID0gaW5zdEIuX2hvc3RQYXJlbnQ7XG4gIH1cbiAgcmV0dXJuIG51
bGw7XG59XG5cbi8qKlxuICogUmV0dXJuIGlmIEEgaXMgYW4gYW5jZXN0b3Igb2YgQi5cbiAqL1xu
ZnVuY3Rpb24gaXNBbmNlc3RvcihpbnN0QSwgaW5zdEIpIHtcbiAgISgnX2hvc3ROb2RlJyBpbiBp
bnN0QSkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50
KGZhbHNlLCAnaXNBbmNlc3RvcjogSW52YWxpZCBhcmd1bWVudC4nKSA6IF9wcm9kSW52YXJpYW50
KCczNScpIDogdm9pZCAwO1xuICAhKCdfaG9zdE5vZGUnIGluIGluc3RCKSA/IHByb2Nlc3MuZW52
Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdpc0FuY2VzdG9y
OiBJbnZhbGlkIGFyZ3VtZW50LicpIDogX3Byb2RJbnZhcmlhbnQoJzM1JykgOiB2b2lkIDA7XG5c
biAgd2hpbGUgKGluc3RCKSB7XG4gICAgaWYgKGluc3RCID09PSBpbnN0QSkge1xuICAgICAgcmV0
dXJuIHRydWU7XG4gICAgfVxuICAgIGluc3RCID0gaW5zdEIuX2hvc3RQYXJlbnQ7XG4gIH1cbiAg
cmV0dXJuIGZhbHNlO1xufVxuXG4vKipcbiAqIFJldHVybiB0aGUgcGFyZW50IGluc3RhbmNlIG9m
IHRoZSBwYXNzZWQtaW4gaW5zdGFuY2UuXG4gKi9cbmZ1bmN0aW9uIGdldFBhcmVudEluc3RhbmNl
KGluc3QpIHtcbiAgISgnX2hvc3ROb2RlJyBpbiBpbnN0KSA/IHByb2Nlc3MuZW52Lk5PREVfRU5W
ICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdnZXRQYXJlbnRJbnN0YW5jZTog
SW52YWxpZCBhcmd1bWVudC4nKSA6IF9wcm9kSW52YXJpYW50KCczNicpIDogdm9pZCAwO1xuXG4g
IHJldHVybiBpbnN0Ll9ob3N0UGFyZW50O1xufVxuXG4vKipcbiAqIFNpbXVsYXRlcyB0aGUgdHJh
dmVyc2FsIG9mIGEgdHdvLXBoYXNlLCBjYXB0dXJlL2J1YmJsZSBldmVudCBkaXNwYXRjaC5cbiAq
L1xuZnVuY3Rpb24gdHJhdmVyc2VUd29QaGFzZShpbnN0LCBmbiwgYXJnKSB7XG4gIHZhciBwYXRo
ID0gW107XG4gIHdoaWxlIChpbnN0KSB7XG4gICAgcGF0aC5wdXNoKGluc3QpO1xuICAgIGluc3Qg
PSBpbnN0Ll9ob3N0UGFyZW50O1xuICB9XG4gIHZhciBpO1xuICBmb3IgKGkgPSBwYXRoLmxlbmd0
aDsgaS0tID4gMDspIHtcbiAgICBmbihwYXRoW2ldLCAnY2FwdHVyZWQnLCBhcmcpO1xuICB9XG4g
IGZvciAoaSA9IDA7IGkgPCBwYXRoLmxlbmd0aDsgaSsrKSB7XG4gICAgZm4ocGF0aFtpXSwgJ2J1
YmJsZWQnLCBhcmcpO1xuICB9XG59XG5cbi8qKlxuICogVHJhdmVyc2VzIHRoZSBJRCBoaWVyYXJj
aHkgYW5kIGludm9rZXMgdGhlIHN1cHBsaWVkIGBjYmAgb24gYW55IElEcyB0aGF0XG4gKiBzaG91
bGQgd291bGQgcmVjZWl2ZSBhIGBtb3VzZUVudGVyYCBvciBgbW91c2VMZWF2ZWAgZXZlbnQuXG4g
KlxuICogRG9lcyBub3QgaW52b2tlIHRoZSBjYWxsYmFjayBvbiB0aGUgbmVhcmVzdCBjb21tb24g
YW5jZXN0b3IgYmVjYXVzZSBub3RoaW5nXG4gKiBcImVudGVyZWRcIiBvciBcImxlZnRcIiB0aGF0
IGVsZW1lbnQuXG4gKi9cbmZ1bmN0aW9uIHRyYXZlcnNlRW50ZXJMZWF2ZShmcm9tLCB0bywgZm4s
IGFyZ0Zyb20sIGFyZ1RvKSB7XG4gIHZhciBjb21tb24gPSBmcm9tICYmIHRvID8gZ2V0TG93ZXN0
Q29tbW9uQW5jZXN0b3IoZnJvbSwgdG8pIDogbnVsbDtcbiAgdmFyIHBhdGhGcm9tID0gW107XG4g
IHdoaWxlIChmcm9tICYmIGZyb20gIT09IGNvbW1vbikge1xuICAgIHBhdGhGcm9tLnB1c2goZnJv
bSk7XG4gICAgZnJvbSA9IGZyb20uX2hvc3RQYXJlbnQ7XG4gIH1cbiAgdmFyIHBhdGhUbyA9IFtd
O1xuICB3aGlsZSAodG8gJiYgdG8gIT09IGNvbW1vbikge1xuICAgIHBhdGhUby5wdXNoKHRvKTtc
biAgICB0byA9IHRvLl9ob3N0UGFyZW50O1xuICB9XG4gIHZhciBpO1xuICBmb3IgKGkgPSAwOyBp
IDwgcGF0aEZyb20ubGVuZ3RoOyBpKyspIHtcbiAgICBmbihwYXRoRnJvbVtpXSwgJ2J1YmJsZWQn
LCBhcmdGcm9tKTtcbiAgfVxuICBmb3IgKGkgPSBwYXRoVG8ubGVuZ3RoOyBpLS0gPiAwOykge1xu
ICAgIGZuKHBhdGhUb1tpXSwgJ2NhcHR1cmVkJywgYXJnVG8pO1xuICB9XG59XG5cbm1vZHVsZS5l
eHBvcnRzID0ge1xuICBpc0FuY2VzdG9yOiBpc0FuY2VzdG9yLFxuICBnZXRMb3dlc3RDb21tb25B
bmNlc3RvcjogZ2V0TG93ZXN0Q29tbW9uQW5jZXN0b3IsXG4gIGdldFBhcmVudEluc3RhbmNlOiBn
ZXRQYXJlbnRJbnN0YW5jZSxcbiAgdHJhdmVyc2VUd29QaGFzZTogdHJhdmVyc2VUd29QaGFzZSxc
biAgdHJhdmVyc2VFbnRlckxlYXZlOiB0cmF2ZXJzZUVudGVyTGVhdmVcbn07XG5cblxuLyoqKioq
KioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3QtZG9tL2xpYi9S
ZWFjdERPTVRyZWVUcmF2ZXJzYWwuanNcbiAqKiBtb2R1bGUgaWQgPSAxNDhcbiAqKiBtb2R1bGUg
Y2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJv
b2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29k
ZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4g
KiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUu
IEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGlu
IHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNl
IHN0cmljdCc7XG5cbnZhciBfYXNzaWduID0gcmVxdWlyZSgnb2JqZWN0LWFzc2lnbicpO1xuXG52
YXIgUmVhY3RVcGRhdGVzID0gcmVxdWlyZSgnLi9SZWFjdFVwZGF0ZXMnKTtcbnZhciBUcmFuc2Fj
dGlvbiA9IHJlcXVpcmUoJy4vVHJhbnNhY3Rpb24nKTtcblxudmFyIGVtcHR5RnVuY3Rpb24gPSBy
ZXF1aXJlKCdmYmpzL2xpYi9lbXB0eUZ1bmN0aW9uJyk7XG5cbnZhciBSRVNFVF9CQVRDSEVEX1VQ
REFURVMgPSB7XG4gIGluaXRpYWxpemU6IGVtcHR5RnVuY3Rpb24sXG4gIGNsb3NlOiBmdW5jdGlv
biAoKSB7XG4gICAgUmVhY3REZWZhdWx0QmF0Y2hpbmdTdHJhdGVneS5pc0JhdGNoaW5nVXBkYXRl
cyA9IGZhbHNlO1xuICB9XG59O1xuXG52YXIgRkxVU0hfQkFUQ0hFRF9VUERBVEVTID0ge1xuICBp
bml0aWFsaXplOiBlbXB0eUZ1bmN0aW9uLFxuICBjbG9zZTogUmVhY3RVcGRhdGVzLmZsdXNoQmF0
Y2hlZFVwZGF0ZXMuYmluZChSZWFjdFVwZGF0ZXMpXG59O1xuXG52YXIgVFJBTlNBQ1RJT05fV1JB
UFBFUlMgPSBbRkxVU0hfQkFUQ0hFRF9VUERBVEVTLCBSRVNFVF9CQVRDSEVEX1VQREFURVNdO1xu
XG5mdW5jdGlvbiBSZWFjdERlZmF1bHRCYXRjaGluZ1N0cmF0ZWd5VHJhbnNhY3Rpb24oKSB7XG4g
IHRoaXMucmVpbml0aWFsaXplVHJhbnNhY3Rpb24oKTtcbn1cblxuX2Fzc2lnbihSZWFjdERlZmF1
bHRCYXRjaGluZ1N0cmF0ZWd5VHJhbnNhY3Rpb24ucHJvdG90eXBlLCBUcmFuc2FjdGlvbiwge1xu
ICBnZXRUcmFuc2FjdGlvbldyYXBwZXJzOiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIFRSQU5T
QUNUSU9OX1dSQVBQRVJTO1xuICB9XG59KTtcblxudmFyIHRyYW5zYWN0aW9uID0gbmV3IFJlYWN0
RGVmYXVsdEJhdGNoaW5nU3RyYXRlZ3lUcmFuc2FjdGlvbigpO1xuXG52YXIgUmVhY3REZWZhdWx0
QmF0Y2hpbmdTdHJhdGVneSA9IHtcbiAgaXNCYXRjaGluZ1VwZGF0ZXM6IGZhbHNlLFxuXG4gIC8q
KlxuICAgKiBDYWxsIHRoZSBwcm92aWRlZCBmdW5jdGlvbiBpbiBhIGNvbnRleHQgd2l0aGluIHdo
aWNoIGNhbGxzIHRvIGBzZXRTdGF0ZWBcbiAgICogYW5kIGZyaWVuZHMgYXJlIGJhdGNoZWQgc3Vj
aCB0aGF0IGNvbXBvbmVudHMgYXJlbid0IHVwZGF0ZWQgdW5uZWNlc3NhcmlseS5cbiAgICovXG4g
IGJhdGNoZWRVcGRhdGVzOiBmdW5jdGlvbiAoY2FsbGJhY2ssIGEsIGIsIGMsIGQsIGUpIHtcbiAg
ICB2YXIgYWxyZWFkeUJhdGNoaW5nVXBkYXRlcyA9IFJlYWN0RGVmYXVsdEJhdGNoaW5nU3RyYXRl
Z3kuaXNCYXRjaGluZ1VwZGF0ZXM7XG5cbiAgICBSZWFjdERlZmF1bHRCYXRjaGluZ1N0cmF0ZWd5
LmlzQmF0Y2hpbmdVcGRhdGVzID0gdHJ1ZTtcblxuICAgIC8vIFRoZSBjb2RlIGlzIHdyaXR0ZW4g
dGhpcyB3YXkgdG8gYXZvaWQgZXh0cmEgYWxsb2NhdGlvbnNcbiAgICBpZiAoYWxyZWFkeUJhdGNo
aW5nVXBkYXRlcykge1xuICAgICAgcmV0dXJuIGNhbGxiYWNrKGEsIGIsIGMsIGQsIGUpO1xuICAg
IH0gZWxzZSB7XG4gICAgICByZXR1cm4gdHJhbnNhY3Rpb24ucGVyZm9ybShjYWxsYmFjaywgbnVs
bCwgYSwgYiwgYywgZCwgZSk7XG4gICAgfVxuICB9XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFJl
YWN0RGVmYXVsdEJhdGNoaW5nU3RyYXRlZ3k7XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiog
V0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3QtZG9tL2xpYi9SZWFjdERlZmF1bHRCYXRjaGlu
Z1N0cmF0ZWd5LmpzXG4gKiogbW9kdWxlIGlkID0gMTQ5XG4gKiogbW9kdWxlIGNodW5rcyA9IDBc
biAqKi8iLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4g
KiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5z
ZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBm
aWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlv
bmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5U
UyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xu
XG52YXIgQVJJQURPTVByb3BlcnR5Q29uZmlnID0gcmVxdWlyZSgnLi9BUklBRE9NUHJvcGVydHlD
b25maWcnKTtcbnZhciBCZWZvcmVJbnB1dEV2ZW50UGx1Z2luID0gcmVxdWlyZSgnLi9CZWZvcmVJ
bnB1dEV2ZW50UGx1Z2luJyk7XG52YXIgQ2hhbmdlRXZlbnRQbHVnaW4gPSByZXF1aXJlKCcuL0No
YW5nZUV2ZW50UGx1Z2luJyk7XG52YXIgRGVmYXVsdEV2ZW50UGx1Z2luT3JkZXIgPSByZXF1aXJl
KCcuL0RlZmF1bHRFdmVudFBsdWdpbk9yZGVyJyk7XG52YXIgRW50ZXJMZWF2ZUV2ZW50UGx1Z2lu
ID0gcmVxdWlyZSgnLi9FbnRlckxlYXZlRXZlbnRQbHVnaW4nKTtcbnZhciBIVE1MRE9NUHJvcGVy
dHlDb25maWcgPSByZXF1aXJlKCcuL0hUTUxET01Qcm9wZXJ0eUNvbmZpZycpO1xudmFyIFJlYWN0
Q29tcG9uZW50QnJvd3NlckVudmlyb25tZW50ID0gcmVxdWlyZSgnLi9SZWFjdENvbXBvbmVudEJy
b3dzZXJFbnZpcm9ubWVudCcpO1xudmFyIFJlYWN0RE9NQ29tcG9uZW50ID0gcmVxdWlyZSgnLi9S
ZWFjdERPTUNvbXBvbmVudCcpO1xudmFyIFJlYWN0RE9NQ29tcG9uZW50VHJlZSA9IHJlcXVpcmUo
Jy4vUmVhY3RET01Db21wb25lbnRUcmVlJyk7XG52YXIgUmVhY3RET01FbXB0eUNvbXBvbmVudCA9
IHJlcXVpcmUoJy4vUmVhY3RET01FbXB0eUNvbXBvbmVudCcpO1xudmFyIFJlYWN0RE9NVHJlZVRy
YXZlcnNhbCA9IHJlcXVpcmUoJy4vUmVhY3RET01UcmVlVHJhdmVyc2FsJyk7XG52YXIgUmVhY3RE
T01UZXh0Q29tcG9uZW50ID0gcmVxdWlyZSgnLi9SZWFjdERPTVRleHRDb21wb25lbnQnKTtcbnZh
ciBSZWFjdERlZmF1bHRCYXRjaGluZ1N0cmF0ZWd5ID0gcmVxdWlyZSgnLi9SZWFjdERlZmF1bHRC
YXRjaGluZ1N0cmF0ZWd5Jyk7XG52YXIgUmVhY3RFdmVudExpc3RlbmVyID0gcmVxdWlyZSgnLi9S
ZWFjdEV2ZW50TGlzdGVuZXInKTtcbnZhciBSZWFjdEluamVjdGlvbiA9IHJlcXVpcmUoJy4vUmVh
Y3RJbmplY3Rpb24nKTtcbnZhciBSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9uID0gcmVxdWlyZSgn
Li9SZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9uJyk7XG52YXIgU1ZHRE9NUHJvcGVydHlDb25maWcg
PSByZXF1aXJlKCcuL1NWR0RPTVByb3BlcnR5Q29uZmlnJyk7XG52YXIgU2VsZWN0RXZlbnRQbHVn
aW4gPSByZXF1aXJlKCcuL1NlbGVjdEV2ZW50UGx1Z2luJyk7XG52YXIgU2ltcGxlRXZlbnRQbHVn
aW4gPSByZXF1aXJlKCcuL1NpbXBsZUV2ZW50UGx1Z2luJyk7XG5cbnZhciBhbHJlYWR5SW5qZWN0
ZWQgPSBmYWxzZTtcblxuZnVuY3Rpb24gaW5qZWN0KCkge1xuICBpZiAoYWxyZWFkeUluamVjdGVk
KSB7XG4gICAgLy8gVE9ETzogVGhpcyBpcyBjdXJyZW50bHkgdHJ1ZSBiZWNhdXNlIHRoZXNlIGlu
amVjdGlvbnMgYXJlIHNoYXJlZCBiZXR3ZWVuXG4gICAgLy8gdGhlIGNsaWVudCBhbmQgdGhlIHNl
cnZlciBwYWNrYWdlLiBUaGV5IHNob3VsZCBiZSBidWlsdCBpbmRlcGVuZGVudGx5XG4gICAgLy8g
YW5kIG5vdCBzaGFyZSBhbnkgaW5qZWN0aW9uIHN0YXRlLiBUaGVuIHRoaXMgcHJvYmxlbSB3aWxs
IGJlIHNvbHZlZC5cbiAgICByZXR1cm47XG4gIH1cbiAgYWxyZWFkeUluamVjdGVkID0gdHJ1ZTtc
blxuICBSZWFjdEluamVjdGlvbi5FdmVudEVtaXR0ZXIuaW5qZWN0UmVhY3RFdmVudExpc3RlbmVy
KFJlYWN0RXZlbnRMaXN0ZW5lcik7XG5cbiAgLyoqXG4gICAqIEluamVjdCBtb2R1bGVzIGZvciBy
ZXNvbHZpbmcgRE9NIGhpZXJhcmNoeSBhbmQgcGx1Z2luIG9yZGVyaW5nLlxuICAgKi9cbiAgUmVh
Y3RJbmplY3Rpb24uRXZlbnRQbHVnaW5IdWIuaW5qZWN0RXZlbnRQbHVnaW5PcmRlcihEZWZhdWx0
RXZlbnRQbHVnaW5PcmRlcik7XG4gIFJlYWN0SW5qZWN0aW9uLkV2ZW50UGx1Z2luVXRpbHMuaW5q
ZWN0Q29tcG9uZW50VHJlZShSZWFjdERPTUNvbXBvbmVudFRyZWUpO1xuICBSZWFjdEluamVjdGlv
bi5FdmVudFBsdWdpblV0aWxzLmluamVjdFRyZWVUcmF2ZXJzYWwoUmVhY3RET01UcmVlVHJhdmVy
c2FsKTtcblxuICAvKipcbiAgICogU29tZSBpbXBvcnRhbnQgZXZlbnQgcGx1Z2lucyBpbmNsdWRl
ZCBieSBkZWZhdWx0ICh3aXRob3V0IGhhdmluZyB0byByZXF1aXJlXG4gICAqIHRoZW0pLlxuICAg
Ki9cbiAgUmVhY3RJbmplY3Rpb24uRXZlbnRQbHVnaW5IdWIuaW5qZWN0RXZlbnRQbHVnaW5zQnlO
YW1lKHtcbiAgICBTaW1wbGVFdmVudFBsdWdpbjogU2ltcGxlRXZlbnRQbHVnaW4sXG4gICAgRW50
ZXJMZWF2ZUV2ZW50UGx1Z2luOiBFbnRlckxlYXZlRXZlbnRQbHVnaW4sXG4gICAgQ2hhbmdlRXZl
bnRQbHVnaW46IENoYW5nZUV2ZW50UGx1Z2luLFxuICAgIFNlbGVjdEV2ZW50UGx1Z2luOiBTZWxl
Y3RFdmVudFBsdWdpbixcbiAgICBCZWZvcmVJbnB1dEV2ZW50UGx1Z2luOiBCZWZvcmVJbnB1dEV2
ZW50UGx1Z2luXG4gIH0pO1xuXG4gIFJlYWN0SW5qZWN0aW9uLkhvc3RDb21wb25lbnQuaW5qZWN0
R2VuZXJpY0NvbXBvbmVudENsYXNzKFJlYWN0RE9NQ29tcG9uZW50KTtcblxuICBSZWFjdEluamVj
dGlvbi5Ib3N0Q29tcG9uZW50LmluamVjdFRleHRDb21wb25lbnRDbGFzcyhSZWFjdERPTVRleHRD
b21wb25lbnQpO1xuXG4gIFJlYWN0SW5qZWN0aW9uLkRPTVByb3BlcnR5LmluamVjdERPTVByb3Bl
cnR5Q29uZmlnKEFSSUFET01Qcm9wZXJ0eUNvbmZpZyk7XG4gIFJlYWN0SW5qZWN0aW9uLkRPTVBy
b3BlcnR5LmluamVjdERPTVByb3BlcnR5Q29uZmlnKEhUTUxET01Qcm9wZXJ0eUNvbmZpZyk7XG4g
IFJlYWN0SW5qZWN0aW9uLkRPTVByb3BlcnR5LmluamVjdERPTVByb3BlcnR5Q29uZmlnKFNWR0RP
TVByb3BlcnR5Q29uZmlnKTtcblxuICBSZWFjdEluamVjdGlvbi5FbXB0eUNvbXBvbmVudC5pbmpl
Y3RFbXB0eUNvbXBvbmVudEZhY3RvcnkoZnVuY3Rpb24gKGluc3RhbnRpYXRlKSB7XG4gICAgcmV0
dXJuIG5ldyBSZWFjdERPTUVtcHR5Q29tcG9uZW50KGluc3RhbnRpYXRlKTtcbiAgfSk7XG5cbiAg
UmVhY3RJbmplY3Rpb24uVXBkYXRlcy5pbmplY3RSZWNvbmNpbGVUcmFuc2FjdGlvbihSZWFjdFJl
Y29uY2lsZVRyYW5zYWN0aW9uKTtcbiAgUmVhY3RJbmplY3Rpb24uVXBkYXRlcy5pbmplY3RCYXRj
aGluZ1N0cmF0ZWd5KFJlYWN0RGVmYXVsdEJhdGNoaW5nU3RyYXRlZ3kpO1xuXG4gIFJlYWN0SW5q
ZWN0aW9uLkNvbXBvbmVudC5pbmplY3RFbnZpcm9ubWVudChSZWFjdENvbXBvbmVudEJyb3dzZXJF
bnZpcm9ubWVudCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBpbmplY3Q6IGluamVjdFxu
fTtcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9y
ZWFjdC1kb20vbGliL1JlYWN0RGVmYXVsdEluamVjdGlvbi5qc1xuICoqIG1vZHVsZSBpZCA9IDE1
MFxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1w
cmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBU
aGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBm
b3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhp
cyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBj
YW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4g
KlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIEV2ZW50UGx1Z2luSHViID0gcmVxdWlyZSgn
Li9FdmVudFBsdWdpbkh1YicpO1xuXG5mdW5jdGlvbiBydW5FdmVudFF1ZXVlSW5CYXRjaChldmVu
dHMpIHtcbiAgRXZlbnRQbHVnaW5IdWIuZW5xdWV1ZUV2ZW50cyhldmVudHMpO1xuICBFdmVudFBs
dWdpbkh1Yi5wcm9jZXNzRXZlbnRRdWV1ZShmYWxzZSk7XG59XG5cbnZhciBSZWFjdEV2ZW50RW1p
dHRlck1peGluID0ge1xuICAvKipcbiAgICogU3RyZWFtcyBhIGZpcmVkIHRvcC1sZXZlbCBldmVu
dCB0byBgRXZlbnRQbHVnaW5IdWJgIHdoZXJlIHBsdWdpbnMgaGF2ZSB0aGVcbiAgICogb3Bwb3J0
dW5pdHkgdG8gY3JlYXRlIGBSZWFjdEV2ZW50YHMgdG8gYmUgZGlzcGF0Y2hlZC5cbiAgICovXG4g
IGhhbmRsZVRvcExldmVsOiBmdW5jdGlvbiAodG9wTGV2ZWxUeXBlLCB0YXJnZXRJbnN0LCBuYXRp
dmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpIHtcbiAgICB2YXIgZXZlbnRzID0gRXZlbnRQbHVn
aW5IdWIuZXh0cmFjdEV2ZW50cyh0b3BMZXZlbFR5cGUsIHRhcmdldEluc3QsIG5hdGl2ZUV2ZW50
LCBuYXRpdmVFdmVudFRhcmdldCk7XG4gICAgcnVuRXZlbnRRdWV1ZUluQmF0Y2goZXZlbnRzKTtc
biAgfVxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdEV2ZW50RW1pdHRlck1peGluO1xuXG5c
bi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0LWRv
bS9saWIvUmVhY3RFdmVudEVtaXR0ZXJNaXhpbi5qc1xuICoqIG1vZHVsZSBpZCA9IDE1MlxuICoq
IG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50
LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNv
dXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBp
biB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3Vy
Y2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUg
Zm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICov
XG5cbid1c2Ugc3RyaWN0JztcblxudmFyIF9hc3NpZ24gPSByZXF1aXJlKCdvYmplY3QtYXNzaWdu
Jyk7XG5cbnZhciBFdmVudExpc3RlbmVyID0gcmVxdWlyZSgnZmJqcy9saWIvRXZlbnRMaXN0ZW5l
cicpO1xudmFyIEV4ZWN1dGlvbkVudmlyb25tZW50ID0gcmVxdWlyZSgnZmJqcy9saWIvRXhlY3V0
aW9uRW52aXJvbm1lbnQnKTtcbnZhciBQb29sZWRDbGFzcyA9IHJlcXVpcmUoJy4vUG9vbGVkQ2xh
c3MnKTtcbnZhciBSZWFjdERPTUNvbXBvbmVudFRyZWUgPSByZXF1aXJlKCcuL1JlYWN0RE9NQ29t
cG9uZW50VHJlZScpO1xudmFyIFJlYWN0VXBkYXRlcyA9IHJlcXVpcmUoJy4vUmVhY3RVcGRhdGVz
Jyk7XG5cbnZhciBnZXRFdmVudFRhcmdldCA9IHJlcXVpcmUoJy4vZ2V0RXZlbnRUYXJnZXQnKTtc
bnZhciBnZXRVbmJvdW5kZWRTY3JvbGxQb3NpdGlvbiA9IHJlcXVpcmUoJ2ZianMvbGliL2dldFVu
Ym91bmRlZFNjcm9sbFBvc2l0aW9uJyk7XG5cbi8qKlxuICogRmluZCB0aGUgZGVlcGVzdCBSZWFj
dCBjb21wb25lbnQgY29tcGxldGVseSBjb250YWluaW5nIHRoZSByb290IG9mIHRoZVxuICogcGFz
c2VkLWluIGluc3RhbmNlIChmb3IgdXNlIHdoZW4gZW50aXJlIFJlYWN0IHRyZWVzIGFyZSBuZXN0
ZWQgd2l0aGluIGVhY2hcbiAqIG90aGVyKS4gSWYgUmVhY3QgdHJlZXMgYXJlIG5vdCBuZXN0ZWQs
IHJldHVybnMgbnVsbC5cbiAqL1xuZnVuY3Rpb24gZmluZFBhcmVudChpbnN0KSB7XG4gIC8vIFRP
RE86IEl0IG1heSBiZSBhIGdvb2QgaWRlYSB0byBjYWNoZSB0aGlzIHRvIHByZXZlbnQgdW5uZWNl
c3NhcnkgRE9NXG4gIC8vIHRyYXZlcnNhbCwgYnV0IGNhY2hpbmcgaXMgZGlmZmljdWx0IHRvIGRv
IGNvcnJlY3RseSB3aXRob3V0IHVzaW5nIGFcbiAgLy8gbXV0YXRpb24gb2JzZXJ2ZXIgdG8gbGlz
dGVuIGZvciBhbGwgRE9NIGNoYW5nZXMuXG4gIHdoaWxlIChpbnN0Ll9ob3N0UGFyZW50KSB7XG4g
ICAgaW5zdCA9IGluc3QuX2hvc3RQYXJlbnQ7XG4gIH1cbiAgdmFyIHJvb3ROb2RlID0gUmVhY3RE
T01Db21wb25lbnRUcmVlLmdldE5vZGVGcm9tSW5zdGFuY2UoaW5zdCk7XG4gIHZhciBjb250YWlu
ZXIgPSByb290Tm9kZS5wYXJlbnROb2RlO1xuICByZXR1cm4gUmVhY3RET01Db21wb25lbnRUcmVl
LmdldENsb3Nlc3RJbnN0YW5jZUZyb21Ob2RlKGNvbnRhaW5lcik7XG59XG5cbi8vIFVzZWQgdG8g
c3RvcmUgYW5jZXN0b3IgaGllcmFyY2h5IGluIHRvcCBsZXZlbCBjYWxsYmFja1xuZnVuY3Rpb24g
VG9wTGV2ZWxDYWxsYmFja0Jvb2tLZWVwaW5nKHRvcExldmVsVHlwZSwgbmF0aXZlRXZlbnQpIHtc
biAgdGhpcy50b3BMZXZlbFR5cGUgPSB0b3BMZXZlbFR5cGU7XG4gIHRoaXMubmF0aXZlRXZlbnQg
PSBuYXRpdmVFdmVudDtcbiAgdGhpcy5hbmNlc3RvcnMgPSBbXTtcbn1cbl9hc3NpZ24oVG9wTGV2
ZWxDYWxsYmFja0Jvb2tLZWVwaW5nLnByb3RvdHlwZSwge1xuICBkZXN0cnVjdG9yOiBmdW5jdGlv
biAoKSB7XG4gICAgdGhpcy50b3BMZXZlbFR5cGUgPSBudWxsO1xuICAgIHRoaXMubmF0aXZlRXZl
bnQgPSBudWxsO1xuICAgIHRoaXMuYW5jZXN0b3JzLmxlbmd0aCA9IDA7XG4gIH1cbn0pO1xuUG9v
bGVkQ2xhc3MuYWRkUG9vbGluZ1RvKFRvcExldmVsQ2FsbGJhY2tCb29rS2VlcGluZywgUG9vbGVk
Q2xhc3MudHdvQXJndW1lbnRQb29sZXIpO1xuXG5mdW5jdGlvbiBoYW5kbGVUb3BMZXZlbEltcGwo
Ym9va0tlZXBpbmcpIHtcbiAgdmFyIG5hdGl2ZUV2ZW50VGFyZ2V0ID0gZ2V0RXZlbnRUYXJnZXQo
Ym9va0tlZXBpbmcubmF0aXZlRXZlbnQpO1xuICB2YXIgdGFyZ2V0SW5zdCA9IFJlYWN0RE9NQ29t
cG9uZW50VHJlZS5nZXRDbG9zZXN0SW5zdGFuY2VGcm9tTm9kZShuYXRpdmVFdmVudFRhcmdldCk7
XG5cbiAgLy8gTG9vcCB0aHJvdWdoIHRoZSBoaWVyYXJjaHksIGluIGNhc2UgdGhlcmUncyBhbnkg
bmVzdGVkIGNvbXBvbmVudHMuXG4gIC8vIEl0J3MgaW1wb3J0YW50IHRoYXQgd2UgYnVpbGQgdGhl
IGFycmF5IG9mIGFuY2VzdG9ycyBiZWZvcmUgY2FsbGluZyBhbnlcbiAgLy8gZXZlbnQgaGFuZGxl
cnMsIGJlY2F1c2UgZXZlbnQgaGFuZGxlcnMgY2FuIG1vZGlmeSB0aGUgRE9NLCBsZWFkaW5nIHRv
XG4gIC8vIGluY29uc2lzdGVuY2llcyB3aXRoIFJlYWN0TW91bnQncyBub2RlIGNhY2hlLiBTZWUg
IzExMDUuXG4gIHZhciBhbmNlc3RvciA9IHRhcmdldEluc3Q7XG4gIGRvIHtcbiAgICBib29rS2Vl
cGluZy5hbmNlc3RvcnMucHVzaChhbmNlc3Rvcik7XG4gICAgYW5jZXN0b3IgPSBhbmNlc3RvciAm
JiBmaW5kUGFyZW50KGFuY2VzdG9yKTtcbiAgfSB3aGlsZSAoYW5jZXN0b3IpO1xuXG4gIGZvciAo
dmFyIGkgPSAwOyBpIDwgYm9va0tlZXBpbmcuYW5jZXN0b3JzLmxlbmd0aDsgaSsrKSB7XG4gICAg
dGFyZ2V0SW5zdCA9IGJvb2tLZWVwaW5nLmFuY2VzdG9yc1tpXTtcbiAgICBSZWFjdEV2ZW50TGlz
dGVuZXIuX2hhbmRsZVRvcExldmVsKGJvb2tLZWVwaW5nLnRvcExldmVsVHlwZSwgdGFyZ2V0SW5z
dCwgYm9va0tlZXBpbmcubmF0aXZlRXZlbnQsIGdldEV2ZW50VGFyZ2V0KGJvb2tLZWVwaW5nLm5h
dGl2ZUV2ZW50KSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gc2Nyb2xsVmFsdWVNb25pdG9yKGNiKSB7
XG4gIHZhciBzY3JvbGxQb3NpdGlvbiA9IGdldFVuYm91bmRlZFNjcm9sbFBvc2l0aW9uKHdpbmRv
dyk7XG4gIGNiKHNjcm9sbFBvc2l0aW9uKTtcbn1cblxudmFyIFJlYWN0RXZlbnRMaXN0ZW5lciA9
IHtcbiAgX2VuYWJsZWQ6IHRydWUsXG4gIF9oYW5kbGVUb3BMZXZlbDogbnVsbCxcblxuICBXSU5E
T1dfSEFORExFOiBFeGVjdXRpb25FbnZpcm9ubWVudC5jYW5Vc2VET00gPyB3aW5kb3cgOiBudWxs
LFxuXG4gIHNldEhhbmRsZVRvcExldmVsOiBmdW5jdGlvbiAoaGFuZGxlVG9wTGV2ZWwpIHtcbiAg
ICBSZWFjdEV2ZW50TGlzdGVuZXIuX2hhbmRsZVRvcExldmVsID0gaGFuZGxlVG9wTGV2ZWw7XG4g
IH0sXG5cbiAgc2V0RW5hYmxlZDogZnVuY3Rpb24gKGVuYWJsZWQpIHtcbiAgICBSZWFjdEV2ZW50
TGlzdGVuZXIuX2VuYWJsZWQgPSAhIWVuYWJsZWQ7XG4gIH0sXG5cbiAgaXNFbmFibGVkOiBmdW5j
dGlvbiAoKSB7XG4gICAgcmV0dXJuIFJlYWN0RXZlbnRMaXN0ZW5lci5fZW5hYmxlZDtcbiAgfSxc
blxuICAvKipcbiAgICogVHJhcHMgdG9wLWxldmVsIGV2ZW50cyBieSB1c2luZyBldmVudCBidWJi
bGluZy5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHRvcExldmVsVHlwZSBSZWNvcmQgZnJv
bSBgRXZlbnRDb25zdGFudHNgLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gaGFuZGxlckJhc2VOYW1l
IEV2ZW50IG5hbWUgKGUuZy4gXCJjbGlja1wiKS5cbiAgICogQHBhcmFtIHtvYmplY3R9IGVsZW1l
bnQgRWxlbWVudCBvbiB3aGljaCB0byBhdHRhY2ggbGlzdGVuZXIuXG4gICAqIEByZXR1cm4gez9v
YmplY3R9IEFuIG9iamVjdCB3aXRoIGEgcmVtb3ZlIGZ1bmN0aW9uIHdoaWNoIHdpbGwgZm9yY2Vm
dWxseVxuICAgKiAgICAgICAgICAgICAgICAgIHJlbW92ZSB0aGUgbGlzdGVuZXIuXG4gICAqIEBp
bnRlcm5hbFxuICAgKi9cbiAgdHJhcEJ1YmJsZWRFdmVudDogZnVuY3Rpb24gKHRvcExldmVsVHlw
ZSwgaGFuZGxlckJhc2VOYW1lLCBlbGVtZW50KSB7XG4gICAgaWYgKCFlbGVtZW50KSB7XG4gICAg
ICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIEV2ZW50TGlzdGVuZXIubGlzdGVuKGVs
ZW1lbnQsIGhhbmRsZXJCYXNlTmFtZSwgUmVhY3RFdmVudExpc3RlbmVyLmRpc3BhdGNoRXZlbnQu
YmluZChudWxsLCB0b3BMZXZlbFR5cGUpKTtcbiAgfSxcblxuICAvKipcbiAgICogVHJhcHMgYSB0
b3AtbGV2ZWwgZXZlbnQgYnkgdXNpbmcgZXZlbnQgY2FwdHVyaW5nLlxuICAgKlxuICAgKiBAcGFy
YW0ge3N0cmluZ30gdG9wTGV2ZWxUeXBlIFJlY29yZCBmcm9tIGBFdmVudENvbnN0YW50c2AuXG4g
ICAqIEBwYXJhbSB7c3RyaW5nfSBoYW5kbGVyQmFzZU5hbWUgRXZlbnQgbmFtZSAoZS5nLiBcImNs
aWNrXCIpLlxuICAgKiBAcGFyYW0ge29iamVjdH0gZWxlbWVudCBFbGVtZW50IG9uIHdoaWNoIHRv
IGF0dGFjaCBsaXN0ZW5lci5cbiAgICogQHJldHVybiB7P29iamVjdH0gQW4gb2JqZWN0IHdpdGgg
YSByZW1vdmUgZnVuY3Rpb24gd2hpY2ggd2lsbCBmb3JjZWZ1bGx5XG4gICAqICAgICAgICAgICAg
ICAgICAgcmVtb3ZlIHRoZSBsaXN0ZW5lci5cbiAgICogQGludGVybmFsXG4gICAqL1xuICB0cmFw
Q2FwdHVyZWRFdmVudDogZnVuY3Rpb24gKHRvcExldmVsVHlwZSwgaGFuZGxlckJhc2VOYW1lLCBl
bGVtZW50KSB7XG4gICAgaWYgKCFlbGVtZW50KSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9
XG4gICAgcmV0dXJuIEV2ZW50TGlzdGVuZXIuY2FwdHVyZShlbGVtZW50LCBoYW5kbGVyQmFzZU5h
bWUsIFJlYWN0RXZlbnRMaXN0ZW5lci5kaXNwYXRjaEV2ZW50LmJpbmQobnVsbCwgdG9wTGV2ZWxU
eXBlKSk7XG4gIH0sXG5cbiAgbW9uaXRvclNjcm9sbFZhbHVlOiBmdW5jdGlvbiAocmVmcmVzaCkg
e1xuICAgIHZhciBjYWxsYmFjayA9IHNjcm9sbFZhbHVlTW9uaXRvci5iaW5kKG51bGwsIHJlZnJl
c2gpO1xuICAgIEV2ZW50TGlzdGVuZXIubGlzdGVuKHdpbmRvdywgJ3Njcm9sbCcsIGNhbGxiYWNr
KTtcbiAgfSxcblxuICBkaXNwYXRjaEV2ZW50OiBmdW5jdGlvbiAodG9wTGV2ZWxUeXBlLCBuYXRp
dmVFdmVudCkge1xuICAgIGlmICghUmVhY3RFdmVudExpc3RlbmVyLl9lbmFibGVkKSB7XG4gICAg
ICByZXR1cm47XG4gICAgfVxuXG4gICAgdmFyIGJvb2tLZWVwaW5nID0gVG9wTGV2ZWxDYWxsYmFj
a0Jvb2tLZWVwaW5nLmdldFBvb2xlZCh0b3BMZXZlbFR5cGUsIG5hdGl2ZUV2ZW50KTtcbiAgICB0
cnkge1xuICAgICAgLy8gRXZlbnQgcXVldWUgYmVpbmcgcHJvY2Vzc2VkIGluIHRoZSBzYW1lIGN5
Y2xlIGFsbG93c1xuICAgICAgLy8gYHByZXZlbnREZWZhdWx0YC5cbiAgICAgIFJlYWN0VXBkYXRl
cy5iYXRjaGVkVXBkYXRlcyhoYW5kbGVUb3BMZXZlbEltcGwsIGJvb2tLZWVwaW5nKTtcbiAgICB9
IGZpbmFsbHkge1xuICAgICAgVG9wTGV2ZWxDYWxsYmFja0Jvb2tLZWVwaW5nLnJlbGVhc2UoYm9v
a0tlZXBpbmcpO1xuICAgIH1cbiAgfVxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdEV2ZW50
TGlzdGVuZXI7XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAq
KiAuL34vcmVhY3QtZG9tL2xpYi9SZWFjdEV2ZW50TGlzdGVuZXIuanNcbiAqKiBtb2R1bGUgaWQg
PSAxNTNcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIw
MTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxu
ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vu
c2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9m
IHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdo
dHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5
LlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBET01Qcm9wZXJ0eSA9IHJlcXVpcmUo
Jy4vRE9NUHJvcGVydHknKTtcbnZhciBFdmVudFBsdWdpbkh1YiA9IHJlcXVpcmUoJy4vRXZlbnRQ
bHVnaW5IdWInKTtcbnZhciBFdmVudFBsdWdpblV0aWxzID0gcmVxdWlyZSgnLi9FdmVudFBsdWdp
blV0aWxzJyk7XG52YXIgUmVhY3RDb21wb25lbnRFbnZpcm9ubWVudCA9IHJlcXVpcmUoJy4vUmVh
Y3RDb21wb25lbnRFbnZpcm9ubWVudCcpO1xudmFyIFJlYWN0RW1wdHlDb21wb25lbnQgPSByZXF1
aXJlKCcuL1JlYWN0RW1wdHlDb21wb25lbnQnKTtcbnZhciBSZWFjdEJyb3dzZXJFdmVudEVtaXR0
ZXIgPSByZXF1aXJlKCcuL1JlYWN0QnJvd3NlckV2ZW50RW1pdHRlcicpO1xudmFyIFJlYWN0SG9z
dENvbXBvbmVudCA9IHJlcXVpcmUoJy4vUmVhY3RIb3N0Q29tcG9uZW50Jyk7XG52YXIgUmVhY3RV
cGRhdGVzID0gcmVxdWlyZSgnLi9SZWFjdFVwZGF0ZXMnKTtcblxudmFyIFJlYWN0SW5qZWN0aW9u
ID0ge1xuICBDb21wb25lbnQ6IFJlYWN0Q29tcG9uZW50RW52aXJvbm1lbnQuaW5qZWN0aW9uLFxu
ICBET01Qcm9wZXJ0eTogRE9NUHJvcGVydHkuaW5qZWN0aW9uLFxuICBFbXB0eUNvbXBvbmVudDog
UmVhY3RFbXB0eUNvbXBvbmVudC5pbmplY3Rpb24sXG4gIEV2ZW50UGx1Z2luSHViOiBFdmVudFBs
dWdpbkh1Yi5pbmplY3Rpb24sXG4gIEV2ZW50UGx1Z2luVXRpbHM6IEV2ZW50UGx1Z2luVXRpbHMu
aW5qZWN0aW9uLFxuICBFdmVudEVtaXR0ZXI6IFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlci5pbmpl
Y3Rpb24sXG4gIEhvc3RDb21wb25lbnQ6IFJlYWN0SG9zdENvbXBvbmVudC5pbmplY3Rpb24sXG4g
IFVwZGF0ZXM6IFJlYWN0VXBkYXRlcy5pbmplY3Rpb25cbn07XG5cbm1vZHVsZS5leHBvcnRzID0g
UmVhY3RJbmplY3Rpb247XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09U
RVJcbiAqKiAuL34vcmVhY3QtZG9tL2xpYi9SZWFjdEluamVjdGlvbi5qc1xuICoqIG1vZHVsZSBp
ZCA9IDE1NFxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQg
MjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAq
XG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGlj
ZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkg
b2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJp
Z2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3Rv
cnkuXG4gKlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIGFkbGVyMzIgPSByZXF1aXJlKCcu
L2FkbGVyMzInKTtcblxudmFyIFRBR19FTkQgPSAvXFwvPz4vO1xudmFyIENPTU1FTlRfU1RBUlQg
PSAvXjxcXCFcXC1cXC0vO1xuXG52YXIgUmVhY3RNYXJrdXBDaGVja3N1bSA9IHtcbiAgQ0hFQ0tT
VU1fQVRUUl9OQU1FOiAnZGF0YS1yZWFjdC1jaGVja3N1bScsXG5cbiAgLyoqXG4gICAqIEBwYXJh
bSB7c3RyaW5nfSBtYXJrdXAgTWFya3VwIHN0cmluZ1xuICAgKiBAcmV0dXJuIHtzdHJpbmd9IE1h
cmt1cCBzdHJpbmcgd2l0aCBjaGVja3N1bSBhdHRyaWJ1dGUgYXR0YWNoZWRcbiAgICovXG4gIGFk
ZENoZWNrc3VtVG9NYXJrdXA6IGZ1bmN0aW9uIChtYXJrdXApIHtcbiAgICB2YXIgY2hlY2tzdW0g
PSBhZGxlcjMyKG1hcmt1cCk7XG5cbiAgICAvLyBBZGQgY2hlY2tzdW0gKGhhbmRsZSBib3RoIHBh
cmVudCB0YWdzLCBjb21tZW50cyBhbmQgc2VsZi1jbG9zaW5nIHRhZ3MpXG4gICAgaWYgKENPTU1F
TlRfU1RBUlQudGVzdChtYXJrdXApKSB7XG4gICAgICByZXR1cm4gbWFya3VwO1xuICAgIH0gZWxz
ZSB7XG4gICAgICByZXR1cm4gbWFya3VwLnJlcGxhY2UoVEFHX0VORCwgJyAnICsgUmVhY3RNYXJr
dXBDaGVja3N1bS5DSEVDS1NVTV9BVFRSX05BTUUgKyAnPVwiJyArIGNoZWNrc3VtICsgJ1wiJCYn
KTtcbiAgICB9XG4gIH0sXG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBtYXJrdXAgdG8g
dXNlXG4gICAqIEBwYXJhbSB7RE9NRWxlbWVudH0gZWxlbWVudCByb290IFJlYWN0IGVsZW1lbnRc
biAgICogQHJldHVybnMge2Jvb2xlYW59IHdoZXRoZXIgb3Igbm90IHRoZSBtYXJrdXAgaXMgdGhl
IHNhbWVcbiAgICovXG4gIGNhblJldXNlTWFya3VwOiBmdW5jdGlvbiAobWFya3VwLCBlbGVtZW50
KSB7XG4gICAgdmFyIGV4aXN0aW5nQ2hlY2tzdW0gPSBlbGVtZW50LmdldEF0dHJpYnV0ZShSZWFj
dE1hcmt1cENoZWNrc3VtLkNIRUNLU1VNX0FUVFJfTkFNRSk7XG4gICAgZXhpc3RpbmdDaGVja3N1
bSA9IGV4aXN0aW5nQ2hlY2tzdW0gJiYgcGFyc2VJbnQoZXhpc3RpbmdDaGVja3N1bSwgMTApO1xu
ICAgIHZhciBtYXJrdXBDaGVja3N1bSA9IGFkbGVyMzIobWFya3VwKTtcbiAgICByZXR1cm4gbWFy
a3VwQ2hlY2tzdW0gPT09IGV4aXN0aW5nQ2hlY2tzdW07XG4gIH1cbn07XG5cbm1vZHVsZS5leHBv
cnRzID0gUmVhY3RNYXJrdXBDaGVja3N1bTtcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBX
RUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFjdC1kb20vbGliL1JlYWN0TWFya3VwQ2hlY2tzdW0u
anNcbiAqKiBtb2R1bGUgaWQgPSAxNTVcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8q
KlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0
aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhl
IHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRc
biAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4g
dGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBfcHJv
ZEludmFyaWFudCA9IHJlcXVpcmUoJy4vcmVhY3RQcm9kSW52YXJpYW50Jyk7XG5cbnZhciBSZWFj
dENvbXBvbmVudEVudmlyb25tZW50ID0gcmVxdWlyZSgnLi9SZWFjdENvbXBvbmVudEVudmlyb25t
ZW50Jyk7XG52YXIgUmVhY3RJbnN0YW5jZU1hcCA9IHJlcXVpcmUoJy4vUmVhY3RJbnN0YW5jZU1h
cCcpO1xudmFyIFJlYWN0SW5zdHJ1bWVudGF0aW9uID0gcmVxdWlyZSgnLi9SZWFjdEluc3RydW1l
bnRhdGlvbicpO1xuXG52YXIgUmVhY3RDdXJyZW50T3duZXIgPSByZXF1aXJlKCdyZWFjdC9saWIv
UmVhY3RDdXJyZW50T3duZXInKTtcbnZhciBSZWFjdFJlY29uY2lsZXIgPSByZXF1aXJlKCcuL1Jl
YWN0UmVjb25jaWxlcicpO1xudmFyIFJlYWN0Q2hpbGRSZWNvbmNpbGVyID0gcmVxdWlyZSgnLi9S
ZWFjdENoaWxkUmVjb25jaWxlcicpO1xuXG52YXIgZW1wdHlGdW5jdGlvbiA9IHJlcXVpcmUoJ2Zi
anMvbGliL2VtcHR5RnVuY3Rpb24nKTtcbnZhciBmbGF0dGVuQ2hpbGRyZW4gPSByZXF1aXJlKCcu
L2ZsYXR0ZW5DaGlsZHJlbicpO1xudmFyIGludmFyaWFudCA9IHJlcXVpcmUoJ2ZianMvbGliL2lu
dmFyaWFudCcpO1xuXG4vKipcbiAqIE1ha2UgYW4gdXBkYXRlIGZvciBtYXJrdXAgdG8gYmUgcmVu
ZGVyZWQgYW5kIGluc2VydGVkIGF0IGEgc3VwcGxpZWQgaW5kZXguXG4gKlxuICogQHBhcmFtIHtz
dHJpbmd9IG1hcmt1cCBNYXJrdXAgdGhhdCByZW5kZXJzIGludG8gYW4gZWxlbWVudC5cbiAqIEBw
YXJhbSB7bnVtYmVyfSB0b0luZGV4IERlc3RpbmF0aW9uIGluZGV4LlxuICogQHByaXZhdGVcbiAq
L1xuZnVuY3Rpb24gbWFrZUluc2VydE1hcmt1cChtYXJrdXAsIGFmdGVyTm9kZSwgdG9JbmRleCkg
e1xuICAvLyBOT1RFOiBOdWxsIHZhbHVlcyByZWR1Y2UgaGlkZGVuIGNsYXNzZXMuXG4gIHJldHVy
biB7XG4gICAgdHlwZTogJ0lOU0VSVF9NQVJLVVAnLFxuICAgIGNvbnRlbnQ6IG1hcmt1cCxcbiAg
ICBmcm9tSW5kZXg6IG51bGwsXG4gICAgZnJvbU5vZGU6IG51bGwsXG4gICAgdG9JbmRleDogdG9J
bmRleCxcbiAgICBhZnRlck5vZGU6IGFmdGVyTm9kZVxuICB9O1xufVxuXG4vKipcbiAqIE1ha2Ug
YW4gdXBkYXRlIGZvciBtb3ZpbmcgYW4gZXhpc3RpbmcgZWxlbWVudCB0byBhbm90aGVyIGluZGV4
LlxuICpcbiAqIEBwYXJhbSB7bnVtYmVyfSBmcm9tSW5kZXggU291cmNlIGluZGV4IG9mIHRoZSBl
eGlzdGluZyBlbGVtZW50LlxuICogQHBhcmFtIHtudW1iZXJ9IHRvSW5kZXggRGVzdGluYXRpb24g
aW5kZXggb2YgdGhlIGVsZW1lbnQuXG4gKiBAcHJpdmF0ZVxuICovXG5mdW5jdGlvbiBtYWtlTW92
ZShjaGlsZCwgYWZ0ZXJOb2RlLCB0b0luZGV4KSB7XG4gIC8vIE5PVEU6IE51bGwgdmFsdWVzIHJl
ZHVjZSBoaWRkZW4gY2xhc3Nlcy5cbiAgcmV0dXJuIHtcbiAgICB0eXBlOiAnTU9WRV9FWElTVElO
RycsXG4gICAgY29udGVudDogbnVsbCxcbiAgICBmcm9tSW5kZXg6IGNoaWxkLl9tb3VudEluZGV4
LFxuICAgIGZyb21Ob2RlOiBSZWFjdFJlY29uY2lsZXIuZ2V0SG9zdE5vZGUoY2hpbGQpLFxuICAg
IHRvSW5kZXg6IHRvSW5kZXgsXG4gICAgYWZ0ZXJOb2RlOiBhZnRlck5vZGVcbiAgfTtcbn1cblxu
LyoqXG4gKiBNYWtlIGFuIHVwZGF0ZSBmb3IgcmVtb3ZpbmcgYW4gZWxlbWVudCBhdCBhbiBpbmRl
eC5cbiAqXG4gKiBAcGFyYW0ge251bWJlcn0gZnJvbUluZGV4IEluZGV4IG9mIHRoZSBlbGVtZW50
IHRvIHJlbW92ZS5cbiAqIEBwcml2YXRlXG4gKi9cbmZ1bmN0aW9uIG1ha2VSZW1vdmUoY2hpbGQs
IG5vZGUpIHtcbiAgLy8gTk9URTogTnVsbCB2YWx1ZXMgcmVkdWNlIGhpZGRlbiBjbGFzc2VzLlxu
ICByZXR1cm4ge1xuICAgIHR5cGU6ICdSRU1PVkVfTk9ERScsXG4gICAgY29udGVudDogbnVsbCxc
biAgICBmcm9tSW5kZXg6IGNoaWxkLl9tb3VudEluZGV4LFxuICAgIGZyb21Ob2RlOiBub2RlLFxu
ICAgIHRvSW5kZXg6IG51bGwsXG4gICAgYWZ0ZXJOb2RlOiBudWxsXG4gIH07XG59XG5cbi8qKlxu
ICogTWFrZSBhbiB1cGRhdGUgZm9yIHNldHRpbmcgdGhlIG1hcmt1cCBvZiBhIG5vZGUuXG4gKlxu
ICogQHBhcmFtIHtzdHJpbmd9IG1hcmt1cCBNYXJrdXAgdGhhdCByZW5kZXJzIGludG8gYW4gZWxl
bWVudC5cbiAqIEBwcml2YXRlXG4gKi9cbmZ1bmN0aW9uIG1ha2VTZXRNYXJrdXAobWFya3VwKSB7
XG4gIC8vIE5PVEU6IE51bGwgdmFsdWVzIHJlZHVjZSBoaWRkZW4gY2xhc3Nlcy5cbiAgcmV0dXJu
IHtcbiAgICB0eXBlOiAnU0VUX01BUktVUCcsXG4gICAgY29udGVudDogbWFya3VwLFxuICAgIGZy
b21JbmRleDogbnVsbCxcbiAgICBmcm9tTm9kZTogbnVsbCxcbiAgICB0b0luZGV4OiBudWxsLFxu
ICAgIGFmdGVyTm9kZTogbnVsbFxuICB9O1xufVxuXG4vKipcbiAqIE1ha2UgYW4gdXBkYXRlIGZv
ciBzZXR0aW5nIHRoZSB0ZXh0IGNvbnRlbnQuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHRleHRD
b250ZW50IFRleHQgY29udGVudCB0byBzZXQuXG4gKiBAcHJpdmF0ZVxuICovXG5mdW5jdGlvbiBt
YWtlVGV4dENvbnRlbnQodGV4dENvbnRlbnQpIHtcbiAgLy8gTk9URTogTnVsbCB2YWx1ZXMgcmVk
dWNlIGhpZGRlbiBjbGFzc2VzLlxuICByZXR1cm4ge1xuICAgIHR5cGU6ICdURVhUX0NPTlRFTlQn
LFxuICAgIGNvbnRlbnQ6IHRleHRDb250ZW50LFxuICAgIGZyb21JbmRleDogbnVsbCxcbiAgICBm
cm9tTm9kZTogbnVsbCxcbiAgICB0b0luZGV4OiBudWxsLFxuICAgIGFmdGVyTm9kZTogbnVsbFxu
ICB9O1xufVxuXG4vKipcbiAqIFB1c2ggYW4gdXBkYXRlLCBpZiBhbnksIG9udG8gdGhlIHF1ZXVl
LiBDcmVhdGVzIGEgbmV3IHF1ZXVlIGlmIG5vbmUgaXNcbiAqIHBhc3NlZCBhbmQgYWx3YXlzIHJl
dHVybnMgdGhlIHF1ZXVlLiBNdXRhdGl2ZS5cbiAqL1xuZnVuY3Rpb24gZW5xdWV1ZShxdWV1ZSwg
dXBkYXRlKSB7XG4gIGlmICh1cGRhdGUpIHtcbiAgICBxdWV1ZSA9IHF1ZXVlIHx8IFtdO1xuICAg
IHF1ZXVlLnB1c2godXBkYXRlKTtcbiAgfVxuICByZXR1cm4gcXVldWU7XG59XG5cbi8qKlxuICog
UHJvY2Vzc2VzIGFueSBlbnF1ZXVlZCB1cGRhdGVzLlxuICpcbiAqIEBwcml2YXRlXG4gKi9cbmZ1
bmN0aW9uIHByb2Nlc3NRdWV1ZShpbnN0LCB1cGRhdGVRdWV1ZSkge1xuICBSZWFjdENvbXBvbmVu
dEVudmlyb25tZW50LnByb2Nlc3NDaGlsZHJlblVwZGF0ZXMoaW5zdCwgdXBkYXRlUXVldWUpO1xu
fVxuXG52YXIgc2V0Q2hpbGRyZW5Gb3JJbnN0cnVtZW50YXRpb24gPSBlbXB0eUZ1bmN0aW9uO1xu
aWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgdmFyIGdldERl
YnVnSUQgPSBmdW5jdGlvbiAoaW5zdCkge1xuICAgIGlmICghaW5zdC5fZGVidWdJRCkge1xuICAg
ICAgLy8gQ2hlY2sgZm9yIEFSVC1saWtlIGluc3RhbmNlcy4gVE9ETzogVGhpcyBpcyBzaWxseS9n
cm9zcy5cbiAgICAgIHZhciBpbnRlcm5hbDtcbiAgICAgIGlmIChpbnRlcm5hbCA9IFJlYWN0SW5z
dGFuY2VNYXAuZ2V0KGluc3QpKSB7XG4gICAgICAgIGluc3QgPSBpbnRlcm5hbDtcbiAgICAgIH1c
biAgICB9XG4gICAgcmV0dXJuIGluc3QuX2RlYnVnSUQ7XG4gIH07XG4gIHNldENoaWxkcmVuRm9y
SW5zdHJ1bWVudGF0aW9uID0gZnVuY3Rpb24gKGNoaWxkcmVuKSB7XG4gICAgdmFyIGRlYnVnSUQg
PSBnZXREZWJ1Z0lEKHRoaXMpO1xuICAgIC8vIFRPRE86IFJlYWN0IE5hdGl2ZSBlbXB0eSBjb21w
b25lbnRzIGFyZSBhbHNvIG11bHRpY2hpbGQuXG4gICAgLy8gVGhpcyBtZWFucyB0aGV5IHN0aWxs
IGdldCBpbnRvIHRoaXMgbWV0aG9kIGJ1dCBkb24ndCBoYXZlIF9kZWJ1Z0lELlxuICAgIGlmIChk
ZWJ1Z0lEICE9PSAwKSB7XG4gICAgICBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25T
ZXRDaGlsZHJlbihkZWJ1Z0lELCBjaGlsZHJlbiA/IE9iamVjdC5rZXlzKGNoaWxkcmVuKS5tYXAo
ZnVuY3Rpb24gKGtleSkge1xuICAgICAgICByZXR1cm4gY2hpbGRyZW5ba2V5XS5fZGVidWdJRDtc
biAgICAgIH0pIDogW10pO1xuICAgIH1cbiAgfTtcbn1cblxuLyoqXG4gKiBSZWFjdE11bHRpQ2hp
bGQgYXJlIGNhcGFibGUgb2YgcmVjb25jaWxpbmcgbXVsdGlwbGUgY2hpbGRyZW4uXG4gKlxuICog
QGNsYXNzIFJlYWN0TXVsdGlDaGlsZFxuICogQGludGVybmFsXG4gKi9cbnZhciBSZWFjdE11bHRp
Q2hpbGQgPSB7XG4gIC8qKlxuICAgKiBQcm92aWRlcyBjb21tb24gZnVuY3Rpb25hbGl0eSBmb3Ig
Y29tcG9uZW50cyB0aGF0IG11c3QgcmVjb25jaWxlIG11bHRpcGxlXG4gICAqIGNoaWxkcmVuLiBU
aGlzIGlzIHVzZWQgYnkgYFJlYWN0RE9NQ29tcG9uZW50YCB0byBtb3VudCwgdXBkYXRlLCBhbmRc
biAgICogdW5tb3VudCBjaGlsZCBjb21wb25lbnRzLlxuICAgKlxuICAgKiBAbGVuZHMge1JlYWN0
TXVsdGlDaGlsZC5wcm90b3R5cGV9XG4gICAqL1xuICBNaXhpbjoge1xuICAgIF9yZWNvbmNpbGVy
SW5zdGFudGlhdGVDaGlsZHJlbjogZnVuY3Rpb24gKG5lc3RlZENoaWxkcmVuLCB0cmFuc2FjdGlv
biwgY29udGV4dCkge1xuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVj
dGlvbicpIHtcbiAgICAgICAgdmFyIHNlbGZEZWJ1Z0lEID0gZ2V0RGVidWdJRCh0aGlzKTtcbiAg
ICAgICAgaWYgKHRoaXMuX2N1cnJlbnRFbGVtZW50KSB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAg
ICAgICAgIFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQgPSB0aGlzLl9jdXJyZW50RWxlbWVudC5f
b3duZXI7XG4gICAgICAgICAgICByZXR1cm4gUmVhY3RDaGlsZFJlY29uY2lsZXIuaW5zdGFudGlh
dGVDaGlsZHJlbihuZXN0ZWRDaGlsZHJlbiwgdHJhbnNhY3Rpb24sIGNvbnRleHQsIHNlbGZEZWJ1
Z0lEKTtcbiAgICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgUmVhY3RDdXJyZW50T3du
ZXIuY3VycmVudCA9IG51bGw7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAg
ICByZXR1cm4gUmVhY3RDaGlsZFJlY29uY2lsZXIuaW5zdGFudGlhdGVDaGlsZHJlbihuZXN0ZWRD
aGlsZHJlbiwgdHJhbnNhY3Rpb24sIGNvbnRleHQpO1xuICAgIH0sXG5cbiAgICBfcmVjb25jaWxl
clVwZGF0ZUNoaWxkcmVuOiBmdW5jdGlvbiAocHJldkNoaWxkcmVuLCBuZXh0TmVzdGVkQ2hpbGRy
ZW5FbGVtZW50cywgbW91bnRJbWFnZXMsIHJlbW92ZWROb2RlcywgdHJhbnNhY3Rpb24sIGNvbnRl
eHQpIHtcbiAgICAgIHZhciBuZXh0Q2hpbGRyZW47XG4gICAgICB2YXIgc2VsZkRlYnVnSUQgPSAw
O1xuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAg
ICAgICAgc2VsZkRlYnVnSUQgPSBnZXREZWJ1Z0lEKHRoaXMpO1xuICAgICAgICBpZiAodGhpcy5f
Y3VycmVudEVsZW1lbnQpIHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgUmVhY3RDdXJy
ZW50T3duZXIuY3VycmVudCA9IHRoaXMuX2N1cnJlbnRFbGVtZW50Ll9vd25lcjtcbiAgICAgICAg
ICAgIG5leHRDaGlsZHJlbiA9IGZsYXR0ZW5DaGlsZHJlbihuZXh0TmVzdGVkQ2hpbGRyZW5FbGVt
ZW50cywgc2VsZkRlYnVnSUQpO1xuICAgICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICBS
ZWFjdEN1cnJlbnRPd25lci5jdXJyZW50ID0gbnVsbDtcbiAgICAgICAgICB9XG4gICAgICAgICAg
UmVhY3RDaGlsZFJlY29uY2lsZXIudXBkYXRlQ2hpbGRyZW4ocHJldkNoaWxkcmVuLCBuZXh0Q2hp
bGRyZW4sIG1vdW50SW1hZ2VzLCByZW1vdmVkTm9kZXMsIHRyYW5zYWN0aW9uLCB0aGlzLCB0aGlz
Ll9ob3N0Q29udGFpbmVySW5mbywgY29udGV4dCwgc2VsZkRlYnVnSUQpO1xuICAgICAgICAgIHJl
dHVybiBuZXh0Q2hpbGRyZW47XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIG5leHRDaGlsZHJl
biA9IGZsYXR0ZW5DaGlsZHJlbihuZXh0TmVzdGVkQ2hpbGRyZW5FbGVtZW50cywgc2VsZkRlYnVn
SUQpO1xuICAgICAgUmVhY3RDaGlsZFJlY29uY2lsZXIudXBkYXRlQ2hpbGRyZW4ocHJldkNoaWxk
cmVuLCBuZXh0Q2hpbGRyZW4sIG1vdW50SW1hZ2VzLCByZW1vdmVkTm9kZXMsIHRyYW5zYWN0aW9u
LCB0aGlzLCB0aGlzLl9ob3N0Q29udGFpbmVySW5mbywgY29udGV4dCwgc2VsZkRlYnVnSUQpO1xu
ICAgICAgcmV0dXJuIG5leHRDaGlsZHJlbjtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogR2Vu
ZXJhdGVzIGEgXCJtb3VudCBpbWFnZVwiIGZvciBlYWNoIG9mIHRoZSBzdXBwbGllZCBjaGlsZHJl
bi4gSW4gdGhlIGNhc2VcbiAgICAgKiBvZiBgUmVhY3RET01Db21wb25lbnRgLCBhIG1vdW50IGlt
YWdlIGlzIGEgc3RyaW5nIG9mIG1hcmt1cC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7P29iamVj
dH0gbmVzdGVkQ2hpbGRyZW4gTmVzdGVkIGNoaWxkIG1hcHMuXG4gICAgICogQHJldHVybiB7YXJy
YXl9IEFuIGFycmF5IG9mIG1vdW50ZWQgcmVwcmVzZW50YXRpb25zLlxuICAgICAqIEBpbnRlcm5h
bFxuICAgICAqL1xuICAgIG1vdW50Q2hpbGRyZW46IGZ1bmN0aW9uIChuZXN0ZWRDaGlsZHJlbiwg
dHJhbnNhY3Rpb24sIGNvbnRleHQpIHtcbiAgICAgIHZhciBjaGlsZHJlbiA9IHRoaXMuX3JlY29u
Y2lsZXJJbnN0YW50aWF0ZUNoaWxkcmVuKG5lc3RlZENoaWxkcmVuLCB0cmFuc2FjdGlvbiwgY29u
dGV4dCk7XG4gICAgICB0aGlzLl9yZW5kZXJlZENoaWxkcmVuID0gY2hpbGRyZW47XG5cbiAgICAg
IHZhciBtb3VudEltYWdlcyA9IFtdO1xuICAgICAgdmFyIGluZGV4ID0gMDtcbiAgICAgIGZvciAo
dmFyIG5hbWUgaW4gY2hpbGRyZW4pIHtcbiAgICAgICAgaWYgKGNoaWxkcmVuLmhhc093blByb3Bl
cnR5KG5hbWUpKSB7XG4gICAgICAgICAgdmFyIGNoaWxkID0gY2hpbGRyZW5bbmFtZV07XG4gICAg
ICAgICAgdmFyIHNlbGZEZWJ1Z0lEID0gMDtcbiAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9E
RV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICAgICAgc2VsZkRlYnVnSUQgPSBnZXRE
ZWJ1Z0lEKHRoaXMpO1xuICAgICAgICAgIH1cbiAgICAgICAgICB2YXIgbW91bnRJbWFnZSA9IFJl
YWN0UmVjb25jaWxlci5tb3VudENvbXBvbmVudChjaGlsZCwgdHJhbnNhY3Rpb24sIHRoaXMsIHRo
aXMuX2hvc3RDb250YWluZXJJbmZvLCBjb250ZXh0LCBzZWxmRGVidWdJRCk7XG4gICAgICAgICAg
Y2hpbGQuX21vdW50SW5kZXggPSBpbmRleCsrO1xuICAgICAgICAgIG1vdW50SW1hZ2VzLnB1c2go
bW91bnRJbWFnZSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHByb2Nlc3MuZW52
Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgc2V0Q2hpbGRyZW5Gb3JJbnN0
cnVtZW50YXRpb24uY2FsbCh0aGlzLCBjaGlsZHJlbik7XG4gICAgICB9XG5cbiAgICAgIHJldHVy
biBtb3VudEltYWdlcztcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogUmVwbGFjZXMgYW55IHJl
bmRlcmVkIGNoaWxkcmVuIHdpdGggYSB0ZXh0IGNvbnRlbnQgc3RyaW5nLlxuICAgICAqXG4gICAg
ICogQHBhcmFtIHtzdHJpbmd9IG5leHRDb250ZW50IFN0cmluZyBvZiBjb250ZW50LlxuICAgICAq
IEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHVwZGF0ZVRleHRDb250ZW50OiBmdW5jdGlvbiAobmV4
dENvbnRlbnQpIHtcbiAgICAgIHZhciBwcmV2Q2hpbGRyZW4gPSB0aGlzLl9yZW5kZXJlZENoaWxk
cmVuO1xuICAgICAgLy8gUmVtb3ZlIGFueSByZW5kZXJlZCBjaGlsZHJlbi5cbiAgICAgIFJlYWN0
Q2hpbGRSZWNvbmNpbGVyLnVubW91bnRDaGlsZHJlbihwcmV2Q2hpbGRyZW4sIGZhbHNlKTtcbiAg
ICAgIGZvciAodmFyIG5hbWUgaW4gcHJldkNoaWxkcmVuKSB7XG4gICAgICAgIGlmIChwcmV2Q2hp
bGRyZW4uaGFzT3duUHJvcGVydHkobmFtZSkpIHtcbiAgICAgICAgICAhZmFsc2UgPyBwcm9jZXNz
LmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAndXBkYXRl
VGV4dENvbnRlbnQgY2FsbGVkIG9uIG5vbi1lbXB0eSBjb21wb25lbnQuJykgOiBfcHJvZEludmFy
aWFudCgnMTE4JykgOiB2b2lkIDA7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIC8vIFNldCBu
ZXcgdGV4dCBjb250ZW50LlxuICAgICAgdmFyIHVwZGF0ZXMgPSBbbWFrZVRleHRDb250ZW50KG5l
eHRDb250ZW50KV07XG4gICAgICBwcm9jZXNzUXVldWUodGhpcywgdXBkYXRlcyk7XG4gICAgfSxc
blxuICAgIC8qKlxuICAgICAqIFJlcGxhY2VzIGFueSByZW5kZXJlZCBjaGlsZHJlbiB3aXRoIGEg
bWFya3VwIHN0cmluZy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuZXh0TWFya3Vw
IFN0cmluZyBvZiBtYXJrdXAuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgdXBkYXRl
TWFya3VwOiBmdW5jdGlvbiAobmV4dE1hcmt1cCkge1xuICAgICAgdmFyIHByZXZDaGlsZHJlbiA9
IHRoaXMuX3JlbmRlcmVkQ2hpbGRyZW47XG4gICAgICAvLyBSZW1vdmUgYW55IHJlbmRlcmVkIGNo
aWxkcmVuLlxuICAgICAgUmVhY3RDaGlsZFJlY29uY2lsZXIudW5tb3VudENoaWxkcmVuKHByZXZD
aGlsZHJlbiwgZmFsc2UpO1xuICAgICAgZm9yICh2YXIgbmFtZSBpbiBwcmV2Q2hpbGRyZW4pIHtc
biAgICAgICAgaWYgKHByZXZDaGlsZHJlbi5oYXNPd25Qcm9wZXJ0eShuYW1lKSkge1xuICAgICAg
ICAgICFmYWxzZSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZh
cmlhbnQoZmFsc2UsICd1cGRhdGVUZXh0Q29udGVudCBjYWxsZWQgb24gbm9uLWVtcHR5IGNvbXBv
bmVudC4nKSA6IF9wcm9kSW52YXJpYW50KCcxMTgnKSA6IHZvaWQgMDtcbiAgICAgICAgfVxuICAg
ICAgfVxuICAgICAgdmFyIHVwZGF0ZXMgPSBbbWFrZVNldE1hcmt1cChuZXh0TWFya3VwKV07XG4g
ICAgICBwcm9jZXNzUXVldWUodGhpcywgdXBkYXRlcyk7XG4gICAgfSxcblxuICAgIC8qKlxuICAg
ICAqIFVwZGF0ZXMgdGhlIHJlbmRlcmVkIGNoaWxkcmVuIHdpdGggbmV3IGNoaWxkcmVuLlxuICAg
ICAqXG4gICAgICogQHBhcmFtIHs/b2JqZWN0fSBuZXh0TmVzdGVkQ2hpbGRyZW5FbGVtZW50cyBO
ZXN0ZWQgY2hpbGQgZWxlbWVudCBtYXBzLlxuICAgICAqIEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVU
cmFuc2FjdGlvbn0gdHJhbnNhY3Rpb25cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICB1
cGRhdGVDaGlsZHJlbjogZnVuY3Rpb24gKG5leHROZXN0ZWRDaGlsZHJlbkVsZW1lbnRzLCB0cmFu
c2FjdGlvbiwgY29udGV4dCkge1xuICAgICAgLy8gSG9vayB1c2VkIGJ5IFJlYWN0IEFSVFxuICAg
ICAgdGhpcy5fdXBkYXRlQ2hpbGRyZW4obmV4dE5lc3RlZENoaWxkcmVuRWxlbWVudHMsIHRyYW5z
YWN0aW9uLCBjb250ZXh0KTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHs/b2Jq
ZWN0fSBuZXh0TmVzdGVkQ2hpbGRyZW5FbGVtZW50cyBOZXN0ZWQgY2hpbGQgZWxlbWVudCBtYXBz
LlxuICAgICAqIEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbn0gdHJhbnNhY3Rpb25c
biAgICAgKiBAZmluYWxcbiAgICAgKiBAcHJvdGVjdGVkXG4gICAgICovXG4gICAgX3VwZGF0ZUNo
aWxkcmVuOiBmdW5jdGlvbiAobmV4dE5lc3RlZENoaWxkcmVuRWxlbWVudHMsIHRyYW5zYWN0aW9u
LCBjb250ZXh0KSB7XG4gICAgICB2YXIgcHJldkNoaWxkcmVuID0gdGhpcy5fcmVuZGVyZWRDaGls
ZHJlbjtcbiAgICAgIHZhciByZW1vdmVkTm9kZXMgPSB7fTtcbiAgICAgIHZhciBtb3VudEltYWdl
cyA9IFtdO1xuICAgICAgdmFyIG5leHRDaGlsZHJlbiA9IHRoaXMuX3JlY29uY2lsZXJVcGRhdGVD
aGlsZHJlbihwcmV2Q2hpbGRyZW4sIG5leHROZXN0ZWRDaGlsZHJlbkVsZW1lbnRzLCBtb3VudElt
YWdlcywgcmVtb3ZlZE5vZGVzLCB0cmFuc2FjdGlvbiwgY29udGV4dCk7XG4gICAgICBpZiAoIW5l
eHRDaGlsZHJlbiAmJiAhcHJldkNoaWxkcmVuKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1c
biAgICAgIHZhciB1cGRhdGVzID0gbnVsbDtcbiAgICAgIHZhciBuYW1lO1xuICAgICAgLy8gYG5l
eHRJbmRleGAgd2lsbCBpbmNyZW1lbnQgZm9yIGVhY2ggY2hpbGQgaW4gYG5leHRDaGlsZHJlbmAs
IGJ1dFxuICAgICAgLy8gYGxhc3RJbmRleGAgd2lsbCBiZSB0aGUgbGFzdCBpbmRleCB2aXNpdGVk
IGluIGBwcmV2Q2hpbGRyZW5gLlxuICAgICAgdmFyIG5leHRJbmRleCA9IDA7XG4gICAgICB2YXIg
bGFzdEluZGV4ID0gMDtcbiAgICAgIC8vIGBuZXh0TW91bnRJbmRleGAgd2lsbCBpbmNyZW1lbnQg
Zm9yIGVhY2ggbmV3bHkgbW91bnRlZCBjaGlsZC5cbiAgICAgIHZhciBuZXh0TW91bnRJbmRleCA9
IDA7XG4gICAgICB2YXIgbGFzdFBsYWNlZE5vZGUgPSBudWxsO1xuICAgICAgZm9yIChuYW1lIGlu
IG5leHRDaGlsZHJlbikge1xuICAgICAgICBpZiAoIW5leHRDaGlsZHJlbi5oYXNPd25Qcm9wZXJ0
eShuYW1lKSkge1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIHZhciBw
cmV2Q2hpbGQgPSBwcmV2Q2hpbGRyZW4gJiYgcHJldkNoaWxkcmVuW25hbWVdO1xuICAgICAgICB2
YXIgbmV4dENoaWxkID0gbmV4dENoaWxkcmVuW25hbWVdO1xuICAgICAgICBpZiAocHJldkNoaWxk
ID09PSBuZXh0Q2hpbGQpIHtcbiAgICAgICAgICB1cGRhdGVzID0gZW5xdWV1ZSh1cGRhdGVzLCB0
aGlzLm1vdmVDaGlsZChwcmV2Q2hpbGQsIGxhc3RQbGFjZWROb2RlLCBuZXh0SW5kZXgsIGxhc3RJ
bmRleCkpO1xuICAgICAgICAgIGxhc3RJbmRleCA9IE1hdGgubWF4KHByZXZDaGlsZC5fbW91bnRJ
bmRleCwgbGFzdEluZGV4KTtcbiAgICAgICAgICBwcmV2Q2hpbGQuX21vdW50SW5kZXggPSBuZXh0
SW5kZXg7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKHByZXZDaGlsZCkge1xuICAg
ICAgICAgICAgLy8gVXBkYXRlIGBsYXN0SW5kZXhgIGJlZm9yZSBgX21vdW50SW5kZXhgIGdldHMg
dW5zZXQgYnkgdW5tb3VudGluZy5cbiAgICAgICAgICAgIGxhc3RJbmRleCA9IE1hdGgubWF4KHBy
ZXZDaGlsZC5fbW91bnRJbmRleCwgbGFzdEluZGV4KTtcbiAgICAgICAgICAgIC8vIFRoZSBgcmVt
b3ZlZE5vZGVzYCBsb29wIGJlbG93IHdpbGwgYWN0dWFsbHkgcmVtb3ZlIHRoZSBjaGlsZC5cbiAg
ICAgICAgICB9XG4gICAgICAgICAgLy8gVGhlIGNoaWxkIG11c3QgYmUgaW5zdGFudGlhdGVkIGJl
Zm9yZSBpdCdzIG1vdW50ZWQuXG4gICAgICAgICAgdXBkYXRlcyA9IGVucXVldWUodXBkYXRlcywg
dGhpcy5fbW91bnRDaGlsZEF0SW5kZXgobmV4dENoaWxkLCBtb3VudEltYWdlc1tuZXh0TW91bnRJ
bmRleF0sIGxhc3RQbGFjZWROb2RlLCBuZXh0SW5kZXgsIHRyYW5zYWN0aW9uLCBjb250ZXh0KSk7
XG4gICAgICAgICAgbmV4dE1vdW50SW5kZXgrKztcbiAgICAgICAgfVxuICAgICAgICBuZXh0SW5k
ZXgrKztcbiAgICAgICAgbGFzdFBsYWNlZE5vZGUgPSBSZWFjdFJlY29uY2lsZXIuZ2V0SG9zdE5v
ZGUobmV4dENoaWxkKTtcbiAgICAgIH1cbiAgICAgIC8vIFJlbW92ZSBjaGlsZHJlbiB0aGF0IGFy
ZSBubyBsb25nZXIgcHJlc2VudC5cbiAgICAgIGZvciAobmFtZSBpbiByZW1vdmVkTm9kZXMpIHtc
biAgICAgICAgaWYgKHJlbW92ZWROb2Rlcy5oYXNPd25Qcm9wZXJ0eShuYW1lKSkge1xuICAgICAg
ICAgIHVwZGF0ZXMgPSBlbnF1ZXVlKHVwZGF0ZXMsIHRoaXMuX3VubW91bnRDaGlsZChwcmV2Q2hp
bGRyZW5bbmFtZV0sIHJlbW92ZWROb2Rlc1tuYW1lXSkpO1xuICAgICAgICB9XG4gICAgICB9XG4g
ICAgICBpZiAodXBkYXRlcykge1xuICAgICAgICBwcm9jZXNzUXVldWUodGhpcywgdXBkYXRlcyk7
XG4gICAgICB9XG4gICAgICB0aGlzLl9yZW5kZXJlZENoaWxkcmVuID0gbmV4dENoaWxkcmVuO1xu
XG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAg
ICAgICBzZXRDaGlsZHJlbkZvckluc3RydW1lbnRhdGlvbi5jYWxsKHRoaXMsIG5leHRDaGlsZHJl
bik7XG4gICAgICB9XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIFVubW91bnRzIGFsbCByZW5k
ZXJlZCBjaGlsZHJlbi4gVGhpcyBzaG91bGQgYmUgdXNlZCB0byBjbGVhbiB1cCBjaGlsZHJlblxu
ICAgICAqIHdoZW4gdGhpcyBjb21wb25lbnQgaXMgdW5tb3VudGVkLiBJdCBkb2VzIG5vdCBhY3R1
YWxseSBwZXJmb3JtIGFueVxuICAgICAqIGJhY2tlbmQgb3BlcmF0aW9ucy5cbiAgICAgKlxuICAg
ICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHVubW91bnRDaGlsZHJlbjogZnVuY3Rpb24gKHNh
ZmVseSkge1xuICAgICAgdmFyIHJlbmRlcmVkQ2hpbGRyZW4gPSB0aGlzLl9yZW5kZXJlZENoaWxk
cmVuO1xuICAgICAgUmVhY3RDaGlsZFJlY29uY2lsZXIudW5tb3VudENoaWxkcmVuKHJlbmRlcmVk
Q2hpbGRyZW4sIHNhZmVseSk7XG4gICAgICB0aGlzLl9yZW5kZXJlZENoaWxkcmVuID0gbnVsbDtc
biAgICB9LFxuXG4gICAgLyoqXG4gICAgICogTW92ZXMgYSBjaGlsZCBjb21wb25lbnQgdG8gdGhl
IHN1cHBsaWVkIGluZGV4LlxuICAgICAqXG4gICAgICogQHBhcmFtIHtSZWFjdENvbXBvbmVudH0g
Y2hpbGQgQ29tcG9uZW50IHRvIG1vdmUuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHRvSW5kZXgg
RGVzdGluYXRpb24gaW5kZXggb2YgdGhlIGVsZW1lbnQuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9
IGxhc3RJbmRleCBMYXN0IGluZGV4IHZpc2l0ZWQgb2YgdGhlIHNpYmxpbmdzIG9mIGBjaGlsZGAu
XG4gICAgICogQHByb3RlY3RlZFxuICAgICAqL1xuICAgIG1vdmVDaGlsZDogZnVuY3Rpb24gKGNo
aWxkLCBhZnRlck5vZGUsIHRvSW5kZXgsIGxhc3RJbmRleCkge1xuICAgICAgLy8gSWYgdGhlIGlu
ZGV4IG9mIGBjaGlsZGAgaXMgbGVzcyB0aGFuIGBsYXN0SW5kZXhgLCB0aGVuIGl0IG5lZWRzIHRv
XG4gICAgICAvLyBiZSBtb3ZlZC4gT3RoZXJ3aXNlLCB3ZSBkbyBub3QgbmVlZCB0byBtb3ZlIGl0
IGJlY2F1c2UgYSBjaGlsZCB3aWxsIGJlXG4gICAgICAvLyBpbnNlcnRlZCBvciBtb3ZlZCBiZWZv
cmUgYGNoaWxkYC5cbiAgICAgIGlmIChjaGlsZC5fbW91bnRJbmRleCA8IGxhc3RJbmRleCkge1xu
ICAgICAgICByZXR1cm4gbWFrZU1vdmUoY2hpbGQsIGFmdGVyTm9kZSwgdG9JbmRleCk7XG4gICAg
ICB9XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBjaGlsZCBjb21wb25lbnQu
XG4gICAgICpcbiAgICAgKiBAcGFyYW0ge1JlYWN0Q29tcG9uZW50fSBjaGlsZCBDb21wb25lbnQg
dG8gY3JlYXRlLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBtb3VudEltYWdlIE1hcmt1cCB0byBp
bnNlcnQuXG4gICAgICogQHByb3RlY3RlZFxuICAgICAqL1xuICAgIGNyZWF0ZUNoaWxkOiBmdW5j
dGlvbiAoY2hpbGQsIGFmdGVyTm9kZSwgbW91bnRJbWFnZSkge1xuICAgICAgcmV0dXJuIG1ha2VJ
bnNlcnRNYXJrdXAobW91bnRJbWFnZSwgYWZ0ZXJOb2RlLCBjaGlsZC5fbW91bnRJbmRleCk7XG4g
ICAgfSxcblxuICAgIC8qKlxuICAgICAqIFJlbW92ZXMgYSBjaGlsZCBjb21wb25lbnQuXG4gICAg
ICpcbiAgICAgKiBAcGFyYW0ge1JlYWN0Q29tcG9uZW50fSBjaGlsZCBDaGlsZCB0byByZW1vdmUu
XG4gICAgICogQHByb3RlY3RlZFxuICAgICAqL1xuICAgIHJlbW92ZUNoaWxkOiBmdW5jdGlvbiAo
Y2hpbGQsIG5vZGUpIHtcbiAgICAgIHJldHVybiBtYWtlUmVtb3ZlKGNoaWxkLCBub2RlKTtcbiAg
ICB9LFxuXG4gICAgLyoqXG4gICAgICogTW91bnRzIGEgY2hpbGQgd2l0aCB0aGUgc3VwcGxpZWQg
bmFtZS5cbiAgICAgKlxuICAgICAqIE5PVEU6IFRoaXMgaXMgcGFydCBvZiBgdXBkYXRlQ2hpbGRy
ZW5gIGFuZCBpcyBoZXJlIGZvciByZWFkYWJpbGl0eS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7
UmVhY3RDb21wb25lbnR9IGNoaWxkIENvbXBvbmVudCB0byBtb3VudC5cbiAgICAgKiBAcGFyYW0g
e3N0cmluZ30gbmFtZSBOYW1lIG9mIHRoZSBjaGlsZC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0g
aW5kZXggSW5kZXggYXQgd2hpY2ggdG8gaW5zZXJ0IHRoZSBjaGlsZC5cbiAgICAgKiBAcGFyYW0g
e1JlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb259IHRyYW5zYWN0aW9uXG4gICAgICogQHByaXZhdGVc
biAgICAgKi9cbiAgICBfbW91bnRDaGlsZEF0SW5kZXg6IGZ1bmN0aW9uIChjaGlsZCwgbW91bnRJ
bWFnZSwgYWZ0ZXJOb2RlLCBpbmRleCwgdHJhbnNhY3Rpb24sIGNvbnRleHQpIHtcbiAgICAgIGNo
aWxkLl9tb3VudEluZGV4ID0gaW5kZXg7XG4gICAgICByZXR1cm4gdGhpcy5jcmVhdGVDaGlsZChj
aGlsZCwgYWZ0ZXJOb2RlLCBtb3VudEltYWdlKTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICog
VW5tb3VudHMgYSByZW5kZXJlZCBjaGlsZC5cbiAgICAgKlxuICAgICAqIE5PVEU6IFRoaXMgaXMg
cGFydCBvZiBgdXBkYXRlQ2hpbGRyZW5gIGFuZCBpcyBoZXJlIGZvciByZWFkYWJpbGl0eS5cbiAg
ICAgKlxuICAgICAqIEBwYXJhbSB7UmVhY3RDb21wb25lbnR9IGNoaWxkIENvbXBvbmVudCB0byB1
bm1vdW50LlxuICAgICAqIEBwcml2YXRlXG4gICAgICovXG4gICAgX3VubW91bnRDaGlsZDogZnVu
Y3Rpb24gKGNoaWxkLCBub2RlKSB7XG4gICAgICB2YXIgdXBkYXRlID0gdGhpcy5yZW1vdmVDaGls
ZChjaGlsZCwgbm9kZSk7XG4gICAgICBjaGlsZC5fbW91bnRJbmRleCA9IG51bGw7XG4gICAgICBy
ZXR1cm4gdXBkYXRlO1xuICAgIH1cbiAgfVxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdE11
bHRpQ2hpbGQ7XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAq
KiAuL34vcmVhY3QtZG9tL2xpYi9SZWFjdE11bHRpQ2hpbGQuanNcbiAqKiBtb2R1bGUgaWQgPSAx
NTZcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMt
cHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICog
VGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2Ug
Zm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRo
aXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMg
Y2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5Llxu
ICpcbiAqIFxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIF9wcm9kSW52YXJpYW50ID0gcmVx
dWlyZSgnLi9yZWFjdFByb2RJbnZhcmlhbnQnKTtcblxudmFyIGludmFyaWFudCA9IHJlcXVpcmUo
J2ZianMvbGliL2ludmFyaWFudCcpO1xuXG4vKipcbiAqIEBwYXJhbSB7P29iamVjdH0gb2JqZWN0
XG4gKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmIGBvYmplY3RgIGlzIGEgdmFsaWQgb3duZXIu
XG4gKiBAZmluYWxcbiAqL1xuZnVuY3Rpb24gaXNWYWxpZE93bmVyKG9iamVjdCkge1xuICByZXR1
cm4gISEob2JqZWN0ICYmIHR5cGVvZiBvYmplY3QuYXR0YWNoUmVmID09PSAnZnVuY3Rpb24nICYm
IHR5cGVvZiBvYmplY3QuZGV0YWNoUmVmID09PSAnZnVuY3Rpb24nKTtcbn1cblxuLyoqXG4gKiBS
ZWFjdE93bmVycyBhcmUgY2FwYWJsZSBvZiBzdG9yaW5nIHJlZmVyZW5jZXMgdG8gb3duZWQgY29t
cG9uZW50cy5cbiAqXG4gKiBBbGwgY29tcG9uZW50cyBhcmUgY2FwYWJsZSBvZiAvL2JlaW5nLy8g
cmVmZXJlbmNlZCBieSBvd25lciBjb21wb25lbnRzLCBidXRcbiAqIG9ubHkgUmVhY3RPd25lciBj
b21wb25lbnRzIGFyZSBjYXBhYmxlIG9mIC8vcmVmZXJlbmNpbmcvLyBvd25lZCBjb21wb25lbnRz
LlxuICogVGhlIG5hbWVkIHJlZmVyZW5jZSBpcyBrbm93biBhcyBhIFwicmVmXCIuXG4gKlxuICog
UmVmcyBhcmUgYXZhaWxhYmxlIHdoZW4gbW91bnRlZCBhbmQgdXBkYXRlZCBkdXJpbmcgcmVjb25j
aWxpYXRpb24uXG4gKlxuICogICB2YXIgTXlDb21wb25lbnQgPSBSZWFjdC5jcmVhdGVDbGFzcyh7
XG4gKiAgICAgcmVuZGVyOiBmdW5jdGlvbigpIHtcbiAqICAgICAgIHJldHVybiAoXG4gKiAgICAg
ICAgIDxkaXYgb25DbGljaz17dGhpcy5oYW5kbGVDbGlja30+XG4gKiAgICAgICAgICAgPEN1c3Rv
bUNvbXBvbmVudCByZWY9XCJjdXN0b21cIiAvPlxuICogICAgICAgICA8L2Rpdj5cbiAqICAgICAg
ICk7XG4gKiAgICAgfSxcbiAqICAgICBoYW5kbGVDbGljazogZnVuY3Rpb24oKSB7XG4gKiAgICAg
ICB0aGlzLnJlZnMuY3VzdG9tLmhhbmRsZUNsaWNrKCk7XG4gKiAgICAgfSxcbiAqICAgICBjb21w
b25lbnREaWRNb3VudDogZnVuY3Rpb24oKSB7XG4gKiAgICAgICB0aGlzLnJlZnMuY3VzdG9tLmlu
aXRpYWxpemUoKTtcbiAqICAgICB9XG4gKiAgIH0pO1xuICpcbiAqIFJlZnMgc2hvdWxkIHJhcmVs
eSBiZSB1c2VkLiBXaGVuIHJlZnMgYXJlIHVzZWQsIHRoZXkgc2hvdWxkIG9ubHkgYmUgZG9uZSB0
b1xuICogY29udHJvbCBkYXRhIHRoYXQgaXMgbm90IGhhbmRsZWQgYnkgUmVhY3QncyBkYXRhIGZs
b3cuXG4gKlxuICogQGNsYXNzIFJlYWN0T3duZXJcbiAqL1xudmFyIFJlYWN0T3duZXIgPSB7XG4g
IC8qKlxuICAgKiBBZGRzIGEgY29tcG9uZW50IGJ5IHJlZiB0byBhbiBvd25lciBjb21wb25lbnQu
XG4gICAqXG4gICAqIEBwYXJhbSB7UmVhY3RDb21wb25lbnR9IGNvbXBvbmVudCBDb21wb25lbnQg
dG8gcmVmZXJlbmNlLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gcmVmIE5hbWUgYnkgd2hpY2ggdG8g
cmVmZXIgdG8gdGhlIGNvbXBvbmVudC5cbiAgICogQHBhcmFtIHtSZWFjdE93bmVyfSBvd25lciBD
b21wb25lbnQgb24gd2hpY2ggdG8gcmVjb3JkIHRoZSByZWYuXG4gICAqIEBmaW5hbFxuICAgKiBA
aW50ZXJuYWxcbiAgICovXG4gIGFkZENvbXBvbmVudEFzUmVmVG86IGZ1bmN0aW9uIChjb21wb25l
bnQsIHJlZiwgb3duZXIpIHtcbiAgICAhaXNWYWxpZE93bmVyKG93bmVyKSA/IHByb2Nlc3MuZW52
Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdhZGRDb21wb25l
bnRBc1JlZlRvKC4uLik6IE9ubHkgYSBSZWFjdE93bmVyIGNhbiBoYXZlIHJlZnMuIFlvdSBtaWdo
dCBiZSBhZGRpbmcgYSByZWYgdG8gYSBjb21wb25lbnQgdGhhdCB3YXMgbm90IGNyZWF0ZWQgaW5z
aWRlIGEgY29tcG9uZW50XFwncyBgcmVuZGVyYCBtZXRob2QsIG9yIHlvdSBoYXZlIG11bHRpcGxl
IGNvcGllcyBvZiBSZWFjdCBsb2FkZWQgKGRldGFpbHM6IGh0dHBzOi8vZmIubWUvcmVhY3QtcmVm
cy1tdXN0LWhhdmUtb3duZXIpLicpIDogX3Byb2RJbnZhcmlhbnQoJzExOScpIDogdm9pZCAwO1xu
ICAgIG93bmVyLmF0dGFjaFJlZihyZWYsIGNvbXBvbmVudCk7XG4gIH0sXG5cbiAgLyoqXG4gICAq
IFJlbW92ZXMgYSBjb21wb25lbnQgYnkgcmVmIGZyb20gYW4gb3duZXIgY29tcG9uZW50LlxuICAg
KlxuICAgKiBAcGFyYW0ge1JlYWN0Q29tcG9uZW50fSBjb21wb25lbnQgQ29tcG9uZW50IHRvIGRl
cmVmZXJlbmNlLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gcmVmIE5hbWUgb2YgdGhlIHJlZiB0byBy
ZW1vdmUuXG4gICAqIEBwYXJhbSB7UmVhY3RPd25lcn0gb3duZXIgQ29tcG9uZW50IG9uIHdoaWNo
IHRoZSByZWYgaXMgcmVjb3JkZWQuXG4gICAqIEBmaW5hbFxuICAgKiBAaW50ZXJuYWxcbiAgICov
XG4gIHJlbW92ZUNvbXBvbmVudEFzUmVmRnJvbTogZnVuY3Rpb24gKGNvbXBvbmVudCwgcmVmLCBv
d25lcikge1xuICAgICFpc1ZhbGlkT3duZXIob3duZXIpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYg
IT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ3JlbW92ZUNvbXBvbmVudEFzUmVm
RnJvbSguLi4pOiBPbmx5IGEgUmVhY3RPd25lciBjYW4gaGF2ZSByZWZzLiBZb3UgbWlnaHQgYmUg
cmVtb3ZpbmcgYSByZWYgdG8gYSBjb21wb25lbnQgdGhhdCB3YXMgbm90IGNyZWF0ZWQgaW5zaWRl
IGEgY29tcG9uZW50XFwncyBgcmVuZGVyYCBtZXRob2QsIG9yIHlvdSBoYXZlIG11bHRpcGxlIGNv
cGllcyBvZiBSZWFjdCBsb2FkZWQgKGRldGFpbHM6IGh0dHBzOi8vZmIubWUvcmVhY3QtcmVmcy1t
dXN0LWhhdmUtb3duZXIpLicpIDogX3Byb2RJbnZhcmlhbnQoJzEyMCcpIDogdm9pZCAwO1xuICAg
IHZhciBvd25lclB1YmxpY0luc3RhbmNlID0gb3duZXIuZ2V0UHVibGljSW5zdGFuY2UoKTtcbiAg
ICAvLyBDaGVjayB0aGF0IGBjb21wb25lbnRgJ3Mgb3duZXIgaXMgc3RpbGwgYWxpdmUgYW5kIHRo
YXQgYGNvbXBvbmVudGAgaXMgc3RpbGwgdGhlIGN1cnJlbnQgcmVmXG4gICAgLy8gYmVjYXVzZSB3
ZSBkbyBub3Qgd2FudCB0byBkZXRhY2ggdGhlIHJlZiBpZiBhbm90aGVyIGNvbXBvbmVudCBzdG9s
ZSBpdC5cbiAgICBpZiAob3duZXJQdWJsaWNJbnN0YW5jZSAmJiBvd25lclB1YmxpY0luc3RhbmNl
LnJlZnNbcmVmXSA9PT0gY29tcG9uZW50LmdldFB1YmxpY0luc3RhbmNlKCkpIHtcbiAgICAgIG93
bmVyLmRldGFjaFJlZihyZWYpO1xuICAgIH1cbiAgfVxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBS
ZWFjdE93bmVyO1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4g
KiogLi9+L3JlYWN0LWRvbS9saWIvUmVhY3RPd25lci5qc1xuICoqIG1vZHVsZSBpZCA9IDE1N1xu
ICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVz
ZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlz
IHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3Vu
ZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBz
b3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4g
YmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxu
ICogXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgUmVhY3RQcm9wVHlwZXNTZWNyZXQgPSAn
U0VDUkVUX0RPX05PVF9QQVNTX1RISVNfT1JfWU9VX1dJTExfQkVfRklSRUQnO1xuXG5tb2R1bGUu
ZXhwb3J0cyA9IFJlYWN0UHJvcFR5cGVzU2VjcmV0O1xuXG5cbi8qKioqKioqKioqKioqKioqKlxu
ICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0LWRvbS9saWIvUmVhY3RQcm9wVHlwZXNT
ZWNyZXQuanNcbiAqKiBtb2R1bGUgaWQgPSAxNThcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoq
LyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFs
bCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1
bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUg
aW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwg
Z3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZp
bGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZh
ciBfYXNzaWduID0gcmVxdWlyZSgnb2JqZWN0LWFzc2lnbicpO1xuXG52YXIgQ2FsbGJhY2tRdWV1
ZSA9IHJlcXVpcmUoJy4vQ2FsbGJhY2tRdWV1ZScpO1xudmFyIFBvb2xlZENsYXNzID0gcmVxdWly
ZSgnLi9Qb29sZWRDbGFzcycpO1xudmFyIFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlciA9IHJlcXVp
cmUoJy4vUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyJyk7XG52YXIgUmVhY3RJbnB1dFNlbGVjdGlv
biA9IHJlcXVpcmUoJy4vUmVhY3RJbnB1dFNlbGVjdGlvbicpO1xudmFyIFJlYWN0SW5zdHJ1bWVu
dGF0aW9uID0gcmVxdWlyZSgnLi9SZWFjdEluc3RydW1lbnRhdGlvbicpO1xudmFyIFRyYW5zYWN0
aW9uID0gcmVxdWlyZSgnLi9UcmFuc2FjdGlvbicpO1xudmFyIFJlYWN0VXBkYXRlUXVldWUgPSBy
ZXF1aXJlKCcuL1JlYWN0VXBkYXRlUXVldWUnKTtcblxuLyoqXG4gKiBFbnN1cmVzIHRoYXQsIHdo
ZW4gcG9zc2libGUsIHRoZSBzZWxlY3Rpb24gcmFuZ2UgKGN1cnJlbnRseSBzZWxlY3RlZCB0ZXh0
XG4gKiBpbnB1dCkgaXMgbm90IGRpc3R1cmJlZCBieSBwZXJmb3JtaW5nIHRoZSB0cmFuc2FjdGlv
bi5cbiAqL1xudmFyIFNFTEVDVElPTl9SRVNUT1JBVElPTiA9IHtcbiAgLyoqXG4gICAqIEByZXR1
cm4ge1NlbGVjdGlvbn0gU2VsZWN0aW9uIGluZm9ybWF0aW9uLlxuICAgKi9cbiAgaW5pdGlhbGl6
ZTogUmVhY3RJbnB1dFNlbGVjdGlvbi5nZXRTZWxlY3Rpb25JbmZvcm1hdGlvbixcbiAgLyoqXG4g
ICAqIEBwYXJhbSB7U2VsZWN0aW9ufSBzZWwgU2VsZWN0aW9uIGluZm9ybWF0aW9uIHJldHVybmVk
IGZyb20gYGluaXRpYWxpemVgLlxuICAgKi9cbiAgY2xvc2U6IFJlYWN0SW5wdXRTZWxlY3Rpb24u
cmVzdG9yZVNlbGVjdGlvblxufTtcblxuLyoqXG4gKiBTdXBwcmVzc2VzIGV2ZW50cyAoYmx1ci9m
b2N1cykgdGhhdCBjb3VsZCBiZSBpbmFkdmVydGVudGx5IGRpc3BhdGNoZWQgZHVlIHRvXG4gKiBo
aWdoIGxldmVsIERPTSBtYW5pcHVsYXRpb25zIChsaWtlIHRlbXBvcmFyaWx5IHJlbW92aW5nIGEg
dGV4dCBpbnB1dCBmcm9tIHRoZVxuICogRE9NKS5cbiAqL1xudmFyIEVWRU5UX1NVUFBSRVNTSU9O
ID0ge1xuICAvKipcbiAgICogQHJldHVybiB7Ym9vbGVhbn0gVGhlIGVuYWJsZWQgc3RhdHVzIG9m
IGBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXJgIGJlZm9yZVxuICAgKiB0aGUgcmVjb25jaWxpYXRp
b24uXG4gICAqL1xuICBpbml0aWFsaXplOiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGN1cnJlbnRs
eUVuYWJsZWQgPSBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIuaXNFbmFibGVkKCk7XG4gICAgUmVh
Y3RCcm93c2VyRXZlbnRFbWl0dGVyLnNldEVuYWJsZWQoZmFsc2UpO1xuICAgIHJldHVybiBjdXJy
ZW50bHlFbmFibGVkO1xuICB9LFxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IHByZXZp
b3VzbHlFbmFibGVkIEVuYWJsZWQgc3RhdHVzIG9mXG4gICAqICAgYFJlYWN0QnJvd3NlckV2ZW50
RW1pdHRlcmAgYmVmb3JlIHRoZSByZWNvbmNpbGlhdGlvbiBvY2N1cnJlZC4gYGNsb3NlYFxuICAg
KiAgIHJlc3RvcmVzIHRoZSBwcmV2aW91cyB2YWx1ZS5cbiAgICovXG4gIGNsb3NlOiBmdW5jdGlv
biAocHJldmlvdXNseUVuYWJsZWQpIHtcbiAgICBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIuc2V0
RW5hYmxlZChwcmV2aW91c2x5RW5hYmxlZCk7XG4gIH1cbn07XG5cbi8qKlxuICogUHJvdmlkZXMg
YSBxdWV1ZSBmb3IgY29sbGVjdGluZyBgY29tcG9uZW50RGlkTW91bnRgIGFuZFxuICogYGNvbXBv
bmVudERpZFVwZGF0ZWAgY2FsbGJhY2tzIGR1cmluZyB0aGUgdHJhbnNhY3Rpb24uXG4gKi9cbnZh
ciBPTl9ET01fUkVBRFlfUVVFVUVJTkcgPSB7XG4gIC8qKlxuICAgKiBJbml0aWFsaXplcyB0aGUg
aW50ZXJuYWwgYG9uRE9NUmVhZHlgIHF1ZXVlLlxuICAgKi9cbiAgaW5pdGlhbGl6ZTogZnVuY3Rp
b24gKCkge1xuICAgIHRoaXMucmVhY3RNb3VudFJlYWR5LnJlc2V0KCk7XG4gIH0sXG5cbiAgLyoq
XG4gICAqIEFmdGVyIERPTSBpcyBmbHVzaGVkLCBpbnZva2UgYWxsIHJlZ2lzdGVyZWQgYG9uRE9N
UmVhZHlgIGNhbGxiYWNrcy5cbiAgICovXG4gIGNsb3NlOiBmdW5jdGlvbiAoKSB7XG4gICAgdGhp
cy5yZWFjdE1vdW50UmVhZHkubm90aWZ5QWxsKCk7XG4gIH1cbn07XG5cbi8qKlxuICogRXhlY3V0
ZWQgd2l0aGluIHRoZSBzY29wZSBvZiB0aGUgYFRyYW5zYWN0aW9uYCBpbnN0YW5jZS4gQ29uc2lk
ZXIgdGhlc2UgYXNcbiAqIGJlaW5nIG1lbWJlciBtZXRob2RzLCBidXQgd2l0aCBhbiBpbXBsaWVk
IG9yZGVyaW5nIHdoaWxlIGJlaW5nIGlzb2xhdGVkIGZyb21cbiAqIGVhY2ggb3RoZXIuXG4gKi9c
bnZhciBUUkFOU0FDVElPTl9XUkFQUEVSUyA9IFtTRUxFQ1RJT05fUkVTVE9SQVRJT04sIEVWRU5U
X1NVUFBSRVNTSU9OLCBPTl9ET01fUkVBRFlfUVVFVUVJTkddO1xuXG5pZiAocHJvY2Vzcy5lbnYu
Tk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICBUUkFOU0FDVElPTl9XUkFQUEVSUy5wdXNo
KHtcbiAgICBpbml0aWFsaXplOiBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25CZWdp
bkZsdXNoLFxuICAgIGNsb3NlOiBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25FbmRG
bHVzaFxuICB9KTtcbn1cblxuLyoqXG4gKiBDdXJyZW50bHk6XG4gKiAtIFRoZSBvcmRlciB0aGF0
IHRoZXNlIGFyZSBsaXN0ZWQgaW4gdGhlIHRyYW5zYWN0aW9uIGlzIGNyaXRpY2FsOlxuICogLSBT
dXBwcmVzc2VzIGV2ZW50cy5cbiAqIC0gUmVzdG9yZXMgc2VsZWN0aW9uIHJhbmdlLlxuICpcbiAq
IEZ1dHVyZTpcbiAqIC0gUmVzdG9yZSBkb2N1bWVudC9vdmVyZmxvdyBzY3JvbGwgcG9zaXRpb25z
IHRoYXQgd2VyZSB1bmludGVudGlvbmFsbHlcbiAqICAgbW9kaWZpZWQgdmlhIERPTSBpbnNlcnRp
b25zIGFib3ZlIHRoZSB0b3Agdmlld3BvcnQgYm91bmRhcnkuXG4gKiAtIEltcGxlbWVudC9pbnRl
Z3JhdGUgd2l0aCBjdXN0b21pemVkIGNvbnN0cmFpbnQgYmFzZWQgbGF5b3V0IHN5c3RlbSBhbmQg
a2VlcFxuICogICB0cmFjayBvZiB3aGljaCBkaW1lbnNpb25zIG11c3QgYmUgcmVtZWFzdXJlZC5c
biAqXG4gKiBAY2xhc3MgUmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvblxuICovXG5mdW5jdGlvbiBS
ZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9uKHVzZUNyZWF0ZUVsZW1lbnQpIHtcbiAgdGhpcy5yZWlu
aXRpYWxpemVUcmFuc2FjdGlvbigpO1xuICAvLyBPbmx5IHNlcnZlci1zaWRlIHJlbmRlcmluZyBy
ZWFsbHkgbmVlZHMgdGhpcyBvcHRpb24gKHNlZVxuICAvLyBgUmVhY3RTZXJ2ZXJSZW5kZXJpbmdg
KSwgYnV0IHNlcnZlci1zaWRlIHVzZXNcbiAgLy8gYFJlYWN0U2VydmVyUmVuZGVyaW5nVHJhbnNh
Y3Rpb25gIGluc3RlYWQuIFRoaXMgb3B0aW9uIGlzIGhlcmUgc28gdGhhdCBpdCdzXG4gIC8vIGFj
Y2Vzc2libGUgYW5kIGRlZmF1bHRzIHRvIGZhbHNlIHdoZW4gYFJlYWN0RE9NQ29tcG9uZW50YCBh
bmRcbiAgLy8gYFJlYWN0RE9NVGV4dENvbXBvbmVudGAgY2hlY2tzIGl0IGluIGBtb3VudENvbXBv
bmVudGAuYFxuICB0aGlzLnJlbmRlclRvU3RhdGljTWFya3VwID0gZmFsc2U7XG4gIHRoaXMucmVh
Y3RNb3VudFJlYWR5ID0gQ2FsbGJhY2tRdWV1ZS5nZXRQb29sZWQobnVsbCk7XG4gIHRoaXMudXNl
Q3JlYXRlRWxlbWVudCA9IHVzZUNyZWF0ZUVsZW1lbnQ7XG59XG5cbnZhciBNaXhpbiA9IHtcbiAg
LyoqXG4gICAqIEBzZWUgVHJhbnNhY3Rpb25cbiAgICogQGFic3RyYWN0XG4gICAqIEBmaW5hbFxu
ICAgKiBAcmV0dXJuIHthcnJheTxvYmplY3Q+fSBMaXN0IG9mIG9wZXJhdGlvbiB3cmFwIHByb2Nl
ZHVyZXMuXG4gICAqICAgVE9ETzogY29udmVydCB0byBhcnJheTxUcmFuc2FjdGlvbldyYXBwZXI+
XG4gICAqL1xuICBnZXRUcmFuc2FjdGlvbldyYXBwZXJzOiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0
dXJuIFRSQU5TQUNUSU9OX1dSQVBQRVJTO1xuICB9LFxuXG4gIC8qKlxuICAgKiBAcmV0dXJuIHtv
YmplY3R9IFRoZSBxdWV1ZSB0byBjb2xsZWN0IGBvbkRPTVJlYWR5YCBjYWxsYmFja3Mgd2l0aC5c
biAgICovXG4gIGdldFJlYWN0TW91bnRSZWFkeTogZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0
aGlzLnJlYWN0TW91bnRSZWFkeTtcbiAgfSxcblxuICAvKipcbiAgICogQHJldHVybiB7b2JqZWN0
fSBUaGUgcXVldWUgdG8gY29sbGVjdCBSZWFjdCBhc3luYyBldmVudHMuXG4gICAqL1xuICBnZXRV
cGRhdGVRdWV1ZTogZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBSZWFjdFVwZGF0ZVF1ZXVlO1xu
ICB9LFxuXG4gIC8qKlxuICAgKiBTYXZlIGN1cnJlbnQgdHJhbnNhY3Rpb24gc3RhdGUgLS0gaWYg
dGhlIHJldHVybiB2YWx1ZSBmcm9tIHRoaXMgbWV0aG9kIGlzXG4gICAqIHBhc3NlZCB0byBgcm9s
bGJhY2tgLCB0aGUgdHJhbnNhY3Rpb24gd2lsbCBiZSByZXNldCB0byB0aGF0IHN0YXRlLlxuICAg
Ki9cbiAgY2hlY2twb2ludDogZnVuY3Rpb24gKCkge1xuICAgIC8vIHJlYWN0TW91bnRSZWFkeSBp
cyB0aGUgb3VyIG9ubHkgc3RhdGVmdWwgd3JhcHBlclxuICAgIHJldHVybiB0aGlzLnJlYWN0TW91
bnRSZWFkeS5jaGVja3BvaW50KCk7XG4gIH0sXG5cbiAgcm9sbGJhY2s6IGZ1bmN0aW9uIChjaGVj
a3BvaW50KSB7XG4gICAgdGhpcy5yZWFjdE1vdW50UmVhZHkucm9sbGJhY2soY2hlY2twb2ludCk7
XG4gIH0sXG5cbiAgLyoqXG4gICAqIGBQb29sZWRDbGFzc2AgbG9va3MgZm9yIHRoaXMsIGFuZCB3
aWxsIGludm9rZSB0aGlzIGJlZm9yZSBhbGxvd2luZyB0aGlzXG4gICAqIGluc3RhbmNlIHRvIGJl
IHJldXNlZC5cbiAgICovXG4gIGRlc3RydWN0b3I6IGZ1bmN0aW9uICgpIHtcbiAgICBDYWxsYmFj
a1F1ZXVlLnJlbGVhc2UodGhpcy5yZWFjdE1vdW50UmVhZHkpO1xuICAgIHRoaXMucmVhY3RNb3Vu
dFJlYWR5ID0gbnVsbDtcbiAgfVxufTtcblxuX2Fzc2lnbihSZWFjdFJlY29uY2lsZVRyYW5zYWN0
aW9uLnByb3RvdHlwZSwgVHJhbnNhY3Rpb24sIE1peGluKTtcblxuUG9vbGVkQ2xhc3MuYWRkUG9v
bGluZ1RvKFJlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb24pO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFJl
YWN0UmVjb25jaWxlVHJhbnNhY3Rpb247XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VC
UEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3QtZG9tL2xpYi9SZWFjdFJlY29uY2lsZVRyYW5zYWN0
aW9uLmpzXG4gKiogbW9kdWxlIGlkID0gMTU5XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8i
LCIvKipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwg
cmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5k
ZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGlu
IHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdy
YW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxl
IGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5c
bnZhciBSZWFjdE93bmVyID0gcmVxdWlyZSgnLi9SZWFjdE93bmVyJyk7XG5cbnZhciBSZWFjdFJl
ZiA9IHt9O1xuXG5mdW5jdGlvbiBhdHRhY2hSZWYocmVmLCBjb21wb25lbnQsIG93bmVyKSB7XG4g
IGlmICh0eXBlb2YgcmVmID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmVmKGNvbXBvbmVudC5nZXRQ
dWJsaWNJbnN0YW5jZSgpKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBMZWdhY3kgcmVmXG4gICAgUmVh
Y3RPd25lci5hZGRDb21wb25lbnRBc1JlZlRvKGNvbXBvbmVudCwgcmVmLCBvd25lcik7XG4gIH1c
bn1cblxuZnVuY3Rpb24gZGV0YWNoUmVmKHJlZiwgY29tcG9uZW50LCBvd25lcikge1xuICBpZiAo
dHlwZW9mIHJlZiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJlZihudWxsKTtcbiAgfSBlbHNlIHtc
biAgICAvLyBMZWdhY3kgcmVmXG4gICAgUmVhY3RPd25lci5yZW1vdmVDb21wb25lbnRBc1JlZkZy
b20oY29tcG9uZW50LCByZWYsIG93bmVyKTtcbiAgfVxufVxuXG5SZWFjdFJlZi5hdHRhY2hSZWZz
ID0gZnVuY3Rpb24gKGluc3RhbmNlLCBlbGVtZW50KSB7XG4gIGlmIChlbGVtZW50ID09PSBudWxs
IHx8IHR5cGVvZiBlbGVtZW50ICE9PSAnb2JqZWN0Jykge1xuICAgIHJldHVybjtcbiAgfVxuICB2
YXIgcmVmID0gZWxlbWVudC5yZWY7XG4gIGlmIChyZWYgIT0gbnVsbCkge1xuICAgIGF0dGFjaFJl
ZihyZWYsIGluc3RhbmNlLCBlbGVtZW50Ll9vd25lcik7XG4gIH1cbn07XG5cblJlYWN0UmVmLnNo
b3VsZFVwZGF0ZVJlZnMgPSBmdW5jdGlvbiAocHJldkVsZW1lbnQsIG5leHRFbGVtZW50KSB7XG4g
IC8vIElmIGVpdGhlciB0aGUgb3duZXIgb3IgYSBgcmVmYCBoYXMgY2hhbmdlZCwgbWFrZSBzdXJl
IHRoZSBuZXdlc3Qgb3duZXJcbiAgLy8gaGFzIHN0b3JlZCBhIHJlZmVyZW5jZSB0byBgdGhpc2As
IGFuZCB0aGUgcHJldmlvdXMgb3duZXIgKGlmIGRpZmZlcmVudClcbiAgLy8gaGFzIGZvcmdvdHRl
biB0aGUgcmVmZXJlbmNlIHRvIGB0aGlzYC4gV2UgdXNlIHRoZSBlbGVtZW50IGluc3RlYWRcbiAg
Ly8gb2YgdGhlIHB1YmxpYyB0aGlzLnByb3BzIGJlY2F1c2UgdGhlIHBvc3QgcHJvY2Vzc2luZyBj
YW5ub3QgZGV0ZXJtaW5lXG4gIC8vIGEgcmVmLiBUaGUgcmVmIGNvbmNlcHR1YWxseSBsaXZlcyBv
biB0aGUgZWxlbWVudC5cblxuICAvLyBUT0RPOiBTaG91bGQgdGhpcyBldmVuIGJlIHBvc3NpYmxl
PyBUaGUgb3duZXIgY2Fubm90IGNoYW5nZSBiZWNhdXNlXG4gIC8vIGl0J3MgZm9yYmlkZGVuIGJ5
IHNob3VsZFVwZGF0ZVJlYWN0Q29tcG9uZW50LiBUaGUgcmVmIGNhbiBjaGFuZ2VcbiAgLy8gaWYg
eW91IHN3YXAgdGhlIGtleXMgb2YgYnV0IG5vdCB0aGUgcmVmcy4gUmVjb25zaWRlciB3aGVyZSB0
aGlzIGNoZWNrXG4gIC8vIGlzIG1hZGUuIEl0IHByb2JhYmx5IGJlbG9uZ3Mgd2hlcmUgdGhlIGtl
eSBjaGVja2luZyBhbmRcbiAgLy8gaW5zdGFudGlhdGVSZWFjdENvbXBvbmVudCBpcyBkb25lLlxu
XG4gIHZhciBwcmV2UmVmID0gbnVsbDtcbiAgdmFyIHByZXZPd25lciA9IG51bGw7XG4gIGlmIChw
cmV2RWxlbWVudCAhPT0gbnVsbCAmJiB0eXBlb2YgcHJldkVsZW1lbnQgPT09ICdvYmplY3QnKSB7
XG4gICAgcHJldlJlZiA9IHByZXZFbGVtZW50LnJlZjtcbiAgICBwcmV2T3duZXIgPSBwcmV2RWxl
bWVudC5fb3duZXI7XG4gIH1cblxuICB2YXIgbmV4dFJlZiA9IG51bGw7XG4gIHZhciBuZXh0T3du
ZXIgPSBudWxsO1xuICBpZiAobmV4dEVsZW1lbnQgIT09IG51bGwgJiYgdHlwZW9mIG5leHRFbGVt
ZW50ID09PSAnb2JqZWN0Jykge1xuICAgIG5leHRSZWYgPSBuZXh0RWxlbWVudC5yZWY7XG4gICAg
bmV4dE93bmVyID0gbmV4dEVsZW1lbnQuX293bmVyO1xuICB9XG5cbiAgcmV0dXJuIHByZXZSZWYg
IT09IG5leHRSZWYgfHxcbiAgLy8gSWYgb3duZXIgY2hhbmdlcyBidXQgd2UgaGF2ZSBhbiB1bmNo
YW5nZWQgZnVuY3Rpb24gcmVmLCBkb24ndCB1cGRhdGUgcmVmc1xuICB0eXBlb2YgbmV4dFJlZiA9
PT0gJ3N0cmluZycgJiYgbmV4dE93bmVyICE9PSBwcmV2T3duZXI7XG59O1xuXG5SZWFjdFJlZi5k
ZXRhY2hSZWZzID0gZnVuY3Rpb24gKGluc3RhbmNlLCBlbGVtZW50KSB7XG4gIGlmIChlbGVtZW50
ID09PSBudWxsIHx8IHR5cGVvZiBlbGVtZW50ICE9PSAnb2JqZWN0Jykge1xuICAgIHJldHVybjtc
biAgfVxuICB2YXIgcmVmID0gZWxlbWVudC5yZWY7XG4gIGlmIChyZWYgIT0gbnVsbCkge1xuICAg
IGRldGFjaFJlZihyZWYsIGluc3RhbmNlLCBlbGVtZW50Ll9vd25lcik7XG4gIH1cbn07XG5cbm1v
ZHVsZS5leHBvcnRzID0gUmVhY3RSZWY7XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VC
UEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3QtZG9tL2xpYi9SZWFjdFJlZi5qc1xuICoqIG1vZHVs
ZSBpZCA9IDE2MFxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmln
aHQgMjAxNC1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5c
biAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUg
bGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rv
cnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50
IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJl
Y3RvcnkuXG4gKlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIF9hc3NpZ24gPSByZXF1aXJl
KCdvYmplY3QtYXNzaWduJyk7XG5cbnZhciBQb29sZWRDbGFzcyA9IHJlcXVpcmUoJy4vUG9vbGVk
Q2xhc3MnKTtcbnZhciBUcmFuc2FjdGlvbiA9IHJlcXVpcmUoJy4vVHJhbnNhY3Rpb24nKTtcbnZh
ciBSZWFjdEluc3RydW1lbnRhdGlvbiA9IHJlcXVpcmUoJy4vUmVhY3RJbnN0cnVtZW50YXRpb24n
KTtcbnZhciBSZWFjdFNlcnZlclVwZGF0ZVF1ZXVlID0gcmVxdWlyZSgnLi9SZWFjdFNlcnZlclVw
ZGF0ZVF1ZXVlJyk7XG5cbi8qKlxuICogRXhlY3V0ZWQgd2l0aGluIHRoZSBzY29wZSBvZiB0aGUg
YFRyYW5zYWN0aW9uYCBpbnN0YW5jZS4gQ29uc2lkZXIgdGhlc2UgYXNcbiAqIGJlaW5nIG1lbWJl
ciBtZXRob2RzLCBidXQgd2l0aCBhbiBpbXBsaWVkIG9yZGVyaW5nIHdoaWxlIGJlaW5nIGlzb2xh
dGVkIGZyb21cbiAqIGVhY2ggb3RoZXIuXG4gKi9cbnZhciBUUkFOU0FDVElPTl9XUkFQUEVSUyA9
IFtdO1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICBU
UkFOU0FDVElPTl9XUkFQUEVSUy5wdXNoKHtcbiAgICBpbml0aWFsaXplOiBSZWFjdEluc3RydW1l
bnRhdGlvbi5kZWJ1Z1Rvb2wub25CZWdpbkZsdXNoLFxuICAgIGNsb3NlOiBSZWFjdEluc3RydW1l
bnRhdGlvbi5kZWJ1Z1Rvb2wub25FbmRGbHVzaFxuICB9KTtcbn1cblxudmFyIG5vb3BDYWxsYmFj
a1F1ZXVlID0ge1xuICBlbnF1ZXVlOiBmdW5jdGlvbiAoKSB7fVxufTtcblxuLyoqXG4gKiBAY2xh
c3MgUmVhY3RTZXJ2ZXJSZW5kZXJpbmdUcmFuc2FjdGlvblxuICogQHBhcmFtIHtib29sZWFufSBy
ZW5kZXJUb1N0YXRpY01hcmt1cFxuICovXG5mdW5jdGlvbiBSZWFjdFNlcnZlclJlbmRlcmluZ1Ry
YW5zYWN0aW9uKHJlbmRlclRvU3RhdGljTWFya3VwKSB7XG4gIHRoaXMucmVpbml0aWFsaXplVHJh
bnNhY3Rpb24oKTtcbiAgdGhpcy5yZW5kZXJUb1N0YXRpY01hcmt1cCA9IHJlbmRlclRvU3RhdGlj
TWFya3VwO1xuICB0aGlzLnVzZUNyZWF0ZUVsZW1lbnQgPSBmYWxzZTtcbiAgdGhpcy51cGRhdGVR
dWV1ZSA9IG5ldyBSZWFjdFNlcnZlclVwZGF0ZVF1ZXVlKHRoaXMpO1xufVxuXG52YXIgTWl4aW4g
PSB7XG4gIC8qKlxuICAgKiBAc2VlIFRyYW5zYWN0aW9uXG4gICAqIEBhYnN0cmFjdFxuICAgKiBA
ZmluYWxcbiAgICogQHJldHVybiB7YXJyYXl9IEVtcHR5IGxpc3Qgb2Ygb3BlcmF0aW9uIHdyYXAg
cHJvY2VkdXJlcy5cbiAgICovXG4gIGdldFRyYW5zYWN0aW9uV3JhcHBlcnM6IGZ1bmN0aW9uICgp
IHtcbiAgICByZXR1cm4gVFJBTlNBQ1RJT05fV1JBUFBFUlM7XG4gIH0sXG5cbiAgLyoqXG4gICAq
IEByZXR1cm4ge29iamVjdH0gVGhlIHF1ZXVlIHRvIGNvbGxlY3QgYG9uRE9NUmVhZHlgIGNhbGxi
YWNrcyB3aXRoLlxuICAgKi9cbiAgZ2V0UmVhY3RNb3VudFJlYWR5OiBmdW5jdGlvbiAoKSB7XG4g
ICAgcmV0dXJuIG5vb3BDYWxsYmFja1F1ZXVlO1xuICB9LFxuXG4gIC8qKlxuICAgKiBAcmV0dXJu
IHtvYmplY3R9IFRoZSBxdWV1ZSB0byBjb2xsZWN0IFJlYWN0IGFzeW5jIGV2ZW50cy5cbiAgICov
XG4gIGdldFVwZGF0ZVF1ZXVlOiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMudXBkYXRl
UXVldWU7XG4gIH0sXG5cbiAgLyoqXG4gICAqIGBQb29sZWRDbGFzc2AgbG9va3MgZm9yIHRoaXMs
IGFuZCB3aWxsIGludm9rZSB0aGlzIGJlZm9yZSBhbGxvd2luZyB0aGlzXG4gICAqIGluc3RhbmNl
IHRvIGJlIHJldXNlZC5cbiAgICovXG4gIGRlc3RydWN0b3I6IGZ1bmN0aW9uICgpIHt9LFxuXG4g
IGNoZWNrcG9pbnQ6IGZ1bmN0aW9uICgpIHt9LFxuXG4gIHJvbGxiYWNrOiBmdW5jdGlvbiAoKSB7
fVxufTtcblxuX2Fzc2lnbihSZWFjdFNlcnZlclJlbmRlcmluZ1RyYW5zYWN0aW9uLnByb3RvdHlw
ZSwgVHJhbnNhY3Rpb24sIE1peGluKTtcblxuUG9vbGVkQ2xhc3MuYWRkUG9vbGluZ1RvKFJlYWN0
U2VydmVyUmVuZGVyaW5nVHJhbnNhY3Rpb24pO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0U2Vy
dmVyUmVuZGVyaW5nVHJhbnNhY3Rpb247XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VC
UEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3QtZG9tL2xpYi9SZWFjdFNlcnZlclJlbmRlcmluZ1Ry
YW5zYWN0aW9uLmpzXG4gKiogbW9kdWxlIGlkID0gMTYxXG4gKiogbW9kdWxlIGNodW5rcyA9IDBc
biAqKi8iLCIvKipcbiAqIENvcHlyaWdodCAyMDE1LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4g
KiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5z
ZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBm
aWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlv
bmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5U
UyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBcbiAqL1xuXG4ndXNlIHN0cmlj
dCc7XG5cbmZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsg
aWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVF
cnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKTsgfSB9XG5cbnZhciBS
ZWFjdFVwZGF0ZVF1ZXVlID0gcmVxdWlyZSgnLi9SZWFjdFVwZGF0ZVF1ZXVlJyk7XG5cbnZhciB3
YXJuaW5nID0gcmVxdWlyZSgnZmJqcy9saWIvd2FybmluZycpO1xuXG5mdW5jdGlvbiB3YXJuTm9v
cChwdWJsaWNJbnN0YW5jZSwgY2FsbGVyTmFtZSkge1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9F
TlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIHZhciBjb25zdHJ1Y3RvciA9IHB1YmxpY0luc3Rh
bmNlLmNvbnN0cnVjdG9yO1xuICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlv
bicgPyB3YXJuaW5nKGZhbHNlLCAnJXMoLi4uKTogQ2FuIG9ubHkgdXBkYXRlIGEgbW91bnRpbmcg
Y29tcG9uZW50LiAnICsgJ1RoaXMgdXN1YWxseSBtZWFucyB5b3UgY2FsbGVkICVzKCkgb3V0c2lk
ZSBjb21wb25lbnRXaWxsTW91bnQoKSBvbiB0aGUgc2VydmVyLiAnICsgJ1RoaXMgaXMgYSBuby1v
cC4gUGxlYXNlIGNoZWNrIHRoZSBjb2RlIGZvciB0aGUgJXMgY29tcG9uZW50LicsIGNhbGxlck5h
bWUsIGNhbGxlck5hbWUsIGNvbnN0cnVjdG9yICYmIChjb25zdHJ1Y3Rvci5kaXNwbGF5TmFtZSB8
fCBjb25zdHJ1Y3Rvci5uYW1lKSB8fCAnUmVhY3RDbGFzcycpIDogdm9pZCAwO1xuICB9XG59XG5c
bi8qKlxuICogVGhpcyBpcyB0aGUgdXBkYXRlIHF1ZXVlIHVzZWQgZm9yIHNlcnZlciByZW5kZXJp
bmcuXG4gKiBJdCBkZWxlZ2F0ZXMgdG8gUmVhY3RVcGRhdGVRdWV1ZSB3aGlsZSBzZXJ2ZXIgcmVu
ZGVyaW5nIGlzIGluIHByb2dyZXNzIGFuZFxuICogc3dpdGNoZXMgdG8gUmVhY3ROb29wVXBkYXRl
UXVldWUgYWZ0ZXIgdGhlIHRyYW5zYWN0aW9uIGhhcyBjb21wbGV0ZWQuXG4gKiBAY2xhc3MgUmVh
Y3RTZXJ2ZXJVcGRhdGVRdWV1ZVxuICogQHBhcmFtIHtUcmFuc2FjdGlvbn0gdHJhbnNhY3Rpb25c
biAqL1xuXG52YXIgUmVhY3RTZXJ2ZXJVcGRhdGVRdWV1ZSA9IGZ1bmN0aW9uICgpIHtcbiAgZnVu
Y3Rpb24gUmVhY3RTZXJ2ZXJVcGRhdGVRdWV1ZSh0cmFuc2FjdGlvbikge1xuICAgIF9jbGFzc0Nh
bGxDaGVjayh0aGlzLCBSZWFjdFNlcnZlclVwZGF0ZVF1ZXVlKTtcblxuICAgIHRoaXMudHJhbnNh
Y3Rpb24gPSB0cmFuc2FjdGlvbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3Mgd2hldGhlciBv
ciBub3QgdGhpcyBjb21wb3NpdGUgY29tcG9uZW50IGlzIG1vdW50ZWQuXG4gICAqIEBwYXJhbSB7
UmVhY3RDbGFzc30gcHVibGljSW5zdGFuY2UgVGhlIGluc3RhbmNlIHdlIHdhbnQgdG8gdGVzdC5c
biAgICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBpZiBtb3VudGVkLCBmYWxzZSBvdGhlcndpc2Uu
XG4gICAqIEBwcm90ZWN0ZWRcbiAgICogQGZpbmFsXG4gICAqL1xuXG5cbiAgUmVhY3RTZXJ2ZXJV
cGRhdGVRdWV1ZS5wcm90b3R5cGUuaXNNb3VudGVkID0gZnVuY3Rpb24gaXNNb3VudGVkKHB1Ymxp
Y0luc3RhbmNlKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9O1xuXG4gIC8qKlxuICAgKiBFbnF1
ZXVlIGEgY2FsbGJhY2sgdGhhdCB3aWxsIGJlIGV4ZWN1dGVkIGFmdGVyIGFsbCB0aGUgcGVuZGlu
ZyB1cGRhdGVzXG4gICAqIGhhdmUgcHJvY2Vzc2VkLlxuICAgKlxuICAgKiBAcGFyYW0ge1JlYWN0
Q2xhc3N9IHB1YmxpY0luc3RhbmNlIFRoZSBpbnN0YW5jZSB0byB1c2UgYXMgYHRoaXNgIGNvbnRl
eHQuXG4gICAqIEBwYXJhbSB7P2Z1bmN0aW9ufSBjYWxsYmFjayBDYWxsZWQgYWZ0ZXIgc3RhdGUg
aXMgdXBkYXRlZC5cbiAgICogQGludGVybmFsXG4gICAqL1xuXG5cbiAgUmVhY3RTZXJ2ZXJVcGRh
dGVRdWV1ZS5wcm90b3R5cGUuZW5xdWV1ZUNhbGxiYWNrID0gZnVuY3Rpb24gZW5xdWV1ZUNhbGxi
YWNrKHB1YmxpY0luc3RhbmNlLCBjYWxsYmFjaywgY2FsbGVyTmFtZSkge1xuICAgIGlmICh0aGlz
LnRyYW5zYWN0aW9uLmlzSW5UcmFuc2FjdGlvbigpKSB7XG4gICAgICBSZWFjdFVwZGF0ZVF1ZXVl
LmVucXVldWVDYWxsYmFjayhwdWJsaWNJbnN0YW5jZSwgY2FsbGJhY2ssIGNhbGxlck5hbWUpO1xu
ICAgIH1cbiAgfTtcblxuICAvKipcbiAgICogRm9yY2VzIGFuIHVwZGF0ZS4gVGhpcyBzaG91bGQg
b25seSBiZSBpbnZva2VkIHdoZW4gaXQgaXMga25vd24gd2l0aFxuICAgKiBjZXJ0YWludHkgdGhh
dCB3ZSBhcmUgKipub3QqKiBpbiBhIERPTSB0cmFuc2FjdGlvbi5cbiAgICpcbiAgICogWW91IG1h
eSB3YW50IHRvIGNhbGwgdGhpcyB3aGVuIHlvdSBrbm93IHRoYXQgc29tZSBkZWVwZXIgYXNwZWN0
IG9mIHRoZVxuICAgKiBjb21wb25lbnQncyBzdGF0ZSBoYXMgY2hhbmdlZCBidXQgYHNldFN0YXRl
YCB3YXMgbm90IGNhbGxlZC5cbiAgICpcbiAgICogVGhpcyB3aWxsIG5vdCBpbnZva2UgYHNob3Vs
ZENvbXBvbmVudFVwZGF0ZWAsIGJ1dCBpdCB3aWxsIGludm9rZVxuICAgKiBgY29tcG9uZW50V2ls
bFVwZGF0ZWAgYW5kIGBjb21wb25lbnREaWRVcGRhdGVgLlxuICAgKlxuICAgKiBAcGFyYW0ge1Jl
YWN0Q2xhc3N9IHB1YmxpY0luc3RhbmNlIFRoZSBpbnN0YW5jZSB0aGF0IHNob3VsZCByZXJlbmRl
ci5cbiAgICogQGludGVybmFsXG4gICAqL1xuXG5cbiAgUmVhY3RTZXJ2ZXJVcGRhdGVRdWV1ZS5w
cm90b3R5cGUuZW5xdWV1ZUZvcmNlVXBkYXRlID0gZnVuY3Rpb24gZW5xdWV1ZUZvcmNlVXBkYXRl
KHB1YmxpY0luc3RhbmNlKSB7XG4gICAgaWYgKHRoaXMudHJhbnNhY3Rpb24uaXNJblRyYW5zYWN0
aW9uKCkpIHtcbiAgICAgIFJlYWN0VXBkYXRlUXVldWUuZW5xdWV1ZUZvcmNlVXBkYXRlKHB1Ymxp
Y0luc3RhbmNlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgd2Fybk5vb3AocHVibGljSW5zdGFuY2Us
ICdmb3JjZVVwZGF0ZScpO1xuICAgIH1cbiAgfTtcblxuICAvKipcbiAgICogUmVwbGFjZXMgYWxs
IG9mIHRoZSBzdGF0ZS4gQWx3YXlzIHVzZSB0aGlzIG9yIGBzZXRTdGF0ZWAgdG8gbXV0YXRlIHN0
YXRlLlxuICAgKiBZb3Ugc2hvdWxkIHRyZWF0IGB0aGlzLnN0YXRlYCBhcyBpbW11dGFibGUuXG4g
ICAqXG4gICAqIFRoZXJlIGlzIG5vIGd1YXJhbnRlZSB0aGF0IGB0aGlzLnN0YXRlYCB3aWxsIGJl
IGltbWVkaWF0ZWx5IHVwZGF0ZWQsIHNvXG4gICAqIGFjY2Vzc2luZyBgdGhpcy5zdGF0ZWAgYWZ0
ZXIgY2FsbGluZyB0aGlzIG1ldGhvZCBtYXkgcmV0dXJuIHRoZSBvbGQgdmFsdWUuXG4gICAqXG4g
ICAqIEBwYXJhbSB7UmVhY3RDbGFzc30gcHVibGljSW5zdGFuY2UgVGhlIGluc3RhbmNlIHRoYXQg
c2hvdWxkIHJlcmVuZGVyLlxuICAgKiBAcGFyYW0ge29iamVjdHxmdW5jdGlvbn0gY29tcGxldGVT
dGF0ZSBOZXh0IHN0YXRlLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG5cblxuICBSZWFjdFNlcnZl
clVwZGF0ZVF1ZXVlLnByb3RvdHlwZS5lbnF1ZXVlUmVwbGFjZVN0YXRlID0gZnVuY3Rpb24gZW5x
dWV1ZVJlcGxhY2VTdGF0ZShwdWJsaWNJbnN0YW5jZSwgY29tcGxldGVTdGF0ZSkge1xuICAgIGlm
ICh0aGlzLnRyYW5zYWN0aW9uLmlzSW5UcmFuc2FjdGlvbigpKSB7XG4gICAgICBSZWFjdFVwZGF0
ZVF1ZXVlLmVucXVldWVSZXBsYWNlU3RhdGUocHVibGljSW5zdGFuY2UsIGNvbXBsZXRlU3RhdGUp
O1xuICAgIH0gZWxzZSB7XG4gICAgICB3YXJuTm9vcChwdWJsaWNJbnN0YW5jZSwgJ3JlcGxhY2VT
dGF0ZScpO1xuICAgIH1cbiAgfTtcblxuICAvKipcbiAgICogU2V0cyBhIHN1YnNldCBvZiB0aGUg
c3RhdGUuIFRoaXMgb25seSBleGlzdHMgYmVjYXVzZSBfcGVuZGluZ1N0YXRlIGlzXG4gICAqIGlu
dGVybmFsLiBUaGlzIHByb3ZpZGVzIGEgbWVyZ2luZyBzdHJhdGVneSB0aGF0IGlzIG5vdCBhdmFp
bGFibGUgdG8gZGVlcFxuICAgKiBwcm9wZXJ0aWVzIHdoaWNoIGlzIGNvbmZ1c2luZy4gVE9ETzog
RXhwb3NlIHBlbmRpbmdTdGF0ZSBvciBkb24ndCB1c2UgaXRcbiAgICogZHVyaW5nIHRoZSBtZXJn
ZS5cbiAgICpcbiAgICogQHBhcmFtIHtSZWFjdENsYXNzfSBwdWJsaWNJbnN0YW5jZSBUaGUgaW5z
dGFuY2UgdGhhdCBzaG91bGQgcmVyZW5kZXIuXG4gICAqIEBwYXJhbSB7b2JqZWN0fGZ1bmN0aW9u
fSBwYXJ0aWFsU3RhdGUgTmV4dCBwYXJ0aWFsIHN0YXRlIHRvIGJlIG1lcmdlZCB3aXRoIHN0YXRl
LlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG5cblxuICBSZWFjdFNlcnZlclVwZGF0ZVF1ZXVlLnBy
b3RvdHlwZS5lbnF1ZXVlU2V0U3RhdGUgPSBmdW5jdGlvbiBlbnF1ZXVlU2V0U3RhdGUocHVibGlj
SW5zdGFuY2UsIHBhcnRpYWxTdGF0ZSkge1xuICAgIGlmICh0aGlzLnRyYW5zYWN0aW9uLmlzSW5U
cmFuc2FjdGlvbigpKSB7XG4gICAgICBSZWFjdFVwZGF0ZVF1ZXVlLmVucXVldWVTZXRTdGF0ZShw
dWJsaWNJbnN0YW5jZSwgcGFydGlhbFN0YXRlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgd2Fybk5v
b3AocHVibGljSW5zdGFuY2UsICdzZXRTdGF0ZScpO1xuICAgIH1cbiAgfTtcblxuICByZXR1cm4g
UmVhY3RTZXJ2ZXJVcGRhdGVRdWV1ZTtcbn0oKTtcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdFNl
cnZlclVwZGF0ZVF1ZXVlO1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9P
VEVSXG4gKiogLi9+L3JlYWN0LWRvbS9saWIvUmVhY3RTZXJ2ZXJVcGRhdGVRdWV1ZS5qc1xuICoq
IG1vZHVsZSBpZCA9IDE2MlxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBD
b3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNl
cnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qt
c3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBk
aXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2Yg
cGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2Ft
ZSBkaXJlY3RvcnkuXG4gKlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxubW9kdWxlLmV4cG9ydHMg
PSAnMTUuNi4xJztcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxu
ICoqIC4vfi9yZWFjdC1kb20vbGliL1JlYWN0VmVyc2lvbi5qc1xuICoqIG1vZHVsZSBpZCA9IDE2
M1xuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1w
cmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBU
aGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBm
b3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhp
cyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBj
YW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4g
KlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIE5TID0ge1xuICB4bGluazogJ2h0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsnLFxuICB4bWw6ICdodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5
OC9uYW1lc3BhY2UnXG59O1xuXG4vLyBXZSB1c2UgYXR0cmlidXRlcyBmb3IgZXZlcnl0aGluZyBT
Vkcgc28gbGV0J3MgYXZvaWQgc29tZSBkdXBsaWNhdGlvbiBhbmQgcnVuXG4vLyBjb2RlIGluc3Rl
YWQuXG4vLyBUaGUgZm9sbG93aW5nIGFyZSBhbGwgc3BlY2lmaWVkIGluIHRoZSBIVE1MIGNvbmZp
ZyBhbHJlYWR5IHNvIHdlIGV4Y2x1ZGUgaGVyZS5cbi8vIC0gY2xhc3MgKGFzIGNsYXNzTmFtZSlc
bi8vIC0gY29sb3Jcbi8vIC0gaGVpZ2h0XG4vLyAtIGlkXG4vLyAtIGxhbmdcbi8vIC0gbWF4XG4v
LyAtIG1lZGlhXG4vLyAtIG1ldGhvZFxuLy8gLSBtaW5cbi8vIC0gbmFtZVxuLy8gLSBzdHlsZVxu
Ly8gLSB0YXJnZXRcbi8vIC0gdHlwZVxuLy8gLSB3aWR0aFxudmFyIEFUVFJTID0ge1xuICBhY2Nl
bnRIZWlnaHQ6ICdhY2NlbnQtaGVpZ2h0JyxcbiAgYWNjdW11bGF0ZTogMCxcbiAgYWRkaXRpdmU6
IDAsXG4gIGFsaWdubWVudEJhc2VsaW5lOiAnYWxpZ25tZW50LWJhc2VsaW5lJyxcbiAgYWxsb3dS
ZW9yZGVyOiAnYWxsb3dSZW9yZGVyJyxcbiAgYWxwaGFiZXRpYzogMCxcbiAgYW1wbGl0dWRlOiAw
LFxuICBhcmFiaWNGb3JtOiAnYXJhYmljLWZvcm0nLFxuICBhc2NlbnQ6IDAsXG4gIGF0dHJpYnV0
ZU5hbWU6ICdhdHRyaWJ1dGVOYW1lJyxcbiAgYXR0cmlidXRlVHlwZTogJ2F0dHJpYnV0ZVR5cGUn
LFxuICBhdXRvUmV2ZXJzZTogJ2F1dG9SZXZlcnNlJyxcbiAgYXppbXV0aDogMCxcbiAgYmFzZUZy
ZXF1ZW5jeTogJ2Jhc2VGcmVxdWVuY3knLFxuICBiYXNlUHJvZmlsZTogJ2Jhc2VQcm9maWxlJyxc
biAgYmFzZWxpbmVTaGlmdDogJ2Jhc2VsaW5lLXNoaWZ0JyxcbiAgYmJveDogMCxcbiAgYmVnaW46
IDAsXG4gIGJpYXM6IDAsXG4gIGJ5OiAwLFxuICBjYWxjTW9kZTogJ2NhbGNNb2RlJyxcbiAgY2Fw
SGVpZ2h0OiAnY2FwLWhlaWdodCcsXG4gIGNsaXA6IDAsXG4gIGNsaXBQYXRoOiAnY2xpcC1wYXRo
JyxcbiAgY2xpcFJ1bGU6ICdjbGlwLXJ1bGUnLFxuICBjbGlwUGF0aFVuaXRzOiAnY2xpcFBhdGhV
bml0cycsXG4gIGNvbG9ySW50ZXJwb2xhdGlvbjogJ2NvbG9yLWludGVycG9sYXRpb24nLFxuICBj
b2xvckludGVycG9sYXRpb25GaWx0ZXJzOiAnY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzJyxc
biAgY29sb3JQcm9maWxlOiAnY29sb3ItcHJvZmlsZScsXG4gIGNvbG9yUmVuZGVyaW5nOiAnY29s
b3ItcmVuZGVyaW5nJyxcbiAgY29udGVudFNjcmlwdFR5cGU6ICdjb250ZW50U2NyaXB0VHlwZScs
XG4gIGNvbnRlbnRTdHlsZVR5cGU6ICdjb250ZW50U3R5bGVUeXBlJyxcbiAgY3Vyc29yOiAwLFxu
ICBjeDogMCxcbiAgY3k6IDAsXG4gIGQ6IDAsXG4gIGRlY2VsZXJhdGU6IDAsXG4gIGRlc2NlbnQ6
IDAsXG4gIGRpZmZ1c2VDb25zdGFudDogJ2RpZmZ1c2VDb25zdGFudCcsXG4gIGRpcmVjdGlvbjog
MCxcbiAgZGlzcGxheTogMCxcbiAgZGl2aXNvcjogMCxcbiAgZG9taW5hbnRCYXNlbGluZTogJ2Rv
bWluYW50LWJhc2VsaW5lJyxcbiAgZHVyOiAwLFxuICBkeDogMCxcbiAgZHk6IDAsXG4gIGVkZ2VN
b2RlOiAnZWRnZU1vZGUnLFxuICBlbGV2YXRpb246IDAsXG4gIGVuYWJsZUJhY2tncm91bmQ6ICdl
bmFibGUtYmFja2dyb3VuZCcsXG4gIGVuZDogMCxcbiAgZXhwb25lbnQ6IDAsXG4gIGV4dGVybmFs
UmVzb3VyY2VzUmVxdWlyZWQ6ICdleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkJyxcbiAgZmlsbDog
MCxcbiAgZmlsbE9wYWNpdHk6ICdmaWxsLW9wYWNpdHknLFxuICBmaWxsUnVsZTogJ2ZpbGwtcnVs
ZScsXG4gIGZpbHRlcjogMCxcbiAgZmlsdGVyUmVzOiAnZmlsdGVyUmVzJyxcbiAgZmlsdGVyVW5p
dHM6ICdmaWx0ZXJVbml0cycsXG4gIGZsb29kQ29sb3I6ICdmbG9vZC1jb2xvcicsXG4gIGZsb29k
T3BhY2l0eTogJ2Zsb29kLW9wYWNpdHknLFxuICBmb2N1c2FibGU6IDAsXG4gIGZvbnRGYW1pbHk6
ICdmb250LWZhbWlseScsXG4gIGZvbnRTaXplOiAnZm9udC1zaXplJyxcbiAgZm9udFNpemVBZGp1
c3Q6ICdmb250LXNpemUtYWRqdXN0JyxcbiAgZm9udFN0cmV0Y2g6ICdmb250LXN0cmV0Y2gnLFxu
ICBmb250U3R5bGU6ICdmb250LXN0eWxlJyxcbiAgZm9udFZhcmlhbnQ6ICdmb250LXZhcmlhbnQn
LFxuICBmb250V2VpZ2h0OiAnZm9udC13ZWlnaHQnLFxuICBmb3JtYXQ6IDAsXG4gIGZyb206IDAs
XG4gIGZ4OiAwLFxuICBmeTogMCxcbiAgZzE6IDAsXG4gIGcyOiAwLFxuICBnbHlwaE5hbWU6ICdn
bHlwaC1uYW1lJyxcbiAgZ2x5cGhPcmllbnRhdGlvbkhvcml6b250YWw6ICdnbHlwaC1vcmllbnRh
dGlvbi1ob3Jpem9udGFsJyxcbiAgZ2x5cGhPcmllbnRhdGlvblZlcnRpY2FsOiAnZ2x5cGgtb3Jp
ZW50YXRpb24tdmVydGljYWwnLFxuICBnbHlwaFJlZjogJ2dseXBoUmVmJyxcbiAgZ3JhZGllbnRU
cmFuc2Zvcm06ICdncmFkaWVudFRyYW5zZm9ybScsXG4gIGdyYWRpZW50VW5pdHM6ICdncmFkaWVu
dFVuaXRzJyxcbiAgaGFuZ2luZzogMCxcbiAgaG9yaXpBZHZYOiAnaG9yaXotYWR2LXgnLFxuICBo
b3Jpek9yaWdpblg6ICdob3Jpei1vcmlnaW4teCcsXG4gIGlkZW9ncmFwaGljOiAwLFxuICBpbWFn
ZVJlbmRlcmluZzogJ2ltYWdlLXJlbmRlcmluZycsXG4gICdpbic6IDAsXG4gIGluMjogMCxcbiAg
aW50ZXJjZXB0OiAwLFxuICBrOiAwLFxuICBrMTogMCxcbiAgazI6IDAsXG4gIGszOiAwLFxuICBr
NDogMCxcbiAga2VybmVsTWF0cml4OiAna2VybmVsTWF0cml4JyxcbiAga2VybmVsVW5pdExlbmd0
aDogJ2tlcm5lbFVuaXRMZW5ndGgnLFxuICBrZXJuaW5nOiAwLFxuICBrZXlQb2ludHM6ICdrZXlQ
b2ludHMnLFxuICBrZXlTcGxpbmVzOiAna2V5U3BsaW5lcycsXG4gIGtleVRpbWVzOiAna2V5VGlt
ZXMnLFxuICBsZW5ndGhBZGp1c3Q6ICdsZW5ndGhBZGp1c3QnLFxuICBsZXR0ZXJTcGFjaW5nOiAn
bGV0dGVyLXNwYWNpbmcnLFxuICBsaWdodGluZ0NvbG9yOiAnbGlnaHRpbmctY29sb3InLFxuICBs
aW1pdGluZ0NvbmVBbmdsZTogJ2xpbWl0aW5nQ29uZUFuZ2xlJyxcbiAgbG9jYWw6IDAsXG4gIG1h
cmtlckVuZDogJ21hcmtlci1lbmQnLFxuICBtYXJrZXJNaWQ6ICdtYXJrZXItbWlkJyxcbiAgbWFy
a2VyU3RhcnQ6ICdtYXJrZXItc3RhcnQnLFxuICBtYXJrZXJIZWlnaHQ6ICdtYXJrZXJIZWlnaHQn
LFxuICBtYXJrZXJVbml0czogJ21hcmtlclVuaXRzJyxcbiAgbWFya2VyV2lkdGg6ICdtYXJrZXJX
aWR0aCcsXG4gIG1hc2s6IDAsXG4gIG1hc2tDb250ZW50VW5pdHM6ICdtYXNrQ29udGVudFVuaXRz
JyxcbiAgbWFza1VuaXRzOiAnbWFza1VuaXRzJyxcbiAgbWF0aGVtYXRpY2FsOiAwLFxuICBtb2Rl
OiAwLFxuICBudW1PY3RhdmVzOiAnbnVtT2N0YXZlcycsXG4gIG9mZnNldDogMCxcbiAgb3BhY2l0
eTogMCxcbiAgb3BlcmF0b3I6IDAsXG4gIG9yZGVyOiAwLFxuICBvcmllbnQ6IDAsXG4gIG9yaWVu
dGF0aW9uOiAwLFxuICBvcmlnaW46IDAsXG4gIG92ZXJmbG93OiAwLFxuICBvdmVybGluZVBvc2l0
aW9uOiAnb3ZlcmxpbmUtcG9zaXRpb24nLFxuICBvdmVybGluZVRoaWNrbmVzczogJ292ZXJsaW5l
LXRoaWNrbmVzcycsXG4gIHBhaW50T3JkZXI6ICdwYWludC1vcmRlcicsXG4gIHBhbm9zZTE6ICdw
YW5vc2UtMScsXG4gIHBhdGhMZW5ndGg6ICdwYXRoTGVuZ3RoJyxcbiAgcGF0dGVybkNvbnRlbnRV
bml0czogJ3BhdHRlcm5Db250ZW50VW5pdHMnLFxuICBwYXR0ZXJuVHJhbnNmb3JtOiAncGF0dGVy
blRyYW5zZm9ybScsXG4gIHBhdHRlcm5Vbml0czogJ3BhdHRlcm5Vbml0cycsXG4gIHBvaW50ZXJF
dmVudHM6ICdwb2ludGVyLWV2ZW50cycsXG4gIHBvaW50czogMCxcbiAgcG9pbnRzQXRYOiAncG9p
bnRzQXRYJyxcbiAgcG9pbnRzQXRZOiAncG9pbnRzQXRZJyxcbiAgcG9pbnRzQXRaOiAncG9pbnRz
QXRaJyxcbiAgcHJlc2VydmVBbHBoYTogJ3ByZXNlcnZlQWxwaGEnLFxuICBwcmVzZXJ2ZUFzcGVj
dFJhdGlvOiAncHJlc2VydmVBc3BlY3RSYXRpbycsXG4gIHByaW1pdGl2ZVVuaXRzOiAncHJpbWl0
aXZlVW5pdHMnLFxuICByOiAwLFxuICByYWRpdXM6IDAsXG4gIHJlZlg6ICdyZWZYJyxcbiAgcmVm
WTogJ3JlZlknLFxuICByZW5kZXJpbmdJbnRlbnQ6ICdyZW5kZXJpbmctaW50ZW50JyxcbiAgcmVw
ZWF0Q291bnQ6ICdyZXBlYXRDb3VudCcsXG4gIHJlcGVhdER1cjogJ3JlcGVhdER1cicsXG4gIHJl
cXVpcmVkRXh0ZW5zaW9uczogJ3JlcXVpcmVkRXh0ZW5zaW9ucycsXG4gIHJlcXVpcmVkRmVhdHVy
ZXM6ICdyZXF1aXJlZEZlYXR1cmVzJyxcbiAgcmVzdGFydDogMCxcbiAgcmVzdWx0OiAwLFxuICBy
b3RhdGU6IDAsXG4gIHJ4OiAwLFxuICByeTogMCxcbiAgc2NhbGU6IDAsXG4gIHNlZWQ6IDAsXG4g
IHNoYXBlUmVuZGVyaW5nOiAnc2hhcGUtcmVuZGVyaW5nJyxcbiAgc2xvcGU6IDAsXG4gIHNwYWNp
bmc6IDAsXG4gIHNwZWN1bGFyQ29uc3RhbnQ6ICdzcGVjdWxhckNvbnN0YW50JyxcbiAgc3BlY3Vs
YXJFeHBvbmVudDogJ3NwZWN1bGFyRXhwb25lbnQnLFxuICBzcGVlZDogMCxcbiAgc3ByZWFkTWV0
aG9kOiAnc3ByZWFkTWV0aG9kJyxcbiAgc3RhcnRPZmZzZXQ6ICdzdGFydE9mZnNldCcsXG4gIHN0
ZERldmlhdGlvbjogJ3N0ZERldmlhdGlvbicsXG4gIHN0ZW1oOiAwLFxuICBzdGVtdjogMCxcbiAg
c3RpdGNoVGlsZXM6ICdzdGl0Y2hUaWxlcycsXG4gIHN0b3BDb2xvcjogJ3N0b3AtY29sb3InLFxu
ICBzdG9wT3BhY2l0eTogJ3N0b3Atb3BhY2l0eScsXG4gIHN0cmlrZXRocm91Z2hQb3NpdGlvbjog
J3N0cmlrZXRocm91Z2gtcG9zaXRpb24nLFxuICBzdHJpa2V0aHJvdWdoVGhpY2tuZXNzOiAnc3Ry
aWtldGhyb3VnaC10aGlja25lc3MnLFxuICBzdHJpbmc6IDAsXG4gIHN0cm9rZTogMCxcbiAgc3Ry
b2tlRGFzaGFycmF5OiAnc3Ryb2tlLWRhc2hhcnJheScsXG4gIHN0cm9rZURhc2hvZmZzZXQ6ICdz
dHJva2UtZGFzaG9mZnNldCcsXG4gIHN0cm9rZUxpbmVjYXA6ICdzdHJva2UtbGluZWNhcCcsXG4g
IHN0cm9rZUxpbmVqb2luOiAnc3Ryb2tlLWxpbmVqb2luJyxcbiAgc3Ryb2tlTWl0ZXJsaW1pdDog
J3N0cm9rZS1taXRlcmxpbWl0JyxcbiAgc3Ryb2tlT3BhY2l0eTogJ3N0cm9rZS1vcGFjaXR5Jyxc
biAgc3Ryb2tlV2lkdGg6ICdzdHJva2Utd2lkdGgnLFxuICBzdXJmYWNlU2NhbGU6ICdzdXJmYWNl
U2NhbGUnLFxuICBzeXN0ZW1MYW5ndWFnZTogJ3N5c3RlbUxhbmd1YWdlJyxcbiAgdGFibGVWYWx1
ZXM6ICd0YWJsZVZhbHVlcycsXG4gIHRhcmdldFg6ICd0YXJnZXRYJyxcbiAgdGFyZ2V0WTogJ3Rh
cmdldFknLFxuICB0ZXh0QW5jaG9yOiAndGV4dC1hbmNob3InLFxuICB0ZXh0RGVjb3JhdGlvbjog
J3RleHQtZGVjb3JhdGlvbicsXG4gIHRleHRSZW5kZXJpbmc6ICd0ZXh0LXJlbmRlcmluZycsXG4g
IHRleHRMZW5ndGg6ICd0ZXh0TGVuZ3RoJyxcbiAgdG86IDAsXG4gIHRyYW5zZm9ybTogMCxcbiAg
dTE6IDAsXG4gIHUyOiAwLFxuICB1bmRlcmxpbmVQb3NpdGlvbjogJ3VuZGVybGluZS1wb3NpdGlv
bicsXG4gIHVuZGVybGluZVRoaWNrbmVzczogJ3VuZGVybGluZS10aGlja25lc3MnLFxuICB1bmlj
b2RlOiAwLFxuICB1bmljb2RlQmlkaTogJ3VuaWNvZGUtYmlkaScsXG4gIHVuaWNvZGVSYW5nZTog
J3VuaWNvZGUtcmFuZ2UnLFxuICB1bml0c1BlckVtOiAndW5pdHMtcGVyLWVtJyxcbiAgdkFscGhh
YmV0aWM6ICd2LWFscGhhYmV0aWMnLFxuICB2SGFuZ2luZzogJ3YtaGFuZ2luZycsXG4gIHZJZGVv
Z3JhcGhpYzogJ3YtaWRlb2dyYXBoaWMnLFxuICB2TWF0aGVtYXRpY2FsOiAndi1tYXRoZW1hdGlj
YWwnLFxuICB2YWx1ZXM6IDAsXG4gIHZlY3RvckVmZmVjdDogJ3ZlY3Rvci1lZmZlY3QnLFxuICB2
ZXJzaW9uOiAwLFxuICB2ZXJ0QWR2WTogJ3ZlcnQtYWR2LXknLFxuICB2ZXJ0T3JpZ2luWDogJ3Zl
cnQtb3JpZ2luLXgnLFxuICB2ZXJ0T3JpZ2luWTogJ3ZlcnQtb3JpZ2luLXknLFxuICB2aWV3Qm94
OiAndmlld0JveCcsXG4gIHZpZXdUYXJnZXQ6ICd2aWV3VGFyZ2V0JyxcbiAgdmlzaWJpbGl0eTog
MCxcbiAgd2lkdGhzOiAwLFxuICB3b3JkU3BhY2luZzogJ3dvcmQtc3BhY2luZycsXG4gIHdyaXRp
bmdNb2RlOiAnd3JpdGluZy1tb2RlJyxcbiAgeDogMCxcbiAgeEhlaWdodDogJ3gtaGVpZ2h0Jyxc
biAgeDE6IDAsXG4gIHgyOiAwLFxuICB4Q2hhbm5lbFNlbGVjdG9yOiAneENoYW5uZWxTZWxlY3Rv
cicsXG4gIHhsaW5rQWN0dWF0ZTogJ3hsaW5rOmFjdHVhdGUnLFxuICB4bGlua0FyY3JvbGU6ICd4
bGluazphcmNyb2xlJyxcbiAgeGxpbmtIcmVmOiAneGxpbms6aHJlZicsXG4gIHhsaW5rUm9sZTog
J3hsaW5rOnJvbGUnLFxuICB4bGlua1Nob3c6ICd4bGluazpzaG93JyxcbiAgeGxpbmtUaXRsZTog
J3hsaW5rOnRpdGxlJyxcbiAgeGxpbmtUeXBlOiAneGxpbms6dHlwZScsXG4gIHhtbEJhc2U6ICd4
bWw6YmFzZScsXG4gIHhtbG5zOiAwLFxuICB4bWxuc1hsaW5rOiAneG1sbnM6eGxpbmsnLFxuICB4
bWxMYW5nOiAneG1sOmxhbmcnLFxuICB4bWxTcGFjZTogJ3htbDpzcGFjZScsXG4gIHk6IDAsXG4g
IHkxOiAwLFxuICB5MjogMCxcbiAgeUNoYW5uZWxTZWxlY3RvcjogJ3lDaGFubmVsU2VsZWN0b3In
LFxuICB6OiAwLFxuICB6b29tQW5kUGFuOiAnem9vbUFuZFBhbidcbn07XG5cbnZhciBTVkdET01Q
cm9wZXJ0eUNvbmZpZyA9IHtcbiAgUHJvcGVydGllczoge30sXG4gIERPTUF0dHJpYnV0ZU5hbWVz
cGFjZXM6IHtcbiAgICB4bGlua0FjdHVhdGU6IE5TLnhsaW5rLFxuICAgIHhsaW5rQXJjcm9sZTog
TlMueGxpbmssXG4gICAgeGxpbmtIcmVmOiBOUy54bGluayxcbiAgICB4bGlua1JvbGU6IE5TLnhs
aW5rLFxuICAgIHhsaW5rU2hvdzogTlMueGxpbmssXG4gICAgeGxpbmtUaXRsZTogTlMueGxpbmss
XG4gICAgeGxpbmtUeXBlOiBOUy54bGluayxcbiAgICB4bWxCYXNlOiBOUy54bWwsXG4gICAgeG1s
TGFuZzogTlMueG1sLFxuICAgIHhtbFNwYWNlOiBOUy54bWxcbiAgfSxcbiAgRE9NQXR0cmlidXRl
TmFtZXM6IHt9XG59O1xuXG5PYmplY3Qua2V5cyhBVFRSUykuZm9yRWFjaChmdW5jdGlvbiAoa2V5
KSB7XG4gIFNWR0RPTVByb3BlcnR5Q29uZmlnLlByb3BlcnRpZXNba2V5XSA9IDA7XG4gIGlmIChB
VFRSU1trZXldKSB7XG4gICAgU1ZHRE9NUHJvcGVydHlDb25maWcuRE9NQXR0cmlidXRlTmFtZXNb
a2V5XSA9IEFUVFJTW2tleV07XG4gIH1cbn0pO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFNWR0RPTVBy
b3BlcnR5Q29uZmlnO1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVS
XG4gKiogLi9+L3JlYWN0LWRvbS9saWIvU1ZHRE9NUHJvcGVydHlDb25maWcuanNcbiAqKiBtb2R1
bGUgaWQgPSAxNjRcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29weXJp
Z2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQu
XG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxl
IGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0
b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVu
dCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGly
ZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBFdmVudFByb3BhZ2F0b3Jz
ID0gcmVxdWlyZSgnLi9FdmVudFByb3BhZ2F0b3JzJyk7XG52YXIgRXhlY3V0aW9uRW52aXJvbm1l
bnQgPSByZXF1aXJlKCdmYmpzL2xpYi9FeGVjdXRpb25FbnZpcm9ubWVudCcpO1xudmFyIFJlYWN0
RE9NQ29tcG9uZW50VHJlZSA9IHJlcXVpcmUoJy4vUmVhY3RET01Db21wb25lbnRUcmVlJyk7XG52
YXIgUmVhY3RJbnB1dFNlbGVjdGlvbiA9IHJlcXVpcmUoJy4vUmVhY3RJbnB1dFNlbGVjdGlvbicp
O1xudmFyIFN5bnRoZXRpY0V2ZW50ID0gcmVxdWlyZSgnLi9TeW50aGV0aWNFdmVudCcpO1xuXG52
YXIgZ2V0QWN0aXZlRWxlbWVudCA9IHJlcXVpcmUoJ2ZianMvbGliL2dldEFjdGl2ZUVsZW1lbnQn
KTtcbnZhciBpc1RleHRJbnB1dEVsZW1lbnQgPSByZXF1aXJlKCcuL2lzVGV4dElucHV0RWxlbWVu
dCcpO1xudmFyIHNoYWxsb3dFcXVhbCA9IHJlcXVpcmUoJ2ZianMvbGliL3NoYWxsb3dFcXVhbCcp
O1xuXG52YXIgc2tpcFNlbGVjdGlvbkNoYW5nZUV2ZW50ID0gRXhlY3V0aW9uRW52aXJvbm1lbnQu
Y2FuVXNlRE9NICYmICdkb2N1bWVudE1vZGUnIGluIGRvY3VtZW50ICYmIGRvY3VtZW50LmRvY3Vt
ZW50TW9kZSA8PSAxMTtcblxudmFyIGV2ZW50VHlwZXMgPSB7XG4gIHNlbGVjdDoge1xuICAgIHBo
YXNlZFJlZ2lzdHJhdGlvbk5hbWVzOiB7XG4gICAgICBidWJibGVkOiAnb25TZWxlY3QnLFxuICAg
ICAgY2FwdHVyZWQ6ICdvblNlbGVjdENhcHR1cmUnXG4gICAgfSxcbiAgICBkZXBlbmRlbmNpZXM6
IFsndG9wQmx1cicsICd0b3BDb250ZXh0TWVudScsICd0b3BGb2N1cycsICd0b3BLZXlEb3duJywg
J3RvcEtleVVwJywgJ3RvcE1vdXNlRG93bicsICd0b3BNb3VzZVVwJywgJ3RvcFNlbGVjdGlvbkNo
YW5nZSddXG4gIH1cbn07XG5cbnZhciBhY3RpdmVFbGVtZW50ID0gbnVsbDtcbnZhciBhY3RpdmVF
bGVtZW50SW5zdCA9IG51bGw7XG52YXIgbGFzdFNlbGVjdGlvbiA9IG51bGw7XG52YXIgbW91c2VE
b3duID0gZmFsc2U7XG5cbi8vIFRyYWNrIHdoZXRoZXIgYSBsaXN0ZW5lciBleGlzdHMgZm9yIHRo
aXMgcGx1Z2luLiBJZiBub25lIGV4aXN0LCB3ZSBkb1xuLy8gbm90IGV4dHJhY3QgZXZlbnRzLiBT
ZWUgIzM2MzkuXG52YXIgaGFzTGlzdGVuZXIgPSBmYWxzZTtcblxuLyoqXG4gKiBHZXQgYW4gb2Jq
ZWN0IHdoaWNoIGlzIGEgdW5pcXVlIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBjdXJyZW50IHNlbGVj
dGlvbi5cbiAqXG4gKiBUaGUgcmV0dXJuIHZhbHVlIHdpbGwgbm90IGJlIGNvbnNpc3RlbnQgYWNy
b3NzIG5vZGVzIG9yIGJyb3dzZXJzLCBidXRcbiAqIHR3byBpZGVudGljYWwgc2VsZWN0aW9ucyBv
biB0aGUgc2FtZSBub2RlIHdpbGwgcmV0dXJuIGlkZW50aWNhbCBvYmplY3RzLlxuICpcbiAqIEBw
YXJhbSB7RE9NRWxlbWVudH0gbm9kZVxuICogQHJldHVybiB7b2JqZWN0fVxuICovXG5mdW5jdGlv
biBnZXRTZWxlY3Rpb24obm9kZSkge1xuICBpZiAoJ3NlbGVjdGlvblN0YXJ0JyBpbiBub2RlICYm
IFJlYWN0SW5wdXRTZWxlY3Rpb24uaGFzU2VsZWN0aW9uQ2FwYWJpbGl0aWVzKG5vZGUpKSB7XG4g
ICAgcmV0dXJuIHtcbiAgICAgIHN0YXJ0OiBub2RlLnNlbGVjdGlvblN0YXJ0LFxuICAgICAgZW5k
OiBub2RlLnNlbGVjdGlvbkVuZFxuICAgIH07XG4gIH0gZWxzZSBpZiAod2luZG93LmdldFNlbGVj
dGlvbikge1xuICAgIHZhciBzZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7XG4gICAg
cmV0dXJuIHtcbiAgICAgIGFuY2hvck5vZGU6IHNlbGVjdGlvbi5hbmNob3JOb2RlLFxuICAgICAg
YW5jaG9yT2Zmc2V0OiBzZWxlY3Rpb24uYW5jaG9yT2Zmc2V0LFxuICAgICAgZm9jdXNOb2RlOiBz
ZWxlY3Rpb24uZm9jdXNOb2RlLFxuICAgICAgZm9jdXNPZmZzZXQ6IHNlbGVjdGlvbi5mb2N1c09m
ZnNldFxuICAgIH07XG4gIH0gZWxzZSBpZiAoZG9jdW1lbnQuc2VsZWN0aW9uKSB7XG4gICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuc2VsZWN0aW9uLmNyZWF0ZVJhbmdlKCk7XG4gICAgcmV0dXJuIHtc
biAgICAgIHBhcmVudEVsZW1lbnQ6IHJhbmdlLnBhcmVudEVsZW1lbnQoKSxcbiAgICAgIHRleHQ6
IHJhbmdlLnRleHQsXG4gICAgICB0b3A6IHJhbmdlLmJvdW5kaW5nVG9wLFxuICAgICAgbGVmdDog
cmFuZ2UuYm91bmRpbmdMZWZ0XG4gICAgfTtcbiAgfVxufVxuXG4vKipcbiAqIFBvbGwgc2VsZWN0
aW9uIHRvIHNlZSB3aGV0aGVyIGl0J3MgY2hhbmdlZC5cbiAqXG4gKiBAcGFyYW0ge29iamVjdH0g
bmF0aXZlRXZlbnRcbiAqIEByZXR1cm4gez9TeW50aGV0aWNFdmVudH1cbiAqL1xuZnVuY3Rpb24g
Y29uc3RydWN0U2VsZWN0RXZlbnQobmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KSB7XG4g
IC8vIEVuc3VyZSB3ZSBoYXZlIHRoZSByaWdodCBlbGVtZW50LCBhbmQgdGhhdCB0aGUgdXNlciBp
cyBub3QgZHJhZ2dpbmcgYVxuICAvLyBzZWxlY3Rpb24gKHRoaXMgbWF0Y2hlcyBuYXRpdmUgYHNl
bGVjdGAgZXZlbnQgYmVoYXZpb3IpLiBJbiBIVE1MNSwgc2VsZWN0XG4gIC8vIGZpcmVzIG9ubHkg
b24gaW5wdXQgYW5kIHRleHRhcmVhIHRodXMgaWYgdGhlcmUncyBubyBmb2N1c2VkIGVsZW1lbnQg
d2VcbiAgLy8gd29uJ3QgZGlzcGF0Y2guXG4gIGlmIChtb3VzZURvd24gfHwgYWN0aXZlRWxlbWVu
dCA9PSBudWxsIHx8IGFjdGl2ZUVsZW1lbnQgIT09IGdldEFjdGl2ZUVsZW1lbnQoKSkge1xuICAg
IHJldHVybiBudWxsO1xuICB9XG5cbiAgLy8gT25seSBmaXJlIHdoZW4gc2VsZWN0aW9uIGhhcyBh
Y3R1YWxseSBjaGFuZ2VkLlxuICB2YXIgY3VycmVudFNlbGVjdGlvbiA9IGdldFNlbGVjdGlvbihh
Y3RpdmVFbGVtZW50KTtcbiAgaWYgKCFsYXN0U2VsZWN0aW9uIHx8ICFzaGFsbG93RXF1YWwobGFz
dFNlbGVjdGlvbiwgY3VycmVudFNlbGVjdGlvbikpIHtcbiAgICBsYXN0U2VsZWN0aW9uID0gY3Vy
cmVudFNlbGVjdGlvbjtcblxuICAgIHZhciBzeW50aGV0aWNFdmVudCA9IFN5bnRoZXRpY0V2ZW50
LmdldFBvb2xlZChldmVudFR5cGVzLnNlbGVjdCwgYWN0aXZlRWxlbWVudEluc3QsIG5hdGl2ZUV2
ZW50LCBuYXRpdmVFdmVudFRhcmdldCk7XG5cbiAgICBzeW50aGV0aWNFdmVudC50eXBlID0gJ3Nl
bGVjdCc7XG4gICAgc3ludGhldGljRXZlbnQudGFyZ2V0ID0gYWN0aXZlRWxlbWVudDtcblxuICAg
IEV2ZW50UHJvcGFnYXRvcnMuYWNjdW11bGF0ZVR3b1BoYXNlRGlzcGF0Y2hlcyhzeW50aGV0aWNF
dmVudCk7XG5cbiAgICByZXR1cm4gc3ludGhldGljRXZlbnQ7XG4gIH1cblxuICByZXR1cm4gbnVs
bDtcbn1cblxuLyoqXG4gKiBUaGlzIHBsdWdpbiBjcmVhdGVzIGFuIGBvblNlbGVjdGAgZXZlbnQg
dGhhdCBub3JtYWxpemVzIHNlbGVjdCBldmVudHNcbiAqIGFjcm9zcyBmb3JtIGVsZW1lbnRzLlxu
ICpcbiAqIFN1cHBvcnRlZCBlbGVtZW50cyBhcmU6XG4gKiAtIGlucHV0IChzZWUgYGlzVGV4dElu
cHV0RWxlbWVudGApXG4gKiAtIHRleHRhcmVhXG4gKiAtIGNvbnRlbnRFZGl0YWJsZVxuICpcbiAq
IFRoaXMgZGlmZmVycyBmcm9tIG5hdGl2ZSBicm93c2VyIGltcGxlbWVudGF0aW9ucyBpbiB0aGUg
Zm9sbG93aW5nIHdheXM6XG4gKiAtIEZpcmVzIG9uIGNvbnRlbnRFZGl0YWJsZSBmaWVsZHMgYXMg
d2VsbCBhcyBpbnB1dHMuXG4gKiAtIEZpcmVzIGZvciBjb2xsYXBzZWQgc2VsZWN0aW9uLlxuICog
LSBGaXJlcyBhZnRlciB1c2VyIGlucHV0LlxuICovXG52YXIgU2VsZWN0RXZlbnRQbHVnaW4gPSB7
XG4gIGV2ZW50VHlwZXM6IGV2ZW50VHlwZXMsXG5cbiAgZXh0cmFjdEV2ZW50czogZnVuY3Rpb24g
KHRvcExldmVsVHlwZSwgdGFyZ2V0SW5zdCwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0
KSB7XG4gICAgaWYgKCFoYXNMaXN0ZW5lcikge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxu
XG4gICAgdmFyIHRhcmdldE5vZGUgPSB0YXJnZXRJbnN0ID8gUmVhY3RET01Db21wb25lbnRUcmVl
LmdldE5vZGVGcm9tSW5zdGFuY2UodGFyZ2V0SW5zdCkgOiB3aW5kb3c7XG5cbiAgICBzd2l0Y2gg
KHRvcExldmVsVHlwZSkge1xuICAgICAgLy8gVHJhY2sgdGhlIGlucHV0IG5vZGUgdGhhdCBoYXMg
Zm9jdXMuXG4gICAgICBjYXNlICd0b3BGb2N1cyc6XG4gICAgICAgIGlmIChpc1RleHRJbnB1dEVs
ZW1lbnQodGFyZ2V0Tm9kZSkgfHwgdGFyZ2V0Tm9kZS5jb250ZW50RWRpdGFibGUgPT09ICd0cnVl
Jykge1xuICAgICAgICAgIGFjdGl2ZUVsZW1lbnQgPSB0YXJnZXROb2RlO1xuICAgICAgICAgIGFj
dGl2ZUVsZW1lbnRJbnN0ID0gdGFyZ2V0SW5zdDtcbiAgICAgICAgICBsYXN0U2VsZWN0aW9uID0g
bnVsbDtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3RvcEJsdXInOlxu
ICAgICAgICBhY3RpdmVFbGVtZW50ID0gbnVsbDtcbiAgICAgICAgYWN0aXZlRWxlbWVudEluc3Qg
PSBudWxsO1xuICAgICAgICBsYXN0U2VsZWN0aW9uID0gbnVsbDtcbiAgICAgICAgYnJlYWs7XG4g
ICAgICAvLyBEb24ndCBmaXJlIHRoZSBldmVudCB3aGlsZSB0aGUgdXNlciBpcyBkcmFnZ2luZy4g
VGhpcyBtYXRjaGVzIHRoZVxuICAgICAgLy8gc2VtYW50aWNzIG9mIHRoZSBuYXRpdmUgc2VsZWN0
IGV2ZW50LlxuICAgICAgY2FzZSAndG9wTW91c2VEb3duJzpcbiAgICAgICAgbW91c2VEb3duID0g
dHJ1ZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICd0b3BDb250ZXh0TWVudSc6XG4gICAg
ICBjYXNlICd0b3BNb3VzZVVwJzpcbiAgICAgICAgbW91c2VEb3duID0gZmFsc2U7XG4gICAgICAg
IHJldHVybiBjb25zdHJ1Y3RTZWxlY3RFdmVudChuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJn
ZXQpO1xuICAgICAgLy8gQ2hyb21lIGFuZCBJRSBmaXJlIG5vbi1zdGFuZGFyZCBldmVudCB3aGVu
IHNlbGVjdGlvbiBpcyBjaGFuZ2VkIChhbmRcbiAgICAgIC8vIHNvbWV0aW1lcyB3aGVuIGl0IGhh
c24ndCkuIElFJ3MgZXZlbnQgZmlyZXMgb3V0IG9mIG9yZGVyIHdpdGggcmVzcGVjdFxuICAgICAg
Ly8gdG8ga2V5IGFuZCBpbnB1dCBldmVudHMgb24gZGVsZXRpb24sIHNvIHdlIGRpc2NhcmQgaXQu
XG4gICAgICAvL1xuICAgICAgLy8gRmlyZWZveCBkb2Vzbid0IHN1cHBvcnQgc2VsZWN0aW9uY2hh
bmdlLCBzbyBjaGVjayBzZWxlY3Rpb24gc3RhdHVzXG4gICAgICAvLyBhZnRlciBlYWNoIGtleSBl
bnRyeS4gVGhlIHNlbGVjdGlvbiBjaGFuZ2VzIGFmdGVyIGtleWRvd24gYW5kIGJlZm9yZVxuICAg
ICAgLy8ga2V5dXAsIGJ1dCB3ZSBjaGVjayBvbiBrZXlkb3duIGFzIHdlbGwgaW4gdGhlIGNhc2Ug
b2YgaG9sZGluZyBkb3duIGFcbiAgICAgIC8vIGtleSwgd2hlbiBtdWx0aXBsZSBrZXlkb3duIGV2
ZW50cyBhcmUgZmlyZWQgYnV0IG9ubHkgb25lIGtleXVwIGlzLlxuICAgICAgLy8gVGhpcyBpcyBh
bHNvIG91ciBhcHByb2FjaCBmb3IgSUUgaGFuZGxpbmcsIGZvciB0aGUgcmVhc29uIGFib3ZlLlxu
ICAgICAgY2FzZSAndG9wU2VsZWN0aW9uQ2hhbmdlJzpcbiAgICAgICAgaWYgKHNraXBTZWxlY3Rp
b25DaGFuZ2VFdmVudCkge1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAvLyBm
YWxscyB0aHJvdWdoXG4gICAgICBjYXNlICd0b3BLZXlEb3duJzpcbiAgICAgIGNhc2UgJ3RvcEtl
eVVwJzpcbiAgICAgICAgcmV0dXJuIGNvbnN0cnVjdFNlbGVjdEV2ZW50KG5hdGl2ZUV2ZW50LCBu
YXRpdmVFdmVudFRhcmdldCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH0sXG5cbiAg
ZGlkUHV0TGlzdGVuZXI6IGZ1bmN0aW9uIChpbnN0LCByZWdpc3RyYXRpb25OYW1lLCBsaXN0ZW5l
cikge1xuICAgIGlmIChyZWdpc3RyYXRpb25OYW1lID09PSAnb25TZWxlY3QnKSB7XG4gICAgICBo
YXNMaXN0ZW5lciA9IHRydWU7XG4gICAgfVxuICB9XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFNl
bGVjdEV2ZW50UGx1Z2luO1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9P
VEVSXG4gKiogLi9+L3JlYWN0LWRvbS9saWIvU2VsZWN0RXZlbnRQbHVnaW4uanNcbiAqKiBtb2R1
bGUgaWQgPSAxNjVcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29weXJp
Z2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQu
XG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxl
IGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0
b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVu
dCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGly
ZWN0b3J5LlxuICpcbiAqIFxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIF9wcm9kSW52YXJp
YW50ID0gcmVxdWlyZSgnLi9yZWFjdFByb2RJbnZhcmlhbnQnKTtcblxudmFyIEV2ZW50TGlzdGVu
ZXIgPSByZXF1aXJlKCdmYmpzL2xpYi9FdmVudExpc3RlbmVyJyk7XG52YXIgRXZlbnRQcm9wYWdh
dG9ycyA9IHJlcXVpcmUoJy4vRXZlbnRQcm9wYWdhdG9ycycpO1xudmFyIFJlYWN0RE9NQ29tcG9u
ZW50VHJlZSA9IHJlcXVpcmUoJy4vUmVhY3RET01Db21wb25lbnRUcmVlJyk7XG52YXIgU3ludGhl
dGljQW5pbWF0aW9uRXZlbnQgPSByZXF1aXJlKCcuL1N5bnRoZXRpY0FuaW1hdGlvbkV2ZW50Jyk7
XG52YXIgU3ludGhldGljQ2xpcGJvYXJkRXZlbnQgPSByZXF1aXJlKCcuL1N5bnRoZXRpY0NsaXBi
b2FyZEV2ZW50Jyk7XG52YXIgU3ludGhldGljRXZlbnQgPSByZXF1aXJlKCcuL1N5bnRoZXRpY0V2
ZW50Jyk7XG52YXIgU3ludGhldGljRm9jdXNFdmVudCA9IHJlcXVpcmUoJy4vU3ludGhldGljRm9j
dXNFdmVudCcpO1xudmFyIFN5bnRoZXRpY0tleWJvYXJkRXZlbnQgPSByZXF1aXJlKCcuL1N5bnRo
ZXRpY0tleWJvYXJkRXZlbnQnKTtcbnZhciBTeW50aGV0aWNNb3VzZUV2ZW50ID0gcmVxdWlyZSgn
Li9TeW50aGV0aWNNb3VzZUV2ZW50Jyk7XG52YXIgU3ludGhldGljRHJhZ0V2ZW50ID0gcmVxdWly
ZSgnLi9TeW50aGV0aWNEcmFnRXZlbnQnKTtcbnZhciBTeW50aGV0aWNUb3VjaEV2ZW50ID0gcmVx
dWlyZSgnLi9TeW50aGV0aWNUb3VjaEV2ZW50Jyk7XG52YXIgU3ludGhldGljVHJhbnNpdGlvbkV2
ZW50ID0gcmVxdWlyZSgnLi9TeW50aGV0aWNUcmFuc2l0aW9uRXZlbnQnKTtcbnZhciBTeW50aGV0
aWNVSUV2ZW50ID0gcmVxdWlyZSgnLi9TeW50aGV0aWNVSUV2ZW50Jyk7XG52YXIgU3ludGhldGlj
V2hlZWxFdmVudCA9IHJlcXVpcmUoJy4vU3ludGhldGljV2hlZWxFdmVudCcpO1xuXG52YXIgZW1w
dHlGdW5jdGlvbiA9IHJlcXVpcmUoJ2ZianMvbGliL2VtcHR5RnVuY3Rpb24nKTtcbnZhciBnZXRF
dmVudENoYXJDb2RlID0gcmVxdWlyZSgnLi9nZXRFdmVudENoYXJDb2RlJyk7XG52YXIgaW52YXJp
YW50ID0gcmVxdWlyZSgnZmJqcy9saWIvaW52YXJpYW50Jyk7XG5cbi8qKlxuICogVHVybnNcbiAq
IFsnYWJvcnQnLCAuLi5dXG4gKiBpbnRvXG4gKiBldmVudFR5cGVzID0ge1xuICogICAnYWJvcnQn
OiB7XG4gKiAgICAgcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6IHtcbiAqICAgICAgIGJ1YmJsZWQ6
ICdvbkFib3J0JyxcbiAqICAgICAgIGNhcHR1cmVkOiAnb25BYm9ydENhcHR1cmUnLFxuICogICAg
IH0sXG4gKiAgICAgZGVwZW5kZW5jaWVzOiBbJ3RvcEFib3J0J10sXG4gKiAgIH0sXG4gKiAgIC4u
LlxuICogfTtcbiAqIHRvcExldmVsRXZlbnRzVG9EaXNwYXRjaENvbmZpZyA9IHtcbiAqICAgJ3Rv
cEFib3J0JzogeyBzYW1lQ29uZmlnIH1cbiAqIH07XG4gKi9cbnZhciBldmVudFR5cGVzID0ge307
XG52YXIgdG9wTGV2ZWxFdmVudHNUb0Rpc3BhdGNoQ29uZmlnID0ge307XG5bJ2Fib3J0JywgJ2Fu
aW1hdGlvbkVuZCcsICdhbmltYXRpb25JdGVyYXRpb24nLCAnYW5pbWF0aW9uU3RhcnQnLCAnYmx1
cicsICdjYW5QbGF5JywgJ2NhblBsYXlUaHJvdWdoJywgJ2NsaWNrJywgJ2NvbnRleHRNZW51Jywg
J2NvcHknLCAnY3V0JywgJ2RvdWJsZUNsaWNrJywgJ2RyYWcnLCAnZHJhZ0VuZCcsICdkcmFnRW50
ZXInLCAnZHJhZ0V4aXQnLCAnZHJhZ0xlYXZlJywgJ2RyYWdPdmVyJywgJ2RyYWdTdGFydCcsICdk
cm9wJywgJ2R1cmF0aW9uQ2hhbmdlJywgJ2VtcHRpZWQnLCAnZW5jcnlwdGVkJywgJ2VuZGVkJywg
J2Vycm9yJywgJ2ZvY3VzJywgJ2lucHV0JywgJ2ludmFsaWQnLCAna2V5RG93bicsICdrZXlQcmVz
cycsICdrZXlVcCcsICdsb2FkJywgJ2xvYWRlZERhdGEnLCAnbG9hZGVkTWV0YWRhdGEnLCAnbG9h
ZFN0YXJ0JywgJ21vdXNlRG93bicsICdtb3VzZU1vdmUnLCAnbW91c2VPdXQnLCAnbW91c2VPdmVy
JywgJ21vdXNlVXAnLCAncGFzdGUnLCAncGF1c2UnLCAncGxheScsICdwbGF5aW5nJywgJ3Byb2dy
ZXNzJywgJ3JhdGVDaGFuZ2UnLCAncmVzZXQnLCAnc2Nyb2xsJywgJ3NlZWtlZCcsICdzZWVraW5n
JywgJ3N0YWxsZWQnLCAnc3VibWl0JywgJ3N1c3BlbmQnLCAndGltZVVwZGF0ZScsICd0b3VjaENh
bmNlbCcsICd0b3VjaEVuZCcsICd0b3VjaE1vdmUnLCAndG91Y2hTdGFydCcsICd0cmFuc2l0aW9u
RW5kJywgJ3ZvbHVtZUNoYW5nZScsICd3YWl0aW5nJywgJ3doZWVsJ10uZm9yRWFjaChmdW5jdGlv
biAoZXZlbnQpIHtcbiAgdmFyIGNhcGl0YWxpemVkRXZlbnQgPSBldmVudFswXS50b1VwcGVyQ2Fz
ZSgpICsgZXZlbnQuc2xpY2UoMSk7XG4gIHZhciBvbkV2ZW50ID0gJ29uJyArIGNhcGl0YWxpemVk
RXZlbnQ7XG4gIHZhciB0b3BFdmVudCA9ICd0b3AnICsgY2FwaXRhbGl6ZWRFdmVudDtcblxuICB2
YXIgdHlwZSA9IHtcbiAgICBwaGFzZWRSZWdpc3RyYXRpb25OYW1lczoge1xuICAgICAgYnViYmxl
ZDogb25FdmVudCxcbiAgICAgIGNhcHR1cmVkOiBvbkV2ZW50ICsgJ0NhcHR1cmUnXG4gICAgfSxc
biAgICBkZXBlbmRlbmNpZXM6IFt0b3BFdmVudF1cbiAgfTtcbiAgZXZlbnRUeXBlc1tldmVudF0g
PSB0eXBlO1xuICB0b3BMZXZlbEV2ZW50c1RvRGlzcGF0Y2hDb25maWdbdG9wRXZlbnRdID0gdHlw
ZTtcbn0pO1xuXG52YXIgb25DbGlja0xpc3RlbmVycyA9IHt9O1xuXG5mdW5jdGlvbiBnZXREaWN0
aW9uYXJ5S2V5KGluc3QpIHtcbiAgLy8gUHJldmVudHMgVjggcGVyZm9ybWFuY2UgaXNzdWU6XG4g
IC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9wdWxsLzcyMzJcbiAgcmV0dXJu
ICcuJyArIGluc3QuX3Jvb3ROb2RlSUQ7XG59XG5cbmZ1bmN0aW9uIGlzSW50ZXJhY3RpdmUodGFn
KSB7XG4gIHJldHVybiB0YWcgPT09ICdidXR0b24nIHx8IHRhZyA9PT0gJ2lucHV0JyB8fCB0YWcg
PT09ICdzZWxlY3QnIHx8IHRhZyA9PT0gJ3RleHRhcmVhJztcbn1cblxudmFyIFNpbXBsZUV2ZW50
UGx1Z2luID0ge1xuICBldmVudFR5cGVzOiBldmVudFR5cGVzLFxuXG4gIGV4dHJhY3RFdmVudHM6
IGZ1bmN0aW9uICh0b3BMZXZlbFR5cGUsIHRhcmdldEluc3QsIG5hdGl2ZUV2ZW50LCBuYXRpdmVF
dmVudFRhcmdldCkge1xuICAgIHZhciBkaXNwYXRjaENvbmZpZyA9IHRvcExldmVsRXZlbnRzVG9E
aXNwYXRjaENvbmZpZ1t0b3BMZXZlbFR5cGVdO1xuICAgIGlmICghZGlzcGF0Y2hDb25maWcpIHtc
biAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICB2YXIgRXZlbnRDb25zdHJ1Y3RvcjtcbiAg
ICBzd2l0Y2ggKHRvcExldmVsVHlwZSkge1xuICAgICAgY2FzZSAndG9wQWJvcnQnOlxuICAgICAg
Y2FzZSAndG9wQ2FuUGxheSc6XG4gICAgICBjYXNlICd0b3BDYW5QbGF5VGhyb3VnaCc6XG4gICAg
ICBjYXNlICd0b3BEdXJhdGlvbkNoYW5nZSc6XG4gICAgICBjYXNlICd0b3BFbXB0aWVkJzpcbiAg
ICAgIGNhc2UgJ3RvcEVuY3J5cHRlZCc6XG4gICAgICBjYXNlICd0b3BFbmRlZCc6XG4gICAgICBj
YXNlICd0b3BFcnJvcic6XG4gICAgICBjYXNlICd0b3BJbnB1dCc6XG4gICAgICBjYXNlICd0b3BJ
bnZhbGlkJzpcbiAgICAgIGNhc2UgJ3RvcExvYWQnOlxuICAgICAgY2FzZSAndG9wTG9hZGVkRGF0
YSc6XG4gICAgICBjYXNlICd0b3BMb2FkZWRNZXRhZGF0YSc6XG4gICAgICBjYXNlICd0b3BMb2Fk
U3RhcnQnOlxuICAgICAgY2FzZSAndG9wUGF1c2UnOlxuICAgICAgY2FzZSAndG9wUGxheSc6XG4g
ICAgICBjYXNlICd0b3BQbGF5aW5nJzpcbiAgICAgIGNhc2UgJ3RvcFByb2dyZXNzJzpcbiAgICAg
IGNhc2UgJ3RvcFJhdGVDaGFuZ2UnOlxuICAgICAgY2FzZSAndG9wUmVzZXQnOlxuICAgICAgY2Fz
ZSAndG9wU2Vla2VkJzpcbiAgICAgIGNhc2UgJ3RvcFNlZWtpbmcnOlxuICAgICAgY2FzZSAndG9w
U3RhbGxlZCc6XG4gICAgICBjYXNlICd0b3BTdWJtaXQnOlxuICAgICAgY2FzZSAndG9wU3VzcGVu
ZCc6XG4gICAgICBjYXNlICd0b3BUaW1lVXBkYXRlJzpcbiAgICAgIGNhc2UgJ3RvcFZvbHVtZUNo
YW5nZSc6XG4gICAgICBjYXNlICd0b3BXYWl0aW5nJzpcbiAgICAgICAgLy8gSFRNTCBFdmVudHNc
biAgICAgICAgLy8gQHNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNS9pbmRleC5odG1sI2V2
ZW50cy0wXG4gICAgICAgIEV2ZW50Q29uc3RydWN0b3IgPSBTeW50aGV0aWNFdmVudDtcbiAgICAg
ICAgYnJlYWs7XG4gICAgICBjYXNlICd0b3BLZXlQcmVzcyc6XG4gICAgICAgIC8vIEZpcmVmb3gg
Y3JlYXRlcyBhIGtleXByZXNzIGV2ZW50IGZvciBmdW5jdGlvbiBrZXlzIHRvby4gVGhpcyByZW1v
dmVzXG4gICAgICAgIC8vIHRoZSB1bndhbnRlZCBrZXlwcmVzcyBldmVudHMuIEVudGVyIGlzIGhv
d2V2ZXIgYm90aCBwcmludGFibGUgYW5kXG4gICAgICAgIC8vIG5vbi1wcmludGFibGUuIE9uZSB3
b3VsZCBleHBlY3QgVGFiIHRvIGJlIGFzIHdlbGwgKGJ1dCBpdCBpc24ndCkuXG4gICAgICAgIGlm
IChnZXRFdmVudENoYXJDb2RlKG5hdGl2ZUV2ZW50KSA9PT0gMCkge1xuICAgICAgICAgIHJldHVy
biBudWxsO1xuICAgICAgICB9XG4gICAgICAvKiBmYWxscyB0aHJvdWdoICovXG4gICAgICBjYXNl
ICd0b3BLZXlEb3duJzpcbiAgICAgIGNhc2UgJ3RvcEtleVVwJzpcbiAgICAgICAgRXZlbnRDb25z
dHJ1Y3RvciA9IFN5bnRoZXRpY0tleWJvYXJkRXZlbnQ7XG4gICAgICAgIGJyZWFrO1xuICAgICAg
Y2FzZSAndG9wQmx1cic6XG4gICAgICBjYXNlICd0b3BGb2N1cyc6XG4gICAgICAgIEV2ZW50Q29u
c3RydWN0b3IgPSBTeW50aGV0aWNGb2N1c0V2ZW50O1xuICAgICAgICBicmVhaztcbiAgICAgIGNh
c2UgJ3RvcENsaWNrJzpcbiAgICAgICAgLy8gRmlyZWZveCBjcmVhdGVzIGEgY2xpY2sgZXZlbnQg
b24gcmlnaHQgbW91c2UgY2xpY2tzLiBUaGlzIHJlbW92ZXMgdGhlXG4gICAgICAgIC8vIHVud2Fu
dGVkIGNsaWNrIGV2ZW50cy5cbiAgICAgICAgaWYgKG5hdGl2ZUV2ZW50LmJ1dHRvbiA9PT0gMikg
e1xuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAvKiBmYWxscyB0aHJv
dWdoICovXG4gICAgICBjYXNlICd0b3BEb3VibGVDbGljayc6XG4gICAgICBjYXNlICd0b3BNb3Vz
ZURvd24nOlxuICAgICAgY2FzZSAndG9wTW91c2VNb3ZlJzpcbiAgICAgIGNhc2UgJ3RvcE1vdXNl
VXAnOlxuICAgICAgLy8gVE9ETzogRGlzYWJsZWQgZWxlbWVudHMgc2hvdWxkIG5vdCByZXNwb25k
IHRvIG1vdXNlIGV2ZW50c1xuICAgICAgLyogZmFsbHMgdGhyb3VnaCAqL1xuICAgICAgY2FzZSAn
dG9wTW91c2VPdXQnOlxuICAgICAgY2FzZSAndG9wTW91c2VPdmVyJzpcbiAgICAgIGNhc2UgJ3Rv
cENvbnRleHRNZW51JzpcbiAgICAgICAgRXZlbnRDb25zdHJ1Y3RvciA9IFN5bnRoZXRpY01vdXNl
RXZlbnQ7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAndG9wRHJhZyc6XG4gICAgICBjYXNl
ICd0b3BEcmFnRW5kJzpcbiAgICAgIGNhc2UgJ3RvcERyYWdFbnRlcic6XG4gICAgICBjYXNlICd0
b3BEcmFnRXhpdCc6XG4gICAgICBjYXNlICd0b3BEcmFnTGVhdmUnOlxuICAgICAgY2FzZSAndG9w
RHJhZ092ZXInOlxuICAgICAgY2FzZSAndG9wRHJhZ1N0YXJ0JzpcbiAgICAgIGNhc2UgJ3RvcERy
b3AnOlxuICAgICAgICBFdmVudENvbnN0cnVjdG9yID0gU3ludGhldGljRHJhZ0V2ZW50O1xuICAg
ICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3RvcFRvdWNoQ2FuY2VsJzpcbiAgICAgIGNhc2UgJ3Rv
cFRvdWNoRW5kJzpcbiAgICAgIGNhc2UgJ3RvcFRvdWNoTW92ZSc6XG4gICAgICBjYXNlICd0b3BU
b3VjaFN0YXJ0JzpcbiAgICAgICAgRXZlbnRDb25zdHJ1Y3RvciA9IFN5bnRoZXRpY1RvdWNoRXZl
bnQ7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAndG9wQW5pbWF0aW9uRW5kJzpcbiAgICAg
IGNhc2UgJ3RvcEFuaW1hdGlvbkl0ZXJhdGlvbic6XG4gICAgICBjYXNlICd0b3BBbmltYXRpb25T
dGFydCc6XG4gICAgICAgIEV2ZW50Q29uc3RydWN0b3IgPSBTeW50aGV0aWNBbmltYXRpb25FdmVu
dDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICd0b3BUcmFuc2l0aW9uRW5kJzpcbiAgICAg
ICAgRXZlbnRDb25zdHJ1Y3RvciA9IFN5bnRoZXRpY1RyYW5zaXRpb25FdmVudDtcbiAgICAgICAg
YnJlYWs7XG4gICAgICBjYXNlICd0b3BTY3JvbGwnOlxuICAgICAgICBFdmVudENvbnN0cnVjdG9y
ID0gU3ludGhldGljVUlFdmVudDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICd0b3BXaGVl
bCc6XG4gICAgICAgIEV2ZW50Q29uc3RydWN0b3IgPSBTeW50aGV0aWNXaGVlbEV2ZW50O1xuICAg
ICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3RvcENvcHknOlxuICAgICAgY2FzZSAndG9wQ3V0Jzpc
biAgICAgIGNhc2UgJ3RvcFBhc3RlJzpcbiAgICAgICAgRXZlbnRDb25zdHJ1Y3RvciA9IFN5bnRo
ZXRpY0NsaXBib2FyZEV2ZW50O1xuICAgICAgICBicmVhaztcbiAgICB9XG4gICAgIUV2ZW50Q29u
c3RydWN0b3IgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJp
YW50KGZhbHNlLCAnU2ltcGxlRXZlbnRQbHVnaW46IFVuaGFuZGxlZCBldmVudCB0eXBlLCBgJXNg
LicsIHRvcExldmVsVHlwZSkgOiBfcHJvZEludmFyaWFudCgnODYnLCB0b3BMZXZlbFR5cGUpIDog
dm9pZCAwO1xuICAgIHZhciBldmVudCA9IEV2ZW50Q29uc3RydWN0b3IuZ2V0UG9vbGVkKGRpc3Bh
dGNoQ29uZmlnLCB0YXJnZXRJbnN0LCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpO1xu
ICAgIEV2ZW50UHJvcGFnYXRvcnMuYWNjdW11bGF0ZVR3b1BoYXNlRGlzcGF0Y2hlcyhldmVudCk7
XG4gICAgcmV0dXJuIGV2ZW50O1xuICB9LFxuXG4gIGRpZFB1dExpc3RlbmVyOiBmdW5jdGlvbiAo
aW5zdCwgcmVnaXN0cmF0aW9uTmFtZSwgbGlzdGVuZXIpIHtcbiAgICAvLyBNb2JpbGUgU2FmYXJp
IGRvZXMgbm90IGZpcmUgcHJvcGVybHkgYnViYmxlIGNsaWNrIGV2ZW50cyBvblxuICAgIC8vIG5v
bi1pbnRlcmFjdGl2ZSBlbGVtZW50cywgd2hpY2ggbWVhbnMgZGVsZWdhdGVkIGNsaWNrIGxpc3Rl
bmVycyBkbyBub3RcbiAgICAvLyBmaXJlLiBUaGUgd29ya2Fyb3VuZCBmb3IgdGhpcyBidWcgaW52
b2x2ZXMgYXR0YWNoaW5nIGFuIGVtcHR5IGNsaWNrXG4gICAgLy8gbGlzdGVuZXIgb24gdGhlIHRh
cmdldCBub2RlLlxuICAgIC8vIGh0dHA6Ly93d3cucXVpcmtzbW9kZS5vcmcvYmxvZy9hcmNoaXZl
cy8yMDEwLzA5L2NsaWNrX2V2ZW50X2RlbC5odG1sXG4gICAgaWYgKHJlZ2lzdHJhdGlvbk5hbWUg
PT09ICdvbkNsaWNrJyAmJiAhaXNJbnRlcmFjdGl2ZShpbnN0Ll90YWcpKSB7XG4gICAgICB2YXIg
a2V5ID0gZ2V0RGljdGlvbmFyeUtleShpbnN0KTtcbiAgICAgIHZhciBub2RlID0gUmVhY3RET01D
b21wb25lbnRUcmVlLmdldE5vZGVGcm9tSW5zdGFuY2UoaW5zdCk7XG4gICAgICBpZiAoIW9uQ2xp
Y2tMaXN0ZW5lcnNba2V5XSkge1xuICAgICAgICBvbkNsaWNrTGlzdGVuZXJzW2tleV0gPSBFdmVu
dExpc3RlbmVyLmxpc3Rlbihub2RlLCAnY2xpY2snLCBlbXB0eUZ1bmN0aW9uKTtcbiAgICAgIH1c
biAgICB9XG4gIH0sXG5cbiAgd2lsbERlbGV0ZUxpc3RlbmVyOiBmdW5jdGlvbiAoaW5zdCwgcmVn
aXN0cmF0aW9uTmFtZSkge1xuICAgIGlmIChyZWdpc3RyYXRpb25OYW1lID09PSAnb25DbGljaycg
JiYgIWlzSW50ZXJhY3RpdmUoaW5zdC5fdGFnKSkge1xuICAgICAgdmFyIGtleSA9IGdldERpY3Rp
b25hcnlLZXkoaW5zdCk7XG4gICAgICBvbkNsaWNrTGlzdGVuZXJzW2tleV0ucmVtb3ZlKCk7XG4g
ICAgICBkZWxldGUgb25DbGlja0xpc3RlbmVyc1trZXldO1xuICAgIH1cbiAgfVxufTtcblxubW9k
dWxlLmV4cG9ydHMgPSBTaW1wbGVFdmVudFBsdWdpbjtcblxuXG4vKioqKioqKioqKioqKioqKipc
biAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFjdC1kb20vbGliL1NpbXBsZUV2ZW50UGx1
Z2luLmpzXG4gKiogbW9kdWxlIGlkID0gMTY2XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8i
LCIvKipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwg
cmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5k
ZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGlu
IHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdy
YW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxl
IGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIg
U3ludGhldGljRXZlbnQgPSByZXF1aXJlKCcuL1N5bnRoZXRpY0V2ZW50Jyk7XG5cbi8qKlxuICog
QGludGVyZmFjZSBFdmVudFxuICogQHNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi9jc3MzLWFuaW1h
dGlvbnMvI0FuaW1hdGlvbkV2ZW50LWludGVyZmFjZVxuICogQHNlZSBodHRwczovL2RldmVsb3Bl
ci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvQW5pbWF0aW9uRXZlbnRcbiAqL1xudmFy
IEFuaW1hdGlvbkV2ZW50SW50ZXJmYWNlID0ge1xuICBhbmltYXRpb25OYW1lOiBudWxsLFxuICBl
bGFwc2VkVGltZTogbnVsbCxcbiAgcHNldWRvRWxlbWVudDogbnVsbFxufTtcblxuLyoqXG4gKiBA
cGFyYW0ge29iamVjdH0gZGlzcGF0Y2hDb25maWcgQ29uZmlndXJhdGlvbiB1c2VkIHRvIGRpc3Bh
dGNoIHRoaXMgZXZlbnQuXG4gKiBAcGFyYW0ge3N0cmluZ30gZGlzcGF0Y2hNYXJrZXIgTWFya2Vy
IGlkZW50aWZ5aW5nIHRoZSBldmVudCB0YXJnZXQuXG4gKiBAcGFyYW0ge29iamVjdH0gbmF0aXZl
RXZlbnQgTmF0aXZlIGJyb3dzZXIgZXZlbnQuXG4gKiBAZXh0ZW5kcyB7U3ludGhldGljRXZlbnR9
XG4gKi9cbmZ1bmN0aW9uIFN5bnRoZXRpY0FuaW1hdGlvbkV2ZW50KGRpc3BhdGNoQ29uZmlnLCBk
aXNwYXRjaE1hcmtlciwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KSB7XG4gIHJldHVy
biBTeW50aGV0aWNFdmVudC5jYWxsKHRoaXMsIGRpc3BhdGNoQ29uZmlnLCBkaXNwYXRjaE1hcmtl
ciwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KTtcbn1cblxuU3ludGhldGljRXZlbnQu
YXVnbWVudENsYXNzKFN5bnRoZXRpY0FuaW1hdGlvbkV2ZW50LCBBbmltYXRpb25FdmVudEludGVy
ZmFjZSk7XG5cbm1vZHVsZS5leHBvcnRzID0gU3ludGhldGljQW5pbWF0aW9uRXZlbnQ7XG5cblxu
LyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3QtZG9t
L2xpYi9TeW50aGV0aWNBbmltYXRpb25FdmVudC5qc1xuICoqIG1vZHVsZSBpZCA9IDE2N1xuICoq
IG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50
LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNv
dXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBp
biB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3Vy
Y2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUg
Zm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICov
XG5cbid1c2Ugc3RyaWN0JztcblxudmFyIFN5bnRoZXRpY0V2ZW50ID0gcmVxdWlyZSgnLi9TeW50
aGV0aWNFdmVudCcpO1xuXG4vKipcbiAqIEBpbnRlcmZhY2UgRXZlbnRcbiAqIEBzZWUgaHR0cDov
L3d3dy53My5vcmcvVFIvY2xpcGJvYXJkLWFwaXMvXG4gKi9cbnZhciBDbGlwYm9hcmRFdmVudElu
dGVyZmFjZSA9IHtcbiAgY2xpcGJvYXJkRGF0YTogZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgcmV0
dXJuICdjbGlwYm9hcmREYXRhJyBpbiBldmVudCA/IGV2ZW50LmNsaXBib2FyZERhdGEgOiB3aW5k
b3cuY2xpcGJvYXJkRGF0YTtcbiAgfVxufTtcblxuLyoqXG4gKiBAcGFyYW0ge29iamVjdH0gZGlz
cGF0Y2hDb25maWcgQ29uZmlndXJhdGlvbiB1c2VkIHRvIGRpc3BhdGNoIHRoaXMgZXZlbnQuXG4g
KiBAcGFyYW0ge3N0cmluZ30gZGlzcGF0Y2hNYXJrZXIgTWFya2VyIGlkZW50aWZ5aW5nIHRoZSBl
dmVudCB0YXJnZXQuXG4gKiBAcGFyYW0ge29iamVjdH0gbmF0aXZlRXZlbnQgTmF0aXZlIGJyb3dz
ZXIgZXZlbnQuXG4gKiBAZXh0ZW5kcyB7U3ludGhldGljVUlFdmVudH1cbiAqL1xuZnVuY3Rpb24g
U3ludGhldGljQ2xpcGJvYXJkRXZlbnQoZGlzcGF0Y2hDb25maWcsIGRpc3BhdGNoTWFya2VyLCBu
YXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpIHtcbiAgcmV0dXJuIFN5bnRoZXRpY0V2ZW50
LmNhbGwodGhpcywgZGlzcGF0Y2hDb25maWcsIGRpc3BhdGNoTWFya2VyLCBuYXRpdmVFdmVudCwg
bmF0aXZlRXZlbnRUYXJnZXQpO1xufVxuXG5TeW50aGV0aWNFdmVudC5hdWdtZW50Q2xhc3MoU3lu
dGhldGljQ2xpcGJvYXJkRXZlbnQsIENsaXBib2FyZEV2ZW50SW50ZXJmYWNlKTtcblxubW9kdWxl
LmV4cG9ydHMgPSBTeW50aGV0aWNDbGlwYm9hcmRFdmVudDtcblxuXG4vKioqKioqKioqKioqKioq
KipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFjdC1kb20vbGliL1N5bnRoZXRpY0Ns
aXBib2FyZEV2ZW50LmpzXG4gKiogbW9kdWxlIGlkID0gMTY4XG4gKiogbW9kdWxlIGNodW5rcyA9
IDBcbiAqKi8iLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMu
XG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGlj
ZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5T
RSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRp
dGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFU
RU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJpY3Qn
O1xuXG52YXIgU3ludGhldGljRXZlbnQgPSByZXF1aXJlKCcuL1N5bnRoZXRpY0V2ZW50Jyk7XG5c
bi8qKlxuICogQGludGVyZmFjZSBFdmVudFxuICogQHNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi9E
T00tTGV2ZWwtMy1FdmVudHMvI2V2ZW50cy1jb21wb3NpdGlvbmV2ZW50c1xuICovXG52YXIgQ29t
cG9zaXRpb25FdmVudEludGVyZmFjZSA9IHtcbiAgZGF0YTogbnVsbFxufTtcblxuLyoqXG4gKiBA
cGFyYW0ge29iamVjdH0gZGlzcGF0Y2hDb25maWcgQ29uZmlndXJhdGlvbiB1c2VkIHRvIGRpc3Bh
dGNoIHRoaXMgZXZlbnQuXG4gKiBAcGFyYW0ge3N0cmluZ30gZGlzcGF0Y2hNYXJrZXIgTWFya2Vy
IGlkZW50aWZ5aW5nIHRoZSBldmVudCB0YXJnZXQuXG4gKiBAcGFyYW0ge29iamVjdH0gbmF0aXZl
RXZlbnQgTmF0aXZlIGJyb3dzZXIgZXZlbnQuXG4gKiBAZXh0ZW5kcyB7U3ludGhldGljVUlFdmVu
dH1cbiAqL1xuZnVuY3Rpb24gU3ludGhldGljQ29tcG9zaXRpb25FdmVudChkaXNwYXRjaENvbmZp
ZywgZGlzcGF0Y2hNYXJrZXIsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCkge1xuICBy
ZXR1cm4gU3ludGhldGljRXZlbnQuY2FsbCh0aGlzLCBkaXNwYXRjaENvbmZpZywgZGlzcGF0Y2hN
YXJrZXIsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCk7XG59XG5cblN5bnRoZXRpY0V2
ZW50LmF1Z21lbnRDbGFzcyhTeW50aGV0aWNDb21wb3NpdGlvbkV2ZW50LCBDb21wb3NpdGlvbkV2
ZW50SW50ZXJmYWNlKTtcblxubW9kdWxlLmV4cG9ydHMgPSBTeW50aGV0aWNDb21wb3NpdGlvbkV2
ZW50O1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+
L3JlYWN0LWRvbS9saWIvU3ludGhldGljQ29tcG9zaXRpb25FdmVudC5qc1xuICoqIG1vZHVsZSBp
ZCA9IDE2OVxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQg
MjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAq
XG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGlj
ZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkg
b2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJp
Z2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3Rv
cnkuXG4gKlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIFN5bnRoZXRpY01vdXNlRXZlbnQg
PSByZXF1aXJlKCcuL1N5bnRoZXRpY01vdXNlRXZlbnQnKTtcblxuLyoqXG4gKiBAaW50ZXJmYWNl
IERyYWdFdmVudFxuICogQHNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi9ET00tTGV2ZWwtMy1FdmVu
dHMvXG4gKi9cbnZhciBEcmFnRXZlbnRJbnRlcmZhY2UgPSB7XG4gIGRhdGFUcmFuc2ZlcjogbnVs
bFxufTtcblxuLyoqXG4gKiBAcGFyYW0ge29iamVjdH0gZGlzcGF0Y2hDb25maWcgQ29uZmlndXJh
dGlvbiB1c2VkIHRvIGRpc3BhdGNoIHRoaXMgZXZlbnQuXG4gKiBAcGFyYW0ge3N0cmluZ30gZGlz
cGF0Y2hNYXJrZXIgTWFya2VyIGlkZW50aWZ5aW5nIHRoZSBldmVudCB0YXJnZXQuXG4gKiBAcGFy
YW0ge29iamVjdH0gbmF0aXZlRXZlbnQgTmF0aXZlIGJyb3dzZXIgZXZlbnQuXG4gKiBAZXh0ZW5k
cyB7U3ludGhldGljVUlFdmVudH1cbiAqL1xuZnVuY3Rpb24gU3ludGhldGljRHJhZ0V2ZW50KGRp
c3BhdGNoQ29uZmlnLCBkaXNwYXRjaE1hcmtlciwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFy
Z2V0KSB7XG4gIHJldHVybiBTeW50aGV0aWNNb3VzZUV2ZW50LmNhbGwodGhpcywgZGlzcGF0Y2hD
b25maWcsIGRpc3BhdGNoTWFya2VyLCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpO1xu
fVxuXG5TeW50aGV0aWNNb3VzZUV2ZW50LmF1Z21lbnRDbGFzcyhTeW50aGV0aWNEcmFnRXZlbnQs
IERyYWdFdmVudEludGVyZmFjZSk7XG5cbm1vZHVsZS5leHBvcnRzID0gU3ludGhldGljRHJhZ0V2
ZW50O1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+
L3JlYWN0LWRvbS9saWIvU3ludGhldGljRHJhZ0V2ZW50LmpzXG4gKiogbW9kdWxlIGlkID0gMTcw
XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLXBy
ZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRo
aXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZv
dW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlz
IHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNh
biBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAq
XG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgU3ludGhldGljVUlFdmVudCA9IHJlcXVpcmUo
Jy4vU3ludGhldGljVUlFdmVudCcpO1xuXG4vKipcbiAqIEBpbnRlcmZhY2UgRm9jdXNFdmVudFxu
ICogQHNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi9ET00tTGV2ZWwtMy1FdmVudHMvXG4gKi9cbnZh
ciBGb2N1c0V2ZW50SW50ZXJmYWNlID0ge1xuICByZWxhdGVkVGFyZ2V0OiBudWxsXG59O1xuXG4v
KipcbiAqIEBwYXJhbSB7b2JqZWN0fSBkaXNwYXRjaENvbmZpZyBDb25maWd1cmF0aW9uIHVzZWQg
dG8gZGlzcGF0Y2ggdGhpcyBldmVudC5cbiAqIEBwYXJhbSB7c3RyaW5nfSBkaXNwYXRjaE1hcmtl
ciBNYXJrZXIgaWRlbnRpZnlpbmcgdGhlIGV2ZW50IHRhcmdldC5cbiAqIEBwYXJhbSB7b2JqZWN0
fSBuYXRpdmVFdmVudCBOYXRpdmUgYnJvd3NlciBldmVudC5cbiAqIEBleHRlbmRzIHtTeW50aGV0
aWNVSUV2ZW50fVxuICovXG5mdW5jdGlvbiBTeW50aGV0aWNGb2N1c0V2ZW50KGRpc3BhdGNoQ29u
ZmlnLCBkaXNwYXRjaE1hcmtlciwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KSB7XG4g
IHJldHVybiBTeW50aGV0aWNVSUV2ZW50LmNhbGwodGhpcywgZGlzcGF0Y2hDb25maWcsIGRpc3Bh
dGNoTWFya2VyLCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpO1xufVxuXG5TeW50aGV0
aWNVSUV2ZW50LmF1Z21lbnRDbGFzcyhTeW50aGV0aWNGb2N1c0V2ZW50LCBGb2N1c0V2ZW50SW50
ZXJmYWNlKTtcblxubW9kdWxlLmV4cG9ydHMgPSBTeW50aGV0aWNGb2N1c0V2ZW50O1xuXG5cbi8q
KioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0LWRvbS9s
aWIvU3ludGhldGljRm9jdXNFdmVudC5qc1xuICoqIG1vZHVsZSBpZCA9IDE3MVxuICoqIG1vZHVs
ZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNl
Ym9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBj
b2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVc
biAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJl
ZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQg
aW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICovXG5cbid1
c2Ugc3RyaWN0JztcblxudmFyIFN5bnRoZXRpY0V2ZW50ID0gcmVxdWlyZSgnLi9TeW50aGV0aWNF
dmVudCcpO1xuXG4vKipcbiAqIEBpbnRlcmZhY2UgRXZlbnRcbiAqIEBzZWUgaHR0cDovL3d3dy53
My5vcmcvVFIvMjAxMy9XRC1ET00tTGV2ZWwtMy1FdmVudHMtMjAxMzExMDVcbiAqICAgICAgLyNl
dmVudHMtaW5wdXRldmVudHNcbiAqL1xudmFyIElucHV0RXZlbnRJbnRlcmZhY2UgPSB7XG4gIGRh
dGE6IG51bGxcbn07XG5cbi8qKlxuICogQHBhcmFtIHtvYmplY3R9IGRpc3BhdGNoQ29uZmlnIENv
bmZpZ3VyYXRpb24gdXNlZCB0byBkaXNwYXRjaCB0aGlzIGV2ZW50LlxuICogQHBhcmFtIHtzdHJp
bmd9IGRpc3BhdGNoTWFya2VyIE1hcmtlciBpZGVudGlmeWluZyB0aGUgZXZlbnQgdGFyZ2V0Llxu
ICogQHBhcmFtIHtvYmplY3R9IG5hdGl2ZUV2ZW50IE5hdGl2ZSBicm93c2VyIGV2ZW50LlxuICog
QGV4dGVuZHMge1N5bnRoZXRpY1VJRXZlbnR9XG4gKi9cbmZ1bmN0aW9uIFN5bnRoZXRpY0lucHV0
RXZlbnQoZGlzcGF0Y2hDb25maWcsIGRpc3BhdGNoTWFya2VyLCBuYXRpdmVFdmVudCwgbmF0aXZl
RXZlbnRUYXJnZXQpIHtcbiAgcmV0dXJuIFN5bnRoZXRpY0V2ZW50LmNhbGwodGhpcywgZGlzcGF0
Y2hDb25maWcsIGRpc3BhdGNoTWFya2VyLCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQp
O1xufVxuXG5TeW50aGV0aWNFdmVudC5hdWdtZW50Q2xhc3MoU3ludGhldGljSW5wdXRFdmVudCwg
SW5wdXRFdmVudEludGVyZmFjZSk7XG5cbm1vZHVsZS5leHBvcnRzID0gU3ludGhldGljSW5wdXRF
dmVudDtcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4v
fi9yZWFjdC1kb20vbGliL1N5bnRoZXRpY0lucHV0RXZlbnQuanNcbiAqKiBtb2R1bGUgaWQgPSAx
NzJcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMt
cHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICog
VGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2Ug
Zm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRo
aXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMg
Y2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5Llxu
ICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBTeW50aGV0aWNVSUV2ZW50ID0gcmVxdWly
ZSgnLi9TeW50aGV0aWNVSUV2ZW50Jyk7XG5cbnZhciBnZXRFdmVudENoYXJDb2RlID0gcmVxdWly
ZSgnLi9nZXRFdmVudENoYXJDb2RlJyk7XG52YXIgZ2V0RXZlbnRLZXkgPSByZXF1aXJlKCcuL2dl
dEV2ZW50S2V5Jyk7XG52YXIgZ2V0RXZlbnRNb2RpZmllclN0YXRlID0gcmVxdWlyZSgnLi9nZXRF
dmVudE1vZGlmaWVyU3RhdGUnKTtcblxuLyoqXG4gKiBAaW50ZXJmYWNlIEtleWJvYXJkRXZlbnRc
biAqIEBzZWUgaHR0cDovL3d3dy53My5vcmcvVFIvRE9NLUxldmVsLTMtRXZlbnRzL1xuICovXG52
YXIgS2V5Ym9hcmRFdmVudEludGVyZmFjZSA9IHtcbiAga2V5OiBnZXRFdmVudEtleSxcbiAgbG9j
YXRpb246IG51bGwsXG4gIGN0cmxLZXk6IG51bGwsXG4gIHNoaWZ0S2V5OiBudWxsLFxuICBhbHRL
ZXk6IG51bGwsXG4gIG1ldGFLZXk6IG51bGwsXG4gIHJlcGVhdDogbnVsbCxcbiAgbG9jYWxlOiBu
dWxsLFxuICBnZXRNb2RpZmllclN0YXRlOiBnZXRFdmVudE1vZGlmaWVyU3RhdGUsXG4gIC8vIExl
Z2FjeSBJbnRlcmZhY2VcbiAgY2hhckNvZGU6IGZ1bmN0aW9uIChldmVudCkge1xuICAgIC8vIGBj
aGFyQ29kZWAgaXMgdGhlIHJlc3VsdCBvZiBhIEtleVByZXNzIGV2ZW50IGFuZCByZXByZXNlbnRz
IHRoZSB2YWx1ZSBvZlxuICAgIC8vIHRoZSBhY3R1YWwgcHJpbnRhYmxlIGNoYXJhY3Rlci5cblxu
ICAgIC8vIEtleVByZXNzIGlzIGRlcHJlY2F0ZWQsIGJ1dCBpdHMgcmVwbGFjZW1lbnQgaXMgbm90
IHlldCBmaW5hbCBhbmQgbm90XG4gICAgLy8gaW1wbGVtZW50ZWQgaW4gYW55IG1ham9yIGJyb3dz
ZXIuIE9ubHkgS2V5UHJlc3MgaGFzIGNoYXJDb2RlLlxuICAgIGlmIChldmVudC50eXBlID09PSAn
a2V5cHJlc3MnKSB7XG4gICAgICByZXR1cm4gZ2V0RXZlbnRDaGFyQ29kZShldmVudCk7XG4gICAg
fVxuICAgIHJldHVybiAwO1xuICB9LFxuICBrZXlDb2RlOiBmdW5jdGlvbiAoZXZlbnQpIHtcbiAg
ICAvLyBga2V5Q29kZWAgaXMgdGhlIHJlc3VsdCBvZiBhIEtleURvd24vVXAgZXZlbnQgYW5kIHJl
cHJlc2VudHMgdGhlIHZhbHVlIG9mXG4gICAgLy8gcGh5c2ljYWwga2V5Ym9hcmQga2V5LlxuXG4g
ICAgLy8gVGhlIGFjdHVhbCBtZWFuaW5nIG9mIHRoZSB2YWx1ZSBkZXBlbmRzIG9uIHRoZSB1c2Vy
cycga2V5Ym9hcmQgbGF5b3V0XG4gICAgLy8gd2hpY2ggY2Fubm90IGJlIGRldGVjdGVkLiBBc3N1
bWluZyB0aGF0IGl0IGlzIGEgVVMga2V5Ym9hcmQgbGF5b3V0XG4gICAgLy8gcHJvdmlkZXMgYSBz
dXJwcmlzaW5nbHkgYWNjdXJhdGUgbWFwcGluZyBmb3IgVVMgYW5kIEV1cm9wZWFuIHVzZXJzLlxu
ICAgIC8vIER1ZSB0byB0aGlzLCBpdCBpcyBsZWZ0IHRvIHRoZSB1c2VyIHRvIGltcGxlbWVudCBh
dCB0aGlzIHRpbWUuXG4gICAgaWYgKGV2ZW50LnR5cGUgPT09ICdrZXlkb3duJyB8fCBldmVudC50
eXBlID09PSAna2V5dXAnKSB7XG4gICAgICByZXR1cm4gZXZlbnQua2V5Q29kZTtcbiAgICB9XG4g
ICAgcmV0dXJuIDA7XG4gIH0sXG4gIHdoaWNoOiBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAvLyBg
d2hpY2hgIGlzIGFuIGFsaWFzIGZvciBlaXRoZXIgYGtleUNvZGVgIG9yIGBjaGFyQ29kZWAgZGVw
ZW5kaW5nIG9uIHRoZVxuICAgIC8vIHR5cGUgb2YgdGhlIGV2ZW50LlxuICAgIGlmIChldmVudC50
eXBlID09PSAna2V5cHJlc3MnKSB7XG4gICAgICByZXR1cm4gZ2V0RXZlbnRDaGFyQ29kZShldmVu
dCk7XG4gICAgfVxuICAgIGlmIChldmVudC50eXBlID09PSAna2V5ZG93bicgfHwgZXZlbnQudHlw
ZSA9PT0gJ2tleXVwJykge1xuICAgICAgcmV0dXJuIGV2ZW50LmtleUNvZGU7XG4gICAgfVxuICAg
IHJldHVybiAwO1xuICB9XG59O1xuXG4vKipcbiAqIEBwYXJhbSB7b2JqZWN0fSBkaXNwYXRjaENv
bmZpZyBDb25maWd1cmF0aW9uIHVzZWQgdG8gZGlzcGF0Y2ggdGhpcyBldmVudC5cbiAqIEBwYXJh
bSB7c3RyaW5nfSBkaXNwYXRjaE1hcmtlciBNYXJrZXIgaWRlbnRpZnlpbmcgdGhlIGV2ZW50IHRh
cmdldC5cbiAqIEBwYXJhbSB7b2JqZWN0fSBuYXRpdmVFdmVudCBOYXRpdmUgYnJvd3NlciBldmVu
dC5cbiAqIEBleHRlbmRzIHtTeW50aGV0aWNVSUV2ZW50fVxuICovXG5mdW5jdGlvbiBTeW50aGV0
aWNLZXlib2FyZEV2ZW50KGRpc3BhdGNoQ29uZmlnLCBkaXNwYXRjaE1hcmtlciwgbmF0aXZlRXZl
bnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KSB7XG4gIHJldHVybiBTeW50aGV0aWNVSUV2ZW50LmNhbGwo
dGhpcywgZGlzcGF0Y2hDb25maWcsIGRpc3BhdGNoTWFya2VyLCBuYXRpdmVFdmVudCwgbmF0aXZl
RXZlbnRUYXJnZXQpO1xufVxuXG5TeW50aGV0aWNVSUV2ZW50LmF1Z21lbnRDbGFzcyhTeW50aGV0
aWNLZXlib2FyZEV2ZW50LCBLZXlib2FyZEV2ZW50SW50ZXJmYWNlKTtcblxubW9kdWxlLmV4cG9y
dHMgPSBTeW50aGV0aWNLZXlib2FyZEV2ZW50O1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoq
IFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0LWRvbS9saWIvU3ludGhldGljS2V5Ym9hcmRF
dmVudC5qc1xuICoqIG1vZHVsZSBpZCA9IDE3M1xuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiov
IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxs
IHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVu
ZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBp
biB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBn
cmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmls
ZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFy
IFN5bnRoZXRpY1VJRXZlbnQgPSByZXF1aXJlKCcuL1N5bnRoZXRpY1VJRXZlbnQnKTtcblxudmFy
IGdldEV2ZW50TW9kaWZpZXJTdGF0ZSA9IHJlcXVpcmUoJy4vZ2V0RXZlbnRNb2RpZmllclN0YXRl
Jyk7XG5cbi8qKlxuICogQGludGVyZmFjZSBUb3VjaEV2ZW50XG4gKiBAc2VlIGh0dHA6Ly93d3cu
dzMub3JnL1RSL3RvdWNoLWV2ZW50cy9cbiAqL1xudmFyIFRvdWNoRXZlbnRJbnRlcmZhY2UgPSB7
XG4gIHRvdWNoZXM6IG51bGwsXG4gIHRhcmdldFRvdWNoZXM6IG51bGwsXG4gIGNoYW5nZWRUb3Vj
aGVzOiBudWxsLFxuICBhbHRLZXk6IG51bGwsXG4gIG1ldGFLZXk6IG51bGwsXG4gIGN0cmxLZXk6
IG51bGwsXG4gIHNoaWZ0S2V5OiBudWxsLFxuICBnZXRNb2RpZmllclN0YXRlOiBnZXRFdmVudE1v
ZGlmaWVyU3RhdGVcbn07XG5cbi8qKlxuICogQHBhcmFtIHtvYmplY3R9IGRpc3BhdGNoQ29uZmln
IENvbmZpZ3VyYXRpb24gdXNlZCB0byBkaXNwYXRjaCB0aGlzIGV2ZW50LlxuICogQHBhcmFtIHtz
dHJpbmd9IGRpc3BhdGNoTWFya2VyIE1hcmtlciBpZGVudGlmeWluZyB0aGUgZXZlbnQgdGFyZ2V0
LlxuICogQHBhcmFtIHtvYmplY3R9IG5hdGl2ZUV2ZW50IE5hdGl2ZSBicm93c2VyIGV2ZW50Llxu
ICogQGV4dGVuZHMge1N5bnRoZXRpY1VJRXZlbnR9XG4gKi9cbmZ1bmN0aW9uIFN5bnRoZXRpY1Rv
dWNoRXZlbnQoZGlzcGF0Y2hDb25maWcsIGRpc3BhdGNoTWFya2VyLCBuYXRpdmVFdmVudCwgbmF0
aXZlRXZlbnRUYXJnZXQpIHtcbiAgcmV0dXJuIFN5bnRoZXRpY1VJRXZlbnQuY2FsbCh0aGlzLCBk
aXNwYXRjaENvbmZpZywgZGlzcGF0Y2hNYXJrZXIsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRh
cmdldCk7XG59XG5cblN5bnRoZXRpY1VJRXZlbnQuYXVnbWVudENsYXNzKFN5bnRoZXRpY1RvdWNo
RXZlbnQsIFRvdWNoRXZlbnRJbnRlcmZhY2UpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFN5bnRoZXRp
Y1RvdWNoRXZlbnQ7XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJc
biAqKiAuL34vcmVhY3QtZG9tL2xpYi9TeW50aGV0aWNUb3VjaEV2ZW50LmpzXG4gKiogbW9kdWxl
IGlkID0gMTc0XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENvcHlyaWdo
dCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxu
ICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBs
aWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9y
eSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQg
cmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVj
dG9yeS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgU3ludGhldGljRXZlbnQgPSBy
ZXF1aXJlKCcuL1N5bnRoZXRpY0V2ZW50Jyk7XG5cbi8qKlxuICogQGludGVyZmFjZSBFdmVudFxu
ICogQHNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi8yMDA5L1dELWNzczMtdHJhbnNpdGlvbnMtMjAw
OTAzMjAvI3RyYW5zaXRpb24tZXZlbnRzLVxuICogQHNlZSBodHRwczovL2RldmVsb3Blci5tb3pp
bGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvVHJhbnNpdGlvbkV2ZW50XG4gKi9cbnZhciBUcmFu
c2l0aW9uRXZlbnRJbnRlcmZhY2UgPSB7XG4gIHByb3BlcnR5TmFtZTogbnVsbCxcbiAgZWxhcHNl
ZFRpbWU6IG51bGwsXG4gIHBzZXVkb0VsZW1lbnQ6IG51bGxcbn07XG5cbi8qKlxuICogQHBhcmFt
IHtvYmplY3R9IGRpc3BhdGNoQ29uZmlnIENvbmZpZ3VyYXRpb24gdXNlZCB0byBkaXNwYXRjaCB0
aGlzIGV2ZW50LlxuICogQHBhcmFtIHtzdHJpbmd9IGRpc3BhdGNoTWFya2VyIE1hcmtlciBpZGVu
dGlmeWluZyB0aGUgZXZlbnQgdGFyZ2V0LlxuICogQHBhcmFtIHtvYmplY3R9IG5hdGl2ZUV2ZW50
IE5hdGl2ZSBicm93c2VyIGV2ZW50LlxuICogQGV4dGVuZHMge1N5bnRoZXRpY0V2ZW50fVxuICov
XG5mdW5jdGlvbiBTeW50aGV0aWNUcmFuc2l0aW9uRXZlbnQoZGlzcGF0Y2hDb25maWcsIGRpc3Bh
dGNoTWFya2VyLCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpIHtcbiAgcmV0dXJuIFN5
bnRoZXRpY0V2ZW50LmNhbGwodGhpcywgZGlzcGF0Y2hDb25maWcsIGRpc3BhdGNoTWFya2VyLCBu
YXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpO1xufVxuXG5TeW50aGV0aWNFdmVudC5hdWdt
ZW50Q2xhc3MoU3ludGhldGljVHJhbnNpdGlvbkV2ZW50LCBUcmFuc2l0aW9uRXZlbnRJbnRlcmZh
Y2UpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFN5bnRoZXRpY1RyYW5zaXRpb25FdmVudDtcblxuXG4v
KioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFjdC1kb20v
bGliL1N5bnRoZXRpY1RyYW5zaXRpb25FdmVudC5qc1xuICoqIG1vZHVsZSBpZCA9IDE3NVxuICoq
IG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50
LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNv
dXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBp
biB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3Vy
Y2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUg
Zm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICov
XG5cbid1c2Ugc3RyaWN0JztcblxudmFyIFN5bnRoZXRpY01vdXNlRXZlbnQgPSByZXF1aXJlKCcu
L1N5bnRoZXRpY01vdXNlRXZlbnQnKTtcblxuLyoqXG4gKiBAaW50ZXJmYWNlIFdoZWVsRXZlbnRc
biAqIEBzZWUgaHR0cDovL3d3dy53My5vcmcvVFIvRE9NLUxldmVsLTMtRXZlbnRzL1xuICovXG52
YXIgV2hlZWxFdmVudEludGVyZmFjZSA9IHtcbiAgZGVsdGFYOiBmdW5jdGlvbiAoZXZlbnQpIHtc
biAgICByZXR1cm4gJ2RlbHRhWCcgaW4gZXZlbnQgPyBldmVudC5kZWx0YVggOiAvLyBGYWxsYmFj
ayB0byBgd2hlZWxEZWx0YVhgIGZvciBXZWJraXQgYW5kIG5vcm1hbGl6ZSAocmlnaHQgaXMgcG9z
aXRpdmUpLlxuICAgICd3aGVlbERlbHRhWCcgaW4gZXZlbnQgPyAtZXZlbnQud2hlZWxEZWx0YVgg
OiAwO1xuICB9LFxuICBkZWx0YVk6IGZ1bmN0aW9uIChldmVudCkge1xuICAgIHJldHVybiAnZGVs
dGFZJyBpbiBldmVudCA/IGV2ZW50LmRlbHRhWSA6IC8vIEZhbGxiYWNrIHRvIGB3aGVlbERlbHRh
WWAgZm9yIFdlYmtpdCBhbmQgbm9ybWFsaXplIChkb3duIGlzIHBvc2l0aXZlKS5cbiAgICAnd2hl
ZWxEZWx0YVknIGluIGV2ZW50ID8gLWV2ZW50LndoZWVsRGVsdGFZIDogLy8gRmFsbGJhY2sgdG8g
YHdoZWVsRGVsdGFgIGZvciBJRTw5IGFuZCBub3JtYWxpemUgKGRvd24gaXMgcG9zaXRpdmUpLlxu
ICAgICd3aGVlbERlbHRhJyBpbiBldmVudCA/IC1ldmVudC53aGVlbERlbHRhIDogMDtcbiAgfSxc
biAgZGVsdGFaOiBudWxsLFxuXG4gIC8vIEJyb3dzZXJzIHdpdGhvdXQgXCJkZWx0YU1vZGVcIiBp
cyByZXBvcnRpbmcgaW4gcmF3IHdoZWVsIGRlbHRhIHdoZXJlIG9uZVxuICAvLyBub3RjaCBvbiB0
aGUgc2Nyb2xsIGlzIGFsd2F5cyArLy0gMTIwLCByb3VnaGx5IGVxdWl2YWxlbnQgdG8gcGl4ZWxz
LlxuICAvLyBBIGdvb2QgYXBwcm94aW1hdGlvbiBvZiBET01fREVMVEFfTElORSAoMSkgaXMgNSUg
b2Ygdmlld3BvcnQgc2l6ZSBvclxuICAvLyB+NDAgcGl4ZWxzLCBmb3IgRE9NX0RFTFRBX1NDUkVF
TiAoMikgaXQgaXMgODcuNSUgb2Ygdmlld3BvcnQgc2l6ZS5cbiAgZGVsdGFNb2RlOiBudWxsXG59
O1xuXG4vKipcbiAqIEBwYXJhbSB7b2JqZWN0fSBkaXNwYXRjaENvbmZpZyBDb25maWd1cmF0aW9u
IHVzZWQgdG8gZGlzcGF0Y2ggdGhpcyBldmVudC5cbiAqIEBwYXJhbSB7c3RyaW5nfSBkaXNwYXRj
aE1hcmtlciBNYXJrZXIgaWRlbnRpZnlpbmcgdGhlIGV2ZW50IHRhcmdldC5cbiAqIEBwYXJhbSB7
b2JqZWN0fSBuYXRpdmVFdmVudCBOYXRpdmUgYnJvd3NlciBldmVudC5cbiAqIEBleHRlbmRzIHtT
eW50aGV0aWNNb3VzZUV2ZW50fVxuICovXG5mdW5jdGlvbiBTeW50aGV0aWNXaGVlbEV2ZW50KGRp
c3BhdGNoQ29uZmlnLCBkaXNwYXRjaE1hcmtlciwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFy
Z2V0KSB7XG4gIHJldHVybiBTeW50aGV0aWNNb3VzZUV2ZW50LmNhbGwodGhpcywgZGlzcGF0Y2hD
b25maWcsIGRpc3BhdGNoTWFya2VyLCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpO1xu
fVxuXG5TeW50aGV0aWNNb3VzZUV2ZW50LmF1Z21lbnRDbGFzcyhTeW50aGV0aWNXaGVlbEV2ZW50
LCBXaGVlbEV2ZW50SW50ZXJmYWNlKTtcblxubW9kdWxlLmV4cG9ydHMgPSBTeW50aGV0aWNXaGVl
bEV2ZW50O1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiog
Li9+L3JlYWN0LWRvbS9saWIvU3ludGhldGljV2hlZWxFdmVudC5qc1xuICoqIG1vZHVsZSBpZCA9
IDE3NlxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAx
My1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4g
KiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5z
ZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2Yg
dGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0
cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3Rvcnku
XG4gKlxuICogXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgTU9EID0gNjU1MjE7XG5cbi8v
IGFkbGVyMzIgaXMgbm90IGNyeXB0b2dyYXBoaWNhbGx5IHN0cm9uZywgYW5kIGlzIG9ubHkgdXNl
ZCB0byBzYW5pdHkgY2hlY2sgdGhhdFxuLy8gbWFya3VwIGdlbmVyYXRlZCBvbiB0aGUgc2VydmVy
IG1hdGNoZXMgdGhlIG1hcmt1cCBnZW5lcmF0ZWQgb24gdGhlIGNsaWVudC5cbi8vIFRoaXMgaW1w
bGVtZW50YXRpb24gKGEgbW9kaWZpZWQgdmVyc2lvbiBvZiB0aGUgU2hlZXRKUyB2ZXJzaW9uKSBo
YXMgYmVlbiBvcHRpbWl6ZWRcbi8vIGZvciBvdXIgdXNlIGNhc2UsIGF0IHRoZSBleHBlbnNlIG9m
IGNvbmZvcm1pbmcgdG8gdGhlIGFkbGVyMzIgc3BlY2lmaWNhdGlvblxuLy8gZm9yIG5vbi1hc2Np
aSBpbnB1dHMuXG5mdW5jdGlvbiBhZGxlcjMyKGRhdGEpIHtcbiAgdmFyIGEgPSAxO1xuICB2YXIg
YiA9IDA7XG4gIHZhciBpID0gMDtcbiAgdmFyIGwgPSBkYXRhLmxlbmd0aDtcbiAgdmFyIG0gPSBs
ICYgfjB4MztcbiAgd2hpbGUgKGkgPCBtKSB7XG4gICAgdmFyIG4gPSBNYXRoLm1pbihpICsgNDA5
NiwgbSk7XG4gICAgZm9yICg7IGkgPCBuOyBpICs9IDQpIHtcbiAgICAgIGIgKz0gKGEgKz0gZGF0
YS5jaGFyQ29kZUF0KGkpKSArIChhICs9IGRhdGEuY2hhckNvZGVBdChpICsgMSkpICsgKGEgKz0g
ZGF0YS5jaGFyQ29kZUF0KGkgKyAyKSkgKyAoYSArPSBkYXRhLmNoYXJDb2RlQXQoaSArIDMpKTtc
biAgICB9XG4gICAgYSAlPSBNT0Q7XG4gICAgYiAlPSBNT0Q7XG4gIH1cbiAgZm9yICg7IGkgPCBs
OyBpKyspIHtcbiAgICBiICs9IGEgKz0gZGF0YS5jaGFyQ29kZUF0KGkpO1xuICB9XG4gIGEgJT0g
TU9EO1xuICBiICU9IE1PRDtcbiAgcmV0dXJuIGEgfCBiIDw8IDE2O1xufVxuXG5tb2R1bGUuZXhw
b3J0cyA9IGFkbGVyMzI7XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09U
RVJcbiAqKiAuL34vcmVhY3QtZG9tL2xpYi9hZGxlcjMyLmpzXG4gKiogbW9kdWxlIGlkID0gMTc3
XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLXBy
ZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRo
aXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZv
dW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlz
IHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNh
biBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAq
XG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgQ1NTUHJvcGVydHkgPSByZXF1aXJlKCcuL0NT
U1Byb3BlcnR5Jyk7XG52YXIgd2FybmluZyA9IHJlcXVpcmUoJ2ZianMvbGliL3dhcm5pbmcnKTtc
blxudmFyIGlzVW5pdGxlc3NOdW1iZXIgPSBDU1NQcm9wZXJ0eS5pc1VuaXRsZXNzTnVtYmVyO1xu
dmFyIHN0eWxlV2FybmluZ3MgPSB7fTtcblxuLyoqXG4gKiBDb252ZXJ0IGEgdmFsdWUgaW50byB0
aGUgcHJvcGVyIGNzcyB3cml0YWJsZSB2YWx1ZS4gVGhlIHN0eWxlIG5hbWUgYG5hbWVgXG4gKiBz
aG91bGQgYmUgbG9naWNhbCAobm8gaHlwaGVucyksIGFzIHNwZWNpZmllZFxuICogaW4gYENTU1By
b3BlcnR5LmlzVW5pdGxlc3NOdW1iZXJgLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIENT
UyBwcm9wZXJ0eSBuYW1lIHN1Y2ggYXMgYHRvcE1hcmdpbmAuXG4gKiBAcGFyYW0geyp9IHZhbHVl
IENTUyBwcm9wZXJ0eSB2YWx1ZSBzdWNoIGFzIGAxMHB4YC5cbiAqIEBwYXJhbSB7UmVhY3RET01D
b21wb25lbnR9IGNvbXBvbmVudFxuICogQHJldHVybiB7c3RyaW5nfSBOb3JtYWxpemVkIHN0eWxl
IHZhbHVlIHdpdGggZGltZW5zaW9ucyBhcHBsaWVkLlxuICovXG5mdW5jdGlvbiBkYW5nZXJvdXNT
dHlsZVZhbHVlKG5hbWUsIHZhbHVlLCBjb21wb25lbnQsIGlzQ3VzdG9tUHJvcGVydHkpIHtcbiAg
Ly8gTm90ZSB0aGF0IHdlJ3ZlIHJlbW92ZWQgZXNjYXBlVGV4dEZvckJyb3dzZXIoKSBjYWxscyBo
ZXJlIHNpbmNlIHRoZVxuICAvLyB3aG9sZSBzdHJpbmcgd2lsbCBiZSBlc2NhcGVkIHdoZW4gdGhl
IGF0dHJpYnV0ZSBpcyBpbmplY3RlZCBpbnRvXG4gIC8vIHRoZSBtYXJrdXAuIElmIHlvdSBwcm92
aWRlIHVuc2FmZSB1c2VyIGRhdGEgaGVyZSB0aGV5IGNhbiBpbmplY3RcbiAgLy8gYXJiaXRyYXJ5
IENTUyB3aGljaCBtYXkgYmUgcHJvYmxlbWF0aWMgKEkgY291bGRuJ3QgcmVwcm8gdGhpcyk6XG4g
IC8vIGh0dHBzOi8vd3d3Lm93YXNwLm9yZy9pbmRleC5waHAvWFNTX0ZpbHRlcl9FdmFzaW9uX0No
ZWF0X1NoZWV0XG4gIC8vIGh0dHA6Ly93d3cudGhlc3Bhbm5lci5jby51ay8yMDA3LzExLzI2L3Vs
dGltYXRlLXhzcy1jc3MtaW5qZWN0aW9uL1xuICAvLyBUaGlzIGlzIG5vdCBhbiBYU1MgaG9sZSBi
dXQgaW5zdGVhZCBhIHBvdGVudGlhbCBDU1MgaW5qZWN0aW9uIGlzc3VlXG4gIC8vIHdoaWNoIGhh
cyBsZWFkIHRvIGEgZ3JlYXRlciBkaXNjdXNzaW9uIGFib3V0IGhvdyB3ZSdyZSBnb2luZyB0b1xu
ICAvLyB0cnVzdCBVUkxzIG1vdmluZyBmb3J3YXJkLiBTZWUgIzIxMTU5MDFcblxuICB2YXIgaXNF
bXB0eSA9IHZhbHVlID09IG51bGwgfHwgdHlwZW9mIHZhbHVlID09PSAnYm9vbGVhbicgfHwgdmFs
dWUgPT09ICcnO1xuICBpZiAoaXNFbXB0eSkge1xuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIHZh
ciBpc05vbk51bWVyaWMgPSBpc05hTih2YWx1ZSk7XG4gIGlmIChpc0N1c3RvbVByb3BlcnR5IHx8
IGlzTm9uTnVtZXJpYyB8fCB2YWx1ZSA9PT0gMCB8fCBpc1VuaXRsZXNzTnVtYmVyLmhhc093blBy
b3BlcnR5KG5hbWUpICYmIGlzVW5pdGxlc3NOdW1iZXJbbmFtZV0pIHtcbiAgICByZXR1cm4gJycg
KyB2YWx1ZTsgLy8gY2FzdCB0byBzdHJpbmdcbiAgfVxuXG4gIGlmICh0eXBlb2YgdmFsdWUgPT09
ICdzdHJpbmcnKSB7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlv
bicpIHtcbiAgICAgIC8vIEFsbG93ICcwJyB0byBwYXNzIHRocm91Z2ggd2l0aG91dCB3YXJuaW5n
LiAwIGlzIGFscmVhZHkgc3BlY2lhbCBhbmRcbiAgICAgIC8vIGRvZXNuJ3QgcmVxdWlyZSB1bml0
cywgc28gd2UgZG9uJ3QgbmVlZCB0byB3YXJuIGFib3V0IGl0LlxuICAgICAgaWYgKGNvbXBvbmVu
dCAmJiB2YWx1ZSAhPT0gJzAnKSB7XG4gICAgICAgIHZhciBvd25lciA9IGNvbXBvbmVudC5fY3Vy
cmVudEVsZW1lbnQuX293bmVyO1xuICAgICAgICB2YXIgb3duZXJOYW1lID0gb3duZXIgPyBvd25l
ci5nZXROYW1lKCkgOiBudWxsO1xuICAgICAgICBpZiAob3duZXJOYW1lICYmICFzdHlsZVdhcm5p
bmdzW293bmVyTmFtZV0pIHtcbiAgICAgICAgICBzdHlsZVdhcm5pbmdzW293bmVyTmFtZV0gPSB7
fTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgd2FybmVkID0gZmFsc2U7XG4gICAgICAgIGlmIChv
d25lck5hbWUpIHtcbiAgICAgICAgICB2YXIgd2FybmluZ3MgPSBzdHlsZVdhcm5pbmdzW293bmVy
TmFtZV07XG4gICAgICAgICAgd2FybmVkID0gd2FybmluZ3NbbmFtZV07XG4gICAgICAgICAgaWYg
KCF3YXJuZWQpIHtcbiAgICAgICAgICAgIHdhcm5pbmdzW25hbWVdID0gdHJ1ZTtcbiAgICAgICAg
ICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF3YXJuZWQpIHtcbiAgICAgICAgICBwcm9jZXNz
LmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ2EgYCVzYCB0
YWcgKG93bmVyOiBgJXNgKSB3YXMgcGFzc2VkIGEgbnVtZXJpYyBzdHJpbmcgdmFsdWUgJyArICdm
b3IgQ1NTIHByb3BlcnR5IGAlc2AgKHZhbHVlOiBgJXNgKSB3aGljaCB3aWxsIGJlIHRyZWF0ZWQg
JyArICdhcyBhIHVuaXRsZXNzIG51bWJlciBpbiBhIGZ1dHVyZSB2ZXJzaW9uIG9mIFJlYWN0Lics
IGNvbXBvbmVudC5fY3VycmVudEVsZW1lbnQudHlwZSwgb3duZXJOYW1lIHx8ICd1bmtub3duJywg
bmFtZSwgdmFsdWUpIDogdm9pZCAwO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHZh
bHVlID0gdmFsdWUudHJpbSgpO1xuICB9XG4gIHJldHVybiB2YWx1ZSArICdweCc7XG59XG5cbm1v
ZHVsZS5leHBvcnRzID0gZGFuZ2Vyb3VzU3R5bGVWYWx1ZTtcblxuXG4vKioqKioqKioqKioqKioq
KipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFjdC1kb20vbGliL2Rhbmdlcm91c1N0
eWxlVmFsdWUuanNcbiAqKiBtb2R1bGUgaWQgPSAxNzhcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxu
ICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAq
IEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNl
ZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZp
bGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9u
YWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRT
IGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5c
bnZhciBfcHJvZEludmFyaWFudCA9IHJlcXVpcmUoJy4vcmVhY3RQcm9kSW52YXJpYW50Jyk7XG5c
bnZhciBSZWFjdEN1cnJlbnRPd25lciA9IHJlcXVpcmUoJ3JlYWN0L2xpYi9SZWFjdEN1cnJlbnRP
d25lcicpO1xudmFyIFJlYWN0RE9NQ29tcG9uZW50VHJlZSA9IHJlcXVpcmUoJy4vUmVhY3RET01D
b21wb25lbnRUcmVlJyk7XG52YXIgUmVhY3RJbnN0YW5jZU1hcCA9IHJlcXVpcmUoJy4vUmVhY3RJ
bnN0YW5jZU1hcCcpO1xuXG52YXIgZ2V0SG9zdENvbXBvbmVudEZyb21Db21wb3NpdGUgPSByZXF1
aXJlKCcuL2dldEhvc3RDb21wb25lbnRGcm9tQ29tcG9zaXRlJyk7XG52YXIgaW52YXJpYW50ID0g
cmVxdWlyZSgnZmJqcy9saWIvaW52YXJpYW50Jyk7XG52YXIgd2FybmluZyA9IHJlcXVpcmUoJ2Zi
anMvbGliL3dhcm5pbmcnKTtcblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBET00gbm9kZSByZW5kZXJl
ZCBieSB0aGlzIGVsZW1lbnQuXG4gKlxuICogU2VlIGh0dHBzOi8vZmFjZWJvb2suZ2l0aHViLmlv
L3JlYWN0L2RvY3MvdG9wLWxldmVsLWFwaS5odG1sI3JlYWN0ZG9tLmZpbmRkb21ub2RlXG4gKlxu
ICogQHBhcmFtIHtSZWFjdENvbXBvbmVudHxET01FbGVtZW50fSBjb21wb25lbnRPckVsZW1lbnRc
biAqIEByZXR1cm4gez9ET01FbGVtZW50fSBUaGUgcm9vdCBub2RlIG9mIHRoaXMgZWxlbWVudC5c
biAqL1xuZnVuY3Rpb24gZmluZERPTU5vZGUoY29tcG9uZW50T3JFbGVtZW50KSB7XG4gIGlmIChw
cm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgdmFyIG93bmVyID0g
UmVhY3RDdXJyZW50T3duZXIuY3VycmVudDtcbiAgICBpZiAob3duZXIgIT09IG51bGwpIHtcbiAg
ICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKG93bmVy
Ll93YXJuZWRBYm91dFJlZnNJblJlbmRlciwgJyVzIGlzIGFjY2Vzc2luZyBmaW5kRE9NTm9kZSBp
bnNpZGUgaXRzIHJlbmRlcigpLiAnICsgJ3JlbmRlcigpIHNob3VsZCBiZSBhIHB1cmUgZnVuY3Rp
b24gb2YgcHJvcHMgYW5kIHN0YXRlLiBJdCBzaG91bGQgJyArICduZXZlciBhY2Nlc3Mgc29tZXRo
aW5nIHRoYXQgcmVxdWlyZXMgc3RhbGUgZGF0YSBmcm9tIHRoZSBwcmV2aW91cyAnICsgJ3JlbmRl
ciwgc3VjaCBhcyByZWZzLiBNb3ZlIHRoaXMgbG9naWMgdG8gY29tcG9uZW50RGlkTW91bnQgYW5k
ICcgKyAnY29tcG9uZW50RGlkVXBkYXRlIGluc3RlYWQuJywgb3duZXIuZ2V0TmFtZSgpIHx8ICdB
IGNvbXBvbmVudCcpIDogdm9pZCAwO1xuICAgICAgb3duZXIuX3dhcm5lZEFib3V0UmVmc0luUmVu
ZGVyID0gdHJ1ZTtcbiAgICB9XG4gIH1cbiAgaWYgKGNvbXBvbmVudE9yRWxlbWVudCA9PSBudWxs
KSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgaWYgKGNvbXBvbmVudE9yRWxlbWVudC5ub2Rl
VHlwZSA9PT0gMSkge1xuICAgIHJldHVybiBjb21wb25lbnRPckVsZW1lbnQ7XG4gIH1cblxuICB2
YXIgaW5zdCA9IFJlYWN0SW5zdGFuY2VNYXAuZ2V0KGNvbXBvbmVudE9yRWxlbWVudCk7XG4gIGlm
IChpbnN0KSB7XG4gICAgaW5zdCA9IGdldEhvc3RDb21wb25lbnRGcm9tQ29tcG9zaXRlKGluc3Qp
O1xuICAgIHJldHVybiBpbnN0ID8gUmVhY3RET01Db21wb25lbnRUcmVlLmdldE5vZGVGcm9tSW5z
dGFuY2UoaW5zdCkgOiBudWxsO1xuICB9XG5cbiAgaWYgKHR5cGVvZiBjb21wb25lbnRPckVsZW1l
bnQucmVuZGVyID09PSAnZnVuY3Rpb24nKSB7XG4gICAgIWZhbHNlID8gcHJvY2Vzcy5lbnYuTk9E
RV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ2ZpbmRET01Ob2RlIHdh
cyBjYWxsZWQgb24gYW4gdW5tb3VudGVkIGNvbXBvbmVudC4nKSA6IF9wcm9kSW52YXJpYW50KCc0
NCcpIDogdm9pZCAwO1xuICB9IGVsc2Uge1xuICAgICFmYWxzZSA/IHByb2Nlc3MuZW52Lk5PREVf
RU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdFbGVtZW50IGFwcGVhcnMg
dG8gYmUgbmVpdGhlciBSZWFjdENvbXBvbmVudCBub3IgRE9NTm9kZSAoa2V5czogJXMpJywgT2Jq
ZWN0LmtleXMoY29tcG9uZW50T3JFbGVtZW50KSkgOiBfcHJvZEludmFyaWFudCgnNDUnLCBPYmpl
Y3Qua2V5cyhjb21wb25lbnRPckVsZW1lbnQpKSA6IHZvaWQgMDtcbiAgfVxufVxuXG5tb2R1bGUu
ZXhwb3J0cyA9IGZpbmRET01Ob2RlO1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBB
Q0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0LWRvbS9saWIvZmluZERPTU5vZGUuanNcbiAqKiBtb2R1
bGUgaWQgPSAxNzlcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29weXJp
Z2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQu
XG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxl
IGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0
b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVu
dCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGly
ZWN0b3J5LlxuICpcbiAqIFxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIEtleUVzY2FwZVV0
aWxzID0gcmVxdWlyZSgnLi9LZXlFc2NhcGVVdGlscycpO1xudmFyIHRyYXZlcnNlQWxsQ2hpbGRy
ZW4gPSByZXF1aXJlKCcuL3RyYXZlcnNlQWxsQ2hpbGRyZW4nKTtcbnZhciB3YXJuaW5nID0gcmVx
dWlyZSgnZmJqcy9saWIvd2FybmluZycpO1xuXG52YXIgUmVhY3RDb21wb25lbnRUcmVlSG9vaztc
blxuaWYgKHR5cGVvZiBwcm9jZXNzICE9PSAndW5kZWZpbmVkJyAmJiBwcm9jZXNzLmVudiAmJiBw
cm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Rlc3QnKSB7XG4gIC8vIFRlbXBvcmFyeSBoYWNrLlxu
ICAvLyBJbmxpbmUgcmVxdWlyZXMgZG9uJ3Qgd29yayB3ZWxsIHdpdGggSmVzdDpcbiAgLy8gaHR0
cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0L2lzc3Vlcy83MjQwXG4gIC8vIFJlbW92ZSB0
aGUgaW5saW5lIHJlcXVpcmVzIHdoZW4gd2UgZG9uJ3QgbmVlZCB0aGVtIGFueW1vcmU6XG4gIC8v
IGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9wdWxsLzcxNzhcbiAgUmVhY3RDb21w
b25lbnRUcmVlSG9vayA9IHJlcXVpcmUoJ3JlYWN0L2xpYi9SZWFjdENvbXBvbmVudFRyZWVIb29r
Jyk7XG59XG5cbi8qKlxuICogQHBhcmFtIHtmdW5jdGlvbn0gdHJhdmVyc2VDb250ZXh0IENvbnRl
eHQgcGFzc2VkIHRocm91Z2ggdHJhdmVyc2FsLlxuICogQHBhcmFtIHs/UmVhY3RDb21wb25lbnR9
IGNoaWxkIFJlYWN0IGNoaWxkIGNvbXBvbmVudC5cbiAqIEBwYXJhbSB7IXN0cmluZ30gbmFtZSBT
dHJpbmcgbmFtZSBvZiBrZXkgcGF0aCB0byBjaGlsZC5cbiAqIEBwYXJhbSB7bnVtYmVyPX0gc2Vs
ZkRlYnVnSUQgT3B0aW9uYWwgZGVidWdJRCBvZiB0aGUgY3VycmVudCBpbnRlcm5hbCBpbnN0YW5j
ZS5cbiAqL1xuZnVuY3Rpb24gZmxhdHRlblNpbmdsZUNoaWxkSW50b0NvbnRleHQodHJhdmVyc2VD
b250ZXh0LCBjaGlsZCwgbmFtZSwgc2VsZkRlYnVnSUQpIHtcbiAgLy8gV2UgZm91bmQgYSBjb21w
b25lbnQgaW5zdGFuY2UuXG4gIGlmICh0cmF2ZXJzZUNvbnRleHQgJiYgdHlwZW9mIHRyYXZlcnNl
Q29udGV4dCA9PT0gJ29iamVjdCcpIHtcbiAgICB2YXIgcmVzdWx0ID0gdHJhdmVyc2VDb250ZXh0
O1xuICAgIHZhciBrZXlVbmlxdWUgPSByZXN1bHRbbmFtZV0gPT09IHVuZGVmaW5lZDtcbiAgICBp
ZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgaWYgKCFS
ZWFjdENvbXBvbmVudFRyZWVIb29rKSB7XG4gICAgICAgIFJlYWN0Q29tcG9uZW50VHJlZUhvb2sg
PSByZXF1aXJlKCdyZWFjdC9saWIvUmVhY3RDb21wb25lbnRUcmVlSG9vaycpO1xuICAgICAgfVxu
ICAgICAgaWYgKCFrZXlVbmlxdWUpIHtcbiAgICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09
ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdmbGF0dGVuQ2hpbGRyZW4oLi4uKTogRW5j
b3VudGVyZWQgdHdvIGNoaWxkcmVuIHdpdGggdGhlIHNhbWUga2V5LCAnICsgJ2Alc2AuIENoaWxk
IGtleXMgbXVzdCBiZSB1bmlxdWU7IHdoZW4gdHdvIGNoaWxkcmVuIHNoYXJlIGEga2V5LCBvbmx5
ICcgKyAndGhlIGZpcnN0IGNoaWxkIHdpbGwgYmUgdXNlZC4lcycsIEtleUVzY2FwZVV0aWxzLnVu
ZXNjYXBlKG5hbWUpLCBSZWFjdENvbXBvbmVudFRyZWVIb29rLmdldFN0YWNrQWRkZW5kdW1CeUlE
KHNlbGZEZWJ1Z0lEKSkgOiB2b2lkIDA7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChrZXlVbmlx
dWUgJiYgY2hpbGQgIT0gbnVsbCkge1xuICAgICAgcmVzdWx0W25hbWVdID0gY2hpbGQ7XG4gICAg
fVxuICB9XG59XG5cbi8qKlxuICogRmxhdHRlbnMgY2hpbGRyZW4gdGhhdCBhcmUgdHlwaWNhbGx5
IHNwZWNpZmllZCBhcyBgcHJvcHMuY2hpbGRyZW5gLiBBbnkgbnVsbFxuICogY2hpbGRyZW4gd2ls
bCBub3QgYmUgaW5jbHVkZWQgaW4gdGhlIHJlc3VsdGluZyBvYmplY3QuXG4gKiBAcmV0dXJuIHsh
b2JqZWN0fSBmbGF0dGVuZWQgY2hpbGRyZW4ga2V5ZWQgYnkgbmFtZS5cbiAqL1xuZnVuY3Rpb24g
ZmxhdHRlbkNoaWxkcmVuKGNoaWxkcmVuLCBzZWxmRGVidWdJRCkge1xuICBpZiAoY2hpbGRyZW4g
PT0gbnVsbCkge1xuICAgIHJldHVybiBjaGlsZHJlbjtcbiAgfVxuICB2YXIgcmVzdWx0ID0ge307
XG5cbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICB0
cmF2ZXJzZUFsbENoaWxkcmVuKGNoaWxkcmVuLCBmdW5jdGlvbiAodHJhdmVyc2VDb250ZXh0LCBj
aGlsZCwgbmFtZSkge1xuICAgICAgcmV0dXJuIGZsYXR0ZW5TaW5nbGVDaGlsZEludG9Db250ZXh0
KHRyYXZlcnNlQ29udGV4dCwgY2hpbGQsIG5hbWUsIHNlbGZEZWJ1Z0lEKTtcbiAgICB9LCByZXN1
bHQpO1xuICB9IGVsc2Uge1xuICAgIHRyYXZlcnNlQWxsQ2hpbGRyZW4oY2hpbGRyZW4sIGZsYXR0
ZW5TaW5nbGVDaGlsZEludG9Db250ZXh0LCByZXN1bHQpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7
XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZmxhdHRlbkNoaWxkcmVuO1xuXG5cbi8qKioqKioqKioq
KioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0LWRvbS9saWIvZmxhdHRl
bkNoaWxkcmVuLmpzXG4gKiogbW9kdWxlIGlkID0gMTgwXG4gKiogbW9kdWxlIGNodW5rcyA9IDBc
biAqKi8iLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4g
KiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5z
ZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBm
aWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlv
bmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5U
UyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xu
XG52YXIgZ2V0RXZlbnRDaGFyQ29kZSA9IHJlcXVpcmUoJy4vZ2V0RXZlbnRDaGFyQ29kZScpO1xu
XG4vKipcbiAqIE5vcm1hbGl6YXRpb24gb2YgZGVwcmVjYXRlZCBIVE1MNSBga2V5YCB2YWx1ZXNc
biAqIEBzZWUgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJ
L0tleWJvYXJkRXZlbnQjS2V5X25hbWVzXG4gKi9cbnZhciBub3JtYWxpemVLZXkgPSB7XG4gIEVz
YzogJ0VzY2FwZScsXG4gIFNwYWNlYmFyOiAnICcsXG4gIExlZnQ6ICdBcnJvd0xlZnQnLFxuICBV
cDogJ0Fycm93VXAnLFxuICBSaWdodDogJ0Fycm93UmlnaHQnLFxuICBEb3duOiAnQXJyb3dEb3du
JyxcbiAgRGVsOiAnRGVsZXRlJyxcbiAgV2luOiAnT1MnLFxuICBNZW51OiAnQ29udGV4dE1lbnUn
LFxuICBBcHBzOiAnQ29udGV4dE1lbnUnLFxuICBTY3JvbGw6ICdTY3JvbGxMb2NrJyxcbiAgTW96
UHJpbnRhYmxlS2V5OiAnVW5pZGVudGlmaWVkJ1xufTtcblxuLyoqXG4gKiBUcmFuc2xhdGlvbiBm
cm9tIGxlZ2FjeSBga2V5Q29kZWAgdG8gSFRNTDUgYGtleWBcbiAqIE9ubHkgc3BlY2lhbCBrZXlz
IHN1cHBvcnRlZCwgYWxsIG90aGVycyBkZXBlbmQgb24ga2V5Ym9hcmQgbGF5b3V0IG9yIGJyb3dz
ZXJcbiAqIEBzZWUgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIv
QVBJL0tleWJvYXJkRXZlbnQjS2V5X25hbWVzXG4gKi9cbnZhciB0cmFuc2xhdGVUb0tleSA9IHtc
biAgODogJ0JhY2tzcGFjZScsXG4gIDk6ICdUYWInLFxuICAxMjogJ0NsZWFyJyxcbiAgMTM6ICdF
bnRlcicsXG4gIDE2OiAnU2hpZnQnLFxuICAxNzogJ0NvbnRyb2wnLFxuICAxODogJ0FsdCcsXG4g
IDE5OiAnUGF1c2UnLFxuICAyMDogJ0NhcHNMb2NrJyxcbiAgMjc6ICdFc2NhcGUnLFxuICAzMjog
JyAnLFxuICAzMzogJ1BhZ2VVcCcsXG4gIDM0OiAnUGFnZURvd24nLFxuICAzNTogJ0VuZCcsXG4g
IDM2OiAnSG9tZScsXG4gIDM3OiAnQXJyb3dMZWZ0JyxcbiAgMzg6ICdBcnJvd1VwJyxcbiAgMzk6
ICdBcnJvd1JpZ2h0JyxcbiAgNDA6ICdBcnJvd0Rvd24nLFxuICA0NTogJ0luc2VydCcsXG4gIDQ2
OiAnRGVsZXRlJyxcbiAgMTEyOiAnRjEnLFxuICAxMTM6ICdGMicsXG4gIDExNDogJ0YzJyxcbiAg
MTE1OiAnRjQnLFxuICAxMTY6ICdGNScsXG4gIDExNzogJ0Y2JyxcbiAgMTE4OiAnRjcnLFxuICAx
MTk6ICdGOCcsXG4gIDEyMDogJ0Y5JyxcbiAgMTIxOiAnRjEwJyxcbiAgMTIyOiAnRjExJyxcbiAg
MTIzOiAnRjEyJyxcbiAgMTQ0OiAnTnVtTG9jaycsXG4gIDE0NTogJ1Njcm9sbExvY2snLFxuICAy
MjQ6ICdNZXRhJ1xufTtcblxuLyoqXG4gKiBAcGFyYW0ge29iamVjdH0gbmF0aXZlRXZlbnQgTmF0
aXZlIGJyb3dzZXIgZXZlbnQuXG4gKiBAcmV0dXJuIHtzdHJpbmd9IE5vcm1hbGl6ZWQgYGtleWAg
cHJvcGVydHkuXG4gKi9cbmZ1bmN0aW9uIGdldEV2ZW50S2V5KG5hdGl2ZUV2ZW50KSB7XG4gIGlm
IChuYXRpdmVFdmVudC5rZXkpIHtcbiAgICAvLyBOb3JtYWxpemUgaW5jb25zaXN0ZW50IHZhbHVl
cyByZXBvcnRlZCBieSBicm93c2VycyBkdWUgdG9cbiAgICAvLyBpbXBsZW1lbnRhdGlvbnMgb2Yg
YSB3b3JraW5nIGRyYWZ0IHNwZWNpZmljYXRpb24uXG5cbiAgICAvLyBGaXJlRm94IGltcGxlbWVu
dHMgYGtleWAgYnV0IHJldHVybnMgYE1velByaW50YWJsZUtleWAgZm9yIGFsbFxuICAgIC8vIHBy
aW50YWJsZSBjaGFyYWN0ZXJzIChub3JtYWxpemVkIHRvIGBVbmlkZW50aWZpZWRgKSwgaWdub3Jl
IGl0LlxuICAgIHZhciBrZXkgPSBub3JtYWxpemVLZXlbbmF0aXZlRXZlbnQua2V5XSB8fCBuYXRp
dmVFdmVudC5rZXk7XG4gICAgaWYgKGtleSAhPT0gJ1VuaWRlbnRpZmllZCcpIHtcbiAgICAgIHJl
dHVybiBrZXk7XG4gICAgfVxuICB9XG5cbiAgLy8gQnJvd3NlciBkb2VzIG5vdCBpbXBsZW1lbnQg
YGtleWAsIHBvbHlmaWxsIGFzIG11Y2ggb2YgaXQgYXMgd2UgY2FuLlxuICBpZiAobmF0aXZlRXZl
bnQudHlwZSA9PT0gJ2tleXByZXNzJykge1xuICAgIHZhciBjaGFyQ29kZSA9IGdldEV2ZW50Q2hh
ckNvZGUobmF0aXZlRXZlbnQpO1xuXG4gICAgLy8gVGhlIGVudGVyLWtleSBpcyB0ZWNobmljYWxs
eSBib3RoIHByaW50YWJsZSBhbmQgbm9uLXByaW50YWJsZSBhbmQgY2FuXG4gICAgLy8gdGh1cyBi
ZSBjYXB0dXJlZCBieSBga2V5cHJlc3NgLCBubyBvdGhlciBub24tcHJpbnRhYmxlIGtleSBzaG91
bGQuXG4gICAgcmV0dXJuIGNoYXJDb2RlID09PSAxMyA/ICdFbnRlcicgOiBTdHJpbmcuZnJvbUNo
YXJDb2RlKGNoYXJDb2RlKTtcbiAgfVxuICBpZiAobmF0aXZlRXZlbnQudHlwZSA9PT0gJ2tleWRv
d24nIHx8IG5hdGl2ZUV2ZW50LnR5cGUgPT09ICdrZXl1cCcpIHtcbiAgICAvLyBXaGlsZSB1c2Vy
IGtleWJvYXJkIGxheW91dCBkZXRlcm1pbmVzIHRoZSBhY3R1YWwgbWVhbmluZyBvZiBlYWNoXG4g
ICAgLy8gYGtleUNvZGVgIHZhbHVlLCBhbG1vc3QgYWxsIGZ1bmN0aW9uIGtleXMgaGF2ZSBhIHVu
aXZlcnNhbCB2YWx1ZS5cbiAgICByZXR1cm4gdHJhbnNsYXRlVG9LZXlbbmF0aXZlRXZlbnQua2V5
Q29kZV0gfHwgJ1VuaWRlbnRpZmllZCc7XG4gIH1cbiAgcmV0dXJuICcnO1xufVxuXG5tb2R1bGUu
ZXhwb3J0cyA9IGdldEV2ZW50S2V5O1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBB
Q0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0LWRvbS9saWIvZ2V0RXZlbnRLZXkuanNcbiAqKiBtb2R1
bGUgaWQgPSAxODFcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29weXJp
Z2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQu
XG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxl
IGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0
b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVu
dCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGly
ZWN0b3J5LlxuICpcbiAqIFxuICovXG5cbid1c2Ugc3RyaWN0JztcblxuLyogZ2xvYmFsIFN5bWJv
bCAqL1xuXG52YXIgSVRFUkFUT1JfU1lNQk9MID0gdHlwZW9mIFN5bWJvbCA9PT0gJ2Z1bmN0aW9u
JyAmJiBTeW1ib2wuaXRlcmF0b3I7XG52YXIgRkFVWF9JVEVSQVRPUl9TWU1CT0wgPSAnQEBpdGVy
YXRvcic7IC8vIEJlZm9yZSBTeW1ib2wgc3BlYy5cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBpdGVy
YXRvciBtZXRob2QgZnVuY3Rpb24gY29udGFpbmVkIG9uIHRoZSBpdGVyYWJsZSBvYmplY3QuXG4g
KlxuICogQmUgc3VyZSB0byBpbnZva2UgdGhlIGZ1bmN0aW9uIHdpdGggdGhlIGl0ZXJhYmxlIGFz
IGNvbnRleHQ6XG4gKlxuICogICAgIHZhciBpdGVyYXRvckZuID0gZ2V0SXRlcmF0b3JGbihteUl0
ZXJhYmxlKTtcbiAqICAgICBpZiAoaXRlcmF0b3JGbikge1xuICogICAgICAgdmFyIGl0ZXJhdG9y
ID0gaXRlcmF0b3JGbi5jYWxsKG15SXRlcmFibGUpO1xuICogICAgICAgLi4uXG4gKiAgICAgfVxu
ICpcbiAqIEBwYXJhbSB7P29iamVjdH0gbWF5YmVJdGVyYWJsZVxuICogQHJldHVybiB7P2Z1bmN0
aW9ufVxuICovXG5mdW5jdGlvbiBnZXRJdGVyYXRvckZuKG1heWJlSXRlcmFibGUpIHtcbiAgdmFy
IGl0ZXJhdG9yRm4gPSBtYXliZUl0ZXJhYmxlICYmIChJVEVSQVRPUl9TWU1CT0wgJiYgbWF5YmVJ
dGVyYWJsZVtJVEVSQVRPUl9TWU1CT0xdIHx8IG1heWJlSXRlcmFibGVbRkFVWF9JVEVSQVRPUl9T
WU1CT0xdKTtcbiAgaWYgKHR5cGVvZiBpdGVyYXRvckZuID09PSAnZnVuY3Rpb24nKSB7XG4gICAg
cmV0dXJuIGl0ZXJhdG9yRm47XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBnZXRJdGVyYXRv
ckZuO1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+
L3JlYWN0LWRvbS9saWIvZ2V0SXRlcmF0b3JGbi5qc1xuICoqIG1vZHVsZSBpZCA9IDE4MlxuICoq
IG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50
LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNv
dXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBp
biB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3Vy
Y2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUg
Zm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICov
XG5cbid1c2Ugc3RyaWN0JztcblxuLyoqXG4gKiBHaXZlbiBhbnkgbm9kZSByZXR1cm4gdGhlIGZp
cnN0IGxlYWYgbm9kZSB3aXRob3V0IGNoaWxkcmVuLlxuICpcbiAqIEBwYXJhbSB7RE9NRWxlbWVu
dHxET01UZXh0Tm9kZX0gbm9kZVxuICogQHJldHVybiB7RE9NRWxlbWVudHxET01UZXh0Tm9kZX1c
biAqL1xuXG5mdW5jdGlvbiBnZXRMZWFmTm9kZShub2RlKSB7XG4gIHdoaWxlIChub2RlICYmIG5v
ZGUuZmlyc3RDaGlsZCkge1xuICAgIG5vZGUgPSBub2RlLmZpcnN0Q2hpbGQ7XG4gIH1cbiAgcmV0
dXJuIG5vZGU7XG59XG5cbi8qKlxuICogR2V0IHRoZSBuZXh0IHNpYmxpbmcgd2l0aGluIGEgY29u
dGFpbmVyLiBUaGlzIHdpbGwgd2FsayB1cCB0aGVcbiAqIERPTSBpZiBhIG5vZGUncyBzaWJsaW5n
cyBoYXZlIGJlZW4gZXhoYXVzdGVkLlxuICpcbiAqIEBwYXJhbSB7RE9NRWxlbWVudHxET01UZXh0
Tm9kZX0gbm9kZVxuICogQHJldHVybiB7P0RPTUVsZW1lbnR8RE9NVGV4dE5vZGV9XG4gKi9cbmZ1
bmN0aW9uIGdldFNpYmxpbmdOb2RlKG5vZGUpIHtcbiAgd2hpbGUgKG5vZGUpIHtcbiAgICBpZiAo
bm9kZS5uZXh0U2libGluZykge1xuICAgICAgcmV0dXJuIG5vZGUubmV4dFNpYmxpbmc7XG4gICAg
fVxuICAgIG5vZGUgPSBub2RlLnBhcmVudE5vZGU7XG4gIH1cbn1cblxuLyoqXG4gKiBHZXQgb2Jq
ZWN0IGRlc2NyaWJpbmcgdGhlIG5vZGVzIHdoaWNoIGNvbnRhaW4gY2hhcmFjdGVycyBhdCBvZmZz
ZXQuXG4gKlxuICogQHBhcmFtIHtET01FbGVtZW50fERPTVRleHROb2RlfSByb290XG4gKiBAcGFy
YW0ge251bWJlcn0gb2Zmc2V0XG4gKiBAcmV0dXJuIHs/b2JqZWN0fVxuICovXG5mdW5jdGlvbiBn
ZXROb2RlRm9yQ2hhcmFjdGVyT2Zmc2V0KHJvb3QsIG9mZnNldCkge1xuICB2YXIgbm9kZSA9IGdl
dExlYWZOb2RlKHJvb3QpO1xuICB2YXIgbm9kZVN0YXJ0ID0gMDtcbiAgdmFyIG5vZGVFbmQgPSAw
O1xuXG4gIHdoaWxlIChub2RlKSB7XG4gICAgaWYgKG5vZGUubm9kZVR5cGUgPT09IDMpIHtcbiAg
ICAgIG5vZGVFbmQgPSBub2RlU3RhcnQgKyBub2RlLnRleHRDb250ZW50Lmxlbmd0aDtcblxuICAg
ICAgaWYgKG5vZGVTdGFydCA8PSBvZmZzZXQgJiYgbm9kZUVuZCA+PSBvZmZzZXQpIHtcbiAgICAg
ICAgcmV0dXJuIHtcbiAgICAgICAgICBub2RlOiBub2RlLFxuICAgICAgICAgIG9mZnNldDogb2Zm
c2V0IC0gbm9kZVN0YXJ0XG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIG5vZGVTdGFydCA9
IG5vZGVFbmQ7XG4gICAgfVxuXG4gICAgbm9kZSA9IGdldExlYWZOb2RlKGdldFNpYmxpbmdOb2Rl
KG5vZGUpKTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGdldE5vZGVGb3JDaGFyYWN0ZXJP
ZmZzZXQ7XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAu
L34vcmVhY3QtZG9tL2xpYi9nZXROb2RlRm9yQ2hhcmFjdGVyT2Zmc2V0LmpzXG4gKiogbW9kdWxl
IGlkID0gMTgzXG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENvcHlyaWdo
dCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxu
ICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBs
aWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9y
eSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQg
cmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVj
dG9yeS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgRXhlY3V0aW9uRW52aXJvbm1l
bnQgPSByZXF1aXJlKCdmYmpzL2xpYi9FeGVjdXRpb25FbnZpcm9ubWVudCcpO1xuXG4vKipcbiAq
IEdlbmVyYXRlIGEgbWFwcGluZyBvZiBzdGFuZGFyZCB2ZW5kb3IgcHJlZml4ZXMgdXNpbmcgdGhl
IGRlZmluZWQgc3R5bGUgcHJvcGVydHkgYW5kIGV2ZW50IG5hbWUuXG4gKlxuICogQHBhcmFtIHtz
dHJpbmd9IHN0eWxlUHJvcFxuICogQHBhcmFtIHtzdHJpbmd9IGV2ZW50TmFtZVxuICogQHJldHVy
bnMge29iamVjdH1cbiAqL1xuZnVuY3Rpb24gbWFrZVByZWZpeE1hcChzdHlsZVByb3AsIGV2ZW50
TmFtZSkge1xuICB2YXIgcHJlZml4ZXMgPSB7fTtcblxuICBwcmVmaXhlc1tzdHlsZVByb3AudG9M
b3dlckNhc2UoKV0gPSBldmVudE5hbWUudG9Mb3dlckNhc2UoKTtcbiAgcHJlZml4ZXNbJ1dlYmtp
dCcgKyBzdHlsZVByb3BdID0gJ3dlYmtpdCcgKyBldmVudE5hbWU7XG4gIHByZWZpeGVzWydNb3on
ICsgc3R5bGVQcm9wXSA9ICdtb3onICsgZXZlbnROYW1lO1xuICBwcmVmaXhlc1snbXMnICsgc3R5
bGVQcm9wXSA9ICdNUycgKyBldmVudE5hbWU7XG4gIHByZWZpeGVzWydPJyArIHN0eWxlUHJvcF0g
PSAnbycgKyBldmVudE5hbWUudG9Mb3dlckNhc2UoKTtcblxuICByZXR1cm4gcHJlZml4ZXM7XG59
XG5cbi8qKlxuICogQSBsaXN0IG9mIGV2ZW50IG5hbWVzIHRvIGEgY29uZmlndXJhYmxlIGxpc3Qg
b2YgdmVuZG9yIHByZWZpeGVzLlxuICovXG52YXIgdmVuZG9yUHJlZml4ZXMgPSB7XG4gIGFuaW1h
dGlvbmVuZDogbWFrZVByZWZpeE1hcCgnQW5pbWF0aW9uJywgJ0FuaW1hdGlvbkVuZCcpLFxuICBh
bmltYXRpb25pdGVyYXRpb246IG1ha2VQcmVmaXhNYXAoJ0FuaW1hdGlvbicsICdBbmltYXRpb25J
dGVyYXRpb24nKSxcbiAgYW5pbWF0aW9uc3RhcnQ6IG1ha2VQcmVmaXhNYXAoJ0FuaW1hdGlvbics
ICdBbmltYXRpb25TdGFydCcpLFxuICB0cmFuc2l0aW9uZW5kOiBtYWtlUHJlZml4TWFwKCdUcmFu
c2l0aW9uJywgJ1RyYW5zaXRpb25FbmQnKVxufTtcblxuLyoqXG4gKiBFdmVudCBuYW1lcyB0aGF0
IGhhdmUgYWxyZWFkeSBiZWVuIGRldGVjdGVkIGFuZCBwcmVmaXhlZCAoaWYgYXBwbGljYWJsZSku
XG4gKi9cbnZhciBwcmVmaXhlZEV2ZW50TmFtZXMgPSB7fTtcblxuLyoqXG4gKiBFbGVtZW50IHRv
IGNoZWNrIGZvciBwcmVmaXhlcyBvbi5cbiAqL1xudmFyIHN0eWxlID0ge307XG5cbi8qKlxuICog
Qm9vdHN0cmFwIGlmIGEgRE9NIGV4aXN0cy5cbiAqL1xuaWYgKEV4ZWN1dGlvbkVudmlyb25tZW50
LmNhblVzZURPTSkge1xuICBzdHlsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpLnN0
eWxlO1xuXG4gIC8vIE9uIHNvbWUgcGxhdGZvcm1zLCBpbiBwYXJ0aWN1bGFyIHNvbWUgcmVsZWFz
ZXMgb2YgQW5kcm9pZCA0LngsXG4gIC8vIHRoZSB1bi1wcmVmaXhlZCBcImFuaW1hdGlvblwiIGFu
ZCBcInRyYW5zaXRpb25cIiBwcm9wZXJ0aWVzIGFyZSBkZWZpbmVkIG9uIHRoZVxuICAvLyBzdHls
ZSBvYmplY3QgYnV0IHRoZSBldmVudHMgdGhhdCBmaXJlIHdpbGwgc3RpbGwgYmUgcHJlZml4ZWQs
IHNvIHdlIG5lZWRcbiAgLy8gdG8gY2hlY2sgaWYgdGhlIHVuLXByZWZpeGVkIGV2ZW50cyBhcmUg
dXNhYmxlLCBhbmQgaWYgbm90IHJlbW92ZSB0aGVtIGZyb20gdGhlIG1hcC5cbiAgaWYgKCEoJ0Fu
aW1hdGlvbkV2ZW50JyBpbiB3aW5kb3cpKSB7XG4gICAgZGVsZXRlIHZlbmRvclByZWZpeGVzLmFu
aW1hdGlvbmVuZC5hbmltYXRpb247XG4gICAgZGVsZXRlIHZlbmRvclByZWZpeGVzLmFuaW1hdGlv
bml0ZXJhdGlvbi5hbmltYXRpb247XG4gICAgZGVsZXRlIHZlbmRvclByZWZpeGVzLmFuaW1hdGlv
bnN0YXJ0LmFuaW1hdGlvbjtcbiAgfVxuXG4gIC8vIFNhbWUgYXMgYWJvdmVcbiAgaWYgKCEoJ1Ry
YW5zaXRpb25FdmVudCcgaW4gd2luZG93KSkge1xuICAgIGRlbGV0ZSB2ZW5kb3JQcmVmaXhlcy50
cmFuc2l0aW9uZW5kLnRyYW5zaXRpb247XG4gIH1cbn1cblxuLyoqXG4gKiBBdHRlbXB0cyB0byBk
ZXRlcm1pbmUgdGhlIGNvcnJlY3QgdmVuZG9yIHByZWZpeGVkIGV2ZW50IG5hbWUuXG4gKlxuICog
QHBhcmFtIHtzdHJpbmd9IGV2ZW50TmFtZVxuICogQHJldHVybnMge3N0cmluZ31cbiAqL1xuZnVu
Y3Rpb24gZ2V0VmVuZG9yUHJlZml4ZWRFdmVudE5hbWUoZXZlbnROYW1lKSB7XG4gIGlmIChwcmVm
aXhlZEV2ZW50TmFtZXNbZXZlbnROYW1lXSkge1xuICAgIHJldHVybiBwcmVmaXhlZEV2ZW50TmFt
ZXNbZXZlbnROYW1lXTtcbiAgfSBlbHNlIGlmICghdmVuZG9yUHJlZml4ZXNbZXZlbnROYW1lXSkg
e1xuICAgIHJldHVybiBldmVudE5hbWU7XG4gIH1cblxuICB2YXIgcHJlZml4TWFwID0gdmVuZG9y
UHJlZml4ZXNbZXZlbnROYW1lXTtcblxuICBmb3IgKHZhciBzdHlsZVByb3AgaW4gcHJlZml4TWFw
KSB7XG4gICAgaWYgKHByZWZpeE1hcC5oYXNPd25Qcm9wZXJ0eShzdHlsZVByb3ApICYmIHN0eWxl
UHJvcCBpbiBzdHlsZSkge1xuICAgICAgcmV0dXJuIHByZWZpeGVkRXZlbnROYW1lc1tldmVudE5h
bWVdID0gcHJlZml4TWFwW3N0eWxlUHJvcF07XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuICcnO1xu
fVxuXG5tb2R1bGUuZXhwb3J0cyA9IGdldFZlbmRvclByZWZpeGVkRXZlbnROYW1lO1xuXG5cbi8q
KioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0LWRvbS9s
aWIvZ2V0VmVuZG9yUHJlZml4ZWRFdmVudE5hbWUuanNcbiAqKiBtb2R1bGUgaWQgPSAxODRcbiAq
KiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2Vu
dCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBz
b3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQg
aW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291
cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJl
IGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAq
L1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBlc2NhcGVUZXh0Q29udGVudEZvckJyb3dzZXIgPSBy
ZXF1aXJlKCcuL2VzY2FwZVRleHRDb250ZW50Rm9yQnJvd3NlcicpO1xuXG4vKipcbiAqIEVzY2Fw
ZXMgYXR0cmlidXRlIHZhbHVlIHRvIHByZXZlbnQgc2NyaXB0aW5nIGF0dGFja3MuXG4gKlxuICog
QHBhcmFtIHsqfSB2YWx1ZSBWYWx1ZSB0byBlc2NhcGUuXG4gKiBAcmV0dXJuIHtzdHJpbmd9IEFu
IGVzY2FwZWQgc3RyaW5nLlxuICovXG5mdW5jdGlvbiBxdW90ZUF0dHJpYnV0ZVZhbHVlRm9yQnJv
d3Nlcih2YWx1ZSkge1xuICByZXR1cm4gJ1wiJyArIGVzY2FwZVRleHRDb250ZW50Rm9yQnJvd3Nl
cih2YWx1ZSkgKyAnXCInO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHF1b3RlQXR0cmlidXRlVmFs
dWVGb3JCcm93c2VyO1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVS
XG4gKiogLi9+L3JlYWN0LWRvbS9saWIvcXVvdGVBdHRyaWJ1dGVWYWx1ZUZvckJyb3dzZXIuanNc
biAqKiBtb2R1bGUgaWQgPSAxODVcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxu
ICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMg
cmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUg
QlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJv
b3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAq
IG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhl
IHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBSZWFjdE1v
dW50ID0gcmVxdWlyZSgnLi9SZWFjdE1vdW50Jyk7XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RN
b3VudC5yZW5kZXJTdWJ0cmVlSW50b0NvbnRhaW5lcjtcblxuXG4vKioqKioqKioqKioqKioqKipc
biAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFjdC1kb20vbGliL3JlbmRlclN1YnRyZWVJ
bnRvQ29udGFpbmVyLmpzXG4gKiogbW9kdWxlIGlkID0gMTg2XG4gKiogbW9kdWxlIGNodW5rcyA9
IDBcbiAqKi8iLCIndXNlIHN0cmljdCc7XG5cbmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5l
eHBvcnRzLmNyZWF0ZVByb3ZpZGVyID0gY3JlYXRlUHJvdmlkZXI7XG5cbnZhciBfcmVhY3QgPSBy
ZXF1aXJlKCdyZWFjdCcpO1xuXG52YXIgX3Byb3BUeXBlcyA9IHJlcXVpcmUoJ3Byb3AtdHlwZXMn
KTtcblxudmFyIF9wcm9wVHlwZXMyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfcHJvcFR5cGVz
KTtcblxudmFyIF9Qcm9wVHlwZXMgPSByZXF1aXJlKCcuLi91dGlscy9Qcm9wVHlwZXMnKTtcblxu
dmFyIF93YXJuaW5nID0gcmVxdWlyZSgnLi4vdXRpbHMvd2FybmluZycpO1xuXG52YXIgX3dhcm5p
bmcyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfd2FybmluZyk7XG5cbmZ1bmN0aW9uIF9pbnRl
cm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBv
YmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbmZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0
YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3Rv
cikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5j
dGlvblwiKTsgfSB9XG5cbmZ1bmN0aW9uIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHNlbGYs
IGNhbGwpIHsgaWYgKCFzZWxmKSB7IHRocm93IG5ldyBSZWZlcmVuY2VFcnJvcihcInRoaXMgaGFz
bid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZFwiKTsgfSBy
ZXR1cm4gY2FsbCAmJiAodHlwZW9mIGNhbGwgPT09IFwib2JqZWN0XCIgfHwgdHlwZW9mIGNhbGwg
PT09IFwiZnVuY3Rpb25cIikgPyBjYWxsIDogc2VsZjsgfVxuXG5mdW5jdGlvbiBfaW5oZXJpdHMo
c3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIHsgaWYgKHR5cGVvZiBzdXBlckNsYXNzICE9PSBcImZ1bmN0
aW9uXCIgJiYgc3VwZXJDbGFzcyAhPT0gbnVsbCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3Vw
ZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCBcIiAr
IHR5cGVvZiBzdXBlckNsYXNzKTsgfSBzdWJDbGFzcy5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRl
KHN1cGVyQ2xhc3MgJiYgc3VwZXJDbGFzcy5wcm90b3R5cGUsIHsgY29uc3RydWN0b3I6IHsgdmFs
dWU6IHN1YkNsYXNzLCBlbnVtZXJhYmxlOiBmYWxzZSwgd3JpdGFibGU6IHRydWUsIGNvbmZpZ3Vy
YWJsZTogdHJ1ZSB9IH0pOyBpZiAoc3VwZXJDbGFzcykgT2JqZWN0LnNldFByb3RvdHlwZU9mID8g
T2JqZWN0LnNldFByb3RvdHlwZU9mKHN1YkNsYXNzLCBzdXBlckNsYXNzKSA6IHN1YkNsYXNzLl9f
cHJvdG9fXyA9IHN1cGVyQ2xhc3M7IH1cblxudmFyIGRpZFdhcm5BYm91dFJlY2VpdmluZ1N0b3Jl
ID0gZmFsc2U7XG5mdW5jdGlvbiB3YXJuQWJvdXRSZWNlaXZpbmdTdG9yZSgpIHtcbiAgaWYgKGRp
ZFdhcm5BYm91dFJlY2VpdmluZ1N0b3JlKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGRpZFdhcm5B
Ym91dFJlY2VpdmluZ1N0b3JlID0gdHJ1ZTtcblxuICAoMCwgX3dhcm5pbmcyLmRlZmF1bHQpKCc8
UHJvdmlkZXI+IGRvZXMgbm90IHN1cHBvcnQgY2hhbmdpbmcgYHN0b3JlYCBvbiB0aGUgZmx5LiAn
ICsgJ0l0IGlzIG1vc3QgbGlrZWx5IHRoYXQgeW91IHNlZSB0aGlzIGVycm9yIGJlY2F1c2UgeW91
IHVwZGF0ZWQgdG8gJyArICdSZWR1eCAyLnggYW5kIFJlYWN0IFJlZHV4IDIueCB3aGljaCBubyBs
b25nZXIgaG90IHJlbG9hZCByZWR1Y2VycyAnICsgJ2F1dG9tYXRpY2FsbHkuIFNlZSBodHRwczov
L2dpdGh1Yi5jb20vcmVhY3Rqcy9yZWFjdC1yZWR1eC9yZWxlYXNlcy8nICsgJ3RhZy92Mi4wLjAg
Zm9yIHRoZSBtaWdyYXRpb24gaW5zdHJ1Y3Rpb25zLicpO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVQ
cm92aWRlcigpIHtcbiAgdmFyIF9Qcm92aWRlciRjaGlsZENvbnRleDtcblxuICB2YXIgc3RvcmVL
ZXkgPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiBhcmd1bWVudHNbMF0gIT09IHVuZGVmaW5lZCA/
IGFyZ3VtZW50c1swXSA6ICdzdG9yZSc7XG4gIHZhciBzdWJLZXkgPSBhcmd1bWVudHNbMV07XG5c
biAgdmFyIHN1YnNjcmlwdGlvbktleSA9IHN1YktleSB8fCBzdG9yZUtleSArICdTdWJzY3JpcHRp
b24nO1xuXG4gIHZhciBQcm92aWRlciA9IGZ1bmN0aW9uIChfQ29tcG9uZW50KSB7XG4gICAgX2lu
aGVyaXRzKFByb3ZpZGVyLCBfQ29tcG9uZW50KTtcblxuICAgIFByb3ZpZGVyLnByb3RvdHlwZS5n
ZXRDaGlsZENvbnRleHQgPSBmdW5jdGlvbiBnZXRDaGlsZENvbnRleHQoKSB7XG4gICAgICB2YXIg
X3JlZjtcblxuICAgICAgcmV0dXJuIF9yZWYgPSB7fSwgX3JlZltzdG9yZUtleV0gPSB0aGlzW3N0
b3JlS2V5XSwgX3JlZltzdWJzY3JpcHRpb25LZXldID0gbnVsbCwgX3JlZjtcbiAgICB9O1xuXG4g
ICAgZnVuY3Rpb24gUHJvdmlkZXIocHJvcHMsIGNvbnRleHQpIHtcbiAgICAgIF9jbGFzc0NhbGxD
aGVjayh0aGlzLCBQcm92aWRlcik7XG5cbiAgICAgIHZhciBfdGhpcyA9IF9wb3NzaWJsZUNvbnN0
cnVjdG9yUmV0dXJuKHRoaXMsIF9Db21wb25lbnQuY2FsbCh0aGlzLCBwcm9wcywgY29udGV4dCkp
O1xuXG4gICAgICBfdGhpc1tzdG9yZUtleV0gPSBwcm9wcy5zdG9yZTtcbiAgICAgIHJldHVybiBf
dGhpcztcbiAgICB9XG5cbiAgICBQcm92aWRlci5wcm90b3R5cGUucmVuZGVyID0gZnVuY3Rpb24g
cmVuZGVyKCkge1xuICAgICAgcmV0dXJuIF9yZWFjdC5DaGlsZHJlbi5vbmx5KHRoaXMucHJvcHMu
Y2hpbGRyZW4pO1xuICAgIH07XG5cbiAgICByZXR1cm4gUHJvdmlkZXI7XG4gIH0oX3JlYWN0LkNv
bXBvbmVudCk7XG5cbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicp
IHtcbiAgICBQcm92aWRlci5wcm90b3R5cGUuY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyA9IGZ1
bmN0aW9uIChuZXh0UHJvcHMpIHtcbiAgICAgIGlmICh0aGlzW3N0b3JlS2V5XSAhPT0gbmV4dFBy
b3BzLnN0b3JlKSB7XG4gICAgICAgIHdhcm5BYm91dFJlY2VpdmluZ1N0b3JlKCk7XG4gICAgICB9
XG4gICAgfTtcbiAgfVxuXG4gIFByb3ZpZGVyLnByb3BUeXBlcyA9IHtcbiAgICBzdG9yZTogX1By
b3BUeXBlcy5zdG9yZVNoYXBlLmlzUmVxdWlyZWQsXG4gICAgY2hpbGRyZW46IF9wcm9wVHlwZXMy
LmRlZmF1bHQuZWxlbWVudC5pc1JlcXVpcmVkXG4gIH07XG4gIFByb3ZpZGVyLmNoaWxkQ29udGV4
dFR5cGVzID0gKF9Qcm92aWRlciRjaGlsZENvbnRleCA9IHt9LCBfUHJvdmlkZXIkY2hpbGRDb250
ZXhbc3RvcmVLZXldID0gX1Byb3BUeXBlcy5zdG9yZVNoYXBlLmlzUmVxdWlyZWQsIF9Qcm92aWRl
ciRjaGlsZENvbnRleFtzdWJzY3JpcHRpb25LZXldID0gX1Byb3BUeXBlcy5zdWJzY3JpcHRpb25T
aGFwZSwgX1Byb3ZpZGVyJGNoaWxkQ29udGV4KTtcblxuICByZXR1cm4gUHJvdmlkZXI7XG59XG5c
bmV4cG9ydHMuZGVmYXVsdCA9IGNyZWF0ZVByb3ZpZGVyKCk7XG5cblxuLyoqKioqKioqKioqKioq
KioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3QtcmVkdXgvbGliL2NvbXBvbmVu
dHMvUHJvdmlkZXIuanNcbiAqKiBtb2R1bGUgaWQgPSAxODdcbiAqKiBtb2R1bGUgY2h1bmtzID0g
MFxuICoqLyIsIid1c2Ugc3RyaWN0JztcblxuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcblxu
dmFyIF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiAodGFyZ2V0KSB7IGZvciAo
dmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1
bWVudHNbaV07IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsgaWYgKE9iamVjdC5wcm90b3R5cGUu
aGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vb
a2V5XTsgfSB9IH0gcmV0dXJuIHRhcmdldDsgfTtcblxuZXhwb3J0cy5jcmVhdGVDb25uZWN0ID0g
Y3JlYXRlQ29ubmVjdDtcblxudmFyIF9jb25uZWN0QWR2YW5jZWQgPSByZXF1aXJlKCcuLi9jb21w
b25lbnRzL2Nvbm5lY3RBZHZhbmNlZCcpO1xuXG52YXIgX2Nvbm5lY3RBZHZhbmNlZDIgPSBfaW50
ZXJvcFJlcXVpcmVEZWZhdWx0KF9jb25uZWN0QWR2YW5jZWQpO1xuXG52YXIgX3NoYWxsb3dFcXVh
bCA9IHJlcXVpcmUoJy4uL3V0aWxzL3NoYWxsb3dFcXVhbCcpO1xuXG52YXIgX3NoYWxsb3dFcXVh
bDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9zaGFsbG93RXF1YWwpO1xuXG52YXIgX21hcERp
c3BhdGNoVG9Qcm9wcyA9IHJlcXVpcmUoJy4vbWFwRGlzcGF0Y2hUb1Byb3BzJyk7XG5cbnZhciBf
bWFwRGlzcGF0Y2hUb1Byb3BzMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX21hcERpc3BhdGNo
VG9Qcm9wcyk7XG5cbnZhciBfbWFwU3RhdGVUb1Byb3BzID0gcmVxdWlyZSgnLi9tYXBTdGF0ZVRv
UHJvcHMnKTtcblxudmFyIF9tYXBTdGF0ZVRvUHJvcHMyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVs
dChfbWFwU3RhdGVUb1Byb3BzKTtcblxudmFyIF9tZXJnZVByb3BzID0gcmVxdWlyZSgnLi9tZXJn
ZVByb3BzJyk7XG5cbnZhciBfbWVyZ2VQcm9wczIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9t
ZXJnZVByb3BzKTtcblxudmFyIF9zZWxlY3RvckZhY3RvcnkgPSByZXF1aXJlKCcuL3NlbGVjdG9y
RmFjdG9yeScpO1xuXG52YXIgX3NlbGVjdG9yRmFjdG9yeTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZh
dWx0KF9zZWxlY3RvckZhY3RvcnkpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0
KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBv
YmogfTsgfVxuXG5mdW5jdGlvbiBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMob2JqLCBrZXlzKSB7
IHZhciB0YXJnZXQgPSB7fTsgZm9yICh2YXIgaSBpbiBvYmopIHsgaWYgKGtleXMuaW5kZXhPZihp
KSA+PSAwKSBjb250aW51ZTsgaWYgKCFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNh
bGwob2JqLCBpKSkgY29udGludWU7IHRhcmdldFtpXSA9IG9ialtpXTsgfSByZXR1cm4gdGFyZ2V0
OyB9XG5cbi8qXG4gIGNvbm5lY3QgaXMgYSBmYWNhZGUgb3ZlciBjb25uZWN0QWR2YW5jZWQuIEl0
IHR1cm5zIGl0cyBhcmdzIGludG8gYSBjb21wYXRpYmxlXG4gIHNlbGVjdG9yRmFjdG9yeSwgd2hp
Y2ggaGFzIHRoZSBzaWduYXR1cmU6XG5cbiAgICAoZGlzcGF0Y2gsIG9wdGlvbnMpID0+IChuZXh0
U3RhdGUsIG5leHRPd25Qcm9wcykgPT4gbmV4dEZpbmFsUHJvcHNcbiAgXG4gIGNvbm5lY3QgcGFz
c2VzIGl0cyBhcmdzIHRvIGNvbm5lY3RBZHZhbmNlZCBhcyBvcHRpb25zLCB3aGljaCB3aWxsIGlu
IHR1cm4gcGFzcyB0aGVtIHRvXG4gIHNlbGVjdG9yRmFjdG9yeSBlYWNoIHRpbWUgYSBDb25uZWN0
IGNvbXBvbmVudCBpbnN0YW5jZSBpcyBpbnN0YW50aWF0ZWQgb3IgaG90IHJlbG9hZGVkLlxuXG4g
IHNlbGVjdG9yRmFjdG9yeSByZXR1cm5zIGEgZmluYWwgcHJvcHMgc2VsZWN0b3IgZnJvbSBpdHMg
bWFwU3RhdGVUb1Byb3BzLFxuICBtYXBTdGF0ZVRvUHJvcHNGYWN0b3JpZXMsIG1hcERpc3BhdGNo
VG9Qcm9wcywgbWFwRGlzcGF0Y2hUb1Byb3BzRmFjdG9yaWVzLCBtZXJnZVByb3BzLFxuICBtZXJn
ZVByb3BzRmFjdG9yaWVzLCBhbmQgcHVyZSBhcmdzLlxuXG4gIFRoZSByZXN1bHRpbmcgZmluYWwg
cHJvcHMgc2VsZWN0b3IgaXMgY2FsbGVkIGJ5IHRoZSBDb25uZWN0IGNvbXBvbmVudCBpbnN0YW5j
ZSB3aGVuZXZlclxuICBpdCByZWNlaXZlcyBuZXcgcHJvcHMgb3Igc3RvcmUgc3RhdGUuXG4gKi9c
blxuZnVuY3Rpb24gbWF0Y2goYXJnLCBmYWN0b3JpZXMsIG5hbWUpIHtcbiAgZm9yICh2YXIgaSA9
IGZhY3Rvcmllcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgIHZhciByZXN1bHQgPSBm
YWN0b3JpZXNbaV0oYXJnKTtcbiAgICBpZiAocmVzdWx0KSByZXR1cm4gcmVzdWx0O1xuICB9XG5c
biAgcmV0dXJuIGZ1bmN0aW9uIChkaXNwYXRjaCwgb3B0aW9ucykge1xuICAgIHRocm93IG5ldyBF
cnJvcignSW52YWxpZCB2YWx1ZSBvZiB0eXBlICcgKyB0eXBlb2YgYXJnICsgJyBmb3IgJyArIG5h
bWUgKyAnIGFyZ3VtZW50IHdoZW4gY29ubmVjdGluZyBjb21wb25lbnQgJyArIG9wdGlvbnMud3Jh
cHBlZENvbXBvbmVudE5hbWUgKyAnLicpO1xuICB9O1xufVxuXG5mdW5jdGlvbiBzdHJpY3RFcXVh
bChhLCBiKSB7XG4gIHJldHVybiBhID09PSBiO1xufVxuXG4vLyBjcmVhdGVDb25uZWN0IHdpdGgg
ZGVmYXVsdCBhcmdzIGJ1aWxkcyB0aGUgJ29mZmljaWFsJyBjb25uZWN0IGJlaGF2aW9yLiBDYWxs
aW5nIGl0IHdpdGhcbi8vIGRpZmZlcmVudCBvcHRpb25zIG9wZW5zIHVwIHNvbWUgdGVzdGluZyBh
bmQgZXh0ZW5zaWJpbGl0eSBzY2VuYXJpb3NcbmZ1bmN0aW9uIGNyZWF0ZUNvbm5lY3QoKSB7XG4g
IHZhciBfcmVmID0gYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgYXJndW1lbnRzWzBdICE9PSB1bmRl
ZmluZWQgPyBhcmd1bWVudHNbMF0gOiB7fSxcbiAgICAgIF9yZWYkY29ubmVjdEhPQyA9IF9yZWYu
Y29ubmVjdEhPQyxcbiAgICAgIGNvbm5lY3RIT0MgPSBfcmVmJGNvbm5lY3RIT0MgPT09IHVuZGVm
aW5lZCA/IF9jb25uZWN0QWR2YW5jZWQyLmRlZmF1bHQgOiBfcmVmJGNvbm5lY3RIT0MsXG4gICAg
ICBfcmVmJG1hcFN0YXRlVG9Qcm9wc0YgPSBfcmVmLm1hcFN0YXRlVG9Qcm9wc0ZhY3Rvcmllcyxc
biAgICAgIG1hcFN0YXRlVG9Qcm9wc0ZhY3RvcmllcyA9IF9yZWYkbWFwU3RhdGVUb1Byb3BzRiA9
PT0gdW5kZWZpbmVkID8gX21hcFN0YXRlVG9Qcm9wczIuZGVmYXVsdCA6IF9yZWYkbWFwU3RhdGVU
b1Byb3BzRixcbiAgICAgIF9yZWYkbWFwRGlzcGF0Y2hUb1BybyA9IF9yZWYubWFwRGlzcGF0Y2hU
b1Byb3BzRmFjdG9yaWVzLFxuICAgICAgbWFwRGlzcGF0Y2hUb1Byb3BzRmFjdG9yaWVzID0gX3Jl
ZiRtYXBEaXNwYXRjaFRvUHJvID09PSB1bmRlZmluZWQgPyBfbWFwRGlzcGF0Y2hUb1Byb3BzMi5k
ZWZhdWx0IDogX3JlZiRtYXBEaXNwYXRjaFRvUHJvLFxuICAgICAgX3JlZiRtZXJnZVByb3BzRmFj
dG9yID0gX3JlZi5tZXJnZVByb3BzRmFjdG9yaWVzLFxuICAgICAgbWVyZ2VQcm9wc0ZhY3Rvcmll
cyA9IF9yZWYkbWVyZ2VQcm9wc0ZhY3RvciA9PT0gdW5kZWZpbmVkID8gX21lcmdlUHJvcHMyLmRl
ZmF1bHQgOiBfcmVmJG1lcmdlUHJvcHNGYWN0b3IsXG4gICAgICBfcmVmJHNlbGVjdG9yRmFjdG9y
eSA9IF9yZWYuc2VsZWN0b3JGYWN0b3J5LFxuICAgICAgc2VsZWN0b3JGYWN0b3J5ID0gX3JlZiRz
ZWxlY3RvckZhY3RvcnkgPT09IHVuZGVmaW5lZCA/IF9zZWxlY3RvckZhY3RvcnkyLmRlZmF1bHQg
OiBfcmVmJHNlbGVjdG9yRmFjdG9yeTtcblxuICByZXR1cm4gZnVuY3Rpb24gY29ubmVjdChtYXBT
dGF0ZVRvUHJvcHMsIG1hcERpc3BhdGNoVG9Qcm9wcywgbWVyZ2VQcm9wcykge1xuICAgIHZhciBf
cmVmMiA9IGFyZ3VtZW50cy5sZW5ndGggPiAzICYmIGFyZ3VtZW50c1szXSAhPT0gdW5kZWZpbmVk
ID8gYXJndW1lbnRzWzNdIDoge30sXG4gICAgICAgIF9yZWYyJHB1cmUgPSBfcmVmMi5wdXJlLFxu
ICAgICAgICBwdXJlID0gX3JlZjIkcHVyZSA9PT0gdW5kZWZpbmVkID8gdHJ1ZSA6IF9yZWYyJHB1
cmUsXG4gICAgICAgIF9yZWYyJGFyZVN0YXRlc0VxdWFsID0gX3JlZjIuYXJlU3RhdGVzRXF1YWws
XG4gICAgICAgIGFyZVN0YXRlc0VxdWFsID0gX3JlZjIkYXJlU3RhdGVzRXF1YWwgPT09IHVuZGVm
aW5lZCA/IHN0cmljdEVxdWFsIDogX3JlZjIkYXJlU3RhdGVzRXF1YWwsXG4gICAgICAgIF9yZWYy
JGFyZU93blByb3BzRXF1YSA9IF9yZWYyLmFyZU93blByb3BzRXF1YWwsXG4gICAgICAgIGFyZU93
blByb3BzRXF1YWwgPSBfcmVmMiRhcmVPd25Qcm9wc0VxdWEgPT09IHVuZGVmaW5lZCA/IF9zaGFs
bG93RXF1YWwyLmRlZmF1bHQgOiBfcmVmMiRhcmVPd25Qcm9wc0VxdWEsXG4gICAgICAgIF9yZWYy
JGFyZVN0YXRlUHJvcHNFcSA9IF9yZWYyLmFyZVN0YXRlUHJvcHNFcXVhbCxcbiAgICAgICAgYXJl
U3RhdGVQcm9wc0VxdWFsID0gX3JlZjIkYXJlU3RhdGVQcm9wc0VxID09PSB1bmRlZmluZWQgPyBf
c2hhbGxvd0VxdWFsMi5kZWZhdWx0IDogX3JlZjIkYXJlU3RhdGVQcm9wc0VxLFxuICAgICAgICBf
cmVmMiRhcmVNZXJnZWRQcm9wc0UgPSBfcmVmMi5hcmVNZXJnZWRQcm9wc0VxdWFsLFxuICAgICAg
ICBhcmVNZXJnZWRQcm9wc0VxdWFsID0gX3JlZjIkYXJlTWVyZ2VkUHJvcHNFID09PSB1bmRlZmlu
ZWQgPyBfc2hhbGxvd0VxdWFsMi5kZWZhdWx0IDogX3JlZjIkYXJlTWVyZ2VkUHJvcHNFLFxuICAg
ICAgICBleHRyYU9wdGlvbnMgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMoX3JlZjIsIFsncHVy
ZScsICdhcmVTdGF0ZXNFcXVhbCcsICdhcmVPd25Qcm9wc0VxdWFsJywgJ2FyZVN0YXRlUHJvcHNF
cXVhbCcsICdhcmVNZXJnZWRQcm9wc0VxdWFsJ10pO1xuXG4gICAgdmFyIGluaXRNYXBTdGF0ZVRv
UHJvcHMgPSBtYXRjaChtYXBTdGF0ZVRvUHJvcHMsIG1hcFN0YXRlVG9Qcm9wc0ZhY3Rvcmllcywg
J21hcFN0YXRlVG9Qcm9wcycpO1xuICAgIHZhciBpbml0TWFwRGlzcGF0Y2hUb1Byb3BzID0gbWF0
Y2gobWFwRGlzcGF0Y2hUb1Byb3BzLCBtYXBEaXNwYXRjaFRvUHJvcHNGYWN0b3JpZXMsICdtYXBE
aXNwYXRjaFRvUHJvcHMnKTtcbiAgICB2YXIgaW5pdE1lcmdlUHJvcHMgPSBtYXRjaChtZXJnZVBy
b3BzLCBtZXJnZVByb3BzRmFjdG9yaWVzLCAnbWVyZ2VQcm9wcycpO1xuXG4gICAgcmV0dXJuIGNv
bm5lY3RIT0Moc2VsZWN0b3JGYWN0b3J5LCBfZXh0ZW5kcyh7XG4gICAgICAvLyB1c2VkIGluIGVy
cm9yIG1lc3NhZ2VzXG4gICAgICBtZXRob2ROYW1lOiAnY29ubmVjdCcsXG5cbiAgICAgIC8vIHVz
ZWQgdG8gY29tcHV0ZSBDb25uZWN0J3MgZGlzcGxheU5hbWUgZnJvbSB0aGUgd3JhcHBlZCBjb21w
b25lbnQncyBkaXNwbGF5TmFtZS5cbiAgICAgIGdldERpc3BsYXlOYW1lOiBmdW5jdGlvbiBnZXRE
aXNwbGF5TmFtZShuYW1lKSB7XG4gICAgICAgIHJldHVybiAnQ29ubmVjdCgnICsgbmFtZSArICcp
JztcbiAgICAgIH0sXG5cbiAgICAgIC8vIGlmIG1hcFN0YXRlVG9Qcm9wcyBpcyBmYWxzeSwgdGhl
IENvbm5lY3QgY29tcG9uZW50IGRvZXNuJ3Qgc3Vic2NyaWJlIHRvIHN0b3JlIHN0YXRlIGNoYW5n
ZXNcbiAgICAgIHNob3VsZEhhbmRsZVN0YXRlQ2hhbmdlczogQm9vbGVhbihtYXBTdGF0ZVRvUHJv
cHMpLFxuXG4gICAgICAvLyBwYXNzZWQgdGhyb3VnaCB0byBzZWxlY3RvckZhY3RvcnlcbiAgICAg
IGluaXRNYXBTdGF0ZVRvUHJvcHM6IGluaXRNYXBTdGF0ZVRvUHJvcHMsXG4gICAgICBpbml0TWFw
RGlzcGF0Y2hUb1Byb3BzOiBpbml0TWFwRGlzcGF0Y2hUb1Byb3BzLFxuICAgICAgaW5pdE1lcmdl
UHJvcHM6IGluaXRNZXJnZVByb3BzLFxuICAgICAgcHVyZTogcHVyZSxcbiAgICAgIGFyZVN0YXRl
c0VxdWFsOiBhcmVTdGF0ZXNFcXVhbCxcbiAgICAgIGFyZU93blByb3BzRXF1YWw6IGFyZU93blBy
b3BzRXF1YWwsXG4gICAgICBhcmVTdGF0ZVByb3BzRXF1YWw6IGFyZVN0YXRlUHJvcHNFcXVhbCxc
biAgICAgIGFyZU1lcmdlZFByb3BzRXF1YWw6IGFyZU1lcmdlZFByb3BzRXF1YWxcblxuICAgIH0s
IGV4dHJhT3B0aW9ucykpO1xuICB9O1xufVxuXG5leHBvcnRzLmRlZmF1bHQgPSBjcmVhdGVDb25u
ZWN0KCk7XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAu
L34vcmVhY3QtcmVkdXgvbGliL2Nvbm5lY3QvY29ubmVjdC5qc1xuICoqIG1vZHVsZSBpZCA9IDE4
OFxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiJ3VzZSBzdHJpY3QnO1xuXG5leHBvcnRz
Ll9fZXNNb2R1bGUgPSB0cnVlO1xuZXhwb3J0cy53aGVuTWFwRGlzcGF0Y2hUb1Byb3BzSXNGdW5j
dGlvbiA9IHdoZW5NYXBEaXNwYXRjaFRvUHJvcHNJc0Z1bmN0aW9uO1xuZXhwb3J0cy53aGVuTWFw
RGlzcGF0Y2hUb1Byb3BzSXNNaXNzaW5nID0gd2hlbk1hcERpc3BhdGNoVG9Qcm9wc0lzTWlzc2lu
ZztcbmV4cG9ydHMud2hlbk1hcERpc3BhdGNoVG9Qcm9wc0lzT2JqZWN0ID0gd2hlbk1hcERpc3Bh
dGNoVG9Qcm9wc0lzT2JqZWN0O1xuXG52YXIgX3JlZHV4ID0gcmVxdWlyZSgncmVkdXgnKTtcblxu
dmFyIF93cmFwTWFwVG9Qcm9wcyA9IHJlcXVpcmUoJy4vd3JhcE1hcFRvUHJvcHMnKTtcblxuZnVu
Y3Rpb24gd2hlbk1hcERpc3BhdGNoVG9Qcm9wc0lzRnVuY3Rpb24obWFwRGlzcGF0Y2hUb1Byb3Bz
KSB7XG4gIHJldHVybiB0eXBlb2YgbWFwRGlzcGF0Y2hUb1Byb3BzID09PSAnZnVuY3Rpb24nID8g
KDAsIF93cmFwTWFwVG9Qcm9wcy53cmFwTWFwVG9Qcm9wc0Z1bmMpKG1hcERpc3BhdGNoVG9Qcm9w
cywgJ21hcERpc3BhdGNoVG9Qcm9wcycpIDogdW5kZWZpbmVkO1xufVxuXG5mdW5jdGlvbiB3aGVu
TWFwRGlzcGF0Y2hUb1Byb3BzSXNNaXNzaW5nKG1hcERpc3BhdGNoVG9Qcm9wcykge1xuICByZXR1
cm4gIW1hcERpc3BhdGNoVG9Qcm9wcyA/ICgwLCBfd3JhcE1hcFRvUHJvcHMud3JhcE1hcFRvUHJv
cHNDb25zdGFudCkoZnVuY3Rpb24gKGRpc3BhdGNoKSB7XG4gICAgcmV0dXJuIHsgZGlzcGF0Y2g6
IGRpc3BhdGNoIH07XG4gIH0pIDogdW5kZWZpbmVkO1xufVxuXG5mdW5jdGlvbiB3aGVuTWFwRGlz
cGF0Y2hUb1Byb3BzSXNPYmplY3QobWFwRGlzcGF0Y2hUb1Byb3BzKSB7XG4gIHJldHVybiBtYXBE
aXNwYXRjaFRvUHJvcHMgJiYgdHlwZW9mIG1hcERpc3BhdGNoVG9Qcm9wcyA9PT0gJ29iamVjdCcg
PyAoMCwgX3dyYXBNYXBUb1Byb3BzLndyYXBNYXBUb1Byb3BzQ29uc3RhbnQpKGZ1bmN0aW9uIChk
aXNwYXRjaCkge1xuICAgIHJldHVybiAoMCwgX3JlZHV4LmJpbmRBY3Rpb25DcmVhdG9ycykobWFw
RGlzcGF0Y2hUb1Byb3BzLCBkaXNwYXRjaCk7XG4gIH0pIDogdW5kZWZpbmVkO1xufVxuXG5leHBv
cnRzLmRlZmF1bHQgPSBbd2hlbk1hcERpc3BhdGNoVG9Qcm9wc0lzRnVuY3Rpb24sIHdoZW5NYXBE
aXNwYXRjaFRvUHJvcHNJc01pc3NpbmcsIHdoZW5NYXBEaXNwYXRjaFRvUHJvcHNJc09iamVjdF07
XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVh
Y3QtcmVkdXgvbGliL2Nvbm5lY3QvbWFwRGlzcGF0Y2hUb1Byb3BzLmpzXG4gKiogbW9kdWxlIGlk
ID0gMTg5XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIndXNlIHN0cmljdCc7XG5cbmV4
cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5leHBvcnRzLndoZW5NYXBTdGF0ZVRvUHJvcHNJc0Z1
bmN0aW9uID0gd2hlbk1hcFN0YXRlVG9Qcm9wc0lzRnVuY3Rpb247XG5leHBvcnRzLndoZW5NYXBT
dGF0ZVRvUHJvcHNJc01pc3NpbmcgPSB3aGVuTWFwU3RhdGVUb1Byb3BzSXNNaXNzaW5nO1xuXG52
YXIgX3dyYXBNYXBUb1Byb3BzID0gcmVxdWlyZSgnLi93cmFwTWFwVG9Qcm9wcycpO1xuXG5mdW5j
dGlvbiB3aGVuTWFwU3RhdGVUb1Byb3BzSXNGdW5jdGlvbihtYXBTdGF0ZVRvUHJvcHMpIHtcbiAg
cmV0dXJuIHR5cGVvZiBtYXBTdGF0ZVRvUHJvcHMgPT09ICdmdW5jdGlvbicgPyAoMCwgX3dyYXBN
YXBUb1Byb3BzLndyYXBNYXBUb1Byb3BzRnVuYykobWFwU3RhdGVUb1Byb3BzLCAnbWFwU3RhdGVU
b1Byb3BzJykgOiB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIHdoZW5NYXBTdGF0ZVRvUHJvcHNJ
c01pc3NpbmcobWFwU3RhdGVUb1Byb3BzKSB7XG4gIHJldHVybiAhbWFwU3RhdGVUb1Byb3BzID8g
KDAsIF93cmFwTWFwVG9Qcm9wcy53cmFwTWFwVG9Qcm9wc0NvbnN0YW50KShmdW5jdGlvbiAoKSB7
XG4gICAgcmV0dXJuIHt9O1xuICB9KSA6IHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0cy5kZWZhdWx0
ID0gW3doZW5NYXBTdGF0ZVRvUHJvcHNJc0Z1bmN0aW9uLCB3aGVuTWFwU3RhdGVUb1Byb3BzSXNN
aXNzaW5nXTtcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoq
IC4vfi9yZWFjdC1yZWR1eC9saWIvY29ubmVjdC9tYXBTdGF0ZVRvUHJvcHMuanNcbiAqKiBtb2R1
bGUgaWQgPSAxOTBcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIid1c2Ugc3RyaWN0Jztc
blxuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcblxudmFyIF9leHRlbmRzID0gT2JqZWN0LmFz
c2lnbiB8fCBmdW5jdGlvbiAodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRz
Lmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07IGZvciAodmFyIGtleSBp
biBzb3VyY2UpIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3Vy
Y2UsIGtleSkpIHsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IH0gcmV0dXJuIHRhcmdl
dDsgfTtcblxuZXhwb3J0cy5kZWZhdWx0TWVyZ2VQcm9wcyA9IGRlZmF1bHRNZXJnZVByb3BzO1xu
ZXhwb3J0cy53cmFwTWVyZ2VQcm9wc0Z1bmMgPSB3cmFwTWVyZ2VQcm9wc0Z1bmM7XG5leHBvcnRz
LndoZW5NZXJnZVByb3BzSXNGdW5jdGlvbiA9IHdoZW5NZXJnZVByb3BzSXNGdW5jdGlvbjtcbmV4
cG9ydHMud2hlbk1lcmdlUHJvcHNJc09taXR0ZWQgPSB3aGVuTWVyZ2VQcm9wc0lzT21pdHRlZDtc
blxudmFyIF92ZXJpZnlQbGFpbk9iamVjdCA9IHJlcXVpcmUoJy4uL3V0aWxzL3ZlcmlmeVBsYWlu
T2JqZWN0Jyk7XG5cbnZhciBfdmVyaWZ5UGxhaW5PYmplY3QyID0gX2ludGVyb3BSZXF1aXJlRGVm
YXVsdChfdmVyaWZ5UGxhaW5PYmplY3QpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZh
dWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0
OiBvYmogfTsgfVxuXG5mdW5jdGlvbiBkZWZhdWx0TWVyZ2VQcm9wcyhzdGF0ZVByb3BzLCBkaXNw
YXRjaFByb3BzLCBvd25Qcm9wcykge1xuICByZXR1cm4gX2V4dGVuZHMoe30sIG93blByb3BzLCBz
dGF0ZVByb3BzLCBkaXNwYXRjaFByb3BzKTtcbn1cblxuZnVuY3Rpb24gd3JhcE1lcmdlUHJvcHNG
dW5jKG1lcmdlUHJvcHMpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIGluaXRNZXJnZVByb3BzUHJveHko
ZGlzcGF0Y2gsIF9yZWYpIHtcbiAgICB2YXIgZGlzcGxheU5hbWUgPSBfcmVmLmRpc3BsYXlOYW1l
LFxuICAgICAgICBwdXJlID0gX3JlZi5wdXJlLFxuICAgICAgICBhcmVNZXJnZWRQcm9wc0VxdWFs
ID0gX3JlZi5hcmVNZXJnZWRQcm9wc0VxdWFsO1xuXG4gICAgdmFyIGhhc1J1bk9uY2UgPSBmYWxz
ZTtcbiAgICB2YXIgbWVyZ2VkUHJvcHMgPSB2b2lkIDA7XG5cbiAgICByZXR1cm4gZnVuY3Rpb24g
bWVyZ2VQcm9wc1Byb3h5KHN0YXRlUHJvcHMsIGRpc3BhdGNoUHJvcHMsIG93blByb3BzKSB7XG4g
ICAgICB2YXIgbmV4dE1lcmdlZFByb3BzID0gbWVyZ2VQcm9wcyhzdGF0ZVByb3BzLCBkaXNwYXRj
aFByb3BzLCBvd25Qcm9wcyk7XG5cbiAgICAgIGlmIChoYXNSdW5PbmNlKSB7XG4gICAgICAgIGlm
ICghcHVyZSB8fCAhYXJlTWVyZ2VkUHJvcHNFcXVhbChuZXh0TWVyZ2VkUHJvcHMsIG1lcmdlZFBy
b3BzKSkgbWVyZ2VkUHJvcHMgPSBuZXh0TWVyZ2VkUHJvcHM7XG4gICAgICB9IGVsc2Uge1xuICAg
ICAgICBoYXNSdW5PbmNlID0gdHJ1ZTtcbiAgICAgICAgbWVyZ2VkUHJvcHMgPSBuZXh0TWVyZ2Vk
UHJvcHM7XG5cbiAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlv
bicpICgwLCBfdmVyaWZ5UGxhaW5PYmplY3QyLmRlZmF1bHQpKG1lcmdlZFByb3BzLCBkaXNwbGF5
TmFtZSwgJ21lcmdlUHJvcHMnKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG1lcmdlZFByb3Bz
O1xuICAgIH07XG4gIH07XG59XG5cbmZ1bmN0aW9uIHdoZW5NZXJnZVByb3BzSXNGdW5jdGlvbiht
ZXJnZVByb3BzKSB7XG4gIHJldHVybiB0eXBlb2YgbWVyZ2VQcm9wcyA9PT0gJ2Z1bmN0aW9uJyA/
IHdyYXBNZXJnZVByb3BzRnVuYyhtZXJnZVByb3BzKSA6IHVuZGVmaW5lZDtcbn1cblxuZnVuY3Rp
b24gd2hlbk1lcmdlUHJvcHNJc09taXR0ZWQobWVyZ2VQcm9wcykge1xuICByZXR1cm4gIW1lcmdl
UHJvcHMgPyBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIGRlZmF1bHRNZXJnZVByb3BzO1xuICB9
IDogdW5kZWZpbmVkO1xufVxuXG5leHBvcnRzLmRlZmF1bHQgPSBbd2hlbk1lcmdlUHJvcHNJc0Z1
bmN0aW9uLCB3aGVuTWVyZ2VQcm9wc0lzT21pdHRlZF07XG5cblxuLyoqKioqKioqKioqKioqKioq
XG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3QtcmVkdXgvbGliL2Nvbm5lY3QvbWVy
Z2VQcm9wcy5qc1xuICoqIG1vZHVsZSBpZCA9IDE5MVxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4g
KiovIiwiJ3VzZSBzdHJpY3QnO1xuXG5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuZXhwb3J0
cy5pbXB1cmVGaW5hbFByb3BzU2VsZWN0b3JGYWN0b3J5ID0gaW1wdXJlRmluYWxQcm9wc1NlbGVj
dG9yRmFjdG9yeTtcbmV4cG9ydHMucHVyZUZpbmFsUHJvcHNTZWxlY3RvckZhY3RvcnkgPSBwdXJl
RmluYWxQcm9wc1NlbGVjdG9yRmFjdG9yeTtcbmV4cG9ydHMuZGVmYXVsdCA9IGZpbmFsUHJvcHNT
ZWxlY3RvckZhY3Rvcnk7XG5cbnZhciBfdmVyaWZ5U3Vic2VsZWN0b3JzID0gcmVxdWlyZSgnLi92
ZXJpZnlTdWJzZWxlY3RvcnMnKTtcblxudmFyIF92ZXJpZnlTdWJzZWxlY3RvcnMyID0gX2ludGVy
b3BSZXF1aXJlRGVmYXVsdChfdmVyaWZ5U3Vic2VsZWN0b3JzKTtcblxuZnVuY3Rpb24gX2ludGVy
b3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9i
aiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxuZnVuY3Rpb24gX29iamVjdFdpdGhvdXRQcm9wZXJ0
aWVzKG9iaiwga2V5cykgeyB2YXIgdGFyZ2V0ID0ge307IGZvciAodmFyIGkgaW4gb2JqKSB7IGlm
IChrZXlzLmluZGV4T2YoaSkgPj0gMCkgY29udGludWU7IGlmICghT2JqZWN0LnByb3RvdHlwZS5o
YXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgaSkpIGNvbnRpbnVlOyB0YXJnZXRbaV0gPSBvYmpbaV07
IH0gcmV0dXJuIHRhcmdldDsgfVxuXG5mdW5jdGlvbiBpbXB1cmVGaW5hbFByb3BzU2VsZWN0b3JG
YWN0b3J5KG1hcFN0YXRlVG9Qcm9wcywgbWFwRGlzcGF0Y2hUb1Byb3BzLCBtZXJnZVByb3BzLCBk
aXNwYXRjaCkge1xuICByZXR1cm4gZnVuY3Rpb24gaW1wdXJlRmluYWxQcm9wc1NlbGVjdG9yKHN0
YXRlLCBvd25Qcm9wcykge1xuICAgIHJldHVybiBtZXJnZVByb3BzKG1hcFN0YXRlVG9Qcm9wcyhz
dGF0ZSwgb3duUHJvcHMpLCBtYXBEaXNwYXRjaFRvUHJvcHMoZGlzcGF0Y2gsIG93blByb3BzKSwg
b3duUHJvcHMpO1xuICB9O1xufVxuXG5mdW5jdGlvbiBwdXJlRmluYWxQcm9wc1NlbGVjdG9yRmFj
dG9yeShtYXBTdGF0ZVRvUHJvcHMsIG1hcERpc3BhdGNoVG9Qcm9wcywgbWVyZ2VQcm9wcywgZGlz
cGF0Y2gsIF9yZWYpIHtcbiAgdmFyIGFyZVN0YXRlc0VxdWFsID0gX3JlZi5hcmVTdGF0ZXNFcXVh
bCxcbiAgICAgIGFyZU93blByb3BzRXF1YWwgPSBfcmVmLmFyZU93blByb3BzRXF1YWwsXG4gICAg
ICBhcmVTdGF0ZVByb3BzRXF1YWwgPSBfcmVmLmFyZVN0YXRlUHJvcHNFcXVhbDtcblxuICB2YXIg
aGFzUnVuQXRMZWFzdE9uY2UgPSBmYWxzZTtcbiAgdmFyIHN0YXRlID0gdm9pZCAwO1xuICB2YXIg
b3duUHJvcHMgPSB2b2lkIDA7XG4gIHZhciBzdGF0ZVByb3BzID0gdm9pZCAwO1xuICB2YXIgZGlz
cGF0Y2hQcm9wcyA9IHZvaWQgMDtcbiAgdmFyIG1lcmdlZFByb3BzID0gdm9pZCAwO1xuXG4gIGZ1
bmN0aW9uIGhhbmRsZUZpcnN0Q2FsbChmaXJzdFN0YXRlLCBmaXJzdE93blByb3BzKSB7XG4gICAg
c3RhdGUgPSBmaXJzdFN0YXRlO1xuICAgIG93blByb3BzID0gZmlyc3RPd25Qcm9wcztcbiAgICBz
dGF0ZVByb3BzID0gbWFwU3RhdGVUb1Byb3BzKHN0YXRlLCBvd25Qcm9wcyk7XG4gICAgZGlzcGF0
Y2hQcm9wcyA9IG1hcERpc3BhdGNoVG9Qcm9wcyhkaXNwYXRjaCwgb3duUHJvcHMpO1xuICAgIG1l
cmdlZFByb3BzID0gbWVyZ2VQcm9wcyhzdGF0ZVByb3BzLCBkaXNwYXRjaFByb3BzLCBvd25Qcm9w
cyk7XG4gICAgaGFzUnVuQXRMZWFzdE9uY2UgPSB0cnVlO1xuICAgIHJldHVybiBtZXJnZWRQcm9w
cztcbiAgfVxuXG4gIGZ1bmN0aW9uIGhhbmRsZU5ld1Byb3BzQW5kTmV3U3RhdGUoKSB7XG4gICAg
c3RhdGVQcm9wcyA9IG1hcFN0YXRlVG9Qcm9wcyhzdGF0ZSwgb3duUHJvcHMpO1xuXG4gICAgaWYg
KG1hcERpc3BhdGNoVG9Qcm9wcy5kZXBlbmRzT25Pd25Qcm9wcykgZGlzcGF0Y2hQcm9wcyA9IG1h
cERpc3BhdGNoVG9Qcm9wcyhkaXNwYXRjaCwgb3duUHJvcHMpO1xuXG4gICAgbWVyZ2VkUHJvcHMg
PSBtZXJnZVByb3BzKHN0YXRlUHJvcHMsIGRpc3BhdGNoUHJvcHMsIG93blByb3BzKTtcbiAgICBy
ZXR1cm4gbWVyZ2VkUHJvcHM7XG4gIH1cblxuICBmdW5jdGlvbiBoYW5kbGVOZXdQcm9wcygpIHtc
biAgICBpZiAobWFwU3RhdGVUb1Byb3BzLmRlcGVuZHNPbk93blByb3BzKSBzdGF0ZVByb3BzID0g
bWFwU3RhdGVUb1Byb3BzKHN0YXRlLCBvd25Qcm9wcyk7XG5cbiAgICBpZiAobWFwRGlzcGF0Y2hU
b1Byb3BzLmRlcGVuZHNPbk93blByb3BzKSBkaXNwYXRjaFByb3BzID0gbWFwRGlzcGF0Y2hUb1By
b3BzKGRpc3BhdGNoLCBvd25Qcm9wcyk7XG5cbiAgICBtZXJnZWRQcm9wcyA9IG1lcmdlUHJvcHMo
c3RhdGVQcm9wcywgZGlzcGF0Y2hQcm9wcywgb3duUHJvcHMpO1xuICAgIHJldHVybiBtZXJnZWRQ
cm9wcztcbiAgfVxuXG4gIGZ1bmN0aW9uIGhhbmRsZU5ld1N0YXRlKCkge1xuICAgIHZhciBuZXh0
U3RhdGVQcm9wcyA9IG1hcFN0YXRlVG9Qcm9wcyhzdGF0ZSwgb3duUHJvcHMpO1xuICAgIHZhciBz
dGF0ZVByb3BzQ2hhbmdlZCA9ICFhcmVTdGF0ZVByb3BzRXF1YWwobmV4dFN0YXRlUHJvcHMsIHN0
YXRlUHJvcHMpO1xuICAgIHN0YXRlUHJvcHMgPSBuZXh0U3RhdGVQcm9wcztcblxuICAgIGlmIChz
dGF0ZVByb3BzQ2hhbmdlZCkgbWVyZ2VkUHJvcHMgPSBtZXJnZVByb3BzKHN0YXRlUHJvcHMsIGRp
c3BhdGNoUHJvcHMsIG93blByb3BzKTtcblxuICAgIHJldHVybiBtZXJnZWRQcm9wcztcbiAgfVxu
XG4gIGZ1bmN0aW9uIGhhbmRsZVN1YnNlcXVlbnRDYWxscyhuZXh0U3RhdGUsIG5leHRPd25Qcm9w
cykge1xuICAgIHZhciBwcm9wc0NoYW5nZWQgPSAhYXJlT3duUHJvcHNFcXVhbChuZXh0T3duUHJv
cHMsIG93blByb3BzKTtcbiAgICB2YXIgc3RhdGVDaGFuZ2VkID0gIWFyZVN0YXRlc0VxdWFsKG5l
eHRTdGF0ZSwgc3RhdGUpO1xuICAgIHN0YXRlID0gbmV4dFN0YXRlO1xuICAgIG93blByb3BzID0g
bmV4dE93blByb3BzO1xuXG4gICAgaWYgKHByb3BzQ2hhbmdlZCAmJiBzdGF0ZUNoYW5nZWQpIHJl
dHVybiBoYW5kbGVOZXdQcm9wc0FuZE5ld1N0YXRlKCk7XG4gICAgaWYgKHByb3BzQ2hhbmdlZCkg
cmV0dXJuIGhhbmRsZU5ld1Byb3BzKCk7XG4gICAgaWYgKHN0YXRlQ2hhbmdlZCkgcmV0dXJuIGhh
bmRsZU5ld1N0YXRlKCk7XG4gICAgcmV0dXJuIG1lcmdlZFByb3BzO1xuICB9XG5cbiAgcmV0dXJu
IGZ1bmN0aW9uIHB1cmVGaW5hbFByb3BzU2VsZWN0b3IobmV4dFN0YXRlLCBuZXh0T3duUHJvcHMp
IHtcbiAgICByZXR1cm4gaGFzUnVuQXRMZWFzdE9uY2UgPyBoYW5kbGVTdWJzZXF1ZW50Q2FsbHMo
bmV4dFN0YXRlLCBuZXh0T3duUHJvcHMpIDogaGFuZGxlRmlyc3RDYWxsKG5leHRTdGF0ZSwgbmV4
dE93blByb3BzKTtcbiAgfTtcbn1cblxuLy8gVE9ETzogQWRkIG1vcmUgY29tbWVudHNcblxuLy8g
SWYgcHVyZSBpcyB0cnVlLCB0aGUgc2VsZWN0b3IgcmV0dXJuZWQgYnkgc2VsZWN0b3JGYWN0b3J5
IHdpbGwgbWVtb2l6ZSBpdHMgcmVzdWx0cyxcbi8vIGFsbG93aW5nIGNvbm5lY3RBZHZhbmNlZCdz
IHNob3VsZENvbXBvbmVudFVwZGF0ZSB0byByZXR1cm4gZmFsc2UgaWYgZmluYWxcbi8vIHByb3Bz
IGhhdmUgbm90IGNoYW5nZWQuIElmIGZhbHNlLCB0aGUgc2VsZWN0b3Igd2lsbCBhbHdheXMgcmV0
dXJuIGEgbmV3XG4vLyBvYmplY3QgYW5kIHNob3VsZENvbXBvbmVudFVwZGF0ZSB3aWxsIGFsd2F5
cyByZXR1cm4gdHJ1ZS5cblxuZnVuY3Rpb24gZmluYWxQcm9wc1NlbGVjdG9yRmFjdG9yeShkaXNw
YXRjaCwgX3JlZjIpIHtcbiAgdmFyIGluaXRNYXBTdGF0ZVRvUHJvcHMgPSBfcmVmMi5pbml0TWFw
U3RhdGVUb1Byb3BzLFxuICAgICAgaW5pdE1hcERpc3BhdGNoVG9Qcm9wcyA9IF9yZWYyLmluaXRN
YXBEaXNwYXRjaFRvUHJvcHMsXG4gICAgICBpbml0TWVyZ2VQcm9wcyA9IF9yZWYyLmluaXRNZXJn
ZVByb3BzLFxuICAgICAgb3B0aW9ucyA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhfcmVmMiwg
Wydpbml0TWFwU3RhdGVUb1Byb3BzJywgJ2luaXRNYXBEaXNwYXRjaFRvUHJvcHMnLCAnaW5pdE1l
cmdlUHJvcHMnXSk7XG5cbiAgdmFyIG1hcFN0YXRlVG9Qcm9wcyA9IGluaXRNYXBTdGF0ZVRvUHJv
cHMoZGlzcGF0Y2gsIG9wdGlvbnMpO1xuICB2YXIgbWFwRGlzcGF0Y2hUb1Byb3BzID0gaW5pdE1h
cERpc3BhdGNoVG9Qcm9wcyhkaXNwYXRjaCwgb3B0aW9ucyk7XG4gIHZhciBtZXJnZVByb3BzID0g
aW5pdE1lcmdlUHJvcHMoZGlzcGF0Y2gsIG9wdGlvbnMpO1xuXG4gIGlmIChwcm9jZXNzLmVudi5O
T0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgKDAsIF92ZXJpZnlTdWJzZWxlY3RvcnMy
LmRlZmF1bHQpKG1hcFN0YXRlVG9Qcm9wcywgbWFwRGlzcGF0Y2hUb1Byb3BzLCBtZXJnZVByb3Bz
LCBvcHRpb25zLmRpc3BsYXlOYW1lKTtcbiAgfVxuXG4gIHZhciBzZWxlY3RvckZhY3RvcnkgPSBv
cHRpb25zLnB1cmUgPyBwdXJlRmluYWxQcm9wc1NlbGVjdG9yRmFjdG9yeSA6IGltcHVyZUZpbmFs
UHJvcHNTZWxlY3RvckZhY3Rvcnk7XG5cbiAgcmV0dXJuIHNlbGVjdG9yRmFjdG9yeShtYXBTdGF0
ZVRvUHJvcHMsIG1hcERpc3BhdGNoVG9Qcm9wcywgbWVyZ2VQcm9wcywgZGlzcGF0Y2gsIG9wdGlv
bnMpO1xufVxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiog
Li9+L3JlYWN0LXJlZHV4L2xpYi9jb25uZWN0L3NlbGVjdG9yRmFjdG9yeS5qc1xuICoqIG1vZHVs
ZSBpZCA9IDE5MlxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiJ3VzZSBzdHJpY3QnO1xu
XG5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuZXhwb3J0cy5kZWZhdWx0ID0gdmVyaWZ5U3Vi
c2VsZWN0b3JzO1xuXG52YXIgX3dhcm5pbmcgPSByZXF1aXJlKCcuLi91dGlscy93YXJuaW5nJyk7
XG5cbnZhciBfd2FybmluZzIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF93YXJuaW5nKTtcblxu
ZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmou
X19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxuZnVuY3Rpb24gdmVyaWZ5
KHNlbGVjdG9yLCBtZXRob2ROYW1lLCBkaXNwbGF5TmFtZSkge1xuICBpZiAoIXNlbGVjdG9yKSB7
XG4gICAgdGhyb3cgbmV3IEVycm9yKCdVbmV4cGVjdGVkIHZhbHVlIGZvciAnICsgbWV0aG9kTmFt
ZSArICcgaW4gJyArIGRpc3BsYXlOYW1lICsgJy4nKTtcbiAgfSBlbHNlIGlmIChtZXRob2ROYW1l
ID09PSAnbWFwU3RhdGVUb1Byb3BzJyB8fCBtZXRob2ROYW1lID09PSAnbWFwRGlzcGF0Y2hUb1By
b3BzJykge1xuICAgIGlmICghc2VsZWN0b3IuaGFzT3duUHJvcGVydHkoJ2RlcGVuZHNPbk93blBy
b3BzJykpIHtcbiAgICAgICgwLCBfd2FybmluZzIuZGVmYXVsdCkoJ1RoZSBzZWxlY3RvciBmb3Ig
JyArIG1ldGhvZE5hbWUgKyAnIG9mICcgKyBkaXNwbGF5TmFtZSArICcgZGlkIG5vdCBzcGVjaWZ5
IGEgdmFsdWUgZm9yIGRlcGVuZHNPbk93blByb3BzLicpO1xuICAgIH1cbiAgfVxufVxuXG5mdW5j
dGlvbiB2ZXJpZnlTdWJzZWxlY3RvcnMobWFwU3RhdGVUb1Byb3BzLCBtYXBEaXNwYXRjaFRvUHJv
cHMsIG1lcmdlUHJvcHMsIGRpc3BsYXlOYW1lKSB7XG4gIHZlcmlmeShtYXBTdGF0ZVRvUHJvcHMs
ICdtYXBTdGF0ZVRvUHJvcHMnLCBkaXNwbGF5TmFtZSk7XG4gIHZlcmlmeShtYXBEaXNwYXRjaFRv
UHJvcHMsICdtYXBEaXNwYXRjaFRvUHJvcHMnLCBkaXNwbGF5TmFtZSk7XG4gIHZlcmlmeShtZXJn
ZVByb3BzLCAnbWVyZ2VQcm9wcycsIGRpc3BsYXlOYW1lKTtcbn1cblxuXG4vKioqKioqKioqKioq
KioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFjdC1yZWR1eC9saWIvY29ubmVj
dC92ZXJpZnlTdWJzZWxlY3RvcnMuanNcbiAqKiBtb2R1bGUgaWQgPSAxOTNcbiAqKiBtb2R1bGUg
Y2h1bmtzID0gMFxuICoqLyIsIlwidXNlIHN0cmljdFwiO1xuXG5leHBvcnRzLl9fZXNNb2R1bGUg
PSB0cnVlO1xuXG5mdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9y
KSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBU
eXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7IH0gfVxuXG4v
LyBlbmNhcHN1bGF0ZXMgdGhlIHN1YnNjcmlwdGlvbiBsb2dpYyBmb3IgY29ubmVjdGluZyBhIGNv
bXBvbmVudCB0byB0aGUgcmVkdXggc3RvcmUsIGFzXG4vLyB3ZWxsIGFzIG5lc3Rpbmcgc3Vic2Ny
aXB0aW9ucyBvZiBkZXNjZW5kYW50IGNvbXBvbmVudHMsIHNvIHRoYXQgd2UgY2FuIGVuc3VyZSB0
aGVcbi8vIGFuY2VzdG9yIGNvbXBvbmVudHMgcmUtcmVuZGVyIGJlZm9yZSBkZXNjZW5kYW50c1xu
XG52YXIgQ0xFQVJFRCA9IG51bGw7XG52YXIgbnVsbExpc3RlbmVycyA9IHtcbiAgbm90aWZ5OiBm
dW5jdGlvbiBub3RpZnkoKSB7fVxufTtcblxuZnVuY3Rpb24gY3JlYXRlTGlzdGVuZXJDb2xsZWN0
aW9uKCkge1xuICAvLyB0aGUgY3VycmVudC9uZXh0IHBhdHRlcm4gaXMgY29waWVkIGZyb20gcmVk
dXgncyBjcmVhdGVTdG9yZSBjb2RlLlxuICAvLyBUT0RPOiByZWZhY3RvcitleHBvc2UgdGhhdCBj
b2RlIHRvIGJlIHJldXNhYmxlIGhlcmU/XG4gIHZhciBjdXJyZW50ID0gW107XG4gIHZhciBuZXh0
ID0gW107XG5cbiAgcmV0dXJuIHtcbiAgICBjbGVhcjogZnVuY3Rpb24gY2xlYXIoKSB7XG4gICAg
ICBuZXh0ID0gQ0xFQVJFRDtcbiAgICAgIGN1cnJlbnQgPSBDTEVBUkVEO1xuICAgIH0sXG4gICAg
bm90aWZ5OiBmdW5jdGlvbiBub3RpZnkoKSB7XG4gICAgICB2YXIgbGlzdGVuZXJzID0gY3VycmVu
dCA9IG5leHQ7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxpc3RlbmVycy5sZW5ndGg7IGkr
Kykge1xuICAgICAgICBsaXN0ZW5lcnNbaV0oKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGdldDog
ZnVuY3Rpb24gZ2V0KCkge1xuICAgICAgcmV0dXJuIG5leHQ7XG4gICAgfSxcbiAgICBzdWJzY3Jp
YmU6IGZ1bmN0aW9uIHN1YnNjcmliZShsaXN0ZW5lcikge1xuICAgICAgdmFyIGlzU3Vic2NyaWJl
ZCA9IHRydWU7XG4gICAgICBpZiAobmV4dCA9PT0gY3VycmVudCkgbmV4dCA9IGN1cnJlbnQuc2xp
Y2UoKTtcbiAgICAgIG5leHQucHVzaChsaXN0ZW5lcik7XG5cbiAgICAgIHJldHVybiBmdW5jdGlv
biB1bnN1YnNjcmliZSgpIHtcbiAgICAgICAgaWYgKCFpc1N1YnNjcmliZWQgfHwgY3VycmVudCA9
PT0gQ0xFQVJFRCkgcmV0dXJuO1xuICAgICAgICBpc1N1YnNjcmliZWQgPSBmYWxzZTtcblxuICAg
ICAgICBpZiAobmV4dCA9PT0gY3VycmVudCkgbmV4dCA9IGN1cnJlbnQuc2xpY2UoKTtcbiAgICAg
ICAgbmV4dC5zcGxpY2UobmV4dC5pbmRleE9mKGxpc3RlbmVyKSwgMSk7XG4gICAgICB9O1xuICAg
IH1cbiAgfTtcbn1cblxudmFyIFN1YnNjcmlwdGlvbiA9IGZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rp
b24gU3Vic2NyaXB0aW9uKHN0b3JlLCBwYXJlbnRTdWIsIG9uU3RhdGVDaGFuZ2UpIHtcbiAgICBf
Y2xhc3NDYWxsQ2hlY2sodGhpcywgU3Vic2NyaXB0aW9uKTtcblxuICAgIHRoaXMuc3RvcmUgPSBz
dG9yZTtcbiAgICB0aGlzLnBhcmVudFN1YiA9IHBhcmVudFN1YjtcbiAgICB0aGlzLm9uU3RhdGVD
aGFuZ2UgPSBvblN0YXRlQ2hhbmdlO1xuICAgIHRoaXMudW5zdWJzY3JpYmUgPSBudWxsO1xuICAg
IHRoaXMubGlzdGVuZXJzID0gbnVsbExpc3RlbmVycztcbiAgfVxuXG4gIFN1YnNjcmlwdGlvbi5w
cm90b3R5cGUuYWRkTmVzdGVkU3ViID0gZnVuY3Rpb24gYWRkTmVzdGVkU3ViKGxpc3RlbmVyKSB7
XG4gICAgdGhpcy50cnlTdWJzY3JpYmUoKTtcbiAgICByZXR1cm4gdGhpcy5saXN0ZW5lcnMuc3Vi
c2NyaWJlKGxpc3RlbmVyKTtcbiAgfTtcblxuICBTdWJzY3JpcHRpb24ucHJvdG90eXBlLm5vdGlm
eU5lc3RlZFN1YnMgPSBmdW5jdGlvbiBub3RpZnlOZXN0ZWRTdWJzKCkge1xuICAgIHRoaXMubGlz
dGVuZXJzLm5vdGlmeSgpO1xuICB9O1xuXG4gIFN1YnNjcmlwdGlvbi5wcm90b3R5cGUuaXNTdWJz
Y3JpYmVkID0gZnVuY3Rpb24gaXNTdWJzY3JpYmVkKCkge1xuICAgIHJldHVybiBCb29sZWFuKHRo
aXMudW5zdWJzY3JpYmUpO1xuICB9O1xuXG4gIFN1YnNjcmlwdGlvbi5wcm90b3R5cGUudHJ5U3Vi
c2NyaWJlID0gZnVuY3Rpb24gdHJ5U3Vic2NyaWJlKCkge1xuICAgIGlmICghdGhpcy51bnN1YnNj
cmliZSkge1xuICAgICAgdGhpcy51bnN1YnNjcmliZSA9IHRoaXMucGFyZW50U3ViID8gdGhpcy5w
YXJlbnRTdWIuYWRkTmVzdGVkU3ViKHRoaXMub25TdGF0ZUNoYW5nZSkgOiB0aGlzLnN0b3JlLnN1
YnNjcmliZSh0aGlzLm9uU3RhdGVDaGFuZ2UpO1xuXG4gICAgICB0aGlzLmxpc3RlbmVycyA9IGNy
ZWF0ZUxpc3RlbmVyQ29sbGVjdGlvbigpO1xuICAgIH1cbiAgfTtcblxuICBTdWJzY3JpcHRpb24u
cHJvdG90eXBlLnRyeVVuc3Vic2NyaWJlID0gZnVuY3Rpb24gdHJ5VW5zdWJzY3JpYmUoKSB7XG4g
ICAgaWYgKHRoaXMudW5zdWJzY3JpYmUpIHtcbiAgICAgIHRoaXMudW5zdWJzY3JpYmUoKTtcbiAg
ICAgIHRoaXMudW5zdWJzY3JpYmUgPSBudWxsO1xuICAgICAgdGhpcy5saXN0ZW5lcnMuY2xlYXIo
KTtcbiAgICAgIHRoaXMubGlzdGVuZXJzID0gbnVsbExpc3RlbmVycztcbiAgICB9XG4gIH07XG5c
biAgcmV0dXJuIFN1YnNjcmlwdGlvbjtcbn0oKTtcblxuZXhwb3J0cy5kZWZhdWx0ID0gU3Vic2Ny
aXB0aW9uO1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiog
Li9+L3JlYWN0LXJlZHV4L2xpYi91dGlscy9TdWJzY3JpcHRpb24uanNcbiAqKiBtb2R1bGUgaWQg
PSAxOTRcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIid1c2Ugc3RyaWN0JztcblxuZXhw
b3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcbmV4cG9ydHMuZGVmYXVsdCA9IHNoYWxsb3dFcXVhbDtc
bnZhciBoYXNPd24gPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xuXG5mdW5jdGlv
biBpcyh4LCB5KSB7XG4gIGlmICh4ID09PSB5KSB7XG4gICAgcmV0dXJuIHggIT09IDAgfHwgeSAh
PT0gMCB8fCAxIC8geCA9PT0gMSAvIHk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHggIT09IHgg
JiYgeSAhPT0geTtcbiAgfVxufVxuXG5mdW5jdGlvbiBzaGFsbG93RXF1YWwob2JqQSwgb2JqQikg
e1xuICBpZiAoaXMob2JqQSwgb2JqQikpIHJldHVybiB0cnVlO1xuXG4gIGlmICh0eXBlb2Ygb2Jq
QSAhPT0gJ29iamVjdCcgfHwgb2JqQSA9PT0gbnVsbCB8fCB0eXBlb2Ygb2JqQiAhPT0gJ29iamVj
dCcgfHwgb2JqQiA9PT0gbnVsbCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHZhciBr
ZXlzQSA9IE9iamVjdC5rZXlzKG9iakEpO1xuICB2YXIga2V5c0IgPSBPYmplY3Qua2V5cyhvYmpC
KTtcblxuICBpZiAoa2V5c0EubGVuZ3RoICE9PSBrZXlzQi5sZW5ndGgpIHJldHVybiBmYWxzZTtc
blxuICBmb3IgKHZhciBpID0gMDsgaSA8IGtleXNBLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKCFo
YXNPd24uY2FsbChvYmpCLCBrZXlzQVtpXSkgfHwgIWlzKG9iakFba2V5c0FbaV1dLCBvYmpCW2tl
eXNBW2ldXSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4g
dHJ1ZTtcbn1cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoq
IC4vfi9yZWFjdC1yZWR1eC9saWIvdXRpbHMvc2hhbGxvd0VxdWFsLmpzXG4gKiogbW9kdWxlIGlk
ID0gMTk1XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvLyBAcmVtb3ZlLW9uLWVqZWN0
LWJlZ2luXG4vKipcbiAqIENvcHlyaWdodCAoYykgMjAxNS1wcmVzZW50LCBGYWNlYm9vaywgSW5j
LlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxp
Y2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VO
U0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRk
aXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBB
VEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKi9cbi8vIEByZW1vdmUtb24tZWpl
Y3QtZW5kXG5cbmlmICh0eXBlb2YgUHJvbWlzZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgLy8gUmVq
ZWN0aW9uIHRyYWNraW5nIHByZXZlbnRzIGEgY29tbW9uIGlzc3VlIHdoZXJlIFJlYWN0IGdldHMg
aW50byBhblxuICAvLyBpbmNvbnNpc3RlbnQgc3RhdGUgZHVlIHRvIGFuIGVycm9yLCBidXQgaXQg
Z2V0cyBzd2FsbG93ZWQgYnkgYSBQcm9taXNlLFxuICAvLyBhbmQgdGhlIHVzZXIgaGFzIG5vIGlk
ZWEgd2hhdCBjYXVzZXMgUmVhY3QncyBlcnJhdGljIGZ1dHVyZSBiZWhhdmlvci5cbiAgcmVxdWly
ZSgncHJvbWlzZS9saWIvcmVqZWN0aW9uLXRyYWNraW5nJykuZW5hYmxlKCk7XG4gIHdpbmRvdy5Q
cm9taXNlID0gcmVxdWlyZSgncHJvbWlzZS9saWIvZXM2LWV4dGVuc2lvbnMuanMnKTtcbn1cblxu
Ly8gZmV0Y2goKSBwb2x5ZmlsbCBmb3IgbWFraW5nIEFQSSBjYWxscy5cbnJlcXVpcmUoJ3doYXR3
Zy1mZXRjaCcpO1xuXG4vLyBPYmplY3QuYXNzaWduKCkgaXMgY29tbW9ubHkgdXNlZCB3aXRoIFJl
YWN0LlxuLy8gSXQgd2lsbCB1c2UgdGhlIG5hdGl2ZSBpbXBsZW1lbnRhdGlvbiBpZiBpdCdzIHBy
ZXNlbnQgYW5kIGlzbid0IGJ1Z2d5LlxuT2JqZWN0LmFzc2lnbiA9IHJlcXVpcmUoJ29iamVjdC1h
c3NpZ24nKTtcblxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4g
KiogLi9+L3JlYWN0LXNjcmlwdHMvY29uZmlnL3BvbHlmaWxscy5qc1xuICoqIG1vZHVsZSBpZCA9
IDE5NlxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbi8v
IFVzZSB0aGUgZmFzdGVzdCBtZWFucyBwb3NzaWJsZSB0byBleGVjdXRlIGEgdGFzayBpbiBpdHMg
b3duIHR1cm4sIHdpdGhcbi8vIHByaW9yaXR5IG92ZXIgb3RoZXIgZXZlbnRzIGluY2x1ZGluZyBJ
TywgYW5pbWF0aW9uLCByZWZsb3csIGFuZCByZWRyYXdcbi8vIGV2ZW50cyBpbiBicm93c2Vycy5c
bi8vXG4vLyBBbiBleGNlcHRpb24gdGhyb3duIGJ5IGEgdGFzayB3aWxsIHBlcm1hbmVudGx5IGlu
dGVycnVwdCB0aGUgcHJvY2Vzc2luZyBvZlxuLy8gc3Vic2VxdWVudCB0YXNrcy4gVGhlIGhpZ2hl
ciBsZXZlbCBgYXNhcGAgZnVuY3Rpb24gZW5zdXJlcyB0aGF0IGlmIGFuXG4vLyBleGNlcHRpb24g
aXMgdGhyb3duIGJ5IGEgdGFzaywgdGhhdCB0aGUgdGFzayBxdWV1ZSB3aWxsIGNvbnRpbnVlIGZs
dXNoaW5nIGFzXG4vLyBzb29uIGFzIHBvc3NpYmxlLCBidXQgaWYgeW91IHVzZSBgcmF3QXNhcGAg
ZGlyZWN0bHksIHlvdSBhcmUgcmVzcG9uc2libGUgdG9cbi8vIGVpdGhlciBlbnN1cmUgdGhhdCBu
byBleGNlcHRpb25zIGFyZSB0aHJvd24gZnJvbSB5b3VyIHRhc2ssIG9yIHRvIG1hbnVhbGx5XG4v
LyBjYWxsIGByYXdBc2FwLnJlcXVlc3RGbHVzaGAgaWYgYW4gZXhjZXB0aW9uIGlzIHRocm93bi5c
bm1vZHVsZS5leHBvcnRzID0gcmF3QXNhcDtcbmZ1bmN0aW9uIHJhd0FzYXAodGFzaykge1xuICAg
IGlmICghcXVldWUubGVuZ3RoKSB7XG4gICAgICAgIHJlcXVlc3RGbHVzaCgpO1xuICAgICAgICBm
bHVzaGluZyA9IHRydWU7XG4gICAgfVxuICAgIC8vIEVxdWl2YWxlbnQgdG8gcHVzaCwgYnV0IGF2
b2lkcyBhIGZ1bmN0aW9uIGNhbGwuXG4gICAgcXVldWVbcXVldWUubGVuZ3RoXSA9IHRhc2s7XG59
XG5cbnZhciBxdWV1ZSA9IFtdO1xuLy8gT25jZSBhIGZsdXNoIGhhcyBiZWVuIHJlcXVlc3RlZCwg
bm8gZnVydGhlciBjYWxscyB0byBgcmVxdWVzdEZsdXNoYCBhcmVcbi8vIG5lY2Vzc2FyeSB1bnRp
bCB0aGUgbmV4dCBgZmx1c2hgIGNvbXBsZXRlcy5cbnZhciBmbHVzaGluZyA9IGZhbHNlO1xuLy8g
YHJlcXVlc3RGbHVzaGAgaXMgYW4gaW1wbGVtZW50YXRpb24tc3BlY2lmaWMgbWV0aG9kIHRoYXQg
YXR0ZW1wdHMgdG8ga2lja1xuLy8gb2ZmIGEgYGZsdXNoYCBldmVudCBhcyBxdWlja2x5IGFzIHBv
c3NpYmxlLiBgZmx1c2hgIHdpbGwgYXR0ZW1wdCB0byBleGhhdXN0XG4vLyB0aGUgZXZlbnQgcXVl
dWUgYmVmb3JlIHlpZWxkaW5nIHRvIHRoZSBicm93c2VyJ3Mgb3duIGV2ZW50IGxvb3AuXG52YXIg
cmVxdWVzdEZsdXNoO1xuLy8gVGhlIHBvc2l0aW9uIG9mIHRoZSBuZXh0IHRhc2sgdG8gZXhlY3V0
ZSBpbiB0aGUgdGFzayBxdWV1ZS4gVGhpcyBpc1xuLy8gcHJlc2VydmVkIGJldHdlZW4gY2FsbHMg
dG8gYGZsdXNoYCBzbyB0aGF0IGl0IGNhbiBiZSByZXN1bWVkIGlmXG4vLyBhIHRhc2sgdGhyb3dz
IGFuIGV4Y2VwdGlvbi5cbnZhciBpbmRleCA9IDA7XG4vLyBJZiBhIHRhc2sgc2NoZWR1bGVzIGFk
ZGl0aW9uYWwgdGFza3MgcmVjdXJzaXZlbHksIHRoZSB0YXNrIHF1ZXVlIGNhbiBncm93XG4vLyB1
bmJvdW5kZWQuIFRvIHByZXZlbnQgbWVtb3J5IGV4aGF1c3Rpb24sIHRoZSB0YXNrIHF1ZXVlIHdp
bGwgcGVyaW9kaWNhbGx5XG4vLyB0cnVuY2F0ZSBhbHJlYWR5LWNvbXBsZXRlZCB0YXNrcy5cbnZh
ciBjYXBhY2l0eSA9IDEwMjQ7XG5cbi8vIFRoZSBmbHVzaCBmdW5jdGlvbiBwcm9jZXNzZXMgYWxs
IHRhc2tzIHRoYXQgaGF2ZSBiZWVuIHNjaGVkdWxlZCB3aXRoXG4vLyBgcmF3QXNhcGAgdW5sZXNz
IGFuZCB1bnRpbCBvbmUgb2YgdGhvc2UgdGFza3MgdGhyb3dzIGFuIGV4Y2VwdGlvbi5cbi8vIElm
IGEgdGFzayB0aHJvd3MgYW4gZXhjZXB0aW9uLCBgZmx1c2hgIGVuc3VyZXMgdGhhdCBpdHMgc3Rh
dGUgd2lsbCByZW1haW5cbi8vIGNvbnNpc3RlbnQgYW5kIHdpbGwgcmVzdW1lIHdoZXJlIGl0IGxl
ZnQgb2ZmIHdoZW4gY2FsbGVkIGFnYWluLlxuLy8gSG93ZXZlciwgYGZsdXNoYCBkb2VzIG5vdCBt
YWtlIGFueSBhcnJhbmdlbWVudHMgdG8gYmUgY2FsbGVkIGFnYWluIGlmIGFuXG4vLyBleGNlcHRp
b24gaXMgdGhyb3duLlxuZnVuY3Rpb24gZmx1c2goKSB7XG4gICAgd2hpbGUgKGluZGV4IDwgcXVl
dWUubGVuZ3RoKSB7XG4gICAgICAgIHZhciBjdXJyZW50SW5kZXggPSBpbmRleDtcbiAgICAgICAg
Ly8gQWR2YW5jZSB0aGUgaW5kZXggYmVmb3JlIGNhbGxpbmcgdGhlIHRhc2suIFRoaXMgZW5zdXJl
cyB0aGF0IHdlIHdpbGxcbiAgICAgICAgLy8gYmVnaW4gZmx1c2hpbmcgb24gdGhlIG5leHQgdGFz
ayB0aGUgdGFzayB0aHJvd3MgYW4gZXJyb3IuXG4gICAgICAgIGluZGV4ID0gaW5kZXggKyAxO1xu
ICAgICAgICBxdWV1ZVtjdXJyZW50SW5kZXhdLmNhbGwoKTtcbiAgICAgICAgLy8gUHJldmVudCBs
ZWFraW5nIG1lbW9yeSBmb3IgbG9uZyBjaGFpbnMgb2YgcmVjdXJzaXZlIGNhbGxzIHRvIGBhc2Fw
YC5cbiAgICAgICAgLy8gSWYgd2UgY2FsbCBgYXNhcGAgd2l0aGluIHRhc2tzIHNjaGVkdWxlZCBi
eSBgYXNhcGAsIHRoZSBxdWV1ZSB3aWxsXG4gICAgICAgIC8vIGdyb3csIGJ1dCB0byBhdm9pZCBh
biBPKG4pIHdhbGsgZm9yIGV2ZXJ5IHRhc2sgd2UgZXhlY3V0ZSwgd2UgZG9uJ3RcbiAgICAgICAg
Ly8gc2hpZnQgdGFza3Mgb2ZmIHRoZSBxdWV1ZSBhZnRlciB0aGV5IGhhdmUgYmVlbiBleGVjdXRl
ZC5cbiAgICAgICAgLy8gSW5zdGVhZCwgd2UgcGVyaW9kaWNhbGx5IHNoaWZ0IDEwMjQgdGFza3Mg
b2ZmIHRoZSBxdWV1ZS5cbiAgICAgICAgaWYgKGluZGV4ID4gY2FwYWNpdHkpIHtcbiAgICAgICAg
ICAgIC8vIE1hbnVhbGx5IHNoaWZ0IGFsbCB2YWx1ZXMgc3RhcnRpbmcgYXQgdGhlIGluZGV4IGJh
Y2sgdG8gdGhlXG4gICAgICAgICAgICAvLyBiZWdpbm5pbmcgb2YgdGhlIHF1ZXVlLlxuICAgICAg
ICAgICAgZm9yICh2YXIgc2NhbiA9IDAsIG5ld0xlbmd0aCA9IHF1ZXVlLmxlbmd0aCAtIGluZGV4
OyBzY2FuIDwgbmV3TGVuZ3RoOyBzY2FuKyspIHtcbiAgICAgICAgICAgICAgICBxdWV1ZVtzY2Fu
XSA9IHF1ZXVlW3NjYW4gKyBpbmRleF07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBxdWV1
ZS5sZW5ndGggLT0gaW5kZXg7XG4gICAgICAgICAgICBpbmRleCA9IDA7XG4gICAgICAgIH1cbiAg
ICB9XG4gICAgcXVldWUubGVuZ3RoID0gMDtcbiAgICBpbmRleCA9IDA7XG4gICAgZmx1c2hpbmcg
PSBmYWxzZTtcbn1cblxuLy8gYHJlcXVlc3RGbHVzaGAgaXMgaW1wbGVtZW50ZWQgdXNpbmcgYSBz
dHJhdGVneSBiYXNlZCBvbiBkYXRhIGNvbGxlY3RlZCBmcm9tXG4vLyBldmVyeSBhdmFpbGFibGUg
U2F1Y2VMYWJzIFNlbGVuaXVtIHdlYiBkcml2ZXIgd29ya2VyIGF0IHRpbWUgb2Ygd3JpdGluZy5c
bi8vIGh0dHBzOi8vZG9jcy5nb29nbGUuY29tL3NwcmVhZHNoZWV0cy9kLzFtRy01VVlHdXA1cXhH
ZEVNV2toUDZCV0N6MDUzTlViMkUxUW9VVFUxNnVBL2VkaXQjZ2lkPTc4MzcyNDU5M1xuXG4vLyBT
YWZhcmkgNiBhbmQgNi4xIGZvciBkZXNrdG9wLCBpUGFkLCBhbmQgaVBob25lIGFyZSB0aGUgb25s
eSBicm93c2VycyB0aGF0XG4vLyBoYXZlIFdlYktpdE11dGF0aW9uT2JzZXJ2ZXIgYnV0IG5vdCB1
bi1wcmVmaXhlZCBNdXRhdGlvbk9ic2VydmVyLlxuLy8gTXVzdCB1c2UgYGdsb2JhbGAgb3IgYHNl
bGZgIGluc3RlYWQgb2YgYHdpbmRvd2AgdG8gd29yayBpbiBib3RoIGZyYW1lcyBhbmQgd2ViXG4v
LyB3b3JrZXJzLiBgZ2xvYmFsYCBpcyBhIHByb3Zpc2lvbiBvZiBCcm93c2VyaWZ5LCBNciwgTXJz
LCBvciBNb3AuXG5cbi8qIGdsb2JhbHMgc2VsZiAqL1xudmFyIHNjb3BlID0gdHlwZW9mIGdsb2Jh
bCAhPT0gXCJ1bmRlZmluZWRcIiA/IGdsb2JhbCA6IHNlbGY7XG52YXIgQnJvd3Nlck11dGF0aW9u
T2JzZXJ2ZXIgPSBzY29wZS5NdXRhdGlvbk9ic2VydmVyIHx8IHNjb3BlLldlYktpdE11dGF0aW9u
T2JzZXJ2ZXI7XG5cbi8vIE11dGF0aW9uT2JzZXJ2ZXJzIGFyZSBkZXNpcmFibGUgYmVjYXVzZSB0
aGV5IGhhdmUgaGlnaCBwcmlvcml0eSBhbmQgd29ya1xuLy8gcmVsaWFibHkgZXZlcnl3aGVyZSB0
aGV5IGFyZSBpbXBsZW1lbnRlZC5cbi8vIFRoZXkgYXJlIGltcGxlbWVudGVkIGluIGFsbCBtb2Rl
cm4gYnJvd3NlcnMuXG4vL1xuLy8gLSBBbmRyb2lkIDQtNC4zXG4vLyAtIENocm9tZSAyNi0zNFxu
Ly8gLSBGaXJlZm94IDE0LTI5XG4vLyAtIEludGVybmV0IEV4cGxvcmVyIDExXG4vLyAtIGlQYWQg
U2FmYXJpIDYtNy4xXG4vLyAtIGlQaG9uZSBTYWZhcmkgNy03LjFcbi8vIC0gU2FmYXJpIDYtN1xu
aWYgKHR5cGVvZiBCcm93c2VyTXV0YXRpb25PYnNlcnZlciA9PT0gXCJmdW5jdGlvblwiKSB7XG4g
ICAgcmVxdWVzdEZsdXNoID0gbWFrZVJlcXVlc3RDYWxsRnJvbU11dGF0aW9uT2JzZXJ2ZXIoZmx1
c2gpO1xuXG4vLyBNZXNzYWdlQ2hhbm5lbHMgYXJlIGRlc2lyYWJsZSBiZWNhdXNlIHRoZXkgZ2l2
ZSBkaXJlY3QgYWNjZXNzIHRvIHRoZSBIVE1MXG4vLyB0YXNrIHF1ZXVlLCBhcmUgaW1wbGVtZW50
ZWQgaW4gSW50ZXJuZXQgRXhwbG9yZXIgMTAsIFNhZmFyaSA1LjAtMSwgYW5kIE9wZXJhXG4vLyAx
MS0xMiwgYW5kIGluIHdlYiB3b3JrZXJzIGluIG1hbnkgZW5naW5lcy5cbi8vIEFsdGhvdWdoIG1l
c3NhZ2UgY2hhbm5lbHMgeWllbGQgdG8gYW55IHF1ZXVlZCByZW5kZXJpbmcgYW5kIElPIHRhc2tz
LCB0aGV5XG4vLyB3b3VsZCBiZSBiZXR0ZXIgdGhhbiBpbXBvc2luZyB0aGUgNG1zIGRlbGF5IG9m
IHRpbWVycy5cbi8vIEhvd2V2ZXIsIHRoZXkgZG8gbm90IHdvcmsgcmVsaWFibHkgaW4gSW50ZXJu
ZXQgRXhwbG9yZXIgb3IgU2FmYXJpLlxuXG4vLyBJbnRlcm5ldCBFeHBsb3JlciAxMCBpcyB0aGUg
b25seSBicm93c2VyIHRoYXQgaGFzIHNldEltbWVkaWF0ZSBidXQgZG9lc1xuLy8gbm90IGhhdmUg
TXV0YXRpb25PYnNlcnZlcnMuXG4vLyBBbHRob3VnaCBzZXRJbW1lZGlhdGUgeWllbGRzIHRvIHRo
ZSBicm93c2VyJ3MgcmVuZGVyZXIsIGl0IHdvdWxkIGJlXG4vLyBwcmVmZXJyYWJsZSB0byBmYWxs
aW5nIGJhY2sgdG8gc2V0VGltZW91dCBzaW5jZSBpdCBkb2VzIG5vdCBoYXZlXG4vLyB0aGUgbWlu
aW11bSA0bXMgcGVuYWx0eS5cbi8vIFVuZm9ydHVuYXRlbHkgdGhlcmUgYXBwZWFycyB0byBiZSBh
IGJ1ZyBpbiBJbnRlcm5ldCBFeHBsb3JlciAxMCBNb2JpbGUgKGFuZFxuLy8gRGVza3RvcCB0byBh
IGxlc3NlciBleHRlbnQpIHRoYXQgcmVuZGVycyBib3RoIHNldEltbWVkaWF0ZSBhbmRcbi8vIE1l
c3NhZ2VDaGFubmVsIHVzZWxlc3MgZm9yIHRoZSBwdXJwb3NlcyBvZiBBU0FQLlxuLy8gaHR0cHM6
Ly9naXRodWIuY29tL2tyaXNrb3dhbC9xL2lzc3Vlcy8zOTZcblxuLy8gVGltZXJzIGFyZSBpbXBs
ZW1lbnRlZCB1bml2ZXJzYWxseS5cbi8vIFdlIGZhbGwgYmFjayB0byB0aW1lcnMgaW4gd29ya2Vy
cyBpbiBtb3N0IGVuZ2luZXMsIGFuZCBpbiBmb3JlZ3JvdW5kXG4vLyBjb250ZXh0cyBpbiB0aGUg
Zm9sbG93aW5nIGJyb3dzZXJzLlxuLy8gSG93ZXZlciwgbm90ZSB0aGF0IGV2ZW4gdGhpcyBzaW1w
bGUgY2FzZSByZXF1aXJlcyBudWFuY2VzIHRvIG9wZXJhdGUgaW4gYVxuLy8gYnJvYWQgc3BlY3Ry
dW0gb2YgYnJvd3NlcnMuXG4vL1xuLy8gLSBGaXJlZm94IDMtMTNcbi8vIC0gSW50ZXJuZXQgRXhw
bG9yZXIgNi05XG4vLyAtIGlQYWQgU2FmYXJpIDQuM1xuLy8gLSBMeW54IDIuOC43XG59IGVsc2Ug
e1xuICAgIHJlcXVlc3RGbHVzaCA9IG1ha2VSZXF1ZXN0Q2FsbEZyb21UaW1lcihmbHVzaCk7XG59
XG5cbi8vIGByZXF1ZXN0Rmx1c2hgIHJlcXVlc3RzIHRoYXQgdGhlIGhpZ2ggcHJpb3JpdHkgZXZl
bnQgcXVldWUgYmUgZmx1c2hlZCBhc1xuLy8gc29vbiBhcyBwb3NzaWJsZS5cbi8vIFRoaXMgaXMg
dXNlZnVsIHRvIHByZXZlbnQgYW4gZXJyb3IgdGhyb3duIGluIGEgdGFzayBmcm9tIHN0YWxsaW5n
IHRoZSBldmVudFxuLy8gcXVldWUgaWYgdGhlIGV4Y2VwdGlvbiBoYW5kbGVkIGJ5IE5vZGUuanPi
gJlzXG4vLyBgcHJvY2Vzcy5vbihcInVuY2F1Z2h0RXhjZXB0aW9uXCIpYCBvciBieSBhIGRvbWFp
bi5cbnJhd0FzYXAucmVxdWVzdEZsdXNoID0gcmVxdWVzdEZsdXNoO1xuXG4vLyBUbyByZXF1ZXN0
IGEgaGlnaCBwcmlvcml0eSBldmVudCwgd2UgaW5kdWNlIGEgbXV0YXRpb24gb2JzZXJ2ZXIgYnkg
dG9nZ2xpbmdcbi8vIHRoZSB0ZXh0IG9mIGEgdGV4dCBub2RlIGJldHdlZW4gXCIxXCIgYW5kIFwi
LTFcIi5cbmZ1bmN0aW9uIG1ha2VSZXF1ZXN0Q2FsbEZyb21NdXRhdGlvbk9ic2VydmVyKGNhbGxi
YWNrKSB7XG4gICAgdmFyIHRvZ2dsZSA9IDE7XG4gICAgdmFyIG9ic2VydmVyID0gbmV3IEJyb3dz
ZXJNdXRhdGlvbk9ic2VydmVyKGNhbGxiYWNrKTtcbiAgICB2YXIgbm9kZSA9IGRvY3VtZW50LmNy
ZWF0ZVRleHROb2RlKFwiXCIpO1xuICAgIG9ic2VydmVyLm9ic2VydmUobm9kZSwge2NoYXJhY3Rl
ckRhdGE6IHRydWV9KTtcbiAgICByZXR1cm4gZnVuY3Rpb24gcmVxdWVzdENhbGwoKSB7XG4gICAg
ICAgIHRvZ2dsZSA9IC10b2dnbGU7XG4gICAgICAgIG5vZGUuZGF0YSA9IHRvZ2dsZTtcbiAgICB9
O1xufVxuXG4vLyBUaGUgbWVzc2FnZSBjaGFubmVsIHRlY2huaXF1ZSB3YXMgZGlzY292ZXJlZCBi
eSBNYWx0ZSBVYmwgYW5kIHdhcyB0aGVcbi8vIG9yaWdpbmFsIGZvdW5kYXRpb24gZm9yIHRoaXMg
bGlicmFyeS5cbi8vIGh0dHA6Ly93d3cubm9uYmxvY2tpbmcuaW8vMjAxMS8wNi93aW5kb3duZXh0
dGljay5odG1sXG5cbi8vIFNhZmFyaSA2LjAuNSAoYXQgbGVhc3QpIGludGVybWl0dGVudGx5IGZh
aWxzIHRvIGNyZWF0ZSBtZXNzYWdlIHBvcnRzIG9uIGFcbi8vIHBhZ2UncyBmaXJzdCBsb2FkLiBU
aGFua2Z1bGx5LCB0aGlzIHZlcnNpb24gb2YgU2FmYXJpIHN1cHBvcnRzXG4vLyBNdXRhdGlvbk9i
c2VydmVycywgc28gd2UgZG9uJ3QgbmVlZCB0byBmYWxsIGJhY2sgaW4gdGhhdCBjYXNlLlxuXG4v
LyBmdW5jdGlvbiBtYWtlUmVxdWVzdENhbGxGcm9tTWVzc2FnZUNoYW5uZWwoY2FsbGJhY2spIHtc
bi8vICAgICB2YXIgY2hhbm5lbCA9IG5ldyBNZXNzYWdlQ2hhbm5lbCgpO1xuLy8gICAgIGNoYW5u
ZWwucG9ydDEub25tZXNzYWdlID0gY2FsbGJhY2s7XG4vLyAgICAgcmV0dXJuIGZ1bmN0aW9uIHJl
cXVlc3RDYWxsKCkge1xuLy8gICAgICAgICBjaGFubmVsLnBvcnQyLnBvc3RNZXNzYWdlKDApO1xu
Ly8gICAgIH07XG4vLyB9XG5cbi8vIEZvciByZWFzb25zIGV4cGxhaW5lZCBhYm92ZSwgd2UgYXJl
IGFsc28gdW5hYmxlIHRvIHVzZSBgc2V0SW1tZWRpYXRlYFxuLy8gdW5kZXIgYW55IGNpcmN1bXN0
YW5jZXMuXG4vLyBFdmVuIGlmIHdlIHdlcmUsIHRoZXJlIGlzIGFub3RoZXIgYnVnIGluIEludGVy
bmV0IEV4cGxvcmVyIDEwLlxuLy8gSXQgaXMgbm90IHN1ZmZpY2llbnQgdG8gYXNzaWduIGBzZXRJ
bW1lZGlhdGVgIHRvIGByZXF1ZXN0Rmx1c2hgIGJlY2F1c2Vcbi8vIGBzZXRJbW1lZGlhdGVgIG11
c3QgYmUgY2FsbGVkICpieSBuYW1lKiBhbmQgdGhlcmVmb3JlIG11c3QgYmUgd3JhcHBlZCBpbiBh
XG4vLyBjbG9zdXJlLlxuLy8gTmV2ZXIgZm9yZ2V0LlxuXG4vLyBmdW5jdGlvbiBtYWtlUmVxdWVz
dENhbGxGcm9tU2V0SW1tZWRpYXRlKGNhbGxiYWNrKSB7XG4vLyAgICAgcmV0dXJuIGZ1bmN0aW9u
IHJlcXVlc3RDYWxsKCkge1xuLy8gICAgICAgICBzZXRJbW1lZGlhdGUoY2FsbGJhY2spO1xuLy8g
ICAgIH07XG4vLyB9XG5cbi8vIFNhZmFyaSA2LjAgaGFzIGEgcHJvYmxlbSB3aGVyZSB0aW1lcnMg
d2lsbCBnZXQgbG9zdCB3aGlsZSB0aGUgdXNlciBpc1xuLy8gc2Nyb2xsaW5nLiBUaGlzIHByb2Js
ZW0gZG9lcyBub3QgaW1wYWN0IEFTQVAgYmVjYXVzZSBTYWZhcmkgNi4wIHN1cHBvcnRzXG4vLyBt
dXRhdGlvbiBvYnNlcnZlcnMsIHNvIHRoYXQgaW1wbGVtZW50YXRpb24gaXMgdXNlZCBpbnN0ZWFk
LlxuLy8gSG93ZXZlciwgaWYgd2UgZXZlciBlbGVjdCB0byB1c2UgdGltZXJzIGluIFNhZmFyaSwg
dGhlIHByZXZhbGVudCB3b3JrLWFyb3VuZFxuLy8gaXMgdG8gYWRkIGEgc2Nyb2xsIGV2ZW50IGxp
c3RlbmVyIHRoYXQgY2FsbHMgZm9yIGEgZmx1c2guXG5cbi8vIGBzZXRUaW1lb3V0YCBkb2VzIG5v
dCBjYWxsIHRoZSBwYXNzZWQgY2FsbGJhY2sgaWYgdGhlIGRlbGF5IGlzIGxlc3MgdGhhblxuLy8g
YXBwcm94aW1hdGVseSA3IGluIHdlYiB3b3JrZXJzIGluIEZpcmVmb3ggOCB0aHJvdWdoIDE4LCBh
bmQgc29tZXRpbWVzIG5vdFxuLy8gZXZlbiB0aGVuLlxuXG5mdW5jdGlvbiBtYWtlUmVxdWVzdENh
bGxGcm9tVGltZXIoY2FsbGJhY2spIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gcmVxdWVzdENhbGwo
KSB7XG4gICAgICAgIC8vIFdlIGRpc3BhdGNoIGEgdGltZW91dCB3aXRoIGEgc3BlY2lmaWVkIGRl
bGF5IG9mIDAgZm9yIGVuZ2luZXMgdGhhdFxuICAgICAgICAvLyBjYW4gcmVsaWFibHkgYWNjb21t
b2RhdGUgdGhhdCByZXF1ZXN0LiBUaGlzIHdpbGwgdXN1YWxseSBiZSBzbmFwcGVkXG4gICAgICAg
IC8vIHRvIGEgNCBtaWxpc2Vjb25kIGRlbGF5LCBidXQgb25jZSB3ZSdyZSBmbHVzaGluZywgdGhl
cmUncyBubyBkZWxheVxuICAgICAgICAvLyBiZXR3ZWVuIGV2ZW50cy5cbiAgICAgICAgdmFyIHRp
bWVvdXRIYW5kbGUgPSBzZXRUaW1lb3V0KGhhbmRsZVRpbWVyLCAwKTtcbiAgICAgICAgLy8gSG93
ZXZlciwgc2luY2UgdGhpcyB0aW1lciBnZXRzIGZyZXF1ZW50bHkgZHJvcHBlZCBpbiBGaXJlZm94
XG4gICAgICAgIC8vIHdvcmtlcnMsIHdlIGVubGlzdCBhbiBpbnRlcnZhbCBoYW5kbGUgdGhhdCB3
aWxsIHRyeSB0byBmaXJlXG4gICAgICAgIC8vIGFuIGV2ZW50IDIwIHRpbWVzIHBlciBzZWNvbmQg
dW50aWwgaXQgc3VjY2VlZHMuXG4gICAgICAgIHZhciBpbnRlcnZhbEhhbmRsZSA9IHNldEludGVy
dmFsKGhhbmRsZVRpbWVyLCA1MCk7XG5cbiAgICAgICAgZnVuY3Rpb24gaGFuZGxlVGltZXIoKSB7
XG4gICAgICAgICAgICAvLyBXaGljaGV2ZXIgdGltZXIgc3VjY2VlZHMgd2lsbCBjYW5jZWwgYm90
aCB0aW1lcnMgYW5kXG4gICAgICAgICAgICAvLyBleGVjdXRlIHRoZSBjYWxsYmFjay5cbiAgICAg
ICAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0SGFuZGxlKTtcbiAgICAgICAgICAgIGNsZWFySW50
ZXJ2YWwoaW50ZXJ2YWxIYW5kbGUpO1xuICAgICAgICAgICAgY2FsbGJhY2soKTtcbiAgICAgICAg
fVxuICAgIH07XG59XG5cbi8vIFRoaXMgaXMgZm9yIGBhc2FwLmpzYCBvbmx5LlxuLy8gSXRzIG5h
bWUgd2lsbCBiZSBwZXJpb2RpY2FsbHkgcmFuZG9taXplZCB0byBicmVhayBhbnkgY29kZSB0aGF0
IGRlcGVuZHMgb25cbi8vIGl0cyBleGlzdGVuY2UuXG5yYXdBc2FwLm1ha2VSZXF1ZXN0Q2FsbEZy
b21UaW1lciA9IG1ha2VSZXF1ZXN0Q2FsbEZyb21UaW1lcjtcblxuLy8gQVNBUCB3YXMgb3JpZ2lu
YWxseSBhIG5leHRUaWNrIHNoaW0gaW5jbHVkZWQgaW4gUS4gVGhpcyB3YXMgZmFjdG9yZWQgb3V0
XG4vLyBpbnRvIHRoaXMgQVNBUCBwYWNrYWdlLiBJdCB3YXMgbGF0ZXIgYWRhcHRlZCB0byBSU1ZQ
IHdoaWNoIG1hZGUgZnVydGhlclxuLy8gYW1lbmRtZW50cy4gVGhlc2UgZGVjaXNpb25zLCBwYXJ0
aWN1bGFybHkgdG8gbWFyZ2luYWxpemUgTWVzc2FnZUNoYW5uZWwgYW5kXG4vLyB0byBjYXB0dXJl
IHRoZSBNdXRhdGlvbk9ic2VydmVyIGltcGxlbWVudGF0aW9uIGluIGEgY2xvc3VyZSwgd2VyZSBp
bnRlZ3JhdGVkXG4vLyBiYWNrIGludG8gQVNBUCBwcm9wZXIuXG4vLyBodHRwczovL2dpdGh1Yi5j
b20vdGlsZGVpby9yc3ZwLmpzL2Jsb2IvY2RkZjcyMzI1NDZhOWNmODU4NTI0Yjc1Y2RlNmY5ZWRm
NzI2MjBhNy9saWIvcnN2cC9hc2FwLmpzXG5cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBX
RUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFjdC1zY3JpcHRzL34vYXNhcC9icm93c2VyLXJhdy5q
c1xuICoqIG1vZHVsZSBpZCA9IDE5N1xuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiaW1w
b3J0ICogYXMgdHlwZXMgZnJvbSAnLi4vY29uc3RhbnRzL0FjdGlvblR5cGVzJ1xuXG5leHBvcnQg
Y29uc3QgYWRkVG9kbyA9IHRleHQgPT4gKHsgdHlwZTogdHlwZXMuQUREX1RPRE8sIHRleHQgfSlc
bmV4cG9ydCBjb25zdCBkZWxldGVUb2RvID0gaWQgPT4gKHsgdHlwZTogdHlwZXMuREVMRVRFX1RP
RE8sIGlkIH0pXG5leHBvcnQgY29uc3QgZWRpdFRvZG8gPSAoaWQsIHRleHQpID0+ICh7IHR5cGU6
IHR5cGVzLkVESVRfVE9ETywgaWQsIHRleHQgfSlcbmV4cG9ydCBjb25zdCBjb21wbGV0ZVRvZG8g
PSBpZCA9PiAoeyB0eXBlOiB0eXBlcy5DT01QTEVURV9UT0RPLCBpZCB9KVxuZXhwb3J0IGNvbnN0
IGNvbXBsZXRlQWxsID0gKCkgPT4gKHsgdHlwZTogdHlwZXMuQ09NUExFVEVfQUxMIH0pXG5leHBv
cnQgY29uc3QgY2xlYXJDb21wbGV0ZWQgPSAoKSA9PiAoeyB0eXBlOiB0eXBlcy5DTEVBUl9DT01Q
TEVURUQgfSlcblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIC4vc3JjL2FjdGlvbnMv
aW5kZXguanNcbiAqKi8iLCJpbXBvcnQgUmVhY3QsIHsgUHJvcFR5cGVzLCBDb21wb25lbnQgfSBm
cm9tICdyZWFjdCdcbmltcG9ydCBjbGFzc25hbWVzIGZyb20gJ2NsYXNzbmFtZXMnXG5pbXBvcnQg
eyBTSE9XX0FMTCwgU0hPV19DT01QTEVURUQsIFNIT1dfQUNUSVZFIH0gZnJvbSAnLi4vY29uc3Rh
bnRzL1RvZG9GaWx0ZXJzJ1xuXG5jb25zdCBGSUxURVJfVElUTEVTID0ge1xuICBbU0hPV19BTExd
OiAnQWxsJyxcbiAgW1NIT1dfQUNUSVZFXTogJ0FjdGl2ZScsXG4gIFtTSE9XX0NPTVBMRVRFRF06
ICdDb21wbGV0ZWQnXG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEZvb3RlciBleHRlbmRzIENv
bXBvbmVudCB7XG4gIHN0YXRpYyBwcm9wVHlwZXMgPSB7XG4gICAgY29tcGxldGVkQ291bnQ6IFBy
b3BUeXBlcy5udW1iZXIuaXNSZXF1aXJlZCxcbiAgICBhY3RpdmVDb3VudDogUHJvcFR5cGVzLm51
bWJlci5pc1JlcXVpcmVkLFxuICAgIGZpbHRlcjogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVk
LFxuICAgIG9uQ2xlYXJDb21wbGV0ZWQ6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gICAg
b25TaG93OiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkXG4gIH1cblxuICByZW5kZXJUb2RvQ291
bnQoKSB7XG4gICAgY29uc3QgeyBhY3RpdmVDb3VudCB9ID0gdGhpcy5wcm9wc1xuICAgIGNvbnN0
IGl0ZW1Xb3JkID0gYWN0aXZlQ291bnQgPT09IDEgPyAnaXRlbScgOiAnaXRlbXMnXG5cbiAgICBy
ZXR1cm4gKFxuICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidG9kby1jb3VudFwiPlxuICAgICAgICA8
c3Ryb25nPnthY3RpdmVDb3VudCB8fCAnTm8nfTwvc3Ryb25nPiB7aXRlbVdvcmR9IGxlZnRcbiAg
ICAgIDwvc3Bhbj5cbiAgICApXG4gIH1cblxuICByZW5kZXJGaWx0ZXJMaW5rKGZpbHRlcikge1xu
ICAgIGNvbnN0IHRpdGxlID0gRklMVEVSX1RJVExFU1tmaWx0ZXJdXG4gICAgY29uc3QgeyBmaWx0
ZXI6IHNlbGVjdGVkRmlsdGVyLCBvblNob3cgfSA9IHRoaXMucHJvcHNcblxuICAgIHJldHVybiAo
XG4gICAgICA8YSBjbGFzc05hbWU9e2NsYXNzbmFtZXMoeyBzZWxlY3RlZDogZmlsdGVyID09PSBz
ZWxlY3RlZEZpbHRlciB9KX1cbiAgICAgICAgIHN0eWxlPXt7IGN1cnNvcjogJ3BvaW50ZXInIH19
XG4gICAgICAgICBvbkNsaWNrPXsoKSA9PiBvblNob3coZmlsdGVyKX0+XG4gICAgICAgIHt0aXRs
ZX1cbiAgICAgIDwvYT5cbiAgICApXG4gIH1cblxuICByZW5kZXJDbGVhckJ1dHRvbigpIHtcbiAg
ICBjb25zdCB7IGNvbXBsZXRlZENvdW50LCBvbkNsZWFyQ29tcGxldGVkIH0gPSB0aGlzLnByb3Bz
XG4gICAgaWYgKGNvbXBsZXRlZENvdW50ID4gMCkge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAg
PGJ1dHRvbiBjbGFzc05hbWU9XCJjbGVhci1jb21wbGV0ZWRcIlxuICAgICAgICAgICAgICAgIG9u
Q2xpY2s9e29uQ2xlYXJDb21wbGV0ZWR9ID5cbiAgICAgICAgICBDbGVhciBjb21wbGV0ZWRcbiAg
ICAgICAgPC9idXR0b24+XG4gICAgICApXG4gICAgfVxuICB9XG5cbiAgcmVuZGVyKCkge1xuICAg
IHJldHVybiAoXG4gICAgICA8Zm9vdGVyIGNsYXNzTmFtZT1cImZvb3RlclwiPlxuICAgICAgICB7
dGhpcy5yZW5kZXJUb2RvQ291bnQoKX1cbiAgICAgICAgPHVsIGNsYXNzTmFtZT1cImZpbHRlcnNc
Ij5cbiAgICAgICAgICB7WyBTSE9XX0FMTCwgU0hPV19BQ1RJVkUsIFNIT1dfQ09NUExFVEVEIF0u
bWFwKGZpbHRlciA9PlxuICAgICAgICAgICAgPGxpIGtleT17ZmlsdGVyfT5cbiAgICAgICAgICAg
ICAge3RoaXMucmVuZGVyRmlsdGVyTGluayhmaWx0ZXIpfVxuICAgICAgICAgICAgPC9saT5cbiAg
ICAgICAgICApfVxuICAgICAgICA8L3VsPlxuICAgICAgICB7dGhpcy5yZW5kZXJDbGVhckJ1dHRv
bigpfVxuICAgICAgPC9mb290ZXI+XG4gICAgKVxuICB9XG59XG5cblxuXG4vKiogV0VCUEFDSyBG
T09URVIgKipcbiAqKiAuL3NyYy9jb21wb25lbnRzL0Zvb3Rlci5qc1xuICoqLyIsImltcG9ydCBS
ZWFjdCwgeyBQcm9wVHlwZXMsIENvbXBvbmVudCB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IFRvZG9U
ZXh0SW5wdXQgZnJvbSAnLi9Ub2RvVGV4dElucHV0J1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBI
ZWFkZXIgZXh0ZW5kcyBDb21wb25lbnQge1xuICBzdGF0aWMgcHJvcFR5cGVzID0ge1xuICAgIGFk
ZFRvZG86IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWRcbiAgfVxuXG4gIGhhbmRsZVNhdmUgPSB0
ZXh0ID0+IHtcbiAgICBpZiAodGV4dC5sZW5ndGggIT09IDApIHtcbiAgICAgIHRoaXMucHJvcHMu
YWRkVG9kbyh0ZXh0KVxuICAgIH1cbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICByZXR1cm4gKFxu
ICAgICAgPGhlYWRlciBjbGFzc05hbWU9XCJoZWFkZXJcIj5cbiAgICAgICAgPGgxPnRvZG9zPC9o
MT5cbiAgICAgICAgPFRvZG9UZXh0SW5wdXQgbmV3VG9kb1xuICAgICAgICAgICAgICAgICAgICAg
ICBvblNhdmU9e3RoaXMuaGFuZGxlU2F2ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vo
b2xkZXI9XCJXaGF0IG5lZWRzIHRvIGJlIGRvbmU/XCIgLz5cbiAgICAgIDwvaGVhZGVyPlxuICAg
IClcbiAgfVxufVxuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogLi9zcmMvY29tcG9u
ZW50cy9IZWFkZXIuanNcbiAqKi8iLCJpbXBvcnQgUmVhY3QsIHsgQ29tcG9uZW50LCBQcm9wVHlw
ZXMgfSBmcm9tICdyZWFjdCdcbmltcG9ydCBUb2RvSXRlbSBmcm9tICcuL1RvZG9JdGVtJ1xuaW1w
b3J0IEZvb3RlciBmcm9tICcuL0Zvb3RlcidcbmltcG9ydCB7IFNIT1dfQUxMLCBTSE9XX0NPTVBM
RVRFRCwgU0hPV19BQ1RJVkUgfSBmcm9tICcuLi9jb25zdGFudHMvVG9kb0ZpbHRlcnMnXG5cbmNv
bnN0IFRPRE9fRklMVEVSUyA9IHtcbiAgW1NIT1dfQUxMXTogKCkgPT4gdHJ1ZSxcbiAgW1NIT1df
QUNUSVZFXTogdG9kbyA9PiAhdG9kby5jb21wbGV0ZWQsXG4gIFtTSE9XX0NPTVBMRVRFRF06IHRv
ZG8gPT4gdG9kby5jb21wbGV0ZWRcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTWFpblNlY3Rp
b24gZXh0ZW5kcyBDb21wb25lbnQge1xuICBzdGF0aWMgcHJvcFR5cGVzID0ge1xuICAgIHRvZG9z
OiBQcm9wVHlwZXMuYXJyYXkuaXNSZXF1aXJlZCxcbiAgICBhY3Rpb25zOiBQcm9wVHlwZXMub2Jq
ZWN0LmlzUmVxdWlyZWRcbiAgfVxuXG4gIHN0YXRlID0geyBmaWx0ZXI6IFNIT1dfQUxMIH1cblxu
ICBoYW5kbGVDbGVhckNvbXBsZXRlZCA9ICgpID0+IHtcbiAgICB0aGlzLnByb3BzLmFjdGlvbnMu
Y2xlYXJDb21wbGV0ZWQoKVxuICB9XG5cbiAgaGFuZGxlU2hvdyA9IGZpbHRlciA9PiB7XG4gICAg
dGhpcy5zZXRTdGF0ZSh7IGZpbHRlciB9KVxuICB9XG5cbiAgcmVuZGVyVG9nZ2xlQWxsKGNvbXBs
ZXRlZENvdW50KSB7XG4gICAgY29uc3QgeyB0b2RvcywgYWN0aW9ucyB9ID0gdGhpcy5wcm9wc1xu
ICAgIGlmICh0b2Rvcy5sZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICA8aW5w
dXQgY2xhc3NOYW1lPVwidG9nZ2xlLWFsbFwiXG4gICAgICAgICAgICAgICB0eXBlPVwiY2hlY2ti
b3hcIlxuICAgICAgICAgICAgICAgY2hlY2tlZD17Y29tcGxldGVkQ291bnQgPT09IHRvZG9zLmxl
bmd0aH1cbiAgICAgICAgICAgICAgIG9uQ2hhbmdlPXthY3Rpb25zLmNvbXBsZXRlQWxsfSAvPlxu
ICAgICAgKVxuICAgIH1cbiAgfVxuXG4gIHJlbmRlckZvb3Rlcihjb21wbGV0ZWRDb3VudCkge1xu
ICAgIGNvbnN0IHsgdG9kb3MgfSA9IHRoaXMucHJvcHNcbiAgICBjb25zdCB7IGZpbHRlciB9ID0g
dGhpcy5zdGF0ZVxuICAgIGNvbnN0IGFjdGl2ZUNvdW50ID0gdG9kb3MubGVuZ3RoIC0gY29tcGxl
dGVkQ291bnRcblxuICAgIGlmICh0b2Rvcy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiAoXG4gICAg
ICAgIDxGb290ZXIgY29tcGxldGVkQ291bnQ9e2NvbXBsZXRlZENvdW50fVxuICAgICAgICAgICAg
ICAgIGFjdGl2ZUNvdW50PXthY3RpdmVDb3VudH1cbiAgICAgICAgICAgICAgICBmaWx0ZXI9e2Zp
bHRlcn1cbiAgICAgICAgICAgICAgICBvbkNsZWFyQ29tcGxldGVkPXt0aGlzLmhhbmRsZUNsZWFy
Q29tcGxldGVkLmJpbmQodGhpcyl9XG4gICAgICAgICAgICAgICAgb25TaG93PXt0aGlzLmhhbmRs
ZVNob3cuYmluZCh0aGlzKX0gLz5cbiAgICAgIClcbiAgICB9XG4gIH1cblxuICByZW5kZXIoKSB7
XG4gICAgY29uc3QgeyB0b2RvcywgYWN0aW9ucyB9ID0gdGhpcy5wcm9wc1xuICAgIGNvbnN0IHsg
ZmlsdGVyIH0gPSB0aGlzLnN0YXRlXG5cbiAgICBjb25zdCBmaWx0ZXJlZFRvZG9zID0gdG9kb3Mu
ZmlsdGVyKFRPRE9fRklMVEVSU1tmaWx0ZXJdKVxuICAgIGNvbnN0IGNvbXBsZXRlZENvdW50ID0g
dG9kb3MucmVkdWNlKChjb3VudCwgdG9kbykgPT5cbiAgICAgIHRvZG8uY29tcGxldGVkID8gY291
bnQgKyAxIDogY291bnQsXG4gICAgICAwXG4gICAgKVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxz
ZWN0aW9uIGNsYXNzTmFtZT1cIm1haW5cIj5cbiAgICAgICAge3RoaXMucmVuZGVyVG9nZ2xlQWxs
KGNvbXBsZXRlZENvdW50KX1cbiAgICAgICAgPHVsIGNsYXNzTmFtZT1cInRvZG8tbGlzdFwiPlxu
ICAgICAgICAgIHtmaWx0ZXJlZFRvZG9zLm1hcCh0b2RvID0+XG4gICAgICAgICAgICA8VG9kb0l0
ZW0ga2V5PXt0b2RvLmlkfSB0b2RvPXt0b2RvfSB7Li4uYWN0aW9uc30gLz5cbiAgICAgICAgICAp
fVxuICAgICAgICA8L3VsPlxuICAgICAgICB7dGhpcy5yZW5kZXJGb290ZXIoY29tcGxldGVkQ291
bnQpfVxuICAgICAgPC9zZWN0aW9uPlxuICAgIClcbiAgfVxufVxuXG5cblxuLyoqIFdFQlBBQ0sg
Rk9PVEVSICoqXG4gKiogLi9zcmMvY29tcG9uZW50cy9NYWluU2VjdGlvbi5qc1xuICoqLyIsImlt
cG9ydCBSZWFjdCwgeyBDb21wb25lbnQsIFByb3BUeXBlcyB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0
IGNsYXNzbmFtZXMgZnJvbSAnY2xhc3NuYW1lcydcbmltcG9ydCBUb2RvVGV4dElucHV0IGZyb20g
Jy4vVG9kb1RleHRJbnB1dCdcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVG9kb0l0ZW0gZXh0ZW5k
cyBDb21wb25lbnQge1xuICBzdGF0aWMgcHJvcFR5cGVzID0ge1xuICAgIHRvZG86IFByb3BUeXBl
cy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgICBlZGl0VG9kbzogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1
aXJlZCxcbiAgICBkZWxldGVUb2RvOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICAgIGNv
bXBsZXRlVG9kbzogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZFxuICB9XG5cbiAgc3RhdGUgPSB7
XG4gICAgZWRpdGluZzogZmFsc2VcbiAgfVxuXG4gIGhhbmRsZURvdWJsZUNsaWNrID0gKCkgPT4g
e1xuICAgIHRoaXMuc2V0U3RhdGUoeyBlZGl0aW5nOiB0cnVlIH0pXG4gIH1cblxuICBoYW5kbGVT
YXZlID0gKGlkLCB0ZXh0KSA9PiB7XG4gICAgaWYgKHRleHQubGVuZ3RoID09PSAwKSB7XG4gICAg
ICB0aGlzLnByb3BzLmRlbGV0ZVRvZG8oaWQpXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucHJv
cHMuZWRpdFRvZG8oaWQsIHRleHQpXG4gICAgfVxuICAgIHRoaXMuc2V0U3RhdGUoeyBlZGl0aW5n
OiBmYWxzZSB9KVxuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHsgdG9kbywgY29tcGxl
dGVUb2RvLCBkZWxldGVUb2RvIH0gPSB0aGlzLnByb3BzXG5cbiAgICBsZXQgZWxlbWVudFxuICAg
IGlmICh0aGlzLnN0YXRlLmVkaXRpbmcpIHtcbiAgICAgIGVsZW1lbnQgPSAoXG4gICAgICAgIDxU
b2RvVGV4dElucHV0IHRleHQ9e3RvZG8udGV4dH1cbiAgICAgICAgICAgICAgICAgICAgICAgZWRp
dGluZz17dGhpcy5zdGF0ZS5lZGl0aW5nfVxuICAgICAgICAgICAgICAgICAgICAgICBvblNhdmU9
eyh0ZXh0KSA9PiB0aGlzLmhhbmRsZVNhdmUodG9kby5pZCwgdGV4dCl9IC8+XG4gICAgICApXG4g
ICAgfSBlbHNlIHtcbiAgICAgIGVsZW1lbnQgPSAoXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwi
dmlld1wiPlxuICAgICAgICAgIDxpbnB1dCBjbGFzc05hbWU9XCJ0b2dnbGVcIlxuICAgICAgICAg
ICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICAgICBjaGVja2VkPXt0b2Rv
LmNvbXBsZXRlZH1cbiAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eygpID0+IGNvbXBsZXRlVG9k
byh0b2RvLmlkKX0gLz5cbiAgICAgICAgICA8bGFiZWwgb25Eb3VibGVDbGljaz17dGhpcy5oYW5k
bGVEb3VibGVDbGlja30+XG4gICAgICAgICAgICB7dG9kby50ZXh0fVxuICAgICAgICAgIDwvbGFi
ZWw+XG4gICAgICAgICAgPGJ1dHRvbiBjbGFzc05hbWU9XCJkZXN0cm95XCJcbiAgICAgICAgICAg
ICAgICAgIG9uQ2xpY2s9eygpID0+IGRlbGV0ZVRvZG8odG9kby5pZCl9IC8+XG4gICAgICAgIDwv
ZGl2PlxuICAgICAgKVxuICAgIH1cblxuICAgIHJldHVybiAoXG4gICAgICA8bGkgY2xhc3NOYW1l
PXtjbGFzc25hbWVzKHtcbiAgICAgICAgY29tcGxldGVkOiB0b2RvLmNvbXBsZXRlZCxcbiAgICAg
ICAgZWRpdGluZzogdGhpcy5zdGF0ZS5lZGl0aW5nXG4gICAgICB9KX0+XG4gICAgICAgIHtlbGVt
ZW50fVxuICAgICAgPC9saT5cbiAgICApXG4gIH1cbn1cblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RF
UiAqKlxuICoqIC4vc3JjL2NvbXBvbmVudHMvVG9kb0l0ZW0uanNcbiAqKi8iLCJpbXBvcnQgUmVh
Y3QsIHsgUHJvcFR5cGVzIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBiaW5kQWN0aW9uQ3JlYXRv
cnMgfSBmcm9tICdyZWR1eCdcbmltcG9ydCB7IGNvbm5lY3QgfSBmcm9tICdyZWFjdC1yZWR1eCdc
bmltcG9ydCBIZWFkZXIgZnJvbSAnLi4vY29tcG9uZW50cy9IZWFkZXInXG5pbXBvcnQgTWFpblNl
Y3Rpb24gZnJvbSAnLi4vY29tcG9uZW50cy9NYWluU2VjdGlvbidcbmltcG9ydCAqIGFzIFRvZG9B
Y3Rpb25zIGZyb20gJy4uL2FjdGlvbnMnXG5cbmNvbnN0IEFwcCA9ICh7dG9kb3MsIGFjdGlvbnN9
KSA9PiAoXG4gIDxkaXY+XG4gICAgPEhlYWRlciBhZGRUb2RvPXthY3Rpb25zLmFkZFRvZG99IC8+
XG4gICAgPE1haW5TZWN0aW9uIHRvZG9zPXt0b2Rvc30gYWN0aW9ucz17YWN0aW9uc30gLz5cbiAg
PC9kaXY+XG4pXG5cbkFwcC5wcm9wVHlwZXMgPSB7XG4gIHRvZG9zOiBQcm9wVHlwZXMuYXJyYXku
aXNSZXF1aXJlZCxcbiAgYWN0aW9uczogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkXG59XG5c
bmNvbnN0IG1hcFN0YXRlVG9Qcm9wcyA9IHN0YXRlID0+ICh7XG4gIHRvZG9zOiBzdGF0ZS50b2Rv
c1xufSlcblxuY29uc3QgbWFwRGlzcGF0Y2hUb1Byb3BzID0gZGlzcGF0Y2ggPT4gKHtcbiAgICBh
Y3Rpb25zOiBiaW5kQWN0aW9uQ3JlYXRvcnMoVG9kb0FjdGlvbnMsIGRpc3BhdGNoKVxufSlcblxu
ZXhwb3J0IGRlZmF1bHQgY29ubmVjdChcbiAgbWFwU3RhdGVUb1Byb3BzLFxuICBtYXBEaXNwYXRj
aFRvUHJvcHNcbikoQXBwKVxuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogLi9zcmMv
Y29udGFpbmVycy9BcHAuanNcbiAqKi8iLCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBv
cnQgeyByZW5kZXIgfSBmcm9tICdyZWFjdC1kb20nXG5pbXBvcnQgeyBjcmVhdGVTdG9yZSB9IGZy
b20gJ3JlZHV4J1xuaW1wb3J0IHsgUHJvdmlkZXIgfSBmcm9tICdyZWFjdC1yZWR1eCdcbmltcG9y
dCBBcHAgZnJvbSAnLi9jb250YWluZXJzL0FwcCdcbmltcG9ydCByZWR1Y2VyIGZyb20gJy4vcmVk
dWNlcnMnXG5pbXBvcnQgJ3RvZG9tdmMtYXBwLWNzcy9pbmRleC5jc3MnXG5cbmNvbnN0IHN0b3Jl
ID0gY3JlYXRlU3RvcmUocmVkdWNlcilcblxucmVuZGVyKFxuICA8UHJvdmlkZXIgc3RvcmU9e3N0
b3JlfT5cbiAgICA8QXBwIC8+XG4gIDwvUHJvdmlkZXI+LFxuICBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgncm9vdCcpXG4pXG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiAuL3NyYy9p
bmRleC5qc1xuICoqLyIsImltcG9ydCB7IGNvbWJpbmVSZWR1Y2VycyB9IGZyb20gJ3JlZHV4J1xu
aW1wb3J0IHRvZG9zIGZyb20gJy4vdG9kb3MnXG5cbmNvbnN0IHJvb3RSZWR1Y2VyID0gY29tYmlu
ZVJlZHVjZXJzKHtcbiAgdG9kb3Ncbn0pXG5cbmV4cG9ydCBkZWZhdWx0IHJvb3RSZWR1Y2VyXG5c
blxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiAuL3NyYy9yZWR1Y2Vycy9pbmRleC5qc1xu
ICoqLyIsImltcG9ydCB7IEFERF9UT0RPLCBERUxFVEVfVE9ETywgRURJVF9UT0RPLCBDT01QTEVU
RV9UT0RPLCBDT01QTEVURV9BTEwsIENMRUFSX0NPTVBMRVRFRCB9IGZyb20gJy4uL2NvbnN0YW50
cy9BY3Rpb25UeXBlcydcblxuY29uc3QgaW5pdGlhbFN0YXRlID0gW11cblxuZXhwb3J0IGRlZmF1
bHQgZnVuY3Rpb24gdG9kb3Moc3RhdGUgPSBpbml0aWFsU3RhdGUsIGFjdGlvbikge1xuICBzd2l0
Y2ggKGFjdGlvbi50eXBlKSB7XG4gICAgY2FzZSBBRERfVE9ETzpcbiAgICAgIHJldHVybiBbXG4g
ICAgICAgIHtcbiAgICAgICAgICBpZDogc3RhdGUucmVkdWNlKChtYXhJZCwgdG9kbykgPT4gTWF0
aC5tYXgodG9kby5pZCwgbWF4SWQpLCAtMSkgKyAxLFxuICAgICAgICAgIGNvbXBsZXRlZDogZmFs
c2UsXG4gICAgICAgICAgdGV4dDogYWN0aW9uLnRleHRcbiAgICAgICAgfSxcbiAgICAgICAgLi4u
c3RhdGVcbiAgICAgIF1cblxuICAgIGNhc2UgREVMRVRFX1RPRE86XG4gICAgICByZXR1cm4gc3Rh
dGUuZmlsdGVyKHRvZG8gPT5cbiAgICAgICAgdG9kby5pZCAhPT0gYWN0aW9uLmlkXG4gICAgICAp
XG5cbiAgICBjYXNlIEVESVRfVE9ETzpcbiAgICAgIHJldHVybiBzdGF0ZS5tYXAodG9kbyA9Plxu
ICAgICAgICB0b2RvLmlkID09PSBhY3Rpb24uaWQgP1xuICAgICAgICAgIHsgLi4udG9kbywgdGV4
dDogYWN0aW9uLnRleHQgfSA6XG4gICAgICAgICAgdG9kb1xuICAgICAgKVxuXG4gICAgY2FzZSBD
T01QTEVURV9UT0RPOlxuICAgICAgcmV0dXJuIHN0YXRlLm1hcCh0b2RvID0+XG4gICAgICAgIHRv
ZG8uaWQgPT09IGFjdGlvbi5pZCA/XG4gICAgICAgICAgeyAuLi50b2RvLCBjb21wbGV0ZWQ6ICF0
b2RvLmNvbXBsZXRlZCB9IDpcbiAgICAgICAgICB0b2RvXG4gICAgICApXG5cbiAgICBjYXNlIENP
TVBMRVRFX0FMTDpcbiAgICAgIGNvbnN0IGFyZUFsbE1hcmtlZCA9IHN0YXRlLmV2ZXJ5KHRvZG8g
PT4gdG9kby5jb21wbGV0ZWQpXG4gICAgICByZXR1cm4gc3RhdGUubWFwKHRvZG8gPT4gKHtcbiAg
ICAgICAgLi4udG9kbyxcbiAgICAgICAgY29tcGxldGVkOiAhYXJlQWxsTWFya2VkXG4gICAgICB9
KSlcblxuICAgIGNhc2UgQ0xFQVJfQ09NUExFVEVEOlxuICAgICAgcmV0dXJuIHN0YXRlLmZpbHRl
cih0b2RvID0+IHRvZG8uY29tcGxldGVkID09PSBmYWxzZSlcblxuICAgIGRlZmF1bHQ6XG4gICAg
ICByZXR1cm4gc3RhdGVcbiAgfVxufVxuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiog
Li9zcmMvcmVkdWNlcnMvdG9kb3MuanNcbiAqKi8iLCIndXNlIHN0cmljdCc7XG4vKiBlc2xpbnQt
ZGlzYWJsZSBuby11bnVzZWQtdmFycyAqL1xudmFyIGhhc093blByb3BlcnR5ID0gT2JqZWN0LnBy
b3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcbnZhciBwcm9wSXNFbnVtZXJhYmxlID0gT2JqZWN0LnBy
b3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZTtcblxuZnVuY3Rpb24gdG9PYmplY3QodmFsKSB7
XG5cdGlmICh2YWwgPT09IG51bGwgfHwgdmFsID09PSB1bmRlZmluZWQpIHtcblx0XHR0aHJvdyBu
ZXcgVHlwZUVycm9yKCdPYmplY3QuYXNzaWduIGNhbm5vdCBiZSBjYWxsZWQgd2l0aCBudWxsIG9y
IHVuZGVmaW5lZCcpO1xuXHR9XG5cblx0cmV0dXJuIE9iamVjdCh2YWwpO1xufVxuXG5mdW5jdGlv
biBzaG91bGRVc2VOYXRpdmUoKSB7XG5cdHRyeSB7XG5cdFx0aWYgKCFPYmplY3QuYXNzaWduKSB7
XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXG5cdFx0Ly8gRGV0ZWN0IGJ1Z2d5IHByb3Bl
cnR5IGVudW1lcmF0aW9uIG9yZGVyIGluIG9sZGVyIFY4IHZlcnNpb25zLlxuXG5cdFx0Ly8gaHR0
cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL3Y4L2lzc3Vlcy9kZXRhaWw/aWQ9NDExOFxuXHRcdHZh
ciB0ZXN0MSA9IG5ldyBTdHJpbmcoJ2FiYycpOyAgLy8gZXNsaW50LWRpc2FibGUtbGluZVxuXHRc
dHRlc3QxWzVdID0gJ2RlJztcblx0XHRpZiAoT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGVz
dDEpWzBdID09PSAnNScpIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cblx0XHQvLyBo
dHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvdjgvaXNzdWVzL2RldGFpbD9pZD0zMDU2XG5cdFx0
dmFyIHRlc3QyID0ge307XG5cdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCAxMDsgaSsrKSB7XG5cdFx0
XHR0ZXN0MlsnXycgKyBTdHJpbmcuZnJvbUNoYXJDb2RlKGkpXSA9IGk7XG5cdFx0fVxuXHRcdHZh
ciBvcmRlcjIgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0ZXN0MikubWFwKGZ1bmN0aW9u
IChuKSB7XG5cdFx0XHRyZXR1cm4gdGVzdDJbbl07XG5cdFx0fSk7XG5cdFx0aWYgKG9yZGVyMi5q
b2luKCcnKSAhPT0gJzAxMjM0NTY3ODknKSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxu
XG5cdFx0Ly8gaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL3Y4L2lzc3Vlcy9kZXRhaWw/aWQ9
MzA1NlxuXHRcdHZhciB0ZXN0MyA9IHt9O1xuXHRcdCdhYmNkZWZnaGlqa2xtbm9wcXJzdCcuc3Bs
aXQoJycpLmZvckVhY2goZnVuY3Rpb24gKGxldHRlcikge1xuXHRcdFx0dGVzdDNbbGV0dGVyXSA9
IGxldHRlcjtcblx0XHR9KTtcblx0XHRpZiAoT2JqZWN0LmtleXMoT2JqZWN0LmFzc2lnbih7fSwg
dGVzdDMpKS5qb2luKCcnKSAhPT1cblx0XHRcdFx0J2FiY2RlZmdoaWprbG1ub3BxcnN0Jykge1xu
XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblxuXHRcdHJldHVybiB0cnVlO1xuXHR9IGNhdGNo
IChlKSB7XG5cdFx0Ly8gV2UgZG9uJ3QgZXhwZWN0IGFueSBvZiB0aGUgYWJvdmUgdG8gdGhyb3cs
IGJ1dCBiZXR0ZXIgdG8gYmUgc2FmZS5cblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cbn1cblxubW9k
dWxlLmV4cG9ydHMgPSBzaG91bGRVc2VOYXRpdmUoKSA/IE9iamVjdC5hc3NpZ24gOiBmdW5jdGlv
biAodGFyZ2V0LCBzb3VyY2UpIHtcblx0dmFyIGZyb207XG5cdHZhciB0byA9IHRvT2JqZWN0KHRh
cmdldCk7XG5cdHZhciBzeW1ib2xzO1xuXG5cdGZvciAodmFyIHMgPSAxOyBzIDwgYXJndW1lbnRz
Lmxlbmd0aDsgcysrKSB7XG5cdFx0ZnJvbSA9IE9iamVjdChhcmd1bWVudHNbc10pO1xuXG5cdFx0
Zm9yICh2YXIga2V5IGluIGZyb20pIHtcblx0XHRcdGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKGZy
b20sIGtleSkpIHtcblx0XHRcdFx0dG9ba2V5XSA9IGZyb21ba2V5XTtcblx0XHRcdH1cblx0XHR9
XG5cblx0XHRpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykge1xuXHRcdFx0c3ltYm9s
cyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZnJvbSk7XG5cdFx0XHRmb3IgKHZhciBp
ID0gMDsgaSA8IHN5bWJvbHMubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0aWYgKHByb3BJc0VudW1l
cmFibGUuY2FsbChmcm9tLCBzeW1ib2xzW2ldKSkge1xuXHRcdFx0XHRcdHRvW3N5bWJvbHNbaV1d
ID0gZnJvbVtzeW1ib2xzW2ldXTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5c
dHJldHVybiB0bztcbn07XG5cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZP
T1RFUlxuICoqIC4vfi9yZWFjdC1zY3JpcHRzL34vb2JqZWN0LWFzc2lnbi9pbmRleC5qc1xuICoq
IG1vZHVsZSBpZCA9IDIwOFxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiJ3VzZSBzdHJp
Y3QnO1xuXG4vL1RoaXMgZmlsZSBjb250YWlucyB0aGUgRVM2IGV4dGVuc2lvbnMgdG8gdGhlIGNv
cmUgUHJvbWlzZXMvQSsgQVBJXG5cbnZhciBQcm9taXNlID0gcmVxdWlyZSgnLi9jb3JlLmpzJyk7
XG5cbm1vZHVsZS5leHBvcnRzID0gUHJvbWlzZTtcblxuLyogU3RhdGljIEZ1bmN0aW9ucyAqL1xu
XG52YXIgVFJVRSA9IHZhbHVlUHJvbWlzZSh0cnVlKTtcbnZhciBGQUxTRSA9IHZhbHVlUHJvbWlz
ZShmYWxzZSk7XG52YXIgTlVMTCA9IHZhbHVlUHJvbWlzZShudWxsKTtcbnZhciBVTkRFRklORUQg
PSB2YWx1ZVByb21pc2UodW5kZWZpbmVkKTtcbnZhciBaRVJPID0gdmFsdWVQcm9taXNlKDApO1xu
dmFyIEVNUFRZU1RSSU5HID0gdmFsdWVQcm9taXNlKCcnKTtcblxuZnVuY3Rpb24gdmFsdWVQcm9t
aXNlKHZhbHVlKSB7XG4gIHZhciBwID0gbmV3IFByb21pc2UoUHJvbWlzZS5fNjEpO1xuICBwLl84
MSA9IDE7XG4gIHAuXzY1ID0gdmFsdWU7XG4gIHJldHVybiBwO1xufVxuUHJvbWlzZS5yZXNvbHZl
ID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gIGlmICh2YWx1ZSBpbnN0YW5jZW9mIFByb21pc2UpIHJl
dHVybiB2YWx1ZTtcblxuICBpZiAodmFsdWUgPT09IG51bGwpIHJldHVybiBOVUxMO1xuICBpZiAo
dmFsdWUgPT09IHVuZGVmaW5lZCkgcmV0dXJuIFVOREVGSU5FRDtcbiAgaWYgKHZhbHVlID09PSB0
cnVlKSByZXR1cm4gVFJVRTtcbiAgaWYgKHZhbHVlID09PSBmYWxzZSkgcmV0dXJuIEZBTFNFO1xu
ICBpZiAodmFsdWUgPT09IDApIHJldHVybiBaRVJPO1xuICBpZiAodmFsdWUgPT09ICcnKSByZXR1
cm4gRU1QVFlTVFJJTkc7XG5cbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgfHwgdHlw
ZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgdHJ5IHtcbiAgICAgIHZhciB0aGVuID0g
dmFsdWUudGhlbjtcbiAgICAgIGlmICh0eXBlb2YgdGhlbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAg
ICAgICByZXR1cm4gbmV3IFByb21pc2UodGhlbi5iaW5kKHZhbHVlKSk7XG4gICAgICB9XG4gICAg
fSBjYXRjaCAoZXgpIHtcbiAgICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2
ZSwgcmVqZWN0KSB7XG4gICAgICAgIHJlamVjdChleCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1c
biAgcmV0dXJuIHZhbHVlUHJvbWlzZSh2YWx1ZSk7XG59O1xuXG5Qcm9taXNlLmFsbCA9IGZ1bmN0
aW9uIChhcnIpIHtcbiAgdmFyIGFyZ3MgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcnIp
O1xuXG4gIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4g
ICAgaWYgKGFyZ3MubGVuZ3RoID09PSAwKSByZXR1cm4gcmVzb2x2ZShbXSk7XG4gICAgdmFyIHJl
bWFpbmluZyA9IGFyZ3MubGVuZ3RoO1xuICAgIGZ1bmN0aW9uIHJlcyhpLCB2YWwpIHtcbiAgICAg
IGlmICh2YWwgJiYgKHR5cGVvZiB2YWwgPT09ICdvYmplY3QnIHx8IHR5cGVvZiB2YWwgPT09ICdm
dW5jdGlvbicpKSB7XG4gICAgICAgIGlmICh2YWwgaW5zdGFuY2VvZiBQcm9taXNlICYmIHZhbC50
aGVuID09PSBQcm9taXNlLnByb3RvdHlwZS50aGVuKSB7XG4gICAgICAgICAgd2hpbGUgKHZhbC5f
ODEgPT09IDMpIHtcbiAgICAgICAgICAgIHZhbCA9IHZhbC5fNjU7XG4gICAgICAgICAgfVxuICAg
ICAgICAgIGlmICh2YWwuXzgxID09PSAxKSByZXR1cm4gcmVzKGksIHZhbC5fNjUpO1xuICAgICAg
ICAgIGlmICh2YWwuXzgxID09PSAyKSByZWplY3QodmFsLl82NSk7XG4gICAgICAgICAgdmFsLnRo
ZW4oZnVuY3Rpb24gKHZhbCkge1xuICAgICAgICAgICAgcmVzKGksIHZhbCk7XG4gICAgICAgICAg
fSwgcmVqZWN0KTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAg
ICAgdmFyIHRoZW4gPSB2YWwudGhlbjtcbiAgICAgICAgICBpZiAodHlwZW9mIHRoZW4gPT09ICdm
dW5jdGlvbicpIHtcbiAgICAgICAgICAgIHZhciBwID0gbmV3IFByb21pc2UodGhlbi5iaW5kKHZh
bCkpO1xuICAgICAgICAgICAgcC50aGVuKGZ1bmN0aW9uICh2YWwpIHtcbiAgICAgICAgICAgICAg
cmVzKGksIHZhbCk7XG4gICAgICAgICAgICB9LCByZWplY3QpO1xuICAgICAgICAgICAgcmV0dXJu
O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgYXJnc1tpXSA9IHZhbDtc
biAgICAgIGlmICgtLXJlbWFpbmluZyA9PT0gMCkge1xuICAgICAgICByZXNvbHZlKGFyZ3MpO1xu
ICAgICAgfVxuICAgIH1cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFyZ3MubGVuZ3RoOyBpKysp
IHtcbiAgICAgIHJlcyhpLCBhcmdzW2ldKTtcbiAgICB9XG4gIH0pO1xufTtcblxuUHJvbWlzZS5y
ZWplY3QgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9u
IChyZXNvbHZlLCByZWplY3QpIHtcbiAgICByZWplY3QodmFsdWUpO1xuICB9KTtcbn07XG5cblBy
b21pc2UucmFjZSA9IGZ1bmN0aW9uICh2YWx1ZXMpIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1
bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICB2YWx1ZXMuZm9yRWFjaChmdW5jdGlvbih2
YWx1ZSl7XG4gICAgICBQcm9taXNlLnJlc29sdmUodmFsdWUpLnRoZW4ocmVzb2x2ZSwgcmVqZWN0
KTtcbiAgICB9KTtcbiAgfSk7XG59O1xuXG4vKiBQcm90b3R5cGUgTWV0aG9kcyAqL1xuXG5Qcm9t
aXNlLnByb3RvdHlwZVsnY2F0Y2gnXSA9IGZ1bmN0aW9uIChvblJlamVjdGVkKSB7XG4gIHJldHVy
biB0aGlzLnRoZW4obnVsbCwgb25SZWplY3RlZCk7XG59O1xuXG5cblxuLyoqKioqKioqKioqKioq
KioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3Qtc2NyaXB0cy9+L3Byb21pc2Uv
bGliL2VzNi1leHRlbnNpb25zLmpzXG4gKiogbW9kdWxlIGlkID0gMjA5XG4gKiogbW9kdWxlIGNo
dW5rcyA9IDBcbiAqKi8iLCIndXNlIHN0cmljdCc7XG5cbnZhciBQcm9taXNlID0gcmVxdWlyZSgn
Li9jb3JlJyk7XG5cbnZhciBERUZBVUxUX1dISVRFTElTVCA9IFtcbiAgUmVmZXJlbmNlRXJyb3Is
XG4gIFR5cGVFcnJvcixcbiAgUmFuZ2VFcnJvclxuXTtcblxudmFyIGVuYWJsZWQgPSBmYWxzZTtc
bmV4cG9ydHMuZGlzYWJsZSA9IGRpc2FibGU7XG5mdW5jdGlvbiBkaXNhYmxlKCkge1xuICBlbmFi
bGVkID0gZmFsc2U7XG4gIFByb21pc2UuXzEwID0gbnVsbDtcbiAgUHJvbWlzZS5fOTcgPSBudWxs
O1xufVxuXG5leHBvcnRzLmVuYWJsZSA9IGVuYWJsZTtcbmZ1bmN0aW9uIGVuYWJsZShvcHRpb25z
KSB7XG4gIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuICBpZiAoZW5hYmxlZCkgZGlzYWJsZSgp
O1xuICBlbmFibGVkID0gdHJ1ZTtcbiAgdmFyIGlkID0gMDtcbiAgdmFyIGRpc3BsYXlJZCA9IDA7
XG4gIHZhciByZWplY3Rpb25zID0ge307XG4gIFByb21pc2UuXzEwID0gZnVuY3Rpb24gKHByb21p
c2UpIHtcbiAgICBpZiAoXG4gICAgICBwcm9taXNlLl84MSA9PT0gMiAmJiAvLyBJUyBSRUpFQ1RF
RFxuICAgICAgcmVqZWN0aW9uc1twcm9taXNlLl83Ml1cbiAgICApIHtcbiAgICAgIGlmIChyZWpl
Y3Rpb25zW3Byb21pc2UuXzcyXS5sb2dnZWQpIHtcbiAgICAgICAgb25IYW5kbGVkKHByb21pc2Uu
XzcyKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNsZWFyVGltZW91dChyZWplY3Rpb25zW3By
b21pc2UuXzcyXS50aW1lb3V0KTtcbiAgICAgIH1cbiAgICAgIGRlbGV0ZSByZWplY3Rpb25zW3By
b21pc2UuXzcyXTtcbiAgICB9XG4gIH07XG4gIFByb21pc2UuXzk3ID0gZnVuY3Rpb24gKHByb21p
c2UsIGVycikge1xuICAgIGlmIChwcm9taXNlLl80NSA9PT0gMCkgeyAvLyBub3QgeWV0IGhhbmRs
ZWRcbiAgICAgIHByb21pc2UuXzcyID0gaWQrKztcbiAgICAgIHJlamVjdGlvbnNbcHJvbWlzZS5f
NzJdID0ge1xuICAgICAgICBkaXNwbGF5SWQ6IG51bGwsXG4gICAgICAgIGVycm9yOiBlcnIsXG4g
ICAgICAgIHRpbWVvdXQ6IHNldFRpbWVvdXQoXG4gICAgICAgICAgb25VbmhhbmRsZWQuYmluZChu
dWxsLCBwcm9taXNlLl83MiksXG4gICAgICAgICAgLy8gRm9yIHJlZmVyZW5jZSBlcnJvcnMgYW5k
IHR5cGUgZXJyb3JzLCB0aGlzIGFsbW9zdCBhbHdheXNcbiAgICAgICAgICAvLyBtZWFucyB0aGUg
cHJvZ3JhbW1lciBtYWRlIGEgbWlzdGFrZSwgc28gbG9nIHRoZW0gYWZ0ZXIganVzdFxuICAgICAg
ICAgIC8vIDEwMG1zXG4gICAgICAgICAgLy8gb3RoZXJ3aXNlLCB3YWl0IDIgc2Vjb25kcyB0byBz
ZWUgaWYgdGhleSBnZXQgaGFuZGxlZFxuICAgICAgICAgIG1hdGNoV2hpdGVsaXN0KGVyciwgREVG
QVVMVF9XSElURUxJU1QpXG4gICAgICAgICAgICA/IDEwMFxuICAgICAgICAgICAgOiAyMDAwXG4g
ICAgICAgICksXG4gICAgICAgIGxvZ2dlZDogZmFsc2VcbiAgICAgIH07XG4gICAgfVxuICB9O1xu
ICBmdW5jdGlvbiBvblVuaGFuZGxlZChpZCkge1xuICAgIGlmIChcbiAgICAgIG9wdGlvbnMuYWxs
UmVqZWN0aW9ucyB8fFxuICAgICAgbWF0Y2hXaGl0ZWxpc3QoXG4gICAgICAgIHJlamVjdGlvbnNb
aWRdLmVycm9yLFxuICAgICAgICBvcHRpb25zLndoaXRlbGlzdCB8fCBERUZBVUxUX1dISVRFTElT
VFxuICAgICAgKVxuICAgICkge1xuICAgICAgcmVqZWN0aW9uc1tpZF0uZGlzcGxheUlkID0gZGlz
cGxheUlkKys7XG4gICAgICBpZiAob3B0aW9ucy5vblVuaGFuZGxlZCkge1xuICAgICAgICByZWpl
Y3Rpb25zW2lkXS5sb2dnZWQgPSB0cnVlO1xuICAgICAgICBvcHRpb25zLm9uVW5oYW5kbGVkKFxu
ICAgICAgICAgIHJlamVjdGlvbnNbaWRdLmRpc3BsYXlJZCxcbiAgICAgICAgICByZWplY3Rpb25z
W2lkXS5lcnJvclxuICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVqZWN0aW9u
c1tpZF0ubG9nZ2VkID0gdHJ1ZTtcbiAgICAgICAgbG9nRXJyb3IoXG4gICAgICAgICAgcmVqZWN0
aW9uc1tpZF0uZGlzcGxheUlkLFxuICAgICAgICAgIHJlamVjdGlvbnNbaWRdLmVycm9yXG4gICAg
ICAgICk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGZ1bmN0aW9uIG9uSGFuZGxlZChpZCkge1xu
ICAgIGlmIChyZWplY3Rpb25zW2lkXS5sb2dnZWQpIHtcbiAgICAgIGlmIChvcHRpb25zLm9uSGFu
ZGxlZCkge1xuICAgICAgICBvcHRpb25zLm9uSGFuZGxlZChyZWplY3Rpb25zW2lkXS5kaXNwbGF5
SWQsIHJlamVjdGlvbnNbaWRdLmVycm9yKTtcbiAgICAgIH0gZWxzZSBpZiAoIXJlamVjdGlvbnNb
aWRdLm9uVW5oYW5kbGVkKSB7XG4gICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAnUHJv
bWlzZSBSZWplY3Rpb24gSGFuZGxlZCAoaWQ6ICcgKyByZWplY3Rpb25zW2lkXS5kaXNwbGF5SWQg
KyAnKTonXG4gICAgICAgICk7XG4gICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAnICBU
aGlzIG1lYW5zIHlvdSBjYW4gaWdub3JlIGFueSBwcmV2aW91cyBtZXNzYWdlcyBvZiB0aGUgZm9y
bSBcIlBvc3NpYmxlIFVuaGFuZGxlZCBQcm9taXNlIFJlamVjdGlvblwiIHdpdGggaWQgJyArXG4g
ICAgICAgICAgcmVqZWN0aW9uc1tpZF0uZGlzcGxheUlkICsgJy4nXG4gICAgICAgICk7XG4gICAg
ICB9XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGxvZ0Vycm9yKGlkLCBlcnJvcikge1xuICBj
b25zb2xlLndhcm4oJ1Bvc3NpYmxlIFVuaGFuZGxlZCBQcm9taXNlIFJlamVjdGlvbiAoaWQ6ICcg
KyBpZCArICcpOicpO1xuICB2YXIgZXJyU3RyID0gKGVycm9yICYmIChlcnJvci5zdGFjayB8fCBl
cnJvcikpICsgJyc7XG4gIGVyclN0ci5zcGxpdCgnXFxuJykuZm9yRWFjaChmdW5jdGlvbiAobGlu
ZSkge1xuICAgIGNvbnNvbGUud2FybignICAnICsgbGluZSk7XG4gIH0pO1xufVxuXG5mdW5jdGlv
biBtYXRjaFdoaXRlbGlzdChlcnJvciwgbGlzdCkge1xuICByZXR1cm4gbGlzdC5zb21lKGZ1bmN0
aW9uIChjbHMpIHtcbiAgICByZXR1cm4gZXJyb3IgaW5zdGFuY2VvZiBjbHM7XG4gIH0pO1xufVxu
XG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0
LXNjcmlwdHMvfi9wcm9taXNlL2xpYi9yZWplY3Rpb24tdHJhY2tpbmcuanNcbiAqKiBtb2R1bGUg
aWQgPSAyMTBcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIm1vZHVsZS5leHBvcnRzID0g
ZnVuY3Rpb24obW9kdWxlKSB7XHJcblx0aWYoIW1vZHVsZS53ZWJwYWNrUG9seWZpbGwpIHtcclxu
XHRcdG1vZHVsZS5kZXByZWNhdGUgPSBmdW5jdGlvbigpIHt9O1xyXG5cdFx0bW9kdWxlLnBhdGhz
ID0gW107XHJcblx0XHQvLyBtb2R1bGUucGFyZW50ID0gdW5kZWZpbmVkIGJ5IGRlZmF1bHRcclxu
XHRcdG1vZHVsZS5jaGlsZHJlbiA9IFtdO1xyXG5cdFx0bW9kdWxlLndlYnBhY2tQb2x5ZmlsbCA9
IDE7XHJcblx0fVxyXG5cdHJldHVybiBtb2R1bGU7XHJcbn1cclxuXG5cblxuLyoqKioqKioqKioq
KioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAod2VicGFjaykvYnVpbGRpbi9tb2R1bGUu
anNcbiAqKiBtb2R1bGUgaWQgPSAyMTFcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIihm
dW5jdGlvbihzZWxmKSB7XG4gICd1c2Ugc3RyaWN0JztcblxuICBpZiAoc2VsZi5mZXRjaCkge1xu
ICAgIHJldHVyblxuICB9XG5cbiAgdmFyIHN1cHBvcnQgPSB7XG4gICAgc2VhcmNoUGFyYW1zOiAn
VVJMU2VhcmNoUGFyYW1zJyBpbiBzZWxmLFxuICAgIGl0ZXJhYmxlOiAnU3ltYm9sJyBpbiBzZWxm
ICYmICdpdGVyYXRvcicgaW4gU3ltYm9sLFxuICAgIGJsb2I6ICdGaWxlUmVhZGVyJyBpbiBzZWxm
ICYmICdCbG9iJyBpbiBzZWxmICYmIChmdW5jdGlvbigpIHtcbiAgICAgIHRyeSB7XG4gICAgICAg
IG5ldyBCbG9iKClcbiAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgIH0gY2F0Y2goZSkge1xuICAg
ICAgICByZXR1cm4gZmFsc2VcbiAgICAgIH1cbiAgICB9KSgpLFxuICAgIGZvcm1EYXRhOiAnRm9y
bURhdGEnIGluIHNlbGYsXG4gICAgYXJyYXlCdWZmZXI6ICdBcnJheUJ1ZmZlcicgaW4gc2VsZlxu
ICB9XG5cbiAgZnVuY3Rpb24gbm9ybWFsaXplTmFtZShuYW1lKSB7XG4gICAgaWYgKHR5cGVvZiBu
YW1lICE9PSAnc3RyaW5nJykge1xuICAgICAgbmFtZSA9IFN0cmluZyhuYW1lKVxuICAgIH1cbiAg
ICBpZiAoL1teYS16MC05XFwtIyQlJicqKy5cXF5fYHx+XS9pLnRlc3QobmFtZSkpIHtcbiAgICAg
IHRocm93IG5ldyBUeXBlRXJyb3IoJ0ludmFsaWQgY2hhcmFjdGVyIGluIGhlYWRlciBmaWVsZCBu
YW1lJylcbiAgICB9XG4gICAgcmV0dXJuIG5hbWUudG9Mb3dlckNhc2UoKVxuICB9XG5cbiAgZnVu
Y3Rpb24gbm9ybWFsaXplVmFsdWUodmFsdWUpIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAn
c3RyaW5nJykge1xuICAgICAgdmFsdWUgPSBTdHJpbmcodmFsdWUpXG4gICAgfVxuICAgIHJldHVy
biB2YWx1ZVxuICB9XG5cbiAgLy8gQnVpbGQgYSBkZXN0cnVjdGl2ZSBpdGVyYXRvciBmb3IgdGhl
IHZhbHVlIGxpc3RcbiAgZnVuY3Rpb24gaXRlcmF0b3JGb3IoaXRlbXMpIHtcbiAgICB2YXIgaXRl
cmF0b3IgPSB7XG4gICAgICBuZXh0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyIHZhbHVlID0g
aXRlbXMuc2hpZnQoKVxuICAgICAgICByZXR1cm4ge2RvbmU6IHZhbHVlID09PSB1bmRlZmluZWQs
IHZhbHVlOiB2YWx1ZX1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoc3VwcG9ydC5pdGVyYWJs
ZSkge1xuICAgICAgaXRlcmF0b3JbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uKCkge1xuICAg
ICAgICByZXR1cm4gaXRlcmF0b3JcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gaXRlcmF0
b3JcbiAgfVxuXG4gIGZ1bmN0aW9uIEhlYWRlcnMoaGVhZGVycykge1xuICAgIHRoaXMubWFwID0g
e31cblxuICAgIGlmIChoZWFkZXJzIGluc3RhbmNlb2YgSGVhZGVycykge1xuICAgICAgaGVhZGVy
cy5mb3JFYWNoKGZ1bmN0aW9uKHZhbHVlLCBuYW1lKSB7XG4gICAgICAgIHRoaXMuYXBwZW5kKG5h
bWUsIHZhbHVlKVxuICAgICAgfSwgdGhpcylcblxuICAgIH0gZWxzZSBpZiAoaGVhZGVycykge1xu
ICAgICAgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoaGVhZGVycykuZm9yRWFjaChmdW5jdGlv
bihuYW1lKSB7XG4gICAgICAgIHRoaXMuYXBwZW5kKG5hbWUsIGhlYWRlcnNbbmFtZV0pXG4gICAg
ICB9LCB0aGlzKVxuICAgIH1cbiAgfVxuXG4gIEhlYWRlcnMucHJvdG90eXBlLmFwcGVuZCA9IGZ1
bmN0aW9uKG5hbWUsIHZhbHVlKSB7XG4gICAgbmFtZSA9IG5vcm1hbGl6ZU5hbWUobmFtZSlcbiAg
ICB2YWx1ZSA9IG5vcm1hbGl6ZVZhbHVlKHZhbHVlKVxuICAgIHZhciBsaXN0ID0gdGhpcy5tYXBb
bmFtZV1cbiAgICBpZiAoIWxpc3QpIHtcbiAgICAgIGxpc3QgPSBbXVxuICAgICAgdGhpcy5tYXBb
bmFtZV0gPSBsaXN0XG4gICAgfVxuICAgIGxpc3QucHVzaCh2YWx1ZSlcbiAgfVxuXG4gIEhlYWRl
cnMucHJvdG90eXBlWydkZWxldGUnXSA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgICBkZWxldGUgdGhp
cy5tYXBbbm9ybWFsaXplTmFtZShuYW1lKV1cbiAgfVxuXG4gIEhlYWRlcnMucHJvdG90eXBlLmdl
dCA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgICB2YXIgdmFsdWVzID0gdGhpcy5tYXBbbm9ybWFsaXpl
TmFtZShuYW1lKV1cbiAgICByZXR1cm4gdmFsdWVzID8gdmFsdWVzWzBdIDogbnVsbFxuICB9XG5c
biAgSGVhZGVycy5wcm90b3R5cGUuZ2V0QWxsID0gZnVuY3Rpb24obmFtZSkge1xuICAgIHJldHVy
biB0aGlzLm1hcFtub3JtYWxpemVOYW1lKG5hbWUpXSB8fCBbXVxuICB9XG5cbiAgSGVhZGVycy5w
cm90b3R5cGUuaGFzID0gZnVuY3Rpb24obmFtZSkge1xuICAgIHJldHVybiB0aGlzLm1hcC5oYXNP
d25Qcm9wZXJ0eShub3JtYWxpemVOYW1lKG5hbWUpKVxuICB9XG5cbiAgSGVhZGVycy5wcm90b3R5
cGUuc2V0ID0gZnVuY3Rpb24obmFtZSwgdmFsdWUpIHtcbiAgICB0aGlzLm1hcFtub3JtYWxpemVO
YW1lKG5hbWUpXSA9IFtub3JtYWxpemVWYWx1ZSh2YWx1ZSldXG4gIH1cblxuICBIZWFkZXJzLnBy
b3RvdHlwZS5mb3JFYWNoID0gZnVuY3Rpb24oY2FsbGJhY2ssIHRoaXNBcmcpIHtcbiAgICBPYmpl
Y3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0aGlzLm1hcCkuZm9yRWFjaChmdW5jdGlvbihuYW1lKSB7
XG4gICAgICB0aGlzLm1hcFtuYW1lXS5mb3JFYWNoKGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgICAg
IGNhbGxiYWNrLmNhbGwodGhpc0FyZywgdmFsdWUsIG5hbWUsIHRoaXMpXG4gICAgICB9LCB0aGlz
KVxuICAgIH0sIHRoaXMpXG4gIH1cblxuICBIZWFkZXJzLnByb3RvdHlwZS5rZXlzID0gZnVuY3Rp
b24oKSB7XG4gICAgdmFyIGl0ZW1zID0gW11cbiAgICB0aGlzLmZvckVhY2goZnVuY3Rpb24odmFs
dWUsIG5hbWUpIHsgaXRlbXMucHVzaChuYW1lKSB9KVxuICAgIHJldHVybiBpdGVyYXRvckZvcihp
dGVtcylcbiAgfVxuXG4gIEhlYWRlcnMucHJvdG90eXBlLnZhbHVlcyA9IGZ1bmN0aW9uKCkge1xu
ICAgIHZhciBpdGVtcyA9IFtdXG4gICAgdGhpcy5mb3JFYWNoKGZ1bmN0aW9uKHZhbHVlKSB7IGl0
ZW1zLnB1c2godmFsdWUpIH0pXG4gICAgcmV0dXJuIGl0ZXJhdG9yRm9yKGl0ZW1zKVxuICB9XG5c
biAgSGVhZGVycy5wcm90b3R5cGUuZW50cmllcyA9IGZ1bmN0aW9uKCkge1xuICAgIHZhciBpdGVt
cyA9IFtdXG4gICAgdGhpcy5mb3JFYWNoKGZ1bmN0aW9uKHZhbHVlLCBuYW1lKSB7IGl0ZW1zLnB1
c2goW25hbWUsIHZhbHVlXSkgfSlcbiAgICByZXR1cm4gaXRlcmF0b3JGb3IoaXRlbXMpXG4gIH1c
blxuICBpZiAoc3VwcG9ydC5pdGVyYWJsZSkge1xuICAgIEhlYWRlcnMucHJvdG90eXBlW1N5bWJv
bC5pdGVyYXRvcl0gPSBIZWFkZXJzLnByb3RvdHlwZS5lbnRyaWVzXG4gIH1cblxuICBmdW5jdGlv
biBjb25zdW1lZChib2R5KSB7XG4gICAgaWYgKGJvZHkuYm9keVVzZWQpIHtcbiAgICAgIHJldHVy
biBQcm9taXNlLnJlamVjdChuZXcgVHlwZUVycm9yKCdBbHJlYWR5IHJlYWQnKSlcbiAgICB9XG4g
ICAgYm9keS5ib2R5VXNlZCA9IHRydWVcbiAgfVxuXG4gIGZ1bmN0aW9uIGZpbGVSZWFkZXJSZWFk
eShyZWFkZXIpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVq
ZWN0KSB7XG4gICAgICByZWFkZXIub25sb2FkID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIHJlc29s
dmUocmVhZGVyLnJlc3VsdClcbiAgICAgIH1cbiAgICAgIHJlYWRlci5vbmVycm9yID0gZnVuY3Rp
b24oKSB7XG4gICAgICAgIHJlamVjdChyZWFkZXIuZXJyb3IpXG4gICAgICB9XG4gICAgfSlcbiAg
fVxuXG4gIGZ1bmN0aW9uIHJlYWRCbG9iQXNBcnJheUJ1ZmZlcihibG9iKSB7XG4gICAgdmFyIHJl
YWRlciA9IG5ldyBGaWxlUmVhZGVyKClcbiAgICByZWFkZXIucmVhZEFzQXJyYXlCdWZmZXIoYmxv
YilcbiAgICByZXR1cm4gZmlsZVJlYWRlclJlYWR5KHJlYWRlcilcbiAgfVxuXG4gIGZ1bmN0aW9u
IHJlYWRCbG9iQXNUZXh0KGJsb2IpIHtcbiAgICB2YXIgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIo
KVxuICAgIHJlYWRlci5yZWFkQXNUZXh0KGJsb2IpXG4gICAgcmV0dXJuIGZpbGVSZWFkZXJSZWFk
eShyZWFkZXIpXG4gIH1cblxuICBmdW5jdGlvbiBCb2R5KCkge1xuICAgIHRoaXMuYm9keVVzZWQg
PSBmYWxzZVxuXG4gICAgdGhpcy5faW5pdEJvZHkgPSBmdW5jdGlvbihib2R5KSB7XG4gICAgICB0
aGlzLl9ib2R5SW5pdCA9IGJvZHlcbiAgICAgIGlmICh0eXBlb2YgYm9keSA9PT0gJ3N0cmluZycp
IHtcbiAgICAgICAgdGhpcy5fYm9keVRleHQgPSBib2R5XG4gICAgICB9IGVsc2UgaWYgKHN1cHBv
cnQuYmxvYiAmJiBCbG9iLnByb3RvdHlwZS5pc1Byb3RvdHlwZU9mKGJvZHkpKSB7XG4gICAgICAg
IHRoaXMuX2JvZHlCbG9iID0gYm9keVxuICAgICAgfSBlbHNlIGlmIChzdXBwb3J0LmZvcm1EYXRh
ICYmIEZvcm1EYXRhLnByb3RvdHlwZS5pc1Byb3RvdHlwZU9mKGJvZHkpKSB7XG4gICAgICAgIHRo
aXMuX2JvZHlGb3JtRGF0YSA9IGJvZHlcbiAgICAgIH0gZWxzZSBpZiAoc3VwcG9ydC5zZWFyY2hQ
YXJhbXMgJiYgVVJMU2VhcmNoUGFyYW1zLnByb3RvdHlwZS5pc1Byb3RvdHlwZU9mKGJvZHkpKSB7
XG4gICAgICAgIHRoaXMuX2JvZHlUZXh0ID0gYm9keS50b1N0cmluZygpXG4gICAgICB9IGVsc2Ug
aWYgKCFib2R5KSB7XG4gICAgICAgIHRoaXMuX2JvZHlUZXh0ID0gJydcbiAgICAgIH0gZWxzZSBp
ZiAoc3VwcG9ydC5hcnJheUJ1ZmZlciAmJiBBcnJheUJ1ZmZlci5wcm90b3R5cGUuaXNQcm90b3R5
cGVPZihib2R5KSkge1xuICAgICAgICAvLyBPbmx5IHN1cHBvcnQgQXJyYXlCdWZmZXJzIGZvciBQ
T1NUIG1ldGhvZC5cbiAgICAgICAgLy8gUmVjZWl2aW5nIEFycmF5QnVmZmVycyBoYXBwZW5zIHZp
YSBCbG9icywgaW5zdGVhZC5cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJv
cigndW5zdXBwb3J0ZWQgQm9keUluaXQgdHlwZScpXG4gICAgICB9XG5cbiAgICAgIGlmICghdGhp
cy5oZWFkZXJzLmdldCgnY29udGVudC10eXBlJykpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBib2R5
ID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIHRoaXMuaGVhZGVycy5zZXQoJ2NvbnRlbnQtdHlw
ZScsICd0ZXh0L3BsYWluO2NoYXJzZXQ9VVRGLTgnKVxuICAgICAgICB9IGVsc2UgaWYgKHRoaXMu
X2JvZHlCbG9iICYmIHRoaXMuX2JvZHlCbG9iLnR5cGUpIHtcbiAgICAgICAgICB0aGlzLmhlYWRl
cnMuc2V0KCdjb250ZW50LXR5cGUnLCB0aGlzLl9ib2R5QmxvYi50eXBlKVxuICAgICAgICB9IGVs
c2UgaWYgKHN1cHBvcnQuc2VhcmNoUGFyYW1zICYmIFVSTFNlYXJjaFBhcmFtcy5wcm90b3R5cGUu
aXNQcm90b3R5cGVPZihib2R5KSkge1xuICAgICAgICAgIHRoaXMuaGVhZGVycy5zZXQoJ2NvbnRl
bnQtdHlwZScsICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7Y2hhcnNldD1VVEYt
OCcpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoc3VwcG9ydC5ibG9iKSB7
XG4gICAgICB0aGlzLmJsb2IgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyIHJlamVjdGVkID0g
Y29uc3VtZWQodGhpcylcbiAgICAgICAgaWYgKHJlamVjdGVkKSB7XG4gICAgICAgICAgcmV0dXJu
IHJlamVjdGVkXG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5fYm9keUJsb2IpIHtcbiAg
ICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRoaXMuX2JvZHlCbG9iKVxuICAgICAgICB9
IGVsc2UgaWYgKHRoaXMuX2JvZHlGb3JtRGF0YSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJv
cignY291bGQgbm90IHJlYWQgRm9ybURhdGEgYm9keSBhcyBibG9iJylcbiAgICAgICAgfSBlbHNl
IHtcbiAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKG5ldyBCbG9iKFt0aGlzLl9ib2R5
VGV4dF0pKVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHRoaXMuYXJyYXlCdWZmZXIgPSBm
dW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYmxvYigpLnRoZW4ocmVhZEJsb2JBc0Fy
cmF5QnVmZmVyKVxuICAgICAgfVxuXG4gICAgICB0aGlzLnRleHQgPSBmdW5jdGlvbigpIHtcbiAg
ICAgICAgdmFyIHJlamVjdGVkID0gY29uc3VtZWQodGhpcylcbiAgICAgICAgaWYgKHJlamVjdGVk
KSB7XG4gICAgICAgICAgcmV0dXJuIHJlamVjdGVkXG4gICAgICAgIH1cblxuICAgICAgICBpZiAo
dGhpcy5fYm9keUJsb2IpIHtcbiAgICAgICAgICByZXR1cm4gcmVhZEJsb2JBc1RleHQodGhpcy5f
Ym9keUJsb2IpXG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5fYm9keUZvcm1EYXRhKSB7XG4gICAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKCdjb3VsZCBub3QgcmVhZCBGb3JtRGF0YSBib2R5IGFzIHRl
eHQnKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUo
dGhpcy5fYm9keVRleHQpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAg
dGhpcy50ZXh0ID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIHZhciByZWplY3RlZCA9IGNvbnN1bWVk
KHRoaXMpXG4gICAgICAgIHJldHVybiByZWplY3RlZCA/IHJlamVjdGVkIDogUHJvbWlzZS5yZXNv
bHZlKHRoaXMuX2JvZHlUZXh0KVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChzdXBwb3J0LmZv
cm1EYXRhKSB7XG4gICAgICB0aGlzLmZvcm1EYXRhID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIHJl
dHVybiB0aGlzLnRleHQoKS50aGVuKGRlY29kZSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlz
Lmpzb24gPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiB0aGlzLnRleHQoKS50aGVuKEpTT04u
cGFyc2UpXG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIC8vIEhUVFAgbWV0aG9k
cyB3aG9zZSBjYXBpdGFsaXphdGlvbiBzaG91bGQgYmUgbm9ybWFsaXplZFxuICB2YXIgbWV0aG9k
cyA9IFsnREVMRVRFJywgJ0dFVCcsICdIRUFEJywgJ09QVElPTlMnLCAnUE9TVCcsICdQVVQnXVxu
XG4gIGZ1bmN0aW9uIG5vcm1hbGl6ZU1ldGhvZChtZXRob2QpIHtcbiAgICB2YXIgdXBjYXNlZCA9
IG1ldGhvZC50b1VwcGVyQ2FzZSgpXG4gICAgcmV0dXJuIChtZXRob2RzLmluZGV4T2YodXBjYXNl
ZCkgPiAtMSkgPyB1cGNhc2VkIDogbWV0aG9kXG4gIH1cblxuICBmdW5jdGlvbiBSZXF1ZXN0KGlu
cHV0LCBvcHRpb25zKSB7XG4gICAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge31cbiAgICB2YXIgYm9k
eSA9IG9wdGlvbnMuYm9keVxuICAgIGlmIChSZXF1ZXN0LnByb3RvdHlwZS5pc1Byb3RvdHlwZU9m
KGlucHV0KSkge1xuICAgICAgaWYgKGlucHV0LmJvZHlVc2VkKSB7XG4gICAgICAgIHRocm93IG5l
dyBUeXBlRXJyb3IoJ0FscmVhZHkgcmVhZCcpXG4gICAgICB9XG4gICAgICB0aGlzLnVybCA9IGlu
cHV0LnVybFxuICAgICAgdGhpcy5jcmVkZW50aWFscyA9IGlucHV0LmNyZWRlbnRpYWxzXG4gICAg
ICBpZiAoIW9wdGlvbnMuaGVhZGVycykge1xuICAgICAgICB0aGlzLmhlYWRlcnMgPSBuZXcgSGVh
ZGVycyhpbnB1dC5oZWFkZXJzKVxuICAgICAgfVxuICAgICAgdGhpcy5tZXRob2QgPSBpbnB1dC5t
ZXRob2RcbiAgICAgIHRoaXMubW9kZSA9IGlucHV0Lm1vZGVcbiAgICAgIGlmICghYm9keSkge1xu
ICAgICAgICBib2R5ID0gaW5wdXQuX2JvZHlJbml0XG4gICAgICAgIGlucHV0LmJvZHlVc2VkID0g
dHJ1ZVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnVybCA9IGlucHV0XG4gICAg
fVxuXG4gICAgdGhpcy5jcmVkZW50aWFscyA9IG9wdGlvbnMuY3JlZGVudGlhbHMgfHwgdGhpcy5j
cmVkZW50aWFscyB8fCAnb21pdCdcbiAgICBpZiAob3B0aW9ucy5oZWFkZXJzIHx8ICF0aGlzLmhl
YWRlcnMpIHtcbiAgICAgIHRoaXMuaGVhZGVycyA9IG5ldyBIZWFkZXJzKG9wdGlvbnMuaGVhZGVy
cylcbiAgICB9XG4gICAgdGhpcy5tZXRob2QgPSBub3JtYWxpemVNZXRob2Qob3B0aW9ucy5tZXRo
b2QgfHwgdGhpcy5tZXRob2QgfHwgJ0dFVCcpXG4gICAgdGhpcy5tb2RlID0gb3B0aW9ucy5tb2Rl
IHx8IHRoaXMubW9kZSB8fCBudWxsXG4gICAgdGhpcy5yZWZlcnJlciA9IG51bGxcblxuICAgIGlm
ICgodGhpcy5tZXRob2QgPT09ICdHRVQnIHx8IHRoaXMubWV0aG9kID09PSAnSEVBRCcpICYmIGJv
ZHkpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0JvZHkgbm90IGFsbG93ZWQgZm9yIEdF
VCBvciBIRUFEIHJlcXVlc3RzJylcbiAgICB9XG4gICAgdGhpcy5faW5pdEJvZHkoYm9keSlcbiAg
fVxuXG4gIFJlcXVlc3QucHJvdG90eXBlLmNsb25lID0gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJu
IG5ldyBSZXF1ZXN0KHRoaXMpXG4gIH1cblxuICBmdW5jdGlvbiBkZWNvZGUoYm9keSkge1xuICAg
IHZhciBmb3JtID0gbmV3IEZvcm1EYXRhKClcbiAgICBib2R5LnRyaW0oKS5zcGxpdCgnJicpLmZv
ckVhY2goZnVuY3Rpb24oYnl0ZXMpIHtcbiAgICAgIGlmIChieXRlcykge1xuICAgICAgICB2YXIg
c3BsaXQgPSBieXRlcy5zcGxpdCgnPScpXG4gICAgICAgIHZhciBuYW1lID0gc3BsaXQuc2hpZnQo
KS5yZXBsYWNlKC9cXCsvZywgJyAnKVxuICAgICAgICB2YXIgdmFsdWUgPSBzcGxpdC5qb2luKCc9
JykucmVwbGFjZSgvXFwrL2csICcgJylcbiAgICAgICAgZm9ybS5hcHBlbmQoZGVjb2RlVVJJQ29t
cG9uZW50KG5hbWUpLCBkZWNvZGVVUklDb21wb25lbnQodmFsdWUpKVxuICAgICAgfVxuICAgIH0p
XG4gICAgcmV0dXJuIGZvcm1cbiAgfVxuXG4gIGZ1bmN0aW9uIGhlYWRlcnMoeGhyKSB7XG4gICAg
dmFyIGhlYWQgPSBuZXcgSGVhZGVycygpXG4gICAgdmFyIHBhaXJzID0gKHhoci5nZXRBbGxSZXNw
b25zZUhlYWRlcnMoKSB8fCAnJykudHJpbSgpLnNwbGl0KCdcXG4nKVxuICAgIHBhaXJzLmZvckVh
Y2goZnVuY3Rpb24oaGVhZGVyKSB7XG4gICAgICB2YXIgc3BsaXQgPSBoZWFkZXIudHJpbSgpLnNw
bGl0KCc6JylcbiAgICAgIHZhciBrZXkgPSBzcGxpdC5zaGlmdCgpLnRyaW0oKVxuICAgICAgdmFy
IHZhbHVlID0gc3BsaXQuam9pbignOicpLnRyaW0oKVxuICAgICAgaGVhZC5hcHBlbmQoa2V5LCB2
YWx1ZSlcbiAgICB9KVxuICAgIHJldHVybiBoZWFkXG4gIH1cblxuICBCb2R5LmNhbGwoUmVxdWVz
dC5wcm90b3R5cGUpXG5cbiAgZnVuY3Rpb24gUmVzcG9uc2UoYm9keUluaXQsIG9wdGlvbnMpIHtc
biAgICBpZiAoIW9wdGlvbnMpIHtcbiAgICAgIG9wdGlvbnMgPSB7fVxuICAgIH1cblxuICAgIHRo
aXMudHlwZSA9ICdkZWZhdWx0J1xuICAgIHRoaXMuc3RhdHVzID0gb3B0aW9ucy5zdGF0dXNcbiAg
ICB0aGlzLm9rID0gdGhpcy5zdGF0dXMgPj0gMjAwICYmIHRoaXMuc3RhdHVzIDwgMzAwXG4gICAg
dGhpcy5zdGF0dXNUZXh0ID0gb3B0aW9ucy5zdGF0dXNUZXh0XG4gICAgdGhpcy5oZWFkZXJzID0g
b3B0aW9ucy5oZWFkZXJzIGluc3RhbmNlb2YgSGVhZGVycyA/IG9wdGlvbnMuaGVhZGVycyA6IG5l
dyBIZWFkZXJzKG9wdGlvbnMuaGVhZGVycylcbiAgICB0aGlzLnVybCA9IG9wdGlvbnMudXJsIHx8
ICcnXG4gICAgdGhpcy5faW5pdEJvZHkoYm9keUluaXQpXG4gIH1cblxuICBCb2R5LmNhbGwoUmVz
cG9uc2UucHJvdG90eXBlKVxuXG4gIFJlc3BvbnNlLnByb3RvdHlwZS5jbG9uZSA9IGZ1bmN0aW9u
KCkge1xuICAgIHJldHVybiBuZXcgUmVzcG9uc2UodGhpcy5fYm9keUluaXQsIHtcbiAgICAgIHN0
YXR1czogdGhpcy5zdGF0dXMsXG4gICAgICBzdGF0dXNUZXh0OiB0aGlzLnN0YXR1c1RleHQsXG4g
ICAgICBoZWFkZXJzOiBuZXcgSGVhZGVycyh0aGlzLmhlYWRlcnMpLFxuICAgICAgdXJsOiB0aGlz
LnVybFxuICAgIH0pXG4gIH1cblxuICBSZXNwb25zZS5lcnJvciA9IGZ1bmN0aW9uKCkge1xuICAg
IHZhciByZXNwb25zZSA9IG5ldyBSZXNwb25zZShudWxsLCB7c3RhdHVzOiAwLCBzdGF0dXNUZXh0
OiAnJ30pXG4gICAgcmVzcG9uc2UudHlwZSA9ICdlcnJvcidcbiAgICByZXR1cm4gcmVzcG9uc2Vc
biAgfVxuXG4gIHZhciByZWRpcmVjdFN0YXR1c2VzID0gWzMwMSwgMzAyLCAzMDMsIDMwNywgMzA4
XVxuXG4gIFJlc3BvbnNlLnJlZGlyZWN0ID0gZnVuY3Rpb24odXJsLCBzdGF0dXMpIHtcbiAgICBp
ZiAocmVkaXJlY3RTdGF0dXNlcy5pbmRleE9mKHN0YXR1cykgPT09IC0xKSB7XG4gICAgICB0aHJv
dyBuZXcgUmFuZ2VFcnJvcignSW52YWxpZCBzdGF0dXMgY29kZScpXG4gICAgfVxuXG4gICAgcmV0
dXJuIG5ldyBSZXNwb25zZShudWxsLCB7c3RhdHVzOiBzdGF0dXMsIGhlYWRlcnM6IHtsb2NhdGlv
bjogdXJsfX0pXG4gIH1cblxuICBzZWxmLkhlYWRlcnMgPSBIZWFkZXJzXG4gIHNlbGYuUmVxdWVz
dCA9IFJlcXVlc3RcbiAgc2VsZi5SZXNwb25zZSA9IFJlc3BvbnNlXG5cbiAgc2VsZi5mZXRjaCA9
IGZ1bmN0aW9uKGlucHV0LCBpbml0KSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9u
KHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgdmFyIHJlcXVlc3RcbiAgICAgIGlmIChSZXF1ZXN0
LnByb3RvdHlwZS5pc1Byb3RvdHlwZU9mKGlucHV0KSAmJiAhaW5pdCkge1xuICAgICAgICByZXF1
ZXN0ID0gaW5wdXRcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlcXVlc3QgPSBuZXcgUmVxdWVz
dChpbnB1dCwgaW5pdClcbiAgICAgIH1cblxuICAgICAgdmFyIHhociA9IG5ldyBYTUxIdHRwUmVx
dWVzdCgpXG5cbiAgICAgIGZ1bmN0aW9uIHJlc3BvbnNlVVJMKCkge1xuICAgICAgICBpZiAoJ3Jl
c3BvbnNlVVJMJyBpbiB4aHIpIHtcbiAgICAgICAgICByZXR1cm4geGhyLnJlc3BvbnNlVVJMXG4g
ICAgICAgIH1cblxuICAgICAgICAvLyBBdm9pZCBzZWN1cml0eSB3YXJuaW5ncyBvbiBnZXRSZXNw
b25zZUhlYWRlciB3aGVuIG5vdCBhbGxvd2VkIGJ5IENPUlNcbiAgICAgICAgaWYgKC9eWC1SZXF1
ZXN0LVVSTDovbS50ZXN0KHhoci5nZXRBbGxSZXNwb25zZUhlYWRlcnMoKSkpIHtcbiAgICAgICAg
ICByZXR1cm4geGhyLmdldFJlc3BvbnNlSGVhZGVyKCdYLVJlcXVlc3QtVVJMJylcbiAgICAgICAg
fVxuXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICB4aHIub25sb2FkID0gZnVuY3Rp
b24oKSB7XG4gICAgICAgIHZhciBvcHRpb25zID0ge1xuICAgICAgICAgIHN0YXR1czogeGhyLnN0
YXR1cyxcbiAgICAgICAgICBzdGF0dXNUZXh0OiB4aHIuc3RhdHVzVGV4dCxcbiAgICAgICAgICBo
ZWFkZXJzOiBoZWFkZXJzKHhociksXG4gICAgICAgICAgdXJsOiByZXNwb25zZVVSTCgpXG4gICAg
ICAgIH1cbiAgICAgICAgdmFyIGJvZHkgPSAncmVzcG9uc2UnIGluIHhociA/IHhoci5yZXNwb25z
ZSA6IHhoci5yZXNwb25zZVRleHRcbiAgICAgICAgcmVzb2x2ZShuZXcgUmVzcG9uc2UoYm9keSwg
b3B0aW9ucykpXG4gICAgICB9XG5cbiAgICAgIHhoci5vbmVycm9yID0gZnVuY3Rpb24oKSB7XG4g
ICAgICAgIHJlamVjdChuZXcgVHlwZUVycm9yKCdOZXR3b3JrIHJlcXVlc3QgZmFpbGVkJykpXG4g
ICAgICB9XG5cbiAgICAgIHhoci5vbnRpbWVvdXQgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgcmVq
ZWN0KG5ldyBUeXBlRXJyb3IoJ05ldHdvcmsgcmVxdWVzdCBmYWlsZWQnKSlcbiAgICAgIH1cblxu
ICAgICAgeGhyLm9wZW4ocmVxdWVzdC5tZXRob2QsIHJlcXVlc3QudXJsLCB0cnVlKVxuXG4gICAg
ICBpZiAocmVxdWVzdC5jcmVkZW50aWFscyA9PT0gJ2luY2x1ZGUnKSB7XG4gICAgICAgIHhoci53
aXRoQ3JlZGVudGlhbHMgPSB0cnVlXG4gICAgICB9XG5cbiAgICAgIGlmICgncmVzcG9uc2VUeXBl
JyBpbiB4aHIgJiYgc3VwcG9ydC5ibG9iKSB7XG4gICAgICAgIHhoci5yZXNwb25zZVR5cGUgPSAn
YmxvYidcbiAgICAgIH1cblxuICAgICAgcmVxdWVzdC5oZWFkZXJzLmZvckVhY2goZnVuY3Rpb24o
dmFsdWUsIG5hbWUpIHtcbiAgICAgICAgeGhyLnNldFJlcXVlc3RIZWFkZXIobmFtZSwgdmFsdWUp
XG4gICAgICB9KVxuXG4gICAgICB4aHIuc2VuZCh0eXBlb2YgcmVxdWVzdC5fYm9keUluaXQgPT09
ICd1bmRlZmluZWQnID8gbnVsbCA6IHJlcXVlc3QuX2JvZHlJbml0KVxuICAgIH0pXG4gIH1cbiAg
c2VsZi5mZXRjaC5wb2x5ZmlsbCA9IHRydWVcbn0pKHR5cGVvZiBzZWxmICE9PSAndW5kZWZpbmVk
JyA/IHNlbGYgOiB0aGlzKTtcblxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sg
Rk9PVEVSXG4gKiogLi9+L3JlYWN0LXNjcmlwdHMvfi93aGF0d2ctZmV0Y2gvZmV0Y2guanNcbiAq
KiBtb2R1bGUgaWQgPSAyMTJcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICog
Q29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNE
LXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qg
ZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9m
IHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNh
bWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBQb29sZWRDbGFz
cyA9IHJlcXVpcmUoJy4vUG9vbGVkQ2xhc3MnKTtcbnZhciBSZWFjdEVsZW1lbnQgPSByZXF1aXJl
KCcuL1JlYWN0RWxlbWVudCcpO1xuXG52YXIgZW1wdHlGdW5jdGlvbiA9IHJlcXVpcmUoJ2ZianMv
bGliL2VtcHR5RnVuY3Rpb24nKTtcbnZhciB0cmF2ZXJzZUFsbENoaWxkcmVuID0gcmVxdWlyZSgn
Li90cmF2ZXJzZUFsbENoaWxkcmVuJyk7XG5cbnZhciB0d29Bcmd1bWVudFBvb2xlciA9IFBvb2xl
ZENsYXNzLnR3b0FyZ3VtZW50UG9vbGVyO1xudmFyIGZvdXJBcmd1bWVudFBvb2xlciA9IFBvb2xl
ZENsYXNzLmZvdXJBcmd1bWVudFBvb2xlcjtcblxudmFyIHVzZXJQcm92aWRlZEtleUVzY2FwZVJl
Z2V4ID0gL1xcLysvZztcbmZ1bmN0aW9uIGVzY2FwZVVzZXJQcm92aWRlZEtleSh0ZXh0KSB7XG4g
IHJldHVybiAoJycgKyB0ZXh0KS5yZXBsYWNlKHVzZXJQcm92aWRlZEtleUVzY2FwZVJlZ2V4LCAn
JCYvJyk7XG59XG5cbi8qKlxuICogUG9vbGVkQ2xhc3MgcmVwcmVzZW50aW5nIHRoZSBib29ra2Vl
cGluZyBhc3NvY2lhdGVkIHdpdGggcGVyZm9ybWluZyBhIGNoaWxkXG4gKiB0cmF2ZXJzYWwuIEFs
bG93cyBhdm9pZGluZyBiaW5kaW5nIGNhbGxiYWNrcy5cbiAqXG4gKiBAY29uc3RydWN0b3IgRm9y
RWFjaEJvb2tLZWVwaW5nXG4gKiBAcGFyYW0geyFmdW5jdGlvbn0gZm9yRWFjaEZ1bmN0aW9uIEZ1
bmN0aW9uIHRvIHBlcmZvcm0gdHJhdmVyc2FsIHdpdGguXG4gKiBAcGFyYW0gez8qfSBmb3JFYWNo
Q29udGV4dCBDb250ZXh0IHRvIHBlcmZvcm0gY29udGV4dCB3aXRoLlxuICovXG5mdW5jdGlvbiBG
b3JFYWNoQm9va0tlZXBpbmcoZm9yRWFjaEZ1bmN0aW9uLCBmb3JFYWNoQ29udGV4dCkge1xuICB0
aGlzLmZ1bmMgPSBmb3JFYWNoRnVuY3Rpb247XG4gIHRoaXMuY29udGV4dCA9IGZvckVhY2hDb250
ZXh0O1xuICB0aGlzLmNvdW50ID0gMDtcbn1cbkZvckVhY2hCb29rS2VlcGluZy5wcm90b3R5cGUu
ZGVzdHJ1Y3RvciA9IGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5mdW5jID0gbnVsbDtcbiAgdGhpcy5j
b250ZXh0ID0gbnVsbDtcbiAgdGhpcy5jb3VudCA9IDA7XG59O1xuUG9vbGVkQ2xhc3MuYWRkUG9v
bGluZ1RvKEZvckVhY2hCb29rS2VlcGluZywgdHdvQXJndW1lbnRQb29sZXIpO1xuXG5mdW5jdGlv
biBmb3JFYWNoU2luZ2xlQ2hpbGQoYm9va0tlZXBpbmcsIGNoaWxkLCBuYW1lKSB7XG4gIHZhciBm
dW5jID0gYm9va0tlZXBpbmcuZnVuYyxcbiAgICAgIGNvbnRleHQgPSBib29rS2VlcGluZy5jb250
ZXh0O1xuXG4gIGZ1bmMuY2FsbChjb250ZXh0LCBjaGlsZCwgYm9va0tlZXBpbmcuY291bnQrKyk7
XG59XG5cbi8qKlxuICogSXRlcmF0ZXMgdGhyb3VnaCBjaGlsZHJlbiB0aGF0IGFyZSB0eXBpY2Fs
bHkgc3BlY2lmaWVkIGFzIGBwcm9wcy5jaGlsZHJlbmAuXG4gKlxuICogU2VlIGh0dHBzOi8vZmFj
ZWJvb2suZ2l0aHViLmlvL3JlYWN0L2RvY3MvdG9wLWxldmVsLWFwaS5odG1sI3JlYWN0LmNoaWxk
cmVuLmZvcmVhY2hcbiAqXG4gKiBUaGUgcHJvdmlkZWQgZm9yRWFjaEZ1bmMoY2hpbGQsIGluZGV4
KSB3aWxsIGJlIGNhbGxlZCBmb3IgZWFjaFxuICogbGVhZiBjaGlsZC5cbiAqXG4gKiBAcGFyYW0g
ez8qfSBjaGlsZHJlbiBDaGlsZHJlbiB0cmVlIGNvbnRhaW5lci5cbiAqIEBwYXJhbSB7ZnVuY3Rp
b24oKiwgaW50KX0gZm9yRWFjaEZ1bmNcbiAqIEBwYXJhbSB7Kn0gZm9yRWFjaENvbnRleHQgQ29u
dGV4dCBmb3IgZm9yRWFjaENvbnRleHQuXG4gKi9cbmZ1bmN0aW9uIGZvckVhY2hDaGlsZHJlbihj
aGlsZHJlbiwgZm9yRWFjaEZ1bmMsIGZvckVhY2hDb250ZXh0KSB7XG4gIGlmIChjaGlsZHJlbiA9
PSBudWxsKSB7XG4gICAgcmV0dXJuIGNoaWxkcmVuO1xuICB9XG4gIHZhciB0cmF2ZXJzZUNvbnRl
eHQgPSBGb3JFYWNoQm9va0tlZXBpbmcuZ2V0UG9vbGVkKGZvckVhY2hGdW5jLCBmb3JFYWNoQ29u
dGV4dCk7XG4gIHRyYXZlcnNlQWxsQ2hpbGRyZW4oY2hpbGRyZW4sIGZvckVhY2hTaW5nbGVDaGls
ZCwgdHJhdmVyc2VDb250ZXh0KTtcbiAgRm9yRWFjaEJvb2tLZWVwaW5nLnJlbGVhc2UodHJhdmVy
c2VDb250ZXh0KTtcbn1cblxuLyoqXG4gKiBQb29sZWRDbGFzcyByZXByZXNlbnRpbmcgdGhlIGJv
b2trZWVwaW5nIGFzc29jaWF0ZWQgd2l0aCBwZXJmb3JtaW5nIGEgY2hpbGRcbiAqIG1hcHBpbmcu
IEFsbG93cyBhdm9pZGluZyBiaW5kaW5nIGNhbGxiYWNrcy5cbiAqXG4gKiBAY29uc3RydWN0b3Ig
TWFwQm9va0tlZXBpbmdcbiAqIEBwYXJhbSB7ISp9IG1hcFJlc3VsdCBPYmplY3QgY29udGFpbmlu
ZyB0aGUgb3JkZXJlZCBtYXAgb2YgcmVzdWx0cy5cbiAqIEBwYXJhbSB7IWZ1bmN0aW9ufSBtYXBG
dW5jdGlvbiBGdW5jdGlvbiB0byBwZXJmb3JtIG1hcHBpbmcgd2l0aC5cbiAqIEBwYXJhbSB7Pyp9
IG1hcENvbnRleHQgQ29udGV4dCB0byBwZXJmb3JtIG1hcHBpbmcgd2l0aC5cbiAqL1xuZnVuY3Rp
b24gTWFwQm9va0tlZXBpbmcobWFwUmVzdWx0LCBrZXlQcmVmaXgsIG1hcEZ1bmN0aW9uLCBtYXBD
b250ZXh0KSB7XG4gIHRoaXMucmVzdWx0ID0gbWFwUmVzdWx0O1xuICB0aGlzLmtleVByZWZpeCA9
IGtleVByZWZpeDtcbiAgdGhpcy5mdW5jID0gbWFwRnVuY3Rpb247XG4gIHRoaXMuY29udGV4dCA9
IG1hcENvbnRleHQ7XG4gIHRoaXMuY291bnQgPSAwO1xufVxuTWFwQm9va0tlZXBpbmcucHJvdG90
eXBlLmRlc3RydWN0b3IgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMucmVzdWx0ID0gbnVsbDtcbiAg
dGhpcy5rZXlQcmVmaXggPSBudWxsO1xuICB0aGlzLmZ1bmMgPSBudWxsO1xuICB0aGlzLmNvbnRl
eHQgPSBudWxsO1xuICB0aGlzLmNvdW50ID0gMDtcbn07XG5Qb29sZWRDbGFzcy5hZGRQb29saW5n
VG8oTWFwQm9va0tlZXBpbmcsIGZvdXJBcmd1bWVudFBvb2xlcik7XG5cbmZ1bmN0aW9uIG1hcFNp
bmdsZUNoaWxkSW50b0NvbnRleHQoYm9va0tlZXBpbmcsIGNoaWxkLCBjaGlsZEtleSkge1xuICB2
YXIgcmVzdWx0ID0gYm9va0tlZXBpbmcucmVzdWx0LFxuICAgICAga2V5UHJlZml4ID0gYm9va0tl
ZXBpbmcua2V5UHJlZml4LFxuICAgICAgZnVuYyA9IGJvb2tLZWVwaW5nLmZ1bmMsXG4gICAgICBj
b250ZXh0ID0gYm9va0tlZXBpbmcuY29udGV4dDtcblxuXG4gIHZhciBtYXBwZWRDaGlsZCA9IGZ1
bmMuY2FsbChjb250ZXh0LCBjaGlsZCwgYm9va0tlZXBpbmcuY291bnQrKyk7XG4gIGlmIChBcnJh
eS5pc0FycmF5KG1hcHBlZENoaWxkKSkge1xuICAgIG1hcEludG9XaXRoS2V5UHJlZml4SW50ZXJu
YWwobWFwcGVkQ2hpbGQsIHJlc3VsdCwgY2hpbGRLZXksIGVtcHR5RnVuY3Rpb24udGhhdFJldHVy
bnNBcmd1bWVudCk7XG4gIH0gZWxzZSBpZiAobWFwcGVkQ2hpbGQgIT0gbnVsbCkge1xuICAgIGlm
IChSZWFjdEVsZW1lbnQuaXNWYWxpZEVsZW1lbnQobWFwcGVkQ2hpbGQpKSB7XG4gICAgICBtYXBw
ZWRDaGlsZCA9IFJlYWN0RWxlbWVudC5jbG9uZUFuZFJlcGxhY2VLZXkobWFwcGVkQ2hpbGQsXG4g
ICAgICAvLyBLZWVwIGJvdGggdGhlIChtYXBwZWQpIGFuZCBvbGQga2V5cyBpZiB0aGV5IGRpZmZl
ciwganVzdCBhc1xuICAgICAgLy8gdHJhdmVyc2VBbGxDaGlsZHJlbiB1c2VkIHRvIGRvIGZvciBv
YmplY3RzIGFzIGNoaWxkcmVuXG4gICAgICBrZXlQcmVmaXggKyAobWFwcGVkQ2hpbGQua2V5ICYm
ICghY2hpbGQgfHwgY2hpbGQua2V5ICE9PSBtYXBwZWRDaGlsZC5rZXkpID8gZXNjYXBlVXNlclBy
b3ZpZGVkS2V5KG1hcHBlZENoaWxkLmtleSkgKyAnLycgOiAnJykgKyBjaGlsZEtleSk7XG4gICAg
fVxuICAgIHJlc3VsdC5wdXNoKG1hcHBlZENoaWxkKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBtYXBJ
bnRvV2l0aEtleVByZWZpeEludGVybmFsKGNoaWxkcmVuLCBhcnJheSwgcHJlZml4LCBmdW5jLCBj
b250ZXh0KSB7XG4gIHZhciBlc2NhcGVkUHJlZml4ID0gJyc7XG4gIGlmIChwcmVmaXggIT0gbnVs
bCkge1xuICAgIGVzY2FwZWRQcmVmaXggPSBlc2NhcGVVc2VyUHJvdmlkZWRLZXkocHJlZml4KSAr
ICcvJztcbiAgfVxuICB2YXIgdHJhdmVyc2VDb250ZXh0ID0gTWFwQm9va0tlZXBpbmcuZ2V0UG9v
bGVkKGFycmF5LCBlc2NhcGVkUHJlZml4LCBmdW5jLCBjb250ZXh0KTtcbiAgdHJhdmVyc2VBbGxD
aGlsZHJlbihjaGlsZHJlbiwgbWFwU2luZ2xlQ2hpbGRJbnRvQ29udGV4dCwgdHJhdmVyc2VDb250
ZXh0KTtcbiAgTWFwQm9va0tlZXBpbmcucmVsZWFzZSh0cmF2ZXJzZUNvbnRleHQpO1xufVxuXG4v
KipcbiAqIE1hcHMgY2hpbGRyZW4gdGhhdCBhcmUgdHlwaWNhbGx5IHNwZWNpZmllZCBhcyBgcHJv
cHMuY2hpbGRyZW5gLlxuICpcbiAqIFNlZSBodHRwczovL2ZhY2Vib29rLmdpdGh1Yi5pby9yZWFj
dC9kb2NzL3RvcC1sZXZlbC1hcGkuaHRtbCNyZWFjdC5jaGlsZHJlbi5tYXBcbiAqXG4gKiBUaGUg
cHJvdmlkZWQgbWFwRnVuY3Rpb24oY2hpbGQsIGtleSwgaW5kZXgpIHdpbGwgYmUgY2FsbGVkIGZv
ciBlYWNoXG4gKiBsZWFmIGNoaWxkLlxuICpcbiAqIEBwYXJhbSB7Pyp9IGNoaWxkcmVuIENoaWxk
cmVuIHRyZWUgY29udGFpbmVyLlxuICogQHBhcmFtIHtmdW5jdGlvbigqLCBpbnQpfSBmdW5jIFRo
ZSBtYXAgZnVuY3Rpb24uXG4gKiBAcGFyYW0geyp9IGNvbnRleHQgQ29udGV4dCBmb3IgbWFwRnVu
Y3Rpb24uXG4gKiBAcmV0dXJuIHtvYmplY3R9IE9iamVjdCBjb250YWluaW5nIHRoZSBvcmRlcmVk
IG1hcCBvZiByZXN1bHRzLlxuICovXG5mdW5jdGlvbiBtYXBDaGlsZHJlbihjaGlsZHJlbiwgZnVu
YywgY29udGV4dCkge1xuICBpZiAoY2hpbGRyZW4gPT0gbnVsbCkge1xuICAgIHJldHVybiBjaGls
ZHJlbjtcbiAgfVxuICB2YXIgcmVzdWx0ID0gW107XG4gIG1hcEludG9XaXRoS2V5UHJlZml4SW50
ZXJuYWwoY2hpbGRyZW4sIHJlc3VsdCwgbnVsbCwgZnVuYywgY29udGV4dCk7XG4gIHJldHVybiBy
ZXN1bHQ7XG59XG5cbmZ1bmN0aW9uIGZvckVhY2hTaW5nbGVDaGlsZER1bW15KHRyYXZlcnNlQ29u
dGV4dCwgY2hpbGQsIG5hbWUpIHtcbiAgcmV0dXJuIG51bGw7XG59XG5cbi8qKlxuICogQ291bnQg
dGhlIG51bWJlciBvZiBjaGlsZHJlbiB0aGF0IGFyZSB0eXBpY2FsbHkgc3BlY2lmaWVkIGFzXG4g
KiBgcHJvcHMuY2hpbGRyZW5gLlxuICpcbiAqIFNlZSBodHRwczovL2ZhY2Vib29rLmdpdGh1Yi5p
by9yZWFjdC9kb2NzL3RvcC1sZXZlbC1hcGkuaHRtbCNyZWFjdC5jaGlsZHJlbi5jb3VudFxuICpc
biAqIEBwYXJhbSB7Pyp9IGNoaWxkcmVuIENoaWxkcmVuIHRyZWUgY29udGFpbmVyLlxuICogQHJl
dHVybiB7bnVtYmVyfSBUaGUgbnVtYmVyIG9mIGNoaWxkcmVuLlxuICovXG5mdW5jdGlvbiBjb3Vu
dENoaWxkcmVuKGNoaWxkcmVuLCBjb250ZXh0KSB7XG4gIHJldHVybiB0cmF2ZXJzZUFsbENoaWxk
cmVuKGNoaWxkcmVuLCBmb3JFYWNoU2luZ2xlQ2hpbGREdW1teSwgbnVsbCk7XG59XG5cbi8qKlxu
ICogRmxhdHRlbiBhIGNoaWxkcmVuIG9iamVjdCAodHlwaWNhbGx5IHNwZWNpZmllZCBhcyBgcHJv
cHMuY2hpbGRyZW5gKSBhbmRcbiAqIHJldHVybiBhbiBhcnJheSB3aXRoIGFwcHJvcHJpYXRlbHkg
cmUta2V5ZWQgY2hpbGRyZW4uXG4gKlxuICogU2VlIGh0dHBzOi8vZmFjZWJvb2suZ2l0aHViLmlv
L3JlYWN0L2RvY3MvdG9wLWxldmVsLWFwaS5odG1sI3JlYWN0LmNoaWxkcmVuLnRvYXJyYXlcbiAq
L1xuZnVuY3Rpb24gdG9BcnJheShjaGlsZHJlbikge1xuICB2YXIgcmVzdWx0ID0gW107XG4gIG1h
cEludG9XaXRoS2V5UHJlZml4SW50ZXJuYWwoY2hpbGRyZW4sIHJlc3VsdCwgbnVsbCwgZW1wdHlG
dW5jdGlvbi50aGF0UmV0dXJuc0FyZ3VtZW50KTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxudmFy
IFJlYWN0Q2hpbGRyZW4gPSB7XG4gIGZvckVhY2g6IGZvckVhY2hDaGlsZHJlbixcbiAgbWFwOiBt
YXBDaGlsZHJlbixcbiAgbWFwSW50b1dpdGhLZXlQcmVmaXhJbnRlcm5hbDogbWFwSW50b1dpdGhL
ZXlQcmVmaXhJbnRlcm5hbCxcbiAgY291bnQ6IGNvdW50Q2hpbGRyZW4sXG4gIHRvQXJyYXk6IHRv
QXJyYXlcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RDaGlsZHJlbjtcblxuXG4vKioqKioq
KioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFjdC9saWIvUmVhY3RD
aGlsZHJlbi5qc1xuICoqIG1vZHVsZSBpZCA9IDIxNVxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4g
KiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICog
QWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2Vk
IHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmls
ZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25h
bCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMg
ZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICovXG5cbid1c2Ugc3RyaWN0Jztcblxu
dmFyIFJlYWN0RWxlbWVudCA9IHJlcXVpcmUoJy4vUmVhY3RFbGVtZW50Jyk7XG5cbi8qKlxuICog
Q3JlYXRlIGEgZmFjdG9yeSB0aGF0IGNyZWF0ZXMgSFRNTCB0YWcgZWxlbWVudHMuXG4gKlxuICog
QHByaXZhdGVcbiAqL1xudmFyIGNyZWF0ZURPTUZhY3RvcnkgPSBSZWFjdEVsZW1lbnQuY3JlYXRl
RmFjdG9yeTtcbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4g
IHZhciBSZWFjdEVsZW1lbnRWYWxpZGF0b3IgPSByZXF1aXJlKCcuL1JlYWN0RWxlbWVudFZhbGlk
YXRvcicpO1xuICBjcmVhdGVET01GYWN0b3J5ID0gUmVhY3RFbGVtZW50VmFsaWRhdG9yLmNyZWF0
ZUZhY3Rvcnk7XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIG1hcHBpbmcgZnJvbSBzdXBwb3J0ZWQg
SFRNTCB0YWdzIHRvIGBSZWFjdERPTUNvbXBvbmVudGAgY2xhc3Nlcy5cbiAqXG4gKiBAcHVibGlj
XG4gKi9cbnZhciBSZWFjdERPTUZhY3RvcmllcyA9IHtcbiAgYTogY3JlYXRlRE9NRmFjdG9yeSgn
YScpLFxuICBhYmJyOiBjcmVhdGVET01GYWN0b3J5KCdhYmJyJyksXG4gIGFkZHJlc3M6IGNyZWF0
ZURPTUZhY3RvcnkoJ2FkZHJlc3MnKSxcbiAgYXJlYTogY3JlYXRlRE9NRmFjdG9yeSgnYXJlYScp
LFxuICBhcnRpY2xlOiBjcmVhdGVET01GYWN0b3J5KCdhcnRpY2xlJyksXG4gIGFzaWRlOiBjcmVh
dGVET01GYWN0b3J5KCdhc2lkZScpLFxuICBhdWRpbzogY3JlYXRlRE9NRmFjdG9yeSgnYXVkaW8n
KSxcbiAgYjogY3JlYXRlRE9NRmFjdG9yeSgnYicpLFxuICBiYXNlOiBjcmVhdGVET01GYWN0b3J5
KCdiYXNlJyksXG4gIGJkaTogY3JlYXRlRE9NRmFjdG9yeSgnYmRpJyksXG4gIGJkbzogY3JlYXRl
RE9NRmFjdG9yeSgnYmRvJyksXG4gIGJpZzogY3JlYXRlRE9NRmFjdG9yeSgnYmlnJyksXG4gIGJs
b2NrcXVvdGU6IGNyZWF0ZURPTUZhY3RvcnkoJ2Jsb2NrcXVvdGUnKSxcbiAgYm9keTogY3JlYXRl
RE9NRmFjdG9yeSgnYm9keScpLFxuICBicjogY3JlYXRlRE9NRmFjdG9yeSgnYnInKSxcbiAgYnV0
dG9uOiBjcmVhdGVET01GYWN0b3J5KCdidXR0b24nKSxcbiAgY2FudmFzOiBjcmVhdGVET01GYWN0
b3J5KCdjYW52YXMnKSxcbiAgY2FwdGlvbjogY3JlYXRlRE9NRmFjdG9yeSgnY2FwdGlvbicpLFxu
ICBjaXRlOiBjcmVhdGVET01GYWN0b3J5KCdjaXRlJyksXG4gIGNvZGU6IGNyZWF0ZURPTUZhY3Rv
cnkoJ2NvZGUnKSxcbiAgY29sOiBjcmVhdGVET01GYWN0b3J5KCdjb2wnKSxcbiAgY29sZ3JvdXA6
IGNyZWF0ZURPTUZhY3RvcnkoJ2NvbGdyb3VwJyksXG4gIGRhdGE6IGNyZWF0ZURPTUZhY3Rvcnko
J2RhdGEnKSxcbiAgZGF0YWxpc3Q6IGNyZWF0ZURPTUZhY3RvcnkoJ2RhdGFsaXN0JyksXG4gIGRk
OiBjcmVhdGVET01GYWN0b3J5KCdkZCcpLFxuICBkZWw6IGNyZWF0ZURPTUZhY3RvcnkoJ2RlbCcp
LFxuICBkZXRhaWxzOiBjcmVhdGVET01GYWN0b3J5KCdkZXRhaWxzJyksXG4gIGRmbjogY3JlYXRl
RE9NRmFjdG9yeSgnZGZuJyksXG4gIGRpYWxvZzogY3JlYXRlRE9NRmFjdG9yeSgnZGlhbG9nJyks
XG4gIGRpdjogY3JlYXRlRE9NRmFjdG9yeSgnZGl2JyksXG4gIGRsOiBjcmVhdGVET01GYWN0b3J5
KCdkbCcpLFxuICBkdDogY3JlYXRlRE9NRmFjdG9yeSgnZHQnKSxcbiAgZW06IGNyZWF0ZURPTUZh
Y3RvcnkoJ2VtJyksXG4gIGVtYmVkOiBjcmVhdGVET01GYWN0b3J5KCdlbWJlZCcpLFxuICBmaWVs
ZHNldDogY3JlYXRlRE9NRmFjdG9yeSgnZmllbGRzZXQnKSxcbiAgZmlnY2FwdGlvbjogY3JlYXRl
RE9NRmFjdG9yeSgnZmlnY2FwdGlvbicpLFxuICBmaWd1cmU6IGNyZWF0ZURPTUZhY3RvcnkoJ2Zp
Z3VyZScpLFxuICBmb290ZXI6IGNyZWF0ZURPTUZhY3RvcnkoJ2Zvb3RlcicpLFxuICBmb3JtOiBj
cmVhdGVET01GYWN0b3J5KCdmb3JtJyksXG4gIGgxOiBjcmVhdGVET01GYWN0b3J5KCdoMScpLFxu
ICBoMjogY3JlYXRlRE9NRmFjdG9yeSgnaDInKSxcbiAgaDM6IGNyZWF0ZURPTUZhY3RvcnkoJ2gz
JyksXG4gIGg0OiBjcmVhdGVET01GYWN0b3J5KCdoNCcpLFxuICBoNTogY3JlYXRlRE9NRmFjdG9y
eSgnaDUnKSxcbiAgaDY6IGNyZWF0ZURPTUZhY3RvcnkoJ2g2JyksXG4gIGhlYWQ6IGNyZWF0ZURP
TUZhY3RvcnkoJ2hlYWQnKSxcbiAgaGVhZGVyOiBjcmVhdGVET01GYWN0b3J5KCdoZWFkZXInKSxc
biAgaGdyb3VwOiBjcmVhdGVET01GYWN0b3J5KCdoZ3JvdXAnKSxcbiAgaHI6IGNyZWF0ZURPTUZh
Y3RvcnkoJ2hyJyksXG4gIGh0bWw6IGNyZWF0ZURPTUZhY3RvcnkoJ2h0bWwnKSxcbiAgaTogY3Jl
YXRlRE9NRmFjdG9yeSgnaScpLFxuICBpZnJhbWU6IGNyZWF0ZURPTUZhY3RvcnkoJ2lmcmFtZScp
LFxuICBpbWc6IGNyZWF0ZURPTUZhY3RvcnkoJ2ltZycpLFxuICBpbnB1dDogY3JlYXRlRE9NRmFj
dG9yeSgnaW5wdXQnKSxcbiAgaW5zOiBjcmVhdGVET01GYWN0b3J5KCdpbnMnKSxcbiAga2JkOiBj
cmVhdGVET01GYWN0b3J5KCdrYmQnKSxcbiAga2V5Z2VuOiBjcmVhdGVET01GYWN0b3J5KCdrZXln
ZW4nKSxcbiAgbGFiZWw6IGNyZWF0ZURPTUZhY3RvcnkoJ2xhYmVsJyksXG4gIGxlZ2VuZDogY3Jl
YXRlRE9NRmFjdG9yeSgnbGVnZW5kJyksXG4gIGxpOiBjcmVhdGVET01GYWN0b3J5KCdsaScpLFxu
ICBsaW5rOiBjcmVhdGVET01GYWN0b3J5KCdsaW5rJyksXG4gIG1haW46IGNyZWF0ZURPTUZhY3Rv
cnkoJ21haW4nKSxcbiAgbWFwOiBjcmVhdGVET01GYWN0b3J5KCdtYXAnKSxcbiAgbWFyazogY3Jl
YXRlRE9NRmFjdG9yeSgnbWFyaycpLFxuICBtZW51OiBjcmVhdGVET01GYWN0b3J5KCdtZW51Jyks
XG4gIG1lbnVpdGVtOiBjcmVhdGVET01GYWN0b3J5KCdtZW51aXRlbScpLFxuICBtZXRhOiBjcmVh
dGVET01GYWN0b3J5KCdtZXRhJyksXG4gIG1ldGVyOiBjcmVhdGVET01GYWN0b3J5KCdtZXRlcicp
LFxuICBuYXY6IGNyZWF0ZURPTUZhY3RvcnkoJ25hdicpLFxuICBub3NjcmlwdDogY3JlYXRlRE9N
RmFjdG9yeSgnbm9zY3JpcHQnKSxcbiAgb2JqZWN0OiBjcmVhdGVET01GYWN0b3J5KCdvYmplY3Qn
KSxcbiAgb2w6IGNyZWF0ZURPTUZhY3RvcnkoJ29sJyksXG4gIG9wdGdyb3VwOiBjcmVhdGVET01G
YWN0b3J5KCdvcHRncm91cCcpLFxuICBvcHRpb246IGNyZWF0ZURPTUZhY3RvcnkoJ29wdGlvbicp
LFxuICBvdXRwdXQ6IGNyZWF0ZURPTUZhY3RvcnkoJ291dHB1dCcpLFxuICBwOiBjcmVhdGVET01G
YWN0b3J5KCdwJyksXG4gIHBhcmFtOiBjcmVhdGVET01GYWN0b3J5KCdwYXJhbScpLFxuICBwaWN0
dXJlOiBjcmVhdGVET01GYWN0b3J5KCdwaWN0dXJlJyksXG4gIHByZTogY3JlYXRlRE9NRmFjdG9y
eSgncHJlJyksXG4gIHByb2dyZXNzOiBjcmVhdGVET01GYWN0b3J5KCdwcm9ncmVzcycpLFxuICBx
OiBjcmVhdGVET01GYWN0b3J5KCdxJyksXG4gIHJwOiBjcmVhdGVET01GYWN0b3J5KCdycCcpLFxu
ICBydDogY3JlYXRlRE9NRmFjdG9yeSgncnQnKSxcbiAgcnVieTogY3JlYXRlRE9NRmFjdG9yeSgn
cnVieScpLFxuICBzOiBjcmVhdGVET01GYWN0b3J5KCdzJyksXG4gIHNhbXA6IGNyZWF0ZURPTUZh
Y3RvcnkoJ3NhbXAnKSxcbiAgc2NyaXB0OiBjcmVhdGVET01GYWN0b3J5KCdzY3JpcHQnKSxcbiAg
c2VjdGlvbjogY3JlYXRlRE9NRmFjdG9yeSgnc2VjdGlvbicpLFxuICBzZWxlY3Q6IGNyZWF0ZURP
TUZhY3RvcnkoJ3NlbGVjdCcpLFxuICBzbWFsbDogY3JlYXRlRE9NRmFjdG9yeSgnc21hbGwnKSxc
biAgc291cmNlOiBjcmVhdGVET01GYWN0b3J5KCdzb3VyY2UnKSxcbiAgc3BhbjogY3JlYXRlRE9N
RmFjdG9yeSgnc3BhbicpLFxuICBzdHJvbmc6IGNyZWF0ZURPTUZhY3RvcnkoJ3N0cm9uZycpLFxu
ICBzdHlsZTogY3JlYXRlRE9NRmFjdG9yeSgnc3R5bGUnKSxcbiAgc3ViOiBjcmVhdGVET01GYWN0
b3J5KCdzdWInKSxcbiAgc3VtbWFyeTogY3JlYXRlRE9NRmFjdG9yeSgnc3VtbWFyeScpLFxuICBz
dXA6IGNyZWF0ZURPTUZhY3RvcnkoJ3N1cCcpLFxuICB0YWJsZTogY3JlYXRlRE9NRmFjdG9yeSgn
dGFibGUnKSxcbiAgdGJvZHk6IGNyZWF0ZURPTUZhY3RvcnkoJ3Rib2R5JyksXG4gIHRkOiBjcmVh
dGVET01GYWN0b3J5KCd0ZCcpLFxuICB0ZXh0YXJlYTogY3JlYXRlRE9NRmFjdG9yeSgndGV4dGFy
ZWEnKSxcbiAgdGZvb3Q6IGNyZWF0ZURPTUZhY3RvcnkoJ3Rmb290JyksXG4gIHRoOiBjcmVhdGVE
T01GYWN0b3J5KCd0aCcpLFxuICB0aGVhZDogY3JlYXRlRE9NRmFjdG9yeSgndGhlYWQnKSxcbiAg
dGltZTogY3JlYXRlRE9NRmFjdG9yeSgndGltZScpLFxuICB0aXRsZTogY3JlYXRlRE9NRmFjdG9y
eSgndGl0bGUnKSxcbiAgdHI6IGNyZWF0ZURPTUZhY3RvcnkoJ3RyJyksXG4gIHRyYWNrOiBjcmVh
dGVET01GYWN0b3J5KCd0cmFjaycpLFxuICB1OiBjcmVhdGVET01GYWN0b3J5KCd1JyksXG4gIHVs
OiBjcmVhdGVET01GYWN0b3J5KCd1bCcpLFxuICAndmFyJzogY3JlYXRlRE9NRmFjdG9yeSgndmFy
JyksXG4gIHZpZGVvOiBjcmVhdGVET01GYWN0b3J5KCd2aWRlbycpLFxuICB3YnI6IGNyZWF0ZURP
TUZhY3RvcnkoJ3dicicpLFxuXG4gIC8vIFNWR1xuICBjaXJjbGU6IGNyZWF0ZURPTUZhY3Rvcnko
J2NpcmNsZScpLFxuICBjbGlwUGF0aDogY3JlYXRlRE9NRmFjdG9yeSgnY2xpcFBhdGgnKSxcbiAg
ZGVmczogY3JlYXRlRE9NRmFjdG9yeSgnZGVmcycpLFxuICBlbGxpcHNlOiBjcmVhdGVET01GYWN0
b3J5KCdlbGxpcHNlJyksXG4gIGc6IGNyZWF0ZURPTUZhY3RvcnkoJ2cnKSxcbiAgaW1hZ2U6IGNy
ZWF0ZURPTUZhY3RvcnkoJ2ltYWdlJyksXG4gIGxpbmU6IGNyZWF0ZURPTUZhY3RvcnkoJ2xpbmUn
KSxcbiAgbGluZWFyR3JhZGllbnQ6IGNyZWF0ZURPTUZhY3RvcnkoJ2xpbmVhckdyYWRpZW50Jyks
XG4gIG1hc2s6IGNyZWF0ZURPTUZhY3RvcnkoJ21hc2snKSxcbiAgcGF0aDogY3JlYXRlRE9NRmFj
dG9yeSgncGF0aCcpLFxuICBwYXR0ZXJuOiBjcmVhdGVET01GYWN0b3J5KCdwYXR0ZXJuJyksXG4g
IHBvbHlnb246IGNyZWF0ZURPTUZhY3RvcnkoJ3BvbHlnb24nKSxcbiAgcG9seWxpbmU6IGNyZWF0
ZURPTUZhY3RvcnkoJ3BvbHlsaW5lJyksXG4gIHJhZGlhbEdyYWRpZW50OiBjcmVhdGVET01GYWN0
b3J5KCdyYWRpYWxHcmFkaWVudCcpLFxuICByZWN0OiBjcmVhdGVET01GYWN0b3J5KCdyZWN0Jyks
XG4gIHN0b3A6IGNyZWF0ZURPTUZhY3RvcnkoJ3N0b3AnKSxcbiAgc3ZnOiBjcmVhdGVET01GYWN0
b3J5KCdzdmcnKSxcbiAgdGV4dDogY3JlYXRlRE9NRmFjdG9yeSgndGV4dCcpLFxuICB0c3Bhbjog
Y3JlYXRlRE9NRmFjdG9yeSgndHNwYW4nKVxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdERP
TUZhY3RvcmllcztcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxu
ICoqIC4vfi9yZWFjdC9saWIvUmVhY3RET01GYWN0b3JpZXMuanNcbiAqKiBtb2R1bGUgaWQgPSAy
MTZcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMt
cHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICog
VGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2Ug
Zm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRo
aXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMg
Y2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5Llxu
ICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBfcmVxdWlyZSA9IHJlcXVpcmUoJy4vUmVh
Y3RFbGVtZW50JyksXG4gICAgaXNWYWxpZEVsZW1lbnQgPSBfcmVxdWlyZS5pc1ZhbGlkRWxlbWVu
dDtcblxudmFyIGZhY3RvcnkgPSByZXF1aXJlKCdwcm9wLXR5cGVzL2ZhY3RvcnknKTtcblxubW9k
dWxlLmV4cG9ydHMgPSBmYWN0b3J5KGlzVmFsaWRFbGVtZW50KTtcblxuXG4vKioqKioqKioqKioq
KioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFjdC9saWIvUmVhY3RQcm9wVHlw
ZXMuanNcbiAqKiBtb2R1bGUgaWQgPSAyMTdcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIs
Ii8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRl
ciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4g
dGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3Jh
bnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUg
aW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBf
cmVxdWlyZSA9IHJlcXVpcmUoJy4vUmVhY3RCYXNlQ2xhc3NlcycpLFxuICAgIENvbXBvbmVudCA9
IF9yZXF1aXJlLkNvbXBvbmVudDtcblxudmFyIF9yZXF1aXJlMiA9IHJlcXVpcmUoJy4vUmVhY3RF
bGVtZW50JyksXG4gICAgaXNWYWxpZEVsZW1lbnQgPSBfcmVxdWlyZTIuaXNWYWxpZEVsZW1lbnQ7
XG5cbnZhciBSZWFjdE5vb3BVcGRhdGVRdWV1ZSA9IHJlcXVpcmUoJy4vUmVhY3ROb29wVXBkYXRl
UXVldWUnKTtcbnZhciBmYWN0b3J5ID0gcmVxdWlyZSgnY3JlYXRlLXJlYWN0LWNsYXNzL2ZhY3Rv
cnknKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5KENvbXBvbmVudCwgaXNWYWxpZEVsZW1l
bnQsIFJlYWN0Tm9vcFVwZGF0ZVF1ZXVlKTtcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBX
RUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFjdC9saWIvY3JlYXRlQ2xhc3MuanNcbiAqKiBtb2R1
bGUgaWQgPSAyMTlcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29weXJp
Z2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQu
XG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxl
IGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0
b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVu
dCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGly
ZWN0b3J5LlxuICpcbiAqIFxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIG5leHREZWJ1Z0lE
ID0gMTtcblxuZnVuY3Rpb24gZ2V0TmV4dERlYnVnSUQoKSB7XG4gIHJldHVybiBuZXh0RGVidWdJ
RCsrO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGdldE5leHREZWJ1Z0lEO1xuXG5cbi8qKioqKioq
KioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0L2xpYi9nZXROZXh0
RGVidWdJRC5qc1xuICoqIG1vZHVsZSBpZCA9IDIyMVxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4g
KiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNC0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxs
IHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVu
ZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBp
biB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBn
cmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmls
ZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxuLyoq
XG4gKiBGb3JrZWQgZnJvbSBmYmpzL3dhcm5pbmc6XG4gKiBodHRwczovL2dpdGh1Yi5jb20vZmFj
ZWJvb2svZmJqcy9ibG9iL2U2NmJhMjBhZDViZTQzM2ViNTQ0MjNmMmIwOTdkODI5MzI0ZDlkZTYv
cGFja2FnZXMvZmJqcy9zcmMvX19mb3Jrc19fL3dhcm5pbmcuanNcbiAqXG4gKiBPbmx5IGNoYW5n
ZSBpcyB3ZSB1c2UgY29uc29sZS53YXJuIGluc3RlYWQgb2YgY29uc29sZS5lcnJvcixcbiAqIGFu
ZCBkbyBub3RoaW5nIHdoZW4gJ2NvbnNvbGUnIGlzIG5vdCBzdXBwb3J0ZWQuXG4gKiBUaGlzIHJl
YWxseSBzaW1wbGlmaWVzIHRoZSBjb2RlLlxuICogLS0tXG4gKiBTaW1pbGFyIHRvIGludmFyaWFu
dCBidXQgb25seSBsb2dzIGEgd2FybmluZyBpZiB0aGUgY29uZGl0aW9uIGlzIG5vdCBtZXQuXG4g
KiBUaGlzIGNhbiBiZSB1c2VkIHRvIGxvZyBpc3N1ZXMgaW4gZGV2ZWxvcG1lbnQgZW52aXJvbm1l
bnRzIGluIGNyaXRpY2FsXG4gKiBwYXRocy4gUmVtb3ZpbmcgdGhlIGxvZ2dpbmcgY29kZSBmb3Ig
cHJvZHVjdGlvbiBlbnZpcm9ubWVudHMgd2lsbCBrZWVwIHRoZVxuICogc2FtZSBsb2dpYyBhbmQg
Zm9sbG93IHRoZSBzYW1lIGNvZGUgcGF0aHMuXG4gKi9cblxudmFyIGxvd1ByaW9yaXR5V2Fybmlu
ZyA9IGZ1bmN0aW9uICgpIHt9O1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9k
dWN0aW9uJykge1xuICB2YXIgcHJpbnRXYXJuaW5nID0gZnVuY3Rpb24gKGZvcm1hdCkge1xuICAg
IGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gQXJyYXkoX2xlbiA+IDEg
PyBfbGVuIC0gMSA6IDApLCBfa2V5ID0gMTsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgICAg
YXJnc1tfa2V5IC0gMV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgfVxuXG4gICAgdmFyIGFyZ0lu
ZGV4ID0gMDtcbiAgICB2YXIgbWVzc2FnZSA9ICdXYXJuaW5nOiAnICsgZm9ybWF0LnJlcGxhY2Uo
LyVzL2csIGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBhcmdzW2FyZ0luZGV4KytdO1xuICAg
IH0pO1xuICAgIGlmICh0eXBlb2YgY29uc29sZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIGNv
bnNvbGUud2FybihtZXNzYWdlKTtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgIC8vIC0tLSBXZWxj
b21lIHRvIGRlYnVnZ2luZyBSZWFjdCAtLS1cbiAgICAgIC8vIFRoaXMgZXJyb3Igd2FzIHRocm93
biBhcyBhIGNvbnZlbmllbmNlIHNvIHRoYXQgeW91IGNhbiB1c2UgdGhpcyBzdGFja1xuICAgICAg
Ly8gdG8gZmluZCB0aGUgY2FsbHNpdGUgdGhhdCBjYXVzZWQgdGhpcyB3YXJuaW5nIHRvIGZpcmUu
XG4gICAgICB0aHJvdyBuZXcgRXJyb3IobWVzc2FnZSk7XG4gICAgfSBjYXRjaCAoeCkge31cbiAg
fTtcblxuICBsb3dQcmlvcml0eVdhcm5pbmcgPSBmdW5jdGlvbiAoY29uZGl0aW9uLCBmb3JtYXQp
IHtcbiAgICBpZiAoZm9ybWF0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJv
cignYHdhcm5pbmcoY29uZGl0aW9uLCBmb3JtYXQsIC4uLmFyZ3MpYCByZXF1aXJlcyBhIHdhcm5p
bmcgJyArICdtZXNzYWdlIGFyZ3VtZW50Jyk7XG4gICAgfVxuICAgIGlmICghY29uZGl0aW9uKSB7
XG4gICAgICBmb3IgKHZhciBfbGVuMiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBBcnJheShf
bGVuMiA+IDIgPyBfbGVuMiAtIDIgOiAwKSwgX2tleTIgPSAyOyBfa2V5MiA8IF9sZW4yOyBfa2V5
MisrKSB7XG4gICAgICAgIGFyZ3NbX2tleTIgLSAyXSA9IGFyZ3VtZW50c1tfa2V5Ml07XG4gICAg
ICB9XG5cbiAgICAgIHByaW50V2FybmluZy5hcHBseSh1bmRlZmluZWQsIFtmb3JtYXRdLmNvbmNh
dChhcmdzKSk7XG4gICAgfVxuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGxvd1ByaW9yaXR5
V2FybmluZztcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoq
IC4vfi9yZWFjdC9saWIvbG93UHJpb3JpdHlXYXJuaW5nLmpzXG4gKiogbW9kdWxlIGlkID0gMjIy
XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLXBy
ZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRo
aXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZv
dW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlz
IHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNh
biBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAq
XG4gKi9cbid1c2Ugc3RyaWN0JztcblxudmFyIF9wcm9kSW52YXJpYW50ID0gcmVxdWlyZSgnLi9y
ZWFjdFByb2RJbnZhcmlhbnQnKTtcblxudmFyIFJlYWN0RWxlbWVudCA9IHJlcXVpcmUoJy4vUmVh
Y3RFbGVtZW50Jyk7XG5cbnZhciBpbnZhcmlhbnQgPSByZXF1aXJlKCdmYmpzL2xpYi9pbnZhcmlh
bnQnKTtcblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBmaXJzdCBjaGlsZCBpbiBhIGNvbGxlY3Rpb24g
b2YgY2hpbGRyZW4gYW5kIHZlcmlmaWVzIHRoYXQgdGhlcmVcbiAqIGlzIG9ubHkgb25lIGNoaWxk
IGluIHRoZSBjb2xsZWN0aW9uLlxuICpcbiAqIFNlZSBodHRwczovL2ZhY2Vib29rLmdpdGh1Yi5p
by9yZWFjdC9kb2NzL3RvcC1sZXZlbC1hcGkuaHRtbCNyZWFjdC5jaGlsZHJlbi5vbmx5XG4gKlxu
ICogVGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gb2YgdGhpcyBmdW5jdGlvbiBhc3N1bWVzIHRo
YXQgYSBzaW5nbGUgY2hpbGQgZ2V0c1xuICogcGFzc2VkIHdpdGhvdXQgYSB3cmFwcGVyLCBidXQg
dGhlIHB1cnBvc2Ugb2YgdGhpcyBoZWxwZXIgZnVuY3Rpb24gaXMgdG9cbiAqIGFic3RyYWN0IGF3
YXkgdGhlIHBhcnRpY3VsYXIgc3RydWN0dXJlIG9mIGNoaWxkcmVuLlxuICpcbiAqIEBwYXJhbSB7
P29iamVjdH0gY2hpbGRyZW4gQ2hpbGQgY29sbGVjdGlvbiBzdHJ1Y3R1cmUuXG4gKiBAcmV0dXJu
IHtSZWFjdEVsZW1lbnR9IFRoZSBmaXJzdCBhbmQgb25seSBgUmVhY3RFbGVtZW50YCBjb250YWlu
ZWQgaW4gdGhlXG4gKiBzdHJ1Y3R1cmUuXG4gKi9cbmZ1bmN0aW9uIG9ubHlDaGlsZChjaGlsZHJl
bikge1xuICAhUmVhY3RFbGVtZW50LmlzVmFsaWRFbGVtZW50KGNoaWxkcmVuKSA/IHByb2Nlc3Mu
ZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdSZWFjdC5D
aGlsZHJlbi5vbmx5IGV4cGVjdGVkIHRvIHJlY2VpdmUgYSBzaW5nbGUgUmVhY3QgZWxlbWVudCBj
aGlsZC4nKSA6IF9wcm9kSW52YXJpYW50KCcxNDMnKSA6IHZvaWQgMDtcbiAgcmV0dXJuIGNoaWxk
cmVuO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG9ubHlDaGlsZDtcblxuXG4vKioqKioqKioqKioq
KioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFjdC9saWIvb25seUNoaWxkLmpz
XG4gKiogbW9kdWxlIGlkID0gMjIzXG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipc
biAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRz
IHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhl
IEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSBy
b290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4g
KiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRo
ZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgX3Byb2RJ
bnZhcmlhbnQgPSByZXF1aXJlKCcuL3JlYWN0UHJvZEludmFyaWFudCcpO1xuXG52YXIgUmVhY3RD
dXJyZW50T3duZXIgPSByZXF1aXJlKCcuL1JlYWN0Q3VycmVudE93bmVyJyk7XG52YXIgUkVBQ1Rf
RUxFTUVOVF9UWVBFID0gcmVxdWlyZSgnLi9SZWFjdEVsZW1lbnRTeW1ib2wnKTtcblxudmFyIGdl
dEl0ZXJhdG9yRm4gPSByZXF1aXJlKCcuL2dldEl0ZXJhdG9yRm4nKTtcbnZhciBpbnZhcmlhbnQg
PSByZXF1aXJlKCdmYmpzL2xpYi9pbnZhcmlhbnQnKTtcbnZhciBLZXlFc2NhcGVVdGlscyA9IHJl
cXVpcmUoJy4vS2V5RXNjYXBlVXRpbHMnKTtcbnZhciB3YXJuaW5nID0gcmVxdWlyZSgnZmJqcy9s
aWIvd2FybmluZycpO1xuXG52YXIgU0VQQVJBVE9SID0gJy4nO1xudmFyIFNVQlNFUEFSQVRPUiA9
ICc6JztcblxuLyoqXG4gKiBUaGlzIGlzIGlubGluZWQgZnJvbSBSZWFjdEVsZW1lbnQgc2luY2Ug
dGhpcyBmaWxlIGlzIHNoYXJlZCBiZXR3ZWVuXG4gKiBpc29tb3JwaGljIGFuZCByZW5kZXJlcnMu
IFdlIGNvdWxkIGV4dHJhY3QgdGhpcyB0byBhXG4gKlxuICovXG5cbi8qKlxuICogVE9ETzogVGVz
dCB0aGF0IGEgc2luZ2xlIGNoaWxkIGFuZCBhbiBhcnJheSB3aXRoIG9uZSBpdGVtIGhhdmUgdGhl
IHNhbWUga2V5XG4gKiBwYXR0ZXJuLlxuICovXG5cbnZhciBkaWRXYXJuQWJvdXRNYXBzID0gZmFs
c2U7XG5cbi8qKlxuICogR2VuZXJhdGUgYSBrZXkgc3RyaW5nIHRoYXQgaWRlbnRpZmllcyBhIGNv
bXBvbmVudCB3aXRoaW4gYSBzZXQuXG4gKlxuICogQHBhcmFtIHsqfSBjb21wb25lbnQgQSBjb21w
b25lbnQgdGhhdCBjb3VsZCBjb250YWluIGEgbWFudWFsIGtleS5cbiAqIEBwYXJhbSB7bnVtYmVy
fSBpbmRleCBJbmRleCB0aGF0IGlzIHVzZWQgaWYgYSBtYW51YWwga2V5IGlzIG5vdCBwcm92aWRl
ZC5cbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqL1xuZnVuY3Rpb24gZ2V0Q29tcG9uZW50S2V5KGNv
bXBvbmVudCwgaW5kZXgpIHtcbiAgLy8gRG8gc29tZSB0eXBlY2hlY2tpbmcgaGVyZSBzaW5jZSB3
ZSBjYWxsIHRoaXMgYmxpbmRseS4gV2Ugd2FudCB0byBlbnN1cmVcbiAgLy8gdGhhdCB3ZSBkb24n
dCBibG9jayBwb3RlbnRpYWwgZnV0dXJlIEVTIEFQSXMuXG4gIGlmIChjb21wb25lbnQgJiYgdHlw
ZW9mIGNvbXBvbmVudCA9PT0gJ29iamVjdCcgJiYgY29tcG9uZW50LmtleSAhPSBudWxsKSB7XG4g
ICAgLy8gRXhwbGljaXQga2V5XG4gICAgcmV0dXJuIEtleUVzY2FwZVV0aWxzLmVzY2FwZShjb21w
b25lbnQua2V5KTtcbiAgfVxuICAvLyBJbXBsaWNpdCBrZXkgZGV0ZXJtaW5lZCBieSB0aGUgaW5k
ZXggaW4gdGhlIHNldFxuICByZXR1cm4gaW5kZXgudG9TdHJpbmcoMzYpO1xufVxuXG4vKipcbiAq
IEBwYXJhbSB7Pyp9IGNoaWxkcmVuIENoaWxkcmVuIHRyZWUgY29udGFpbmVyLlxuICogQHBhcmFt
IHshc3RyaW5nfSBuYW1lU29GYXIgTmFtZSBvZiB0aGUga2V5IHBhdGggc28gZmFyLlxuICogQHBh
cmFtIHshZnVuY3Rpb259IGNhbGxiYWNrIENhbGxiYWNrIHRvIGludm9rZSB3aXRoIGVhY2ggY2hp
bGQgZm91bmQuXG4gKiBAcGFyYW0gez8qfSB0cmF2ZXJzZUNvbnRleHQgVXNlZCB0byBwYXNzIGlu
Zm9ybWF0aW9uIHRocm91Z2hvdXQgdGhlIHRyYXZlcnNhbFxuICogcHJvY2Vzcy5cbiAqIEByZXR1
cm4geyFudW1iZXJ9IFRoZSBudW1iZXIgb2YgY2hpbGRyZW4gaW4gdGhpcyBzdWJ0cmVlLlxuICov
XG5mdW5jdGlvbiB0cmF2ZXJzZUFsbENoaWxkcmVuSW1wbChjaGlsZHJlbiwgbmFtZVNvRmFyLCBj
YWxsYmFjaywgdHJhdmVyc2VDb250ZXh0KSB7XG4gIHZhciB0eXBlID0gdHlwZW9mIGNoaWxkcmVu
O1xuXG4gIGlmICh0eXBlID09PSAndW5kZWZpbmVkJyB8fCB0eXBlID09PSAnYm9vbGVhbicpIHtc
biAgICAvLyBBbGwgb2YgdGhlIGFib3ZlIGFyZSBwZXJjZWl2ZWQgYXMgbnVsbC5cbiAgICBjaGls
ZHJlbiA9IG51bGw7XG4gIH1cblxuICBpZiAoY2hpbGRyZW4gPT09IG51bGwgfHwgdHlwZSA9PT0g
J3N0cmluZycgfHwgdHlwZSA9PT0gJ251bWJlcicgfHxcbiAgLy8gVGhlIGZvbGxvd2luZyBpcyBp
bmxpbmVkIGZyb20gUmVhY3RFbGVtZW50LiBUaGlzIG1lYW5zIHdlIGNhbiBvcHRpbWl6ZVxuICAv
LyBzb21lIGNoZWNrcy4gUmVhY3QgRmliZXIgYWxzbyBpbmxpbmVzIHRoaXMgbG9naWMgZm9yIHNp
bWlsYXIgcHVycG9zZXMuXG4gIHR5cGUgPT09ICdvYmplY3QnICYmIGNoaWxkcmVuLiQkdHlwZW9m
ID09PSBSRUFDVF9FTEVNRU5UX1RZUEUpIHtcbiAgICBjYWxsYmFjayh0cmF2ZXJzZUNvbnRleHQs
IGNoaWxkcmVuLFxuICAgIC8vIElmIGl0J3MgdGhlIG9ubHkgY2hpbGQsIHRyZWF0IHRoZSBuYW1l
IGFzIGlmIGl0IHdhcyB3cmFwcGVkIGluIGFuIGFycmF5XG4gICAgLy8gc28gdGhhdCBpdCdzIGNv
bnNpc3RlbnQgaWYgdGhlIG51bWJlciBvZiBjaGlsZHJlbiBncm93cy5cbiAgICBuYW1lU29GYXIg
PT09ICcnID8gU0VQQVJBVE9SICsgZ2V0Q29tcG9uZW50S2V5KGNoaWxkcmVuLCAwKSA6IG5hbWVT
b0Zhcik7XG4gICAgcmV0dXJuIDE7XG4gIH1cblxuICB2YXIgY2hpbGQ7XG4gIHZhciBuZXh0TmFt
ZTtcbiAgdmFyIHN1YnRyZWVDb3VudCA9IDA7IC8vIENvdW50IG9mIGNoaWxkcmVuIGZvdW5kIGlu
IHRoZSBjdXJyZW50IHN1YnRyZWUuXG4gIHZhciBuZXh0TmFtZVByZWZpeCA9IG5hbWVTb0ZhciA9
PT0gJycgPyBTRVBBUkFUT1IgOiBuYW1lU29GYXIgKyBTVUJTRVBBUkFUT1I7XG5cbiAgaWYgKEFy
cmF5LmlzQXJyYXkoY2hpbGRyZW4pKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGlsZHJl
bi5sZW5ndGg7IGkrKykge1xuICAgICAgY2hpbGQgPSBjaGlsZHJlbltpXTtcbiAgICAgIG5leHRO
YW1lID0gbmV4dE5hbWVQcmVmaXggKyBnZXRDb21wb25lbnRLZXkoY2hpbGQsIGkpO1xuICAgICAg
c3VidHJlZUNvdW50ICs9IHRyYXZlcnNlQWxsQ2hpbGRyZW5JbXBsKGNoaWxkLCBuZXh0TmFtZSwg
Y2FsbGJhY2ssIHRyYXZlcnNlQ29udGV4dCk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHZhciBp
dGVyYXRvckZuID0gZ2V0SXRlcmF0b3JGbihjaGlsZHJlbik7XG4gICAgaWYgKGl0ZXJhdG9yRm4p
IHtcbiAgICAgIHZhciBpdGVyYXRvciA9IGl0ZXJhdG9yRm4uY2FsbChjaGlsZHJlbik7XG4gICAg
ICB2YXIgc3RlcDtcbiAgICAgIGlmIChpdGVyYXRvckZuICE9PSBjaGlsZHJlbi5lbnRyaWVzKSB7
XG4gICAgICAgIHZhciBpaSA9IDA7XG4gICAgICAgIHdoaWxlICghKHN0ZXAgPSBpdGVyYXRvci5u
ZXh0KCkpLmRvbmUpIHtcbiAgICAgICAgICBjaGlsZCA9IHN0ZXAudmFsdWU7XG4gICAgICAgICAg
bmV4dE5hbWUgPSBuZXh0TmFtZVByZWZpeCArIGdldENvbXBvbmVudEtleShjaGlsZCwgaWkrKyk7
XG4gICAgICAgICAgc3VidHJlZUNvdW50ICs9IHRyYXZlcnNlQWxsQ2hpbGRyZW5JbXBsKGNoaWxk
LCBuZXh0TmFtZSwgY2FsbGJhY2ssIHRyYXZlcnNlQ29udGV4dCk7XG4gICAgICAgIH1cbiAgICAg
IH0gZWxzZSB7XG4gICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rp
b24nKSB7XG4gICAgICAgICAgdmFyIG1hcHNBc0NoaWxkcmVuQWRkZW5kdW0gPSAnJztcbiAgICAg
ICAgICBpZiAoUmVhY3RDdXJyZW50T3duZXIuY3VycmVudCkge1xuICAgICAgICAgICAgdmFyIG1h
cHNBc0NoaWxkcmVuT3duZXJOYW1lID0gUmVhY3RDdXJyZW50T3duZXIuY3VycmVudC5nZXROYW1l
KCk7XG4gICAgICAgICAgICBpZiAobWFwc0FzQ2hpbGRyZW5Pd25lck5hbWUpIHtcbiAgICAgICAg
ICAgICAgbWFwc0FzQ2hpbGRyZW5BZGRlbmR1bSA9ICcgQ2hlY2sgdGhlIHJlbmRlciBtZXRob2Qg
b2YgYCcgKyBtYXBzQXNDaGlsZHJlbk93bmVyTmFtZSArICdgLic7XG4gICAgICAgICAgICB9XG4g
ICAgICAgICAgfVxuICAgICAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlv
bicgPyB3YXJuaW5nKGRpZFdhcm5BYm91dE1hcHMsICdVc2luZyBNYXBzIGFzIGNoaWxkcmVuIGlz
IG5vdCB5ZXQgZnVsbHkgc3VwcG9ydGVkLiBJdCBpcyBhbiAnICsgJ2V4cGVyaW1lbnRhbCBmZWF0
dXJlIHRoYXQgbWlnaHQgYmUgcmVtb3ZlZC4gQ29udmVydCBpdCB0byBhICcgKyAnc2VxdWVuY2Ug
LyBpdGVyYWJsZSBvZiBrZXllZCBSZWFjdEVsZW1lbnRzIGluc3RlYWQuJXMnLCBtYXBzQXNDaGls
ZHJlbkFkZGVuZHVtKSA6IHZvaWQgMDtcbiAgICAgICAgICBkaWRXYXJuQWJvdXRNYXBzID0gdHJ1
ZTtcbiAgICAgICAgfVxuICAgICAgICAvLyBJdGVyYXRvciB3aWxsIHByb3ZpZGUgZW50cnkgW2ss
dl0gdHVwbGVzIHJhdGhlciB0aGFuIHZhbHVlcy5cbiAgICAgICAgd2hpbGUgKCEoc3RlcCA9IGl0
ZXJhdG9yLm5leHQoKSkuZG9uZSkge1xuICAgICAgICAgIHZhciBlbnRyeSA9IHN0ZXAudmFsdWU7
XG4gICAgICAgICAgaWYgKGVudHJ5KSB7XG4gICAgICAgICAgICBjaGlsZCA9IGVudHJ5WzFdO1xu
ICAgICAgICAgICAgbmV4dE5hbWUgPSBuZXh0TmFtZVByZWZpeCArIEtleUVzY2FwZVV0aWxzLmVz
Y2FwZShlbnRyeVswXSkgKyBTVUJTRVBBUkFUT1IgKyBnZXRDb21wb25lbnRLZXkoY2hpbGQsIDAp
O1xuICAgICAgICAgICAgc3VidHJlZUNvdW50ICs9IHRyYXZlcnNlQWxsQ2hpbGRyZW5JbXBsKGNo
aWxkLCBuZXh0TmFtZSwgY2FsbGJhY2ssIHRyYXZlcnNlQ29udGV4dCk7XG4gICAgICAgICAgfVxu
ICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0eXBlID09PSAnb2JqZWN0Jykge1xu
ICAgICAgdmFyIGFkZGVuZHVtID0gJyc7XG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYg
IT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICBhZGRlbmR1bSA9ICcgSWYgeW91IG1lYW50IHRv
IHJlbmRlciBhIGNvbGxlY3Rpb24gb2YgY2hpbGRyZW4sIHVzZSBhbiBhcnJheSAnICsgJ2luc3Rl
YWQgb3Igd3JhcCB0aGUgb2JqZWN0IHVzaW5nIGNyZWF0ZUZyYWdtZW50KG9iamVjdCkgZnJvbSB0
aGUgJyArICdSZWFjdCBhZGQtb25zLic7XG4gICAgICAgIGlmIChjaGlsZHJlbi5faXNSZWFjdEVs
ZW1lbnQpIHtcbiAgICAgICAgICBhZGRlbmR1bSA9IFwiIEl0IGxvb2tzIGxpa2UgeW91J3JlIHVz
aW5nIGFuIGVsZW1lbnQgY3JlYXRlZCBieSBhIGRpZmZlcmVudCBcIiArICd2ZXJzaW9uIG9mIFJl
YWN0LiBNYWtlIHN1cmUgdG8gdXNlIG9ubHkgb25lIGNvcHkgb2YgUmVhY3QuJztcbiAgICAgICAg
fVxuICAgICAgICBpZiAoUmVhY3RDdXJyZW50T3duZXIuY3VycmVudCkge1xuICAgICAgICAgIHZh
ciBuYW1lID0gUmVhY3RDdXJyZW50T3duZXIuY3VycmVudC5nZXROYW1lKCk7XG4gICAgICAgICAg
aWYgKG5hbWUpIHtcbiAgICAgICAgICAgIGFkZGVuZHVtICs9ICcgQ2hlY2sgdGhlIHJlbmRlciBt
ZXRob2Qgb2YgYCcgKyBuYW1lICsgJ2AuJztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAg
IH1cbiAgICAgIHZhciBjaGlsZHJlblN0cmluZyA9IFN0cmluZyhjaGlsZHJlbik7XG4gICAgICAh
ZmFsc2UgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50
KGZhbHNlLCAnT2JqZWN0cyBhcmUgbm90IHZhbGlkIGFzIGEgUmVhY3QgY2hpbGQgKGZvdW5kOiAl
cykuJXMnLCBjaGlsZHJlblN0cmluZyA9PT0gJ1tvYmplY3QgT2JqZWN0XScgPyAnb2JqZWN0IHdp
dGgga2V5cyB7JyArIE9iamVjdC5rZXlzKGNoaWxkcmVuKS5qb2luKCcsICcpICsgJ30nIDogY2hp
bGRyZW5TdHJpbmcsIGFkZGVuZHVtKSA6IF9wcm9kSW52YXJpYW50KCczMScsIGNoaWxkcmVuU3Ry
aW5nID09PSAnW29iamVjdCBPYmplY3RdJyA/ICdvYmplY3Qgd2l0aCBrZXlzIHsnICsgT2JqZWN0
LmtleXMoY2hpbGRyZW4pLmpvaW4oJywgJykgKyAnfScgOiBjaGlsZHJlblN0cmluZywgYWRkZW5k
dW0pIDogdm9pZCAwO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBzdWJ0cmVlQ291bnQ7XG59XG5c
bi8qKlxuICogVHJhdmVyc2VzIGNoaWxkcmVuIHRoYXQgYXJlIHR5cGljYWxseSBzcGVjaWZpZWQg
YXMgYHByb3BzLmNoaWxkcmVuYCwgYnV0XG4gKiBtaWdodCBhbHNvIGJlIHNwZWNpZmllZCB0aHJv
dWdoIGF0dHJpYnV0ZXM6XG4gKlxuICogLSBgdHJhdmVyc2VBbGxDaGlsZHJlbih0aGlzLnByb3Bz
LmNoaWxkcmVuLCAuLi4pYFxuICogLSBgdHJhdmVyc2VBbGxDaGlsZHJlbih0aGlzLnByb3BzLmxl
ZnRQYW5lbENoaWxkcmVuLCAuLi4pYFxuICpcbiAqIFRoZSBgdHJhdmVyc2VDb250ZXh0YCBpcyBh
biBvcHRpb25hbCBhcmd1bWVudCB0aGF0IGlzIHBhc3NlZCB0aHJvdWdoIHRoZVxuICogZW50aXJl
IHRyYXZlcnNhbC4gSXQgY2FuIGJlIHVzZWQgdG8gc3RvcmUgYWNjdW11bGF0aW9ucyBvciBhbnl0
aGluZyBlbHNlIHRoYXRcbiAqIHRoZSBjYWxsYmFjayBtaWdodCBmaW5kIHJlbGV2YW50LlxuICpc
biAqIEBwYXJhbSB7Pyp9IGNoaWxkcmVuIENoaWxkcmVuIHRyZWUgb2JqZWN0LlxuICogQHBhcmFt
IHshZnVuY3Rpb259IGNhbGxiYWNrIFRvIGludm9rZSB1cG9uIHRyYXZlcnNpbmcgZWFjaCBjaGls
ZC5cbiAqIEBwYXJhbSB7Pyp9IHRyYXZlcnNlQ29udGV4dCBDb250ZXh0IGZvciB0cmF2ZXJzYWwu
XG4gKiBAcmV0dXJuIHshbnVtYmVyfSBUaGUgbnVtYmVyIG9mIGNoaWxkcmVuIGluIHRoaXMgc3Vi
dHJlZS5cbiAqL1xuZnVuY3Rpb24gdHJhdmVyc2VBbGxDaGlsZHJlbihjaGlsZHJlbiwgY2FsbGJh
Y2ssIHRyYXZlcnNlQ29udGV4dCkge1xuICBpZiAoY2hpbGRyZW4gPT0gbnVsbCkge1xuICAgIHJl
dHVybiAwO1xuICB9XG5cbiAgcmV0dXJuIHRyYXZlcnNlQWxsQ2hpbGRyZW5JbXBsKGNoaWxkcmVu
LCAnJywgY2FsbGJhY2ssIHRyYXZlcnNlQ29udGV4dCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0g
dHJhdmVyc2VBbGxDaGlsZHJlbjtcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNL
IEZPT1RFUlxuICoqIC4vfi9yZWFjdC9saWIvdHJhdmVyc2VBbGxDaGlsZHJlbi5qc1xuICoqIG1v
ZHVsZSBpZCA9IDIyNFxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiJ3VzZSBzdHJpY3Qn
O1xuXG5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuXG52YXIgX2V4dGVuZHMgPSBPYmplY3Qu
YXNzaWduIHx8IGZ1bmN0aW9uICh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVu
dHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTsgZm9yICh2YXIga2V5
IGluIHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNv
dXJjZSwga2V5KSkgeyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gfSByZXR1cm4gdGFy
Z2V0OyB9O1xuXG5leHBvcnRzWydkZWZhdWx0J10gPSBhcHBseU1pZGRsZXdhcmU7XG5cbnZhciBf
Y29tcG9zZSA9IHJlcXVpcmUoJy4vY29tcG9zZScpO1xuXG52YXIgX2NvbXBvc2UyID0gX2ludGVy
b3BSZXF1aXJlRGVmYXVsdChfY29tcG9zZSk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURl
ZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7ICdkZWZh
dWx0Jzogb2JqIH07IH1cblxuLyoqXG4gKiBDcmVhdGVzIGEgc3RvcmUgZW5oYW5jZXIgdGhhdCBh
cHBsaWVzIG1pZGRsZXdhcmUgdG8gdGhlIGRpc3BhdGNoIG1ldGhvZFxuICogb2YgdGhlIFJlZHV4
IHN0b3JlLiBUaGlzIGlzIGhhbmR5IGZvciBhIHZhcmlldHkgb2YgdGFza3MsIHN1Y2ggYXMgZXhw
cmVzc2luZ1xuICogYXN5bmNocm9ub3VzIGFjdGlvbnMgaW4gYSBjb25jaXNlIG1hbm5lciwgb3Ig
bG9nZ2luZyBldmVyeSBhY3Rpb24gcGF5bG9hZC5cbiAqXG4gKiBTZWUgYHJlZHV4LXRodW5rYCBw
YWNrYWdlIGFzIGFuIGV4YW1wbGUgb2YgdGhlIFJlZHV4IG1pZGRsZXdhcmUuXG4gKlxuICogQmVj
YXVzZSBtaWRkbGV3YXJlIGlzIHBvdGVudGlhbGx5IGFzeW5jaHJvbm91cywgdGhpcyBzaG91bGQg
YmUgdGhlIGZpcnN0XG4gKiBzdG9yZSBlbmhhbmNlciBpbiB0aGUgY29tcG9zaXRpb24gY2hhaW4u
XG4gKlxuICogTm90ZSB0aGF0IGVhY2ggbWlkZGxld2FyZSB3aWxsIGJlIGdpdmVuIHRoZSBgZGlz
cGF0Y2hgIGFuZCBgZ2V0U3RhdGVgIGZ1bmN0aW9uc1xuICogYXMgbmFtZWQgYXJndW1lbnRzLlxu
ICpcbiAqIEBwYXJhbSB7Li4uRnVuY3Rpb259IG1pZGRsZXdhcmVzIFRoZSBtaWRkbGV3YXJlIGNo
YWluIHRvIGJlIGFwcGxpZWQuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IEEgc3RvcmUgZW5oYW5j
ZXIgYXBwbHlpbmcgdGhlIG1pZGRsZXdhcmUuXG4gKi9cbmZ1bmN0aW9uIGFwcGx5TWlkZGxld2Fy
ZSgpIHtcbiAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIG1pZGRsZXdhcmVzID0g
QXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgbWlkZGxl
d2FyZXNbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gIH1cblxuICByZXR1cm4gZnVuY3Rpb24g
KGNyZWF0ZVN0b3JlKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChyZWR1Y2VyLCBwcmVsb2FkZWRT
dGF0ZSwgZW5oYW5jZXIpIHtcbiAgICAgIHZhciBzdG9yZSA9IGNyZWF0ZVN0b3JlKHJlZHVjZXIs
IHByZWxvYWRlZFN0YXRlLCBlbmhhbmNlcik7XG4gICAgICB2YXIgX2Rpc3BhdGNoID0gc3RvcmUu
ZGlzcGF0Y2g7XG4gICAgICB2YXIgY2hhaW4gPSBbXTtcblxuICAgICAgdmFyIG1pZGRsZXdhcmVB
UEkgPSB7XG4gICAgICAgIGdldFN0YXRlOiBzdG9yZS5nZXRTdGF0ZSxcbiAgICAgICAgZGlzcGF0
Y2g6IGZ1bmN0aW9uIGRpc3BhdGNoKGFjdGlvbikge1xuICAgICAgICAgIHJldHVybiBfZGlzcGF0
Y2goYWN0aW9uKTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICAgIGNoYWluID0gbWlkZGxld2Fy
ZXMubWFwKGZ1bmN0aW9uIChtaWRkbGV3YXJlKSB7XG4gICAgICAgIHJldHVybiBtaWRkbGV3YXJl
KG1pZGRsZXdhcmVBUEkpO1xuICAgICAgfSk7XG4gICAgICBfZGlzcGF0Y2ggPSBfY29tcG9zZTJb
J2RlZmF1bHQnXS5hcHBseSh1bmRlZmluZWQsIGNoYWluKShzdG9yZS5kaXNwYXRjaCk7XG5cbiAg
ICAgIHJldHVybiBfZXh0ZW5kcyh7fSwgc3RvcmUsIHtcbiAgICAgICAgZGlzcGF0Y2g6IF9kaXNw
YXRjaFxuICAgICAgfSk7XG4gICAgfTtcbiAgfTtcbn1cblxuXG4vKioqKioqKioqKioqKioqKipc
biAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWR1eC9saWIvYXBwbHlNaWRkbGV3YXJlLmpz
XG4gKiogbW9kdWxlIGlkID0gMjI1XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIndXNl
IHN0cmljdCc7XG5cbmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5leHBvcnRzWydkZWZhdWx0
J10gPSBiaW5kQWN0aW9uQ3JlYXRvcnM7XG5mdW5jdGlvbiBiaW5kQWN0aW9uQ3JlYXRvcihhY3Rp
b25DcmVhdG9yLCBkaXNwYXRjaCkge1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIHJldHVy
biBkaXNwYXRjaChhY3Rpb25DcmVhdG9yLmFwcGx5KHVuZGVmaW5lZCwgYXJndW1lbnRzKSk7XG4g
IH07XG59XG5cbi8qKlxuICogVHVybnMgYW4gb2JqZWN0IHdob3NlIHZhbHVlcyBhcmUgYWN0aW9u
IGNyZWF0b3JzLCBpbnRvIGFuIG9iamVjdCB3aXRoIHRoZVxuICogc2FtZSBrZXlzLCBidXQgd2l0
aCBldmVyeSBmdW5jdGlvbiB3cmFwcGVkIGludG8gYSBgZGlzcGF0Y2hgIGNhbGwgc28gdGhleVxu
ICogbWF5IGJlIGludm9rZWQgZGlyZWN0bHkuIFRoaXMgaXMganVzdCBhIGNvbnZlbmllbmNlIG1l
dGhvZCwgYXMgeW91IGNhbiBjYWxsXG4gKiBgc3RvcmUuZGlzcGF0Y2goTXlBY3Rpb25DcmVhdG9y
cy5kb1NvbWV0aGluZygpKWAgeW91cnNlbGYganVzdCBmaW5lLlxuICpcbiAqIEZvciBjb252ZW5p
ZW5jZSwgeW91IGNhbiBhbHNvIHBhc3MgYSBzaW5nbGUgZnVuY3Rpb24gYXMgdGhlIGZpcnN0IGFy
Z3VtZW50LFxuICogYW5kIGdldCBhIGZ1bmN0aW9uIGluIHJldHVybi5cbiAqXG4gKiBAcGFyYW0g
e0Z1bmN0aW9ufE9iamVjdH0gYWN0aW9uQ3JlYXRvcnMgQW4gb2JqZWN0IHdob3NlIHZhbHVlcyBh
cmUgYWN0aW9uXG4gKiBjcmVhdG9yIGZ1bmN0aW9ucy4gT25lIGhhbmR5IHdheSB0byBvYnRhaW4g
aXQgaXMgdG8gdXNlIEVTNiBgaW1wb3J0ICogYXNgXG4gKiBzeW50YXguIFlvdSBtYXkgYWxzbyBw
YXNzIGEgc2luZ2xlIGZ1bmN0aW9uLlxuICpcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGRpc3BhdGNo
IFRoZSBgZGlzcGF0Y2hgIGZ1bmN0aW9uIGF2YWlsYWJsZSBvbiB5b3VyIFJlZHV4XG4gKiBzdG9y
ZS5cbiAqXG4gKiBAcmV0dXJucyB7RnVuY3Rpb258T2JqZWN0fSBUaGUgb2JqZWN0IG1pbWlja2lu
ZyB0aGUgb3JpZ2luYWwgb2JqZWN0LCBidXQgd2l0aFxuICogZXZlcnkgYWN0aW9uIGNyZWF0b3Ig
d3JhcHBlZCBpbnRvIHRoZSBgZGlzcGF0Y2hgIGNhbGwuIElmIHlvdSBwYXNzZWQgYVxuICogZnVu
Y3Rpb24gYXMgYGFjdGlvbkNyZWF0b3JzYCwgdGhlIHJldHVybiB2YWx1ZSB3aWxsIGFsc28gYmUg
YSBzaW5nbGVcbiAqIGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBiaW5kQWN0aW9uQ3JlYXRvcnMo
YWN0aW9uQ3JlYXRvcnMsIGRpc3BhdGNoKSB7XG4gIGlmICh0eXBlb2YgYWN0aW9uQ3JlYXRvcnMg
PT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gYmluZEFjdGlvbkNyZWF0b3IoYWN0aW9uQ3Jl
YXRvcnMsIGRpc3BhdGNoKTtcbiAgfVxuXG4gIGlmICh0eXBlb2YgYWN0aW9uQ3JlYXRvcnMgIT09
ICdvYmplY3QnIHx8IGFjdGlvbkNyZWF0b3JzID09PSBudWxsKSB7XG4gICAgdGhyb3cgbmV3IEVy
cm9yKCdiaW5kQWN0aW9uQ3JlYXRvcnMgZXhwZWN0ZWQgYW4gb2JqZWN0IG9yIGEgZnVuY3Rpb24s
IGluc3RlYWQgcmVjZWl2ZWQgJyArIChhY3Rpb25DcmVhdG9ycyA9PT0gbnVsbCA/ICdudWxsJyA6
IHR5cGVvZiBhY3Rpb25DcmVhdG9ycykgKyAnLiAnICsgJ0RpZCB5b3Ugd3JpdGUgXCJpbXBvcnQg
QWN0aW9uQ3JlYXRvcnMgZnJvbVwiIGluc3RlYWQgb2YgXCJpbXBvcnQgKiBhcyBBY3Rpb25DcmVh
dG9ycyBmcm9tXCI/Jyk7XG4gIH1cblxuICB2YXIga2V5cyA9IE9iamVjdC5rZXlzKGFjdGlvbkNy
ZWF0b3JzKTtcbiAgdmFyIGJvdW5kQWN0aW9uQ3JlYXRvcnMgPSB7fTtcbiAgZm9yICh2YXIgaSA9
IDA7IGkgPCBrZXlzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGtleSA9IGtleXNbaV07XG4gICAg
dmFyIGFjdGlvbkNyZWF0b3IgPSBhY3Rpb25DcmVhdG9yc1trZXldO1xuICAgIGlmICh0eXBlb2Yg
YWN0aW9uQ3JlYXRvciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgYm91bmRBY3Rpb25DcmVhdG9y
c1trZXldID0gYmluZEFjdGlvbkNyZWF0b3IoYWN0aW9uQ3JlYXRvciwgZGlzcGF0Y2gpO1xuICAg
IH1cbiAgfVxuICByZXR1cm4gYm91bmRBY3Rpb25DcmVhdG9ycztcbn1cblxuXG4vKioqKioqKioq
KioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWR1eC9saWIvYmluZEFjdGlv
bkNyZWF0b3JzLmpzXG4gKiogbW9kdWxlIGlkID0gMjI2XG4gKiogbW9kdWxlIGNodW5rcyA9IDBc
biAqKi8iLCIndXNlIHN0cmljdCc7XG5cbmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5leHBv
cnRzWydkZWZhdWx0J10gPSBjb21iaW5lUmVkdWNlcnM7XG5cbnZhciBfY3JlYXRlU3RvcmUgPSBy
ZXF1aXJlKCcuL2NyZWF0ZVN0b3JlJyk7XG5cbnZhciBfaXNQbGFpbk9iamVjdCA9IHJlcXVpcmUo
J2xvZGFzaC9pc1BsYWluT2JqZWN0Jyk7XG5cbnZhciBfaXNQbGFpbk9iamVjdDIgPSBfaW50ZXJv
cFJlcXVpcmVEZWZhdWx0KF9pc1BsYWluT2JqZWN0KTtcblxudmFyIF93YXJuaW5nID0gcmVxdWly
ZSgnLi91dGlscy93YXJuaW5nJyk7XG5cbnZhciBfd2FybmluZzIgPSBfaW50ZXJvcFJlcXVpcmVE
ZWZhdWx0KF93YXJuaW5nKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmop
IHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgJ2RlZmF1bHQnOiBvYmog
fTsgfVxuXG5mdW5jdGlvbiBnZXRVbmRlZmluZWRTdGF0ZUVycm9yTWVzc2FnZShrZXksIGFjdGlv
bikge1xuICB2YXIgYWN0aW9uVHlwZSA9IGFjdGlvbiAmJiBhY3Rpb24udHlwZTtcbiAgdmFyIGFj
dGlvbk5hbWUgPSBhY3Rpb25UeXBlICYmICdcIicgKyBhY3Rpb25UeXBlLnRvU3RyaW5nKCkgKyAn
XCInIHx8ICdhbiBhY3Rpb24nO1xuXG4gIHJldHVybiAnR2l2ZW4gYWN0aW9uICcgKyBhY3Rpb25O
YW1lICsgJywgcmVkdWNlciBcIicgKyBrZXkgKyAnXCIgcmV0dXJuZWQgdW5kZWZpbmVkLiAnICsg
J1RvIGlnbm9yZSBhbiBhY3Rpb24sIHlvdSBtdXN0IGV4cGxpY2l0bHkgcmV0dXJuIHRoZSBwcmV2
aW91cyBzdGF0ZS4gJyArICdJZiB5b3Ugd2FudCB0aGlzIHJlZHVjZXIgdG8gaG9sZCBubyB2YWx1
ZSwgeW91IGNhbiByZXR1cm4gbnVsbCBpbnN0ZWFkIG9mIHVuZGVmaW5lZC4nO1xufVxuXG5mdW5j
dGlvbiBnZXRVbmV4cGVjdGVkU3RhdGVTaGFwZVdhcm5pbmdNZXNzYWdlKGlucHV0U3RhdGUsIHJl
ZHVjZXJzLCBhY3Rpb24sIHVuZXhwZWN0ZWRLZXlDYWNoZSkge1xuICB2YXIgcmVkdWNlcktleXMg
PSBPYmplY3Qua2V5cyhyZWR1Y2Vycyk7XG4gIHZhciBhcmd1bWVudE5hbWUgPSBhY3Rpb24gJiYg
YWN0aW9uLnR5cGUgPT09IF9jcmVhdGVTdG9yZS5BY3Rpb25UeXBlcy5JTklUID8gJ3ByZWxvYWRl
ZFN0YXRlIGFyZ3VtZW50IHBhc3NlZCB0byBjcmVhdGVTdG9yZScgOiAncHJldmlvdXMgc3RhdGUg
cmVjZWl2ZWQgYnkgdGhlIHJlZHVjZXInO1xuXG4gIGlmIChyZWR1Y2VyS2V5cy5sZW5ndGggPT09
IDApIHtcbiAgICByZXR1cm4gJ1N0b3JlIGRvZXMgbm90IGhhdmUgYSB2YWxpZCByZWR1Y2VyLiBN
YWtlIHN1cmUgdGhlIGFyZ3VtZW50IHBhc3NlZCAnICsgJ3RvIGNvbWJpbmVSZWR1Y2VycyBpcyBh
biBvYmplY3Qgd2hvc2UgdmFsdWVzIGFyZSByZWR1Y2Vycy4nO1xuICB9XG5cbiAgaWYgKCEoMCwg
X2lzUGxhaW5PYmplY3QyWydkZWZhdWx0J10pKGlucHV0U3RhdGUpKSB7XG4gICAgcmV0dXJuICdU
aGUgJyArIGFyZ3VtZW50TmFtZSArICcgaGFzIHVuZXhwZWN0ZWQgdHlwZSBvZiBcIicgKyB7fS50
b1N0cmluZy5jYWxsKGlucHV0U3RhdGUpLm1hdGNoKC9cXHMoW2EtenxBLVpdKykvKVsxXSArICdc
Ii4gRXhwZWN0ZWQgYXJndW1lbnQgdG8gYmUgYW4gb2JqZWN0IHdpdGggdGhlIGZvbGxvd2luZyAn
ICsgKCdrZXlzOiBcIicgKyByZWR1Y2VyS2V5cy5qb2luKCdcIiwgXCInKSArICdcIicpO1xuICB9
XG5cbiAgdmFyIHVuZXhwZWN0ZWRLZXlzID0gT2JqZWN0LmtleXMoaW5wdXRTdGF0ZSkuZmlsdGVy
KGZ1bmN0aW9uIChrZXkpIHtcbiAgICByZXR1cm4gIXJlZHVjZXJzLmhhc093blByb3BlcnR5KGtl
eSkgJiYgIXVuZXhwZWN0ZWRLZXlDYWNoZVtrZXldO1xuICB9KTtcblxuICB1bmV4cGVjdGVkS2V5
cy5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICB1bmV4cGVjdGVkS2V5Q2FjaGVba2V5XSA9
IHRydWU7XG4gIH0pO1xuXG4gIGlmICh1bmV4cGVjdGVkS2V5cy5sZW5ndGggPiAwKSB7XG4gICAg
cmV0dXJuICdVbmV4cGVjdGVkICcgKyAodW5leHBlY3RlZEtleXMubGVuZ3RoID4gMSA/ICdrZXlz
JyA6ICdrZXknKSArICcgJyArICgnXCInICsgdW5leHBlY3RlZEtleXMuam9pbignXCIsIFwiJykg
KyAnXCIgZm91bmQgaW4gJyArIGFyZ3VtZW50TmFtZSArICcuICcpICsgJ0V4cGVjdGVkIHRvIGZp
bmQgb25lIG9mIHRoZSBrbm93biByZWR1Y2VyIGtleXMgaW5zdGVhZDogJyArICgnXCInICsgcmVk
dWNlcktleXMuam9pbignXCIsIFwiJykgKyAnXCIuIFVuZXhwZWN0ZWQga2V5cyB3aWxsIGJlIGln
bm9yZWQuJyk7XG4gIH1cbn1cblxuZnVuY3Rpb24gYXNzZXJ0UmVkdWNlclNoYXBlKHJlZHVjZXJz
KSB7XG4gIE9iamVjdC5rZXlzKHJlZHVjZXJzKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAg
ICB2YXIgcmVkdWNlciA9IHJlZHVjZXJzW2tleV07XG4gICAgdmFyIGluaXRpYWxTdGF0ZSA9IHJl
ZHVjZXIodW5kZWZpbmVkLCB7IHR5cGU6IF9jcmVhdGVTdG9yZS5BY3Rpb25UeXBlcy5JTklUIH0p
O1xuXG4gICAgaWYgKHR5cGVvZiBpbml0aWFsU3RhdGUgPT09ICd1bmRlZmluZWQnKSB7XG4gICAg
ICB0aHJvdyBuZXcgRXJyb3IoJ1JlZHVjZXIgXCInICsga2V5ICsgJ1wiIHJldHVybmVkIHVuZGVm
aW5lZCBkdXJpbmcgaW5pdGlhbGl6YXRpb24uICcgKyAnSWYgdGhlIHN0YXRlIHBhc3NlZCB0byB0
aGUgcmVkdWNlciBpcyB1bmRlZmluZWQsIHlvdSBtdXN0ICcgKyAnZXhwbGljaXRseSByZXR1cm4g
dGhlIGluaXRpYWwgc3RhdGUuIFRoZSBpbml0aWFsIHN0YXRlIG1heSAnICsgJ25vdCBiZSB1bmRl
ZmluZWQuIElmIHlvdSBkb25cXCd0IHdhbnQgdG8gc2V0IGEgdmFsdWUgZm9yIHRoaXMgcmVkdWNl
ciwgJyArICd5b3UgY2FuIHVzZSBudWxsIGluc3RlYWQgb2YgdW5kZWZpbmVkLicpO1xuICAgIH1c
blxuICAgIHZhciB0eXBlID0gJ0BAcmVkdXgvUFJPQkVfVU5LTk9XTl9BQ1RJT05fJyArIE1hdGgu
cmFuZG9tKCkudG9TdHJpbmcoMzYpLnN1YnN0cmluZyg3KS5zcGxpdCgnJykuam9pbignLicpO1xu
ICAgIGlmICh0eXBlb2YgcmVkdWNlcih1bmRlZmluZWQsIHsgdHlwZTogdHlwZSB9KSA9PT0gJ3Vu
ZGVmaW5lZCcpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignUmVkdWNlciBcIicgKyBrZXkgKyAn
XCIgcmV0dXJuZWQgdW5kZWZpbmVkIHdoZW4gcHJvYmVkIHdpdGggYSByYW5kb20gdHlwZS4gJyAr
ICgnRG9uXFwndCB0cnkgdG8gaGFuZGxlICcgKyBfY3JlYXRlU3RvcmUuQWN0aW9uVHlwZXMuSU5J
VCArICcgb3Igb3RoZXIgYWN0aW9ucyBpbiBcInJlZHV4LypcIiAnKSArICduYW1lc3BhY2UuIFRo
ZXkgYXJlIGNvbnNpZGVyZWQgcHJpdmF0ZS4gSW5zdGVhZCwgeW91IG11c3QgcmV0dXJuIHRoZSAn
ICsgJ2N1cnJlbnQgc3RhdGUgZm9yIGFueSB1bmtub3duIGFjdGlvbnMsIHVubGVzcyBpdCBpcyB1
bmRlZmluZWQsICcgKyAnaW4gd2hpY2ggY2FzZSB5b3UgbXVzdCByZXR1cm4gdGhlIGluaXRpYWwg
c3RhdGUsIHJlZ2FyZGxlc3Mgb2YgdGhlICcgKyAnYWN0aW9uIHR5cGUuIFRoZSBpbml0aWFsIHN0
YXRlIG1heSBub3QgYmUgdW5kZWZpbmVkLCBidXQgY2FuIGJlIG51bGwuJyk7XG4gICAgfVxuICB9
KTtcbn1cblxuLyoqXG4gKiBUdXJucyBhbiBvYmplY3Qgd2hvc2UgdmFsdWVzIGFyZSBkaWZmZXJl
bnQgcmVkdWNlciBmdW5jdGlvbnMsIGludG8gYSBzaW5nbGVcbiAqIHJlZHVjZXIgZnVuY3Rpb24u
IEl0IHdpbGwgY2FsbCBldmVyeSBjaGlsZCByZWR1Y2VyLCBhbmQgZ2F0aGVyIHRoZWlyIHJlc3Vs
dHNcbiAqIGludG8gYSBzaW5nbGUgc3RhdGUgb2JqZWN0LCB3aG9zZSBrZXlzIGNvcnJlc3BvbmQg
dG8gdGhlIGtleXMgb2YgdGhlIHBhc3NlZFxuICogcmVkdWNlciBmdW5jdGlvbnMuXG4gKlxuICog
QHBhcmFtIHtPYmplY3R9IHJlZHVjZXJzIEFuIG9iamVjdCB3aG9zZSB2YWx1ZXMgY29ycmVzcG9u
ZCB0byBkaWZmZXJlbnRcbiAqIHJlZHVjZXIgZnVuY3Rpb25zIHRoYXQgbmVlZCB0byBiZSBjb21i
aW5lZCBpbnRvIG9uZS4gT25lIGhhbmR5IHdheSB0byBvYnRhaW5cbiAqIGl0IGlzIHRvIHVzZSBF
UzYgYGltcG9ydCAqIGFzIHJlZHVjZXJzYCBzeW50YXguIFRoZSByZWR1Y2VycyBtYXkgbmV2ZXIg
cmV0dXJuXG4gKiB1bmRlZmluZWQgZm9yIGFueSBhY3Rpb24uIEluc3RlYWQsIHRoZXkgc2hvdWxk
IHJldHVybiB0aGVpciBpbml0aWFsIHN0YXRlXG4gKiBpZiB0aGUgc3RhdGUgcGFzc2VkIHRvIHRo
ZW0gd2FzIHVuZGVmaW5lZCwgYW5kIHRoZSBjdXJyZW50IHN0YXRlIGZvciBhbnlcbiAqIHVucmVj
b2duaXplZCBhY3Rpb24uXG4gKlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBBIHJlZHVjZXIgZnVu
Y3Rpb24gdGhhdCBpbnZva2VzIGV2ZXJ5IHJlZHVjZXIgaW5zaWRlIHRoZVxuICogcGFzc2VkIG9i
amVjdCwgYW5kIGJ1aWxkcyBhIHN0YXRlIG9iamVjdCB3aXRoIHRoZSBzYW1lIHNoYXBlLlxuICov
XG5mdW5jdGlvbiBjb21iaW5lUmVkdWNlcnMocmVkdWNlcnMpIHtcbiAgdmFyIHJlZHVjZXJLZXlz
ID0gT2JqZWN0LmtleXMocmVkdWNlcnMpO1xuICB2YXIgZmluYWxSZWR1Y2VycyA9IHt9O1xuICBm
b3IgKHZhciBpID0gMDsgaSA8IHJlZHVjZXJLZXlzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGtl
eSA9IHJlZHVjZXJLZXlzW2ldO1xuXG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAn
cHJvZHVjdGlvbicpIHtcbiAgICAgIGlmICh0eXBlb2YgcmVkdWNlcnNba2V5XSA9PT0gJ3VuZGVm
aW5lZCcpIHtcbiAgICAgICAgKDAsIF93YXJuaW5nMlsnZGVmYXVsdCddKSgnTm8gcmVkdWNlciBw
cm92aWRlZCBmb3Iga2V5IFwiJyArIGtleSArICdcIicpO1xuICAgICAgfVxuICAgIH1cblxuICAg
IGlmICh0eXBlb2YgcmVkdWNlcnNba2V5XSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgZmluYWxS
ZWR1Y2Vyc1trZXldID0gcmVkdWNlcnNba2V5XTtcbiAgICB9XG4gIH1cbiAgdmFyIGZpbmFsUmVk
dWNlcktleXMgPSBPYmplY3Qua2V5cyhmaW5hbFJlZHVjZXJzKTtcblxuICB2YXIgdW5leHBlY3Rl
ZEtleUNhY2hlID0gdm9pZCAwO1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9k
dWN0aW9uJykge1xuICAgIHVuZXhwZWN0ZWRLZXlDYWNoZSA9IHt9O1xuICB9XG5cbiAgdmFyIHNo
YXBlQXNzZXJ0aW9uRXJyb3IgPSB2b2lkIDA7XG4gIHRyeSB7XG4gICAgYXNzZXJ0UmVkdWNlclNo
YXBlKGZpbmFsUmVkdWNlcnMpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgc2hhcGVBc3NlcnRpb25F
cnJvciA9IGU7XG4gIH1cblxuICByZXR1cm4gZnVuY3Rpb24gY29tYmluYXRpb24oKSB7XG4gICAg
dmFyIHN0YXRlID0gYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgYXJndW1lbnRzWzBdICE9PSB1bmRl
ZmluZWQgPyBhcmd1bWVudHNbMF0gOiB7fTtcbiAgICB2YXIgYWN0aW9uID0gYXJndW1lbnRzWzFd
O1xuXG4gICAgaWYgKHNoYXBlQXNzZXJ0aW9uRXJyb3IpIHtcbiAgICAgIHRocm93IHNoYXBlQXNz
ZXJ0aW9uRXJyb3I7XG4gICAgfVxuXG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAn
cHJvZHVjdGlvbicpIHtcbiAgICAgIHZhciB3YXJuaW5nTWVzc2FnZSA9IGdldFVuZXhwZWN0ZWRT
dGF0ZVNoYXBlV2FybmluZ01lc3NhZ2Uoc3RhdGUsIGZpbmFsUmVkdWNlcnMsIGFjdGlvbiwgdW5l
eHBlY3RlZEtleUNhY2hlKTtcbiAgICAgIGlmICh3YXJuaW5nTWVzc2FnZSkge1xuICAgICAgICAo
MCwgX3dhcm5pbmcyWydkZWZhdWx0J10pKHdhcm5pbmdNZXNzYWdlKTtcbiAgICAgIH1cbiAgICB9
XG5cbiAgICB2YXIgaGFzQ2hhbmdlZCA9IGZhbHNlO1xuICAgIHZhciBuZXh0U3RhdGUgPSB7fTtc
biAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgZmluYWxSZWR1Y2VyS2V5cy5sZW5ndGg7IF9pKysp
IHtcbiAgICAgIHZhciBfa2V5ID0gZmluYWxSZWR1Y2VyS2V5c1tfaV07XG4gICAgICB2YXIgcmVk
dWNlciA9IGZpbmFsUmVkdWNlcnNbX2tleV07XG4gICAgICB2YXIgcHJldmlvdXNTdGF0ZUZvcktl
eSA9IHN0YXRlW19rZXldO1xuICAgICAgdmFyIG5leHRTdGF0ZUZvcktleSA9IHJlZHVjZXIocHJl
dmlvdXNTdGF0ZUZvcktleSwgYWN0aW9uKTtcbiAgICAgIGlmICh0eXBlb2YgbmV4dFN0YXRlRm9y
S2V5ID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICB2YXIgZXJyb3JNZXNzYWdlID0gZ2V0VW5k
ZWZpbmVkU3RhdGVFcnJvck1lc3NhZ2UoX2tleSwgYWN0aW9uKTtcbiAgICAgICAgdGhyb3cgbmV3
IEVycm9yKGVycm9yTWVzc2FnZSk7XG4gICAgICB9XG4gICAgICBuZXh0U3RhdGVbX2tleV0gPSBu
ZXh0U3RhdGVGb3JLZXk7XG4gICAgICBoYXNDaGFuZ2VkID0gaGFzQ2hhbmdlZCB8fCBuZXh0U3Rh
dGVGb3JLZXkgIT09IHByZXZpb3VzU3RhdGVGb3JLZXk7XG4gICAgfVxuICAgIHJldHVybiBoYXND
aGFuZ2VkID8gbmV4dFN0YXRlIDogc3RhdGU7XG4gIH07XG59XG5cblxuLyoqKioqKioqKioqKioq
KioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVkdXgvbGliL2NvbWJpbmVSZWR1Y2Vy
cy5qc1xuICoqIG1vZHVsZSBpZCA9IDIyN1xuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwi
bW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2xpYi9pbmRleCcpO1xuXG5cblxuLyoqKioqKioq
KioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vc3ltYm9sLW9ic2VydmFibGUv
aW5kZXguanNcbiAqKiBtb2R1bGUgaWQgPSAyMjhcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoq
LyIsIid1c2Ugc3RyaWN0JztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19l
c01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcblxudmFyIF9wb255ZmlsbCA9IHJlcXVp
cmUoJy4vcG9ueWZpbGwnKTtcblxudmFyIF9wb255ZmlsbDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZh
dWx0KF9wb255ZmlsbCk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7
IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7ICdkZWZhdWx0Jzogb2JqIH07
IH1cblxudmFyIHJvb3Q7IC8qIGdsb2JhbCB3aW5kb3cgKi9cblxuXG5pZiAodHlwZW9mIHNlbGYg
IT09ICd1bmRlZmluZWQnKSB7XG4gIHJvb3QgPSBzZWxmO1xufSBlbHNlIGlmICh0eXBlb2Ygd2lu
ZG93ICE9PSAndW5kZWZpbmVkJykge1xuICByb290ID0gd2luZG93O1xufSBlbHNlIGlmICh0eXBl
b2YgZ2xvYmFsICE9PSAndW5kZWZpbmVkJykge1xuICByb290ID0gZ2xvYmFsO1xufSBlbHNlIGlm
ICh0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJykge1xuICByb290ID0gbW9kdWxlO1xufSBl
bHNlIHtcbiAgcm9vdCA9IEZ1bmN0aW9uKCdyZXR1cm4gdGhpcycpKCk7XG59XG5cbnZhciByZXN1
bHQgPSAoMCwgX3BvbnlmaWxsMlsnZGVmYXVsdCddKShyb290KTtcbmV4cG9ydHNbJ2RlZmF1bHQn
XSA9IHJlc3VsdDtcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxu
ICoqIC4vfi9zeW1ib2wtb2JzZXJ2YWJsZS9saWIvaW5kZXguanNcbiAqKiBtb2R1bGUgaWQgPSAy
MjlcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIid1c2Ugc3RyaWN0JztcblxuT2JqZWN0
LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG5cdHZhbHVlOiB0cnVl
XG59KTtcbmV4cG9ydHNbJ2RlZmF1bHQnXSA9IHN5bWJvbE9ic2VydmFibGVQb255ZmlsbDtcbmZ1
bmN0aW9uIHN5bWJvbE9ic2VydmFibGVQb255ZmlsbChyb290KSB7XG5cdHZhciByZXN1bHQ7XG5c
dHZhciBfU3ltYm9sID0gcm9vdC5TeW1ib2w7XG5cblx0aWYgKHR5cGVvZiBfU3ltYm9sID09PSAn
ZnVuY3Rpb24nKSB7XG5cdFx0aWYgKF9TeW1ib2wub2JzZXJ2YWJsZSkge1xuXHRcdFx0cmVzdWx0
ID0gX1N5bWJvbC5vYnNlcnZhYmxlO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRyZXN1bHQgPSBfU3lt
Ym9sKCdvYnNlcnZhYmxlJyk7XG5cdFx0XHRfU3ltYm9sLm9ic2VydmFibGUgPSByZXN1bHQ7XG5c
dFx0fVxuXHR9IGVsc2Uge1xuXHRcdHJlc3VsdCA9ICdAQG9ic2VydmFibGUnO1xuXHR9XG5cblx0
cmV0dXJuIHJlc3VsdDtcbn07XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBG
T09URVJcbiAqKiAuL34vc3ltYm9sLW9ic2VydmFibGUvbGliL3BvbnlmaWxsLmpzXG4gKiogbW9k
dWxlIGlkID0gMjMwXG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENvcHly
aWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVk
LlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHls
ZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVj
dG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRl
bnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRp
cmVjdG9yeS5cbiAqXG4gKiBcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBfcHJvZEludmFy
aWFudCA9IHJlcXVpcmUoJy4vcmVhY3RQcm9kSW52YXJpYW50Jyk7XG5cbnZhciBpbnZhcmlhbnQg
PSByZXF1aXJlKCdmYmpzL2xpYi9pbnZhcmlhbnQnKTtcblxuLyoqXG4gKiBTdGF0aWMgcG9vbGVy
cy4gU2V2ZXJhbCBjdXN0b20gdmVyc2lvbnMgZm9yIGVhY2ggcG90ZW50aWFsIG51bWJlciBvZlxu
ICogYXJndW1lbnRzLiBBIGNvbXBsZXRlbHkgZ2VuZXJpYyBwb29sZXIgaXMgZWFzeSB0byBpbXBs
ZW1lbnQsIGJ1dCB3b3VsZFxuICogcmVxdWlyZSBhY2Nlc3NpbmcgdGhlIGBhcmd1bWVudHNgIG9i
amVjdC4gSW4gZWFjaCBvZiB0aGVzZSwgYHRoaXNgIHJlZmVycyB0b1xuICogdGhlIENsYXNzIGl0
c2VsZiwgbm90IGFuIGluc3RhbmNlLiBJZiBhbnkgb3RoZXJzIGFyZSBuZWVkZWQsIHNpbXBseSBh
ZGQgdGhlbVxuICogaGVyZSwgb3IgaW4gdGhlaXIgb3duIGZpbGVzLlxuICovXG52YXIgb25lQXJn
dW1lbnRQb29sZXIgPSBmdW5jdGlvbiAoY29weUZpZWxkc0Zyb20pIHtcbiAgdmFyIEtsYXNzID0g
dGhpcztcbiAgaWYgKEtsYXNzLmluc3RhbmNlUG9vbC5sZW5ndGgpIHtcbiAgICB2YXIgaW5zdGFu
Y2UgPSBLbGFzcy5pbnN0YW5jZVBvb2wucG9wKCk7XG4gICAgS2xhc3MuY2FsbChpbnN0YW5jZSwg
Y29weUZpZWxkc0Zyb20pO1xuICAgIHJldHVybiBpbnN0YW5jZTtcbiAgfSBlbHNlIHtcbiAgICBy
ZXR1cm4gbmV3IEtsYXNzKGNvcHlGaWVsZHNGcm9tKTtcbiAgfVxufTtcblxudmFyIHR3b0FyZ3Vt
ZW50UG9vbGVyID0gZnVuY3Rpb24gKGExLCBhMikge1xuICB2YXIgS2xhc3MgPSB0aGlzO1xuICBp
ZiAoS2xhc3MuaW5zdGFuY2VQb29sLmxlbmd0aCkge1xuICAgIHZhciBpbnN0YW5jZSA9IEtsYXNz
Lmluc3RhbmNlUG9vbC5wb3AoKTtcbiAgICBLbGFzcy5jYWxsKGluc3RhbmNlLCBhMSwgYTIpO1xu
ICAgIHJldHVybiBpbnN0YW5jZTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gbmV3IEtsYXNzKGEx
LCBhMik7XG4gIH1cbn07XG5cbnZhciB0aHJlZUFyZ3VtZW50UG9vbGVyID0gZnVuY3Rpb24gKGEx
LCBhMiwgYTMpIHtcbiAgdmFyIEtsYXNzID0gdGhpcztcbiAgaWYgKEtsYXNzLmluc3RhbmNlUG9v
bC5sZW5ndGgpIHtcbiAgICB2YXIgaW5zdGFuY2UgPSBLbGFzcy5pbnN0YW5jZVBvb2wucG9wKCk7
XG4gICAgS2xhc3MuY2FsbChpbnN0YW5jZSwgYTEsIGEyLCBhMyk7XG4gICAgcmV0dXJuIGluc3Rh
bmNlO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBuZXcgS2xhc3MoYTEsIGEyLCBhMyk7XG4gIH1c
bn07XG5cbnZhciBmb3VyQXJndW1lbnRQb29sZXIgPSBmdW5jdGlvbiAoYTEsIGEyLCBhMywgYTQp
IHtcbiAgdmFyIEtsYXNzID0gdGhpcztcbiAgaWYgKEtsYXNzLmluc3RhbmNlUG9vbC5sZW5ndGgp
IHtcbiAgICB2YXIgaW5zdGFuY2UgPSBLbGFzcy5pbnN0YW5jZVBvb2wucG9wKCk7XG4gICAgS2xh
c3MuY2FsbChpbnN0YW5jZSwgYTEsIGEyLCBhMywgYTQpO1xuICAgIHJldHVybiBpbnN0YW5jZTtc
biAgfSBlbHNlIHtcbiAgICByZXR1cm4gbmV3IEtsYXNzKGExLCBhMiwgYTMsIGE0KTtcbiAgfVxu
fTtcblxudmFyIHN0YW5kYXJkUmVsZWFzZXIgPSBmdW5jdGlvbiAoaW5zdGFuY2UpIHtcbiAgdmFy
IEtsYXNzID0gdGhpcztcbiAgIShpbnN0YW5jZSBpbnN0YW5jZW9mIEtsYXNzKSA/IHByb2Nlc3Mu
ZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdUcnlpbmcg
dG8gcmVsZWFzZSBhbiBpbnN0YW5jZSBpbnRvIGEgcG9vbCBvZiBhIGRpZmZlcmVudCB0eXBlLicp
IDogX3Byb2RJbnZhcmlhbnQoJzI1JykgOiB2b2lkIDA7XG4gIGluc3RhbmNlLmRlc3RydWN0b3Io
KTtcbiAgaWYgKEtsYXNzLmluc3RhbmNlUG9vbC5sZW5ndGggPCBLbGFzcy5wb29sU2l6ZSkge1xu
ICAgIEtsYXNzLmluc3RhbmNlUG9vbC5wdXNoKGluc3RhbmNlKTtcbiAgfVxufTtcblxudmFyIERF
RkFVTFRfUE9PTF9TSVpFID0gMTA7XG52YXIgREVGQVVMVF9QT09MRVIgPSBvbmVBcmd1bWVudFBv
b2xlcjtcblxuLyoqXG4gKiBBdWdtZW50cyBgQ29weUNvbnN0cnVjdG9yYCB0byBiZSBhIHBvb2xh
YmxlIGNsYXNzLCBhdWdtZW50aW5nIG9ubHkgdGhlIGNsYXNzXG4gKiBpdHNlbGYgKHN0YXRpY2Fs
bHkpIG5vdCBhZGRpbmcgYW55IHByb3RvdHlwaWNhbCBmaWVsZHMuIEFueSBDb3B5Q29uc3RydWN0
b3JcbiAqIHlvdSBnaXZlIHRoaXMgbWF5IGhhdmUgYSBgcG9vbFNpemVgIHByb3BlcnR5LCBhbmQg
d2lsbCBsb29rIGZvciBhXG4gKiBwcm90b3R5cGljYWwgYGRlc3RydWN0b3JgIG9uIGluc3RhbmNl
cy5cbiAqXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBDb3B5Q29uc3RydWN0b3IgQ29uc3RydWN0b3Ig
dGhhdCBjYW4gYmUgdXNlZCB0byByZXNldC5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IHBvb2xlciBD
dXN0b21pemFibGUgcG9vbGVyLlxuICovXG52YXIgYWRkUG9vbGluZ1RvID0gZnVuY3Rpb24gKENv
cHlDb25zdHJ1Y3RvciwgcG9vbGVyKSB7XG4gIC8vIENhc3RpbmcgYXMgYW55IHNvIHRoYXQgZmxv
dyBpZ25vcmVzIHRoZSBhY3R1YWwgaW1wbGVtZW50YXRpb24gYW5kIHRydXN0c1xuICAvLyBpdCB0
byBtYXRjaCB0aGUgdHlwZSB3ZSBkZWNsYXJlZFxuICB2YXIgTmV3S2xhc3MgPSBDb3B5Q29uc3Ry
dWN0b3I7XG4gIE5ld0tsYXNzLmluc3RhbmNlUG9vbCA9IFtdO1xuICBOZXdLbGFzcy5nZXRQb29s
ZWQgPSBwb29sZXIgfHwgREVGQVVMVF9QT09MRVI7XG4gIGlmICghTmV3S2xhc3MucG9vbFNpemUp
IHtcbiAgICBOZXdLbGFzcy5wb29sU2l6ZSA9IERFRkFVTFRfUE9PTF9TSVpFO1xuICB9XG4gIE5l
d0tsYXNzLnJlbGVhc2UgPSBzdGFuZGFyZFJlbGVhc2VyO1xuICByZXR1cm4gTmV3S2xhc3M7XG59
O1xuXG52YXIgUG9vbGVkQ2xhc3MgPSB7XG4gIGFkZFBvb2xpbmdUbzogYWRkUG9vbGluZ1RvLFxu
ICBvbmVBcmd1bWVudFBvb2xlcjogb25lQXJndW1lbnRQb29sZXIsXG4gIHR3b0FyZ3VtZW50UG9v
bGVyOiB0d29Bcmd1bWVudFBvb2xlcixcbiAgdGhyZWVBcmd1bWVudFBvb2xlcjogdGhyZWVBcmd1
bWVudFBvb2xlcixcbiAgZm91ckFyZ3VtZW50UG9vbGVyOiBmb3VyQXJndW1lbnRQb29sZXJcbn07
XG5cbm1vZHVsZS5leHBvcnRzID0gUG9vbGVkQ2xhc3M7XG5cblxuLyoqKioqKioqKioqKioqKioq
XG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3QvbGliL1Bvb2xlZENsYXNzLmpzXG4g
KiogbW9kdWxlIGlkID0gMjE0XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iXSwic291cmNl
Um9vdCI6IiJ9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogUGVyZm9ybWFuY2VU
ZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMv
cmVhY3QtcmVkdXgvZGlzdC9zdGF0aWMvanMvbWFpbi42OWNkOTY1NS5qcwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBQZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVj
dHVyZS1leGFtcGxlcy9yZWFjdC1yZWR1eC9kaXN0L3N0YXRpYy9qcy9tYWluLjY5Y2Q5NjU1Lmpz
CShub25leGlzdGVudCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2Vz
L3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0LXJlZHV4L2Rpc3Qvc3RhdGljL2pz
L21haW4uNjljZDk2NTUuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw4IEBACishZnVuY3Rp
b24oZSl7ZnVuY3Rpb24gdChyKXtpZihuW3JdKXJldHVybiBuW3JdLmV4cG9ydHM7dmFyIG89blty
XT17ZXhwb3J0czp7fSxpZDpyLGxvYWRlZDohMX07cmV0dXJuIGVbcl0uY2FsbChvLmV4cG9ydHMs
byxvLmV4cG9ydHMsdCksby5sb2FkZWQ9ITAsby5leHBvcnRzfXZhciBuPXt9O3JldHVybiB0Lm09
ZSx0LmM9bix0LnA9Ii4vIix0KDApfShmdW5jdGlvbihlKXtmb3IodmFyIHQgaW4gZSlpZihPYmpl
Y3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSx0KSlzd2l0Y2godHlwZW9mIGVbdF0p
e2Nhc2UiZnVuY3Rpb24iOmJyZWFrO2Nhc2Uib2JqZWN0IjplW3RdPWZ1bmN0aW9uKHQpe3ZhciBu
PXQuc2xpY2UoMSkscj1lW3RbMF1dO3JldHVybiBmdW5jdGlvbihlLHQsbyl7ci5hcHBseSh0aGlz
LFtlLHQsb10uY29uY2F0KG4pKX19KGVbdF0pO2JyZWFrO2RlZmF1bHQ6ZVt0XT1lW2VbdF1dfXJl
dHVybiBlfShbZnVuY3Rpb24oZSx0LG4pe24oMTk2KSxlLmV4cG9ydHM9bigyMDQpfSxmdW5jdGlv
bihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0LG4scixpLGEsdSxzKXtpZihvKHQp
LCFlKXt2YXIgYztpZih2b2lkIDA9PT10KWM9bmV3IEVycm9yKCJNaW5pZmllZCBleGNlcHRpb24g
b2NjdXJyZWQ7IHVzZSB0aGUgbm9uLW1pbmlmaWVkIGRldiBlbnZpcm9ubWVudCBmb3IgdGhlIGZ1
bGwgZXJyb3IgbWVzc2FnZSBhbmQgYWRkaXRpb25hbCBoZWxwZnVsIHdhcm5pbmdzLiIpO2Vsc2V7
dmFyIGw9W24scixpLGEsdSxzXSxwPTA7Yz1uZXcgRXJyb3IodC5yZXBsYWNlKC8lcy9nLGZ1bmN0
aW9uKCl7cmV0dXJuIGxbcCsrXX0pKSxjLm5hbWU9IkludmFyaWFudCBWaW9sYXRpb24ifXRocm93
IGMuZnJhbWVzVG9Qb3A9MSxjfX12YXIgbz1mdW5jdGlvbihlKXt9O2UuZXhwb3J0cz1yfSxmdW5j
dGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oNyksbz1yO2UuZXhwb3J0cz1vfSxmdW5j
dGlvbihlLHQpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKGUpe2Zvcih2YXIgdD1hcmd1bWVudHMu
bGVuZ3RoLTEsbj0iTWluaWZpZWQgUmVhY3QgZXJyb3IgIyIrZSsiOyB2aXNpdCBodHRwOi8vZmFj
ZWJvb2suZ2l0aHViLmlvL3JlYWN0L2RvY3MvZXJyb3ItZGVjb2Rlci5odG1sP2ludmFyaWFudD0i
K2Uscj0wO3I8dDtyKyspbis9IiZhcmdzW109IitlbmNvZGVVUklDb21wb25lbnQoYXJndW1lbnRz
W3IrMV0pO24rPSIgZm9yIHRoZSBmdWxsIG1lc3NhZ2Ugb3IgdXNlIHRoZSBub24tbWluaWZpZWQg
ZGV2IGVudmlyb25tZW50IGZvciBmdWxsIGVycm9ycyBhbmQgYWRkaXRpb25hbCBoZWxwZnVsIHdh
cm5pbmdzLiI7dmFyIG89bmV3IEVycm9yKG4pO3Rocm93IG8ubmFtZT0iSW52YXJpYW50IFZpb2xh
dGlvbiIsby5mcmFtZXNUb1BvcD0xLG99ZS5leHBvcnRzPW59LGZ1bmN0aW9uKGUsdCl7InVzZSBz
dHJpY3QiO2Z1bmN0aW9uIG4oZSl7aWYobnVsbD09PWV8fHZvaWQgMD09PWUpdGhyb3cgbmV3IFR5
cGVFcnJvcigiT2JqZWN0LmFzc2lnbiBjYW5ub3QgYmUgY2FsbGVkIHdpdGggbnVsbCBvciB1bmRl
ZmluZWQiKTtyZXR1cm4gT2JqZWN0KGUpfWZ1bmN0aW9uIHIoKXt0cnl7aWYoIU9iamVjdC5hc3Np
Z24pcmV0dXJuITE7dmFyIGU9bmV3IFN0cmluZygiYWJjIik7aWYoZVs1XT0iZGUiLCI1Ij09PU9i
amVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGUpWzBdKXJldHVybiExO2Zvcih2YXIgdD17fSxuPTA7
bjwxMDtuKyspdFsiXyIrU3RyaW5nLmZyb21DaGFyQ29kZShuKV09bjt2YXIgcj1PYmplY3QuZ2V0
T3duUHJvcGVydHlOYW1lcyh0KS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIHRbZV19KTtpZigiMDEy
MzQ1Njc4OSIhPT1yLmpvaW4oIiIpKXJldHVybiExO3ZhciBvPXt9O3JldHVybiJhYmNkZWZnaGlq
a2xtbm9wcXJzdCIuc3BsaXQoIiIpLmZvckVhY2goZnVuY3Rpb24oZSl7b1tlXT1lfSksImFiY2Rl
ZmdoaWprbG1ub3BxcnN0Ij09PU9iamVjdC5rZXlzKE9iamVjdC5hc3NpZ24oe30sbykpLmpvaW4o
IiIpfWNhdGNoKGkpe3JldHVybiExfX12YXIgbz1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xz
LGk9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxhPU9iamVjdC5wcm90b3R5cGUucHJv
cGVydHlJc0VudW1lcmFibGU7ZS5leHBvcnRzPXIoKT9PYmplY3QuYXNzaWduOmZ1bmN0aW9uKGUs
dCl7Zm9yKHZhciByLHUscz1uKGUpLGM9MTtjPGFyZ3VtZW50cy5sZW5ndGg7YysrKXtyPU9iamVj
dChhcmd1bWVudHNbY10pO2Zvcih2YXIgbCBpbiByKWkuY2FsbChyLGwpJiYoc1tsXT1yW2xdKTtp
ZihvKXt1PW8ocik7Zm9yKHZhciBwPTA7cDx1Lmxlbmd0aDtwKyspYS5jYWxsKHIsdVtwXSkmJihz
W3VbcF1dPXJbdVtwXV0pfX1yZXR1cm4gc319LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7
ZnVuY3Rpb24gcihlLHQpe3JldHVybiAxPT09ZS5ub2RlVHlwZSYmZS5nZXRBdHRyaWJ1dGUoaCk9
PT1TdHJpbmcodCl8fDg9PT1lLm5vZGVUeXBlJiZlLm5vZGVWYWx1ZT09PSIgcmVhY3QtdGV4dDog
Iit0KyIgInx8OD09PWUubm9kZVR5cGUmJmUubm9kZVZhbHVlPT09IiByZWFjdC1lbXB0eTogIit0
KyIgIn1mdW5jdGlvbiBvKGUpe2Zvcih2YXIgdDt0PWUuX3JlbmRlcmVkQ29tcG9uZW50OyllPXQ7
cmV0dXJuIGV9ZnVuY3Rpb24gaShlLHQpe3ZhciBuPW8oZSk7bi5faG9zdE5vZGU9dCx0W21dPW59
ZnVuY3Rpb24gYShlKXt2YXIgdD1lLl9ob3N0Tm9kZTt0JiYoZGVsZXRlIHRbbV0sZS5faG9zdE5v
ZGU9bnVsbCl9ZnVuY3Rpb24gdShlLHQpe2lmKCEoZS5fZmxhZ3Mmdi5oYXNDYWNoZWRDaGlsZE5v
ZGVzKSl7dmFyIG49ZS5fcmVuZGVyZWRDaGlsZHJlbixhPXQuZmlyc3RDaGlsZDtlOmZvcih2YXIg
dSBpbiBuKWlmKG4uaGFzT3duUHJvcGVydHkodSkpe3ZhciBzPW5bdV0sYz1vKHMpLl9kb21JRDtp
ZigwIT09Yyl7Zm9yKDtudWxsIT09YTthPWEubmV4dFNpYmxpbmcpaWYocihhLGMpKXtpKHMsYSk7
Y29udGludWUgZX1wKCIzMiIsYyl9fWUuX2ZsYWdzfD12Lmhhc0NhY2hlZENoaWxkTm9kZXN9fWZ1
bmN0aW9uIHMoZSl7aWYoZVttXSlyZXR1cm4gZVttXTtmb3IodmFyIHQ9W107IWVbbV07KXtpZih0
LnB1c2goZSksIWUucGFyZW50Tm9kZSlyZXR1cm4gbnVsbDtlPWUucGFyZW50Tm9kZX1mb3IodmFy
IG4scjtlJiYocj1lW21dKTtlPXQucG9wKCkpbj1yLHQubGVuZ3RoJiZ1KHIsZSk7cmV0dXJuIG59
ZnVuY3Rpb24gYyhlKXt2YXIgdD1zKGUpO3JldHVybiBudWxsIT10JiZ0Ll9ob3N0Tm9kZT09PWU/
dDpudWxsfWZ1bmN0aW9uIGwoZSl7aWYodm9pZCAwPT09ZS5faG9zdE5vZGU/cCgiMzMiKTp2b2lk
IDAsZS5faG9zdE5vZGUpcmV0dXJuIGUuX2hvc3ROb2RlO2Zvcih2YXIgdD1bXTshZS5faG9zdE5v
ZGU7KXQucHVzaChlKSxlLl9ob3N0UGFyZW50P3ZvaWQgMDpwKCIzNCIpLGU9ZS5faG9zdFBhcmVu
dDtmb3IoO3QubGVuZ3RoO2U9dC5wb3AoKSl1KGUsZS5faG9zdE5vZGUpO3JldHVybiBlLl9ob3N0
Tm9kZX12YXIgcD1uKDMpLGQ9bigxNSksZj1uKDYxKSxoPShuKDEpLGQuSURfQVRUUklCVVRFX05B
TUUpLHY9ZixtPSJfX3JlYWN0SW50ZXJuYWxJbnN0YW5jZSQiK01hdGgucmFuZG9tKCkudG9TdHJp
bmcoMzYpLnNsaWNlKDIpLHk9e2dldENsb3Nlc3RJbnN0YW5jZUZyb21Ob2RlOnMsZ2V0SW5zdGFu
Y2VGcm9tTm9kZTpjLGdldE5vZGVGcm9tSW5zdGFuY2U6bCxwcmVjYWNoZUNoaWxkTm9kZXM6dSxw
cmVjYWNoZU5vZGU6aSx1bmNhY2hlTm9kZTphfTtlLmV4cG9ydHM9eX0sZnVuY3Rpb24oZSx0KXsi
dXNlIHN0cmljdCI7dmFyIG49ISgidW5kZWZpbmVkIj09dHlwZW9mIHdpbmRvd3x8IXdpbmRvdy5k
b2N1bWVudHx8IXdpbmRvdy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KSxyPXtjYW5Vc2VET006bixj
YW5Vc2VXb3JrZXJzOiJ1bmRlZmluZWQiIT10eXBlb2YgV29ya2VyLGNhblVzZUV2ZW50TGlzdGVu
ZXJzOm4mJiEoIXdpbmRvdy5hZGRFdmVudExpc3RlbmVyJiYhd2luZG93LmF0dGFjaEV2ZW50KSxj
YW5Vc2VWaWV3cG9ydDpuJiYhIXdpbmRvdy5zY3JlZW4saXNJbldvcmtlcjohbn07ZS5leHBvcnRz
PXJ9LGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4oZSl7cmV0dXJuIGZ1bmN0
aW9uKCl7cmV0dXJuIGV9fXZhciByPWZ1bmN0aW9uKCl7fTtyLnRoYXRSZXR1cm5zPW4sci50aGF0
UmV0dXJuc0ZhbHNlPW4oITEpLHIudGhhdFJldHVybnNUcnVlPW4oITApLHIudGhhdFJldHVybnNO
dWxsPW4obnVsbCksci50aGF0UmV0dXJuc1RoaXM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30sci50
aGF0UmV0dXJuc0FyZ3VtZW50PWZ1bmN0aW9uKGUpe3JldHVybiBlfSxlLmV4cG9ydHM9cn0sZnVu
Y3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1udWxsO2UuZXhwb3J0cz17ZGVidWdUb29s
OnJ9fSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoKXtPLlJlYWN0UmVj
b25jaWxlVHJhbnNhY3Rpb24mJkM/dm9pZCAwOmwoIjEyMyIpfWZ1bmN0aW9uIG8oKXt0aGlzLnJl
aW5pdGlhbGl6ZVRyYW5zYWN0aW9uKCksdGhpcy5kaXJ0eUNvbXBvbmVudHNMZW5ndGg9bnVsbCx0
aGlzLmNhbGxiYWNrUXVldWU9ZC5nZXRQb29sZWQoKSx0aGlzLnJlY29uY2lsZVRyYW5zYWN0aW9u
PU8uUmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbi5nZXRQb29sZWQoITApfWZ1bmN0aW9uIGkoZSx0
LG4sbyxpLGEpe3JldHVybiByKCksQy5iYXRjaGVkVXBkYXRlcyhlLHQsbixvLGksYSl9ZnVuY3Rp
b24gYShlLHQpe3JldHVybiBlLl9tb3VudE9yZGVyLXQuX21vdW50T3JkZXJ9ZnVuY3Rpb24gdShl
KXt2YXIgdD1lLmRpcnR5Q29tcG9uZW50c0xlbmd0aDt0IT09eS5sZW5ndGg/bCgiMTI0Iix0LHku
bGVuZ3RoKTp2b2lkIDAseS5zb3J0KGEpLGcrKztmb3IodmFyIG49MDtuPHQ7bisrKXt2YXIgcj15
W25dLG89ci5fcGVuZGluZ0NhbGxiYWNrcztyLl9wZW5kaW5nQ2FsbGJhY2tzPW51bGw7dmFyIGk7
aWYoaC5sb2dUb3BMZXZlbFJlbmRlcnMpe3ZhciB1PXI7ci5fY3VycmVudEVsZW1lbnQudHlwZS5p
c1JlYWN0VG9wTGV2ZWxXcmFwcGVyJiYodT1yLl9yZW5kZXJlZENvbXBvbmVudCksaT0iUmVhY3Qg
dXBkYXRlOiAiK3UuZ2V0TmFtZSgpLGNvbnNvbGUudGltZShpKX1pZih2LnBlcmZvcm1VcGRhdGVJ
Zk5lY2Vzc2FyeShyLGUucmVjb25jaWxlVHJhbnNhY3Rpb24sZyksaSYmY29uc29sZS50aW1lRW5k
KGkpLG8pZm9yKHZhciBzPTA7czxvLmxlbmd0aDtzKyspZS5jYWxsYmFja1F1ZXVlLmVucXVldWUo
b1tzXSxyLmdldFB1YmxpY0luc3RhbmNlKCkpfX1mdW5jdGlvbiBzKGUpe3JldHVybiByKCksQy5p
c0JhdGNoaW5nVXBkYXRlcz8oeS5wdXNoKGUpLHZvaWQobnVsbD09ZS5fdXBkYXRlQmF0Y2hOdW1i
ZXImJihlLl91cGRhdGVCYXRjaE51bWJlcj1nKzEpKSk6dm9pZCBDLmJhdGNoZWRVcGRhdGVzKHMs
ZSl9ZnVuY3Rpb24gYyhlLHQpe0MuaXNCYXRjaGluZ1VwZGF0ZXM/dm9pZCAwOmwoIjEyNSIpLGIu
ZW5xdWV1ZShlLHQpLF89ITB9dmFyIGw9bigzKSxwPW4oNCksZD1uKDU5KSxmPW4oMTMpLGg9big2
NCksdj1uKDE2KSxtPW4oMjcpLHk9KG4oMSksW10pLGc9MCxiPWQuZ2V0UG9vbGVkKCksXz0hMSxD
PW51bGwsRT17aW5pdGlhbGl6ZTpmdW5jdGlvbigpe3RoaXMuZGlydHlDb21wb25lbnRzTGVuZ3Ro
PXkubGVuZ3RofSxjbG9zZTpmdW5jdGlvbigpe3RoaXMuZGlydHlDb21wb25lbnRzTGVuZ3RoIT09
eS5sZW5ndGg/KHkuc3BsaWNlKDAsdGhpcy5kaXJ0eUNvbXBvbmVudHNMZW5ndGgpLFAoKSk6eS5s
ZW5ndGg9MH19LHc9e2luaXRpYWxpemU6ZnVuY3Rpb24oKXt0aGlzLmNhbGxiYWNrUXVldWUucmVz
ZXQoKX0sY2xvc2U6ZnVuY3Rpb24oKXt0aGlzLmNhbGxiYWNrUXVldWUubm90aWZ5QWxsKCl9fSxU
PVtFLHddO3Aoby5wcm90b3R5cGUsbSx7Z2V0VHJhbnNhY3Rpb25XcmFwcGVyczpmdW5jdGlvbigp
e3JldHVybiBUfSxkZXN0cnVjdG9yOmZ1bmN0aW9uKCl7dGhpcy5kaXJ0eUNvbXBvbmVudHNMZW5n
dGg9bnVsbCxkLnJlbGVhc2UodGhpcy5jYWxsYmFja1F1ZXVlKSx0aGlzLmNhbGxiYWNrUXVldWU9
bnVsbCxPLlJlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb24ucmVsZWFzZSh0aGlzLnJlY29uY2lsZVRy
YW5zYWN0aW9uKSx0aGlzLnJlY29uY2lsZVRyYW5zYWN0aW9uPW51bGx9LHBlcmZvcm06ZnVuY3Rp
b24oZSx0LG4pe3JldHVybiBtLnBlcmZvcm0uY2FsbCh0aGlzLHRoaXMucmVjb25jaWxlVHJhbnNh
Y3Rpb24ucGVyZm9ybSx0aGlzLnJlY29uY2lsZVRyYW5zYWN0aW9uLGUsdCxuKX19KSxmLmFkZFBv
b2xpbmdUbyhvKTt2YXIgUD1mdW5jdGlvbigpe2Zvcig7eS5sZW5ndGh8fF87KXtpZih5Lmxlbmd0
aCl7dmFyIGU9by5nZXRQb29sZWQoKTtlLnBlcmZvcm0odSxudWxsLGUpLG8ucmVsZWFzZShlKX1p
ZihfKXtfPSExO3ZhciB0PWI7Yj1kLmdldFBvb2xlZCgpLHQubm90aWZ5QWxsKCksZC5yZWxlYXNl
KHQpfX19LHg9e2luamVjdFJlY29uY2lsZVRyYW5zYWN0aW9uOmZ1bmN0aW9uKGUpe2U/dm9pZCAw
OmwoIjEyNiIpLE8uUmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbj1lfSxpbmplY3RCYXRjaGluZ1N0
cmF0ZWd5OmZ1bmN0aW9uKGUpe2U/dm9pZCAwOmwoIjEyNyIpLCJmdW5jdGlvbiIhPXR5cGVvZiBl
LmJhdGNoZWRVcGRhdGVzP2woIjEyOCIpOnZvaWQgMCwiYm9vbGVhbiIhPXR5cGVvZiBlLmlzQmF0
Y2hpbmdVcGRhdGVzP2woIjEyOSIpOnZvaWQgMCxDPWV9fSxPPXtSZWFjdFJlY29uY2lsZVRyYW5z
YWN0aW9uOm51bGwsYmF0Y2hlZFVwZGF0ZXM6aSxlbnF1ZXVlVXBkYXRlOnMsZmx1c2hCYXRjaGVk
VXBkYXRlczpQLGluamVjdGlvbjp4LGFzYXA6Y307ZS5leHBvcnRzPU99LGZ1bmN0aW9uKGUsdCxu
KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQsbixyKXt0aGlzLmRpc3BhdGNoQ29uZmlnPWUs
dGhpcy5fdGFyZ2V0SW5zdD10LHRoaXMubmF0aXZlRXZlbnQ9bjt2YXIgbz10aGlzLmNvbnN0cnVj
dG9yLkludGVyZmFjZTtmb3IodmFyIGkgaW4gbylpZihvLmhhc093blByb3BlcnR5KGkpKXt2YXIg
dT1vW2ldO3U/dGhpc1tpXT11KG4pOiJ0YXJnZXQiPT09aT90aGlzLnRhcmdldD1yOnRoaXNbaV09
bltpXX12YXIgcz1udWxsIT1uLmRlZmF1bHRQcmV2ZW50ZWQ/bi5kZWZhdWx0UHJldmVudGVkOm4u
cmV0dXJuVmFsdWU9PT0hMTtyZXR1cm4gcz90aGlzLmlzRGVmYXVsdFByZXZlbnRlZD1hLnRoYXRS
ZXR1cm5zVHJ1ZTp0aGlzLmlzRGVmYXVsdFByZXZlbnRlZD1hLnRoYXRSZXR1cm5zRmFsc2UsdGhp
cy5pc1Byb3BhZ2F0aW9uU3RvcHBlZD1hLnRoYXRSZXR1cm5zRmFsc2UsdGhpc312YXIgbz1uKDQp
LGk9bigxMyksYT1uKDcpLHU9KG4oMiksImZ1bmN0aW9uIj09dHlwZW9mIFByb3h5LFsiZGlzcGF0
Y2hDb25maWciLCJfdGFyZ2V0SW5zdCIsIm5hdGl2ZUV2ZW50IiwiaXNEZWZhdWx0UHJldmVudGVk
IiwiaXNQcm9wYWdhdGlvblN0b3BwZWQiLCJfZGlzcGF0Y2hMaXN0ZW5lcnMiLCJfZGlzcGF0Y2hJ
bnN0YW5jZXMiXSkscz17dHlwZTpudWxsLHRhcmdldDpudWxsLGN1cnJlbnRUYXJnZXQ6YS50aGF0
UmV0dXJuc051bGwsZXZlbnRQaGFzZTpudWxsLGJ1YmJsZXM6bnVsbCxjYW5jZWxhYmxlOm51bGws
dGltZVN0YW1wOmZ1bmN0aW9uKGUpe3JldHVybiBlLnRpbWVTdGFtcHx8RGF0ZS5ub3coKX0sZGVm
YXVsdFByZXZlbnRlZDpudWxsLGlzVHJ1c3RlZDpudWxsfTtvKHIucHJvdG90eXBlLHtwcmV2ZW50
RGVmYXVsdDpmdW5jdGlvbigpe3RoaXMuZGVmYXVsdFByZXZlbnRlZD0hMDt2YXIgZT10aGlzLm5h
dGl2ZUV2ZW50O2UmJihlLnByZXZlbnREZWZhdWx0P2UucHJldmVudERlZmF1bHQoKToidW5rbm93
biIhPXR5cGVvZiBlLnJldHVyblZhbHVlJiYoZS5yZXR1cm5WYWx1ZT0hMSksdGhpcy5pc0RlZmF1
bHRQcmV2ZW50ZWQ9YS50aGF0UmV0dXJuc1RydWUpfSxzdG9wUHJvcGFnYXRpb246ZnVuY3Rpb24o
KXt2YXIgZT10aGlzLm5hdGl2ZUV2ZW50O2UmJihlLnN0b3BQcm9wYWdhdGlvbj9lLnN0b3BQcm9w
YWdhdGlvbigpOiJ1bmtub3duIiE9dHlwZW9mIGUuY2FuY2VsQnViYmxlJiYoZS5jYW5jZWxCdWJi
bGU9ITApLHRoaXMuaXNQcm9wYWdhdGlvblN0b3BwZWQ9YS50aGF0UmV0dXJuc1RydWUpfSxwZXJz
aXN0OmZ1bmN0aW9uKCl7dGhpcy5pc1BlcnNpc3RlbnQ9YS50aGF0UmV0dXJuc1RydWV9LGlzUGVy
c2lzdGVudDphLnRoYXRSZXR1cm5zRmFsc2UsZGVzdHJ1Y3RvcjpmdW5jdGlvbigpe3ZhciBlPXRo
aXMuY29uc3RydWN0b3IuSW50ZXJmYWNlO2Zvcih2YXIgdCBpbiBlKXRoaXNbdF09bnVsbDtmb3Io
dmFyIG49MDtuPHUubGVuZ3RoO24rKyl0aGlzW3Vbbl1dPW51bGx9fSksci5JbnRlcmZhY2U9cyxy
LmF1Z21lbnRDbGFzcz1mdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMscj1mdW5jdGlvbigpe307ci5w
cm90b3R5cGU9bi5wcm90b3R5cGU7dmFyIGE9bmV3IHI7byhhLGUucHJvdG90eXBlKSxlLnByb3Rv
dHlwZT1hLGUucHJvdG90eXBlLmNvbnN0cnVjdG9yPWUsZS5JbnRlcmZhY2U9byh7fSxuLkludGVy
ZmFjZSx0KSxlLmF1Z21lbnRDbGFzcz1uLmF1Z21lbnRDbGFzcyxpLmFkZFBvb2xpbmdUbyhlLGku
Zm91ckFyZ3VtZW50UG9vbGVyKX0saS5hZGRQb29saW5nVG8ocixpLmZvdXJBcmd1bWVudFBvb2xl
ciksZS5leHBvcnRzPXJ9LGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO3ZhciBuPXtjdXJyZW50
Om51bGx9O2UuZXhwb3J0cz1ufSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2UuZXhwb3J0
cz1uKDE3KX0sWzIzMSwzXSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIo
ZSl7aWYobSl7dmFyIHQ9ZS5ub2RlLG49ZS5jaGlsZHJlbjtpZihuLmxlbmd0aClmb3IodmFyIHI9
MDtyPG4ubGVuZ3RoO3IrKyl5KHQsbltyXSxudWxsKTtlbHNlIG51bGwhPWUuaHRtbD9wKHQsZS5o
dG1sKTpudWxsIT1lLnRleHQmJmYodCxlLnRleHQpfX1mdW5jdGlvbiBvKGUsdCl7ZS5wYXJlbnRO
b2RlLnJlcGxhY2VDaGlsZCh0Lm5vZGUsZSkscih0KX1mdW5jdGlvbiBpKGUsdCl7bT9lLmNoaWxk
cmVuLnB1c2godCk6ZS5ub2RlLmFwcGVuZENoaWxkKHQubm9kZSl9ZnVuY3Rpb24gYShlLHQpe20/
ZS5odG1sPXQ6cChlLm5vZGUsdCl9ZnVuY3Rpb24gdShlLHQpe20/ZS50ZXh0PXQ6ZihlLm5vZGUs
dCl9ZnVuY3Rpb24gcygpe3JldHVybiB0aGlzLm5vZGUubm9kZU5hbWV9ZnVuY3Rpb24gYyhlKXty
ZXR1cm57bm9kZTplLGNoaWxkcmVuOltdLGh0bWw6bnVsbCx0ZXh0Om51bGwsdG9TdHJpbmc6c319
dmFyIGw9bigzNSkscD1uKDI5KSxkPW4oNDMpLGY9big3NyksaD0xLHY9MTEsbT0idW5kZWZpbmVk
IiE9dHlwZW9mIGRvY3VtZW50JiYibnVtYmVyIj09dHlwZW9mIGRvY3VtZW50LmRvY3VtZW50TW9k
ZXx8InVuZGVmaW5lZCIhPXR5cGVvZiBuYXZpZ2F0b3ImJiJzdHJpbmciPT10eXBlb2YgbmF2aWdh
dG9yLnVzZXJBZ2VudCYmL1xiRWRnZVwvXGQvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkseT1k
KGZ1bmN0aW9uKGUsdCxuKXt0Lm5vZGUubm9kZVR5cGU9PT12fHx0Lm5vZGUubm9kZVR5cGU9PT1o
JiYib2JqZWN0Ij09PXQubm9kZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpJiYobnVsbD09dC5ub2Rl
Lm5hbWVzcGFjZVVSSXx8dC5ub2RlLm5hbWVzcGFjZVVSST09PWwuaHRtbCk/KHIodCksZS5pbnNl
cnRCZWZvcmUodC5ub2RlLG4pKTooZS5pbnNlcnRCZWZvcmUodC5ub2RlLG4pLHIodCkpfSk7Yy5p
bnNlcnRUcmVlQmVmb3JlPXksYy5yZXBsYWNlQ2hpbGRXaXRoVHJlZT1vLGMucXVldWVDaGlsZD1p
LGMucXVldWVIVE1MPWEsYy5xdWV1ZVRleHQ9dSxlLmV4cG9ydHM9Y30sZnVuY3Rpb24oZSx0LG4p
eyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCl7cmV0dXJuKGUmdCk9PT10fXZhciBvPW4oMyks
aT0obigxKSx7TVVTVF9VU0VfUFJPUEVSVFk6MSxIQVNfQk9PTEVBTl9WQUxVRTo0LEhBU19OVU1F
UklDX1ZBTFVFOjgsSEFTX1BPU0lUSVZFX05VTUVSSUNfVkFMVUU6MjQsSEFTX09WRVJMT0FERURf
Qk9PTEVBTl9WQUxVRTozMixpbmplY3RET01Qcm9wZXJ0eUNvbmZpZzpmdW5jdGlvbihlKXt2YXIg
dD1pLG49ZS5Qcm9wZXJ0aWVzfHx7fSxhPWUuRE9NQXR0cmlidXRlTmFtZXNwYWNlc3x8e30scz1l
LkRPTUF0dHJpYnV0ZU5hbWVzfHx7fSxjPWUuRE9NUHJvcGVydHlOYW1lc3x8e30sbD1lLkRPTU11
dGF0aW9uTWV0aG9kc3x8e307ZS5pc0N1c3RvbUF0dHJpYnV0ZSYmdS5faXNDdXN0b21BdHRyaWJ1
dGVGdW5jdGlvbnMucHVzaChlLmlzQ3VzdG9tQXR0cmlidXRlKTtmb3IodmFyIHAgaW4gbil7dS5w
cm9wZXJ0aWVzLmhhc093blByb3BlcnR5KHApP28oIjQ4IixwKTp2b2lkIDA7dmFyIGQ9cC50b0xv
d2VyQ2FzZSgpLGY9bltwXSxoPXthdHRyaWJ1dGVOYW1lOmQsYXR0cmlidXRlTmFtZXNwYWNlOm51
bGwscHJvcGVydHlOYW1lOnAsbXV0YXRpb25NZXRob2Q6bnVsbCxtdXN0VXNlUHJvcGVydHk6cihm
LHQuTVVTVF9VU0VfUFJPUEVSVFkpLGhhc0Jvb2xlYW5WYWx1ZTpyKGYsdC5IQVNfQk9PTEVBTl9W
QUxVRSksaGFzTnVtZXJpY1ZhbHVlOnIoZix0LkhBU19OVU1FUklDX1ZBTFVFKSxoYXNQb3NpdGl2
ZU51bWVyaWNWYWx1ZTpyKGYsdC5IQVNfUE9TSVRJVkVfTlVNRVJJQ19WQUxVRSksaGFzT3Zlcmxv
YWRlZEJvb2xlYW5WYWx1ZTpyKGYsdC5IQVNfT1ZFUkxPQURFRF9CT09MRUFOX1ZBTFVFKX07aWYo
aC5oYXNCb29sZWFuVmFsdWUraC5oYXNOdW1lcmljVmFsdWUraC5oYXNPdmVybG9hZGVkQm9vbGVh
blZhbHVlPD0xP3ZvaWQgMDpvKCI1MCIscCkscy5oYXNPd25Qcm9wZXJ0eShwKSl7dmFyIHY9c1tw
XTtoLmF0dHJpYnV0ZU5hbWU9dn1hLmhhc093blByb3BlcnR5KHApJiYoaC5hdHRyaWJ1dGVOYW1l
c3BhY2U9YVtwXSksYy5oYXNPd25Qcm9wZXJ0eShwKSYmKGgucHJvcGVydHlOYW1lPWNbcF0pLGwu
aGFzT3duUHJvcGVydHkocCkmJihoLm11dGF0aW9uTWV0aG9kPWxbcF0pLHUucHJvcGVydGllc1tw
XT1ofX19KSxhPSI6QS1aX2EtelxcdTAwQzAtXFx1MDBENlxcdTAwRDgtXFx1MDBGNlxcdTAwRjgt
XFx1MDJGRlxcdTAzNzAtXFx1MDM3RFxcdTAzN0YtXFx1MUZGRlxcdTIwMEMtXFx1MjAwRFxcdTIw
NzAtXFx1MjE4RlxcdTJDMDAtXFx1MkZFRlxcdTMwMDEtXFx1RDdGRlxcdUY5MDAtXFx1RkRDRlxc
dUZERjAtXFx1RkZGRCIsdT17SURfQVRUUklCVVRFX05BTUU6ImRhdGEtcmVhY3RpZCIsUk9PVF9B
VFRSSUJVVEVfTkFNRToiZGF0YS1yZWFjdHJvb3QiLEFUVFJJQlVURV9OQU1FX1NUQVJUX0NIQVI6
YSxBVFRSSUJVVEVfTkFNRV9DSEFSOmErIlxcLS4wLTlcXHUwMEI3XFx1MDMwMC1cXHUwMzZGXFx1
MjAzRi1cXHUyMDQwIixwcm9wZXJ0aWVzOnt9LGdldFBvc3NpYmxlU3RhbmRhcmROYW1lOm51bGws
X2lzQ3VzdG9tQXR0cmlidXRlRnVuY3Rpb25zOltdLGlzQ3VzdG9tQXR0cmlidXRlOmZ1bmN0aW9u
KGUpe2Zvcih2YXIgdD0wO3Q8dS5faXNDdXN0b21BdHRyaWJ1dGVGdW5jdGlvbnMubGVuZ3RoO3Qr
Kyl7dmFyIG49dS5faXNDdXN0b21BdHRyaWJ1dGVGdW5jdGlvbnNbdF07aWYobihlKSlyZXR1cm4h
MH1yZXR1cm4hMX0saW5qZWN0aW9uOml9O2UuZXhwb3J0cz11fSxmdW5jdGlvbihlLHQsbil7InVz
ZSBzdHJpY3QiO2Z1bmN0aW9uIHIoKXtvLmF0dGFjaFJlZnModGhpcyx0aGlzLl9jdXJyZW50RWxl
bWVudCl9dmFyIG89bigxNjApLGk9KG4oOCksbigyKSx7bW91bnRDb21wb25lbnQ6ZnVuY3Rpb24o
ZSx0LG4sbyxpLGEpe3ZhciB1PWUubW91bnRDb21wb25lbnQodCxuLG8saSxhKTtyZXR1cm4gZS5f
Y3VycmVudEVsZW1lbnQmJm51bGwhPWUuX2N1cnJlbnRFbGVtZW50LnJlZiYmdC5nZXRSZWFjdE1v
dW50UmVhZHkoKS5lbnF1ZXVlKHIsZSksdX0sZ2V0SG9zdE5vZGU6ZnVuY3Rpb24oZSl7cmV0dXJu
IGUuZ2V0SG9zdE5vZGUoKX0sdW5tb3VudENvbXBvbmVudDpmdW5jdGlvbihlLHQpe28uZGV0YWNo
UmVmcyhlLGUuX2N1cnJlbnRFbGVtZW50KSxlLnVubW91bnRDb21wb25lbnQodCl9LHJlY2VpdmVD
b21wb25lbnQ6ZnVuY3Rpb24oZSx0LG4saSl7dmFyIGE9ZS5fY3VycmVudEVsZW1lbnQ7aWYodCE9
PWF8fGkhPT1lLl9jb250ZXh0KXt2YXIgdT1vLnNob3VsZFVwZGF0ZVJlZnMoYSx0KTt1JiZvLmRl
dGFjaFJlZnMoZSxhKSxlLnJlY2VpdmVDb21wb25lbnQodCxuLGkpLHUmJmUuX2N1cnJlbnRFbGVt
ZW50JiZudWxsIT1lLl9jdXJyZW50RWxlbWVudC5yZWYmJm4uZ2V0UmVhY3RNb3VudFJlYWR5KCku
ZW5xdWV1ZShyLGUpfX0scGVyZm9ybVVwZGF0ZUlmTmVjZXNzYXJ5OmZ1bmN0aW9uKGUsdCxuKXtl
Ll91cGRhdGVCYXRjaE51bWJlcj09PW4mJmUucGVyZm9ybVVwZGF0ZUlmTmVjZXNzYXJ5KHQpfX0p
O2UuZXhwb3J0cz1pfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oNCksbz1u
KDg5KSxpPW4oMjE1KSxhPW4oMjE2KSx1PW4oMTgpLHM9bigyMTcpLGM9bigyMTgpLGw9bigyMTkp
LHA9bigyMjMpLGQ9dS5jcmVhdGVFbGVtZW50LGY9dS5jcmVhdGVGYWN0b3J5LGg9dS5jbG9uZUVs
ZW1lbnQsdj1yLG09ZnVuY3Rpb24oZSl7cmV0dXJuIGV9LHk9e0NoaWxkcmVuOnttYXA6aS5tYXAs
Zm9yRWFjaDppLmZvckVhY2gsY291bnQ6aS5jb3VudCx0b0FycmF5OmkudG9BcnJheSxvbmx5OnB9
LENvbXBvbmVudDpvLkNvbXBvbmVudCxQdXJlQ29tcG9uZW50Om8uUHVyZUNvbXBvbmVudCxjcmVh
dGVFbGVtZW50OmQsY2xvbmVFbGVtZW50OmgsaXNWYWxpZEVsZW1lbnQ6dS5pc1ZhbGlkRWxlbWVu
dCxQcm9wVHlwZXM6cyxjcmVhdGVDbGFzczpsLGNyZWF0ZUZhY3Rvcnk6ZixjcmVhdGVNaXhpbjpt
LERPTTphLHZlcnNpb246YyxfX3NwcmVhZDp2fTtlLmV4cG9ydHM9eX0sZnVuY3Rpb24oZSx0LG4p
eyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3JldHVybiB2b2lkIDAhPT1lLnJlZn1mdW5jdGlv
biBvKGUpe3JldHVybiB2b2lkIDAhPT1lLmtleX12YXIgaT1uKDQpLGE9bigxMSksdT0obigyKSxu
KDkzKSxPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5KSxzPW4oOTEpLGM9e2tleTohMCxy
ZWY6ITAsX19zZWxmOiEwLF9fc291cmNlOiEwfSxsPWZ1bmN0aW9uKGUsdCxuLHIsbyxpLGEpe3Zh
ciB1PXskJHR5cGVvZjpzLHR5cGU6ZSxrZXk6dCxyZWY6bixwcm9wczphLF9vd25lcjppfTtyZXR1
cm4gdX07bC5jcmVhdGVFbGVtZW50PWZ1bmN0aW9uKGUsdCxuKXt2YXIgaSxzPXt9LHA9bnVsbCxk
PW51bGwsZj1udWxsLGg9bnVsbDtpZihudWxsIT10KXtyKHQpJiYoZD10LnJlZiksbyh0KSYmKHA9
IiIrdC5rZXkpLGY9dm9pZCAwPT09dC5fX3NlbGY/bnVsbDp0Ll9fc2VsZixoPXZvaWQgMD09PXQu
X19zb3VyY2U/bnVsbDp0Ll9fc291cmNlO2ZvcihpIGluIHQpdS5jYWxsKHQsaSkmJiFjLmhhc093
blByb3BlcnR5KGkpJiYoc1tpXT10W2ldKX12YXIgdj1hcmd1bWVudHMubGVuZ3RoLTI7aWYoMT09
PXYpcy5jaGlsZHJlbj1uO2Vsc2UgaWYodj4xKXtmb3IodmFyIG09QXJyYXkodikseT0wO3k8djt5
KyspbVt5XT1hcmd1bWVudHNbeSsyXTtzLmNoaWxkcmVuPW19aWYoZSYmZS5kZWZhdWx0UHJvcHMp
e3ZhciBnPWUuZGVmYXVsdFByb3BzO2ZvcihpIGluIGcpdm9pZCAwPT09c1tpXSYmKHNbaV09Z1tp
XSl9cmV0dXJuIGwoZSxwLGQsZixoLGEuY3VycmVudCxzKX0sbC5jcmVhdGVGYWN0b3J5PWZ1bmN0
aW9uKGUpe3ZhciB0PWwuY3JlYXRlRWxlbWVudC5iaW5kKG51bGwsZSk7cmV0dXJuIHQudHlwZT1l
LHR9LGwuY2xvbmVBbmRSZXBsYWNlS2V5PWZ1bmN0aW9uKGUsdCl7dmFyIG49bChlLnR5cGUsdCxl
LnJlZixlLl9zZWxmLGUuX3NvdXJjZSxlLl9vd25lcixlLnByb3BzKTtyZXR1cm4gbn0sbC5jbG9u
ZUVsZW1lbnQ9ZnVuY3Rpb24oZSx0LG4pe3ZhciBzLHA9aSh7fSxlLnByb3BzKSxkPWUua2V5LGY9
ZS5yZWYsaD1lLl9zZWxmLHY9ZS5fc291cmNlLG09ZS5fb3duZXI7aWYobnVsbCE9dCl7cih0KSYm
KGY9dC5yZWYsbT1hLmN1cnJlbnQpLG8odCkmJihkPSIiK3Qua2V5KTt2YXIgeTtlLnR5cGUmJmUu
dHlwZS5kZWZhdWx0UHJvcHMmJih5PWUudHlwZS5kZWZhdWx0UHJvcHMpO2ZvcihzIGluIHQpdS5j
YWxsKHQscykmJiFjLmhhc093blByb3BlcnR5KHMpJiYodm9pZCAwPT09dFtzXSYmdm9pZCAwIT09
eT9wW3NdPXlbc106cFtzXT10W3NdKX12YXIgZz1hcmd1bWVudHMubGVuZ3RoLTI7aWYoMT09PWcp
cC5jaGlsZHJlbj1uO2Vsc2UgaWYoZz4xKXtmb3IodmFyIGI9QXJyYXkoZyksXz0wO188ZztfKysp
YltfXT1hcmd1bWVudHNbXysyXTtwLmNoaWxkcmVuPWJ9cmV0dXJuIGwoZS50eXBlLGQsZixoLHYs
bSxwKX0sbC5pc1ZhbGlkRWxlbWVudD1mdW5jdGlvbihlKXtyZXR1cm4ib2JqZWN0Ij09dHlwZW9m
IGUmJm51bGwhPT1lJiZlLiQkdHlwZW9mPT09c30sZS5leHBvcnRzPWx9LGZ1bmN0aW9uKGUsdCxu
KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1cm4iYnV0dG9uIj09PWV8fCJpbnB1dCI9
PT1lfHwic2VsZWN0Ij09PWV8fCJ0ZXh0YXJlYSI9PT1lfWZ1bmN0aW9uIG8oZSx0LG4pe3N3aXRj
aChlKXtjYXNlIm9uQ2xpY2siOmNhc2Uib25DbGlja0NhcHR1cmUiOmNhc2Uib25Eb3VibGVDbGlj
ayI6Y2FzZSJvbkRvdWJsZUNsaWNrQ2FwdHVyZSI6Y2FzZSJvbk1vdXNlRG93biI6Y2FzZSJvbk1v
dXNlRG93bkNhcHR1cmUiOmNhc2Uib25Nb3VzZU1vdmUiOmNhc2Uib25Nb3VzZU1vdmVDYXB0dXJl
IjpjYXNlIm9uTW91c2VVcCI6Y2FzZSJvbk1vdXNlVXBDYXB0dXJlIjpyZXR1cm4hKCFuLmRpc2Fi
bGVkfHwhcih0KSk7ZGVmYXVsdDpyZXR1cm4hMX19dmFyIGk9bigzKSxhPW4oMzYpLHU9bigzNyks
cz1uKDQxKSxjPW4oNzApLGw9big3MSkscD0obigxKSx7fSksZD1udWxsLGY9ZnVuY3Rpb24oZSx0
KXtlJiYodS5leGVjdXRlRGlzcGF0Y2hlc0luT3JkZXIoZSx0KSxlLmlzUGVyc2lzdGVudCgpfHxl
LmNvbnN0cnVjdG9yLnJlbGVhc2UoZSkpfSxoPWZ1bmN0aW9uKGUpe3JldHVybiBmKGUsITApfSx2
PWZ1bmN0aW9uKGUpe3JldHVybiBmKGUsITEpfSxtPWZ1bmN0aW9uKGUpe3JldHVybiIuIitlLl9y
b290Tm9kZUlEfSx5PXtpbmplY3Rpb246e2luamVjdEV2ZW50UGx1Z2luT3JkZXI6YS5pbmplY3RF
dmVudFBsdWdpbk9yZGVyLGluamVjdEV2ZW50UGx1Z2luc0J5TmFtZTphLmluamVjdEV2ZW50UGx1
Z2luc0J5TmFtZX0scHV0TGlzdGVuZXI6ZnVuY3Rpb24oZSx0LG4peyJmdW5jdGlvbiIhPXR5cGVv
ZiBuP2koIjk0Iix0LHR5cGVvZiBuKTp2b2lkIDA7dmFyIHI9bShlKSxvPXBbdF18fChwW3RdPXt9
KTtvW3JdPW47dmFyIHU9YS5yZWdpc3RyYXRpb25OYW1lTW9kdWxlc1t0XTt1JiZ1LmRpZFB1dExp
c3RlbmVyJiZ1LmRpZFB1dExpc3RlbmVyKGUsdCxuKX0sZ2V0TGlzdGVuZXI6ZnVuY3Rpb24oZSx0
KXt2YXIgbj1wW3RdO2lmKG8odCxlLl9jdXJyZW50RWxlbWVudC50eXBlLGUuX2N1cnJlbnRFbGVt
ZW50LnByb3BzKSlyZXR1cm4gbnVsbDt2YXIgcj1tKGUpO3JldHVybiBuJiZuW3JdfSxkZWxldGVM
aXN0ZW5lcjpmdW5jdGlvbihlLHQpe3ZhciBuPWEucmVnaXN0cmF0aW9uTmFtZU1vZHVsZXNbdF07
biYmbi53aWxsRGVsZXRlTGlzdGVuZXImJm4ud2lsbERlbGV0ZUxpc3RlbmVyKGUsdCk7dmFyIHI9
cFt0XTtpZihyKXt2YXIgbz1tKGUpO2RlbGV0ZSByW29dfX0sZGVsZXRlQWxsTGlzdGVuZXJzOmZ1
bmN0aW9uKGUpe3ZhciB0PW0oZSk7Zm9yKHZhciBuIGluIHApaWYocC5oYXNPd25Qcm9wZXJ0eShu
KSYmcFtuXVt0XSl7dmFyIHI9YS5yZWdpc3RyYXRpb25OYW1lTW9kdWxlc1tuXTtyJiZyLndpbGxE
ZWxldGVMaXN0ZW5lciYmci53aWxsRGVsZXRlTGlzdGVuZXIoZSxuKSxkZWxldGUgcFtuXVt0XX19
LGV4dHJhY3RFdmVudHM6ZnVuY3Rpb24oZSx0LG4scil7Zm9yKHZhciBvLGk9YS5wbHVnaW5zLHU9
MDt1PGkubGVuZ3RoO3UrKyl7dmFyIHM9aVt1XTtpZihzKXt2YXIgbD1zLmV4dHJhY3RFdmVudHMo
ZSx0LG4scik7bCYmKG89YyhvLGwpKX19cmV0dXJuIG99LGVucXVldWVFdmVudHM6ZnVuY3Rpb24o
ZSl7ZSYmKGQ9YyhkLGUpKX0scHJvY2Vzc0V2ZW50UXVldWU6ZnVuY3Rpb24oZSl7dmFyIHQ9ZDtk
PW51bGwsZT9sKHQsaCk6bCh0LHYpLGQ/aSgiOTUiKTp2b2lkIDAscy5yZXRocm93Q2F1Z2h0RXJy
b3IoKX0sX19wdXJnZTpmdW5jdGlvbigpe3A9e319LF9fZ2V0TGlzdGVuZXJCYW5rOmZ1bmN0aW9u
KCl7cmV0dXJuIHB9fTtlLmV4cG9ydHM9eX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijtm
dW5jdGlvbiByKGUsdCxuKXt2YXIgcj10LmRpc3BhdGNoQ29uZmlnLnBoYXNlZFJlZ2lzdHJhdGlv
bk5hbWVzW25dO3JldHVybiB5KGUscil9ZnVuY3Rpb24gbyhlLHQsbil7dmFyIG89cihlLG4sdCk7
byYmKG4uX2Rpc3BhdGNoTGlzdGVuZXJzPXYobi5fZGlzcGF0Y2hMaXN0ZW5lcnMsbyksbi5fZGlz
cGF0Y2hJbnN0YW5jZXM9dihuLl9kaXNwYXRjaEluc3RhbmNlcyxlKSl9ZnVuY3Rpb24gaShlKXtl
JiZlLmRpc3BhdGNoQ29uZmlnLnBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzJiZoLnRyYXZlcnNlVHdv
UGhhc2UoZS5fdGFyZ2V0SW5zdCxvLGUpfWZ1bmN0aW9uIGEoZSl7aWYoZSYmZS5kaXNwYXRjaENv
bmZpZy5waGFzZWRSZWdpc3RyYXRpb25OYW1lcyl7dmFyIHQ9ZS5fdGFyZ2V0SW5zdCxuPXQ/aC5n
ZXRQYXJlbnRJbnN0YW5jZSh0KTpudWxsO2gudHJhdmVyc2VUd29QaGFzZShuLG8sZSl9fWZ1bmN0
aW9uIHUoZSx0LG4pe2lmKG4mJm4uZGlzcGF0Y2hDb25maWcucmVnaXN0cmF0aW9uTmFtZSl7dmFy
IHI9bi5kaXNwYXRjaENvbmZpZy5yZWdpc3RyYXRpb25OYW1lLG89eShlLHIpO28mJihuLl9kaXNw
YXRjaExpc3RlbmVycz12KG4uX2Rpc3BhdGNoTGlzdGVuZXJzLG8pLG4uX2Rpc3BhdGNoSW5zdGFu
Y2VzPXYobi5fZGlzcGF0Y2hJbnN0YW5jZXMsZSkpfX1mdW5jdGlvbiBzKGUpe2UmJmUuZGlzcGF0
Y2hDb25maWcucmVnaXN0cmF0aW9uTmFtZSYmdShlLl90YXJnZXRJbnN0LG51bGwsZSl9ZnVuY3Rp
b24gYyhlKXttKGUsaSl9ZnVuY3Rpb24gbChlKXttKGUsYSl9ZnVuY3Rpb24gcChlLHQsbixyKXto
LnRyYXZlcnNlRW50ZXJMZWF2ZShuLHIsdSxlLHQpfWZ1bmN0aW9uIGQoZSl7bShlLHMpfXZhciBm
PW4oMTkpLGg9bigzNyksdj1uKDcwKSxtPW4oNzEpLHk9KG4oMiksZi5nZXRMaXN0ZW5lciksZz17
YWNjdW11bGF0ZVR3b1BoYXNlRGlzcGF0Y2hlczpjLGFjY3VtdWxhdGVUd29QaGFzZURpc3BhdGNo
ZXNTa2lwVGFyZ2V0OmwsYWNjdW11bGF0ZURpcmVjdERpc3BhdGNoZXM6ZCxhY2N1bXVsYXRlRW50
ZXJMZWF2ZURpc3BhdGNoZXM6cH07ZS5leHBvcnRzPWd9LGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJp
Y3QiO3ZhciBuPXtyZW1vdmU6ZnVuY3Rpb24oZSl7ZS5fcmVhY3RJbnRlcm5hbEluc3RhbmNlPXZv
aWQgMH0sZ2V0OmZ1bmN0aW9uKGUpe3JldHVybiBlLl9yZWFjdEludGVybmFsSW5zdGFuY2V9LGhh
czpmdW5jdGlvbihlKXtyZXR1cm4gdm9pZCAwIT09ZS5fcmVhY3RJbnRlcm5hbEluc3RhbmNlfSxz
ZXQ6ZnVuY3Rpb24oZSx0KXtlLl9yZWFjdEludGVybmFsSW5zdGFuY2U9dH19O2UuZXhwb3J0cz1u
fSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0LG4scil7cmV0dXJu
IG8uY2FsbCh0aGlzLGUsdCxuLHIpfXZhciBvPW4oMTApLGk9big0NiksYT17dmlldzpmdW5jdGlv
bihlKXtpZihlLnZpZXcpcmV0dXJuIGUudmlldzt2YXIgdD1pKGUpO2lmKHQud2luZG93PT09dCly
ZXR1cm4gdDt2YXIgbj10Lm93bmVyRG9jdW1lbnQ7cmV0dXJuIG4/bi5kZWZhdWx0Vmlld3x8bi5w
YXJlbnRXaW5kb3c6d2luZG93fSxkZXRhaWw6ZnVuY3Rpb24oZSl7cmV0dXJuIGUuZGV0YWlsfHww
fX07by5hdWdtZW50Q2xhc3MocixhKSxlLmV4cG9ydHM9cn0sMyxmdW5jdGlvbihlLHQsbil7InVz
ZSBzdHJpY3QiO3ZhciByPXt9O2UuZXhwb3J0cz1yfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJp
Y3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHku
Y2FsbChlLHYpfHwoZVt2XT1mKysscFtlW3ZdXT17fSkscFtlW3ZdXX12YXIgbyxpPW4oNCksYT1u
KDM2KSx1PW4oMTUyKSxzPW4oNjkpLGM9bigxODQpLGw9big0NykscD17fSxkPSExLGY9MCxoPXt0
b3BBYm9ydDoiYWJvcnQiLHRvcEFuaW1hdGlvbkVuZDpjKCJhbmltYXRpb25lbmQiKXx8ImFuaW1h
dGlvbmVuZCIsdG9wQW5pbWF0aW9uSXRlcmF0aW9uOmMoImFuaW1hdGlvbml0ZXJhdGlvbiIpfHwi
YW5pbWF0aW9uaXRlcmF0aW9uIix0b3BBbmltYXRpb25TdGFydDpjKCJhbmltYXRpb25zdGFydCIp
fHwiYW5pbWF0aW9uc3RhcnQiLHRvcEJsdXI6ImJsdXIiLHRvcENhblBsYXk6ImNhbnBsYXkiLHRv
cENhblBsYXlUaHJvdWdoOiJjYW5wbGF5dGhyb3VnaCIsdG9wQ2hhbmdlOiJjaGFuZ2UiLHRvcENs
aWNrOiJjbGljayIsdG9wQ29tcG9zaXRpb25FbmQ6ImNvbXBvc2l0aW9uZW5kIix0b3BDb21wb3Np
dGlvblN0YXJ0OiJjb21wb3NpdGlvbnN0YXJ0Iix0b3BDb21wb3NpdGlvblVwZGF0ZToiY29tcG9z
aXRpb251cGRhdGUiLHRvcENvbnRleHRNZW51OiJjb250ZXh0bWVudSIsdG9wQ29weToiY29weSIs
dG9wQ3V0OiJjdXQiLHRvcERvdWJsZUNsaWNrOiJkYmxjbGljayIsdG9wRHJhZzoiZHJhZyIsdG9w
RHJhZ0VuZDoiZHJhZ2VuZCIsdG9wRHJhZ0VudGVyOiJkcmFnZW50ZXIiLHRvcERyYWdFeGl0OiJk
cmFnZXhpdCIsdG9wRHJhZ0xlYXZlOiJkcmFnbGVhdmUiLHRvcERyYWdPdmVyOiJkcmFnb3ZlciIs
dG9wRHJhZ1N0YXJ0OiJkcmFnc3RhcnQiLHRvcERyb3A6ImRyb3AiLHRvcER1cmF0aW9uQ2hhbmdl
OiJkdXJhdGlvbmNoYW5nZSIsdG9wRW1wdGllZDoiZW1wdGllZCIsdG9wRW5jcnlwdGVkOiJlbmNy
eXB0ZWQiLHRvcEVuZGVkOiJlbmRlZCIsdG9wRXJyb3I6ImVycm9yIix0b3BGb2N1czoiZm9jdXMi
LHRvcElucHV0OiJpbnB1dCIsdG9wS2V5RG93bjoia2V5ZG93biIsdG9wS2V5UHJlc3M6ImtleXBy
ZXNzIix0b3BLZXlVcDoia2V5dXAiLHRvcExvYWRlZERhdGE6ImxvYWRlZGRhdGEiLHRvcExvYWRl
ZE1ldGFkYXRhOiJsb2FkZWRtZXRhZGF0YSIsdG9wTG9hZFN0YXJ0OiJsb2Fkc3RhcnQiLHRvcE1v
dXNlRG93bjoibW91c2Vkb3duIix0b3BNb3VzZU1vdmU6Im1vdXNlbW92ZSIsdG9wTW91c2VPdXQ6
Im1vdXNlb3V0Iix0b3BNb3VzZU92ZXI6Im1vdXNlb3ZlciIsdG9wTW91c2VVcDoibW91c2V1cCIs
dG9wUGFzdGU6InBhc3RlIix0b3BQYXVzZToicGF1c2UiLHRvcFBsYXk6InBsYXkiLHRvcFBsYXlp
bmc6InBsYXlpbmciLHRvcFByb2dyZXNzOiJwcm9ncmVzcyIsdG9wUmF0ZUNoYW5nZToicmF0ZWNo
YW5nZSIsdG9wU2Nyb2xsOiJzY3JvbGwiLHRvcFNlZWtlZDoic2Vla2VkIix0b3BTZWVraW5nOiJz
ZWVraW5nIix0b3BTZWxlY3Rpb25DaGFuZ2U6InNlbGVjdGlvbmNoYW5nZSIsdG9wU3RhbGxlZDoi
c3RhbGxlZCIsdG9wU3VzcGVuZDoic3VzcGVuZCIsdG9wVGV4dElucHV0OiJ0ZXh0SW5wdXQiLHRv
cFRpbWVVcGRhdGU6InRpbWV1cGRhdGUiLHRvcFRvdWNoQ2FuY2VsOiJ0b3VjaGNhbmNlbCIsdG9w
VG91Y2hFbmQ6InRvdWNoZW5kIix0b3BUb3VjaE1vdmU6InRvdWNobW92ZSIsdG9wVG91Y2hTdGFy
dDoidG91Y2hzdGFydCIsdG9wVHJhbnNpdGlvbkVuZDpjKCJ0cmFuc2l0aW9uZW5kIil8fCJ0cmFu
c2l0aW9uZW5kIix0b3BWb2x1bWVDaGFuZ2U6InZvbHVtZWNoYW5nZSIsdG9wV2FpdGluZzoid2Fp
dGluZyIsdG9wV2hlZWw6IndoZWVsIn0sdj0iX3JlYWN0TGlzdGVuZXJzSUQiK1N0cmluZyhNYXRo
LnJhbmRvbSgpKS5zbGljZSgyKSxtPWkoe30sdSx7UmVhY3RFdmVudExpc3RlbmVyOm51bGwsaW5q
ZWN0aW9uOntpbmplY3RSZWFjdEV2ZW50TGlzdGVuZXI6ZnVuY3Rpb24oZSl7ZS5zZXRIYW5kbGVU
b3BMZXZlbChtLmhhbmRsZVRvcExldmVsKSxtLlJlYWN0RXZlbnRMaXN0ZW5lcj1lfX0sc2V0RW5h
YmxlZDpmdW5jdGlvbihlKXttLlJlYWN0RXZlbnRMaXN0ZW5lciYmbS5SZWFjdEV2ZW50TGlzdGVu
ZXIuc2V0RW5hYmxlZChlKX0saXNFbmFibGVkOmZ1bmN0aW9uKCl7cmV0dXJuISghbS5SZWFjdEV2
ZW50TGlzdGVuZXJ8fCFtLlJlYWN0RXZlbnRMaXN0ZW5lci5pc0VuYWJsZWQoKSl9LGxpc3RlblRv
OmZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuPXQsbz1yKG4pLGk9YS5yZWdpc3RyYXRpb25OYW1lRGVw
ZW5kZW5jaWVzW2VdLHU9MDt1PGkubGVuZ3RoO3UrKyl7dmFyIHM9aVt1XTtvLmhhc093blByb3Bl
cnR5KHMpJiZvW3NdfHwoInRvcFdoZWVsIj09PXM/bCgid2hlZWwiKT9tLlJlYWN0RXZlbnRMaXN0
ZW5lci50cmFwQnViYmxlZEV2ZW50KCJ0b3BXaGVlbCIsIndoZWVsIixuKTpsKCJtb3VzZXdoZWVs
Iik/bS5SZWFjdEV2ZW50TGlzdGVuZXIudHJhcEJ1YmJsZWRFdmVudCgidG9wV2hlZWwiLCJtb3Vz
ZXdoZWVsIixuKTptLlJlYWN0RXZlbnRMaXN0ZW5lci50cmFwQnViYmxlZEV2ZW50KCJ0b3BXaGVl
bCIsIkRPTU1vdXNlU2Nyb2xsIixuKToidG9wU2Nyb2xsIj09PXM/bCgic2Nyb2xsIiwhMCk/bS5S
ZWFjdEV2ZW50TGlzdGVuZXIudHJhcENhcHR1cmVkRXZlbnQoInRvcFNjcm9sbCIsInNjcm9sbCIs
bik6bS5SZWFjdEV2ZW50TGlzdGVuZXIudHJhcEJ1YmJsZWRFdmVudCgidG9wU2Nyb2xsIiwic2Ny
b2xsIixtLlJlYWN0RXZlbnRMaXN0ZW5lci5XSU5ET1dfSEFORExFKToidG9wRm9jdXMiPT09c3x8
InRvcEJsdXIiPT09cz8obCgiZm9jdXMiLCEwKT8obS5SZWFjdEV2ZW50TGlzdGVuZXIudHJhcENh
cHR1cmVkRXZlbnQoInRvcEZvY3VzIiwiZm9jdXMiLG4pLG0uUmVhY3RFdmVudExpc3RlbmVyLnRy
YXBDYXB0dXJlZEV2ZW50KCJ0b3BCbHVyIiwiYmx1ciIsbikpOmwoImZvY3VzaW4iKSYmKG0uUmVh
Y3RFdmVudExpc3RlbmVyLnRyYXBCdWJibGVkRXZlbnQoInRvcEZvY3VzIiwiZm9jdXNpbiIsbiks
bS5SZWFjdEV2ZW50TGlzdGVuZXIudHJhcEJ1YmJsZWRFdmVudCgidG9wQmx1ciIsImZvY3Vzb3V0
IixuKSksby50b3BCbHVyPSEwLG8udG9wRm9jdXM9ITApOmguaGFzT3duUHJvcGVydHkocykmJm0u
UmVhY3RFdmVudExpc3RlbmVyLnRyYXBCdWJibGVkRXZlbnQocyxoW3NdLG4pLG9bc109ITApfX0s
dHJhcEJ1YmJsZWRFdmVudDpmdW5jdGlvbihlLHQsbil7cmV0dXJuIG0uUmVhY3RFdmVudExpc3Rl
bmVyLnRyYXBCdWJibGVkRXZlbnQoZSx0LG4pfSx0cmFwQ2FwdHVyZWRFdmVudDpmdW5jdGlvbihl
LHQsbil7cmV0dXJuIG0uUmVhY3RFdmVudExpc3RlbmVyLnRyYXBDYXB0dXJlZEV2ZW50KGUsdCxu
KX0sc3VwcG9ydHNFdmVudFBhZ2VYWTpmdW5jdGlvbigpe2lmKCFkb2N1bWVudC5jcmVhdGVFdmVu
dClyZXR1cm4hMTt2YXIgZT1kb2N1bWVudC5jcmVhdGVFdmVudCgiTW91c2VFdmVudCIpO3JldHVy
biBudWxsIT1lJiYicGFnZVgiaW4gZX0sZW5zdXJlU2Nyb2xsVmFsdWVNb25pdG9yaW5nOmZ1bmN0
aW9uKCl7aWYodm9pZCAwPT09byYmKG89bS5zdXBwb3J0c0V2ZW50UGFnZVhZKCkpLCFvJiYhZCl7
dmFyIGU9cy5yZWZyZXNoU2Nyb2xsVmFsdWVzO20uUmVhY3RFdmVudExpc3RlbmVyLm1vbml0b3JT
Y3JvbGxWYWx1ZShlKSxkPSEwfX19KTtlLmV4cG9ydHM9bX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ug
c3RyaWN0IjtmdW5jdGlvbiByKGUsdCxuLHIpe3JldHVybiBvLmNhbGwodGhpcyxlLHQsbixyKX12
YXIgbz1uKDIyKSxpPW4oNjkpLGE9big0NSksdT17c2NyZWVuWDpudWxsLHNjcmVlblk6bnVsbCxj
bGllbnRYOm51bGwsY2xpZW50WTpudWxsLGN0cmxLZXk6bnVsbCxzaGlmdEtleTpudWxsLGFsdEtl
eTpudWxsLG1ldGFLZXk6bnVsbCxnZXRNb2RpZmllclN0YXRlOmEsYnV0dG9uOmZ1bmN0aW9uKGUp
e3ZhciB0PWUuYnV0dG9uO3JldHVybiJ3aGljaCJpbiBlP3Q6Mj09PXQ/Mjo0PT09dD8xOjB9LGJ1
dHRvbnM6bnVsbCxyZWxhdGVkVGFyZ2V0OmZ1bmN0aW9uKGUpe3JldHVybiBlLnJlbGF0ZWRUYXJn
ZXR8fChlLmZyb21FbGVtZW50PT09ZS5zcmNFbGVtZW50P2UudG9FbGVtZW50OmUuZnJvbUVsZW1l
bnQpfSxwYWdlWDpmdW5jdGlvbihlKXtyZXR1cm4icGFnZVgiaW4gZT9lLnBhZ2VYOmUuY2xpZW50
WCtpLmN1cnJlbnRTY3JvbGxMZWZ0fSxwYWdlWTpmdW5jdGlvbihlKXtyZXR1cm4icGFnZVkiaW4g
ZT9lLnBhZ2VZOmUuY2xpZW50WStpLmN1cnJlbnRTY3JvbGxUb3B9fTtvLmF1Z21lbnRDbGFzcyhy
LHUpLGUuZXhwb3J0cz1yfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oMyks
bz0obigxKSx7fSksaT17cmVpbml0aWFsaXplVHJhbnNhY3Rpb246ZnVuY3Rpb24oKXt0aGlzLnRy
YW5zYWN0aW9uV3JhcHBlcnM9dGhpcy5nZXRUcmFuc2FjdGlvbldyYXBwZXJzKCksdGhpcy53cmFw
cGVySW5pdERhdGE/dGhpcy53cmFwcGVySW5pdERhdGEubGVuZ3RoPTA6dGhpcy53cmFwcGVySW5p
dERhdGE9W10sdGhpcy5faXNJblRyYW5zYWN0aW9uPSExfSxfaXNJblRyYW5zYWN0aW9uOiExLGdl
dFRyYW5zYWN0aW9uV3JhcHBlcnM6bnVsbCxpc0luVHJhbnNhY3Rpb246ZnVuY3Rpb24oKXtyZXR1
cm4hIXRoaXMuX2lzSW5UcmFuc2FjdGlvbn0scGVyZm9ybTpmdW5jdGlvbihlLHQsbixvLGksYSx1
LHMpe3RoaXMuaXNJblRyYW5zYWN0aW9uKCk/cigiMjciKTp2b2lkIDA7dmFyIGMsbDt0cnl7dGhp
cy5faXNJblRyYW5zYWN0aW9uPSEwLGM9ITAsdGhpcy5pbml0aWFsaXplQWxsKDApLGw9ZS5jYWxs
KHQsbixvLGksYSx1LHMpLGM9ITF9ZmluYWxseXt0cnl7aWYoYyl0cnl7dGhpcy5jbG9zZUFsbCgw
KX1jYXRjaChwKXt9ZWxzZSB0aGlzLmNsb3NlQWxsKDApfWZpbmFsbHl7dGhpcy5faXNJblRyYW5z
YWN0aW9uPSExfX1yZXR1cm4gbH0saW5pdGlhbGl6ZUFsbDpmdW5jdGlvbihlKXtmb3IodmFyIHQ9
dGhpcy50cmFuc2FjdGlvbldyYXBwZXJzLG49ZTtuPHQubGVuZ3RoO24rKyl7dmFyIHI9dFtuXTt0
cnl7dGhpcy53cmFwcGVySW5pdERhdGFbbl09byx0aGlzLndyYXBwZXJJbml0RGF0YVtuXT1yLmlu
aXRpYWxpemU/ci5pbml0aWFsaXplLmNhbGwodGhpcyk6bnVsbH1maW5hbGx5e2lmKHRoaXMud3Jh
cHBlckluaXREYXRhW25dPT09byl0cnl7dGhpcy5pbml0aWFsaXplQWxsKG4rMSl9Y2F0Y2goaSl7
fX19fSxjbG9zZUFsbDpmdW5jdGlvbihlKXt0aGlzLmlzSW5UcmFuc2FjdGlvbigpP3ZvaWQgMDpy
KCIyOCIpO2Zvcih2YXIgdD10aGlzLnRyYW5zYWN0aW9uV3JhcHBlcnMsbj1lO248dC5sZW5ndGg7
bisrKXt2YXIgaSxhPXRbbl0sdT10aGlzLndyYXBwZXJJbml0RGF0YVtuXTt0cnl7aT0hMCx1IT09
byYmYS5jbG9zZSYmYS5jbG9zZS5jYWxsKHRoaXMsdSksaT0hMX1maW5hbGx5e2lmKGkpdHJ5e3Ro
aXMuY2xvc2VBbGwobisxKX1jYXRjaChzKXt9fX10aGlzLndyYXBwZXJJbml0RGF0YS5sZW5ndGg9
MH19O2UuZXhwb3J0cz1pfSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKGUp
e3ZhciB0PSIiK2Usbj1vLmV4ZWModCk7aWYoIW4pcmV0dXJuIHQ7dmFyIHIsaT0iIixhPTAsdT0w
O2ZvcihhPW4uaW5kZXg7YTx0Lmxlbmd0aDthKyspe3N3aXRjaCh0LmNoYXJDb2RlQXQoYSkpe2Nh
c2UgMzQ6cj0iJnF1b3Q7IjticmVhaztjYXNlIDM4OnI9IiZhbXA7IjticmVhaztjYXNlIDM5OnI9
IiYjeDI3OyI7YnJlYWs7Y2FzZSA2MDpyPSImbHQ7IjticmVhaztjYXNlIDYyOnI9IiZndDsiO2Jy
ZWFrO2RlZmF1bHQ6Y29udGludWV9dSE9PWEmJihpKz10LnN1YnN0cmluZyh1LGEpKSx1PWErMSxp
Kz1yfXJldHVybiB1IT09YT9pK3Quc3Vic3RyaW5nKHUsYSk6aX1mdW5jdGlvbiByKGUpe3JldHVy
biJib29sZWFuIj09dHlwZW9mIGV8fCJudW1iZXIiPT10eXBlb2YgZT8iIitlOm4oZSl9dmFyIG89
L1siJyY8Pl0vO2UuZXhwb3J0cz1yfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciBy
LG89big2KSxpPW4oMzUpLGE9L15bIFxyXG5cdFxmXS8sdT0vPCghLS18bGlua3xub3NjcmlwdHxt
ZXRhfHNjcmlwdHxzdHlsZSlbIFxyXG5cdFxmXC8+XS8scz1uKDQzKSxjPXMoZnVuY3Rpb24oZSx0
KXtpZihlLm5hbWVzcGFjZVVSSSE9PWkuc3ZnfHwiaW5uZXJIVE1MImluIGUpZS5pbm5lckhUTUw9
dDtlbHNle3I9cnx8ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iiksci5pbm5lckhUTUw9Ijxz
dmc+Iit0KyI8L3N2Zz4iO2Zvcih2YXIgbj1yLmZpcnN0Q2hpbGQ7bi5maXJzdENoaWxkOyllLmFw
cGVuZENoaWxkKG4uZmlyc3RDaGlsZCl9fSk7aWYoby5jYW5Vc2VET00pe3ZhciBsPWRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoImRpdiIpO2wuaW5uZXJIVE1MPSIgIiwiIj09PWwuaW5uZXJIVE1MJiYo
Yz1mdW5jdGlvbihlLHQpe2lmKGUucGFyZW50Tm9kZSYmZS5wYXJlbnROb2RlLnJlcGxhY2VDaGls
ZChlLGUpLGEudGVzdCh0KXx8IjwiPT09dFswXSYmdS50ZXN0KHQpKXtlLmlubmVySFRNTD1TdHJp
bmcuZnJvbUNoYXJDb2RlKDY1Mjc5KSt0O3ZhciBuPWUuZmlyc3RDaGlsZDsxPT09bi5kYXRhLmxl
bmd0aD9lLnJlbW92ZUNoaWxkKG4pOm4uZGVsZXRlRGF0YSgwLDEpfWVsc2UgZS5pbm5lckhUTUw9
dH0pLGw9bnVsbH1lLmV4cG9ydHM9Y30sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5j
dGlvbiByKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX10Ll9fZXNNb2R1
bGU9ITAsdC5jb21wb3NlPXQuYXBwbHlNaWRkbGV3YXJlPXQuYmluZEFjdGlvbkNyZWF0b3JzPXQu
Y29tYmluZVJlZHVjZXJzPXQuY3JlYXRlU3RvcmU9dm9pZCAwO3ZhciBvPW4oOTUpLGk9cihvKSxh
PW4oMjI3KSx1PXIoYSkscz1uKDIyNiksYz1yKHMpLGw9bigyMjUpLHA9cihsKSxkPW4oOTQpLGY9
cihkKSxoPW4oOTYpO3IoaCk7dC5jcmVhdGVTdG9yZT1pLmRlZmF1bHQsdC5jb21iaW5lUmVkdWNl
cnM9dS5kZWZhdWx0LHQuYmluZEFjdGlvbkNyZWF0b3JzPWMuZGVmYXVsdCx0LmFwcGx5TWlkZGxl
d2FyZT1wLmRlZmF1bHQsdC5jb21wb3NlPWYuZGVmYXVsdH0sZnVuY3Rpb24oZSx0LG4pe3ZhciBy
LG87IWZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4oKXtmb3IodmFyIGU9W10sdD0w
O3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciByPWFyZ3VtZW50c1t0XTtpZihyKXt2YXIgbz10
eXBlb2YgcjtpZigic3RyaW5nIj09PW98fCJudW1iZXIiPT09byllLnB1c2gocik7ZWxzZSBpZihB
cnJheS5pc0FycmF5KHIpKWUucHVzaChuLmFwcGx5KG51bGwscikpO2Vsc2UgaWYoIm9iamVjdCI9
PT1vKWZvcih2YXIgYSBpbiByKWkuY2FsbChyLGEpJiZyW2FdJiZlLnB1c2goYSl9fXJldHVybiBl
LmpvaW4oIiAiKX12YXIgaT17fS5oYXNPd25Qcm9wZXJ0eTsidW5kZWZpbmVkIiE9dHlwZW9mIGUm
JmUuZXhwb3J0cz9lLmV4cG9ydHM9bjoocj1bXSxvPWZ1bmN0aW9uKCl7cmV0dXJuIG59LmFwcGx5
KHQsciksISh2b2lkIDAhPT1vJiYoZS5leHBvcnRzPW8pKSl9KCl9LGZ1bmN0aW9uKGUsdCl7InVz
ZSBzdHJpY3QiO2Z1bmN0aW9uIG4oZSx0KXtyZXR1cm4gZT09PXQ/MCE9PWV8fDAhPT10fHwxL2U9
PT0xL3Q6ZSE9PWUmJnQhPT10fWZ1bmN0aW9uIHIoZSx0KXtpZihuKGUsdCkpcmV0dXJuITA7aWYo
Im9iamVjdCIhPXR5cGVvZiBlfHxudWxsPT09ZXx8Im9iamVjdCIhPXR5cGVvZiB0fHxudWxsPT09
dClyZXR1cm4hMTt2YXIgcj1PYmplY3Qua2V5cyhlKSxpPU9iamVjdC5rZXlzKHQpO2lmKHIubGVu
Z3RoIT09aS5sZW5ndGgpcmV0dXJuITE7Zm9yKHZhciBhPTA7YTxyLmxlbmd0aDthKyspaWYoIW8u
Y2FsbCh0LHJbYV0pfHwhbihlW3JbYV1dLHRbclthXV0pKXJldHVybiExO3JldHVybiEwfXZhciBv
PU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7ZS5leHBvcnRzPXJ9LGZ1bmN0aW9uKGUs
dCxuKXtmdW5jdGlvbiByKGUpe2lmKCFhKGUpfHxvKGUpIT11KXJldHVybiExO3ZhciB0PWkoZSk7
aWYobnVsbD09PXQpcmV0dXJuITA7dmFyIG49cC5jYWxsKHQsImNvbnN0cnVjdG9yIikmJnQuY29u
c3RydWN0b3I7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIG4mJm4gaW5zdGFuY2VvZiBuJiZsLmNh
bGwobik9PWR9dmFyIG89bigxMTIpLGk9bigxMTQpLGE9bigxMTkpLHU9IltvYmplY3QgT2JqZWN0
XSIscz1GdW5jdGlvbi5wcm90b3R5cGUsYz1PYmplY3QucHJvdG90eXBlLGw9cy50b1N0cmluZyxw
PWMuaGFzT3duUHJvcGVydHksZD1sLmNhbGwoT2JqZWN0KTtlLmV4cG9ydHM9cn0sZnVuY3Rpb24o
ZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCl7cmV0dXJuIEFycmF5LmlzQXJyYXko
dCkmJih0PXRbMV0pLHQ/dC5uZXh0U2libGluZzplLmZpcnN0Q2hpbGR9ZnVuY3Rpb24gbyhlLHQs
bil7bC5pbnNlcnRUcmVlQmVmb3JlKGUsdCxuKX1mdW5jdGlvbiBpKGUsdCxuKXtBcnJheS5pc0Fy
cmF5KHQpP3UoZSx0WzBdLHRbMV0sbik6dihlLHQsbil9ZnVuY3Rpb24gYShlLHQpe2lmKEFycmF5
LmlzQXJyYXkodCkpe3ZhciBuPXRbMV07dD10WzBdLHMoZSx0LG4pLGUucmVtb3ZlQ2hpbGQobil9
ZS5yZW1vdmVDaGlsZCh0KX1mdW5jdGlvbiB1KGUsdCxuLHIpe2Zvcih2YXIgbz10Ozspe3ZhciBp
PW8ubmV4dFNpYmxpbmc7aWYodihlLG8sciksbz09PW4pYnJlYWs7bz1pfX1mdW5jdGlvbiBzKGUs
dCxuKXtmb3IoOzspe3ZhciByPXQubmV4dFNpYmxpbmc7aWYocj09PW4pYnJlYWs7ZS5yZW1vdmVD
aGlsZChyKX19ZnVuY3Rpb24gYyhlLHQsbil7dmFyIHI9ZS5wYXJlbnROb2RlLG89ZS5uZXh0U2li
bGluZztvPT09dD9uJiZ2KHIsZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUobiksbyk6bj8oaChvLG4p
LHMocixvLHQpKTpzKHIsZSx0KX12YXIgbD1uKDE0KSxwPW4oMTI5KSxkPShuKDUpLG4oOCksbig0
MykpLGY9bigyOSksaD1uKDc3KSx2PWQoZnVuY3Rpb24oZSx0LG4pe2UuaW5zZXJ0QmVmb3JlKHQs
bil9KSxtPXAuZGFuZ2Vyb3VzbHlSZXBsYWNlTm9kZVdpdGhNYXJrdXAseT17ZGFuZ2Vyb3VzbHlS
ZXBsYWNlTm9kZVdpdGhNYXJrdXA6bSxyZXBsYWNlRGVsaW1pdGVkVGV4dDpjLHByb2Nlc3NVcGRh
dGVzOmZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciB1PXRbbl07
c3dpdGNoKHUudHlwZSl7Y2FzZSJJTlNFUlRfTUFSS1VQIjpvKGUsdS5jb250ZW50LHIoZSx1LmFm
dGVyTm9kZSkpO2JyZWFrO2Nhc2UiTU9WRV9FWElTVElORyI6aShlLHUuZnJvbU5vZGUscihlLHUu
YWZ0ZXJOb2RlKSk7YnJlYWs7Y2FzZSJTRVRfTUFSS1VQIjpmKGUsdS5jb250ZW50KTticmVhaztj
YXNlIlRFWFRfQ09OVEVOVCI6aChlLHUuY29udGVudCk7YnJlYWs7Y2FzZSJSRU1PVkVfTk9ERSI6
YShlLHUuZnJvbU5vZGUpfX19fTtlLmV4cG9ydHM9eX0sZnVuY3Rpb24oZSx0KXsidXNlIHN0cmlj
dCI7dmFyIG49e2h0bWw6Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiLG1hdGhtbDoiaHR0
cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTCIsc3ZnOiJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyJ9O2UuZXhwb3J0cz1ufSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0
aW9uIHIoKXtpZih1KWZvcih2YXIgZSBpbiBzKXt2YXIgdD1zW2VdLG49dS5pbmRleE9mKGUpO2lm
KG4+LTE/dm9pZCAwOmEoIjk2IixlKSwhYy5wbHVnaW5zW25dKXt0LmV4dHJhY3RFdmVudHM/dm9p
ZCAwOmEoIjk3IixlKSxjLnBsdWdpbnNbbl09dDt2YXIgcj10LmV2ZW50VHlwZXM7Zm9yKHZhciBp
IGluIHIpbyhyW2ldLHQsaSk/dm9pZCAwOmEoIjk4IixpLGUpfX19ZnVuY3Rpb24gbyhlLHQsbil7
Yy5ldmVudE5hbWVEaXNwYXRjaENvbmZpZ3MuaGFzT3duUHJvcGVydHkobik/YSgiOTkiLG4pOnZv
aWQgMCxjLmV2ZW50TmFtZURpc3BhdGNoQ29uZmlnc1tuXT1lO3ZhciByPWUucGhhc2VkUmVnaXN0
cmF0aW9uTmFtZXM7aWYocil7Zm9yKHZhciBvIGluIHIpaWYoci5oYXNPd25Qcm9wZXJ0eShvKSl7
dmFyIHU9cltvXTtpKHUsdCxuKX1yZXR1cm4hMH1yZXR1cm4hIWUucmVnaXN0cmF0aW9uTmFtZSYm
KGkoZS5yZWdpc3RyYXRpb25OYW1lLHQsbiksITApfWZ1bmN0aW9uIGkoZSx0LG4pe2MucmVnaXN0
cmF0aW9uTmFtZU1vZHVsZXNbZV0/YSgiMTAwIixlKTp2b2lkIDAsYy5yZWdpc3RyYXRpb25OYW1l
TW9kdWxlc1tlXT10LGMucmVnaXN0cmF0aW9uTmFtZURlcGVuZGVuY2llc1tlXT10LmV2ZW50VHlw
ZXNbbl0uZGVwZW5kZW5jaWVzfXZhciBhPW4oMyksdT0obigxKSxudWxsKSxzPXt9LGM9e3BsdWdp
bnM6W10sZXZlbnROYW1lRGlzcGF0Y2hDb25maWdzOnt9LHJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVz
Ont9LHJlZ2lzdHJhdGlvbk5hbWVEZXBlbmRlbmNpZXM6e30scG9zc2libGVSZWdpc3RyYXRpb25O
YW1lczpudWxsLGluamVjdEV2ZW50UGx1Z2luT3JkZXI6ZnVuY3Rpb24oZSl7dT9hKCIxMDEiKTp2
b2lkIDAsdT1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChlKSxyKCl9LGluamVjdEV2ZW50UGx1
Z2luc0J5TmFtZTpmdW5jdGlvbihlKXt2YXIgdD0hMTtmb3IodmFyIG4gaW4gZSlpZihlLmhhc093
blByb3BlcnR5KG4pKXt2YXIgbz1lW25dO3MuaGFzT3duUHJvcGVydHkobikmJnNbbl09PT1vfHwo
c1tuXT9hKCIxMDIiLG4pOnZvaWQgMCxzW25dPW8sdD0hMCl9dCYmcigpfSxnZXRQbHVnaW5Nb2R1
bGVGb3JFdmVudDpmdW5jdGlvbihlKXt2YXIgdD1lLmRpc3BhdGNoQ29uZmlnO2lmKHQucmVnaXN0
cmF0aW9uTmFtZSlyZXR1cm4gYy5yZWdpc3RyYXRpb25OYW1lTW9kdWxlc1t0LnJlZ2lzdHJhdGlv
bk5hbWVdfHxudWxsO2lmKHZvaWQgMCE9PXQucGhhc2VkUmVnaXN0cmF0aW9uTmFtZXMpe3ZhciBu
PXQucGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM7Zm9yKHZhciByIGluIG4paWYobi5oYXNPd25Qcm9w
ZXJ0eShyKSl7dmFyIG89Yy5yZWdpc3RyYXRpb25OYW1lTW9kdWxlc1tuW3JdXTtpZihvKXJldHVy
biBvfX1yZXR1cm4gbnVsbH0sX3Jlc2V0RXZlbnRQbHVnaW5zOmZ1bmN0aW9uKCl7dT1udWxsO2Zv
cih2YXIgZSBpbiBzKXMuaGFzT3duUHJvcGVydHkoZSkmJmRlbGV0ZSBzW2VdO2MucGx1Z2lucy5s
ZW5ndGg9MDt2YXIgdD1jLmV2ZW50TmFtZURpc3BhdGNoQ29uZmlncztmb3IodmFyIG4gaW4gdCl0
Lmhhc093blByb3BlcnR5KG4pJiZkZWxldGUgdFtuXTt2YXIgcj1jLnJlZ2lzdHJhdGlvbk5hbWVN
b2R1bGVzO2Zvcih2YXIgbyBpbiByKXIuaGFzT3duUHJvcGVydHkobykmJmRlbGV0ZSByW29dfX07
ZS5leHBvcnRzPWN9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXty
ZXR1cm4idG9wTW91c2VVcCI9PT1lfHwidG9wVG91Y2hFbmQiPT09ZXx8InRvcFRvdWNoQ2FuY2Vs
Ij09PWV9ZnVuY3Rpb24gbyhlKXtyZXR1cm4idG9wTW91c2VNb3ZlIj09PWV8fCJ0b3BUb3VjaE1v
dmUiPT09ZX1mdW5jdGlvbiBpKGUpe3JldHVybiJ0b3BNb3VzZURvd24iPT09ZXx8InRvcFRvdWNo
U3RhcnQiPT09ZX1mdW5jdGlvbiBhKGUsdCxuLHIpe3ZhciBvPWUudHlwZXx8InVua25vd24tZXZl
bnQiO2UuY3VycmVudFRhcmdldD15LmdldE5vZGVGcm9tSW5zdGFuY2UociksdD92Lmludm9rZUd1
YXJkZWRDYWxsYmFja1dpdGhDYXRjaChvLG4sZSk6di5pbnZva2VHdWFyZGVkQ2FsbGJhY2sobyxu
LGUpLGUuY3VycmVudFRhcmdldD1udWxsfWZ1bmN0aW9uIHUoZSx0KXt2YXIgbj1lLl9kaXNwYXRj
aExpc3RlbmVycyxyPWUuX2Rpc3BhdGNoSW5zdGFuY2VzO2lmKEFycmF5LmlzQXJyYXkobikpZm9y
KHZhciBvPTA7bzxuLmxlbmd0aCYmIWUuaXNQcm9wYWdhdGlvblN0b3BwZWQoKTtvKyspYShlLHQs
bltvXSxyW29dKTtlbHNlIG4mJmEoZSx0LG4scik7ZS5fZGlzcGF0Y2hMaXN0ZW5lcnM9bnVsbCxl
Ll9kaXNwYXRjaEluc3RhbmNlcz1udWxsfWZ1bmN0aW9uIHMoZSl7dmFyIHQ9ZS5fZGlzcGF0Y2hM
aXN0ZW5lcnMsbj1lLl9kaXNwYXRjaEluc3RhbmNlcztpZihBcnJheS5pc0FycmF5KHQpKXtmb3Io
dmFyIHI9MDtyPHQubGVuZ3RoJiYhZS5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpO3IrKylpZih0W3Jd
KGUsbltyXSkpcmV0dXJuIG5bcl19ZWxzZSBpZih0JiZ0KGUsbikpcmV0dXJuIG47cmV0dXJuIG51
bGx9ZnVuY3Rpb24gYyhlKXt2YXIgdD1zKGUpO3JldHVybiBlLl9kaXNwYXRjaEluc3RhbmNlcz1u
dWxsLGUuX2Rpc3BhdGNoTGlzdGVuZXJzPW51bGwsdH1mdW5jdGlvbiBsKGUpe3ZhciB0PWUuX2Rp
c3BhdGNoTGlzdGVuZXJzLG49ZS5fZGlzcGF0Y2hJbnN0YW5jZXM7QXJyYXkuaXNBcnJheSh0KT9o
KCIxMDMiKTp2b2lkIDAsZS5jdXJyZW50VGFyZ2V0PXQ/eS5nZXROb2RlRnJvbUluc3RhbmNlKG4p
Om51bGw7dmFyIHI9dD90KGUpOm51bGw7cmV0dXJuIGUuY3VycmVudFRhcmdldD1udWxsLGUuX2Rp
c3BhdGNoTGlzdGVuZXJzPW51bGwsZS5fZGlzcGF0Y2hJbnN0YW5jZXM9bnVsbCxyfWZ1bmN0aW9u
IHAoZSl7cmV0dXJuISFlLl9kaXNwYXRjaExpc3RlbmVyc312YXIgZCxmLGg9bigzKSx2PW4oNDEp
LG09KG4oMSksbigyKSx7aW5qZWN0Q29tcG9uZW50VHJlZTpmdW5jdGlvbihlKXtkPWV9LGluamVj
dFRyZWVUcmF2ZXJzYWw6ZnVuY3Rpb24oZSl7Zj1lfX0pLHk9e2lzRW5kaXNoOnIsaXNNb3ZlaXNo
Om8saXNTdGFydGlzaDppLGV4ZWN1dGVEaXJlY3REaXNwYXRjaDpsLGV4ZWN1dGVEaXNwYXRjaGVz
SW5PcmRlcjp1LGV4ZWN1dGVEaXNwYXRjaGVzSW5PcmRlclN0b3BBdFRydWU6YyxoYXNEaXNwYXRj
aGVzOnAsZ2V0SW5zdGFuY2VGcm9tTm9kZTpmdW5jdGlvbihlKXtyZXR1cm4gZC5nZXRJbnN0YW5j
ZUZyb21Ob2RlKGUpfSxnZXROb2RlRnJvbUluc3RhbmNlOmZ1bmN0aW9uKGUpe3JldHVybiBkLmdl
dE5vZGVGcm9tSW5zdGFuY2UoZSl9LGlzQW5jZXN0b3I6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZi5p
c0FuY2VzdG9yKGUsdCl9LGdldExvd2VzdENvbW1vbkFuY2VzdG9yOmZ1bmN0aW9uKGUsdCl7cmV0
dXJuIGYuZ2V0TG93ZXN0Q29tbW9uQW5jZXN0b3IoZSx0KX0sZ2V0UGFyZW50SW5zdGFuY2U6ZnVu
Y3Rpb24oZSl7cmV0dXJuIGYuZ2V0UGFyZW50SW5zdGFuY2UoZSl9LHRyYXZlcnNlVHdvUGhhc2U6
ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBmLnRyYXZlcnNlVHdvUGhhc2UoZSx0LG4pfSx0cmF2ZXJz
ZUVudGVyTGVhdmU6ZnVuY3Rpb24oZSx0LG4scixvKXtyZXR1cm4gZi50cmF2ZXJzZUVudGVyTGVh
dmUoZSx0LG4scixvKX0saW5qZWN0aW9uOm19O2UuZXhwb3J0cz15fSxmdW5jdGlvbihlLHQpeyJ1
c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKGUpe3ZhciB0PS9bPTpdL2csbj17Ij0iOiI9MCIsIjoiOiI9
MiJ9LHI9KCIiK2UpLnJlcGxhY2UodCxmdW5jdGlvbihlKXtyZXR1cm4gbltlXX0pO3JldHVybiIk
IityfWZ1bmN0aW9uIHIoZSl7dmFyIHQ9Lyg9MHw9MikvZyxuPXsiPTAiOiI9IiwiPTIiOiI6In0s
cj0iLiI9PT1lWzBdJiYiJCI9PT1lWzFdP2Uuc3Vic3RyaW5nKDIpOmUuc3Vic3RyaW5nKDEpO3Jl
dHVybigiIityKS5yZXBsYWNlKHQsZnVuY3Rpb24oZSl7cmV0dXJuIG5bZV19KX12YXIgbz17ZXNj
YXBlOm4sdW5lc2NhcGU6cn07ZS5leHBvcnRzPW99LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmlj
dCI7ZnVuY3Rpb24gcihlKXtudWxsIT1lLmNoZWNrZWRMaW5rJiZudWxsIT1lLnZhbHVlTGluaz91
KCI4NyIpOnZvaWQgMH1mdW5jdGlvbiBvKGUpe3IoZSksbnVsbCE9ZS52YWx1ZXx8bnVsbCE9ZS5v
bkNoYW5nZT91KCI4OCIpOnZvaWQgMH1mdW5jdGlvbiBpKGUpe3IoZSksbnVsbCE9ZS5jaGVja2Vk
fHxudWxsIT1lLm9uQ2hhbmdlP3UoIjg5Iik6dm9pZCAwfWZ1bmN0aW9uIGEoZSl7aWYoZSl7dmFy
IHQ9ZS5nZXROYW1lKCk7aWYodClyZXR1cm4iIENoZWNrIHRoZSByZW5kZXIgbWV0aG9kIG9mIGAi
K3QrImAuIn1yZXR1cm4iIn12YXIgdT1uKDMpLHM9bigxNTgpLGM9big1NSksbD1uKDE3KSxwPWMo
bC5pc1ZhbGlkRWxlbWVudCksZD0obigxKSxuKDIpLHtidXR0b246ITAsY2hlY2tib3g6ITAsaW1h
Z2U6ITAsaGlkZGVuOiEwLHJhZGlvOiEwLHJlc2V0OiEwLHN1Ym1pdDohMH0pLGY9e3ZhbHVlOmZ1
bmN0aW9uKGUsdCxuKXtyZXR1cm4hZVt0XXx8ZFtlLnR5cGVdfHxlLm9uQ2hhbmdlfHxlLnJlYWRP
bmx5fHxlLmRpc2FibGVkP251bGw6bmV3IEVycm9yKCJZb3UgcHJvdmlkZWQgYSBgdmFsdWVgIHBy
b3AgdG8gYSBmb3JtIGZpZWxkIHdpdGhvdXQgYW4gYG9uQ2hhbmdlYCBoYW5kbGVyLiBUaGlzIHdp
bGwgcmVuZGVyIGEgcmVhZC1vbmx5IGZpZWxkLiBJZiB0aGUgZmllbGQgc2hvdWxkIGJlIG11dGFi
bGUgdXNlIGBkZWZhdWx0VmFsdWVgLiBPdGhlcndpc2UsIHNldCBlaXRoZXIgYG9uQ2hhbmdlYCBv
ciBgcmVhZE9ubHlgLiIpOworfSxjaGVja2VkOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4hZVt0XXx8
ZS5vbkNoYW5nZXx8ZS5yZWFkT25seXx8ZS5kaXNhYmxlZD9udWxsOm5ldyBFcnJvcigiWW91IHBy
b3ZpZGVkIGEgYGNoZWNrZWRgIHByb3AgdG8gYSBmb3JtIGZpZWxkIHdpdGhvdXQgYW4gYG9uQ2hh
bmdlYCBoYW5kbGVyLiBUaGlzIHdpbGwgcmVuZGVyIGEgcmVhZC1vbmx5IGZpZWxkLiBJZiB0aGUg
ZmllbGQgc2hvdWxkIGJlIG11dGFibGUgdXNlIGBkZWZhdWx0Q2hlY2tlZGAuIE90aGVyd2lzZSwg
c2V0IGVpdGhlciBgb25DaGFuZ2VgIG9yIGByZWFkT25seWAuIil9LG9uQ2hhbmdlOnAuZnVuY30s
aD17fSx2PXtjaGVja1Byb3BUeXBlczpmdW5jdGlvbihlLHQsbil7Zm9yKHZhciByIGluIGYpe2lm
KGYuaGFzT3duUHJvcGVydHkocikpdmFyIG89ZltyXSh0LHIsZSwicHJvcCIsbnVsbCxzKTtpZihv
IGluc3RhbmNlb2YgRXJyb3ImJiEoby5tZXNzYWdlIGluIGgpKXtoW28ubWVzc2FnZV09ITA7YShu
KX19fSxnZXRWYWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gZS52YWx1ZUxpbms/KG8oZSksZS52YWx1
ZUxpbmsudmFsdWUpOmUudmFsdWV9LGdldENoZWNrZWQ6ZnVuY3Rpb24oZSl7cmV0dXJuIGUuY2hl
Y2tlZExpbms/KGkoZSksZS5jaGVja2VkTGluay52YWx1ZSk6ZS5jaGVja2VkfSxleGVjdXRlT25D
aGFuZ2U6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS52YWx1ZUxpbms/KG8oZSksZS52YWx1ZUxpbmsu
cmVxdWVzdENoYW5nZSh0LnRhcmdldC52YWx1ZSkpOmUuY2hlY2tlZExpbms/KGkoZSksZS5jaGVj
a2VkTGluay5yZXF1ZXN0Q2hhbmdlKHQudGFyZ2V0LmNoZWNrZWQpKTplLm9uQ2hhbmdlP2Uub25D
aGFuZ2UuY2FsbCh2b2lkIDAsdCk6dm9pZCAwfX07ZS5leHBvcnRzPXZ9LGZ1bmN0aW9uKGUsdCxu
KXsidXNlIHN0cmljdCI7dmFyIHI9bigzKSxvPShuKDEpLCExKSxpPXtyZXBsYWNlTm9kZVdpdGhN
YXJrdXA6bnVsbCxwcm9jZXNzQ2hpbGRyZW5VcGRhdGVzOm51bGwsaW5qZWN0aW9uOntpbmplY3RF
bnZpcm9ubWVudDpmdW5jdGlvbihlKXtvP3IoIjEwNCIpOnZvaWQgMCxpLnJlcGxhY2VOb2RlV2l0
aE1hcmt1cD1lLnJlcGxhY2VOb2RlV2l0aE1hcmt1cCxpLnByb2Nlc3NDaGlsZHJlblVwZGF0ZXM9
ZS5wcm9jZXNzQ2hpbGRyZW5VcGRhdGVzLG89ITB9fX07ZS5leHBvcnRzPWl9LGZ1bmN0aW9uKGUs
dCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQsbil7dHJ5e3Qobil9Y2F0Y2gocil7bnVs
bD09PW8mJihvPXIpfX12YXIgbz1udWxsLGk9e2ludm9rZUd1YXJkZWRDYWxsYmFjazpyLGludm9r
ZUd1YXJkZWRDYWxsYmFja1dpdGhDYXRjaDpyLHJldGhyb3dDYXVnaHRFcnJvcjpmdW5jdGlvbigp
e2lmKG8pe3ZhciBlPW87dGhyb3cgbz1udWxsLGV9fX07ZS5leHBvcnRzPWl9LGZ1bmN0aW9uKGUs
dCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtzLmVucXVldWVVcGRhdGUoZSl9ZnVuY3Rp
b24gbyhlKXt2YXIgdD10eXBlb2YgZTtpZigib2JqZWN0IiE9PXQpcmV0dXJuIHQ7dmFyIG49ZS5j
b25zdHJ1Y3RvciYmZS5jb25zdHJ1Y3Rvci5uYW1lfHx0LHI9T2JqZWN0LmtleXMoZSk7cmV0dXJu
IHIubGVuZ3RoPjAmJnIubGVuZ3RoPDIwP24rIiAoa2V5czogIityLmpvaW4oIiwgIikrIikiOm59
ZnVuY3Rpb24gaShlLHQpe3ZhciBuPXUuZ2V0KGUpO2lmKCFuKXtyZXR1cm4gbnVsbH1yZXR1cm4g
bn12YXIgYT1uKDMpLHU9KG4oMTEpLG4oMjEpKSxzPShuKDgpLG4oOSkpLGM9KG4oMSksbigyKSx7
aXNNb3VudGVkOmZ1bmN0aW9uKGUpe3ZhciB0PXUuZ2V0KGUpO3JldHVybiEhdCYmISF0Ll9yZW5k
ZXJlZENvbXBvbmVudH0sZW5xdWV1ZUNhbGxiYWNrOmZ1bmN0aW9uKGUsdCxuKXtjLnZhbGlkYXRl
Q2FsbGJhY2sodCxuKTt2YXIgbz1pKGUpO3JldHVybiBvPyhvLl9wZW5kaW5nQ2FsbGJhY2tzP28u
X3BlbmRpbmdDYWxsYmFja3MucHVzaCh0KTpvLl9wZW5kaW5nQ2FsbGJhY2tzPVt0XSx2b2lkIHIo
bykpOm51bGx9LGVucXVldWVDYWxsYmFja0ludGVybmFsOmZ1bmN0aW9uKGUsdCl7ZS5fcGVuZGlu
Z0NhbGxiYWNrcz9lLl9wZW5kaW5nQ2FsbGJhY2tzLnB1c2godCk6ZS5fcGVuZGluZ0NhbGxiYWNr
cz1bdF0scihlKX0sZW5xdWV1ZUZvcmNlVXBkYXRlOmZ1bmN0aW9uKGUpe3ZhciB0PWkoZSwiZm9y
Y2VVcGRhdGUiKTt0JiYodC5fcGVuZGluZ0ZvcmNlVXBkYXRlPSEwLHIodCkpfSxlbnF1ZXVlUmVw
bGFjZVN0YXRlOmZ1bmN0aW9uKGUsdCxuKXt2YXIgbz1pKGUsInJlcGxhY2VTdGF0ZSIpO28mJihv
Ll9wZW5kaW5nU3RhdGVRdWV1ZT1bdF0sby5fcGVuZGluZ1JlcGxhY2VTdGF0ZT0hMCx2b2lkIDAh
PT1uJiZudWxsIT09biYmKGMudmFsaWRhdGVDYWxsYmFjayhuLCJyZXBsYWNlU3RhdGUiKSxvLl9w
ZW5kaW5nQ2FsbGJhY2tzP28uX3BlbmRpbmdDYWxsYmFja3MucHVzaChuKTpvLl9wZW5kaW5nQ2Fs
bGJhY2tzPVtuXSkscihvKSl9LGVucXVldWVTZXRTdGF0ZTpmdW5jdGlvbihlLHQpe3ZhciBuPWko
ZSwic2V0U3RhdGUiKTtpZihuKXt2YXIgbz1uLl9wZW5kaW5nU3RhdGVRdWV1ZXx8KG4uX3BlbmRp
bmdTdGF0ZVF1ZXVlPVtdKTtvLnB1c2godCkscihuKX19LGVucXVldWVFbGVtZW50SW50ZXJuYWw6
ZnVuY3Rpb24oZSx0LG4pe2UuX3BlbmRpbmdFbGVtZW50PXQsZS5fY29udGV4dD1uLHIoZSl9LHZh
bGlkYXRlQ2FsbGJhY2s6ZnVuY3Rpb24oZSx0KXtlJiYiZnVuY3Rpb24iIT10eXBlb2YgZT9hKCIx
MjIiLHQsbyhlKSk6dm9pZCAwfX0pO2UuZXhwb3J0cz1jfSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3Ry
aWN0Ijt2YXIgbj1mdW5jdGlvbihlKXtyZXR1cm4idW5kZWZpbmVkIiE9dHlwZW9mIE1TQXBwJiZN
U0FwcC5leGVjVW5zYWZlTG9jYWxGdW5jdGlvbj9mdW5jdGlvbih0LG4scixvKXtNU0FwcC5leGVj
VW5zYWZlTG9jYWxGdW5jdGlvbihmdW5jdGlvbigpe3JldHVybiBlKHQsbixyLG8pfSl9OmV9O2Uu
ZXhwb3J0cz1ufSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKGUpe3ZhciB0
LG49ZS5rZXlDb2RlO3JldHVybiJjaGFyQ29kZSJpbiBlPyh0PWUuY2hhckNvZGUsMD09PXQmJjEz
PT09biYmKHQ9MTMpKTp0PW4sdD49MzJ8fDEzPT09dD90OjB9ZS5leHBvcnRzPW59LGZ1bmN0aW9u
KGUsdCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4oZSl7dmFyIHQ9dGhpcyxuPXQubmF0aXZlRXZl
bnQ7aWYobi5nZXRNb2RpZmllclN0YXRlKXJldHVybiBuLmdldE1vZGlmaWVyU3RhdGUoZSk7dmFy
IHI9b1tlXTtyZXR1cm4hIXImJiEhbltyXX1mdW5jdGlvbiByKGUpe3JldHVybiBufXZhciBvPXtB
bHQ6ImFsdEtleSIsQ29udHJvbDoiY3RybEtleSIsTWV0YToibWV0YUtleSIsU2hpZnQ6InNoaWZ0
S2V5In07ZS5leHBvcnRzPXJ9LGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4o
ZSl7dmFyIHQ9ZS50YXJnZXR8fGUuc3JjRWxlbWVudHx8d2luZG93O3JldHVybiB0LmNvcnJlc3Bv
bmRpbmdVc2VFbGVtZW50JiYodD10LmNvcnJlc3BvbmRpbmdVc2VFbGVtZW50KSwzPT09dC5ub2Rl
VHlwZT90LnBhcmVudE5vZGU6dH1lLmV4cG9ydHM9bn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3Ry
aWN0IjtmdW5jdGlvbiByKGUsdCl7aWYoIWkuY2FuVXNlRE9NfHx0JiYhKCJhZGRFdmVudExpc3Rl
bmVyImluIGRvY3VtZW50KSlyZXR1cm4hMTt2YXIgbj0ib24iK2Uscj1uIGluIGRvY3VtZW50O2lm
KCFyKXt2YXIgYT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTthLnNldEF0dHJpYnV0ZShu
LCJyZXR1cm47Iikscj0iZnVuY3Rpb24iPT10eXBlb2YgYVtuXX1yZXR1cm4hciYmbyYmIndoZWVs
Ij09PWUmJihyPWRvY3VtZW50LmltcGxlbWVudGF0aW9uLmhhc0ZlYXR1cmUoIkV2ZW50cy53aGVl
bCIsIjMuMCIpKSxyfXZhciBvLGk9big2KTtpLmNhblVzZURPTSYmKG89ZG9jdW1lbnQuaW1wbGVt
ZW50YXRpb24mJmRvY3VtZW50LmltcGxlbWVudGF0aW9uLmhhc0ZlYXR1cmUmJmRvY3VtZW50Lmlt
cGxlbWVudGF0aW9uLmhhc0ZlYXR1cmUoIiIsIiIpIT09ITApLGUuZXhwb3J0cz1yfSxmdW5jdGlv
bihlLHQpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKGUsdCl7dmFyIG49bnVsbD09PWV8fGU9PT0h
MSxyPW51bGw9PT10fHx0PT09ITE7aWYobnx8cilyZXR1cm4gbj09PXI7dmFyIG89dHlwZW9mIGUs
aT10eXBlb2YgdDtyZXR1cm4ic3RyaW5nIj09PW98fCJudW1iZXIiPT09bz8ic3RyaW5nIj09PWl8
fCJudW1iZXIiPT09aToib2JqZWN0Ij09PWkmJmUudHlwZT09PXQudHlwZSYmZS5rZXk9PT10Lmtl
eX1lLmV4cG9ydHM9bn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj0obig0KSxu
KDcpKSxvPShuKDIpLHIpO2UuZXhwb3J0cz1vfSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0Ijtm
dW5jdGlvbiBuKGUpeyJ1bmRlZmluZWQiIT10eXBlb2YgY29uc29sZSYmImZ1bmN0aW9uIj09dHlw
ZW9mIGNvbnNvbGUuZXJyb3ImJmNvbnNvbGUuZXJyb3IoZSk7dHJ5e3Rocm93IG5ldyBFcnJvcihl
KX1jYXRjaCh0KXt9fXQuX19lc01vZHVsZT0hMCx0LmRlZmF1bHQ9bn0sZnVuY3Rpb24oZSx0LG4p
eyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDcpLG89e2xpc3RlbjpmdW5jdGlvbihlLHQsbil7cmV0dXJu
IGUuYWRkRXZlbnRMaXN0ZW5lcj8oZS5hZGRFdmVudExpc3RlbmVyKHQsbiwhMSkse3JlbW92ZTpm
dW5jdGlvbigpe2UucmVtb3ZlRXZlbnRMaXN0ZW5lcih0LG4sITEpfX0pOmUuYXR0YWNoRXZlbnQ/
KGUuYXR0YWNoRXZlbnQoIm9uIit0LG4pLHtyZW1vdmU6ZnVuY3Rpb24oKXtlLmRldGFjaEV2ZW50
KCJvbiIrdCxuKX19KTp2b2lkIDB9LGNhcHR1cmU6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBlLmFk
ZEV2ZW50TGlzdGVuZXI/KGUuYWRkRXZlbnRMaXN0ZW5lcih0LG4sITApLHtyZW1vdmU6ZnVuY3Rp
b24oKXtlLnJlbW92ZUV2ZW50TGlzdGVuZXIodCxuLCEwKX19KTp7cmVtb3ZlOnJ9fSxyZWdpc3Rl
ckRlZmF1bHQ6ZnVuY3Rpb24oKXt9fTtlLmV4cG9ydHM9b30sZnVuY3Rpb24oZSx0KXsidXNlIHN0
cmljdCI7ZnVuY3Rpb24gbihlKXt0cnl7ZS5mb2N1cygpfWNhdGNoKHQpe319ZS5leHBvcnRzPW59
LGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4oZSl7aWYoZT1lfHwoInVuZGVm
aW5lZCIhPXR5cGVvZiBkb2N1bWVudD9kb2N1bWVudDp2b2lkIDApLCJ1bmRlZmluZWQiPT10eXBl
b2YgZSlyZXR1cm4gbnVsbDt0cnl7cmV0dXJuIGUuYWN0aXZlRWxlbWVudHx8ZS5ib2R5fWNhdGNo
KHQpe3JldHVybiBlLmJvZHl9fWUuZXhwb3J0cz1ufSxmdW5jdGlvbihlLHQsbil7dmFyIHI9bigx
MTgpLG89ci5TeW1ib2w7ZS5leHBvcnRzPW99LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7
dmFyIHI9bigxMjIpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdD0hMTtyZXR1cm4gcihlLHQp
fX0sZnVuY3Rpb24oZSx0LG4pe2UuZXhwb3J0cz1uKDEyMSkoKX0sZnVuY3Rpb24oZSx0KXsidXNl
IHN0cmljdCI7dmFyIG49IlNFQ1JFVF9ET19OT1RfUEFTU19USElTX09SX1lPVV9XSUxMX0JFX0ZJ
UkVEIjtlLmV4cG9ydHM9bn0sZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbihl
LHQpe3JldHVybiBlK3QuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkrdC5zdWJzdHJpbmcoMSl9dmFy
IHI9e2FuaW1hdGlvbkl0ZXJhdGlvbkNvdW50OiEwLGJvcmRlckltYWdlT3V0c2V0OiEwLGJvcmRl
ckltYWdlU2xpY2U6ITAsYm9yZGVySW1hZ2VXaWR0aDohMCxib3hGbGV4OiEwLGJveEZsZXhHcm91
cDohMCxib3hPcmRpbmFsR3JvdXA6ITAsY29sdW1uQ291bnQ6ITAsZmxleDohMCxmbGV4R3Jvdzoh
MCxmbGV4UG9zaXRpdmU6ITAsZmxleFNocmluazohMCxmbGV4TmVnYXRpdmU6ITAsZmxleE9yZGVy
OiEwLGdyaWRSb3c6ITAsZ3JpZFJvd0VuZDohMCxncmlkUm93U3BhbjohMCxncmlkUm93U3RhcnQ6
ITAsZ3JpZENvbHVtbjohMCxncmlkQ29sdW1uRW5kOiEwLGdyaWRDb2x1bW5TcGFuOiEwLGdyaWRD
b2x1bW5TdGFydDohMCxmb250V2VpZ2h0OiEwLGxpbmVDbGFtcDohMCxsaW5lSGVpZ2h0OiEwLG9w
YWNpdHk6ITAsb3JkZXI6ITAsb3JwaGFuczohMCx0YWJTaXplOiEwLHdpZG93czohMCx6SW5kZXg6
ITAsem9vbTohMCxmaWxsT3BhY2l0eTohMCxmbG9vZE9wYWNpdHk6ITAsc3RvcE9wYWNpdHk6ITAs
c3Ryb2tlRGFzaGFycmF5OiEwLHN0cm9rZURhc2hvZmZzZXQ6ITAsc3Ryb2tlTWl0ZXJsaW1pdDoh
MCxzdHJva2VPcGFjaXR5OiEwLHN0cm9rZVdpZHRoOiEwfSxvPVsiV2Via2l0IiwibXMiLCJNb3oi
LCJPIl07T2JqZWN0LmtleXMocikuZm9yRWFjaChmdW5jdGlvbihlKXtvLmZvckVhY2goZnVuY3Rp
b24odCl7cltuKHQsZSldPXJbZV19KX0pO3ZhciBpPXtiYWNrZ3JvdW5kOntiYWNrZ3JvdW5kQXR0
YWNobWVudDohMCxiYWNrZ3JvdW5kQ29sb3I6ITAsYmFja2dyb3VuZEltYWdlOiEwLGJhY2tncm91
bmRQb3NpdGlvblg6ITAsYmFja2dyb3VuZFBvc2l0aW9uWTohMCxiYWNrZ3JvdW5kUmVwZWF0OiEw
fSxiYWNrZ3JvdW5kUG9zaXRpb246e2JhY2tncm91bmRQb3NpdGlvblg6ITAsYmFja2dyb3VuZFBv
c2l0aW9uWTohMH0sYm9yZGVyOntib3JkZXJXaWR0aDohMCxib3JkZXJTdHlsZTohMCxib3JkZXJD
b2xvcjohMH0sYm9yZGVyQm90dG9tOntib3JkZXJCb3R0b21XaWR0aDohMCxib3JkZXJCb3R0b21T
dHlsZTohMCxib3JkZXJCb3R0b21Db2xvcjohMH0sYm9yZGVyTGVmdDp7Ym9yZGVyTGVmdFdpZHRo
OiEwLGJvcmRlckxlZnRTdHlsZTohMCxib3JkZXJMZWZ0Q29sb3I6ITB9LGJvcmRlclJpZ2h0Onti
b3JkZXJSaWdodFdpZHRoOiEwLGJvcmRlclJpZ2h0U3R5bGU6ITAsYm9yZGVyUmlnaHRDb2xvcjoh
MH0sYm9yZGVyVG9wOntib3JkZXJUb3BXaWR0aDohMCxib3JkZXJUb3BTdHlsZTohMCxib3JkZXJU
b3BDb2xvcjohMH0sZm9udDp7Zm9udFN0eWxlOiEwLGZvbnRWYXJpYW50OiEwLGZvbnRXZWlnaHQ6
ITAsZm9udFNpemU6ITAsbGluZUhlaWdodDohMCxmb250RmFtaWx5OiEwfSxvdXRsaW5lOntvdXRs
aW5lV2lkdGg6ITAsb3V0bGluZVN0eWxlOiEwLG91dGxpbmVDb2xvcjohMH19LGE9e2lzVW5pdGxl
c3NOdW1iZXI6cixzaG9ydGhhbmRQcm9wZXJ0eUV4cGFuc2lvbnM6aX07ZS5leHBvcnRzPWF9LGZ1
bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQpe2lmKCEoZSBpbnN0YW5j
ZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5j
dGlvbiIpfXZhciBvPW4oMyksaT1uKDEzKSxhPShuKDEpLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSh0
KXtyKHRoaXMsZSksdGhpcy5fY2FsbGJhY2tzPW51bGwsdGhpcy5fY29udGV4dHM9bnVsbCx0aGlz
Ll9hcmc9dH1yZXR1cm4gZS5wcm90b3R5cGUuZW5xdWV1ZT1mdW5jdGlvbihlLHQpe3RoaXMuX2Nh
bGxiYWNrcz10aGlzLl9jYWxsYmFja3N8fFtdLHRoaXMuX2NhbGxiYWNrcy5wdXNoKGUpLHRoaXMu
X2NvbnRleHRzPXRoaXMuX2NvbnRleHRzfHxbXSx0aGlzLl9jb250ZXh0cy5wdXNoKHQpfSxlLnBy
b3RvdHlwZS5ub3RpZnlBbGw9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLl9jYWxsYmFja3MsdD10aGlz
Ll9jb250ZXh0cyxuPXRoaXMuX2FyZztpZihlJiZ0KXtlLmxlbmd0aCE9PXQubGVuZ3RoP28oIjI0
Iik6dm9pZCAwLHRoaXMuX2NhbGxiYWNrcz1udWxsLHRoaXMuX2NvbnRleHRzPW51bGw7Zm9yKHZh
ciByPTA7cjxlLmxlbmd0aDtyKyspZVtyXS5jYWxsKHRbcl0sbik7ZS5sZW5ndGg9MCx0Lmxlbmd0
aD0wfX0sZS5wcm90b3R5cGUuY2hlY2twb2ludD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9jYWxs
YmFja3M/dGhpcy5fY2FsbGJhY2tzLmxlbmd0aDowfSxlLnByb3RvdHlwZS5yb2xsYmFjaz1mdW5j
dGlvbihlKXt0aGlzLl9jYWxsYmFja3MmJnRoaXMuX2NvbnRleHRzJiYodGhpcy5fY2FsbGJhY2tz
Lmxlbmd0aD1lLHRoaXMuX2NvbnRleHRzLmxlbmd0aD1lKX0sZS5wcm90b3R5cGUucmVzZXQ9ZnVu
Y3Rpb24oKXt0aGlzLl9jYWxsYmFja3M9bnVsbCx0aGlzLl9jb250ZXh0cz1udWxsfSxlLnByb3Rv
dHlwZS5kZXN0cnVjdG9yPWZ1bmN0aW9uKCl7dGhpcy5yZXNldCgpfSxlfSgpKTtlLmV4cG9ydHM9
aS5hZGRQb29saW5nVG8oYSl9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24g
cihlKXtyZXR1cm4hIWMuaGFzT3duUHJvcGVydHkoZSl8fCFzLmhhc093blByb3BlcnR5KGUpJiYo
dS50ZXN0KGUpPyhjW2VdPSEwLCEwKTooc1tlXT0hMCwhMSkpfWZ1bmN0aW9uIG8oZSx0KXtyZXR1
cm4gbnVsbD09dHx8ZS5oYXNCb29sZWFuVmFsdWUmJiF0fHxlLmhhc051bWVyaWNWYWx1ZSYmaXNO
YU4odCl8fGUuaGFzUG9zaXRpdmVOdW1lcmljVmFsdWUmJnQ8MXx8ZS5oYXNPdmVybG9hZGVkQm9v
bGVhblZhbHVlJiZ0PT09ITF9dmFyIGk9bigxNSksYT0obig1KSxuKDgpLG4oMTg1KSksdT0obigy
KSxuZXcgUmVnRXhwKCJeWyIraS5BVFRSSUJVVEVfTkFNRV9TVEFSVF9DSEFSKyJdWyIraS5BVFRS
SUJVVEVfTkFNRV9DSEFSKyJdKiQiKSkscz17fSxjPXt9LGw9e2NyZWF0ZU1hcmt1cEZvcklEOmZ1
bmN0aW9uKGUpe3JldHVybiBpLklEX0FUVFJJQlVURV9OQU1FKyI9IithKGUpfSxzZXRBdHRyaWJ1
dGVGb3JJRDpmdW5jdGlvbihlLHQpe2Uuc2V0QXR0cmlidXRlKGkuSURfQVRUUklCVVRFX05BTUUs
dCl9LGNyZWF0ZU1hcmt1cEZvclJvb3Q6ZnVuY3Rpb24oKXtyZXR1cm4gaS5ST09UX0FUVFJJQlVU
RV9OQU1FKyc9IiInfSxzZXRBdHRyaWJ1dGVGb3JSb290OmZ1bmN0aW9uKGUpe2Uuc2V0QXR0cmli
dXRlKGkuUk9PVF9BVFRSSUJVVEVfTkFNRSwiIil9LGNyZWF0ZU1hcmt1cEZvclByb3BlcnR5OmZ1
bmN0aW9uKGUsdCl7dmFyIG49aS5wcm9wZXJ0aWVzLmhhc093blByb3BlcnR5KGUpP2kucHJvcGVy
dGllc1tlXTpudWxsO2lmKG4pe2lmKG8obix0KSlyZXR1cm4iIjt2YXIgcj1uLmF0dHJpYnV0ZU5h
bWU7cmV0dXJuIG4uaGFzQm9vbGVhblZhbHVlfHxuLmhhc092ZXJsb2FkZWRCb29sZWFuVmFsdWUm
JnQ9PT0hMD9yKyc9IiInOnIrIj0iK2EodCl9cmV0dXJuIGkuaXNDdXN0b21BdHRyaWJ1dGUoZSk/
bnVsbD09dD8iIjplKyI9IithKHQpOm51bGx9LGNyZWF0ZU1hcmt1cEZvckN1c3RvbUF0dHJpYnV0
ZTpmdW5jdGlvbihlLHQpe3JldHVybiByKGUpJiZudWxsIT10P2UrIj0iK2EodCk6IiJ9LHNldFZh
bHVlRm9yUHJvcGVydHk6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPWkucHJvcGVydGllcy5oYXNPd25Q
cm9wZXJ0eSh0KT9pLnByb3BlcnRpZXNbdF06bnVsbDtpZihyKXt2YXIgYT1yLm11dGF0aW9uTWV0
aG9kO2lmKGEpYShlLG4pO2Vsc2V7aWYobyhyLG4pKXJldHVybiB2b2lkIHRoaXMuZGVsZXRlVmFs
dWVGb3JQcm9wZXJ0eShlLHQpO2lmKHIubXVzdFVzZVByb3BlcnR5KWVbci5wcm9wZXJ0eU5hbWVd
PW47ZWxzZXt2YXIgdT1yLmF0dHJpYnV0ZU5hbWUscz1yLmF0dHJpYnV0ZU5hbWVzcGFjZTtzP2Uu
c2V0QXR0cmlidXRlTlMocyx1LCIiK24pOnIuaGFzQm9vbGVhblZhbHVlfHxyLmhhc092ZXJsb2Fk
ZWRCb29sZWFuVmFsdWUmJm49PT0hMD9lLnNldEF0dHJpYnV0ZSh1LCIiKTplLnNldEF0dHJpYnV0
ZSh1LCIiK24pfX19ZWxzZSBpZihpLmlzQ3VzdG9tQXR0cmlidXRlKHQpKXJldHVybiB2b2lkIGwu
c2V0VmFsdWVGb3JBdHRyaWJ1dGUoZSx0LG4pfSxzZXRWYWx1ZUZvckF0dHJpYnV0ZTpmdW5jdGlv
bihlLHQsbil7aWYocih0KSl7bnVsbD09bj9lLnJlbW92ZUF0dHJpYnV0ZSh0KTplLnNldEF0dHJp
YnV0ZSh0LCIiK24pfX0sZGVsZXRlVmFsdWVGb3JBdHRyaWJ1dGU6ZnVuY3Rpb24oZSx0KXtlLnJl
bW92ZUF0dHJpYnV0ZSh0KX0sZGVsZXRlVmFsdWVGb3JQcm9wZXJ0eTpmdW5jdGlvbihlLHQpe3Zh
ciBuPWkucHJvcGVydGllcy5oYXNPd25Qcm9wZXJ0eSh0KT9pLnByb3BlcnRpZXNbdF06bnVsbDtp
ZihuKXt2YXIgcj1uLm11dGF0aW9uTWV0aG9kO2lmKHIpcihlLHZvaWQgMCk7ZWxzZSBpZihuLm11
c3RVc2VQcm9wZXJ0eSl7dmFyIG89bi5wcm9wZXJ0eU5hbWU7bi5oYXNCb29sZWFuVmFsdWU/ZVtv
XT0hMTplW29dPSIifWVsc2UgZS5yZW1vdmVBdHRyaWJ1dGUobi5hdHRyaWJ1dGVOYW1lKX1lbHNl
IGkuaXNDdXN0b21BdHRyaWJ1dGUodCkmJmUucmVtb3ZlQXR0cmlidXRlKHQpfX07ZS5leHBvcnRz
PWx9LGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO3ZhciBuPXtoYXNDYWNoZWRDaGlsZE5vZGVz
OjF9O2UuZXhwb3J0cz1ufSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIo
KXtpZih0aGlzLl9yb290Tm9kZUlEJiZ0aGlzLl93cmFwcGVyU3RhdGUucGVuZGluZ1VwZGF0ZSl7
dGhpcy5fd3JhcHBlclN0YXRlLnBlbmRpbmdVcGRhdGU9ITE7dmFyIGU9dGhpcy5fY3VycmVudEVs
ZW1lbnQucHJvcHMsdD11LmdldFZhbHVlKGUpO251bGwhPXQmJm8odGhpcyxCb29sZWFuKGUubXVs
dGlwbGUpLHQpfX1mdW5jdGlvbiBvKGUsdCxuKXt2YXIgcixvLGk9cy5nZXROb2RlRnJvbUluc3Rh
bmNlKGUpLm9wdGlvbnM7aWYodCl7Zm9yKHI9e30sbz0wO288bi5sZW5ndGg7bysrKXJbIiIrbltv
XV09ITA7Zm9yKG89MDtvPGkubGVuZ3RoO28rKyl7dmFyIGE9ci5oYXNPd25Qcm9wZXJ0eShpW29d
LnZhbHVlKTtpW29dLnNlbGVjdGVkIT09YSYmKGlbb10uc2VsZWN0ZWQ9YSl9fWVsc2V7Zm9yKHI9
IiIrbixvPTA7bzxpLmxlbmd0aDtvKyspaWYoaVtvXS52YWx1ZT09PXIpcmV0dXJuIHZvaWQoaVtv
XS5zZWxlY3RlZD0hMCk7aS5sZW5ndGgmJihpWzBdLnNlbGVjdGVkPSEwKX19ZnVuY3Rpb24gaShl
KXt2YXIgdD10aGlzLl9jdXJyZW50RWxlbWVudC5wcm9wcyxuPXUuZXhlY3V0ZU9uQ2hhbmdlKHQs
ZSk7cmV0dXJuIHRoaXMuX3Jvb3ROb2RlSUQmJih0aGlzLl93cmFwcGVyU3RhdGUucGVuZGluZ1Vw
ZGF0ZT0hMCksYy5hc2FwKHIsdGhpcyksbn12YXIgYT1uKDQpLHU9bigzOSkscz1uKDUpLGM9big5
KSxsPShuKDIpLCExKSxwPXtnZXRIb3N0UHJvcHM6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gYSh7fSx0
LHtvbkNoYW5nZTplLl93cmFwcGVyU3RhdGUub25DaGFuZ2UsdmFsdWU6dm9pZCAwfSl9LG1vdW50
V3JhcHBlcjpmdW5jdGlvbihlLHQpe3ZhciBuPXUuZ2V0VmFsdWUodCk7ZS5fd3JhcHBlclN0YXRl
PXtwZW5kaW5nVXBkYXRlOiExLGluaXRpYWxWYWx1ZTpudWxsIT1uP246dC5kZWZhdWx0VmFsdWUs
bGlzdGVuZXJzOm51bGwsb25DaGFuZ2U6aS5iaW5kKGUpLHdhc011bHRpcGxlOkJvb2xlYW4odC5t
dWx0aXBsZSl9LHZvaWQgMD09PXQudmFsdWV8fHZvaWQgMD09PXQuZGVmYXVsdFZhbHVlfHxsfHwo
bD0hMCl9LGdldFNlbGVjdFZhbHVlQ29udGV4dDpmdW5jdGlvbihlKXtyZXR1cm4gZS5fd3JhcHBl
clN0YXRlLmluaXRpYWxWYWx1ZX0scG9zdFVwZGF0ZVdyYXBwZXI6ZnVuY3Rpb24oZSl7dmFyIHQ9
ZS5fY3VycmVudEVsZW1lbnQucHJvcHM7ZS5fd3JhcHBlclN0YXRlLmluaXRpYWxWYWx1ZT12b2lk
IDA7dmFyIG49ZS5fd3JhcHBlclN0YXRlLndhc011bHRpcGxlO2UuX3dyYXBwZXJTdGF0ZS53YXNN
dWx0aXBsZT1Cb29sZWFuKHQubXVsdGlwbGUpO3ZhciByPXUuZ2V0VmFsdWUodCk7bnVsbCE9cj8o
ZS5fd3JhcHBlclN0YXRlLnBlbmRpbmdVcGRhdGU9ITEsbyhlLEJvb2xlYW4odC5tdWx0aXBsZSks
cikpOm4hPT1Cb29sZWFuKHQubXVsdGlwbGUpJiYobnVsbCE9dC5kZWZhdWx0VmFsdWU/byhlLEJv
b2xlYW4odC5tdWx0aXBsZSksdC5kZWZhdWx0VmFsdWUpOm8oZSxCb29sZWFuKHQubXVsdGlwbGUp
LHQubXVsdGlwbGU/W106IiIpKX19O2UuZXhwb3J0cz1wfSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3Ry
aWN0Ijt2YXIgbixyPXtpbmplY3RFbXB0eUNvbXBvbmVudEZhY3Rvcnk6ZnVuY3Rpb24oZSl7bj1l
fX0sbz17Y3JlYXRlOmZ1bmN0aW9uKGUpe3JldHVybiBuKGUpfX07by5pbmplY3Rpb249cixlLmV4
cG9ydHM9b30sZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7dmFyIG49e2xvZ1RvcExldmVsUmVu
ZGVyczohMX07ZS5leHBvcnRzPW59LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rp
b24gcihlKXtyZXR1cm4gdT92b2lkIDA6YSgiMTExIixlLnR5cGUpLG5ldyB1KGUpfWZ1bmN0aW9u
IG8oZSl7cmV0dXJuIG5ldyBzKGUpfWZ1bmN0aW9uIGkoZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiBz
fXZhciBhPW4oMyksdT0obigxKSxudWxsKSxzPW51bGwsYz17aW5qZWN0R2VuZXJpY0NvbXBvbmVu
dENsYXNzOmZ1bmN0aW9uKGUpe3U9ZX0saW5qZWN0VGV4dENvbXBvbmVudENsYXNzOmZ1bmN0aW9u
KGUpe3M9ZX19LGw9e2NyZWF0ZUludGVybmFsQ29tcG9uZW50OnIsY3JlYXRlSW5zdGFuY2VGb3JU
ZXh0Om8saXNUZXh0Q29tcG9uZW50OmksaW5qZWN0aW9uOmN9O2UuZXhwb3J0cz1sfSxmdW5jdGlv
bihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIGkoZG9jdW1lbnQuZG9j
dW1lbnRFbGVtZW50LGUpfXZhciBvPW4oMTQ1KSxpPW4oMTAwKSxhPW4oNTIpLHU9big1Mykscz17
aGFzU2VsZWN0aW9uQ2FwYWJpbGl0aWVzOmZ1bmN0aW9uKGUpe3ZhciB0PWUmJmUubm9kZU5hbWUm
JmUubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1cm4gdCYmKCJpbnB1dCI9PT10JiYidGV4dCI9
PT1lLnR5cGV8fCJ0ZXh0YXJlYSI9PT10fHwidHJ1ZSI9PT1lLmNvbnRlbnRFZGl0YWJsZSl9LGdl
dFNlbGVjdGlvbkluZm9ybWF0aW9uOmZ1bmN0aW9uKCl7dmFyIGU9dSgpO3JldHVybntmb2N1c2Vk
RWxlbTplLHNlbGVjdGlvblJhbmdlOnMuaGFzU2VsZWN0aW9uQ2FwYWJpbGl0aWVzKGUpP3MuZ2V0
U2VsZWN0aW9uKGUpOm51bGx9fSxyZXN0b3JlU2VsZWN0aW9uOmZ1bmN0aW9uKGUpe3ZhciB0PXUo
KSxuPWUuZm9jdXNlZEVsZW0sbz1lLnNlbGVjdGlvblJhbmdlO3QhPT1uJiZyKG4pJiYocy5oYXNT
ZWxlY3Rpb25DYXBhYmlsaXRpZXMobikmJnMuc2V0U2VsZWN0aW9uKG4sbyksYShuKSl9LGdldFNl
bGVjdGlvbjpmdW5jdGlvbihlKXt2YXIgdDtpZigic2VsZWN0aW9uU3RhcnQiaW4gZSl0PXtzdGFy
dDplLnNlbGVjdGlvblN0YXJ0LGVuZDplLnNlbGVjdGlvbkVuZH07ZWxzZSBpZihkb2N1bWVudC5z
ZWxlY3Rpb24mJmUubm9kZU5hbWUmJiJpbnB1dCI9PT1lLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkp
e3ZhciBuPWRvY3VtZW50LnNlbGVjdGlvbi5jcmVhdGVSYW5nZSgpO24ucGFyZW50RWxlbWVudCgp
PT09ZSYmKHQ9e3N0YXJ0Oi1uLm1vdmVTdGFydCgiY2hhcmFjdGVyIiwtZS52YWx1ZS5sZW5ndGgp
LGVuZDotbi5tb3ZlRW5kKCJjaGFyYWN0ZXIiLC1lLnZhbHVlLmxlbmd0aCl9KX1lbHNlIHQ9by5n
ZXRPZmZzZXRzKGUpO3JldHVybiB0fHx7c3RhcnQ6MCxlbmQ6MH19LHNldFNlbGVjdGlvbjpmdW5j
dGlvbihlLHQpe3ZhciBuPXQuc3RhcnQscj10LmVuZDtpZih2b2lkIDA9PT1yJiYocj1uKSwic2Vs
ZWN0aW9uU3RhcnQiaW4gZSllLnNlbGVjdGlvblN0YXJ0PW4sZS5zZWxlY3Rpb25FbmQ9TWF0aC5t
aW4ocixlLnZhbHVlLmxlbmd0aCk7ZWxzZSBpZihkb2N1bWVudC5zZWxlY3Rpb24mJmUubm9kZU5h
bWUmJiJpbnB1dCI9PT1lLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkpe3ZhciBpPWUuY3JlYXRlVGV4
dFJhbmdlKCk7aS5jb2xsYXBzZSghMCksaS5tb3ZlU3RhcnQoImNoYXJhY3RlciIsbiksaS5tb3Zl
RW5kKCJjaGFyYWN0ZXIiLHItbiksaS5zZWxlY3QoKX1lbHNlIG8uc2V0T2Zmc2V0cyhlLHQpfX07
ZS5leHBvcnRzPXN9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQp
e2Zvcih2YXIgbj1NYXRoLm1pbihlLmxlbmd0aCx0Lmxlbmd0aCkscj0wO3I8bjtyKyspaWYoZS5j
aGFyQXQocikhPT10LmNoYXJBdChyKSlyZXR1cm4gcjtyZXR1cm4gZS5sZW5ndGg9PT10Lmxlbmd0
aD8tMTpufWZ1bmN0aW9uIG8oZSl7cmV0dXJuIGU/ZS5ub2RlVHlwZT09PUE/ZS5kb2N1bWVudEVs
ZW1lbnQ6ZS5maXJzdENoaWxkOm51bGx9ZnVuY3Rpb24gaShlKXtyZXR1cm4gZS5nZXRBdHRyaWJ1
dGUmJmUuZ2V0QXR0cmlidXRlKE4pfHwiIn1mdW5jdGlvbiBhKGUsdCxuLHIsbyl7dmFyIGk7aWYo
Qy5sb2dUb3BMZXZlbFJlbmRlcnMpe3ZhciBhPWUuX2N1cnJlbnRFbGVtZW50LnByb3BzLmNoaWxk
LHU9YS50eXBlO2k9IlJlYWN0IG1vdW50OiAiKygic3RyaW5nIj09dHlwZW9mIHU/dTp1LmRpc3Bs
YXlOYW1lfHx1Lm5hbWUpLGNvbnNvbGUudGltZShpKX12YXIgcz1ULm1vdW50Q29tcG9uZW50KGUs
bixudWxsLGIoZSx0KSxvLDApO2kmJmNvbnNvbGUudGltZUVuZChpKSxlLl9yZW5kZXJlZENvbXBv
bmVudC5fdG9wTGV2ZWxXcmFwcGVyPWUsRi5fbW91bnRJbWFnZUludG9Ob2RlKHMsdCxlLHIsbil9
ZnVuY3Rpb24gdShlLHQsbixyKXt2YXIgbz14LlJlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb24uZ2V0
UG9vbGVkKCFuJiZfLnVzZUNyZWF0ZUVsZW1lbnQpO28ucGVyZm9ybShhLG51bGwsZSx0LG8sbixy
KSx4LlJlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb24ucmVsZWFzZShvKX1mdW5jdGlvbiBzKGUsdCxu
KXtmb3IoVC51bm1vdW50Q29tcG9uZW50KGUsbiksdC5ub2RlVHlwZT09PUEmJih0PXQuZG9jdW1l
bnRFbGVtZW50KTt0Lmxhc3RDaGlsZDspdC5yZW1vdmVDaGlsZCh0Lmxhc3RDaGlsZCl9ZnVuY3Rp
b24gYyhlKXt2YXIgdD1vKGUpO2lmKHQpe3ZhciBuPWcuZ2V0SW5zdGFuY2VGcm9tTm9kZSh0KTty
ZXR1cm4hKCFufHwhbi5faG9zdFBhcmVudCl9fWZ1bmN0aW9uIGwoZSl7cmV0dXJuISghZXx8ZS5u
b2RlVHlwZSE9PVImJmUubm9kZVR5cGUhPT1BJiZlLm5vZGVUeXBlIT09RCl9ZnVuY3Rpb24gcChl
KXt2YXIgdD1vKGUpLG49dCYmZy5nZXRJbnN0YW5jZUZyb21Ob2RlKHQpO3JldHVybiBuJiYhbi5f
aG9zdFBhcmVudD9uOm51bGx9ZnVuY3Rpb24gZChlKXt2YXIgdD1wKGUpO3JldHVybiB0P3QuX2hv
c3RDb250YWluZXJJbmZvLl90b3BMZXZlbFdyYXBwZXI6bnVsbH12YXIgZj1uKDMpLGg9bigxNCks
dj1uKDE1KSxtPW4oMTcpLHk9bigyNSksZz0obigxMSksbig1KSksYj1uKDEzOSksXz1uKDE0MSks
Qz1uKDY0KSxFPW4oMjEpLHc9KG4oOCksbigxNTUpKSxUPW4oMTYpLFA9big0MikseD1uKDkpLE89
bigyNCksUz1uKDc1KSxrPShuKDEpLG4oMjkpKSxNPW4oNDgpLE49KG4oMiksdi5JRF9BVFRSSUJV
VEVfTkFNRSksST12LlJPT1RfQVRUUklCVVRFX05BTUUsUj0xLEE9OSxEPTExLGo9e30sTD0xLFU9
ZnVuY3Rpb24oKXt0aGlzLnJvb3RJRD1MKyt9O1UucHJvdG90eXBlLmlzUmVhY3RDb21wb25lbnQ9
e30sVS5wcm90b3R5cGUucmVuZGVyPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHJvcHMuY2hpbGR9
LFUuaXNSZWFjdFRvcExldmVsV3JhcHBlcj0hMDt2YXIgRj17VG9wTGV2ZWxXcmFwcGVyOlUsX2lu
c3RhbmNlc0J5UmVhY3RSb290SUQ6aixzY3JvbGxNb25pdG9yOmZ1bmN0aW9uKGUsdCl7dCgpfSxf
dXBkYXRlUm9vdENvbXBvbmVudDpmdW5jdGlvbihlLHQsbixyLG8pe3JldHVybiBGLnNjcm9sbE1v
bml0b3IocixmdW5jdGlvbigpe1AuZW5xdWV1ZUVsZW1lbnRJbnRlcm5hbChlLHQsbiksbyYmUC5l
bnF1ZXVlQ2FsbGJhY2tJbnRlcm5hbChlLG8pfSksZX0sX3JlbmRlck5ld1Jvb3RDb21wb25lbnQ6
ZnVuY3Rpb24oZSx0LG4scil7bCh0KT92b2lkIDA6ZigiMzciKSx5LmVuc3VyZVNjcm9sbFZhbHVl
TW9uaXRvcmluZygpO3ZhciBvPVMoZSwhMSk7eC5iYXRjaGVkVXBkYXRlcyh1LG8sdCxuLHIpO3Zh
ciBpPW8uX2luc3RhbmNlLnJvb3RJRDtyZXR1cm4galtpXT1vLG99LHJlbmRlclN1YnRyZWVJbnRv
Q29udGFpbmVyOmZ1bmN0aW9uKGUsdCxuLHIpe3JldHVybiBudWxsIT1lJiZFLmhhcyhlKT92b2lk
IDA6ZigiMzgiKSxGLl9yZW5kZXJTdWJ0cmVlSW50b0NvbnRhaW5lcihlLHQsbixyKX0sX3JlbmRl
clN1YnRyZWVJbnRvQ29udGFpbmVyOmZ1bmN0aW9uKGUsdCxuLHIpe1AudmFsaWRhdGVDYWxsYmFj
ayhyLCJSZWFjdERPTS5yZW5kZXIiKSxtLmlzVmFsaWRFbGVtZW50KHQpP3ZvaWQgMDpmKCIzOSIs
InN0cmluZyI9PXR5cGVvZiB0PyIgSW5zdGVhZCBvZiBwYXNzaW5nIGEgc3RyaW5nIGxpa2UgJ2Rp
dicsIHBhc3MgUmVhY3QuY3JlYXRlRWxlbWVudCgnZGl2Jykgb3IgPGRpdiAvPi4iOiJmdW5jdGlv
biI9PXR5cGVvZiB0PyIgSW5zdGVhZCBvZiBwYXNzaW5nIGEgY2xhc3MgbGlrZSBGb28sIHBhc3Mg
UmVhY3QuY3JlYXRlRWxlbWVudChGb28pIG9yIDxGb28gLz4uIjpudWxsIT10JiZ2b2lkIDAhPT10
LnByb3BzPyIgVGhpcyBtYXkgYmUgY2F1c2VkIGJ5IHVuaW50ZW50aW9uYWxseSBsb2FkaW5nIHR3
byBpbmRlcGVuZGVudCBjb3BpZXMgb2YgUmVhY3QuIjoiIik7dmFyIGEsdT1tLmNyZWF0ZUVsZW1l
bnQoVSx7Y2hpbGQ6dH0pO2lmKGUpe3ZhciBzPUUuZ2V0KGUpO2E9cy5fcHJvY2Vzc0NoaWxkQ29u
dGV4dChzLl9jb250ZXh0KX1lbHNlIGE9Tzt2YXIgbD1kKG4pO2lmKGwpe3ZhciBwPWwuX2N1cnJl
bnRFbGVtZW50LGg9cC5wcm9wcy5jaGlsZDtpZihNKGgsdCkpe3ZhciB2PWwuX3JlbmRlcmVkQ29t
cG9uZW50LmdldFB1YmxpY0luc3RhbmNlKCkseT1yJiZmdW5jdGlvbigpe3IuY2FsbCh2KX07cmV0
dXJuIEYuX3VwZGF0ZVJvb3RDb21wb25lbnQobCx1LGEsbix5KSx2fUYudW5tb3VudENvbXBvbmVu
dEF0Tm9kZShuKX12YXIgZz1vKG4pLGI9ZyYmISFpKGcpLF89YyhuKSxDPWImJiFsJiYhXyx3PUYu
X3JlbmRlck5ld1Jvb3RDb21wb25lbnQodSxuLEMsYSkuX3JlbmRlcmVkQ29tcG9uZW50LmdldFB1
YmxpY0luc3RhbmNlKCk7cmV0dXJuIHImJnIuY2FsbCh3KSx3fSxyZW5kZXI6ZnVuY3Rpb24oZSx0
LG4pe3JldHVybiBGLl9yZW5kZXJTdWJ0cmVlSW50b0NvbnRhaW5lcihudWxsLGUsdCxuKX0sdW5t
b3VudENvbXBvbmVudEF0Tm9kZTpmdW5jdGlvbihlKXtsKGUpP3ZvaWQgMDpmKCI0MCIpO3ZhciB0
PWQoZSk7aWYoIXQpe2MoZSksMT09PWUubm9kZVR5cGUmJmUuaGFzQXR0cmlidXRlKEkpO3JldHVy
biExfXJldHVybiBkZWxldGUgalt0Ll9pbnN0YW5jZS5yb290SURdLHguYmF0Y2hlZFVwZGF0ZXMo
cyx0LGUsITEpLCEwfSxfbW91bnRJbWFnZUludG9Ob2RlOmZ1bmN0aW9uKGUsdCxuLGksYSl7aWYo
bCh0KT92b2lkIDA6ZigiNDEiKSxpKXt2YXIgdT1vKHQpO2lmKHcuY2FuUmV1c2VNYXJrdXAoZSx1
KSlyZXR1cm4gdm9pZCBnLnByZWNhY2hlTm9kZShuLHUpO3ZhciBzPXUuZ2V0QXR0cmlidXRlKHcu
Q0hFQ0tTVU1fQVRUUl9OQU1FKTt1LnJlbW92ZUF0dHJpYnV0ZSh3LkNIRUNLU1VNX0FUVFJfTkFN
RSk7dmFyIGM9dS5vdXRlckhUTUw7dS5zZXRBdHRyaWJ1dGUody5DSEVDS1NVTV9BVFRSX05BTUUs
cyk7dmFyIHA9ZSxkPXIocCxjKSx2PSIgKGNsaWVudCkgIitwLnN1YnN0cmluZyhkLTIwLGQrMjAp
KyJcbiAoc2VydmVyKSAiK2Muc3Vic3RyaW5nKGQtMjAsZCsyMCk7dC5ub2RlVHlwZT09PUE/Zigi
NDIiLHYpOnZvaWQgMH1pZih0Lm5vZGVUeXBlPT09QT9mKCI0MyIpOnZvaWQgMCxhLnVzZUNyZWF0
ZUVsZW1lbnQpe2Zvcig7dC5sYXN0Q2hpbGQ7KXQucmVtb3ZlQ2hpbGQodC5sYXN0Q2hpbGQpO2gu
aW5zZXJ0VHJlZUJlZm9yZSh0LGUsbnVsbCl9ZWxzZSBrKHQsZSksZy5wcmVjYWNoZU5vZGUobix0
LmZpcnN0Q2hpbGQpfX07ZS5leHBvcnRzPUZ9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7
dmFyIHI9bigzKSxvPW4oMTcpLGk9KG4oMSkse0hPU1Q6MCxDT01QT1NJVEU6MSxFTVBUWToyLGdl
dFR5cGU6ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGw9PT1lfHxlPT09ITE/aS5FTVBUWTpvLmlzVmFs
aWRFbGVtZW50KGUpPyJmdW5jdGlvbiI9PXR5cGVvZiBlLnR5cGU/aS5DT01QT1NJVEU6aS5IT1NU
OnZvaWQgcigiMjYiLGUpfX0pO2UuZXhwb3J0cz1pfSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0
Ijt2YXIgbj17Y3VycmVudFNjcm9sbExlZnQ6MCxjdXJyZW50U2Nyb2xsVG9wOjAscmVmcmVzaFNj
cm9sbFZhbHVlczpmdW5jdGlvbihlKXtuLmN1cnJlbnRTY3JvbGxMZWZ0PWUueCxuLmN1cnJlbnRT
Y3JvbGxUb3A9ZS55fX07ZS5leHBvcnRzPW59LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7
ZnVuY3Rpb24gcihlLHQpe3JldHVybiBudWxsPT10P28oIjMwIik6dm9pZCAwLG51bGw9PWU/dDpB
cnJheS5pc0FycmF5KGUpP0FycmF5LmlzQXJyYXkodCk/KGUucHVzaC5hcHBseShlLHQpLGUpOihl
LnB1c2godCksZSk6QXJyYXkuaXNBcnJheSh0KT9bZV0uY29uY2F0KHQpOltlLHRdfXZhciBvPW4o
Myk7bigxKTtlLmV4cG9ydHM9cn0sZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24g
bihlLHQsbil7QXJyYXkuaXNBcnJheShlKT9lLmZvckVhY2godCxuKTplJiZ0LmNhbGwobixlKX1l
LmV4cG9ydHM9bn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe2Zv
cih2YXIgdDsodD1lLl9yZW5kZXJlZE5vZGVUeXBlKT09PW8uQ09NUE9TSVRFOyllPWUuX3JlbmRl
cmVkQ29tcG9uZW50O3JldHVybiB0PT09by5IT1NUP2UuX3JlbmRlcmVkQ29tcG9uZW50OnQ9PT1v
LkVNUFRZP251bGw6dm9pZCAwfXZhciBvPW4oNjgpO2UuZXhwb3J0cz1yfSxmdW5jdGlvbihlLHQs
bil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoKXtyZXR1cm4haSYmby5jYW5Vc2VET00mJihpPSJ0
ZXh0Q29udGVudCJpbiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ/InRleHRDb250ZW50IjoiaW5u
ZXJUZXh0IiksaX12YXIgbz1uKDYpLGk9bnVsbDtlLmV4cG9ydHM9cn0sZnVuY3Rpb24oZSx0LG4p
eyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3ZhciB0PWUudHlwZSxuPWUubm9kZU5hbWU7cmV0
dXJuIG4mJiJpbnB1dCI9PT1uLnRvTG93ZXJDYXNlKCkmJigiY2hlY2tib3giPT09dHx8InJhZGlv
Ij09PXQpfWZ1bmN0aW9uIG8oZSl7cmV0dXJuIGUuX3dyYXBwZXJTdGF0ZS52YWx1ZVRyYWNrZXJ9
ZnVuY3Rpb24gaShlLHQpe2UuX3dyYXBwZXJTdGF0ZS52YWx1ZVRyYWNrZXI9dH1mdW5jdGlvbiBh
KGUpe2RlbGV0ZSBlLl93cmFwcGVyU3RhdGUudmFsdWVUcmFja2VyfWZ1bmN0aW9uIHUoZSl7dmFy
IHQ7cmV0dXJuIGUmJih0PXIoZSk/IiIrZS5jaGVja2VkOmUudmFsdWUpLHR9dmFyIHM9big1KSxj
PXtfZ2V0VHJhY2tlckZyb21Ob2RlOmZ1bmN0aW9uKGUpe3JldHVybiBvKHMuZ2V0SW5zdGFuY2VG
cm9tTm9kZShlKSl9LHRyYWNrOmZ1bmN0aW9uKGUpe2lmKCFvKGUpKXt2YXIgdD1zLmdldE5vZGVG
cm9tSW5zdGFuY2UoZSksbj1yKHQpPyJjaGVja2VkIjoidmFsdWUiLHU9T2JqZWN0LmdldE93blBy
b3BlcnR5RGVzY3JpcHRvcih0LmNvbnN0cnVjdG9yLnByb3RvdHlwZSxuKSxjPSIiK3Rbbl07dC5o
YXNPd25Qcm9wZXJ0eShuKXx8ImZ1bmN0aW9uIiE9dHlwZW9mIHUuZ2V0fHwiZnVuY3Rpb24iIT10
eXBlb2YgdS5zZXR8fChPYmplY3QuZGVmaW5lUHJvcGVydHkodCxuLHtlbnVtZXJhYmxlOnUuZW51
bWVyYWJsZSxjb25maWd1cmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHUuZ2V0LmNhbGwo
dGhpcyl9LHNldDpmdW5jdGlvbihlKXtjPSIiK2UsdS5zZXQuY2FsbCh0aGlzLGUpfX0pLGkoZSx7
Z2V0VmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gY30sc2V0VmFsdWU6ZnVuY3Rpb24oZSl7Yz0iIitl
fSxzdG9wVHJhY2tpbmc6ZnVuY3Rpb24oKXthKGUpLGRlbGV0ZSB0W25dfX0pKX19LHVwZGF0ZVZh
bHVlSWZDaGFuZ2VkOmZ1bmN0aW9uKGUpe2lmKCFlKXJldHVybiExO3ZhciB0PW8oZSk7aWYoIXQp
cmV0dXJuIGMudHJhY2soZSksITA7dmFyIG49dC5nZXRWYWx1ZSgpLHI9dShzLmdldE5vZGVGcm9t
SW5zdGFuY2UoZSkpO3JldHVybiByIT09biYmKHQuc2V0VmFsdWUociksITApfSxzdG9wVHJhY2tp
bmc6ZnVuY3Rpb24oZSl7dmFyIHQ9byhlKTt0JiZ0LnN0b3BUcmFja2luZygpfX07ZS5leHBvcnRz
PWN9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtpZihlKXt2YXIg
dD1lLmdldE5hbWUoKTtpZih0KXJldHVybiIgQ2hlY2sgdGhlIHJlbmRlciBtZXRob2Qgb2YgYCIr
dCsiYC4ifXJldHVybiIifWZ1bmN0aW9uIG8oZSl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGUm
JiJ1bmRlZmluZWQiIT10eXBlb2YgZS5wcm90b3R5cGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBlLnBy
b3RvdHlwZS5tb3VudENvbXBvbmVudCYmImZ1bmN0aW9uIj09dHlwZW9mIGUucHJvdG90eXBlLnJl
Y2VpdmVDb21wb25lbnR9ZnVuY3Rpb24gaShlLHQpe3ZhciBuO2lmKG51bGw9PT1lfHxlPT09ITEp
bj1jLmNyZWF0ZShpKTtlbHNlIGlmKCJvYmplY3QiPT10eXBlb2YgZSl7dmFyIHU9ZSxzPXUudHlw
ZTtpZigiZnVuY3Rpb24iIT10eXBlb2YgcyYmInN0cmluZyIhPXR5cGVvZiBzKXt2YXIgZD0iIjtk
Kz1yKHUuX293bmVyKSxhKCIxMzAiLG51bGw9PXM/czp0eXBlb2YgcyxkKX0ic3RyaW5nIj09dHlw
ZW9mIHUudHlwZT9uPWwuY3JlYXRlSW50ZXJuYWxDb21wb25lbnQodSk6byh1LnR5cGUpPyhuPW5l
dyB1LnR5cGUodSksbi5nZXRIb3N0Tm9kZXx8KG4uZ2V0SG9zdE5vZGU9bi5nZXROYXRpdmVOb2Rl
KSk6bj1uZXcgcCh1KX1lbHNlInN0cmluZyI9PXR5cGVvZiBlfHwibnVtYmVyIj09dHlwZW9mIGU/
bj1sLmNyZWF0ZUluc3RhbmNlRm9yVGV4dChlKTphKCIxMzEiLHR5cGVvZiBlKTtyZXR1cm4gbi5f
bW91bnRJbmRleD0wLG4uX21vdW50SW1hZ2U9bnVsbCxufXZhciBhPW4oMyksdT1uKDQpLHM9bigx
MzYpLGM9big2MyksbD1uKDY1KSxwPShuKDIyMSksbigxKSxuKDIpLGZ1bmN0aW9uKGUpe3RoaXMu
Y29uc3RydWN0KGUpfSk7dShwLnByb3RvdHlwZSxzLHtfaW5zdGFudGlhdGVSZWFjdENvbXBvbmVu
dDppfSksZS5leHBvcnRzPWl9LGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4o
ZSl7dmFyIHQ9ZSYmZS5ub2RlTmFtZSYmZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO3JldHVybiJp
bnB1dCI9PT10PyEhcltlLnR5cGVdOiJ0ZXh0YXJlYSI9PT10fXZhciByPXtjb2xvcjohMCxkYXRl
OiEwLGRhdGV0aW1lOiEwLCJkYXRldGltZS1sb2NhbCI6ITAsZW1haWw6ITAsbW9udGg6ITAsbnVt
YmVyOiEwLHBhc3N3b3JkOiEwLHJhbmdlOiEwLHNlYXJjaDohMCx0ZWw6ITAsdGV4dDohMCx0aW1l
OiEwLHVybDohMCx3ZWVrOiEwfTtlLmV4cG9ydHM9bn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3Ry
aWN0Ijt2YXIgcj1uKDYpLG89bigyOCksaT1uKDI5KSxhPWZ1bmN0aW9uKGUsdCl7aWYodCl7dmFy
IG49ZS5maXJzdENoaWxkO2lmKG4mJm49PT1lLmxhc3RDaGlsZCYmMz09PW4ubm9kZVR5cGUpcmV0
dXJuIHZvaWQobi5ub2RlVmFsdWU9dCl9ZS50ZXh0Q29udGVudD10fTtyLmNhblVzZURPTSYmKCJ0
ZXh0Q29udGVudCJpbiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnR8fChhPWZ1bmN0aW9uKGUsdCl7
cmV0dXJuIDM9PT1lLm5vZGVUeXBlP3ZvaWQoZS5ub2RlVmFsdWU9dCk6dm9pZCBpKGUsbyh0KSl9
KSksZS5leHBvcnRzPWF9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihl
LHQpe3JldHVybiBlJiYib2JqZWN0Ij09dHlwZW9mIGUmJm51bGwhPWUua2V5P2MuZXNjYXBlKGUu
a2V5KTp0LnRvU3RyaW5nKDM2KX1mdW5jdGlvbiBvKGUsdCxuLGkpe3ZhciBkPXR5cGVvZiBlO2lm
KCJ1bmRlZmluZWQiIT09ZCYmImJvb2xlYW4iIT09ZHx8KGU9bnVsbCksbnVsbD09PWV8fCJzdHJp
bmciPT09ZHx8Im51bWJlciI9PT1kfHwib2JqZWN0Ij09PWQmJmUuJCR0eXBlb2Y9PT11KXJldHVy
biBuKGksZSwiIj09PXQ/bCtyKGUsMCk6dCksMTt2YXIgZixoLHY9MCxtPSIiPT09dD9sOnQrcDtp
ZihBcnJheS5pc0FycmF5KGUpKWZvcih2YXIgeT0wO3k8ZS5sZW5ndGg7eSsrKWY9ZVt5XSxoPW0r
cihmLHkpLHYrPW8oZixoLG4saSk7ZWxzZXt2YXIgZz1zKGUpO2lmKGcpe3ZhciBiLF89Zy5jYWxs
KGUpO2lmKGchPT1lLmVudHJpZXMpZm9yKHZhciBDPTA7IShiPV8ubmV4dCgpKS5kb25lOylmPWIu
dmFsdWUsaD1tK3IoZixDKyspLHYrPW8oZixoLG4saSk7ZWxzZSBmb3IoOyEoYj1fLm5leHQoKSku
ZG9uZTspe3ZhciBFPWIudmFsdWU7RSYmKGY9RVsxXSxoPW0rYy5lc2NhcGUoRVswXSkrcCtyKGYs
MCksdis9byhmLGgsbixpKSl9fWVsc2UgaWYoIm9iamVjdCI9PT1kKXt2YXIgdz0iIixUPVN0cmlu
ZyhlKTthKCIzMSIsIltvYmplY3QgT2JqZWN0XSI9PT1UPyJvYmplY3Qgd2l0aCBrZXlzIHsiK09i
amVjdC5rZXlzKGUpLmpvaW4oIiwgIikrIn0iOlQsdyl9fXJldHVybiB2fWZ1bmN0aW9uIGkoZSx0
LG4pe3JldHVybiBudWxsPT1lPzA6byhlLCIiLHQsbil9dmFyIGE9bigzKSx1PShuKDExKSxuKDE1
MSkpLHM9bigxODIpLGM9KG4oMSksbigzOCkpLGw9KG4oMiksIi4iKSxwPSI6IjtlLmV4cG9ydHM9
aX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3JldHVybiBlJiZl
Ll9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX1mdW5jdGlvbiBvKGUsdCl7aWYoIShlIGluc3RhbmNl
b2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0
aW9uIil9ZnVuY3Rpb24gaShlLHQpe2lmKCFlKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhp
cyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7
cmV0dXJuIXR8fCJvYmplY3QiIT10eXBlb2YgdCYmImZ1bmN0aW9uIiE9dHlwZW9mIHQ/ZTp0fWZ1
bmN0aW9uIGEoZSx0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCYmbnVsbCE9PXQpdGhyb3cgbmV3
IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVu
Y3Rpb24sIG5vdCAiK3R5cGVvZiB0KTtlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJv
dG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZSxlbnVtZXJhYmxlOiExLHdyaXRhYmxlOiEwLGNv
bmZpZ3VyYWJsZTohMH19KSx0JiYoT2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90
b3R5cGVPZihlLHQpOmUuX19wcm90b19fPXQpfWZ1bmN0aW9uIHUoZSx0KXt2YXIgbj17fTtmb3Io
dmFyIHIgaW4gZSl0LmluZGV4T2Yocik+PTB8fE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVy
dHkuY2FsbChlLHIpJiYobltyXT1lW3JdKTtyZXR1cm4gbn1mdW5jdGlvbiBzKCl7fWZ1bmN0aW9u
IGMoZSx0KXt2YXIgbj17cnVuOmZ1bmN0aW9uKHIpe3RyeXt2YXIgbz1lKHQuZ2V0U3RhdGUoKSxy
KTsobyE9PW4ucHJvcHN8fG4uZXJyb3IpJiYobi5zaG91bGRDb21wb25lbnRVcGRhdGU9ITAsbi5w
cm9wcz1vLG4uZXJyb3I9bnVsbCl9Y2F0Y2goaSl7bi5zaG91bGRDb21wb25lbnRVcGRhdGU9ITAs
bi5lcnJvcj1pfX19O3JldHVybiBufWZ1bmN0aW9uIGwoZSl7dmFyIHQsbixyPWFyZ3VtZW50cy5s
ZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp7fSxsPXIuZ2V0RGlz
cGxheU5hbWUsZD12b2lkIDA9PT1sP2Z1bmN0aW9uKGUpe3JldHVybiJDb25uZWN0QWR2YW5jZWQo
IitlKyIpIn06bCxoPXIubWV0aG9kTmFtZSx5PXZvaWQgMD09PWg/ImNvbm5lY3RBZHZhbmNlZCI6
aCxFPXIucmVuZGVyQ291bnRQcm9wLHc9dm9pZCAwPT09RT92b2lkIDA6RSxUPXIuc2hvdWxkSGFu
ZGxlU3RhdGVDaGFuZ2VzLFA9dm9pZCAwPT09VHx8VCx4PXIuc3RvcmVLZXksTz12b2lkIDA9PT14
PyJzdG9yZSI6eCxTPXIud2l0aFJlZixrPXZvaWQgMCE9PVMmJlMsTT11KHIsWyJnZXREaXNwbGF5
TmFtZSIsIm1ldGhvZE5hbWUiLCJyZW5kZXJDb3VudFByb3AiLCJzaG91bGRIYW5kbGVTdGF0ZUNo
YW5nZXMiLCJzdG9yZUtleSIsIndpdGhSZWYiXSksTj1PKyJTdWJzY3JpcHRpb24iLEk9XysrLFI9
KHQ9e30sdFtPXT1iLnN0b3JlU2hhcGUsdFtOXT1iLnN1YnNjcmlwdGlvblNoYXBlLHQpLEE9KG49
e30sbltOXT1iLnN1YnNjcmlwdGlvblNoYXBlLG4pO3JldHVybiBmdW5jdGlvbih0KXsoMCx2LmRl
ZmF1bHQpKCJmdW5jdGlvbiI9PXR5cGVvZiB0LCJZb3UgbXVzdCBwYXNzIGEgY29tcG9uZW50IHRv
IHRoZSBmdW5jdGlvbiByZXR1cm5lZCBieSBjb25uZWN0LiBJbnN0ZWFkIHJlY2VpdmVkICIrSlNP
Ti5zdHJpbmdpZnkodCkpO3ZhciBuPXQuZGlzcGxheU5hbWV8fHQubmFtZXx8IkNvbXBvbmVudCIs
cj1kKG4pLHU9cCh7fSxNLHtnZXREaXNwbGF5TmFtZTpkLG1ldGhvZE5hbWU6eSxyZW5kZXJDb3Vu
dFByb3A6dyxzaG91bGRIYW5kbGVTdGF0ZUNoYW5nZXM6UCxzdG9yZUtleTpPLHdpdGhSZWY6ayxk
aXNwbGF5TmFtZTpyLHdyYXBwZWRDb21wb25lbnROYW1lOm4sV3JhcHBlZENvbXBvbmVudDp0fSks
bD1mdW5jdGlvbihuKXtmdW5jdGlvbiBsKGUsdCl7byh0aGlzLGwpO3ZhciBhPWkodGhpcyxuLmNh
bGwodGhpcyxlLHQpKTtyZXR1cm4gYS52ZXJzaW9uPUksYS5zdGF0ZT17fSxhLnJlbmRlckNvdW50
PTAsYS5zdG9yZT1lW09dfHx0W09dLGEucHJvcHNNb2RlPUJvb2xlYW4oZVtPXSksYS5zZXRXcmFw
cGVkSW5zdGFuY2U9YS5zZXRXcmFwcGVkSW5zdGFuY2UuYmluZChhKSwoMCx2LmRlZmF1bHQpKGEu
c3RvcmUsJ0NvdWxkIG5vdCBmaW5kICInK08rJyIgaW4gZWl0aGVyIHRoZSBjb250ZXh0IG9yIHBy
b3BzIG9mICcrKCciJytyKyciLiBFaXRoZXIgd3JhcCB0aGUgcm9vdCBjb21wb25lbnQgaW4gYSA8
UHJvdmlkZXI+LCAnKSsoJ29yIGV4cGxpY2l0bHkgcGFzcyAiJytPKyciIGFzIGEgcHJvcCB0byAi
JytyKyciLicpKSxhLmluaXRTZWxlY3RvcigpLGEuaW5pdFN1YnNjcmlwdGlvbigpLGF9cmV0dXJu
IGEobCxuKSxsLnByb3RvdHlwZS5nZXRDaGlsZENvbnRleHQ9ZnVuY3Rpb24oKXt2YXIgZSx0PXRo
aXMucHJvcHNNb2RlP251bGw6dGhpcy5zdWJzY3JpcHRpb247cmV0dXJuIGU9e30sZVtOXT10fHx0
aGlzLmNvbnRleHRbTl0sZX0sbC5wcm90b3R5cGUuY29tcG9uZW50RGlkTW91bnQ9ZnVuY3Rpb24o
KXtQJiYodGhpcy5zdWJzY3JpcHRpb24udHJ5U3Vic2NyaWJlKCksdGhpcy5zZWxlY3Rvci5ydW4o
dGhpcy5wcm9wcyksdGhpcy5zZWxlY3Rvci5zaG91bGRDb21wb25lbnRVcGRhdGUmJnRoaXMuZm9y
Y2VVcGRhdGUoKSl9LGwucHJvdG90eXBlLmNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHM9ZnVuY3Rp
b24oZSl7dGhpcy5zZWxlY3Rvci5ydW4oZSl9LGwucHJvdG90eXBlLnNob3VsZENvbXBvbmVudFVw
ZGF0ZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLnNlbGVjdG9yLnNob3VsZENvbXBvbmVudFVwZGF0
ZX0sbC5wcm90b3R5cGUuY29tcG9uZW50V2lsbFVubW91bnQ9ZnVuY3Rpb24oKXt0aGlzLnN1YnNj
cmlwdGlvbiYmdGhpcy5zdWJzY3JpcHRpb24udHJ5VW5zdWJzY3JpYmUoKSx0aGlzLnN1YnNjcmlw
dGlvbj1udWxsLHRoaXMubm90aWZ5TmVzdGVkU3Vicz1zLHRoaXMuc3RvcmU9bnVsbCx0aGlzLnNl
bGVjdG9yLnJ1bj1zLHRoaXMuc2VsZWN0b3Iuc2hvdWxkQ29tcG9uZW50VXBkYXRlPSExfSxsLnBy
b3RvdHlwZS5nZXRXcmFwcGVkSW5zdGFuY2U9ZnVuY3Rpb24oKXtyZXR1cm4oMCx2LmRlZmF1bHQp
KGssIlRvIGFjY2VzcyB0aGUgd3JhcHBlZCBpbnN0YW5jZSwgeW91IG5lZWQgdG8gc3BlY2lmeSAi
KygieyB3aXRoUmVmOiB0cnVlIH0gaW4gdGhlIG9wdGlvbnMgYXJndW1lbnQgb2YgdGhlICIreSsi
KCkgY2FsbC4iKSksdGhpcy53cmFwcGVkSW5zdGFuY2V9LGwucHJvdG90eXBlLnNldFdyYXBwZWRJ
bnN0YW5jZT1mdW5jdGlvbihlKXt0aGlzLndyYXBwZWRJbnN0YW5jZT1lfSxsLnByb3RvdHlwZS5p
bml0U2VsZWN0b3I9ZnVuY3Rpb24oKXt2YXIgdD1lKHRoaXMuc3RvcmUuZGlzcGF0Y2gsdSk7dGhp
cy5zZWxlY3Rvcj1jKHQsdGhpcy5zdG9yZSksdGhpcy5zZWxlY3Rvci5ydW4odGhpcy5wcm9wcyl9
LGwucHJvdG90eXBlLmluaXRTdWJzY3JpcHRpb249ZnVuY3Rpb24oKXtpZihQKXt2YXIgZT0odGhp
cy5wcm9wc01vZGU/dGhpcy5wcm9wczp0aGlzLmNvbnRleHQpW05dO3RoaXMuc3Vic2NyaXB0aW9u
PW5ldyBnLmRlZmF1bHQodGhpcy5zdG9yZSxlLHRoaXMub25TdGF0ZUNoYW5nZS5iaW5kKHRoaXMp
KSx0aGlzLm5vdGlmeU5lc3RlZFN1YnM9dGhpcy5zdWJzY3JpcHRpb24ubm90aWZ5TmVzdGVkU3Vi
cy5iaW5kKHRoaXMuc3Vic2NyaXB0aW9uKX19LGwucHJvdG90eXBlLm9uU3RhdGVDaGFuZ2U9ZnVu
Y3Rpb24oKXt0aGlzLnNlbGVjdG9yLnJ1bih0aGlzLnByb3BzKSx0aGlzLnNlbGVjdG9yLnNob3Vs
ZENvbXBvbmVudFVwZGF0ZT8odGhpcy5jb21wb25lbnREaWRVcGRhdGU9dGhpcy5ub3RpZnlOZXN0
ZWRTdWJzT25Db21wb25lbnREaWRVcGRhdGUsdGhpcy5zZXRTdGF0ZShDKSk6dGhpcy5ub3RpZnlO
ZXN0ZWRTdWJzKCl9LGwucHJvdG90eXBlLm5vdGlmeU5lc3RlZFN1YnNPbkNvbXBvbmVudERpZFVw
ZGF0ZT1mdW5jdGlvbigpe3RoaXMuY29tcG9uZW50RGlkVXBkYXRlPXZvaWQgMCx0aGlzLm5vdGlm
eU5lc3RlZFN1YnMoKX0sbC5wcm90b3R5cGUuaXNTdWJzY3JpYmVkPWZ1bmN0aW9uKCl7cmV0dXJu
IEJvb2xlYW4odGhpcy5zdWJzY3JpcHRpb24pJiZ0aGlzLnN1YnNjcmlwdGlvbi5pc1N1YnNjcmli
ZWQoKX0sbC5wcm90b3R5cGUuYWRkRXh0cmFQcm9wcz1mdW5jdGlvbihlKXtpZighKGt8fHd8fHRo
aXMucHJvcHNNb2RlJiZ0aGlzLnN1YnNjcmlwdGlvbikpcmV0dXJuIGU7dmFyIHQ9cCh7fSxlKTty
ZXR1cm4gayYmKHQucmVmPXRoaXMuc2V0V3JhcHBlZEluc3RhbmNlKSx3JiYodFt3XT10aGlzLnJl
bmRlckNvdW50KyspLHRoaXMucHJvcHNNb2RlJiZ0aGlzLnN1YnNjcmlwdGlvbiYmKHRbTl09dGhp
cy5zdWJzY3JpcHRpb24pLHR9LGwucHJvdG90eXBlLnJlbmRlcj1mdW5jdGlvbigpe3ZhciBlPXRo
aXMuc2VsZWN0b3I7aWYoZS5zaG91bGRDb21wb25lbnRVcGRhdGU9ITEsZS5lcnJvcil0aHJvdyBl
LmVycm9yO3JldHVybigwLG0uY3JlYXRlRWxlbWVudCkodCx0aGlzLmFkZEV4dHJhUHJvcHMoZS5w
cm9wcykpfSxsfShtLkNvbXBvbmVudCk7cmV0dXJuIGwuV3JhcHBlZENvbXBvbmVudD10LGwuZGlz
cGxheU5hbWU9cixsLmNoaWxkQ29udGV4dFR5cGVzPUEsbC5jb250ZXh0VHlwZXM9UixsLnByb3BU
eXBlcz1SLCgwLGYuZGVmYXVsdCkobCx0KX19dC5fX2VzTW9kdWxlPSEwO3ZhciBwPU9iamVjdC5h
c3NpZ258fGZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3Zh
ciBuPWFyZ3VtZW50c1t0XTtmb3IodmFyIHIgaW4gbilPYmplY3QucHJvdG90eXBlLmhhc093blBy
b3BlcnR5LmNhbGwobixyKSYmKGVbcl09bltyXSl9cmV0dXJuIGV9O3QuZGVmYXVsdD1sO3ZhciBk
PW4oMTEwKSxmPXIoZCksaD1uKDExMSksdj1yKGgpLG09bigxMikseT1uKDE5NCksZz1yKHkpLGI9
big4MiksXz0wLEM9e319LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihl
KXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19ZnVuY3Rpb24gbyhlKXtyZXR1
cm4gZnVuY3Rpb24odCxuKXtmdW5jdGlvbiByKCl7cmV0dXJuIG99dmFyIG89ZSh0LG4pO3JldHVy
biByLmRlcGVuZHNPbk93blByb3BzPSExLHJ9fWZ1bmN0aW9uIGkoZSl7cmV0dXJuIG51bGwhPT1l
LmRlcGVuZHNPbk93blByb3BzJiZ2b2lkIDAhPT1lLmRlcGVuZHNPbk93blByb3BzP0Jvb2xlYW4o
ZS5kZXBlbmRzT25Pd25Qcm9wcyk6MSE9PWUubGVuZ3RofWZ1bmN0aW9uIGEoZSx0KXtyZXR1cm4g
ZnVuY3Rpb24odCxuKXt2YXIgcj0obi5kaXNwbGF5TmFtZSxmdW5jdGlvbihlLHQpe3JldHVybiBy
LmRlcGVuZHNPbk93blByb3BzP3IubWFwVG9Qcm9wcyhlLHQpOnIubWFwVG9Qcm9wcyhlKX0pO3Jl
dHVybiByLmRlcGVuZHNPbk93blByb3BzPSEwLHIubWFwVG9Qcm9wcz1mdW5jdGlvbih0LG4pe3Iu
bWFwVG9Qcm9wcz1lLHIuZGVwZW5kc09uT3duUHJvcHM9aShlKTt2YXIgbz1yKHQsbik7cmV0dXJu
ImZ1bmN0aW9uIj09dHlwZW9mIG8mJihyLm1hcFRvUHJvcHM9byxyLmRlcGVuZHNPbk93blByb3Bz
PWkobyksbz1yKHQsbikpLG99LHJ9fXQuX19lc01vZHVsZT0hMCx0LndyYXBNYXBUb1Byb3BzQ29u
c3RhbnQ9byx0LmdldERlcGVuZHNPbk93blByb3BzPWksdC53cmFwTWFwVG9Qcm9wc0Z1bmM9YTt2
YXIgdT1uKDgzKTtyKHUpfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIo
ZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fXQuX19lc01vZHVsZT0hMCx0
LmNvbm5lY3Q9dC5jb25uZWN0QWR2YW5jZWQ9dC5jcmVhdGVQcm92aWRlcj10LlByb3ZpZGVyPXZv
aWQgMDt2YXIgbz1uKDE4NyksaT1yKG8pLGE9big3OSksdT1yKGEpLHM9bigxODgpLGM9cihzKTt0
LlByb3ZpZGVyPWkuZGVmYXVsdCx0LmNyZWF0ZVByb3ZpZGVyPW8uY3JlYXRlUHJvdmlkZXIsdC5j
b25uZWN0QWR2YW5jZWQ9dS5kZWZhdWx0LHQuY29ubmVjdD1jLmRlZmF1bHR9LGZ1bmN0aW9uKGUs
dCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6
e2RlZmF1bHQ6ZX19dC5fX2VzTW9kdWxlPSEwLHQuc3RvcmVTaGFwZT10LnN1YnNjcmlwdGlvblNo
YXBlPXZvaWQgMDt2YXIgbz1uKDU2KSxpPXIobyk7dC5zdWJzY3JpcHRpb25TaGFwZT1pLmRlZmF1
bHQuc2hhcGUoe3RyeVN1YnNjcmliZTppLmRlZmF1bHQuZnVuYy5pc1JlcXVpcmVkLHRyeVVuc3Vi
c2NyaWJlOmkuZGVmYXVsdC5mdW5jLmlzUmVxdWlyZWQsbm90aWZ5TmVzdGVkU3ViczppLmRlZmF1
bHQuZnVuYy5pc1JlcXVpcmVkLGlzU3Vic2NyaWJlZDppLmRlZmF1bHQuZnVuYy5pc1JlcXVpcmVk
fSksdC5zdG9yZVNoYXBlPWkuZGVmYXVsdC5zaGFwZSh7c3Vic2NyaWJlOmkuZGVmYXVsdC5mdW5j
LmlzUmVxdWlyZWQsZGlzcGF0Y2g6aS5kZWZhdWx0LmZ1bmMuaXNSZXF1aXJlZCxnZXRTdGF0ZTpp
LmRlZmF1bHQuZnVuYy5pc1JlcXVpcmVkfSl9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7
ZnVuY3Rpb24gcihlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19ZnVuY3Rp
b24gbyhlLHQsbil7KDAsYS5kZWZhdWx0KShlKXx8KDAscy5kZWZhdWx0KShuKyIoKSBpbiAiK3Qr
IiBtdXN0IHJldHVybiBhIHBsYWluIG9iamVjdC4gSW5zdGVhZCByZWNlaXZlZCAiK2UrIi4iKX10
Ll9fZXNNb2R1bGU9ITAsdC5kZWZhdWx0PW87dmFyIGk9bigzMyksYT1yKGkpLHU9big1MCkscz1y
KHUpfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIGUm
JmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fWZ1bmN0aW9uIG8oZSx0KXtpZighKGUgaW5zdGFu
Y2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVu
Y3Rpb24iKX1mdW5jdGlvbiBpKGUsdCl7aWYoIWUpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0
aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQi
KTtyZXR1cm4hdHx8Im9iamVjdCIhPXR5cGVvZiB0JiYiZnVuY3Rpb24iIT10eXBlb2YgdD9lOnR9
ZnVuY3Rpb24gYShlLHQpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0JiZudWxsIT09dCl0aHJvdyBu
ZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBm
dW5jdGlvbiwgbm90ICIrdHlwZW9mIHQpO2UucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5w
cm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTplLGVudW1lcmFibGU6ITEsd3JpdGFibGU6ITAs
Y29uZmlndXJhYmxlOiEwfX0pLHQmJihPYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFBy
b3RvdHlwZU9mKGUsdCk6ZS5fX3Byb3RvX189dCl9T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9f
ZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciB1PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQpe2Zv
cih2YXIgbj0wO248dC5sZW5ndGg7bisrKXt2YXIgcj10W25dO3IuZW51bWVyYWJsZT1yLmVudW1l
cmFibGV8fCExLHIuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiByJiYoci53cml0YWJsZT0hMCks
T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsci5rZXkscil9fXJldHVybiBmdW5jdGlvbih0LG4scil7
cmV0dXJuIG4mJmUodC5wcm90b3R5cGUsbiksciYmZSh0LHIpLHR9fSgpLHM9bigxMiksYz1yKHMp
LGw9bigzMSkscD1yKGwpLGQ9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCgpe3ZhciBlLG4scixhO28o
dGhpcyx0KTtmb3IodmFyIHU9YXJndW1lbnRzLmxlbmd0aCxzPUFycmF5KHUpLGM9MDtjPHU7Yysr
KXNbY109YXJndW1lbnRzW2NdO3JldHVybiBuPXI9aSh0aGlzLChlPXQuX19wcm90b19ffHxPYmpl
Y3QuZ2V0UHJvdG90eXBlT2YodCkpLmNhbGwuYXBwbHkoZSxbdGhpc10uY29uY2F0KHMpKSksci5z
dGF0ZT17dGV4dDpyLnByb3BzLnRleHR8fCIifSxyLmhhbmRsZVN1Ym1pdD1mdW5jdGlvbihlKXt2
YXIgdD1lLnRhcmdldC52YWx1ZS50cmltKCk7MTM9PT1lLndoaWNoJiYoci5wcm9wcy5vblNhdmUo
dCksci5wcm9wcy5uZXdUb2RvJiZyLnNldFN0YXRlKHt0ZXh0OiIifSkpfSxyLmhhbmRsZUNoYW5n
ZT1mdW5jdGlvbihlKXtyLnNldFN0YXRlKHt0ZXh0OmUudGFyZ2V0LnZhbHVlfSl9LHIuaGFuZGxl
Qmx1cj1mdW5jdGlvbihlKXtyLnByb3BzLm5ld1RvZG98fHIucHJvcHMub25TYXZlKGUudGFyZ2V0
LnZhbHVlKX0sYT1uLGkocixhKX1yZXR1cm4gYSh0LGUpLHUodCxbe2tleToicmVuZGVyIix2YWx1
ZTpmdW5jdGlvbigpe3JldHVybiBjLmRlZmF1bHQuY3JlYXRlRWxlbWVudCgiaW5wdXQiLHtjbGFz
c05hbWU6KDAscC5kZWZhdWx0KSh7ZWRpdDp0aGlzLnByb3BzLmVkaXRpbmcsIm5ldy10b2RvIjp0
aGlzLnByb3BzLm5ld1RvZG99KSx0eXBlOiJ0ZXh0IixwbGFjZWhvbGRlcjp0aGlzLnByb3BzLnBs
YWNlaG9sZGVyLGF1dG9Gb2N1czoidHJ1ZSIsdmFsdWU6dGhpcy5zdGF0ZS50ZXh0LG9uQmx1cjp0
aGlzLmhhbmRsZUJsdXIsb25DaGFuZ2U6dGhpcy5oYW5kbGVDaGFuZ2Usb25LZXlEb3duOnRoaXMu
aGFuZGxlU3VibWl0fSl9fV0pLHR9KHMuQ29tcG9uZW50KTtkLnByb3BUeXBlcz17b25TYXZlOnMu
UHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCx0ZXh0OnMuUHJvcFR5cGVzLnN0cmluZyxwbGFjZWhv
bGRlcjpzLlByb3BUeXBlcy5zdHJpbmcsZWRpdGluZzpzLlByb3BUeXBlcy5ib29sLG5ld1RvZG86
cy5Qcm9wVHlwZXMuYm9vbH0sdC5kZWZhdWx0PWR9LGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3Qi
O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LkFERF9U
T0RPPSJBRERfVE9ETyIsdC5ERUxFVEVfVE9ETz0iREVMRVRFX1RPRE8iLHQuRURJVF9UT0RPPSJF
RElUX1RPRE8iLHQuQ09NUExFVEVfVE9ETz0iQ09NUExFVEVfVE9ETyIsdC5DT01QTEVURV9BTEw9
IkNPTVBMRVRFX0FMTCIsdC5DTEVBUl9DT01QTEVURUQ9IkNMRUFSX0NPTVBMRVRFRCJ9LGZ1bmN0
aW9uKGUsdCl7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxl
Iix7dmFsdWU6ITB9KTt0LlNIT1dfQUxMPSJzaG93X2FsbCIsdC5TSE9XX0NPTVBMRVRFRD0ic2hv
d19jb21wbGV0ZWQiLHQuU0hPV19BQ1RJVkU9InNob3dfYWN0aXZlIn0sZnVuY3Rpb24oZSx0KXtm
dW5jdGlvbiBuKCl7dGhyb3cgbmV3IEVycm9yKCJzZXRUaW1lb3V0IGhhcyBub3QgYmVlbiBkZWZp
bmVkIil9ZnVuY3Rpb24gcigpe3Rocm93IG5ldyBFcnJvcigiY2xlYXJUaW1lb3V0IGhhcyBub3Qg
YmVlbiBkZWZpbmVkIil9ZnVuY3Rpb24gbyhlKXtpZihsPT09c2V0VGltZW91dClyZXR1cm4gc2V0
VGltZW91dChlLDApO2lmKChsPT09bnx8IWwpJiZzZXRUaW1lb3V0KXJldHVybiBsPXNldFRpbWVv
dXQsc2V0VGltZW91dChlLDApO3RyeXtyZXR1cm4gbChlLDApfWNhdGNoKHQpe3RyeXtyZXR1cm4g
bC5jYWxsKG51bGwsZSwwKX1jYXRjaCh0KXtyZXR1cm4gbC5jYWxsKHRoaXMsZSwwKX19fWZ1bmN0
aW9uIGkoZSl7aWYocD09PWNsZWFyVGltZW91dClyZXR1cm4gY2xlYXJUaW1lb3V0KGUpO2lmKChw
PT09cnx8IXApJiZjbGVhclRpbWVvdXQpcmV0dXJuIHA9Y2xlYXJUaW1lb3V0LGNsZWFyVGltZW91
dChlKTt0cnl7cmV0dXJuIHAoZSl9Y2F0Y2godCl7dHJ5e3JldHVybiBwLmNhbGwobnVsbCxlKTsK
K31jYXRjaCh0KXtyZXR1cm4gcC5jYWxsKHRoaXMsZSl9fX1mdW5jdGlvbiBhKCl7diYmZiYmKHY9
ITEsZi5sZW5ndGg/aD1mLmNvbmNhdChoKTptPS0xLGgubGVuZ3RoJiZ1KCkpfWZ1bmN0aW9uIHUo
KXtpZighdil7dmFyIGU9byhhKTt2PSEwO2Zvcih2YXIgdD1oLmxlbmd0aDt0Oyl7Zm9yKGY9aCxo
PVtdOysrbTx0OylmJiZmW21dLnJ1bigpO209LTEsdD1oLmxlbmd0aH1mPW51bGwsdj0hMSxpKGUp
fX1mdW5jdGlvbiBzKGUsdCl7dGhpcy5mdW49ZSx0aGlzLmFycmF5PXR9ZnVuY3Rpb24gYygpe312
YXIgbCxwLGQ9ZS5leHBvcnRzPXt9OyFmdW5jdGlvbigpe3RyeXtsPSJmdW5jdGlvbiI9PXR5cGVv
ZiBzZXRUaW1lb3V0P3NldFRpbWVvdXQ6bn1jYXRjaChlKXtsPW59dHJ5e3A9ImZ1bmN0aW9uIj09
dHlwZW9mIGNsZWFyVGltZW91dD9jbGVhclRpbWVvdXQ6cn1jYXRjaChlKXtwPXJ9fSgpO3ZhciBm
LGg9W10sdj0hMSxtPS0xO2QubmV4dFRpY2s9ZnVuY3Rpb24oZSl7dmFyIHQ9bmV3IEFycmF5KGFy
Z3VtZW50cy5sZW5ndGgtMSk7aWYoYXJndW1lbnRzLmxlbmd0aD4xKWZvcih2YXIgbj0xO248YXJn
dW1lbnRzLmxlbmd0aDtuKyspdFtuLTFdPWFyZ3VtZW50c1tuXTtoLnB1c2gobmV3IHMoZSx0KSks
MSE9PWgubGVuZ3RofHx2fHxvKHUpfSxzLnByb3RvdHlwZS5ydW49ZnVuY3Rpb24oKXt0aGlzLmZ1
bi5hcHBseShudWxsLHRoaXMuYXJyYXkpfSxkLnRpdGxlPSJicm93c2VyIixkLmJyb3dzZXI9ITAs
ZC5lbnY9e30sZC5hcmd2PVtdLGQudmVyc2lvbj0iIixkLnZlcnNpb25zPXt9LGQub249YyxkLmFk
ZExpc3RlbmVyPWMsZC5vbmNlPWMsZC5vZmY9YyxkLnJlbW92ZUxpc3RlbmVyPWMsZC5yZW1vdmVB
bGxMaXN0ZW5lcnM9YyxkLmVtaXQ9YyxkLmJpbmRpbmc9ZnVuY3Rpb24oZSl7dGhyb3cgbmV3IEVy
cm9yKCJwcm9jZXNzLmJpbmRpbmcgaXMgbm90IHN1cHBvcnRlZCIpfSxkLmN3ZD1mdW5jdGlvbigp
e3JldHVybiIvIn0sZC5jaGRpcj1mdW5jdGlvbihlKXt0aHJvdyBuZXcgRXJyb3IoInByb2Nlc3Mu
Y2hkaXIgaXMgbm90IHN1cHBvcnRlZCIpfSxkLnVtYXNrPWZ1bmN0aW9uKCl7cmV0dXJuIDB9fSxm
dW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoKXt9ZnVuY3Rpb24gbyhlKXt0
cnl7cmV0dXJuIGUudGhlbn1jYXRjaCh0KXtyZXR1cm4geT10LGd9fWZ1bmN0aW9uIGkoZSx0KXt0
cnl7cmV0dXJuIGUodCl9Y2F0Y2gobil7cmV0dXJuIHk9bixnfX1mdW5jdGlvbiBhKGUsdCxuKXt0
cnl7ZSh0LG4pfWNhdGNoKHIpe3JldHVybiB5PXIsZ319ZnVuY3Rpb24gdShlKXtpZigib2JqZWN0
IiE9dHlwZW9mIHRoaXMpdGhyb3cgbmV3IFR5cGVFcnJvcigiUHJvbWlzZXMgbXVzdCBiZSBjb25z
dHJ1Y3RlZCB2aWEgbmV3Iik7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVF
cnJvcigibm90IGEgZnVuY3Rpb24iKTt0aGlzLl80NT0wLHRoaXMuXzgxPTAsdGhpcy5fNjU9bnVs
bCx0aGlzLl81ND1udWxsLGUhPT1yJiZ2KGUsdGhpcyl9ZnVuY3Rpb24gcyhlLHQsbil7cmV0dXJu
IG5ldyBlLmNvbnN0cnVjdG9yKGZ1bmN0aW9uKG8saSl7dmFyIGE9bmV3IHUocik7YS50aGVuKG8s
aSksYyhlLG5ldyBoKHQsbixhKSl9KX1mdW5jdGlvbiBjKGUsdCl7Zm9yKDszPT09ZS5fODE7KWU9
ZS5fNjU7cmV0dXJuIHUuXzEwJiZ1Ll8xMChlKSwwPT09ZS5fODE/MD09PWUuXzQ1PyhlLl80NT0x
LHZvaWQoZS5fNTQ9dCkpOjE9PT1lLl80NT8oZS5fNDU9Mix2b2lkKGUuXzU0PVtlLl81NCx0XSkp
OnZvaWQgZS5fNTQucHVzaCh0KTp2b2lkIGwoZSx0KX1mdW5jdGlvbiBsKGUsdCl7bShmdW5jdGlv
bigpe3ZhciBuPTE9PT1lLl84MT90Lm9uRnVsZmlsbGVkOnQub25SZWplY3RlZDtpZihudWxsPT09
bilyZXR1cm4gdm9pZCgxPT09ZS5fODE/cCh0LnByb21pc2UsZS5fNjUpOmQodC5wcm9taXNlLGUu
XzY1KSk7dmFyIHI9aShuLGUuXzY1KTtyPT09Zz9kKHQucHJvbWlzZSx5KTpwKHQucHJvbWlzZSxy
KX0pfWZ1bmN0aW9uIHAoZSx0KXtpZih0PT09ZSlyZXR1cm4gZChlLG5ldyBUeXBlRXJyb3IoIkEg
cHJvbWlzZSBjYW5ub3QgYmUgcmVzb2x2ZWQgd2l0aCBpdHNlbGYuIikpO2lmKHQmJigib2JqZWN0
Ij09dHlwZW9mIHR8fCJmdW5jdGlvbiI9PXR5cGVvZiB0KSl7dmFyIG49byh0KTtpZihuPT09Zyly
ZXR1cm4gZChlLHkpO2lmKG49PT1lLnRoZW4mJnQgaW5zdGFuY2VvZiB1KXJldHVybiBlLl84MT0z
LGUuXzY1PXQsdm9pZCBmKGUpO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBuKXJldHVybiB2b2lkIHYo
bi5iaW5kKHQpLGUpfWUuXzgxPTEsZS5fNjU9dCxmKGUpfWZ1bmN0aW9uIGQoZSx0KXtlLl84MT0y
LGUuXzY1PXQsdS5fOTcmJnUuXzk3KGUsdCksZihlKX1mdW5jdGlvbiBmKGUpe2lmKDE9PT1lLl80
NSYmKGMoZSxlLl81NCksZS5fNTQ9bnVsbCksMj09PWUuXzQ1KXtmb3IodmFyIHQ9MDt0PGUuXzU0
Lmxlbmd0aDt0KyspYyhlLGUuXzU0W3RdKTtlLl81ND1udWxsfX1mdW5jdGlvbiBoKGUsdCxuKXt0
aGlzLm9uRnVsZmlsbGVkPSJmdW5jdGlvbiI9PXR5cGVvZiBlP2U6bnVsbCx0aGlzLm9uUmVqZWN0
ZWQ9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpudWxsLHRoaXMucHJvbWlzZT1ufWZ1bmN0aW9uIHYo
ZSx0KXt2YXIgbj0hMSxyPWEoZSxmdW5jdGlvbihlKXtufHwobj0hMCxwKHQsZSkpfSxmdW5jdGlv
bihlKXtufHwobj0hMCxkKHQsZSkpfSk7bnx8ciE9PWd8fChuPSEwLGQodCx5KSl9dmFyIG09bigx
OTcpLHk9bnVsbCxnPXt9O2UuZXhwb3J0cz11LHUuXzEwPW51bGwsdS5fOTc9bnVsbCx1Ll82MT1y
LHUucHJvdG90eXBlLnRoZW49ZnVuY3Rpb24oZSx0KXtpZih0aGlzLmNvbnN0cnVjdG9yIT09dSly
ZXR1cm4gcyh0aGlzLGUsdCk7dmFyIG49bmV3IHUocik7cmV0dXJuIGModGhpcyxuZXcgaChlLHQs
bikpLG59fSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0LG4pe3Ro
aXMucHJvcHM9ZSx0aGlzLmNvbnRleHQ9dCx0aGlzLnJlZnM9Yyx0aGlzLnVwZGF0ZXI9bnx8c31m
dW5jdGlvbiBvKGUsdCxuKXt0aGlzLnByb3BzPWUsdGhpcy5jb250ZXh0PXQsdGhpcy5yZWZzPWMs
dGhpcy51cGRhdGVyPW58fHN9ZnVuY3Rpb24gaSgpe312YXIgYT1uKDIzKSx1PW4oNCkscz1uKDky
KSxjPShuKDkzKSxuKDI0KSk7bigxKSxuKDIyMik7ci5wcm90b3R5cGUuaXNSZWFjdENvbXBvbmVu
dD17fSxyLnByb3RvdHlwZS5zZXRTdGF0ZT1mdW5jdGlvbihlLHQpeyJvYmplY3QiIT10eXBlb2Yg
ZSYmImZ1bmN0aW9uIiE9dHlwZW9mIGUmJm51bGwhPWU/YSgiODUiKTp2b2lkIDAsdGhpcy51cGRh
dGVyLmVucXVldWVTZXRTdGF0ZSh0aGlzLGUpLHQmJnRoaXMudXBkYXRlci5lbnF1ZXVlQ2FsbGJh
Y2sodGhpcyx0LCJzZXRTdGF0ZSIpfSxyLnByb3RvdHlwZS5mb3JjZVVwZGF0ZT1mdW5jdGlvbihl
KXt0aGlzLnVwZGF0ZXIuZW5xdWV1ZUZvcmNlVXBkYXRlKHRoaXMpLGUmJnRoaXMudXBkYXRlci5l
bnF1ZXVlQ2FsbGJhY2sodGhpcyxlLCJmb3JjZVVwZGF0ZSIpfTtpLnByb3RvdHlwZT1yLnByb3Rv
dHlwZSxvLnByb3RvdHlwZT1uZXcgaSxvLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1vLHUoby5wcm90
b3R5cGUsci5wcm90b3R5cGUpLG8ucHJvdG90eXBlLmlzUHVyZVJlYWN0Q29tcG9uZW50PSEwLGUu
ZXhwb3J0cz17Q29tcG9uZW50OnIsUHVyZUNvbXBvbmVudDpvfX0sZnVuY3Rpb24oZSx0LG4peyJ1
c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3ZhciB0PUZ1bmN0aW9uLnByb3RvdHlwZS50b1N0cmlu
ZyxuPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkscj1SZWdFeHAoIl4iK3QuY2FsbChu
KS5yZXBsYWNlKC9bXFxeJC4qKz8oKVtcXXt9fF0vZywiXFwkJiIpLnJlcGxhY2UoL2hhc093blBy
b3BlcnR5fChmdW5jdGlvbikuKj8oPz1cXFwoKXwgZm9yIC4rPyg/PVxcXF0pL2csIiQxLio/Iikr
IiQiKTt0cnl7dmFyIG89dC5jYWxsKGUpO3JldHVybiByLnRlc3Qobyl9Y2F0Y2goaSl7cmV0dXJu
ITF9fWZ1bmN0aW9uIG8oZSl7dmFyIHQ9YyhlKTtpZih0KXt2YXIgbj10LmNoaWxkSURzO2woZSks
bi5mb3JFYWNoKG8pfX1mdW5jdGlvbiBpKGUsdCxuKXtyZXR1cm4iXG4gICAgaW4gIisoZXx8IlVu
a25vd24iKSsodD8iIChhdCAiK3QuZmlsZU5hbWUucmVwbGFjZSgvXi4qW1xcXC9dLywiIikrIjoi
K3QubGluZU51bWJlcisiKSI6bj8iIChjcmVhdGVkIGJ5ICIrbisiKSI6IiIpfWZ1bmN0aW9uIGEo
ZSl7cmV0dXJuIG51bGw9PWU/IiNlbXB0eSI6InN0cmluZyI9PXR5cGVvZiBlfHwibnVtYmVyIj09
dHlwZW9mIGU/IiN0ZXh0Ijoic3RyaW5nIj09dHlwZW9mIGUudHlwZT9lLnR5cGU6ZS50eXBlLmRp
c3BsYXlOYW1lfHxlLnR5cGUubmFtZXx8IlVua25vd24ifWZ1bmN0aW9uIHUoZSl7dmFyIHQsbj1Q
LmdldERpc3BsYXlOYW1lKGUpLHI9UC5nZXRFbGVtZW50KGUpLG89UC5nZXRPd25lcklEKGUpO3Jl
dHVybiBvJiYodD1QLmdldERpc3BsYXlOYW1lKG8pKSxpKG4sciYmci5fc291cmNlLHQpfXZhciBz
LGMsbCxwLGQsZixoLHY9bigyMyksbT1uKDExKSx5PShuKDEpLG4oMiksImZ1bmN0aW9uIj09dHlw
ZW9mIEFycmF5LmZyb20mJiJmdW5jdGlvbiI9PXR5cGVvZiBNYXAmJnIoTWFwKSYmbnVsbCE9TWFw
LnByb3RvdHlwZSYmImZ1bmN0aW9uIj09dHlwZW9mIE1hcC5wcm90b3R5cGUua2V5cyYmcihNYXAu
cHJvdG90eXBlLmtleXMpJiYiZnVuY3Rpb24iPT10eXBlb2YgU2V0JiZyKFNldCkmJm51bGwhPVNl
dC5wcm90b3R5cGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBTZXQucHJvdG90eXBlLmtleXMmJnIoU2V0
LnByb3RvdHlwZS5rZXlzKSk7aWYoeSl7dmFyIGc9bmV3IE1hcCxiPW5ldyBTZXQ7cz1mdW5jdGlv
bihlLHQpe2cuc2V0KGUsdCl9LGM9ZnVuY3Rpb24oZSl7cmV0dXJuIGcuZ2V0KGUpfSxsPWZ1bmN0
aW9uKGUpe2cuZGVsZXRlKGUpfSxwPWZ1bmN0aW9uKCl7cmV0dXJuIEFycmF5LmZyb20oZy5rZXlz
KCkpfSxkPWZ1bmN0aW9uKGUpe2IuYWRkKGUpfSxmPWZ1bmN0aW9uKGUpe2IuZGVsZXRlKGUpfSxo
PWZ1bmN0aW9uKCl7cmV0dXJuIEFycmF5LmZyb20oYi5rZXlzKCkpfX1lbHNle3ZhciBfPXt9LEM9
e30sRT1mdW5jdGlvbihlKXtyZXR1cm4iLiIrZX0sdz1mdW5jdGlvbihlKXtyZXR1cm4gcGFyc2VJ
bnQoZS5zdWJzdHIoMSksMTApfTtzPWZ1bmN0aW9uKGUsdCl7dmFyIG49RShlKTtfW25dPXR9LGM9
ZnVuY3Rpb24oZSl7dmFyIHQ9RShlKTtyZXR1cm4gX1t0XX0sbD1mdW5jdGlvbihlKXt2YXIgdD1F
KGUpO2RlbGV0ZSBfW3RdfSxwPWZ1bmN0aW9uKCl7cmV0dXJuIE9iamVjdC5rZXlzKF8pLm1hcCh3
KX0sZD1mdW5jdGlvbihlKXt2YXIgdD1FKGUpO0NbdF09ITB9LGY9ZnVuY3Rpb24oZSl7dmFyIHQ9
RShlKTtkZWxldGUgQ1t0XX0saD1mdW5jdGlvbigpe3JldHVybiBPYmplY3Qua2V5cyhDKS5tYXAo
dyl9fXZhciBUPVtdLFA9e29uU2V0Q2hpbGRyZW46ZnVuY3Rpb24oZSx0KXt2YXIgbj1jKGUpO24/
dm9pZCAwOnYoIjE0NCIpLG4uY2hpbGRJRHM9dDtmb3IodmFyIHI9MDtyPHQubGVuZ3RoO3IrKyl7
dmFyIG89dFtyXSxpPWMobyk7aT92b2lkIDA6digiMTQwIiksbnVsbD09aS5jaGlsZElEcyYmIm9i
amVjdCI9PXR5cGVvZiBpLmVsZW1lbnQmJm51bGwhPWkuZWxlbWVudD92KCIxNDEiKTp2b2lkIDAs
aS5pc01vdW50ZWQ/dm9pZCAwOnYoIjcxIiksbnVsbD09aS5wYXJlbnRJRCYmKGkucGFyZW50SUQ9
ZSksaS5wYXJlbnRJRCE9PWU/digiMTQyIixvLGkucGFyZW50SUQsZSk6dm9pZCAwfX0sb25CZWZv
cmVNb3VudENvbXBvbmVudDpmdW5jdGlvbihlLHQsbil7dmFyIHI9e2VsZW1lbnQ6dCxwYXJlbnRJ
RDpuLHRleHQ6bnVsbCxjaGlsZElEczpbXSxpc01vdW50ZWQ6ITEsdXBkYXRlQ291bnQ6MH07cyhl
LHIpfSxvbkJlZm9yZVVwZGF0ZUNvbXBvbmVudDpmdW5jdGlvbihlLHQpe3ZhciBuPWMoZSk7biYm
bi5pc01vdW50ZWQmJihuLmVsZW1lbnQ9dCl9LG9uTW91bnRDb21wb25lbnQ6ZnVuY3Rpb24oZSl7
dmFyIHQ9YyhlKTt0P3ZvaWQgMDp2KCIxNDQiKSx0LmlzTW91bnRlZD0hMDt2YXIgbj0wPT09dC5w
YXJlbnRJRDtuJiZkKGUpfSxvblVwZGF0ZUNvbXBvbmVudDpmdW5jdGlvbihlKXt2YXIgdD1jKGUp
O3QmJnQuaXNNb3VudGVkJiZ0LnVwZGF0ZUNvdW50Kyt9LG9uVW5tb3VudENvbXBvbmVudDpmdW5j
dGlvbihlKXt2YXIgdD1jKGUpO2lmKHQpe3QuaXNNb3VudGVkPSExO3ZhciBuPTA9PT10LnBhcmVu
dElEO24mJmYoZSl9VC5wdXNoKGUpfSxwdXJnZVVubW91bnRlZENvbXBvbmVudHM6ZnVuY3Rpb24o
KXtpZighUC5fcHJldmVudFB1cmdpbmcpe2Zvcih2YXIgZT0wO2U8VC5sZW5ndGg7ZSsrKXt2YXIg
dD1UW2VdO28odCl9VC5sZW5ndGg9MH19LGlzTW91bnRlZDpmdW5jdGlvbihlKXt2YXIgdD1jKGUp
O3JldHVybiEhdCYmdC5pc01vdW50ZWR9LGdldEN1cnJlbnRTdGFja0FkZGVuZHVtOmZ1bmN0aW9u
KGUpe3ZhciB0PSIiO2lmKGUpe3ZhciBuPWEoZSkscj1lLl9vd25lcjt0Kz1pKG4sZS5fc291cmNl
LHImJnIuZ2V0TmFtZSgpKX12YXIgbz1tLmN1cnJlbnQsdT1vJiZvLl9kZWJ1Z0lEO3JldHVybiB0
Kz1QLmdldFN0YWNrQWRkZW5kdW1CeUlEKHUpfSxnZXRTdGFja0FkZGVuZHVtQnlJRDpmdW5jdGlv
bihlKXtmb3IodmFyIHQ9IiI7ZTspdCs9dShlKSxlPVAuZ2V0UGFyZW50SUQoZSk7cmV0dXJuIHR9
LGdldENoaWxkSURzOmZ1bmN0aW9uKGUpe3ZhciB0PWMoZSk7cmV0dXJuIHQ/dC5jaGlsZElEczpb
XX0sZ2V0RGlzcGxheU5hbWU6ZnVuY3Rpb24oZSl7dmFyIHQ9UC5nZXRFbGVtZW50KGUpO3JldHVy
biB0P2EodCk6bnVsbH0sZ2V0RWxlbWVudDpmdW5jdGlvbihlKXt2YXIgdD1jKGUpO3JldHVybiB0
P3QuZWxlbWVudDpudWxsfSxnZXRPd25lcklEOmZ1bmN0aW9uKGUpe3ZhciB0PVAuZ2V0RWxlbWVu
dChlKTtyZXR1cm4gdCYmdC5fb3duZXI/dC5fb3duZXIuX2RlYnVnSUQ6bnVsbH0sZ2V0UGFyZW50
SUQ6ZnVuY3Rpb24oZSl7dmFyIHQ9YyhlKTtyZXR1cm4gdD90LnBhcmVudElEOm51bGx9LGdldFNv
dXJjZTpmdW5jdGlvbihlKXt2YXIgdD1jKGUpLG49dD90LmVsZW1lbnQ6bnVsbCxyPW51bGwhPW4/
bi5fc291cmNlOm51bGw7cmV0dXJuIHJ9LGdldFRleHQ6ZnVuY3Rpb24oZSl7dmFyIHQ9UC5nZXRF
bGVtZW50KGUpO3JldHVybiJzdHJpbmciPT10eXBlb2YgdD90OiJudW1iZXIiPT10eXBlb2YgdD8i
Iit0Om51bGx9LGdldFVwZGF0ZUNvdW50OmZ1bmN0aW9uKGUpe3ZhciB0PWMoZSk7cmV0dXJuIHQ/
dC51cGRhdGVDb3VudDowfSxnZXRSb290SURzOmgsZ2V0UmVnaXN0ZXJlZElEczpwLHB1c2hOb25T
dGFuZGFyZFdhcm5pbmdTdGFjazpmdW5jdGlvbihlLHQpe2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBj
b25zb2xlLnJlYWN0U3RhY2spe3ZhciBuPVtdLHI9bS5jdXJyZW50LG89ciYmci5fZGVidWdJRDt0
cnl7Zm9yKGUmJm4ucHVzaCh7bmFtZTpvP1AuZ2V0RGlzcGxheU5hbWUobyk6bnVsbCxmaWxlTmFt
ZTp0P3QuZmlsZU5hbWU6bnVsbCxsaW5lTnVtYmVyOnQ/dC5saW5lTnVtYmVyOm51bGx9KTtvOyl7
dmFyIGk9UC5nZXRFbGVtZW50KG8pLGE9UC5nZXRQYXJlbnRJRChvKSx1PVAuZ2V0T3duZXJJRChv
KSxzPXU/UC5nZXREaXNwbGF5TmFtZSh1KTpudWxsLGM9aSYmaS5fc291cmNlO24ucHVzaCh7bmFt
ZTpzLGZpbGVOYW1lOmM/Yy5maWxlTmFtZTpudWxsLGxpbmVOdW1iZXI6Yz9jLmxpbmVOdW1iZXI6
bnVsbH0pLG89YX19Y2F0Y2gobCl7fWNvbnNvbGUucmVhY3RTdGFjayhuKX19LHBvcE5vblN0YW5k
YXJkV2FybmluZ1N0YWNrOmZ1bmN0aW9uKCl7ImZ1bmN0aW9uIj09dHlwZW9mIGNvbnNvbGUucmVh
Y3RTdGFja0VuZCYmY29uc29sZS5yZWFjdFN0YWNrRW5kKCl9fTtlLmV4cG9ydHM9UH0sZnVuY3Rp
b24oZSx0KXsidXNlIHN0cmljdCI7dmFyIG49ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmU3lt
Ym9sLmZvciYmU3ltYm9sLmZvcigicmVhY3QuZWxlbWVudCIpfHw2MDEwMztlLmV4cG9ydHM9bn0s
ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCl7fXZhciBvPShuKDIp
LHtpc01vdW50ZWQ6ZnVuY3Rpb24oZSl7cmV0dXJuITF9LGVucXVldWVDYWxsYmFjazpmdW5jdGlv
bihlLHQpe30sZW5xdWV1ZUZvcmNlVXBkYXRlOmZ1bmN0aW9uKGUpe3IoZSwiZm9yY2VVcGRhdGUi
KX0sZW5xdWV1ZVJlcGxhY2VTdGF0ZTpmdW5jdGlvbihlLHQpe3IoZSwicmVwbGFjZVN0YXRlIil9
LGVucXVldWVTZXRTdGF0ZTpmdW5jdGlvbihlLHQpe3IoZSwic2V0U3RhdGUiKX19KTtlLmV4cG9y
dHM9b30sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj0hMTtlLmV4cG9ydHM9cn0s
ZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbigpe2Zvcih2YXIgZT1hcmd1bWVu
dHMubGVuZ3RoLHQ9QXJyYXkoZSksbj0wO248ZTtuKyspdFtuXT1hcmd1bWVudHNbbl07cmV0dXJu
IDA9PT10Lmxlbmd0aD9mdW5jdGlvbihlKXtyZXR1cm4gZX06MT09PXQubGVuZ3RoP3RbMF06dC5y
ZWR1Y2UoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gZSh0LmFwcGx5KHZv
aWQgMCxhcmd1bWVudHMpKX19KX10Ll9fZXNNb2R1bGU9ITAsdC5kZWZhdWx0PW59LGZ1bmN0aW9u
KGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxl
P2U6e2RlZmF1bHQ6ZX19ZnVuY3Rpb24gbyhlLHQsbil7ZnVuY3Rpb24gcigpe3k9PT1tJiYoeT1t
LnNsaWNlKCkpfWZ1bmN0aW9uIGkoKXtyZXR1cm4gdn1mdW5jdGlvbiB1KGUpe2lmKCJmdW5jdGlv
biIhPXR5cGVvZiBlKXRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgbGlzdGVuZXIgdG8gYmUgYSBm
dW5jdGlvbi4iKTt2YXIgdD0hMDtyZXR1cm4gcigpLHkucHVzaChlKSxmdW5jdGlvbigpe2lmKHQp
e3Q9ITEscigpO3ZhciBuPXkuaW5kZXhPZihlKTt5LnNwbGljZShuLDEpfX19ZnVuY3Rpb24gbChl
KXtpZighKDAsYS5kZWZhdWx0KShlKSl0aHJvdyBuZXcgRXJyb3IoIkFjdGlvbnMgbXVzdCBiZSBw
bGFpbiBvYmplY3RzLiBVc2UgY3VzdG9tIG1pZGRsZXdhcmUgZm9yIGFzeW5jIGFjdGlvbnMuIik7
aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBlLnR5cGUpdGhyb3cgbmV3IEVycm9yKCdBY3Rpb25zIG1h
eSBub3QgaGF2ZSBhbiB1bmRlZmluZWQgInR5cGUiIHByb3BlcnR5LiBIYXZlIHlvdSBtaXNzcGVs
bGVkIGEgY29uc3RhbnQ/Jyk7aWYoZyl0aHJvdyBuZXcgRXJyb3IoIlJlZHVjZXJzIG1heSBub3Qg
ZGlzcGF0Y2ggYWN0aW9ucy4iKTt0cnl7Zz0hMCx2PWgodixlKX1maW5hbGx5e2c9ITF9Zm9yKHZh
ciB0PW09eSxuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciByPXRbbl07cigpfXJldHVybiBlfWZ1bmN0
aW9uIHAoZSl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGUpdGhyb3cgbmV3IEVycm9yKCJFeHBlY3Rl
ZCB0aGUgbmV4dFJlZHVjZXIgdG8gYmUgYSBmdW5jdGlvbi4iKTtoPWUsbCh7dHlwZTpjLklOSVR9
KX1mdW5jdGlvbiBkKCl7dmFyIGUsdD11O3JldHVybiBlPXtzdWJzY3JpYmU6ZnVuY3Rpb24oZSl7
ZnVuY3Rpb24gbigpe2UubmV4dCYmZS5uZXh0KGkoKSl9aWYoIm9iamVjdCIhPXR5cGVvZiBlKXRo
cm93IG5ldyBUeXBlRXJyb3IoIkV4cGVjdGVkIHRoZSBvYnNlcnZlciB0byBiZSBhbiBvYmplY3Qu
Iik7bigpO3ZhciByPXQobik7cmV0dXJue3Vuc3Vic2NyaWJlOnJ9fX0sZVtzLmRlZmF1bHRdPWZ1
bmN0aW9uKCl7cmV0dXJuIHRoaXN9LGV9dmFyIGY7aWYoImZ1bmN0aW9uIj09dHlwZW9mIHQmJiJ1
bmRlZmluZWQiPT10eXBlb2YgbiYmKG49dCx0PXZvaWQgMCksInVuZGVmaW5lZCIhPXR5cGVvZiBu
KXtpZigiZnVuY3Rpb24iIT10eXBlb2Ygbil0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIHRoZSBl
bmhhbmNlciB0byBiZSBhIGZ1bmN0aW9uLiIpO3JldHVybiBuKG8pKGUsdCl9aWYoImZ1bmN0aW9u
IiE9dHlwZW9mIGUpdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCB0aGUgcmVkdWNlciB0byBiZSBh
IGZ1bmN0aW9uLiIpO3ZhciBoPWUsdj10LG09W10seT1tLGc9ITE7cmV0dXJuIGwoe3R5cGU6Yy5J
TklUfSksZj17ZGlzcGF0Y2g6bCxzdWJzY3JpYmU6dSxnZXRTdGF0ZTppLHJlcGxhY2VSZWR1Y2Vy
OnB9LGZbcy5kZWZhdWx0XT1kLGZ9dC5fX2VzTW9kdWxlPSEwLHQuQWN0aW9uVHlwZXM9dm9pZCAw
LHQuZGVmYXVsdD1vO3ZhciBpPW4oMzMpLGE9cihpKSx1PW4oMjI4KSxzPXIodSksYz10LkFjdGlv
blR5cGVzPXtJTklUOiJAQHJlZHV4L0lOSVQifX0sZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7
ZnVuY3Rpb24gbihlKXsidW5kZWZpbmVkIiE9dHlwZW9mIGNvbnNvbGUmJiJmdW5jdGlvbiI9PXR5
cGVvZiBjb25zb2xlLmVycm9yJiZjb25zb2xlLmVycm9yKGUpO3RyeXt0aHJvdyBuZXcgRXJyb3Io
ZSl9Y2F0Y2godCl7fX10Ll9fZXNNb2R1bGU9ITAsdC5kZWZhdWx0PW59LGZ1bmN0aW9uKGUsdCxu
KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1cm4gZX1mdW5jdGlvbiBvKGUsdCxuKXtm
dW5jdGlvbiBvKGUsdCl7dmFyIG49Zy5oYXNPd25Qcm9wZXJ0eSh0KT9nW3RdOm51bGw7RS5oYXNP
d25Qcm9wZXJ0eSh0KSYmcygiT1ZFUlJJREVfQkFTRSI9PT1uLCJSZWFjdENsYXNzSW50ZXJmYWNl
OiBZb3UgYXJlIGF0dGVtcHRpbmcgdG8gb3ZlcnJpZGUgYCVzYCBmcm9tIHlvdXIgY2xhc3Mgc3Bl
Y2lmaWNhdGlvbi4gRW5zdXJlIHRoYXQgeW91ciBtZXRob2QgbmFtZXMgZG8gbm90IG92ZXJsYXAg
d2l0aCBSZWFjdCBtZXRob2RzLiIsdCksZSYmcygiREVGSU5FX01BTlkiPT09bnx8IkRFRklORV9N
QU5ZX01FUkdFRCI9PT1uLCJSZWFjdENsYXNzSW50ZXJmYWNlOiBZb3UgYXJlIGF0dGVtcHRpbmcg
dG8gZGVmaW5lIGAlc2Agb24geW91ciBjb21wb25lbnQgbW9yZSB0aGFuIG9uY2UuIFRoaXMgY29u
ZmxpY3QgbWF5IGJlIGR1ZSB0byBhIG1peGluLiIsdCl9ZnVuY3Rpb24gaShlLG4pe2lmKG4pe3Mo
ImZ1bmN0aW9uIiE9dHlwZW9mIG4sIlJlYWN0Q2xhc3M6IFlvdSdyZSBhdHRlbXB0aW5nIHRvIHVz
ZSBhIGNvbXBvbmVudCBjbGFzcyBvciBmdW5jdGlvbiBhcyBhIG1peGluLiBJbnN0ZWFkLCBqdXN0
IHVzZSBhIHJlZ3VsYXIgb2JqZWN0LiIpLHMoIXQobiksIlJlYWN0Q2xhc3M6IFlvdSdyZSBhdHRl
bXB0aW5nIHRvIHVzZSBhIGNvbXBvbmVudCBhcyBhIG1peGluLiBJbnN0ZWFkLCBqdXN0IHVzZSBh
IHJlZ3VsYXIgb2JqZWN0LiIpO3ZhciByPWUucHJvdG90eXBlLGk9ci5fX3JlYWN0QXV0b0JpbmRQ
YWlycztuLmhhc093blByb3BlcnR5KGMpJiZiLm1peGlucyhlLG4ubWl4aW5zKTtmb3IodmFyIGEg
aW4gbilpZihuLmhhc093blByb3BlcnR5KGEpJiZhIT09Yyl7dmFyIHU9blthXSxsPXIuaGFzT3du
UHJvcGVydHkoYSk7aWYobyhsLGEpLGIuaGFzT3duUHJvcGVydHkoYSkpYlthXShlLHUpO2Vsc2V7
dmFyIHA9Zy5oYXNPd25Qcm9wZXJ0eShhKSxoPSJmdW5jdGlvbiI9PXR5cGVvZiB1LHY9aCYmIXAm
JiFsJiZuLmF1dG9iaW5kIT09ITE7aWYodilpLnB1c2goYSx1KSxyW2FdPXU7ZWxzZSBpZihsKXt2
YXIgbT1nW2FdO3MocCYmKCJERUZJTkVfTUFOWV9NRVJHRUQiPT09bXx8IkRFRklORV9NQU5ZIj09
PW0pLCJSZWFjdENsYXNzOiBVbmV4cGVjdGVkIHNwZWMgcG9saWN5ICVzIGZvciBrZXkgJXMgd2hl
biBtaXhpbmcgaW4gY29tcG9uZW50IHNwZWNzLiIsbSxhKSwiREVGSU5FX01BTllfTUVSR0VEIj09
PW0/clthXT1kKHJbYV0sdSk6IkRFRklORV9NQU5ZIj09PW0mJihyW2FdPWYoclthXSx1KSl9ZWxz
ZSByW2FdPXV9fX1lbHNlO31mdW5jdGlvbiBsKGUsdCl7aWYodClmb3IodmFyIG4gaW4gdCl7dmFy
IHI9dFtuXTtpZih0Lmhhc093blByb3BlcnR5KG4pKXt2YXIgbz1uIGluIGI7cyghbywnUmVhY3RD
bGFzczogWW91IGFyZSBhdHRlbXB0aW5nIHRvIGRlZmluZSBhIHJlc2VydmVkIHByb3BlcnR5LCBg
JXNgLCB0aGF0IHNob3VsZG5cJ3QgYmUgb24gdGhlICJzdGF0aWNzIiBrZXkuIERlZmluZSBpdCBh
cyBhbiBpbnN0YW5jZSBwcm9wZXJ0eSBpbnN0ZWFkOyBpdCB3aWxsIHN0aWxsIGJlIGFjY2Vzc2li
bGUgb24gdGhlIGNvbnN0cnVjdG9yLicsbik7dmFyIGk9biBpbiBlO3MoIWksIlJlYWN0Q2xhc3M6
IFlvdSBhcmUgYXR0ZW1wdGluZyB0byBkZWZpbmUgYCVzYCBvbiB5b3VyIGNvbXBvbmVudCBtb3Jl
IHRoYW4gb25jZS4gVGhpcyBjb25mbGljdCBtYXkgYmUgZHVlIHRvIGEgbWl4aW4uIixuKSxlW25d
PXJ9fX1mdW5jdGlvbiBwKGUsdCl7cyhlJiZ0JiYib2JqZWN0Ij09dHlwZW9mIGUmJiJvYmplY3Qi
PT10eXBlb2YgdCwibWVyZ2VJbnRvV2l0aE5vRHVwbGljYXRlS2V5cygpOiBDYW5ub3QgbWVyZ2Ug
bm9uLW9iamVjdHMuIik7Zm9yKHZhciBuIGluIHQpdC5oYXNPd25Qcm9wZXJ0eShuKSYmKHModm9p
ZCAwPT09ZVtuXSwibWVyZ2VJbnRvV2l0aE5vRHVwbGljYXRlS2V5cygpOiBUcmllZCB0byBtZXJn
ZSB0d28gb2JqZWN0cyB3aXRoIHRoZSBzYW1lIGtleTogYCVzYC4gVGhpcyBjb25mbGljdCBtYXkg
YmUgZHVlIHRvIGEgbWl4aW47IGluIHBhcnRpY3VsYXIsIHRoaXMgbWF5IGJlIGNhdXNlZCBieSB0
d28gZ2V0SW5pdGlhbFN0YXRlKCkgb3IgZ2V0RGVmYXVsdFByb3BzKCkgbWV0aG9kcyByZXR1cm5p
bmcgb2JqZWN0cyB3aXRoIGNsYXNoaW5nIGtleXMuIixuKSxlW25dPXRbbl0pO3JldHVybiBlfWZ1
bmN0aW9uIGQoZSx0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbj1lLmFwcGx5KHRoaXMsYXJndW1l
bnRzKSxyPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpO2lmKG51bGw9PW4pcmV0dXJuIHI7aWYobnVs
bD09cilyZXR1cm4gbjt2YXIgbz17fTtyZXR1cm4gcChvLG4pLHAobyxyKSxvfX1mdW5jdGlvbiBm
KGUsdCl7cmV0dXJuIGZ1bmN0aW9uKCl7ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyksdC5hcHBseSh0
aGlzLGFyZ3VtZW50cyl9fWZ1bmN0aW9uIGgoZSx0KXt2YXIgbj10LmJpbmQoZSk7cmV0dXJuIG59
ZnVuY3Rpb24gdihlKXtmb3IodmFyIHQ9ZS5fX3JlYWN0QXV0b0JpbmRQYWlycyxuPTA7bjx0Lmxl
bmd0aDtuKz0yKXt2YXIgcj10W25dLG89dFtuKzFdO2Vbcl09aChlLG8pfX1mdW5jdGlvbiBtKGUp
e3ZhciB0PXIoZnVuY3Rpb24oZSxyLG8pe3RoaXMuX19yZWFjdEF1dG9CaW5kUGFpcnMubGVuZ3Ro
JiZ2KHRoaXMpLHRoaXMucHJvcHM9ZSx0aGlzLmNvbnRleHQ9cix0aGlzLnJlZnM9dSx0aGlzLnVw
ZGF0ZXI9b3x8bix0aGlzLnN0YXRlPW51bGw7dmFyIGk9dGhpcy5nZXRJbml0aWFsU3RhdGU/dGhp
cy5nZXRJbml0aWFsU3RhdGUoKTpudWxsO3MoIm9iamVjdCI9PXR5cGVvZiBpJiYhQXJyYXkuaXNB
cnJheShpKSwiJXMuZ2V0SW5pdGlhbFN0YXRlKCk6IG11c3QgcmV0dXJuIGFuIG9iamVjdCBvciBu
dWxsIix0LmRpc3BsYXlOYW1lfHwiUmVhY3RDb21wb3NpdGVDb21wb25lbnQiKSx0aGlzLnN0YXRl
PWl9KTt0LnByb3RvdHlwZT1uZXcgdyx0LnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj10LHQucHJvdG90
eXBlLl9fcmVhY3RBdXRvQmluZFBhaXJzPVtdLHkuZm9yRWFjaChpLmJpbmQobnVsbCx0KSksaSh0
LF8pLGkodCxlKSxpKHQsQyksdC5nZXREZWZhdWx0UHJvcHMmJih0LmRlZmF1bHRQcm9wcz10Lmdl
dERlZmF1bHRQcm9wcygpKSxzKHQucHJvdG90eXBlLnJlbmRlciwiY3JlYXRlQ2xhc3MoLi4uKTog
Q2xhc3Mgc3BlY2lmaWNhdGlvbiBtdXN0IGltcGxlbWVudCBhIGByZW5kZXJgIG1ldGhvZC4iKTtm
b3IodmFyIG8gaW4gZyl0LnByb3RvdHlwZVtvXXx8KHQucHJvdG90eXBlW29dPW51bGwpO3JldHVy
biB0fXZhciB5PVtdLGc9e21peGluczoiREVGSU5FX01BTlkiLHN0YXRpY3M6IkRFRklORV9NQU5Z
Iixwcm9wVHlwZXM6IkRFRklORV9NQU5ZIixjb250ZXh0VHlwZXM6IkRFRklORV9NQU5ZIixjaGls
ZENvbnRleHRUeXBlczoiREVGSU5FX01BTlkiLGdldERlZmF1bHRQcm9wczoiREVGSU5FX01BTllf
TUVSR0VEIixnZXRJbml0aWFsU3RhdGU6IkRFRklORV9NQU5ZX01FUkdFRCIsZ2V0Q2hpbGRDb250
ZXh0OiJERUZJTkVfTUFOWV9NRVJHRUQiLHJlbmRlcjoiREVGSU5FX09OQ0UiLGNvbXBvbmVudFdp
bGxNb3VudDoiREVGSU5FX01BTlkiLGNvbXBvbmVudERpZE1vdW50OiJERUZJTkVfTUFOWSIsY29t
cG9uZW50V2lsbFJlY2VpdmVQcm9wczoiREVGSU5FX01BTlkiLHNob3VsZENvbXBvbmVudFVwZGF0
ZToiREVGSU5FX09OQ0UiLGNvbXBvbmVudFdpbGxVcGRhdGU6IkRFRklORV9NQU5ZIixjb21wb25l
bnREaWRVcGRhdGU6IkRFRklORV9NQU5ZIixjb21wb25lbnRXaWxsVW5tb3VudDoiREVGSU5FX01B
TlkiLHVwZGF0ZUNvbXBvbmVudDoiT1ZFUlJJREVfQkFTRSJ9LGI9e2Rpc3BsYXlOYW1lOmZ1bmN0
aW9uKGUsdCl7ZS5kaXNwbGF5TmFtZT10fSxtaXhpbnM6ZnVuY3Rpb24oZSx0KXtpZih0KWZvcih2
YXIgbj0wO248dC5sZW5ndGg7bisrKWkoZSx0W25dKX0sY2hpbGRDb250ZXh0VHlwZXM6ZnVuY3Rp
b24oZSx0KXtlLmNoaWxkQ29udGV4dFR5cGVzPWEoe30sZS5jaGlsZENvbnRleHRUeXBlcyx0KX0s
Y29udGV4dFR5cGVzOmZ1bmN0aW9uKGUsdCl7ZS5jb250ZXh0VHlwZXM9YSh7fSxlLmNvbnRleHRU
eXBlcyx0KX0sZ2V0RGVmYXVsdFByb3BzOmZ1bmN0aW9uKGUsdCl7ZS5nZXREZWZhdWx0UHJvcHM/
ZS5nZXREZWZhdWx0UHJvcHM9ZChlLmdldERlZmF1bHRQcm9wcyx0KTplLmdldERlZmF1bHRQcm9w
cz10fSxwcm9wVHlwZXM6ZnVuY3Rpb24oZSx0KXtlLnByb3BUeXBlcz1hKHt9LGUucHJvcFR5cGVz
LHQpfSxzdGF0aWNzOmZ1bmN0aW9uKGUsdCl7bChlLHQpfSxhdXRvYmluZDpmdW5jdGlvbigpe319
LF89e2NvbXBvbmVudERpZE1vdW50OmZ1bmN0aW9uKCl7dGhpcy5fX2lzTW91bnRlZD0hMH19LEM9
e2NvbXBvbmVudFdpbGxVbm1vdW50OmZ1bmN0aW9uKCl7dGhpcy5fX2lzTW91bnRlZD0hMX19LEU9
e3JlcGxhY2VTdGF0ZTpmdW5jdGlvbihlLHQpe3RoaXMudXBkYXRlci5lbnF1ZXVlUmVwbGFjZVN0
YXRlKHRoaXMsZSx0KX0saXNNb3VudGVkOmZ1bmN0aW9uKCl7cmV0dXJuISF0aGlzLl9faXNNb3Vu
dGVkfX0sdz1mdW5jdGlvbigpe307cmV0dXJuIGEody5wcm90b3R5cGUsZS5wcm90b3R5cGUsRSks
bX12YXIgaSxhPW4oNCksdT1uKDI0KSxzPW4oMSksYz0ibWl4aW5zIjtpPXt9LGUuZXhwb3J0cz1v
fSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKGUpe3JldHVybiBlLnJlcGxh
Y2UocixmdW5jdGlvbihlLHQpe3JldHVybiB0LnRvVXBwZXJDYXNlKCl9KX12YXIgcj0vLSguKS9n
O2UuZXhwb3J0cz1ufSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7
cmV0dXJuIG8oZS5yZXBsYWNlKGksIm1zLSIpKX12YXIgbz1uKDk4KSxpPS9eLW1zLS87ZS5leHBv
cnRzPXJ9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQpe3JldHVy
biEoIWV8fCF0KSYmKGU9PT10fHwhbyhlKSYmKG8odCk/cihlLHQucGFyZW50Tm9kZSk6ImNvbnRh
aW5zImluIGU/ZS5jb250YWlucyh0KTohIWUuY29tcGFyZURvY3VtZW50UG9zaXRpb24mJiEhKDE2
JmUuY29tcGFyZURvY3VtZW50UG9zaXRpb24odCkpKSl9dmFyIG89bigxMDgpO2UuZXhwb3J0cz1y
fSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7dmFyIHQ9ZS5sZW5n
dGg7aWYoQXJyYXkuaXNBcnJheShlKXx8Im9iamVjdCIhPXR5cGVvZiBlJiYiZnVuY3Rpb24iIT10
eXBlb2YgZT9hKCExKTp2b2lkIDAsIm51bWJlciIhPXR5cGVvZiB0P2EoITEpOnZvaWQgMCwwPT09
dHx8dC0xIGluIGU/dm9pZCAwOmEoITEpLCJmdW5jdGlvbiI9PXR5cGVvZiBlLmNhbGxlZT9hKCEx
KTp2b2lkIDAsZS5oYXNPd25Qcm9wZXJ0eSl0cnl7cmV0dXJuIEFycmF5LnByb3RvdHlwZS5zbGlj
ZS5jYWxsKGUpfWNhdGNoKG4pe31mb3IodmFyIHI9QXJyYXkodCksbz0wO288dDtvKyspcltvXT1l
W29dO3JldHVybiByfWZ1bmN0aW9uIG8oZSl7cmV0dXJuISFlJiYoIm9iamVjdCI9PXR5cGVvZiBl
fHwiZnVuY3Rpb24iPT10eXBlb2YgZSkmJiJsZW5ndGgiaW4gZSYmISgic2V0SW50ZXJ2YWwiaW4g
ZSkmJiJudW1iZXIiIT10eXBlb2YgZS5ub2RlVHlwZSYmKEFycmF5LmlzQXJyYXkoZSl8fCJjYWxs
ZWUiaW4gZXx8Iml0ZW0iaW4gZSl9ZnVuY3Rpb24gaShlKXtyZXR1cm4gbyhlKT9BcnJheS5pc0Fy
cmF5KGUpP2Uuc2xpY2UoKTpyKGUpOltlXX12YXIgYT1uKDEpO2UuZXhwb3J0cz1pfSxmdW5jdGlv
bihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7dmFyIHQ9ZS5tYXRjaChsKTtyZXR1
cm4gdCYmdFsxXS50b0xvd2VyQ2FzZSgpfWZ1bmN0aW9uIG8oZSx0KXt2YXIgbj1jO2M/dm9pZCAw
OnMoITEpO3ZhciBvPXIoZSksaT1vJiZ1KG8pO2lmKGkpe24uaW5uZXJIVE1MPWlbMV0rZStpWzJd
O2Zvcih2YXIgbD1pWzBdO2wtLTspbj1uLmxhc3RDaGlsZH1lbHNlIG4uaW5uZXJIVE1MPWU7dmFy
IHA9bi5nZXRFbGVtZW50c0J5VGFnTmFtZSgic2NyaXB0Iik7cC5sZW5ndGgmJih0P3ZvaWQgMDpz
KCExKSxhKHApLmZvckVhY2godCkpO2Zvcih2YXIgZD1BcnJheS5mcm9tKG4uY2hpbGROb2Rlcyk7
bi5sYXN0Q2hpbGQ7KW4ucmVtb3ZlQ2hpbGQobi5sYXN0Q2hpbGQpO3JldHVybiBkfXZhciBpPW4o
NiksYT1uKDEwMSksdT1uKDEwMykscz1uKDEpLGM9aS5jYW5Vc2VET00/ZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgiZGl2Iik6bnVsbCxsPS9eXHMqPChcdyspLztlLmV4cG9ydHM9b30sZnVuY3Rpb24o
ZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3JldHVybiBhP3ZvaWQgMDppKCExKSxk
Lmhhc093blByb3BlcnR5KGUpfHwoZT0iKiIpLHUuaGFzT3duUHJvcGVydHkoZSl8fCgiKiI9PT1l
P2EuaW5uZXJIVE1MPSI8bGluayAvPiI6YS5pbm5lckhUTUw9IjwiK2UrIj48LyIrZSsiPiIsdVtl
XT0hYS5maXJzdENoaWxkKSx1W2VdP2RbZV06bnVsbH12YXIgbz1uKDYpLGk9bigxKSxhPW8uY2Fu
VXNlRE9NP2RvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOm51bGwsdT17fSxzPVsxLCc8c2Vs
ZWN0IG11bHRpcGxlPSJ0cnVlIj4nLCI8L3NlbGVjdD4iXSxjPVsxLCI8dGFibGU+IiwiPC90YWJs
ZT4iXSxsPVszLCI8dGFibGU+PHRib2R5Pjx0cj4iLCI8L3RyPjwvdGJvZHk+PC90YWJsZT4iXSxw
PVsxLCc8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+JywiPC9zdmc+Il0s
ZD17IioiOlsxLCI/PGRpdj4iLCI8L2Rpdj4iXSxhcmVhOlsxLCI8bWFwPiIsIjwvbWFwPiJdLGNv
bDpbMiwiPHRhYmxlPjx0Ym9keT48L3Rib2R5Pjxjb2xncm91cD4iLCI8L2NvbGdyb3VwPjwvdGFi
bGU+Il0sbGVnZW5kOlsxLCI8ZmllbGRzZXQ+IiwiPC9maWVsZHNldD4iXSxwYXJhbTpbMSwiPG9i
amVjdD4iLCI8L29iamVjdD4iXSx0cjpbMiwiPHRhYmxlPjx0Ym9keT4iLCI8L3Rib2R5PjwvdGFi
bGU+Il0sb3B0Z3JvdXA6cyxvcHRpb246cyxjYXB0aW9uOmMsY29sZ3JvdXA6Yyx0Ym9keTpjLHRm
b290OmMsdGhlYWQ6Yyx0ZDpsLHRoOmx9LGY9WyJjaXJjbGUiLCJjbGlwUGF0aCIsImRlZnMiLCJl
bGxpcHNlIiwiZyIsImltYWdlIiwibGluZSIsImxpbmVhckdyYWRpZW50IiwibWFzayIsInBhdGgi
LCJwYXR0ZXJuIiwicG9seWdvbiIsInBvbHlsaW5lIiwicmFkaWFsR3JhZGllbnQiLCJyZWN0Iiwi
c3RvcCIsInRleHQiLCJ0c3BhbiJdO2YuZm9yRWFjaChmdW5jdGlvbihlKXtkW2VdPXAsdVtlXT0h
MH0pLGUuZXhwb3J0cz1yfSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKGUp
e3JldHVybiBlLldpbmRvdyYmZSBpbnN0YW5jZW9mIGUuV2luZG93P3t4OmUucGFnZVhPZmZzZXR8
fGUuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbExlZnQseTplLnBhZ2VZT2Zmc2V0fHxl
LmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3B9Ont4OmUuc2Nyb2xsTGVmdCx5OmUu
c2Nyb2xsVG9wfX1lLmV4cG9ydHM9bn0sZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7ZnVuY3Rp
b24gbihlKXtyZXR1cm4gZS5yZXBsYWNlKHIsIi0kMSIpLnRvTG93ZXJDYXNlKCl9dmFyIHI9Lyhb
QS1aXSkvZztlLmV4cG9ydHM9bn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlv
biByKGUpe3JldHVybiBvKGUpLnJlcGxhY2UoaSwiLW1zLSIpfXZhciBvPW4oMTA1KSxpPS9ebXMt
LztlLmV4cG9ydHM9cn0sZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbihlKXt2
YXIgdD1lP2Uub3duZXJEb2N1bWVudHx8ZTpkb2N1bWVudCxuPXQuZGVmYXVsdFZpZXd8fHdpbmRv
dztyZXR1cm4hKCFlfHwhKCJmdW5jdGlvbiI9PXR5cGVvZiBuLk5vZGU/ZSBpbnN0YW5jZW9mIG4u
Tm9kZToib2JqZWN0Ij09dHlwZW9mIGUmJiJudW1iZXIiPT10eXBlb2YgZS5ub2RlVHlwZSYmInN0
cmluZyI9PXR5cGVvZiBlLm5vZGVOYW1lKSl9ZS5leHBvcnRzPW59LGZ1bmN0aW9uKGUsdCxuKXsi
dXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1cm4gbyhlKSYmMz09ZS5ub2RlVHlwZX12YXIg
bz1uKDEwNyk7ZS5leHBvcnRzPXJ9LGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9u
IG4oZSl7dmFyIHQ9e307cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiB0Lmhhc093blByb3BlcnR5
KG4pfHwodFtuXT1lLmNhbGwodGhpcyxuKSksdFtuXX19ZS5leHBvcnRzPW59LGZ1bmN0aW9uKGUs
dCl7InVzZSBzdHJpY3QiO3ZhciBuPXtjaGlsZENvbnRleHRUeXBlczohMCxjb250ZXh0VHlwZXM6
ITAsZGVmYXVsdFByb3BzOiEwLGRpc3BsYXlOYW1lOiEwLGdldERlZmF1bHRQcm9wczohMCxtaXhp
bnM6ITAscHJvcFR5cGVzOiEwLHR5cGU6ITB9LHI9e25hbWU6ITAsbGVuZ3RoOiEwLHByb3RvdHlw
ZTohMCxjYWxsZXI6ITAsY2FsbGVlOiEwLGFyZ3VtZW50czohMCxhcml0eTohMH0sbz1PYmplY3Qu
ZGVmaW5lUHJvcGVydHksaT1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyxhPU9iamVjdC5nZXRP
d25Qcm9wZXJ0eVN5bWJvbHMsdT1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLHM9T2Jq
ZWN0LmdldFByb3RvdHlwZU9mLGM9cyYmcyhPYmplY3QpO2UuZXhwb3J0cz1mdW5jdGlvbiBlKHQs
bCxwKXtpZigic3RyaW5nIiE9dHlwZW9mIGwpe2lmKGMpe3ZhciBkPXMobCk7ZCYmZCE9PWMmJmUo
dCxkLHApfXZhciBmPWkobCk7YSYmKGY9Zi5jb25jYXQoYShsKSkpO2Zvcih2YXIgaD0wO2g8Zi5s
ZW5ndGg7KytoKXt2YXIgdj1mW2hdO2lmKCEoblt2XXx8clt2XXx8cCYmcFt2XSkpe3ZhciBtPXUo
bCx2KTt0cnl7byh0LHYsbSl9Y2F0Y2goeSl7fX19cmV0dXJuIHR9cmV0dXJuIHR9fSxmdW5jdGlv
bihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPWZ1bmN0aW9uKGUsdCxuLHIsbyxpLGEsdSl7aWYo
IWUpe3ZhciBzO2lmKHZvaWQgMD09PXQpcz1uZXcgRXJyb3IoIk1pbmlmaWVkIGV4Y2VwdGlvbiBv
Y2N1cnJlZDsgdXNlIHRoZSBub24tbWluaWZpZWQgZGV2IGVudmlyb25tZW50IGZvciB0aGUgZnVs
bCBlcnJvciBtZXNzYWdlIGFuZCBhZGRpdGlvbmFsIGhlbHBmdWwgd2FybmluZ3MuIik7ZWxzZXt2
YXIgYz1bbixyLG8saSxhLHVdLGw9MDtzPW5ldyBFcnJvcih0LnJlcGxhY2UoLyVzL2csZnVuY3Rp
b24oKXtyZXR1cm4gY1tsKytdfSkpLHMubmFtZT0iSW52YXJpYW50IFZpb2xhdGlvbiJ9dGhyb3cg
cy5mcmFtZXNUb1BvcD0xLHN9fTtlLmV4cG9ydHM9cn0sZnVuY3Rpb24oZSx0LG4pe2Z1bmN0aW9u
IHIoZSl7cmV0dXJuIG51bGw9PWU/dm9pZCAwPT09ZT9zOnU6YyYmYyBpbiBPYmplY3QoZSk/aShl
KTphKGUpfXZhciBvPW4oNTQpLGk9bigxMTUpLGE9bigxMTYpLHU9IltvYmplY3QgTnVsbF0iLHM9
IltvYmplY3QgVW5kZWZpbmVkXSIsYz1vP28udG9TdHJpbmdUYWc6dm9pZCAwO2UuZXhwb3J0cz1y
fSxmdW5jdGlvbihlLHQpeyhmdW5jdGlvbih0KXt2YXIgbj0ib2JqZWN0Ij09dHlwZW9mIHQmJnQm
JnQuT2JqZWN0PT09T2JqZWN0JiZ0O2UuZXhwb3J0cz1ufSkuY2FsbCh0LGZ1bmN0aW9uKCl7cmV0
dXJuIHRoaXN9KCkpfSxmdW5jdGlvbihlLHQsbil7dmFyIHI9bigxMTcpLG89cihPYmplY3QuZ2V0
UHJvdG90eXBlT2YsT2JqZWN0KTtlLmV4cG9ydHM9b30sZnVuY3Rpb24oZSx0LG4pe2Z1bmN0aW9u
IHIoZSl7dmFyIHQ9YS5jYWxsKGUscyksbj1lW3NdO3RyeXtlW3NdPXZvaWQgMDt2YXIgcj0hMH1j
YXRjaChvKXt9dmFyIGk9dS5jYWxsKGUpO3JldHVybiByJiYodD9lW3NdPW46ZGVsZXRlIGVbc10p
LGl9dmFyIG89big1NCksaT1PYmplY3QucHJvdG90eXBlLGE9aS5oYXNPd25Qcm9wZXJ0eSx1PWku
dG9TdHJpbmcscz1vP28udG9TdHJpbmdUYWc6dm9pZCAwO2UuZXhwb3J0cz1yfSxmdW5jdGlvbihl
LHQpe2Z1bmN0aW9uIG4oZSl7cmV0dXJuIG8uY2FsbChlKX12YXIgcj1PYmplY3QucHJvdG90eXBl
LG89ci50b1N0cmluZztlLmV4cG9ydHM9bn0sZnVuY3Rpb24oZSx0KXtmdW5jdGlvbiBuKGUsdCl7
cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiBlKHQobikpfX1lLmV4cG9ydHM9bn0sZnVuY3Rpb24o
ZSx0LG4pe3ZhciByPW4oMTEzKSxvPSJvYmplY3QiPT10eXBlb2Ygc2VsZiYmc2VsZiYmc2VsZi5P
YmplY3Q9PT1PYmplY3QmJnNlbGYsaT1yfHxvfHxGdW5jdGlvbigicmV0dXJuIHRoaXMiKSgpO2Uu
ZXhwb3J0cz1pfSxmdW5jdGlvbihlLHQpe2Z1bmN0aW9uIG4oZSl7cmV0dXJuIG51bGwhPWUmJiJv
YmplY3QiPT10eXBlb2YgZX1lLmV4cG9ydHM9bn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0
IjtmdW5jdGlvbiByKGUsdCxuLHIsbyl7fWUuZXhwb3J0cz1yfSxmdW5jdGlvbihlLHQsbil7InVz
ZSBzdHJpY3QiO3ZhciByPW4oNyksbz1uKDEpLGk9big1Nyk7ZS5leHBvcnRzPWZ1bmN0aW9uKCl7
ZnVuY3Rpb24gZShlLHQsbixyLGEsdSl7dSE9PWkmJm8oITEsIkNhbGxpbmcgUHJvcFR5cGVzIHZh
bGlkYXRvcnMgZGlyZWN0bHkgaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgYHByb3AtdHlwZXNgIHBh
Y2thZ2UuIFVzZSBQcm9wVHlwZXMuY2hlY2tQcm9wVHlwZXMoKSB0byBjYWxsIHRoZW0uIFJlYWQg
bW9yZSBhdCBodHRwOi8vZmIubWUvdXNlLWNoZWNrLXByb3AtdHlwZXMiKX1mdW5jdGlvbiB0KCl7
cmV0dXJuIGV9ZS5pc1JlcXVpcmVkPWU7dmFyIG49e2FycmF5OmUsYm9vbDplLGZ1bmM6ZSxudW1i
ZXI6ZSxvYmplY3Q6ZSxzdHJpbmc6ZSxzeW1ib2w6ZSxhbnk6ZSxhcnJheU9mOnQsZWxlbWVudDpl
LGluc3RhbmNlT2Y6dCxub2RlOmUsb2JqZWN0T2Y6dCxvbmVPZjp0LG9uZU9mVHlwZTp0LHNoYXBl
OnR9O3JldHVybiBuLmNoZWNrUHJvcFR5cGVzPXIsbi5Qcm9wVHlwZXM9bixufX0sZnVuY3Rpb24o
ZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDcpLG89bigxKSxpPW4oMiksYT1uKDU3KSx1PW4o
MTIwKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtmdW5jdGlvbiBuKGUpe3ZhciB0PWUmJihPJiZl
W09dfHxlW1NdKTtpZigiZnVuY3Rpb24iPT10eXBlb2YgdClyZXR1cm4gdH1mdW5jdGlvbiBzKGUs
dCl7cmV0dXJuIGU9PT10PzAhPT1lfHwxL2U9PT0xL3Q6ZSE9PWUmJnQhPT10fWZ1bmN0aW9uIGMo
ZSl7dGhpcy5tZXNzYWdlPWUsdGhpcy5zdGFjaz0iIn1mdW5jdGlvbiBsKGUpe2Z1bmN0aW9uIG4o
bixyLGksdSxzLGwscCl7aWYodT11fHxrLGw9bHx8aSxwIT09YSlpZih0KW8oITEsIkNhbGxpbmcg
UHJvcFR5cGVzIHZhbGlkYXRvcnMgZGlyZWN0bHkgaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgYHBy
b3AtdHlwZXNgIHBhY2thZ2UuIFVzZSBgUHJvcFR5cGVzLmNoZWNrUHJvcFR5cGVzKClgIHRvIGNh
bGwgdGhlbS4gUmVhZCBtb3JlIGF0IGh0dHA6Ly9mYi5tZS91c2UtY2hlY2stcHJvcC10eXBlcyIp
O2Vsc2U7cmV0dXJuIG51bGw9PXJbaV0/bj9uZXcgYyhudWxsPT09cltpXT8iVGhlICIrcysiIGAi
K2wrImAgaXMgbWFya2VkIGFzIHJlcXVpcmVkICIrKCJpbiBgIit1KyJgLCBidXQgaXRzIHZhbHVl
IGlzIGBudWxsYC4iKToiVGhlICIrcysiIGAiK2wrImAgaXMgbWFya2VkIGFzIHJlcXVpcmVkIGlu
ICIrKCJgIit1KyJgLCBidXQgaXRzIHZhbHVlIGlzIGB1bmRlZmluZWRgLiIpKTpudWxsOmUocixp
LHUscyxsKX12YXIgcj1uLmJpbmQobnVsbCwhMSk7cmV0dXJuIHIuaXNSZXF1aXJlZD1uLmJpbmQo
bnVsbCwhMCkscn1mdW5jdGlvbiBwKGUpe2Z1bmN0aW9uIHQodCxuLHIsbyxpLGEpe3ZhciB1PXRb
bl0scz13KHUpO2lmKHMhPT1lKXt2YXIgbD1UKHUpO3JldHVybiBuZXcgYygiSW52YWxpZCAiK28r
IiBgIitpKyJgIG9mIHR5cGUgIisoImAiK2wrImAgc3VwcGxpZWQgdG8gYCIrcisiYCwgZXhwZWN0
ZWQgIikrKCJgIitlKyJgLiIpKX1yZXR1cm4gbnVsbH1yZXR1cm4gbCh0KX1mdW5jdGlvbiBkKCl7
cmV0dXJuIGwoci50aGF0UmV0dXJuc051bGwpfWZ1bmN0aW9uIGYoZSl7ZnVuY3Rpb24gdCh0LG4s
cixvLGkpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBlKXJldHVybiBuZXcgYygiUHJvcGVydHkgYCIr
aSsiYCBvZiBjb21wb25lbnQgYCIrcisiYCBoYXMgaW52YWxpZCBQcm9wVHlwZSBub3RhdGlvbiBp
bnNpZGUgYXJyYXlPZi4iKTt2YXIgdT10W25dO2lmKCFBcnJheS5pc0FycmF5KHUpKXt2YXIgcz13
KHUpO3JldHVybiBuZXcgYygiSW52YWxpZCAiK28rIiBgIitpKyJgIG9mIHR5cGUgIisoImAiK3Mr
ImAgc3VwcGxpZWQgdG8gYCIrcisiYCwgZXhwZWN0ZWQgYW4gYXJyYXkuIikpfWZvcih2YXIgbD0w
O2w8dS5sZW5ndGg7bCsrKXt2YXIgcD1lKHUsbCxyLG8saSsiWyIrbCsiXSIsYSk7aWYocCBpbnN0
YW5jZW9mIEVycm9yKXJldHVybiBwfXJldHVybiBudWxsfXJldHVybiBsKHQpfWZ1bmN0aW9uIGgo
KXtmdW5jdGlvbiB0KHQsbixyLG8saSl7dmFyIGE9dFtuXTtpZighZShhKSl7dmFyIHU9dyhhKTty
ZXR1cm4gbmV3IGMoIkludmFsaWQgIitvKyIgYCIraSsiYCBvZiB0eXBlICIrKCJgIit1KyJgIHN1
cHBsaWVkIHRvIGAiK3IrImAsIGV4cGVjdGVkIGEgc2luZ2xlIFJlYWN0RWxlbWVudC4iKSl9cmV0
dXJuIG51bGx9cmV0dXJuIGwodCl9ZnVuY3Rpb24gdihlKXtmdW5jdGlvbiB0KHQsbixyLG8saSl7
aWYoISh0W25daW5zdGFuY2VvZiBlKSl7dmFyIGE9ZS5uYW1lfHxrLHU9eCh0W25dKTtyZXR1cm4g
bmV3IGMoIkludmFsaWQgIitvKyIgYCIraSsiYCBvZiB0eXBlICIrKCJgIit1KyJgIHN1cHBsaWVk
IHRvIGAiK3IrImAsIGV4cGVjdGVkICIpKygiaW5zdGFuY2Ugb2YgYCIrYSsiYC4iKSl9cmV0dXJu
IG51bGx9cmV0dXJuIGwodCl9ZnVuY3Rpb24gbShlKXtmdW5jdGlvbiB0KHQsbixyLG8saSl7Zm9y
KHZhciBhPXRbbl0sdT0wO3U8ZS5sZW5ndGg7dSsrKWlmKHMoYSxlW3VdKSlyZXR1cm4gbnVsbDt2
YXIgbD1KU09OLnN0cmluZ2lmeShlKTtyZXR1cm4gbmV3IGMoIkludmFsaWQgIitvKyIgYCIraSsi
YCBvZiB2YWx1ZSBgIithKyJgICIrKCJzdXBwbGllZCB0byBgIityKyJgLCBleHBlY3RlZCBvbmUg
b2YgIitsKyIuIikpfXJldHVybiBBcnJheS5pc0FycmF5KGUpP2wodCk6ci50aGF0UmV0dXJuc051
bGx9ZnVuY3Rpb24geShlKXtmdW5jdGlvbiB0KHQsbixyLG8saSl7aWYoImZ1bmN0aW9uIiE9dHlw
ZW9mIGUpcmV0dXJuIG5ldyBjKCJQcm9wZXJ0eSBgIitpKyJgIG9mIGNvbXBvbmVudCBgIityKyJg
IGhhcyBpbnZhbGlkIFByb3BUeXBlIG5vdGF0aW9uIGluc2lkZSBvYmplY3RPZi4iKTt2YXIgdT10
W25dLHM9dyh1KTtpZigib2JqZWN0IiE9PXMpcmV0dXJuIG5ldyBjKCJJbnZhbGlkICIrbysiIGAi
K2krImAgb2YgdHlwZSAiKygiYCIrcysiYCBzdXBwbGllZCB0byBgIityKyJgLCBleHBlY3RlZCBh
biBvYmplY3QuIikpO2Zvcih2YXIgbCBpbiB1KWlmKHUuaGFzT3duUHJvcGVydHkobCkpe3ZhciBw
PWUodSxsLHIsbyxpKyIuIitsLGEpO2lmKHAgaW5zdGFuY2VvZiBFcnJvcilyZXR1cm4gcH1yZXR1
cm4gbnVsbH1yZXR1cm4gbCh0KX1mdW5jdGlvbiBnKGUpe2Z1bmN0aW9uIHQodCxuLHIsbyxpKXtm
b3IodmFyIHU9MDt1PGUubGVuZ3RoO3UrKyl7dmFyIHM9ZVt1XTtpZihudWxsPT1zKHQsbixyLG8s
aSxhKSlyZXR1cm4gbnVsbH1yZXR1cm4gbmV3IGMoIkludmFsaWQgIitvKyIgYCIraSsiYCBzdXBw
bGllZCB0byAiKygiYCIrcisiYC4iKSl9aWYoIUFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIHIudGhh
dFJldHVybnNOdWxsO2Zvcih2YXIgbj0wO248ZS5sZW5ndGg7bisrKXt2YXIgbz1lW25dO2lmKCJm
dW5jdGlvbiIhPXR5cGVvZiBvKXJldHVybiBpKCExLCJJbnZhbGlkIGFyZ3VtZW50IHN1cHBsaWQg
dG8gb25lT2ZUeXBlLiBFeHBlY3RlZCBhbiBhcnJheSBvZiBjaGVjayBmdW5jdGlvbnMsIGJ1dCBy
ZWNlaXZlZCAlcyBhdCBpbmRleCAlcy4iLFAobyksbiksci50aGF0UmV0dXJuc051bGx9cmV0dXJu
IGwodCl9ZnVuY3Rpb24gYigpe2Z1bmN0aW9uIGUoZSx0LG4scixvKXtyZXR1cm4gQyhlW3RdKT9u
dWxsOm5ldyBjKCJJbnZhbGlkICIrcisiIGAiK28rImAgc3VwcGxpZWQgdG8gIisoImAiK24rImAs
IGV4cGVjdGVkIGEgUmVhY3ROb2RlLiIpKX1yZXR1cm4gbChlKX1mdW5jdGlvbiBfKGUpe2Z1bmN0
aW9uIHQodCxuLHIsbyxpKXt2YXIgdT10W25dLHM9dyh1KTtpZigib2JqZWN0IiE9PXMpcmV0dXJu
IG5ldyBjKCJJbnZhbGlkICIrbysiIGAiK2krImAgb2YgdHlwZSBgIitzKyJgICIrKCJzdXBwbGll
ZCB0byBgIityKyJgLCBleHBlY3RlZCBgb2JqZWN0YC4iKSk7Zm9yKHZhciBsIGluIGUpe3ZhciBw
PWVbbF07aWYocCl7dmFyIGQ9cCh1LGwscixvLGkrIi4iK2wsYSk7aWYoZClyZXR1cm4gZH19cmV0
dXJuIG51bGx9cmV0dXJuIGwodCl9ZnVuY3Rpb24gQyh0KXtzd2l0Y2godHlwZW9mIHQpe2Nhc2Ui
bnVtYmVyIjpjYXNlInN0cmluZyI6Y2FzZSJ1bmRlZmluZWQiOnJldHVybiEwO2Nhc2UiYm9vbGVh
biI6cmV0dXJuIXQ7Y2FzZSJvYmplY3QiOmlmKEFycmF5LmlzQXJyYXkodCkpcmV0dXJuIHQuZXZl
cnkoQyk7aWYobnVsbD09PXR8fGUodCkpcmV0dXJuITA7dmFyIHI9bih0KTtpZighcilyZXR1cm4h
MTt2YXIgbyxpPXIuY2FsbCh0KTtpZihyIT09dC5lbnRyaWVzKXtmb3IoOyEobz1pLm5leHQoKSku
ZG9uZTspaWYoIUMoby52YWx1ZSkpcmV0dXJuITF9ZWxzZSBmb3IoOyEobz1pLm5leHQoKSkuZG9u
ZTspe3ZhciBhPW8udmFsdWU7aWYoYSYmIUMoYVsxXSkpcmV0dXJuITF9cmV0dXJuITA7ZGVmYXVs
dDpyZXR1cm4hMX19ZnVuY3Rpb24gRShlLHQpe3JldHVybiJzeW1ib2wiPT09ZXx8KCJTeW1ib2wi
PT09dFsiQEB0b1N0cmluZ1RhZyJdfHwiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZ0IGluc3Rh
bmNlb2YgU3ltYm9sKX1mdW5jdGlvbiB3KGUpe3ZhciB0PXR5cGVvZiBlO3JldHVybiBBcnJheS5p
c0FycmF5KGUpPyJhcnJheSI6ZSBpbnN0YW5jZW9mIFJlZ0V4cD8ib2JqZWN0IjpFKHQsZSk/InN5
bWJvbCI6dH1mdW5jdGlvbiBUKGUpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgZXx8bnVsbD09PWUp
cmV0dXJuIiIrZTt2YXIgdD13KGUpO2lmKCJvYmplY3QiPT09dCl7aWYoZSBpbnN0YW5jZW9mIERh
dGUpcmV0dXJuImRhdGUiO2lmKGUgaW5zdGFuY2VvZiBSZWdFeHApcmV0dXJuInJlZ2V4cCJ9cmV0
dXJuIHR9ZnVuY3Rpb24gUChlKXt2YXIgdD1UKGUpO3N3aXRjaCh0KXtjYXNlImFycmF5IjpjYXNl
Im9iamVjdCI6cmV0dXJuImFuICIrdDtjYXNlImJvb2xlYW4iOmNhc2UiZGF0ZSI6Y2FzZSJyZWdl
eHAiOnJldHVybiJhICIrdDtkZWZhdWx0OnJldHVybiB0fX1mdW5jdGlvbiB4KGUpe3JldHVybiBl
LmNvbnN0cnVjdG9yJiZlLmNvbnN0cnVjdG9yLm5hbWU/ZS5jb25zdHJ1Y3Rvci5uYW1lOmt9dmFy
IE89ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmU3ltYm9sLml0ZXJhdG9yLFM9IkBAaXRlcmF0
b3IiLGs9Ijw8YW5vbnltb3VzPj4iLE09e2FycmF5OnAoImFycmF5IiksYm9vbDpwKCJib29sZWFu
IiksZnVuYzpwKCJmdW5jdGlvbiIpLG51bWJlcjpwKCJudW1iZXIiKSxvYmplY3Q6cCgib2JqZWN0
Iiksc3RyaW5nOnAoInN0cmluZyIpLHN5bWJvbDpwKCJzeW1ib2wiKSxhbnk6ZCgpLGFycmF5T2Y6
ZixlbGVtZW50OmgoKSxpbnN0YW5jZU9mOnYsbm9kZTpiKCksb2JqZWN0T2Y6eSxvbmVPZjptLG9u
ZU9mVHlwZTpnLHNoYXBlOl99O3JldHVybiBjLnByb3RvdHlwZT1FcnJvci5wcm90b3R5cGUsTS5j
aGVja1Byb3BUeXBlcz11LE0uUHJvcFR5cGVzPU0sTX19LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0
cmljdCI7ZS5leHBvcnRzPW4oMTM3KX0sZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7dmFyIG49
e1Byb3BlcnRpZXM6eyJhcmlhLWN1cnJlbnQiOjAsImFyaWEtZGV0YWlscyI6MCwiYXJpYS1kaXNh
YmxlZCI6MCwiYXJpYS1oaWRkZW4iOjAsImFyaWEtaW52YWxpZCI6MCwiYXJpYS1rZXlzaG9ydGN1
dHMiOjAsImFyaWEtbGFiZWwiOjAsImFyaWEtcm9sZWRlc2NyaXB0aW9uIjowLCJhcmlhLWF1dG9j
b21wbGV0ZSI6MCwiYXJpYS1jaGVja2VkIjowLCJhcmlhLWV4cGFuZGVkIjowLCJhcmlhLWhhc3Bv
cHVwIjowLCJhcmlhLWxldmVsIjowLCJhcmlhLW1vZGFsIjowLCJhcmlhLW11bHRpbGluZSI6MCwi
YXJpYS1tdWx0aXNlbGVjdGFibGUiOjAsImFyaWEtb3JpZW50YXRpb24iOjAsImFyaWEtcGxhY2Vo
b2xkZXIiOjAsImFyaWEtcHJlc3NlZCI6MCwiYXJpYS1yZWFkb25seSI6MCwiYXJpYS1yZXF1aXJl
ZCI6MCwiYXJpYS1zZWxlY3RlZCI6MCwiYXJpYS1zb3J0IjowLCJhcmlhLXZhbHVlbWF4IjowLCJh
cmlhLXZhbHVlbWluIjowLCJhcmlhLXZhbHVlbm93IjowLCJhcmlhLXZhbHVldGV4dCI6MCwiYXJp
YS1hdG9taWMiOjAsImFyaWEtYnVzeSI6MCwiYXJpYS1saXZlIjowLCJhcmlhLXJlbGV2YW50Ijow
LCJhcmlhLWRyb3BlZmZlY3QiOjAsImFyaWEtZ3JhYmJlZCI6MCwiYXJpYS1hY3RpdmVkZXNjZW5k
YW50IjowLCJhcmlhLWNvbGNvdW50IjowLCJhcmlhLWNvbGluZGV4IjowLCJhcmlhLWNvbHNwYW4i
OjAsImFyaWEtY29udHJvbHMiOjAsImFyaWEtZGVzY3JpYmVkYnkiOjAsImFyaWEtZXJyb3JtZXNz
YWdlIjowLCJhcmlhLWZsb3d0byI6MCwiYXJpYS1sYWJlbGxlZGJ5IjowLCJhcmlhLW93bnMiOjAs
ImFyaWEtcG9zaW5zZXQiOjAsImFyaWEtcm93Y291bnQiOjAsImFyaWEtcm93aW5kZXgiOjAsImFy
aWEtcm93c3BhbiI6MCwiYXJpYS1zZXRzaXplIjowfSxET01BdHRyaWJ1dGVOYW1lczp7fSxET01Q
cm9wZXJ0eU5hbWVzOnt9fTtlLmV4cG9ydHM9bn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0
Ijt2YXIgcj1uKDUpLG89big1MiksaT17Zm9jdXNET01Db21wb25lbnQ6ZnVuY3Rpb24oKXtvKHIu
Z2V0Tm9kZUZyb21JbnN0YW5jZSh0aGlzKSl9fTtlLmV4cG9ydHM9aX0sZnVuY3Rpb24oZSx0LG4p
eyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKCl7dmFyIGU9d2luZG93Lm9wZXJhO3JldHVybiJvYmpl
Y3QiPT10eXBlb2YgZSYmImZ1bmN0aW9uIj09dHlwZW9mIGUudmVyc2lvbiYmcGFyc2VJbnQoZS52
ZXJzaW9uKCksMTApPD0xMn1mdW5jdGlvbiBvKGUpe3JldHVybihlLmN0cmxLZXl8fGUuYWx0S2V5
fHxlLm1ldGFLZXkpJiYhKGUuY3RybEtleSYmZS5hbHRLZXkpfWZ1bmN0aW9uIGkoZSl7c3dpdGNo
KGUpe2Nhc2UidG9wQ29tcG9zaXRpb25TdGFydCI6cmV0dXJuIHguY29tcG9zaXRpb25TdGFydDtj
YXNlInRvcENvbXBvc2l0aW9uRW5kIjpyZXR1cm4geC5jb21wb3NpdGlvbkVuZDtjYXNlInRvcENv
bXBvc2l0aW9uVXBkYXRlIjpyZXR1cm4geC5jb21wb3NpdGlvblVwZGF0ZX19ZnVuY3Rpb24gYShl
LHQpe3JldHVybiJ0b3BLZXlEb3duIj09PWUmJnQua2V5Q29kZT09PWJ9ZnVuY3Rpb24gdShlLHQp
e3N3aXRjaChlKXtjYXNlInRvcEtleVVwIjpyZXR1cm4gZy5pbmRleE9mKHQua2V5Q29kZSkhPT0t
MTtjYXNlInRvcEtleURvd24iOnJldHVybiB0LmtleUNvZGUhPT1iO2Nhc2UidG9wS2V5UHJlc3Mi
OmNhc2UidG9wTW91c2VEb3duIjpjYXNlInRvcEJsdXIiOnJldHVybiEwO2RlZmF1bHQ6cmV0dXJu
ITF9fWZ1bmN0aW9uIHMoZSl7dmFyIHQ9ZS5kZXRhaWw7cmV0dXJuIm9iamVjdCI9PXR5cGVvZiB0
JiYiZGF0YSJpbiB0P3QuZGF0YTpudWxsfWZ1bmN0aW9uIGMoZSx0LG4scil7dmFyIG8sYztpZihf
P289aShlKTpTP3UoZSxuKSYmKG89eC5jb21wb3NpdGlvbkVuZCk6YShlLG4pJiYobz14LmNvbXBv
c2l0aW9uU3RhcnQpLCFvKXJldHVybiBudWxsO3cmJihTfHxvIT09eC5jb21wb3NpdGlvblN0YXJ0
P289PT14LmNvbXBvc2l0aW9uRW5kJiZTJiYoYz1TLmdldERhdGEoKSk6Uz12LmdldFBvb2xlZChy
KSk7dmFyIGw9bS5nZXRQb29sZWQobyx0LG4scik7aWYoYylsLmRhdGE9YztlbHNle3ZhciBwPXMo
bik7bnVsbCE9PXAmJihsLmRhdGE9cCl9cmV0dXJuIGYuYWNjdW11bGF0ZVR3b1BoYXNlRGlzcGF0
Y2hlcyhsKSxsfWZ1bmN0aW9uIGwoZSx0KXtzd2l0Y2goZSl7Y2FzZSJ0b3BDb21wb3NpdGlvbkVu
ZCI6cmV0dXJuIHModCk7Y2FzZSJ0b3BLZXlQcmVzcyI6dmFyIG49dC53aGljaDtyZXR1cm4gbiE9
PVQ/bnVsbDooTz0hMCxQKTtjYXNlInRvcFRleHRJbnB1dCI6dmFyIHI9dC5kYXRhO3JldHVybiBy
PT09UCYmTz9udWxsOnI7ZGVmYXVsdDpyZXR1cm4gbnVsbH19ZnVuY3Rpb24gcChlLHQpe2lmKFMp
e2lmKCJ0b3BDb21wb3NpdGlvbkVuZCI9PT1lfHwhXyYmdShlLHQpKXt2YXIgbj1TLmdldERhdGEo
KTtyZXR1cm4gdi5yZWxlYXNlKFMpLFM9bnVsbCxufXJldHVybiBudWxsfXN3aXRjaChlKXtjYXNl
InRvcFBhc3RlIjpyZXR1cm4gbnVsbDtjYXNlInRvcEtleVByZXNzIjpyZXR1cm4gdC53aGljaCYm
IW8odCk/U3RyaW5nLmZyb21DaGFyQ29kZSh0LndoaWNoKTpudWxsO2Nhc2UidG9wQ29tcG9zaXRp
b25FbmQiOnJldHVybiB3P251bGw6dC5kYXRhO2RlZmF1bHQ6cmV0dXJuIG51bGx9fWZ1bmN0aW9u
IGQoZSx0LG4scil7dmFyIG87aWYobz1FP2woZSxuKTpwKGUsbiksIW8pcmV0dXJuIG51bGw7dmFy
IGk9eS5nZXRQb29sZWQoeC5iZWZvcmVJbnB1dCx0LG4scik7cmV0dXJuIGkuZGF0YT1vLGYuYWNj
dW11bGF0ZVR3b1BoYXNlRGlzcGF0Y2hlcyhpKSxpfXZhciBmPW4oMjApLGg9big2KSx2PW4oMTMy
KSxtPW4oMTY5KSx5PW4oMTcyKSxnPVs5LDEzLDI3LDMyXSxiPTIyOSxfPWguY2FuVXNlRE9NJiYi
Q29tcG9zaXRpb25FdmVudCJpbiB3aW5kb3csQz1udWxsO2guY2FuVXNlRE9NJiYiZG9jdW1lbnRN
b2RlImluIGRvY3VtZW50JiYoQz1kb2N1bWVudC5kb2N1bWVudE1vZGUpO3ZhciBFPWguY2FuVXNl
RE9NJiYiVGV4dEV2ZW50ImluIHdpbmRvdyYmIUMmJiFyKCksdz1oLmNhblVzZURPTSYmKCFffHxD
JiZDPjgmJkM8PTExKSxUPTMyLFA9U3RyaW5nLmZyb21DaGFyQ29kZShUKSx4PXtiZWZvcmVJbnB1
dDp7cGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6e2J1YmJsZWQ6Im9uQmVmb3JlSW5wdXQiLGNhcHR1
cmVkOiJvbkJlZm9yZUlucHV0Q2FwdHVyZSJ9LGRlcGVuZGVuY2llczpbInRvcENvbXBvc2l0aW9u
RW5kIiwidG9wS2V5UHJlc3MiLCJ0b3BUZXh0SW5wdXQiLCJ0b3BQYXN0ZSJdfSxjb21wb3NpdGlv
bkVuZDp7cGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6e2J1YmJsZWQ6Im9uQ29tcG9zaXRpb25FbmQi
LGNhcHR1cmVkOiJvbkNvbXBvc2l0aW9uRW5kQ2FwdHVyZSJ9LGRlcGVuZGVuY2llczpbInRvcEJs
dXIiLCJ0b3BDb21wb3NpdGlvbkVuZCIsInRvcEtleURvd24iLCJ0b3BLZXlQcmVzcyIsInRvcEtl
eVVwIiwidG9wTW91c2VEb3duIl19LGNvbXBvc2l0aW9uU3RhcnQ6e3BoYXNlZFJlZ2lzdHJhdGlv
bk5hbWVzOntidWJibGVkOiJvbkNvbXBvc2l0aW9uU3RhcnQiLGNhcHR1cmVkOiJvbkNvbXBvc2l0
aW9uU3RhcnRDYXB0dXJlIn0sZGVwZW5kZW5jaWVzOlsidG9wQmx1ciIsInRvcENvbXBvc2l0aW9u
U3RhcnQiLCJ0b3BLZXlEb3duIiwidG9wS2V5UHJlc3MiLCJ0b3BLZXlVcCIsInRvcE1vdXNlRG93
biJdfSxjb21wb3NpdGlvblVwZGF0ZTp7cGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6e2J1YmJsZWQ6
Im9uQ29tcG9zaXRpb25VcGRhdGUiLGNhcHR1cmVkOiJvbkNvbXBvc2l0aW9uVXBkYXRlQ2FwdHVy
ZSJ9LGRlcGVuZGVuY2llczpbInRvcEJsdXIiLCJ0b3BDb21wb3NpdGlvblVwZGF0ZSIsInRvcEtl
eURvd24iLCJ0b3BLZXlQcmVzcyIsInRvcEtleVVwIiwidG9wTW91c2VEb3duIl19fSxPPSExLFM9
bnVsbCxrPXtldmVudFR5cGVzOngsZXh0cmFjdEV2ZW50czpmdW5jdGlvbihlLHQsbixyKXtyZXR1
cm5bYyhlLHQsbixyKSxkKGUsdCxuLHIpXX19O2UuZXhwb3J0cz1rfSxmdW5jdGlvbihlLHQsbil7
InVzZSBzdHJpY3QiO3ZhciByPW4oNTgpLG89big2KSxpPShuKDgpLG4oOTkpLG4oMTc4KSksYT1u
KDEwNiksdT1uKDEwOSkscz0obigyKSx1KGZ1bmN0aW9uKGUpe3JldHVybiBhKGUpfSkpLGM9ITEs
bD0iY3NzRmxvYXQiO2lmKG8uY2FuVXNlRE9NKXt2YXIgcD1kb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJkaXYiKS5zdHlsZTt0cnl7cC5mb250PSIifWNhdGNoKGQpe2M9ITB9dm9pZCAwPT09ZG9jdW1l
bnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLmNzc0Zsb2F0JiYobD0ic3R5bGVGbG9hdCIpfXZhciBm
PXtjcmVhdGVNYXJrdXBGb3JTdHlsZXM6ZnVuY3Rpb24oZSx0KXt2YXIgbj0iIjtmb3IodmFyIHIg
aW4gZSlpZihlLmhhc093blByb3BlcnR5KHIpKXt2YXIgbz0wPT09ci5pbmRleE9mKCItLSIpLGE9
ZVtyXTtudWxsIT1hJiYobis9cyhyKSsiOiIsbis9aShyLGEsdCxvKSsiOyIpfXJldHVybiBufHxu
dWxsfSxzZXRWYWx1ZUZvclN0eWxlczpmdW5jdGlvbihlLHQsbil7dmFyIG89ZS5zdHlsZTtmb3Io
dmFyIGEgaW4gdClpZih0Lmhhc093blByb3BlcnR5KGEpKXt2YXIgdT0wPT09YS5pbmRleE9mKCIt
LSIpLHM9aShhLHRbYV0sbix1KTtpZigiZmxvYXQiIT09YSYmImNzc0Zsb2F0IiE9PWF8fChhPWwp
LHUpby5zZXRQcm9wZXJ0eShhLHMpO2Vsc2UgaWYocylvW2FdPXM7ZWxzZXt2YXIgcD1jJiZyLnNo
b3J0aGFuZFByb3BlcnR5RXhwYW5zaW9uc1thXTtpZihwKWZvcih2YXIgZCBpbiBwKW9bZF09IiI7
ZWxzZSBvW2FdPSIifX19fTtlLmV4cG9ydHM9Zn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0
IjtmdW5jdGlvbiByKGUsdCxuKXt2YXIgcj14LmdldFBvb2xlZChOLmNoYW5nZSxlLHQsbik7cmV0
dXJuIHIudHlwZT0iY2hhbmdlIixFLmFjY3VtdWxhdGVUd29QaGFzZURpc3BhdGNoZXMocikscn1m
dW5jdGlvbiBvKGUpe3ZhciB0PWUubm9kZU5hbWUmJmUubm9kZU5hbWUudG9Mb3dlckNhc2UoKTty
ZXR1cm4ic2VsZWN0Ij09PXR8fCJpbnB1dCI9PT10JiYiZmlsZSI9PT1lLnR5cGV9ZnVuY3Rpb24g
aShlKXt2YXIgdD1yKFIsZSxTKGUpKTtQLmJhdGNoZWRVcGRhdGVzKGEsdCl9ZnVuY3Rpb24gYShl
KXtDLmVucXVldWVFdmVudHMoZSksQy5wcm9jZXNzRXZlbnRRdWV1ZSghMSl9ZnVuY3Rpb24gdShl
LHQpe0k9ZSxSPXQsSS5hdHRhY2hFdmVudCgib25jaGFuZ2UiLGkpfWZ1bmN0aW9uIHMoKXtJJiYo
SS5kZXRhY2hFdmVudCgib25jaGFuZ2UiLGkpLEk9bnVsbCxSPW51bGwpfWZ1bmN0aW9uIGMoZSx0
KXt2YXIgbj1PLnVwZGF0ZVZhbHVlSWZDaGFuZ2VkKGUpLHI9dC5zaW11bGF0ZWQ9PT0hMCYmai5f
YWxsb3dTaW11bGF0ZWRQYXNzVGhyb3VnaDtpZihufHxyKXJldHVybiBlfWZ1bmN0aW9uIGwoZSx0
KXtpZigidG9wQ2hhbmdlIj09PWUpcmV0dXJuIHR9ZnVuY3Rpb24gcChlLHQsbil7InRvcEZvY3Vz
Ij09PWU/KHMoKSx1KHQsbikpOiJ0b3BCbHVyIj09PWUmJnMoKX1mdW5jdGlvbiBkKGUsdCl7ST1l
LFI9dCxJLmF0dGFjaEV2ZW50KCJvbnByb3BlcnR5Y2hhbmdlIixoKX1mdW5jdGlvbiBmKCl7SSYm
KEkuZGV0YWNoRXZlbnQoIm9ucHJvcGVydHljaGFuZ2UiLGgpLEk9bnVsbCxSPW51bGwpfWZ1bmN0
aW9uIGgoZSl7InZhbHVlIj09PWUucHJvcGVydHlOYW1lJiZjKFIsZSkmJmkoZSl9ZnVuY3Rpb24g
dihlLHQsbil7InRvcEZvY3VzIj09PWU/KGYoKSxkKHQsbikpOiJ0b3BCbHVyIj09PWUmJmYoKX1m
dW5jdGlvbiBtKGUsdCxuKXtpZigidG9wU2VsZWN0aW9uQ2hhbmdlIj09PWV8fCJ0b3BLZXlVcCI9
PT1lfHwidG9wS2V5RG93biI9PT1lKXJldHVybiBjKFIsbil9ZnVuY3Rpb24geShlKXt2YXIgdD1l
Lm5vZGVOYW1lO3JldHVybiB0JiYiaW5wdXQiPT09dC50b0xvd2VyQ2FzZSgpJiYoImNoZWNrYm94
Ij09PWUudHlwZXx8InJhZGlvIj09PWUudHlwZSk7Cit9ZnVuY3Rpb24gZyhlLHQsbil7aWYoInRv
cENsaWNrIj09PWUpcmV0dXJuIGModCxuKX1mdW5jdGlvbiBiKGUsdCxuKXtpZigidG9wSW5wdXQi
PT09ZXx8InRvcENoYW5nZSI9PT1lKXJldHVybiBjKHQsbil9ZnVuY3Rpb24gXyhlLHQpe2lmKG51
bGwhPWUpe3ZhciBuPWUuX3dyYXBwZXJTdGF0ZXx8dC5fd3JhcHBlclN0YXRlO2lmKG4mJm4uY29u
dHJvbGxlZCYmIm51bWJlciI9PT10LnR5cGUpe3ZhciByPSIiK3QudmFsdWU7dC5nZXRBdHRyaWJ1
dGUoInZhbHVlIikhPT1yJiZ0LnNldEF0dHJpYnV0ZSgidmFsdWUiLHIpfX19dmFyIEM9bigxOSks
RT1uKDIwKSx3PW4oNiksVD1uKDUpLFA9big5KSx4PW4oMTApLE89big3NCksUz1uKDQ2KSxrPW4o
NDcpLE09big3NiksTj17Y2hhbmdlOntwaGFzZWRSZWdpc3RyYXRpb25OYW1lczp7YnViYmxlZDoi
b25DaGFuZ2UiLGNhcHR1cmVkOiJvbkNoYW5nZUNhcHR1cmUifSxkZXBlbmRlbmNpZXM6WyJ0b3BC
bHVyIiwidG9wQ2hhbmdlIiwidG9wQ2xpY2siLCJ0b3BGb2N1cyIsInRvcElucHV0IiwidG9wS2V5
RG93biIsInRvcEtleVVwIiwidG9wU2VsZWN0aW9uQ2hhbmdlIl19fSxJPW51bGwsUj1udWxsLEE9
ITE7dy5jYW5Vc2VET00mJihBPWsoImNoYW5nZSIpJiYoIWRvY3VtZW50LmRvY3VtZW50TW9kZXx8
ZG9jdW1lbnQuZG9jdW1lbnRNb2RlPjgpKTt2YXIgRD0hMTt3LmNhblVzZURPTSYmKEQ9aygiaW5w
dXQiKSYmKCEoImRvY3VtZW50TW9kZSJpbiBkb2N1bWVudCl8fGRvY3VtZW50LmRvY3VtZW50TW9k
ZT45KSk7dmFyIGo9e2V2ZW50VHlwZXM6TixfYWxsb3dTaW11bGF0ZWRQYXNzVGhyb3VnaDohMCxf
aXNJbnB1dEV2ZW50U3VwcG9ydGVkOkQsZXh0cmFjdEV2ZW50czpmdW5jdGlvbihlLHQsbixpKXt2
YXIgYSx1LHM9dD9ULmdldE5vZGVGcm9tSW5zdGFuY2UodCk6d2luZG93O2lmKG8ocyk/QT9hPWw6
dT1wOk0ocyk/RD9hPWI6KGE9bSx1PXYpOnkocykmJihhPWcpLGEpe3ZhciBjPWEoZSx0LG4pO2lm
KGMpe3ZhciBkPXIoYyxuLGkpO3JldHVybiBkfX11JiZ1KGUscyx0KSwidG9wQmx1ciI9PT1lJiZf
KHQscyl9fTtlLmV4cG9ydHM9an0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1u
KDMpLG89bigxNCksaT1uKDYpLGE9bigxMDIpLHU9big3KSxzPShuKDEpLHtkYW5nZXJvdXNseVJl
cGxhY2VOb2RlV2l0aE1hcmt1cDpmdW5jdGlvbihlLHQpe2lmKGkuY2FuVXNlRE9NP3ZvaWQgMDpy
KCI1NiIpLHQ/dm9pZCAwOnIoIjU3IiksIkhUTUwiPT09ZS5ub2RlTmFtZT9yKCI1OCIpOnZvaWQg
MCwic3RyaW5nIj09dHlwZW9mIHQpe3ZhciBuPWEodCx1KVswXTtlLnBhcmVudE5vZGUucmVwbGFj
ZUNoaWxkKG4sZSl9ZWxzZSBvLnJlcGxhY2VDaGlsZFdpdGhUcmVlKGUsdCl9fSk7ZS5leHBvcnRz
PXN9LGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO3ZhciBuPVsiUmVzcG9uZGVyRXZlbnRQbHVn
aW4iLCJTaW1wbGVFdmVudFBsdWdpbiIsIlRhcEV2ZW50UGx1Z2luIiwiRW50ZXJMZWF2ZUV2ZW50
UGx1Z2luIiwiQ2hhbmdlRXZlbnRQbHVnaW4iLCJTZWxlY3RFdmVudFBsdWdpbiIsIkJlZm9yZUlu
cHV0RXZlbnRQbHVnaW4iXTtlLmV4cG9ydHM9bn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0
Ijt2YXIgcj1uKDIwKSxvPW4oNSksaT1uKDI2KSxhPXttb3VzZUVudGVyOntyZWdpc3RyYXRpb25O
YW1lOiJvbk1vdXNlRW50ZXIiLGRlcGVuZGVuY2llczpbInRvcE1vdXNlT3V0IiwidG9wTW91c2VP
dmVyIl19LG1vdXNlTGVhdmU6e3JlZ2lzdHJhdGlvbk5hbWU6Im9uTW91c2VMZWF2ZSIsZGVwZW5k
ZW5jaWVzOlsidG9wTW91c2VPdXQiLCJ0b3BNb3VzZU92ZXIiXX19LHU9e2V2ZW50VHlwZXM6YSxl
eHRyYWN0RXZlbnRzOmZ1bmN0aW9uKGUsdCxuLHUpe2lmKCJ0b3BNb3VzZU92ZXIiPT09ZSYmKG4u
cmVsYXRlZFRhcmdldHx8bi5mcm9tRWxlbWVudCkpcmV0dXJuIG51bGw7aWYoInRvcE1vdXNlT3V0
IiE9PWUmJiJ0b3BNb3VzZU92ZXIiIT09ZSlyZXR1cm4gbnVsbDt2YXIgcztpZih1LndpbmRvdz09
PXUpcz11O2Vsc2V7dmFyIGM9dS5vd25lckRvY3VtZW50O3M9Yz9jLmRlZmF1bHRWaWV3fHxjLnBh
cmVudFdpbmRvdzp3aW5kb3d9dmFyIGwscDtpZigidG9wTW91c2VPdXQiPT09ZSl7bD10O3ZhciBk
PW4ucmVsYXRlZFRhcmdldHx8bi50b0VsZW1lbnQ7cD1kP28uZ2V0Q2xvc2VzdEluc3RhbmNlRnJv
bU5vZGUoZCk6bnVsbH1lbHNlIGw9bnVsbCxwPXQ7aWYobD09PXApcmV0dXJuIG51bGw7dmFyIGY9
bnVsbD09bD9zOm8uZ2V0Tm9kZUZyb21JbnN0YW5jZShsKSxoPW51bGw9PXA/czpvLmdldE5vZGVG
cm9tSW5zdGFuY2UocCksdj1pLmdldFBvb2xlZChhLm1vdXNlTGVhdmUsbCxuLHUpO3YudHlwZT0i
bW91c2VsZWF2ZSIsdi50YXJnZXQ9Zix2LnJlbGF0ZWRUYXJnZXQ9aDt2YXIgbT1pLmdldFBvb2xl
ZChhLm1vdXNlRW50ZXIscCxuLHUpO3JldHVybiBtLnR5cGU9Im1vdXNlZW50ZXIiLG0udGFyZ2V0
PWgsbS5yZWxhdGVkVGFyZ2V0PWYsci5hY2N1bXVsYXRlRW50ZXJMZWF2ZURpc3BhdGNoZXModixt
LGwscCksW3YsbV19fTtlLmV4cG9ydHM9dX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijtm
dW5jdGlvbiByKGUpe3RoaXMuX3Jvb3Q9ZSx0aGlzLl9zdGFydFRleHQ9dGhpcy5nZXRUZXh0KCks
dGhpcy5fZmFsbGJhY2tUZXh0PW51bGx9dmFyIG89big0KSxpPW4oMTMpLGE9big3Myk7byhyLnBy
b3RvdHlwZSx7ZGVzdHJ1Y3RvcjpmdW5jdGlvbigpe3RoaXMuX3Jvb3Q9bnVsbCx0aGlzLl9zdGFy
dFRleHQ9bnVsbCx0aGlzLl9mYWxsYmFja1RleHQ9bnVsbH0sZ2V0VGV4dDpmdW5jdGlvbigpe3Jl
dHVybiJ2YWx1ZSJpbiB0aGlzLl9yb290P3RoaXMuX3Jvb3QudmFsdWU6dGhpcy5fcm9vdFthKCld
fSxnZXREYXRhOmZ1bmN0aW9uKCl7aWYodGhpcy5fZmFsbGJhY2tUZXh0KXJldHVybiB0aGlzLl9m
YWxsYmFja1RleHQ7dmFyIGUsdCxuPXRoaXMuX3N0YXJ0VGV4dCxyPW4ubGVuZ3RoLG89dGhpcy5n
ZXRUZXh0KCksaT1vLmxlbmd0aDtmb3IoZT0wO2U8ciYmbltlXT09PW9bZV07ZSsrKTt2YXIgYT1y
LWU7Zm9yKHQ9MTt0PD1hJiZuW3ItdF09PT1vW2ktdF07dCsrKTt2YXIgdT10PjE/MS10OnZvaWQg
MDtyZXR1cm4gdGhpcy5fZmFsbGJhY2tUZXh0PW8uc2xpY2UoZSx1KSx0aGlzLl9mYWxsYmFja1Rl
eHR9fSksaS5hZGRQb29saW5nVG8ociksZS5leHBvcnRzPXJ9LGZ1bmN0aW9uKGUsdCxuKXsidXNl
IHN0cmljdCI7dmFyIHI9bigxNSksbz1yLmluamVjdGlvbi5NVVNUX1VTRV9QUk9QRVJUWSxpPXIu
aW5qZWN0aW9uLkhBU19CT09MRUFOX1ZBTFVFLGE9ci5pbmplY3Rpb24uSEFTX05VTUVSSUNfVkFM
VUUsdT1yLmluamVjdGlvbi5IQVNfUE9TSVRJVkVfTlVNRVJJQ19WQUxVRSxzPXIuaW5qZWN0aW9u
LkhBU19PVkVSTE9BREVEX0JPT0xFQU5fVkFMVUUsYz17aXNDdXN0b21BdHRyaWJ1dGU6UmVnRXhw
LnByb3RvdHlwZS50ZXN0LmJpbmQobmV3IFJlZ0V4cCgiXihkYXRhfGFyaWEpLVsiK3IuQVRUUklC
VVRFX05BTUVfQ0hBUisiXSokIikpLFByb3BlcnRpZXM6e2FjY2VwdDowLGFjY2VwdENoYXJzZXQ6
MCxhY2Nlc3NLZXk6MCxhY3Rpb246MCxhbGxvd0Z1bGxTY3JlZW46aSxhbGxvd1RyYW5zcGFyZW5j
eTowLGFsdDowLGFzOjAsYXN5bmM6aSxhdXRvQ29tcGxldGU6MCxhdXRvUGxheTppLGNhcHR1cmU6
aSxjZWxsUGFkZGluZzowLGNlbGxTcGFjaW5nOjAsY2hhclNldDowLGNoYWxsZW5nZTowLGNoZWNr
ZWQ6b3xpLGNpdGU6MCxjbGFzc0lEOjAsY2xhc3NOYW1lOjAsY29sczp1LGNvbFNwYW46MCxjb250
ZW50OjAsY29udGVudEVkaXRhYmxlOjAsY29udGV4dE1lbnU6MCxjb250cm9sczppLGNvb3Jkczow
LGNyb3NzT3JpZ2luOjAsZGF0YTowLGRhdGVUaW1lOjAsZGVmYXVsdDppLGRlZmVyOmksZGlyOjAs
ZGlzYWJsZWQ6aSxkb3dubG9hZDpzLGRyYWdnYWJsZTowLGVuY1R5cGU6MCxmb3JtOjAsZm9ybUFj
dGlvbjowLGZvcm1FbmNUeXBlOjAsZm9ybU1ldGhvZDowLGZvcm1Ob1ZhbGlkYXRlOmksZm9ybVRh
cmdldDowLGZyYW1lQm9yZGVyOjAsaGVhZGVyczowLGhlaWdodDowLGhpZGRlbjppLGhpZ2g6MCxo
cmVmOjAsaHJlZkxhbmc6MCxodG1sRm9yOjAsaHR0cEVxdWl2OjAsaWNvbjowLGlkOjAsaW5wdXRN
b2RlOjAsaW50ZWdyaXR5OjAsaXM6MCxrZXlQYXJhbXM6MCxrZXlUeXBlOjAsa2luZDowLGxhYmVs
OjAsbGFuZzowLGxpc3Q6MCxsb29wOmksbG93OjAsbWFuaWZlc3Q6MCxtYXJnaW5IZWlnaHQ6MCxt
YXJnaW5XaWR0aDowLG1heDowLG1heExlbmd0aDowLG1lZGlhOjAsbWVkaWFHcm91cDowLG1ldGhv
ZDowLG1pbjowLG1pbkxlbmd0aDowLG11bHRpcGxlOm98aSxtdXRlZDpvfGksbmFtZTowLG5vbmNl
OjAsbm9WYWxpZGF0ZTppLG9wZW46aSxvcHRpbXVtOjAscGF0dGVybjowLHBsYWNlaG9sZGVyOjAs
cGxheXNJbmxpbmU6aSxwb3N0ZXI6MCxwcmVsb2FkOjAscHJvZmlsZTowLHJhZGlvR3JvdXA6MCxy
ZWFkT25seTppLHJlZmVycmVyUG9saWN5OjAscmVsOjAscmVxdWlyZWQ6aSxyZXZlcnNlZDppLHJv
bGU6MCxyb3dzOnUscm93U3BhbjphLHNhbmRib3g6MCxzY29wZTowLHNjb3BlZDppLHNjcm9sbGlu
ZzowLHNlYW1sZXNzOmksc2VsZWN0ZWQ6b3xpLHNoYXBlOjAsc2l6ZTp1LHNpemVzOjAsc3Bhbjp1
LHNwZWxsQ2hlY2s6MCxzcmM6MCxzcmNEb2M6MCxzcmNMYW5nOjAsc3JjU2V0OjAsc3RhcnQ6YSxz
dGVwOjAsc3R5bGU6MCxzdW1tYXJ5OjAsdGFiSW5kZXg6MCx0YXJnZXQ6MCx0aXRsZTowLHR5cGU6
MCx1c2VNYXA6MCx2YWx1ZTowLHdpZHRoOjAsd21vZGU6MCx3cmFwOjAsYWJvdXQ6MCxkYXRhdHlw
ZTowLGlubGlzdDowLHByZWZpeDowLHByb3BlcnR5OjAscmVzb3VyY2U6MCx0eXBlb2Y6MCx2b2Nh
YjowLGF1dG9DYXBpdGFsaXplOjAsYXV0b0NvcnJlY3Q6MCxhdXRvU2F2ZTowLGNvbG9yOjAsaXRl
bVByb3A6MCxpdGVtU2NvcGU6aSxpdGVtVHlwZTowLGl0ZW1JRDowLGl0ZW1SZWY6MCxyZXN1bHRz
OjAsc2VjdXJpdHk6MCx1bnNlbGVjdGFibGU6MH0sRE9NQXR0cmlidXRlTmFtZXM6e2FjY2VwdENo
YXJzZXQ6ImFjY2VwdC1jaGFyc2V0IixjbGFzc05hbWU6ImNsYXNzIixodG1sRm9yOiJmb3IiLGh0
dHBFcXVpdjoiaHR0cC1lcXVpdiJ9LERPTVByb3BlcnR5TmFtZXM6e30sRE9NTXV0YXRpb25NZXRo
b2RzOnt2YWx1ZTpmdW5jdGlvbihlLHQpe3JldHVybiBudWxsPT10P2UucmVtb3ZlQXR0cmlidXRl
KCJ2YWx1ZSIpOnZvaWQoIm51bWJlciIhPT1lLnR5cGV8fGUuaGFzQXR0cmlidXRlKCJ2YWx1ZSIp
PT09ITE/ZS5zZXRBdHRyaWJ1dGUoInZhbHVlIiwiIit0KTplLnZhbGlkaXR5JiYhZS52YWxpZGl0
eS5iYWRJbnB1dCYmZS5vd25lckRvY3VtZW50LmFjdGl2ZUVsZW1lbnQhPT1lJiZlLnNldEF0dHJp
YnV0ZSgidmFsdWUiLCIiK3QpKX19fTtlLmV4cG9ydHM9Y30sZnVuY3Rpb24oZSx0LG4peyhmdW5j
dGlvbih0KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQsbixyKXt2YXIgbz12b2lkIDA9PT1l
W25dO251bGwhPXQmJm8mJihlW25dPWkodCwhMCkpfXZhciBvPW4oMTYpLGk9big3NSksYT0obigz
OCksbig0OCkpLHU9big3OCk7bigyKTsidW5kZWZpbmVkIiE9dHlwZW9mIHQmJnQuZW52LDE7dmFy
IHM9e2luc3RhbnRpYXRlQ2hpbGRyZW46ZnVuY3Rpb24oZSx0LG4sbyl7aWYobnVsbD09ZSlyZXR1
cm4gbnVsbDt2YXIgaT17fTtyZXR1cm4gdShlLHIsaSksaX0sdXBkYXRlQ2hpbGRyZW46ZnVuY3Rp
b24oZSx0LG4scix1LHMsYyxsLHApe2lmKHR8fGUpe3ZhciBkLGY7Zm9yKGQgaW4gdClpZih0Lmhh
c093blByb3BlcnR5KGQpKXtmPWUmJmVbZF07dmFyIGg9ZiYmZi5fY3VycmVudEVsZW1lbnQsdj10
W2RdO2lmKG51bGwhPWYmJmEoaCx2KSlvLnJlY2VpdmVDb21wb25lbnQoZix2LHUsbCksdFtkXT1m
O2Vsc2V7ZiYmKHJbZF09by5nZXRIb3N0Tm9kZShmKSxvLnVubW91bnRDb21wb25lbnQoZiwhMSkp
O3ZhciBtPWkodiwhMCk7dFtkXT1tO3ZhciB5PW8ubW91bnRDb21wb25lbnQobSx1LHMsYyxsLHAp
O24ucHVzaCh5KX19Zm9yKGQgaW4gZSkhZS5oYXNPd25Qcm9wZXJ0eShkKXx8dCYmdC5oYXNPd25Q
cm9wZXJ0eShkKXx8KGY9ZVtkXSxyW2RdPW8uZ2V0SG9zdE5vZGUoZiksby51bm1vdW50Q29tcG9u
ZW50KGYsITEpKX19LHVubW91bnRDaGlsZHJlbjpmdW5jdGlvbihlLHQpe2Zvcih2YXIgbiBpbiBl
KWlmKGUuaGFzT3duUHJvcGVydHkobikpe3ZhciByPWVbbl07by51bm1vdW50Q29tcG9uZW50KHIs
dCl9fX07ZS5leHBvcnRzPXN9KS5jYWxsKHQsbig4NykpfSxmdW5jdGlvbihlLHQsbil7InVzZSBz
dHJpY3QiO3ZhciByPW4oMzQpLG89bigxNDIpLGk9e3Byb2Nlc3NDaGlsZHJlblVwZGF0ZXM6by5k
YW5nZXJvdXNseVByb2Nlc3NDaGlsZHJlblVwZGF0ZXMscmVwbGFjZU5vZGVXaXRoTWFya3VwOnIu
ZGFuZ2Vyb3VzbHlSZXBsYWNlTm9kZVdpdGhNYXJrdXB9O2UuZXhwb3J0cz1pfSxmdW5jdGlvbihl
LHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7fWZ1bmN0aW9uIG8oZSx0KXt9ZnVuY3Rp
b24gaShlKXtyZXR1cm4hKCFlLnByb3RvdHlwZXx8IWUucHJvdG90eXBlLmlzUmVhY3RDb21wb25l
bnQpfWZ1bmN0aW9uIGEoZSl7cmV0dXJuISghZS5wcm90b3R5cGV8fCFlLnByb3RvdHlwZS5pc1B1
cmVSZWFjdENvbXBvbmVudCl9dmFyIHU9bigzKSxzPW4oNCksYz1uKDE3KSxsPW4oNDApLHA9bigx
MSksZD1uKDQxKSxmPW4oMjEpLGg9KG4oOCksbig2OCkpLHY9bigxNiksbT1uKDI0KSx5PShuKDEp
LG4oMzIpKSxnPW4oNDgpLGI9KG4oMikse0ltcHVyZUNsYXNzOjAsUHVyZUNsYXNzOjEsU3RhdGVs
ZXNzRnVuY3Rpb25hbDoyfSk7ci5wcm90b3R5cGUucmVuZGVyPWZ1bmN0aW9uKCl7dmFyIGU9Zi5n
ZXQodGhpcykuX2N1cnJlbnRFbGVtZW50LnR5cGUsdD1lKHRoaXMucHJvcHMsdGhpcy5jb250ZXh0
LHRoaXMudXBkYXRlcik7cmV0dXJuIG8oZSx0KSx0fTt2YXIgXz0xLEM9e2NvbnN0cnVjdDpmdW5j
dGlvbihlKXt0aGlzLl9jdXJyZW50RWxlbWVudD1lLHRoaXMuX3Jvb3ROb2RlSUQ9MCx0aGlzLl9j
b21wb3NpdGVUeXBlPW51bGwsdGhpcy5faW5zdGFuY2U9bnVsbCx0aGlzLl9ob3N0UGFyZW50PW51
bGwsdGhpcy5faG9zdENvbnRhaW5lckluZm89bnVsbCx0aGlzLl91cGRhdGVCYXRjaE51bWJlcj1u
dWxsLHRoaXMuX3BlbmRpbmdFbGVtZW50PW51bGwsdGhpcy5fcGVuZGluZ1N0YXRlUXVldWU9bnVs
bCx0aGlzLl9wZW5kaW5nUmVwbGFjZVN0YXRlPSExLHRoaXMuX3BlbmRpbmdGb3JjZVVwZGF0ZT0h
MSx0aGlzLl9yZW5kZXJlZE5vZGVUeXBlPW51bGwsdGhpcy5fcmVuZGVyZWRDb21wb25lbnQ9bnVs
bCx0aGlzLl9jb250ZXh0PW51bGwsdGhpcy5fbW91bnRPcmRlcj0wLHRoaXMuX3RvcExldmVsV3Jh
cHBlcj1udWxsLHRoaXMuX3BlbmRpbmdDYWxsYmFja3M9bnVsbCx0aGlzLl9jYWxsZWRDb21wb25l
bnRXaWxsVW5tb3VudD0hMX0sbW91bnRDb21wb25lbnQ6ZnVuY3Rpb24oZSx0LG4scyl7dGhpcy5f
Y29udGV4dD1zLHRoaXMuX21vdW50T3JkZXI9XysrLHRoaXMuX2hvc3RQYXJlbnQ9dCx0aGlzLl9o
b3N0Q29udGFpbmVySW5mbz1uO3ZhciBsLHA9dGhpcy5fY3VycmVudEVsZW1lbnQucHJvcHMsZD10
aGlzLl9wcm9jZXNzQ29udGV4dChzKSxoPXRoaXMuX2N1cnJlbnRFbGVtZW50LnR5cGUsdj1lLmdl
dFVwZGF0ZVF1ZXVlKCkseT1pKGgpLGc9dGhpcy5fY29uc3RydWN0Q29tcG9uZW50KHkscCxkLHYp
O3l8fG51bGwhPWcmJm51bGwhPWcucmVuZGVyP2EoaCk/dGhpcy5fY29tcG9zaXRlVHlwZT1iLlB1
cmVDbGFzczp0aGlzLl9jb21wb3NpdGVUeXBlPWIuSW1wdXJlQ2xhc3M6KGw9ZyxvKGgsbCksbnVs
bD09PWd8fGc9PT0hMXx8Yy5pc1ZhbGlkRWxlbWVudChnKT92b2lkIDA6dSgiMTA1IixoLmRpc3Bs
YXlOYW1lfHxoLm5hbWV8fCJDb21wb25lbnQiKSxnPW5ldyByKGgpLHRoaXMuX2NvbXBvc2l0ZVR5
cGU9Yi5TdGF0ZWxlc3NGdW5jdGlvbmFsKTtnLnByb3BzPXAsZy5jb250ZXh0PWQsZy5yZWZzPW0s
Zy51cGRhdGVyPXYsdGhpcy5faW5zdGFuY2U9ZyxmLnNldChnLHRoaXMpO3ZhciBDPWcuc3RhdGU7
dm9pZCAwPT09QyYmKGcuc3RhdGU9Qz1udWxsKSwib2JqZWN0IiE9dHlwZW9mIEN8fEFycmF5Lmlz
QXJyYXkoQyk/dSgiMTA2Iix0aGlzLmdldE5hbWUoKXx8IlJlYWN0Q29tcG9zaXRlQ29tcG9uZW50
Iik6dm9pZCAwLHRoaXMuX3BlbmRpbmdTdGF0ZVF1ZXVlPW51bGwsdGhpcy5fcGVuZGluZ1JlcGxh
Y2VTdGF0ZT0hMSx0aGlzLl9wZW5kaW5nRm9yY2VVcGRhdGU9ITE7dmFyIEU7cmV0dXJuIEU9Zy51
bnN0YWJsZV9oYW5kbGVFcnJvcj90aGlzLnBlcmZvcm1Jbml0aWFsTW91bnRXaXRoRXJyb3JIYW5k
bGluZyhsLHQsbixlLHMpOnRoaXMucGVyZm9ybUluaXRpYWxNb3VudChsLHQsbixlLHMpLGcuY29t
cG9uZW50RGlkTW91bnQmJmUuZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1ZShnLmNvbXBvbmVu
dERpZE1vdW50LGcpLEV9LF9jb25zdHJ1Y3RDb21wb25lbnQ6ZnVuY3Rpb24oZSx0LG4scil7cmV0
dXJuIHRoaXMuX2NvbnN0cnVjdENvbXBvbmVudFdpdGhvdXRPd25lcihlLHQsbixyKX0sX2NvbnN0
cnVjdENvbXBvbmVudFdpdGhvdXRPd25lcjpmdW5jdGlvbihlLHQsbixyKXt2YXIgbz10aGlzLl9j
dXJyZW50RWxlbWVudC50eXBlO3JldHVybiBlP25ldyBvKHQsbixyKTpvKHQsbixyKX0scGVyZm9y
bUluaXRpYWxNb3VudFdpdGhFcnJvckhhbmRsaW5nOmZ1bmN0aW9uKGUsdCxuLHIsbyl7dmFyIGks
YT1yLmNoZWNrcG9pbnQoKTt0cnl7aT10aGlzLnBlcmZvcm1Jbml0aWFsTW91bnQoZSx0LG4scixv
KX1jYXRjaCh1KXtyLnJvbGxiYWNrKGEpLHRoaXMuX2luc3RhbmNlLnVuc3RhYmxlX2hhbmRsZUVy
cm9yKHUpLHRoaXMuX3BlbmRpbmdTdGF0ZVF1ZXVlJiYodGhpcy5faW5zdGFuY2Uuc3RhdGU9dGhp
cy5fcHJvY2Vzc1BlbmRpbmdTdGF0ZSh0aGlzLl9pbnN0YW5jZS5wcm9wcyx0aGlzLl9pbnN0YW5j
ZS5jb250ZXh0KSksYT1yLmNoZWNrcG9pbnQoKSx0aGlzLl9yZW5kZXJlZENvbXBvbmVudC51bm1v
dW50Q29tcG9uZW50KCEwKSxyLnJvbGxiYWNrKGEpLGk9dGhpcy5wZXJmb3JtSW5pdGlhbE1vdW50
KGUsdCxuLHIsbyl9cmV0dXJuIGl9LHBlcmZvcm1Jbml0aWFsTW91bnQ6ZnVuY3Rpb24oZSx0LG4s
cixvKXt2YXIgaT10aGlzLl9pbnN0YW5jZSxhPTA7aS5jb21wb25lbnRXaWxsTW91bnQmJihpLmNv
bXBvbmVudFdpbGxNb3VudCgpLHRoaXMuX3BlbmRpbmdTdGF0ZVF1ZXVlJiYoaS5zdGF0ZT10aGlz
Ll9wcm9jZXNzUGVuZGluZ1N0YXRlKGkucHJvcHMsaS5jb250ZXh0KSkpLHZvaWQgMD09PWUmJihl
PXRoaXMuX3JlbmRlclZhbGlkYXRlZENvbXBvbmVudCgpKTt2YXIgdT1oLmdldFR5cGUoZSk7dGhp
cy5fcmVuZGVyZWROb2RlVHlwZT11O3ZhciBzPXRoaXMuX2luc3RhbnRpYXRlUmVhY3RDb21wb25l
bnQoZSx1IT09aC5FTVBUWSk7dGhpcy5fcmVuZGVyZWRDb21wb25lbnQ9czt2YXIgYz12Lm1vdW50
Q29tcG9uZW50KHMscix0LG4sdGhpcy5fcHJvY2Vzc0NoaWxkQ29udGV4dChvKSxhKTtyZXR1cm4g
Y30sZ2V0SG9zdE5vZGU6ZnVuY3Rpb24oKXtyZXR1cm4gdi5nZXRIb3N0Tm9kZSh0aGlzLl9yZW5k
ZXJlZENvbXBvbmVudCl9LHVubW91bnRDb21wb25lbnQ6ZnVuY3Rpb24oZSl7aWYodGhpcy5fcmVu
ZGVyZWRDb21wb25lbnQpe3ZhciB0PXRoaXMuX2luc3RhbmNlO2lmKHQuY29tcG9uZW50V2lsbFVu
bW91bnQmJiF0Ll9jYWxsZWRDb21wb25lbnRXaWxsVW5tb3VudClpZih0Ll9jYWxsZWRDb21wb25l
bnRXaWxsVW5tb3VudD0hMCxlKXt2YXIgbj10aGlzLmdldE5hbWUoKSsiLmNvbXBvbmVudFdpbGxV
bm1vdW50KCkiO2QuaW52b2tlR3VhcmRlZENhbGxiYWNrKG4sdC5jb21wb25lbnRXaWxsVW5tb3Vu
dC5iaW5kKHQpKX1lbHNlIHQuY29tcG9uZW50V2lsbFVubW91bnQoKTt0aGlzLl9yZW5kZXJlZENv
bXBvbmVudCYmKHYudW5tb3VudENvbXBvbmVudCh0aGlzLl9yZW5kZXJlZENvbXBvbmVudCxlKSx0
aGlzLl9yZW5kZXJlZE5vZGVUeXBlPW51bGwsdGhpcy5fcmVuZGVyZWRDb21wb25lbnQ9bnVsbCx0
aGlzLl9pbnN0YW5jZT1udWxsKSx0aGlzLl9wZW5kaW5nU3RhdGVRdWV1ZT1udWxsLHRoaXMuX3Bl
bmRpbmdSZXBsYWNlU3RhdGU9ITEsdGhpcy5fcGVuZGluZ0ZvcmNlVXBkYXRlPSExLHRoaXMuX3Bl
bmRpbmdDYWxsYmFja3M9bnVsbCx0aGlzLl9wZW5kaW5nRWxlbWVudD1udWxsLHRoaXMuX2NvbnRl
eHQ9bnVsbCx0aGlzLl9yb290Tm9kZUlEPTAsdGhpcy5fdG9wTGV2ZWxXcmFwcGVyPW51bGwsZi5y
ZW1vdmUodCl9fSxfbWFza0NvbnRleHQ6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5fY3VycmVudEVs
ZW1lbnQudHlwZSxuPXQuY29udGV4dFR5cGVzO2lmKCFuKXJldHVybiBtO3ZhciByPXt9O2Zvcih2
YXIgbyBpbiBuKXJbb109ZVtvXTtyZXR1cm4gcn0sX3Byb2Nlc3NDb250ZXh0OmZ1bmN0aW9uKGUp
e3ZhciB0PXRoaXMuX21hc2tDb250ZXh0KGUpO3JldHVybiB0fSxfcHJvY2Vzc0NoaWxkQ29udGV4
dDpmdW5jdGlvbihlKXt2YXIgdCxuPXRoaXMuX2N1cnJlbnRFbGVtZW50LnR5cGUscj10aGlzLl9p
bnN0YW5jZTtpZihyLmdldENoaWxkQ29udGV4dCYmKHQ9ci5nZXRDaGlsZENvbnRleHQoKSksdCl7
Im9iamVjdCIhPXR5cGVvZiBuLmNoaWxkQ29udGV4dFR5cGVzP3UoIjEwNyIsdGhpcy5nZXROYW1l
KCl8fCJSZWFjdENvbXBvc2l0ZUNvbXBvbmVudCIpOnZvaWQgMDtmb3IodmFyIG8gaW4gdClvIGlu
IG4uY2hpbGRDb250ZXh0VHlwZXM/dm9pZCAwOnUoIjEwOCIsdGhpcy5nZXROYW1lKCl8fCJSZWFj
dENvbXBvc2l0ZUNvbXBvbmVudCIsbyk7cmV0dXJuIHMoe30sZSx0KX1yZXR1cm4gZX0sX2NoZWNr
Q29udGV4dFR5cGVzOmZ1bmN0aW9uKGUsdCxuKXt9LHJlY2VpdmVDb21wb25lbnQ6ZnVuY3Rpb24o
ZSx0LG4pe3ZhciByPXRoaXMuX2N1cnJlbnRFbGVtZW50LG89dGhpcy5fY29udGV4dDt0aGlzLl9w
ZW5kaW5nRWxlbWVudD1udWxsLHRoaXMudXBkYXRlQ29tcG9uZW50KHQscixlLG8sbil9LHBlcmZv
cm1VcGRhdGVJZk5lY2Vzc2FyeTpmdW5jdGlvbihlKXtudWxsIT10aGlzLl9wZW5kaW5nRWxlbWVu
dD92LnJlY2VpdmVDb21wb25lbnQodGhpcyx0aGlzLl9wZW5kaW5nRWxlbWVudCxlLHRoaXMuX2Nv
bnRleHQpOm51bGwhPT10aGlzLl9wZW5kaW5nU3RhdGVRdWV1ZXx8dGhpcy5fcGVuZGluZ0ZvcmNl
VXBkYXRlP3RoaXMudXBkYXRlQ29tcG9uZW50KGUsdGhpcy5fY3VycmVudEVsZW1lbnQsdGhpcy5f
Y3VycmVudEVsZW1lbnQsdGhpcy5fY29udGV4dCx0aGlzLl9jb250ZXh0KTp0aGlzLl91cGRhdGVC
YXRjaE51bWJlcj1udWxsfSx1cGRhdGVDb21wb25lbnQ6ZnVuY3Rpb24oZSx0LG4scixvKXt2YXIg
aT10aGlzLl9pbnN0YW5jZTtudWxsPT1pP3UoIjEzNiIsdGhpcy5nZXROYW1lKCl8fCJSZWFjdENv
bXBvc2l0ZUNvbXBvbmVudCIpOnZvaWQgMDt2YXIgYSxzPSExO3RoaXMuX2NvbnRleHQ9PT1vP2E9
aS5jb250ZXh0OihhPXRoaXMuX3Byb2Nlc3NDb250ZXh0KG8pLHM9ITApO3ZhciBjPXQucHJvcHMs
bD1uLnByb3BzO3QhPT1uJiYocz0hMCkscyYmaS5jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzJiZp
LmNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMobCxhKTt2YXIgcD10aGlzLl9wcm9jZXNzUGVuZGlu
Z1N0YXRlKGwsYSksZD0hMDt0aGlzLl9wZW5kaW5nRm9yY2VVcGRhdGV8fChpLnNob3VsZENvbXBv
bmVudFVwZGF0ZT9kPWkuc2hvdWxkQ29tcG9uZW50VXBkYXRlKGwscCxhKTp0aGlzLl9jb21wb3Np
dGVUeXBlPT09Yi5QdXJlQ2xhc3MmJihkPSF5KGMsbCl8fCF5KGkuc3RhdGUscCkpKSx0aGlzLl91
cGRhdGVCYXRjaE51bWJlcj1udWxsLGQ/KHRoaXMuX3BlbmRpbmdGb3JjZVVwZGF0ZT0hMSx0aGlz
Ll9wZXJmb3JtQ29tcG9uZW50VXBkYXRlKG4sbCxwLGEsZSxvKSk6KHRoaXMuX2N1cnJlbnRFbGVt
ZW50PW4sdGhpcy5fY29udGV4dD1vLGkucHJvcHM9bCxpLnN0YXRlPXAsaS5jb250ZXh0PWEpfSxf
cHJvY2Vzc1BlbmRpbmdTdGF0ZTpmdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMuX2luc3RhbmNlLHI9
dGhpcy5fcGVuZGluZ1N0YXRlUXVldWUsbz10aGlzLl9wZW5kaW5nUmVwbGFjZVN0YXRlO2lmKHRo
aXMuX3BlbmRpbmdSZXBsYWNlU3RhdGU9ITEsdGhpcy5fcGVuZGluZ1N0YXRlUXVldWU9bnVsbCwh
cilyZXR1cm4gbi5zdGF0ZTtpZihvJiYxPT09ci5sZW5ndGgpcmV0dXJuIHJbMF07Zm9yKHZhciBp
PXMoe30sbz9yWzBdOm4uc3RhdGUpLGE9bz8xOjA7YTxyLmxlbmd0aDthKyspe3ZhciB1PXJbYV07
cyhpLCJmdW5jdGlvbiI9PXR5cGVvZiB1P3UuY2FsbChuLGksZSx0KTp1KX1yZXR1cm4gaX0sX3Bl
cmZvcm1Db21wb25lbnRVcGRhdGU6ZnVuY3Rpb24oZSx0LG4scixvLGkpe3ZhciBhLHUscyxjPXRo
aXMuX2luc3RhbmNlLGw9Qm9vbGVhbihjLmNvbXBvbmVudERpZFVwZGF0ZSk7bCYmKGE9Yy5wcm9w
cyx1PWMuc3RhdGUscz1jLmNvbnRleHQpLGMuY29tcG9uZW50V2lsbFVwZGF0ZSYmYy5jb21wb25l
bnRXaWxsVXBkYXRlKHQsbixyKSx0aGlzLl9jdXJyZW50RWxlbWVudD1lLHRoaXMuX2NvbnRleHQ9
aSxjLnByb3BzPXQsYy5zdGF0ZT1uLGMuY29udGV4dD1yLHRoaXMuX3VwZGF0ZVJlbmRlcmVkQ29t
cG9uZW50KG8saSksbCYmby5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKGMuY29tcG9uZW50
RGlkVXBkYXRlLmJpbmQoYyxhLHUscyksYyl9LF91cGRhdGVSZW5kZXJlZENvbXBvbmVudDpmdW5j
dGlvbihlLHQpe3ZhciBuPXRoaXMuX3JlbmRlcmVkQ29tcG9uZW50LHI9bi5fY3VycmVudEVsZW1l
bnQsbz10aGlzLl9yZW5kZXJWYWxpZGF0ZWRDb21wb25lbnQoKSxpPTA7aWYoZyhyLG8pKXYucmVj
ZWl2ZUNvbXBvbmVudChuLG8sZSx0aGlzLl9wcm9jZXNzQ2hpbGRDb250ZXh0KHQpKTtlbHNle3Zh
ciBhPXYuZ2V0SG9zdE5vZGUobik7di51bm1vdW50Q29tcG9uZW50KG4sITEpO3ZhciB1PWguZ2V0
VHlwZShvKTt0aGlzLl9yZW5kZXJlZE5vZGVUeXBlPXU7dmFyIHM9dGhpcy5faW5zdGFudGlhdGVS
ZWFjdENvbXBvbmVudChvLHUhPT1oLkVNUFRZKTt0aGlzLl9yZW5kZXJlZENvbXBvbmVudD1zO3Zh
ciBjPXYubW91bnRDb21wb25lbnQocyxlLHRoaXMuX2hvc3RQYXJlbnQsdGhpcy5faG9zdENvbnRh
aW5lckluZm8sdGhpcy5fcHJvY2Vzc0NoaWxkQ29udGV4dCh0KSxpKTt0aGlzLl9yZXBsYWNlTm9k
ZVdpdGhNYXJrdXAoYSxjLG4pfX0sX3JlcGxhY2VOb2RlV2l0aE1hcmt1cDpmdW5jdGlvbihlLHQs
bil7bC5yZXBsYWNlTm9kZVdpdGhNYXJrdXAoZSx0LG4pfSxfcmVuZGVyVmFsaWRhdGVkQ29tcG9u
ZW50V2l0aG91dE93bmVyT3JDb250ZXh0OmZ1bmN0aW9uKCl7dmFyIGUsdD10aGlzLl9pbnN0YW5j
ZTtyZXR1cm4gZT10LnJlbmRlcigpfSxfcmVuZGVyVmFsaWRhdGVkQ29tcG9uZW50OmZ1bmN0aW9u
KCl7dmFyIGU7aWYodGhpcy5fY29tcG9zaXRlVHlwZSE9PWIuU3RhdGVsZXNzRnVuY3Rpb25hbCl7
cC5jdXJyZW50PXRoaXM7dHJ5e2U9dGhpcy5fcmVuZGVyVmFsaWRhdGVkQ29tcG9uZW50V2l0aG91
dE93bmVyT3JDb250ZXh0KCl9ZmluYWxseXtwLmN1cnJlbnQ9bnVsbH19ZWxzZSBlPXRoaXMuX3Jl
bmRlclZhbGlkYXRlZENvbXBvbmVudFdpdGhvdXRPd25lck9yQ29udGV4dCgpO3JldHVybiBudWxs
PT09ZXx8ZT09PSExfHxjLmlzVmFsaWRFbGVtZW50KGUpP3ZvaWQgMDp1KCIxMDkiLHRoaXMuZ2V0
TmFtZSgpfHwiUmVhY3RDb21wb3NpdGVDb21wb25lbnQiKSxlfSxhdHRhY2hSZWY6ZnVuY3Rpb24o
ZSx0KXt2YXIgbj10aGlzLmdldFB1YmxpY0luc3RhbmNlKCk7bnVsbD09bj91KCIxMTAiKTp2b2lk
IDA7dmFyIHI9dC5nZXRQdWJsaWNJbnN0YW5jZSgpLG89bi5yZWZzPT09bT9uLnJlZnM9e306bi5y
ZWZzO29bZV09cn0sZGV0YWNoUmVmOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuZ2V0UHVibGljSW5z
dGFuY2UoKS5yZWZzO2RlbGV0ZSB0W2VdfSxnZXROYW1lOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5f
Y3VycmVudEVsZW1lbnQudHlwZSx0PXRoaXMuX2luc3RhbmNlJiZ0aGlzLl9pbnN0YW5jZS5jb25z
dHJ1Y3RvcjtyZXR1cm4gZS5kaXNwbGF5TmFtZXx8dCYmdC5kaXNwbGF5TmFtZXx8ZS5uYW1lfHx0
JiZ0Lm5hbWV8fG51bGx9LGdldFB1YmxpY0luc3RhbmNlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5f
aW5zdGFuY2U7cmV0dXJuIHRoaXMuX2NvbXBvc2l0ZVR5cGU9PT1iLlN0YXRlbGVzc0Z1bmN0aW9u
YWw/bnVsbDplfSxfaW5zdGFudGlhdGVSZWFjdENvbXBvbmVudDpudWxsfTtlLmV4cG9ydHM9Q30s
ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDUpLG89bigxNTApLGk9big2Nyks
YT1uKDE2KSx1PW4oOSkscz1uKDE2MyksYz1uKDE3OSksbD1uKDcyKSxwPW4oMTg2KTtuKDIpO28u
aW5qZWN0KCk7dmFyIGQ9e2ZpbmRET01Ob2RlOmMscmVuZGVyOmkucmVuZGVyLHVubW91bnRDb21w
b25lbnRBdE5vZGU6aS51bm1vdW50Q29tcG9uZW50QXROb2RlLHZlcnNpb246cyx1bnN0YWJsZV9i
YXRjaGVkVXBkYXRlczp1LmJhdGNoZWRVcGRhdGVzLHVuc3RhYmxlX3JlbmRlclN1YnRyZWVJbnRv
Q29udGFpbmVyOnB9OyJ1bmRlZmluZWQiIT10eXBlb2YgX19SRUFDVF9ERVZUT09MU19HTE9CQUxf
SE9PS19fJiYiZnVuY3Rpb24iPT10eXBlb2YgX19SRUFDVF9ERVZUT09MU19HTE9CQUxfSE9PS19f
LmluamVjdCYmX19SRUFDVF9ERVZUT09MU19HTE9CQUxfSE9PS19fLmluamVjdCh7Q29tcG9uZW50
VHJlZTp7Z2V0Q2xvc2VzdEluc3RhbmNlRnJvbU5vZGU6ci5nZXRDbG9zZXN0SW5zdGFuY2VGcm9t
Tm9kZSxnZXROb2RlRnJvbUluc3RhbmNlOmZ1bmN0aW9uKGUpe3JldHVybiBlLl9yZW5kZXJlZENv
bXBvbmVudCYmKGU9bChlKSksZT9yLmdldE5vZGVGcm9tSW5zdGFuY2UoZSk6bnVsbH19LE1vdW50
OmksUmVjb25jaWxlcjphfSk7ZS5leHBvcnRzPWR9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmlj
dCI7ZnVuY3Rpb24gcihlKXtpZihlKXt2YXIgdD1lLl9jdXJyZW50RWxlbWVudC5fb3duZXJ8fG51
bGw7aWYodCl7dmFyIG49dC5nZXROYW1lKCk7aWYobilyZXR1cm4iIFRoaXMgRE9NIG5vZGUgd2Fz
IHJlbmRlcmVkIGJ5IGAiK24rImAuIn19cmV0dXJuIiJ9ZnVuY3Rpb24gbyhlLHQpe3QmJihRW2Uu
X3RhZ10mJihudWxsIT10LmNoaWxkcmVufHxudWxsIT10LmRhbmdlcm91c2x5U2V0SW5uZXJIVE1M
P20oIjEzNyIsZS5fdGFnLGUuX2N1cnJlbnRFbGVtZW50Ll9vd25lcj8iIENoZWNrIHRoZSByZW5k
ZXIgbWV0aG9kIG9mICIrZS5fY3VycmVudEVsZW1lbnQuX293bmVyLmdldE5hbWUoKSsiLiI6IiIp
OnZvaWQgMCksbnVsbCE9dC5kYW5nZXJvdXNseVNldElubmVySFRNTCYmKG51bGwhPXQuY2hpbGRy
ZW4/bSgiNjAiKTp2b2lkIDAsIm9iamVjdCI9PXR5cGVvZiB0LmRhbmdlcm91c2x5U2V0SW5uZXJI
VE1MJiZxIGluIHQuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw/dm9pZCAwOm0oIjYxIikpLG51bGwh
PXQuc3R5bGUmJiJvYmplY3QiIT10eXBlb2YgdC5zdHlsZT9tKCI2MiIscihlKSk6dm9pZCAwKX1m
dW5jdGlvbiBpKGUsdCxuLHIpe2lmKCEociBpbnN0YW5jZW9mIEEpKXt2YXIgbz1lLl9ob3N0Q29u
dGFpbmVySW5mbyxpPW8uX25vZGUmJm8uX25vZGUubm9kZVR5cGU9PT1ZLHU9aT9vLl9ub2RlOm8u
X293bmVyRG9jdW1lbnQ7Qih0LHUpLHIuZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1ZShhLHtp
bnN0OmUscmVnaXN0cmF0aW9uTmFtZTp0LGxpc3RlbmVyOm59KX19ZnVuY3Rpb24gYSgpe3ZhciBl
PXRoaXM7VC5wdXRMaXN0ZW5lcihlLmluc3QsZS5yZWdpc3RyYXRpb25OYW1lLGUubGlzdGVuZXIp
fWZ1bmN0aW9uIHUoKXt2YXIgZT10aGlzO2sucG9zdE1vdW50V3JhcHBlcihlKX1mdW5jdGlvbiBz
KCl7dmFyIGU9dGhpcztJLnBvc3RNb3VudFdyYXBwZXIoZSl9ZnVuY3Rpb24gYygpe3ZhciBlPXRo
aXM7TS5wb3N0TW91bnRXcmFwcGVyKGUpfWZ1bmN0aW9uIGwoKXtqLnRyYWNrKHRoaXMpfWZ1bmN0
aW9uIHAoKXt2YXIgZT10aGlzO2UuX3Jvb3ROb2RlSUQ/dm9pZCAwOm0oIjYzIik7dmFyIHQ9Rihl
KTtzd2l0Y2godD92b2lkIDA6bSgiNjQiKSxlLl90YWcpe2Nhc2UiaWZyYW1lIjpjYXNlIm9iamVj
dCI6ZS5fd3JhcHBlclN0YXRlLmxpc3RlbmVycz1beC50cmFwQnViYmxlZEV2ZW50KCJ0b3BMb2Fk
IiwibG9hZCIsdCldO2JyZWFrO2Nhc2UidmlkZW8iOmNhc2UiYXVkaW8iOmUuX3dyYXBwZXJTdGF0
ZS5saXN0ZW5lcnM9W107Zm9yKHZhciBuIGluIHopei5oYXNPd25Qcm9wZXJ0eShuKSYmZS5fd3Jh
cHBlclN0YXRlLmxpc3RlbmVycy5wdXNoKHgudHJhcEJ1YmJsZWRFdmVudChuLHpbbl0sdCkpO2Jy
ZWFrO2Nhc2Uic291cmNlIjplLl93cmFwcGVyU3RhdGUubGlzdGVuZXJzPVt4LnRyYXBCdWJibGVk
RXZlbnQoInRvcEVycm9yIiwiZXJyb3IiLHQpXTticmVhaztjYXNlImltZyI6ZS5fd3JhcHBlclN0
YXRlLmxpc3RlbmVycz1beC50cmFwQnViYmxlZEV2ZW50KCJ0b3BFcnJvciIsImVycm9yIix0KSx4
LnRyYXBCdWJibGVkRXZlbnQoInRvcExvYWQiLCJsb2FkIix0KV07YnJlYWs7Y2FzZSJmb3JtIjpl
Ll93cmFwcGVyU3RhdGUubGlzdGVuZXJzPVt4LnRyYXBCdWJibGVkRXZlbnQoInRvcFJlc2V0Iiwi
cmVzZXQiLHQpLHgudHJhcEJ1YmJsZWRFdmVudCgidG9wU3VibWl0Iiwic3VibWl0Iix0KV07YnJl
YWs7Y2FzZSJpbnB1dCI6Y2FzZSJzZWxlY3QiOmNhc2UidGV4dGFyZWEiOmUuX3dyYXBwZXJTdGF0
ZS5saXN0ZW5lcnM9W3gudHJhcEJ1YmJsZWRFdmVudCgidG9wSW52YWxpZCIsImludmFsaWQiLHQp
XX19ZnVuY3Rpb24gZCgpe04ucG9zdFVwZGF0ZVdyYXBwZXIodGhpcyl9ZnVuY3Rpb24gZihlKXtK
LmNhbGwoWixlKXx8KCQudGVzdChlKT92b2lkIDA6bSgiNjUiLGUpLFpbZV09ITApfWZ1bmN0aW9u
IGgoZSx0KXtyZXR1cm4gZS5pbmRleE9mKCItIik+PTB8fG51bGwhPXQuaXN9ZnVuY3Rpb24gdihl
KXt2YXIgdD1lLnR5cGU7Zih0KSx0aGlzLl9jdXJyZW50RWxlbWVudD1lLHRoaXMuX3RhZz10LnRv
TG93ZXJDYXNlKCksdGhpcy5fbmFtZXNwYWNlVVJJPW51bGwsdGhpcy5fcmVuZGVyZWRDaGlsZHJl
bj1udWxsLHRoaXMuX3ByZXZpb3VzU3R5bGU9bnVsbCx0aGlzLl9wcmV2aW91c1N0eWxlQ29weT1u
dWxsLHRoaXMuX2hvc3ROb2RlPW51bGwsdGhpcy5faG9zdFBhcmVudD1udWxsLHRoaXMuX3Jvb3RO
b2RlSUQ9MCx0aGlzLl9kb21JRD0wLHRoaXMuX2hvc3RDb250YWluZXJJbmZvPW51bGwsdGhpcy5f
d3JhcHBlclN0YXRlPW51bGwsdGhpcy5fdG9wTGV2ZWxXcmFwcGVyPW51bGwsdGhpcy5fZmxhZ3M9
MH12YXIgbT1uKDMpLHk9big0KSxnPW4oMTI1KSxiPW4oMTI3KSxfPW4oMTQpLEM9bigzNSksRT1u
KDE1KSx3PW4oNjApLFQ9bigxOSksUD1uKDM2KSx4PW4oMjUpLE89big2MSksUz1uKDUpLGs9bigx
NDMpLE09bigxNDQpLE49big2MiksST1uKDE0NyksUj0obig4KSxuKDE1NikpLEE9bigxNjEpLEQ9
KG4oNyksbigyOCkpLGo9KG4oMSksbig0NyksbigzMiksbig3NCkpLEw9KG4oNDkpLG4oMiksTyks
VT1ULmRlbGV0ZUxpc3RlbmVyLEY9Uy5nZXROb2RlRnJvbUluc3RhbmNlLEI9eC5saXN0ZW5UbyxW
PVAucmVnaXN0cmF0aW9uTmFtZU1vZHVsZXMsVz17c3RyaW5nOiEwLG51bWJlcjohMH0sSD0ic3R5
bGUiLHE9Il9faHRtbCIsSz17Y2hpbGRyZW46bnVsbCxkYW5nZXJvdXNseVNldElubmVySFRNTDpu
dWxsLHN1cHByZXNzQ29udGVudEVkaXRhYmxlV2FybmluZzpudWxsfSxZPTExLHo9e3RvcEFib3J0
OiJhYm9ydCIsdG9wQ2FuUGxheToiY2FucGxheSIsdG9wQ2FuUGxheVRocm91Z2g6ImNhbnBsYXl0
aHJvdWdoIix0b3BEdXJhdGlvbkNoYW5nZToiZHVyYXRpb25jaGFuZ2UiLHRvcEVtcHRpZWQ6ImVt
cHRpZWQiLHRvcEVuY3J5cHRlZDoiZW5jcnlwdGVkIix0b3BFbmRlZDoiZW5kZWQiLHRvcEVycm9y
OiJlcnJvciIsdG9wTG9hZGVkRGF0YToibG9hZGVkZGF0YSIsdG9wTG9hZGVkTWV0YWRhdGE6Imxv
YWRlZG1ldGFkYXRhIix0b3BMb2FkU3RhcnQ6ImxvYWRzdGFydCIsdG9wUGF1c2U6InBhdXNlIix0
b3BQbGF5OiJwbGF5Iix0b3BQbGF5aW5nOiJwbGF5aW5nIix0b3BQcm9ncmVzczoicHJvZ3Jlc3Mi
LHRvcFJhdGVDaGFuZ2U6InJhdGVjaGFuZ2UiLHRvcFNlZWtlZDoic2Vla2VkIix0b3BTZWVraW5n
OiJzZWVraW5nIix0b3BTdGFsbGVkOiJzdGFsbGVkIix0b3BTdXNwZW5kOiJzdXNwZW5kIix0b3BU
aW1lVXBkYXRlOiJ0aW1ldXBkYXRlIix0b3BWb2x1bWVDaGFuZ2U6InZvbHVtZWNoYW5nZSIsdG9w
V2FpdGluZzoid2FpdGluZyJ9LFg9e2FyZWE6ITAsYmFzZTohMCxicjohMCxjb2w6ITAsZW1iZWQ6
ITAsaHI6ITAsaW1nOiEwLGlucHV0OiEwLGtleWdlbjohMCxsaW5rOiEwLG1ldGE6ITAscGFyYW06
ITAsc291cmNlOiEwLHRyYWNrOiEwLHdicjohMH0sRz17bGlzdGluZzohMCxwcmU6ITAsdGV4dGFy
ZWE6ITB9LFE9eSh7bWVudWl0ZW06ITB9LFgpLCQ9L15bYS16QS1aXVthLXpBLVo6X1wuXC1cZF0q
JC8sWj17fSxKPXt9Lmhhc093blByb3BlcnR5LGVlPTE7di5kaXNwbGF5TmFtZT0iUmVhY3RET01D
b21wb25lbnQiLHYuTWl4aW49e21vdW50Q29tcG9uZW50OmZ1bmN0aW9uKGUsdCxuLHIpe3RoaXMu
X3Jvb3ROb2RlSUQ9ZWUrKyx0aGlzLl9kb21JRD1uLl9pZENvdW50ZXIrKyx0aGlzLl9ob3N0UGFy
ZW50PXQsdGhpcy5faG9zdENvbnRhaW5lckluZm89bjt2YXIgaT10aGlzLl9jdXJyZW50RWxlbWVu
dC5wcm9wcztzd2l0Y2godGhpcy5fdGFnKXtjYXNlImF1ZGlvIjpjYXNlImZvcm0iOmNhc2UiaWZy
YW1lIjpjYXNlImltZyI6Y2FzZSJsaW5rIjpjYXNlIm9iamVjdCI6Y2FzZSJzb3VyY2UiOmNhc2Ui
dmlkZW8iOnRoaXMuX3dyYXBwZXJTdGF0ZT17bGlzdGVuZXJzOm51bGx9LGUuZ2V0UmVhY3RNb3Vu
dFJlYWR5KCkuZW5xdWV1ZShwLHRoaXMpO2JyZWFrO2Nhc2UiaW5wdXQiOmsubW91bnRXcmFwcGVy
KHRoaXMsaSx0KSxpPWsuZ2V0SG9zdFByb3BzKHRoaXMsaSksZS5nZXRSZWFjdE1vdW50UmVhZHko
KS5lbnF1ZXVlKGwsdGhpcyksZS5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKHAsdGhpcyk7
YnJlYWs7Y2FzZSJvcHRpb24iOk0ubW91bnRXcmFwcGVyKHRoaXMsaSx0KSxpPU0uZ2V0SG9zdFBy
b3BzKHRoaXMsaSk7YnJlYWs7Y2FzZSJzZWxlY3QiOk4ubW91bnRXcmFwcGVyKHRoaXMsaSx0KSxp
PU4uZ2V0SG9zdFByb3BzKHRoaXMsaSksZS5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKHAs
dGhpcyk7YnJlYWs7Y2FzZSJ0ZXh0YXJlYSI6SS5tb3VudFdyYXBwZXIodGhpcyxpLHQpLGk9SS5n
ZXRIb3N0UHJvcHModGhpcyxpKSxlLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUobCx0aGlz
KSxlLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUocCx0aGlzKX1vKHRoaXMsaSk7dmFyIGEs
ZDtudWxsIT10PyhhPXQuX25hbWVzcGFjZVVSSSxkPXQuX3RhZyk6bi5fdGFnJiYoYT1uLl9uYW1l
c3BhY2VVUkksZD1uLl90YWcpLChudWxsPT1hfHxhPT09Qy5zdmcmJiJmb3JlaWdub2JqZWN0Ij09
PWQpJiYoYT1DLmh0bWwpLGE9PT1DLmh0bWwmJigic3ZnIj09PXRoaXMuX3RhZz9hPUMuc3ZnOiJt
YXRoIj09PXRoaXMuX3RhZyYmKGE9Qy5tYXRobWwpKSx0aGlzLl9uYW1lc3BhY2VVUkk9YTt2YXIg
ZjtpZihlLnVzZUNyZWF0ZUVsZW1lbnQpe3ZhciBoLHY9bi5fb3duZXJEb2N1bWVudDtpZihhPT09
Qy5odG1sKWlmKCJzY3JpcHQiPT09dGhpcy5fdGFnKXt2YXIgbT12LmNyZWF0ZUVsZW1lbnQoImRp
diIpLHk9dGhpcy5fY3VycmVudEVsZW1lbnQudHlwZTttLmlubmVySFRNTD0iPCIreSsiPjwvIit5
KyI+IixoPW0ucmVtb3ZlQ2hpbGQobS5maXJzdENoaWxkKX1lbHNlIGg9aS5pcz92LmNyZWF0ZUVs
ZW1lbnQodGhpcy5fY3VycmVudEVsZW1lbnQudHlwZSxpLmlzKTp2LmNyZWF0ZUVsZW1lbnQodGhp
cy5fY3VycmVudEVsZW1lbnQudHlwZSk7ZWxzZSBoPXYuY3JlYXRlRWxlbWVudE5TKGEsdGhpcy5f
Y3VycmVudEVsZW1lbnQudHlwZSk7Uy5wcmVjYWNoZU5vZGUodGhpcyxoKSx0aGlzLl9mbGFnc3w9
TC5oYXNDYWNoZWRDaGlsZE5vZGVzLHRoaXMuX2hvc3RQYXJlbnR8fHcuc2V0QXR0cmlidXRlRm9y
Um9vdChoKSx0aGlzLl91cGRhdGVET01Qcm9wZXJ0aWVzKG51bGwsaSxlKTt2YXIgYj1fKGgpO3Ro
aXMuX2NyZWF0ZUluaXRpYWxDaGlsZHJlbihlLGkscixiKSxmPWJ9ZWxzZXt2YXIgRT10aGlzLl9j
cmVhdGVPcGVuVGFnTWFya3VwQW5kUHV0TGlzdGVuZXJzKGUsaSksVD10aGlzLl9jcmVhdGVDb250
ZW50TWFya3VwKGUsaSxyKTtmPSFUJiZYW3RoaXMuX3RhZ10/RSsiLz4iOkUrIj4iK1QrIjwvIit0
aGlzLl9jdXJyZW50RWxlbWVudC50eXBlKyI+In1zd2l0Y2godGhpcy5fdGFnKXtjYXNlImlucHV0
IjplLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUodSx0aGlzKSxpLmF1dG9Gb2N1cyYmZS5n
ZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKGcuZm9jdXNET01Db21wb25lbnQsdGhpcyk7YnJl
YWs7Y2FzZSJ0ZXh0YXJlYSI6ZS5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKHMsdGhpcyks
aS5hdXRvRm9jdXMmJmUuZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1ZShnLmZvY3VzRE9NQ29t
cG9uZW50LHRoaXMpO2JyZWFrO2Nhc2Uic2VsZWN0IjppLmF1dG9Gb2N1cyYmZS5nZXRSZWFjdE1v
dW50UmVhZHkoKS5lbnF1ZXVlKGcuZm9jdXNET01Db21wb25lbnQsdGhpcyk7YnJlYWs7Y2FzZSJi
dXR0b24iOmkuYXV0b0ZvY3VzJiZlLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUoZy5mb2N1
c0RPTUNvbXBvbmVudCx0aGlzKTticmVhaztjYXNlIm9wdGlvbiI6ZS5nZXRSZWFjdE1vdW50UmVh
ZHkoKS5lbnF1ZXVlKGMsdGhpcyl9cmV0dXJuIGZ9LF9jcmVhdGVPcGVuVGFnTWFya3VwQW5kUHV0
TGlzdGVuZXJzOmZ1bmN0aW9uKGUsdCl7dmFyIG49IjwiK3RoaXMuX2N1cnJlbnRFbGVtZW50LnR5
cGU7Zm9yKHZhciByIGluIHQpaWYodC5oYXNPd25Qcm9wZXJ0eShyKSl7dmFyIG89dFtyXTtpZihu
dWxsIT1vKWlmKFYuaGFzT3duUHJvcGVydHkocikpbyYmaSh0aGlzLHIsbyxlKTtlbHNle3I9PT1I
JiYobyYmKG89dGhpcy5fcHJldmlvdXNTdHlsZUNvcHk9eSh7fSx0LnN0eWxlKSksbz1iLmNyZWF0
ZU1hcmt1cEZvclN0eWxlcyhvLHRoaXMpKTt2YXIgYT1udWxsO251bGwhPXRoaXMuX3RhZyYmaCh0
aGlzLl90YWcsdCk/Sy5oYXNPd25Qcm9wZXJ0eShyKXx8KGE9dy5jcmVhdGVNYXJrdXBGb3JDdXN0
b21BdHRyaWJ1dGUocixvKSk6YT13LmNyZWF0ZU1hcmt1cEZvclByb3BlcnR5KHIsbyksYSYmKG4r
PSIgIithKX19cmV0dXJuIGUucmVuZGVyVG9TdGF0aWNNYXJrdXA/bjoodGhpcy5faG9zdFBhcmVu
dHx8KG4rPSIgIit3LmNyZWF0ZU1hcmt1cEZvclJvb3QoKSksbis9IiAiK3cuY3JlYXRlTWFya3Vw
Rm9ySUQodGhpcy5fZG9tSUQpKX0sX2NyZWF0ZUNvbnRlbnRNYXJrdXA6ZnVuY3Rpb24oZSx0LG4p
e3ZhciByPSIiLG89dC5kYW5nZXJvdXNseVNldElubmVySFRNTDtpZihudWxsIT1vKW51bGwhPW8u
X19odG1sJiYocj1vLl9faHRtbCk7ZWxzZXt2YXIgaT1XW3R5cGVvZiB0LmNoaWxkcmVuXT90LmNo
aWxkcmVuOm51bGwsYT1udWxsIT1pP251bGw6dC5jaGlsZHJlbjtpZihudWxsIT1pKXI9RChpKTtl
bHNlIGlmKG51bGwhPWEpe3ZhciB1PXRoaXMubW91bnRDaGlsZHJlbihhLGUsbik7cj11LmpvaW4o
IiIpfX1yZXR1cm4gR1t0aGlzLl90YWddJiYiXG4iPT09ci5jaGFyQXQoMCk/IlxuIityOnJ9LF9j
cmVhdGVJbml0aWFsQ2hpbGRyZW46ZnVuY3Rpb24oZSx0LG4scil7dmFyIG89dC5kYW5nZXJvdXNs
eVNldElubmVySFRNTDtpZihudWxsIT1vKW51bGwhPW8uX19odG1sJiZfLnF1ZXVlSFRNTChyLG8u
X19odG1sKTtlbHNle3ZhciBpPVdbdHlwZW9mIHQuY2hpbGRyZW5dP3QuY2hpbGRyZW46bnVsbCxh
PW51bGwhPWk/bnVsbDp0LmNoaWxkcmVuO2lmKG51bGwhPWkpIiIhPT1pJiZfLnF1ZXVlVGV4dChy
LGkpO2Vsc2UgaWYobnVsbCE9YSlmb3IodmFyIHU9dGhpcy5tb3VudENoaWxkcmVuKGEsZSxuKSxz
PTA7czx1Lmxlbmd0aDtzKyspXy5xdWV1ZUNoaWxkKHIsdVtzXSl9fSxyZWNlaXZlQ29tcG9uZW50
OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzLl9jdXJyZW50RWxlbWVudDt0aGlzLl9jdXJyZW50
RWxlbWVudD1lLHRoaXMudXBkYXRlQ29tcG9uZW50KHQscixlLG4pfSx1cGRhdGVDb21wb25lbnQ6
ZnVuY3Rpb24oZSx0LG4scil7dmFyIGk9dC5wcm9wcyxhPXRoaXMuX2N1cnJlbnRFbGVtZW50LnBy
b3BzO3N3aXRjaCh0aGlzLl90YWcpe2Nhc2UiaW5wdXQiOmk9ay5nZXRIb3N0UHJvcHModGhpcyxp
KSxhPWsuZ2V0SG9zdFByb3BzKHRoaXMsYSk7YnJlYWs7Y2FzZSJvcHRpb24iOmk9TS5nZXRIb3N0
UHJvcHModGhpcyxpKSxhPU0uZ2V0SG9zdFByb3BzKHRoaXMsYSk7YnJlYWs7Y2FzZSJzZWxlY3Qi
Omk9Ti5nZXRIb3N0UHJvcHModGhpcyxpKSxhPU4uZ2V0SG9zdFByb3BzKHRoaXMsYSk7YnJlYWs7
Y2FzZSJ0ZXh0YXJlYSI6aT1JLmdldEhvc3RQcm9wcyh0aGlzLGkpLGE9SS5nZXRIb3N0UHJvcHMo
dGhpcyxhKX1zd2l0Y2gobyh0aGlzLGEpLHRoaXMuX3VwZGF0ZURPTVByb3BlcnRpZXMoaSxhLGUp
LHRoaXMuX3VwZGF0ZURPTUNoaWxkcmVuKGksYSxlLHIpLHRoaXMuX3RhZyl7Y2FzZSJpbnB1dCI6
ay51cGRhdGVXcmFwcGVyKHRoaXMpO2JyZWFrO2Nhc2UidGV4dGFyZWEiOkkudXBkYXRlV3JhcHBl
cih0aGlzKTticmVhaztjYXNlInNlbGVjdCI6ZS5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVl
KGQsdGhpcyl9fSxfdXBkYXRlRE9NUHJvcGVydGllczpmdW5jdGlvbihlLHQsbil7dmFyIHIsbyxh
O2ZvcihyIGluIGUpaWYoIXQuaGFzT3duUHJvcGVydHkocikmJmUuaGFzT3duUHJvcGVydHkocikm
Jm51bGwhPWVbcl0paWYocj09PUgpe3ZhciB1PXRoaXMuX3ByZXZpb3VzU3R5bGVDb3B5O2Zvcihv
IGluIHUpdS5oYXNPd25Qcm9wZXJ0eShvKSYmKGE9YXx8e30sYVtvXT0iIik7dGhpcy5fcHJldmlv
dXNTdHlsZUNvcHk9bnVsbH1lbHNlIFYuaGFzT3duUHJvcGVydHkocik/ZVtyXSYmVSh0aGlzLHIp
OmgodGhpcy5fdGFnLGUpP0suaGFzT3duUHJvcGVydHkocil8fHcuZGVsZXRlVmFsdWVGb3JBdHRy
aWJ1dGUoRih0aGlzKSxyKTooRS5wcm9wZXJ0aWVzW3JdfHxFLmlzQ3VzdG9tQXR0cmlidXRlKHIp
KSYmdy5kZWxldGVWYWx1ZUZvclByb3BlcnR5KEYodGhpcykscik7Zm9yKHIgaW4gdCl7dmFyIHM9
dFtyXSxjPXI9PT1IP3RoaXMuX3ByZXZpb3VzU3R5bGVDb3B5Om51bGwhPWU/ZVtyXTp2b2lkIDA7
aWYodC5oYXNPd25Qcm9wZXJ0eShyKSYmcyE9PWMmJihudWxsIT1zfHxudWxsIT1jKSlpZihyPT09
SClpZihzP3M9dGhpcy5fcHJldmlvdXNTdHlsZUNvcHk9eSh7fSxzKTp0aGlzLl9wcmV2aW91c1N0
eWxlQ29weT1udWxsLGMpe2ZvcihvIGluIGMpIWMuaGFzT3duUHJvcGVydHkobyl8fHMmJnMuaGFz
T3duUHJvcGVydHkobyl8fChhPWF8fHt9LGFbb109IiIpO2ZvcihvIGluIHMpcy5oYXNPd25Qcm9w
ZXJ0eShvKSYmY1tvXSE9PXNbb10mJihhPWF8fHt9LGFbb109c1tvXSl9ZWxzZSBhPXM7ZWxzZSBp
ZihWLmhhc093blByb3BlcnR5KHIpKXM/aSh0aGlzLHIscyxuKTpjJiZVKHRoaXMscik7ZWxzZSBp
ZihoKHRoaXMuX3RhZyx0KSlLLmhhc093blByb3BlcnR5KHIpfHx3LnNldFZhbHVlRm9yQXR0cmli
dXRlKEYodGhpcykscixzKTtlbHNlIGlmKEUucHJvcGVydGllc1tyXXx8RS5pc0N1c3RvbUF0dHJp
YnV0ZShyKSl7dmFyIGw9Rih0aGlzKTtudWxsIT1zP3cuc2V0VmFsdWVGb3JQcm9wZXJ0eShsLHIs
cyk6dy5kZWxldGVWYWx1ZUZvclByb3BlcnR5KGwscil9fWEmJmIuc2V0VmFsdWVGb3JTdHlsZXMo
Rih0aGlzKSxhLHRoaXMpfSxfdXBkYXRlRE9NQ2hpbGRyZW46ZnVuY3Rpb24oZSx0LG4scil7dmFy
IG89V1t0eXBlb2YgZS5jaGlsZHJlbl0/ZS5jaGlsZHJlbjpudWxsLGk9V1t0eXBlb2YgdC5jaGls
ZHJlbl0/dC5jaGlsZHJlbjpudWxsLGE9ZS5kYW5nZXJvdXNseVNldElubmVySFRNTCYmZS5kYW5n
ZXJvdXNseVNldElubmVySFRNTC5fX2h0bWwsdT10LmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MJiZ0
LmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MLl9faHRtbCxzPW51bGwhPW8/bnVsbDplLmNoaWxkcmVu
LGM9bnVsbCE9aT9udWxsOnQuY2hpbGRyZW4sbD1udWxsIT1vfHxudWxsIT1hLHA9bnVsbCE9aXx8
bnVsbCE9dTtudWxsIT1zJiZudWxsPT1jP3RoaXMudXBkYXRlQ2hpbGRyZW4obnVsbCxuLHIpOmwm
JiFwJiZ0aGlzLnVwZGF0ZVRleHRDb250ZW50KCIiKSxudWxsIT1pP28hPT1pJiZ0aGlzLnVwZGF0
ZVRleHRDb250ZW50KCIiK2kpOm51bGwhPXU/YSE9PXUmJnRoaXMudXBkYXRlTWFya3VwKCIiK3Up
Om51bGwhPWMmJnRoaXMudXBkYXRlQ2hpbGRyZW4oYyxuLHIpfSxnZXRIb3N0Tm9kZTpmdW5jdGlv
bigpe3JldHVybiBGKHRoaXMpfSx1bm1vdW50Q29tcG9uZW50OmZ1bmN0aW9uKGUpe3N3aXRjaCh0
aGlzLl90YWcpe2Nhc2UiYXVkaW8iOmNhc2UiZm9ybSI6Y2FzZSJpZnJhbWUiOmNhc2UiaW1nIjpj
YXNlImxpbmsiOmNhc2Uib2JqZWN0IjpjYXNlInNvdXJjZSI6Y2FzZSJ2aWRlbyI6dmFyIHQ9dGhp
cy5fd3JhcHBlclN0YXRlLmxpc3RlbmVycztpZih0KWZvcih2YXIgbj0wO248dC5sZW5ndGg7bisr
KXRbbl0ucmVtb3ZlKCk7YnJlYWs7Y2FzZSJpbnB1dCI6Y2FzZSJ0ZXh0YXJlYSI6ai5zdG9wVHJh
Y2tpbmcodGhpcyk7YnJlYWs7Y2FzZSJodG1sIjpjYXNlImhlYWQiOmNhc2UiYm9keSI6bSgiNjYi
LHRoaXMuX3RhZyl9dGhpcy51bm1vdW50Q2hpbGRyZW4oZSksUy51bmNhY2hlTm9kZSh0aGlzKSxU
LmRlbGV0ZUFsbExpc3RlbmVycyh0aGlzKSx0aGlzLl9yb290Tm9kZUlEPTAsdGhpcy5fZG9tSUQ9
MCx0aGlzLl93cmFwcGVyU3RhdGU9bnVsbH0sZ2V0UHVibGljSW5zdGFuY2U6ZnVuY3Rpb24oKXty
ZXR1cm4gRih0aGlzKX19LHkodi5wcm90b3R5cGUsdi5NaXhpbixSLk1peGluKSxlLmV4cG9ydHM9
dn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCl7dmFyIG49e190
b3BMZXZlbFdyYXBwZXI6ZSxfaWRDb3VudGVyOjEsX293bmVyRG9jdW1lbnQ6dD90Lm5vZGVUeXBl
PT09bz90OnQub3duZXJEb2N1bWVudDpudWxsLF9ub2RlOnQsX3RhZzp0P3Qubm9kZU5hbWUudG9M
b3dlckNhc2UoKTpudWxsLF9uYW1lc3BhY2VVUkk6dD90Lm5hbWVzcGFjZVVSSTpudWxsfTtyZXR1
cm4gbn12YXIgbz0obig0OSksOSk7ZS5leHBvcnRzPXJ9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0
cmljdCI7dmFyIHI9big0KSxvPW4oMTQpLGk9big1KSxhPWZ1bmN0aW9uKGUpe3RoaXMuX2N1cnJl
bnRFbGVtZW50PW51bGwsdGhpcy5faG9zdE5vZGU9bnVsbCx0aGlzLl9ob3N0UGFyZW50PW51bGws
dGhpcy5faG9zdENvbnRhaW5lckluZm89bnVsbCx0aGlzLl9kb21JRD0wfTtyKGEucHJvdG90eXBl
LHttb3VudENvbXBvbmVudDpmdW5jdGlvbihlLHQsbixyKXt2YXIgYT1uLl9pZENvdW50ZXIrKzt0
aGlzLl9kb21JRD1hLHRoaXMuX2hvc3RQYXJlbnQ9dCx0aGlzLl9ob3N0Q29udGFpbmVySW5mbz1u
O3ZhciB1PSIgcmVhY3QtZW1wdHk6ICIrdGhpcy5fZG9tSUQrIiAiO2lmKGUudXNlQ3JlYXRlRWxl
bWVudCl7dmFyIHM9bi5fb3duZXJEb2N1bWVudCxjPXMuY3JlYXRlQ29tbWVudCh1KTtyZXR1cm4g
aS5wcmVjYWNoZU5vZGUodGhpcyxjKSxvKGMpfXJldHVybiBlLnJlbmRlclRvU3RhdGljTWFya3Vw
PyIiOiI8IS0tIit1KyItLT4ifSxyZWNlaXZlQ29tcG9uZW50OmZ1bmN0aW9uKCl7fSxnZXRIb3N0
Tm9kZTpmdW5jdGlvbigpe3JldHVybiBpLmdldE5vZGVGcm9tSW5zdGFuY2UodGhpcyl9LHVubW91
bnRDb21wb25lbnQ6ZnVuY3Rpb24oKXtpLnVuY2FjaGVOb2RlKHRoaXMpfX0pLGUuZXhwb3J0cz1h
fSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj17dXNlQ3JlYXRlRWxlbWVudDohMCx1
c2VGaWJlcjohMX07ZS5leHBvcnRzPW59LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFy
IHI9bigzNCksbz1uKDUpLGk9e2Rhbmdlcm91c2x5UHJvY2Vzc0NoaWxkcmVuVXBkYXRlczpmdW5j
dGlvbihlLHQpe3ZhciBuPW8uZ2V0Tm9kZUZyb21JbnN0YW5jZShlKTtyLnByb2Nlc3NVcGRhdGVz
KG4sdCl9fTtlLmV4cG9ydHM9aX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlv
biByKCl7dGhpcy5fcm9vdE5vZGVJRCYmZC51cGRhdGVXcmFwcGVyKHRoaXMpfWZ1bmN0aW9uIG8o
ZSl7dmFyIHQ9ImNoZWNrYm94Ij09PWUudHlwZXx8InJhZGlvIj09PWUudHlwZTtyZXR1cm4gdD9u
dWxsIT1lLmNoZWNrZWQ6bnVsbCE9ZS52YWx1ZX1mdW5jdGlvbiBpKGUpe3ZhciB0PXRoaXMuX2N1
cnJlbnRFbGVtZW50LnByb3BzLG49Yy5leGVjdXRlT25DaGFuZ2UodCxlKTtwLmFzYXAocix0aGlz
KTt2YXIgbz10Lm5hbWU7aWYoInJhZGlvIj09PXQudHlwZSYmbnVsbCE9byl7Zm9yKHZhciBpPWwu
Z2V0Tm9kZUZyb21JbnN0YW5jZSh0aGlzKSx1PWk7dS5wYXJlbnROb2RlOyl1PXUucGFyZW50Tm9k
ZTtmb3IodmFyIHM9dS5xdWVyeVNlbGVjdG9yQWxsKCJpbnB1dFtuYW1lPSIrSlNPTi5zdHJpbmdp
ZnkoIiIrbykrJ11bdHlwZT0icmFkaW8iXScpLGQ9MDtkPHMubGVuZ3RoO2QrKyl7dmFyIGY9c1tk
XTtpZihmIT09aSYmZi5mb3JtPT09aS5mb3JtKXt2YXIgaD1sLmdldEluc3RhbmNlRnJvbU5vZGUo
Zik7aD92b2lkIDA6YSgiOTAiKSxwLmFzYXAocixoKX19fXJldHVybiBufXZhciBhPW4oMyksdT1u
KDQpLHM9big2MCksYz1uKDM5KSxsPW4oNSkscD1uKDkpLGQ9KG4oMSksbigyKSx7Z2V0SG9zdFBy
b3BzOmZ1bmN0aW9uKGUsdCl7dmFyIG49Yy5nZXRWYWx1ZSh0KSxyPWMuZ2V0Q2hlY2tlZCh0KSxv
PXUoe3R5cGU6dm9pZCAwLHN0ZXA6dm9pZCAwLG1pbjp2b2lkIDAsbWF4OnZvaWQgMH0sdCx7ZGVm
YXVsdENoZWNrZWQ6dm9pZCAwLGRlZmF1bHRWYWx1ZTp2b2lkIDAsdmFsdWU6bnVsbCE9bj9uOmUu
X3dyYXBwZXJTdGF0ZS5pbml0aWFsVmFsdWUsY2hlY2tlZDpudWxsIT1yP3I6ZS5fd3JhcHBlclN0
YXRlLmluaXRpYWxDaGVja2VkLG9uQ2hhbmdlOmUuX3dyYXBwZXJTdGF0ZS5vbkNoYW5nZX0pO3Jl
dHVybiBvfSxtb3VudFdyYXBwZXI6ZnVuY3Rpb24oZSx0KXt2YXIgbj10LmRlZmF1bHRWYWx1ZTtl
Ll93cmFwcGVyU3RhdGU9e2luaXRpYWxDaGVja2VkOm51bGwhPXQuY2hlY2tlZD90LmNoZWNrZWQ6
dC5kZWZhdWx0Q2hlY2tlZCxpbml0aWFsVmFsdWU6bnVsbCE9dC52YWx1ZT90LnZhbHVlOm4sbGlz
dGVuZXJzOm51bGwsb25DaGFuZ2U6aS5iaW5kKGUpLGNvbnRyb2xsZWQ6byh0KX19LHVwZGF0ZVdy
YXBwZXI6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5fY3VycmVudEVsZW1lbnQucHJvcHMsbj10LmNoZWNr
ZWQ7bnVsbCE9biYmcy5zZXRWYWx1ZUZvclByb3BlcnR5KGwuZ2V0Tm9kZUZyb21JbnN0YW5jZShl
KSwiY2hlY2tlZCIsbnx8ITEpO3ZhciByPWwuZ2V0Tm9kZUZyb21JbnN0YW5jZShlKSxvPWMuZ2V0
VmFsdWUodCk7aWYobnVsbCE9bylpZigwPT09byYmIiI9PT1yLnZhbHVlKXIudmFsdWU9IjAiO2Vs
c2UgaWYoIm51bWJlciI9PT10LnR5cGUpe3ZhciBpPXBhcnNlRmxvYXQoci52YWx1ZSwxMCl8fDA7
KG8hPWl8fG89PWkmJnIudmFsdWUhPW8pJiYoci52YWx1ZT0iIitvKX1lbHNlIHIudmFsdWUhPT0i
IitvJiYoci52YWx1ZT0iIitvKTtlbHNlIG51bGw9PXQudmFsdWUmJm51bGwhPXQuZGVmYXVsdFZh
bHVlJiZyLmRlZmF1bHRWYWx1ZSE9PSIiK3QuZGVmYXVsdFZhbHVlJiYoci5kZWZhdWx0VmFsdWU9
IiIrdC5kZWZhdWx0VmFsdWUpLG51bGw9PXQuY2hlY2tlZCYmbnVsbCE9dC5kZWZhdWx0Q2hlY2tl
ZCYmKHIuZGVmYXVsdENoZWNrZWQ9ISF0LmRlZmF1bHRDaGVja2VkKX0scG9zdE1vdW50V3JhcHBl
cjpmdW5jdGlvbihlKXt2YXIgdD1lLl9jdXJyZW50RWxlbWVudC5wcm9wcyxuPWwuZ2V0Tm9kZUZy
b21JbnN0YW5jZShlKTtzd2l0Y2godC50eXBlKXtjYXNlInN1Ym1pdCI6Y2FzZSJyZXNldCI6YnJl
YWs7Y2FzZSJjb2xvciI6Y2FzZSJkYXRlIjpjYXNlImRhdGV0aW1lIjpjYXNlImRhdGV0aW1lLWxv
Y2FsIjpjYXNlIm1vbnRoIjpjYXNlInRpbWUiOmNhc2Uid2VlayI6bi52YWx1ZT0iIixuLnZhbHVl
PW4uZGVmYXVsdFZhbHVlO2JyZWFrO2RlZmF1bHQ6bi52YWx1ZT1uLnZhbHVlfXZhciByPW4ubmFt
ZTsiIiE9PXImJihuLm5hbWU9IiIpLG4uZGVmYXVsdENoZWNrZWQ9IW4uZGVmYXVsdENoZWNrZWQs
bi5kZWZhdWx0Q2hlY2tlZD0hbi5kZWZhdWx0Q2hlY2tlZCwiIiE9PXImJihuLm5hbWU9cil9fSk7
ZS5leHBvcnRzPWR9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXt2
YXIgdD0iIjtyZXR1cm4gaS5DaGlsZHJlbi5mb3JFYWNoKGUsZnVuY3Rpb24oZSl7bnVsbCE9ZSYm
KCJzdHJpbmciPT10eXBlb2YgZXx8Im51bWJlciI9PXR5cGVvZiBlP3QrPWU6c3x8KHM9ITApKX0p
LHR9dmFyIG89big0KSxpPW4oMTcpLGE9big1KSx1PW4oNjIpLHM9KG4oMiksITEpLGM9e21vdW50
V3JhcHBlcjpmdW5jdGlvbihlLHQsbil7dmFyIG89bnVsbDtpZihudWxsIT1uKXt2YXIgaT1uOyJv
cHRncm91cCI9PT1pLl90YWcmJihpPWkuX2hvc3RQYXJlbnQpLG51bGwhPWkmJiJzZWxlY3QiPT09
aS5fdGFnJiYobz11LmdldFNlbGVjdFZhbHVlQ29udGV4dChpKSl9dmFyIGE9bnVsbDtpZihudWxs
IT1vKXt2YXIgcztpZihzPW51bGwhPXQudmFsdWU/dC52YWx1ZSsiIjpyKHQuY2hpbGRyZW4pLGE9
ITEsQXJyYXkuaXNBcnJheShvKSl7Zm9yKHZhciBjPTA7YzxvLmxlbmd0aDtjKyspaWYoIiIrb1tj
XT09PXMpe2E9ITA7YnJlYWt9fWVsc2UgYT0iIitvPT09c31lLl93cmFwcGVyU3RhdGU9e3NlbGVj
dGVkOmF9fSxwb3N0TW91bnRXcmFwcGVyOmZ1bmN0aW9uKGUpe3ZhciB0PWUuX2N1cnJlbnRFbGVt
ZW50LnByb3BzO2lmKG51bGwhPXQudmFsdWUpe3ZhciBuPWEuZ2V0Tm9kZUZyb21JbnN0YW5jZShl
KTtuLnNldEF0dHJpYnV0ZSgidmFsdWUiLHQudmFsdWUpfX0sZ2V0SG9zdFByb3BzOmZ1bmN0aW9u
KGUsdCl7dmFyIG49byh7c2VsZWN0ZWQ6dm9pZCAwLGNoaWxkcmVuOnZvaWQgMH0sdCk7bnVsbCE9
ZS5fd3JhcHBlclN0YXRlLnNlbGVjdGVkJiYobi5zZWxlY3RlZD1lLl93cmFwcGVyU3RhdGUuc2Vs
ZWN0ZWQpO3ZhciBpPXIodC5jaGlsZHJlbik7cmV0dXJuIGkmJihuLmNoaWxkcmVuPWkpLG59fTtl
LmV4cG9ydHM9Y30sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCxu
LHIpe3JldHVybiBlPT09biYmdD09PXJ9ZnVuY3Rpb24gbyhlKXt2YXIgdD1kb2N1bWVudC5zZWxl
Y3Rpb24sbj10LmNyZWF0ZVJhbmdlKCkscj1uLnRleHQubGVuZ3RoLG89bi5kdXBsaWNhdGUoKTtv
Lm1vdmVUb0VsZW1lbnRUZXh0KGUpLG8uc2V0RW5kUG9pbnQoIkVuZFRvU3RhcnQiLG4pO3ZhciBp
PW8udGV4dC5sZW5ndGgsYT1pK3I7cmV0dXJue3N0YXJ0OmksZW5kOmF9fWZ1bmN0aW9uIGkoZSl7
dmFyIHQ9d2luZG93LmdldFNlbGVjdGlvbiYmd2luZG93LmdldFNlbGVjdGlvbigpO2lmKCF0fHww
PT09dC5yYW5nZUNvdW50KXJldHVybiBudWxsO3ZhciBuPXQuYW5jaG9yTm9kZSxvPXQuYW5jaG9y
T2Zmc2V0LGk9dC5mb2N1c05vZGUsYT10LmZvY3VzT2Zmc2V0LHU9dC5nZXRSYW5nZUF0KDApO3Ry
eXt1LnN0YXJ0Q29udGFpbmVyLm5vZGVUeXBlLHUuZW5kQ29udGFpbmVyLm5vZGVUeXBlfWNhdGNo
KHMpe3JldHVybiBudWxsfXZhciBjPXIodC5hbmNob3JOb2RlLHQuYW5jaG9yT2Zmc2V0LHQuZm9j
dXNOb2RlLHQuZm9jdXNPZmZzZXQpLGw9Yz8wOnUudG9TdHJpbmcoKS5sZW5ndGgscD11LmNsb25l
UmFuZ2UoKTtwLnNlbGVjdE5vZGVDb250ZW50cyhlKSxwLnNldEVuZCh1LnN0YXJ0Q29udGFpbmVy
LHUuc3RhcnRPZmZzZXQpO3ZhciBkPXIocC5zdGFydENvbnRhaW5lcixwLnN0YXJ0T2Zmc2V0LHAu
ZW5kQ29udGFpbmVyLHAuZW5kT2Zmc2V0KSxmPWQ/MDpwLnRvU3RyaW5nKCkubGVuZ3RoLGg9Zits
LHY9ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTt2LnNldFN0YXJ0KG4sbyksdi5zZXRFbmQoaSxhKTt2
YXIgbT12LmNvbGxhcHNlZDtyZXR1cm57c3RhcnQ6bT9oOmYsZW5kOm0/ZjpofX1mdW5jdGlvbiBh
KGUsdCl7dmFyIG4scixvPWRvY3VtZW50LnNlbGVjdGlvbi5jcmVhdGVSYW5nZSgpLmR1cGxpY2F0
ZSgpO3ZvaWQgMD09PXQuZW5kPyhuPXQuc3RhcnQscj1uKTp0LnN0YXJ0PnQuZW5kPyhuPXQuZW5k
LHI9dC5zdGFydCk6KG49dC5zdGFydCxyPXQuZW5kKSxvLm1vdmVUb0VsZW1lbnRUZXh0KGUpLG8u
bW92ZVN0YXJ0KCJjaGFyYWN0ZXIiLG4pLG8uc2V0RW5kUG9pbnQoIkVuZFRvU3RhcnQiLG8pLG8u
bW92ZUVuZCgiY2hhcmFjdGVyIixyLW4pLG8uc2VsZWN0KCl9ZnVuY3Rpb24gdShlLHQpe2lmKHdp
bmRvdy5nZXRTZWxlY3Rpb24pe3ZhciBuPXdpbmRvdy5nZXRTZWxlY3Rpb24oKSxyPWVbbCgpXS5s
ZW5ndGgsbz1NYXRoLm1pbih0LnN0YXJ0LHIpLGk9dm9pZCAwPT09dC5lbmQ/bzpNYXRoLm1pbih0
LmVuZCxyKTtpZighbi5leHRlbmQmJm8+aSl7dmFyIGE9aTtpPW8sbz1hfXZhciB1PWMoZSxvKSxz
PWMoZSxpKTtpZih1JiZzKXt2YXIgcD1kb2N1bWVudC5jcmVhdGVSYW5nZSgpO3Auc2V0U3RhcnQo
dS5ub2RlLHUub2Zmc2V0KSxuLnJlbW92ZUFsbFJhbmdlcygpLG8+aT8obi5hZGRSYW5nZShwKSxu
LmV4dGVuZChzLm5vZGUscy5vZmZzZXQpKToocC5zZXRFbmQocy5ub2RlLHMub2Zmc2V0KSxuLmFk
ZFJhbmdlKHApKX19fXZhciBzPW4oNiksYz1uKDE4MyksbD1uKDczKSxwPXMuY2FuVXNlRE9NJiYi
c2VsZWN0aW9uImluIGRvY3VtZW50JiYhKCJnZXRTZWxlY3Rpb24iaW4gd2luZG93KSxkPXtnZXRP
ZmZzZXRzOnA/bzppLHNldE9mZnNldHM6cD9hOnV9O2UuZXhwb3J0cz1kfSxmdW5jdGlvbihlLHQs
bil7InVzZSBzdHJpY3QiO3ZhciByPW4oMyksbz1uKDQpLGk9bigzNCksYT1uKDE0KSx1PW4oNSks
cz1uKDI4KSxjPShuKDEpLG4oNDkpLGZ1bmN0aW9uKGUpe3RoaXMuX2N1cnJlbnRFbGVtZW50PWUs
dGhpcy5fc3RyaW5nVGV4dD0iIitlLHRoaXMuX2hvc3ROb2RlPW51bGwsdGhpcy5faG9zdFBhcmVu
dD1udWxsLHRoaXMuX2RvbUlEPTAsdGhpcy5fbW91bnRJbmRleD0wLHRoaXMuX2Nsb3NpbmdDb21t
ZW50PW51bGwsdGhpcy5fY29tbWVudE5vZGVzPW51bGx9KTtvKGMucHJvdG90eXBlLHttb3VudENv
bXBvbmVudDpmdW5jdGlvbihlLHQsbixyKXt2YXIgbz1uLl9pZENvdW50ZXIrKyxpPSIgcmVhY3Qt
dGV4dDogIitvKyIgIixjPSIgL3JlYWN0LXRleHQgIjtpZih0aGlzLl9kb21JRD1vLHRoaXMuX2hv
c3RQYXJlbnQ9dCxlLnVzZUNyZWF0ZUVsZW1lbnQpe3ZhciBsPW4uX293bmVyRG9jdW1lbnQscD1s
LmNyZWF0ZUNvbW1lbnQoaSksZD1sLmNyZWF0ZUNvbW1lbnQoYyksZj1hKGwuY3JlYXRlRG9jdW1l
bnRGcmFnbWVudCgpKTtyZXR1cm4gYS5xdWV1ZUNoaWxkKGYsYShwKSksdGhpcy5fc3RyaW5nVGV4
dCYmYS5xdWV1ZUNoaWxkKGYsYShsLmNyZWF0ZVRleHROb2RlKHRoaXMuX3N0cmluZ1RleHQpKSks
YS5xdWV1ZUNoaWxkKGYsYShkKSksdS5wcmVjYWNoZU5vZGUodGhpcyxwKSx0aGlzLl9jbG9zaW5n
Q29tbWVudD1kLGZ9dmFyIGg9cyh0aGlzLl9zdHJpbmdUZXh0KTtyZXR1cm4gZS5yZW5kZXJUb1N0
YXRpY01hcmt1cD9oOiI8IS0tIitpKyItLT4iK2grIjwhLS0iK2MrIi0tPiJ9LHJlY2VpdmVDb21w
b25lbnQ6ZnVuY3Rpb24oZSx0KXtpZihlIT09dGhpcy5fY3VycmVudEVsZW1lbnQpe3RoaXMuX2N1
cnJlbnRFbGVtZW50PWU7dmFyIG49IiIrZTtpZihuIT09dGhpcy5fc3RyaW5nVGV4dCl7dGhpcy5f
c3RyaW5nVGV4dD1uO3ZhciByPXRoaXMuZ2V0SG9zdE5vZGUoKTtpLnJlcGxhY2VEZWxpbWl0ZWRU
ZXh0KHJbMF0sclsxXSxuKX19fSxnZXRIb3N0Tm9kZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMuX2Nv
bW1lbnROb2RlcztpZihlKXJldHVybiBlO2lmKCF0aGlzLl9jbG9zaW5nQ29tbWVudClmb3IodmFy
IHQ9dS5nZXROb2RlRnJvbUluc3RhbmNlKHRoaXMpLG49dC5uZXh0U2libGluZzs7KXsKK2lmKG51
bGw9PW4/cigiNjciLHRoaXMuX2RvbUlEKTp2b2lkIDAsOD09PW4ubm9kZVR5cGUmJiIgL3JlYWN0
LXRleHQgIj09PW4ubm9kZVZhbHVlKXt0aGlzLl9jbG9zaW5nQ29tbWVudD1uO2JyZWFrfW49bi5u
ZXh0U2libGluZ31yZXR1cm4gZT1bdGhpcy5faG9zdE5vZGUsdGhpcy5fY2xvc2luZ0NvbW1lbnRd
LHRoaXMuX2NvbW1lbnROb2Rlcz1lLGV9LHVubW91bnRDb21wb25lbnQ6ZnVuY3Rpb24oKXt0aGlz
Ll9jbG9zaW5nQ29tbWVudD1udWxsLHRoaXMuX2NvbW1lbnROb2Rlcz1udWxsLHUudW5jYWNoZU5v
ZGUodGhpcyl9fSksZS5leHBvcnRzPWN9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVu
Y3Rpb24gcigpe3RoaXMuX3Jvb3ROb2RlSUQmJmwudXBkYXRlV3JhcHBlcih0aGlzKX1mdW5jdGlv
biBvKGUpe3ZhciB0PXRoaXMuX2N1cnJlbnRFbGVtZW50LnByb3BzLG49dS5leGVjdXRlT25DaGFu
Z2UodCxlKTtyZXR1cm4gYy5hc2FwKHIsdGhpcyksbn12YXIgaT1uKDMpLGE9big0KSx1PW4oMzkp
LHM9big1KSxjPW4oOSksbD0obigxKSxuKDIpLHtnZXRIb3N0UHJvcHM6ZnVuY3Rpb24oZSx0KXtu
dWxsIT10LmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MP2koIjkxIik6dm9pZCAwO3ZhciBuPWEoe30s
dCx7dmFsdWU6dm9pZCAwLGRlZmF1bHRWYWx1ZTp2b2lkIDAsY2hpbGRyZW46IiIrZS5fd3JhcHBl
clN0YXRlLmluaXRpYWxWYWx1ZSxvbkNoYW5nZTplLl93cmFwcGVyU3RhdGUub25DaGFuZ2V9KTty
ZXR1cm4gbn0sbW91bnRXcmFwcGVyOmZ1bmN0aW9uKGUsdCl7dmFyIG49dS5nZXRWYWx1ZSh0KSxy
PW47aWYobnVsbD09bil7dmFyIGE9dC5kZWZhdWx0VmFsdWUscz10LmNoaWxkcmVuO251bGwhPXMm
JihudWxsIT1hP2koIjkyIik6dm9pZCAwLEFycmF5LmlzQXJyYXkocykmJihzLmxlbmd0aDw9MT92
b2lkIDA6aSgiOTMiKSxzPXNbMF0pLGE9IiIrcyksbnVsbD09YSYmKGE9IiIpLHI9YX1lLl93cmFw
cGVyU3RhdGU9e2luaXRpYWxWYWx1ZToiIityLGxpc3RlbmVyczpudWxsLG9uQ2hhbmdlOm8uYmlu
ZChlKX19LHVwZGF0ZVdyYXBwZXI6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5fY3VycmVudEVsZW1lbnQu
cHJvcHMsbj1zLmdldE5vZGVGcm9tSW5zdGFuY2UoZSkscj11LmdldFZhbHVlKHQpO2lmKG51bGwh
PXIpe3ZhciBvPSIiK3I7byE9PW4udmFsdWUmJihuLnZhbHVlPW8pLG51bGw9PXQuZGVmYXVsdFZh
bHVlJiYobi5kZWZhdWx0VmFsdWU9byl9bnVsbCE9dC5kZWZhdWx0VmFsdWUmJihuLmRlZmF1bHRW
YWx1ZT10LmRlZmF1bHRWYWx1ZSl9LHBvc3RNb3VudFdyYXBwZXI6ZnVuY3Rpb24oZSl7dmFyIHQ9
cy5nZXROb2RlRnJvbUluc3RhbmNlKGUpLG49dC50ZXh0Q29udGVudDtuPT09ZS5fd3JhcHBlclN0
YXRlLmluaXRpYWxWYWx1ZSYmKHQudmFsdWU9bil9fSk7ZS5leHBvcnRzPWx9LGZ1bmN0aW9uKGUs
dCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQpeyJfaG9zdE5vZGUiaW4gZT92b2lkIDA6
cygiMzMiKSwiX2hvc3ROb2RlImluIHQ/dm9pZCAwOnMoIjMzIik7Zm9yKHZhciBuPTAscj1lO3I7
cj1yLl9ob3N0UGFyZW50KW4rKztmb3IodmFyIG89MCxpPXQ7aTtpPWkuX2hvc3RQYXJlbnQpbysr
O2Zvcig7bi1vPjA7KWU9ZS5faG9zdFBhcmVudCxuLS07Zm9yKDtvLW4+MDspdD10Ll9ob3N0UGFy
ZW50LG8tLTtmb3IodmFyIGE9bjthLS07KXtpZihlPT09dClyZXR1cm4gZTtlPWUuX2hvc3RQYXJl
bnQsdD10Ll9ob3N0UGFyZW50fXJldHVybiBudWxsfWZ1bmN0aW9uIG8oZSx0KXsiX2hvc3ROb2Rl
ImluIGU/dm9pZCAwOnMoIjM1IiksIl9ob3N0Tm9kZSJpbiB0P3ZvaWQgMDpzKCIzNSIpO2Zvcig7
dDspe2lmKHQ9PT1lKXJldHVybiEwO3Q9dC5faG9zdFBhcmVudH1yZXR1cm4hMX1mdW5jdGlvbiBp
KGUpe3JldHVybiJfaG9zdE5vZGUiaW4gZT92b2lkIDA6cygiMzYiKSxlLl9ob3N0UGFyZW50fWZ1
bmN0aW9uIGEoZSx0LG4pe2Zvcih2YXIgcj1bXTtlOylyLnB1c2goZSksZT1lLl9ob3N0UGFyZW50
O3ZhciBvO2ZvcihvPXIubGVuZ3RoO28tLSA+MDspdChyW29dLCJjYXB0dXJlZCIsbik7Zm9yKG89
MDtvPHIubGVuZ3RoO28rKyl0KHJbb10sImJ1YmJsZWQiLG4pfWZ1bmN0aW9uIHUoZSx0LG4sbyxp
KXtmb3IodmFyIGE9ZSYmdD9yKGUsdCk6bnVsbCx1PVtdO2UmJmUhPT1hOyl1LnB1c2goZSksZT1l
Ll9ob3N0UGFyZW50O2Zvcih2YXIgcz1bXTt0JiZ0IT09YTspcy5wdXNoKHQpLHQ9dC5faG9zdFBh
cmVudDt2YXIgYztmb3IoYz0wO2M8dS5sZW5ndGg7YysrKW4odVtjXSwiYnViYmxlZCIsbyk7Zm9y
KGM9cy5sZW5ndGg7Yy0tID4wOyluKHNbY10sImNhcHR1cmVkIixpKX12YXIgcz1uKDMpO24oMSk7
ZS5leHBvcnRzPXtpc0FuY2VzdG9yOm8sZ2V0TG93ZXN0Q29tbW9uQW5jZXN0b3I6cixnZXRQYXJl
bnRJbnN0YW5jZTppLHRyYXZlcnNlVHdvUGhhc2U6YSx0cmF2ZXJzZUVudGVyTGVhdmU6dX19LGZ1
bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcigpe3RoaXMucmVpbml0aWFsaXpl
VHJhbnNhY3Rpb24oKX12YXIgbz1uKDQpLGk9big5KSxhPW4oMjcpLHU9big3KSxzPXtpbml0aWFs
aXplOnUsY2xvc2U6ZnVuY3Rpb24oKXtkLmlzQmF0Y2hpbmdVcGRhdGVzPSExfX0sYz17aW5pdGlh
bGl6ZTp1LGNsb3NlOmkuZmx1c2hCYXRjaGVkVXBkYXRlcy5iaW5kKGkpfSxsPVtjLHNdO28oci5w
cm90b3R5cGUsYSx7Z2V0VHJhbnNhY3Rpb25XcmFwcGVyczpmdW5jdGlvbigpe3JldHVybiBsfX0p
O3ZhciBwPW5ldyByLGQ9e2lzQmF0Y2hpbmdVcGRhdGVzOiExLGJhdGNoZWRVcGRhdGVzOmZ1bmN0
aW9uKGUsdCxuLHIsbyxpKXt2YXIgYT1kLmlzQmF0Y2hpbmdVcGRhdGVzO3JldHVybiBkLmlzQmF0
Y2hpbmdVcGRhdGVzPSEwLGE/ZSh0LG4scixvLGkpOnAucGVyZm9ybShlLG51bGwsdCxuLHIsbyxp
KX19O2UuZXhwb3J0cz1kfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIo
KXt3fHwodz0hMCxnLkV2ZW50RW1pdHRlci5pbmplY3RSZWFjdEV2ZW50TGlzdGVuZXIoeSksZy5F
dmVudFBsdWdpbkh1Yi5pbmplY3RFdmVudFBsdWdpbk9yZGVyKHUpLGcuRXZlbnRQbHVnaW5VdGls
cy5pbmplY3RDb21wb25lbnRUcmVlKGQpLGcuRXZlbnRQbHVnaW5VdGlscy5pbmplY3RUcmVlVHJh
dmVyc2FsKGgpLGcuRXZlbnRQbHVnaW5IdWIuaW5qZWN0RXZlbnRQbHVnaW5zQnlOYW1lKHtTaW1w
bGVFdmVudFBsdWdpbjpFLEVudGVyTGVhdmVFdmVudFBsdWdpbjpzLENoYW5nZUV2ZW50UGx1Z2lu
OmEsU2VsZWN0RXZlbnRQbHVnaW46QyxCZWZvcmVJbnB1dEV2ZW50UGx1Z2luOml9KSxnLkhvc3RD
b21wb25lbnQuaW5qZWN0R2VuZXJpY0NvbXBvbmVudENsYXNzKHApLGcuSG9zdENvbXBvbmVudC5p
bmplY3RUZXh0Q29tcG9uZW50Q2xhc3ModiksZy5ET01Qcm9wZXJ0eS5pbmplY3RET01Qcm9wZXJ0
eUNvbmZpZyhvKSxnLkRPTVByb3BlcnR5LmluamVjdERPTVByb3BlcnR5Q29uZmlnKGMpLGcuRE9N
UHJvcGVydHkuaW5qZWN0RE9NUHJvcGVydHlDb25maWcoXyksZy5FbXB0eUNvbXBvbmVudC5pbmpl
Y3RFbXB0eUNvbXBvbmVudEZhY3RvcnkoZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBmKGUpfSksZy5V
cGRhdGVzLmluamVjdFJlY29uY2lsZVRyYW5zYWN0aW9uKGIpLGcuVXBkYXRlcy5pbmplY3RCYXRj
aGluZ1N0cmF0ZWd5KG0pLGcuQ29tcG9uZW50LmluamVjdEVudmlyb25tZW50KGwpKX12YXIgbz1u
KDEyNCksaT1uKDEyNiksYT1uKDEyOCksdT1uKDEzMCkscz1uKDEzMSksYz1uKDEzMyksbD1uKDEz
NSkscD1uKDEzOCksZD1uKDUpLGY9bigxNDApLGg9bigxNDgpLHY9bigxNDYpLG09bigxNDkpLHk9
bigxNTMpLGc9bigxNTQpLGI9bigxNTkpLF89bigxNjQpLEM9bigxNjUpLEU9bigxNjYpLHc9ITE7
ZS5leHBvcnRzPXtpbmplY3Q6cn19LDkxLGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVu
Y3Rpb24gcihlKXtvLmVucXVldWVFdmVudHMoZSksby5wcm9jZXNzRXZlbnRRdWV1ZSghMSl9dmFy
IG89bigxOSksaT17aGFuZGxlVG9wTGV2ZWw6ZnVuY3Rpb24oZSx0LG4saSl7dmFyIGE9by5leHRy
YWN0RXZlbnRzKGUsdCxuLGkpO3IoYSl9fTtlLmV4cG9ydHM9aX0sZnVuY3Rpb24oZSx0LG4peyJ1
c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe2Zvcig7ZS5faG9zdFBhcmVudDspZT1lLl9ob3N0UGFy
ZW50O3ZhciB0PXAuZ2V0Tm9kZUZyb21JbnN0YW5jZShlKSxuPXQucGFyZW50Tm9kZTtyZXR1cm4g
cC5nZXRDbG9zZXN0SW5zdGFuY2VGcm9tTm9kZShuKX1mdW5jdGlvbiBvKGUsdCl7dGhpcy50b3BM
ZXZlbFR5cGU9ZSx0aGlzLm5hdGl2ZUV2ZW50PXQsdGhpcy5hbmNlc3RvcnM9W119ZnVuY3Rpb24g
aShlKXt2YXIgdD1mKGUubmF0aXZlRXZlbnQpLG49cC5nZXRDbG9zZXN0SW5zdGFuY2VGcm9tTm9k
ZSh0KSxvPW47ZG8gZS5hbmNlc3RvcnMucHVzaChvKSxvPW8mJnIobyk7d2hpbGUobyk7Zm9yKHZh
ciBpPTA7aTxlLmFuY2VzdG9ycy5sZW5ndGg7aSsrKW49ZS5hbmNlc3RvcnNbaV0sdi5faGFuZGxl
VG9wTGV2ZWwoZS50b3BMZXZlbFR5cGUsbixlLm5hdGl2ZUV2ZW50LGYoZS5uYXRpdmVFdmVudCkp
fWZ1bmN0aW9uIGEoZSl7dmFyIHQ9aCh3aW5kb3cpO2UodCl9dmFyIHU9big0KSxzPW4oNTEpLGM9
big2KSxsPW4oMTMpLHA9big1KSxkPW4oOSksZj1uKDQ2KSxoPW4oMTA0KTt1KG8ucHJvdG90eXBl
LHtkZXN0cnVjdG9yOmZ1bmN0aW9uKCl7dGhpcy50b3BMZXZlbFR5cGU9bnVsbCx0aGlzLm5hdGl2
ZUV2ZW50PW51bGwsdGhpcy5hbmNlc3RvcnMubGVuZ3RoPTB9fSksbC5hZGRQb29saW5nVG8obyxs
LnR3b0FyZ3VtZW50UG9vbGVyKTt2YXIgdj17X2VuYWJsZWQ6ITAsX2hhbmRsZVRvcExldmVsOm51
bGwsV0lORE9XX0hBTkRMRTpjLmNhblVzZURPTT93aW5kb3c6bnVsbCxzZXRIYW5kbGVUb3BMZXZl
bDpmdW5jdGlvbihlKXt2Ll9oYW5kbGVUb3BMZXZlbD1lfSxzZXRFbmFibGVkOmZ1bmN0aW9uKGUp
e3YuX2VuYWJsZWQ9ISFlfSxpc0VuYWJsZWQ6ZnVuY3Rpb24oKXtyZXR1cm4gdi5fZW5hYmxlZH0s
dHJhcEJ1YmJsZWRFdmVudDpmdW5jdGlvbihlLHQsbil7cmV0dXJuIG4/cy5saXN0ZW4obix0LHYu
ZGlzcGF0Y2hFdmVudC5iaW5kKG51bGwsZSkpOm51bGx9LHRyYXBDYXB0dXJlZEV2ZW50OmZ1bmN0
aW9uKGUsdCxuKXtyZXR1cm4gbj9zLmNhcHR1cmUobix0LHYuZGlzcGF0Y2hFdmVudC5iaW5kKG51
bGwsZSkpOm51bGx9LG1vbml0b3JTY3JvbGxWYWx1ZTpmdW5jdGlvbihlKXt2YXIgdD1hLmJpbmQo
bnVsbCxlKTtzLmxpc3Rlbih3aW5kb3csInNjcm9sbCIsdCl9LGRpc3BhdGNoRXZlbnQ6ZnVuY3Rp
b24oZSx0KXtpZih2Ll9lbmFibGVkKXt2YXIgbj1vLmdldFBvb2xlZChlLHQpO3RyeXtkLmJhdGNo
ZWRVcGRhdGVzKGksbil9ZmluYWxseXtvLnJlbGVhc2Uobil9fX19O2UuZXhwb3J0cz12fSxmdW5j
dGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oMTUpLG89bigxOSksaT1uKDM3KSxhPW4o
NDApLHU9big2Mykscz1uKDI1KSxjPW4oNjUpLGw9big5KSxwPXtDb21wb25lbnQ6YS5pbmplY3Rp
b24sRE9NUHJvcGVydHk6ci5pbmplY3Rpb24sRW1wdHlDb21wb25lbnQ6dS5pbmplY3Rpb24sRXZl
bnRQbHVnaW5IdWI6by5pbmplY3Rpb24sRXZlbnRQbHVnaW5VdGlsczppLmluamVjdGlvbixFdmVu
dEVtaXR0ZXI6cy5pbmplY3Rpb24sSG9zdENvbXBvbmVudDpjLmluamVjdGlvbixVcGRhdGVzOmwu
aW5qZWN0aW9ufTtlLmV4cG9ydHM9cH0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIg
cj1uKDE3Nyksbz0vXC8/Pi8saT0vXjxcIVwtXC0vLGE9e0NIRUNLU1VNX0FUVFJfTkFNRToiZGF0
YS1yZWFjdC1jaGVja3N1bSIsYWRkQ2hlY2tzdW1Ub01hcmt1cDpmdW5jdGlvbihlKXt2YXIgdD1y
KGUpO3JldHVybiBpLnRlc3QoZSk/ZTplLnJlcGxhY2UobywiICIrYS5DSEVDS1NVTV9BVFRSX05B
TUUrJz0iJyt0KyciJCYnKX0sY2FuUmV1c2VNYXJrdXA6ZnVuY3Rpb24oZSx0KXt2YXIgbj10Lmdl
dEF0dHJpYnV0ZShhLkNIRUNLU1VNX0FUVFJfTkFNRSk7bj1uJiZwYXJzZUludChuLDEwKTt2YXIg
bz1yKGUpO3JldHVybiBvPT09bn19O2UuZXhwb3J0cz1hfSxmdW5jdGlvbihlLHQsbil7InVzZSBz
dHJpY3QiO2Z1bmN0aW9uIHIoZSx0LG4pe3JldHVybnt0eXBlOiJJTlNFUlRfTUFSS1VQIixjb250
ZW50OmUsZnJvbUluZGV4Om51bGwsZnJvbU5vZGU6bnVsbCx0b0luZGV4Om4sYWZ0ZXJOb2RlOnR9
fWZ1bmN0aW9uIG8oZSx0LG4pe3JldHVybnt0eXBlOiJNT1ZFX0VYSVNUSU5HIixjb250ZW50Om51
bGwsZnJvbUluZGV4OmUuX21vdW50SW5kZXgsZnJvbU5vZGU6ZC5nZXRIb3N0Tm9kZShlKSx0b0lu
ZGV4Om4sYWZ0ZXJOb2RlOnR9fWZ1bmN0aW9uIGkoZSx0KXtyZXR1cm57dHlwZToiUkVNT1ZFX05P
REUiLGNvbnRlbnQ6bnVsbCxmcm9tSW5kZXg6ZS5fbW91bnRJbmRleCxmcm9tTm9kZTp0LHRvSW5k
ZXg6bnVsbCxhZnRlck5vZGU6bnVsbH19ZnVuY3Rpb24gYShlKXtyZXR1cm57dHlwZToiU0VUX01B
UktVUCIsY29udGVudDplLGZyb21JbmRleDpudWxsLGZyb21Ob2RlOm51bGwsdG9JbmRleDpudWxs
LGFmdGVyTm9kZTpudWxsfX1mdW5jdGlvbiB1KGUpe3JldHVybnt0eXBlOiJURVhUX0NPTlRFTlQi
LGNvbnRlbnQ6ZSxmcm9tSW5kZXg6bnVsbCxmcm9tTm9kZTpudWxsLHRvSW5kZXg6bnVsbCxhZnRl
ck5vZGU6bnVsbH19ZnVuY3Rpb24gcyhlLHQpe3JldHVybiB0JiYoZT1lfHxbXSxlLnB1c2godCkp
LGV9ZnVuY3Rpb24gYyhlLHQpe3AucHJvY2Vzc0NoaWxkcmVuVXBkYXRlcyhlLHQpfXZhciBsPW4o
MykscD1uKDQwKSxkPShuKDIxKSxuKDgpLG4oMTEpLG4oMTYpKSxmPW4oMTM0KSxoPShuKDcpLG4o
MTgwKSksdj0obigxKSx7TWl4aW46e19yZWNvbmNpbGVySW5zdGFudGlhdGVDaGlsZHJlbjpmdW5j
dGlvbihlLHQsbil7cmV0dXJuIGYuaW5zdGFudGlhdGVDaGlsZHJlbihlLHQsbil9LF9yZWNvbmNp
bGVyVXBkYXRlQ2hpbGRyZW46ZnVuY3Rpb24oZSx0LG4scixvLGkpe3ZhciBhLHU9MDtyZXR1cm4g
YT1oKHQsdSksZi51cGRhdGVDaGlsZHJlbihlLGEsbixyLG8sdGhpcyx0aGlzLl9ob3N0Q29udGFp
bmVySW5mbyxpLHUpLGF9LG1vdW50Q2hpbGRyZW46ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMu
X3JlY29uY2lsZXJJbnN0YW50aWF0ZUNoaWxkcmVuKGUsdCxuKTt0aGlzLl9yZW5kZXJlZENoaWxk
cmVuPXI7dmFyIG89W10saT0wO2Zvcih2YXIgYSBpbiByKWlmKHIuaGFzT3duUHJvcGVydHkoYSkp
e3ZhciB1PXJbYV0scz0wLGM9ZC5tb3VudENvbXBvbmVudCh1LHQsdGhpcyx0aGlzLl9ob3N0Q29u
dGFpbmVySW5mbyxuLHMpO3UuX21vdW50SW5kZXg9aSsrLG8ucHVzaChjKX1yZXR1cm4gb30sdXBk
YXRlVGV4dENvbnRlbnQ6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5fcmVuZGVyZWRDaGlsZHJlbjtm
LnVubW91bnRDaGlsZHJlbih0LCExKTtmb3IodmFyIG4gaW4gdCl0Lmhhc093blByb3BlcnR5KG4p
JiZsKCIxMTgiKTt2YXIgcj1bdShlKV07Yyh0aGlzLHIpfSx1cGRhdGVNYXJrdXA6ZnVuY3Rpb24o
ZSl7dmFyIHQ9dGhpcy5fcmVuZGVyZWRDaGlsZHJlbjtmLnVubW91bnRDaGlsZHJlbih0LCExKTtm
b3IodmFyIG4gaW4gdCl0Lmhhc093blByb3BlcnR5KG4pJiZsKCIxMTgiKTt2YXIgcj1bYShlKV07
Yyh0aGlzLHIpfSx1cGRhdGVDaGlsZHJlbjpmdW5jdGlvbihlLHQsbil7dGhpcy5fdXBkYXRlQ2hp
bGRyZW4oZSx0LG4pfSxfdXBkYXRlQ2hpbGRyZW46ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMu
X3JlbmRlcmVkQ2hpbGRyZW4sbz17fSxpPVtdLGE9dGhpcy5fcmVjb25jaWxlclVwZGF0ZUNoaWxk
cmVuKHIsZSxpLG8sdCxuKTtpZihhfHxyKXt2YXIgdSxsPW51bGwscD0wLGY9MCxoPTAsdj1udWxs
O2Zvcih1IGluIGEpaWYoYS5oYXNPd25Qcm9wZXJ0eSh1KSl7dmFyIG09ciYmclt1XSx5PWFbdV07
bT09PXk/KGw9cyhsLHRoaXMubW92ZUNoaWxkKG0sdixwLGYpKSxmPU1hdGgubWF4KG0uX21vdW50
SW5kZXgsZiksbS5fbW91bnRJbmRleD1wKToobSYmKGY9TWF0aC5tYXgobS5fbW91bnRJbmRleCxm
KSksbD1zKGwsdGhpcy5fbW91bnRDaGlsZEF0SW5kZXgoeSxpW2hdLHYscCx0LG4pKSxoKyspLHAr
Kyx2PWQuZ2V0SG9zdE5vZGUoeSl9Zm9yKHUgaW4gbylvLmhhc093blByb3BlcnR5KHUpJiYobD1z
KGwsdGhpcy5fdW5tb3VudENoaWxkKHJbdV0sb1t1XSkpKTtsJiZjKHRoaXMsbCksdGhpcy5fcmVu
ZGVyZWRDaGlsZHJlbj1hfX0sdW5tb3VudENoaWxkcmVuOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMu
X3JlbmRlcmVkQ2hpbGRyZW47Zi51bm1vdW50Q2hpbGRyZW4odCxlKSx0aGlzLl9yZW5kZXJlZENo
aWxkcmVuPW51bGx9LG1vdmVDaGlsZDpmdW5jdGlvbihlLHQsbixyKXtpZihlLl9tb3VudEluZGV4
PHIpcmV0dXJuIG8oZSx0LG4pfSxjcmVhdGVDaGlsZDpmdW5jdGlvbihlLHQsbil7cmV0dXJuIHIo
bix0LGUuX21vdW50SW5kZXgpfSxyZW1vdmVDaGlsZDpmdW5jdGlvbihlLHQpe3JldHVybiBpKGUs
dCl9LF9tb3VudENoaWxkQXRJbmRleDpmdW5jdGlvbihlLHQsbixyLG8saSl7cmV0dXJuIGUuX21v
dW50SW5kZXg9cix0aGlzLmNyZWF0ZUNoaWxkKGUsbix0KX0sX3VubW91bnRDaGlsZDpmdW5jdGlv
bihlLHQpe3ZhciBuPXRoaXMucmVtb3ZlQ2hpbGQoZSx0KTtyZXR1cm4gZS5fbW91bnRJbmRleD1u
dWxsLG59fX0pO2UuZXhwb3J0cz12fSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0
aW9uIHIoZSl7cmV0dXJuISghZXx8ImZ1bmN0aW9uIiE9dHlwZW9mIGUuYXR0YWNoUmVmfHwiZnVu
Y3Rpb24iIT10eXBlb2YgZS5kZXRhY2hSZWYpfXZhciBvPW4oMyksaT0obigxKSx7YWRkQ29tcG9u
ZW50QXNSZWZUbzpmdW5jdGlvbihlLHQsbil7cihuKT92b2lkIDA6bygiMTE5Iiksbi5hdHRhY2hS
ZWYodCxlKX0scmVtb3ZlQ29tcG9uZW50QXNSZWZGcm9tOmZ1bmN0aW9uKGUsdCxuKXtyKG4pP3Zv
aWQgMDpvKCIxMjAiKTt2YXIgaT1uLmdldFB1YmxpY0luc3RhbmNlKCk7aSYmaS5yZWZzW3RdPT09
ZS5nZXRQdWJsaWNJbnN0YW5jZSgpJiZuLmRldGFjaFJlZih0KX19KTtlLmV4cG9ydHM9aX0sZnVu
Y3Rpb24oZSx0KXsidXNlIHN0cmljdCI7dmFyIG49IlNFQ1JFVF9ET19OT1RfUEFTU19USElTX09S
X1lPVV9XSUxMX0JFX0ZJUkVEIjtlLmV4cG9ydHM9bn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3Ry
aWN0IjtmdW5jdGlvbiByKGUpe3RoaXMucmVpbml0aWFsaXplVHJhbnNhY3Rpb24oKSx0aGlzLnJl
bmRlclRvU3RhdGljTWFya3VwPSExLHRoaXMucmVhY3RNb3VudFJlYWR5PWkuZ2V0UG9vbGVkKG51
bGwpLHRoaXMudXNlQ3JlYXRlRWxlbWVudD1lfXZhciBvPW4oNCksaT1uKDU5KSxhPW4oMTMpLHU9
bigyNSkscz1uKDY2KSxjPShuKDgpLG4oMjcpKSxsPW4oNDIpLHA9e2luaXRpYWxpemU6cy5nZXRT
ZWxlY3Rpb25JbmZvcm1hdGlvbixjbG9zZTpzLnJlc3RvcmVTZWxlY3Rpb259LGQ9e2luaXRpYWxp
emU6ZnVuY3Rpb24oKXt2YXIgZT11LmlzRW5hYmxlZCgpO3JldHVybiB1LnNldEVuYWJsZWQoITEp
LGV9LGNsb3NlOmZ1bmN0aW9uKGUpe3Uuc2V0RW5hYmxlZChlKX19LGY9e2luaXRpYWxpemU6ZnVu
Y3Rpb24oKXt0aGlzLnJlYWN0TW91bnRSZWFkeS5yZXNldCgpfSxjbG9zZTpmdW5jdGlvbigpe3Ro
aXMucmVhY3RNb3VudFJlYWR5Lm5vdGlmeUFsbCgpfX0saD1bcCxkLGZdLHY9e2dldFRyYW5zYWN0
aW9uV3JhcHBlcnM6ZnVuY3Rpb24oKXtyZXR1cm4gaH0sZ2V0UmVhY3RNb3VudFJlYWR5OmZ1bmN0
aW9uKCl7cmV0dXJuIHRoaXMucmVhY3RNb3VudFJlYWR5fSxnZXRVcGRhdGVRdWV1ZTpmdW5jdGlv
bigpe3JldHVybiBsfSxjaGVja3BvaW50OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmVhY3RNb3Vu
dFJlYWR5LmNoZWNrcG9pbnQoKX0scm9sbGJhY2s6ZnVuY3Rpb24oZSl7dGhpcy5yZWFjdE1vdW50
UmVhZHkucm9sbGJhY2soZSl9LGRlc3RydWN0b3I6ZnVuY3Rpb24oKXtpLnJlbGVhc2UodGhpcy5y
ZWFjdE1vdW50UmVhZHkpLHRoaXMucmVhY3RNb3VudFJlYWR5PW51bGx9fTtvKHIucHJvdG90eXBl
LGMsdiksYS5hZGRQb29saW5nVG8ociksZS5leHBvcnRzPXJ9LGZ1bmN0aW9uKGUsdCxuKXsidXNl
IHN0cmljdCI7ZnVuY3Rpb24gcihlLHQsbil7ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZSh0LmdldFB1
YmxpY0luc3RhbmNlKCkpOmkuYWRkQ29tcG9uZW50QXNSZWZUbyh0LGUsbil9ZnVuY3Rpb24gbyhl
LHQsbil7ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZShudWxsKTppLnJlbW92ZUNvbXBvbmVudEFzUmVm
RnJvbSh0LGUsbil9dmFyIGk9bigxNTcpLGE9e307YS5hdHRhY2hSZWZzPWZ1bmN0aW9uKGUsdCl7
aWYobnVsbCE9PXQmJiJvYmplY3QiPT10eXBlb2YgdCl7dmFyIG49dC5yZWY7bnVsbCE9biYmcihu
LGUsdC5fb3duZXIpfX0sYS5zaG91bGRVcGRhdGVSZWZzPWZ1bmN0aW9uKGUsdCl7dmFyIG49bnVs
bCxyPW51bGw7bnVsbCE9PWUmJiJvYmplY3QiPT10eXBlb2YgZSYmKG49ZS5yZWYscj1lLl9vd25l
cik7dmFyIG89bnVsbCxpPW51bGw7cmV0dXJuIG51bGwhPT10JiYib2JqZWN0Ij09dHlwZW9mIHQm
JihvPXQucmVmLGk9dC5fb3duZXIpLG4hPT1vfHwic3RyaW5nIj09dHlwZW9mIG8mJmkhPT1yfSxh
LmRldGFjaFJlZnM9ZnVuY3Rpb24oZSx0KXtpZihudWxsIT09dCYmIm9iamVjdCI9PXR5cGVvZiB0
KXt2YXIgbj10LnJlZjtudWxsIT1uJiZvKG4sZSx0Ll9vd25lcil9fSxlLmV4cG9ydHM9YX0sZnVu
Y3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3RoaXMucmVpbml0aWFsaXpl
VHJhbnNhY3Rpb24oKSx0aGlzLnJlbmRlclRvU3RhdGljTWFya3VwPWUsdGhpcy51c2VDcmVhdGVF
bGVtZW50PSExLHRoaXMudXBkYXRlUXVldWU9bmV3IHUodGhpcyl9dmFyIG89big0KSxpPW4oMTMp
LGE9bigyNyksdT0obig4KSxuKDE2MikpLHM9W10sYz17ZW5xdWV1ZTpmdW5jdGlvbigpe319LGw9
e2dldFRyYW5zYWN0aW9uV3JhcHBlcnM6ZnVuY3Rpb24oKXtyZXR1cm4gc30sZ2V0UmVhY3RNb3Vu
dFJlYWR5OmZ1bmN0aW9uKCl7cmV0dXJuIGN9LGdldFVwZGF0ZVF1ZXVlOmZ1bmN0aW9uKCl7cmV0
dXJuIHRoaXMudXBkYXRlUXVldWV9LGRlc3RydWN0b3I6ZnVuY3Rpb24oKXt9LGNoZWNrcG9pbnQ6
ZnVuY3Rpb24oKXt9LHJvbGxiYWNrOmZ1bmN0aW9uKCl7fX07byhyLnByb3RvdHlwZSxhLGwpLGku
YWRkUG9vbGluZ1RvKHIpLGUuZXhwb3J0cz1yfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3Qi
O2Z1bmN0aW9uIHIoZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9y
KCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1mdW5jdGlvbiBvKGUsdCl7fXZh
ciBpPW4oNDIpLGE9KG4oMiksZnVuY3Rpb24oKXtmdW5jdGlvbiBlKHQpe3IodGhpcyxlKSx0aGlz
LnRyYW5zYWN0aW9uPXR9cmV0dXJuIGUucHJvdG90eXBlLmlzTW91bnRlZD1mdW5jdGlvbihlKXty
ZXR1cm4hMX0sZS5wcm90b3R5cGUuZW5xdWV1ZUNhbGxiYWNrPWZ1bmN0aW9uKGUsdCxuKXt0aGlz
LnRyYW5zYWN0aW9uLmlzSW5UcmFuc2FjdGlvbigpJiZpLmVucXVldWVDYWxsYmFjayhlLHQsbil9
LGUucHJvdG90eXBlLmVucXVldWVGb3JjZVVwZGF0ZT1mdW5jdGlvbihlKXt0aGlzLnRyYW5zYWN0
aW9uLmlzSW5UcmFuc2FjdGlvbigpP2kuZW5xdWV1ZUZvcmNlVXBkYXRlKGUpOm8oZSwiZm9yY2VV
cGRhdGUiKX0sZS5wcm90b3R5cGUuZW5xdWV1ZVJlcGxhY2VTdGF0ZT1mdW5jdGlvbihlLHQpe3Ro
aXMudHJhbnNhY3Rpb24uaXNJblRyYW5zYWN0aW9uKCk/aS5lbnF1ZXVlUmVwbGFjZVN0YXRlKGUs
dCk6byhlLCJyZXBsYWNlU3RhdGUiKX0sZS5wcm90b3R5cGUuZW5xdWV1ZVNldFN0YXRlPWZ1bmN0
aW9uKGUsdCl7dGhpcy50cmFuc2FjdGlvbi5pc0luVHJhbnNhY3Rpb24oKT9pLmVucXVldWVTZXRT
dGF0ZShlLHQpOm8oZSwic2V0U3RhdGUiKX0sZX0oKSk7ZS5leHBvcnRzPWF9LGZ1bmN0aW9uKGUs
dCl7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz0iMTUuNi4xIn0sZnVuY3Rpb24oZSx0KXsidXNlIHN0
cmljdCI7dmFyIG49e3hsaW5rOiJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIix4bWw6Imh0
dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZSJ9LHI9e2FjY2VudEhlaWdodDoiYWNj
ZW50LWhlaWdodCIsYWNjdW11bGF0ZTowLGFkZGl0aXZlOjAsYWxpZ25tZW50QmFzZWxpbmU6ImFs
aWdubWVudC1iYXNlbGluZSIsYWxsb3dSZW9yZGVyOiJhbGxvd1Jlb3JkZXIiLGFscGhhYmV0aWM6
MCxhbXBsaXR1ZGU6MCxhcmFiaWNGb3JtOiJhcmFiaWMtZm9ybSIsYXNjZW50OjAsYXR0cmlidXRl
TmFtZToiYXR0cmlidXRlTmFtZSIsYXR0cmlidXRlVHlwZToiYXR0cmlidXRlVHlwZSIsYXV0b1Jl
dmVyc2U6ImF1dG9SZXZlcnNlIixhemltdXRoOjAsYmFzZUZyZXF1ZW5jeToiYmFzZUZyZXF1ZW5j
eSIsYmFzZVByb2ZpbGU6ImJhc2VQcm9maWxlIixiYXNlbGluZVNoaWZ0OiJiYXNlbGluZS1zaGlm
dCIsYmJveDowLGJlZ2luOjAsYmlhczowLGJ5OjAsY2FsY01vZGU6ImNhbGNNb2RlIixjYXBIZWln
aHQ6ImNhcC1oZWlnaHQiLGNsaXA6MCxjbGlwUGF0aDoiY2xpcC1wYXRoIixjbGlwUnVsZToiY2xp
cC1ydWxlIixjbGlwUGF0aFVuaXRzOiJjbGlwUGF0aFVuaXRzIixjb2xvckludGVycG9sYXRpb246
ImNvbG9yLWludGVycG9sYXRpb24iLGNvbG9ySW50ZXJwb2xhdGlvbkZpbHRlcnM6ImNvbG9yLWlu
dGVycG9sYXRpb24tZmlsdGVycyIsY29sb3JQcm9maWxlOiJjb2xvci1wcm9maWxlIixjb2xvclJl
bmRlcmluZzoiY29sb3ItcmVuZGVyaW5nIixjb250ZW50U2NyaXB0VHlwZToiY29udGVudFNjcmlw
dFR5cGUiLGNvbnRlbnRTdHlsZVR5cGU6ImNvbnRlbnRTdHlsZVR5cGUiLGN1cnNvcjowLGN4OjAs
Y3k6MCxkOjAsZGVjZWxlcmF0ZTowLGRlc2NlbnQ6MCxkaWZmdXNlQ29uc3RhbnQ6ImRpZmZ1c2VD
b25zdGFudCIsZGlyZWN0aW9uOjAsZGlzcGxheTowLGRpdmlzb3I6MCxkb21pbmFudEJhc2VsaW5l
OiJkb21pbmFudC1iYXNlbGluZSIsZHVyOjAsZHg6MCxkeTowLGVkZ2VNb2RlOiJlZGdlTW9kZSIs
ZWxldmF0aW9uOjAsZW5hYmxlQmFja2dyb3VuZDoiZW5hYmxlLWJhY2tncm91bmQiLGVuZDowLGV4
cG9uZW50OjAsZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZDoiZXh0ZXJuYWxSZXNvdXJjZXNSZXF1
aXJlZCIsZmlsbDowLGZpbGxPcGFjaXR5OiJmaWxsLW9wYWNpdHkiLGZpbGxSdWxlOiJmaWxsLXJ1
bGUiLGZpbHRlcjowLGZpbHRlclJlczoiZmlsdGVyUmVzIixmaWx0ZXJVbml0czoiZmlsdGVyVW5p
dHMiLGZsb29kQ29sb3I6ImZsb29kLWNvbG9yIixmbG9vZE9wYWNpdHk6ImZsb29kLW9wYWNpdHki
LGZvY3VzYWJsZTowLGZvbnRGYW1pbHk6ImZvbnQtZmFtaWx5Iixmb250U2l6ZToiZm9udC1zaXpl
Iixmb250U2l6ZUFkanVzdDoiZm9udC1zaXplLWFkanVzdCIsZm9udFN0cmV0Y2g6ImZvbnQtc3Ry
ZXRjaCIsZm9udFN0eWxlOiJmb250LXN0eWxlIixmb250VmFyaWFudDoiZm9udC12YXJpYW50Iixm
b250V2VpZ2h0OiJmb250LXdlaWdodCIsZm9ybWF0OjAsZnJvbTowLGZ4OjAsZnk6MCxnMTowLGcy
OjAsZ2x5cGhOYW1lOiJnbHlwaC1uYW1lIixnbHlwaE9yaWVudGF0aW9uSG9yaXpvbnRhbDoiZ2x5
cGgtb3JpZW50YXRpb24taG9yaXpvbnRhbCIsZ2x5cGhPcmllbnRhdGlvblZlcnRpY2FsOiJnbHlw
aC1vcmllbnRhdGlvbi12ZXJ0aWNhbCIsZ2x5cGhSZWY6ImdseXBoUmVmIixncmFkaWVudFRyYW5z
Zm9ybToiZ3JhZGllbnRUcmFuc2Zvcm0iLGdyYWRpZW50VW5pdHM6ImdyYWRpZW50VW5pdHMiLGhh
bmdpbmc6MCxob3JpekFkdlg6Imhvcml6LWFkdi14Iixob3Jpek9yaWdpblg6Imhvcml6LW9yaWdp
bi14IixpZGVvZ3JhcGhpYzowLGltYWdlUmVuZGVyaW5nOiJpbWFnZS1yZW5kZXJpbmciLGluOjAs
aW4yOjAsaW50ZXJjZXB0OjAsazowLGsxOjAsazI6MCxrMzowLGs0OjAsa2VybmVsTWF0cml4OiJr
ZXJuZWxNYXRyaXgiLGtlcm5lbFVuaXRMZW5ndGg6Imtlcm5lbFVuaXRMZW5ndGgiLGtlcm5pbmc6
MCxrZXlQb2ludHM6ImtleVBvaW50cyIsa2V5U3BsaW5lczoia2V5U3BsaW5lcyIsa2V5VGltZXM6
ImtleVRpbWVzIixsZW5ndGhBZGp1c3Q6Imxlbmd0aEFkanVzdCIsbGV0dGVyU3BhY2luZzoibGV0
dGVyLXNwYWNpbmciLGxpZ2h0aW5nQ29sb3I6ImxpZ2h0aW5nLWNvbG9yIixsaW1pdGluZ0NvbmVB
bmdsZToibGltaXRpbmdDb25lQW5nbGUiLGxvY2FsOjAsbWFya2VyRW5kOiJtYXJrZXItZW5kIixt
YXJrZXJNaWQ6Im1hcmtlci1taWQiLG1hcmtlclN0YXJ0OiJtYXJrZXItc3RhcnQiLG1hcmtlckhl
aWdodDoibWFya2VySGVpZ2h0IixtYXJrZXJVbml0czoibWFya2VyVW5pdHMiLG1hcmtlcldpZHRo
OiJtYXJrZXJXaWR0aCIsbWFzazowLG1hc2tDb250ZW50VW5pdHM6Im1hc2tDb250ZW50VW5pdHMi
LG1hc2tVbml0czoibWFza1VuaXRzIixtYXRoZW1hdGljYWw6MCxtb2RlOjAsbnVtT2N0YXZlczoi
bnVtT2N0YXZlcyIsb2Zmc2V0OjAsb3BhY2l0eTowLG9wZXJhdG9yOjAsb3JkZXI6MCxvcmllbnQ6
MCxvcmllbnRhdGlvbjowLG9yaWdpbjowLG92ZXJmbG93OjAsb3ZlcmxpbmVQb3NpdGlvbjoib3Zl
cmxpbmUtcG9zaXRpb24iLG92ZXJsaW5lVGhpY2tuZXNzOiJvdmVybGluZS10aGlja25lc3MiLHBh
aW50T3JkZXI6InBhaW50LW9yZGVyIixwYW5vc2UxOiJwYW5vc2UtMSIscGF0aExlbmd0aDoicGF0
aExlbmd0aCIscGF0dGVybkNvbnRlbnRVbml0czoicGF0dGVybkNvbnRlbnRVbml0cyIscGF0dGVy
blRyYW5zZm9ybToicGF0dGVyblRyYW5zZm9ybSIscGF0dGVyblVuaXRzOiJwYXR0ZXJuVW5pdHMi
LHBvaW50ZXJFdmVudHM6InBvaW50ZXItZXZlbnRzIixwb2ludHM6MCxwb2ludHNBdFg6InBvaW50
c0F0WCIscG9pbnRzQXRZOiJwb2ludHNBdFkiLHBvaW50c0F0WjoicG9pbnRzQXRaIixwcmVzZXJ2
ZUFscGhhOiJwcmVzZXJ2ZUFscGhhIixwcmVzZXJ2ZUFzcGVjdFJhdGlvOiJwcmVzZXJ2ZUFzcGVj
dFJhdGlvIixwcmltaXRpdmVVbml0czoicHJpbWl0aXZlVW5pdHMiLHI6MCxyYWRpdXM6MCxyZWZY
OiJyZWZYIixyZWZZOiJyZWZZIixyZW5kZXJpbmdJbnRlbnQ6InJlbmRlcmluZy1pbnRlbnQiLHJl
cGVhdENvdW50OiJyZXBlYXRDb3VudCIscmVwZWF0RHVyOiJyZXBlYXREdXIiLHJlcXVpcmVkRXh0
ZW5zaW9uczoicmVxdWlyZWRFeHRlbnNpb25zIixyZXF1aXJlZEZlYXR1cmVzOiJyZXF1aXJlZEZl
YXR1cmVzIixyZXN0YXJ0OjAscmVzdWx0OjAscm90YXRlOjAscng6MCxyeTowLHNjYWxlOjAsc2Vl
ZDowLHNoYXBlUmVuZGVyaW5nOiJzaGFwZS1yZW5kZXJpbmciLHNsb3BlOjAsc3BhY2luZzowLHNw
ZWN1bGFyQ29uc3RhbnQ6InNwZWN1bGFyQ29uc3RhbnQiLHNwZWN1bGFyRXhwb25lbnQ6InNwZWN1
bGFyRXhwb25lbnQiLHNwZWVkOjAsc3ByZWFkTWV0aG9kOiJzcHJlYWRNZXRob2QiLHN0YXJ0T2Zm
c2V0OiJzdGFydE9mZnNldCIsc3RkRGV2aWF0aW9uOiJzdGREZXZpYXRpb24iLHN0ZW1oOjAsc3Rl
bXY6MCxzdGl0Y2hUaWxlczoic3RpdGNoVGlsZXMiLHN0b3BDb2xvcjoic3RvcC1jb2xvciIsc3Rv
cE9wYWNpdHk6InN0b3Atb3BhY2l0eSIsc3RyaWtldGhyb3VnaFBvc2l0aW9uOiJzdHJpa2V0aHJv
dWdoLXBvc2l0aW9uIixzdHJpa2V0aHJvdWdoVGhpY2tuZXNzOiJzdHJpa2V0aHJvdWdoLXRoaWNr
bmVzcyIsc3RyaW5nOjAsc3Ryb2tlOjAsc3Ryb2tlRGFzaGFycmF5OiJzdHJva2UtZGFzaGFycmF5
IixzdHJva2VEYXNob2Zmc2V0OiJzdHJva2UtZGFzaG9mZnNldCIsc3Ryb2tlTGluZWNhcDoic3Ry
b2tlLWxpbmVjYXAiLHN0cm9rZUxpbmVqb2luOiJzdHJva2UtbGluZWpvaW4iLHN0cm9rZU1pdGVy
bGltaXQ6InN0cm9rZS1taXRlcmxpbWl0IixzdHJva2VPcGFjaXR5OiJzdHJva2Utb3BhY2l0eSIs
c3Ryb2tlV2lkdGg6InN0cm9rZS13aWR0aCIsc3VyZmFjZVNjYWxlOiJzdXJmYWNlU2NhbGUiLHN5
c3RlbUxhbmd1YWdlOiJzeXN0ZW1MYW5ndWFnZSIsdGFibGVWYWx1ZXM6InRhYmxlVmFsdWVzIix0
YXJnZXRYOiJ0YXJnZXRYIix0YXJnZXRZOiJ0YXJnZXRZIix0ZXh0QW5jaG9yOiJ0ZXh0LWFuY2hv
ciIsdGV4dERlY29yYXRpb246InRleHQtZGVjb3JhdGlvbiIsdGV4dFJlbmRlcmluZzoidGV4dC1y
ZW5kZXJpbmciLHRleHRMZW5ndGg6InRleHRMZW5ndGgiLHRvOjAsdHJhbnNmb3JtOjAsdTE6MCx1
MjowLHVuZGVybGluZVBvc2l0aW9uOiJ1bmRlcmxpbmUtcG9zaXRpb24iLHVuZGVybGluZVRoaWNr
bmVzczoidW5kZXJsaW5lLXRoaWNrbmVzcyIsdW5pY29kZTowLHVuaWNvZGVCaWRpOiJ1bmljb2Rl
LWJpZGkiLHVuaWNvZGVSYW5nZToidW5pY29kZS1yYW5nZSIsdW5pdHNQZXJFbToidW5pdHMtcGVy
LWVtIix2QWxwaGFiZXRpYzoidi1hbHBoYWJldGljIix2SGFuZ2luZzoidi1oYW5naW5nIix2SWRl
b2dyYXBoaWM6InYtaWRlb2dyYXBoaWMiLHZNYXRoZW1hdGljYWw6InYtbWF0aGVtYXRpY2FsIix2
YWx1ZXM6MCx2ZWN0b3JFZmZlY3Q6InZlY3Rvci1lZmZlY3QiLHZlcnNpb246MCx2ZXJ0QWR2WToi
dmVydC1hZHYteSIsdmVydE9yaWdpblg6InZlcnQtb3JpZ2luLXgiLHZlcnRPcmlnaW5ZOiJ2ZXJ0
LW9yaWdpbi15Iix2aWV3Qm94OiJ2aWV3Qm94Iix2aWV3VGFyZ2V0OiJ2aWV3VGFyZ2V0Iix2aXNp
YmlsaXR5OjAsd2lkdGhzOjAsd29yZFNwYWNpbmc6IndvcmQtc3BhY2luZyIsd3JpdGluZ01vZGU6
IndyaXRpbmctbW9kZSIseDowLHhIZWlnaHQ6IngtaGVpZ2h0Iix4MTowLHgyOjAseENoYW5uZWxT
ZWxlY3RvcjoieENoYW5uZWxTZWxlY3RvciIseGxpbmtBY3R1YXRlOiJ4bGluazphY3R1YXRlIix4
bGlua0FyY3JvbGU6InhsaW5rOmFyY3JvbGUiLHhsaW5rSHJlZjoieGxpbms6aHJlZiIseGxpbmtS
b2xlOiJ4bGluazpyb2xlIix4bGlua1Nob3c6InhsaW5rOnNob3ciLHhsaW5rVGl0bGU6InhsaW5r
OnRpdGxlIix4bGlua1R5cGU6InhsaW5rOnR5cGUiLHhtbEJhc2U6InhtbDpiYXNlIix4bWxuczow
LHhtbG5zWGxpbms6InhtbG5zOnhsaW5rIix4bWxMYW5nOiJ4bWw6bGFuZyIseG1sU3BhY2U6Inht
bDpzcGFjZSIseTowLHkxOjAseTI6MCx5Q2hhbm5lbFNlbGVjdG9yOiJ5Q2hhbm5lbFNlbGVjdG9y
Iix6OjAsem9vbUFuZFBhbjoiem9vbUFuZFBhbiJ9LG89e1Byb3BlcnRpZXM6e30sRE9NQXR0cmli
dXRlTmFtZXNwYWNlczp7eGxpbmtBY3R1YXRlOm4ueGxpbmsseGxpbmtBcmNyb2xlOm4ueGxpbmss
eGxpbmtIcmVmOm4ueGxpbmsseGxpbmtSb2xlOm4ueGxpbmsseGxpbmtTaG93Om4ueGxpbmsseGxp
bmtUaXRsZTpuLnhsaW5rLHhsaW5rVHlwZTpuLnhsaW5rLHhtbEJhc2U6bi54bWwseG1sTGFuZzpu
LnhtbCx4bWxTcGFjZTpuLnhtbH0sRE9NQXR0cmlidXRlTmFtZXM6e319O09iamVjdC5rZXlzKHIp
LmZvckVhY2goZnVuY3Rpb24oZSl7by5Qcm9wZXJ0aWVzW2VdPTAscltlXSYmKG8uRE9NQXR0cmli
dXRlTmFtZXNbZV09cltlXSl9KSxlLmV4cG9ydHM9b30sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3Ry
aWN0IjtmdW5jdGlvbiByKGUpe2lmKCJzZWxlY3Rpb25TdGFydCJpbiBlJiZzLmhhc1NlbGVjdGlv
bkNhcGFiaWxpdGllcyhlKSlyZXR1cm57c3RhcnQ6ZS5zZWxlY3Rpb25TdGFydCxlbmQ6ZS5zZWxl
Y3Rpb25FbmR9O2lmKHdpbmRvdy5nZXRTZWxlY3Rpb24pe3ZhciB0PXdpbmRvdy5nZXRTZWxlY3Rp
b24oKTtyZXR1cm57YW5jaG9yTm9kZTp0LmFuY2hvck5vZGUsYW5jaG9yT2Zmc2V0OnQuYW5jaG9y
T2Zmc2V0LGZvY3VzTm9kZTp0LmZvY3VzTm9kZSxmb2N1c09mZnNldDp0LmZvY3VzT2Zmc2V0fX1p
Zihkb2N1bWVudC5zZWxlY3Rpb24pe3ZhciBuPWRvY3VtZW50LnNlbGVjdGlvbi5jcmVhdGVSYW5n
ZSgpO3JldHVybntwYXJlbnRFbGVtZW50Om4ucGFyZW50RWxlbWVudCgpLHRleHQ6bi50ZXh0LHRv
cDpuLmJvdW5kaW5nVG9wLGxlZnQ6bi5ib3VuZGluZ0xlZnR9fX1mdW5jdGlvbiBvKGUsdCl7aWYo
Z3x8bnVsbD09dnx8diE9PWwoKSlyZXR1cm4gbnVsbDt2YXIgbj1yKHYpO2lmKCF5fHwhZCh5LG4p
KXt5PW47dmFyIG89Yy5nZXRQb29sZWQoaC5zZWxlY3QsbSxlLHQpO3JldHVybiBvLnR5cGU9InNl
bGVjdCIsby50YXJnZXQ9dixpLmFjY3VtdWxhdGVUd29QaGFzZURpc3BhdGNoZXMobyksb31yZXR1
cm4gbnVsbH12YXIgaT1uKDIwKSxhPW4oNiksdT1uKDUpLHM9big2NiksYz1uKDEwKSxsPW4oNTMp
LHA9big3NiksZD1uKDMyKSxmPWEuY2FuVXNlRE9NJiYiZG9jdW1lbnRNb2RlImluIGRvY3VtZW50
JiZkb2N1bWVudC5kb2N1bWVudE1vZGU8PTExLGg9e3NlbGVjdDp7cGhhc2VkUmVnaXN0cmF0aW9u
TmFtZXM6e2J1YmJsZWQ6Im9uU2VsZWN0IixjYXB0dXJlZDoib25TZWxlY3RDYXB0dXJlIn0sZGVw
ZW5kZW5jaWVzOlsidG9wQmx1ciIsInRvcENvbnRleHRNZW51IiwidG9wRm9jdXMiLCJ0b3BLZXlE
b3duIiwidG9wS2V5VXAiLCJ0b3BNb3VzZURvd24iLCJ0b3BNb3VzZVVwIiwidG9wU2VsZWN0aW9u
Q2hhbmdlIl19fSx2PW51bGwsbT1udWxsLHk9bnVsbCxnPSExLGI9ITEsXz17ZXZlbnRUeXBlczpo
LGV4dHJhY3RFdmVudHM6ZnVuY3Rpb24oZSx0LG4scil7aWYoIWIpcmV0dXJuIG51bGw7dmFyIGk9
dD91LmdldE5vZGVGcm9tSW5zdGFuY2UodCk6d2luZG93O3N3aXRjaChlKXtjYXNlInRvcEZvY3Vz
IjoocChpKXx8InRydWUiPT09aS5jb250ZW50RWRpdGFibGUpJiYodj1pLG09dCx5PW51bGwpO2Jy
ZWFrO2Nhc2UidG9wQmx1ciI6dj1udWxsLG09bnVsbCx5PW51bGw7YnJlYWs7Y2FzZSJ0b3BNb3Vz
ZURvd24iOmc9ITA7YnJlYWs7Y2FzZSJ0b3BDb250ZXh0TWVudSI6Y2FzZSJ0b3BNb3VzZVVwIjpy
ZXR1cm4gZz0hMSxvKG4scik7Y2FzZSJ0b3BTZWxlY3Rpb25DaGFuZ2UiOmlmKGYpYnJlYWs7Y2Fz
ZSJ0b3BLZXlEb3duIjpjYXNlInRvcEtleVVwIjpyZXR1cm4gbyhuLHIpfXJldHVybiBudWxsfSxk
aWRQdXRMaXN0ZW5lcjpmdW5jdGlvbihlLHQsbil7Im9uU2VsZWN0Ij09PXQmJihiPSEwKX19O2Uu
ZXhwb3J0cz1ffSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0
dXJuIi4iK2UuX3Jvb3ROb2RlSUR9ZnVuY3Rpb24gbyhlKXtyZXR1cm4iYnV0dG9uIj09PWV8fCJp
bnB1dCI9PT1lfHwic2VsZWN0Ij09PWV8fCJ0ZXh0YXJlYSI9PT1lfXZhciBpPW4oMyksYT1uKDUx
KSx1PW4oMjApLHM9big1KSxjPW4oMTY3KSxsPW4oMTY4KSxwPW4oMTApLGQ9bigxNzEpLGY9bigx
NzMpLGg9bigyNiksdj1uKDE3MCksbT1uKDE3NCkseT1uKDE3NSksZz1uKDIyKSxiPW4oMTc2KSxf
PW4oNyksQz1uKDQ0KSxFPShuKDEpLHt9KSx3PXt9O1siYWJvcnQiLCJhbmltYXRpb25FbmQiLCJh
bmltYXRpb25JdGVyYXRpb24iLCJhbmltYXRpb25TdGFydCIsImJsdXIiLCJjYW5QbGF5IiwiY2Fu
UGxheVRocm91Z2giLCJjbGljayIsImNvbnRleHRNZW51IiwiY29weSIsImN1dCIsImRvdWJsZUNs
aWNrIiwiZHJhZyIsImRyYWdFbmQiLCJkcmFnRW50ZXIiLCJkcmFnRXhpdCIsImRyYWdMZWF2ZSIs
ImRyYWdPdmVyIiwiZHJhZ1N0YXJ0IiwiZHJvcCIsImR1cmF0aW9uQ2hhbmdlIiwiZW1wdGllZCIs
ImVuY3J5cHRlZCIsImVuZGVkIiwiZXJyb3IiLCJmb2N1cyIsImlucHV0IiwiaW52YWxpZCIsImtl
eURvd24iLCJrZXlQcmVzcyIsImtleVVwIiwibG9hZCIsImxvYWRlZERhdGEiLCJsb2FkZWRNZXRh
ZGF0YSIsImxvYWRTdGFydCIsIm1vdXNlRG93biIsIm1vdXNlTW92ZSIsIm1vdXNlT3V0IiwibW91
c2VPdmVyIiwibW91c2VVcCIsInBhc3RlIiwicGF1c2UiLCJwbGF5IiwicGxheWluZyIsInByb2dy
ZXNzIiwicmF0ZUNoYW5nZSIsInJlc2V0Iiwic2Nyb2xsIiwic2Vla2VkIiwic2Vla2luZyIsInN0
YWxsZWQiLCJzdWJtaXQiLCJzdXNwZW5kIiwidGltZVVwZGF0ZSIsInRvdWNoQ2FuY2VsIiwidG91
Y2hFbmQiLCJ0b3VjaE1vdmUiLCJ0b3VjaFN0YXJ0IiwidHJhbnNpdGlvbkVuZCIsInZvbHVtZUNo
YW5nZSIsIndhaXRpbmciLCJ3aGVlbCJdLmZvckVhY2goZnVuY3Rpb24oZSl7dmFyIHQ9ZVswXS50
b1VwcGVyQ2FzZSgpK2Uuc2xpY2UoMSksbj0ib24iK3Qscj0idG9wIit0LG89e3BoYXNlZFJlZ2lz
dHJhdGlvbk5hbWVzOntidWJibGVkOm4sY2FwdHVyZWQ6bisiQ2FwdHVyZSJ9LGRlcGVuZGVuY2ll
czpbcl19O0VbZV09byx3W3JdPW99KTt2YXIgVD17fSxQPXtldmVudFR5cGVzOkUsZXh0cmFjdEV2
ZW50czpmdW5jdGlvbihlLHQsbixyKXt2YXIgbz13W2VdO2lmKCFvKXJldHVybiBudWxsO3ZhciBh
O3N3aXRjaChlKXtjYXNlInRvcEFib3J0IjpjYXNlInRvcENhblBsYXkiOmNhc2UidG9wQ2FuUGxh
eVRocm91Z2giOmNhc2UidG9wRHVyYXRpb25DaGFuZ2UiOmNhc2UidG9wRW1wdGllZCI6Y2FzZSJ0
b3BFbmNyeXB0ZWQiOmNhc2UidG9wRW5kZWQiOmNhc2UidG9wRXJyb3IiOmNhc2UidG9wSW5wdXQi
OmNhc2UidG9wSW52YWxpZCI6Y2FzZSJ0b3BMb2FkIjpjYXNlInRvcExvYWRlZERhdGEiOmNhc2Ui
dG9wTG9hZGVkTWV0YWRhdGEiOmNhc2UidG9wTG9hZFN0YXJ0IjpjYXNlInRvcFBhdXNlIjpjYXNl
InRvcFBsYXkiOmNhc2UidG9wUGxheWluZyI6Y2FzZSJ0b3BQcm9ncmVzcyI6Y2FzZSJ0b3BSYXRl
Q2hhbmdlIjpjYXNlInRvcFJlc2V0IjpjYXNlInRvcFNlZWtlZCI6Y2FzZSJ0b3BTZWVraW5nIjpj
YXNlInRvcFN0YWxsZWQiOmNhc2UidG9wU3VibWl0IjpjYXNlInRvcFN1c3BlbmQiOmNhc2UidG9w
VGltZVVwZGF0ZSI6Y2FzZSJ0b3BWb2x1bWVDaGFuZ2UiOmNhc2UidG9wV2FpdGluZyI6YT1wO2Jy
ZWFrO2Nhc2UidG9wS2V5UHJlc3MiOmlmKDA9PT1DKG4pKXJldHVybiBudWxsO2Nhc2UidG9wS2V5
RG93biI6Y2FzZSJ0b3BLZXlVcCI6YT1mO2JyZWFrO2Nhc2UidG9wQmx1ciI6Y2FzZSJ0b3BGb2N1
cyI6YT1kO2JyZWFrO2Nhc2UidG9wQ2xpY2siOmlmKDI9PT1uLmJ1dHRvbilyZXR1cm4gbnVsbDtj
YXNlInRvcERvdWJsZUNsaWNrIjpjYXNlInRvcE1vdXNlRG93biI6Y2FzZSJ0b3BNb3VzZU1vdmUi
OmNhc2UidG9wTW91c2VVcCI6Y2FzZSJ0b3BNb3VzZU91dCI6Y2FzZSJ0b3BNb3VzZU92ZXIiOmNh
c2UidG9wQ29udGV4dE1lbnUiOmE9aDticmVhaztjYXNlInRvcERyYWciOmNhc2UidG9wRHJhZ0Vu
ZCI6Y2FzZSJ0b3BEcmFnRW50ZXIiOmNhc2UidG9wRHJhZ0V4aXQiOmNhc2UidG9wRHJhZ0xlYXZl
IjpjYXNlInRvcERyYWdPdmVyIjpjYXNlInRvcERyYWdTdGFydCI6Y2FzZSJ0b3BEcm9wIjphPXY7
YnJlYWs7Y2FzZSJ0b3BUb3VjaENhbmNlbCI6Y2FzZSJ0b3BUb3VjaEVuZCI6Y2FzZSJ0b3BUb3Vj
aE1vdmUiOmNhc2UidG9wVG91Y2hTdGFydCI6YT1tO2JyZWFrO2Nhc2UidG9wQW5pbWF0aW9uRW5k
IjpjYXNlInRvcEFuaW1hdGlvbkl0ZXJhdGlvbiI6Y2FzZSJ0b3BBbmltYXRpb25TdGFydCI6YT1j
O2JyZWFrO2Nhc2UidG9wVHJhbnNpdGlvbkVuZCI6YT15O2JyZWFrO2Nhc2UidG9wU2Nyb2xsIjph
PWc7YnJlYWs7Y2FzZSJ0b3BXaGVlbCI6YT1iO2JyZWFrO2Nhc2UidG9wQ29weSI6Y2FzZSJ0b3BD
dXQiOmNhc2UidG9wUGFzdGUiOmE9bH1hP3ZvaWQgMDppKCI4NiIsZSk7dmFyIHM9YS5nZXRQb29s
ZWQobyx0LG4scik7cmV0dXJuIHUuYWNjdW11bGF0ZVR3b1BoYXNlRGlzcGF0Y2hlcyhzKSxzfSxk
aWRQdXRMaXN0ZW5lcjpmdW5jdGlvbihlLHQsbil7aWYoIm9uQ2xpY2siPT09dCYmIW8oZS5fdGFn
KSl7dmFyIGk9cihlKSx1PXMuZ2V0Tm9kZUZyb21JbnN0YW5jZShlKTtUW2ldfHwoVFtpXT1hLmxp
c3Rlbih1LCJjbGljayIsXykpfX0sd2lsbERlbGV0ZUxpc3RlbmVyOmZ1bmN0aW9uKGUsdCl7aWYo
Im9uQ2xpY2siPT09dCYmIW8oZS5fdGFnKSl7dmFyIG49cihlKTtUW25dLnJlbW92ZSgpLGRlbGV0
ZSBUW25dfX19O2UuZXhwb3J0cz1QfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0
aW9uIHIoZSx0LG4scil7cmV0dXJuIG8uY2FsbCh0aGlzLGUsdCxuLHIpfXZhciBvPW4oMTApLGk9
e2FuaW1hdGlvbk5hbWU6bnVsbCxlbGFwc2VkVGltZTpudWxsLHBzZXVkb0VsZW1lbnQ6bnVsbH07
by5hdWdtZW50Q2xhc3MocixpKSxlLmV4cG9ydHM9cn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3Ry
aWN0IjtmdW5jdGlvbiByKGUsdCxuLHIpe3JldHVybiBvLmNhbGwodGhpcyxlLHQsbixyKX12YXIg
bz1uKDEwKSxpPXtjbGlwYm9hcmREYXRhOmZ1bmN0aW9uKGUpe3JldHVybiJjbGlwYm9hcmREYXRh
ImluIGU/ZS5jbGlwYm9hcmREYXRhOndpbmRvdy5jbGlwYm9hcmREYXRhfX07by5hdWdtZW50Q2xh
c3MocixpKSxlLmV4cG9ydHM9cn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlv
biByKGUsdCxuLHIpe3JldHVybiBvLmNhbGwodGhpcyxlLHQsbixyKX12YXIgbz1uKDEwKSxpPXtk
YXRhOm51bGx9O28uYXVnbWVudENsYXNzKHIsaSksZS5leHBvcnRzPXJ9LGZ1bmN0aW9uKGUsdCxu
KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQsbixyKXtyZXR1cm4gby5jYWxsKHRoaXMsZSx0
LG4scil9dmFyIG89bigyNiksaT17ZGF0YVRyYW5zZmVyOm51bGx9O28uYXVnbWVudENsYXNzKHIs
aSksZS5leHBvcnRzPXJ9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihl
LHQsbixyKXtyZXR1cm4gby5jYWxsKHRoaXMsZSx0LG4scil9dmFyIG89bigyMiksaT17cmVsYXRl
ZFRhcmdldDpudWxsfTtvLmF1Z21lbnRDbGFzcyhyLGkpLGUuZXhwb3J0cz1yfSxmdW5jdGlvbihl
LHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0LG4scil7cmV0dXJuIG8uY2FsbCh0aGlz
LGUsdCxuLHIpfXZhciBvPW4oMTApLGk9e2RhdGE6bnVsbH07by5hdWdtZW50Q2xhc3MocixpKSxl
LmV4cG9ydHM9cn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCxu
LHIpe3JldHVybiBvLmNhbGwodGhpcyxlLHQsbixyKX12YXIgbz1uKDIyKSxpPW4oNDQpLGE9bigx
ODEpLHU9big0NSkscz17a2V5OmEsbG9jYXRpb246bnVsbCxjdHJsS2V5Om51bGwsc2hpZnRLZXk6
bnVsbCxhbHRLZXk6bnVsbCxtZXRhS2V5Om51bGwscmVwZWF0Om51bGwsbG9jYWxlOm51bGwsZ2V0
TW9kaWZpZXJTdGF0ZTp1LGNoYXJDb2RlOmZ1bmN0aW9uKGUpe3JldHVybiJrZXlwcmVzcyI9PT1l
LnR5cGU/aShlKTowfSxrZXlDb2RlOmZ1bmN0aW9uKGUpe3JldHVybiJrZXlkb3duIj09PWUudHlw
ZXx8ImtleXVwIj09PWUudHlwZT9lLmtleUNvZGU6MH0sd2hpY2g6ZnVuY3Rpb24oZSl7cmV0dXJu
ImtleXByZXNzIj09PWUudHlwZT9pKGUpOiJrZXlkb3duIj09PWUudHlwZXx8ImtleXVwIj09PWUu
dHlwZT9lLmtleUNvZGU6MH19O28uYXVnbWVudENsYXNzKHIscyksZS5leHBvcnRzPXJ9LGZ1bmN0
aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQsbixyKXtyZXR1cm4gby5jYWxs
KHRoaXMsZSx0LG4scil9dmFyIG89bigyMiksaT1uKDQ1KSxhPXt0b3VjaGVzOm51bGwsdGFyZ2V0
VG91Y2hlczpudWxsLGNoYW5nZWRUb3VjaGVzOm51bGwsYWx0S2V5Om51bGwsbWV0YUtleTpudWxs
LGN0cmxLZXk6bnVsbCxzaGlmdEtleTpudWxsLGdldE1vZGlmaWVyU3RhdGU6aX07by5hdWdtZW50
Q2xhc3MocixhKSxlLmV4cG9ydHM9cn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5j
dGlvbiByKGUsdCxuLHIpe3JldHVybiBvLmNhbGwodGhpcyxlLHQsbixyKX12YXIgbz1uKDEwKSxp
PXtwcm9wZXJ0eU5hbWU6bnVsbCxlbGFwc2VkVGltZTpudWxsLHBzZXVkb0VsZW1lbnQ6bnVsbH07
by5hdWdtZW50Q2xhc3MocixpKSxlLmV4cG9ydHM9cn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3Ry
aWN0IjtmdW5jdGlvbiByKGUsdCxuLHIpe3JldHVybiBvLmNhbGwodGhpcyxlLHQsbixyKX12YXIg
bz1uKDI2KSxpPXtkZWx0YVg6ZnVuY3Rpb24oZSl7cmV0dXJuImRlbHRhWCJpbiBlP2UuZGVsdGFY
OiJ3aGVlbERlbHRhWCJpbiBlPy1lLndoZWVsRGVsdGFYOjB9LGRlbHRhWTpmdW5jdGlvbihlKXty
ZXR1cm4iZGVsdGFZImluIGU/ZS5kZWx0YVk6IndoZWVsRGVsdGFZImluIGU/LWUud2hlZWxEZWx0
YVk6IndoZWVsRGVsdGEiaW4gZT8tZS53aGVlbERlbHRhOjB9LGRlbHRhWjpudWxsLGRlbHRhTW9k
ZTpudWxsfTtvLmF1Z21lbnRDbGFzcyhyLGkpLGUuZXhwb3J0cz1yfSxmdW5jdGlvbihlLHQpeyJ1
c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKGUpe2Zvcih2YXIgdD0xLG49MCxvPTAsaT1lLmxlbmd0aCxh
PWkmLTQ7bzxhOyl7Zm9yKHZhciB1PU1hdGgubWluKG8rNDA5NixhKTtvPHU7bys9NCluKz0odCs9
ZS5jaGFyQ29kZUF0KG8pKSsodCs9ZS5jaGFyQ29kZUF0KG8rMSkpKyh0Kz1lLmNoYXJDb2RlQXQo
bysyKSkrKHQrPWUuY2hhckNvZGVBdChvKzMpKTt0JT1yLG4lPXJ9Zm9yKDtvPGk7bysrKW4rPXQr
PWUuY2hhckNvZGVBdChvKTtyZXR1cm4gdCU9cixuJT1yLHR8bjw8MTZ9dmFyIHI9NjU1MjE7ZS5l
eHBvcnRzPW59LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQsbixy
KXt2YXIgbz1udWxsPT10fHwiYm9vbGVhbiI9PXR5cGVvZiB0fHwiIj09PXQ7aWYobylyZXR1cm4i
Ijt2YXIgYT1pc05hTih0KTtpZihyfHxhfHwwPT09dHx8aS5oYXNPd25Qcm9wZXJ0eShlKSYmaVtl
XSlyZXR1cm4iIit0O2lmKCJzdHJpbmciPT10eXBlb2YgdCl7dD10LnRyaW0oKX1yZXR1cm4gdCsi
cHgifXZhciBvPW4oNTgpLGk9KG4oMiksby5pc1VuaXRsZXNzTnVtYmVyKTtlLmV4cG9ydHM9cn0s
ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe2lmKG51bGw9PWUpcmV0
dXJuIG51bGw7aWYoMT09PWUubm9kZVR5cGUpcmV0dXJuIGU7dmFyIHQ9YS5nZXQoZSk7cmV0dXJu
IHQ/KHQ9dSh0KSx0P2kuZ2V0Tm9kZUZyb21JbnN0YW5jZSh0KTpudWxsKTp2b2lkKCJmdW5jdGlv
biI9PXR5cGVvZiBlLnJlbmRlcj9vKCI0NCIpOm8oIjQ1IixPYmplY3Qua2V5cyhlKSkpfXZhciBv
PW4oMyksaT0obigxMSksbig1KSksYT1uKDIxKSx1PW4oNzIpO24oMSksbigyKTtlLmV4cG9ydHM9
cn0sZnVuY3Rpb24oZSx0LG4peyhmdW5jdGlvbih0KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihl
LHQsbixyKXtpZihlJiYib2JqZWN0Ij09dHlwZW9mIGUpe3ZhciBvPWUsaT12b2lkIDA9PT1vW25d
O2kmJm51bGwhPXQmJihvW25dPXQpfX1mdW5jdGlvbiBvKGUsdCl7aWYobnVsbD09ZSlyZXR1cm4g
ZTt2YXIgbj17fTtyZXR1cm4gaShlLHIsbiksbn12YXIgaT0obigzOCksbig3OCkpO24oMik7InVu
ZGVmaW5lZCIhPXR5cGVvZiB0JiZ0LmVudiwxLGUuZXhwb3J0cz1vfSkuY2FsbCh0LG4oODcpKX0s
ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe2lmKGUua2V5KXt2YXIg
dD1pW2Uua2V5XXx8ZS5rZXk7aWYoIlVuaWRlbnRpZmllZCIhPT10KXJldHVybiB0fWlmKCJrZXlw
cmVzcyI9PT1lLnR5cGUpe3ZhciBuPW8oZSk7cmV0dXJuIDEzPT09bj8iRW50ZXIiOlN0cmluZy5m
cm9tQ2hhckNvZGUobil9cmV0dXJuImtleWRvd24iPT09ZS50eXBlfHwia2V5dXAiPT09ZS50eXBl
P2FbZS5rZXlDb2RlXXx8IlVuaWRlbnRpZmllZCI6IiJ9dmFyIG89big0NCksaT17RXNjOiJFc2Nh
cGUiLFNwYWNlYmFyOiIgIixMZWZ0OiJBcnJvd0xlZnQiLFVwOiJBcnJvd1VwIixSaWdodDoiQXJy
b3dSaWdodCIsRG93bjoiQXJyb3dEb3duIixEZWw6IkRlbGV0ZSIsV2luOiJPUyIsTWVudToiQ29u
dGV4dE1lbnUiLEFwcHM6IkNvbnRleHRNZW51IixTY3JvbGw6IlNjcm9sbExvY2siLE1velByaW50
YWJsZUtleToiVW5pZGVudGlmaWVkIn0sYT17ODoiQmFja3NwYWNlIiw5OiJUYWIiLDEyOiJDbGVh
ciIsMTM6IkVudGVyIiwxNjoiU2hpZnQiLDE3OiJDb250cm9sIiwxODoiQWx0IiwxOToiUGF1c2Ui
LDIwOiJDYXBzTG9jayIsMjc6IkVzY2FwZSIsMzI6IiAiLDMzOiJQYWdlVXAiLDM0OiJQYWdlRG93
biIsMzU6IkVuZCIsMzY6IkhvbWUiLDM3OiJBcnJvd0xlZnQiLDM4OiJBcnJvd1VwIiwzOToiQXJy
b3dSaWdodCIsNDA6IkFycm93RG93biIsNDU6Ikluc2VydCIsNDY6IkRlbGV0ZSIsMTEyOiJGMSIs
MTEzOiJGMiIsMTE0OiJGMyIsMTE1OiJGNCIsMTE2OiJGNSIsMTE3OiJGNiIsMTE4OiJGNyIsMTE5
OiJGOCIsMTIwOiJGOSIsMTIxOiJGMTAiLDEyMjoiRjExIiwxMjM6IkYxMiIsMTQ0OiJOdW1Mb2Nr
IiwxNDU6IlNjcm9sbExvY2siLDIyNDoiTWV0YSJ9O2UuZXhwb3J0cz1yfSxmdW5jdGlvbihlLHQp
eyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKGUpe3ZhciB0PWUmJihyJiZlW3JdfHxlW29dKTtpZigi
ZnVuY3Rpb24iPT10eXBlb2YgdClyZXR1cm4gdH12YXIgcj0iZnVuY3Rpb24iPT10eXBlb2YgU3lt
Ym9sJiZTeW1ib2wuaXRlcmF0b3Isbz0iQEBpdGVyYXRvciI7ZS5leHBvcnRzPW59LGZ1bmN0aW9u
KGUsdCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4oZSl7Zm9yKDtlJiZlLmZpcnN0Q2hpbGQ7KWU9
ZS5maXJzdENoaWxkO3JldHVybiBlfWZ1bmN0aW9uIHIoZSl7Zm9yKDtlOyl7aWYoZS5uZXh0U2li
bGluZylyZXR1cm4gZS5uZXh0U2libGluZztlPWUucGFyZW50Tm9kZX19ZnVuY3Rpb24gbyhlLHQp
e2Zvcih2YXIgbz1uKGUpLGk9MCxhPTA7bzspe2lmKDM9PT1vLm5vZGVUeXBlKXtpZihhPWkrby50
ZXh0Q29udGVudC5sZW5ndGgsaTw9dCYmYT49dClyZXR1cm57bm9kZTpvLG9mZnNldDp0LWl9O2k9
YX1vPW4ocihvKSl9fWUuZXhwb3J0cz1vfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1
bmN0aW9uIHIoZSx0KXt2YXIgbj17fTtyZXR1cm4gbltlLnRvTG93ZXJDYXNlKCldPXQudG9Mb3dl
ckNhc2UoKSxuWyJXZWJraXQiK2VdPSJ3ZWJraXQiK3QsblsiTW96IitlXT0ibW96Iit0LG5bIm1z
IitlXT0iTVMiK3QsblsiTyIrZV09Im8iK3QudG9Mb3dlckNhc2UoKSxufWZ1bmN0aW9uIG8oZSl7
aWYodVtlXSlyZXR1cm4gdVtlXTtpZighYVtlXSlyZXR1cm4gZTt2YXIgdD1hW2VdO2Zvcih2YXIg
biBpbiB0KWlmKHQuaGFzT3duUHJvcGVydHkobikmJm4gaW4gcylyZXR1cm4gdVtlXT10W25dO3Jl
dHVybiIifXZhciBpPW4oNiksYT17YW5pbWF0aW9uZW5kOnIoIkFuaW1hdGlvbiIsIkFuaW1hdGlv
bkVuZCIpLGFuaW1hdGlvbml0ZXJhdGlvbjpyKCJBbmltYXRpb24iLCJBbmltYXRpb25JdGVyYXRp
b24iKSxhbmltYXRpb25zdGFydDpyKCJBbmltYXRpb24iLCJBbmltYXRpb25TdGFydCIpLHRyYW5z
aXRpb25lbmQ6cigiVHJhbnNpdGlvbiIsIlRyYW5zaXRpb25FbmQiKX0sdT17fSxzPXt9O2kuY2Fu
VXNlRE9NJiYocz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKS5zdHlsZSwiQW5pbWF0aW9u
RXZlbnQiaW4gd2luZG93fHwoZGVsZXRlIGEuYW5pbWF0aW9uZW5kLmFuaW1hdGlvbixkZWxldGUg
YS5hbmltYXRpb25pdGVyYXRpb24uYW5pbWF0aW9uLGRlbGV0ZSBhLmFuaW1hdGlvbnN0YXJ0LmFu
aW1hdGlvbiksIlRyYW5zaXRpb25FdmVudCJpbiB3aW5kb3d8fGRlbGV0ZSBhLnRyYW5zaXRpb25l
bmQudHJhbnNpdGlvbiksZS5leHBvcnRzPW99LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7
ZnVuY3Rpb24gcihlKXtyZXR1cm4nIicrbyhlKSsnIid9dmFyIG89bigyOCk7ZS5leHBvcnRzPXJ9
LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9big2Nyk7ZS5leHBvcnRzPXIucmVu
ZGVyU3VidHJlZUludG9Db250YWluZXJ9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVu
Y3Rpb24gcihlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19ZnVuY3Rpb24g
byhlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBj
YWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfWZ1bmN0aW9uIGkoZSx0KXtpZighZSl0aHJvdyBu
ZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigp
IGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiF0fHwib2JqZWN0IiE9dHlwZW9mIHQmJiJmdW5j
dGlvbiIhPXR5cGVvZiB0P2U6dH1mdW5jdGlvbiBhKGUsdCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9m
IHQmJm51bGwhPT10KXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBl
aXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uLCBub3QgIit0eXBlb2YgdCk7ZS5wcm90b3R5cGU9
T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmUsZW51bWVy
YWJsZTohMSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksdCYmKE9iamVjdC5zZXRQcm90
b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YoZSx0KTplLl9fcHJvdG9fXz10KX1mdW5jdGlv
biB1KCl7dmFyIGUsdD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9h
cmd1bWVudHNbMF06InN0b3JlIixuPWFyZ3VtZW50c1sxXSxyPW58fHQrIlN1YnNjcmlwdGlvbiIs
dT1mdW5jdGlvbihlKXtmdW5jdGlvbiBuKHIsYSl7byh0aGlzLG4pO3ZhciB1PWkodGhpcyxlLmNh
bGwodGhpcyxyLGEpKTtyZXR1cm4gdVt0XT1yLnN0b3JlLHV9cmV0dXJuIGEobixlKSxuLnByb3Rv
dHlwZS5nZXRDaGlsZENvbnRleHQ9ZnVuY3Rpb24oKXt2YXIgZTtyZXR1cm4gZT17fSxlW3RdPXRo
aXNbdF0sZVtyXT1udWxsLGV9LG4ucHJvdG90eXBlLnJlbmRlcj1mdW5jdGlvbigpe3JldHVybiBz
LkNoaWxkcmVuLm9ubHkodGhpcy5wcm9wcy5jaGlsZHJlbil9LG59KHMuQ29tcG9uZW50KTtyZXR1
cm4gdS5wcm9wVHlwZXM9e3N0b3JlOnAuc3RvcmVTaGFwZS5pc1JlcXVpcmVkLGNoaWxkcmVuOmwu
ZGVmYXVsdC5lbGVtZW50LmlzUmVxdWlyZWR9LHUuY2hpbGRDb250ZXh0VHlwZXM9KGU9e30sZVt0
XT1wLnN0b3JlU2hhcGUuaXNSZXF1aXJlZCxlW3JdPXAuc3Vic2NyaXB0aW9uU2hhcGUsZSksdX10
Ll9fZXNNb2R1bGU9ITAsdC5jcmVhdGVQcm92aWRlcj11O3ZhciBzPW4oMTIpLGM9big1NiksbD1y
KGMpLHA9big4MiksZD1uKDUwKTtyKGQpO3QuZGVmYXVsdD11KCl9LGZ1bmN0aW9uKGUsdCxuKXsi
dXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1
bHQ6ZX19ZnVuY3Rpb24gbyhlLHQpe3ZhciBuPXt9O2Zvcih2YXIgciBpbiBlKXQuaW5kZXhPZihy
KT49MHx8T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUscikmJihuW3JdPWVb
cl0pO3JldHVybiBufWZ1bmN0aW9uIGkoZSx0LG4pe2Zvcih2YXIgcj10Lmxlbmd0aC0xO3I+PTA7
ci0tKXt2YXIgbz10W3JdKGUpO2lmKG8pcmV0dXJuIG99cmV0dXJuIGZ1bmN0aW9uKHQscil7dGhy
b3cgbmV3IEVycm9yKCJJbnZhbGlkIHZhbHVlIG9mIHR5cGUgIit0eXBlb2YgZSsiIGZvciAiK24r
IiBhcmd1bWVudCB3aGVuIGNvbm5lY3RpbmcgY29tcG9uZW50ICIrci53cmFwcGVkQ29tcG9uZW50
TmFtZSsiLiIpfX1mdW5jdGlvbiBhKGUsdCl7cmV0dXJuIGU9PT10fWZ1bmN0aW9uIHUoKXt2YXIg
ZT1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06
e30sdD1lLmNvbm5lY3RIT0Msbj12b2lkIDA9PT10P2wuZGVmYXVsdDp0LHI9ZS5tYXBTdGF0ZVRv
UHJvcHNGYWN0b3JpZXMsdT12b2lkIDA9PT1yP20uZGVmYXVsdDpyLGM9ZS5tYXBEaXNwYXRjaFRv
UHJvcHNGYWN0b3JpZXMscD12b2lkIDA9PT1jP2guZGVmYXVsdDpjLGY9ZS5tZXJnZVByb3BzRmFj
dG9yaWVzLHY9dm9pZCAwPT09Zj9nLmRlZmF1bHQ6Zix5PWUuc2VsZWN0b3JGYWN0b3J5LGI9dm9p
ZCAwPT09eT9fLmRlZmF1bHQ6eTtyZXR1cm4gZnVuY3Rpb24oZSx0LHIpe3ZhciBjPWFyZ3VtZW50
cy5sZW5ndGg+MyYmdm9pZCAwIT09YXJndW1lbnRzWzNdP2FyZ3VtZW50c1szXTp7fSxsPWMucHVy
ZSxmPXZvaWQgMD09PWx8fGwsaD1jLmFyZVN0YXRlc0VxdWFsLG09dm9pZCAwPT09aD9hOmgseT1j
LmFyZU93blByb3BzRXF1YWwsZz12b2lkIDA9PT15P2QuZGVmYXVsdDp5LF89Yy5hcmVTdGF0ZVBy
b3BzRXF1YWwsQz12b2lkIDA9PT1fP2QuZGVmYXVsdDpfLEU9Yy5hcmVNZXJnZWRQcm9wc0VxdWFs
LHc9dm9pZCAwPT09RT9kLmRlZmF1bHQ6RSxUPW8oYyxbInB1cmUiLCJhcmVTdGF0ZXNFcXVhbCIs
ImFyZU93blByb3BzRXF1YWwiLCJhcmVTdGF0ZVByb3BzRXF1YWwiLCJhcmVNZXJnZWRQcm9wc0Vx
dWFsIl0pLFA9aShlLHUsIm1hcFN0YXRlVG9Qcm9wcyIpLHg9aSh0LHAsIm1hcERpc3BhdGNoVG9Q
cm9wcyIpLE89aShyLHYsIm1lcmdlUHJvcHMiKTtyZXR1cm4gbihiLHMoe21ldGhvZE5hbWU6ImNv
bm5lY3QiLGdldERpc3BsYXlOYW1lOmZ1bmN0aW9uKGUpe3JldHVybiJDb25uZWN0KCIrZSsiKSJ9
LHNob3VsZEhhbmRsZVN0YXRlQ2hhbmdlczpCb29sZWFuKGUpLGluaXRNYXBTdGF0ZVRvUHJvcHM6
UCxpbml0TWFwRGlzcGF0Y2hUb1Byb3BzOngsaW5pdE1lcmdlUHJvcHM6TyxwdXJlOmYsYXJlU3Rh
dGVzRXF1YWw6bSxhcmVPd25Qcm9wc0VxdWFsOmcsYXJlU3RhdGVQcm9wc0VxdWFsOkMsYXJlTWVy
Z2VkUHJvcHNFcXVhbDp3fSxUKSl9fXQuX19lc01vZHVsZT0hMDt2YXIgcz1PYmplY3QuYXNzaWdu
fHxmdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1h
cmd1bWVudHNbdF07Zm9yKHZhciByIGluIG4pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0
eS5jYWxsKG4scikmJihlW3JdPW5bcl0pfXJldHVybiBlfTt0LmNyZWF0ZUNvbm5lY3Q9dTt2YXIg
Yz1uKDc5KSxsPXIoYykscD1uKDE5NSksZD1yKHApLGY9bigxODkpLGg9cihmKSx2PW4oMTkwKSxt
PXIodikseT1uKDE5MSksZz1yKHkpLGI9bigxOTIpLF89cihiKTt0LmRlZmF1bHQ9dSgpfSxmdW5j
dGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuImZ1bmN0aW9uIj09
dHlwZW9mIGU/KDAsdS53cmFwTWFwVG9Qcm9wc0Z1bmMpKGUsIm1hcERpc3BhdGNoVG9Qcm9wcyIp
OnZvaWQgMH1mdW5jdGlvbiBvKGUpe3JldHVybiBlP3ZvaWQgMDooMCx1LndyYXBNYXBUb1Byb3Bz
Q29uc3RhbnQpKGZ1bmN0aW9uKGUpe3JldHVybntkaXNwYXRjaDplfX0pfWZ1bmN0aW9uIGkoZSl7
cmV0dXJuIGUmJiJvYmplY3QiPT10eXBlb2YgZT8oMCx1LndyYXBNYXBUb1Byb3BzQ29uc3RhbnQp
KGZ1bmN0aW9uKHQpe3JldHVybigwLGEuYmluZEFjdGlvbkNyZWF0b3JzKShlLHQpfSk6dm9pZCAw
fXQuX19lc01vZHVsZT0hMCx0LndoZW5NYXBEaXNwYXRjaFRvUHJvcHNJc0Z1bmN0aW9uPXIsdC53
aGVuTWFwRGlzcGF0Y2hUb1Byb3BzSXNNaXNzaW5nPW8sdC53aGVuTWFwRGlzcGF0Y2hUb1Byb3Bz
SXNPYmplY3Q9aTt2YXIgYT1uKDMwKSx1PW4oODApO3QuZGVmYXVsdD1bcixvLGldfSxmdW5jdGlv
bihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuImZ1bmN0aW9uIj09dHlw
ZW9mIGU/KDAsaS53cmFwTWFwVG9Qcm9wc0Z1bmMpKGUsIm1hcFN0YXRlVG9Qcm9wcyIpOnZvaWQg
MH1mdW5jdGlvbiBvKGUpe3JldHVybiBlP3ZvaWQgMDooMCxpLndyYXBNYXBUb1Byb3BzQ29uc3Rh
bnQpKGZ1bmN0aW9uKCl7cmV0dXJue319KX10Ll9fZXNNb2R1bGU9ITAsdC53aGVuTWFwU3RhdGVU
b1Byb3BzSXNGdW5jdGlvbj1yLHQud2hlbk1hcFN0YXRlVG9Qcm9wc0lzTWlzc2luZz1vO3ZhciBp
PW4oODApO3QuZGVmYXVsdD1bcixvXX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5j
dGlvbiByKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX1mdW5jdGlvbiBv
KGUsdCxuKXtyZXR1cm4gcyh7fSxuLGUsdCl9ZnVuY3Rpb24gaShlKXtyZXR1cm4gZnVuY3Rpb24o
dCxuKXt2YXIgcj0obi5kaXNwbGF5TmFtZSxuLnB1cmUpLG89bi5hcmVNZXJnZWRQcm9wc0VxdWFs
LGk9ITEsYT12b2lkIDA7cmV0dXJuIGZ1bmN0aW9uKHQsbix1KXt2YXIgcz1lKHQsbix1KTtyZXR1
cm4gaT9yJiZvKHMsYSl8fChhPXMpOihpPSEwLGE9cyksYX19fWZ1bmN0aW9uIGEoZSl7cmV0dXJu
ImZ1bmN0aW9uIj09dHlwZW9mIGU/aShlKTp2b2lkIDB9ZnVuY3Rpb24gdShlKXtyZXR1cm4gZT92
b2lkIDA6ZnVuY3Rpb24oKXtyZXR1cm4gbzsKK319dC5fX2VzTW9kdWxlPSEwO3ZhciBzPU9iamVj
dC5hc3NpZ258fGZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kysp
e3ZhciBuPWFyZ3VtZW50c1t0XTtmb3IodmFyIHIgaW4gbilPYmplY3QucHJvdG90eXBlLmhhc093
blByb3BlcnR5LmNhbGwobixyKSYmKGVbcl09bltyXSl9cmV0dXJuIGV9O3QuZGVmYXVsdE1lcmdl
UHJvcHM9byx0LndyYXBNZXJnZVByb3BzRnVuYz1pLHQud2hlbk1lcmdlUHJvcHNJc0Z1bmN0aW9u
PWEsdC53aGVuTWVyZ2VQcm9wc0lzT21pdHRlZD11O3ZhciBjPW4oODMpO3IoYyk7dC5kZWZhdWx0
PVthLHVdfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJu
IGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fWZ1bmN0aW9uIG8oZSx0KXt2YXIgbj17fTtm
b3IodmFyIHIgaW4gZSl0LmluZGV4T2Yocik+PTB8fE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJv
cGVydHkuY2FsbChlLHIpJiYobltyXT1lW3JdKTtyZXR1cm4gbn1mdW5jdGlvbiBpKGUsdCxuLHIp
e3JldHVybiBmdW5jdGlvbihvLGkpe3JldHVybiBuKGUobyxpKSx0KHIsaSksaSl9fWZ1bmN0aW9u
IGEoZSx0LG4scixvKXtmdW5jdGlvbiBpKG8saSl7cmV0dXJuIGg9byx2PWksbT1lKGgsdikseT10
KHIsdiksZz1uKG0seSx2KSxmPSEwLGd9ZnVuY3Rpb24gYSgpe3JldHVybiBtPWUoaCx2KSx0LmRl
cGVuZHNPbk93blByb3BzJiYoeT10KHIsdikpLGc9bihtLHksdil9ZnVuY3Rpb24gdSgpe3JldHVy
biBlLmRlcGVuZHNPbk93blByb3BzJiYobT1lKGgsdikpLHQuZGVwZW5kc09uT3duUHJvcHMmJih5
PXQocix2KSksZz1uKG0seSx2KX1mdW5jdGlvbiBzKCl7dmFyIHQ9ZShoLHYpLHI9IWQodCxtKTty
ZXR1cm4gbT10LHImJihnPW4obSx5LHYpKSxnfWZ1bmN0aW9uIGMoZSx0KXt2YXIgbj0hcCh0LHYp
LHI9IWwoZSxoKTtyZXR1cm4gaD1lLHY9dCxuJiZyP2EoKTpuP3UoKTpyP3MoKTpnfXZhciBsPW8u
YXJlU3RhdGVzRXF1YWwscD1vLmFyZU93blByb3BzRXF1YWwsZD1vLmFyZVN0YXRlUHJvcHNFcXVh
bCxmPSExLGg9dm9pZCAwLHY9dm9pZCAwLG09dm9pZCAwLHk9dm9pZCAwLGc9dm9pZCAwO3JldHVy
biBmdW5jdGlvbihlLHQpe3JldHVybiBmP2MoZSx0KTppKGUsdCl9fWZ1bmN0aW9uIHUoZSx0KXt2
YXIgbj10LmluaXRNYXBTdGF0ZVRvUHJvcHMscj10LmluaXRNYXBEaXNwYXRjaFRvUHJvcHMsdT10
LmluaXRNZXJnZVByb3BzLHM9byh0LFsiaW5pdE1hcFN0YXRlVG9Qcm9wcyIsImluaXRNYXBEaXNw
YXRjaFRvUHJvcHMiLCJpbml0TWVyZ2VQcm9wcyJdKSxjPW4oZSxzKSxsPXIoZSxzKSxwPXUoZSxz
KSxkPXMucHVyZT9hOmk7cmV0dXJuIGQoYyxsLHAsZSxzKX10Ll9fZXNNb2R1bGU9ITAsdC5pbXB1
cmVGaW5hbFByb3BzU2VsZWN0b3JGYWN0b3J5PWksdC5wdXJlRmluYWxQcm9wc1NlbGVjdG9yRmFj
dG9yeT1hLHQuZGVmYXVsdD11O3ZhciBzPW4oMTkzKTtyKHMpfSxmdW5jdGlvbihlLHQsbil7InVz
ZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0
OmV9fWZ1bmN0aW9uIG8oZSx0LG4pe2lmKCFlKXRocm93IG5ldyBFcnJvcigiVW5leHBlY3RlZCB2
YWx1ZSBmb3IgIit0KyIgaW4gIituKyIuIik7Im1hcFN0YXRlVG9Qcm9wcyIhPT10JiYibWFwRGlz
cGF0Y2hUb1Byb3BzIiE9PXR8fGUuaGFzT3duUHJvcGVydHkoImRlcGVuZHNPbk93blByb3BzIil8
fCgwLHUuZGVmYXVsdCkoIlRoZSBzZWxlY3RvciBmb3IgIit0KyIgb2YgIituKyIgZGlkIG5vdCBz
cGVjaWZ5IGEgdmFsdWUgZm9yIGRlcGVuZHNPbk93blByb3BzLiIpfWZ1bmN0aW9uIGkoZSx0LG4s
cil7byhlLCJtYXBTdGF0ZVRvUHJvcHMiLHIpLG8odCwibWFwRGlzcGF0Y2hUb1Byb3BzIixyKSxv
KG4sIm1lcmdlUHJvcHMiLHIpfXQuX19lc01vZHVsZT0hMCx0LmRlZmF1bHQ9aTt2YXIgYT1uKDUw
KSx1PXIoYSl9LGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4oZSx0KXtpZigh
KGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNz
IGFzIGEgZnVuY3Rpb24iKX1mdW5jdGlvbiByKCl7dmFyIGU9W10sdD1bXTtyZXR1cm57Y2xlYXI6
ZnVuY3Rpb24oKXt0PW8sZT1vfSxub3RpZnk6ZnVuY3Rpb24oKXtmb3IodmFyIG49ZT10LHI9MDty
PG4ubGVuZ3RoO3IrKyluW3JdKCl9LGdldDpmdW5jdGlvbigpe3JldHVybiB0fSxzdWJzY3JpYmU6
ZnVuY3Rpb24obil7dmFyIHI9ITA7cmV0dXJuIHQ9PT1lJiYodD1lLnNsaWNlKCkpLHQucHVzaChu
KSxmdW5jdGlvbigpe3ImJmUhPT1vJiYocj0hMSx0PT09ZSYmKHQ9ZS5zbGljZSgpKSx0LnNwbGlj
ZSh0LmluZGV4T2YobiksMSkpfX19fXQuX19lc01vZHVsZT0hMDt2YXIgbz1udWxsLGk9e25vdGlm
eTpmdW5jdGlvbigpe319LGE9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKHQscixvKXtuKHRoaXMsZSks
dGhpcy5zdG9yZT10LHRoaXMucGFyZW50U3ViPXIsdGhpcy5vblN0YXRlQ2hhbmdlPW8sdGhpcy51
bnN1YnNjcmliZT1udWxsLHRoaXMubGlzdGVuZXJzPWl9cmV0dXJuIGUucHJvdG90eXBlLmFkZE5l
c3RlZFN1Yj1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy50cnlTdWJzY3JpYmUoKSx0aGlzLmxpc3Rl
bmVycy5zdWJzY3JpYmUoZSl9LGUucHJvdG90eXBlLm5vdGlmeU5lc3RlZFN1YnM9ZnVuY3Rpb24o
KXt0aGlzLmxpc3RlbmVycy5ub3RpZnkoKX0sZS5wcm90b3R5cGUuaXNTdWJzY3JpYmVkPWZ1bmN0
aW9uKCl7cmV0dXJuIEJvb2xlYW4odGhpcy51bnN1YnNjcmliZSl9LGUucHJvdG90eXBlLnRyeVN1
YnNjcmliZT1mdW5jdGlvbigpe3RoaXMudW5zdWJzY3JpYmV8fCh0aGlzLnVuc3Vic2NyaWJlPXRo
aXMucGFyZW50U3ViP3RoaXMucGFyZW50U3ViLmFkZE5lc3RlZFN1Yih0aGlzLm9uU3RhdGVDaGFu
Z2UpOnRoaXMuc3RvcmUuc3Vic2NyaWJlKHRoaXMub25TdGF0ZUNoYW5nZSksdGhpcy5saXN0ZW5l
cnM9cigpKX0sZS5wcm90b3R5cGUudHJ5VW5zdWJzY3JpYmU9ZnVuY3Rpb24oKXt0aGlzLnVuc3Vi
c2NyaWJlJiYodGhpcy51bnN1YnNjcmliZSgpLHRoaXMudW5zdWJzY3JpYmU9bnVsbCx0aGlzLmxp
c3RlbmVycy5jbGVhcigpLHRoaXMubGlzdGVuZXJzPWkpfSxlfSgpO3QuZGVmYXVsdD1hfSxmdW5j
dGlvbihlLHQpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKGUsdCl7cmV0dXJuIGU9PT10PzAhPT1l
fHwwIT09dHx8MS9lPT09MS90OmUhPT1lJiZ0IT09dH1mdW5jdGlvbiByKGUsdCl7aWYobihlLHQp
KXJldHVybiEwO2lmKCJvYmplY3QiIT10eXBlb2YgZXx8bnVsbD09PWV8fCJvYmplY3QiIT10eXBl
b2YgdHx8bnVsbD09PXQpcmV0dXJuITE7dmFyIHI9T2JqZWN0LmtleXMoZSksaT1PYmplY3Qua2V5
cyh0KTtpZihyLmxlbmd0aCE9PWkubGVuZ3RoKXJldHVybiExO2Zvcih2YXIgYT0wO2E8ci5sZW5n
dGg7YSsrKWlmKCFvLmNhbGwodCxyW2FdKXx8IW4oZVtyW2FdXSx0W3JbYV1dKSlyZXR1cm4hMTty
ZXR1cm4hMH10Ll9fZXNNb2R1bGU9ITAsdC5kZWZhdWx0PXI7dmFyIG89T2JqZWN0LnByb3RvdHlw
ZS5oYXNPd25Qcm9wZXJ0eX0sZnVuY3Rpb24oZSx0LG4peyJ1bmRlZmluZWQiPT10eXBlb2YgUHJv
bWlzZSYmKG4oMjEwKS5lbmFibGUoKSx3aW5kb3cuUHJvbWlzZT1uKDIwOSkpLG4oMjEyKSxPYmpl
Y3QuYXNzaWduPW4oMjA4KX0sZnVuY3Rpb24oZSx0KXsoZnVuY3Rpb24odCl7InVzZSBzdHJpY3Qi
O2Z1bmN0aW9uIG4oZSl7dS5sZW5ndGh8fChhKCkscz0hMCksdVt1Lmxlbmd0aF09ZX1mdW5jdGlv
biByKCl7Zm9yKDtjPHUubGVuZ3RoOyl7dmFyIGU9YztpZihjKz0xLHVbZV0uY2FsbCgpLGM+bCl7
Zm9yKHZhciB0PTAsbj11Lmxlbmd0aC1jO3Q8bjt0KyspdVt0XT11W3QrY107dS5sZW5ndGgtPWMs
Yz0wfX11Lmxlbmd0aD0wLGM9MCxzPSExfWZ1bmN0aW9uIG8oZSl7dmFyIHQ9MSxuPW5ldyBkKGUp
LHI9ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIiIpO3JldHVybiBuLm9ic2VydmUocix7Y2hhcmFj
dGVyRGF0YTohMH0pLGZ1bmN0aW9uKCl7dD0tdCxyLmRhdGE9dH19ZnVuY3Rpb24gaShlKXtyZXR1
cm4gZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7Y2xlYXJUaW1lb3V0KG4pLGNsZWFySW50ZXJ2YWwo
ciksZSgpfXZhciBuPXNldFRpbWVvdXQodCwwKSxyPXNldEludGVydmFsKHQsNTApfX1lLmV4cG9y
dHM9bjt2YXIgYSx1PVtdLHM9ITEsYz0wLGw9MTAyNCxwPSJ1bmRlZmluZWQiIT10eXBlb2YgdD90
OnNlbGYsZD1wLk11dGF0aW9uT2JzZXJ2ZXJ8fHAuV2ViS2l0TXV0YXRpb25PYnNlcnZlcjthPSJm
dW5jdGlvbiI9PXR5cGVvZiBkP28ocik6aShyKSxuLnJlcXVlc3RGbHVzaD1hLG4ubWFrZVJlcXVl
c3RDYWxsRnJvbVRpbWVyPWl9KS5jYWxsKHQsZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30oKSl9LGZ1
bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtpZihlJiZlLl9fZXNNb2R1
bGUpcmV0dXJuIGU7dmFyIHQ9e307aWYobnVsbCE9ZSlmb3IodmFyIG4gaW4gZSlPYmplY3QucHJv
dG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxuKSYmKHRbbl09ZVtuXSk7cmV0dXJuIHQuZGVm
YXVsdD1lLHR9T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0p
LHQuY2xlYXJDb21wbGV0ZWQ9dC5jb21wbGV0ZUFsbD10LmNvbXBsZXRlVG9kbz10LmVkaXRUb2Rv
PXQuZGVsZXRlVG9kbz10LmFkZFRvZG89dm9pZCAwO3ZhciBvPW4oODUpLGk9cihvKTt0LmFkZFRv
ZG89ZnVuY3Rpb24oZSl7cmV0dXJue3R5cGU6aS5BRERfVE9ETyx0ZXh0OmV9fSx0LmRlbGV0ZVRv
ZG89ZnVuY3Rpb24oZSl7cmV0dXJue3R5cGU6aS5ERUxFVEVfVE9ETyxpZDplfX0sdC5lZGl0VG9k
bz1mdW5jdGlvbihlLHQpe3JldHVybnt0eXBlOmkuRURJVF9UT0RPLGlkOmUsdGV4dDp0fX0sdC5j
b21wbGV0ZVRvZG89ZnVuY3Rpb24oZSl7cmV0dXJue3R5cGU6aS5DT01QTEVURV9UT0RPLGlkOmV9
fSx0LmNvbXBsZXRlQWxsPWZ1bmN0aW9uKCl7cmV0dXJue3R5cGU6aS5DT01QTEVURV9BTEx9fSx0
LmNsZWFyQ29tcGxldGVkPWZ1bmN0aW9uKCl7cmV0dXJue3R5cGU6aS5DTEVBUl9DT01QTEVURUR9
fX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3JldHVybiBlJiZl
Ll9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX1mdW5jdGlvbiBvKGUsdCl7aWYoIShlIGluc3RhbmNl
b2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0
aW9uIil9ZnVuY3Rpb24gaShlLHQpe2lmKCFlKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhp
cyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7
cmV0dXJuIXR8fCJvYmplY3QiIT10eXBlb2YgdCYmImZ1bmN0aW9uIiE9dHlwZW9mIHQ/ZTp0fWZ1
bmN0aW9uIGEoZSx0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCYmbnVsbCE9PXQpdGhyb3cgbmV3
IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVu
Y3Rpb24sIG5vdCAiK3R5cGVvZiB0KTtlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJv
dG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZSxlbnVtZXJhYmxlOiExLHdyaXRhYmxlOiEwLGNv
bmZpZ3VyYWJsZTohMH19KSx0JiYoT2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90
b3R5cGVPZihlLHQpOmUuX19wcm90b19fPXQpfWZ1bmN0aW9uIHUoZSx0LG4pe3JldHVybiB0IGlu
IGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZp
Z3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09bixlfU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0
LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgcyxjPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShl
LHQpe2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXt2YXIgcj10W25dO3IuZW51bWVyYWJsZT1y
LmVudW1lcmFibGV8fCExLHIuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiByJiYoci53cml0YWJs
ZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsci5rZXkscil9fXJldHVybiBmdW5jdGlvbih0
LG4scil7cmV0dXJuIG4mJmUodC5wcm90b3R5cGUsbiksciYmZSh0LHIpLHR9fSgpLGw9bigxMiks
cD1yKGwpLGQ9bigzMSksZj1yKGQpLGg9big4Niksdj0ocz17fSx1KHMsaC5TSE9XX0FMTCwiQWxs
IiksdShzLGguU0hPV19BQ1RJVkUsIkFjdGl2ZSIpLHUocyxoLlNIT1dfQ09NUExFVEVELCJDb21w
bGV0ZWQiKSxzKSxtPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoKXtyZXR1cm4gbyh0aGlzLHQpLGko
dGhpcywodC5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZih0KSkuYXBwbHkodGhpcyxh
cmd1bWVudHMpKX1yZXR1cm4gYSh0LGUpLGModCxbe2tleToicmVuZGVyVG9kb0NvdW50Iix2YWx1
ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMucHJvcHMuYWN0aXZlQ291bnQsdD0xPT09ZT8iaXRlbSI6
Iml0ZW1zIjtyZXR1cm4gcC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoInNwYW4iLHtjbGFzc05hbWU6
InRvZG8tY291bnQifSxwLmRlZmF1bHQuY3JlYXRlRWxlbWVudCgic3Ryb25nIixudWxsLGV8fCJO
byIpLCIgIix0LCIgbGVmdCIpfX0se2tleToicmVuZGVyRmlsdGVyTGluayIsdmFsdWU6ZnVuY3Rp
b24oZSl7dmFyIHQ9dltlXSxuPXRoaXMucHJvcHMscj1uLmZpbHRlcixvPW4ub25TaG93O3JldHVy
biBwLmRlZmF1bHQuY3JlYXRlRWxlbWVudCgiYSIse2NsYXNzTmFtZTooMCxmLmRlZmF1bHQpKHtz
ZWxlY3RlZDplPT09cn0pLHN0eWxlOntjdXJzb3I6InBvaW50ZXIifSxvbkNsaWNrOmZ1bmN0aW9u
KCl7cmV0dXJuIG8oZSl9fSx0KX19LHtrZXk6InJlbmRlckNsZWFyQnV0dG9uIix2YWx1ZTpmdW5j
dGlvbigpe3ZhciBlPXRoaXMucHJvcHMsdD1lLmNvbXBsZXRlZENvdW50LG49ZS5vbkNsZWFyQ29t
cGxldGVkO2lmKHQ+MClyZXR1cm4gcC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoImJ1dHRvbiIse2Ns
YXNzTmFtZToiY2xlYXItY29tcGxldGVkIixvbkNsaWNrOm59LCJDbGVhciBjb21wbGV0ZWQiKX19
LHtrZXk6InJlbmRlciIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzO3JldHVybiBwLmRlZmF1
bHQuY3JlYXRlRWxlbWVudCgiZm9vdGVyIix7Y2xhc3NOYW1lOiJmb290ZXIifSx0aGlzLnJlbmRl
clRvZG9Db3VudCgpLHAuZGVmYXVsdC5jcmVhdGVFbGVtZW50KCJ1bCIse2NsYXNzTmFtZToiZmls
dGVycyJ9LFtoLlNIT1dfQUxMLGguU0hPV19BQ1RJVkUsaC5TSE9XX0NPTVBMRVRFRF0ubWFwKGZ1
bmN0aW9uKHQpe3JldHVybiBwLmRlZmF1bHQuY3JlYXRlRWxlbWVudCgibGkiLHtrZXk6dH0sZS5y
ZW5kZXJGaWx0ZXJMaW5rKHQpKX0pKSx0aGlzLnJlbmRlckNsZWFyQnV0dG9uKCkpfX1dKSx0fShs
LkNvbXBvbmVudCk7bS5wcm9wVHlwZXM9e2NvbXBsZXRlZENvdW50OmwuUHJvcFR5cGVzLm51bWJl
ci5pc1JlcXVpcmVkLGFjdGl2ZUNvdW50OmwuUHJvcFR5cGVzLm51bWJlci5pc1JlcXVpcmVkLGZp
bHRlcjpsLlByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxvbkNsZWFyQ29tcGxldGVkOmwuUHJv
cFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxvblNob3c6bC5Qcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVk
fSx0LmRlZmF1bHQ9bX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUp
e3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX1mdW5jdGlvbiBvKGUsdCl7aWYo
IShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFz
cyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gaShlLHQpe2lmKCFlKXRocm93IG5ldyBSZWZlcmVu
Y2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJl
ZW4gY2FsbGVkIik7cmV0dXJuIXR8fCJvYmplY3QiIT10eXBlb2YgdCYmImZ1bmN0aW9uIiE9dHlw
ZW9mIHQ/ZTp0fWZ1bmN0aW9uIGEoZSx0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCYmbnVsbCE9
PXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBu
dWxsIG9yIGEgZnVuY3Rpb24sIG5vdCAiK3R5cGVvZiB0KTtlLnByb3RvdHlwZT1PYmplY3QuY3Jl
YXRlKHQmJnQucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZSxlbnVtZXJhYmxlOiExLHdy
aXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSx0JiYoT2JqZWN0LnNldFByb3RvdHlwZU9mP09i
amVjdC5zZXRQcm90b3R5cGVPZihlLHQpOmUuX19wcm90b19fPXQpfU9iamVjdC5kZWZpbmVQcm9w
ZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgdT1mdW5jdGlvbigpe2Z1bmN0aW9u
IGUoZSx0KXtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKyl7dmFyIHI9dFtuXTtyLmVudW1lcmFi
bGU9ci5lbnVtZXJhYmxlfHwhMSxyLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gciYmKHIud3Jp
dGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIua2V5LHIpfX1yZXR1cm4gZnVuY3Rp
b24odCxuLHIpe3JldHVybiBuJiZlKHQucHJvdG90eXBlLG4pLHImJmUodCxyKSx0fX0oKSxzPW4o
MTIpLGM9cihzKSxsPW4oODQpLHA9cihsKSxkPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoKXt2YXIg
ZSxuLHIsYTtvKHRoaXMsdCk7Zm9yKHZhciB1PWFyZ3VtZW50cy5sZW5ndGgscz1BcnJheSh1KSxj
PTA7Yzx1O2MrKylzW2NdPWFyZ3VtZW50c1tjXTtyZXR1cm4gbj1yPWkodGhpcywoZT10Ll9fcHJv
dG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKHQpKS5jYWxsLmFwcGx5KGUsW3RoaXNdLmNvbmNh
dChzKSkpLHIuaGFuZGxlU2F2ZT1mdW5jdGlvbihlKXswIT09ZS5sZW5ndGgmJnIucHJvcHMuYWRk
VG9kbyhlKX0sYT1uLGkocixhKX1yZXR1cm4gYSh0LGUpLHUodCxbe2tleToicmVuZGVyIix2YWx1
ZTpmdW5jdGlvbigpe3JldHVybiBjLmRlZmF1bHQuY3JlYXRlRWxlbWVudCgiaGVhZGVyIix7Y2xh
c3NOYW1lOiJoZWFkZXIifSxjLmRlZmF1bHQuY3JlYXRlRWxlbWVudCgiaDEiLG51bGwsInRvZG9z
IiksYy5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQocC5kZWZhdWx0LHtuZXdUb2RvOiEwLG9uU2F2ZTp0
aGlzLmhhbmRsZVNhdmUscGxhY2Vob2xkZXI6IldoYXQgbmVlZHMgdG8gYmUgZG9uZT8ifSkpfX1d
KSx0fShzLkNvbXBvbmVudCk7ZC5wcm9wVHlwZXM9e2FkZFRvZG86cy5Qcm9wVHlwZXMuZnVuYy5p
c1JlcXVpcmVkfSx0LmRlZmF1bHQ9ZH0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5j
dGlvbiByKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX1mdW5jdGlvbiBv
KGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNh
bGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gaShlLHQpe2lmKCFlKXRocm93IG5l
dyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkg
aGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIXR8fCJvYmplY3QiIT10eXBlb2YgdCYmImZ1bmN0
aW9uIiE9dHlwZW9mIHQ/ZTp0fWZ1bmN0aW9uIGEoZSx0KXtpZigiZnVuY3Rpb24iIT10eXBlb2Yg
dCYmbnVsbCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVp
dGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCAiK3R5cGVvZiB0KTtlLnByb3RvdHlwZT1P
YmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZSxlbnVtZXJh
YmxlOiExLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSx0JiYoT2JqZWN0LnNldFByb3Rv
dHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZihlLHQpOmUuX19wcm90b19fPXQpfWZ1bmN0aW9u
IHUoZSx0LG4pe3JldHVybiB0IGluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6
bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09bixlfU9i
amVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgcyxjPU9i
amVjdC5hc3NpZ258fGZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0
Kyspe3ZhciBuPWFyZ3VtZW50c1t0XTtmb3IodmFyIHIgaW4gbilPYmplY3QucHJvdG90eXBlLmhh
c093blByb3BlcnR5LmNhbGwobixyKSYmKGVbcl09bltyXSl9cmV0dXJuIGV9LGw9ZnVuY3Rpb24o
KXtmdW5jdGlvbiBlKGUsdCl7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciByPXRbbl07
ci5lbnVtZXJhYmxlPXIuZW51bWVyYWJsZXx8ITEsci5jb25maWd1cmFibGU9ITAsInZhbHVlImlu
IHImJihyLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLmtleSxyKX19cmV0
dXJuIGZ1bmN0aW9uKHQsbixyKXtyZXR1cm4gbiYmZSh0LnByb3RvdHlwZSxuKSxyJiZlKHQsciks
dH19KCkscD1uKDEyKSxkPXIocCksZj1uKDIwMiksaD1yKGYpLHY9bigxOTkpLG09cih2KSx5PW4o
ODYpLGc9KHM9e30sdShzLHkuU0hPV19BTEwsZnVuY3Rpb24oKXtyZXR1cm4hMH0pLHUocyx5LlNI
T1dfQUNUSVZFLGZ1bmN0aW9uKGUpe3JldHVybiFlLmNvbXBsZXRlZH0pLHUocyx5LlNIT1dfQ09N
UExFVEVELGZ1bmN0aW9uKGUpe3JldHVybiBlLmNvbXBsZXRlZH0pLHMpLGI9ZnVuY3Rpb24oZSl7
ZnVuY3Rpb24gdCgpe3ZhciBlLG4scixhO28odGhpcyx0KTtmb3IodmFyIHU9YXJndW1lbnRzLmxl
bmd0aCxzPUFycmF5KHUpLGM9MDtjPHU7YysrKXNbY109YXJndW1lbnRzW2NdO3JldHVybiBuPXI9
aSh0aGlzLChlPXQuX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YodCkpLmNhbGwuYXBw
bHkoZSxbdGhpc10uY29uY2F0KHMpKSksci5zdGF0ZT17ZmlsdGVyOnkuU0hPV19BTEx9LHIuaGFu
ZGxlQ2xlYXJDb21wbGV0ZWQ9ZnVuY3Rpb24oKXtyLnByb3BzLmFjdGlvbnMuY2xlYXJDb21wbGV0
ZWQoKX0sci5oYW5kbGVTaG93PWZ1bmN0aW9uKGUpe3Iuc2V0U3RhdGUoe2ZpbHRlcjplfSl9LGE9
bixpKHIsYSl9cmV0dXJuIGEodCxlKSxsKHQsW3trZXk6InJlbmRlclRvZ2dsZUFsbCIsdmFsdWU6
ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5wcm9wcyxuPXQudG9kb3Mscj10LmFjdGlvbnM7aWYobi5s
ZW5ndGg+MClyZXR1cm4gZC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoImlucHV0Iix7Y2xhc3NOYW1l
OiJ0b2dnbGUtYWxsIix0eXBlOiJjaGVja2JveCIsY2hlY2tlZDplPT09bi5sZW5ndGgsb25DaGFu
Z2U6ci5jb21wbGV0ZUFsbH0pfX0se2tleToicmVuZGVyRm9vdGVyIix2YWx1ZTpmdW5jdGlvbihl
KXt2YXIgdD10aGlzLnByb3BzLnRvZG9zLG49dGhpcy5zdGF0ZS5maWx0ZXIscj10Lmxlbmd0aC1l
O2lmKHQubGVuZ3RoKXJldHVybiBkLmRlZmF1bHQuY3JlYXRlRWxlbWVudChtLmRlZmF1bHQse2Nv
bXBsZXRlZENvdW50OmUsYWN0aXZlQ291bnQ6cixmaWx0ZXI6bixvbkNsZWFyQ29tcGxldGVkOnRo
aXMuaGFuZGxlQ2xlYXJDb21wbGV0ZWQuYmluZCh0aGlzKSxvblNob3c6dGhpcy5oYW5kbGVTaG93
LmJpbmQodGhpcyl9KX19LHtrZXk6InJlbmRlciIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlz
LnByb3BzLHQ9ZS50b2RvcyxuPWUuYWN0aW9ucyxyPXRoaXMuc3RhdGUuZmlsdGVyLG89dC5maWx0
ZXIoZ1tyXSksaT10LnJlZHVjZShmdW5jdGlvbihlLHQpe3JldHVybiB0LmNvbXBsZXRlZD9lKzE6
ZX0sMCk7cmV0dXJuIGQuZGVmYXVsdC5jcmVhdGVFbGVtZW50KCJzZWN0aW9uIix7Y2xhc3NOYW1l
OiJtYWluIn0sdGhpcy5yZW5kZXJUb2dnbGVBbGwoaSksZC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQo
InVsIix7Y2xhc3NOYW1lOiJ0b2RvLWxpc3QifSxvLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gZC5k
ZWZhdWx0LmNyZWF0ZUVsZW1lbnQoaC5kZWZhdWx0LGMoe2tleTplLmlkLHRvZG86ZX0sbikpfSkp
LHRoaXMucmVuZGVyRm9vdGVyKGkpKX19XSksdH0ocC5Db21wb25lbnQpO2IucHJvcFR5cGVzPXt0
b2RvczpwLlByb3BUeXBlcy5hcnJheS5pc1JlcXVpcmVkLGFjdGlvbnM6cC5Qcm9wVHlwZXMub2Jq
ZWN0LmlzUmVxdWlyZWR9LHQuZGVmYXVsdD1ifSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3Qi
O2Z1bmN0aW9uIHIoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fWZ1bmN0
aW9uIG8oZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5u
b3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1mdW5jdGlvbiBpKGUsdCl7aWYoIWUpdGhy
b3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3Vw
ZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4hdHx8Im9iamVjdCIhPXR5cGVvZiB0JiYi
ZnVuY3Rpb24iIT10eXBlb2YgdD9lOnR9ZnVuY3Rpb24gYShlLHQpe2lmKCJmdW5jdGlvbiIhPXR5
cGVvZiB0JiZudWxsIT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11
c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90ICIrdHlwZW9mIHQpO2UucHJvdG90
eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTplLGVu
dW1lcmFibGU6ITEsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLHQmJihPYmplY3Quc2V0
UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mKGUsdCk6ZS5fX3Byb3RvX189dCl9T2Jq
ZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciB1PWZ1bmN0
aW9uKCl7ZnVuY3Rpb24gZShlLHQpe2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXt2YXIgcj10
W25dO3IuZW51bWVyYWJsZT1yLmVudW1lcmFibGV8fCExLHIuY29uZmlndXJhYmxlPSEwLCJ2YWx1
ZSJpbiByJiYoci53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsci5rZXkscil9
fXJldHVybiBmdW5jdGlvbih0LG4scil7cmV0dXJuIG4mJmUodC5wcm90b3R5cGUsbiksciYmZSh0
LHIpLHR9fSgpLHM9bigxMiksYz1yKHMpLGw9bigzMSkscD1yKGwpLGQ9big4NCksZj1yKGQpLGg9
ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCgpe3ZhciBlLG4scixhO28odGhpcyx0KTtmb3IodmFyIHU9
YXJndW1lbnRzLmxlbmd0aCxzPUFycmF5KHUpLGM9MDtjPHU7YysrKXNbY109YXJndW1lbnRzW2Nd
O3JldHVybiBuPXI9aSh0aGlzLChlPXQuX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2Yo
dCkpLmNhbGwuYXBwbHkoZSxbdGhpc10uY29uY2F0KHMpKSksci5zdGF0ZT17ZWRpdGluZzohMX0s
ci5oYW5kbGVEb3VibGVDbGljaz1mdW5jdGlvbigpe3Iuc2V0U3RhdGUoe2VkaXRpbmc6ITB9KX0s
ci5oYW5kbGVTYXZlPWZ1bmN0aW9uKGUsdCl7MD09PXQubGVuZ3RoP3IucHJvcHMuZGVsZXRlVG9k
byhlKTpyLnByb3BzLmVkaXRUb2RvKGUsdCksci5zZXRTdGF0ZSh7ZWRpdGluZzohMX0pfSxhPW4s
aShyLGEpfXJldHVybiBhKHQsZSksdSh0LFt7a2V5OiJyZW5kZXIiLHZhbHVlOmZ1bmN0aW9uKCl7
dmFyIGU9dGhpcyx0PXRoaXMucHJvcHMsbj10LnRvZG8scj10LmNvbXBsZXRlVG9kbyxvPXQuZGVs
ZXRlVG9kbyxpPXZvaWQgMDtyZXR1cm4gaT10aGlzLnN0YXRlLmVkaXRpbmc/Yy5kZWZhdWx0LmNy
ZWF0ZUVsZW1lbnQoZi5kZWZhdWx0LHt0ZXh0Om4udGV4dCxlZGl0aW5nOnRoaXMuc3RhdGUuZWRp
dGluZyxvblNhdmU6ZnVuY3Rpb24odCl7cmV0dXJuIGUuaGFuZGxlU2F2ZShuLmlkLHQpfX0pOmMu
ZGVmYXVsdC5jcmVhdGVFbGVtZW50KCJkaXYiLHtjbGFzc05hbWU6InZpZXcifSxjLmRlZmF1bHQu
Y3JlYXRlRWxlbWVudCgiaW5wdXQiLHtjbGFzc05hbWU6InRvZ2dsZSIsdHlwZToiY2hlY2tib3gi
LGNoZWNrZWQ6bi5jb21wbGV0ZWQsb25DaGFuZ2U6ZnVuY3Rpb24oKXtyZXR1cm4gcihuLmlkKX19
KSxjLmRlZmF1bHQuY3JlYXRlRWxlbWVudCgibGFiZWwiLHtvbkRvdWJsZUNsaWNrOnRoaXMuaGFu
ZGxlRG91YmxlQ2xpY2t9LG4udGV4dCksYy5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoImJ1dHRvbiIs
e2NsYXNzTmFtZToiZGVzdHJveSIsb25DbGljazpmdW5jdGlvbigpe3JldHVybiBvKG4uaWQpfX0p
KSxjLmRlZmF1bHQuY3JlYXRlRWxlbWVudCgibGkiLHtjbGFzc05hbWU6KDAscC5kZWZhdWx0KSh7
Y29tcGxldGVkOm4uY29tcGxldGVkLGVkaXRpbmc6dGhpcy5zdGF0ZS5lZGl0aW5nfSl9LGkpfX1d
KSx0fShzLkNvbXBvbmVudCk7aC5wcm9wVHlwZXM9e3RvZG86cy5Qcm9wVHlwZXMub2JqZWN0Lmlz
UmVxdWlyZWQsZWRpdFRvZG86cy5Qcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLGRlbGV0ZVRvZG86
cy5Qcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLGNvbXBsZXRlVG9kbzpzLlByb3BUeXBlcy5mdW5j
LmlzUmVxdWlyZWR9LHQuZGVmYXVsdD1ofSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1
bmN0aW9uIHIoZSl7aWYoZSYmZS5fX2VzTW9kdWxlKXJldHVybiBlO3ZhciB0PXt9O2lmKG51bGwh
PWUpZm9yKHZhciBuIGluIGUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUs
bikmJih0W25dPWVbbl0pO3JldHVybiB0LmRlZmF1bHQ9ZSx0fWZ1bmN0aW9uIG8oZSl7cmV0dXJu
IGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJf
X2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgaT1uKDEyKSxhPW8oaSksdT1uKDMwKSxzPW4oODEp
LGM9bigyMDApLGw9byhjKSxwPW4oMjAxKSxkPW8ocCksZj1uKDE5OCksaD1yKGYpLHY9ZnVuY3Rp
b24oZSl7dmFyIHQ9ZS50b2RvcyxuPWUuYWN0aW9ucztyZXR1cm4gYS5kZWZhdWx0LmNyZWF0ZUVs
ZW1lbnQoImRpdiIsbnVsbCxhLmRlZmF1bHQuY3JlYXRlRWxlbWVudChsLmRlZmF1bHQse2FkZFRv
ZG86bi5hZGRUb2RvfSksYS5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoZC5kZWZhdWx0LHt0b2Rvczp0
LGFjdGlvbnM6bn0pKX07di5wcm9wVHlwZXM9e3RvZG9zOmkuUHJvcFR5cGVzLmFycmF5LmlzUmVx
dWlyZWQsYWN0aW9uczppLlByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZH07dmFyIG09ZnVuY3Rp
b24oZSl7cmV0dXJue3RvZG9zOmUudG9kb3N9fSx5PWZ1bmN0aW9uKGUpe3JldHVybnthY3Rpb25z
OigwLHUuYmluZEFjdGlvbkNyZWF0b3JzKShoLGUpfX07dC5kZWZhdWx0PSgwLHMuY29ubmVjdCko
bSx5KSh2KX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3JldHVy
biBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX12YXIgbz1uKDEyKSxpPXIobyksYT1uKDEy
MyksdT1uKDMwKSxzPW4oODEpLGM9bigyMDMpLGw9cihjKSxwPW4oMjA1KSxkPXIocCk7bigyMDcp
O3ZhciBmPSgwLHUuY3JlYXRlU3RvcmUpKGQuZGVmYXVsdCk7KDAsYS5yZW5kZXIpKGkuZGVmYXVs
dC5jcmVhdGVFbGVtZW50KHMuUHJvdmlkZXIse3N0b3JlOmZ9LGkuZGVmYXVsdC5jcmVhdGVFbGVt
ZW50KGwuZGVmYXVsdCxudWxsKSksZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJvb3QiKSl9LGZ1
bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1cm4gZSYmZS5fX2Vz
TW9kdWxlP2U6e2RlZmF1bHQ6ZX19T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUi
LHt2YWx1ZTohMH0pO3ZhciBvPW4oMzApLGk9bigyMDYpLGE9cihpKSx1PSgwLG8uY29tYmluZVJl
ZHVjZXJzKSh7dG9kb3M6YS5kZWZhdWx0fSk7dC5kZWZhdWx0PXV9LGZ1bmN0aW9uKGUsdCxuKXsi
dXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtpZihBcnJheS5pc0FycmF5KGUpKXtmb3IodmFyIHQ9
MCxuPUFycmF5KGUubGVuZ3RoKTt0PGUubGVuZ3RoO3QrKyluW3RdPWVbdF07cmV0dXJuIG59cmV0
dXJuIEFycmF5LmZyb20oZSl9ZnVuY3Rpb24gbygpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg8PTB8
fHZvaWQgMD09PWFyZ3VtZW50c1swXT9zOmFyZ3VtZW50c1swXSx0PWFyZ3VtZW50c1sxXSxuPWZ1
bmN0aW9uKCl7c3dpdGNoKHQudHlwZSl7Y2FzZSB1LkFERF9UT0RPOnJldHVybnt2OltdLmNvbmNh
dChyKGUpLFt7aWQ6ZS5yZWR1Y2UoZnVuY3Rpb24oZSx0KXtyZXR1cm4gTWF0aC5tYXgodC5pZCxl
KX0sLTEpKzEsY29tcGxldGVkOiExLHRleHQ6dC50ZXh0fV0pfTtjYXNlIHUuREVMRVRFX1RPRE86
cmV0dXJue3Y6ZS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIGUuaWQhPT10LmlkfSl9O2Nhc2Ug
dS5FRElUX1RPRE86cmV0dXJue3Y6ZS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIGUuaWQ9PT10Lmlk
P2Eoe30sZSx7dGV4dDp0LnRleHR9KTplfSl9O2Nhc2UgdS5DT01QTEVURV9UT0RPOnJldHVybnt2
OmUubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBlLmlkPT09dC5pZD9hKHt9LGUse2NvbXBsZXRlZDoh
ZS5jb21wbGV0ZWR9KTplfSl9O2Nhc2UgdS5DT01QTEVURV9BTEw6dmFyIG49ZS5ldmVyeShmdW5j
dGlvbihlKXtyZXR1cm4gZS5jb21wbGV0ZWR9KTtyZXR1cm57djplLm1hcChmdW5jdGlvbihlKXty
ZXR1cm4gYSh7fSxlLHtjb21wbGV0ZWQ6IW59KX0pfTtjYXNlIHUuQ0xFQVJfQ09NUExFVEVEOnJl
dHVybnt2OmUuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBlLmNvbXBsZXRlZD09PSExfSl9O2Rl
ZmF1bHQ6cmV0dXJue3Y6ZX19fSgpO2lmKCJvYmplY3QiPT09KCJ1bmRlZmluZWQiPT10eXBlb2Yg
bj8idW5kZWZpbmVkIjppKG4pKSlyZXR1cm4gbi52fU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJf
X2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgaT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYi
c3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9m
IGV9OmZ1bmN0aW9uKGUpe3JldHVybiBlJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZlLmNv
bnN0cnVjdG9yPT09U3ltYm9sPyJzeW1ib2wiOnR5cGVvZiBlfSxhPU9iamVjdC5hc3NpZ258fGZ1
bmN0aW9uKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPWFyZ3Vt
ZW50c1t0XTtmb3IodmFyIHIgaW4gbilPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNh
bGwobixyKSYmKGVbcl09bltyXSl9cmV0dXJuIGV9O3QuZGVmYXVsdD1vO3ZhciB1PW4oODUpLHM9
W119LGZ1bmN0aW9uKGUsdCl7fSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBu
KGUpe2lmKG51bGw9PT1lfHx2b2lkIDA9PT1lKXRocm93IG5ldyBUeXBlRXJyb3IoIk9iamVjdC5h
c3NpZ24gY2Fubm90IGJlIGNhbGxlZCB3aXRoIG51bGwgb3IgdW5kZWZpbmVkIik7cmV0dXJuIE9i
amVjdChlKX1mdW5jdGlvbiByKCl7dHJ5e2lmKCFPYmplY3QuYXNzaWduKXJldHVybiExO3ZhciBl
PW5ldyBTdHJpbmcoImFiYyIpO2lmKGVbNV09ImRlIiwiNSI9PT1PYmplY3QuZ2V0T3duUHJvcGVy
dHlOYW1lcyhlKVswXSlyZXR1cm4hMTtmb3IodmFyIHQ9e30sbj0wO248MTA7bisrKXRbIl8iK1N0
cmluZy5mcm9tQ2hhckNvZGUobildPW47dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMo
dCkubWFwKGZ1bmN0aW9uKGUpe3JldHVybiB0W2VdfSk7aWYoIjAxMjM0NTY3ODkiIT09ci5qb2lu
KCIiKSlyZXR1cm4hMTt2YXIgbz17fTtyZXR1cm4iYWJjZGVmZ2hpamtsbW5vcHFyc3QiLnNwbGl0
KCIiKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe29bZV09ZX0pLCJhYmNkZWZnaGlqa2xtbm9wcXJzdCI9
PT1PYmplY3Qua2V5cyhPYmplY3QuYXNzaWduKHt9LG8pKS5qb2luKCIiKX1jYXRjaChpKXtyZXR1
cm4hMX19dmFyIG89T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxpPU9iamVjdC5wcm90
b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGU7ZS5leHBvcnRzPXIoKT9PYmplY3QuYXNzaWduOmZ1
bmN0aW9uKGUsdCl7Zm9yKHZhciByLGEsdT1uKGUpLHM9MTtzPGFyZ3VtZW50cy5sZW5ndGg7cysr
KXtyPU9iamVjdChhcmd1bWVudHNbc10pO2Zvcih2YXIgYyBpbiByKW8uY2FsbChyLGMpJiYodVtj
XT1yW2NdKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXthPU9iamVjdC5nZXRPd25Q
cm9wZXJ0eVN5bWJvbHMocik7Zm9yKHZhciBsPTA7bDxhLmxlbmd0aDtsKyspaS5jYWxsKHIsYVts
XSkmJih1W2FbbF1dPXJbYVtsXV0pfX1yZXR1cm4gdX19LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0
cmljdCI7ZnVuY3Rpb24gcihlKXt2YXIgdD1uZXcgbyhvLl82MSk7cmV0dXJuIHQuXzgxPTEsdC5f
NjU9ZSx0fXZhciBvPW4oODgpO2UuZXhwb3J0cz1vO3ZhciBpPXIoITApLGE9cighMSksdT1yKG51
bGwpLHM9cih2b2lkIDApLGM9cigwKSxsPXIoIiIpO28ucmVzb2x2ZT1mdW5jdGlvbihlKXtpZihl
IGluc3RhbmNlb2YgbylyZXR1cm4gZTtpZihudWxsPT09ZSlyZXR1cm4gdTtpZih2b2lkIDA9PT1l
KXJldHVybiBzO2lmKGU9PT0hMClyZXR1cm4gaTtpZihlPT09ITEpcmV0dXJuIGE7aWYoMD09PWUp
cmV0dXJuIGM7aWYoIiI9PT1lKXJldHVybiBsO2lmKCJvYmplY3QiPT10eXBlb2YgZXx8ImZ1bmN0
aW9uIj09dHlwZW9mIGUpdHJ5e3ZhciB0PWUudGhlbjtpZigiZnVuY3Rpb24iPT10eXBlb2YgdCly
ZXR1cm4gbmV3IG8odC5iaW5kKGUpKX1jYXRjaChuKXtyZXR1cm4gbmV3IG8oZnVuY3Rpb24oZSx0
KXt0KG4pfSl9cmV0dXJuIHIoZSl9LG8uYWxsPWZ1bmN0aW9uKGUpe3ZhciB0PUFycmF5LnByb3Rv
dHlwZS5zbGljZS5jYWxsKGUpO3JldHVybiBuZXcgbyhmdW5jdGlvbihlLG4pe2Z1bmN0aW9uIHIo
YSx1KXtpZih1JiYoIm9iamVjdCI9PXR5cGVvZiB1fHwiZnVuY3Rpb24iPT10eXBlb2YgdSkpe2lm
KHUgaW5zdGFuY2VvZiBvJiZ1LnRoZW49PT1vLnByb3RvdHlwZS50aGVuKXtmb3IoOzM9PT11Ll84
MTspdT11Ll82NTtyZXR1cm4gMT09PXUuXzgxP3IoYSx1Ll82NSk6KDI9PT11Ll84MSYmbih1Ll82
NSksdm9pZCB1LnRoZW4oZnVuY3Rpb24oZSl7cihhLGUpfSxuKSl9dmFyIHM9dS50aGVuO2lmKCJm
dW5jdGlvbiI9PXR5cGVvZiBzKXt2YXIgYz1uZXcgbyhzLmJpbmQodSkpO3JldHVybiB2b2lkIGMu
dGhlbihmdW5jdGlvbihlKXtyKGEsZSl9LG4pfX10W2FdPXUsMD09PS0taSYmZSh0KX1pZigwPT09
dC5sZW5ndGgpcmV0dXJuIGUoW10pO2Zvcih2YXIgaT10Lmxlbmd0aCxhPTA7YTx0Lmxlbmd0aDth
KyspcihhLHRbYV0pfSl9LG8ucmVqZWN0PWZ1bmN0aW9uKGUpe3JldHVybiBuZXcgbyhmdW5jdGlv
bih0LG4pe24oZSl9KX0sby5yYWNlPWZ1bmN0aW9uKGUpe3JldHVybiBuZXcgbyhmdW5jdGlvbih0
LG4pe2UuZm9yRWFjaChmdW5jdGlvbihlKXtvLnJlc29sdmUoZSkudGhlbih0LG4pfSl9KX0sby5w
cm90b3R5cGUuY2F0Y2g9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMudGhlbihudWxsLGUpfX0sZnVu
Y3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKCl7Yz0hMSx1Ll8xMD1udWxsLHUu
Xzk3PW51bGx9ZnVuY3Rpb24gbyhlKXtmdW5jdGlvbiB0KHQpeyhlLmFsbFJlamVjdGlvbnN8fGEo
cFt0XS5lcnJvcixlLndoaXRlbGlzdHx8cykpJiYocFt0XS5kaXNwbGF5SWQ9bCsrLGUub25Vbmhh
bmRsZWQ/KHBbdF0ubG9nZ2VkPSEwLGUub25VbmhhbmRsZWQocFt0XS5kaXNwbGF5SWQscFt0XS5l
cnJvcikpOihwW3RdLmxvZ2dlZD0hMCxpKHBbdF0uZGlzcGxheUlkLHBbdF0uZXJyb3IpKSl9ZnVu
Y3Rpb24gbih0KXtwW3RdLmxvZ2dlZCYmKGUub25IYW5kbGVkP2Uub25IYW5kbGVkKHBbdF0uZGlz
cGxheUlkLHBbdF0uZXJyb3IpOnBbdF0ub25VbmhhbmRsZWR8fChjb25zb2xlLndhcm4oIlByb21p
c2UgUmVqZWN0aW9uIEhhbmRsZWQgKGlkOiAiK3BbdF0uZGlzcGxheUlkKyIpOiIpLGNvbnNvbGUu
d2FybignICBUaGlzIG1lYW5zIHlvdSBjYW4gaWdub3JlIGFueSBwcmV2aW91cyBtZXNzYWdlcyBv
ZiB0aGUgZm9ybSAiUG9zc2libGUgVW5oYW5kbGVkIFByb21pc2UgUmVqZWN0aW9uIiB3aXRoIGlk
ICcrcFt0XS5kaXNwbGF5SWQrIi4iKSkpfWU9ZXx8e30sYyYmcigpLGM9ITA7dmFyIG89MCxsPTAs
cD17fTt1Ll8xMD1mdW5jdGlvbihlKXsyPT09ZS5fODEmJnBbZS5fNzJdJiYocFtlLl83Ml0ubG9n
Z2VkP24oZS5fNzIpOmNsZWFyVGltZW91dChwW2UuXzcyXS50aW1lb3V0KSxkZWxldGUgcFtlLl83
Ml0pfSx1Ll85Nz1mdW5jdGlvbihlLG4pezA9PT1lLl80NSYmKGUuXzcyPW8rKyxwW2UuXzcyXT17
ZGlzcGxheUlkOm51bGwsZXJyb3I6bix0aW1lb3V0OnNldFRpbWVvdXQodC5iaW5kKG51bGwsZS5f
NzIpLGEobixzKT8xMDA6MmUzKSxsb2dnZWQ6ITF9KX19ZnVuY3Rpb24gaShlLHQpe2NvbnNvbGUu
d2FybigiUG9zc2libGUgVW5oYW5kbGVkIFByb21pc2UgUmVqZWN0aW9uIChpZDogIitlKyIpOiIp
O3ZhciBuPSh0JiYodC5zdGFja3x8dCkpKyIiO24uc3BsaXQoIlxuIikuZm9yRWFjaChmdW5jdGlv
bihlKXtjb25zb2xlLndhcm4oIiAgIitlKX0pfWZ1bmN0aW9uIGEoZSx0KXtyZXR1cm4gdC5zb21l
KGZ1bmN0aW9uKHQpe3JldHVybiBlIGluc3RhbmNlb2YgdH0pfXZhciB1PW4oODgpLHM9W1JlZmVy
ZW5jZUVycm9yLFR5cGVFcnJvcixSYW5nZUVycm9yXSxjPSExO3QuZGlzYWJsZT1yLHQuZW5hYmxl
PW99LGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiBlLndlYnBhY2tQ
b2x5ZmlsbHx8KGUuZGVwcmVjYXRlPWZ1bmN0aW9uKCl7fSxlLnBhdGhzPVtdLGUuY2hpbGRyZW49
W10sZS53ZWJwYWNrUG9seWZpbGw9MSksZX19LGZ1bmN0aW9uKGUsdCl7IWZ1bmN0aW9uKGUpeyJ1
c2Ugc3RyaWN0IjtmdW5jdGlvbiB0KGUpe2lmKCJzdHJpbmciIT10eXBlb2YgZSYmKGU9U3RyaW5n
KGUpKSwvW15hLXowLTlcLSMkJSYnKisuXF5fYHx+XS9pLnRlc3QoZSkpdGhyb3cgbmV3IFR5cGVF
cnJvcigiSW52YWxpZCBjaGFyYWN0ZXIgaW4gaGVhZGVyIGZpZWxkIG5hbWUiKTtyZXR1cm4gZS50
b0xvd2VyQ2FzZSgpfWZ1bmN0aW9uIG4oZSl7cmV0dXJuInN0cmluZyIhPXR5cGVvZiBlJiYoZT1T
dHJpbmcoZSkpLGV9ZnVuY3Rpb24gcihlKXt2YXIgdD17bmV4dDpmdW5jdGlvbigpe3ZhciB0PWUu
c2hpZnQoKTtyZXR1cm57ZG9uZTp2b2lkIDA9PT10LHZhbHVlOnR9fX07cmV0dXJuIHYuaXRlcmFi
bGUmJih0W1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdH0pLHR9ZnVuY3Rpb24g
byhlKXt0aGlzLm1hcD17fSxlIGluc3RhbmNlb2Ygbz9lLmZvckVhY2goZnVuY3Rpb24oZSx0KXt0
aGlzLmFwcGVuZCh0LGUpfSx0aGlzKTplJiZPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhlKS5m
b3JFYWNoKGZ1bmN0aW9uKHQpe3RoaXMuYXBwZW5kKHQsZVt0XSl9LHRoaXMpfWZ1bmN0aW9uIGko
ZSl7cmV0dXJuIGUuYm9keVVzZWQ/UHJvbWlzZS5yZWplY3QobmV3IFR5cGVFcnJvcigiQWxyZWFk
eSByZWFkIikpOnZvaWQoZS5ib2R5VXNlZD0hMCl9ZnVuY3Rpb24gYShlKXtyZXR1cm4gbmV3IFBy
b21pc2UoZnVuY3Rpb24odCxuKXtlLm9ubG9hZD1mdW5jdGlvbigpe3QoZS5yZXN1bHQpfSxlLm9u
ZXJyb3I9ZnVuY3Rpb24oKXtuKGUuZXJyb3IpfX0pfWZ1bmN0aW9uIHUoZSl7dmFyIHQ9bmV3IEZp
bGVSZWFkZXI7cmV0dXJuIHQucmVhZEFzQXJyYXlCdWZmZXIoZSksYSh0KX1mdW5jdGlvbiBzKGUp
e3ZhciB0PW5ldyBGaWxlUmVhZGVyO3JldHVybiB0LnJlYWRBc1RleHQoZSksYSh0KX1mdW5jdGlv
biBjKCl7cmV0dXJuIHRoaXMuYm9keVVzZWQ9ITEsdGhpcy5faW5pdEJvZHk9ZnVuY3Rpb24oZSl7
aWYodGhpcy5fYm9keUluaXQ9ZSwic3RyaW5nIj09dHlwZW9mIGUpdGhpcy5fYm9keVRleHQ9ZTtl
bHNlIGlmKHYuYmxvYiYmQmxvYi5wcm90b3R5cGUuaXNQcm90b3R5cGVPZihlKSl0aGlzLl9ib2R5
QmxvYj1lO2Vsc2UgaWYodi5mb3JtRGF0YSYmRm9ybURhdGEucHJvdG90eXBlLmlzUHJvdG90eXBl
T2YoZSkpdGhpcy5fYm9keUZvcm1EYXRhPWU7ZWxzZSBpZih2LnNlYXJjaFBhcmFtcyYmVVJMU2Vh
cmNoUGFyYW1zLnByb3RvdHlwZS5pc1Byb3RvdHlwZU9mKGUpKXRoaXMuX2JvZHlUZXh0PWUudG9T
dHJpbmcoKTtlbHNlIGlmKGUpe2lmKCF2LmFycmF5QnVmZmVyfHwhQXJyYXlCdWZmZXIucHJvdG90
eXBlLmlzUHJvdG90eXBlT2YoZSkpdGhyb3cgbmV3IEVycm9yKCJ1bnN1cHBvcnRlZCBCb2R5SW5p
dCB0eXBlIil9ZWxzZSB0aGlzLl9ib2R5VGV4dD0iIjt0aGlzLmhlYWRlcnMuZ2V0KCJjb250ZW50
LXR5cGUiKXx8KCJzdHJpbmciPT10eXBlb2YgZT90aGlzLmhlYWRlcnMuc2V0KCJjb250ZW50LXR5
cGUiLCJ0ZXh0L3BsYWluO2NoYXJzZXQ9VVRGLTgiKTp0aGlzLl9ib2R5QmxvYiYmdGhpcy5fYm9k
eUJsb2IudHlwZT90aGlzLmhlYWRlcnMuc2V0KCJjb250ZW50LXR5cGUiLHRoaXMuX2JvZHlCbG9i
LnR5cGUpOnYuc2VhcmNoUGFyYW1zJiZVUkxTZWFyY2hQYXJhbXMucHJvdG90eXBlLmlzUHJvdG90
eXBlT2YoZSkmJnRoaXMuaGVhZGVycy5zZXQoImNvbnRlbnQtdHlwZSIsImFwcGxpY2F0aW9uL3gt
d3d3LWZvcm0tdXJsZW5jb2RlZDtjaGFyc2V0PVVURi04IikpfSx2LmJsb2I/KHRoaXMuYmxvYj1m
dW5jdGlvbigpe3ZhciBlPWkodGhpcyk7aWYoZSlyZXR1cm4gZTtpZih0aGlzLl9ib2R5QmxvYily
ZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRoaXMuX2JvZHlCbG9iKTtpZih0aGlzLl9ib2R5Rm9ybURh
dGEpdGhyb3cgbmV3IEVycm9yKCJjb3VsZCBub3QgcmVhZCBGb3JtRGF0YSBib2R5IGFzIGJsb2Ii
KTtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKG5ldyBCbG9iKFt0aGlzLl9ib2R5VGV4dF0pKX0sdGhp
cy5hcnJheUJ1ZmZlcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmJsb2IoKS50aGVuKHUpfSx0aGlz
LnRleHQ9ZnVuY3Rpb24oKXt2YXIgZT1pKHRoaXMpO2lmKGUpcmV0dXJuIGU7aWYodGhpcy5fYm9k
eUJsb2IpcmV0dXJuIHModGhpcy5fYm9keUJsb2IpO2lmKHRoaXMuX2JvZHlGb3JtRGF0YSl0aHJv
dyBuZXcgRXJyb3IoImNvdWxkIG5vdCByZWFkIEZvcm1EYXRhIGJvZHkgYXMgdGV4dCIpO3JldHVy
biBQcm9taXNlLnJlc29sdmUodGhpcy5fYm9keVRleHQpfSk6dGhpcy50ZXh0PWZ1bmN0aW9uKCl7
dmFyIGU9aSh0aGlzKTtyZXR1cm4gZT9lOlByb21pc2UucmVzb2x2ZSh0aGlzLl9ib2R5VGV4dCl9
LHYuZm9ybURhdGEmJih0aGlzLmZvcm1EYXRhPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudGV4dCgp
LnRoZW4oZCl9KSx0aGlzLmpzb249ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50ZXh0KCkudGhlbihK
U09OLnBhcnNlKX0sdGhpc31mdW5jdGlvbiBsKGUpe3ZhciB0PWUudG9VcHBlckNhc2UoKTtyZXR1
cm4gbS5pbmRleE9mKHQpPi0xP3Q6ZX1mdW5jdGlvbiBwKGUsdCl7dD10fHx7fTt2YXIgbj10LmJv
ZHk7aWYocC5wcm90b3R5cGUuaXNQcm90b3R5cGVPZihlKSl7aWYoZS5ib2R5VXNlZCl0aHJvdyBu
ZXcgVHlwZUVycm9yKCJBbHJlYWR5IHJlYWQiKTt0aGlzLnVybD1lLnVybCx0aGlzLmNyZWRlbnRp
YWxzPWUuY3JlZGVudGlhbHMsdC5oZWFkZXJzfHwodGhpcy5oZWFkZXJzPW5ldyBvKGUuaGVhZGVy
cykpLHRoaXMubWV0aG9kPWUubWV0aG9kLHRoaXMubW9kZT1lLm1vZGUsbnx8KG49ZS5fYm9keUlu
aXQsZS5ib2R5VXNlZD0hMCl9ZWxzZSB0aGlzLnVybD1lO2lmKHRoaXMuY3JlZGVudGlhbHM9dC5j
cmVkZW50aWFsc3x8dGhpcy5jcmVkZW50aWFsc3x8Im9taXQiLCF0LmhlYWRlcnMmJnRoaXMuaGVh
ZGVyc3x8KHRoaXMuaGVhZGVycz1uZXcgbyh0LmhlYWRlcnMpKSx0aGlzLm1ldGhvZD1sKHQubWV0
aG9kfHx0aGlzLm1ldGhvZHx8IkdFVCIpLHRoaXMubW9kZT10Lm1vZGV8fHRoaXMubW9kZXx8bnVs
bCx0aGlzLnJlZmVycmVyPW51bGwsKCJHRVQiPT09dGhpcy5tZXRob2R8fCJIRUFEIj09PXRoaXMu
bWV0aG9kKSYmbil0aHJvdyBuZXcgVHlwZUVycm9yKCJCb2R5IG5vdCBhbGxvd2VkIGZvciBHRVQg
b3IgSEVBRCByZXF1ZXN0cyIpO3RoaXMuX2luaXRCb2R5KG4pfWZ1bmN0aW9uIGQoZSl7dmFyIHQ9
bmV3IEZvcm1EYXRhO3JldHVybiBlLnRyaW0oKS5zcGxpdCgiJiIpLmZvckVhY2goZnVuY3Rpb24o
ZSl7aWYoZSl7dmFyIG49ZS5zcGxpdCgiPSIpLHI9bi5zaGlmdCgpLnJlcGxhY2UoL1wrL2csIiAi
KSxvPW4uam9pbigiPSIpLnJlcGxhY2UoL1wrL2csIiAiKTt0LmFwcGVuZChkZWNvZGVVUklDb21w
b25lbnQociksZGVjb2RlVVJJQ29tcG9uZW50KG8pKX19KSx0fWZ1bmN0aW9uIGYoZSl7dmFyIHQ9
bmV3IG8sbj0oZS5nZXRBbGxSZXNwb25zZUhlYWRlcnMoKXx8IiIpLnRyaW0oKS5zcGxpdCgiXG4i
KTtyZXR1cm4gbi5mb3JFYWNoKGZ1bmN0aW9uKGUpe3ZhciBuPWUudHJpbSgpLnNwbGl0KCI6Iiks
cj1uLnNoaWZ0KCkudHJpbSgpLG89bi5qb2luKCI6IikudHJpbSgpO3QuYXBwZW5kKHIsbyl9KSx0
fWZ1bmN0aW9uIGgoZSx0KXt0fHwodD17fSksdGhpcy50eXBlPSJkZWZhdWx0Iix0aGlzLnN0YXR1
cz10LnN0YXR1cyx0aGlzLm9rPXRoaXMuc3RhdHVzPj0yMDAmJnRoaXMuc3RhdHVzPDMwMCx0aGlz
LnN0YXR1c1RleHQ9dC5zdGF0dXNUZXh0LHRoaXMuaGVhZGVycz10LmhlYWRlcnMgaW5zdGFuY2Vv
ZiBvP3QuaGVhZGVyczpuZXcgbyh0LmhlYWRlcnMpLHRoaXMudXJsPXQudXJsfHwiIix0aGlzLl9p
bml0Qm9keShlKX1pZighZS5mZXRjaCl7dmFyIHY9e3NlYXJjaFBhcmFtczoiVVJMU2VhcmNoUGFy
YW1zImluIGUsaXRlcmFibGU6IlN5bWJvbCJpbiBlJiYiaXRlcmF0b3IiaW4gU3ltYm9sLGJsb2I6
IkZpbGVSZWFkZXIiaW4gZSYmIkJsb2IiaW4gZSYmZnVuY3Rpb24oKXt0cnl7cmV0dXJuIG5ldyBC
bG9iLCEwfWNhdGNoKGUpe3JldHVybiExfX0oKSxmb3JtRGF0YToiRm9ybURhdGEiaW4gZSxhcnJh
eUJ1ZmZlcjoiQXJyYXlCdWZmZXIiaW4gZX07by5wcm90b3R5cGUuYXBwZW5kPWZ1bmN0aW9uKGUs
cil7ZT10KGUpLHI9bihyKTt2YXIgbz10aGlzLm1hcFtlXTtvfHwobz1bXSx0aGlzLm1hcFtlXT1v
KSxvLnB1c2gocil9LG8ucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbihlKXtkZWxldGUgdGhpcy5t
YXBbdChlKV19LG8ucHJvdG90eXBlLmdldD1mdW5jdGlvbihlKXt2YXIgbj10aGlzLm1hcFt0KGUp
XTtyZXR1cm4gbj9uWzBdOm51bGx9LG8ucHJvdG90eXBlLmdldEFsbD1mdW5jdGlvbihlKXtyZXR1
cm4gdGhpcy5tYXBbdChlKV18fFtdfSxvLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24oZSl7cmV0dXJu
IHRoaXMubWFwLmhhc093blByb3BlcnR5KHQoZSkpfSxvLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24o
ZSxyKXt0aGlzLm1hcFt0KGUpXT1bbihyKV19LG8ucHJvdG90eXBlLmZvckVhY2g9ZnVuY3Rpb24o
ZSx0KXtPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0aGlzLm1hcCkuZm9yRWFjaChmdW5jdGlv
bihuKXt0aGlzLm1hcFtuXS5mb3JFYWNoKGZ1bmN0aW9uKHIpe2UuY2FsbCh0LHIsbix0aGlzKX0s
dGhpcyl9LHRoaXMpfSxvLnByb3RvdHlwZS5rZXlzPWZ1bmN0aW9uKCl7dmFyIGU9W107cmV0dXJu
IHRoaXMuZm9yRWFjaChmdW5jdGlvbih0LG4pe2UucHVzaChuKX0pLHIoZSl9LG8ucHJvdG90eXBl
LnZhbHVlcz1mdW5jdGlvbigpe3ZhciBlPVtdO3JldHVybiB0aGlzLmZvckVhY2goZnVuY3Rpb24o
dCl7ZS5wdXNoKHQpfSkscihlKX0sby5wcm90b3R5cGUuZW50cmllcz1mdW5jdGlvbigpe3ZhciBl
PVtdO3JldHVybiB0aGlzLmZvckVhY2goZnVuY3Rpb24odCxuKXtlLnB1c2goW24sdF0pfSkscihl
KX0sdi5pdGVyYWJsZSYmKG8ucHJvdG90eXBlW1N5bWJvbC5pdGVyYXRvcl09by5wcm90b3R5cGUu
ZW50cmllcyk7dmFyIG09WyJERUxFVEUiLCJHRVQiLCJIRUFEIiwiT1BUSU9OUyIsIlBPU1QiLCJQ
VVQiXTtwLnByb3RvdHlwZS5jbG9uZT1mdW5jdGlvbigpe3JldHVybiBuZXcgcCh0aGlzKX0sYy5j
YWxsKHAucHJvdG90eXBlKSxjLmNhbGwoaC5wcm90b3R5cGUpLGgucHJvdG90eXBlLmNsb25lPWZ1
bmN0aW9uKCl7cmV0dXJuIG5ldyBoKHRoaXMuX2JvZHlJbml0LHtzdGF0dXM6dGhpcy5zdGF0dXMs
c3RhdHVzVGV4dDp0aGlzLnN0YXR1c1RleHQsaGVhZGVyczpuZXcgbyh0aGlzLmhlYWRlcnMpLHVy
bDp0aGlzLnVybH0pfSxoLmVycm9yPWZ1bmN0aW9uKCl7dmFyIGU9bmV3IGgobnVsbCx7c3RhdHVz
OjAsc3RhdHVzVGV4dDoiIn0pO3JldHVybiBlLnR5cGU9ImVycm9yIixlfTt2YXIgeT1bMzAxLDMw
MiwzMDMsMzA3LDMwOF07aC5yZWRpcmVjdD1mdW5jdGlvbihlLHQpe2lmKHkuaW5kZXhPZih0KT09
PS0xKXRocm93IG5ldyBSYW5nZUVycm9yKCJJbnZhbGlkIHN0YXR1cyBjb2RlIik7cmV0dXJuIG5l
dyBoKG51bGwse3N0YXR1czp0LGhlYWRlcnM6e2xvY2F0aW9uOmV9fSl9LGUuSGVhZGVycz1vLGUu
UmVxdWVzdD1wLGUuUmVzcG9uc2U9aCxlLmZldGNoPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIG5ldyBQ
cm9taXNlKGZ1bmN0aW9uKG4scil7ZnVuY3Rpb24gbygpe3JldHVybiJyZXNwb25zZVVSTCJpbiBh
P2EucmVzcG9uc2VVUkw6L15YLVJlcXVlc3QtVVJMOi9tLnRlc3QoYS5nZXRBbGxSZXNwb25zZUhl
YWRlcnMoKSk/YS5nZXRSZXNwb25zZUhlYWRlcigiWC1SZXF1ZXN0LVVSTCIpOnZvaWQgMH12YXIg
aTtpPXAucHJvdG90eXBlLmlzUHJvdG90eXBlT2YoZSkmJiF0P2U6bmV3IHAoZSx0KTt2YXIgYT1u
ZXcgWE1MSHR0cFJlcXVlc3Q7YS5vbmxvYWQ9ZnVuY3Rpb24oKXt2YXIgZT17c3RhdHVzOmEuc3Rh
dHVzLHN0YXR1c1RleHQ6YS5zdGF0dXNUZXh0LGhlYWRlcnM6ZihhKSx1cmw6bygpfSx0PSJyZXNw
b25zZSJpbiBhP2EucmVzcG9uc2U6YS5yZXNwb25zZVRleHQ7bihuZXcgaCh0LGUpKX0sYS5vbmVy
cm9yPWZ1bmN0aW9uKCl7cihuZXcgVHlwZUVycm9yKCJOZXR3b3JrIHJlcXVlc3QgZmFpbGVkIikp
fSxhLm9udGltZW91dD1mdW5jdGlvbigpe3IobmV3IFR5cGVFcnJvcigiTmV0d29yayByZXF1ZXN0
IGZhaWxlZCIpKX0sYS5vcGVuKGkubWV0aG9kLGkudXJsLCEwKSwiaW5jbHVkZSI9PT1pLmNyZWRl
bnRpYWxzJiYoYS53aXRoQ3JlZGVudGlhbHM9ITApLCJyZXNwb25zZVR5cGUiaW4gYSYmdi5ibG9i
JiYoYS5yZXNwb25zZVR5cGU9ImJsb2IiKSxpLmhlYWRlcnMuZm9yRWFjaChmdW5jdGlvbihlLHQp
e2Euc2V0UmVxdWVzdEhlYWRlcih0LGUpfSksYS5zZW5kKCJ1bmRlZmluZWQiPT10eXBlb2YgaS5f
Ym9keUluaXQ/bnVsbDppLl9ib2R5SW5pdCl9KX0sZS5mZXRjaC5wb2x5ZmlsbD0hMH19KCJ1bmRl
ZmluZWQiIT10eXBlb2Ygc2VsZj9zZWxmOnRoaXMpfSwzOCxbMjMxLDIzXSxmdW5jdGlvbihlLHQs
bil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuKCIiK2UpLnJlcGxhY2UoXywiJCYv
Iil9ZnVuY3Rpb24gbyhlLHQpe3RoaXMuZnVuYz1lLHRoaXMuY29udGV4dD10LHRoaXMuY291bnQ9
MH1mdW5jdGlvbiBpKGUsdCxuKXt2YXIgcj1lLmZ1bmMsbz1lLmNvbnRleHQ7ci5jYWxsKG8sdCxl
LmNvdW50KyspfWZ1bmN0aW9uIGEoZSx0LG4pe2lmKG51bGw9PWUpcmV0dXJuIGU7dmFyIHI9by5n
ZXRQb29sZWQodCxuKTt5KGUsaSxyKSxvLnJlbGVhc2Uocil9ZnVuY3Rpb24gdShlLHQsbixyKXt0
aGlzLnJlc3VsdD1lLHRoaXMua2V5UHJlZml4PXQsdGhpcy5mdW5jPW4sdGhpcy5jb250ZXh0PXIs
dGhpcy5jb3VudD0wfWZ1bmN0aW9uIHMoZSx0LG4pe3ZhciBvPWUucmVzdWx0LGk9ZS5rZXlQcmVm
aXgsYT1lLmZ1bmMsdT1lLmNvbnRleHQscz1hLmNhbGwodSx0LGUuY291bnQrKyk7QXJyYXkuaXNB
cnJheShzKT9jKHMsbyxuLG0udGhhdFJldHVybnNBcmd1bWVudCk6bnVsbCE9cyYmKHYuaXNWYWxp
ZEVsZW1lbnQocykmJihzPXYuY2xvbmVBbmRSZXBsYWNlS2V5KHMsaSsoIXMua2V5fHx0JiZ0Lmtl
eT09PXMua2V5PyIiOnIocy5rZXkpKyIvIikrbikpLG8ucHVzaChzKSl9ZnVuY3Rpb24gYyhlLHQs
bixvLGkpe3ZhciBhPSIiO251bGwhPW4mJihhPXIobikrIi8iKTt2YXIgYz11LmdldFBvb2xlZCh0
LGEsbyxpKTt5KGUscyxjKSx1LnJlbGVhc2UoYyl9ZnVuY3Rpb24gbChlLHQsbil7aWYobnVsbD09
ZSlyZXR1cm4gZTt2YXIgcj1bXTtyZXR1cm4gYyhlLHIsbnVsbCx0LG4pLHJ9ZnVuY3Rpb24gcChl
LHQsbil7cmV0dXJuIG51bGx9ZnVuY3Rpb24gZChlLHQpe3JldHVybiB5KGUscCxudWxsKX1mdW5j
dGlvbiBmKGUpe3ZhciB0PVtdO3JldHVybiBjKGUsdCxudWxsLG0udGhhdFJldHVybnNBcmd1bWVu
dCksdH12YXIgaD1uKDIxNCksdj1uKDE4KSxtPW4oNykseT1uKDIyNCksZz1oLnR3b0FyZ3VtZW50
UG9vbGVyLGI9aC5mb3VyQXJndW1lbnRQb29sZXIsXz0vXC8rL2c7by5wcm90b3R5cGUuZGVzdHJ1
Y3Rvcj1mdW5jdGlvbigpe3RoaXMuZnVuYz1udWxsLHRoaXMuY29udGV4dD1udWxsLHRoaXMuY291
bnQ9MH0saC5hZGRQb29saW5nVG8obyxnKSx1LnByb3RvdHlwZS5kZXN0cnVjdG9yPWZ1bmN0aW9u
KCl7dGhpcy5yZXN1bHQ9bnVsbCx0aGlzLmtleVByZWZpeD1udWxsLHRoaXMuZnVuYz1udWxsLHRo
aXMuY29udGV4dD1udWxsLHRoaXMuY291bnQ9MH0saC5hZGRQb29saW5nVG8odSxiKTt2YXIgQz17
Zm9yRWFjaDphLG1hcDpsLG1hcEludG9XaXRoS2V5UHJlZml4SW50ZXJuYWw6Yyxjb3VudDpkLHRv
QXJyYXk6Zn07ZS5leHBvcnRzPUN9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9
bigxOCksbz1yLmNyZWF0ZUZhY3RvcnksaT17YTpvKCJhIiksYWJicjpvKCJhYmJyIiksYWRkcmVz
czpvKCJhZGRyZXNzIiksYXJlYTpvKCJhcmVhIiksYXJ0aWNsZTpvKCJhcnRpY2xlIiksYXNpZGU6
bygiYXNpZGUiKSxhdWRpbzpvKCJhdWRpbyIpLGI6bygiYiIpLGJhc2U6bygiYmFzZSIpLGJkaTpv
KCJiZGkiKSxiZG86bygiYmRvIiksYmlnOm8oImJpZyIpLGJsb2NrcXVvdGU6bygiYmxvY2txdW90
ZSIpLGJvZHk6bygiYm9keSIpLGJyOm8oImJyIiksYnV0dG9uOm8oImJ1dHRvbiIpLGNhbnZhczpv
KCJjYW52YXMiKSxjYXB0aW9uOm8oImNhcHRpb24iKSxjaXRlOm8oImNpdGUiKSxjb2RlOm8oImNv
ZGUiKSxjb2w6bygiY29sIiksY29sZ3JvdXA6bygiY29sZ3JvdXAiKSxkYXRhOm8oImRhdGEiKSxk
YXRhbGlzdDpvKCJkYXRhbGlzdCIpLGRkOm8oImRkIiksZGVsOm8oImRlbCIpLGRldGFpbHM6bygi
ZGV0YWlscyIpLGRmbjpvKCJkZm4iKSxkaWFsb2c6bygiZGlhbG9nIiksZGl2Om8oImRpdiIpLGRs
Om8oImRsIiksZHQ6bygiZHQiKSxlbTpvKCJlbSIpLGVtYmVkOm8oImVtYmVkIiksZmllbGRzZXQ6
bygiZmllbGRzZXQiKSxmaWdjYXB0aW9uOm8oImZpZ2NhcHRpb24iKSxmaWd1cmU6bygiZmlndXJl
IiksZm9vdGVyOm8oImZvb3RlciIpLGZvcm06bygiZm9ybSIpLGgxOm8oImgxIiksaDI6bygiaDIi
KSxoMzpvKCJoMyIpLGg0Om8oImg0IiksaDU6bygiaDUiKSxoNjpvKCJoNiIpLGhlYWQ6bygiaGVh
ZCIpLGhlYWRlcjpvKCJoZWFkZXIiKSxoZ3JvdXA6bygiaGdyb3VwIiksaHI6bygiaHIiKSxodG1s
Om8oImh0bWwiKSxpOm8oImkiKSxpZnJhbWU6bygiaWZyYW1lIiksaW1nOm8oImltZyIpLGlucHV0
Om8oImlucHV0IiksaW5zOm8oImlucyIpLGtiZDpvKCJrYmQiKSxrZXlnZW46bygia2V5Z2VuIiks
bGFiZWw6bygibGFiZWwiKSxsZWdlbmQ6bygibGVnZW5kIiksbGk6bygibGkiKSxsaW5rOm8oImxp
bmsiKSxtYWluOm8oIm1haW4iKSxtYXA6bygibWFwIiksbWFyazpvKCJtYXJrIiksbWVudTpvKCJt
ZW51IiksbWVudWl0ZW06bygibWVudWl0ZW0iKSxtZXRhOm8oIm1ldGEiKSxtZXRlcjpvKCJtZXRl
ciIpLG5hdjpvKCJuYXYiKSxub3NjcmlwdDpvKCJub3NjcmlwdCIpLG9iamVjdDpvKCJvYmplY3Qi
KSxvbDpvKCJvbCIpLG9wdGdyb3VwOm8oIm9wdGdyb3VwIiksb3B0aW9uOm8oIm9wdGlvbiIpLG91
dHB1dDpvKCJvdXRwdXQiKSxwOm8oInAiKSxwYXJhbTpvKCJwYXJhbSIpLHBpY3R1cmU6bygicGlj
dHVyZSIpLHByZTpvKCJwcmUiKSxwcm9ncmVzczpvKCJwcm9ncmVzcyIpLHE6bygicSIpLHJwOm8o
InJwIikscnQ6bygicnQiKSxydWJ5Om8oInJ1YnkiKSxzOm8oInMiKSxzYW1wOm8oInNhbXAiKSxz
Y3JpcHQ6bygic2NyaXB0Iiksc2VjdGlvbjpvKCJzZWN0aW9uIiksc2VsZWN0Om8oInNlbGVjdCIp
LHNtYWxsOm8oInNtYWxsIiksc291cmNlOm8oInNvdXJjZSIpLHNwYW46bygic3BhbiIpLHN0cm9u
ZzpvKCJzdHJvbmciKSxzdHlsZTpvKCJzdHlsZSIpLHN1YjpvKCJzdWIiKSxzdW1tYXJ5Om8oInN1
bW1hcnkiKSxzdXA6bygic3VwIiksdGFibGU6bygidGFibGUiKSx0Ym9keTpvKCJ0Ym9keSIpLHRk
Om8oInRkIiksdGV4dGFyZWE6bygidGV4dGFyZWEiKSx0Zm9vdDpvKCJ0Zm9vdCIpLHRoOm8oInRo
IiksdGhlYWQ6bygidGhlYWQiKSx0aW1lOm8oInRpbWUiKSx0aXRsZTpvKCJ0aXRsZSIpLHRyOm8o
InRyIiksdHJhY2s6bygidHJhY2siKSx1Om8oInUiKSx1bDpvKCJ1bCIpLHZhcjpvKCJ2YXIiKSx2
aWRlbzpvKCJ2aWRlbyIpLHdicjpvKCJ3YnIiKSxjaXJjbGU6bygiY2lyY2xlIiksY2xpcFBhdGg6
bygiY2xpcFBhdGgiKSxkZWZzOm8oImRlZnMiKSxlbGxpcHNlOm8oImVsbGlwc2UiKSxnOm8oImci
KSxpbWFnZTpvKCJpbWFnZSIpLGxpbmU6bygibGluZSIpLGxpbmVhckdyYWRpZW50Om8oImxpbmVh
ckdyYWRpZW50IiksbWFzazpvKCJtYXNrIikscGF0aDpvKCJwYXRoIikscGF0dGVybjpvKCJwYXR0
ZXJuIikscG9seWdvbjpvKCJwb2x5Z29uIikscG9seWxpbmU6bygicG9seWxpbmUiKSxyYWRpYWxH
cmFkaWVudDpvKCJyYWRpYWxHcmFkaWVudCIpLHJlY3Q6bygicmVjdCIpLHN0b3A6bygic3RvcCIp
LHN2ZzpvKCJzdmciKSx0ZXh0Om8oInRleHQiKSx0c3BhbjpvKCJ0c3BhbiIpfTtlLmV4cG9ydHM9
aX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDE4KSxvPXIuaXNWYWxpZEVs
ZW1lbnQsaT1uKDU1KTtlLmV4cG9ydHM9aShvKX0sMTYzLGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0
cmljdCI7dmFyIHI9big4OSksbz1yLkNvbXBvbmVudCxpPW4oMTgpLGE9aS5pc1ZhbGlkRWxlbWVu
dCx1PW4oOTIpLHM9big5Nyk7ZS5leHBvcnRzPXMobyxhLHUpfSwxODIsZnVuY3Rpb24oZSx0KXsi
dXNlIHN0cmljdCI7ZnVuY3Rpb24gbigpe3JldHVybiByKyt9dmFyIHI9MTtlLmV4cG9ydHM9bn0s
ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1mdW5jdGlvbigpe307ZS5leHBvcnRz
PXJ9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1cm4gaS5p
c1ZhbGlkRWxlbWVudChlKT92b2lkIDA6bygiMTQzIiksZX12YXIgbz1uKDIzKSxpPW4oMTgpO24o
MSk7ZS5leHBvcnRzPXJ9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihl
LHQpe3JldHVybiBlJiYib2JqZWN0Ij09dHlwZW9mIGUmJm51bGwhPWUua2V5P2MuZXNjYXBlKGUu
a2V5KTp0LnRvU3RyaW5nKDM2KX1mdW5jdGlvbiBvKGUsdCxuLGkpe3ZhciBkPXR5cGVvZiBlO2lm
KCJ1bmRlZmluZWQiIT09ZCYmImJvb2xlYW4iIT09ZHx8KGU9bnVsbCksbnVsbD09PWV8fCJzdHJp
bmciPT09ZHx8Im51bWJlciI9PT1kfHwib2JqZWN0Ij09PWQmJmUuJCR0eXBlb2Y9PT11KXJldHVy
biBuKGksZSwiIj09PXQ/bCtyKGUsMCk6dCksMTt2YXIgZixoLHY9MCxtPSIiPT09dD9sOnQrcDtp
ZihBcnJheS5pc0FycmF5KGUpKWZvcih2YXIgeT0wO3k8ZS5sZW5ndGg7eSsrKWY9ZVt5XSxoPW0r
cihmLHkpLHYrPW8oZixoLG4saSk7ZWxzZXt2YXIgZz1zKGUpO2lmKGcpe3ZhciBiLF89Zy5jYWxs
KGUpO2lmKGchPT1lLmVudHJpZXMpZm9yKHZhciBDPTA7IShiPV8ubmV4dCgpKS5kb25lOylmPWIu
dmFsdWUsaD1tK3IoZixDKyspLHYrPW8oZixoLG4saSk7ZWxzZSBmb3IoOyEoYj1fLm5leHQoKSku
ZG9uZTspe3ZhciBFPWIudmFsdWU7RSYmKGY9RVsxXSxoPW0rYy5lc2NhcGUoRVswXSkrcCtyKGYs
MCksdis9byhmLGgsbixpKSl9fWVsc2UgaWYoIm9iamVjdCI9PT1kKXt2YXIgdz0iIixUPVN0cmlu
ZyhlKTthKCIzMSIsIltvYmplY3QgT2JqZWN0XSI9PT1UPyJvYmplY3Qgd2l0aCBrZXlzIHsiK09i
amVjdC5rZXlzKGUpLmpvaW4oIiwgIikrIn0iOlQsdyl9fXJldHVybiB2fWZ1bmN0aW9uIGkoZSx0
LG4peworcmV0dXJuIG51bGw9PWU/MDpvKGUsIiIsdCxuKX12YXIgYT1uKDIzKSx1PShuKDExKSxu
KDkxKSkscz1uKDIyMCksYz0obigxKSxuKDIxMykpLGw9KG4oMiksIi4iKSxwPSI6IjtlLmV4cG9y
dHM9aX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3JldHVybiBl
JiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX1mdW5jdGlvbiBvKCl7Zm9yKHZhciBlPWFyZ3Vt
ZW50cy5sZW5ndGgsdD1BcnJheShlKSxuPTA7bjxlO24rKyl0W25dPWFyZ3VtZW50c1tuXTtyZXR1
cm4gZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKG4scixvKXt2YXIgYT1lKG4scixvKSxzPWEu
ZGlzcGF0Y2gsYz1bXSxsPXtnZXRTdGF0ZTphLmdldFN0YXRlLGRpc3BhdGNoOmZ1bmN0aW9uKGUp
e3JldHVybiBzKGUpfX07cmV0dXJuIGM9dC5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIGUobCl9KSxz
PXUuZGVmYXVsdC5hcHBseSh2b2lkIDAsYykoYS5kaXNwYXRjaCksaSh7fSxhLHtkaXNwYXRjaDpz
fSl9fX10Ll9fZXNNb2R1bGU9ITA7dmFyIGk9T2JqZWN0LmFzc2lnbnx8ZnVuY3Rpb24oZSl7Zm9y
KHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49YXJndW1lbnRzW3RdO2Zvcih2
YXIgciBpbiBuKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiYoZVty
XT1uW3JdKX1yZXR1cm4gZX07dC5kZWZhdWx0PW87dmFyIGE9big5NCksdT1yKGEpfSxmdW5jdGlv
bihlLHQpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0
dXJuIHQoZS5hcHBseSh2b2lkIDAsYXJndW1lbnRzKSl9fWZ1bmN0aW9uIHIoZSx0KXtpZigiZnVu
Y3Rpb24iPT10eXBlb2YgZSlyZXR1cm4gbihlLHQpO2lmKCJvYmplY3QiIT10eXBlb2YgZXx8bnVs
bD09PWUpdGhyb3cgbmV3IEVycm9yKCJiaW5kQWN0aW9uQ3JlYXRvcnMgZXhwZWN0ZWQgYW4gb2Jq
ZWN0IG9yIGEgZnVuY3Rpb24sIGluc3RlYWQgcmVjZWl2ZWQgIisobnVsbD09PWU/Im51bGwiOnR5
cGVvZiBlKSsnLiBEaWQgeW91IHdyaXRlICJpbXBvcnQgQWN0aW9uQ3JlYXRvcnMgZnJvbSIgaW5z
dGVhZCBvZiAiaW1wb3J0ICogYXMgQWN0aW9uQ3JlYXRvcnMgZnJvbSI/Jyk7Zm9yKHZhciByPU9i
amVjdC5rZXlzKGUpLG89e30saT0wO2k8ci5sZW5ndGg7aSsrKXt2YXIgYT1yW2ldLHU9ZVthXTsi
ZnVuY3Rpb24iPT10eXBlb2YgdSYmKG9bYV09bih1LHQpKX1yZXR1cm4gb310Ll9fZXNNb2R1bGU9
ITAsdC5kZWZhdWx0PXJ9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihl
KXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19ZnVuY3Rpb24gbyhlLHQpe3Zh
ciBuPXQmJnQudHlwZSxyPW4mJiciJytuLnRvU3RyaW5nKCkrJyInfHwiYW4gYWN0aW9uIjtyZXR1
cm4iR2l2ZW4gYWN0aW9uICIrcisnLCByZWR1Y2VyICInK2UrJyIgcmV0dXJuZWQgdW5kZWZpbmVk
LiBUbyBpZ25vcmUgYW4gYWN0aW9uLCB5b3UgbXVzdCBleHBsaWNpdGx5IHJldHVybiB0aGUgcHJl
dmlvdXMgc3RhdGUuIElmIHlvdSB3YW50IHRoaXMgcmVkdWNlciB0byBob2xkIG5vIHZhbHVlLCB5
b3UgY2FuIHJldHVybiBudWxsIGluc3RlYWQgb2YgdW5kZWZpbmVkLid9ZnVuY3Rpb24gaShlKXtP
YmplY3Qua2V5cyhlKS5mb3JFYWNoKGZ1bmN0aW9uKHQpe3ZhciBuPWVbdF0scj1uKHZvaWQgMCx7
dHlwZTp1LkFjdGlvblR5cGVzLklOSVR9KTtpZigidW5kZWZpbmVkIj09dHlwZW9mIHIpdGhyb3cg
bmV3IEVycm9yKCdSZWR1Y2VyICInK3QrIlwiIHJldHVybmVkIHVuZGVmaW5lZCBkdXJpbmcgaW5p
dGlhbGl6YXRpb24uIElmIHRoZSBzdGF0ZSBwYXNzZWQgdG8gdGhlIHJlZHVjZXIgaXMgdW5kZWZp
bmVkLCB5b3UgbXVzdCBleHBsaWNpdGx5IHJldHVybiB0aGUgaW5pdGlhbCBzdGF0ZS4gVGhlIGlu
aXRpYWwgc3RhdGUgbWF5IG5vdCBiZSB1bmRlZmluZWQuIElmIHlvdSBkb24ndCB3YW50IHRvIHNl
dCBhIHZhbHVlIGZvciB0aGlzIHJlZHVjZXIsIHlvdSBjYW4gdXNlIG51bGwgaW5zdGVhZCBvZiB1
bmRlZmluZWQuIik7dmFyIG89IkBAcmVkdXgvUFJPQkVfVU5LTk9XTl9BQ1RJT05fIitNYXRoLnJh
bmRvbSgpLnRvU3RyaW5nKDM2KS5zdWJzdHJpbmcoNykuc3BsaXQoIiIpLmpvaW4oIi4iKTtpZigi
dW5kZWZpbmVkIj09dHlwZW9mIG4odm9pZCAwLHt0eXBlOm99KSl0aHJvdyBuZXcgRXJyb3IoJ1Jl
ZHVjZXIgIicrdCsnIiByZXR1cm5lZCB1bmRlZmluZWQgd2hlbiBwcm9iZWQgd2l0aCBhIHJhbmRv
bSB0eXBlLiAnKygiRG9uJ3QgdHJ5IHRvIGhhbmRsZSAiK3UuQWN0aW9uVHlwZXMuSU5JVCsnIG9y
IG90aGVyIGFjdGlvbnMgaW4gInJlZHV4LyoiICcpKyJuYW1lc3BhY2UuIFRoZXkgYXJlIGNvbnNp
ZGVyZWQgcHJpdmF0ZS4gSW5zdGVhZCwgeW91IG11c3QgcmV0dXJuIHRoZSBjdXJyZW50IHN0YXRl
IGZvciBhbnkgdW5rbm93biBhY3Rpb25zLCB1bmxlc3MgaXQgaXMgdW5kZWZpbmVkLCBpbiB3aGlj
aCBjYXNlIHlvdSBtdXN0IHJldHVybiB0aGUgaW5pdGlhbCBzdGF0ZSwgcmVnYXJkbGVzcyBvZiB0
aGUgYWN0aW9uIHR5cGUuIFRoZSBpbml0aWFsIHN0YXRlIG1heSBub3QgYmUgdW5kZWZpbmVkLCBi
dXQgY2FuIGJlIG51bGwuIil9KX1mdW5jdGlvbiBhKGUpe2Zvcih2YXIgdD1PYmplY3Qua2V5cyhl
KSxuPXt9LHI9MDtyPHQubGVuZ3RoO3IrKyl7dmFyIGE9dFtyXTsiZnVuY3Rpb24iPT10eXBlb2Yg
ZVthXSYmKG5bYV09ZVthXSl9dmFyIHU9T2JqZWN0LmtleXMobikscz12b2lkIDA7dHJ5e2kobil9
Y2F0Y2goYyl7cz1jfXJldHVybiBmdW5jdGlvbigpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MCYm
dm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTp7fSx0PWFyZ3VtZW50c1sxXTtpZihz
KXRocm93IHM7Zm9yKHZhciByPSExLGk9e30sYT0wO2E8dS5sZW5ndGg7YSsrKXt2YXIgYz11W2Fd
LGw9bltjXSxwPWVbY10sZD1sKHAsdCk7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBkKXt2YXIgZj1v
KGMsdCk7dGhyb3cgbmV3IEVycm9yKGYpfWlbY109ZCxyPXJ8fGQhPT1wfXJldHVybiByP2k6ZX19
dC5fX2VzTW9kdWxlPSEwLHQuZGVmYXVsdD1hO3ZhciB1PW4oOTUpLHM9bigzMyksYz0ocihzKSxu
KDk2KSk7cihjKX0sZnVuY3Rpb24oZSx0LG4pe2UuZXhwb3J0cz1uKDIyOSl9LGZ1bmN0aW9uKGUs
dCxuKXsoZnVuY3Rpb24oZSxyKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbyhlKXtyZXR1cm4gZSYm
ZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNN
b2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBpLGE9bigyMzApLHU9byhhKTtpPSJ1bmRlZmluZWQiIT10
eXBlb2Ygc2VsZj9zZWxmOiJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93P3dpbmRvdzoidW5kZWZp
bmVkIiE9dHlwZW9mIGU/ZTpyO3ZhciBzPSgwLHUuZGVmYXVsdCkoaSk7dC5kZWZhdWx0PXN9KS5j
YWxsKHQsZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30oKSxuKDIxMSkoZSkpfSxmdW5jdGlvbihlLHQp
eyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKGUpe3ZhciB0LG49ZS5TeW1ib2w7cmV0dXJuImZ1bmN0
aW9uIj09dHlwZW9mIG4/bi5vYnNlcnZhYmxlP3Q9bi5vYnNlcnZhYmxlOih0PW4oIm9ic2VydmFi
bGUiKSxuLm9ic2VydmFibGU9dCk6dD0iQEBvYnNlcnZhYmxlIix0fU9iamVjdC5kZWZpbmVQcm9w
ZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSx0LmRlZmF1bHQ9bn0sZnVuY3Rpb24oZSx0
LG4scil7InVzZSBzdHJpY3QiO3ZhciBvPW4ociksaT0obigxKSxmdW5jdGlvbihlKXt2YXIgdD10
aGlzO2lmKHQuaW5zdGFuY2VQb29sLmxlbmd0aCl7dmFyIG49dC5pbnN0YW5jZVBvb2wucG9wKCk7
cmV0dXJuIHQuY2FsbChuLGUpLG59cmV0dXJuIG5ldyB0KGUpfSksYT1mdW5jdGlvbihlLHQpe3Zh
ciBuPXRoaXM7aWYobi5pbnN0YW5jZVBvb2wubGVuZ3RoKXt2YXIgcj1uLmluc3RhbmNlUG9vbC5w
b3AoKTtyZXR1cm4gbi5jYWxsKHIsZSx0KSxyfXJldHVybiBuZXcgbihlLHQpfSx1PWZ1bmN0aW9u
KGUsdCxuKXt2YXIgcj10aGlzO2lmKHIuaW5zdGFuY2VQb29sLmxlbmd0aCl7dmFyIG89ci5pbnN0
YW5jZVBvb2wucG9wKCk7cmV0dXJuIHIuY2FsbChvLGUsdCxuKSxvfXJldHVybiBuZXcgcihlLHQs
bil9LHM9ZnVuY3Rpb24oZSx0LG4scil7dmFyIG89dGhpcztpZihvLmluc3RhbmNlUG9vbC5sZW5n
dGgpe3ZhciBpPW8uaW5zdGFuY2VQb29sLnBvcCgpO3JldHVybiBvLmNhbGwoaSxlLHQsbixyKSxp
fXJldHVybiBuZXcgbyhlLHQsbixyKX0sYz1mdW5jdGlvbihlKXt2YXIgdD10aGlzO2UgaW5zdGFu
Y2VvZiB0P3ZvaWQgMDpvKCIyNSIpLGUuZGVzdHJ1Y3RvcigpLHQuaW5zdGFuY2VQb29sLmxlbmd0
aDx0LnBvb2xTaXplJiZ0Lmluc3RhbmNlUG9vbC5wdXNoKGUpfSxsPTEwLHA9aSxkPWZ1bmN0aW9u
KGUsdCl7dmFyIG49ZTtyZXR1cm4gbi5pbnN0YW5jZVBvb2w9W10sbi5nZXRQb29sZWQ9dHx8cCxu
LnBvb2xTaXplfHwobi5wb29sU2l6ZT1sKSxuLnJlbGVhc2U9YyxufSxmPXthZGRQb29saW5nVG86
ZCxvbmVBcmd1bWVudFBvb2xlcjppLHR3b0FyZ3VtZW50UG9vbGVyOmEsdGhyZWVBcmd1bWVudFBv
b2xlcjp1LGZvdXJBcmd1bWVudFBvb2xlcjpzfTtlLmV4cG9ydHM9Zn1dKSk7CisvLyMgc291cmNl
TWFwcGluZ1VSTD1tYWluLjY5Y2Q5NjU1LmpzLm1hcApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp
bGUKSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMv
YXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0LXJlZHV4L2Rpc3Qvc3RhdGljL2pzL21haW4uNjlj
ZDk2NTUuanMubWFwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIv
cmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0LXJlZHV4L2Rpc3Qv
c3RhdGljL2pzL21haW4uNjljZDk2NTUuanMubWFwCShub25leGlzdGVudCkKKysrIFBlcmZvcm1h
bmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1w
bGVzL3JlYWN0LXJlZHV4L2Rpc3Qvc3RhdGljL2pzL21haW4uNjljZDk2NTUuanMubWFwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEgQEAKK3sidmVyc2lvbiI6Mywic291cmNlcyI6WyJ3ZWJwYWNr
Oi8vL3N0YXRpYy9qcy9tYWluLjY5Y2Q5NjU1LmpzIiwid2VicGFjazovLy93ZWJwYWNrL2Jvb3Rz
dHJhcCAxYzE0ZWYzNDdmYjc1MjI5MjQ2YyIsIndlYnBhY2s6Ly8vLi9+L2ZianMvbGliL2ludmFy
aWFudC5qcyIsIndlYnBhY2s6Ly8vLi9+L2ZianMvbGliL3dhcm5pbmcuanMiLCJ3ZWJwYWNrOi8v
Ly4vfi9yZWFjdC1kb20vbGliL3JlYWN0UHJvZEludmFyaWFudC5qcyIsIndlYnBhY2s6Ly8vLi9+
L29iamVjdC1hc3NpZ24vaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1kb20vbGliL1Jl
YWN0RE9NQ29tcG9uZW50VHJlZS5qcyIsIndlYnBhY2s6Ly8vLi9+L2ZianMvbGliL0V4ZWN1dGlv
bkVudmlyb25tZW50LmpzIiwid2VicGFjazovLy8uL34vZmJqcy9saWIvZW1wdHlGdW5jdGlvbi5q
cyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LWRvbS9saWIvUmVhY3RJbnN0cnVtZW50YXRpb24uanMi
LCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1kb20vbGliL1JlYWN0VXBkYXRlcy5qcyIsIndlYnBhY2s6
Ly8vLi9+L3JlYWN0LWRvbS9saWIvU3ludGhldGljRXZlbnQuanMiLCJ3ZWJwYWNrOi8vLy4vfi9y
ZWFjdC9saWIvUmVhY3RDdXJyZW50T3duZXIuanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC9yZWFj
dC5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LWRvbS9saWIvRE9NTGF6eVRyZWUuanMiLCJ3ZWJw
YWNrOi8vLy4vfi9yZWFjdC1kb20vbGliL0RPTVByb3BlcnR5LmpzIiwid2VicGFjazovLy8uL34v
cmVhY3QtZG9tL2xpYi9SZWFjdFJlY29uY2lsZXIuanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC9s
aWIvUmVhY3QuanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC9saWIvUmVhY3RFbGVtZW50LmpzIiwi
d2VicGFjazovLy8uL34vcmVhY3QtZG9tL2xpYi9FdmVudFBsdWdpbkh1Yi5qcyIsIndlYnBhY2s6
Ly8vLi9+L3JlYWN0LWRvbS9saWIvRXZlbnRQcm9wYWdhdG9ycy5qcyIsIndlYnBhY2s6Ly8vLi9+
L3JlYWN0LWRvbS9saWIvUmVhY3RJbnN0YW5jZU1hcC5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0
LWRvbS9saWIvU3ludGhldGljVUlFdmVudC5qcyIsIndlYnBhY2s6Ly8vLi9+L2ZianMvbGliL2Vt
cHR5T2JqZWN0LmpzIiwid2VicGFjazovLy8uL34vcmVhY3QtZG9tL2xpYi9SZWFjdEJyb3dzZXJF
dmVudEVtaXR0ZXIuanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1kb20vbGliL1N5bnRoZXRpY01v
dXNlRXZlbnQuanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1kb20vbGliL1RyYW5zYWN0aW9uLmpz
Iiwid2VicGFjazovLy8uL34vcmVhY3QtZG9tL2xpYi9lc2NhcGVUZXh0Q29udGVudEZvckJyb3dz
ZXIuanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1kb20vbGliL3NldElubmVySFRNTC5qcyIsIndl
YnBhY2s6Ly8vLi9+L3JlZHV4L2xpYi9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9+L2NsYXNzbmFt
ZXMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vfi9mYmpzL2xpYi9zaGFsbG93RXF1YWwuanMiLCJ3
ZWJwYWNrOi8vLy4vfi9sb2Rhc2gvaXNQbGFpbk9iamVjdC5qcyIsIndlYnBhY2s6Ly8vLi9+L3Jl
YWN0LWRvbS9saWIvRE9NQ2hpbGRyZW5PcGVyYXRpb25zLmpzIiwid2VicGFjazovLy8uL34vcmVh
Y3QtZG9tL2xpYi9ET01OYW1lc3BhY2VzLmpzIiwid2VicGFjazovLy8uL34vcmVhY3QtZG9tL2xp
Yi9FdmVudFBsdWdpblJlZ2lzdHJ5LmpzIiwid2VicGFjazovLy8uL34vcmVhY3QtZG9tL2xpYi9F
dmVudFBsdWdpblV0aWxzLmpzIiwid2VicGFjazovLy8uL34vcmVhY3QtZG9tL2xpYi9LZXlFc2Nh
cGVVdGlscy5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LWRvbS9saWIvTGlua2VkVmFsdWVVdGls
cy5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LWRvbS9saWIvUmVhY3RDb21wb25lbnRFbnZpcm9u
bWVudC5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LWRvbS9saWIvUmVhY3RFcnJvclV0aWxzLmpz
Iiwid2VicGFjazovLy8uL34vcmVhY3QtZG9tL2xpYi9SZWFjdFVwZGF0ZVF1ZXVlLmpzIiwid2Vi
cGFjazovLy8uL34vcmVhY3QtZG9tL2xpYi9jcmVhdGVNaWNyb3NvZnRVbnNhZmVMb2NhbEZ1bmN0
aW9uLmpzIiwid2VicGFjazovLy8uL34vcmVhY3QtZG9tL2xpYi9nZXRFdmVudENoYXJDb2RlLmpz
Iiwid2VicGFjazovLy8uL34vcmVhY3QtZG9tL2xpYi9nZXRFdmVudE1vZGlmaWVyU3RhdGUuanMi
LCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1kb20vbGliL2dldEV2ZW50VGFyZ2V0LmpzIiwid2VicGFj
azovLy8uL34vcmVhY3QtZG9tL2xpYi9pc0V2ZW50U3VwcG9ydGVkLmpzIiwid2VicGFjazovLy8u
L34vcmVhY3QtZG9tL2xpYi9zaG91bGRVcGRhdGVSZWFjdENvbXBvbmVudC5qcyIsIndlYnBhY2s6
Ly8vLi9+L3JlYWN0LWRvbS9saWIvdmFsaWRhdGVET01OZXN0aW5nLmpzIiwid2VicGFjazovLy8u
L34vcmVhY3QtcmVkdXgvbGliL3V0aWxzL3dhcm5pbmcuanMiLCJ3ZWJwYWNrOi8vLy4vfi9mYmpz
L2xpYi9FdmVudExpc3RlbmVyLmpzIiwid2VicGFjazovLy8uL34vZmJqcy9saWIvZm9jdXNOb2Rl
LmpzIiwid2VicGFjazovLy8uL34vZmJqcy9saWIvZ2V0QWN0aXZlRWxlbWVudC5qcyIsIndlYnBh
Y2s6Ly8vLi9+L2xvZGFzaC9fU3ltYm9sLmpzIiwid2VicGFjazovLy8uL34vcHJvcC10eXBlcy9m
YWN0b3J5LmpzIiwid2VicGFjazovLy8uL34vcHJvcC10eXBlcy9pbmRleC5qcyIsIndlYnBhY2s6
Ly8vLi9+L3Byb3AtdHlwZXMvbGliL1JlYWN0UHJvcFR5cGVzU2VjcmV0LmpzIiwid2VicGFjazov
Ly8uL34vcmVhY3QtZG9tL2xpYi9DU1NQcm9wZXJ0eS5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0
LWRvbS9saWIvQ2FsbGJhY2tRdWV1ZS5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LWRvbS9saWIv
RE9NUHJvcGVydHlPcGVyYXRpb25zLmpzIiwid2VicGFjazovLy8uL34vcmVhY3QtZG9tL2xpYi9S
ZWFjdERPTUNvbXBvbmVudEZsYWdzLmpzIiwid2VicGFjazovLy8uL34vcmVhY3QtZG9tL2xpYi9S
ZWFjdERPTVNlbGVjdC5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LWRvbS9saWIvUmVhY3RFbXB0
eUNvbXBvbmVudC5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LWRvbS9saWIvUmVhY3RGZWF0dXJl
RmxhZ3MuanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1kb20vbGliL1JlYWN0SG9zdENvbXBvbmVu
dC5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LWRvbS9saWIvUmVhY3RJbnB1dFNlbGVjdGlvbi5q
cyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LWRvbS9saWIvUmVhY3RNb3VudC5qcyIsIndlYnBhY2s6
Ly8vLi9+L3JlYWN0LWRvbS9saWIvUmVhY3ROb2RlVHlwZXMuanMiLCJ3ZWJwYWNrOi8vLy4vfi9y
ZWFjdC1kb20vbGliL1ZpZXdwb3J0TWV0cmljcy5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LWRv
bS9saWIvYWNjdW11bGF0ZUludG8uanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1kb20vbGliL2Zv
ckVhY2hBY2N1bXVsYXRlZC5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LWRvbS9saWIvZ2V0SG9z
dENvbXBvbmVudEZyb21Db21wb3NpdGUuanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1kb20vbGli
L2dldFRleHRDb250ZW50QWNjZXNzb3IuanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1kb20vbGli
L2lucHV0VmFsdWVUcmFja2luZy5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LWRvbS9saWIvaW5z
dGFudGlhdGVSZWFjdENvbXBvbmVudC5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LWRvbS9saWIv
aXNUZXh0SW5wdXRFbGVtZW50LmpzIiwid2VicGFjazovLy8uL34vcmVhY3QtZG9tL2xpYi9zZXRU
ZXh0Q29udGVudC5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LWRvbS9saWIvdHJhdmVyc2VBbGxD
aGlsZHJlbi5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LXJlZHV4L2xpYi9jb21wb25lbnRzL2Nv
bm5lY3RBZHZhbmNlZC5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LXJlZHV4L2xpYi9jb25uZWN0
L3dyYXBNYXBUb1Byb3BzLmpzIiwid2VicGFjazovLy8uL34vcmVhY3QtcmVkdXgvbGliL2luZGV4
LmpzIiwid2VicGFjazovLy8uL34vcmVhY3QtcmVkdXgvbGliL3V0aWxzL1Byb3BUeXBlcy5qcyIs
IndlYnBhY2s6Ly8vLi9+L3JlYWN0LXJlZHV4L2xpYi91dGlscy92ZXJpZnlQbGFpbk9iamVjdC5q
cyIsIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy9Ub2RvVGV4dElucHV0LmpzIiwid2VicGFj
azovLy8uL3NyYy9jb25zdGFudHMvQWN0aW9uVHlwZXMuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2Nv
bnN0YW50cy9Ub2RvRmlsdGVycy5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LXNjcmlwdHMvfi9w
cm9jZXNzL2Jyb3dzZXIuanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1zY3JpcHRzL34vcHJvbWlz
ZS9saWIvY29yZS5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0L2xpYi9SZWFjdEJhc2VDbGFzc2Vz
LmpzIiwid2VicGFjazovLy8uL34vcmVhY3QvbGliL1JlYWN0Q29tcG9uZW50VHJlZUhvb2suanMi
LCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC9saWIvUmVhY3RFbGVtZW50U3ltYm9sLmpzIiwid2VicGFj
azovLy8uL34vcmVhY3QvbGliL1JlYWN0Tm9vcFVwZGF0ZVF1ZXVlLmpzIiwid2VicGFjazovLy8u
L34vcmVhY3QvbGliL2NhbkRlZmluZVByb3BlcnR5LmpzIiwid2VicGFjazovLy8uL34vcmVkdXgv
bGliL2NvbXBvc2UuanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWR1eC9saWIvY3JlYXRlU3RvcmUuanMi
LCJ3ZWJwYWNrOi8vLy4vfi9yZWR1eC9saWIvdXRpbHMvd2FybmluZy5qcyIsIndlYnBhY2s6Ly8v
Li9+L2NyZWF0ZS1yZWFjdC1jbGFzcy9mYWN0b3J5LmpzIiwid2VicGFjazovLy8uL34vZmJqcy9s
aWIvY2FtZWxpemUuanMiLCJ3ZWJwYWNrOi8vLy4vfi9mYmpzL2xpYi9jYW1lbGl6ZVN0eWxlTmFt
ZS5qcyIsIndlYnBhY2s6Ly8vLi9+L2ZianMvbGliL2NvbnRhaW5zTm9kZS5qcyIsIndlYnBhY2s6
Ly8vLi9+L2ZianMvbGliL2NyZWF0ZUFycmF5RnJvbU1peGVkLmpzIiwid2VicGFjazovLy8uL34v
ZmJqcy9saWIvY3JlYXRlTm9kZXNGcm9tTWFya3VwLmpzIiwid2VicGFjazovLy8uL34vZmJqcy9s
aWIvZ2V0TWFya3VwV3JhcC5qcyIsIndlYnBhY2s6Ly8vLi9+L2ZianMvbGliL2dldFVuYm91bmRl
ZFNjcm9sbFBvc2l0aW9uLmpzIiwid2VicGFjazovLy8uL34vZmJqcy9saWIvaHlwaGVuYXRlLmpz
Iiwid2VicGFjazovLy8uL34vZmJqcy9saWIvaHlwaGVuYXRlU3R5bGVOYW1lLmpzIiwid2VicGFj
azovLy8uL34vZmJqcy9saWIvaXNOb2RlLmpzIiwid2VicGFjazovLy8uL34vZmJqcy9saWIvaXNU
ZXh0Tm9kZS5qcyIsIndlYnBhY2s6Ly8vLi9+L2ZianMvbGliL21lbW9pemVTdHJpbmdPbmx5Lmpz
Iiwid2VicGFjazovLy8uL34vaG9pc3Qtbm9uLXJlYWN0LXN0YXRpY3MvaW5kZXguanMiLCJ3ZWJw
YWNrOi8vLy4vfi9pbnZhcmlhbnQvYnJvd3Nlci5qcyIsIndlYnBhY2s6Ly8vLi9+L2xvZGFzaC9f
YmFzZUdldFRhZy5qcyIsIndlYnBhY2s6Ly8vLi9+L2xvZGFzaC9fZnJlZUdsb2JhbC5qcyIsIndl
YnBhY2s6Ly8vLi9+L2xvZGFzaC9fZ2V0UHJvdG90eXBlLmpzIiwid2VicGFjazovLy8uL34vbG9k
YXNoL19nZXRSYXdUYWcuanMiLCJ3ZWJwYWNrOi8vLy4vfi9sb2Rhc2gvX29iamVjdFRvU3RyaW5n
LmpzIiwid2VicGFjazovLy8uL34vbG9kYXNoL19vdmVyQXJnLmpzIiwid2VicGFjazovLy8uL34v
bG9kYXNoL19yb290LmpzIiwid2VicGFjazovLy8uL34vbG9kYXNoL2lzT2JqZWN0TGlrZS5qcyIs
IndlYnBhY2s6Ly8vLi9+L3Byb3AtdHlwZXMvY2hlY2tQcm9wVHlwZXMuanMiLCJ3ZWJwYWNrOi8v
Ly4vfi9wcm9wLXR5cGVzL2ZhY3RvcnlXaXRoVGhyb3dpbmdTaGltcy5qcyIsIndlYnBhY2s6Ly8v
Li9+L3Byb3AtdHlwZXMvZmFjdG9yeVdpdGhUeXBlQ2hlY2tlcnMuanMiLCJ3ZWJwYWNrOi8vLy4v
fi9yZWFjdC1kb20vaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1kb20vbGliL0FSSUFE
T01Qcm9wZXJ0eUNvbmZpZy5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LWRvbS9saWIvQXV0b0Zv
Y3VzVXRpbHMuanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1kb20vbGliL0JlZm9yZUlucHV0RXZl
bnRQbHVnaW4uanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1kb20vbGliL0NTU1Byb3BlcnR5T3Bl
cmF0aW9ucy5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LWRvbS9saWIvQ2hhbmdlRXZlbnRQbHVn
aW4uanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1kb20vbGliL0Rhbmdlci5qcyIsIndlYnBhY2s6
Ly8vLi9+L3JlYWN0LWRvbS9saWIvRGVmYXVsdEV2ZW50UGx1Z2luT3JkZXIuanMiLCJ3ZWJwYWNr
Oi8vLy4vfi9yZWFjdC1kb20vbGliL0VudGVyTGVhdmVFdmVudFBsdWdpbi5qcyIsIndlYnBhY2s6
Ly8vLi9+L3JlYWN0LWRvbS9saWIvRmFsbGJhY2tDb21wb3NpdGlvblN0YXRlLmpzIiwid2VicGFj
azovLy8uL34vcmVhY3QtZG9tL2xpYi9IVE1MRE9NUHJvcGVydHlDb25maWcuanMiLCJ3ZWJwYWNr
Oi8vLy4vfi9yZWFjdC1kb20vbGliL1JlYWN0Q2hpbGRSZWNvbmNpbGVyLmpzIiwid2VicGFjazov
Ly8uL34vcmVhY3QtZG9tL2xpYi9SZWFjdENvbXBvbmVudEJyb3dzZXJFbnZpcm9ubWVudC5qcyIs
IndlYnBhY2s6Ly8vLi9+L3JlYWN0LWRvbS9saWIvUmVhY3RDb21wb3NpdGVDb21wb25lbnQuanMi
LCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1kb20vbGliL1JlYWN0RE9NLmpzIiwid2VicGFjazovLy8u
L34vcmVhY3QtZG9tL2xpYi9SZWFjdERPTUNvbXBvbmVudC5qcyIsIndlYnBhY2s6Ly8vLi9+L3Jl
YWN0LWRvbS9saWIvUmVhY3RET01Db250YWluZXJJbmZvLmpzIiwid2VicGFjazovLy8uL34vcmVh
Y3QtZG9tL2xpYi9SZWFjdERPTUVtcHR5Q29tcG9uZW50LmpzIiwid2VicGFjazovLy8uL34vcmVh
Y3QtZG9tL2xpYi9SZWFjdERPTUZlYXR1cmVGbGFncy5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0
LWRvbS9saWIvUmVhY3RET01JRE9wZXJhdGlvbnMuanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1k
b20vbGliL1JlYWN0RE9NSW5wdXQuanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1kb20vbGliL1Jl
YWN0RE9NT3B0aW9uLmpzIiwid2VicGFjazovLy8uL34vcmVhY3QtZG9tL2xpYi9SZWFjdERPTVNl
bGVjdGlvbi5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LWRvbS9saWIvUmVhY3RET01UZXh0Q29t
cG9uZW50LmpzIiwid2VicGFjazovLy8uL34vcmVhY3QtZG9tL2xpYi9SZWFjdERPTVRleHRhcmVh
LmpzIiwid2VicGFjazovLy8uL34vcmVhY3QtZG9tL2xpYi9SZWFjdERPTVRyZWVUcmF2ZXJzYWwu
anMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1kb20vbGliL1JlYWN0RGVmYXVsdEJhdGNoaW5nU3Ry
YXRlZ3kuanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1kb20vbGliL1JlYWN0RGVmYXVsdEluamVj
dGlvbi5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LWRvbS9saWIvUmVhY3RFdmVudEVtaXR0ZXJN
aXhpbi5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LWRvbS9saWIvUmVhY3RFdmVudExpc3RlbmVy
LmpzIiwid2VicGFjazovLy8uL34vcmVhY3QtZG9tL2xpYi9SZWFjdEluamVjdGlvbi5qcyIsIndl
YnBhY2s6Ly8vLi9+L3JlYWN0LWRvbS9saWIvUmVhY3RNYXJrdXBDaGVja3N1bS5qcyIsIndlYnBh
Y2s6Ly8vLi9+L3JlYWN0LWRvbS9saWIvUmVhY3RNdWx0aUNoaWxkLmpzIiwid2VicGFjazovLy8u
L34vcmVhY3QtZG9tL2xpYi9SZWFjdE93bmVyLmpzIiwid2VicGFjazovLy8uL34vcmVhY3QtZG9t
L2xpYi9SZWFjdFByb3BUeXBlc1NlY3JldC5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LWRvbS9s
aWIvUmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbi5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LWRv
bS9saWIvUmVhY3RSZWYuanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1kb20vbGliL1JlYWN0U2Vy
dmVyUmVuZGVyaW5nVHJhbnNhY3Rpb24uanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1kb20vbGli
L1JlYWN0U2VydmVyVXBkYXRlUXVldWUuanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1kb20vbGli
L1JlYWN0VmVyc2lvbi5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LWRvbS9saWIvU1ZHRE9NUHJv
cGVydHlDb25maWcuanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1kb20vbGliL1NlbGVjdEV2ZW50
UGx1Z2luLmpzIiwid2VicGFjazovLy8uL34vcmVhY3QtZG9tL2xpYi9TaW1wbGVFdmVudFBsdWdp
bi5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LWRvbS9saWIvU3ludGhldGljQW5pbWF0aW9uRXZl
bnQuanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1kb20vbGliL1N5bnRoZXRpY0NsaXBib2FyZEV2
ZW50LmpzIiwid2VicGFjazovLy8uL34vcmVhY3QtZG9tL2xpYi9TeW50aGV0aWNDb21wb3NpdGlv
bkV2ZW50LmpzIiwid2VicGFjazovLy8uL34vcmVhY3QtZG9tL2xpYi9TeW50aGV0aWNEcmFnRXZl
bnQuanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1kb20vbGliL1N5bnRoZXRpY0ZvY3VzRXZlbnQu
anMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1kb20vbGliL1N5bnRoZXRpY0lucHV0RXZlbnQuanMi
LCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1kb20vbGliL1N5bnRoZXRpY0tleWJvYXJkRXZlbnQuanMi
LCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1kb20vbGliL1N5bnRoZXRpY1RvdWNoRXZlbnQuanMiLCJ3
ZWJwYWNrOi8vLy4vfi9yZWFjdC1kb20vbGliL1N5bnRoZXRpY1RyYW5zaXRpb25FdmVudC5qcyIs
IndlYnBhY2s6Ly8vLi9+L3JlYWN0LWRvbS9saWIvU3ludGhldGljV2hlZWxFdmVudC5qcyIsIndl
YnBhY2s6Ly8vLi9+L3JlYWN0LWRvbS9saWIvYWRsZXIzMi5qcyIsIndlYnBhY2s6Ly8vLi9+L3Jl
YWN0LWRvbS9saWIvZGFuZ2Vyb3VzU3R5bGVWYWx1ZS5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0
LWRvbS9saWIvZmluZERPTU5vZGUuanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1kb20vbGliL2Zs
YXR0ZW5DaGlsZHJlbi5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LWRvbS9saWIvZ2V0RXZlbnRL
ZXkuanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1kb20vbGliL2dldEl0ZXJhdG9yRm4uanMiLCJ3
ZWJwYWNrOi8vLy4vfi9yZWFjdC1kb20vbGliL2dldE5vZGVGb3JDaGFyYWN0ZXJPZmZzZXQuanMi
LCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1kb20vbGliL2dldFZlbmRvclByZWZpeGVkRXZlbnROYW1l
LmpzIiwid2VicGFjazovLy8uL34vcmVhY3QtZG9tL2xpYi9xdW90ZUF0dHJpYnV0ZVZhbHVlRm9y
QnJvd3Nlci5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LWRvbS9saWIvcmVuZGVyU3VidHJlZUlu
dG9Db250YWluZXIuanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1yZWR1eC9saWIvY29tcG9uZW50
cy9Qcm92aWRlci5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LXJlZHV4L2xpYi9jb25uZWN0L2Nv
bm5lY3QuanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1yZWR1eC9saWIvY29ubmVjdC9tYXBEaXNw
YXRjaFRvUHJvcHMuanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1yZWR1eC9saWIvY29ubmVjdC9t
YXBTdGF0ZVRvUHJvcHMuanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1yZWR1eC9saWIvY29ubmVj
dC9tZXJnZVByb3BzLmpzIiwid2VicGFjazovLy8uL34vcmVhY3QtcmVkdXgvbGliL2Nvbm5lY3Qv
c2VsZWN0b3JGYWN0b3J5LmpzIiwid2VicGFjazovLy8uL34vcmVhY3QtcmVkdXgvbGliL2Nvbm5l
Y3QvdmVyaWZ5U3Vic2VsZWN0b3JzLmpzIiwid2VicGFjazovLy8uL34vcmVhY3QtcmVkdXgvbGli
L3V0aWxzL1N1YnNjcmlwdGlvbi5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LXJlZHV4L2xpYi91
dGlscy9zaGFsbG93RXF1YWwuanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1zY3JpcHRzL2NvbmZp
Zy9wb2x5ZmlsbHMuanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1zY3JpcHRzL34vYXNhcC9icm93
c2VyLXJhdy5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYWN0aW9ucy9pbmRleC5qcyIsIndlYnBhY2s6
Ly8vLi9zcmMvY29tcG9uZW50cy9Gb290ZXIuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbXBvbmVu
dHMvSGVhZGVyLmpzIiwid2VicGFjazovLy8uL3NyYy9jb21wb25lbnRzL01haW5TZWN0aW9uLmpz
Iiwid2VicGFjazovLy8uL3NyYy9jb21wb25lbnRzL1RvZG9JdGVtLmpzIiwid2VicGFjazovLy8u
L3NyYy9jb250YWluZXJzL0FwcC5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvaW5kZXguanMiLCJ3ZWJw
YWNrOi8vLy4vc3JjL3JlZHVjZXJzL2luZGV4LmpzIiwid2VicGFjazovLy8uL3NyYy9yZWR1Y2Vy
cy90b2Rvcy5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LXNjcmlwdHMvfi9vYmplY3QtYXNzaWdu
L2luZGV4LmpzIiwid2VicGFjazovLy8uL34vcmVhY3Qtc2NyaXB0cy9+L3Byb21pc2UvbGliL2Vz
Ni1leHRlbnNpb25zLmpzIiwid2VicGFjazovLy8uL34vcmVhY3Qtc2NyaXB0cy9+L3Byb21pc2Uv
bGliL3JlamVjdGlvbi10cmFja2luZy5qcyIsIndlYnBhY2s6Ly8vKHdlYnBhY2spL2J1aWxkaW4v
bW9kdWxlLmpzIiwid2VicGFjazovLy8uL34vcmVhY3Qtc2NyaXB0cy9+L3doYXR3Zy1mZXRjaC9m
ZXRjaC5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0L2xpYi9SZWFjdENoaWxkcmVuLmpzIiwid2Vi
cGFjazovLy8uL34vcmVhY3QvbGliL1JlYWN0RE9NRmFjdG9yaWVzLmpzIiwid2VicGFjazovLy8u
L34vcmVhY3QvbGliL1JlYWN0UHJvcFR5cGVzLmpzIiwid2VicGFjazovLy8uL34vcmVhY3QvbGli
L2NyZWF0ZUNsYXNzLmpzIiwid2VicGFjazovLy8uL34vcmVhY3QvbGliL2dldE5leHREZWJ1Z0lE
LmpzIiwid2VicGFjazovLy8uL34vcmVhY3QvbGliL2xvd1ByaW9yaXR5V2FybmluZy5qcyIsIndl
YnBhY2s6Ly8vLi9+L3JlYWN0L2xpYi9vbmx5Q2hpbGQuanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFj
dC9saWIvdHJhdmVyc2VBbGxDaGlsZHJlbi5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlZHV4L2xpYi9h
cHBseU1pZGRsZXdhcmUuanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWR1eC9saWIvYmluZEFjdGlvbkNy
ZWF0b3JzLmpzIiwid2VicGFjazovLy8uL34vcmVkdXgvbGliL2NvbWJpbmVSZWR1Y2Vycy5qcyIs
IndlYnBhY2s6Ly8vLi9+L3N5bWJvbC1vYnNlcnZhYmxlL2luZGV4LmpzIiwid2VicGFjazovLy8u
L34vc3ltYm9sLW9ic2VydmFibGUvbGliL2luZGV4LmpzIiwid2VicGFjazovLy8uL34vc3ltYm9s
LW9ic2VydmFibGUvbGliL3BvbnlmaWxsLmpzIiwid2VicGFjazovLy8uL34vcmVhY3QvbGliL1Bv
b2xlZENsYXNzLmpzIl0sIm5hbWVzIjpbIm1vZHVsZXMiLCJfX3dlYnBhY2tfcmVxdWlyZV9fIiwi
bW9kdWxlSWQiLCJpbnN0YWxsZWRNb2R1bGVzIiwiZXhwb3J0cyIsIm1vZHVsZSIsImlkIiwibG9h
ZGVkIiwiY2FsbCIsIm0iLCJjIiwicCIsImkiLCJPYmplY3QiLCJwcm90b3R5cGUiLCJoYXNPd25Q
cm9wZXJ0eSIsIl9tIiwiYXJncyIsInNsaWNlIiwiZm4iLCJhIiwiYiIsImFwcGx5IiwidGhpcyIs
ImNvbmNhdCIsImludmFyaWFudCIsImNvbmRpdGlvbiIsImZvcm1hdCIsImQiLCJlIiwiZiIsInZh
bGlkYXRlRm9ybWF0IiwiZXJyb3IiLCJ1bmRlZmluZWQiLCJFcnJvciIsImFyZ0luZGV4IiwicmVw
bGFjZSIsIm5hbWUiLCJmcmFtZXNUb1BvcCIsImVtcHR5RnVuY3Rpb24iLCJ3YXJuaW5nIiwicmVh
Y3RQcm9kSW52YXJpYW50IiwiY29kZSIsImFyZ0NvdW50IiwiYXJndW1lbnRzIiwibGVuZ3RoIiwi
bWVzc2FnZSIsImFyZ0lkeCIsImVuY29kZVVSSUNvbXBvbmVudCIsInRvT2JqZWN0IiwidmFsIiwi
VHlwZUVycm9yIiwic2hvdWxkVXNlTmF0aXZlIiwiYXNzaWduIiwidGVzdDEiLCJTdHJpbmciLCJn
ZXRPd25Qcm9wZXJ0eU5hbWVzIiwidGVzdDIiLCJmcm9tQ2hhckNvZGUiLCJvcmRlcjIiLCJtYXAi
LCJuIiwiam9pbiIsInRlc3QzIiwic3BsaXQiLCJmb3JFYWNoIiwibGV0dGVyIiwia2V5cyIsImVy
ciIsImdldE93blByb3BlcnR5U3ltYm9scyIsInByb3BJc0VudW1lcmFibGUiLCJwcm9wZXJ0eUlz
RW51bWVyYWJsZSIsInRhcmdldCIsInNvdXJjZSIsImZyb20iLCJzeW1ib2xzIiwidG8iLCJzIiwi
a2V5Iiwic2hvdWxkUHJlY2FjaGVOb2RlIiwibm9kZSIsIm5vZGVJRCIsIm5vZGVUeXBlIiwiZ2V0
QXR0cmlidXRlIiwiQVRUUl9OQU1FIiwibm9kZVZhbHVlIiwiZ2V0UmVuZGVyZWRIb3N0T3JUZXh0
RnJvbUNvbXBvbmVudCIsImNvbXBvbmVudCIsInJlbmRlcmVkIiwiX3JlbmRlcmVkQ29tcG9uZW50
IiwicHJlY2FjaGVOb2RlIiwiaW5zdCIsImhvc3RJbnN0IiwiX2hvc3ROb2RlIiwiaW50ZXJuYWxJ
bnN0YW5jZUtleSIsInVuY2FjaGVOb2RlIiwicHJlY2FjaGVDaGlsZE5vZGVzIiwiX2ZsYWdzIiwi
RmxhZ3MiLCJoYXNDYWNoZWRDaGlsZE5vZGVzIiwiY2hpbGRyZW4iLCJfcmVuZGVyZWRDaGlsZHJl
biIsImNoaWxkTm9kZSIsImZpcnN0Q2hpbGQiLCJvdXRlciIsImNoaWxkSW5zdCIsImNoaWxkSUQi
LCJfZG9tSUQiLCJuZXh0U2libGluZyIsIl9wcm9kSW52YXJpYW50IiwiZ2V0Q2xvc2VzdEluc3Rh
bmNlRnJvbU5vZGUiLCJwYXJlbnRzIiwicHVzaCIsInBhcmVudE5vZGUiLCJjbG9zZXN0IiwicG9w
IiwiZ2V0SW5zdGFuY2VGcm9tTm9kZSIsImdldE5vZGVGcm9tSW5zdGFuY2UiLCJfaG9zdFBhcmVu
dCIsIkRPTVByb3BlcnR5IiwiUmVhY3RET01Db21wb25lbnRGbGFncyIsIklEX0FUVFJJQlVURV9O
QU1FIiwiTWF0aCIsInJhbmRvbSIsInRvU3RyaW5nIiwiUmVhY3RET01Db21wb25lbnRUcmVlIiwi
Y2FuVXNlRE9NIiwid2luZG93IiwiZG9jdW1lbnQiLCJjcmVhdGVFbGVtZW50IiwiRXhlY3V0aW9u
RW52aXJvbm1lbnQiLCJjYW5Vc2VXb3JrZXJzIiwiV29ya2VyIiwiY2FuVXNlRXZlbnRMaXN0ZW5l
cnMiLCJhZGRFdmVudExpc3RlbmVyIiwiYXR0YWNoRXZlbnQiLCJjYW5Vc2VWaWV3cG9ydCIsInNj
cmVlbiIsImlzSW5Xb3JrZXIiLCJtYWtlRW1wdHlGdW5jdGlvbiIsImFyZyIsInRoYXRSZXR1cm5z
IiwidGhhdFJldHVybnNGYWxzZSIsInRoYXRSZXR1cm5zVHJ1ZSIsInRoYXRSZXR1cm5zTnVsbCIs
InRoYXRSZXR1cm5zVGhpcyIsInRoYXRSZXR1cm5zQXJndW1lbnQiLCJkZWJ1Z1Rvb2wiLCJlbnN1
cmVJbmplY3RlZCIsIlJlYWN0VXBkYXRlcyIsIlJlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb24iLCJi
YXRjaGluZ1N0cmF0ZWd5IiwiUmVhY3RVcGRhdGVzRmx1c2hUcmFuc2FjdGlvbiIsInJlaW5pdGlh
bGl6ZVRyYW5zYWN0aW9uIiwiZGlydHlDb21wb25lbnRzTGVuZ3RoIiwiY2FsbGJhY2tRdWV1ZSIs
IkNhbGxiYWNrUXVldWUiLCJnZXRQb29sZWQiLCJyZWNvbmNpbGVUcmFuc2FjdGlvbiIsImJhdGNo
ZWRVcGRhdGVzIiwiY2FsbGJhY2siLCJtb3VudE9yZGVyQ29tcGFyYXRvciIsImMxIiwiYzIiLCJf
bW91bnRPcmRlciIsInJ1bkJhdGNoZWRVcGRhdGVzIiwidHJhbnNhY3Rpb24iLCJsZW4iLCJkaXJ0
eUNvbXBvbmVudHMiLCJzb3J0IiwidXBkYXRlQmF0Y2hOdW1iZXIiLCJjYWxsYmFja3MiLCJfcGVu
ZGluZ0NhbGxiYWNrcyIsIm1hcmtlck5hbWUiLCJSZWFjdEZlYXR1cmVGbGFncyIsImxvZ1RvcExl
dmVsUmVuZGVycyIsIm5hbWVkQ29tcG9uZW50IiwiX2N1cnJlbnRFbGVtZW50IiwidHlwZSIsImlz
UmVhY3RUb3BMZXZlbFdyYXBwZXIiLCJnZXROYW1lIiwiY29uc29sZSIsInRpbWUiLCJSZWFjdFJl
Y29uY2lsZXIiLCJwZXJmb3JtVXBkYXRlSWZOZWNlc3NhcnkiLCJ0aW1lRW5kIiwiaiIsImVucXVl
dWUiLCJnZXRQdWJsaWNJbnN0YW5jZSIsImVucXVldWVVcGRhdGUiLCJpc0JhdGNoaW5nVXBkYXRl
cyIsIl91cGRhdGVCYXRjaE51bWJlciIsImFzYXAiLCJjb250ZXh0IiwiYXNhcENhbGxiYWNrUXVl
dWUiLCJhc2FwRW5xdWV1ZWQiLCJfYXNzaWduIiwiUG9vbGVkQ2xhc3MiLCJUcmFuc2FjdGlvbiIs
Ik5FU1RFRF9VUERBVEVTIiwiaW5pdGlhbGl6ZSIsImNsb3NlIiwic3BsaWNlIiwiZmx1c2hCYXRj
aGVkVXBkYXRlcyIsIlVQREFURV9RVUVVRUlORyIsInJlc2V0Iiwibm90aWZ5QWxsIiwiVFJBTlNB
Q1RJT05fV1JBUFBFUlMiLCJnZXRUcmFuc2FjdGlvbldyYXBwZXJzIiwiZGVzdHJ1Y3RvciIsInJl
bGVhc2UiLCJwZXJmb3JtIiwibWV0aG9kIiwic2NvcGUiLCJhZGRQb29saW5nVG8iLCJxdWV1ZSIs
IlJlYWN0VXBkYXRlc0luamVjdGlvbiIsImluamVjdFJlY29uY2lsZVRyYW5zYWN0aW9uIiwiUmVj
b25jaWxlVHJhbnNhY3Rpb24iLCJpbmplY3RCYXRjaGluZ1N0cmF0ZWd5IiwiX2JhdGNoaW5nU3Ry
YXRlZ3kiLCJpbmplY3Rpb24iLCJTeW50aGV0aWNFdmVudCIsImRpc3BhdGNoQ29uZmlnIiwidGFy
Z2V0SW5zdCIsIm5hdGl2ZUV2ZW50IiwibmF0aXZlRXZlbnRUYXJnZXQiLCJfdGFyZ2V0SW5zdCIs
IkludGVyZmFjZSIsImNvbnN0cnVjdG9yIiwicHJvcE5hbWUiLCJub3JtYWxpemUiLCJkZWZhdWx0
UHJldmVudGVkIiwicmV0dXJuVmFsdWUiLCJpc0RlZmF1bHRQcmV2ZW50ZWQiLCJpc1Byb3BhZ2F0
aW9uU3RvcHBlZCIsInNob3VsZEJlUmVsZWFzZWRQcm9wZXJ0aWVzIiwiUHJveHkiLCJFdmVudElu
dGVyZmFjZSIsImN1cnJlbnRUYXJnZXQiLCJldmVudFBoYXNlIiwiYnViYmxlcyIsImNhbmNlbGFi
bGUiLCJ0aW1lU3RhbXAiLCJldmVudCIsIkRhdGUiLCJub3ciLCJpc1RydXN0ZWQiLCJwcmV2ZW50
RGVmYXVsdCIsInN0b3BQcm9wYWdhdGlvbiIsImNhbmNlbEJ1YmJsZSIsInBlcnNpc3QiLCJpc1Bl
cnNpc3RlbnQiLCJhdWdtZW50Q2xhc3MiLCJDbGFzcyIsIlN1cGVyIiwiRSIsImZvdXJBcmd1bWVu
dFBvb2xlciIsIlJlYWN0Q3VycmVudE93bmVyIiwiY3VycmVudCIsImluc2VydFRyZWVDaGlsZHJl
biIsInRyZWUiLCJlbmFibGVMYXp5IiwiaW5zZXJ0VHJlZUJlZm9yZSIsImh0bWwiLCJzZXRJbm5l
ckhUTUwiLCJ0ZXh0Iiwic2V0VGV4dENvbnRlbnQiLCJyZXBsYWNlQ2hpbGRXaXRoVHJlZSIsIm9s
ZE5vZGUiLCJuZXdUcmVlIiwicmVwbGFjZUNoaWxkIiwicXVldWVDaGlsZCIsInBhcmVudFRyZWUi
LCJjaGlsZFRyZWUiLCJhcHBlbmRDaGlsZCIsInF1ZXVlSFRNTCIsInF1ZXVlVGV4dCIsIm5vZGVO
YW1lIiwiRE9NTGF6eVRyZWUiLCJET01OYW1lc3BhY2VzIiwiY3JlYXRlTWljcm9zb2Z0VW5zYWZl
TG9jYWxGdW5jdGlvbiIsIkVMRU1FTlRfTk9ERV9UWVBFIiwiRE9DVU1FTlRfRlJBR01FTlRfTk9E
RV9UWVBFIiwiZG9jdW1lbnRNb2RlIiwibmF2aWdhdG9yIiwidXNlckFnZW50IiwidGVzdCIsInJl
ZmVyZW5jZU5vZGUiLCJ0b0xvd2VyQ2FzZSIsIm5hbWVzcGFjZVVSSSIsImluc2VydEJlZm9yZSIs
ImNoZWNrTWFzayIsInZhbHVlIiwiYml0bWFzayIsIkRPTVByb3BlcnR5SW5qZWN0aW9uIiwiTVVT
VF9VU0VfUFJPUEVSVFkiLCJIQVNfQk9PTEVBTl9WQUxVRSIsIkhBU19OVU1FUklDX1ZBTFVFIiwi
SEFTX1BPU0lUSVZFX05VTUVSSUNfVkFMVUUiLCJIQVNfT1ZFUkxPQURFRF9CT09MRUFOX1ZBTFVF
IiwiaW5qZWN0RE9NUHJvcGVydHlDb25maWciLCJkb21Qcm9wZXJ0eUNvbmZpZyIsIkluamVjdGlv
biIsIlByb3BlcnRpZXMiLCJET01BdHRyaWJ1dGVOYW1lc3BhY2VzIiwiRE9NQXR0cmlidXRlTmFt
ZXMiLCJET01Qcm9wZXJ0eU5hbWVzIiwiRE9NTXV0YXRpb25NZXRob2RzIiwiaXNDdXN0b21BdHRy
aWJ1dGUiLCJfaXNDdXN0b21BdHRyaWJ1dGVGdW5jdGlvbnMiLCJwcm9wZXJ0aWVzIiwibG93ZXJD
YXNlZCIsInByb3BDb25maWciLCJwcm9wZXJ0eUluZm8iLCJhdHRyaWJ1dGVOYW1lIiwiYXR0cmli
dXRlTmFtZXNwYWNlIiwicHJvcGVydHlOYW1lIiwibXV0YXRpb25NZXRob2QiLCJtdXN0VXNlUHJv
cGVydHkiLCJoYXNCb29sZWFuVmFsdWUiLCJoYXNOdW1lcmljVmFsdWUiLCJoYXNQb3NpdGl2ZU51
bWVyaWNWYWx1ZSIsImhhc092ZXJsb2FkZWRCb29sZWFuVmFsdWUiLCJBVFRSSUJVVEVfTkFNRV9T
VEFSVF9DSEFSIiwiUk9PVF9BVFRSSUJVVEVfTkFNRSIsIkFUVFJJQlVURV9OQU1FX0NIQVIiLCJn
ZXRQb3NzaWJsZVN0YW5kYXJkTmFtZSIsImlzQ3VzdG9tQXR0cmlidXRlRm4iLCJhdHRhY2hSZWZz
IiwiUmVhY3RSZWYiLCJtb3VudENvbXBvbmVudCIsImludGVybmFsSW5zdGFuY2UiLCJob3N0UGFy
ZW50IiwiaG9zdENvbnRhaW5lckluZm8iLCJwYXJlbnREZWJ1Z0lEIiwibWFya3VwIiwicmVmIiwi
Z2V0UmVhY3RNb3VudFJlYWR5IiwiZ2V0SG9zdE5vZGUiLCJ1bm1vdW50Q29tcG9uZW50Iiwic2Fm
ZWx5IiwiZGV0YWNoUmVmcyIsInJlY2VpdmVDb21wb25lbnQiLCJuZXh0RWxlbWVudCIsInByZXZF
bGVtZW50IiwiX2NvbnRleHQiLCJyZWZzQ2hhbmdlZCIsInNob3VsZFVwZGF0ZVJlZnMiLCJSZWFj
dEJhc2VDbGFzc2VzIiwiUmVhY3RDaGlsZHJlbiIsIlJlYWN0RE9NRmFjdG9yaWVzIiwiUmVhY3RF
bGVtZW50IiwiUmVhY3RQcm9wVHlwZXMiLCJSZWFjdFZlcnNpb24iLCJjcmVhdGVSZWFjdENsYXNz
Iiwib25seUNoaWxkIiwiY3JlYXRlRmFjdG9yeSIsImNsb25lRWxlbWVudCIsIl9fc3ByZWFkIiwi
Y3JlYXRlTWl4aW4iLCJtaXhpbiIsIlJlYWN0IiwiQ2hpbGRyZW4iLCJjb3VudCIsInRvQXJyYXki
LCJvbmx5IiwiQ29tcG9uZW50IiwiUHVyZUNvbXBvbmVudCIsImlzVmFsaWRFbGVtZW50IiwiUHJv
cFR5cGVzIiwiY3JlYXRlQ2xhc3MiLCJET00iLCJ2ZXJzaW9uIiwiaGFzVmFsaWRSZWYiLCJjb25m
aWciLCJoYXNWYWxpZEtleSIsIlJFQUNUX0VMRU1FTlRfVFlQRSIsIlJFU0VSVkVEX1BST1BTIiwi
X19zZWxmIiwiX19zb3VyY2UiLCJzZWxmIiwib3duZXIiLCJwcm9wcyIsImVsZW1lbnQiLCIkJHR5
cGVvZiIsIl9vd25lciIsImNoaWxkcmVuTGVuZ3RoIiwiY2hpbGRBcnJheSIsIkFycmF5IiwiZGVm
YXVsdFByb3BzIiwiZmFjdG9yeSIsImJpbmQiLCJjbG9uZUFuZFJlcGxhY2VLZXkiLCJvbGRFbGVt
ZW50IiwibmV3S2V5IiwibmV3RWxlbWVudCIsIl9zZWxmIiwiX3NvdXJjZSIsIm9iamVjdCIsImlz
SW50ZXJhY3RpdmUiLCJ0YWciLCJzaG91bGRQcmV2ZW50TW91c2VFdmVudCIsImRpc2FibGVkIiwi
RXZlbnRQbHVnaW5SZWdpc3RyeSIsIkV2ZW50UGx1Z2luVXRpbHMiLCJSZWFjdEVycm9yVXRpbHMi
LCJhY2N1bXVsYXRlSW50byIsImZvckVhY2hBY2N1bXVsYXRlZCIsImxpc3RlbmVyQmFuayIsImV2
ZW50UXVldWUiLCJleGVjdXRlRGlzcGF0Y2hlc0FuZFJlbGVhc2UiLCJzaW11bGF0ZWQiLCJleGVj
dXRlRGlzcGF0Y2hlc0luT3JkZXIiLCJleGVjdXRlRGlzcGF0Y2hlc0FuZFJlbGVhc2VTaW11bGF0
ZWQiLCJleGVjdXRlRGlzcGF0Y2hlc0FuZFJlbGVhc2VUb3BMZXZlbCIsImdldERpY3Rpb25hcnlL
ZXkiLCJfcm9vdE5vZGVJRCIsIkV2ZW50UGx1Z2luSHViIiwiaW5qZWN0RXZlbnRQbHVnaW5PcmRl
ciIsImluamVjdEV2ZW50UGx1Z2luc0J5TmFtZSIsInB1dExpc3RlbmVyIiwicmVnaXN0cmF0aW9u
TmFtZSIsImxpc3RlbmVyIiwiYmFua0ZvclJlZ2lzdHJhdGlvbk5hbWUiLCJQbHVnaW5Nb2R1bGUi
LCJyZWdpc3RyYXRpb25OYW1lTW9kdWxlcyIsImRpZFB1dExpc3RlbmVyIiwiZ2V0TGlzdGVuZXIi
LCJkZWxldGVMaXN0ZW5lciIsIndpbGxEZWxldGVMaXN0ZW5lciIsImRlbGV0ZUFsbExpc3RlbmVy
cyIsImV4dHJhY3RFdmVudHMiLCJ0b3BMZXZlbFR5cGUiLCJldmVudHMiLCJwbHVnaW5zIiwicG9z
c2libGVQbHVnaW4iLCJleHRyYWN0ZWRFdmVudHMiLCJlbnF1ZXVlRXZlbnRzIiwicHJvY2Vzc0V2
ZW50UXVldWUiLCJwcm9jZXNzaW5nRXZlbnRRdWV1ZSIsInJldGhyb3dDYXVnaHRFcnJvciIsIl9f
cHVyZ2UiLCJfX2dldExpc3RlbmVyQmFuayIsImxpc3RlbmVyQXRQaGFzZSIsInByb3BhZ2F0aW9u
UGhhc2UiLCJwaGFzZWRSZWdpc3RyYXRpb25OYW1lcyIsImFjY3VtdWxhdGVEaXJlY3Rpb25hbERp
c3BhdGNoZXMiLCJwaGFzZSIsIl9kaXNwYXRjaExpc3RlbmVycyIsIl9kaXNwYXRjaEluc3RhbmNl
cyIsImFjY3VtdWxhdGVUd29QaGFzZURpc3BhdGNoZXNTaW5nbGUiLCJ0cmF2ZXJzZVR3b1BoYXNl
IiwiYWNjdW11bGF0ZVR3b1BoYXNlRGlzcGF0Y2hlc1NpbmdsZVNraXBUYXJnZXQiLCJwYXJlbnRJ
bnN0IiwiZ2V0UGFyZW50SW5zdGFuY2UiLCJhY2N1bXVsYXRlRGlzcGF0Y2hlcyIsImlnbm9yZWRE
aXJlY3Rpb24iLCJhY2N1bXVsYXRlRGlyZWN0RGlzcGF0Y2hlc1NpbmdsZSIsImFjY3VtdWxhdGVU
d29QaGFzZURpc3BhdGNoZXMiLCJhY2N1bXVsYXRlVHdvUGhhc2VEaXNwYXRjaGVzU2tpcFRhcmdl
dCIsImFjY3VtdWxhdGVFbnRlckxlYXZlRGlzcGF0Y2hlcyIsImxlYXZlIiwiZW50ZXIiLCJ0cmF2
ZXJzZUVudGVyTGVhdmUiLCJhY2N1bXVsYXRlRGlyZWN0RGlzcGF0Y2hlcyIsIkV2ZW50UHJvcGFn
YXRvcnMiLCJSZWFjdEluc3RhbmNlTWFwIiwicmVtb3ZlIiwiX3JlYWN0SW50ZXJuYWxJbnN0YW5j
ZSIsImdldCIsImhhcyIsInNldCIsIlN5bnRoZXRpY1VJRXZlbnQiLCJkaXNwYXRjaE1hcmtlciIs
ImdldEV2ZW50VGFyZ2V0IiwiVUlFdmVudEludGVyZmFjZSIsInZpZXciLCJkb2MiLCJvd25lckRv
Y3VtZW50IiwiZGVmYXVsdFZpZXciLCJwYXJlbnRXaW5kb3ciLCJkZXRhaWwiLCJlbXB0eU9iamVj
dCIsImdldExpc3RlbmluZ0ZvckRvY3VtZW50IiwibW91bnRBdCIsInRvcExpc3RlbmVyc0lES2V5
IiwicmVhY3RUb3BMaXN0ZW5lcnNDb3VudGVyIiwiYWxyZWFkeUxpc3RlbmluZ1RvIiwiaGFzRXZl
bnRQYWdlWFkiLCJSZWFjdEV2ZW50RW1pdHRlck1peGluIiwiVmlld3BvcnRNZXRyaWNzIiwiZ2V0
VmVuZG9yUHJlZml4ZWRFdmVudE5hbWUiLCJpc0V2ZW50U3VwcG9ydGVkIiwiaXNNb25pdG9yaW5n
U2Nyb2xsVmFsdWUiLCJ0b3BFdmVudE1hcHBpbmciLCJ0b3BBYm9ydCIsInRvcEFuaW1hdGlvbkVu
ZCIsInRvcEFuaW1hdGlvbkl0ZXJhdGlvbiIsInRvcEFuaW1hdGlvblN0YXJ0IiwidG9wQmx1ciIs
InRvcENhblBsYXkiLCJ0b3BDYW5QbGF5VGhyb3VnaCIsInRvcENoYW5nZSIsInRvcENsaWNrIiwi
dG9wQ29tcG9zaXRpb25FbmQiLCJ0b3BDb21wb3NpdGlvblN0YXJ0IiwidG9wQ29tcG9zaXRpb25V
cGRhdGUiLCJ0b3BDb250ZXh0TWVudSIsInRvcENvcHkiLCJ0b3BDdXQiLCJ0b3BEb3VibGVDbGlj
ayIsInRvcERyYWciLCJ0b3BEcmFnRW5kIiwidG9wRHJhZ0VudGVyIiwidG9wRHJhZ0V4aXQiLCJ0
b3BEcmFnTGVhdmUiLCJ0b3BEcmFnT3ZlciIsInRvcERyYWdTdGFydCIsInRvcERyb3AiLCJ0b3BE
dXJhdGlvbkNoYW5nZSIsInRvcEVtcHRpZWQiLCJ0b3BFbmNyeXB0ZWQiLCJ0b3BFbmRlZCIsInRv
cEVycm9yIiwidG9wRm9jdXMiLCJ0b3BJbnB1dCIsInRvcEtleURvd24iLCJ0b3BLZXlQcmVzcyIs
InRvcEtleVVwIiwidG9wTG9hZGVkRGF0YSIsInRvcExvYWRlZE1ldGFkYXRhIiwidG9wTG9hZFN0
YXJ0IiwidG9wTW91c2VEb3duIiwidG9wTW91c2VNb3ZlIiwidG9wTW91c2VPdXQiLCJ0b3BNb3Vz
ZU92ZXIiLCJ0b3BNb3VzZVVwIiwidG9wUGFzdGUiLCJ0b3BQYXVzZSIsInRvcFBsYXkiLCJ0b3BQ
bGF5aW5nIiwidG9wUHJvZ3Jlc3MiLCJ0b3BSYXRlQ2hhbmdlIiwidG9wU2Nyb2xsIiwidG9wU2Vl
a2VkIiwidG9wU2Vla2luZyIsInRvcFNlbGVjdGlvbkNoYW5nZSIsInRvcFN0YWxsZWQiLCJ0b3BT
dXNwZW5kIiwidG9wVGV4dElucHV0IiwidG9wVGltZVVwZGF0ZSIsInRvcFRvdWNoQ2FuY2VsIiwi
dG9wVG91Y2hFbmQiLCJ0b3BUb3VjaE1vdmUiLCJ0b3BUb3VjaFN0YXJ0IiwidG9wVHJhbnNpdGlv
bkVuZCIsInRvcFZvbHVtZUNoYW5nZSIsInRvcFdhaXRpbmciLCJ0b3BXaGVlbCIsIlJlYWN0QnJv
d3NlckV2ZW50RW1pdHRlciIsIlJlYWN0RXZlbnRMaXN0ZW5lciIsImluamVjdFJlYWN0RXZlbnRM
aXN0ZW5lciIsInNldEhhbmRsZVRvcExldmVsIiwiaGFuZGxlVG9wTGV2ZWwiLCJzZXRFbmFibGVk
IiwiZW5hYmxlZCIsImlzRW5hYmxlZCIsImxpc3RlblRvIiwiY29udGVudERvY3VtZW50SGFuZGxl
IiwiaXNMaXN0ZW5pbmciLCJkZXBlbmRlbmNpZXMiLCJyZWdpc3RyYXRpb25OYW1lRGVwZW5kZW5j
aWVzIiwiZGVwZW5kZW5jeSIsInRyYXBCdWJibGVkRXZlbnQiLCJ0cmFwQ2FwdHVyZWRFdmVudCIs
IldJTkRPV19IQU5ETEUiLCJoYW5kbGVyQmFzZU5hbWUiLCJoYW5kbGUiLCJzdXBwb3J0c0V2ZW50
UGFnZVhZIiwiY3JlYXRlRXZlbnQiLCJldiIsImVuc3VyZVNjcm9sbFZhbHVlTW9uaXRvcmluZyIs
InJlZnJlc2giLCJyZWZyZXNoU2Nyb2xsVmFsdWVzIiwibW9uaXRvclNjcm9sbFZhbHVlIiwiU3lu
dGhldGljTW91c2VFdmVudCIsImdldEV2ZW50TW9kaWZpZXJTdGF0ZSIsIk1vdXNlRXZlbnRJbnRl
cmZhY2UiLCJzY3JlZW5YIiwic2NyZWVuWSIsImNsaWVudFgiLCJjbGllbnRZIiwiY3RybEtleSIs
InNoaWZ0S2V5IiwiYWx0S2V5IiwibWV0YUtleSIsImdldE1vZGlmaWVyU3RhdGUiLCJidXR0b24i
LCJidXR0b25zIiwicmVsYXRlZFRhcmdldCIsImZyb21FbGVtZW50Iiwic3JjRWxlbWVudCIsInRv
RWxlbWVudCIsInBhZ2VYIiwiY3VycmVudFNjcm9sbExlZnQiLCJwYWdlWSIsImN1cnJlbnRTY3Jv
bGxUb3AiLCJPQlNFUlZFRF9FUlJPUiIsIlRyYW5zYWN0aW9uSW1wbCIsInRyYW5zYWN0aW9uV3Jh
cHBlcnMiLCJ3cmFwcGVySW5pdERhdGEiLCJfaXNJblRyYW5zYWN0aW9uIiwiaXNJblRyYW5zYWN0
aW9uIiwiZXJyb3JUaHJvd24iLCJyZXQiLCJpbml0aWFsaXplQWxsIiwiY2xvc2VBbGwiLCJzdGFy
dEluZGV4Iiwid3JhcHBlciIsImluaXREYXRhIiwiZXNjYXBlSHRtbCIsInN0cmluZyIsInN0ciIs
Im1hdGNoIiwibWF0Y2hIdG1sUmVnRXhwIiwiZXhlYyIsImVzY2FwZSIsImluZGV4IiwibGFzdElu
ZGV4IiwiY2hhckNvZGVBdCIsInN1YnN0cmluZyIsImVzY2FwZVRleHRDb250ZW50Rm9yQnJvd3Nl
ciIsInJldXNhYmxlU1ZHQ29udGFpbmVyIiwiV0hJVEVTUEFDRV9URVNUIiwiTk9OVklTSUJMRV9U
RVNUIiwic3ZnIiwiaW5uZXJIVE1MIiwic3ZnTm9kZSIsInRlc3RFbGVtZW50IiwidGV4dE5vZGUi
LCJkYXRhIiwicmVtb3ZlQ2hpbGQiLCJkZWxldGVEYXRhIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVs
dCIsIm9iaiIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiY29tcG9zZSIsImFwcGx5TWlkZGxld2Fy
ZSIsImJpbmRBY3Rpb25DcmVhdG9ycyIsImNvbWJpbmVSZWR1Y2VycyIsImNyZWF0ZVN0b3JlIiwi
X2NyZWF0ZVN0b3JlIiwiX2NyZWF0ZVN0b3JlMiIsIl9jb21iaW5lUmVkdWNlcnMiLCJfY29tYmlu
ZVJlZHVjZXJzMiIsIl9iaW5kQWN0aW9uQ3JlYXRvcnMiLCJfYmluZEFjdGlvbkNyZWF0b3JzMiIs
Il9hcHBseU1pZGRsZXdhcmUiLCJfYXBwbHlNaWRkbGV3YXJlMiIsIl9jb21wb3NlIiwiX2NvbXBv
c2UyIiwiX3dhcm5pbmciLCJfX1dFQlBBQ0tfQU1EX0RFRklORV9BUlJBWV9fIiwiX19XRUJQQUNL
X0FNRF9ERUZJTkVfUkVTVUxUX18iLCJjbGFzc05hbWVzIiwiY2xhc3NlcyIsImFyZ1R5cGUiLCJp
c0FycmF5IiwiaGFzT3duIiwiaXMiLCJ4IiwieSIsInNoYWxsb3dFcXVhbCIsIm9iakEiLCJvYmpC
Iiwia2V5c0EiLCJrZXlzQiIsImlzUGxhaW5PYmplY3QiLCJpc09iamVjdExpa2UiLCJiYXNlR2V0
VGFnIiwib2JqZWN0VGFnIiwicHJvdG8iLCJnZXRQcm90b3R5cGUiLCJDdG9yIiwiZnVuY1RvU3Ry
aW5nIiwib2JqZWN0Q3RvclN0cmluZyIsImZ1bmNQcm90byIsIkZ1bmN0aW9uIiwib2JqZWN0UHJv
dG8iLCJnZXROb2RlQWZ0ZXIiLCJpbnNlcnRMYXp5VHJlZUNoaWxkQXQiLCJtb3ZlQ2hpbGQiLCJt
b3ZlRGVsaW1pdGVkVGV4dCIsImluc2VydENoaWxkQXQiLCJjbG9zaW5nQ29tbWVudCIsInJlbW92
ZURlbGltaXRlZFRleHQiLCJvcGVuaW5nQ29tbWVudCIsIm5leHROb2RlIiwic3RhcnROb2RlIiwi
cmVwbGFjZURlbGltaXRlZFRleHQiLCJzdHJpbmdUZXh0Iiwibm9kZUFmdGVyQ29tbWVudCIsImNy
ZWF0ZVRleHROb2RlIiwiRGFuZ2VyIiwiZGFuZ2Vyb3VzbHlSZXBsYWNlTm9kZVdpdGhNYXJrdXAi
LCJET01DaGlsZHJlbk9wZXJhdGlvbnMiLCJwcm9jZXNzVXBkYXRlcyIsInVwZGF0ZXMiLCJrIiwi
dXBkYXRlIiwiY29udGVudCIsImFmdGVyTm9kZSIsImZyb21Ob2RlIiwibWF0aG1sIiwicmVjb21w
dXRlUGx1Z2luT3JkZXJpbmciLCJldmVudFBsdWdpbk9yZGVyIiwicGx1Z2luTmFtZSIsIm5hbWVz
VG9QbHVnaW5zIiwicGx1Z2luTW9kdWxlIiwicGx1Z2luSW5kZXgiLCJpbmRleE9mIiwicHVibGlz
aGVkRXZlbnRzIiwiZXZlbnRUeXBlcyIsImV2ZW50TmFtZSIsInB1Ymxpc2hFdmVudEZvclBsdWdp
biIsImV2ZW50TmFtZURpc3BhdGNoQ29uZmlncyIsInBoYXNlTmFtZSIsInBoYXNlZFJlZ2lzdHJh
dGlvbk5hbWUiLCJwdWJsaXNoUmVnaXN0cmF0aW9uTmFtZSIsInBvc3NpYmxlUmVnaXN0cmF0aW9u
TmFtZXMiLCJpbmplY3RlZEV2ZW50UGx1Z2luT3JkZXIiLCJpbmplY3RlZE5hbWVzVG9QbHVnaW5z
IiwiaXNPcmRlcmluZ0RpcnR5IiwiZ2V0UGx1Z2luTW9kdWxlRm9yRXZlbnQiLCJfcmVzZXRFdmVu
dFBsdWdpbnMiLCJpc0VuZGlzaCIsImlzTW92ZWlzaCIsImlzU3RhcnRpc2giLCJleGVjdXRlRGlz
cGF0Y2giLCJpbnZva2VHdWFyZGVkQ2FsbGJhY2tXaXRoQ2F0Y2giLCJpbnZva2VHdWFyZGVkQ2Fs
bGJhY2siLCJkaXNwYXRjaExpc3RlbmVycyIsImRpc3BhdGNoSW5zdGFuY2VzIiwiZXhlY3V0ZURp
c3BhdGNoZXNJbk9yZGVyU3RvcEF0VHJ1ZUltcGwiLCJleGVjdXRlRGlzcGF0Y2hlc0luT3JkZXJT
dG9wQXRUcnVlIiwiZXhlY3V0ZURpcmVjdERpc3BhdGNoIiwiZGlzcGF0Y2hMaXN0ZW5lciIsImRp
c3BhdGNoSW5zdGFuY2UiLCJyZXMiLCJoYXNEaXNwYXRjaGVzIiwiQ29tcG9uZW50VHJlZSIsIlRy
ZWVUcmF2ZXJzYWwiLCJpbmplY3RDb21wb25lbnRUcmVlIiwiSW5qZWN0ZWQiLCJpbmplY3RUcmVl
VHJhdmVyc2FsIiwiaXNBbmNlc3RvciIsImdldExvd2VzdENvbW1vbkFuY2VzdG9yIiwiYXJnRnJv
bSIsImFyZ1RvIiwiZXNjYXBlUmVnZXgiLCJlc2NhcGVyTG9va3VwIiwiPSIsIjoiLCJlc2NhcGVk
U3RyaW5nIiwidW5lc2NhcGUiLCJ1bmVzY2FwZVJlZ2V4IiwidW5lc2NhcGVyTG9va3VwIiwiPTAi
LCI9MiIsImtleVN1YnN0cmluZyIsIktleUVzY2FwZVV0aWxzIiwiX2Fzc2VydFNpbmdsZUxpbmsi
LCJpbnB1dFByb3BzIiwiY2hlY2tlZExpbmsiLCJ2YWx1ZUxpbmsiLCJfYXNzZXJ0VmFsdWVMaW5r
Iiwib25DaGFuZ2UiLCJfYXNzZXJ0Q2hlY2tlZExpbmsiLCJjaGVja2VkIiwiZ2V0RGVjbGFyYXRp
b25FcnJvckFkZGVuZHVtIiwiUmVhY3RQcm9wVHlwZXNTZWNyZXQiLCJwcm9wVHlwZXNGYWN0b3J5
IiwiaGFzUmVhZE9ubHlWYWx1ZSIsImNoZWNrYm94IiwiaW1hZ2UiLCJoaWRkZW4iLCJyYWRpbyIs
InN1Ym1pdCIsInByb3BUeXBlcyIsImNvbXBvbmVudE5hbWUiLCJyZWFkT25seSIsImZ1bmMiLCJs
b2dnZWRUeXBlRmFpbHVyZXMiLCJMaW5rZWRWYWx1ZVV0aWxzIiwiY2hlY2tQcm9wVHlwZXMiLCJ0
YWdOYW1lIiwiZ2V0VmFsdWUiLCJnZXRDaGVja2VkIiwiZXhlY3V0ZU9uQ2hhbmdlIiwicmVxdWVz
dENoYW5nZSIsImluamVjdGVkIiwiUmVhY3RDb21wb25lbnRFbnZpcm9ubWVudCIsInJlcGxhY2VO
b2RlV2l0aE1hcmt1cCIsInByb2Nlc3NDaGlsZHJlblVwZGF0ZXMiLCJpbmplY3RFbnZpcm9ubWVu
dCIsImVudmlyb25tZW50IiwiY2F1Z2h0RXJyb3IiLCJmb3JtYXRVbmV4cGVjdGVkQXJndW1lbnQi
LCJkaXNwbGF5TmFtZSIsImdldEludGVybmFsSW5zdGFuY2VSZWFkeUZvclVwZGF0ZSIsInB1Ymxp
Y0luc3RhbmNlIiwiY2FsbGVyTmFtZSIsIlJlYWN0VXBkYXRlUXVldWUiLCJpc01vdW50ZWQiLCJl
bnF1ZXVlQ2FsbGJhY2siLCJ2YWxpZGF0ZUNhbGxiYWNrIiwiZW5xdWV1ZUNhbGxiYWNrSW50ZXJu
YWwiLCJlbnF1ZXVlRm9yY2VVcGRhdGUiLCJfcGVuZGluZ0ZvcmNlVXBkYXRlIiwiZW5xdWV1ZVJl
cGxhY2VTdGF0ZSIsImNvbXBsZXRlU3RhdGUiLCJfcGVuZGluZ1N0YXRlUXVldWUiLCJfcGVuZGlu
Z1JlcGxhY2VTdGF0ZSIsImVucXVldWVTZXRTdGF0ZSIsInBhcnRpYWxTdGF0ZSIsImVucXVldWVF
bGVtZW50SW50ZXJuYWwiLCJuZXh0Q29udGV4dCIsIl9wZW5kaW5nRWxlbWVudCIsIk1TQXBwIiwi
ZXhlY1Vuc2FmZUxvY2FsRnVuY3Rpb24iLCJhcmcwIiwiYXJnMSIsImFyZzIiLCJhcmczIiwiZ2V0
RXZlbnRDaGFyQ29kZSIsImNoYXJDb2RlIiwia2V5Q29kZSIsIm1vZGlmaWVyU3RhdGVHZXR0ZXIi
LCJrZXlBcmciLCJzeW50aGV0aWNFdmVudCIsImtleVByb3AiLCJtb2RpZmllcktleVRvUHJvcCIs
IkFsdCIsIkNvbnRyb2wiLCJNZXRhIiwiU2hpZnQiLCJjb3JyZXNwb25kaW5nVXNlRWxlbWVudCIs
ImV2ZW50TmFtZVN1ZmZpeCIsImNhcHR1cmUiLCJpc1N1cHBvcnRlZCIsInNldEF0dHJpYnV0ZSIs
InVzZUhhc0ZlYXR1cmUiLCJpbXBsZW1lbnRhdGlvbiIsImhhc0ZlYXR1cmUiLCJzaG91bGRVcGRh
dGVSZWFjdENvbXBvbmVudCIsInByZXZFbXB0eSIsIm5leHRFbXB0eSIsInByZXZUeXBlIiwibmV4
dFR5cGUiLCJ2YWxpZGF0ZURPTU5lc3RpbmciLCJFdmVudExpc3RlbmVyIiwibGlzdGVuIiwiZXZl
bnRUeXBlIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsImRldGFjaEV2ZW50IiwicmVnaXN0ZXJEZWZh
dWx0IiwiZm9jdXNOb2RlIiwiZm9jdXMiLCJnZXRBY3RpdmVFbGVtZW50IiwiYWN0aXZlRWxlbWVu
dCIsImJvZHkiLCJyb290IiwiU3ltYm9sIiwidGhyb3dPbkRpcmVjdEFjY2VzcyIsInByZWZpeEtl
eSIsInByZWZpeCIsImNoYXJBdCIsInRvVXBwZXJDYXNlIiwiaXNVbml0bGVzc051bWJlciIsImFu
aW1hdGlvbkl0ZXJhdGlvbkNvdW50IiwiYm9yZGVySW1hZ2VPdXRzZXQiLCJib3JkZXJJbWFnZVNs
aWNlIiwiYm9yZGVySW1hZ2VXaWR0aCIsImJveEZsZXgiLCJib3hGbGV4R3JvdXAiLCJib3hPcmRp
bmFsR3JvdXAiLCJjb2x1bW5Db3VudCIsImZsZXgiLCJmbGV4R3JvdyIsImZsZXhQb3NpdGl2ZSIs
ImZsZXhTaHJpbmsiLCJmbGV4TmVnYXRpdmUiLCJmbGV4T3JkZXIiLCJncmlkUm93IiwiZ3JpZFJv
d0VuZCIsImdyaWRSb3dTcGFuIiwiZ3JpZFJvd1N0YXJ0IiwiZ3JpZENvbHVtbiIsImdyaWRDb2x1
bW5FbmQiLCJncmlkQ29sdW1uU3BhbiIsImdyaWRDb2x1bW5TdGFydCIsImZvbnRXZWlnaHQiLCJs
aW5lQ2xhbXAiLCJsaW5lSGVpZ2h0Iiwib3BhY2l0eSIsIm9yZGVyIiwib3JwaGFucyIsInRhYlNp
emUiLCJ3aWRvd3MiLCJ6SW5kZXgiLCJ6b29tIiwiZmlsbE9wYWNpdHkiLCJmbG9vZE9wYWNpdHki
LCJzdG9wT3BhY2l0eSIsInN0cm9rZURhc2hhcnJheSIsInN0cm9rZURhc2hvZmZzZXQiLCJzdHJv
a2VNaXRlcmxpbWl0Iiwic3Ryb2tlT3BhY2l0eSIsInN0cm9rZVdpZHRoIiwicHJlZml4ZXMiLCJw
cm9wIiwic2hvcnRoYW5kUHJvcGVydHlFeHBhbnNpb25zIiwiYmFja2dyb3VuZCIsImJhY2tncm91
bmRBdHRhY2htZW50IiwiYmFja2dyb3VuZENvbG9yIiwiYmFja2dyb3VuZEltYWdlIiwiYmFja2dy
b3VuZFBvc2l0aW9uWCIsImJhY2tncm91bmRQb3NpdGlvblkiLCJiYWNrZ3JvdW5kUmVwZWF0Iiwi
YmFja2dyb3VuZFBvc2l0aW9uIiwiYm9yZGVyIiwiYm9yZGVyV2lkdGgiLCJib3JkZXJTdHlsZSIs
ImJvcmRlckNvbG9yIiwiYm9yZGVyQm90dG9tIiwiYm9yZGVyQm90dG9tV2lkdGgiLCJib3JkZXJC
b3R0b21TdHlsZSIsImJvcmRlckJvdHRvbUNvbG9yIiwiYm9yZGVyTGVmdCIsImJvcmRlckxlZnRX
aWR0aCIsImJvcmRlckxlZnRTdHlsZSIsImJvcmRlckxlZnRDb2xvciIsImJvcmRlclJpZ2h0Iiwi
Ym9yZGVyUmlnaHRXaWR0aCIsImJvcmRlclJpZ2h0U3R5bGUiLCJib3JkZXJSaWdodENvbG9yIiwi
Ym9yZGVyVG9wIiwiYm9yZGVyVG9wV2lkdGgiLCJib3JkZXJUb3BTdHlsZSIsImJvcmRlclRvcENv
bG9yIiwiZm9udCIsImZvbnRTdHlsZSIsImZvbnRWYXJpYW50IiwiZm9udFNpemUiLCJmb250RmFt
aWx5Iiwib3V0bGluZSIsIm91dGxpbmVXaWR0aCIsIm91dGxpbmVTdHlsZSIsIm91dGxpbmVDb2xv
ciIsIkNTU1Byb3BlcnR5IiwiX2NsYXNzQ2FsbENoZWNrIiwiaW5zdGFuY2UiLCJDb25zdHJ1Y3Rv
ciIsIl9jYWxsYmFja3MiLCJfY29udGV4dHMiLCJfYXJnIiwiY29udGV4dHMiLCJjaGVja3BvaW50
Iiwicm9sbGJhY2siLCJpc0F0dHJpYnV0ZU5hbWVTYWZlIiwidmFsaWRhdGVkQXR0cmlidXRlTmFt
ZUNhY2hlIiwiaWxsZWdhbEF0dHJpYnV0ZU5hbWVDYWNoZSIsIlZBTElEX0FUVFJJQlVURV9OQU1F
X1JFR0VYIiwic2hvdWxkSWdub3JlVmFsdWUiLCJpc05hTiIsInF1b3RlQXR0cmlidXRlVmFsdWVG
b3JCcm93c2VyIiwiUmVnRXhwIiwiRE9NUHJvcGVydHlPcGVyYXRpb25zIiwiY3JlYXRlTWFya3Vw
Rm9ySUQiLCJzZXRBdHRyaWJ1dGVGb3JJRCIsImNyZWF0ZU1hcmt1cEZvclJvb3QiLCJzZXRBdHRy
aWJ1dGVGb3JSb290IiwiY3JlYXRlTWFya3VwRm9yUHJvcGVydHkiLCJjcmVhdGVNYXJrdXBGb3JD
dXN0b21BdHRyaWJ1dGUiLCJzZXRWYWx1ZUZvclByb3BlcnR5IiwiZGVsZXRlVmFsdWVGb3JQcm9w
ZXJ0eSIsIm5hbWVzcGFjZSIsInNldEF0dHJpYnV0ZU5TIiwic2V0VmFsdWVGb3JBdHRyaWJ1dGUi
LCJyZW1vdmVBdHRyaWJ1dGUiLCJkZWxldGVWYWx1ZUZvckF0dHJpYnV0ZSIsInVwZGF0ZU9wdGlv
bnNJZlBlbmRpbmdVcGRhdGVBbmRNb3VudGVkIiwiX3dyYXBwZXJTdGF0ZSIsInBlbmRpbmdVcGRh
dGUiLCJ1cGRhdGVPcHRpb25zIiwiQm9vbGVhbiIsIm11bHRpcGxlIiwicHJvcFZhbHVlIiwic2Vs
ZWN0ZWRWYWx1ZSIsIm9wdGlvbnMiLCJzZWxlY3RlZCIsIl9oYW5kbGVDaGFuZ2UiLCJkaWRXYXJu
VmFsdWVEZWZhdWx0VmFsdWUiLCJSZWFjdERPTVNlbGVjdCIsImdldEhvc3RQcm9wcyIsIm1vdW50
V3JhcHBlciIsImluaXRpYWxWYWx1ZSIsImRlZmF1bHRWYWx1ZSIsImxpc3RlbmVycyIsIndhc011
bHRpcGxlIiwiZ2V0U2VsZWN0VmFsdWVDb250ZXh0IiwicG9zdFVwZGF0ZVdyYXBwZXIiLCJlbXB0
eUNvbXBvbmVudEZhY3RvcnkiLCJSZWFjdEVtcHR5Q29tcG9uZW50SW5qZWN0aW9uIiwiaW5qZWN0
RW1wdHlDb21wb25lbnRGYWN0b3J5IiwiUmVhY3RFbXB0eUNvbXBvbmVudCIsImNyZWF0ZSIsImlu
c3RhbnRpYXRlIiwiY3JlYXRlSW50ZXJuYWxDb21wb25lbnQiLCJnZW5lcmljQ29tcG9uZW50Q2xh
c3MiLCJjcmVhdGVJbnN0YW5jZUZvclRleHQiLCJ0ZXh0Q29tcG9uZW50Q2xhc3MiLCJpc1RleHRD
b21wb25lbnQiLCJSZWFjdEhvc3RDb21wb25lbnRJbmplY3Rpb24iLCJpbmplY3RHZW5lcmljQ29t
cG9uZW50Q2xhc3MiLCJjb21wb25lbnRDbGFzcyIsImluamVjdFRleHRDb21wb25lbnRDbGFzcyIs
IlJlYWN0SG9zdENvbXBvbmVudCIsImlzSW5Eb2N1bWVudCIsImNvbnRhaW5zTm9kZSIsImRvY3Vt
ZW50RWxlbWVudCIsIlJlYWN0RE9NU2VsZWN0aW9uIiwiUmVhY3RJbnB1dFNlbGVjdGlvbiIsImhh
c1NlbGVjdGlvbkNhcGFiaWxpdGllcyIsImVsZW0iLCJjb250ZW50RWRpdGFibGUiLCJnZXRTZWxl
Y3Rpb25JbmZvcm1hdGlvbiIsImZvY3VzZWRFbGVtIiwic2VsZWN0aW9uUmFuZ2UiLCJnZXRTZWxl
Y3Rpb24iLCJyZXN0b3JlU2VsZWN0aW9uIiwicHJpb3JTZWxlY3Rpb25JbmZvcm1hdGlvbiIsImN1
ckZvY3VzZWRFbGVtIiwicHJpb3JGb2N1c2VkRWxlbSIsInByaW9yU2VsZWN0aW9uUmFuZ2UiLCJz
ZXRTZWxlY3Rpb24iLCJpbnB1dCIsInNlbGVjdGlvbiIsInN0YXJ0Iiwic2VsZWN0aW9uU3RhcnQi
LCJlbmQiLCJzZWxlY3Rpb25FbmQiLCJyYW5nZSIsImNyZWF0ZVJhbmdlIiwicGFyZW50RWxlbWVu
dCIsIm1vdmVTdGFydCIsIm1vdmVFbmQiLCJnZXRPZmZzZXRzIiwib2Zmc2V0cyIsIm1pbiIsImNy
ZWF0ZVRleHRSYW5nZSIsImNvbGxhcHNlIiwic2VsZWN0Iiwic2V0T2Zmc2V0cyIsImZpcnN0RGlm
ZmVyZW5jZUluZGV4Iiwic3RyaW5nMSIsInN0cmluZzIiLCJtaW5MZW4iLCJnZXRSZWFjdFJvb3RF
bGVtZW50SW5Db250YWluZXIiLCJjb250YWluZXIiLCJET0NfTk9ERV9UWVBFIiwiaW50ZXJuYWxH
ZXRJRCIsIm1vdW50Q29tcG9uZW50SW50b05vZGUiLCJ3cmFwcGVySW5zdGFuY2UiLCJzaG91bGRS
ZXVzZU1hcmt1cCIsIndyYXBwZWRFbGVtZW50IiwiY2hpbGQiLCJSZWFjdERPTUNvbnRhaW5lcklu
Zm8iLCJfdG9wTGV2ZWxXcmFwcGVyIiwiUmVhY3RNb3VudCIsIl9tb3VudEltYWdlSW50b05vZGUi
LCJiYXRjaGVkTW91bnRDb21wb25lbnRJbnRvTm9kZSIsImNvbXBvbmVudEluc3RhbmNlIiwiUmVh
Y3RET01GZWF0dXJlRmxhZ3MiLCJ1c2VDcmVhdGVFbGVtZW50IiwidW5tb3VudENvbXBvbmVudEZy
b21Ob2RlIiwibGFzdENoaWxkIiwiaGFzTm9uUm9vdFJlYWN0Q2hpbGQiLCJyb290RWwiLCJpc1Zh
bGlkQ29udGFpbmVyIiwiZ2V0SG9zdFJvb3RJbnN0YW5jZUluQ29udGFpbmVyIiwicHJldkhvc3RJ
bnN0YW5jZSIsImdldFRvcExldmVsV3JhcHBlckluQ29udGFpbmVyIiwiX2hvc3RDb250YWluZXJJ
bmZvIiwiUmVhY3RNYXJrdXBDaGVja3N1bSIsImluc3RhbnRpYXRlUmVhY3RDb21wb25lbnQiLCJS
T09UX0FUVFJfTkFNRSIsImluc3RhbmNlc0J5UmVhY3RSb290SUQiLCJ0b3BMZXZlbFJvb3RDb3Vu
dGVyIiwiVG9wTGV2ZWxXcmFwcGVyIiwicm9vdElEIiwiaXNSZWFjdENvbXBvbmVudCIsInJlbmRl
ciIsIl9pbnN0YW5jZXNCeVJlYWN0Um9vdElEIiwic2Nyb2xsTW9uaXRvciIsInJlbmRlckNhbGxi
YWNrIiwiX3VwZGF0ZVJvb3RDb21wb25lbnQiLCJwcmV2Q29tcG9uZW50IiwiX3JlbmRlck5ld1Jv
b3RDb21wb25lbnQiLCJ3cmFwcGVySUQiLCJfaW5zdGFuY2UiLCJyZW5kZXJTdWJ0cmVlSW50b0Nv
bnRhaW5lciIsInBhcmVudENvbXBvbmVudCIsIl9yZW5kZXJTdWJ0cmVlSW50b0NvbnRhaW5lciIs
Im5leHRXcmFwcGVkRWxlbWVudCIsIl9wcm9jZXNzQ2hpbGRDb250ZXh0IiwicHJldldyYXBwZWRF
bGVtZW50IiwicHVibGljSW5zdCIsInVwZGF0ZWRDYWxsYmFjayIsInVubW91bnRDb21wb25lbnRB
dE5vZGUiLCJyZWFjdFJvb3RFbGVtZW50IiwiY29udGFpbmVySGFzUmVhY3RNYXJrdXAiLCJjb250
YWluZXJIYXNOb25Sb290UmVhY3RDaGlsZCIsImhhc0F0dHJpYnV0ZSIsInJvb3RFbGVtZW50Iiwi
Y2FuUmV1c2VNYXJrdXAiLCJjaGVja3N1bSIsIkNIRUNLU1VNX0FUVFJfTkFNRSIsInJvb3RNYXJr
dXAiLCJvdXRlckhUTUwiLCJub3JtYWxpemVkTWFya3VwIiwiZGlmZkluZGV4IiwiZGlmZmVyZW5j
ZSIsIlJlYWN0Tm9kZVR5cGVzIiwiSE9TVCIsIkNPTVBPU0lURSIsIkVNUFRZIiwiZ2V0VHlwZSIs
InNjcm9sbFBvc2l0aW9uIiwibmV4dCIsImFyciIsImNiIiwiZ2V0SG9zdENvbXBvbmVudEZyb21D
b21wb3NpdGUiLCJfcmVuZGVyZWROb2RlVHlwZSIsImdldFRleHRDb250ZW50QWNjZXNzb3IiLCJj
b250ZW50S2V5IiwiaXNDaGVja2FibGUiLCJnZXRUcmFja2VyIiwidmFsdWVUcmFja2VyIiwiYXR0
YWNoVHJhY2tlciIsInRyYWNrZXIiLCJkZXRhY2hUcmFja2VyIiwiZ2V0VmFsdWVGcm9tTm9kZSIs
ImlucHV0VmFsdWVUcmFja2luZyIsIl9nZXRUcmFja2VyRnJvbU5vZGUiLCJ0cmFjayIsInZhbHVl
RmllbGQiLCJkZXNjcmlwdG9yIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiY3VycmVudFZh
bHVlIiwiZGVmaW5lUHJvcGVydHkiLCJlbnVtZXJhYmxlIiwiY29uZmlndXJhYmxlIiwic2V0VmFs
dWUiLCJzdG9wVHJhY2tpbmciLCJ1cGRhdGVWYWx1ZUlmQ2hhbmdlZCIsImxhc3RWYWx1ZSIsIm5l
eHRWYWx1ZSIsImlzSW50ZXJuYWxDb21wb25lbnRUeXBlIiwic2hvdWxkSGF2ZURlYnVnSUQiLCJp
bmZvIiwiZ2V0TmF0aXZlTm9kZSIsIlJlYWN0Q29tcG9zaXRlQ29tcG9uZW50V3JhcHBlciIsIl9t
b3VudEluZGV4IiwiX21vdW50SW1hZ2UiLCJSZWFjdENvbXBvc2l0ZUNvbXBvbmVudCIsImNvbnN0
cnVjdCIsIl9pbnN0YW50aWF0ZVJlYWN0Q29tcG9uZW50IiwiaXNUZXh0SW5wdXRFbGVtZW50Iiwi
c3VwcG9ydGVkSW5wdXRUeXBlcyIsImNvbG9yIiwiZGF0ZSIsImRhdGV0aW1lIiwiZGF0ZXRpbWUt
bG9jYWwiLCJlbWFpbCIsIm1vbnRoIiwibnVtYmVyIiwicGFzc3dvcmQiLCJzZWFyY2giLCJ0ZWwi
LCJ1cmwiLCJ3ZWVrIiwidGV4dENvbnRlbnQiLCJnZXRDb21wb25lbnRLZXkiLCJ0cmF2ZXJzZUFs
bENoaWxkcmVuSW1wbCIsIm5hbWVTb0ZhciIsInRyYXZlcnNlQ29udGV4dCIsIlNFUEFSQVRPUiIs
Im5leHROYW1lIiwic3VidHJlZUNvdW50IiwibmV4dE5hbWVQcmVmaXgiLCJTVUJTRVBBUkFUT1Ii
LCJpdGVyYXRvckZuIiwiZ2V0SXRlcmF0b3JGbiIsInN0ZXAiLCJpdGVyYXRvciIsImVudHJpZXMi
LCJpaSIsImRvbmUiLCJlbnRyeSIsImFkZGVuZHVtIiwiY2hpbGRyZW5TdHJpbmciLCJ0cmF2ZXJz
ZUFsbENoaWxkcmVuIiwiX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4iLCJSZWZlcmVuY2VFcnJv
ciIsIl9pbmhlcml0cyIsInN1YkNsYXNzIiwic3VwZXJDbGFzcyIsIndyaXRhYmxlIiwic2V0UHJv
dG90eXBlT2YiLCJfX3Byb3RvX18iLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMiLCJub29wIiwi
bWFrZVNlbGVjdG9yU3RhdGVmdWwiLCJzb3VyY2VTZWxlY3RvciIsInN0b3JlIiwic2VsZWN0b3Ii
LCJydW4iLCJuZXh0UHJvcHMiLCJnZXRTdGF0ZSIsInNob3VsZENvbXBvbmVudFVwZGF0ZSIsImNv
bm5lY3RBZHZhbmNlZCIsInNlbGVjdG9yRmFjdG9yeSIsIl9jb250ZXh0VHlwZXMiLCJfY2hpbGRD
b250ZXh0VHlwZXMiLCJfcmVmIiwiX3JlZiRnZXREaXNwbGF5TmFtZSIsImdldERpc3BsYXlOYW1l
IiwiX3JlZiRtZXRob2ROYW1lIiwibWV0aG9kTmFtZSIsIl9yZWYkcmVuZGVyQ291bnRQcm9wIiwi
cmVuZGVyQ291bnRQcm9wIiwiX3JlZiRzaG91bGRIYW5kbGVTdGF0Iiwic2hvdWxkSGFuZGxlU3Rh
dGVDaGFuZ2VzIiwiX3JlZiRzdG9yZUtleSIsInN0b3JlS2V5IiwiX3JlZiR3aXRoUmVmIiwid2l0
aFJlZiIsImNvbm5lY3RPcHRpb25zIiwic3Vic2NyaXB0aW9uS2V5IiwiaG90UmVsb2FkaW5nVmVy
c2lvbiIsImNvbnRleHRUeXBlcyIsIl9Qcm9wVHlwZXMiLCJzdG9yZVNoYXBlIiwic3Vic2NyaXB0
aW9uU2hhcGUiLCJjaGlsZENvbnRleHRUeXBlcyIsIldyYXBwZWRDb21wb25lbnQiLCJfaW52YXJp
YW50MiIsIkpTT04iLCJzdHJpbmdpZnkiLCJ3cmFwcGVkQ29tcG9uZW50TmFtZSIsInNlbGVjdG9y
RmFjdG9yeU9wdGlvbnMiLCJfZXh0ZW5kcyIsIkNvbm5lY3QiLCJfQ29tcG9uZW50IiwiX3RoaXMi
LCJzdGF0ZSIsInJlbmRlckNvdW50IiwicHJvcHNNb2RlIiwic2V0V3JhcHBlZEluc3RhbmNlIiwi
aW5pdFNlbGVjdG9yIiwiaW5pdFN1YnNjcmlwdGlvbiIsImdldENoaWxkQ29udGV4dCIsIl9yZWYy
Iiwic3Vic2NyaXB0aW9uIiwiY29tcG9uZW50RGlkTW91bnQiLCJ0cnlTdWJzY3JpYmUiLCJmb3Jj
ZVVwZGF0ZSIsImNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMiLCJjb21wb25lbnRXaWxsVW5tb3Vu
dCIsInRyeVVuc3Vic2NyaWJlIiwibm90aWZ5TmVzdGVkU3VicyIsImdldFdyYXBwZWRJbnN0YW5j
ZSIsIndyYXBwZWRJbnN0YW5jZSIsImRpc3BhdGNoIiwicGFyZW50U3ViIiwiX1N1YnNjcmlwdGlv
bjIiLCJvblN0YXRlQ2hhbmdlIiwiY29tcG9uZW50RGlkVXBkYXRlIiwibm90aWZ5TmVzdGVkU3Vi
c09uQ29tcG9uZW50RGlkVXBkYXRlIiwic2V0U3RhdGUiLCJkdW1teVN0YXRlIiwiaXNTdWJzY3Jp
YmVkIiwiYWRkRXh0cmFQcm9wcyIsIndpdGhFeHRyYXMiLCJfcmVhY3QiLCJfaG9pc3ROb25SZWFj
dFN0YXRpY3MyIiwiX2hvaXN0Tm9uUmVhY3RTdGF0aWNzIiwiX2ludmFyaWFudCIsIl9TdWJzY3Jp
cHRpb24iLCJ3cmFwTWFwVG9Qcm9wc0NvbnN0YW50IiwiZ2V0Q29uc3RhbnQiLCJjb25zdGFudFNl
bGVjdG9yIiwiY29uc3RhbnQiLCJkZXBlbmRzT25Pd25Qcm9wcyIsImdldERlcGVuZHNPbk93blBy
b3BzIiwibWFwVG9Qcm9wcyIsIndyYXBNYXBUb1Byb3BzRnVuYyIsInByb3h5Iiwic3RhdGVPckRp
c3BhdGNoIiwib3duUHJvcHMiLCJfdmVyaWZ5UGxhaW5PYmplY3QiLCJjb25uZWN0IiwiY3JlYXRl
UHJvdmlkZXIiLCJQcm92aWRlciIsIl9Qcm92aWRlciIsIl9Qcm92aWRlcjIiLCJfY29ubmVjdEFk
dmFuY2VkIiwiX2Nvbm5lY3RBZHZhbmNlZDIiLCJfY29ubmVjdCIsIl9jb25uZWN0MiIsIl9wcm9w
VHlwZXMiLCJfcHJvcFR5cGVzMiIsInNoYXBlIiwiaXNSZXF1aXJlZCIsInN1YnNjcmliZSIsInZl
cmlmeVBsYWluT2JqZWN0IiwiX2lzUGxhaW5PYmplY3QyIiwiX3dhcm5pbmcyIiwiX2lzUGxhaW5P
YmplY3QiLCJfY3JlYXRlQ2xhc3MiLCJkZWZpbmVQcm9wZXJ0aWVzIiwicHJvdG9Qcm9wcyIsInN0
YXRpY1Byb3BzIiwiX3JlYWN0MiIsIl9jbGFzc25hbWVzIiwiX2NsYXNzbmFtZXMyIiwiVG9kb1Rl
eHRJbnB1dCIsIl90ZW1wIiwiX3JldCIsIl9sZW4iLCJfa2V5IiwiZ2V0UHJvdG90eXBlT2YiLCJo
YW5kbGVTdWJtaXQiLCJ0cmltIiwid2hpY2giLCJvblNhdmUiLCJuZXdUb2RvIiwiaGFuZGxlQ2hh
bmdlIiwiaGFuZGxlQmx1ciIsImNsYXNzTmFtZSIsImVkaXQiLCJlZGl0aW5nIiwibmV3LXRvZG8i
LCJwbGFjZWhvbGRlciIsImF1dG9Gb2N1cyIsIm9uQmx1ciIsIm9uS2V5RG93biIsImJvb2wiLCJB
RERfVE9ETyIsIkRFTEVURV9UT0RPIiwiRURJVF9UT0RPIiwiQ09NUExFVEVfVE9ETyIsIkNPTVBM
RVRFX0FMTCIsIkNMRUFSX0NPTVBMRVRFRCIsIlNIT1dfQUxMIiwiU0hPV19DT01QTEVURUQiLCJT
SE9XX0FDVElWRSIsImRlZmF1bHRTZXRUaW1vdXQiLCJkZWZhdWx0Q2xlYXJUaW1lb3V0IiwicnVu
VGltZW91dCIsImZ1biIsImNhY2hlZFNldFRpbWVvdXQiLCJzZXRUaW1lb3V0IiwicnVuQ2xlYXJU
aW1lb3V0IiwibWFya2VyIiwiY2FjaGVkQ2xlYXJUaW1lb3V0IiwiY2xlYXJUaW1lb3V0IiwiY2xl
YW5VcE5leHRUaWNrIiwiZHJhaW5pbmciLCJjdXJyZW50UXVldWUiLCJxdWV1ZUluZGV4IiwiZHJh
aW5RdWV1ZSIsInRpbWVvdXQiLCJJdGVtIiwiYXJyYXkiLCJwcm9jZXNzIiwibmV4dFRpY2siLCJ0
aXRsZSIsImJyb3dzZXIiLCJlbnYiLCJhcmd2IiwidmVyc2lvbnMiLCJvbiIsImFkZExpc3RlbmVy
Iiwib25jZSIsIm9mZiIsInJlbW92ZUxpc3RlbmVyIiwicmVtb3ZlQWxsTGlzdGVuZXJzIiwiZW1p
dCIsImJpbmRpbmciLCJjd2QiLCJjaGRpciIsImRpciIsInVtYXNrIiwiZ2V0VGhlbiIsInRoZW4i
LCJleCIsIkxBU1RfRVJST1IiLCJJU19FUlJPUiIsInRyeUNhbGxPbmUiLCJ0cnlDYWxsVHdvIiwi
UHJvbWlzZSIsIl80NSIsIl84MSIsIl82NSIsIl81NCIsImRvUmVzb2x2ZSIsInNhZmVUaGVuIiwi
b25GdWxmaWxsZWQiLCJvblJlamVjdGVkIiwicmVzb2x2ZSIsInJlamVjdCIsIkhhbmRsZXIiLCJk
ZWZlcnJlZCIsIl8xMCIsImhhbmRsZVJlc29sdmVkIiwicHJvbWlzZSIsIm5ld1ZhbHVlIiwiZmlu
YWxlIiwiXzk3IiwicmVhc29uIiwiXzYxIiwiUmVhY3RDb21wb25lbnQiLCJ1cGRhdGVyIiwicmVm
cyIsIlJlYWN0Tm9vcFVwZGF0ZVF1ZXVlIiwiUmVhY3RQdXJlQ29tcG9uZW50IiwiQ29tcG9uZW50
RHVtbXkiLCJpc1B1cmVSZWFjdENvbXBvbmVudCIsImlzTmF0aXZlIiwicmVJc05hdGl2ZSIsInB1
cmdlRGVlcCIsIml0ZW0iLCJnZXRJdGVtIiwiY2hpbGRJRHMiLCJyZW1vdmVJdGVtIiwiZGVzY3Jp
YmVDb21wb25lbnRGcmFtZSIsIm93bmVyTmFtZSIsImZpbGVOYW1lIiwibGluZU51bWJlciIsImRl
c2NyaWJlSUQiLCJSZWFjdENvbXBvbmVudFRyZWVIb29rIiwiZ2V0RWxlbWVudCIsIm93bmVySUQi
LCJnZXRPd25lcklEIiwic2V0SXRlbSIsImdldEl0ZW1JRHMiLCJhZGRSb290IiwicmVtb3ZlUm9v
dCIsImdldFJvb3RJRHMiLCJjYW5Vc2VDb2xsZWN0aW9ucyIsIk1hcCIsIlNldCIsIml0ZW1NYXAi
LCJyb290SURTZXQiLCJhZGQiLCJpdGVtQnlLZXkiLCJyb290QnlLZXkiLCJnZXRLZXlGcm9tSUQi
LCJnZXRJREZyb21LZXkiLCJwYXJzZUludCIsInN1YnN0ciIsInVubW91bnRlZElEcyIsIm9uU2V0
Q2hpbGRyZW4iLCJuZXh0Q2hpbGRJRHMiLCJuZXh0Q2hpbGRJRCIsIm5leHRDaGlsZCIsInBhcmVu
dElEIiwib25CZWZvcmVNb3VudENvbXBvbmVudCIsInVwZGF0ZUNvdW50Iiwib25CZWZvcmVVcGRh
dGVDb21wb25lbnQiLCJvbk1vdW50Q29tcG9uZW50IiwiaXNSb290Iiwib25VcGRhdGVDb21wb25l
bnQiLCJvblVubW91bnRDb21wb25lbnQiLCJwdXJnZVVubW91bnRlZENvbXBvbmVudHMiLCJfcHJl
dmVudFB1cmdpbmciLCJnZXRDdXJyZW50U3RhY2tBZGRlbmR1bSIsInRvcEVsZW1lbnQiLCJjdXJy
ZW50T3duZXIiLCJfZGVidWdJRCIsImdldFN0YWNrQWRkZW5kdW1CeUlEIiwiZ2V0UGFyZW50SUQi
LCJnZXRDaGlsZElEcyIsImdldFNvdXJjZSIsImdldFRleHQiLCJnZXRVcGRhdGVDb3VudCIsImdl
dFJlZ2lzdGVyZWRJRHMiLCJwdXNoTm9uU3RhbmRhcmRXYXJuaW5nU3RhY2siLCJpc0NyZWF0aW5n
RWxlbWVudCIsImN1cnJlbnRTb3VyY2UiLCJyZWFjdFN0YWNrIiwic3RhY2siLCJwb3BOb25TdGFu
ZGFyZFdhcm5pbmdTdGFjayIsInJlYWN0U3RhY2tFbmQiLCJ3YXJuTm9vcCIsImNhbkRlZmluZVBy
b3BlcnR5IiwiZnVuY3MiLCJyZWR1Y2UiLCJyZWR1Y2VyIiwicHJlbG9hZGVkU3RhdGUiLCJlbmhh
bmNlciIsImVuc3VyZUNhbk11dGF0ZU5leHRMaXN0ZW5lcnMiLCJuZXh0TGlzdGVuZXJzIiwiY3Vy
cmVudExpc3RlbmVycyIsImN1cnJlbnRTdGF0ZSIsImFjdGlvbiIsImlzRGlzcGF0Y2hpbmciLCJj
dXJyZW50UmVkdWNlciIsInJlcGxhY2VSZWR1Y2VyIiwibmV4dFJlZHVjZXIiLCJBY3Rpb25UeXBl
cyIsIklOSVQiLCJvYnNlcnZhYmxlIiwib3V0ZXJTdWJzY3JpYmUiLCJvYnNlcnZlciIsIm9ic2Vy
dmVTdGF0ZSIsInVuc3Vic2NyaWJlIiwiX3N5bWJvbE9ic2VydmFibGUyIiwiX3N5bWJvbE9ic2Vy
dmFibGUiLCJpZGVudGl0eSIsInZhbGlkYXRlTWV0aG9kT3ZlcnJpZGUiLCJpc0FscmVhZHlEZWZp
bmVkIiwic3BlY1BvbGljeSIsIlJlYWN0Q2xhc3NJbnRlcmZhY2UiLCJSZWFjdENsYXNzTWl4aW4i
LCJtaXhTcGVjSW50b0NvbXBvbmVudCIsInNwZWMiLCJhdXRvQmluZFBhaXJzIiwiX19yZWFjdEF1
dG9CaW5kUGFpcnMiLCJNSVhJTlNfS0VZIiwiUkVTRVJWRURfU1BFQ19LRVlTIiwibWl4aW5zIiwi
cHJvcGVydHkiLCJpc1JlYWN0Q2xhc3NNZXRob2QiLCJpc0Z1bmN0aW9uIiwic2hvdWxkQXV0b0Jp
bmQiLCJhdXRvYmluZCIsImNyZWF0ZU1lcmdlZFJlc3VsdEZ1bmN0aW9uIiwiY3JlYXRlQ2hhaW5l
ZEZ1bmN0aW9uIiwibWl4U3RhdGljU3BlY0ludG9Db21wb25lbnQiLCJzdGF0aWNzIiwiaXNSZXNl
cnZlZCIsImlzSW5oZXJpdGVkIiwibWVyZ2VJbnRvV2l0aE5vRHVwbGljYXRlS2V5cyIsIm9uZSIs
InR3byIsImJpbmRBdXRvQmluZE1ldGhvZCIsImJvdW5kTWV0aG9kIiwiYmluZEF1dG9CaW5kTWV0
aG9kcyIsInBhaXJzIiwiYXV0b0JpbmRLZXkiLCJpbml0aWFsU3RhdGUiLCJnZXRJbml0aWFsU3Rh
dGUiLCJSZWFjdENsYXNzQ29tcG9uZW50IiwiaW5qZWN0ZWRNaXhpbnMiLCJJc01vdW50ZWRQcmVN
aXhpbiIsIklzTW91bnRlZFBvc3RNaXhpbiIsImdldERlZmF1bHRQcm9wcyIsImNvbXBvbmVudFdp
bGxNb3VudCIsImNvbXBvbmVudFdpbGxVcGRhdGUiLCJ1cGRhdGVDb21wb25lbnQiLCJfX2lzTW91
bnRlZCIsInJlcGxhY2VTdGF0ZSIsIm5ld1N0YXRlIiwiUmVhY3RQcm9wVHlwZUxvY2F0aW9uTmFt
ZXMiLCJjYW1lbGl6ZSIsIl9oeXBoZW5QYXR0ZXJuIiwiXyIsImNoYXJhY3RlciIsImNhbWVsaXpl
U3R5bGVOYW1lIiwibXNQYXR0ZXJuIiwib3V0ZXJOb2RlIiwiaW5uZXJOb2RlIiwiaXNUZXh0Tm9k
ZSIsImNvbnRhaW5zIiwiY29tcGFyZURvY3VtZW50UG9zaXRpb24iLCJjYWxsZWUiLCJoYXNBcnJh
eU5hdHVyZSIsImNyZWF0ZUFycmF5RnJvbU1peGVkIiwiZ2V0Tm9kZU5hbWUiLCJub2RlTmFtZU1h
dGNoIiwibm9kZU5hbWVQYXR0ZXJuIiwiY3JlYXRlTm9kZXNGcm9tTWFya3VwIiwiaGFuZGxlU2Ny
aXB0IiwiZHVtbXlOb2RlIiwid3JhcCIsImdldE1hcmt1cFdyYXAiLCJ3cmFwRGVwdGgiLCJzY3Jp
cHRzIiwiZ2V0RWxlbWVudHNCeVRhZ05hbWUiLCJub2RlcyIsImNoaWxkTm9kZXMiLCJtYXJrdXBX
cmFwIiwic2hvdWxkV3JhcCIsInNlbGVjdFdyYXAiLCJ0YWJsZVdyYXAiLCJ0cldyYXAiLCJzdmdX
cmFwIiwiKiIsImFyZWEiLCJjb2wiLCJsZWdlbmQiLCJwYXJhbSIsInRyIiwib3B0Z3JvdXAiLCJv
cHRpb24iLCJjYXB0aW9uIiwiY29sZ3JvdXAiLCJ0Ym9keSIsInRmb290IiwidGhlYWQiLCJ0ZCIs
InRoIiwic3ZnRWxlbWVudHMiLCJnZXRVbmJvdW5kZWRTY3JvbGxQb3NpdGlvbiIsInNjcm9sbGFi
bGUiLCJXaW5kb3ciLCJwYWdlWE9mZnNldCIsInNjcm9sbExlZnQiLCJwYWdlWU9mZnNldCIsInNj
cm9sbFRvcCIsImh5cGhlbmF0ZSIsIl91cHBlcmNhc2VQYXR0ZXJuIiwiaHlwaGVuYXRlU3R5bGVO
YW1lIiwiaXNOb2RlIiwiTm9kZSIsIm1lbW9pemVTdHJpbmdPbmx5IiwiY2FjaGUiLCJSRUFDVF9T
VEFUSUNTIiwiS05PV05fU1RBVElDUyIsImNhbGxlciIsImFyaXR5Iiwib2JqZWN0UHJvdG90eXBl
IiwiaG9pc3ROb25SZWFjdFN0YXRpY3MiLCJ0YXJnZXRDb21wb25lbnQiLCJzb3VyY2VDb21wb25l
bnQiLCJibGFja2xpc3QiLCJpbmhlcml0ZWRDb21wb25lbnQiLCJ1bmRlZmluZWRUYWciLCJudWxs
VGFnIiwic3ltVG9TdHJpbmdUYWciLCJnZXRSYXdUYWciLCJvYmplY3RUb1N0cmluZyIsInRvU3Ry
aW5nVGFnIiwiZ2xvYmFsIiwiZnJlZUdsb2JhbCIsIm92ZXJBcmciLCJpc093biIsInVubWFza2Vk
IiwicmVzdWx0IiwibmF0aXZlT2JqZWN0VG9TdHJpbmciLCJ0cmFuc2Zvcm0iLCJmcmVlU2VsZiIs
InR5cGVTcGVjcyIsInZhbHVlcyIsImxvY2F0aW9uIiwiZ2V0U3RhY2siLCJzaGltIiwicHJvcEZ1
bGxOYW1lIiwic2VjcmV0IiwiZ2V0U2hpbSIsInN5bWJvbCIsImFueSIsImFycmF5T2YiLCJpbnN0
YW5jZU9mIiwib2JqZWN0T2YiLCJvbmVPZiIsIm9uZU9mVHlwZSIsIm1heWJlSXRlcmFibGUiLCJJ
VEVSQVRPUl9TWU1CT0wiLCJGQVVYX0lURVJBVE9SX1NZTUJPTCIsIlByb3BUeXBlRXJyb3IiLCJj
cmVhdGVDaGFpbmFibGVUeXBlQ2hlY2tlciIsInZhbGlkYXRlIiwiY2hlY2tUeXBlIiwiQU5PTllN
T1VTIiwiY2hhaW5lZENoZWNrVHlwZSIsImNyZWF0ZVByaW1pdGl2ZVR5cGVDaGVja2VyIiwiZXhw
ZWN0ZWRUeXBlIiwicHJvcFR5cGUiLCJnZXRQcm9wVHlwZSIsInByZWNpc2VUeXBlIiwiZ2V0UHJl
Y2lzZVR5cGUiLCJjcmVhdGVBbnlUeXBlQ2hlY2tlciIsImNyZWF0ZUFycmF5T2ZUeXBlQ2hlY2tl
ciIsInR5cGVDaGVja2VyIiwiY3JlYXRlRWxlbWVudFR5cGVDaGVja2VyIiwiY3JlYXRlSW5zdGFu
Y2VUeXBlQ2hlY2tlciIsImV4cGVjdGVkQ2xhc3MiLCJleHBlY3RlZENsYXNzTmFtZSIsImFjdHVh
bENsYXNzTmFtZSIsImdldENsYXNzTmFtZSIsImNyZWF0ZUVudW1UeXBlQ2hlY2tlciIsImV4cGVj
dGVkVmFsdWVzIiwidmFsdWVzU3RyaW5nIiwiY3JlYXRlT2JqZWN0T2ZUeXBlQ2hlY2tlciIsImNy
ZWF0ZVVuaW9uVHlwZUNoZWNrZXIiLCJhcnJheU9mVHlwZUNoZWNrZXJzIiwiY2hlY2tlciIsImdl
dFBvc3RmaXhGb3JUeXBlV2FybmluZyIsImNyZWF0ZU5vZGVDaGVja2VyIiwiY3JlYXRlU2hhcGVU
eXBlQ2hlY2tlciIsInNoYXBlVHlwZXMiLCJldmVyeSIsImlzU3ltYm9sIiwiQVJJQURPTVByb3Bl
cnR5Q29uZmlnIiwiYXJpYS1jdXJyZW50IiwiYXJpYS1kZXRhaWxzIiwiYXJpYS1kaXNhYmxlZCIs
ImFyaWEtaGlkZGVuIiwiYXJpYS1pbnZhbGlkIiwiYXJpYS1rZXlzaG9ydGN1dHMiLCJhcmlhLWxh
YmVsIiwiYXJpYS1yb2xlZGVzY3JpcHRpb24iLCJhcmlhLWF1dG9jb21wbGV0ZSIsImFyaWEtY2hl
Y2tlZCIsImFyaWEtZXhwYW5kZWQiLCJhcmlhLWhhc3BvcHVwIiwiYXJpYS1sZXZlbCIsImFyaWEt
bW9kYWwiLCJhcmlhLW11bHRpbGluZSIsImFyaWEtbXVsdGlzZWxlY3RhYmxlIiwiYXJpYS1vcmll
bnRhdGlvbiIsImFyaWEtcGxhY2Vob2xkZXIiLCJhcmlhLXByZXNzZWQiLCJhcmlhLXJlYWRvbmx5
IiwiYXJpYS1yZXF1aXJlZCIsImFyaWEtc2VsZWN0ZWQiLCJhcmlhLXNvcnQiLCJhcmlhLXZhbHVl
bWF4IiwiYXJpYS12YWx1ZW1pbiIsImFyaWEtdmFsdWVub3ciLCJhcmlhLXZhbHVldGV4dCIsImFy
aWEtYXRvbWljIiwiYXJpYS1idXN5IiwiYXJpYS1saXZlIiwiYXJpYS1yZWxldmFudCIsImFyaWEt
ZHJvcGVmZmVjdCIsImFyaWEtZ3JhYmJlZCIsImFyaWEtYWN0aXZlZGVzY2VuZGFudCIsImFyaWEt
Y29sY291bnQiLCJhcmlhLWNvbGluZGV4IiwiYXJpYS1jb2xzcGFuIiwiYXJpYS1jb250cm9scyIs
ImFyaWEtZGVzY3JpYmVkYnkiLCJhcmlhLWVycm9ybWVzc2FnZSIsImFyaWEtZmxvd3RvIiwiYXJp
YS1sYWJlbGxlZGJ5IiwiYXJpYS1vd25zIiwiYXJpYS1wb3NpbnNldCIsImFyaWEtcm93Y291bnQi
LCJhcmlhLXJvd2luZGV4IiwiYXJpYS1yb3dzcGFuIiwiYXJpYS1zZXRzaXplIiwiQXV0b0ZvY3Vz
VXRpbHMiLCJmb2N1c0RPTUNvbXBvbmVudCIsImlzUHJlc3RvIiwib3BlcmEiLCJpc0tleXByZXNz
Q29tbWFuZCIsImdldENvbXBvc2l0aW9uRXZlbnRUeXBlIiwiY29tcG9zaXRpb25TdGFydCIsImNv
bXBvc2l0aW9uRW5kIiwiY29tcG9zaXRpb25VcGRhdGUiLCJpc0ZhbGxiYWNrQ29tcG9zaXRpb25T
dGFydCIsIlNUQVJUX0tFWUNPREUiLCJpc0ZhbGxiYWNrQ29tcG9zaXRpb25FbmQiLCJFTkRfS0VZ
Q09ERVMiLCJnZXREYXRhRnJvbUN1c3RvbUV2ZW50IiwiZXh0cmFjdENvbXBvc2l0aW9uRXZlbnQi
LCJmYWxsYmFja0RhdGEiLCJjYW5Vc2VDb21wb3NpdGlvbkV2ZW50IiwiY3VycmVudENvbXBvc2l0
aW9uIiwidXNlRmFsbGJhY2tDb21wb3NpdGlvbkRhdGEiLCJnZXREYXRhIiwiRmFsbGJhY2tDb21w
b3NpdGlvblN0YXRlIiwiU3ludGhldGljQ29tcG9zaXRpb25FdmVudCIsImN1c3RvbURhdGEiLCJn
ZXROYXRpdmVCZWZvcmVJbnB1dENoYXJzIiwiU1BBQ0VCQVJfQ09ERSIsImhhc1NwYWNlS2V5cHJl
c3MiLCJTUEFDRUJBUl9DSEFSIiwiY2hhcnMiLCJnZXRGYWxsYmFja0JlZm9yZUlucHV0Q2hhcnMi
LCJleHRyYWN0QmVmb3JlSW5wdXRFdmVudCIsImNhblVzZVRleHRJbnB1dEV2ZW50IiwiU3ludGhl
dGljSW5wdXRFdmVudCIsImJlZm9yZUlucHV0IiwiYnViYmxlZCIsImNhcHR1cmVkIiwiQmVmb3Jl
SW5wdXRFdmVudFBsdWdpbiIsImRhbmdlcm91c1N0eWxlVmFsdWUiLCJwcm9jZXNzU3R5bGVOYW1l
Iiwic3R5bGVOYW1lIiwiaGFzU2hvcnRoYW5kUHJvcGVydHlCdWciLCJzdHlsZUZsb2F0QWNjZXNz
b3IiLCJ0ZW1wU3R5bGUiLCJzdHlsZSIsImNzc0Zsb2F0IiwiQ1NTUHJvcGVydHlPcGVyYXRpb25z
IiwiY3JlYXRlTWFya3VwRm9yU3R5bGVzIiwic3R5bGVzIiwic2VyaWFsaXplZCIsImlzQ3VzdG9t
UHJvcGVydHkiLCJzdHlsZVZhbHVlIiwic2V0VmFsdWVGb3JTdHlsZXMiLCJzZXRQcm9wZXJ0eSIs
ImV4cGFuc2lvbiIsImluZGl2aWR1YWxTdHlsZU5hbWUiLCJjcmVhdGVBbmRBY2N1bXVsYXRlQ2hh
bmdlRXZlbnQiLCJjaGFuZ2UiLCJzaG91bGRVc2VDaGFuZ2VFdmVudCIsIm1hbnVhbERpc3BhdGNo
Q2hhbmdlRXZlbnQiLCJhY3RpdmVFbGVtZW50SW5zdCIsInJ1bkV2ZW50SW5CYXRjaCIsInN0YXJ0
V2F0Y2hpbmdGb3JDaGFuZ2VFdmVudElFOCIsInN0b3BXYXRjaGluZ0ZvckNoYW5nZUV2ZW50SUU4
IiwiZ2V0SW5zdElmVmFsdWVDaGFuZ2VkIiwidXBkYXRlZCIsIkNoYW5nZUV2ZW50UGx1Z2luIiwi
X2FsbG93U2ltdWxhdGVkUGFzc1Rocm91Z2giLCJnZXRUYXJnZXRJbnN0Rm9yQ2hhbmdlRXZlbnQi
LCJoYW5kbGVFdmVudHNGb3JDaGFuZ2VFdmVudElFOCIsInN0YXJ0V2F0Y2hpbmdGb3JWYWx1ZUNo
YW5nZSIsImhhbmRsZVByb3BlcnR5Q2hhbmdlIiwic3RvcFdhdGNoaW5nRm9yVmFsdWVDaGFuZ2Ui
LCJoYW5kbGVFdmVudHNGb3JJbnB1dEV2ZW50UG9seWZpbGwiLCJnZXRUYXJnZXRJbnN0Rm9ySW5w
dXRFdmVudFBvbHlmaWxsIiwic2hvdWxkVXNlQ2xpY2tFdmVudCIsImdldFRhcmdldEluc3RGb3JD
bGlja0V2ZW50IiwiZ2V0VGFyZ2V0SW5zdEZvcklucHV0T3JDaGFuZ2VFdmVudCIsImhhbmRsZUNv
bnRyb2xsZWRJbnB1dEJsdXIiLCJjb250cm9sbGVkIiwiZG9lc0NoYW5nZUV2ZW50QnViYmxlIiwi
aXNJbnB1dEV2ZW50U3VwcG9ydGVkIiwiX2lzSW5wdXRFdmVudFN1cHBvcnRlZCIsImdldFRhcmdl
dEluc3RGdW5jIiwiaGFuZGxlRXZlbnRGdW5jIiwidGFyZ2V0Tm9kZSIsIm9sZENoaWxkIiwibmV3
Q2hpbGQiLCJEZWZhdWx0RXZlbnRQbHVnaW5PcmRlciIsIm1vdXNlRW50ZXIiLCJtb3VzZUxlYXZl
IiwiRW50ZXJMZWF2ZUV2ZW50UGx1Z2luIiwid2luIiwicmVsYXRlZCIsInRvTm9kZSIsIl9yb290
IiwiX3N0YXJ0VGV4dCIsIl9mYWxsYmFja1RleHQiLCJzdGFydFZhbHVlIiwic3RhcnRMZW5ndGgi
LCJlbmRWYWx1ZSIsImVuZExlbmd0aCIsIm1pbkVuZCIsInNsaWNlVGFpbCIsIkhUTUxET01Qcm9w
ZXJ0eUNvbmZpZyIsImFjY2VwdCIsImFjY2VwdENoYXJzZXQiLCJhY2Nlc3NLZXkiLCJhbGxvd0Z1
bGxTY3JlZW4iLCJhbGxvd1RyYW5zcGFyZW5jeSIsImFsdCIsImFzIiwiYXN5bmMiLCJhdXRvQ29t
cGxldGUiLCJhdXRvUGxheSIsImNlbGxQYWRkaW5nIiwiY2VsbFNwYWNpbmciLCJjaGFyU2V0Iiwi
Y2hhbGxlbmdlIiwiY2l0ZSIsImNsYXNzSUQiLCJjb2xzIiwiY29sU3BhbiIsImNvbnRleHRNZW51
IiwiY29udHJvbHMiLCJjb29yZHMiLCJjcm9zc09yaWdpbiIsImRhdGVUaW1lIiwiZGVmZXIiLCJk
b3dubG9hZCIsImRyYWdnYWJsZSIsImVuY1R5cGUiLCJmb3JtIiwiZm9ybUFjdGlvbiIsImZvcm1F
bmNUeXBlIiwiZm9ybU1ldGhvZCIsImZvcm1Ob1ZhbGlkYXRlIiwiZm9ybVRhcmdldCIsImZyYW1l
Qm9yZGVyIiwiaGVhZGVycyIsImhlaWdodCIsImhpZ2giLCJocmVmIiwiaHJlZkxhbmciLCJodG1s
Rm9yIiwiaHR0cEVxdWl2IiwiaWNvbiIsImlucHV0TW9kZSIsImludGVncml0eSIsImtleVBhcmFt
cyIsImtleVR5cGUiLCJraW5kIiwibGFiZWwiLCJsYW5nIiwibGlzdCIsImxvb3AiLCJsb3ciLCJt
YW5pZmVzdCIsIm1hcmdpbkhlaWdodCIsIm1hcmdpbldpZHRoIiwibWF4IiwibWF4TGVuZ3RoIiwi
bWVkaWEiLCJtZWRpYUdyb3VwIiwibWluTGVuZ3RoIiwibXV0ZWQiLCJub25jZSIsIm5vVmFsaWRh
dGUiLCJvcGVuIiwib3B0aW11bSIsInBhdHRlcm4iLCJwbGF5c0lubGluZSIsInBvc3RlciIsInBy
ZWxvYWQiLCJwcm9maWxlIiwicmFkaW9Hcm91cCIsInJlZmVycmVyUG9saWN5IiwicmVsIiwicmVx
dWlyZWQiLCJyZXZlcnNlZCIsInJvbGUiLCJyb3dzIiwicm93U3BhbiIsInNhbmRib3giLCJzY29w
ZWQiLCJzY3JvbGxpbmciLCJzZWFtbGVzcyIsInNpemUiLCJzaXplcyIsInNwYW4iLCJzcGVsbENo
ZWNrIiwic3JjIiwic3JjRG9jIiwic3JjTGFuZyIsInNyY1NldCIsInN1bW1hcnkiLCJ0YWJJbmRl
eCIsInVzZU1hcCIsIndpZHRoIiwid21vZGUiLCJhYm91dCIsImRhdGF0eXBlIiwiaW5saXN0Iiwi
cmVzb3VyY2UiLCJ0eXBlb2YiLCJ2b2NhYiIsImF1dG9DYXBpdGFsaXplIiwiYXV0b0NvcnJlY3Qi
LCJhdXRvU2F2ZSIsIml0ZW1Qcm9wIiwiaXRlbVNjb3BlIiwiaXRlbVR5cGUiLCJpdGVtSUQiLCJp
dGVtUmVmIiwicmVzdWx0cyIsInNlY3VyaXR5IiwidW5zZWxlY3RhYmxlIiwidmFsaWRpdHkiLCJi
YWRJbnB1dCIsImluc3RhbnRpYXRlQ2hpbGQiLCJjaGlsZEluc3RhbmNlcyIsInNlbGZEZWJ1Z0lE
Iiwia2V5VW5pcXVlIiwiUmVhY3RDaGlsZFJlY29uY2lsZXIiLCJpbnN0YW50aWF0ZUNoaWxkcmVu
IiwibmVzdGVkQ2hpbGROb2RlcyIsInVwZGF0ZUNoaWxkcmVuIiwicHJldkNoaWxkcmVuIiwibmV4
dENoaWxkcmVuIiwibW91bnRJbWFnZXMiLCJyZW1vdmVkTm9kZXMiLCJwcmV2Q2hpbGQiLCJuZXh0
Q2hpbGRJbnN0YW5jZSIsIm5leHRDaGlsZE1vdW50SW1hZ2UiLCJ1bm1vdW50Q2hpbGRyZW4iLCJy
ZW5kZXJlZENoaWxkcmVuIiwicmVuZGVyZWRDaGlsZCIsIlJlYWN0RE9NSURPcGVyYXRpb25zIiwi
UmVhY3RDb21wb25lbnRCcm93c2VyRW52aXJvbm1lbnQiLCJkYW5nZXJvdXNseVByb2Nlc3NDaGls
ZHJlblVwZGF0ZXMiLCJTdGF0ZWxlc3NDb21wb25lbnQiLCJ3YXJuSWZJbnZhbGlkRWxlbWVudCIs
InNob3VsZENvbnN0cnVjdCIsImlzUHVyZUNvbXBvbmVudCIsIkNvbXBvc2l0ZVR5cGVzIiwiSW1w
dXJlQ2xhc3MiLCJQdXJlQ2xhc3MiLCJTdGF0ZWxlc3NGdW5jdGlvbmFsIiwibmV4dE1vdW50SUQi
LCJfY29tcG9zaXRlVHlwZSIsIl9jYWxsZWRDb21wb25lbnRXaWxsVW5tb3VudCIsInJlbmRlcmVk
RWxlbWVudCIsInB1YmxpY1Byb3BzIiwicHVibGljQ29udGV4dCIsIl9wcm9jZXNzQ29udGV4dCIs
InVwZGF0ZVF1ZXVlIiwiZ2V0VXBkYXRlUXVldWUiLCJkb0NvbnN0cnVjdCIsIl9jb25zdHJ1Y3RD
b21wb25lbnQiLCJ1bnN0YWJsZV9oYW5kbGVFcnJvciIsInBlcmZvcm1Jbml0aWFsTW91bnRXaXRo
RXJyb3JIYW5kbGluZyIsInBlcmZvcm1Jbml0aWFsTW91bnQiLCJfY29uc3RydWN0Q29tcG9uZW50
V2l0aG91dE93bmVyIiwiX3Byb2Nlc3NQZW5kaW5nU3RhdGUiLCJkZWJ1Z0lEIiwiX3JlbmRlclZh
bGlkYXRlZENvbXBvbmVudCIsIl9tYXNrQ29udGV4dCIsIm1hc2tlZENvbnRleHQiLCJjb250ZXh0
TmFtZSIsImN1cnJlbnRDb250ZXh0IiwiY2hpbGRDb250ZXh0IiwiX2NoZWNrQ29udGV4dFR5cGVz
IiwicHJldkNvbnRleHQiLCJwcmV2UGFyZW50RWxlbWVudCIsIm5leHRQYXJlbnRFbGVtZW50Iiwi
cHJldlVubWFza2VkQ29udGV4dCIsIm5leHRVbm1hc2tlZENvbnRleHQiLCJ3aWxsUmVjZWl2ZSIs
InByZXZQcm9wcyIsIm5leHRTdGF0ZSIsInNob3VsZFVwZGF0ZSIsIl9wZXJmb3JtQ29tcG9uZW50
VXBkYXRlIiwicGFydGlhbCIsInVubWFza2VkQ29udGV4dCIsInByZXZTdGF0ZSIsImhhc0NvbXBv
bmVudERpZFVwZGF0ZSIsIl91cGRhdGVSZW5kZXJlZENvbXBvbmVudCIsInByZXZDb21wb25lbnRJ
bnN0YW5jZSIsInByZXZSZW5kZXJlZEVsZW1lbnQiLCJuZXh0UmVuZGVyZWRFbGVtZW50Iiwib2xk
SG9zdE5vZGUiLCJuZXh0TWFya3VwIiwiX3JlcGxhY2VOb2RlV2l0aE1hcmt1cCIsInByZXZJbnN0
YW5jZSIsIl9yZW5kZXJWYWxpZGF0ZWRDb21wb25lbnRXaXRob3V0T3duZXJPckNvbnRleHQiLCJh
dHRhY2hSZWYiLCJwdWJsaWNDb21wb25lbnRJbnN0YW5jZSIsImRldGFjaFJlZiIsIlJlYWN0RGVm
YXVsdEluamVjdGlvbiIsImZpbmRET01Ob2RlIiwiaW5qZWN0IiwiUmVhY3RET00iLCJ1bnN0YWJs
ZV9iYXRjaGVkVXBkYXRlcyIsInVuc3RhYmxlX3JlbmRlclN1YnRyZWVJbnRvQ29udGFpbmVyIiwi
X19SRUFDVF9ERVZUT09MU19HTE9CQUxfSE9PS19fIiwiTW91bnQiLCJSZWNvbmNpbGVyIiwiYXNz
ZXJ0VmFsaWRQcm9wcyIsInZvaWRFbGVtZW50VGFncyIsIl90YWciLCJkYW5nZXJvdXNseVNldElu
bmVySFRNTCIsIkhUTUwiLCJlbnF1ZXVlUHV0TGlzdGVuZXIiLCJSZWFjdFNlcnZlclJlbmRlcmlu
Z1RyYW5zYWN0aW9uIiwiY29udGFpbmVySW5mbyIsImlzRG9jdW1lbnRGcmFnbWVudCIsIl9ub2Rl
IiwiRE9DX0ZSQUdNRU5UX1RZUEUiLCJfb3duZXJEb2N1bWVudCIsImxpc3RlbmVyVG9QdXQiLCJp
bnB1dFBvc3RNb3VudCIsIlJlYWN0RE9NSW5wdXQiLCJwb3N0TW91bnRXcmFwcGVyIiwidGV4dGFy
ZWFQb3N0TW91bnQiLCJSZWFjdERPTVRleHRhcmVhIiwib3B0aW9uUG9zdE1vdW50IiwiUmVhY3RE
T01PcHRpb24iLCJ0cmFja0lucHV0VmFsdWUiLCJ0cmFwQnViYmxlZEV2ZW50c0xvY2FsIiwiZ2V0
Tm9kZSIsIm1lZGlhRXZlbnRzIiwicG9zdFVwZGF0ZVNlbGVjdFdyYXBwZXIiLCJ2YWxpZGF0ZURh
bmdlcm91c1RhZyIsInZhbGlkYXRlZFRhZ0NhY2hlIiwiVkFMSURfVEFHX1JFR0VYIiwiaXNDdXN0
b21Db21wb25lbnQiLCJSZWFjdERPTUNvbXBvbmVudCIsIl9uYW1lc3BhY2VVUkkiLCJfcHJldmlv
dXNTdHlsZSIsIl9wcmV2aW91c1N0eWxlQ29weSIsIlJlYWN0TXVsdGlDaGlsZCIsIkNPTlRFTlRf
VFlQRVMiLCJTVFlMRSIsInN1cHByZXNzQ29udGVudEVkaXRhYmxlV2FybmluZyIsIm9taXR0ZWRD
bG9zZVRhZ3MiLCJiYXNlIiwiYnIiLCJlbWJlZCIsImhyIiwiaW1nIiwia2V5Z2VuIiwibGluayIs
Im1ldGEiLCJ3YnIiLCJuZXdsaW5lRWF0aW5nVGFncyIsImxpc3RpbmciLCJwcmUiLCJ0ZXh0YXJl
YSIsIm1lbnVpdGVtIiwiZ2xvYmFsSWRDb3VudGVyIiwiTWl4aW4iLCJfaWRDb3VudGVyIiwicGFy
ZW50VGFnIiwibW91bnRJbWFnZSIsImVsIiwiZGl2IiwiY3JlYXRlRWxlbWVudE5TIiwiX3VwZGF0
ZURPTVByb3BlcnRpZXMiLCJsYXp5VHJlZSIsIl9jcmVhdGVJbml0aWFsQ2hpbGRyZW4iLCJ0YWdP
cGVuIiwiX2NyZWF0ZU9wZW5UYWdNYXJrdXBBbmRQdXRMaXN0ZW5lcnMiLCJ0YWdDb250ZW50Iiwi
X2NyZWF0ZUNvbnRlbnRNYXJrdXAiLCJwcm9wS2V5IiwicmVuZGVyVG9TdGF0aWNNYXJrdXAiLCJf
X2h0bWwiLCJjb250ZW50VG9Vc2UiLCJjaGlsZHJlblRvVXNlIiwibW91bnRDaGlsZHJlbiIsImxh
c3RQcm9wcyIsIl91cGRhdGVET01DaGlsZHJlbiIsInVwZGF0ZVdyYXBwZXIiLCJzdHlsZVVwZGF0
ZXMiLCJsYXN0U3R5bGUiLCJuZXh0UHJvcCIsImxhc3RQcm9wIiwibGFzdENvbnRlbnQiLCJuZXh0
Q29udGVudCIsImxhc3RIdG1sIiwibmV4dEh0bWwiLCJsYXN0Q2hpbGRyZW4iLCJsYXN0SGFzQ29u
dGVudE9ySHRtbCIsIm5leHRIYXNDb250ZW50T3JIdG1sIiwidXBkYXRlVGV4dENvbnRlbnQiLCJ1
cGRhdGVNYXJrdXAiLCJ0b3BMZXZlbFdyYXBwZXIiLCJSZWFjdERPTUVtcHR5Q29tcG9uZW50Iiwi
ZG9tSUQiLCJjcmVhdGVDb21tZW50IiwidXNlRmliZXIiLCJmb3JjZVVwZGF0ZUlmTW91bnRlZCIs
ImlzQ29udHJvbGxlZCIsInVzZXNDaGVja2VkIiwicm9vdE5vZGUiLCJxdWVyeVJvb3QiLCJncm91
cCIsInF1ZXJ5U2VsZWN0b3JBbGwiLCJvdGhlck5vZGUiLCJvdGhlckluc3RhbmNlIiwiaG9zdFBy
b3BzIiwiZGVmYXVsdENoZWNrZWQiLCJpbml0aWFsQ2hlY2tlZCIsInZhbHVlQXNOdW1iZXIiLCJw
YXJzZUZsb2F0IiwiZmxhdHRlbkNoaWxkcmVuIiwiZGlkV2FybkludmFsaWRPcHRpb25DaGlsZHJl
biIsInNlbGVjdFZhbHVlIiwic2VsZWN0UGFyZW50IiwiaXNDb2xsYXBzZWQiLCJhbmNob3JOb2Rl
IiwiYW5jaG9yT2Zmc2V0IiwiZm9jdXNPZmZzZXQiLCJnZXRJRU9mZnNldHMiLCJzZWxlY3RlZFJh
bmdlIiwic2VsZWN0ZWRMZW5ndGgiLCJmcm9tU3RhcnQiLCJkdXBsaWNhdGUiLCJtb3ZlVG9FbGVt
ZW50VGV4dCIsInNldEVuZFBvaW50Iiwic3RhcnRPZmZzZXQiLCJlbmRPZmZzZXQiLCJnZXRNb2Rl
cm5PZmZzZXRzIiwicmFuZ2VDb3VudCIsImN1cnJlbnRSYW5nZSIsImdldFJhbmdlQXQiLCJzdGFy
dENvbnRhaW5lciIsImVuZENvbnRhaW5lciIsImlzU2VsZWN0aW9uQ29sbGFwc2VkIiwicmFuZ2VM
ZW5ndGgiLCJ0ZW1wUmFuZ2UiLCJjbG9uZVJhbmdlIiwic2VsZWN0Tm9kZUNvbnRlbnRzIiwic2V0
RW5kIiwiaXNUZW1wUmFuZ2VDb2xsYXBzZWQiLCJkZXRlY3Rpb25SYW5nZSIsInNldFN0YXJ0Iiwi
aXNCYWNrd2FyZCIsImNvbGxhcHNlZCIsInNldElFT2Zmc2V0cyIsInNldE1vZGVybk9mZnNldHMi
LCJleHRlbmQiLCJ0ZW1wIiwic3RhcnRNYXJrZXIiLCJnZXROb2RlRm9yQ2hhcmFjdGVyT2Zmc2V0
IiwiZW5kTWFya2VyIiwib2Zmc2V0IiwicmVtb3ZlQWxsUmFuZ2VzIiwiYWRkUmFuZ2UiLCJ1c2VJ
RU9mZnNldHMiLCJSZWFjdERPTVRleHRDb21wb25lbnQiLCJfc3RyaW5nVGV4dCIsIl9jbG9zaW5n
Q29tbWVudCIsIl9jb21tZW50Tm9kZXMiLCJvcGVuaW5nVmFsdWUiLCJjbG9zaW5nVmFsdWUiLCJj
cmVhdGVEb2N1bWVudEZyYWdtZW50IiwiZXNjYXBlZFRleHQiLCJuZXh0VGV4dCIsIm5leHRTdHJp
bmdUZXh0IiwiY29tbWVudE5vZGVzIiwiaG9zdE5vZGUiLCJpbnN0QSIsImluc3RCIiwiZGVwdGhB
IiwidGVtcEEiLCJkZXB0aEIiLCJ0ZW1wQiIsImRlcHRoIiwicGF0aCIsImNvbW1vbiIsInBhdGhG
cm9tIiwicGF0aFRvIiwiUmVhY3REZWZhdWx0QmF0Y2hpbmdTdHJhdGVneVRyYW5zYWN0aW9uIiwi
UkVTRVRfQkFUQ0hFRF9VUERBVEVTIiwiUmVhY3REZWZhdWx0QmF0Y2hpbmdTdHJhdGVneSIsIkZM
VVNIX0JBVENIRURfVVBEQVRFUyIsImFscmVhZHlCYXRjaGluZ1VwZGF0ZXMiLCJhbHJlYWR5SW5q
ZWN0ZWQiLCJSZWFjdEluamVjdGlvbiIsIkV2ZW50RW1pdHRlciIsIlJlYWN0RE9NVHJlZVRyYXZl
cnNhbCIsIlNpbXBsZUV2ZW50UGx1Z2luIiwiU2VsZWN0RXZlbnRQbHVnaW4iLCJIb3N0Q29tcG9u
ZW50IiwiU1ZHRE9NUHJvcGVydHlDb25maWciLCJFbXB0eUNvbXBvbmVudCIsIlVwZGF0ZXMiLCJy
dW5FdmVudFF1ZXVlSW5CYXRjaCIsImZpbmRQYXJlbnQiLCJUb3BMZXZlbENhbGxiYWNrQm9va0tl
ZXBpbmciLCJhbmNlc3RvcnMiLCJoYW5kbGVUb3BMZXZlbEltcGwiLCJib29rS2VlcGluZyIsImFu
Y2VzdG9yIiwiX2hhbmRsZVRvcExldmVsIiwic2Nyb2xsVmFsdWVNb25pdG9yIiwidHdvQXJndW1l
bnRQb29sZXIiLCJfZW5hYmxlZCIsImRpc3BhdGNoRXZlbnQiLCJhZGxlcjMyIiwiVEFHX0VORCIs
IkNPTU1FTlRfU1RBUlQiLCJhZGRDaGVja3N1bVRvTWFya3VwIiwiZXhpc3RpbmdDaGVja3N1bSIs
Im1hcmt1cENoZWNrc3VtIiwibWFrZUluc2VydE1hcmt1cCIsInRvSW5kZXgiLCJmcm9tSW5kZXgi
LCJtYWtlTW92ZSIsIm1ha2VSZW1vdmUiLCJtYWtlU2V0TWFya3VwIiwibWFrZVRleHRDb250ZW50
IiwicHJvY2Vzc1F1ZXVlIiwiX3JlY29uY2lsZXJJbnN0YW50aWF0ZUNoaWxkcmVuIiwibmVzdGVk
Q2hpbGRyZW4iLCJfcmVjb25jaWxlclVwZGF0ZUNoaWxkcmVuIiwibmV4dE5lc3RlZENoaWxkcmVu
RWxlbWVudHMiLCJfdXBkYXRlQ2hpbGRyZW4iLCJuZXh0SW5kZXgiLCJuZXh0TW91bnRJbmRleCIs
Imxhc3RQbGFjZWROb2RlIiwiX21vdW50Q2hpbGRBdEluZGV4IiwiX3VubW91bnRDaGlsZCIsImNy
ZWF0ZUNoaWxkIiwiaXNWYWxpZE93bmVyIiwiUmVhY3RPd25lciIsImFkZENvbXBvbmVudEFzUmVm
VG8iLCJyZW1vdmVDb21wb25lbnRBc1JlZkZyb20iLCJvd25lclB1YmxpY0luc3RhbmNlIiwicmVh
Y3RNb3VudFJlYWR5IiwiU0VMRUNUSU9OX1JFU1RPUkFUSU9OIiwiRVZFTlRfU1VQUFJFU1NJT04i
LCJjdXJyZW50bHlFbmFibGVkIiwicHJldmlvdXNseUVuYWJsZWQiLCJPTl9ET01fUkVBRFlfUVVF
VUVJTkciLCJwcmV2UmVmIiwicHJldk93bmVyIiwibmV4dFJlZiIsIm5leHRPd25lciIsIlJlYWN0
U2VydmVyVXBkYXRlUXVldWUiLCJub29wQ2FsbGJhY2tRdWV1ZSIsIk5TIiwieGxpbmsiLCJ4bWwi
LCJBVFRSUyIsImFjY2VudEhlaWdodCIsImFjY3VtdWxhdGUiLCJhZGRpdGl2ZSIsImFsaWdubWVu
dEJhc2VsaW5lIiwiYWxsb3dSZW9yZGVyIiwiYWxwaGFiZXRpYyIsImFtcGxpdHVkZSIsImFyYWJp
Y0Zvcm0iLCJhc2NlbnQiLCJhdHRyaWJ1dGVUeXBlIiwiYXV0b1JldmVyc2UiLCJhemltdXRoIiwi
YmFzZUZyZXF1ZW5jeSIsImJhc2VQcm9maWxlIiwiYmFzZWxpbmVTaGlmdCIsImJib3giLCJiZWdp
biIsImJpYXMiLCJieSIsImNhbGNNb2RlIiwiY2FwSGVpZ2h0IiwiY2xpcCIsImNsaXBQYXRoIiwi
Y2xpcFJ1bGUiLCJjbGlwUGF0aFVuaXRzIiwiY29sb3JJbnRlcnBvbGF0aW9uIiwiY29sb3JJbnRl
cnBvbGF0aW9uRmlsdGVycyIsImNvbG9yUHJvZmlsZSIsImNvbG9yUmVuZGVyaW5nIiwiY29udGVu
dFNjcmlwdFR5cGUiLCJjb250ZW50U3R5bGVUeXBlIiwiY3Vyc29yIiwiY3giLCJjeSIsImRlY2Vs
ZXJhdGUiLCJkZXNjZW50IiwiZGlmZnVzZUNvbnN0YW50IiwiZGlyZWN0aW9uIiwiZGlzcGxheSIs
ImRpdmlzb3IiLCJkb21pbmFudEJhc2VsaW5lIiwiZHVyIiwiZHgiLCJkeSIsImVkZ2VNb2RlIiwi
ZWxldmF0aW9uIiwiZW5hYmxlQmFja2dyb3VuZCIsImV4cG9uZW50IiwiZXh0ZXJuYWxSZXNvdXJj
ZXNSZXF1aXJlZCIsImZpbGwiLCJmaWxsUnVsZSIsImZpbHRlciIsImZpbHRlclJlcyIsImZpbHRl
clVuaXRzIiwiZmxvb2RDb2xvciIsImZvY3VzYWJsZSIsImZvbnRTaXplQWRqdXN0IiwiZm9udFN0
cmV0Y2giLCJmeCIsImZ5IiwiZzEiLCJnMiIsImdseXBoTmFtZSIsImdseXBoT3JpZW50YXRpb25I
b3Jpem9udGFsIiwiZ2x5cGhPcmllbnRhdGlvblZlcnRpY2FsIiwiZ2x5cGhSZWYiLCJncmFkaWVu
dFRyYW5zZm9ybSIsImdyYWRpZW50VW5pdHMiLCJoYW5naW5nIiwiaG9yaXpBZHZYIiwiaG9yaXpP
cmlnaW5YIiwiaWRlb2dyYXBoaWMiLCJpbWFnZVJlbmRlcmluZyIsImluIiwiaW4yIiwiaW50ZXJj
ZXB0IiwiazEiLCJrMiIsImszIiwiazQiLCJrZXJuZWxNYXRyaXgiLCJrZXJuZWxVbml0TGVuZ3Ro
Iiwia2VybmluZyIsImtleVBvaW50cyIsImtleVNwbGluZXMiLCJrZXlUaW1lcyIsImxlbmd0aEFk
anVzdCIsImxldHRlclNwYWNpbmciLCJsaWdodGluZ0NvbG9yIiwibGltaXRpbmdDb25lQW5nbGUi
LCJsb2NhbCIsIm1hcmtlckVuZCIsIm1hcmtlck1pZCIsIm1hcmtlclN0YXJ0IiwibWFya2VySGVp
Z2h0IiwibWFya2VyVW5pdHMiLCJtYXJrZXJXaWR0aCIsIm1hc2siLCJtYXNrQ29udGVudFVuaXRz
IiwibWFza1VuaXRzIiwibWF0aGVtYXRpY2FsIiwibW9kZSIsIm51bU9jdGF2ZXMiLCJvcGVyYXRv
ciIsIm9yaWVudCIsIm9yaWVudGF0aW9uIiwib3JpZ2luIiwib3ZlcmZsb3ciLCJvdmVybGluZVBv
c2l0aW9uIiwib3ZlcmxpbmVUaGlja25lc3MiLCJwYWludE9yZGVyIiwicGFub3NlMSIsInBhdGhM
ZW5ndGgiLCJwYXR0ZXJuQ29udGVudFVuaXRzIiwicGF0dGVyblRyYW5zZm9ybSIsInBhdHRlcm5V
bml0cyIsInBvaW50ZXJFdmVudHMiLCJwb2ludHMiLCJwb2ludHNBdFgiLCJwb2ludHNBdFkiLCJw
b2ludHNBdFoiLCJwcmVzZXJ2ZUFscGhhIiwicHJlc2VydmVBc3BlY3RSYXRpbyIsInByaW1pdGl2
ZVVuaXRzIiwiciIsInJhZGl1cyIsInJlZlgiLCJyZWZZIiwicmVuZGVyaW5nSW50ZW50IiwicmVw
ZWF0Q291bnQiLCJyZXBlYXREdXIiLCJyZXF1aXJlZEV4dGVuc2lvbnMiLCJyZXF1aXJlZEZlYXR1
cmVzIiwicmVzdGFydCIsInJvdGF0ZSIsInJ4IiwicnkiLCJzY2FsZSIsInNlZWQiLCJzaGFwZVJl
bmRlcmluZyIsInNsb3BlIiwic3BhY2luZyIsInNwZWN1bGFyQ29uc3RhbnQiLCJzcGVjdWxhckV4
cG9uZW50Iiwic3BlZWQiLCJzcHJlYWRNZXRob2QiLCJzdGREZXZpYXRpb24iLCJzdGVtaCIsInN0
ZW12Iiwic3RpdGNoVGlsZXMiLCJzdG9wQ29sb3IiLCJzdHJpa2V0aHJvdWdoUG9zaXRpb24iLCJz
dHJpa2V0aHJvdWdoVGhpY2tuZXNzIiwic3Ryb2tlIiwic3Ryb2tlTGluZWNhcCIsInN0cm9rZUxp
bmVqb2luIiwic3VyZmFjZVNjYWxlIiwic3lzdGVtTGFuZ3VhZ2UiLCJ0YWJsZVZhbHVlcyIsInRh
cmdldFgiLCJ0YXJnZXRZIiwidGV4dEFuY2hvciIsInRleHREZWNvcmF0aW9uIiwidGV4dFJlbmRl
cmluZyIsInRleHRMZW5ndGgiLCJ1MSIsInUyIiwidW5kZXJsaW5lUG9zaXRpb24iLCJ1bmRlcmxp
bmVUaGlja25lc3MiLCJ1bmljb2RlIiwidW5pY29kZUJpZGkiLCJ1bmljb2RlUmFuZ2UiLCJ1bml0
c1BlckVtIiwidkFscGhhYmV0aWMiLCJ2SGFuZ2luZyIsInZJZGVvZ3JhcGhpYyIsInZNYXRoZW1h
dGljYWwiLCJ2ZWN0b3JFZmZlY3QiLCJ2ZXJ0QWR2WSIsInZlcnRPcmlnaW5YIiwidmVydE9yaWdp
blkiLCJ2aWV3Qm94Iiwidmlld1RhcmdldCIsInZpc2liaWxpdHkiLCJ3aWR0aHMiLCJ3b3JkU3Bh
Y2luZyIsIndyaXRpbmdNb2RlIiwieEhlaWdodCIsIngxIiwieDIiLCJ4Q2hhbm5lbFNlbGVjdG9y
IiwieGxpbmtBY3R1YXRlIiwieGxpbmtBcmNyb2xlIiwieGxpbmtIcmVmIiwieGxpbmtSb2xlIiwi
eGxpbmtTaG93IiwieGxpbmtUaXRsZSIsInhsaW5rVHlwZSIsInhtbEJhc2UiLCJ4bWxucyIsInht
bG5zWGxpbmsiLCJ4bWxMYW5nIiwieG1sU3BhY2UiLCJ5MSIsInkyIiwieUNoYW5uZWxTZWxlY3Rv
ciIsInoiLCJ6b29tQW5kUGFuIiwidG9wIiwiYm91bmRpbmdUb3AiLCJsZWZ0IiwiYm91bmRpbmdM
ZWZ0IiwiY29uc3RydWN0U2VsZWN0RXZlbnQiLCJtb3VzZURvd24iLCJjdXJyZW50U2VsZWN0aW9u
IiwibGFzdFNlbGVjdGlvbiIsInNraXBTZWxlY3Rpb25DaGFuZ2VFdmVudCIsImhhc0xpc3RlbmVy
IiwiU3ludGhldGljQW5pbWF0aW9uRXZlbnQiLCJTeW50aGV0aWNDbGlwYm9hcmRFdmVudCIsIlN5
bnRoZXRpY0ZvY3VzRXZlbnQiLCJTeW50aGV0aWNLZXlib2FyZEV2ZW50IiwiU3ludGhldGljRHJh
Z0V2ZW50IiwiU3ludGhldGljVG91Y2hFdmVudCIsIlN5bnRoZXRpY1RyYW5zaXRpb25FdmVudCIs
IlN5bnRoZXRpY1doZWVsRXZlbnQiLCJ0b3BMZXZlbEV2ZW50c1RvRGlzcGF0Y2hDb25maWciLCJj
YXBpdGFsaXplZEV2ZW50Iiwib25FdmVudCIsInRvcEV2ZW50Iiwib25DbGlja0xpc3RlbmVycyIs
IkV2ZW50Q29uc3RydWN0b3IiLCJBbmltYXRpb25FdmVudEludGVyZmFjZSIsImFuaW1hdGlvbk5h
bWUiLCJlbGFwc2VkVGltZSIsInBzZXVkb0VsZW1lbnQiLCJDbGlwYm9hcmRFdmVudEludGVyZmFj
ZSIsImNsaXBib2FyZERhdGEiLCJDb21wb3NpdGlvbkV2ZW50SW50ZXJmYWNlIiwiRHJhZ0V2ZW50
SW50ZXJmYWNlIiwiZGF0YVRyYW5zZmVyIiwiRm9jdXNFdmVudEludGVyZmFjZSIsIklucHV0RXZl
bnRJbnRlcmZhY2UiLCJnZXRFdmVudEtleSIsIktleWJvYXJkRXZlbnRJbnRlcmZhY2UiLCJyZXBl
YXQiLCJsb2NhbGUiLCJUb3VjaEV2ZW50SW50ZXJmYWNlIiwidG91Y2hlcyIsInRhcmdldFRvdWNo
ZXMiLCJjaGFuZ2VkVG91Y2hlcyIsIlRyYW5zaXRpb25FdmVudEludGVyZmFjZSIsIldoZWVsRXZl
bnRJbnRlcmZhY2UiLCJkZWx0YVgiLCJ3aGVlbERlbHRhWCIsImRlbHRhWSIsIndoZWVsRGVsdGFZ
Iiwid2hlZWxEZWx0YSIsImRlbHRhWiIsImRlbHRhTW9kZSIsImwiLCJNT0QiLCJpc0VtcHR5Iiwi
aXNOb25OdW1lcmljIiwiY29tcG9uZW50T3JFbGVtZW50IiwiZmxhdHRlblNpbmdsZUNoaWxkSW50
b0NvbnRleHQiLCJub3JtYWxpemVLZXkiLCJ0cmFuc2xhdGVUb0tleSIsIkVzYyIsIlNwYWNlYmFy
IiwiTGVmdCIsIlVwIiwiUmlnaHQiLCJEb3duIiwiRGVsIiwiV2luIiwiTWVudSIsIkFwcHMiLCJT
Y3JvbGwiLCJNb3pQcmludGFibGVLZXkiLCI4IiwiOSIsIjEyIiwiMTMiLCIxNiIsIjE3IiwiMTgi
LCIxOSIsIjIwIiwiMjciLCIzMiIsIjMzIiwiMzQiLCIzNSIsIjM2IiwiMzciLCIzOCIsIjM5Iiwi
NDAiLCI0NSIsIjQ2IiwiMTEyIiwiMTEzIiwiMTE0IiwiMTE1IiwiMTE2IiwiMTE3IiwiMTE4Iiwi
MTE5IiwiMTIwIiwiMTIxIiwiMTIyIiwiMTIzIiwiMTQ0IiwiMTQ1IiwiMjI0IiwiZ2V0TGVhZk5v
ZGUiLCJnZXRTaWJsaW5nTm9kZSIsIm5vZGVTdGFydCIsIm5vZGVFbmQiLCJtYWtlUHJlZml4TWFw
Iiwic3R5bGVQcm9wIiwicHJlZml4ZWRFdmVudE5hbWVzIiwidmVuZG9yUHJlZml4ZXMiLCJwcmVm
aXhNYXAiLCJhbmltYXRpb25lbmQiLCJhbmltYXRpb25pdGVyYXRpb24iLCJhbmltYXRpb25zdGFy
dCIsInRyYW5zaXRpb25lbmQiLCJhbmltYXRpb24iLCJ0cmFuc2l0aW9uIiwiX1Byb3ZpZGVyJGNo
aWxkQ29udGV4Iiwic3ViS2V5IiwiZmFjdG9yaWVzIiwic3RyaWN0RXF1YWwiLCJjcmVhdGVDb25u
ZWN0IiwiX3JlZiRjb25uZWN0SE9DIiwiY29ubmVjdEhPQyIsIl9yZWYkbWFwU3RhdGVUb1Byb3Bz
RiIsIm1hcFN0YXRlVG9Qcm9wc0ZhY3RvcmllcyIsIl9tYXBTdGF0ZVRvUHJvcHMyIiwiX3JlZiRt
YXBEaXNwYXRjaFRvUHJvIiwibWFwRGlzcGF0Y2hUb1Byb3BzRmFjdG9yaWVzIiwiX21hcERpc3Bh
dGNoVG9Qcm9wczIiLCJfcmVmJG1lcmdlUHJvcHNGYWN0b3IiLCJtZXJnZVByb3BzRmFjdG9yaWVz
IiwiX21lcmdlUHJvcHMyIiwiX3JlZiRzZWxlY3RvckZhY3RvcnkiLCJfc2VsZWN0b3JGYWN0b3J5
MiIsIm1hcFN0YXRlVG9Qcm9wcyIsIm1hcERpc3BhdGNoVG9Qcm9wcyIsIm1lcmdlUHJvcHMiLCJf
cmVmMiRwdXJlIiwicHVyZSIsIl9yZWYyJGFyZVN0YXRlc0VxdWFsIiwiYXJlU3RhdGVzRXF1YWwi
LCJfcmVmMiRhcmVPd25Qcm9wc0VxdWEiLCJhcmVPd25Qcm9wc0VxdWFsIiwiX3NoYWxsb3dFcXVh
bDIiLCJfcmVmMiRhcmVTdGF0ZVByb3BzRXEiLCJhcmVTdGF0ZVByb3BzRXF1YWwiLCJfcmVmMiRh
cmVNZXJnZWRQcm9wc0UiLCJhcmVNZXJnZWRQcm9wc0VxdWFsIiwiZXh0cmFPcHRpb25zIiwiaW5p
dE1hcFN0YXRlVG9Qcm9wcyIsImluaXRNYXBEaXNwYXRjaFRvUHJvcHMiLCJpbml0TWVyZ2VQcm9w
cyIsIl9zaGFsbG93RXF1YWwiLCJfbWFwRGlzcGF0Y2hUb1Byb3BzIiwiX21hcFN0YXRlVG9Qcm9w
cyIsIl9tZXJnZVByb3BzIiwiX3NlbGVjdG9yRmFjdG9yeSIsIndoZW5NYXBEaXNwYXRjaFRvUHJv
cHNJc0Z1bmN0aW9uIiwiX3dyYXBNYXBUb1Byb3BzIiwid2hlbk1hcERpc3BhdGNoVG9Qcm9wc0lz
TWlzc2luZyIsIndoZW5NYXBEaXNwYXRjaFRvUHJvcHNJc09iamVjdCIsIl9yZWR1eCIsIndoZW5N
YXBTdGF0ZVRvUHJvcHNJc0Z1bmN0aW9uIiwid2hlbk1hcFN0YXRlVG9Qcm9wc0lzTWlzc2luZyIs
ImRlZmF1bHRNZXJnZVByb3BzIiwic3RhdGVQcm9wcyIsImRpc3BhdGNoUHJvcHMiLCJ3cmFwTWVy
Z2VQcm9wc0Z1bmMiLCJoYXNSdW5PbmNlIiwibWVyZ2VkUHJvcHMiLCJuZXh0TWVyZ2VkUHJvcHMi
LCJ3aGVuTWVyZ2VQcm9wc0lzRnVuY3Rpb24iLCJ3aGVuTWVyZ2VQcm9wc0lzT21pdHRlZCIsImlt
cHVyZUZpbmFsUHJvcHNTZWxlY3RvckZhY3RvcnkiLCJwdXJlRmluYWxQcm9wc1NlbGVjdG9yRmFj
dG9yeSIsImhhbmRsZUZpcnN0Q2FsbCIsImZpcnN0U3RhdGUiLCJmaXJzdE93blByb3BzIiwiaGFz
UnVuQXRMZWFzdE9uY2UiLCJoYW5kbGVOZXdQcm9wc0FuZE5ld1N0YXRlIiwiaGFuZGxlTmV3UHJv
cHMiLCJoYW5kbGVOZXdTdGF0ZSIsIm5leHRTdGF0ZVByb3BzIiwic3RhdGVQcm9wc0NoYW5nZWQi
LCJoYW5kbGVTdWJzZXF1ZW50Q2FsbHMiLCJuZXh0T3duUHJvcHMiLCJwcm9wc0NoYW5nZWQiLCJz
dGF0ZUNoYW5nZWQiLCJmaW5hbFByb3BzU2VsZWN0b3JGYWN0b3J5IiwiX3ZlcmlmeVN1YnNlbGVj
dG9ycyIsInZlcmlmeSIsInZlcmlmeVN1YnNlbGVjdG9ycyIsImNyZWF0ZUxpc3RlbmVyQ29sbGVj
dGlvbiIsImNsZWFyIiwiQ0xFQVJFRCIsIm5vdGlmeSIsIm51bGxMaXN0ZW5lcnMiLCJTdWJzY3Jp
cHRpb24iLCJhZGROZXN0ZWRTdWIiLCJlbmFibGUiLCJyYXdBc2FwIiwidGFzayIsInJlcXVlc3RG
bHVzaCIsImZsdXNoaW5nIiwiZmx1c2giLCJjdXJyZW50SW5kZXgiLCJjYXBhY2l0eSIsInNjYW4i
LCJuZXdMZW5ndGgiLCJtYWtlUmVxdWVzdENhbGxGcm9tTXV0YXRpb25PYnNlcnZlciIsInRvZ2ds
ZSIsIkJyb3dzZXJNdXRhdGlvbk9ic2VydmVyIiwib2JzZXJ2ZSIsImNoYXJhY3RlckRhdGEiLCJt
YWtlUmVxdWVzdENhbGxGcm9tVGltZXIiLCJoYW5kbGVUaW1lciIsInRpbWVvdXRIYW5kbGUiLCJj
bGVhckludGVydmFsIiwiaW50ZXJ2YWxIYW5kbGUiLCJzZXRJbnRlcnZhbCIsIk11dGF0aW9uT2Jz
ZXJ2ZXIiLCJXZWJLaXRNdXRhdGlvbk9ic2VydmVyIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQi
LCJuZXdPYmoiLCJjbGVhckNvbXBsZXRlZCIsImNvbXBsZXRlQWxsIiwiY29tcGxldGVUb2RvIiwi
ZWRpdFRvZG8iLCJkZWxldGVUb2RvIiwiYWRkVG9kbyIsIl9BY3Rpb25UeXBlcyIsInR5cGVzIiwi
X2RlZmluZVByb3BlcnR5IiwiX0ZJTFRFUl9USVRMRVMiLCJfVG9kb0ZpbHRlcnMiLCJGSUxURVJf
VElUTEVTIiwiRm9vdGVyIiwiYWN0aXZlQ291bnQiLCJpdGVtV29yZCIsIl9wcm9wcyIsInNlbGVj
dGVkRmlsdGVyIiwib25TaG93Iiwib25DbGljayIsIl9wcm9wczIiLCJjb21wbGV0ZWRDb3VudCIs
Im9uQ2xlYXJDb21wbGV0ZWQiLCJfdGhpczIiLCJyZW5kZXJUb2RvQ291bnQiLCJyZW5kZXJGaWx0
ZXJMaW5rIiwicmVuZGVyQ2xlYXJCdXR0b24iLCJfVG9kb1RleHRJbnB1dCIsIl9Ub2RvVGV4dElu
cHV0MiIsIkhlYWRlciIsImhhbmRsZVNhdmUiLCJfVE9ET19GSUxURVJTIiwiX1RvZG9JdGVtIiwi
X1RvZG9JdGVtMiIsIl9Gb290ZXIiLCJfRm9vdGVyMiIsIlRPRE9fRklMVEVSUyIsInRvZG8iLCJj
b21wbGV0ZWQiLCJNYWluU2VjdGlvbiIsImhhbmRsZUNsZWFyQ29tcGxldGVkIiwiYWN0aW9ucyIs
ImhhbmRsZVNob3ciLCJ0b2RvcyIsImZpbHRlcmVkVG9kb3MiLCJyZW5kZXJUb2dnbGVBbGwiLCJy
ZW5kZXJGb290ZXIiLCJUb2RvSXRlbSIsImhhbmRsZURvdWJsZUNsaWNrIiwib25Eb3VibGVDbGlj
ayIsIl9yZWFjdFJlZHV4IiwiX0hlYWRlciIsIl9IZWFkZXIyIiwiX01haW5TZWN0aW9uIiwiX01h
aW5TZWN0aW9uMiIsIl9hY3Rpb25zIiwiVG9kb0FjdGlvbnMiLCJBcHAiLCJfcmVhY3REb20iLCJf
QXBwIiwiX0FwcDIiLCJfcmVkdWNlcnMiLCJfcmVkdWNlcnMyIiwiZ2V0RWxlbWVudEJ5SWQiLCJf
dG9kb3MiLCJfdG9kb3MyIiwicm9vdFJlZHVjZXIiLCJfdG9Db25zdW1hYmxlQXJyYXkiLCJhcnIy
IiwidiIsIm1heElkIiwiYXJlQWxsTWFya2VkIiwiX3R5cGVvZiIsInZhbHVlUHJvbWlzZSIsIlRS
VUUiLCJGQUxTRSIsIk5VTEwiLCJVTkRFRklORUQiLCJaRVJPIiwiRU1QVFlTVFJJTkciLCJhbGwi
LCJyZW1haW5pbmciLCJyYWNlIiwiZGlzYWJsZSIsIm9uVW5oYW5kbGVkIiwiYWxsUmVqZWN0aW9u
cyIsIm1hdGNoV2hpdGVsaXN0IiwicmVqZWN0aW9ucyIsIndoaXRlbGlzdCIsIkRFRkFVTFRfV0hJ
VEVMSVNUIiwiZGlzcGxheUlkIiwibG9nZ2VkIiwibG9nRXJyb3IiLCJvbkhhbmRsZWQiLCJ3YXJu
IiwiXzcyIiwiZXJyU3RyIiwibGluZSIsInNvbWUiLCJjbHMiLCJSYW5nZUVycm9yIiwid2VicGFj
a1BvbHlmaWxsIiwiZGVwcmVjYXRlIiwicGF0aHMiLCJub3JtYWxpemVOYW1lIiwibm9ybWFsaXpl
VmFsdWUiLCJpdGVyYXRvckZvciIsIml0ZW1zIiwic2hpZnQiLCJzdXBwb3J0IiwiaXRlcmFibGUi
LCJIZWFkZXJzIiwiYXBwZW5kIiwiY29uc3VtZWQiLCJib2R5VXNlZCIsImZpbGVSZWFkZXJSZWFk
eSIsInJlYWRlciIsIm9ubG9hZCIsIm9uZXJyb3IiLCJyZWFkQmxvYkFzQXJyYXlCdWZmZXIiLCJi
bG9iIiwiRmlsZVJlYWRlciIsInJlYWRBc0FycmF5QnVmZmVyIiwicmVhZEJsb2JBc1RleHQiLCJy
ZWFkQXNUZXh0IiwiQm9keSIsIl9pbml0Qm9keSIsIl9ib2R5SW5pdCIsIl9ib2R5VGV4dCIsIkJs
b2IiLCJpc1Byb3RvdHlwZU9mIiwiX2JvZHlCbG9iIiwiZm9ybURhdGEiLCJGb3JtRGF0YSIsIl9i
b2R5Rm9ybURhdGEiLCJzZWFyY2hQYXJhbXMiLCJVUkxTZWFyY2hQYXJhbXMiLCJhcnJheUJ1ZmZl
ciIsIkFycmF5QnVmZmVyIiwicmVqZWN0ZWQiLCJkZWNvZGUiLCJqc29uIiwicGFyc2UiLCJub3Jt
YWxpemVNZXRob2QiLCJ1cGNhc2VkIiwibWV0aG9kcyIsIlJlcXVlc3QiLCJjcmVkZW50aWFscyIs
InJlZmVycmVyIiwiYnl0ZXMiLCJkZWNvZGVVUklDb21wb25lbnQiLCJ4aHIiLCJoZWFkIiwiZ2V0
QWxsUmVzcG9uc2VIZWFkZXJzIiwiaGVhZGVyIiwiUmVzcG9uc2UiLCJib2R5SW5pdCIsInN0YXR1
cyIsIm9rIiwic3RhdHVzVGV4dCIsImZldGNoIiwiZ2V0QWxsIiwidGhpc0FyZyIsImNsb25lIiwi
cmVzcG9uc2UiLCJyZWRpcmVjdFN0YXR1c2VzIiwicmVkaXJlY3QiLCJpbml0IiwicmVzcG9uc2VV
UkwiLCJnZXRSZXNwb25zZUhlYWRlciIsInJlcXVlc3QiLCJYTUxIdHRwUmVxdWVzdCIsInJlc3Bv
bnNlVGV4dCIsIm9udGltZW91dCIsIndpdGhDcmVkZW50aWFscyIsInJlc3BvbnNlVHlwZSIsInNl
dFJlcXVlc3RIZWFkZXIiLCJzZW5kIiwicG9seWZpbGwiLCJlc2NhcGVVc2VyUHJvdmlkZWRLZXki
LCJ1c2VyUHJvdmlkZWRLZXlFc2NhcGVSZWdleCIsIkZvckVhY2hCb29rS2VlcGluZyIsImZvckVh
Y2hGdW5jdGlvbiIsImZvckVhY2hDb250ZXh0IiwiZm9yRWFjaFNpbmdsZUNoaWxkIiwiZm9yRWFj
aENoaWxkcmVuIiwiZm9yRWFjaEZ1bmMiLCJNYXBCb29rS2VlcGluZyIsIm1hcFJlc3VsdCIsImtl
eVByZWZpeCIsIm1hcEZ1bmN0aW9uIiwibWFwQ29udGV4dCIsIm1hcFNpbmdsZUNoaWxkSW50b0Nv
bnRleHQiLCJjaGlsZEtleSIsIm1hcHBlZENoaWxkIiwibWFwSW50b1dpdGhLZXlQcmVmaXhJbnRl
cm5hbCIsImVzY2FwZWRQcmVmaXgiLCJtYXBDaGlsZHJlbiIsImZvckVhY2hTaW5nbGVDaGlsZER1
bW15IiwiY291bnRDaGlsZHJlbiIsImNyZWF0ZURPTUZhY3RvcnkiLCJhYmJyIiwiYWRkcmVzcyIs
ImFydGljbGUiLCJhc2lkZSIsImF1ZGlvIiwiYmRpIiwiYmRvIiwiYmlnIiwiYmxvY2txdW90ZSIs
ImNhbnZhcyIsImRhdGFsaXN0IiwiZGQiLCJkZWwiLCJkZXRhaWxzIiwiZGZuIiwiZGlhbG9nIiwi
ZGwiLCJkdCIsImVtIiwiZmllbGRzZXQiLCJmaWdjYXB0aW9uIiwiZmlndXJlIiwiZm9vdGVyIiwi
aDEiLCJoMiIsImgzIiwiaDQiLCJoNSIsImg2IiwiaGdyb3VwIiwiaWZyYW1lIiwiaW5zIiwia2Jk
IiwibGkiLCJtYWluIiwibWFyayIsIm1lbnUiLCJtZXRlciIsIm5hdiIsIm5vc2NyaXB0Iiwib2wi
LCJvdXRwdXQiLCJwaWN0dXJlIiwicHJvZ3Jlc3MiLCJxIiwicnAiLCJydCIsInJ1YnkiLCJzYW1w
Iiwic2NyaXB0Iiwic2VjdGlvbiIsInNtYWxsIiwic3Ryb25nIiwic3ViIiwic3VwIiwidGFibGUi
LCJ1IiwidWwiLCJ2YXIiLCJ2aWRlbyIsImNpcmNsZSIsImRlZnMiLCJlbGxpcHNlIiwiZyIsImxp
bmVhckdyYWRpZW50IiwicG9seWdvbiIsInBvbHlsaW5lIiwicmFkaWFsR3JhZGllbnQiLCJyZWN0
Iiwic3RvcCIsInRzcGFuIiwiX3JlcXVpcmUiLCJfcmVxdWlyZTIiLCJnZXROZXh0RGVidWdJRCIs
Im5leHREZWJ1Z0lEIiwibG93UHJpb3JpdHlXYXJuaW5nIiwibWlkZGxld2FyZXMiLCJfZGlzcGF0
Y2giLCJjaGFpbiIsIm1pZGRsZXdhcmVBUEkiLCJtaWRkbGV3YXJlIiwiYmluZEFjdGlvbkNyZWF0
b3IiLCJhY3Rpb25DcmVhdG9yIiwiYWN0aW9uQ3JlYXRvcnMiLCJib3VuZEFjdGlvbkNyZWF0b3Jz
IiwiZ2V0VW5kZWZpbmVkU3RhdGVFcnJvck1lc3NhZ2UiLCJhY3Rpb25UeXBlIiwiYWN0aW9uTmFt
ZSIsImFzc2VydFJlZHVjZXJTaGFwZSIsInJlZHVjZXJzIiwicmVkdWNlcktleXMiLCJmaW5hbFJl
ZHVjZXJzIiwiZmluYWxSZWR1Y2VyS2V5cyIsInNoYXBlQXNzZXJ0aW9uRXJyb3IiLCJoYXNDaGFu
Z2VkIiwiX2kiLCJwcmV2aW91c1N0YXRlRm9yS2V5IiwibmV4dFN0YXRlRm9yS2V5IiwiZXJyb3JN
ZXNzYWdlIiwiX3BvbnlmaWxsIiwiX3BvbnlmaWxsMiIsInN5bWJvbE9ic2VydmFibGVQb255Zmls
bCIsIl9TeW1ib2wiLCJfX3dlYnBhY2tfbW9kdWxlX3RlbXBsYXRlX2FyZ3VtZW50XzBfXyIsIm9u
ZUFyZ3VtZW50UG9vbGVyIiwiY29weUZpZWxkc0Zyb20iLCJLbGFzcyIsImluc3RhbmNlUG9vbCIs
ImExIiwiYTIiLCJ0aHJlZUFyZ3VtZW50UG9vbGVyIiwiYTMiLCJhNCIsInN0YW5kYXJkUmVsZWFz
ZXIiLCJwb29sU2l6ZSIsIkRFRkFVTFRfUE9PTF9TSVpFIiwiREVGQVVMVF9QT09MRVIiLCJDb3B5
Q29uc3RydWN0b3IiLCJwb29sZXIiLCJOZXdLbGFzcyJdLCJtYXBwaW5ncyI6IkNBQVMsU0FBVUEs
R0NJbkIsUUFBQUMsR0FBQUMsR0FHQSxHQUFBQyxFQUFBRCxHQUNBLE1BQUFDLEdBQUFELEdBQUFF
LE9BR0EsSUFBQUMsR0FBQUYsRUFBQUQsSUFDQUUsV0FDQUUsR0FBQUosRUFDQUssUUFBQSxFQVVB
LE9BTkFQLEdBQUFFLEdBQUFNLEtBQUFILEVBQUFELFFBQUFDLElBQUFELFFBQUFILEdBR0FJLEVB
QUFFLFFBQUEsRUFHQUYsRUFBQUQsUUF2QkEsR0FBQUQsS0FxQ0EsT0FUQUYsR0FBQVEsRUFBQVQs
RUFHQUMsRUFBQVMsRUFBQVAsRUFHQUYsRUFBQVUsRUFBQSxLQUdBVixFQUFBLElESVcsU0FBU0Qs
R0FFbkIsSUFBSSxHQUFJWSxLQUFLWixHQUNaLEdBQUdhLE9BQU9DLFVBQVVDLGVBQWVQLEtBQUtS
LEVBQVNZLEdBQ2hELGFBQWNaLEdBQVFZLElBQ3RCLElBQUssV0FBWSxLQUNqQixLQUFLLFNBRUpa
LEVBQVFZLEdBQU0sU0FBU0ksR0FDdEIsR0FBSUMsR0FBT0QsRUFBR0UsTUFBTSxHQUFJQyxFQUFL
bkIsRUFBUWdCLEVBQUcsR0FDeEMsT0FBTyxVQUFVSSxFQUFFQyxFQUFFWCxHQUNwQlMsRUFBR0cs
TUFBTUMsTUFBT0gsRUFBRUMsRUFBRVgsR0FBR2MsT0FBT1AsTUFFOUJqQixFQUFRWSxHQUNWLE1B
Q0QsU0FFQ1osRUFBUVksR0FBS1osRUFBUUEsRUFBUVksSUFLaEMsTUFBT1osS0FHRixTQUFTSyxF
QUFRRCxFQUFTSCxHQUUvQkEsRUFBb0IsS0FDcEJJLEVBQU9ELFFBQVVILEVBQW9CLE1BS2hDLFNB
QVNJLEVBQVFELEVBQVNILEdFakVoQyxZQXVCQSxTQUFBd0IsR0FBQUMsRUFBQUMsRUFBQVAsRUFB
QUMsRUFBQVgsRUFBQWtCLEVBQUFDLEVBQUFDLEdBR0EsR0FGQUMsRUFBQUosSUFFQUQsRUFBQSxD
QUNBLEdBQUFNLEVBQ0EsSUFBQUMsU0FBQU4sRUFDQUssRUFBQSxHQUFBRSxPQUFBLHFJQUNLLENB
Q0wsR0FBQWpCLElBQUFHLEVBQUFDLEVBQUFYLEVBQUFrQixFQUFBQyxFQUFBQyxHQUNBSyxFQUFB
LENBQ0FILEdBQUEsR0FBQUUsT0FBQVAsRUFBQVMsUUFBQSxpQkFDQSxNQUFBbkIsR0FBQWtCLFFB
RUFILEVBQUFLLEtBQUEsc0JBSUEsS0FEQUwsR0FBQU0sWUFBQSxFQUNBTixHQTNCQSxHQUFBRCxH
QUFBLFNBQUFKLElBK0JBdEIsR0FBQUQsUUFBQXFCLEdGaUZNLFNBQVNwQixFQUFRRCxFQUFTSCxH
RzdIaEMsWUFFQSxJQUFBc0MsR0FBQXRDLEVBQUEsR0FTQXVDLEVBQUFELENBMENBbEMsR0FBQUQs
UUFBQW9DLEdINklNLFNBQVNuQyxFQUFRRCxHSWxNdkIsWUFTQSxTQUFBcUMsR0FBQUMsR0FLQSxP
QUpBQyxHQUFBQyxVQUFBQyxPQUFBLEVBRUFDLEVBQUEseUJBQUFKLEVBQUEsNkVBQW9EQSxFQUVw
REssRUFBQSxFQUFzQkEsRUFBQUosRUFBbUJJLElBQ3pDRCxHQUFBLFdBQUFFLG1CQUFBSixVQUFB
RyxFQUFBLEdBR0FELElBQUEsZ0hBRUEsSUFBQWQsR0FBQSxHQUFBRSxPQUFBWSxFQUlBLE1BSEFk
LEdBQUFLLEtBQUEsc0JBQ0FMLEVBQUFNLFlBQUEsRUFFQU4sRUFHQTNCLEVBQUFELFFBQUFxQyxH
SmtOTSxTQUFTcEMsRUFBUUQsR0tqUHZCLFlBTUEsU0FBQTZDLEdBQUFDLEdBQ0EsVUFBQUEsR0FB
QWpCLFNBQUFpQixFQUNBLFNBQUFDLFdBQUEsd0RBR0EsT0FBQXRDLFFBQUFxQyxHQUdBLFFBQUFF
LEtBQ0EsSUFDQSxJQUFBdkMsT0FBQXdDLE9BQ0EsUUFNQSxJQUFBQyxHQUFBLEdBQUFDLFFBQUEs
TUFFQSxJQURBRCxFQUFBLFFBQ0EsTUFBQXpDLE9BQUEyQyxvQkFBQUYsR0FBQSxHQUNBLFFBS0Es
UUFEQUcsTUFDQTdDLEVBQUEsRUFBaUJBLEVBQUEsR0FBUUEsSUFDekI2QyxFQUFBLElBQUFGLE9B
QUFHLGFBQUE5QyxLQUVBLElBQUErQyxHQUFBOUMsT0FBQTJDLG9CQUFBQyxHQUFBRyxJQUFBLFNB
QUFDLEdBQ0EsTUFBQUosR0FBQUksSUFFQSxtQkFBQUYsRUFBQUcsS0FBQSxJQUNBLFFBSUEsSUFB
QUMsS0FJQSxPQUhBLHVCQUFBQyxNQUFBLElBQUFDLFFBQUEsU0FBQUMsR0FDQUgsRUFBQUcsT0FH
QSx5QkFEQXJELE9BQUFzRCxLQUFBdEQsT0FBQXdDLFVBQWtDVSxJQUFBRCxLQUFBLElBTWhDLE1B
QUFNLEdBRUYsVUFwREEsR0FBQUMsR0FBQXhELE9BQUF3RCxzQkFDQXRELEVBQUFGLE9BQUFDLFVB
QUFDLGVBQ0F1RCxFQUFBekQsT0FBQUMsVUFBQXlELG9CQXNEQWxFLEdBQUFELFFBQUFnRCxJQUFB
dkMsT0FBQXdDLE9BQUEsU0FBQW1CLEVBQUFDLEdBS0EsT0FKQUMsR0FFQUMsRUFEQUMsRUFBQTNC
LEVBQUF1QixHQUdBSyxFQUFBLEVBQWdCQSxFQUFBakMsVUFBQUMsT0FBc0JnQyxJQUFBLENBQ3RD
SCxFQUFBN0QsT0FBQStCLFVBQUFpQyxHQUVBLFFBQUFDLEtBQUFKLEdBQ0EzRCxFQUFBUCxLQUFB
a0UsRUFBQUksS0FDQUYsRUFBQUUsR0FBQUosRUFBQUksR0FJQSxJQUFBVCxFQUFBLENBQ0FNLEVB
QUFOLEVBQUFLLEVBQ0EsUUFBQTlELEdBQUEsRUFBa0JBLEVBQUErRCxFQUFBOUIsT0FBb0JqQyxJ
QUN0QzBELEVBQUE5RCxLQUFBa0UsRUFBQUMsRUFBQS9ELE1BQ0FnRSxFQUFBRCxFQUFBL0QsSUFB
QThELEVBQUFDLEVBQUEvRCxNQU1BLE1BQUFnRSxLTCtQTSxTQUFTdkUsRUFBUUQsRUFBU0gsR003
VWhDLFlBaUJBLFNBQUE4RSxHQUFBQyxFQUFBQyxHQUNBLFdBQUFELEVBQUFFLFVBQUFGLEVBQUFH
LGFBQUFDLEtBQUE3QixPQUFBMEIsSUFBQSxJQUFBRCxFQUFBRSxVQUFBRixFQUFBSyxZQUFBLGdC
QUFBSixFQUFBLFNBQUFELEVBQUFFLFVBQUFGLEVBQUFLLFlBQUEsaUJBQUFKLEVBQUEsSUFVQSxR
QUFBSyxHQUFBQyxHQUVBLElBREEsR0FBQUMsR0FDQUEsRUFBQUQsRUFBQUUsb0JBQ0FGLEVBQUFD
LENBRUEsT0FBQUQsR0FPQSxRQUFBRyxHQUFBQyxFQUFBWCxHQUNBLEdBQUFZLEdBQUFOLEVBQUFL
LEVBQ0FDLEdBQUFDLFVBQUFiLEVBQ0FBLEVBQUFjLEdBQUFGLEVBR0EsUUFBQUcsR0FBQUosR0FD
QSxHQUFBWCxHQUFBVyxFQUFBRSxTQUNBYixXQUNBQSxHQUFBYyxHQUNBSCxFQUFBRSxVQUFBLE1B
a0JBLFFBQUFHLEdBQUFMLEVBQUFYLEdBQ0EsS0FBQVcsRUFBQU0sT0FBQUMsRUFBQUMscUJBQUEs
Q0FHQSxHQUFBQyxHQUFBVCxFQUFBVSxrQkFDQUMsRUFBQXRCLEVBQUF1QixVQUNBQyxHQUFBLE9B
QUFuRSxLQUFBK0QsR0FDQSxHQUFBQSxFQUFBckYsZUFBQXNCLEdBQUEsQ0FHQSxHQUFBb0UsR0FB
QUwsRUFBQS9ELEdBQ0FxRSxFQUFBcEIsRUFBQW1CLEdBQUFFLE1BQ0EsUUFBQUQsRUFBQSxDQUtB
LEtBQVUsT0FBQUosRUFBb0JBLElBQUFNLFlBQzlCLEdBQUE3QixFQUFBdUIsRUFBQUksR0FBQSxD
QUNBaEIsRUFBQWUsRUFBQUgsRUFDQSxTQUFBRSxHQUlBSyxFQUFBLEtBQUFILElBRUFmLEVBQUFN
LFFBQUFDLEVBQUFDLHFCQU9BLFFBQUFXLEdBQUE5QixHQUNBLEdBQUFBLEVBQUFjLEdBQ0EsTUFB
QWQsR0FBQWMsRUFLQSxLQURBLEdBQUFpQixPQUNBL0IsRUFBQWMsSUFBQSxDQUVBLEdBREFpQixF
QUFBQyxLQUFBaEMsSUFDQUEsRUFBQWlDLFdBS0EsV0FKQWpDLEtBQUFpQyxXQVVBLElBRkEsR0FB
QUMsR0FDQXZCLEVBQ1FYLElBQUFXLEVBQUFYLEVBQUFjLElBQTRDZCxFQUFBK0IsRUFBQUksTUFD
cERELEVBQUF2QixFQUNBb0IsRUFBQWxFLFFBQ0FtRCxFQUFBTCxFQUFBWCxFQUlBLE9BQUFrQyxH
QU9BLFFBQUFFLEdBQUFwQyxHQUNBLEdBQUFXLEdBQUFtQixFQUFBOUIsRUFDQSxjQUFBVyxLQUFB
RSxZQUFBYixFQUNBVyxFQUVBLEtBUUEsUUFBQTBCLEdBQUExQixHQUtBLEdBRkExRCxTQUFBMEQs
RUFBQUUsVUFBQWdCLEVBQUEsYUFFQWxCLEVBQUFFLFVBQ0EsTUFBQUYsR0FBQUUsU0FLQSxLQURB
LEdBQUFrQixPQUNBcEIsRUFBQUUsV0FDQWtCLEVBQUFDLEtBQUFyQixHQUNBQSxFQUFBMkIsWUFB
QSxPQUFBVCxFQUFBLE1BQ0FsQixJQUFBMkIsV0FLQSxNQUFRUCxFQUFBbEUsT0FBZ0I4QyxFQUFB
b0IsRUFBQUksTUFDeEJuQixFQUFBTCxJQUFBRSxVQUdBLE9BQUFGLEdBQUFFLFVBektBLEdBQUFn
QixHQUFBNUcsRUFBQSxHQUVBc0gsRUFBQXRILEVBQUEsSUFDQXVILEVBQUF2SCxFQUFBLElBSUFt
RixHQUZBbkYsRUFBQSxHQUVBc0gsRUFBQUUsbUJBQ0F2QixFQUFBc0IsRUFFQTFCLEVBQUEsMkJB
QUE0QixLQUFBQyxTQUFBQyxTQUFBLElBQUExRyxNQUFBLEdBa0tBMkcsR0FDQWYsNkJBQ0FNLHNC
QUNBQyxzQkFDQXJCLHFCQUNBTixlQUNBSyxjQUdBMUYsR0FBQUQsUUFBQXlILEdONlZNLFNBQVN4
SCxFQUFRRCxHT3BoQnZCLFlBRUEsSUFBQTBILEtBQUEsbUJBQUFDLGlCQUFBQyxXQUFBRCxPQUFB
QyxTQUFBQyxlQVFBQyxHQUVBSixZQUVBSyxjQUFBLG1CQUFBQyxRQUVBQyxxQkFBQVAsTUFBQUMs
T0FBQU8sbUJBQUFQLE9BQUFRLGFBRUFDLGVBQUFWLEtBQUFDLE9BQUFVLE9BRUFDLFlBQUFaLEVB
SUF6SCxHQUFBRCxRQUFBOEgsR1BvaUJNLFNBQVM3SCxFQUFRRCxHUXRrQnZCLFlBYUEsU0FBQXVJ
LEdBQUFDLEdBQ0Esa0JBQ0EsTUFBQUEsSUFTQSxHQUFBckcsR0FBQSxZQUVBQSxHQUFBc0csWUFB
QUYsRUFDQXBHLEVBQUF1RyxpQkFBQUgsR0FBQSxHQUNBcEcsRUFBQXdHLGdCQUFBSixHQUFBLEdB
Q0FwRyxFQUFBeUcsZ0JBQUFMLEVBQUEsTUFDQXBHLEVBQUEwRyxnQkFBQSxXQUNBLE1BQUExSCxP
QUVBZ0IsRUFBQTJHLG9CQUFBLFNBQUFOLEdBQ0EsTUFBQUEsSUFHQXZJLEVBQUFELFFBQUFtQyxH
UjRrQk0sU0FBU2xDLEVBQVFELEVBQVNILEdTdG1CaEMsWUFJQSxJQUFBa0osR0FBQSxJQU9BOUks
R0FBQUQsU0FBa0IrSSxjVHVuQlosU0FBUzlJLEVBQVFELEVBQVNILEdVbm9CaEMsWUFvQkEsU0FB
QW1KLEtBQ0FDLEVBQUFDLDJCQUFBQyxFQUFBLE9BQUExQyxFQUFBLE9BaUNBLFFBQUEyQyxLQUNB
akksS0FBQWtJLDBCQUNBbEksS0FBQW1JLHNCQUFBLEtBQ0FuSSxLQUFBb0ksY0FBQUMsRUFBQUMs
WUFDQXRJLEtBQUF1SSxxQkFBQVQsRUFBQUMsMEJBQUFPLFdBQ0EsR0F5QkEsUUFBQUUsR0FBQUMs
RUFBQTVJLEVBQUFDLEVBQUFYLEVBQUFrQixFQUFBQyxHQUVBLE1BREF1SCxLQUNBRyxFQUFBUSxl
QUFBQyxFQUFBNUksRUFBQUMsRUFBQVgsRUFBQWtCLEVBQUFDLEdBVUEsUUFBQW9JLEdBQUFDLEVB
QUFDLEdBQ0EsTUFBQUQsR0FBQUUsWUFBQUQsRUFBQUMsWUFHQSxRQUFBQyxHQUFBQyxHQUNBLEdB
QUFDLEdBQUFELEVBQUFaLHFCQUNBYSxLQUFBQyxFQUFBM0gsT0FBQWdFLEVBQUEsTUFBQTBELEVB
QUFDLEVBQUEzSCxRQUFBLE9BS0EySCxFQUFBQyxLQUFBUixHQU9BUyxHQUVBLFFBQUE5SixHQUFB
LEVBQWlCQSxFQUFBMkosRUFBUzNKLElBQUEsQ0FJMUIsR0FBQTJFLEdBQUFpRixFQUFBNUosR0FL
QStKLEVBQUFwRixFQUFBcUYsaUJBQ0FyRixHQUFBcUYsa0JBQUEsSUFFQSxJQUFBQyxFQUNBLElB
QUFDLEVBQUFDLG1CQUFBLENBQ0EsR0FBQUMsR0FBQXpGLENBRUFBLEdBQUEwRixnQkFBQUMsS0FB
QUMseUJBQ0FILEVBQUF6RixFQUFBRSxvQkFFQW9GLEVBQUEsaUJBQUFHLEVBQUFJLFVBQ0FDLFFB
QUFDLEtBQUFULEdBU0EsR0FOQVUsRUFBQUMseUJBQUFqRyxFQUFBK0UsRUFBQVIscUJBQUFZLEdB
RUFHLEdBQ0FRLFFBQUFJLFFBQUFaLEdBR0FGLEVBQ0EsT0FBQWUsR0FBQSxFQUFxQkEsRUFBQWYs
RUFBQTlILE9BQXNCNkksSUFDM0NwQixFQUFBWCxjQUFBZ0MsUUFBQWhCLEVBQUFlLEdBQUFuRyxF
QUFBcUcsc0JBZ0NBLFFBQUFDLEdBQUF0RyxHQVNBLE1BUkE2RCxLQVFBRyxFQUFBdUMsbUJBS0F0
QixFQUFBeEQsS0FBQXpCLFFBQ0EsTUFBQUEsRUFBQXdHLHFCQUNBeEcsRUFBQXdHLG1CQUFBckIs
RUFBQSxTQU5BbkIsR0FBQVEsZUFBQThCLEVBQUF0RyxHQWNBLFFBQUF5RyxHQUFBaEMsRUFBQWlD
LEdBQ0ExQyxFQUFBdUMsa0JBQUEsT0FBQWpGLEVBQUEsT0FDQXFGLEVBQUFQLFFBQUEzQixFQUFB
aUMsR0FDQUUsR0FBQSxFQTVNQSxHQUFBdEYsR0FBQTVHLEVBQUEsR0FDQW1NLEVBQUFuTSxFQUFB
LEdBRUEySixFQUFBM0osRUFBQSxJQUNBb00sRUFBQXBNLEVBQUEsSUFDQTZLLEVBQUE3SyxFQUFB
LElBQ0FzTCxFQUFBdEwsRUFBQSxJQUNBcU0sRUFBQXJNLEVBQUEsSUFJQXVLLEdBRkF2SyxFQUFB
LE9BR0F5SyxFQUFBLEVBQ0F3QixFQUFBdEMsRUFBQUMsWUFDQXNDLEdBQUEsRUFFQTVDLEVBQUEs
S0FNQWdELEdBQ0FDLFdBQUEsV0FDQWpMLEtBQUFtSSxzQkFBQWMsRUFBQTNILFFBRUE0SixNQUFB
LFdBQ0FsTCxLQUFBbUksd0JBQUFjLEVBQUEzSCxRQU1BMkgsRUFBQWtDLE9BQUEsRUFBQW5MLEtB
QUFtSSx1QkFDQWlELEtBRUFuQyxFQUFBM0gsT0FBQSxJQUtBK0osR0FDQUosV0FBQSxXQUNBakws
S0FBQW9JLGNBQUFrRCxTQUVBSixNQUFBLFdBQ0FsTCxLQUFBb0ksY0FBQW1ELGNBSUFDLEdBQUFS
LEVBQUFLLEVBVUFSLEdBQUE1QyxFQUFBMUksVUFBQXdMLEdBQ0FVLHVCQUFBLFdBQ0EsTUFBQUQs
SUFHQUUsV0FBQSxXQUNBMUwsS0FBQW1JLHNCQUFBLEtBQ0FFLEVBQUFzRCxRQUFBM0wsS0FBQW9J
LGVBQ0FwSSxLQUFBb0ksY0FBQSxLQUNBTixFQUFBQywwQkFBQTRELFFBQUEzTCxLQUFBdUksc0JB
Q0F2SSxLQUFBdUkscUJBQUEsTUFHQXFELFFBQUEsU0FBQUMsRUFBQUMsRUFBQWpNLEdBR0EsTUFB
QWtMLEdBQUFhLFFBQUEzTSxLQUFBZSxVQUFBdUkscUJBQUFxRCxRQUFBNUwsS0FBQXVJLHFCQUFB
c0QsRUFBQUMsRUFBQWpNLE1BSUFpTCxFQUFBaUIsYUFBQTlELEVBdUVBLElBQUFtRCxHQUFBLFdB
S0EsS0FBQW5DLEVBQUEzSCxRQUFBc0osR0FBQSxDQUNBLEdBQUEzQixFQUFBM0gsT0FBQSxDQUNB
LEdBQUF5SCxHQUFBZCxFQUFBSyxXQUNBUyxHQUFBNkMsUUFBQTlDLEVBQUEsS0FBQUMsR0FDQWQs
RUFBQTBELFFBQUE1QyxHQUdBLEdBQUE2QixFQUFBLENBQ0FBLEdBQUEsQ0FDQSxJQUFBb0IsR0FB
QXJCLENBQ0FBLEdBQUF0QyxFQUFBQyxZQUNBMEQsRUFBQVQsWUFDQWxELEVBQUFzRCxRQUFBSyxN
QXVDQUMsR0FDQUMsMkJBQUEsU0FBQUMsR0FDQUEsRUFBQSxPQUFBN0csRUFBQSxPQUNBd0MsRUFB
QUMsMEJBQUFvRSxHQUdBQyx1QkFBQSxTQUFBQyxHQUNBQSxFQUFBLE9BQUEvRyxFQUFBLE9BQ0Es
a0JBQUErRyxHQUFBN0QsZUFBQWxELEVBQUEsY0FDQSxpQkFBQStHLEdBQUE5QixrQkFBQWpGLEVB
QUEsY0FDQTBDLEVBQUFxRSxJQUlBdkUsR0FPQUMsMEJBQUEsS0FFQVMsaUJBQ0E4QixnQkFDQWMs
c0JBQ0FrQixVQUFBTCxFQUNBeEIsT0FHQTNMLEdBQUFELFFBQUFpSixHVm1wQk0sU0FBU2hKLEVB
QVFELEVBQVNILEdXbDRCaEMsWUFtREEsU0FBQTZOLEdBQUFDLEVBQUFDLEVBQUFDLEVBQUFDLEdB
UUEzTSxLQUFBd00saUJBQ0F4TSxLQUFBNE0sWUFBQUgsRUFDQXpNLEtBQUEwTSxhQUVBLElBQUFH
LEdBQUE3TSxLQUFBOE0sWUFBQUQsU0FDQSxRQUFBRSxLQUFBRixHQUNBLEdBQUFBLEVBQUFyTixl
QUFBdU4sR0FBQSxDQU1BLEdBQUFDLEdBQUFILEVBQUFFLEVBQ0FDLEdBQ0FoTixLQUFBK00sR0FB
QUMsRUFBQU4sR0FFQSxXQUFBSyxFQUNBL00sS0FBQWlELE9BQUEwSixFQUVBM00sS0FBQStNLEdB
QUFMLEVBQUFLLEdBS0EsR0FBQUUsR0FBQSxNQUFBUCxFQUFBTyxpQkFBQVAsRUFBQU8saUJBQUFQ
LEVBQUFRLGVBQUEsQ0FPQSxPQU5BRCxHQUNBak4sS0FBQW1OLG1CQUFBbk0sRUFBQXdHLGdCQUVB
eEgsS0FBQW1OLG1CQUFBbk0sRUFBQXVHLGlCQUVBdkgsS0FBQW9OLHFCQUFBcE0sRUFBQXVHLGlC
QUNBdkgsS0F4RkEsR0FBQTZLLEdBQUFuTSxFQUFBLEdBRUFvTSxFQUFBcE0sRUFBQSxJQUVBc0Ms
RUFBQXRDLEVBQUEsR0FNQTJPLEdBTEEzTyxFQUFBLEdBR0Esa0JBQUE0TyxRQUVBLHFJQU1BQyxH
QUNBNUQsS0FBQSxLQUNBMUcsT0FBQSxLQUVBdUssY0FBQXhNLEVBQUF5RyxnQkFDQWdHLFdBQUEs
S0FDQUMsUUFBQSxLQUNBQyxXQUFBLEtBQ0FDLFVBQUEsU0FBQUMsR0FDQSxNQUFBQSxHQUFBRCxX
QUFBRSxLQUFBQyxPQUVBZCxpQkFBQSxLQUNBZSxVQUFBLEtBK0RBbkQsR0FBQTBCLEVBQUFoTixX
QUNBME8sZUFBQSxXQUNBak8sS0FBQWlOLGtCQUFBLENBQ0EsSUFBQVksR0FBQTdOLEtBQUEwTSxX
QUNBbUIsS0FJQUEsRUFBQUksZUFDQUosRUFBQUksaUJBRUssaUJBQUFKLEdBQUFYLGNBQ0xXLEVB
QUFYLGFBQUEsR0FFQWxOLEtBQUFtTixtQkFBQW5NLEVBQUF3RyxrQkFHQTBHLGdCQUFBLFdBQ0Es
R0FBQUwsR0FBQTdOLEtBQUEwTSxXQUNBbUIsS0FJQUEsRUFBQUssZ0JBQ0FMLEVBQUFLLGtCQUVL
LGlCQUFBTCxHQUFBTSxlQU1MTixFQUFBTSxjQUFBLEdBR0FuTyxLQUFBb04scUJBQUFwTSxFQUFB
d0csa0JBUUE0RyxRQUFBLFdBQ0FwTyxLQUFBcU8sYUFBQXJOLEVBQUF3RyxpQkFRQTZHLGFBQUFy
TixFQUFBdUcsaUJBS0FtRSxXQUFBLFdBQ0EsR0FBQW1CLEdBQUE3TSxLQUFBOE0sWUFBQUQsU0FD
QSxRQUFBRSxLQUFBRixHQUlBN00sS0FBQStNLEdBQUEsSUFHQSxRQUFBMU4sR0FBQSxFQUFtQkEs
RUFBQWdPLEVBQUEvTCxPQUF1Q2pDLElBQzFEVyxLQUFBcU4sRUFBQWhPLElBQUEsUUFVQWtOLEVB
QUFNLFVBQUFVLEVBK0JBaEIsRUFBQStCLGFBQUEsU0FBQUMsRUFBQTFCLEdBQ0EsR0FBQTJCLEdB
QUF4TyxLQUVBeU8sRUFBQSxZQUNBQSxHQUFBbFAsVUFBQWlQLEVBQUFqUCxTQUNBLElBQUFBLEdB
QUEsR0FBQWtQLEVBRUE1RCxHQUFBdEwsRUFBQWdQLEVBQUFoUCxXQUNBZ1AsRUFBQWhQLFlBQ0Fn
UCxFQUFBaFAsVUFBQXVOLFlBQUF5QixFQUVBQSxFQUFBMUIsVUFBQWhDLEtBQThCMkQsRUFBQTNC
LGFBQzlCMEIsRUFBQUQsYUFBQUUsRUFBQUYsYUFFQXhELEVBQUFpQixhQUFBd0MsRUFBQXpELEVB
QUE0RCxxQkFHQTVELEVBQUFpQixhQUFBUSxFQUFBekIsRUFBQTRELG9CQUVBNVAsRUFBQUQsUUFB
QTBOLEdYbzdCTSxTQUFTek4sRUFBUUQsR1kvb0N2QixZQVFBLElBQUE4UCxJQUtBQyxRQUFBLEtB
R0E5UCxHQUFBRCxRQUFBOFAsR1pncUNNLFNBQVM3UCxFQUFRRCxFQUFTSCxHYTNyQ2hDLFlBRUFJ
LEdBQUFELFFBQUFILEVBQUEsTWJrc0NDLElBQUssR0FFQSxTQUFTSSxFQUFRRCxFQUFTSCxHYzVy
Q2hDLFlBd0JBLFNBQUFtUSxHQUFBQyxHQUNBLEdBQUFDLEVBQUEsQ0FHQSxHQUFBdEwsR0FBQXFM
LEVBQUFyTCxLQUNBb0IsRUFBQWlLLEVBQUFqSyxRQUNBLElBQUFBLEVBQUF2RCxPQUNBLE9BQUFq
QyxHQUFBLEVBQW1CQSxFQUFBd0YsRUFBQXZELE9BQXFCakMsSUFDeEMyUCxFQUFBdkwsRUFBQW9C
LEVBQUF4RixHQUFBLFVBRUcsT0FBQXlQLEVBQUFHLEtBQ0hDLEVBQUF6TCxFQUFBcUwsRUFBQUcs
TUFDRyxNQUFBSCxFQUFBSyxNQUNIQyxFQUFBM0wsRUFBQXFMLEVBQUFLLE9Bb0JBLFFBQUFFLEdB
QUFDLEVBQUFDLEdBQ0FELEVBQUE1SixXQUFBOEosYUFBQUQsRUFBQTlMLEtBQUE2TCxHQUNBVCxF
QUFBVSxHQUdBLFFBQUFFLEdBQUFDLEVBQUFDLEdBQ0FaLEVBQ0FXLEVBQUE3SyxTQUFBWSxLQUFB
a0ssR0FFQUQsRUFBQWpNLEtBQUFtTSxZQUFBRCxFQUFBbE0sTUFJQSxRQUFBb00sR0FBQWYsRUFB
QUcsR0FDQUYsRUFDQUQsRUFBQUcsT0FFQUMsRUFBQUosRUFBQXJMLEtBQUF3TCxHQUlBLFFBQUFh
LEdBQUFoQixFQUFBSyxHQUNBSixFQUNBRCxFQUFBSyxPQUVBQyxFQUFBTixFQUFBckwsS0FBQTBM
LEdBSUEsUUFBQTlJLEtBQ0EsTUFBQXJHLE1BQUF5RCxLQUFBc00sU0FHQSxRQUFBQyxHQUFBdk0s
R0FDQSxPQUNBQSxPQUNBb0IsWUFDQW9LLEtBQUEsS0FDQUUsS0FBQSxLQUNBOUksWUE5RkEsR0FB
QTRKLEdBQUF2UixFQUFBLElBQ0F3USxFQUFBeFEsRUFBQSxJQUVBd1IsRUFBQXhSLEVBQUEsSUFD
QTBRLEVBQUExUSxFQUFBLElBRUF5UixFQUFBLEVBQ0FDLEVBQUEsR0FhQXJCLEVBQUEsbUJBQUF0
SSxXQUFBLGdCQUFBQSxVQUFBNEosY0FBQSxtQkFBQUMsWUFBQSxnQkFBQUEsV0FBQUMsV0FBQSxh
QUFBQyxLQUFBRixVQUFBQyxXQW1CQXZCLEVBQUFrQixFQUFBLFNBQUF4SyxFQUFBb0osRUFBQTJC
LEdBT0EzQixFQUFBckwsS0FBQUUsV0FBQXlNLEdBQUF0QixFQUFBckwsS0FBQUUsV0FBQXdNLEdB
QUEsV0FBQXJCLEVBQUFyTCxLQUFBc00sU0FBQVcsZ0JBQUEsTUFBQTVCLEVBQUFyTCxLQUFBa04s
Y0FBQTdCLEVBQUFyTCxLQUFBa04sZUFBQVYsRUFBQWhCLE9BQ0FKLEVBQUFDLEdBQ0FwSixFQUFB
a0wsYUFBQTlCLEVBQUFyTCxLQUFBZ04sS0FFQS9LLEVBQUFrTCxhQUFBOUIsRUFBQXJMLEtBQUFn
TixHQUNBNUIsRUFBQUMsS0ErQ0FrQixHQUFBaEIsbUJBQ0FnQixFQUFBWCx1QkFDQVcsRUFBQVAs
YUFDQU8sRUFBQUgsWUFDQUcsRUFBQUYsWUFFQWhSLEVBQUFELFFBQUFtUixHZDRzQ00sU0FBU2xS
LEVBQVFELEVBQVNILEdldHpDaEMsWUFNQSxTQUFBbVMsR0FBQUMsRUFBQUMsR0FDQSxPQUFBRCxF
QUFBQyxPQUxBLEdBQUF6TCxHQUFBNUcsRUFBQSxHQVFBc1MsR0FOQXRTLEVBQUEsSUFXQXVTLGtC
QUFBLEVBQ0FDLGtCQUFBLEVBQ0FDLGtCQUFBLEVBQ0FDLDJCQUFBLEdBQ0FDLDZCQUFBLEdBOEJB
Qyx3QkFBQSxTQUFBQyxHQUNBLEdBQUFDLEdBQUFSLEVBQ0FTLEVBQUFGLEVBQUFFLGVBQ0FDLEVB
QUFILEVBQUFHLDJCQUNBQyxFQUFBSixFQUFBSSxzQkFDQUMsRUFBQUwsRUFBQUsscUJBQ0FDLEVB
QUFOLEVBQUFNLHNCQUVBTixHQUFBTyxtQkFDQTlMLEVBQUErTCw0QkFBQXRNLEtBQUE4TCxFQUFB
TyxrQkFHQSxRQUFBL0UsS0FBQTBFLEdBQUEsQ0FDQXpMLEVBQUFnTSxXQUFBeFMsZUFBQXVOLEdB
QUF6SCxFQUFBLEtBQUF5SCxHQUFBLE1BRUEsSUFBQWtGLEdBQUFsRixFQUFBMkQsY0FDQXdCLEVB
QUFULEVBQUExRSxHQUVBb0YsR0FDQUMsY0FBQUgsRUFDQUksbUJBQUEsS0FDQUMsYUFBQXZGLEVB
Q0F3RixlQUFBLEtBRUFDLGdCQUFBM0IsRUFBQXFCLEVBQUFWLEVBQUFQLG1CQUNBd0IsZ0JBQUE1
QixFQUFBcUIsRUFBQVYsRUFBQU4sbUJBQ0F3QixnQkFBQTdCLEVBQUFxQixFQUFBVixFQUFBTCxt
QkFDQXdCLHdCQUFBOUIsRUFBQXFCLEVBQUFWLEVBQUFKLDRCQUNBd0IsMEJBQUEvQixFQUFBcUIs
RUFBQVYsRUFBQUgsOEJBUUEsSUFOQWMsRUFBQU0sZ0JBQUFOLEVBQUFPLGdCQUFBUCxFQUFBUywy
QkFBQSxTQUFBdE4sRUFBQSxLQUFBeUgsR0FNQTRFLEVBQUFuUyxlQUFBdU4sR0FBQSxDQUNBLEdB
QUFxRixHQUFBVCxFQUFBNUUsRUFDQW9GLEdBQUFDLGdCQU1BVixFQUFBbFMsZUFBQXVOLEtBQ0Fv
RixFQUFBRSxtQkFBQVgsRUFBQTNFLElBR0E2RSxFQUFBcFMsZUFBQXVOLEtBQ0FvRixFQUFBRyxh
QUFBVixFQUFBN0UsSUFHQThFLEVBQUFyUyxlQUFBdU4sS0FDQW9GLEVBQUFJLGVBQUFWLEVBQUE5
RSxJQUdBL0csRUFBQWdNLFdBQUFqRixHQUFBb0YsTUFNQVUsRUFBQSxnTEFnQkE3TSxHQUNBRSxr
QkFBQSxlQUNBNE0sb0JBQUEsaUJBRUFELDRCQUNBRSxvQkFBQUYsRUFBQSwrQ0E4QkFiLGNBV0Fn
Qix3QkFBNkYsS0FLN0ZqQiwrQkFNQUQsa0JBQUEsU0FBQU0sR0FDQSxPQUFBL1MsR0FBQSxFQUFt
QkEsRUFBQTJHLEVBQUErTCw0QkFBQXpRLE9BQW9EakMsSUFBQSxDQUN2RSxHQUFBNFQsR0FBQWpO
LEVBQUErTCw0QkFBQTFTLEVBQ0EsSUFBQTRULEVBQUFiLEdBQ0EsU0FHQSxVQUdBOUYsVUFBQTBF
LEVBR0FsUyxHQUFBRCxRQUFBbUgsR2ZzMENNLFNBQVNsSCxFQUFRRCxFQUFTSCxHZ0IzZ0RoQyxZ
QVdBLFNBQUF3VSxLQUNBQyxFQUFBRCxXQUFBbFQsVUFBQTBKLGlCQVZBLEdBQUF5SixHQUFBelUs
RUFBQSxLQWFBc0wsR0FaQXRMLEVBQUEsR0FFQUEsRUFBQSxJQXNCQTBVLGVBQUEsU0FBQUMsRUFB
QXRLLEVBQUF1SyxFQUFBQyxFQUFBN0ksRUFBQThJLEdBT0EsR0FBQUMsR0FBQUosRUFBQUQsZUFB
QXJLLEVBQUF1SyxFQUFBQyxFQUFBN0ksRUFBQThJLEVBU0EsT0FSQUgsR0FBQTNKLGlCQUFBLE1B
QUEySixFQUFBM0osZ0JBQUFnSyxLQUNBM0ssRUFBQTRLLHFCQUFBdkosUUFBQThJLEVBQUFHLEdB
T0FJLEdBT0FHLFlBQUEsU0FBQVAsR0FDQSxNQUFBQSxHQUFBTyxlQVNBQyxpQkFBQSxTQUFBUixF
QUFBUyxHQU1BWCxFQUFBWSxXQUFBVixJQUFBM0osaUJBQ0EySixFQUFBUSxpQkFBQUMsSUFpQkFF
LGlCQUFBLFNBQUFYLEVBQUFZLEVBQUFsTCxFQUFBMkIsR0FDQSxHQUFBd0osR0FBQWIsRUFBQTNK
LGVBRUEsSUFBQXVLLElBQUFDLEdBQUF4SixJQUFBMkksRUFBQWMsU0FBQSxDQW9CQSxHQUFBQyxH
QUFBakIsRUFBQWtCLGlCQUFBSCxFQUFBRCxFQUVBRyxJQUNBakIsRUFBQVksV0FBQVYsRUFBQWEs
R0FHQWIsRUFBQVcsaUJBQUFDLEVBQUFsTCxFQUFBMkIsR0FFQTBKLEdBQUFmLEVBQUEzSixpQkFB
QSxNQUFBMkosRUFBQTNKLGdCQUFBZ0ssS0FDQTNLLEVBQUE0SyxxQkFBQXZKLFFBQUE4SSxFQUFB
RyxLQWlCQXBKLHlCQUFBLFNBQUFvSixFQUFBdEssRUFBQUksR0FDQWtLLEVBQUE3SSxxQkFBQXJC
LEdBV0FrSyxFQUFBcEoseUJBQUFsQixLQVNBakssR0FBQUQsUUFBQW1MLEdoQjJoRE0sU0FBU2xM
LEVBQVFELEVBQVNILEdpQnJyRGhDLFlBRUEsSUFBQW1NLEdBQUFuTSxFQUFBLEdBRUE0VixFQUFB
NVYsRUFBQSxJQUNBNlYsRUFBQTdWLEVBQUEsS0FDQThWLEVBQUE5VixFQUFBLEtBQ0ErVixFQUFB
L1YsRUFBQSxJQUNBZ1csRUFBQWhXLEVBQUEsS0FDQWlXLEVBQUFqVyxFQUFBLEtBRUFrVyxFQUFB
bFcsRUFBQSxLQUNBbVcsRUFBQW5XLEVBQUEsS0FFQWdJLEVBQUErTixFQUFBL04sY0FDQW9PLEVB
QUFMLEVBQUFLLGNBQ0FDLEVBQUFOLEVBQUFNLGFBWUFDLEVBQUFuSyxFQUNBb0ssRUFBQSxTQUFB
QyxHQUNBLE1BQUFBLElBbUJBQyxHQUdBQyxVQUNBL1MsSUFBQWtTLEVBQUFsUyxJQUNBSyxRQUFB
NlIsRUFBQTdSLFFBQ0EyUyxNQUFBZCxFQUFBYyxNQUNBQyxRQUFBZixFQUFBZSxRQUNBQyxLQUFB
VixHQUdBVyxVQUFBbEIsRUFBQWtCLFVBQ0FDLGNBQUFuQixFQUFBbUIsY0FFQS9PLGdCQUNBcU8s
ZUFDQVcsZUFBQWpCLEVBQUFpQixlQUlBQyxVQUFBakIsRUFDQWtCLFlBQUFoQixFQUNBRSxnQkFD
QUcsY0FJQVksSUFBQXJCLEVBRUFzQixRQUFBbkIsRUFHQUssV0F1Q0FsVyxHQUFBRCxRQUFBc1cs
R2pCcXNETSxTQUFTclcsRUFBUUQsRUFBU0gsR2tCN3pEaEMsWUFxQkEsU0FBQXFYLEdBQUFDLEdB
U0EsTUFBQXRWLFVBQUFzVixFQUFBdEMsSUFHQSxRQUFBdUMsR0FBQUQsR0FTQSxNQUFBdFYsVUFB
QXNWLEVBQUF6UyxJQXhDQSxHQUFBc0gsR0FBQW5NLEVBQUEsR0FFQWlRLEVBQUFqUSxFQUFBLElB
SUFjLEdBRkFkLEVBQUEsR0FDQUEsRUFBQSxJQUNBWSxPQUFBQyxVQUFBQyxnQkFFQTBXLEVBQUF4
WCxFQUFBLElBRUF5WCxHQUNBNVMsS0FBQSxFQUNBbVEsS0FBQSxFQUNBMEMsUUFBQSxFQUNBQyxV
QUFBLEdBNkVBNUIsRUFBQSxTQUFBOUssRUFBQXBHLEVBQUFtUSxFQUFBNEMsRUFBQXBULEVBQUFx
VCxFQUFBQyxHQUNBLEdBQUFDLElBRUFDLFNBQUFSLEVBR0F2TSxPQUNBcEcsTUFDQW1RLE1BQ0E4
QyxRQUdBRyxPQUFBSixFQStDQSxPQUFBRSxHQU9BaEMsR0FBQS9OLGNBQUEsU0FBQWlELEVBQUFx
TSxFQUFBblIsR0FDQSxHQUFBa0ksR0FHQXlKLEtBRUFqVCxFQUFBLEtBQ0FtUSxFQUFBLEtBQ0E0
QyxFQUFBLEtBQ0FwVCxFQUFBLElBRUEsVUFBQThTLEVBQUEsQ0FDQUQsRUFBQUMsS0FDQXRDLEVB
QUFzQyxFQUFBdEMsS0FFQXVDLEVBQUFELEtBQ0F6UyxFQUFBLEdBQUF5UyxFQUFBelMsS0FHQStT
LEVBQUE1VixTQUFBc1YsRUFBQUksT0FBQSxLQUFBSixFQUFBSSxPQUNBbFQsRUFBQXhDLFNBQUFz
VixFQUFBSyxTQUFBLEtBQUFMLEVBQUFLLFFBRUEsS0FBQXRKLElBQUFpSixHQUNBeFcsRUFBQVAs
S0FBQStXLEVBQUFqSixLQUFBb0osRUFBQTNXLGVBQUF1TixLQUNBeUosRUFBQXpKLEdBQUFpSixF
QUFBakosSUFPQSxHQUFBNkosR0FBQXZWLFVBQUFDLE9BQUEsQ0FDQSxRQUFBc1YsRUFDQUosRUFB
QTNSLGVBQ0csSUFBQStSLEVBQUEsR0FFSCxPQURBQyxHQUFBQyxNQUFBRixHQUNBdlgsRUFBQSxF
QUFtQkEsRUFBQXVYLEVBQW9CdlgsSUFDdkN3WCxFQUFBeFgsR0FBQWdDLFVBQUFoQyxFQUFBLEVB
T0FtWCxHQUFBM1IsU0FBQWdTLEVBSUEsR0FBQWxOLEtBQUFvTixhQUFBLENBQ0EsR0FBQUEsR0FB
QXBOLEVBQUFvTixZQUNBLEtBQUFoSyxJQUFBZ0ssR0FDQXJXLFNBQUE4VixFQUFBekosS0FDQXlK
LEVBQUF6SixHQUFBZ0ssRUFBQWhLLElBaUJBLE1BQUEwSCxHQUFBOUssRUFBQXBHLEVBQUFtUSxF
QUFBNEMsRUFBQXBULEVBQUF5TCxFQUFBQyxRQUFBNEgsSUFPQS9CLEVBQUFLLGNBQUEsU0FBQW5M
LEdBQ0EsR0FBQXFOLEdBQUF2QyxFQUFBL04sY0FBQXVRLEtBQUEsS0FBQXROLEVBT0EsT0FEQXFO
LEdBQUFyTixPQUNBcU4sR0FHQXZDLEVBQUF5QyxtQkFBQSxTQUFBQyxFQUFBQyxHQUNBLEdBQUFD
LEdBQUE1QyxFQUFBMEMsRUFBQXhOLEtBQUF5TixFQUFBRCxFQUFBekQsSUFBQXlELEVBQUFHLE1B
QUFILEVBQUFJLFFBQUFKLEVBQUFSLE9BQUFRLEVBQUFYLE1BRUEsT0FBQWEsSUFPQTVDLEVBQUFN
LGFBQUEsU0FBQTBCLEVBQUFULEVBQUFuUixHQUNBLEdBQUFrSSxHQUdBeUosRUFBQTNMLEtBQXdC
NEwsRUFBQUQsT0FHeEJqVCxFQUFBa1QsRUFBQWxULElBQ0FtUSxFQUFBK0MsRUFBQS9DLElBRUE0
QyxFQUFBRyxFQUFBYSxNQUlBcFUsRUFBQXVULEVBQUFjLFFBR0FoQixFQUFBRSxFQUFBRSxNQUVB
LFVBQUFYLEVBQUEsQ0FDQUQsRUFBQUMsS0FFQXRDLEVBQUFzQyxFQUFBdEMsSUFDQTZDLEVBQUE1
SCxFQUFBQyxTQUVBcUgsRUFBQUQsS0FDQXpTLEVBQUEsR0FBQXlTLEVBQUF6UyxJQUlBLElBQUF3
VCxFQUNBTixHQUFBOU0sTUFBQThNLEVBQUE5TSxLQUFBb04sZUFDQUEsRUFBQU4sRUFBQTlNLEtB
QUFvTixhQUVBLEtBQUFoSyxJQUFBaUosR0FDQXhXLEVBQUFQLEtBQUErVyxFQUFBakosS0FBQW9K
LEVBQUEzVyxlQUFBdU4sS0FDQXJNLFNBQUFzVixFQUFBakosSUFBQXJNLFNBQUFxVyxFQUVBUCxF
QUFBekosR0FBQWdLLEVBQUFoSyxHQUVBeUosRUFBQXpKLEdBQUFpSixFQUFBakosSUFRQSxHQUFB
NkosR0FBQXZWLFVBQUFDLE9BQUEsQ0FDQSxRQUFBc1YsRUFDQUosRUFBQTNSLGVBQ0csSUFBQStS
LEVBQUEsR0FFSCxPQURBQyxHQUFBQyxNQUFBRixHQUNBdlgsRUFBQSxFQUFtQkEsRUFBQXVYLEVB
QW9CdlgsSUFDdkN3WCxFQUFBeFgsR0FBQWdDLFVBQUFoQyxFQUFBLEVBRUFtWCxHQUFBM1IsU0FB
QWdTLEVBR0EsTUFBQXBDLEdBQUFnQyxFQUFBOU0sS0FBQXBHLEVBQUFtUSxFQUFBNEMsRUFBQXBU
LEVBQUFxVCxFQUFBQyxJQVVBL0IsRUFBQWlCLGVBQUEsU0FBQThCLEdBQ0Esc0JBQUFBLElBQUEs
T0FBQUEsS0FBQWQsV0FBQVIsR0FHQXBYLEVBQUFELFFBQUE0VixHbEI2MERNLFNBQVMzVixFQUFR
RCxFQUFTSCxHbUJ0cEVoQyxZQW9EQSxTQUFBK1ksR0FBQUMsR0FDQSxpQkFBQUEsR0FBQSxVQUFB
QSxHQUFBLFdBQUFBLEdBQUEsYUFBQUEsRUFHQSxRQUFBQyxHQUFBN1csRUFBQTZJLEVBQUE2TSxH
QUNBLE9BQUExVixHQUNBLGNBQ0EscUJBQ0Esb0JBQ0EsMkJBQ0Esa0JBQ0EseUJBQ0Esa0JBQ0Es
eUJBQ0EsZ0JBQ0EsdUJBQ0EsU0FBQTBWLEVBQUFvQixXQUFBSCxFQUFBOU4sR0FDQSxTQUNBLFVB
cEVBLEdBQUFyRSxHQUFBNUcsRUFBQSxHQUVBbVosRUFBQW5aLEVBQUEsSUFDQW9aLEVBQUFwWixF
QUFBLElBQ0FxWixFQUFBclosRUFBQSxJQUVBc1osRUFBQXRaLEVBQUEsSUFDQXVaLEVBQUF2WixF
QUFBLElBTUF3WixHQUxBeFosRUFBQSxPQVdBeVosRUFBQSxLQVNBQyxFQUFBLFNBQUF2SyxFQUFB
d0ssR0FDQXhLLElBQ0FpSyxFQUFBUSx5QkFBQXpLLEVBQUF3SyxHQUVBeEssRUFBQVEsZ0JBQ0FS
LEVBQUFmLFlBQUFuQixRQUFBa0MsS0FJQTBLLEVBQUEsU0FBQWpZLEdBQ0EsTUFBQThYLEdBQUE5
WCxHQUFBLElBRUFrWSxFQUFBLFNBQUFsWSxHQUNBLE1BQUE4WCxHQUFBOVgsR0FBQSxJQUdBbVks
RUFBQSxTQUFBclUsR0FHQSxVQUFBQSxFQUFBc1UsYUErQ0FDLEdBSUFyTSxXQUtBc00sdUJBQUFm
LEVBQUFlLHVCQUtBQyx5QkFBQWhCLEVBQUFnQiwwQkFVQUMsWUFBQSxTQUFBMVUsRUFBQTJVLEVB
QUFDLEdBQ0Esa0JBQUFBLEdBQUExVCxFQUFBLEtBQUF5VCxRQUFBQyxJQUFBLE1BRUEsSUFBQXpW
LEdBQUFrVixFQUFBclUsR0FDQTZVLEVBQUFmLEVBQUFhLEtBQUFiLEVBQUFhLE1BQ0FFLEdBQUEx
VixHQUFBeVYsQ0FFQSxJQUFBRSxHQUFBckIsRUFBQXNCLHdCQUFBSixFQUNBRyxNQUFBRSxnQkFD
QUYsRUFBQUUsZUFBQWhWLEVBQUEyVSxFQUFBQyxJQVNBSyxZQUFBLFNBQUFqVixFQUFBMlUsR0FH
QSxHQUFBRSxHQUFBZixFQUFBYSxFQUNBLElBQUFwQixFQUFBb0IsRUFBQTNVLEVBQUFzRixnQkFB
QUMsS0FBQXZGLEVBQUFzRixnQkFBQThNLE9BQ0EsV0FFQSxJQUFBalQsR0FBQWtWLEVBQUFyVSxF
QUNBLE9BQUE2VSxNQUFBMVYsSUFTQStWLGVBQUEsU0FBQWxWLEVBQUEyVSxHQUNBLEdBQUFHLEdB
QUFyQixFQUFBc0Isd0JBQUFKLEVBQ0FHLE1BQUFLLG9CQUNBTCxFQUFBSyxtQkFBQW5WLEVBQUEy
VSxFQUdBLElBQUFFLEdBQUFmLEVBQUFhLEVBRUEsSUFBQUUsRUFBQSxDQUNBLEdBQUExVixHQUFB
a1YsRUFBQXJVLFNBQ0E2VSxHQUFBMVYsS0FTQWlXLG1CQUFBLFNBQUFwVixHQUNBLEdBQUFiLEdB
QUFrVixFQUFBclUsRUFDQSxRQUFBMlUsS0FBQWIsR0FDQSxHQUFBQSxFQUFBMVksZUFBQXVaLElB
SUFiLEVBQUFhLEdBQUF4VixHQUFBLENBSUEsR0FBQTJWLEdBQUFyQixFQUFBc0Isd0JBQUFKLEVB
Q0FHLE1BQUFLLG9CQUNBTCxFQUFBSyxtQkFBQW5WLEVBQUEyVSxTQUdBYixHQUFBYSxHQUFBeFYs
S0FXQWtXLGNBQUEsU0FBQUMsRUFBQWpOLEVBQUFDLEVBQUFDLEdBR0EsT0FGQWdOLEdBQ0FDLEVB
QUEvQixFQUFBK0IsUUFDQXZhLEVBQUEsRUFBbUJBLEVBQUF1YSxFQUFBdFksT0FBb0JqQyxJQUFB
LENBRXZDLEdBQUF3YSxHQUFBRCxFQUFBdmEsRUFDQSxJQUFBd2EsRUFBQSxDQUNBLEdBQUFDLEdB
QUFELEVBQUFKLGNBQUFDLEVBQUFqTixFQUFBQyxFQUFBQyxFQUNBbU4sS0FDQUgsRUFBQTNCLEVB
QUEyQixFQUFBRyxLQUlBLE1BQUFILElBVUFJLGNBQUEsU0FBQUosR0FDQUEsSUFDQXhCLEVBQUFI
LEVBQUFHLEVBQUF3QixLQVNBSyxrQkFBQSxTQUFBM0IsR0FHQSxHQUFBNEIsR0FBQTlCLENBQ0FB
LEdBQUEsS0FDQUUsRUFDQUosRUFBQWdDLEVBQUExQixHQUVBTixFQUFBZ0MsRUFBQXpCLEdBRUFM
LEVBQUE3UyxFQUFBLGFBRUF5UyxFQUFBbUMsc0JBTUFDLFFBQUEsV0FDQWpDLE1BR0FrQyxrQkFB
QSxXQUNBLE1BQUFsQyxJQUlBcFosR0FBQUQsUUFBQThaLEduQnNxRU0sU0FBUzdaLEVBQVFELEVB
QVNILEdvQjU2RWhDLFlBZUEsU0FBQTJiLEdBQUFqVyxFQUFBeUosRUFBQXlNLEdBQ0EsR0FBQXZC
LEdBQUFsTCxFQUFBckIsZUFBQStOLHdCQUFBRCxFQUNBLE9BQUFqQixHQUFBalYsRUFBQTJVLEdB
U0EsUUFBQXlCLEdBQUFwVyxFQUFBcVcsRUFBQTVNLEdBSUEsR0FBQW1MLEdBQUFxQixFQUFBalcs
RUFBQXlKLEVBQUE0TSxFQUNBekIsS0FDQW5MLEVBQUE2TSxtQkFBQTFDLEVBQUFuSyxFQUFBNk0s
bUJBQUExQixHQUNBbkwsRUFBQThNLG1CQUFBM0MsRUFBQW5LLEVBQUE4TSxtQkFBQXZXLElBV0Es
UUFBQXdXLEdBQUEvTSxHQUNBQSxLQUFBckIsZUFBQStOLHlCQUNBekMsRUFBQStDLGlCQUFBaE4s
RUFBQWpCLFlBQUE0TixFQUFBM00sR0FPQSxRQUFBaU4sR0FBQWpOLEdBQ0EsR0FBQUEsS0FBQXJC
LGVBQUErTix3QkFBQSxDQUNBLEdBQUE5TixHQUFBb0IsRUFBQWpCLFlBQ0FtTyxFQUFBdE8sRUFB
QXFMLEVBQUFrRCxrQkFBQXZPLEdBQUEsSUFDQXFMLEdBQUErQyxpQkFBQUUsRUFBQVAsRUFBQTNN
LElBU0EsUUFBQW9OLEdBQUE3VyxFQUFBOFcsRUFBQXJOLEdBQ0EsR0FBQUEsS0FBQXJCLGVBQUF1
TSxpQkFBQSxDQUNBLEdBQUFBLEdBQUFsTCxFQUFBckIsZUFBQXVNLGlCQUNBQyxFQUFBSyxFQUFB
alYsRUFBQTJVLEVBQ0FDLEtBQ0FuTCxFQUFBNk0sbUJBQUExQyxFQUFBbkssRUFBQTZNLG1CQUFB
MUIsR0FDQW5MLEVBQUE4TSxtQkFBQTNDLEVBQUFuSyxFQUFBOE0sbUJBQUF2VyxLQVVBLFFBQUEr
VyxHQUFBdE4sR0FDQUEsS0FBQXJCLGVBQUF1TSxrQkFDQWtDLEVBQUFwTixFQUFBakIsWUFBQSxL
QUFBaUIsR0FJQSxRQUFBdU4sR0FBQXpCLEdBQ0ExQixFQUFBMEIsRUFBQWlCLEdBR0EsUUFBQVMs
R0FBQTFCLEdBQ0ExQixFQUFBMEIsRUFBQW1CLEdBR0EsUUFBQVEsR0FBQUMsRUFBQUMsRUFBQXJZ
LEVBQUFFLEdBQ0F5VSxFQUFBMkQsbUJBQUF0WSxFQUFBRSxFQUFBNFgsRUFBQU0sRUFBQUMsR0FH
QSxRQUFBRSxHQUFBL0IsR0FDQTFCLEVBQUEwQixFQUFBd0IsR0FuR0EsR0FBQXhDLEdBQUFqYSxF
QUFBLElBQ0FvWixFQUFBcFosRUFBQSxJQUVBc1osRUFBQXRaLEVBQUEsSUFDQXVaLEVBQUF2WixF
QUFBLElBR0EyYSxHQUZBM2EsRUFBQSxHQUVBaWEsRUFBQVUsYUEwR0FzQyxHQUNBUCwrQkFDQUMs
eUNBQ0FLLDZCQUNBSixpQ0FHQXhjLEdBQUFELFFBQUE4YyxHcEI0N0VNLFNBQVM3YyxFQUFRRCxH
cUJ0akZ2QixZQVdBLElBQUErYyxJQU1BQyxPQUFBLFNBQUF0WSxHQUNBQSxFQUFBdVksdUJBQUFw
YixRQUdBcWIsSUFBQSxTQUFBeFksR0FDQSxNQUFBQSxHQUFBdVksd0JBR0FFLElBQUEsU0FBQXpZ
LEdBQ0EsTUFBQTdDLFVBQUE2QyxFQUFBdVksd0JBR0FHLElBQUEsU0FBQTFZLEVBQUF1TixHQUNB
dk4sRUFBQXVZLHVCQUFBaEwsR0FJQWhTLEdBQUFELFFBQUErYyxHckJza0ZNLFNBQVM5YyxFQUFR
RCxFQUFTSCxHc0J4bUZoQyxZQXlDQSxTQUFBd2QsR0FBQTFQLEVBQUEyUCxFQUFBelAsRUFBQUMs
R0FDQSxNQUFBSixHQUFBdE4sS0FBQWUsS0FBQXdNLEVBQUEyUCxFQUFBelAsRUFBQUMsR0F4Q0Es
R0FBQUosR0FBQTdOLEVBQUEsSUFFQTBkLEVBQUExZCxFQUFBLElBTUEyZCxHQUNBQyxLQUFBLFNB
QUF6TyxHQUNBLEdBQUFBLEVBQUF5TyxLQUNBLE1BQUF6TyxHQUFBeU8sSUFHQSxJQUFBclosR0FB
QW1aLEVBQUF2TyxFQUNBLElBQUE1SyxFQUFBdUQsU0FBQXZELEVBRUEsTUFBQUEsRUFHQSxJQUFB
c1osR0FBQXRaLEVBQUF1WixhQUVBLE9BQUFELEdBQ0FBLEVBQUFFLGFBQUFGLEVBQUFHLGFBRUFs
VyxRQUdBbVcsT0FBQSxTQUFBOU8sR0FDQSxNQUFBQSxHQUFBOE8sUUFBQSxHQWNBcFEsR0FBQStC
LGFBQUE0TixFQUFBRyxHQUVBdmQsRUFBQUQsUUFBQXFkLEd0QnduRkEsRUFFTSxTQUFTcGQsRUFB
UUQsRUFBU0gsR3VCenFGaEMsWUFFQSxJQUFBa2UsS0FNQTlkLEdBQUFELFFBQUErZCxHdkJ5ckZN
LFNBQVM5ZCxFQUFRRCxFQUFTSCxHd0Jqc0ZoQyxZQWtKQSxTQUFBbWUsR0FBQUMsR0FPQSxNQUpB
eGQsUUFBQUMsVUFBQUMsZUFBQVAsS0FBQTZkLEVBQUFDLEtBQ0FELEVBQUFDLEdBQUFDLElBQ0FD
LEVBQUFILEVBQUFDLFFBRUFFLEVBQUFILEVBQUFDLElBdkpBLEdBZ0VBRyxHQWhFQXJTLEVBQUFu
TSxFQUFBLEdBRUFtWixFQUFBblosRUFBQSxJQUNBeWUsRUFBQXplLEVBQUEsS0FDQTBlLEVBQUEx
ZSxFQUFBLElBRUEyZSxFQUFBM2UsRUFBQSxLQUNBNGUsRUFBQTVlLEVBQUEsSUEwREF1ZSxLQUNB
TSxHQUFBLEVBQ0FQLEVBQUEsRUFLQVEsR0FDQUMsU0FBQSxRQUNBQyxnQkFBQUwsRUFBQSxnQ0FD
QU0sc0JBQUFOLEVBQUEsNENBQ0FPLGtCQUFBUCxFQUFBLG9DQUNBUSxRQUFBLE9BQ0FDLFdBQUEs
VUFDQUMsa0JBQUEsaUJBQ0FDLFVBQUEsU0FDQUMsU0FBQSxRQUNBQyxrQkFBQSxpQkFDQUMsb0JB
QUEsbUJBQ0FDLHFCQUFBLG9CQUNBQyxlQUFBLGNBQ0FDLFFBQUEsT0FDQUMsT0FBQSxNQUNBQyxl
QUFBLFdBQ0FDLFFBQUEsT0FDQUMsV0FBQSxVQUNBQyxhQUFBLFlBQ0FDLFlBQUEsV0FDQUMsYUFB
QSxZQUNBQyxZQUFBLFdBQ0FDLGFBQUEsWUFDQUMsUUFBQSxPQUNBQyxrQkFBQSxpQkFDQUMsV0FB
QSxVQUNBQyxhQUFBLFlBQ0FDLFNBQUEsUUFDQUMsU0FBQSxRQUNBQyxTQUFBLFFBQ0FDLFNBQUEs
UUFDQUMsV0FBQSxVQUNBQyxZQUFBLFdBQ0FDLFNBQUEsUUFDQUMsY0FBQSxhQUNBQyxrQkFBQSxp
QkFDQUMsYUFBQSxZQUNBQyxhQUFBLFlBQ0FDLGFBQUEsWUFDQUMsWUFBQSxXQUNBQyxhQUFBLFlB
Q0FDLFdBQUEsVUFDQUMsU0FBQSxRQUNBQyxTQUFBLFFBQ0FDLFFBQUEsT0FDQUMsV0FBQSxVQUNB
QyxZQUFBLFdBQ0FDLGNBQUEsYUFDQUMsVUFBQSxTQUNBQyxVQUFBLFNBQ0FDLFdBQUEsVUFDQUMs
bUJBQUEsa0JBQ0FDLFdBQUEsVUFDQUMsV0FBQSxVQUNBQyxhQUFBLFlBQ0FDLGNBQUEsYUFDQUMs
ZUFBQSxjQUNBQyxZQUFBLFdBQ0FDLGFBQUEsWUFDQUMsY0FBQSxhQUNBQyxpQkFBQWhFLEVBQUEs
a0NBQ0FpRSxnQkFBQSxlQUNBQyxXQUFBLFVBQ0FDLFNBQUEsU0FNQXpFLEVBQUEsb0JBQUEvYSxP
QUFBbUUsS0FBQUMsVUFBQXpHLE1BQUEsR0FzQkE4aEIsRUFBQTVXLEtBQXlDc1MsR0FJekN1RSxt
QkFBQSxLQUVBcFYsV0FJQXFWLHlCQUFBLFNBQUFELEdBQ0FBLEVBQUFFLGtCQUFBSCxFQUFBSSxn
QkFDQUosRUFBQUMsdUJBU0FJLFdBQUEsU0FBQUMsR0FDQU4sRUFBQUMsb0JBQ0FELEVBQUFDLG1C
QUFBSSxXQUFBQyxJQU9BQyxVQUFBLFdBQ0EsU0FBQVAsRUFBQUMscUJBQUFELEVBQUFDLG1CQUFB
TSxjQXdCQUMsU0FBQSxTQUFBbEosRUFBQW1KLEdBS0EsT0FKQXBGLEdBQUFvRixFQUNBQyxFQUFB
dEYsRUFBQUMsR0FDQXNGLEVBQUF2SyxFQUFBd0ssNkJBQUF0SixHQUVBMVosRUFBQSxFQUFtQkEs
RUFBQStpQixFQUFBOWdCLE9BQXlCakMsSUFBQSxDQUM1QyxHQUFBaWpCLEdBQUFGLEVBQUEvaUIs
RUFDQThpQixHQUFBM2lCLGVBQUE4aUIsSUFBQUgsRUFBQUcsS0FDQSxhQUFBQSxFQUNBaEYsRUFB
QSxTQUNBbUUsRUFBQUMsbUJBQUFhLGlCQUFBLG1CQUFBekYsR0FDV1EsRUFBQSxjQUNYbUUsRUFB
QUMsbUJBQUFhLGlCQUFBLHdCQUFBekYsR0FJQTJFLEVBQUFDLG1CQUFBYSxpQkFBQSw0QkFBQXpG
LEdBRVMsY0FBQXdGLEVBQ1RoRixFQUFBLGFBQ0FtRSxFQUFBQyxtQkFBQWMsa0JBQUEscUJBQUEx
RixHQUVBMkUsRUFBQUMsbUJBQUFhLGlCQUFBLHFCQUFBZCxFQUFBQyxtQkFBQWUsZUFFUyxhQUFB
SCxHQUFBLFlBQUFBLEdBQ1RoRixFQUFBLGFBQ0FtRSxFQUFBQyxtQkFBQWMsa0JBQUEsbUJBQUEx
RixHQUNBMkUsRUFBQUMsbUJBQUFjLGtCQUFBLGlCQUFBMUYsSUFDV1EsRUFBQSxhQUdYbUUsRUFB
QUMsbUJBQUFhLGlCQUFBLHFCQUFBekYsR0FDQTJFLEVBQUFDLG1CQUFBYSxpQkFBQSxxQkFBQXpG
LElBSUFxRixFQUFBdEUsU0FBQSxFQUNBc0UsRUFBQTdDLFVBQUEsR0FDUzlCLEVBQUFoZSxlQUFB
OGlCLElBQ1RiLEVBQUFDLG1CQUFBYSxpQkFBQUQsRUFBQTlFLEVBQUE4RSxHQUFBeEYsR0FHQXFG
LEVBQUFHLElBQUEsS0FLQUMsaUJBQUEsU0FBQTdJLEVBQUFnSixFQUFBQyxHQUNBLE1BQUFsQixH
QUFBQyxtQkFBQWEsaUJBQUE3SSxFQUFBZ0osRUFBQUMsSUFHQUgsa0JBQUEsU0FBQTlJLEVBQUFn
SixFQUFBQyxHQUNBLE1BQUFsQixHQUFBQyxtQkFBQWMsa0JBQUE5SSxFQUFBZ0osRUFBQUMsSUFR
QUMsb0JBQUEsV0FDQSxJQUFBbmMsU0FBQW9jLFlBQ0EsUUFFQSxJQUFBQyxHQUFBcmMsU0FBQW9j
LFlBQUEsYUFDQSxjQUFBQyxHQUFBLFNBQUFBLElBY0FDLDRCQUFBLFdBSUEsR0FIQXJpQixTQUFB
d2MsSUFDQUEsRUFBQXVFLEVBQUFtQix3QkFFQTFGLElBQUFLLEVBQUEsQ0FDQSxHQUFBeUYsR0FB
QTVGLEVBQUE2RixtQkFDQXhCLEdBQUFDLG1CQUFBd0IsbUJBQUFGLEdBQ0F6RixHQUFBLEtBS0F6
ZSxHQUFBRCxRQUFBNGlCLEd4Qml0Rk0sU0FBUzNpQixFQUFRRCxFQUFTSCxHeUJ6Z0doQyxZQXNE
QSxTQUFBeWtCLEdBQUEzVyxFQUFBMlAsRUFBQXpQLEVBQUFDLEdBQ0EsTUFBQXVQLEdBQUFqZCxL
QUFBZSxLQUFBd00sRUFBQTJQLEVBQUF6UCxFQUFBQyxHQXJEQSxHQUFBdVAsR0FBQXhkLEVBQUEs
SUFDQTBlLEVBQUExZSxFQUFBLElBRUEwa0IsRUFBQTFrQixFQUFBLElBTUEya0IsR0FDQUMsUUFB
QSxLQUNBQyxRQUFBLEtBQ0FDLFFBQUEsS0FDQUMsUUFBQSxLQUNBQyxRQUFBLEtBQ0FDLFNBQUEs
S0FDQUMsT0FBQSxLQUNBQyxRQUFBLEtBQ0FDLGlCQUFBVixFQUNBVyxPQUFBLFNBQUFsVyxHQUlB
LEdBQUFrVyxHQUFBbFcsRUFBQWtXLE1BQ0EsZ0JBQUFsVyxHQUNBa1csRUFNQSxJQUFBQSxFQUFB
LE1BQUFBLEVBQUEsS0FFQUMsUUFBQSxLQUNBQyxjQUFBLFNBQUFwVyxHQUNBLE1BQUFBLEdBQUFv
VyxnQkFBQXBXLEVBQUFxVyxjQUFBclcsRUFBQXNXLFdBQUF0VyxFQUFBdVcsVUFBQXZXLEVBQUFx
VyxjQUdBRyxNQUFBLFNBQUF4VyxHQUNBLGVBQUFBLEtBQUF3VyxNQUFBeFcsRUFBQTJWLFFBQUFw
RyxFQUFBa0gsbUJBRUFDLE1BQUEsU0FBQTFXLEdBQ0EsZUFBQUEsS0FBQTBXLE1BQUExVyxFQUFB
NFYsUUFBQXJHLEVBQUFvSCxrQkFjQXRJLEdBQUE1TixhQUFBNlUsRUFBQUUsR0FFQXZrQixFQUFB
RCxRQUFBc2tCLEd6QnloR00sU0FBU3JrQixFQUFRRCxFQUFTSCxHMEJwbEdoQyxZQUVBLElBQUE0
RyxHQUFBNUcsRUFBQSxHQUlBK2xCLEdBRkEvbEIsRUFBQSxPQWlFQWdtQixHQVFBeGMsd0JBQUEs
V0FDQWxJLEtBQUEya0Isb0JBQUEza0IsS0FBQXlMLHlCQUNBekwsS0FBQTRrQixnQkFDQTVrQixL
QUFBNGtCLGdCQUFBdGpCLE9BQUEsRUFFQXRCLEtBQUE0a0IsbUJBRUE1a0IsS0FBQTZrQixrQkFB
QSxHQUdBQSxrQkFBQSxFQU1BcFosdUJBQUEsS0FFQXFaLGdCQUFBLFdBQ0EsUUFBQTlrQixLQUFB
NmtCLGtCQXNCQWpaLFFBQUEsU0FBQUMsRUFBQUMsRUFBQWpNLEVBQUFDLEVBQUFYLEVBQUFrQixF
QUFBQyxFQUFBQyxHQUVBUCxLQUFBOGtCLGtCQUFBeGYsRUFBQSxZQUNBLElBQUF5ZixHQUNBQyxD
QUNBLEtBQ0FobEIsS0FBQTZrQixrQkFBQSxFQUtBRSxHQUFBLEVBQ0Eva0IsS0FBQWlsQixjQUFB
LEdBQ0FELEVBQUFuWixFQUFBNU0sS0FBQTZNLEVBQUFqTSxFQUFBQyxFQUFBWCxFQUFBa0IsRUFB
QUMsRUFBQUMsR0FDQXdrQixHQUFBLEVBQ0ssUUFDTCxJQUNBLEdBQUFBLEVBR0EsSUFDQS9rQixL
QUFBa2xCLFNBQUEsR0FDVyxNQUFBcmlCLFFBSVg3QyxNQUFBa2xCLFNBQUEsR0FFTyxRQUNQbGxC
LEtBQUE2a0Isa0JBQUEsR0FHQSxNQUFBRyxJQUdBQyxjQUFBLFNBQUFFLEdBRUEsT0FEQVIsR0FB
QTNrQixLQUFBMmtCLG9CQUNBdGxCLEVBQUE4bEIsRUFBNEI5bEIsRUFBQXNsQixFQUFBcmpCLE9B
QWdDakMsSUFBQSxDQUM1RCxHQUFBK2xCLEdBQUFULEVBQUF0bEIsRUFDQSxLQUtBVyxLQUFBNGtC
LGdCQUFBdmxCLEdBQUFvbEIsRUFDQXprQixLQUFBNGtCLGdCQUFBdmxCLEdBQUErbEIsRUFBQW5h
LFdBQUFtYSxFQUFBbmEsV0FBQWhNLEtBQUFlLE1BQUEsS0FDTyxRQUNQLEdBQUFBLEtBQUE0a0Is
Z0JBQUF2bEIsS0FBQW9sQixFQUlBLElBQ0F6a0IsS0FBQWlsQixjQUFBNWxCLEVBQUEsR0FDVyxN
QUFBd0QsUUFZWHFpQixTQUFBLFNBQUFDLEdBQ0FubEIsS0FBQThrQixrQkFBQSxPQUFBeGYsRUFB
QSxLQUVBLFFBREFxZixHQUFBM2tCLEtBQUEya0Isb0JBQ0F0bEIsRUFBQThsQixFQUE0QjlsQixF
QUFBc2xCLEVBQUFyakIsT0FBZ0NqQyxJQUFBLENBQzVELEdBRUEwbEIsR0FGQUssRUFBQVQsRUFB
QXRsQixHQUNBZ21CLEVBQUFybEIsS0FBQTRrQixnQkFBQXZsQixFQUVBLEtBS0EwbEIsR0FBQSxF
QUNBTSxJQUFBWixHQUFBVyxFQUFBbGEsT0FDQWthLEVBQUFsYSxNQUFBak0sS0FBQWUsS0FBQXFs
QixHQUVBTixHQUFBLEVBQ08sUUFDUCxHQUFBQSxFQUlBLElBQ0Eva0IsS0FBQWtsQixTQUFBN2xC
LEVBQUEsR0FDVyxNQUFBaUIsTUFJWE4sS0FBQTRrQixnQkFBQXRqQixPQUFBLEdBSUF4QyxHQUFB
RCxRQUFBNmxCLEcxQnFtR00sU0FBUzVsQixFQUFRRCxHMkJweUd2QixZQWtCQSxTQUFBeW1CLEdB
QUFDLEdBQ0EsR0FBQUMsR0FBQSxHQUFBRCxFQUNBRSxFQUFBQyxFQUFBQyxLQUFBSCxFQUVBLEtB
QUFDLEVBQ0EsTUFBQUQsRUFHQSxJQUFBSSxHQUNBM1csRUFBQSxHQUNBNFcsRUFBQSxFQUNBQyxF
QUFBLENBRUEsS0FBQUQsRUFBQUosRUFBQUksTUFBMkJBLEVBQUFMLEVBQUFsa0IsT0FBb0J1a0Is
SUFBQSxDQUMvQyxPQUFBTCxFQUFBTyxXQUFBRixJQUNBLFFBRUFELEVBQUEsUUFDQSxNQUNBLFNB
RUFBLEVBQUEsT0FDQSxNQUNBLFNBRUFBLEVBQUEsUUFDQSxNQUNBLFNBRUFBLEVBQUEsTUFDQSxN
QUNBLFNBRUFBLEVBQUEsTUFDQSxNQUNBLFNBQ0EsU0FHQUUsSUFBQUQsSUFDQTVXLEdBQUF1VyxF
QUFBUSxVQUFBRixFQUFBRCxJQUdBQyxFQUFBRCxFQUFBLEVBQ0E1VyxHQUFBMlcsRUFHQSxNQUFB
RSxLQUFBRCxFQUFBNVcsRUFBQXVXLEVBQUFRLFVBQUFGLEVBQUFELEdBQUE1VyxFQVVBLFFBQUFn
WCxHQUFBOVcsR0FDQSx1QkFBQUEsSUFBQSxnQkFBQUEsR0FJQSxHQUFBQSxFQUVBbVcsRUFBQW5X
LEdBMUVBLEdBQUF1VyxHQUFBLFNBNkVBNW1CLEdBQUFELFFBQUFvbkIsRzNCNjBHTSxTQUFTbm5C
LEVBQVFELEVBQVNILEc0QjM3R2hDLFlBRUEsSUFTQXduQixHQVRBdmYsRUFBQWpJLEVBQUEsR0FD
QXVSLEVBQUF2UixFQUFBLElBRUF5bkIsRUFBQSxlQUNBQyxFQUFBLHVEQUVBbFcsRUFBQXhSLEVB
QUEsSUFhQXdRLEVBQUFnQixFQUFBLFNBQUF6TSxFQUFBd0wsR0FJQSxHQUFBeEwsRUFBQWtOLGVB
QUFWLEVBQUFvVyxLQUFBLGFBQUE1aUIsR0FRQUEsRUFBQTZpQixVQUFBclgsTUFSQSxDQUNBaVgs
S0FBQXpmLFNBQUFDLGNBQUEsT0FDQXdmLEVBQUFJLFVBQUEsUUFBQXJYLEVBQUEsUUFFQSxLQURB
LEdBQUFzWCxHQUFBTCxFQUFBbGhCLFdBQ0F1aEIsRUFBQXZoQixZQUNBdkIsRUFBQW1NLFlBQUEy
VyxFQUFBdmhCLGNBT0EsSUFBQTJCLEVBQUFKLFVBQUEsQ0FPQSxHQUFBaWdCLEdBQUEvZixTQUFB
QyxjQUFBLE1BQ0E4ZixHQUFBRixVQUFBLElBQ0EsS0FBQUUsRUFBQUYsWUFDQXBYLEVBQUEsU0FB
QXpMLEVBQUF3TCxHQWNBLEdBUkF4TCxFQUFBaUMsWUFDQWpDLEVBQUFpQyxXQUFBOEosYUFBQS9M
LEtBT0EwaUIsRUFBQTNWLEtBQUF2QixJQUFBLE1BQUFBLEVBQUEsSUFBQW1YLEVBQUE1VixLQUFB
dkIsR0FBQSxDQU9BeEwsRUFBQTZpQixVQUFBdGtCLE9BQUFHLGFBQUEsT0FBQThNLENBSUEsSUFB
QXdYLEdBQUFoakIsRUFBQXVCLFVBQ0EsS0FBQXloQixFQUFBQyxLQUFBcGxCLE9BQ0FtQyxFQUFB
a2pCLFlBQUFGLEdBRUFBLEVBQUFHLFdBQUEsU0FHQW5qQixHQUFBNmlCLFVBQUFyWCxJQUlBdVgs
RUFBQSxLQUdBMW5CLEVBQUFELFFBQUFxUSxHNUIyOEdNLFNBQVNwUSxFQUFRRCxFQUFTSCxHNkIz
aUhoQyxZQTZCQSxTQUFBbW9CLEdBQUFDLEdBQXNDLE1BQUFBLE1BQUFDLFdBQUFELEdBQXVDRSxR
QUFBRixHQTNCN0Vqb0IsRUFBQWtvQixZQUFBLEVBQ0Fsb0IsRUFBQW9vQixRQUFBcG9CLEVBQUFx
b0IsZ0JBQUFyb0IsRUFBQXNvQixtQkFBQXRvQixFQUFBdW9CLGdCQUFBdm9CLEVBQUF3b0IsWUFB
QTNtQixNQUVBLElBQUE0bUIsR0FBQTVvQixFQUFBLElBRUE2b0IsRUFBQVYsRUFBQVMsR0FFQUUs
RUFBQTlvQixFQUFBLEtBRUErb0IsRUFBQVosRUFBQVcsR0FFQUUsRUFBQWhwQixFQUFBLEtBRUFp
cEIsRUFBQWQsRUFBQWEsR0FFQUUsRUFBQWxwQixFQUFBLEtBRUFtcEIsRUFBQWhCLEVBQUFlLEdB
RUFFLEVBQUFwcEIsRUFBQSxJQUVBcXBCLEVBQUFsQixFQUFBaUIsR0FFQUUsRUFBQXRwQixFQUFB
LEdBRUFtb0IsR0FBQW1CLEVBY0FucEIsR0FBQXdvQixZQUFBRSxFQUFBLFFBQ0Exb0IsRUFBQXVv
QixnQkFBQUssRUFBQSxRQUNBNW9CLEVBQUFzb0IsbUJBQUFRLEVBQUEsUUFDQTlvQixFQUFBcW9C
LGdCQUFBVyxFQUFBLFFBQ0FocEIsRUFBQW9vQixRQUFBYyxFQUFBLFM3QmlqSE0sU0FBU2pwQixF
QUFRRCxFQUFTSCxHOEI5bEhoQyxHQUFBdXBCLEdBQUFDLEdBT0EsV0FDQSxZQUlBLFNBQUFDLEtB
R0EsT0FGQUMsTUFFQS9vQixFQUFBLEVBQWlCQSxFQUFBZ0MsVUFBQUMsT0FBc0JqQyxJQUFBLENB
Q3ZDLEdBQUFnSSxHQUFBaEcsVUFBQWhDLEVBQ0EsSUFBQWdJLEVBQUEsQ0FFQSxHQUFBZ2hCLFNB
QUFoaEIsRUFFQSxlQUFBZ2hCLEdBQUEsV0FBQUEsRUFDQUQsRUFBQTNpQixLQUFBNEIsT0FDSSxJ
QUFBeVAsTUFBQXdSLFFBQUFqaEIsR0FDSitnQixFQUFBM2lCLEtBQUEwaUIsRUFBQXBvQixNQUFB
LEtBQUFzSCxRQUNJLGVBQUFnaEIsRUFDSixPQUFBOWtCLEtBQUE4RCxHQUNBa2hCLEVBQUF0cEIs
S0FBQW9JLEVBQUE5RCxJQUFBOEQsRUFBQTlELElBQ0E2a0IsRUFBQTNpQixLQUFBbEMsSUFNQSxN
QUFBNmtCLEdBQUE3bEIsS0FBQSxLQXhCQSxHQUFBZ21CLE1BQWdCL29CLGNBMkJoQixvQkFBQVYs
TUFBQUQsUUFDQUMsRUFBQUQsUUFBQXNwQixHQUdBRixLQUFBQyxFQUFBLFdBQ0EsTUFBQUMsSUFD
R3BvQixNQUFBbEIsRUFBQW9wQixLQUFBdm5CLFNBQUF3bkIsSUFBQXBwQixFQUFBRCxRQUFBcXBC
LFM5QnltSEcsU0FBU3BwQixFQUFRRCxHK0J0b0h2QixZQVFBLFNBQUEycEIsR0FBQUMsRUFBQUMs
R0FFQSxNQUFBRCxLQUFBQyxFQUlBLElBQUFELEdBQUEsSUFBQUMsR0FBQSxFQUFBRCxJQUFBLEVB
QUFDLEVBR0FELE9BQUFDLE1BU0EsUUFBQUMsR0FBQUMsRUFBQUMsR0FDQSxHQUFBTCxFQUFBSSxF
QUFBQyxHQUNBLFFBR0Esb0JBQUFELElBQUEsT0FBQUEsR0FBQSxnQkFBQUMsSUFBQSxPQUFBQSxF
QUNBLFFBR0EsSUFBQUMsR0FBQXhwQixPQUFBc0QsS0FBQWdtQixHQUNBRyxFQUFBenBCLE9BQUFz
RCxLQUFBaW1CLEVBRUEsSUFBQUMsRUFBQXhuQixTQUFBeW5CLEVBQUF6bkIsT0FDQSxRQUlBLFFB
QUFqQyxHQUFBLEVBQWlCQSxFQUFBeXBCLEVBQUF4bkIsT0FBa0JqQyxJQUNuQyxJQUFBRyxFQUFB
UCxLQUFBNHBCLEVBQUFDLEVBQUF6cEIsTUFBQW1wQixFQUFBSSxFQUFBRSxFQUFBenBCLElBQUF3
cEIsRUFBQUMsRUFBQXpwQixLQUNBLFFBSUEsVUEvQ0EsR0FBQUcsR0FBQUYsT0FBQUMsVUFBQUMs
Y0FrREFWLEdBQUFELFFBQUE4cEIsRy9CMHBITSxTQUFTN3BCLEVBQVFELEVBQVNILEdnQzVxSGhD
LFFBQUFzcUIsR0FBQWxZLEdBQ0EsSUFBQW1ZLEVBQUFuWSxJQUFBb1ksRUFBQXBZLElBQUFxWSxF
QUNBLFFBRUEsSUFBQUMsR0FBQUMsRUFBQXZZLEVBQ0EsV0FBQXNZLEVBQ0EsUUFFQSxJQUFBRSxH
QUFBOXBCLEVBQUFQLEtBQUFtcUIsRUFBQSxnQkFBQUEsRUFBQXRjLFdBQ0EseUJBQUF3YyxvQkFD
QUMsRUFBQXRxQixLQUFBcXFCLElBQUFFLEVBMURBLEdBQUFOLEdBQUF4cUIsRUFBQSxLQUNBMnFC
LEVBQUEzcUIsRUFBQSxLQUNBdXFCLEVBQUF2cUIsRUFBQSxLQUdBeXFCLEVBQUEsa0JBR0FNLEVB
QUFDLFNBQUFucUIsVUFDQW9xQixFQUFBcnFCLE9BQUFDLFVBR0FncUIsRUFBQUUsRUFBQXBqQixT
QUdBN0csRUFBQW1xQixFQUFBbnFCLGVBR0FncUIsRUFBQUQsRUFBQXRxQixLQUFBSyxPQTJDQVIs
R0FBQUQsUUFBQW1xQixHaENtdUhNLFNBQVNscUIsRUFBUUQsRUFBU0gsR2lDdHhIaEMsWUFXQSxT
QUFBa3JCLEdBQUFsa0IsRUFBQWpDLEdBTUEsTUFIQXFULE9BQUF3UixRQUFBN2tCLEtBQ0FBLElB
QUEsSUFFQUEsSUFBQTRCLFlBQUFLLEVBQUFWLFdBa0JBLFFBQUE2a0IsR0FBQW5rQixFQUFBaUss
RUFBQWMsR0FDQVQsRUFBQWhCLGlCQUFBdEosRUFBQWlLLEVBQUFjLEdBR0EsUUFBQXFaLEdBQUFw
a0IsRUFBQVgsRUFBQTBMLEdBQ0FxRyxNQUFBd1IsUUFBQXZqQixHQUNBZ2xCLEVBQUFya0IsRUFB
QVgsRUFBQSxHQUFBQSxFQUFBLEdBQUEwTCxHQUVBdVosRUFBQXRrQixFQUFBWCxFQUFBMEwsR0FJ
QSxRQUFBa1csR0FBQWpoQixFQUFBWCxHQUNBLEdBQUErUixNQUFBd1IsUUFBQXZqQixHQUFBLENB
Q0EsR0FBQWtsQixHQUFBbGxCLEVBQUEsRUFDQUEsS0FBQSxHQUNBbWxCLEVBQUF4a0IsRUFBQVgs
RUFBQWtsQixHQUNBdmtCLEVBQUFpaEIsWUFBQXNELEdBRUF2a0IsRUFBQWloQixZQUFBNWhCLEdB
R0EsUUFBQWdsQixHQUFBcmtCLEVBQUF5a0IsRUFBQUYsRUFBQXhaLEdBRUEsSUFEQSxHQUFBaE4s
R0FBQTBtQixJQUNBLENBQ0EsR0FBQUMsR0FBQTNtQixFQUFBNEIsV0FFQSxJQURBMmtCLEVBQUF0
a0IsRUFBQWpDLEVBQUFnTixHQUNBaE4sSUFBQXdtQixFQUNBLEtBRUF4bUIsR0FBQTJtQixHQUlB
LFFBQUFGLEdBQUF4a0IsRUFBQTJrQixFQUFBSixHQUNBLFFBQ0EsR0FBQXhtQixHQUFBNG1CLEVB
QUFobEIsV0FDQSxJQUFBNUIsSUFBQXdtQixFQUVBLEtBRUF2a0IsR0FBQWloQixZQUFBbGpCLElB
S0EsUUFBQTZtQixHQUFBSCxFQUFBRixFQUFBTSxHQUNBLEdBQUE3a0IsR0FBQXlrQixFQUFBemtC
LFdBQ0E4a0IsRUFBQUwsRUFBQTlrQixXQUNBbWxCLEtBQUFQLEVBR0FNLEdBQ0FQLEVBQUF0a0Is
RUFBQWUsU0FBQWdrQixlQUFBRixHQUFBQyxHQUdBRCxHQUdBbmIsRUFBQW9iLEVBQUFELEdBQ0FM
LEVBQUF4a0IsRUFBQThrQixFQUFBUCxJQUVBQyxFQUFBeGtCLEVBQUF5a0IsRUFBQUYsR0EvRkEs
R0FBQWphLEdBQUF0UixFQUFBLElBQ0Fnc0IsRUFBQWhzQixFQUFBLEtBSUF3UixHQUhBeFIsRUFB
QSxHQUNBQSxFQUFBLEdBRUFBLEVBQUEsS0FDQXdRLEVBQUF4USxFQUFBLElBQ0EwUSxFQUFBMVEs
RUFBQSxJQW1CQXNyQixFQUFBOVosRUFBQSxTQUFBeEssRUFBQVgsRUFBQTBMLEdBSUEvSyxFQUFB
a0wsYUFBQTdMLEVBQUEwTCxLQThFQWthLEVBQUFELEVBQUFDLGlDQTBCQUMsR0FDQUQsbUNBRUFM
LHVCQVNBTyxlQUFBLFNBQUFubEIsRUFBQW9sQixHQUtBLE9BQUFDLEdBQUEsRUFBbUJBLEVBQUFE
LEVBQUF4cEIsT0FBb0J5cEIsSUFBQSxDQUN2QyxHQUFBQyxHQUFBRixFQUFBQyxFQUNBLFFBQUFD
LEVBQUFyaEIsTUFDQSxvQkFDQWtnQixFQUFBbmtCLEVBQUFzbEIsRUFBQUMsUUFBQXJCLEVBQUFs
a0IsRUFBQXNsQixFQUFBRSxXQVdBLE1BQ0EscUJBQ0FwQixFQUFBcGtCLEVBQUFzbEIsRUFBQUcs
U0FBQXZCLEVBQUFsa0IsRUFBQXNsQixFQUFBRSxXQVFBLE1BQ0Esa0JBQ0FoYyxFQUFBeEosRUFB
QXNsQixFQUFBQyxRQVFBLE1BQ0Esb0JBQ0E3YixFQUFBMUosRUFBQXNsQixFQUFBQyxRQVFBLE1B
Q0EsbUJBQ0F0RSxFQUFBamhCLEVBQUFzbEIsRUFBQUcsYUFjQXJzQixHQUFBRCxRQUFBK3JCLEdq
Q3N5SE0sU0FBUzlyQixFQUFRRCxHa0M1L0h2QixZQUVBLElBQUFvUixJQUNBaEIsS0FBQSwrQkFD
QW1jLE9BQUEscUNBQ0EvRSxJQUFBLDZCQUdBdm5CLEdBQUFELFFBQUFvUixHbEM0Z0lNLFNBQVNu
UixFQUFRRCxFQUFTSCxHbUNuaEloQyxZQXFCQSxTQUFBMnNCLEtBQ0EsR0FBQUMsRUFJQSxPQUFB
QyxLQUFBQyxHQUFBLENBQ0EsR0FBQUMsR0FBQUQsRUFBQUQsR0FDQUcsRUFBQUosRUFBQUssUUFB
QUosRUFFQSxJQURBRyxLQUFBLE9BQUFwbUIsRUFBQSxLQUFBaW1CLElBQ0ExVCxFQUFBK0IsUUFB
QThSLEdBQUEsQ0FHQUQsRUFBQWhTLGNBQUEsT0FBQW5VLEVBQUEsS0FBQWltQixHQUNBMVQsRUFB
QStCLFFBQUE4UixHQUFBRCxDQUNBLElBQUFHLEdBQUFILEVBQUFJLFVBQ0EsUUFBQUMsS0FBQUYs
R0FDQUcsRUFBQUgsRUFBQUUsR0FBQUwsRUFBQUssR0FBQSxPQUFBeG1CLEVBQUEsS0FBQXdtQixF
QUFBUCxLQWFBLFFBQUFRLEdBQUF2ZixFQUFBaWYsRUFBQUssR0FDQWpVLEVBQUFtVSx5QkFBQXhz
QixlQUFBc3NCLEdBQUF4bUIsRUFBQSxLQUFBd21CLEdBQUEsT0FDQWpVLEVBQUFtVSx5QkFBQUYs
R0FBQXRmLENBRUEsSUFBQStOLEdBQUEvTixFQUFBK04sdUJBQ0EsSUFBQUEsRUFBQSxDQUNBLE9B
QUEwUixLQUFBMVIsR0FDQSxHQUFBQSxFQUFBL2EsZUFBQXlzQixHQUFBLENBQ0EsR0FBQUMsR0FB
QTNSLEVBQUEwUixFQUNBRSxHQUFBRCxFQUFBVCxFQUFBSyxHQUdBLFNBQ0csUUFBQXRmLEVBQUF1
TSxtQkFDSG9ULEVBQUEzZixFQUFBdU0saUJBQUEwUyxFQUFBSyxJQUNBLEdBYUEsUUFBQUssR0FB
QXBULEVBQUEwUyxFQUFBSyxHQUNBalUsRUFBQXNCLHdCQUFBSixHQUFBelQsRUFBQSxNQUFBeVQs
R0FBQSxPQUNBbEIsRUFBQXNCLHdCQUFBSixHQUFBMFMsRUFDQTVULEVBQUF3Syw2QkFBQXRKLEdB
QUEwUyxFQUFBSSxXQUFBQyxHQUFBMUosYUEvRUEsR0FBQTljLEdBQUE1RyxFQUFBLEdBT0E0c0Is
R0FMQTVzQixFQUFBLEdBS0EsTUFLQThzQixLQW9GQTNULEdBSUErQixXQUtBb1MsNEJBS0E3Uywy
QkFLQWtKLGdDQVFBK0osMEJBQXVFLEtBWXZFeFQsdUJBQUEsU0FBQXlULEdBQ0FmLEVBQUFobUIs
RUFBQSxjQUVBZ21CLEVBQUF4VSxNQUFBdlgsVUFBQUksTUFBQVYsS0FBQW90QixHQUNBaEIsS0Fh
QXhTLHlCQUFBLFNBQUF5VCxHQUNBLEdBQUFDLElBQUEsQ0FDQSxRQUFBaEIsS0FBQWUsR0FDQSxH
QUFBQSxFQUFBOXNCLGVBQUErckIsR0FBQSxDQUdBLEdBQUFFLEdBQUFhLEVBQUFmLEVBQ0FDLEdB
QUFoc0IsZUFBQStyQixJQUFBQyxFQUFBRCxLQUFBRSxJQUNBRCxFQUFBRCxHQUFBam1CLEVBQUEs
TUFBQWltQixHQUFBLE9BQ0FDLEVBQUFELEdBQUFFLEVBQ0FjLEdBQUEsR0FHQUEsR0FDQWxCLEtB
V0FtQix3QkFBQSxTQUFBM2UsR0FDQSxHQUFBckIsR0FBQXFCLEVBQUFyQixjQUNBLElBQUFBLEVB
QUF1TSxpQkFDQSxNQUFBbEIsR0FBQXNCLHdCQUFBM00sRUFBQXVNLG1CQUFBLElBRUEsSUFBQXJZ
LFNBQUE4TCxFQUFBK04sd0JBQUEsQ0FHQSxHQUFBQSxHQUFBL04sRUFBQStOLHVCQUVBLFFBQUFF
LEtBQUFGLEdBQ0EsR0FBQUEsRUFBQS9hLGVBQUFpYixHQUFBLENBR0EsR0FBQWdSLEdBQUE1VCxF
QUFBc0Isd0JBQUFvQixFQUFBRSxHQUNBLElBQUFnUixFQUNBLE1BQUFBLElBSUEsYUFPQWdCLG1C
QUFBLFdBQ0FuQixFQUFBLElBQ0EsUUFBQUMsS0FBQUMsR0FDQUEsRUFBQWhzQixlQUFBK3JCLFVB
Q0FDLEdBQUFELEVBR0ExVCxHQUFBK0IsUUFBQXRZLE9BQUEsQ0FFQSxJQUFBMHFCLEdBQUFuVSxF
QUFBbVUsd0JBQ0EsUUFBQUYsS0FBQUUsR0FDQUEsRUFBQXhzQixlQUFBc3NCLFVBQ0FFLEdBQUFG
LEVBSUEsSUFBQTNTLEdBQUF0QixFQUFBc0IsdUJBQ0EsUUFBQUosS0FBQUksR0FDQUEsRUFBQTNa
LGVBQUF1WixVQUNBSSxHQUFBSixJQWVBamEsR0FBQUQsUUFBQWdaLEduQ29pSU0sU0FBUy9ZLEVB
QVFELEVBQVNILEdvQ3J4SWhDLFlBa0NBLFNBQUFndUIsR0FBQWhULEdBQ0EscUJBQUFBLEdBQUEs
Z0JBQUFBLEdBQUEsbUJBQUFBLEVBR0EsUUFBQWlULEdBQUFqVCxHQUNBLHVCQUFBQSxHQUFBLGlC
QUFBQSxFQUVBLFFBQUFrVCxHQUFBbFQsR0FDQSx1QkFBQUEsR0FBQSxrQkFBQUEsRUEwQkEsUUFB
QW1ULEdBQUFoZixFQUFBd0ssRUFBQVcsRUFBQTVVLEdBQ0EsR0FBQXVGLEdBQUFrRSxFQUFBbEUs
TUFBQSxlQUNBa0UsR0FBQUwsY0FBQXNLLEVBQUFoUyxvQkFBQTFCLEdBQ0FpVSxFQUNBTixFQUFB
K1UsK0JBQUFuakIsRUFBQXFQLEVBQUFuTCxHQUVBa0ssRUFBQWdWLHNCQUFBcGpCLEVBQUFxUCxF
QUFBbkwsR0FFQUEsRUFBQUwsY0FBQSxLQU1BLFFBQUE4SyxHQUFBekssRUFBQXdLLEdBQ0EsR0FB
QTJVLEdBQUFuZixFQUFBNk0sbUJBQ0F1UyxFQUFBcGYsRUFBQThNLGtCQUlBLElBQUE3RCxNQUFB
d1IsUUFBQTBFLEdBQ0EsT0FBQTN0QixHQUFBLEVBQW1CQSxFQUFBMnRCLEVBQUExckIsU0FDbkJ1
TSxFQUFBVCx1QkFEaUQvTixJQUtqRHd0QixFQUFBaGYsRUFBQXdLLEVBQUEyVSxFQUFBM3RCLEdB
QUE0dEIsRUFBQTV0QixRQUVHMnRCLElBQ0hILEVBQUFoZixFQUFBd0ssRUFBQTJVLEVBQUFDLEVB
RUFwZixHQUFBNk0sbUJBQUEsS0FDQTdNLEVBQUE4TSxtQkFBQSxLQVVBLFFBQUF1UyxHQUFBcmYs
R0FDQSxHQUFBbWYsR0FBQW5mLEVBQUE2TSxtQkFDQXVTLEVBQUFwZixFQUFBOE0sa0JBSUEsSUFB
QTdELE1BQUF3UixRQUFBMEUsSUFDQSxPQUFBM3RCLEdBQUEsRUFBbUJBLEVBQUEydEIsRUFBQTFy
QixTQUNuQnVNLEVBQUFULHVCQURpRC9OLElBS2pELEdBQUEydEIsRUFBQTN0QixHQUFBd08sRUFB
QW9mLEVBQUE1dEIsSUFDQSxNQUFBNHRCLEdBQUE1dEIsT0FHRyxJQUFBMnRCLEdBQ0hBLEVBQUFu
ZixFQUFBb2YsR0FDQSxNQUFBQSxFQUdBLGFBTUEsUUFBQUUsR0FBQXRmLEdBQ0EsR0FBQW1YLEdB
QUFrSSxFQUFBcmYsRUFHQSxPQUZBQSxHQUFBOE0sbUJBQUEsS0FDQTlNLEVBQUE2TSxtQkFBQSxL
QUNBc0ssRUFZQSxRQUFBb0ksR0FBQXZmLEdBSUEsR0FBQXdmLEdBQUF4ZixFQUFBNk0sbUJBQ0E0
UyxFQUFBemYsRUFBQThNLGtCQUNBN0QsT0FBQXdSLFFBQUErRSxHQUFBL25CLEVBQUEsY0FDQXVJ
LEVBQUFMLGNBQUE2ZixFQUFBdlYsRUFBQWhTLG9CQUFBd25CLEdBQUEsSUFDQSxJQUFBQyxHQUFB
RixJQUFBeGYsR0FBQSxJQUlBLE9BSEFBLEdBQUFMLGNBQUEsS0FDQUssRUFBQTZNLG1CQUFBLEtB
Q0E3TSxFQUFBOE0sbUJBQUEsS0FDQTRTLEVBT0EsUUFBQUMsR0FBQTNmLEdBQ0EsUUFBQUEsRUFB
QTZNLG1CQTNLQSxHQWVBK1MsR0FDQUMsRUFoQkFwb0IsRUFBQTVHLEVBQUEsR0FFQXFaLEVBQUFy
WixFQUFBLElBZUE0TixHQWJBNU4sRUFBQSxHQUNBQSxFQUFBLElBYUFpdkIsb0JBQUEsU0FBQUMs
R0FDQUgsRUFBQUcsR0FLQUMsb0JBQUEsU0FBQUQsR0FDQUYsRUFBQUUsS0F3SkE5VixHQUNBNFUs
V0FDQUMsWUFDQUMsYUFFQVEsd0JBQ0E5VSwyQkFDQTZVLHFDQUNBSyxnQkFFQTNuQixvQkFBQSxT
QUFBcEMsR0FDQSxNQUFBZ3FCLEdBQUE1bkIsb0JBQUFwQyxJQUVBcUMsb0JBQUEsU0FBQXJDLEdB
Q0EsTUFBQWdxQixHQUFBM25CLG9CQUFBckMsSUFFQXFxQixXQUFBLFNBQUFqdUIsRUFBQUMsR0FD
QSxNQUFBNHRCLEdBQUFJLFdBQUFqdUIsRUFBQUMsSUFFQWl1Qix3QkFBQSxTQUFBbHVCLEVBQUFD
LEdBQ0EsTUFBQTR0QixHQUFBSyx3QkFBQWx1QixFQUFBQyxJQUVBa2Isa0JBQUEsU0FBQTVXLEdB
Q0EsTUFBQXNwQixHQUFBMVMsa0JBQUE1VyxJQUVBeVcsaUJBQUEsU0FBQTVYLEVBQUFyRCxFQUFB
eUgsR0FDQSxNQUFBcW1CLEdBQUE3UyxpQkFBQTVYLEVBQUFyRCxFQUFBeUgsSUFFQW9VLG1CQUFB
LFNBQUF0WSxFQUFBRSxFQUFBekQsRUFBQW91QixFQUFBQyxHQUNBLE1BQUFQLEdBQUFqUyxtQkFB
QXRZLEVBQUFFLEVBQUF6RCxFQUFBb3VCLEVBQUFDLElBR0EzaEIsWUFHQXhOLEdBQUFELFFBQUFp
WixHcENxeUlNLFNBQVNoWixFQUFRRCxHcUMxL0l2QixZQVNBLFNBQUErbUIsR0FBQXJpQixHQUNB
LEdBQUEycUIsR0FBQSxRQUNBQyxHQUNBQyxJQUFBLEtBQ0FDLElBQUEsTUFFQUMsR0FBQSxHQUFB
L3FCLEdBQUExQyxRQUFBcXRCLEVBQUEsU0FBQXpJLEdBQ0EsTUFBQTBJLEdBQUExSSxJQUdBLFdB
QUE2SSxFQVNBLFFBQUFDLEdBQUFockIsR0FDQSxHQUFBaXJCLEdBQUEsV0FDQUMsR0FDQUMsS0FB
QSxJQUNBQyxLQUFBLEtBRUFDLEVBQUEsTUFBQXJyQixFQUFBLFVBQUFBLEVBQUEsR0FBQUEsRUFB
QXlpQixVQUFBLEdBQUF6aUIsRUFBQXlpQixVQUFBLEVBRUEsV0FBQTRJLEdBQUEvdEIsUUFBQTJ0
QixFQUFBLFNBQUEvSSxHQUNBLE1BQUFnSixHQUFBaEosS0FJQSxHQUFBb0osSUFDQWpKLFNBQ0Ey
SSxXQUdBenZCLEdBQUFELFFBQUFnd0IsR3JDMmdKTSxTQUFTL3ZCLEVBQVFELEVBQVNILEdzQzFq
SmhDLFlBdUJBLFNBQUFvd0IsR0FBQUMsR0FDQSxNQUFBQSxFQUFBQyxhQUFBLE1BQUFELEVBQUFF
LFVBQUEzcEIsRUFBQSxhQUVBLFFBQUE0cEIsR0FBQUgsR0FDQUQsRUFBQUMsR0FDQSxNQUFBQSxF
QUFBamUsT0FBQSxNQUFBaWUsRUFBQUksU0FBQTdwQixFQUFBLGFBR0EsUUFBQThwQixHQUFBTCxH
QUNBRCxFQUFBQyxHQUNBLE1BQUFBLEVBQUFNLFNBQUEsTUFBQU4sRUFBQUksU0FBQTdwQixFQUFB
LGFBb0JBLFFBQUFncUIsR0FBQS9ZLEdBQ0EsR0FBQUEsRUFBQSxDQUNBLEdBQUF6VixHQUFBeVYs
RUFBQTFNLFNBQ0EsSUFBQS9JLEVBQ0Esc0NBQUFBLEVBQUEsS0FHQSxTQTFEQSxHQUFBd0UsR0FB
QTVHLEVBQUEsR0FFQTZ3QixFQUFBN3dCLEVBQUEsS0FDQTh3QixFQUFBOXdCLEVBQUEsSUFFQXlX
LEVBQUF6VyxFQUFBLElBQ0FpWCxFQUFBNlosRUFBQXJhLEVBQUFPLGdCQUtBK1osR0FIQS93QixF
QUFBLEdBQ0FBLEVBQUEsSUFHQXFsQixRQUFBLEVBQ0EyTCxVQUFBLEVBQ0FDLE9BQUEsRUFDQUMs
UUFBQSxFQUNBQyxPQUFBLEVBQ0F2a0IsT0FBQSxFQUNBd2tCLFFBQUEsSUFnQkFDLEdBQ0FqZixN
QUFBLFNBQUEwRixFQUFBekosRUFBQWlqQixHQUNBLE9BQUF4WixFQUFBekosSUFBQTBpQixFQUFB
alosRUFBQTdNLE9BQUE2TSxFQUFBMlksVUFBQTNZLEVBQUF5WixVQUFBelosRUFBQW9CLFNBQ0Es
S0FFQSxHQUFBalgsT0FBQTtFQUVBMHVCLFFBQUEsU0FBQTdZLEVBQUF6SixFQUFBaWpCLEdBQ0Es
T0FBQXhaLEVBQUF6SixJQUFBeUosRUFBQTJZLFVBQUEzWSxFQUFBeVosVUFBQXpaLEVBQUFvQixT
QUNBLEtBRUEsR0FBQWpYLE9BQUEsME5BRUF3dUIsU0FBQXhaLEVBQUF1YSxNQUdBQyxLQWVBQyxH
QUNBQyxlQUFBLFNBQUFDLEVBQUE5WixFQUFBRCxHQUNBLE9BQUF4SixLQUFBZ2pCLEdBQUEsQ0FD
QSxHQUFBQSxFQUFBdndCLGVBQUF1TixHQUNBLEdBQUF0TSxHQUFBc3ZCLEVBQUFoakIsR0FBQXlK
LEVBQUF6SixFQUFBdWpCLEVBQUEsWUFBQWYsRUFFQSxJQUFBOXVCLFlBQUFFLFVBQUFGLEVBQUFj
LFVBQUE0dUIsSUFBQSxDQUdBQSxFQUFBMXZCLEVBQUFjLFVBQUEsQ0FFQSt0QixHQUFBL1ksTUFV
QWdhLFNBQUEsU0FBQXhCLEdBQ0EsTUFBQUEsR0FBQUUsV0FDQUMsRUFBQUgsR0FDQUEsRUFBQUUs
VUFBQW5lLE9BRUFpZSxFQUFBamUsT0FRQTBmLFdBQUEsU0FBQXpCLEdBQ0EsTUFBQUEsR0FBQUMs
YUFDQUksRUFBQUwsR0FDQUEsRUFBQUMsWUFBQWxlLE9BRUFpZSxFQUFBTSxTQU9Bb0IsZ0JBQUEs
U0FBQTFCLEVBQUFsaEIsR0FDQSxNQUFBa2hCLEdBQUFFLFdBQ0FDLEVBQUFILEdBQ0FBLEVBQUFF
LFVBQUF5QixjQUFBN2lCLEVBQUE1SyxPQUFBNk4sUUFDS2llLEVBQUFDLGFBQ0xJLEVBQUFMLEdB
Q0FBLEVBQUFDLFlBQUEwQixjQUFBN2lCLEVBQUE1SyxPQUFBb3NCLFVBQ0tOLEVBQUFJLFNBQ0xK
LEVBQUFJLFNBQUFsd0IsS0FBQXlCLE9BQUFtTixHQURLLFFBTUwvTyxHQUFBRCxRQUFBdXhCLEd0
QzBrSk0sU0FBU3R4QixFQUFRRCxFQUFTSCxHdUN2c0poQyxZQUVBLElBQUE0RyxHQUFBNUcsRUFB
QSxHQUlBaXlCLEdBRkFqeUIsRUFBQSxJQUVBLEdBRUFreUIsR0FLQUMsc0JBQUEsS0FNQUMsdUJB
QUEsS0FFQXhrQixXQUNBeWtCLGtCQUFBLFNBQUFDLEdBQ0FMLEVBQUFyckIsRUFBQSxjQUNBc3JC
LEVBQUFDLHNCQUFBRyxFQUFBSCxzQkFDQUQsRUFBQUUsdUJBQUFFLEVBQUFGLHVCQUNBSCxHQUFB
LElBS0E3eEIsR0FBQUQsUUFBQSt4QixHdkN3dEpNLFNBQVM5eEIsRUFBUUQsRUFBU0gsR3dDdnZK
aEMsWUFZQSxTQUFBcXVCLEdBQUFqc0IsRUFBQW92QixFQUFBcndCLEdBQ0EsSUFDQXF3QixFQUFB
cndCLEdBQ0csTUFBQTRvQixHQUNILE9BQUF3SSxJQUNBQSxFQUFBeEksSUFmQSxHQUFBd0ksR0FB
QSxLQW9CQWxaLEdBQ0FnVix3QkFNQUQsK0JBQUFDLEVBTUE3UyxtQkFBQSxXQUNBLEdBQUErVyxF
QUFBLENBQ0EsR0FBQXh3QixHQUFBd3dCLENBRUEsTUFEQUEsR0FBQSxLQUNBeHdCLElBd0JBM0Is
R0FBQUQsUUFBQWtaLEd4Q3d3Sk0sU0FBU2paLEVBQVFELEVBQVNILEd5Q3gwSmhDLFlBWUEsU0FB
QTRMLEdBQUErSSxHQUNBdkwsRUFBQXdDLGNBQUErSSxHQUdBLFFBQUE2ZCxHQUFBN3BCLEdBQ0Es
R0FBQXNDLFNBQUF0QyxFQUNBLGVBQUFzQyxFQUNBLE1BQUFBLEVBRUEsSUFBQXduQixHQUFBOXBC
LEVBQUF5RixhQUFBekYsRUFBQXlGLFlBQUFoTSxNQUFBNkksRUFDQS9HLEVBQUF0RCxPQUFBc0Qs
S0FBQXlFLEVBQ0EsT0FBQXpFLEdBQUF0QixPQUFBLEdBQUFzQixFQUFBdEIsT0FBQSxHQUNBNnZC
LEVBQUEsV0FBQXZ1QixFQUFBTCxLQUFBLFVBRUE0dUIsRUFHQSxRQUFBQyxHQUFBQyxFQUFBQyxH
QUNBLEdBQUFqZSxHQUFBdUksRUFBQUcsSUFBQXNWLEVBQ0EsS0FBQWhlLEVBQUEsQ0FRQSxZQU9B
LE1BQUFBLEdBNUNBLEdBQUEvTixHQUFBNUcsRUFBQSxHQUdBa2QsR0FEQWxkLEVBQUEsSUFDQUEs
RUFBQSxLQUVBb0osR0FEQXBKLEVBQUEsR0FDQUEsRUFBQSxJQThDQTZ5QixHQTVDQTd5QixFQUFB
LEdBQ0FBLEVBQUEsSUFtREE4eUIsVUFBQSxTQUFBSCxHQUVBLEdBTUFoZSxHQUFBdUksRUFBQUcs
SUFBQXNWLEVBQ0EsU0FBQWhlLEtBSUFBLEVBQUFuUCxvQkFlQXV0QixnQkFBQSxTQUFBSixFQUFB
NW9CLEVBQUE2b0IsR0FDQUMsRUFBQUcsaUJBQUFqcEIsRUFBQTZvQixFQUNBLElBQUFqZSxHQUFB
K2QsRUFBQUMsRUFPQSxPQUFBaGUsSUFJQUEsRUFBQWhLLGtCQUNBZ0ssRUFBQWhLLGtCQUFBNUQs
S0FBQWdELEdBRUE0SyxFQUFBaEssbUJBQUFaLE9BTUE2QixHQUFBK0ksSUFaQSxNQWVBc2Usd0JB
QUEsU0FBQXRlLEVBQUE1SyxHQUNBNEssRUFBQWhLLGtCQUNBZ0ssRUFBQWhLLGtCQUFBNUQsS0FB
QWdELEdBRUE0SyxFQUFBaEssbUJBQUFaLEdBRUE2QixFQUFBK0ksSUFnQkF1ZSxtQkFBQSxTQUFB
UCxHQUNBLEdBQUFoZSxHQUFBK2QsRUFBQUMsRUFBQSxjQUVBaGUsS0FJQUEsRUFBQXdlLHFCQUFB
LEVBRUF2bkIsRUFBQStJLEtBY0F5ZSxvQkFBQSxTQUFBVCxFQUFBVSxFQUFBdHBCLEdBQ0EsR0FB
QTRLLEdBQUErZCxFQUFBQyxFQUFBLGVBRUFoZSxLQUlBQSxFQUFBMmUsb0JBQUFELEdBQ0ExZSxF
QUFBNGUsc0JBQUEsRUFHQXZ4QixTQUFBK0gsR0FBQSxPQUFBQSxJQUNBOG9CLEVBQUFHLGlCQUFB
anBCLEVBQUEsZ0JBQ0E0SyxFQUFBaEssa0JBQ0FnSyxFQUFBaEssa0JBQUE1RCxLQUFBZ0QsR0FF
QTRLLEVBQUFoSyxtQkFBQVosSUFJQTZCLEVBQUErSSxLQWFBNmUsZ0JBQUEsU0FBQWIsRUFBQWMs
R0FNQSxHQUFBOWUsR0FBQStkLEVBQUFDLEVBQUEsV0FFQSxJQUFBaGUsRUFBQSxDQUlBLEdBQUFy
SCxHQUFBcUgsRUFBQTJlLHFCQUFBM2UsRUFBQTJlLHNCQUNBaG1CLEdBQUF2RyxLQUFBMHNCLEdB
RUE3bkIsRUFBQStJLEtBR0ErZSx1QkFBQSxTQUFBL2UsRUFBQVksRUFBQW9lLEdBQ0FoZixFQUFB
aWYsZ0JBQUFyZSxFQUVBWixFQUFBYyxTQUFBa2UsRUFDQS9uQixFQUFBK0ksSUFHQXFlLGlCQUFB
LFNBQUFqcEIsRUFBQTZvQixHQUNBN29CLEdBQUEsa0JBQUFBLEdBQUFuRCxFQUFBLE1BQUFnc0Is
RUFBQUosRUFBQXpvQixJQUFBLFNBSUEzSixHQUFBRCxRQUFBMHlCLEd6Q3cxSk0sU0FBU3p5QixF
QUFRRCxHMENwakt2QixZQU1BLElBQUFxUixHQUFBLFNBQUFnZ0IsR0FDQSx5QkFBQXFDLGNBQUFD
LHdCQUNBLFNBQUFDLEVBQUFDLEVBQUFDLEVBQUFDLEdBQ0FMLE1BQUFDLHdCQUFBLFdBQ0EsTUFB
QXRDLEdBQUF1QyxFQUFBQyxFQUFBQyxFQUFBQyxNQUlBMUMsRUFJQXB4QixHQUFBRCxRQUFBcVIs
RzFDc2tLTSxTQUFTcFIsRUFBUUQsRzJDMWxLdkIsWUFhQSxTQUFBZzBCLEdBQUFubUIsR0FDQSxH
QUFBb21CLEdBQ0FDLEVBQUFybUIsRUFBQXFtQixPQWdCQSxPQWRBLFlBQUFybUIsSUFDQW9tQixF
QUFBcG1CLEVBQUFvbUIsU0FHQSxJQUFBQSxHQUFBLEtBQUFDLElBQ0FELEVBQUEsS0FJQUEsRUFB
QUMsRUFLQUQsR0FBQSxTQUFBQSxFQUNBQSxFQUdBLEVBR0FoMEIsRUFBQUQsUUFBQWcwQixHM0Mw
bUtNLFNBQVMvekIsRUFBUUQsRzRDaHBLdkIsWUFpQkEsU0FBQW0wQixHQUFBQyxHQUNBLEdBQUFD
LEdBQUFsekIsS0FDQTBNLEVBQUF3bUIsRUFBQXhtQixXQUNBLElBQUFBLEVBQUFvWCxpQkFDQSxN
QUFBcFgsR0FBQW9YLGlCQUFBbVAsRUFFQSxJQUFBRSxHQUFBQyxFQUFBSCxFQUNBLFNBQUFFLEtB
QUF6bUIsRUFBQXltQixHQUdBLFFBQUEvUCxHQUFBMVcsR0FDQSxNQUFBc21CLEdBckJBLEdBQUFJ
LElBQ0FDLElBQUEsU0FDQUMsUUFBQSxVQUNBQyxLQUFBLFVBQ0FDLE1BQUEsV0FvQkExMEIsR0FB
QUQsUUFBQXVrQixHNUNncUtNLFNBQVN0a0IsRUFBUUQsRzZDL3JLdkIsWUFVQSxTQUFBdWQsR0FB
QTFQLEdBQ0EsR0FBQXpKLEdBQUF5SixFQUFBekosUUFBQXlKLEVBQUF5WCxZQUFBM2QsTUFTQSxP
QU5BdkQsR0FBQXd3QiwwQkFDQXh3QixJQUFBd3dCLHlCQUtBLElBQUF4d0IsRUFBQVUsU0FBQVYs
RUFBQXlDLFdBQUF6QyxFQUdBbkUsRUFBQUQsUUFBQXVkLEc3QytzS00sU0FBU3RkLEVBQVFELEVB
QVNILEc4Q3R1S2hDLFlBMEJBLFNBQUE0ZSxHQUFBb1csRUFBQUMsR0FDQSxJQUFBaHRCLEVBQUFK
LFdBQUFvdEIsS0FBQSxvQkFBQWx0QixXQUNBLFFBR0EsSUFBQXFsQixHQUFBLEtBQUE0SCxFQUNB
RSxFQUFBOUgsSUFBQXJsQixTQUVBLEtBQUFtdEIsRUFBQSxDQUNBLEdBQUFuZCxHQUFBaFEsU0FB
QUMsY0FBQSxNQUNBK1AsR0FBQW9kLGFBQUEvSCxFQUFBLFdBQ0E4SCxFQUFBLGtCQUFBbmQsR0FB
QXFWLEdBUUEsT0FMQThILEdBQUFFLEdBQUEsVUFBQUosSUFFQUUsRUFBQW50QixTQUFBc3RCLGVB
QUFDLFdBQUEsdUJBR0FKLEVBM0NBLEdBRUFFLEdBRkFudEIsRUFBQWpJLEVBQUEsRUFHQWlJLEdB
QUFKLFlBQ0F1dEIsRUFBQXJ0QixTQUFBc3RCLGdCQUFBdHRCLFNBQUFzdEIsZUFBQUMsWUFHQXZ0
QixTQUFBc3RCLGVBQUFDLFdBQUEsYUF1Q0FsMUIsRUFBQUQsUUFBQXllLEc5Q3N2S00sU0FBU3hl
LEVBQVFELEcrQ3R5S3ZCLFlBY0EsU0FBQW8xQixHQUFBL2YsRUFBQUQsR0FDQSxHQUFBaWdCLEdB
QUEsT0FBQWhnQixRQUFBLEVBQ0FpZ0IsRUFBQSxPQUFBbGdCLFFBQUEsQ0FDQSxJQUFBaWdCLEdB
QUFDLEVBQ0EsTUFBQUQsS0FBQUMsQ0FHQSxJQUFBQyxTQUFBbGdCLEdBQ0FtZ0IsUUFBQXBnQixF
QUNBLGtCQUFBbWdCLEdBQUEsV0FBQUEsRUFDQSxXQUFBQyxHQUFBLFdBQUFBLEVBRUEsV0FBQUEs
R0FBQW5nQixFQUFBdkssT0FBQXNLLEVBQUF0SyxNQUFBdUssRUFBQTNRLE1BQUEwUSxFQUFBMVEs
SUFJQXpFLEVBQUFELFFBQUFvMUIsRy9Dc3pLTSxTQUFTbjFCLEVBQVFELEVBQVNILEdnRHAxS2hD
LFlBRUEsSUFFQXNDLElBRkF0QyxFQUFBLEdBRUFBLEVBQUEsSUFHQTQxQixHQUZBNTFCLEVBQUEs
R0FFQXNDLEVBZ1dBbEMsR0FBQUQsUUFBQXkxQixHaERvMktNLFNBQVN4MUIsRUFBUUQsR2lEcnRM
dkIsWUFVQSxTQUFBb0MsR0FBQU0sR0FFQSxtQkFBQXVJLFVBQUEsa0JBQUFBLFNBQUFySixPQUNB
cUosUUFBQXJKLE1BQUFjLEVBR0EsS0FJQSxTQUFBWixPQUFBWSxHQUVHLE1BQUFqQixLQXBCSHpC
LEVBQUFrb0IsWUFBQSxFQUNBbG9CLEVBQUFtb0IsUUFBQS9sQixHakRndkxNLFNBQVNuQyxFQUFR
RCxFQUFTSCxHa0RudkxoQyxZQWFBLElBQUFzQyxHQUFBdEMsRUFBQSxHQU1BNjFCLEdBU0FDLE9B
QUEsU0FBQXZ4QixFQUFBd3hCLEVBQUFoc0IsR0FDQSxNQUFBeEYsR0FBQThELGtCQUNBOUQsRUFB
QThELGlCQUFBMHRCLEVBQUFoc0IsR0FBQSxJQUVBb1QsT0FBQSxXQUNBNVksRUFBQXl4QixvQkFB
QUQsRUFBQWhzQixHQUFBLE1BR0t4RixFQUFBK0QsYUFDTC9ELEVBQUErRCxZQUFBLEtBQUF5dEIs
RUFBQWhzQixJQUVBb1QsT0FBQSxXQUNBNVksRUFBQTB4QixZQUFBLEtBQUFGLEVBQUFoc0IsTUFK
SyxRQWtCTGtyQixRQUFBLFNBQUExd0IsRUFBQXd4QixFQUFBaHNCLEdBQ0EsTUFBQXhGLEdBQUE4
RCxrQkFDQTlELEVBQUE4RCxpQkFBQTB0QixFQUFBaHNCLEdBQUEsSUFFQW9ULE9BQUEsV0FDQTVZ
LEVBQUF5eEIsb0JBQUFELEVBQUFoc0IsR0FBQSxPQVFBb1QsT0FBQTdhLElBS0E0ekIsZ0JBQUEs
YUFHQTkxQixHQUFBRCxRQUFBMDFCLEdsRHl2TE0sU0FBU3oxQixFQUFRRCxHbUQxekx2QixZQU1B
LFNBQUFnMkIsR0FBQXB4QixHQUlBLElBQ0FBLEVBQUFxeEIsUUFDRyxNQUFBeDBCLEtBR0h4QixF
QUFBRCxRQUFBZzJCLEduRDAwTE0sU0FBUy8xQixFQUFRRCxHb0RuMkx2QixZQXlCQSxTQUFBazJC
LEdBQUF4WSxHQUVBLEdBREFBLE1BQUEsbUJBQUE5VixtQkFBQS9GLFFBQ0EsbUJBQUE2YixHQUNB
LFdBRUEsS0FDQSxNQUFBQSxHQUFBeVksZUFBQXpZLEVBQUEwWSxLQUNHLE1BQUEzMEIsR0FDSCxN
QUFBaWMsR0FBQTBZLE1BSUFuMkIsRUFBQUQsUUFBQWsyQixHcER5MkxNLFNBQVNqMkIsRUFBUUQs
RUFBU0gsR3FEOTRMaEMsR0FBQXcyQixHQUFBeDJCLEVBQUEsS0FHQXkyQixFQUFBRCxFQUFBQyxN
QUVBcjJCLEdBQUFELFFBQUFzMkIsR3JEcTVMTSxTQUFTcjJCLEVBQVFELEVBQVNILEdzRGo1TGhD
LFlBTUEsSUFBQXNZLEdBQUF0WSxFQUFBLElBQ0FJLEdBQUFELFFBQUEsU0FBQTZXLEdBRUEsR0FB
QTBmLElBQUEsQ0FDQSxPQUFBcGUsR0FBQXRCLEVBQUEwZixLdERrNkxNLFNBQVN0MkIsRUFBUUQs
RUFBU0gsR3VEejVMaENJLEVBQUFELFFBQUFILEVBQUEsUXZENjdMTSxTQUFTSSxFQUFRRCxHd0Ro
OUx2QixZQUVBLElBQUEwd0IsR0FBQSw4Q0FFQXp3QixHQUFBRCxRQUFBMHdCLEd4RGcrTE0sU0FB
U3p3QixFQUFRRCxHeURuK0x2QixZQXlEQSxTQUFBdzJCLEdBQUFDLEVBQUEveEIsR0FDQSxNQUFB
K3hCLEdBQUEveEIsRUFBQWd5QixPQUFBLEdBQUFDLGNBQUFqeUIsRUFBQXlpQixVQUFBLEdBcERB
LEdBQUF5UCxJQUNBQyx5QkFBQSxFQUNBQyxtQkFBQSxFQUNBQyxrQkFBQSxFQUNBQyxrQkFBQSxF
QUNBQyxTQUFBLEVBQ0FDLGNBQUEsRUFDQUMsaUJBQUEsRUFDQUMsYUFBQSxFQUNBQyxNQUFBLEVB
Q0FDLFVBQUEsRUFDQUMsY0FBQSxFQUNBQyxZQUFBLEVBQ0FDLGNBQUEsRUFDQUMsV0FBQSxFQUNB
QyxTQUFBLEVBQ0FDLFlBQUEsRUFDQUMsYUFBQSxFQUNBQyxjQUFBLEVBQ0FDLFlBQUEsRUFDQUMs
ZUFBQSxFQUNBQyxnQkFBQSxFQUNBQyxpQkFBQSxFQUNBQyxZQUFBLEVBQ0FDLFdBQUEsRUFDQUMs
WUFBQSxFQUNBQyxTQUFBLEVBQ0FDLE9BQUEsRUFDQUMsU0FBQSxFQUNBQyxTQUFBLEVBQ0FDLFFB
QUEsRUFDQUMsUUFBQSxFQUNBQyxNQUFBLEVBR0FDLGFBQUEsRUFDQUMsY0FBQSxFQUNBQyxhQUFB
LEVBQ0FDLGlCQUFBLEVBQ0FDLGtCQUFBLEVBQ0FDLGtCQUFBLEVBQ0FDLGVBQUEsRUFDQUMsYUFB
QSxHQWlCQUMsR0FBQSx3QkFJQTU0QixRQUFBc0QsS0FBQTZ5QixHQUFBL3lCLFFBQUEsU0FBQXkx
QixHQUNBRCxFQUFBeDFCLFFBQUEsU0FBQTR5QixHQUNBRyxFQUFBSixFQUFBQyxFQUFBNkMsSUFB
QTFDLEVBQUEwQyxNQWFBLElBQUFDLElBQ0FDLFlBQ0FDLHNCQUFBLEVBQ0FDLGlCQUFBLEVBQ0FD
LGlCQUFBLEVBQ0FDLHFCQUFBLEVBQ0FDLHFCQUFBLEVBQ0FDLGtCQUFBLEdBRUFDLG9CQUNBSCxx
QkFBQSxFQUNBQyxxQkFBQSxHQUVBRyxRQUNBQyxhQUFBLEVBQ0FDLGFBQUEsRUFDQUMsYUFBQSxH
QUVBQyxjQUNBQyxtQkFBQSxFQUNBQyxtQkFBQSxFQUNBQyxtQkFBQSxHQUVBQyxZQUNBQyxpQkFB
QSxFQUNBQyxpQkFBQSxFQUNBQyxpQkFBQSxHQUVBQyxhQUNBQyxrQkFBQSxFQUNBQyxrQkFBQSxF
QUNBQyxrQkFBQSxHQUVBQyxXQUNBQyxnQkFBQSxFQUNBQyxnQkFBQSxFQUNBQyxnQkFBQSxHQUVB
QyxNQUNBQyxXQUFBLEVBQ0FDLGFBQUEsRUFDQW5ELFlBQUEsRUFDQW9ELFVBQUEsRUFDQWxELFlB
QUEsRUFDQW1ELFlBQUEsR0FFQUMsU0FDQUMsY0FBQSxFQUNBQyxjQUFBLEVBQ0FDLGNBQUEsSUFJ
QUMsR0FDQWpGLG1CQUNBMkMsOEJBR0F0NUIsR0FBQUQsUUFBQTY3QixHekRtL0xNLFNBQVM1N0Is
RUFBUUQsRUFBU0gsRzBEaG9NaEMsWUFJQSxTQUFBaThCLEdBQUFDLEVBQUFDLEdBQWlELEtBQUFE
LFlBQUFDLElBQTBDLFNBQUFqNUIsV0FBQSxxQ0FGM0YsR0FBQTBELEdBQUE1RyxFQUFBLEdBSUFv
TSxFQUFBcE0sRUFBQSxJQWdCQTJKLEdBZEEzSixFQUFBLEdBY0EsV0FDQSxRQUFBMkosR0FBQWhC
LEdBQ0FzekIsRUFBQTM2QixLQUFBcUksR0FFQXJJLEtBQUE4NkIsV0FBQSxLQUNBOTZCLEtBQUEr
NkIsVUFBQSxLQUNBLzZCLEtBQUFnN0IsS0FBQTN6QixFQTJFQSxNQS9EQWdCLEdBQUE5SSxVQUFB
NkssUUFBQSxTQUFBM0IsRUFBQWlDLEdBQ0ExSyxLQUFBODZCLFdBQUE5NkIsS0FBQTg2QixlQUNB
OTZCLEtBQUE4NkIsV0FBQXIxQixLQUFBZ0QsR0FDQXpJLEtBQUErNkIsVUFBQS82QixLQUFBKzZC
LGNBQ0EvNkIsS0FBQSs2QixVQUFBdDFCLEtBQUFpRixJQVdBckMsRUFBQTlJLFVBQUFnTSxVQUFB
LFdBQ0EsR0FBQW5DLEdBQUFwSixLQUFBODZCLFdBQ0FHLEVBQUFqN0IsS0FBQSs2QixVQUNBMXpC
LEVBQUFySCxLQUFBZzdCLElBQ0EsSUFBQTV4QixHQUFBNnhCLEVBQUEsQ0FDQTd4QixFQUFBOUgs
U0FBQTI1QixFQUFBMzVCLE9BQUFnRSxFQUFBLGFBQ0F0RixLQUFBODZCLFdBQUEsS0FDQTk2QixL
QUFBKzZCLFVBQUEsSUFDQSxRQUFBMTdCLEdBQUEsRUFBcUJBLEVBQUErSixFQUFBOUgsT0FBc0Jq
QyxJQUMzQytKLEVBQUEvSixHQUFBSixLQUFBZzhCLEVBQUE1N0IsR0FBQWdJLEVBRUErQixHQUFB
OUgsT0FBQSxFQUNBMjVCLEVBQUEzNUIsT0FBQSxJQUlBK0csRUFBQTlJLFVBQUEyN0IsV0FBQSxX
QUNBLE1BQUFsN0IsTUFBQTg2QixXQUFBOTZCLEtBQUE4NkIsV0FBQXg1QixPQUFBLEdBR0ErRyxF
QUFBOUksVUFBQTQ3QixTQUFBLFNBQUFueUIsR0FDQWhKLEtBQUE4NkIsWUFBQTk2QixLQUFBKzZC
LFlBQ0EvNkIsS0FBQTg2QixXQUFBeDVCLE9BQUEwSCxFQUNBaEosS0FBQSs2QixVQUFBejVCLE9B
QUEwSCxJQVdBWCxFQUFBOUksVUFBQStMLE1BQUEsV0FDQXRMLEtBQUE4NkIsV0FBQSxLQUNBOTZC
LEtBQUErNkIsVUFBQSxNQVFBMXlCLEVBQUE5SSxVQUFBbU0sV0FBQSxXQUNBMUwsS0FBQXNMLFNB
R0FqRCxLQUdBdkosR0FBQUQsUUFBQWlNLEVBQUFpQixhQUFBMUQsSTFEaXBNTSxTQUFTdkosRUFB
UUQsRUFBU0gsRzJENXZNaEMsWUFhQSxTQUFBMDhCLEdBQUFocEIsR0FDQSxRQUFBaXBCLEVBQUE3
N0IsZUFBQTRTLEtBR0FrcEIsRUFBQTk3QixlQUFBNFMsS0FHQW1wQixFQUFBL3FCLEtBQUE0QixJ
QUNBaXBCLEVBQUFqcEIsSUFBQSxHQUNBLElBRUFrcEIsRUFBQWxwQixJQUFBLEdBRUEsSUFHQSxR
QUFBb3BCLEdBQUFycEIsRUFBQXJCLEdBQ0EsYUFBQUEsR0FBQXFCLEVBQUFNLGtCQUFBM0IsR0FB
QXFCLEVBQUFPLGlCQUFBK29CLE1BQUEzcUIsSUFBQXFCLEVBQUFRLHlCQUFBN0IsRUFBQSxHQUFB
cUIsRUFBQVMsMkJBQUE5QixLQUFBLEVBNUJBLEdBQUE5SyxHQUFBdEgsRUFBQSxJQUlBZzlCLEdB
SEFoOUIsRUFBQSxHQUNBQSxFQUFBLEdBRUFBLEVBQUEsTUFHQTY4QixHQUZBNzhCLEVBQUEsR0FF
QSxHQUFBaTlCLFFBQUEsS0FBQTMxQixFQUFBNk0sMEJBQUEsS0FBQTdNLEVBQUErTSxvQkFBQSxR
QUNBdW9CLEtBQ0FELEtBeUJBTyxHQU9BQyxrQkFBQSxTQUFBOThCLEdBQ0EsTUFBQWlILEdBQUFF
LGtCQUFBLElBQUF3MUIsRUFBQTM4QixJQUdBKzhCLGtCQUFBLFNBQUFyNEIsRUFBQTFFLEdBQ0Ew
RSxFQUFBb3dCLGFBQUE3dEIsRUFBQUUsa0JBQUFuSCxJQUdBZzlCLG9CQUFBLFdBQ0EsTUFBQS8x
QixHQUFBOE0sb0JBQUEsT0FHQWtwQixvQkFBQSxTQUFBdjRCLEdBQ0FBLEVBQUFvd0IsYUFBQTd0
QixFQUFBOE0sb0JBQUEsS0FVQW1wQix3QkFBQSxTQUFBbjdCLEVBQUFnUSxHQUNBLEdBQUFxQixH
QUFBbk0sRUFBQWdNLFdBQUF4UyxlQUFBc0IsR0FBQWtGLEVBQUFnTSxXQUFBbFIsR0FBQSxJQUNB
LElBQUFxUixFQUFBLENBQ0EsR0FBQXFwQixFQUFBcnBCLEVBQUFyQixHQUNBLFFBRUEsSUFBQXNC
LEdBQUFELEVBQUFDLGFBQ0EsT0FBQUQsR0FBQU0saUJBQUFOLEVBQUFTLDJCQUFBOUIsS0FBQSxF
QUNBc0IsRUFBQSxNQUVBQSxFQUFBLElBQUFzcEIsRUFBQTVxQixHQUNLLE1BQUE5SyxHQUFBOEws
a0JBQUFoUixHQUNMLE1BQUFnUSxFQUNBLEdBRUFoUSxFQUFBLElBQUE0NkIsRUFBQTVxQixHQUVB
LE1BVUFvckIsK0JBQUEsU0FBQXA3QixFQUFBZ1EsR0FDQSxNQUFBc3FCLEdBQUF0NkIsSUFBQSxN
QUFBZ1EsRUFHQWhRLEVBQUEsSUFBQTQ2QixFQUFBNXFCLEdBRkEsSUFZQXFyQixvQkFBQSxTQUFB
MTRCLEVBQUEzQyxFQUFBZ1EsR0FDQSxHQUFBcUIsR0FBQW5NLEVBQUFnTSxXQUFBeFMsZUFBQXNC
LEdBQUFrRixFQUFBZ00sV0FBQWxSLEdBQUEsSUFDQSxJQUFBcVIsRUFBQSxDQUNBLEdBQUFJLEdB
QUFKLEVBQUFJLGNBQ0EsSUFBQUEsRUFDQUEsRUFBQTlPLEVBQUFxTixPQUNPLElBQUEwcUIsRUFB
QXJwQixFQUFBckIsR0FFUCxXQURBOVEsTUFBQW84Qix1QkFBQTM0QixFQUFBM0MsRUFFTyxJQUFB
cVIsRUFBQUssZ0JBR1AvTyxFQUFBME8sRUFBQUcsY0FBQXhCLE1BQ08sQ0FDUCxHQUFBc0IsR0FB
QUQsRUFBQUMsY0FDQWlxQixFQUFBbHFCLEVBQUFFLGtCQUdBZ3FCLEdBQ0E1NEIsRUFBQTY0Qixl
QUFBRCxFQUFBanFCLEVBQUEsR0FBQXRCLEdBQ1NxQixFQUFBTSxpQkFBQU4sRUFBQVMsMkJBQUE5
QixLQUFBLEVBQ1RyTixFQUFBb3dCLGFBQUF6aEIsRUFBQSxJQUVBM08sRUFBQW93QixhQUFBemhC
LEVBQUEsR0FBQXRCLFNBR0ssSUFBQTlLLEVBQUE4TCxrQkFBQWhSLEdBRUwsV0FEQTg2QixHQUFB
VyxxQkFBQTk0QixFQUFBM0MsRUFBQWdRLElBZUF5ckIscUJBQUEsU0FBQTk0QixFQUFBM0MsRUFB
QWdRLEdBQ0EsR0FBQXNxQixFQUFBdDZCLEdBQUEsQ0FHQSxNQUFBZ1EsRUFDQXJOLEVBQUErNEIs
Z0JBQUExN0IsR0FFQTJDLEVBQUFvd0IsYUFBQS95QixFQUFBLEdBQUFnUSxLQW9CQTJyQix3QkFB
QSxTQUFBaDVCLEVBQUEzQyxHQUNBMkMsRUFBQSs0QixnQkFBQTE3QixJQWdCQXM3Qix1QkFBQSxT
QUFBMzRCLEVBQUEzQyxHQUNBLEdBQUFxUixHQUFBbk0sRUFBQWdNLFdBQUF4UyxlQUFBc0IsR0FB
QWtGLEVBQUFnTSxXQUFBbFIsR0FBQSxJQUNBLElBQUFxUixFQUFBLENBQ0EsR0FBQUksR0FBQUos
RUFBQUksY0FDQSxJQUFBQSxFQUNBQSxFQUFBOU8sRUFBQS9DLFlBQ08sSUFBQXlSLEVBQUFLLGdC
QUFBLENBQ1AsR0FBQXpGLEdBQUFvRixFQUFBRyxZQUNBSCxHQUFBTSxnQkFDQWhQLEVBQUFzSixJ
QUFBLEVBRUF0SixFQUFBc0osR0FBQSxPQUdBdEosR0FBQSs0QixnQkFBQXJxQixFQUFBQyxtQkFF
S3BNLEdBQUE4TCxrQkFBQWhSLElBQ0wyQyxFQUFBKzRCLGdCQUFBMTdCLElBYUFoQyxHQUFBRCxR
QUFBKzhCLEczRDR3TU0sU0FBUzk4QixFQUFRRCxHNEQzK012QixZQUVBLElBQUFvSCxJQUNBckIs
b0JBQUEsRUFHQTlGLEdBQUFELFFBQUFvSCxHNUQyL01NLFNBQVNuSCxFQUFRRCxFQUFTSCxHNkRq
Z05oQyxZQWFBLFNBQUFnK0IsS0FDQSxHQUFBMThCLEtBQUEwWSxhQUFBMVksS0FBQTI4QixjQUFB
QyxjQUFBLENBQ0E1OEIsS0FBQTI4QixjQUFBQyxlQUFBLENBRUEsSUFBQXBtQixHQUFBeFcsS0FB
QTBKLGdCQUFBOE0sTUFDQTFGLEVBQUFzZixFQUFBRyxTQUFBL1osRUFFQSxPQUFBMUYsR0FDQSty
QixFQUFBNzhCLEtBQUE4OEIsUUFBQXRtQixFQUFBdW1CLFVBQUFqc0IsSUFrREEsUUFBQStyQixH
QUFBejRCLEVBQUEyNEIsRUFBQUMsR0FDQSxHQUFBQyxHQUFBNTlCLEVBQ0E2OUIsRUFBQTUyQixF
QUFBUixvQkFBQTFCLEdBQUE4NEIsT0FFQSxJQUFBSCxFQUFBLENBRUEsSUFEQUUsS0FDQTU5QixF
QUFBLEVBQWVBLEVBQUEyOUIsRUFBQTE3QixPQUFzQmpDLElBQ3JDNDlCLEVBQUEsR0FBQUQsRUFB
QTM5QixLQUFBLENBRUEsS0FBQUEsRUFBQSxFQUFlQSxFQUFBNjlCLEVBQUE1N0IsT0FBb0JqQyxJ
QUFBLENBQ25DLEdBQUE4OUIsR0FBQUYsRUFBQXo5QixlQUFBMDlCLEVBQUE3OUIsR0FBQXlSLE1B
Q0Fvc0IsR0FBQTc5QixHQUFBODlCLGVBQ0FELEVBQUE3OUIsR0FBQTg5QixpQkFHRyxDQUlILElB
REFGLEVBQUEsR0FBQUQsRUFDQTM5QixFQUFBLEVBQWVBLEVBQUE2OUIsRUFBQTU3QixPQUFvQmpD
LElBQ25DLEdBQUE2OUIsRUFBQTc5QixHQUFBeVIsUUFBQW1zQixFQUVBLFlBREFDLEVBQUE3OUIs
R0FBQTg5QixVQUFBLEVBSUFELEdBQUE1N0IsU0FDQTQ3QixFQUFBLEdBQUFDLFVBQUEsSUFnRkEs
UUFBQUMsR0FBQXZ2QixHQUNBLEdBQUEySSxHQUFBeFcsS0FBQTBKLGdCQUFBOE0sTUFDQXRKLEVB
QUFrakIsRUFBQUssZ0JBQUFqYSxFQUFBM0ksRUFNQSxPQUpBN04sTUFBQTBZLGNBQ0ExWSxLQUFB
MjhCLGNBQUFDLGVBQUEsR0FFQTkwQixFQUFBMkMsS0FBQWl5QixFQUFBMThCLE1BQ0FrTixFQXZM
QSxHQUFBckMsR0FBQW5NLEVBQUEsR0FFQTB4QixFQUFBMXhCLEVBQUEsSUFDQTRILEVBQUE1SCxF
QUFBLEdBQ0FvSixFQUFBcEosRUFBQSxHQUtBMitCLEdBSEEzK0IsRUFBQSxJQUdBLEdBMEdBNCtC
LEdBQ0FDLGFBQUEsU0FBQW41QixFQUFBb1MsR0FDQSxNQUFBM0wsTUFBcUIyTCxHQUNyQjJZLFNB
QUEvcUIsRUFBQXU0QixjQUFBeE4sU0FDQXJlLE1BQUFwUSxVQUlBODhCLGFBQUEsU0FBQXA1QixF
QUFBb1MsR0FLQSxHQUFBMUYsR0FBQXNmLEVBQUFHLFNBQUEvWixFQUNBcFMsR0FBQXU0QixlQUNB
QyxlQUFBLEVBQ0FhLGFBQUEsTUFBQTNzQixJQUFBMEYsRUFBQWtuQixhQUNBQyxVQUFBLEtBQ0F4
TyxTQUFBaU8sRUFBQW5tQixLQUFBN1MsR0FDQXc1QixZQUFBZCxRQUFBdG1CLEVBQUF1bUIsV0FH
QXI4QixTQUFBOFYsRUFBQTFGLE9BQUFwUSxTQUFBOFYsRUFBQWtuQixjQUFBTCxJQUVBQSxHQUFB
LElBSUFRLHNCQUFBLFNBQUF6NUIsR0FHQSxNQUFBQSxHQUFBdTRCLGNBQUFjLGNBR0FLLGtCQUFB
LFNBQUExNUIsR0FDQSxHQUFBb1MsR0FBQXBTLEVBQUFzRixnQkFBQThNLEtBSUFwUyxHQUFBdTRC
LGNBQUFjLGFBQUEvOEIsTUFFQSxJQUFBazlCLEdBQUF4NUIsRUFBQXU0QixjQUFBaUIsV0FDQXg1
QixHQUFBdTRCLGNBQUFpQixZQUFBZCxRQUFBdG1CLEVBQUF1bUIsU0FFQSxJQUFBanNCLEdBQUFz
ZixFQUFBRyxTQUFBL1osRUFDQSxPQUFBMUYsR0FDQTFNLEVBQUF1NEIsY0FBQUMsZUFBQSxFQUNB
QyxFQUFBejRCLEVBQUEwNEIsUUFBQXRtQixFQUFBdW1CLFVBQUFqc0IsSUFDSzhzQixJQUFBZCxR
QUFBdG1CLEVBQUF1bUIsWUFFTCxNQUFBdm1CLEVBQUFrbkIsYUFDQWIsRUFBQXo0QixFQUFBMDRC
LFFBQUF0bUIsRUFBQXVtQixVQUFBdm1CLEVBQUFrbkIsY0FHQWIsRUFBQXo0QixFQUFBMDRCLFFB
QUF0bUIsRUFBQXVtQixVQUFBdm1CLEVBQUF1bUIsWUFBQSxNQWlCQWorQixHQUFBRCxRQUFBeStC
LEc3RGloTk0sU0FBU3grQixFQUFRRCxHOEQ3c052QixZQUVBLElBQUFrL0IsR0FFQUMsR0FDQUMs
NEJBQUEsU0FBQWpuQixHQUNBK21CLEVBQUEvbUIsSUFJQWtuQixHQUNBQyxPQUFBLFNBQUFDLEdB
Q0EsTUFBQUwsR0FBQUssSUFJQUYsR0FBQTV4QixVQUFBMHhCLEVBRUFsL0IsRUFBQUQsUUFBQXEv
QixHOUQ2dE5NLFNBQVNwL0IsRUFBUUQsRytEOXVOdkIsWUFFQSxJQUFBMEssSUFJQUMsb0JBQUEs
RUFHQTFLLEdBQUFELFFBQUEwSyxHL0Qrdk5NLFNBQVN6SyxFQUFRRCxFQUFTSCxHZ0V6d05oQyxZ
QTRCQSxTQUFBMi9CLEdBQUE1bkIsR0FFQSxNQURBNm5CLEdBQUEsT0FBQWg1QixFQUFBLE1BQUFt
UixFQUFBOU0sTUFDQSxHQUFBMjBCLEdBQUE3bkIsR0FPQSxRQUFBOG5CLEdBQUFwdkIsR0FDQSxV
QUFBcXZCLEdBQUFydkIsR0FPQSxRQUFBc3ZCLEdBQUF6NkIsR0FDQSxNQUFBQSxhQUFBdzZCLEdB
NUNBLEdBQUFsNUIsR0FBQTVHLEVBQUEsR0FJQTQvQixHQUZBNS9CLEVBQUEsR0FFQSxNQUNBOC9C
LEVBQUEsS0FFQUUsR0FHQUMsNEJBQUEsU0FBQUMsR0FDQU4sRUFBQU0sR0FJQUMseUJBQUEsU0FB
QUQsR0FDQUosRUFBQUksSUErQkFFLEdBQ0FULDBCQUNBRSx3QkFDQUUsa0JBQ0FueUIsVUFBQW95
QixFQUdBNS9CLEdBQUFELFFBQUFpZ0MsR2hFeXhOTSxTQUFTaGdDLEVBQVFELEVBQVNILEdpRWox
TmhDLFlBUUEsU0FBQXFnQyxHQUFBdDdCLEdBQ0EsTUFBQXU3QixHQUFBdjRCLFNBQUF3NEIsZ0JB
QUF4N0IsR0FQQSxHQUFBeTdCLEdBQUF4Z0MsRUFBQSxLQUVBc2dDLEVBQUF0Z0MsRUFBQSxLQUNB
bTJCLEVBQUFuMkIsRUFBQSxJQUNBcTJCLEVBQUFyMkIsRUFBQSxJQVlBeWdDLEdBQ0FDLHlCQUFB
LFNBQUFDLEdBQ0EsR0FBQXR2QixHQUFBc3ZCLEtBQUF0dkIsVUFBQXN2QixFQUFBdHZCLFNBQUFX
LGFBQ0EsT0FBQVgsS0FBQSxVQUFBQSxHQUFBLFNBQUFzdkIsRUFBQTExQixNQUFBLGFBQUFvRyxH
QUFBLFNBQUFzdkIsRUFBQUMsa0JBR0FDLHdCQUFBLFdBQ0EsR0FBQUMsR0FBQXpLLEdBQ0EsUUFD
QXlLLGNBQ0FDLGVBQUFOLEVBQUFDLHlCQUFBSSxHQUFBTCxFQUFBTyxhQUFBRixHQUFBLE9BU0FH
LGlCQUFBLFNBQUFDLEdBQ0EsR0FBQUMsR0FBQTlLLElBQ0ErSyxFQUFBRixFQUFBSixZQUNBTyxF
QUFBSCxFQUFBSCxjQUNBSSxLQUFBQyxHQUFBZixFQUFBZSxLQUNBWCxFQUFBQyx5QkFBQVUsSUFD
QVgsRUFBQWEsYUFBQUYsRUFBQUMsR0FFQWxMLEVBQUFpTCxLQVVBSixhQUFBLFNBQUFPLEdBQ0Es
R0FBQUMsRUFFQSxzQkFBQUQsR0FFQUMsR0FDQUMsTUFBQUYsRUFBQUcsZUFDQUMsSUFBQUosRUFB
QUssa0JBRUssSUFBQTc1QixTQUFBeTVCLFdBQUFELEVBQUFsd0IsVUFBQSxVQUFBa3dCLEVBQUFs
d0IsU0FBQVcsY0FBQSxDQUVMLEdBQUE2dkIsR0FBQTk1QixTQUFBeTVCLFVBQUFNLGFBR0FELEdB
QUFFLGtCQUFBUixJQUNBQyxHQUNBQyxPQUFBSSxFQUFBRyxVQUFBLGFBQUFULEVBQUFudkIsTUFB
QXhQLFFBQ0ErK0IsS0FBQUUsRUFBQUksUUFBQSxhQUFBVixFQUFBbnZCLE1BQUF4UCxjQUtBNCtC
LEdBQUFoQixFQUFBMEIsV0FBQVgsRUFHQSxPQUFBQyxLQUF5QkMsTUFBQSxFQUFBRSxJQUFBLElB
U3pCTCxhQUFBLFNBQUFDLEVBQUFZLEdBQ0EsR0FBQVYsR0FBQVUsRUFBQVYsTUFDQUUsRUFBQVEs
RUFBQVIsR0FLQSxJQUpBMy9CLFNBQUEyL0IsSUFDQUEsRUFBQUYsR0FHQSxrQkFBQUYsR0FDQUEs
RUFBQUcsZUFBQUQsRUFDQUYsRUFBQUssYUFBQW42QixLQUFBMjZCLElBQUFULEVBQUFKLEVBQUFu
dkIsTUFBQXhQLFlBQ0ssSUFBQW1GLFNBQUF5NUIsV0FBQUQsRUFBQWx3QixVQUFBLFVBQUFrd0Is
RUFBQWx3QixTQUFBVyxjQUFBLENBQ0wsR0FBQTZ2QixHQUFBTixFQUFBYyxpQkFDQVIsR0FBQVMs
VUFBQSxHQUNBVCxFQUFBRyxVQUFBLFlBQUFQLEdBQ0FJLEVBQUFJLFFBQUEsWUFBQU4sRUFBQUYs
R0FDQUksRUFBQVUsYUFFQS9CLEdBQUFnQyxXQUFBakIsRUFBQVksSUFLQS9oQyxHQUFBRCxRQUFB
c2dDLEdqRWkyTk0sU0FBU3JnQyxFQUFRRCxFQUFTSCxHa0VoOU5oQyxZQTBDQSxTQUFBeWlDLEdB
QUFDLEVBQUFDLEdBRUEsT0FEQUMsR0FBQW43QixLQUFBMjZCLElBQUFNLEVBQUE5L0IsT0FBQSsv
QixFQUFBLy9CLFFBQ0FqQyxFQUFBLEVBQWlCQSxFQUFBaWlDLEVBQVlqaUMsSUFDN0IsR0FBQSto
QyxFQUFBN0wsT0FBQWwyQixLQUFBZ2lDLEVBQUE5TCxPQUFBbDJCLEdBQ0EsTUFBQUEsRUFHQSxP
QUFBK2hDLEdBQUE5L0IsU0FBQSsvQixFQUFBLy9CLFVBQUFnZ0MsRUFRQSxRQUFBQyxHQUFBQyxH
QUNBLE1BQUFBLEdBSUFBLEVBQUE3OUIsV0FBQTg5QixFQUNBRCxFQUFBdkMsZ0JBRUF1QyxFQUFB
eDhCLFdBTkEsS0FVQSxRQUFBMDhCLEdBQUFqK0IsR0FJQSxNQUFBQSxHQUFBRyxjQUFBSCxFQUFB
RyxhQUFBQyxJQUFBLEdBV0EsUUFBQTg5QixHQUFBQyxFQUFBSixFQUFBejRCLEVBQUE4NEIsRUFB
QW4zQixHQUNBLEdBQUFwQixFQUNBLElBQUFDLEVBQUFDLG1CQUFBLENBQ0EsR0FBQXM0QixHQUFB
RixFQUFBbDRCLGdCQUFBOE0sTUFBQXVyQixNQUNBcDRCLEVBQUFtNEIsRUFBQW40QixJQUNBTCxH
QUFBLGlDQUFBSyxPQUFBd25CLGFBQUF4bkIsRUFBQTdJLE1BQ0FnSixRQUFBQyxLQUFBVCxHQUdB
LEdBQUFtSyxHQUFBekosRUFBQW9KLGVBQUF3dUIsRUFBQTc0QixFQUFBLEtBQUFpNUIsRUFBQUos
RUFBQUosR0FBQTkyQixFQUFBLEVBR0FwQixJQUNBUSxRQUFBSSxRQUFBWixHQUdBczRCLEVBQUEx
OUIsbUJBQUErOUIsaUJBQUFMLEVBQ0FNLEVBQUFDLG9CQUFBMXVCLEVBQUErdEIsRUFBQUksRUFB
QUMsRUFBQTk0QixHQVVBLFFBQUFxNUIsR0FBQUMsRUFBQWIsRUFBQUssRUFBQW4zQixHQUNBLEdB
QUEzQixHQUFBakIsRUFBQUMsMEJBQUFPLFdBRUF1NUIsR0FBQVMsRUFBQUMsaUJBQ0F4NUIsR0FB
QTZDLFFBQUErMUIsRUFBQSxLQUFBVSxFQUFBYixFQUFBejRCLEVBQUE4NEIsRUFBQW4zQixHQUNB
NUMsRUFBQUMsMEJBQUE0RCxRQUFBNUMsR0FZQSxRQUFBeTVCLEdBQUE1SCxFQUFBNEcsRUFBQTF0
QixHQWNBLElBVkE5SixFQUFBNkosaUJBQUErbUIsRUFBQTltQixHQUtBMHRCLEVBQUE3OUIsV0FB
QTg5QixJQUNBRCxJQUFBdkMsaUJBSUF1QyxFQUFBaUIsV0FDQWpCLEVBQUE3YSxZQUFBNmEsRUFB
QWlCLFdBY0EsUUFBQUMsR0FBQWxCLEdBQ0EsR0FBQW1CLEdBQUFwQixFQUFBQyxFQUNBLElBQUFt
QixFQUFBLENBQ0EsR0FBQXYrQixHQUFBa0MsRUFBQVQsb0JBQUE4OEIsRUFDQSxVQUFBditCLE1B
QUEyQixjQXdCQSxRQUFBNjhCLEdBQUFuL0IsR0FDQSxTQUFBQSxLQUFBRSxXQUFBd00sR0FBQTFN
LEVBQUFFLFdBQUE4OUIsR0FBQWgrQixFQUFBRSxXQUFBeU0sR0FjQSxRQUFBeXlCLEdBQUFyQixH
QUNBLEdBQUFtQixHQUFBcEIsRUFBQUMsR0FDQXNCLEVBQUFILEdBQUFyOEIsRUFBQVQsb0JBQUE4
OEIsRUFDQSxPQUFBRyxPQUFBLzhCLFlBQUErOEIsRUFBQSxLQUdBLFFBQUFDLEdBQUF2QixHQUNB
LEdBQUF0TSxHQUFBMk4sRUFBQXJCLEVBQ0EsT0FBQXRNLEtBQUE4TixtQkFBQWYsaUJBQUEsS0E5
TUEsR0FBQTM4QixHQUFBNUcsRUFBQSxHQUVBc1IsRUFBQXRSLEVBQUEsSUFDQXNILEVBQUF0SCxF
QUFBLElBQ0F5VyxFQUFBelcsRUFBQSxJQUNBK2lCLEVBQUEvaUIsRUFBQSxJQUVBNEgsR0FEQTVI
LEVBQUEsSUFDQUEsRUFBQSxJQUNBc2pDLEVBQUF0akMsRUFBQSxLQUNBNGpDLEVBQUE1akMsRUFB
QSxLQUNBNkssRUFBQTdLLEVBQUEsSUFDQWtkLEVBQUFsZCxFQUFBLElBRUF1a0MsR0FEQXZrQyxF
QUFBLEdBQ0FBLEVBQUEsTUFDQXNMLEVBQUF0TCxFQUFBLElBQ0E2eUIsRUFBQTd5QixFQUFBLElB
Q0FvSixFQUFBcEosRUFBQSxHQUVBa2UsRUFBQWxlLEVBQUEsSUFDQXdrQyxFQUFBeGtDLEVBQUEs
SUFFQXdRLEdBREF4USxFQUFBLEdBQ0FBLEVBQUEsS0FDQXUxQixFQUFBdjFCLEVBQUEsSUFHQW1G
LEdBRkFuRixFQUFBLEdBRUFzSCxFQUFBRSxtQkFDQWk5QixFQUFBbjlCLEVBQUE4TSxvQkFFQTND
LEVBQUEsRUFDQXN4QixFQUFBLEVBQ0FyeEIsRUFBQSxHQUVBZ3pCLEtBc0xBQyxFQUFBLEVBQ0FD
LEVBQUEsV0FDQXRqQyxLQUFBdWpDLE9BQUFGLElBRUFDLEdBQUEvakMsVUFBQWlrQyxvQkFJQUYs
RUFBQS9qQyxVQUFBa2tDLE9BQUEsV0FDQSxNQUFBempDLE1BQUF3VyxNQUFBdXJCLE9BRUF1QixF
QUFBMTVCLHdCQUFBLENBb0JBLElBQUFzNEIsSUFDQW9CLGtCQUtBSSx3QkFBQU4sRUFVQU8sY0FB
QSxTQUFBbkMsRUFBQW9DLEdBQ0FBLEtBVUFDLHFCQUFBLFNBQUFDLEVBQUE3dkIsRUFBQW9lLEVB
QUFtUCxFQUFBLzRCLEdBUUEsTUFQQXk1QixHQUFBeUIsY0FBQW5DLEVBQUEsV0FDQWpRLEVBQUFh
LHVCQUFBMFIsRUFBQTd2QixFQUFBb2UsR0FDQTVwQixHQUNBOG9CLEVBQUFJLHdCQUFBbVMsRUFB
QXI3QixLQUlBcTdCLEdBV0FDLHdCQUFBLFNBQUE5dkIsRUFBQXV0QixFQUFBSyxFQUFBbjNCLEdB
TUFrNEIsRUFBQXBCLEdBQUEsT0FBQWw4QixFQUFBLE1BRUFtYyxFQUFBc0IsNkJBQ0EsSUFBQXNm
LEdBQUFhLEVBQUFqdkIsR0FBQSxFQU1Bbk0sR0FBQVUsZUFBQTQ1QixFQUFBQyxFQUFBYixFQUFB
SyxFQUFBbjNCLEVBRUEsSUFBQXM1QixHQUFBM0IsRUFBQTRCLFVBQUFWLE1BR0EsT0FGQUgsR0FB
QVksR0FBQTNCLEVBRUFBLEdBZ0JBNkIsMkJBQUEsU0FBQUMsRUFBQWx3QixFQUFBdXRCLEVBQUEv
NEIsR0FFQSxNQURBLE9BQUEwN0IsR0FBQXZvQixFQUFBSSxJQUFBbW9CLEdBQUEsT0FBQTcrQixF
QUFBLE1BQ0E0OEIsRUFBQWtDLDRCQUFBRCxFQUFBbHdCLEVBQUF1dEIsRUFBQS80QixJQUdBMjdC
LDRCQUFBLFNBQUFELEVBQUFsd0IsRUFBQXV0QixFQUFBLzRCLEdBQ0E4b0IsRUFBQUcsaUJBQUFq
cEIsRUFBQSxtQkFDQTBNLEVBQUFPLGVBQUF6QixHQUNBLE9BQUEzTyxFQUFBLHFCQUFBMk8sR0FB
QSx5R0FBQUEsR0FBQSx3RkFBQUEsR0FBQXZULFNBQUF1VCxFQUFBdUMsTUFBQSxxRkFJQSxJQUlB
NmIsR0FKQWdTLEVBQUFsdkIsRUFBQXpPLGNBQUE0OEIsR0FDQXZCLE1BQUE5dEIsR0FJQSxJQUFB
a3dCLEVBQUEsQ0FDQSxHQUFBcHBCLEdBQUFhLEVBQUFHLElBQUFvb0IsRUFDQTlSLEdBQUF0WCxF
QUFBdXBCLHFCQUFBdnBCLEVBQUE1RyxjQUVBa2UsR0FBQXpWLENBR0EsSUFBQWtuQixHQUFBZixF
QUFBdkIsRUFFQSxJQUFBc0MsRUFBQSxDQUNBLEdBQUFTLEdBQUFULEVBQUFwNkIsZ0JBQ0F3SyxF
QUFBcXdCLEVBQUEvdEIsTUFBQXVyQixLQUNBLElBQUE5TixFQUFBL2YsRUFBQUQsR0FBQSxDQUNB
LEdBQUF1d0IsR0FBQVYsRUFBQTUvQixtQkFBQW1HLG9CQUNBbzZCLEVBQUFoOEIsR0FBQSxXQUNB
QSxFQUFBeEosS0FBQXVsQyxHQUdBLE9BREF0QyxHQUFBMkIscUJBQUFDLEVBQUFPLEVBQUFoUyxF
QUFBbVAsRUFBQWlELEdBQ0FELEVBRUF0QyxFQUFBd0MsdUJBQUFsRCxHQUlBLEdBQUFtRCxHQUFB
cEQsRUFBQUMsR0FDQW9ELEVBQUFELEtBQUFqRCxFQUFBaUQsR0FDQUUsRUFBQW5DLEVBQUFsQixH
QWlCQUssRUFBQStDLElBQUFkLElBQUFlLEVBQ0E3Z0MsRUFBQWsrQixFQUFBNkIsd0JBQUFNLEVB
QUE3QyxFQUFBSyxFQUFBeFAsR0FBQW51QixtQkFBQW1HLG1CQUlBLE9BSEE1QixJQUNBQSxFQUFB
eEosS0FBQStFLEdBRUFBLEdBZ0JBeS9CLE9BQUEsU0FBQXh2QixFQUFBdXRCLEVBQUEvNEIsR0FD
QSxNQUFBeTVCLEdBQUFrQyw0QkFBQSxLQUFBbndCLEVBQUF1dEIsRUFBQS80QixJQVdBaThCLHVC
QUFBLFNBQUFsRCxHQU9Bb0IsRUFBQXBCLEdBQUEsT0FBQWw4QixFQUFBLEtBTUEsSUFBQXcrQixH
QUFBZixFQUFBdkIsRUFDQSxLQUFBc0MsRUFBQSxDQUdBcEIsRUFBQWxCLEdBR0EsSUFBQUEsRUFB
QTc5QixVQUFBNjlCLEVBQUFzRCxhQUFBM0IsRUFNQSxVQUlBLGFBRkFDLEdBQUFVLEVBQUFHLFVB
QUFWLFFBQ0F6N0IsRUFBQVUsZUFBQWc2QixFQUFBc0IsRUFBQXRDLEdBQUEsSUFDQSxHQUdBVyxv
QkFBQSxTQUFBMXVCLEVBQUErdEIsRUFBQTVHLEVBQUFpSCxFQUFBOTRCLEdBR0EsR0FGQTY1QixF
QUFBcEIsR0FBQSxPQUFBbDhCLEVBQUEsTUFFQXU4QixFQUFBLENBQ0EsR0FBQWtELEdBQUF4RCxF
QUFBQyxFQUNBLElBQUF5QixFQUFBK0IsZUFBQXZ4QixFQUFBc3hCLEdBRUEsV0FEQXorQixHQUFB
bkMsYUFBQXkyQixFQUFBbUssRUFHQSxJQUFBRSxHQUFBRixFQUFBbmhDLGFBQUFxL0IsRUFBQWlD
LG1CQUNBSCxHQUFBdkksZ0JBQUF5RyxFQUFBaUMsbUJBRUEsSUFBQUMsR0FBQUosRUFBQUssU0FD
QUwsR0FBQWxSLGFBQUFvUCxFQUFBaUMsbUJBQUFELEVBRUEsSUFBQUksR0FBQTV4QixFQW9CQTZ4
QixFQUFBbkUsRUFBQWtFLEVBQUFGLEdBQ0FJLEVBQUEsYUFBQUYsRUFBQXJmLFVBQUFzZixFQUFB
LEdBQUFBLEVBQUEsbUJBQUFILEVBQUFuZixVQUFBc2YsRUFBQSxHQUFBQSxFQUFBLEdBRUE5RCxH
QUFBNzlCLFdBQUE4OUIsRUFBQW44QixFQUFBLEtBQUFpZ0MsR0FBQSxPQVVBLEdBRkEvRCxFQUFB
NzlCLFdBQUE4OUIsRUFBQW44QixFQUFBLGFBRUF5RCxFQUFBdzVCLGlCQUFBLENBQ0EsS0FBQWYs
RUFBQWlCLFdBQ0FqQixFQUFBN2EsWUFBQTZhLEVBQUFpQixVQUVBenlCLEdBQUFoQixpQkFBQXd5
QixFQUFBL3RCLEVBQUEsVUFFQXZFLEdBQUFzeUIsRUFBQS90QixHQUNBbk4sRUFBQW5DLGFBQUF5
MkIsRUFBQTRHLEVBQUF4OEIsYUFnQkFsRyxHQUFBRCxRQUFBcWpDLEdsRWcrTk0sU0FBU3BqQyxF
QUFRRCxFQUFTSCxHbUU3K09oQyxZQUVBLElBQUE0RyxHQUFBNUcsRUFBQSxHQUVBeVcsRUFBQXpX
LEVBQUEsSUFJQThtQyxHQUZBOW1DLEVBQUEsSUFHQSttQyxLQUFBLEVBQ0FDLFVBQUEsRUFDQUMs
TUFBQSxFQUVBQyxRQUFBLFNBQUFuaUMsR0FDQSxjQUFBQSxRQUFBLEVBQ0EraEMsRUFBQUcsTUFD
S3h3QixFQUFBTyxlQUFBalMsR0FDTCxrQkFBQUEsR0FBQWtHLEtBQ0E2N0IsRUFBQUUsVUFFQUYs
RUFBQUMsU0FHQW5nQyxHQUFBLEtBQUE3QixLQUlBM0UsR0FBQUQsUUFBQTJtQyxHbkU4L09NLFNB
QVMxbUMsRUFBUUQsR29FMWhQdkIsWUFFQSxJQUFBdWUsSUFDQWtILGtCQUFBLEVBRUFFLGlCQUFB
LEVBRUF2QixvQkFBQSxTQUFBNGlCLEdBQ0F6b0IsRUFBQWtILGtCQUFBdWhCLEVBQUFwZCxFQUNB
ckwsRUFBQW9ILGlCQUFBcWhCLEVBQUFuZCxHQUlBNXBCLEdBQUFELFFBQUF1ZSxHcEUwaVBNLFNB
QVN0ZSxFQUFRRCxFQUFTSCxHcUV0alBoQyxZQW1CQSxTQUFBc1osR0FBQXBKLEVBQUFrM0IsR0FH
QSxNQUZBLE9BQUFBLEVBQUF4Z0MsRUFBQSxhQUVBLE1BQUFzSixFQUNBazNCLEVBS0FodkIsTUFB
QXdSLFFBQUExWixHQUNBa0ksTUFBQXdSLFFBQUF3ZCxJQUNBbDNCLEVBQUFuSixLQUFBMUYsTUFB
QTZPLEVBQUFrM0IsR0FDQWwzQixJQUVBQSxFQUFBbkosS0FBQXFnQyxHQUNBbDNCLEdBR0FrSSxN
QUFBd1IsUUFBQXdkLElBRUFsM0IsR0FBQTNPLE9BQUE2bEMsSUFHQWwzQixFQUFBazNCLEdBeENB
LEdBQUF4Z0MsR0FBQTVHLEVBQUEsRUFFQUEsR0FBQSxFQXlDQUksR0FBQUQsUUFBQW1aLEdyRXVr
UE0sU0FBU2xaLEVBQVFELEdzRXBuUHZCLFlBVUEsU0FBQW9aLEdBQUE4dEIsRUFBQUMsRUFBQWw2
QixHQUNBZ0wsTUFBQXdSLFFBQUF5ZCxHQUNBQSxFQUFBcmpDLFFBQUFzakMsRUFBQWw2QixHQUNH
aTZCLEdBQ0hDLEVBQUEvbUMsS0FBQTZNLEVBQUFpNkIsR0FJQWpuQyxFQUFBRCxRQUFBb1osR3RF
cW9QTSxTQUFTblosRUFBUUQsRUFBU0gsR3VFeHBQaEMsWUFJQSxTQUFBdW5DLEdBQUE3aEMsR0FH
QSxJQUZBLEdBQUF1RixJQUVBQSxFQUFBdkYsRUFBQThoQyxxQkFBQVYsRUFBQUUsV0FDQXRoQyxJ
QUFBRixrQkFHQSxPQUFBeUYsS0FBQTY3QixFQUFBQyxLQUNBcmhDLEVBQUFGLG1CQUNHeUYsSUFB
QTY3QixFQUFBRyxNQUNILEtBREcsT0FYSCxHQUFBSCxHQUFBOW1DLEVBQUEsR0FnQkFJLEdBQUFE
LFFBQUFvbkMsR3ZFd3FQTSxTQUFTbm5DLEVBQVFELEVBQVNILEd3RTFyUGhDLFlBWUEsU0FBQXlu
QyxLQU1BLE9BTEFDLEdBQUF6L0IsRUFBQUosWUFHQTYvQixFQUFBLGVBQUEzL0IsVUFBQXc0Qixn
QkFBQSwyQkFFQW1ILEVBaEJBLEdBQUF6L0IsR0FBQWpJLEVBQUEsR0FFQTBuQyxFQUFBLElBaUJB
dG5DLEdBQUFELFFBQUFzbkMsR3hFMHNQTSxTQUFTcm5DLEVBQVFELEVBQVNILEd5RS90UGhDLFlB
SUEsU0FBQTJuQyxHQUFBaEgsR0FDQSxHQUFBMTFCLEdBQUEwMUIsRUFBQTExQixLQUNBb0csRUFB
QXN2QixFQUFBdHZCLFFBQ0EsT0FBQUEsSUFBQSxVQUFBQSxFQUFBVyxnQkFBQSxhQUFBL0csR0FB
QSxVQUFBQSxHQUdBLFFBQUEyOEIsR0FBQWxpQyxHQUNBLE1BQUFBLEdBQUF1NEIsY0FBQTRKLGFB
R0EsUUFBQUMsR0FBQXBpQyxFQUFBcWlDLEdBQ0FyaUMsRUFBQXU0QixjQUFBNEosYUFBQUUsRUFH
QSxRQUFBQyxHQUFBdGlDLFNBQ0FBLEdBQUF1NEIsY0FBQTRKLGFBR0EsUUFBQUksR0FBQWxqQyxH
QUNBLEdBQUFxTixFQUlBLE9BSEFyTixLQUNBcU4sRUFBQXUxQixFQUFBNWlDLEdBQUEsR0FBQUEs
RUFBQTRyQixRQUFBNXJCLEVBQUFxTixPQUVBQSxFQXpCQSxHQUFBeEssR0FBQTVILEVBQUEsR0E0
QkFrb0MsR0FFQUMsb0JBQUEsU0FBQXBqQyxHQUNBLE1BQUE2aUMsR0FBQWhnQyxFQUFBVCxvQkFB
QXBDLEtBSUFxakMsTUFBQSxTQUFBMWlDLEdBQ0EsSUFBQWtpQyxFQUFBbGlDLEdBQUEsQ0FJQSxH
QUFBWCxHQUFBNkMsRUFBQVIsb0JBQUExQixHQUNBMmlDLEVBQUFWLEVBQUE1aUMsR0FBQSxrQkFD
QXVqQyxFQUFBMW5DLE9BQUEybkMseUJBQUF4akMsRUFBQXFKLFlBQUF2TixVQUFBd25DLEdBRUFH
LEVBQUEsR0FBQXpqQyxFQUFBc2pDLEVBTUF0akMsR0FBQWpFLGVBQUF1bkMsSUFBQSxrQkFBQUMs
R0FBQWpyQixLQUFBLGtCQUFBaXJCLEdBQUEvcUIsTUFJQTNjLE9BQUE2bkMsZUFBQTFqQyxFQUFB
c2pDLEdBQ0FLLFdBQUFKLEVBQUFJLFdBQ0FDLGNBQUEsRUFDQXRyQixJQUFBLFdBQ0EsTUFBQWly
QixHQUFBanJCLElBQUE5YyxLQUFBZSxPQUVBaWMsSUFBQSxTQUFBbkwsR0FDQW8yQixFQUFBLEdB
QUFwMkIsRUFDQWsyQixFQUFBL3FCLElBQUFoZCxLQUFBZSxLQUFBOFEsTUFJQTAxQixFQUFBcGlD
LEdBQ0Ftc0IsU0FBQSxXQUNBLE1BQUEyVyxJQUVBSSxTQUFBLFNBQUF4MkIsR0FDQW8yQixFQUFB
LEdBQUFwMkIsR0FFQXkyQixhQUFBLFdBQ0FiLEVBQUF0aUMsU0FDQVgsR0FBQXNqQyxTQUtBUyxx
QkFBQSxTQUFBcGpDLEdBQ0EsSUFBQUEsRUFDQSxRQUVBLElBQUFxaUMsR0FBQUgsRUFBQWxpQyxF
QUVBLEtBQUFxaUMsRUFFQSxNQURBRyxHQUFBRSxNQUFBMWlDLElBQ0EsQ0FHQSxJQUFBcWpDLEdB
QUFoQixFQUFBbFcsV0FDQW1YLEVBQUFmLEVBQUFyZ0MsRUFBQVIsb0JBQUExQixHQUVBLE9BQUFz
akMsS0FBQUQsSUFDQWhCLEVBQUFhLFNBQUFJLElBQ0EsSUFLQUgsYUFBQSxTQUFBbmpDLEdBQ0Es
R0FBQXFpQyxHQUFBSCxFQUFBbGlDLEVBQ0FxaUMsSUFDQUEsRUFBQWMsZ0JBS0F6b0MsR0FBQUQs
UUFBQStuQyxHekUrdVBNLFNBQVM5bkMsRUFBUUQsRUFBU0gsRzBFOTFQaEMsWUFrQkEsU0FBQTR3
QixHQUFBL1ksR0FDQSxHQUFBQSxFQUFBLENBQ0EsR0FBQXpWLEdBQUF5VixFQUFBMU0sU0FDQSxJ
QUFBL0ksRUFDQSxzQ0FBQUEsRUFBQSxLQUdBLFNBVUEsUUFBQTZtQyxHQUFBaCtCLEdBQ0Esd0JB
QUFBLElBQUEsbUJBQUFBLEdBQUFwSyxXQUFBLGtCQUFBb0ssR0FBQXBLLFVBQUE2VCxnQkFBQSxr
QkFBQXpKLEdBQUFwSyxVQUFBeVUsaUJBV0EsUUFBQWt2QixHQUFBei9CLEVBQUFta0MsR0FDQSxH
QUFBaE4sRUFFQSxXQUFBbjNCLFFBQUEsRUFDQW0zQixFQUFBc0QsRUFBQUMsT0FBQStFLE9BQ0cs
b0JBQUF6L0IsR0FBQSxDQUNILEdBQUFnVCxHQUFBaFQsRUFDQWtHLEVBQUE4TSxFQUFBOU0sSUFD
QSxzQkFBQUEsSUFBQSxnQkFBQUEsR0FBQSxDQUNBLEdBQUFrK0IsR0FBQSxFQU1BQSxJQUFBdlks
RUFBQTdZLEVBQUFFLFFBQ0FyUixFQUFBLFlBQUFxRSxhQUFBaytCLEdBSUEsZ0JBQUFweEIsR0FB
QTlNLEtBQ0FpeEIsRUFBQWtFLEVBQUFULHdCQUFBNW5CLEdBQ0treEIsRUFBQWx4QixFQUFBOU0s
T0FJTGl4QixFQUFBLEdBQUFua0IsR0FBQTlNLEtBQUE4TSxHQUdBbWtCLEVBQUFobkIsY0FDQWdu
QixFQUFBaG5CLFlBQUFnbkIsRUFBQWtOLGdCQUdBbE4sRUFBQSxHQUFBbU4sR0FBQXR4QixPQUVH
LGdCQUFBaFQsSUFBQSxnQkFBQUEsR0FDSG0zQixFQUFBa0UsRUFBQVAsc0JBQUE5NkIsR0FFQTZC
LEVBQUEsWUFBQTdCLEdBeUJBLE9BZkFtM0IsR0FBQW9OLFlBQUEsRUFDQXBOLEVBQUFxTixZQUFB
LEtBY0FyTixFQTVHQSxHQUFBdDFCLEdBQUE1RyxFQUFBLEdBQ0FtTSxFQUFBbk0sRUFBQSxHQUVB
d3BDLEVBQUF4cEMsRUFBQSxLQUNBdy9CLEVBQUF4L0IsRUFBQSxJQUNBb2dDLEVBQUFwZ0MsRUFB
QSxJQU9BcXBDLEdBTEFycEMsRUFBQSxLQUNBQSxFQUFBLEdBQ0FBLEVBQUEsR0FHQSxTQUFBK1gs
R0FDQXpXLEtBQUFtb0MsVUFBQTF4QixJQWtHQTVMLEdBQUFrOUIsRUFBQXhvQyxVQUFBMm9DLEdB
Q0FFLDJCQUFBbEYsSUFHQXBrQyxFQUFBRCxRQUFBcWtDLEcxRTgyUE0sU0FBU3BrQyxFQUFRRCxH
MkVsK1B2QixZQXdCQSxTQUFBd3BDLEdBQUFoSixHQUNBLEdBQUF0dkIsR0FBQXN2QixLQUFBdHZC
LFVBQUFzdkIsRUFBQXR2QixTQUFBVyxhQUVBLGlCQUFBWCxJQUNBdTRCLEVBQUFqSixFQUFBMTFC
LE1BR0EsYUFBQW9HLEVBekJBLEdBQUF1NEIsSUFDQUMsT0FBQSxFQUNBQyxNQUFBLEVBQ0FDLFVB
QUEsRUFDQUMsa0JBQUEsRUFDQUMsT0FBQSxFQUNBQyxPQUFBLEVBQ0FDLFFBQUEsRUFDQUMsVUFB
QSxFQUNBdkksT0FBQSxFQUNBd0ksUUFBQSxFQUNBQyxLQUFBLEVBQ0E3NUIsTUFBQSxFQUNBcEYs
TUFBQSxFQUNBay9CLEtBQUEsRUFDQUMsTUFBQSxFQWlCQXBxQyxHQUFBRCxRQUFBd3BDLEczRW0v
UE0sU0FBU3ZwQyxFQUFRRCxFQUFTSCxHNEUxaFFoQyxZQUVBLElBQUFpSSxHQUFBakksRUFBQSxH
QUNBdW5CLEVBQUF2bkIsRUFBQSxJQUNBd1EsRUFBQXhRLEVBQUEsSUFZQTBRLEVBQUEsU0FBQTNM
LEVBQUEwTCxHQUNBLEdBQUFBLEVBQUEsQ0FDQSxHQUFBbkssR0FBQXZCLEVBQUF1QixVQUVBLElB
QUFBLE9BQUF2QixFQUFBZy9CLFdBQUEsSUFBQXo5QixFQUFBckIsU0FFQSxZQURBcUIsRUFBQWxC
LFVBQUFxTCxHQUlBMUwsRUFBQTBsQyxZQUFBaDZCLEVBR0F4SSxHQUFBSixZQUNBLGVBQUFFLFVB
QUF3NEIsa0JBQ0E3dkIsRUFBQSxTQUFBM0wsRUFBQTBMLEdBQ0EsV0FBQTFMLEVBQUFFLGNBQ0FG
LEVBQUFLLFVBQUFxTCxPQUdBRCxHQUFBekwsRUFBQXdpQixFQUFBOVcsT0FLQXJRLEVBQUFELFFB
QUF1USxHNUUwaVFNLFNBQVN0USxFQUFRRCxFQUFTSCxHNkVsbFFoQyxZQW1DQSxTQUFBMHFDLEdB
QUFwbEMsRUFBQTZoQixHQUdBLE1BQUE3aEIsSUFBQSxnQkFBQUEsSUFBQSxNQUFBQSxFQUFBVCxJ
QUVBc3JCLEVBQUFqSixPQUFBNWhCLEVBQUFULEtBR0FzaUIsRUFBQXhmLFNBQUEsSUFXQSxRQUFB
Z2pDLEdBQUF4a0MsRUFBQXlrQyxFQUFBN2dDLEVBQUE4Z0MsR0FDQSxHQUFBNS9CLFNBQUE5RSxF
QU9BLElBTEEsY0FBQThFLEdBQUEsWUFBQUEsSUFFQTlFLEVBQUEsTUFHQSxPQUFBQSxHQUFBLFdB
QUE4RSxHQUFBLFdBQUFBLEdBR0EsV0FBQUEsR0FBQTlFLEVBQUE2UixXQUFBUixFQUtBLE1BSkF6
TixHQUFBOGdDLEVBQUExa0MsRUFHQSxLQUFBeWtDLEVBQUFFLEVBQUFKLEVBQUF2a0MsRUFBQSxH
QUFBeWtDLEdBQ0EsQ0FHQSxJQUFBdkgsR0FDQTBILEVBQ0FDLEVBQUEsRUFDQUMsRUFBQSxLQUFB
TCxFQUFBRSxFQUFBRixFQUFBTSxDQUVBLElBQUE5eUIsTUFBQXdSLFFBQUF6akIsR0FDQSxPQUFB
eEYsR0FBQSxFQUFtQkEsRUFBQXdGLEVBQUF2RCxPQUFxQmpDLElBQ3hDMGlDLEVBQUFsOUIsRUFB
QXhGLEdBQ0FvcUMsRUFBQUUsRUFBQVAsRUFBQXJILEVBQUExaUMsR0FDQXFxQyxHQUFBTCxFQUFB
dEgsRUFBQTBILEVBQUFoaEMsRUFBQThnQyxPQUVHLENBQ0gsR0FBQU0sR0FBQUMsRUFBQWpsQyxF
QUNBLElBQUFnbEMsRUFBQSxDQUNBLEdBQ0FFLEdBREFDLEVBQUFILEVBQUE1cUMsS0FBQTRGLEVB
RUEsSUFBQWdsQyxJQUFBaGxDLEVBQUFvbEMsUUFFQSxJQURBLEdBQUFDLEdBQUEsSUFDQUgsRUFB
QUMsRUFBQWxFLFFBQUFxRSxNQUNBcEksRUFBQWdJLEVBQUFqNUIsTUFDQTI0QixFQUFBRSxFQUFB
UCxFQUFBckgsRUFBQW1JLEtBQ0FSLEdBQUFMLEVBQUF0SCxFQUFBMEgsRUFBQWhoQyxFQUFBOGdD
LE9BZUEsUUFBQVEsRUFBQUMsRUFBQWxFLFFBQUFxRSxNQUFBLENBQ0EsR0FBQUMsR0FBQUwsRUFB
QWo1QixLQUNBczVCLEtBQ0FySSxFQUFBcUksRUFBQSxHQUNBWCxFQUFBRSxFQUFBOWEsRUFBQWpK
LE9BQUF3a0IsRUFBQSxJQUFBUixFQUFBUixFQUFBckgsRUFBQSxHQUNBMkgsR0FBQUwsRUFBQXRI
LEVBQUEwSCxFQUFBaGhDLEVBQUE4Z0MsU0FJSyxlQUFBNS9CLEVBQUEsQ0FDTCxHQUFBMGdDLEdB
QUEsR0FhQUMsRUFBQXRvQyxPQUFBNkMsRUFDb09TLEdBQUEseUJBQUFnbEMsRUFBQSxxQkFBK0do
ckMsT0FBQXNELEtBQUFpQyxHQUFBdEMsS0FBQSxVQUF5QytuQyxFQUFBRCxJQUk1WCxNQUFBWCxH
QW1CQSxRQUFBYSxHQUFBMWxDLEVBQUE0RCxFQUFBOGdDLEdBQ0EsYUFBQTFrQyxFQUNBLEVBR0F3
a0MsRUFBQXhrQyxFQUFBLEdBQUE0RCxFQUFBOGdDLEdBL0pBLEdBQUFqa0MsR0FBQTVHLEVBQUEs
R0FHQXdYLEdBREF4WCxFQUFBLElBQ0FBLEVBQUEsTUFFQW9yQyxFQUFBcHJDLEVBQUEsS0FFQW13
QixHQURBbndCLEVBQUEsR0FDQUEsRUFBQSxLQUdBOHFDLEdBRkE5cUMsRUFBQSxHQUVBLEtBQ0Fr
ckMsRUFBQSxHQXVKQTlxQyxHQUFBRCxRQUFBMHJDLEc3RWttUU0sU0FBU3pyQyxFQUFRRCxFQUFT
SCxHOEVoeFFoQyxZQXdCQSxTQUFBbW9CLEdBQUFDLEdBQXNDLE1BQUFBLE1BQUFDLFdBQUFELEdB
QXVDRSxRQUFBRixHQUU3RSxRQUFBNlQsR0FBQUMsRUFBQUMsR0FBaUQsS0FBQUQsWUFBQUMsSUFB
MEMsU0FBQWo1QixXQUFBLHFDQUUzRixRQUFBNG9DLEdBQUFsMEIsRUFBQXJYLEdBQWlELElBQUFx
WCxFQUFhLFNBQUFtMEIsZ0JBQUEsNERBQXlGLFFBQUF4ckMsR0FBQSxnQkFBQUEsSUFBQSxrQkFB
QUEsR0FBQXFYLEVBQUFyWCxFQUV2SixRQUFBeXJDLEdBQUFDLEVBQUFDLEdBQTBDLHFCQUFBQSxJ
QUFBLE9BQUFBLEVBQStELFNBQUFocEMsV0FBQSxpRUFBQWdwQyxHQUF1R0QsR0FBQXByQyxVQUFB
RCxPQUFBNitCLE9BQUF5TSxLQUFBcnJDLFdBQXlFdU4sYUFBZWdFLE1BQUE2NUIsRUFBQXZELFlB
QUEsRUFBQXlELFVBQUEsRUFBQXhELGNBQUEsS0FBNkV1RCxJQUFBdHJDLE9BQUF3ckMsZUFBQXhy
QyxPQUFBd3JDLGVBQUFILEVBQUFDLEdBQUFELEVBQUFJLFVBQUFILEdBRXJYLFFBQUFJLEdBQUFs
a0IsRUFBQWxrQixHQUE4QyxHQUFBSyxLQUFpQixRQUFBNUQsS0FBQXluQixHQUFxQmxrQixFQUFB
K29CLFFBQUF0c0IsSUFBQSxHQUFvQ0MsT0FBQUMsVUFBQUMsZUFBQVAsS0FBQTZuQixFQUFBem5C
LEtBQTZENEQsRUFBQTVELEdBQUF5bkIsRUFBQXpuQixHQUFzQixPQUFBNEQsR0FJM00sUUFBQWdv
QyxNQUNBLFFBQUFDLEdBQUFDLEVBQUFDLEdBRUEsR0FBQUMsSUFDQUMsSUFBQSxTQUFBOTBCLEdB
Q0EsSUFDQSxHQUFBKzBCLEdBQUFKLEVBQUFDLEVBQUFJLFdBQUFoMUIsSUFDQSswQixJQUFBRixF
QUFBNzBCLE9BQUE2MEIsRUFBQTVxQyxTQUNBNHFDLEVBQUFJLHVCQUFBLEVBQ0FKLEVBQUE3MEIs
TUFBQSswQixFQUNBRixFQUFBNXFDLE1BQUEsTUFFTyxNQUFBQSxHQUNQNHFDLEVBQUFJLHVCQUFB
LEVBQ0FKLEVBQUE1cUMsVUFLQSxPQUFBNHFDLEdBR0EsUUFBQUssR0FlQUMsR0FDQSxHQUFBQyxH
QUFBQyxFQUVBQyxFQUFBenFDLFVBQUFDLE9BQUEsR0FBQVosU0FBQVcsVUFBQSxHQUFBQSxVQUFB
LE1BQ0EwcUMsRUFBQUQsRUFBQUUsZUFDQUEsRUFBQXRyQyxTQUFBcXJDLEVBQUEsU0FBQWpyQyxH
QUNBLHlCQUFBQSxFQUFBLEtBQ0dpckMsRUFDSEUsRUFBQUgsRUFBQUksV0FDQUEsRUFBQXhyQyxT
QUFBdXJDLEVBQUEsa0JBQUFBLEVBQ0FFLEVBQUFMLEVBQUFNLGdCQUNBQSxFQUFBMXJDLFNBQUF5
ckMsRUFBQXpyQyxPQUFBeXJDLEVBQ0FFLEVBQUFQLEVBQUFRLHlCQUNBQSxFQUFBNXJDLFNBQUEy
ckMsS0FDQUUsRUFBQVQsRUFBQVUsU0FDQUEsRUFBQTlyQyxTQUFBNnJDLEVBQUEsUUFBQUEsRUFD
QUUsRUFBQVgsRUFBQVksUUFDQUEsRUFBQWhzQyxTQUFBK3JDLEtBQ0FFLEVBQUEzQixFQUFBYyxH
QUFBLGtHQUVBYyxFQUFBSixFQUFBLGVBQ0ExMkIsRUFBQSsyQixJQUVBQyxHQUFBbEIsS0FBd0NB
LEVBQUFZLEdBQUFPLEVBQUFDLFdBQUFwQixFQUFBZ0IsR0FBQUcsRUFBQUUsa0JBQUFyQixHQUN4
Q3NCLEdBQUFyQixLQUFrREEsRUFBQWUsR0FBQUcsRUFBQUUsa0JBQUFwQixFQUVsRCxpQkFBQXNC
LElBQ0EsRUFBQUMsRUFBQXBtQixTQUFBLGtCQUFBbW1CLEdBQUEsbUZBQUFFLEtBQUFDLFVBQUFI
LEdBRUEsSUFBQUksR0FBQUosRUFBQWhjLGFBQUFnYyxFQUFBcnNDLE1BQUEsWUFFQXF3QixFQUFB
NmEsRUFBQXVCLEdBRUFDLEVBQUFDLEtBQTRDZCxHQUM1Q1gsaUJBQ0FFLGFBQ0FFLGtCQUNBRSwy
QkFDQUUsV0FDQUUsVUFDQXZiLGNBQ0FvYyx1QkFDQUoscUJBR0FPLEVBQUEsU0FBQUMsR0FHQSxR
QUFBRCxHQUFBbDNCLEVBQUE5TCxHQUNBaXdCLEVBQUEzNkIsS0FBQTB0QyxFQUVBLElBQUFFLEdB
QUFwRCxFQUFBeHFDLEtBQUEydEMsRUFBQTF1QyxLQUFBZSxLQUFBd1csRUFBQTlMLEdBYUEsT0FY
QWtqQyxHQUFBOTNCLFVBQ0E4M0IsRUFBQUMsU0FDQUQsRUFBQUUsWUFBQSxFQUNBRixFQUFBeEMs
TUFBQTUwQixFQUFBZzJCLElBQUE5aEMsRUFBQThoQyxHQUNBb0IsRUFBQUcsVUFBQWpSLFFBQUF0
bUIsRUFBQWcyQixJQUNBb0IsRUFBQUksbUJBQUFKLEVBQUFJLG1CQUFBLzJCLEtBQUEyMkIsSUFF
QSxFQUFBUixFQUFBcG1CLFNBQUE0bUIsRUFBQXhDLE1BQUEsbUJBQUFvQixFQUFBLDRDQUFBcmIs
RUFBQSwrRUFBQXFiLEVBQUEsbUJBQUFyYixFQUFBLE9BRUF5YyxFQUFBSyxlQUNBTCxFQUFBTSxt
QkFDQU4sRUE4SEEsTUFoSkFsRCxHQUFBZ0QsRUFBQUMsR0FxQkFELEVBQUFudUMsVUFBQTR1Qyxn
QkFBQSxXQUNBLEdBQUFDLEdBTUFDLEVBQUFydUMsS0FBQSt0QyxVQUFBLEtBQUEvdEMsS0FBQXF1
QyxZQUNBLE9BQUFELE1BQXlCQSxFQUFBeEIsR0FBQXlCLEdBQUFydUMsS0FBQTBLLFFBQUFraUMs
R0FBQXdCLEdBR3pCVixFQUFBbnVDLFVBQUErdUMsa0JBQUEsV0FDQWhDLElBUUF0c0MsS0FBQXF1
QyxhQUFBRSxlQUNBdnVDLEtBQUFxckMsU0FBQUMsSUFBQXRyQyxLQUFBd1csT0FDQXhXLEtBQUFx
ckMsU0FBQUksdUJBQUF6ckMsS0FBQXd1QyxnQkFHQWQsRUFBQW51QyxVQUFBa3ZDLDBCQUFBLFNB
QUFsRCxHQUNBdnJDLEtBQUFxckMsU0FBQUMsSUFBQUMsSUFHQW1DLEVBQUFudUMsVUFBQWtzQyxz
QkFBQSxXQUNBLE1BQUF6ckMsTUFBQXFyQyxTQUFBSSx1QkFHQWlDLEVBQUFudUMsVUFBQW12Qyxx
QkFBQSxXQUNBMXVDLEtBQUFxdUMsY0FBQXJ1QyxLQUFBcXVDLGFBQUFNLGlCQUNBM3VDLEtBQUFx
dUMsYUFBQSxLQUNBcnVDLEtBQUE0dUMsaUJBQUEzRCxFQUNBanJDLEtBQUFvckMsTUFBQSxLQUNB
cHJDLEtBQUFxckMsU0FBQUMsSUFBQUwsRUFDQWpyQyxLQUFBcXJDLFNBQUFJLHVCQUFBLEdBR0Fp
QyxFQUFBbnVDLFVBQUFzdkMsbUJBQUEsV0FFQSxPQURBLEVBQUF6QixFQUFBcG1CLFNBQUEwbEIs
RUFBQSw0R0FBc0hSLEVBQUEsYUFDdEhsc0MsS0FBQTh1QyxpQkFHQXBCLEVBQUFudUMsVUFBQXl1
QyxtQkFBQSxTQUFBdDZCLEdBQ0ExVCxLQUFBOHVDLGdCQUFBcDdCLEdBR0FnNkIsRUFBQW51QyxV
QUFBMHVDLGFBQUEsV0FDQSxHQUFBOUMsR0FBQVEsRUFBQTNyQyxLQUFBb3JDLE1BQUEyRCxTQUFB
dkIsRUFDQXh0QyxNQUFBcXJDLFNBQUFILEVBQUFDLEVBQUFuckMsS0FBQW9yQyxPQUNBcHJDLEtB
QUFxckMsU0FBQUMsSUFBQXRyQyxLQUFBd1csUUFHQWszQixFQUFBbnVDLFVBQUEydUMsaUJBQUEs
V0FDQSxHQUFBNUIsRUFBQSxDQUlBLEdBQUEwQyxJQUFBaHZDLEtBQUErdEMsVUFBQS90QyxLQUFB
d1csTUFBQXhXLEtBQUEwSyxTQUFBa2lDLEVBQ0E1c0MsTUFBQXF1QyxhQUFBLEdBQUFZLEdBQUFq
b0IsUUFBQWhuQixLQUFBb3JDLE1BQUE0RCxFQUFBaHZDLEtBQUFrdkMsY0FBQWo0QixLQUFBalgs
T0FRQUEsS0FBQTR1QyxpQkFBQTV1QyxLQUFBcXVDLGFBQUFPLGlCQUFBMzNCLEtBQUFqWCxLQUFB
cXVDLGdCQUdBWCxFQUFBbnVDLFVBQUEydkMsY0FBQSxXQUNBbHZDLEtBQUFxckMsU0FBQUMsSUFB
QXRyQyxLQUFBd1csT0FFQXhXLEtBQUFxckMsU0FBQUksdUJBR0F6ckMsS0FBQW12QyxtQkFBQW52
QyxLQUFBb3ZDLHFDQUNBcHZDLEtBQUFxdkMsU0FBQUMsSUFIQXR2QyxLQUFBNHVDLG9CQU9BbEIs
RUFBQW51QyxVQUFBNnZDLHFDQUFBLFdBTUFwdkMsS0FBQW12QyxtQkFBQXp1QyxPQUNBVixLQUFB
NHVDLG9CQUdBbEIsRUFBQW51QyxVQUFBZ3dDLGFBQUEsV0FDQSxNQUFBelMsU0FBQTk4QixLQUFB
cXVDLGVBQUFydUMsS0FBQXF1QyxhQUFBa0IsZ0JBR0E3QixFQUFBbnVDLFVBQUFpd0MsY0FBQSxT
QUFBaDVCLEdBQ0EsS0FBQWsyQixHQUFBTixHQUFBcHNDLEtBQUErdEMsV0FBQS90QyxLQUFBcXVD
LGNBQUEsTUFBQTczQixFQUtBLElBQUFpNUIsR0FBQWhDLEtBQW9DajNCLEVBSXBDLE9BSEFrMkIs
S0FBQStDLEVBQUEvN0IsSUFBQTFULEtBQUFndUMsb0JBQ0E1QixJQUFBcUQsRUFBQXJELEdBQUFw
c0MsS0FBQTh0QyxlQUNBOXRDLEtBQUErdEMsV0FBQS90QyxLQUFBcXVDLGVBQUFvQixFQUFBN0Ms
R0FBQTVzQyxLQUFBcXVDLGNBQ0FvQixHQUdBL0IsRUFBQW51QyxVQUFBa2tDLE9BQUEsV0FDQSxH
QUFBNEgsR0FBQXJyQyxLQUFBcXJDLFFBR0EsSUFGQUEsRUFBQUksdUJBQUEsRUFFQUosRUFBQTVx
QyxNQUNBLEtBQUE0cUMsR0FBQTVxQyxLQUVBLFVBQUFpdkMsRUFBQWhwQyxlQUFBeW1DLEVBQUFu
dEMsS0FBQXd2QyxjQUFBbkUsRUFBQTcwQixTQUlBazNCLEdBQ0tnQyxFQUFBbDZCLFVBdUNMLE9B
ckNBazRCLEdBQUFQLG1CQUNBTyxFQUFBdmMsY0FDQXVjLEVBQUFSLG9CQUNBUSxFQUFBWixlQUNB
WSxFQUFBM2QsVUFBQStjLEdBaUNBLEVBQUE2QyxFQUFBM29CLFNBQUEwbUIsRUFBQVAsSUE3U0F0
dUMsRUFBQWtvQixZQUFBLENBRUEsSUFBQTBtQixHQUFBbnVDLE9BQUF3QyxRQUFBLFNBQUFtQixH
QUFtRCxPQUFBNUQsR0FBQSxFQUFnQkEsRUFBQWdDLFVBQUFDLE9BQXNCakMsSUFBQSxDQUFPLEdB
QUE2RCxHQUFBN0IsVUFBQWhDLEVBQTJCLFFBQUFrRSxLQUFBTCxHQUEwQjVELE9BQUFDLFVBQUFD
LGVBQUFQLEtBQUFpRSxFQUFBSyxLQUF5RE4sRUFBQU0sR0FBQUwsRUFBQUssSUFBaUMsTUFBQU4s
R0FFL09wRSxHQUFBbW9CLFFBQUEwa0IsQ0FFQSxJQUFBa0UsR0FBQWx4QyxFQUFBLEtBRUFpeEMs
RUFBQTlvQixFQUFBK29CLEdBRUFDLEVBQUFueEMsRUFBQSxLQUVBMHVDLEVBQUF2bUIsRUFBQWdw
QixHQUVBSCxFQUFBaHhDLEVBQUEsSUFFQW94QyxFQUFBcHhDLEVBQUEsS0FFQXV3QyxFQUFBcG9C
LEVBQUFpcEIsR0FFQS9DLEVBQUFydUMsRUFBQSxJQVlBbXVDLEVBQUEsRUFDQXlDLE05RW9pUk0s
U0FBU3h3QyxFQUFRRCxFQUFTSCxHK0V2a1JoQyxZQVdBLFNBQUFtb0IsR0FBQUMsR0FBc0MsTUFB
QUEsTUFBQUMsV0FBQUQsR0FBdUNFLFFBQUFGLEdBRTdFLFFBQUFpcEIsR0FBQUMsR0FDQSxnQkFB
QWpCLEVBQUE3UixHQUdBLFFBQUErUyxLQUNBLE1BQUFDLEdBSEEsR0FBQUEsR0FBQUYsRUFBQWpC
LEVBQUE3UixFQU1BLE9BREErUyxHQUFBRSxtQkFBQSxFQUNBRixHQVdBLFFBQUFHLEdBQUFDLEdB
Q0EsY0FBQUEsRUFBQUYsbUJBQUF6dkMsU0FBQTJ2QyxFQUFBRixrQkFBQXJULFFBQUF1VCxFQUFB
RixtQkFBQSxJQUFBRSxFQUFBL3VDLE9BZUEsUUFBQWd2QyxHQUFBRCxFQUFBbkUsR0FDQSxnQkFB
QTZDLEVBQUFqRCxHQUNBLEdBRUF5RSxJQUZBekUsRUFBQTNhLFlBRUEsU0FBQXFmLEVBQUFDLEdB
Q0EsTUFBQUYsR0FBQUosa0JBQUFJLEVBQUFGLFdBQUFHLEVBQUFDLEdBQUFGLEVBQUFGLFdBQUFH
LElBc0JBLE9BbEJBRCxHQUFBSixtQkFBQSxFQUVBSSxFQUFBRixXQUFBLFNBQUFHLEVBQUFDLEdB
Q0FGLEVBQUFGLGFBQ0FFLEVBQUFKLGtCQUFBQyxFQUFBQyxFQUNBLElBQUE3NUIsR0FBQSs1QixF
QUFBQyxFQUFBQyxFQVVBLE9BUkEsa0JBQUFqNkIsS0FDQSs1QixFQUFBRixXQUFBNzVCLEVBQ0Er
NUIsRUFBQUosa0JBQUFDLEVBQUE1NUIsR0FDQUEsRUFBQSs1QixFQUFBQyxFQUFBQyxJQUtBajZC
LEdBR0ErNUIsR0F6RUExeEMsRUFBQWtvQixZQUFBLEVBQ0Fsb0IsRUFBQWt4Qyx5QkFDQWx4QyxF
QUFBdXhDLHVCQUNBdnhDLEVBQUF5eEMsb0JBRUEsSUFBQUksR0FBQWh5QyxFQUFBLEdBRUFtb0Is
R0FBQTZwQixJL0VpcFJNLFNBQVM1eEMsRUFBUUQsRUFBU0gsR2dGMXBSaEMsWUFpQkEsU0FBQW1v
QixHQUFBQyxHQUFzQyxNQUFBQSxNQUFBQyxXQUFBRCxHQUF1Q0UsUUFBQUYsR0FmN0Vqb0IsRUFB
QWtvQixZQUFBLEVBQ0Fsb0IsRUFBQTh4QyxRQUFBOXhDLEVBQUE2c0MsZ0JBQUE3c0MsRUFBQSt4
QyxlQUFBL3hDLEVBQUFneUMsU0FBQW53QyxNQUVBLElBQUFvd0MsR0FBQXB5QyxFQUFBLEtBRUFx
eUMsRUFBQWxxQixFQUFBaXFCLEdBRUFFLEVBQUF0eUMsRUFBQSxJQUVBdXlDLEVBQUFwcUIsRUFB
QW1xQixHQUVBRSxFQUFBeHlDLEVBQUEsS0FFQXl5QyxFQUFBdHFCLEVBQUFxcUIsRUFJQXJ5QyxH
QUFBZ3lDLFNBQUFFLEVBQUEvcEIsUUFDQW5vQixFQUFBK3hDLGVBQUFFLEVBQUFGLGVBQ0EveEMs
RUFBQTZzQyxnQkFBQXVGLEVBQUFqcUIsUUFDQW5vQixFQUFBOHhDLFFBQUFRLEVBQUFucUIsU2hG
Z3FSTSxTQUFTbG9CLEVBQVFELEVBQVNILEdpRnRyUmhDLFlBU0EsU0FBQW1vQixHQUFBQyxHQUFz
QyxNQUFBQSxNQUFBQyxXQUFBRCxHQUF1Q0UsUUFBQUYsR0FQN0Vqb0IsRUFBQWtvQixZQUFBLEVB
Q0Fsb0IsRUFBQW11QyxXQUFBbnVDLEVBQUFvdUMsa0JBQUF2c0MsTUFFQSxJQUFBMHdDLEdBQUEx
eUMsRUFBQSxJQUVBMnlDLEVBQUF4cUIsRUFBQXVxQixFQUlBdnlDLEdBQUFvdUMsa0JBQUFvRSxF
QUFBcnFCLFFBQUFzcUIsT0FDQS9DLGFBQUE4QyxFQUFBcnFCLFFBQUFrSixLQUFBcWhCLFdBQ0E1
QyxlQUFBMEMsRUFBQXJxQixRQUFBa0osS0FBQXFoQixXQUNBM0MsaUJBQUF5QyxFQUFBcnFCLFFB
QUFrSixLQUFBcWhCLFdBQ0FoQyxhQUFBOEIsRUFBQXJxQixRQUFBa0osS0FBQXFoQixhQUdBMXlD
LEVBQUFtdUMsV0FBQXFFLEVBQUFycUIsUUFBQXNxQixPQUNBRSxVQUFBSCxFQUFBcnFCLFFBQUFr
SixLQUFBcWhCLFdBQ0F4QyxTQUFBc0MsRUFBQXJxQixRQUFBa0osS0FBQXFoQixXQUNBL0YsU0FB
QTZGLEVBQUFycUIsUUFBQWtKLEtBQUFxaEIsY2pGNnJSTSxTQUFTenlDLEVBQVFELEVBQVNILEdr
Rmx0UmhDLFlBYUEsU0FBQW1vQixHQUFBQyxHQUFzQyxNQUFBQSxNQUFBQyxXQUFBRCxHQUF1Q0Us
UUFBQUYsR0FFN0UsUUFBQTJxQixHQUFBM2dDLEVBQUFxZ0IsRUFBQSthLElBQ0EsRUFBQXdGLEVB
QUExcUIsU0FBQWxXLEtBQ0EsRUFBQTZnQyxFQUFBM3FCLFNBQUFrbEIsRUFBQSxTQUFBL2EsRUFB
QSxpREFBQXJnQixFQUFBLEtBZkFqUyxFQUFBa29CLFlBQUEsRUFDQWxvQixFQUFBbW9CLFFBQUF5
cUIsQ0FFQSxJQUFBRyxHQUFBbHpDLEVBQUEsSUFFQWd6QyxFQUFBN3FCLEVBQUErcUIsR0FFQTVw
QixFQUFBdHBCLEVBQUEsSUFFQWl6QyxFQUFBOXFCLEVBQUFtQixJbEZndVJNLFNBQVNscEIsRUFB
UUQsRUFBU0gsR0FFL0IsWUFnQkEsU0FBU21vQixHQUF1QkMsR0FBTyxNQUFPQSxJQUFPQSxFQUFJ
QyxXQUFhRCxHQUFRRSxRQUFTRixHQUV2RixRQUFTNlQsR0FBZ0JDLEVBQVVDLEdBQWUsS0FBTUQs
WUFBb0JDLElBQWdCLEtBQU0sSUFBSWo1QixXQUFVLHFDQUVoSCxRQUFTNG9DLEdBQTJCbDBCLEVB
QU1yWCxHQUFRLElBQUtxWCxFQUFRLEtBQU0sSUFBSW0wQixnQkFBZSw0REFBZ0UsUUFBT3hyQyxH
QUF5QixnQkFBVEEsSUFBcUMsa0JBQVRBLEdBQThCcVgsRUFBUHJYLEVBRWxPLFFBQVN5ckMsR0FB
VUMsRUFBVUMsR0FBYyxHQUEwQixrQkFBZkEsSUFBNEMsT0FBZkEsRUFBdUIsS0FBTSxJQUFJaHBD
LFdBQVUsaUVBQW9FZ3BDLEdBQWVELEdBQVNwckMsVUFBWUQsT0FBTzYrQixPQUFPeU0sR0FBY0Es
RUFBV3JyQyxXQUFhdU4sYUFBZWdFLE1BQU82NUIsRUFBVXZELFlBQVksRUFBT3lELFVBQVUsRUFB
TXhELGNBQWMsS0FBZXVELElBQVl0ckMsT0FBT3dyQyxlQUFpQnhyQyxPQUFPd3JDLGVBQWVILEVB
QVVDLEdBQWNELEVBQVNJLFVBQVlILEdBcEJqZXRyQyxPQUFPNm5DLGVBQWV0b0MsRUFBUyxjQUM3
QmlTLE9BQU8sR0FHVCxJQUFJK2dDLEdBQWUsV0FBYyxRQUFTQyxHQUFpQjd1QyxFQUFRdVQsR0FB
UyxJQUFLLEdBQUluWCxHQUFJLEVBQUdBLEVBQUltWCxFQUFNbFYsT0FBUWpDLElBQUssQ0FBRSxH
QUFJMm5DLEdBQWF4d0IsRUFBTW5YLEVBQUkybkMsR0FBV0ksV0FBYUosRUFBV0ksYUFBYyxFQUFP
SixFQUFXSyxjQUFlLEVBQVUsU0FBV0wsS0FBWUEsRUFBVzZELFVBQVcsR0FBTXZyQyxPQUFPNm5D
LGVBQWVsa0MsRUFBUStqQyxFQUFXempDLElBQUt5akMsSUFBaUIsTUFBTyxVQUFVbk0sRUFBYWtY
LEVBQVlDLEdBQWlKLE1BQTlIRCxJQUFZRCxFQUFpQmpYLEVBQVl0N0IsVUFBV3d5QyxHQUFpQkMs
R0FBYUYsRUFBaUJqWCxFQUFhbVgsR0FBcUJuWCxNbUZudlJqaUI2VSxFQUFBaHhDLEVBQUEsSW5G
dXZSS3V6QyxFQUFVcHJCLEVBQXVCNm9CLEdtRnR2UnRDd0MsRUFBQXh6QyxFQUFBLEluRjB2Ukt5
ekMsRUFBZXRyQixFQUF1QnFyQixHbUZ4dlJ0QkUsRW5Ga3dSQSxTQUFVekUsR0FHNUIsUUFBU3lF
LEtBQ1AsR0FBSXRHLEdBRUF1RyxFQUFPekUsRUFBTzBFLENBRWxCM1gsR0FBZ0IzNkIsS0FBTW95
QyxFQUV0QixLQUFLLEdBQUlHLEdBQU9seEMsVUFBVUMsT0FBUTVCLEVBQU9vWCxNQUFNeTdCLEdB
QU9DLEVBQU8sRUFBR0EsRUFBT0QsRUFBTUMsSUFDM0U5eUMsRUFBSzh5QyxHQUFRbnhDLFVBQVVt
eEMsRUFHekIsT0FBZUgsR0FBU3pFLEVBQVFwRCxFQUEyQnhxQyxNQUFPOHJDLEVBQU9zRyxFQUFj
ckgsV0FBYXpyQyxPQUFPbXpDLGVBQWVMLElBQWdCbnpDLEtBQUtjLE1BQU0rckMsR0FBTzlyQyxN
QUFNQyxPQUFPUCxLQUFpQmt1QyxFbUZ2d1I3TEMsT0FDRTErQixLQUFNeStCLEVBQUtwM0IsTUFB
TXJILE1BQVEsSW5Gd3dSckJ5K0IsRW1GcndSTjhFLGFBQWUsU0FBQXB5QyxHQUNiLEdBQU02TyxH
QUFPN08sRUFBRTJDLE9BQU82TixNQUFNNmhDLE1BQ1osTUFBWnJ5QyxFQUFFc3lDLFFBQ0poRixF
QUFLcDNCLE1BQU1xOEIsT0FBTzFqQyxHQUNkeStCLEVBQUtwM0IsTUFBTXM4QixTQUNibEYsRUFB
S3lCLFVBQVdsZ0MsS0FBTSxPbkZ3d1J0QnkrQixFbUZud1JObUYsYUFBZSxTQUFBenlDLEdBQ2Jz
dEMsRUFBS3lCLFVBQVdsZ0MsS0FBTTdPLEVBQUUyQyxPQUFPNk4sU25Gb3dSM0I4OEIsRW1GandS
Tm9GLFdBQWEsU0FBQTF5QyxHQUNOc3RDLEVBQUtwM0IsTUFBTXM4QixTQUNkbEYsRUFBS3AzQixN
QUFNcThCLE9BQU92eUMsRUFBRTJDLE9BQU82TixRbkZtdlJyQndoQyxFQWdCSkQsRUFBUTdILEVB
QTJCb0QsRUFBTzBFLEdBb0IvQyxNQWpEQTVILEdBQVUwSCxFQUFlekUsR0FnQ3pCa0UsRUFBYU8s
SUFDWDd1QyxJQUFLLFNBQ0x1TixNQUFPLFdtRm53UlIsTUFDRW1oQyxHQUFBanJCLFFBQUF0Z0Is
Y0FBQSxTQUFPdXNDLFdBQ0wsRUFBQWQsRUFBQW5yQixVQUNFa3NCLEtBQU1sekMsS0FBS3dXLE1B
QU0yOEIsUUFDakJDLFdBQVlwekMsS0FBS3dXLE1BQU1zOEIsVUFFekJucEMsS0FBSyxPQUNMMHBD
LFlBQWFyekMsS0FBS3dXLE1BQU02OEIsWUFDeEJDLFVBQVUsT0FDVnhpQyxNQUFPOVEsS0FBSzZ0
QyxNQUFNMStCLEtBQ2xCb2tDLE9BQVF2ekMsS0FBS2d6QyxXQUNiN2pCLFNBQVVudkIsS0FBSyt5
QyxhQUNmUyxVQUFXeHpDLEtBQUsweUMsbUJuRnN3UmROLEdBQ1AxQyxFQUFPbDZCLFVtRnJ6Ulc0
OEIsR0FDWnJpQixXQUNMOGlCLE9BQVFuRCxFQUFBLzVCLFVBQVV1YSxLQUFLcWhCLFdBQ3ZCcGlD
LEtBQU11Z0MsRUFBQS81QixVQUFVNFAsT0FDaEI4dEIsWUFBYTNELEVBQUEvNUIsVUFBVTRQLE9B
Q3ZCNHRCLFFBQVN6RCxFQUFBLzVCLFVBQVU4OUIsS0FDbkJYLFFBQVNwRCxFQUFBLzVCLFVBQVU4
OUIsTW5Gd3pSdEI1MEMsRUFBUW1vQixRbUY5elJZb3JCLEduRmswUmYsU0FBU3R6QyxFQUFRRCxH
QUV0QixZQUVBUyxRQUFPNm5DLGVBQWV0b0MsRUFBUyxjQUM3QmlTLE9BQU8sR29GMTBSRzRpQyxZ
QUFXLFdBQ1hDLGNBQWMsY0FDZEMsWUFBWSxZQUNaQyxnQkFBZ0IsZ0JBQ2hCQyxlQUFlLGVBQ2ZD
LGtCQUFrQixtQnBGZzFSekIsU0FBU2oxQyxFQUFRRCxHQUV0QixZQUVBUyxRQUFPNm5DLGVBQWV0
b0MsRUFBUyxjQUM3QmlTLE9BQU8sR3FGMTFSR2tqQyxZQUFXLFdBQ1hDLGlCQUFpQixpQkFDakJD
LGNBQWMsZXJGZzJSckIsU0FBU3AxQyxFQUFRRCxHc0Z2MVJ2QixRQUFBczFDLEtBQ0EsU0FBQXh6
QyxPQUFBLG1DQUVBLFFBQUF5ekMsS0FDQSxTQUFBenpDLE9BQUEscUNBc0JBLFFBQUEwekMsR0FB
QUMsR0FDQSxHQUFBQyxJQUFBQyxXQUVBLE1BQUFBLFlBQUFGLEVBQUEsRUFHQSxLQUFBQyxJQUFB
SixJQUFBSSxJQUFBQyxXQUVBLE1BREFELEdBQUFDLFdBQ0FBLFdBQUFGLEVBQUEsRUFFQSxLQUVB
LE1BQUFDLEdBQUFELEVBQUEsR0FDSyxNQUFBaDBDLEdBQ0wsSUFFQSxNQUFBaTBDLEdBQUF0MUMs
S0FBQSxLQUFBcTFDLEVBQUEsR0FDUyxNQUFBaDBDLEdBRVQsTUFBQWkwQyxHQUFBdDFDLEtBQUFl
LEtBQUFzMEMsRUFBQSxLQU1BLFFBQUFHLEdBQUFDLEdBQ0EsR0FBQUMsSUFBQUMsYUFFQSxNQUFB
QSxjQUFBRixFQUdBLEtBQUFDLElBQUFQLElBQUFPLElBQUFDLGFBRUEsTUFEQUQsR0FBQUMsYUFD
QUEsYUFBQUYsRUFFQSxLQUVBLE1BQUFDLEdBQUFELEdBQ0ssTUFBQXAwQyxHQUNMLElBRUEsTUFB
QXEwQyxHQUFBMTFDLEtBQUEsS0FBQXkxQztDQUNTLE1BQUFwMEMsR0FHVCxNQUFBcTBDLEdBQUEx
MUMsS0FBQWUsS0FBQTAwQyxLQVlBLFFBQUFHLEtBQ0FDLEdBQUFDLElBR0FELEdBQUEsRUFDQUMs
RUFBQXp6QyxPQUNBMEssRUFBQStvQyxFQUFBOTBDLE9BQUErTCxHQUVBZ3BDLEtBRUFocEMsRUFB
QTFLLFFBQ0EyekMsS0FJQSxRQUFBQSxLQUNBLElBQUFILEVBQUEsQ0FHQSxHQUFBSSxHQUFBYixF
QUFBUSxFQUNBQyxJQUFBLENBR0EsS0FEQSxHQUFBOXJDLEdBQUFnRCxFQUFBMUssT0FDQTBILEdB
QUEsQ0FHQSxJQUZBK3JDLEVBQUEvb0MsRUFDQUEsT0FDQWdwQyxFQUFBaHNDLEdBQ0ErckMsR0FD
QUEsRUFBQUMsR0FBQTFKLEtBR0EwSixNQUNBaHNDLEVBQUFnRCxFQUFBMUssT0FFQXl6QyxFQUFB
LEtBQ0FELEdBQUEsRUFDQUwsRUFBQVMsSUFpQkEsUUFBQUMsR0FBQWIsRUFBQWMsR0FDQXAxQyxL
QUFBczBDLE1BQ0F0MEMsS0FBQW8xQyxRQVlBLFFBQUFuSyxNQWhLQSxHQU9Bc0osR0FDQUksRUFS
QVUsRUFBQXYyQyxFQUFBRCxZQWdCQSxXQUNBLElBRUEwMUMsRUFEQSxrQkFBQUMsWUFDQUEsV0FF
QUwsRUFFSyxNQUFBN3pDLEdBQ0xpMEMsRUFBQUosRUFFQSxJQUVBUSxFQURBLGtCQUFBQyxjQUNB
QSxhQUVBUixFQUVLLE1BQUE5ekMsR0FDTHEwQyxFQUFBUCxLQXVEQSxJQUVBVyxHQUZBL29DLEtB
Q0E4b0MsR0FBQSxFQUVBRSxJQXlDQUssR0FBQUMsU0FBQSxTQUFBaEIsR0FDQSxHQUFBNTBDLEdB
QUEsR0FBQW9YLE9BQUF6VixVQUFBQyxPQUFBLEVBQ0EsSUFBQUQsVUFBQUMsT0FBQSxFQUNBLE9B
QUFqQyxHQUFBLEVBQXVCQSxFQUFBZ0MsVUFBQUMsT0FBc0JqQyxJQUM3Q0ssRUFBQUwsRUFBQSxH
QUFBZ0MsVUFBQWhDLEVBR0EyTSxHQUFBdkcsS0FBQSxHQUFBMHZDLEdBQUFiLEVBQUE1MEMsSUFD
QSxJQUFBc00sRUFBQTFLLFFBQUF3ekMsR0FDQVQsRUFBQVksSUFTQUUsRUFBQTUxQyxVQUFBK3JD
LElBQUEsV0FDQXRyQyxLQUFBczBDLElBQUF2MEMsTUFBQSxLQUFBQyxLQUFBbzFDLFFBRUFDLEVB
QUFFLE1BQUEsVUFDQUYsRUFBQUcsU0FBQSxFQUNBSCxFQUFBSSxPQUNBSixFQUFBSyxRQUNBTCxF
QUFBdi9CLFFBQUEsR0FDQXUvQixFQUFBTSxZQUlBTixFQUFBTyxHQUFBM0ssRUFDQW9LLEVBQUFR
LFlBQUE1SyxFQUNBb0ssRUFBQVMsS0FBQTdLLEVBQ0FvSyxFQUFBVSxJQUFBOUssRUFDQW9LLEVB
QUFXLGVBQUEvSyxFQUNBb0ssRUFBQVksbUJBQUFoTCxFQUNBb0ssRUFBQWEsS0FBQWpMLEVBRUFv
SyxFQUFBYyxRQUFBLFNBQUFyMUMsR0FDQSxTQUFBSCxPQUFBLHFDQUdBMDBDLEVBQUFlLElBQUEs
V0FBMkIsV0FDM0JmLEVBQUFnQixNQUFBLFNBQUFDLEdBQ0EsU0FBQTMxQyxPQUFBLG1DQUVBMDBD
LEVBQUFrQixNQUFBLFdBQTRCLFd0RnkyUnRCLFNBQVN6M0MsRUFBUUQsRUFBU0gsR3VGNWhTaEMs
WUFJQSxTQUFBdXNDLE1BcUJBLFFBQUF1TCxHQUFBMXZCLEdBQ0EsSUFDQSxNQUFBQSxHQUFBMnZC
LEtBQ0csTUFBQUMsR0FFSCxNQURBQyxHQUFBRCxFQUNBRSxHQUlBLFFBQUFDLEdBQUFqM0MsRUFB
QUMsR0FDQSxJQUNBLE1BQUFELEdBQUFDLEdBQ0csTUFBQTYyQyxHQUVILE1BREFDLEdBQUFELEVB
Q0FFLEdBR0EsUUFBQUUsR0FBQWwzQyxFQUFBQyxFQUFBQyxHQUNBLElBQ0FGLEVBQUFDLEVBQUFD
LEdBQ0csTUFBQTQyQyxHQUVILE1BREFDLEdBQUFELEVBQ0FFLEdBTUEsUUFBQUcsR0FBQW4zQyxH
QUNBLG1CQUFBSSxNQUNBLFNBQUE0QixXQUFBLHVDQUVBLHNCQUFBaEMsR0FDQSxTQUFBZ0MsV0FB
QSxpQkFFQTVCLE1BQUFnM0MsSUFBQSxFQUNBaDNDLEtBQUFpM0MsSUFBQSxFQUNBajNDLEtBQUFr
M0MsSUFBQSxLQUNBbDNDLEtBQUFtM0MsSUFBQSxLQUNBdjNDLElBQUFxckMsR0FDQW1NLEVBQUF4
M0MsRUFBQUksTUFlQSxRQUFBcTNDLEdBQUEvZ0MsRUFBQWdoQyxFQUFBQyxHQUNBLFVBQUFqaEMs
R0FBQXhKLFlBQUEsU0FBQTBxQyxFQUFBQyxHQUNBLEdBQUFscUIsR0FBQSxHQUFBd3BCLEdBQUE5
TCxFQUNBMWQsR0FBQWtwQixLQUFBZSxFQUFBQyxHQUNBOTBCLEVBQUFyTSxFQUFBLEdBQUFvaEMs
R0FBQUosRUFBQUMsRUFBQWhxQixNQUdBLFFBQUE1SyxHQUFBck0sRUFBQXFoQyxHQUNBLFNBQUFy
aEMsRUFBQTJnQyxLQUNBM2dDLElBQUE0Z0MsR0FLQSxPQUhBSCxHQUFBYSxLQUNBYixFQUFBYSxJ
QUFBdGhDLEdBRUEsSUFBQUEsRUFBQTJnQyxJQUNBLElBQUEzZ0MsRUFBQTBnQyxLQUNBMWdDLEVB
QUEwZ0MsSUFBQSxPQUNBMWdDLEVBQUE2Z0MsSUFBQVEsSUFHQSxJQUFBcmhDLEVBQUEwZ0MsS0FD
QTFnQyxFQUFBMGdDLElBQUEsT0FDQTFnQyxFQUFBNmdDLEtBQUE3Z0MsRUFBQTZnQyxJQUFBUSxT
QUdBcmhDLEdBQUE2Z0MsSUFBQTF4QyxLQUFBa3lDLE9BR0FFLEdBQUF2aEMsRUFBQXFoQyxHQUdB
LFFBQUFFLEdBQUF2aEMsRUFBQXFoQyxHQUNBbHRDLEVBQUEsV0FDQSxHQUFBdTdCLEdBQUEsSUFB
QTF2QixFQUFBMmdDLElBQUFVLEVBQUFMLFlBQUFLLEVBQUFKLFVBQ0EsV0FBQXZSLEVBTUEsWUFM
QSxJQUFBMXZCLEVBQUEyZ0MsSUFDQU8sRUFBQUcsRUFBQUcsUUFBQXhoQyxFQUFBNGdDLEtBRUFP
LEVBQUFFLEVBQUFHLFFBQUF4aEMsRUFBQTRnQyxLQUlBLElBQUFseUIsR0FBQTZ4QixFQUFBN1Es
RUFBQTF2QixFQUFBNGdDLElBQ0FseUIsS0FBQTR4QixFQUNBYSxFQUFBRSxFQUFBRyxRQUFBbkIs
R0FFQWEsRUFBQUcsRUFBQUcsUUFBQTl5QixLQUlBLFFBQUF3eUIsR0FBQWxoQyxFQUFBeWhDLEdB
RUEsR0FBQUEsSUFBQXpoQyxFQUNBLE1BQUFtaEMsR0FDQW5oQyxFQUNBLEdBQUExVSxXQUFBLDZD
QUdBLElBQ0FtMkMsSUFDQSxnQkFBQUEsSUFBQSxrQkFBQUEsSUFDQSxDQUNBLEdBQUF0QixHQUFB
RCxFQUFBdUIsRUFDQSxJQUFBdEIsSUFBQUcsRUFDQSxNQUFBYSxHQUFBbmhDLEVBQUFxZ0MsRUFF
QSxJQUNBRixJQUFBbmdDLEVBQUFtZ0MsTUFDQXNCLFlBQUFoQixHQUtBLE1BSEF6Z0MsR0FBQTJn
QyxJQUFBLEVBQ0EzZ0MsRUFBQTRnQyxJQUFBYSxNQUNBQyxHQUFBMWhDLEVBRUssc0JBQUFtZ0Ms
R0FFTCxXQURBVyxHQUFBWCxFQUFBeC9CLEtBQUE4Z0MsR0FBQXpoQyxHQUlBQSxFQUFBMmdDLElB
QUEsRUFDQTNnQyxFQUFBNGdDLElBQUFhLEVBQ0FDLEVBQUExaEMsR0FHQSxRQUFBbWhDLEdBQUFu
aEMsRUFBQXloQyxHQUNBemhDLEVBQUEyZ0MsSUFBQSxFQUNBM2dDLEVBQUE0Z0MsSUFBQWEsRUFD
QWhCLEVBQUFrQixLQUNBbEIsRUFBQWtCLElBQUEzaEMsRUFBQXloQyxHQUVBQyxFQUFBMWhDLEdB
RUEsUUFBQTBoQyxHQUFBMWhDLEdBS0EsR0FKQSxJQUFBQSxFQUFBMGdDLE1BQ0FyMEIsRUFBQXJN
LElBQUE2Z0MsS0FDQTdnQyxFQUFBNmdDLElBQUEsTUFFQSxJQUFBN2dDLEVBQUEwZ0MsSUFBQSxD
QUNBLE9BQUEzM0MsR0FBQSxFQUFtQkEsRUFBQWlYLEVBQUE2Z0MsSUFBQTcxQyxPQUFxQmpDLElB
Q3hDc2pCLEVBQUFyTSxJQUFBNmdDLElBQUE5M0MsR0FFQWlYLEdBQUE2Z0MsSUFBQSxNQUlBLFFB
QUFPLEdBQUFKLEVBQUFDLEVBQUFPLEdBQ0E5M0MsS0FBQXMzQyxZQUFBLGtCQUFBQSxLQUFBLEtB
Q0F0M0MsS0FBQXUzQyxXQUFBLGtCQUFBQSxLQUFBLEtBQ0F2M0MsS0FBQTgzQyxVQVNBLFFBQUFW
LEdBQUF4M0MsRUFBQWs0QyxHQUNBLEdBQUEzTixJQUFBLEVBQ0E1YyxFQUFBdXBCLEVBQUFsM0Ms
RUFBQSxTQUFBa1IsR0FDQXE1QixJQUNBQSxHQUFBLEVBQ0FxTixFQUFBTSxFQUFBaG5DLEtBQ0cs
U0FBQW9uQyxHQUNIL04sSUFDQUEsR0FBQSxFQUNBc04sRUFBQUssRUFBQUksS0FFQS9OLElBQUE1
YyxJQUFBcXBCLElBQ0F6TSxHQUFBLEVBQ0FzTixFQUFBSyxFQUFBbkIsSUFoTkEsR0FBQWxzQyxH
QUFBL0wsRUFBQSxLQXFCQWk0QyxFQUFBLEtBQ0FDLElBMkJBOTNDLEdBQUFELFFBQUFrNEMsRUFn
QkFBLEVBQUFhLElBQUEsS0FDQWIsRUFBQWtCLElBQUEsS0FDQWxCLEVBQUFvQixJQUFBbE4sRUFF
QThMLEVBQUF4M0MsVUFBQWszQyxLQUFBLFNBQUFhLEVBQUFDLEdBQ0EsR0FBQXYzQyxLQUFBOE0s
Y0FBQWlxQyxFQUNBLE1BQUFNLEdBQUFyM0MsS0FBQXMzQyxFQUFBQyxFQUVBLElBQUFocUIsR0FB
QSxHQUFBd3BCLEdBQUE5TCxFQUVBLE9BREF0b0IsR0FBQTNpQixLQUFBLEdBQUEwM0MsR0FBQUos
RUFBQUMsRUFBQWhxQixJQUNBQSxJdkYwcVNNLFNBQVN6dUIsRUFBUUQsRUFBU0gsR3dGN3VTaEMs
WUFlQSxTQUFBMDVDLEdBQUE1aEMsRUFBQTlMLEVBQUEydEMsR0FDQXI0QyxLQUFBd1csUUFDQXhX
LEtBQUEwSyxVQUNBMUssS0FBQXM0QyxLQUFBMTdCLEVBR0E1YyxLQUFBcTRDLFdBQUFFLEVBeUZB
LFFBQUFDLEdBQUFoaUMsRUFBQTlMLEVBQUEydEMsR0FFQXI0QyxLQUFBd1csUUFDQXhXLEtBQUEw
SyxVQUNBMUssS0FBQXM0QyxLQUFBMTdCLEVBR0E1YyxLQUFBcTRDLFdBQUFFLEVBR0EsUUFBQUUs
TUF0SEEsR0FBQW56QyxHQUFBNUcsRUFBQSxJQUNBbU0sRUFBQW5NLEVBQUEsR0FFQTY1QyxFQUFB
NzVDLEVBQUEsSUFHQWtlLEdBREFsZSxFQUFBLElBQ0FBLEVBQUEsSUFDQUEsR0FBQSxHQUNBQSxF
QUFBLElBY0EwNUMsR0FBQTc0QyxVQUFBaWtDLG9CQTJCQTRVLEVBQUE3NEMsVUFBQTh2QyxTQUFB
LFNBQUFsZCxFQUFBMXBCLEdBQ0EsZ0JBQUEwcEIsSUFBQSxrQkFBQUEsSUFBQSxNQUFBQSxFQUFB
N3NCLEVBQUEsYUFDQXRGLEtBQUFxNEMsUUFBQW5tQixnQkFBQWx5QixLQUFBbXlCLEdBQ0ExcEIs
R0FDQXpJLEtBQUFxNEMsUUFBQTVtQixnQkFBQXp4QixLQUFBeUksRUFBQSxhQWtCQTJ2QyxFQUFB
NzRDLFVBQUFpdkMsWUFBQSxTQUFBL2xDLEdBQ0F6SSxLQUFBcTRDLFFBQUF6bUIsbUJBQUE1eEIs
TUFDQXlJLEdBQ0F6SSxLQUFBcTRDLFFBQUE1bUIsZ0JBQUF6eEIsS0FBQXlJLEVBQUEsZUE2Q0Fn
d0MsR0FBQWw1QyxVQUFBNjRDLEVBQUE3NEMsVUFDQWk1QyxFQUFBajVDLFVBQUEsR0FBQWs1QyxH
QUNBRCxFQUFBajVDLFVBQUF1TixZQUFBMHJDLEVBRUEzdEMsRUFBQTJ0QyxFQUFBajVDLFVBQUE2
NEMsRUFBQTc0QyxXQUNBaTVDLEVBQUFqNUMsVUFBQW01QyxzQkFBQSxFQUVBNTVDLEVBQUFELFNB
Q0EyVyxVQUFBNGlDLEVBQ0EzaUMsY0FBQStpQyxJeEY4dlNNLFNBQVMxNUMsRUFBUUQsRUFBU0gs
R3lGLzNTaEMsWUFTQSxTQUFBaTZDLEdBQUEvNEMsR0FFQSxHQUFBMnBCLEdBQUFHLFNBQUFucUIs
VUFBQThHLFNBQ0E3RyxFQUFBRixPQUFBQyxVQUFBQyxlQUNBbzVDLEVBQUFqZCxPQUFBLElBQUFw
UyxFQUVBdHFCLEtBQUFPLEdBRUFxQixRQUFBLHNCQUE2QixRQUU3QkEsUUFBQSxzRUFDQSxLQUNB
LEdBQUFxQyxHQUFBcW1CLEVBQUF0cUIsS0FBQVcsRUFDQSxPQUFBZzVDLEdBQUFwb0MsS0FBQXRO
LEdBQ0csTUFBQUwsR0FDSCxVQThGQSxRQUFBZzJDLEdBQUE5NUMsR0FDQSxHQUFBKzVDLEdBQUFD
LEVBQUFoNkMsRUFDQSxJQUFBKzVDLEVBQUEsQ0FDQSxHQUFBRSxHQUFBRixFQUFBRSxRQUVBQyxH
QUFBbDZDLEdBQ0FpNkMsRUFBQXQyQyxRQUFBbTJDLElBSUEsUUFBQUssR0FBQXA0QyxFQUFBb0Ms
RUFBQWkyQyxHQUNBLG1CQUFBcjRDLEdBQUEsWUFBQW9DLEVBQUEsUUFBQUEsRUFBQWsyQyxTQUFB
djRDLFFBQUEsb0JBQUFxQyxFQUFBbTJDLFdBQUEsSUFBQUYsRUFBQSxnQkFBQUEsRUFBQSxRQUdB
LFFBQUFuTixHQUFBdjFCLEdBQ0EsYUFBQUEsRUFDQSxTQUNHLGdCQUFBQSxJQUFBLGdCQUFBQSxH
QUNILFFBQ0csZ0JBQUFBLEdBQUE5TSxLQUNIOE0sRUFBQTlNLEtBRUE4TSxFQUFBOU0sS0FBQXdu
QixhQUFBMWEsRUFBQTlNLEtBQUE3SSxNQUFBLFVBSUEsUUFBQXc0QyxHQUFBdjZDLEdBQ0EsR0FH
QW82QyxHQUhBcjRDLEVBQUF5NEMsRUFBQXZOLGVBQUFqdEMsR0FDQTBYLEVBQUE4aUMsRUFBQUMs
V0FBQXo2QyxHQUNBMDZDLEVBQUFGLEVBQUFHLFdBQUEzNkMsRUFNQSxPQUpBMDZDLEtBQ0FOLEVB
QUFJLEVBQUF2TixlQUFBeU4sSUFHQVAsRUFBQXA0QyxFQUFBMlYsS0FBQWMsUUFBQTRoQyxHQXZK
QSxHQXNDQVEsR0FDQVosRUFDQUUsRUFDQVcsRUFDQUMsRUFDQUMsRUFDQUMsRUE1Q0F6MEMsRUFB
QTVHLEVBQUEsSUFFQWlRLEVBQUFqUSxFQUFBLElBd0JBczdDLEdBdEJBdDdDLEVBQUEsR0FDQUEs
RUFBQSxHQXVCQSxrQkFBQW9ZLE9BQUEzVCxNQUVBLGtCQUFBODJDLE1BQUF0QixFQUFBc0IsTUFF
QSxNQUFBQSxJQUFBMTZDLFdBQUEsa0JBQUEwNkMsS0FBQTE2QyxVQUFBcUQsTUFBQSsxQyxFQUFB
c0IsSUFBQTE2QyxVQUFBcUQsT0FFQSxrQkFBQXMzQyxNQUFBdkIsRUFBQXVCLE1BRUEsTUFBQUEs
SUFBQTM2QyxXQUFBLGtCQUFBMjZDLEtBQUEzNkMsVUFBQXFELE1BQUErMUMsRUFBQXVCLElBQUEz
NkMsVUFBQXFELE1BVUEsSUFBQW8zQyxFQUFBLENBQ0EsR0FBQUcsR0FBQSxHQUFBRixLQUNBRyxF
QUFBLEdBQUFGLElBRUFQLEdBQUEsU0FBQTU2QyxFQUFBKzVDLEdBQ0FxQixFQUFBbCtCLElBQUFs
ZCxFQUFBKzVDLElBRUFDLEVBQUEsU0FBQWg2QyxHQUNBLE1BQUFvN0MsR0FBQXArQixJQUFBaGQs
SUFFQWs2QyxFQUFBLFNBQUFsNkMsR0FDQW83QyxFQUFBLE9BQUFwN0MsSUFFQTY2QyxFQUFBLFdB
Q0EsTUFBQTlpQyxPQUFBM1QsS0FBQWczQyxFQUFBdjNDLFNBR0FpM0MsRUFBQSxTQUFBOTZDLEdB
Q0FxN0MsRUFBQUMsSUFBQXQ3QyxJQUVBKzZDLEVBQUEsU0FBQS82QyxHQUNBcTdDLEVBQUEsT0FB
QXI3QyxJQUVBZzdDLEVBQUEsV0FDQSxNQUFBampDLE9BQUEzVCxLQUFBaTNDLEVBQUF4M0MsYUFF
QyxDQUNELEdBQUEwM0MsTUFDQUMsS0FJQUMsRUFBQSxTQUFBejdDLEdBQ0EsVUFBQUEsR0FFQTA3
QyxFQUFBLFNBQUFsM0MsR0FDQSxNQUFBbTNDLFVBQUFuM0MsRUFBQW8zQyxPQUFBLE9BR0FoQixH
QUFBLFNBQUE1NkMsRUFBQSs1QyxHQUNBLEdBQUF2MUMsR0FBQWkzQyxFQUFBejdDLEVBQ0F1N0Ms
R0FBQS8yQyxHQUFBdTFDLEdBRUFDLEVBQUEsU0FBQWg2QyxHQUNBLEdBQUF3RSxHQUFBaTNDLEVB
QUF6N0MsRUFDQSxPQUFBdTdDLEdBQUEvMkMsSUFFQTAxQyxFQUFBLFNBQUFsNkMsR0FDQSxHQUFB
d0UsR0FBQWkzQyxFQUFBejdDLFNBQ0F1N0MsR0FBQS8yQyxJQUVBcTJDLEVBQUEsV0FDQSxNQUFB
dDZDLFFBQUFzRCxLQUFBMDNDLEdBQUFqNEMsSUFBQW80QyxJQUdBWixFQUFBLFNBQUE5NkMsR0FD
QSxHQUFBd0UsR0FBQWkzQyxFQUFBejdDLEVBQ0F3N0MsR0FBQWgzQyxJQUFBLEdBRUF1MkMsRUFB
QSxTQUFBLzZDLEdBQ0EsR0FBQXdFLEdBQUFpM0MsRUFBQXo3QyxTQUNBdzdDLEdBQUFoM0MsSUFF
QXcyQyxFQUFBLFdBQ0EsTUFBQXo2QyxRQUFBc0QsS0FBQTIzQyxHQUFBbDRDLElBQUFvNEMsSUFJ
QSxHQUFBRyxNQXdDQXJCLEdBQ0FzQixjQUFBLFNBQUE5N0MsRUFBQSs3QyxHQUNBLEdBQUFoQyxH
QUFBQyxFQUFBaDZDLEVBQ0ErNUMsR0FBQSxPQUFBeHpDLEVBQUEsT0FDQXd6QyxFQUFBRSxTQUFB
OEIsQ0FFQSxRQUFBejdDLEdBQUEsRUFBbUJBLEVBQUF5N0MsRUFBQXg1QyxPQUF5QmpDLElBQUEs
Q0FDNUMsR0FBQTA3QyxHQUFBRCxFQUFBejdDLEdBQ0EyN0MsRUFBQWpDLEVBQUFnQyxFQUNBQyxH
QUFBLE9BQUExMUMsRUFBQSxPQUNBLE1BQUEwMUMsRUFBQWhDLFVBQUEsZ0JBQUFnQyxHQUFBdmtD
LFNBQUEsTUFBQXVrQyxFQUFBdmtDLFFBQUFuUixFQUFBLGNBQ0EwMUMsRUFBQXhwQixVQUFBLE9B
QUFsc0IsRUFBQSxNQUNBLE1BQUEwMUMsRUFBQUMsV0FDQUQsRUFBQUMsU0FBQWw4QyxHQUtBaThD
LEVBQUFDLFdBQUFsOEMsRUFBQXVHLEVBQUEsTUFBQXkxQyxFQUFBQyxFQUFBQyxTQUFBbDhDLEdB
QUEsU0FHQW04Qyx1QkFBQSxTQUFBbjhDLEVBQUEwWCxFQUFBd2tDLEdBQ0EsR0FBQW5DLElBQ0Fy
aUMsVUFDQXdrQyxXQUNBOXJDLEtBQUEsS0FDQTZwQyxZQUNBeG5CLFdBQUEsRUFDQTJwQixZQUFB
LEVBRUF4QixHQUFBNTZDLEVBQUErNUMsSUFFQXNDLHdCQUFBLFNBQUFyOEMsRUFBQTBYLEdBQ0Es
R0FBQXFpQyxHQUFBQyxFQUFBaDZDLEVBQ0ErNUMsTUFBQXRuQixZQUtBc25CLEVBQUFyaUMsWUFF
QTRrQyxpQkFBQSxTQUFBdDhDLEdBQ0EsR0FBQSs1QyxHQUFBQyxFQUFBaDZDLEVBQ0ErNUMsR0FB
QSxPQUFBeHpDLEVBQUEsT0FDQXd6QyxFQUFBdG5CLFdBQUEsQ0FDQSxJQUFBOHBCLEdBQUEsSUFB
QXhDLEVBQUFtQyxRQUNBSyxJQUNBekIsRUFBQTk2QyxJQUdBdzhDLGtCQUFBLFNBQUF4OEMsR0FD
QSxHQUFBKzVDLEdBQUFDLEVBQUFoNkMsRUFDQSs1QyxNQUFBdG5CLFdBS0FzbkIsRUFBQXFDLGVB
RUFLLG1CQUFBLFNBQUF6OEMsR0FDQSxHQUFBKzVDLEdBQUFDLEVBQUFoNkMsRUFDQSxJQUFBKzVD
LEVBQUEsQ0FNQUEsRUFBQXRuQixXQUFBLENBQ0EsSUFBQThwQixHQUFBLElBQUF4QyxFQUFBbUMs
UUFDQUssSUFDQXhCLEVBQUEvNkMsR0FHQTY3QyxFQUFBbjFDLEtBQUExRyxJQUVBMDhDLHlCQUFB
LFdBQ0EsSUFBQWxDLEVBQUFtQyxnQkFBQSxDQUtBLE9BQUFyOEMsR0FBQSxFQUFtQkEsRUFBQXU3
QyxFQUFBdDVDLE9BQXlCakMsSUFBQSxDQUM1QyxHQUFBTixHQUFBNjdDLEVBQUF2N0MsRUFDQXc1
QyxHQUFBOTVDLEdBRUE2N0MsRUFBQXQ1QyxPQUFBLElBRUFrd0IsVUFBQSxTQUFBenlCLEdBQ0Es
R0FBQSs1QyxHQUFBQyxFQUFBaDZDLEVBQ0EsU0FBQSs1QyxLQUFBdG5CLFdBRUFtcUIsd0JBQUEs
U0FBQUMsR0FDQSxHQUFBL1QsR0FBQSxFQUNBLElBQUErVCxFQUFBLENBQ0EsR0FBQTk2QyxHQUFB
a3JDLEVBQUE0UCxHQUNBcmxDLEVBQUFxbEMsRUFBQWpsQyxNQUNBa3hCLElBQUFxUixFQUFBcDRD
LEVBQUE4NkMsRUFBQXJrQyxRQUFBaEIsS0FBQTFNLFdBR0EsR0FBQWd5QyxHQUFBbHRDLEVBQUFD
LFFBQ0E3UCxFQUFBODhDLEtBQUFDLFFBR0EsT0FEQWpVLElBQUEwUixFQUFBd0MscUJBQUFoOUMs
SUFHQWc5QyxxQkFBQSxTQUFBaDlDLEdBRUEsSUFEQSxHQUFBOG9DLEdBQUEsR0FDQTlvQyxHQUNB
OG9DLEdBQUF5UixFQUFBdjZDLEdBQ0FBLEVBQUF3NkMsRUFBQXlDLFlBQUFqOUMsRUFFQSxPQUFB
OG9DLElBRUFvVSxZQUFBLFNBQUFsOUMsR0FDQSxHQUFBKzVDLEdBQUFDLEVBQUFoNkMsRUFDQSxP
QUFBKzVDLEtBQUFFLGFBRUFoTixlQUFBLFNBQUFqdEMsR0FDQSxHQUFBMFgsR0FBQThpQyxFQUFB
QyxXQUFBejZDLEVBQ0EsT0FBQTBYLEdBR0F1MUIsRUFBQXYxQixHQUZBLE1BSUEraUMsV0FBQSxT
QUFBejZDLEdBQ0EsR0FBQSs1QyxHQUFBQyxFQUFBaDZDLEVBQ0EsT0FBQSs1QyxLQUFBcmlDLFFB
QUEsTUFFQWlqQyxXQUFBLFNBQUEzNkMsR0FDQSxHQUFBMFgsR0FBQThpQyxFQUFBQyxXQUFBejZD
LEVBQ0EsT0FBQTBYLE1BQUFFLE9BR0FGLEVBQUFFLE9BQUFtbEMsU0FGQSxNQUlBRSxZQUFBLFNB
QUFqOUMsR0FDQSxHQUFBKzVDLEdBQUFDLEVBQUFoNkMsRUFDQSxPQUFBKzVDLEtBQUFtQyxTQUFB
LE1BRUFpQixVQUFBLFNBQUFuOUMsR0FDQSxHQUFBKzVDLEdBQUFDLEVBQUFoNkMsR0FDQTBYLEVB
QUFxaUMsSUFBQXJpQyxRQUFBLEtBQ0F2VCxFQUFBLE1BQUF1VCxJQUFBYyxRQUFBLElBQ0EsT0FB
QXJVLElBRUFpNUMsUUFBQSxTQUFBcDlDLEdBQ0EsR0FBQTBYLEdBQUE4aUMsRUFBQUMsV0FBQXo2
QyxFQUNBLHVCQUFBMFgsR0FDQUEsRUFDSyxnQkFBQUEsR0FDTCxHQUFBQSxFQUVBLE1BR0EybEMs
ZUFBQSxTQUFBcjlDLEdBQ0EsR0FBQSs1QyxHQUFBQyxFQUFBaDZDLEVBQ0EsT0FBQSs1QyxLQUFB
cUMsWUFBQSxHQUlBcEIsYUFDQXNDLGlCQUFBekMsRUFFQTBDLDRCQUFBLFNBQUFDLEVBQUFDLEdB
Q0EscUJBQUExeUMsU0FBQTJ5QyxXQUFBLENBSUEsR0FBQUMsTUFDQWIsRUFBQWx0QyxFQUFBQyxR
QUNBN1AsRUFBQTg4QyxLQUFBQyxRQUVBLEtBU0EsSUFSQVMsR0FDQUcsRUFBQWozQyxNQUNBM0Us
S0FBQS9CLEVBQUF3NkMsRUFBQXZOLGVBQUFqdEMsR0FBQSxLQUNBcTZDLFNBQUFvRCxJQUFBcEQs
U0FBQSxLQUNBQyxXQUFBbUQsSUFBQW5ELFdBQUEsT0FJQXQ2QyxHQUFBLENBQ0EsR0FBQTBYLEdB
QUE4aUMsRUFBQUMsV0FBQXo2QyxHQUNBazhDLEVBQUExQixFQUFBeUMsWUFBQWo5QyxHQUNBMDZD
LEVBQUFGLEVBQUFHLFdBQUEzNkMsR0FDQW82QyxFQUFBTSxFQUFBRixFQUFBdk4sZUFBQXlOLEdB
QUEsS0FDQXYyQyxFQUFBdVQsS0FBQWMsT0FDQW1sQyxHQUFBajNDLE1BQ0EzRSxLQUFBcTRDLEVB
Q0FDLFNBQUFsMkMsSUFBQWsyQyxTQUFBLEtBQ0FDLFdBQUFuMkMsSUFBQW0yQyxXQUFBLE9BRUF0
NkMsRUFBQWs4QyxHQUVLLE1BQUFwNEMsSUFLTGlILFFBQUEyeUMsV0FBQUMsS0FFQUMsMkJBQUEs
V0FDQSxrQkFBQTd5QyxTQUFBOHlDLGVBR0E5eUMsUUFBQTh5QyxpQkFJQTk5QyxHQUFBRCxRQUFB
MDZDLEd6Rmc1U00sU0FBU3o2QyxFQUFRRCxHMEY5dlR2QixZQUtBLElBQUFxWCxHQUFBLGtCQUFB
aWYsZ0JBQUEsS0FBQUEsT0FBQSwyQkFFQXIyQixHQUFBRCxRQUFBcVgsRzFGK3dUTSxTQUFTcFgs
RUFBUUQsRUFBU0gsRzJGdnhUaEMsWUFJQSxTQUFBbStDLEdBQUF4ckIsRUFBQUMsSUFGQSxHQVlB
aW5CLElBWkE3NUMsRUFBQSxJQW9CQTh5QixVQUFBLFNBQUFILEdBQ0EsVUFXQUksZ0JBQUEsU0FB
QUosRUFBQTVvQixLQWVBbXBCLG1CQUFBLFNBQUFQLEdBQ0F3ckIsRUFBQXhyQixFQUFBLGdCQWNB
UyxvQkFBQSxTQUFBVCxFQUFBVSxHQUNBOHFCLEVBQUF4ckIsRUFBQSxpQkFhQWEsZ0JBQUEsU0FB
QWIsRUFBQWMsR0FDQTBxQixFQUFBeHJCLEVBQUEsY0FJQXZ5QixHQUFBRCxRQUFBMDVDLEczRnV5
VE0sU0FBU3o1QyxFQUFRRCxFQUFTSCxHNEZ6M1RoQyxZQUVBLElBQUFvK0MsSUFBQSxDQVdBaCtD
LEdBQUFELFFBQUFpK0MsRzVGMDRUTSxTQUFTaCtDLEVBQVFELEc2Rmw2VHZCLFlBZUEsU0FBQW9v
QixLQUNBLE9BQUFzckIsR0FBQWx4QyxVQUFBQyxPQUFBeTdDLEVBQUFqbUMsTUFBQXk3QixHQUFB
QyxFQUFBLEVBQWtFQSxFQUFBRCxFQUFhQyxJQUMvRXVLLEVBQUF2SyxHQUFBbnhDLFVBQUFteEMs
RUFHQSxZQUFBdUssRUFBQXo3QyxPQUNBLFNBQUErRixHQUNBLE1BQUFBLElBSUEsSUFBQTAxQyxF
QUFBejdDLE9BQ0F5N0MsRUFBQSxHQUdBQSxFQUFBQyxPQUFBLFNBQUFuOUMsRUFBQUMsR0FDQSxr
QkFDQSxNQUFBRCxHQUFBQyxFQUFBQyxNQUFBVyxPQUFBVyxlQTlCQXhDLEVBQUFrb0IsWUFBQSxF
QUNBbG9CLEVBQUEsUUFBQW9vQixHN0Z3OFRNLFNBQVNub0IsRUFBUUQsRUFBU0gsRzhGMzhUaEMs
WUFjQSxTQUFBbW9CLEdBQUFDLEdBQXNDLE1BQUFBLE1BQUFDLFdBQUFELEdBQXVDRSxRQUFBRixH
QW9DM0UsUUFBQU8sR0FBQTQxQixFQUFBQyxFQUFBQyxHQTBCRixRQUFBQyxLQUNBQyxJQUFBQyxJ
QUNBRCxFQUFBQyxFQUFBMzlDLFNBU0EsUUFBQTZyQyxLQUNBLE1BQUErUixHQTBCQSxRQUFBL0ws
R0FBQXg0QixHQUNBLHFCQUFBQSxHQUNBLFNBQUFyWSxPQUFBLHNDQUdBLElBQUE0dUMsSUFBQSxD
QUtBLE9BSEE2TixLQUNBQyxFQUFBNTNDLEtBQUF1VCxHQUVBLFdBQ0EsR0FBQXUyQixFQUFBLENB
SUFBLEdBQUEsRUFFQTZOLEdBQ0EsSUFBQXYzQixHQUFBdzNCLEVBQUExeEIsUUFBQTNTLEVBQ0Fx
a0MsR0FBQWx5QyxPQUFBMGEsRUFBQSxLQTZCQSxRQUFBa3BCLEdBQUF5TyxHQUNBLE9BQUE5TCxF
QUFBLFNBQUE4TCxHQUNBLFNBQUE3OEMsT0FBQSwwRUFHQSx1QkFBQTY4QyxHQUFBN3pDLEtBQ0Es
U0FBQWhKLE9BQUEscUZBR0EsSUFBQTg4QyxFQUNBLFNBQUE5OEMsT0FBQSxxQ0FHQSxLQUNBODhD
LEdBQUEsRUFDQUYsRUFBQUcsRUFBQUgsRUFBQUMsR0FDSyxRQUNMQyxHQUFBLEVBSUEsT0FEQTlm
LEdBQUEyZixFQUFBRCxFQUNBaCtDLEVBQUEsRUFBbUJBLEVBQUFzK0IsRUFBQXI4QixPQUFzQmpD
LElBQUEsQ0FDekMsR0FBQTJaLEdBQUEya0IsRUFBQXQrQixFQUNBMlosS0FHQSxNQUFBd2tDLEdB
YUEsUUFBQUcsR0FBQUMsR0FDQSxxQkFBQUEsR0FDQSxTQUFBajlDLE9BQUEsNkNBR0ErOEMsR0FB
QUUsRUFDQTdPLEdBQWNwbEMsS0FBQWswQyxFQUFBQyxPQVNkLFFBQUFDLEtBQ0EsR0FBQWpTLEdB
RUFrUyxFQUFBeE0sQ0FDQSxPQUFBMUYsSUFTQTBGLFVBQUEsU0FBQXlNLEdBS0EsUUFBQUMsS0FD
QUQsRUFBQW5ZLE1BQ0FtWSxFQUFBblksS0FBQTBGLEtBTkEsbUJBQUF5UyxHQUNBLFNBQUFyOEMs
V0FBQSx5Q0FTQXM4QyxJQUNBLElBQUFDLEdBQUFILEVBQUFFLEVBQ0EsUUFBZ0JDLGlCQUVYclMs
RUFBQXNTLEVBQUEsb0JBQ0wsTUFBQXArQyxPQUNLOHJDLEVBbk1MLEdBQUFzQyxFQU9BLElBTEEs
a0JBQUE4TyxJQUFBLG1CQUFBQyxLQUNBQSxFQUFBRCxFQUNBQSxFQUFBeDhDLFFBR0EsbUJBQUF5
OEMsR0FBQSxDQUNBLHFCQUFBQSxHQUNBLFNBQUF4OEMsT0FBQSwwQ0FHQSxPQUFBdzhDLEdBQUE5
MUIsR0FBQTQxQixFQUFBQyxHQUdBLHFCQUFBRCxHQUNBLFNBQUF0OEMsT0FBQSx5Q0FHQSxJQUFB
KzhDLEdBQUFULEVBQ0FNLEVBQUFMLEVBQ0FJLEtBQ0FELEVBQUFDLEVBQ0FHLEdBQUEsQ0FvTEEs
T0FGQTFPLElBQVlwbEMsS0FBQWswQyxFQUFBQyxPQUVaMVAsR0FDQVcsV0FDQXlDLFlBQ0FoRyxX
QUNBbVMsa0JBQ0d2UCxFQUFBZ1EsRUFBQSxTQUFBTCxFQUFBM1AsRUFqUUh2dkMsRUFBQWtvQixZ
QUFBLEVBQ0Fsb0IsRUFBQWcvQyxZQUFBbjlDLE9BQ0E3QixFQUFBLFFBQUF3b0IsQ0FFQSxJQUFB
dXFCLEdBQUFsekMsRUFBQSxJQUVBZ3pDLEVBQUE3cUIsRUFBQStxQixHQUVBeU0sRUFBQTMvQyxF
QUFBLEtBRUEwL0MsRUFBQXYzQixFQUFBdzNCLEdBVUFSLEVBQUFoL0MsRUFBQWcvQyxhQUNBQyxL
QUFBLGlCOUY4clVNLFNBQVNoL0MsRUFBUUQsRytGcnRVdkIsWUFVQSxTQUFBb0MsR0FBQU0sR0FF
QSxtQkFBQXVJLFVBQUEsa0JBQUFBLFNBQUFySixPQUNBcUosUUFBQXJKLE1BQUFjLEVBR0EsS0FJ
QSxTQUFBWixPQUFBWSxHQUVHLE1BQUFqQixLQXBCSHpCLEVBQUFrb0IsWUFBQSxFQUNBbG9CLEVB
QUEsUUFBQW9DLEcvRmd2VU0sU0FBU25DLEVBQVFELEVBQVNILEdnR3p1VWhDLFlBZUEsU0FBQTQv
QyxHQUFBMStDLEdBQ0EsTUFBQUEsR0FjQSxRQUFBb1gsR0FBQW9oQyxFQUFBMWlDLEVBQUE2aUMs
R0E4VUEsUUFBQWdHLEdBQUFDLEVBQUExOUMsR0FDQSxHQUFBMjlDLEdBQUFDLEVBQUFsL0MsZUFB
QXNCLEdBQ0E0OUMsRUFBQTU5QyxHQUNBLElBR0E2OUMsR0FBQW4vQyxlQUFBc0IsSUFDQSt1QyxF
QUNBLGtCQUFBNE8sRUFDQSwySkFHQTM5QyxHQUtBMDlDLEdBQ0EzTyxFQUNBLGdCQUFBNE8sR0FB
QSx1QkFBQUEsRUFDQSxnSUFHQTM5QyxHQVNBLFFBQUE4OUMsR0FBQS9qQixFQUFBZ2tCLEdBQ0Es
R0FBQUEsRUFBQSxDQXFCQWhQLEVBQ0Esa0JBQUFnUCxHQUNBLHNIQUlBaFAsR0FDQW42QixFQUFB
bXBDLEdBQ0EsbUdBSUEsSUFBQXoxQixHQUFBeVIsRUFBQXQ3QixVQUNBdS9DLEVBQUExMUIsRUFB
QTIxQixvQkFLQUYsR0FBQXIvQyxlQUFBdy9DLElBQ0FDLEVBQUFDLE9BQUFya0IsRUFBQWdrQixF
QUFBSyxPQUdBLFFBQUFwK0MsS0FBQSs5QyxHQUNBLEdBQUFBLEVBQUFyL0MsZUFBQXNCLElBSUFB
LElBQUFrK0MsRUFBQSxDQUtBLEdBQUFHLEdBQUFOLEVBQUEvOUMsR0FDQTA5QyxFQUFBcDFCLEVB
QUE1cEIsZUFBQXNCLEVBR0EsSUFGQXk5QyxFQUFBQyxFQUFBMTlDLEdBRUFtK0MsRUFBQXovQyxl
QUFBc0IsR0FDQW0rQyxFQUFBbitDLEdBQUErNUIsRUFBQXNrQixPQUNPLENBS1AsR0FBQUMsR0FB
QVYsRUFBQWwvQyxlQUFBc0IsR0FDQXUrQyxFQUFBLGtCQUFBRixHQUNBRyxFQUNBRCxJQUNBRCxJ
QUNBWixHQUNBSyxFQUFBVSxZQUFBLENBRUEsSUFBQUQsRUFDQVIsRUFBQXI1QyxLQUFBM0UsRUFB
QXErQyxHQUNBLzFCLEVBQUF0b0IsR0FBQXErQyxNQUVBLElBQUFYLEVBQUEsQ0FDQSxHQUFBQyxH
QUFBQyxFQUFBNTlDLEVBR0ErdUMsR0FDQXVQLElBQ0EsdUJBQUFYLEdBQ0EsZ0JBQUFBLEdBQ0Es
bUZBRUFBLEVBQ0EzOUMsR0FLQSx1QkFBQTI5QyxFQUNBcjFCLEVBQUF0b0IsR0FBQTArQyxFQUFB
cDJCLEVBQUF0b0IsR0FBQXErQyxHQUNhLGdCQUFBVixJQUNicjFCLEVBQUF0b0IsR0FBQTIrQyxF
QUFBcjJCLEVBQUF0b0IsR0FBQXErQyxRQUdBLzFCLEdBQUF0b0IsR0FBQXErQyxVQWNBLFFBQUFP
LEdBQUE3a0IsRUFBQThrQixHQUNBLEdBQUFBLEVBR0EsT0FBQTcrQyxLQUFBNitDLEdBQUEsQ0FD
QSxHQUFBUixHQUFBUSxFQUFBNytDLEVBQ0EsSUFBQTYrQyxFQUFBbmdELGVBQUFzQixHQUFBLENB
SUEsR0FBQTgrQyxHQUFBOStDLElBQUFtK0MsRUFDQXBQLElBQ0ErUCxFQUNBLDBNQUlBOStDLEVB
R0EsSUFBQSsrQyxHQUFBLytDLElBQUErNUIsRUFDQWdWLElBQ0FnUSxFQUNBLHVIQUdBLytDLEdB
RUErNUIsRUFBQS81QixHQUFBcStDLElBV0EsUUFBQVcsR0FBQUMsRUFBQUMsR0FDQW5RLEVBQ0Fr
USxHQUFBQyxHQUFBLGdCQUFBRCxJQUFBLGdCQUFBQyxHQUNBLDREQUdBLFFBQUF6OEMsS0FBQXk4
QyxHQUNBQSxFQUFBeGdELGVBQUErRCxLQUNBc3NDLEVBQ0FudkMsU0FBQXEvQyxFQUFBeDhDLEdB
Q0EseVBBS0FBLEdBRUF3OEMsRUFBQXg4QyxHQUFBeThDLEVBQUF6OEMsR0FHQSxPQUFBdzhDLEdB
V0EsUUFBQVAsR0FBQU8sRUFBQUMsR0FDQSxrQkFDQSxHQUFBbmdELEdBQUFrZ0QsRUFBQWhnRCxN
QUFBQyxLQUFBcUIsV0FDQXZCLEVBQUFrZ0QsRUFBQWpnRCxNQUFBQyxLQUFBcUIsVUFDQSxVQUFB
eEIsRUFDQSxNQUFBQyxFQUNPLFVBQUFBLEVBQ1AsTUFBQUQsRUFFQSxJQUFBVixLQUdBLE9BRkEy
Z0QsR0FBQTNnRCxFQUFBVSxHQUNBaWdELEVBQUEzZ0QsRUFBQVcsR0FDQVgsR0FZQSxRQUFBc2dE
LEdBQUFNLEVBQUFDLEdBQ0Esa0JBQ0FELEVBQUFoZ0QsTUFBQUMsS0FBQXFCLFdBQ0EyK0MsRUFB
QWpnRCxNQUFBQyxLQUFBcUIsWUFXQSxRQUFBNCtDLEdBQUFqOEMsRUFBQTZILEdBQ0EsR0FBQXEw
QyxHQUFBcjBDLEVBQUFvTCxLQUFBalQsRUFpREEsT0FBQWs4QyxHQVFBLFFBQUFDLEdBQUFuOEMs
R0FFQSxPQURBbzhDLEdBQUFwOEMsRUFBQSs2QyxxQkFDQTEvQyxFQUFBLEVBQW1CQSxFQUFBK2dE
LEVBQUE5K0MsT0FBa0JqQyxHQUFBLEdBQ3JDLEdBQUFnaEQsR0FBQUQsRUFBQS9nRCxHQUNBd00s
RUFBQXUwQyxFQUFBL2dELEVBQUEsRUFDQTJFLEdBQUFxOEMsR0FBQUosRUFBQWo4QyxFQUFBNkgs
SUFtRUEsUUFBQStKLEdBQUFpcEMsR0FJQSxHQUFBaGtCLEdBQUF5akIsRUFBQSxTQUFBOW5DLEVB
QUE5TCxFQUFBMnRDLEdBYUFyNEMsS0FBQSsrQyxxQkFBQXo5QyxRQUNBNitDLEVBQUFuZ0QsTUFH
QUEsS0FBQXdXLFFBQ0F4VyxLQUFBMEssVUFDQTFLLEtBQUFzNEMsS0FBQTE3QixFQUNBNWMsS0FB
QXE0QyxXQUFBRSxFQUVBdjRDLEtBQUE2dEMsTUFBQSxJQUtBLElBQUF5UyxHQUFBdGdELEtBQUF1
Z0QsZ0JBQUF2Z0QsS0FBQXVnRCxrQkFBQSxJQVlBMVEsR0FDQSxnQkFBQXlRLEtBQUF4cEMsTUFB
QXdSLFFBQUFnNEIsR0FDQSxzREFDQXpsQixFQUFBMUosYUFBQSwyQkFHQW54QixLQUFBNnRDLE1B
QUF5UyxHQUVBemxCLEdBQUF0N0IsVUFBQSxHQUFBaWhELEdBQ0EzbEIsRUFBQXQ3QixVQUFBdU4s
WUFBQSt0QixFQUNBQSxFQUFBdDdCLFVBQUF3L0Msd0JBRUEwQixFQUFBLzlDLFFBQUFrOEMsRUFB
QTNuQyxLQUFBLEtBQUE0akIsSUFFQStqQixFQUFBL2pCLEVBQUE2bEIsR0FDQTlCLEVBQUEvakIs
RUFBQWdrQixHQUNBRCxFQUFBL2pCLEVBQUE4bEIsR0FHQTlsQixFQUFBK2xCLGtCQUNBL2xCLEVB
QUE5akIsYUFBQThqQixFQUFBK2xCLG1CQWdCQS9RLEVBQ0FoVixFQUFBdDdCLFVBQUFra0MsT0FD
QSwwRUFxQkEsUUFBQXlJLEtBQUF3UyxHQUNBN2pCLEVBQUF0N0IsVUFBQTJzQyxLQUNBclIsRUFB
QXQ3QixVQUFBMnNDLEdBQUEsS0FJQSxPQUFBclIsR0FwekJBLEdBQUE0bEIsTUF3QkEvQixHQU9B
USxPQUFBLGNBU0FTLFFBQUEsY0FRQTV2QixVQUFBLGNBUUErYyxhQUFBLGNBUUFJLGtCQUFBLGNB
Y0EwVCxnQkFBQSxxQkFnQkFMLGdCQUFBLHFCQU1BcFMsZ0JBQUEscUJBaUJBMUssT0FBQSxjQVdB
b2QsbUJBQUEsY0FZQXZTLGtCQUFBLGNBcUJBRywwQkFBQSxjQXNCQWhELHNCQUFBLGNBaUJBcVYs
b0JBQUEsY0FjQTNSLG1CQUFBLGNBYUFULHFCQUFBLGNBY0FxUyxnQkFBQSxpQkFZQTlCLEdBQ0E5
dEIsWUFBQSxTQUFBMEosRUFBQTFKLEdBQ0EwSixFQUFBMUosZUFFQSt0QixPQUFBLFNBQUFya0Is
RUFBQXFrQixHQUNBLEdBQUFBLEVBQ0EsT0FBQTcvQyxHQUFBLEVBQXVCQSxFQUFBNi9DLEVBQUE1
OUMsT0FBbUJqQyxJQUMxQ3UvQyxFQUFBL2pCLEVBQUFxa0IsRUFBQTcvQyxLQUlBNnRDLGtCQUFB
LFNBQUFyUyxFQUFBcVMsR0FJQXJTLEVBQUFxUyxrQkFBQXJpQyxLQUVBZ3dCLEVBQUFxUyxrQkFD
QUEsSUFHQUosYUFBQSxTQUFBalMsRUFBQWlTLEdBSUFqUyxFQUFBaVMsYUFBQWppQyxLQUVBZ3dC
LEVBQUFpUyxhQUNBQSxJQU9BOFQsZ0JBQUEsU0FBQS9sQixFQUFBK2xCLEdBQ0EvbEIsRUFBQSts
QixnQkFDQS9sQixFQUFBK2xCLGdCQUFBcEIsRUFDQTNrQixFQUFBK2xCLGdCQUNBQSxHQUdBL2xC
LEVBQUErbEIsbUJBR0E3d0IsVUFBQSxTQUFBOEssRUFBQTlLLEdBSUE4SyxFQUFBOUssVUFBQWxs
QixLQUF3Q2d3QixFQUFBOUssY0FFeEM0dkIsUUFBQSxTQUFBOWtCLEVBQUE4a0IsR0FDQUQsRUFB
QTdrQixFQUFBOGtCLElBRUFKLFNBQUEsY0FzVkFtQixHQUNBcFMsa0JBQUEsV0FDQXR1QyxLQUFB
Z2hELGFBQUEsSUFJQUwsR0FDQWpTLHFCQUFBLFdBQ0ExdUMsS0FBQWdoRCxhQUFBLElBUUFyQyxH
QUtBc0MsYUFBQSxTQUFBQyxFQUFBejRDLEdBQ0F6SSxLQUFBcTRDLFFBQUF2bUIsb0JBQUE5eEIs
S0FBQWtoRCxFQUFBejRDLElBU0Erb0IsVUFBQSxXQWFBLFFBQUF4eEIsS0FBQWdoRCxjQUlBUixF
QUFBLFlBOEhBLE9BN0hBMzFDLEdBQ0EyMUMsRUFBQWpoRCxVQUNBNjRDLEVBQUE3NEMsVUFDQW8v
QyxHQTBIQS9vQyxFQXgxQkEsR0FpQkF1ckMsR0FqQkF0MkMsRUFBQW5NLEVBQUEsR0FFQWtlLEVB
QUFsZSxFQUFBLElBQ0FteEMsRUFBQW54QyxFQUFBLEdBTUFzZ0QsRUFBQSxRQWdCQW1DLE1BazBC
QXJpRCxFQUFBRCxRQUFBbVksR2hHMHZVTSxTQUFTbFksRUFBUUQsR2lHam1XdkIsWUF3QkEsU0FB
QXVpRCxHQUFBNzdCLEdBQ0EsTUFBQUEsR0FBQTFrQixRQUFBd2dELEVBQUEsU0FBQUMsRUFBQUMs
R0FDQSxNQUFBQSxHQUFBL3JCLGdCQWJBLEdBQUE2ckIsR0FBQSxPQWlCQXZpRCxHQUFBRCxRQUFB
dWlELEdqR3VtV00sU0FBU3RpRCxFQUFRRCxFQUFTSCxHa0cxbldoQyxZQXVCQSxTQUFBOGlELEdB
QUFqOEIsR0FDQSxNQUFBNjdCLEdBQUE3N0IsRUFBQTFrQixRQUFBNGdELEVBQUEsUUF0QkEsR0FB
QUwsR0FBQTFpRCxFQUFBLElBRUEraUQsRUFBQSxPQXVCQTNpRCxHQUFBRCxRQUFBMmlELEdsRzJv
V00sU0FBUzFpRCxFQUFRRCxFQUFTSCxHbUdqcldoQyxZQW9CQSxTQUFBc2dDLEdBQUEwaUIsRUFB
QUMsR0FDQSxTQUFBRCxJQUFBQyxLQUVHRCxJQUFBQyxJQUVBQyxFQUFBRixLQUVBRSxFQUFBRCxH
QUNIM2lCLEVBQUEwaUIsRUFBQUMsRUFBQWo4QyxZQUNHLFlBQUFnOEMsR0FDSEEsRUFBQUcsU0FB
QUYsS0FDR0QsRUFBQUksNEJBQ0gsR0FBQUosRUFBQUksd0JBQUFILE1BbkJBLEdBQUFDLEdBQUFs
akQsRUFBQSxJQXlCQUksR0FBQUQsUUFBQW1nQyxHbkd1cldNLFNBQVNsZ0MsRUFBUUQsRUFBU0gs
R29HN3RXaEMsWUF3QkEsU0FBQTRXLEdBQUF3UixHQUNBLEdBQUF4bEIsR0FBQXdsQixFQUFBeGxC
LE1BZUEsSUFYQXdWLE1BQUF3UixRQUFBeEIsSUFBQSxnQkFBQUEsSUFBQSxrQkFBQUEsR0FBQTVt
QixHQUFBLFVBRUEsZ0JBQUFvQixHQUFBcEIsR0FBQSxVQUVBLElBQUFvQixLQUFBLElBQUF3bEIs
R0FBQSxPQUFBNW1CLEdBQUEsR0FFQSxrQkFBQTRtQixHQUFBaTdCLE9BQW1MN2hELEdBQUEsVUFL
bkw0bUIsRUFBQXRuQixlQUNBLElBQ0EsTUFBQXNYLE9BQUF2WCxVQUFBSSxNQUFBVixLQUFBNm5C
LEdBQ0ssTUFBQXhtQixJQVFMLE9BREEwa0IsR0FBQWxPLE1BQUF4VixHQUNBNG9DLEVBQUEsRUFB
a0JBLEVBQUE1b0MsRUFBYTRvQyxJQUMvQmxsQixFQUFBa2xCLEdBQUFwakIsRUFBQW9qQixFQUVB
LE9BQUFsbEIsR0FrQkEsUUFBQWc5QixHQUFBbDdCLEdBQ0EsUUFFQUEsSUFFQSxnQkFBQUEsSUFB
QSxrQkFBQUEsS0FFQSxVQUFBQSxNQUVBLGVBQUFBLEtBR0EsZ0JBQUFBLEdBQUFuakIsV0FFQW1U
LE1BQUF3UixRQUFBeEIsSUFFQSxVQUFBQSxJQUVBLFFBQUFBLElBeUJBLFFBQUFtN0IsR0FBQW43
QixHQUNBLE1BQUFrN0IsR0FBQWw3QixHQUVHaFEsTUFBQXdSLFFBQUF4QixHQUNIQSxFQUFBbm5C
LFFBRUEyVixFQUFBd1IsSUFKQUEsR0F4R0EsR0FBQTVtQixHQUFBeEIsRUFBQSxFQWdIQUksR0FB
QUQsUUFBQW9qRCxHcEdtdVdNLFNBQVNuakQsRUFBUUQsRUFBU0gsR3FHaDJXaEMsWUFxQ0EsU0FB
QXdqRCxHQUFBenVDLEdBQ0EsR0FBQTB1QyxHQUFBMXVDLEVBQUFnUyxNQUFBMjhCLEVBQ0EsT0FB
QUQsTUFBQSxHQUFBenhDLGNBYUEsUUFBQTJ4QyxHQUFBNXVDLEVBQUE2dUMsR0FDQSxHQUFBNytD
LEdBQUE4K0MsQ0FDQUEsR0FBQSxPQUFBcmlELEdBQUEsRUFDQSxJQUFBNlAsR0FBQW15QyxFQUFB
enVDLEdBRUErdUMsRUFBQXp5QyxHQUFBMHlDLEVBQUExeUMsRUFDQSxJQUFBeXlDLEVBQUEsQ0FD
QS8rQyxFQUFBNmlCLFVBQUFrOEIsRUFBQSxHQUFBL3VDLEVBQUErdUMsRUFBQSxFQUdBLEtBREEs
R0FBQUUsR0FBQUYsRUFBQSxHQUNBRSxLQUNBai9DLElBQUFnL0IsY0FHQWgvQixHQUFBNmlCLFVB
QUE3UyxDQUdBLElBQUFrdkMsR0FBQWwvQyxFQUFBbS9DLHFCQUFBLFNBQ0FELEdBQUFyaEQsU0FD
QWdoRCxFQUFBLE9BQUFwaUQsR0FBQSxHQUNBK2hELEVBQUFVLEdBQUFqZ0QsUUFBQTQvQyxHQUlB
LEtBREEsR0FBQU8sR0FBQS9yQyxNQUFBM1QsS0FBQU0sRUFBQXEvQyxZQUNBci9DLEVBQUFnL0Is
V0FDQWgvQixFQUFBa2pCLFlBQUFsakIsRUFBQWcvQixVQUVBLE9BQUFvZ0IsR0FoRUEsR0FBQWw4
QyxHQUFBakksRUFBQSxHQUVBdWpELEVBQUF2akQsRUFBQSxLQUNBK2pELEVBQUEvakQsRUFBQSxL
QUNBd0IsRUFBQXhCLEVBQUEsR0FLQTZqRCxFQUFBNTdDLEVBQUFKLFVBQUFFLFNBQUFDLGNBQUEs
WUFLQTA3QyxFQUFBLFlBcURBdGpELEdBQUFELFFBQUF3akQsR3JHczJXTSxTQUFTdmpELEVBQVFE
LEVBQVNILEdzR3g3V2hDLFlBNkVBLFNBQUErakQsR0FBQTF5QyxHQWFBLE1BWkF3eUMsR0FBQSxP
QUFBcmlELEdBQUEsR0FDQTZpRCxFQUFBdmpELGVBQUF1USxLQUNBQSxFQUFBLEtBRUFpekMsRUFB
QXhqRCxlQUFBdVEsS0FDQSxNQUFBQSxFQUNBd3lDLEVBQUFqOEIsVUFBQSxXQUVBaThCLEVBQUFq
OEIsVUFBQSxJQUFBdlcsRUFBQSxNQUFBQSxFQUFBLElBRUFpekMsRUFBQWp6QyxJQUFBd3lDLEVB
QUF2OUMsWUFFQWcrQyxFQUFBanpDLEdBQUFnekMsRUFBQWh6QyxHQUFBLEtBNUVBLEdBQUFwSixH
QUFBakksRUFBQSxHQUVBd0IsRUFBQXhCLEVBQUEsR0FLQTZqRCxFQUFBNTdDLEVBQUFKLFVBQUFF
LFNBQUFDLGNBQUEsWUFTQXM4QyxLQUVBQyxHQUFBLDBDQUNBQyxHQUFBLHdCQUNBQyxHQUFBLGdE
QUVBQyxHQUFBLHVEQUVBTCxHQUNBTSxLQUFBLHFCQUVBQyxNQUFBLG9CQUNBQyxLQUFBLDREQUNB
QyxRQUFBLDhCQUNBQyxPQUFBLDBCQUNBQyxJQUFBLHVDQUVBQyxTQUFBVixFQUNBVyxPQUFBWCxF
QUVBWSxRQUFBWCxFQUNBWSxTQUFBWixFQUNBYSxNQUFBYixFQUNBYyxNQUFBZCxFQUNBZSxNQUFB
ZixFQUVBZ0IsR0FBQWYsRUFDQWdCLEdBQUFoQixHQU1BaUIsR0FBQSxvS0FDQUEsR0FBQTFoRCxR
QUFBLFNBQUFxTixHQUNBZ3pDLEVBQUFoekMsR0FBQXF6QyxFQUNBSixFQUFBanpDLElBQUEsSUEy
QkFqUixFQUFBRCxRQUFBNGpELEd0Rzg3V00sU0FBUzNqRCxFQUFRRCxHdUdoaFh2QixZQWFBLFNB
QUF3bEQsR0FBQUMsR0FDQSxNQUFBQSxHQUFBQyxRQUFBRCxlQUFBQyxRQUVBOTdCLEVBQUE2N0Is
RUFBQUUsYUFBQUYsRUFBQTc5QyxTQUFBdzRCLGdCQUFBd2xCLFdBQ0EvN0IsRUFBQTQ3QixFQUFB
SSxhQUFBSixFQUFBNzlDLFNBQUF3NEIsZ0JBQUEwbEIsWUFJQWw4QixFQUFBNjdCLEVBQUFHLFdB
Q0EvN0IsRUFBQTQ3QixFQUFBSyxXQUlBN2xELEVBQUFELFFBQUF3bEQsR3ZHaWlYTSxTQUFTdmxE
LEVBQVFELEd3R3RrWHZCLFlBMkJBLFNBQUErbEQsR0FBQXIvQixHQUNBLE1BQUFBLEdBQUExa0Is
UUFBQWdrRCxFQUFBLE9BQUFuMEMsY0FmQSxHQUFBbTBDLEdBQUEsVUFrQkEvbEQsR0FBQUQsUUFB
QStsRCxHeEc0a1hNLFNBQVM5bEQsRUFBUUQsRUFBU0gsR3lHaG1YaEMsWUFzQkEsU0FBQW9tRCxH
QUFBdi9CLEdBQ0EsTUFBQXEvQixHQUFBci9CLEdBQUExa0IsUUFBQTRnRCxFQUFBLFFBckJBLEdB
QUFtRCxHQUFBbG1ELEVBQUEsS0FFQStpRCxFQUFBLE1Bc0JBM2lELEdBQUFELFFBQUFpbUQsR3pH
aW5YTSxTQUFTaG1ELEVBQVFELEcwR3RwWHZCLFlBaUJBLFNBQUFrbUQsR0FBQXZ0QyxHQUNBLEdB
QUErRSxHQUFBL0UsSUFBQWdGLGVBQUFoRixFQUFBL1EsU0FDQWdXLEVBQUFGLEVBQUFFLGFBQUFq
VyxNQUNBLFVBQUFnUixLQUFBLGtCQUFBaUYsR0FBQXVvQyxLQUFBeHRDLFlBQUFpRixHQUFBdW9D
LEtBQUEsZ0JBQUF4dEMsSUFBQSxnQkFBQUEsR0FBQTdULFVBQUEsZ0JBQUE2VCxHQUFBekgsV0FH
QWpSLEVBQUFELFFBQUFrbUQsRzFHNHBYTSxTQUFTam1ELEVBQVFELEVBQVNILEcyR25yWGhDLFlB
bUJBLFNBQUFrakQsR0FBQXBxQyxHQUNBLE1BQUF1dEMsR0FBQXZ0QyxJQUFBLEdBQUFBLEVBQUE3
VCxTQVBBLEdBQUFvaEQsR0FBQXJtRCxFQUFBLElBVUFJLEdBQUFELFFBQUEraUQsRzNHeXJYTSxT
QUFTOWlELEVBQVFELEc0R3BzWHZCLFlBTUEsU0FBQW9tRCxHQUFBeDhDLEdBQ0EsR0FBQXk4QyxL
QUNBLGlCQUFBMy9CLEdBSUEsTUFIQTIvQixHQUFBMWxELGVBQUErbEIsS0FDQTIvQixFQUFBMy9C
LEdBQUE5YyxFQUFBeEosS0FBQWUsS0FBQXVsQixJQUVBMi9CLEVBQUEzL0IsSUFJQXptQixFQUFB
RCxRQUFBb21ELEc1R3N0WE0sU0FBU25tRCxFQUFRRCxHNkc5dVh2QixZQUVBLElBQUFzbUQsSUFD
QWpZLG1CQUFBLEVBQ0FKLGNBQUEsRUFDQS8xQixjQUFBLEVBQ0FvYSxhQUFBLEVBQ0F5dkIsaUJB
QUEsRUFDQTFCLFFBQUEsRUFDQW52QixXQUFBLEVBQ0FwbUIsTUFBQSxHQUdBeTdDLEdBQ0F0a0Qs
TUFBQSxFQUNBUSxRQUFBLEVBQ0EvQixXQUFBLEVBQ0E4bEQsUUFBQSxFQUNBdEQsUUFBQSxFQUNB
MWdELFdBQUEsRUFDQWlrRCxPQUFBLEdBR0FuZSxFQUFBN25DLE9BQUE2bkMsZUFDQWxsQyxFQUFB
M0MsT0FBQTJDLG9CQUNBYSxFQUFBeEQsT0FBQXdELHNCQUNBbWtDLEVBQUEzbkMsT0FBQTJuQyx5
QkFDQXdMLEVBQUFuekMsT0FBQW16QyxlQUNBOFMsRUFBQTlTLEtBQUFuekMsT0FFQVIsR0FBQUQs
UUFBQSxRQUFBMm1ELEdBQUFDLEVBQUFDLEVBQUFDLEdBQ0EsbUJBQUFELEdBQUEsQ0FFQSxHQUFB
SCxFQUFBLENBQ0EsR0FBQUssR0FBQW5ULEVBQUFpVCxFQUNBRSxRQUFBTCxHQUNBQyxFQUFBQyxF
QUFBRyxFQUFBRCxHQUlBLEdBQUEvaUQsR0FBQVgsRUFBQXlqRCxFQUVBNWlELEtBQ0FGLElBQUEz
QyxPQUFBNkMsRUFBQTRpRCxJQUdBLFFBQUFybUQsR0FBQSxFQUF1QkEsRUFBQXVELEVBQUF0QixT
QUFpQmpDLEVBQUEsQ0FDeEMsR0FBQWtFLEdBQUFYLEVBQUF2RCxFQUNBLE1BQUE4bEQsRUFBQTVo
RCxJQUFBNmhELEVBQUE3aEQsSUFBQW9pRCxLQUFBcGlELElBQUEsQ0FDQSxHQUFBeWpDLEdBQUFD
LEVBQUF5ZSxFQUFBbmlELEVBQ0EsS0FDQTRqQyxFQUFBc2UsRUFBQWxpRCxFQUFBeWpDLEdBQ2lC
LE1BQUExbUMsTUFJakIsTUFBQW1sRCxHQUdBLE1BQUFBLEs3RzB2WE0sU0FBUzNtRCxFQUFRRCxF
QUFTSCxHOEdoelhoQyxZQWFBLElBQUF3QixHQUFBLFNBQUFDLEVBQUFDLEVBQUFQLEVBQUFDLEVB
QUFYLEVBQUFrQixFQUFBQyxFQUFBQyxHQU9BLElBQUFKLEVBQUEsQ0FDQSxHQUFBTSxFQUNBLElB
QUFDLFNBQUFOLEVBQ0FLLEVBQUEsR0FBQUUsT0FDQSxxSUFHSyxDQUNMLEdBQUFqQixJQUFBRyxF
QUFBQyxFQUFBWCxFQUFBa0IsRUFBQUMsRUFBQUMsR0FDQUssRUFBQSxDQUNBSCxHQUFBLEdBQUFF
LE9BQ0FQLEVBQUFTLFFBQUEsaUJBQTBDLE1BQUFuQixHQUFBa0IsUUFFMUNILEVBQUFLLEtBQUEs
c0JBSUEsS0FEQUwsR0FBQU0sWUFBQSxFQUNBTixHQUlBM0IsR0FBQUQsUUFBQXFCLEc5R2cwWE0s
U0FBU3BCLEVBQVFELEVBQVNILEcrR2gyWGhDLFFBQUF3cUIsR0FBQXBZLEdBQ0EsYUFBQUEsRUFD
QXBRLFNBQUFvUSxFQUFBKzBDLEVBQUFDLEVBRUFDLE9BQUF6bUQsUUFBQXdSLEdBQ0FrMUMsRUFB
QWwxQyxHQUNBbTFDLEVBQUFuMUMsR0F4QkEsR0FBQXFrQixHQUFBejJCLEVBQUEsSUFDQXNuRCxF
QUFBdG5ELEVBQUEsS0FDQXVuRCxFQUFBdm5ELEVBQUEsS0FHQW9uRCxFQUFBLGdCQUNBRCxFQUFB
LHFCQUdBRSxFQUFBNXdCLElBQUErd0IsWUFBQXhsRCxNQWtCQTVCLEdBQUFELFFBQUFxcUIsRy9H
eTNYTSxTQUFTcHFCLEVBQVFELElnSHA1WHZCLFNBQUFzbkQsR0FDQSxHQUFBQyxHQUFBLGdCQUFB
RCxTQUFBN21ELGlCQUFBNm1ELENBRUFybkQsR0FBQUQsUUFBQXVuRCxJaEh3NVg4Qm5uRCxLQUFL
SixFQUFVLFdBQWEsTUFBT21CLFdBSTNELFNBQVNsQixFQUFRRCxFQUFTSCxHaUgvNVhoQyxHQUFB
Mm5ELEdBQUEzbkQsRUFBQSxLQUdBMnFCLEVBQUFnOUIsRUFBQS9tRCxPQUFBbXpDLGVBQUFuekMs
T0FFQVIsR0FBQUQsUUFBQXdxQixHakhzNlhNLFNBQVN2cUIsRUFBUUQsRUFBU0gsR2tIbDVYaEMs
UUFBQXNuRCxHQUFBbDFDLEdBQ0EsR0FBQXcxQyxHQUFBOW1ELEVBQUFQLEtBQUE2UixFQUFBaTFD
LEdBQ0FydUMsRUFBQTVHLEVBQUFpMUMsRUFFQSxLQUNBajFDLEVBQUFpMUMsR0FBQXJsRCxNQUNB
LElBQUE2bEQsSUFBQSxFQUNHLE1BQUFqbUQsSUFFSCxHQUFBa21ELEdBQUFDLEVBQUF4bkQsS0FB
QTZSLEVBUUEsT0FQQXkxQyxLQUNBRCxFQUNBeDFDLEVBQUFpMUMsR0FBQXJ1QyxRQUVBNUcsR0FB
QWkxQyxJQUdBUyxFQTFDQSxHQUFBcnhCLEdBQUF6MkIsRUFBQSxJQUdBaXJCLEVBQUFycUIsT0FB
QUMsVUFHQUMsRUFBQW1xQixFQUFBbnFCLGVBT0FpbkQsRUFBQTk4QixFQUFBdGpCLFNBR0EwL0Ms
RUFBQTV3QixJQUFBK3dCLFlBQUF4bEQsTUE2QkE1QixHQUFBRCxRQUFBbW5ELEdsSGs3WE0sU0FB
U2xuRCxFQUFRRCxHbUg5OFh2QixRQUFBb25ELEdBQUFuMUMsR0FDQSxNQUFBMjFDLEdBQUF4bkQs
S0FBQTZSLEdBakJBLEdBQUE2WSxHQUFBcnFCLE9BQUFDLFVBT0FrbkQsRUFBQTk4QixFQUFBdGpC
LFFBYUF2SCxHQUFBRCxRQUFBb25ELEduSHMrWE0sU0FBU25uRCxFQUFRRCxHb0huL1h2QixRQUFB
d25ELEdBQUFuMkIsRUFBQXcyQixHQUNBLGdCQUFBci9DLEdBQ0EsTUFBQTZvQixHQUFBdzJCLEVB
QUFyL0MsS0FJQXZJLEVBQUFELFFBQUF3bkQsR3BIa2dZTSxTQUFTdm5ELEVBQVFELEVBQVNILEdx
SGhoWWhDLEdBQUEwbkQsR0FBQTFuRCxFQUFBLEtBR0Fpb0QsRUFBQSxnQkFBQXJ3QyxrQkFBQWhY
LGlCQUFBZ1gsS0FHQTRlLEVBQUFreEIsR0FBQU8sR0FBQWo5QixTQUFBLGdCQUVBNXFCLEdBQUFE
LFFBQUFxMkIsR3JIdWhZTSxTQUFTcDJCLEVBQVFELEdzSHZnWXZCLFFBQUFvcUIsR0FBQW5ZLEdB
Q0EsYUFBQUEsR0FBQSxnQkFBQUEsR0FHQWhTLEVBQUFELFFBQUFvcUIsR3RIc2lZTSxTQUFTbnFC
LEVBQVFELEVBQVNILEd1SHpqWWhDLFlBb0JBLFNBQUEyeEIsR0FBQXUyQixFQUFBQyxFQUFBQyxF
QUFBOTJCLEVBQUErMkIsSUErQkFqb0QsRUFBQUQsUUFBQXd4QixHdkh5a1lNLFNBQVN2eEIsRUFB
UUQsRUFBU0gsR3dINW5ZaEMsWUFFQSxJQUFBc0MsR0FBQXRDLEVBQUEsR0FDQXdCLEVBQUF4QixF
QUFBLEdBQ0E2d0IsRUFBQTd3QixFQUFBLEdBRUFJLEdBQUFELFFBQUEsV0FDQSxRQUFBbW9ELEdB
QUF4d0MsRUFBQXpKLEVBQUFpakIsRUFBQTgyQixFQUFBRyxFQUFBQyxHQUNBQSxJQUFBMzNCLEdB
SUFydkIsR0FDQSxFQUNBLG1MQU1BLFFBQUFpbkQsS0FDQSxNQUFBSCxHQUZBQSxFQUFBelYsV0FB
QXlWLENBTUEsSUFBQXR5QyxJQUNBMGdDLE1BQUE0UixFQUNBdlQsS0FBQXVULEVBQ0E5MkIsS0FB
QTgyQixFQUNBbmUsT0FBQW1lLEVBQ0F4dkMsT0FBQXd2QyxFQUNBemhDLE9BQUF5aEMsRUFDQUks
T0FBQUosRUFFQUssSUFBQUwsRUFDQU0sUUFBQUgsRUFDQTF3QyxRQUFBdXdDLEVBQ0FPLFdBQUFK
LEVBQ0ExakQsS0FBQXVqRCxFQUNBUSxTQUFBTCxFQUNBTSxNQUFBTixFQUNBTyxVQUFBUCxFQUNB
N1YsTUFBQTZWLEVBTUEsT0FIQXp5QyxHQUFBMmIsZUFBQXJ2QixFQUNBMFQsRUFBQWlCLFVBQUFq
QixFQUVBQSxJeEg2b1lNLFNBQVM1VixFQUFRRCxFQUFTSCxHeUg3clloQyxZQUVBLElBQUFzQyxH
QUFBdEMsRUFBQSxHQUNBd0IsRUFBQXhCLEVBQUEsR0FDQXVDLEVBQUF2QyxFQUFBLEdBRUE2d0Is
RUFBQTd3QixFQUFBLElBQ0EyeEIsRUFBQTN4QixFQUFBLElBRUFJLEdBQUFELFFBQUEsU0FBQTZX
LEVBQUEwZixHQW1CQSxRQUFBMFUsR0FBQTZkLEdBQ0EsR0FBQTlkLEdBQUE4ZCxJQUFBQyxHQUFB
RCxFQUFBQyxJQUFBRCxFQUFBRSxHQUNBLHNCQUFBaGUsR0FDQSxNQUFBQSxHQWdGQSxRQUFBcmhC
LEdBQUFDLEVBQUFDLEdBRUEsTUFBQUQsS0FBQUMsRUFHQSxJQUFBRCxHQUFBLEVBQUFBLElBQUEs
RUFBQUMsRUFHQUQsT0FBQUMsTUFZQSxRQUFBby9CLEdBQUF2bUQsR0FDQXZCLEtBQUF1QixVQUNB
dkIsS0FBQTA4QyxNQUFBLEdBS0EsUUFBQXFMLEdBQUFDLEdBS0EsUUFBQUMsR0FBQTFXLEVBQUEv
NkIsRUFBQXpKLEVBQUFpakIsRUFBQTgyQixFQUFBRyxFQUFBQyxHQUlBLEdBSEFsM0IsS0FBQWs0
QixFQUNBakIsS0FBQWw2QyxFQUVBbTZDLElBQUEzM0IsRUFDQSxHQUFBNkYsRUFFQWwxQixHQUNB
LEVBQ0EsMExBMkJBLGFBQUFzVyxFQUFBekosR0FDQXdrQyxFQUVBLEdBQUF1VyxHQURBLE9BQUF0
eEMsRUFBQXpKLEdBQ0EsT0FBQSs1QyxFQUFBLEtBQUFHLEVBQUEsbUNBQUFqM0IsRUFBQSwrQkFF
QSxPQUFBODJCLEVBQUEsS0FBQUcsRUFBQSxtQ0FBQWozQixFQUFBLHFDQUVBLEtBRUFnNEIsRUFB
QXh4QyxFQUFBekosRUFBQWlqQixFQUFBODJCLEVBQUFHLEdBaERBLEdBb0RBa0IsR0FBQUYsRUFB
QWh4QyxLQUFBLFFBR0EsT0FGQWt4QyxHQUFBNVcsV0FBQTBXLEVBQUFoeEMsS0FBQSxTQUVBa3hD
LEVBR0EsUUFBQUMsR0FBQUMsR0FDQSxRQUFBTCxHQUFBeHhDLEVBQUF6SixFQUFBaWpCLEVBQUE4
MkIsRUFBQUcsRUFBQUMsR0FDQSxHQUFBbHFCLEdBQUF4bUIsRUFBQXpKLEdBQ0F1N0MsRUFBQUMs
RUFBQXZyQixFQUNBLElBQUFzckIsSUFBQUQsRUFBQSxDQUlBLEdBQUFHLEdBQUFDLEVBQUF6ckIs
RUFFQSxXQUFBOHFCLEdBQUEsV0FBQWhCLEVBQUEsS0FBQUcsRUFBQSxrQkFBQXVCLEVBQUEsa0JB
QUF4NEIsRUFBQSxxQkFBQXE0QixFQUFBLE9BRUEsWUFFQSxNQUFBTixHQUFBQyxHQUdBLFFBQUFV
LEtBQ0EsTUFBQVgsR0FBQS9tRCxFQUFBeUcsaUJBR0EsUUFBQWtoRCxHQUFBQyxHQUNBLFFBQUFa
LEdBQUF4eEMsRUFBQXpKLEVBQUFpakIsRUFBQTgyQixFQUFBRyxHQUNBLHFCQUFBMkIsR0FDQSxV
QUFBZCxHQUFBLGFBQUFiLEVBQUEsbUJBQUFqM0IsRUFBQSxrREFFQSxJQUFBZ04sR0FBQXhtQixF
QUFBekosRUFDQSxLQUFBK0osTUFBQXdSLFFBQUEwVSxHQUFBLENBQ0EsR0FBQXNyQixHQUFBQyxF
QUFBdnJCLEVBQ0EsV0FBQThxQixHQUFBLFdBQUFoQixFQUFBLEtBQUFHLEVBQUEsa0JBQUFxQixF
QUFBLGtCQUFBdDRCLEVBQUEsMEJBRUEsT0FBQTN3QixHQUFBLEVBQXFCQSxFQUFBMjlCLEVBQUEx
N0IsT0FBc0JqQyxJQUFBLENBQzNDLEdBQUFvQixHQUFBbW9ELEVBQUE1ckIsRUFBQTM5QixFQUFB
MndCLEVBQUE4MkIsRUFBQUcsRUFBQSxJQUFBNW5ELEVBQUEsSUFBQWt3QixFQUNBLElBQUE5dUIs
WUFBQUUsT0FDQSxNQUFBRixHQUdBLFlBRUEsTUFBQXNuRCxHQUFBQyxHQUdBLFFBQUFhLEtBQ0Es
UUFBQWIsR0FBQXh4QyxFQUFBekosRUFBQWlqQixFQUFBODJCLEVBQUFHLEdBQ0EsR0FBQWpxQixH
QUFBeG1CLEVBQUF6SixFQUNBLEtBQUEySSxFQUFBc25CLEdBQUEsQ0FDQSxHQUFBc3JCLEdBQUFD
LEVBQUF2ckIsRUFDQSxXQUFBOHFCLEdBQUEsV0FBQWhCLEVBQUEsS0FBQUcsRUFBQSxrQkFBQXFC
LEVBQUEsa0JBQUF0NEIsRUFBQSx1Q0FFQSxZQUVBLE1BQUErM0IsR0FBQUMsR0FHQSxRQUFBYyxH
QUFBQyxHQUNBLFFBQUFmLEdBQUF4eEMsRUFBQXpKLEVBQUFpakIsRUFBQTgyQixFQUFBRyxHQUNB
LEtBQUF6d0MsRUFBQXpKLFlBQUFnOEMsSUFBQSxDQUNBLEdBQUFDLEdBQUFELEVBQUFqb0QsTUFB
QW9uRCxFQUNBZSxFQUFBQyxFQUFBMXlDLEVBQUF6SixHQUNBLFdBQUErNkMsR0FBQSxXQUFBaEIs
RUFBQSxLQUFBRyxFQUFBLGtCQUFBZ0MsRUFBQSxrQkFBQWo1QixFQUFBLGlDQUFBZzVCLEVBQUEs
T0FFQSxZQUVBLE1BQUFqQixHQUFBQyxHQUdBLFFBQUFtQixHQUFBQyxHQU1BLFFBQUFwQixHQUFB
eHhDLEVBQUF6SixFQUFBaWpCLEVBQUE4MkIsRUFBQUcsR0FFQSxPQURBanFCLEdBQUF4bUIsRUFB
QXpKLEdBQ0ExTixFQUFBLEVBQXFCQSxFQUFBK3BELEVBQUE5bkQsT0FBMkJqQyxJQUNoRCxHQUFB
bXBCLEVBQUF3VSxFQUFBb3NCLEVBQUEvcEQsSUFDQSxXQUlBLElBQUFncUQsR0FBQWhjLEtBQUFD
LFVBQUE4YixFQUNBLFdBQUF0QixHQUFBLFdBQUFoQixFQUFBLEtBQUFHLEVBQUEsZUFBQWpxQixF
QUFBLHNCQUFBaE4sRUFBQSxzQkFBQXE1QixFQUFBLE1BZEEsTUFBQXZ5QyxPQUFBd1IsUUFBQThn
QyxHQWdCQXJCLEVBQUFDLEdBZEFobkQsRUFBQXlHLGdCQWlCQSxRQUFBNmhELEdBQUFWLEdBQ0Es
UUFBQVosR0FBQXh4QyxFQUFBekosRUFBQWlqQixFQUFBODJCLEVBQUFHLEdBQ0EscUJBQUEyQixH
QUNBLFVBQUFkLEdBQUEsYUFBQWIsRUFBQSxtQkFBQWozQixFQUFBLG1EQUVBLElBQUFnTixHQUFB
eG1CLEVBQUF6SixHQUNBdTdDLEVBQUFDLEVBQUF2ckIsRUFDQSxlQUFBc3JCLEVBQ0EsVUFBQVIs
R0FBQSxXQUFBaEIsRUFBQSxLQUFBRyxFQUFBLGtCQUFBcUIsRUFBQSxrQkFBQXQ0QixFQUFBLDBC
QUVBLFFBQUF6c0IsS0FBQXk1QixHQUNBLEdBQUFBLEVBQUF4OUIsZUFBQStELEdBQUEsQ0FDQSxH
QUFBOUMsR0FBQW1vRCxFQUFBNXJCLEVBQUF6NUIsRUFBQXlzQixFQUFBODJCLEVBQUFHLEVBQUEs
SUFBQTFqRCxFQUFBZ3NCLEVBQ0EsSUFBQTl1QixZQUFBRSxPQUNBLE1BQUFGLEdBSUEsWUFFQSxN
QUFBc25ELEdBQUFDLEdBR0EsUUFBQXVCLEdBQUFDLEdBb0JBLFFBQUF4QixHQUFBeHhDLEVBQUF6
SixFQUFBaWpCLEVBQUE4MkIsRUFBQUcsR0FDQSxPQUFBNW5ELEdBQUEsRUFBcUJBLEVBQUFtcUQs
RUFBQWxvRCxPQUFnQ2pDLElBQUEsQ0FDckQsR0FBQW9xRCxHQUFBRCxFQUFBbnFELEVBQ0EsVUFB
QW9xRCxFQUFBanpDLEVBQUF6SixFQUFBaWpCLEVBQUE4MkIsRUFBQUcsRUFBQTEzQixHQUNBLFlB
SUEsVUFBQXU0QixHQUFBLFdBQUFoQixFQUFBLEtBQUFHLEVBQUEsc0JBQUFqM0IsRUFBQSxPQTNC
QSxJQUFBbFosTUFBQXdSLFFBQUFraEMsR0FFQSxNQUFBeG9ELEdBQUF5RyxlQUdBLFFBQUFwSSxH
QUFBLEVBQW1CQSxFQUFBbXFELEVBQUFsb0QsT0FBZ0NqQyxJQUFBLENBQ25ELEdBQUFvcUQsR0FB
QUQsRUFBQW5xRCxFQUNBLHNCQUFBb3FELEdBUUEsTUFQQXhvRCxJQUNBLEVBQ0EsNEdBRUF5b0Qs
RUFBQUQsR0FDQXBxRCxHQUVBMkIsRUFBQXlHLGdCQWNBLE1BQUFzZ0QsR0FBQUMsR0FHQSxRQUFB
MkIsS0FDQSxRQUFBM0IsR0FBQXh4QyxFQUFBekosRUFBQWlqQixFQUFBODJCLEVBQUFHLEdBQ0Es
TUFBQWxDLEdBQUF2dUMsRUFBQXpKLElBR0EsS0FGQSxHQUFBKzZDLEdBQUEsV0FBQWhCLEVBQUEs
S0FBQUcsRUFBQSxzQkFBQWozQixFQUFBLDZCQUlBLE1BQUErM0IsR0FBQUMsR0FHQSxRQUFBNEIs
R0FBQUMsR0FDQSxRQUFBN0IsR0FBQXh4QyxFQUFBekosRUFBQWlqQixFQUFBODJCLEVBQUFHLEdB
Q0EsR0FBQWpxQixHQUFBeG1CLEVBQUF6SixHQUNBdTdDLEVBQUFDLEVBQUF2ckIsRUFDQSxlQUFB
c3JCLEVBQ0EsVUFBQVIsR0FBQSxXQUFBaEIsRUFBQSxLQUFBRyxFQUFBLGNBQUFxQixFQUFBLHNC
QUFBdDRCLEVBQUEseUJBRUEsUUFBQXpzQixLQUFBc21ELEdBQUEsQ0FDQSxHQUFBSixHQUFBSSxF
QUFBdG1ELEVBQ0EsSUFBQWttRCxFQUFBLENBR0EsR0FBQWhwRCxHQUFBZ3BELEVBQUF6c0IsRUFB
QXo1QixFQUFBeXNCLEVBQUE4MkIsRUFBQUcsRUFBQSxJQUFBMWpELEVBQUFnc0IsRUFDQSxJQUFB
OXVCLEVBQ0EsTUFBQUEsSUFHQSxZQUVBLE1BQUFzbkQsR0FBQUMsR0FHQSxRQUFBakQsR0FBQS9u
QixHQUNBLGFBQUFBLElBQ0EsYUFDQSxhQUNBLGdCQUNBLFFBQ0EsZUFDQSxPQUFBQSxDQUNBLGNB
Q0EsR0FBQWxtQixNQUFBd1IsUUFBQTBVLEdBQ0EsTUFBQUEsR0FBQThzQixNQUFBL0UsRUFFQSxX
QUFBL25CLEdBQUF0bkIsRUFBQXNuQixHQUNBLFFBR0EsSUFBQTZNLEdBQUFDLEVBQUE5TSxFQUNB
LEtBQUE2TSxFQXFCQSxRQXBCQSxJQUNBRSxHQURBQyxFQUFBSCxFQUFBNXFDLEtBQUErOUIsRUFF
QSxJQUFBNk0sSUFBQTdNLEVBQUFpTixTQUNBLE9BQUFGLEVBQUFDLEVBQUFsRSxRQUFBcUUsTUFD
QSxJQUFBNGEsRUFBQWhiLEVBQUFqNUIsT0FDQSxhQUtBLFFBQUFpNUIsRUFBQUMsRUFBQWxFLFFB
QUFxRSxNQUFBLENBQ0EsR0FBQUMsR0FBQUwsRUFBQWo1QixLQUNBLElBQUFzNUIsSUFDQTJhLEVB
QUEzYSxFQUFBLElBQ0EsU0FTQSxRQUNBLFNBQ0EsVUFJQSxRQUFBMmYsR0FBQXpCLEVBQUF0ckIs
R0FFQSxpQkFBQXNyQixJQUtBLFdBQUF0ckIsRUFBQSxrQkFLQSxrQkFBQTdILFNBQUE2SCxZQUFB
N0gsU0FRQSxRQUFBb3pCLEdBQUF2ckIsR0FDQSxHQUFBc3JCLFNBQUF0ckIsRUFDQSxPQUFBbG1C
LE9BQUF3UixRQUFBMFUsR0FDQSxRQUVBQSxZQUFBckIsUUFJQSxTQUVBb3VCLEVBQUF6QixFQUFB
dHJCLEdBQ0EsU0FFQXNyQixFQUtBLFFBQUFHLEdBQUF6ckIsR0FDQSxzQkFBQUEsSUFBQSxPQUFB
QSxFQUNBLFNBQUFBLENBRUEsSUFBQXNyQixHQUFBQyxFQUFBdnJCLEVBQ0EsZUFBQXNyQixFQUFB
LENBQ0EsR0FBQXRyQixZQUFBbHZCLE1BQ0EsWUFDTyxJQUFBa3ZCLFlBQUFyQixRQUNQLGVBR0Es
TUFBQTJzQixHQUtBLFFBQUFvQixHQUFBNTRDLEdBQ0EsR0FBQW5ILEdBQUE4K0MsRUFBQTMzQyxF
QUNBLFFBQUFuSCxHQUNBLFlBQ0EsYUFDQSxZQUFBQSxDQUNBLGVBQ0EsV0FDQSxhQUNBLFdBQUFB
LENBQ0EsU0FDQSxNQUFBQSxJQUtBLFFBQUF1L0MsR0FBQWxzQixHQUNBLE1BQUFBLEdBQUFsd0Is
YUFBQWt3QixFQUFBbHdCLFlBQUFoTSxLQUdBazhCLEVBQUFsd0IsWUFBQWhNLEtBRkFvbkQsRUFs
ZUEsR0FBQU4sR0FBQSxrQkFBQXp5QixnQkFBQTZVLFNBQ0E2ZCxFQUFBLGFBc0VBSyxFQUFBLGdC
QUlBeHpDLEdBQ0EwZ0MsTUFBQWdULEVBQUEsU0FDQTNVLEtBQUEyVSxFQUFBLFdBQ0FsNEIsS0FB
QWs0QixFQUFBLFlBQ0F2ZixPQUFBdWYsRUFBQSxVQUNBNXdDLE9BQUE0d0MsRUFBQSxVQUNBN2lD
LE9BQUE2aUMsRUFBQSxVQUNBaEIsT0FBQWdCLEVBQUEsVUFFQWYsSUFBQXFCLElBQ0FwQixRQUFB
cUIsRUFDQWx5QyxRQUFBb3lDLElBQ0F0QixXQUFBdUIsRUFDQXJsRCxLQUFBa21ELElBQ0FuQyxT
QUFBOEIsRUFDQTdCLE1BQUEwQixFQUNBekIsVUFBQTZCLEVBQ0FqWSxNQUFBc1ksRUE4WUEsT0E3
V0E5QixHQUFBdm9ELFVBQUFvQixNQUFBcEIsVUEwV0FtVixFQUFBMmIsaUJBQ0EzYixFQUFBaUIs
VUFBQWpCLEVBRUFBLEl6SDhzWU0sU0FBUzVWLEVBQVFELEVBQVNILEcwSDVzWmhDLFlBRUFJLEdB
QUFELFFBQUFILEVBQUEsTTFIbXRaTSxTQUFTSSxFQUFRRCxHMkgzc1p2QixZQUVBLElBQUFtckQs
SUFDQXY0QyxZQUVBdzRDLGVBQUEsRUFDQUMsZUFBQSxFQUNBQyxnQkFBQSxFQUNBQyxjQUFBLEVB
Q0FDLGVBQUEsRUFDQUMsb0JBQUEsRUFDQUMsYUFBQSxFQUNBQyx1QkFBQSxFQUVBQyxvQkFBQSxF
QUNBQyxlQUFBLEVBQ0FDLGdCQUFBLEVBQ0FDLGdCQUFBLEVBQ0FDLGFBQUEsRUFDQUMsYUFBQSxF
QUNBQyxpQkFBQSxFQUNBQyx1QkFBQSxFQUNBQyxtQkFBQSxFQUNBQyxtQkFBQSxFQUNBQyxlQUFB
LEVBQ0FDLGdCQUFBLEVBQ0FDLGdCQUFBLEVBQ0FDLGdCQUFBLEVBQ0FDLFlBQUEsRUFDQUMsZ0JB
QUEsRUFDQUMsZ0JBQUEsRUFDQUMsZ0JBQUEsRUFDQUMsaUJBQUEsRUFFQUMsY0FBQSxFQUNBQyxZ
QUFBLEVBQ0FDLFlBQUEsRUFDQUMsZ0JBQUEsRUFFQUMsa0JBQUEsRUFDQUMsZUFBQSxFQUVBQyx3
QkFBQSxFQUNBQyxnQkFBQSxFQUNBQyxnQkFBQSxFQUNBQyxlQUFBLEVBQ0FDLGdCQUFBLEVBQ0FD
LG1CQUFBLEVBQ0FDLG9CQUFBLEVBQ0FDLGNBQUEsRUFDQUMsa0JBQUEsRUFDQUMsWUFBQSxFQUNB
QyxnQkFBQSxFQUNBQyxnQkFBQSxFQUNBQyxnQkFBQSxFQUNBQyxlQUFBLEVBQ0FDLGVBQUEsR0FF
QXI3QyxxQkFDQUMsb0JBR0E5UyxHQUFBRCxRQUFBbXJELEczSDJ0Wk0sU0FBU2xyRCxFQUFRRCxF
QUFTSCxHNEh6eFpoQyxZQUVBLElBQUE0SCxHQUFBNUgsRUFBQSxHQUVBbTJCLEVBQUFuMkIsRUFB
QSxJQUVBdXVELEdBQ0FDLGtCQUFBLFdBQ0FyNEIsRUFBQXZ1QixFQUFBUixvQkFBQTlGLFFBSUFs
QixHQUFBRCxRQUFBb3VELEc1SHl5Wk0sU0FBU251RCxFQUFRRCxFQUFTSCxHNkhyelpoQyxZQWdD
QSxTQUFBeXVELEtBQ0EsR0FBQUMsR0FBQTVtRCxPQUFBNG1ELEtBQ0EsdUJBQUFBLElBQUEsa0JB
QUFBLEdBQUF0M0MsU0FBQTRrQyxTQUFBMFMsRUFBQXQzQyxVQUFBLFFBOENBLFFBQUF1M0MsR0FB
QTNnRCxHQUNBLE9BQUFBLEVBQUFnWCxTQUFBaFgsRUFBQWtYLFFBQUFsWCxFQUFBbVgsWUFFQW5Y
LEVBQUFnWCxTQUFBaFgsRUFBQWtYLFFBU0EsUUFBQTBwQyxHQUFBNXpDLEdBQ0EsT0FBQUEsR0FD
QSwwQkFDQSxNQUFBbVMsR0FBQTBoQyxnQkFDQSx5QkFDQSxNQUFBMWhDLEdBQUEyaEMsY0FDQSw0
QkFDQSxNQUFBM2hDLEdBQUE0aEMsbUJBWUEsUUFBQUMsR0FBQWgwQyxFQUFBaE4sR0FDQSxxQkFB
QWdOLEdBQUFoTixFQUFBcW1CLFVBQUE0NkIsRUFVQSxRQUFBQyxHQUFBbDBDLEVBQUFoTixHQUNB
LE9BQUFnTixHQUNBLGVBRUEsTUFBQW0wQyxHQUFBbGlDLFFBQUFqZixFQUFBcW1CLGFBQ0Esa0JB
R0EsTUFBQXJtQixHQUFBcW1CLFVBQUE0NkIsQ0FDQSxtQkFDQSxtQkFDQSxjQUVBLFFBQ0EsU0FD
QSxVQWFBLFFBQUFHLEdBQUFwaEQsR0FDQSxHQUFBaVEsR0FBQWpRLEVBQUFpUSxNQUNBLHVCQUFB
QSxJQUFBLFFBQUFBLEdBQ0FBLEVBQUErSixLQUVBLEtBU0EsUUFBQXFuQyxHQUFBcjBDLEVBQUFq
TixFQUFBQyxFQUFBQyxHQUNBLEdBQUE4bkIsR0FDQXU1QixDQVlBLElBVkFDLEVBQ0F4NUIsRUFB
QTY0QixFQUFBNXpDLEdBQ0d3MEMsRUFJQU4sRUFBQWwwQyxFQUFBaE4sS0FDSCtuQixFQUFBNUks
RUFBQTJoQyxnQkFKQUUsRUFBQWgwQyxFQUFBaE4sS0FDQStuQixFQUFBNUksRUFBQTBoQyxtQkFN
QTk0QixFQUNBLFdBR0EwNUIsS0FHQUQsR0FBQXo1QixJQUFBNUksRUFBQTBoQyxpQkFFSzk0QixJ
QUFBNUksRUFBQTJoQyxnQkFDTFUsSUFDQUYsRUFBQUUsRUFBQUUsV0FIQUYsRUFBQUcsRUFBQS9s
RCxVQUFBcUUsR0FRQSxJQUFBa0IsR0FBQXlnRCxFQUFBaG1ELFVBQUFtc0IsRUFBQWhvQixFQUFB
QyxFQUFBQyxFQUVBLElBQUFxaEQsRUFHQW5nRCxFQUFBNlksS0FBQXNuQyxNQUNHLENBQ0gsR0FB
QU8sR0FBQVQsRUFBQXBoRCxFQUNBLFFBQUE2aEQsSUFDQTFnRCxFQUFBNlksS0FBQTZuQyxHQUtB
LE1BREE1eUMsR0FBQVAsNkJBQUF2TixHQUNBQSxFQVFBLFFBQUEyZ0QsR0FBQTkwQyxFQUFBaE4s
R0FDQSxPQUFBZ04sR0FDQSx3QkFDQSxNQUFBbzBDLEdBQUFwaEQsRUFDQSxtQkFlQSxHQUFBa21D
LEdBQUFsbUMsRUFBQWttQyxLQUNBLE9BQUFBLEtBQUE2YixFQUNBLE1BR0FDLEdBQUEsRUFDQUMs
RUFFQSxvQkFFQSxHQUFBQyxHQUFBbGlELEVBQUFnYSxJQUtBLE9BQUFrb0MsS0FBQUQsR0FBQUQs
RUFDQSxLQUdBRSxDQUVBLFNBRUEsYUFZQSxRQUFBQyxHQUFBbjFDLEVBQUFoTixHQUtBLEdBQUF3
aEQsRUFBQSxDQUNBLHlCQUFBeDBDLElBQUF1MEMsR0FBQUwsRUFBQWwwQyxFQUFBaE4sR0FBQSxD
QUNBLEdBQUFraUQsR0FBQVYsRUFBQUUsU0FHQSxPQUZBQyxHQUFBMWlELFFBQUF1aUQsR0FDQUEs
RUFBQSxLQUNBVSxFQUVBLFlBR0EsT0FBQWwxQyxHQUNBLGVBR0EsV0FDQSxtQkFpQkEsTUFBQWhO
LEdBQUFrbUMsUUFBQXlhLEVBQUEzZ0QsR0FDQTFLLE9BQUFHLGFBQUF1SyxFQUFBa21DLE9BRUEs
SUFDQSx5QkFDQSxNQUFBdWIsR0FBQSxLQUFBemhELEVBQUFnYSxJQUNBLFNBQ0EsYUFVQSxRQUFB
b29DLEdBQUFwMUMsRUFBQWpOLEVBQUFDLEVBQUFDLEdBQ0EsR0FBQWlpRCxFQVVBLElBUEFBLEVB
REFHLEVBQ0FQLEVBQUE5MEMsRUFBQWhOLEdBRUFtaUQsRUFBQW4xQyxFQUFBaE4sSUFLQWtpRCxF
QUNBLFdBR0EsSUFBQS9nRCxHQUFBbWhELEVBQUExbUQsVUFBQXVqQixFQUFBb2pDLFlBQUF4aUQs
RUFBQUMsRUFBQUMsRUFJQSxPQUZBa0IsR0FBQTZZLEtBQUFrb0MsRUFDQWp6QyxFQUFBUCw2QkFB
QXZOLEdBQ0FBLEVBclZBLEdBQUE4TixHQUFBamQsRUFBQSxJQUNBaUksRUFBQWpJLEVBQUEsR0FD
QTJ2RCxFQUFBM3ZELEVBQUEsS0FDQTR2RCxFQUFBNXZELEVBQUEsS0FDQXN3RCxFQUFBdHdELEVB
QUEsS0FFQW12RCxHQUFBLFlBQ0FGLEVBQUEsSUFFQU0sRUFBQXRuRCxFQUFBSixXQUFBLG9CQUFB
QyxRQUVBNkosRUFBQSxJQUNBMUosR0FBQUosV0FBQSxnQkFBQUUsWUFDQTRKLEVBQUE1SixTQUFB
NEosYUFNQSxJQUFBMCtDLEdBQUFwb0QsRUFBQUosV0FBQSxhQUFBQyxVQUFBNkosSUFBQTg4QyxJ
QUtBZ0IsRUFBQXhuRCxFQUFBSixhQUFBMG5ELEdBQUE1OUMsS0FBQSxHQUFBQSxHQUFBLElBV0Fv
K0MsRUFBQSxHQUNBRSxFQUFBM3NELE9BQUFHLGFBQUFzc0QsR0FHQTVpQyxHQUNBb2pDLGFBQ0Ex
MEMseUJBQ0EyMEMsUUFBQSxnQkFDQUMsU0FBQSx3QkFFQS9zQyxjQUFBLDhEQUVBb3JDLGdCQUNB
anpDLHlCQUNBMjBDLFFBQUEsbUJBQ0FDLFNBQUEsMkJBRUEvc0MsY0FBQSxxRkFFQW1yQyxrQkFD
QWh6Qyx5QkFDQTIwQyxRQUFBLHFCQUNBQyxTQUFBLDZCQUVBL3NDLGNBQUEsdUZBRUFxckMsbUJB
Q0FsekMseUJBQ0EyMEMsUUFBQSxzQkFDQUMsU0FBQSw4QkFFQS9zQyxjQUFBLHlGQUtBc3NDLEdB
QUEsRUFzRkFSLEVBQUEsS0E2TUFrQixHQUNBdmpDLGFBRUFwUyxjQUFBLFNBQUFDLEVBQUFqTixF
QUFBQyxFQUFBQyxHQUNBLE9BQUFvaEQsRUFBQXIwQyxFQUFBak4sRUFBQUMsRUFBQUMsR0FBQW1p
RCxFQUFBcDFDLEVBQUFqTixFQUFBQyxFQUFBQyxLQUlBN04sR0FBQUQsUUFBQXV3RCxHN0hxMFpN
LFNBQVN0d0QsRUFBUUQsRUFBU0gsRzhIenJhaEMsWUFFQSxJQUFBZzhCLEdBQUFoOEIsRUFBQSxJ
QUNBaUksRUFBQWpJLEVBQUEsR0FJQTJ3RCxHQUhBM3dELEVBQUEsR0FFQUEsRUFBQSxJQUNBQSxF
QUFBLE1BQ0FvbUQsRUFBQXBtRCxFQUFBLEtBQ0F1bUQsRUFBQXZtRCxFQUFBLEtBR0E0d0QsR0FG
QTV3RCxFQUFBLEdBRUF1bUQsRUFBQSxTQUFBc0ssR0FDQSxNQUFBekssR0FBQXlLLE1BR0FDLEdB
QUEsRUFDQUMsRUFBQSxVQUNBLElBQUE5b0QsRUFBQUosVUFBQSxDQUNBLEdBQUFtcEQsR0FBQWpw
RCxTQUFBQyxjQUFBLE9BQUFpcEQsS0FDQSxLQUVBRCxFQUFBejFCLEtBQUEsR0FDRyxNQUFBMzVC
LEdBQ0hrdkQsR0FBQSxFQUdBOXVELFNBQUErRixTQUFBdzRCLGdCQUFBMHdCLE1BQUFDLFdBQ0FI
LEVBQUEsY0FNQSxHQWtGQUksSUFjQUMsc0JBQUEsU0FBQUMsRUFBQS9yRCxHQUNBLEdBQUFnc0Qs
R0FBQSxFQUNBLFFBQUFULEtBQUFRLEdBQ0EsR0FBQUEsRUFBQXZ3RCxlQUFBK3ZELEdBQUEsQ0FH
QSxHQUFBVSxHQUFBLElBQUFWLEVBQUE1akMsUUFBQSxNQUNBdWtDLEVBQUFILEVBQUFSLEVBTUEs
T0FBQVcsSUFDQUYsR0FBQVYsRUFBQUMsR0FBQSxJQUNBUyxHQUFBWCxFQUFBRSxFQUFBVyxFQUFB
bHNELEVBQUFpc0QsR0FBQSxLQUdBLE1BQUFELElBQUEsTUFXQUcsa0JBQUEsU0FBQTFzRCxFQUFB
c3NELEVBQUEvckQsR0FTQSxHQUFBMnJELEdBQUFsc0QsRUFBQWtzRCxLQUNBLFFBQUFKLEtBQUFR
LEdBQ0EsR0FBQUEsRUFBQXZ3RCxlQUFBK3ZELEdBQUEsQ0FHQSxHQUFBVSxHQUFBLElBQUFWLEVB
QUE1akMsUUFBQSxNQU1BdWtDLEVBQUFiLEVBQUFFLEVBQUFRLEVBQUFSLEdBQUF2ckQsRUFBQWlz
RCxFQUlBLElBSEEsVUFBQVYsR0FBQSxhQUFBQSxJQUNBQSxFQUFBRSxHQUVBUSxFQUNBTixFQUFB
UyxZQUFBYixFQUFBVyxPQUNPLElBQUFBLEVBQ1BQLEVBQUFKLEdBQUFXLE1BQ08sQ0FDUCxHQUFB
RyxHQUFBYixHQUFBOTBCLEVBQUF0Qyw0QkFBQW0zQixFQUNBLElBQUFjLEVBR0EsT0FBQUMsS0FB
QUQsR0FDQVYsRUFBQVcsR0FBQSxPQUdBWCxHQUFBSixHQUFBLE1BT0F6d0QsR0FBQUQsUUFBQWd4
RCxHOUh5c2FNLFNBQVMvd0QsRUFBUUQsRUFBU0gsRytIcDVhaEMsWUF3QkEsU0FBQTZ4RCxHQUFB
bnNELEVBQUFzSSxFQUFBekosR0FDQSxHQUFBNEssR0FBQXRCLEVBQUFqRSxVQUFBdWpCLEVBQUEy
a0MsT0FBQXBzRCxFQUFBc0ksRUFBQXpKLEVBR0EsT0FGQTRLLEdBQUFsRSxLQUFBLFNBQ0FnUyxF
QUFBUCw2QkFBQXZOLEdBQ0FBLEVBV0EsUUFBQTRpRCxHQUFBcHhCLEdBQ0EsR0FBQXR2QixHQUFB
c3ZCLEVBQUF0dkIsVUFBQXN2QixFQUFBdHZCLFNBQUFXLGFBQ0Esa0JBQUFYLEdBQUEsVUFBQUEs
R0FBQSxTQUFBc3ZCLEVBQUExMUIsS0FTQSxRQUFBK21ELEdBQUFoa0QsR0FDQSxHQUFBbUIsR0FB
QTBpRCxFQUFBSSxFQUFBamtELEVBQUEwUCxFQUFBMVAsR0FhQTVFLEdBQUFVLGVBQUFvb0QsRUFB
QS9pRCxHQUdBLFFBQUEraUQsR0FBQS9pRCxHQUNBOEssRUFBQW9CLGNBQUFsTSxHQUNBOEssRUFB
QXFCLG1CQUFBLEdBR0EsUUFBQTYyQyxHQUFBNXRELEVBQUF3SixHQUNBdW9CLEVBQUEveEIsRUFD
QTB0RCxFQUFBbGtELEVBQ0F1b0IsRUFBQWh1QixZQUFBLFdBQUEwcEQsR0FHQSxRQUFBSSxLQUNB
OTdCLElBR0FBLEVBQUFMLFlBQUEsV0FBQSs3QixHQUNBMTdCLEVBQUEsS0FDQTI3QixFQUFBLE1B
R0EsUUFBQUksR0FBQXRrRCxFQUFBQyxHQUNBLEdBQUFza0QsR0FBQXBxQixFQUFBWSxxQkFBQS82
QixHQUNBNEwsRUFBQTNMLEVBQUEyTCxhQUFBLEdBQUE0NEMsRUFBQUMsMEJBRUEsSUFBQUYsR0FB
QTM0QyxFQUNBLE1BQUE1TCxHQUlBLFFBQUEwa0QsR0FBQXozQyxFQUFBak4sR0FDQSxpQkFBQWlO
LEVBQ0EsTUFBQWpOLEdBSUEsUUFBQTJrRCxHQUFBMTNDLEVBQUF6VyxFQUFBd0osR0FDQSxhQUFB
aU4sR0FHQW8zQyxJQUNBRCxFQUFBNXRELEVBQUF3SixJQUNHLFlBQUFpTixHQUNIbzNDLElBb0JB
LFFBQUFPLEdBQUFwdUQsRUFBQXdKLEdBQ0F1b0IsRUFBQS94QixFQUNBMHRELEVBQUFsa0QsRUFD
QXVvQixFQUFBaHVCLFlBQUEsbUJBQUFzcUQsR0FPQSxRQUFBQyxLQUNBdjhCLElBR0FBLEVBQUFM
LFlBQUEsbUJBQUEyOEIsR0FFQXQ4QixFQUFBLEtBQ0EyN0IsRUFBQSxNQU9BLFFBQUFXLEdBQUE1
a0QsR0FDQSxVQUFBQSxFQUFBNEYsY0FHQXkrQyxFQUFBSixFQUFBamtELElBQ0Fna0QsRUFBQWhr
RCxHQUlBLFFBQUE4a0QsR0FBQTkzQyxFQUFBelcsRUFBQXdKLEdBQ0EsYUFBQWlOLEdBY0E2M0Ms
SUFDQUYsRUFBQXB1RCxFQUFBd0osSUFDRyxZQUFBaU4sR0FDSDYzQyxJQUtBLFFBQUFFLEdBQUEv
M0MsRUFBQWpOLEVBQUFDLEdBQ0EsMEJBQUFnTixHQUFBLGFBQUFBLEdBQUEsZUFBQUEsRUFXQSxN
QUFBcTNDLEdBQUFKLEVBQUFqa0QsR0FPQSxRQUFBZ2xELEdBQUFyeUIsR0FJQSxHQUFBdHZCLEdB
QUFzdkIsRUFBQXR2QixRQUNBLE9BQUFBLElBQUEsVUFBQUEsRUFBQVcsZ0JBQUEsYUFBQTJ1QixF
QUFBMTFCLE1BQUEsVUFBQTAxQixFQUFBMTFCO0NBR0EsUUFBQWdvRCxHQUFBajRDLEVBQUFqTixF
QUFBQyxHQUNBLGdCQUFBZ04sRUFDQSxNQUFBcTNDLEdBQUF0a0QsRUFBQUMsR0FJQSxRQUFBa2xE
LEdBQUFsNEMsRUFBQWpOLEVBQUFDLEdBQ0EsZ0JBQUFnTixHQUFBLGNBQUFBLEVBQ0EsTUFBQXEz
QyxHQUFBdGtELEVBQUFDLEdBSUEsUUFBQW1sRCxHQUFBenRELEVBQUFYLEdBRUEsU0FBQVcsRUFB
QSxDQUtBLEdBQUF5cEMsR0FBQXpwQyxFQUFBdTRCLGVBQUFsNUIsRUFBQWs1QixhQUVBLElBQUFr
UixLQUFBaWtCLFlBQUEsV0FBQXJ1RCxFQUFBa0csS0FBQSxDQUtBLEdBQUFtSCxHQUFBLEdBQUFy
TixFQUFBcU4sS0FDQXJOLEdBQUFHLGFBQUEsV0FBQWtOLEdBQ0FyTixFQUFBb3dCLGFBQUEsUUFB
QS9pQixLQTlPQSxHQUFBNkgsR0FBQWphLEVBQUEsSUFDQWlkLEVBQUFqZCxFQUFBLElBQ0FpSSxF
QUFBakksRUFBQSxHQUNBNEgsRUFBQTVILEVBQUEsR0FDQW9KLEVBQUFwSixFQUFBLEdBQ0E2TixF
QUFBN04sRUFBQSxJQUVBa29DLEVBQUFsb0MsRUFBQSxJQUNBMGQsRUFBQTFkLEVBQUEsSUFDQTRl
LEVBQUE1ZSxFQUFBLElBQ0EycEMsRUFBQTNwQyxFQUFBLElBRUFtdEIsR0FDQTJrQyxRQUNBajJD
LHlCQUNBMjBDLFFBQUEsV0FDQUMsU0FBQSxtQkFFQS9zQyxjQUFBLHVHQWFBNFMsRUFBQSxLQUNB
MjdCLEVBQUEsS0FVQW9CLEdBQUEsQ0FDQXByRCxHQUFBSixZQUVBd3JELEVBQUF6MEMsRUFBQSxh
QUFBN1csU0FBQTRKLGNBQUE1SixTQUFBNEosYUFBQSxHQXFFQSxJQUFBMmhELElBQUEsQ0FDQXJy
RCxHQUFBSixZQUlBeXJELEVBQUExMEMsRUFBQSw2QkFBQTdXLHFCQUFBNEosYUFBQSxHQXFJQSxJ
QUFBNGdELElBQ0FwbEMsYUFFQXFsQyw0QkFBQSxFQUNBZSx1QkFBQUQsRUFFQXY0QyxjQUFBLFNB
QUFDLEVBQUFqTixFQUFBQyxFQUFBQyxHQUNBLEdBRUF1bEQsR0FBQUMsRUFGQUMsRUFBQTNsRCxF
QUFBbkcsRUFBQVIsb0JBQUEyRyxHQUFBakcsTUFvQkEsSUFqQkFpcUQsRUFBQTJCLEdBQ0FMLEVB
Q0FHLEVBQUFmLEVBRUFnQixFQUFBZixFQUVLL29CLEVBQUErcEIsR0FDTEosRUFDQUUsRUFBQU4s
R0FFQU0sRUFBQVQsRUFDQVUsRUFBQVgsR0FFS0UsRUFBQVUsS0FDTEYsRUFBQVAsR0FHQU8sRUFB
QSxDQUNBLEdBQUE5dEQsR0FBQTh0RCxFQUFBeDRDLEVBQUFqTixFQUFBQyxFQUNBLElBQUF0SSxF
QUFBLENBQ0EsR0FBQXlKLEdBQUEwaUQsRUFBQW5zRCxFQUFBc0ksRUFBQUMsRUFDQSxPQUFBa0Is
SUFJQXNrRCxHQUNBQSxFQUFBejRDLEVBQUEwNEMsRUFBQTNsRCxHQUlBLFlBQUFpTixHQUNBbTRD
LEVBQUFwbEQsRUFBQTJsRCxJQUtBdHpELEdBQUFELFFBQUFveUQsRy9IbzZhTSxTQUFTbnlELEVB
QVFELEVBQVNILEdnSWh0YmhDLFlBRUEsSUFBQTRHLEdBQUE1RyxFQUFBLEdBRUFzUixFQUFBdFIs
RUFBQSxJQUNBaUksRUFBQWpJLEVBQUEsR0FFQTJqRCxFQUFBM2pELEVBQUEsS0FDQXNDLEVBQUF0
QyxFQUFBLEdBR0Fnc0IsR0FGQWhzQixFQUFBLElBV0Fpc0IsaUNBQUEsU0FBQTBuQyxFQUFBNStD
LEdBS0EsR0FKQTlNLEVBQUFKLFVBQUEsT0FBQWpCLEVBQUEsTUFDQW1PLEVBQUEsT0FBQW5PLEVB
QUEsTUFDQSxTQUFBK3NELEVBQUF0aUQsU0FBQXpLLEVBQUEsYUFFQSxnQkFBQW1PLEdBQUEsQ0FD
QSxHQUFBNitDLEdBQUFqUSxFQUFBNXVDLEVBQUF6UyxHQUFBLEVBQ0FxeEQsR0FBQTNzRCxXQUFB
OEosYUFBQThpRCxFQUFBRCxPQUVBcmlELEdBQUFYLHFCQUFBZ2pELEVBQUE1K0MsS0FLQTNVLEdB
QUFELFFBQUE2ckIsR2hJZ3ViTSxTQUFTNXJCLEVBQVFELEdpSWx3YnZCLFlBWUEsSUFBQTB6RCxJ
QUFBLHFKQUVBenpELEdBQUFELFFBQUEwekQsR2pJa3hiTSxTQUFTenpELEVBQVFELEVBQVNILEdr
SWh5YmhDLFlBRUEsSUFBQWlkLEdBQUFqZCxFQUFBLElBQ0E0SCxFQUFBNUgsRUFBQSxHQUNBeWtC
LEVBQUF6a0IsRUFBQSxJQUVBbXRCLEdBQ0EybUMsWUFDQXo1QyxpQkFBQSxlQUNBcUosY0FBQSwr
QkFFQXF3QyxZQUNBMTVDLGlCQUFBLGVBQ0FxSixjQUFBLGdDQUlBc3dDLEdBQ0E3bUMsYUFTQXBT
LGNBQUEsU0FBQUMsRUFBQWpOLEVBQUFDLEVBQUFDLEdBQ0Esb0JBQUErTSxJQUFBaE4sRUFBQXVY
LGVBQUF2WCxFQUFBd1gsYUFDQSxXQUVBLG9CQUFBeEssR0FBQSxpQkFBQUEsRUFFQSxXQUdBLElB
QUFpNUMsRUFDQSxJQUFBaG1ELEVBQUFuRyxTQUFBbUcsRUFFQWdtRCxFQUFBaG1ELE1BQ0ssQ0FF
TCxHQUFBNFAsR0FBQTVQLEVBQUE2UCxhQUVBbTJDLEdBREFwMkMsRUFDQUEsRUFBQUUsYUFBQUYs
RUFBQUcsYUFFQWxXLE9BSUEsR0FBQXJELEdBQ0FFLENBQ0Esb0JBQUFxVyxFQUFBLENBQ0F2VyxF
QUFBc0osQ0FDQSxJQUFBbW1ELEdBQUFsbUQsRUFBQXVYLGVBQUF2WCxFQUFBMFgsU0FDQS9nQixH
QUFBdXZELEVBQUF0c0QsRUFBQWYsMkJBQUFxdEQsR0FBQSxTQUdBenZELEdBQUEsS0FDQUUsRUFB
QW9KLENBR0EsSUFBQXRKLElBQUFFLEVBRUEsV0FHQSxJQUFBOG5CLEdBQUEsTUFBQWhvQixFQUFB
d3ZELEVBQUFyc0QsRUFBQVIsb0JBQUEzQyxHQUNBMHZELEVBQUEsTUFBQXh2RCxFQUFBc3ZELEVB
QUFyc0QsRUFBQVIsb0JBQUF6QyxHQUVBa1ksRUFBQTRILEVBQUE3YSxVQUFBdWpCLEVBQUE0bUMs
V0FBQXR2RCxFQUFBdUosRUFBQUMsRUFDQTRPLEdBQUE1UixLQUFBLGFBQ0E0UixFQUFBdFksT0FB
QWtvQixFQUNBNVAsRUFBQTBJLGNBQUE0dUMsQ0FFQSxJQUFBcjNDLEdBQUEySCxFQUFBN2EsVUFB
QXVqQixFQUFBMm1DLFdBQUFudkQsRUFBQXFKLEVBQUFDLEVBT0EsT0FOQTZPLEdBQUE3UixLQUFB
LGFBQ0E2UixFQUFBdlksT0FBQTR2RCxFQUNBcjNDLEVBQUF5SSxjQUFBa0gsRUFFQXhQLEVBQUFM
LCtCQUFBQyxFQUFBQyxFQUFBclksRUFBQUUsSUFFQWtZLEVBQUFDLElBSUExYyxHQUFBRCxRQUFB
NnpELEdsSWd6Yk0sU0FBUzV6RCxFQUFRRCxFQUFTSCxHbUl0NGJoQyxZQW1CQSxTQUFBMnZELEdB
QUFuNUIsR0FDQWwxQixLQUFBOHlELE1BQUE1OUIsRUFDQWwxQixLQUFBK3lELFdBQUEveUQsS0FB
QW04QyxVQUNBbjhDLEtBQUFnekQsY0FBQSxLQXBCQSxHQUFBbm9ELEdBQUFuTSxFQUFBLEdBRUFv
TSxFQUFBcE0sRUFBQSxJQUVBeW5DLEVBQUF6bkMsRUFBQSxHQW1CQW1NLEdBQUF3akQsRUFBQTl1
RCxXQUNBbU0sV0FBQSxXQUNBMUwsS0FBQTh5RCxNQUFBLEtBQ0E5eUQsS0FBQSt5RCxXQUFBLEtB
Q0EveUQsS0FBQWd6RCxjQUFBLE1BUUE3VyxRQUFBLFdBQ0EsZUFBQW44QyxNQUFBOHlELE1BQ0E5
eUQsS0FBQTh5RCxNQUFBaGlELE1BRUE5USxLQUFBOHlELE1BQUEzc0IsTUFTQWlvQixRQUFBLFdB
Q0EsR0FBQXB1RCxLQUFBZ3pELGNBQ0EsTUFBQWh6RCxNQUFBZ3pELGFBR0EsSUFBQTd5QixHQUdB
RSxFQUZBNHlCLEVBQUFqekQsS0FBQSt5RCxXQUNBRyxFQUFBRCxFQUFBM3hELE9BRUE2eEQsRUFB
QW56RCxLQUFBbThDLFVBQ0FpWCxFQUFBRCxFQUFBN3hELE1BRUEsS0FBQTYrQixFQUFBLEVBQW1C
QSxFQUFBK3lCLEdBQ25CRCxFQUFBOXlCLEtBQUFnekIsRUFBQWh6QixHQUR3Q0EsS0FNeEMsR0FB
QWt6QixHQUFBSCxFQUFBL3lCLENBQ0EsS0FBQUUsRUFBQSxFQUFpQkEsR0FBQWd6QixHQUNqQkos
RUFBQUMsRUFBQTd5QixLQUFBOHlCLEVBQUFDLEVBQUEveUIsR0FEZ0NBLEtBTWhDLEdBQUFpekIs
R0FBQWp6QixFQUFBLElBQUFBLEVBQUEzL0IsTUFFQSxPQURBVixNQUFBZ3pELGNBQUFHLEVBQUF4
ekQsTUFBQXdnQyxFQUFBbXpCLEdBQ0F0ekQsS0FBQWd6RCxpQkFJQWxvRCxFQUFBaUIsYUFBQXNp
RCxHQUVBdnZELEVBQUFELFFBQUF3dkQsR25JczViTSxTQUFTdnZELEVBQVFELEVBQVNILEdvSXor
YmhDLFlBRUEsSUFBQXNILEdBQUF0SCxFQUFBLElBRUF1UyxFQUFBakwsRUFBQXNHLFVBQUEyRSxr
QkFDQUMsRUFBQWxMLEVBQUFzRyxVQUFBNEUsa0JBQ0FDLEVBQUFuTCxFQUFBc0csVUFBQTZFLGtC
QUNBQyxFQUFBcEwsRUFBQXNHLFVBQUE4RSwyQkFDQUMsRUFBQXJMLEVBQUFzRyxVQUFBK0UsNkJB
RUFraUQsR0FDQXpoRCxrQkFBQTZwQixPQUFBcDhCLFVBQUFpUixLQUFBeUcsS0FBQSxHQUFBMGtC
LFFBQUEsaUJBQUEzMUIsRUFBQStNLG9CQUFBLFFBQ0F0QixZQUlBK2hELE9BQUEsRUFDQUMsY0FB
QSxFQUNBQyxVQUFBLEVBQ0FsVyxPQUFBLEVBQ0FtVyxnQkFBQXppRCxFQUNBMGlELGtCQUFBLEVB
Q0FDLElBQUEsRUFFQUMsR0FBQSxFQUNBQyxNQUFBN2lELEVBQ0E4aUQsYUFBQSxFQUdBQyxTQUFB
L2lELEVBQ0F5aUIsUUFBQXppQixFQUNBZ2pELFlBQUEsRUFDQUMsWUFBQSxFQUNBQyxRQUFBLEVB
Q0FDLFVBQUEsRUFDQWhsQyxRQUFBcGUsRUFBQUMsRUFDQW9qRCxLQUFBLEVBQ0FDLFFBQUEsRUFD
QXRoQixVQUFBLEVBQ0F1aEIsS0FBQXBqRCxFQUNBcWpELFFBQUEsRUFDQXhwQyxRQUFBLEVBQ0Fx
VSxnQkFBQSxFQUNBbzFCLFlBQUEsRUFDQUMsU0FBQXpqRCxFQUNBMGpELE9BQUEsRUFDQUMsWUFB
QSxFQUNBbnVDLEtBQUEsRUFDQW91QyxTQUFBLEVBQ0E5dEMsUUFBQTlWLEVBQ0E2akQsTUFBQTdq
RCxFQUNBb2xDLElBQUEsRUFDQTErQixTQUFBMUcsRUFDQThqRCxTQUFBM2pELEVBQ0E0akQsVUFB
QSxFQUNBQyxRQUFBLEVBQ0FDLEtBQUEsRUFDQUMsV0FBQSxFQUNBQyxZQUFBLEVBQ0FDLFdBQUEs
RUFDQUMsZUFBQXJrRCxFQUNBc2tELFdBQUEsRUFDQUMsWUFBQSxFQUNBQyxRQUFBLEVBQ0FDLE9B
QUEsRUFDQS9sQyxPQUFBMWUsRUFDQTBrRCxLQUFBLEVBQ0FDLEtBQUEsRUFDQUMsU0FBQSxFQUNB
QyxRQUFBLEVBQ0FDLFVBQUEsRUFDQUMsS0FBQSxFQUNBbDNELEdBQUEsRUFDQW0zRCxVQUFBLEVB
Q0FDLFVBQUEsRUFDQTN0QyxHQUFBLEVBQ0E0dEMsVUFBQSxFQUNBQyxRQUFBLEVBQ0FDLEtBQUEs
RUFDQUMsTUFBQSxFQUNBQyxLQUFBLEVBQ0FDLEtBQUEsRUFDQUMsS0FBQXhsRCxFQUNBeWxELElB
QUEsRUFDQUMsU0FBQSxFQUNBQyxhQUFBLEVBQ0FDLFlBQUEsRUFDQUMsSUFBQSxFQUNBQyxVQUFB
LEVBQ0FDLE1BQUEsRUFDQUMsV0FBQSxFQUNBcnJELE9BQUEsRUFDQWkxQixJQUFBLEVBQ0FxMkIs
VUFBQSxFQUdBcDZCLFNBQUE5ckIsRUFBQUMsRUFDQWttRCxNQUFBbm1ELEVBQUFDLEVBQ0FwUSxL
QUFBLEVBQ0F1MkQsTUFBQSxFQUNBQyxXQUFBcG1ELEVBQ0FxbUQsS0FBQXJtRCxFQUNBc21ELFFB
QUEsRUFDQUMsUUFBQSxFQUNBcGtCLFlBQUEsRUFDQXFrQixZQUFBeG1ELEVBQ0F5bUQsT0FBQSxF
QUNBQyxRQUFBLEVBQ0FDLFFBQUEsRUFDQUMsV0FBQSxFQUNBN25DLFNBQUEvZSxFQUNBNm1ELGVB
QUEsRUFDQUMsSUFBQSxFQUNBQyxTQUFBL21ELEVBQ0FnbkQsU0FBQWhuRCxFQUNBaW5ELEtBQUEs
RUFDQUMsS0FBQWhuRCxFQUNBaW5ELFFBQUFsbkQsRUFDQW1uRCxRQUFBLEVBQ0F4c0QsTUFBQSxF
QUNBeXNELE9BQUFybkQsRUFDQXNuRCxVQUFBLEVBQ0FDLFNBQUF2bkQsRUFDQWlzQixTQUFBbHNC
LEVBQUFDLEVBQ0FvZ0MsTUFBQSxFQUNBb25CLEtBQUF0bkQsRUFDQXVuRCxNQUFBLEVBQ0FDLEtB
QUF4bkQsRUFDQXluRCxXQUFBLEVBQ0FDLElBQUEsRUFDQUMsT0FBQSxFQUNBQyxRQUFBLEVBQ0FD
LE9BQUEsRUFDQTk0QixNQUFBaHZCLEVBQ0E0NEIsS0FBQSxFQUNBNGxCLE1BQUEsRUFDQXVKLFFB
QUEsRUFDQUMsU0FBQSxFQUNBbDJELE9BQUEsRUFDQXN5QyxNQUFBLEVBRUE1ckMsS0FBQSxFQUNB
eXZELE9BQUEsRUFDQXRvRCxNQUFBLEVBQ0F1b0QsTUFBQSxFQUNBQyxNQUFBLEVBQ0E5VyxLQUFB
LEVBS0ErVyxNQUFBLEVBQ0FDLFNBQUEsRUFDQUMsT0FBQSxFQUNBbmtDLE9BQUEsRUFFQTZwQixT
QUFBLEVBQ0F1YSxTQUFBLEVBQ0FDLE9BQUEsRUFDQUMsTUFBQSxFQU9BQyxlQUFBLEVBQ0FDLFlB
QUEsRUFFQUMsU0FBQSxFQUVBeHhCLE1BQUEsRUFHQXl4QixTQUFBLEVBQ0FDLFVBQUEvb0QsRUFD
QWdwRCxTQUFBLEVBSUFDLE9BQUEsRUFDQUMsUUFBQSxFQUdBQyxRQUFBLEVBR0FDLFNBQUEsRUFF
QUMsYUFBQSxHQUVBNW9ELG1CQUNBOGhELGNBQUEsaUJBQ0F4Z0IsVUFBQSxRQUNBOGlCLFFBQUEs
TUFDQUMsVUFBQSxjQUVBcGtELG9CQUNBQyxvQkFDQWYsTUFBQSxTQUFBck4sRUFBQXFOLEdBQ0Es
YUFBQUEsRUFDQXJOLEVBQUErNEIsZ0JBQUEsY0FNQSxXQUFBLzRCLEVBQUFrRyxNQUFBbEcsRUFB
QXFoQyxhQUFBLGNBQ0FyaEMsRUFBQW93QixhQUFBLFdBQUEvaUIsR0FDT3JOLEVBQUErMkQsV0FB
QS8yRCxFQUFBKzJELFNBQUFDLFVBQUFoM0QsRUFBQStZLGNBQUF3WSxnQkFBQXZ4QixHQVNQQSxF
QUFBb3dCLGFBQUEsV0FBQS9pQixNQU1BaFMsR0FBQUQsUUFBQTAwRCxHcEl5L2JNLFNBQVN6MEQs
RUFBUUQsRUFBU0gsSXFJbnVjaEMsU0FBQTIyQyxHQVVBLFlBcUJBLFNBQUFxbEIsR0FBQUMsRUFB
QTU0QixFQUFBamhDLEVBQUE4NUQsR0FFQSxHQUFBQyxHQUFBbjZELFNBQUFpNkQsRUFBQTc1RCxF
QVNBLE9BQUFpaEMsR0FBQTg0QixJQUNBRixFQUFBNzVELEdBQUFvaUMsRUFBQW5CLEdBQUEsSUEv
QkEsR0FBQS8zQixHQUFBdEwsRUFBQSxJQUVBd2tDLEVBQUF4a0MsRUFBQSxJQUVBdTFCLEdBREF2
MUIsRUFBQSxJQUNBQSxFQUFBLEtBQ0E2ckMsRUFBQTdyQyxFQUFBLEdBQ0FBLEdBQUEsRUFJQSxv
QkFBQTIyQyxNQUFBSSxLQThCQSxJQUFBcWxCLElBU0FDLG9CQUFBLFNBQUFDLEVBQUFqeUQsRUFB
QTJCLEVBQUFrd0QsR0FFQSxTQUFBSSxFQUNBLFdBRUEsSUFBQUwsS0FTQSxPQUZBcHdCLEdBQUF5
d0IsRUFBQU4sRUFBQUMsR0FFQUEsR0FhQU0sZUFBQSxTQUFBQyxFQUFBQyxFQUFBQyxFQUFBQyxF
QUFBdHlELEVBQUF1SyxFQUFBQyxFQUFBN0ksRUFBQWt3RCxHQU9BLEdBQUFPLEdBQUFELEVBQUEs
Q0FHQSxHQUFBcDZELEdBQ0F3NkQsQ0FDQSxLQUFBeDZELElBQUFxNkQsR0FDQSxHQUFBQSxFQUFB
MzdELGVBQUFzQixHQUFBLENBR0F3NkQsRUFBQUosS0FBQXA2RCxFQUNBLElBQUFvVCxHQUFBb25E
LEtBQUE1eEQsZ0JBQ0F1SyxFQUFBa25ELEVBQUFyNkQsRUFDQSxVQUFBdzZELEdBQUFybkMsRUFB
QS9mLEVBQUFELEdBQ0FqSyxFQUFBZ0ssaUJBQUFzbkQsRUFBQXJuRCxFQUFBbEwsRUFBQTJCLEdB
Q0F5d0QsRUFBQXI2RCxHQUFBdzZELE1BQ08sQ0FDUEEsSUFDQUQsRUFBQXY2RCxHQUFBa0osRUFB
QTRKLFlBQUEwbkQsR0FDQXR4RCxFQUFBNkosaUJBQUF5bkQsR0FBQSxHQUdBLElBQUFDLEdBQUFy
NEIsRUFBQWp2QixHQUFBLEVBQ0FrbkQsR0FBQXI2RCxHQUFBeTZELENBR0EsSUFBQUMsR0FBQXh4
RCxFQUFBb0osZUFBQW1vRCxFQUFBeHlELEVBQUF1SyxFQUFBQyxFQUFBN0ksRUFBQWt3RCxFQUNB
USxHQUFBMzFELEtBQUErMUQsSUFJQSxJQUFBMTZELElBQUFvNkQsSUFDQUEsRUFBQTE3RCxlQUFB
c0IsSUFBQXE2RCxLQUFBMzdELGVBQUFzQixLQUNBdzZELEVBQUFKLEVBQUFwNkQsR0FDQXU2RCxF
QUFBdjZELEdBQUFrSixFQUFBNEosWUFBQTBuRCxHQUNBdHhELEVBQUE2SixpQkFBQXluRCxHQUFB
LE1BWUFHLGdCQUFBLFNBQUFDLEVBQUE1bkQsR0FDQSxPQUFBaFQsS0FBQTQ2RCxHQUNBLEdBQUFB
LEVBQUFsOEQsZUFBQXNCLEdBQUEsQ0FDQSxHQUFBNjZELEdBQUFELEVBQUE1NkQsRUFDQWtKLEdB
QUE2SixpQkFBQThuRCxFQUFBN25ELEtBTUFoVixHQUFBRCxRQUFBaThELElySXN1YzhCNzdELEtB
QUtKLEVBQVNILEVBQW9CLE1BSTFELFNBQVNJLEVBQVFELEVBQVNILEdzSXYzY2hDLFlBRUEsSUFB
QWtzQixHQUFBbHNCLEVBQUEsSUFDQWs5RCxFQUFBbDlELEVBQUEsS0FPQW05RCxHQUNBL3FDLHVC
QUFBOHFDLEVBQUFFLGtDQUVBanJDLHNCQUFBakcsRUFBQUQsaUNBR0E3ckIsR0FBQUQsUUFBQWc5
RCxHdEl1NGNNLFNBQVMvOEQsRUFBUUQsRUFBU0gsR3VJdjVjaEMsWUE4QkEsU0FBQXE5RCxHQUFB
dm1ELElBUUEsUUFBQXdtRCxHQUFBeG1ELEVBQUFpQixJQU9BLFFBQUF3bEQsR0FBQXptRCxHQUNB
LFNBQUFBLEVBQUFqVyxZQUFBaVcsRUFBQWpXLFVBQUFpa0Msa0JBR0EsUUFBQTA0QixHQUFBMW1E
LEdBQ0EsU0FBQUEsRUFBQWpXLFlBQUFpVyxFQUFBalcsVUFBQW01QyxzQkFoREEsR0FBQXB6QyxH
QUFBNUcsRUFBQSxHQUNBbU0sRUFBQW5NLEVBQUEsR0FFQXlXLEVBQUF6VyxFQUFBLElBQ0FreUIs
RUFBQWx5QixFQUFBLElBQ0FpUSxFQUFBalEsRUFBQSxJQUNBcVosRUFBQXJaLEVBQUEsSUFDQWtk
LEVBQUFsZCxFQUFBLElBRUE4bUMsR0FEQTltQyxFQUFBLEdBQ0FBLEVBQUEsS0FDQXNMLEVBQUF0
TCxFQUFBLElBTUFrZSxFQUFBbGUsRUFBQSxJQUVBaXFCLEdBREFqcUIsRUFBQSxHQUNBQSxFQUFB
LEtBQ0F1MUIsRUFBQXYxQixFQUFBLElBR0F5OUQsR0FGQXo5RCxFQUFBLElBR0EwOUQsWUFBQSxF
QUNBQyxVQUFBLEVBQ0FDLG9CQUFBLEdBSUFQLEdBQUF4OEQsVUFBQWtrQyxPQUFBLFdBQ0EsR0FB
QWp1QixHQUFBb0csRUFBQUcsSUFBQS9iLE1BQUEwSixnQkFBQUMsS0FDQThNLEVBQUFqQixFQUFB
eFYsS0FBQXdXLE1BQUF4VyxLQUFBMEssUUFBQTFLLEtBQUFxNEMsUUFFQSxPQURBMmpCLEdBQUF4
bUQsRUFBQWlCLEdBQ0FBLEVBb0VBLElBQUE4bEQsR0FBQSxFQUtBcjBCLEdBUUFDLFVBQUEsU0FB
QTF4QixHQUNBelcsS0FBQTBKLGdCQUFBK00sRUFDQXpXLEtBQUEwWSxZQUFBLEVBQ0ExWSxLQUFB
dzhELGVBQUEsS0FDQXg4RCxLQUFBaWtDLFVBQUEsS0FDQWprQyxLQUFBK0YsWUFBQSxLQUNBL0Ys
S0FBQWdqQyxtQkFBQSxLQUdBaGpDLEtBQUF3SyxtQkFBQSxLQUNBeEssS0FBQXN5QixnQkFBQSxL
QUNBdHlCLEtBQUFneUIsbUJBQUEsS0FDQWh5QixLQUFBaXlCLHNCQUFBLEVBQ0FqeUIsS0FBQTZ4
QixxQkFBQSxFQUVBN3hCLEtBQUFrbUMsa0JBQUEsS0FDQWxtQyxLQUFBa0UsbUJBQUEsS0FDQWxF
LEtBQUFtVSxTQUFBLEtBQ0FuVSxLQUFBNkksWUFBQSxFQUNBN0ksS0FBQWlpQyxpQkFBQSxLQUdB
amlDLEtBQUFxSixrQkFBQSxLQUdBckosS0FBQXk4RCw2QkFBQSxHQWtCQXJwRCxlQUFBLFNBQUFy
SyxFQUFBdUssRUFBQUMsRUFBQTdJLEdBR0ExSyxLQUFBbVUsU0FBQXpKLEVBQ0ExSyxLQUFBNkks
WUFBQTB6RCxJQUNBdjhELEtBQUErRixZQUFBdU4sRUFDQXRULEtBQUFnakMsbUJBQUF6dkIsQ0FF
QSxJQVVBbXBELEdBVkFDLEVBQUEzOEQsS0FBQTBKLGdCQUFBOE0sTUFDQW9tRCxFQUFBNThELEtB
QUE2OEQsZ0JBQUFueUQsR0FFQThLLEVBQUF4VixLQUFBMEosZ0JBQUFDLEtBRUFtekQsRUFBQS96
RCxFQUFBZzBELGlCQUdBQyxFQUFBZixFQUFBem1ELEdBQ0FwUixFQUFBcEUsS0FBQWk5RCxvQkFB
QUQsRUFBQUwsRUFBQUMsRUFBQUUsRUFJQUUsSUFBQSxNQUFBNTRELEdBQUEsTUFBQUEsRUFBQXEv
QixPQU9BeTRCLEVBQUExbUQsR0FDQXhWLEtBQUF3OEQsZUFBQUwsRUFBQUUsVUFFQXI4RCxLQUFB
dzhELGVBQUFMLEVBQUFDLGFBVEFNLEVBQUF0NEQsRUFDQTQzRCxFQUFBeG1ELEVBQUFrbkQsR0FD
QSxPQUFBdDRELFFBQUEsR0FBQStRLEVBQUFPLGVBQUF0UixHQUFBLE9BQUFrQixFQUFBLE1BQUFr
USxFQUFBMmIsYUFBQTNiLEVBQUExVSxNQUFBLGFBQ0FzRCxFQUFBLEdBQUEyM0QsR0FBQXZtRCxH
QUNBeFYsS0FBQXc4RCxlQUFBTCxFQUFBRyxvQkF3QkFsNEQsR0FBQW9TLE1BQUFtbUQsRUFDQXY0
RCxFQUFBc0csUUFBQWt5RCxFQUNBeDRELEVBQUFrMEMsS0FBQTE3QixFQUNBeFksRUFBQWkwQyxR
QUFBeWtCLEVBRUE5OEQsS0FBQWlrQyxVQUFBNy9CLEVBR0F3WCxFQUFBSyxJQUFBN1gsRUFBQXBF
LEtBZUEsSUFBQXNnRCxHQUFBbDhDLEVBQUF5cEMsS0FDQW50QyxVQUFBNC9DLElBQ0FsOEMsRUFB
QXlwQyxNQUFBeVMsRUFBQSxNQUVBLGdCQUFBQSxJQUFBeHBDLE1BQUF3UixRQUFBZzRCLEdBQUFo
N0MsRUFBQSxNQUFBdEYsS0FBQTZKLFdBQUEsa0NBRUE3SixLQUFBZ3lCLG1CQUFBLEtBQ0FoeUIs
S0FBQWl5QixzQkFBQSxFQUNBanlCLEtBQUE2eEIscUJBQUEsQ0FFQSxJQUFBcGUsRUFtQkEsT0Fq
QkFBLEdBREFyUCxFQUFBODRELHFCQUNBbDlELEtBQUFtOUQscUNBQUFULEVBQUFwcEQsRUFBQUMs
RUFBQXhLLEVBQUEyQixHQUVBMUssS0FBQW85RCxvQkFBQVYsRUFBQXBwRCxFQUFBQyxFQUFBeEss
RUFBQTJCLEdBR0F0RyxFQUFBa3FDLG1CQVFBdmxDLEVBQUE0SyxxQkFBQXZKLFFBQUFoRyxFQUFB
a3FDLGtCQUFBbHFDLEdBSUFxUCxHQUdBd3BELG9CQUFBLFNBQUFELEVBQUFMLEVBQUFDLEVBQUFF
LEdBU0EsTUFBQTk4RCxNQUFBcTlELGdDQUFBTCxFQUFBTCxFQUFBQyxFQUFBRSxJQUlBTyxnQ0FB
QSxTQUFBTCxFQUFBTCxFQUFBQyxFQUFBRSxHQUNBLEdBQUF0bkQsR0FBQXhWLEtBQUEwSixnQkFB
QUMsSUFFQSxPQUFBcXpELEdBTUEsR0FBQXhuRCxHQUFBbW5ELEVBQUFDLEVBQUFFLEdBV0F0bkQs
RUFBQW1uRCxFQUFBQyxFQUFBRSxJQUlBSyxxQ0FBQSxTQUFBVCxFQUFBcHBELEVBQUFDLEVBQUF4
SyxFQUFBMkIsR0FDQSxHQUFBK0ksR0FDQXluQixFQUFBbnlCLEVBQUFteUIsWUFDQSxLQUNBem5C
LEVBQUF6VCxLQUFBbzlELG9CQUFBVixFQUFBcHBELEVBQUFDLEVBQUF4SyxFQUFBMkIsR0FDSyxN
QUFBcEssR0FFTHlJLEVBQUFveUIsU0FBQUQsR0FDQWw3QixLQUFBaWtDLFVBQUFpNUIscUJBQUE1
OEQsR0FDQU4sS0FBQWd5QixxQkFDQWh5QixLQUFBaWtDLFVBQUE0SixNQUFBN3RDLEtBQUFzOUQs
cUJBQUF0OUQsS0FBQWlrQyxVQUFBenRCLE1BQUF4VyxLQUFBaWtDLFVBQUF2NUIsVUFFQXd3QixF
QUFBbnlCLEVBQUFteUIsYUFFQWw3QixLQUFBa0UsbUJBQUEyUCxrQkFBQSxHQUNBOUssRUFBQW95
QixTQUFBRCxHQUlBem5CLEVBQUF6VCxLQUFBbzlELG9CQUFBVixFQUFBcHBELEVBQUFDLEVBQUF4
SyxFQUFBMkIsR0FFQSxNQUFBK0ksSUFHQTJwRCxvQkFBQSxTQUFBVixFQUFBcHBELEVBQUFDLEVB
QUF4SyxFQUFBMkIsR0FDQSxHQUFBdEcsR0FBQXBFLEtBQUFpa0MsVUFFQXM1QixFQUFBLENBS0Fu
NUQsR0FBQXk4QyxxQkFNQXo4QyxFQUFBeThDLHFCQUlBN2dELEtBQUFneUIscUJBQ0E1dEIsRUFB
QXlwQyxNQUFBN3RDLEtBQUFzOUQscUJBQUFsNUQsRUFBQW9TLE1BQUFwUyxFQUFBc0csV0FLQWhL
LFNBQUFnOEQsSUFDQUEsRUFBQTE4RCxLQUFBdzlELDRCQUdBLElBQUE3NUQsR0FBQTZoQyxFQUFB
SSxRQUFBODJCLEVBQ0ExOEQsTUFBQWttQyxrQkFBQXZpQyxDQUNBLElBQUFvK0IsR0FBQS9oQyxL
QUFBb29DLDJCQUFBczBCLEVBQUEvNEQsSUFBQTZoQyxFQUFBRyxNQUVBM2xDLE1BQUFrRSxtQkFB
QTY5QixDQUVBLElBQUF0dUIsR0FBQXpKLEVBQUFvSixlQUFBMnVCLEVBQUFoNUIsRUFBQXVLLEVB
QUFDLEVBQUF2VCxLQUFBc2tDLHFCQUFBNTVCLEdBQUE2eUQsRUFTQSxPQUFBOXBELElBR0FHLFlB
QUEsV0FDQSxNQUFBNUosR0FBQTRKLFlBQUE1VCxLQUFBa0UscUJBU0EyUCxpQkFBQSxTQUFBQyxH
QUNBLEdBQUE5VCxLQUFBa0UsbUJBQUEsQ0FJQSxHQUFBRSxHQUFBcEUsS0FBQWlrQyxTQUVBLElB
QUE3L0IsRUFBQXNxQyx1QkFBQXRxQyxFQUFBcTRELDRCQUdBLEdBRkFyNEQsRUFBQXE0RCw2QkFB
QSxFQUVBM29ELEVBQUEsQ0FDQSxHQUFBaFQsR0FBQWQsS0FBQTZKLFVBQUEseUJBQ0FrTyxHQUFB
Z1Ysc0JBQUFqc0IsRUFBQXNELEVBQUFzcUMscUJBQUF6M0IsS0FBQTdTLFFBT0FBLEdBQUFzcUMs
c0JBS0ExdUMsTUFBQWtFLHFCQUNBOEYsRUFBQTZKLGlCQUFBN1QsS0FBQWtFLG1CQUFBNFAsR0FD
QTlULEtBQUFrbUMsa0JBQUEsS0FDQWxtQyxLQUFBa0UsbUJBQUEsS0FDQWxFLEtBQUFpa0MsVUFB
QSxNQU1BamtDLEtBQUFneUIsbUJBQUEsS0FDQWh5QixLQUFBaXlCLHNCQUFBLEVBQ0FqeUIsS0FB
QTZ4QixxQkFBQSxFQUNBN3hCLEtBQUFxSixrQkFBQSxLQUNBckosS0FBQXN5QixnQkFBQSxLQUlB
dHlCLEtBQUFtVSxTQUFBLEtBQ0FuVSxLQUFBMFksWUFBQSxFQUNBMVksS0FBQWlpQyxpQkFBQSxL
QUtBcm1CLEVBQUFDLE9BQUF6WCxLQWlCQXE1RCxhQUFBLFNBQUEveUQsR0FDQSxHQUFBOEssR0FB
QXhWLEtBQUEwSixnQkFBQUMsS0FDQW1qQyxFQUFBdDNCLEVBQUFzM0IsWUFDQSxLQUFBQSxFQUNB
LE1BQUFsd0IsRUFFQSxJQUFBOGdELEtBQ0EsUUFBQUMsS0FBQTd3QixHQUNBNHdCLEVBQUFDLEdB
QUFqekQsRUFBQWl6RCxFQUVBLE9BQUFELElBV0FiLGdCQUFBLFNBQUFueUQsR0FDQSxHQUFBZ3pE
LEdBQUExOUQsS0FBQXk5RCxhQUFBL3lELEVBT0EsT0FBQWd6RCxJQVFBcDVCLHFCQUFBLFNBQUFz
NUIsR0FDQSxHQUVBQyxHQUZBcm9ELEVBQUF4VixLQUFBMEosZ0JBQUFDLEtBQ0F2RixFQUFBcEUs
S0FBQWlrQyxTQWdCQSxJQWJBNy9CLEVBQUErcEMsa0JBU0EwdkIsRUFBQXo1RCxFQUFBK3BDLG1C
QUlBMHZCLEVBQUEsQ0FDQSxnQkFBQXJvRCxHQUFBMDNCLGtCQUFBNW5DLEVBQUEsTUFBQXRGLEtB
QUE2SixXQUFBLGlDQUlBLFFBQUEvSSxLQUFBKzhELEdBQ0EvOEQsSUFBQTBVLEdBQUEwM0Isa0JB
QUEsT0FBQTVuQyxFQUFBLE1BQUF0RixLQUFBNkosV0FBQSwwQkFBQS9JLEVBRUEsT0FBQStKLE1B
QXVCK3lELEVBQUFDLEdBRXZCLE1BQUFELElBV0FFLG1CQUFBLFNBQUFsWCxFQUFBQyxFQUFBQyxL
QU1BOXlDLGlCQUFBLFNBQUFDLEVBQUFsTCxFQUFBc3BCLEdBQ0EsR0FBQW5lLEdBQUFsVSxLQUFB
MEosZ0JBQ0FxMEQsRUFBQS85RCxLQUFBbVUsUUFFQW5VLE1BQUFzeUIsZ0JBQUEsS0FFQXR5QixL
QUFBK2dELGdCQUFBaDRDLEVBQUFtTCxFQUFBRCxFQUFBOHBELEVBQUExckMsSUFVQXBvQix5QkFB
QSxTQUFBbEIsR0FDQSxNQUFBL0ksS0FBQXN5QixnQkFDQXRvQixFQUFBZ0ssaUJBQUFoVSxVQUFB
c3lCLGdCQUFBdnBCLEVBQUEvSSxLQUFBbVUsVUFDSyxPQUFBblUsS0FBQWd5QixvQkFBQWh5QixL
QUFBNnhCLG9CQUNMN3hCLEtBQUErZ0QsZ0JBQUFoNEMsRUFBQS9JLEtBQUEwSixnQkFBQTFKLEtB
QUEwSixnQkFBQTFKLEtBQUFtVSxTQUFBblUsS0FBQW1VLFVBRUFuVSxLQUFBd0ssbUJBQUEsTUFt
QkF1MkMsZ0JBQUEsU0FBQWg0QyxFQUFBaTFELEVBQUFDLEVBQUFDLEVBQUFDLEdBQ0EsR0FBQS81
RCxHQUFBcEUsS0FBQWlrQyxTQUNBLE9BQUE3L0IsRUFBQWtCLEVBQUEsTUFBQXRGLEtBQUE2SixX
QUFBLGlDQUVBLElBQ0F3b0IsR0FEQStyQyxHQUFBLENBSUFwK0QsTUFBQW1VLFdBQUFncUQsRUFD
QTlyQyxFQUFBanVCLEVBQUFzRyxTQUVBMm5CLEVBQUFyeUIsS0FBQTY4RCxnQkFBQXNCLEdBQ0FD
LEdBQUEsRUFHQSxJQUFBQyxHQUFBTCxFQUFBeG5ELE1BQ0ErMEIsRUFBQTB5QixFQUFBem5ELEtB
R0F3bkQsS0FBQUMsSUFDQUcsR0FBQSxHQU1BQSxHQUFBaDZELEVBQUFxcUMsMkJBTUFycUMsRUFB
QXFxQywwQkFBQWxELEVBQUFsWixFQUlBLElBQUFpc0MsR0FBQXQrRCxLQUFBczlELHFCQUFBL3hC
LEVBQUFsWixHQUNBa3NDLEdBQUEsQ0FFQXYrRCxNQUFBNnhCLHNCQUNBenRCLEVBQUFxbkMsc0JB
TUE4eUIsRUFBQW42RCxFQUFBcW5DLHNCQUFBRixFQUFBK3lCLEVBQUFqc0MsR0FHQXJ5QixLQUFB
dzhELGlCQUFBTCxFQUFBRSxZQUNBa0MsR0FBQTUxQyxFQUFBMDFDLEVBQUE5eUIsS0FBQTVpQixF
QUFBdmtCLEVBQUF5cEMsTUFBQXl3QixLQVNBdCtELEtBQUF3SyxtQkFBQSxLQUNBK3pELEdBQ0F2
K0QsS0FBQTZ4QixxQkFBQSxFQUVBN3hCLEtBQUF3K0Qsd0JBQUFQLEVBQUExeUIsRUFBQSt5QixF
QUFBanNDLEVBQUF0cEIsRUFBQW8xRCxLQUlBbitELEtBQUEwSixnQkFBQXUwRCxFQUNBaitELEtB
QUFtVSxTQUFBZ3FELEVBQ0EvNUQsRUFBQW9TLE1BQUErMEIsRUFDQW5uQyxFQUFBeXBDLE1BQUF5
d0IsRUFDQWw2RCxFQUFBc0csUUFBQTJuQixJQUlBaXJDLHFCQUFBLFNBQUE5bUQsRUFBQTlMLEdB
Q0EsR0FBQXRHLEdBQUFwRSxLQUFBaWtDLFVBQ0FqNEIsRUFBQWhNLEtBQUFneUIsbUJBQ0FueEIs
RUFBQWIsS0FBQWl5QixvQkFJQSxJQUhBanlCLEtBQUFpeUIsc0JBQUEsRUFDQWp5QixLQUFBZ3lC
LG1CQUFBLE1BRUFobUIsRUFDQSxNQUFBNUgsR0FBQXlwQyxLQUdBLElBQUFodEMsR0FBQSxJQUFB
bUwsRUFBQTFLLE9BQ0EsTUFBQTBLLEdBQUEsRUFJQSxRQURBc3lELEdBQUF6ekQsS0FBOEJoSyxF
QUFBbUwsRUFBQSxHQUFBNUgsRUFBQXlwQyxPQUM5Qnh1QyxFQUFBd0IsRUFBQSxJQUFpQ3hCLEVB
QUEyTSxFQUFBMUssT0FBa0JqQyxJQUFBLENBQ25ELEdBQUFvL0QsR0FBQXp5RCxFQUFBM00sRUFD
QXdMLEdBQUF5ekQsRUFBQSxrQkFBQUcsS0FBQXgvRCxLQUFBbUYsRUFBQWs2RCxFQUFBOW5ELEVB
QUE5TCxHQUFBK3pELEdBR0EsTUFBQUgsSUFlQUUsd0JBQUEsU0FBQXZxRCxFQUFBczNCLEVBQUEr
eUIsRUFBQWpzQyxFQUFBdHBCLEVBQUEyMUQsR0FDQSxHQUtBTCxHQUNBTSxFQUNBWixFQUxBMzVE
LEVBQUFwRSxLQUFBaWtDLFVBRUEyNkIsRUFBQTloQyxRQUFBMTRCLEVBQUErcUMsbUJBSUF5dkIs
S0FDQVAsRUFBQWo2RCxFQUFBb1MsTUFDQW1vRCxFQUFBdjZELEVBQUF5cEMsTUFDQWt3QixFQUFB
MzVELEVBQUFzRyxTQUdBdEcsRUFBQTA4QyxxQkFNQTE4QyxFQUFBMDhDLG9CQUFBdlYsRUFBQSt5
QixFQUFBanNDLEdBSUFyeUIsS0FBQTBKLGdCQUFBdUssRUFDQWpVLEtBQUFtVSxTQUFBdXFELEVB
Q0F0NkQsRUFBQW9TLE1BQUErMEIsRUFDQW5uQyxFQUFBeXBDLE1BQUF5d0IsRUFDQWw2RCxFQUFB
c0csUUFBQTJuQixFQUVBcnlCLEtBQUE2K0QseUJBQUE5MUQsRUFBQTIxRCxHQUVBRSxHQU1BNzFE
LEVBQUE0SyxxQkFBQXZKLFFBQUFoRyxFQUFBK3FDLG1CQUFBbDRCLEtBQUE3UyxFQUFBaTZELEVB
QUFNLEVBQUFaLEdBQUEzNUQsSUFXQXk2RCx5QkFBQSxTQUFBOTFELEVBQUEyQixHQUNBLEdBQUFv
MEQsR0FBQTkrRCxLQUFBa0UsbUJBQ0E2NkQsRUFBQUQsRUFBQXAxRCxnQkFDQXMxRCxFQUFBaC9E
LEtBQUF3OUQsNEJBRUFELEVBQUEsQ0FLQSxJQUFBdHBDLEVBQUE4cUMsRUFBQUMsR0FDQWgxRCxF
QUFBZ0ssaUJBQUE4cUQsRUFBQUUsRUFBQWoyRCxFQUFBL0ksS0FBQXNrQyxxQkFBQTU1QixRQUNL
LENBQ0wsR0FBQXUwRCxHQUFBajFELEVBQUE0SixZQUFBa3JELEVBQ0E5MEQsR0FBQTZKLGlCQUFB
aXJELEdBQUEsRUFFQSxJQUFBbjdELEdBQUE2aEMsRUFBQUksUUFBQW81QixFQUNBaC9ELE1BQUFr
bUMsa0JBQUF2aUMsQ0FDQSxJQUFBbytCLEdBQUEvaEMsS0FBQW9vQywyQkFBQTQyQixFQUFBcjdE
LElBQUE2aEMsRUFBQUcsTUFFQTNsQyxNQUFBa0UsbUJBQUE2OUIsQ0FFQSxJQUFBbTlCLEdBQUFs
MUQsRUFBQW9KLGVBQUEydUIsRUFBQWg1QixFQUFBL0ksS0FBQStGLFlBQUEvRixLQUFBZ2pDLG1C
QUFBaGpDLEtBQUFza0MscUJBQUE1NUIsR0FBQTZ5RCxFQVNBdjlELE1BQUFtL0QsdUJBQUFGLEVB
QUFDLEVBQUFKLEtBU0FLLHVCQUFBLFNBQUFGLEVBQUFDLEVBQUFFLEdBQ0F4dUMsRUFBQUMsc0JB
QUFvdUMsRUFBQUMsRUFBQUUsSUFNQUMsK0NBQUEsV0FDQSxHQUNBM0MsR0FEQXQ0RCxFQUFBcEUs
S0FBQWlrQyxTQW9CQSxPQVpBeTRCLEdBQUF0NEQsRUFBQXEvQixVQWtCQSs1QiwwQkFBQSxXQUNB
LEdBQUFkLEVBQ0EsSUFBQTE4RCxLQUFBdzhELGlCQUFBTCxFQUFBRyxvQkFBQSxDQUNBM3RELEVB
QUFDLFFBQUE1TyxJQUNBLEtBQ0EwOEQsRUFBQTE4RCxLQUFBcS9ELGlEQUNPLFFBQ1Axd0QsRUFB
QUMsUUFBQSxVQUdBOHRELEdBQUExOEQsS0FBQXEvRCxnREFNQSxPQUZBLFFBQUEzQyxRQUFBLEdB
QUF2bkQsRUFBQU8sZUFBQWduRCxHQUFBLE9BQUFwM0QsRUFBQSxNQUFBdEYsS0FBQTZKLFdBQUEs
MkJBRUE2eUQsR0FXQTRDLFVBQUEsU0FBQTVyRCxFQUFBMVAsR0FDQSxHQUFBSSxHQUFBcEUsS0FB
QXFLLG1CQUNBLE9BQUFqRyxFQUFBa0IsRUFBQSxhQUNBLElBQUFpNkQsR0FBQXY3RCxFQUFBcUcs
b0JBS0FpdUMsRUFBQWwwQyxFQUFBazBDLE9BQUExN0IsRUFBQXhZLEVBQUFrMEMsUUFBeURsMEMs
RUFBQWswQyxJQUN6REEsR0FBQTVrQyxHQUFBNnJELEdBVUFDLFVBQUEsU0FBQTlyRCxHQUNBLEdB
QUE0a0MsR0FBQXQ0QyxLQUFBcUssb0JBQUFpdUMsV0FDQUEsR0FBQTVrQyxJQVNBN0osUUFBQSxX
QUNBLEdBQUFGLEdBQUEzSixLQUFBMEosZ0JBQUFDLEtBQ0FtRCxFQUFBOU0sS0FBQWlrQyxXQUFB
amtDLEtBQUFpa0MsVUFBQW4zQixXQUNBLE9BQUFuRCxHQUFBd25CLGFBQUFya0IsS0FBQXFrQixh
QUFBeG5CLEVBQUE3SSxNQUFBZ00sS0FBQWhNLE1BQUEsTUFXQXVKLGtCQUFBLFdBQ0EsR0FBQWpH
LEdBQUFwRSxLQUFBaWtDLFNBQ0EsT0FBQWprQyxNQUFBdzhELGlCQUFBTCxFQUFBRyxvQkFDQSxL
QUVBbDRELEdBSUFna0MsMkJBQUEsS0FHQXRwQyxHQUFBRCxRQUFBcXBDLEd2SXU2Y00sU0FBU3Bw
QyxFQUFRRCxFQUFTSCxHd0k3eGVoQyxZQUVBLElBQUE0SCxHQUFBNUgsRUFBQSxHQUNBK2dFLEVB
QUEvZ0UsRUFBQSxLQUNBd2pDLEVBQUF4akMsRUFBQSxJQUNBc0wsRUFBQXRMLEVBQUEsSUFDQW9K
LEVBQUFwSixFQUFBLEdBQ0FpVyxFQUFBalcsRUFBQSxLQUVBZ2hFLEVBQUFoaEUsRUFBQSxLQUNB
dW5DLEVBQUF2bkMsRUFBQSxJQUNBd2xDLEVBQUF4bEMsRUFBQSxJQUNBQSxHQUFBLEVBRUErZ0Us
R0FBQUUsUUFFQSxJQUFBQyxJQUNBRixjQUNBajhCLE9BQUF2QixFQUFBdUIsT0FDQWlCLHVCQUFB
eEMsRUFBQXdDLHVCQUNBNXVCLFFBQUFuQixFQUdBa3JELHdCQUFBLzNELEVBQUFVLGVBQ0FzM0Qs
b0NBQUE1N0IsRUFNQSxvQkFBQTY3QixpQ0FBQSxrQkFBQUEsZ0NBQUFKLFFBQ0FJLCtCQUFBSixR
QUNBbHlDLGVBQ0Fsb0IsMkJBQUFlLEVBQUFmLDJCQUNBTyxvQkFBQSxTQUFBMUIsR0FLQSxNQUhB
QSxHQUFBRixxQkFDQUUsRUFBQTZoQyxFQUFBN2hDLElBRUFBLEVBQ0FrQyxFQUFBUixvQkFBQTFC
LEdBRUEsT0FJQTQ3RCxNQUFBOTlCLEVBQ0ErOUIsV0FBQWoyRCxHQWtEQWxMLEdBQUFELFFBQUEr
Z0UsR3hJK3llTSxTQUFTOWdFLEVBQVFELEVBQVNILEd5SWg1ZWhDLFlBcURBLFNBQUE0d0IsR0FB
QWpjLEdBQ0EsR0FBQUEsRUFBQSxDQUNBLEdBQUFrRCxHQUFBbEQsRUFBQTNKLGdCQUFBaU4sUUFB
QSxJQUNBLElBQUFKLEVBQUEsQ0FDQSxHQUFBelYsR0FBQXlWLEVBQUExTSxTQUNBLElBQUEvSSxF
QUNBLHlDQUFBQSxFQUFBLE1BSUEsU0EyREEsUUFBQW8vRCxHQUFBbDhELEVBQUF3UyxHQUNBQSxJ
QUlBMnBELEVBQUFuOEQsRUFBQW84RCxRQUNBLE1BQUE1cEQsRUFBQTNSLFVBQUEsTUFBQTJSLEVB
QUE2cEQsd0JBQUEvNkQsRUFBQSxNQUFBdEIsRUFBQW84RCxLQUFBcDhELEVBQUEwRixnQkFBQWlO
LE9BQUEsK0JBQUEzUyxFQUFBMEYsZ0JBQUFpTixPQUFBOU0sVUFBQSxnQkFFQSxNQUFBMk0sRUFB
QTZwRCwwQkFDQSxNQUFBN3BELEVBQUEzUixTQUFBUyxFQUFBLGFBQ0EsZ0JBQUFrUixHQUFBNnBE
LHlCQUFBQyxJQUFBOXBELEdBQUE2cEQsd0JBQWdPLE9BQUEvNkQsRUFBQSxPQU9oTyxNQUFBa1Is
RUFBQW01QyxPQUFBLGdCQUFBbjVDLEdBQUFtNUMsTUFBOFBycUQsRUFBQSxLQUFBZ3FCLEVBQUF0
ckIsSUFBQSxRQUc5UCxRQUFBdThELEdBQUFuOEQsRUFBQTJVLEVBQUFDLEVBQUFqUSxHQUNBLEtB
QUFBLFlBQUF5M0QsSUFBQSxDQVFBLEdBQUFDLEdBQUFyOEQsRUFBQTQrQixtQkFDQTA5QixFQUFB
RCxFQUFBRSxPQUFBRixFQUFBRSxNQUFBaDlELFdBQUFpOUQsRUFDQXJrRCxFQUFBbWtELEVBQUFE
LEVBQUFFLE1BQUFGLEVBQUFJLGNBQ0E1K0MsR0FBQWxKLEVBQUF3RCxHQUNBeFQsRUFBQTRLLHFC
QUFBdkosUUFBQTBPLEdBQ0ExVSxPQUNBMlUsbUJBQ0FDLGNBSUEsUUFBQUYsS0FDQSxHQUFBZ29E
LEdBQUE5Z0UsSUFDQTJZLEdBQUFHLFlBQUFnb0QsRUFBQTE4RCxLQUFBMDhELEVBQUEvbkQsaUJB
QUErbkQsRUFBQTluRCxVQUdBLFFBQUErbkQsS0FDQSxHQUFBMzhELEdBQUFwRSxJQUNBZ2hFLEdB
QUFDLGlCQUFBNzhELEdBR0EsUUFBQTg4RCxLQUNBLEdBQUE5OEQsR0FBQXBFLElBQ0FtaEUsR0FB
QUYsaUJBQUE3OEQsR0FHQSxRQUFBZzlELEtBQ0EsR0FBQWg5RCxHQUFBcEUsSUFDQXFoRSxHQUFB
SixpQkFBQTc4RCxHQTREQSxRQUFBazlELEtBQ0ExNkIsRUFBQUUsTUFBQTltQyxNQUdBLFFBQUF1
aEUsS0FDQSxHQUFBbjlELEdBQUFwRSxJQUdBb0UsR0FBQXNVLFlBQUEsT0FBQXBULEVBQUEsS0FD
QSxJQUFBN0IsR0FBQSs5RCxFQUFBcDlELEVBR0EsUUFGQVgsRUFBQSxPQUFBNkIsRUFBQSxNQUVB
bEIsRUFBQWc4RCxNQUNBLGFBQ0EsYUFDQWg4RCxFQUFBdTRCLGNBQUFnQixXQUFBbGMsRUFBQWMs
aUJBQUEsaUJBQUE5ZSxHQUNBLE1BQ0EsYUFDQSxZQUNBVyxFQUFBdTRCLGNBQUFnQixZQUVBLFFB
QUE5dkIsS0FBQTR6RCxHQUNBQSxFQUFBamlFLGVBQUFxTyxJQUNBekosRUFBQXU0QixjQUFBZ0Is
VUFBQWw0QixLQUFBZ2MsRUFBQWMsaUJBQUExVSxFQUFBNHpELEVBQUE1ekQsR0FBQXBLLEdBR0Es
TUFDQSxjQUNBVyxFQUFBdTRCLGNBQUFnQixXQUFBbGMsRUFBQWMsaUJBQUEsbUJBQUE5ZSxHQUNB
LE1BQ0EsV0FDQVcsRUFBQXU0QixjQUFBZ0IsV0FBQWxjLEVBQUFjLGlCQUFBLG1CQUFBOWUsR0FB
QWdlLEVBQUFjLGlCQUFBLGlCQUFBOWUsR0FDQSxNQUNBLFlBQ0FXLEVBQUF1NEIsY0FBQWdCLFdB
QUFsYyxFQUFBYyxpQkFBQSxtQkFBQTllLEdBQUFnZSxFQUFBYyxpQkFBQSxxQkFBQTllLEdBQ0Es
TUFDQSxhQUNBLGFBQ0EsZUFDQVcsRUFBQXU0QixjQUFBZ0IsV0FBQWxjLEVBQUFjLGlCQUFBLHVC
QUFBOWUsS0FLQSxRQUFBaStELEtBQ0Fwa0MsRUFBQVEsa0JBQUE5OUIsTUE4Q0EsUUFBQTJoRSxH
QUFBanFELEdBQ0FsWSxFQUFBUCxLQUFBMmlFLEVBQUFscUQsS0FDQW1xRCxFQUFBcnhELEtBQUFr
SCxHQUFBLE9BQUFwUyxFQUFBLEtBQUFvUyxHQUNBa3FELEVBQUFscUQsSUFBQSxHQUlBLFFBQUFv
cUQsR0FBQXh4QyxFQUFBOVosR0FDQSxNQUFBOFosR0FBQTNFLFFBQUEsZUFBQW5WLEVBQUFnUyxH
QW1CQSxRQUFBdTVDLEdBQUF0ckQsR0FDQSxHQUFBaUIsR0FBQWpCLEVBQUE5TSxJQUNBZzRELEdB
QUFqcUQsR0FDQTFYLEtBQUEwSixnQkFBQStNLEVBQ0F6VyxLQUFBb2dFLEtBQUExb0QsRUFBQWhI
LGNBQ0ExUSxLQUFBZ2lFLGNBQUEsS0FDQWhpRSxLQUFBOEUsa0JBQUEsS0FDQTlFLEtBQUFpaUUs
ZUFBQSxLQUNBamlFLEtBQUFraUUsbUJBQUEsS0FDQWxpRSxLQUFBc0UsVUFBQSxLQUNBdEUsS0FB
QStGLFlBQUEsS0FDQS9GLEtBQUEwWSxZQUFBLEVBQ0ExWSxLQUFBb0YsT0FBQSxFQUNBcEYsS0FB
QWdqQyxtQkFBQSxLQUNBaGpDLEtBQUEyOEIsY0FBQSxLQUNBMzhCLEtBQUFpaUMsaUJBQUEsS0FD
QWppQyxLQUFBMEUsT0FBQSxFQW5YQSxHQUFBWSxHQUFBNUcsRUFBQSxHQUNBbU0sRUFBQW5NLEVB
QUEsR0FFQXV1RCxFQUFBdnVELEVBQUEsS0FDQW14RCxFQUFBbnhELEVBQUEsS0FDQXNSLEVBQUF0
UixFQUFBLElBQ0F1UixFQUFBdlIsRUFBQSxJQUNBc0gsRUFBQXRILEVBQUEsSUFDQWs5QixFQUFB
bDlCLEVBQUEsSUFDQWlhLEVBQUFqYSxFQUFBLElBQ0FtWixFQUFBblosRUFBQSxJQUNBK2lCLEVB
QUEvaUIsRUFBQSxJQUNBdUgsRUFBQXZILEVBQUEsSUFDQTRILEVBQUE1SCxFQUFBLEdBQ0FzaUUs
RUFBQXRpRSxFQUFBLEtBQ0EyaUUsRUFBQTNpRSxFQUFBLEtBQ0E0K0IsRUFBQTUrQixFQUFBLElB
Q0F5aUUsRUFBQXppRSxFQUFBLEtBRUF5akUsR0FEQXpqRSxFQUFBLEdBQ0FBLEVBQUEsTUFDQTho
RSxFQUFBOWhFLEVBQUEsS0FHQXVuQixHQURBdm5CLEVBQUEsR0FDQUEsRUFBQSxLQUlBa29DLEdB
SEFsb0MsRUFBQSxHQUNBQSxFQUFBLElBQ0FBLEVBQUEsSUFDQUEsRUFBQSxLQUlBaUcsR0FIQWpH
LEVBQUEsSUFDQUEsRUFBQSxHQUVBdUgsR0FDQXFULEVBQUFYLEVBQUFXLGVBQ0Frb0QsRUFBQWw3
RCxFQUFBUixvQkFDQW1jLEVBQUFSLEVBQUFRLFNBQ0E5SSxFQUFBdEIsRUFBQXNCLHdCQUdBaXBE
LEdBQXFCNzhDLFFBQUEsRUFBQXNqQixRQUFBLEdBRXJCdzVCLEVBQUEsUUFDQS9CLEVBQUEsU0FD
QW5xRCxHQUNBdFIsU0FBQSxLQUNBdzdELHdCQUFBLEtBQ0FpQywrQkFBQSxNQUlBMUIsRUFBQSxH
QWtLQWEsR0FDQWhrRCxTQUFBLFFBQ0FLLFdBQUEsVUFDQUMsa0JBQUEsaUJBQ0FrQixrQkFBQSxp
QkFDQUMsV0FBQSxVQUNBQyxhQUFBLFlBQ0FDLFNBQUEsUUFDQUMsU0FBQSxRQUNBTSxjQUFBLGFB
Q0FDLGtCQUFBLGlCQUNBQyxhQUFBLFlBQ0FPLFNBQUEsUUFDQUMsUUFBQSxPQUNBQyxXQUFBLFVB
Q0FDLFlBQUEsV0FDQUMsY0FBQSxhQUNBRSxVQUFBLFNBQ0FDLFdBQUEsVUFDQUUsV0FBQSxVQUNB
QyxXQUFBLFVBQ0FFLGNBQUEsYUFDQU0sZ0JBQUEsZUFDQUMsV0FBQSxXQXNEQWdoRCxHQUNBamYs
TUFBQSxFQUNBa2YsTUFBQSxFQUNBQyxJQUFBLEVBQ0FsZixLQUFBLEVBQ0FtZixPQUFBLEVBQ0FD
LElBQUEsRUFDQUMsS0FBQSxFQUNBM2lDLE9BQUEsRUFDQTRpQyxRQUFBLEVBQ0FDLE1BQUEsRUFD
QUMsTUFBQSxFQUNBdGYsT0FBQSxFQUNBdmdELFFBQUEsRUFDQTRqQyxPQUFBLEVBQ0FrOEIsS0FB
QSxHQUlBQyxHQUNBQyxTQUFBLEVBQ0FDLEtBQUEsRUFDQUMsVUFBQSxHQU1BakQsRUFBQXQxRCxH
QUNBdzRELFVBQUEsR0FDQ2QsR0FNRFYsRUFBQSw4QkFDQUQsS0FDQXBpRSxLQUF1QkEsZUFhdkI4
akUsR0FBQSxDQXVDQXZCLEdBQUE1d0MsWUFBQSxvQkFFQTR3QyxFQUFBd0IsT0FZQW53RCxlQUFB
LFNBQUFySyxFQUFBdUssRUFBQUMsRUFBQTdJLEdBQ0ExSyxLQUFBMFksWUFBQTRxRCxLQUNBdGpF
LEtBQUFvRixPQUFBbU8sRUFBQWl3RCxhQUNBeGpFLEtBQUErRixZQUFBdU4sRUFDQXRULEtBQUFn
akMsbUJBQUF6dkIsQ0FFQSxJQUFBaUQsR0FBQXhXLEtBQUEwSixnQkFBQThNLEtBRUEsUUFBQXhX
LEtBQUFvZ0UsTUFDQSxZQUNBLFdBQ0EsYUFDQSxVQUNBLFdBQ0EsYUFDQSxhQUNBLFlBQ0FwZ0Us
S0FBQTI4QixlQUNBZ0IsVUFBQSxNQUVBNTBCLEVBQUE0SyxxQkFBQXZKLFFBQUFtM0QsRUFBQXZo
RSxLQUNBLE1BQ0EsYUFDQWdoRSxFQUFBeGpDLGFBQUF4OUIsS0FBQXdXLEVBQUFsRCxHQUNBa0Qs
RUFBQXdxRCxFQUFBempDLGFBQUF2OUIsS0FBQXdXLEdBQ0F6TixFQUFBNEsscUJBQUF2SixRQUFB
azNELEVBQUF0aEUsTUFDQStJLEVBQUE0SyxxQkFBQXZKLFFBQUFtM0QsRUFBQXZoRSxLQUNBLE1B
Q0EsY0FDQXFoRSxFQUFBN2pDLGFBQUF4OUIsS0FBQXdXLEVBQUFsRCxHQUNBa0QsRUFBQTZxRCxF
QUFBOWpDLGFBQUF2OUIsS0FBQXdXLEVBQ0EsTUFDQSxjQUNBOG1CLEVBQUFFLGFBQUF4OUIsS0FB
QXdXLEVBQUFsRCxHQUNBa0QsRUFBQThtQixFQUFBQyxhQUFBdjlCLEtBQUF3VyxHQUNBek4sRUFB
QTRLLHFCQUFBdkosUUFBQW0zRCxFQUFBdmhFLEtBQ0EsTUFDQSxnQkFDQW1oRSxFQUFBM2pDLGFB
QUF4OUIsS0FBQXdXLEVBQUFsRCxHQUNBa0QsRUFBQTJxRCxFQUFBNWpDLGFBQUF2OUIsS0FBQXdX
LEdBQ0F6TixFQUFBNEsscUJBQUF2SixRQUFBazNELEVBQUF0aEUsTUFDQStJLEVBQUE0SyxxQkFB
QXZKLFFBQUFtM0QsRUFBQXZoRSxNQUlBa2dFLEVBQUFsZ0UsS0FBQXdXLEVBSUEsSUFBQTdGLEdB
Q0E4eUQsQ0FDQSxPQUFBbndELEdBQ0EzQyxFQUFBMkMsRUFBQTB1RCxjQUNBeUIsRUFBQW53RCxF
QUFBOHNELE1BQ0s3c0QsRUFBQTZzRCxPQUNMenZELEVBQUE0QyxFQUFBeXVELGNBQ0F5QixFQUFB
bHdELEVBQUE2c0QsT0FFQSxNQUFBenZELE9BQUFWLEVBQUFvVyxLQUFBLGtCQUFBbzlDLEtBQ0E5
eUQsRUFBQVYsRUFBQWhCLE1BRUEwQixJQUFBVixFQUFBaEIsT0FDQSxRQUFBalAsS0FBQW9nRSxL
QUNBenZELEVBQUFWLEVBQUFvVyxJQUNPLFNBQUFybUIsS0FBQW9nRSxPQUNQenZELEVBQUFWLEVB
QUFtYixTQUdBcHJCLEtBQUFnaUUsY0FBQXJ4RCxDQUdBLElBY0EreUQsRUFDQSxJQUFBMzZELEVB
QUF3NUIsaUJBQUEsQ0FDQSxHQUNBb2hDLEdBREFubkQsRUFBQWpKLEVBQUFzdEQsY0FFQSxJQUFB
bHdELElBQUFWLEVBQUFoQixLQUNBLGNBQUFqUCxLQUFBb2dFLEtBQUEsQ0FHQSxHQUFBd0QsR0FB
QXBuRCxFQUFBOVYsY0FBQSxPQUNBaUQsRUFBQTNKLEtBQUEwSixnQkFBQUMsSUFDQWk2RCxHQUFB
dDlDLFVBQUEsSUFBQTNjLEVBQUEsTUFBQUEsRUFBQSxJQUNBZzZELEVBQUFDLEVBQUFqOUMsWUFB
QWk5QyxFQUFBNStELGdCQUVBMitELEdBRFNudEQsRUFBQWdTLEdBQ1RoTSxFQUFBOVYsY0FBQTFH
LEtBQUEwSixnQkFBQUMsS0FBQTZNLEVBQUFnUyxJQUtBaE0sRUFBQTlWLGNBQUExRyxLQUFBMEos
Z0JBQUFDLFVBR0FnNkQsR0FBQW5uRCxFQUFBcW5ELGdCQUFBbHpELEVBQUEzUSxLQUFBMEosZ0JB
QUFDLEtBRUFyRCxHQUFBbkMsYUFBQW5FLEtBQUEyakUsR0FDQTNqRSxLQUFBMEUsUUFBQUMsRUFB
QUMsb0JBQ0E1RSxLQUFBK0YsYUFDQTYxQixFQUFBSSxvQkFBQTJuQyxHQUVBM2pFLEtBQUE4akUs
cUJBQUEsS0FBQXR0RCxFQUFBek4sRUFDQSxJQUFBZzdELEdBQUEvekQsRUFBQTJ6RCxFQUNBM2pF
LE1BQUFna0UsdUJBQUFqN0QsRUFBQXlOLEVBQUE5TCxFQUFBcTVELEdBQ0FMLEVBQUFLLE1BQ0ss
Q0FDTCxHQUFBRSxHQUFBamtFLEtBQUFra0Usb0NBQUFuN0QsRUFBQXlOLEdBQ0EydEQsRUFBQW5r
RSxLQUFBb2tFLHFCQUFBcjdELEVBQUF5TixFQUFBOUwsRUFFQWc1RCxJQURBUyxHQUFBNUIsRUFB
QXZpRSxLQUFBb2dFLE1BQ0E2RCxFQUFBLEtBRUFBLEVBQUEsSUFBQUUsRUFBQSxLQUFBbmtFLEtB
QUEwSixnQkFBQUMsS0FBQSxJQUlBLE9BQUEzSixLQUFBb2dFLE1BQ0EsWUFDQXIzRCxFQUFBNEss
cUJBQUF2SixRQUFBMjJELEVBQUEvZ0UsTUFDQXdXLEVBQUE4OEIsV0FDQXZxQyxFQUFBNEsscUJB
QUF2SixRQUFBNmlELEVBQUFDLGtCQUFBbHRELEtBRUEsTUFDQSxnQkFDQStJLEVBQUE0SyxxQkFB
QXZKLFFBQUE4MkQsRUFBQWxoRSxNQUNBd1csRUFBQTg4QixXQUNBdnFDLEVBQUE0SyxxQkFBQXZK
LFFBQUE2aUQsRUFBQUMsa0JBQUFsdEQsS0FFQSxNQUNBLGNBQ0F3VyxFQUFBODhCLFdBQ0F2cUMs
RUFBQTRLLHFCQUFBdkosUUFBQTZpRCxFQUFBQyxrQkFBQWx0RCxLQUVBLE1BQ0EsY0FDQXdXLEVB
QUE4OEIsV0FDQXZxQyxFQUFBNEsscUJBQUF2SixRQUFBNmlELEVBQUFDLGtCQUFBbHRELEtBRUEs
TUFDQSxjQUNBK0ksRUFBQTRLLHFCQUFBdkosUUFBQWczRCxFQUFBcGhFLE1BSUEsTUFBQTBqRSxJ
QWdCQVEsb0NBQUEsU0FBQW43RCxFQUFBeU4sR0FDQSxHQUFBd08sR0FBQSxJQUFBaGxCLEtBQUEw
SixnQkFBQUMsSUFFQSxRQUFBMDZELEtBQUE3dEQsR0FDQSxHQUFBQSxFQUFBaFgsZUFBQTZrRSxH
QUFBLENBR0EsR0FBQXJuQyxHQUFBeG1CLEVBQUE2dEQsRUFDQSxVQUFBcm5DLEVBR0EsR0FBQTdq
QixFQUFBM1osZUFBQTZrRSxHQUNBcm5DLEdBQ0F1akMsRUFBQXZnRSxLQUFBcWtFLEVBQUFybkMs
RUFBQWowQixPQUVPLENBQ1BzN0QsSUFBQWhDLElBQ0FybEMsSUFLQUEsRUFBQWg5QixLQUFBa2lF
LG1CQUFBcjNELEtBQTREMkwsRUFBQW01QyxRQUU1RDN5QixFQUFBNnlCLEVBQUFDLHNCQUFBOXlC
LEVBQUFoOUIsTUFFQSxJQUFBeVQsR0FBQSxJQUNBLE9BQUF6VCxLQUFBb2dFLE1BQUEwQixFQUFB
OWhFLEtBQUFvZ0UsS0FBQTVwRCxHQUNBTCxFQUFBM1csZUFBQTZrRSxLQUNBNXdELEVBQUFtb0Is
RUFBQU0sK0JBQUFtb0MsRUFBQXJuQyxJQUdBdnBCLEVBQUFtb0IsRUFBQUssd0JBQUFvb0MsRUFB
QXJuQyxHQUVBdnBCLElBQ0F1UixHQUFBLElBQUF2UixJQU9BLE1BQUExSyxHQUFBdTdELHFCQUNB
dC9DLEdBR0FobEIsS0FBQStGLGNBQ0FpZixHQUFBLElBQUE0VyxFQUFBRyx1QkFFQS9XLEdBQUEs
SUFBQTRXLEVBQUFDLGtCQUFBNzdCLEtBQUFvRixVQWFBZy9ELHFCQUFBLFNBQUFyN0QsRUFBQXlO
LEVBQUE5TCxHQUNBLEdBQUFzYSxHQUFBLEdBR0FzQixFQUFBOVAsRUFBQTZwRCx1QkFDQSxVQUFB
LzVDLEVBQ0EsTUFBQUEsRUFBQWkrQyxTQUNBdi9DLEVBQUFzQixFQUFBaStDLFlBRUssQ0FDTCxH
QUFBQyxHQUFBcEMsUUFBQTVyRCxHQUFBM1IsVUFBQTJSLEVBQUEzUixTQUFBLEtBQ0E0L0QsRUFB
QSxNQUFBRCxFQUFBLEtBQUFodUQsRUFBQTNSLFFBQ0EsVUFBQTIvRCxFQUVBeC9DLEVBQUFpQixF
QUFBdStDLE9BSU8sVUFBQUMsRUFBQSxDQUNQLEdBQUFySixHQUFBcDdELEtBQUEwa0UsY0FBQUQs
RUFBQTE3RCxFQUFBMkIsRUFDQXNhLEdBQUFvMkMsRUFBQTc0RCxLQUFBLEtBR0EsTUFBQTBnRSxH
QUFBampFLEtBQUFvZ0UsT0FBQSxPQUFBcDdDLEVBQUF1USxPQUFBLEdBV0EsS0FBQXZRLEVBRUFB
LEdBSUFnL0MsdUJBQUEsU0FBQWo3RCxFQUFBeU4sRUFBQTlMLEVBQUFxNUQsR0FFQSxHQUFBejlD
LEdBQUE5UCxFQUFBNnBELHVCQUNBLFVBQUEvNUMsRUFDQSxNQUFBQSxFQUFBaStDLFFBQ0F2MEQs
RUFBQUgsVUFBQWswRCxFQUFBejlDLEVBQUFpK0MsWUFFSyxDQUNMLEdBQUFDLEdBQUFwQyxRQUFB
NXJELEdBQUEzUixVQUFBMlIsRUFBQTNSLFNBQUEsS0FDQTQvRCxFQUFBLE1BQUFELEVBQUEsS0FB
QWh1RCxFQUFBM1IsUUFFQSxVQUFBMi9ELEVBS0EsS0FBQUEsR0FJQXgwRCxFQUFBRixVQUFBaTBE
LEVBQUFTLE9BRU8sVUFBQUMsRUFFUCxPQURBckosR0FBQXA3RCxLQUFBMGtFLGNBQUFELEVBQUEx
N0QsRUFBQTJCLEdBQ0FyTCxFQUFBLEVBQXVCQSxFQUFBKzdELEVBQUE5NUQsT0FBd0JqQyxJQUMv
QzJRLEVBQUFQLFdBQUFzMEQsRUFBQTNJLEVBQUEvN0QsTUFjQTJVLGlCQUFBLFNBQUFDLEVBQUFs
TCxFQUFBMkIsR0FDQSxHQUFBd0osR0FBQWxVLEtBQUEwSixlQUNBMUosTUFBQTBKLGdCQUFBdUss
RUFDQWpVLEtBQUErZ0QsZ0JBQUFoNEMsRUFBQW1MLEVBQUFELEVBQUF2SixJQWFBcTJDLGdCQUFB
LFNBQUFoNEMsRUFBQW1MLEVBQUFELEVBQUF2SixHQUNBLEdBQUFpNkQsR0FBQXp3RCxFQUFBc0Ms
TUFDQSswQixFQUFBdnJDLEtBQUEwSixnQkFBQThNLEtBRUEsUUFBQXhXLEtBQUFvZ0UsTUFDQSxZ
QUNBdUUsRUFBQTNELEVBQUF6akMsYUFBQXY5QixLQUFBMmtFLEdBQ0FwNUIsRUFBQXkxQixFQUFB
empDLGFBQUF2OUIsS0FBQXVyQyxFQUNBLE1BQ0EsY0FDQW81QixFQUFBdEQsRUFBQTlqQyxhQUFB
djlCLEtBQUEya0UsR0FDQXA1QixFQUFBODFCLEVBQUE5akMsYUFBQXY5QixLQUFBdXJDLEVBQ0Es
TUFDQSxjQUNBbzVCLEVBQUFybkMsRUFBQUMsYUFBQXY5QixLQUFBMmtFLEdBQ0FwNUIsRUFBQWpP
LEVBQUFDLGFBQUF2OUIsS0FBQXVyQyxFQUNBLE1BQ0EsZ0JBQ0FvNUIsRUFBQXhELEVBQUE1akMs
YUFBQXY5QixLQUFBMmtFLEdBQ0FwNUIsRUFBQTQxQixFQUFBNWpDLGFBQUF2OUIsS0FBQXVyQyxH
QVFBLE9BSkEyMEIsRUFBQWxnRSxLQUFBdXJDLEdBQ0F2ckMsS0FBQThqRSxxQkFBQWEsRUFBQXA1
QixFQUFBeGlDLEdBQ0EvSSxLQUFBNGtFLG1CQUFBRCxFQUFBcDVCLEVBQUF4aUMsRUFBQTJCLEdB
RUExSyxLQUFBb2dFLE1BQ0EsWUFJQVksRUFBQTZELGNBQUE3a0UsS0FDQSxNQUNBLGdCQUNBbWhF
LEVBQUEwRCxjQUFBN2tFLEtBQ0EsTUFDQSxjQUdBK0ksRUFBQTRLLHFCQUFBdkosUUFBQXMzRCxF
QUFBMWhFLFFBcUJBOGpFLHFCQUFBLFNBQUFhLEVBQUFwNUIsRUFBQXhpQyxHQUNBLEdBQUFzN0Qs
R0FDQTlVLEVBQ0F1VixDQUNBLEtBQUFULElBQUFNLEdBQ0EsSUFBQXA1QixFQUFBL3JDLGVBQUE2
a0UsSUFBQU0sRUFBQW5sRSxlQUFBNmtFLElBQUEsTUFBQU0sRUFBQU4sR0FHQSxHQUFBQSxJQUFB
aEMsRUFBQSxDQUNBLEdBQUEwQyxHQUFBL2tFLEtBQUFraUUsa0JBQ0EsS0FBQTNTLElBQUF3VixH
QUNBQSxFQUFBdmxFLGVBQUErdkQsS0FDQXVWLFFBQ0FBLEVBQUF2VixHQUFBLEdBR0F2dkQsTUFB
QWtpRSxtQkFBQSxTQUNPL29ELEdBQUEzWixlQUFBNmtFLEdBQ1BNLEVBQUFOLElBSUEvcUQsRUFB
QXRaLEtBQUFxa0UsR0FFT3ZDLEVBQUE5aEUsS0FBQW9nRSxLQUFBdUUsR0FDUHh1RCxFQUFBM1cs
ZUFBQTZrRSxJQUNBem9DLEVBQUFhLHdCQUFBK2tDLEVBQUF4aEUsTUFBQXFrRSxJQUVPcitELEVB
QUFnTSxXQUFBcXlELElBQUFyK0QsRUFBQThMLGtCQUFBdXlELEtBQ1B6b0MsRUFBQVEsdUJBQUFv
bEMsRUFBQXhoRSxNQUFBcWtFLEVBR0EsS0FBQUEsSUFBQTk0QixHQUFBLENBQ0EsR0FBQXk1QixH
QUFBejVCLEVBQUE4NEIsR0FDQVksRUFBQVosSUFBQWhDLEVBQUFyaUUsS0FBQWtpRSxtQkFBQSxN
QUFBeUMsSUFBQU4sR0FBQTNqRSxNQUNBLElBQUE2cUMsRUFBQS9yQyxlQUFBNmtFLElBQUFXLElB
QUFDLElBQUEsTUFBQUQsR0FBQSxNQUFBQyxHQUdBLEdBQUFaLElBQUFoQyxFQVVBLEdBVEEyQyxF
QUtBQSxFQUFBaGxFLEtBQUFraUUsbUJBQUFyM0QsS0FBeURtNkQsR0FFekRobEUsS0FBQWtpRSxt
QkFBQSxLQUVBK0MsRUFBQSxDQUVBLElBQUExVixJQUFBMFYsSUFDQUEsRUFBQXpsRSxlQUFBK3ZE
LElBQUF5VixLQUFBeGxFLGVBQUErdkQsS0FDQXVWLFFBQ0FBLEVBQUF2VixHQUFBLEdBSUEsS0FB
QUEsSUFBQXlWLEdBQ0FBLEVBQUF4bEUsZUFBQSt2RCxJQUFBMFYsRUFBQTFWLEtBQUF5VixFQUFB
elYsS0FDQXVWLFFBQ0FBLEVBQUF2VixHQUFBeVYsRUFBQXpWLFFBS0F1VixHQUFBRSxNQUVPLElB
QUE3ckQsRUFBQTNaLGVBQUE2a0UsR0FDUFcsRUFDQXpFLEVBQUF2Z0UsS0FBQXFrRSxFQUFBVyxF
QUFBajhELEdBQ1NrOEQsR0FDVDNyRCxFQUFBdFosS0FBQXFrRSxPQUVPLElBQUF2QyxFQUFBOWhF
LEtBQUFvZ0UsS0FBQTcwQixHQUNQcDFCLEVBQUEzVyxlQUFBNmtFLElBQ0F6b0MsRUFBQVcscUJB
QUFpbEMsRUFBQXhoRSxNQUFBcWtFLEVBQUFXLE9BRU8sSUFBQWgvRCxFQUFBZ00sV0FBQXF5RCxJ
QUFBcitELEVBQUE4TCxrQkFBQXV5RCxHQUFBLENBQ1AsR0FBQTVnRSxHQUFBKzlELEVBQUF4aEUs
S0FJQSxPQUFBZ2xFLEVBQ0FwcEMsRUFBQU8sb0JBQUExNEIsRUFBQTRnRSxFQUFBVyxHQUVBcHBD
LEVBQUFRLHVCQUFBMzRCLEVBQUE0Z0UsSUFJQVMsR0FDQWpWLEVBQUFNLGtCQUFBcVIsRUFBQXho
RSxNQUFBOGtFLEVBQUE5a0UsT0FhQTRrRSxtQkFBQSxTQUFBRCxFQUFBcDVCLEVBQUF4aUMsRUFB
QTJCLEdBQ0EsR0FBQXc2RCxHQUFBOUMsUUFBQXVDLEdBQUE5L0QsVUFBQTgvRCxFQUFBOS9ELFNB
QUEsS0FDQXNnRSxFQUFBL0MsUUFBQTcyQixHQUFBMW1DLFVBQUEwbUMsRUFBQTFtQyxTQUFBLEtB
RUF1Z0UsRUFBQVQsRUFBQXRFLHlCQUFBc0UsRUFBQXRFLHdCQUFBa0UsT0FDQWMsRUFBQTk1QixF
QUFBODBCLHlCQUFBOTBCLEVBQUE4MEIsd0JBQUFrRSxPQUdBZSxFQUFBLE1BQUFKLEVBQUEsS0FB
QVAsRUFBQTkvRCxTQUNBczJELEVBQUEsTUFBQWdLLEVBQUEsS0FBQTU1QixFQUFBMW1DLFNBSUEw
Z0UsRUFBQSxNQUFBTCxHQUFBLE1BQUFFLEVBQ0FJLEVBQUEsTUFBQUwsR0FBQSxNQUFBRSxDQUNB
LE9BQUFDLEdBQUEsTUFBQW5LLEVBQ0FuN0QsS0FBQWk3RCxlQUFBLEtBQUFseUQsRUFBQTJCLEdB
Q0s2NkQsSUFBQUMsR0FDTHhsRSxLQUFBeWxFLGtCQUFBLElBTUEsTUFBQU4sRUFDQUQsSUFBQUMs
R0FDQW5sRSxLQUFBeWxFLGtCQUFBLEdBQUFOLEdBS0ssTUFBQUUsRUFDTEQsSUFBQUMsR0FDQXJs
RSxLQUFBMGxFLGFBQUEsR0FBQUwsR0FLSyxNQUFBbEssR0FLTG43RCxLQUFBaTdELGVBQUFFLEVB
QUFweUQsRUFBQTJCLElBSUFrSixZQUFBLFdBQ0EsTUFBQTR0RCxHQUFBeGhFLE9BU0E2VCxpQkFB
QSxTQUFBQyxHQUNBLE9BQUE5VCxLQUFBb2dFLE1BQ0EsWUFDQSxXQUNBLGFBQ0EsVUFDQSxXQUNB
LGFBQ0EsYUFDQSxZQUNBLEdBQUF6aUMsR0FBQTM5QixLQUFBMjhCLGNBQUFnQixTQUNBLElBQUFB
LEVBQ0EsT0FBQXQrQixHQUFBLEVBQXlCQSxFQUFBcytCLEVBQUFyOEIsT0FBc0JqQyxJQUMvQ3Mr
QixFQUFBdCtCLEdBQUF3YyxRQUdBLE1BQ0EsYUFDQSxlQUNBK3FCLEVBQUFXLGFBQUF2bkMsS0FD
QSxNQUNBLFlBQ0EsV0FDQSxXQU9Bc0YsRUFBQSxLQUFBdEYsS0FBQW9nRSxNQUlBcGdFLEtBQUF5
N0QsZ0JBQUEzbkQsR0FDQXhOLEVBQUE5QixZQUFBeEUsTUFDQTJZLEVBQUFhLG1CQUFBeFosTUFD
QUEsS0FBQTBZLFlBQUEsRUFDQTFZLEtBQUFvRixPQUFBLEVBQ0FwRixLQUFBMjhCLGNBQUEsTUFP
QXR5QixrQkFBQSxXQUNBLE1BQUFtM0QsR0FBQXhoRSxRQUlBNkssRUFBQWszRCxFQUFBeGlFLFVB
QUF3aUUsRUFBQXdCLE1BQUFwQixFQUFBb0IsT0FFQXprRSxFQUFBRCxRQUFBa2pFLEd6SWs2ZU0s
U0FBU2pqRSxFQUFRRCxFQUFTSCxHMEl4NGdCaEMsWUFNQSxTQUFBc2pDLEdBQUEyakMsRUFBQWxp
RSxHQUNBLEdBQUFva0MsSUFDQTVGLGlCQUFBMGpDLEVBQ0FuQyxXQUFBLEVBQ0EzQyxlQUFBcDlE
LElBQUFFLFdBQUE4OUIsRUFBQWgrQixJQUFBK1ksY0FBQSxLQUNBbWtELE1BQUFsOUQsRUFDQTI4
RCxLQUFBMzhELElBQUFzTSxTQUFBVyxjQUFBLEtBQ0FzeEQsY0FBQXYrRCxJQUFBa04sYUFBQSxL
QUtBLE9BQUFrM0IsR0FoQkEsR0FFQXBHLElBRkEvaUMsRUFBQSxJQUVBLEVBaUJBSSxHQUFBRCxR
QUFBbWpDLEcxSXc1Z0JNLFNBQVNsakMsRUFBUUQsRUFBU0gsRzJJNzZnQmhDLFlBRUEsSUFBQW1N
LEdBQUFuTSxFQUFBLEdBRUFzUixFQUFBdFIsRUFBQSxJQUNBNEgsRUFBQTVILEVBQUEsR0FFQWtu
RSxFQUFBLFNBQUF4bkMsR0FFQXArQixLQUFBMEosZ0JBQUEsS0FFQTFKLEtBQUFzRSxVQUFBLEtB
Q0F0RSxLQUFBK0YsWUFBQSxLQUNBL0YsS0FBQWdqQyxtQkFBQSxLQUNBaGpDLEtBQUFvRixPQUFB
LEVBRUF5RixHQUFBKzZELEVBQUFybUUsV0FDQTZULGVBQUEsU0FBQXJLLEVBQUF1SyxFQUFBQyxF
QUFBN0ksR0FDQSxHQUFBbTdELEdBQUF0eUQsRUFBQWl3RCxZQUNBeGpFLE1BQUFvRixPQUFBeWdF
LEVBQ0E3bEUsS0FBQStGLFlBQUF1TixFQUNBdFQsS0FBQWdqQyxtQkFBQXp2QixDQUVBLElBQUF6
UCxHQUFBLGlCQUFBOUQsS0FBQW9GLE9BQUEsR0FDQSxJQUFBMkQsRUFBQXc1QixpQkFBQSxDQUNB
LEdBQUEvbEIsR0FBQWpKLEVBQUFzdEQsZUFDQXA5RCxFQUFBK1ksRUFBQXNwRCxjQUFBaGlFLEVB
RUEsT0FEQXdDLEdBQUFuQyxhQUFBbkUsS0FBQXlELEdBQ0F1TSxFQUFBdk0sR0FFQSxNQUFBc0Ys
R0FBQXU3RCxxQkFJQSxHQUVBLE9BQUF4Z0UsRUFBQSxPQUdBa1EsaUJBQUEsYUFDQUosWUFBQSxX
QUNBLE1BQUF0TixHQUFBUixvQkFBQTlGLE9BRUE2VCxpQkFBQSxXQUNBdk4sRUFBQTlCLFlBQUF4
RSxTQUlBbEIsRUFBQUQsUUFBQSttRSxHM0k2N2dCTSxTQUFTOW1FLEVBQVFELEc0STcrZ0J2QixZ
QUVBLElBQUF5akMsSUFDQUMsa0JBQUEsRUFDQXdqQyxVQUFBLEVBR0FqbkUsR0FBQUQsUUFBQXlq
QyxHNUk2L2dCTSxTQUFTeGpDLEVBQVFELEVBQVNILEc2SXBnaEJoQyxZQUVBLElBQUFrc0IsR0FB
QWxzQixFQUFBLElBQ0E0SCxFQUFBNUgsRUFBQSxHQUtBazlELEdBT0FFLGtDQUFBLFNBQUEvZ0Qs
RUFBQStQLEdBQ0EsR0FBQXJuQixHQUFBNkMsRUFBQVIsb0JBQUFpVixFQUNBNlAsR0FBQUMsZUFB
QXBuQixFQUFBcW5CLElBSUFoc0IsR0FBQUQsUUFBQSs4RCxHN0lvaGhCTSxTQUFTOThELEVBQVFE
LEVBQVNILEc4SXppaEJoQyxZQW9CQSxTQUFBc25FLEtBQ0FobUUsS0FBQTBZLGFBRUFzb0QsRUFB
QTZELGNBQUE3a0UsTUFJQSxRQUFBaW1FLEdBQUF6dkQsR0FDQSxHQUFBMHZELEdBQUEsYUFBQTF2
RCxFQUFBN00sTUFBQSxVQUFBNk0sRUFBQTdNLElBQ0EsT0FBQXU4RCxHQUFBLE1BQUExdkQsRUFB
QTZZLFFBQUEsTUFBQTdZLEVBQUExRixNQXNNQSxRQUFBc3NCLEdBQUF2dkIsR0FDQSxHQUFBMkks
R0FBQXhXLEtBQUEwSixnQkFBQThNLE1BRUF0SixFQUFBa2pCLEVBQUFLLGdCQUFBamEsRUFBQTNJ
LEVBS0EvRixHQUFBMkMsS0FBQXU3RCxFQUFBaG1FLEtBRUEsSUFBQWMsR0FBQTBWLEVBQUExVixJ
QUNBLGNBQUEwVixFQUFBN00sTUFBQSxNQUFBN0ksRUFBQSxDQUlBLElBSEEsR0FBQXFsRSxHQUFB
Ny9ELEVBQUFSLG9CQUFBOUYsTUFDQW9tRSxFQUFBRCxFQUVBQyxFQUFBMWdFLFlBQ0EwZ0UsSUFB
QTFnRSxVQVdBLFFBRkEyZ0UsR0FBQUQsRUFBQUUsaUJBQUEsY0FBQWo1QixLQUFBQyxVQUFBLEdB
QUF4c0MsR0FBQSxtQkFFQXpCLEVBQUEsRUFBbUJBLEVBQUFnbkUsRUFBQS9rRSxPQUFrQmpDLElB
QUEsQ0FDckMsR0FBQWtuRSxHQUFBRixFQUFBaG5FLEVBQ0EsSUFBQWtuRSxJQUFBSixHQUFBSSxF
QUFBcFIsT0FBQWdSLEVBQUFoUixLQUFBLENBT0EsR0FBQXFSLEdBQUFsZ0UsRUFBQVQsb0JBQUEw
Z0UsRUFDQUMsR0FBQSxPQUFBbGhFLEVBQUEsTUFJQXdDLEVBQUEyQyxLQUFBdTdELEVBQUFRLEtB
SUEsTUFBQXQ1RCxHQTlRQSxHQUFBNUgsR0FBQTVHLEVBQUEsR0FDQW1NLEVBQUFuTSxFQUFBLEdB
RUFrOUIsRUFBQWw5QixFQUFBLElBQ0EweEIsRUFBQTF4QixFQUFBLElBQ0E0SCxFQUFBNUgsRUFB
QSxHQUNBb0osRUFBQXBKLEVBQUEsR0F3Q0FzaUUsR0F0Q0F0aUUsRUFBQSxHQUNBQSxFQUFBLElB
c0NBNitCLGFBQUEsU0FBQW41QixFQUFBb1MsR0FDQSxHQUFBMUYsR0FBQXNmLEVBQUFHLFNBQUEv
WixHQUNBNlksRUFBQWUsRUFBQUksV0FBQWhhLEdBRUFpd0QsRUFBQTU3RCxHQUdBbEIsS0FBQWpK
LE9BR0FxcEMsS0FBQXJwQyxPQUdBb2dDLElBQUFwZ0MsT0FDQXEyRCxJQUFBcjJELFFBQ0s4VixH
QUNMa3dELGVBQUFobUUsT0FDQWc5QixhQUFBaDlCLE9BQ0FvUSxNQUFBLE1BQUFBLElBQUExTSxF
QUFBdTRCLGNBQUFjLGFBQ0FwTyxRQUFBLE1BQUFBLElBQUFqckIsRUFBQXU0QixjQUFBZ3FDLGVB
Q0F4M0MsU0FBQS9xQixFQUFBdTRCLGNBQUF4TixVQUdBLE9BQUFzM0MsSUFHQWpwQyxhQUFBLFNB
QUFwNUIsRUFBQW9TLEdBSUEsR0FvQkFrbkIsR0FBQWxuQixFQUFBa25CLFlBQ0F0NUIsR0FBQXU0
QixlQUNBZ3FDLGVBQUEsTUFBQW53RCxFQUFBNlksUUFBQTdZLEVBQUE2WSxRQUFBN1ksRUFBQWt3
RCxlQUNBanBDLGFBQUEsTUFBQWpuQixFQUFBMUYsTUFBQTBGLEVBQUExRixNQUFBNHNCLEVBQ0FD
LFVBQUEsS0FDQXhPLFNBQUFpTyxFQUFBbm1CLEtBQUE3UyxHQUNBMHRELFdBQUFtVSxFQUFBenZE
LEtBSUFxdUQsY0FBQSxTQUFBemdFLEdBQ0EsR0FBQW9TLEdBQUFwUyxFQUFBc0YsZ0JBQUE4TSxN
QWlCQTZZLEVBQUE3WSxFQUFBNlksT0FDQSxPQUFBQSxHQUNBdU0sRUFBQU8sb0JBQUE3MUIsRUFB
QVIsb0JBQUExQixHQUFBLFVBQUFpckIsSUFBQSxFQUdBLElBQUE1ckIsR0FBQTZDLEVBQUFSLG9C
QUFBMUIsR0FDQTBNLEVBQUFzZixFQUFBRyxTQUFBL1osRUFDQSxVQUFBMUYsRUFDQSxPQUFBQSxH
QUFBLEtBQUFyTixFQUFBcU4sTUFDQXJOLEVBQUFxTixNQUFBLFFBRU8sZUFBQTBGLEVBQUE3TSxL
QUFBLENBRVAsR0FBQWk5RCxHQUFBQyxXQUFBcGpFLEVBQUFxTixNQUFBLFFBSUFBLEdBQUE4MUQs
R0FFQTkxRCxHQUFBODFELEdBQUFuakUsRUFBQXFOLFlBR0FyTixFQUFBcU4sTUFBQSxHQUFBQSxP
QUVPck4sR0FBQXFOLFFBQUEsR0FBQUEsSUFHUHJOLEVBQUFxTixNQUFBLEdBQUFBLE9BR0EsT0FB
QTBGLEVBQUExRixPQUFBLE1BQUEwRixFQUFBa25CLGNBU0FqNkIsRUFBQWk2QixlQUFBLEdBQUFs
bkIsRUFBQWtuQixlQUNBajZCLEVBQUFpNkIsYUFBQSxHQUFBbG5CLEVBQUFrbkIsY0FHQSxNQUFB
bG5CLEVBQUE2WSxTQUFBLE1BQUE3WSxFQUFBa3dELGlCQUNBampFLEVBQUFpakUsaUJBQUFsd0Qs
RUFBQWt3RCxpQkFLQXpGLGlCQUFBLFNBQUE3OEQsR0FDQSxHQUFBb1MsR0FBQXBTLEVBQUFzRixn
QkFBQThNLE1BSUEvUyxFQUFBNkMsRUFBQVIsb0JBQUExQixFQVFBLFFBQUFvUyxFQUFBN00sTUFD
QSxhQUNBLFlBQ0EsS0FDQSxhQUNBLFdBQ0EsZUFDQSxxQkFDQSxZQUNBLFdBQ0EsV0FHQWxHLEVB
QUFxTixNQUFBLEdBQ0FyTixFQUFBcU4sTUFBQXJOLEVBQUFpNkIsWUFDQSxNQUNBLFNBQ0FqNkIs
RUFBQXFOLE1BQUFyTixFQUFBcU4sTUFTQSxHQUFBaFEsR0FBQTJDLEVBQUEzQyxJQUNBLE1BQUFB
LElBQ0EyQyxFQUFBM0MsS0FBQSxJQUVBMkMsRUFBQWlqRSxnQkFBQWpqRSxFQUFBaWpFLGVBQ0Fq
akUsRUFBQWlqRSxnQkFBQWpqRSxFQUFBaWpFLGVBQ0EsS0FBQTVsRSxJQUNBMkMsRUFBQTNDLFVB
cURBaEMsR0FBQUQsUUFBQW1pRSxHOUl5amhCTSxTQUFTbGlFLEVBQVFELEVBQVNILEcrSTUwaEJo
QyxZQVdBLFNBQUFvb0UsR0FBQWppRSxHQUNBLEdBQUFvbUIsR0FBQSxFQWdCQSxPQVpBOVYsR0FB
QUMsU0FBQTFTLFFBQUFtQyxFQUFBLFNBQUFrOUIsR0FDQSxNQUFBQSxJQUdBLGdCQUFBQSxJQUFB
LGdCQUFBQSxHQUNBOVcsR0FBQThXLEVBQ0tnbEMsSUFDTEEsR0FBQSxNQUtBOTdDLEVBMUJBLEdB
QUFwZ0IsR0FBQW5NLEVBQUEsR0FFQXlXLEVBQUF6VyxFQUFBLElBQ0E0SCxFQUFBNUgsRUFBQSxH
QUNBNCtCLEVBQUE1K0IsRUFBQSxJQUdBcW9FLEdBREFyb0UsRUFBQSxJQUNBLEdBeUJBMmlFLEdB
Q0E3akMsYUFBQSxTQUFBcDVCLEVBQUFvUyxFQUFBbEQsR0FPQSxHQUFBMHpELEdBQUEsSUFDQSxV
QUFBMXpELEVBQUEsQ0FDQSxHQUFBMnpELEdBQUEzekQsQ0FFQSxjQUFBMnpELEVBQUE3RyxPQUNB
NkcsSUFBQWxoRSxhQUdBLE1BQUFraEUsR0FBQSxXQUFBQSxFQUFBN0csT0FDQTRHLEVBQUExcEMs
RUFBQU8sc0JBQUFvcEMsSUFNQSxHQUFBOXBDLEdBQUEsSUFDQSxVQUFBNnBDLEVBQUEsQ0FDQSxH
QUFBbDJELEVBT0EsSUFMQUEsRUFEQSxNQUFBMEYsRUFBQTFGLE1BQ0EwRixFQUFBMUYsTUFBQSxH
QUVBZzJELEVBQUF0d0QsRUFBQTNSLFVBRUFzNEIsR0FBQSxFQUNBcm1CLE1BQUF3UixRQUFBMCtD
LElBRUEsT0FBQTNuRSxHQUFBLEVBQXVCQSxFQUFBMm5FLEVBQUExbEUsT0FBd0JqQyxJQUMvQyxN
QUFBMm5FLEVBQUEzbkUsS0FBQXlSLEVBQUEsQ0FDQXFzQixHQUFBLENBQ0EsWUFJQUEsR0FBQSxH
QUFBNnBDLElBQUFsMkQsRUFJQTFNLEVBQUF1NEIsZUFBMEJRLGFBRzFCOGpDLGlCQUFBLFNBQUE3
OEQsR0FFQSxHQUFBb1MsR0FBQXBTLEVBQUFzRixnQkFBQThNLEtBQ0EsVUFBQUEsRUFBQTFGLE1B
QUEsQ0FDQSxHQUFBck4sR0FBQTZDLEVBQUFSLG9CQUFBMUIsRUFDQVgsR0FBQW93QixhQUFBLFFB
QUFyZCxFQUFBMUYsU0FJQXlzQixhQUFBLFNBQUFuNUIsRUFBQW9TLEdBQ0EsR0FBQWl3RCxHQUFB
NTdELEdBQTZCc3lCLFNBQUF6OEIsT0FBQW1FLFNBQUFuRSxRQUEyQzhWLEVBSXhFLE9BQUFwUyxF
QUFBdTRCLGNBQUFRLFdBQ0FzcEMsRUFBQXRwQyxTQUFBLzRCLEVBQUF1NEIsY0FBQVEsU0FHQSxJ
QUFBbFMsR0FBQTY3QyxFQUFBdHdELEVBQUEzUixTQU1BLE9BSkFvbUIsS0FDQXc3QyxFQUFBNWhF
LFNBQUFvbUIsR0FHQXc3QyxHQUlBM25FLEdBQUFELFFBQUF3aUUsRy9JNDFoQk0sU0FBU3ZpRSxF
QUFRRCxFQUFTSCxHZ0oxOGhCaEMsWUFZQSxTQUFBd29FLEdBQUFDLEVBQUFDLEVBQUF2eUMsRUFB
QXd5QyxHQUNBLE1BQUFGLEtBQUF0eUMsR0FBQXV5QyxJQUFBQyxFQWlCQSxRQUFBQyxHQUFBN2pF
LEdBQ0EsR0FBQXk4QixHQUFBejVCLFNBQUF5NUIsVUFDQXFuQyxFQUFBcm5DLEVBQUFNLGNBQ0Fn
bkMsRUFBQUQsRUFBQXA0RCxLQUFBN04sT0FHQW1tRSxFQUFBRixFQUFBRyxXQUNBRCxHQUFBRSxr
QkFBQWxrRSxHQUNBZ2tFLEVBQUFHLFlBQUEsYUFBQUwsRUFFQSxJQUFBTSxHQUFBSixFQUFBdDRE
LEtBQUE3TixPQUNBd21FLEVBQUFELEVBQUFMLENBRUEsUUFDQXJuQyxNQUFBMG5DLEVBQ0F4bkMs
SUFBQXluQyxHQVFBLFFBQUFDLEdBQUF0a0UsR0FDQSxHQUFBeThCLEdBQUExNUIsT0FBQWs1Qixj
QUFBbDVCLE9BQUFrNUIsY0FFQSxLQUFBUSxHQUFBLElBQUFBLEVBQUE4bkMsV0FDQSxXQUdBLElB
QUFiLEdBQUFqbkMsRUFBQWluQyxXQUNBQyxFQUFBbG5DLEVBQUFrbkMsYUFDQXZ5QyxFQUFBcUws
RUFBQXJMLFVBQ0F3eUMsRUFBQW5uQyxFQUFBbW5DLFlBRUFZLEVBQUEvbkMsRUFBQWdvQyxXQUFB
LEVBU0EsS0FFQUQsRUFBQUUsZUFBQXhrRSxTQUNBc2tFLEVBQUFHLGFBQUF6a0UsU0FFRyxNQUFB
ckQsR0FDSCxZQU1BLEdBQUErbkUsR0FBQW5CLEVBQUFobkMsRUFBQWluQyxXQUFBam5DLEVBQUFr
bkMsYUFBQWxuQyxFQUFBckwsVUFBQXFMLEVBQUFtbkMsYUFFQWlCLEVBQUFELEVBQUEsRUFBQUos
RUFBQTVoRSxXQUFBL0UsT0FFQWluRSxFQUFBTixFQUFBTyxZQUNBRCxHQUFBRSxtQkFBQWhsRSxH
QUNBOGtFLEVBQUFHLE9BQUFULEVBQUFFLGVBQUFGLEVBQUFKLFlBRUEsSUFBQWMsR0FBQXpCLEVB
QUFxQixFQUFBSixlQUFBSSxFQUFBVixZQUFBVSxFQUFBSCxhQUFBRyxFQUFBVCxXQUVBM25DLEVB
QUF3b0MsRUFBQSxFQUFBSixFQUFBbGlFLFdBQUEvRSxPQUNBKytCLEVBQUFGLEVBQUFtb0MsRUFH
QU0sRUFBQW5pRSxTQUFBKzVCLGFBQ0Fvb0MsR0FBQUMsU0FBQTFCLEVBQUFDLEdBQ0F3QixFQUFB
RixPQUFBN3pDLEVBQUF3eUMsRUFDQSxJQUFBeUIsR0FBQUYsRUFBQUcsU0FFQSxRQUNBNW9DLE1B
QUEyb0MsRUFBQXpvQyxFQUFBRixFQUNBRSxJQUFBeW9DLEVBQUEzb0MsRUFBQUUsR0FRQSxRQUFB
Mm9DLEdBQUF2bEUsRUFBQW85QixHQUNBLEdBQ0FWLEdBQUFFLEVBREFFLEVBQUE5NUIsU0FBQXk1
QixVQUFBTSxjQUFBa25DLFdBR0FobkUsVUFBQW1nQyxFQUFBUixLQUNBRixFQUFBVSxFQUFBVixN
QUNBRSxFQUFBRixHQUNHVSxFQUFBVixNQUFBVSxFQUFBUixLQUNIRixFQUFBVSxFQUFBUixJQUNB
QSxFQUFBUSxFQUFBVixRQUVBQSxFQUFBVSxFQUFBVixNQUNBRSxFQUFBUSxFQUFBUixLQUdBRSxF
QUFBb25DLGtCQUFBbGtFLEdBQ0E4OEIsRUFBQUcsVUFBQSxZQUFBUCxHQUNBSSxFQUFBcW5DLFlB
QUEsYUFBQXJuQyxHQUNBQSxFQUFBSSxRQUFBLFlBQUFOLEVBQUFGLEdBQ0FJLEVBQUFVLFNBZUEs
UUFBQWdvQyxHQUFBeGxFLEVBQUFvOUIsR0FDQSxHQUFBcjZCLE9BQUFrNUIsYUFBQSxDQUlBLEdB
QUFRLEdBQUExNUIsT0FBQWs1QixlQUNBcCtCLEVBQUFtQyxFQUFBMGlDLEtBQUE3a0MsT0FDQTYr
QixFQUFBaDZCLEtBQUEyNkIsSUFBQUQsRUFBQVYsTUFBQTcrQixHQUNBKytCLEVBQUEzL0IsU0FB
QW1nQyxFQUFBUixJQUFBRixFQUFBaDZCLEtBQUEyNkIsSUFBQUQsRUFBQVIsSUFBQS8rQixFQUlB
LEtBQUE0K0IsRUFBQWdwQyxRQUFBL29DLEVBQUFFLEVBQUEsQ0FDQSxHQUFBOG9DLEdBQUE5b0Ms
Q0FDQUEsR0FBQUYsRUFDQUEsRUFBQWdwQyxFQUdBLEdBQUFDLEdBQUFDLEVBQUE1bEUsRUFBQTA4
QixHQUNBbXBDLEVBQUFELEVBQUE1bEUsRUFBQTQ4QixFQUVBLElBQUErb0MsR0FBQUUsRUFBQSxD
QUNBLEdBQUEvb0MsR0FBQTk1QixTQUFBKzVCLGFBQ0FELEdBQUFzb0MsU0FBQU8sRUFBQTNsRSxL
QUFBMmxFLEVBQUFHLFFBQ0FycEMsRUFBQXNwQyxrQkFFQXJwQyxFQUFBRSxHQUNBSCxFQUFBdXBD
LFNBQUFscEMsR0FDQUwsRUFBQWdwQyxPQUFBSSxFQUFBN2xFLEtBQUE2bEUsRUFBQUMsVUFFQWhw
QyxFQUFBbW9DLE9BQUFZLEVBQUE3bEUsS0FBQTZsRSxFQUFBQyxRQUNBcnBDLEVBQUF1cEMsU0FB
QWxwQyxNQWxMQSxHQUFBNTVCLEdBQUFqSSxFQUFBLEdBRUEycUUsRUFBQTNxRSxFQUFBLEtBQ0F5
bkMsRUFBQXpuQyxFQUFBLElBb0xBZ3JFLEVBQUEvaUUsRUFBQUosV0FBQSxhQUFBRSxhQUFBLGdC
QUFBRCxTQUVBMDRCLEdBSUEwQixXQUFBOG9DLEVBQUFwQyxFQUFBUyxFQU1BN21DLFdBQUF3b0Ms
RUFBQVYsRUFBQUMsRUFHQW5xRSxHQUFBRCxRQUFBcWdDLEdoSjA5aEJNLFNBQVNwZ0MsRUFBUUQs
RUFBU0gsR2lKbHFpQmhDLFlBRUEsSUFBQTRHLEdBQUE1RyxFQUFBLEdBQ0FtTSxFQUFBbk0sRUFB
QSxHQUVBa3NCLEVBQUFsc0IsRUFBQSxJQUNBc1IsRUFBQXRSLEVBQUEsSUFDQTRILEVBQUE1SCxF
QUFBLEdBRUF1bkIsRUFBQXZuQixFQUFBLElBbUJBaXJFLEdBbEJBanJFLEVBQUEsR0FDQUEsRUFB
QSxJQWlCQSxTQUFBeVEsR0FFQW5QLEtBQUEwSixnQkFBQXlGLEVBQ0FuUCxLQUFBNHBFLFlBQUEs
R0FBQXo2RCxFQUVBblAsS0FBQXNFLFVBQUEsS0FDQXRFLEtBQUErRixZQUFBLEtBR0EvRixLQUFB
b0YsT0FBQSxFQUNBcEYsS0FBQWdvQyxZQUFBLEVBQ0Fob0MsS0FBQTZwRSxnQkFBQSxLQUNBN3BF
LEtBQUE4cEUsY0FBQSxNQUdBai9ELEdBQUE4K0QsRUFBQXBxRSxXQVNBNlQsZUFBQSxTQUFBckss
RUFBQXVLLEVBQUFDLEVBQUE3SSxHQUVBLEdBYUFtN0QsR0FBQXR5RCxFQUFBaXdELGFBQ0F1RyxF
QUFBLGdCQUFBbEUsRUFBQSxJQUNBbUUsRUFBQSxlQUdBLElBRkFocUUsS0FBQW9GLE9BQUF5Z0Us
RUFDQTdsRSxLQUFBK0YsWUFBQXVOLEVBQ0F2SyxFQUFBdzVCLGlCQUFBLENBQ0EsR0FBQS9sQixH
QUFBakosRUFBQXN0RCxlQUNBMTJDLEVBQUEzTixFQUFBc3BELGNBQUFpRSxHQUNBOS9DLEVBQUF6
TixFQUFBc3BELGNBQUFrRSxHQUNBakcsRUFBQS96RCxFQUFBd00sRUFBQXl0RCx5QkFRQSxPQVBB
ajZELEdBQUFQLFdBQUFzMEQsRUFBQS96RCxFQUFBbWEsSUFDQW5xQixLQUFBNHBFLGFBQ0E1NUQs
RUFBQVAsV0FBQXMwRCxFQUFBL3pELEVBQUF3TSxFQUFBaU8sZUFBQXpxQixLQUFBNHBFLGVBRUE1
NUQsRUFBQVAsV0FBQXMwRCxFQUFBL3pELEVBQUFpYSxJQUNBM2pCLEVBQUFuQyxhQUFBbkUsS0FB
QW1xQixHQUNBbnFCLEtBQUE2cEUsZ0JBQUE1L0MsRUFDQTg1QyxFQUVBLEdBQUFtRyxHQUFBamtE
LEVBQUFqbUIsS0FBQTRwRSxZQUVBLE9BQUE3Z0UsR0FBQXU3RCxxQkFJQTRGLEVBR0EsT0FBQUgs
RUFBQSxNQUFBRyxFQUFBLE9BQUFGLEVBQUEsT0FXQWgyRCxpQkFBQSxTQUFBbTJELEVBQUFwaEUs
R0FDQSxHQUFBb2hFLElBQUFucUUsS0FBQTBKLGdCQUFBLENBQ0ExSixLQUFBMEosZ0JBQUF5Z0Us
Q0FDQSxJQUFBQyxHQUFBLEdBQUFELENBQ0EsSUFBQUMsSUFBQXBxRSxLQUFBNHBFLFlBQUEsQ0FJ
QTVwRSxLQUFBNHBFLFlBQUFRLENBQ0EsSUFBQUMsR0FBQXJxRSxLQUFBNFQsYUFDQWdYLEdBQUFO
LHFCQUFBKy9DLEVBQUEsR0FBQUEsRUFBQSxHQUFBRCxNQUtBeDJELFlBQUEsV0FDQSxHQUFBMDJE
LEdBQUF0cUUsS0FBQThwRSxhQUNBLElBQUFRLEVBQ0EsTUFBQUEsRUFFQSxLQUFBdHFFLEtBQUE2
cEUsZ0JBR0EsSUFGQSxHQUFBMS9DLEdBQUE3akIsRUFBQVIsb0JBQUE5RixNQUNBeUQsRUFBQTBt
QixFQUFBOWtCLGNBQ0E7QUFFQSxHQURBLE1BQUE1QixFQUFBNkIsRUFBQSxLQUFBdEYsS0FBQW9G
LFFBQUEsT0FDQSxJQUFBM0IsRUFBQUUsVUFBQSxrQkFBQUYsRUFBQUssVUFBQSxDQUNBOUQsS0FB
QTZwRSxnQkFBQXBtRSxDQUNBLE9BRUFBLElBQUE0QixZQUtBLE1BRkFpbEUsSUFBQXRxRSxLQUFB
c0UsVUFBQXRFLEtBQUE2cEUsaUJBQ0E3cEUsS0FBQThwRSxjQUFBUSxFQUNBQSxHQUdBejJELGlC
QUFBLFdBQ0E3VCxLQUFBNnBFLGdCQUFBLEtBQ0E3cEUsS0FBQThwRSxjQUFBLEtBQ0F4akUsRUFB
QTlCLFlBQUF4RSxTQUlBbEIsRUFBQUQsUUFBQThxRSxHakprcmlCTSxTQUFTN3FFLEVBQVFELEVB
QVNILEdrSngwaUJoQyxZQWVBLFNBQUFzbkUsS0FDQWhtRSxLQUFBMFksYUFFQXlvRCxFQUFBMEQs
Y0FBQTdrRSxNQTJIQSxRQUFBbzlCLEdBQUF2dkIsR0FDQSxHQUFBMkksR0FBQXhXLEtBQUEwSixn
QkFBQThNLE1BQ0F0SixFQUFBa2pCLEVBQUFLLGdCQUFBamEsRUFBQTNJLEVBRUEsT0FEQS9GLEdB
QUEyQyxLQUFBdTdELEVBQUFobUUsTUFDQWtOLEVBL0lBLEdBQUE1SCxHQUFBNUcsRUFBQSxHQUNB
bU0sRUFBQW5NLEVBQUEsR0FFQTB4QixFQUFBMXhCLEVBQUEsSUFDQTRILEVBQUE1SCxFQUFBLEdB
Q0FvSixFQUFBcEosRUFBQSxHQThCQXlpRSxHQTVCQXppRSxFQUFBLEdBQ0FBLEVBQUEsSUE0QkE2
K0IsYUFBQSxTQUFBbjVCLEVBQUFvUyxHQUNBLE1BQUFBLEVBQUE2cEQsd0JBQUEvNkQsRUFBQSxZ
QU9BLElBQUFtaEUsR0FBQTU3RCxLQUE4QjJMLEdBQzlCMUYsTUFBQXBRLE9BQ0FnOUIsYUFBQWg5
QixPQUNBbUUsU0FBQSxHQUFBVCxFQUFBdTRCLGNBQUFjLGFBQ0F0TyxTQUFBL3FCLEVBQUF1NEIs
Y0FBQXhOLFVBR0EsT0FBQXMzQyxJQUdBanBDLGFBQUEsU0FBQXA1QixFQUFBb1MsR0FhQSxHQUFB
MUYsR0FBQXNmLEVBQUFHLFNBQUEvWixHQUNBaW5CLEVBQUEzc0IsQ0FHQSxVQUFBQSxFQUFBLENB
Q0EsR0FBQTRzQixHQUFBbG5CLEVBQUFrbkIsYUFFQTc0QixFQUFBMlIsRUFBQTNSLFFBQ0EsT0FB
QUEsSUFJQSxNQUFBNjRCLEVBQUFwNEIsRUFBQSxhQUNBd1IsTUFBQXdSLFFBQUF6akIsS0FDQUEs
RUFBQXZELFFBQUEsU0FBQWdFLEVBQUEsTUFDQVQsSUFBQSxJQUdBNjRCLEVBQUEsR0FBQTc0QixH
QUVBLE1BQUE2NEIsSUFDQUEsRUFBQSxJQUVBRCxFQUFBQyxFQUdBdDVCLEVBQUF1NEIsZUFDQWMs
YUFBQSxHQUFBQSxFQUNBRSxVQUFBLEtBQ0F4TyxTQUFBaU8sRUFBQW5tQixLQUFBN1MsS0FJQXln
RSxjQUFBLFNBQUF6Z0UsR0FDQSxHQUFBb1MsR0FBQXBTLEVBQUFzRixnQkFBQThNLE1BRUEvUyxF
QUFBNkMsRUFBQVIsb0JBQUExQixHQUNBME0sRUFBQXNmLEVBQUFHLFNBQUEvWixFQUNBLFVBQUEx
RixFQUFBLENBR0EsR0FBQWluQyxHQUFBLEdBQUFqbkMsQ0FHQWluQyxLQUFBdDBDLEVBQUFxTixR
QUNBck4sRUFBQXFOLE1BQUFpbkMsR0FFQSxNQUFBdmhDLEVBQUFrbkIsZUFDQWo2QixFQUFBaTZC
LGFBQUFxYSxHQUdBLE1BQUF2aEMsRUFBQWtuQixlQUNBajZCLEVBQUFpNkIsYUFBQWxuQixFQUFB
a25CLGVBSUF1akMsaUJBQUEsU0FBQTc4RCxHQUdBLEdBQUFYLEdBQUE2QyxFQUFBUixvQkFBQTFC
LEdBQ0Era0MsRUFBQTFsQyxFQUFBMGxDLFdBTUFBLEtBQUEva0MsRUFBQXU0QixjQUFBYyxlQUNB
aDZCLEVBQUFxTixNQUFBcTRCLEtBWUFycUMsR0FBQUQsUUFBQXNpRSxHbEp3MWlCTSxTQUFTcmlF
LEVBQVFELEVBQVNILEdtSjUraUJoQyxZQVVBLFNBQUFxdkIsR0FBQXc4QyxFQUFBQyxHQUNBLGFB
QUFELEdBQUEsT0FBQWpsRSxFQUFBLE1BQ0EsYUFBQWtsRSxHQUFBLE9BQUFsbEUsRUFBQSxLQUdB
LFFBREFtbEUsR0FBQSxFQUNBQyxFQUFBSCxFQUF5QkcsRUFBT0EsSUFBQTNrRSxZQUNoQzBrRSxH
QUdBLFFBREFFLEdBQUEsRUFDQUMsRUFBQUosRUFBeUJJLEVBQU9BLElBQUE3a0UsWUFDaEM0a0Us
R0FJQSxNQUFBRixFQUFBRSxFQUFBLEdBQ0FKLElBQUF4a0UsWUFDQTBrRSxHQUlBLE1BQUFFLEVB
QUFGLEVBQUEsR0FDQUQsSUFBQXprRSxZQUNBNGtFLEdBS0EsS0FEQSxHQUFBRSxHQUFBSixFQUNB
SSxLQUFBLENBQ0EsR0FBQU4sSUFBQUMsRUFDQSxNQUFBRCxFQUVBQSxLQUFBeGtFLFlBQ0F5a0Us
SUFBQXprRSxZQUVBLFlBTUEsUUFBQStuQixHQUFBeThDLEVBQUFDLEdBQ0EsYUFBQUQsR0FBQSxP
QUFBamxFLEVBQUEsTUFDQSxhQUFBa2xFLEdBQUEsT0FBQWxsRSxFQUFBLEtBRUEsTUFBQWtsRSxH
QUFBLENBQ0EsR0FBQUEsSUFBQUQsRUFDQSxRQUVBQyxLQUFBemtFLFlBRUEsU0FNQSxRQUFBaVYs
R0FBQTVXLEdBR0EsTUFGQSxhQUFBQSxHQUFBLE9BQUFrQixFQUFBLE1BRUFsQixFQUFBMkIsWUFN
QSxRQUFBOFUsR0FBQXpXLEVBQUF4RSxFQUFBeUgsR0FFQSxJQURBLEdBQUF5akUsTUFDQTFtRSxH
QUNBMG1FLEVBQUFybEUsS0FBQXJCLEdBQ0FBLElBQUEyQixXQUVBLElBQUExRyxFQUNBLEtBQUFB
LEVBQUF5ckUsRUFBQXhwRSxPQUF1QmpDLEtBQUEsR0FDdkJPLEVBQUFrckUsRUFBQXpyRSxHQUFB
LFdBQUFnSSxFQUVBLEtBQUFoSSxFQUFBLEVBQWFBLEVBQUF5ckUsRUFBQXhwRSxPQUFpQmpDLElB
QzlCTyxFQUFBa3JFLEVBQUF6ckUsR0FBQSxVQUFBZ0ksR0FXQSxRQUFBb1UsR0FBQXRZLEVBQUFF
LEVBQUF6RCxFQUFBb3VCLEVBQUFDLEdBR0EsSUFGQSxHQUFBODhDLEdBQUE1bkUsR0FBQUUsRUFB
QTBxQixFQUFBNXFCLEVBQUFFLEdBQUEsS0FDQTJuRSxLQUNBN25FLE9BQUE0bkUsR0FDQUMsRUFB
QXZsRSxLQUFBdEMsR0FDQUEsSUFBQTRDLFdBR0EsS0FEQSxHQUFBa2xFLE1BQ0E1bkUsT0FBQTBu
RSxHQUNBRSxFQUFBeGxFLEtBQUFwQyxHQUNBQSxJQUFBMEMsV0FFQSxJQUFBMUcsRUFDQSxLQUFB
QSxFQUFBLEVBQWFBLEVBQUEyckUsRUFBQTFwRSxPQUFxQmpDLElBQ2xDTyxFQUFBb3JFLEVBQUEz
ckUsR0FBQSxVQUFBMnVCLEVBRUEsS0FBQTN1QixFQUFBNHJFLEVBQUEzcEUsT0FBeUJqQyxLQUFB
LEdBQ3pCTyxFQUFBcXJFLEVBQUE1ckUsR0FBQSxXQUFBNHVCLEdBaEhBLEdBQUEzb0IsR0FBQTVH
LEVBQUEsRUFFQUEsR0FBQSxFQWtIQUksR0FBQUQsU0FDQWl2QixhQUNBQywwQkFDQS9TLG9CQUNB
SCxtQkFDQVksdUJuSjYvaUJNLFNBQVMzYyxFQUFRRCxFQUFTSCxHb0p4bmpCaEMsWUF1QkEsU0FB
QXdzRSxLQUNBbHJFLEtBQUFrSSwwQkF0QkEsR0FBQTJDLEdBQUFuTSxFQUFBLEdBRUFvSixFQUFB
cEosRUFBQSxHQUNBcU0sRUFBQXJNLEVBQUEsSUFFQXNDLEVBQUF0QyxFQUFBLEdBRUF5c0UsR0FD
QWxnRSxXQUFBakssRUFDQWtLLE1BQUEsV0FDQWtnRSxFQUFBN2dFLG1CQUFBLElBSUE4Z0UsR0FD
QXBnRSxXQUFBakssRUFDQWtLLE1BQUFwRCxFQUFBc0Qsb0JBQUE2TCxLQUFBblAsSUFHQTBELEdB
QUE2L0QsRUFBQUYsRUFNQXRnRSxHQUFBcWdFLEVBQUEzckUsVUFBQXdMLEdBQ0FVLHVCQUFBLFdB
Q0EsTUFBQUQsS0FJQSxJQUFBekMsR0FBQSxHQUFBbWlFLEdBRUFFLEdBQ0E3Z0UsbUJBQUEsRUFN
QS9CLGVBQUEsU0FBQUMsRUFBQTVJLEVBQUFDLEVBQUFYLEVBQUFrQixFQUFBQyxHQUNBLEdBQUFn
ckUsR0FBQUYsRUFBQTdnRSxpQkFLQSxPQUhBNmdFLEdBQUE3Z0UsbUJBQUEsRUFHQStnRSxFQUNB
N2lFLEVBQUE1SSxFQUFBQyxFQUFBWCxFQUFBa0IsRUFBQUMsR0FFQXlJLEVBQUE2QyxRQUFBbkQs
RUFBQSxLQUFBNUksRUFBQUMsRUFBQVgsRUFBQWtCLEVBQUFDLElBS0F4QixHQUFBRCxRQUFBdXNF
LEdwSndvakJNLFNBQVN0c0UsRUFBUUQsRUFBU0gsR3FKaHNqQmhDLFlBd0JBLFNBQUFpaEUsS0FD
QTRMLElBTUFBLEdBQUEsRUFFQUMsRUFBQUMsYUFBQTlwRCx5QkFBQUQsR0FLQThwRCxFQUFBN3lE
LGVBQUFDLHVCQUFBMjVDLEdBQ0FpWixFQUFBMXpELGlCQUFBNlYsb0JBQUFybkIsR0FDQWtsRSxF
QUFBMXpELGlCQUFBK1Ysb0JBQUE2OUMsR0FNQUYsRUFBQTd5RCxlQUFBRSwwQkFDQTh5RCxvQkFD
QWpaLHdCQUNBekIsb0JBQ0EyYSxvQkFDQXhjLDJCQUdBb2MsRUFBQUssY0FBQWx0Qyw0QkFBQW9q
QyxHQUVBeUosRUFBQUssY0FBQWh0Qyx5QkFBQThxQyxHQUVBNkIsRUFBQXhsRSxZQUFBc0wsd0JB
QUEwNEMsR0FDQXdoQixFQUFBeGxFLFlBQUFzTCx3QkFBQWlpRCxHQUNBaVksRUFBQXhsRSxZQUFB
c0wsd0JBQUF3NkQsR0FFQU4sRUFBQU8sZUFBQTl0Qyw0QkFBQSxTQUFBRyxHQUNBLFVBQUF3bkMs
R0FBQXhuQyxLQUdBb3RDLEVBQUFRLFFBQUE5L0QsMkJBQUFuRSxHQUNBeWpFLEVBQUFRLFFBQUE1
L0QsdUJBQUFnL0QsR0FFQUksRUFBQWgyRCxVQUFBdWIsa0JBQUE4cUMsSUFuRUEsR0FBQTdSLEdB
QUF0ckQsRUFBQSxLQUNBMHdELEVBQUExd0QsRUFBQSxLQUNBdXlELEVBQUF2eUQsRUFBQSxLQUNB
NnpELEVBQUE3ekQsRUFBQSxLQUNBZzBELEVBQUFoMEQsRUFBQSxLQUNBNjBELEVBQUE3MEQsRUFB
QSxLQUNBbTlELEVBQUFuOUQsRUFBQSxLQUNBcWpFLEVBQUFyakUsRUFBQSxLQUNBNEgsRUFBQTVI
LEVBQUEsR0FDQWtuRSxFQUFBbG5FLEVBQUEsS0FDQWd0RSxFQUFBaHRFLEVBQUEsS0FDQWlyRSxF
QUFBanJFLEVBQUEsS0FDQTBzRSxFQUFBMXNFLEVBQUEsS0FDQWdqQixFQUFBaGpCLEVBQUEsS0FD
QThzRSxFQUFBOXNFLEVBQUEsS0FDQXFKLEVBQUFySixFQUFBLEtBQ0FvdEUsRUFBQXB0RSxFQUFB
LEtBQ0FrdEUsRUFBQWx0RSxFQUFBLEtBQ0FpdEUsRUFBQWp0RSxFQUFBLEtBRUE2c0UsR0FBQSxD
QWtEQXpzRSxHQUFBRCxTQUNBOGdFLFdySml0akJBLEdBRU0sU0FBUzdnRSxFQUFRRCxFQUFTSCxH
c0o1eGpCaEMsWUFJQSxTQUFBdXRFLEdBQUF0eUQsR0FDQWhCLEVBQUFvQixjQUFBSixHQUNBaEIs
RUFBQXFCLG1CQUFBLEdBSkEsR0FBQXJCLEdBQUFqYSxFQUFBLElBT0F5ZSxHQUtBMEUsZUFBQSxT
QUFBbkksRUFBQWpOLEVBQUFDLEVBQUFDLEdBQ0EsR0FBQWdOLEdBQUFoQixFQUFBYyxjQUFBQyxF
QUFBak4sRUFBQUMsRUFBQUMsRUFDQXMvRCxHQUFBdHlELElBSUE3YSxHQUFBRCxRQUFBc2UsR3RK
NHlqQk0sU0FBU3JlLEVBQVFELEVBQVNILEd1SmgwakJoQyxZQWtCQSxTQUFBd3RFLEdBQUE5bkUs
R0FJQSxLQUFBQSxFQUFBMkIsYUFDQTNCLElBQUEyQixXQUVBLElBQUFvZ0UsR0FBQTcvRCxFQUFB
UixvQkFBQTFCLEdBQ0FvOUIsRUFBQTJrQyxFQUFBemdFLFVBQ0EsT0FBQVksR0FBQWYsMkJBQUFp
OEIsR0FJQSxRQUFBMnFDLEdBQUF6eUQsRUFBQWhOLEdBQ0ExTSxLQUFBMFosZUFDQTFaLEtBQUEw
TSxjQUNBMU0sS0FBQW9zRSxhQVdBLFFBQUFDLEdBQUFDLEdBQ0EsR0FBQTMvRCxHQUFBeVAsRUFB
QWt3RCxFQUFBNS9ELGFBQ0FELEVBQUFuRyxFQUFBZiwyQkFBQW9ILEdBTUE0L0QsRUFBQTkvRCxD
QUNBLEdBQ0E2L0QsR0FBQUYsVUFBQTNtRSxLQUFBOG1FLEdBQ0FBLEtBQUFMLEVBQUFLLFNBQ0dB
LEVBRUgsUUFBQWx0RSxHQUFBLEVBQWlCQSxFQUFBaXRFLEVBQUFGLFVBQUE5cUUsT0FBa0NqQyxJ
QUNuRG9OLEVBQUE2L0QsRUFBQUYsVUFBQS9zRSxHQUNBcWlCLEVBQUE4cUQsZ0JBQUFGLEVBQUE1
eUQsYUFBQWpOLEVBQUE2L0QsRUFBQTUvRCxZQUFBMFAsRUFBQWt3RCxFQUFBNS9ELGNBSUEsUUFB
QSsvRCxHQUFBem1DLEdBQ0EsR0FBQUgsR0FBQXdlLEVBQUE3OUMsT0FDQXcvQixHQUFBSCxHQWpF
QSxHQUFBaDdCLEdBQUFuTSxFQUFBLEdBRUE2MUIsRUFBQTcxQixFQUFBLElBQ0FpSSxFQUFBakks
RUFBQSxHQUNBb00sRUFBQXBNLEVBQUEsSUFDQTRILEVBQUE1SCxFQUFBLEdBQ0FvSixFQUFBcEos
RUFBQSxHQUVBMGQsRUFBQTFkLEVBQUEsSUFDQTJsRCxFQUFBM2xELEVBQUEsSUF5QkFtTSxHQUFB
c2hFLEVBQUE1c0UsV0FDQW1NLFdBQUEsV0FDQTFMLEtBQUEwWixhQUFBLEtBQ0ExWixLQUFBME0s
WUFBQSxLQUNBMU0sS0FBQW9zRSxVQUFBOXFFLE9BQUEsS0FHQXdKLEVBQUFpQixhQUFBb2dFLEVB
QUFyaEUsRUFBQTRoRSxrQkEyQkEsSUFBQWhyRCxJQUNBaXJELFVBQUEsRUFDQUgsZ0JBQUEsS0FF
QS9wRCxjQUFBOWIsRUFBQUosVUFBQUMsT0FBQSxLQUVBb2Isa0JBQUEsU0FBQUMsR0FDQUgsRUFB
QThxRCxnQkFBQTNxRCxHQUdBQyxXQUFBLFNBQUFDLEdBQ0FMLEVBQUFpckQsV0FBQTVxRCxHQUdB
QyxVQUFBLFdBQ0EsTUFBQU4sR0FBQWlyRCxVQWFBcHFELGlCQUFBLFNBQUE3SSxFQUFBZ0osRUFB
QWpNLEdBQ0EsTUFBQUEsR0FHQThkLEVBQUFDLE9BQUEvZCxFQUFBaU0sRUFBQWhCLEVBQUFrckQs
Y0FBQTMxRCxLQUFBLEtBQUF5QyxJQUZBLE1BZUE4SSxrQkFBQSxTQUFBOUksRUFBQWdKLEVBQUFq
TSxHQUNBLE1BQUFBLEdBR0E4ZCxFQUFBWixRQUFBbGQsRUFBQWlNLEVBQUFoQixFQUFBa3JELGNB
QUEzMUQsS0FBQSxLQUFBeUMsSUFGQSxNQUtBd0osbUJBQUEsU0FBQUYsR0FDQSxHQUFBdmEsR0FB
QWdrRSxFQUFBeDFELEtBQUEsS0FBQStMLEVBQ0F1UixHQUFBQyxPQUFBaHVCLE9BQUEsU0FBQWlD
LElBR0Fta0UsY0FBQSxTQUFBbHpELEVBQUFoTixHQUNBLEdBQUFnVixFQUFBaXJELFNBQUEsQ0FJ
QSxHQUFBTCxHQUFBSCxFQUFBN2pFLFVBQUFvUixFQUFBaE4sRUFDQSxLQUdBNUUsRUFBQVUsZUFB
QTZqRSxFQUFBQyxHQUNLLFFBQ0xILEVBQUF4Z0UsUUFBQTJnRSxNQUtBeHRFLEdBQUFELFFBQUE2
aUIsR3ZKZzFqQk0sU0FBUzVpQixFQUFRRCxFQUFTSCxHd0ovOWpCaEMsWUFFQSxJQUFBc0gsR0FB
QXRILEVBQUEsSUFDQWlhLEVBQUFqYSxFQUFBLElBQ0FvWixFQUFBcFosRUFBQSxJQUNBa3lCLEVB
QUFseUIsRUFBQSxJQUNBdy9CLEVBQUF4L0IsRUFBQSxJQUNBK2lCLEVBQUEvaUIsRUFBQSxJQUNB
b2dDLEVBQUFwZ0MsRUFBQSxJQUNBb0osRUFBQXBKLEVBQUEsR0FFQThzRSxHQUNBaDJELFVBQUFv
YixFQUFBdGtCLFVBQ0F0RyxjQUFBc0csVUFDQXkvRCxlQUFBN3RDLEVBQUE1eEIsVUFDQXFNLGlC
QUFBck0sVUFDQXdMLG1CQUFBeEwsVUFDQW0vRCxhQUFBaHFELEVBQUFuVixVQUNBdS9ELGNBQUEv
c0MsRUFBQXh5QixVQUNBMC9ELFFBQUFsa0UsRUFBQXdFLFVBR0F4TixHQUFBRCxRQUFBMnNFLEd4
SisrakJNLFNBQVMxc0UsRUFBUUQsRUFBU0gsR3lKcmdrQmhDLFlBRUEsSUFBQW11RSxHQUFBbnVF
LEVBQUEsS0FFQW91RSxFQUFBLE9BQ0FDLEVBQUEsV0FFQTlwQyxHQUNBaUMsbUJBQUEsc0JBTUE4
bkMsb0JBQUEsU0FBQXY1RCxHQUNBLEdBQUF3eEIsR0FBQTRuQyxFQUFBcDVELEVBR0EsT0FBQXM1
RCxHQUFBdjhELEtBQUFpRCxHQUNBQSxFQUVBQSxFQUFBNVMsUUFBQWlzRSxFQUFBLElBQUE3cEMs
RUFBQWlDLG1CQUFBLEtBQUFELEVBQUEsUUFTQUQsZUFBQSxTQUFBdnhCLEVBQUFnRCxHQUNBLEdB
QUF3MkQsR0FBQXgyRCxFQUFBN1MsYUFBQXEvQixFQUFBaUMsbUJBQ0ErbkMsTUFBQXZ5QixTQUFB
dXlCLEVBQUEsR0FDQSxJQUFBQyxHQUFBTCxFQUFBcDVELEVBQ0EsT0FBQXk1RCxLQUFBRCxHQUlB
bnVFLEdBQUFELFFBQUFva0MsR3pKcWhrQk0sU0FBU25rQyxFQUFRRCxFQUFTSCxHMEozamtCaEMs
WUF1QkEsU0FBQXl1RSxHQUFBMTVELEVBQUF5WCxFQUFBa2lELEdBRUEsT0FDQXpqRSxLQUFBLGdC
QUNBc2hCLFFBQUF4WCxFQUNBNDVELFVBQUEsS0FDQWxpRCxTQUFBLEtBQ0FpaUQsVUFDQWxpRCxh
QVdBLFFBQUFvaUQsR0FBQXZyQyxFQUFBN1csRUFBQWtpRCxHQUVBLE9BQ0F6akUsS0FBQSxnQkFD
QXNoQixRQUFBLEtBQ0FvaUQsVUFBQXRyQyxFQUFBaUcsWUFDQTdjLFNBQUFuaEIsRUFBQTRKLFlB
QUFtdUIsR0FDQXFyQyxVQUNBbGlELGFBVUEsUUFBQXFpRCxHQUFBeHJDLEVBQUF0K0IsR0FFQSxP
QUNBa0csS0FBQSxjQUNBc2hCLFFBQUEsS0FDQW9pRCxVQUFBdHJDLEVBQUFpRyxZQUNBN2MsU0FB
QTFuQixFQUNBMnBFLFFBQUEsS0FDQWxpRCxVQUFBLE1BVUEsUUFBQXNpRCxHQUFBLzVELEdBRUEs
T0FDQTlKLEtBQUEsYUFDQXNoQixRQUFBeFgsRUFDQTQ1RCxVQUFBLEtBQ0FsaUQsU0FBQSxLQUNB
aWlELFFBQUEsS0FDQWxpRCxVQUFBLE1BVUEsUUFBQXVpRCxHQUFBdGtDLEdBRUEsT0FDQXgvQixL
QUFBLGVBQ0FzaEIsUUFBQWtlLEVBQ0Fra0MsVUFBQSxLQUNBbGlELFNBQUEsS0FDQWlpRCxRQUFB
LEtBQ0FsaUQsVUFBQSxNQVFBLFFBQUE5Z0IsR0FBQTRCLEVBQUFnZixHQUtBLE1BSkFBLEtBQ0Fo
ZixRQUNBQSxFQUFBdkcsS0FBQXVsQixJQUVBaGYsRUFRQSxRQUFBMGhFLEdBQUF0cEUsRUFBQTA0
RCxHQUNBbHNDLEVBQUFFLHVCQUFBMXNCLEVBQUEwNEQsR0E1SEEsR0FBQXgzRCxHQUFBNUcsRUFB
QSxHQUVBa3lCLEVBQUFseUIsRUFBQSxJQUtBc0wsR0FKQXRMLEVBQUEsSUFDQUEsRUFBQSxHQUVB
QSxFQUFBLElBQ0FBLEVBQUEsS0FDQW84RCxFQUFBcDhELEVBQUEsS0FHQW9vRSxHQURBcG9FLEVB
QUEsR0FDQUEsRUFBQSxNQWtKQXlqRSxHQWpKQXpqRSxFQUFBLElBeUpBNmtFLE9BQ0FvSywrQkFB
QSxTQUFBQyxFQUFBN2tFLEVBQUEyQixHQVlBLE1BQUFvd0QsR0FBQUMsb0JBQUE2UyxFQUFBN2tF
LEVBQUEyQixJQUdBbWpFLDBCQUFBLFNBQUEzUyxFQUFBNFMsRUFBQTFTLEVBQUFDLEVBQUF0eUQs
RUFBQTJCLEdBQ0EsR0FBQXl3RCxHQUNBUCxFQUFBLENBZ0JBLE9BRkFPLEdBQUEyTCxFQUFBZ0gs
RUFBQWxULEdBQ0FFLEVBQUFHLGVBQUFDLEVBQUFDLEVBQUFDLEVBQUFDLEVBQUF0eUQsRUFBQS9J
LFVBQUFnakMsbUJBQUF0NEIsRUFBQWt3RCxHQUNBTyxHQVdBdUosY0FBQSxTQUFBa0osRUFBQTdr
RSxFQUFBMkIsR0FDQSxHQUFBN0YsR0FBQTdFLEtBQUEydEUsK0JBQUFDLEVBQUE3a0UsRUFBQTJC
LEVBQ0ExSyxNQUFBOEUsa0JBQUFELENBRUEsSUFBQXUyRCxNQUNBdjFDLEVBQUEsQ0FDQSxRQUFB
L2tCLEtBQUErRCxHQUNBLEdBQUFBLEVBQUFyRixlQUFBc0IsR0FBQSxDQUNBLEdBQUFpaEMsR0FB
QWw5QixFQUFBL0QsR0FDQTg1RCxFQUFBLEVBSUE4SSxFQUFBMTVELEVBQUFvSixlQUFBMnVCLEVB
QUFoNUIsRUFBQS9JLFVBQUFnakMsbUJBQUF0NEIsRUFBQWt3RCxFQUNBNzRCLEdBQUFpRyxZQUFB
bmlCLElBQ0F1MUMsRUFBQTMxRCxLQUFBaStELEdBUUEsTUFBQXRJLElBU0FxSyxrQkFBQSxTQUFB
TixHQUNBLEdBQUFqSyxHQUFBbDdELEtBQUE4RSxpQkFFQWcyRCxHQUFBVyxnQkFBQVAsR0FBQSxF
QUNBLFFBQUFwNkQsS0FBQW82RCxHQUNBQSxFQUFBMTdELGVBQUFzQixJQUNBd0UsRUFBQSxNQUlB
LElBQUF3bEIsSUFBQTJpRCxFQUFBdEksR0FDQXVJLEdBQUExdEUsS0FBQThxQixJQVNBNDZDLGFB
QUEsU0FBQXhHLEdBQ0EsR0FBQWhFLEdBQUFsN0QsS0FBQThFLGlCQUVBZzJELEdBQUFXLGdCQUFB
UCxHQUFBLEVBQ0EsUUFBQXA2RCxLQUFBbzZELEdBQ0FBLEVBQUExN0QsZUFBQXNCLElBQ0F3RSxF
QUFBLE1BR0EsSUFBQXdsQixJQUFBMGlELEVBQUF0TyxHQUNBd08sR0FBQTF0RSxLQUFBOHFCLElB
VUFtd0MsZUFBQSxTQUFBNlMsRUFBQS9rRSxFQUFBMkIsR0FFQTFLLEtBQUErdEUsZ0JBQUFELEVB
QUEva0UsRUFBQTJCLElBU0FxakUsZ0JBQUEsU0FBQUQsRUFBQS9rRSxFQUFBMkIsR0FDQSxHQUFB
d3dELEdBQUFsN0QsS0FBQThFLGtCQUNBdTJELEtBQ0FELEtBQ0FELEVBQUFuN0QsS0FBQTZ0RSww
QkFBQTNTLEVBQUE0UyxFQUFBMVMsRUFBQUMsRUFBQXR5RCxFQUFBMkIsRUFDQSxJQUFBeXdELEdB
QUFELEVBQUEsQ0FHQSxHQUNBcDZELEdBREFncUIsRUFBQSxLQUlBa2pELEVBQUEsRUFDQWxvRCxF
QUFBLEVBRUFtb0QsRUFBQSxFQUNBQyxFQUFBLElBQ0EsS0FBQXB0RSxJQUFBcTZELEdBQ0EsR0FB
QUEsRUFBQTM3RCxlQUFBc0IsR0FBQSxDQUdBLEdBQUF3NkQsR0FBQUosS0FBQXA2RCxHQUNBazZD
LEVBQUFtZ0IsRUFBQXI2RCxFQUNBdzZELEtBQUF0Z0IsR0FDQWx3QixFQUFBMWdCLEVBQUEwZ0Is
RUFBQTlxQixLQUFBOHBCLFVBQUF3eEMsRUFBQTRTLEVBQUFGLEVBQUFsb0QsSUFDQUEsRUFBQTNm
LEtBQUE0d0QsSUFBQXVFLEVBQUF0ekIsWUFBQWxpQixHQUNBdzFDLEVBQUF0ekIsWUFBQWdtQyxJ
QUVBMVMsSUFFQXgxQyxFQUFBM2YsS0FBQTR3RCxJQUFBdUUsRUFBQXR6QixZQUFBbGlCLElBSUFn
RixFQUFBMWdCLEVBQUEwZ0IsRUFBQTlxQixLQUFBbXVFLG1CQUFBbnpCLEVBQUFvZ0IsRUFBQTZT
LEdBQUFDLEVBQUFGLEVBQUFqbEUsRUFBQTJCLElBQ0F1akUsS0FFQUQsSUFDQUUsRUFBQWxrRSxF
QUFBNEosWUFBQW9uQyxHQUdBLElBQUFsNkMsSUFBQXU2RCxHQUNBQSxFQUFBNzdELGVBQUFzQixL
QUNBZ3FCLEVBQUExZ0IsRUFBQTBnQixFQUFBOXFCLEtBQUFvdUUsY0FBQWxULEVBQUFwNkQsR0FB
QXU2RCxFQUFBdjZELEtBR0FncUIsSUFDQTRpRCxFQUFBMXRFLEtBQUE4cUIsR0FFQTlxQixLQUFB
OEUsa0JBQUFxMkQsSUFjQU0sZ0JBQUEsU0FBQTNuRCxHQUNBLEdBQUE0bkQsR0FBQTE3RCxLQUFB
OEUsaUJBQ0FnMkQsR0FBQVcsZ0JBQUFDLEVBQUE1bkQsR0FDQTlULEtBQUE4RSxrQkFBQSxNQVdB
Z2xCLFVBQUEsU0FBQWlZLEVBQUE3VyxFQUFBa2lELEVBQUF0bkQsR0FJQSxHQUFBaWMsRUFBQWlH
LFlBQUFsaUIsRUFDQSxNQUFBd25ELEdBQUF2ckMsRUFBQTdXLEVBQUFraUQsSUFXQWlCLFlBQUEs
U0FBQXRzQyxFQUFBN1csRUFBQXc0QyxHQUNBLE1BQUF5SixHQUFBekosRUFBQXg0QyxFQUFBNlcs
RUFBQWlHLGNBU0FyaEIsWUFBQSxTQUFBb2IsRUFBQXQrQixHQUNBLE1BQUE4cEUsR0FBQXhyQyxF
QUFBdCtCLElBY0EwcUUsbUJBQUEsU0FBQXBzQyxFQUFBMmhDLEVBQUF4NEMsRUFBQXJGLEVBQUE5
YyxFQUFBMkIsR0FFQSxNQURBcTNCLEdBQUFpRyxZQUFBbmlCLEVBQ0E3bEIsS0FBQXF1RSxZQUFB
dHNDLEVBQUE3VyxFQUFBdzRDLElBV0EwSyxjQUFBLFNBQUFyc0MsRUFBQXQrQixHQUNBLEdBQUF1
bkIsR0FBQWhyQixLQUFBMm1CLFlBQUFvYixFQUFBdCtCLEVBRUEsT0FEQXMrQixHQUFBaUcsWUFB
QSxLQUNBaGQsS0FLQWxzQixHQUFBRCxRQUFBc2pFLEcxSjJra0JNLFNBQVNyakUsRUFBUUQsRUFB
U0gsRzJKNS9rQmhDLFlBV0EsU0FBQTR2RSxHQUFBOTJELEdBQ0EsU0FBQUEsR0FBQSxrQkFBQUEs
R0FBQThuRCxXQUFBLGtCQUFBOW5ELEdBQUFnb0QsV0FWQSxHQUFBbDZELEdBQUE1RyxFQUFBLEdB
MkNBNnZFLEdBekNBN3ZFLEVBQUEsSUFtREE4dkUsb0JBQUEsU0FBQXhxRSxFQUFBMFAsRUFBQTZD
LEdBQ0ErM0QsRUFBQS8zRCxHQUFBLE9BQUFqUixFQUFBLE9BQ0FpUixFQUFBK29ELFVBQUE1ckQs
RUFBQTFQLElBWUF5cUUseUJBQUEsU0FBQXpxRSxFQUFBMFAsRUFBQTZDLEdBQ0ErM0QsRUFBQS8z
RCxHQUFBLE9BQUFqUixFQUFBLE1BQ0EsSUFBQW9wRSxHQUFBbjRELEVBQUFsTSxtQkFHQXFrRSxN
QUFBcDJCLEtBQUE1a0MsS0FBQTFQLEVBQUFxRyxxQkFDQWtNLEVBQUFpcEQsVUFBQTlyRCxLQUtB
NVUsR0FBQUQsUUFBQTB2RSxHM0o2Z2xCTSxTQUFTenZFLEVBQVFELEc0SjdsbEJ2QixZQUVBLElB
QUEwd0IsR0FBQSw4Q0FFQXp3QixHQUFBRCxRQUFBMHdCLEc1SjhtbEJNLFNBQVN6d0IsRUFBUUQs
RUFBU0gsRzZKbm5sQmhDLFlBcUdBLFNBQUFxSixHQUFBdzZCLEdBQ0F2aUMsS0FBQWtJLDBCQU1B
bEksS0FBQXNrRSxzQkFBQSxFQUNBdGtFLEtBQUEydUUsZ0JBQUF0bUUsRUFBQUMsVUFBQSxNQUNB
dEksS0FBQXVpQyxtQkE1R0EsR0FBQTEzQixHQUFBbk0sRUFBQSxHQUVBMkosRUFBQTNKLEVBQUEs
SUFDQW9NLEVBQUFwTSxFQUFBLElBQ0EraUIsRUFBQS9pQixFQUFBLElBQ0F5Z0MsRUFBQXpnQyxF
QUFBLElBRUFxTSxHQURBck0sRUFBQSxHQUNBQSxFQUFBLEtBQ0E2eUIsRUFBQTd5QixFQUFBLElB
TUFrd0UsR0FJQTNqRSxXQUFBazBCLEVBQUFJLHdCQUlBcjBCLE1BQUFpMEIsRUFBQVEsa0JBUUFr
dkMsR0FLQTVqRSxXQUFBLFdBQ0EsR0FBQTZqRSxHQUFBcnRELEVBQUFPLFdBRUEsT0FEQVAsR0FB
QUssWUFBQSxHQUNBZ3RELEdBUUE1akUsTUFBQSxTQUFBNmpFLEdBQ0F0dEQsRUFBQUssV0FBQWl0
RCxLQVFBQyxHQUlBL2pFLFdBQUEsV0FDQWpMLEtBQUEydUUsZ0JBQUFyakUsU0FNQUosTUFBQSxX
QUNBbEwsS0FBQTJ1RSxnQkFBQXBqRSxjQVNBQyxHQUFBb2pFLEVBQUFDLEVBQUFHLEdBbUNBekws
R0FRQTkzRCx1QkFBQSxXQUNBLE1BQUFELElBTUFtSSxtQkFBQSxXQUNBLE1BQUEzVCxNQUFBMnVF
LGlCQU1BNVIsZUFBQSxXQUNBLE1BQUF4ckMsSUFPQTJKLFdBQUEsV0FFQSxNQUFBbDdCLE1BQUEy
dUUsZ0JBQUF6ekMsY0FHQUMsU0FBQSxTQUFBRCxHQUNBbDdCLEtBQUEydUUsZ0JBQUF4ekMsU0FB
QUQsSUFPQXh2QixXQUFBLFdBQ0FyRCxFQUFBc0QsUUFBQTNMLEtBQUEydUUsaUJBQ0EzdUUsS0FB
QTJ1RSxnQkFBQSxNQUlBOWpFLEdBQUE5QyxFQUFBeEksVUFBQXdMLEVBQUF3NEQsR0FFQXo0RCxF
QUFBaUIsYUFBQWhFLEdBRUFqSixFQUFBRCxRQUFBa0osRzdKbW9sQk0sU0FBU2pKLEVBQVFELEVB
QVNILEc4Snh5bEJoQyxZQU1BLFNBQUE0Z0UsR0FBQTVyRCxFQUFBMVAsRUFBQXVTLEdBQ0Esa0JB
QUE3QyxHQUNBQSxFQUFBMVAsRUFBQXFHLHFCQUdBa2tFLEVBQUFDLG9CQUFBeHFFLEVBQUEwUCxF
QUFBNkMsR0FJQSxRQUFBaXBELEdBQUE5ckQsRUFBQTFQLEVBQUF1UyxHQUNBLGtCQUFBN0MsR0FD
QUEsRUFBQSxNQUdBNjZELEVBQUFFLHlCQUFBenFFLEVBQUEwUCxFQUFBNkMsR0FsQkEsR0FBQWc0
RCxHQUFBN3ZFLEVBQUEsS0FFQXlVLElBb0JBQSxHQUFBRCxXQUFBLFNBQUEwbkIsRUFBQW5rQixH
QUNBLFVBQUFBLEdBQUEsZ0JBQUFBLEdBQUEsQ0FHQSxHQUFBL0MsR0FBQStDLEVBQUEvQyxHQUNB
LE9BQUFBLEdBQ0E0ckQsRUFBQTVyRCxFQUFBa25CLEVBQUFua0IsRUFBQUUsVUFJQXhELEVBQUFr
QixpQkFBQSxTQUFBSCxFQUFBRCxHQWFBLEdBQUFnN0QsR0FBQSxLQUNBQyxFQUFBLElBQ0EsUUFB
QWg3RCxHQUFBLGdCQUFBQSxLQUNBKzZELEVBQUEvNkQsRUFBQVIsSUFDQXc3RCxFQUFBaDdELEVB
QUF5QyxPQUdBLElBQUF3NEQsR0FBQSxLQUNBQyxFQUFBLElBTUEsT0FMQSxRQUFBbjdELEdBQUEs
Z0JBQUFBLEtBQ0FrN0QsRUFBQWw3RCxFQUFBUCxJQUNBMDdELEVBQUFuN0QsRUFBQTBDLFFBR0Fz
NEQsSUFBQUUsR0FFQSxnQkFBQUEsSUFBQUMsSUFBQUYsR0FHQS83RCxFQUFBWSxXQUFBLFNBQUE2
bUIsRUFBQW5rQixHQUNBLFVBQUFBLEdBQUEsZ0JBQUFBLEdBQUEsQ0FHQSxHQUFBL0MsR0FBQStD
LEVBQUEvQyxHQUNBLE9BQUFBLEdBQ0E4ckQsRUFBQTlyRCxFQUFBa25CLEVBQUFua0IsRUFBQUUs
VUFJQTdYLEVBQUFELFFBQUFzVSxHOUp5emxCTSxTQUFTclUsRUFBUUQsRUFBU0gsRytKdDRsQmhD
LFlBK0JBLFNBQUE4aEUsR0FBQThELEdBQ0F0a0UsS0FBQWtJLDBCQUNBbEksS0FBQXNrRSx1QkFD
QXRrRSxLQUFBdWlDLGtCQUFBLEVBQ0F2aUMsS0FBQTg4RCxZQUFBLEdBQUF1UyxHQUFBcnZFLE1B
akNBLEdBQUE2SyxHQUFBbk0sRUFBQSxHQUVBb00sRUFBQXBNLEVBQUEsSUFDQXFNLEVBQUFyTSxF
QUFBLElBRUEyd0UsR0FEQTN3RSxFQUFBLEdBQ0FBLEVBQUEsTUFPQThNLEtBU0E4akUsR0FDQWxs
RSxRQUFBLGNBY0FtNUQsR0FPQTkzRCx1QkFBQSxXQUNBLE1BQUFELElBTUFtSSxtQkFBQSxXQUNB
LE1BQUEyN0QsSUFNQXZTLGVBQUEsV0FDQSxNQUFBLzhELE1BQUE4OEQsYUFPQXB4RCxXQUFBLGFB
RUF3dkIsV0FBQSxhQUVBQyxTQUFBLGFBR0F0d0IsR0FBQTIxRCxFQUFBamhFLFVBQUF3TCxFQUFB
dzRELEdBRUF6NEQsRUFBQWlCLGFBQUF5MEQsR0FFQTFoRSxFQUFBRCxRQUFBMmhFLEcvSnM1bEJN
LFNBQVMxaEUsRUFBUUQsRUFBU0gsR2dLbitsQmhDLFlBRUEsU0FBQWk4QixHQUFBQyxFQUFBQyxH
QUFpRCxLQUFBRCxZQUFBQyxJQUEwQyxTQUFBajVCLFdBQUEscUNBTTNGLFFBQUFpN0MsR0FBQXhy
QixFQUFBQyxJQUpBLEdBQUFDLEdBQUE3eUIsRUFBQSxJQW1CQTJ3RSxHQWpCQTN3RSxFQUFBLEdB
aUJBLFdBQ0EsUUFBQTJ3RSxHQUFBdG1FLEdBQ0E0eEIsRUFBQTM2QixLQUFBcXZFLEdBRUFydkUs
S0FBQStJLGNBZ0dBLE1BcEZBc21FLEdBQUE5dkUsVUFBQWl5QixVQUFBLFNBQUFILEdBQ0EsVUFh
QWcrQyxFQUFBOXZFLFVBQUFreUIsZ0JBQUEsU0FBQUosRUFBQTVvQixFQUFBNm9CLEdBQ0F0eEIs
S0FBQStJLFlBQUErYixtQkFDQXlNLEVBQUFFLGdCQUFBSixFQUFBNW9CLEVBQUE2b0IsSUFtQkEr
OUMsRUFBQTl2RSxVQUFBcXlCLG1CQUFBLFNBQUFQLEdBQ0FyeEIsS0FBQStJLFlBQUErYixrQkFD
QXlNLEVBQUFLLG1CQUFBUCxHQUVBd3JCLEVBQUF4ckIsRUFBQSxnQkFpQkFnK0MsRUFBQTl2RSxV
QUFBdXlCLG9CQUFBLFNBQUFULEVBQUFVLEdBQ0EveEIsS0FBQStJLFlBQUErYixrQkFDQXlNLEVB
QUFPLG9CQUFBVCxFQUFBVSxHQUVBOHFCLEVBQUF4ckIsRUFBQSxpQkFnQkFnK0MsRUFBQTl2RSxV
QUFBMnlCLGdCQUFBLFNBQUFiLEVBQUFjLEdBQ0FueUIsS0FBQStJLFlBQUErYixrQkFDQXlNLEVB
QUFXLGdCQUFBYixFQUFBYyxHQUVBMHFCLEVBQUF4ckIsRUFBQSxhQUlBZytDLEtBR0F2d0UsR0FB
QUQsUUFBQXd3RSxHaEtvL2xCTSxTQUFTdndFLEVBQVFELEdpS25ubUJ2QixZQUVBQyxHQUFBRCxR
QUFBLFVqS21vbUJNLFNBQVNDLEVBQVFELEdrS3JvbUJ2QixZQUVBLElBQUEwd0UsSUFDQUMsTUFB
QSwrQkFDQUMsSUFBQSx3Q0FvQkFDLEdBQ0FDLGFBQUEsZ0JBQ0FDLFdBQUEsRUFDQUMsU0FBQSxF
QUNBQyxrQkFBQSxxQkFDQUMsYUFBQSxlQUNBQyxXQUFBLEVBQ0FDLFVBQUEsRUFDQUMsV0FBQSxj
QUNBQyxPQUFBLEVBQ0EvOUQsY0FBQSxnQkFDQWcrRCxjQUFBLGdCQUNBQyxZQUFBLGNBQ0FDLFFB
QUEsRUFDQUMsY0FBQSxnQkFDQUMsWUFBQSxjQUNBQyxjQUFBLGlCQUNBQyxLQUFBLEVBQ0FDLE1B
QUEsRUFDQUMsS0FBQSxFQUNBQyxHQUFBLEVBQ0FDLFNBQUEsV0FDQUMsVUFBQSxhQUNBQyxLQUFB
LEVBQ0FDLFNBQUEsWUFDQUMsU0FBQSxZQUNBQyxjQUFBLGdCQUNBQyxtQkFBQSxzQkFDQUMsMEJB
QUEsOEJBQ0FDLGFBQUEsZ0JBQ0FDLGVBQUEsa0JBQ0FDLGtCQUFBLG9CQUNBQyxpQkFBQSxtQkFD
QUMsT0FBQSxFQUNBQyxHQUFBLEVBQ0FDLEdBQUEsRUFDQXZ4RSxFQUFBLEVBQ0F3eEUsV0FBQSxF
QUNBQyxRQUFBLEVBQ0FDLGdCQUFBLGtCQUNBQyxVQUFBLEVBQ0FDLFFBQUEsRUFDQUMsUUFBQSxF
QUNBQyxpQkFBQSxvQkFDQUMsSUFBQSxFQUNBQyxHQUFBLEVBQ0FDLEdBQUEsRUFDQUMsU0FBQSxX
QUNBQyxVQUFBLEVBQ0FDLGlCQUFBLG9CQUNBcHlDLElBQUEsRUFDQXF5QyxTQUFBLEVBQ0FDLDBC
QUFBLDRCQUNBQyxLQUFBLEVBQ0FsN0MsWUFBQSxlQUNBbTdDLFNBQUEsWUFDQUMsT0FBQSxFQUNB
QyxVQUFBLFlBQ0FDLFlBQUEsY0FDQUMsV0FBQSxjQUNBdDdDLGFBQUEsZ0JBQ0F1N0MsVUFBQSxF
QUNBNzRDLFdBQUEsY0FDQUQsU0FBQSxZQUNBKzRDLGVBQUEsbUJBQ0FDLFlBQUEsZUFDQWw1QyxV
QUFBLGFBQ0FDLFlBQUEsZUFDQW5ELFdBQUEsY0FDQTUyQixPQUFBLEVBQ0ErQyxLQUFBLEVBQ0Fr
d0UsR0FBQSxFQUNBQyxHQUFBLEVBQ0FDLEdBQUEsRUFDQUMsR0FBQSxFQUNBQyxVQUFBLGFBQ0FD
LDJCQUFBLCtCQUNBQyx5QkFBQSw2QkFDQUMsU0FBQSxXQUNBQyxrQkFBQSxvQkFDQUMsY0FBQSxn
QkFDQUMsUUFBQSxFQUNBQyxVQUFBLGNBQ0FDLGFBQUEsaUJBQ0FDLFlBQUEsRUFDQUMsZUFBQSxr
QkFDQUMsR0FBQSxFQUNBQyxJQUFBLEVBQ0FDLFVBQUEsRUFDQXZwRCxFQUFBLEVBQ0F3cEQsR0FB
QSxFQUNBQyxHQUFBLEVBQ0FDLEdBQUEsRUFDQUMsR0FBQSxFQUNBQyxhQUFBLGVBQ0FDLGlCQUFB
LG1CQUNBQyxRQUFBLEVBQ0FDLFVBQUEsWUFDQUMsV0FBQSxhQUNBQyxTQUFBLFdBQ0FDLGFBQUEs
ZUFDQUMsY0FBQSxpQkFDQUMsY0FBQSxpQkFDQUMsa0JBQUEsb0JBQ0FDLE1BQUEsRUFDQUMsVUFB
QSxhQUNBQyxVQUFBLGFBQ0FDLFlBQUEsZUFDQUMsYUFBQSxlQUNBQyxZQUFBLGNBQ0FDLFlBQUEs
Y0FDQUMsS0FBQSxFQUNBQyxpQkFBQSxtQkFDQUMsVUFBQSxZQUNBQyxhQUFBLEVBQ0FDLEtBQUEs
RUFDQUMsV0FBQSxhQUNBMU0sT0FBQSxFQUNBcHlDLFFBQUEsRUFDQSsrQyxTQUFBLEVBQ0E5K0Ms
TUFBQSxFQUNBKytDLE9BQUEsRUFDQUMsWUFBQSxFQUNBQyxPQUFBLEVBQ0FDLFNBQUEsRUFDQUMs
aUJBQUEsb0JBQ0FDLGtCQUFBLHFCQUNBQyxXQUFBLGNBQ0FDLFFBQUEsV0FDQUMsV0FBQSxhQUNB
QyxvQkFBQSxzQkFDQUMsaUJBQUEsbUJBQ0FDLGFBQUEsZUFDQUMsY0FBQSxpQkFDQUMsT0FBQSxF
QUNBQyxVQUFBLFlBQ0FDLFVBQUEsWUFDQUMsVUFBQSxZQUNBQyxjQUFBLGdCQUNBQyxvQkFBQSxz
QkFDQUMsZUFBQSxpQkFDQUMsRUFBQSxFQUNBQyxPQUFBLEVBQ0FDLEtBQUEsT0FDQUMsS0FBQSxP
QUNBQyxnQkFBQSxtQkFDQUMsWUFBQSxjQUNBQyxVQUFBLFlBQ0FDLG1CQUFBLHFCQUNBQyxpQkFB
QSxtQkFDQUMsUUFBQSxFQUNBeHhCLE9BQUEsRUFDQXl4QixPQUFBLEVBQ0FDLEdBQUEsRUFDQUMs
R0FBQSxFQUNBQyxNQUFBLEVBQ0FDLEtBQUEsRUFDQUMsZUFBQSxrQkFDQUMsTUFBQSxFQUNBQyxR
QUFBLEVBQ0FDLGlCQUFBLG1CQUNBQyxpQkFBQSxtQkFDQUMsTUFBQSxFQUNBQyxhQUFBLGVBQ0Ev
USxZQUFBLGNBQ0FnUixhQUFBLGVBQ0FDLE1BQUEsRUFDQUMsTUFBQSxFQUNBQyxZQUFBLGNBQ0FD
LFVBQUEsYUFDQXJoRCxZQUFBLGVBQ0FzaEQsc0JBQUEseUJBQ0FDLHVCQUFBLDBCQUNBNXpELE9B
QUEsRUFDQTZ6RCxPQUFBLEVBQ0F2aEQsZ0JBQUEsbUJBQ0FDLGlCQUFBLG9CQUNBdWhELGNBQUEs
aUJBQ0FDLGVBQUEsa0JBQ0F2aEQsaUJBQUEsb0JBQ0FDLGNBQUEsaUJBQ0FDLFlBQUEsZUFDQXNo
RCxhQUFBLGVBQ0FDLGVBQUEsaUJBQ0FDLFlBQUEsY0FDQUMsUUFBQSxVQUNBQyxRQUFBLFVBQ0FD
LFdBQUEsY0FDQUMsZUFBQSxrQkFDQUMsY0FBQSxpQkFDQUMsV0FBQSxhQUNBMTJFLEdBQUEsRUFD
QXFqRCxVQUFBLEVBQ0FzekIsR0FBQSxFQUNBQyxHQUFBLEVBQ0FDLGtCQUFBLHFCQUNBQyxtQkFB
QSxzQkFDQUMsUUFBQSxFQUNBQyxZQUFBLGVBQ0FDLGFBQUEsZ0JBQ0FDLFdBQUEsZUFDQUMsWUFB
QSxlQUNBQyxTQUFBLFlBQ0FDLGFBQUEsZ0JBQ0FDLGNBQUEsaUJBQ0E5ekIsT0FBQSxFQUNBK3pC
LGFBQUEsZ0JBQ0E5a0UsUUFBQSxFQUNBK2tFLFNBQUEsYUFDQUMsWUFBQSxnQkFDQUMsWUFBQSxn
QkFDQUMsUUFBQSxVQUNBQyxXQUFBLGFBQ0FDLFdBQUEsRUFDQUMsT0FBQSxFQUNBQyxZQUFBLGVB
Q0FDLFlBQUEsZUFDQTV5RCxFQUFBLEVBQ0E2eUQsUUFBQSxXQUNBQyxHQUFBLEVBQ0FDLEdBQUEs
RUFDQUMsaUJBQUEsbUJBQ0FDLGFBQUEsZ0JBQ0FDLGFBQUEsZ0JBQ0FDLFVBQUEsYUFDQUMsVUFB
QSxhQUNBQyxVQUFBLGFBQ0FDLFdBQUEsY0FDQUMsVUFBQSxhQUNBQyxRQUFBLFdBQ0FDLE1BQUEs
RUFDQUMsV0FBQSxjQUNBQyxRQUFBLFdBQ0FDLFNBQUEsWUFDQTN6RCxFQUFBLEVBQ0E0ekQsR0FB
QSxFQUNBQyxHQUFBLEVBQ0FDLGlCQUFBLG1CQUNBQyxFQUFBLEVBQ0FDLFdBQUEsY0FHQTVRLEdB
Q0FyNkQsY0FDQUMsd0JBQ0FncUUsYUFBQW5NLEVBQUFDLE1BQ0FtTSxhQUFBcE0sRUFBQUMsTUFD
QW9NLFVBQUFyTSxFQUFBQyxNQUNBcU0sVUFBQXRNLEVBQUFDLE1BQ0FzTSxVQUFBdk0sRUFBQUMs
TUFDQXVNLFdBQUF4TSxFQUFBQyxNQUNBd00sVUFBQXpNLEVBQUFDLE1BQ0F5TSxRQUFBMU0sRUFB
QUUsSUFDQTJNLFFBQUE3TSxFQUFBRSxJQUNBNE0sU0FBQTlNLEVBQUFFLEtBRUE5OUQscUJBR0Fy
UyxRQUFBc0QsS0FBQThzRSxHQUFBaHRFLFFBQUEsU0FBQWEsR0FDQXVvRSxFQUFBcjZELFdBQUFs
TyxHQUFBLEVBQ0Ftc0UsRUFBQW5zRSxLQUNBdW9FLEVBQUFuNkQsa0JBQUFwTyxHQUFBbXNFLEVB
QUFuc0UsTUFJQXpFLEVBQUFELFFBQUFpdEUsR2xLcXBtQk0sU0FBU2h0RSxFQUFRRCxFQUFTSCxH
bUt2N21CaEMsWUEwQ0EsU0FBQWdoQyxHQUFBajhCLEdBQ0EscUJBQUFBLElBQUEwN0IsRUFBQUMs
eUJBQUEzN0IsR0FDQSxPQUNBMDhCLE1BQUExOEIsRUFBQTI4QixlQUNBQyxJQUFBNThCLEVBQUE2
OEIsYUFFRyxJQUFBOTVCLE9BQUFrNUIsYUFBQSxDQUNILEdBQUFRLEdBQUExNUIsT0FBQWs1Qixj
QUNBLFFBQ0F5bkMsV0FBQWpuQyxFQUFBaW5DLFdBQ0FDLGFBQUFsbkMsRUFBQWtuQyxhQUNBdnlD
LFVBQUFxTCxFQUFBckwsVUFDQXd5QyxZQUFBbm5DLEVBQUFtbkMsYUFFRyxHQUFBNWdFLFNBQUF5
NUIsVUFBQSxDQUNILEdBQUFLLEdBQUE5NUIsU0FBQXk1QixVQUFBTSxhQUNBLFFBQ0FDLGNBQUFG
LEVBQUFFLGdCQUNBdHhCLEtBQUFveEIsRUFBQXB4QixLQUNBd3RFLElBQUFwOEMsRUFBQXE4QyxZ
QUNBQyxLQUFBdDhDLEVBQUF1OEMsZUFXQSxRQUFBQyxHQUFBcndFLEVBQUFDLEdBS0EsR0FBQXF3
RSxHQUFBLE1BQUFob0QsT0FBQUQsSUFDQSxXQUlBLElBQUFrb0QsR0FBQXY5QyxFQUFBMUssRUFD
QSxLQUFBa29ELElBQUF2MEQsRUFBQXUwRCxFQUFBRCxHQUFBLENBQ0FDLEVBQUFELENBRUEsSUFB
QS9wRCxHQUFBM21CLEVBQUFqRSxVQUFBdWpCLEVBQUFvVixPQUFBMHZCLEVBQUFqa0QsRUFBQUMs
RUFPQSxPQUxBdW1CLEdBQUF2cEIsS0FBQSxTQUNBdXBCLEVBQUFqd0IsT0FBQSt4QixFQUVBclos
RUFBQVAsNkJBQUE4WCxHQUVBQSxFQUdBLFlBL0ZBLEdBQUF2WCxHQUFBamQsRUFBQSxJQUNBaUks
RUFBQWpJLEVBQUEsR0FDQTRILEVBQUE1SCxFQUFBLEdBQ0F5Z0MsRUFBQXpnQyxFQUFBLElBQ0E2
TixFQUFBN04sRUFBQSxJQUVBcTJCLEVBQUFyMkIsRUFBQSxJQUNBMnBDLEVBQUEzcEMsRUFBQSxJ
QUNBaXFCLEVBQUFqcUIsRUFBQSxJQUVBeStFLEVBQUF4MkUsRUFBQUosV0FBQSxnQkFBQUUsb0JB
QUE0SixjQUFBLEdBRUF3YixHQUNBb1YsUUFDQTFtQix5QkFDQTIwQyxRQUFBLFdBQ0FDLFNBQUEs
bUJBRUEvc0MsY0FBQSxrSEFJQTRTLEVBQUEsS0FDQTI3QixFQUFBLEtBQ0F1c0IsRUFBQSxLQUNB
RixHQUFBLEVBSUFJLEdBQUEsRUFtRkF4UixHQUNBLy9DLGFBRUFwUyxjQUFBLFNBQUFDLEVBQUFq
TixFQUFBQyxFQUFBQyxHQUNBLElBQUF5d0UsRUFDQSxXQUdBLElBQUFockIsR0FBQTNsRCxFQUFB
bkcsRUFBQVIsb0JBQUEyRyxHQUFBakcsTUFFQSxRQUFBa1QsR0FFQSxnQkFDQTJ1QixFQUFBK3BC
LElBQUEsU0FBQUEsRUFBQTl5QixtQkFDQXRLLEVBQUFvOUIsRUFDQXpCLEVBQUFsa0QsRUFDQXl3
RSxFQUFBLEtBRUEsTUFDQSxlQUNBbG9ELEVBQUEsS0FDQTI3QixFQUFBLEtBQ0F1c0IsRUFBQSxJ
QUNBLE1BR0Esb0JBQ0FGLEdBQUEsQ0FDQSxNQUNBLHNCQUNBLGlCQUVBLE1BREFBLElBQUEsRUFD
QUQsRUFBQXJ3RSxFQUFBQyxFQVVBLDBCQUNBLEdBQUF3d0UsRUFDQSxLQUdBLGtCQUNBLGVBQ0Es
TUFBQUosR0FBQXJ3RSxFQUFBQyxHQUdBLGFBR0F5TSxlQUFBLFNBQUFoVixFQUFBMlUsRUFBQUMs
R0FDQSxhQUFBRCxJQUNBcWtFLEdBQUEsSUFLQXQrRSxHQUFBRCxRQUFBK3NFLEduS3U4bUJNLFNB
QVM5c0UsRUFBUUQsRUFBU0gsR29LdG5uQmhDLFlBNkRBLFNBQUErWixHQUFBclUsR0FHQSxVQUFB
QSxFQUFBc1UsWUFHQSxRQUFBakIsR0FBQUMsR0FDQSxpQkFBQUEsR0FBQSxVQUFBQSxHQUFBLFdB
QUFBLEdBQUEsYUFBQUEsRUFsRUEsR0FBQXBTLEdBQUE1RyxFQUFBLEdBRUE2MUIsRUFBQTcxQixF
QUFBLElBQ0FpZCxFQUFBamQsRUFBQSxJQUNBNEgsRUFBQTVILEVBQUEsR0FDQTIrRSxFQUFBMytF
LEVBQUEsS0FDQTQrRSxFQUFBNStFLEVBQUEsS0FDQTZOLEVBQUE3TixFQUFBLElBQ0E2K0UsRUFB
QTcrRSxFQUFBLEtBQ0E4K0UsRUFBQTkrRSxFQUFBLEtBQ0F5a0IsRUFBQXprQixFQUFBLElBQ0Er
K0UsRUFBQS8rRSxFQUFBLEtBQ0FnL0UsRUFBQWgvRSxFQUFBLEtBQ0FpL0UsRUFBQWovRSxFQUFB
LEtBQ0F3ZCxFQUFBeGQsRUFBQSxJQUNBay9FLEVBQUFsL0UsRUFBQSxLQUVBc0MsRUFBQXRDLEVB
QUEsR0FDQW0wQixFQUFBbjBCLEVBQUEsSUFxQkFtdEIsR0FwQkFudEIsRUFBQSxPQXFCQW0vRSxN
QUNBLHFxQkFBQW43RSxRQUFBLFNBQUFtTCxHQUNBLEdBQUFpd0UsR0FBQWp3RSxFQUFBLEdBQUEy
bkIsY0FBQTNuQixFQUFBbE8sTUFBQSxHQUNBbytFLEVBQUEsS0FBQUQsRUFDQUUsRUFBQSxNQUFB
RixFQUVBbjBFLEdBQ0E0USx5QkFDQTIwQyxRQUFBNnVCLEVBQ0E1dUIsU0FBQTR1QixFQUFBLFdB
RUEzN0QsY0FBQTQ3RCxHQUVBbnlELEdBQUFoZSxHQUFBbEUsRUFDQWswRSxFQUFBRyxHQUFBcjBF
LEdBR0EsSUFBQXMwRSxNQVlBdFMsR0FDQTkvQyxhQUVBcFMsY0FBQSxTQUFBQyxFQUFBak4sRUFB
QUMsRUFBQUMsR0FDQSxHQUFBSCxHQUFBcXhFLEVBQUFua0UsRUFDQSxLQUFBbE4sRUFDQSxXQUVB
LElBQUEweEUsRUFDQSxRQUFBeGtFLEdBQ0EsZUFDQSxpQkFDQSx3QkFDQSx3QkFDQSxpQkFDQSxt
QkFDQSxlQUNBLGVBQ0EsZUFDQSxpQkFDQSxjQUNBLG9CQUNBLHdCQUNBLG1CQUNBLGVBQ0EsY0FD
QSxpQkFDQSxrQkFDQSxvQkFDQSxlQUNBLGdCQUNBLGlCQUNBLGlCQUNBLGdCQUNBLGlCQUNBLG9C
QUNBLHNCQUNBLGlCQUdBd2tFLEVBQUEzeEUsQ0FDQSxNQUNBLG1CQUlBLE9BQUFzbUIsRUFBQW5t
QixHQUNBLFdBR0Esa0JBQ0EsZUFDQXd4RSxFQUFBVixDQUNBLE1BQ0EsZUFDQSxlQUNBVSxFQUFB
WCxDQUNBLE1BQ0EsZ0JBR0EsT0FBQTd3RSxFQUFBcVgsT0FDQSxXQUdBLHNCQUNBLG1CQUNBLG1C
QUNBLGlCQUdBLGtCQUNBLG1CQUNBLHFCQUNBbTZELEVBQUEvNkQsQ0FDQSxNQUNBLGVBQ0EsaUJB
Q0EsbUJBQ0Esa0JBQ0EsbUJBQ0Esa0JBQ0EsbUJBQ0EsY0FDQSs2RCxFQUFBVCxDQUNBLE1BQ0Es
c0JBQ0Esa0JBQ0EsbUJBQ0Esb0JBQ0FTLEVBQUFSLENBQ0EsTUFDQSx1QkFDQSw0QkFDQSx3QkFD
QVEsRUFBQWIsQ0FDQSxNQUNBLHdCQUNBYSxFQUFBUCxDQUNBLE1BQ0EsaUJBQ0FPLEVBQUFoaUUs
Q0FDQSxNQUNBLGdCQUNBZ2lFLEVBQUFOLENBQ0EsTUFDQSxlQUNBLGFBQ0EsZUFDQU0sRUFBQVos
RUFHQVksRUFBQSxPQUFBNTRFLEVBQUEsS0FBQW9VLEVBQ0EsSUFBQTdMLEdBQUFxd0UsRUFBQTUx
RSxVQUFBa0UsRUFBQUMsRUFBQUMsRUFBQUMsRUFFQSxPQURBZ1AsR0FBQVAsNkJBQUF2TixHQUNB
QSxHQUdBdUwsZUFBQSxTQUFBaFYsRUFBQTJVLEVBQUFDLEdBTUEsZUFBQUQsSUFBQXRCLEVBQUFy
VCxFQUFBZzhELE1BQUEsQ0FDQSxHQUFBNzhELEdBQUFrVixFQUFBclUsR0FDQVgsRUFBQTZDLEVB
QUFSLG9CQUFBMUIsRUFDQTY1RSxHQUFBMTZFLEtBQ0EwNkUsRUFBQTE2RSxHQUFBZ3hCLEVBQUFD
LE9BQUEvd0IsRUFBQSxRQUFBekMsTUFLQXVZLG1CQUFBLFNBQUFuVixFQUFBMlUsR0FDQSxlQUFB
QSxJQUFBdEIsRUFBQXJULEVBQUFnOEQsTUFBQSxDQUNBLEdBQUE3OEQsR0FBQWtWLEVBQUFyVSxF
QUNBNjVFLEdBQUExNkUsR0FBQXNZLGVBQ0FvaUUsR0FBQTE2RSxLQUtBekUsR0FBQUQsUUFBQThz
RSxHcEt1b25CTSxTQUFTN3NFLEVBQVFELEVBQVNILEdxSzcxbkJoQyxZQXFCQSxTQUFBMitFLEdB
QUE3d0UsRUFBQTJQLEVBQUF6UCxFQUFBQyxHQUNBLE1BQUFKLEdBQUF0TixLQUFBZSxLQUFBd00s
RUFBQTJQLEVBQUF6UCxFQUFBQyxHQXBCQSxHQUFBSixHQUFBN04sRUFBQSxJQU9BeS9FLEdBQ0FD
LGNBQUEsS0FDQUMsWUFBQSxLQUNBQyxjQUFBLEtBYUEveEUsR0FBQStCLGFBQUErdUUsRUFBQWMs
R0FFQXIvRSxFQUFBRCxRQUFBdytFLEdySzYybkJNLFNBQVN2K0UsRUFBUUQsRUFBU0gsR3NLeDRu
QmhDLFlBb0JBLFNBQUE0K0UsR0FBQTl3RSxFQUFBMlAsRUFBQXpQLEVBQUFDLEdBQ0EsTUFBQUos
R0FBQXROLEtBQUFlLEtBQUF3TSxFQUFBMlAsRUFBQXpQLEVBQUFDLEdBbkJBLEdBQUFKLEdBQUE3
TixFQUFBLElBTUE2L0UsR0FDQUMsY0FBQSxTQUFBM3dFLEdBQ0EsdUJBQUFBLEtBQUEyd0UsY0FB
QWg0RSxPQUFBZzRFLGVBY0FqeUUsR0FBQStCLGFBQUFndkUsRUFBQWlCLEdBRUF6L0UsRUFBQUQs
UUFBQXkrRSxHdEt3NW5CTSxTQUFTeCtFLEVBQVFELEVBQVNILEd1S2w3bkJoQyxZQWtCQSxTQUFB
NHZELEdBQUE5aEQsRUFBQTJQLEVBQUF6UCxFQUFBQyxHQUNBLE1BQUFKLEdBQUF0TixLQUFBZSxL
QUFBd00sRUFBQTJQLEVBQUF6UCxFQUFBQyxHQWpCQSxHQUFBSixHQUFBN04sRUFBQSxJQU1BKy9F
LEdBQ0EvM0QsS0FBQSxLQWFBbmEsR0FBQStCLGFBQUFnZ0QsRUFBQW13QixHQUVBMy9FLEVBQUFE
LFFBQUF5dkQsR3ZLazhuQk0sU0FBU3h2RCxFQUFRRCxFQUFTSCxHd0sxOW5CaEMsWUFrQkEsU0FB
QSsrRSxHQUFBanhFLEVBQUEyUCxFQUFBelAsRUFBQUMsR0FDQSxNQUFBd1csR0FBQWxrQixLQUFB
ZSxLQUFBd00sRUFBQTJQLEVBQUF6UCxFQUFBQyxHQWpCQSxHQUFBd1csR0FBQXprQixFQUFBLElB
TUFnZ0YsR0FDQUMsYUFBQSxLQWFBeDdELEdBQUE3VSxhQUFBbXZFLEVBQUFpQixHQUVBNS9FLEVB
QUFELFFBQUE0K0UsR3hLMCtuQk0sU0FBUzMrRSxFQUFRRCxFQUFTSCxHeUtsZ29CaEMsWUFrQkEs
U0FBQTYrRSxHQUFBL3dFLEVBQUEyUCxFQUFBelAsRUFBQUMsR0FDQSxNQUFBdVAsR0FBQWpkLEtB
QUFlLEtBQUF3TSxFQUFBMlAsRUFBQXpQLEVBQUFDLEdBakJBLEdBQUF1UCxHQUFBeGQsRUFBQSxJ
QU1Ba2dGLEdBQ0EzNkQsY0FBQSxLQWFBL0gsR0FBQTVOLGFBQUFpdkUsRUFBQXFCLEdBRUE5L0Us
RUFBQUQsUUFBQTArRSxHektraG9CTSxTQUFTeitFLEVBQVFELEVBQVNILEcwSzFpb0JoQyxZQW1C
QSxTQUFBc3dELEdBQUF4aUQsRUFBQTJQLEVBQUF6UCxFQUFBQyxHQUNBLE1BQUFKLEdBQUF0TixL
QUFBZSxLQUFBd00sRUFBQTJQLEVBQUF6UCxFQUFBQyxHQWxCQSxHQUFBSixHQUFBN04sRUFBQSxJ
QU9BbWdGLEdBQ0FuNEQsS0FBQSxLQWFBbmEsR0FBQStCLGFBQUEwZ0QsRUFBQTZ2QixHQUVBLy9F
LEVBQUFELFFBQUFtd0QsRzFLMGpvQk0sU0FBU2x3RCxFQUFRRCxFQUFTSCxHMktubG9CaEMsWUFr
RUEsU0FBQTgrRSxHQUFBaHhFLEVBQUEyUCxFQUFBelAsRUFBQUMsR0FDQSxNQUFBdVAsR0FBQWpk
LEtBQUFlLEtBQUF3TSxFQUFBMlAsRUFBQXpQLEVBQUFDLEdBakVBLEdBQUF1UCxHQUFBeGQsRUFB
QSxJQUVBbTBCLEVBQUFuMEIsRUFBQSxJQUNBb2dGLEVBQUFwZ0YsRUFBQSxLQUNBMGtCLEVBQUEx
a0IsRUFBQSxJQU1BcWdGLEdBQ0F4N0UsSUFBQXU3RSxFQUNBaDRCLFNBQUEsS0FDQXBqQyxRQUFB
LEtBQ0FDLFNBQUEsS0FDQUMsT0FBQSxLQUNBQyxRQUFBLEtBQ0FtN0QsT0FBQSxLQUNBQyxPQUFB
LEtBQ0FuN0QsaUJBQUFWLEVBRUEwUCxTQUFBLFNBQUFqbEIsR0FNQSxtQkFBQUEsRUFBQWxFLEtB
Q0FrcEIsRUFBQWhsQixHQUVBLEdBRUFrbEIsUUFBQSxTQUFBbGxCLEdBUUEsa0JBQUFBLEVBQUFs
RSxNQUFBLFVBQUFrRSxFQUFBbEUsS0FDQWtFLEVBQUFrbEIsUUFFQSxHQUVBNmYsTUFBQSxTQUFB
L2tDLEdBR0EsbUJBQUFBLEVBQUFsRSxLQUNBa3BCLEVBQUFobEIsR0FFQSxZQUFBQSxFQUFBbEUs
TUFBQSxVQUFBa0UsRUFBQWxFLEtBQ0FrRSxFQUFBa2xCLFFBRUEsR0FjQTdXLEdBQUE1TixhQUFB
a3ZFLEVBQUF1QixHQUVBamdGLEVBQUFELFFBQUEyK0UsRzNLbW1vQk0sU0FBUzErRSxFQUFRRCxF
QUFTSCxHNEszcW9CaEMsWUEyQkEsU0FBQWcvRSxHQUFBbHhFLEVBQUEyUCxFQUFBelAsRUFBQUMs
R0FDQSxNQUFBdVAsR0FBQWpkLEtBQUFlLEtBQUF3TSxFQUFBMlAsRUFBQXpQLEVBQUFDLEdBMUJB
LEdBQUF1UCxHQUFBeGQsRUFBQSxJQUVBMGtCLEVBQUExa0IsRUFBQSxJQU1Bd2dGLEdBQ0FDLFFB
QUEsS0FDQUMsY0FBQSxLQUNBQyxlQUFBLEtBQ0F6N0QsT0FBQSxLQUNBQyxRQUFBLEtBQ0FILFFB
QUEsS0FDQUMsU0FBQSxLQUNBRyxpQkFBQVYsRUFhQWxILEdBQUE1TixhQUFBb3ZFLEVBQUF3QixH
QUVBcGdGLEVBQUFELFFBQUE2K0UsRzVLMnJvQk0sU0FBUzUrRSxFQUFRRCxFQUFTSCxHNks1dG9C
aEMsWUFxQkEsU0FBQWkvRSxHQUFBbnhFLEVBQUEyUCxFQUFBelAsRUFBQUMsR0FDQSxNQUFBSixH
QUFBdE4sS0FBQWUsS0FBQXdNLEVBQUEyUCxFQUFBelAsRUFBQUMsR0FwQkEsR0FBQUosR0FBQTdO
LEVBQUEsSUFPQTRnRixHQUNBaHRFLGFBQUEsS0FDQStyRSxZQUFBLEtBQ0FDLGNBQUEsS0FhQS94
RSxHQUFBK0IsYUFBQXF2RSxFQUFBMkIsR0FFQXhnRixFQUFBRCxRQUFBOCtFLEc3SzR1b0JNLFNB
QVM3K0UsRUFBUUQsRUFBU0gsRzhLdndvQmhDLFlBaUNBLFNBQUFrL0UsR0FBQXB4RSxFQUFBMlAs
RUFBQXpQLEVBQUFDLEdBQ0EsTUFBQXdXLEdBQUFsa0IsS0FBQWUsS0FBQXdNLEVBQUEyUCxFQUFB
elAsRUFBQUMsR0FoQ0EsR0FBQXdXLEdBQUF6a0IsRUFBQSxJQU1BNmdGLEdBQ0FDLE9BQUEsU0FB
QTN4RSxHQUNBLGdCQUFBQSxLQUFBMnhFLE9BQ0EsZUFBQTN4RSxNQUFBNHhFLFlBQUEsR0FFQUMs
T0FBQSxTQUFBN3hFLEdBQ0EsZ0JBQUFBLEtBQUE2eEUsT0FDQSxlQUFBN3hFLE1BQUE4eEUsWUFD
QSxjQUFBOXhFLE1BQUEreEUsV0FBQSxHQUVBQyxPQUFBLEtBTUFDLFVBQUEsS0FhQTM4RCxHQUFB
N1UsYUFBQXN2RSxFQUFBMkIsR0FFQXpnRixFQUFBRCxRQUFBKytFLEc5S3V4b0JNLFNBQVM5K0Us
RUFBUUQsRytLN3pvQnZCLFlBU0EsU0FBQWd1RSxHQUFBbm1ELEdBTUEsSUFMQSxHQUFBN21CLEdB
QUEsRUFDQUMsRUFBQSxFQUNBVCxFQUFBLEVBQ0EwZ0YsRUFBQXI1RCxFQUFBcGxCLE9BQ0FwQyxF
QUFBNmdGLEtBQ0ExZ0YsRUFBQUgsR0FBQSxDQUVBLElBREEsR0FBQW9ELEdBQUE2RCxLQUFBMjZC
LElBQUF6aEMsRUFBQSxLQUFBSCxHQUNVRyxFQUFBaUQsRUFBT2pELEdBQUEsRUFDakJTLElBQUFE
LEdBQUE2bUIsRUFBQVgsV0FBQTFtQixLQUFBUSxHQUFBNm1CLEVBQUFYLFdBQUExbUIsRUFBQSxL
QUFBUSxHQUFBNm1CLEVBQUFYLFdBQUExbUIsRUFBQSxLQUFBUSxHQUFBNm1CLEVBQUFYLFdBQUEx
bUIsRUFBQSxHQUVBUSxJQUFBbWdGLEVBQ0FsZ0YsR0FBQWtnRixFQUVBLEtBQVEzZ0YsRUFBQTBn
RixFQUFPMWdGLElBQ2ZTLEdBQUFELEdBQUE2bUIsRUFBQVgsV0FBQTFtQixFQUlBLE9BRkFRLElB
QUFtZ0YsRUFDQWxnRixHQUFBa2dGLEVBQ0FuZ0YsRUFBQUMsR0FBQSxHQTFCQSxHQUFBa2dGLEdB
QUEsS0E2QkFsaEYsR0FBQUQsUUFBQWd1RSxHL0s4MG9CTSxTQUFTL3RFLEVBQVFELEVBQVNILEdn
TDkyb0JoQyxZQWtCQSxTQUFBMndELEdBQUF2dUQsRUFBQWdRLEVBQUE5TSxFQUFBaXNELEdBV0Es
R0FBQWd3QixHQUFBLE1BQUFudkUsR0FBQSxpQkFBQUEsSUFBQSxLQUFBQSxDQUNBLElBQUFtdkUs
RUFDQSxRQUdBLElBQUFDLEdBQUF6a0QsTUFBQTNxQixFQUNBLElBQUFtL0MsR0FBQWl3QixHQUFB
LElBQUFwdkUsR0FBQTJrQixFQUFBajJCLGVBQUFzQixJQUFBMjBCLEVBQUEzMEIsR0FDQSxTQUFB
Z1EsQ0FHQSxvQkFBQUEsR0FBQSxDQXVCQUEsSUFBQTZoQyxPQUVBLE1BQUE3aEMsR0FBQSxLQTlE
QSxHQUFBNHBCLEdBQUFoOEIsRUFBQSxJQUdBKzJCLEdBRkEvMkIsRUFBQSxHQUVBZzhCLEVBQUFq
RixpQkE4REEzMkIsR0FBQUQsUUFBQXd3RCxHaEw4M29CTSxTQUFTdndELEVBQVFELEVBQVNILEdp
TGo4b0JoQyxZQW9CQSxTQUFBZ2hFLEdBQUF5Z0IsR0FRQSxTQUFBQSxFQUNBLFdBRUEsUUFBQUEs
RUFBQXg4RSxTQUNBLE1BQUF3OEUsRUFHQSxJQUFBLzdFLEdBQUF3WCxFQUFBRyxJQUFBb2tFLEVB
Q0EsT0FBQS83RSxJQUNBQSxFQUFBNmhDLEVBQUE3aEMsR0FDQUEsRUFBQWtDLEVBQUFSLG9CQUFB
MUIsR0FBQSxXQUdBLGtCQUFBKzdFLEdBQUExOEMsT0FDQW4rQixFQUFBLE1BRUFBLEVBQUEsS0FB
QWhHLE9BQUFzRCxLQUFBdTlFLEtBMUNBLEdBQUE3NkUsR0FBQTVHLEVBQUEsR0FHQTRILEdBREE1
SCxFQUFBLElBQ0FBLEVBQUEsSUFDQWtkLEVBQUFsZCxFQUFBLElBRUF1bkMsRUFBQXZuQyxFQUFB
LEdBQ0FBLEdBQUEsR0FDQUEsRUFBQSxFQXNDQUksR0FBQUQsUUFBQTZnRSxHakxpOW9CTSxTQUFT
NWdFLEVBQVFELEVBQVNILElrTDNncEJoQyxTQUFBMjJDLEdBV0EsWUF1QkEsU0FBQStxQyxHQUFB
NzJDLEVBQUF4SCxFQUFBamhDLEVBQUE4NUQsR0FFQSxHQUFBcnhCLEdBQUEsZ0JBQUFBLEdBQUEs
Q0FDQSxHQUFBaWQsR0FBQWpkLEVBQ0FzeEIsRUFBQW42RCxTQUFBOGxELEVBQUExbEQsRUFTQSs1
RCxJQUFBLE1BQUE5NEIsSUFDQXlrQixFQUFBMWxELEdBQUFpaEMsSUFVQSxRQUFBK2tDLEdBQUFq
aUUsRUFBQSsxRCxHQUNBLFNBQUEvMUQsRUFDQSxNQUFBQSxFQUVBLElBQUEyaEQsS0FTQSxPQUZB
amMsR0FBQTFsQyxFQUFBdTdFLEVBQUE1NUIsR0FFQUEsRUExREEsR0FDQWpjLElBREE3ckMsRUFB
QSxJQUNBQSxFQUFBLElBQ0FBLEdBQUEsRUFJQSxvQkFBQTIyQyxNQUFBSSxNQXVEQTMyQyxFQUFB
RCxRQUFBaW9FLElsTDhncEI4QjduRSxLQUFLSixFQUFTSCxFQUFvQixNQUkxRCxTQUFTSSxFQUFR
RCxFQUFTSCxHbUxsbHBCaEMsWUF1RUEsU0FBQW9nRixHQUFBcHlFLEdBQ0EsR0FBQUEsRUFBQW5K
LElBQUEsQ0FNQSxHQUFBQSxHQUFBODhFLEVBQUEzekUsRUFBQW5KLE1BQUFtSixFQUFBbkosR0FD
QSxxQkFBQUEsRUFDQSxNQUFBQSxHQUtBLGdCQUFBbUosRUFBQS9DLEtBQUEsQ0FDQSxHQUFBbXBC
LEdBQUFELEVBQUFubUIsRUFJQSxhQUFBb21CLEVBQUEsUUFBQTl3QixPQUFBRyxhQUFBMndCLEdB
RUEsa0JBQUFwbUIsRUFBQS9DLE1BQUEsVUFBQStDLEVBQUEvQyxLQUdBMjJFLEVBQUE1ekUsRUFB
QXFtQixVQUFBLGVBRUEsR0EvRkEsR0FBQUYsR0FBQW4wQixFQUFBLElBTUEyaEYsR0FDQUUsSUFB
QSxTQUNBQyxTQUFBLElBQ0FDLEtBQUEsWUFDQUMsR0FBQSxVQUNBQyxNQUFBLGFBQ0FDLEtBQUEs
WUFDQUMsSUFBQSxTQUNBQyxJQUFBLEtBQ0FDLEtBQUEsY0FDQUMsS0FBQSxjQUNBQyxPQUFBLGFB
Q0FDLGdCQUFBLGdCQVFBWixHQUNBYSxFQUFBLFlBQ0FDLEVBQUEsTUFDQUMsR0FBQSxRQUNBQyxH
QUFBLFFBQ0FDLEdBQUEsUUFDQUMsR0FBQSxVQUNBQyxHQUFBLE1BQ0FDLEdBQUEsUUFDQUMsR0FB
QSxXQUNBQyxHQUFBLFNBQ0FDLEdBQUEsSUFDQUMsR0FBQSxTQUNBQyxHQUFBLFdBQ0FDLEdBQUEs
TUFDQUMsR0FBQSxPQUNBQyxHQUFBLFlBQ0FDLEdBQUEsVUFDQUMsR0FBQSxhQUNBQyxHQUFBLFlB
Q0FDLEdBQUEsU0FDQUMsR0FBQSxTQUNBQyxJQUFBLEtBQ0FDLElBQUEsS0FDQUMsSUFBQSxLQUNB
QyxJQUFBLEtBQ0FDLElBQUEsS0FDQUMsSUFBQSxLQUNBQyxJQUFBLEtBQ0FDLElBQUEsS0FDQUMs
SUFBQSxLQUNBQyxJQUFBLE1BQ0FDLElBQUEsTUFDQUMsSUFBQSxNQUNBQyxJQUFBLFVBQ0FDLElB
QUEsYUFDQUMsSUFBQSxPQW9DQXhrRixHQUFBRCxRQUFBaWdGLEduTGttcEJNLFNBQVNoZ0YsRUFB
UUQsR29McnNwQnZCLFlBcUJBLFNBQUFpckMsR0FBQTZkLEdBQ0EsR0FBQTlkLEdBQUE4ZCxJQUFB
QyxHQUFBRCxFQUFBQyxJQUFBRCxFQUFBRSxHQUNBLHNCQUFBaGUsR0FDQSxNQUFBQSxHQXBCQSxH
QUFBK2QsR0FBQSxrQkFBQXp5QixnQkFBQTZVLFNBQ0E2ZCxFQUFBLFlBdUJBL29ELEdBQUFELFFB
QUFpckMsR3BMc3RwQk0sU0FBU2hyQyxFQUFRRCxHcUxudnBCdkIsWUFTQSxTQUFBMGtGLEdBQUE5
L0UsR0FDQSxLQUFBQSxLQUFBdUIsWUFDQXZCLElBQUF1QixVQUVBLE9BQUF2QixHQVVBLFFBQUEr
L0UsR0FBQS8vRSxHQUNBLEtBQUFBLEdBQUEsQ0FDQSxHQUFBQSxFQUFBNEIsWUFDQSxNQUFBNUIs
R0FBQTRCLFdBRUE1QixLQUFBaUMsWUFXQSxRQUFBMmpFLEdBQUFuMEMsRUFBQXEwQyxHQUtBLElB
SkEsR0FBQTlsRSxHQUFBOC9FLEVBQUFydUQsR0FDQXV1RCxFQUFBLEVBQ0FDLEVBQUEsRUFFQWpn
RixHQUFBLENBQ0EsT0FBQUEsRUFBQUUsU0FBQSxDQUdBLEdBRkErL0UsRUFBQUQsRUFBQWhnRixF
QUFBMGxDLFlBQUE3bkMsT0FFQW1pRixHQUFBbGEsR0FBQW1hLEdBQUFuYSxFQUNBLE9BQ0E5bEUs
T0FDQThsRSxTQUFBa2EsRUFJQUEsR0FBQUMsRUFHQWpnRixFQUFBOC9FLEVBQUFDLEVBQUEvL0Us
S0FJQTNFLEVBQUFELFFBQUF3cUUsR3JMbXdwQk0sU0FBU3ZxRSxFQUFRRCxFQUFTSCxHc0xqMHBC
aEMsWUFXQSxTQUFBaWxGLEdBQUFDLEVBQUE5M0QsR0FDQSxHQUFBb00sS0FRQSxPQU5BQSxHQUFB
MHJELEVBQUFsekUsZUFBQW9iLEVBQUFwYixjQUNBd25CLEVBQUEsU0FBQTByRCxHQUFBLFNBQUE5
M0QsRUFDQW9NLEVBQUEsTUFBQTByRCxHQUFBLE1BQUE5M0QsRUFDQW9NLEVBQUEsS0FBQTByRCxH
QUFBLEtBQUE5M0QsRUFDQW9NLEVBQUEsSUFBQTByRCxHQUFBLElBQUE5M0QsRUFBQXBiLGNBRUF3
bkIsRUFtREEsUUFBQTdhLEdBQUF5TyxHQUNBLEdBQUErM0QsRUFBQS8zRCxHQUNBLE1BQUErM0Qs
R0FBQS8zRCxFQUNHLEtBQUFnNEQsRUFBQWg0RCxHQUNILE1BQUFBLEVBR0EsSUFBQWk0RCxHQUFB
RCxFQUFBaDRELEVBRUEsUUFBQTgzRCxLQUFBRyxHQUNBLEdBQUFBLEVBQUF2a0YsZUFBQW9rRixR
QUFBajBCLEdBQ0EsTUFBQWswQixHQUFBLzNELEdBQUFpNEQsRUFBQUgsRUFJQSxVQXBGQSxHQUFB
ajlFLEdBQUFqSSxFQUFBLEdBd0JBb2xGLEdBQ0FFLGFBQUFMLEVBQUEsNEJBQ0FNLG1CQUFBTixF
QUFBLGtDQUNBTyxlQUFBUCxFQUFBLDhCQUNBUSxjQUFBUixFQUFBLCtCQU1BRSxLQUtBbDBCLElB
S0FocEQsR0FBQUosWUFDQW9wRCxFQUFBbHBELFNBQUFDLGNBQUEsT0FBQWlwRCxNQU1BLGtCQUFB
bnBELGdCQUNBczlFLEdBQUFFLGFBQUFJLGdCQUNBTixHQUFBRyxtQkFBQUcsZ0JBQ0FOLEdBQUFJ
LGVBQUFFLFdBSUEsbUJBQUE1OUUsZUFDQXM5RSxHQUFBSyxjQUFBRSxZQTRCQXZsRixFQUFBRCxR
QUFBd2UsR3RMaTFwQk0sU0FBU3ZlLEVBQVFELEVBQVNILEd1TDE2cEJoQyxZQVVBLFNBQUFnOUIs
R0FBQTVxQixHQUNBLFVBQUFtVixFQUFBblYsR0FBQSxJQVRBLEdBQUFtVixHQUFBdm5CLEVBQUEs
R0FZQUksR0FBQUQsUUFBQTY4QixHdkwwN3BCTSxTQUFTNThCLEVBQVFELEVBQVNILEd3THg4cEJo
QyxZQUVBLElBQUF3akMsR0FBQXhqQyxFQUFBLEdBRUFJLEdBQUFELFFBQUFxakMsRUFBQWdDLDRC
eEx3OXBCTSxTQUFTcGxDLEVBQVFELEVBQVNILEd5THQrcEJoQyxZQWlCQSxTQUFBbW9CLEdBQUFD
LEdBQXNDLE1BQUFBLE1BQUFDLFdBQUFELEdBQXVDRSxRQUFBRixHQUU3RSxRQUFBNlQsR0FBQUMs
RUFBQUMsR0FBaUQsS0FBQUQsWUFBQUMsSUFBMEMsU0FBQWo1QixXQUFBLHFDQUUzRixRQUFBNG9D
LEdBQUFsMEIsRUFBQXJYLEdBQWlELElBQUFxWCxFQUFhLFNBQUFtMEIsZ0JBQUEsNERBQXlGLFFB
QUF4ckMsR0FBQSxnQkFBQUEsSUFBQSxrQkFBQUEsR0FBQXFYLEVBQUFyWCxFQUV2SixRQUFBeXJD
LEdBQUFDLEVBQUFDLEdBQTBDLHFCQUFBQSxJQUFBLE9BQUFBLEVBQStELFNBQUFocEMsV0FBQSxp
RUFBQWdwQyxHQUF1R0QsR0FBQXByQyxVQUFBRCxPQUFBNitCLE9BQUF5TSxLQUFBcnJDLFdBQXlF
dU4sYUFBZWdFLE1BQUE2NUIsRUFBQXZELFlBQUEsRUFBQXlELFVBQUEsRUFBQXhELGNBQUEsS0FB
NkV1RCxJQUFBdHJDLE9BQUF3ckMsZUFBQXhyQyxPQUFBd3JDLGVBQUFILEVBQUFDLEdBQUFELEVB
QUFJLFVBQUFILEdBWXJYLFFBQUFnRyxLQUNBLEdBQUEwekMsR0FFQTkzQyxFQUFBbnJDLFVBQUFD
LE9BQUEsR0FBQVosU0FBQVcsVUFBQSxHQUFBQSxVQUFBLFdBQ0FrakYsRUFBQWxqRixVQUFBLEdB
RUF1ckMsRUFBQTIzQyxHQUFBLzNDLEVBQUEsZUFFQXFFLEVBQUEsU0FBQWxELEdBU0EsUUFBQWtE
LEdBQUFyNkIsRUFBQTlMLEdBQ0Fpd0IsRUFBQTM2QixLQUFBNndDLEVBRUEsSUFBQWpELEdBQUFw
RCxFQUFBeHFDLEtBQUEydEMsRUFBQTF1QyxLQUFBZSxLQUFBd1csRUFBQTlMLEdBR0EsT0FEQWtq
QyxHQUFBcEIsR0FBQWgyQixFQUFBNDBCLE1BQ0F3QyxFQU9BLE1BckJBbEQsR0FBQW1HLEVBQUFs
RCxHQUVBa0QsRUFBQXR4QyxVQUFBNHVDLGdCQUFBLFdBQ0EsR0FBQXJDLEVBRUEsT0FBQUEsTUFB
c0JBLEVBQUFVLEdBQUF4c0MsS0FBQXdzQyxHQUFBVixFQUFBYyxHQUFBLEtBQUFkLEdBWXRCK0Us
RUFBQXR4QyxVQUFBa2tDLE9BQUEsV0FDQSxNQUFBaU0sR0FBQXQ2QixTQUFBRyxLQUFBdlYsS0FB
QXdXLE1BQUEzUixXQUdBZ3NDLEdBQ0duQixFQUFBbDZCLFVBZ0JILE9BTkFxN0IsR0FBQTlnQixX
QUNBcWIsTUFBQTJCLEVBQUFDLFdBQUF1RSxXQUNBMXNDLFNBQUF3c0MsRUFBQXJxQixRQUFBdlEs
UUFBQTg2QixZQUVBVixFQUFBM0QsbUJBQUFvM0MsS0FBMERBLEVBQUE5M0MsR0FBQU8sRUFBQUMs
V0FBQXVFLFdBQUEreUMsRUFBQTEzQyxHQUFBRyxFQUFBRSxrQkFBQXEzQyxHQUUxRHp6QyxFQWhG
QWh5QyxFQUFBa29CLFlBQUEsRUFDQWxvQixFQUFBK3hDLGdCQUVBLElBQUFsQixHQUFBaHhDLEVB
QUEsSUFFQTB5QyxFQUFBMXlDLEVBQUEsSUFFQTJ5QyxFQUFBeHFCLEVBQUF1cUIsR0FFQXJFLEVB
QUFydUMsRUFBQSxJQUVBc3BCLEVBQUF0cEIsRUFBQSxHQUVBbW9CLEdBQUFtQixFQXNFQW5wQixH
QUFBbW9CLFFBQUE0cEIsS3pMNCtwQk0sU0FBUzl4QyxFQUFRRCxFQUFTSCxHMExqa3FCaEMsWUFn
Q0EsU0FBQW1vQixHQUFBQyxHQUFzQyxNQUFBQSxNQUFBQyxXQUFBRCxHQUF1Q0UsUUFBQUYsR0FF
N0UsUUFBQWtrQixHQUFBbGtCLEVBQUFsa0IsR0FBOEMsR0FBQUssS0FBaUIsUUFBQTVELEtBQUF5
bkIsR0FBcUJsa0IsRUFBQStvQixRQUFBdHNCLElBQUEsR0FBb0NDLE9BQUFDLFVBQUFDLGVBQUFQ
LEtBQUE2bkIsRUFBQXpuQixLQUE2RDRELEVBQUE1RCxHQUFBeW5CLEVBQUF6bkIsR0FBc0IsT0FB
QTRELEdBbUIzTSxRQUFBd2lCLEdBQUFwZSxFQUFBbTlFLEVBQUExakYsR0FDQSxPQUFBekIsR0FB
QW1sRixFQUFBbGpGLE9BQUEsRUFBb0NqQyxHQUFBLEVBQVFBLElBQUEsQ0FDNUMsR0FBQW1uRCxH
QUFBZytCLEVBQUFubEYsR0FBQWdJLEVBQ0EsSUFBQW0vQyxFQUFBLE1BQUFBLEdBR0EsZ0JBQUF6
WCxFQUFBN1IsR0FDQSxTQUFBdjhCLE9BQUEsK0JBQUEwRyxHQUFBLFFBQUF2RyxFQUFBLHVDQUFB
bzhCLEVBQUFxUSxxQkFBQSxNQUlBLFFBQUFrM0MsR0FBQTVrRixFQUFBQyxHQUNBLE1BQUFELEtB
QUFDLEVBS0EsUUFBQTRrRixLQUNBLEdBQUE1NEMsR0FBQXpxQyxVQUFBQyxPQUFBLEdBQUFaLFNB
QUFXLFVBQUEsR0FBQUEsVUFBQSxNQUNBc2pGLEVBQUE3NEMsRUFBQTg0QyxXQUNBQSxFQUFBbGtG
LFNBQUFpa0YsRUFBQTF6QyxFQUFBanFCLFFBQUEyOUQsRUFDQUUsRUFBQS80QyxFQUFBZzVDLHlC
QUNBQSxFQUFBcGtGLFNBQUFta0YsRUFBQUUsRUFBQS85RCxRQUFBNjlELEVBQ0FHLEVBQUFsNUMs
RUFBQW01Qyw0QkFDQUEsRUFBQXZrRixTQUFBc2tGLEVBQUFFLEVBQUFsK0QsUUFBQWcrRCxFQUNB
RyxFQUFBcjVDLEVBQUFzNUMsb0JBQ0FBLEVBQUExa0YsU0FBQXlrRixFQUFBRSxFQUFBcitELFFB
QUFtK0QsRUFDQUcsRUFBQXg1QyxFQUFBSCxnQkFDQUEsRUFBQWpyQyxTQUFBNGtGLEVBQUFDLEVB
QUF2K0QsUUFBQXMrRCxDQUVBLGlCQUFBRSxFQUFBQyxFQUFBQyxHQUNBLEdBQUF0M0MsR0FBQS9z
QyxVQUFBQyxPQUFBLEdBQUFaLFNBQUFXLFVBQUEsR0FBQUEsVUFBQSxNQUNBc2tGLEVBQUF2M0Ms
RUFBQXczQyxLQUNBQSxFQUFBbGxGLFNBQUFpbEYsS0FDQUUsRUFBQXozQyxFQUFBMDNDLGVBQ0FB
LEVBQUFwbEYsU0FBQW1sRixFQUFBcEIsRUFBQW9CLEVBQ0FFLEVBQUEzM0MsRUFBQTQzQyxpQkFD
QUEsRUFBQXRsRixTQUFBcWxGLEVBQUFFLEVBQUFqL0QsUUFBQSsrRCxFQUNBRyxFQUFBOTNDLEVB
QUErM0MsbUJBQ0FBLEVBQUF6bEYsU0FBQXdsRixFQUFBRCxFQUFBai9ELFFBQUFrL0QsRUFDQUUs
RUFBQWg0QyxFQUFBaTRDLG9CQUNBQSxFQUFBM2xGLFNBQUEwbEYsRUFBQUgsRUFBQWovRCxRQUFB
by9ELEVBQ0FFLEVBQUF0N0MsRUFBQW9ELEdBQUEsd0ZBRUFtNEMsRUFBQTlnRSxFQUFBKy9ELEVB
QUFWLEVBQUEsbUJBQ0EwQixFQUFBL2dFLEVBQUFnZ0UsRUFBQVIsRUFBQSxzQkFDQXdCLEVBQUFo
aEUsRUFBQWlnRSxFQUFBTixFQUFBLGFBRUEsT0FBQVIsR0FBQWo1QyxFQUFBOEIsR0FFQXZCLFdB
QUEsVUFHQUYsZUFBQSxTQUFBbHJDLEdBQ0EsaUJBQUFBLEVBQUEsS0FJQXdyQyx5QkFBQXhQLFFB
QUEwb0QsR0FHQWUsc0JBQ0FDLHlCQUNBQyxpQkFDQWIsT0FDQUUsaUJBQ0FFLG1CQUNBRyxxQkFD
QUUsdUJBRUtDLEtBekhMem5GLEVBQUFrb0IsWUFBQSxDQUVBLElBQUEwbUIsR0FBQW51QyxPQUFB
d0MsUUFBQSxTQUFBbUIsR0FBbUQsT0FBQTVELEdBQUEsRUFBZ0JBLEVBQUFnQyxVQUFBQyxPQUFz
QmpDLElBQUEsQ0FBTyxHQUFBNkQsR0FBQTdCLFVBQUFoQyxFQUEyQixRQUFBa0UsS0FBQUwsR0FB
MEI1RCxPQUFBQyxVQUFBQyxlQUFBUCxLQUFBaUUsRUFBQUssS0FBeUROLEVBQUFNLEdBQUFMLEVB
QUFLLElBQWlDLE1BQUFOLEdBRS9PcEUsR0FBQTZsRixlQUVBLElBQUExekMsR0FBQXR5QyxFQUFB
LElBRUF1eUMsRUFBQXBxQixFQUFBbXFCLEdBRUEwMUMsRUFBQWhvRixFQUFBLEtBRUF1bkYsRUFB
QXAvRCxFQUFBNi9ELEdBRUFDLEVBQUFqb0YsRUFBQSxLQUVBd21GLEVBQUFyK0QsRUFBQTgvRCxH
QUVBQyxFQUFBbG9GLEVBQUEsS0FFQXFtRixFQUFBbCtELEVBQUErL0QsR0FFQUMsRUFBQW5vRixF
QUFBLEtBRUEybUYsRUFBQXgrRCxFQUFBZ2dFLEdBRUFDLEVBQUFwb0YsRUFBQSxLQUVBNm1GLEVB
QUExK0QsRUFBQWlnRSxFQWlHQWpvRixHQUFBbW9CLFFBQUEwOUQsSzFMdWtxQk0sU0FBUzVsRixF
QUFRRCxFQUFTSCxHMkx0c3FCaEMsWUFXQSxTQUFBcW9GLEdBQUF0QixHQUNBLHdCQUFBQSxJQUFB
LEVBQUF1QixFQUFBMTJDLG9CQUFBbTFDLEVBQUEsc0JBQUEva0YsT0FHQSxRQUFBdW1GLEdBQUF4
QixHQUNBLE1BQUFBLEdBRUcva0YsUUFGSCxFQUFBc21GLEVBQUFqM0Msd0JBQUEsU0FBQWhCLEdB
Q0EsT0FBWUEsY0FJWixRQUFBbTRDLEdBQUF6QixHQUNBLE1BQUFBLElBQUEsZ0JBQUFBLElBQUEs
RUFBQXVCLEVBQUFqM0Msd0JBQUEsU0FBQWhCLEdBQ0EsU0FBQW80QyxFQUFBaGdFLG9CQUFBcytE
LEVBQUExMkMsS0FDR3J1QyxPQXRCSDdCLEVBQUFrb0IsWUFBQSxFQUNBbG9CLEVBQUFrb0YsbUNB
Q0Fsb0YsRUFBQW9vRixrQ0FDQXBvRixFQUFBcW9GLGdDQUVBLElBQUFDLEdBQUF6b0YsRUFBQSxJ
QUVBc29GLEVBQUF0b0YsRUFBQSxHQWtCQUcsR0FBQW1vQixTQUFBKy9ELEVBQUFFLEVBQUFDLEkz
TDRzcUJNLFNBQVNwb0YsRUFBUUQsRUFBU0gsRzRMdnVxQmhDLFlBUUEsU0FBQTBvRixHQUFBNUIs
R0FDQSx3QkFBQUEsSUFBQSxFQUFBd0IsRUFBQTEyQyxvQkFBQWsxQyxFQUFBLG1CQUFBOWtGLE9B
R0EsUUFBQTJtRixHQUFBN0IsR0FDQSxNQUFBQSxHQUVHOWtGLFFBRkgsRUFBQXNtRixFQUFBajND
LHdCQUFBLFdBQ0EsV0FaQWx4QyxFQUFBa29CLFlBQUEsRUFDQWxvQixFQUFBdW9GLGdDQUNBdm9G
LEVBQUF3b0YsOEJBRUEsSUFBQUwsR0FBQXRvRixFQUFBLEdBWUFHLEdBQUFtb0IsU0FBQW9nRSxF
QUFBQyxJNUw2dXFCTSxTQUFTdm9GLEVBQVFELEVBQVNILEc2TC92cUJoQyxZQWVBLFNBQUFtb0Is
R0FBQUMsR0FBc0MsTUFBQUEsTUFBQUMsV0FBQUQsR0FBdUNFLFFBQUFGLEdBRTdFLFFBQUF3Z0Us
R0FBQUMsRUFBQUMsRUFBQS8yQyxHQUNBLE1BQUFoRCxNQUFvQmdELEVBQUE4MkMsRUFBQUMsR0FH
cEIsUUFBQUMsR0FBQS9CLEdBQ0EsZ0JBQUEzMkMsRUFBQWpELEdBQ0EsR0FDQTg1QyxJQURBOTVD
LEVBQUEzYSxZQUNBMmEsRUFBQTg1QyxNQUNBUyxFQUFBdjZDLEVBQUF1NkMsb0JBRUFxQixHQUFB
LEVBQ0FDLEVBQUEsTUFFQSxpQkFBQUosRUFBQUMsRUFBQS8yQyxHQUNBLEdBQUFtM0MsR0FBQWxD
LEVBQUE2QixFQUFBQyxFQUFBLzJDLEVBV0EsT0FUQWkzQyxHQUNBOUIsR0FBQVMsRUFBQXVCLEVB
QUFELE9BQUFDLElBRUFGLEdBQUEsRUFDQUMsRUFBQUMsR0FLQUQsSUFLQSxRQUFBRSxHQUFBbkMs
R0FDQSx3QkFBQUEsR0FBQStCLEVBQUEvQixHQUFBaGxGLE9BR0EsUUFBQW9uRixHQUFBcEMsR0FD
QSxNQUFBQSxHQUVHaGxGLE9BRkgsV0FDQSxNQUFBNG1GO0VBbkRBem9GLEVBQUFrb0IsWUFBQSxD
QUVBLElBQUEwbUIsR0FBQW51QyxPQUFBd0MsUUFBQSxTQUFBbUIsR0FBbUQsT0FBQTVELEdBQUEs
RUFBZ0JBLEVBQUFnQyxVQUFBQyxPQUFzQmpDLElBQUEsQ0FBTyxHQUFBNkQsR0FBQTdCLFVBQUFo
QyxFQUEyQixRQUFBa0UsS0FBQUwsR0FBMEI1RCxPQUFBQyxVQUFBQyxlQUFBUCxLQUFBaUUsRUFB
QUssS0FBeUROLEVBQUFNLEdBQUFMLEVBQUFLLElBQWlDLE1BQUFOLEdBRS9PcEUsR0FBQXlvRixv
QkFDQXpvRixFQUFBNG9GLHFCQUNBNW9GLEVBQUFncEYsMkJBQ0FocEYsRUFBQWlwRix5QkFFQSxJ
QUFBcDNDLEdBQUFoeUMsRUFBQSxHQUVBbW9CLEdBQUE2cEIsRUE0Q0E3eEMsR0FBQW1vQixTQUFB
NmdFLEVBQUFDLEk3THF3cUJNLFNBQVNocEYsRUFBUUQsRUFBU0gsRzhMOXpxQmhDLFlBV0EsU0FB
QW1vQixHQUFBQyxHQUFzQyxNQUFBQSxNQUFBQyxXQUFBRCxHQUF1Q0UsUUFBQUYsR0FFN0UsUUFB
QWtrQixHQUFBbGtCLEVBQUFsa0IsR0FBOEMsR0FBQUssS0FBaUIsUUFBQTVELEtBQUF5bkIsR0FB
cUJsa0IsRUFBQStvQixRQUFBdHNCLElBQUEsR0FBb0NDLE9BQUFDLFVBQUFDLGVBQUFQLEtBQUE2
bkIsRUFBQXpuQixLQUE2RDRELEVBQUE1RCxHQUFBeW5CLEVBQUF6bkIsR0FBc0IsT0FBQTRELEdB
RTNNLFFBQUE4a0YsR0FBQXZDLEVBQUFDLEVBQUFDLEVBQUEzMkMsR0FDQSxnQkFBQWxCLEVBQUE0
QyxHQUNBLE1BQUFpMUMsR0FBQUYsRUFBQTMzQyxFQUFBNEMsR0FBQWcxQyxFQUFBMTJDLEVBQUEw
QixPQUlBLFFBQUF1M0MsR0FBQXhDLEVBQUFDLEVBQUFDLEVBQUEzMkMsRUFBQWpELEdBWUEsUUFB
QW04QyxHQUFBQyxFQUFBQyxHQU9BLE1BTkF0NkMsR0FBQXE2QyxFQUNBejNDLEVBQUEwM0MsRUFD
QVosRUFBQS9CLEVBQUEzM0MsRUFBQTRDLEdBQ0ErMkMsRUFBQS9CLEVBQUExMkMsRUFBQTBCLEdB
Q0FrM0MsRUFBQWpDLEVBQUE2QixFQUFBQyxFQUFBLzJDLEdBQ0EyM0MsR0FBQSxFQUNBVCxFQUdB
LFFBQUFVLEtBTUEsTUFMQWQsR0FBQS9CLEVBQUEzM0MsRUFBQTRDLEdBRUFnMUMsRUFBQXQxQyxv
QkFBQXEzQyxFQUFBL0IsRUFBQTEyQyxFQUFBMEIsSUFFQWszQyxFQUFBakMsRUFBQTZCLEVBQUFD
LEVBQUEvMkMsR0FJQSxRQUFBNjNDLEtBTUEsTUFMQTlDLEdBQUFyMUMsb0JBQUFvM0MsRUFBQS9C
LEVBQUEzM0MsRUFBQTRDLElBRUFnMUMsRUFBQXQxQyxvQkFBQXEzQyxFQUFBL0IsRUFBQTEyQyxF
QUFBMEIsSUFFQWszQyxFQUFBakMsRUFBQTZCLEVBQUFDLEVBQUEvMkMsR0FJQSxRQUFBODNDLEtB
Q0EsR0FBQUMsR0FBQWhELEVBQUEzM0MsRUFBQTRDLEdBQ0FnNEMsR0FBQXRDLEVBQUFxQyxFQUFB
akIsRUFLQSxPQUpBQSxHQUFBaUIsRUFFQUMsSUFBQWQsRUFBQWpDLEVBQUE2QixFQUFBQyxFQUFB
LzJDLElBRUFrM0MsRUFHQSxRQUFBZSxHQUFBcHFCLEVBQUFxcUIsR0FDQSxHQUFBQyxJQUFBNUMs
RUFBQTJDLEVBQUFsNEMsR0FDQW80QyxHQUFBL0MsRUFBQXhuQixFQUFBendCLEVBSUEsT0FIQUEs
R0FBQXl3QixFQUNBN3RCLEVBQUFrNEMsRUFFQUMsR0FBQUMsRUFBQVIsSUFDQU8sRUFBQU4sSUFD
QU8sRUFBQU4sSUFDQVosRUExREEsR0FBQTdCLEdBQUFoNkMsRUFBQWc2QyxlQUNBRSxFQUFBbDZD
LEVBQUFrNkMsaUJBQ0FHLEVBQUFyNkMsRUFBQXE2QyxtQkFFQWlDLEdBQUEsRUFDQXY2QyxFQUFB
LE9BQ0E0QyxFQUFBLE9BQ0E4MkMsRUFBQSxPQUNBQyxFQUFBLE9BQ0FHLEVBQUEsTUFvREEsaUJB
QUFycEIsRUFBQXFxQixHQUNBLE1BQUFQLEdBQUFNLEVBQUFwcUIsRUFBQXFxQixHQUFBVixFQUFB
M3BCLEVBQUFxcUIsSUFXQSxRQUFBRyxHQUFBLzVDLEVBQUFYLEdBQ0EsR0FBQW00QyxHQUFBbjRD
LEVBQUFtNEMsb0JBQ0FDLEVBQUFwNEMsRUFBQW80Qyx1QkFDQUMsRUFBQXI0QyxFQUFBcTRDLGVB
Q0F2cEQsRUFBQThOLEVBQUFvRCxHQUFBLGtFQUVBbzNDLEVBQUFlLEVBQUF4M0MsRUFBQTdSLEdB
Q0F1b0QsRUFBQWUsRUFBQXozQyxFQUFBN1IsR0FDQXdvRCxFQUFBZSxFQUFBMTNDLEVBQUE3UixH
QU1BeU8sRUFBQXpPLEVBQUEwb0QsS0FBQW9DLEVBQUFELENBRUEsT0FBQXA4QyxHQUFBNjVDLEVB
QUFDLEVBQUFDLEVBQUEzMkMsRUFBQTdSLEdBN0dBcitCLEVBQUFrb0IsWUFBQSxFQUNBbG9CLEVB
QUFrcEYsa0NBQ0FscEYsRUFBQW1wRixnQ0FDQW5wRixFQUFBbW9CLFFBQUE4aEUsQ0FFQSxJQUFB
QyxHQUFBcnFGLEVBQUEsSUFFQW1vQixHQUFBa2lFLEk5TDI2cUJNLFNBQVNqcUYsRUFBUUQsRUFB
U0gsRytMcDdxQmhDLFlBU0EsU0FBQW1vQixHQUFBQyxHQUFzQyxNQUFBQSxNQUFBQyxXQUFBRCxH
QUF1Q0UsUUFBQUYsR0FFN0UsUUFBQWtpRSxHQUFBMzlDLEVBQUFhLEVBQUEvYSxHQUNBLElBQUFr
YSxFQUNBLFNBQUExcUMsT0FBQSx3QkFBQXVyQyxFQUFBLE9BQUEvYSxFQUFBLElBQ0cscUJBQUEr
YSxHQUFBLHVCQUFBQSxHQUNIYixFQUFBN3JDLGVBQUEsdUJBQ0EsRUFBQW15QyxFQUFBM3FCLFNB
QUEsb0JBQUFrbEIsRUFBQSxPQUFBL2EsRUFBQSxtREFLQSxRQUFBODNELEdBQUF6RCxFQUFBQyxF
QUFBQyxFQUFBdjBELEdBQ0E2M0QsRUFBQXhELEVBQUEsa0JBQUFyMEQsR0FDQTYzRCxFQUFBdkQs
RUFBQSxxQkFBQXQwRCxHQUNBNjNELEVBQUF0RCxFQUFBLGFBQUF2MEQsR0F0QkF0eUIsRUFBQWtv
QixZQUFBLEVBQ0Fsb0IsRUFBQW1vQixRQUFBaWlFLENBRUEsSUFBQWpoRSxHQUFBdHBCLEVBQUEs
SUFFQWl6QyxFQUFBOXFCLEVBQUFtQixJL0w0OHFCTSxTQUFTbHBCLEVBQVFELEdnTW45cUJ2QixZ
QUlBLFNBQUE4N0IsR0FBQUMsRUFBQUMsR0FBaUQsS0FBQUQsWUFBQUMsSUFBMEMsU0FBQWo1QixX
QUFBLHFDQVczRixRQUFBc25GLEtBR0EsR0FBQXQ2RSxNQUNBazNCLElBRUEsUUFDQXFqRCxNQUFB
LFdBQ0FyakQsRUFBQXNqRCxFQUNBeDZFLEVBQUF3NkUsR0FFQUMsT0FBQSxXQUVBLE9BREExckQs
R0FBQS91QixFQUFBazNCLEVBQ0F6bUMsRUFBQSxFQUFxQkEsRUFBQXMrQixFQUFBcjhCLE9BQXNC
akMsSUFDM0NzK0IsRUFBQXQrQixNQUdBMGMsSUFBQSxXQUNBLE1BQUErcEIsSUFFQTBMLFVBQUEs
U0FBQXg0QixHQUNBLEdBQUF1MkIsSUFBQSxDQUlBLE9BSEF6SixLQUFBbDNCLElBQUFrM0IsRUFB
QWwzQixFQUFBalAsU0FDQW1tQyxFQUFBcmdDLEtBQUF1VCxHQUVBLFdBQ0F1MkIsR0FBQTNnQyxJ
QUFBdzZFLElBQ0E3NUMsR0FBQSxFQUVBekosSUFBQWwzQixJQUFBazNCLEVBQUFsM0IsRUFBQWpQ
LFNBQ0FtbUMsRUFBQTM2QixPQUFBMjZCLEVBQUFuYSxRQUFBM1MsR0FBQSxPQTNDQW5hLEVBQUFr
b0IsWUFBQSxDQVFBLElBQUFxaUUsR0FBQSxLQUNBRSxHQUNBRCxPQUFBLGNBdUNBRSxFQUFBLFdB
Q0EsUUFBQUEsR0FBQW4rQyxFQUFBNEQsRUFBQUUsR0FDQXZVLEVBQUEzNkIsS0FBQXVwRixHQUVB
dnBGLEtBQUFvckMsUUFDQXByQyxLQUFBZ3ZDLFlBQ0FodkMsS0FBQWt2QyxnQkFDQWx2QyxLQUFB
bStDLFlBQUEsS0FDQW4rQyxLQUFBMjlCLFVBQUEyckQsRUFpQ0EsTUE5QkFDLEdBQUFocUYsVUFB
QWlxRixhQUFBLFNBQUF4d0UsR0FFQSxNQURBaFosTUFBQXV1QyxlQUNBdnVDLEtBQUEyOUIsVUFB
QTZULFVBQUF4NEIsSUFHQXV3RSxFQUFBaHFGLFVBQUFxdkMsaUJBQUEsV0FDQTV1QyxLQUFBMjlC
LFVBQUEwckQsVUFHQUUsRUFBQWhxRixVQUFBZ3dDLGFBQUEsV0FDQSxNQUFBelMsU0FBQTk4QixL
QUFBbStDLGNBR0FvckMsRUFBQWhxRixVQUFBZ3ZDLGFBQUEsV0FDQXZ1QyxLQUFBbStDLGNBQ0Fu
K0MsS0FBQW0rQyxZQUFBbitDLEtBQUFndkMsVUFBQWh2QyxLQUFBZ3ZDLFVBQUF3NkMsYUFBQXhw
RixLQUFBa3ZDLGVBQUFsdkMsS0FBQW9yQyxNQUFBb0csVUFBQXh4QyxLQUFBa3ZDLGVBRUFsdkMs
S0FBQTI5QixVQUFBdXJELE1BSUFLLEVBQUFocUYsVUFBQW92QyxlQUFBLFdBQ0EzdUMsS0FBQW0r
QyxjQUNBbitDLEtBQUFtK0MsY0FDQW4rQyxLQUFBbStDLFlBQUEsS0FDQW4rQyxLQUFBMjlCLFVB
QUF3ckQsUUFDQW5wRixLQUFBMjlCLFVBQUEyckQsSUFJQUMsSUFHQTFxRixHQUFBbW9CLFFBQUF1
aUUsR2hNeTlxQk0sU0FBU3pxRixFQUFRRCxHaU14anJCdkIsWUFNQSxTQUFBMnBCLEdBQUFDLEVB
QUFDLEdBQ0EsTUFBQUQsS0FBQUMsRUFDQSxJQUFBRCxHQUFBLElBQUFDLEdBQUEsRUFBQUQsSUFB
QSxFQUFBQyxFQUVBRCxPQUFBQyxNQUlBLFFBQUFDLEdBQUFDLEVBQUFDLEdBQ0EsR0FBQUwsRUFB
QUksRUFBQUMsR0FBQSxRQUVBLG9CQUFBRCxJQUFBLE9BQUFBLEdBQUEsZ0JBQUFDLElBQUEsT0FB
QUEsRUFDQSxRQUdBLElBQUFDLEdBQUF4cEIsT0FBQXNELEtBQUFnbUIsR0FDQUcsRUFBQXpwQixP
QUFBc0QsS0FBQWltQixFQUVBLElBQUFDLEVBQUF4bkIsU0FBQXluQixFQUFBem5CLE9BQUEsUUFF
QSxRQUFBakMsR0FBQSxFQUFpQkEsRUFBQXlwQixFQUFBeG5CLE9BQWtCakMsSUFDbkMsSUFBQWtw
QixFQUFBdHBCLEtBQUE0cEIsRUFBQUMsRUFBQXpwQixNQUFBbXBCLEVBQUFJLEVBQUFFLEVBQUF6
cEIsSUFBQXdwQixFQUFBQyxFQUFBenBCLEtBQ0EsUUFJQSxVQTlCQVIsRUFBQWtvQixZQUFBLEVB
Q0Fsb0IsRUFBQW1vQixRQUFBMkIsQ0FDQSxJQUFBSixHQUFBanBCLE9BQUFDLFVBQUFDLGdCak0y
bHJCTSxTQUFTVixFQUFRRCxFQUFTSCxHa01wbHJCaEMsbUJBQUFxNEMsV0FJQXI0QyxFQUFBLEtB
QUErcUYsU0FDQWpqRixPQUFBdXdDLFFBQUFyNEMsRUFBQSxNQUlBQSxFQUFBLEtBSUFZLE9BQUF3
QyxPQUFBcEQsRUFBQSxNbE1zbXJCTSxTQUFTSSxFQUFRRCxJbU05bnJCdkIsU0FBQXNuRCxHQUFB
LFlBYUEsU0FBQXVqQyxHQUFBQyxHQUNBMzlFLEVBQUExSyxTQUNBc29GLElBQ0FDLEdBQUEsR0FH
QTc5RSxJQUFBMUssUUFBQXFvRixFQTBCQSxRQUFBRyxLQUNBLEtBQUFqa0UsRUFBQTdaLEVBQUEx
SyxRQUFBLENBQ0EsR0FBQXlvRixHQUFBbGtFLENBVUEsSUFQQUEsR0FBQSxFQUNBN1osRUFBQSs5
RSxHQUFBOXFGLE9BTUE0bUIsRUFBQW1rRSxFQUFBLENBR0EsT0FBQUMsR0FBQSxFQUFBQyxFQUFB
bCtFLEVBQUExSyxPQUFBdWtCLEVBQWdFb2tFLEVBQUFDLEVBQWtCRCxJQUNsRmorRSxFQUFBaStF
LEdBQUFqK0UsRUFBQWkrRSxFQUFBcGtFLEVBRUE3WixHQUFBMUssUUFBQXVrQixFQUNBQSxFQUFB
LEdBR0E3WixFQUFBMUssT0FBQSxFQUNBdWtCLEVBQUEsRUFDQWdrRSxHQUFBLEVBc0VBLFFBQUFN
LEdBQUExaEYsR0FDQSxHQUFBMmhGLEdBQUEsRUFDQW5zQyxFQUFBLEdBQUFvc0MsR0FBQTVoRixH
QUNBaEYsRUFBQWdELFNBQUFna0IsZUFBQSxHQUVBLE9BREF3ekIsR0FBQXFzQyxRQUFBN21GLEdB
QTRCOG1GLGVBQUEsSUFDNUIsV0FDQUgsS0FDQTNtRixFQUFBaWpCLEtBQUEwakUsR0E0Q0EsUUFB
QUksR0FBQS9oRixHQUNBLGtCQVdBLFFBQUFnaUYsS0FHQTcxQyxhQUFBODFDLEdBQ0FDLGNBQUFD
LEdBQ0FuaUYsSUFYQSxHQUFBaWlGLEdBQUFsMkMsV0FBQWkyQyxFQUFBLEdBSUFHLEVBQUFDLFlB
QUFKLEVBQUEsS0E1TEEzckYsRUFBQUQsUUFBQTZxRixDQVVBLElBT0FFLEdBUEE1OUUsS0FHQTY5
RSxHQUFBLEVBUUFoa0UsRUFBQSxFQUlBbWtFLEVBQUEsS0E2Q0FsK0UsRUFBQSxtQkFBQXE2QyxL
QUFBN3ZDLEtBQ0ErekUsRUFBQXYrRSxFQUFBZy9FLGtCQUFBaC9FLEVBQUFpL0Usc0JBY0FuQixH
QURBLGtCQUFBUyxHQUNBRixFQUFBTCxHQThCQVUsRUFBQVYsR0FRQUosRUFBQUUsZUFnRkFGLEVB
QUFjLDZCbk15b3JCOEJ2ckYsS0FBS0osRUFBVSxXQUFhLE1BQU9tQixXQUkzRCxTQUFTbEIsRUFB
UUQsRUFBU0gsR0FFL0IsWUFXQSxTQUFTc3NGLEdBQXdCbGtFLEdBQU8sR0FBSUEsR0FBT0EsRUFB
SUMsV0FBYyxNQUFPRCxFQUFjLElBQUlta0UsS0FBYSxJQUFXLE1BQVBua0UsRUFBZSxJQUFLLEdB
QUl2akIsS0FBT3VqQixHQUFXeG5CLE9BQU9DLFVBQVVDLGVBQWVQLEtBQUs2bkIsRUFBS3ZqQixL
QUFNMG5GLEVBQU8xbkYsR0FBT3VqQixFQUFJdmpCLEdBQWdDLE9BQXRCMG5GLEdBQU9qa0UsUUFB
VUYsRUFBWW1rRSxFQVRsUTNyRixPQUFPNm5DLGVBQWV0b0MsRUFBUyxjQUM3QmlTLE9BQU8sSUFF
VGpTLEVBQVFxc0YsZUFBaUJyc0YsRUFBUXNzRixZQUFjdHNGLEVBQVF1c0YsYUFBZXZzRixFQUFR
d3NGLFNBQVd4c0YsRUFBUXlzRixXQUFhenNGLEVBQVEwc0YsUUFBVTdxRixNb00zMnJCakksSUFB
QThxRixHQUFBOXNGLEVBQUEsSUFBWStzRixFcE0rMnJCQ1QsRUFBd0JRLEVvTTcyckJ4QkQsV0FB
VSxTQUFBcDhFLEdBQUEsT0FBV3hGLEtBQU04aEYsRUFBTS8zQyxTQUFVdmtDLFNBQzNDbThFLGFB
QWEsU0FBQXZzRixHQUFBLE9BQVM0SyxLQUFNOGhGLEVBQU05M0MsWUFBYTUwQyxPQUMvQ3NzRixX
QUFXLFNBQUN0c0YsRUFBSW9RLEdBQUwsT0FBaUJ4RixLQUFNOGhGLEVBQU03M0MsVUFBVzcwQyxL
QUFJb1EsU0FDdkRpOEUsZUFBZSxTQUFBcnNGLEdBQUEsT0FBUzRLLEtBQU04aEYsRUFBTTUzQyxj
QUFlOTBDLE9BQ25Eb3NGLGNBQWMsa0JBQVN4aEYsS0FBTThoRixFQUFNMzNDLGVBQ25DbzNDLGlC
QUFpQixrQkFBU3ZoRixLQUFNOGhGLEVBQU0xM0MsbUJwTWk0ckI3QyxTQUFTajFDLEVBQVFELEVB
QVNILEdBRS9CLFlBb0JBLFNBQVNtb0IsR0FBdUJDLEdBQU8sTUFBT0EsSUFBT0EsRUFBSUMsV0FB
YUQsR0FBUUUsUUFBU0YsR0FFdkYsUUFBUzZULEdBQWdCQyxFQUFVQyxHQUFlLEtBQU1ELFlBQW9C
QyxJQUFnQixLQUFNLElBQUlqNUIsV0FBVSxxQ0FFaEgsUUFBUzRvQyxHQUEyQmwwQixFQUFNclgs
R0FBUSxJQUFLcVgsRUFBUSxLQUFNLElBQUltMEIsZ0JBQWUsNERBQWdFLFFBQU94ckMsR0FBeUIs
Z0JBQVRBLElBQXFDLGtCQUFUQSxHQUE4QnFYLEVBQVByWCxFQUVsTyxRQUFTeXJDLEdBQVVDLEVB
QVVDLEdBQWMsR0FBMEIsa0JBQWZBLElBQTRDLE9BQWZBLEVBQXVCLEtBQU0sSUFBSWhwQyxXQUFV
LGlFQUFvRWdwQyxHQUFlRCxHQUFTcHJDLFVBQVlELE9BQU82K0IsT0FBT3lNLEdBQWNBLEVBQVdy
ckMsV0FBYXVOLGFBQWVnRSxNQUFPNjVCLEVBQVV2RCxZQUFZLEVBQU95RCxVQUFVLEVBQU14RCxj
QUFjLEtBQWV1RCxJQUFZdHJDLE9BQU93ckMsZUFBaUJ4ckMsT0FBT3dyQyxlQUFlSCxFQUFVQyxH
QUFjRCxFQUFTSSxVQUFZSCxHQUVqZSxRQUFTOGdELEdBQWdCNWtFLEVBQUt2akIsRUFBS3VOLEdB
QWlLLE1BQXBKdk4sS0FBT3VqQixHQUFPeG5CLE9BQU82bkMsZUFBZXJnQixFQUFLdmpCLEdBQU91
TixNQUFPQSxFQUFPczJCLFlBQVksRUFBTUMsY0FBYyxFQUFNd0QsVUFBVSxJQUFrQi9qQixFQUFJ
dmpCLEdBQU91TixFQUFnQmdXLEVBMUIzTXhuQixPQUFPNm5DLGVBQWV0b0MsRUFBUyxjQUM3QmlT
LE9BQU8sR0FHVCxJQUVJNjZFLEdBRkE5NUMsRUFBZSxXQUFjLFFBQVNDLEdBQWlCN3VDLEVBQVF1
VCxHQUFTLElBQUssR0FBSW5YLEdBQUksRUFBR0EsRUFBSW1YLEVBQU1sVixPQUFRakMsSUFBSyxD
QUFFLEdBQUkybkMsR0FBYXh3QixFQUFNblgsRUFBSTJuQyxHQUFXSSxXQUFhSixFQUFXSSxhQUFj
LEVBQU9KLEVBQVdLLGNBQWUsRUFBVSxTQUFXTCxLQUFZQSxFQUFXNkQsVUFBVyxHQUFNdnJDLE9B
QU82bkMsZUFBZWxrQyxFQUFRK2pDLEVBQVd6akMsSUFBS3lqQyxJQUFpQixNQUFPLFVBQVVuTSxF
QUFha1gsRUFBWUMsR0FBaUosTUFBOUhELElBQVlELEVBQWlCalgsRUFBWXQ3QixVQUFXd3lDLEdB
QWlCQyxHQUFhRixFQUFpQmpYLEVBQWFtWCxHQUFxQm5YLE1xTWg1ckJqaUI2VSxFQUFBaHhDLEVB
QUEsSXJNczVyQkt1ekMsRUFBVXByQixFQUF1QjZvQixHcU1yNXJCdEN3QyxFQUFBeHpDLEVBQUEs
SXJNeTVyQkt5ekMsRUFBZXRyQixFQUF1QnFyQixHcU14NXJCM0MwNUMsRUFBQWx0RixFQUFBLElB
RU1tdEYsdUJBQ1EsT0FEUkgsRUFBQUMsRUFBQUMsRUFBQTEzQyxZQUVXLFVBRlh3M0MsRUFBQUMs
RUFBQUMsRUFBQTMzQyxlQUdjLGFBSGQwM0MsR0FNZUcsRXJNZzZyQlAsU0FBVW4rQyxHQUdyQixR
QUFTbStDLEtBR1AsTUFGQW54RCxHQUFnQjM2QixLQUFNOHJGLEdBRWZ0aEQsRUFBMkJ4cUMsTUFB
TzhyRixFQUFPL2dELFdBQWF6ckMsT0FBT216QyxlQUFlcTVDLElBQVMvckYsTUFBTUMsS0FBTXFC
LFlBbUYxRyxNQXhGQXFwQyxHQUFVb2hELEVBQVFuK0MsR0FRbEJrRSxFQUFhaTZDLElBQ1h2b0Ys
SUFBSyxrQkFDTHVOLE1BQU8sV3FNbDZyQlEsR0FDUmk3RSxHQUFnQi9yRixLQUFLd1csTUFBckJ1
MUUsWUFDRkMsRUFBMkIsSUFBaEJELEVBQW9CLE9BQVMsT0FFOUMsT0FDRTk1QyxHQUFBanJCLFFB
QUF0Z0IsY0FBQSxRQUFNdXNDLFVBQVUsY0FDZGhCLEVBQUFqckIsUUFBQXRnQixjQUFBLGNBQVNx
bEYsR0FBZSxNQUQxQixJQUMwQ0MsRUFEMUMsWXJNZzdyQkR6b0YsSUFBSyxtQkFDTHVOLE1BQU8s
U3FNMzZyQk9naUUsR0FDZixHQUFNdjlCLEdBQVFzMkMsRUFBYy9ZLEdBRExtWixFQUVvQmpzRixL
QUFLd1csTUFBaEMwMUUsRUFGT0QsRUFFZm5aLE9BQXdCcVosRUFGVEYsRUFFU0UsTUFFaEMsT0FD
RWw2QyxHQUFBanJCLFFBQUF0Z0IsY0FBQSxLQUFHdXNDLFdBQVcsRUFBQWQsRUFBQW5yQixVQUFh
bVcsU0FBVTIxQyxJQUFXb1osSUFDN0N2OEIsT0FBUytoQixPQUFRLFdBQ2pCMGEsUUFBUyxpQkFB
TUQsR0FBT3JaLEtBQ3RCdjlCLE1yTXE3ckJKaHlDLElBQUssb0JBQ0x1TixNQUFPLFdxTWo3ckJV
LEdBQUF1N0UsR0FDMkJyc0YsS0FBS3dXLE1BQTFDODFFLEVBRFVELEVBQ1ZDLGVBQWdCQyxFQURO
RixFQUNNRSxnQkFDeEIsSUFBSUQsRUFBaUIsRUFDbkIsTUFDRXI2QyxHQUFBanJCLFFBQUF0Z0Is
Y0FBQSxVQUFRdXNDLFVBQVUsa0JBQ1ZtNUMsUUFBU0csR0FEakIsc0JyTTQ3ckJIaHBGLElBQUss
U0FDTHVOLE1BQU8sV3FNcjdyQkQsR0FBQTA3RSxHQUFBeHNGLElBQ1AsT0FDRWl5QyxHQUFBanJC
LFFBQUF0Z0IsY0FBQSxVQUFRdXNDLFVBQVUsVUFDZmp6QyxLQUFLeXNGLGtCQUNOeDZDLEVBQUFq
ckIsUUFBQXRnQixjQUFBLE1BQUl1c0MsVUFBVSxZQUNYMjRDLEVBQUE1M0MsU0FBQTQzQyxFQUFB
MTNDLFlBQUEwM0MsRUFBQTMzQyxnQkFBMEM1eEMsSUFBSSxTQUFBeXdFLEdBQUEsTUFDN0M3Z0Ms
R0FBQWpyQixRQUFBdGdCLGNBQUEsTUFBSW5ELElBQUt1dkUsR0FDTjBaLEVBQUtFLGlCQUFpQjVa
LE9BSTVCOXlFLEtBQUsyc0YseUJyTWk4ckJKYixHQUNQcDhDLEVBQU9sNkIsVXFNMS9yQldzMkUs
R0FDWi83RCxXQUNMdThELGVBQWdCNThDLEVBQUEvNUIsVUFBVWt6QixPQUFPMEksV0FDakN3NkMs
WUFBYXI4QyxFQUFBLzVCLFVBQVVrekIsT0FBTzBJLFdBQzlCdWhDLE9BQVFwakMsRUFBQS81QixV
QUFVNFAsT0FBT2dzQixXQUN6Qmc3QyxpQkFBa0I3OEMsRUFBQS81QixVQUFVdWEsS0FBS3FoQixX
QUNqQzQ2QyxPQUFRejhDLEVBQUEvNUIsVUFBVXVhLEtBQUtxaEIsWXJNNi9yQjFCMXlDLEVBQVFt
b0IsUXFNbmdzQlk4a0UsR3JNdWdzQmYsU0FBU2h0RixFQUFRRCxFQUFTSCxHQUUvQixZQWdCQSxT
QUFTbW9CLEdBQXVCQyxHQUFPLE1BQU9BLElBQU9BLEVBQUlDLFdBQWFELEdBQVFFLFFBQVNGLEdB
RXZGLFFBQVM2VCxHQUFnQkMsRUFBVUMsR0FBZSxLQUFNRCxZQUFvQkMsSUFBZ0IsS0FBTSxJQUFJ
ajVCLFdBQVUscUNBRWhILFFBQVM0b0MsR0FBMkJsMEIsRUFBTXJYLEdBQVEsSUFBS3FYLEVBQVEs
S0FBTSxJQUFJbTBCLGdCQUFlLDREQUFnRSxRQUFPeHJDLEdBQXlCLGdCQUFUQSxJQUFxQyxrQkFB
VEEsR0FBOEJxWCxFQUFQclgsRUFFbE8sUUFBU3lyQyxHQUFVQyxFQUFVQyxHQUFjLEdBQTBCLGtC
QUFmQSxJQUE0QyxPQUFmQSxFQUF1QixLQUFNLElBQUlocEMsV0FBVSxpRUFBb0VncEMsR0FBZUQs
R0FBU3ByQyxVQUFZRCxPQUFPNitCLE9BQU95TSxHQUFjQSxFQUFXcnJDLFdBQWF1TixhQUFlZ0Us
TUFBTzY1QixFQUFVdkQsWUFBWSxFQUFPeUQsVUFBVSxFQUFNeEQsY0FBYyxLQUFldUQsSUFBWXRy
QyxPQUFPd3JDLGVBQWlCeHJDLE9BQU93ckMsZUFBZUgsRUFBVUMsR0FBY0QsRUFBU0ksVUFBWUgs
R0FwQmpldHJDLE9BQU82bkMsZUFBZXRvQyxFQUFTLGNBQzdCaVMsT0FBTyxHQUdULElBQUkrZ0Ms
R0FBZSxXQUFjLFFBQVNDLEdBQWlCN3VDLEVBQVF1VCxHQUFTLElBQUssR0FBSW5YLEdBQUksRUFB
R0EsRUFBSW1YLEVBQU1sVixPQUFRakMsSUFBSyxDQUFFLEdBQUkybkMsR0FBYXh3QixFQUFNblgs
RUFBSTJuQyxHQUFXSSxXQUFhSixFQUFXSSxhQUFjLEVBQU9KLEVBQVdLLGNBQWUsRUFBVSxTQUFX
TCxLQUFZQSxFQUFXNkQsVUFBVyxHQUFNdnJDLE9BQU82bkMsZUFBZWxrQyxFQUFRK2pDLEVBQVd6
akMsSUFBS3lqQyxJQUFpQixNQUFPLFVBQVVuTSxFQUFha1gsRUFBWUMsR0FBaUosTUFBOUhELElB
QVlELEVBQWlCalgsRUFBWXQ3QixVQUFXd3lDLEdBQWlCQyxHQUFhRixFQUFpQmpYLEVBQWFtWCxH
QUFxQm5YLE1zTXpoc0JqaUI2VSxFQUFBaHhDLEVBQUEsSXRNNmhzQkt1ekMsRUFBVXByQixFQUF1
QjZvQixHc001aHNCdENrOUMsRUFBQWx1RixFQUFBLEl0TWdpc0JLbXVGLEVBQWtCaG1FLEVBQXVC
K2xFLEdzTTloc0J6QkUsRXRNd2lzQlAsU0FBVW4vQyxHQUdyQixRQUFTbS9DLEtBQ1AsR0FBSWho
RCxHQUVBdUcsRUFBT3pFLEVBQU8wRSxDQUVsQjNYLEdBQWdCMzZCLEtBQU04c0YsRUFFdEIsS0FB
SyxHQUFJdjZDLEdBQU9seEMsVUFBVUMsT0FBUTVCLEVBQU9vWCxNQUFNeTdCLEdBQU9DLEVBQU8s
RUFBR0EsRUFBT0QsRUFBTUMsSUFDM0U5eUMsRUFBSzh5QyxHQUFRbnhDLFVBQVVteEMsRUFHekIs
T0FBZUgsR0FBU3pFLEVBQVFwRCxFQUEyQnhxQyxNQUFPOHJDLEVBQU9naEQsRUFBTy9oRCxXQUFh
enJDLE9BQU9tekMsZUFBZXE2QyxJQUFTN3RGLEtBQUtjLE1BQU0rckMsR0FBTzlyQyxNQUFNQyxP
QUFPUCxLQUFpQmt1QyxFc01qanNCL0ttL0MsV0FBYSxTQUFBNTlFLEdBQ1MsSUFBaEJBLEVBQUs3
TixRQUNQc3NDLEVBQUtwM0IsTUFBTSswRSxRQUFRcDhFLEl0TStpc0JibWpDLEVBSUpELEVBQVE3
SCxFQUEyQm9ELEVBQU8wRSxHQXFCL0MsTUF0Q0E1SCxHQUFVb2lELEVBQVFuL0MsR0FvQmxCa0Us
RUFBYWk3QyxJQUNYdnBGLElBQUssU0FDTHVOLE1BQU8sV3NNbmpzQlIsTUFDRW1oQyxHQUFBanJC
LFFBQUF0Z0IsY0FBQSxVQUFRdXNDLFVBQVUsVUFDaEJoQixFQUFBanJCLFFBQUF0Z0IsY0FBQSxt
QkFDQXVyQyxFQUFBanJCLFFBQUF0Z0IsY0FBQW1tRixFQUFBN2xFLFNBQWU4ckIsU0FBQSxFQUNB
RCxPQUFRN3lDLEtBQUsrc0YsV0FDYjE1QyxZQUFZLGdDdE04anNCekJ5NUMsR0FDUHA5QyxFQUFP
bDZCLFVzTWhsc0JXczNFLEdBQ1ovOEQsV0FDTHc3RCxRQUFTNzdDLEVBQUEvNUIsVUFBVXVhLEtB
QUtxaEIsWXRNbWxzQjNCMXlDLEVBQVFtb0IsUXNNcmxzQlk4bEUsR3RNeWxzQmYsU0FBU2h1RixF
QUFRRCxFQUFTSCxHQUUvQixZQTBCQSxTQUFTbW9CLEdBQXVCQyxHQUFPLE1BQU9BLElBQU9BLEVB
QUlDLFdBQWFELEdBQVFFLFFBQVNGLEdBRXZGLFFBQVM2VCxHQUFnQkMsRUFBVUMsR0FBZSxLQUFN
RCxZQUFvQkMsSUFBZ0IsS0FBTSxJQUFJajVCLFdBQVUscUNBRWhILFFBQVM0b0MsR0FBMkJsMEIs
RUFBTXJYLEdBQVEsSUFBS3FYLEVBQVEsS0FBTSxJQUFJbTBCLGdCQUFlLDREQUFnRSxRQUFPeHJD
LEdBQXlCLGdCQUFUQSxJQUFxQyxrQkFBVEEsR0FBOEJxWCxFQUFQclgsRUFFbE8sUUFBU3lyQyxH
QUFVQyxFQUFVQyxHQUFjLEdBQTBCLGtCQUFmQSxJQUE0QyxPQUFmQSxFQUF1QixLQUFNLElBQUlo
cEMsV0FBVSxpRUFBb0VncEMsR0FBZUQsR0FBU3ByQyxVQUFZRCxPQUFPNitCLE9BQU95TSxHQUFj
QSxFQUFXcnJDLFdBQWF1TixhQUFlZ0UsTUFBTzY1QixFQUFVdkQsWUFBWSxFQUFPeUQsVUFBVSxF
QUFNeEQsY0FBYyxLQUFldUQsSUFBWXRyQyxPQUFPd3JDLGVBQWlCeHJDLE9BQU93ckMsZUFBZUgs
RUFBVUMsR0FBY0QsRUFBU0ksVUFBWUgsR0FFamUsUUFBUzhnRCxHQUFnQjVrRSxFQUFLdmpCLEVB
QUt1TixHQUFpSyxNQUFwSnZOLEtBQU91akIsR0FBT3huQixPQUFPNm5DLGVBQWVyZ0IsRUFBS3Zq
QixHQUFPdU4sTUFBT0EsRUFBT3MyQixZQUFZLEVBQU1DLGNBQWMsRUFBTXdELFVBQVUsSUFBa0Iv
akIsRUFBSXZqQixHQUFPdU4sRUFBZ0JnVyxFQWhDM014bkIsT0FBTzZuQyxlQUFldG9DLEVBQVMs
Y0FDN0JpUyxPQUFPLEdBR1QsSUFJSWs4RSxHQUpBdi9DLEVBQVdudUMsT0FBT3dDLFFBQVUsU0FB
VW1CLEdBQVUsSUFBSyxHQUFJNUQsR0FBSSxFQUFHQSxFQUFJZ0MsVUFBVUMsT0FBUWpDLElBQUss
Q0FBRSxHQUFJNkQsR0FBUzdCLFVBQVVoQyxFQUFJLEtBQUssR0FBSWtFLEtBQU9MLEdBQWM1RCxP
QUFPQyxVQUFVQyxlQUFlUCxLQUFLaUUsRUFBUUssS0FBUU4sRUFBT00sR0FBT0wsRUFBT0ssSUFB
WSxNQUFPTixJQUVuUDR1QyxFQUFlLFdBQWMsUUFBU0MsR0FBaUI3dUMsRUFBUXVULEdBQVMsSUFB
SyxHQUFJblgsR0FBSSxFQUFHQSxFQUFJbVgsRUFBTWxWLE9BQVFqQyxJQUFLLENBQUUsR0FBSTJu
QyxHQUFheHdCLEVBQU1uWCxFQUFJMm5DLEdBQVdJLFdBQWFKLEVBQVdJLGFBQWMsRUFBT0osRUFB
V0ssY0FBZSxFQUFVLFNBQVdMLEtBQVlBLEVBQVc2RCxVQUFXLEdBQU12ckMsT0FBTzZuQyxlQUFl
bGtDLEVBQVErakMsRUFBV3pqQyxJQUFLeWpDLElBQWlCLE1BQU8sVUFBVW5NLEVBQWFrWCxFQUFZ
QyxHQUFpSixNQUE5SEQsSUFBWUQsRUFBaUJqWCxFQUFZdDdCLFVBQVd3eUMsR0FBaUJDLEdBQWFG
LEVBQWlCalgsRUFBYW1YLEdBQXFCblgsTXVNdG1zQmppQjZVLEVBQUFoeEMsRUFBQSxJdk00bXNC
S3V6QyxFQUFVcHJCLEVBQXVCNm9CLEd1TTNtc0J0Q3U5QyxFQUFBdnVGLEVBQUEsS3ZNK21zQkt3
dUYsRUFBYXJtRSxFQUF1Qm9tRSxHdU05bXNCekNFLEVBQUF6dUYsRUFBQSxLdk1rbnNCSzB1RixF
QUFXdm1FLEVBQXVCc21FLEd1TWpuc0J2Q3ZCLEVBQUFsdEYsRUFBQSxJQUVNMnVGLHVCQUNRLGtC
QUFNLElBRGQzQixFQUFBc0IsRUFBQXBCLEVBQUExM0MsWUFFVyxTQUFBbzVDLEdBQUEsT0FBU0Es
RUFBS0MsWUFGekI3QixFQUFBc0IsRUFBQXBCLEVBQUEzM0MsZUFHYyxTQUFBcTVDLEdBQUEsTUFB
UUEsR0FBS0MsWUFIM0JQLEdBTWVRLEV2TStuc0JGLFNBQVU3L0MsR0FHMUIsUUFBUzYvQyxLQUNQ
LEdBQUkxaEQsR0FFQXVHLEVBQU96RSxFQUFPMEUsQ0FFbEIzWCxHQUFnQjM2QixLQUFNd3RGLEVB
RXRCLEtBQUssR0FBSWo3QyxHQUFPbHhDLFVBQVVDLE9BQVE1QixFQUFPb1gsTUFBTXk3QixHQUFP
QyxFQUFPLEVBQUdBLEVBQU9ELEVBQU1DLElBQzNFOXlDLEVBQUs4eUMsR0FBUW54QyxVQUFVbXhD
LEVBR3pCLE9BQWVILEdBQVN6RSxFQUFRcEQsRUFBMkJ4cUMsTUFBTzhyQyxFQUFPMGhELEVBQVl6
aUQsV0FBYXpyQyxPQUFPbXpDLGVBQWUrNkMsSUFBY3Z1RixLQUFLYyxNQUFNK3JDLEdBQU85ckMs
TUFBTUMsT0FBT1AsS0FBaUJrdUMsRXVNdm9zQnpMQyxPQUFVaWxDLG1Cdk11b3NCZ09sbEMsRXVN
cm9zQjFPNi9DLHFCQUF1QixXQUNyQjcvQyxFQUFLcDNCLE1BQU1rM0UsUUFBUXhDLGtCdk1zb3NC
ZnQ5QyxFdU1ub3NCTisvQyxXQUFhLFNBQUE3YSxHQUNYbGxDLEVBQUt5QixVQUFXeWpDLFl2TWdv
c0JSeGdDLEVBSUpELEVBQVE3SCxFQUEyQm9ELEVBQU8wRSxHQStEL0MsTUFoRkE1SCxHQUFVOGlE
LEVBQWE3L0MsR0FvQnZCa0UsRUFBYTI3QyxJQUNYanFGLElBQUssa0JBQ0x1TixNQUFPLFN1TXRv
c0JNdzdFLEdBQWdCLEdBQUFMLEdBQ0hqc0YsS0FBS3dXLE1BQXhCbzNFLEVBRHNCM0IsRUFDdEIy
QixNQUFPRixFQURlekIsRUFDZnlCLE9BQ2YsSUFBSUUsRUFBTXRzRixPQUFTLEVBQ2pCLE1BQ0Uy
d0MsR0FBQWpyQixRQUFBdGdCLGNBQUEsU0FBT3VzQyxVQUFVLGFBQ1Z0cEMsS0FBSyxXQUNMMGxC
LFFBQVNpOUQsSUFBbUJzQixFQUFNdHNGLE9BQ2xDNnRCLFNBQVV1K0QsRUFBUXZDLGlCdk00b3NC
NUI1bkYsSUFBSyxlQUNMdU4sTUFBTyxTdU14b3NCR3c3RSxHQUFnQixHQUNuQnNCLEdBQVU1dEYs
S0FBS3dXLE1BQWZvM0UsTUFDQTlhLEVBQVc5eUUsS0FBSzZ0QyxNQUFoQmlsQyxPQUNGaVosRUFB
YzZCLEVBQU10c0YsT0FBU2dyRixDQUVuQyxJQUFJc0IsRUFBTXRzRixPQUNSLE1BQ0Uyd0MsR0FB
QWpyQixRQUFBdGdCLGNBQUEwbUYsRUFBQXBtRSxTQUFRc2xFLGVBQWdCQSxFQUNoQlAsWUFBYUEs
RUFDYmpaLE9BQVFBLEVBQ1J5WixpQkFBa0J2c0YsS0FBS3l0RixxQkFBcUJ4MkUsS0FBS2pYLE1B
Q2pEbXNGLE9BQVFuc0YsS0FBSzJ0RixXQUFXMTJFLEtBQUtqWCxXdk00b3NCeEN1RCxJQUFLLFNB
Q0x1TixNQUFPLFd1TXhvc0JELEdBQUF1N0UsR0FDb0Jyc0YsS0FBS3dXLE1BQXhCbzNFLEVBRER2
QixFQUNDdUIsTUFBT0YsRUFEUnJCLEVBQ1FxQixRQUNQNWEsRUFBVzl5RSxLQUFLNnRDLE1BQWhC
aWxDLE9BRUYrYSxFQUFnQkQsRUFBTTlhLE9BQU91YSxFQUFhdmEsSUFDMUN3WixFQUFpQnNCLEVB
QU01d0MsT0FBTyxTQUFDM25DLEVBQU9pNEUsR0FBUixNQUNsQ0EsR0FBS0MsVUFBWWw0RSxFQUFR
LEVBQUlBLEdBQzdCLEVBR0YsT0FDRTQ4QixHQUFBanJCLFFBQUF0Z0IsY0FBQSxXQUFTdXNDLFVB
QVUsUUFDaEJqekMsS0FBSzh0RixnQkFBZ0J4QixHQUN0QnI2QyxFQUFBanJCLFFBQUF0Z0IsY0FB
QSxNQUFJdXNDLFVBQVUsYUFDWDQ2QyxFQUFjeHJGLElBQUksU0FBQWlyRixHQUFBLE1BQ2pCcjdD
LEdBQUFqckIsUUFBQXRnQixjQUFBd21GLEVBQUFsbUUsUUFBQXltQixHQUFVbHFDLElBQUsrcEYs
RUFBS3Z1RixHQUFJdXVGLEtBQU1BLEdBQVVJLE9BRzNDMXRGLEtBQUsrdEYsYUFBYXpCLFF2TWtw
c0JqQmtCLEdBQ1A5OUMsRUFBT2w2QixVdU1qdHNCV2c0RSxHQUNaejlELFdBQ0w2OUQsTUFBT2wr
QyxFQUFBLzVCLFVBQVV5L0IsTUFBTTdELFdBQ3ZCbThDLFFBQVNoK0MsRUFBQS81QixVQUFVNkIs
T0FBTys1QixZdk1vdHNCN0IxeUMsRUFBUW1vQixRdU12dHNCWXdtRSxHdk0ydHNCZixTQUFTMXVG
LEVBQVFELEVBQVNILEdBRS9CLFlBb0JBLFNBQVNtb0IsR0FBdUJDLEdBQU8sTUFBT0EsSUFBT0Es
RUFBSUMsV0FBYUQsR0FBUUUsUUFBU0YsR0FFdkYsUUFBUzZULEdBQWdCQyxFQUFVQyxHQUFlLEtB
QU1ELFlBQW9CQyxJQUFnQixLQUFNLElBQUlqNUIsV0FBVSxxQ0FFaEgsUUFBUzRvQyxHQUEyQmww
QixFQUFNclgsR0FBUSxJQUFLcVgsRUFBUSxLQUFNLElBQUltMEIsZ0JBQWUsNERBQWdFLFFBQU94
ckMsR0FBeUIsZ0JBQVRBLElBQXFDLGtCQUFUQSxHQUE4QnFYLEVBQVByWCxFQUVsTyxRQUFTeXJD
LEdBQVVDLEVBQVVDLEdBQWMsR0FBMEIsa0JBQWZBLElBQTRDLE9BQWZBLEVBQXVCLEtBQU0sSUFB
SWhwQyxXQUFVLGlFQUFvRWdwQyxHQUFlRCxHQUFTcHJDLFVBQVlELE9BQU82K0IsT0FBT3lNLEdB
QWNBLEVBQVdyckMsV0FBYXVOLGFBQWVnRSxNQUFPNjVCLEVBQVV2RCxZQUFZLEVBQU95RCxVQUFV
LEVBQU14RCxjQUFjLEtBQWV1RCxJQUFZdHJDLE9BQU93ckMsZUFBaUJ4ckMsT0FBT3dyQyxlQUFl
SCxFQUFVQyxHQUFjRCxFQUFTSSxVQUFZSCxHQXhCamV0ckMsT0FBTzZuQyxlQUFldG9DLEVBQVMs
Y0FDN0JpUyxPQUFPLEdBR1QsSUFBSStnQyxHQUFlLFdBQWMsUUFBU0MsR0FBaUI3dUMsRUFBUXVU
LEdBQVMsSUFBSyxHQUFJblgsR0FBSSxFQUFHQSxFQUFJbVgsRUFBTWxWLE9BQVFqQyxJQUFLLENB
QUUsR0FBSTJuQyxHQUFheHdCLEVBQU1uWCxFQUFJMm5DLEdBQVdJLFdBQWFKLEVBQVdJLGFBQWMs
RUFBT0osRUFBV0ssY0FBZSxFQUFVLFNBQVdMLEtBQVlBLEVBQVc2RCxVQUFXLEdBQU12ckMsT0FB
TzZuQyxlQUFlbGtDLEVBQVErakMsRUFBV3pqQyxJQUFLeWpDLElBQWlCLE1BQU8sVUFBVW5NLEVB
QWFrWCxFQUFZQyxHQUFpSixNQUE5SEQsSUFBWUQsRUFBaUJqWCxFQUFZdDdCLFVBQVd3eUMsR0FB
aUJDLEdBQWFGLEVBQWlCalgsRUFBYW1YLEdBQXFCblgsTXdNOXVzQmppQjZVLEVBQUFoeEMsRUFB
QSxJeE1rdnNCS3V6QyxFQUFVcHJCLEVBQXVCNm9CLEd3TWp2c0J0Q3dDLEVBQUF4ekMsRUFBQSxJ
eE1xdnNCS3l6QyxFQUFldHJCLEVBQXVCcXJCLEd3TXB2c0IzQzA2QyxFQUFBbHVGLEVBQUEsSXhN
d3ZzQkttdUYsRUFBa0JobUUsRUFBdUIrbEUsR3dNdHZzQnpCb0IsRXhNZ3dzQkwsU0FBVXJnRCxH
QUd2QixRQUFTcWdELEtBQ1AsR0FBSWxpRCxHQUVBdUcsRUFBT3pFLEVBQU8wRSxDQUVsQjNYLEdB
QWdCMzZCLEtBQU1ndUYsRUFFdEIsS0FBSyxHQUFJejdDLEdBQU9seEMsVUFBVUMsT0FBUTVCLEVB
QU9vWCxNQUFNeTdCLEdBQU9DLEVBQU8sRUFBR0EsRUFBT0QsRUFBTUMsSUFDM0U5eUMsRUFBSzh5
QyxHQUFRbnhDLFVBQVVteEMsRUFHekIsT0FBZUgsR0FBU3pFLEVBQVFwRCxFQUEyQnhxQyxNQUFP
OHJDLEVBQU9raUQsRUFBU2pqRCxXQUFhenJDLE9BQU9tekMsZUFBZXU3QyxJQUFXL3VGLEtBQUtj
LE1BQU0rckMsR0FBTzlyQyxNQUFNQyxPQUFPUCxLQUFpQmt1QyxFd010d3NCbkxDLE9BQ0VzRixT
QUFTLEd4TXV3c0JMdkYsRXdNcHdzQk5xZ0Qsa0JBQW9CLFdBQ2xCcmdELEVBQUt5QixVQUFXOEQs
U0FBUyxLeE1xd3NCckJ2RixFd01sd3NCTm0vQyxXQUFhLFNBQUNodUYsRUFBSW9RLEdBQ0ksSUFB
aEJBLEVBQUs3TixPQUNQc3NDLEVBQUtwM0IsTUFBTTgwRSxXQUFXdnNGLEdBRXRCNnVDLEVBQUtw
M0IsTUFBTTYwRSxTQUFTdHNGLEVBQUlvUSxHQUUxQnkrQixFQUFLeUIsVUFBVzhELFNBQVMsS3hN
d3ZzQmpCYixFQVdKRCxFQUFRN0gsRUFBMkJvRCxFQUFPMEUsR0FzRC9DLE1BOUVBNUgsR0FBVXNq
RCxFQUFVcmdELEdBMkJwQmtFLEVBQWFtOEMsSUFDWHpxRixJQUFLLFNBQ0x1TixNQUFPLFd3TXJ3
c0JELEdBQUEwN0UsR0FBQXhzRixLQUFBaXNGLEVBQ29DanNGLEtBQUt3VyxNQUF4QzgyRSxFQURE
ckIsRUFDQ3FCLEtBQU1sQyxFQURQYSxFQUNPYixhQUFjRSxFQURyQlcsRUFDcUJYLFdBRXhCNzBF
LFFBdUJKLE9BckJFQSxHQURFelcsS0FBSzZ0QyxNQUFNc0YsUUFFWGxCLEVBQUFqckIsUUFBQXRn
QixjQUFBbW1GLEVBQUE3bEUsU0FBZTdYLEtBQU1tK0UsRUFBS24rRSxLQUNYZ2tDLFFBQVNuekMs
S0FBSzZ0QyxNQUFNc0YsUUFDcEJOLE9BQVEsU0FBQzFqQyxHQUFELE1BQVVxOUUsR0FBS08sV0FB
V08sRUFBS3Z1RixHQUFJb1EsTUFJMUQ4aUMsRUFBQWpyQixRQUFBdGdCLGNBQUEsT0FBS3VzQyxV
QUFVLFFBQ2JoQixFQUFBanJCLFFBQUF0Z0IsY0FBQSxTQUFPdXNDLFVBQVUsU0FDVnRwQyxLQUFL
LFdBQ0wwbEIsUUFBU2krRCxFQUFLQyxVQUNkcCtELFNBQVUsaUJBQU1pOEQsR0FBYWtDLEVBQUt2
dUYsT0FDekNrekMsRUFBQWpyQixRQUFBdGdCLGNBQUEsU0FBT3duRixjQUFlbHVGLEtBQUtpdUYs
bUJBQ3hCWCxFQUFLbitFLE1BRVI4aUMsRUFBQWpyQixRQUFBdGdCLGNBQUEsVUFBUXVzQyxVQUFV
LFVBQ1ZtNUMsUUFBUyxpQkFBTWQsR0FBV2dDLEVBQUt2dUYsUUFNM0NrekMsRUFBQWpyQixRQUFB
dGdCLGNBQUEsTUFBSXVzQyxXQUFXLEVBQUFkLEVBQUFuckIsVUFDYnVtRSxVQUFXRCxFQUFLQyxV
QUNoQnA2QyxRQUFTbnpDLEtBQUs2dEMsTUFBTXNGLFdBRW5CMThCLE94TXV4c0JDdTNFLEdBQ1B0
K0MsRUFBT2w2QixVd01oMXNCV3c0RSxHQUNaaitELFdBQ0x1OUQsS0FBTTU5QyxFQUFBLzVCLFVB
QVU2QixPQUFPKzVCLFdBQ3ZCODVDLFNBQVUzN0MsRUFBQS81QixVQUFVdWEsS0FBS3FoQixXQUN6
Qis1QyxXQUFZNTdDLEVBQUEvNUIsVUFBVXVhLEtBQUtxaEIsV0FDM0I2NUMsYUFBYzE3QyxFQUFB
LzVCLFVBQVV1YSxLQUFLcWhCLFl4TW0xc0JoQzF5QyxFQUFRbW9CLFF3TXgxc0JZZ25FLEd4TTQx
c0JmLFNBQVNsdkYsRUFBUUQsRUFBU0gsR0FFL0IsWUEwQkEsU0FBU3NzRixHQUF3QmxrRSxHQUFP
LEdBQUlBLEdBQU9BLEVBQUlDLFdBQWMsTUFBT0QsRUFBYyxJQUFJbWtFLEtBQWEsSUFBVyxNQUFQ
bmtFLEVBQWUsSUFBSyxHQUFJdmpCLEtBQU91akIsR0FBV3huQixPQUFPQyxVQUFVQyxlQUFlUCxL
QUFLNm5CLEVBQUt2akIsS0FBTTBuRixFQUFPMW5GLEdBQU91akIsRUFBSXZqQixHQUFnQyxPQUF0
QjBuRixHQUFPamtFLFFBQVVGLEVBQVlta0UsRUFFbFEsUUFBU3BrRSxHQUF1QkMsR0FBTyxNQUFP
QSxJQUFPQSxFQUFJQyxXQUFhRCxHQUFRRSxRQUFTRixHQTFCdkZ4bkIsT0FBTzZuQyxlQUFldG9D
LEVBQVMsY0FDN0JpUyxPQUFPLEd5TXIyc0JWLElBQUE0K0IsR0FBQWh4QyxFQUFBLEl6TTAyc0JL
dXpDLEVBQVVwckIsRUFBdUI2b0IsR3lNejJzQnRDeTNDLEVBQUF6b0YsRUFBQSxJQUNBeXZGLEVB
QUF6dkYsRUFBQSxJQUNBMHZGLEVBQUExdkYsRUFBQSxLek0rMnNCSzJ2RixFQUFXeG5FLEVBQXVC
dW5FLEd5TTkyc0J2Q0UsRUFBQTV2RixFQUFBLEt6TWszc0JLNnZGLEVBQWdCMW5FLEVBQXVCeW5F
LEd5TWozc0I1Q0UsRUFBQTl2RixFQUFBLEtBQVkrdkYsRXpNcTNzQk96RCxFQUF3QndELEd5TW4z
c0JyQ0UsRUFBTSxTQUFBNWlELEdBQUEsR0FBRThoRCxHQUFGOWhELEVBQUU4aEQsTUFBT0YsRUFB
VDVoRCxFQUFTNGhELE9BQVQsT0FDVno3QyxHQUFBanJCLFFBQUF0Z0IsY0FBQSxXQUNFdXJDLEVB
QUFqckIsUUFBQXRnQixjQUFBMm5GLEVBQUFybkUsU0FBUXVrRSxRQUFTbUMsRUFBUW5DLFVBQ3pC
dDVDLEVBQUFqckIsUUFBQXRnQixjQUFBNm5GLEVBQUF2bkUsU0FBYTRtRSxNQUFPQSxFQUFPRixR
QUFTQSxLQUl4Q2dCLEdBQUkzK0QsV0FDRjY5RCxNQUFPbCtDLEVBQUEvNUIsVUFBVXkvQixNQUFN
N0QsV0FDdkJtOEMsUUFBU2grQyxFQUFBLzVCLFVBQVU2QixPQUFPKzVCLFdBRzVCLElBQU1pMEMs
R0FBa0IsU0FBQTMzQyxHQUFBLE9BQ3RCKy9DLE1BQU8vL0MsRUFBTSsvQyxRQUdUbkksRUFBcUIs
U0FBQTEyQyxHQUFBLE9BQ3ZCMitDLFNBQVMsRUFBQXZHLEVBQUFoZ0Usb0JBQW1Cc25FLEVBQWEx
L0MsSXpNbzRzQjVDbHdDLEdBQVFtb0IsU3lNajRzQk0sRUFBQW1uRSxFQUFBeDlDLFNBQ2I2MEMs
RUFDQUMsR0FDQWlKLEl6TWs0c0JJLFNBQVM1dkYsRUFBUUQsRUFBU0gsR0FFL0IsWUFzQkEsU0FB
U21vQixHQUF1QkMsR0FBTyxNQUFPQSxJQUFPQSxFQUFJQyxXQUFhRCxHQUFRRSxRQUFTRixHME14
N3NCeEYsR0FBQTRvQixHQUFBaHhDLEVBQUEsSTFNczZzQkt1ekMsRUFBVXByQixFQUF1QjZvQixH
ME1yNnNCdENpL0MsRUFBQWp3RixFQUFBLEtBQ0F5b0YsRUFBQXpvRixFQUFBLElBQ0F5dkYsRUFB
QXp2RixFQUFBLElBQ0Frd0YsRUFBQWx3RixFQUFBLEsxTTQ2c0JLbXdGLEVBQVFob0UsRUFBdUIr
bkUsRzBNMzZzQnBDRSxFQUFBcHdGLEVBQUEsSzFNKzZzQktxd0YsRUFBYWxvRSxFQUF1QmlvRSxF
ME05NnNCekNwd0YsR0FBQSxJQUVBLElBQU0wc0MsSUFBUSxFQUFBKzdDLEVBQUE5L0QsYUFBQTBu
RSxFQUFBL25FLFVBRWQsRUFBQTJuRSxFQUFBbHJELFFBQ0V3TyxFQUFBanJCLFFBQUF0Z0IsY0FB
QXluRixFQUFBdDlDLFVBQVV6RixNQUFPQSxHQUNmNkcsRUFBQWpyQixRQUFBdGdCLGNBQUFtb0Ys
RUFBQTduRSxRQUFBLE9BRUZ2Z0IsU0FBU3VvRixlQUFlLFUxTXM3c0JwQixTQUFTbHdGLEVBQVFE
LEVBQVNILEdBRS9CLFlBWUEsU0FBU21vQixHQUF1QkMsR0FBTyxNQUFPQSxJQUFPQSxFQUFJQyxX
QUFhRCxHQUFRRSxRQUFTRixHQVZ2RnhuQixPQUFPNm5DLGVBQWV0b0MsRUFBUyxjQUM3QmlTLE9B
QU8sRzJNejhzQlYsSUFBQXEyRSxHQUFBem9GLEVBQUEsSUFDQXV3RixFQUFBdndGLEVBQUEsSzNN
KzhzQkt3d0YsRUFBVXJvRSxFQUF1Qm9vRSxHMk03OHNCaENFLEdBQWMsRUFBQWhJLEVBQUEvL0Qs
a0JBQ2xCd21FLGlCM01vOXNCRC91RixHQUFRbW9CLFEyTWo5c0JNbW9FLEczTXE5c0JULFNBQVNy
d0YsRUFBUUQsRUFBU0gsR0FFL0IsWUFjQSxTQUFTMHdGLEdBQW1CcnBELEdBQU8sR0FBSWp2QixN
QUFNd1IsUUFBUXlkLEdBQU0sQ0FBRSxJQUFLLEdBQUkxbUMsR0FBSSxFQUFHZ3dGLEVBQU92NEUs
TUFBTWl2QixFQUFJemtDLFFBQVNqQyxFQUFJMG1DLEVBQUl6a0MsT0FBUWpDLElBQU9nd0YsRUFB
S2h3RixHQUFLMG1DLEVBQUkxbUMsRUFBTSxPQUFPZ3dGLEdBQWUsTUFBT3Y0RSxPQUFNM1QsS0FB
SzRpQyxHNE14K3NCNUssUUFBUzZuRCxLQUFvQyxHQUE5Qi8vQyxHQUE4QnhzQyxVQUFBQyxRQUFB
LEdBQUFaLFNBQUFXLFVBQUEsR0FBdEJpL0MsRUFBc0JqL0MsVUFBQSxHQUFSbThDLEVBQVFuOEMs
VUFBQSxHQUFBaXhDLEVBQUEsV0FDMUQsT0FBUWtMLEVBQU83ekMsTUFDYixJQUFBNmhGLEdBQUE5
M0MsU0FDRSxPQUFBNDdDLEtBQUFydkYsT0FBQW12RixFQUNLdmhELEtBRUQ5dUMsR0FBSTh1QyxF
QUFNbVAsT0FBTyxTQUFDdXlDLEVBQU9qQyxHQUFSLE1BQWlCbm5GLE1BQUs0d0QsSUFBSXUyQixF
QUFLdnVGLEdBQUl3d0YsUUFBYyxFQUNsRWhDLFdBQVcsRUFDWHArRSxLQUFNcXVDLEVBQU9ydUMs
UUFJbkIsS0FBQXE4RSxHQUFBNzNDLFlBQ0UsT0FBQTI3QyxFQUFPemhELEVBQU1pbEMsT0FBTyxT
QUFBd2EsR0FBQSxNQUNsQkEsR0FBS3Z1RixLQUFPeStDLEVBQU96K0MsS0FHdkIsS0FBQXlzRixH
QUFBNTNDLFVBQ0UsT0FBQTA3QyxFQUFPemhELEVBQU14ckMsSUFBSSxTQUFBaXJGLEdBQUEsTUFD
ZkEsR0FBS3Z1RixLQUFPeStDLEVBQU96K0MsR0FBbkIwdUMsS0FDTzYvQyxHQUFNbitFLEtBQU1x
dUMsRUFBT3J1QyxPQUN4Qm0rRSxJQUdOLEtBQUE5QixHQUFBMzNDLGNBQ0UsT0FBQXk3QyxFQUFP
emhELEVBQU14ckMsSUFBSSxTQUFBaXJGLEdBQUEsTUFDZkEsR0FBS3Z1RixLQUFPeStDLEVBQU96
K0MsR0FBbkIwdUMsS0FDTzYvQyxHQUFNQyxXQUFZRCxFQUFLQyxZQUM1QkQsSUFHTixLQUFBOUIs
R0FBQTEzQyxhQUNFLEdBQU0wN0MsR0FBZTNoRCxFQUFNaWMsTUFBTSxTQUFBd2pDLEdBQUEsTUFB
UUEsR0FBS0MsV0FDOUMsUUFBQStCLEVBQU96aEQsRUFBTXhyQyxJQUFJLFNBQUFpckYsR0FBQSxN
QUFBNy9DLE1BQ1o2L0MsR0FDSEMsV0FBWWlDLE1BR2hCLEtBQUFoRSxHQUFBejNDLGdCQUNFLE9B
QUF1N0MsRUFBT3poRCxFQUFNaWxDLE9BQU8sU0FBQXdhLEdBQUEsTUFBUUEsR0FBS0MsYUFBYyxJ
QUVqRCxTQUNFLE9BQUErQixFQUFPemhELE1BMUMrQyxtQ0FBQXlFLEdBQUEsWUFBQW05QyxFQUFB
bjlDLElBQUEsTUFBQUEsR0FBQWc5QyxFNU00OXNCM0Rod0YsT0FBTzZuQyxlQUFldG9DLEVBQVMs
Y0FDN0JpUyxPQUFPLEdBR1QsSUFBSTIrRSxHQUE0QixrQkFBWHQ2RCxTQUFvRCxnQkFBcEJBLFFB
QU82VSxTQUF3QixTQUFVbGpCLEdBQU8sYUFBY0EsSUFBUyxTQUFVQSxHQUFPLE1BQU9BLElBQXlC
LGtCQUFYcU8sU0FBeUJyTyxFQUFJaGEsY0FBZ0Jxb0IsT0FBUyxlQUFrQnJPLElBRXRPMm1CLEVB
QVdudUMsT0FBT3dDLFFBQVUsU0FBVW1CLEdBQVUsSUFBSyxHQUFJNUQsR0FBSSxFQUFHQSxFQUFJ
Z0MsVUFBVUMsT0FBUWpDLElBQUssQ0FBRSxHQUFJNkQsR0FBUzdCLFVBQVVoQyxFQUFJLEtBQUss
R0FBSWtFLEtBQU9MLEdBQWM1RCxPQUFPQyxVQUFVQyxlQUFlUCxLQUFLaUUsRUFBUUssS0FBUU4s
RUFBT00sR0FBT0wsRUFBT0ssSUFBWSxNQUFPTixHQUV2UHBFLEdBQVFtb0IsUTRNcCtzQmU0bUUs
Q0FKeEIsSUFBQXBDLEdBQUE5c0YsRUFBQSxJQUVNNGhELE01TW1qdEJBLFNBQVN4aEQsRUFBUUQs
S0FNakIsU0FBU0MsRUFBUUQsRzZNM2p0QnZCLFlBS0EsU0FBQTZDLEdBQUFDLEdBQ0EsVUFBQUEs
R0FBQWpCLFNBQUFpQixFQUNBLFNBQUFDLFdBQUEsd0RBR0EsT0FBQXRDLFFBQUFxQyxHQUdBLFFB
QUFFLEtBQ0EsSUFDQSxJQUFBdkMsT0FBQXdDLE9BQ0EsUUFNQSxJQUFBQyxHQUFBLEdBQUFDLFFB
QUEsTUFFQSxJQURBRCxFQUFBLFFBQ0EsTUFBQXpDLE9BQUEyQyxvQkFBQUYsR0FBQSxHQUNBLFFB
S0EsUUFEQUcsTUFDQTdDLEVBQUEsRUFBaUJBLEVBQUEsR0FBUUEsSUFDekI2QyxFQUFBLElBQUFG
LE9BQUFHLGFBQUE5QyxLQUVBLElBQUErQyxHQUFBOUMsT0FBQTJDLG9CQUFBQyxHQUFBRyxJQUFB
LFNBQUFDLEdBQ0EsTUFBQUosR0FBQUksSUFFQSxtQkFBQUYsRUFBQUcsS0FBQSxJQUNBLFFBSUEs
SUFBQUMsS0FJQSxPQUhBLHVCQUFBQyxNQUFBLElBQUFDLFFBQUEsU0FBQUMsR0FDQUgsRUFBQUcs
T0FHQSx5QkFEQXJELE9BQUFzRCxLQUFBdEQsT0FBQXdDLFVBQWtDVSxJQUFBRCxLQUFBLElBTWhD
LE1BQUFqQyxHQUVGLFVBbkRBLEdBQUFkLEdBQUFGLE9BQUFDLFVBQUFDLGVBQ0F1RCxFQUFBekQs
T0FBQUMsVUFBQXlELG9CQXNEQWxFLEdBQUFELFFBQUFnRCxJQUFBdkMsT0FBQXdDLE9BQUEsU0FB
QW1CLEVBQUFDLEdBS0EsT0FKQUMsR0FFQUMsRUFEQUMsRUFBQTNCLEVBQUF1QixHQUdBSyxFQUFB
LEVBQWdCQSxFQUFBakMsVUFBQUMsT0FBc0JnQyxJQUFBLENBQ3RDSCxFQUFBN0QsT0FBQStCLFVB
QUFpQyxHQUVBLFFBQUFDLEtBQUFKLEdBQ0EzRCxFQUFBUCxLQUFBa0UsRUFBQUksS0FDQUYsRUFB
QUUsR0FBQUosRUFBQUksR0FJQSxJQUFBakUsT0FBQXdELHNCQUFBLENBQ0FNLEVBQUE5RCxPQUFB
d0Qsc0JBQUFLLEVBQ0EsUUFBQTlELEdBQUEsRUFBa0JBLEVBQUErRCxFQUFBOUIsT0FBb0JqQyxJ
QUN0QzBELEVBQUE5RCxLQUFBa0UsRUFBQUMsRUFBQS9ELE1BQ0FnRSxFQUFBRCxFQUFBL0QsSUFB
QThELEVBQUFDLEVBQUEvRCxNQU1BLE1BQUFnRSxLN01ta3RCTSxTQUFTdkUsRUFBUUQsRUFBU0gs
RzhNcHB0QmhDLFlBaUJBLFNBQUFneEYsR0FBQTUrRSxHQUNBLEdBQUExUixHQUFBLEdBQUEyM0Ms
S0FBQW9CLElBR0EsT0FGQS80QyxHQUFBNjNDLElBQUEsRUFDQTczQyxFQUFBODNDLElBQUFwbUMs
RUFDQTFSLEVBakJBLEdBQUEyM0MsR0FBQXI0QyxFQUFBLEdBRUFJLEdBQUFELFFBQUFrNEMsQ0FJ
QSxJQUFBNDRDLEdBQUFELEdBQUEsR0FDQUUsRUFBQUYsR0FBQSxHQUNBRyxFQUFBSCxFQUFBLE1B
Q0FJLEVBQUFKLEVBQUFodkYsUUFDQXF2RixFQUFBTCxFQUFBLEdBQ0FNLEVBQUFOLEVBQUEsR0FR
QTM0QyxHQUFBUyxRQUFBLFNBQUExbUMsR0FDQSxHQUFBQSxZQUFBaW1DLEdBQUEsTUFBQWptQyxF
QUVBLFdBQUFBLEVBQUEsTUFBQSsrRSxFQUNBLElBQUFudkYsU0FBQW9RLEVBQUEsTUFBQWcvRSxF
QUNBLElBQUFoL0UsS0FBQSxRQUFBNitFLEVBQ0EsSUFBQTcrRSxLQUFBLFFBQUE4K0UsRUFDQSxR
QUFBOStFLEVBQUEsTUFBQWkvRSxFQUNBLFNBQUFqL0UsRUFBQSxNQUFBay9FLEVBRUEsb0JBQUFs
L0UsSUFBQSxrQkFBQUEsR0FDQSxJQUNBLEdBQUEybEMsR0FBQTNsQyxFQUFBMmxDLElBQ0Esc0JB
QUFBLEdBQ0EsVUFBQU0sR0FBQU4sRUFBQXgvQixLQUFBbkcsSUFFSyxNQUFBNGxDLEdBQ0wsVUFB
QUssR0FBQSxTQUFBUyxFQUFBQyxHQUNBQSxFQUFBZixLQUlBLE1BQUFnNUMsR0FBQTUrRSxJQUdB
aW1DLEVBQUFrNUMsSUFBQSxTQUFBbHFELEdBQ0EsR0FBQXJtQyxHQUFBb1gsTUFBQXZYLFVBQUFJ
LE1BQUFWLEtBQUE4bUMsRUFFQSxXQUFBZ1IsR0FBQSxTQUFBUyxFQUFBQyxHQUdBLFFBQUFscUIs
R0FBQWx1QixFQUFBc0MsR0FDQSxHQUFBQSxJQUFBLGdCQUFBQSxJQUFBLGtCQUFBQSxJQUFBLENB
Q0EsR0FBQUEsWUFBQW8xQyxJQUFBcDFDLEVBQUE4MEMsT0FBQU0sRUFBQXgzQyxVQUFBazNDLEtB
QUEsQ0FDQSxTQUFBOTBDLEVBQUFzMUMsS0FDQXQxQyxJQUFBdTFDLEdBRUEsWUFBQXYxQyxFQUFB
czFDLElBQUExcEIsRUFBQWx1QixFQUFBc0MsRUFBQXUxQyxNQUNBLElBQUF2MUMsRUFBQXMxQyxL
QUFBUSxFQUFBOTFDLEVBQUF1MUMsU0FDQXYxQyxHQUFBODBDLEtBQUEsU0FBQTkwQyxHQUNBNHJC
LEVBQUFsdUIsRUFBQXNDLElBQ1c4MUMsSUFHWCxHQUFBaEIsR0FBQTkwQyxFQUFBODBDLElBQ0Es
c0JBQUFBLEdBQUEsQ0FDQSxHQUFBcjNDLEdBQUEsR0FBQTIzQyxHQUFBTixFQUFBeC9CLEtBQUF0
VixHQUlBLFlBSEF2QyxHQUFBcTNDLEtBQUEsU0FBQTkwQyxHQUNBNHJCLEVBQUFsdUIsRUFBQXND
LElBQ2E4MUMsSUFLYi8zQyxFQUFBTCxHQUFBc0MsRUFDQSxNQUFBdXVGLEdBQ0ExNEMsRUFBQTkz
QyxHQTNCQSxPQUFBQSxFQUFBNEIsT0FBQSxNQUFBazJDLE1BOEJBLFFBN0JBMDRDLEdBQUF4d0Ys
RUFBQTRCLE9BNkJBakMsRUFBQSxFQUFtQkEsRUFBQUssRUFBQTRCLE9BQWlCakMsSUFDcENrdUIs
RUFBQWx1QixFQUFBSyxFQUFBTCxPQUtBMDNDLEVBQUFVLE9BQUEsU0FBQTNtQyxHQUNBLFVBQUFp
bUMsR0FBQSxTQUFBUyxFQUFBQyxHQUNBQSxFQUFBM21DLE1BSUFpbUMsRUFBQW81QyxLQUFBLFNB
QUF0cEMsR0FDQSxVQUFBOVAsR0FBQSxTQUFBUyxFQUFBQyxHQUNBb1AsRUFBQW5rRCxRQUFBLFNB
QUFvTyxHQUNBaW1DLEVBQUFTLFFBQUExbUMsR0FBQTJsQyxLQUFBZSxFQUFBQyxRQU9BVixFQUFB
eDNDLFVBQUEsZUFBQWc0QyxHQUNBLE1BQUF2M0MsTUFBQXkyQyxLQUFBLEtBQUFjLEs5TTRwdEJN
LFNBQVN6NEMsRUFBUUQsRUFBU0gsRytNcnd0QmhDLFlBWUEsU0FBQTB4RixLQUNBcnVFLEdBQUEs
RUFDQWcxQixFQUFBYSxJQUFBLEtBQ0FiLEVBQUFrQixJQUFBLEtBSUEsUUFBQXd4QyxHQUFBdnNE
LEdBd0NBLFFBQUFtekQsR0FBQXR4RixJQUVBbStCLEVBQUFvekQsZUFDQUMsRUFDQUMsRUFBQXp4
RixHQUFBMEIsTUFDQXk4QixFQUFBdXpELFdBQUFDLE1BR0FGLEVBQUF6eEYsR0FBQTR4RixjQUNB
enpELEVBQUFtekQsYUFDQUcsRUFBQXp4RixHQUFBNnhGLFFBQUEsRUFDQTF6RCxFQUFBbXpELFlB
Q0FHLEVBQUF6eEYsR0FBQTR4RixVQUNBSCxFQUFBenhGLEdBQUEwQixTQUdBK3ZGLEVBQUF6eEYs
R0FBQTZ4RixRQUFBLEVBQ0FDLEVBQ0FMLEVBQUF6eEYsR0FBQTR4RixVQUNBSCxFQUFBenhGLEdB
QUEwQixTQUtBLFFBQUFxd0YsR0FBQS94RixHQUNBeXhGLEVBQUF6eEYsR0FBQTZ4RixTQUNBMXpE
LEVBQUE0ekQsVUFDQTV6RCxFQUFBNHpELFVBQUFOLEVBQUF6eEYsR0FBQTR4RixVQUFBSCxFQUFB
enhGLEdBQUEwQixPQUNPK3ZGLEVBQUF6eEYsR0FBQXN4RixjQUNQdm1GLFFBQUFpbkYsS0FDQSxr
Q0FBQVAsRUFBQXp4RixHQUFBNHhGLFVBQUEsTUFFQTdtRixRQUFBaW5GLEtBQ0EsZ0hBQ0FQLEVB
QUF6eEYsR0FBQTR4RixVQUFBLE9BekVBenpELFFBQ0FuYixHQUFBcXVFLElBQ0FydUUsR0FBQSxD
QUNBLElBQUFoakIsR0FBQSxFQUNBNHhGLEVBQUEsRUFDQUgsSUFDQXo1QyxHQUFBYSxJQUFBLFNB
QUFFLEdBRUEsSUFBQUEsRUFBQWIsS0FDQXU1QyxFQUFBMTRDLEVBQUFrNUMsT0FFQVIsRUFBQTE0
QyxFQUFBazVDLEtBQUFKLE9BQ0FFLEVBQUFoNUMsRUFBQWs1QyxLQUVBcDhDLGFBQUE0N0MsRUFB
QTE0QyxFQUFBazVDLEtBQUE5N0MsZUFFQXM3QyxHQUFBMTRDLEVBQUFrNUMsT0FHQWo2QyxFQUFB
a0IsSUFBQSxTQUFBSCxFQUFBajFDLEdBQ0EsSUFBQWkxQyxFQUFBZCxNQUNBYyxFQUFBazVDLElB
QUFqeUYsSUFDQXl4RixFQUFBMTRDLEVBQUFrNUMsTUFDQUwsVUFBQSxLQUNBbHdGLE1BQUFvQyxF
QUNBcXlDLFFBQUFWLFdBQ0E2N0MsRUFBQXA1RSxLQUFBLEtBQUE2Z0MsRUFBQWs1QyxLQUtBVCxF
QUFBMXRGLEVBQUE2dEYsR0FDQSxJQUNBLEtBRUFFLFFBQUEsS0E2Q0EsUUFBQUMsR0FBQTl4RixF
QUFBMEIsR0FDQXFKLFFBQUFpbkYsS0FBQSw2Q0FBQWh5RixFQUFBLEtBQ0EsSUFBQWt5RixJQUFB
eHdGLE1BQUFpOEMsT0FBQWo4QyxJQUFBLEVBQ0F3d0YsR0FBQXh1RixNQUFBLE1BQUFDLFFBQUEs
U0FBQXd1RixHQUNBcG5GLFFBQUFpbkYsS0FBQSxLQUFBRyxLQUlBLFFBQUFYLEdBQUE5dkYsRUFB
QWcyRCxHQUNBLE1BQUFBLEdBQUEwNkIsS0FBQSxTQUFBQyxHQUNBLE1BQUEzd0YsYUFBQTJ3RixL
QTVHQSxHQUFBcjZDLEdBQUFyNEMsRUFBQSxJQUVBZ3lGLEdBQ0FqbUQsZUFDQTdvQyxVQUNBeXZG
LFlBR0F0dkUsR0FBQSxDQUNBbGpCLEdBQUF1eEYsVUFPQXZ4RixFQUFBNHFGLFUvTXkydEJNLFNB
QVMzcUYsRUFBUUQsR2dOMzN0QnZCQyxFQUFBRCxRQUFBLFNBQUFDLEdBUUEsTUFQQUEsR0FBQXd5
RixrQkFDQXh5RixFQUFBeXlGLFVBQUEsYUFDQXp5RixFQUFBMHlGLFNBRUExeUYsRUFBQStGLFlB
Q0EvRixFQUFBd3lGLGdCQUFBLEdBRUF4eUYsSWhObTR0Qk0sU0FBU0EsRUFBUUQsSWlOMzR0QnZC
LFNBQUF5WCxHQUNBLFlBcUJBLFNBQUFtN0UsR0FBQTN3RixHQUlBLEdBSEEsZ0JBQUFBLEtBQ0FB
LEVBQUFrQixPQUFBbEIsSUFFQSw2QkFBQTBQLEtBQUExUCxHQUNBLFNBQUFjLFdBQUEseUNBRUEs
T0FBQWQsR0FBQTRQLGNBR0EsUUFBQWdoRixHQUFBNWdGLEdBSUEsTUFIQSxnQkFBQUEsS0FDQUEs
RUFBQTlPLE9BQUE4TyxJQUVBQSxFQUlBLFFBQUE2Z0YsR0FBQUMsR0FDQSxHQUFBNW5ELElBQ0Fs
RSxLQUFBLFdBQ0EsR0FBQWgxQixHQUFBOGdGLEVBQUFDLE9BQ0EsUUFBZ0IxbkQsS0FBQXpwQyxT
QUFBb1EsWUFVaEIsT0FOQWdoRixHQUFBQyxXQUNBL25ELEVBQUE3VSxPQUFBNlUsVUFBQSxXQUNB
LE1BQUFBLEtBSUFBLEVBR0EsUUFBQWdvRCxHQUFBdDhCLEdBQ0ExMUQsS0FBQXFDLE9BRUFxekQs
WUFBQXM4QixHQUNBdDhCLEVBQUFoekQsUUFBQSxTQUFBb08sRUFBQWhRLEdBQ0FkLEtBQUFpeUYs
T0FBQW54RixFQUFBZ1EsSUFDTzlRLE1BRUYwMUQsR0FDTHAyRCxPQUFBMkMsb0JBQUF5ekQsR0FB
QWh6RCxRQUFBLFNBQUE1QixHQUNBZCxLQUFBaXlGLE9BQUFueEYsRUFBQTQwRCxFQUFBNTBELEtB
Q09kLE1Ba0VQLFFBQUFreUYsR0FBQWo5RCxHQUNBLE1BQUFBLEdBQUFrOUQsU0FDQXA3QyxRQUFB
VSxPQUFBLEdBQUE3MUMsV0FBQSxzQkFFQXF6QixFQUFBazlELFVBQUEsR0FHQSxRQUFBQyxHQUFB
QyxHQUNBLFVBQUF0N0MsU0FBQSxTQUFBUyxFQUFBQyxHQUNBNDZDLEVBQUFDLE9BQUEsV0FDQTk2
QyxFQUFBNjZDLEVBQUE3ckMsU0FFQTZyQyxFQUFBRSxRQUFBLFdBQ0E5NkMsRUFBQTQ2QyxFQUFB
NXhGLFVBS0EsUUFBQSt4RixHQUFBQyxHQUNBLEdBQUFKLEdBQUEsR0FBQUssV0FFQSxPQURBTCxH
QUFBTSxrQkFBQUYsR0FDQUwsRUFBQUMsR0FHQSxRQUFBTyxHQUFBSCxHQUNBLEdBQUFKLEdBQUEs
R0FBQUssV0FFQSxPQURBTCxHQUFBUSxXQUFBSixHQUNBTCxFQUFBQyxHQUdBLFFBQUFTLEtBb0ZB
LE1BbkZBOXlGLE1BQUFteUYsVUFBQSxFQUVBbnlGLEtBQUEreUYsVUFBQSxTQUFBOTlELEdBRUEs
R0FEQWoxQixLQUFBZ3pGLFVBQUEvOUQsRUFDQSxnQkFBQUEsR0FDQWoxQixLQUFBaXpGLFVBQUFo
K0QsTUFDTyxJQUFBNjhELEVBQUFXLE1BQUFTLEtBQUEzekYsVUFBQTR6RixjQUFBbCtELEdBQ1Bq
MUIsS0FBQW96RixVQUFBbitELE1BQ08sSUFBQTY4RCxFQUFBdUIsVUFBQUMsU0FBQS96RixVQUFB
NHpGLGNBQUFsK0QsR0FDUGoxQixLQUFBdXpGLGNBQUF0K0QsTUFDTyxJQUFBNjhELEVBQUEwQixj
QUFBQyxnQkFBQWwwRixVQUFBNHpGLGNBQUFsK0QsR0FDUGoxQixLQUFBaXpGLFVBQUFoK0QsRUFB
QTV1QixlQUNPLElBQUE0dUIsR0FFQSxJQUFBNjhELEVBQUE0QixjQUFBQyxZQUFBcDBGLFVBQUE0
ekYsY0FBQWwrRCxHQUlQLFNBQUF0MEIsT0FBQSxpQ0FMQVgsTUFBQWl6RixVQUFBLEVBUUFqekYs
TUFBQTAxRCxRQUFBMzVDLElBQUEsa0JBQ0EsZ0JBQUFrWixHQUNBajFCLEtBQUEwMUQsUUFBQXo1
QyxJQUFBLDJDQUNTamMsS0FBQW96RixXQUFBcHpGLEtBQUFvekYsVUFBQXpwRixLQUNUM0osS0FB
QTAxRCxRQUFBejVDLElBQUEsZUFBQWpjLEtBQUFvekYsVUFBQXpwRixNQUNTbW9GLEVBQUEwQixj
QUFBQyxnQkFBQWwwRixVQUFBNHpGLGNBQUFsK0QsSUFDVGoxQixLQUFBMDFELFFBQUF6NUMsSUFB
QSxvRUFLQTYxRSxFQUFBVyxNQUNBenlGLEtBQUF5eUYsS0FBQSxXQUNBLEdBQUFtQixHQUFBMUIs
RUFBQWx5RixLQUNBLElBQUE0ekYsRUFDQSxNQUFBQSxFQUdBLElBQUE1ekYsS0FBQW96RixVQUNB
LE1BQUFyOEMsU0FBQVMsUUFBQXgzQyxLQUFBb3pGLFVBQ1MsSUFBQXB6RixLQUFBdXpGLGNBQ1Qs
U0FBQTV5RixPQUFBLHVDQUVBLE9BQUFvMkMsU0FBQVMsUUFBQSxHQUFBMDdDLE9BQUFsekYsS0FB
QWl6RixjQUlBanpGLEtBQUEwekYsWUFBQSxXQUNBLE1BQUExekYsTUFBQXl5RixPQUFBaDhDLEtB
QUErN0MsSUFHQXh5RixLQUFBbVAsS0FBQSxXQUNBLEdBQUF5a0YsR0FBQTFCLEVBQUFseUYsS0FD
QSxJQUFBNHpGLEVBQ0EsTUFBQUEsRUFHQSxJQUFBNXpGLEtBQUFvekYsVUFDQSxNQUFBUixHQUFB
NXlGLEtBQUFvekYsVUFDUyxJQUFBcHpGLEtBQUF1ekYsY0FDVCxTQUFBNXlGLE9BQUEsdUNBRUEs
T0FBQW8yQyxTQUFBUyxRQUFBeDNDLEtBQUFpekYsYUFJQWp6RixLQUFBbVAsS0FBQSxXQUNBLEdB
QUF5a0YsR0FBQTFCLEVBQUFseUYsS0FDQSxPQUFBNHpGLEtBQUE3OEMsUUFBQVMsUUFBQXgzQyxL
QUFBaXpGLFlBSUFuQixFQUFBdUIsV0FDQXJ6RixLQUFBcXpGLFNBQUEsV0FDQSxNQUFBcnpGLE1B
QUFtUCxPQUFBc25DLEtBQUFvOUMsS0FJQTd6RixLQUFBOHpGLEtBQUEsV0FDQSxNQUFBOXpGLE1B
QUFtUCxPQUFBc25DLEtBQUFwSixLQUFBMG1ELFFBR0EvekYsS0FNQSxRQUFBZzBGLEdBQUFub0Ys
R0FDQSxHQUFBb29GLEdBQUFwb0YsRUFBQTJwQixhQUNBLE9BQUEwK0QsR0FBQXZvRSxRQUFBc29F
LFFBQUFwb0YsRUFHQSxRQUFBc29GLEdBQUFsMEQsRUFBQS9DLEdBQ0FBLE9BQ0EsSUFBQWpJLEdB
QUFpSSxFQUFBakksSUFDQSxJQUFBay9ELEVBQUE1MEYsVUFBQTR6RixjQUFBbHpELEdBQUEsQ0FD
QSxHQUFBQSxFQUFBa3lELFNBQ0EsU0FBQXZ3RixXQUFBLGVBRUE1QixNQUFBaXBDLElBQUFoSixF
QUFBZ0osSUFDQWpwQyxLQUFBbzBGLFlBQUFuMEQsRUFBQW0wRCxZQUNBbDNELEVBQUF3NEIsVUFD
QTExRCxLQUFBMDFELFFBQUEsR0FBQXM4QixHQUFBL3hELEVBQUF5MUIsVUFFQTExRCxLQUFBNkws
T0FBQW8wQixFQUFBcDBCLE9BQ0E3TCxLQUFBZzJFLEtBQUEvMUMsRUFBQSsxQyxLQUNBL2dELElB
Q0FBLEVBQUFnTCxFQUFBK3lELFVBQ0EveUQsRUFBQWt5RCxVQUFBLE9BR0FueUYsTUFBQWlwQyxJ
QUFBaEosQ0FXQSxJQVJBamdDLEtBQUFvMEYsWUFBQWwzRCxFQUFBazNELGFBQUFwMEYsS0FBQW8w
RixhQUFBLFFBQ0FsM0QsRUFBQXc0QixTQUFBMTFELEtBQUEwMUQsVUFDQTExRCxLQUFBMDFELFFB
QUEsR0FBQXM4QixHQUFBOTBELEVBQUF3NEIsVUFFQTExRCxLQUFBNkwsT0FBQW1vRixFQUFBOTJE
LEVBQUFyeEIsUUFBQTdMLEtBQUE2TCxRQUFBLE9BQ0E3TCxLQUFBZzJFLEtBQUE5NEMsRUFBQTg0
QyxNQUFBaDJFLEtBQUFnMkUsTUFBQSxLQUNBaDJFLEtBQUFxMEYsU0FBQSxNQUVBLFFBQUFyMEYs
S0FBQTZMLFFBQUEsU0FBQTdMLEtBQUE2TCxTQUFBb3BCLEVBQ0EsU0FBQXJ6QixXQUFBLDRDQUVB
NUIsTUFBQSt5RixVQUFBOTlELEdBT0EsUUFBQTQrRCxHQUFBNStELEdBQ0EsR0FBQWtnQyxHQUFB
LEdBQUFtK0IsU0FTQSxPQVJBcitELEdBQUEwZCxPQUFBbHdDLE1BQUEsS0FBQUMsUUFBQSxTQUFB
NHhGLEdBQ0EsR0FBQUEsRUFBQSxDQUNBLEdBQUE3eEYsR0FBQTZ4RixFQUFBN3hGLE1BQUEsS0FD
QTNCLEVBQUEyQixFQUFBb3ZGLFFBQUFoeEYsUUFBQSxXQUNBaVEsRUFBQXJPLEVBQUFGLEtBQUEs
S0FBQTFCLFFBQUEsVUFDQXMwRCxHQUFBODhCLE9BQUFzQyxtQkFBQXp6RixHQUFBeXpGLG1CQUFB
empGLE9BR0Fxa0QsRUFHQSxRQUFBTyxHQUFBOCtCLEdBQ0EsR0FBQUMsR0FBQSxHQUFBekMsR0FD
QTV4QyxHQUFBbzBDLEVBQUFFLHlCQUFBLElBQUEvaEQsT0FBQWx3QyxNQUFBLEtBT0EsT0FOQTI5
QyxHQUFBMTlDLFFBQUEsU0FBQWl5RixHQUNBLEdBQUFseUYsR0FBQWt5RixFQUFBaGlELE9BQUFs
d0MsTUFBQSxLQUNBYyxFQUFBZCxFQUFBb3ZGLFFBQUFsL0MsT0FDQTdoQyxFQUFBck8sRUFBQUYs
S0FBQSxLQUFBb3dDLE1BQ0E4aEQsR0FBQXhDLE9BQUExdUYsRUFBQXVOLEtBRUEyakYsRUFLQSxR
QUFBRyxHQUFBQyxFQUFBMzNELEdBQ0FBLElBQ0FBLE1BR0FsOUIsS0FBQTJKLEtBQUEsVUFDQTNK
LEtBQUE4MEYsT0FBQTUzRCxFQUFBNDNELE9BQ0E5MEYsS0FBQSswRixHQUFBLzBGLEtBQUE4MEYs
UUFBQSxLQUFBOTBGLEtBQUE4MEYsT0FBQSxJQUNBOTBGLEtBQUFnMUYsV0FBQTkzRCxFQUFBODNE
LFdBQ0FoMUYsS0FBQTAxRCxRQUFBeDRCLEVBQUF3NEIsa0JBQUFzOEIsR0FBQTkwRCxFQUFBdzRC
LFFBQUEsR0FBQXM4QixHQUFBOTBELEVBQUF3NEIsU0FDQTExRCxLQUFBaXBDLElBQUEvTCxFQUFB
K0wsS0FBQSxHQUNBanBDLEtBQUEreUYsVUFBQThCLEdBOVVBLElBQUF2K0UsRUFBQTIrRSxNQUFB
LENBSUEsR0FBQW5ELElBQ0EwQixhQUFBLG1CQUFBbDlFLEdBQ0F5N0UsU0FBQSxVQUFBejdFLElB
QUEsWUFBQTZlLFFBQ0FzOUQsS0FBQSxjQUFBbjhFLElBQUEsUUFBQUEsSUFBQSxXQUNBLElBRUEs
TUFEQSxJQUFBNDhFLE9BQ0EsRUFDTyxNQUFBNXlGLEdBQ1AsYUFHQSt5RixTQUFBLFlBQUEvOEUs
R0FDQW85RSxZQUFBLGVBQUFwOUUsR0FxREEwN0UsR0FBQXp5RixVQUFBMHlGLE9BQUEsU0FBQW54
RixFQUFBZ1EsR0FDQWhRLEVBQUEyd0YsRUFBQTN3RixHQUNBZ1EsRUFBQTRnRixFQUFBNWdGLEVB
Q0EsSUFBQTJsRCxHQUFBejJELEtBQUFxQyxJQUFBdkIsRUFDQTIxRCxLQUNBQSxLQUNBejJELEtB
QUFxQyxJQUFBdkIsR0FBQTIxRCxHQUVBQSxFQUFBaHhELEtBQUFxTCxJQUdBa2hGLEVBQUF6eUYs
VUFBQSxnQkFBQXVCLFNBQ0FkLE1BQUFxQyxJQUFBb3ZGLEVBQUEzd0YsS0FHQWt4RixFQUFBenlG
LFVBQUF3YyxJQUFBLFNBQUFqYixHQUNBLEdBQUErbEQsR0FBQTdtRCxLQUFBcUMsSUFBQW92RixF
QUFBM3dGLEdBQ0EsT0FBQStsRCxLQUFBLFNBR0FtckMsRUFBQXp5RixVQUFBMjFGLE9BQUEsU0FB
QXAwRixHQUNBLE1BQUFkLE1BQUFxQyxJQUFBb3ZGLEVBQUEzd0YsU0FHQWt4RixFQUFBenlGLFVB
QUF5YyxJQUFBLFNBQUFsYixHQUNBLE1BQUFkLE1BQUFxQyxJQUFBN0MsZUFBQWl5RixFQUFBM3dG
LEtBR0FreEYsRUFBQXp5RixVQUFBMGMsSUFBQSxTQUFBbmIsRUFBQWdRLEdBQ0E5USxLQUFBcUMs
SUFBQW92RixFQUFBM3dGLEtBQUE0d0YsRUFBQTVnRixLQUdBa2hGLEVBQUF6eUYsVUFBQW1ELFFB
QUEsU0FBQStGLEVBQUEwc0YsR0FDQTcxRixPQUFBMkMsb0JBQUFqQyxLQUFBcUMsS0FBQUssUUFB
QSxTQUFBNUIsR0FDQWQsS0FBQXFDLElBQUF2QixHQUFBNEIsUUFBQSxTQUFBb08sR0FDQXJJLEVB
QUF4SixLQUFBazJGLEVBQUFya0YsRUFBQWhRLEVBQUFkLE9BQ09BLE9BQ0ZBLE9BR0xneUYsRUFB
QXp5RixVQUFBcUQsS0FBQSxXQUNBLEdBQUFndkYsS0FFQSxPQURBNXhGLE1BQUEwQyxRQUFBLFNB
QUFvTyxFQUFBaFEsR0FBd0M4d0YsRUFBQW5zRixLQUFBM0UsS0FDeEM2d0YsRUFBQUMsSUFHQUks
RUFBQXp5RixVQUFBc25ELE9BQUEsV0FDQSxHQUFBK3FDLEtBRUEsT0FEQTV4RixNQUFBMEMsUUFB
QSxTQUFBb08sR0FBa0M4Z0YsRUFBQW5zRixLQUFBcUwsS0FDbEM2Z0YsRUFBQUMsSUFHQUksRUFB
QXp5RixVQUFBMHFDLFFBQUEsV0FDQSxHQUFBMm5ELEtBRUEsT0FEQTV4RixNQUFBMEMsUUFBQSxT
QUFBb08sRUFBQWhRLEdBQXdDOHdGLEVBQUFuc0YsTUFBQTNFLEVBQUFnUSxNQUN4QzZnRixFQUFB
QyxJQUdBRSxFQUFBQyxXQUNBQyxFQUFBenlGLFVBQUE0MUIsT0FBQTZVLFVBQUFnb0QsRUFBQXp5
RixVQUFBMHFDLFFBeUhBLElBQUFpcUQsSUFBQSw2Q0EyQ0FDLEdBQUE1MEYsVUFBQTYxRixNQUFB
LFdBQ0EsVUFBQWpCLEdBQUFuMEYsT0E0QkE4eUYsRUFBQTd6RixLQUFBazFGLEVBQUE1MEYsV0Fn
QkF1ekYsRUFBQTd6RixLQUFBMjFGLEVBQUFyMUYsV0FFQXExRixFQUFBcjFGLFVBQUE2MUYsTUFB
QSxXQUNBLFVBQUFSLEdBQUE1MEYsS0FBQWd6RixXQUNBOEIsT0FBQTkwRixLQUFBODBGLE9BQ0FF
LFdBQUFoMUYsS0FBQWcxRixXQUNBdC9CLFFBQUEsR0FBQXM4QixHQUFBaHlGLEtBQUEwMUQsU0FD
QXpzQixJQUFBanBDLEtBQUFpcEMsT0FJQTJyRCxFQUFBbjBGLE1BQUEsV0FDQSxHQUFBNDBGLEdB
QUEsR0FBQVQsR0FBQSxNQUF1Q0UsT0FBQSxFQUFBRSxXQUFBLElBRXZDLE9BREFLLEdBQUExckYs
S0FBQSxRQUNBMHJGLEVBR0EsSUFBQUMsSUFBQSxvQkFFQVYsR0FBQVcsU0FBQSxTQUFBdHNELEVB
QUE2ckQsR0FDQSxHQUFBUSxFQUFBM3BFLFFBQUFtcEUsUUFDQSxTQUFBekQsWUFBQSxzQkFHQSxX
QUFBdUQsR0FBQSxNQUErQkUsU0FBQXAvQixTQUEwQjVPLFNBQUE3ZCxNQUd6RDN5QixFQUFBMDdF
LFVBQ0ExN0UsRUFBQTY5RSxVQUNBNzlFLEVBQUFzK0UsV0FFQXQrRSxFQUFBMitFLE1BQUEsU0FB
QWgxRCxFQUFBdTFELEdBQ0EsVUFBQXorQyxTQUFBLFNBQUFTLEVBQUFDLEdBVUEsUUFBQWcrQyxL
QUNBLHFCQUFBakIsR0FDQUEsRUFBQWlCLFlBSUEsbUJBQUFqbEYsS0FBQWdrRixFQUFBRSx5QkFD
QUYsRUFBQWtCLGtCQUFBLGlCQURBLE9BZkEsR0FBQUMsRUFFQUEsR0FEQXhCLEVBQUE1MEYsVUFB
QTR6RixjQUFBbHpELEtBQUF1MUQsRUFDQXYxRCxFQUVBLEdBQUFrMEQsR0FBQWwwRCxFQUFBdTFE
LEVBR0EsSUFBQWhCLEdBQUEsR0FBQW9CLGVBZUFwQixHQUFBbEMsT0FBQSxXQUNBLEdBQUFwMUQs
SUFDQTQzRCxPQUFBTixFQUFBTSxPQUNBRSxXQUFBUixFQUFBUSxXQUNBdC9CLFVBQUE4K0IsR0FD
QXZyRCxJQUFBd3NELEtBRUF4Z0UsRUFBQSxZQUFBdS9ELEtBQUFhLFNBQUFiLEVBQUFxQixZQUNB
citDLEdBQUEsR0FBQW85QyxHQUFBMy9ELEVBQUFpSSxLQUdBczNELEVBQUFqQyxRQUFBLFdBQ0E5
NkMsRUFBQSxHQUFBNzFDLFdBQUEsNEJBR0E0eUYsRUFBQXNCLFVBQUEsV0FDQXIrQyxFQUFBLEdB
QUE3MUMsV0FBQSw0QkFHQTR5RixFQUFBajlCLEtBQUFvK0IsRUFBQTlwRixPQUFBOHBGLEVBQUEx
c0QsS0FBQSxHQUVBLFlBQUEwc0QsRUFBQXZCLGNBQ0FJLEVBQUF1QixpQkFBQSxHQUdBLGdCQUFB
dkIsSUFBQTFDLEVBQUFXLE9BQ0ErQixFQUFBd0IsYUFBQSxRQUdBTCxFQUFBamdDLFFBQUFoekQs
UUFBQSxTQUFBb08sRUFBQWhRLEdBQ0EwekYsRUFBQXlCLGlCQUFBbjFGLEVBQUFnUSxLQUdBMGpG
LEVBQUEwQixLQUFBLG1CQUFBUCxHQUFBM0MsVUFBQSxLQUFBMkMsRUFBQTNDLGNBR0ExOEUsRUFB
QTIrRSxNQUFBa0IsVUFBQSxJQUNDLG1CQUFBNy9FLFdBQUF0VyxPak5rNXRCRCxJQUVDLElBQUss
SUFFQSxTQUFTbEIsRUFBUUQsRUFBU0gsR2tONXp1QmhDLFlBWUEsU0FBQTAzRixHQUFBam5GLEdB
Q0EsVUFBQUEsR0FBQXRPLFFBQUF3MUYsRUFBQSxPQVdBLFFBQUFDLEdBQUFDLEVBQUFDLEdBQ0F4
MkYsS0FBQWt3QixLQUFBcW1FLEVBQ0F2MkYsS0FBQTBLLFFBQUE4ckYsRUFDQXgyRixLQUFBcVYs
TUFBQSxFQVNBLFFBQUFvaEYsR0FBQW5xQixFQUFBdnFDLEVBQUFqaEMsR0FDQSxHQUFBb3ZCLEdB
QUFvOEMsRUFBQXA4QyxLQUNBeGxCLEVBQUE0aEUsRUFBQTVoRSxPQUVBd2xCLEdBQUFqeEIsS0FB
QXlMLEVBQUFxM0IsRUFBQXVxQyxFQUFBajNELFNBZUEsUUFBQXFoRixHQUFBN3hGLEVBQUE4eEYs
RUFBQUgsR0FDQSxTQUFBM3hGLEVBQ0EsTUFBQUEsRUFFQSxJQUFBMGtDLEdBQUErc0QsRUFBQWh1
RixVQUFBcXVGLEVBQUFILEVBQ0Fqc0QsR0FBQTFsQyxFQUFBNHhGLEVBQUFsdEQsR0FDQStzRCxF
QUFBM3FGLFFBQUE0OUIsR0FZQSxRQUFBcXRELEdBQUFDLEVBQUFDLEVBQUFDLEVBQUFDLEdBQ0Fo
M0YsS0FBQXdtRCxPQUFBcXdDLEVBQ0E3MkYsS0FBQTgyRixZQUNBOTJGLEtBQUFrd0IsS0FBQTZt
RSxFQUNBLzJGLEtBQUEwSyxRQUFBc3NGLEVBQ0FoM0YsS0FBQXFWLE1BQUEsRUFXQSxRQUFBNGhG
LEdBQUEzcUIsRUFBQXZxQyxFQUFBbTFELEdBQ0EsR0FBQTF3QyxHQUFBOGxCLEVBQUE5bEIsT0FD
QXN3QyxFQUFBeHFCLEVBQUF3cUIsVUFDQTVtRSxFQUFBbzhDLEVBQUFwOEMsS0FDQXhsQixFQUFB
NGhFLEVBQUE1aEUsUUFHQXlzRixFQUFBam5FLEVBQUFqeEIsS0FBQXlMLEVBQUFxM0IsRUFBQXVx
QyxFQUFBajNELFFBQ0F5QixPQUFBd1IsUUFBQTZ1RSxHQUNBQyxFQUFBRCxFQUFBM3dDLEVBQUEw
d0MsRUFBQWwyRixFQUFBMkcscUJBQ0csTUFBQXd2RixJQUNIMWlGLEVBQUFpQixlQUFBeWhGLEtB
Q0FBLEVBQUExaUYsRUFBQXlDLG1CQUFBaWdGLEVBR0FMLElBQUFLLEVBQUE1ekYsS0FBQXcrQixL
QUFBeCtCLE1BQUE0ekYsRUFBQTV6RixJQUFBLEdBQUE2eUYsRUFBQWUsRUFBQTV6RixLQUFBLEtB
QUEyekYsSUFFQTF3QyxFQUFBL2dELEtBQUEweEYsSUFJQSxRQUFBQyxHQUFBdnlGLEVBQUF1d0Ms
RUFBQTlmLEVBQUFwRixFQUFBeGxCLEdBQ0EsR0FBQTJzRixHQUFBLEVBQ0EsT0FBQS9oRSxJQUNB
K2hFLEVBQUFqQixFQUFBOWdFLEdBQUEsSUFFQSxJQUFBaVUsR0FBQXF0RCxFQUFBdHVGLFVBQUE4
c0MsRUFBQWlpRCxFQUFBbm5FLEVBQUF4bEIsRUFDQTYvQixHQUFBMWxDLEVBQUFveUYsRUFBQTF0
RCxHQUNBcXRELEVBQUFqckYsUUFBQTQ5QixHQWdCQSxRQUFBK3RELEdBQUF6eUYsRUFBQXFyQixF
QUFBeGxCLEdBQ0EsU0FBQTdGLEVBQ0EsTUFBQUEsRUFFQSxJQUFBMmhELEtBRUEsT0FEQTR3QyxH
QUFBdnlGLEVBQUEyaEQsRUFBQSxLQUFBdDJCLEVBQUF4bEIsR0FDQTg3QyxFQUdBLFFBQUErd0Ms
R0FBQWh1RCxFQUFBeEgsRUFBQWpoQyxHQUNBLFlBWUEsUUFBQTAyRixHQUFBM3lGLEVBQUE2RixH
QUNBLE1BQUE2L0IsR0FBQTFsQyxFQUFBMHlGLEVBQUEsTUFTQSxRQUFBamlGLEdBQUF6USxHQUNB
LEdBQUEyaEQsS0FFQSxPQURBNHdDLEdBQUF2eUYsRUFBQTJoRCxFQUFBLEtBQUF4bEQsRUFBQTJH
LHFCQUNBNitDLEVBdEtBLEdBQUExN0MsR0FBQXBNLEVBQUEsS0FDQStWLEVBQUEvVixFQUFBLElB
RUFzQyxFQUFBdEMsRUFBQSxHQUNBNnJDLEVBQUE3ckMsRUFBQSxLQUVBZ3VFLEVBQUE1aEUsRUFB
QTRoRSxrQkFDQWgrRCxFQUFBNUQsRUFBQTRELG1CQUVBMm5GLEVBQUEsTUFrQkFDLEdBQUEvMkYs
VUFBQW1NLFdBQUEsV0FDQTFMLEtBQUFrd0IsS0FBQSxLQUNBbHdCLEtBQUEwSyxRQUFBLEtBQ0Ex
SyxLQUFBcVYsTUFBQSxHQUVBdkssRUFBQWlCLGFBQUF1cUYsRUFBQTVwQixHQThDQWtxQixFQUFB
cjNGLFVBQUFtTSxXQUFBLFdBQ0ExTCxLQUFBd21ELE9BQUEsS0FDQXhtRCxLQUFBODJGLFVBQUEs
S0FDQTkyRixLQUFBa3dCLEtBQUEsS0FDQWx3QixLQUFBMEssUUFBQSxLQUNBMUssS0FBQXFWLE1B
QUEsR0FFQXZLLEVBQUFpQixhQUFBNnFGLEVBQUFsb0YsRUFvRkEsSUFBQTZGLElBQ0E3UixRQUFB
ZzBGLEVBQ0FyMEYsSUFBQWkxRixFQUNBRiwrQkFDQS9oRixNQUFBbWlGLEVBQ0FsaUYsVUFHQXhX
LEdBQUFELFFBQUEwVixHbE40MHVCTSxTQUFTelYsRUFBUUQsRUFBU0gsR21OLy91QmhDLFlBRUEs
SUFBQStWLEdBQUEvVixFQUFBLElBT0ErNEYsRUFBQWhqRixFQUFBSyxjQVdBTixHQUNBM1UsRUFB
QTQzRixFQUFBLEtBQ0FDLEtBQUFELEVBQUEsUUFDQUUsUUFBQUYsRUFBQSxXQUNBbjBDLEtBQUFt
MEMsRUFBQSxRQUNBRyxRQUFBSCxFQUFBLFdBQ0FJLE1BQUFKLEVBQUEsU0FDQUssTUFBQUwsRUFB
QSxTQUNBMzNGLEVBQUEyM0YsRUFBQSxLQUNBajFCLEtBQUFpMUIsRUFBQSxRQUNBTSxJQUFBTixF
QUFBLE9BQ0FPLElBQUFQLEVBQUEsT0FDQVEsSUFBQVIsRUFBQSxPQUNBUyxXQUFBVCxFQUFBLGNB
Q0F4aUUsS0FBQXdpRSxFQUFBLFFBQ0FoMUIsR0FBQWcxQixFQUFBLE1BQ0ExekUsT0FBQTB6RSxF
QUFBLFVBQ0FVLE9BQUFWLEVBQUEsVUFDQTV6QyxRQUFBNHpDLEVBQUEsV0FDQW5qQyxLQUFBbWpD
LEVBQUEsUUFDQXQyRixLQUFBczJGLEVBQUEsUUFDQWwwQyxJQUFBazBDLEVBQUEsT0FDQTN6QyxT
QUFBMnpDLEVBQUEsWUFDQS93RSxLQUFBK3dFLEVBQUEsUUFDQVcsU0FBQVgsRUFBQSxZQUNBWSxH
QUFBWixFQUFBLE1BQ0FhLElBQUFiLEVBQUEsT0FDQWMsUUFBQWQsRUFBQSxXQUNBZSxJQUFBZixF
QUFBLE9BQ0FnQixPQUFBaEIsRUFBQSxVQUNBN3pCLElBQUE2ekIsRUFBQSxPQUNBaUIsR0FBQWpC
LEVBQUEsTUFDQWtCLEdBQUFsQixFQUFBLE1BQ0FtQixHQUFBbkIsRUFBQSxNQUNBLzBCLE1BQUEr
MEIsRUFBQSxTQUNBb0IsU0FBQXBCLEVBQUEsWUFDQXFCLFdBQUFyQixFQUFBLGNBQ0FzQixPQUFB
dEIsRUFBQSxVQUNBdUIsT0FBQXZCLEVBQUEsVUFDQXRpQyxLQUFBc2lDLEVBQUEsUUFDQXdCLEdB
QUF4QixFQUFBLE1BQ0F5QixHQUFBekIsRUFBQSxNQUNBMEIsR0FBQTFCLEVBQUEsTUFDQTJCLEdB
QUEzQixFQUFBLE1BQ0E0QixHQUFBNUIsRUFBQSxNQUNBNkIsR0FBQTdCLEVBQUEsTUFDQWhELEtB
QUFnRCxFQUFBLFFBQ0E5QyxPQUFBOEMsRUFBQSxVQUNBOEIsT0FBQTlCLEVBQUEsVUFDQTkwQixH
QUFBODBCLEVBQUEsTUFDQXhvRixLQUFBd29GLEVBQUEsUUFDQXA0RixFQUFBbzRGLEVBQUEsS0FD
QStCLE9BQUEvQixFQUFBLFVBQ0E3MEIsSUFBQTYwQixFQUFBLE9BQ0F4M0QsTUFBQXczRCxFQUFB
LFNBQ0FnQyxJQUFBaEMsRUFBQSxPQUNBaUMsSUFBQWpDLEVBQUEsT0FDQTUwQixPQUFBNDBCLEVB
QUEsVUFDQWxoQyxNQUFBa2hDLEVBQUEsU0FDQWowQyxPQUFBaTBDLEVBQUEsVUFDQWtDLEdBQUFs
QyxFQUFBLE1BQ0EzMEIsS0FBQTIwQixFQUFBLFFBQ0FtQyxLQUFBbkMsRUFBQSxRQUNBcDFGLElB
QUFvMUYsRUFBQSxPQUNBb0MsS0FBQXBDLEVBQUEsUUFDQXFDLEtBQUFyQyxFQUFBLFFBQ0FwMEIs
U0FBQW8wQixFQUFBLFlBQ0ExMEIsS0FBQTAwQixFQUFBLFFBQ0FzQyxNQUFBdEMsRUFBQSxTQUNB
dUMsSUFBQXZDLEVBQUEsT0FDQXdDLFNBQUF4QyxFQUFBLFlBQ0FqZ0YsT0FBQWlnRixFQUFBLFVB
Q0F5QyxHQUFBekMsRUFBQSxNQUNBOXpDLFNBQUE4ekMsRUFBQSxZQUNBN3pDLE9BQUE2ekMsRUFB
QSxVQUNBMEMsT0FBQTFDLEVBQUEsVUFDQXI0RixFQUFBcTRGLEVBQUEsS0FDQWgwQyxNQUFBZzBD
LEVBQUEsU0FDQTJDLFFBQUEzQyxFQUFBLFdBQ0F0MEIsSUFBQXMwQixFQUFBLE9BQ0E0QyxTQUFB
NUMsRUFBQSxZQUNBNkMsRUFBQTdDLEVBQUEsS0FDQThDLEdBQUE5QyxFQUFBLE1BQ0ErQyxHQUFB
L0MsRUFBQSxNQUNBZ0QsS0FBQWhELEVBQUEsUUFDQW4wRixFQUFBbTBGLEVBQUEsS0FDQWlELEtB
QUFqRCxFQUFBLFFBQ0FrRCxPQUFBbEQsRUFBQSxVQUNBbUQsUUFBQW5ELEVBQUEsV0FDQXgyRCxP
QUFBdzJELEVBQUEsVUFDQW9ELE1BQUFwRCxFQUFBLFNBQ0F2MEYsT0FBQXUwRixFQUFBLFVBQ0E3
K0IsS0FBQTYrQixFQUFBLFFBQ0FxRCxPQUFBckQsRUFBQSxVQUNBOW5DLE1BQUE4bkMsRUFBQSxT
QUNBc0QsSUFBQXRELEVBQUEsT0FDQXYrQixRQUFBdStCLEVBQUEsV0FDQXVELElBQUF2RCxFQUFB
LE9BQ0F3RCxNQUFBeEQsRUFBQSxTQUNBMXpDLE1BQUEwekMsRUFBQSxTQUNBdnpDLEdBQUF1ekMs
RUFBQSxNQUNBcjBCLFNBQUFxMEIsRUFBQSxZQUNBenpDLE1BQUF5ekMsRUFBQSxTQUNBdHpDLEdB
QUFzekMsRUFBQSxNQUNBeHpDLE1BQUF3ekMsRUFBQSxTQUNBMXRGLEtBQUEwdEYsRUFBQSxRQUNB
bGlELE1BQUFraUQsRUFBQSxTQUNBL3pDLEdBQUErekMsRUFBQSxNQUNBM3dELE1BQUEyd0QsRUFB
QSxTQUNBeUQsRUFBQXpELEVBQUEsS0FDQTBELEdBQUExRCxFQUFBLE1BQ0EyRCxJQUFBM0QsRUFB
QSxPQUNBNEQsTUFBQTVELEVBQUEsU0FDQXowQixJQUFBeTBCLEVBQUEsT0FHQTZELE9BQUE3RCxF
QUFBLFVBQ0F4bUIsU0FBQXdtQixFQUFBLFlBQ0E4RCxLQUFBOUQsRUFBQSxRQUNBK0QsUUFBQS9E
LEVBQUEsV0FDQWdFLEVBQUFoRSxFQUFBLEtBQ0E5bkUsTUFBQThuRSxFQUFBLFNBQ0F2RyxLQUFB
dUcsRUFBQSxRQUNBaUUsZUFBQWpFLEVBQUEsa0JBQ0E3aEIsS0FBQTZoQixFQUFBLFFBQ0Ezc0Is
S0FBQTJzQixFQUFBLFFBQ0FoZ0MsUUFBQWdnQyxFQUFBLFdBQ0FrRSxRQUFBbEUsRUFBQSxXQUNB
bUUsU0FBQW5FLEVBQUEsWUFDQW9FLGVBQUFwRSxFQUFBLGtCQUNBcUUsS0FBQXJFLEVBQUEsUUFD
QXNFLEtBQUF0RSxFQUFBLFFBQ0FweEUsSUFBQW94RSxFQUFBLE9BQ0F0b0YsS0FBQXNvRixFQUFB
LFFBQ0F1RSxNQUFBdkUsRUFBQSxTQUdBMzRGLEdBQUFELFFBQUEyVixHbk4rZ3ZCTSxTQUFTMVYs
RUFBUUQsRUFBU0gsR29ONXF2QmhDLFlBRUEsSUFBQXU5RixHQUFBdjlGLEVBQUEsSUFDQWdYLEVB
QUF1bUYsRUFBQXZtRixlQUVBc0IsRUFBQXRZLEVBQUEsR0FFQUksR0FBQUQsUUFBQW1ZLEVBQUF0
QixJcE40cnZCQSxJQUVNLFNBQVM1VyxFQUFRRCxFQUFTSCxHcU5yc3ZCaEMsWUFFQSxJQUFBdTlG
LEdBQUF2OUYsRUFBQSxJQUNBOFcsRUFBQXltRixFQUFBem1GLFVBRUEwbUYsRUFBQXg5RixFQUFB
LElBQ0FnWCxFQUFBd21GLEVBQUF4bUYsZUFFQTZpQyxFQUFBNzVDLEVBQUEsSUFDQXNZLEVBQUF0
WSxFQUFBLEdBRUFJLEdBQUFELFFBQUFtWSxFQUFBeEIsRUFBQUUsRUFBQTZpQyxJck5xdHZCQSxJ
QUVNLFNBQVN6NUMsRUFBUUQsR3NOanV2QnZCLFlBSUEsU0FBQXM5RixLQUNBLE1BQUFDLEtBSEEs
R0FBQUEsR0FBQSxDQU1BdDlGLEdBQUFELFFBQUFzOUYsR3ROa3Z2Qk0sU0FBU3I5RixFQUFRRCxF
QUFTSCxHdU4zdnZCaEMsWUFnQkEsSUFBQTI5RixHQUFBLFlBcUNBdjlGLEdBQUFELFFBQUF3OUYs
R3ZOMnd2Qk0sU0FBU3Y5RixFQUFRRCxFQUFTSCxHd05qMHZCaEMsWUFzQkEsU0FBQW1XLEdBQUFo
USxHQUVBLE1BREE0UCxHQUFBaUIsZUFBQTdRLEdBQUEsT0FBQVMsRUFBQSxPQUNBVCxFQXRCQSxH
QUFBUyxHQUFBNUcsRUFBQSxJQUVBK1YsRUFBQS9WLEVBQUEsR0FFQUEsR0FBQSxFQXFCQUksR0FB
QUQsUUFBQWdXLEd4TmcxdkJNLFNBQVMvVixFQUFRRCxFQUFTSCxHeU4xMnZCaEMsWUFtQ0EsU0FB
QTBxQyxHQUFBcGxDLEVBQUE2aEIsR0FHQSxNQUFBN2hCLElBQUEsZ0JBQUFBLElBQUEsTUFBQUEs
RUFBQVQsSUFFQXNyQixFQUFBakosT0FBQTVoQixFQUFBVCxLQUdBc2lCLEVBQUF4ZixTQUFBLElB
V0EsUUFBQWdqQyxHQUFBeGtDLEVBQUF5a0MsRUFBQTdnQyxFQUFBOGdDLEdBQ0EsR0FBQTUvQixT
QUFBOUUsRUFPQSxJQUxBLGNBQUE4RSxHQUFBLFlBQUFBLElBRUE5RSxFQUFBLE1BR0EsT0FBQUEs
R0FBQSxXQUFBOEUsR0FBQSxXQUFBQSxHQUdBLFdBQUFBLEdBQUE5RSxFQUFBNlIsV0FBQVIsRUFL
QSxNQUpBek4sR0FBQThnQyxFQUFBMWtDLEVBR0EsS0FBQXlrQyxFQUFBRSxFQUFBSixFQUFBdmtD
LEVBQUEsR0FBQXlrQyxHQUNBLENBR0EsSUFBQXZILEdBQ0EwSCxFQUNBQyxFQUFBLEVBQ0FDLEVB
QUEsS0FBQUwsRUFBQUUsRUFBQUYsRUFBQU0sQ0FFQSxJQUFBOXlCLE1BQUF3UixRQUFBempCLEdB
Q0EsT0FBQXhGLEdBQUEsRUFBbUJBLEVBQUF3RixFQUFBdkQsT0FBcUJqQyxJQUN4QzBpQyxFQUFB
bDlCLEVBQUF4RixHQUNBb3FDLEVBQUFFLEVBQUFQLEVBQUFySCxFQUFBMWlDLEdBQ0FxcUMsR0FB
QUwsRUFBQXRILEVBQUEwSCxFQUFBaGhDLEVBQUE4Z0MsT0FFRyxDQUNILEdBQUFNLEdBQUFDLEVB
QUFqbEMsRUFDQSxJQUFBZ2xDLEVBQUEsQ0FDQSxHQUNBRSxHQURBQyxFQUFBSCxFQUFBNXFDLEtB
QUE0RixFQUVBLElBQUFnbEMsSUFBQWhsQyxFQUFBb2xDLFFBRUEsSUFEQSxHQUFBQyxHQUFBLElB
Q0FILEVBQUFDLEVBQUFsRSxRQUFBcUUsTUFDQXBJLEVBQUFnSSxFQUFBajVCLE1BQ0EyNEIsRUFB
QUUsRUFBQVAsRUFBQXJILEVBQUFtSSxLQUNBUixHQUFBTCxFQUFBdEgsRUFBQTBILEVBQUFoaEMs
RUFBQThnQyxPQWVBLFFBQUFRLEVBQUFDLEVBQUFsRSxRQUFBcUUsTUFBQSxDQUNBLEdBQUFDLEdB
QUFMLEVBQUFqNUIsS0FDQXM1QixLQUNBckksRUFBQXFJLEVBQUEsR0FDQVgsRUFBQUUsRUFBQTlh
LEVBQUFqSixPQUFBd2tCLEVBQUEsSUFBQVIsRUFBQVIsRUFBQXJILEVBQUEsR0FDQTJILEdBQUFM
LEVBQUF0SCxFQUFBMEgsRUFBQWhoQyxFQUFBOGdDLFNBSUssZUFBQTUvQixFQUFBLENBQ0wsR0FB
QTBnQyxHQUFBLEdBYUFDLEVBQUF0b0MsT0FBQTZDLEVBQ29PUyxHQUFBLHlCQUFBZ2xDLEVBQUEs
cUJBQStHaHJDLE9BQUFzRCxLQUFBaUMsR0FBQXRDLEtBQUEsVUFBeUMrbkMsRUFBQUQsSUFJNVgs
TUFBQVgsR0FtQkEsUUFBQWEsR0FBQTFsQyxFQUFBNEQsRUFBQThnQztBQUNBLGFBQUExa0MsRUFD
QSxFQUdBd2tDLEVBQUF4a0MsRUFBQSxHQUFBNEQsRUFBQThnQyxHQS9KQSxHQUFBamtDLEdBQUE1
RyxFQUFBLElBR0F3WCxHQURBeFgsRUFBQSxJQUNBQSxFQUFBLEtBRUFvckMsRUFBQXByQyxFQUFB
LEtBRUFtd0IsR0FEQW53QixFQUFBLEdBQ0FBLEVBQUEsTUFHQThxQyxHQUZBOXFDLEVBQUEsR0FF
QSxLQUNBa3JDLEVBQUEsR0F1SkE5cUMsR0FBQUQsUUFBQTByQyxHek4wM3ZCTSxTQUFTenJDLEVB
QVFELEVBQVNILEcwTnhpd0JoQyxZQVlBLFNBQUFtb0IsR0FBQUMsR0FBc0MsTUFBQUEsTUFBQUMs
V0FBQUQsR0FBdUNFLFFBQUFGLEdBa0I3RSxRQUFBSSxLQUNBLE9BQUFxckIsR0FBQWx4QyxVQUFB
QyxPQUFBZzdGLEVBQUF4bEYsTUFBQXk3QixHQUFBQyxFQUFBLEVBQXdFQSxFQUFBRCxFQUFhQyxJ
QUNyRjhwRCxFQUFBOXBELEdBQUFueEMsVUFBQW14QyxFQUdBLGlCQUFBbnJCLEdBQ0EsZ0JBQUE0
MUIsRUFBQUMsRUFBQUMsR0FDQSxHQUFBL1IsR0FBQS9qQixFQUFBNDFCLEVBQUFDLEVBQUFDLEdB
Q0FvL0MsRUFBQW54RCxFQUFBMkQsU0FDQXl0RCxLQUVBQyxHQUNBanhELFNBQUFKLEVBQUFJLFNB
Q0F1RCxTQUFBLFNBQUF5TyxHQUNBLE1BQUErK0MsR0FBQS8rQyxJQVFBLE9BTEFnL0MsR0FBQUYs
RUFBQWo2RixJQUFBLFNBQUFxNkYsR0FDQSxNQUFBQSxHQUFBRCxLQUVBRixFQUFBeDBFLEVBQUEs
UUFBQWhvQixNQUFBVyxPQUFBODdGLEdBQUFweEQsRUFBQTJELFVBRUF0QixLQUF3QnJDLEdBQ3hC
MkQsU0FBQXd0RCxNQW5EQTE5RixFQUFBa29CLFlBQUEsQ0FFQSxJQUFBMG1CLEdBQUFudUMsT0FB
QXdDLFFBQUEsU0FBQW1CLEdBQW1ELE9BQUE1RCxHQUFBLEVBQWdCQSxFQUFBZ0MsVUFBQUMsT0FB
c0JqQyxJQUFBLENBQU8sR0FBQTZELEdBQUE3QixVQUFBaEMsRUFBMkIsUUFBQWtFLEtBQUFMLEdB
QTBCNUQsT0FBQUMsVUFBQUMsZUFBQVAsS0FBQWlFLEVBQUFLLEtBQXlETixFQUFBTSxHQUFBTCxF
QUFBSyxJQUFpQyxNQUFBTixHQUUvT3BFLEdBQUEsUUFBQXFvQixDQUVBLElBQUFZLEdBQUFwcEIs
RUFBQSxJQUVBcXBCLEVBQUFsQixFQUFBaUIsSTFONmx3Qk0sU0FBU2hwQixFQUFRRCxHMk52bXdC
dkIsWUFJQSxTQUFBODlGLEdBQUFDLEVBQUE3dEQsR0FDQSxrQkFDQSxNQUFBQSxHQUFBNnRELEVB
QUE3OEYsTUFBQVcsT0FBQVcsYUF5QkEsUUFBQThsQixHQUFBMDFFLEVBQUE5dEQsR0FDQSxxQkFB
QTh0RCxHQUNBLE1BQUFGLEdBQUFFLEVBQUE5dEQsRUFHQSxvQkFBQTh0RCxJQUFBLE9BQUFBLEVB
Q0EsU0FBQWw4RixPQUFBLGlGQUFBazhGLEVBQUEsYUFBQUEsSUFBQSw2RkFLQSxRQUZBajZGLEdB
QUF0RCxPQUFBc0QsS0FBQWk2RixHQUNBQyxLQUNBejlGLEVBQUEsRUFBaUJBLEVBQUF1RCxFQUFB
dEIsT0FBaUJqQyxJQUFBLENBQ2xDLEdBQUFrRSxHQUFBWCxFQUFBdkQsR0FDQXU5RixFQUFBQyxF
QUFBdDVGLEVBQ0EsbUJBQUFxNUYsS0FDQUUsRUFBQXY1RixHQUFBbzVGLEVBQUFDLEVBQUE3dEQs
SUFHQSxNQUFBK3RELEdBL0NBaitGLEVBQUFrb0IsWUFBQSxFQUNBbG9CLEVBQUEsUUFBQXNvQixH
M040cHdCTSxTQUFTcm9CLEVBQVFELEVBQVNILEc0Ti9wd0JoQyxZQWVBLFNBQUFtb0IsR0FBQUMs
R0FBc0MsTUFBQUEsTUFBQUMsV0FBQUQsR0FBdUNFLFFBQUFGLEdBRTdFLFFBQUFpMkUsR0FBQXg1
RixFQUFBaTZDLEdBQ0EsR0FBQXcvQyxHQUFBeC9DLEtBQUE3ekMsS0FDQXN6RixFQUFBRCxHQUFB
LElBQUFBLEVBQUEzMkYsV0FBQSxnQkFFQSx1QkFBQTQyRixFQUFBLGNBQUExNUYsRUFBQSxpTEE0
QkEsUUFBQTI1RixHQUFBQyxHQUNBNzlGLE9BQUFzRCxLQUFBdTZGLEdBQUF6NkYsUUFBQSxTQUFB
YSxHQUNBLEdBQUEwNUMsR0FBQWtnRCxFQUFBNTVGLEdBQ0ErOEMsRUFBQXJELEVBQUF2OEMsUUFB
MkNpSixLQUFBMmQsRUFBQXUyQixZQUFBQyxNQUUzQyx1QkFBQXdDLEdBQ0EsU0FBQTMvQyxPQUFB
LFlBQUE0QyxFQUFBLGdSQUdBLElBQUFvRyxHQUFBLGdDQUFBeEQsS0FBQUMsU0FBQUMsU0FBQSxJ
QUFBMmYsVUFBQSxHQUFBdmpCLE1BQUEsSUFBQUYsS0FBQSxJQUNBLElBQWdELG1CQUFoRDA2QyxH
QUFBdjhDLFFBQW1DaUosU0FDbkMsU0FBQWhKLE9BQUEsWUFBQTRDLEVBQUEsZ0ZBQUErakIsRUFB
QXUyQixZQUFBQyxLQUFBLHFUQXFCQSxRQUFBMTJCLEdBQUErMUUsR0FHQSxPQUZBQyxHQUFBOTlG
LE9BQUFzRCxLQUFBdTZGLEdBQ0FFLEtBQ0FoK0YsRUFBQSxFQUFpQkEsRUFBQSs5RixFQUFBOTdG
LE9BQXdCakMsSUFBQSxDQUN6QyxHQUFBa0UsR0FBQTY1RixFQUFBLzlGLEVBUUEsbUJBQUE4OUYs
R0FBQTU1RixLQUNBODVGLEVBQUE5NUYsR0FBQTQ1RixFQUFBNTVGLElBR0EsR0FBQSs1RixHQUFB
aCtGLE9BQUFzRCxLQUFBeTZGLEdBT0FFLEVBQUEsTUFDQSxLQUNBTCxFQUFBRyxHQUNHLE1BQUEv
OEYsR0FDSGk5RixFQUFBajlGLEVBR0Esa0JBQ0EsR0FBQXV0QyxHQUFBeHNDLFVBQUFDLE9BQUEs
R0FBQVosU0FBQVcsVUFBQSxHQUFBQSxVQUFBLE1BQ0FtOEMsRUFBQW44QyxVQUFBLEVBRUEsSUFB
QWs4RixFQUNBLEtBQUFBLEVBWUEsUUFGQUMsSUFBQSxFQUNBbC9CLEtBQ0FtL0IsRUFBQSxFQUFv
QkEsRUFBQUgsRUFBQWg4RixPQUE4Qm04RixJQUFBLENBQ2xELEdBQUFqckQsR0FBQThxRCxFQUFB
RyxHQUNBeGdELEVBQUFvZ0QsRUFBQTdxRCxHQUNBa3JELEVBQUE3dkQsRUFBQTJFLEdBQ0FtckQs
RUFBQTFnRCxFQUFBeWdELEVBQUFsZ0QsRUFDQSx1QkFBQW1nRCxHQUFBLENBQ0EsR0FBQUMsR0FB
QWIsRUFBQXZxRCxFQUFBZ0wsRUFDQSxVQUFBNzhDLE9BQUFpOUYsR0FFQXQvQixFQUFBOXJCLEdB
QUFtckQsRUFDQUgsS0FBQUcsSUFBQUQsRUFFQSxNQUFBRixHQUFBbC9CLEVBQUF6d0IsR0ExSUFo
dkMsRUFBQWtvQixZQUFBLEVBQ0Fsb0IsRUFBQSxRQUFBdW9CLENBRUEsSUFBQUUsR0FBQTVvQixF
QUFBLElBRUFrekMsRUFBQWx6QyxFQUFBLElBSUFzcEIsR0FGQW5CLEVBQUErcUIsR0FFQWx6QyxF
QUFBLElBRUFtb0IsR0FBQW1CLEk1TnN5d0JNLFNBQVNscEIsRUFBUUQsRUFBU0gsRzZObnp3QmhD
SSxFQUFBRCxRQUFBSCxFQUFBLE03TjB6d0JNLFNBQVNJLEVBQVFELEVBQVNILEk4TjF6d0JoQyxT
QUFBeW5ELEVBQUFybkQsR0FBQSxZQVVBLFNBQUErbkIsR0FBQUMsR0FBc0MsTUFBQUEsTUFBQUMs
V0FBQUQsR0FBdUNFLFFBQUFGLEdBUjdFeG5CLE9BQUE2bkMsZUFBQXRvQyxFQUFBLGNBQ0FpUyxP
QUFBLEdBR0EsSUFNQW9rQixHQU5BMm9FLEVBQUFuL0YsRUFBQSxLQUVBby9GLEVBQUFqM0UsRUFB
QWczRSxFQVFBM29FLEdBREEsbUJBQUE1ZSxNQUNBQSxLQUNDLG1CQUFBOVAsUUFDREEsT0FDQyxt
QkFBQTIvQyxHQUNEQSxFQUVBcm5ELENBS0EsSUFBQTBuRCxJQUFBLEVBQUFzM0MsRUFBQSxTQUFB
NW9FLEVBQ0FyMkIsR0FBQSxRQUFBMm5ELEk5TjZ6d0I4QnZuRCxLQUFLSixFQUFVLFdBQWEsTUFB
T21CLFNBQVl0QixFQUFvQixLQUFLSSxLQUloRyxTQUFTQSxFQUFRRCxHK043MXdCdkIsWUFNQSxT
QUFBay9GLEdBQUE3b0UsR0FDQSxHQUFBc3hCLEdBQ0F3M0MsRUFBQTlvRSxFQUFBQyxNQWFBLE9B
WEEsa0JBQUE2b0UsR0FDQUEsRUFBQWpnRCxXQUNBeUksRUFBQXczQyxFQUFBamdELFlBRUF5SSxF
QUFBdzNDLEVBQUEsY0FDQUEsRUFBQWpnRCxXQUFBeUksR0FHQUEsRUFBQSxlQUdBQSxFQW5CQWxu
RCxPQUFBNm5DLGVBQUF0b0MsRUFBQSxjQUNBaVMsT0FBQSxJQUVBalMsRUFBQSxRQUFBay9GLEcv
Tm8zd0JNLFNBQVNqL0YsRUFBUUQsRUFBU0gsRUFBcUJ1L0YsR2dPOTJ3QnJELFlBRUEsSUFBQTM0
RixHQUFBNUcsRUFBQXUvRixHQVdBQyxHQVRBeC9GLEVBQUEsR0FTQSxTQUFBeS9GLEdBQ0EsR0FB
QUMsR0FBQXArRixJQUNBLElBQUFvK0YsRUFBQUMsYUFBQS84RixPQUFBLENBQ0EsR0FBQXM1QixH
QUFBd2pFLEVBQUFDLGFBQUF6NEYsS0FFQSxPQURBdzRGLEdBQUFuL0YsS0FBQTI3QixFQUFBdWpF
LEdBQ0F2akUsRUFFQSxVQUFBd2pFLEdBQUFELEtBSUF6eEIsRUFBQSxTQUFBNHhCLEVBQUFDLEdB
Q0EsR0FBQUgsR0FBQXArRixJQUNBLElBQUFvK0YsRUFBQUMsYUFBQS84RixPQUFBLENBQ0EsR0FB
QXM1QixHQUFBd2pFLEVBQUFDLGFBQUF6NEYsS0FFQSxPQURBdzRGLEdBQUFuL0YsS0FBQTI3QixF
QUFBMGpFLEVBQUFDLEdBQ0EzakUsRUFFQSxVQUFBd2pFLEdBQUFFLEVBQUFDLElBSUFDLEVBQUEs
U0FBQUYsRUFBQUMsRUFBQUUsR0FDQSxHQUFBTCxHQUFBcCtGLElBQ0EsSUFBQW8rRixFQUFBQyxh
QUFBLzhGLE9BQUEsQ0FDQSxHQUFBczVCLEdBQUF3akUsRUFBQUMsYUFBQXo0RixLQUVBLE9BREF3
NEYsR0FBQW4vRixLQUFBMjdCLEVBQUEwakUsRUFBQUMsRUFBQUUsR0FDQTdqRSxFQUVBLFVBQUF3
akUsR0FBQUUsRUFBQUMsRUFBQUUsSUFJQS92RixFQUFBLFNBQUE0dkYsRUFBQUMsRUFBQUUsRUFB
QUMsR0FDQSxHQUFBTixHQUFBcCtGLElBQ0EsSUFBQW8rRixFQUFBQyxhQUFBLzhGLE9BQUEsQ0FD
QSxHQUFBczVCLEdBQUF3akUsRUFBQUMsYUFBQXo0RixLQUVBLE9BREF3NEYsR0FBQW4vRixLQUFB
MjdCLEVBQUEwakUsRUFBQUMsRUFBQUUsRUFBQUMsR0FDQTlqRSxFQUVBLFVBQUF3akUsR0FBQUUs
RUFBQUMsRUFBQUUsRUFBQUMsSUFJQUMsRUFBQSxTQUFBL2pFLEdBQ0EsR0FBQXdqRSxHQUFBcCtG
LElBQ0E0NkIsYUFBQXdqRSxHQUFBLE9BQUE5NEYsRUFBQSxNQUNBczFCLEVBQUFsdkIsYUFDQTB5
RixFQUFBQyxhQUFBLzhGLE9BQUE4OEYsRUFBQVEsVUFDQVIsRUFBQUMsYUFBQTU0RixLQUFBbTFC
LElBSUFpa0UsRUFBQSxHQUNBQyxFQUFBWixFQVdBbnlGLEVBQUEsU0FBQWd6RixFQUFBQyxHQUdB
LEdBQUFDLEdBQUFGLENBT0EsT0FOQUUsR0FBQVosZ0JBQ0FZLEVBQUEzMkYsVUFBQTAyRixHQUFB
RixFQUNBRyxFQUFBTCxXQUNBSyxFQUFBTCxTQUFBQyxHQUVBSSxFQUFBdHpGLFFBQUFnekYsRUFD
QU0sR0FHQW4wRixHQUNBaUIsZUFDQW15RixvQkFDQXh4QixvQkFDQTh4QixzQkFDQTl2RixxQkFH
QTVQLEdBQUFELFFBQUFpTSIsImZpbGUiOiJzdGF0aWMvanMvbWFpbi42OWNkOTY1NS5qcyIsInNv
dXJjZXNDb250ZW50IjpbIi8qKioqKiovIChmdW5jdGlvbihtb2R1bGVzKSB7IC8vIHdlYnBhY2tC
b290c3RyYXBcbi8qKioqKiovIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuLyoqKioqKi8gXHR2YXIg
aW5zdGFsbGVkTW9kdWxlcyA9IHt9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gVGhlIHJlcXVp
cmUgZnVuY3Rpb25cbi8qKioqKiovIFx0ZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1
bGVJZCkge1xuLyoqKioqKi9cbi8qKioqKiovIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4g
Y2FjaGVcbi8qKioqKiovIFx0XHRpZihpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSlcbi8qKioq
KiovIFx0XHRcdHJldHVybiBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXS5leHBvcnRzO1xuLyoq
KioqKi9cbi8qKioqKiovIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGlu
dG8gdGhlIGNhY2hlKVxuLyoqKioqKi8gXHRcdHZhciBtb2R1bGUgPSBpbnN0YWxsZWRNb2R1bGVz
W21vZHVsZUlkXSA9IHtcbi8qKioqKiovIFx0XHRcdGV4cG9ydHM6IHt9LFxuLyoqKioqKi8gXHRc
dFx0aWQ6IG1vZHVsZUlkLFxuLyoqKioqKi8gXHRcdFx0bG9hZGVkOiBmYWxzZVxuLyoqKioqKi8g
XHRcdH07XG4vKioqKioqL1xuLyoqKioqKi8gXHRcdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5j
dGlvblxuLyoqKioqKi8gXHRcdG1vZHVsZXNbbW9kdWxlSWRdLmNhbGwobW9kdWxlLmV4cG9ydHMs
IG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuLyoqKioqKi9c
bi8qKioqKiovIFx0XHQvLyBGbGFnIHRoZSBtb2R1bGUgYXMgbG9hZGVkXG4vKioqKioqLyBcdFx0
bW9kdWxlLmxvYWRlZCA9IHRydWU7XG4vKioqKioqL1xuLyoqKioqKi8gXHRcdC8vIFJldHVybiB0
aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG4vKioqKioqLyBcdFx0cmV0dXJuIG1vZHVsZS5leHBv
cnRzO1xuLyoqKioqKi8gXHR9XG4vKioqKioqL1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gZXhw
b3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXylcbi8qKioqKiovIFx0
X193ZWJwYWNrX3JlcXVpcmVfXy5tID0gbW9kdWxlcztcbi8qKioqKiovXG4vKioqKioqLyBcdC8v
IGV4cG9zZSB0aGUgbW9kdWxlIGNhY2hlXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18u
YyA9IGluc3RhbGxlZE1vZHVsZXM7XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBfX3dlYnBhY2tf
cHVibGljX3BhdGhfX1xuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnAgPSBcIi4vXCI7
XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4
cG9ydHNcbi8qKioqKiovIFx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oMCk7XG4vKioqKioq
LyB9KVxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKi9cbi8qKioqKiovICgoZnVuY3Rpb24obW9kdWxlcykge1xu
XHQvLyBDaGVjayBhbGwgbW9kdWxlcyBmb3IgZGVkdXBsaWNhdGVkIG1vZHVsZXNcblx0Zm9yKHZh
ciBpIGluIG1vZHVsZXMpIHtcblx0XHRpZihPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5
LmNhbGwobW9kdWxlcywgaSkpIHtcblx0XHRcdHN3aXRjaCh0eXBlb2YgbW9kdWxlc1tpXSkge1xu
XHRcdFx0Y2FzZSBcImZ1bmN0aW9uXCI6IGJyZWFrO1xuXHRcdFx0Y2FzZSBcIm9iamVjdFwiOlxu
XHRcdFx0XHQvLyBNb2R1bGUgY2FuIGJlIGNyZWF0ZWQgZnJvbSBhIHRlbXBsYXRlXG5cdFx0XHRc
dG1vZHVsZXNbaV0gPSAoZnVuY3Rpb24oX20pIHtcblx0XHRcdFx0XHR2YXIgYXJncyA9IF9tLnNs
aWNlKDEpLCBmbiA9IG1vZHVsZXNbX21bMF1dO1xuXHRcdFx0XHRcdHJldHVybiBmdW5jdGlvbiAo
YSxiLGMpIHtcblx0XHRcdFx0XHRcdGZuLmFwcGx5KHRoaXMsIFthLGIsY10uY29uY2F0KGFyZ3Mp
KTtcblx0XHRcdFx0XHR9O1xuXHRcdFx0XHR9KG1vZHVsZXNbaV0pKTtcblx0XHRcdFx0YnJlYWs7
XG5cdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHQvLyBNb2R1bGUgaXMgYSBjb3B5IG9mIGFub3RoZXIg
bW9kdWxlXG5cdFx0XHRcdG1vZHVsZXNbaV0gPSBtb2R1bGVzW21vZHVsZXNbaV1dO1xuXHRcdFx0
XHRicmVhaztcblx0XHRcdH1cblx0XHR9XG5cdH1cblx0cmV0dXJuIG1vZHVsZXM7XG59KFtcbi8q
IDAgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVf
Xykge1xuXG5cdF9fd2VicGFja19yZXF1aXJlX18oMTk2KTtcblx0bW9kdWxlLmV4cG9ydHMgPSBf
X3dlYnBhY2tfcmVxdWlyZV9fKDIwNCk7XG5cblxuLyoqKi8gfSxcbi8qIDEgKi9cbi8qKiovIGZ1
bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8qKlxu
XHQgKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxs
IHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNl
ZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0Ug
ZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRp
b25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFU
RU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpcblx0ICovXG5cdFxuXHQndXNl
IHN0cmljdCc7XG5cdFxuXHQvKipcblx0ICogVXNlIGludmFyaWFudCgpIHRvIGFzc2VydCBzdGF0
ZSB3aGljaCB5b3VyIHByb2dyYW0gYXNzdW1lcyB0byBiZSB0cnVlLlxuXHQgKlxuXHQgKiBQcm92
aWRlIHNwcmludGYtc3R5bGUgZm9ybWF0IChvbmx5ICVzIGlzIHN1cHBvcnRlZCkgYW5kIGFyZ3Vt
ZW50c1xuXHQgKiB0byBwcm92aWRlIGluZm9ybWF0aW9uIGFib3V0IHdoYXQgYnJva2UgYW5kIHdo
YXQgeW91IHdlcmVcblx0ICogZXhwZWN0aW5nLlxuXHQgKlxuXHQgKiBUaGUgaW52YXJpYW50IG1l
c3NhZ2Ugd2lsbCBiZSBzdHJpcHBlZCBpbiBwcm9kdWN0aW9uLCBidXQgdGhlIGludmFyaWFudFxu
XHQgKiB3aWxsIHJlbWFpbiB0byBlbnN1cmUgbG9naWMgZG9lcyBub3QgZGlmZmVyIGluIHByb2R1
Y3Rpb24uXG5cdCAqL1xuXHRcblx0dmFyIHZhbGlkYXRlRm9ybWF0ID0gZnVuY3Rpb24gdmFsaWRh
dGVGb3JtYXQoZm9ybWF0KSB7fTtcblx0XG5cdGlmIChmYWxzZSkge1xuXHQgIHZhbGlkYXRlRm9y
bWF0ID0gZnVuY3Rpb24gdmFsaWRhdGVGb3JtYXQoZm9ybWF0KSB7XG5cdCAgICBpZiAoZm9ybWF0
ID09PSB1bmRlZmluZWQpIHtcblx0ICAgICAgdGhyb3cgbmV3IEVycm9yKCdpbnZhcmlhbnQgcmVx
dWlyZXMgYW4gZXJyb3IgbWVzc2FnZSBhcmd1bWVudCcpO1xuXHQgICAgfVxuXHQgIH07XG5cdH1c
blx0XG5cdGZ1bmN0aW9uIGludmFyaWFudChjb25kaXRpb24sIGZvcm1hdCwgYSwgYiwgYywgZCwg
ZSwgZikge1xuXHQgIHZhbGlkYXRlRm9ybWF0KGZvcm1hdCk7XG5cdFxuXHQgIGlmICghY29uZGl0
aW9uKSB7XG5cdCAgICB2YXIgZXJyb3I7XG5cdCAgICBpZiAoZm9ybWF0ID09PSB1bmRlZmluZWQp
IHtcblx0ICAgICAgZXJyb3IgPSBuZXcgRXJyb3IoJ01pbmlmaWVkIGV4Y2VwdGlvbiBvY2N1cnJl
ZDsgdXNlIHRoZSBub24tbWluaWZpZWQgZGV2IGVudmlyb25tZW50ICcgKyAnZm9yIHRoZSBmdWxs
IGVycm9yIG1lc3NhZ2UgYW5kIGFkZGl0aW9uYWwgaGVscGZ1bCB3YXJuaW5ncy4nKTtcblx0ICAg
IH0gZWxzZSB7XG5cdCAgICAgIHZhciBhcmdzID0gW2EsIGIsIGMsIGQsIGUsIGZdO1xuXHQgICAg
ICB2YXIgYXJnSW5kZXggPSAwO1xuXHQgICAgICBlcnJvciA9IG5ldyBFcnJvcihmb3JtYXQucmVw
bGFjZSgvJXMvZywgZnVuY3Rpb24gKCkge1xuXHQgICAgICAgIHJldHVybiBhcmdzW2FyZ0luZGV4
KytdO1xuXHQgICAgICB9KSk7XG5cdCAgICAgIGVycm9yLm5hbWUgPSAnSW52YXJpYW50IFZpb2xh
dGlvbic7XG5cdCAgICB9XG5cdFxuXHQgICAgZXJyb3IuZnJhbWVzVG9Qb3AgPSAxOyAvLyB3ZSBk
b24ndCBjYXJlIGFib3V0IGludmFyaWFudCdzIG93biBmcmFtZVxuXHQgICAgdGhyb3cgZXJyb3I7
XG5cdCAgfVxuXHR9XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IGludmFyaWFudDtcblxuLyoqKi8g
fSxcbi8qIDIgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3Jl
cXVpcmVfXykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxNC0yMDE1LCBGYWNlYm9vaywg
SW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBj
b2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVc
blx0ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0
cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZv
dW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQg
Ki9cblx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdHZhciBlbXB0eUZ1bmN0aW9uID0gX193ZWJw
YWNrX3JlcXVpcmVfXyg3KTtcblx0XG5cdC8qKlxuXHQgKiBTaW1pbGFyIHRvIGludmFyaWFudCBi
dXQgb25seSBsb2dzIGEgd2FybmluZyBpZiB0aGUgY29uZGl0aW9uIGlzIG5vdCBtZXQuXG5cdCAq
IFRoaXMgY2FuIGJlIHVzZWQgdG8gbG9nIGlzc3VlcyBpbiBkZXZlbG9wbWVudCBlbnZpcm9ubWVu
dHMgaW4gY3JpdGljYWxcblx0ICogcGF0aHMuIFJlbW92aW5nIHRoZSBsb2dnaW5nIGNvZGUgZm9y
IHByb2R1Y3Rpb24gZW52aXJvbm1lbnRzIHdpbGwga2VlcCB0aGVcblx0ICogc2FtZSBsb2dpYyBh
bmQgZm9sbG93IHRoZSBzYW1lIGNvZGUgcGF0aHMuXG5cdCAqL1xuXHRcblx0dmFyIHdhcm5pbmcg
PSBlbXB0eUZ1bmN0aW9uO1xuXHRcblx0aWYgKGZhbHNlKSB7XG5cdCAgdmFyIHByaW50V2Fybmlu
ZyA9IGZ1bmN0aW9uIHByaW50V2FybmluZyhmb3JtYXQpIHtcblx0ICAgIGZvciAodmFyIF9sZW4g
PSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gQXJyYXkoX2xlbiA+IDEgPyBfbGVuIC0gMSA6IDAp
LCBfa2V5ID0gMTsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuXHQgICAgICBhcmdzW19rZXkgLSAx
XSA9IGFyZ3VtZW50c1tfa2V5XTtcblx0ICAgIH1cblx0XG5cdCAgICB2YXIgYXJnSW5kZXggPSAw
O1xuXHQgICAgdmFyIG1lc3NhZ2UgPSAnV2FybmluZzogJyArIGZvcm1hdC5yZXBsYWNlKC8lcy9n
LCBmdW5jdGlvbiAoKSB7XG5cdCAgICAgIHJldHVybiBhcmdzW2FyZ0luZGV4KytdO1xuXHQgICAg
fSk7XG5cdCAgICBpZiAodHlwZW9mIGNvbnNvbGUgIT09ICd1bmRlZmluZWQnKSB7XG5cdCAgICAg
IGNvbnNvbGUuZXJyb3IobWVzc2FnZSk7XG5cdCAgICB9XG5cdCAgICB0cnkge1xuXHQgICAgICAv
LyAtLS0gV2VsY29tZSB0byBkZWJ1Z2dpbmcgUmVhY3QgLS0tXG5cdCAgICAgIC8vIFRoaXMgZXJy
b3Igd2FzIHRocm93biBhcyBhIGNvbnZlbmllbmNlIHNvIHRoYXQgeW91IGNhbiB1c2UgdGhpcyBz
dGFja1xuXHQgICAgICAvLyB0byBmaW5kIHRoZSBjYWxsc2l0ZSB0aGF0IGNhdXNlZCB0aGlzIHdh
cm5pbmcgdG8gZmlyZS5cblx0ICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xuXHQgICAg
fSBjYXRjaCAoeCkge31cblx0ICB9O1xuXHRcblx0ICB3YXJuaW5nID0gZnVuY3Rpb24gd2Fybmlu
Zyhjb25kaXRpb24sIGZvcm1hdCkge1xuXHQgICAgaWYgKGZvcm1hdCA9PT0gdW5kZWZpbmVkKSB7
XG5cdCAgICAgIHRocm93IG5ldyBFcnJvcignYHdhcm5pbmcoY29uZGl0aW9uLCBmb3JtYXQsIC4u
LmFyZ3MpYCByZXF1aXJlcyBhIHdhcm5pbmcgJyArICdtZXNzYWdlIGFyZ3VtZW50Jyk7XG5cdCAg
ICB9XG5cdFxuXHQgICAgaWYgKGZvcm1hdC5pbmRleE9mKCdGYWlsZWQgQ29tcG9zaXRlIHByb3BU
eXBlOiAnKSA9PT0gMCkge1xuXHQgICAgICByZXR1cm47IC8vIElnbm9yZSBDb21wb3NpdGVDb21w
b25lbnQgcHJvcHR5cGUgY2hlY2suXG5cdCAgICB9XG5cdFxuXHQgICAgaWYgKCFjb25kaXRpb24p
IHtcblx0ICAgICAgZm9yICh2YXIgX2xlbjIgPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gQXJy
YXkoX2xlbjIgPiAyID8gX2xlbjIgLSAyIDogMCksIF9rZXkyID0gMjsgX2tleTIgPCBfbGVuMjsg
X2tleTIrKykge1xuXHQgICAgICAgIGFyZ3NbX2tleTIgLSAyXSA9IGFyZ3VtZW50c1tfa2V5Ml07
XG5cdCAgICAgIH1cblx0XG5cdCAgICAgIHByaW50V2FybmluZy5hcHBseSh1bmRlZmluZWQsIFtm
b3JtYXRdLmNvbmNhdChhcmdzKSk7XG5cdCAgICB9XG5cdCAgfTtcblx0fVxuXHRcblx0bW9kdWxl
LmV4cG9ydHMgPSB3YXJuaW5nO1xuXG4vKioqLyB9LFxuLyogMyAqL1xuLyoqKi8gZnVuY3Rpb24o
bW9kdWxlLCBleHBvcnRzKSB7XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVz
ZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQg
KiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5z
ZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBv
ZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCBy
aWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0
b3J5LlxuXHQgKlxuXHQgKiBcblx0ICovXG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdC8qKlxuXHQg
KiBXQVJOSU5HOiBETyBOT1QgbWFudWFsbHkgcmVxdWlyZSB0aGlzIG1vZHVsZS5cblx0ICogVGhp
cyBpcyBhIHJlcGxhY2VtZW50IGZvciBgaW52YXJpYW50KC4uLilgIHVzZWQgYnkgdGhlIGVycm9y
IGNvZGUgc3lzdGVtXG5cdCAqIGFuZCB3aWxsIF9vbmx5XyBiZSByZXF1aXJlZCBieSB0aGUgY29y
cmVzcG9uZGluZyBiYWJlbCBwYXNzLlxuXHQgKiBJdCBhbHdheXMgdGhyb3dzLlxuXHQgKi9cblx0
XG5cdGZ1bmN0aW9uIHJlYWN0UHJvZEludmFyaWFudChjb2RlKSB7XG5cdCAgdmFyIGFyZ0NvdW50
ID0gYXJndW1lbnRzLmxlbmd0aCAtIDE7XG5cdFxuXHQgIHZhciBtZXNzYWdlID0gJ01pbmlmaWVk
IFJlYWN0IGVycm9yICMnICsgY29kZSArICc7IHZpc2l0ICcgKyAnaHR0cDovL2ZhY2Vib29rLmdp
dGh1Yi5pby9yZWFjdC9kb2NzL2Vycm9yLWRlY29kZXIuaHRtbD9pbnZhcmlhbnQ9JyArIGNvZGU7
XG5cdFxuXHQgIGZvciAodmFyIGFyZ0lkeCA9IDA7IGFyZ0lkeCA8IGFyZ0NvdW50OyBhcmdJZHgr
Kykge1xuXHQgICAgbWVzc2FnZSArPSAnJmFyZ3NbXT0nICsgZW5jb2RlVVJJQ29tcG9uZW50KGFy
Z3VtZW50c1thcmdJZHggKyAxXSk7XG5cdCAgfVxuXHRcblx0ICBtZXNzYWdlICs9ICcgZm9yIHRo
ZSBmdWxsIG1lc3NhZ2Ugb3IgdXNlIHRoZSBub24tbWluaWZpZWQgZGV2IGVudmlyb25tZW50JyAr
ICcgZm9yIGZ1bGwgZXJyb3JzIGFuZCBhZGRpdGlvbmFsIGhlbHBmdWwgd2FybmluZ3MuJztcblx0
XG5cdCAgdmFyIGVycm9yID0gbmV3IEVycm9yKG1lc3NhZ2UpO1xuXHQgIGVycm9yLm5hbWUgPSAn
SW52YXJpYW50IFZpb2xhdGlvbic7XG5cdCAgZXJyb3IuZnJhbWVzVG9Qb3AgPSAxOyAvLyB3ZSBk
b24ndCBjYXJlIGFib3V0IHJlYWN0UHJvZEludmFyaWFudCdzIG93biBmcmFtZVxuXHRcblx0ICB0
aHJvdyBlcnJvcjtcblx0fVxuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSByZWFjdFByb2RJbnZhcmlh
bnQ7XG5cbi8qKiovIH0sXG4vKiA0ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMp
IHtcblxuXHQvKlxuXHRvYmplY3QtYXNzaWduXG5cdChjKSBTaW5kcmUgU29yaHVzXG5cdEBsaWNl
bnNlIE1JVFxuXHQqL1xuXHRcblx0J3VzZSBzdHJpY3QnO1xuXHQvKiBlc2xpbnQtZGlzYWJsZSBu
by11bnVzZWQtdmFycyAqL1xuXHR2YXIgZ2V0T3duUHJvcGVydHlTeW1ib2xzID0gT2JqZWN0Lmdl
dE93blByb3BlcnR5U3ltYm9scztcblx0dmFyIGhhc093blByb3BlcnR5ID0gT2JqZWN0LnByb3Rv
dHlwZS5oYXNPd25Qcm9wZXJ0eTtcblx0dmFyIHByb3BJc0VudW1lcmFibGUgPSBPYmplY3QucHJv
dG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlO1xuXHRcblx0ZnVuY3Rpb24gdG9PYmplY3QodmFs
KSB7XG5cdFx0aWYgKHZhbCA9PT0gbnVsbCB8fCB2YWwgPT09IHVuZGVmaW5lZCkge1xuXHRcdFx0
dGhyb3cgbmV3IFR5cGVFcnJvcignT2JqZWN0LmFzc2lnbiBjYW5ub3QgYmUgY2FsbGVkIHdpdGgg
bnVsbCBvciB1bmRlZmluZWQnKTtcblx0XHR9XG5cdFxuXHRcdHJldHVybiBPYmplY3QodmFsKTtc
blx0fVxuXHRcblx0ZnVuY3Rpb24gc2hvdWxkVXNlTmF0aXZlKCkge1xuXHRcdHRyeSB7XG5cdFx0
XHRpZiAoIU9iamVjdC5hc3NpZ24pIHtcblx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0fVxu
XHRcblx0XHRcdC8vIERldGVjdCBidWdneSBwcm9wZXJ0eSBlbnVtZXJhdGlvbiBvcmRlciBpbiBv
bGRlciBWOCB2ZXJzaW9ucy5cblx0XG5cdFx0XHQvLyBodHRwczovL2J1Z3MuY2hyb21pdW0ub3Jn
L3AvdjgvaXNzdWVzL2RldGFpbD9pZD00MTE4XG5cdFx0XHR2YXIgdGVzdDEgPSBuZXcgU3RyaW5n
KCdhYmMnKTsgIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tbmV3LXdyYXBwZXJzXG5cdFx0XHR0
ZXN0MVs1XSA9ICdkZSc7XG5cdFx0XHRpZiAoT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGVz
dDEpWzBdID09PSAnNScpIHtcblx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0fVxuXHRcblx0
XHRcdC8vIGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC92OC9pc3N1ZXMvZGV0YWlsP2lkPTMw
NTZcblx0XHRcdHZhciB0ZXN0MiA9IHt9O1xuXHRcdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCAxMDsg
aSsrKSB7XG5cdFx0XHRcdHRlc3QyWydfJyArIFN0cmluZy5mcm9tQ2hhckNvZGUoaSldID0gaTtc
blx0XHRcdH1cblx0XHRcdHZhciBvcmRlcjIgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0
ZXN0MikubWFwKGZ1bmN0aW9uIChuKSB7XG5cdFx0XHRcdHJldHVybiB0ZXN0MltuXTtcblx0XHRc
dH0pO1xuXHRcdFx0aWYgKG9yZGVyMi5qb2luKCcnKSAhPT0gJzAxMjM0NTY3ODknKSB7XG5cdFx0
XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdH1cblx0XG5cdFx0XHQvLyBodHRwczovL2J1Z3MuY2hy
b21pdW0ub3JnL3AvdjgvaXNzdWVzL2RldGFpbD9pZD0zMDU2XG5cdFx0XHR2YXIgdGVzdDMgPSB7
fTtcblx0XHRcdCdhYmNkZWZnaGlqa2xtbm9wcXJzdCcuc3BsaXQoJycpLmZvckVhY2goZnVuY3Rp
b24gKGxldHRlcikge1xuXHRcdFx0XHR0ZXN0M1tsZXR0ZXJdID0gbGV0dGVyO1xuXHRcdFx0fSk7
XG5cdFx0XHRpZiAoT2JqZWN0LmtleXMoT2JqZWN0LmFzc2lnbih7fSwgdGVzdDMpKS5qb2luKCcn
KSAhPT1cblx0XHRcdFx0XHQnYWJjZGVmZ2hpamtsbW5vcHFyc3QnKSB7XG5cdFx0XHRcdHJldHVy
biBmYWxzZTtcblx0XHRcdH1cblx0XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9IGNhdGNoIChl
cnIpIHtcblx0XHRcdC8vIFdlIGRvbid0IGV4cGVjdCBhbnkgb2YgdGhlIGFib3ZlIHRvIHRocm93
LCBidXQgYmV0dGVyIHRvIGJlIHNhZmUuXG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXHR9
XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IHNob3VsZFVzZU5hdGl2ZSgpID8gT2JqZWN0LmFzc2ln
biA6IGZ1bmN0aW9uICh0YXJnZXQsIHNvdXJjZSkge1xuXHRcdHZhciBmcm9tO1xuXHRcdHZhciB0
byA9IHRvT2JqZWN0KHRhcmdldCk7XG5cdFx0dmFyIHN5bWJvbHM7XG5cdFxuXHRcdGZvciAodmFy
IHMgPSAxOyBzIDwgYXJndW1lbnRzLmxlbmd0aDsgcysrKSB7XG5cdFx0XHRmcm9tID0gT2JqZWN0
KGFyZ3VtZW50c1tzXSk7XG5cdFxuXHRcdFx0Zm9yICh2YXIga2V5IGluIGZyb20pIHtcblx0XHRc
dFx0aWYgKGhhc093blByb3BlcnR5LmNhbGwoZnJvbSwga2V5KSkge1xuXHRcdFx0XHRcdHRvW2tl
eV0gPSBmcm9tW2tleV07XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XG5cdFx0XHRpZiAoZ2V0T3du
UHJvcGVydHlTeW1ib2xzKSB7XG5cdFx0XHRcdHN5bWJvbHMgPSBnZXRPd25Qcm9wZXJ0eVN5bWJv
bHMoZnJvbSk7XG5cdFx0XHRcdGZvciAodmFyIGkgPSAwOyBpIDwgc3ltYm9scy5sZW5ndGg7IGkr
Kykge1xuXHRcdFx0XHRcdGlmIChwcm9wSXNFbnVtZXJhYmxlLmNhbGwoZnJvbSwgc3ltYm9sc1tp
XSkpIHtcblx0XHRcdFx0XHRcdHRvW3N5bWJvbHNbaV1dID0gZnJvbVtzeW1ib2xzW2ldXTtcblx0
XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdFxuXHRcdHJldHVybiB0bztc
blx0fTtcblxuXG4vKioqLyB9LFxuLyogNSAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBv
cnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAyMDEz
LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAq
XG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBs
aWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0
b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0
ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBk
aXJlY3RvcnkuXG5cdCAqXG5cdCAqL1xuXHRcblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0dmFyIF9w
cm9kSW52YXJpYW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXygzKTtcblx0XG5cdHZhciBET01Qcm9w
ZXJ0eSA9IF9fd2VicGFja19yZXF1aXJlX18oMTUpO1xuXHR2YXIgUmVhY3RET01Db21wb25lbnRG
bGFncyA9IF9fd2VicGFja19yZXF1aXJlX18oNjEpO1xuXHRcblx0dmFyIGludmFyaWFudCA9IF9f
d2VicGFja19yZXF1aXJlX18oMSk7XG5cdFxuXHR2YXIgQVRUUl9OQU1FID0gRE9NUHJvcGVydHku
SURfQVRUUklCVVRFX05BTUU7XG5cdHZhciBGbGFncyA9IFJlYWN0RE9NQ29tcG9uZW50RmxhZ3M7
XG5cdFxuXHR2YXIgaW50ZXJuYWxJbnN0YW5jZUtleSA9ICdfX3JlYWN0SW50ZXJuYWxJbnN0YW5j
ZSQnICsgTWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc2xpY2UoMik7XG5cdFxuXHQvKipcblx0
ICogQ2hlY2sgaWYgYSBnaXZlbiBub2RlIHNob3VsZCBiZSBjYWNoZWQuXG5cdCAqL1xuXHRmdW5j
dGlvbiBzaG91bGRQcmVjYWNoZU5vZGUobm9kZSwgbm9kZUlEKSB7XG5cdCAgcmV0dXJuIG5vZGUu
bm9kZVR5cGUgPT09IDEgJiYgbm9kZS5nZXRBdHRyaWJ1dGUoQVRUUl9OQU1FKSA9PT0gU3RyaW5n
KG5vZGVJRCkgfHwgbm9kZS5ub2RlVHlwZSA9PT0gOCAmJiBub2RlLm5vZGVWYWx1ZSA9PT0gJyBy
ZWFjdC10ZXh0OiAnICsgbm9kZUlEICsgJyAnIHx8IG5vZGUubm9kZVR5cGUgPT09IDggJiYgbm9k
ZS5ub2RlVmFsdWUgPT09ICcgcmVhY3QtZW1wdHk6ICcgKyBub2RlSUQgKyAnICc7XG5cdH1cblx0
XG5cdC8qKlxuXHQgKiBEcmlsbCBkb3duICh0aHJvdWdoIGNvbXBvc2l0ZXMgYW5kIGVtcHR5IGNv
bXBvbmVudHMpIHVudGlsIHdlIGdldCBhIGhvc3Qgb3Jcblx0ICogaG9zdCB0ZXh0IGNvbXBvbmVu
dC5cblx0ICpcblx0ICogVGhpcyBpcyBwcmV0dHkgcG9seW1vcnBoaWMgYnV0IHVuYXZvaWRhYmxl
IHdpdGggdGhlIGN1cnJlbnQgc3RydWN0dXJlIHdlIGhhdmVcblx0ICogZm9yIGBfcmVuZGVyZWRD
aGlsZHJlbmAuXG5cdCAqL1xuXHRmdW5jdGlvbiBnZXRSZW5kZXJlZEhvc3RPclRleHRGcm9tQ29t
cG9uZW50KGNvbXBvbmVudCkge1xuXHQgIHZhciByZW5kZXJlZDtcblx0ICB3aGlsZSAocmVuZGVy
ZWQgPSBjb21wb25lbnQuX3JlbmRlcmVkQ29tcG9uZW50KSB7XG5cdCAgICBjb21wb25lbnQgPSBy
ZW5kZXJlZDtcblx0ICB9XG5cdCAgcmV0dXJuIGNvbXBvbmVudDtcblx0fVxuXHRcblx0LyoqXG5c
dCAqIFBvcHVsYXRlIGBfaG9zdE5vZGVgIG9uIHRoZSByZW5kZXJlZCBob3N0L3RleHQgY29tcG9u
ZW50IHdpdGggdGhlIGdpdmVuXG5cdCAqIERPTSBub2RlLiBUaGUgcGFzc2VkIGBpbnN0YCBjYW4g
YmUgYSBjb21wb3NpdGUuXG5cdCAqL1xuXHRmdW5jdGlvbiBwcmVjYWNoZU5vZGUoaW5zdCwgbm9k
ZSkge1xuXHQgIHZhciBob3N0SW5zdCA9IGdldFJlbmRlcmVkSG9zdE9yVGV4dEZyb21Db21wb25l
bnQoaW5zdCk7XG5cdCAgaG9zdEluc3QuX2hvc3ROb2RlID0gbm9kZTtcblx0ICBub2RlW2ludGVy
bmFsSW5zdGFuY2VLZXldID0gaG9zdEluc3Q7XG5cdH1cblx0XG5cdGZ1bmN0aW9uIHVuY2FjaGVO
b2RlKGluc3QpIHtcblx0ICB2YXIgbm9kZSA9IGluc3QuX2hvc3ROb2RlO1xuXHQgIGlmIChub2Rl
KSB7XG5cdCAgICBkZWxldGUgbm9kZVtpbnRlcm5hbEluc3RhbmNlS2V5XTtcblx0ICAgIGluc3Qu
X2hvc3ROb2RlID0gbnVsbDtcblx0ICB9XG5cdH1cblx0XG5cdC8qKlxuXHQgKiBQb3B1bGF0ZSBg
X2hvc3ROb2RlYCBvbiBlYWNoIGNoaWxkIG9mIGBpbnN0YCwgYXNzdW1pbmcgdGhhdCB0aGUgY2hp
bGRyZW5cblx0ICogbWF0Y2ggdXAgd2l0aCB0aGUgRE9NIChlbGVtZW50KSBjaGlsZHJlbiBvZiBg
bm9kZWAuXG5cdCAqXG5cdCAqIFdlIGNhY2hlIGVudGlyZSBsZXZlbHMgYXQgb25jZSB0byBhdm9p
ZCBhbiBuXjIgcHJvYmxlbSB3aGVyZSB3ZSBhY2Nlc3MgdGhlXG5cdCAqIGNoaWxkcmVuIG9mIGEg
bm9kZSBzZXF1ZW50aWFsbHkgYW5kIGhhdmUgdG8gd2FsayBmcm9tIHRoZSBzdGFydCB0byBvdXIg
dGFyZ2V0XG5cdCAqIG5vZGUgZXZlcnkgdGltZS5cblx0ICpcblx0ICogU2luY2Ugd2UgdXBkYXRl
IGBfcmVuZGVyZWRDaGlsZHJlbmAgYW5kIHRoZSBhY3R1YWwgRE9NIGF0IChzbGlnaHRseSlcblx0
ICogZGlmZmVyZW50IHRpbWVzLCB3ZSBjb3VsZCByYWNlIGhlcmUgYW5kIHNlZSBhIG5ld2VyIGBf
cmVuZGVyZWRDaGlsZHJlbmAgdGhhblxuXHQgKiB0aGUgRE9NIG5vZGVzIHdlIHNlZS4gVG8gYXZv
aWQgdGhpcywgUmVhY3RNdWx0aUNoaWxkIGNhbGxzXG5cdCAqIGBwcmVwYXJlVG9NYW5hZ2VDaGls
ZHJlbmAgYmVmb3JlIHdlIGNoYW5nZSBgX3JlbmRlcmVkQ2hpbGRyZW5gLCBhdCB3aGljaFxuXHQg
KiB0aW1lIHRoZSBjb250YWluZXIncyBjaGlsZCBub2RlcyBhcmUgYWx3YXlzIGNhY2hlZCAodW50
aWwgaXQgdW5tb3VudHMpLlxuXHQgKi9cblx0ZnVuY3Rpb24gcHJlY2FjaGVDaGlsZE5vZGVzKGlu
c3QsIG5vZGUpIHtcblx0ICBpZiAoaW5zdC5fZmxhZ3MgJiBGbGFncy5oYXNDYWNoZWRDaGlsZE5v
ZGVzKSB7XG5cdCAgICByZXR1cm47XG5cdCAgfVxuXHQgIHZhciBjaGlsZHJlbiA9IGluc3QuX3Jl
bmRlcmVkQ2hpbGRyZW47XG5cdCAgdmFyIGNoaWxkTm9kZSA9IG5vZGUuZmlyc3RDaGlsZDtcblx0
ICBvdXRlcjogZm9yICh2YXIgbmFtZSBpbiBjaGlsZHJlbikge1xuXHQgICAgaWYgKCFjaGlsZHJl
bi5oYXNPd25Qcm9wZXJ0eShuYW1lKSkge1xuXHQgICAgICBjb250aW51ZTtcblx0ICAgIH1cblx0
ICAgIHZhciBjaGlsZEluc3QgPSBjaGlsZHJlbltuYW1lXTtcblx0ICAgIHZhciBjaGlsZElEID0g
Z2V0UmVuZGVyZWRIb3N0T3JUZXh0RnJvbUNvbXBvbmVudChjaGlsZEluc3QpLl9kb21JRDtcblx0
ICAgIGlmIChjaGlsZElEID09PSAwKSB7XG5cdCAgICAgIC8vIFdlJ3JlIGN1cnJlbnRseSB1bm1v
dW50aW5nIHRoaXMgY2hpbGQgaW4gUmVhY3RNdWx0aUNoaWxkOyBza2lwIGl0LlxuXHQgICAgICBj
b250aW51ZTtcblx0ICAgIH1cblx0ICAgIC8vIFdlIGFzc3VtZSB0aGUgY2hpbGQgbm9kZXMgYXJl
IGluIHRoZSBzYW1lIG9yZGVyIGFzIHRoZSBjaGlsZCBpbnN0YW5jZXMuXG5cdCAgICBmb3IgKDsg
Y2hpbGROb2RlICE9PSBudWxsOyBjaGlsZE5vZGUgPSBjaGlsZE5vZGUubmV4dFNpYmxpbmcpIHtc
blx0ICAgICAgaWYgKHNob3VsZFByZWNhY2hlTm9kZShjaGlsZE5vZGUsIGNoaWxkSUQpKSB7XG5c
dCAgICAgICAgcHJlY2FjaGVOb2RlKGNoaWxkSW5zdCwgY2hpbGROb2RlKTtcblx0ICAgICAgICBj
b250aW51ZSBvdXRlcjtcblx0ICAgICAgfVxuXHQgICAgfVxuXHQgICAgLy8gV2UgcmVhY2hlZCB0
aGUgZW5kIG9mIHRoZSBET00gY2hpbGRyZW4gd2l0aG91dCBmaW5kaW5nIGFuIElEIG1hdGNoLlxu
XHQgICAgIHRydWUgPyAgZmFsc2UgPyBpbnZhcmlhbnQoZmFsc2UsICdVbmFibGUgdG8gZmluZCBl
bGVtZW50IHdpdGggSUQgJXMuJywgY2hpbGRJRCkgOiBfcHJvZEludmFyaWFudCgnMzInLCBjaGls
ZElEKSA6IHZvaWQgMDtcblx0ICB9XG5cdCAgaW5zdC5fZmxhZ3MgfD0gRmxhZ3MuaGFzQ2FjaGVk
Q2hpbGROb2Rlcztcblx0fVxuXHRcblx0LyoqXG5cdCAqIEdpdmVuIGEgRE9NIG5vZGUsIHJldHVy
biB0aGUgY2xvc2VzdCBSZWFjdERPTUNvbXBvbmVudCBvclxuXHQgKiBSZWFjdERPTVRleHRDb21w
b25lbnQgaW5zdGFuY2UgYW5jZXN0b3IuXG5cdCAqL1xuXHRmdW5jdGlvbiBnZXRDbG9zZXN0SW5z
dGFuY2VGcm9tTm9kZShub2RlKSB7XG5cdCAgaWYgKG5vZGVbaW50ZXJuYWxJbnN0YW5jZUtleV0p
IHtcblx0ICAgIHJldHVybiBub2RlW2ludGVybmFsSW5zdGFuY2VLZXldO1xuXHQgIH1cblx0XG5c
dCAgLy8gV2FsayB1cCB0aGUgdHJlZSB1bnRpbCB3ZSBmaW5kIGFuIGFuY2VzdG9yIHdob3NlIGlu
c3RhbmNlIHdlIGhhdmUgY2FjaGVkLlxuXHQgIHZhciBwYXJlbnRzID0gW107XG5cdCAgd2hpbGUg
KCFub2RlW2ludGVybmFsSW5zdGFuY2VLZXldKSB7XG5cdCAgICBwYXJlbnRzLnB1c2gobm9kZSk7
XG5cdCAgICBpZiAobm9kZS5wYXJlbnROb2RlKSB7XG5cdCAgICAgIG5vZGUgPSBub2RlLnBhcmVu
dE5vZGU7XG5cdCAgICB9IGVsc2Uge1xuXHQgICAgICAvLyBUb3Agb2YgdGhlIHRyZWUuIFRoaXMg
bm9kZSBtdXN0IG5vdCBiZSBwYXJ0IG9mIGEgUmVhY3QgdHJlZSAob3IgaXNcblx0ICAgICAgLy8g
dW5tb3VudGVkLCBwb3RlbnRpYWxseSkuXG5cdCAgICAgIHJldHVybiBudWxsO1xuXHQgICAgfVxu
XHQgIH1cblx0XG5cdCAgdmFyIGNsb3Nlc3Q7XG5cdCAgdmFyIGluc3Q7XG5cdCAgZm9yICg7IG5v
ZGUgJiYgKGluc3QgPSBub2RlW2ludGVybmFsSW5zdGFuY2VLZXldKTsgbm9kZSA9IHBhcmVudHMu
cG9wKCkpIHtcblx0ICAgIGNsb3Nlc3QgPSBpbnN0O1xuXHQgICAgaWYgKHBhcmVudHMubGVuZ3Ro
KSB7XG5cdCAgICAgIHByZWNhY2hlQ2hpbGROb2RlcyhpbnN0LCBub2RlKTtcblx0ICAgIH1cblx0
ICB9XG5cdFxuXHQgIHJldHVybiBjbG9zZXN0O1xuXHR9XG5cdFxuXHQvKipcblx0ICogR2l2ZW4g
YSBET00gbm9kZSwgcmV0dXJuIHRoZSBSZWFjdERPTUNvbXBvbmVudCBvciBSZWFjdERPTVRleHRD
b21wb25lbnRcblx0ICogaW5zdGFuY2UsIG9yIG51bGwgaWYgdGhlIG5vZGUgd2FzIG5vdCByZW5k
ZXJlZCBieSB0aGlzIFJlYWN0LlxuXHQgKi9cblx0ZnVuY3Rpb24gZ2V0SW5zdGFuY2VGcm9tTm9k
ZShub2RlKSB7XG5cdCAgdmFyIGluc3QgPSBnZXRDbG9zZXN0SW5zdGFuY2VGcm9tTm9kZShub2Rl
KTtcblx0ICBpZiAoaW5zdCAhPSBudWxsICYmIGluc3QuX2hvc3ROb2RlID09PSBub2RlKSB7XG5c
dCAgICByZXR1cm4gaW5zdDtcblx0ICB9IGVsc2Uge1xuXHQgICAgcmV0dXJuIG51bGw7XG5cdCAg
fVxuXHR9XG5cdFxuXHQvKipcblx0ICogR2l2ZW4gYSBSZWFjdERPTUNvbXBvbmVudCBvciBSZWFj
dERPTVRleHRDb21wb25lbnQsIHJldHVybiB0aGUgY29ycmVzcG9uZGluZ1xuXHQgKiBET00gbm9k
ZS5cblx0ICovXG5cdGZ1bmN0aW9uIGdldE5vZGVGcm9tSW5zdGFuY2UoaW5zdCkge1xuXHQgIC8v
IFdpdGhvdXQgdGhpcyBmaXJzdCBpbnZhcmlhbnQsIHBhc3NpbmcgYSBub24tRE9NLWNvbXBvbmVu
dCB0cmlnZ2VycyB0aGUgbmV4dFxuXHQgIC8vIGludmFyaWFudCBmb3IgYSBtaXNzaW5nIHBhcmVu
dCwgd2hpY2ggaXMgc3VwZXIgY29uZnVzaW5nLlxuXHQgICEoaW5zdC5faG9zdE5vZGUgIT09IHVu
ZGVmaW5lZCkgPyAgZmFsc2UgPyBpbnZhcmlhbnQoZmFsc2UsICdnZXROb2RlRnJvbUluc3RhbmNl
OiBJbnZhbGlkIGFyZ3VtZW50LicpIDogX3Byb2RJbnZhcmlhbnQoJzMzJykgOiB2b2lkIDA7XG5c
dFxuXHQgIGlmIChpbnN0Ll9ob3N0Tm9kZSkge1xuXHQgICAgcmV0dXJuIGluc3QuX2hvc3ROb2Rl
O1xuXHQgIH1cblx0XG5cdCAgLy8gV2FsayB1cCB0aGUgdHJlZSB1bnRpbCB3ZSBmaW5kIGFuIGFu
Y2VzdG9yIHdob3NlIERPTSBub2RlIHdlIGhhdmUgY2FjaGVkLlxuXHQgIHZhciBwYXJlbnRzID0g
W107XG5cdCAgd2hpbGUgKCFpbnN0Ll9ob3N0Tm9kZSkge1xuXHQgICAgcGFyZW50cy5wdXNoKGlu
c3QpO1xuXHQgICAgIWluc3QuX2hvc3RQYXJlbnQgPyAgZmFsc2UgPyBpbnZhcmlhbnQoZmFsc2Us
ICdSZWFjdCBET00gdHJlZSByb290IHNob3VsZCBhbHdheXMgaGF2ZSBhIG5vZGUgcmVmZXJlbmNl
LicpIDogX3Byb2RJbnZhcmlhbnQoJzM0JykgOiB2b2lkIDA7XG5cdCAgICBpbnN0ID0gaW5zdC5f
aG9zdFBhcmVudDtcblx0ICB9XG5cdFxuXHQgIC8vIE5vdyBwYXJlbnRzIGNvbnRhaW5zIGVhY2gg
YW5jZXN0b3IgdGhhdCBkb2VzICpub3QqIGhhdmUgYSBjYWNoZWQgbmF0aXZlXG5cdCAgLy8gbm9k
ZSwgYW5kIGBpbnN0YCBpcyB0aGUgZGVlcGVzdCBhbmNlc3RvciB0aGF0IGRvZXMuXG5cdCAgZm9y
ICg7IHBhcmVudHMubGVuZ3RoOyBpbnN0ID0gcGFyZW50cy5wb3AoKSkge1xuXHQgICAgcHJlY2Fj
aGVDaGlsZE5vZGVzKGluc3QsIGluc3QuX2hvc3ROb2RlKTtcblx0ICB9XG5cdFxuXHQgIHJldHVy
biBpbnN0Ll9ob3N0Tm9kZTtcblx0fVxuXHRcblx0dmFyIFJlYWN0RE9NQ29tcG9uZW50VHJlZSA9
IHtcblx0ICBnZXRDbG9zZXN0SW5zdGFuY2VGcm9tTm9kZTogZ2V0Q2xvc2VzdEluc3RhbmNlRnJv
bU5vZGUsXG5cdCAgZ2V0SW5zdGFuY2VGcm9tTm9kZTogZ2V0SW5zdGFuY2VGcm9tTm9kZSxcblx0
ICBnZXROb2RlRnJvbUluc3RhbmNlOiBnZXROb2RlRnJvbUluc3RhbmNlLFxuXHQgIHByZWNhY2hl
Q2hpbGROb2RlczogcHJlY2FjaGVDaGlsZE5vZGVzLFxuXHQgIHByZWNhY2hlTm9kZTogcHJlY2Fj
aGVOb2RlLFxuXHQgIHVuY2FjaGVOb2RlOiB1bmNhY2hlTm9kZVxuXHR9O1xuXHRcblx0bW9kdWxl
LmV4cG9ydHMgPSBSZWFjdERPTUNvbXBvbmVudFRyZWU7XG5cbi8qKiovIH0sXG4vKiA2ICovXG4v
KioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuXHQvKipcblx0ICogQ29weXJpZ2h0
IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2
ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJT
RC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJv
b3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0
ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0
aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqL1xuXHRcblx0J3VzZSBzdHJpY3QnO1xuXHRc
blx0dmFyIGNhblVzZURPTSA9ICEhKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHdp
bmRvdy5kb2N1bWVudCAmJiB3aW5kb3cuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCk7XG5cdFxuXHQv
Kipcblx0ICogU2ltcGxlLCBsaWdodHdlaWdodCBtb2R1bGUgYXNzaXN0aW5nIHdpdGggdGhlIGRl
dGVjdGlvbiBhbmQgY29udGV4dCBvZlxuXHQgKiBXb3JrZXIuIEhlbHBzIGF2b2lkIGNpcmN1bGFy
IGRlcGVuZGVuY2llcyBhbmQgYWxsb3dzIGNvZGUgdG8gcmVhc29uIGFib3V0XG5cdCAqIHdoZXRo
ZXIgb3Igbm90IHRoZXkgYXJlIGluIGEgV29ya2VyLCBldmVuIGlmIHRoZXkgbmV2ZXIgaW5jbHVk
ZSB0aGUgbWFpblxuXHQgKiBgUmVhY3RXb3JrZXJgIGRlcGVuZGVuY3kuXG5cdCAqL1xuXHR2YXIg
RXhlY3V0aW9uRW52aXJvbm1lbnQgPSB7XG5cdFxuXHQgIGNhblVzZURPTTogY2FuVXNlRE9NLFxu
XHRcblx0ICBjYW5Vc2VXb3JrZXJzOiB0eXBlb2YgV29ya2VyICE9PSAndW5kZWZpbmVkJyxcblx0
XG5cdCAgY2FuVXNlRXZlbnRMaXN0ZW5lcnM6IGNhblVzZURPTSAmJiAhISh3aW5kb3cuYWRkRXZl
bnRMaXN0ZW5lciB8fCB3aW5kb3cuYXR0YWNoRXZlbnQpLFxuXHRcblx0ICBjYW5Vc2VWaWV3cG9y
dDogY2FuVXNlRE9NICYmICEhd2luZG93LnNjcmVlbixcblx0XG5cdCAgaXNJbldvcmtlcjogIWNh
blVzZURPTSAvLyBGb3Igbm93LCB0aGlzIGlzIHRydWUgLSBtaWdodCBjaGFuZ2UgaW4gdGhlIGZ1
dHVyZS5cblx0XG5cdH07XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IEV4ZWN1dGlvbkVudmlyb25t
ZW50O1xuXG4vKioqLyB9LFxuLyogNyAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRz
KSB7XG5cblx0XCJ1c2Ugc3RyaWN0XCI7XG5cdFxuXHQvKipcblx0ICogQ29weXJpZ2h0IChjKSAy
MDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5c
dCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHls
ZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGly
ZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2Yg
cGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2Ft
ZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqIFxuXHQgKi9cblx0XG5cdGZ1bmN0aW9uIG1ha2VFbXB0
eUZ1bmN0aW9uKGFyZykge1xuXHQgIHJldHVybiBmdW5jdGlvbiAoKSB7XG5cdCAgICByZXR1cm4g
YXJnO1xuXHQgIH07XG5cdH1cblx0XG5cdC8qKlxuXHQgKiBUaGlzIGZ1bmN0aW9uIGFjY2VwdHMg
YW5kIGRpc2NhcmRzIGlucHV0czsgaXQgaGFzIG5vIHNpZGUgZWZmZWN0cy4gVGhpcyBpc1xuXHQg
KiBwcmltYXJpbHkgdXNlZnVsIGlkaW9tYXRpY2FsbHkgZm9yIG92ZXJyaWRhYmxlIGZ1bmN0aW9u
IGVuZHBvaW50cyB3aGljaFxuXHQgKiBhbHdheXMgbmVlZCB0byBiZSBjYWxsYWJsZSwgc2luY2Ug
SlMgbGFja3MgYSBudWxsLWNhbGwgaWRpb20gYWxhIENvY29hLlxuXHQgKi9cblx0dmFyIGVtcHR5
RnVuY3Rpb24gPSBmdW5jdGlvbiBlbXB0eUZ1bmN0aW9uKCkge307XG5cdFxuXHRlbXB0eUZ1bmN0
aW9uLnRoYXRSZXR1cm5zID0gbWFrZUVtcHR5RnVuY3Rpb247XG5cdGVtcHR5RnVuY3Rpb24udGhh
dFJldHVybnNGYWxzZSA9IG1ha2VFbXB0eUZ1bmN0aW9uKGZhbHNlKTtcblx0ZW1wdHlGdW5jdGlv
bi50aGF0UmV0dXJuc1RydWUgPSBtYWtlRW1wdHlGdW5jdGlvbih0cnVlKTtcblx0ZW1wdHlGdW5j
dGlvbi50aGF0UmV0dXJuc051bGwgPSBtYWtlRW1wdHlGdW5jdGlvbihudWxsKTtcblx0ZW1wdHlG
dW5jdGlvbi50aGF0UmV0dXJuc1RoaXMgPSBmdW5jdGlvbiAoKSB7XG5cdCAgcmV0dXJuIHRoaXM7
XG5cdH07XG5cdGVtcHR5RnVuY3Rpb24udGhhdFJldHVybnNBcmd1bWVudCA9IGZ1bmN0aW9uIChh
cmcpIHtcblx0ICByZXR1cm4gYXJnO1xuXHR9O1xuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBlbXB0
eUZ1bmN0aW9uO1xuXG4vKioqLyB9LFxuLyogOCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBl
eHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAy
MDE2LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5c
dCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHls
ZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGly
ZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2Yg
cGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2Ft
ZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqIFxuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0
XG5cdC8vIFRydXN0IHRoZSBkZXZlbG9wZXIgdG8gb25seSB1c2UgUmVhY3RJbnN0cnVtZW50YXRp
b24gd2l0aCBhIF9fREVWX18gY2hlY2tcblx0XG5cdHZhciBkZWJ1Z1Rvb2wgPSBudWxsO1xuXHRc
blx0aWYgKGZhbHNlKSB7XG5cdCAgdmFyIFJlYWN0RGVidWdUb29sID0gcmVxdWlyZSgnLi9SZWFj
dERlYnVnVG9vbCcpO1xuXHQgIGRlYnVnVG9vbCA9IFJlYWN0RGVidWdUb29sO1xuXHR9XG5cdFxu
XHRtb2R1bGUuZXhwb3J0cyA9IHsgZGVidWdUb29sOiBkZWJ1Z1Rvb2wgfTtcblxuLyoqKi8gfSxc
bi8qIDkgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVp
cmVfXykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywg
SW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBj
b2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVc
blx0ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0
cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZv
dW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQg
Ki9cblx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdHZhciBfcHJvZEludmFyaWFudCA9IF9fd2Vi
cGFja19yZXF1aXJlX18oMyksXG5cdCAgICBfYXNzaWduID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0
KTtcblx0XG5cdHZhciBDYWxsYmFja1F1ZXVlID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1OSk7XG5c
dHZhciBQb29sZWRDbGFzcyA9IF9fd2VicGFja19yZXF1aXJlX18oMTMpO1xuXHR2YXIgUmVhY3RG
ZWF0dXJlRmxhZ3MgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDY0KTtcblx0dmFyIFJlYWN0UmVjb25j
aWxlciA9IF9fd2VicGFja19yZXF1aXJlX18oMTYpO1xuXHR2YXIgVHJhbnNhY3Rpb24gPSBfX3dl
YnBhY2tfcmVxdWlyZV9fKDI3KTtcblx0XG5cdHZhciBpbnZhcmlhbnQgPSBfX3dlYnBhY2tfcmVx
dWlyZV9fKDEpO1xuXHRcblx0dmFyIGRpcnR5Q29tcG9uZW50cyA9IFtdO1xuXHR2YXIgdXBkYXRl
QmF0Y2hOdW1iZXIgPSAwO1xuXHR2YXIgYXNhcENhbGxiYWNrUXVldWUgPSBDYWxsYmFja1F1ZXVl
LmdldFBvb2xlZCgpO1xuXHR2YXIgYXNhcEVucXVldWVkID0gZmFsc2U7XG5cdFxuXHR2YXIgYmF0
Y2hpbmdTdHJhdGVneSA9IG51bGw7XG5cdFxuXHRmdW5jdGlvbiBlbnN1cmVJbmplY3RlZCgpIHtc
blx0ICAhKFJlYWN0VXBkYXRlcy5SZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9uICYmIGJhdGNoaW5n
U3RyYXRlZ3kpID8gIGZhbHNlID8gaW52YXJpYW50KGZhbHNlLCAnUmVhY3RVcGRhdGVzOiBtdXN0
IGluamVjdCBhIHJlY29uY2lsZSB0cmFuc2FjdGlvbiBjbGFzcyBhbmQgYmF0Y2hpbmcgc3RyYXRl
Z3knKSA6IF9wcm9kSW52YXJpYW50KCcxMjMnKSA6IHZvaWQgMDtcblx0fVxuXHRcblx0dmFyIE5F
U1RFRF9VUERBVEVTID0ge1xuXHQgIGluaXRpYWxpemU6IGZ1bmN0aW9uICgpIHtcblx0ICAgIHRo
aXMuZGlydHlDb21wb25lbnRzTGVuZ3RoID0gZGlydHlDb21wb25lbnRzLmxlbmd0aDtcblx0ICB9
LFxuXHQgIGNsb3NlOiBmdW5jdGlvbiAoKSB7XG5cdCAgICBpZiAodGhpcy5kaXJ0eUNvbXBvbmVu
dHNMZW5ndGggIT09IGRpcnR5Q29tcG9uZW50cy5sZW5ndGgpIHtcblx0ICAgICAgLy8gQWRkaXRp
b25hbCB1cGRhdGVzIHdlcmUgZW5xdWV1ZWQgYnkgY29tcG9uZW50RGlkVXBkYXRlIGhhbmRsZXJz
IG9yXG5cdCAgICAgIC8vIHNpbWlsYXI7IGJlZm9yZSBvdXIgb3duIFVQREFURV9RVUVVRUlORyB3
cmFwcGVyIGNsb3Nlcywgd2Ugd2FudCB0byBydW5cblx0ICAgICAgLy8gdGhlc2UgbmV3IHVwZGF0
ZXMgc28gdGhhdCBpZiBBJ3MgY29tcG9uZW50RGlkVXBkYXRlIGNhbGxzIHNldFN0YXRlIG9uXG5c
dCAgICAgIC8vIEIsIEIgd2lsbCB1cGRhdGUgYmVmb3JlIHRoZSBjYWxsYmFjayBBJ3MgdXBkYXRl
ciBwcm92aWRlZCB3aGVuIGNhbGxpbmdcblx0ICAgICAgLy8gc2V0U3RhdGUuXG5cdCAgICAgIGRp
cnR5Q29tcG9uZW50cy5zcGxpY2UoMCwgdGhpcy5kaXJ0eUNvbXBvbmVudHNMZW5ndGgpO1xuXHQg
ICAgICBmbHVzaEJhdGNoZWRVcGRhdGVzKCk7XG5cdCAgICB9IGVsc2Uge1xuXHQgICAgICBkaXJ0
eUNvbXBvbmVudHMubGVuZ3RoID0gMDtcblx0ICAgIH1cblx0ICB9XG5cdH07XG5cdFxuXHR2YXIg
VVBEQVRFX1FVRVVFSU5HID0ge1xuXHQgIGluaXRpYWxpemU6IGZ1bmN0aW9uICgpIHtcblx0ICAg
IHRoaXMuY2FsbGJhY2tRdWV1ZS5yZXNldCgpO1xuXHQgIH0sXG5cdCAgY2xvc2U6IGZ1bmN0aW9u
ICgpIHtcblx0ICAgIHRoaXMuY2FsbGJhY2tRdWV1ZS5ub3RpZnlBbGwoKTtcblx0ICB9XG5cdH07
XG5cdFxuXHR2YXIgVFJBTlNBQ1RJT05fV1JBUFBFUlMgPSBbTkVTVEVEX1VQREFURVMsIFVQREFU
RV9RVUVVRUlOR107XG5cdFxuXHRmdW5jdGlvbiBSZWFjdFVwZGF0ZXNGbHVzaFRyYW5zYWN0aW9u
KCkge1xuXHQgIHRoaXMucmVpbml0aWFsaXplVHJhbnNhY3Rpb24oKTtcblx0ICB0aGlzLmRpcnR5
Q29tcG9uZW50c0xlbmd0aCA9IG51bGw7XG5cdCAgdGhpcy5jYWxsYmFja1F1ZXVlID0gQ2FsbGJh
Y2tRdWV1ZS5nZXRQb29sZWQoKTtcblx0ICB0aGlzLnJlY29uY2lsZVRyYW5zYWN0aW9uID0gUmVh
Y3RVcGRhdGVzLlJlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb24uZ2V0UG9vbGVkKFxuXHQgIC8qIHVz
ZUNyZWF0ZUVsZW1lbnQgKi90cnVlKTtcblx0fVxuXHRcblx0X2Fzc2lnbihSZWFjdFVwZGF0ZXNG
bHVzaFRyYW5zYWN0aW9uLnByb3RvdHlwZSwgVHJhbnNhY3Rpb24sIHtcblx0ICBnZXRUcmFuc2Fj
dGlvbldyYXBwZXJzOiBmdW5jdGlvbiAoKSB7XG5cdCAgICByZXR1cm4gVFJBTlNBQ1RJT05fV1JB
UFBFUlM7XG5cdCAgfSxcblx0XG5cdCAgZGVzdHJ1Y3RvcjogZnVuY3Rpb24gKCkge1xuXHQgICAg
dGhpcy5kaXJ0eUNvbXBvbmVudHNMZW5ndGggPSBudWxsO1xuXHQgICAgQ2FsbGJhY2tRdWV1ZS5y
ZWxlYXNlKHRoaXMuY2FsbGJhY2tRdWV1ZSk7XG5cdCAgICB0aGlzLmNhbGxiYWNrUXVldWUgPSBu
dWxsO1xuXHQgICAgUmVhY3RVcGRhdGVzLlJlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb24ucmVsZWFz
ZSh0aGlzLnJlY29uY2lsZVRyYW5zYWN0aW9uKTtcblx0ICAgIHRoaXMucmVjb25jaWxlVHJhbnNh
Y3Rpb24gPSBudWxsO1xuXHQgIH0sXG5cdFxuXHQgIHBlcmZvcm06IGZ1bmN0aW9uIChtZXRob2Qs
IHNjb3BlLCBhKSB7XG5cdCAgICAvLyBFc3NlbnRpYWxseSBjYWxscyBgdGhpcy5yZWNvbmNpbGVU
cmFuc2FjdGlvbi5wZXJmb3JtKG1ldGhvZCwgc2NvcGUsIGEpYFxuXHQgICAgLy8gd2l0aCB0aGlz
IHRyYW5zYWN0aW9uJ3Mgd3JhcHBlcnMgYXJvdW5kIGl0LlxuXHQgICAgcmV0dXJuIFRyYW5zYWN0
aW9uLnBlcmZvcm0uY2FsbCh0aGlzLCB0aGlzLnJlY29uY2lsZVRyYW5zYWN0aW9uLnBlcmZvcm0s
IHRoaXMucmVjb25jaWxlVHJhbnNhY3Rpb24sIG1ldGhvZCwgc2NvcGUsIGEpO1xuXHQgIH1cblx0
fSk7XG5cdFxuXHRQb29sZWRDbGFzcy5hZGRQb29saW5nVG8oUmVhY3RVcGRhdGVzRmx1c2hUcmFu
c2FjdGlvbik7XG5cdFxuXHRmdW5jdGlvbiBiYXRjaGVkVXBkYXRlcyhjYWxsYmFjaywgYSwgYiwg
YywgZCwgZSkge1xuXHQgIGVuc3VyZUluamVjdGVkKCk7XG5cdCAgcmV0dXJuIGJhdGNoaW5nU3Ry
YXRlZ3kuYmF0Y2hlZFVwZGF0ZXMoY2FsbGJhY2ssIGEsIGIsIGMsIGQsIGUpO1xuXHR9XG5cdFxu
XHQvKipcblx0ICogQXJyYXkgY29tcGFyYXRvciBmb3IgUmVhY3RDb21wb25lbnRzIGJ5IG1vdW50
IG9yZGVyaW5nLlxuXHQgKlxuXHQgKiBAcGFyYW0ge1JlYWN0Q29tcG9uZW50fSBjMSBmaXJzdCBj
b21wb25lbnQgeW91J3JlIGNvbXBhcmluZ1xuXHQgKiBAcGFyYW0ge1JlYWN0Q29tcG9uZW50fSBj
MiBzZWNvbmQgY29tcG9uZW50IHlvdSdyZSBjb21wYXJpbmdcblx0ICogQHJldHVybiB7bnVtYmVy
fSBSZXR1cm4gdmFsdWUgdXNhYmxlIGJ5IEFycmF5LnByb3RvdHlwZS5zb3J0KCkuXG5cdCAqL1xu
XHRmdW5jdGlvbiBtb3VudE9yZGVyQ29tcGFyYXRvcihjMSwgYzIpIHtcblx0ICByZXR1cm4gYzEu
X21vdW50T3JkZXIgLSBjMi5fbW91bnRPcmRlcjtcblx0fVxuXHRcblx0ZnVuY3Rpb24gcnVuQmF0
Y2hlZFVwZGF0ZXModHJhbnNhY3Rpb24pIHtcblx0ICB2YXIgbGVuID0gdHJhbnNhY3Rpb24uZGly
dHlDb21wb25lbnRzTGVuZ3RoO1xuXHQgICEobGVuID09PSBkaXJ0eUNvbXBvbmVudHMubGVuZ3Ro
KSA/ICBmYWxzZSA/IGludmFyaWFudChmYWxzZSwgJ0V4cGVjdGVkIGZsdXNoIHRyYW5zYWN0aW9u
XFwncyBzdG9yZWQgZGlydHktY29tcG9uZW50cyBsZW5ndGggKCVzKSB0byBtYXRjaCBkaXJ0eS1j
b21wb25lbnRzIGFycmF5IGxlbmd0aCAoJXMpLicsIGxlbiwgZGlydHlDb21wb25lbnRzLmxlbmd0
aCkgOiBfcHJvZEludmFyaWFudCgnMTI0JywgbGVuLCBkaXJ0eUNvbXBvbmVudHMubGVuZ3RoKSA6
IHZvaWQgMDtcblx0XG5cdCAgLy8gU2luY2UgcmVjb25jaWxpbmcgYSBjb21wb25lbnQgaGlnaGVy
IGluIHRoZSBvd25lciBoaWVyYXJjaHkgdXN1YWxseSAobm90XG5cdCAgLy8gYWx3YXlzIC0tIHNl
ZSBzaG91bGRDb21wb25lbnRVcGRhdGUoKSkgd2lsbCByZWNvbmNpbGUgY2hpbGRyZW4sIHJlY29u
Y2lsZVxuXHQgIC8vIHRoZW0gYmVmb3JlIHRoZWlyIGNoaWxkcmVuIGJ5IHNvcnRpbmcgdGhlIGFy
cmF5LlxuXHQgIGRpcnR5Q29tcG9uZW50cy5zb3J0KG1vdW50T3JkZXJDb21wYXJhdG9yKTtcblx0
XG5cdCAgLy8gQW55IHVwZGF0ZXMgZW5xdWV1ZWQgd2hpbGUgcmVjb25jaWxpbmcgbXVzdCBiZSBw
ZXJmb3JtZWQgYWZ0ZXIgdGhpcyBlbnRpcmVcblx0ICAvLyBiYXRjaC4gT3RoZXJ3aXNlLCBpZiBk
aXJ0eUNvbXBvbmVudHMgaXMgW0EsIEJdIHdoZXJlIEEgaGFzIGNoaWxkcmVuIEIgYW5kXG5cdCAg
Ly8gQywgQiBjb3VsZCB1cGRhdGUgdHdpY2UgaW4gYSBzaW5nbGUgYmF0Y2ggaWYgQydzIHJlbmRl
ciBlbnF1ZXVlcyBhbiB1cGRhdGVcblx0ICAvLyB0byBCIChzaW5jZSBCIHdvdWxkIGhhdmUgYWxy
ZWFkeSB1cGRhdGVkLCB3ZSBzaG91bGQgc2tpcCBpdCwgYW5kIHRoZSBvbmx5XG5cdCAgLy8gd2F5
IHdlIGNhbiBrbm93IHRvIGRvIHNvIGlzIGJ5IGNoZWNraW5nIHRoZSBiYXRjaCBjb3VudGVyKS5c
blx0ICB1cGRhdGVCYXRjaE51bWJlcisrO1xuXHRcblx0ICBmb3IgKHZhciBpID0gMDsgaSA8IGxl
bjsgaSsrKSB7XG5cdCAgICAvLyBJZiBhIGNvbXBvbmVudCBpcyB1bm1vdW50ZWQgYmVmb3JlIHBl
bmRpbmcgY2hhbmdlcyBhcHBseSwgaXQgd2lsbCBzdGlsbFxuXHQgICAgLy8gYmUgaGVyZSwgYnV0
IHdlIGFzc3VtZSB0aGF0IGl0IGhhcyBjbGVhcmVkIGl0cyBfcGVuZGluZ0NhbGxiYWNrcyBhbmRc
blx0ICAgIC8vIHRoYXQgcGVyZm9ybVVwZGF0ZUlmTmVjZXNzYXJ5IGlzIGEgbm9vcC5cblx0ICAg
IHZhciBjb21wb25lbnQgPSBkaXJ0eUNvbXBvbmVudHNbaV07XG5cdFxuXHQgICAgLy8gSWYgcGVy
Zm9ybVVwZGF0ZUlmTmVjZXNzYXJ5IGhhcHBlbnMgdG8gZW5xdWV1ZSBhbnkgbmV3IHVwZGF0ZXMs
IHdlXG5cdCAgICAvLyBzaG91bGRuJ3QgZXhlY3V0ZSB0aGUgY2FsbGJhY2tzIHVudGlsIHRoZSBu
ZXh0IHJlbmRlciBoYXBwZW5zLCBzb1xuXHQgICAgLy8gc3Rhc2ggdGhlIGNhbGxiYWNrcyBmaXJz
dFxuXHQgICAgdmFyIGNhbGxiYWNrcyA9IGNvbXBvbmVudC5fcGVuZGluZ0NhbGxiYWNrcztcblx0
ICAgIGNvbXBvbmVudC5fcGVuZGluZ0NhbGxiYWNrcyA9IG51bGw7XG5cdFxuXHQgICAgdmFyIG1h
cmtlck5hbWU7XG5cdCAgICBpZiAoUmVhY3RGZWF0dXJlRmxhZ3MubG9nVG9wTGV2ZWxSZW5kZXJz
KSB7XG5cdCAgICAgIHZhciBuYW1lZENvbXBvbmVudCA9IGNvbXBvbmVudDtcblx0ICAgICAgLy8g
RHVjayB0eXBlIFRvcExldmVsV3JhcHBlci4gVGhpcyBpcyBwcm9iYWJseSBhbHdheXMgdHJ1ZS5c
blx0ICAgICAgaWYgKGNvbXBvbmVudC5fY3VycmVudEVsZW1lbnQudHlwZS5pc1JlYWN0VG9wTGV2
ZWxXcmFwcGVyKSB7XG5cdCAgICAgICAgbmFtZWRDb21wb25lbnQgPSBjb21wb25lbnQuX3JlbmRl
cmVkQ29tcG9uZW50O1xuXHQgICAgICB9XG5cdCAgICAgIG1hcmtlck5hbWUgPSAnUmVhY3QgdXBk
YXRlOiAnICsgbmFtZWRDb21wb25lbnQuZ2V0TmFtZSgpO1xuXHQgICAgICBjb25zb2xlLnRpbWUo
bWFya2VyTmFtZSk7XG5cdCAgICB9XG5cdFxuXHQgICAgUmVhY3RSZWNvbmNpbGVyLnBlcmZvcm1V
cGRhdGVJZk5lY2Vzc2FyeShjb21wb25lbnQsIHRyYW5zYWN0aW9uLnJlY29uY2lsZVRyYW5zYWN0
aW9uLCB1cGRhdGVCYXRjaE51bWJlcik7XG5cdFxuXHQgICAgaWYgKG1hcmtlck5hbWUpIHtcblx0
ICAgICAgY29uc29sZS50aW1lRW5kKG1hcmtlck5hbWUpO1xuXHQgICAgfVxuXHRcblx0ICAgIGlm
IChjYWxsYmFja3MpIHtcblx0ICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBjYWxsYmFja3MubGVu
Z3RoOyBqKyspIHtcblx0ICAgICAgICB0cmFuc2FjdGlvbi5jYWxsYmFja1F1ZXVlLmVucXVldWUo
Y2FsbGJhY2tzW2pdLCBjb21wb25lbnQuZ2V0UHVibGljSW5zdGFuY2UoKSk7XG5cdCAgICAgIH1c
blx0ICAgIH1cblx0ICB9XG5cdH1cblx0XG5cdHZhciBmbHVzaEJhdGNoZWRVcGRhdGVzID0gZnVu
Y3Rpb24gKCkge1xuXHQgIC8vIFJlYWN0VXBkYXRlc0ZsdXNoVHJhbnNhY3Rpb24ncyB3cmFwcGVy
cyB3aWxsIGNsZWFyIHRoZSBkaXJ0eUNvbXBvbmVudHNcblx0ICAvLyBhcnJheSBhbmQgcGVyZm9y
bSBhbnkgdXBkYXRlcyBlbnF1ZXVlZCBieSBtb3VudC1yZWFkeSBoYW5kbGVycyAoaS5lLixcblx0
ICAvLyBjb21wb25lbnREaWRVcGRhdGUpIGJ1dCB3ZSBuZWVkIHRvIGNoZWNrIGhlcmUgdG9vIGlu
IG9yZGVyIHRvIGNhdGNoXG5cdCAgLy8gdXBkYXRlcyBlbnF1ZXVlZCBieSBzZXRTdGF0ZSBjYWxs
YmFja3MgYW5kIGFzYXAgY2FsbHMuXG5cdCAgd2hpbGUgKGRpcnR5Q29tcG9uZW50cy5sZW5ndGgg
fHwgYXNhcEVucXVldWVkKSB7XG5cdCAgICBpZiAoZGlydHlDb21wb25lbnRzLmxlbmd0aCkge1xu
XHQgICAgICB2YXIgdHJhbnNhY3Rpb24gPSBSZWFjdFVwZGF0ZXNGbHVzaFRyYW5zYWN0aW9uLmdl
dFBvb2xlZCgpO1xuXHQgICAgICB0cmFuc2FjdGlvbi5wZXJmb3JtKHJ1bkJhdGNoZWRVcGRhdGVz
LCBudWxsLCB0cmFuc2FjdGlvbik7XG5cdCAgICAgIFJlYWN0VXBkYXRlc0ZsdXNoVHJhbnNhY3Rp
b24ucmVsZWFzZSh0cmFuc2FjdGlvbik7XG5cdCAgICB9XG5cdFxuXHQgICAgaWYgKGFzYXBFbnF1
ZXVlZCkge1xuXHQgICAgICBhc2FwRW5xdWV1ZWQgPSBmYWxzZTtcblx0ICAgICAgdmFyIHF1ZXVl
ID0gYXNhcENhbGxiYWNrUXVldWU7XG5cdCAgICAgIGFzYXBDYWxsYmFja1F1ZXVlID0gQ2FsbGJh
Y2tRdWV1ZS5nZXRQb29sZWQoKTtcblx0ICAgICAgcXVldWUubm90aWZ5QWxsKCk7XG5cdCAgICAg
IENhbGxiYWNrUXVldWUucmVsZWFzZShxdWV1ZSk7XG5cdCAgICB9XG5cdCAgfVxuXHR9O1xuXHRc
blx0LyoqXG5cdCAqIE1hcmsgYSBjb21wb25lbnQgYXMgbmVlZGluZyBhIHJlcmVuZGVyLCBhZGRp
bmcgYW4gb3B0aW9uYWwgY2FsbGJhY2sgdG8gYVxuXHQgKiBsaXN0IG9mIGZ1bmN0aW9ucyB3aGlj
aCB3aWxsIGJlIGV4ZWN1dGVkIG9uY2UgdGhlIHJlcmVuZGVyIG9jY3Vycy5cblx0ICovXG5cdGZ1
bmN0aW9uIGVucXVldWVVcGRhdGUoY29tcG9uZW50KSB7XG5cdCAgZW5zdXJlSW5qZWN0ZWQoKTtc
blx0XG5cdCAgLy8gVmFyaW91cyBwYXJ0cyBvZiBvdXIgY29kZSAoc3VjaCBhcyBSZWFjdENvbXBv
c2l0ZUNvbXBvbmVudCdzXG5cdCAgLy8gX3JlbmRlclZhbGlkYXRlZENvbXBvbmVudCkgYXNzdW1l
IHRoYXQgY2FsbHMgdG8gcmVuZGVyIGFyZW4ndCBuZXN0ZWQ7XG5cdCAgLy8gdmVyaWZ5IHRoYXQg
dGhhdCdzIHRoZSBjYXNlLiAoVGhpcyBpcyBjYWxsZWQgYnkgZWFjaCB0b3AtbGV2ZWwgdXBkYXRl
XG5cdCAgLy8gZnVuY3Rpb24sIGxpa2Ugc2V0U3RhdGUsIGZvcmNlVXBkYXRlLCBldGMuOyBjcmVh
dGlvbiBhbmRcblx0ICAvLyBkZXN0cnVjdGlvbiBvZiB0b3AtbGV2ZWwgY29tcG9uZW50cyBpcyBn
dWFyZGVkIGluIFJlYWN0TW91bnQuKVxuXHRcblx0ICBpZiAoIWJhdGNoaW5nU3RyYXRlZ3kuaXNC
YXRjaGluZ1VwZGF0ZXMpIHtcblx0ICAgIGJhdGNoaW5nU3RyYXRlZ3kuYmF0Y2hlZFVwZGF0ZXMo
ZW5xdWV1ZVVwZGF0ZSwgY29tcG9uZW50KTtcblx0ICAgIHJldHVybjtcblx0ICB9XG5cdFxuXHQg
IGRpcnR5Q29tcG9uZW50cy5wdXNoKGNvbXBvbmVudCk7XG5cdCAgaWYgKGNvbXBvbmVudC5fdXBk
YXRlQmF0Y2hOdW1iZXIgPT0gbnVsbCkge1xuXHQgICAgY29tcG9uZW50Ll91cGRhdGVCYXRjaE51
bWJlciA9IHVwZGF0ZUJhdGNoTnVtYmVyICsgMTtcblx0ICB9XG5cdH1cblx0XG5cdC8qKlxuXHQg
KiBFbnF1ZXVlIGEgY2FsbGJhY2sgdG8gYmUgcnVuIGF0IHRoZSBlbmQgb2YgdGhlIGN1cnJlbnQg
YmF0Y2hpbmcgY3ljbGUuIFRocm93c1xuXHQgKiBpZiBubyB1cGRhdGVzIGFyZSBjdXJyZW50bHkg
YmVpbmcgcGVyZm9ybWVkLlxuXHQgKi9cblx0ZnVuY3Rpb24gYXNhcChjYWxsYmFjaywgY29udGV4
dCkge1xuXHQgICFiYXRjaGluZ1N0cmF0ZWd5LmlzQmF0Y2hpbmdVcGRhdGVzID8gIGZhbHNlID8g
aW52YXJpYW50KGZhbHNlLCAnUmVhY3RVcGRhdGVzLmFzYXA6IENhblxcJ3QgZW5xdWV1ZSBhbiBh
c2FwIGNhbGxiYWNrIGluIGEgY29udGV4dCB3aGVyZXVwZGF0ZXMgYXJlIG5vdCBiZWluZyBiYXRj
aGVkLicpIDogX3Byb2RJbnZhcmlhbnQoJzEyNScpIDogdm9pZCAwO1xuXHQgIGFzYXBDYWxsYmFj
a1F1ZXVlLmVucXVldWUoY2FsbGJhY2ssIGNvbnRleHQpO1xuXHQgIGFzYXBFbnF1ZXVlZCA9IHRy
dWU7XG5cdH1cblx0XG5cdHZhciBSZWFjdFVwZGF0ZXNJbmplY3Rpb24gPSB7XG5cdCAgaW5qZWN0
UmVjb25jaWxlVHJhbnNhY3Rpb246IGZ1bmN0aW9uIChSZWNvbmNpbGVUcmFuc2FjdGlvbikge1xu
XHQgICAgIVJlY29uY2lsZVRyYW5zYWN0aW9uID8gIGZhbHNlID8gaW52YXJpYW50KGZhbHNlLCAn
UmVhY3RVcGRhdGVzOiBtdXN0IHByb3ZpZGUgYSByZWNvbmNpbGUgdHJhbnNhY3Rpb24gY2xhc3Mn
KSA6IF9wcm9kSW52YXJpYW50KCcxMjYnKSA6IHZvaWQgMDtcblx0ICAgIFJlYWN0VXBkYXRlcy5S
ZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9uID0gUmVjb25jaWxlVHJhbnNhY3Rpb247XG5cdCAgfSxc
blx0XG5cdCAgaW5qZWN0QmF0Y2hpbmdTdHJhdGVneTogZnVuY3Rpb24gKF9iYXRjaGluZ1N0cmF0
ZWd5KSB7XG5cdCAgICAhX2JhdGNoaW5nU3RyYXRlZ3kgPyAgZmFsc2UgPyBpbnZhcmlhbnQoZmFs
c2UsICdSZWFjdFVwZGF0ZXM6IG11c3QgcHJvdmlkZSBhIGJhdGNoaW5nIHN0cmF0ZWd5JykgOiBf
cHJvZEludmFyaWFudCgnMTI3JykgOiB2b2lkIDA7XG5cdCAgICAhKHR5cGVvZiBfYmF0Y2hpbmdT
dHJhdGVneS5iYXRjaGVkVXBkYXRlcyA9PT0gJ2Z1bmN0aW9uJykgPyAgZmFsc2UgPyBpbnZhcmlh
bnQoZmFsc2UsICdSZWFjdFVwZGF0ZXM6IG11c3QgcHJvdmlkZSBhIGJhdGNoZWRVcGRhdGVzKCkg
ZnVuY3Rpb24nKSA6IF9wcm9kSW52YXJpYW50KCcxMjgnKSA6IHZvaWQgMDtcblx0ICAgICEodHlw
ZW9mIF9iYXRjaGluZ1N0cmF0ZWd5LmlzQmF0Y2hpbmdVcGRhdGVzID09PSAnYm9vbGVhbicpID8g
IGZhbHNlID8gaW52YXJpYW50KGZhbHNlLCAnUmVhY3RVcGRhdGVzOiBtdXN0IHByb3ZpZGUgYW4g
aXNCYXRjaGluZ1VwZGF0ZXMgYm9vbGVhbiBhdHRyaWJ1dGUnKSA6IF9wcm9kSW52YXJpYW50KCcx
MjknKSA6IHZvaWQgMDtcblx0ICAgIGJhdGNoaW5nU3RyYXRlZ3kgPSBfYmF0Y2hpbmdTdHJhdGVn
eTtcblx0ICB9XG5cdH07XG5cdFxuXHR2YXIgUmVhY3RVcGRhdGVzID0ge1xuXHQgIC8qKlxuXHQg
ICAqIFJlYWN0IHJlZmVyZW5jZXMgYFJlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb25gIHVzaW5nIHRo
aXMgcHJvcGVydHkgaW4gb3JkZXJcblx0ICAgKiB0byBhbGxvdyBkZXBlbmRlbmN5IGluamVjdGlv
bi5cblx0ICAgKlxuXHQgICAqIEBpbnRlcm5hbFxuXHQgICAqL1xuXHQgIFJlYWN0UmVjb25jaWxl
VHJhbnNhY3Rpb246IG51bGwsXG5cdFxuXHQgIGJhdGNoZWRVcGRhdGVzOiBiYXRjaGVkVXBkYXRl
cyxcblx0ICBlbnF1ZXVlVXBkYXRlOiBlbnF1ZXVlVXBkYXRlLFxuXHQgIGZsdXNoQmF0Y2hlZFVw
ZGF0ZXM6IGZsdXNoQmF0Y2hlZFVwZGF0ZXMsXG5cdCAgaW5qZWN0aW9uOiBSZWFjdFVwZGF0ZXNJ
bmplY3Rpb24sXG5cdCAgYXNhcDogYXNhcFxuXHR9O1xuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBS
ZWFjdFVwZGF0ZXM7XG5cbi8qKiovIH0sXG4vKiAxMCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxl
LCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0LyoqXG5cdCAqIENvcHlyaWdo
dCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQu
XG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1z
dHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qg
ZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICog
b2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUg
c2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqL1xuXHRcblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0
dmFyIF9hc3NpZ24gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQpO1xuXHRcblx0dmFyIFBvb2xlZENs
YXNzID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMyk7XG5cdFxuXHR2YXIgZW1wdHlGdW5jdGlvbiA9
IF9fd2VicGFja19yZXF1aXJlX18oNyk7XG5cdHZhciB3YXJuaW5nID0gX193ZWJwYWNrX3JlcXVp
cmVfXygyKTtcblx0XG5cdHZhciBkaWRXYXJuRm9yQWRkZWROZXdQcm9wZXJ0eSA9IGZhbHNlO1xu
XHR2YXIgaXNQcm94eVN1cHBvcnRlZCA9IHR5cGVvZiBQcm94eSA9PT0gJ2Z1bmN0aW9uJztcblx0
XG5cdHZhciBzaG91bGRCZVJlbGVhc2VkUHJvcGVydGllcyA9IFsnZGlzcGF0Y2hDb25maWcnLCAn
X3RhcmdldEluc3QnLCAnbmF0aXZlRXZlbnQnLCAnaXNEZWZhdWx0UHJldmVudGVkJywgJ2lzUHJv
cGFnYXRpb25TdG9wcGVkJywgJ19kaXNwYXRjaExpc3RlbmVycycsICdfZGlzcGF0Y2hJbnN0YW5j
ZXMnXTtcblx0XG5cdC8qKlxuXHQgKiBAaW50ZXJmYWNlIEV2ZW50XG5cdCAqIEBzZWUgaHR0cDov
L3d3dy53My5vcmcvVFIvRE9NLUxldmVsLTMtRXZlbnRzL1xuXHQgKi9cblx0dmFyIEV2ZW50SW50
ZXJmYWNlID0ge1xuXHQgIHR5cGU6IG51bGwsXG5cdCAgdGFyZ2V0OiBudWxsLFxuXHQgIC8vIGN1
cnJlbnRUYXJnZXQgaXMgc2V0IHdoZW4gZGlzcGF0Y2hpbmc7IG5vIHVzZSBpbiBjb3B5aW5nIGl0
IGhlcmVcblx0ICBjdXJyZW50VGFyZ2V0OiBlbXB0eUZ1bmN0aW9uLnRoYXRSZXR1cm5zTnVsbCxc
blx0ICBldmVudFBoYXNlOiBudWxsLFxuXHQgIGJ1YmJsZXM6IG51bGwsXG5cdCAgY2FuY2VsYWJs
ZTogbnVsbCxcblx0ICB0aW1lU3RhbXA6IGZ1bmN0aW9uIChldmVudCkge1xuXHQgICAgcmV0dXJu
IGV2ZW50LnRpbWVTdGFtcCB8fCBEYXRlLm5vdygpO1xuXHQgIH0sXG5cdCAgZGVmYXVsdFByZXZl
bnRlZDogbnVsbCxcblx0ICBpc1RydXN0ZWQ6IG51bGxcblx0fTtcblx0XG5cdC8qKlxuXHQgKiBT
eW50aGV0aWMgZXZlbnRzIGFyZSBkaXNwYXRjaGVkIGJ5IGV2ZW50IHBsdWdpbnMsIHR5cGljYWxs
eSBpbiByZXNwb25zZSB0byBhXG5cdCAqIHRvcC1sZXZlbCBldmVudCBkZWxlZ2F0aW9uIGhhbmRs
ZXIuXG5cdCAqXG5cdCAqIFRoZXNlIHN5c3RlbXMgc2hvdWxkIGdlbmVyYWxseSB1c2UgcG9vbGlu
ZyB0byByZWR1Y2UgdGhlIGZyZXF1ZW5jeSBvZiBnYXJiYWdlXG5cdCAqIGNvbGxlY3Rpb24uIFRo
ZSBzeXN0ZW0gc2hvdWxkIGNoZWNrIGBpc1BlcnNpc3RlbnRgIHRvIGRldGVybWluZSB3aGV0aGVy
IHRoZVxuXHQgKiBldmVudCBzaG91bGQgYmUgcmVsZWFzZWQgaW50byB0aGUgcG9vbCBhZnRlciBi
ZWluZyBkaXNwYXRjaGVkLiBVc2VycyB0aGF0XG5cdCAqIG5lZWQgYSBwZXJzaXN0ZWQgZXZlbnQg
c2hvdWxkIGludm9rZSBgcGVyc2lzdGAuXG5cdCAqXG5cdCAqIFN5bnRoZXRpYyBldmVudHMgKGFu
ZCBzdWJjbGFzc2VzKSBpbXBsZW1lbnQgdGhlIERPTSBMZXZlbCAzIEV2ZW50cyBBUEkgYnlcblx0
ICogbm9ybWFsaXppbmcgYnJvd3NlciBxdWlya3MuIFN1YmNsYXNzZXMgZG8gbm90IG5lY2Vzc2Fy
aWx5IGhhdmUgdG8gaW1wbGVtZW50IGFcblx0ICogRE9NIGludGVyZmFjZTsgY3VzdG9tIGFwcGxp
Y2F0aW9uLXNwZWNpZmljIGV2ZW50cyBjYW4gYWxzbyBzdWJjbGFzcyB0aGlzLlxuXHQgKlxuXHQg
KiBAcGFyYW0ge29iamVjdH0gZGlzcGF0Y2hDb25maWcgQ29uZmlndXJhdGlvbiB1c2VkIHRvIGRp
c3BhdGNoIHRoaXMgZXZlbnQuXG5cdCAqIEBwYXJhbSB7Kn0gdGFyZ2V0SW5zdCBNYXJrZXIgaWRl
bnRpZnlpbmcgdGhlIGV2ZW50IHRhcmdldC5cblx0ICogQHBhcmFtIHtvYmplY3R9IG5hdGl2ZUV2
ZW50IE5hdGl2ZSBicm93c2VyIGV2ZW50LlxuXHQgKiBAcGFyYW0ge0RPTUV2ZW50VGFyZ2V0fSBu
YXRpdmVFdmVudFRhcmdldCBUYXJnZXQgbm9kZS5cblx0ICovXG5cdGZ1bmN0aW9uIFN5bnRoZXRp
Y0V2ZW50KGRpc3BhdGNoQ29uZmlnLCB0YXJnZXRJbnN0LCBuYXRpdmVFdmVudCwgbmF0aXZlRXZl
bnRUYXJnZXQpIHtcblx0ICBpZiAoZmFsc2UpIHtcblx0ICAgIC8vIHRoZXNlIGhhdmUgYSBnZXR0
ZXIvc2V0dGVyIGZvciB3YXJuaW5nc1xuXHQgICAgZGVsZXRlIHRoaXMubmF0aXZlRXZlbnQ7XG5c
dCAgICBkZWxldGUgdGhpcy5wcmV2ZW50RGVmYXVsdDtcblx0ICAgIGRlbGV0ZSB0aGlzLnN0b3BQ
cm9wYWdhdGlvbjtcblx0ICB9XG5cdFxuXHQgIHRoaXMuZGlzcGF0Y2hDb25maWcgPSBkaXNwYXRj
aENvbmZpZztcblx0ICB0aGlzLl90YXJnZXRJbnN0ID0gdGFyZ2V0SW5zdDtcblx0ICB0aGlzLm5h
dGl2ZUV2ZW50ID0gbmF0aXZlRXZlbnQ7XG5cdFxuXHQgIHZhciBJbnRlcmZhY2UgPSB0aGlzLmNv
bnN0cnVjdG9yLkludGVyZmFjZTtcblx0ICBmb3IgKHZhciBwcm9wTmFtZSBpbiBJbnRlcmZhY2Up
IHtcblx0ICAgIGlmICghSW50ZXJmYWNlLmhhc093blByb3BlcnR5KHByb3BOYW1lKSkge1xuXHQg
ICAgICBjb250aW51ZTtcblx0ICAgIH1cblx0ICAgIGlmIChmYWxzZSkge1xuXHQgICAgICBkZWxl
dGUgdGhpc1twcm9wTmFtZV07IC8vIHRoaXMgaGFzIGEgZ2V0dGVyL3NldHRlciBmb3Igd2Fybmlu
Z3Ncblx0ICAgIH1cblx0ICAgIHZhciBub3JtYWxpemUgPSBJbnRlcmZhY2VbcHJvcE5hbWVdO1xu
XHQgICAgaWYgKG5vcm1hbGl6ZSkge1xuXHQgICAgICB0aGlzW3Byb3BOYW1lXSA9IG5vcm1hbGl6
ZShuYXRpdmVFdmVudCk7XG5cdCAgICB9IGVsc2Uge1xuXHQgICAgICBpZiAocHJvcE5hbWUgPT09
ICd0YXJnZXQnKSB7XG5cdCAgICAgICAgdGhpcy50YXJnZXQgPSBuYXRpdmVFdmVudFRhcmdldDtc
blx0ICAgICAgfSBlbHNlIHtcblx0ICAgICAgICB0aGlzW3Byb3BOYW1lXSA9IG5hdGl2ZUV2ZW50
W3Byb3BOYW1lXTtcblx0ICAgICAgfVxuXHQgICAgfVxuXHQgIH1cblx0XG5cdCAgdmFyIGRlZmF1
bHRQcmV2ZW50ZWQgPSBuYXRpdmVFdmVudC5kZWZhdWx0UHJldmVudGVkICE9IG51bGwgPyBuYXRp
dmVFdmVudC5kZWZhdWx0UHJldmVudGVkIDogbmF0aXZlRXZlbnQucmV0dXJuVmFsdWUgPT09IGZh
bHNlO1xuXHQgIGlmIChkZWZhdWx0UHJldmVudGVkKSB7XG5cdCAgICB0aGlzLmlzRGVmYXVsdFBy
ZXZlbnRlZCA9IGVtcHR5RnVuY3Rpb24udGhhdFJldHVybnNUcnVlO1xuXHQgIH0gZWxzZSB7XG5c
dCAgICB0aGlzLmlzRGVmYXVsdFByZXZlbnRlZCA9IGVtcHR5RnVuY3Rpb24udGhhdFJldHVybnNG
YWxzZTtcblx0ICB9XG5cdCAgdGhpcy5pc1Byb3BhZ2F0aW9uU3RvcHBlZCA9IGVtcHR5RnVuY3Rp
b24udGhhdFJldHVybnNGYWxzZTtcblx0ICByZXR1cm4gdGhpcztcblx0fVxuXHRcblx0X2Fzc2ln
bihTeW50aGV0aWNFdmVudC5wcm90b3R5cGUsIHtcblx0ICBwcmV2ZW50RGVmYXVsdDogZnVuY3Rp
b24gKCkge1xuXHQgICAgdGhpcy5kZWZhdWx0UHJldmVudGVkID0gdHJ1ZTtcblx0ICAgIHZhciBl
dmVudCA9IHRoaXMubmF0aXZlRXZlbnQ7XG5cdCAgICBpZiAoIWV2ZW50KSB7XG5cdCAgICAgIHJl
dHVybjtcblx0ICAgIH1cblx0XG5cdCAgICBpZiAoZXZlbnQucHJldmVudERlZmF1bHQpIHtcblx0
ICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcblx0ICAgICAgLy8gZXNsaW50LWRpc2FibGUt
bmV4dC1saW5lIHZhbGlkLXR5cGVvZlxuXHQgICAgfSBlbHNlIGlmICh0eXBlb2YgZXZlbnQucmV0
dXJuVmFsdWUgIT09ICd1bmtub3duJykge1xuXHQgICAgICBldmVudC5yZXR1cm5WYWx1ZSA9IGZh
bHNlO1xuXHQgICAgfVxuXHQgICAgdGhpcy5pc0RlZmF1bHRQcmV2ZW50ZWQgPSBlbXB0eUZ1bmN0
aW9uLnRoYXRSZXR1cm5zVHJ1ZTtcblx0ICB9LFxuXHRcblx0ICBzdG9wUHJvcGFnYXRpb246IGZ1
bmN0aW9uICgpIHtcblx0ICAgIHZhciBldmVudCA9IHRoaXMubmF0aXZlRXZlbnQ7XG5cdCAgICBp
ZiAoIWV2ZW50KSB7XG5cdCAgICAgIHJldHVybjtcblx0ICAgIH1cblx0XG5cdCAgICBpZiAoZXZl
bnQuc3RvcFByb3BhZ2F0aW9uKSB7XG5cdCAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xu
XHQgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgdmFsaWQtdHlwZW9mXG5cdCAgICB9
IGVsc2UgaWYgKHR5cGVvZiBldmVudC5jYW5jZWxCdWJibGUgIT09ICd1bmtub3duJykge1xuXHQg
ICAgICAvLyBUaGUgQ2hhbmdlRXZlbnRQbHVnaW4gcmVnaXN0ZXJzIGEgXCJwcm9wZXJ0eWNoYW5n
ZVwiIGV2ZW50IGZvclxuXHQgICAgICAvLyBJRS4gVGhpcyBldmVudCBkb2VzIG5vdCBzdXBwb3J0
IGJ1YmJsaW5nIG9yIGNhbmNlbGxpbmcsIGFuZFxuXHQgICAgICAvLyBhbnkgcmVmZXJlbmNlcyB0
byBjYW5jZWxCdWJibGUgdGhyb3cgXCJNZW1iZXIgbm90IGZvdW5kXCIuICBBXG5cdCAgICAgIC8v
IHR5cGVvZiBjaGVjayBvZiBcInVua25vd25cIiBjaXJjdW12ZW50cyB0aGlzIGlzc3VlIChhbmQg
aXMgYWxzb1xuXHQgICAgICAvLyBJRSBzcGVjaWZpYykuXG5cdCAgICAgIGV2ZW50LmNhbmNlbEJ1
YmJsZSA9IHRydWU7XG5cdCAgICB9XG5cdFxuXHQgICAgdGhpcy5pc1Byb3BhZ2F0aW9uU3RvcHBl
ZCA9IGVtcHR5RnVuY3Rpb24udGhhdFJldHVybnNUcnVlO1xuXHQgIH0sXG5cdFxuXHQgIC8qKlxu
XHQgICAqIFdlIHJlbGVhc2UgYWxsIGRpc3BhdGNoZWQgYFN5bnRoZXRpY0V2ZW50YHMgYWZ0ZXIg
ZWFjaCBldmVudCBsb29wLCBhZGRpbmdcblx0ICAgKiB0aGVtIGJhY2sgaW50byB0aGUgcG9vbC4g
VGhpcyBhbGxvd3MgYSB3YXkgdG8gaG9sZCBvbnRvIGEgcmVmZXJlbmNlIHRoYXRcblx0ICAgKiB3
b24ndCBiZSBhZGRlZCBiYWNrIGludG8gdGhlIHBvb2wuXG5cdCAgICovXG5cdCAgcGVyc2lzdDog
ZnVuY3Rpb24gKCkge1xuXHQgICAgdGhpcy5pc1BlcnNpc3RlbnQgPSBlbXB0eUZ1bmN0aW9uLnRo
YXRSZXR1cm5zVHJ1ZTtcblx0ICB9LFxuXHRcblx0ICAvKipcblx0ICAgKiBDaGVja3MgaWYgdGhp
cyBldmVudCBzaG91bGQgYmUgcmVsZWFzZWQgYmFjayBpbnRvIHRoZSBwb29sLlxuXHQgICAqXG5c
dCAgICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBpZiB0aGlzIHNob3VsZCBub3QgYmUgcmVsZWFz
ZWQsIGZhbHNlIG90aGVyd2lzZS5cblx0ICAgKi9cblx0ICBpc1BlcnNpc3RlbnQ6IGVtcHR5RnVu
Y3Rpb24udGhhdFJldHVybnNGYWxzZSxcblx0XG5cdCAgLyoqXG5cdCAgICogYFBvb2xlZENsYXNz
YCBsb29rcyBmb3IgYGRlc3RydWN0b3JgIG9uIGVhY2ggaW5zdGFuY2UgaXQgcmVsZWFzZXMuXG5c
dCAgICovXG5cdCAgZGVzdHJ1Y3RvcjogZnVuY3Rpb24gKCkge1xuXHQgICAgdmFyIEludGVyZmFj
ZSA9IHRoaXMuY29uc3RydWN0b3IuSW50ZXJmYWNlO1xuXHQgICAgZm9yICh2YXIgcHJvcE5hbWUg
aW4gSW50ZXJmYWNlKSB7XG5cdCAgICAgIGlmIChmYWxzZSkge1xuXHQgICAgICAgIE9iamVjdC5k
ZWZpbmVQcm9wZXJ0eSh0aGlzLCBwcm9wTmFtZSwgZ2V0UG9vbGVkV2FybmluZ1Byb3BlcnR5RGVm
aW5pdGlvbihwcm9wTmFtZSwgSW50ZXJmYWNlW3Byb3BOYW1lXSkpO1xuXHQgICAgICB9IGVsc2Ug
e1xuXHQgICAgICAgIHRoaXNbcHJvcE5hbWVdID0gbnVsbDtcblx0ICAgICAgfVxuXHQgICAgfVxu
XHQgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzaG91bGRCZVJlbGVhc2VkUHJvcGVydGllcy5sZW5n
dGg7IGkrKykge1xuXHQgICAgICB0aGlzW3Nob3VsZEJlUmVsZWFzZWRQcm9wZXJ0aWVzW2ldXSA9
IG51bGw7XG5cdCAgICB9XG5cdCAgICBpZiAoZmFsc2UpIHtcblx0ICAgICAgT2JqZWN0LmRlZmlu
ZVByb3BlcnR5KHRoaXMsICduYXRpdmVFdmVudCcsIGdldFBvb2xlZFdhcm5pbmdQcm9wZXJ0eURl
ZmluaXRpb24oJ25hdGl2ZUV2ZW50JywgbnVsbCkpO1xuXHQgICAgICBPYmplY3QuZGVmaW5lUHJv
cGVydHkodGhpcywgJ3ByZXZlbnREZWZhdWx0JywgZ2V0UG9vbGVkV2FybmluZ1Byb3BlcnR5RGVm
aW5pdGlvbigncHJldmVudERlZmF1bHQnLCBlbXB0eUZ1bmN0aW9uKSk7XG5cdCAgICAgIE9iamVj
dC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCAnc3RvcFByb3BhZ2F0aW9uJywgZ2V0UG9vbGVkV2Fybmlu
Z1Byb3BlcnR5RGVmaW5pdGlvbignc3RvcFByb3BhZ2F0aW9uJywgZW1wdHlGdW5jdGlvbikpO1xu
XHQgICAgfVxuXHQgIH1cblx0fSk7XG5cdFxuXHRTeW50aGV0aWNFdmVudC5JbnRlcmZhY2UgPSBF
dmVudEludGVyZmFjZTtcblx0XG5cdGlmIChmYWxzZSkge1xuXHQgIGlmIChpc1Byb3h5U3VwcG9y
dGVkKSB7XG5cdCAgICAvKmVzbGludC1kaXNhYmxlIG5vLWZ1bmMtYXNzaWduICovXG5cdCAgICBT
eW50aGV0aWNFdmVudCA9IG5ldyBQcm94eShTeW50aGV0aWNFdmVudCwge1xuXHQgICAgICBjb25z
dHJ1Y3Q6IGZ1bmN0aW9uICh0YXJnZXQsIGFyZ3MpIHtcblx0ICAgICAgICByZXR1cm4gdGhpcy5h
cHBseSh0YXJnZXQsIE9iamVjdC5jcmVhdGUodGFyZ2V0LnByb3RvdHlwZSksIGFyZ3MpO1xuXHQg
ICAgICB9LFxuXHQgICAgICBhcHBseTogZnVuY3Rpb24gKGNvbnN0cnVjdG9yLCB0aGF0LCBhcmdz
KSB7XG5cdCAgICAgICAgcmV0dXJuIG5ldyBQcm94eShjb25zdHJ1Y3Rvci5hcHBseSh0aGF0LCBh
cmdzKSwge1xuXHQgICAgICAgICAgc2V0OiBmdW5jdGlvbiAodGFyZ2V0LCBwcm9wLCB2YWx1ZSkg
e1xuXHQgICAgICAgICAgICBpZiAocHJvcCAhPT0gJ2lzUGVyc2lzdGVudCcgJiYgIXRhcmdldC5j
b25zdHJ1Y3Rvci5JbnRlcmZhY2UuaGFzT3duUHJvcGVydHkocHJvcCkgJiYgc2hvdWxkQmVSZWxl
YXNlZFByb3BlcnRpZXMuaW5kZXhPZihwcm9wKSA9PT0gLTEpIHtcblx0ICAgICAgICAgICAgICBw
cm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhkaWRXYXJuRm9y
QWRkZWROZXdQcm9wZXJ0eSB8fCB0YXJnZXQuaXNQZXJzaXN0ZW50KCksIFwiVGhpcyBzeW50aGV0
aWMgZXZlbnQgaXMgcmV1c2VkIGZvciBwZXJmb3JtYW5jZSByZWFzb25zLiBJZiB5b3UncmUgXCIg
KyBcInNlZWluZyB0aGlzLCB5b3UncmUgYWRkaW5nIGEgbmV3IHByb3BlcnR5IGluIHRoZSBzeW50
aGV0aWMgZXZlbnQgb2JqZWN0LiBcIiArICdUaGUgcHJvcGVydHkgaXMgbmV2ZXIgcmVsZWFzZWQu
IFNlZSAnICsgJ2h0dHBzOi8vZmIubWUvcmVhY3QtZXZlbnQtcG9vbGluZyBmb3IgbW9yZSBpbmZv
cm1hdGlvbi4nKSA6IHZvaWQgMDtcblx0ICAgICAgICAgICAgICBkaWRXYXJuRm9yQWRkZWROZXdQ
cm9wZXJ0eSA9IHRydWU7XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgdGFyZ2V0W3By
b3BdID0gdmFsdWU7XG5cdCAgICAgICAgICAgIHJldHVybiB0cnVlO1xuXHQgICAgICAgICAgfVxu
XHQgICAgICAgIH0pO1xuXHQgICAgICB9XG5cdCAgICB9KTtcblx0ICAgIC8qZXNsaW50LWVuYWJs
ZSBuby1mdW5jLWFzc2lnbiAqL1xuXHQgIH1cblx0fVxuXHQvKipcblx0ICogSGVscGVyIHRvIHJl
ZHVjZSBib2lsZXJwbGF0ZSB3aGVuIGNyZWF0aW5nIHN1YmNsYXNzZXMuXG5cdCAqXG5cdCAqIEBw
YXJhbSB7ZnVuY3Rpb259IENsYXNzXG5cdCAqIEBwYXJhbSB7P29iamVjdH0gSW50ZXJmYWNlXG5c
dCAqL1xuXHRTeW50aGV0aWNFdmVudC5hdWdtZW50Q2xhc3MgPSBmdW5jdGlvbiAoQ2xhc3MsIElu
dGVyZmFjZSkge1xuXHQgIHZhciBTdXBlciA9IHRoaXM7XG5cdFxuXHQgIHZhciBFID0gZnVuY3Rp
b24gKCkge307XG5cdCAgRS5wcm90b3R5cGUgPSBTdXBlci5wcm90b3R5cGU7XG5cdCAgdmFyIHBy
b3RvdHlwZSA9IG5ldyBFKCk7XG5cdFxuXHQgIF9hc3NpZ24ocHJvdG90eXBlLCBDbGFzcy5wcm90
b3R5cGUpO1xuXHQgIENsYXNzLnByb3RvdHlwZSA9IHByb3RvdHlwZTtcblx0ICBDbGFzcy5wcm90
b3R5cGUuY29uc3RydWN0b3IgPSBDbGFzcztcblx0XG5cdCAgQ2xhc3MuSW50ZXJmYWNlID0gX2Fz
c2lnbih7fSwgU3VwZXIuSW50ZXJmYWNlLCBJbnRlcmZhY2UpO1xuXHQgIENsYXNzLmF1Z21lbnRD
bGFzcyA9IFN1cGVyLmF1Z21lbnRDbGFzcztcblx0XG5cdCAgUG9vbGVkQ2xhc3MuYWRkUG9vbGlu
Z1RvKENsYXNzLCBQb29sZWRDbGFzcy5mb3VyQXJndW1lbnRQb29sZXIpO1xuXHR9O1xuXHRcblx0
UG9vbGVkQ2xhc3MuYWRkUG9vbGluZ1RvKFN5bnRoZXRpY0V2ZW50LCBQb29sZWRDbGFzcy5mb3Vy
QXJndW1lbnRQb29sZXIpO1xuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBTeW50aGV0aWNFdmVudDtc
blx0XG5cdC8qKlxuXHQgICogSGVscGVyIHRvIG51bGxpZnkgc3ludGhldGljRXZlbnQgaW5zdGFu
Y2UgcHJvcGVydGllcyB3aGVuIGRlc3RydWN0aW5nXG5cdCAgKlxuXHQgICogQHBhcmFtIHtvYmpl
Y3R9IFN5bnRoZXRpY0V2ZW50XG5cdCAgKiBAcGFyYW0ge1N0cmluZ30gcHJvcE5hbWVcblx0ICAq
IEByZXR1cm4ge29iamVjdH0gZGVmaW5lUHJvcGVydHkgb2JqZWN0XG5cdCAgKi9cblx0ZnVuY3Rp
b24gZ2V0UG9vbGVkV2FybmluZ1Byb3BlcnR5RGVmaW5pdGlvbihwcm9wTmFtZSwgZ2V0VmFsKSB7
XG5cdCAgdmFyIGlzRnVuY3Rpb24gPSB0eXBlb2YgZ2V0VmFsID09PSAnZnVuY3Rpb24nO1xuXHQg
IHJldHVybiB7XG5cdCAgICBjb25maWd1cmFibGU6IHRydWUsXG5cdCAgICBzZXQ6IHNldCxcblx0
ICAgIGdldDogZ2V0XG5cdCAgfTtcblx0XG5cdCAgZnVuY3Rpb24gc2V0KHZhbCkge1xuXHQgICAg
dmFyIGFjdGlvbiA9IGlzRnVuY3Rpb24gPyAnc2V0dGluZyB0aGUgbWV0aG9kJyA6ICdzZXR0aW5n
IHRoZSBwcm9wZXJ0eSc7XG5cdCAgICB3YXJuKGFjdGlvbiwgJ1RoaXMgaXMgZWZmZWN0aXZlbHkg
YSBuby1vcCcpO1xuXHQgICAgcmV0dXJuIHZhbDtcblx0ICB9XG5cdFxuXHQgIGZ1bmN0aW9uIGdl
dCgpIHtcblx0ICAgIHZhciBhY3Rpb24gPSBpc0Z1bmN0aW9uID8gJ2FjY2Vzc2luZyB0aGUgbWV0
aG9kJyA6ICdhY2Nlc3NpbmcgdGhlIHByb3BlcnR5Jztcblx0ICAgIHZhciByZXN1bHQgPSBpc0Z1
bmN0aW9uID8gJ1RoaXMgaXMgYSBuby1vcCBmdW5jdGlvbicgOiAnVGhpcyBpcyBzZXQgdG8gbnVs
bCc7XG5cdCAgICB3YXJuKGFjdGlvbiwgcmVzdWx0KTtcblx0ICAgIHJldHVybiBnZXRWYWw7XG5c
dCAgfVxuXHRcblx0ICBmdW5jdGlvbiB3YXJuKGFjdGlvbiwgcmVzdWx0KSB7XG5cdCAgICB2YXIg
d2FybmluZ0NvbmRpdGlvbiA9IGZhbHNlO1xuXHQgICAgIGZhbHNlID8gd2FybmluZyh3YXJuaW5n
Q29uZGl0aW9uLCBcIlRoaXMgc3ludGhldGljIGV2ZW50IGlzIHJldXNlZCBmb3IgcGVyZm9ybWFu
Y2UgcmVhc29ucy4gSWYgeW91J3JlIHNlZWluZyB0aGlzLCBcIiArIFwieW91J3JlICVzIGAlc2Ag
b24gYSByZWxlYXNlZC9udWxsaWZpZWQgc3ludGhldGljIGV2ZW50LiAlcy4gXCIgKyAnSWYgeW91
IG11c3Qga2VlcCB0aGUgb3JpZ2luYWwgc3ludGhldGljIGV2ZW50IGFyb3VuZCwgdXNlIGV2ZW50
LnBlcnNpc3QoKS4gJyArICdTZWUgaHR0cHM6Ly9mYi5tZS9yZWFjdC1ldmVudC1wb29saW5nIGZv
ciBtb3JlIGluZm9ybWF0aW9uLicsIGFjdGlvbiwgcHJvcE5hbWUsIHJlc3VsdCkgOiB2b2lkIDA7
XG5cdCAgfVxuXHR9XG5cbi8qKiovIH0sXG4vKiAxMSAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxl
LCBleHBvcnRzKSB7XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vi
b29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291
cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGlu
IHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291
cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4g
YmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAq
XG5cdCAqIFxuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdC8qKlxuXHQgKiBLZWVw
cyB0cmFjayBvZiB0aGUgY3VycmVudCBvd25lci5cblx0ICpcblx0ICogVGhlIGN1cnJlbnQgb3du
ZXIgaXMgdGhlIGNvbXBvbmVudCB3aG8gc2hvdWxkIG93biBhbnkgY29tcG9uZW50cyB0aGF0IGFy
ZVxuXHQgKiBjdXJyZW50bHkgYmVpbmcgY29uc3RydWN0ZWQuXG5cdCAqL1xuXHR2YXIgUmVhY3RD
dXJyZW50T3duZXIgPSB7XG5cdCAgLyoqXG5cdCAgICogQGludGVybmFsXG5cdCAgICogQHR5cGUg
e1JlYWN0Q29tcG9uZW50fVxuXHQgICAqL1xuXHQgIGN1cnJlbnQ6IG51bGxcblx0fTtcblx0XG5c
dG1vZHVsZS5leHBvcnRzID0gUmVhY3RDdXJyZW50T3duZXI7XG5cbi8qKiovIH0sXG4vKiAxMiAq
L1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7
XG5cblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBfX3dlYnBhY2tfcmVx
dWlyZV9fKDE3KTtcblxuXG4vKioqLyB9LFxuLyogMTMgKi9cblsyMzEsIDNdLFxuLyogMTQgKi9c
bi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xu
XG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxNS1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQg
KiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxp
Y2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElD
RU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBh
ZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRo
ZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKi9cblx0XG5c
dCd1c2Ugc3RyaWN0Jztcblx0XG5cdHZhciBET01OYW1lc3BhY2VzID0gX193ZWJwYWNrX3JlcXVp
cmVfXygzNSk7XG5cdHZhciBzZXRJbm5lckhUTUwgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDI5KTtc
blx0XG5cdHZhciBjcmVhdGVNaWNyb3NvZnRVbnNhZmVMb2NhbEZ1bmN0aW9uID0gX193ZWJwYWNr
X3JlcXVpcmVfXyg0Myk7XG5cdHZhciBzZXRUZXh0Q29udGVudCA9IF9fd2VicGFja19yZXF1aXJl
X18oNzcpO1xuXHRcblx0dmFyIEVMRU1FTlRfTk9ERV9UWVBFID0gMTtcblx0dmFyIERPQ1VNRU5U
X0ZSQUdNRU5UX05PREVfVFlQRSA9IDExO1xuXHRcblx0LyoqXG5cdCAqIEluIElFICg4LTExKSBh
bmQgRWRnZSwgYXBwZW5kaW5nIG5vZGVzIHdpdGggbm8gY2hpbGRyZW4gaXMgZHJhbWF0aWNhbGx5
XG5cdCAqIGZhc3RlciB0aGFuIGFwcGVuZGluZyBhIGZ1bGwgc3VidHJlZSwgc28gd2UgZXNzZW50
aWFsbHkgcXVldWUgdXAgdGhlXG5cdCAqIC5hcHBlbmRDaGlsZCBjYWxscyBoZXJlIGFuZCBhcHBs
eSB0aGVtIHNvIGVhY2ggbm9kZSBpcyBhZGRlZCB0byBpdHMgcGFyZW50XG5cdCAqIGJlZm9yZSBh
bnkgY2hpbGRyZW4gYXJlIGFkZGVkLlxuXHQgKlxuXHQgKiBJbiBvdGhlciBicm93c2VycywgZG9p
bmcgc28gaXMgc2xvd2VyIG9yIG5ldXRyYWwgY29tcGFyZWQgdG8gdGhlIG90aGVyIG9yZGVyXG5c
dCAqIChpbiBGaXJlZm94LCB0d2ljZSBhcyBzbG93KSBzbyB3ZSBvbmx5IGRvIHRoaXMgaW52ZXJz
aW9uIGluIElFLlxuXHQgKlxuXHQgKiBTZWUgaHR0cHM6Ly9naXRodWIuY29tL3NwaWN5ai9pbm5l
cmh0bWwtdnMtY3JlYXRlZWxlbWVudC12cy1jbG9uZW5vZGUuXG5cdCAqL1xuXHR2YXIgZW5hYmxl
TGF6eSA9IHR5cGVvZiBkb2N1bWVudCAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIGRvY3VtZW50
LmRvY3VtZW50TW9kZSA9PT0gJ251bWJlcicgfHwgdHlwZW9mIG5hdmlnYXRvciAhPT0gJ3VuZGVm
aW5lZCcgJiYgdHlwZW9mIG5hdmlnYXRvci51c2VyQWdlbnQgPT09ICdzdHJpbmcnICYmIC9cXGJF
ZGdlXFwvXFxkLy50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpO1xuXHRcblx0ZnVuY3Rpb24gaW5z
ZXJ0VHJlZUNoaWxkcmVuKHRyZWUpIHtcblx0ICBpZiAoIWVuYWJsZUxhenkpIHtcblx0ICAgIHJl
dHVybjtcblx0ICB9XG5cdCAgdmFyIG5vZGUgPSB0cmVlLm5vZGU7XG5cdCAgdmFyIGNoaWxkcmVu
ID0gdHJlZS5jaGlsZHJlbjtcblx0ICBpZiAoY2hpbGRyZW4ubGVuZ3RoKSB7XG5cdCAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG5cdCAgICAgIGluc2VydFRy
ZWVCZWZvcmUobm9kZSwgY2hpbGRyZW5baV0sIG51bGwpO1xuXHQgICAgfVxuXHQgIH0gZWxzZSBp
ZiAodHJlZS5odG1sICE9IG51bGwpIHtcblx0ICAgIHNldElubmVySFRNTChub2RlLCB0cmVlLmh0
bWwpO1xuXHQgIH0gZWxzZSBpZiAodHJlZS50ZXh0ICE9IG51bGwpIHtcblx0ICAgIHNldFRleHRD
b250ZW50KG5vZGUsIHRyZWUudGV4dCk7XG5cdCAgfVxuXHR9XG5cdFxuXHR2YXIgaW5zZXJ0VHJl
ZUJlZm9yZSA9IGNyZWF0ZU1pY3Jvc29mdFVuc2FmZUxvY2FsRnVuY3Rpb24oZnVuY3Rpb24gKHBh
cmVudE5vZGUsIHRyZWUsIHJlZmVyZW5jZU5vZGUpIHtcblx0ICAvLyBEb2N1bWVudEZyYWdtZW50
cyBhcmVuJ3QgYWN0dWFsbHkgcGFydCBvZiB0aGUgRE9NIGFmdGVyIGluc2VydGlvbiBzb1xuXHQg
IC8vIGFwcGVuZGluZyBjaGlsZHJlbiB3b24ndCB1cGRhdGUgdGhlIERPTS4gV2UgbmVlZCB0byBl
bnN1cmUgdGhlIGZyYWdtZW50XG5cdCAgLy8gaXMgcHJvcGVybHkgcG9wdWxhdGVkIGZpcnN0LCBi
cmVha2luZyBvdXQgb2Ygb3VyIGxhenkgYXBwcm9hY2ggZm9yIGp1c3Rcblx0ICAvLyB0aGlzIGxl
dmVsLiBBbHNvLCBzb21lIDxvYmplY3Q+IHBsdWdpbnMgKGxpa2UgRmxhc2ggUGxheWVyKSB3aWxs
IHJlYWRcblx0ICAvLyA8cGFyYW0+IG5vZGVzIGltbWVkaWF0ZWx5IHVwb24gaW5zZXJ0aW9uIGlu
dG8gdGhlIERPTSwgc28gPG9iamVjdD5cblx0ICAvLyBtdXN0IGFsc28gYmUgcG9wdWxhdGVkIHBy
aW9yIHRvIGluc2VydGlvbiBpbnRvIHRoZSBET00uXG5cdCAgaWYgKHRyZWUubm9kZS5ub2RlVHlw
ZSA9PT0gRE9DVU1FTlRfRlJBR01FTlRfTk9ERV9UWVBFIHx8IHRyZWUubm9kZS5ub2RlVHlwZSA9
PT0gRUxFTUVOVF9OT0RFX1RZUEUgJiYgdHJlZS5ub2RlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkg
PT09ICdvYmplY3QnICYmICh0cmVlLm5vZGUubmFtZXNwYWNlVVJJID09IG51bGwgfHwgdHJlZS5u
b2RlLm5hbWVzcGFjZVVSSSA9PT0gRE9NTmFtZXNwYWNlcy5odG1sKSkge1xuXHQgICAgaW5zZXJ0
VHJlZUNoaWxkcmVuKHRyZWUpO1xuXHQgICAgcGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUodHJlZS5u
b2RlLCByZWZlcmVuY2VOb2RlKTtcblx0ICB9IGVsc2Uge1xuXHQgICAgcGFyZW50Tm9kZS5pbnNl
cnRCZWZvcmUodHJlZS5ub2RlLCByZWZlcmVuY2VOb2RlKTtcblx0ICAgIGluc2VydFRyZWVDaGls
ZHJlbih0cmVlKTtcblx0ICB9XG5cdH0pO1xuXHRcblx0ZnVuY3Rpb24gcmVwbGFjZUNoaWxkV2l0
aFRyZWUob2xkTm9kZSwgbmV3VHJlZSkge1xuXHQgIG9sZE5vZGUucGFyZW50Tm9kZS5yZXBsYWNl
Q2hpbGQobmV3VHJlZS5ub2RlLCBvbGROb2RlKTtcblx0ICBpbnNlcnRUcmVlQ2hpbGRyZW4obmV3
VHJlZSk7XG5cdH1cblx0XG5cdGZ1bmN0aW9uIHF1ZXVlQ2hpbGQocGFyZW50VHJlZSwgY2hpbGRU
cmVlKSB7XG5cdCAgaWYgKGVuYWJsZUxhenkpIHtcblx0ICAgIHBhcmVudFRyZWUuY2hpbGRyZW4u
cHVzaChjaGlsZFRyZWUpO1xuXHQgIH0gZWxzZSB7XG5cdCAgICBwYXJlbnRUcmVlLm5vZGUuYXBw
ZW5kQ2hpbGQoY2hpbGRUcmVlLm5vZGUpO1xuXHQgIH1cblx0fVxuXHRcblx0ZnVuY3Rpb24gcXVl
dWVIVE1MKHRyZWUsIGh0bWwpIHtcblx0ICBpZiAoZW5hYmxlTGF6eSkge1xuXHQgICAgdHJlZS5o
dG1sID0gaHRtbDtcblx0ICB9IGVsc2Uge1xuXHQgICAgc2V0SW5uZXJIVE1MKHRyZWUubm9kZSwg
aHRtbCk7XG5cdCAgfVxuXHR9XG5cdFxuXHRmdW5jdGlvbiBxdWV1ZVRleHQodHJlZSwgdGV4dCkg
e1xuXHQgIGlmIChlbmFibGVMYXp5KSB7XG5cdCAgICB0cmVlLnRleHQgPSB0ZXh0O1xuXHQgIH0g
ZWxzZSB7XG5cdCAgICBzZXRUZXh0Q29udGVudCh0cmVlLm5vZGUsIHRleHQpO1xuXHQgIH1cblx0
fVxuXHRcblx0ZnVuY3Rpb24gdG9TdHJpbmcoKSB7XG5cdCAgcmV0dXJuIHRoaXMubm9kZS5ub2Rl
TmFtZTtcblx0fVxuXHRcblx0ZnVuY3Rpb24gRE9NTGF6eVRyZWUobm9kZSkge1xuXHQgIHJldHVy
biB7XG5cdCAgICBub2RlOiBub2RlLFxuXHQgICAgY2hpbGRyZW46IFtdLFxuXHQgICAgaHRtbDog
bnVsbCxcblx0ICAgIHRleHQ6IG51bGwsXG5cdCAgICB0b1N0cmluZzogdG9TdHJpbmdcblx0ICB9
O1xuXHR9XG5cdFxuXHRET01MYXp5VHJlZS5pbnNlcnRUcmVlQmVmb3JlID0gaW5zZXJ0VHJlZUJl
Zm9yZTtcblx0RE9NTGF6eVRyZWUucmVwbGFjZUNoaWxkV2l0aFRyZWUgPSByZXBsYWNlQ2hpbGRX
aXRoVHJlZTtcblx0RE9NTGF6eVRyZWUucXVldWVDaGlsZCA9IHF1ZXVlQ2hpbGQ7XG5cdERPTUxh
enlUcmVlLnF1ZXVlSFRNTCA9IHF1ZXVlSFRNTDtcblx0RE9NTGF6eVRyZWUucXVldWVUZXh0ID0g
cXVldWVUZXh0O1xuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBET01MYXp5VHJlZTtcblxuLyoqKi8g
fSxcbi8qIDE1ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19y
ZXF1aXJlX18pIHtcblxuXHQvKipcblx0ICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJv
b2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICogVGhpcyBzb3Vy
Y2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4g
dGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3Vy
Y2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBi
ZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpc
blx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHR2YXIgX3Byb2RJbnZhcmlhbnQgPSBf
X3dlYnBhY2tfcmVxdWlyZV9fKDMpO1xuXHRcblx0dmFyIGludmFyaWFudCA9IF9fd2VicGFja19y
ZXF1aXJlX18oMSk7XG5cdFxuXHRmdW5jdGlvbiBjaGVja01hc2sodmFsdWUsIGJpdG1hc2spIHtc
blx0ICByZXR1cm4gKHZhbHVlICYgYml0bWFzaykgPT09IGJpdG1hc2s7XG5cdH1cblx0XG5cdHZh
ciBET01Qcm9wZXJ0eUluamVjdGlvbiA9IHtcblx0ICAvKipcblx0ICAgKiBNYXBwaW5nIGZyb20g
bm9ybWFsaXplZCwgY2FtZWxjYXNlZCBwcm9wZXJ0eSBuYW1lcyB0byBhIGNvbmZpZ3VyYXRpb24g
dGhhdFxuXHQgICAqIHNwZWNpZmllcyBob3cgdGhlIGFzc29jaWF0ZWQgRE9NIHByb3BlcnR5IHNo
b3VsZCBiZSBhY2Nlc3NlZCBvciByZW5kZXJlZC5cblx0ICAgKi9cblx0ICBNVVNUX1VTRV9QUk9Q
RVJUWTogMHgxLFxuXHQgIEhBU19CT09MRUFOX1ZBTFVFOiAweDQsXG5cdCAgSEFTX05VTUVSSUNf
VkFMVUU6IDB4OCxcblx0ICBIQVNfUE9TSVRJVkVfTlVNRVJJQ19WQUxVRTogMHgxMCB8IDB4OCxc
blx0ICBIQVNfT1ZFUkxPQURFRF9CT09MRUFOX1ZBTFVFOiAweDIwLFxuXHRcblx0ICAvKipcblx0
ICAgKiBJbmplY3Qgc29tZSBzcGVjaWFsaXplZCBrbm93bGVkZ2UgYWJvdXQgdGhlIERPTS4gVGhp
cyB0YWtlcyBhIGNvbmZpZyBvYmplY3Rcblx0ICAgKiB3aXRoIHRoZSBmb2xsb3dpbmcgcHJvcGVy
dGllczpcblx0ICAgKlxuXHQgICAqIGlzQ3VzdG9tQXR0cmlidXRlOiBmdW5jdGlvbiB0aGF0IGdp
dmVuIGFuIGF0dHJpYnV0ZSBuYW1lIHdpbGwgcmV0dXJuIHRydWVcblx0ICAgKiBpZiBpdCBjYW4g
YmUgaW5zZXJ0ZWQgaW50byB0aGUgRE9NIHZlcmJhdGltLiBVc2VmdWwgZm9yIGRhdGEtKiBvciBh
cmlhLSpcblx0ICAgKiBhdHRyaWJ1dGVzIHdoZXJlIGl0J3MgaW1wb3NzaWJsZSB0byBlbnVtZXJh
dGUgYWxsIG9mIHRoZSBwb3NzaWJsZVxuXHQgICAqIGF0dHJpYnV0ZSBuYW1lcyxcblx0ICAgKlxu
XHQgICAqIFByb3BlcnRpZXM6IG9iamVjdCBtYXBwaW5nIERPTSBwcm9wZXJ0eSBuYW1lIHRvIG9u
ZSBvZiB0aGVcblx0ICAgKiBET01Qcm9wZXJ0eUluamVjdGlvbiBjb25zdGFudHMgb3IgbnVsbC4g
SWYgeW91ciBhdHRyaWJ1dGUgaXNuJ3QgaW4gaGVyZSxcblx0ICAgKiBpdCB3b24ndCBnZXQgd3Jp
dHRlbiB0byB0aGUgRE9NLlxuXHQgICAqXG5cdCAgICogRE9NQXR0cmlidXRlTmFtZXM6IG9iamVj
dCBtYXBwaW5nIFJlYWN0IGF0dHJpYnV0ZSBuYW1lIHRvIHRoZSBET01cblx0ICAgKiBhdHRyaWJ1
dGUgbmFtZS4gQXR0cmlidXRlIG5hbWVzIG5vdCBzcGVjaWZpZWQgdXNlIHRoZSAqKmxvd2VyY2Fz
ZSoqXG5cdCAgICogbm9ybWFsaXplZCBuYW1lLlxuXHQgICAqXG5cdCAgICogRE9NQXR0cmlidXRl
TmFtZXNwYWNlczogb2JqZWN0IG1hcHBpbmcgUmVhY3QgYXR0cmlidXRlIG5hbWUgdG8gdGhlIERP
TVxuXHQgICAqIGF0dHJpYnV0ZSBuYW1lc3BhY2UgVVJMLiAoQXR0cmlidXRlIG5hbWVzIG5vdCBz
cGVjaWZpZWQgdXNlIG5vIG5hbWVzcGFjZS4pXG5cdCAgICpcblx0ICAgKiBET01Qcm9wZXJ0eU5h
bWVzOiBzaW1pbGFyIHRvIERPTUF0dHJpYnV0ZU5hbWVzIGJ1dCBmb3IgRE9NIHByb3BlcnRpZXMu
XG5cdCAgICogUHJvcGVydHkgbmFtZXMgbm90IHNwZWNpZmllZCB1c2UgdGhlIG5vcm1hbGl6ZWQg
bmFtZS5cblx0ICAgKlxuXHQgICAqIERPTU11dGF0aW9uTWV0aG9kczogUHJvcGVydGllcyB0aGF0
IHJlcXVpcmUgc3BlY2lhbCBtdXRhdGlvbiBtZXRob2RzLiBJZlxuXHQgICAqIGB2YWx1ZWAgaXMg
dW5kZWZpbmVkLCB0aGUgbXV0YXRpb24gbWV0aG9kIHNob3VsZCB1bnNldCB0aGUgcHJvcGVydHku
XG5cdCAgICpcblx0ICAgKiBAcGFyYW0ge29iamVjdH0gZG9tUHJvcGVydHlDb25maWcgdGhlIGNv
bmZpZyBhcyBkZXNjcmliZWQgYWJvdmUuXG5cdCAgICovXG5cdCAgaW5qZWN0RE9NUHJvcGVydHlD
b25maWc6IGZ1bmN0aW9uIChkb21Qcm9wZXJ0eUNvbmZpZykge1xuXHQgICAgdmFyIEluamVjdGlv
biA9IERPTVByb3BlcnR5SW5qZWN0aW9uO1xuXHQgICAgdmFyIFByb3BlcnRpZXMgPSBkb21Qcm9w
ZXJ0eUNvbmZpZy5Qcm9wZXJ0aWVzIHx8IHt9O1xuXHQgICAgdmFyIERPTUF0dHJpYnV0ZU5hbWVz
cGFjZXMgPSBkb21Qcm9wZXJ0eUNvbmZpZy5ET01BdHRyaWJ1dGVOYW1lc3BhY2VzIHx8IHt9O1xu
XHQgICAgdmFyIERPTUF0dHJpYnV0ZU5hbWVzID0gZG9tUHJvcGVydHlDb25maWcuRE9NQXR0cmli
dXRlTmFtZXMgfHwge307XG5cdCAgICB2YXIgRE9NUHJvcGVydHlOYW1lcyA9IGRvbVByb3BlcnR5
Q29uZmlnLkRPTVByb3BlcnR5TmFtZXMgfHwge307XG5cdCAgICB2YXIgRE9NTXV0YXRpb25NZXRo
b2RzID0gZG9tUHJvcGVydHlDb25maWcuRE9NTXV0YXRpb25NZXRob2RzIHx8IHt9O1xuXHRcblx0
ICAgIGlmIChkb21Qcm9wZXJ0eUNvbmZpZy5pc0N1c3RvbUF0dHJpYnV0ZSkge1xuXHQgICAgICBE
T01Qcm9wZXJ0eS5faXNDdXN0b21BdHRyaWJ1dGVGdW5jdGlvbnMucHVzaChkb21Qcm9wZXJ0eUNv
bmZpZy5pc0N1c3RvbUF0dHJpYnV0ZSk7XG5cdCAgICB9XG5cdFxuXHQgICAgZm9yICh2YXIgcHJv
cE5hbWUgaW4gUHJvcGVydGllcykge1xuXHQgICAgICAhIURPTVByb3BlcnR5LnByb3BlcnRpZXMu
aGFzT3duUHJvcGVydHkocHJvcE5hbWUpID8gIGZhbHNlID8gaW52YXJpYW50KGZhbHNlLCAnaW5q
ZWN0RE9NUHJvcGVydHlDb25maWcoLi4uKTogWW91XFwncmUgdHJ5aW5nIHRvIGluamVjdCBET00g
cHJvcGVydHkgXFwnJXNcXCcgd2hpY2ggaGFzIGFscmVhZHkgYmVlbiBpbmplY3RlZC4gWW91IG1h
eSBiZSBhY2NpZGVudGFsbHkgaW5qZWN0aW5nIHRoZSBzYW1lIERPTSBwcm9wZXJ0eSBjb25maWcg
dHdpY2UsIG9yIHlvdSBtYXkgYmUgaW5qZWN0aW5nIHR3byBjb25maWdzIHRoYXQgaGF2ZSBjb25m
bGljdGluZyBwcm9wZXJ0eSBuYW1lcy4nLCBwcm9wTmFtZSkgOiBfcHJvZEludmFyaWFudCgnNDgn
LCBwcm9wTmFtZSkgOiB2b2lkIDA7XG5cdFxuXHQgICAgICB2YXIgbG93ZXJDYXNlZCA9IHByb3BO
YW1lLnRvTG93ZXJDYXNlKCk7XG5cdCAgICAgIHZhciBwcm9wQ29uZmlnID0gUHJvcGVydGllc1tw
cm9wTmFtZV07XG5cdFxuXHQgICAgICB2YXIgcHJvcGVydHlJbmZvID0ge1xuXHQgICAgICAgIGF0
dHJpYnV0ZU5hbWU6IGxvd2VyQ2FzZWQsXG5cdCAgICAgICAgYXR0cmlidXRlTmFtZXNwYWNlOiBu
dWxsLFxuXHQgICAgICAgIHByb3BlcnR5TmFtZTogcHJvcE5hbWUsXG5cdCAgICAgICAgbXV0YXRp
b25NZXRob2Q6IG51bGwsXG5cdFxuXHQgICAgICAgIG11c3RVc2VQcm9wZXJ0eTogY2hlY2tNYXNr
KHByb3BDb25maWcsIEluamVjdGlvbi5NVVNUX1VTRV9QUk9QRVJUWSksXG5cdCAgICAgICAgaGFz
Qm9vbGVhblZhbHVlOiBjaGVja01hc2socHJvcENvbmZpZywgSW5qZWN0aW9uLkhBU19CT09MRUFO
X1ZBTFVFKSxcblx0ICAgICAgICBoYXNOdW1lcmljVmFsdWU6IGNoZWNrTWFzayhwcm9wQ29uZmln
LCBJbmplY3Rpb24uSEFTX05VTUVSSUNfVkFMVUUpLFxuXHQgICAgICAgIGhhc1Bvc2l0aXZlTnVt
ZXJpY1ZhbHVlOiBjaGVja01hc2socHJvcENvbmZpZywgSW5qZWN0aW9uLkhBU19QT1NJVElWRV9O
VU1FUklDX1ZBTFVFKSxcblx0ICAgICAgICBoYXNPdmVybG9hZGVkQm9vbGVhblZhbHVlOiBjaGVj
a01hc2socHJvcENvbmZpZywgSW5qZWN0aW9uLkhBU19PVkVSTE9BREVEX0JPT0xFQU5fVkFMVUUp
XG5cdCAgICAgIH07XG5cdCAgICAgICEocHJvcGVydHlJbmZvLmhhc0Jvb2xlYW5WYWx1ZSArIHBy
b3BlcnR5SW5mby5oYXNOdW1lcmljVmFsdWUgKyBwcm9wZXJ0eUluZm8uaGFzT3ZlcmxvYWRlZEJv
b2xlYW5WYWx1ZSA8PSAxKSA/ICBmYWxzZSA/IGludmFyaWFudChmYWxzZSwgJ0RPTVByb3BlcnR5
OiBWYWx1ZSBjYW4gYmUgb25lIG9mIGJvb2xlYW4sIG92ZXJsb2FkZWQgYm9vbGVhbiwgb3IgbnVt
ZXJpYyB2YWx1ZSwgYnV0IG5vdCBhIGNvbWJpbmF0aW9uOiAlcycsIHByb3BOYW1lKSA6IF9wcm9k
SW52YXJpYW50KCc1MCcsIHByb3BOYW1lKSA6IHZvaWQgMDtcblx0XG5cdCAgICAgIGlmIChmYWxz
ZSkge1xuXHQgICAgICAgIERPTVByb3BlcnR5LmdldFBvc3NpYmxlU3RhbmRhcmROYW1lW2xvd2Vy
Q2FzZWRdID0gcHJvcE5hbWU7XG5cdCAgICAgIH1cblx0XG5cdCAgICAgIGlmIChET01BdHRyaWJ1
dGVOYW1lcy5oYXNPd25Qcm9wZXJ0eShwcm9wTmFtZSkpIHtcblx0ICAgICAgICB2YXIgYXR0cmli
dXRlTmFtZSA9IERPTUF0dHJpYnV0ZU5hbWVzW3Byb3BOYW1lXTtcblx0ICAgICAgICBwcm9wZXJ0
eUluZm8uYXR0cmlidXRlTmFtZSA9IGF0dHJpYnV0ZU5hbWU7XG5cdCAgICAgICAgaWYgKGZhbHNl
KSB7XG5cdCAgICAgICAgICBET01Qcm9wZXJ0eS5nZXRQb3NzaWJsZVN0YW5kYXJkTmFtZVthdHRy
aWJ1dGVOYW1lXSA9IHByb3BOYW1lO1xuXHQgICAgICAgIH1cblx0ICAgICAgfVxuXHRcblx0ICAg
ICAgaWYgKERPTUF0dHJpYnV0ZU5hbWVzcGFjZXMuaGFzT3duUHJvcGVydHkocHJvcE5hbWUpKSB7
XG5cdCAgICAgICAgcHJvcGVydHlJbmZvLmF0dHJpYnV0ZU5hbWVzcGFjZSA9IERPTUF0dHJpYnV0
ZU5hbWVzcGFjZXNbcHJvcE5hbWVdO1xuXHQgICAgICB9XG5cdFxuXHQgICAgICBpZiAoRE9NUHJv
cGVydHlOYW1lcy5oYXNPd25Qcm9wZXJ0eShwcm9wTmFtZSkpIHtcblx0ICAgICAgICBwcm9wZXJ0
eUluZm8ucHJvcGVydHlOYW1lID0gRE9NUHJvcGVydHlOYW1lc1twcm9wTmFtZV07XG5cdCAgICAg
IH1cblx0XG5cdCAgICAgIGlmIChET01NdXRhdGlvbk1ldGhvZHMuaGFzT3duUHJvcGVydHkocHJv
cE5hbWUpKSB7XG5cdCAgICAgICAgcHJvcGVydHlJbmZvLm11dGF0aW9uTWV0aG9kID0gRE9NTXV0
YXRpb25NZXRob2RzW3Byb3BOYW1lXTtcblx0ICAgICAgfVxuXHRcblx0ICAgICAgRE9NUHJvcGVy
dHkucHJvcGVydGllc1twcm9wTmFtZV0gPSBwcm9wZXJ0eUluZm87XG5cdCAgICB9XG5cdCAgfVxu
XHR9O1xuXHRcblx0LyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiAqL1xuXHR2YXIgQVRUUklCVVRF
X05BTUVfU1RBUlRfQ0hBUiA9ICc6QS1aX2EtelxcXFx1MDBDMC1cXFxcdTAwRDZcXFxcdTAwRDgt
XFxcXHUwMEY2XFxcXHUwMEY4LVxcXFx1MDJGRlxcXFx1MDM3MC1cXFxcdTAzN0RcXFxcdTAzN0Yt
XFxcXHUxRkZGXFxcXHUyMDBDLVxcXFx1MjAwRFxcXFx1MjA3MC1cXFxcdTIxOEZcXFxcdTJDMDAt
XFxcXHUyRkVGXFxcXHUzMDAxLVxcXFx1RDdGRlxcXFx1RjkwMC1cXFxcdUZEQ0ZcXFxcdUZERjAt
XFxcXHVGRkZEJztcblx0LyogZXNsaW50LWVuYWJsZSBtYXgtbGVuICovXG5cdFxuXHQvKipcblx0
ICogRE9NUHJvcGVydHkgZXhwb3J0cyBsb29rdXAgb2JqZWN0cyB0aGF0IGNhbiBiZSB1c2VkIGxp
a2UgZnVuY3Rpb25zOlxuXHQgKlxuXHQgKiAgID4gRE9NUHJvcGVydHkuaXNWYWxpZFsnaWQnXVxu
XHQgKiAgIHRydWVcblx0ICogICA+IERPTVByb3BlcnR5LmlzVmFsaWRbJ2Zvb2JhciddXG5cdCAq
ICAgdW5kZWZpbmVkXG5cdCAqXG5cdCAqIEFsdGhvdWdoIHRoaXMgbWF5IGJlIGNvbmZ1c2luZywg
aXQgcGVyZm9ybXMgYmV0dGVyIGluIGdlbmVyYWwuXG5cdCAqXG5cdCAqIEBzZWUgaHR0cDovL2pz
cGVyZi5jb20va2V5LWV4aXN0c1xuXHQgKiBAc2VlIGh0dHA6Ly9qc3BlcmYuY29tL2tleS1taXNz
aW5nXG5cdCAqL1xuXHR2YXIgRE9NUHJvcGVydHkgPSB7XG5cdCAgSURfQVRUUklCVVRFX05BTUU6
ICdkYXRhLXJlYWN0aWQnLFxuXHQgIFJPT1RfQVRUUklCVVRFX05BTUU6ICdkYXRhLXJlYWN0cm9v
dCcsXG5cdFxuXHQgIEFUVFJJQlVURV9OQU1FX1NUQVJUX0NIQVI6IEFUVFJJQlVURV9OQU1FX1NU
QVJUX0NIQVIsXG5cdCAgQVRUUklCVVRFX05BTUVfQ0hBUjogQVRUUklCVVRFX05BTUVfU1RBUlRf
Q0hBUiArICdcXFxcLS4wLTlcXFxcdTAwQjdcXFxcdTAzMDAtXFxcXHUwMzZGXFxcXHUyMDNGLVxc
XFx1MjA0MCcsXG5cdFxuXHQgIC8qKlxuXHQgICAqIE1hcCBmcm9tIHByb3BlcnR5IFwic3RhbmRh
cmQgbmFtZVwiIHRvIGFuIG9iamVjdCB3aXRoIGluZm8gYWJvdXQgaG93IHRvIHNldFxuXHQgICAq
IHRoZSBwcm9wZXJ0eSBpbiB0aGUgRE9NLiBFYWNoIG9iamVjdCBjb250YWluczpcblx0ICAgKlxu
XHQgICAqIGF0dHJpYnV0ZU5hbWU6XG5cdCAgICogICBVc2VkIHdoZW4gcmVuZGVyaW5nIG1hcmt1
cCBvciB3aXRoIGAqQXR0cmlidXRlKClgLlxuXHQgICAqIGF0dHJpYnV0ZU5hbWVzcGFjZVxuXHQg
ICAqIHByb3BlcnR5TmFtZTpcblx0ICAgKiAgIFVzZWQgb24gRE9NIG5vZGUgaW5zdGFuY2VzLiAo
VGhpcyBpbmNsdWRlcyBwcm9wZXJ0aWVzIHRoYXQgbXV0YXRlIGR1ZSB0b1xuXHQgICAqICAgZXh0
ZXJuYWwgZmFjdG9ycy4pXG5cdCAgICogbXV0YXRpb25NZXRob2Q6XG5cdCAgICogICBJZiBub24t
bnVsbCwgdXNlZCBpbnN0ZWFkIG9mIHRoZSBwcm9wZXJ0eSBvciBgc2V0QXR0cmlidXRlKClgIGFm
dGVyXG5cdCAgICogICBpbml0aWFsIHJlbmRlci5cblx0ICAgKiBtdXN0VXNlUHJvcGVydHk6XG5c
dCAgICogICBXaGV0aGVyIHRoZSBwcm9wZXJ0eSBtdXN0IGJlIGFjY2Vzc2VkIGFuZCBtdXRhdGVk
IGFzIGFuIG9iamVjdCBwcm9wZXJ0eS5cblx0ICAgKiBoYXNCb29sZWFuVmFsdWU6XG5cdCAgICog
ICBXaGV0aGVyIHRoZSBwcm9wZXJ0eSBzaG91bGQgYmUgcmVtb3ZlZCB3aGVuIHNldCB0byBhIGZh
bHNleSB2YWx1ZS5cblx0ICAgKiBoYXNOdW1lcmljVmFsdWU6XG5cdCAgICogICBXaGV0aGVyIHRo
ZSBwcm9wZXJ0eSBtdXN0IGJlIG51bWVyaWMgb3IgcGFyc2UgYXMgYSBudW1lcmljIGFuZCBzaG91
bGQgYmVcblx0ICAgKiAgIHJlbW92ZWQgd2hlbiBzZXQgdG8gYSBmYWxzZXkgdmFsdWUuXG5cdCAg
ICogaGFzUG9zaXRpdmVOdW1lcmljVmFsdWU6XG5cdCAgICogICBXaGV0aGVyIHRoZSBwcm9wZXJ0
eSBtdXN0IGJlIHBvc2l0aXZlIG51bWVyaWMgb3IgcGFyc2UgYXMgYSBwb3NpdGl2ZVxuXHQgICAq
ICAgbnVtZXJpYyBhbmQgc2hvdWxkIGJlIHJlbW92ZWQgd2hlbiBzZXQgdG8gYSBmYWxzZXkgdmFs
dWUuXG5cdCAgICogaGFzT3ZlcmxvYWRlZEJvb2xlYW5WYWx1ZTpcblx0ICAgKiAgIFdoZXRoZXIg
dGhlIHByb3BlcnR5IGNhbiBiZSB1c2VkIGFzIGEgZmxhZyBhcyB3ZWxsIGFzIHdpdGggYSB2YWx1
ZS5cblx0ICAgKiAgIFJlbW92ZWQgd2hlbiBzdHJpY3RseSBlcXVhbCB0byBmYWxzZTsgcHJlc2Vu
dCB3aXRob3V0IGEgdmFsdWUgd2hlblxuXHQgICAqICAgc3RyaWN0bHkgZXF1YWwgdG8gdHJ1ZTsg
cHJlc2VudCB3aXRoIGEgdmFsdWUgb3RoZXJ3aXNlLlxuXHQgICAqL1xuXHQgIHByb3BlcnRpZXM6
IHt9LFxuXHRcblx0ICAvKipcblx0ICAgKiBNYXBwaW5nIGZyb20gbG93ZXJjYXNlIHByb3BlcnR5
IG5hbWVzIHRvIHRoZSBwcm9wZXJseSBjYXNlZCB2ZXJzaW9uLCB1c2VkXG5cdCAgICogdG8gd2Fy
biBpbiB0aGUgY2FzZSBvZiBtaXNzaW5nIHByb3BlcnRpZXMuIEF2YWlsYWJsZSBvbmx5IGluIF9f
REVWX18uXG5cdCAgICpcblx0ICAgKiBhdXRvZm9jdXMgaXMgcHJlZGVmaW5lZCwgYmVjYXVzZSBh
ZGRpbmcgaXQgdG8gdGhlIHByb3BlcnR5IHdoaXRlbGlzdFxuXHQgICAqIGNhdXNlcyB1bmludGVu
ZGVkIHNpZGUgZWZmZWN0cy5cblx0ICAgKlxuXHQgICAqIEB0eXBlIHtPYmplY3R9XG5cdCAgICov
XG5cdCAgZ2V0UG9zc2libGVTdGFuZGFyZE5hbWU6ICBmYWxzZSA/IHsgYXV0b2ZvY3VzOiAnYXV0
b0ZvY3VzJyB9IDogbnVsbCxcblx0XG5cdCAgLyoqXG5cdCAgICogQWxsIG9mIHRoZSBpc0N1c3Rv
bUF0dHJpYnV0ZSgpIGZ1bmN0aW9ucyB0aGF0IGhhdmUgYmVlbiBpbmplY3RlZC5cblx0ICAgKi9c
blx0ICBfaXNDdXN0b21BdHRyaWJ1dGVGdW5jdGlvbnM6IFtdLFxuXHRcblx0ICAvKipcblx0ICAg
KiBDaGVja3Mgd2hldGhlciBhIHByb3BlcnR5IG5hbWUgaXMgYSBjdXN0b20gYXR0cmlidXRlLlxu
XHQgICAqIEBtZXRob2Rcblx0ICAgKi9cblx0ICBpc0N1c3RvbUF0dHJpYnV0ZTogZnVuY3Rpb24g
KGF0dHJpYnV0ZU5hbWUpIHtcblx0ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgRE9NUHJvcGVydHku
X2lzQ3VzdG9tQXR0cmlidXRlRnVuY3Rpb25zLmxlbmd0aDsgaSsrKSB7XG5cdCAgICAgIHZhciBp
c0N1c3RvbUF0dHJpYnV0ZUZuID0gRE9NUHJvcGVydHkuX2lzQ3VzdG9tQXR0cmlidXRlRnVuY3Rp
b25zW2ldO1xuXHQgICAgICBpZiAoaXNDdXN0b21BdHRyaWJ1dGVGbihhdHRyaWJ1dGVOYW1lKSkg
e1xuXHQgICAgICAgIHJldHVybiB0cnVlO1xuXHQgICAgICB9XG5cdCAgICB9XG5cdCAgICByZXR1
cm4gZmFsc2U7XG5cdCAgfSxcblx0XG5cdCAgaW5qZWN0aW9uOiBET01Qcm9wZXJ0eUluamVjdGlv
blxuXHR9O1xuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBET01Qcm9wZXJ0eTtcblxuLyoqKi8gfSxc
bi8qIDE2ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1
aXJlX18pIHtcblxuXHQvKipcblx0ICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ss
IEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2Ug
Y29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhl
XG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2Ug
dHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBm
b3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpcblx0
ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHR2YXIgUmVhY3RSZWYgPSBfX3dlYnBhY2tf
cmVxdWlyZV9fKDE2MCk7XG5cdHZhciBSZWFjdEluc3RydW1lbnRhdGlvbiA9IF9fd2VicGFja19y
ZXF1aXJlX18oOCk7XG5cdFxuXHR2YXIgd2FybmluZyA9IF9fd2VicGFja19yZXF1aXJlX18oMik7
XG5cdFxuXHQvKipcblx0ICogSGVscGVyIHRvIGNhbGwgUmVhY3RSZWYuYXR0YWNoUmVmcyB3aXRo
IHRoaXMgY29tcG9zaXRlIGNvbXBvbmVudCwgc3BsaXQgb3V0XG5cdCAqIHRvIGF2b2lkIGFsbG9j
YXRpb25zIGluIHRoZSB0cmFuc2FjdGlvbiBtb3VudC1yZWFkeSBxdWV1ZS5cblx0ICovXG5cdGZ1
bmN0aW9uIGF0dGFjaFJlZnMoKSB7XG5cdCAgUmVhY3RSZWYuYXR0YWNoUmVmcyh0aGlzLCB0aGlz
Ll9jdXJyZW50RWxlbWVudCk7XG5cdH1cblx0XG5cdHZhciBSZWFjdFJlY29uY2lsZXIgPSB7XG5c
dCAgLyoqXG5cdCAgICogSW5pdGlhbGl6ZXMgdGhlIGNvbXBvbmVudCwgcmVuZGVycyBtYXJrdXAs
IGFuZCByZWdpc3RlcnMgZXZlbnQgbGlzdGVuZXJzLlxuXHQgICAqXG5cdCAgICogQHBhcmFtIHtS
ZWFjdENvbXBvbmVudH0gaW50ZXJuYWxJbnN0YW5jZVxuXHQgICAqIEBwYXJhbSB7UmVhY3RSZWNv
bmNpbGVUcmFuc2FjdGlvbnxSZWFjdFNlcnZlclJlbmRlcmluZ1RyYW5zYWN0aW9ufSB0cmFuc2Fj
dGlvblxuXHQgICAqIEBwYXJhbSB7P29iamVjdH0gdGhlIGNvbnRhaW5pbmcgaG9zdCBjb21wb25l
bnQgaW5zdGFuY2Vcblx0ICAgKiBAcGFyYW0gez9vYmplY3R9IGluZm8gYWJvdXQgdGhlIGhvc3Qg
Y29udGFpbmVyXG5cdCAgICogQHJldHVybiB7P3N0cmluZ30gUmVuZGVyZWQgbWFya3VwIHRvIGJl
IGluc2VydGVkIGludG8gdGhlIERPTS5cblx0ICAgKiBAZmluYWxcblx0ICAgKiBAaW50ZXJuYWxc
blx0ICAgKi9cblx0ICBtb3VudENvbXBvbmVudDogZnVuY3Rpb24gKGludGVybmFsSW5zdGFuY2Us
IHRyYW5zYWN0aW9uLCBob3N0UGFyZW50LCBob3N0Q29udGFpbmVySW5mbywgY29udGV4dCwgcGFy
ZW50RGVidWdJRCkgLy8gMCBpbiBwcm9kdWN0aW9uIGFuZCBmb3Igcm9vdHNcblx0ICB7XG5cdCAg
ICBpZiAoZmFsc2UpIHtcblx0ICAgICAgaWYgKGludGVybmFsSW5zdGFuY2UuX2RlYnVnSUQgIT09
IDApIHtcblx0ICAgICAgICBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25CZWZvcmVN
b3VudENvbXBvbmVudChpbnRlcm5hbEluc3RhbmNlLl9kZWJ1Z0lELCBpbnRlcm5hbEluc3RhbmNl
Ll9jdXJyZW50RWxlbWVudCwgcGFyZW50RGVidWdJRCk7XG5cdCAgICAgIH1cblx0ICAgIH1cblx0
ICAgIHZhciBtYXJrdXAgPSBpbnRlcm5hbEluc3RhbmNlLm1vdW50Q29tcG9uZW50KHRyYW5zYWN0
aW9uLCBob3N0UGFyZW50LCBob3N0Q29udGFpbmVySW5mbywgY29udGV4dCwgcGFyZW50RGVidWdJ
RCk7XG5cdCAgICBpZiAoaW50ZXJuYWxJbnN0YW5jZS5fY3VycmVudEVsZW1lbnQgJiYgaW50ZXJu
YWxJbnN0YW5jZS5fY3VycmVudEVsZW1lbnQucmVmICE9IG51bGwpIHtcblx0ICAgICAgdHJhbnNh
Y3Rpb24uZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1ZShhdHRhY2hSZWZzLCBpbnRlcm5hbElu
c3RhbmNlKTtcblx0ICAgIH1cblx0ICAgIGlmIChmYWxzZSkge1xuXHQgICAgICBpZiAoaW50ZXJu
YWxJbnN0YW5jZS5fZGVidWdJRCAhPT0gMCkge1xuXHQgICAgICAgIFJlYWN0SW5zdHJ1bWVudGF0
aW9uLmRlYnVnVG9vbC5vbk1vdW50Q29tcG9uZW50KGludGVybmFsSW5zdGFuY2UuX2RlYnVnSUQp
O1xuXHQgICAgICB9XG5cdCAgICB9XG5cdCAgICByZXR1cm4gbWFya3VwO1xuXHQgIH0sXG5cdFxu
XHQgIC8qKlxuXHQgICAqIFJldHVybnMgYSB2YWx1ZSB0aGF0IGNhbiBiZSBwYXNzZWQgdG9cblx0
ICAgKiBSZWFjdENvbXBvbmVudEVudmlyb25tZW50LnJlcGxhY2VOb2RlV2l0aE1hcmt1cC5cblx0
ICAgKi9cblx0ICBnZXRIb3N0Tm9kZTogZnVuY3Rpb24gKGludGVybmFsSW5zdGFuY2UpIHtcblx0
ICAgIHJldHVybiBpbnRlcm5hbEluc3RhbmNlLmdldEhvc3ROb2RlKCk7XG5cdCAgfSxcblx0XG5c
dCAgLyoqXG5cdCAgICogUmVsZWFzZXMgYW55IHJlc291cmNlcyBhbGxvY2F0ZWQgYnkgYG1vdW50
Q29tcG9uZW50YC5cblx0ICAgKlxuXHQgICAqIEBmaW5hbFxuXHQgICAqIEBpbnRlcm5hbFxuXHQg
ICAqL1xuXHQgIHVubW91bnRDb21wb25lbnQ6IGZ1bmN0aW9uIChpbnRlcm5hbEluc3RhbmNlLCBz
YWZlbHkpIHtcblx0ICAgIGlmIChmYWxzZSkge1xuXHQgICAgICBpZiAoaW50ZXJuYWxJbnN0YW5j
ZS5fZGVidWdJRCAhPT0gMCkge1xuXHQgICAgICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVn
VG9vbC5vbkJlZm9yZVVubW91bnRDb21wb25lbnQoaW50ZXJuYWxJbnN0YW5jZS5fZGVidWdJRCk7
XG5cdCAgICAgIH1cblx0ICAgIH1cblx0ICAgIFJlYWN0UmVmLmRldGFjaFJlZnMoaW50ZXJuYWxJ
bnN0YW5jZSwgaW50ZXJuYWxJbnN0YW5jZS5fY3VycmVudEVsZW1lbnQpO1xuXHQgICAgaW50ZXJu
YWxJbnN0YW5jZS51bm1vdW50Q29tcG9uZW50KHNhZmVseSk7XG5cdCAgICBpZiAoZmFsc2UpIHtc
blx0ICAgICAgaWYgKGludGVybmFsSW5zdGFuY2UuX2RlYnVnSUQgIT09IDApIHtcblx0ICAgICAg
ICBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25Vbm1vdW50Q29tcG9uZW50KGludGVy
bmFsSW5zdGFuY2UuX2RlYnVnSUQpO1xuXHQgICAgICB9XG5cdCAgICB9XG5cdCAgfSxcblx0XG5c
dCAgLyoqXG5cdCAgICogVXBkYXRlIGEgY29tcG9uZW50IHVzaW5nIGEgbmV3IGVsZW1lbnQuXG5c
dCAgICpcblx0ICAgKiBAcGFyYW0ge1JlYWN0Q29tcG9uZW50fSBpbnRlcm5hbEluc3RhbmNlXG5c
dCAgICogQHBhcmFtIHtSZWFjdEVsZW1lbnR9IG5leHRFbGVtZW50XG5cdCAgICogQHBhcmFtIHtS
ZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9ufSB0cmFuc2FjdGlvblxuXHQgICAqIEBwYXJhbSB7b2Jq
ZWN0fSBjb250ZXh0XG5cdCAgICogQGludGVybmFsXG5cdCAgICovXG5cdCAgcmVjZWl2ZUNvbXBv
bmVudDogZnVuY3Rpb24gKGludGVybmFsSW5zdGFuY2UsIG5leHRFbGVtZW50LCB0cmFuc2FjdGlv
biwgY29udGV4dCkge1xuXHQgICAgdmFyIHByZXZFbGVtZW50ID0gaW50ZXJuYWxJbnN0YW5jZS5f
Y3VycmVudEVsZW1lbnQ7XG5cdFxuXHQgICAgaWYgKG5leHRFbGVtZW50ID09PSBwcmV2RWxlbWVu
dCAmJiBjb250ZXh0ID09PSBpbnRlcm5hbEluc3RhbmNlLl9jb250ZXh0KSB7XG5cdCAgICAgIC8v
IFNpbmNlIGVsZW1lbnRzIGFyZSBpbW11dGFibGUgYWZ0ZXIgdGhlIG93bmVyIGlzIHJlbmRlcmVk
LFxuXHQgICAgICAvLyB3ZSBjYW4gZG8gYSBjaGVhcCBpZGVudGl0eSBjb21wYXJlIGhlcmUgdG8g
ZGV0ZXJtaW5lIGlmIHRoaXMgaXMgYVxuXHQgICAgICAvLyBzdXBlcmZsdW91cyByZWNvbmNpbGUu
IEl0J3MgcG9zc2libGUgZm9yIHN0YXRlIHRvIGJlIG11dGFibGUgYnV0IHN1Y2hcblx0ICAgICAg
Ly8gY2hhbmdlIHNob3VsZCB0cmlnZ2VyIGFuIHVwZGF0ZSBvZiB0aGUgb3duZXIgd2hpY2ggd291
bGQgcmVjcmVhdGVcblx0ICAgICAgLy8gdGhlIGVsZW1lbnQuIFdlIGV4cGxpY2l0bHkgY2hlY2sg
Zm9yIHRoZSBleGlzdGVuY2Ugb2YgYW4gb3duZXIgc2luY2Vcblx0ICAgICAgLy8gaXQncyBwb3Nz
aWJsZSBmb3IgYW4gZWxlbWVudCBjcmVhdGVkIG91dHNpZGUgYSBjb21wb3NpdGUgdG8gYmVcblx0
ICAgICAgLy8gZGVlcGx5IG11dGF0ZWQgYW5kIHJldXNlZC5cblx0XG5cdCAgICAgIC8vIFRPRE86
IEJhaWxpbmcgb3V0IGVhcmx5IGlzIGp1c3QgYSBwZXJmIG9wdGltaXphdGlvbiByaWdodD9cblx0
ICAgICAgLy8gVE9ETzogUmVtb3ZpbmcgdGhlIHJldHVybiBzdGF0ZW1lbnQgc2hvdWxkIGFmZmVj
dCBjb3JyZWN0bmVzcz9cblx0ICAgICAgcmV0dXJuO1xuXHQgICAgfVxuXHRcblx0ICAgIGlmIChm
YWxzZSkge1xuXHQgICAgICBpZiAoaW50ZXJuYWxJbnN0YW5jZS5fZGVidWdJRCAhPT0gMCkge1xu
XHQgICAgICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vbkJlZm9yZVVwZGF0ZUNv
bXBvbmVudChpbnRlcm5hbEluc3RhbmNlLl9kZWJ1Z0lELCBuZXh0RWxlbWVudCk7XG5cdCAgICAg
IH1cblx0ICAgIH1cblx0XG5cdCAgICB2YXIgcmVmc0NoYW5nZWQgPSBSZWFjdFJlZi5zaG91bGRV
cGRhdGVSZWZzKHByZXZFbGVtZW50LCBuZXh0RWxlbWVudCk7XG5cdFxuXHQgICAgaWYgKHJlZnND
aGFuZ2VkKSB7XG5cdCAgICAgIFJlYWN0UmVmLmRldGFjaFJlZnMoaW50ZXJuYWxJbnN0YW5jZSwg
cHJldkVsZW1lbnQpO1xuXHQgICAgfVxuXHRcblx0ICAgIGludGVybmFsSW5zdGFuY2UucmVjZWl2
ZUNvbXBvbmVudChuZXh0RWxlbWVudCwgdHJhbnNhY3Rpb24sIGNvbnRleHQpO1xuXHRcblx0ICAg
IGlmIChyZWZzQ2hhbmdlZCAmJiBpbnRlcm5hbEluc3RhbmNlLl9jdXJyZW50RWxlbWVudCAmJiBp
bnRlcm5hbEluc3RhbmNlLl9jdXJyZW50RWxlbWVudC5yZWYgIT0gbnVsbCkge1xuXHQgICAgICB0
cmFuc2FjdGlvbi5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKGF0dGFjaFJlZnMsIGludGVy
bmFsSW5zdGFuY2UpO1xuXHQgICAgfVxuXHRcblx0ICAgIGlmIChmYWxzZSkge1xuXHQgICAgICBp
ZiAoaW50ZXJuYWxJbnN0YW5jZS5fZGVidWdJRCAhPT0gMCkge1xuXHQgICAgICAgIFJlYWN0SW5z
dHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vblVwZGF0ZUNvbXBvbmVudChpbnRlcm5hbEluc3RhbmNl
Ll9kZWJ1Z0lEKTtcblx0ICAgICAgfVxuXHQgICAgfVxuXHQgIH0sXG5cdFxuXHQgIC8qKlxuXHQg
ICAqIEZsdXNoIGFueSBkaXJ0eSBjaGFuZ2VzIGluIGEgY29tcG9uZW50LlxuXHQgICAqXG5cdCAg
ICogQHBhcmFtIHtSZWFjdENvbXBvbmVudH0gaW50ZXJuYWxJbnN0YW5jZVxuXHQgICAqIEBwYXJh
bSB7UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbn0gdHJhbnNhY3Rpb25cblx0ICAgKiBAaW50ZXJu
YWxcblx0ICAgKi9cblx0ICBwZXJmb3JtVXBkYXRlSWZOZWNlc3Nhcnk6IGZ1bmN0aW9uIChpbnRl
cm5hbEluc3RhbmNlLCB0cmFuc2FjdGlvbiwgdXBkYXRlQmF0Y2hOdW1iZXIpIHtcblx0ICAgIGlm
IChpbnRlcm5hbEluc3RhbmNlLl91cGRhdGVCYXRjaE51bWJlciAhPT0gdXBkYXRlQmF0Y2hOdW1i
ZXIpIHtcblx0ICAgICAgLy8gVGhlIGNvbXBvbmVudCdzIGVucXVldWVkIGJhdGNoIG51bWJlciBz
aG91bGQgYWx3YXlzIGJlIHRoZSBjdXJyZW50XG5cdCAgICAgIC8vIGJhdGNoIG9yIHRoZSBmb2xs
b3dpbmcgb25lLlxuXHQgICAgICAgZmFsc2UgPyB3YXJuaW5nKGludGVybmFsSW5zdGFuY2UuX3Vw
ZGF0ZUJhdGNoTnVtYmVyID09IG51bGwgfHwgaW50ZXJuYWxJbnN0YW5jZS5fdXBkYXRlQmF0Y2hO
dW1iZXIgPT09IHVwZGF0ZUJhdGNoTnVtYmVyICsgMSwgJ3BlcmZvcm1VcGRhdGVJZk5lY2Vzc2Fy
eTogVW5leHBlY3RlZCBiYXRjaCBudW1iZXIgKGN1cnJlbnQgJXMsICcgKyAncGVuZGluZyAlcykn
LCB1cGRhdGVCYXRjaE51bWJlciwgaW50ZXJuYWxJbnN0YW5jZS5fdXBkYXRlQmF0Y2hOdW1iZXIp
IDogdm9pZCAwO1xuXHQgICAgICByZXR1cm47XG5cdCAgICB9XG5cdCAgICBpZiAoZmFsc2UpIHtc
blx0ICAgICAgaWYgKGludGVybmFsSW5zdGFuY2UuX2RlYnVnSUQgIT09IDApIHtcblx0ICAgICAg
ICBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25CZWZvcmVVcGRhdGVDb21wb25lbnQo
aW50ZXJuYWxJbnN0YW5jZS5fZGVidWdJRCwgaW50ZXJuYWxJbnN0YW5jZS5fY3VycmVudEVsZW1l
bnQpO1xuXHQgICAgICB9XG5cdCAgICB9XG5cdCAgICBpbnRlcm5hbEluc3RhbmNlLnBlcmZvcm1V
cGRhdGVJZk5lY2Vzc2FyeSh0cmFuc2FjdGlvbik7XG5cdCAgICBpZiAoZmFsc2UpIHtcblx0ICAg
ICAgaWYgKGludGVybmFsSW5zdGFuY2UuX2RlYnVnSUQgIT09IDApIHtcblx0ICAgICAgICBSZWFj
dEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25VcGRhdGVDb21wb25lbnQoaW50ZXJuYWxJbnN0
YW5jZS5fZGVidWdJRCk7XG5cdCAgICAgIH1cblx0ICAgIH1cblx0ICB9XG5cdH07XG5cdFxuXHRt
b2R1bGUuZXhwb3J0cyA9IFJlYWN0UmVjb25jaWxlcjtcblxuLyoqKi8gfSxcbi8qIDE3ICovXG4v
KioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxu
XHQvKipcblx0ICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICog
QWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNl
bnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VO
U0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRk
aXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUg
UEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpcblx0ICovXG5cdFxuXHQn
dXNlIHN0cmljdCc7XG5cdFxuXHR2YXIgX2Fzc2lnbiA9IF9fd2VicGFja19yZXF1aXJlX18oNCk7
XG5cdFxuXHR2YXIgUmVhY3RCYXNlQ2xhc3NlcyA9IF9fd2VicGFja19yZXF1aXJlX18oODkpO1xu
XHR2YXIgUmVhY3RDaGlsZHJlbiA9IF9fd2VicGFja19yZXF1aXJlX18oMjE1KTtcblx0dmFyIFJl
YWN0RE9NRmFjdG9yaWVzID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMTYpO1xuXHR2YXIgUmVhY3RF
bGVtZW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxOCk7XG5cdHZhciBSZWFjdFByb3BUeXBlcyA9
IF9fd2VicGFja19yZXF1aXJlX18oMjE3KTtcblx0dmFyIFJlYWN0VmVyc2lvbiA9IF9fd2VicGFj
a19yZXF1aXJlX18oMjE4KTtcblx0XG5cdHZhciBjcmVhdGVSZWFjdENsYXNzID0gX193ZWJwYWNr
X3JlcXVpcmVfXygyMTkpO1xuXHR2YXIgb25seUNoaWxkID0gX193ZWJwYWNrX3JlcXVpcmVfXygy
MjMpO1xuXHRcblx0dmFyIGNyZWF0ZUVsZW1lbnQgPSBSZWFjdEVsZW1lbnQuY3JlYXRlRWxlbWVu
dDtcblx0dmFyIGNyZWF0ZUZhY3RvcnkgPSBSZWFjdEVsZW1lbnQuY3JlYXRlRmFjdG9yeTtcblx0
dmFyIGNsb25lRWxlbWVudCA9IFJlYWN0RWxlbWVudC5jbG9uZUVsZW1lbnQ7XG5cdFxuXHRpZiAo
ZmFsc2UpIHtcblx0ICB2YXIgbG93UHJpb3JpdHlXYXJuaW5nID0gcmVxdWlyZSgnLi9sb3dQcmlv
cml0eVdhcm5pbmcnKTtcblx0ICB2YXIgY2FuRGVmaW5lUHJvcGVydHkgPSByZXF1aXJlKCcuL2Nh
bkRlZmluZVByb3BlcnR5Jyk7XG5cdCAgdmFyIFJlYWN0RWxlbWVudFZhbGlkYXRvciA9IHJlcXVp
cmUoJy4vUmVhY3RFbGVtZW50VmFsaWRhdG9yJyk7XG5cdCAgdmFyIGRpZFdhcm5Qcm9wVHlwZXNE
ZXByZWNhdGVkID0gZmFsc2U7XG5cdCAgY3JlYXRlRWxlbWVudCA9IFJlYWN0RWxlbWVudFZhbGlk
YXRvci5jcmVhdGVFbGVtZW50O1xuXHQgIGNyZWF0ZUZhY3RvcnkgPSBSZWFjdEVsZW1lbnRWYWxp
ZGF0b3IuY3JlYXRlRmFjdG9yeTtcblx0ICBjbG9uZUVsZW1lbnQgPSBSZWFjdEVsZW1lbnRWYWxp
ZGF0b3IuY2xvbmVFbGVtZW50O1xuXHR9XG5cdFxuXHR2YXIgX19zcHJlYWQgPSBfYXNzaWduO1xu
XHR2YXIgY3JlYXRlTWl4aW4gPSBmdW5jdGlvbiAobWl4aW4pIHtcblx0ICByZXR1cm4gbWl4aW47
XG5cdH07XG5cdFxuXHRpZiAoZmFsc2UpIHtcblx0ICB2YXIgd2FybmVkRm9yU3ByZWFkID0gZmFs
c2U7XG5cdCAgdmFyIHdhcm5lZEZvckNyZWF0ZU1peGluID0gZmFsc2U7XG5cdCAgX19zcHJlYWQg
PSBmdW5jdGlvbiAoKSB7XG5cdCAgICBsb3dQcmlvcml0eVdhcm5pbmcod2FybmVkRm9yU3ByZWFk
LCAnUmVhY3QuX19zcHJlYWQgaXMgZGVwcmVjYXRlZCBhbmQgc2hvdWxkIG5vdCBiZSB1c2VkLiBV
c2UgJyArICdPYmplY3QuYXNzaWduIGRpcmVjdGx5IG9yIGFub3RoZXIgaGVscGVyIGZ1bmN0aW9u
IHdpdGggc2ltaWxhciAnICsgJ3NlbWFudGljcy4gWW91IG1heSBiZSBzZWVpbmcgdGhpcyB3YXJu
aW5nIGR1ZSB0byB5b3VyIGNvbXBpbGVyLiAnICsgJ1NlZSBodHRwczovL2ZiLm1lL3JlYWN0LXNw
cmVhZC1kZXByZWNhdGlvbiBmb3IgbW9yZSBkZXRhaWxzLicpO1xuXHQgICAgd2FybmVkRm9yU3By
ZWFkID0gdHJ1ZTtcblx0ICAgIHJldHVybiBfYXNzaWduLmFwcGx5KG51bGwsIGFyZ3VtZW50cyk7
XG5cdCAgfTtcblx0XG5cdCAgY3JlYXRlTWl4aW4gPSBmdW5jdGlvbiAobWl4aW4pIHtcblx0ICAg
IGxvd1ByaW9yaXR5V2FybmluZyh3YXJuZWRGb3JDcmVhdGVNaXhpbiwgJ1JlYWN0LmNyZWF0ZU1p
eGluIGlzIGRlcHJlY2F0ZWQgYW5kIHNob3VsZCBub3QgYmUgdXNlZC4gJyArICdJbiBSZWFjdCB2
MTYuMCwgaXQgd2lsbCBiZSByZW1vdmVkLiAnICsgJ1lvdSBjYW4gdXNlIHRoaXMgbWl4aW4gZGly
ZWN0bHkgaW5zdGVhZC4gJyArICdTZWUgaHR0cHM6Ly9mYi5tZS9jcmVhdGVtaXhpbi13YXMtbmV2
ZXItaW1wbGVtZW50ZWQgZm9yIG1vcmUgaW5mby4nKTtcblx0ICAgIHdhcm5lZEZvckNyZWF0ZU1p
eGluID0gdHJ1ZTtcblx0ICAgIHJldHVybiBtaXhpbjtcblx0ICB9O1xuXHR9XG5cdFxuXHR2YXIg
UmVhY3QgPSB7XG5cdCAgLy8gTW9kZXJuXG5cdFxuXHQgIENoaWxkcmVuOiB7XG5cdCAgICBtYXA6
IFJlYWN0Q2hpbGRyZW4ubWFwLFxuXHQgICAgZm9yRWFjaDogUmVhY3RDaGlsZHJlbi5mb3JFYWNo
LFxuXHQgICAgY291bnQ6IFJlYWN0Q2hpbGRyZW4uY291bnQsXG5cdCAgICB0b0FycmF5OiBSZWFj
dENoaWxkcmVuLnRvQXJyYXksXG5cdCAgICBvbmx5OiBvbmx5Q2hpbGRcblx0ICB9LFxuXHRcblx0
ICBDb21wb25lbnQ6IFJlYWN0QmFzZUNsYXNzZXMuQ29tcG9uZW50LFxuXHQgIFB1cmVDb21wb25l
bnQ6IFJlYWN0QmFzZUNsYXNzZXMuUHVyZUNvbXBvbmVudCxcblx0XG5cdCAgY3JlYXRlRWxlbWVu
dDogY3JlYXRlRWxlbWVudCxcblx0ICBjbG9uZUVsZW1lbnQ6IGNsb25lRWxlbWVudCxcblx0ICBp
c1ZhbGlkRWxlbWVudDogUmVhY3RFbGVtZW50LmlzVmFsaWRFbGVtZW50LFxuXHRcblx0ICAvLyBD
bGFzc2ljXG5cdFxuXHQgIFByb3BUeXBlczogUmVhY3RQcm9wVHlwZXMsXG5cdCAgY3JlYXRlQ2xh
c3M6IGNyZWF0ZVJlYWN0Q2xhc3MsXG5cdCAgY3JlYXRlRmFjdG9yeTogY3JlYXRlRmFjdG9yeSxc
blx0ICBjcmVhdGVNaXhpbjogY3JlYXRlTWl4aW4sXG5cdFxuXHQgIC8vIFRoaXMgbG9va3MgRE9N
IHNwZWNpZmljIGJ1dCB0aGVzZSBhcmUgYWN0dWFsbHkgaXNvbW9ycGhpYyBoZWxwZXJzXG5cdCAg
Ly8gc2luY2UgdGhleSBhcmUganVzdCBnZW5lcmF0aW5nIERPTSBzdHJpbmdzLlxuXHQgIERPTTog
UmVhY3RET01GYWN0b3JpZXMsXG5cdFxuXHQgIHZlcnNpb246IFJlYWN0VmVyc2lvbixcblx0XG5c
dCAgLy8gRGVwcmVjYXRlZCBob29rIGZvciBKU1ggc3ByZWFkLCBkb24ndCB1c2UgdGhpcyBmb3Ig
YW55dGhpbmcuXG5cdCAgX19zcHJlYWQ6IF9fc3ByZWFkXG5cdH07XG5cdFxuXHRpZiAoZmFsc2Up
IHtcblx0ICB2YXIgd2FybmVkRm9yQ3JlYXRlQ2xhc3MgPSBmYWxzZTtcblx0ICBpZiAoY2FuRGVm
aW5lUHJvcGVydHkpIHtcblx0ICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShSZWFjdCwgJ1Byb3BU
eXBlcycsIHtcblx0ICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgbG93UHJpb3Jp
dHlXYXJuaW5nKGRpZFdhcm5Qcm9wVHlwZXNEZXByZWNhdGVkLCAnQWNjZXNzaW5nIFByb3BUeXBl
cyB2aWEgdGhlIG1haW4gUmVhY3QgcGFja2FnZSBpcyBkZXByZWNhdGVkLCcgKyAnIGFuZCB3aWxs
IGJlIHJlbW92ZWQgaW4gIFJlYWN0IHYxNi4wLicgKyAnIFVzZSB0aGUgbGF0ZXN0IGF2YWlsYWJs
ZSB2MTUuKiBwcm9wLXR5cGVzIHBhY2thZ2UgZnJvbSBucG0gaW5zdGVhZC4nICsgJyBGb3IgaW5m
byBvbiB1c2FnZSwgY29tcGF0aWJpbGl0eSwgbWlncmF0aW9uIGFuZCBtb3JlLCBzZWUgJyArICdo
dHRwczovL2ZiLm1lL3Byb3AtdHlwZXMtZG9jcycpO1xuXHQgICAgICAgIGRpZFdhcm5Qcm9wVHlw
ZXNEZXByZWNhdGVkID0gdHJ1ZTtcblx0ICAgICAgICByZXR1cm4gUmVhY3RQcm9wVHlwZXM7XG5c
dCAgICAgIH1cblx0ICAgIH0pO1xuXHRcblx0ICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShSZWFj
dCwgJ2NyZWF0ZUNsYXNzJywge1xuXHQgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcblx0ICAgICAg
ICBsb3dQcmlvcml0eVdhcm5pbmcod2FybmVkRm9yQ3JlYXRlQ2xhc3MsICdBY2Nlc3NpbmcgY3Jl
YXRlQ2xhc3MgdmlhIHRoZSBtYWluIFJlYWN0IHBhY2thZ2UgaXMgZGVwcmVjYXRlZCwnICsgJyBh
bmQgd2lsbCBiZSByZW1vdmVkIGluIFJlYWN0IHYxNi4wLicgKyBcIiBVc2UgYSBwbGFpbiBKYXZh
U2NyaXB0IGNsYXNzIGluc3RlYWQuIElmIHlvdSdyZSBub3QgeWV0IFwiICsgJ3JlYWR5IHRvIG1p
Z3JhdGUsIGNyZWF0ZS1yZWFjdC1jbGFzcyB2MTUuKiBpcyBhdmFpbGFibGUgJyArICdvbiBucG0g
YXMgYSB0ZW1wb3JhcnksIGRyb3AtaW4gcmVwbGFjZW1lbnQuICcgKyAnRm9yIG1vcmUgaW5mbyBz
ZWUgaHR0cHM6Ly9mYi5tZS9yZWFjdC1jcmVhdGUtY2xhc3MnKTtcblx0ICAgICAgICB3YXJuZWRG
b3JDcmVhdGVDbGFzcyA9IHRydWU7XG5cdCAgICAgICAgcmV0dXJuIGNyZWF0ZVJlYWN0Q2xhc3M7
XG5cdCAgICAgIH1cblx0ICAgIH0pO1xuXHQgIH1cblx0XG5cdCAgLy8gUmVhY3QuRE9NIGZhY3Rv
cmllcyBhcmUgZGVwcmVjYXRlZC4gV3JhcCB0aGVzZSBtZXRob2RzIHNvIHRoYXRcblx0ICAvLyBp
bnZvY2F0aW9ucyBvZiB0aGUgUmVhY3QuRE9NIG5hbWVzcGFjZSBhbmQgYWxlcnQgdXNlcnMgdG8g
c3dpdGNoXG5cdCAgLy8gdG8gdGhlIGByZWFjdC1kb20tZmFjdG9yaWVzYCBwYWNrYWdlLlxuXHQg
IFJlYWN0LkRPTSA9IHt9O1xuXHQgIHZhciB3YXJuZWRGb3JGYWN0b3JpZXMgPSBmYWxzZTtcblx0
ICBPYmplY3Qua2V5cyhSZWFjdERPTUZhY3RvcmllcykuZm9yRWFjaChmdW5jdGlvbiAoZmFjdG9y
eSkge1xuXHQgICAgUmVhY3QuRE9NW2ZhY3RvcnldID0gZnVuY3Rpb24gKCkge1xuXHQgICAgICBp
ZiAoIXdhcm5lZEZvckZhY3Rvcmllcykge1xuXHQgICAgICAgIGxvd1ByaW9yaXR5V2FybmluZyhm
YWxzZSwgJ0FjY2Vzc2luZyBmYWN0b3JpZXMgbGlrZSBSZWFjdC5ET00uJXMgaGFzIGJlZW4gZGVw
cmVjYXRlZCAnICsgJ2FuZCB3aWxsIGJlIHJlbW92ZWQgaW4gdjE2LjArLiBVc2UgdGhlICcgKyAn
cmVhY3QtZG9tLWZhY3RvcmllcyBwYWNrYWdlIGluc3RlYWQuICcgKyAnIFZlcnNpb24gMS4wIHBy
b3ZpZGVzIGEgZHJvcC1pbiByZXBsYWNlbWVudC4nICsgJyBGb3IgbW9yZSBpbmZvLCBzZWUgaHR0
cHM6Ly9mYi5tZS9yZWFjdC1kb20tZmFjdG9yaWVzJywgZmFjdG9yeSk7XG5cdCAgICAgICAgd2Fy
bmVkRm9yRmFjdG9yaWVzID0gdHJ1ZTtcblx0ICAgICAgfVxuXHQgICAgICByZXR1cm4gUmVhY3RE
T01GYWN0b3JpZXNbZmFjdG9yeV0uYXBwbHkoUmVhY3RET01GYWN0b3JpZXMsIGFyZ3VtZW50cyk7
XG5cdCAgICB9O1xuXHQgIH0pO1xuXHR9XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IFJlYWN0O1xu
XG4vKioqLyB9LFxuLyogMTggKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193
ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50
LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBU
aGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBm
b3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0
aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdo
dHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5
LlxuXHQgKlxuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdHZhciBfYXNzaWduID0g
X193ZWJwYWNrX3JlcXVpcmVfXyg0KTtcblx0XG5cdHZhciBSZWFjdEN1cnJlbnRPd25lciA9IF9f
d2VicGFja19yZXF1aXJlX18oMTEpO1xuXHRcblx0dmFyIHdhcm5pbmcgPSBfX3dlYnBhY2tfcmVx
dWlyZV9fKDIpO1xuXHR2YXIgY2FuRGVmaW5lUHJvcGVydHkgPSBfX3dlYnBhY2tfcmVxdWlyZV9f
KDkzKTtcblx0dmFyIGhhc093blByb3BlcnR5ID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9w
ZXJ0eTtcblx0XG5cdHZhciBSRUFDVF9FTEVNRU5UX1RZUEUgPSBfX3dlYnBhY2tfcmVxdWlyZV9f
KDkxKTtcblx0XG5cdHZhciBSRVNFUlZFRF9QUk9QUyA9IHtcblx0ICBrZXk6IHRydWUsXG5cdCAg
cmVmOiB0cnVlLFxuXHQgIF9fc2VsZjogdHJ1ZSxcblx0ICBfX3NvdXJjZTogdHJ1ZVxuXHR9O1xu
XHRcblx0dmFyIHNwZWNpYWxQcm9wS2V5V2FybmluZ1Nob3duLCBzcGVjaWFsUHJvcFJlZldhcm5p
bmdTaG93bjtcblx0XG5cdGZ1bmN0aW9uIGhhc1ZhbGlkUmVmKGNvbmZpZykge1xuXHQgIGlmIChm
YWxzZSkge1xuXHQgICAgaWYgKGhhc093blByb3BlcnR5LmNhbGwoY29uZmlnLCAncmVmJykpIHtc
blx0ICAgICAgdmFyIGdldHRlciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoY29u
ZmlnLCAncmVmJykuZ2V0O1xuXHQgICAgICBpZiAoZ2V0dGVyICYmIGdldHRlci5pc1JlYWN0V2Fy
bmluZykge1xuXHQgICAgICAgIHJldHVybiBmYWxzZTtcblx0ICAgICAgfVxuXHQgICAgfVxuXHQg
IH1cblx0ICByZXR1cm4gY29uZmlnLnJlZiAhPT0gdW5kZWZpbmVkO1xuXHR9XG5cdFxuXHRmdW5j
dGlvbiBoYXNWYWxpZEtleShjb25maWcpIHtcblx0ICBpZiAoZmFsc2UpIHtcblx0ICAgIGlmICho
YXNPd25Qcm9wZXJ0eS5jYWxsKGNvbmZpZywgJ2tleScpKSB7XG5cdCAgICAgIHZhciBnZXR0ZXIg
PSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGNvbmZpZywgJ2tleScpLmdldDtcblx0
ICAgICAgaWYgKGdldHRlciAmJiBnZXR0ZXIuaXNSZWFjdFdhcm5pbmcpIHtcblx0ICAgICAgICBy
ZXR1cm4gZmFsc2U7XG5cdCAgICAgIH1cblx0ICAgIH1cblx0ICB9XG5cdCAgcmV0dXJuIGNvbmZp
Zy5rZXkgIT09IHVuZGVmaW5lZDtcblx0fVxuXHRcblx0ZnVuY3Rpb24gZGVmaW5lS2V5UHJvcFdh
cm5pbmdHZXR0ZXIocHJvcHMsIGRpc3BsYXlOYW1lKSB7XG5cdCAgdmFyIHdhcm5BYm91dEFjY2Vz
c2luZ0tleSA9IGZ1bmN0aW9uICgpIHtcblx0ICAgIGlmICghc3BlY2lhbFByb3BLZXlXYXJuaW5n
U2hvd24pIHtcblx0ICAgICAgc3BlY2lhbFByb3BLZXlXYXJuaW5nU2hvd24gPSB0cnVlO1xuXHQg
ICAgICAgZmFsc2UgPyB3YXJuaW5nKGZhbHNlLCAnJXM6IGBrZXlgIGlzIG5vdCBhIHByb3AuIFRy
eWluZyB0byBhY2Nlc3MgaXQgd2lsbCByZXN1bHQgJyArICdpbiBgdW5kZWZpbmVkYCBiZWluZyBy
ZXR1cm5lZC4gSWYgeW91IG5lZWQgdG8gYWNjZXNzIHRoZSBzYW1lICcgKyAndmFsdWUgd2l0aGlu
IHRoZSBjaGlsZCBjb21wb25lbnQsIHlvdSBzaG91bGQgcGFzcyBpdCBhcyBhIGRpZmZlcmVudCAn
ICsgJ3Byb3AuIChodHRwczovL2ZiLm1lL3JlYWN0LXNwZWNpYWwtcHJvcHMpJywgZGlzcGxheU5h
bWUpIDogdm9pZCAwO1xuXHQgICAgfVxuXHQgIH07XG5cdCAgd2FybkFib3V0QWNjZXNzaW5nS2V5
LmlzUmVhY3RXYXJuaW5nID0gdHJ1ZTtcblx0ICBPYmplY3QuZGVmaW5lUHJvcGVydHkocHJvcHMs
ICdrZXknLCB7XG5cdCAgICBnZXQ6IHdhcm5BYm91dEFjY2Vzc2luZ0tleSxcblx0ICAgIGNvbmZp
Z3VyYWJsZTogdHJ1ZVxuXHQgIH0pO1xuXHR9XG5cdFxuXHRmdW5jdGlvbiBkZWZpbmVSZWZQcm9w
V2FybmluZ0dldHRlcihwcm9wcywgZGlzcGxheU5hbWUpIHtcblx0ICB2YXIgd2FybkFib3V0QWNj
ZXNzaW5nUmVmID0gZnVuY3Rpb24gKCkge1xuXHQgICAgaWYgKCFzcGVjaWFsUHJvcFJlZldhcm5p
bmdTaG93bikge1xuXHQgICAgICBzcGVjaWFsUHJvcFJlZldhcm5pbmdTaG93biA9IHRydWU7XG5c
dCAgICAgICBmYWxzZSA/IHdhcm5pbmcoZmFsc2UsICclczogYHJlZmAgaXMgbm90IGEgcHJvcC4g
VHJ5aW5nIHRvIGFjY2VzcyBpdCB3aWxsIHJlc3VsdCAnICsgJ2luIGB1bmRlZmluZWRgIGJlaW5n
IHJldHVybmVkLiBJZiB5b3UgbmVlZCB0byBhY2Nlc3MgdGhlIHNhbWUgJyArICd2YWx1ZSB3aXRo
aW4gdGhlIGNoaWxkIGNvbXBvbmVudCwgeW91IHNob3VsZCBwYXNzIGl0IGFzIGEgZGlmZmVyZW50
ICcgKyAncHJvcC4gKGh0dHBzOi8vZmIubWUvcmVhY3Qtc3BlY2lhbC1wcm9wcyknLCBkaXNwbGF5
TmFtZSkgOiB2b2lkIDA7XG5cdCAgICB9XG5cdCAgfTtcblx0ICB3YXJuQWJvdXRBY2Nlc3NpbmdS
ZWYuaXNSZWFjdFdhcm5pbmcgPSB0cnVlO1xuXHQgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwcm9w
cywgJ3JlZicsIHtcblx0ICAgIGdldDogd2FybkFib3V0QWNjZXNzaW5nUmVmLFxuXHQgICAgY29u
ZmlndXJhYmxlOiB0cnVlXG5cdCAgfSk7XG5cdH1cblx0XG5cdC8qKlxuXHQgKiBGYWN0b3J5IG1l
dGhvZCB0byBjcmVhdGUgYSBuZXcgUmVhY3QgZWxlbWVudC4gVGhpcyBubyBsb25nZXIgYWRoZXJl
cyB0b1xuXHQgKiB0aGUgY2xhc3MgcGF0dGVybiwgc28gZG8gbm90IHVzZSBuZXcgdG8gY2FsbCBp
dC4gQWxzbywgbm8gaW5zdGFuY2VvZiBjaGVja1xuXHQgKiB3aWxsIHdvcmsuIEluc3RlYWQgdGVz
dCAkJHR5cGVvZiBmaWVsZCBhZ2FpbnN0IFN5bWJvbC5mb3IoJ3JlYWN0LmVsZW1lbnQnKSB0byBj
aGVja1xuXHQgKiBpZiBzb21ldGhpbmcgaXMgYSBSZWFjdCBFbGVtZW50LlxuXHQgKlxuXHQgKiBA
cGFyYW0geyp9IHR5cGVcblx0ICogQHBhcmFtIHsqfSBrZXlcblx0ICogQHBhcmFtIHtzdHJpbmd8
b2JqZWN0fSByZWZcblx0ICogQHBhcmFtIHsqfSBzZWxmIEEgKnRlbXBvcmFyeSogaGVscGVyIHRv
IGRldGVjdCBwbGFjZXMgd2hlcmUgYHRoaXNgIGlzXG5cdCAqIGRpZmZlcmVudCBmcm9tIHRoZSBg
b3duZXJgIHdoZW4gUmVhY3QuY3JlYXRlRWxlbWVudCBpcyBjYWxsZWQsIHNvIHRoYXQgd2Vcblx0
ICogY2FuIHdhcm4uIFdlIHdhbnQgdG8gZ2V0IHJpZCBvZiBvd25lciBhbmQgcmVwbGFjZSBzdHJp
bmcgYHJlZmBzIHdpdGggYXJyb3dcblx0ICogZnVuY3Rpb25zLCBhbmQgYXMgbG9uZyBhcyBgdGhp
c2AgYW5kIG93bmVyIGFyZSB0aGUgc2FtZSwgdGhlcmUgd2lsbCBiZSBub1xuXHQgKiBjaGFuZ2Ug
aW4gYmVoYXZpb3IuXG5cdCAqIEBwYXJhbSB7Kn0gc291cmNlIEFuIGFubm90YXRpb24gb2JqZWN0
IChhZGRlZCBieSBhIHRyYW5zcGlsZXIgb3Igb3RoZXJ3aXNlKVxuXHQgKiBpbmRpY2F0aW5nIGZp
bGVuYW1lLCBsaW5lIG51bWJlciwgYW5kL29yIG90aGVyIGluZm9ybWF0aW9uLlxuXHQgKiBAcGFy
YW0geyp9IG93bmVyXG5cdCAqIEBwYXJhbSB7Kn0gcHJvcHNcblx0ICogQGludGVybmFsXG5cdCAq
L1xuXHR2YXIgUmVhY3RFbGVtZW50ID0gZnVuY3Rpb24gKHR5cGUsIGtleSwgcmVmLCBzZWxmLCBz
b3VyY2UsIG93bmVyLCBwcm9wcykge1xuXHQgIHZhciBlbGVtZW50ID0ge1xuXHQgICAgLy8gVGhp
cyB0YWcgYWxsb3cgdXMgdG8gdW5pcXVlbHkgaWRlbnRpZnkgdGhpcyBhcyBhIFJlYWN0IEVsZW1l
bnRcblx0ICAgICQkdHlwZW9mOiBSRUFDVF9FTEVNRU5UX1RZUEUsXG5cdFxuXHQgICAgLy8gQnVp
bHQtaW4gcHJvcGVydGllcyB0aGF0IGJlbG9uZyBvbiB0aGUgZWxlbWVudFxuXHQgICAgdHlwZTog
dHlwZSxcblx0ICAgIGtleToga2V5LFxuXHQgICAgcmVmOiByZWYsXG5cdCAgICBwcm9wczogcHJv
cHMsXG5cdFxuXHQgICAgLy8gUmVjb3JkIHRoZSBjb21wb25lbnQgcmVzcG9uc2libGUgZm9yIGNy
ZWF0aW5nIHRoaXMgZWxlbWVudC5cblx0ICAgIF9vd25lcjogb3duZXJcblx0ICB9O1xuXHRcblx0
ICBpZiAoZmFsc2UpIHtcblx0ICAgIC8vIFRoZSB2YWxpZGF0aW9uIGZsYWcgaXMgY3VycmVudGx5
IG11dGF0aXZlLiBXZSBwdXQgaXQgb25cblx0ICAgIC8vIGFuIGV4dGVybmFsIGJhY2tpbmcgc3Rv
cmUgc28gdGhhdCB3ZSBjYW4gZnJlZXplIHRoZSB3aG9sZSBvYmplY3QuXG5cdCAgICAvLyBUaGlz
IGNhbiBiZSByZXBsYWNlZCB3aXRoIGEgV2Vha01hcCBvbmNlIHRoZXkgYXJlIGltcGxlbWVudGVk
IGluXG5cdCAgICAvLyBjb21tb25seSB1c2VkIGRldmVsb3BtZW50IGVudmlyb25tZW50cy5cblx0
ICAgIGVsZW1lbnQuX3N0b3JlID0ge307XG5cdFxuXHQgICAgLy8gVG8gbWFrZSBjb21wYXJpbmcg
UmVhY3RFbGVtZW50cyBlYXNpZXIgZm9yIHRlc3RpbmcgcHVycG9zZXMsIHdlIG1ha2Vcblx0ICAg
IC8vIHRoZSB2YWxpZGF0aW9uIGZsYWcgbm9uLWVudW1lcmFibGUgKHdoZXJlIHBvc3NpYmxlLCB3
aGljaCBzaG91bGRcblx0ICAgIC8vIGluY2x1ZGUgZXZlcnkgZW52aXJvbm1lbnQgd2UgcnVuIHRl
c3RzIGluKSwgc28gdGhlIHRlc3QgZnJhbWV3b3JrXG5cdCAgICAvLyBpZ25vcmVzIGl0LlxuXHQg
ICAgaWYgKGNhbkRlZmluZVByb3BlcnR5KSB7XG5cdCAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0
eShlbGVtZW50Ll9zdG9yZSwgJ3ZhbGlkYXRlZCcsIHtcblx0ICAgICAgICBjb25maWd1cmFibGU6
IGZhbHNlLFxuXHQgICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuXHQgICAgICAgIHdyaXRhYmxl
OiB0cnVlLFxuXHQgICAgICAgIHZhbHVlOiBmYWxzZVxuXHQgICAgICB9KTtcblx0ICAgICAgLy8g
c2VsZiBhbmQgc291cmNlIGFyZSBERVYgb25seSBwcm9wZXJ0aWVzLlxuXHQgICAgICBPYmplY3Qu
ZGVmaW5lUHJvcGVydHkoZWxlbWVudCwgJ19zZWxmJywge1xuXHQgICAgICAgIGNvbmZpZ3VyYWJs
ZTogZmFsc2UsXG5cdCAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG5cdCAgICAgICAgd3JpdGFi
bGU6IGZhbHNlLFxuXHQgICAgICAgIHZhbHVlOiBzZWxmXG5cdCAgICAgIH0pO1xuXHQgICAgICAv
LyBUd28gZWxlbWVudHMgY3JlYXRlZCBpbiB0d28gZGlmZmVyZW50IHBsYWNlcyBzaG91bGQgYmUg
Y29uc2lkZXJlZFxuXHQgICAgICAvLyBlcXVhbCBmb3IgdGVzdGluZyBwdXJwb3NlcyBhbmQgdGhl
cmVmb3JlIHdlIGhpZGUgaXQgZnJvbSBlbnVtZXJhdGlvbi5cblx0ICAgICAgT2JqZWN0LmRlZmlu
ZVByb3BlcnR5KGVsZW1lbnQsICdfc291cmNlJywge1xuXHQgICAgICAgIGNvbmZpZ3VyYWJsZTog
ZmFsc2UsXG5cdCAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG5cdCAgICAgICAgd3JpdGFibGU6
IGZhbHNlLFxuXHQgICAgICAgIHZhbHVlOiBzb3VyY2Vcblx0ICAgICAgfSk7XG5cdCAgICB9IGVs
c2Uge1xuXHQgICAgICBlbGVtZW50Ll9zdG9yZS52YWxpZGF0ZWQgPSBmYWxzZTtcblx0ICAgICAg
ZWxlbWVudC5fc2VsZiA9IHNlbGY7XG5cdCAgICAgIGVsZW1lbnQuX3NvdXJjZSA9IHNvdXJjZTtc
blx0ICAgIH1cblx0ICAgIGlmIChPYmplY3QuZnJlZXplKSB7XG5cdCAgICAgIE9iamVjdC5mcmVl
emUoZWxlbWVudC5wcm9wcyk7XG5cdCAgICAgIE9iamVjdC5mcmVlemUoZWxlbWVudCk7XG5cdCAg
ICB9XG5cdCAgfVxuXHRcblx0ICByZXR1cm4gZWxlbWVudDtcblx0fTtcblx0XG5cdC8qKlxuXHQg
KiBDcmVhdGUgYW5kIHJldHVybiBhIG5ldyBSZWFjdEVsZW1lbnQgb2YgdGhlIGdpdmVuIHR5cGUu
XG5cdCAqIFNlZSBodHRwczovL2ZhY2Vib29rLmdpdGh1Yi5pby9yZWFjdC9kb2NzL3RvcC1sZXZl
bC1hcGkuaHRtbCNyZWFjdC5jcmVhdGVlbGVtZW50XG5cdCAqL1xuXHRSZWFjdEVsZW1lbnQuY3Jl
YXRlRWxlbWVudCA9IGZ1bmN0aW9uICh0eXBlLCBjb25maWcsIGNoaWxkcmVuKSB7XG5cdCAgdmFy
IHByb3BOYW1lO1xuXHRcblx0ICAvLyBSZXNlcnZlZCBuYW1lcyBhcmUgZXh0cmFjdGVkXG5cdCAg
dmFyIHByb3BzID0ge307XG5cdFxuXHQgIHZhciBrZXkgPSBudWxsO1xuXHQgIHZhciByZWYgPSBu
dWxsO1xuXHQgIHZhciBzZWxmID0gbnVsbDtcblx0ICB2YXIgc291cmNlID0gbnVsbDtcblx0XG5c
dCAgaWYgKGNvbmZpZyAhPSBudWxsKSB7XG5cdCAgICBpZiAoaGFzVmFsaWRSZWYoY29uZmlnKSkg
e1xuXHQgICAgICByZWYgPSBjb25maWcucmVmO1xuXHQgICAgfVxuXHQgICAgaWYgKGhhc1ZhbGlk
S2V5KGNvbmZpZykpIHtcblx0ICAgICAga2V5ID0gJycgKyBjb25maWcua2V5O1xuXHQgICAgfVxu
XHRcblx0ICAgIHNlbGYgPSBjb25maWcuX19zZWxmID09PSB1bmRlZmluZWQgPyBudWxsIDogY29u
ZmlnLl9fc2VsZjtcblx0ICAgIHNvdXJjZSA9IGNvbmZpZy5fX3NvdXJjZSA9PT0gdW5kZWZpbmVk
ID8gbnVsbCA6IGNvbmZpZy5fX3NvdXJjZTtcblx0ICAgIC8vIFJlbWFpbmluZyBwcm9wZXJ0aWVz
IGFyZSBhZGRlZCB0byBhIG5ldyBwcm9wcyBvYmplY3Rcblx0ICAgIGZvciAocHJvcE5hbWUgaW4g
Y29uZmlnKSB7XG5cdCAgICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKGNvbmZpZywgcHJvcE5h
bWUpICYmICFSRVNFUlZFRF9QUk9QUy5oYXNPd25Qcm9wZXJ0eShwcm9wTmFtZSkpIHtcblx0ICAg
ICAgICBwcm9wc1twcm9wTmFtZV0gPSBjb25maWdbcHJvcE5hbWVdO1xuXHQgICAgICB9XG5cdCAg
ICB9XG5cdCAgfVxuXHRcblx0ICAvLyBDaGlsZHJlbiBjYW4gYmUgbW9yZSB0aGFuIG9uZSBhcmd1
bWVudCwgYW5kIHRob3NlIGFyZSB0cmFuc2ZlcnJlZCBvbnRvXG5cdCAgLy8gdGhlIG5ld2x5IGFs
bG9jYXRlZCBwcm9wcyBvYmplY3QuXG5cdCAgdmFyIGNoaWxkcmVuTGVuZ3RoID0gYXJndW1lbnRz
Lmxlbmd0aCAtIDI7XG5cdCAgaWYgKGNoaWxkcmVuTGVuZ3RoID09PSAxKSB7XG5cdCAgICBwcm9w
cy5jaGlsZHJlbiA9IGNoaWxkcmVuO1xuXHQgIH0gZWxzZSBpZiAoY2hpbGRyZW5MZW5ndGggPiAx
KSB7XG5cdCAgICB2YXIgY2hpbGRBcnJheSA9IEFycmF5KGNoaWxkcmVuTGVuZ3RoKTtcblx0ICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgY2hpbGRyZW5MZW5ndGg7IGkrKykge1xuXHQgICAgICBjaGls
ZEFycmF5W2ldID0gYXJndW1lbnRzW2kgKyAyXTtcblx0ICAgIH1cblx0ICAgIGlmIChmYWxzZSkg
e1xuXHQgICAgICBpZiAoT2JqZWN0LmZyZWV6ZSkge1xuXHQgICAgICAgIE9iamVjdC5mcmVlemUo
Y2hpbGRBcnJheSk7XG5cdCAgICAgIH1cblx0ICAgIH1cblx0ICAgIHByb3BzLmNoaWxkcmVuID0g
Y2hpbGRBcnJheTtcblx0ICB9XG5cdFxuXHQgIC8vIFJlc29sdmUgZGVmYXVsdCBwcm9wc1xuXHQg
IGlmICh0eXBlICYmIHR5cGUuZGVmYXVsdFByb3BzKSB7XG5cdCAgICB2YXIgZGVmYXVsdFByb3Bz
ID0gdHlwZS5kZWZhdWx0UHJvcHM7XG5cdCAgICBmb3IgKHByb3BOYW1lIGluIGRlZmF1bHRQcm9w
cykge1xuXHQgICAgICBpZiAocHJvcHNbcHJvcE5hbWVdID09PSB1bmRlZmluZWQpIHtcblx0ICAg
ICAgICBwcm9wc1twcm9wTmFtZV0gPSBkZWZhdWx0UHJvcHNbcHJvcE5hbWVdO1xuXHQgICAgICB9
XG5cdCAgICB9XG5cdCAgfVxuXHQgIGlmIChmYWxzZSkge1xuXHQgICAgaWYgKGtleSB8fCByZWYp
IHtcblx0ICAgICAgaWYgKHR5cGVvZiBwcm9wcy4kJHR5cGVvZiA9PT0gJ3VuZGVmaW5lZCcgfHwg
cHJvcHMuJCR0eXBlb2YgIT09IFJFQUNUX0VMRU1FTlRfVFlQRSkge1xuXHQgICAgICAgIHZhciBk
aXNwbGF5TmFtZSA9IHR5cGVvZiB0eXBlID09PSAnZnVuY3Rpb24nID8gdHlwZS5kaXNwbGF5TmFt
ZSB8fCB0eXBlLm5hbWUgfHwgJ1Vua25vd24nIDogdHlwZTtcblx0ICAgICAgICBpZiAoa2V5KSB7
XG5cdCAgICAgICAgICBkZWZpbmVLZXlQcm9wV2FybmluZ0dldHRlcihwcm9wcywgZGlzcGxheU5h
bWUpO1xuXHQgICAgICAgIH1cblx0ICAgICAgICBpZiAocmVmKSB7XG5cdCAgICAgICAgICBkZWZp
bmVSZWZQcm9wV2FybmluZ0dldHRlcihwcm9wcywgZGlzcGxheU5hbWUpO1xuXHQgICAgICAgIH1c
blx0ICAgICAgfVxuXHQgICAgfVxuXHQgIH1cblx0ICByZXR1cm4gUmVhY3RFbGVtZW50KHR5cGUs
IGtleSwgcmVmLCBzZWxmLCBzb3VyY2UsIFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQsIHByb3Bz
KTtcblx0fTtcblx0XG5cdC8qKlxuXHQgKiBSZXR1cm4gYSBmdW5jdGlvbiB0aGF0IHByb2R1Y2Vz
IFJlYWN0RWxlbWVudHMgb2YgYSBnaXZlbiB0eXBlLlxuXHQgKiBTZWUgaHR0cHM6Ly9mYWNlYm9v
ay5naXRodWIuaW8vcmVhY3QvZG9jcy90b3AtbGV2ZWwtYXBpLmh0bWwjcmVhY3QuY3JlYXRlZmFj
dG9yeVxuXHQgKi9cblx0UmVhY3RFbGVtZW50LmNyZWF0ZUZhY3RvcnkgPSBmdW5jdGlvbiAodHlw
ZSkge1xuXHQgIHZhciBmYWN0b3J5ID0gUmVhY3RFbGVtZW50LmNyZWF0ZUVsZW1lbnQuYmluZChu
dWxsLCB0eXBlKTtcblx0ICAvLyBFeHBvc2UgdGhlIHR5cGUgb24gdGhlIGZhY3RvcnkgYW5kIHRo
ZSBwcm90b3R5cGUgc28gdGhhdCBpdCBjYW4gYmVcblx0ICAvLyBlYXNpbHkgYWNjZXNzZWQgb24g
ZWxlbWVudHMuIEUuZy4gYDxGb28gLz4udHlwZSA9PT0gRm9vYC5cblx0ICAvLyBUaGlzIHNob3Vs
ZCBub3QgYmUgbmFtZWQgYGNvbnN0cnVjdG9yYCBzaW5jZSB0aGlzIG1heSBub3QgYmUgdGhlIGZ1
bmN0aW9uXG5cdCAgLy8gdGhhdCBjcmVhdGVkIHRoZSBlbGVtZW50LCBhbmQgaXQgbWF5IG5vdCBl
dmVuIGJlIGEgY29uc3RydWN0b3IuXG5cdCAgLy8gTGVnYWN5IGhvb2sgVE9ETzogV2FybiBpZiB0
aGlzIGlzIGFjY2Vzc2VkXG5cdCAgZmFjdG9yeS50eXBlID0gdHlwZTtcblx0ICByZXR1cm4gZmFj
dG9yeTtcblx0fTtcblx0XG5cdFJlYWN0RWxlbWVudC5jbG9uZUFuZFJlcGxhY2VLZXkgPSBmdW5j
dGlvbiAob2xkRWxlbWVudCwgbmV3S2V5KSB7XG5cdCAgdmFyIG5ld0VsZW1lbnQgPSBSZWFjdEVs
ZW1lbnQob2xkRWxlbWVudC50eXBlLCBuZXdLZXksIG9sZEVsZW1lbnQucmVmLCBvbGRFbGVtZW50
Ll9zZWxmLCBvbGRFbGVtZW50Ll9zb3VyY2UsIG9sZEVsZW1lbnQuX293bmVyLCBvbGRFbGVtZW50
LnByb3BzKTtcblx0XG5cdCAgcmV0dXJuIG5ld0VsZW1lbnQ7XG5cdH07XG5cdFxuXHQvKipcblx0
ICogQ2xvbmUgYW5kIHJldHVybiBhIG5ldyBSZWFjdEVsZW1lbnQgdXNpbmcgZWxlbWVudCBhcyB0
aGUgc3RhcnRpbmcgcG9pbnQuXG5cdCAqIFNlZSBodHRwczovL2ZhY2Vib29rLmdpdGh1Yi5pby9y
ZWFjdC9kb2NzL3RvcC1sZXZlbC1hcGkuaHRtbCNyZWFjdC5jbG9uZWVsZW1lbnRcblx0ICovXG5c
dFJlYWN0RWxlbWVudC5jbG9uZUVsZW1lbnQgPSBmdW5jdGlvbiAoZWxlbWVudCwgY29uZmlnLCBj
aGlsZHJlbikge1xuXHQgIHZhciBwcm9wTmFtZTtcblx0XG5cdCAgLy8gT3JpZ2luYWwgcHJvcHMg
YXJlIGNvcGllZFxuXHQgIHZhciBwcm9wcyA9IF9hc3NpZ24oe30sIGVsZW1lbnQucHJvcHMpO1xu
XHRcblx0ICAvLyBSZXNlcnZlZCBuYW1lcyBhcmUgZXh0cmFjdGVkXG5cdCAgdmFyIGtleSA9IGVs
ZW1lbnQua2V5O1xuXHQgIHZhciByZWYgPSBlbGVtZW50LnJlZjtcblx0ICAvLyBTZWxmIGlzIHBy
ZXNlcnZlZCBzaW5jZSB0aGUgb3duZXIgaXMgcHJlc2VydmVkLlxuXHQgIHZhciBzZWxmID0gZWxl
bWVudC5fc2VsZjtcblx0ICAvLyBTb3VyY2UgaXMgcHJlc2VydmVkIHNpbmNlIGNsb25lRWxlbWVu
dCBpcyB1bmxpa2VseSB0byBiZSB0YXJnZXRlZCBieSBhXG5cdCAgLy8gdHJhbnNwaWxlciwgYW5k
IHRoZSBvcmlnaW5hbCBzb3VyY2UgaXMgcHJvYmFibHkgYSBiZXR0ZXIgaW5kaWNhdG9yIG9mIHRo
ZVxuXHQgIC8vIHRydWUgb3duZXIuXG5cdCAgdmFyIHNvdXJjZSA9IGVsZW1lbnQuX3NvdXJjZTtc
blx0XG5cdCAgLy8gT3duZXIgd2lsbCBiZSBwcmVzZXJ2ZWQsIHVubGVzcyByZWYgaXMgb3ZlcnJp
ZGRlblxuXHQgIHZhciBvd25lciA9IGVsZW1lbnQuX293bmVyO1xuXHRcblx0ICBpZiAoY29uZmln
ICE9IG51bGwpIHtcblx0ICAgIGlmIChoYXNWYWxpZFJlZihjb25maWcpKSB7XG5cdCAgICAgIC8v
IFNpbGVudGx5IHN0ZWFsIHRoZSByZWYgZnJvbSB0aGUgcGFyZW50LlxuXHQgICAgICByZWYgPSBj
b25maWcucmVmO1xuXHQgICAgICBvd25lciA9IFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQ7XG5c
dCAgICB9XG5cdCAgICBpZiAoaGFzVmFsaWRLZXkoY29uZmlnKSkge1xuXHQgICAgICBrZXkgPSAn
JyArIGNvbmZpZy5rZXk7XG5cdCAgICB9XG5cdFxuXHQgICAgLy8gUmVtYWluaW5nIHByb3BlcnRp
ZXMgb3ZlcnJpZGUgZXhpc3RpbmcgcHJvcHNcblx0ICAgIHZhciBkZWZhdWx0UHJvcHM7XG5cdCAg
ICBpZiAoZWxlbWVudC50eXBlICYmIGVsZW1lbnQudHlwZS5kZWZhdWx0UHJvcHMpIHtcblx0ICAg
ICAgZGVmYXVsdFByb3BzID0gZWxlbWVudC50eXBlLmRlZmF1bHRQcm9wcztcblx0ICAgIH1cblx0
ICAgIGZvciAocHJvcE5hbWUgaW4gY29uZmlnKSB7XG5cdCAgICAgIGlmIChoYXNPd25Qcm9wZXJ0
eS5jYWxsKGNvbmZpZywgcHJvcE5hbWUpICYmICFSRVNFUlZFRF9QUk9QUy5oYXNPd25Qcm9wZXJ0
eShwcm9wTmFtZSkpIHtcblx0ICAgICAgICBpZiAoY29uZmlnW3Byb3BOYW1lXSA9PT0gdW5kZWZp
bmVkICYmIGRlZmF1bHRQcm9wcyAhPT0gdW5kZWZpbmVkKSB7XG5cdCAgICAgICAgICAvLyBSZXNv
bHZlIGRlZmF1bHQgcHJvcHNcblx0ICAgICAgICAgIHByb3BzW3Byb3BOYW1lXSA9IGRlZmF1bHRQ
cm9wc1twcm9wTmFtZV07XG5cdCAgICAgICAgfSBlbHNlIHtcblx0ICAgICAgICAgIHByb3BzW3By
b3BOYW1lXSA9IGNvbmZpZ1twcm9wTmFtZV07XG5cdCAgICAgICAgfVxuXHQgICAgICB9XG5cdCAg
ICB9XG5cdCAgfVxuXHRcblx0ICAvLyBDaGlsZHJlbiBjYW4gYmUgbW9yZSB0aGFuIG9uZSBhcmd1
bWVudCwgYW5kIHRob3NlIGFyZSB0cmFuc2ZlcnJlZCBvbnRvXG5cdCAgLy8gdGhlIG5ld2x5IGFs
bG9jYXRlZCBwcm9wcyBvYmplY3QuXG5cdCAgdmFyIGNoaWxkcmVuTGVuZ3RoID0gYXJndW1lbnRz
Lmxlbmd0aCAtIDI7XG5cdCAgaWYgKGNoaWxkcmVuTGVuZ3RoID09PSAxKSB7XG5cdCAgICBwcm9w
cy5jaGlsZHJlbiA9IGNoaWxkcmVuO1xuXHQgIH0gZWxzZSBpZiAoY2hpbGRyZW5MZW5ndGggPiAx
KSB7XG5cdCAgICB2YXIgY2hpbGRBcnJheSA9IEFycmF5KGNoaWxkcmVuTGVuZ3RoKTtcblx0ICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgY2hpbGRyZW5MZW5ndGg7IGkrKykge1xuXHQgICAgICBjaGls
ZEFycmF5W2ldID0gYXJndW1lbnRzW2kgKyAyXTtcblx0ICAgIH1cblx0ICAgIHByb3BzLmNoaWxk
cmVuID0gY2hpbGRBcnJheTtcblx0ICB9XG5cdFxuXHQgIHJldHVybiBSZWFjdEVsZW1lbnQoZWxl
bWVudC50eXBlLCBrZXksIHJlZiwgc2VsZiwgc291cmNlLCBvd25lciwgcHJvcHMpO1xuXHR9O1xu
XHRcblx0LyoqXG5cdCAqIFZlcmlmaWVzIHRoZSBvYmplY3QgaXMgYSBSZWFjdEVsZW1lbnQuXG5c
dCAqIFNlZSBodHRwczovL2ZhY2Vib29rLmdpdGh1Yi5pby9yZWFjdC9kb2NzL3RvcC1sZXZlbC1h
cGkuaHRtbCNyZWFjdC5pc3ZhbGlkZWxlbWVudFxuXHQgKiBAcGFyYW0gez9vYmplY3R9IG9iamVj
dFxuXHQgKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmIGBvYmplY3RgIGlzIGEgdmFsaWQgY29t
cG9uZW50LlxuXHQgKiBAZmluYWxcblx0ICovXG5cdFJlYWN0RWxlbWVudC5pc1ZhbGlkRWxlbWVu
dCA9IGZ1bmN0aW9uIChvYmplY3QpIHtcblx0ICByZXR1cm4gdHlwZW9mIG9iamVjdCA9PT0gJ29i
amVjdCcgJiYgb2JqZWN0ICE9PSBudWxsICYmIG9iamVjdC4kJHR5cGVvZiA9PT0gUkVBQ1RfRUxF
TUVOVF9UWVBFO1xuXHR9O1xuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBSZWFjdEVsZW1lbnQ7XG5c
bi8qKiovIH0sXG4vKiAxOSAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dl
YnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQs
IEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRo
aXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZv
dW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRo
aXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0
cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3Rvcnku
XG5cdCAqXG5cdCAqL1xuXHRcblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0dmFyIF9wcm9kSW52YXJp
YW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXygzKTtcblx0XG5cdHZhciBFdmVudFBsdWdpblJlZ2lz
dHJ5ID0gX193ZWJwYWNrX3JlcXVpcmVfXygzNik7XG5cdHZhciBFdmVudFBsdWdpblV0aWxzID0g
X193ZWJwYWNrX3JlcXVpcmVfXygzNyk7XG5cdHZhciBSZWFjdEVycm9yVXRpbHMgPSBfX3dlYnBh
Y2tfcmVxdWlyZV9fKDQxKTtcblx0XG5cdHZhciBhY2N1bXVsYXRlSW50byA9IF9fd2VicGFja19y
ZXF1aXJlX18oNzApO1xuXHR2YXIgZm9yRWFjaEFjY3VtdWxhdGVkID0gX193ZWJwYWNrX3JlcXVp
cmVfXyg3MSk7XG5cdHZhciBpbnZhcmlhbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEpO1xuXHRc
blx0LyoqXG5cdCAqIEludGVybmFsIHN0b3JlIGZvciBldmVudCBsaXN0ZW5lcnNcblx0ICovXG5c
dHZhciBsaXN0ZW5lckJhbmsgPSB7fTtcblx0XG5cdC8qKlxuXHQgKiBJbnRlcm5hbCBxdWV1ZSBv
ZiBldmVudHMgdGhhdCBoYXZlIGFjY3VtdWxhdGVkIHRoZWlyIGRpc3BhdGNoZXMgYW5kIGFyZVxu
XHQgKiB3YWl0aW5nIHRvIGhhdmUgdGhlaXIgZGlzcGF0Y2hlcyBleGVjdXRlZC5cblx0ICovXG5c
dHZhciBldmVudFF1ZXVlID0gbnVsbDtcblx0XG5cdC8qKlxuXHQgKiBEaXNwYXRjaGVzIGFuIGV2
ZW50IGFuZCByZWxlYXNlcyBpdCBiYWNrIGludG8gdGhlIHBvb2wsIHVubGVzcyBwZXJzaXN0ZW50
LlxuXHQgKlxuXHQgKiBAcGFyYW0gez9vYmplY3R9IGV2ZW50IFN5bnRoZXRpYyBldmVudCB0byBi
ZSBkaXNwYXRjaGVkLlxuXHQgKiBAcGFyYW0ge2Jvb2xlYW59IHNpbXVsYXRlZCBJZiB0aGUgZXZl
bnQgaXMgc2ltdWxhdGVkIChjaGFuZ2VzIGV4biBiZWhhdmlvcilcblx0ICogQHByaXZhdGVcblx0
ICovXG5cdHZhciBleGVjdXRlRGlzcGF0Y2hlc0FuZFJlbGVhc2UgPSBmdW5jdGlvbiAoZXZlbnQs
IHNpbXVsYXRlZCkge1xuXHQgIGlmIChldmVudCkge1xuXHQgICAgRXZlbnRQbHVnaW5VdGlscy5l
eGVjdXRlRGlzcGF0Y2hlc0luT3JkZXIoZXZlbnQsIHNpbXVsYXRlZCk7XG5cdFxuXHQgICAgaWYg
KCFldmVudC5pc1BlcnNpc3RlbnQoKSkge1xuXHQgICAgICBldmVudC5jb25zdHJ1Y3Rvci5yZWxl
YXNlKGV2ZW50KTtcblx0ICAgIH1cblx0ICB9XG5cdH07XG5cdHZhciBleGVjdXRlRGlzcGF0Y2hl
c0FuZFJlbGVhc2VTaW11bGF0ZWQgPSBmdW5jdGlvbiAoZSkge1xuXHQgIHJldHVybiBleGVjdXRl
RGlzcGF0Y2hlc0FuZFJlbGVhc2UoZSwgdHJ1ZSk7XG5cdH07XG5cdHZhciBleGVjdXRlRGlzcGF0
Y2hlc0FuZFJlbGVhc2VUb3BMZXZlbCA9IGZ1bmN0aW9uIChlKSB7XG5cdCAgcmV0dXJuIGV4ZWN1
dGVEaXNwYXRjaGVzQW5kUmVsZWFzZShlLCBmYWxzZSk7XG5cdH07XG5cdFxuXHR2YXIgZ2V0RGlj
dGlvbmFyeUtleSA9IGZ1bmN0aW9uIChpbnN0KSB7XG5cdCAgLy8gUHJldmVudHMgVjggcGVyZm9y
bWFuY2UgaXNzdWU6XG5cdCAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0L3B1
bGwvNzIzMlxuXHQgIHJldHVybiAnLicgKyBpbnN0Ll9yb290Tm9kZUlEO1xuXHR9O1xuXHRcblx0
ZnVuY3Rpb24gaXNJbnRlcmFjdGl2ZSh0YWcpIHtcblx0ICByZXR1cm4gdGFnID09PSAnYnV0dG9u
JyB8fCB0YWcgPT09ICdpbnB1dCcgfHwgdGFnID09PSAnc2VsZWN0JyB8fCB0YWcgPT09ICd0ZXh0
YXJlYSc7XG5cdH1cblx0XG5cdGZ1bmN0aW9uIHNob3VsZFByZXZlbnRNb3VzZUV2ZW50KG5hbWUs
IHR5cGUsIHByb3BzKSB7XG5cdCAgc3dpdGNoIChuYW1lKSB7XG5cdCAgICBjYXNlICdvbkNsaWNr
Jzpcblx0ICAgIGNhc2UgJ29uQ2xpY2tDYXB0dXJlJzpcblx0ICAgIGNhc2UgJ29uRG91YmxlQ2xp
Y2snOlxuXHQgICAgY2FzZSAnb25Eb3VibGVDbGlja0NhcHR1cmUnOlxuXHQgICAgY2FzZSAnb25N
b3VzZURvd24nOlxuXHQgICAgY2FzZSAnb25Nb3VzZURvd25DYXB0dXJlJzpcblx0ICAgIGNhc2Ug
J29uTW91c2VNb3ZlJzpcblx0ICAgIGNhc2UgJ29uTW91c2VNb3ZlQ2FwdHVyZSc6XG5cdCAgICBj
YXNlICdvbk1vdXNlVXAnOlxuXHQgICAgY2FzZSAnb25Nb3VzZVVwQ2FwdHVyZSc6XG5cdCAgICAg
IHJldHVybiAhIShwcm9wcy5kaXNhYmxlZCAmJiBpc0ludGVyYWN0aXZlKHR5cGUpKTtcblx0ICAg
IGRlZmF1bHQ6XG5cdCAgICAgIHJldHVybiBmYWxzZTtcblx0ICB9XG5cdH1cblx0XG5cdC8qKlxu
XHQgKiBUaGlzIGlzIGEgdW5pZmllZCBpbnRlcmZhY2UgZm9yIGV2ZW50IHBsdWdpbnMgdG8gYmUg
aW5zdGFsbGVkIGFuZCBjb25maWd1cmVkLlxuXHQgKlxuXHQgKiBFdmVudCBwbHVnaW5zIGNhbiBp
bXBsZW1lbnQgdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzOlxuXHQgKlxuXHQgKiAgIGBleHRyYWN0
RXZlbnRzYCB7ZnVuY3Rpb24oc3RyaW5nLCBET01FdmVudFRhcmdldCwgc3RyaW5nLCBvYmplY3Qp
OiAqfVxuXHQgKiAgICAgUmVxdWlyZWQuIFdoZW4gYSB0b3AtbGV2ZWwgZXZlbnQgaXMgZmlyZWQs
IHRoaXMgbWV0aG9kIGlzIGV4cGVjdGVkIHRvXG5cdCAqICAgICBleHRyYWN0IHN5bnRoZXRpYyBl
dmVudHMgdGhhdCB3aWxsIGluIHR1cm4gYmUgcXVldWVkIGFuZCBkaXNwYXRjaGVkLlxuXHQgKlxu
XHQgKiAgIGBldmVudFR5cGVzYCB7b2JqZWN0fVxuXHQgKiAgICAgT3B0aW9uYWwsIHBsdWdpbnMg
dGhhdCBmaXJlIGV2ZW50cyBtdXN0IHB1Ymxpc2ggYSBtYXBwaW5nIG9mIHJlZ2lzdHJhdGlvblxu
XHQgKiAgICAgbmFtZXMgdGhhdCBhcmUgdXNlZCB0byByZWdpc3RlciBsaXN0ZW5lcnMuIFZhbHVl
cyBvZiB0aGlzIG1hcHBpbmcgbXVzdFxuXHQgKiAgICAgYmUgb2JqZWN0cyB0aGF0IGNvbnRhaW4g
YHJlZ2lzdHJhdGlvbk5hbWVgIG9yIGBwaGFzZWRSZWdpc3RyYXRpb25OYW1lc2AuXG5cdCAqXG5c
dCAqICAgYGV4ZWN1dGVEaXNwYXRjaGAge2Z1bmN0aW9uKG9iamVjdCwgZnVuY3Rpb24sIHN0cmlu
Zyl9XG5cdCAqICAgICBPcHRpb25hbCwgYWxsb3dzIHBsdWdpbnMgdG8gb3ZlcnJpZGUgaG93IGFu
IGV2ZW50IGdldHMgZGlzcGF0Y2hlZC4gQnlcblx0ICogICAgIGRlZmF1bHQsIHRoZSBsaXN0ZW5l
ciBpcyBzaW1wbHkgaW52b2tlZC5cblx0ICpcblx0ICogRWFjaCBwbHVnaW4gdGhhdCBpcyBpbmpl
Y3RlZCBpbnRvIGBFdmVudHNQbHVnaW5IdWJgIGlzIGltbWVkaWF0ZWx5IG9wZXJhYmxlLlxuXHQg
KlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHR2YXIgRXZlbnRQbHVnaW5IdWIgPSB7XG5cdCAgLyoq
XG5cdCAgICogTWV0aG9kcyBmb3IgaW5qZWN0aW5nIGRlcGVuZGVuY2llcy5cblx0ICAgKi9cblx0
ICBpbmplY3Rpb246IHtcblx0ICAgIC8qKlxuXHQgICAgICogQHBhcmFtIHthcnJheX0gSW5qZWN0
ZWRFdmVudFBsdWdpbk9yZGVyXG5cdCAgICAgKiBAcHVibGljXG5cdCAgICAgKi9cblx0ICAgIGlu
amVjdEV2ZW50UGx1Z2luT3JkZXI6IEV2ZW50UGx1Z2luUmVnaXN0cnkuaW5qZWN0RXZlbnRQbHVn
aW5PcmRlcixcblx0XG5cdCAgICAvKipcblx0ICAgICAqIEBwYXJhbSB7b2JqZWN0fSBpbmplY3Rl
ZE5hbWVzVG9QbHVnaW5zIE1hcCBmcm9tIG5hbWVzIHRvIHBsdWdpbiBtb2R1bGVzLlxuXHQgICAg
ICovXG5cdCAgICBpbmplY3RFdmVudFBsdWdpbnNCeU5hbWU6IEV2ZW50UGx1Z2luUmVnaXN0cnku
aW5qZWN0RXZlbnRQbHVnaW5zQnlOYW1lXG5cdCAgfSxcblx0XG5cdCAgLyoqXG5cdCAgICogU3Rv
cmVzIGBsaXN0ZW5lcmAgYXQgYGxpc3RlbmVyQmFua1tyZWdpc3RyYXRpb25OYW1lXVtrZXldYC4g
SXMgaWRlbXBvdGVudC5cblx0ICAgKlxuXHQgICAqIEBwYXJhbSB7b2JqZWN0fSBpbnN0IFRoZSBp
bnN0YW5jZSwgd2hpY2ggaXMgdGhlIHNvdXJjZSBvZiBldmVudHMuXG5cdCAgICogQHBhcmFtIHtz
dHJpbmd9IHJlZ2lzdHJhdGlvbk5hbWUgTmFtZSBvZiBsaXN0ZW5lciAoZS5nLiBgb25DbGlja2Ap
LlxuXHQgICAqIEBwYXJhbSB7ZnVuY3Rpb259IGxpc3RlbmVyIFRoZSBjYWxsYmFjayB0byBzdG9y
ZS5cblx0ICAgKi9cblx0ICBwdXRMaXN0ZW5lcjogZnVuY3Rpb24gKGluc3QsIHJlZ2lzdHJhdGlv
bk5hbWUsIGxpc3RlbmVyKSB7XG5cdCAgICAhKHR5cGVvZiBsaXN0ZW5lciA9PT0gJ2Z1bmN0aW9u
JykgPyAgZmFsc2UgPyBpbnZhcmlhbnQoZmFsc2UsICdFeHBlY3RlZCAlcyBsaXN0ZW5lciB0byBi
ZSBhIGZ1bmN0aW9uLCBpbnN0ZWFkIGdvdCB0eXBlICVzJywgcmVnaXN0cmF0aW9uTmFtZSwgdHlw
ZW9mIGxpc3RlbmVyKSA6IF9wcm9kSW52YXJpYW50KCc5NCcsIHJlZ2lzdHJhdGlvbk5hbWUsIHR5
cGVvZiBsaXN0ZW5lcikgOiB2b2lkIDA7XG5cdFxuXHQgICAgdmFyIGtleSA9IGdldERpY3Rpb25h
cnlLZXkoaW5zdCk7XG5cdCAgICB2YXIgYmFua0ZvclJlZ2lzdHJhdGlvbk5hbWUgPSBsaXN0ZW5l
ckJhbmtbcmVnaXN0cmF0aW9uTmFtZV0gfHwgKGxpc3RlbmVyQmFua1tyZWdpc3RyYXRpb25OYW1l
XSA9IHt9KTtcblx0ICAgIGJhbmtGb3JSZWdpc3RyYXRpb25OYW1lW2tleV0gPSBsaXN0ZW5lcjtc
blx0XG5cdCAgICB2YXIgUGx1Z2luTW9kdWxlID0gRXZlbnRQbHVnaW5SZWdpc3RyeS5yZWdpc3Ry
YXRpb25OYW1lTW9kdWxlc1tyZWdpc3RyYXRpb25OYW1lXTtcblx0ICAgIGlmIChQbHVnaW5Nb2R1
bGUgJiYgUGx1Z2luTW9kdWxlLmRpZFB1dExpc3RlbmVyKSB7XG5cdCAgICAgIFBsdWdpbk1vZHVs
ZS5kaWRQdXRMaXN0ZW5lcihpbnN0LCByZWdpc3RyYXRpb25OYW1lLCBsaXN0ZW5lcik7XG5cdCAg
ICB9XG5cdCAgfSxcblx0XG5cdCAgLyoqXG5cdCAgICogQHBhcmFtIHtvYmplY3R9IGluc3QgVGhl
IGluc3RhbmNlLCB3aGljaCBpcyB0aGUgc291cmNlIG9mIGV2ZW50cy5cblx0ICAgKiBAcGFyYW0g
e3N0cmluZ30gcmVnaXN0cmF0aW9uTmFtZSBOYW1lIG9mIGxpc3RlbmVyIChlLmcuIGBvbkNsaWNr
YCkuXG5cdCAgICogQHJldHVybiB7P2Z1bmN0aW9ufSBUaGUgc3RvcmVkIGNhbGxiYWNrLlxuXHQg
ICAqL1xuXHQgIGdldExpc3RlbmVyOiBmdW5jdGlvbiAoaW5zdCwgcmVnaXN0cmF0aW9uTmFtZSkg
e1xuXHQgICAgLy8gVE9ETzogc2hvdWxkUHJldmVudE1vdXNlRXZlbnQgaXMgRE9NLXNwZWNpZmlj
IGFuZCBkZWZpbml0ZWx5IHNob3VsZCBub3Rcblx0ICAgIC8vIGxpdmUgaGVyZTsgbmVlZHMgdG8g
YmUgbW92ZWQgdG8gYSBiZXR0ZXIgcGxhY2Ugc29vblxuXHQgICAgdmFyIGJhbmtGb3JSZWdpc3Ry
YXRpb25OYW1lID0gbGlzdGVuZXJCYW5rW3JlZ2lzdHJhdGlvbk5hbWVdO1xuXHQgICAgaWYgKHNo
b3VsZFByZXZlbnRNb3VzZUV2ZW50KHJlZ2lzdHJhdGlvbk5hbWUsIGluc3QuX2N1cnJlbnRFbGVt
ZW50LnR5cGUsIGluc3QuX2N1cnJlbnRFbGVtZW50LnByb3BzKSkge1xuXHQgICAgICByZXR1cm4g
bnVsbDtcblx0ICAgIH1cblx0ICAgIHZhciBrZXkgPSBnZXREaWN0aW9uYXJ5S2V5KGluc3QpO1xu
XHQgICAgcmV0dXJuIGJhbmtGb3JSZWdpc3RyYXRpb25OYW1lICYmIGJhbmtGb3JSZWdpc3RyYXRp
b25OYW1lW2tleV07XG5cdCAgfSxcblx0XG5cdCAgLyoqXG5cdCAgICogRGVsZXRlcyBhIGxpc3Rl
bmVyIGZyb20gdGhlIHJlZ2lzdHJhdGlvbiBiYW5rLlxuXHQgICAqXG5cdCAgICogQHBhcmFtIHtv
YmplY3R9IGluc3QgVGhlIGluc3RhbmNlLCB3aGljaCBpcyB0aGUgc291cmNlIG9mIGV2ZW50cy5c
blx0ICAgKiBAcGFyYW0ge3N0cmluZ30gcmVnaXN0cmF0aW9uTmFtZSBOYW1lIG9mIGxpc3RlbmVy
IChlLmcuIGBvbkNsaWNrYCkuXG5cdCAgICovXG5cdCAgZGVsZXRlTGlzdGVuZXI6IGZ1bmN0aW9u
IChpbnN0LCByZWdpc3RyYXRpb25OYW1lKSB7XG5cdCAgICB2YXIgUGx1Z2luTW9kdWxlID0gRXZl
bnRQbHVnaW5SZWdpc3RyeS5yZWdpc3RyYXRpb25OYW1lTW9kdWxlc1tyZWdpc3RyYXRpb25OYW1l
XTtcblx0ICAgIGlmIChQbHVnaW5Nb2R1bGUgJiYgUGx1Z2luTW9kdWxlLndpbGxEZWxldGVMaXN0
ZW5lcikge1xuXHQgICAgICBQbHVnaW5Nb2R1bGUud2lsbERlbGV0ZUxpc3RlbmVyKGluc3QsIHJl
Z2lzdHJhdGlvbk5hbWUpO1xuXHQgICAgfVxuXHRcblx0ICAgIHZhciBiYW5rRm9yUmVnaXN0cmF0
aW9uTmFtZSA9IGxpc3RlbmVyQmFua1tyZWdpc3RyYXRpb25OYW1lXTtcblx0ICAgIC8vIFRPRE86
IFRoaXMgc2hvdWxkIG5ldmVyIGJlIG51bGwgLS0gd2hlbiBpcyBpdD9cblx0ICAgIGlmIChiYW5r
Rm9yUmVnaXN0cmF0aW9uTmFtZSkge1xuXHQgICAgICB2YXIga2V5ID0gZ2V0RGljdGlvbmFyeUtl
eShpbnN0KTtcblx0ICAgICAgZGVsZXRlIGJhbmtGb3JSZWdpc3RyYXRpb25OYW1lW2tleV07XG5c
dCAgICB9XG5cdCAgfSxcblx0XG5cdCAgLyoqXG5cdCAgICogRGVsZXRlcyBhbGwgbGlzdGVuZXJz
IGZvciB0aGUgRE9NIGVsZW1lbnQgd2l0aCB0aGUgc3VwcGxpZWQgSUQuXG5cdCAgICpcblx0ICAg
KiBAcGFyYW0ge29iamVjdH0gaW5zdCBUaGUgaW5zdGFuY2UsIHdoaWNoIGlzIHRoZSBzb3VyY2Ug
b2YgZXZlbnRzLlxuXHQgICAqL1xuXHQgIGRlbGV0ZUFsbExpc3RlbmVyczogZnVuY3Rpb24gKGlu
c3QpIHtcblx0ICAgIHZhciBrZXkgPSBnZXREaWN0aW9uYXJ5S2V5KGluc3QpO1xuXHQgICAgZm9y
ICh2YXIgcmVnaXN0cmF0aW9uTmFtZSBpbiBsaXN0ZW5lckJhbmspIHtcblx0ICAgICAgaWYgKCFs
aXN0ZW5lckJhbmsuaGFzT3duUHJvcGVydHkocmVnaXN0cmF0aW9uTmFtZSkpIHtcblx0ICAgICAg
ICBjb250aW51ZTtcblx0ICAgICAgfVxuXHRcblx0ICAgICAgaWYgKCFsaXN0ZW5lckJhbmtbcmVn
aXN0cmF0aW9uTmFtZV1ba2V5XSkge1xuXHQgICAgICAgIGNvbnRpbnVlO1xuXHQgICAgICB9XG5c
dFxuXHQgICAgICB2YXIgUGx1Z2luTW9kdWxlID0gRXZlbnRQbHVnaW5SZWdpc3RyeS5yZWdpc3Ry
YXRpb25OYW1lTW9kdWxlc1tyZWdpc3RyYXRpb25OYW1lXTtcblx0ICAgICAgaWYgKFBsdWdpbk1v
ZHVsZSAmJiBQbHVnaW5Nb2R1bGUud2lsbERlbGV0ZUxpc3RlbmVyKSB7XG5cdCAgICAgICAgUGx1
Z2luTW9kdWxlLndpbGxEZWxldGVMaXN0ZW5lcihpbnN0LCByZWdpc3RyYXRpb25OYW1lKTtcblx0
ICAgICAgfVxuXHRcblx0ICAgICAgZGVsZXRlIGxpc3RlbmVyQmFua1tyZWdpc3RyYXRpb25OYW1l
XVtrZXldO1xuXHQgICAgfVxuXHQgIH0sXG5cdFxuXHQgIC8qKlxuXHQgICAqIEFsbG93cyByZWdp
c3RlcmVkIHBsdWdpbnMgYW4gb3Bwb3J0dW5pdHkgdG8gZXh0cmFjdCBldmVudHMgZnJvbSB0b3At
bGV2ZWxcblx0ICAgKiBuYXRpdmUgYnJvd3NlciBldmVudHMuXG5cdCAgICpcblx0ICAgKiBAcmV0
dXJuIHsqfSBBbiBhY2N1bXVsYXRpb24gb2Ygc3ludGhldGljIGV2ZW50cy5cblx0ICAgKiBAaW50
ZXJuYWxcblx0ICAgKi9cblx0ICBleHRyYWN0RXZlbnRzOiBmdW5jdGlvbiAodG9wTGV2ZWxUeXBl
LCB0YXJnZXRJbnN0LCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpIHtcblx0ICAgIHZh
ciBldmVudHM7XG5cdCAgICB2YXIgcGx1Z2lucyA9IEV2ZW50UGx1Z2luUmVnaXN0cnkucGx1Z2lu
cztcblx0ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcGx1Z2lucy5sZW5ndGg7IGkrKykge1xuXHQg
ICAgICAvLyBOb3QgZXZlcnkgcGx1Z2luIGluIHRoZSBvcmRlcmluZyBtYXkgYmUgbG9hZGVkIGF0
IHJ1bnRpbWUuXG5cdCAgICAgIHZhciBwb3NzaWJsZVBsdWdpbiA9IHBsdWdpbnNbaV07XG5cdCAg
ICAgIGlmIChwb3NzaWJsZVBsdWdpbikge1xuXHQgICAgICAgIHZhciBleHRyYWN0ZWRFdmVudHMg
PSBwb3NzaWJsZVBsdWdpbi5leHRyYWN0RXZlbnRzKHRvcExldmVsVHlwZSwgdGFyZ2V0SW5zdCwg
bmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KTtcblx0ICAgICAgICBpZiAoZXh0cmFjdGVk
RXZlbnRzKSB7XG5cdCAgICAgICAgICBldmVudHMgPSBhY2N1bXVsYXRlSW50byhldmVudHMsIGV4
dHJhY3RlZEV2ZW50cyk7XG5cdCAgICAgICAgfVxuXHQgICAgICB9XG5cdCAgICB9XG5cdCAgICBy
ZXR1cm4gZXZlbnRzO1xuXHQgIH0sXG5cdFxuXHQgIC8qKlxuXHQgICAqIEVucXVldWVzIGEgc3lu
dGhldGljIGV2ZW50IHRoYXQgc2hvdWxkIGJlIGRpc3BhdGNoZWQgd2hlblxuXHQgICAqIGBwcm9j
ZXNzRXZlbnRRdWV1ZWAgaXMgaW52b2tlZC5cblx0ICAgKlxuXHQgICAqIEBwYXJhbSB7Kn0gZXZl
bnRzIEFuIGFjY3VtdWxhdGlvbiBvZiBzeW50aGV0aWMgZXZlbnRzLlxuXHQgICAqIEBpbnRlcm5h
bFxuXHQgICAqL1xuXHQgIGVucXVldWVFdmVudHM6IGZ1bmN0aW9uIChldmVudHMpIHtcblx0ICAg
IGlmIChldmVudHMpIHtcblx0ICAgICAgZXZlbnRRdWV1ZSA9IGFjY3VtdWxhdGVJbnRvKGV2ZW50
UXVldWUsIGV2ZW50cyk7XG5cdCAgICB9XG5cdCAgfSxcblx0XG5cdCAgLyoqXG5cdCAgICogRGlz
cGF0Y2hlcyBhbGwgc3ludGhldGljIGV2ZW50cyBvbiB0aGUgZXZlbnQgcXVldWUuXG5cdCAgICpc
blx0ICAgKiBAaW50ZXJuYWxcblx0ICAgKi9cblx0ICBwcm9jZXNzRXZlbnRRdWV1ZTogZnVuY3Rp
b24gKHNpbXVsYXRlZCkge1xuXHQgICAgLy8gU2V0IGBldmVudFF1ZXVlYCB0byBudWxsIGJlZm9y
ZSBwcm9jZXNzaW5nIGl0IHNvIHRoYXQgd2UgY2FuIHRlbGwgaWYgbW9yZVxuXHQgICAgLy8gZXZl
bnRzIGdldCBlbnF1ZXVlZCB3aGlsZSBwcm9jZXNzaW5nLlxuXHQgICAgdmFyIHByb2Nlc3NpbmdF
dmVudFF1ZXVlID0gZXZlbnRRdWV1ZTtcblx0ICAgIGV2ZW50UXVldWUgPSBudWxsO1xuXHQgICAg
aWYgKHNpbXVsYXRlZCkge1xuXHQgICAgICBmb3JFYWNoQWNjdW11bGF0ZWQocHJvY2Vzc2luZ0V2
ZW50UXVldWUsIGV4ZWN1dGVEaXNwYXRjaGVzQW5kUmVsZWFzZVNpbXVsYXRlZCk7XG5cdCAgICB9
IGVsc2Uge1xuXHQgICAgICBmb3JFYWNoQWNjdW11bGF0ZWQocHJvY2Vzc2luZ0V2ZW50UXVldWUs
IGV4ZWN1dGVEaXNwYXRjaGVzQW5kUmVsZWFzZVRvcExldmVsKTtcblx0ICAgIH1cblx0ICAgICEh
ZXZlbnRRdWV1ZSA/ICBmYWxzZSA/IGludmFyaWFudChmYWxzZSwgJ3Byb2Nlc3NFdmVudFF1ZXVl
KCk6IEFkZGl0aW9uYWwgZXZlbnRzIHdlcmUgZW5xdWV1ZWQgd2hpbGUgcHJvY2Vzc2luZyBhbiBl
dmVudCBxdWV1ZS4gU3VwcG9ydCBmb3IgdGhpcyBoYXMgbm90IHlldCBiZWVuIGltcGxlbWVudGVk
LicpIDogX3Byb2RJbnZhcmlhbnQoJzk1JykgOiB2b2lkIDA7XG5cdCAgICAvLyBUaGlzIHdvdWxk
IGJlIGEgZ29vZCB0aW1lIHRvIHJldGhyb3cgaWYgYW55IG9mIHRoZSBldmVudCBoYW5kbGVycyB0
aHJldy5cblx0ICAgIFJlYWN0RXJyb3JVdGlscy5yZXRocm93Q2F1Z2h0RXJyb3IoKTtcblx0ICB9
LFxuXHRcblx0ICAvKipcblx0ICAgKiBUaGVzZSBhcmUgbmVlZGVkIGZvciB0ZXN0cyBvbmx5LiBE
byBub3QgdXNlIVxuXHQgICAqL1xuXHQgIF9fcHVyZ2U6IGZ1bmN0aW9uICgpIHtcblx0ICAgIGxp
c3RlbmVyQmFuayA9IHt9O1xuXHQgIH0sXG5cdFxuXHQgIF9fZ2V0TGlzdGVuZXJCYW5rOiBmdW5j
dGlvbiAoKSB7XG5cdCAgICByZXR1cm4gbGlzdGVuZXJCYW5rO1xuXHQgIH1cblx0fTtcblx0XG5c
dG1vZHVsZS5leHBvcnRzID0gRXZlbnRQbHVnaW5IdWI7XG5cbi8qKiovIH0sXG4vKiAyMCAqL1xu
LyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5c
blx0LyoqXG5cdCAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAq
IEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGlj
ZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNF
TlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFk
ZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhl
IFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqL1xuXHRcblx0
J3VzZSBzdHJpY3QnO1xuXHRcblx0dmFyIEV2ZW50UGx1Z2luSHViID0gX193ZWJwYWNrX3JlcXVp
cmVfXygxOSk7XG5cdHZhciBFdmVudFBsdWdpblV0aWxzID0gX193ZWJwYWNrX3JlcXVpcmVfXygz
Nyk7XG5cdFxuXHR2YXIgYWNjdW11bGF0ZUludG8gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDcwKTtc
blx0dmFyIGZvckVhY2hBY2N1bXVsYXRlZCA9IF9fd2VicGFja19yZXF1aXJlX18oNzEpO1xuXHR2
YXIgd2FybmluZyA9IF9fd2VicGFja19yZXF1aXJlX18oMik7XG5cdFxuXHR2YXIgZ2V0TGlzdGVu
ZXIgPSBFdmVudFBsdWdpbkh1Yi5nZXRMaXN0ZW5lcjtcblx0XG5cdC8qKlxuXHQgKiBTb21lIGV2
ZW50IHR5cGVzIGhhdmUgYSBub3Rpb24gb2YgZGlmZmVyZW50IHJlZ2lzdHJhdGlvbiBuYW1lcyBm
b3IgZGlmZmVyZW50XG5cdCAqIFwicGhhc2VzXCIgb2YgcHJvcGFnYXRpb24uIFRoaXMgZmluZHMg
bGlzdGVuZXJzIGJ5IGEgZ2l2ZW4gcGhhc2UuXG5cdCAqL1xuXHRmdW5jdGlvbiBsaXN0ZW5lckF0
UGhhc2UoaW5zdCwgZXZlbnQsIHByb3BhZ2F0aW9uUGhhc2UpIHtcblx0ICB2YXIgcmVnaXN0cmF0
aW9uTmFtZSA9IGV2ZW50LmRpc3BhdGNoQ29uZmlnLnBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzW3By
b3BhZ2F0aW9uUGhhc2VdO1xuXHQgIHJldHVybiBnZXRMaXN0ZW5lcihpbnN0LCByZWdpc3RyYXRp
b25OYW1lKTtcblx0fVxuXHRcblx0LyoqXG5cdCAqIFRhZ3MgYSBgU3ludGhldGljRXZlbnRgIHdp
dGggZGlzcGF0Y2hlZCBsaXN0ZW5lcnMuIENyZWF0aW5nIHRoaXMgZnVuY3Rpb25cblx0ICogaGVy
ZSwgYWxsb3dzIHVzIHRvIG5vdCBoYXZlIHRvIGJpbmQgb3IgY3JlYXRlIGZ1bmN0aW9ucyBmb3Ig
ZWFjaCBldmVudC5cblx0ICogTXV0YXRpbmcgdGhlIGV2ZW50J3MgbWVtYmVycyBhbGxvd3MgdXMg
dG8gbm90IGhhdmUgdG8gY3JlYXRlIGEgd3JhcHBpbmdcblx0ICogXCJkaXNwYXRjaFwiIG9iamVj
dCB0aGF0IHBhaXJzIHRoZSBldmVudCB3aXRoIHRoZSBsaXN0ZW5lci5cblx0ICovXG5cdGZ1bmN0
aW9uIGFjY3VtdWxhdGVEaXJlY3Rpb25hbERpc3BhdGNoZXMoaW5zdCwgcGhhc2UsIGV2ZW50KSB7
XG5cdCAgaWYgKGZhbHNlKSB7XG5cdCAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1
Y3Rpb24nID8gd2FybmluZyhpbnN0LCAnRGlzcGF0Y2hpbmcgaW5zdCBtdXN0IG5vdCBiZSBudWxs
JykgOiB2b2lkIDA7XG5cdCAgfVxuXHQgIHZhciBsaXN0ZW5lciA9IGxpc3RlbmVyQXRQaGFzZShp
bnN0LCBldmVudCwgcGhhc2UpO1xuXHQgIGlmIChsaXN0ZW5lcikge1xuXHQgICAgZXZlbnQuX2Rp
c3BhdGNoTGlzdGVuZXJzID0gYWNjdW11bGF0ZUludG8oZXZlbnQuX2Rpc3BhdGNoTGlzdGVuZXJz
LCBsaXN0ZW5lcik7XG5cdCAgICBldmVudC5fZGlzcGF0Y2hJbnN0YW5jZXMgPSBhY2N1bXVsYXRl
SW50byhldmVudC5fZGlzcGF0Y2hJbnN0YW5jZXMsIGluc3QpO1xuXHQgIH1cblx0fVxuXHRcblx0
LyoqXG5cdCAqIENvbGxlY3QgZGlzcGF0Y2hlcyAobXVzdCBiZSBlbnRpcmVseSBjb2xsZWN0ZWQg
YmVmb3JlIGRpc3BhdGNoaW5nIC0gc2VlIHVuaXRcblx0ICogdGVzdHMpLiBMYXppbHkgYWxsb2Nh
dGUgdGhlIGFycmF5IHRvIGNvbnNlcnZlIG1lbW9yeS4gIFdlIG11c3QgbG9vcCB0aHJvdWdoXG5c
dCAqIGVhY2ggZXZlbnQgYW5kIHBlcmZvcm0gdGhlIHRyYXZlcnNhbCBmb3IgZWFjaCBvbmUuIFdl
IGNhbm5vdCBwZXJmb3JtIGFcblx0ICogc2luZ2xlIHRyYXZlcnNhbCBmb3IgdGhlIGVudGlyZSBj
b2xsZWN0aW9uIG9mIGV2ZW50cyBiZWNhdXNlIGVhY2ggZXZlbnQgbWF5XG5cdCAqIGhhdmUgYSBk
aWZmZXJlbnQgdGFyZ2V0LlxuXHQgKi9cblx0ZnVuY3Rpb24gYWNjdW11bGF0ZVR3b1BoYXNlRGlz
cGF0Y2hlc1NpbmdsZShldmVudCkge1xuXHQgIGlmIChldmVudCAmJiBldmVudC5kaXNwYXRjaENv
bmZpZy5waGFzZWRSZWdpc3RyYXRpb25OYW1lcykge1xuXHQgICAgRXZlbnRQbHVnaW5VdGlscy50
cmF2ZXJzZVR3b1BoYXNlKGV2ZW50Ll90YXJnZXRJbnN0LCBhY2N1bXVsYXRlRGlyZWN0aW9uYWxE
aXNwYXRjaGVzLCBldmVudCk7XG5cdCAgfVxuXHR9XG5cdFxuXHQvKipcblx0ICogU2FtZSBhcyBg
YWNjdW11bGF0ZVR3b1BoYXNlRGlzcGF0Y2hlc1NpbmdsZWAsIGJ1dCBza2lwcyBvdmVyIHRoZSB0
YXJnZXRJRC5cblx0ICovXG5cdGZ1bmN0aW9uIGFjY3VtdWxhdGVUd29QaGFzZURpc3BhdGNoZXNT
aW5nbGVTa2lwVGFyZ2V0KGV2ZW50KSB7XG5cdCAgaWYgKGV2ZW50ICYmIGV2ZW50LmRpc3BhdGNo
Q29uZmlnLnBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzKSB7XG5cdCAgICB2YXIgdGFyZ2V0SW5zdCA9
IGV2ZW50Ll90YXJnZXRJbnN0O1xuXHQgICAgdmFyIHBhcmVudEluc3QgPSB0YXJnZXRJbnN0ID8g
RXZlbnRQbHVnaW5VdGlscy5nZXRQYXJlbnRJbnN0YW5jZSh0YXJnZXRJbnN0KSA6IG51bGw7XG5c
dCAgICBFdmVudFBsdWdpblV0aWxzLnRyYXZlcnNlVHdvUGhhc2UocGFyZW50SW5zdCwgYWNjdW11
bGF0ZURpcmVjdGlvbmFsRGlzcGF0Y2hlcywgZXZlbnQpO1xuXHQgIH1cblx0fVxuXHRcblx0Lyoq
XG5cdCAqIEFjY3VtdWxhdGVzIHdpdGhvdXQgcmVnYXJkIHRvIGRpcmVjdGlvbiwgZG9lcyBub3Qg
bG9vayBmb3IgcGhhc2VkXG5cdCAqIHJlZ2lzdHJhdGlvbiBuYW1lcy4gU2FtZSBhcyBgYWNjdW11
bGF0ZURpcmVjdERpc3BhdGNoZXNTaW5nbGVgIGJ1dCB3aXRob3V0XG5cdCAqIHJlcXVpcmluZyB0
aGF0IHRoZSBgZGlzcGF0Y2hNYXJrZXJgIGJlIHRoZSBzYW1lIGFzIHRoZSBkaXNwYXRjaGVkIElE
LlxuXHQgKi9cblx0ZnVuY3Rpb24gYWNjdW11bGF0ZURpc3BhdGNoZXMoaW5zdCwgaWdub3JlZERp
cmVjdGlvbiwgZXZlbnQpIHtcblx0ICBpZiAoZXZlbnQgJiYgZXZlbnQuZGlzcGF0Y2hDb25maWcu
cmVnaXN0cmF0aW9uTmFtZSkge1xuXHQgICAgdmFyIHJlZ2lzdHJhdGlvbk5hbWUgPSBldmVudC5k
aXNwYXRjaENvbmZpZy5yZWdpc3RyYXRpb25OYW1lO1xuXHQgICAgdmFyIGxpc3RlbmVyID0gZ2V0
TGlzdGVuZXIoaW5zdCwgcmVnaXN0cmF0aW9uTmFtZSk7XG5cdCAgICBpZiAobGlzdGVuZXIpIHtc
blx0ICAgICAgZXZlbnQuX2Rpc3BhdGNoTGlzdGVuZXJzID0gYWNjdW11bGF0ZUludG8oZXZlbnQu
X2Rpc3BhdGNoTGlzdGVuZXJzLCBsaXN0ZW5lcik7XG5cdCAgICAgIGV2ZW50Ll9kaXNwYXRjaElu
c3RhbmNlcyA9IGFjY3VtdWxhdGVJbnRvKGV2ZW50Ll9kaXNwYXRjaEluc3RhbmNlcywgaW5zdCk7
XG5cdCAgICB9XG5cdCAgfVxuXHR9XG5cdFxuXHQvKipcblx0ICogQWNjdW11bGF0ZXMgZGlzcGF0
Y2hlcyBvbiBhbiBgU3ludGhldGljRXZlbnRgLCBidXQgb25seSBmb3IgdGhlXG5cdCAqIGBkaXNw
YXRjaE1hcmtlcmAuXG5cdCAqIEBwYXJhbSB7U3ludGhldGljRXZlbnR9IGV2ZW50XG5cdCAqL1xu
XHRmdW5jdGlvbiBhY2N1bXVsYXRlRGlyZWN0RGlzcGF0Y2hlc1NpbmdsZShldmVudCkge1xuXHQg
IGlmIChldmVudCAmJiBldmVudC5kaXNwYXRjaENvbmZpZy5yZWdpc3RyYXRpb25OYW1lKSB7XG5c
dCAgICBhY2N1bXVsYXRlRGlzcGF0Y2hlcyhldmVudC5fdGFyZ2V0SW5zdCwgbnVsbCwgZXZlbnQp
O1xuXHQgIH1cblx0fVxuXHRcblx0ZnVuY3Rpb24gYWNjdW11bGF0ZVR3b1BoYXNlRGlzcGF0Y2hl
cyhldmVudHMpIHtcblx0ICBmb3JFYWNoQWNjdW11bGF0ZWQoZXZlbnRzLCBhY2N1bXVsYXRlVHdv
UGhhc2VEaXNwYXRjaGVzU2luZ2xlKTtcblx0fVxuXHRcblx0ZnVuY3Rpb24gYWNjdW11bGF0ZVR3
b1BoYXNlRGlzcGF0Y2hlc1NraXBUYXJnZXQoZXZlbnRzKSB7XG5cdCAgZm9yRWFjaEFjY3VtdWxh
dGVkKGV2ZW50cywgYWNjdW11bGF0ZVR3b1BoYXNlRGlzcGF0Y2hlc1NpbmdsZVNraXBUYXJnZXQp
O1xuXHR9XG5cdFxuXHRmdW5jdGlvbiBhY2N1bXVsYXRlRW50ZXJMZWF2ZURpc3BhdGNoZXMobGVh
dmUsIGVudGVyLCBmcm9tLCB0bykge1xuXHQgIEV2ZW50UGx1Z2luVXRpbHMudHJhdmVyc2VFbnRl
ckxlYXZlKGZyb20sIHRvLCBhY2N1bXVsYXRlRGlzcGF0Y2hlcywgbGVhdmUsIGVudGVyKTtcblx0
fVxuXHRcblx0ZnVuY3Rpb24gYWNjdW11bGF0ZURpcmVjdERpc3BhdGNoZXMoZXZlbnRzKSB7XG5c
dCAgZm9yRWFjaEFjY3VtdWxhdGVkKGV2ZW50cywgYWNjdW11bGF0ZURpcmVjdERpc3BhdGNoZXNT
aW5nbGUpO1xuXHR9XG5cdFxuXHQvKipcblx0ICogQSBzbWFsbCBzZXQgb2YgcHJvcGFnYXRpb24g
cGF0dGVybnMsIGVhY2ggb2Ygd2hpY2ggd2lsbCBhY2NlcHQgYSBzbWFsbCBhbW91bnRcblx0ICog
b2YgaW5mb3JtYXRpb24sIGFuZCBnZW5lcmF0ZSBhIHNldCBvZiBcImRpc3BhdGNoIHJlYWR5IGV2
ZW50IG9iamVjdHNcIiAtIHdoaWNoXG5cdCAqIGFyZSBzZXRzIG9mIGV2ZW50cyB0aGF0IGhhdmUg
YWxyZWFkeSBiZWVuIGFubm90YXRlZCB3aXRoIGEgc2V0IG9mIGRpc3BhdGNoZWRcblx0ICogbGlz
dGVuZXIgZnVuY3Rpb25zL2lkcy4gVGhlIEFQSSBpcyBkZXNpZ25lZCB0aGlzIHdheSB0byBkaXNj
b3VyYWdlIHRoZXNlXG5cdCAqIHByb3BhZ2F0aW9uIHN0cmF0ZWdpZXMgZnJvbSBhY3R1YWxseSBl
eGVjdXRpbmcgdGhlIGRpc3BhdGNoZXMsIHNpbmNlIHdlXG5cdCAqIGFsd2F5cyB3YW50IHRvIGNv
bGxlY3QgdGhlIGVudGlyZSBzZXQgb2YgZGlzcGF0Y2hlcyBiZWZvcmUgZXhlY3V0aW5nIGV2ZW50
IGFcblx0ICogc2luZ2xlIG9uZS5cblx0ICpcblx0ICogQGNvbnN0cnVjdG9yIEV2ZW50UHJvcGFn
YXRvcnNcblx0ICovXG5cdHZhciBFdmVudFByb3BhZ2F0b3JzID0ge1xuXHQgIGFjY3VtdWxhdGVU
d29QaGFzZURpc3BhdGNoZXM6IGFjY3VtdWxhdGVUd29QaGFzZURpc3BhdGNoZXMsXG5cdCAgYWNj
dW11bGF0ZVR3b1BoYXNlRGlzcGF0Y2hlc1NraXBUYXJnZXQ6IGFjY3VtdWxhdGVUd29QaGFzZURp
c3BhdGNoZXNTa2lwVGFyZ2V0LFxuXHQgIGFjY3VtdWxhdGVEaXJlY3REaXNwYXRjaGVzOiBhY2N1
bXVsYXRlRGlyZWN0RGlzcGF0Y2hlcyxcblx0ICBhY2N1bXVsYXRlRW50ZXJMZWF2ZURpc3BhdGNo
ZXM6IGFjY3VtdWxhdGVFbnRlckxlYXZlRGlzcGF0Y2hlc1xuXHR9O1xuXHRcblx0bW9kdWxlLmV4
cG9ydHMgPSBFdmVudFByb3BhZ2F0b3JzO1xuXG4vKioqLyB9LFxuLyogMjEgKi9cbi8qKiovIGZ1
bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxMy1w
cmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxu
XHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGlj
ZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9y
eSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVu
dCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGly
ZWN0b3J5LlxuXHQgKlxuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdC8qKlxuXHQg
KiBgUmVhY3RJbnN0YW5jZU1hcGAgbWFpbnRhaW5zIGEgbWFwcGluZyBmcm9tIGEgcHVibGljIGZh
Y2luZyBzdGF0ZWZ1bFxuXHQgKiBpbnN0YW5jZSAoa2V5KSBhbmQgdGhlIGludGVybmFsIHJlcHJl
c2VudGF0aW9uICh2YWx1ZSkuIFRoaXMgYWxsb3dzIHB1YmxpY1xuXHQgKiBtZXRob2RzIHRvIGFj
Y2VwdCB0aGUgdXNlciBmYWNpbmcgaW5zdGFuY2UgYXMgYW4gYXJndW1lbnQgYW5kIG1hcCB0aGVt
IGJhY2tcblx0ICogdG8gaW50ZXJuYWwgbWV0aG9kcy5cblx0ICovXG5cdFxuXHQvLyBUT0RPOiBS
ZXBsYWNlIHRoaXMgd2l0aCBFUzY6IHZhciBSZWFjdEluc3RhbmNlTWFwID0gbmV3IE1hcCgpO1xu
XHRcblx0dmFyIFJlYWN0SW5zdGFuY2VNYXAgPSB7XG5cdCAgLyoqXG5cdCAgICogVGhpcyBBUEkg
c2hvdWxkIGJlIGNhbGxlZCBgZGVsZXRlYCBidXQgd2UnZCBoYXZlIHRvIG1ha2Ugc3VyZSB0byBh
bHdheXNcblx0ICAgKiB0cmFuc2Zvcm0gdGhlc2UgdG8gc3RyaW5ncyBmb3IgSUUgc3VwcG9ydC4g
V2hlbiB0aGlzIHRyYW5zZm9ybSBpcyBmdWxseVxuXHQgICAqIHN1cHBvcnRlZCB3ZSBjYW4gcmVu
YW1lIGl0LlxuXHQgICAqL1xuXHQgIHJlbW92ZTogZnVuY3Rpb24gKGtleSkge1xuXHQgICAga2V5
Ll9yZWFjdEludGVybmFsSW5zdGFuY2UgPSB1bmRlZmluZWQ7XG5cdCAgfSxcblx0XG5cdCAgZ2V0
OiBmdW5jdGlvbiAoa2V5KSB7XG5cdCAgICByZXR1cm4ga2V5Ll9yZWFjdEludGVybmFsSW5zdGFu
Y2U7XG5cdCAgfSxcblx0XG5cdCAgaGFzOiBmdW5jdGlvbiAoa2V5KSB7XG5cdCAgICByZXR1cm4g
a2V5Ll9yZWFjdEludGVybmFsSW5zdGFuY2UgIT09IHVuZGVmaW5lZDtcblx0ICB9LFxuXHRcblx0
ICBzZXQ6IGZ1bmN0aW9uIChrZXksIHZhbHVlKSB7XG5cdCAgICBrZXkuX3JlYWN0SW50ZXJuYWxJ
bnN0YW5jZSA9IHZhbHVlO1xuXHQgIH1cblx0fTtcblx0XG5cdG1vZHVsZS5leHBvcnRzID0gUmVh
Y3RJbnN0YW5jZU1hcDtcblxuLyoqKi8gfSxcbi8qIDIyICovXG4vKioqLyBmdW5jdGlvbihtb2R1
bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvKipcblx0ICogQ29weXJp
Z2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZl
ZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNE
LXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9v
dCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQg
KiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRo
ZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpcblx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxu
XHR2YXIgU3ludGhldGljRXZlbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEwKTtcblx0XG5cdHZh
ciBnZXRFdmVudFRhcmdldCA9IF9fd2VicGFja19yZXF1aXJlX18oNDYpO1xuXHRcblx0LyoqXG5c
dCAqIEBpbnRlcmZhY2UgVUlFdmVudFxuXHQgKiBAc2VlIGh0dHA6Ly93d3cudzMub3JnL1RSL0RP
TS1MZXZlbC0zLUV2ZW50cy9cblx0ICovXG5cdHZhciBVSUV2ZW50SW50ZXJmYWNlID0ge1xuXHQg
IHZpZXc6IGZ1bmN0aW9uIChldmVudCkge1xuXHQgICAgaWYgKGV2ZW50LnZpZXcpIHtcblx0ICAg
ICAgcmV0dXJuIGV2ZW50LnZpZXc7XG5cdCAgICB9XG5cdFxuXHQgICAgdmFyIHRhcmdldCA9IGdl
dEV2ZW50VGFyZ2V0KGV2ZW50KTtcblx0ICAgIGlmICh0YXJnZXQud2luZG93ID09PSB0YXJnZXQp
IHtcblx0ICAgICAgLy8gdGFyZ2V0IGlzIGEgd2luZG93IG9iamVjdFxuXHQgICAgICByZXR1cm4g
dGFyZ2V0O1xuXHQgICAgfVxuXHRcblx0ICAgIHZhciBkb2MgPSB0YXJnZXQub3duZXJEb2N1bWVu
dDtcblx0ICAgIC8vIFRPRE86IEZpZ3VyZSBvdXQgd2h5IGBvd25lckRvY3VtZW50YCBpcyBzb21l
dGltZXMgdW5kZWZpbmVkIGluIElFOC5cblx0ICAgIGlmIChkb2MpIHtcblx0ICAgICAgcmV0dXJu
IGRvYy5kZWZhdWx0VmlldyB8fCBkb2MucGFyZW50V2luZG93O1xuXHQgICAgfSBlbHNlIHtcblx0
ICAgICAgcmV0dXJuIHdpbmRvdztcblx0ICAgIH1cblx0ICB9LFxuXHQgIGRldGFpbDogZnVuY3Rp
b24gKGV2ZW50KSB7XG5cdCAgICByZXR1cm4gZXZlbnQuZGV0YWlsIHx8IDA7XG5cdCAgfVxuXHR9
O1xuXHRcblx0LyoqXG5cdCAqIEBwYXJhbSB7b2JqZWN0fSBkaXNwYXRjaENvbmZpZyBDb25maWd1
cmF0aW9uIHVzZWQgdG8gZGlzcGF0Y2ggdGhpcyBldmVudC5cblx0ICogQHBhcmFtIHtzdHJpbmd9
IGRpc3BhdGNoTWFya2VyIE1hcmtlciBpZGVudGlmeWluZyB0aGUgZXZlbnQgdGFyZ2V0LlxuXHQg
KiBAcGFyYW0ge29iamVjdH0gbmF0aXZlRXZlbnQgTmF0aXZlIGJyb3dzZXIgZXZlbnQuXG5cdCAq
IEBleHRlbmRzIHtTeW50aGV0aWNFdmVudH1cblx0ICovXG5cdGZ1bmN0aW9uIFN5bnRoZXRpY1VJ
RXZlbnQoZGlzcGF0Y2hDb25maWcsIGRpc3BhdGNoTWFya2VyLCBuYXRpdmVFdmVudCwgbmF0aXZl
RXZlbnRUYXJnZXQpIHtcblx0ICByZXR1cm4gU3ludGhldGljRXZlbnQuY2FsbCh0aGlzLCBkaXNw
YXRjaENvbmZpZywgZGlzcGF0Y2hNYXJrZXIsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdl
dCk7XG5cdH1cblx0XG5cdFN5bnRoZXRpY0V2ZW50LmF1Z21lbnRDbGFzcyhTeW50aGV0aWNVSUV2
ZW50LCBVSUV2ZW50SW50ZXJmYWNlKTtcblx0XG5cdG1vZHVsZS5leHBvcnRzID0gU3ludGhldGlj
VUlFdmVudDtcblxuLyoqKi8gfSxcbi8qIDIzICovXG4zLFxuLyogMjQgKi9cbi8qKiovIGZ1bmN0
aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8qKlxuXHQg
KiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJp
Z2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1
bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmls
ZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25h
bCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5U
UyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpcblx0ICovXG5cdFxuXHQndXNlIHN0
cmljdCc7XG5cdFxuXHR2YXIgZW1wdHlPYmplY3QgPSB7fTtcblx0XG5cdGlmIChmYWxzZSkge1xu
XHQgIE9iamVjdC5mcmVlemUoZW1wdHlPYmplY3QpO1xuXHR9XG5cdFxuXHRtb2R1bGUuZXhwb3J0
cyA9IGVtcHR5T2JqZWN0O1xuXG4vKioqLyB9LFxuLyogMjUgKi9cbi8qKiovIGZ1bmN0aW9uKG1v
ZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8qKlxuXHQgKiBDb3B5
cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBC
U0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxlIGluIHRoZSBy
b290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5c
dCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4g
dGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0
XG5cdHZhciBfYXNzaWduID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0KTtcblx0XG5cdHZhciBFdmVu
dFBsdWdpblJlZ2lzdHJ5ID0gX193ZWJwYWNrX3JlcXVpcmVfXygzNik7XG5cdHZhciBSZWFjdEV2
ZW50RW1pdHRlck1peGluID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNTIpO1xuXHR2YXIgVmlld3Bv
cnRNZXRyaWNzID0gX193ZWJwYWNrX3JlcXVpcmVfXyg2OSk7XG5cdFxuXHR2YXIgZ2V0VmVuZG9y
UHJlZml4ZWRFdmVudE5hbWUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE4NCk7XG5cdHZhciBpc0V2
ZW50U3VwcG9ydGVkID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0Nyk7XG5cdFxuXHQvKipcblx0ICog
U3VtbWFyeSBvZiBgUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyYCBldmVudCBoYW5kbGluZzpcblx0
ICpcblx0ICogIC0gVG9wLWxldmVsIGRlbGVnYXRpb24gaXMgdXNlZCB0byB0cmFwIG1vc3QgbmF0
aXZlIGJyb3dzZXIgZXZlbnRzLiBUaGlzXG5cdCAqICAgIG1heSBvbmx5IG9jY3VyIGluIHRoZSBt
YWluIHRocmVhZCBhbmQgaXMgdGhlIHJlc3BvbnNpYmlsaXR5IG9mXG5cdCAqICAgIFJlYWN0RXZl
bnRMaXN0ZW5lciwgd2hpY2ggaXMgaW5qZWN0ZWQgYW5kIGNhbiB0aGVyZWZvcmUgc3VwcG9ydCBw
bHVnZ2FibGVcblx0ICogICAgZXZlbnQgc291cmNlcy4gVGhpcyBpcyB0aGUgb25seSB3b3JrIHRo
YXQgb2NjdXJzIGluIHRoZSBtYWluIHRocmVhZC5cblx0ICpcblx0ICogIC0gV2Ugbm9ybWFsaXpl
IGFuZCBkZS1kdXBsaWNhdGUgZXZlbnRzIHRvIGFjY291bnQgZm9yIGJyb3dzZXIgcXVpcmtzLiBU
aGlzXG5cdCAqICAgIG1heSBiZSBkb25lIGluIHRoZSB3b3JrZXIgdGhyZWFkLlxuXHQgKlxuXHQg
KiAgLSBGb3J3YXJkIHRoZXNlIG5hdGl2ZSBldmVudHMgKHdpdGggdGhlIGFzc29jaWF0ZWQgdG9w
LWxldmVsIHR5cGUgdXNlZCB0b1xuXHQgKiAgICB0cmFwIGl0KSB0byBgRXZlbnRQbHVnaW5IdWJg
LCB3aGljaCBpbiB0dXJuIHdpbGwgYXNrIHBsdWdpbnMgaWYgdGhleSB3YW50XG5cdCAqICAgIHRv
IGV4dHJhY3QgYW55IHN5bnRoZXRpYyBldmVudHMuXG5cdCAqXG5cdCAqICAtIFRoZSBgRXZlbnRQ
bHVnaW5IdWJgIHdpbGwgdGhlbiBwcm9jZXNzIGVhY2ggZXZlbnQgYnkgYW5ub3RhdGluZyB0aGVt
IHdpdGhcblx0ICogICAgXCJkaXNwYXRjaGVzXCIsIGEgc2VxdWVuY2Ugb2YgbGlzdGVuZXJzIGFu
ZCBJRHMgdGhhdCBjYXJlIGFib3V0IHRoYXQgZXZlbnQuXG5cdCAqXG5cdCAqICAtIFRoZSBgRXZl
bnRQbHVnaW5IdWJgIHRoZW4gZGlzcGF0Y2hlcyB0aGUgZXZlbnRzLlxuXHQgKlxuXHQgKiBPdmVy
dmlldyBvZiBSZWFjdCBhbmQgdGhlIGV2ZW50IHN5c3RlbTpcblx0ICpcblx0ICogKy0tLS0tLS0t
LS0tLSsgICAgLlxuXHQgKiB8ICAgIERPTSAgICAgfCAgICAuXG5cdCAqICstLS0tLS0tLS0tLS0r
ICAgIC5cblx0ICogICAgICAgfCAgICAgICAgICAgLlxuXHQgKiAgICAgICB2ICAgICAgICAgICAu
XG5cdCAqICstLS0tLS0tLS0tLS0rICAgIC5cblx0ICogfCBSZWFjdEV2ZW50IHwgICAgLlxuXHQg
KiB8ICBMaXN0ZW5lciAgfCAgICAuXG5cdCAqICstLS0tLS0tLS0tLS0rICAgIC4gICAgICAgICAg
ICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tK1xuXHQgKiAgICAgICB8ICAgICAgICAgICAuICAg
ICAgICAgICAgICAgKy0tLS0tLS0tK3xTaW1wbGVFdmVudHxcblx0ICogICAgICAgfCAgICAgICAg
ICAgLiAgICAgICAgICAgICAgIHwgICAgICAgICB8UGx1Z2luICAgICB8XG5cdCAqICstLS0tLXwt
LS0tLS0rICAgIC4gICAgICAgICAgICAgICB2ICAgICAgICAgKy0tLS0tLS0tLS0tK1xuXHQgKiB8
ICAgICB8ICAgICAgfCAgICAuICAgICstLS0tLS0tLS0tLS0tLSsgICAgICAgICAgICAgICAgICAg
ICstLS0tLS0tLS0tLS0rXG5cdCAqIHwgICAgICstLS0tLS0tLS0tLS4tLS0+fEV2ZW50UGx1Z2lu
SHVifCAgICAgICAgICAgICAgICAgICAgfCAgICBFdmVudCAgIHxcblx0ICogfCAgICAgICAgICAg
IHwgICAgLiAgICB8ICAgICAgICAgICAgICB8ICAgICArLS0tLS0tLS0tLS0rICB8IFByb3BhZ2F0
b3JzfFxuXHQgKiB8IFJlYWN0RXZlbnQgfCAgICAuICAgIHwgICAgICAgICAgICAgIHwgICAgIHxU
YXBFdmVudCAgIHwgIHwtLS0tLS0tLS0tLS18XG5cdCAqIHwgIEVtaXR0ZXIgICB8ICAgIC4gICAg
fCAgICAgICAgICAgICAgfDwtLS0rfFBsdWdpbiAgICAgfCAgfG90aGVyIHBsdWdpbnxcblx0ICog
fCAgICAgICAgICAgIHwgICAgLiAgICB8ICAgICAgICAgICAgICB8ICAgICArLS0tLS0tLS0tLS0r
ICB8ICB1dGlsaXRpZXMgfFxuXHQgKiB8ICAgICArLS0tLS0tLS0tLS0uLS0tPnwgICAgICAgICAg
ICAgIHwgICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0rXG5cdCAqIHwgICAgIHwgICAg
ICB8ICAgIC4gICAgKy0tLS0tLS0tLS0tLS0tK1xuXHQgKiArLS0tLS18LS0tLS0tKyAgICAuICAg
ICAgICAgICAgICAgIF4gICAgICAgICstLS0tLS0tLS0tLStcblx0ICogICAgICAgfCAgICAgICAg
ICAgLiAgICAgICAgICAgICAgICB8ICAgICAgICB8RW50ZXIvTGVhdmV8XG5cdCAqICAgICAgICsg
ICAgICAgICAgIC4gICAgICAgICAgICAgICAgKy0tLS0tLS0rfFBsdWdpbiAgICAgfFxuXHQgKiAr
LS0tLS0tLS0tLS0tLSsgICAuICAgICAgICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLStc
blx0ICogfCBhcHBsaWNhdGlvbiB8ICAgLlxuXHQgKiB8LS0tLS0tLS0tLS0tLXwgICAuXG5cdCAq
IHwgICAgICAgICAgICAgfCAgIC5cblx0ICogfCAgICAgICAgICAgICB8ICAgLlxuXHQgKiArLS0t
LS0tLS0tLS0tLSsgICAuXG5cdCAqICAgICAgICAgICAgICAgICAgIC5cblx0ICogICAgUmVhY3Qg
Q29yZSAgICAgLiAgR2VuZXJhbCBQdXJwb3NlIEV2ZW50IFBsdWdpbiBTeXN0ZW1cblx0ICovXG5c
dFxuXHR2YXIgaGFzRXZlbnRQYWdlWFk7XG5cdHZhciBhbHJlYWR5TGlzdGVuaW5nVG8gPSB7fTtc
blx0dmFyIGlzTW9uaXRvcmluZ1Njcm9sbFZhbHVlID0gZmFsc2U7XG5cdHZhciByZWFjdFRvcExp
c3RlbmVyc0NvdW50ZXIgPSAwO1xuXHRcblx0Ly8gRm9yIGV2ZW50cyBsaWtlICdzdWJtaXQnIHdo
aWNoIGRvbid0IGNvbnNpc3RlbnRseSBidWJibGUgKHdoaWNoIHdlIHRyYXAgYXQgYVxuXHQvLyBs
b3dlciBub2RlIHRoYW4gYGRvY3VtZW50YCksIGJpbmRpbmcgYXQgYGRvY3VtZW50YCB3b3VsZCBj
YXVzZSBkdXBsaWNhdGVcblx0Ly8gZXZlbnRzIHNvIHdlIGRvbid0IGluY2x1ZGUgdGhlbSBoZXJl
XG5cdHZhciB0b3BFdmVudE1hcHBpbmcgPSB7XG5cdCAgdG9wQWJvcnQ6ICdhYm9ydCcsXG5cdCAg
dG9wQW5pbWF0aW9uRW5kOiBnZXRWZW5kb3JQcmVmaXhlZEV2ZW50TmFtZSgnYW5pbWF0aW9uZW5k
JykgfHwgJ2FuaW1hdGlvbmVuZCcsXG5cdCAgdG9wQW5pbWF0aW9uSXRlcmF0aW9uOiBnZXRWZW5k
b3JQcmVmaXhlZEV2ZW50TmFtZSgnYW5pbWF0aW9uaXRlcmF0aW9uJykgfHwgJ2FuaW1hdGlvbml0
ZXJhdGlvbicsXG5cdCAgdG9wQW5pbWF0aW9uU3RhcnQ6IGdldFZlbmRvclByZWZpeGVkRXZlbnRO
YW1lKCdhbmltYXRpb25zdGFydCcpIHx8ICdhbmltYXRpb25zdGFydCcsXG5cdCAgdG9wQmx1cjog
J2JsdXInLFxuXHQgIHRvcENhblBsYXk6ICdjYW5wbGF5Jyxcblx0ICB0b3BDYW5QbGF5VGhyb3Vn
aDogJ2NhbnBsYXl0aHJvdWdoJyxcblx0ICB0b3BDaGFuZ2U6ICdjaGFuZ2UnLFxuXHQgIHRvcENs
aWNrOiAnY2xpY2snLFxuXHQgIHRvcENvbXBvc2l0aW9uRW5kOiAnY29tcG9zaXRpb25lbmQnLFxu
XHQgIHRvcENvbXBvc2l0aW9uU3RhcnQ6ICdjb21wb3NpdGlvbnN0YXJ0Jyxcblx0ICB0b3BDb21w
b3NpdGlvblVwZGF0ZTogJ2NvbXBvc2l0aW9udXBkYXRlJyxcblx0ICB0b3BDb250ZXh0TWVudTog
J2NvbnRleHRtZW51Jyxcblx0ICB0b3BDb3B5OiAnY29weScsXG5cdCAgdG9wQ3V0OiAnY3V0Jyxc
blx0ICB0b3BEb3VibGVDbGljazogJ2RibGNsaWNrJyxcblx0ICB0b3BEcmFnOiAnZHJhZycsXG5c
dCAgdG9wRHJhZ0VuZDogJ2RyYWdlbmQnLFxuXHQgIHRvcERyYWdFbnRlcjogJ2RyYWdlbnRlcics
XG5cdCAgdG9wRHJhZ0V4aXQ6ICdkcmFnZXhpdCcsXG5cdCAgdG9wRHJhZ0xlYXZlOiAnZHJhZ2xl
YXZlJyxcblx0ICB0b3BEcmFnT3ZlcjogJ2RyYWdvdmVyJyxcblx0ICB0b3BEcmFnU3RhcnQ6ICdk
cmFnc3RhcnQnLFxuXHQgIHRvcERyb3A6ICdkcm9wJyxcblx0ICB0b3BEdXJhdGlvbkNoYW5nZTog
J2R1cmF0aW9uY2hhbmdlJyxcblx0ICB0b3BFbXB0aWVkOiAnZW1wdGllZCcsXG5cdCAgdG9wRW5j
cnlwdGVkOiAnZW5jcnlwdGVkJyxcblx0ICB0b3BFbmRlZDogJ2VuZGVkJyxcblx0ICB0b3BFcnJv
cjogJ2Vycm9yJyxcblx0ICB0b3BGb2N1czogJ2ZvY3VzJyxcblx0ICB0b3BJbnB1dDogJ2lucHV0
Jyxcblx0ICB0b3BLZXlEb3duOiAna2V5ZG93bicsXG5cdCAgdG9wS2V5UHJlc3M6ICdrZXlwcmVz
cycsXG5cdCAgdG9wS2V5VXA6ICdrZXl1cCcsXG5cdCAgdG9wTG9hZGVkRGF0YTogJ2xvYWRlZGRh
dGEnLFxuXHQgIHRvcExvYWRlZE1ldGFkYXRhOiAnbG9hZGVkbWV0YWRhdGEnLFxuXHQgIHRvcExv
YWRTdGFydDogJ2xvYWRzdGFydCcsXG5cdCAgdG9wTW91c2VEb3duOiAnbW91c2Vkb3duJyxcblx0
ICB0b3BNb3VzZU1vdmU6ICdtb3VzZW1vdmUnLFxuXHQgIHRvcE1vdXNlT3V0OiAnbW91c2VvdXQn
LFxuXHQgIHRvcE1vdXNlT3ZlcjogJ21vdXNlb3ZlcicsXG5cdCAgdG9wTW91c2VVcDogJ21vdXNl
dXAnLFxuXHQgIHRvcFBhc3RlOiAncGFzdGUnLFxuXHQgIHRvcFBhdXNlOiAncGF1c2UnLFxuXHQg
IHRvcFBsYXk6ICdwbGF5Jyxcblx0ICB0b3BQbGF5aW5nOiAncGxheWluZycsXG5cdCAgdG9wUHJv
Z3Jlc3M6ICdwcm9ncmVzcycsXG5cdCAgdG9wUmF0ZUNoYW5nZTogJ3JhdGVjaGFuZ2UnLFxuXHQg
IHRvcFNjcm9sbDogJ3Njcm9sbCcsXG5cdCAgdG9wU2Vla2VkOiAnc2Vla2VkJyxcblx0ICB0b3BT
ZWVraW5nOiAnc2Vla2luZycsXG5cdCAgdG9wU2VsZWN0aW9uQ2hhbmdlOiAnc2VsZWN0aW9uY2hh
bmdlJyxcblx0ICB0b3BTdGFsbGVkOiAnc3RhbGxlZCcsXG5cdCAgdG9wU3VzcGVuZDogJ3N1c3Bl
bmQnLFxuXHQgIHRvcFRleHRJbnB1dDogJ3RleHRJbnB1dCcsXG5cdCAgdG9wVGltZVVwZGF0ZTog
J3RpbWV1cGRhdGUnLFxuXHQgIHRvcFRvdWNoQ2FuY2VsOiAndG91Y2hjYW5jZWwnLFxuXHQgIHRv
cFRvdWNoRW5kOiAndG91Y2hlbmQnLFxuXHQgIHRvcFRvdWNoTW92ZTogJ3RvdWNobW92ZScsXG5c
dCAgdG9wVG91Y2hTdGFydDogJ3RvdWNoc3RhcnQnLFxuXHQgIHRvcFRyYW5zaXRpb25FbmQ6IGdl
dFZlbmRvclByZWZpeGVkRXZlbnROYW1lKCd0cmFuc2l0aW9uZW5kJykgfHwgJ3RyYW5zaXRpb25l
bmQnLFxuXHQgIHRvcFZvbHVtZUNoYW5nZTogJ3ZvbHVtZWNoYW5nZScsXG5cdCAgdG9wV2FpdGlu
ZzogJ3dhaXRpbmcnLFxuXHQgIHRvcFdoZWVsOiAnd2hlZWwnXG5cdH07XG5cdFxuXHQvKipcblx0
ICogVG8gZW5zdXJlIG5vIGNvbmZsaWN0cyB3aXRoIG90aGVyIHBvdGVudGlhbCBSZWFjdCBpbnN0
YW5jZXMgb24gdGhlIHBhZ2Vcblx0ICovXG5cdHZhciB0b3BMaXN0ZW5lcnNJREtleSA9ICdfcmVh
Y3RMaXN0ZW5lcnNJRCcgKyBTdHJpbmcoTWF0aC5yYW5kb20oKSkuc2xpY2UoMik7XG5cdFxuXHRm
dW5jdGlvbiBnZXRMaXN0ZW5pbmdGb3JEb2N1bWVudChtb3VudEF0KSB7XG5cdCAgLy8gSW4gSUU4
LCBgbW91bnRBdGAgaXMgYSBob3N0IG9iamVjdCBhbmQgZG9lc24ndCBoYXZlIGBoYXNPd25Qcm9w
ZXJ0eWBcblx0ICAvLyBkaXJlY3RseS5cblx0ICBpZiAoIU9iamVjdC5wcm90b3R5cGUuaGFzT3du
UHJvcGVydHkuY2FsbChtb3VudEF0LCB0b3BMaXN0ZW5lcnNJREtleSkpIHtcblx0ICAgIG1vdW50
QXRbdG9wTGlzdGVuZXJzSURLZXldID0gcmVhY3RUb3BMaXN0ZW5lcnNDb3VudGVyKys7XG5cdCAg
ICBhbHJlYWR5TGlzdGVuaW5nVG9bbW91bnRBdFt0b3BMaXN0ZW5lcnNJREtleV1dID0ge307XG5c
dCAgfVxuXHQgIHJldHVybiBhbHJlYWR5TGlzdGVuaW5nVG9bbW91bnRBdFt0b3BMaXN0ZW5lcnNJ
REtleV1dO1xuXHR9XG5cdFxuXHQvKipcblx0ICogYFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlcmAg
aXMgdXNlZCB0byBhdHRhY2ggdG9wLWxldmVsIGV2ZW50IGxpc3RlbmVycy4gRm9yXG5cdCAqIGV4
YW1wbGU6XG5cdCAqXG5cdCAqICAgRXZlbnRQbHVnaW5IdWIucHV0TGlzdGVuZXIoJ215SUQnLCAn
b25DbGljaycsIG15RnVuY3Rpb24pO1xuXHQgKlxuXHQgKiBUaGlzIHdvdWxkIGFsbG9jYXRlIGEg
XCJyZWdpc3RyYXRpb25cIiBvZiBgKCdvbkNsaWNrJywgbXlGdW5jdGlvbilgIG9uICdteUlEJy5c
blx0ICpcblx0ICogQGludGVybmFsXG5cdCAqL1xuXHR2YXIgUmVhY3RCcm93c2VyRXZlbnRFbWl0
dGVyID0gX2Fzc2lnbih7fSwgUmVhY3RFdmVudEVtaXR0ZXJNaXhpbiwge1xuXHQgIC8qKlxuXHQg
ICAqIEluamVjdGFibGUgZXZlbnQgYmFja2VuZFxuXHQgICAqL1xuXHQgIFJlYWN0RXZlbnRMaXN0
ZW5lcjogbnVsbCxcblx0XG5cdCAgaW5qZWN0aW9uOiB7XG5cdCAgICAvKipcblx0ICAgICAqIEBw
YXJhbSB7b2JqZWN0fSBSZWFjdEV2ZW50TGlzdGVuZXJcblx0ICAgICAqL1xuXHQgICAgaW5qZWN0
UmVhY3RFdmVudExpc3RlbmVyOiBmdW5jdGlvbiAoUmVhY3RFdmVudExpc3RlbmVyKSB7XG5cdCAg
ICAgIFJlYWN0RXZlbnRMaXN0ZW5lci5zZXRIYW5kbGVUb3BMZXZlbChSZWFjdEJyb3dzZXJFdmVu
dEVtaXR0ZXIuaGFuZGxlVG9wTGV2ZWwpO1xuXHQgICAgICBSZWFjdEJyb3dzZXJFdmVudEVtaXR0
ZXIuUmVhY3RFdmVudExpc3RlbmVyID0gUmVhY3RFdmVudExpc3RlbmVyO1xuXHQgICAgfVxuXHQg
IH0sXG5cdFxuXHQgIC8qKlxuXHQgICAqIFNldHMgd2hldGhlciBvciBub3QgYW55IGNyZWF0ZWQg
Y2FsbGJhY2tzIHNob3VsZCBiZSBlbmFibGVkLlxuXHQgICAqXG5cdCAgICogQHBhcmFtIHtib29s
ZWFufSBlbmFibGVkIFRydWUgaWYgY2FsbGJhY2tzIHNob3VsZCBiZSBlbmFibGVkLlxuXHQgICAq
L1xuXHQgIHNldEVuYWJsZWQ6IGZ1bmN0aW9uIChlbmFibGVkKSB7XG5cdCAgICBpZiAoUmVhY3RC
cm93c2VyRXZlbnRFbWl0dGVyLlJlYWN0RXZlbnRMaXN0ZW5lcikge1xuXHQgICAgICBSZWFjdEJy
b3dzZXJFdmVudEVtaXR0ZXIuUmVhY3RFdmVudExpc3RlbmVyLnNldEVuYWJsZWQoZW5hYmxlZCk7
XG5cdCAgICB9XG5cdCAgfSxcblx0XG5cdCAgLyoqXG5cdCAgICogQHJldHVybiB7Ym9vbGVhbn0g
VHJ1ZSBpZiBjYWxsYmFja3MgYXJlIGVuYWJsZWQuXG5cdCAgICovXG5cdCAgaXNFbmFibGVkOiBm
dW5jdGlvbiAoKSB7XG5cdCAgICByZXR1cm4gISEoUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLlJl
YWN0RXZlbnRMaXN0ZW5lciAmJiBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIuUmVhY3RFdmVudExp
c3RlbmVyLmlzRW5hYmxlZCgpKTtcblx0ICB9LFxuXHRcblx0ICAvKipcblx0ICAgKiBXZSBsaXN0
ZW4gZm9yIGJ1YmJsZWQgdG91Y2ggZXZlbnRzIG9uIHRoZSBkb2N1bWVudCBvYmplY3QuXG5cdCAg
ICpcblx0ICAgKiBGaXJlZm94IHY4LjAxIChhbmQgcG9zc2libHkgb3RoZXJzKSBleGhpYml0ZWQg
c3RyYW5nZSBiZWhhdmlvciB3aGVuXG5cdCAgICogbW91bnRpbmcgYG9ubW91c2Vtb3ZlYCBldmVu
dHMgYXQgc29tZSBub2RlIHRoYXQgd2FzIG5vdCB0aGUgZG9jdW1lbnRcblx0ICAgKiBlbGVtZW50
LiBUaGUgc3ltcHRvbXMgd2VyZSB0aGF0IGlmIHlvdXIgbW91c2UgaXMgbm90IG1vdmluZyBvdmVy
IHNvbWV0aGluZ1xuXHQgICAqIGNvbnRhaW5lZCB3aXRoaW4gdGhhdCBtb3VudCBwb2ludCAoZm9y
IGV4YW1wbGUgb24gdGhlIGJhY2tncm91bmQpIHRoZVxuXHQgICAqIHRvcC1sZXZlbCBsaXN0ZW5l
cnMgZm9yIGBvbm1vdXNlbW92ZWAgd29uJ3QgYmUgY2FsbGVkLiBIb3dldmVyLCBpZiB5b3Vcblx0
ICAgKiByZWdpc3RlciB0aGUgYG1vdXNlbW92ZWAgb24gdGhlIGRvY3VtZW50IG9iamVjdCwgdGhl
biBpdCB3aWxsIG9mIGNvdXJzZVxuXHQgICAqIGNhdGNoIGFsbCBgbW91c2Vtb3ZlYHMuIFRoaXMg
YWxvbmcgd2l0aCBpT1MgcXVpcmtzLCBqdXN0aWZpZXMgcmVzdHJpY3Rpbmdcblx0ICAgKiB0b3At
bGV2ZWwgbGlzdGVuZXJzIHRvIHRoZSBkb2N1bWVudCBvYmplY3Qgb25seSwgYXQgbGVhc3QgZm9y
IHRoZXNlXG5cdCAgICogbW92ZW1lbnQgdHlwZXMgb2YgZXZlbnRzIGFuZCBwb3NzaWJseSBhbGwg
ZXZlbnRzLlxuXHQgICAqXG5cdCAgICogQHNlZSBodHRwOi8vd3d3LnF1aXJrc21vZGUub3JnL2Js
b2cvYXJjaGl2ZXMvMjAxMC8wOS9jbGlja19ldmVudF9kZWwuaHRtbFxuXHQgICAqXG5cdCAgICog
QWxzbywgYGtleXVwYC9ga2V5cHJlc3NgL2BrZXlkb3duYCBkbyBub3QgYnViYmxlIHRvIHRoZSB3
aW5kb3cgb24gSUUsIGJ1dFxuXHQgICAqIHRoZXkgYnViYmxlIHRvIGRvY3VtZW50LlxuXHQgICAq
XG5cdCAgICogQHBhcmFtIHtzdHJpbmd9IHJlZ2lzdHJhdGlvbk5hbWUgTmFtZSBvZiBsaXN0ZW5l
ciAoZS5nLiBgb25DbGlja2ApLlxuXHQgICAqIEBwYXJhbSB7b2JqZWN0fSBjb250ZW50RG9jdW1l
bnRIYW5kbGUgRG9jdW1lbnQgd2hpY2ggb3ducyB0aGUgY29udGFpbmVyXG5cdCAgICovXG5cdCAg
bGlzdGVuVG86IGZ1bmN0aW9uIChyZWdpc3RyYXRpb25OYW1lLCBjb250ZW50RG9jdW1lbnRIYW5k
bGUpIHtcblx0ICAgIHZhciBtb3VudEF0ID0gY29udGVudERvY3VtZW50SGFuZGxlO1xuXHQgICAg
dmFyIGlzTGlzdGVuaW5nID0gZ2V0TGlzdGVuaW5nRm9yRG9jdW1lbnQobW91bnRBdCk7XG5cdCAg
ICB2YXIgZGVwZW5kZW5jaWVzID0gRXZlbnRQbHVnaW5SZWdpc3RyeS5yZWdpc3RyYXRpb25OYW1l
RGVwZW5kZW5jaWVzW3JlZ2lzdHJhdGlvbk5hbWVdO1xuXHRcblx0ICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgZGVwZW5kZW5jaWVzLmxlbmd0aDsgaSsrKSB7XG5cdCAgICAgIHZhciBkZXBlbmRlbmN5
ID0gZGVwZW5kZW5jaWVzW2ldO1xuXHQgICAgICBpZiAoIShpc0xpc3RlbmluZy5oYXNPd25Qcm9w
ZXJ0eShkZXBlbmRlbmN5KSAmJiBpc0xpc3RlbmluZ1tkZXBlbmRlbmN5XSkpIHtcblx0ICAgICAg
ICBpZiAoZGVwZW5kZW5jeSA9PT0gJ3RvcFdoZWVsJykge1xuXHQgICAgICAgICAgaWYgKGlzRXZl
bnRTdXBwb3J0ZWQoJ3doZWVsJykpIHtcblx0ICAgICAgICAgICAgUmVhY3RCcm93c2VyRXZlbnRF
bWl0dGVyLlJlYWN0RXZlbnRMaXN0ZW5lci50cmFwQnViYmxlZEV2ZW50KCd0b3BXaGVlbCcsICd3
aGVlbCcsIG1vdW50QXQpO1xuXHQgICAgICAgICAgfSBlbHNlIGlmIChpc0V2ZW50U3VwcG9ydGVk
KCdtb3VzZXdoZWVsJykpIHtcblx0ICAgICAgICAgICAgUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVy
LlJlYWN0RXZlbnRMaXN0ZW5lci50cmFwQnViYmxlZEV2ZW50KCd0b3BXaGVlbCcsICdtb3VzZXdo
ZWVsJywgbW91bnRBdCk7XG5cdCAgICAgICAgICB9IGVsc2Uge1xuXHQgICAgICAgICAgICAvLyBG
aXJlZm94IG5lZWRzIHRvIGNhcHR1cmUgYSBkaWZmZXJlbnQgbW91c2Ugc2Nyb2xsIGV2ZW50Llxu
XHQgICAgICAgICAgICAvLyBAc2VlIGh0dHA6Ly93d3cucXVpcmtzbW9kZS5vcmcvZG9tL2V2ZW50
cy90ZXN0cy9zY3JvbGwuaHRtbFxuXHQgICAgICAgICAgICBSZWFjdEJyb3dzZXJFdmVudEVtaXR0
ZXIuUmVhY3RFdmVudExpc3RlbmVyLnRyYXBCdWJibGVkRXZlbnQoJ3RvcFdoZWVsJywgJ0RPTU1v
dXNlU2Nyb2xsJywgbW91bnRBdCk7XG5cdCAgICAgICAgICB9XG5cdCAgICAgICAgfSBlbHNlIGlm
IChkZXBlbmRlbmN5ID09PSAndG9wU2Nyb2xsJykge1xuXHQgICAgICAgICAgaWYgKGlzRXZlbnRT
dXBwb3J0ZWQoJ3Njcm9sbCcsIHRydWUpKSB7XG5cdCAgICAgICAgICAgIFJlYWN0QnJvd3NlckV2
ZW50RW1pdHRlci5SZWFjdEV2ZW50TGlzdGVuZXIudHJhcENhcHR1cmVkRXZlbnQoJ3RvcFNjcm9s
bCcsICdzY3JvbGwnLCBtb3VudEF0KTtcblx0ICAgICAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAg
ICAgIFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlci5SZWFjdEV2ZW50TGlzdGVuZXIudHJhcEJ1YmJs
ZWRFdmVudCgndG9wU2Nyb2xsJywgJ3Njcm9sbCcsIFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlci5S
ZWFjdEV2ZW50TGlzdGVuZXIuV0lORE9XX0hBTkRMRSk7XG5cdCAgICAgICAgICB9XG5cdCAgICAg
ICAgfSBlbHNlIGlmIChkZXBlbmRlbmN5ID09PSAndG9wRm9jdXMnIHx8IGRlcGVuZGVuY3kgPT09
ICd0b3BCbHVyJykge1xuXHQgICAgICAgICAgaWYgKGlzRXZlbnRTdXBwb3J0ZWQoJ2ZvY3VzJywg
dHJ1ZSkpIHtcblx0ICAgICAgICAgICAgUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLlJlYWN0RXZl
bnRMaXN0ZW5lci50cmFwQ2FwdHVyZWRFdmVudCgndG9wRm9jdXMnLCAnZm9jdXMnLCBtb3VudEF0
KTtcblx0ICAgICAgICAgICAgUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLlJlYWN0RXZlbnRMaXN0
ZW5lci50cmFwQ2FwdHVyZWRFdmVudCgndG9wQmx1cicsICdibHVyJywgbW91bnRBdCk7XG5cdCAg
ICAgICAgICB9IGVsc2UgaWYgKGlzRXZlbnRTdXBwb3J0ZWQoJ2ZvY3VzaW4nKSkge1xuXHQgICAg
ICAgICAgICAvLyBJRSBoYXMgYGZvY3VzaW5gIGFuZCBgZm9jdXNvdXRgIGV2ZW50cyB3aGljaCBi
dWJibGUuXG5cdCAgICAgICAgICAgIC8vIEBzZWUgaHR0cDovL3d3dy5xdWlya3Ntb2RlLm9yZy9i
bG9nL2FyY2hpdmVzLzIwMDgvMDQvZGVsZWdhdGluZ190aGUuaHRtbFxuXHQgICAgICAgICAgICBS
ZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIuUmVhY3RFdmVudExpc3RlbmVyLnRyYXBCdWJibGVkRXZl
bnQoJ3RvcEZvY3VzJywgJ2ZvY3VzaW4nLCBtb3VudEF0KTtcblx0ICAgICAgICAgICAgUmVhY3RC
cm93c2VyRXZlbnRFbWl0dGVyLlJlYWN0RXZlbnRMaXN0ZW5lci50cmFwQnViYmxlZEV2ZW50KCd0
b3BCbHVyJywgJ2ZvY3Vzb3V0JywgbW91bnRBdCk7XG5cdCAgICAgICAgICB9XG5cdFxuXHQgICAg
ICAgICAgLy8gdG8gbWFrZSBzdXJlIGJsdXIgYW5kIGZvY3VzIGV2ZW50IGxpc3RlbmVycyBhcmUg
b25seSBhdHRhY2hlZCBvbmNlXG5cdCAgICAgICAgICBpc0xpc3RlbmluZy50b3BCbHVyID0gdHJ1
ZTtcblx0ICAgICAgICAgIGlzTGlzdGVuaW5nLnRvcEZvY3VzID0gdHJ1ZTtcblx0ICAgICAgICB9
IGVsc2UgaWYgKHRvcEV2ZW50TWFwcGluZy5oYXNPd25Qcm9wZXJ0eShkZXBlbmRlbmN5KSkge1xu
XHQgICAgICAgICAgUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLlJlYWN0RXZlbnRMaXN0ZW5lci50
cmFwQnViYmxlZEV2ZW50KGRlcGVuZGVuY3ksIHRvcEV2ZW50TWFwcGluZ1tkZXBlbmRlbmN5XSwg
bW91bnRBdCk7XG5cdCAgICAgICAgfVxuXHRcblx0ICAgICAgICBpc0xpc3RlbmluZ1tkZXBlbmRl
bmN5XSA9IHRydWU7XG5cdCAgICAgIH1cblx0ICAgIH1cblx0ICB9LFxuXHRcblx0ICB0cmFwQnVi
YmxlZEV2ZW50OiBmdW5jdGlvbiAodG9wTGV2ZWxUeXBlLCBoYW5kbGVyQmFzZU5hbWUsIGhhbmRs
ZSkge1xuXHQgICAgcmV0dXJuIFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlci5SZWFjdEV2ZW50TGlz
dGVuZXIudHJhcEJ1YmJsZWRFdmVudCh0b3BMZXZlbFR5cGUsIGhhbmRsZXJCYXNlTmFtZSwgaGFu
ZGxlKTtcblx0ICB9LFxuXHRcblx0ICB0cmFwQ2FwdHVyZWRFdmVudDogZnVuY3Rpb24gKHRvcExl
dmVsVHlwZSwgaGFuZGxlckJhc2VOYW1lLCBoYW5kbGUpIHtcblx0ICAgIHJldHVybiBSZWFjdEJy
b3dzZXJFdmVudEVtaXR0ZXIuUmVhY3RFdmVudExpc3RlbmVyLnRyYXBDYXB0dXJlZEV2ZW50KHRv
cExldmVsVHlwZSwgaGFuZGxlckJhc2VOYW1lLCBoYW5kbGUpO1xuXHQgIH0sXG5cdFxuXHQgIC8q
KlxuXHQgICAqIFByb3RlY3QgYWdhaW5zdCBkb2N1bWVudC5jcmVhdGVFdmVudCgpIHJldHVybmlu
ZyBudWxsXG5cdCAgICogU29tZSBwb3B1cCBibG9ja2VyIGV4dGVuc2lvbnMgYXBwZWFyIHRvIGRv
IHRoaXM6XG5cdCAgICogaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0L2lzc3Vlcy82
ODg3XG5cdCAgICovXG5cdCAgc3VwcG9ydHNFdmVudFBhZ2VYWTogZnVuY3Rpb24gKCkge1xuXHQg
ICAgaWYgKCFkb2N1bWVudC5jcmVhdGVFdmVudCkge1xuXHQgICAgICByZXR1cm4gZmFsc2U7XG5c
dCAgICB9XG5cdCAgICB2YXIgZXYgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgnTW91c2VFdmVudCcp
O1xuXHQgICAgcmV0dXJuIGV2ICE9IG51bGwgJiYgJ3BhZ2VYJyBpbiBldjtcblx0ICB9LFxuXHRc
blx0ICAvKipcblx0ICAgKiBMaXN0ZW5zIHRvIHdpbmRvdyBzY3JvbGwgYW5kIHJlc2l6ZSBldmVu
dHMuIFdlIGNhY2hlIHNjcm9sbCB2YWx1ZXMgc28gdGhhdFxuXHQgICAqIGFwcGxpY2F0aW9uIGNv
ZGUgY2FuIGFjY2VzcyB0aGVtIHdpdGhvdXQgdHJpZ2dlcmluZyByZWZsb3dzLlxuXHQgICAqXG5c
dCAgICogVmlld3BvcnRNZXRyaWNzIGlzIG9ubHkgdXNlZCBieSBTeW50aGV0aWNNb3VzZS9Ub3Vj
aEV2ZW50IGFuZCBvbmx5IHdoZW5cblx0ICAgKiBwYWdlWC9wYWdlWSBpc24ndCBzdXBwb3J0ZWQg
KGxlZ2FjeSBicm93c2VycykuXG5cdCAgICpcblx0ICAgKiBOT1RFOiBTY3JvbGwgZXZlbnRzIGRv
IG5vdCBidWJibGUuXG5cdCAgICpcblx0ICAgKiBAc2VlIGh0dHA6Ly93d3cucXVpcmtzbW9kZS5v
cmcvZG9tL2V2ZW50cy9zY3JvbGwuaHRtbFxuXHQgICAqL1xuXHQgIGVuc3VyZVNjcm9sbFZhbHVl
TW9uaXRvcmluZzogZnVuY3Rpb24gKCkge1xuXHQgICAgaWYgKGhhc0V2ZW50UGFnZVhZID09PSB1
bmRlZmluZWQpIHtcblx0ICAgICAgaGFzRXZlbnRQYWdlWFkgPSBSZWFjdEJyb3dzZXJFdmVudEVt
aXR0ZXIuc3VwcG9ydHNFdmVudFBhZ2VYWSgpO1xuXHQgICAgfVxuXHQgICAgaWYgKCFoYXNFdmVu
dFBhZ2VYWSAmJiAhaXNNb25pdG9yaW5nU2Nyb2xsVmFsdWUpIHtcblx0ICAgICAgdmFyIHJlZnJl
c2ggPSBWaWV3cG9ydE1ldHJpY3MucmVmcmVzaFNjcm9sbFZhbHVlcztcblx0ICAgICAgUmVhY3RC
cm93c2VyRXZlbnRFbWl0dGVyLlJlYWN0RXZlbnRMaXN0ZW5lci5tb25pdG9yU2Nyb2xsVmFsdWUo
cmVmcmVzaCk7XG5cdCAgICAgIGlzTW9uaXRvcmluZ1Njcm9sbFZhbHVlID0gdHJ1ZTtcblx0ICAg
IH1cblx0ICB9XG5cdH0pO1xuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBSZWFjdEJyb3dzZXJFdmVu
dEVtaXR0ZXI7XG5cbi8qKiovIH0sXG4vKiAyNiAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBl
eHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAy
MDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5c
dCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHls
ZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGly
ZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2Yg
cGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2Ft
ZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqL1xuXHRcblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0dmFy
IFN5bnRoZXRpY1VJRXZlbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIyKTtcblx0dmFyIFZpZXdw
b3J0TWV0cmljcyA9IF9fd2VicGFja19yZXF1aXJlX18oNjkpO1xuXHRcblx0dmFyIGdldEV2ZW50
TW9kaWZpZXJTdGF0ZSA9IF9fd2VicGFja19yZXF1aXJlX18oNDUpO1xuXHRcblx0LyoqXG5cdCAq
IEBpbnRlcmZhY2UgTW91c2VFdmVudFxuXHQgKiBAc2VlIGh0dHA6Ly93d3cudzMub3JnL1RSL0RP
TS1MZXZlbC0zLUV2ZW50cy9cblx0ICovXG5cdHZhciBNb3VzZUV2ZW50SW50ZXJmYWNlID0ge1xu
XHQgIHNjcmVlblg6IG51bGwsXG5cdCAgc2NyZWVuWTogbnVsbCxcblx0ICBjbGllbnRYOiBudWxs
LFxuXHQgIGNsaWVudFk6IG51bGwsXG5cdCAgY3RybEtleTogbnVsbCxcblx0ICBzaGlmdEtleTog
bnVsbCxcblx0ICBhbHRLZXk6IG51bGwsXG5cdCAgbWV0YUtleTogbnVsbCxcblx0ICBnZXRNb2Rp
ZmllclN0YXRlOiBnZXRFdmVudE1vZGlmaWVyU3RhdGUsXG5cdCAgYnV0dG9uOiBmdW5jdGlvbiAo
ZXZlbnQpIHtcblx0ICAgIC8vIFdlYmtpdCwgRmlyZWZveCwgSUU5K1xuXHQgICAgLy8gd2hpY2g6
ICAxIDIgM1xuXHQgICAgLy8gYnV0dG9uOiAwIDEgMiAoc3RhbmRhcmQpXG5cdCAgICB2YXIgYnV0
dG9uID0gZXZlbnQuYnV0dG9uO1xuXHQgICAgaWYgKCd3aGljaCcgaW4gZXZlbnQpIHtcblx0ICAg
ICAgcmV0dXJuIGJ1dHRvbjtcblx0ICAgIH1cblx0ICAgIC8vIElFPDlcblx0ICAgIC8vIHdoaWNo
OiAgdW5kZWZpbmVkXG5cdCAgICAvLyBidXR0b246IDAgMCAwXG5cdCAgICAvLyBidXR0b246IDEg
NCAyIChvbm1vdXNldXApXG5cdCAgICByZXR1cm4gYnV0dG9uID09PSAyID8gMiA6IGJ1dHRvbiA9
PT0gNCA/IDEgOiAwO1xuXHQgIH0sXG5cdCAgYnV0dG9uczogbnVsbCxcblx0ICByZWxhdGVkVGFy
Z2V0OiBmdW5jdGlvbiAoZXZlbnQpIHtcblx0ICAgIHJldHVybiBldmVudC5yZWxhdGVkVGFyZ2V0
IHx8IChldmVudC5mcm9tRWxlbWVudCA9PT0gZXZlbnQuc3JjRWxlbWVudCA/IGV2ZW50LnRvRWxl
bWVudCA6IGV2ZW50LmZyb21FbGVtZW50KTtcblx0ICB9LFxuXHQgIC8vIFwiUHJvcHJpZXRhcnlc
IiBJbnRlcmZhY2UuXG5cdCAgcGFnZVg6IGZ1bmN0aW9uIChldmVudCkge1xuXHQgICAgcmV0dXJu
ICdwYWdlWCcgaW4gZXZlbnQgPyBldmVudC5wYWdlWCA6IGV2ZW50LmNsaWVudFggKyBWaWV3cG9y
dE1ldHJpY3MuY3VycmVudFNjcm9sbExlZnQ7XG5cdCAgfSxcblx0ICBwYWdlWTogZnVuY3Rpb24g
KGV2ZW50KSB7XG5cdCAgICByZXR1cm4gJ3BhZ2VZJyBpbiBldmVudCA/IGV2ZW50LnBhZ2VZIDog
ZXZlbnQuY2xpZW50WSArIFZpZXdwb3J0TWV0cmljcy5jdXJyZW50U2Nyb2xsVG9wO1xuXHQgIH1c
blx0fTtcblx0XG5cdC8qKlxuXHQgKiBAcGFyYW0ge29iamVjdH0gZGlzcGF0Y2hDb25maWcgQ29u
ZmlndXJhdGlvbiB1c2VkIHRvIGRpc3BhdGNoIHRoaXMgZXZlbnQuXG5cdCAqIEBwYXJhbSB7c3Ry
aW5nfSBkaXNwYXRjaE1hcmtlciBNYXJrZXIgaWRlbnRpZnlpbmcgdGhlIGV2ZW50IHRhcmdldC5c
blx0ICogQHBhcmFtIHtvYmplY3R9IG5hdGl2ZUV2ZW50IE5hdGl2ZSBicm93c2VyIGV2ZW50Llxu
XHQgKiBAZXh0ZW5kcyB7U3ludGhldGljVUlFdmVudH1cblx0ICovXG5cdGZ1bmN0aW9uIFN5bnRo
ZXRpY01vdXNlRXZlbnQoZGlzcGF0Y2hDb25maWcsIGRpc3BhdGNoTWFya2VyLCBuYXRpdmVFdmVu
dCwgbmF0aXZlRXZlbnRUYXJnZXQpIHtcblx0ICByZXR1cm4gU3ludGhldGljVUlFdmVudC5jYWxs
KHRoaXMsIGRpc3BhdGNoQ29uZmlnLCBkaXNwYXRjaE1hcmtlciwgbmF0aXZlRXZlbnQsIG5hdGl2
ZUV2ZW50VGFyZ2V0KTtcblx0fVxuXHRcblx0U3ludGhldGljVUlFdmVudC5hdWdtZW50Q2xhc3Mo
U3ludGhldGljTW91c2VFdmVudCwgTW91c2VFdmVudEludGVyZmFjZSk7XG5cdFxuXHRtb2R1bGUu
ZXhwb3J0cyA9IFN5bnRoZXRpY01vdXNlRXZlbnQ7XG5cbi8qKiovIH0sXG4vKiAyNyAqL1xuLyoq
Ki8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0
LyoqXG5cdCAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFs
bCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5z
ZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNF
IGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0
aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBB
VEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqIFxuXHQgKi9cblx0
XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdHZhciBfcHJvZEludmFyaWFudCA9IF9fd2VicGFja19y
ZXF1aXJlX18oMyk7XG5cdFxuXHR2YXIgaW52YXJpYW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXygx
KTtcblx0XG5cdHZhciBPQlNFUlZFRF9FUlJPUiA9IHt9O1xuXHRcblx0LyoqXG5cdCAqIGBUcmFu
c2FjdGlvbmAgY3JlYXRlcyBhIGJsYWNrIGJveCB0aGF0IGlzIGFibGUgdG8gd3JhcCBhbnkgbWV0
aG9kIHN1Y2ggdGhhdFxuXHQgKiBjZXJ0YWluIGludmFyaWFudHMgYXJlIG1haW50YWluZWQgYmVm
b3JlIGFuZCBhZnRlciB0aGUgbWV0aG9kIGlzIGludm9rZWRcblx0ICogKEV2ZW4gaWYgYW4gZXhj
ZXB0aW9uIGlzIHRocm93biB3aGlsZSBpbnZva2luZyB0aGUgd3JhcHBlZCBtZXRob2QpLiBXaG9l
dmVyXG5cdCAqIGluc3RhbnRpYXRlcyBhIHRyYW5zYWN0aW9uIGNhbiBwcm92aWRlIGVuZm9yY2Vy
cyBvZiB0aGUgaW52YXJpYW50cyBhdFxuXHQgKiBjcmVhdGlvbiB0aW1lLiBUaGUgYFRyYW5zYWN0
aW9uYCBjbGFzcyBpdHNlbGYgd2lsbCBzdXBwbHkgb25lIGFkZGl0aW9uYWxcblx0ICogYXV0b21h
dGljIGludmFyaWFudCBmb3IgeW91IC0gdGhlIGludmFyaWFudCB0aGF0IGFueSB0cmFuc2FjdGlv
biBpbnN0YW5jZVxuXHQgKiBzaG91bGQgbm90IGJlIHJ1biB3aGlsZSBpdCBpcyBhbHJlYWR5IGJl
aW5nIHJ1bi4gWW91IHdvdWxkIHR5cGljYWxseSBjcmVhdGUgYVxuXHQgKiBzaW5nbGUgaW5zdGFu
Y2Ugb2YgYSBgVHJhbnNhY3Rpb25gIGZvciByZXVzZSBtdWx0aXBsZSB0aW1lcywgdGhhdCBwb3Rl
bnRpYWxseVxuXHQgKiBpcyB1c2VkIHRvIHdyYXAgc2V2ZXJhbCBkaWZmZXJlbnQgbWV0aG9kcy4g
V3JhcHBlcnMgYXJlIGV4dHJlbWVseSBzaW1wbGUgLVxuXHQgKiB0aGV5IG9ubHkgcmVxdWlyZSBp
bXBsZW1lbnRpbmcgdHdvIG1ldGhvZHMuXG5cdCAqXG5cdCAqIDxwcmU+XG5cdCAqICAgICAgICAg
ICAgICAgICAgICAgICB3cmFwcGVycyAoaW5qZWN0ZWQgYXQgY3JlYXRpb24gdGltZSlcblx0ICog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgICAgICAgICtcblx0ICogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgIHxcblx0ICogICAgICAg
ICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLXwtLS0tLS0tLS0tLS0tLStc
blx0ICogICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgIHYgICAgICAgIHwgICAg
ICAgICAgICAgIHxcblx0ICogICAgICAgICAgICAgICAgICAgIHwgICAgICArLS0tLS0tLS0tLS0t
LS0tKyAgIHwgICAgICAgICAgICAgIHxcblx0ICogICAgICAgICAgICAgICAgICAgIHwgICArLS18
ICAgIHdyYXBwZXIxICAgfC0tLXwtLS0tKyAgICAgICAgIHxcblx0ICogICAgICAgICAgICAgICAg
ICAgIHwgICB8ICArLS0tLS0tLS0tLS0tLS0tKyAgIHYgICAgfCAgICAgICAgIHxcblx0ICogICAg
ICAgICAgICAgICAgICAgIHwgICB8ICAgICAgICAgICstLS0tLS0tLS0tLS0tKyAgfCAgICAgICAg
IHxcblx0ICogICAgICAgICAgICAgICAgICAgIHwgICB8ICAgICArLS0tLXwgICB3cmFwcGVyMiAg
fC0tLS0tLS0tKyAgIHxcblx0ICogICAgICAgICAgICAgICAgICAgIHwgICB8ICAgICB8ICAgICst
LS0tLS0tLS0tLS0tKyAgfCAgICAgfCAgIHxcblx0ICogICAgICAgICAgICAgICAgICAgIHwgICB8
ICAgICB8ICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCAgIHxcblx0ICogICAgICAgICAgICAg
ICAgICAgIHwgICB2ICAgICB2ICAgICAgICAgICAgICAgICAgICAgdiAgICAgdiAgIHwgd3JhcHBl
clxuXHQgKiAgICAgICAgICAgICAgICAgICAgfCArLS0tKyArLS0tKyAgICstLS0tLS0tLS0rICAg
Ky0tLSsgKy0tLSsgfCBpbnZhcmlhbnRzXG5cdCAqIHBlcmZvcm0oYW55TWV0aG9kKSB8IHwgICB8
IHwgICB8ICAgfCAgICAgICAgIHwgICB8ICAgfCB8ICAgfCB8IG1haW50YWluZWRcblx0ICogKy0t
LS0tLS0tLS0tLS0tLS0tPnwtfC0tLXwtfC0tLXwtLT58YW55TWV0aG9kfC0tLXwtLS18LXwtLS18
LXwtLS0tLS0tLT5cblx0ICogICAgICAgICAgICAgICAgICAgIHwgfCAgIHwgfCAgIHwgICB8ICAg
ICAgICAgfCAgIHwgICB8IHwgICB8IHxcblx0ICogICAgICAgICAgICAgICAgICAgIHwgfCAgIHwg
fCAgIHwgICB8ICAgICAgICAgfCAgIHwgICB8IHwgICB8IHxcblx0ICogICAgICAgICAgICAgICAg
ICAgIHwgfCAgIHwgfCAgIHwgICB8ICAgICAgICAgfCAgIHwgICB8IHwgICB8IHxcblx0ICogICAg
ICAgICAgICAgICAgICAgIHwgKy0tLSsgKy0tLSsgICArLS0tLS0tLS0tKyAgICstLS0rICstLS0r
IHxcblx0ICogICAgICAgICAgICAgICAgICAgIHwgIGluaXRpYWxpemUgICAgICAgICAgICAgICAg
ICAgIGNsb3NlICAgIHxcblx0ICogICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcblx0ICogPC9wcmU+XG5cdCAqXG5cdCAqIFVzZSBj
YXNlczpcblx0ICogLSBQcmVzZXJ2aW5nIHRoZSBpbnB1dCBzZWxlY3Rpb24gcmFuZ2VzIGJlZm9y
ZS9hZnRlciByZWNvbmNpbGlhdGlvbi5cblx0ICogICBSZXN0b3Jpbmcgc2VsZWN0aW9uIGV2ZW4g
aW4gdGhlIGV2ZW50IG9mIGFuIHVuZXhwZWN0ZWQgZXJyb3IuXG5cdCAqIC0gRGVhY3RpdmF0aW5n
IGV2ZW50cyB3aGlsZSByZWFycmFuZ2luZyB0aGUgRE9NLCBwcmV2ZW50aW5nIGJsdXJzL2ZvY3Vz
ZXMsXG5cdCAqICAgd2hpbGUgZ3VhcmFudGVlaW5nIHRoYXQgYWZ0ZXJ3YXJkcywgdGhlIGV2ZW50
IHN5c3RlbSBpcyByZWFjdGl2YXRlZC5cblx0ICogLSBGbHVzaGluZyBhIHF1ZXVlIG9mIGNvbGxl
Y3RlZCBET00gbXV0YXRpb25zIHRvIHRoZSBtYWluIFVJIHRocmVhZCBhZnRlciBhXG5cdCAqICAg
cmVjb25jaWxpYXRpb24gdGFrZXMgcGxhY2UgaW4gYSB3b3JrZXIgdGhyZWFkLlxuXHQgKiAtIElu
dm9raW5nIGFueSBjb2xsZWN0ZWQgYGNvbXBvbmVudERpZFVwZGF0ZWAgY2FsbGJhY2tzIGFmdGVy
IHJlbmRlcmluZyBuZXdcblx0ICogICBjb250ZW50LlxuXHQgKiAtIChGdXR1cmUgdXNlIGNhc2Up
OiBXcmFwcGluZyBwYXJ0aWN1bGFyIGZsdXNoZXMgb2YgdGhlIGBSZWFjdFdvcmtlcmAgcXVldWVc
blx0ICogICB0byBwcmVzZXJ2ZSB0aGUgYHNjcm9sbFRvcGAgKGFuIGF1dG9tYXRpYyBzY3JvbGwg
YXdhcmUgRE9NKS5cblx0ICogLSAoRnV0dXJlIHVzZSBjYXNlKTogTGF5b3V0IGNhbGN1bGF0aW9u
cyBiZWZvcmUgYW5kIGFmdGVyIERPTSB1cGRhdGVzLlxuXHQgKlxuXHQgKiBUcmFuc2FjdGlvbmFs
IHBsdWdpbiBBUEk6XG5cdCAqIC0gQSBtb2R1bGUgdGhhdCBoYXMgYW4gYGluaXRpYWxpemVgIG1l
dGhvZCB0aGF0IHJldHVybnMgYW55IHByZWNvbXB1dGF0aW9uLlxuXHQgKiAtIGFuZCBhIGBjbG9z
ZWAgbWV0aG9kIHRoYXQgYWNjZXB0cyB0aGUgcHJlY29tcHV0YXRpb24uIGBjbG9zZWAgaXMgaW52
b2tlZFxuXHQgKiAgIHdoZW4gdGhlIHdyYXBwZWQgcHJvY2VzcyBpcyBjb21wbGV0ZWQsIG9yIGhh
cyBmYWlsZWQuXG5cdCAqXG5cdCAqIEBwYXJhbSB7QXJyYXk8VHJhbnNhY3Rpb25hbFdyYXBwZXI+
fSB0cmFuc2FjdGlvbldyYXBwZXIgV3JhcHBlciBtb2R1bGVzXG5cdCAqIHRoYXQgaW1wbGVtZW50
IGBpbml0aWFsaXplYCBhbmQgYGNsb3NlYC5cblx0ICogQHJldHVybiB7VHJhbnNhY3Rpb259IFNp
bmdsZSB0cmFuc2FjdGlvbiBmb3IgcmV1c2UgaW4gdGhyZWFkLlxuXHQgKlxuXHQgKiBAY2xhc3Mg
VHJhbnNhY3Rpb25cblx0ICovXG5cdHZhciBUcmFuc2FjdGlvbkltcGwgPSB7XG5cdCAgLyoqXG5c
dCAgICogU2V0cyB1cCB0aGlzIGluc3RhbmNlIHNvIHRoYXQgaXQgaXMgcHJlcGFyZWQgZm9yIGNv
bGxlY3RpbmcgbWV0cmljcy4gRG9lc1xuXHQgICAqIHNvIHN1Y2ggdGhhdCB0aGlzIHNldHVwIG1l
dGhvZCBtYXkgYmUgdXNlZCBvbiBhbiBpbnN0YW5jZSB0aGF0IGlzIGFscmVhZHlcblx0ICAgKiBp
bml0aWFsaXplZCwgaW4gYSB3YXkgdGhhdCBkb2VzIG5vdCBjb25zdW1lIGFkZGl0aW9uYWwgbWVt
b3J5IHVwb24gcmV1c2UuXG5cdCAgICogVGhhdCBjYW4gYmUgdXNlZnVsIGlmIHlvdSBkZWNpZGUg
dG8gbWFrZSB5b3VyIHN1YmNsYXNzIG9mIHRoaXMgbWl4aW4gYVxuXHQgICAqIFwiUG9vbGVkQ2xh
c3NcIi5cblx0ICAgKi9cblx0ICByZWluaXRpYWxpemVUcmFuc2FjdGlvbjogZnVuY3Rpb24gKCkg
e1xuXHQgICAgdGhpcy50cmFuc2FjdGlvbldyYXBwZXJzID0gdGhpcy5nZXRUcmFuc2FjdGlvbldy
YXBwZXJzKCk7XG5cdCAgICBpZiAodGhpcy53cmFwcGVySW5pdERhdGEpIHtcblx0ICAgICAgdGhp
cy53cmFwcGVySW5pdERhdGEubGVuZ3RoID0gMDtcblx0ICAgIH0gZWxzZSB7XG5cdCAgICAgIHRo
aXMud3JhcHBlckluaXREYXRhID0gW107XG5cdCAgICB9XG5cdCAgICB0aGlzLl9pc0luVHJhbnNh
Y3Rpb24gPSBmYWxzZTtcblx0ICB9LFxuXHRcblx0ICBfaXNJblRyYW5zYWN0aW9uOiBmYWxzZSxc
blx0XG5cdCAgLyoqXG5cdCAgICogQGFic3RyYWN0XG5cdCAgICogQHJldHVybiB7QXJyYXk8VHJh
bnNhY3Rpb25XcmFwcGVyPn0gQXJyYXkgb2YgdHJhbnNhY3Rpb24gd3JhcHBlcnMuXG5cdCAgICov
XG5cdCAgZ2V0VHJhbnNhY3Rpb25XcmFwcGVyczogbnVsbCxcblx0XG5cdCAgaXNJblRyYW5zYWN0
aW9uOiBmdW5jdGlvbiAoKSB7XG5cdCAgICByZXR1cm4gISF0aGlzLl9pc0luVHJhbnNhY3Rpb247
XG5cdCAgfSxcblx0XG5cdCAgLyogZXNsaW50LWRpc2FibGUgc3BhY2UtYmVmb3JlLWZ1bmN0aW9u
LXBhcmVuICovXG5cdFxuXHQgIC8qKlxuXHQgICAqIEV4ZWN1dGVzIHRoZSBmdW5jdGlvbiB3aXRo
aW4gYSBzYWZldHkgd2luZG93LiBVc2UgdGhpcyBmb3IgdGhlIHRvcCBsZXZlbFxuXHQgICAqIG1l
dGhvZHMgdGhhdCByZXN1bHQgaW4gbGFyZ2UgYW1vdW50cyBvZiBjb21wdXRhdGlvbi9tdXRhdGlv
bnMgdGhhdCB3b3VsZFxuXHQgICAqIG5lZWQgdG8gYmUgc2FmZXR5IGNoZWNrZWQuIFRoZSBvcHRp
b25hbCBhcmd1bWVudHMgaGVscHMgcHJldmVudCB0aGUgbmVlZFxuXHQgICAqIHRvIGJpbmQgaW4g
bWFueSBjYXNlcy5cblx0ICAgKlxuXHQgICAqIEBwYXJhbSB7ZnVuY3Rpb259IG1ldGhvZCBNZW1i
ZXIgb2Ygc2NvcGUgdG8gY2FsbC5cblx0ICAgKiBAcGFyYW0ge09iamVjdH0gc2NvcGUgU2NvcGUg
dG8gaW52b2tlIGZyb20uXG5cdCAgICogQHBhcmFtIHtPYmplY3Q/PX0gYSBBcmd1bWVudCB0byBw
YXNzIHRvIHRoZSBtZXRob2QuXG5cdCAgICogQHBhcmFtIHtPYmplY3Q/PX0gYiBBcmd1bWVudCB0
byBwYXNzIHRvIHRoZSBtZXRob2QuXG5cdCAgICogQHBhcmFtIHtPYmplY3Q/PX0gYyBBcmd1bWVu
dCB0byBwYXNzIHRvIHRoZSBtZXRob2QuXG5cdCAgICogQHBhcmFtIHtPYmplY3Q/PX0gZCBBcmd1
bWVudCB0byBwYXNzIHRvIHRoZSBtZXRob2QuXG5cdCAgICogQHBhcmFtIHtPYmplY3Q/PX0gZSBB
cmd1bWVudCB0byBwYXNzIHRvIHRoZSBtZXRob2QuXG5cdCAgICogQHBhcmFtIHtPYmplY3Q/PX0g
ZiBBcmd1bWVudCB0byBwYXNzIHRvIHRoZSBtZXRob2QuXG5cdCAgICpcblx0ICAgKiBAcmV0dXJu
IHsqfSBSZXR1cm4gdmFsdWUgZnJvbSBgbWV0aG9kYC5cblx0ICAgKi9cblx0ICBwZXJmb3JtOiBm
dW5jdGlvbiAobWV0aG9kLCBzY29wZSwgYSwgYiwgYywgZCwgZSwgZikge1xuXHQgICAgLyogZXNs
aW50LWVuYWJsZSBzcGFjZS1iZWZvcmUtZnVuY3Rpb24tcGFyZW4gKi9cblx0ICAgICEhdGhpcy5p
c0luVHJhbnNhY3Rpb24oKSA/ICBmYWxzZSA/IGludmFyaWFudChmYWxzZSwgJ1RyYW5zYWN0aW9u
LnBlcmZvcm0oLi4uKTogQ2Fubm90IGluaXRpYWxpemUgYSB0cmFuc2FjdGlvbiB3aGVuIHRoZXJl
IGlzIGFscmVhZHkgYW4gb3V0c3RhbmRpbmcgdHJhbnNhY3Rpb24uJykgOiBfcHJvZEludmFyaWFu
dCgnMjcnKSA6IHZvaWQgMDtcblx0ICAgIHZhciBlcnJvclRocm93bjtcblx0ICAgIHZhciByZXQ7
XG5cdCAgICB0cnkge1xuXHQgICAgICB0aGlzLl9pc0luVHJhbnNhY3Rpb24gPSB0cnVlO1xuXHQg
ICAgICAvLyBDYXRjaGluZyBlcnJvcnMgbWFrZXMgZGVidWdnaW5nIG1vcmUgZGlmZmljdWx0LCBz
byB3ZSBzdGFydCB3aXRoXG5cdCAgICAgIC8vIGVycm9yVGhyb3duIHNldCB0byB0cnVlIGJlZm9y
ZSBzZXR0aW5nIGl0IHRvIGZhbHNlIGFmdGVyIGNhbGxpbmdcblx0ICAgICAgLy8gY2xvc2UgLS0g
aWYgaXQncyBzdGlsbCBzZXQgdG8gdHJ1ZSBpbiB0aGUgZmluYWxseSBibG9jaywgaXQgbWVhbnNc
blx0ICAgICAgLy8gb25lIG9mIHRoZXNlIGNhbGxzIHRocmV3LlxuXHQgICAgICBlcnJvclRocm93
biA9IHRydWU7XG5cdCAgICAgIHRoaXMuaW5pdGlhbGl6ZUFsbCgwKTtcblx0ICAgICAgcmV0ID0g
bWV0aG9kLmNhbGwoc2NvcGUsIGEsIGIsIGMsIGQsIGUsIGYpO1xuXHQgICAgICBlcnJvclRocm93
biA9IGZhbHNlO1xuXHQgICAgfSBmaW5hbGx5IHtcblx0ICAgICAgdHJ5IHtcblx0ICAgICAgICBp
ZiAoZXJyb3JUaHJvd24pIHtcblx0ICAgICAgICAgIC8vIElmIGBtZXRob2RgIHRocm93cywgcHJl
ZmVyIHRvIHNob3cgdGhhdCBzdGFjayB0cmFjZSBvdmVyIGFueSB0aHJvd25cblx0ICAgICAgICAg
IC8vIGJ5IGludm9raW5nIGBjbG9zZUFsbGAuXG5cdCAgICAgICAgICB0cnkge1xuXHQgICAgICAg
ICAgICB0aGlzLmNsb3NlQWxsKDApO1xuXHQgICAgICAgICAgfSBjYXRjaCAoZXJyKSB7fVxuXHQg
ICAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgICAvLyBTaW5jZSBgbWV0aG9kYCBkaWRuJ3QgdGhy
b3csIHdlIGRvbid0IHdhbnQgdG8gc2lsZW5jZSB0aGUgZXhjZXB0aW9uXG5cdCAgICAgICAgICAv
LyBoZXJlLlxuXHQgICAgICAgICAgdGhpcy5jbG9zZUFsbCgwKTtcblx0ICAgICAgICB9XG5cdCAg
ICAgIH0gZmluYWxseSB7XG5cdCAgICAgICAgdGhpcy5faXNJblRyYW5zYWN0aW9uID0gZmFsc2U7
XG5cdCAgICAgIH1cblx0ICAgIH1cblx0ICAgIHJldHVybiByZXQ7XG5cdCAgfSxcblx0XG5cdCAg
aW5pdGlhbGl6ZUFsbDogZnVuY3Rpb24gKHN0YXJ0SW5kZXgpIHtcblx0ICAgIHZhciB0cmFuc2Fj
dGlvbldyYXBwZXJzID0gdGhpcy50cmFuc2FjdGlvbldyYXBwZXJzO1xuXHQgICAgZm9yICh2YXIg
aSA9IHN0YXJ0SW5kZXg7IGkgPCB0cmFuc2FjdGlvbldyYXBwZXJzLmxlbmd0aDsgaSsrKSB7XG5c
dCAgICAgIHZhciB3cmFwcGVyID0gdHJhbnNhY3Rpb25XcmFwcGVyc1tpXTtcblx0ICAgICAgdHJ5
IHtcblx0ICAgICAgICAvLyBDYXRjaGluZyBlcnJvcnMgbWFrZXMgZGVidWdnaW5nIG1vcmUgZGlm
ZmljdWx0LCBzbyB3ZSBzdGFydCB3aXRoIHRoZVxuXHQgICAgICAgIC8vIE9CU0VSVkVEX0VSUk9S
IHN0YXRlIGJlZm9yZSBvdmVyd3JpdGluZyBpdCB3aXRoIHRoZSByZWFsIHJldHVybiB2YWx1ZVxu
XHQgICAgICAgIC8vIG9mIGluaXRpYWxpemUgLS0gaWYgaXQncyBzdGlsbCBzZXQgdG8gT0JTRVJW
RURfRVJST1IgaW4gdGhlIGZpbmFsbHlcblx0ICAgICAgICAvLyBibG9jaywgaXQgbWVhbnMgd3Jh
cHBlci5pbml0aWFsaXplIHRocmV3LlxuXHQgICAgICAgIHRoaXMud3JhcHBlckluaXREYXRhW2ld
ID0gT0JTRVJWRURfRVJST1I7XG5cdCAgICAgICAgdGhpcy53cmFwcGVySW5pdERhdGFbaV0gPSB3
cmFwcGVyLmluaXRpYWxpemUgPyB3cmFwcGVyLmluaXRpYWxpemUuY2FsbCh0aGlzKSA6IG51bGw7
XG5cdCAgICAgIH0gZmluYWxseSB7XG5cdCAgICAgICAgaWYgKHRoaXMud3JhcHBlckluaXREYXRh
W2ldID09PSBPQlNFUlZFRF9FUlJPUikge1xuXHQgICAgICAgICAgLy8gVGhlIGluaXRpYWxpemVy
IGZvciB3cmFwcGVyIGkgdGhyZXcgYW4gZXJyb3I7IGluaXRpYWxpemUgdGhlXG5cdCAgICAgICAg
ICAvLyByZW1haW5pbmcgd3JhcHBlcnMgYnV0IHNpbGVuY2UgYW55IGV4Y2VwdGlvbnMgZnJvbSB0
aGVtIHRvIGVuc3VyZVxuXHQgICAgICAgICAgLy8gdGhhdCB0aGUgZmlyc3QgZXJyb3IgaXMgdGhl
IG9uZSB0byBidWJibGUgdXAuXG5cdCAgICAgICAgICB0cnkge1xuXHQgICAgICAgICAgICB0aGlz
LmluaXRpYWxpemVBbGwoaSArIDEpO1xuXHQgICAgICAgICAgfSBjYXRjaCAoZXJyKSB7fVxuXHQg
ICAgICAgIH1cblx0ICAgICAgfVxuXHQgICAgfVxuXHQgIH0sXG5cdFxuXHQgIC8qKlxuXHQgICAq
IEludm9rZXMgZWFjaCBvZiBgdGhpcy50cmFuc2FjdGlvbldyYXBwZXJzLmNsb3NlW2ldYCBmdW5j
dGlvbnMsIHBhc3NpbmcgaW50b1xuXHQgICAqIHRoZW0gdGhlIHJlc3BlY3RpdmUgcmV0dXJuIHZh
bHVlcyBvZiBgdGhpcy50cmFuc2FjdGlvbldyYXBwZXJzLmluaXRbaV1gXG5cdCAgICogKGBjbG9z
ZWBycyB0aGF0IGNvcnJlc3BvbmQgdG8gaW5pdGlhbGl6ZXJzIHRoYXQgZmFpbGVkIHdpbGwgbm90
IGJlXG5cdCAgICogaW52b2tlZCkuXG5cdCAgICovXG5cdCAgY2xvc2VBbGw6IGZ1bmN0aW9uIChz
dGFydEluZGV4KSB7XG5cdCAgICAhdGhpcy5pc0luVHJhbnNhY3Rpb24oKSA/ICBmYWxzZSA/IGlu
dmFyaWFudChmYWxzZSwgJ1RyYW5zYWN0aW9uLmNsb3NlQWxsKCk6IENhbm5vdCBjbG9zZSB0cmFu
c2FjdGlvbiB3aGVuIG5vbmUgYXJlIG9wZW4uJykgOiBfcHJvZEludmFyaWFudCgnMjgnKSA6IHZv
aWQgMDtcblx0ICAgIHZhciB0cmFuc2FjdGlvbldyYXBwZXJzID0gdGhpcy50cmFuc2FjdGlvbldy
YXBwZXJzO1xuXHQgICAgZm9yICh2YXIgaSA9IHN0YXJ0SW5kZXg7IGkgPCB0cmFuc2FjdGlvbldy
YXBwZXJzLmxlbmd0aDsgaSsrKSB7XG5cdCAgICAgIHZhciB3cmFwcGVyID0gdHJhbnNhY3Rpb25X
cmFwcGVyc1tpXTtcblx0ICAgICAgdmFyIGluaXREYXRhID0gdGhpcy53cmFwcGVySW5pdERhdGFb
aV07XG5cdCAgICAgIHZhciBlcnJvclRocm93bjtcblx0ICAgICAgdHJ5IHtcblx0ICAgICAgICAv
LyBDYXRjaGluZyBlcnJvcnMgbWFrZXMgZGVidWdnaW5nIG1vcmUgZGlmZmljdWx0LCBzbyB3ZSBz
dGFydCB3aXRoXG5cdCAgICAgICAgLy8gZXJyb3JUaHJvd24gc2V0IHRvIHRydWUgYmVmb3JlIHNl
dHRpbmcgaXQgdG8gZmFsc2UgYWZ0ZXIgY2FsbGluZ1xuXHQgICAgICAgIC8vIGNsb3NlIC0tIGlm
IGl0J3Mgc3RpbGwgc2V0IHRvIHRydWUgaW4gdGhlIGZpbmFsbHkgYmxvY2ssIGl0IG1lYW5zXG5c
dCAgICAgICAgLy8gd3JhcHBlci5jbG9zZSB0aHJldy5cblx0ICAgICAgICBlcnJvclRocm93biA9
IHRydWU7XG5cdCAgICAgICAgaWYgKGluaXREYXRhICE9PSBPQlNFUlZFRF9FUlJPUiAmJiB3cmFw
cGVyLmNsb3NlKSB7XG5cdCAgICAgICAgICB3cmFwcGVyLmNsb3NlLmNhbGwodGhpcywgaW5pdERh
dGEpO1xuXHQgICAgICAgIH1cblx0ICAgICAgICBlcnJvclRocm93biA9IGZhbHNlO1xuXHQgICAg
ICB9IGZpbmFsbHkge1xuXHQgICAgICAgIGlmIChlcnJvclRocm93bikge1xuXHQgICAgICAgICAg
Ly8gVGhlIGNsb3NlciBmb3Igd3JhcHBlciBpIHRocmV3IGFuIGVycm9yOyBjbG9zZSB0aGUgcmVt
YWluaW5nXG5cdCAgICAgICAgICAvLyB3cmFwcGVycyBidXQgc2lsZW5jZSBhbnkgZXhjZXB0aW9u
cyBmcm9tIHRoZW0gdG8gZW5zdXJlIHRoYXQgdGhlXG5cdCAgICAgICAgICAvLyBmaXJzdCBlcnJv
ciBpcyB0aGUgb25lIHRvIGJ1YmJsZSB1cC5cblx0ICAgICAgICAgIHRyeSB7XG5cdCAgICAgICAg
ICAgIHRoaXMuY2xvc2VBbGwoaSArIDEpO1xuXHQgICAgICAgICAgfSBjYXRjaCAoZSkge31cblx0
ICAgICAgICB9XG5cdCAgICAgIH1cblx0ICAgIH1cblx0ICAgIHRoaXMud3JhcHBlckluaXREYXRh
Lmxlbmd0aCA9IDA7XG5cdCAgfVxuXHR9O1xuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBUcmFuc2Fj
dGlvbkltcGw7XG5cbi8qKiovIH0sXG4vKiAyOCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBl
eHBvcnRzKSB7XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAyMDE2LXByZXNlbnQsIEZhY2Vib29r
LCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNl
IGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRo
ZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNl
IHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUg
Zm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5c
dCAqIEJhc2VkIG9uIHRoZSBlc2NhcGUtaHRtbCBsaWJyYXJ5LCB3aGljaCBpcyB1c2VkIHVuZGVy
IHRoZSBNSVQgTGljZW5zZSBiZWxvdzpcblx0ICpcblx0ICogQ29weXJpZ2h0IChjKSAyMDEyLTIw
MTMgVEogSG9sb3dheWNodWtcblx0ICogQ29weXJpZ2h0IChjKSAyMDE1IEFuZHJlYXMgTHViYmVc
blx0ICogQ29weXJpZ2h0IChjKSAyMDE1IFRpYW5jaGVuZyBcIlRpbW90aHlcIiBHdVxuXHQgKlxu
XHQgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55
IHBlcnNvbiBvYnRhaW5pbmdcblx0ICogYSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29j
aWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlXG5cdCAqICdTb2Z0d2FyZScpLCB0byBkZWFs
IGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmdcblx0ICogd2l0
aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBw
dWJsaXNoLFxuXHQgKiBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMg
b2YgdGhlIFNvZnR3YXJlLCBhbmQgdG9cblx0ICogcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUg
U29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvXG5cdCAqIHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9uczpcblx0ICpcblx0ICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2Ug
YW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmVcblx0ICogaW5jbHVkZWQgaW4gYWxs
IGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG5cdCAqXG5c
dCAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAnQVMgSVMnLCBXSVRIT1VUIFdBUlJBTlRZIE9G
IEFOWSBLSU5ELFxuXHQgKiBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJ
TUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0Zcblx0ICogTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULlxuXHQgKiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUg
Rk9SIEFOWVxuXHQgKiBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULFxuXHQgKiBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lO
RyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRVxuXHQgKiBTT0ZUV0FSRSBP
UiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS5cblx0ICpcblx0ICov
XG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHQvLyBjb2RlIGNvcGllZCBhbmQgbW9kaWZpZWQg
ZnJvbSBlc2NhcGUtaHRtbFxuXHQvKipcblx0ICogTW9kdWxlIHZhcmlhYmxlcy5cblx0ICogQHBy
aXZhdGVcblx0ICovXG5cdFxuXHR2YXIgbWF0Y2hIdG1sUmVnRXhwID0gL1tcIicmPD5dLztcblx0
XG5cdC8qKlxuXHQgKiBFc2NhcGUgc3BlY2lhbCBjaGFyYWN0ZXJzIGluIHRoZSBnaXZlbiBzdHJp
bmcgb2YgaHRtbC5cblx0ICpcblx0ICogQHBhcmFtICB7c3RyaW5nfSBzdHJpbmcgVGhlIHN0cmlu
ZyB0byBlc2NhcGUgZm9yIGluc2VydGluZyBpbnRvIEhUTUxcblx0ICogQHJldHVybiB7c3RyaW5n
fVxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRcblx0ZnVuY3Rpb24gZXNjYXBlSHRtbChzdHJpbmcp
IHtcblx0ICB2YXIgc3RyID0gJycgKyBzdHJpbmc7XG5cdCAgdmFyIG1hdGNoID0gbWF0Y2hIdG1s
UmVnRXhwLmV4ZWMoc3RyKTtcblx0XG5cdCAgaWYgKCFtYXRjaCkge1xuXHQgICAgcmV0dXJuIHN0
cjtcblx0ICB9XG5cdFxuXHQgIHZhciBlc2NhcGU7XG5cdCAgdmFyIGh0bWwgPSAnJztcblx0ICB2
YXIgaW5kZXggPSAwO1xuXHQgIHZhciBsYXN0SW5kZXggPSAwO1xuXHRcblx0ICBmb3IgKGluZGV4
ID0gbWF0Y2guaW5kZXg7IGluZGV4IDwgc3RyLmxlbmd0aDsgaW5kZXgrKykge1xuXHQgICAgc3dp
dGNoIChzdHIuY2hhckNvZGVBdChpbmRleCkpIHtcblx0ICAgICAgY2FzZSAzNDpcblx0ICAgICAg
ICAvLyBcIlxuXHQgICAgICAgIGVzY2FwZSA9ICcmcXVvdDsnO1xuXHQgICAgICAgIGJyZWFrO1xu
XHQgICAgICBjYXNlIDM4OlxuXHQgICAgICAgIC8vICZcblx0ICAgICAgICBlc2NhcGUgPSAnJmFt
cDsnO1xuXHQgICAgICAgIGJyZWFrO1xuXHQgICAgICBjYXNlIDM5OlxuXHQgICAgICAgIC8vICdc
blx0ICAgICAgICBlc2NhcGUgPSAnJiN4Mjc7JzsgLy8gbW9kaWZpZWQgZnJvbSBlc2NhcGUtaHRt
bDsgdXNlZCB0byBiZSAnJiMzOSdcblx0ICAgICAgICBicmVhaztcblx0ICAgICAgY2FzZSA2MDpc
blx0ICAgICAgICAvLyA8XG5cdCAgICAgICAgZXNjYXBlID0gJyZsdDsnO1xuXHQgICAgICAgIGJy
ZWFrO1xuXHQgICAgICBjYXNlIDYyOlxuXHQgICAgICAgIC8vID5cblx0ICAgICAgICBlc2NhcGUg
PSAnJmd0Oyc7XG5cdCAgICAgICAgYnJlYWs7XG5cdCAgICAgIGRlZmF1bHQ6XG5cdCAgICAgICAg
Y29udGludWU7XG5cdCAgICB9XG5cdFxuXHQgICAgaWYgKGxhc3RJbmRleCAhPT0gaW5kZXgpIHtc
blx0ICAgICAgaHRtbCArPSBzdHIuc3Vic3RyaW5nKGxhc3RJbmRleCwgaW5kZXgpO1xuXHQgICAg
fVxuXHRcblx0ICAgIGxhc3RJbmRleCA9IGluZGV4ICsgMTtcblx0ICAgIGh0bWwgKz0gZXNjYXBl
O1xuXHQgIH1cblx0XG5cdCAgcmV0dXJuIGxhc3RJbmRleCAhPT0gaW5kZXggPyBodG1sICsgc3Ry
LnN1YnN0cmluZyhsYXN0SW5kZXgsIGluZGV4KSA6IGh0bWw7XG5cdH1cblx0Ly8gZW5kIGNvZGUg
Y29waWVkIGFuZCBtb2RpZmllZCBmcm9tIGVzY2FwZS1odG1sXG5cdFxuXHQvKipcblx0ICogRXNj
YXBlcyB0ZXh0IHRvIHByZXZlbnQgc2NyaXB0aW5nIGF0dGFja3MuXG5cdCAqXG5cdCAqIEBwYXJh
bSB7Kn0gdGV4dCBUZXh0IHZhbHVlIHRvIGVzY2FwZS5cblx0ICogQHJldHVybiB7c3RyaW5nfSBB
biBlc2NhcGVkIHN0cmluZy5cblx0ICovXG5cdGZ1bmN0aW9uIGVzY2FwZVRleHRDb250ZW50Rm9y
QnJvd3Nlcih0ZXh0KSB7XG5cdCAgaWYgKHR5cGVvZiB0ZXh0ID09PSAnYm9vbGVhbicgfHwgdHlw
ZW9mIHRleHQgPT09ICdudW1iZXInKSB7XG5cdCAgICAvLyB0aGlzIHNob3J0Y2lyY3VpdCBoZWxw
cyBwZXJmIGZvciB0eXBlcyB0aGF0IHdlIGtub3cgd2lsbCBuZXZlciBoYXZlXG5cdCAgICAvLyBz
cGVjaWFsIGNoYXJhY3RlcnMsIGVzcGVjaWFsbHkgZ2l2ZW4gdGhhdCB0aGlzIGZ1bmN0aW9uIGlz
IHVzZWQgb2Z0ZW5cblx0ICAgIC8vIGZvciBudW1lcmljIGRvbSBpZHMuXG5cdCAgICByZXR1cm4g
JycgKyB0ZXh0O1xuXHQgIH1cblx0ICByZXR1cm4gZXNjYXBlSHRtbCh0ZXh0KTtcblx0fVxuXHRc
blx0bW9kdWxlLmV4cG9ydHMgPSBlc2NhcGVUZXh0Q29udGVudEZvckJyb3dzZXI7XG5cbi8qKiov
IH0sXG4vKiAyOSAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tf
cmVxdWlyZV9fKSB7XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vi
b29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291
cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGlu
IHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291
cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4g
YmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAq
XG5cdCAqL1xuXHRcblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0dmFyIEV4ZWN1dGlvbkVudmlyb25t
ZW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg2KTtcblx0dmFyIERPTU5hbWVzcGFjZXMgPSBfX3dl
YnBhY2tfcmVxdWlyZV9fKDM1KTtcblx0XG5cdHZhciBXSElURVNQQUNFX1RFU1QgPSAvXlsgXFxy
XFxuXFx0XFxmXS87XG5cdHZhciBOT05WSVNJQkxFX1RFU1QgPSAvPCghLS18bGlua3xub3Njcmlw
dHxtZXRhfHNjcmlwdHxzdHlsZSlbIFxcclxcblxcdFxcZlxcLz5dLztcblx0XG5cdHZhciBjcmVh
dGVNaWNyb3NvZnRVbnNhZmVMb2NhbEZ1bmN0aW9uID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0Myk7
XG5cdFxuXHQvLyBTVkcgdGVtcCBjb250YWluZXIgZm9yIElFIGxhY2tpbmcgaW5uZXJIVE1MXG5c
dHZhciByZXVzYWJsZVNWR0NvbnRhaW5lcjtcblx0XG5cdC8qKlxuXHQgKiBTZXQgdGhlIGlubmVy
SFRNTCBwcm9wZXJ0eSBvZiBhIG5vZGUsIGVuc3VyaW5nIHRoYXQgd2hpdGVzcGFjZSBpcyBwcmVz
ZXJ2ZWRcblx0ICogZXZlbiBpbiBJRTguXG5cdCAqXG5cdCAqIEBwYXJhbSB7RE9NRWxlbWVudH0g
bm9kZVxuXHQgKiBAcGFyYW0ge3N0cmluZ30gaHRtbFxuXHQgKiBAaW50ZXJuYWxcblx0ICovXG5c
dHZhciBzZXRJbm5lckhUTUwgPSBjcmVhdGVNaWNyb3NvZnRVbnNhZmVMb2NhbEZ1bmN0aW9uKGZ1
bmN0aW9uIChub2RlLCBodG1sKSB7XG5cdCAgLy8gSUUgZG9lcyBub3QgaGF2ZSBpbm5lckhUTUwg
Zm9yIFNWRyBub2Rlcywgc28gaW5zdGVhZCB3ZSBpbmplY3QgdGhlXG5cdCAgLy8gbmV3IG1hcmt1
cCBpbiBhIHRlbXAgbm9kZSBhbmQgdGhlbiBtb3ZlIHRoZSBjaGlsZCBub2RlcyBhY3Jvc3MgaW50
b1xuXHQgIC8vIHRoZSB0YXJnZXQgbm9kZVxuXHQgIGlmIChub2RlLm5hbWVzcGFjZVVSSSA9PT0g
RE9NTmFtZXNwYWNlcy5zdmcgJiYgISgnaW5uZXJIVE1MJyBpbiBub2RlKSkge1xuXHQgICAgcmV1
c2FibGVTVkdDb250YWluZXIgPSByZXVzYWJsZVNWR0NvbnRhaW5lciB8fCBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCdkaXYnKTtcblx0ICAgIHJldXNhYmxlU1ZHQ29udGFpbmVyLmlubmVySFRNTCA9
ICc8c3ZnPicgKyBodG1sICsgJzwvc3ZnPic7XG5cdCAgICB2YXIgc3ZnTm9kZSA9IHJldXNhYmxl
U1ZHQ29udGFpbmVyLmZpcnN0Q2hpbGQ7XG5cdCAgICB3aGlsZSAoc3ZnTm9kZS5maXJzdENoaWxk
KSB7XG5cdCAgICAgIG5vZGUuYXBwZW5kQ2hpbGQoc3ZnTm9kZS5maXJzdENoaWxkKTtcblx0ICAg
IH1cblx0ICB9IGVsc2Uge1xuXHQgICAgbm9kZS5pbm5lckhUTUwgPSBodG1sO1xuXHQgIH1cblx0
fSk7XG5cdFxuXHRpZiAoRXhlY3V0aW9uRW52aXJvbm1lbnQuY2FuVXNlRE9NKSB7XG5cdCAgLy8g
SUU4OiBXaGVuIHVwZGF0aW5nIGEganVzdCBjcmVhdGVkIG5vZGUgd2l0aCBpbm5lckhUTUwgb25s
eSBsZWFkaW5nXG5cdCAgLy8gd2hpdGVzcGFjZSBpcyByZW1vdmVkLiBXaGVuIHVwZGF0aW5nIGFu
IGV4aXN0aW5nIG5vZGUgd2l0aCBpbm5lckhUTUxcblx0ICAvLyB3aGl0ZXNwYWNlIGluIHJvb3Qg
VGV4dE5vZGVzIGlzIGFsc28gY29sbGFwc2VkLlxuXHQgIC8vIEBzZWUgcXVpcmtzbW9kZS5vcmcv
YnVncmVwb3J0cy9hcmNoaXZlcy8yMDA0LzExL2lubmVyaHRtbF9hbmRfdC5odG1sXG5cdFxuXHQg
IC8vIEZlYXR1cmUgZGV0ZWN0aW9uOyBvbmx5IElFOCBpcyBrbm93biB0byBiZWhhdmUgaW1wcm9w
ZXJseSBsaWtlIHRoaXMuXG5cdCAgdmFyIHRlc3RFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgnZGl2Jyk7XG5cdCAgdGVzdEVsZW1lbnQuaW5uZXJIVE1MID0gJyAnO1xuXHQgIGlmICh0
ZXN0RWxlbWVudC5pbm5lckhUTUwgPT09ICcnKSB7XG5cdCAgICBzZXRJbm5lckhUTUwgPSBmdW5j
dGlvbiAobm9kZSwgaHRtbCkge1xuXHQgICAgICAvLyBNYWdpYyB0aGVvcnk6IElFOCBzdXBwb3Nl
ZGx5IGRpZmZlcmVudGlhdGVzIGJldHdlZW4gYWRkZWQgYW5kIHVwZGF0ZWRcblx0ICAgICAgLy8g
bm9kZXMgd2hlbiBwcm9jZXNzaW5nIGlubmVySFRNTCwgaW5uZXJIVE1MIG9uIHVwZGF0ZWQgbm9k
ZXMgc3VmZmVyc1xuXHQgICAgICAvLyBmcm9tIHdvcnNlIHdoaXRlc3BhY2UgYmVoYXZpb3IuIFJl
LWFkZGluZyBhIG5vZGUgbGlrZSB0aGlzIHRyaWdnZXJzXG5cdCAgICAgIC8vIHRoZSBpbml0aWFs
IGFuZCBtb3JlIGZhdm9yYWJsZSB3aGl0ZXNwYWNlIGJlaGF2aW9yLlxuXHQgICAgICAvLyBUT0RP
OiBXaGF0IHRvIGRvIG9uIGEgZGV0YWNoZWQgbm9kZT9cblx0ICAgICAgaWYgKG5vZGUucGFyZW50
Tm9kZSkge1xuXHQgICAgICAgIG5vZGUucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQobm9kZSwgbm9k
ZSk7XG5cdCAgICAgIH1cblx0XG5cdCAgICAgIC8vIFdlIGFsc28gaW1wbGVtZW50IGEgd29ya2Fy
b3VuZCBmb3Igbm9uLXZpc2libGUgdGFncyBkaXNhcHBlYXJpbmcgaW50b1xuXHQgICAgICAvLyB0
aGluIGFpciBvbiBJRTgsIHRoaXMgb25seSBoYXBwZW5zIGlmIHRoZXJlIGlzIG5vIHZpc2libGUg
dGV4dFxuXHQgICAgICAvLyBpbi1mcm9udCBvZiB0aGUgbm9uLXZpc2libGUgdGFncy4gUGlnZ3li
YWNrIG9uIHRoZSB3aGl0ZXNwYWNlIGZpeFxuXHQgICAgICAvLyBhbmQgc2ltcGx5IGNoZWNrIGlm
IGFueSBub24tdmlzaWJsZSB0YWdzIGFwcGVhciBpbiB0aGUgc291cmNlLlxuXHQgICAgICBpZiAo
V0hJVEVTUEFDRV9URVNULnRlc3QoaHRtbCkgfHwgaHRtbFswXSA9PT0gJzwnICYmIE5PTlZJU0lC
TEVfVEVTVC50ZXN0KGh0bWwpKSB7XG5cdCAgICAgICAgLy8gUmVjb3ZlciBsZWFkaW5nIHdoaXRl
c3BhY2UgYnkgdGVtcG9yYXJpbHkgcHJlcGVuZGluZyBhbnkgY2hhcmFjdGVyLlxuXHQgICAgICAg
IC8vIFxcdUZFRkYgaGFzIHRoZSBwb3RlbnRpYWwgYWR2YW50YWdlIG9mIGJlaW5nIHplcm8td2lk
dGgvaW52aXNpYmxlLlxuXHQgICAgICAgIC8vIFVnbGlmeUpTIGRyb3BzIFUrRkVGRiBjaGFycyB3
aGVuIHBhcnNpbmcsIHNvIHVzZSBTdHJpbmcuZnJvbUNoYXJDb2RlXG5cdCAgICAgICAgLy8gaW4g
aG9wZXMgdGhhdCB0aGlzIGlzIHByZXNlcnZlZCBldmVuIGlmIFwiXFx1RkVGRlwiIGlzIHRyYW5z
Zm9ybWVkIHRvXG5cdCAgICAgICAgLy8gdGhlIGFjdHVhbCBVbmljb2RlIGNoYXJhY3RlciAoYnkg
QmFiZWwsIGZvciBleGFtcGxlKS5cblx0ICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vbWlz
aG9vL1VnbGlmeUpTMi9ibG9iL3YyLjQuMjAvbGliL3BhcnNlLmpzI0wyMTZcblx0ICAgICAgICBu
b2RlLmlubmVySFRNTCA9IFN0cmluZy5mcm9tQ2hhckNvZGUoMHhmZWZmKSArIGh0bWw7XG5cdFxu
XHQgICAgICAgIC8vIGRlbGV0ZURhdGEgbGVhdmVzIGFuIGVtcHR5IGBUZXh0Tm9kZWAgd2hpY2gg
b2Zmc2V0cyB0aGUgaW5kZXggb2YgYWxsXG5cdCAgICAgICAgLy8gY2hpbGRyZW4uIERlZmluaXRl
bHkgd2FudCB0byBhdm9pZCB0aGlzLlxuXHQgICAgICAgIHZhciB0ZXh0Tm9kZSA9IG5vZGUuZmly
c3RDaGlsZDtcblx0ICAgICAgICBpZiAodGV4dE5vZGUuZGF0YS5sZW5ndGggPT09IDEpIHtcblx0
ICAgICAgICAgIG5vZGUucmVtb3ZlQ2hpbGQodGV4dE5vZGUpO1xuXHQgICAgICAgIH0gZWxzZSB7
XG5cdCAgICAgICAgICB0ZXh0Tm9kZS5kZWxldGVEYXRhKDAsIDEpO1xuXHQgICAgICAgIH1cblx0
ICAgICAgfSBlbHNlIHtcblx0ICAgICAgICBub2RlLmlubmVySFRNTCA9IGh0bWw7XG5cdCAgICAg
IH1cblx0ICAgIH07XG5cdCAgfVxuXHQgIHRlc3RFbGVtZW50ID0gbnVsbDtcblx0fVxuXHRcblx0
bW9kdWxlLmV4cG9ydHMgPSBzZXRJbm5lckhUTUw7XG5cbi8qKiovIH0sXG4vKiAzMCAqL1xuLyoq
Ki8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0
J3VzZSBzdHJpY3QnO1xuXHRcblx0ZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcblx0ZXhwb3J0
cy5jb21wb3NlID0gZXhwb3J0cy5hcHBseU1pZGRsZXdhcmUgPSBleHBvcnRzLmJpbmRBY3Rpb25D
cmVhdG9ycyA9IGV4cG9ydHMuY29tYmluZVJlZHVjZXJzID0gZXhwb3J0cy5jcmVhdGVTdG9yZSA9
IHVuZGVmaW5lZDtcblx0XG5cdHZhciBfY3JlYXRlU3RvcmUgPSBfX3dlYnBhY2tfcmVxdWlyZV9f
KDk1KTtcblx0XG5cdHZhciBfY3JlYXRlU3RvcmUyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChf
Y3JlYXRlU3RvcmUpO1xuXHRcblx0dmFyIF9jb21iaW5lUmVkdWNlcnMgPSBfX3dlYnBhY2tfcmVx
dWlyZV9fKDIyNyk7XG5cdFxuXHR2YXIgX2NvbWJpbmVSZWR1Y2VyczIgPSBfaW50ZXJvcFJlcXVp
cmVEZWZhdWx0KF9jb21iaW5lUmVkdWNlcnMpO1xuXHRcblx0dmFyIF9iaW5kQWN0aW9uQ3JlYXRv
cnMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIyNik7XG5cdFxuXHR2YXIgX2JpbmRBY3Rpb25DcmVh
dG9yczIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9iaW5kQWN0aW9uQ3JlYXRvcnMpO1xuXHRc
blx0dmFyIF9hcHBseU1pZGRsZXdhcmUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIyNSk7XG5cdFxu
XHR2YXIgX2FwcGx5TWlkZGxld2FyZTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9hcHBseU1p
ZGRsZXdhcmUpO1xuXHRcblx0dmFyIF9jb21wb3NlID0gX193ZWJwYWNrX3JlcXVpcmVfXyg5NCk7
XG5cdFxuXHR2YXIgX2NvbXBvc2UyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfY29tcG9zZSk7
XG5cdFxuXHR2YXIgX3dhcm5pbmcgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDk2KTtcblx0XG5cdHZh
ciBfd2FybmluZzIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF93YXJuaW5nKTtcblx0XG5cdGZ1
bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9f
ZXNNb2R1bGUgPyBvYmogOiB7ICdkZWZhdWx0Jzogb2JqIH07IH1cblx0XG5cdC8qXG5cdCogVGhp
cyBpcyBhIGR1bW15IGZ1bmN0aW9uIHRvIGNoZWNrIGlmIHRoZSBmdW5jdGlvbiBuYW1lIGhhcyBi
ZWVuIGFsdGVyZWQgYnkgbWluaWZpY2F0aW9uLlxuXHQqIElmIHRoZSBmdW5jdGlvbiBoYXMgYmVl
biBtaW5pZmllZCBhbmQgTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJywgd2FybiB0aGUgdXNlci5c
blx0Ki9cblx0ZnVuY3Rpb24gaXNDcnVzaGVkKCkge31cblx0XG5cdGlmIChmYWxzZSkge1xuXHQg
ICgwLCBfd2FybmluZzJbJ2RlZmF1bHQnXSkoJ1lvdSBhcmUgY3VycmVudGx5IHVzaW5nIG1pbmlm
aWVkIGNvZGUgb3V0c2lkZSBvZiBOT0RFX0VOViA9PT0gXFwncHJvZHVjdGlvblxcJy4gJyArICdU
aGlzIG1lYW5zIHRoYXQgeW91IGFyZSBydW5uaW5nIGEgc2xvd2VyIGRldmVsb3BtZW50IGJ1aWxk
IG9mIFJlZHV4LiAnICsgJ1lvdSBjYW4gdXNlIGxvb3NlLWVudmlmeSAoaHR0cHM6Ly9naXRodWIu
Y29tL3plcnRvc2gvbG9vc2UtZW52aWZ5KSBmb3IgYnJvd3NlcmlmeSAnICsgJ29yIERlZmluZVBs
dWdpbiBmb3Igd2VicGFjayAoaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8zMDAz
MDAzMSkgJyArICd0byBlbnN1cmUgeW91IGhhdmUgdGhlIGNvcnJlY3QgY29kZSBmb3IgeW91ciBw
cm9kdWN0aW9uIGJ1aWxkLicpO1xuXHR9XG5cdFxuXHRleHBvcnRzLmNyZWF0ZVN0b3JlID0gX2Ny
ZWF0ZVN0b3JlMlsnZGVmYXVsdCddO1xuXHRleHBvcnRzLmNvbWJpbmVSZWR1Y2VycyA9IF9jb21i
aW5lUmVkdWNlcnMyWydkZWZhdWx0J107XG5cdGV4cG9ydHMuYmluZEFjdGlvbkNyZWF0b3JzID0g
X2JpbmRBY3Rpb25DcmVhdG9yczJbJ2RlZmF1bHQnXTtcblx0ZXhwb3J0cy5hcHBseU1pZGRsZXdh
cmUgPSBfYXBwbHlNaWRkbGV3YXJlMlsnZGVmYXVsdCddO1xuXHRleHBvcnRzLmNvbXBvc2UgPSBf
Y29tcG9zZTJbJ2RlZmF1bHQnXTtcblxuLyoqKi8gfSxcbi8qIDMxICovXG4vKioqLyBmdW5jdGlv
bihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHR2YXIgX19XRUJQ
QUNLX0FNRF9ERUZJTkVfQVJSQVlfXywgX19XRUJQQUNLX0FNRF9ERUZJTkVfUkVTVUxUX187Lyoh
XG5cdCAgQ29weXJpZ2h0IChjKSAyMDE2IEplZCBXYXRzb24uXG5cdCAgTGljZW5zZWQgdW5kZXIg
dGhlIE1JVCBMaWNlbnNlIChNSVQpLCBzZWVcblx0ICBodHRwOi8vamVkd2F0c29uLmdpdGh1Yi5p
by9jbGFzc25hbWVzXG5cdCovXG5cdC8qIGdsb2JhbCBkZWZpbmUgKi9cblx0XG5cdChmdW5jdGlv
biAoKSB7XG5cdFx0J3VzZSBzdHJpY3QnO1xuXHRcblx0XHR2YXIgaGFzT3duID0ge30uaGFzT3du
UHJvcGVydHk7XG5cdFxuXHRcdGZ1bmN0aW9uIGNsYXNzTmFtZXMgKCkge1xuXHRcdFx0dmFyIGNs
YXNzZXMgPSBbXTtcblx0XG5cdFx0XHRmb3IgKHZhciBpID0gMDsgaSA8IGFyZ3VtZW50cy5sZW5n
dGg7IGkrKykge1xuXHRcdFx0XHR2YXIgYXJnID0gYXJndW1lbnRzW2ldO1xuXHRcdFx0XHRpZiAo
IWFyZykgY29udGludWU7XG5cdFxuXHRcdFx0XHR2YXIgYXJnVHlwZSA9IHR5cGVvZiBhcmc7XG5c
dFxuXHRcdFx0XHRpZiAoYXJnVHlwZSA9PT0gJ3N0cmluZycgfHwgYXJnVHlwZSA9PT0gJ251bWJl
cicpIHtcblx0XHRcdFx0XHRjbGFzc2VzLnB1c2goYXJnKTtcblx0XHRcdFx0fSBlbHNlIGlmIChB
cnJheS5pc0FycmF5KGFyZykpIHtcblx0XHRcdFx0XHRjbGFzc2VzLnB1c2goY2xhc3NOYW1lcy5h
cHBseShudWxsLCBhcmcpKTtcblx0XHRcdFx0fSBlbHNlIGlmIChhcmdUeXBlID09PSAnb2JqZWN0
Jykge1xuXHRcdFx0XHRcdGZvciAodmFyIGtleSBpbiBhcmcpIHtcblx0XHRcdFx0XHRcdGlmICho
YXNPd24uY2FsbChhcmcsIGtleSkgJiYgYXJnW2tleV0pIHtcblx0XHRcdFx0XHRcdFx0Y2xhc3Nl
cy5wdXNoKGtleSk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0
XHR9XG5cdFxuXHRcdFx0cmV0dXJuIGNsYXNzZXMuam9pbignICcpO1xuXHRcdH1cblx0XG5cdFx0
aWYgKHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnICYmIG1vZHVsZS5leHBvcnRzKSB7XG5c
dFx0XHRtb2R1bGUuZXhwb3J0cyA9IGNsYXNzTmFtZXM7XG5cdFx0fSBlbHNlIGlmICh0cnVlKSB7
XG5cdFx0XHQvLyByZWdpc3RlciBhcyAnY2xhc3NuYW1lcycsIGNvbnNpc3RlbnQgd2l0aCBucG0g
cGFja2FnZSBuYW1lXG5cdFx0XHQhKF9fV0VCUEFDS19BTURfREVGSU5FX0FSUkFZX18gPSBbXSwg
X19XRUJQQUNLX0FNRF9ERUZJTkVfUkVTVUxUX18gPSBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdHJl
dHVybiBjbGFzc05hbWVzO1xuXHRcdFx0fS5hcHBseShleHBvcnRzLCBfX1dFQlBBQ0tfQU1EX0RF
RklORV9BUlJBWV9fKSwgX19XRUJQQUNLX0FNRF9ERUZJTkVfUkVTVUxUX18gIT09IHVuZGVmaW5l
ZCAmJiAobW9kdWxlLmV4cG9ydHMgPSBfX1dFQlBBQ0tfQU1EX0RFRklORV9SRVNVTFRfXykpO1xu
XHRcdH0gZWxzZSB7XG5cdFx0XHR3aW5kb3cuY2xhc3NOYW1lcyA9IGNsYXNzTmFtZXM7XG5cdFx0
fVxuXHR9KCkpO1xuXG5cbi8qKiovIH0sXG4vKiAzMiAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxl
LCBleHBvcnRzKSB7XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBG
YWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlz
IHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3Vu
ZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlz
IHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMg
Y2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5Llxu
XHQgKlxuXHQgKiBAdHlwZWNoZWNrc1xuXHQgKiBcblx0ICovXG5cdFxuXHQvKmVzbGludC1kaXNh
YmxlIG5vLXNlbGYtY29tcGFyZSAqL1xuXHRcblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0dmFyIGhh
c093blByb3BlcnR5ID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcblx0XG5cdC8q
KlxuXHQgKiBpbmxpbmVkIE9iamVjdC5pcyBwb2x5ZmlsbCB0byBhdm9pZCByZXF1aXJpbmcgY29u
c3VtZXJzIHNoaXAgdGhlaXIgb3duXG5cdCAqIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3Jn
L2VuLVVTL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL0dsb2JhbF9PYmplY3RzL09iamVj
dC9pc1xuXHQgKi9cblx0ZnVuY3Rpb24gaXMoeCwgeSkge1xuXHQgIC8vIFNhbWVWYWx1ZSBhbGdv
cml0aG1cblx0ICBpZiAoeCA9PT0geSkge1xuXHQgICAgLy8gU3RlcHMgMS01LCA3LTEwXG5cdCAg
ICAvLyBTdGVwcyA2LmItNi5lOiArMCAhPSAtMFxuXHQgICAgLy8gQWRkZWQgdGhlIG5vbnplcm8g
eSBjaGVjayB0byBtYWtlIEZsb3cgaGFwcHksIGJ1dCBpdCBpcyByZWR1bmRhbnRcblx0ICAgIHJl
dHVybiB4ICE9PSAwIHx8IHkgIT09IDAgfHwgMSAvIHggPT09IDEgLyB5O1xuXHQgIH0gZWxzZSB7
XG5cdCAgICAvLyBTdGVwIDYuYTogTmFOID09IE5hTlxuXHQgICAgcmV0dXJuIHggIT09IHggJiYg
eSAhPT0geTtcblx0ICB9XG5cdH1cblx0XG5cdC8qKlxuXHQgKiBQZXJmb3JtcyBlcXVhbGl0eSBi
eSBpdGVyYXRpbmcgdGhyb3VnaCBrZXlzIG9uIGFuIG9iamVjdCBhbmQgcmV0dXJuaW5nIGZhbHNl
XG5cdCAqIHdoZW4gYW55IGtleSBoYXMgdmFsdWVzIHdoaWNoIGFyZSBub3Qgc3RyaWN0bHkgZXF1
YWwgYmV0d2VlbiB0aGUgYXJndW1lbnRzLlxuXHQgKiBSZXR1cm5zIHRydWUgd2hlbiB0aGUgdmFs
dWVzIG9mIGFsbCBrZXlzIGFyZSBzdHJpY3RseSBlcXVhbC5cblx0ICovXG5cdGZ1bmN0aW9uIHNo
YWxsb3dFcXVhbChvYmpBLCBvYmpCKSB7XG5cdCAgaWYgKGlzKG9iakEsIG9iakIpKSB7XG5cdCAg
ICByZXR1cm4gdHJ1ZTtcblx0ICB9XG5cdFxuXHQgIGlmICh0eXBlb2Ygb2JqQSAhPT0gJ29iamVj
dCcgfHwgb2JqQSA9PT0gbnVsbCB8fCB0eXBlb2Ygb2JqQiAhPT0gJ29iamVjdCcgfHwgb2JqQiA9
PT0gbnVsbCkge1xuXHQgICAgcmV0dXJuIGZhbHNlO1xuXHQgIH1cblx0XG5cdCAgdmFyIGtleXNB
ID0gT2JqZWN0LmtleXMob2JqQSk7XG5cdCAgdmFyIGtleXNCID0gT2JqZWN0LmtleXMob2JqQik7
XG5cdFxuXHQgIGlmIChrZXlzQS5sZW5ndGggIT09IGtleXNCLmxlbmd0aCkge1xuXHQgICAgcmV0
dXJuIGZhbHNlO1xuXHQgIH1cblx0XG5cdCAgLy8gVGVzdCBmb3IgQSdzIGtleXMgZGlmZmVyZW50
IGZyb20gQi5cblx0ICBmb3IgKHZhciBpID0gMDsgaSA8IGtleXNBLmxlbmd0aDsgaSsrKSB7XG5c
dCAgICBpZiAoIWhhc093blByb3BlcnR5LmNhbGwob2JqQiwga2V5c0FbaV0pIHx8ICFpcyhvYmpB
W2tleXNBW2ldXSwgb2JqQltrZXlzQVtpXV0pKSB7XG5cdCAgICAgIHJldHVybiBmYWxzZTtcblx0
ICAgIH1cblx0ICB9XG5cdFxuXHQgIHJldHVybiB0cnVlO1xuXHR9XG5cdFxuXHRtb2R1bGUuZXhw
b3J0cyA9IHNoYWxsb3dFcXVhbDtcblxuLyoqKi8gfSxcbi8qIDMzICovXG4vKioqLyBmdW5jdGlv
bihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHR2YXIgYmFzZUdl
dFRhZyA9IF9fd2VicGFja19yZXF1aXJlX18oMTEyKSxcblx0ICAgIGdldFByb3RvdHlwZSA9IF9f
d2VicGFja19yZXF1aXJlX18oMTE0KSxcblx0ICAgIGlzT2JqZWN0TGlrZSA9IF9fd2VicGFja19y
ZXF1aXJlX18oMTE5KTtcblx0XG5cdC8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJl
bmNlcy4gKi9cblx0dmFyIG9iamVjdFRhZyA9ICdbb2JqZWN0IE9iamVjdF0nO1xuXHRcblx0Lyoq
IFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xuXHR2YXIgZnVuY1Byb3Rv
ID0gRnVuY3Rpb24ucHJvdG90eXBlLFxuXHQgICAgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90
eXBlO1xuXHRcblx0LyoqIFVzZWQgdG8gcmVzb2x2ZSB0aGUgZGVjb21waWxlZCBzb3VyY2Ugb2Yg
ZnVuY3Rpb25zLiAqL1xuXHR2YXIgZnVuY1RvU3RyaW5nID0gZnVuY1Byb3RvLnRvU3RyaW5nO1xu
XHRcblx0LyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG5c
dHZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXHRcblx0
LyoqIFVzZWQgdG8gaW5mZXIgdGhlIGBPYmplY3RgIGNvbnN0cnVjdG9yLiAqL1xuXHR2YXIgb2Jq
ZWN0Q3RvclN0cmluZyA9IGZ1bmNUb1N0cmluZy5jYWxsKE9iamVjdCk7XG5cdFxuXHQvKipcblx0
ICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSBwbGFpbiBvYmplY3QsIHRoYXQgaXMsIGFuIG9iamVj
dCBjcmVhdGVkIGJ5IHRoZVxuXHQgKiBgT2JqZWN0YCBjb25zdHJ1Y3RvciBvciBvbmUgd2l0aCBh
IGBbW1Byb3RvdHlwZV1dYCBvZiBgbnVsbGAuXG5cdCAqXG5cdCAqIEBzdGF0aWNcblx0ICogQG1l
bWJlck9mIF9cblx0ICogQHNpbmNlIDAuOC4wXG5cdCAqIEBjYXRlZ29yeSBMYW5nXG5cdCAqIEBw
YXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuXHQgKiBAcmV0dXJucyB7Ym9vbGVh
bn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHBsYWluIG9iamVjdCwgZWxzZSBgZmFs
c2VgLlxuXHQgKiBAZXhhbXBsZVxuXHQgKlxuXHQgKiBmdW5jdGlvbiBGb28oKSB7XG5cdCAqICAg
dGhpcy5hID0gMTtcblx0ICogfVxuXHQgKlxuXHQgKiBfLmlzUGxhaW5PYmplY3QobmV3IEZvbyk7
XG5cdCAqIC8vID0+IGZhbHNlXG5cdCAqXG5cdCAqIF8uaXNQbGFpbk9iamVjdChbMSwgMiwgM10p
O1xuXHQgKiAvLyA9PiBmYWxzZVxuXHQgKlxuXHQgKiBfLmlzUGxhaW5PYmplY3QoeyAneCc6IDAs
ICd5JzogMCB9KTtcblx0ICogLy8gPT4gdHJ1ZVxuXHQgKlxuXHQgKiBfLmlzUGxhaW5PYmplY3Qo
T2JqZWN0LmNyZWF0ZShudWxsKSk7XG5cdCAqIC8vID0+IHRydWVcblx0ICovXG5cdGZ1bmN0aW9u
IGlzUGxhaW5PYmplY3QodmFsdWUpIHtcblx0ICBpZiAoIWlzT2JqZWN0TGlrZSh2YWx1ZSkgfHwg
YmFzZUdldFRhZyh2YWx1ZSkgIT0gb2JqZWN0VGFnKSB7XG5cdCAgICByZXR1cm4gZmFsc2U7XG5c
dCAgfVxuXHQgIHZhciBwcm90byA9IGdldFByb3RvdHlwZSh2YWx1ZSk7XG5cdCAgaWYgKHByb3Rv
ID09PSBudWxsKSB7XG5cdCAgICByZXR1cm4gdHJ1ZTtcblx0ICB9XG5cdCAgdmFyIEN0b3IgPSBo
YXNPd25Qcm9wZXJ0eS5jYWxsKHByb3RvLCAnY29uc3RydWN0b3InKSAmJiBwcm90by5jb25zdHJ1
Y3Rvcjtcblx0ICByZXR1cm4gdHlwZW9mIEN0b3IgPT0gJ2Z1bmN0aW9uJyAmJiBDdG9yIGluc3Rh
bmNlb2YgQ3RvciAmJlxuXHQgICAgZnVuY1RvU3RyaW5nLmNhbGwoQ3RvcikgPT0gb2JqZWN0Q3Rv
clN0cmluZztcblx0fVxuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBpc1BsYWluT2JqZWN0O1xuXG5c
bi8qKiovIH0sXG4vKiAzNCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dl
YnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQs
IEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRo
aXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZv
dW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRo
aXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0
cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3Rvcnku
XG5cdCAqXG5cdCAqL1xuXHRcblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0dmFyIERPTUxhenlUcmVl
ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNCk7XG5cdHZhciBEYW5nZXIgPSBfX3dlYnBhY2tfcmVx
dWlyZV9fKDEyOSk7XG5cdHZhciBSZWFjdERPTUNvbXBvbmVudFRyZWUgPSBfX3dlYnBhY2tfcmVx
dWlyZV9fKDUpO1xuXHR2YXIgUmVhY3RJbnN0cnVtZW50YXRpb24gPSBfX3dlYnBhY2tfcmVxdWly
ZV9fKDgpO1xuXHRcblx0dmFyIGNyZWF0ZU1pY3Jvc29mdFVuc2FmZUxvY2FsRnVuY3Rpb24gPSBf
X3dlYnBhY2tfcmVxdWlyZV9fKDQzKTtcblx0dmFyIHNldElubmVySFRNTCA9IF9fd2VicGFja19y
ZXF1aXJlX18oMjkpO1xuXHR2YXIgc2V0VGV4dENvbnRlbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9f
KDc3KTtcblx0XG5cdGZ1bmN0aW9uIGdldE5vZGVBZnRlcihwYXJlbnROb2RlLCBub2RlKSB7XG5c
dCAgLy8gU3BlY2lhbCBjYXNlIGZvciB0ZXh0IGNvbXBvbmVudHMsIHdoaWNoIHJldHVybiBbb3Bl
biwgY2xvc2VdIGNvbW1lbnRzXG5cdCAgLy8gZnJvbSBnZXRIb3N0Tm9kZS5cblx0ICBpZiAoQXJy
YXkuaXNBcnJheShub2RlKSkge1xuXHQgICAgbm9kZSA9IG5vZGVbMV07XG5cdCAgfVxuXHQgIHJl
dHVybiBub2RlID8gbm9kZS5uZXh0U2libGluZyA6IHBhcmVudE5vZGUuZmlyc3RDaGlsZDtcblx0
fVxuXHRcblx0LyoqXG5cdCAqIEluc2VydHMgYGNoaWxkTm9kZWAgYXMgYSBjaGlsZCBvZiBgcGFy
ZW50Tm9kZWAgYXQgdGhlIGBpbmRleGAuXG5cdCAqXG5cdCAqIEBwYXJhbSB7RE9NRWxlbWVudH0g
cGFyZW50Tm9kZSBQYXJlbnQgbm9kZSBpbiB3aGljaCB0byBpbnNlcnQuXG5cdCAqIEBwYXJhbSB7
RE9NRWxlbWVudH0gY2hpbGROb2RlIENoaWxkIG5vZGUgdG8gaW5zZXJ0LlxuXHQgKiBAcGFyYW0g
e251bWJlcn0gaW5kZXggSW5kZXggYXQgd2hpY2ggdG8gaW5zZXJ0IHRoZSBjaGlsZC5cblx0ICog
QGludGVybmFsXG5cdCAqL1xuXHR2YXIgaW5zZXJ0Q2hpbGRBdCA9IGNyZWF0ZU1pY3Jvc29mdFVu
c2FmZUxvY2FsRnVuY3Rpb24oZnVuY3Rpb24gKHBhcmVudE5vZGUsIGNoaWxkTm9kZSwgcmVmZXJl
bmNlTm9kZSkge1xuXHQgIC8vIFdlIHJlbHkgZXhjbHVzaXZlbHkgb24gYGluc2VydEJlZm9yZShu
b2RlLCBudWxsKWAgaW5zdGVhZCBvZiBhbHNvIHVzaW5nXG5cdCAgLy8gYGFwcGVuZENoaWxkKG5v
ZGUpYC4gKFVzaW5nIGB1bmRlZmluZWRgIGlzIG5vdCBhbGxvd2VkIGJ5IGFsbCBicm93c2VycyBz
b1xuXHQgIC8vIHdlIGFyZSBjYXJlZnVsIHRvIHVzZSBgbnVsbGAuKVxuXHQgIHBhcmVudE5vZGUu
aW5zZXJ0QmVmb3JlKGNoaWxkTm9kZSwgcmVmZXJlbmNlTm9kZSk7XG5cdH0pO1xuXHRcblx0ZnVu
Y3Rpb24gaW5zZXJ0TGF6eVRyZWVDaGlsZEF0KHBhcmVudE5vZGUsIGNoaWxkVHJlZSwgcmVmZXJl
bmNlTm9kZSkge1xuXHQgIERPTUxhenlUcmVlLmluc2VydFRyZWVCZWZvcmUocGFyZW50Tm9kZSwg
Y2hpbGRUcmVlLCByZWZlcmVuY2VOb2RlKTtcblx0fVxuXHRcblx0ZnVuY3Rpb24gbW92ZUNoaWxk
KHBhcmVudE5vZGUsIGNoaWxkTm9kZSwgcmVmZXJlbmNlTm9kZSkge1xuXHQgIGlmIChBcnJheS5p
c0FycmF5KGNoaWxkTm9kZSkpIHtcblx0ICAgIG1vdmVEZWxpbWl0ZWRUZXh0KHBhcmVudE5vZGUs
IGNoaWxkTm9kZVswXSwgY2hpbGROb2RlWzFdLCByZWZlcmVuY2VOb2RlKTtcblx0ICB9IGVsc2Ug
e1xuXHQgICAgaW5zZXJ0Q2hpbGRBdChwYXJlbnROb2RlLCBjaGlsZE5vZGUsIHJlZmVyZW5jZU5v
ZGUpO1xuXHQgIH1cblx0fVxuXHRcblx0ZnVuY3Rpb24gcmVtb3ZlQ2hpbGQocGFyZW50Tm9kZSwg
Y2hpbGROb2RlKSB7XG5cdCAgaWYgKEFycmF5LmlzQXJyYXkoY2hpbGROb2RlKSkge1xuXHQgICAg
dmFyIGNsb3NpbmdDb21tZW50ID0gY2hpbGROb2RlWzFdO1xuXHQgICAgY2hpbGROb2RlID0gY2hp
bGROb2RlWzBdO1xuXHQgICAgcmVtb3ZlRGVsaW1pdGVkVGV4dChwYXJlbnROb2RlLCBjaGlsZE5v
ZGUsIGNsb3NpbmdDb21tZW50KTtcblx0ICAgIHBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoY2xvc2lu
Z0NvbW1lbnQpO1xuXHQgIH1cblx0ICBwYXJlbnROb2RlLnJlbW92ZUNoaWxkKGNoaWxkTm9kZSk7
XG5cdH1cblx0XG5cdGZ1bmN0aW9uIG1vdmVEZWxpbWl0ZWRUZXh0KHBhcmVudE5vZGUsIG9wZW5p
bmdDb21tZW50LCBjbG9zaW5nQ29tbWVudCwgcmVmZXJlbmNlTm9kZSkge1xuXHQgIHZhciBub2Rl
ID0gb3BlbmluZ0NvbW1lbnQ7XG5cdCAgd2hpbGUgKHRydWUpIHtcblx0ICAgIHZhciBuZXh0Tm9k
ZSA9IG5vZGUubmV4dFNpYmxpbmc7XG5cdCAgICBpbnNlcnRDaGlsZEF0KHBhcmVudE5vZGUsIG5v
ZGUsIHJlZmVyZW5jZU5vZGUpO1xuXHQgICAgaWYgKG5vZGUgPT09IGNsb3NpbmdDb21tZW50KSB7
XG5cdCAgICAgIGJyZWFrO1xuXHQgICAgfVxuXHQgICAgbm9kZSA9IG5leHROb2RlO1xuXHQgIH1c
blx0fVxuXHRcblx0ZnVuY3Rpb24gcmVtb3ZlRGVsaW1pdGVkVGV4dChwYXJlbnROb2RlLCBzdGFy
dE5vZGUsIGNsb3NpbmdDb21tZW50KSB7XG5cdCAgd2hpbGUgKHRydWUpIHtcblx0ICAgIHZhciBu
b2RlID0gc3RhcnROb2RlLm5leHRTaWJsaW5nO1xuXHQgICAgaWYgKG5vZGUgPT09IGNsb3NpbmdD
b21tZW50KSB7XG5cdCAgICAgIC8vIFRoZSBjbG9zaW5nIGNvbW1lbnQgaXMgcmVtb3ZlZCBieSBS
ZWFjdE11bHRpQ2hpbGQuXG5cdCAgICAgIGJyZWFrO1xuXHQgICAgfSBlbHNlIHtcblx0ICAgICAg
cGFyZW50Tm9kZS5yZW1vdmVDaGlsZChub2RlKTtcblx0ICAgIH1cblx0ICB9XG5cdH1cblx0XG5c
dGZ1bmN0aW9uIHJlcGxhY2VEZWxpbWl0ZWRUZXh0KG9wZW5pbmdDb21tZW50LCBjbG9zaW5nQ29t
bWVudCwgc3RyaW5nVGV4dCkge1xuXHQgIHZhciBwYXJlbnROb2RlID0gb3BlbmluZ0NvbW1lbnQu
cGFyZW50Tm9kZTtcblx0ICB2YXIgbm9kZUFmdGVyQ29tbWVudCA9IG9wZW5pbmdDb21tZW50Lm5l
eHRTaWJsaW5nO1xuXHQgIGlmIChub2RlQWZ0ZXJDb21tZW50ID09PSBjbG9zaW5nQ29tbWVudCkg
e1xuXHQgICAgLy8gVGhlcmUgYXJlIG5vIHRleHQgbm9kZXMgYmV0d2VlbiB0aGUgb3BlbmluZyBh
bmQgY2xvc2luZyBjb21tZW50czsgaW5zZXJ0XG5cdCAgICAvLyBhIG5ldyBvbmUgaWYgc3RyaW5n
VGV4dCBpc24ndCBlbXB0eS5cblx0ICAgIGlmIChzdHJpbmdUZXh0KSB7XG5cdCAgICAgIGluc2Vy
dENoaWxkQXQocGFyZW50Tm9kZSwgZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoc3RyaW5nVGV4dCks
IG5vZGVBZnRlckNvbW1lbnQpO1xuXHQgICAgfVxuXHQgIH0gZWxzZSB7XG5cdCAgICBpZiAoc3Ry
aW5nVGV4dCkge1xuXHQgICAgICAvLyBTZXQgdGhlIHRleHQgY29udGVudCBvZiB0aGUgZmlyc3Qg
bm9kZSBhZnRlciB0aGUgb3BlbmluZyBjb21tZW50LCBhbmRcblx0ICAgICAgLy8gcmVtb3ZlIGFs
bCBmb2xsb3dpbmcgbm9kZXMgdXAgdW50aWwgdGhlIGNsb3NpbmcgY29tbWVudC5cblx0ICAgICAg
c2V0VGV4dENvbnRlbnQobm9kZUFmdGVyQ29tbWVudCwgc3RyaW5nVGV4dCk7XG5cdCAgICAgIHJl
bW92ZURlbGltaXRlZFRleHQocGFyZW50Tm9kZSwgbm9kZUFmdGVyQ29tbWVudCwgY2xvc2luZ0Nv
bW1lbnQpO1xuXHQgICAgfSBlbHNlIHtcblx0ICAgICAgcmVtb3ZlRGVsaW1pdGVkVGV4dChwYXJl
bnROb2RlLCBvcGVuaW5nQ29tbWVudCwgY2xvc2luZ0NvbW1lbnQpO1xuXHQgICAgfVxuXHQgIH1c
blx0XG5cdCAgaWYgKGZhbHNlKSB7XG5cdCAgICBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rv
b2wub25Ib3N0T3BlcmF0aW9uKHtcblx0ICAgICAgaW5zdGFuY2VJRDogUmVhY3RET01Db21wb25l
bnRUcmVlLmdldEluc3RhbmNlRnJvbU5vZGUob3BlbmluZ0NvbW1lbnQpLl9kZWJ1Z0lELFxuXHQg
ICAgICB0eXBlOiAncmVwbGFjZSB0ZXh0Jyxcblx0ICAgICAgcGF5bG9hZDogc3RyaW5nVGV4dFxu
XHQgICAgfSk7XG5cdCAgfVxuXHR9XG5cdFxuXHR2YXIgZGFuZ2Vyb3VzbHlSZXBsYWNlTm9kZVdp
dGhNYXJrdXAgPSBEYW5nZXIuZGFuZ2Vyb3VzbHlSZXBsYWNlTm9kZVdpdGhNYXJrdXA7XG5cdGlm
IChmYWxzZSkge1xuXHQgIGRhbmdlcm91c2x5UmVwbGFjZU5vZGVXaXRoTWFya3VwID0gZnVuY3Rp
b24gKG9sZENoaWxkLCBtYXJrdXAsIHByZXZJbnN0YW5jZSkge1xuXHQgICAgRGFuZ2VyLmRhbmdl
cm91c2x5UmVwbGFjZU5vZGVXaXRoTWFya3VwKG9sZENoaWxkLCBtYXJrdXApO1xuXHQgICAgaWYg
KHByZXZJbnN0YW5jZS5fZGVidWdJRCAhPT0gMCkge1xuXHQgICAgICBSZWFjdEluc3RydW1lbnRh
dGlvbi5kZWJ1Z1Rvb2wub25Ib3N0T3BlcmF0aW9uKHtcblx0ICAgICAgICBpbnN0YW5jZUlEOiBw
cmV2SW5zdGFuY2UuX2RlYnVnSUQsXG5cdCAgICAgICAgdHlwZTogJ3JlcGxhY2Ugd2l0aCcsXG5c
dCAgICAgICAgcGF5bG9hZDogbWFya3VwLnRvU3RyaW5nKClcblx0ICAgICAgfSk7XG5cdCAgICB9
IGVsc2Uge1xuXHQgICAgICB2YXIgbmV4dEluc3RhbmNlID0gUmVhY3RET01Db21wb25lbnRUcmVl
LmdldEluc3RhbmNlRnJvbU5vZGUobWFya3VwLm5vZGUpO1xuXHQgICAgICBpZiAobmV4dEluc3Rh
bmNlLl9kZWJ1Z0lEICE9PSAwKSB7XG5cdCAgICAgICAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVi
dWdUb29sLm9uSG9zdE9wZXJhdGlvbih7XG5cdCAgICAgICAgICBpbnN0YW5jZUlEOiBuZXh0SW5z
dGFuY2UuX2RlYnVnSUQsXG5cdCAgICAgICAgICB0eXBlOiAnbW91bnQnLFxuXHQgICAgICAgICAg
cGF5bG9hZDogbWFya3VwLnRvU3RyaW5nKClcblx0ICAgICAgICB9KTtcblx0ICAgICAgfVxuXHQg
ICAgfVxuXHQgIH07XG5cdH1cblx0XG5cdC8qKlxuXHQgKiBPcGVyYXRpb25zIGZvciB1cGRhdGlu
ZyB3aXRoIERPTSBjaGlsZHJlbi5cblx0ICovXG5cdHZhciBET01DaGlsZHJlbk9wZXJhdGlvbnMg
PSB7XG5cdCAgZGFuZ2Vyb3VzbHlSZXBsYWNlTm9kZVdpdGhNYXJrdXA6IGRhbmdlcm91c2x5UmVw
bGFjZU5vZGVXaXRoTWFya3VwLFxuXHRcblx0ICByZXBsYWNlRGVsaW1pdGVkVGV4dDogcmVwbGFj
ZURlbGltaXRlZFRleHQsXG5cdFxuXHQgIC8qKlxuXHQgICAqIFVwZGF0ZXMgYSBjb21wb25lbnQn
cyBjaGlsZHJlbiBieSBwcm9jZXNzaW5nIGEgc2VyaWVzIG9mIHVwZGF0ZXMuIFRoZVxuXHQgICAq
IHVwZGF0ZSBjb25maWd1cmF0aW9ucyBhcmUgZWFjaCBleHBlY3RlZCB0byBoYXZlIGEgYHBhcmVu
dE5vZGVgIHByb3BlcnR5LlxuXHQgICAqXG5cdCAgICogQHBhcmFtIHthcnJheTxvYmplY3Q+fSB1
cGRhdGVzIExpc3Qgb2YgdXBkYXRlIGNvbmZpZ3VyYXRpb25zLlxuXHQgICAqIEBpbnRlcm5hbFxu
XHQgICAqL1xuXHQgIHByb2Nlc3NVcGRhdGVzOiBmdW5jdGlvbiAocGFyZW50Tm9kZSwgdXBkYXRl
cykge1xuXHQgICAgaWYgKGZhbHNlKSB7XG5cdCAgICAgIHZhciBwYXJlbnROb2RlRGVidWdJRCA9
IFJlYWN0RE9NQ29tcG9uZW50VHJlZS5nZXRJbnN0YW5jZUZyb21Ob2RlKHBhcmVudE5vZGUpLl9k
ZWJ1Z0lEO1xuXHQgICAgfVxuXHRcblx0ICAgIGZvciAodmFyIGsgPSAwOyBrIDwgdXBkYXRlcy5s
ZW5ndGg7IGsrKykge1xuXHQgICAgICB2YXIgdXBkYXRlID0gdXBkYXRlc1trXTtcblx0ICAgICAg
c3dpdGNoICh1cGRhdGUudHlwZSkge1xuXHQgICAgICAgIGNhc2UgJ0lOU0VSVF9NQVJLVVAnOlxu
XHQgICAgICAgICAgaW5zZXJ0TGF6eVRyZWVDaGlsZEF0KHBhcmVudE5vZGUsIHVwZGF0ZS5jb250
ZW50LCBnZXROb2RlQWZ0ZXIocGFyZW50Tm9kZSwgdXBkYXRlLmFmdGVyTm9kZSkpO1xuXHQgICAg
ICAgICAgaWYgKGZhbHNlKSB7XG5cdCAgICAgICAgICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRl
YnVnVG9vbC5vbkhvc3RPcGVyYXRpb24oe1xuXHQgICAgICAgICAgICAgIGluc3RhbmNlSUQ6IHBh
cmVudE5vZGVEZWJ1Z0lELFxuXHQgICAgICAgICAgICAgIHR5cGU6ICdpbnNlcnQgY2hpbGQnLFxu
XHQgICAgICAgICAgICAgIHBheWxvYWQ6IHtcblx0ICAgICAgICAgICAgICAgIHRvSW5kZXg6IHVw
ZGF0ZS50b0luZGV4LFxuXHQgICAgICAgICAgICAgICAgY29udGVudDogdXBkYXRlLmNvbnRlbnQu
dG9TdHJpbmcoKVxuXHQgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgfSk7XG5cdCAgICAg
ICAgICB9XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICBjYXNlICdNT1ZFX0VYSVNUSU5H
Jzpcblx0ICAgICAgICAgIG1vdmVDaGlsZChwYXJlbnROb2RlLCB1cGRhdGUuZnJvbU5vZGUsIGdl
dE5vZGVBZnRlcihwYXJlbnROb2RlLCB1cGRhdGUuYWZ0ZXJOb2RlKSk7XG5cdCAgICAgICAgICBp
ZiAoZmFsc2UpIHtcblx0ICAgICAgICAgICAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29s
Lm9uSG9zdE9wZXJhdGlvbih7XG5cdCAgICAgICAgICAgICAgaW5zdGFuY2VJRDogcGFyZW50Tm9k
ZURlYnVnSUQsXG5cdCAgICAgICAgICAgICAgdHlwZTogJ21vdmUgY2hpbGQnLFxuXHQgICAgICAg
ICAgICAgIHBheWxvYWQ6IHsgZnJvbUluZGV4OiB1cGRhdGUuZnJvbUluZGV4LCB0b0luZGV4OiB1
cGRhdGUudG9JbmRleCB9XG5cdCAgICAgICAgICAgIH0pO1xuXHQgICAgICAgICAgfVxuXHQgICAg
ICAgICAgYnJlYWs7XG5cdCAgICAgICAgY2FzZSAnU0VUX01BUktVUCc6XG5cdCAgICAgICAgICBz
ZXRJbm5lckhUTUwocGFyZW50Tm9kZSwgdXBkYXRlLmNvbnRlbnQpO1xuXHQgICAgICAgICAgaWYg
KGZhbHNlKSB7XG5cdCAgICAgICAgICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5v
bkhvc3RPcGVyYXRpb24oe1xuXHQgICAgICAgICAgICAgIGluc3RhbmNlSUQ6IHBhcmVudE5vZGVE
ZWJ1Z0lELFxuXHQgICAgICAgICAgICAgIHR5cGU6ICdyZXBsYWNlIGNoaWxkcmVuJyxcblx0ICAg
ICAgICAgICAgICBwYXlsb2FkOiB1cGRhdGUuY29udGVudC50b1N0cmluZygpXG5cdCAgICAgICAg
ICAgIH0pO1xuXHQgICAgICAgICAgfVxuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgY2Fz
ZSAnVEVYVF9DT05URU5UJzpcblx0ICAgICAgICAgIHNldFRleHRDb250ZW50KHBhcmVudE5vZGUs
IHVwZGF0ZS5jb250ZW50KTtcblx0ICAgICAgICAgIGlmIChmYWxzZSkge1xuXHQgICAgICAgICAg
ICBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25Ib3N0T3BlcmF0aW9uKHtcblx0ICAg
ICAgICAgICAgICBpbnN0YW5jZUlEOiBwYXJlbnROb2RlRGVidWdJRCxcblx0ICAgICAgICAgICAg
ICB0eXBlOiAncmVwbGFjZSB0ZXh0Jyxcblx0ICAgICAgICAgICAgICBwYXlsb2FkOiB1cGRhdGUu
Y29udGVudC50b1N0cmluZygpXG5cdCAgICAgICAgICAgIH0pO1xuXHQgICAgICAgICAgfVxuXHQg
ICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgY2FzZSAnUkVNT1ZFX05PREUnOlxuXHQgICAgICAg
ICAgcmVtb3ZlQ2hpbGQocGFyZW50Tm9kZSwgdXBkYXRlLmZyb21Ob2RlKTtcblx0ICAgICAgICAg
IGlmIChmYWxzZSkge1xuXHQgICAgICAgICAgICBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rv
b2wub25Ib3N0T3BlcmF0aW9uKHtcblx0ICAgICAgICAgICAgICBpbnN0YW5jZUlEOiBwYXJlbnRO
b2RlRGVidWdJRCxcblx0ICAgICAgICAgICAgICB0eXBlOiAncmVtb3ZlIGNoaWxkJyxcblx0ICAg
ICAgICAgICAgICBwYXlsb2FkOiB7IGZyb21JbmRleDogdXBkYXRlLmZyb21JbmRleCB9XG5cdCAg
ICAgICAgICAgIH0pO1xuXHQgICAgICAgICAgfVxuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAg
IH1cblx0ICAgIH1cblx0ICB9XG5cdH07XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IERPTUNoaWxk
cmVuT3BlcmF0aW9ucztcblxuLyoqKi8gfSxcbi8qIDM1ICovXG4vKioqLyBmdW5jdGlvbihtb2R1
bGUsIGV4cG9ydHMpIHtcblxuXHQvKipcblx0ICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFj
ZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICogVGhpcyBz
b3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQg
aW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBz
b3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNh
biBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0
ICpcblx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHR2YXIgRE9NTmFtZXNwYWNlcyA9
IHtcblx0ICBodG1sOiAnaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCcsXG5cdCAgbWF0aG1s
OiAnaHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTCcsXG5cdCAgc3ZnOiAnaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmcnXG5cdH07XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IERPTU5h
bWVzcGFjZXM7XG5cbi8qKiovIH0sXG4vKiAzNiAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBl
eHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAy
MDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5c
dCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHls
ZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGly
ZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2Yg
cGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2Ft
ZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqIFxuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0
XG5cdHZhciBfcHJvZEludmFyaWFudCA9IF9fd2VicGFja19yZXF1aXJlX18oMyk7XG5cdFxuXHR2
YXIgaW52YXJpYW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxKTtcblx0XG5cdC8qKlxuXHQgKiBJ
bmplY3RhYmxlIG9yZGVyaW5nIG9mIGV2ZW50IHBsdWdpbnMuXG5cdCAqL1xuXHR2YXIgZXZlbnRQ
bHVnaW5PcmRlciA9IG51bGw7XG5cdFxuXHQvKipcblx0ICogSW5qZWN0YWJsZSBtYXBwaW5nIGZy
b20gbmFtZXMgdG8gZXZlbnQgcGx1Z2luIG1vZHVsZXMuXG5cdCAqL1xuXHR2YXIgbmFtZXNUb1Bs
dWdpbnMgPSB7fTtcblx0XG5cdC8qKlxuXHQgKiBSZWNvbXB1dGVzIHRoZSBwbHVnaW4gbGlzdCB1
c2luZyB0aGUgaW5qZWN0ZWQgcGx1Z2lucyBhbmQgcGx1Z2luIG9yZGVyaW5nLlxuXHQgKlxuXHQg
KiBAcHJpdmF0ZVxuXHQgKi9cblx0ZnVuY3Rpb24gcmVjb21wdXRlUGx1Z2luT3JkZXJpbmcoKSB7
XG5cdCAgaWYgKCFldmVudFBsdWdpbk9yZGVyKSB7XG5cdCAgICAvLyBXYWl0IHVudGlsIGFuIGBl
dmVudFBsdWdpbk9yZGVyYCBpcyBpbmplY3RlZC5cblx0ICAgIHJldHVybjtcblx0ICB9XG5cdCAg
Zm9yICh2YXIgcGx1Z2luTmFtZSBpbiBuYW1lc1RvUGx1Z2lucykge1xuXHQgICAgdmFyIHBsdWdp
bk1vZHVsZSA9IG5hbWVzVG9QbHVnaW5zW3BsdWdpbk5hbWVdO1xuXHQgICAgdmFyIHBsdWdpbklu
ZGV4ID0gZXZlbnRQbHVnaW5PcmRlci5pbmRleE9mKHBsdWdpbk5hbWUpO1xuXHQgICAgIShwbHVn
aW5JbmRleCA+IC0xKSA/ICBmYWxzZSA/IGludmFyaWFudChmYWxzZSwgJ0V2ZW50UGx1Z2luUmVn
aXN0cnk6IENhbm5vdCBpbmplY3QgZXZlbnQgcGx1Z2lucyB0aGF0IGRvIG5vdCBleGlzdCBpbiB0
aGUgcGx1Z2luIG9yZGVyaW5nLCBgJXNgLicsIHBsdWdpbk5hbWUpIDogX3Byb2RJbnZhcmlhbnQo
Jzk2JywgcGx1Z2luTmFtZSkgOiB2b2lkIDA7XG5cdCAgICBpZiAoRXZlbnRQbHVnaW5SZWdpc3Ry
eS5wbHVnaW5zW3BsdWdpbkluZGV4XSkge1xuXHQgICAgICBjb250aW51ZTtcblx0ICAgIH1cblx0
ICAgICFwbHVnaW5Nb2R1bGUuZXh0cmFjdEV2ZW50cyA/ICBmYWxzZSA/IGludmFyaWFudChmYWxz
ZSwgJ0V2ZW50UGx1Z2luUmVnaXN0cnk6IEV2ZW50IHBsdWdpbnMgbXVzdCBpbXBsZW1lbnQgYW4g
YGV4dHJhY3RFdmVudHNgIG1ldGhvZCwgYnV0IGAlc2AgZG9lcyBub3QuJywgcGx1Z2luTmFtZSkg
OiBfcHJvZEludmFyaWFudCgnOTcnLCBwbHVnaW5OYW1lKSA6IHZvaWQgMDtcblx0ICAgIEV2ZW50
UGx1Z2luUmVnaXN0cnkucGx1Z2luc1twbHVnaW5JbmRleF0gPSBwbHVnaW5Nb2R1bGU7XG5cdCAg
ICB2YXIgcHVibGlzaGVkRXZlbnRzID0gcGx1Z2luTW9kdWxlLmV2ZW50VHlwZXM7XG5cdCAgICBm
b3IgKHZhciBldmVudE5hbWUgaW4gcHVibGlzaGVkRXZlbnRzKSB7XG5cdCAgICAgICFwdWJsaXNo
RXZlbnRGb3JQbHVnaW4ocHVibGlzaGVkRXZlbnRzW2V2ZW50TmFtZV0sIHBsdWdpbk1vZHVsZSwg
ZXZlbnROYW1lKSA/ICBmYWxzZSA/IGludmFyaWFudChmYWxzZSwgJ0V2ZW50UGx1Z2luUmVnaXN0
cnk6IEZhaWxlZCB0byBwdWJsaXNoIGV2ZW50IGAlc2AgZm9yIHBsdWdpbiBgJXNgLicsIGV2ZW50
TmFtZSwgcGx1Z2luTmFtZSkgOiBfcHJvZEludmFyaWFudCgnOTgnLCBldmVudE5hbWUsIHBsdWdp
bk5hbWUpIDogdm9pZCAwO1xuXHQgICAgfVxuXHQgIH1cblx0fVxuXHRcblx0LyoqXG5cdCAqIFB1
Ymxpc2hlcyBhbiBldmVudCBzbyB0aGF0IGl0IGNhbiBiZSBkaXNwYXRjaGVkIGJ5IHRoZSBzdXBw
bGllZCBwbHVnaW4uXG5cdCAqXG5cdCAqIEBwYXJhbSB7b2JqZWN0fSBkaXNwYXRjaENvbmZpZyBE
aXNwYXRjaCBjb25maWd1cmF0aW9uIGZvciB0aGUgZXZlbnQuXG5cdCAqIEBwYXJhbSB7b2JqZWN0
fSBQbHVnaW5Nb2R1bGUgUGx1Z2luIHB1Ymxpc2hpbmcgdGhlIGV2ZW50LlxuXHQgKiBAcmV0dXJu
IHtib29sZWFufSBUcnVlIGlmIHRoZSBldmVudCB3YXMgc3VjY2Vzc2Z1bGx5IHB1Ymxpc2hlZC5c
blx0ICogQHByaXZhdGVcblx0ICovXG5cdGZ1bmN0aW9uIHB1Ymxpc2hFdmVudEZvclBsdWdpbihk
aXNwYXRjaENvbmZpZywgcGx1Z2luTW9kdWxlLCBldmVudE5hbWUpIHtcblx0ICAhIUV2ZW50UGx1
Z2luUmVnaXN0cnkuZXZlbnROYW1lRGlzcGF0Y2hDb25maWdzLmhhc093blByb3BlcnR5KGV2ZW50
TmFtZSkgPyAgZmFsc2UgPyBpbnZhcmlhbnQoZmFsc2UsICdFdmVudFBsdWdpbkh1YjogTW9yZSB0
aGFuIG9uZSBwbHVnaW4gYXR0ZW1wdGVkIHRvIHB1Ymxpc2ggdGhlIHNhbWUgZXZlbnQgbmFtZSwg
YCVzYC4nLCBldmVudE5hbWUpIDogX3Byb2RJbnZhcmlhbnQoJzk5JywgZXZlbnROYW1lKSA6IHZv
aWQgMDtcblx0ICBFdmVudFBsdWdpblJlZ2lzdHJ5LmV2ZW50TmFtZURpc3BhdGNoQ29uZmlnc1tl
dmVudE5hbWVdID0gZGlzcGF0Y2hDb25maWc7XG5cdFxuXHQgIHZhciBwaGFzZWRSZWdpc3RyYXRp
b25OYW1lcyA9IGRpc3BhdGNoQ29uZmlnLnBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzO1xuXHQgIGlm
IChwaGFzZWRSZWdpc3RyYXRpb25OYW1lcykge1xuXHQgICAgZm9yICh2YXIgcGhhc2VOYW1lIGlu
IHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzKSB7XG5cdCAgICAgIGlmIChwaGFzZWRSZWdpc3RyYXRp
b25OYW1lcy5oYXNPd25Qcm9wZXJ0eShwaGFzZU5hbWUpKSB7XG5cdCAgICAgICAgdmFyIHBoYXNl
ZFJlZ2lzdHJhdGlvbk5hbWUgPSBwaGFzZWRSZWdpc3RyYXRpb25OYW1lc1twaGFzZU5hbWVdO1xu
XHQgICAgICAgIHB1Ymxpc2hSZWdpc3RyYXRpb25OYW1lKHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWUs
IHBsdWdpbk1vZHVsZSwgZXZlbnROYW1lKTtcblx0ICAgICAgfVxuXHQgICAgfVxuXHQgICAgcmV0
dXJuIHRydWU7XG5cdCAgfSBlbHNlIGlmIChkaXNwYXRjaENvbmZpZy5yZWdpc3RyYXRpb25OYW1l
KSB7XG5cdCAgICBwdWJsaXNoUmVnaXN0cmF0aW9uTmFtZShkaXNwYXRjaENvbmZpZy5yZWdpc3Ry
YXRpb25OYW1lLCBwbHVnaW5Nb2R1bGUsIGV2ZW50TmFtZSk7XG5cdCAgICByZXR1cm4gdHJ1ZTtc
blx0ICB9XG5cdCAgcmV0dXJuIGZhbHNlO1xuXHR9XG5cdFxuXHQvKipcblx0ICogUHVibGlzaGVz
IGEgcmVnaXN0cmF0aW9uIG5hbWUgdGhhdCBpcyB1c2VkIHRvIGlkZW50aWZ5IGRpc3BhdGNoZWQg
ZXZlbnRzIGFuZFxuXHQgKiBjYW4gYmUgdXNlZCB3aXRoIGBFdmVudFBsdWdpbkh1Yi5wdXRMaXN0
ZW5lcmAgdG8gcmVnaXN0ZXIgbGlzdGVuZXJzLlxuXHQgKlxuXHQgKiBAcGFyYW0ge3N0cmluZ30g
cmVnaXN0cmF0aW9uTmFtZSBSZWdpc3RyYXRpb24gbmFtZSB0byBhZGQuXG5cdCAqIEBwYXJhbSB7
b2JqZWN0fSBQbHVnaW5Nb2R1bGUgUGx1Z2luIHB1Ymxpc2hpbmcgdGhlIGV2ZW50LlxuXHQgKiBA
cHJpdmF0ZVxuXHQgKi9cblx0ZnVuY3Rpb24gcHVibGlzaFJlZ2lzdHJhdGlvbk5hbWUocmVnaXN0
cmF0aW9uTmFtZSwgcGx1Z2luTW9kdWxlLCBldmVudE5hbWUpIHtcblx0ICAhIUV2ZW50UGx1Z2lu
UmVnaXN0cnkucmVnaXN0cmF0aW9uTmFtZU1vZHVsZXNbcmVnaXN0cmF0aW9uTmFtZV0gPyAgZmFs
c2UgPyBpbnZhcmlhbnQoZmFsc2UsICdFdmVudFBsdWdpbkh1YjogTW9yZSB0aGFuIG9uZSBwbHVn
aW4gYXR0ZW1wdGVkIHRvIHB1Ymxpc2ggdGhlIHNhbWUgcmVnaXN0cmF0aW9uIG5hbWUsIGAlc2Au
JywgcmVnaXN0cmF0aW9uTmFtZSkgOiBfcHJvZEludmFyaWFudCgnMTAwJywgcmVnaXN0cmF0aW9u
TmFtZSkgOiB2b2lkIDA7XG5cdCAgRXZlbnRQbHVnaW5SZWdpc3RyeS5yZWdpc3RyYXRpb25OYW1l
TW9kdWxlc1tyZWdpc3RyYXRpb25OYW1lXSA9IHBsdWdpbk1vZHVsZTtcblx0ICBFdmVudFBsdWdp
blJlZ2lzdHJ5LnJlZ2lzdHJhdGlvbk5hbWVEZXBlbmRlbmNpZXNbcmVnaXN0cmF0aW9uTmFtZV0g
PSBwbHVnaW5Nb2R1bGUuZXZlbnRUeXBlc1tldmVudE5hbWVdLmRlcGVuZGVuY2llcztcblx0XG5c
dCAgaWYgKGZhbHNlKSB7XG5cdCAgICB2YXIgbG93ZXJDYXNlZE5hbWUgPSByZWdpc3RyYXRpb25O
YW1lLnRvTG93ZXJDYXNlKCk7XG5cdCAgICBFdmVudFBsdWdpblJlZ2lzdHJ5LnBvc3NpYmxlUmVn
aXN0cmF0aW9uTmFtZXNbbG93ZXJDYXNlZE5hbWVdID0gcmVnaXN0cmF0aW9uTmFtZTtcblx0XG5c
dCAgICBpZiAocmVnaXN0cmF0aW9uTmFtZSA9PT0gJ29uRG91YmxlQ2xpY2snKSB7XG5cdCAgICAg
IEV2ZW50UGx1Z2luUmVnaXN0cnkucG9zc2libGVSZWdpc3RyYXRpb25OYW1lcy5vbmRibGNsaWNr
ID0gcmVnaXN0cmF0aW9uTmFtZTtcblx0ICAgIH1cblx0ICB9XG5cdH1cblx0XG5cdC8qKlxuXHQg
KiBSZWdpc3RlcnMgcGx1Z2lucyBzbyB0aGF0IHRoZXkgY2FuIGV4dHJhY3QgYW5kIGRpc3BhdGNo
IGV2ZW50cy5cblx0ICpcblx0ICogQHNlZSB7RXZlbnRQbHVnaW5IdWJ9XG5cdCAqL1xuXHR2YXIg
RXZlbnRQbHVnaW5SZWdpc3RyeSA9IHtcblx0ICAvKipcblx0ICAgKiBPcmRlcmVkIGxpc3Qgb2Yg
aW5qZWN0ZWQgcGx1Z2lucy5cblx0ICAgKi9cblx0ICBwbHVnaW5zOiBbXSxcblx0XG5cdCAgLyoq
XG5cdCAgICogTWFwcGluZyBmcm9tIGV2ZW50IG5hbWUgdG8gZGlzcGF0Y2ggY29uZmlnXG5cdCAg
ICovXG5cdCAgZXZlbnROYW1lRGlzcGF0Y2hDb25maWdzOiB7fSxcblx0XG5cdCAgLyoqXG5cdCAg
ICogTWFwcGluZyBmcm9tIHJlZ2lzdHJhdGlvbiBuYW1lIHRvIHBsdWdpbiBtb2R1bGVcblx0ICAg
Ki9cblx0ICByZWdpc3RyYXRpb25OYW1lTW9kdWxlczoge30sXG5cdFxuXHQgIC8qKlxuXHQgICAq
IE1hcHBpbmcgZnJvbSByZWdpc3RyYXRpb24gbmFtZSB0byBldmVudCBuYW1lXG5cdCAgICovXG5c
dCAgcmVnaXN0cmF0aW9uTmFtZURlcGVuZGVuY2llczoge30sXG5cdFxuXHQgIC8qKlxuXHQgICAq
IE1hcHBpbmcgZnJvbSBsb3dlcmNhc2UgcmVnaXN0cmF0aW9uIG5hbWVzIHRvIHRoZSBwcm9wZXJs
eSBjYXNlZCB2ZXJzaW9uLFxuXHQgICAqIHVzZWQgdG8gd2FybiBpbiB0aGUgY2FzZSBvZiBtaXNz
aW5nIGV2ZW50IGhhbmRsZXJzLiBBdmFpbGFibGVcblx0ICAgKiBvbmx5IGluIF9fREVWX18uXG5c
dCAgICogQHR5cGUge09iamVjdH1cblx0ICAgKi9cblx0ICBwb3NzaWJsZVJlZ2lzdHJhdGlvbk5h
bWVzOiAgZmFsc2UgPyB7fSA6IG51bGwsXG5cdCAgLy8gVHJ1c3QgdGhlIGRldmVsb3BlciB0byBv
bmx5IHVzZSBwb3NzaWJsZVJlZ2lzdHJhdGlvbk5hbWVzIGluIF9fREVWX19cblx0XG5cdCAgLyoq
XG5cdCAgICogSW5qZWN0cyBhbiBvcmRlcmluZyBvZiBwbHVnaW5zIChieSBwbHVnaW4gbmFtZSku
IFRoaXMgYWxsb3dzIHRoZSBvcmRlcmluZ1xuXHQgICAqIHRvIGJlIGRlY291cGxlZCBmcm9tIGlu
amVjdGlvbiBvZiB0aGUgYWN0dWFsIHBsdWdpbnMgc28gdGhhdCBvcmRlcmluZyBpc1xuXHQgICAq
IGFsd2F5cyBkZXRlcm1pbmlzdGljIHJlZ2FyZGxlc3Mgb2YgcGFja2FnaW5nLCBvbi10aGUtZmx5
IGluamVjdGlvbiwgZXRjLlxuXHQgICAqXG5cdCAgICogQHBhcmFtIHthcnJheX0gSW5qZWN0ZWRF
dmVudFBsdWdpbk9yZGVyXG5cdCAgICogQGludGVybmFsXG5cdCAgICogQHNlZSB7RXZlbnRQbHVn
aW5IdWIuaW5qZWN0aW9uLmluamVjdEV2ZW50UGx1Z2luT3JkZXJ9XG5cdCAgICovXG5cdCAgaW5q
ZWN0RXZlbnRQbHVnaW5PcmRlcjogZnVuY3Rpb24gKGluamVjdGVkRXZlbnRQbHVnaW5PcmRlcikg
e1xuXHQgICAgISFldmVudFBsdWdpbk9yZGVyID8gIGZhbHNlID8gaW52YXJpYW50KGZhbHNlLCAn
RXZlbnRQbHVnaW5SZWdpc3RyeTogQ2Fubm90IGluamVjdCBldmVudCBwbHVnaW4gb3JkZXJpbmcg
bW9yZSB0aGFuIG9uY2UuIFlvdSBhcmUgbGlrZWx5IHRyeWluZyB0byBsb2FkIG1vcmUgdGhhbiBv
bmUgY29weSBvZiBSZWFjdC4nKSA6IF9wcm9kSW52YXJpYW50KCcxMDEnKSA6IHZvaWQgMDtcblx0
ICAgIC8vIENsb25lIHRoZSBvcmRlcmluZyBzbyBpdCBjYW5ub3QgYmUgZHluYW1pY2FsbHkgbXV0
YXRlZC5cblx0ICAgIGV2ZW50UGx1Z2luT3JkZXIgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2Fs
bChpbmplY3RlZEV2ZW50UGx1Z2luT3JkZXIpO1xuXHQgICAgcmVjb21wdXRlUGx1Z2luT3JkZXJp
bmcoKTtcblx0ICB9LFxuXHRcblx0ICAvKipcblx0ICAgKiBJbmplY3RzIHBsdWdpbnMgdG8gYmUg
dXNlZCBieSBgRXZlbnRQbHVnaW5IdWJgLiBUaGUgcGx1Z2luIG5hbWVzIG11c3QgYmVcblx0ICAg
KiBpbiB0aGUgb3JkZXJpbmcgaW5qZWN0ZWQgYnkgYGluamVjdEV2ZW50UGx1Z2luT3JkZXJgLlxu
XHQgICAqXG5cdCAgICogUGx1Z2lucyBjYW4gYmUgaW5qZWN0ZWQgYXMgcGFydCBvZiBwYWdlIGlu
aXRpYWxpemF0aW9uIG9yIG9uLXRoZS1mbHkuXG5cdCAgICpcblx0ICAgKiBAcGFyYW0ge29iamVj
dH0gaW5qZWN0ZWROYW1lc1RvUGx1Z2lucyBNYXAgZnJvbSBuYW1lcyB0byBwbHVnaW4gbW9kdWxl
cy5cblx0ICAgKiBAaW50ZXJuYWxcblx0ICAgKiBAc2VlIHtFdmVudFBsdWdpbkh1Yi5pbmplY3Rp
b24uaW5qZWN0RXZlbnRQbHVnaW5zQnlOYW1lfVxuXHQgICAqL1xuXHQgIGluamVjdEV2ZW50UGx1
Z2luc0J5TmFtZTogZnVuY3Rpb24gKGluamVjdGVkTmFtZXNUb1BsdWdpbnMpIHtcblx0ICAgIHZh
ciBpc09yZGVyaW5nRGlydHkgPSBmYWxzZTtcblx0ICAgIGZvciAodmFyIHBsdWdpbk5hbWUgaW4g
aW5qZWN0ZWROYW1lc1RvUGx1Z2lucykge1xuXHQgICAgICBpZiAoIWluamVjdGVkTmFtZXNUb1Bs
dWdpbnMuaGFzT3duUHJvcGVydHkocGx1Z2luTmFtZSkpIHtcblx0ICAgICAgICBjb250aW51ZTtc
blx0ICAgICAgfVxuXHQgICAgICB2YXIgcGx1Z2luTW9kdWxlID0gaW5qZWN0ZWROYW1lc1RvUGx1
Z2luc1twbHVnaW5OYW1lXTtcblx0ICAgICAgaWYgKCFuYW1lc1RvUGx1Z2lucy5oYXNPd25Qcm9w
ZXJ0eShwbHVnaW5OYW1lKSB8fCBuYW1lc1RvUGx1Z2luc1twbHVnaW5OYW1lXSAhPT0gcGx1Z2lu
TW9kdWxlKSB7XG5cdCAgICAgICAgISFuYW1lc1RvUGx1Z2luc1twbHVnaW5OYW1lXSA/ICBmYWxz
ZSA/IGludmFyaWFudChmYWxzZSwgJ0V2ZW50UGx1Z2luUmVnaXN0cnk6IENhbm5vdCBpbmplY3Qg
dHdvIGRpZmZlcmVudCBldmVudCBwbHVnaW5zIHVzaW5nIHRoZSBzYW1lIG5hbWUsIGAlc2AuJywg
cGx1Z2luTmFtZSkgOiBfcHJvZEludmFyaWFudCgnMTAyJywgcGx1Z2luTmFtZSkgOiB2b2lkIDA7
XG5cdCAgICAgICAgbmFtZXNUb1BsdWdpbnNbcGx1Z2luTmFtZV0gPSBwbHVnaW5Nb2R1bGU7XG5c
dCAgICAgICAgaXNPcmRlcmluZ0RpcnR5ID0gdHJ1ZTtcblx0ICAgICAgfVxuXHQgICAgfVxuXHQg
ICAgaWYgKGlzT3JkZXJpbmdEaXJ0eSkge1xuXHQgICAgICByZWNvbXB1dGVQbHVnaW5PcmRlcmlu
ZygpO1xuXHQgICAgfVxuXHQgIH0sXG5cdFxuXHQgIC8qKlxuXHQgICAqIExvb2tzIHVwIHRoZSBw
bHVnaW4gZm9yIHRoZSBzdXBwbGllZCBldmVudC5cblx0ICAgKlxuXHQgICAqIEBwYXJhbSB7b2Jq
ZWN0fSBldmVudCBBIHN5bnRoZXRpYyBldmVudC5cblx0ICAgKiBAcmV0dXJuIHs/b2JqZWN0fSBU
aGUgcGx1Z2luIHRoYXQgY3JlYXRlZCB0aGUgc3VwcGxpZWQgZXZlbnQuXG5cdCAgICogQGludGVy
bmFsXG5cdCAgICovXG5cdCAgZ2V0UGx1Z2luTW9kdWxlRm9yRXZlbnQ6IGZ1bmN0aW9uIChldmVu
dCkge1xuXHQgICAgdmFyIGRpc3BhdGNoQ29uZmlnID0gZXZlbnQuZGlzcGF0Y2hDb25maWc7XG5c
dCAgICBpZiAoZGlzcGF0Y2hDb25maWcucmVnaXN0cmF0aW9uTmFtZSkge1xuXHQgICAgICByZXR1
cm4gRXZlbnRQbHVnaW5SZWdpc3RyeS5yZWdpc3RyYXRpb25OYW1lTW9kdWxlc1tkaXNwYXRjaENv
bmZpZy5yZWdpc3RyYXRpb25OYW1lXSB8fCBudWxsO1xuXHQgICAgfVxuXHQgICAgaWYgKGRpc3Bh
dGNoQ29uZmlnLnBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzICE9PSB1bmRlZmluZWQpIHtcblx0ICAg
ICAgLy8gcHVsbGluZyBwaGFzZWRSZWdpc3RyYXRpb25OYW1lcyBvdXQgb2YgZGlzcGF0Y2hDb25m
aWcgaGVscHMgRmxvdyBzZWVcblx0ICAgICAgLy8gdGhhdCBpdCBpcyBub3QgdW5kZWZpbmVkLlxu
XHQgICAgICB2YXIgcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXMgPSBkaXNwYXRjaENvbmZpZy5waGFz
ZWRSZWdpc3RyYXRpb25OYW1lcztcblx0XG5cdCAgICAgIGZvciAodmFyIHBoYXNlIGluIHBoYXNl
ZFJlZ2lzdHJhdGlvbk5hbWVzKSB7XG5cdCAgICAgICAgaWYgKCFwaGFzZWRSZWdpc3RyYXRpb25O
YW1lcy5oYXNPd25Qcm9wZXJ0eShwaGFzZSkpIHtcblx0ICAgICAgICAgIGNvbnRpbnVlO1xuXHQg
ICAgICAgIH1cblx0ICAgICAgICB2YXIgcGx1Z2luTW9kdWxlID0gRXZlbnRQbHVnaW5SZWdpc3Ry
eS5yZWdpc3RyYXRpb25OYW1lTW9kdWxlc1twaGFzZWRSZWdpc3RyYXRpb25OYW1lc1twaGFzZV1d
O1xuXHQgICAgICAgIGlmIChwbHVnaW5Nb2R1bGUpIHtcblx0ICAgICAgICAgIHJldHVybiBwbHVn
aW5Nb2R1bGU7XG5cdCAgICAgICAgfVxuXHQgICAgICB9XG5cdCAgICB9XG5cdCAgICByZXR1cm4g
bnVsbDtcblx0ICB9LFxuXHRcblx0ICAvKipcblx0ICAgKiBFeHBvc2VkIGZvciB1bml0IHRlc3Rp
bmcuXG5cdCAgICogQHByaXZhdGVcblx0ICAgKi9cblx0ICBfcmVzZXRFdmVudFBsdWdpbnM6IGZ1
bmN0aW9uICgpIHtcblx0ICAgIGV2ZW50UGx1Z2luT3JkZXIgPSBudWxsO1xuXHQgICAgZm9yICh2
YXIgcGx1Z2luTmFtZSBpbiBuYW1lc1RvUGx1Z2lucykge1xuXHQgICAgICBpZiAobmFtZXNUb1Bs
dWdpbnMuaGFzT3duUHJvcGVydHkocGx1Z2luTmFtZSkpIHtcblx0ICAgICAgICBkZWxldGUgbmFt
ZXNUb1BsdWdpbnNbcGx1Z2luTmFtZV07XG5cdCAgICAgIH1cblx0ICAgIH1cblx0ICAgIEV2ZW50
UGx1Z2luUmVnaXN0cnkucGx1Z2lucy5sZW5ndGggPSAwO1xuXHRcblx0ICAgIHZhciBldmVudE5h
bWVEaXNwYXRjaENvbmZpZ3MgPSBFdmVudFBsdWdpblJlZ2lzdHJ5LmV2ZW50TmFtZURpc3BhdGNo
Q29uZmlncztcblx0ICAgIGZvciAodmFyIGV2ZW50TmFtZSBpbiBldmVudE5hbWVEaXNwYXRjaENv
bmZpZ3MpIHtcblx0ICAgICAgaWYgKGV2ZW50TmFtZURpc3BhdGNoQ29uZmlncy5oYXNPd25Qcm9w
ZXJ0eShldmVudE5hbWUpKSB7XG5cdCAgICAgICAgZGVsZXRlIGV2ZW50TmFtZURpc3BhdGNoQ29u
Zmlnc1tldmVudE5hbWVdO1xuXHQgICAgICB9XG5cdCAgICB9XG5cdFxuXHQgICAgdmFyIHJlZ2lz
dHJhdGlvbk5hbWVNb2R1bGVzID0gRXZlbnRQbHVnaW5SZWdpc3RyeS5yZWdpc3RyYXRpb25OYW1l
TW9kdWxlcztcblx0ICAgIGZvciAodmFyIHJlZ2lzdHJhdGlvbk5hbWUgaW4gcmVnaXN0cmF0aW9u
TmFtZU1vZHVsZXMpIHtcblx0ICAgICAgaWYgKHJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVzLmhhc093
blByb3BlcnR5KHJlZ2lzdHJhdGlvbk5hbWUpKSB7XG5cdCAgICAgICAgZGVsZXRlIHJlZ2lzdHJh
dGlvbk5hbWVNb2R1bGVzW3JlZ2lzdHJhdGlvbk5hbWVdO1xuXHQgICAgICB9XG5cdCAgICB9XG5c
dFxuXHQgICAgaWYgKGZhbHNlKSB7XG5cdCAgICAgIHZhciBwb3NzaWJsZVJlZ2lzdHJhdGlvbk5h
bWVzID0gRXZlbnRQbHVnaW5SZWdpc3RyeS5wb3NzaWJsZVJlZ2lzdHJhdGlvbk5hbWVzO1xuXHQg
ICAgICBmb3IgKHZhciBsb3dlckNhc2VkTmFtZSBpbiBwb3NzaWJsZVJlZ2lzdHJhdGlvbk5hbWVz
KSB7XG5cdCAgICAgICAgaWYgKHBvc3NpYmxlUmVnaXN0cmF0aW9uTmFtZXMuaGFzT3duUHJvcGVy
dHkobG93ZXJDYXNlZE5hbWUpKSB7XG5cdCAgICAgICAgICBkZWxldGUgcG9zc2libGVSZWdpc3Ry
YXRpb25OYW1lc1tsb3dlckNhc2VkTmFtZV07XG5cdCAgICAgICAgfVxuXHQgICAgICB9XG5cdCAg
ICB9XG5cdCAgfVxuXHR9O1xuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBFdmVudFBsdWdpblJlZ2lz
dHJ5O1xuXG4vKioqLyB9LFxuLyogMzcgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0
cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxMy1w
cmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxu
XHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGlj
ZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9y
eSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVu
dCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGly
ZWN0b3J5LlxuXHQgKlxuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdHZhciBfcHJv
ZEludmFyaWFudCA9IF9fd2VicGFja19yZXF1aXJlX18oMyk7XG5cdFxuXHR2YXIgUmVhY3RFcnJv
clV0aWxzID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0MSk7XG5cdFxuXHR2YXIgaW52YXJpYW50ID0g
X193ZWJwYWNrX3JlcXVpcmVfXygxKTtcblx0dmFyIHdhcm5pbmcgPSBfX3dlYnBhY2tfcmVxdWly
ZV9fKDIpO1xuXHRcblx0LyoqXG5cdCAqIEluamVjdGVkIGRlcGVuZGVuY2llczpcblx0ICovXG5c
dFxuXHQvKipcblx0ICogLSBgQ29tcG9uZW50VHJlZWA6IFtyZXF1aXJlZF0gTW9kdWxlIHRoYXQg
Y2FuIGNvbnZlcnQgYmV0d2VlbiBSZWFjdCBpbnN0YW5jZXNcblx0ICogICBhbmQgYWN0dWFsIG5v
ZGUgcmVmZXJlbmNlcy5cblx0ICovXG5cdHZhciBDb21wb25lbnRUcmVlO1xuXHR2YXIgVHJlZVRy
YXZlcnNhbDtcblx0dmFyIGluamVjdGlvbiA9IHtcblx0ICBpbmplY3RDb21wb25lbnRUcmVlOiBm
dW5jdGlvbiAoSW5qZWN0ZWQpIHtcblx0ICAgIENvbXBvbmVudFRyZWUgPSBJbmplY3RlZDtcblx0
ICAgIGlmIChmYWxzZSkge1xuXHQgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1
Y3Rpb24nID8gd2FybmluZyhJbmplY3RlZCAmJiBJbmplY3RlZC5nZXROb2RlRnJvbUluc3RhbmNl
ICYmIEluamVjdGVkLmdldEluc3RhbmNlRnJvbU5vZGUsICdFdmVudFBsdWdpblV0aWxzLmluamVj
dGlvbi5pbmplY3RDb21wb25lbnRUcmVlKC4uLik6IEluamVjdGVkICcgKyAnbW9kdWxlIGlzIG1p
c3NpbmcgZ2V0Tm9kZUZyb21JbnN0YW5jZSBvciBnZXRJbnN0YW5jZUZyb21Ob2RlLicpIDogdm9p
ZCAwO1xuXHQgICAgfVxuXHQgIH0sXG5cdCAgaW5qZWN0VHJlZVRyYXZlcnNhbDogZnVuY3Rpb24g
KEluamVjdGVkKSB7XG5cdCAgICBUcmVlVHJhdmVyc2FsID0gSW5qZWN0ZWQ7XG5cdCAgICBpZiAo
ZmFsc2UpIHtcblx0ICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/
IHdhcm5pbmcoSW5qZWN0ZWQgJiYgSW5qZWN0ZWQuaXNBbmNlc3RvciAmJiBJbmplY3RlZC5nZXRM
b3dlc3RDb21tb25BbmNlc3RvciwgJ0V2ZW50UGx1Z2luVXRpbHMuaW5qZWN0aW9uLmluamVjdFRy
ZWVUcmF2ZXJzYWwoLi4uKTogSW5qZWN0ZWQgJyArICdtb2R1bGUgaXMgbWlzc2luZyBpc0FuY2Vz
dG9yIG9yIGdldExvd2VzdENvbW1vbkFuY2VzdG9yLicpIDogdm9pZCAwO1xuXHQgICAgfVxuXHQg
IH1cblx0fTtcblx0XG5cdGZ1bmN0aW9uIGlzRW5kaXNoKHRvcExldmVsVHlwZSkge1xuXHQgIHJl
dHVybiB0b3BMZXZlbFR5cGUgPT09ICd0b3BNb3VzZVVwJyB8fCB0b3BMZXZlbFR5cGUgPT09ICd0
b3BUb3VjaEVuZCcgfHwgdG9wTGV2ZWxUeXBlID09PSAndG9wVG91Y2hDYW5jZWwnO1xuXHR9XG5c
dFxuXHRmdW5jdGlvbiBpc01vdmVpc2godG9wTGV2ZWxUeXBlKSB7XG5cdCAgcmV0dXJuIHRvcExl
dmVsVHlwZSA9PT0gJ3RvcE1vdXNlTW92ZScgfHwgdG9wTGV2ZWxUeXBlID09PSAndG9wVG91Y2hN
b3ZlJztcblx0fVxuXHRmdW5jdGlvbiBpc1N0YXJ0aXNoKHRvcExldmVsVHlwZSkge1xuXHQgIHJl
dHVybiB0b3BMZXZlbFR5cGUgPT09ICd0b3BNb3VzZURvd24nIHx8IHRvcExldmVsVHlwZSA9PT0g
J3RvcFRvdWNoU3RhcnQnO1xuXHR9XG5cdFxuXHR2YXIgdmFsaWRhdGVFdmVudERpc3BhdGNoZXM7
XG5cdGlmIChmYWxzZSkge1xuXHQgIHZhbGlkYXRlRXZlbnREaXNwYXRjaGVzID0gZnVuY3Rpb24g
KGV2ZW50KSB7XG5cdCAgICB2YXIgZGlzcGF0Y2hMaXN0ZW5lcnMgPSBldmVudC5fZGlzcGF0Y2hM
aXN0ZW5lcnM7XG5cdCAgICB2YXIgZGlzcGF0Y2hJbnN0YW5jZXMgPSBldmVudC5fZGlzcGF0Y2hJ
bnN0YW5jZXM7XG5cdFxuXHQgICAgdmFyIGxpc3RlbmVyc0lzQXJyID0gQXJyYXkuaXNBcnJheShk
aXNwYXRjaExpc3RlbmVycyk7XG5cdCAgICB2YXIgbGlzdGVuZXJzTGVuID0gbGlzdGVuZXJzSXNB
cnIgPyBkaXNwYXRjaExpc3RlbmVycy5sZW5ndGggOiBkaXNwYXRjaExpc3RlbmVycyA/IDEgOiAw
O1xuXHRcblx0ICAgIHZhciBpbnN0YW5jZXNJc0FyciA9IEFycmF5LmlzQXJyYXkoZGlzcGF0Y2hJ
bnN0YW5jZXMpO1xuXHQgICAgdmFyIGluc3RhbmNlc0xlbiA9IGluc3RhbmNlc0lzQXJyID8gZGlz
cGF0Y2hJbnN0YW5jZXMubGVuZ3RoIDogZGlzcGF0Y2hJbnN0YW5jZXMgPyAxIDogMDtcblx0XG5c
dCAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhpbnN0
YW5jZXNJc0FyciA9PT0gbGlzdGVuZXJzSXNBcnIgJiYgaW5zdGFuY2VzTGVuID09PSBsaXN0ZW5l
cnNMZW4sICdFdmVudFBsdWdpblV0aWxzOiBJbnZhbGlkIGBldmVudGAuJykgOiB2b2lkIDA7XG5c
dCAgfTtcblx0fVxuXHRcblx0LyoqXG5cdCAqIERpc3BhdGNoIHRoZSBldmVudCB0byB0aGUgbGlz
dGVuZXIuXG5cdCAqIEBwYXJhbSB7U3ludGhldGljRXZlbnR9IGV2ZW50IFN5bnRoZXRpY0V2ZW50
IHRvIGhhbmRsZVxuXHQgKiBAcGFyYW0ge2Jvb2xlYW59IHNpbXVsYXRlZCBJZiB0aGUgZXZlbnQg
aXMgc2ltdWxhdGVkIChjaGFuZ2VzIGV4biBiZWhhdmlvcilcblx0ICogQHBhcmFtIHtmdW5jdGlv
bn0gbGlzdGVuZXIgQXBwbGljYXRpb24tbGV2ZWwgY2FsbGJhY2tcblx0ICogQHBhcmFtIHsqfSBp
bnN0IEludGVybmFsIGNvbXBvbmVudCBpbnN0YW5jZVxuXHQgKi9cblx0ZnVuY3Rpb24gZXhlY3V0
ZURpc3BhdGNoKGV2ZW50LCBzaW11bGF0ZWQsIGxpc3RlbmVyLCBpbnN0KSB7XG5cdCAgdmFyIHR5
cGUgPSBldmVudC50eXBlIHx8ICd1bmtub3duLWV2ZW50Jztcblx0ICBldmVudC5jdXJyZW50VGFy
Z2V0ID0gRXZlbnRQbHVnaW5VdGlscy5nZXROb2RlRnJvbUluc3RhbmNlKGluc3QpO1xuXHQgIGlm
IChzaW11bGF0ZWQpIHtcblx0ICAgIFJlYWN0RXJyb3JVdGlscy5pbnZva2VHdWFyZGVkQ2FsbGJh
Y2tXaXRoQ2F0Y2godHlwZSwgbGlzdGVuZXIsIGV2ZW50KTtcblx0ICB9IGVsc2Uge1xuXHQgICAg
UmVhY3RFcnJvclV0aWxzLmludm9rZUd1YXJkZWRDYWxsYmFjayh0eXBlLCBsaXN0ZW5lciwgZXZl
bnQpO1xuXHQgIH1cblx0ICBldmVudC5jdXJyZW50VGFyZ2V0ID0gbnVsbDtcblx0fVxuXHRcblx0
LyoqXG5cdCAqIFN0YW5kYXJkL3NpbXBsZSBpdGVyYXRpb24gdGhyb3VnaCBhbiBldmVudCdzIGNv
bGxlY3RlZCBkaXNwYXRjaGVzLlxuXHQgKi9cblx0ZnVuY3Rpb24gZXhlY3V0ZURpc3BhdGNoZXNJ
bk9yZGVyKGV2ZW50LCBzaW11bGF0ZWQpIHtcblx0ICB2YXIgZGlzcGF0Y2hMaXN0ZW5lcnMgPSBl
dmVudC5fZGlzcGF0Y2hMaXN0ZW5lcnM7XG5cdCAgdmFyIGRpc3BhdGNoSW5zdGFuY2VzID0gZXZl
bnQuX2Rpc3BhdGNoSW5zdGFuY2VzO1xuXHQgIGlmIChmYWxzZSkge1xuXHQgICAgdmFsaWRhdGVF
dmVudERpc3BhdGNoZXMoZXZlbnQpO1xuXHQgIH1cblx0ICBpZiAoQXJyYXkuaXNBcnJheShkaXNw
YXRjaExpc3RlbmVycykpIHtcblx0ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZGlzcGF0Y2hMaXN0
ZW5lcnMubGVuZ3RoOyBpKyspIHtcblx0ICAgICAgaWYgKGV2ZW50LmlzUHJvcGFnYXRpb25TdG9w
cGVkKCkpIHtcblx0ICAgICAgICBicmVhaztcblx0ICAgICAgfVxuXHQgICAgICAvLyBMaXN0ZW5l
cnMgYW5kIEluc3RhbmNlcyBhcmUgdHdvIHBhcmFsbGVsIGFycmF5cyB0aGF0IGFyZSBhbHdheXMg
aW4gc3luYy5cblx0ICAgICAgZXhlY3V0ZURpc3BhdGNoKGV2ZW50LCBzaW11bGF0ZWQsIGRpc3Bh
dGNoTGlzdGVuZXJzW2ldLCBkaXNwYXRjaEluc3RhbmNlc1tpXSk7XG5cdCAgICB9XG5cdCAgfSBl
bHNlIGlmIChkaXNwYXRjaExpc3RlbmVycykge1xuXHQgICAgZXhlY3V0ZURpc3BhdGNoKGV2ZW50
LCBzaW11bGF0ZWQsIGRpc3BhdGNoTGlzdGVuZXJzLCBkaXNwYXRjaEluc3RhbmNlcyk7XG5cdCAg
fVxuXHQgIGV2ZW50Ll9kaXNwYXRjaExpc3RlbmVycyA9IG51bGw7XG5cdCAgZXZlbnQuX2Rpc3Bh
dGNoSW5zdGFuY2VzID0gbnVsbDtcblx0fVxuXHRcblx0LyoqXG5cdCAqIFN0YW5kYXJkL3NpbXBs
ZSBpdGVyYXRpb24gdGhyb3VnaCBhbiBldmVudCdzIGNvbGxlY3RlZCBkaXNwYXRjaGVzLCBidXQg
c3RvcHNcblx0ICogYXQgdGhlIGZpcnN0IGRpc3BhdGNoIGV4ZWN1dGlvbiByZXR1cm5pbmcgdHJ1
ZSwgYW5kIHJldHVybnMgdGhhdCBpZC5cblx0ICpcblx0ICogQHJldHVybiB7P3N0cmluZ30gaWQg
b2YgdGhlIGZpcnN0IGRpc3BhdGNoIGV4ZWN1dGlvbiB3aG8ncyBsaXN0ZW5lciByZXR1cm5zXG5c
dCAqIHRydWUsIG9yIG51bGwgaWYgbm8gbGlzdGVuZXIgcmV0dXJuZWQgdHJ1ZS5cblx0ICovXG5c
dGZ1bmN0aW9uIGV4ZWN1dGVEaXNwYXRjaGVzSW5PcmRlclN0b3BBdFRydWVJbXBsKGV2ZW50KSB7
XG5cdCAgdmFyIGRpc3BhdGNoTGlzdGVuZXJzID0gZXZlbnQuX2Rpc3BhdGNoTGlzdGVuZXJzO1xu
XHQgIHZhciBkaXNwYXRjaEluc3RhbmNlcyA9IGV2ZW50Ll9kaXNwYXRjaEluc3RhbmNlcztcblx0
ICBpZiAoZmFsc2UpIHtcblx0ICAgIHZhbGlkYXRlRXZlbnREaXNwYXRjaGVzKGV2ZW50KTtcblx0
ICB9XG5cdCAgaWYgKEFycmF5LmlzQXJyYXkoZGlzcGF0Y2hMaXN0ZW5lcnMpKSB7XG5cdCAgICBm
b3IgKHZhciBpID0gMDsgaSA8IGRpc3BhdGNoTGlzdGVuZXJzLmxlbmd0aDsgaSsrKSB7XG5cdCAg
ICAgIGlmIChldmVudC5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpKSB7XG5cdCAgICAgICAgYnJlYWs7
XG5cdCAgICAgIH1cblx0ICAgICAgLy8gTGlzdGVuZXJzIGFuZCBJbnN0YW5jZXMgYXJlIHR3byBw
YXJhbGxlbCBhcnJheXMgdGhhdCBhcmUgYWx3YXlzIGluIHN5bmMuXG5cdCAgICAgIGlmIChkaXNw
YXRjaExpc3RlbmVyc1tpXShldmVudCwgZGlzcGF0Y2hJbnN0YW5jZXNbaV0pKSB7XG5cdCAgICAg
ICAgcmV0dXJuIGRpc3BhdGNoSW5zdGFuY2VzW2ldO1xuXHQgICAgICB9XG5cdCAgICB9XG5cdCAg
fSBlbHNlIGlmIChkaXNwYXRjaExpc3RlbmVycykge1xuXHQgICAgaWYgKGRpc3BhdGNoTGlzdGVu
ZXJzKGV2ZW50LCBkaXNwYXRjaEluc3RhbmNlcykpIHtcblx0ICAgICAgcmV0dXJuIGRpc3BhdGNo
SW5zdGFuY2VzO1xuXHQgICAgfVxuXHQgIH1cblx0ICByZXR1cm4gbnVsbDtcblx0fVxuXHRcblx0
LyoqXG5cdCAqIEBzZWUgZXhlY3V0ZURpc3BhdGNoZXNJbk9yZGVyU3RvcEF0VHJ1ZUltcGxcblx0
ICovXG5cdGZ1bmN0aW9uIGV4ZWN1dGVEaXNwYXRjaGVzSW5PcmRlclN0b3BBdFRydWUoZXZlbnQp
IHtcblx0ICB2YXIgcmV0ID0gZXhlY3V0ZURpc3BhdGNoZXNJbk9yZGVyU3RvcEF0VHJ1ZUltcGwo
ZXZlbnQpO1xuXHQgIGV2ZW50Ll9kaXNwYXRjaEluc3RhbmNlcyA9IG51bGw7XG5cdCAgZXZlbnQu
X2Rpc3BhdGNoTGlzdGVuZXJzID0gbnVsbDtcblx0ICByZXR1cm4gcmV0O1xuXHR9XG5cdFxuXHQv
Kipcblx0ICogRXhlY3V0aW9uIG9mIGEgXCJkaXJlY3RcIiBkaXNwYXRjaCAtIHRoZXJlIG11c3Qg
YmUgYXQgbW9zdCBvbmUgZGlzcGF0Y2hcblx0ICogYWNjdW11bGF0ZWQgb24gdGhlIGV2ZW50IG9y
IGl0IGlzIGNvbnNpZGVyZWQgYW4gZXJyb3IuIEl0IGRvZXNuJ3QgcmVhbGx5IG1ha2Vcblx0ICog
c2Vuc2UgZm9yIGFuIGV2ZW50IHdpdGggbXVsdGlwbGUgZGlzcGF0Y2hlcyAoYnViYmxlZCkgdG8g
a2VlcCB0cmFjayBvZiB0aGVcblx0ICogcmV0dXJuIHZhbHVlcyBhdCBlYWNoIGRpc3BhdGNoIGV4
ZWN1dGlvbiwgYnV0IGl0IGRvZXMgdGVuZCB0byBtYWtlIHNlbnNlIHdoZW5cblx0ICogZGVhbGlu
ZyB3aXRoIFwiZGlyZWN0XCIgZGlzcGF0Y2hlcy5cblx0ICpcblx0ICogQHJldHVybiB7Kn0gVGhl
IHJldHVybiB2YWx1ZSBvZiBleGVjdXRpbmcgdGhlIHNpbmdsZSBkaXNwYXRjaC5cblx0ICovXG5c
dGZ1bmN0aW9uIGV4ZWN1dGVEaXJlY3REaXNwYXRjaChldmVudCkge1xuXHQgIGlmIChmYWxzZSkg
e1xuXHQgICAgdmFsaWRhdGVFdmVudERpc3BhdGNoZXMoZXZlbnQpO1xuXHQgIH1cblx0ICB2YXIg
ZGlzcGF0Y2hMaXN0ZW5lciA9IGV2ZW50Ll9kaXNwYXRjaExpc3RlbmVycztcblx0ICB2YXIgZGlz
cGF0Y2hJbnN0YW5jZSA9IGV2ZW50Ll9kaXNwYXRjaEluc3RhbmNlcztcblx0ICAhIUFycmF5Lmlz
QXJyYXkoZGlzcGF0Y2hMaXN0ZW5lcikgPyAgZmFsc2UgPyBpbnZhcmlhbnQoZmFsc2UsICdleGVj
dXRlRGlyZWN0RGlzcGF0Y2goLi4uKTogSW52YWxpZCBgZXZlbnRgLicpIDogX3Byb2RJbnZhcmlh
bnQoJzEwMycpIDogdm9pZCAwO1xuXHQgIGV2ZW50LmN1cnJlbnRUYXJnZXQgPSBkaXNwYXRjaExp
c3RlbmVyID8gRXZlbnRQbHVnaW5VdGlscy5nZXROb2RlRnJvbUluc3RhbmNlKGRpc3BhdGNoSW5z
dGFuY2UpIDogbnVsbDtcblx0ICB2YXIgcmVzID0gZGlzcGF0Y2hMaXN0ZW5lciA/IGRpc3BhdGNo
TGlzdGVuZXIoZXZlbnQpIDogbnVsbDtcblx0ICBldmVudC5jdXJyZW50VGFyZ2V0ID0gbnVsbDtc
blx0ICBldmVudC5fZGlzcGF0Y2hMaXN0ZW5lcnMgPSBudWxsO1xuXHQgIGV2ZW50Ll9kaXNwYXRj
aEluc3RhbmNlcyA9IG51bGw7XG5cdCAgcmV0dXJuIHJlcztcblx0fVxuXHRcblx0LyoqXG5cdCAq
IEBwYXJhbSB7U3ludGhldGljRXZlbnR9IGV2ZW50XG5cdCAqIEByZXR1cm4ge2Jvb2xlYW59IFRy
dWUgaWZmIG51bWJlciBvZiBkaXNwYXRjaGVzIGFjY3VtdWxhdGVkIGlzIGdyZWF0ZXIgdGhhbiAw
LlxuXHQgKi9cblx0ZnVuY3Rpb24gaGFzRGlzcGF0Y2hlcyhldmVudCkge1xuXHQgIHJldHVybiAh
IWV2ZW50Ll9kaXNwYXRjaExpc3RlbmVycztcblx0fVxuXHRcblx0LyoqXG5cdCAqIEdlbmVyYWwg
dXRpbGl0aWVzIHRoYXQgYXJlIHVzZWZ1bCBpbiBjcmVhdGluZyBjdXN0b20gRXZlbnQgUGx1Z2lu
cy5cblx0ICovXG5cdHZhciBFdmVudFBsdWdpblV0aWxzID0ge1xuXHQgIGlzRW5kaXNoOiBpc0Vu
ZGlzaCxcblx0ICBpc01vdmVpc2g6IGlzTW92ZWlzaCxcblx0ICBpc1N0YXJ0aXNoOiBpc1N0YXJ0
aXNoLFxuXHRcblx0ICBleGVjdXRlRGlyZWN0RGlzcGF0Y2g6IGV4ZWN1dGVEaXJlY3REaXNwYXRj
aCxcblx0ICBleGVjdXRlRGlzcGF0Y2hlc0luT3JkZXI6IGV4ZWN1dGVEaXNwYXRjaGVzSW5PcmRl
cixcblx0ICBleGVjdXRlRGlzcGF0Y2hlc0luT3JkZXJTdG9wQXRUcnVlOiBleGVjdXRlRGlzcGF0
Y2hlc0luT3JkZXJTdG9wQXRUcnVlLFxuXHQgIGhhc0Rpc3BhdGNoZXM6IGhhc0Rpc3BhdGNoZXMs
XG5cdFxuXHQgIGdldEluc3RhbmNlRnJvbU5vZGU6IGZ1bmN0aW9uIChub2RlKSB7XG5cdCAgICBy
ZXR1cm4gQ29tcG9uZW50VHJlZS5nZXRJbnN0YW5jZUZyb21Ob2RlKG5vZGUpO1xuXHQgIH0sXG5c
dCAgZ2V0Tm9kZUZyb21JbnN0YW5jZTogZnVuY3Rpb24gKG5vZGUpIHtcblx0ICAgIHJldHVybiBD
b21wb25lbnRUcmVlLmdldE5vZGVGcm9tSW5zdGFuY2Uobm9kZSk7XG5cdCAgfSxcblx0ICBpc0Fu
Y2VzdG9yOiBmdW5jdGlvbiAoYSwgYikge1xuXHQgICAgcmV0dXJuIFRyZWVUcmF2ZXJzYWwuaXNB
bmNlc3RvcihhLCBiKTtcblx0ICB9LFxuXHQgIGdldExvd2VzdENvbW1vbkFuY2VzdG9yOiBmdW5j
dGlvbiAoYSwgYikge1xuXHQgICAgcmV0dXJuIFRyZWVUcmF2ZXJzYWwuZ2V0TG93ZXN0Q29tbW9u
QW5jZXN0b3IoYSwgYik7XG5cdCAgfSxcblx0ICBnZXRQYXJlbnRJbnN0YW5jZTogZnVuY3Rpb24g
KGluc3QpIHtcblx0ICAgIHJldHVybiBUcmVlVHJhdmVyc2FsLmdldFBhcmVudEluc3RhbmNlKGlu
c3QpO1xuXHQgIH0sXG5cdCAgdHJhdmVyc2VUd29QaGFzZTogZnVuY3Rpb24gKHRhcmdldCwgZm4s
IGFyZykge1xuXHQgICAgcmV0dXJuIFRyZWVUcmF2ZXJzYWwudHJhdmVyc2VUd29QaGFzZSh0YXJn
ZXQsIGZuLCBhcmcpO1xuXHQgIH0sXG5cdCAgdHJhdmVyc2VFbnRlckxlYXZlOiBmdW5jdGlvbiAo
ZnJvbSwgdG8sIGZuLCBhcmdGcm9tLCBhcmdUbykge1xuXHQgICAgcmV0dXJuIFRyZWVUcmF2ZXJz
YWwudHJhdmVyc2VFbnRlckxlYXZlKGZyb20sIHRvLCBmbiwgYXJnRnJvbSwgYXJnVG8pO1xuXHQg
IH0sXG5cdFxuXHQgIGluamVjdGlvbjogaW5qZWN0aW9uXG5cdH07XG5cdFxuXHRtb2R1bGUuZXhw
b3J0cyA9IEV2ZW50UGx1Z2luVXRpbHM7XG5cbi8qKiovIH0sXG4vKiAzOCAqL1xuLyoqKi8gZnVu
Y3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAyMDEzLXBy
ZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5c
dCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNl
bnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5
IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50
IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJl
Y3RvcnkuXG5cdCAqXG5cdCAqIFxuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdC8q
KlxuXHQgKiBFc2NhcGUgYW5kIHdyYXAga2V5IHNvIGl0IGlzIHNhZmUgdG8gdXNlIGFzIGEgcmVh
Y3RpZFxuXHQgKlxuXHQgKiBAcGFyYW0ge3N0cmluZ30ga2V5IHRvIGJlIGVzY2FwZWQuXG5cdCAq
IEByZXR1cm4ge3N0cmluZ30gdGhlIGVzY2FwZWQga2V5LlxuXHQgKi9cblx0XG5cdGZ1bmN0aW9u
IGVzY2FwZShrZXkpIHtcblx0ICB2YXIgZXNjYXBlUmVnZXggPSAvWz06XS9nO1xuXHQgIHZhciBl
c2NhcGVyTG9va3VwID0ge1xuXHQgICAgJz0nOiAnPTAnLFxuXHQgICAgJzonOiAnPTInXG5cdCAg
fTtcblx0ICB2YXIgZXNjYXBlZFN0cmluZyA9ICgnJyArIGtleSkucmVwbGFjZShlc2NhcGVSZWdl
eCwgZnVuY3Rpb24gKG1hdGNoKSB7XG5cdCAgICByZXR1cm4gZXNjYXBlckxvb2t1cFttYXRjaF07
XG5cdCAgfSk7XG5cdFxuXHQgIHJldHVybiAnJCcgKyBlc2NhcGVkU3RyaW5nO1xuXHR9XG5cdFxu
XHQvKipcblx0ICogVW5lc2NhcGUgYW5kIHVud3JhcCBrZXkgZm9yIGh1bWFuLXJlYWRhYmxlIGRp
c3BsYXlcblx0ICpcblx0ICogQHBhcmFtIHtzdHJpbmd9IGtleSB0byB1bmVzY2FwZS5cblx0ICog
QHJldHVybiB7c3RyaW5nfSB0aGUgdW5lc2NhcGVkIGtleS5cblx0ICovXG5cdGZ1bmN0aW9uIHVu
ZXNjYXBlKGtleSkge1xuXHQgIHZhciB1bmVzY2FwZVJlZ2V4ID0gLyg9MHw9MikvZztcblx0ICB2
YXIgdW5lc2NhcGVyTG9va3VwID0ge1xuXHQgICAgJz0wJzogJz0nLFxuXHQgICAgJz0yJzogJzon
XG5cdCAgfTtcblx0ICB2YXIga2V5U3Vic3RyaW5nID0ga2V5WzBdID09PSAnLicgJiYga2V5WzFd
ID09PSAnJCcgPyBrZXkuc3Vic3RyaW5nKDIpIDoga2V5LnN1YnN0cmluZygxKTtcblx0XG5cdCAg
cmV0dXJuICgnJyArIGtleVN1YnN0cmluZykucmVwbGFjZSh1bmVzY2FwZVJlZ2V4LCBmdW5jdGlv
biAobWF0Y2gpIHtcblx0ICAgIHJldHVybiB1bmVzY2FwZXJMb29rdXBbbWF0Y2hdO1xuXHQgIH0p
O1xuXHR9XG5cdFxuXHR2YXIgS2V5RXNjYXBlVXRpbHMgPSB7XG5cdCAgZXNjYXBlOiBlc2NhcGUs
XG5cdCAgdW5lc2NhcGU6IHVuZXNjYXBlXG5cdH07XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IEtl
eUVzY2FwZVV0aWxzO1xuXG4vKioqLyB9LFxuLyogMzkgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVs
ZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmln
aHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVk
LlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qt
c3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290
IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAq
IG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhl
IHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5c
dHZhciBfcHJvZEludmFyaWFudCA9IF9fd2VicGFja19yZXF1aXJlX18oMyk7XG5cdFxuXHR2YXIg
UmVhY3RQcm9wVHlwZXNTZWNyZXQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE1OCk7XG5cdHZhciBw
cm9wVHlwZXNGYWN0b3J5ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1NSk7XG5cdFxuXHR2YXIgUmVh
Y3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE3KTtcblx0dmFyIFByb3BUeXBlcyA9IHByb3BUeXBl
c0ZhY3RvcnkoUmVhY3QuaXNWYWxpZEVsZW1lbnQpO1xuXHRcblx0dmFyIGludmFyaWFudCA9IF9f
d2VicGFja19yZXF1aXJlX18oMSk7XG5cdHZhciB3YXJuaW5nID0gX193ZWJwYWNrX3JlcXVpcmVf
XygyKTtcblx0XG5cdHZhciBoYXNSZWFkT25seVZhbHVlID0ge1xuXHQgIGJ1dHRvbjogdHJ1ZSxc
blx0ICBjaGVja2JveDogdHJ1ZSxcblx0ICBpbWFnZTogdHJ1ZSxcblx0ICBoaWRkZW46IHRydWUs
XG5cdCAgcmFkaW86IHRydWUsXG5cdCAgcmVzZXQ6IHRydWUsXG5cdCAgc3VibWl0OiB0cnVlXG5c
dH07XG5cdFxuXHRmdW5jdGlvbiBfYXNzZXJ0U2luZ2xlTGluayhpbnB1dFByb3BzKSB7XG5cdCAg
IShpbnB1dFByb3BzLmNoZWNrZWRMaW5rID09IG51bGwgfHwgaW5wdXRQcm9wcy52YWx1ZUxpbmsg
PT0gbnVsbCkgPyAgZmFsc2UgPyBpbnZhcmlhbnQoZmFsc2UsICdDYW5ub3QgcHJvdmlkZSBhIGNo
ZWNrZWRMaW5rIGFuZCBhIHZhbHVlTGluay4gSWYgeW91IHdhbnQgdG8gdXNlIGNoZWNrZWRMaW5r
LCB5b3UgcHJvYmFibHkgZG9uXFwndCB3YW50IHRvIHVzZSB2YWx1ZUxpbmsgYW5kIHZpY2UgdmVy
c2EuJykgOiBfcHJvZEludmFyaWFudCgnODcnKSA6IHZvaWQgMDtcblx0fVxuXHRmdW5jdGlvbiBf
YXNzZXJ0VmFsdWVMaW5rKGlucHV0UHJvcHMpIHtcblx0ICBfYXNzZXJ0U2luZ2xlTGluayhpbnB1
dFByb3BzKTtcblx0ICAhKGlucHV0UHJvcHMudmFsdWUgPT0gbnVsbCAmJiBpbnB1dFByb3BzLm9u
Q2hhbmdlID09IG51bGwpID8gIGZhbHNlID8gaW52YXJpYW50KGZhbHNlLCAnQ2Fubm90IHByb3Zp
ZGUgYSB2YWx1ZUxpbmsgYW5kIGEgdmFsdWUgb3Igb25DaGFuZ2UgZXZlbnQuIElmIHlvdSB3YW50
IHRvIHVzZSB2YWx1ZSBvciBvbkNoYW5nZSwgeW91IHByb2JhYmx5IGRvblxcJ3Qgd2FudCB0byB1
c2UgdmFsdWVMaW5rLicpIDogX3Byb2RJbnZhcmlhbnQoJzg4JykgOiB2b2lkIDA7XG5cdH1cblx0
XG5cdGZ1bmN0aW9uIF9hc3NlcnRDaGVja2VkTGluayhpbnB1dFByb3BzKSB7XG5cdCAgX2Fzc2Vy
dFNpbmdsZUxpbmsoaW5wdXRQcm9wcyk7XG5cdCAgIShpbnB1dFByb3BzLmNoZWNrZWQgPT0gbnVs
bCAmJiBpbnB1dFByb3BzLm9uQ2hhbmdlID09IG51bGwpID8gIGZhbHNlID8gaW52YXJpYW50KGZh
bHNlLCAnQ2Fubm90IHByb3ZpZGUgYSBjaGVja2VkTGluayBhbmQgYSBjaGVja2VkIHByb3BlcnR5
IG9yIG9uQ2hhbmdlIGV2ZW50LiBJZiB5b3Ugd2FudCB0byB1c2UgY2hlY2tlZCBvciBvbkNoYW5n
ZSwgeW91IHByb2JhYmx5IGRvblxcJ3Qgd2FudCB0byB1c2UgY2hlY2tlZExpbmsnKSA6IF9wcm9k
SW52YXJpYW50KCc4OScpIDogdm9pZCAwO1xuXHR9XG5cdFxuXHR2YXIgcHJvcFR5cGVzID0ge1xu
XHQgIHZhbHVlOiBmdW5jdGlvbiAocHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1lKSB7XG5c
dCAgICBpZiAoIXByb3BzW3Byb3BOYW1lXSB8fCBoYXNSZWFkT25seVZhbHVlW3Byb3BzLnR5cGVd
IHx8IHByb3BzLm9uQ2hhbmdlIHx8IHByb3BzLnJlYWRPbmx5IHx8IHByb3BzLmRpc2FibGVkKSB7
XG5cdCAgICAgIHJldHVybiBudWxsO1xuXHQgICAgfVxuXHQgICAgcmV0dXJuIG5ldyBFcnJvcign
WW91IHByb3ZpZGVkIGEgYHZhbHVlYCBwcm9wIHRvIGEgZm9ybSBmaWVsZCB3aXRob3V0IGFuICcg
KyAnYG9uQ2hhbmdlYCBoYW5kbGVyLiBUaGlzIHdpbGwgcmVuZGVyIGEgcmVhZC1vbmx5IGZpZWxk
LiBJZiAnICsgJ3RoZSBmaWVsZCBzaG91bGQgYmUgbXV0YWJsZSB1c2UgYGRlZmF1bHRWYWx1ZWAu
IE90aGVyd2lzZSwgJyArICdzZXQgZWl0aGVyIGBvbkNoYW5nZWAgb3IgYHJlYWRPbmx5YC4nKTtc
blx0ICB9LFxuXHQgIGNoZWNrZWQ6IGZ1bmN0aW9uIChwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVu
dE5hbWUpIHtcblx0ICAgIGlmICghcHJvcHNbcHJvcE5hbWVdIHx8IHByb3BzLm9uQ2hhbmdlIHx8
IHByb3BzLnJlYWRPbmx5IHx8IHByb3BzLmRpc2FibGVkKSB7XG5cdCAgICAgIHJldHVybiBudWxs
O1xuXHQgICAgfVxuXHQgICAgcmV0dXJuIG5ldyBFcnJvcignWW91IHByb3ZpZGVkIGEgYGNoZWNr
ZWRgIHByb3AgdG8gYSBmb3JtIGZpZWxkIHdpdGhvdXQgYW4gJyArICdgb25DaGFuZ2VgIGhhbmRs
ZXIuIFRoaXMgd2lsbCByZW5kZXIgYSByZWFkLW9ubHkgZmllbGQuIElmICcgKyAndGhlIGZpZWxk
IHNob3VsZCBiZSBtdXRhYmxlIHVzZSBgZGVmYXVsdENoZWNrZWRgLiBPdGhlcndpc2UsICcgKyAn
c2V0IGVpdGhlciBgb25DaGFuZ2VgIG9yIGByZWFkT25seWAuJyk7XG5cdCAgfSxcblx0ICBvbkNo
YW5nZTogUHJvcFR5cGVzLmZ1bmNcblx0fTtcblx0XG5cdHZhciBsb2dnZWRUeXBlRmFpbHVyZXMg
PSB7fTtcblx0ZnVuY3Rpb24gZ2V0RGVjbGFyYXRpb25FcnJvckFkZGVuZHVtKG93bmVyKSB7XG5c
dCAgaWYgKG93bmVyKSB7XG5cdCAgICB2YXIgbmFtZSA9IG93bmVyLmdldE5hbWUoKTtcblx0ICAg
IGlmIChuYW1lKSB7XG5cdCAgICAgIHJldHVybiAnIENoZWNrIHRoZSByZW5kZXIgbWV0aG9kIG9m
IGAnICsgbmFtZSArICdgLic7XG5cdCAgICB9XG5cdCAgfVxuXHQgIHJldHVybiAnJztcblx0fVxu
XHRcblx0LyoqXG5cdCAqIFByb3ZpZGUgYSBsaW5rZWQgYHZhbHVlYCBhdHRyaWJ1dGUgZm9yIGNv
bnRyb2xsZWQgZm9ybXMuIFlvdSBzaG91bGQgbm90IHVzZVxuXHQgKiB0aGlzIG91dHNpZGUgb2Yg
dGhlIFJlYWN0RE9NIGNvbnRyb2xsZWQgZm9ybSBjb21wb25lbnRzLlxuXHQgKi9cblx0dmFyIExp
bmtlZFZhbHVlVXRpbHMgPSB7XG5cdCAgY2hlY2tQcm9wVHlwZXM6IGZ1bmN0aW9uICh0YWdOYW1l
LCBwcm9wcywgb3duZXIpIHtcblx0ICAgIGZvciAodmFyIHByb3BOYW1lIGluIHByb3BUeXBlcykg
e1xuXHQgICAgICBpZiAocHJvcFR5cGVzLmhhc093blByb3BlcnR5KHByb3BOYW1lKSkge1xuXHQg
ICAgICAgIHZhciBlcnJvciA9IHByb3BUeXBlc1twcm9wTmFtZV0ocHJvcHMsIHByb3BOYW1lLCB0
YWdOYW1lLCAncHJvcCcsIG51bGwsIFJlYWN0UHJvcFR5cGVzU2VjcmV0KTtcblx0ICAgICAgfVxu
XHQgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBFcnJvciAmJiAhKGVycm9yLm1lc3NhZ2UgaW4g
bG9nZ2VkVHlwZUZhaWx1cmVzKSkge1xuXHQgICAgICAgIC8vIE9ubHkgbW9uaXRvciB0aGlzIGZh
aWx1cmUgb25jZSBiZWNhdXNlIHRoZXJlIHRlbmRzIHRvIGJlIGEgbG90IG9mIHRoZVxuXHQgICAg
ICAgIC8vIHNhbWUgZXJyb3IuXG5cdCAgICAgICAgbG9nZ2VkVHlwZUZhaWx1cmVzW2Vycm9yLm1l
c3NhZ2VdID0gdHJ1ZTtcblx0XG5cdCAgICAgICAgdmFyIGFkZGVuZHVtID0gZ2V0RGVjbGFyYXRp
b25FcnJvckFkZGVuZHVtKG93bmVyKTtcblx0ICAgICAgICAgZmFsc2UgPyB3YXJuaW5nKGZhbHNl
LCAnRmFpbGVkIGZvcm0gcHJvcFR5cGU6ICVzJXMnLCBlcnJvci5tZXNzYWdlLCBhZGRlbmR1bSkg
OiB2b2lkIDA7XG5cdCAgICAgIH1cblx0ICAgIH1cblx0ICB9LFxuXHRcblx0ICAvKipcblx0ICAg
KiBAcGFyYW0ge29iamVjdH0gaW5wdXRQcm9wcyBQcm9wcyBmb3IgZm9ybSBjb21wb25lbnRcblx0
ICAgKiBAcmV0dXJuIHsqfSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpbnB1dCBlaXRoZXIgZnJvbSB2
YWx1ZSBwcm9wIG9yIGxpbmsuXG5cdCAgICovXG5cdCAgZ2V0VmFsdWU6IGZ1bmN0aW9uIChpbnB1
dFByb3BzKSB7XG5cdCAgICBpZiAoaW5wdXRQcm9wcy52YWx1ZUxpbmspIHtcblx0ICAgICAgX2Fz
c2VydFZhbHVlTGluayhpbnB1dFByb3BzKTtcblx0ICAgICAgcmV0dXJuIGlucHV0UHJvcHMudmFs
dWVMaW5rLnZhbHVlO1xuXHQgICAgfVxuXHQgICAgcmV0dXJuIGlucHV0UHJvcHMudmFsdWU7XG5c
dCAgfSxcblx0XG5cdCAgLyoqXG5cdCAgICogQHBhcmFtIHtvYmplY3R9IGlucHV0UHJvcHMgUHJv
cHMgZm9yIGZvcm0gY29tcG9uZW50XG5cdCAgICogQHJldHVybiB7Kn0gY3VycmVudCBjaGVja2Vk
IHN0YXR1cyBvZiB0aGUgaW5wdXQgZWl0aGVyIGZyb20gY2hlY2tlZCBwcm9wXG5cdCAgICogICAg
ICAgICAgICAgb3IgbGluay5cblx0ICAgKi9cblx0ICBnZXRDaGVja2VkOiBmdW5jdGlvbiAoaW5w
dXRQcm9wcykge1xuXHQgICAgaWYgKGlucHV0UHJvcHMuY2hlY2tlZExpbmspIHtcblx0ICAgICAg
X2Fzc2VydENoZWNrZWRMaW5rKGlucHV0UHJvcHMpO1xuXHQgICAgICByZXR1cm4gaW5wdXRQcm9w
cy5jaGVja2VkTGluay52YWx1ZTtcblx0ICAgIH1cblx0ICAgIHJldHVybiBpbnB1dFByb3BzLmNo
ZWNrZWQ7XG5cdCAgfSxcblx0XG5cdCAgLyoqXG5cdCAgICogQHBhcmFtIHtvYmplY3R9IGlucHV0
UHJvcHMgUHJvcHMgZm9yIGZvcm0gY29tcG9uZW50XG5cdCAgICogQHBhcmFtIHtTeW50aGV0aWNF
dmVudH0gZXZlbnQgY2hhbmdlIGV2ZW50IHRvIGhhbmRsZVxuXHQgICAqL1xuXHQgIGV4ZWN1dGVP
bkNoYW5nZTogZnVuY3Rpb24gKGlucHV0UHJvcHMsIGV2ZW50KSB7XG5cdCAgICBpZiAoaW5wdXRQ
cm9wcy52YWx1ZUxpbmspIHtcblx0ICAgICAgX2Fzc2VydFZhbHVlTGluayhpbnB1dFByb3BzKTtc
blx0ICAgICAgcmV0dXJuIGlucHV0UHJvcHMudmFsdWVMaW5rLnJlcXVlc3RDaGFuZ2UoZXZlbnQu
dGFyZ2V0LnZhbHVlKTtcblx0ICAgIH0gZWxzZSBpZiAoaW5wdXRQcm9wcy5jaGVja2VkTGluaykg
e1xuXHQgICAgICBfYXNzZXJ0Q2hlY2tlZExpbmsoaW5wdXRQcm9wcyk7XG5cdCAgICAgIHJldHVy
biBpbnB1dFByb3BzLmNoZWNrZWRMaW5rLnJlcXVlc3RDaGFuZ2UoZXZlbnQudGFyZ2V0LmNoZWNr
ZWQpO1xuXHQgICAgfSBlbHNlIGlmIChpbnB1dFByb3BzLm9uQ2hhbmdlKSB7XG5cdCAgICAgIHJl
dHVybiBpbnB1dFByb3BzLm9uQ2hhbmdlLmNhbGwodW5kZWZpbmVkLCBldmVudCk7XG5cdCAgICB9
XG5cdCAgfVxuXHR9O1xuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBMaW5rZWRWYWx1ZVV0aWxzO1xu
XG4vKioqLyB9LFxuLyogNDAgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193
ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50
LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBU
aGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBm
b3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0
aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdo
dHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5
LlxuXHQgKlxuXHQgKiBcblx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHR2YXIgX3By
b2RJbnZhcmlhbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMpO1xuXHRcblx0dmFyIGludmFyaWFu
dCA9IF9fd2VicGFja19yZXF1aXJlX18oMSk7XG5cdFxuXHR2YXIgaW5qZWN0ZWQgPSBmYWxzZTtc
blx0XG5cdHZhciBSZWFjdENvbXBvbmVudEVudmlyb25tZW50ID0ge1xuXHQgIC8qKlxuXHQgICAq
IE9wdGlvbmFsbHkgaW5qZWN0YWJsZSBob29rIGZvciBzd2FwcGluZyBvdXQgbW91bnQgaW1hZ2Vz
IGluIHRoZSBtaWRkbGUgb2Zcblx0ICAgKiB0aGUgdHJlZS5cblx0ICAgKi9cblx0ICByZXBsYWNl
Tm9kZVdpdGhNYXJrdXA6IG51bGwsXG5cdFxuXHQgIC8qKlxuXHQgICAqIE9wdGlvbmFsbHkgaW5q
ZWN0YWJsZSBob29rIGZvciBwcm9jZXNzaW5nIGEgcXVldWUgb2YgY2hpbGQgdXBkYXRlcy4gV2ls
bFxuXHQgICAqIGxhdGVyIG1vdmUgaW50byBNdWx0aUNoaWxkQ29tcG9uZW50cy5cblx0ICAgKi9c
blx0ICBwcm9jZXNzQ2hpbGRyZW5VcGRhdGVzOiBudWxsLFxuXHRcblx0ICBpbmplY3Rpb246IHtc
blx0ICAgIGluamVjdEVudmlyb25tZW50OiBmdW5jdGlvbiAoZW52aXJvbm1lbnQpIHtcblx0ICAg
ICAgISFpbmplY3RlZCA/ICBmYWxzZSA/IGludmFyaWFudChmYWxzZSwgJ1JlYWN0Q29tcG9zaXRl
Q29tcG9uZW50OiBpbmplY3RFbnZpcm9ubWVudCgpIGNhbiBvbmx5IGJlIGNhbGxlZCBvbmNlLicp
IDogX3Byb2RJbnZhcmlhbnQoJzEwNCcpIDogdm9pZCAwO1xuXHQgICAgICBSZWFjdENvbXBvbmVu
dEVudmlyb25tZW50LnJlcGxhY2VOb2RlV2l0aE1hcmt1cCA9IGVudmlyb25tZW50LnJlcGxhY2VO
b2RlV2l0aE1hcmt1cDtcblx0ICAgICAgUmVhY3RDb21wb25lbnRFbnZpcm9ubWVudC5wcm9jZXNz
Q2hpbGRyZW5VcGRhdGVzID0gZW52aXJvbm1lbnQucHJvY2Vzc0NoaWxkcmVuVXBkYXRlcztcblx0
ICAgICAgaW5qZWN0ZWQgPSB0cnVlO1xuXHQgICAgfVxuXHQgIH1cblx0fTtcblx0XG5cdG1vZHVs
ZS5leHBvcnRzID0gUmVhY3RDb21wb25lbnRFbnZpcm9ubWVudDtcblxuLyoqKi8gfSxcbi8qIDQx
ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18p
IHtcblxuXHQvKipcblx0ICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5c
blx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBp
cyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAq
IExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4g
QW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBp
biB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpcblx0ICogXG5c
dCAqL1xuXHRcblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0dmFyIGNhdWdodEVycm9yID0gbnVsbDtc
blx0XG5cdC8qKlxuXHQgKiBDYWxsIGEgZnVuY3Rpb24gd2hpbGUgZ3VhcmRpbmcgYWdhaW5zdCBl
cnJvcnMgdGhhdCBoYXBwZW5zIHdpdGhpbiBpdC5cblx0ICpcblx0ICogQHBhcmFtIHtTdHJpbmd9
IG5hbWUgb2YgdGhlIGd1YXJkIHRvIHVzZSBmb3IgbG9nZ2luZyBvciBkZWJ1Z2dpbmdcblx0ICog
QHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gaW52b2tlXG5cdCAqIEBwYXJh
bSB7Kn0gYSBGaXJzdCBhcmd1bWVudFxuXHQgKiBAcGFyYW0geyp9IGIgU2Vjb25kIGFyZ3VtZW50
XG5cdCAqL1xuXHRmdW5jdGlvbiBpbnZva2VHdWFyZGVkQ2FsbGJhY2sobmFtZSwgZnVuYywgYSkg
e1xuXHQgIHRyeSB7XG5cdCAgICBmdW5jKGEpO1xuXHQgIH0gY2F0Y2ggKHgpIHtcblx0ICAgIGlm
IChjYXVnaHRFcnJvciA9PT0gbnVsbCkge1xuXHQgICAgICBjYXVnaHRFcnJvciA9IHg7XG5cdCAg
ICB9XG5cdCAgfVxuXHR9XG5cdFxuXHR2YXIgUmVhY3RFcnJvclV0aWxzID0ge1xuXHQgIGludm9r
ZUd1YXJkZWRDYWxsYmFjazogaW52b2tlR3VhcmRlZENhbGxiYWNrLFxuXHRcblx0ICAvKipcblx0
ICAgKiBJbnZva2VkIGJ5IFJlYWN0VGVzdFV0aWxzLlNpbXVsYXRlIHNvIHRoYXQgYW55IGVycm9y
cyB0aHJvd24gYnkgdGhlIGV2ZW50XG5cdCAgICogaGFuZGxlciBhcmUgc3VyZSB0byBiZSByZXRo
cm93biBieSByZXRocm93Q2F1Z2h0RXJyb3IuXG5cdCAgICovXG5cdCAgaW52b2tlR3VhcmRlZENh
bGxiYWNrV2l0aENhdGNoOiBpbnZva2VHdWFyZGVkQ2FsbGJhY2ssXG5cdFxuXHQgIC8qKlxuXHQg
ICAqIER1cmluZyBleGVjdXRpb24gb2YgZ3VhcmRlZCBmdW5jdGlvbnMgd2Ugd2lsbCBjYXB0dXJl
IHRoZSBmaXJzdCBlcnJvciB3aGljaFxuXHQgICAqIHdlIHdpbGwgcmV0aHJvdyB0byBiZSBoYW5k
bGVkIGJ5IHRoZSB0b3AgbGV2ZWwgZXJyb3IgaGFuZGxlci5cblx0ICAgKi9cblx0ICByZXRocm93
Q2F1Z2h0RXJyb3I6IGZ1bmN0aW9uICgpIHtcblx0ICAgIGlmIChjYXVnaHRFcnJvcikge1xuXHQg
ICAgICB2YXIgZXJyb3IgPSBjYXVnaHRFcnJvcjtcblx0ICAgICAgY2F1Z2h0RXJyb3IgPSBudWxs
O1xuXHQgICAgICB0aHJvdyBlcnJvcjtcblx0ICAgIH1cblx0ICB9XG5cdH07XG5cdFxuXHRpZiAo
ZmFsc2UpIHtcblx0ICAvKipcblx0ICAgKiBUbyBoZWxwIGRldmVsb3BtZW50IHdlIGNhbiBnZXQg
YmV0dGVyIGRldnRvb2xzIGludGVncmF0aW9uIGJ5IHNpbXVsYXRpbmcgYVxuXHQgICAqIHJlYWwg
YnJvd3NlciBldmVudC5cblx0ICAgKi9cblx0ICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVm
aW5lZCcgJiYgdHlwZW9mIHdpbmRvdy5kaXNwYXRjaEV2ZW50ID09PSAnZnVuY3Rpb24nICYmIHR5
cGVvZiBkb2N1bWVudCAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIGRvY3VtZW50LmNyZWF0ZUV2
ZW50ID09PSAnZnVuY3Rpb24nKSB7XG5cdCAgICB2YXIgZmFrZU5vZGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCdyZWFjdCcpO1xuXHQgICAgUmVhY3RFcnJvclV0aWxzLmludm9rZUd1YXJkZWRD
YWxsYmFjayA9IGZ1bmN0aW9uIChuYW1lLCBmdW5jLCBhKSB7XG5cdCAgICAgIHZhciBib3VuZEZ1
bmMgPSBmdW5jLmJpbmQobnVsbCwgYSk7XG5cdCAgICAgIHZhciBldnRUeXBlID0gJ3JlYWN0LScg
KyBuYW1lO1xuXHQgICAgICBmYWtlTm9kZS5hZGRFdmVudExpc3RlbmVyKGV2dFR5cGUsIGJvdW5k
RnVuYywgZmFsc2UpO1xuXHQgICAgICB2YXIgZXZ0ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0V2
ZW50Jyk7XG5cdCAgICAgIGV2dC5pbml0RXZlbnQoZXZ0VHlwZSwgZmFsc2UsIGZhbHNlKTtcblx0
ICAgICAgZmFrZU5vZGUuZGlzcGF0Y2hFdmVudChldnQpO1xuXHQgICAgICBmYWtlTm9kZS5yZW1v
dmVFdmVudExpc3RlbmVyKGV2dFR5cGUsIGJvdW5kRnVuYywgZmFsc2UpO1xuXHQgICAgfTtcblx0
ICB9XG5cdH1cblx0XG5cdG1vZHVsZS5leHBvcnRzID0gUmVhY3RFcnJvclV0aWxzO1xuXG4vKioq
LyB9LFxuLyogNDIgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNr
X3JlcXVpcmVfXykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxNS1wcmVzZW50LCBGYWNl
Ym9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNv
dXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBp
biB0aGVcblx0ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNv
dXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2Fu
IGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQg
KlxuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdHZhciBfcHJvZEludmFyaWFudCA9
IF9fd2VicGFja19yZXF1aXJlX18oMyk7XG5cdFxuXHR2YXIgUmVhY3RDdXJyZW50T3duZXIgPSBf
X3dlYnBhY2tfcmVxdWlyZV9fKDExKTtcblx0dmFyIFJlYWN0SW5zdGFuY2VNYXAgPSBfX3dlYnBh
Y2tfcmVxdWlyZV9fKDIxKTtcblx0dmFyIFJlYWN0SW5zdHJ1bWVudGF0aW9uID0gX193ZWJwYWNr
X3JlcXVpcmVfXyg4KTtcblx0dmFyIFJlYWN0VXBkYXRlcyA9IF9fd2VicGFja19yZXF1aXJlX18o
OSk7XG5cdFxuXHR2YXIgaW52YXJpYW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxKTtcblx0dmFy
IHdhcm5pbmcgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIpO1xuXHRcblx0ZnVuY3Rpb24gZW5xdWV1
ZVVwZGF0ZShpbnRlcm5hbEluc3RhbmNlKSB7XG5cdCAgUmVhY3RVcGRhdGVzLmVucXVldWVVcGRh
dGUoaW50ZXJuYWxJbnN0YW5jZSk7XG5cdH1cblx0XG5cdGZ1bmN0aW9uIGZvcm1hdFVuZXhwZWN0
ZWRBcmd1bWVudChhcmcpIHtcblx0ICB2YXIgdHlwZSA9IHR5cGVvZiBhcmc7XG5cdCAgaWYgKHR5
cGUgIT09ICdvYmplY3QnKSB7XG5cdCAgICByZXR1cm4gdHlwZTtcblx0ICB9XG5cdCAgdmFyIGRp
c3BsYXlOYW1lID0gYXJnLmNvbnN0cnVjdG9yICYmIGFyZy5jb25zdHJ1Y3Rvci5uYW1lIHx8IHR5
cGU7XG5cdCAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhhcmcpO1xuXHQgIGlmIChrZXlzLmxlbmd0
aCA+IDAgJiYga2V5cy5sZW5ndGggPCAyMCkge1xuXHQgICAgcmV0dXJuIGRpc3BsYXlOYW1lICsg
JyAoa2V5czogJyArIGtleXMuam9pbignLCAnKSArICcpJztcblx0ICB9XG5cdCAgcmV0dXJuIGRp
c3BsYXlOYW1lO1xuXHR9XG5cdFxuXHRmdW5jdGlvbiBnZXRJbnRlcm5hbEluc3RhbmNlUmVhZHlG
b3JVcGRhdGUocHVibGljSW5zdGFuY2UsIGNhbGxlck5hbWUpIHtcblx0ICB2YXIgaW50ZXJuYWxJ
bnN0YW5jZSA9IFJlYWN0SW5zdGFuY2VNYXAuZ2V0KHB1YmxpY0luc3RhbmNlKTtcblx0ICBpZiAo
IWludGVybmFsSW5zdGFuY2UpIHtcblx0ICAgIGlmIChmYWxzZSkge1xuXHQgICAgICB2YXIgY3Rv
ciA9IHB1YmxpY0luc3RhbmNlLmNvbnN0cnVjdG9yO1xuXHQgICAgICAvLyBPbmx5IHdhcm4gd2hl
biB3ZSBoYXZlIGEgY2FsbGVyTmFtZS4gT3RoZXJ3aXNlIHdlIHNob3VsZCBiZSBzaWxlbnQuXG5c
dCAgICAgIC8vIFdlJ3JlIHByb2JhYmx5IGNhbGxpbmcgZnJvbSBlbnF1ZXVlQ2FsbGJhY2suIFdl
IGRvbid0IHdhbnQgdG8gd2FyblxuXHQgICAgICAvLyB0aGVyZSBiZWNhdXNlIHdlIGFscmVhZHkg
d2FybmVkIGZvciB0aGUgY29ycmVzcG9uZGluZyBsaWZlY3ljbGUgbWV0aG9kLlxuXHQgICAgICBw
cm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyghY2FsbGVyTmFt
ZSwgJyVzKC4uLik6IENhbiBvbmx5IHVwZGF0ZSBhIG1vdW50ZWQgb3IgbW91bnRpbmcgY29tcG9u
ZW50LiAnICsgJ1RoaXMgdXN1YWxseSBtZWFucyB5b3UgY2FsbGVkICVzKCkgb24gYW4gdW5tb3Vu
dGVkIGNvbXBvbmVudC4gJyArICdUaGlzIGlzIGEgbm8tb3AuIFBsZWFzZSBjaGVjayB0aGUgY29k
ZSBmb3IgdGhlICVzIGNvbXBvbmVudC4nLCBjYWxsZXJOYW1lLCBjYWxsZXJOYW1lLCBjdG9yICYm
IChjdG9yLmRpc3BsYXlOYW1lIHx8IGN0b3IubmFtZSkgfHwgJ1JlYWN0Q2xhc3MnKSA6IHZvaWQg
MDtcblx0ICAgIH1cblx0ICAgIHJldHVybiBudWxsO1xuXHQgIH1cblx0XG5cdCAgaWYgKGZhbHNl
KSB7XG5cdCAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2Fybmlu
ZyhSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50ID09IG51bGwsICclcyguLi4pOiBDYW5ub3QgdXBk
YXRlIGR1cmluZyBhbiBleGlzdGluZyBzdGF0ZSB0cmFuc2l0aW9uIChzdWNoIGFzICcgKyBcIndp
dGhpbiBgcmVuZGVyYCBvciBhbm90aGVyIGNvbXBvbmVudCdzIGNvbnN0cnVjdG9yKS4gUmVuZGVy
IG1ldGhvZHMgXCIgKyAnc2hvdWxkIGJlIGEgcHVyZSBmdW5jdGlvbiBvZiBwcm9wcyBhbmQgc3Rh
dGU7IGNvbnN0cnVjdG9yICcgKyAnc2lkZS1lZmZlY3RzIGFyZSBhbiBhbnRpLXBhdHRlcm4sIGJ1
dCBjYW4gYmUgbW92ZWQgdG8gJyArICdgY29tcG9uZW50V2lsbE1vdW50YC4nLCBjYWxsZXJOYW1l
KSA6IHZvaWQgMDtcblx0ICB9XG5cdFxuXHQgIHJldHVybiBpbnRlcm5hbEluc3RhbmNlO1xuXHR9
XG5cdFxuXHQvKipcblx0ICogUmVhY3RVcGRhdGVRdWV1ZSBhbGxvd3MgZm9yIHN0YXRlIHVwZGF0
ZXMgdG8gYmUgc2NoZWR1bGVkIGludG8gYSBsYXRlclxuXHQgKiByZWNvbmNpbGlhdGlvbiBzdGVw
LlxuXHQgKi9cblx0dmFyIFJlYWN0VXBkYXRlUXVldWUgPSB7XG5cdCAgLyoqXG5cdCAgICogQ2hl
Y2tzIHdoZXRoZXIgb3Igbm90IHRoaXMgY29tcG9zaXRlIGNvbXBvbmVudCBpcyBtb3VudGVkLlxu
XHQgICAqIEBwYXJhbSB7UmVhY3RDbGFzc30gcHVibGljSW5zdGFuY2UgVGhlIGluc3RhbmNlIHdl
IHdhbnQgdG8gdGVzdC5cblx0ICAgKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmIG1vdW50ZWQs
IGZhbHNlIG90aGVyd2lzZS5cblx0ICAgKiBAcHJvdGVjdGVkXG5cdCAgICogQGZpbmFsXG5cdCAg
ICovXG5cdCAgaXNNb3VudGVkOiBmdW5jdGlvbiAocHVibGljSW5zdGFuY2UpIHtcblx0ICAgIGlm
IChmYWxzZSkge1xuXHQgICAgICB2YXIgb3duZXIgPSBSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50
O1xuXHQgICAgICBpZiAob3duZXIgIT09IG51bGwpIHtcblx0ICAgICAgICBwcm9jZXNzLmVudi5O
T0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhvd25lci5fd2FybmVkQWJvdXRSZWZz
SW5SZW5kZXIsICclcyBpcyBhY2Nlc3NpbmcgaXNNb3VudGVkIGluc2lkZSBpdHMgcmVuZGVyKCkg
ZnVuY3Rpb24uICcgKyAncmVuZGVyKCkgc2hvdWxkIGJlIGEgcHVyZSBmdW5jdGlvbiBvZiBwcm9w
cyBhbmQgc3RhdGUuIEl0IHNob3VsZCAnICsgJ25ldmVyIGFjY2VzcyBzb21ldGhpbmcgdGhhdCBy
ZXF1aXJlcyBzdGFsZSBkYXRhIGZyb20gdGhlIHByZXZpb3VzICcgKyAncmVuZGVyLCBzdWNoIGFz
IHJlZnMuIE1vdmUgdGhpcyBsb2dpYyB0byBjb21wb25lbnREaWRNb3VudCBhbmQgJyArICdjb21w
b25lbnREaWRVcGRhdGUgaW5zdGVhZC4nLCBvd25lci5nZXROYW1lKCkgfHwgJ0EgY29tcG9uZW50
JykgOiB2b2lkIDA7XG5cdCAgICAgICAgb3duZXIuX3dhcm5lZEFib3V0UmVmc0luUmVuZGVyID0g
dHJ1ZTtcblx0ICAgICAgfVxuXHQgICAgfVxuXHQgICAgdmFyIGludGVybmFsSW5zdGFuY2UgPSBS
ZWFjdEluc3RhbmNlTWFwLmdldChwdWJsaWNJbnN0YW5jZSk7XG5cdCAgICBpZiAoaW50ZXJuYWxJ
bnN0YW5jZSkge1xuXHQgICAgICAvLyBEdXJpbmcgY29tcG9uZW50V2lsbE1vdW50IGFuZCByZW5k
ZXIgdGhpcyB3aWxsIHN0aWxsIGJlIG51bGwgYnV0IGFmdGVyXG5cdCAgICAgIC8vIHRoYXQgd2ls
bCBhbHdheXMgcmVuZGVyIHRvIHNvbWV0aGluZy4gQXQgbGVhc3QgZm9yIG5vdy4gU28gd2UgY2Fu
IHVzZVxuXHQgICAgICAvLyB0aGlzIGhhY2suXG5cdCAgICAgIHJldHVybiAhIWludGVybmFsSW5z
dGFuY2UuX3JlbmRlcmVkQ29tcG9uZW50O1xuXHQgICAgfSBlbHNlIHtcblx0ICAgICAgcmV0dXJu
IGZhbHNlO1xuXHQgICAgfVxuXHQgIH0sXG5cdFxuXHQgIC8qKlxuXHQgICAqIEVucXVldWUgYSBj
YWxsYmFjayB0aGF0IHdpbGwgYmUgZXhlY3V0ZWQgYWZ0ZXIgYWxsIHRoZSBwZW5kaW5nIHVwZGF0
ZXNcblx0ICAgKiBoYXZlIHByb2Nlc3NlZC5cblx0ICAgKlxuXHQgICAqIEBwYXJhbSB7UmVhY3RD
bGFzc30gcHVibGljSW5zdGFuY2UgVGhlIGluc3RhbmNlIHRvIHVzZSBhcyBgdGhpc2AgY29udGV4
dC5cblx0ICAgKiBAcGFyYW0gez9mdW5jdGlvbn0gY2FsbGJhY2sgQ2FsbGVkIGFmdGVyIHN0YXRl
IGlzIHVwZGF0ZWQuXG5cdCAgICogQHBhcmFtIHtzdHJpbmd9IGNhbGxlck5hbWUgTmFtZSBvZiB0
aGUgY2FsbGluZyBmdW5jdGlvbiBpbiB0aGUgcHVibGljIEFQSS5cblx0ICAgKiBAaW50ZXJuYWxc
blx0ICAgKi9cblx0ICBlbnF1ZXVlQ2FsbGJhY2s6IGZ1bmN0aW9uIChwdWJsaWNJbnN0YW5jZSwg
Y2FsbGJhY2ssIGNhbGxlck5hbWUpIHtcblx0ICAgIFJlYWN0VXBkYXRlUXVldWUudmFsaWRhdGVD
YWxsYmFjayhjYWxsYmFjaywgY2FsbGVyTmFtZSk7XG5cdCAgICB2YXIgaW50ZXJuYWxJbnN0YW5j
ZSA9IGdldEludGVybmFsSW5zdGFuY2VSZWFkeUZvclVwZGF0ZShwdWJsaWNJbnN0YW5jZSk7XG5c
dFxuXHQgICAgLy8gUHJldmlvdXNseSB3ZSB3b3VsZCB0aHJvdyBhbiBlcnJvciBpZiB3ZSBkaWRu
J3QgaGF2ZSBhbiBpbnRlcm5hbFxuXHQgICAgLy8gaW5zdGFuY2UuIFNpbmNlIHdlIHdhbnQgdG8g
bWFrZSBpdCBhIG5vLW9wIGluc3RlYWQsIHdlIG1pcnJvciB0aGUgc2FtZVxuXHQgICAgLy8gYmVo
YXZpb3Igd2UgaGF2ZSBpbiBvdGhlciBlbnF1ZXVlKiBtZXRob2RzLlxuXHQgICAgLy8gV2UgYWxz
byBuZWVkIHRvIGlnbm9yZSBjYWxsYmFja3MgaW4gY29tcG9uZW50V2lsbE1vdW50LiBTZWVcblx0
ICAgIC8vIGVucXVldWVVcGRhdGVzLlxuXHQgICAgaWYgKCFpbnRlcm5hbEluc3RhbmNlKSB7XG5c
dCAgICAgIHJldHVybiBudWxsO1xuXHQgICAgfVxuXHRcblx0ICAgIGlmIChpbnRlcm5hbEluc3Rh
bmNlLl9wZW5kaW5nQ2FsbGJhY2tzKSB7XG5cdCAgICAgIGludGVybmFsSW5zdGFuY2UuX3BlbmRp
bmdDYWxsYmFja3MucHVzaChjYWxsYmFjayk7XG5cdCAgICB9IGVsc2Uge1xuXHQgICAgICBpbnRl
cm5hbEluc3RhbmNlLl9wZW5kaW5nQ2FsbGJhY2tzID0gW2NhbGxiYWNrXTtcblx0ICAgIH1cblx0
ICAgIC8vIFRPRE86IFRoZSBjYWxsYmFjayBoZXJlIGlzIGlnbm9yZWQgd2hlbiBzZXRTdGF0ZSBp
cyBjYWxsZWQgZnJvbVxuXHQgICAgLy8gY29tcG9uZW50V2lsbE1vdW50LiBFaXRoZXIgZml4IGl0
IG9yIGRpc2FsbG93IGRvaW5nIHNvIGNvbXBsZXRlbHkgaW5cblx0ICAgIC8vIGZhdm9yIG9mIGdl
dEluaXRpYWxTdGF0ZS4gQWx0ZXJuYXRpdmVseSwgd2UgY2FuIGRpc2FsbG93XG5cdCAgICAvLyBj
b21wb25lbnRXaWxsTW91bnQgZHVyaW5nIHNlcnZlci1zaWRlIHJlbmRlcmluZy5cblx0ICAgIGVu
cXVldWVVcGRhdGUoaW50ZXJuYWxJbnN0YW5jZSk7XG5cdCAgfSxcblx0XG5cdCAgZW5xdWV1ZUNh
bGxiYWNrSW50ZXJuYWw6IGZ1bmN0aW9uIChpbnRlcm5hbEluc3RhbmNlLCBjYWxsYmFjaykge1xu
XHQgICAgaWYgKGludGVybmFsSW5zdGFuY2UuX3BlbmRpbmdDYWxsYmFja3MpIHtcblx0ICAgICAg
aW50ZXJuYWxJbnN0YW5jZS5fcGVuZGluZ0NhbGxiYWNrcy5wdXNoKGNhbGxiYWNrKTtcblx0ICAg
IH0gZWxzZSB7XG5cdCAgICAgIGludGVybmFsSW5zdGFuY2UuX3BlbmRpbmdDYWxsYmFja3MgPSBb
Y2FsbGJhY2tdO1xuXHQgICAgfVxuXHQgICAgZW5xdWV1ZVVwZGF0ZShpbnRlcm5hbEluc3RhbmNl
KTtcblx0ICB9LFxuXHRcblx0ICAvKipcblx0ICAgKiBGb3JjZXMgYW4gdXBkYXRlLiBUaGlzIHNo
b3VsZCBvbmx5IGJlIGludm9rZWQgd2hlbiBpdCBpcyBrbm93biB3aXRoXG5cdCAgICogY2VydGFp
bnR5IHRoYXQgd2UgYXJlICoqbm90KiogaW4gYSBET00gdHJhbnNhY3Rpb24uXG5cdCAgICpcblx0
ICAgKiBZb3UgbWF5IHdhbnQgdG8gY2FsbCB0aGlzIHdoZW4geW91IGtub3cgdGhhdCBzb21lIGRl
ZXBlciBhc3BlY3Qgb2YgdGhlXG5cdCAgICogY29tcG9uZW50J3Mgc3RhdGUgaGFzIGNoYW5nZWQg
YnV0IGBzZXRTdGF0ZWAgd2FzIG5vdCBjYWxsZWQuXG5cdCAgICpcblx0ICAgKiBUaGlzIHdpbGwg
bm90IGludm9rZSBgc2hvdWxkQ29tcG9uZW50VXBkYXRlYCwgYnV0IGl0IHdpbGwgaW52b2tlXG5c
dCAgICogYGNvbXBvbmVudFdpbGxVcGRhdGVgIGFuZCBgY29tcG9uZW50RGlkVXBkYXRlYC5cblx0
ICAgKlxuXHQgICAqIEBwYXJhbSB7UmVhY3RDbGFzc30gcHVibGljSW5zdGFuY2UgVGhlIGluc3Rh
bmNlIHRoYXQgc2hvdWxkIHJlcmVuZGVyLlxuXHQgICAqIEBpbnRlcm5hbFxuXHQgICAqL1xuXHQg
IGVucXVldWVGb3JjZVVwZGF0ZTogZnVuY3Rpb24gKHB1YmxpY0luc3RhbmNlKSB7XG5cdCAgICB2
YXIgaW50ZXJuYWxJbnN0YW5jZSA9IGdldEludGVybmFsSW5zdGFuY2VSZWFkeUZvclVwZGF0ZShw
dWJsaWNJbnN0YW5jZSwgJ2ZvcmNlVXBkYXRlJyk7XG5cdFxuXHQgICAgaWYgKCFpbnRlcm5hbElu
c3RhbmNlKSB7XG5cdCAgICAgIHJldHVybjtcblx0ICAgIH1cblx0XG5cdCAgICBpbnRlcm5hbElu
c3RhbmNlLl9wZW5kaW5nRm9yY2VVcGRhdGUgPSB0cnVlO1xuXHRcblx0ICAgIGVucXVldWVVcGRh
dGUoaW50ZXJuYWxJbnN0YW5jZSk7XG5cdCAgfSxcblx0XG5cdCAgLyoqXG5cdCAgICogUmVwbGFj
ZXMgYWxsIG9mIHRoZSBzdGF0ZS4gQWx3YXlzIHVzZSB0aGlzIG9yIGBzZXRTdGF0ZWAgdG8gbXV0
YXRlIHN0YXRlLlxuXHQgICAqIFlvdSBzaG91bGQgdHJlYXQgYHRoaXMuc3RhdGVgIGFzIGltbXV0
YWJsZS5cblx0ICAgKlxuXHQgICAqIFRoZXJlIGlzIG5vIGd1YXJhbnRlZSB0aGF0IGB0aGlzLnN0
YXRlYCB3aWxsIGJlIGltbWVkaWF0ZWx5IHVwZGF0ZWQsIHNvXG5cdCAgICogYWNjZXNzaW5nIGB0
aGlzLnN0YXRlYCBhZnRlciBjYWxsaW5nIHRoaXMgbWV0aG9kIG1heSByZXR1cm4gdGhlIG9sZCB2
YWx1ZS5cblx0ICAgKlxuXHQgICAqIEBwYXJhbSB7UmVhY3RDbGFzc30gcHVibGljSW5zdGFuY2Ug
VGhlIGluc3RhbmNlIHRoYXQgc2hvdWxkIHJlcmVuZGVyLlxuXHQgICAqIEBwYXJhbSB7b2JqZWN0
fSBjb21wbGV0ZVN0YXRlIE5leHQgc3RhdGUuXG5cdCAgICogQGludGVybmFsXG5cdCAgICovXG5c
dCAgZW5xdWV1ZVJlcGxhY2VTdGF0ZTogZnVuY3Rpb24gKHB1YmxpY0luc3RhbmNlLCBjb21wbGV0
ZVN0YXRlLCBjYWxsYmFjaykge1xuXHQgICAgdmFyIGludGVybmFsSW5zdGFuY2UgPSBnZXRJbnRl
cm5hbEluc3RhbmNlUmVhZHlGb3JVcGRhdGUocHVibGljSW5zdGFuY2UsICdyZXBsYWNlU3RhdGUn
KTtcblx0XG5cdCAgICBpZiAoIWludGVybmFsSW5zdGFuY2UpIHtcblx0ICAgICAgcmV0dXJuO1xu
XHQgICAgfVxuXHRcblx0ICAgIGludGVybmFsSW5zdGFuY2UuX3BlbmRpbmdTdGF0ZVF1ZXVlID0g
W2NvbXBsZXRlU3RhdGVdO1xuXHQgICAgaW50ZXJuYWxJbnN0YW5jZS5fcGVuZGluZ1JlcGxhY2VT
dGF0ZSA9IHRydWU7XG5cdFxuXHQgICAgLy8gRnV0dXJlLXByb29mIDE1LjVcblx0ICAgIGlmIChj
YWxsYmFjayAhPT0gdW5kZWZpbmVkICYmIGNhbGxiYWNrICE9PSBudWxsKSB7XG5cdCAgICAgIFJl
YWN0VXBkYXRlUXVldWUudmFsaWRhdGVDYWxsYmFjayhjYWxsYmFjaywgJ3JlcGxhY2VTdGF0ZScp
O1xuXHQgICAgICBpZiAoaW50ZXJuYWxJbnN0YW5jZS5fcGVuZGluZ0NhbGxiYWNrcykge1xuXHQg
ICAgICAgIGludGVybmFsSW5zdGFuY2UuX3BlbmRpbmdDYWxsYmFja3MucHVzaChjYWxsYmFjayk7
XG5cdCAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgaW50ZXJuYWxJbnN0YW5jZS5fcGVuZGluZ0Nh
bGxiYWNrcyA9IFtjYWxsYmFja107XG5cdCAgICAgIH1cblx0ICAgIH1cblx0XG5cdCAgICBlbnF1
ZXVlVXBkYXRlKGludGVybmFsSW5zdGFuY2UpO1xuXHQgIH0sXG5cdFxuXHQgIC8qKlxuXHQgICAq
IFNldHMgYSBzdWJzZXQgb2YgdGhlIHN0YXRlLiBUaGlzIG9ubHkgZXhpc3RzIGJlY2F1c2UgX3Bl
bmRpbmdTdGF0ZSBpc1xuXHQgICAqIGludGVybmFsLiBUaGlzIHByb3ZpZGVzIGEgbWVyZ2luZyBz
dHJhdGVneSB0aGF0IGlzIG5vdCBhdmFpbGFibGUgdG8gZGVlcFxuXHQgICAqIHByb3BlcnRpZXMg
d2hpY2ggaXMgY29uZnVzaW5nLiBUT0RPOiBFeHBvc2UgcGVuZGluZ1N0YXRlIG9yIGRvbid0IHVz
ZSBpdFxuXHQgICAqIGR1cmluZyB0aGUgbWVyZ2UuXG5cdCAgICpcblx0ICAgKiBAcGFyYW0ge1Jl
YWN0Q2xhc3N9IHB1YmxpY0luc3RhbmNlIFRoZSBpbnN0YW5jZSB0aGF0IHNob3VsZCByZXJlbmRl
ci5cblx0ICAgKiBAcGFyYW0ge29iamVjdH0gcGFydGlhbFN0YXRlIE5leHQgcGFydGlhbCBzdGF0
ZSB0byBiZSBtZXJnZWQgd2l0aCBzdGF0ZS5cblx0ICAgKiBAaW50ZXJuYWxcblx0ICAgKi9cblx0
ICBlbnF1ZXVlU2V0U3RhdGU6IGZ1bmN0aW9uIChwdWJsaWNJbnN0YW5jZSwgcGFydGlhbFN0YXRl
KSB7XG5cdCAgICBpZiAoZmFsc2UpIHtcblx0ICAgICAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVi
dWdUb29sLm9uU2V0U3RhdGUoKTtcblx0ICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdw
cm9kdWN0aW9uJyA/IHdhcm5pbmcocGFydGlhbFN0YXRlICE9IG51bGwsICdzZXRTdGF0ZSguLi4p
OiBZb3UgcGFzc2VkIGFuIHVuZGVmaW5lZCBvciBudWxsIHN0YXRlIG9iamVjdDsgJyArICdpbnN0
ZWFkLCB1c2UgZm9yY2VVcGRhdGUoKS4nKSA6IHZvaWQgMDtcblx0ICAgIH1cblx0XG5cdCAgICB2
YXIgaW50ZXJuYWxJbnN0YW5jZSA9IGdldEludGVybmFsSW5zdGFuY2VSZWFkeUZvclVwZGF0ZShw
dWJsaWNJbnN0YW5jZSwgJ3NldFN0YXRlJyk7XG5cdFxuXHQgICAgaWYgKCFpbnRlcm5hbEluc3Rh
bmNlKSB7XG5cdCAgICAgIHJldHVybjtcblx0ICAgIH1cblx0XG5cdCAgICB2YXIgcXVldWUgPSBp
bnRlcm5hbEluc3RhbmNlLl9wZW5kaW5nU3RhdGVRdWV1ZSB8fCAoaW50ZXJuYWxJbnN0YW5jZS5f
cGVuZGluZ1N0YXRlUXVldWUgPSBbXSk7XG5cdCAgICBxdWV1ZS5wdXNoKHBhcnRpYWxTdGF0ZSk7
XG5cdFxuXHQgICAgZW5xdWV1ZVVwZGF0ZShpbnRlcm5hbEluc3RhbmNlKTtcblx0ICB9LFxuXHRc
blx0ICBlbnF1ZXVlRWxlbWVudEludGVybmFsOiBmdW5jdGlvbiAoaW50ZXJuYWxJbnN0YW5jZSwg
bmV4dEVsZW1lbnQsIG5leHRDb250ZXh0KSB7XG5cdCAgICBpbnRlcm5hbEluc3RhbmNlLl9wZW5k
aW5nRWxlbWVudCA9IG5leHRFbGVtZW50O1xuXHQgICAgLy8gVE9ETzogaW50cm9kdWNlIF9wZW5k
aW5nQ29udGV4dCBpbnN0ZWFkIG9mIHNldHRpbmcgaXQgZGlyZWN0bHkuXG5cdCAgICBpbnRlcm5h
bEluc3RhbmNlLl9jb250ZXh0ID0gbmV4dENvbnRleHQ7XG5cdCAgICBlbnF1ZXVlVXBkYXRlKGlu
dGVybmFsSW5zdGFuY2UpO1xuXHQgIH0sXG5cdFxuXHQgIHZhbGlkYXRlQ2FsbGJhY2s6IGZ1bmN0
aW9uIChjYWxsYmFjaywgY2FsbGVyTmFtZSkge1xuXHQgICAgISghY2FsbGJhY2sgfHwgdHlwZW9m
IGNhbGxiYWNrID09PSAnZnVuY3Rpb24nKSA/ICBmYWxzZSA/IGludmFyaWFudChmYWxzZSwgJyVz
KC4uLik6IEV4cGVjdGVkIHRoZSBsYXN0IG9wdGlvbmFsIGBjYWxsYmFja2AgYXJndW1lbnQgdG8g
YmUgYSBmdW5jdGlvbi4gSW5zdGVhZCByZWNlaXZlZDogJXMuJywgY2FsbGVyTmFtZSwgZm9ybWF0
VW5leHBlY3RlZEFyZ3VtZW50KGNhbGxiYWNrKSkgOiBfcHJvZEludmFyaWFudCgnMTIyJywgY2Fs
bGVyTmFtZSwgZm9ybWF0VW5leHBlY3RlZEFyZ3VtZW50KGNhbGxiYWNrKSkgOiB2b2lkIDA7XG5c
dCAgfVxuXHR9O1xuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBSZWFjdFVwZGF0ZVF1ZXVlO1xuXG4v
KioqLyB9LFxuLyogNDMgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5c
dC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBB
bGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vu
c2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5T
RSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRp
dGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQ
QVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKi9cblx0XG5cdC8q
IGdsb2JhbHMgTVNBcHAgKi9cblx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdC8qKlxuXHQgKiBD
cmVhdGUgYSBmdW5jdGlvbiB3aGljaCBoYXMgJ3Vuc2FmZScgcHJpdmlsZWdlcyAocmVxdWlyZWQg
Ynkgd2luZG93czggYXBwcylcblx0ICovXG5cdFxuXHR2YXIgY3JlYXRlTWljcm9zb2Z0VW5zYWZl
TG9jYWxGdW5jdGlvbiA9IGZ1bmN0aW9uIChmdW5jKSB7XG5cdCAgaWYgKHR5cGVvZiBNU0FwcCAh
PT0gJ3VuZGVmaW5lZCcgJiYgTVNBcHAuZXhlY1Vuc2FmZUxvY2FsRnVuY3Rpb24pIHtcblx0ICAg
IHJldHVybiBmdW5jdGlvbiAoYXJnMCwgYXJnMSwgYXJnMiwgYXJnMykge1xuXHQgICAgICBNU0Fw
cC5leGVjVW5zYWZlTG9jYWxGdW5jdGlvbihmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgcmV0dXJu
IGZ1bmMoYXJnMCwgYXJnMSwgYXJnMiwgYXJnMyk7XG5cdCAgICAgIH0pO1xuXHQgICAgfTtcblx0
ICB9IGVsc2Uge1xuXHQgICAgcmV0dXJuIGZ1bmM7XG5cdCAgfVxuXHR9O1xuXHRcblx0bW9kdWxl
LmV4cG9ydHMgPSBjcmVhdGVNaWNyb3NvZnRVbnNhZmVMb2NhbEZ1bmN0aW9uO1xuXG4vKioqLyB9
LFxuLyogNDQgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5cdC8qKlxu
XHQgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmln
aHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVu
ZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxl
IGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFs
IGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRT
IGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKi9cblx0XG5cdCd1c2Ugc3Ry
aWN0Jztcblx0XG5cdC8qKlxuXHQgKiBgY2hhckNvZGVgIHJlcHJlc2VudHMgdGhlIGFjdHVhbCBc
ImNoYXJhY3RlciBjb2RlXCIgYW5kIGlzIHNhZmUgdG8gdXNlIHdpdGhcblx0ICogYFN0cmluZy5m
cm9tQ2hhckNvZGVgLiBBcyBzdWNoLCBvbmx5IGtleXMgdGhhdCBjb3JyZXNwb25kIHRvIHByaW50
YWJsZVxuXHQgKiBjaGFyYWN0ZXJzIHByb2R1Y2UgYSB2YWxpZCBgY2hhckNvZGVgLCB0aGUgb25s
eSBleGNlcHRpb24gdG8gdGhpcyBpcyBFbnRlci5cblx0ICogVGhlIFRhYi1rZXkgaXMgY29uc2lk
ZXJlZCBub24tcHJpbnRhYmxlIGFuZCBkb2VzIG5vdCBoYXZlIGEgYGNoYXJDb2RlYCxcblx0ICog
cHJlc3VtYWJseSBiZWNhdXNlIGl0IGRvZXMgbm90IHByb2R1Y2UgYSB0YWItY2hhcmFjdGVyIGlu
IGJyb3dzZXJzLlxuXHQgKlxuXHQgKiBAcGFyYW0ge29iamVjdH0gbmF0aXZlRXZlbnQgTmF0aXZl
IGJyb3dzZXIgZXZlbnQuXG5cdCAqIEByZXR1cm4ge251bWJlcn0gTm9ybWFsaXplZCBgY2hhckNv
ZGVgIHByb3BlcnR5LlxuXHQgKi9cblx0XG5cdGZ1bmN0aW9uIGdldEV2ZW50Q2hhckNvZGUobmF0
aXZlRXZlbnQpIHtcblx0ICB2YXIgY2hhckNvZGU7XG5cdCAgdmFyIGtleUNvZGUgPSBuYXRpdmVF
dmVudC5rZXlDb2RlO1xuXHRcblx0ICBpZiAoJ2NoYXJDb2RlJyBpbiBuYXRpdmVFdmVudCkge1xu
XHQgICAgY2hhckNvZGUgPSBuYXRpdmVFdmVudC5jaGFyQ29kZTtcblx0XG5cdCAgICAvLyBGRiBk
b2VzIG5vdCBzZXQgYGNoYXJDb2RlYCBmb3IgdGhlIEVudGVyLWtleSwgY2hlY2sgYWdhaW5zdCBg
a2V5Q29kZWAuXG5cdCAgICBpZiAoY2hhckNvZGUgPT09IDAgJiYga2V5Q29kZSA9PT0gMTMpIHtc
blx0ICAgICAgY2hhckNvZGUgPSAxMztcblx0ICAgIH1cblx0ICB9IGVsc2Uge1xuXHQgICAgLy8g
SUU4IGRvZXMgbm90IGltcGxlbWVudCBgY2hhckNvZGVgLCBidXQgYGtleUNvZGVgIGhhcyB0aGUg
Y29ycmVjdCB2YWx1ZS5cblx0ICAgIGNoYXJDb2RlID0ga2V5Q29kZTtcblx0ICB9XG5cdFxuXHQg
IC8vIFNvbWUgbm9uLXByaW50YWJsZSBrZXlzIGFyZSByZXBvcnRlZCBpbiBgY2hhckNvZGVgL2Br
ZXlDb2RlYCwgZGlzY2FyZCB0aGVtLlxuXHQgIC8vIE11c3Qgbm90IGRpc2NhcmQgdGhlIChub24t
KXByaW50YWJsZSBFbnRlci1rZXkuXG5cdCAgaWYgKGNoYXJDb2RlID49IDMyIHx8IGNoYXJDb2Rl
ID09PSAxMykge1xuXHQgICAgcmV0dXJuIGNoYXJDb2RlO1xuXHQgIH1cblx0XG5cdCAgcmV0dXJu
IDA7XG5cdH1cblx0XG5cdG1vZHVsZS5leHBvcnRzID0gZ2V0RXZlbnRDaGFyQ29kZTtcblxuLyoq
Ki8gfSxcbi8qIDQ1ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuXHQv
Kipcblx0ICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxs
IHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNl
ZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0Ug
ZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRp
b25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFU
RU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpcblx0ICovXG5cdFxuXHQndXNl
IHN0cmljdCc7XG5cdFxuXHQvKipcblx0ICogVHJhbnNsYXRpb24gZnJvbSBtb2RpZmllciBrZXkg
dG8gdGhlIGFzc29jaWF0ZWQgcHJvcGVydHkgaW4gdGhlIGV2ZW50LlxuXHQgKiBAc2VlIGh0dHA6
Ly93d3cudzMub3JnL1RSL0RPTS1MZXZlbC0zLUV2ZW50cy8ja2V5cy1Nb2RpZmllcnNcblx0ICov
XG5cdFxuXHR2YXIgbW9kaWZpZXJLZXlUb1Byb3AgPSB7XG5cdCAgQWx0OiAnYWx0S2V5Jyxcblx0
ICBDb250cm9sOiAnY3RybEtleScsXG5cdCAgTWV0YTogJ21ldGFLZXknLFxuXHQgIFNoaWZ0OiAn
c2hpZnRLZXknXG5cdH07XG5cdFxuXHQvLyBJRTggZG9lcyBub3QgaW1wbGVtZW50IGdldE1vZGlm
aWVyU3RhdGUgc28gd2Ugc2ltcGx5IG1hcCBpdCB0byB0aGUgb25seVxuXHQvLyBtb2RpZmllciBr
ZXlzIGV4cG9zZWQgYnkgdGhlIGV2ZW50IGl0c2VsZiwgZG9lcyBub3Qgc3VwcG9ydCBMb2NrLWtl
eXMuXG5cdC8vIEN1cnJlbnRseSwgYWxsIG1ham9yIGJyb3dzZXJzIGV4Y2VwdCBDaHJvbWUgc2Vl
bXMgdG8gc3VwcG9ydCBMb2NrLWtleXMuXG5cdGZ1bmN0aW9uIG1vZGlmaWVyU3RhdGVHZXR0ZXIo
a2V5QXJnKSB7XG5cdCAgdmFyIHN5bnRoZXRpY0V2ZW50ID0gdGhpcztcblx0ICB2YXIgbmF0aXZl
RXZlbnQgPSBzeW50aGV0aWNFdmVudC5uYXRpdmVFdmVudDtcblx0ICBpZiAobmF0aXZlRXZlbnQu
Z2V0TW9kaWZpZXJTdGF0ZSkge1xuXHQgICAgcmV0dXJuIG5hdGl2ZUV2ZW50LmdldE1vZGlmaWVy
U3RhdGUoa2V5QXJnKTtcblx0ICB9XG5cdCAgdmFyIGtleVByb3AgPSBtb2RpZmllcktleVRvUHJv
cFtrZXlBcmddO1xuXHQgIHJldHVybiBrZXlQcm9wID8gISFuYXRpdmVFdmVudFtrZXlQcm9wXSA6
IGZhbHNlO1xuXHR9XG5cdFxuXHRmdW5jdGlvbiBnZXRFdmVudE1vZGlmaWVyU3RhdGUobmF0aXZl
RXZlbnQpIHtcblx0ICByZXR1cm4gbW9kaWZpZXJTdGF0ZUdldHRlcjtcblx0fVxuXHRcblx0bW9k
dWxlLmV4cG9ydHMgPSBnZXRFdmVudE1vZGlmaWVyU3RhdGU7XG5cbi8qKiovIH0sXG4vKiA0NiAq
L1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cblx0LyoqXG5cdCAqIENvcHly
aWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2
ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJT
RC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJv
b3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0
ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0
aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqL1xuXHRcblx0J3VzZSBzdHJpY3QnO1xuXHRc
blx0LyoqXG5cdCAqIEdldHMgdGhlIHRhcmdldCBub2RlIGZyb20gYSBuYXRpdmUgYnJvd3NlciBl
dmVudCBieSBhY2NvdW50aW5nIGZvclxuXHQgKiBpbmNvbnNpc3RlbmNpZXMgaW4gYnJvd3NlciBE
T00gQVBJcy5cblx0ICpcblx0ICogQHBhcmFtIHtvYmplY3R9IG5hdGl2ZUV2ZW50IE5hdGl2ZSBi
cm93c2VyIGV2ZW50LlxuXHQgKiBAcmV0dXJuIHtET01FdmVudFRhcmdldH0gVGFyZ2V0IG5vZGUu
XG5cdCAqL1xuXHRcblx0ZnVuY3Rpb24gZ2V0RXZlbnRUYXJnZXQobmF0aXZlRXZlbnQpIHtcblx0
ICB2YXIgdGFyZ2V0ID0gbmF0aXZlRXZlbnQudGFyZ2V0IHx8IG5hdGl2ZUV2ZW50LnNyY0VsZW1l
bnQgfHwgd2luZG93O1xuXHRcblx0ICAvLyBOb3JtYWxpemUgU1ZHIDx1c2U+IGVsZW1lbnQgZXZl
bnRzICM0OTYzXG5cdCAgaWYgKHRhcmdldC5jb3JyZXNwb25kaW5nVXNlRWxlbWVudCkge1xuXHQg
ICAgdGFyZ2V0ID0gdGFyZ2V0LmNvcnJlc3BvbmRpbmdVc2VFbGVtZW50O1xuXHQgIH1cblx0XG5c
dCAgLy8gU2FmYXJpIG1heSBmaXJlIGV2ZW50cyBvbiB0ZXh0IG5vZGVzIChOb2RlLlRFWFRfTk9E
RSBpcyAzKS5cblx0ICAvLyBAc2VlIGh0dHA6Ly93d3cucXVpcmtzbW9kZS5vcmcvanMvZXZlbnRz
X3Byb3BlcnRpZXMuaHRtbFxuXHQgIHJldHVybiB0YXJnZXQubm9kZVR5cGUgPT09IDMgPyB0YXJn
ZXQucGFyZW50Tm9kZSA6IHRhcmdldDtcblx0fVxuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBnZXRF
dmVudFRhcmdldDtcblxuLyoqKi8gfSxcbi8qIDQ3ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUs
IGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvKipcblx0ICogQ29weXJpZ2h0
IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5c
blx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0
eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBk
aXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBv
ZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBz
YW1lIGRpcmVjdG9yeS5cblx0ICpcblx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHR2
YXIgRXhlY3V0aW9uRW52aXJvbm1lbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDYpO1xuXHRcblx0
dmFyIHVzZUhhc0ZlYXR1cmU7XG5cdGlmIChFeGVjdXRpb25FbnZpcm9ubWVudC5jYW5Vc2VET00p
IHtcblx0ICB1c2VIYXNGZWF0dXJlID0gZG9jdW1lbnQuaW1wbGVtZW50YXRpb24gJiYgZG9jdW1l
bnQuaW1wbGVtZW50YXRpb24uaGFzRmVhdHVyZSAmJlxuXHQgIC8vIGFsd2F5cyByZXR1cm5zIHRy
dWUgaW4gbmV3ZXIgYnJvd3NlcnMgYXMgcGVyIHRoZSBzdGFuZGFyZC5cblx0ICAvLyBAc2VlIGh0
dHA6Ly9kb20uc3BlYy53aGF0d2cub3JnLyNkb20tZG9taW1wbGVtZW50YXRpb24taGFzZmVhdHVy
ZVxuXHQgIGRvY3VtZW50LmltcGxlbWVudGF0aW9uLmhhc0ZlYXR1cmUoJycsICcnKSAhPT0gdHJ1
ZTtcblx0fVxuXHRcblx0LyoqXG5cdCAqIENoZWNrcyBpZiBhbiBldmVudCBpcyBzdXBwb3J0ZWQg
aW4gdGhlIGN1cnJlbnQgZXhlY3V0aW9uIGVudmlyb25tZW50LlxuXHQgKlxuXHQgKiBOT1RFOiBU
aGlzIHdpbGwgbm90IHdvcmsgY29ycmVjdGx5IGZvciBub24tZ2VuZXJpYyBldmVudHMgc3VjaCBh
cyBgY2hhbmdlYCxcblx0ICogYHJlc2V0YCwgYGxvYWRgLCBgZXJyb3JgLCBhbmQgYHNlbGVjdGAu
XG5cdCAqXG5cdCAqIEJvcnJvd3MgZnJvbSBNb2Rlcm5penIuXG5cdCAqXG5cdCAqIEBwYXJhbSB7
c3RyaW5nfSBldmVudE5hbWVTdWZmaXggRXZlbnQgbmFtZSwgZS5nLiBcImNsaWNrXCIuXG5cdCAq
IEBwYXJhbSB7P2Jvb2xlYW59IGNhcHR1cmUgQ2hlY2sgaWYgdGhlIGNhcHR1cmUgcGhhc2UgaXMg
c3VwcG9ydGVkLlxuXHQgKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmIHRoZSBldmVudCBpcyBz
dXBwb3J0ZWQuXG5cdCAqIEBpbnRlcm5hbFxuXHQgKiBAbGljZW5zZSBNb2Rlcm5penIgMy4wLjBw
cmUgKEN1c3RvbSBCdWlsZCkgfCBNSVRcblx0ICovXG5cdGZ1bmN0aW9uIGlzRXZlbnRTdXBwb3J0
ZWQoZXZlbnROYW1lU3VmZml4LCBjYXB0dXJlKSB7XG5cdCAgaWYgKCFFeGVjdXRpb25FbnZpcm9u
bWVudC5jYW5Vc2VET00gfHwgY2FwdHVyZSAmJiAhKCdhZGRFdmVudExpc3RlbmVyJyBpbiBkb2N1
bWVudCkpIHtcblx0ICAgIHJldHVybiBmYWxzZTtcblx0ICB9XG5cdFxuXHQgIHZhciBldmVudE5h
bWUgPSAnb24nICsgZXZlbnROYW1lU3VmZml4O1xuXHQgIHZhciBpc1N1cHBvcnRlZCA9IGV2ZW50
TmFtZSBpbiBkb2N1bWVudDtcblx0XG5cdCAgaWYgKCFpc1N1cHBvcnRlZCkge1xuXHQgICAgdmFy
IGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcblx0ICAgIGVsZW1lbnQu
c2V0QXR0cmlidXRlKGV2ZW50TmFtZSwgJ3JldHVybjsnKTtcblx0ICAgIGlzU3VwcG9ydGVkID0g
dHlwZW9mIGVsZW1lbnRbZXZlbnROYW1lXSA9PT0gJ2Z1bmN0aW9uJztcblx0ICB9XG5cdFxuXHQg
IGlmICghaXNTdXBwb3J0ZWQgJiYgdXNlSGFzRmVhdHVyZSAmJiBldmVudE5hbWVTdWZmaXggPT09
ICd3aGVlbCcpIHtcblx0ICAgIC8vIFRoaXMgaXMgdGhlIG9ubHkgd2F5IHRvIHRlc3Qgc3VwcG9y
dCBmb3IgdGhlIGB3aGVlbGAgZXZlbnQgaW4gSUU5Ky5cblx0ICAgIGlzU3VwcG9ydGVkID0gZG9j
dW1lbnQuaW1wbGVtZW50YXRpb24uaGFzRmVhdHVyZSgnRXZlbnRzLndoZWVsJywgJzMuMCcpO1xu
XHQgIH1cblx0XG5cdCAgcmV0dXJuIGlzU3VwcG9ydGVkO1xuXHR9XG5cdFxuXHRtb2R1bGUuZXhw
b3J0cyA9IGlzRXZlbnRTdXBwb3J0ZWQ7XG5cbi8qKiovIH0sXG4vKiA0OCAqL1xuLyoqKi8gZnVu
Y3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAyMDEzLXBy
ZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5c
dCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNl
bnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5
IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50
IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJl
Y3RvcnkuXG5cdCAqXG5cdCAqL1xuXHRcblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0LyoqXG5cdCAq
IEdpdmVuIGEgYHByZXZFbGVtZW50YCBhbmQgYG5leHRFbGVtZW50YCwgZGV0ZXJtaW5lcyBpZiB0
aGUgZXhpc3Rpbmdcblx0ICogaW5zdGFuY2Ugc2hvdWxkIGJlIHVwZGF0ZWQgYXMgb3Bwb3NlZCB0
byBiZWluZyBkZXN0cm95ZWQgb3IgcmVwbGFjZWQgYnkgYSBuZXdcblx0ICogaW5zdGFuY2UuIEJv
dGggYXJndW1lbnRzIGFyZSBlbGVtZW50cy4gVGhpcyBlbnN1cmVzIHRoYXQgdGhpcyBsb2dpYyBj
YW5cblx0ICogb3BlcmF0ZSBvbiBzdGF0ZWxlc3MgdHJlZXMgd2l0aG91dCBhbnkgYmFja2luZyBp
bnN0YW5jZS5cblx0ICpcblx0ICogQHBhcmFtIHs/b2JqZWN0fSBwcmV2RWxlbWVudFxuXHQgKiBA
cGFyYW0gez9vYmplY3R9IG5leHRFbGVtZW50XG5cdCAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUg
aWYgdGhlIGV4aXN0aW5nIGluc3RhbmNlIHNob3VsZCBiZSB1cGRhdGVkLlxuXHQgKiBAcHJvdGVj
dGVkXG5cdCAqL1xuXHRcblx0ZnVuY3Rpb24gc2hvdWxkVXBkYXRlUmVhY3RDb21wb25lbnQocHJl
dkVsZW1lbnQsIG5leHRFbGVtZW50KSB7XG5cdCAgdmFyIHByZXZFbXB0eSA9IHByZXZFbGVtZW50
ID09PSBudWxsIHx8IHByZXZFbGVtZW50ID09PSBmYWxzZTtcblx0ICB2YXIgbmV4dEVtcHR5ID0g
bmV4dEVsZW1lbnQgPT09IG51bGwgfHwgbmV4dEVsZW1lbnQgPT09IGZhbHNlO1xuXHQgIGlmIChw
cmV2RW1wdHkgfHwgbmV4dEVtcHR5KSB7XG5cdCAgICByZXR1cm4gcHJldkVtcHR5ID09PSBuZXh0
RW1wdHk7XG5cdCAgfVxuXHRcblx0ICB2YXIgcHJldlR5cGUgPSB0eXBlb2YgcHJldkVsZW1lbnQ7
XG5cdCAgdmFyIG5leHRUeXBlID0gdHlwZW9mIG5leHRFbGVtZW50O1xuXHQgIGlmIChwcmV2VHlw
ZSA9PT0gJ3N0cmluZycgfHwgcHJldlR5cGUgPT09ICdudW1iZXInKSB7XG5cdCAgICByZXR1cm4g
bmV4dFR5cGUgPT09ICdzdHJpbmcnIHx8IG5leHRUeXBlID09PSAnbnVtYmVyJztcblx0ICB9IGVs
c2Uge1xuXHQgICAgcmV0dXJuIG5leHRUeXBlID09PSAnb2JqZWN0JyAmJiBwcmV2RWxlbWVudC50
eXBlID09PSBuZXh0RWxlbWVudC50eXBlICYmIHByZXZFbGVtZW50LmtleSA9PT0gbmV4dEVsZW1l
bnQua2V5O1xuXHQgIH1cblx0fVxuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBzaG91bGRVcGRhdGVS
ZWFjdENvbXBvbmVudDtcblxuLyoqKi8gfSxcbi8qIDQ5ICovXG4vKioqLyBmdW5jdGlvbihtb2R1
bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvKipcblx0ICogQ29weXJp
Z2h0IDIwMTUtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZl
ZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNE
LXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9v
dCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQg
KiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRo
ZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpcblx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxu
XHR2YXIgX2Fzc2lnbiA9IF9fd2VicGFja19yZXF1aXJlX18oNCk7XG5cdFxuXHR2YXIgZW1wdHlG
dW5jdGlvbiA9IF9fd2VicGFja19yZXF1aXJlX18oNyk7XG5cdHZhciB3YXJuaW5nID0gX193ZWJw
YWNrX3JlcXVpcmVfXygyKTtcblx0XG5cdHZhciB2YWxpZGF0ZURPTU5lc3RpbmcgPSBlbXB0eUZ1
bmN0aW9uO1xuXHRcblx0aWYgKGZhbHNlKSB7XG5cdCAgLy8gVGhpcyB2YWxpZGF0aW9uIGNvZGUg
d2FzIHdyaXR0ZW4gYmFzZWQgb24gdGhlIEhUTUw1IHBhcnNpbmcgc3BlYzpcblx0ICAvLyBodHRw
czovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9zeW50YXguaHRtbCNoYXMtYW4tZWxl
bWVudC1pbi1zY29wZVxuXHQgIC8vXG5cdCAgLy8gTm90ZTogdGhpcyBkb2VzIG5vdCBjYXRjaCBh
bGwgaW52YWxpZCBuZXN0aW5nLCBub3IgZG9lcyBpdCB0cnkgdG8gKGFzIGl0J3Ncblx0ICAvLyBu
b3QgY2xlYXIgd2hhdCBwcmFjdGljYWwgYmVuZWZpdCBkb2luZyBzbyBwcm92aWRlcyk7IGluc3Rl
YWQsIHdlIHdhcm4gb25seVxuXHQgIC8vIGZvciBjYXNlcyB3aGVyZSB0aGUgcGFyc2VyIHdpbGwg
Z2l2ZSBhIHBhcnNlIHRyZWUgZGlmZmVyaW5nIGZyb20gd2hhdCBSZWFjdFxuXHQgIC8vIGludGVu
ZGVkLiBGb3IgZXhhbXBsZSwgPGI+PGRpdj48L2Rpdj48L2I+IGlzIGludmFsaWQgYnV0IHdlIGRv
bid0IHdhcm5cblx0ICAvLyBiZWNhdXNlIGl0IHN0aWxsIHBhcnNlcyBjb3JyZWN0bHk7IHdlIGRv
IHdhcm4gZm9yIG90aGVyIGNhc2VzIGxpa2UgbmVzdGVkXG5cdCAgLy8gPHA+IHRhZ3Mgd2hlcmUg
dGhlIGJlZ2lubmluZyBvZiB0aGUgc2Vjb25kIGVsZW1lbnQgaW1wbGljaXRseSBjbG9zZXMgdGhl
XG5cdCAgLy8gZmlyc3QsIGNhdXNpbmcgYSBjb25mdXNpbmcgbWVzcy5cblx0XG5cdCAgLy8gaHR0
cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvc3ludGF4Lmh0bWwjc3BlY2lhbFxu
XHQgIHZhciBzcGVjaWFsVGFncyA9IFsnYWRkcmVzcycsICdhcHBsZXQnLCAnYXJlYScsICdhcnRp
Y2xlJywgJ2FzaWRlJywgJ2Jhc2UnLCAnYmFzZWZvbnQnLCAnYmdzb3VuZCcsICdibG9ja3F1b3Rl
JywgJ2JvZHknLCAnYnInLCAnYnV0dG9uJywgJ2NhcHRpb24nLCAnY2VudGVyJywgJ2NvbCcsICdj
b2xncm91cCcsICdkZCcsICdkZXRhaWxzJywgJ2RpcicsICdkaXYnLCAnZGwnLCAnZHQnLCAnZW1i
ZWQnLCAnZmllbGRzZXQnLCAnZmlnY2FwdGlvbicsICdmaWd1cmUnLCAnZm9vdGVyJywgJ2Zvcm0n
LCAnZnJhbWUnLCAnZnJhbWVzZXQnLCAnaDEnLCAnaDInLCAnaDMnLCAnaDQnLCAnaDUnLCAnaDYn
LCAnaGVhZCcsICdoZWFkZXInLCAnaGdyb3VwJywgJ2hyJywgJ2h0bWwnLCAnaWZyYW1lJywgJ2lt
ZycsICdpbnB1dCcsICdpc2luZGV4JywgJ2xpJywgJ2xpbmsnLCAnbGlzdGluZycsICdtYWluJywg
J21hcnF1ZWUnLCAnbWVudScsICdtZW51aXRlbScsICdtZXRhJywgJ25hdicsICdub2VtYmVkJywg
J25vZnJhbWVzJywgJ25vc2NyaXB0JywgJ29iamVjdCcsICdvbCcsICdwJywgJ3BhcmFtJywgJ3Bs
YWludGV4dCcsICdwcmUnLCAnc2NyaXB0JywgJ3NlY3Rpb24nLCAnc2VsZWN0JywgJ3NvdXJjZScs
ICdzdHlsZScsICdzdW1tYXJ5JywgJ3RhYmxlJywgJ3Rib2R5JywgJ3RkJywgJ3RlbXBsYXRlJywg
J3RleHRhcmVhJywgJ3Rmb290JywgJ3RoJywgJ3RoZWFkJywgJ3RpdGxlJywgJ3RyJywgJ3RyYWNr
JywgJ3VsJywgJ3dicicsICd4bXAnXTtcblx0XG5cdCAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hh
dHdnLm9yZy9tdWx0aXBhZ2Uvc3ludGF4Lmh0bWwjaGFzLWFuLWVsZW1lbnQtaW4tc2NvcGVcblx0
ICB2YXIgaW5TY29wZVRhZ3MgPSBbJ2FwcGxldCcsICdjYXB0aW9uJywgJ2h0bWwnLCAndGFibGUn
LCAndGQnLCAndGgnLCAnbWFycXVlZScsICdvYmplY3QnLCAndGVtcGxhdGUnLFxuXHRcblx0ICAv
LyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9zeW50YXguaHRtbCNodG1s
LWludGVncmF0aW9uLXBvaW50XG5cdCAgLy8gVE9ETzogRGlzdGluZ3Vpc2ggYnkgbmFtZXNwYWNl
IGhlcmUgLS0gZm9yIDx0aXRsZT4sIGluY2x1ZGluZyBpdCBoZXJlXG5cdCAgLy8gZXJycyBvbiB0
aGUgc2lkZSBvZiBmZXdlciB3YXJuaW5nc1xuXHQgICdmb3JlaWduT2JqZWN0JywgJ2Rlc2MnLCAn
dGl0bGUnXTtcblx0XG5cdCAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBh
Z2Uvc3ludGF4Lmh0bWwjaGFzLWFuLWVsZW1lbnQtaW4tYnV0dG9uLXNjb3BlXG5cdCAgdmFyIGJ1
dHRvblNjb3BlVGFncyA9IGluU2NvcGVUYWdzLmNvbmNhdChbJ2J1dHRvbiddKTtcblx0XG5cdCAg
Ly8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvc3ludGF4Lmh0bWwjZ2Vu
ZXJhdGUtaW1wbGllZC1lbmQtdGFnc1xuXHQgIHZhciBpbXBsaWVkRW5kVGFncyA9IFsnZGQnLCAn
ZHQnLCAnbGknLCAnb3B0aW9uJywgJ29wdGdyb3VwJywgJ3AnLCAncnAnLCAncnQnXTtcblx0XG5c
dCAgdmFyIGVtcHR5QW5jZXN0b3JJbmZvID0ge1xuXHQgICAgY3VycmVudDogbnVsbCxcblx0XG5c
dCAgICBmb3JtVGFnOiBudWxsLFxuXHQgICAgYVRhZ0luU2NvcGU6IG51bGwsXG5cdCAgICBidXR0
b25UYWdJblNjb3BlOiBudWxsLFxuXHQgICAgbm9iclRhZ0luU2NvcGU6IG51bGwsXG5cdCAgICBw
VGFnSW5CdXR0b25TY29wZTogbnVsbCxcblx0XG5cdCAgICBsaXN0SXRlbVRhZ0F1dG9jbG9zaW5n
OiBudWxsLFxuXHQgICAgZGxJdGVtVGFnQXV0b2Nsb3Npbmc6IG51bGxcblx0ICB9O1xuXHRcblx0
ICB2YXIgdXBkYXRlZEFuY2VzdG9ySW5mbyA9IGZ1bmN0aW9uIChvbGRJbmZvLCB0YWcsIGluc3Rh
bmNlKSB7XG5cdCAgICB2YXIgYW5jZXN0b3JJbmZvID0gX2Fzc2lnbih7fSwgb2xkSW5mbyB8fCBl
bXB0eUFuY2VzdG9ySW5mbyk7XG5cdCAgICB2YXIgaW5mbyA9IHsgdGFnOiB0YWcsIGluc3RhbmNl
OiBpbnN0YW5jZSB9O1xuXHRcblx0ICAgIGlmIChpblNjb3BlVGFncy5pbmRleE9mKHRhZykgIT09
IC0xKSB7XG5cdCAgICAgIGFuY2VzdG9ySW5mby5hVGFnSW5TY29wZSA9IG51bGw7XG5cdCAgICAg
IGFuY2VzdG9ySW5mby5idXR0b25UYWdJblNjb3BlID0gbnVsbDtcblx0ICAgICAgYW5jZXN0b3JJ
bmZvLm5vYnJUYWdJblNjb3BlID0gbnVsbDtcblx0ICAgIH1cblx0ICAgIGlmIChidXR0b25TY29w
ZVRhZ3MuaW5kZXhPZih0YWcpICE9PSAtMSkge1xuXHQgICAgICBhbmNlc3RvckluZm8ucFRhZ0lu
QnV0dG9uU2NvcGUgPSBudWxsO1xuXHQgICAgfVxuXHRcblx0ICAgIC8vIFNlZSBydWxlcyBmb3Ig
J2xpJywgJ2RkJywgJ2R0JyBzdGFydCB0YWdzIGluXG5cdCAgICAvLyBodHRwczovL2h0bWwuc3Bl
Yy53aGF0d2cub3JnL211bHRpcGFnZS9zeW50YXguaHRtbCNwYXJzaW5nLW1haW4taW5ib2R5XG5c
dCAgICBpZiAoc3BlY2lhbFRhZ3MuaW5kZXhPZih0YWcpICE9PSAtMSAmJiB0YWcgIT09ICdhZGRy
ZXNzJyAmJiB0YWcgIT09ICdkaXYnICYmIHRhZyAhPT0gJ3AnKSB7XG5cdCAgICAgIGFuY2VzdG9y
SW5mby5saXN0SXRlbVRhZ0F1dG9jbG9zaW5nID0gbnVsbDtcblx0ICAgICAgYW5jZXN0b3JJbmZv
LmRsSXRlbVRhZ0F1dG9jbG9zaW5nID0gbnVsbDtcblx0ICAgIH1cblx0XG5cdCAgICBhbmNlc3Rv
ckluZm8uY3VycmVudCA9IGluZm87XG5cdFxuXHQgICAgaWYgKHRhZyA9PT0gJ2Zvcm0nKSB7XG5c
dCAgICAgIGFuY2VzdG9ySW5mby5mb3JtVGFnID0gaW5mbztcblx0ICAgIH1cblx0ICAgIGlmICh0
YWcgPT09ICdhJykge1xuXHQgICAgICBhbmNlc3RvckluZm8uYVRhZ0luU2NvcGUgPSBpbmZvO1xu
XHQgICAgfVxuXHQgICAgaWYgKHRhZyA9PT0gJ2J1dHRvbicpIHtcblx0ICAgICAgYW5jZXN0b3JJ
bmZvLmJ1dHRvblRhZ0luU2NvcGUgPSBpbmZvO1xuXHQgICAgfVxuXHQgICAgaWYgKHRhZyA9PT0g
J25vYnInKSB7XG5cdCAgICAgIGFuY2VzdG9ySW5mby5ub2JyVGFnSW5TY29wZSA9IGluZm87XG5c
dCAgICB9XG5cdCAgICBpZiAodGFnID09PSAncCcpIHtcblx0ICAgICAgYW5jZXN0b3JJbmZvLnBU
YWdJbkJ1dHRvblNjb3BlID0gaW5mbztcblx0ICAgIH1cblx0ICAgIGlmICh0YWcgPT09ICdsaScp
IHtcblx0ICAgICAgYW5jZXN0b3JJbmZvLmxpc3RJdGVtVGFnQXV0b2Nsb3NpbmcgPSBpbmZvO1xu
XHQgICAgfVxuXHQgICAgaWYgKHRhZyA9PT0gJ2RkJyB8fCB0YWcgPT09ICdkdCcpIHtcblx0ICAg
ICAgYW5jZXN0b3JJbmZvLmRsSXRlbVRhZ0F1dG9jbG9zaW5nID0gaW5mbztcblx0ICAgIH1cblx0
XG5cdCAgICByZXR1cm4gYW5jZXN0b3JJbmZvO1xuXHQgIH07XG5cdFxuXHQgIC8qKlxuXHQgICAq
IFJldHVybnMgd2hldGhlclxuXHQgICAqL1xuXHQgIHZhciBpc1RhZ1ZhbGlkV2l0aFBhcmVudCA9
IGZ1bmN0aW9uICh0YWcsIHBhcmVudFRhZykge1xuXHQgICAgLy8gRmlyc3QsIGxldCdzIGNoZWNr
IGlmIHdlJ3JlIGluIGFuIHVudXN1YWwgcGFyc2luZyBtb2RlLi4uXG5cdCAgICBzd2l0Y2ggKHBh
cmVudFRhZykge1xuXHQgICAgICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRp
cGFnZS9zeW50YXguaHRtbCNwYXJzaW5nLW1haW4taW5zZWxlY3Rcblx0ICAgICAgY2FzZSAnc2Vs
ZWN0Jzpcblx0ICAgICAgICByZXR1cm4gdGFnID09PSAnb3B0aW9uJyB8fCB0YWcgPT09ICdvcHRn
cm91cCcgfHwgdGFnID09PSAnI3RleHQnO1xuXHQgICAgICBjYXNlICdvcHRncm91cCc6XG5cdCAg
ICAgICAgcmV0dXJuIHRhZyA9PT0gJ29wdGlvbicgfHwgdGFnID09PSAnI3RleHQnO1xuXHQgICAg
ICAvLyBTdHJpY3RseSBzcGVha2luZywgc2VlaW5nIGFuIDxvcHRpb24+IGRvZXNuJ3QgbWVhbiB3
ZSdyZSBpbiBhIDxzZWxlY3Q+XG5cdCAgICAgIC8vIGJ1dFxuXHQgICAgICBjYXNlICdvcHRpb24n
OlxuXHQgICAgICAgIHJldHVybiB0YWcgPT09ICcjdGV4dCc7XG5cdCAgICAgIC8vIGh0dHBzOi8v
aHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3N5bnRheC5odG1sI3BhcnNpbmctbWFpbi1p
bnRkXG5cdCAgICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3N5
bnRheC5odG1sI3BhcnNpbmctbWFpbi1pbmNhcHRpb25cblx0ICAgICAgLy8gTm8gc3BlY2lhbCBi
ZWhhdmlvciBzaW5jZSB0aGVzZSBydWxlcyBmYWxsIGJhY2sgdG8gXCJpbiBib2R5XCIgbW9kZSBm
b3Jcblx0ICAgICAgLy8gYWxsIGV4Y2VwdCBzcGVjaWFsIHRhYmxlIG5vZGVzIHdoaWNoIGNhdXNl
IGJhZCBwYXJzaW5nIGJlaGF2aW9yIGFueXdheS5cblx0XG5cdCAgICAgIC8vIGh0dHBzOi8vaHRt
bC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3N5bnRheC5odG1sI3BhcnNpbmctbWFpbi1pbnRy
XG5cdCAgICAgIGNhc2UgJ3RyJzpcblx0ICAgICAgICByZXR1cm4gdGFnID09PSAndGgnIHx8IHRh
ZyA9PT0gJ3RkJyB8fCB0YWcgPT09ICdzdHlsZScgfHwgdGFnID09PSAnc2NyaXB0JyB8fCB0YWcg
PT09ICd0ZW1wbGF0ZSc7XG5cdCAgICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcv
bXVsdGlwYWdlL3N5bnRheC5odG1sI3BhcnNpbmctbWFpbi1pbnRib2R5XG5cdCAgICAgIGNhc2Ug
J3Rib2R5Jzpcblx0ICAgICAgY2FzZSAndGhlYWQnOlxuXHQgICAgICBjYXNlICd0Zm9vdCc6XG5c
dCAgICAgICAgcmV0dXJuIHRhZyA9PT0gJ3RyJyB8fCB0YWcgPT09ICdzdHlsZScgfHwgdGFnID09
PSAnc2NyaXB0JyB8fCB0YWcgPT09ICd0ZW1wbGF0ZSc7XG5cdCAgICAgIC8vIGh0dHBzOi8vaHRt
bC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3N5bnRheC5odG1sI3BhcnNpbmctbWFpbi1pbmNv
bGdyb3VwXG5cdCAgICAgIGNhc2UgJ2NvbGdyb3VwJzpcblx0ICAgICAgICByZXR1cm4gdGFnID09
PSAnY29sJyB8fCB0YWcgPT09ICd0ZW1wbGF0ZSc7XG5cdCAgICAgIC8vIGh0dHBzOi8vaHRtbC5z
cGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3N5bnRheC5odG1sI3BhcnNpbmctbWFpbi1pbnRhYmxl
XG5cdCAgICAgIGNhc2UgJ3RhYmxlJzpcblx0ICAgICAgICByZXR1cm4gdGFnID09PSAnY2FwdGlv
bicgfHwgdGFnID09PSAnY29sZ3JvdXAnIHx8IHRhZyA9PT0gJ3Rib2R5JyB8fCB0YWcgPT09ICd0
Zm9vdCcgfHwgdGFnID09PSAndGhlYWQnIHx8IHRhZyA9PT0gJ3N0eWxlJyB8fCB0YWcgPT09ICdz
Y3JpcHQnIHx8IHRhZyA9PT0gJ3RlbXBsYXRlJztcblx0ICAgICAgLy8gaHR0cHM6Ly9odG1sLnNw
ZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvc3ludGF4Lmh0bWwjcGFyc2luZy1tYWluLWluaGVhZFxu
XHQgICAgICBjYXNlICdoZWFkJzpcblx0ICAgICAgICByZXR1cm4gdGFnID09PSAnYmFzZScgfHwg
dGFnID09PSAnYmFzZWZvbnQnIHx8IHRhZyA9PT0gJ2Jnc291bmQnIHx8IHRhZyA9PT0gJ2xpbmsn
IHx8IHRhZyA9PT0gJ21ldGEnIHx8IHRhZyA9PT0gJ3RpdGxlJyB8fCB0YWcgPT09ICdub3Njcmlw
dCcgfHwgdGFnID09PSAnbm9mcmFtZXMnIHx8IHRhZyA9PT0gJ3N0eWxlJyB8fCB0YWcgPT09ICdz
Y3JpcHQnIHx8IHRhZyA9PT0gJ3RlbXBsYXRlJztcblx0ICAgICAgLy8gaHR0cHM6Ly9odG1sLnNw
ZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvc2VtYW50aWNzLmh0bWwjdGhlLWh0bWwtZWxlbWVudFxu
XHQgICAgICBjYXNlICdodG1sJzpcblx0ICAgICAgICByZXR1cm4gdGFnID09PSAnaGVhZCcgfHwg
dGFnID09PSAnYm9keSc7XG5cdCAgICAgIGNhc2UgJyNkb2N1bWVudCc6XG5cdCAgICAgICAgcmV0
dXJuIHRhZyA9PT0gJ2h0bWwnO1xuXHQgICAgfVxuXHRcblx0ICAgIC8vIFByb2JhYmx5IGluIHRo
ZSBcImluIGJvZHlcIiBwYXJzaW5nIG1vZGUsIHNvIHdlIG91dGxhdyBvbmx5IHRhZyBjb21ib3Nc
blx0ICAgIC8vIHdoZXJlIHRoZSBwYXJzaW5nIHJ1bGVzIGNhdXNlIGltcGxpY2l0IG9wZW5zIG9y
IGNsb3NlcyB0byBiZSBhZGRlZC5cblx0ICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5v
cmcvbXVsdGlwYWdlL3N5bnRheC5odG1sI3BhcnNpbmctbWFpbi1pbmJvZHlcblx0ICAgIHN3aXRj
aCAodGFnKSB7XG5cdCAgICAgIGNhc2UgJ2gxJzpcblx0ICAgICAgY2FzZSAnaDInOlxuXHQgICAg
ICBjYXNlICdoMyc6XG5cdCAgICAgIGNhc2UgJ2g0Jzpcblx0ICAgICAgY2FzZSAnaDUnOlxuXHQg
ICAgICBjYXNlICdoNic6XG5cdCAgICAgICAgcmV0dXJuIHBhcmVudFRhZyAhPT0gJ2gxJyAmJiBw
YXJlbnRUYWcgIT09ICdoMicgJiYgcGFyZW50VGFnICE9PSAnaDMnICYmIHBhcmVudFRhZyAhPT0g
J2g0JyAmJiBwYXJlbnRUYWcgIT09ICdoNScgJiYgcGFyZW50VGFnICE9PSAnaDYnO1xuXHRcblx0
ICAgICAgY2FzZSAncnAnOlxuXHQgICAgICBjYXNlICdydCc6XG5cdCAgICAgICAgcmV0dXJuIGlt
cGxpZWRFbmRUYWdzLmluZGV4T2YocGFyZW50VGFnKSA9PT0gLTE7XG5cdFxuXHQgICAgICBjYXNl
ICdib2R5Jzpcblx0ICAgICAgY2FzZSAnY2FwdGlvbic6XG5cdCAgICAgIGNhc2UgJ2NvbCc6XG5c
dCAgICAgIGNhc2UgJ2NvbGdyb3VwJzpcblx0ICAgICAgY2FzZSAnZnJhbWUnOlxuXHQgICAgICBj
YXNlICdoZWFkJzpcblx0ICAgICAgY2FzZSAnaHRtbCc6XG5cdCAgICAgIGNhc2UgJ3Rib2R5Jzpc
blx0ICAgICAgY2FzZSAndGQnOlxuXHQgICAgICBjYXNlICd0Zm9vdCc6XG5cdCAgICAgIGNhc2Ug
J3RoJzpcblx0ICAgICAgY2FzZSAndGhlYWQnOlxuXHQgICAgICBjYXNlICd0cic6XG5cdCAgICAg
ICAgLy8gVGhlc2UgdGFncyBhcmUgb25seSB2YWxpZCB3aXRoIGEgZmV3IHBhcmVudHMgdGhhdCBo
YXZlIHNwZWNpYWwgY2hpbGRcblx0ICAgICAgICAvLyBwYXJzaW5nIHJ1bGVzIC0tIGlmIHdlJ3Jl
IGRvd24gaGVyZSwgdGhlbiBub25lIG9mIHRob3NlIG1hdGNoZWQgYW5kXG5cdCAgICAgICAgLy8g
c28gd2UgYWxsb3cgaXQgb25seSBpZiB3ZSBkb24ndCBrbm93IHdoYXQgdGhlIHBhcmVudCBpcywg
YXMgYWxsIG90aGVyXG5cdCAgICAgICAgLy8gY2FzZXMgYXJlIGludmFsaWQuXG5cdCAgICAgICAg
cmV0dXJuIHBhcmVudFRhZyA9PSBudWxsO1xuXHQgICAgfVxuXHRcblx0ICAgIHJldHVybiB0cnVl
O1xuXHQgIH07XG5cdFxuXHQgIC8qKlxuXHQgICAqIFJldHVybnMgd2hldGhlclxuXHQgICAqL1xu
XHQgIHZhciBmaW5kSW52YWxpZEFuY2VzdG9yRm9yVGFnID0gZnVuY3Rpb24gKHRhZywgYW5jZXN0
b3JJbmZvKSB7XG5cdCAgICBzd2l0Y2ggKHRhZykge1xuXHQgICAgICBjYXNlICdhZGRyZXNzJzpc
blx0ICAgICAgY2FzZSAnYXJ0aWNsZSc6XG5cdCAgICAgIGNhc2UgJ2FzaWRlJzpcblx0ICAgICAg
Y2FzZSAnYmxvY2txdW90ZSc6XG5cdCAgICAgIGNhc2UgJ2NlbnRlcic6XG5cdCAgICAgIGNhc2Ug
J2RldGFpbHMnOlxuXHQgICAgICBjYXNlICdkaWFsb2cnOlxuXHQgICAgICBjYXNlICdkaXInOlxu
XHQgICAgICBjYXNlICdkaXYnOlxuXHQgICAgICBjYXNlICdkbCc6XG5cdCAgICAgIGNhc2UgJ2Zp
ZWxkc2V0Jzpcblx0ICAgICAgY2FzZSAnZmlnY2FwdGlvbic6XG5cdCAgICAgIGNhc2UgJ2ZpZ3Vy
ZSc6XG5cdCAgICAgIGNhc2UgJ2Zvb3Rlcic6XG5cdCAgICAgIGNhc2UgJ2hlYWRlcic6XG5cdCAg
ICAgIGNhc2UgJ2hncm91cCc6XG5cdCAgICAgIGNhc2UgJ21haW4nOlxuXHQgICAgICBjYXNlICdt
ZW51Jzpcblx0ICAgICAgY2FzZSAnbmF2Jzpcblx0ICAgICAgY2FzZSAnb2wnOlxuXHQgICAgICBj
YXNlICdwJzpcblx0ICAgICAgY2FzZSAnc2VjdGlvbic6XG5cdCAgICAgIGNhc2UgJ3N1bW1hcnkn
OlxuXHQgICAgICBjYXNlICd1bCc6XG5cdCAgICAgIGNhc2UgJ3ByZSc6XG5cdCAgICAgIGNhc2Ug
J2xpc3RpbmcnOlxuXHQgICAgICBjYXNlICd0YWJsZSc6XG5cdCAgICAgIGNhc2UgJ2hyJzpcblx0
ICAgICAgY2FzZSAneG1wJzpcblx0ICAgICAgY2FzZSAnaDEnOlxuXHQgICAgICBjYXNlICdoMic6
XG5cdCAgICAgIGNhc2UgJ2gzJzpcblx0ICAgICAgY2FzZSAnaDQnOlxuXHQgICAgICBjYXNlICdo
NSc6XG5cdCAgICAgIGNhc2UgJ2g2Jzpcblx0ICAgICAgICByZXR1cm4gYW5jZXN0b3JJbmZvLnBU
YWdJbkJ1dHRvblNjb3BlO1xuXHRcblx0ICAgICAgY2FzZSAnZm9ybSc6XG5cdCAgICAgICAgcmV0
dXJuIGFuY2VzdG9ySW5mby5mb3JtVGFnIHx8IGFuY2VzdG9ySW5mby5wVGFnSW5CdXR0b25TY29w
ZTtcblx0XG5cdCAgICAgIGNhc2UgJ2xpJzpcblx0ICAgICAgICByZXR1cm4gYW5jZXN0b3JJbmZv
Lmxpc3RJdGVtVGFnQXV0b2Nsb3Npbmc7XG5cdFxuXHQgICAgICBjYXNlICdkZCc6XG5cdCAgICAg
IGNhc2UgJ2R0Jzpcblx0ICAgICAgICByZXR1cm4gYW5jZXN0b3JJbmZvLmRsSXRlbVRhZ0F1dG9j
bG9zaW5nO1xuXHRcblx0ICAgICAgY2FzZSAnYnV0dG9uJzpcblx0ICAgICAgICByZXR1cm4gYW5j
ZXN0b3JJbmZvLmJ1dHRvblRhZ0luU2NvcGU7XG5cdFxuXHQgICAgICBjYXNlICdhJzpcblx0ICAg
ICAgICAvLyBTcGVjIHNheXMgc29tZXRoaW5nIGFib3V0IHN0b3JpbmcgYSBsaXN0IG9mIG1hcmtl
cnMsIGJ1dCBpdCBzb3VuZHNcblx0ICAgICAgICAvLyBlcXVpdmFsZW50IHRvIHRoaXMgY2hlY2su
XG5cdCAgICAgICAgcmV0dXJuIGFuY2VzdG9ySW5mby5hVGFnSW5TY29wZTtcblx0XG5cdCAgICAg
IGNhc2UgJ25vYnInOlxuXHQgICAgICAgIHJldHVybiBhbmNlc3RvckluZm8ubm9iclRhZ0luU2Nv
cGU7XG5cdCAgICB9XG5cdFxuXHQgICAgcmV0dXJuIG51bGw7XG5cdCAgfTtcblx0XG5cdCAgLyoq
XG5cdCAgICogR2l2ZW4gYSBSZWFjdENvbXBvc2l0ZUNvbXBvbmVudCBpbnN0YW5jZSwgcmV0dXJu
IGEgbGlzdCBvZiBpdHMgcmVjdXJzaXZlXG5cdCAgICogb3duZXJzLCBzdGFydGluZyBhdCB0aGUg
cm9vdCBhbmQgZW5kaW5nIHdpdGggdGhlIGluc3RhbmNlIGl0c2VsZi5cblx0ICAgKi9cblx0ICB2
YXIgZmluZE93bmVyU3RhY2sgPSBmdW5jdGlvbiAoaW5zdGFuY2UpIHtcblx0ICAgIGlmICghaW5z
dGFuY2UpIHtcblx0ICAgICAgcmV0dXJuIFtdO1xuXHQgICAgfVxuXHRcblx0ICAgIHZhciBzdGFj
ayA9IFtdO1xuXHQgICAgZG8ge1xuXHQgICAgICBzdGFjay5wdXNoKGluc3RhbmNlKTtcblx0ICAg
IH0gd2hpbGUgKGluc3RhbmNlID0gaW5zdGFuY2UuX2N1cnJlbnRFbGVtZW50Ll9vd25lcik7XG5c
dCAgICBzdGFjay5yZXZlcnNlKCk7XG5cdCAgICByZXR1cm4gc3RhY2s7XG5cdCAgfTtcblx0XG5c
dCAgdmFyIGRpZFdhcm4gPSB7fTtcblx0XG5cdCAgdmFsaWRhdGVET01OZXN0aW5nID0gZnVuY3Rp
b24gKGNoaWxkVGFnLCBjaGlsZFRleHQsIGNoaWxkSW5zdGFuY2UsIGFuY2VzdG9ySW5mbykge1xu
XHQgICAgYW5jZXN0b3JJbmZvID0gYW5jZXN0b3JJbmZvIHx8IGVtcHR5QW5jZXN0b3JJbmZvO1xu
XHQgICAgdmFyIHBhcmVudEluZm8gPSBhbmNlc3RvckluZm8uY3VycmVudDtcblx0ICAgIHZhciBw
YXJlbnRUYWcgPSBwYXJlbnRJbmZvICYmIHBhcmVudEluZm8udGFnO1xuXHRcblx0ICAgIGlmIChj
aGlsZFRleHQgIT0gbnVsbCkge1xuXHQgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3By
b2R1Y3Rpb24nID8gd2FybmluZyhjaGlsZFRhZyA9PSBudWxsLCAndmFsaWRhdGVET01OZXN0aW5n
OiB3aGVuIGNoaWxkVGV4dCBpcyBwYXNzZWQsIGNoaWxkVGFnIHNob3VsZCBiZSBudWxsJykgOiB2
b2lkIDA7XG5cdCAgICAgIGNoaWxkVGFnID0gJyN0ZXh0Jztcblx0ICAgIH1cblx0XG5cdCAgICB2
YXIgaW52YWxpZFBhcmVudCA9IGlzVGFnVmFsaWRXaXRoUGFyZW50KGNoaWxkVGFnLCBwYXJlbnRU
YWcpID8gbnVsbCA6IHBhcmVudEluZm87XG5cdCAgICB2YXIgaW52YWxpZEFuY2VzdG9yID0gaW52
YWxpZFBhcmVudCA/IG51bGwgOiBmaW5kSW52YWxpZEFuY2VzdG9yRm9yVGFnKGNoaWxkVGFnLCBh
bmNlc3RvckluZm8pO1xuXHQgICAgdmFyIHByb2JsZW1hdGljID0gaW52YWxpZFBhcmVudCB8fCBp
bnZhbGlkQW5jZXN0b3I7XG5cdFxuXHQgICAgaWYgKHByb2JsZW1hdGljKSB7XG5cdCAgICAgIHZh
ciBhbmNlc3RvclRhZyA9IHByb2JsZW1hdGljLnRhZztcblx0ICAgICAgdmFyIGFuY2VzdG9ySW5z
dGFuY2UgPSBwcm9ibGVtYXRpYy5pbnN0YW5jZTtcblx0XG5cdCAgICAgIHZhciBjaGlsZE93bmVy
ID0gY2hpbGRJbnN0YW5jZSAmJiBjaGlsZEluc3RhbmNlLl9jdXJyZW50RWxlbWVudC5fb3duZXI7
XG5cdCAgICAgIHZhciBhbmNlc3Rvck93bmVyID0gYW5jZXN0b3JJbnN0YW5jZSAmJiBhbmNlc3Rv
ckluc3RhbmNlLl9jdXJyZW50RWxlbWVudC5fb3duZXI7XG5cdFxuXHQgICAgICB2YXIgY2hpbGRP
d25lcnMgPSBmaW5kT3duZXJTdGFjayhjaGlsZE93bmVyKTtcblx0ICAgICAgdmFyIGFuY2VzdG9y
T3duZXJzID0gZmluZE93bmVyU3RhY2soYW5jZXN0b3JPd25lcik7XG5cdFxuXHQgICAgICB2YXIg
bWluU3RhY2tMZW4gPSBNYXRoLm1pbihjaGlsZE93bmVycy5sZW5ndGgsIGFuY2VzdG9yT3duZXJz
Lmxlbmd0aCk7XG5cdCAgICAgIHZhciBpO1xuXHRcblx0ICAgICAgdmFyIGRlZXBlc3RDb21tb24g
PSAtMTtcblx0ICAgICAgZm9yIChpID0gMDsgaSA8IG1pblN0YWNrTGVuOyBpKyspIHtcblx0ICAg
ICAgICBpZiAoY2hpbGRPd25lcnNbaV0gPT09IGFuY2VzdG9yT3duZXJzW2ldKSB7XG5cdCAgICAg
ICAgICBkZWVwZXN0Q29tbW9uID0gaTtcblx0ICAgICAgICB9IGVsc2Uge1xuXHQgICAgICAgICAg
YnJlYWs7XG5cdCAgICAgICAgfVxuXHQgICAgICB9XG5cdFxuXHQgICAgICB2YXIgVU5LTk9XTiA9
ICcodW5rbm93biknO1xuXHQgICAgICB2YXIgY2hpbGRPd25lck5hbWVzID0gY2hpbGRPd25lcnMu
c2xpY2UoZGVlcGVzdENvbW1vbiArIDEpLm1hcChmdW5jdGlvbiAoaW5zdCkge1xuXHQgICAgICAg
IHJldHVybiBpbnN0LmdldE5hbWUoKSB8fCBVTktOT1dOO1xuXHQgICAgICB9KTtcblx0ICAgICAg
dmFyIGFuY2VzdG9yT3duZXJOYW1lcyA9IGFuY2VzdG9yT3duZXJzLnNsaWNlKGRlZXBlc3RDb21t
b24gKyAxKS5tYXAoZnVuY3Rpb24gKGluc3QpIHtcblx0ICAgICAgICByZXR1cm4gaW5zdC5nZXRO
YW1lKCkgfHwgVU5LTk9XTjtcblx0ICAgICAgfSk7XG5cdCAgICAgIHZhciBvd25lckluZm8gPSBb
XS5jb25jYXQoXG5cdCAgICAgIC8vIElmIHRoZSBwYXJlbnQgYW5kIGNoaWxkIGluc3RhbmNlcyBo
YXZlIGEgY29tbW9uIG93bmVyIGFuY2VzdG9yLCBzdGFydFxuXHQgICAgICAvLyB3aXRoIHRoYXQg
LS0gb3RoZXJ3aXNlIHdlIGp1c3Qgc3RhcnQgd2l0aCB0aGUgcGFyZW50J3Mgb3duZXJzLlxuXHQg
ICAgICBkZWVwZXN0Q29tbW9uICE9PSAtMSA/IGNoaWxkT3duZXJzW2RlZXBlc3RDb21tb25dLmdl
dE5hbWUoKSB8fCBVTktOT1dOIDogW10sIGFuY2VzdG9yT3duZXJOYW1lcywgYW5jZXN0b3JUYWcs
XG5cdCAgICAgIC8vIElmIHdlJ3JlIHdhcm5pbmcgYWJvdXQgYW4gaW52YWxpZCAobm9uLXBhcmVu
dCkgYW5jZXN0cnksIGFkZCAnLi4uJ1xuXHQgICAgICBpbnZhbGlkQW5jZXN0b3IgPyBbJy4uLidd
IDogW10sIGNoaWxkT3duZXJOYW1lcywgY2hpbGRUYWcpLmpvaW4oJyA+ICcpO1xuXHRcblx0ICAg
ICAgdmFyIHdhcm5LZXkgPSAhIWludmFsaWRQYXJlbnQgKyAnfCcgKyBjaGlsZFRhZyArICd8JyAr
IGFuY2VzdG9yVGFnICsgJ3wnICsgb3duZXJJbmZvO1xuXHQgICAgICBpZiAoZGlkV2Fyblt3YXJu
S2V5XSkge1xuXHQgICAgICAgIHJldHVybjtcblx0ICAgICAgfVxuXHQgICAgICBkaWRXYXJuW3dh
cm5LZXldID0gdHJ1ZTtcblx0XG5cdCAgICAgIHZhciB0YWdEaXNwbGF5TmFtZSA9IGNoaWxkVGFn
O1xuXHQgICAgICB2YXIgd2hpdGVzcGFjZUluZm8gPSAnJztcblx0ICAgICAgaWYgKGNoaWxkVGFn
ID09PSAnI3RleHQnKSB7XG5cdCAgICAgICAgaWYgKC9cXFMvLnRlc3QoY2hpbGRUZXh0KSkge1xu
XHQgICAgICAgICAgdGFnRGlzcGxheU5hbWUgPSAnVGV4dCBub2Rlcyc7XG5cdCAgICAgICAgfSBl
bHNlIHtcblx0ICAgICAgICAgIHRhZ0Rpc3BsYXlOYW1lID0gJ1doaXRlc3BhY2UgdGV4dCBub2Rl
cyc7XG5cdCAgICAgICAgICB3aGl0ZXNwYWNlSW5mbyA9IFwiIE1ha2Ugc3VyZSB5b3UgZG9uJ3Qg
aGF2ZSBhbnkgZXh0cmEgd2hpdGVzcGFjZSBiZXR3ZWVuIHRhZ3Mgb24gXCIgKyAnZWFjaCBsaW5l
IG9mIHlvdXIgc291cmNlIGNvZGUuJztcblx0ICAgICAgICB9XG5cdCAgICAgIH0gZWxzZSB7XG5c
dCAgICAgICAgdGFnRGlzcGxheU5hbWUgPSAnPCcgKyBjaGlsZFRhZyArICc+Jztcblx0ICAgICAg
fVxuXHRcblx0ICAgICAgaWYgKGludmFsaWRQYXJlbnQpIHtcblx0ICAgICAgICB2YXIgaW5mbyA9
ICcnO1xuXHQgICAgICAgIGlmIChhbmNlc3RvclRhZyA9PT0gJ3RhYmxlJyAmJiBjaGlsZFRhZyA9
PT0gJ3RyJykge1xuXHQgICAgICAgICAgaW5mbyArPSAnIEFkZCBhIDx0Ym9keT4gdG8geW91ciBj
b2RlIHRvIG1hdGNoIHRoZSBET00gdHJlZSBnZW5lcmF0ZWQgYnkgJyArICd0aGUgYnJvd3Nlci4n
O1xuXHQgICAgICAgIH1cblx0ICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1
Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ3ZhbGlkYXRlRE9NTmVzdGluZyguLi4pOiAlcyBjYW5u
b3QgYXBwZWFyIGFzIGEgY2hpbGQgb2YgPCVzPi4lcyAnICsgJ1NlZSAlcy4lcycsIHRhZ0Rpc3Bs
YXlOYW1lLCBhbmNlc3RvclRhZywgd2hpdGVzcGFjZUluZm8sIG93bmVySW5mbywgaW5mbykgOiB2
b2lkIDA7XG5cdCAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYg
IT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICd2YWxpZGF0ZURPTU5lc3RpbmcoLi4u
KTogJXMgY2Fubm90IGFwcGVhciBhcyBhIGRlc2NlbmRhbnQgb2YgJyArICc8JXM+LiBTZWUgJXMu
JywgdGFnRGlzcGxheU5hbWUsIGFuY2VzdG9yVGFnLCBvd25lckluZm8pIDogdm9pZCAwO1xuXHQg
ICAgICB9XG5cdCAgICB9XG5cdCAgfTtcblx0XG5cdCAgdmFsaWRhdGVET01OZXN0aW5nLnVwZGF0
ZWRBbmNlc3RvckluZm8gPSB1cGRhdGVkQW5jZXN0b3JJbmZvO1xuXHRcblx0ICAvLyBGb3IgdGVz
dGluZ1xuXHQgIHZhbGlkYXRlRE9NTmVzdGluZy5pc1RhZ1ZhbGlkSW5Db250ZXh0ID0gZnVuY3Rp
b24gKHRhZywgYW5jZXN0b3JJbmZvKSB7XG5cdCAgICBhbmNlc3RvckluZm8gPSBhbmNlc3Rvcklu
Zm8gfHwgZW1wdHlBbmNlc3RvckluZm87XG5cdCAgICB2YXIgcGFyZW50SW5mbyA9IGFuY2VzdG9y
SW5mby5jdXJyZW50O1xuXHQgICAgdmFyIHBhcmVudFRhZyA9IHBhcmVudEluZm8gJiYgcGFyZW50
SW5mby50YWc7XG5cdCAgICByZXR1cm4gaXNUYWdWYWxpZFdpdGhQYXJlbnQodGFnLCBwYXJlbnRU
YWcpICYmICFmaW5kSW52YWxpZEFuY2VzdG9yRm9yVGFnKHRhZywgYW5jZXN0b3JJbmZvKTtcblx0
ICB9O1xuXHR9XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IHZhbGlkYXRlRE9NTmVzdGluZztcblxu
LyoqKi8gfSxcbi8qIDUwICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxu
XHQndXNlIHN0cmljdCc7XG5cdFxuXHRleHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuXHRleHBv
cnRzLmRlZmF1bHQgPSB3YXJuaW5nO1xuXHQvKipcblx0ICogUHJpbnRzIGEgd2FybmluZyBpbiB0
aGUgY29uc29sZSBpZiBpdCBleGlzdHMuXG5cdCAqXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBtZXNz
YWdlIFRoZSB3YXJuaW5nIG1lc3NhZ2UuXG5cdCAqIEByZXR1cm5zIHt2b2lkfVxuXHQgKi9cblx0
ZnVuY3Rpb24gd2FybmluZyhtZXNzYWdlKSB7XG5cdCAgLyogZXNsaW50LWRpc2FibGUgbm8tY29u
c29sZSAqL1xuXHQgIGlmICh0eXBlb2YgY29uc29sZSAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9m
IGNvbnNvbGUuZXJyb3IgPT09ICdmdW5jdGlvbicpIHtcblx0ICAgIGNvbnNvbGUuZXJyb3IobWVz
c2FnZSk7XG5cdCAgfVxuXHQgIC8qIGVzbGludC1lbmFibGUgbm8tY29uc29sZSAqL1xuXHQgIHRy
eSB7XG5cdCAgICAvLyBUaGlzIGVycm9yIHdhcyB0aHJvd24gYXMgYSBjb252ZW5pZW5jZSBzbyB0
aGF0IGlmIHlvdSBlbmFibGVcblx0ICAgIC8vIFwiYnJlYWsgb24gYWxsIGV4Y2VwdGlvbnNcIiBp
biB5b3VyIGNvbnNvbGUsXG5cdCAgICAvLyBpdCB3b3VsZCBwYXVzZSB0aGUgZXhlY3V0aW9uIGF0
IHRoaXMgbGluZS5cblx0ICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKTtcblx0ICAgIC8qIGVz
bGludC1kaXNhYmxlIG5vLWVtcHR5ICovXG5cdCAgfSBjYXRjaCAoZSkge31cblx0ICAvKiBlc2xp
bnQtZW5hYmxlIG5vLWVtcHR5ICovXG5cdH1cblxuLyoqKi8gfSxcbi8qIDUxICovXG4vKioqLyBm
dW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQndXNl
IHN0cmljdCc7XG5cdFxuXHQvKipcblx0ICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZh
Y2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMg
c291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5k
IGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMg
c291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBj
YW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5c
dCAqXG5cdCAqIEB0eXBlY2hlY2tzXG5cdCAqL1xuXHRcblx0dmFyIGVtcHR5RnVuY3Rpb24gPSBf
X3dlYnBhY2tfcmVxdWlyZV9fKDcpO1xuXHRcblx0LyoqXG5cdCAqIFVwc3RyZWFtIHZlcnNpb24g
b2YgZXZlbnQgbGlzdGVuZXIuIERvZXMgbm90IHRha2UgaW50byBhY2NvdW50IHNwZWNpZmljXG5c
dCAqIG5hdHVyZSBvZiBwbGF0Zm9ybS5cblx0ICovXG5cdHZhciBFdmVudExpc3RlbmVyID0ge1xu
XHQgIC8qKlxuXHQgICAqIExpc3RlbiB0byBET00gZXZlbnRzIGR1cmluZyB0aGUgYnViYmxlIHBo
YXNlLlxuXHQgICAqXG5cdCAgICogQHBhcmFtIHtET01FdmVudFRhcmdldH0gdGFyZ2V0IERPTSBl
bGVtZW50IHRvIHJlZ2lzdGVyIGxpc3RlbmVyIG9uLlxuXHQgICAqIEBwYXJhbSB7c3RyaW5nfSBl
dmVudFR5cGUgRXZlbnQgdHlwZSwgZS5nLiAnY2xpY2snIG9yICdtb3VzZW92ZXInLlxuXHQgICAq
IEBwYXJhbSB7ZnVuY3Rpb259IGNhbGxiYWNrIENhbGxiYWNrIGZ1bmN0aW9uLlxuXHQgICAqIEBy
ZXR1cm4ge29iamVjdH0gT2JqZWN0IHdpdGggYSBgcmVtb3ZlYCBtZXRob2QuXG5cdCAgICovXG5c
dCAgbGlzdGVuOiBmdW5jdGlvbiBsaXN0ZW4odGFyZ2V0LCBldmVudFR5cGUsIGNhbGxiYWNrKSB7
XG5cdCAgICBpZiAodGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIpIHtcblx0ICAgICAgdGFyZ2V0LmFk
ZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBjYWxsYmFjaywgZmFsc2UpO1xuXHQgICAgICByZXR1
cm4ge1xuXHQgICAgICAgIHJlbW92ZTogZnVuY3Rpb24gcmVtb3ZlKCkge1xuXHQgICAgICAgICAg
dGFyZ2V0LnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBjYWxsYmFjaywgZmFsc2UpO1xu
XHQgICAgICAgIH1cblx0ICAgICAgfTtcblx0ICAgIH0gZWxzZSBpZiAodGFyZ2V0LmF0dGFjaEV2
ZW50KSB7XG5cdCAgICAgIHRhcmdldC5hdHRhY2hFdmVudCgnb24nICsgZXZlbnRUeXBlLCBjYWxs
YmFjayk7XG5cdCAgICAgIHJldHVybiB7XG5cdCAgICAgICAgcmVtb3ZlOiBmdW5jdGlvbiByZW1v
dmUoKSB7XG5cdCAgICAgICAgICB0YXJnZXQuZGV0YWNoRXZlbnQoJ29uJyArIGV2ZW50VHlwZSwg
Y2FsbGJhY2spO1xuXHQgICAgICAgIH1cblx0ICAgICAgfTtcblx0ICAgIH1cblx0ICB9LFxuXHRc
blx0ICAvKipcblx0ICAgKiBMaXN0ZW4gdG8gRE9NIGV2ZW50cyBkdXJpbmcgdGhlIGNhcHR1cmUg
cGhhc2UuXG5cdCAgICpcblx0ICAgKiBAcGFyYW0ge0RPTUV2ZW50VGFyZ2V0fSB0YXJnZXQgRE9N
IGVsZW1lbnQgdG8gcmVnaXN0ZXIgbGlzdGVuZXIgb24uXG5cdCAgICogQHBhcmFtIHtzdHJpbmd9
IGV2ZW50VHlwZSBFdmVudCB0eXBlLCBlLmcuICdjbGljaycgb3IgJ21vdXNlb3ZlcicuXG5cdCAg
ICogQHBhcmFtIHtmdW5jdGlvbn0gY2FsbGJhY2sgQ2FsbGJhY2sgZnVuY3Rpb24uXG5cdCAgICog
QHJldHVybiB7b2JqZWN0fSBPYmplY3Qgd2l0aCBhIGByZW1vdmVgIG1ldGhvZC5cblx0ICAgKi9c
blx0ICBjYXB0dXJlOiBmdW5jdGlvbiBjYXB0dXJlKHRhcmdldCwgZXZlbnRUeXBlLCBjYWxsYmFj
aykge1xuXHQgICAgaWYgKHRhcmdldC5hZGRFdmVudExpc3RlbmVyKSB7XG5cdCAgICAgIHRhcmdl
dC5hZGRFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgY2FsbGJhY2ssIHRydWUpO1xuXHQgICAgICBy
ZXR1cm4ge1xuXHQgICAgICAgIHJlbW92ZTogZnVuY3Rpb24gcmVtb3ZlKCkge1xuXHQgICAgICAg
ICAgdGFyZ2V0LnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBjYWxsYmFjaywgdHJ1ZSk7
XG5cdCAgICAgICAgfVxuXHQgICAgICB9O1xuXHQgICAgfSBlbHNlIHtcblx0ICAgICAgaWYgKGZh
bHNlKSB7XG5cdCAgICAgICAgY29uc29sZS5lcnJvcignQXR0ZW1wdGVkIHRvIGxpc3RlbiB0byBl
dmVudHMgZHVyaW5nIHRoZSBjYXB0dXJlIHBoYXNlIG9uIGEgJyArICdicm93c2VyIHRoYXQgZG9l
cyBub3Qgc3VwcG9ydCB0aGUgY2FwdHVyZSBwaGFzZS4gWW91ciBhcHBsaWNhdGlvbiAnICsgJ3dp
bGwgbm90IHJlY2VpdmUgc29tZSBldmVudHMuJyk7XG5cdCAgICAgIH1cblx0ICAgICAgcmV0dXJu
IHtcblx0ICAgICAgICByZW1vdmU6IGVtcHR5RnVuY3Rpb25cblx0ICAgICAgfTtcblx0ICAgIH1c
blx0ICB9LFxuXHRcblx0ICByZWdpc3RlckRlZmF1bHQ6IGZ1bmN0aW9uIHJlZ2lzdGVyRGVmYXVs
dCgpIHt9XG5cdH07XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IEV2ZW50TGlzdGVuZXI7XG5cbi8q
KiovIH0sXG4vKiA1MiAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cblx0
LyoqXG5cdCAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQg
KiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxp
Y2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElD
RU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBh
ZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRo
ZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKi9cblx0XG5c
dCd1c2Ugc3RyaWN0Jztcblx0XG5cdC8qKlxuXHQgKiBAcGFyYW0ge0RPTUVsZW1lbnR9IG5vZGUg
aW5wdXQvdGV4dGFyZWEgdG8gZm9jdXNcblx0ICovXG5cdFxuXHRmdW5jdGlvbiBmb2N1c05vZGUo
bm9kZSkge1xuXHQgIC8vIElFOCBjYW4gdGhyb3cgXCJDYW4ndCBtb3ZlIGZvY3VzIHRvIHRoZSBj
b250cm9sIGJlY2F1c2UgaXQgaXMgaW52aXNpYmxlLFxuXHQgIC8vIG5vdCBlbmFibGVkLCBvciBv
ZiBhIHR5cGUgdGhhdCBkb2VzIG5vdCBhY2NlcHQgdGhlIGZvY3VzLlwiIGZvciBhbGwga2luZHMg
b2Zcblx0ICAvLyByZWFzb25zIHRoYXQgYXJlIHRvbyBleHBlbnNpdmUgYW5kIGZyYWdpbGUgdG8g
dGVzdC5cblx0ICB0cnkge1xuXHQgICAgbm9kZS5mb2N1cygpO1xuXHQgIH0gY2F0Y2ggKGUpIHt9
XG5cdH1cblx0XG5cdG1vZHVsZS5leHBvcnRzID0gZm9jdXNOb2RlO1xuXG4vKioqLyB9LFxuLyog
NTMgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5cdCd1c2Ugc3RyaWN0
Jztcblx0XG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ss
IEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2Ug
Y29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhl
XG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2Ug
dHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBm
b3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpcblx0
ICogQHR5cGVjaGVja3Ncblx0ICovXG5cdFxuXHQvKiBlc2xpbnQtZGlzYWJsZSBmYi13d3cvdHlw
ZW9mLXVuZGVmaW5lZCAqL1xuXHRcblx0LyoqXG5cdCAqIFNhbWUgYXMgZG9jdW1lbnQuYWN0aXZl
RWxlbWVudCBidXQgd3JhcHMgaW4gYSB0cnktY2F0Y2ggYmxvY2suIEluIElFIGl0IGlzXG5cdCAq
IG5vdCBzYWZlIHRvIGNhbGwgZG9jdW1lbnQuYWN0aXZlRWxlbWVudCBpZiB0aGVyZSBpcyBub3Ro
aW5nIGZvY3VzZWQuXG5cdCAqXG5cdCAqIFRoZSBhY3RpdmVFbGVtZW50IHdpbGwgYmUgbnVsbCBv
bmx5IGlmIHRoZSBkb2N1bWVudCBvciBkb2N1bWVudCBib2R5IGlzIG5vdFxuXHQgKiB5ZXQgZGVm
aW5lZC5cblx0ICpcblx0ICogQHBhcmFtIHs/RE9NRG9jdW1lbnR9IGRvYyBEZWZhdWx0cyB0byBj
dXJyZW50IGRvY3VtZW50LlxuXHQgKiBAcmV0dXJuIHs/RE9NRWxlbWVudH1cblx0ICovXG5cdGZ1
bmN0aW9uIGdldEFjdGl2ZUVsZW1lbnQoZG9jKSAvKj9ET01FbGVtZW50Ki97XG5cdCAgZG9jID0g
ZG9jIHx8ICh0eXBlb2YgZG9jdW1lbnQgIT09ICd1bmRlZmluZWQnID8gZG9jdW1lbnQgOiB1bmRl
ZmluZWQpO1xuXHQgIGlmICh0eXBlb2YgZG9jID09PSAndW5kZWZpbmVkJykge1xuXHQgICAgcmV0
dXJuIG51bGw7XG5cdCAgfVxuXHQgIHRyeSB7XG5cdCAgICByZXR1cm4gZG9jLmFjdGl2ZUVsZW1l
bnQgfHwgZG9jLmJvZHk7XG5cdCAgfSBjYXRjaCAoZSkge1xuXHQgICAgcmV0dXJuIGRvYy5ib2R5
O1xuXHQgIH1cblx0fVxuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBnZXRBY3RpdmVFbGVtZW50O1xu
XG4vKioqLyB9LFxuLyogNTQgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193
ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdHZhciByb290ID0gX193ZWJwYWNrX3JlcXVpcmVfXygx
MTgpO1xuXHRcblx0LyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG5cdHZhciBTeW1i
b2wgPSByb290LlN5bWJvbDtcblx0XG5cdG1vZHVsZS5leHBvcnRzID0gU3ltYm9sO1xuXG5cbi8q
KiovIH0sXG4vKiA1NSAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBh
Y2tfcmVxdWlyZV9fKSB7XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZh
Y2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMg
c291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5k
IGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMg
c291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBj
YW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5c
dCAqL1xuXHRcblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0Ly8gUmVhY3QgMTUuNSByZWZlcmVuY2Vz
IHRoaXMgbW9kdWxlLCBhbmQgYXNzdW1lcyBQcm9wVHlwZXMgYXJlIHN0aWxsIGNhbGxhYmxlIGlu
IHByb2R1Y3Rpb24uXG5cdC8vIFRoZXJlZm9yZSB3ZSByZS1leHBvcnQgZGV2ZWxvcG1lbnQtb25s
eSB2ZXJzaW9uIHdpdGggYWxsIHRoZSBQcm9wVHlwZXMgY2hlY2tzIGhlcmUuXG5cdC8vIEhvd2V2
ZXIgaWYgb25lIGlzIG1pZ3JhdGluZyB0byB0aGUgYHByb3AtdHlwZXNgIG5wbSBsaWJyYXJ5LCB0
aGV5IHdpbGwgZ28gdGhyb3VnaCB0aGVcblx0Ly8gYGluZGV4LmpzYCBlbnRyeSBwb2ludCwgYW5k
IGl0IHdpbGwgYnJhbmNoIGRlcGVuZGluZyBvbiB0aGUgZW52aXJvbm1lbnQuXG5cdHZhciBmYWN0
b3J5ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMjIpO1xuXHRtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0
aW9uKGlzVmFsaWRFbGVtZW50KSB7XG5cdCAgLy8gSXQgaXMgc3RpbGwgYWxsb3dlZCBpbiAxNS41
LlxuXHQgIHZhciB0aHJvd09uRGlyZWN0QWNjZXNzID0gZmFsc2U7XG5cdCAgcmV0dXJuIGZhY3Rv
cnkoaXNWYWxpZEVsZW1lbnQsIHRocm93T25EaXJlY3RBY2Nlc3MpO1xuXHR9O1xuXG5cbi8qKiov
IH0sXG4vKiA1NiAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tf
cmVxdWlyZV9fKSB7XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vi
b29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291
cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGlu
IHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291
cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4g
YmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAq
L1xuXHRcblx0aWYgKGZhbHNlKSB7XG5cdCAgdmFyIFJFQUNUX0VMRU1FTlRfVFlQRSA9ICh0eXBl
b2YgU3ltYm9sID09PSAnZnVuY3Rpb24nICYmXG5cdCAgICBTeW1ib2wuZm9yICYmXG5cdCAgICBT
eW1ib2wuZm9yKCdyZWFjdC5lbGVtZW50JykpIHx8XG5cdCAgICAweGVhYzc7XG5cdFxuXHQgIHZh
ciBpc1ZhbGlkRWxlbWVudCA9IGZ1bmN0aW9uKG9iamVjdCkge1xuXHQgICAgcmV0dXJuIHR5cGVv
ZiBvYmplY3QgPT09ICdvYmplY3QnICYmXG5cdCAgICAgIG9iamVjdCAhPT0gbnVsbCAmJlxuXHQg
ICAgICBvYmplY3QuJCR0eXBlb2YgPT09IFJFQUNUX0VMRU1FTlRfVFlQRTtcblx0ICB9O1xuXHRc
blx0ICAvLyBCeSBleHBsaWNpdGx5IHVzaW5nIGBwcm9wLXR5cGVzYCB5b3UgYXJlIG9wdGluZyBp
bnRvIG5ldyBkZXZlbG9wbWVudCBiZWhhdmlvci5cblx0ICAvLyBodHRwOi8vZmIubWUvcHJvcC10
eXBlcy1pbi1wcm9kXG5cdCAgdmFyIHRocm93T25EaXJlY3RBY2Nlc3MgPSB0cnVlO1xuXHQgIG1v
ZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9mYWN0b3J5V2l0aFR5cGVDaGVja2VycycpKGlzVmFs
aWRFbGVtZW50LCB0aHJvd09uRGlyZWN0QWNjZXNzKTtcblx0fSBlbHNlIHtcblx0ICAvLyBCeSBl
eHBsaWNpdGx5IHVzaW5nIGBwcm9wLXR5cGVzYCB5b3UgYXJlIG9wdGluZyBpbnRvIG5ldyBwcm9k
dWN0aW9uIGJlaGF2aW9yLlxuXHQgIC8vIGh0dHA6Ly9mYi5tZS9wcm9wLXR5cGVzLWluLXByb2Rc
blx0ICBtb2R1bGUuZXhwb3J0cyA9IF9fd2VicGFja19yZXF1aXJlX18oMTIxKSgpO1xuXHR9XG5c
blxuLyoqKi8gfSxcbi8qIDU3ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtc
blxuXHQvKipcblx0ICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0
ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBs
aWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJ
Q0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4g
YWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0
aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0ICovXG5cdFxuXHQndXNl
IHN0cmljdCc7XG5cdFxuXHR2YXIgUmVhY3RQcm9wVHlwZXNTZWNyZXQgPSAnU0VDUkVUX0RPX05P
VF9QQVNTX1RISVNfT1JfWU9VX1dJTExfQkVfRklSRUQnO1xuXHRcblx0bW9kdWxlLmV4cG9ydHMg
PSBSZWFjdFByb3BUeXBlc1NlY3JldDtcblxuXG4vKioqLyB9LFxuLyogNTggKi9cbi8qKiovIGZ1
bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxMy1w
cmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxu
XHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGlj
ZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9y
eSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVu
dCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGly
ZWN0b3J5LlxuXHQgKlxuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdC8qKlxuXHQg
KiBDU1MgcHJvcGVydGllcyB3aGljaCBhY2NlcHQgbnVtYmVycyBidXQgYXJlIG5vdCBpbiB1bml0
cyBvZiBcInB4XCIuXG5cdCAqL1xuXHRcblx0dmFyIGlzVW5pdGxlc3NOdW1iZXIgPSB7XG5cdCAg
YW5pbWF0aW9uSXRlcmF0aW9uQ291bnQ6IHRydWUsXG5cdCAgYm9yZGVySW1hZ2VPdXRzZXQ6IHRy
dWUsXG5cdCAgYm9yZGVySW1hZ2VTbGljZTogdHJ1ZSxcblx0ICBib3JkZXJJbWFnZVdpZHRoOiB0
cnVlLFxuXHQgIGJveEZsZXg6IHRydWUsXG5cdCAgYm94RmxleEdyb3VwOiB0cnVlLFxuXHQgIGJv
eE9yZGluYWxHcm91cDogdHJ1ZSxcblx0ICBjb2x1bW5Db3VudDogdHJ1ZSxcblx0ICBmbGV4OiB0
cnVlLFxuXHQgIGZsZXhHcm93OiB0cnVlLFxuXHQgIGZsZXhQb3NpdGl2ZTogdHJ1ZSxcblx0ICBm
bGV4U2hyaW5rOiB0cnVlLFxuXHQgIGZsZXhOZWdhdGl2ZTogdHJ1ZSxcblx0ICBmbGV4T3JkZXI6
IHRydWUsXG5cdCAgZ3JpZFJvdzogdHJ1ZSxcblx0ICBncmlkUm93RW5kOiB0cnVlLFxuXHQgIGdy
aWRSb3dTcGFuOiB0cnVlLFxuXHQgIGdyaWRSb3dTdGFydDogdHJ1ZSxcblx0ICBncmlkQ29sdW1u
OiB0cnVlLFxuXHQgIGdyaWRDb2x1bW5FbmQ6IHRydWUsXG5cdCAgZ3JpZENvbHVtblNwYW46IHRy
dWUsXG5cdCAgZ3JpZENvbHVtblN0YXJ0OiB0cnVlLFxuXHQgIGZvbnRXZWlnaHQ6IHRydWUsXG5c
dCAgbGluZUNsYW1wOiB0cnVlLFxuXHQgIGxpbmVIZWlnaHQ6IHRydWUsXG5cdCAgb3BhY2l0eTog
dHJ1ZSxcblx0ICBvcmRlcjogdHJ1ZSxcblx0ICBvcnBoYW5zOiB0cnVlLFxuXHQgIHRhYlNpemU6
IHRydWUsXG5cdCAgd2lkb3dzOiB0cnVlLFxuXHQgIHpJbmRleDogdHJ1ZSxcblx0ICB6b29tOiB0
cnVlLFxuXHRcblx0ICAvLyBTVkctcmVsYXRlZCBwcm9wZXJ0aWVzXG5cdCAgZmlsbE9wYWNpdHk6
IHRydWUsXG5cdCAgZmxvb2RPcGFjaXR5OiB0cnVlLFxuXHQgIHN0b3BPcGFjaXR5OiB0cnVlLFxu
XHQgIHN0cm9rZURhc2hhcnJheTogdHJ1ZSxcblx0ICBzdHJva2VEYXNob2Zmc2V0OiB0cnVlLFxu
XHQgIHN0cm9rZU1pdGVybGltaXQ6IHRydWUsXG5cdCAgc3Ryb2tlT3BhY2l0eTogdHJ1ZSxcblx0
ICBzdHJva2VXaWR0aDogdHJ1ZVxuXHR9O1xuXHRcblx0LyoqXG5cdCAqIEBwYXJhbSB7c3RyaW5n
fSBwcmVmaXggdmVuZG9yLXNwZWNpZmljIHByZWZpeCwgZWc6IFdlYmtpdFxuXHQgKiBAcGFyYW0g
e3N0cmluZ30ga2V5IHN0eWxlIG5hbWUsIGVnOiB0cmFuc2l0aW9uRHVyYXRpb25cblx0ICogQHJl
dHVybiB7c3RyaW5nfSBzdHlsZSBuYW1lIHByZWZpeGVkIHdpdGggYHByZWZpeGAsIHByb3Blcmx5
IGNhbWVsQ2FzZWQsIGVnOlxuXHQgKiBXZWJraXRUcmFuc2l0aW9uRHVyYXRpb25cblx0ICovXG5c
dGZ1bmN0aW9uIHByZWZpeEtleShwcmVmaXgsIGtleSkge1xuXHQgIHJldHVybiBwcmVmaXggKyBr
ZXkuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBrZXkuc3Vic3RyaW5nKDEpO1xuXHR9XG5cdFxu
XHQvKipcblx0ICogU3VwcG9ydCBzdHlsZSBuYW1lcyB0aGF0IG1heSBjb21lIHBhc3NlZCBpbiBw
cmVmaXhlZCBieSBhZGRpbmcgcGVybXV0YXRpb25zXG5cdCAqIG9mIHZlbmRvciBwcmVmaXhlcy5c
blx0ICovXG5cdHZhciBwcmVmaXhlcyA9IFsnV2Via2l0JywgJ21zJywgJ01veicsICdPJ107XG5c
dFxuXHQvLyBVc2luZyBPYmplY3Qua2V5cyBoZXJlLCBvciBlbHNlIHRoZSB2YW5pbGxhIGZvci1p
biBsb29wIG1ha2VzIElFOCBnbyBpbnRvIGFuXG5cdC8vIGluZmluaXRlIGxvb3AsIGJlY2F1c2Ug
aXQgaXRlcmF0ZXMgb3ZlciB0aGUgbmV3bHkgYWRkZWQgcHJvcHMgdG9vLlxuXHRPYmplY3Qua2V5
cyhpc1VuaXRsZXNzTnVtYmVyKS5mb3JFYWNoKGZ1bmN0aW9uIChwcm9wKSB7XG5cdCAgcHJlZml4
ZXMuZm9yRWFjaChmdW5jdGlvbiAocHJlZml4KSB7XG5cdCAgICBpc1VuaXRsZXNzTnVtYmVyW3By
ZWZpeEtleShwcmVmaXgsIHByb3ApXSA9IGlzVW5pdGxlc3NOdW1iZXJbcHJvcF07XG5cdCAgfSk7
XG5cdH0pO1xuXHRcblx0LyoqXG5cdCAqIE1vc3Qgc3R5bGUgcHJvcGVydGllcyBjYW4gYmUgdW5z
ZXQgYnkgZG9pbmcgLnN0eWxlW3Byb3BdID0gJycgYnV0IElFOFxuXHQgKiBkb2Vzbid0IGxpa2Ug
ZG9pbmcgdGhhdCB3aXRoIHNob3J0aGFuZCBwcm9wZXJ0aWVzIHNvIGZvciB0aGUgcHJvcGVydGll
cyB0aGF0XG5cdCAqIElFOCBicmVha3Mgb24sIHdoaWNoIGFyZSBsaXN0ZWQgaGVyZSwgd2UgaW5z
dGVhZCB1bnNldCBlYWNoIG9mIHRoZVxuXHQgKiBpbmRpdmlkdWFsIHByb3BlcnRpZXMuIFNlZSBo
dHRwOi8vYnVncy5qcXVlcnkuY29tL3RpY2tldC8xMjM4NS5cblx0ICogVGhlIDQtdmFsdWUgJ2Ns
b2NrJyBwcm9wZXJ0aWVzIGxpa2UgbWFyZ2luLCBwYWRkaW5nLCBib3JkZXItd2lkdGggc2VlbSB0
b1xuXHQgKiBiZWhhdmUgd2l0aG91dCBhbnkgcHJvYmxlbXMuIEN1cmlvdXNseSwgbGlzdC1zdHls
ZSB3b3JrcyB0b28gd2l0aG91dCBhbnlcblx0ICogc3BlY2lhbCBwcm9kZGluZy5cblx0ICovXG5c
dHZhciBzaG9ydGhhbmRQcm9wZXJ0eUV4cGFuc2lvbnMgPSB7XG5cdCAgYmFja2dyb3VuZDoge1xu
XHQgICAgYmFja2dyb3VuZEF0dGFjaG1lbnQ6IHRydWUsXG5cdCAgICBiYWNrZ3JvdW5kQ29sb3I6
IHRydWUsXG5cdCAgICBiYWNrZ3JvdW5kSW1hZ2U6IHRydWUsXG5cdCAgICBiYWNrZ3JvdW5kUG9z
aXRpb25YOiB0cnVlLFxuXHQgICAgYmFja2dyb3VuZFBvc2l0aW9uWTogdHJ1ZSxcblx0ICAgIGJh
Y2tncm91bmRSZXBlYXQ6IHRydWVcblx0ICB9LFxuXHQgIGJhY2tncm91bmRQb3NpdGlvbjoge1xu
XHQgICAgYmFja2dyb3VuZFBvc2l0aW9uWDogdHJ1ZSxcblx0ICAgIGJhY2tncm91bmRQb3NpdGlv
blk6IHRydWVcblx0ICB9LFxuXHQgIGJvcmRlcjoge1xuXHQgICAgYm9yZGVyV2lkdGg6IHRydWUs
XG5cdCAgICBib3JkZXJTdHlsZTogdHJ1ZSxcblx0ICAgIGJvcmRlckNvbG9yOiB0cnVlXG5cdCAg
fSxcblx0ICBib3JkZXJCb3R0b206IHtcblx0ICAgIGJvcmRlckJvdHRvbVdpZHRoOiB0cnVlLFxu
XHQgICAgYm9yZGVyQm90dG9tU3R5bGU6IHRydWUsXG5cdCAgICBib3JkZXJCb3R0b21Db2xvcjog
dHJ1ZVxuXHQgIH0sXG5cdCAgYm9yZGVyTGVmdDoge1xuXHQgICAgYm9yZGVyTGVmdFdpZHRoOiB0
cnVlLFxuXHQgICAgYm9yZGVyTGVmdFN0eWxlOiB0cnVlLFxuXHQgICAgYm9yZGVyTGVmdENvbG9y
OiB0cnVlXG5cdCAgfSxcblx0ICBib3JkZXJSaWdodDoge1xuXHQgICAgYm9yZGVyUmlnaHRXaWR0
aDogdHJ1ZSxcblx0ICAgIGJvcmRlclJpZ2h0U3R5bGU6IHRydWUsXG5cdCAgICBib3JkZXJSaWdo
dENvbG9yOiB0cnVlXG5cdCAgfSxcblx0ICBib3JkZXJUb3A6IHtcblx0ICAgIGJvcmRlclRvcFdp
ZHRoOiB0cnVlLFxuXHQgICAgYm9yZGVyVG9wU3R5bGU6IHRydWUsXG5cdCAgICBib3JkZXJUb3BD
b2xvcjogdHJ1ZVxuXHQgIH0sXG5cdCAgZm9udDoge1xuXHQgICAgZm9udFN0eWxlOiB0cnVlLFxu
XHQgICAgZm9udFZhcmlhbnQ6IHRydWUsXG5cdCAgICBmb250V2VpZ2h0OiB0cnVlLFxuXHQgICAg
Zm9udFNpemU6IHRydWUsXG5cdCAgICBsaW5lSGVpZ2h0OiB0cnVlLFxuXHQgICAgZm9udEZhbWls
eTogdHJ1ZVxuXHQgIH0sXG5cdCAgb3V0bGluZToge1xuXHQgICAgb3V0bGluZVdpZHRoOiB0cnVl
LFxuXHQgICAgb3V0bGluZVN0eWxlOiB0cnVlLFxuXHQgICAgb3V0bGluZUNvbG9yOiB0cnVlXG5c
dCAgfVxuXHR9O1xuXHRcblx0dmFyIENTU1Byb3BlcnR5ID0ge1xuXHQgIGlzVW5pdGxlc3NOdW1i
ZXI6IGlzVW5pdGxlc3NOdW1iZXIsXG5cdCAgc2hvcnRoYW5kUHJvcGVydHlFeHBhbnNpb25zOiBz
aG9ydGhhbmRQcm9wZXJ0eUV4cGFuc2lvbnNcblx0fTtcblx0XG5cdG1vZHVsZS5leHBvcnRzID0g
Q1NTUHJvcGVydHk7XG5cbi8qKiovIH0sXG4vKiA1OSAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxl
LCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0LyoqXG5cdCAqIENvcHlyaWdo
dCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQu
XG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1z
dHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qg
ZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICog
b2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUg
c2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqIFxuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0Jztc
blx0XG5cdHZhciBfcHJvZEludmFyaWFudCA9IF9fd2VicGFja19yZXF1aXJlX18oMyk7XG5cdFxu
XHRmdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICgh
KGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3Io
XCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7IH0gfVxuXHRcblx0dmFyIFBv
b2xlZENsYXNzID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMyk7XG5cdFxuXHR2YXIgaW52YXJpYW50
ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxKTtcblx0XG5cdC8qKlxuXHQgKiBBIHNwZWNpYWxpemVk
IHBzZXVkby1ldmVudCBtb2R1bGUgdG8gaGVscCBrZWVwIHRyYWNrIG9mIGNvbXBvbmVudHMgd2Fp
dGluZyB0b1xuXHQgKiBiZSBub3RpZmllZCB3aGVuIHRoZWlyIERPTSByZXByZXNlbnRhdGlvbnMg
YXJlIGF2YWlsYWJsZSBmb3IgdXNlLlxuXHQgKlxuXHQgKiBUaGlzIGltcGxlbWVudHMgYFBvb2xl
ZENsYXNzYCwgc28geW91IHNob3VsZCBuZXZlciBuZWVkIHRvIGluc3RhbnRpYXRlIHRoaXMuXG5c
dCAqIEluc3RlYWQsIHVzZSBgQ2FsbGJhY2tRdWV1ZS5nZXRQb29sZWQoKWAuXG5cdCAqXG5cdCAq
IEBjbGFzcyBSZWFjdE1vdW50UmVhZHlcblx0ICogQGltcGxlbWVudHMgUG9vbGVkQ2xhc3Ncblx0
ICogQGludGVybmFsXG5cdCAqL1xuXHRcblx0dmFyIENhbGxiYWNrUXVldWUgPSBmdW5jdGlvbiAo
KSB7XG5cdCAgZnVuY3Rpb24gQ2FsbGJhY2tRdWV1ZShhcmcpIHtcblx0ICAgIF9jbGFzc0NhbGxD
aGVjayh0aGlzLCBDYWxsYmFja1F1ZXVlKTtcblx0XG5cdCAgICB0aGlzLl9jYWxsYmFja3MgPSBu
dWxsO1xuXHQgICAgdGhpcy5fY29udGV4dHMgPSBudWxsO1xuXHQgICAgdGhpcy5fYXJnID0gYXJn
O1xuXHQgIH1cblx0XG5cdCAgLyoqXG5cdCAgICogRW5xdWV1ZXMgYSBjYWxsYmFjayB0byBiZSBp
bnZva2VkIHdoZW4gYG5vdGlmeUFsbGAgaXMgaW52b2tlZC5cblx0ICAgKlxuXHQgICAqIEBwYXJh
bSB7ZnVuY3Rpb259IGNhbGxiYWNrIEludm9rZWQgd2hlbiBgbm90aWZ5QWxsYCBpcyBpbnZva2Vk
LlxuXHQgICAqIEBwYXJhbSB7P29iamVjdH0gY29udGV4dCBDb250ZXh0IHRvIGNhbGwgYGNhbGxi
YWNrYCB3aXRoLlxuXHQgICAqIEBpbnRlcm5hbFxuXHQgICAqL1xuXHRcblx0XG5cdCAgQ2FsbGJh
Y2tRdWV1ZS5wcm90b3R5cGUuZW5xdWV1ZSA9IGZ1bmN0aW9uIGVucXVldWUoY2FsbGJhY2ssIGNv
bnRleHQpIHtcblx0ICAgIHRoaXMuX2NhbGxiYWNrcyA9IHRoaXMuX2NhbGxiYWNrcyB8fCBbXTtc
blx0ICAgIHRoaXMuX2NhbGxiYWNrcy5wdXNoKGNhbGxiYWNrKTtcblx0ICAgIHRoaXMuX2NvbnRl
eHRzID0gdGhpcy5fY29udGV4dHMgfHwgW107XG5cdCAgICB0aGlzLl9jb250ZXh0cy5wdXNoKGNv
bnRleHQpO1xuXHQgIH07XG5cdFxuXHQgIC8qKlxuXHQgICAqIEludm9rZXMgYWxsIGVucXVldWVk
IGNhbGxiYWNrcyBhbmQgY2xlYXJzIHRoZSBxdWV1ZS4gVGhpcyBpcyBpbnZva2VkIGFmdGVyXG5c
dCAgICogdGhlIERPTSByZXByZXNlbnRhdGlvbiBvZiBhIGNvbXBvbmVudCBoYXMgYmVlbiBjcmVh
dGVkIG9yIHVwZGF0ZWQuXG5cdCAgICpcblx0ICAgKiBAaW50ZXJuYWxcblx0ICAgKi9cblx0XG5c
dFxuXHQgIENhbGxiYWNrUXVldWUucHJvdG90eXBlLm5vdGlmeUFsbCA9IGZ1bmN0aW9uIG5vdGlm
eUFsbCgpIHtcblx0ICAgIHZhciBjYWxsYmFja3MgPSB0aGlzLl9jYWxsYmFja3M7XG5cdCAgICB2
YXIgY29udGV4dHMgPSB0aGlzLl9jb250ZXh0cztcblx0ICAgIHZhciBhcmcgPSB0aGlzLl9hcmc7
XG5cdCAgICBpZiAoY2FsbGJhY2tzICYmIGNvbnRleHRzKSB7XG5cdCAgICAgICEoY2FsbGJhY2tz
Lmxlbmd0aCA9PT0gY29udGV4dHMubGVuZ3RoKSA/ICBmYWxzZSA/IGludmFyaWFudChmYWxzZSwg
J01pc21hdGNoZWQgbGlzdCBvZiBjb250ZXh0cyBpbiBjYWxsYmFjayBxdWV1ZScpIDogX3Byb2RJ
bnZhcmlhbnQoJzI0JykgOiB2b2lkIDA7XG5cdCAgICAgIHRoaXMuX2NhbGxiYWNrcyA9IG51bGw7
XG5cdCAgICAgIHRoaXMuX2NvbnRleHRzID0gbnVsbDtcblx0ICAgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCBjYWxsYmFja3MubGVuZ3RoOyBpKyspIHtcblx0ICAgICAgICBjYWxsYmFja3NbaV0uY2Fs
bChjb250ZXh0c1tpXSwgYXJnKTtcblx0ICAgICAgfVxuXHQgICAgICBjYWxsYmFja3MubGVuZ3Ro
ID0gMDtcblx0ICAgICAgY29udGV4dHMubGVuZ3RoID0gMDtcblx0ICAgIH1cblx0ICB9O1xuXHRc
blx0ICBDYWxsYmFja1F1ZXVlLnByb3RvdHlwZS5jaGVja3BvaW50ID0gZnVuY3Rpb24gY2hlY2tw
b2ludCgpIHtcblx0ICAgIHJldHVybiB0aGlzLl9jYWxsYmFja3MgPyB0aGlzLl9jYWxsYmFja3Mu
bGVuZ3RoIDogMDtcblx0ICB9O1xuXHRcblx0ICBDYWxsYmFja1F1ZXVlLnByb3RvdHlwZS5yb2xs
YmFjayA9IGZ1bmN0aW9uIHJvbGxiYWNrKGxlbikge1xuXHQgICAgaWYgKHRoaXMuX2NhbGxiYWNr
cyAmJiB0aGlzLl9jb250ZXh0cykge1xuXHQgICAgICB0aGlzLl9jYWxsYmFja3MubGVuZ3RoID0g
bGVuO1xuXHQgICAgICB0aGlzLl9jb250ZXh0cy5sZW5ndGggPSBsZW47XG5cdCAgICB9XG5cdCAg
fTtcblx0XG5cdCAgLyoqXG5cdCAgICogUmVzZXRzIHRoZSBpbnRlcm5hbCBxdWV1ZS5cblx0ICAg
KlxuXHQgICAqIEBpbnRlcm5hbFxuXHQgICAqL1xuXHRcblx0XG5cdCAgQ2FsbGJhY2tRdWV1ZS5w
cm90b3R5cGUucmVzZXQgPSBmdW5jdGlvbiByZXNldCgpIHtcblx0ICAgIHRoaXMuX2NhbGxiYWNr
cyA9IG51bGw7XG5cdCAgICB0aGlzLl9jb250ZXh0cyA9IG51bGw7XG5cdCAgfTtcblx0XG5cdCAg
LyoqXG5cdCAgICogYFBvb2xlZENsYXNzYCBsb29rcyBmb3IgdGhpcy5cblx0ICAgKi9cblx0XG5c
dFxuXHQgIENhbGxiYWNrUXVldWUucHJvdG90eXBlLmRlc3RydWN0b3IgPSBmdW5jdGlvbiBkZXN0
cnVjdG9yKCkge1xuXHQgICAgdGhpcy5yZXNldCgpO1xuXHQgIH07XG5cdFxuXHQgIHJldHVybiBD
YWxsYmFja1F1ZXVlO1xuXHR9KCk7XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IFBvb2xlZENsYXNz
LmFkZFBvb2xpbmdUbyhDYWxsYmFja1F1ZXVlKTtcblxuLyoqKi8gfSxcbi8qIDYwICovXG4vKioq
LyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQv
Kipcblx0ICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxs
IHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNl
ZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0Ug
ZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRp
b25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFU
RU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpcblx0ICovXG5cdFxuXHQndXNl
IHN0cmljdCc7XG5cdFxuXHR2YXIgRE9NUHJvcGVydHkgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE1
KTtcblx0dmFyIFJlYWN0RE9NQ29tcG9uZW50VHJlZSA9IF9fd2VicGFja19yZXF1aXJlX18oNSk7
XG5cdHZhciBSZWFjdEluc3RydW1lbnRhdGlvbiA9IF9fd2VicGFja19yZXF1aXJlX18oOCk7XG5c
dFxuXHR2YXIgcXVvdGVBdHRyaWJ1dGVWYWx1ZUZvckJyb3dzZXIgPSBfX3dlYnBhY2tfcmVxdWly
ZV9fKDE4NSk7XG5cdHZhciB3YXJuaW5nID0gX193ZWJwYWNrX3JlcXVpcmVfXygyKTtcblx0XG5c
dHZhciBWQUxJRF9BVFRSSUJVVEVfTkFNRV9SRUdFWCA9IG5ldyBSZWdFeHAoJ15bJyArIERPTVBy
b3BlcnR5LkFUVFJJQlVURV9OQU1FX1NUQVJUX0NIQVIgKyAnXVsnICsgRE9NUHJvcGVydHkuQVRU
UklCVVRFX05BTUVfQ0hBUiArICddKiQnKTtcblx0dmFyIGlsbGVnYWxBdHRyaWJ1dGVOYW1lQ2Fj
aGUgPSB7fTtcblx0dmFyIHZhbGlkYXRlZEF0dHJpYnV0ZU5hbWVDYWNoZSA9IHt9O1xuXHRcblx0
ZnVuY3Rpb24gaXNBdHRyaWJ1dGVOYW1lU2FmZShhdHRyaWJ1dGVOYW1lKSB7XG5cdCAgaWYgKHZh
bGlkYXRlZEF0dHJpYnV0ZU5hbWVDYWNoZS5oYXNPd25Qcm9wZXJ0eShhdHRyaWJ1dGVOYW1lKSkg
e1xuXHQgICAgcmV0dXJuIHRydWU7XG5cdCAgfVxuXHQgIGlmIChpbGxlZ2FsQXR0cmlidXRlTmFt
ZUNhY2hlLmhhc093blByb3BlcnR5KGF0dHJpYnV0ZU5hbWUpKSB7XG5cdCAgICByZXR1cm4gZmFs
c2U7XG5cdCAgfVxuXHQgIGlmIChWQUxJRF9BVFRSSUJVVEVfTkFNRV9SRUdFWC50ZXN0KGF0dHJp
YnV0ZU5hbWUpKSB7XG5cdCAgICB2YWxpZGF0ZWRBdHRyaWJ1dGVOYW1lQ2FjaGVbYXR0cmlidXRl
TmFtZV0gPSB0cnVlO1xuXHQgICAgcmV0dXJuIHRydWU7XG5cdCAgfVxuXHQgIGlsbGVnYWxBdHRy
aWJ1dGVOYW1lQ2FjaGVbYXR0cmlidXRlTmFtZV0gPSB0cnVlO1xuXHQgICBmYWxzZSA/IHdhcm5p
bmcoZmFsc2UsICdJbnZhbGlkIGF0dHJpYnV0ZSBuYW1lOiBgJXNgJywgYXR0cmlidXRlTmFtZSkg
OiB2b2lkIDA7XG5cdCAgcmV0dXJuIGZhbHNlO1xuXHR9XG5cdFxuXHRmdW5jdGlvbiBzaG91bGRJ
Z25vcmVWYWx1ZShwcm9wZXJ0eUluZm8sIHZhbHVlKSB7XG5cdCAgcmV0dXJuIHZhbHVlID09IG51
bGwgfHwgcHJvcGVydHlJbmZvLmhhc0Jvb2xlYW5WYWx1ZSAmJiAhdmFsdWUgfHwgcHJvcGVydHlJ
bmZvLmhhc051bWVyaWNWYWx1ZSAmJiBpc05hTih2YWx1ZSkgfHwgcHJvcGVydHlJbmZvLmhhc1Bv
c2l0aXZlTnVtZXJpY1ZhbHVlICYmIHZhbHVlIDwgMSB8fCBwcm9wZXJ0eUluZm8uaGFzT3Zlcmxv
YWRlZEJvb2xlYW5WYWx1ZSAmJiB2YWx1ZSA9PT0gZmFsc2U7XG5cdH1cblx0XG5cdC8qKlxuXHQg
KiBPcGVyYXRpb25zIGZvciBkZWFsaW5nIHdpdGggRE9NIHByb3BlcnRpZXMuXG5cdCAqL1xuXHR2
YXIgRE9NUHJvcGVydHlPcGVyYXRpb25zID0ge1xuXHQgIC8qKlxuXHQgICAqIENyZWF0ZXMgbWFy
a3VwIGZvciB0aGUgSUQgcHJvcGVydHkuXG5cdCAgICpcblx0ICAgKiBAcGFyYW0ge3N0cmluZ30g
aWQgVW5lc2NhcGVkIElELlxuXHQgICAqIEByZXR1cm4ge3N0cmluZ30gTWFya3VwIHN0cmluZy5c
blx0ICAgKi9cblx0ICBjcmVhdGVNYXJrdXBGb3JJRDogZnVuY3Rpb24gKGlkKSB7XG5cdCAgICBy
ZXR1cm4gRE9NUHJvcGVydHkuSURfQVRUUklCVVRFX05BTUUgKyAnPScgKyBxdW90ZUF0dHJpYnV0
ZVZhbHVlRm9yQnJvd3NlcihpZCk7XG5cdCAgfSxcblx0XG5cdCAgc2V0QXR0cmlidXRlRm9ySUQ6
IGZ1bmN0aW9uIChub2RlLCBpZCkge1xuXHQgICAgbm9kZS5zZXRBdHRyaWJ1dGUoRE9NUHJvcGVy
dHkuSURfQVRUUklCVVRFX05BTUUsIGlkKTtcblx0ICB9LFxuXHRcblx0ICBjcmVhdGVNYXJrdXBG
b3JSb290OiBmdW5jdGlvbiAoKSB7XG5cdCAgICByZXR1cm4gRE9NUHJvcGVydHkuUk9PVF9BVFRS
SUJVVEVfTkFNRSArICc9XCJcIic7XG5cdCAgfSxcblx0XG5cdCAgc2V0QXR0cmlidXRlRm9yUm9v
dDogZnVuY3Rpb24gKG5vZGUpIHtcblx0ICAgIG5vZGUuc2V0QXR0cmlidXRlKERPTVByb3BlcnR5
LlJPT1RfQVRUUklCVVRFX05BTUUsICcnKTtcblx0ICB9LFxuXHRcblx0ICAvKipcblx0ICAgKiBD
cmVhdGVzIG1hcmt1cCBmb3IgYSBwcm9wZXJ0eS5cblx0ICAgKlxuXHQgICAqIEBwYXJhbSB7c3Ry
aW5nfSBuYW1lXG5cdCAgICogQHBhcmFtIHsqfSB2YWx1ZVxuXHQgICAqIEByZXR1cm4gez9zdHJp
bmd9IE1hcmt1cCBzdHJpbmcsIG9yIG51bGwgaWYgdGhlIHByb3BlcnR5IHdhcyBpbnZhbGlkLlxu
XHQgICAqL1xuXHQgIGNyZWF0ZU1hcmt1cEZvclByb3BlcnR5OiBmdW5jdGlvbiAobmFtZSwgdmFs
dWUpIHtcblx0ICAgIHZhciBwcm9wZXJ0eUluZm8gPSBET01Qcm9wZXJ0eS5wcm9wZXJ0aWVzLmhh
c093blByb3BlcnR5KG5hbWUpID8gRE9NUHJvcGVydHkucHJvcGVydGllc1tuYW1lXSA6IG51bGw7
XG5cdCAgICBpZiAocHJvcGVydHlJbmZvKSB7XG5cdCAgICAgIGlmIChzaG91bGRJZ25vcmVWYWx1
ZShwcm9wZXJ0eUluZm8sIHZhbHVlKSkge1xuXHQgICAgICAgIHJldHVybiAnJztcblx0ICAgICAg
fVxuXHQgICAgICB2YXIgYXR0cmlidXRlTmFtZSA9IHByb3BlcnR5SW5mby5hdHRyaWJ1dGVOYW1l
O1xuXHQgICAgICBpZiAocHJvcGVydHlJbmZvLmhhc0Jvb2xlYW5WYWx1ZSB8fCBwcm9wZXJ0eUlu
Zm8uaGFzT3ZlcmxvYWRlZEJvb2xlYW5WYWx1ZSAmJiB2YWx1ZSA9PT0gdHJ1ZSkge1xuXHQgICAg
ICAgIHJldHVybiBhdHRyaWJ1dGVOYW1lICsgJz1cIlwiJztcblx0ICAgICAgfVxuXHQgICAgICBy
ZXR1cm4gYXR0cmlidXRlTmFtZSArICc9JyArIHF1b3RlQXR0cmlidXRlVmFsdWVGb3JCcm93c2Vy
KHZhbHVlKTtcblx0ICAgIH0gZWxzZSBpZiAoRE9NUHJvcGVydHkuaXNDdXN0b21BdHRyaWJ1dGUo
bmFtZSkpIHtcblx0ICAgICAgaWYgKHZhbHVlID09IG51bGwpIHtcblx0ICAgICAgICByZXR1cm4g
Jyc7XG5cdCAgICAgIH1cblx0ICAgICAgcmV0dXJuIG5hbWUgKyAnPScgKyBxdW90ZUF0dHJpYnV0
ZVZhbHVlRm9yQnJvd3Nlcih2YWx1ZSk7XG5cdCAgICB9XG5cdCAgICByZXR1cm4gbnVsbDtcblx0
ICB9LFxuXHRcblx0ICAvKipcblx0ICAgKiBDcmVhdGVzIG1hcmt1cCBmb3IgYSBjdXN0b20gcHJv
cGVydHkuXG5cdCAgICpcblx0ICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZVxuXHQgICAqIEBwYXJh
bSB7Kn0gdmFsdWVcblx0ICAgKiBAcmV0dXJuIHtzdHJpbmd9IE1hcmt1cCBzdHJpbmcsIG9yIGVt
cHR5IHN0cmluZyBpZiB0aGUgcHJvcGVydHkgd2FzIGludmFsaWQuXG5cdCAgICovXG5cdCAgY3Jl
YXRlTWFya3VwRm9yQ3VzdG9tQXR0cmlidXRlOiBmdW5jdGlvbiAobmFtZSwgdmFsdWUpIHtcblx0
ICAgIGlmICghaXNBdHRyaWJ1dGVOYW1lU2FmZShuYW1lKSB8fCB2YWx1ZSA9PSBudWxsKSB7XG5c
dCAgICAgIHJldHVybiAnJztcblx0ICAgIH1cblx0ICAgIHJldHVybiBuYW1lICsgJz0nICsgcXVv
dGVBdHRyaWJ1dGVWYWx1ZUZvckJyb3dzZXIodmFsdWUpO1xuXHQgIH0sXG5cdFxuXHQgIC8qKlxu
XHQgICAqIFNldHMgdGhlIHZhbHVlIGZvciBhIHByb3BlcnR5IG9uIGEgbm9kZS5cblx0ICAgKlxu
XHQgICAqIEBwYXJhbSB7RE9NRWxlbWVudH0gbm9kZVxuXHQgICAqIEBwYXJhbSB7c3RyaW5nfSBu
YW1lXG5cdCAgICogQHBhcmFtIHsqfSB2YWx1ZVxuXHQgICAqL1xuXHQgIHNldFZhbHVlRm9yUHJv
cGVydHk6IGZ1bmN0aW9uIChub2RlLCBuYW1lLCB2YWx1ZSkge1xuXHQgICAgdmFyIHByb3BlcnR5
SW5mbyA9IERPTVByb3BlcnR5LnByb3BlcnRpZXMuaGFzT3duUHJvcGVydHkobmFtZSkgPyBET01Q
cm9wZXJ0eS5wcm9wZXJ0aWVzW25hbWVdIDogbnVsbDtcblx0ICAgIGlmIChwcm9wZXJ0eUluZm8p
IHtcblx0ICAgICAgdmFyIG11dGF0aW9uTWV0aG9kID0gcHJvcGVydHlJbmZvLm11dGF0aW9uTWV0
aG9kO1xuXHQgICAgICBpZiAobXV0YXRpb25NZXRob2QpIHtcblx0ICAgICAgICBtdXRhdGlvbk1l
dGhvZChub2RlLCB2YWx1ZSk7XG5cdCAgICAgIH0gZWxzZSBpZiAoc2hvdWxkSWdub3JlVmFsdWUo
cHJvcGVydHlJbmZvLCB2YWx1ZSkpIHtcblx0ICAgICAgICB0aGlzLmRlbGV0ZVZhbHVlRm9yUHJv
cGVydHkobm9kZSwgbmFtZSk7XG5cdCAgICAgICAgcmV0dXJuO1xuXHQgICAgICB9IGVsc2UgaWYg
KHByb3BlcnR5SW5mby5tdXN0VXNlUHJvcGVydHkpIHtcblx0ICAgICAgICAvLyBDb250cmFyeSB0
byBgc2V0QXR0cmlidXRlYCwgb2JqZWN0IHByb3BlcnRpZXMgYXJlIHByb3Blcmx5XG5cdCAgICAg
ICAgLy8gYHRvU3RyaW5nYGVkIGJ5IElFOC85LlxuXHQgICAgICAgIG5vZGVbcHJvcGVydHlJbmZv
LnByb3BlcnR5TmFtZV0gPSB2YWx1ZTtcblx0ICAgICAgfSBlbHNlIHtcblx0ICAgICAgICB2YXIg
YXR0cmlidXRlTmFtZSA9IHByb3BlcnR5SW5mby5hdHRyaWJ1dGVOYW1lO1xuXHQgICAgICAgIHZh
ciBuYW1lc3BhY2UgPSBwcm9wZXJ0eUluZm8uYXR0cmlidXRlTmFtZXNwYWNlO1xuXHQgICAgICAg
IC8vIGBzZXRBdHRyaWJ1dGVgIHdpdGggb2JqZWN0cyBiZWNvbWVzIG9ubHkgYFtvYmplY3RdYCBp
biBJRTgvOSxcblx0ICAgICAgICAvLyAoJycgKyB2YWx1ZSkgbWFrZXMgaXQgb3V0cHV0IHRoZSBj
b3JyZWN0IHRvU3RyaW5nKCktdmFsdWUuXG5cdCAgICAgICAgaWYgKG5hbWVzcGFjZSkge1xuXHQg
ICAgICAgICAgbm9kZS5zZXRBdHRyaWJ1dGVOUyhuYW1lc3BhY2UsIGF0dHJpYnV0ZU5hbWUsICcn
ICsgdmFsdWUpO1xuXHQgICAgICAgIH0gZWxzZSBpZiAocHJvcGVydHlJbmZvLmhhc0Jvb2xlYW5W
YWx1ZSB8fCBwcm9wZXJ0eUluZm8uaGFzT3ZlcmxvYWRlZEJvb2xlYW5WYWx1ZSAmJiB2YWx1ZSA9
PT0gdHJ1ZSkge1xuXHQgICAgICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSwg
JycpO1xuXHQgICAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgICBub2RlLnNldEF0dHJpYnV0ZShh
dHRyaWJ1dGVOYW1lLCAnJyArIHZhbHVlKTtcblx0ICAgICAgICB9XG5cdCAgICAgIH1cblx0ICAg
IH0gZWxzZSBpZiAoRE9NUHJvcGVydHkuaXNDdXN0b21BdHRyaWJ1dGUobmFtZSkpIHtcblx0ICAg
ICAgRE9NUHJvcGVydHlPcGVyYXRpb25zLnNldFZhbHVlRm9yQXR0cmlidXRlKG5vZGUsIG5hbWUs
IHZhbHVlKTtcblx0ICAgICAgcmV0dXJuO1xuXHQgICAgfVxuXHRcblx0ICAgIGlmIChmYWxzZSkg
e1xuXHQgICAgICB2YXIgcGF5bG9hZCA9IHt9O1xuXHQgICAgICBwYXlsb2FkW25hbWVdID0gdmFs
dWU7XG5cdCAgICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vbkhvc3RPcGVyYXRp
b24oe1xuXHQgICAgICAgIGluc3RhbmNlSUQ6IFJlYWN0RE9NQ29tcG9uZW50VHJlZS5nZXRJbnN0
YW5jZUZyb21Ob2RlKG5vZGUpLl9kZWJ1Z0lELFxuXHQgICAgICAgIHR5cGU6ICd1cGRhdGUgYXR0
cmlidXRlJyxcblx0ICAgICAgICBwYXlsb2FkOiBwYXlsb2FkXG5cdCAgICAgIH0pO1xuXHQgICAg
fVxuXHQgIH0sXG5cdFxuXHQgIHNldFZhbHVlRm9yQXR0cmlidXRlOiBmdW5jdGlvbiAobm9kZSwg
bmFtZSwgdmFsdWUpIHtcblx0ICAgIGlmICghaXNBdHRyaWJ1dGVOYW1lU2FmZShuYW1lKSkge1xu
XHQgICAgICByZXR1cm47XG5cdCAgICB9XG5cdCAgICBpZiAodmFsdWUgPT0gbnVsbCkge1xuXHQg
ICAgICBub2RlLnJlbW92ZUF0dHJpYnV0ZShuYW1lKTtcblx0ICAgIH0gZWxzZSB7XG5cdCAgICAg
IG5vZGUuc2V0QXR0cmlidXRlKG5hbWUsICcnICsgdmFsdWUpO1xuXHQgICAgfVxuXHRcblx0ICAg
IGlmIChmYWxzZSkge1xuXHQgICAgICB2YXIgcGF5bG9hZCA9IHt9O1xuXHQgICAgICBwYXlsb2Fk
W25hbWVdID0gdmFsdWU7XG5cdCAgICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5v
bkhvc3RPcGVyYXRpb24oe1xuXHQgICAgICAgIGluc3RhbmNlSUQ6IFJlYWN0RE9NQ29tcG9uZW50
VHJlZS5nZXRJbnN0YW5jZUZyb21Ob2RlKG5vZGUpLl9kZWJ1Z0lELFxuXHQgICAgICAgIHR5cGU6
ICd1cGRhdGUgYXR0cmlidXRlJyxcblx0ICAgICAgICBwYXlsb2FkOiBwYXlsb2FkXG5cdCAgICAg
IH0pO1xuXHQgICAgfVxuXHQgIH0sXG5cdFxuXHQgIC8qKlxuXHQgICAqIERlbGV0ZXMgYW4gYXR0
cmlidXRlcyBmcm9tIGEgbm9kZS5cblx0ICAgKlxuXHQgICAqIEBwYXJhbSB7RE9NRWxlbWVudH0g
bm9kZVxuXHQgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lXG5cdCAgICovXG5cdCAgZGVsZXRlVmFs
dWVGb3JBdHRyaWJ1dGU6IGZ1bmN0aW9uIChub2RlLCBuYW1lKSB7XG5cdCAgICBub2RlLnJlbW92
ZUF0dHJpYnV0ZShuYW1lKTtcblx0ICAgIGlmIChmYWxzZSkge1xuXHQgICAgICBSZWFjdEluc3Ry
dW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25Ib3N0T3BlcmF0aW9uKHtcblx0ICAgICAgICBpbnN0YW5j
ZUlEOiBSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0SW5zdGFuY2VGcm9tTm9kZShub2RlKS5fZGVi
dWdJRCxcblx0ICAgICAgICB0eXBlOiAncmVtb3ZlIGF0dHJpYnV0ZScsXG5cdCAgICAgICAgcGF5
bG9hZDogbmFtZVxuXHQgICAgICB9KTtcblx0ICAgIH1cblx0ICB9LFxuXHRcblx0ICAvKipcblx0
ICAgKiBEZWxldGVzIHRoZSB2YWx1ZSBmb3IgYSBwcm9wZXJ0eSBvbiBhIG5vZGUuXG5cdCAgICpc
blx0ICAgKiBAcGFyYW0ge0RPTUVsZW1lbnR9IG5vZGVcblx0ICAgKiBAcGFyYW0ge3N0cmluZ30g
bmFtZVxuXHQgICAqL1xuXHQgIGRlbGV0ZVZhbHVlRm9yUHJvcGVydHk6IGZ1bmN0aW9uIChub2Rl
LCBuYW1lKSB7XG5cdCAgICB2YXIgcHJvcGVydHlJbmZvID0gRE9NUHJvcGVydHkucHJvcGVydGll
cy5oYXNPd25Qcm9wZXJ0eShuYW1lKSA/IERPTVByb3BlcnR5LnByb3BlcnRpZXNbbmFtZV0gOiBu
dWxsO1xuXHQgICAgaWYgKHByb3BlcnR5SW5mbykge1xuXHQgICAgICB2YXIgbXV0YXRpb25NZXRo
b2QgPSBwcm9wZXJ0eUluZm8ubXV0YXRpb25NZXRob2Q7XG5cdCAgICAgIGlmIChtdXRhdGlvbk1l
dGhvZCkge1xuXHQgICAgICAgIG11dGF0aW9uTWV0aG9kKG5vZGUsIHVuZGVmaW5lZCk7XG5cdCAg
ICAgIH0gZWxzZSBpZiAocHJvcGVydHlJbmZvLm11c3RVc2VQcm9wZXJ0eSkge1xuXHQgICAgICAg
IHZhciBwcm9wTmFtZSA9IHByb3BlcnR5SW5mby5wcm9wZXJ0eU5hbWU7XG5cdCAgICAgICAgaWYg
KHByb3BlcnR5SW5mby5oYXNCb29sZWFuVmFsdWUpIHtcblx0ICAgICAgICAgIG5vZGVbcHJvcE5h
bWVdID0gZmFsc2U7XG5cdCAgICAgICAgfSBlbHNlIHtcblx0ICAgICAgICAgIG5vZGVbcHJvcE5h
bWVdID0gJyc7XG5cdCAgICAgICAgfVxuXHQgICAgICB9IGVsc2Uge1xuXHQgICAgICAgIG5vZGUu
cmVtb3ZlQXR0cmlidXRlKHByb3BlcnR5SW5mby5hdHRyaWJ1dGVOYW1lKTtcblx0ICAgICAgfVxu
XHQgICAgfSBlbHNlIGlmIChET01Qcm9wZXJ0eS5pc0N1c3RvbUF0dHJpYnV0ZShuYW1lKSkge1xu
XHQgICAgICBub2RlLnJlbW92ZUF0dHJpYnV0ZShuYW1lKTtcblx0ICAgIH1cblx0XG5cdCAgICBp
ZiAoZmFsc2UpIHtcblx0ICAgICAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9uSG9z
dE9wZXJhdGlvbih7XG5cdCAgICAgICAgaW5zdGFuY2VJRDogUmVhY3RET01Db21wb25lbnRUcmVl
LmdldEluc3RhbmNlRnJvbU5vZGUobm9kZSkuX2RlYnVnSUQsXG5cdCAgICAgICAgdHlwZTogJ3Jl
bW92ZSBhdHRyaWJ1dGUnLFxuXHQgICAgICAgIHBheWxvYWQ6IG5hbWVcblx0ICAgICAgfSk7XG5c
dCAgICB9XG5cdCAgfVxuXHR9O1xuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBET01Qcm9wZXJ0eU9w
ZXJhdGlvbnM7XG5cbi8qKiovIH0sXG4vKiA2MSAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBl
eHBvcnRzKSB7XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAyMDE1LXByZXNlbnQsIEZhY2Vib29r
LCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNl
IGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRo
ZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNl
IHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUg
Zm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5c
dCAqL1xuXHRcblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0dmFyIFJlYWN0RE9NQ29tcG9uZW50Rmxh
Z3MgPSB7XG5cdCAgaGFzQ2FjaGVkQ2hpbGROb2RlczogMSA8PCAwXG5cdH07XG5cdFxuXHRtb2R1
bGUuZXhwb3J0cyA9IFJlYWN0RE9NQ29tcG9uZW50RmxhZ3M7XG5cbi8qKiovIH0sXG4vKiA2MiAq
L1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7
XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5c
dCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMg
bGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBM
SUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFu
IGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4g
dGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqL1xuXHRc
blx0J3VzZSBzdHJpY3QnO1xuXHRcblx0dmFyIF9hc3NpZ24gPSBfX3dlYnBhY2tfcmVxdWlyZV9f
KDQpO1xuXHRcblx0dmFyIExpbmtlZFZhbHVlVXRpbHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDM5
KTtcblx0dmFyIFJlYWN0RE9NQ29tcG9uZW50VHJlZSA9IF9fd2VicGFja19yZXF1aXJlX18oNSk7
XG5cdHZhciBSZWFjdFVwZGF0ZXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDkpO1xuXHRcblx0dmFy
IHdhcm5pbmcgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIpO1xuXHRcblx0dmFyIGRpZFdhcm5WYWx1
ZUxpbmsgPSBmYWxzZTtcblx0dmFyIGRpZFdhcm5WYWx1ZURlZmF1bHRWYWx1ZSA9IGZhbHNlO1xu
XHRcblx0ZnVuY3Rpb24gdXBkYXRlT3B0aW9uc0lmUGVuZGluZ1VwZGF0ZUFuZE1vdW50ZWQoKSB7
XG5cdCAgaWYgKHRoaXMuX3Jvb3ROb2RlSUQgJiYgdGhpcy5fd3JhcHBlclN0YXRlLnBlbmRpbmdV
cGRhdGUpIHtcblx0ICAgIHRoaXMuX3dyYXBwZXJTdGF0ZS5wZW5kaW5nVXBkYXRlID0gZmFsc2U7
XG5cdFxuXHQgICAgdmFyIHByb3BzID0gdGhpcy5fY3VycmVudEVsZW1lbnQucHJvcHM7XG5cdCAg
ICB2YXIgdmFsdWUgPSBMaW5rZWRWYWx1ZVV0aWxzLmdldFZhbHVlKHByb3BzKTtcblx0XG5cdCAg
ICBpZiAodmFsdWUgIT0gbnVsbCkge1xuXHQgICAgICB1cGRhdGVPcHRpb25zKHRoaXMsIEJvb2xl
YW4ocHJvcHMubXVsdGlwbGUpLCB2YWx1ZSk7XG5cdCAgICB9XG5cdCAgfVxuXHR9XG5cdFxuXHRm
dW5jdGlvbiBnZXREZWNsYXJhdGlvbkVycm9yQWRkZW5kdW0ob3duZXIpIHtcblx0ICBpZiAob3du
ZXIpIHtcblx0ICAgIHZhciBuYW1lID0gb3duZXIuZ2V0TmFtZSgpO1xuXHQgICAgaWYgKG5hbWUp
IHtcblx0ICAgICAgcmV0dXJuICcgQ2hlY2sgdGhlIHJlbmRlciBtZXRob2Qgb2YgYCcgKyBuYW1l
ICsgJ2AuJztcblx0ICAgIH1cblx0ICB9XG5cdCAgcmV0dXJuICcnO1xuXHR9XG5cdFxuXHR2YXIg
dmFsdWVQcm9wTmFtZXMgPSBbJ3ZhbHVlJywgJ2RlZmF1bHRWYWx1ZSddO1xuXHRcblx0LyoqXG5c
dCAqIFZhbGlkYXRpb24gZnVuY3Rpb24gZm9yIGB2YWx1ZWAgYW5kIGBkZWZhdWx0VmFsdWVgLlxu
XHQgKiBAcHJpdmF0ZVxuXHQgKi9cblx0ZnVuY3Rpb24gY2hlY2tTZWxlY3RQcm9wVHlwZXMoaW5z
dCwgcHJvcHMpIHtcblx0ICB2YXIgb3duZXIgPSBpbnN0Ll9jdXJyZW50RWxlbWVudC5fb3duZXI7
XG5cdCAgTGlua2VkVmFsdWVVdGlscy5jaGVja1Byb3BUeXBlcygnc2VsZWN0JywgcHJvcHMsIG93
bmVyKTtcblx0XG5cdCAgaWYgKHByb3BzLnZhbHVlTGluayAhPT0gdW5kZWZpbmVkICYmICFkaWRX
YXJuVmFsdWVMaW5rKSB7XG5cdCAgICAgZmFsc2UgPyB3YXJuaW5nKGZhbHNlLCAnYHZhbHVlTGlu
a2AgcHJvcCBvbiBgc2VsZWN0YCBpcyBkZXByZWNhdGVkOyBzZXQgYHZhbHVlYCBhbmQgYG9uQ2hh
bmdlYCBpbnN0ZWFkLicpIDogdm9pZCAwO1xuXHQgICAgZGlkV2FyblZhbHVlTGluayA9IHRydWU7
XG5cdCAgfVxuXHRcblx0ICBmb3IgKHZhciBpID0gMDsgaSA8IHZhbHVlUHJvcE5hbWVzLmxlbmd0
aDsgaSsrKSB7XG5cdCAgICB2YXIgcHJvcE5hbWUgPSB2YWx1ZVByb3BOYW1lc1tpXTtcblx0ICAg
IGlmIChwcm9wc1twcm9wTmFtZV0gPT0gbnVsbCkge1xuXHQgICAgICBjb250aW51ZTtcblx0ICAg
IH1cblx0ICAgIHZhciBpc0FycmF5ID0gQXJyYXkuaXNBcnJheShwcm9wc1twcm9wTmFtZV0pO1xu
XHQgICAgaWYgKHByb3BzLm11bHRpcGxlICYmICFpc0FycmF5KSB7XG5cdCAgICAgICBmYWxzZSA/
IHdhcm5pbmcoZmFsc2UsICdUaGUgYCVzYCBwcm9wIHN1cHBsaWVkIHRvIDxzZWxlY3Q+IG11c3Qg
YmUgYW4gYXJyYXkgaWYgJyArICdgbXVsdGlwbGVgIGlzIHRydWUuJXMnLCBwcm9wTmFtZSwgZ2V0
RGVjbGFyYXRpb25FcnJvckFkZGVuZHVtKG93bmVyKSkgOiB2b2lkIDA7XG5cdCAgICB9IGVsc2Ug
aWYgKCFwcm9wcy5tdWx0aXBsZSAmJiBpc0FycmF5KSB7XG5cdCAgICAgICBmYWxzZSA/IHdhcm5p
bmcoZmFsc2UsICdUaGUgYCVzYCBwcm9wIHN1cHBsaWVkIHRvIDxzZWxlY3Q+IG11c3QgYmUgYSBz
Y2FsYXIgJyArICd2YWx1ZSBpZiBgbXVsdGlwbGVgIGlzIGZhbHNlLiVzJywgcHJvcE5hbWUsIGdl
dERlY2xhcmF0aW9uRXJyb3JBZGRlbmR1bShvd25lcikpIDogdm9pZCAwO1xuXHQgICAgfVxuXHQg
IH1cblx0fVxuXHRcblx0LyoqXG5cdCAqIEBwYXJhbSB7UmVhY3RET01Db21wb25lbnR9IGluc3Rc
blx0ICogQHBhcmFtIHtib29sZWFufSBtdWx0aXBsZVxuXHQgKiBAcGFyYW0geyp9IHByb3BWYWx1
ZSBBIHN0cmluZ2FibGUgKHdpdGggYG11bHRpcGxlYCwgYSBsaXN0IG9mIHN0cmluZ2FibGVzKS5c
blx0ICogQHByaXZhdGVcblx0ICovXG5cdGZ1bmN0aW9uIHVwZGF0ZU9wdGlvbnMoaW5zdCwgbXVs
dGlwbGUsIHByb3BWYWx1ZSkge1xuXHQgIHZhciBzZWxlY3RlZFZhbHVlLCBpO1xuXHQgIHZhciBv
cHRpb25zID0gUmVhY3RET01Db21wb25lbnRUcmVlLmdldE5vZGVGcm9tSW5zdGFuY2UoaW5zdCku
b3B0aW9ucztcblx0XG5cdCAgaWYgKG11bHRpcGxlKSB7XG5cdCAgICBzZWxlY3RlZFZhbHVlID0g
e307XG5cdCAgICBmb3IgKGkgPSAwOyBpIDwgcHJvcFZhbHVlLmxlbmd0aDsgaSsrKSB7XG5cdCAg
ICAgIHNlbGVjdGVkVmFsdWVbJycgKyBwcm9wVmFsdWVbaV1dID0gdHJ1ZTtcblx0ICAgIH1cblx0
ICAgIGZvciAoaSA9IDA7IGkgPCBvcHRpb25zLmxlbmd0aDsgaSsrKSB7XG5cdCAgICAgIHZhciBz
ZWxlY3RlZCA9IHNlbGVjdGVkVmFsdWUuaGFzT3duUHJvcGVydHkob3B0aW9uc1tpXS52YWx1ZSk7
XG5cdCAgICAgIGlmIChvcHRpb25zW2ldLnNlbGVjdGVkICE9PSBzZWxlY3RlZCkge1xuXHQgICAg
ICAgIG9wdGlvbnNbaV0uc2VsZWN0ZWQgPSBzZWxlY3RlZDtcblx0ICAgICAgfVxuXHQgICAgfVxu
XHQgIH0gZWxzZSB7XG5cdCAgICAvLyBEbyBub3Qgc2V0IGBzZWxlY3QudmFsdWVgIGFzIGV4YWN0
IGJlaGF2aW9yIGlzbid0IGNvbnNpc3RlbnQgYWNyb3NzIGFsbFxuXHQgICAgLy8gYnJvd3NlcnMg
Zm9yIGFsbCBjYXNlcy5cblx0ICAgIHNlbGVjdGVkVmFsdWUgPSAnJyArIHByb3BWYWx1ZTtcblx0
ICAgIGZvciAoaSA9IDA7IGkgPCBvcHRpb25zLmxlbmd0aDsgaSsrKSB7XG5cdCAgICAgIGlmIChv
cHRpb25zW2ldLnZhbHVlID09PSBzZWxlY3RlZFZhbHVlKSB7XG5cdCAgICAgICAgb3B0aW9uc1tp
XS5zZWxlY3RlZCA9IHRydWU7XG5cdCAgICAgICAgcmV0dXJuO1xuXHQgICAgICB9XG5cdCAgICB9
XG5cdCAgICBpZiAob3B0aW9ucy5sZW5ndGgpIHtcblx0ICAgICAgb3B0aW9uc1swXS5zZWxlY3Rl
ZCA9IHRydWU7XG5cdCAgICB9XG5cdCAgfVxuXHR9XG5cdFxuXHQvKipcblx0ICogSW1wbGVtZW50
cyBhIDxzZWxlY3Q+IGhvc3QgY29tcG9uZW50IHRoYXQgYWxsb3dzIG9wdGlvbmFsbHkgc2V0dGlu
ZyB0aGVcblx0ICogcHJvcHMgYHZhbHVlYCBhbmQgYGRlZmF1bHRWYWx1ZWAuIElmIGBtdWx0aXBs
ZWAgaXMgZmFsc2UsIHRoZSBwcm9wIG11c3QgYmUgYVxuXHQgKiBzdHJpbmdhYmxlLiBJZiBgbXVs
dGlwbGVgIGlzIHRydWUsIHRoZSBwcm9wIG11c3QgYmUgYW4gYXJyYXkgb2Ygc3RyaW5nYWJsZXMu
XG5cdCAqXG5cdCAqIElmIGB2YWx1ZWAgaXMgbm90IHN1cHBsaWVkIChvciBudWxsL3VuZGVmaW5l
ZCksIHVzZXIgYWN0aW9ucyB0aGF0IGNoYW5nZSB0aGVcblx0ICogc2VsZWN0ZWQgb3B0aW9uIHdp
bGwgdHJpZ2dlciB1cGRhdGVzIHRvIHRoZSByZW5kZXJlZCBvcHRpb25zLlxuXHQgKlxuXHQgKiBJ
ZiBpdCBpcyBzdXBwbGllZCAoYW5kIG5vdCBudWxsL3VuZGVmaW5lZCksIHRoZSByZW5kZXJlZCBv
cHRpb25zIHdpbGwgbm90XG5cdCAqIHVwZGF0ZSBpbiByZXNwb25zZSB0byB1c2VyIGFjdGlvbnMu
IEluc3RlYWQsIHRoZSBgdmFsdWVgIHByb3AgbXVzdCBjaGFuZ2UgaW5cblx0ICogb3JkZXIgZm9y
IHRoZSByZW5kZXJlZCBvcHRpb25zIHRvIHVwZGF0ZS5cblx0ICpcblx0ICogSWYgYGRlZmF1bHRW
YWx1ZWAgaXMgcHJvdmlkZWQsIGFueSBvcHRpb25zIHdpdGggdGhlIHN1cHBsaWVkIHZhbHVlcyB3
aWxsIGJlXG5cdCAqIHNlbGVjdGVkLlxuXHQgKi9cblx0dmFyIFJlYWN0RE9NU2VsZWN0ID0ge1xu
XHQgIGdldEhvc3RQcm9wczogZnVuY3Rpb24gKGluc3QsIHByb3BzKSB7XG5cdCAgICByZXR1cm4g
X2Fzc2lnbih7fSwgcHJvcHMsIHtcblx0ICAgICAgb25DaGFuZ2U6IGluc3QuX3dyYXBwZXJTdGF0
ZS5vbkNoYW5nZSxcblx0ICAgICAgdmFsdWU6IHVuZGVmaW5lZFxuXHQgICAgfSk7XG5cdCAgfSxc
blx0XG5cdCAgbW91bnRXcmFwcGVyOiBmdW5jdGlvbiAoaW5zdCwgcHJvcHMpIHtcblx0ICAgIGlm
IChmYWxzZSkge1xuXHQgICAgICBjaGVja1NlbGVjdFByb3BUeXBlcyhpbnN0LCBwcm9wcyk7XG5c
dCAgICB9XG5cdFxuXHQgICAgdmFyIHZhbHVlID0gTGlua2VkVmFsdWVVdGlscy5nZXRWYWx1ZShw
cm9wcyk7XG5cdCAgICBpbnN0Ll93cmFwcGVyU3RhdGUgPSB7XG5cdCAgICAgIHBlbmRpbmdVcGRh
dGU6IGZhbHNlLFxuXHQgICAgICBpbml0aWFsVmFsdWU6IHZhbHVlICE9IG51bGwgPyB2YWx1ZSA6
IHByb3BzLmRlZmF1bHRWYWx1ZSxcblx0ICAgICAgbGlzdGVuZXJzOiBudWxsLFxuXHQgICAgICBv
bkNoYW5nZTogX2hhbmRsZUNoYW5nZS5iaW5kKGluc3QpLFxuXHQgICAgICB3YXNNdWx0aXBsZTog
Qm9vbGVhbihwcm9wcy5tdWx0aXBsZSlcblx0ICAgIH07XG5cdFxuXHQgICAgaWYgKHByb3BzLnZh
bHVlICE9PSB1bmRlZmluZWQgJiYgcHJvcHMuZGVmYXVsdFZhbHVlICE9PSB1bmRlZmluZWQgJiYg
IWRpZFdhcm5WYWx1ZURlZmF1bHRWYWx1ZSkge1xuXHQgICAgICAgZmFsc2UgPyB3YXJuaW5nKGZh
bHNlLCAnU2VsZWN0IGVsZW1lbnRzIG11c3QgYmUgZWl0aGVyIGNvbnRyb2xsZWQgb3IgdW5jb250
cm9sbGVkICcgKyAnKHNwZWNpZnkgZWl0aGVyIHRoZSB2YWx1ZSBwcm9wLCBvciB0aGUgZGVmYXVs
dFZhbHVlIHByb3AsIGJ1dCBub3QgJyArICdib3RoKS4gRGVjaWRlIGJldHdlZW4gdXNpbmcgYSBj
b250cm9sbGVkIG9yIHVuY29udHJvbGxlZCBzZWxlY3QgJyArICdlbGVtZW50IGFuZCByZW1vdmUg
b25lIG9mIHRoZXNlIHByb3BzLiBNb3JlIGluZm86ICcgKyAnaHR0cHM6Ly9mYi5tZS9yZWFjdC1j
b250cm9sbGVkLWNvbXBvbmVudHMnKSA6IHZvaWQgMDtcblx0ICAgICAgZGlkV2FyblZhbHVlRGVm
YXVsdFZhbHVlID0gdHJ1ZTtcblx0ICAgIH1cblx0ICB9LFxuXHRcblx0ICBnZXRTZWxlY3RWYWx1
ZUNvbnRleHQ6IGZ1bmN0aW9uIChpbnN0KSB7XG5cdCAgICAvLyBSZWFjdERPTU9wdGlvbiBsb29r
cyBhdCB0aGlzIGluaXRpYWwgdmFsdWUgc28gdGhlIGluaXRpYWwgZ2VuZXJhdGVkXG5cdCAgICAv
LyBtYXJrdXAgaGFzIGNvcnJlY3QgYHNlbGVjdGVkYCBhdHRyaWJ1dGVzXG5cdCAgICByZXR1cm4g
aW5zdC5fd3JhcHBlclN0YXRlLmluaXRpYWxWYWx1ZTtcblx0ICB9LFxuXHRcblx0ICBwb3N0VXBk
YXRlV3JhcHBlcjogZnVuY3Rpb24gKGluc3QpIHtcblx0ICAgIHZhciBwcm9wcyA9IGluc3QuX2N1
cnJlbnRFbGVtZW50LnByb3BzO1xuXHRcblx0ICAgIC8vIEFmdGVyIHRoZSBpbml0aWFsIG1vdW50
LCB3ZSBjb250cm9sIHNlbGVjdGVkLW5lc3MgbWFudWFsbHkgc28gZG9uJ3QgcGFzc1xuXHQgICAg
Ly8gdGhpcyB2YWx1ZSBkb3duXG5cdCAgICBpbnN0Ll93cmFwcGVyU3RhdGUuaW5pdGlhbFZhbHVl
ID0gdW5kZWZpbmVkO1xuXHRcblx0ICAgIHZhciB3YXNNdWx0aXBsZSA9IGluc3QuX3dyYXBwZXJT
dGF0ZS53YXNNdWx0aXBsZTtcblx0ICAgIGluc3QuX3dyYXBwZXJTdGF0ZS53YXNNdWx0aXBsZSA9
IEJvb2xlYW4ocHJvcHMubXVsdGlwbGUpO1xuXHRcblx0ICAgIHZhciB2YWx1ZSA9IExpbmtlZFZh
bHVlVXRpbHMuZ2V0VmFsdWUocHJvcHMpO1xuXHQgICAgaWYgKHZhbHVlICE9IG51bGwpIHtcblx0
ICAgICAgaW5zdC5fd3JhcHBlclN0YXRlLnBlbmRpbmdVcGRhdGUgPSBmYWxzZTtcblx0ICAgICAg
dXBkYXRlT3B0aW9ucyhpbnN0LCBCb29sZWFuKHByb3BzLm11bHRpcGxlKSwgdmFsdWUpO1xuXHQg
ICAgfSBlbHNlIGlmICh3YXNNdWx0aXBsZSAhPT0gQm9vbGVhbihwcm9wcy5tdWx0aXBsZSkpIHtc
blx0ICAgICAgLy8gRm9yIHNpbXBsaWNpdHksIHJlYXBwbHkgYGRlZmF1bHRWYWx1ZWAgaWYgYG11
bHRpcGxlYCBpcyB0b2dnbGVkLlxuXHQgICAgICBpZiAocHJvcHMuZGVmYXVsdFZhbHVlICE9IG51
bGwpIHtcblx0ICAgICAgICB1cGRhdGVPcHRpb25zKGluc3QsIEJvb2xlYW4ocHJvcHMubXVsdGlw
bGUpLCBwcm9wcy5kZWZhdWx0VmFsdWUpO1xuXHQgICAgICB9IGVsc2Uge1xuXHQgICAgICAgIC8v
IFJldmVydCB0aGUgc2VsZWN0IGJhY2sgdG8gaXRzIGRlZmF1bHQgdW5zZWxlY3RlZCBzdGF0ZS5c
blx0ICAgICAgICB1cGRhdGVPcHRpb25zKGluc3QsIEJvb2xlYW4ocHJvcHMubXVsdGlwbGUpLCBw
cm9wcy5tdWx0aXBsZSA/IFtdIDogJycpO1xuXHQgICAgICB9XG5cdCAgICB9XG5cdCAgfVxuXHR9
O1xuXHRcblx0ZnVuY3Rpb24gX2hhbmRsZUNoYW5nZShldmVudCkge1xuXHQgIHZhciBwcm9wcyA9
IHRoaXMuX2N1cnJlbnRFbGVtZW50LnByb3BzO1xuXHQgIHZhciByZXR1cm5WYWx1ZSA9IExpbmtl
ZFZhbHVlVXRpbHMuZXhlY3V0ZU9uQ2hhbmdlKHByb3BzLCBldmVudCk7XG5cdFxuXHQgIGlmICh0
aGlzLl9yb290Tm9kZUlEKSB7XG5cdCAgICB0aGlzLl93cmFwcGVyU3RhdGUucGVuZGluZ1VwZGF0
ZSA9IHRydWU7XG5cdCAgfVxuXHQgIFJlYWN0VXBkYXRlcy5hc2FwKHVwZGF0ZU9wdGlvbnNJZlBl
bmRpbmdVcGRhdGVBbmRNb3VudGVkLCB0aGlzKTtcblx0ICByZXR1cm4gcmV0dXJuVmFsdWU7XG5c
dH1cblx0XG5cdG1vZHVsZS5leHBvcnRzID0gUmVhY3RET01TZWxlY3Q7XG5cbi8qKiovIH0sXG4v
KiA2MyAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cblx0LyoqXG5cdCAq
IENvcHlyaWdodCAyMDE0LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMg
cmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIg
dGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4g
dGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3Jh
bnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmls
ZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqL1xuXHRcblx0J3VzZSBzdHJpY3Qn
O1xuXHRcblx0dmFyIGVtcHR5Q29tcG9uZW50RmFjdG9yeTtcblx0XG5cdHZhciBSZWFjdEVtcHR5
Q29tcG9uZW50SW5qZWN0aW9uID0ge1xuXHQgIGluamVjdEVtcHR5Q29tcG9uZW50RmFjdG9yeTog
ZnVuY3Rpb24gKGZhY3RvcnkpIHtcblx0ICAgIGVtcHR5Q29tcG9uZW50RmFjdG9yeSA9IGZhY3Rv
cnk7XG5cdCAgfVxuXHR9O1xuXHRcblx0dmFyIFJlYWN0RW1wdHlDb21wb25lbnQgPSB7XG5cdCAg
Y3JlYXRlOiBmdW5jdGlvbiAoaW5zdGFudGlhdGUpIHtcblx0ICAgIHJldHVybiBlbXB0eUNvbXBv
bmVudEZhY3RvcnkoaW5zdGFudGlhdGUpO1xuXHQgIH1cblx0fTtcblx0XG5cdFJlYWN0RW1wdHlD
b21wb25lbnQuaW5qZWN0aW9uID0gUmVhY3RFbXB0eUNvbXBvbmVudEluamVjdGlvbjtcblx0XG5c
dG1vZHVsZS5leHBvcnRzID0gUmVhY3RFbXB0eUNvbXBvbmVudDtcblxuLyoqKi8gfSxcbi8qIDY0
ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuXHQvKipcblx0ICogQ29w
eXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNl
cnZlZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUg
QlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUg
cm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxu
XHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGlu
IHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpcblx0ICogXG5cdCAqL1xuXHRcblx0J3VzZSBzdHJp
Y3QnO1xuXHRcblx0dmFyIFJlYWN0RmVhdHVyZUZsYWdzID0ge1xuXHQgIC8vIFdoZW4gdHJ1ZSwg
Y2FsbCBjb25zb2xlLnRpbWUoKSBiZWZvcmUgYW5kIC50aW1lRW5kKCkgYWZ0ZXIgZWFjaCB0b3At
bGV2ZWxcblx0ICAvLyByZW5kZXIgKGJvdGggaW5pdGlhbCByZW5kZXJzIGFuZCB1cGRhdGVzKS4g
VXNlZnVsIHdoZW4gbG9va2luZyBhdCBwcm9kLW1vZGVcblx0ICAvLyB0aW1lbGluZSBwcm9maWxl
cyBpbiBDaHJvbWUsIGZvciBleGFtcGxlLlxuXHQgIGxvZ1RvcExldmVsUmVuZGVyczogZmFsc2Vc
blx0fTtcblx0XG5cdG1vZHVsZS5leHBvcnRzID0gUmVhY3RGZWF0dXJlRmxhZ3M7XG5cbi8qKiov
IH0sXG4vKiA2NSAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tf
cmVxdWlyZV9fKSB7XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQsIEZhY2Vi
b29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291
cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGlu
IHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291
cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4g
YmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAq
XG5cdCAqL1xuXHRcblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0dmFyIF9wcm9kSW52YXJpYW50ID0g
X193ZWJwYWNrX3JlcXVpcmVfXygzKTtcblx0XG5cdHZhciBpbnZhcmlhbnQgPSBfX3dlYnBhY2tf
cmVxdWlyZV9fKDEpO1xuXHRcblx0dmFyIGdlbmVyaWNDb21wb25lbnRDbGFzcyA9IG51bGw7XG5c
dHZhciB0ZXh0Q29tcG9uZW50Q2xhc3MgPSBudWxsO1xuXHRcblx0dmFyIFJlYWN0SG9zdENvbXBv
bmVudEluamVjdGlvbiA9IHtcblx0ICAvLyBUaGlzIGFjY2VwdHMgYSBjbGFzcyB0aGF0IHJlY2Vp
dmVzIHRoZSB0YWcgc3RyaW5nLiBUaGlzIGlzIGEgY2F0Y2ggYWxsXG5cdCAgLy8gdGhhdCBjYW4g
cmVuZGVyIGFueSBraW5kIG9mIHRhZy5cblx0ICBpbmplY3RHZW5lcmljQ29tcG9uZW50Q2xhc3M6
IGZ1bmN0aW9uIChjb21wb25lbnRDbGFzcykge1xuXHQgICAgZ2VuZXJpY0NvbXBvbmVudENsYXNz
ID0gY29tcG9uZW50Q2xhc3M7XG5cdCAgfSxcblx0ICAvLyBUaGlzIGFjY2VwdHMgYSB0ZXh0IGNv
bXBvbmVudCBjbGFzcyB0aGF0IHRha2VzIHRoZSB0ZXh0IHN0cmluZyB0byBiZVxuXHQgIC8vIHJl
bmRlcmVkIGFzIHByb3BzLlxuXHQgIGluamVjdFRleHRDb21wb25lbnRDbGFzczogZnVuY3Rpb24g
KGNvbXBvbmVudENsYXNzKSB7XG5cdCAgICB0ZXh0Q29tcG9uZW50Q2xhc3MgPSBjb21wb25lbnRD
bGFzcztcblx0ICB9XG5cdH07XG5cdFxuXHQvKipcblx0ICogR2V0IGEgaG9zdCBpbnRlcm5hbCBj
b21wb25lbnQgY2xhc3MgZm9yIGEgc3BlY2lmaWMgdGFnLlxuXHQgKlxuXHQgKiBAcGFyYW0ge1Jl
YWN0RWxlbWVudH0gZWxlbWVudCBUaGUgZWxlbWVudCB0byBjcmVhdGUuXG5cdCAqIEByZXR1cm4g
e2Z1bmN0aW9ufSBUaGUgaW50ZXJuYWwgY2xhc3MgY29uc3RydWN0b3IgZnVuY3Rpb24uXG5cdCAq
L1xuXHRmdW5jdGlvbiBjcmVhdGVJbnRlcm5hbENvbXBvbmVudChlbGVtZW50KSB7XG5cdCAgIWdl
bmVyaWNDb21wb25lbnRDbGFzcyA/ICBmYWxzZSA/IGludmFyaWFudChmYWxzZSwgJ1RoZXJlIGlz
IG5vIHJlZ2lzdGVyZWQgY29tcG9uZW50IGZvciB0aGUgdGFnICVzJywgZWxlbWVudC50eXBlKSA6
IF9wcm9kSW52YXJpYW50KCcxMTEnLCBlbGVtZW50LnR5cGUpIDogdm9pZCAwO1xuXHQgIHJldHVy
biBuZXcgZ2VuZXJpY0NvbXBvbmVudENsYXNzKGVsZW1lbnQpO1xuXHR9XG5cdFxuXHQvKipcblx0
ICogQHBhcmFtIHtSZWFjdFRleHR9IHRleHRcblx0ICogQHJldHVybiB7UmVhY3RDb21wb25lbnR9
XG5cdCAqL1xuXHRmdW5jdGlvbiBjcmVhdGVJbnN0YW5jZUZvclRleHQodGV4dCkge1xuXHQgIHJl
dHVybiBuZXcgdGV4dENvbXBvbmVudENsYXNzKHRleHQpO1xuXHR9XG5cdFxuXHQvKipcblx0ICog
QHBhcmFtIHtSZWFjdENvbXBvbmVudH0gY29tcG9uZW50XG5cdCAqIEByZXR1cm4ge2Jvb2xlYW59
XG5cdCAqL1xuXHRmdW5jdGlvbiBpc1RleHRDb21wb25lbnQoY29tcG9uZW50KSB7XG5cdCAgcmV0
dXJuIGNvbXBvbmVudCBpbnN0YW5jZW9mIHRleHRDb21wb25lbnRDbGFzcztcblx0fVxuXHRcblx0
dmFyIFJlYWN0SG9zdENvbXBvbmVudCA9IHtcblx0ICBjcmVhdGVJbnRlcm5hbENvbXBvbmVudDog
Y3JlYXRlSW50ZXJuYWxDb21wb25lbnQsXG5cdCAgY3JlYXRlSW5zdGFuY2VGb3JUZXh0OiBjcmVh
dGVJbnN0YW5jZUZvclRleHQsXG5cdCAgaXNUZXh0Q29tcG9uZW50OiBpc1RleHRDb21wb25lbnQs
XG5cdCAgaW5qZWN0aW9uOiBSZWFjdEhvc3RDb21wb25lbnRJbmplY3Rpb25cblx0fTtcblx0XG5c
dG1vZHVsZS5leHBvcnRzID0gUmVhY3RIb3N0Q29tcG9uZW50O1xuXG4vKioqLyB9LFxuLyogNjYg
Ki9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykg
e1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxu
XHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlz
IGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICog
TElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBB
biBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGlu
IHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKi9cblx0
XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdHZhciBSZWFjdERPTVNlbGVjdGlvbiA9IF9fd2VicGFj
a19yZXF1aXJlX18oMTQ1KTtcblx0XG5cdHZhciBjb250YWluc05vZGUgPSBfX3dlYnBhY2tfcmVx
dWlyZV9fKDEwMCk7XG5cdHZhciBmb2N1c05vZGUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDUyKTtc
blx0dmFyIGdldEFjdGl2ZUVsZW1lbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDUzKTtcblx0XG5c
dGZ1bmN0aW9uIGlzSW5Eb2N1bWVudChub2RlKSB7XG5cdCAgcmV0dXJuIGNvbnRhaW5zTm9kZShk
b2N1bWVudC5kb2N1bWVudEVsZW1lbnQsIG5vZGUpO1xuXHR9XG5cdFxuXHQvKipcblx0ICogQFJl
YWN0SW5wdXRTZWxlY3Rpb246IFJlYWN0IGlucHV0IHNlbGVjdGlvbiBtb2R1bGUuIEJhc2VkIG9u
IFNlbGVjdGlvbi5qcyxcblx0ICogYnV0IG1vZGlmaWVkIHRvIGJlIHN1aXRhYmxlIGZvciByZWFj
dCBhbmQgaGFzIGEgY291cGxlIG9mIGJ1ZyBmaXhlcyAoZG9lc24ndFxuXHQgKiBhc3N1bWUgYnV0
dG9ucyBoYXZlIHJhbmdlIHNlbGVjdGlvbnMgYWxsb3dlZCkuXG5cdCAqIElucHV0IHNlbGVjdGlv
biBtb2R1bGUgZm9yIFJlYWN0LlxuXHQgKi9cblx0dmFyIFJlYWN0SW5wdXRTZWxlY3Rpb24gPSB7
XG5cdCAgaGFzU2VsZWN0aW9uQ2FwYWJpbGl0aWVzOiBmdW5jdGlvbiAoZWxlbSkge1xuXHQgICAg
dmFyIG5vZGVOYW1lID0gZWxlbSAmJiBlbGVtLm5vZGVOYW1lICYmIGVsZW0ubm9kZU5hbWUudG9M
b3dlckNhc2UoKTtcblx0ICAgIHJldHVybiBub2RlTmFtZSAmJiAobm9kZU5hbWUgPT09ICdpbnB1
dCcgJiYgZWxlbS50eXBlID09PSAndGV4dCcgfHwgbm9kZU5hbWUgPT09ICd0ZXh0YXJlYScgfHwg
ZWxlbS5jb250ZW50RWRpdGFibGUgPT09ICd0cnVlJyk7XG5cdCAgfSxcblx0XG5cdCAgZ2V0U2Vs
ZWN0aW9uSW5mb3JtYXRpb246IGZ1bmN0aW9uICgpIHtcblx0ICAgIHZhciBmb2N1c2VkRWxlbSA9
IGdldEFjdGl2ZUVsZW1lbnQoKTtcblx0ICAgIHJldHVybiB7XG5cdCAgICAgIGZvY3VzZWRFbGVt
OiBmb2N1c2VkRWxlbSxcblx0ICAgICAgc2VsZWN0aW9uUmFuZ2U6IFJlYWN0SW5wdXRTZWxlY3Rp
b24uaGFzU2VsZWN0aW9uQ2FwYWJpbGl0aWVzKGZvY3VzZWRFbGVtKSA/IFJlYWN0SW5wdXRTZWxl
Y3Rpb24uZ2V0U2VsZWN0aW9uKGZvY3VzZWRFbGVtKSA6IG51bGxcblx0ICAgIH07XG5cdCAgfSxc
blx0XG5cdCAgLyoqXG5cdCAgICogQHJlc3RvcmVTZWxlY3Rpb246IElmIGFueSBzZWxlY3Rpb24g
aW5mb3JtYXRpb24gd2FzIHBvdGVudGlhbGx5IGxvc3QsXG5cdCAgICogcmVzdG9yZSBpdC4gVGhp
cyBpcyB1c2VmdWwgd2hlbiBwZXJmb3JtaW5nIG9wZXJhdGlvbnMgdGhhdCBjb3VsZCByZW1vdmUg
ZG9tXG5cdCAgICogbm9kZXMgYW5kIHBsYWNlIHRoZW0gYmFjayBpbiwgcmVzdWx0aW5nIGluIGZv
Y3VzIGJlaW5nIGxvc3QuXG5cdCAgICovXG5cdCAgcmVzdG9yZVNlbGVjdGlvbjogZnVuY3Rpb24g
KHByaW9yU2VsZWN0aW9uSW5mb3JtYXRpb24pIHtcblx0ICAgIHZhciBjdXJGb2N1c2VkRWxlbSA9
IGdldEFjdGl2ZUVsZW1lbnQoKTtcblx0ICAgIHZhciBwcmlvckZvY3VzZWRFbGVtID0gcHJpb3JT
ZWxlY3Rpb25JbmZvcm1hdGlvbi5mb2N1c2VkRWxlbTtcblx0ICAgIHZhciBwcmlvclNlbGVjdGlv
blJhbmdlID0gcHJpb3JTZWxlY3Rpb25JbmZvcm1hdGlvbi5zZWxlY3Rpb25SYW5nZTtcblx0ICAg
IGlmIChjdXJGb2N1c2VkRWxlbSAhPT0gcHJpb3JGb2N1c2VkRWxlbSAmJiBpc0luRG9jdW1lbnQo
cHJpb3JGb2N1c2VkRWxlbSkpIHtcblx0ICAgICAgaWYgKFJlYWN0SW5wdXRTZWxlY3Rpb24uaGFz
U2VsZWN0aW9uQ2FwYWJpbGl0aWVzKHByaW9yRm9jdXNlZEVsZW0pKSB7XG5cdCAgICAgICAgUmVh
Y3RJbnB1dFNlbGVjdGlvbi5zZXRTZWxlY3Rpb24ocHJpb3JGb2N1c2VkRWxlbSwgcHJpb3JTZWxl
Y3Rpb25SYW5nZSk7XG5cdCAgICAgIH1cblx0ICAgICAgZm9jdXNOb2RlKHByaW9yRm9jdXNlZEVs
ZW0pO1xuXHQgICAgfVxuXHQgIH0sXG5cdFxuXHQgIC8qKlxuXHQgICAqIEBnZXRTZWxlY3Rpb246
IEdldHMgdGhlIHNlbGVjdGlvbiBib3VuZHMgb2YgYSBmb2N1c2VkIHRleHRhcmVhLCBpbnB1dCBv
clxuXHQgICAqIGNvbnRlbnRFZGl0YWJsZSBub2RlLlxuXHQgICAqIC1AaW5wdXQ6IExvb2sgdXAg
c2VsZWN0aW9uIGJvdW5kcyBvZiB0aGlzIGlucHV0XG5cdCAgICogLUByZXR1cm4ge3N0YXJ0OiBz
ZWxlY3Rpb25TdGFydCwgZW5kOiBzZWxlY3Rpb25FbmR9XG5cdCAgICovXG5cdCAgZ2V0U2VsZWN0
aW9uOiBmdW5jdGlvbiAoaW5wdXQpIHtcblx0ICAgIHZhciBzZWxlY3Rpb247XG5cdFxuXHQgICAg
aWYgKCdzZWxlY3Rpb25TdGFydCcgaW4gaW5wdXQpIHtcblx0ICAgICAgLy8gTW9kZXJuIGJyb3dz
ZXIgd2l0aCBpbnB1dCBvciB0ZXh0YXJlYS5cblx0ICAgICAgc2VsZWN0aW9uID0ge1xuXHQgICAg
ICAgIHN0YXJ0OiBpbnB1dC5zZWxlY3Rpb25TdGFydCxcblx0ICAgICAgICBlbmQ6IGlucHV0LnNl
bGVjdGlvbkVuZFxuXHQgICAgICB9O1xuXHQgICAgfSBlbHNlIGlmIChkb2N1bWVudC5zZWxlY3Rp
b24gJiYgaW5wdXQubm9kZU5hbWUgJiYgaW5wdXQubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PT0g
J2lucHV0Jykge1xuXHQgICAgICAvLyBJRTggaW5wdXQuXG5cdCAgICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LnNlbGVjdGlvbi5jcmVhdGVSYW5nZSgpO1xuXHQgICAgICAvLyBUaGVyZSBjYW4gb25s
eSBiZSBvbmUgc2VsZWN0aW9uIHBlciBkb2N1bWVudCBpbiBJRSwgc28gaXQgbXVzdFxuXHQgICAg
ICAvLyBiZSBpbiBvdXIgZWxlbWVudC5cblx0ICAgICAgaWYgKHJhbmdlLnBhcmVudEVsZW1lbnQo
KSA9PT0gaW5wdXQpIHtcblx0ICAgICAgICBzZWxlY3Rpb24gPSB7XG5cdCAgICAgICAgICBzdGFy
dDogLXJhbmdlLm1vdmVTdGFydCgnY2hhcmFjdGVyJywgLWlucHV0LnZhbHVlLmxlbmd0aCksXG5c
dCAgICAgICAgICBlbmQ6IC1yYW5nZS5tb3ZlRW5kKCdjaGFyYWN0ZXInLCAtaW5wdXQudmFsdWUu
bGVuZ3RoKVxuXHQgICAgICAgIH07XG5cdCAgICAgIH1cblx0ICAgIH0gZWxzZSB7XG5cdCAgICAg
IC8vIENvbnRlbnQgZWRpdGFibGUgb3Igb2xkIElFIHRleHRhcmVhLlxuXHQgICAgICBzZWxlY3Rp
b24gPSBSZWFjdERPTVNlbGVjdGlvbi5nZXRPZmZzZXRzKGlucHV0KTtcblx0ICAgIH1cblx0XG5c
dCAgICByZXR1cm4gc2VsZWN0aW9uIHx8IHsgc3RhcnQ6IDAsIGVuZDogMCB9O1xuXHQgIH0sXG5c
dFxuXHQgIC8qKlxuXHQgICAqIEBzZXRTZWxlY3Rpb246IFNldHMgdGhlIHNlbGVjdGlvbiBib3Vu
ZHMgb2YgYSB0ZXh0YXJlYSBvciBpbnB1dCBhbmQgZm9jdXNlc1xuXHQgICAqIHRoZSBpbnB1dC5c
blx0ICAgKiAtQGlucHV0ICAgICBTZXQgc2VsZWN0aW9uIGJvdW5kcyBvZiB0aGlzIGlucHV0IG9y
IHRleHRhcmVhXG5cdCAgICogLUBvZmZzZXRzICAgT2JqZWN0IG9mIHNhbWUgZm9ybSB0aGF0IGlz
IHJldHVybmVkIGZyb20gZ2V0KlxuXHQgICAqL1xuXHQgIHNldFNlbGVjdGlvbjogZnVuY3Rpb24g
KGlucHV0LCBvZmZzZXRzKSB7XG5cdCAgICB2YXIgc3RhcnQgPSBvZmZzZXRzLnN0YXJ0O1xuXHQg
ICAgdmFyIGVuZCA9IG9mZnNldHMuZW5kO1xuXHQgICAgaWYgKGVuZCA9PT0gdW5kZWZpbmVkKSB7
XG5cdCAgICAgIGVuZCA9IHN0YXJ0O1xuXHQgICAgfVxuXHRcblx0ICAgIGlmICgnc2VsZWN0aW9u
U3RhcnQnIGluIGlucHV0KSB7XG5cdCAgICAgIGlucHV0LnNlbGVjdGlvblN0YXJ0ID0gc3RhcnQ7
XG5cdCAgICAgIGlucHV0LnNlbGVjdGlvbkVuZCA9IE1hdGgubWluKGVuZCwgaW5wdXQudmFsdWUu
bGVuZ3RoKTtcblx0ICAgIH0gZWxzZSBpZiAoZG9jdW1lbnQuc2VsZWN0aW9uICYmIGlucHV0Lm5v
ZGVOYW1lICYmIGlucHV0Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09ICdpbnB1dCcpIHtcblx0
ICAgICAgdmFyIHJhbmdlID0gaW5wdXQuY3JlYXRlVGV4dFJhbmdlKCk7XG5cdCAgICAgIHJhbmdl
LmNvbGxhcHNlKHRydWUpO1xuXHQgICAgICByYW5nZS5tb3ZlU3RhcnQoJ2NoYXJhY3RlcicsIHN0
YXJ0KTtcblx0ICAgICAgcmFuZ2UubW92ZUVuZCgnY2hhcmFjdGVyJywgZW5kIC0gc3RhcnQpO1xu
XHQgICAgICByYW5nZS5zZWxlY3QoKTtcblx0ICAgIH0gZWxzZSB7XG5cdCAgICAgIFJlYWN0RE9N
U2VsZWN0aW9uLnNldE9mZnNldHMoaW5wdXQsIG9mZnNldHMpO1xuXHQgICAgfVxuXHQgIH1cblx0
fTtcblx0XG5cdG1vZHVsZS5leHBvcnRzID0gUmVhY3RJbnB1dFNlbGVjdGlvbjtcblxuLyoqKi8g
fSxcbi8qIDY3ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19y
ZXF1aXJlX18pIHtcblxuXHQvKipcblx0ICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJv
b2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICogVGhpcyBzb3Vy
Y2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4g
dGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3Vy
Y2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBi
ZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpc
blx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHR2YXIgX3Byb2RJbnZhcmlhbnQgPSBf
X3dlYnBhY2tfcmVxdWlyZV9fKDMpO1xuXHRcblx0dmFyIERPTUxhenlUcmVlID0gX193ZWJwYWNr
X3JlcXVpcmVfXygxNCk7XG5cdHZhciBET01Qcm9wZXJ0eSA9IF9fd2VicGFja19yZXF1aXJlX18o
MTUpO1xuXHR2YXIgUmVhY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE3KTtcblx0dmFyIFJlYWN0
QnJvd3NlckV2ZW50RW1pdHRlciA9IF9fd2VicGFja19yZXF1aXJlX18oMjUpO1xuXHR2YXIgUmVh
Y3RDdXJyZW50T3duZXIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDExKTtcblx0dmFyIFJlYWN0RE9N
Q29tcG9uZW50VHJlZSA9IF9fd2VicGFja19yZXF1aXJlX18oNSk7XG5cdHZhciBSZWFjdERPTUNv
bnRhaW5lckluZm8gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEzOSk7XG5cdHZhciBSZWFjdERPTUZl
YXR1cmVGbGFncyA9IF9fd2VicGFja19yZXF1aXJlX18oMTQxKTtcblx0dmFyIFJlYWN0RmVhdHVy
ZUZsYWdzID0gX193ZWJwYWNrX3JlcXVpcmVfXyg2NCk7XG5cdHZhciBSZWFjdEluc3RhbmNlTWFw
ID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMSk7XG5cdHZhciBSZWFjdEluc3RydW1lbnRhdGlvbiA9
IF9fd2VicGFja19yZXF1aXJlX18oOCk7XG5cdHZhciBSZWFjdE1hcmt1cENoZWNrc3VtID0gX193
ZWJwYWNrX3JlcXVpcmVfXygxNTUpO1xuXHR2YXIgUmVhY3RSZWNvbmNpbGVyID0gX193ZWJwYWNr
X3JlcXVpcmVfXygxNik7XG5cdHZhciBSZWFjdFVwZGF0ZVF1ZXVlID0gX193ZWJwYWNrX3JlcXVp
cmVfXyg0Mik7XG5cdHZhciBSZWFjdFVwZGF0ZXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDkpO1xu
XHRcblx0dmFyIGVtcHR5T2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygyNCk7XG5cdHZhciBp
bnN0YW50aWF0ZVJlYWN0Q29tcG9uZW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg3NSk7XG5cdHZh
ciBpbnZhcmlhbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEpO1xuXHR2YXIgc2V0SW5uZXJIVE1M
ID0gX193ZWJwYWNrX3JlcXVpcmVfXygyOSk7XG5cdHZhciBzaG91bGRVcGRhdGVSZWFjdENvbXBv
bmVudCA9IF9fd2VicGFja19yZXF1aXJlX18oNDgpO1xuXHR2YXIgd2FybmluZyA9IF9fd2VicGFj
a19yZXF1aXJlX18oMik7XG5cdFxuXHR2YXIgQVRUUl9OQU1FID0gRE9NUHJvcGVydHkuSURfQVRU
UklCVVRFX05BTUU7XG5cdHZhciBST09UX0FUVFJfTkFNRSA9IERPTVByb3BlcnR5LlJPT1RfQVRU
UklCVVRFX05BTUU7XG5cdFxuXHR2YXIgRUxFTUVOVF9OT0RFX1RZUEUgPSAxO1xuXHR2YXIgRE9D
X05PREVfVFlQRSA9IDk7XG5cdHZhciBET0NVTUVOVF9GUkFHTUVOVF9OT0RFX1RZUEUgPSAxMTtc
blx0XG5cdHZhciBpbnN0YW5jZXNCeVJlYWN0Um9vdElEID0ge307XG5cdFxuXHQvKipcblx0ICog
RmluZHMgdGhlIGluZGV4IG9mIHRoZSBmaXJzdCBjaGFyYWN0ZXJcblx0ICogdGhhdCdzIG5vdCBj
b21tb24gYmV0d2VlbiB0aGUgdHdvIGdpdmVuIHN0cmluZ3MuXG5cdCAqXG5cdCAqIEByZXR1cm4g
e251bWJlcn0gdGhlIGluZGV4IG9mIHRoZSBjaGFyYWN0ZXIgd2hlcmUgdGhlIHN0cmluZ3MgZGl2
ZXJnZVxuXHQgKi9cblx0ZnVuY3Rpb24gZmlyc3REaWZmZXJlbmNlSW5kZXgoc3RyaW5nMSwgc3Ry
aW5nMikge1xuXHQgIHZhciBtaW5MZW4gPSBNYXRoLm1pbihzdHJpbmcxLmxlbmd0aCwgc3RyaW5n
Mi5sZW5ndGgpO1xuXHQgIGZvciAodmFyIGkgPSAwOyBpIDwgbWluTGVuOyBpKyspIHtcblx0ICAg
IGlmIChzdHJpbmcxLmNoYXJBdChpKSAhPT0gc3RyaW5nMi5jaGFyQXQoaSkpIHtcblx0ICAgICAg
cmV0dXJuIGk7XG5cdCAgICB9XG5cdCAgfVxuXHQgIHJldHVybiBzdHJpbmcxLmxlbmd0aCA9PT0g
c3RyaW5nMi5sZW5ndGggPyAtMSA6IG1pbkxlbjtcblx0fVxuXHRcblx0LyoqXG5cdCAqIEBwYXJh
bSB7RE9NRWxlbWVudHxET01Eb2N1bWVudH0gY29udGFpbmVyIERPTSBlbGVtZW50IHRoYXQgbWF5
IGNvbnRhaW5cblx0ICogYSBSZWFjdCBjb21wb25lbnRcblx0ICogQHJldHVybiB7Pyp9IERPTSBl
bGVtZW50IHRoYXQgbWF5IGhhdmUgdGhlIHJlYWN0Um9vdCBJRCwgb3IgbnVsbC5cblx0ICovXG5c
dGZ1bmN0aW9uIGdldFJlYWN0Um9vdEVsZW1lbnRJbkNvbnRhaW5lcihjb250YWluZXIpIHtcblx0
ICBpZiAoIWNvbnRhaW5lcikge1xuXHQgICAgcmV0dXJuIG51bGw7XG5cdCAgfVxuXHRcblx0ICBp
ZiAoY29udGFpbmVyLm5vZGVUeXBlID09PSBET0NfTk9ERV9UWVBFKSB7XG5cdCAgICByZXR1cm4g
Y29udGFpbmVyLmRvY3VtZW50RWxlbWVudDtcblx0ICB9IGVsc2Uge1xuXHQgICAgcmV0dXJuIGNv
bnRhaW5lci5maXJzdENoaWxkO1xuXHQgIH1cblx0fVxuXHRcblx0ZnVuY3Rpb24gaW50ZXJuYWxH
ZXRJRChub2RlKSB7XG5cdCAgLy8gSWYgbm9kZSBpcyBzb21ldGhpbmcgbGlrZSBhIHdpbmRvdywg
ZG9jdW1lbnQsIG9yIHRleHQgbm9kZSwgbm9uZSBvZlxuXHQgIC8vIHdoaWNoIHN1cHBvcnQgYXR0
cmlidXRlcyBvciBhIC5nZXRBdHRyaWJ1dGUgbWV0aG9kLCBncmFjZWZ1bGx5IHJldHVyblxuXHQg
IC8vIHRoZSBlbXB0eSBzdHJpbmcsIGFzIGlmIHRoZSBhdHRyaWJ1dGUgd2VyZSBtaXNzaW5nLlxu
XHQgIHJldHVybiBub2RlLmdldEF0dHJpYnV0ZSAmJiBub2RlLmdldEF0dHJpYnV0ZShBVFRSX05B
TUUpIHx8ICcnO1xuXHR9XG5cdFxuXHQvKipcblx0ICogTW91bnRzIHRoaXMgY29tcG9uZW50IGFu
ZCBpbnNlcnRzIGl0IGludG8gdGhlIERPTS5cblx0ICpcblx0ICogQHBhcmFtIHtSZWFjdENvbXBv
bmVudH0gY29tcG9uZW50SW5zdGFuY2UgVGhlIGluc3RhbmNlIHRvIG1vdW50LlxuXHQgKiBAcGFy
YW0ge0RPTUVsZW1lbnR9IGNvbnRhaW5lciBET00gZWxlbWVudCB0byBtb3VudCBpbnRvLlxuXHQg
KiBAcGFyYW0ge1JlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb259IHRyYW5zYWN0aW9uXG5cdCAqIEBw
YXJhbSB7Ym9vbGVhbn0gc2hvdWxkUmV1c2VNYXJrdXAgSWYgdHJ1ZSwgZG8gbm90IGluc2VydCBt
YXJrdXBcblx0ICovXG5cdGZ1bmN0aW9uIG1vdW50Q29tcG9uZW50SW50b05vZGUod3JhcHBlcklu
c3RhbmNlLCBjb250YWluZXIsIHRyYW5zYWN0aW9uLCBzaG91bGRSZXVzZU1hcmt1cCwgY29udGV4
dCkge1xuXHQgIHZhciBtYXJrZXJOYW1lO1xuXHQgIGlmIChSZWFjdEZlYXR1cmVGbGFncy5sb2dU
b3BMZXZlbFJlbmRlcnMpIHtcblx0ICAgIHZhciB3cmFwcGVkRWxlbWVudCA9IHdyYXBwZXJJbnN0
YW5jZS5fY3VycmVudEVsZW1lbnQucHJvcHMuY2hpbGQ7XG5cdCAgICB2YXIgdHlwZSA9IHdyYXBw
ZWRFbGVtZW50LnR5cGU7XG5cdCAgICBtYXJrZXJOYW1lID0gJ1JlYWN0IG1vdW50OiAnICsgKHR5
cGVvZiB0eXBlID09PSAnc3RyaW5nJyA/IHR5cGUgOiB0eXBlLmRpc3BsYXlOYW1lIHx8IHR5cGUu
bmFtZSk7XG5cdCAgICBjb25zb2xlLnRpbWUobWFya2VyTmFtZSk7XG5cdCAgfVxuXHRcblx0ICB2
YXIgbWFya3VwID0gUmVhY3RSZWNvbmNpbGVyLm1vdW50Q29tcG9uZW50KHdyYXBwZXJJbnN0YW5j
ZSwgdHJhbnNhY3Rpb24sIG51bGwsIFJlYWN0RE9NQ29udGFpbmVySW5mbyh3cmFwcGVySW5zdGFu
Y2UsIGNvbnRhaW5lciksIGNvbnRleHQsIDAgLyogcGFyZW50RGVidWdJRCAqL1xuXHQgICk7XG5c
dFxuXHQgIGlmIChtYXJrZXJOYW1lKSB7XG5cdCAgICBjb25zb2xlLnRpbWVFbmQobWFya2VyTmFt
ZSk7XG5cdCAgfVxuXHRcblx0ICB3cmFwcGVySW5zdGFuY2UuX3JlbmRlcmVkQ29tcG9uZW50Ll90
b3BMZXZlbFdyYXBwZXIgPSB3cmFwcGVySW5zdGFuY2U7XG5cdCAgUmVhY3RNb3VudC5fbW91bnRJ
bWFnZUludG9Ob2RlKG1hcmt1cCwgY29udGFpbmVyLCB3cmFwcGVySW5zdGFuY2UsIHNob3VsZFJl
dXNlTWFya3VwLCB0cmFuc2FjdGlvbik7XG5cdH1cblx0XG5cdC8qKlxuXHQgKiBCYXRjaGVkIG1v
dW50LlxuXHQgKlxuXHQgKiBAcGFyYW0ge1JlYWN0Q29tcG9uZW50fSBjb21wb25lbnRJbnN0YW5j
ZSBUaGUgaW5zdGFuY2UgdG8gbW91bnQuXG5cdCAqIEBwYXJhbSB7RE9NRWxlbWVudH0gY29udGFp
bmVyIERPTSBlbGVtZW50IHRvIG1vdW50IGludG8uXG5cdCAqIEBwYXJhbSB7Ym9vbGVhbn0gc2hv
dWxkUmV1c2VNYXJrdXAgSWYgdHJ1ZSwgZG8gbm90IGluc2VydCBtYXJrdXBcblx0ICovXG5cdGZ1
bmN0aW9uIGJhdGNoZWRNb3VudENvbXBvbmVudEludG9Ob2RlKGNvbXBvbmVudEluc3RhbmNlLCBj
b250YWluZXIsIHNob3VsZFJldXNlTWFya3VwLCBjb250ZXh0KSB7XG5cdCAgdmFyIHRyYW5zYWN0
aW9uID0gUmVhY3RVcGRhdGVzLlJlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb24uZ2V0UG9vbGVkKFxu
XHQgIC8qIHVzZUNyZWF0ZUVsZW1lbnQgKi9cblx0ICAhc2hvdWxkUmV1c2VNYXJrdXAgJiYgUmVh
Y3RET01GZWF0dXJlRmxhZ3MudXNlQ3JlYXRlRWxlbWVudCk7XG5cdCAgdHJhbnNhY3Rpb24ucGVy
Zm9ybShtb3VudENvbXBvbmVudEludG9Ob2RlLCBudWxsLCBjb21wb25lbnRJbnN0YW5jZSwgY29u
dGFpbmVyLCB0cmFuc2FjdGlvbiwgc2hvdWxkUmV1c2VNYXJrdXAsIGNvbnRleHQpO1xuXHQgIFJl
YWN0VXBkYXRlcy5SZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9uLnJlbGVhc2UodHJhbnNhY3Rpb24p
O1xuXHR9XG5cdFxuXHQvKipcblx0ICogVW5tb3VudHMgYSBjb21wb25lbnQgYW5kIHJlbW92ZXMg
aXQgZnJvbSB0aGUgRE9NLlxuXHQgKlxuXHQgKiBAcGFyYW0ge1JlYWN0Q29tcG9uZW50fSBpbnN0
YW5jZSBSZWFjdCBjb21wb25lbnQgaW5zdGFuY2UuXG5cdCAqIEBwYXJhbSB7RE9NRWxlbWVudH0g
Y29udGFpbmVyIERPTSBlbGVtZW50IHRvIHVubW91bnQgZnJvbS5cblx0ICogQGZpbmFsXG5cdCAq
IEBpbnRlcm5hbFxuXHQgKiBAc2VlIHtSZWFjdE1vdW50LnVubW91bnRDb21wb25lbnRBdE5vZGV9
XG5cdCAqL1xuXHRmdW5jdGlvbiB1bm1vdW50Q29tcG9uZW50RnJvbU5vZGUoaW5zdGFuY2UsIGNv
bnRhaW5lciwgc2FmZWx5KSB7XG5cdCAgaWYgKGZhbHNlKSB7XG5cdCAgICBSZWFjdEluc3RydW1l
bnRhdGlvbi5kZWJ1Z1Rvb2wub25CZWdpbkZsdXNoKCk7XG5cdCAgfVxuXHQgIFJlYWN0UmVjb25j
aWxlci51bm1vdW50Q29tcG9uZW50KGluc3RhbmNlLCBzYWZlbHkpO1xuXHQgIGlmIChmYWxzZSkg
e1xuXHQgICAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9uRW5kRmx1c2goKTtcblx0
ICB9XG5cdFxuXHQgIGlmIChjb250YWluZXIubm9kZVR5cGUgPT09IERPQ19OT0RFX1RZUEUpIHtc
blx0ICAgIGNvbnRhaW5lciA9IGNvbnRhaW5lci5kb2N1bWVudEVsZW1lbnQ7XG5cdCAgfVxuXHRc
blx0ICAvLyBodHRwOi8vanNwZXJmLmNvbS9lbXB0eWluZy1hLW5vZGVcblx0ICB3aGlsZSAoY29u
dGFpbmVyLmxhc3RDaGlsZCkge1xuXHQgICAgY29udGFpbmVyLnJlbW92ZUNoaWxkKGNvbnRhaW5l
ci5sYXN0Q2hpbGQpO1xuXHQgIH1cblx0fVxuXHRcblx0LyoqXG5cdCAqIFRydWUgaWYgdGhlIHN1
cHBsaWVkIERPTSBub2RlIGhhcyBhIGRpcmVjdCBSZWFjdC1yZW5kZXJlZCBjaGlsZCB0aGF0IGlz
XG5cdCAqIG5vdCBhIFJlYWN0IHJvb3QgZWxlbWVudC4gVXNlZnVsIGZvciB3YXJuaW5nIGluIGBy
ZW5kZXJgLFxuXHQgKiBgdW5tb3VudENvbXBvbmVudEF0Tm9kZWAsIGV0Yy5cblx0ICpcblx0ICog
QHBhcmFtIHs/RE9NRWxlbWVudH0gbm9kZSBUaGUgY2FuZGlkYXRlIERPTSBub2RlLlxuXHQgKiBA
cmV0dXJuIHtib29sZWFufSBUcnVlIGlmIHRoZSBET00gZWxlbWVudCBjb250YWlucyBhIGRpcmVj
dCBjaGlsZCB0aGF0IHdhc1xuXHQgKiByZW5kZXJlZCBieSBSZWFjdCBidXQgaXMgbm90IGEgcm9v
dCBlbGVtZW50LlxuXHQgKiBAaW50ZXJuYWxcblx0ICovXG5cdGZ1bmN0aW9uIGhhc05vblJvb3RS
ZWFjdENoaWxkKGNvbnRhaW5lcikge1xuXHQgIHZhciByb290RWwgPSBnZXRSZWFjdFJvb3RFbGVt
ZW50SW5Db250YWluZXIoY29udGFpbmVyKTtcblx0ICBpZiAocm9vdEVsKSB7XG5cdCAgICB2YXIg
aW5zdCA9IFJlYWN0RE9NQ29tcG9uZW50VHJlZS5nZXRJbnN0YW5jZUZyb21Ob2RlKHJvb3RFbCk7
XG5cdCAgICByZXR1cm4gISEoaW5zdCAmJiBpbnN0Ll9ob3N0UGFyZW50KTtcblx0ICB9XG5cdH1c
blx0XG5cdC8qKlxuXHQgKiBUcnVlIGlmIHRoZSBzdXBwbGllZCBET00gbm9kZSBpcyBhIFJlYWN0
IERPTSBlbGVtZW50IGFuZFxuXHQgKiBpdCBoYXMgYmVlbiByZW5kZXJlZCBieSBhbm90aGVyIGNv
cHkgb2YgUmVhY3QuXG5cdCAqXG5cdCAqIEBwYXJhbSB7P0RPTUVsZW1lbnR9IG5vZGUgVGhlIGNh
bmRpZGF0ZSBET00gbm9kZS5cblx0ICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBpZiB0aGUgRE9N
IGhhcyBiZWVuIHJlbmRlcmVkIGJ5IGFub3RoZXIgY29weSBvZiBSZWFjdFxuXHQgKiBAaW50ZXJu
YWxcblx0ICovXG5cdGZ1bmN0aW9uIG5vZGVJc1JlbmRlcmVkQnlPdGhlckluc3RhbmNlKGNvbnRh
aW5lcikge1xuXHQgIHZhciByb290RWwgPSBnZXRSZWFjdFJvb3RFbGVtZW50SW5Db250YWluZXIo
Y29udGFpbmVyKTtcblx0ICByZXR1cm4gISEocm9vdEVsICYmIGlzUmVhY3ROb2RlKHJvb3RFbCkg
JiYgIVJlYWN0RE9NQ29tcG9uZW50VHJlZS5nZXRJbnN0YW5jZUZyb21Ob2RlKHJvb3RFbCkpO1xu
XHR9XG5cdFxuXHQvKipcblx0ICogVHJ1ZSBpZiB0aGUgc3VwcGxpZWQgRE9NIG5vZGUgaXMgYSB2
YWxpZCBub2RlIGVsZW1lbnQuXG5cdCAqXG5cdCAqIEBwYXJhbSB7P0RPTUVsZW1lbnR9IG5vZGUg
VGhlIGNhbmRpZGF0ZSBET00gbm9kZS5cblx0ICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBpZiB0
aGUgRE9NIGlzIGEgdmFsaWQgRE9NIG5vZGUuXG5cdCAqIEBpbnRlcm5hbFxuXHQgKi9cblx0ZnVu
Y3Rpb24gaXNWYWxpZENvbnRhaW5lcihub2RlKSB7XG5cdCAgcmV0dXJuICEhKG5vZGUgJiYgKG5v
ZGUubm9kZVR5cGUgPT09IEVMRU1FTlRfTk9ERV9UWVBFIHx8IG5vZGUubm9kZVR5cGUgPT09IERP
Q19OT0RFX1RZUEUgfHwgbm9kZS5ub2RlVHlwZSA9PT0gRE9DVU1FTlRfRlJBR01FTlRfTk9ERV9U
WVBFKSk7XG5cdH1cblx0XG5cdC8qKlxuXHQgKiBUcnVlIGlmIHRoZSBzdXBwbGllZCBET00gbm9k
ZSBpcyBhIHZhbGlkIFJlYWN0IG5vZGUgZWxlbWVudC5cblx0ICpcblx0ICogQHBhcmFtIHs/RE9N
RWxlbWVudH0gbm9kZSBUaGUgY2FuZGlkYXRlIERPTSBub2RlLlxuXHQgKiBAcmV0dXJuIHtib29s
ZWFufSBUcnVlIGlmIHRoZSBET00gaXMgYSB2YWxpZCBSZWFjdCBET00gbm9kZS5cblx0ICogQGlu
dGVybmFsXG5cdCAqL1xuXHRmdW5jdGlvbiBpc1JlYWN0Tm9kZShub2RlKSB7XG5cdCAgcmV0dXJu
IGlzVmFsaWRDb250YWluZXIobm9kZSkgJiYgKG5vZGUuaGFzQXR0cmlidXRlKFJPT1RfQVRUUl9O
QU1FKSB8fCBub2RlLmhhc0F0dHJpYnV0ZShBVFRSX05BTUUpKTtcblx0fVxuXHRcblx0ZnVuY3Rp
b24gZ2V0SG9zdFJvb3RJbnN0YW5jZUluQ29udGFpbmVyKGNvbnRhaW5lcikge1xuXHQgIHZhciBy
b290RWwgPSBnZXRSZWFjdFJvb3RFbGVtZW50SW5Db250YWluZXIoY29udGFpbmVyKTtcblx0ICB2
YXIgcHJldkhvc3RJbnN0YW5jZSA9IHJvb3RFbCAmJiBSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0
SW5zdGFuY2VGcm9tTm9kZShyb290RWwpO1xuXHQgIHJldHVybiBwcmV2SG9zdEluc3RhbmNlICYm
ICFwcmV2SG9zdEluc3RhbmNlLl9ob3N0UGFyZW50ID8gcHJldkhvc3RJbnN0YW5jZSA6IG51bGw7
XG5cdH1cblx0XG5cdGZ1bmN0aW9uIGdldFRvcExldmVsV3JhcHBlckluQ29udGFpbmVyKGNvbnRh
aW5lcikge1xuXHQgIHZhciByb290ID0gZ2V0SG9zdFJvb3RJbnN0YW5jZUluQ29udGFpbmVyKGNv
bnRhaW5lcik7XG5cdCAgcmV0dXJuIHJvb3QgPyByb290Ll9ob3N0Q29udGFpbmVySW5mby5fdG9w
TGV2ZWxXcmFwcGVyIDogbnVsbDtcblx0fVxuXHRcblx0LyoqXG5cdCAqIFRlbXBvcmFyeSAoPykg
aGFjayBzbyB0aGF0IHdlIGNhbiBzdG9yZSBhbGwgdG9wLWxldmVsIHBlbmRpbmcgdXBkYXRlcyBv
blxuXHQgKiBjb21wb3NpdGVzIGluc3RlYWQgb2YgaGF2aW5nIHRvIHdvcnJ5IGFib3V0IGRpZmZl
cmVudCB0eXBlcyBvZiBjb21wb25lbnRzXG5cdCAqIGhlcmUuXG5cdCAqL1xuXHR2YXIgdG9wTGV2
ZWxSb290Q291bnRlciA9IDE7XG5cdHZhciBUb3BMZXZlbFdyYXBwZXIgPSBmdW5jdGlvbiAoKSB7
XG5cdCAgdGhpcy5yb290SUQgPSB0b3BMZXZlbFJvb3RDb3VudGVyKys7XG5cdH07XG5cdFRvcExl
dmVsV3JhcHBlci5wcm90b3R5cGUuaXNSZWFjdENvbXBvbmVudCA9IHt9O1xuXHRpZiAoZmFsc2Up
IHtcblx0ICBUb3BMZXZlbFdyYXBwZXIuZGlzcGxheU5hbWUgPSAnVG9wTGV2ZWxXcmFwcGVyJztc
blx0fVxuXHRUb3BMZXZlbFdyYXBwZXIucHJvdG90eXBlLnJlbmRlciA9IGZ1bmN0aW9uICgpIHtc
blx0ICByZXR1cm4gdGhpcy5wcm9wcy5jaGlsZDtcblx0fTtcblx0VG9wTGV2ZWxXcmFwcGVyLmlz
UmVhY3RUb3BMZXZlbFdyYXBwZXIgPSB0cnVlO1xuXHRcblx0LyoqXG5cdCAqIE1vdW50aW5nIGlz
IHRoZSBwcm9jZXNzIG9mIGluaXRpYWxpemluZyBhIFJlYWN0IGNvbXBvbmVudCBieSBjcmVhdGlu
ZyBpdHNcblx0ICogcmVwcmVzZW50YXRpdmUgRE9NIGVsZW1lbnRzIGFuZCBpbnNlcnRpbmcgdGhl
bSBpbnRvIGEgc3VwcGxpZWQgYGNvbnRhaW5lcmAuXG5cdCAqIEFueSBwcmlvciBjb250ZW50IGlu
c2lkZSBgY29udGFpbmVyYCBpcyBkZXN0cm95ZWQgaW4gdGhlIHByb2Nlc3MuXG5cdCAqXG5cdCAq
ICAgUmVhY3RNb3VudC5yZW5kZXIoXG5cdCAqICAgICBjb21wb25lbnQsXG5cdCAqICAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgnY29udGFpbmVyJylcblx0ICogICApO1xuXHQgKlxuXHQgKiAg
IDxkaXYgaWQ9XCJjb250YWluZXJcIj4gICAgICAgICAgICAgICAgICAgPC0tIFN1cHBsaWVkIGBj
b250YWluZXJgLlxuXHQgKiAgICAgPGRpdiBkYXRhLXJlYWN0aWQ9XCIuM1wiPiAgICAgICAgICAg
ICAgPC0tIFJlbmRlcmVkIHJlYWN0Um9vdCBvZiBSZWFjdFxuXHQgKiAgICAgICAvLyAuLi4gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQuXG5cdCAqICAgICA8L2Rpdj5c
blx0ICogICA8L2Rpdj5cblx0ICpcblx0ICogSW5zaWRlIG9mIGBjb250YWluZXJgLCB0aGUgZmly
c3QgZWxlbWVudCByZW5kZXJlZCBpcyB0aGUgXCJyZWFjdFJvb3RcIi5cblx0ICovXG5cdHZhciBS
ZWFjdE1vdW50ID0ge1xuXHQgIFRvcExldmVsV3JhcHBlcjogVG9wTGV2ZWxXcmFwcGVyLFxuXHRc
blx0ICAvKipcblx0ICAgKiBVc2VkIGJ5IGRldnRvb2xzLiBUaGUga2V5cyBhcmUgbm90IGltcG9y
dGFudC5cblx0ICAgKi9cblx0ICBfaW5zdGFuY2VzQnlSZWFjdFJvb3RJRDogaW5zdGFuY2VzQnlS
ZWFjdFJvb3RJRCxcblx0XG5cdCAgLyoqXG5cdCAgICogVGhpcyBpcyBhIGhvb2sgcHJvdmlkZWQg
dG8gc3VwcG9ydCByZW5kZXJpbmcgUmVhY3QgY29tcG9uZW50cyB3aGlsZVxuXHQgICAqIGVuc3Vy
aW5nIHRoYXQgdGhlIGFwcGFyZW50IHNjcm9sbCBwb3NpdGlvbiBvZiBpdHMgYGNvbnRhaW5lcmAg
ZG9lcyBub3Rcblx0ICAgKiBjaGFuZ2UuXG5cdCAgICpcblx0ICAgKiBAcGFyYW0ge0RPTUVsZW1l
bnR9IGNvbnRhaW5lciBUaGUgYGNvbnRhaW5lcmAgYmVpbmcgcmVuZGVyZWQgaW50by5cblx0ICAg
KiBAcGFyYW0ge2Z1bmN0aW9ufSByZW5kZXJDYWxsYmFjayBUaGlzIG11c3QgYmUgY2FsbGVkIG9u
Y2UgdG8gZG8gdGhlIHJlbmRlci5cblx0ICAgKi9cblx0ICBzY3JvbGxNb25pdG9yOiBmdW5jdGlv
biAoY29udGFpbmVyLCByZW5kZXJDYWxsYmFjaykge1xuXHQgICAgcmVuZGVyQ2FsbGJhY2soKTtc
blx0ICB9LFxuXHRcblx0ICAvKipcblx0ICAgKiBUYWtlIGEgY29tcG9uZW50IHRoYXQncyBhbHJl
YWR5IG1vdW50ZWQgaW50byB0aGUgRE9NIGFuZCByZXBsYWNlIGl0cyBwcm9wc1xuXHQgICAqIEBw
YXJhbSB7UmVhY3RDb21wb25lbnR9IHByZXZDb21wb25lbnQgY29tcG9uZW50IGluc3RhbmNlIGFs
cmVhZHkgaW4gdGhlIERPTVxuXHQgICAqIEBwYXJhbSB7UmVhY3RFbGVtZW50fSBuZXh0RWxlbWVu
dCBjb21wb25lbnQgaW5zdGFuY2UgdG8gcmVuZGVyXG5cdCAgICogQHBhcmFtIHtET01FbGVtZW50
fSBjb250YWluZXIgY29udGFpbmVyIHRvIHJlbmRlciBpbnRvXG5cdCAgICogQHBhcmFtIHs/ZnVu
Y3Rpb259IGNhbGxiYWNrIGZ1bmN0aW9uIHRyaWdnZXJlZCBvbiBjb21wbGV0aW9uXG5cdCAgICov
XG5cdCAgX3VwZGF0ZVJvb3RDb21wb25lbnQ6IGZ1bmN0aW9uIChwcmV2Q29tcG9uZW50LCBuZXh0
RWxlbWVudCwgbmV4dENvbnRleHQsIGNvbnRhaW5lciwgY2FsbGJhY2spIHtcblx0ICAgIFJlYWN0
TW91bnQuc2Nyb2xsTW9uaXRvcihjb250YWluZXIsIGZ1bmN0aW9uICgpIHtcblx0ICAgICAgUmVh
Y3RVcGRhdGVRdWV1ZS5lbnF1ZXVlRWxlbWVudEludGVybmFsKHByZXZDb21wb25lbnQsIG5leHRF
bGVtZW50LCBuZXh0Q29udGV4dCk7XG5cdCAgICAgIGlmIChjYWxsYmFjaykge1xuXHQgICAgICAg
IFJlYWN0VXBkYXRlUXVldWUuZW5xdWV1ZUNhbGxiYWNrSW50ZXJuYWwocHJldkNvbXBvbmVudCwg
Y2FsbGJhY2spO1xuXHQgICAgICB9XG5cdCAgICB9KTtcblx0XG5cdCAgICByZXR1cm4gcHJldkNv
bXBvbmVudDtcblx0ICB9LFxuXHRcblx0ICAvKipcblx0ICAgKiBSZW5kZXIgYSBuZXcgY29tcG9u
ZW50IGludG8gdGhlIERPTS4gSG9va2VkIGJ5IGhvb2tzIVxuXHQgICAqXG5cdCAgICogQHBhcmFt
IHtSZWFjdEVsZW1lbnR9IG5leHRFbGVtZW50IGVsZW1lbnQgdG8gcmVuZGVyXG5cdCAgICogQHBh
cmFtIHtET01FbGVtZW50fSBjb250YWluZXIgY29udGFpbmVyIHRvIHJlbmRlciBpbnRvXG5cdCAg
ICogQHBhcmFtIHtib29sZWFufSBzaG91bGRSZXVzZU1hcmt1cCBpZiB3ZSBzaG91bGQgc2tpcCB0
aGUgbWFya3VwIGluc2VydGlvblxuXHQgICAqIEByZXR1cm4ge1JlYWN0Q29tcG9uZW50fSBuZXh0
Q29tcG9uZW50XG5cdCAgICovXG5cdCAgX3JlbmRlck5ld1Jvb3RDb21wb25lbnQ6IGZ1bmN0aW9u
IChuZXh0RWxlbWVudCwgY29udGFpbmVyLCBzaG91bGRSZXVzZU1hcmt1cCwgY29udGV4dCkge1xu
XHQgICAgLy8gVmFyaW91cyBwYXJ0cyBvZiBvdXIgY29kZSAoc3VjaCBhcyBSZWFjdENvbXBvc2l0
ZUNvbXBvbmVudCdzXG5cdCAgICAvLyBfcmVuZGVyVmFsaWRhdGVkQ29tcG9uZW50KSBhc3N1bWUg
dGhhdCBjYWxscyB0byByZW5kZXIgYXJlbid0IG5lc3RlZDtcblx0ICAgIC8vIHZlcmlmeSB0aGF0
IHRoYXQncyB0aGUgY2FzZS5cblx0ICAgICBmYWxzZSA/IHdhcm5pbmcoUmVhY3RDdXJyZW50T3du
ZXIuY3VycmVudCA9PSBudWxsLCAnX3JlbmRlck5ld1Jvb3RDb21wb25lbnQoKTogUmVuZGVyIG1l
dGhvZHMgc2hvdWxkIGJlIGEgcHVyZSBmdW5jdGlvbiAnICsgJ29mIHByb3BzIGFuZCBzdGF0ZTsg
dHJpZ2dlcmluZyBuZXN0ZWQgY29tcG9uZW50IHVwZGF0ZXMgZnJvbSAnICsgJ3JlbmRlciBpcyBu
b3QgYWxsb3dlZC4gSWYgbmVjZXNzYXJ5LCB0cmlnZ2VyIG5lc3RlZCB1cGRhdGVzIGluICcgKyAn
Y29tcG9uZW50RGlkVXBkYXRlLiBDaGVjayB0aGUgcmVuZGVyIG1ldGhvZCBvZiAlcy4nLCBSZWFj
dEN1cnJlbnRPd25lci5jdXJyZW50ICYmIFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQuZ2V0TmFt
ZSgpIHx8ICdSZWFjdENvbXBvc2l0ZUNvbXBvbmVudCcpIDogdm9pZCAwO1xuXHRcblx0ICAgICFp
c1ZhbGlkQ29udGFpbmVyKGNvbnRhaW5lcikgPyAgZmFsc2UgPyBpbnZhcmlhbnQoZmFsc2UsICdf
cmVnaXN0ZXJDb21wb25lbnQoLi4uKTogVGFyZ2V0IGNvbnRhaW5lciBpcyBub3QgYSBET00gZWxl
bWVudC4nKSA6IF9wcm9kSW52YXJpYW50KCczNycpIDogdm9pZCAwO1xuXHRcblx0ICAgIFJlYWN0
QnJvd3NlckV2ZW50RW1pdHRlci5lbnN1cmVTY3JvbGxWYWx1ZU1vbml0b3JpbmcoKTtcblx0ICAg
IHZhciBjb21wb25lbnRJbnN0YW5jZSA9IGluc3RhbnRpYXRlUmVhY3RDb21wb25lbnQobmV4dEVs
ZW1lbnQsIGZhbHNlKTtcblx0XG5cdCAgICAvLyBUaGUgaW5pdGlhbCByZW5kZXIgaXMgc3luY2hy
b25vdXMgYnV0IGFueSB1cGRhdGVzIHRoYXQgaGFwcGVuIGR1cmluZ1xuXHQgICAgLy8gcmVuZGVy
aW5nLCBpbiBjb21wb25lbnRXaWxsTW91bnQgb3IgY29tcG9uZW50RGlkTW91bnQsIHdpbGwgYmUg
YmF0Y2hlZFxuXHQgICAgLy8gYWNjb3JkaW5nIHRvIHRoZSBjdXJyZW50IGJhdGNoaW5nIHN0cmF0
ZWd5LlxuXHRcblx0ICAgIFJlYWN0VXBkYXRlcy5iYXRjaGVkVXBkYXRlcyhiYXRjaGVkTW91bnRD
b21wb25lbnRJbnRvTm9kZSwgY29tcG9uZW50SW5zdGFuY2UsIGNvbnRhaW5lciwgc2hvdWxkUmV1
c2VNYXJrdXAsIGNvbnRleHQpO1xuXHRcblx0ICAgIHZhciB3cmFwcGVySUQgPSBjb21wb25lbnRJ
bnN0YW5jZS5faW5zdGFuY2Uucm9vdElEO1xuXHQgICAgaW5zdGFuY2VzQnlSZWFjdFJvb3RJRFt3
cmFwcGVySURdID0gY29tcG9uZW50SW5zdGFuY2U7XG5cdFxuXHQgICAgcmV0dXJuIGNvbXBvbmVu
dEluc3RhbmNlO1xuXHQgIH0sXG5cdFxuXHQgIC8qKlxuXHQgICAqIFJlbmRlcnMgYSBSZWFjdCBj
b21wb25lbnQgaW50byB0aGUgRE9NIGluIHRoZSBzdXBwbGllZCBgY29udGFpbmVyYC5cblx0ICAg
KlxuXHQgICAqIElmIHRoZSBSZWFjdCBjb21wb25lbnQgd2FzIHByZXZpb3VzbHkgcmVuZGVyZWQg
aW50byBgY29udGFpbmVyYCwgdGhpcyB3aWxsXG5cdCAgICogcGVyZm9ybSBhbiB1cGRhdGUgb24g
aXQgYW5kIG9ubHkgbXV0YXRlIHRoZSBET00gYXMgbmVjZXNzYXJ5IHRvIHJlZmxlY3QgdGhlXG5c
dCAgICogbGF0ZXN0IFJlYWN0IGNvbXBvbmVudC5cblx0ICAgKlxuXHQgICAqIEBwYXJhbSB7UmVh
Y3RDb21wb25lbnR9IHBhcmVudENvbXBvbmVudCBUaGUgY29uY2VwdHVhbCBwYXJlbnQgb2YgdGhp
cyByZW5kZXIgdHJlZS5cblx0ICAgKiBAcGFyYW0ge1JlYWN0RWxlbWVudH0gbmV4dEVsZW1lbnQg
Q29tcG9uZW50IGVsZW1lbnQgdG8gcmVuZGVyLlxuXHQgICAqIEBwYXJhbSB7RE9NRWxlbWVudH0g
Y29udGFpbmVyIERPTSBlbGVtZW50IHRvIHJlbmRlciBpbnRvLlxuXHQgICAqIEBwYXJhbSB7P2Z1
bmN0aW9ufSBjYWxsYmFjayBmdW5jdGlvbiB0cmlnZ2VyZWQgb24gY29tcGxldGlvblxuXHQgICAq
IEByZXR1cm4ge1JlYWN0Q29tcG9uZW50fSBDb21wb25lbnQgaW5zdGFuY2UgcmVuZGVyZWQgaW4g
YGNvbnRhaW5lcmAuXG5cdCAgICovXG5cdCAgcmVuZGVyU3VidHJlZUludG9Db250YWluZXI6IGZ1
bmN0aW9uIChwYXJlbnRDb21wb25lbnQsIG5leHRFbGVtZW50LCBjb250YWluZXIsIGNhbGxiYWNr
KSB7XG5cdCAgICAhKHBhcmVudENvbXBvbmVudCAhPSBudWxsICYmIFJlYWN0SW5zdGFuY2VNYXAu
aGFzKHBhcmVudENvbXBvbmVudCkpID8gIGZhbHNlID8gaW52YXJpYW50KGZhbHNlLCAncGFyZW50
Q29tcG9uZW50IG11c3QgYmUgYSB2YWxpZCBSZWFjdCBDb21wb25lbnQnKSA6IF9wcm9kSW52YXJp
YW50KCczOCcpIDogdm9pZCAwO1xuXHQgICAgcmV0dXJuIFJlYWN0TW91bnQuX3JlbmRlclN1YnRy
ZWVJbnRvQ29udGFpbmVyKHBhcmVudENvbXBvbmVudCwgbmV4dEVsZW1lbnQsIGNvbnRhaW5lciwg
Y2FsbGJhY2spO1xuXHQgIH0sXG5cdFxuXHQgIF9yZW5kZXJTdWJ0cmVlSW50b0NvbnRhaW5lcjog
ZnVuY3Rpb24gKHBhcmVudENvbXBvbmVudCwgbmV4dEVsZW1lbnQsIGNvbnRhaW5lciwgY2FsbGJh
Y2spIHtcblx0ICAgIFJlYWN0VXBkYXRlUXVldWUudmFsaWRhdGVDYWxsYmFjayhjYWxsYmFjaywg
J1JlYWN0RE9NLnJlbmRlcicpO1xuXHQgICAgIVJlYWN0LmlzVmFsaWRFbGVtZW50KG5leHRFbGVt
ZW50KSA/ICBmYWxzZSA/IGludmFyaWFudChmYWxzZSwgJ1JlYWN0RE9NLnJlbmRlcigpOiBJbnZh
bGlkIGNvbXBvbmVudCBlbGVtZW50LiVzJywgdHlwZW9mIG5leHRFbGVtZW50ID09PSAnc3RyaW5n
JyA/IFwiIEluc3RlYWQgb2YgcGFzc2luZyBhIHN0cmluZyBsaWtlICdkaXYnLCBwYXNzIFwiICsg
XCJSZWFjdC5jcmVhdGVFbGVtZW50KCdkaXYnKSBvciA8ZGl2IC8+LlwiIDogdHlwZW9mIG5leHRF
bGVtZW50ID09PSAnZnVuY3Rpb24nID8gJyBJbnN0ZWFkIG9mIHBhc3NpbmcgYSBjbGFzcyBsaWtl
IEZvbywgcGFzcyAnICsgJ1JlYWN0LmNyZWF0ZUVsZW1lbnQoRm9vKSBvciA8Rm9vIC8+LicgOiAv
LyBDaGVjayBpZiBpdCBxdWFja3MgbGlrZSBhbiBlbGVtZW50XG5cdCAgICBuZXh0RWxlbWVudCAh
PSBudWxsICYmIG5leHRFbGVtZW50LnByb3BzICE9PSB1bmRlZmluZWQgPyAnIFRoaXMgbWF5IGJl
IGNhdXNlZCBieSB1bmludGVudGlvbmFsbHkgbG9hZGluZyB0d28gaW5kZXBlbmRlbnQgJyArICdj
b3BpZXMgb2YgUmVhY3QuJyA6ICcnKSA6IF9wcm9kSW52YXJpYW50KCczOScsIHR5cGVvZiBuZXh0
RWxlbWVudCA9PT0gJ3N0cmluZycgPyBcIiBJbnN0ZWFkIG9mIHBhc3NpbmcgYSBzdHJpbmcgbGlr
ZSAnZGl2JywgcGFzcyBcIiArIFwiUmVhY3QuY3JlYXRlRWxlbWVudCgnZGl2Jykgb3IgPGRpdiAv
Pi5cIiA6IHR5cGVvZiBuZXh0RWxlbWVudCA9PT0gJ2Z1bmN0aW9uJyA/ICcgSW5zdGVhZCBvZiBw
YXNzaW5nIGEgY2xhc3MgbGlrZSBGb28sIHBhc3MgJyArICdSZWFjdC5jcmVhdGVFbGVtZW50KEZv
bykgb3IgPEZvbyAvPi4nIDogbmV4dEVsZW1lbnQgIT0gbnVsbCAmJiBuZXh0RWxlbWVudC5wcm9w
cyAhPT0gdW5kZWZpbmVkID8gJyBUaGlzIG1heSBiZSBjYXVzZWQgYnkgdW5pbnRlbnRpb25hbGx5
IGxvYWRpbmcgdHdvIGluZGVwZW5kZW50ICcgKyAnY29waWVzIG9mIFJlYWN0LicgOiAnJykgOiB2
b2lkIDA7XG5cdFxuXHQgICAgIGZhbHNlID8gd2FybmluZyghY29udGFpbmVyIHx8ICFjb250YWlu
ZXIudGFnTmFtZSB8fCBjb250YWluZXIudGFnTmFtZS50b1VwcGVyQ2FzZSgpICE9PSAnQk9EWScs
ICdyZW5kZXIoKTogUmVuZGVyaW5nIGNvbXBvbmVudHMgZGlyZWN0bHkgaW50byBkb2N1bWVudC5i
b2R5IGlzICcgKyAnZGlzY291cmFnZWQsIHNpbmNlIGl0cyBjaGlsZHJlbiBhcmUgb2Z0ZW4gbWFu
aXB1bGF0ZWQgYnkgdGhpcmQtcGFydHkgJyArICdzY3JpcHRzIGFuZCBicm93c2VyIGV4dGVuc2lv
bnMuIFRoaXMgbWF5IGxlYWQgdG8gc3VidGxlICcgKyAncmVjb25jaWxpYXRpb24gaXNzdWVzLiBU
cnkgcmVuZGVyaW5nIGludG8gYSBjb250YWluZXIgZWxlbWVudCBjcmVhdGVkICcgKyAnZm9yIHlv
dXIgYXBwLicpIDogdm9pZCAwO1xuXHRcblx0ICAgIHZhciBuZXh0V3JhcHBlZEVsZW1lbnQgPSBS
ZWFjdC5jcmVhdGVFbGVtZW50KFRvcExldmVsV3JhcHBlciwge1xuXHQgICAgICBjaGlsZDogbmV4
dEVsZW1lbnRcblx0ICAgIH0pO1xuXHRcblx0ICAgIHZhciBuZXh0Q29udGV4dDtcblx0ICAgIGlm
IChwYXJlbnRDb21wb25lbnQpIHtcblx0ICAgICAgdmFyIHBhcmVudEluc3QgPSBSZWFjdEluc3Rh
bmNlTWFwLmdldChwYXJlbnRDb21wb25lbnQpO1xuXHQgICAgICBuZXh0Q29udGV4dCA9IHBhcmVu
dEluc3QuX3Byb2Nlc3NDaGlsZENvbnRleHQocGFyZW50SW5zdC5fY29udGV4dCk7XG5cdCAgICB9
IGVsc2Uge1xuXHQgICAgICBuZXh0Q29udGV4dCA9IGVtcHR5T2JqZWN0O1xuXHQgICAgfVxuXHRc
blx0ICAgIHZhciBwcmV2Q29tcG9uZW50ID0gZ2V0VG9wTGV2ZWxXcmFwcGVySW5Db250YWluZXIo
Y29udGFpbmVyKTtcblx0XG5cdCAgICBpZiAocHJldkNvbXBvbmVudCkge1xuXHQgICAgICB2YXIg
cHJldldyYXBwZWRFbGVtZW50ID0gcHJldkNvbXBvbmVudC5fY3VycmVudEVsZW1lbnQ7XG5cdCAg
ICAgIHZhciBwcmV2RWxlbWVudCA9IHByZXZXcmFwcGVkRWxlbWVudC5wcm9wcy5jaGlsZDtcblx0
ICAgICAgaWYgKHNob3VsZFVwZGF0ZVJlYWN0Q29tcG9uZW50KHByZXZFbGVtZW50LCBuZXh0RWxl
bWVudCkpIHtcblx0ICAgICAgICB2YXIgcHVibGljSW5zdCA9IHByZXZDb21wb25lbnQuX3JlbmRl
cmVkQ29tcG9uZW50LmdldFB1YmxpY0luc3RhbmNlKCk7XG5cdCAgICAgICAgdmFyIHVwZGF0ZWRD
YWxsYmFjayA9IGNhbGxiYWNrICYmIGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICAgIGNhbGxiYWNr
LmNhbGwocHVibGljSW5zdCk7XG5cdCAgICAgICAgfTtcblx0ICAgICAgICBSZWFjdE1vdW50Ll91
cGRhdGVSb290Q29tcG9uZW50KHByZXZDb21wb25lbnQsIG5leHRXcmFwcGVkRWxlbWVudCwgbmV4
dENvbnRleHQsIGNvbnRhaW5lciwgdXBkYXRlZENhbGxiYWNrKTtcblx0ICAgICAgICByZXR1cm4g
cHVibGljSW5zdDtcblx0ICAgICAgfSBlbHNlIHtcblx0ICAgICAgICBSZWFjdE1vdW50LnVubW91
bnRDb21wb25lbnRBdE5vZGUoY29udGFpbmVyKTtcblx0ICAgICAgfVxuXHQgICAgfVxuXHRcblx0
ICAgIHZhciByZWFjdFJvb3RFbGVtZW50ID0gZ2V0UmVhY3RSb290RWxlbWVudEluQ29udGFpbmVy
KGNvbnRhaW5lcik7XG5cdCAgICB2YXIgY29udGFpbmVySGFzUmVhY3RNYXJrdXAgPSByZWFjdFJv
b3RFbGVtZW50ICYmICEhaW50ZXJuYWxHZXRJRChyZWFjdFJvb3RFbGVtZW50KTtcblx0ICAgIHZh
ciBjb250YWluZXJIYXNOb25Sb290UmVhY3RDaGlsZCA9IGhhc05vblJvb3RSZWFjdENoaWxkKGNv
bnRhaW5lcik7XG5cdFxuXHQgICAgaWYgKGZhbHNlKSB7XG5cdCAgICAgIHByb2Nlc3MuZW52Lk5P
REVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKCFjb250YWluZXJIYXNOb25Sb290UmVh
Y3RDaGlsZCwgJ3JlbmRlciguLi4pOiBSZXBsYWNpbmcgUmVhY3QtcmVuZGVyZWQgY2hpbGRyZW4g
d2l0aCBhIG5ldyByb290ICcgKyAnY29tcG9uZW50LiBJZiB5b3UgaW50ZW5kZWQgdG8gdXBkYXRl
IHRoZSBjaGlsZHJlbiBvZiB0aGlzIG5vZGUsICcgKyAneW91IHNob3VsZCBpbnN0ZWFkIGhhdmUg
dGhlIGV4aXN0aW5nIGNoaWxkcmVuIHVwZGF0ZSB0aGVpciBzdGF0ZSAnICsgJ2FuZCByZW5kZXIg
dGhlIG5ldyBjb21wb25lbnRzIGluc3RlYWQgb2YgY2FsbGluZyBSZWFjdERPTS5yZW5kZXIuJykg
OiB2b2lkIDA7XG5cdFxuXHQgICAgICBpZiAoIWNvbnRhaW5lckhhc1JlYWN0TWFya3VwIHx8IHJl
YWN0Um9vdEVsZW1lbnQubmV4dFNpYmxpbmcpIHtcblx0ICAgICAgICB2YXIgcm9vdEVsZW1lbnRT
aWJsaW5nID0gcmVhY3RSb290RWxlbWVudDtcblx0ICAgICAgICB3aGlsZSAocm9vdEVsZW1lbnRT
aWJsaW5nKSB7XG5cdCAgICAgICAgICBpZiAoaW50ZXJuYWxHZXRJRChyb290RWxlbWVudFNpYmxp
bmcpKSB7XG5cdCAgICAgICAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlv
bicgPyB3YXJuaW5nKGZhbHNlLCAncmVuZGVyKCk6IFRhcmdldCBub2RlIGhhcyBtYXJrdXAgcmVu
ZGVyZWQgYnkgUmVhY3QsIGJ1dCB0aGVyZSAnICsgJ2FyZSB1bnJlbGF0ZWQgbm9kZXMgYXMgd2Vs
bC4gVGhpcyBpcyBtb3N0IGNvbW1vbmx5IGNhdXNlZCBieSAnICsgJ3doaXRlLXNwYWNlIGluc2Vy
dGVkIGFyb3VuZCBzZXJ2ZXItcmVuZGVyZWQgbWFya3VwLicpIDogdm9pZCAwO1xuXHQgICAgICAg
ICAgICBicmVhaztcblx0ICAgICAgICAgIH1cblx0ICAgICAgICAgIHJvb3RFbGVtZW50U2libGlu
ZyA9IHJvb3RFbGVtZW50U2libGluZy5uZXh0U2libGluZztcblx0ICAgICAgICB9XG5cdCAgICAg
IH1cblx0ICAgIH1cblx0XG5cdCAgICB2YXIgc2hvdWxkUmV1c2VNYXJrdXAgPSBjb250YWluZXJI
YXNSZWFjdE1hcmt1cCAmJiAhcHJldkNvbXBvbmVudCAmJiAhY29udGFpbmVySGFzTm9uUm9vdFJl
YWN0Q2hpbGQ7XG5cdCAgICB2YXIgY29tcG9uZW50ID0gUmVhY3RNb3VudC5fcmVuZGVyTmV3Um9v
dENvbXBvbmVudChuZXh0V3JhcHBlZEVsZW1lbnQsIGNvbnRhaW5lciwgc2hvdWxkUmV1c2VNYXJr
dXAsIG5leHRDb250ZXh0KS5fcmVuZGVyZWRDb21wb25lbnQuZ2V0UHVibGljSW5zdGFuY2UoKTtc
blx0ICAgIGlmIChjYWxsYmFjaykge1xuXHQgICAgICBjYWxsYmFjay5jYWxsKGNvbXBvbmVudCk7
XG5cdCAgICB9XG5cdCAgICByZXR1cm4gY29tcG9uZW50O1xuXHQgIH0sXG5cdFxuXHQgIC8qKlxu
XHQgICAqIFJlbmRlcnMgYSBSZWFjdCBjb21wb25lbnQgaW50byB0aGUgRE9NIGluIHRoZSBzdXBw
bGllZCBgY29udGFpbmVyYC5cblx0ICAgKiBTZWUgaHR0cHM6Ly9mYWNlYm9vay5naXRodWIuaW8v
cmVhY3QvZG9jcy90b3AtbGV2ZWwtYXBpLmh0bWwjcmVhY3Rkb20ucmVuZGVyXG5cdCAgICpcblx0
ICAgKiBJZiB0aGUgUmVhY3QgY29tcG9uZW50IHdhcyBwcmV2aW91c2x5IHJlbmRlcmVkIGludG8g
YGNvbnRhaW5lcmAsIHRoaXMgd2lsbFxuXHQgICAqIHBlcmZvcm0gYW4gdXBkYXRlIG9uIGl0IGFu
ZCBvbmx5IG11dGF0ZSB0aGUgRE9NIGFzIG5lY2Vzc2FyeSB0byByZWZsZWN0IHRoZVxuXHQgICAq
IGxhdGVzdCBSZWFjdCBjb21wb25lbnQuXG5cdCAgICpcblx0ICAgKiBAcGFyYW0ge1JlYWN0RWxl
bWVudH0gbmV4dEVsZW1lbnQgQ29tcG9uZW50IGVsZW1lbnQgdG8gcmVuZGVyLlxuXHQgICAqIEBw
YXJhbSB7RE9NRWxlbWVudH0gY29udGFpbmVyIERPTSBlbGVtZW50IHRvIHJlbmRlciBpbnRvLlxu
XHQgICAqIEBwYXJhbSB7P2Z1bmN0aW9ufSBjYWxsYmFjayBmdW5jdGlvbiB0cmlnZ2VyZWQgb24g
Y29tcGxldGlvblxuXHQgICAqIEByZXR1cm4ge1JlYWN0Q29tcG9uZW50fSBDb21wb25lbnQgaW5z
dGFuY2UgcmVuZGVyZWQgaW4gYGNvbnRhaW5lcmAuXG5cdCAgICovXG5cdCAgcmVuZGVyOiBmdW5j
dGlvbiAobmV4dEVsZW1lbnQsIGNvbnRhaW5lciwgY2FsbGJhY2spIHtcblx0ICAgIHJldHVybiBS
ZWFjdE1vdW50Ll9yZW5kZXJTdWJ0cmVlSW50b0NvbnRhaW5lcihudWxsLCBuZXh0RWxlbWVudCwg
Y29udGFpbmVyLCBjYWxsYmFjayk7XG5cdCAgfSxcblx0XG5cdCAgLyoqXG5cdCAgICogVW5tb3Vu
dHMgYW5kIGRlc3Ryb3lzIHRoZSBSZWFjdCBjb21wb25lbnQgcmVuZGVyZWQgaW4gdGhlIGBjb250
YWluZXJgLlxuXHQgICAqIFNlZSBodHRwczovL2ZhY2Vib29rLmdpdGh1Yi5pby9yZWFjdC9kb2Nz
L3RvcC1sZXZlbC1hcGkuaHRtbCNyZWFjdGRvbS51bm1vdW50Y29tcG9uZW50YXRub2RlXG5cdCAg
ICpcblx0ICAgKiBAcGFyYW0ge0RPTUVsZW1lbnR9IGNvbnRhaW5lciBET00gZWxlbWVudCBjb250
YWluaW5nIGEgUmVhY3QgY29tcG9uZW50LlxuXHQgICAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUg
aWYgYSBjb21wb25lbnQgd2FzIGZvdW5kIGluIGFuZCB1bm1vdW50ZWQgZnJvbVxuXHQgICAqICAg
ICAgICAgICAgICAgICAgIGBjb250YWluZXJgXG5cdCAgICovXG5cdCAgdW5tb3VudENvbXBvbmVu
dEF0Tm9kZTogZnVuY3Rpb24gKGNvbnRhaW5lcikge1xuXHQgICAgLy8gVmFyaW91cyBwYXJ0cyBv
ZiBvdXIgY29kZSAoc3VjaCBhcyBSZWFjdENvbXBvc2l0ZUNvbXBvbmVudCdzXG5cdCAgICAvLyBf
cmVuZGVyVmFsaWRhdGVkQ29tcG9uZW50KSBhc3N1bWUgdGhhdCBjYWxscyB0byByZW5kZXIgYXJl
bid0IG5lc3RlZDtcblx0ICAgIC8vIHZlcmlmeSB0aGF0IHRoYXQncyB0aGUgY2FzZS4gKFN0cmlj
dGx5IHNwZWFraW5nLCB1bm1vdW50aW5nIHdvbid0IGNhdXNlIGFcblx0ICAgIC8vIHJlbmRlciBi
dXQgd2Ugc3RpbGwgZG9uJ3QgZXhwZWN0IHRvIGJlIGluIGEgcmVuZGVyIGNhbGwgaGVyZS4pXG5c
dCAgICAgZmFsc2UgPyB3YXJuaW5nKFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQgPT0gbnVsbCwg
J3VubW91bnRDb21wb25lbnRBdE5vZGUoKTogUmVuZGVyIG1ldGhvZHMgc2hvdWxkIGJlIGEgcHVy
ZSBmdW5jdGlvbiAnICsgJ29mIHByb3BzIGFuZCBzdGF0ZTsgdHJpZ2dlcmluZyBuZXN0ZWQgY29t
cG9uZW50IHVwZGF0ZXMgZnJvbSByZW5kZXIgJyArICdpcyBub3QgYWxsb3dlZC4gSWYgbmVjZXNz
YXJ5LCB0cmlnZ2VyIG5lc3RlZCB1cGRhdGVzIGluICcgKyAnY29tcG9uZW50RGlkVXBkYXRlLiBD
aGVjayB0aGUgcmVuZGVyIG1ldGhvZCBvZiAlcy4nLCBSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50
ICYmIFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQuZ2V0TmFtZSgpIHx8ICdSZWFjdENvbXBvc2l0
ZUNvbXBvbmVudCcpIDogdm9pZCAwO1xuXHRcblx0ICAgICFpc1ZhbGlkQ29udGFpbmVyKGNvbnRh
aW5lcikgPyAgZmFsc2UgPyBpbnZhcmlhbnQoZmFsc2UsICd1bm1vdW50Q29tcG9uZW50QXROb2Rl
KC4uLik6IFRhcmdldCBjb250YWluZXIgaXMgbm90IGEgRE9NIGVsZW1lbnQuJykgOiBfcHJvZElu
dmFyaWFudCgnNDAnKSA6IHZvaWQgMDtcblx0XG5cdCAgICBpZiAoZmFsc2UpIHtcblx0ICAgICAg
cHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoIW5vZGVJc1Jl
bmRlcmVkQnlPdGhlckluc3RhbmNlKGNvbnRhaW5lciksIFwidW5tb3VudENvbXBvbmVudEF0Tm9k
ZSgpOiBUaGUgbm9kZSB5b3UncmUgYXR0ZW1wdGluZyB0byB1bm1vdW50IFwiICsgJ3dhcyByZW5k
ZXJlZCBieSBhbm90aGVyIGNvcHkgb2YgUmVhY3QuJykgOiB2b2lkIDA7XG5cdCAgICB9XG5cdFxu
XHQgICAgdmFyIHByZXZDb21wb25lbnQgPSBnZXRUb3BMZXZlbFdyYXBwZXJJbkNvbnRhaW5lcihj
b250YWluZXIpO1xuXHQgICAgaWYgKCFwcmV2Q29tcG9uZW50KSB7XG5cdCAgICAgIC8vIENoZWNr
IGlmIHRoZSBub2RlIGJlaW5nIHVubW91bnRlZCB3YXMgcmVuZGVyZWQgYnkgUmVhY3QsIGJ1dCBp
c24ndCBhXG5cdCAgICAgIC8vIHJvb3Qgbm9kZS5cblx0ICAgICAgdmFyIGNvbnRhaW5lckhhc05v
blJvb3RSZWFjdENoaWxkID0gaGFzTm9uUm9vdFJlYWN0Q2hpbGQoY29udGFpbmVyKTtcblx0XG5c
dCAgICAgIC8vIENoZWNrIGlmIHRoZSBjb250YWluZXIgaXRzZWxmIGlzIGEgUmVhY3Qgcm9vdCBu
b2RlLlxuXHQgICAgICB2YXIgaXNDb250YWluZXJSZWFjdFJvb3QgPSBjb250YWluZXIubm9kZVR5
cGUgPT09IDEgJiYgY29udGFpbmVyLmhhc0F0dHJpYnV0ZShST09UX0FUVFJfTkFNRSk7XG5cdFxu
XHQgICAgICBpZiAoZmFsc2UpIHtcblx0ICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0g
J3Byb2R1Y3Rpb24nID8gd2FybmluZyghY29udGFpbmVySGFzTm9uUm9vdFJlYWN0Q2hpbGQsIFwi
dW5tb3VudENvbXBvbmVudEF0Tm9kZSgpOiBUaGUgbm9kZSB5b3UncmUgYXR0ZW1wdGluZyB0byB1
bm1vdW50IFwiICsgJ3dhcyByZW5kZXJlZCBieSBSZWFjdCBhbmQgaXMgbm90IGEgdG9wLWxldmVs
IGNvbnRhaW5lci4gJXMnLCBpc0NvbnRhaW5lclJlYWN0Um9vdCA/ICdZb3UgbWF5IGhhdmUgYWNj
aWRlbnRhbGx5IHBhc3NlZCBpbiBhIFJlYWN0IHJvb3Qgbm9kZSBpbnN0ZWFkICcgKyAnb2YgaXRz
IGNvbnRhaW5lci4nIDogJ0luc3RlYWQsIGhhdmUgdGhlIHBhcmVudCBjb21wb25lbnQgdXBkYXRl
IGl0cyBzdGF0ZSBhbmQgJyArICdyZXJlbmRlciBpbiBvcmRlciB0byByZW1vdmUgdGhpcyBjb21w
b25lbnQuJykgOiB2b2lkIDA7XG5cdCAgICAgIH1cblx0XG5cdCAgICAgIHJldHVybiBmYWxzZTtc
blx0ICAgIH1cblx0ICAgIGRlbGV0ZSBpbnN0YW5jZXNCeVJlYWN0Um9vdElEW3ByZXZDb21wb25l
bnQuX2luc3RhbmNlLnJvb3RJRF07XG5cdCAgICBSZWFjdFVwZGF0ZXMuYmF0Y2hlZFVwZGF0ZXMo
dW5tb3VudENvbXBvbmVudEZyb21Ob2RlLCBwcmV2Q29tcG9uZW50LCBjb250YWluZXIsIGZhbHNl
KTtcblx0ICAgIHJldHVybiB0cnVlO1xuXHQgIH0sXG5cdFxuXHQgIF9tb3VudEltYWdlSW50b05v
ZGU6IGZ1bmN0aW9uIChtYXJrdXAsIGNvbnRhaW5lciwgaW5zdGFuY2UsIHNob3VsZFJldXNlTWFy
a3VwLCB0cmFuc2FjdGlvbikge1xuXHQgICAgIWlzVmFsaWRDb250YWluZXIoY29udGFpbmVyKSA/
ICBmYWxzZSA/IGludmFyaWFudChmYWxzZSwgJ21vdW50Q29tcG9uZW50SW50b05vZGUoLi4uKTog
VGFyZ2V0IGNvbnRhaW5lciBpcyBub3QgdmFsaWQuJykgOiBfcHJvZEludmFyaWFudCgnNDEnKSA6
IHZvaWQgMDtcblx0XG5cdCAgICBpZiAoc2hvdWxkUmV1c2VNYXJrdXApIHtcblx0ICAgICAgdmFy
IHJvb3RFbGVtZW50ID0gZ2V0UmVhY3RSb290RWxlbWVudEluQ29udGFpbmVyKGNvbnRhaW5lcik7
XG5cdCAgICAgIGlmIChSZWFjdE1hcmt1cENoZWNrc3VtLmNhblJldXNlTWFya3VwKG1hcmt1cCwg
cm9vdEVsZW1lbnQpKSB7XG5cdCAgICAgICAgUmVhY3RET01Db21wb25lbnRUcmVlLnByZWNhY2hl
Tm9kZShpbnN0YW5jZSwgcm9vdEVsZW1lbnQpO1xuXHQgICAgICAgIHJldHVybjtcblx0ICAgICAg
fSBlbHNlIHtcblx0ICAgICAgICB2YXIgY2hlY2tzdW0gPSByb290RWxlbWVudC5nZXRBdHRyaWJ1
dGUoUmVhY3RNYXJrdXBDaGVja3N1bS5DSEVDS1NVTV9BVFRSX05BTUUpO1xuXHQgICAgICAgIHJv
b3RFbGVtZW50LnJlbW92ZUF0dHJpYnV0ZShSZWFjdE1hcmt1cENoZWNrc3VtLkNIRUNLU1VNX0FU
VFJfTkFNRSk7XG5cdFxuXHQgICAgICAgIHZhciByb290TWFya3VwID0gcm9vdEVsZW1lbnQub3V0
ZXJIVE1MO1xuXHQgICAgICAgIHJvb3RFbGVtZW50LnNldEF0dHJpYnV0ZShSZWFjdE1hcmt1cENo
ZWNrc3VtLkNIRUNLU1VNX0FUVFJfTkFNRSwgY2hlY2tzdW0pO1xuXHRcblx0ICAgICAgICB2YXIg
bm9ybWFsaXplZE1hcmt1cCA9IG1hcmt1cDtcblx0ICAgICAgICBpZiAoZmFsc2UpIHtcblx0ICAg
ICAgICAgIC8vIGJlY2F1c2Ugcm9vdE1hcmt1cCBpcyByZXRyaWV2ZWQgZnJvbSB0aGUgRE9NLCB2
YXJpb3VzIG5vcm1hbGl6YXRpb25zXG5cdCAgICAgICAgICAvLyB3aWxsIGhhdmUgb2NjdXJyZWQg
d2hpY2ggd2lsbCBub3QgYmUgcHJlc2VudCBpbiBgbWFya3VwYC4gSGVyZSxcblx0ICAgICAgICAg
IC8vIGluc2VydCBtYXJrdXAgaW50byBhIDxkaXY+IG9yIDxpZnJhbWU+IGRlcGVuZGluZyBvbiB0
aGUgY29udGFpbmVyXG5cdCAgICAgICAgICAvLyB0eXBlIHRvIHBlcmZvcm0gdGhlIHNhbWUgbm9y
bWFsaXphdGlvbnMgYmVmb3JlIGNvbXBhcmluZy5cblx0ICAgICAgICAgIHZhciBub3JtYWxpemVy
O1xuXHQgICAgICAgICAgaWYgKGNvbnRhaW5lci5ub2RlVHlwZSA9PT0gRUxFTUVOVF9OT0RFX1RZ
UEUpIHtcblx0ICAgICAgICAgICAgbm9ybWFsaXplciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
J2RpdicpO1xuXHQgICAgICAgICAgICBub3JtYWxpemVyLmlubmVySFRNTCA9IG1hcmt1cDtcblx0
ICAgICAgICAgICAgbm9ybWFsaXplZE1hcmt1cCA9IG5vcm1hbGl6ZXIuaW5uZXJIVE1MO1xuXHQg
ICAgICAgICAgfSBlbHNlIHtcblx0ICAgICAgICAgICAgbm9ybWFsaXplciA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoJ2lmcmFtZScpO1xuXHQgICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVu
ZENoaWxkKG5vcm1hbGl6ZXIpO1xuXHQgICAgICAgICAgICBub3JtYWxpemVyLmNvbnRlbnREb2N1
bWVudC53cml0ZShtYXJrdXApO1xuXHQgICAgICAgICAgICBub3JtYWxpemVkTWFya3VwID0gbm9y
bWFsaXplci5jb250ZW50RG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50Lm91dGVySFRNTDtcblx0ICAg
ICAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChub3JtYWxpemVyKTtcblx0ICAgICAg
ICAgIH1cblx0ICAgICAgICB9XG5cdFxuXHQgICAgICAgIHZhciBkaWZmSW5kZXggPSBmaXJzdERp
ZmZlcmVuY2VJbmRleChub3JtYWxpemVkTWFya3VwLCByb290TWFya3VwKTtcblx0ICAgICAgICB2
YXIgZGlmZmVyZW5jZSA9ICcgKGNsaWVudCkgJyArIG5vcm1hbGl6ZWRNYXJrdXAuc3Vic3RyaW5n
KGRpZmZJbmRleCAtIDIwLCBkaWZmSW5kZXggKyAyMCkgKyAnXFxuIChzZXJ2ZXIpICcgKyByb290
TWFya3VwLnN1YnN0cmluZyhkaWZmSW5kZXggLSAyMCwgZGlmZkluZGV4ICsgMjApO1xuXHRcblx0
ICAgICAgICAhKGNvbnRhaW5lci5ub2RlVHlwZSAhPT0gRE9DX05PREVfVFlQRSkgPyAgZmFsc2Ug
PyBpbnZhcmlhbnQoZmFsc2UsICdZb3VcXCdyZSB0cnlpbmcgdG8gcmVuZGVyIGEgY29tcG9uZW50
IHRvIHRoZSBkb2N1bWVudCB1c2luZyBzZXJ2ZXIgcmVuZGVyaW5nIGJ1dCB0aGUgY2hlY2tzdW0g
d2FzIGludmFsaWQuIFRoaXMgdXN1YWxseSBtZWFucyB5b3UgcmVuZGVyZWQgYSBkaWZmZXJlbnQg
Y29tcG9uZW50IHR5cGUgb3IgcHJvcHMgb24gdGhlIGNsaWVudCBmcm9tIHRoZSBvbmUgb24gdGhl
IHNlcnZlciwgb3IgeW91ciByZW5kZXIoKSBtZXRob2RzIGFyZSBpbXB1cmUuIFJlYWN0IGNhbm5v
dCBoYW5kbGUgdGhpcyBjYXNlIGR1ZSB0byBjcm9zcy1icm93c2VyIHF1aXJrcyBieSByZW5kZXJp
bmcgYXQgdGhlIGRvY3VtZW50IHJvb3QuIFlvdSBzaG91bGQgbG9vayBmb3IgZW52aXJvbm1lbnQg
ZGVwZW5kZW50IGNvZGUgaW4geW91ciBjb21wb25lbnRzIGFuZCBlbnN1cmUgdGhlIHByb3BzIGFy
ZSB0aGUgc2FtZSBjbGllbnQgYW5kIHNlcnZlciBzaWRlOlxcbiVzJywgZGlmZmVyZW5jZSkgOiBf
cHJvZEludmFyaWFudCgnNDInLCBkaWZmZXJlbmNlKSA6IHZvaWQgMDtcblx0XG5cdCAgICAgICAg
aWYgKGZhbHNlKSB7XG5cdCAgICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1
Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ1JlYWN0IGF0dGVtcHRlZCB0byByZXVzZSBtYXJrdXAg
aW4gYSBjb250YWluZXIgYnV0IHRoZSAnICsgJ2NoZWNrc3VtIHdhcyBpbnZhbGlkLiBUaGlzIGdl
bmVyYWxseSBtZWFucyB0aGF0IHlvdSBhcmUgJyArICd1c2luZyBzZXJ2ZXIgcmVuZGVyaW5nIGFu
ZCB0aGUgbWFya3VwIGdlbmVyYXRlZCBvbiB0aGUgJyArICdzZXJ2ZXIgd2FzIG5vdCB3aGF0IHRo
ZSBjbGllbnQgd2FzIGV4cGVjdGluZy4gUmVhY3QgaW5qZWN0ZWQgJyArICduZXcgbWFya3VwIHRv
IGNvbXBlbnNhdGUgd2hpY2ggd29ya3MgYnV0IHlvdSBoYXZlIGxvc3QgbWFueSAnICsgJ29mIHRo
ZSBiZW5lZml0cyBvZiBzZXJ2ZXIgcmVuZGVyaW5nLiBJbnN0ZWFkLCBmaWd1cmUgb3V0ICcgKyAn
d2h5IHRoZSBtYXJrdXAgYmVpbmcgZ2VuZXJhdGVkIGlzIGRpZmZlcmVudCBvbiB0aGUgY2xpZW50
ICcgKyAnb3Igc2VydmVyOlxcbiVzJywgZGlmZmVyZW5jZSkgOiB2b2lkIDA7XG5cdCAgICAgICAg
fVxuXHQgICAgICB9XG5cdCAgICB9XG5cdFxuXHQgICAgIShjb250YWluZXIubm9kZVR5cGUgIT09
IERPQ19OT0RFX1RZUEUpID8gIGZhbHNlID8gaW52YXJpYW50KGZhbHNlLCAnWW91XFwncmUgdHJ5
aW5nIHRvIHJlbmRlciBhIGNvbXBvbmVudCB0byB0aGUgZG9jdW1lbnQgYnV0IHlvdSBkaWRuXFwn
dCB1c2Ugc2VydmVyIHJlbmRlcmluZy4gV2UgY2FuXFwndCBkbyB0aGlzIHdpdGhvdXQgdXNpbmcg
c2VydmVyIHJlbmRlcmluZyBkdWUgdG8gY3Jvc3MtYnJvd3NlciBxdWlya3MuIFNlZSBSZWFjdERP
TVNlcnZlci5yZW5kZXJUb1N0cmluZygpIGZvciBzZXJ2ZXIgcmVuZGVyaW5nLicpIDogX3Byb2RJ
bnZhcmlhbnQoJzQzJykgOiB2b2lkIDA7XG5cdFxuXHQgICAgaWYgKHRyYW5zYWN0aW9uLnVzZUNy
ZWF0ZUVsZW1lbnQpIHtcblx0ICAgICAgd2hpbGUgKGNvbnRhaW5lci5sYXN0Q2hpbGQpIHtcblx0
ICAgICAgICBjb250YWluZXIucmVtb3ZlQ2hpbGQoY29udGFpbmVyLmxhc3RDaGlsZCk7XG5cdCAg
ICAgIH1cblx0ICAgICAgRE9NTGF6eVRyZWUuaW5zZXJ0VHJlZUJlZm9yZShjb250YWluZXIsIG1h
cmt1cCwgbnVsbCk7XG5cdCAgICB9IGVsc2Uge1xuXHQgICAgICBzZXRJbm5lckhUTUwoY29udGFp
bmVyLCBtYXJrdXApO1xuXHQgICAgICBSZWFjdERPTUNvbXBvbmVudFRyZWUucHJlY2FjaGVOb2Rl
KGluc3RhbmNlLCBjb250YWluZXIuZmlyc3RDaGlsZCk7XG5cdCAgICB9XG5cdFxuXHQgICAgaWYg
KGZhbHNlKSB7XG5cdCAgICAgIHZhciBob3N0Tm9kZSA9IFJlYWN0RE9NQ29tcG9uZW50VHJlZS5n
ZXRJbnN0YW5jZUZyb21Ob2RlKGNvbnRhaW5lci5maXJzdENoaWxkKTtcblx0ICAgICAgaWYgKGhv
c3ROb2RlLl9kZWJ1Z0lEICE9PSAwKSB7XG5cdCAgICAgICAgUmVhY3RJbnN0cnVtZW50YXRpb24u
ZGVidWdUb29sLm9uSG9zdE9wZXJhdGlvbih7XG5cdCAgICAgICAgICBpbnN0YW5jZUlEOiBob3N0
Tm9kZS5fZGVidWdJRCxcblx0ICAgICAgICAgIHR5cGU6ICdtb3VudCcsXG5cdCAgICAgICAgICBw
YXlsb2FkOiBtYXJrdXAudG9TdHJpbmcoKVxuXHQgICAgICAgIH0pO1xuXHQgICAgICB9XG5cdCAg
ICB9XG5cdCAgfVxuXHR9O1xuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBSZWFjdE1vdW50O1xuXG4v
KioqLyB9LFxuLyogNjggKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJw
YWNrX3JlcXVpcmVfXykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBG
YWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlz
IHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3Vu
ZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlz
IHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMg
Y2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5Llxu
XHQgKlxuXHQgKiBcblx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHR2YXIgX3Byb2RJ
bnZhcmlhbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMpO1xuXHRcblx0dmFyIFJlYWN0ID0gX193
ZWJwYWNrX3JlcXVpcmVfXygxNyk7XG5cdFxuXHR2YXIgaW52YXJpYW50ID0gX193ZWJwYWNrX3Jl
cXVpcmVfXygxKTtcblx0XG5cdHZhciBSZWFjdE5vZGVUeXBlcyA9IHtcblx0ICBIT1NUOiAwLFxu
XHQgIENPTVBPU0lURTogMSxcblx0ICBFTVBUWTogMixcblx0XG5cdCAgZ2V0VHlwZTogZnVuY3Rp
b24gKG5vZGUpIHtcblx0ICAgIGlmIChub2RlID09PSBudWxsIHx8IG5vZGUgPT09IGZhbHNlKSB7
XG5cdCAgICAgIHJldHVybiBSZWFjdE5vZGVUeXBlcy5FTVBUWTtcblx0ICAgIH0gZWxzZSBpZiAo
UmVhY3QuaXNWYWxpZEVsZW1lbnQobm9kZSkpIHtcblx0ICAgICAgaWYgKHR5cGVvZiBub2RlLnR5
cGUgPT09ICdmdW5jdGlvbicpIHtcblx0ICAgICAgICByZXR1cm4gUmVhY3ROb2RlVHlwZXMuQ09N
UE9TSVRFO1xuXHQgICAgICB9IGVsc2Uge1xuXHQgICAgICAgIHJldHVybiBSZWFjdE5vZGVUeXBl
cy5IT1NUO1xuXHQgICAgICB9XG5cdCAgICB9XG5cdCAgICAgdHJ1ZSA/ICBmYWxzZSA/IGludmFy
aWFudChmYWxzZSwgJ1VuZXhwZWN0ZWQgbm9kZTogJXMnLCBub2RlKSA6IF9wcm9kSW52YXJpYW50
KCcyNicsIG5vZGUpIDogdm9pZCAwO1xuXHQgIH1cblx0fTtcblx0XG5cdG1vZHVsZS5leHBvcnRz
ID0gUmVhY3ROb2RlVHlwZXM7XG5cbi8qKiovIH0sXG4vKiA2OSAqL1xuLyoqKi8gZnVuY3Rpb24o
bW9kdWxlLCBleHBvcnRzKSB7XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQs
IEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRo
aXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZv
dW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRo
aXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0
cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3Rvcnku
XG5cdCAqXG5cdCAqL1xuXHRcblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0dmFyIFZpZXdwb3J0TWV0
cmljcyA9IHtcblx0ICBjdXJyZW50U2Nyb2xsTGVmdDogMCxcblx0XG5cdCAgY3VycmVudFNjcm9s
bFRvcDogMCxcblx0XG5cdCAgcmVmcmVzaFNjcm9sbFZhbHVlczogZnVuY3Rpb24gKHNjcm9sbFBv
c2l0aW9uKSB7XG5cdCAgICBWaWV3cG9ydE1ldHJpY3MuY3VycmVudFNjcm9sbExlZnQgPSBzY3Jv
bGxQb3NpdGlvbi54O1xuXHQgICAgVmlld3BvcnRNZXRyaWNzLmN1cnJlbnRTY3JvbGxUb3AgPSBz
Y3JvbGxQb3NpdGlvbi55O1xuXHQgIH1cblx0fTtcblx0XG5cdG1vZHVsZS5leHBvcnRzID0gVmll
d3BvcnRNZXRyaWNzO1xuXG4vKioqLyB9LFxuLyogNzAgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVs
ZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmln
aHQgMjAxNC1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVk
LlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qt
c3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290
IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAq
IG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhl
IHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKiBcblx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7
XG5cdFxuXHR2YXIgX3Byb2RJbnZhcmlhbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMpO1xuXHRc
blx0dmFyIGludmFyaWFudCA9IF9fd2VicGFja19yZXF1aXJlX18oMSk7XG5cdFxuXHQvKipcblx0
ICogQWNjdW11bGF0ZXMgaXRlbXMgdGhhdCBtdXN0IG5vdCBiZSBudWxsIG9yIHVuZGVmaW5lZCBp
bnRvIHRoZSBmaXJzdCBvbmUuIFRoaXNcblx0ICogaXMgdXNlZCB0byBjb25zZXJ2ZSBtZW1vcnkg
YnkgYXZvaWRpbmcgYXJyYXkgYWxsb2NhdGlvbnMsIGFuZCB0aHVzIHNhY3JpZmljZXNcblx0ICog
QVBJIGNsZWFubmVzcy4gU2luY2UgYGN1cnJlbnRgIGNhbiBiZSBudWxsIGJlZm9yZSBiZWluZyBw
YXNzZWQgaW4gYW5kIG5vdFxuXHQgKiBudWxsIGFmdGVyIHRoaXMgZnVuY3Rpb24sIG1ha2Ugc3Vy
ZSB0byBhc3NpZ24gaXQgYmFjayB0byBgY3VycmVudGA6XG5cdCAqXG5cdCAqIGBhID0gYWNjdW11
bGF0ZUludG8oYSwgYik7YFxuXHQgKlxuXHQgKiBUaGlzIEFQSSBzaG91bGQgYmUgc3BhcmluZ2x5
IHVzZWQuIFRyeSBgYWNjdW11bGF0ZWAgZm9yIHNvbWV0aGluZyBjbGVhbmVyLlxuXHQgKlxuXHQg
KiBAcmV0dXJuIHsqfGFycmF5PCo+fSBBbiBhY2N1bXVsYXRpb24gb2YgaXRlbXMuXG5cdCAqL1xu
XHRcblx0ZnVuY3Rpb24gYWNjdW11bGF0ZUludG8oY3VycmVudCwgbmV4dCkge1xuXHQgICEobmV4
dCAhPSBudWxsKSA/ICBmYWxzZSA/IGludmFyaWFudChmYWxzZSwgJ2FjY3VtdWxhdGVJbnRvKC4u
Lik6IEFjY3VtdWxhdGVkIGl0ZW1zIG11c3Qgbm90IGJlIG51bGwgb3IgdW5kZWZpbmVkLicpIDog
X3Byb2RJbnZhcmlhbnQoJzMwJykgOiB2b2lkIDA7XG5cdFxuXHQgIGlmIChjdXJyZW50ID09IG51
bGwpIHtcblx0ICAgIHJldHVybiBuZXh0O1xuXHQgIH1cblx0XG5cdCAgLy8gQm90aCBhcmUgbm90
IGVtcHR5LiBXYXJuaW5nOiBOZXZlciBjYWxsIHguY29uY2F0KHkpIHdoZW4geW91IGFyZSBub3Rc
blx0ICAvLyBjZXJ0YWluIHRoYXQgeCBpcyBhbiBBcnJheSAoeCBjb3VsZCBiZSBhIHN0cmluZyB3
aXRoIGNvbmNhdCBtZXRob2QpLlxuXHQgIGlmIChBcnJheS5pc0FycmF5KGN1cnJlbnQpKSB7XG5c
dCAgICBpZiAoQXJyYXkuaXNBcnJheShuZXh0KSkge1xuXHQgICAgICBjdXJyZW50LnB1c2guYXBw
bHkoY3VycmVudCwgbmV4dCk7XG5cdCAgICAgIHJldHVybiBjdXJyZW50O1xuXHQgICAgfVxuXHQg
ICAgY3VycmVudC5wdXNoKG5leHQpO1xuXHQgICAgcmV0dXJuIGN1cnJlbnQ7XG5cdCAgfVxuXHRc
blx0ICBpZiAoQXJyYXkuaXNBcnJheShuZXh0KSkge1xuXHQgICAgLy8gQSBiaXQgdG9vIGRhbmdl
cm91cyB0byBtdXRhdGUgYG5leHRgLlxuXHQgICAgcmV0dXJuIFtjdXJyZW50XS5jb25jYXQobmV4
dCk7XG5cdCAgfVxuXHRcblx0ICByZXR1cm4gW2N1cnJlbnQsIG5leHRdO1xuXHR9XG5cdFxuXHRt
b2R1bGUuZXhwb3J0cyA9IGFjY3VtdWxhdGVJbnRvO1xuXG4vKioqLyB9LFxuLyogNzEgKi9cbi8q
KiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQg
MjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxu
XHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5
bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRp
cmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9m
IHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNh
bWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKiBcblx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5c
dFxuXHQvKipcblx0ICogQHBhcmFtIHthcnJheX0gYXJyIGFuIFwiYWNjdW11bGF0aW9uXCIgb2Yg
aXRlbXMgd2hpY2ggaXMgZWl0aGVyIGFuIEFycmF5IG9yXG5cdCAqIGEgc2luZ2xlIGl0ZW0uIFVz
ZWZ1bCB3aGVuIHBhaXJlZCB3aXRoIHRoZSBgYWNjdW11bGF0ZWAgbW9kdWxlLiBUaGlzIGlzIGFc
blx0ICogc2ltcGxlIHV0aWxpdHkgdGhhdCBhbGxvd3MgdXMgdG8gcmVhc29uIGFib3V0IGEgY29s
bGVjdGlvbiBvZiBpdGVtcywgYnV0XG5cdCAqIGhhbmRsaW5nIHRoZSBjYXNlIHdoZW4gdGhlcmUg
aXMgZXhhY3RseSBvbmUgaXRlbSAoYW5kIHdlIGRvIG5vdCBuZWVkIHRvXG5cdCAqIGFsbG9jYXRl
IGFuIGFycmF5KS5cblx0ICovXG5cdFxuXHRmdW5jdGlvbiBmb3JFYWNoQWNjdW11bGF0ZWQoYXJy
LCBjYiwgc2NvcGUpIHtcblx0ICBpZiAoQXJyYXkuaXNBcnJheShhcnIpKSB7XG5cdCAgICBhcnIu
Zm9yRWFjaChjYiwgc2NvcGUpO1xuXHQgIH0gZWxzZSBpZiAoYXJyKSB7XG5cdCAgICBjYi5jYWxs
KHNjb3BlLCBhcnIpO1xuXHQgIH1cblx0fVxuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBmb3JFYWNo
QWNjdW11bGF0ZWQ7XG5cbi8qKiovIH0sXG4vKiA3MiAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxl
LCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0LyoqXG5cdCAqIENvcHlyaWdo
dCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQu
XG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1z
dHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qg
ZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICog
b2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUg
c2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqL1xuXHRcblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0
dmFyIFJlYWN0Tm9kZVR5cGVzID0gX193ZWJwYWNrX3JlcXVpcmVfXyg2OCk7XG5cdFxuXHRmdW5j
dGlvbiBnZXRIb3N0Q29tcG9uZW50RnJvbUNvbXBvc2l0ZShpbnN0KSB7XG5cdCAgdmFyIHR5cGU7
XG5cdFxuXHQgIHdoaWxlICgodHlwZSA9IGluc3QuX3JlbmRlcmVkTm9kZVR5cGUpID09PSBSZWFj
dE5vZGVUeXBlcy5DT01QT1NJVEUpIHtcblx0ICAgIGluc3QgPSBpbnN0Ll9yZW5kZXJlZENvbXBv
bmVudDtcblx0ICB9XG5cdFxuXHQgIGlmICh0eXBlID09PSBSZWFjdE5vZGVUeXBlcy5IT1NUKSB7
XG5cdCAgICByZXR1cm4gaW5zdC5fcmVuZGVyZWRDb21wb25lbnQ7XG5cdCAgfSBlbHNlIGlmICh0
eXBlID09PSBSZWFjdE5vZGVUeXBlcy5FTVBUWSkge1xuXHQgICAgcmV0dXJuIG51bGw7XG5cdCAg
fVxuXHR9XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IGdldEhvc3RDb21wb25lbnRGcm9tQ29tcG9z
aXRlO1xuXG4vKioqLyB9LFxuLyogNzMgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0
cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxMy1w
cmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxu
XHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGlj
ZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9y
eSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVu
dCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGly
ZWN0b3J5LlxuXHQgKlxuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdHZhciBFeGVj
dXRpb25FbnZpcm9ubWVudCA9IF9fd2VicGFja19yZXF1aXJlX18oNik7XG5cdFxuXHR2YXIgY29u
dGVudEtleSA9IG51bGw7XG5cdFxuXHQvKipcblx0ICogR2V0cyB0aGUga2V5IHVzZWQgdG8gYWNj
ZXNzIHRleHQgY29udGVudCBvbiBhIERPTSBub2RlLlxuXHQgKlxuXHQgKiBAcmV0dXJuIHs/c3Ry
aW5nfSBLZXkgdXNlZCB0byBhY2Nlc3MgdGV4dCBjb250ZW50LlxuXHQgKiBAaW50ZXJuYWxcblx0
ICovXG5cdGZ1bmN0aW9uIGdldFRleHRDb250ZW50QWNjZXNzb3IoKSB7XG5cdCAgaWYgKCFjb250
ZW50S2V5ICYmIEV4ZWN1dGlvbkVudmlyb25tZW50LmNhblVzZURPTSkge1xuXHQgICAgLy8gUHJl
ZmVyIHRleHRDb250ZW50IHRvIGlubmVyVGV4dCBiZWNhdXNlIG1hbnkgYnJvd3NlcnMgc3VwcG9y
dCBib3RoIGJ1dFxuXHQgICAgLy8gU1ZHIDx0ZXh0PiBlbGVtZW50cyBkb24ndCBzdXBwb3J0IGlu
bmVyVGV4dCBldmVuIHdoZW4gPGRpdj4gZG9lcy5cblx0ICAgIGNvbnRlbnRLZXkgPSAndGV4dENv
bnRlbnQnIGluIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCA/ICd0ZXh0Q29udGVudCcgOiAnaW5u
ZXJUZXh0Jztcblx0ICB9XG5cdCAgcmV0dXJuIGNvbnRlbnRLZXk7XG5cdH1cblx0XG5cdG1vZHVs
ZS5leHBvcnRzID0gZ2V0VGV4dENvbnRlbnRBY2Nlc3NvcjtcblxuLyoqKi8gfSxcbi8qIDc0ICov
XG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtc
blxuXHQvKipcblx0ICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0
ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBs
aWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJ
Q0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4g
YWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0
aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpcblx0ICovXG5cdFxu
XHQndXNlIHN0cmljdCc7XG5cdFxuXHR2YXIgUmVhY3RET01Db21wb25lbnRUcmVlID0gX193ZWJw
YWNrX3JlcXVpcmVfXyg1KTtcblx0XG5cdGZ1bmN0aW9uIGlzQ2hlY2thYmxlKGVsZW0pIHtcblx0
ICB2YXIgdHlwZSA9IGVsZW0udHlwZTtcblx0ICB2YXIgbm9kZU5hbWUgPSBlbGVtLm5vZGVOYW1l
O1xuXHQgIHJldHVybiBub2RlTmFtZSAmJiBub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSAnaW5w
dXQnICYmICh0eXBlID09PSAnY2hlY2tib3gnIHx8IHR5cGUgPT09ICdyYWRpbycpO1xuXHR9XG5c
dFxuXHRmdW5jdGlvbiBnZXRUcmFja2VyKGluc3QpIHtcblx0ICByZXR1cm4gaW5zdC5fd3JhcHBl
clN0YXRlLnZhbHVlVHJhY2tlcjtcblx0fVxuXHRcblx0ZnVuY3Rpb24gYXR0YWNoVHJhY2tlcihp
bnN0LCB0cmFja2VyKSB7XG5cdCAgaW5zdC5fd3JhcHBlclN0YXRlLnZhbHVlVHJhY2tlciA9IHRy
YWNrZXI7XG5cdH1cblx0XG5cdGZ1bmN0aW9uIGRldGFjaFRyYWNrZXIoaW5zdCkge1xuXHQgIGRl
bGV0ZSBpbnN0Ll93cmFwcGVyU3RhdGUudmFsdWVUcmFja2VyO1xuXHR9XG5cdFxuXHRmdW5jdGlv
biBnZXRWYWx1ZUZyb21Ob2RlKG5vZGUpIHtcblx0ICB2YXIgdmFsdWU7XG5cdCAgaWYgKG5vZGUp
IHtcblx0ICAgIHZhbHVlID0gaXNDaGVja2FibGUobm9kZSkgPyAnJyArIG5vZGUuY2hlY2tlZCA6
IG5vZGUudmFsdWU7XG5cdCAgfVxuXHQgIHJldHVybiB2YWx1ZTtcblx0fVxuXHRcblx0dmFyIGlu
cHV0VmFsdWVUcmFja2luZyA9IHtcblx0ICAvLyBleHBvc2VkIGZvciB0ZXN0aW5nXG5cdCAgX2dl
dFRyYWNrZXJGcm9tTm9kZTogZnVuY3Rpb24gKG5vZGUpIHtcblx0ICAgIHJldHVybiBnZXRUcmFj
a2VyKFJlYWN0RE9NQ29tcG9uZW50VHJlZS5nZXRJbnN0YW5jZUZyb21Ob2RlKG5vZGUpKTtcblx0
ICB9LFxuXHRcblx0XG5cdCAgdHJhY2s6IGZ1bmN0aW9uIChpbnN0KSB7XG5cdCAgICBpZiAoZ2V0
VHJhY2tlcihpbnN0KSkge1xuXHQgICAgICByZXR1cm47XG5cdCAgICB9XG5cdFxuXHQgICAgdmFy
IG5vZGUgPSBSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0Tm9kZUZyb21JbnN0YW5jZShpbnN0KTtc
blx0ICAgIHZhciB2YWx1ZUZpZWxkID0gaXNDaGVja2FibGUobm9kZSkgPyAnY2hlY2tlZCcgOiAn
dmFsdWUnO1xuXHQgICAgdmFyIGRlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yKG5vZGUuY29uc3RydWN0b3IucHJvdG90eXBlLCB2YWx1ZUZpZWxkKTtcblx0XG5cdCAg
ICB2YXIgY3VycmVudFZhbHVlID0gJycgKyBub2RlW3ZhbHVlRmllbGRdO1xuXHRcblx0ICAgIC8v
IGlmIHNvbWVvbmUgaGFzIGFscmVhZHkgZGVmaW5lZCBhIHZhbHVlIG9yIFNhZmFyaSwgdGhlbiBi
YWlsXG5cdCAgICAvLyBhbmQgZG9uJ3QgdHJhY2sgdmFsdWUgd2lsbCBjYXVzZSBvdmVyIHJlcG9y
dGluZyBvZiBjaGFuZ2VzLFxuXHQgICAgLy8gYnV0IGl0J3MgYmV0dGVyIHRoZW4gYSBoYXJkIGZh
aWx1cmVcblx0ICAgIC8vIChuZWVkZWQgZm9yIGNlcnRhaW4gdGVzdHMgdGhhdCBzcHlPbiBpbnB1
dCB2YWx1ZXMgYW5kIFNhZmFyaSlcblx0ICAgIGlmIChub2RlLmhhc093blByb3BlcnR5KHZhbHVl
RmllbGQpIHx8IHR5cGVvZiBkZXNjcmlwdG9yLmdldCAhPT0gJ2Z1bmN0aW9uJyB8fCB0eXBlb2Yg
ZGVzY3JpcHRvci5zZXQgIT09ICdmdW5jdGlvbicpIHtcblx0ICAgICAgcmV0dXJuO1xuXHQgICAg
fVxuXHRcblx0ICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShub2RlLCB2YWx1ZUZpZWxkLCB7XG5c
dCAgICAgIGVudW1lcmFibGU6IGRlc2NyaXB0b3IuZW51bWVyYWJsZSxcblx0ICAgICAgY29uZmln
dXJhYmxlOiB0cnVlLFxuXHQgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICByZXR1
cm4gZGVzY3JpcHRvci5nZXQuY2FsbCh0aGlzKTtcblx0ICAgICAgfSxcblx0ICAgICAgc2V0OiBm
dW5jdGlvbiAodmFsdWUpIHtcblx0ICAgICAgICBjdXJyZW50VmFsdWUgPSAnJyArIHZhbHVlO1xu
XHQgICAgICAgIGRlc2NyaXB0b3Iuc2V0LmNhbGwodGhpcywgdmFsdWUpO1xuXHQgICAgICB9XG5c
dCAgICB9KTtcblx0XG5cdCAgICBhdHRhY2hUcmFja2VyKGluc3QsIHtcblx0ICAgICAgZ2V0VmFs
dWU6IGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICByZXR1cm4gY3VycmVudFZhbHVlO1xuXHQgICAg
ICB9LFxuXHQgICAgICBzZXRWYWx1ZTogZnVuY3Rpb24gKHZhbHVlKSB7XG5cdCAgICAgICAgY3Vy
cmVudFZhbHVlID0gJycgKyB2YWx1ZTtcblx0ICAgICAgfSxcblx0ICAgICAgc3RvcFRyYWNraW5n
OiBmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgZGV0YWNoVHJhY2tlcihpbnN0KTtcblx0ICAgICAg
ICBkZWxldGUgbm9kZVt2YWx1ZUZpZWxkXTtcblx0ICAgICAgfVxuXHQgICAgfSk7XG5cdCAgfSxc
blx0XG5cdCAgdXBkYXRlVmFsdWVJZkNoYW5nZWQ6IGZ1bmN0aW9uIChpbnN0KSB7XG5cdCAgICBp
ZiAoIWluc3QpIHtcblx0ICAgICAgcmV0dXJuIGZhbHNlO1xuXHQgICAgfVxuXHQgICAgdmFyIHRy
YWNrZXIgPSBnZXRUcmFja2VyKGluc3QpO1xuXHRcblx0ICAgIGlmICghdHJhY2tlcikge1xuXHQg
ICAgICBpbnB1dFZhbHVlVHJhY2tpbmcudHJhY2soaW5zdCk7XG5cdCAgICAgIHJldHVybiB0cnVl
O1xuXHQgICAgfVxuXHRcblx0ICAgIHZhciBsYXN0VmFsdWUgPSB0cmFja2VyLmdldFZhbHVlKCk7
XG5cdCAgICB2YXIgbmV4dFZhbHVlID0gZ2V0VmFsdWVGcm9tTm9kZShSZWFjdERPTUNvbXBvbmVu
dFRyZWUuZ2V0Tm9kZUZyb21JbnN0YW5jZShpbnN0KSk7XG5cdFxuXHQgICAgaWYgKG5leHRWYWx1
ZSAhPT0gbGFzdFZhbHVlKSB7XG5cdCAgICAgIHRyYWNrZXIuc2V0VmFsdWUobmV4dFZhbHVlKTtc
blx0ICAgICAgcmV0dXJuIHRydWU7XG5cdCAgICB9XG5cdFxuXHQgICAgcmV0dXJuIGZhbHNlO1xu
XHQgIH0sXG5cdCAgc3RvcFRyYWNraW5nOiBmdW5jdGlvbiAoaW5zdCkge1xuXHQgICAgdmFyIHRy
YWNrZXIgPSBnZXRUcmFja2VyKGluc3QpO1xuXHQgICAgaWYgKHRyYWNrZXIpIHtcblx0ICAgICAg
dHJhY2tlci5zdG9wVHJhY2tpbmcoKTtcblx0ICAgIH1cblx0ICB9XG5cdH07XG5cdFxuXHRtb2R1
bGUuZXhwb3J0cyA9IGlucHV0VmFsdWVUcmFja2luZztcblxuLyoqKi8gfSxcbi8qIDc1ICovXG4v
KioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxu
XHQvKipcblx0ICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICog
QWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNl
bnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VO
U0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRk
aXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUg
UEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpcblx0ICovXG5cdFxuXHQn
dXNlIHN0cmljdCc7XG5cdFxuXHR2YXIgX3Byb2RJbnZhcmlhbnQgPSBfX3dlYnBhY2tfcmVxdWly
ZV9fKDMpLFxuXHQgICAgX2Fzc2lnbiA9IF9fd2VicGFja19yZXF1aXJlX18oNCk7XG5cdFxuXHR2
YXIgUmVhY3RDb21wb3NpdGVDb21wb25lbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEzNik7XG5c
dHZhciBSZWFjdEVtcHR5Q29tcG9uZW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg2Myk7XG5cdHZh
ciBSZWFjdEhvc3RDb21wb25lbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDY1KTtcblx0XG5cdHZh
ciBnZXROZXh0RGVidWdJRCA9IF9fd2VicGFja19yZXF1aXJlX18oMjIxKTtcblx0dmFyIGludmFy
aWFudCA9IF9fd2VicGFja19yZXF1aXJlX18oMSk7XG5cdHZhciB3YXJuaW5nID0gX193ZWJwYWNr
X3JlcXVpcmVfXygyKTtcblx0XG5cdC8vIFRvIGF2b2lkIGEgY3ljbGljIGRlcGVuZGVuY3ksIHdl
IGNyZWF0ZSB0aGUgZmluYWwgY2xhc3MgaW4gdGhpcyBtb2R1bGVcblx0dmFyIFJlYWN0Q29tcG9z
aXRlQ29tcG9uZW50V3JhcHBlciA9IGZ1bmN0aW9uIChlbGVtZW50KSB7XG5cdCAgdGhpcy5jb25z
dHJ1Y3QoZWxlbWVudCk7XG5cdH07XG5cdFxuXHRmdW5jdGlvbiBnZXREZWNsYXJhdGlvbkVycm9y
QWRkZW5kdW0ob3duZXIpIHtcblx0ICBpZiAob3duZXIpIHtcblx0ICAgIHZhciBuYW1lID0gb3du
ZXIuZ2V0TmFtZSgpO1xuXHQgICAgaWYgKG5hbWUpIHtcblx0ICAgICAgcmV0dXJuICcgQ2hlY2sg
dGhlIHJlbmRlciBtZXRob2Qgb2YgYCcgKyBuYW1lICsgJ2AuJztcblx0ICAgIH1cblx0ICB9XG5c
dCAgcmV0dXJuICcnO1xuXHR9XG5cdFxuXHQvKipcblx0ICogQ2hlY2sgaWYgdGhlIHR5cGUgcmVm
ZXJlbmNlIGlzIGEga25vd24gaW50ZXJuYWwgdHlwZS4gSS5lLiBub3QgYSB1c2VyXG5cdCAqIHBy
b3ZpZGVkIGNvbXBvc2l0ZSB0eXBlLlxuXHQgKlxuXHQgKiBAcGFyYW0ge2Z1bmN0aW9ufSB0eXBl
XG5cdCAqIEByZXR1cm4ge2Jvb2xlYW59IFJldHVybnMgdHJ1ZSBpZiB0aGlzIGlzIGEgdmFsaWQg
aW50ZXJuYWwgdHlwZS5cblx0ICovXG5cdGZ1bmN0aW9uIGlzSW50ZXJuYWxDb21wb25lbnRUeXBl
KHR5cGUpIHtcblx0ICByZXR1cm4gdHlwZW9mIHR5cGUgPT09ICdmdW5jdGlvbicgJiYgdHlwZW9m
IHR5cGUucHJvdG90eXBlICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2YgdHlwZS5wcm90b3R5cGUu
bW91bnRDb21wb25lbnQgPT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIHR5cGUucHJvdG90eXBlLnJl
Y2VpdmVDb21wb25lbnQgPT09ICdmdW5jdGlvbic7XG5cdH1cblx0XG5cdC8qKlxuXHQgKiBHaXZl
biBhIFJlYWN0Tm9kZSwgY3JlYXRlIGFuIGluc3RhbmNlIHRoYXQgd2lsbCBhY3R1YWxseSBiZSBt
b3VudGVkLlxuXHQgKlxuXHQgKiBAcGFyYW0ge1JlYWN0Tm9kZX0gbm9kZVxuXHQgKiBAcGFyYW0g
e2Jvb2xlYW59IHNob3VsZEhhdmVEZWJ1Z0lEXG5cdCAqIEByZXR1cm4ge29iamVjdH0gQSBuZXcg
aW5zdGFuY2Ugb2YgdGhlIGVsZW1lbnQncyBjb25zdHJ1Y3Rvci5cblx0ICogQHByb3RlY3RlZFxu
XHQgKi9cblx0ZnVuY3Rpb24gaW5zdGFudGlhdGVSZWFjdENvbXBvbmVudChub2RlLCBzaG91bGRI
YXZlRGVidWdJRCkge1xuXHQgIHZhciBpbnN0YW5jZTtcblx0XG5cdCAgaWYgKG5vZGUgPT09IG51
bGwgfHwgbm9kZSA9PT0gZmFsc2UpIHtcblx0ICAgIGluc3RhbmNlID0gUmVhY3RFbXB0eUNvbXBv
bmVudC5jcmVhdGUoaW5zdGFudGlhdGVSZWFjdENvbXBvbmVudCk7XG5cdCAgfSBlbHNlIGlmICh0
eXBlb2Ygbm9kZSA9PT0gJ29iamVjdCcpIHtcblx0ICAgIHZhciBlbGVtZW50ID0gbm9kZTtcblx0
ICAgIHZhciB0eXBlID0gZWxlbWVudC50eXBlO1xuXHQgICAgaWYgKHR5cGVvZiB0eXBlICE9PSAn
ZnVuY3Rpb24nICYmIHR5cGVvZiB0eXBlICE9PSAnc3RyaW5nJykge1xuXHQgICAgICB2YXIgaW5m
byA9ICcnO1xuXHQgICAgICBpZiAoZmFsc2UpIHtcblx0ICAgICAgICBpZiAodHlwZSA9PT0gdW5k
ZWZpbmVkIHx8IHR5cGVvZiB0eXBlID09PSAnb2JqZWN0JyAmJiB0eXBlICE9PSBudWxsICYmIE9i
amVjdC5rZXlzKHR5cGUpLmxlbmd0aCA9PT0gMCkge1xuXHQgICAgICAgICAgaW5mbyArPSAnIFlv
dSBsaWtlbHkgZm9yZ290IHRvIGV4cG9ydCB5b3VyIGNvbXBvbmVudCBmcm9tIHRoZSBmaWxlICcg
KyBcIml0J3MgZGVmaW5lZCBpbi5cIjtcblx0ICAgICAgICB9XG5cdCAgICAgIH1cblx0ICAgICAg
aW5mbyArPSBnZXREZWNsYXJhdGlvbkVycm9yQWRkZW5kdW0oZWxlbWVudC5fb3duZXIpO1xuXHQg
ICAgICAgdHJ1ZSA/ICBmYWxzZSA/IGludmFyaWFudChmYWxzZSwgJ0VsZW1lbnQgdHlwZSBpcyBp
bnZhbGlkOiBleHBlY3RlZCBhIHN0cmluZyAoZm9yIGJ1aWx0LWluIGNvbXBvbmVudHMpIG9yIGEg
Y2xhc3MvZnVuY3Rpb24gKGZvciBjb21wb3NpdGUgY29tcG9uZW50cykgYnV0IGdvdDogJXMuJXMn
LCB0eXBlID09IG51bGwgPyB0eXBlIDogdHlwZW9mIHR5cGUsIGluZm8pIDogX3Byb2RJbnZhcmlh
bnQoJzEzMCcsIHR5cGUgPT0gbnVsbCA/IHR5cGUgOiB0eXBlb2YgdHlwZSwgaW5mbykgOiB2b2lk
IDA7XG5cdCAgICB9XG5cdFxuXHQgICAgLy8gU3BlY2lhbCBjYXNlIHN0cmluZyB2YWx1ZXNcblx0
ICAgIGlmICh0eXBlb2YgZWxlbWVudC50eXBlID09PSAnc3RyaW5nJykge1xuXHQgICAgICBpbnN0
YW5jZSA9IFJlYWN0SG9zdENvbXBvbmVudC5jcmVhdGVJbnRlcm5hbENvbXBvbmVudChlbGVtZW50
KTtcblx0ICAgIH0gZWxzZSBpZiAoaXNJbnRlcm5hbENvbXBvbmVudFR5cGUoZWxlbWVudC50eXBl
KSkge1xuXHQgICAgICAvLyBUaGlzIGlzIHRlbXBvcmFyaWx5IGF2YWlsYWJsZSBmb3IgY3VzdG9t
IGNvbXBvbmVudHMgdGhhdCBhcmUgbm90IHN0cmluZ1xuXHQgICAgICAvLyByZXByZXNlbnRhdGlv
bnMuIEkuZS4gQVJULiBPbmNlIHRob3NlIGFyZSB1cGRhdGVkIHRvIHVzZSB0aGUgc3RyaW5nXG5c
dCAgICAgIC8vIHJlcHJlc2VudGF0aW9uLCB3ZSBjYW4gZHJvcCB0aGlzIGNvZGUgcGF0aC5cblx0
ICAgICAgaW5zdGFuY2UgPSBuZXcgZWxlbWVudC50eXBlKGVsZW1lbnQpO1xuXHRcblx0ICAgICAg
Ly8gV2UgcmVuYW1lZCB0aGlzLiBBbGxvdyB0aGUgb2xkIG5hbWUgZm9yIGNvbXBhdC4gOihcblx0
ICAgICAgaWYgKCFpbnN0YW5jZS5nZXRIb3N0Tm9kZSkge1xuXHQgICAgICAgIGluc3RhbmNlLmdl
dEhvc3ROb2RlID0gaW5zdGFuY2UuZ2V0TmF0aXZlTm9kZTtcblx0ICAgICAgfVxuXHQgICAgfSBl
bHNlIHtcblx0ICAgICAgaW5zdGFuY2UgPSBuZXcgUmVhY3RDb21wb3NpdGVDb21wb25lbnRXcmFw
cGVyKGVsZW1lbnQpO1xuXHQgICAgfVxuXHQgIH0gZWxzZSBpZiAodHlwZW9mIG5vZGUgPT09ICdz
dHJpbmcnIHx8IHR5cGVvZiBub2RlID09PSAnbnVtYmVyJykge1xuXHQgICAgaW5zdGFuY2UgPSBS
ZWFjdEhvc3RDb21wb25lbnQuY3JlYXRlSW5zdGFuY2VGb3JUZXh0KG5vZGUpO1xuXHQgIH0gZWxz
ZSB7XG5cdCAgICAgdHJ1ZSA/ICBmYWxzZSA/IGludmFyaWFudChmYWxzZSwgJ0VuY291bnRlcmVk
IGludmFsaWQgUmVhY3Qgbm9kZSBvZiB0eXBlICVzJywgdHlwZW9mIG5vZGUpIDogX3Byb2RJbnZh
cmlhbnQoJzEzMScsIHR5cGVvZiBub2RlKSA6IHZvaWQgMDtcblx0ICB9XG5cdFxuXHQgIGlmIChm
YWxzZSkge1xuXHQgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdh
cm5pbmcodHlwZW9mIGluc3RhbmNlLm1vdW50Q29tcG9uZW50ID09PSAnZnVuY3Rpb24nICYmIHR5
cGVvZiBpbnN0YW5jZS5yZWNlaXZlQ29tcG9uZW50ID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiBp
bnN0YW5jZS5nZXRIb3N0Tm9kZSA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgaW5zdGFuY2UudW5t
b3VudENvbXBvbmVudCA9PT0gJ2Z1bmN0aW9uJywgJ09ubHkgUmVhY3QgQ29tcG9uZW50cyBjYW4g
YmUgbW91bnRlZC4nKSA6IHZvaWQgMDtcblx0ICB9XG5cdFxuXHQgIC8vIFRoZXNlIHR3byBmaWVs
ZHMgYXJlIHVzZWQgYnkgdGhlIERPTSBhbmQgQVJUIGRpZmZpbmcgYWxnb3JpdGhtc1xuXHQgIC8v
IHJlc3BlY3RpdmVseS4gSW5zdGVhZCBvZiB1c2luZyBleHBhbmRvcyBvbiBjb21wb25lbnRzLCB3
ZSBzaG91bGQgYmVcblx0ICAvLyBzdG9yaW5nIHRoZSBzdGF0ZSBuZWVkZWQgYnkgdGhlIGRpZmZp
bmcgYWxnb3JpdGhtcyBlbHNld2hlcmUuXG5cdCAgaW5zdGFuY2UuX21vdW50SW5kZXggPSAwO1xu
XHQgIGluc3RhbmNlLl9tb3VudEltYWdlID0gbnVsbDtcblx0XG5cdCAgaWYgKGZhbHNlKSB7XG5c
dCAgICBpbnN0YW5jZS5fZGVidWdJRCA9IHNob3VsZEhhdmVEZWJ1Z0lEID8gZ2V0TmV4dERlYnVn
SUQoKSA6IDA7XG5cdCAgfVxuXHRcblx0ICAvLyBJbnRlcm5hbCBpbnN0YW5jZXMgc2hvdWxkIGZ1
bGx5IGNvbnN0cnVjdGVkIGF0IHRoaXMgcG9pbnQsIHNvIHRoZXkgc2hvdWxkXG5cdCAgLy8gbm90
IGdldCBhbnkgbmV3IGZpZWxkcyBhZGRlZCB0byB0aGVtIGF0IHRoaXMgcG9pbnQuXG5cdCAgaWYg
KGZhbHNlKSB7XG5cdCAgICBpZiAoT2JqZWN0LnByZXZlbnRFeHRlbnNpb25zKSB7XG5cdCAgICAg
IE9iamVjdC5wcmV2ZW50RXh0ZW5zaW9ucyhpbnN0YW5jZSk7XG5cdCAgICB9XG5cdCAgfVxuXHRc
blx0ICByZXR1cm4gaW5zdGFuY2U7XG5cdH1cblx0XG5cdF9hc3NpZ24oUmVhY3RDb21wb3NpdGVD
b21wb25lbnRXcmFwcGVyLnByb3RvdHlwZSwgUmVhY3RDb21wb3NpdGVDb21wb25lbnQsIHtcblx0
ICBfaW5zdGFudGlhdGVSZWFjdENvbXBvbmVudDogaW5zdGFudGlhdGVSZWFjdENvbXBvbmVudFxu
XHR9KTtcblx0XG5cdG1vZHVsZS5leHBvcnRzID0gaW5zdGFudGlhdGVSZWFjdENvbXBvbmVudDtc
blxuLyoqKi8gfSxcbi8qIDc2ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtc
blxuXHQvKipcblx0ICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0
ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBs
aWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJ
Q0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4g
YWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0
aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpcblx0ICogXG5cdCAq
L1xuXHRcblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0LyoqXG5cdCAqIEBzZWUgaHR0cDovL3d3dy53
aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay9tdWx0aXBhZ2UvdGhlLWlucHV0
LWVsZW1lbnQuaHRtbCNpbnB1dC10eXBlLWF0dHItc3VtbWFyeVxuXHQgKi9cblx0XG5cdHZhciBz
dXBwb3J0ZWRJbnB1dFR5cGVzID0ge1xuXHQgIGNvbG9yOiB0cnVlLFxuXHQgIGRhdGU6IHRydWUs
XG5cdCAgZGF0ZXRpbWU6IHRydWUsXG5cdCAgJ2RhdGV0aW1lLWxvY2FsJzogdHJ1ZSxcblx0ICBl
bWFpbDogdHJ1ZSxcblx0ICBtb250aDogdHJ1ZSxcblx0ICBudW1iZXI6IHRydWUsXG5cdCAgcGFz
c3dvcmQ6IHRydWUsXG5cdCAgcmFuZ2U6IHRydWUsXG5cdCAgc2VhcmNoOiB0cnVlLFxuXHQgIHRl
bDogdHJ1ZSxcblx0ICB0ZXh0OiB0cnVlLFxuXHQgIHRpbWU6IHRydWUsXG5cdCAgdXJsOiB0cnVl
LFxuXHQgIHdlZWs6IHRydWVcblx0fTtcblx0XG5cdGZ1bmN0aW9uIGlzVGV4dElucHV0RWxlbWVu
dChlbGVtKSB7XG5cdCAgdmFyIG5vZGVOYW1lID0gZWxlbSAmJiBlbGVtLm5vZGVOYW1lICYmIGVs
ZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtcblx0XG5cdCAgaWYgKG5vZGVOYW1lID09PSAnaW5w
dXQnKSB7XG5cdCAgICByZXR1cm4gISFzdXBwb3J0ZWRJbnB1dFR5cGVzW2VsZW0udHlwZV07XG5c
dCAgfVxuXHRcblx0ICBpZiAobm9kZU5hbWUgPT09ICd0ZXh0YXJlYScpIHtcblx0ICAgIHJldHVy
biB0cnVlO1xuXHQgIH1cblx0XG5cdCAgcmV0dXJuIGZhbHNlO1xuXHR9XG5cdFxuXHRtb2R1bGUu
ZXhwb3J0cyA9IGlzVGV4dElucHV0RWxlbWVudDtcblxuLyoqKi8gfSxcbi8qIDc3ICovXG4vKioq
LyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQv
Kipcblx0ICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxs
IHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNl
ZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0Ug
ZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRp
b25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFU
RU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpcblx0ICovXG5cdFxuXHQndXNl
IHN0cmljdCc7XG5cdFxuXHR2YXIgRXhlY3V0aW9uRW52aXJvbm1lbnQgPSBfX3dlYnBhY2tfcmVx
dWlyZV9fKDYpO1xuXHR2YXIgZXNjYXBlVGV4dENvbnRlbnRGb3JCcm93c2VyID0gX193ZWJwYWNr
X3JlcXVpcmVfXygyOCk7XG5cdHZhciBzZXRJbm5lckhUTUwgPSBfX3dlYnBhY2tfcmVxdWlyZV9f
KDI5KTtcblx0XG5cdC8qKlxuXHQgKiBTZXQgdGhlIHRleHRDb250ZW50IHByb3BlcnR5IG9mIGEg
bm9kZSwgZW5zdXJpbmcgdGhhdCB3aGl0ZXNwYWNlIGlzIHByZXNlcnZlZFxuXHQgKiBldmVuIGlu
IElFOC4gaW5uZXJUZXh0IGlzIGEgcG9vciBzdWJzdGl0dXRlIGZvciB0ZXh0Q29udGVudCBhbmQs
IGFtb25nIG1hbnlcblx0ICogaXNzdWVzLCBpbnNlcnRzIDxicj4gaW5zdGVhZCBvZiB0aGUgbGl0
ZXJhbCBuZXdsaW5lIGNoYXJzLiBpbm5lckhUTUwgYmVoYXZlc1xuXHQgKiBhcyBpdCBzaG91bGQu
XG5cdCAqXG5cdCAqIEBwYXJhbSB7RE9NRWxlbWVudH0gbm9kZVxuXHQgKiBAcGFyYW0ge3N0cmlu
Z30gdGV4dFxuXHQgKiBAaW50ZXJuYWxcblx0ICovXG5cdHZhciBzZXRUZXh0Q29udGVudCA9IGZ1
bmN0aW9uIChub2RlLCB0ZXh0KSB7XG5cdCAgaWYgKHRleHQpIHtcblx0ICAgIHZhciBmaXJzdENo
aWxkID0gbm9kZS5maXJzdENoaWxkO1xuXHRcblx0ICAgIGlmIChmaXJzdENoaWxkICYmIGZpcnN0
Q2hpbGQgPT09IG5vZGUubGFzdENoaWxkICYmIGZpcnN0Q2hpbGQubm9kZVR5cGUgPT09IDMpIHtc
blx0ICAgICAgZmlyc3RDaGlsZC5ub2RlVmFsdWUgPSB0ZXh0O1xuXHQgICAgICByZXR1cm47XG5c
dCAgICB9XG5cdCAgfVxuXHQgIG5vZGUudGV4dENvbnRlbnQgPSB0ZXh0O1xuXHR9O1xuXHRcblx0
aWYgKEV4ZWN1dGlvbkVudmlyb25tZW50LmNhblVzZURPTSkge1xuXHQgIGlmICghKCd0ZXh0Q29u
dGVudCcgaW4gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KSkge1xuXHQgICAgc2V0VGV4dENvbnRl
bnQgPSBmdW5jdGlvbiAobm9kZSwgdGV4dCkge1xuXHQgICAgICBpZiAobm9kZS5ub2RlVHlwZSA9
PT0gMykge1xuXHQgICAgICAgIG5vZGUubm9kZVZhbHVlID0gdGV4dDtcblx0ICAgICAgICByZXR1
cm47XG5cdCAgICAgIH1cblx0ICAgICAgc2V0SW5uZXJIVE1MKG5vZGUsIGVzY2FwZVRleHRDb250
ZW50Rm9yQnJvd3Nlcih0ZXh0KSk7XG5cdCAgICB9O1xuXHQgIH1cblx0fVxuXHRcblx0bW9kdWxl
LmV4cG9ydHMgPSBzZXRUZXh0Q29udGVudDtcblxuLyoqKi8gfSxcbi8qIDc4ICovXG4vKioqLyBm
dW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvKipc
blx0ICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJp
Z2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1
bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmls
ZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25h
bCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5U
UyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpcblx0ICovXG5cdFxuXHQndXNlIHN0
cmljdCc7XG5cdFxuXHR2YXIgX3Byb2RJbnZhcmlhbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMp
O1xuXHRcblx0dmFyIFJlYWN0Q3VycmVudE93bmVyID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMSk7
XG5cdHZhciBSRUFDVF9FTEVNRU5UX1RZUEUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE1MSk7XG5c
dFxuXHR2YXIgZ2V0SXRlcmF0b3JGbiA9IF9fd2VicGFja19yZXF1aXJlX18oMTgyKTtcblx0dmFy
IGludmFyaWFudCA9IF9fd2VicGFja19yZXF1aXJlX18oMSk7XG5cdHZhciBLZXlFc2NhcGVVdGls
cyA9IF9fd2VicGFja19yZXF1aXJlX18oMzgpO1xuXHR2YXIgd2FybmluZyA9IF9fd2VicGFja19y
ZXF1aXJlX18oMik7XG5cdFxuXHR2YXIgU0VQQVJBVE9SID0gJy4nO1xuXHR2YXIgU1VCU0VQQVJB
VE9SID0gJzonO1xuXHRcblx0LyoqXG5cdCAqIFRoaXMgaXMgaW5saW5lZCBmcm9tIFJlYWN0RWxl
bWVudCBzaW5jZSB0aGlzIGZpbGUgaXMgc2hhcmVkIGJldHdlZW5cblx0ICogaXNvbW9ycGhpYyBh
bmQgcmVuZGVyZXJzLiBXZSBjb3VsZCBleHRyYWN0IHRoaXMgdG8gYVxuXHQgKlxuXHQgKi9cblx0
XG5cdC8qKlxuXHQgKiBUT0RPOiBUZXN0IHRoYXQgYSBzaW5nbGUgY2hpbGQgYW5kIGFuIGFycmF5
IHdpdGggb25lIGl0ZW0gaGF2ZSB0aGUgc2FtZSBrZXlcblx0ICogcGF0dGVybi5cblx0ICovXG5c
dFxuXHR2YXIgZGlkV2FybkFib3V0TWFwcyA9IGZhbHNlO1xuXHRcblx0LyoqXG5cdCAqIEdlbmVy
YXRlIGEga2V5IHN0cmluZyB0aGF0IGlkZW50aWZpZXMgYSBjb21wb25lbnQgd2l0aGluIGEgc2V0
LlxuXHQgKlxuXHQgKiBAcGFyYW0geyp9IGNvbXBvbmVudCBBIGNvbXBvbmVudCB0aGF0IGNvdWxk
IGNvbnRhaW4gYSBtYW51YWwga2V5LlxuXHQgKiBAcGFyYW0ge251bWJlcn0gaW5kZXggSW5kZXgg
dGhhdCBpcyB1c2VkIGlmIGEgbWFudWFsIGtleSBpcyBub3QgcHJvdmlkZWQuXG5cdCAqIEByZXR1
cm4ge3N0cmluZ31cblx0ICovXG5cdGZ1bmN0aW9uIGdldENvbXBvbmVudEtleShjb21wb25lbnQs
IGluZGV4KSB7XG5cdCAgLy8gRG8gc29tZSB0eXBlY2hlY2tpbmcgaGVyZSBzaW5jZSB3ZSBjYWxs
IHRoaXMgYmxpbmRseS4gV2Ugd2FudCB0byBlbnN1cmVcblx0ICAvLyB0aGF0IHdlIGRvbid0IGJs
b2NrIHBvdGVudGlhbCBmdXR1cmUgRVMgQVBJcy5cblx0ICBpZiAoY29tcG9uZW50ICYmIHR5cGVv
ZiBjb21wb25lbnQgPT09ICdvYmplY3QnICYmIGNvbXBvbmVudC5rZXkgIT0gbnVsbCkge1xuXHQg
ICAgLy8gRXhwbGljaXQga2V5XG5cdCAgICByZXR1cm4gS2V5RXNjYXBlVXRpbHMuZXNjYXBlKGNv
bXBvbmVudC5rZXkpO1xuXHQgIH1cblx0ICAvLyBJbXBsaWNpdCBrZXkgZGV0ZXJtaW5lZCBieSB0
aGUgaW5kZXggaW4gdGhlIHNldFxuXHQgIHJldHVybiBpbmRleC50b1N0cmluZygzNik7XG5cdH1c
blx0XG5cdC8qKlxuXHQgKiBAcGFyYW0gez8qfSBjaGlsZHJlbiBDaGlsZHJlbiB0cmVlIGNvbnRh
aW5lci5cblx0ICogQHBhcmFtIHshc3RyaW5nfSBuYW1lU29GYXIgTmFtZSBvZiB0aGUga2V5IHBh
dGggc28gZmFyLlxuXHQgKiBAcGFyYW0geyFmdW5jdGlvbn0gY2FsbGJhY2sgQ2FsbGJhY2sgdG8g
aW52b2tlIHdpdGggZWFjaCBjaGlsZCBmb3VuZC5cblx0ICogQHBhcmFtIHs/Kn0gdHJhdmVyc2VD
b250ZXh0IFVzZWQgdG8gcGFzcyBpbmZvcm1hdGlvbiB0aHJvdWdob3V0IHRoZSB0cmF2ZXJzYWxc
blx0ICogcHJvY2Vzcy5cblx0ICogQHJldHVybiB7IW51bWJlcn0gVGhlIG51bWJlciBvZiBjaGls
ZHJlbiBpbiB0aGlzIHN1YnRyZWUuXG5cdCAqL1xuXHRmdW5jdGlvbiB0cmF2ZXJzZUFsbENoaWxk
cmVuSW1wbChjaGlsZHJlbiwgbmFtZVNvRmFyLCBjYWxsYmFjaywgdHJhdmVyc2VDb250ZXh0KSB7
XG5cdCAgdmFyIHR5cGUgPSB0eXBlb2YgY2hpbGRyZW47XG5cdFxuXHQgIGlmICh0eXBlID09PSAn
dW5kZWZpbmVkJyB8fCB0eXBlID09PSAnYm9vbGVhbicpIHtcblx0ICAgIC8vIEFsbCBvZiB0aGUg
YWJvdmUgYXJlIHBlcmNlaXZlZCBhcyBudWxsLlxuXHQgICAgY2hpbGRyZW4gPSBudWxsO1xuXHQg
IH1cblx0XG5cdCAgaWYgKGNoaWxkcmVuID09PSBudWxsIHx8IHR5cGUgPT09ICdzdHJpbmcnIHx8
IHR5cGUgPT09ICdudW1iZXInIHx8XG5cdCAgLy8gVGhlIGZvbGxvd2luZyBpcyBpbmxpbmVkIGZy
b20gUmVhY3RFbGVtZW50LiBUaGlzIG1lYW5zIHdlIGNhbiBvcHRpbWl6ZVxuXHQgIC8vIHNvbWUg
Y2hlY2tzLiBSZWFjdCBGaWJlciBhbHNvIGlubGluZXMgdGhpcyBsb2dpYyBmb3Igc2ltaWxhciBw
dXJwb3Nlcy5cblx0ICB0eXBlID09PSAnb2JqZWN0JyAmJiBjaGlsZHJlbi4kJHR5cGVvZiA9PT0g
UkVBQ1RfRUxFTUVOVF9UWVBFKSB7XG5cdCAgICBjYWxsYmFjayh0cmF2ZXJzZUNvbnRleHQsIGNo
aWxkcmVuLFxuXHQgICAgLy8gSWYgaXQncyB0aGUgb25seSBjaGlsZCwgdHJlYXQgdGhlIG5hbWUg
YXMgaWYgaXQgd2FzIHdyYXBwZWQgaW4gYW4gYXJyYXlcblx0ICAgIC8vIHNvIHRoYXQgaXQncyBj
b25zaXN0ZW50IGlmIHRoZSBudW1iZXIgb2YgY2hpbGRyZW4gZ3Jvd3MuXG5cdCAgICBuYW1lU29G
YXIgPT09ICcnID8gU0VQQVJBVE9SICsgZ2V0Q29tcG9uZW50S2V5KGNoaWxkcmVuLCAwKSA6IG5h
bWVTb0Zhcik7XG5cdCAgICByZXR1cm4gMTtcblx0ICB9XG5cdFxuXHQgIHZhciBjaGlsZDtcblx0
ICB2YXIgbmV4dE5hbWU7XG5cdCAgdmFyIHN1YnRyZWVDb3VudCA9IDA7IC8vIENvdW50IG9mIGNo
aWxkcmVuIGZvdW5kIGluIHRoZSBjdXJyZW50IHN1YnRyZWUuXG5cdCAgdmFyIG5leHROYW1lUHJl
Zml4ID0gbmFtZVNvRmFyID09PSAnJyA/IFNFUEFSQVRPUiA6IG5hbWVTb0ZhciArIFNVQlNFUEFS
QVRPUjtcblx0XG5cdCAgaWYgKEFycmF5LmlzQXJyYXkoY2hpbGRyZW4pKSB7XG5cdCAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG5cdCAgICAgIGNoaWxkID0g
Y2hpbGRyZW5baV07XG5cdCAgICAgIG5leHROYW1lID0gbmV4dE5hbWVQcmVmaXggKyBnZXRDb21w
b25lbnRLZXkoY2hpbGQsIGkpO1xuXHQgICAgICBzdWJ0cmVlQ291bnQgKz0gdHJhdmVyc2VBbGxD
aGlsZHJlbkltcGwoY2hpbGQsIG5leHROYW1lLCBjYWxsYmFjaywgdHJhdmVyc2VDb250ZXh0KTtc
blx0ICAgIH1cblx0ICB9IGVsc2Uge1xuXHQgICAgdmFyIGl0ZXJhdG9yRm4gPSBnZXRJdGVyYXRv
ckZuKGNoaWxkcmVuKTtcblx0ICAgIGlmIChpdGVyYXRvckZuKSB7XG5cdCAgICAgIHZhciBpdGVy
YXRvciA9IGl0ZXJhdG9yRm4uY2FsbChjaGlsZHJlbik7XG5cdCAgICAgIHZhciBzdGVwO1xuXHQg
ICAgICBpZiAoaXRlcmF0b3JGbiAhPT0gY2hpbGRyZW4uZW50cmllcykge1xuXHQgICAgICAgIHZh
ciBpaSA9IDA7XG5cdCAgICAgICAgd2hpbGUgKCEoc3RlcCA9IGl0ZXJhdG9yLm5leHQoKSkuZG9u
ZSkge1xuXHQgICAgICAgICAgY2hpbGQgPSBzdGVwLnZhbHVlO1xuXHQgICAgICAgICAgbmV4dE5h
bWUgPSBuZXh0TmFtZVByZWZpeCArIGdldENvbXBvbmVudEtleShjaGlsZCwgaWkrKyk7XG5cdCAg
ICAgICAgICBzdWJ0cmVlQ291bnQgKz0gdHJhdmVyc2VBbGxDaGlsZHJlbkltcGwoY2hpbGQsIG5l
eHROYW1lLCBjYWxsYmFjaywgdHJhdmVyc2VDb250ZXh0KTtcblx0ICAgICAgICB9XG5cdCAgICAg
IH0gZWxzZSB7XG5cdCAgICAgICAgaWYgKGZhbHNlKSB7XG5cdCAgICAgICAgICB2YXIgbWFwc0Fz
Q2hpbGRyZW5BZGRlbmR1bSA9ICcnO1xuXHQgICAgICAgICAgaWYgKFJlYWN0Q3VycmVudE93bmVy
LmN1cnJlbnQpIHtcblx0ICAgICAgICAgICAgdmFyIG1hcHNBc0NoaWxkcmVuT3duZXJOYW1lID0g
UmVhY3RDdXJyZW50T3duZXIuY3VycmVudC5nZXROYW1lKCk7XG5cdCAgICAgICAgICAgIGlmICht
YXBzQXNDaGlsZHJlbk93bmVyTmFtZSkge1xuXHQgICAgICAgICAgICAgIG1hcHNBc0NoaWxkcmVu
QWRkZW5kdW0gPSAnIENoZWNrIHRoZSByZW5kZXIgbWV0aG9kIG9mIGAnICsgbWFwc0FzQ2hpbGRy
ZW5Pd25lck5hbWUgKyAnYC4nO1xuXHQgICAgICAgICAgICB9XG5cdCAgICAgICAgICB9XG5cdCAg
ICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhk
aWRXYXJuQWJvdXRNYXBzLCAnVXNpbmcgTWFwcyBhcyBjaGlsZHJlbiBpcyBub3QgeWV0IGZ1bGx5
IHN1cHBvcnRlZC4gSXQgaXMgYW4gJyArICdleHBlcmltZW50YWwgZmVhdHVyZSB0aGF0IG1pZ2h0
IGJlIHJlbW92ZWQuIENvbnZlcnQgaXQgdG8gYSAnICsgJ3NlcXVlbmNlIC8gaXRlcmFibGUgb2Yg
a2V5ZWQgUmVhY3RFbGVtZW50cyBpbnN0ZWFkLiVzJywgbWFwc0FzQ2hpbGRyZW5BZGRlbmR1bSkg
OiB2b2lkIDA7XG5cdCAgICAgICAgICBkaWRXYXJuQWJvdXRNYXBzID0gdHJ1ZTtcblx0ICAgICAg
ICB9XG5cdCAgICAgICAgLy8gSXRlcmF0b3Igd2lsbCBwcm92aWRlIGVudHJ5IFtrLHZdIHR1cGxl
cyByYXRoZXIgdGhhbiB2YWx1ZXMuXG5cdCAgICAgICAgd2hpbGUgKCEoc3RlcCA9IGl0ZXJhdG9y
Lm5leHQoKSkuZG9uZSkge1xuXHQgICAgICAgICAgdmFyIGVudHJ5ID0gc3RlcC52YWx1ZTtcblx0
ICAgICAgICAgIGlmIChlbnRyeSkge1xuXHQgICAgICAgICAgICBjaGlsZCA9IGVudHJ5WzFdO1xu
XHQgICAgICAgICAgICBuZXh0TmFtZSA9IG5leHROYW1lUHJlZml4ICsgS2V5RXNjYXBlVXRpbHMu
ZXNjYXBlKGVudHJ5WzBdKSArIFNVQlNFUEFSQVRPUiArIGdldENvbXBvbmVudEtleShjaGlsZCwg
MCk7XG5cdCAgICAgICAgICAgIHN1YnRyZWVDb3VudCArPSB0cmF2ZXJzZUFsbENoaWxkcmVuSW1w
bChjaGlsZCwgbmV4dE5hbWUsIGNhbGxiYWNrLCB0cmF2ZXJzZUNvbnRleHQpO1xuXHQgICAgICAg
ICAgfVxuXHQgICAgICAgIH1cblx0ICAgICAgfVxuXHQgICAgfSBlbHNlIGlmICh0eXBlID09PSAn
b2JqZWN0Jykge1xuXHQgICAgICB2YXIgYWRkZW5kdW0gPSAnJztcblx0ICAgICAgaWYgKGZhbHNl
KSB7XG5cdCAgICAgICAgYWRkZW5kdW0gPSAnIElmIHlvdSBtZWFudCB0byByZW5kZXIgYSBjb2xs
ZWN0aW9uIG9mIGNoaWxkcmVuLCB1c2UgYW4gYXJyYXkgJyArICdpbnN0ZWFkIG9yIHdyYXAgdGhl
IG9iamVjdCB1c2luZyBjcmVhdGVGcmFnbWVudChvYmplY3QpIGZyb20gdGhlICcgKyAnUmVhY3Qg
YWRkLW9ucy4nO1xuXHQgICAgICAgIGlmIChjaGlsZHJlbi5faXNSZWFjdEVsZW1lbnQpIHtcblx0
ICAgICAgICAgIGFkZGVuZHVtID0gXCIgSXQgbG9va3MgbGlrZSB5b3UncmUgdXNpbmcgYW4gZWxl
bWVudCBjcmVhdGVkIGJ5IGEgZGlmZmVyZW50IFwiICsgJ3ZlcnNpb24gb2YgUmVhY3QuIE1ha2Ug
c3VyZSB0byB1c2Ugb25seSBvbmUgY29weSBvZiBSZWFjdC4nO1xuXHQgICAgICAgIH1cblx0ICAg
ICAgICBpZiAoUmVhY3RDdXJyZW50T3duZXIuY3VycmVudCkge1xuXHQgICAgICAgICAgdmFyIG5h
bWUgPSBSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50LmdldE5hbWUoKTtcblx0ICAgICAgICAgIGlm
IChuYW1lKSB7XG5cdCAgICAgICAgICAgIGFkZGVuZHVtICs9ICcgQ2hlY2sgdGhlIHJlbmRlciBt
ZXRob2Qgb2YgYCcgKyBuYW1lICsgJ2AuJztcblx0ICAgICAgICAgIH1cblx0ICAgICAgICB9XG5c
dCAgICAgIH1cblx0ICAgICAgdmFyIGNoaWxkcmVuU3RyaW5nID0gU3RyaW5nKGNoaWxkcmVuKTtc
blx0ICAgICAgIHRydWUgPyAgZmFsc2UgPyBpbnZhcmlhbnQoZmFsc2UsICdPYmplY3RzIGFyZSBu
b3QgdmFsaWQgYXMgYSBSZWFjdCBjaGlsZCAoZm91bmQ6ICVzKS4lcycsIGNoaWxkcmVuU3RyaW5n
ID09PSAnW29iamVjdCBPYmplY3RdJyA/ICdvYmplY3Qgd2l0aCBrZXlzIHsnICsgT2JqZWN0Lmtl
eXMoY2hpbGRyZW4pLmpvaW4oJywgJykgKyAnfScgOiBjaGlsZHJlblN0cmluZywgYWRkZW5kdW0p
IDogX3Byb2RJbnZhcmlhbnQoJzMxJywgY2hpbGRyZW5TdHJpbmcgPT09ICdbb2JqZWN0IE9iamVj
dF0nID8gJ29iamVjdCB3aXRoIGtleXMgeycgKyBPYmplY3Qua2V5cyhjaGlsZHJlbikuam9pbign
LCAnKSArICd9JyA6IGNoaWxkcmVuU3RyaW5nLCBhZGRlbmR1bSkgOiB2b2lkIDA7XG5cdCAgICB9
XG5cdCAgfVxuXHRcblx0ICByZXR1cm4gc3VidHJlZUNvdW50O1xuXHR9XG5cdFxuXHQvKipcblx0
ICogVHJhdmVyc2VzIGNoaWxkcmVuIHRoYXQgYXJlIHR5cGljYWxseSBzcGVjaWZpZWQgYXMgYHBy
b3BzLmNoaWxkcmVuYCwgYnV0XG5cdCAqIG1pZ2h0IGFsc28gYmUgc3BlY2lmaWVkIHRocm91Z2gg
YXR0cmlidXRlczpcblx0ICpcblx0ICogLSBgdHJhdmVyc2VBbGxDaGlsZHJlbih0aGlzLnByb3Bz
LmNoaWxkcmVuLCAuLi4pYFxuXHQgKiAtIGB0cmF2ZXJzZUFsbENoaWxkcmVuKHRoaXMucHJvcHMu
bGVmdFBhbmVsQ2hpbGRyZW4sIC4uLilgXG5cdCAqXG5cdCAqIFRoZSBgdHJhdmVyc2VDb250ZXh0
YCBpcyBhbiBvcHRpb25hbCBhcmd1bWVudCB0aGF0IGlzIHBhc3NlZCB0aHJvdWdoIHRoZVxuXHQg
KiBlbnRpcmUgdHJhdmVyc2FsLiBJdCBjYW4gYmUgdXNlZCB0byBzdG9yZSBhY2N1bXVsYXRpb25z
IG9yIGFueXRoaW5nIGVsc2UgdGhhdFxuXHQgKiB0aGUgY2FsbGJhY2sgbWlnaHQgZmluZCByZWxl
dmFudC5cblx0ICpcblx0ICogQHBhcmFtIHs/Kn0gY2hpbGRyZW4gQ2hpbGRyZW4gdHJlZSBvYmpl
Y3QuXG5cdCAqIEBwYXJhbSB7IWZ1bmN0aW9ufSBjYWxsYmFjayBUbyBpbnZva2UgdXBvbiB0cmF2
ZXJzaW5nIGVhY2ggY2hpbGQuXG5cdCAqIEBwYXJhbSB7Pyp9IHRyYXZlcnNlQ29udGV4dCBDb250
ZXh0IGZvciB0cmF2ZXJzYWwuXG5cdCAqIEByZXR1cm4geyFudW1iZXJ9IFRoZSBudW1iZXIgb2Yg
Y2hpbGRyZW4gaW4gdGhpcyBzdWJ0cmVlLlxuXHQgKi9cblx0ZnVuY3Rpb24gdHJhdmVyc2VBbGxD
aGlsZHJlbihjaGlsZHJlbiwgY2FsbGJhY2ssIHRyYXZlcnNlQ29udGV4dCkge1xuXHQgIGlmIChj
aGlsZHJlbiA9PSBudWxsKSB7XG5cdCAgICByZXR1cm4gMDtcblx0ICB9XG5cdFxuXHQgIHJldHVy
biB0cmF2ZXJzZUFsbENoaWxkcmVuSW1wbChjaGlsZHJlbiwgJycsIGNhbGxiYWNrLCB0cmF2ZXJz
ZUNvbnRleHQpO1xuXHR9XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IHRyYXZlcnNlQWxsQ2hpbGRy
ZW47XG5cbi8qKiovIH0sXG4vKiA3OSAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRz
LCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0ZXhwb3J0
cy5fX2VzTW9kdWxlID0gdHJ1ZTtcblx0XG5cdHZhciBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24g
fHwgZnVuY3Rpb24gKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5n
dGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldOyBmb3IgKHZhciBrZXkgaW4gc291
cmNlKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBr
ZXkpKSB7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSB9IHJldHVybiB0YXJnZXQ7IH07
XG5cdFxuXHRleHBvcnRzLmRlZmF1bHQgPSBjb25uZWN0QWR2YW5jZWQ7XG5cdFxuXHR2YXIgX2hv
aXN0Tm9uUmVhY3RTdGF0aWNzID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMTApO1xuXHRcblx0dmFy
IF9ob2lzdE5vblJlYWN0U3RhdGljczIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9ob2lzdE5v
blJlYWN0U3RhdGljcyk7XG5cdFxuXHR2YXIgX2ludmFyaWFudCA9IF9fd2VicGFja19yZXF1aXJl
X18oMTExKTtcblx0XG5cdHZhciBfaW52YXJpYW50MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQo
X2ludmFyaWFudCk7XG5cdFxuXHR2YXIgX3JlYWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMik7
XG5cdFxuXHR2YXIgX1N1YnNjcmlwdGlvbiA9IF9fd2VicGFja19yZXF1aXJlX18oMTk0KTtcblx0
XG5cdHZhciBfU3Vic2NyaXB0aW9uMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX1N1YnNjcmlw
dGlvbik7XG5cdFxuXHR2YXIgX1Byb3BUeXBlcyA9IF9fd2VicGFja19yZXF1aXJlX18oODIpO1xu
XHRcblx0ZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAm
JiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblx0XG5cdGZ1bmN0
aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFu
Y2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5v
dCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKTsgfSB9XG5cdFxuXHRmdW5jdGlvbiBfcG9z
c2libGVDb25zdHJ1Y3RvclJldHVybihzZWxmLCBjYWxsKSB7IGlmICghc2VsZikgeyB0aHJvdyBu
ZXcgUmVmZXJlbmNlRXJyb3IoXCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIo
KSBoYXNuJ3QgYmVlbiBjYWxsZWRcIik7IH0gcmV0dXJuIGNhbGwgJiYgKHR5cGVvZiBjYWxsID09
PSBcIm9iamVjdFwiIHx8IHR5cGVvZiBjYWxsID09PSBcImZ1bmN0aW9uXCIpID8gY2FsbCA6IHNl
bGY7IH1cblx0XG5cdGZ1bmN0aW9uIF9pbmhlcml0cyhzdWJDbGFzcywgc3VwZXJDbGFzcykgeyBp
ZiAodHlwZW9mIHN1cGVyQ2xhc3MgIT09IFwiZnVuY3Rpb25cIiAmJiBzdXBlckNsYXNzICE9PSBu
dWxsKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVy
IGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90IFwiICsgdHlwZW9mIHN1cGVyQ2xhc3MpOyB9IHN1
YkNsYXNzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoc3VwZXJDbGFzcyAmJiBzdXBlckNsYXNz
LnByb3RvdHlwZSwgeyBjb25zdHJ1Y3RvcjogeyB2YWx1ZTogc3ViQ2xhc3MsIGVudW1lcmFibGU6
IGZhbHNlLCB3cml0YWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlIH0gfSk7IGlmIChzdXBl
ckNsYXNzKSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3Quc2V0UHJvdG90eXBlT2Yoc3Vi
Q2xhc3MsIHN1cGVyQ2xhc3MpIDogc3ViQ2xhc3MuX19wcm90b19fID0gc3VwZXJDbGFzczsgfVxu
XHRcblx0ZnVuY3Rpb24gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKG9iaiwga2V5cykgeyB2YXIg
dGFyZ2V0ID0ge307IGZvciAodmFyIGkgaW4gb2JqKSB7IGlmIChrZXlzLmluZGV4T2YoaSkgPj0g
MCkgY29udGludWU7IGlmICghT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9i
aiwgaSkpIGNvbnRpbnVlOyB0YXJnZXRbaV0gPSBvYmpbaV07IH0gcmV0dXJuIHRhcmdldDsgfVxu
XHRcblx0dmFyIGhvdFJlbG9hZGluZ1ZlcnNpb24gPSAwO1xuXHR2YXIgZHVtbXlTdGF0ZSA9IHt9
O1xuXHRmdW5jdGlvbiBub29wKCkge31cblx0ZnVuY3Rpb24gbWFrZVNlbGVjdG9yU3RhdGVmdWwo
c291cmNlU2VsZWN0b3IsIHN0b3JlKSB7XG5cdCAgLy8gd3JhcCB0aGUgc2VsZWN0b3IgaW4gYW4g
b2JqZWN0IHRoYXQgdHJhY2tzIGl0cyByZXN1bHRzIGJldHdlZW4gcnVucy5cblx0ICB2YXIgc2Vs
ZWN0b3IgPSB7XG5cdCAgICBydW46IGZ1bmN0aW9uIHJ1bkNvbXBvbmVudFNlbGVjdG9yKHByb3Bz
KSB7XG5cdCAgICAgIHRyeSB7XG5cdCAgICAgICAgdmFyIG5leHRQcm9wcyA9IHNvdXJjZVNlbGVj
dG9yKHN0b3JlLmdldFN0YXRlKCksIHByb3BzKTtcblx0ICAgICAgICBpZiAobmV4dFByb3BzICE9
PSBzZWxlY3Rvci5wcm9wcyB8fCBzZWxlY3Rvci5lcnJvcikge1xuXHQgICAgICAgICAgc2VsZWN0
b3Iuc2hvdWxkQ29tcG9uZW50VXBkYXRlID0gdHJ1ZTtcblx0ICAgICAgICAgIHNlbGVjdG9yLnBy
b3BzID0gbmV4dFByb3BzO1xuXHQgICAgICAgICAgc2VsZWN0b3IuZXJyb3IgPSBudWxsO1xuXHQg
ICAgICAgIH1cblx0ICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcblx0ICAgICAgICBzZWxlY3Rvci5z
aG91bGRDb21wb25lbnRVcGRhdGUgPSB0cnVlO1xuXHQgICAgICAgIHNlbGVjdG9yLmVycm9yID0g
ZXJyb3I7XG5cdCAgICAgIH1cblx0ICAgIH1cblx0ICB9O1xuXHRcblx0ICByZXR1cm4gc2VsZWN0
b3I7XG5cdH1cblx0XG5cdGZ1bmN0aW9uIGNvbm5lY3RBZHZhbmNlZChcblx0Lypcblx0ICBzZWxl
Y3RvckZhY3RvcnkgaXMgYSBmdW5jIHRoYXQgaXMgcmVzcG9uc2libGUgZm9yIHJldHVybmluZyB0
aGUgc2VsZWN0b3IgZnVuY3Rpb24gdXNlZCB0b1xuXHQgIGNvbXB1dGUgbmV3IHByb3BzIGZyb20g
c3RhdGUsIHByb3BzLCBhbmQgZGlzcGF0Y2guIEZvciBleGFtcGxlOlxuXHQgICAgIGV4cG9ydCBk
ZWZhdWx0IGNvbm5lY3RBZHZhbmNlZCgoZGlzcGF0Y2gsIG9wdGlvbnMpID0+IChzdGF0ZSwgcHJv
cHMpID0+ICh7XG5cdCAgICAgIHRoaW5nOiBzdGF0ZS50aGluZ3NbcHJvcHMudGhpbmdJZF0sXG5c
dCAgICAgIHNhdmVUaGluZzogZmllbGRzID0+IGRpc3BhdGNoKGFjdGlvbkNyZWF0b3JzLnNhdmVU
aGluZyhwcm9wcy50aGluZ0lkLCBmaWVsZHMpKSxcblx0ICAgIH0pKShZb3VyQ29tcG9uZW50KVxu
XHQgICBBY2Nlc3MgdG8gZGlzcGF0Y2ggaXMgcHJvdmlkZWQgdG8gdGhlIGZhY3Rvcnkgc28gc2Vs
ZWN0b3JGYWN0b3JpZXMgY2FuIGJpbmQgYWN0aW9uQ3JlYXRvcnNcblx0ICBvdXRzaWRlIG9mIHRo
ZWlyIHNlbGVjdG9yIGFzIGFuIG9wdGltaXphdGlvbi4gT3B0aW9ucyBwYXNzZWQgdG8gY29ubmVj
dEFkdmFuY2VkIGFyZSBwYXNzZWQgdG9cblx0ICB0aGUgc2VsZWN0b3JGYWN0b3J5LCBhbG9uZyB3
aXRoIGRpc3BsYXlOYW1lIGFuZCBXcmFwcGVkQ29tcG9uZW50LCBhcyB0aGUgc2Vjb25kIGFyZ3Vt
ZW50LlxuXHQgICBOb3RlIHRoYXQgc2VsZWN0b3JGYWN0b3J5IGlzIHJlc3BvbnNpYmxlIGZvciBh
bGwgY2FjaGluZy9tZW1vaXphdGlvbiBvZiBpbmJvdW5kIGFuZCBvdXRib3VuZFxuXHQgIHByb3Bz
LiBEbyBub3QgdXNlIGNvbm5lY3RBZHZhbmNlZCBkaXJlY3RseSB3aXRob3V0IG1lbW9pemluZyBy
ZXN1bHRzIGJldHdlZW4gY2FsbHMgdG8geW91clxuXHQgIHNlbGVjdG9yLCBvdGhlcndpc2UgdGhl
IENvbm5lY3QgY29tcG9uZW50IHdpbGwgcmUtcmVuZGVyIG9uIGV2ZXJ5IHN0YXRlIG9yIHByb3Bz
IGNoYW5nZS5cblx0Ki9cblx0c2VsZWN0b3JGYWN0b3J5KSB7XG5cdCAgdmFyIF9jb250ZXh0VHlw
ZXMsIF9jaGlsZENvbnRleHRUeXBlcztcblx0XG5cdCAgdmFyIF9yZWYgPSBhcmd1bWVudHMubGVu
Z3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IHt9
LFxuXHQgICAgICBfcmVmJGdldERpc3BsYXlOYW1lID0gX3JlZi5nZXREaXNwbGF5TmFtZSxcblx0
ICAgICAgZ2V0RGlzcGxheU5hbWUgPSBfcmVmJGdldERpc3BsYXlOYW1lID09PSB1bmRlZmluZWQg
PyBmdW5jdGlvbiAobmFtZSkge1xuXHQgICAgcmV0dXJuICdDb25uZWN0QWR2YW5jZWQoJyArIG5h
bWUgKyAnKSc7XG5cdCAgfSA6IF9yZWYkZ2V0RGlzcGxheU5hbWUsXG5cdCAgICAgIF9yZWYkbWV0
aG9kTmFtZSA9IF9yZWYubWV0aG9kTmFtZSxcblx0ICAgICAgbWV0aG9kTmFtZSA9IF9yZWYkbWV0
aG9kTmFtZSA9PT0gdW5kZWZpbmVkID8gJ2Nvbm5lY3RBZHZhbmNlZCcgOiBfcmVmJG1ldGhvZE5h
bWUsXG5cdCAgICAgIF9yZWYkcmVuZGVyQ291bnRQcm9wID0gX3JlZi5yZW5kZXJDb3VudFByb3As
XG5cdCAgICAgIHJlbmRlckNvdW50UHJvcCA9IF9yZWYkcmVuZGVyQ291bnRQcm9wID09PSB1bmRl
ZmluZWQgPyB1bmRlZmluZWQgOiBfcmVmJHJlbmRlckNvdW50UHJvcCxcblx0ICAgICAgX3JlZiRz
aG91bGRIYW5kbGVTdGF0ID0gX3JlZi5zaG91bGRIYW5kbGVTdGF0ZUNoYW5nZXMsXG5cdCAgICAg
IHNob3VsZEhhbmRsZVN0YXRlQ2hhbmdlcyA9IF9yZWYkc2hvdWxkSGFuZGxlU3RhdCA9PT0gdW5k
ZWZpbmVkID8gdHJ1ZSA6IF9yZWYkc2hvdWxkSGFuZGxlU3RhdCxcblx0ICAgICAgX3JlZiRzdG9y
ZUtleSA9IF9yZWYuc3RvcmVLZXksXG5cdCAgICAgIHN0b3JlS2V5ID0gX3JlZiRzdG9yZUtleSA9
PT0gdW5kZWZpbmVkID8gJ3N0b3JlJyA6IF9yZWYkc3RvcmVLZXksXG5cdCAgICAgIF9yZWYkd2l0
aFJlZiA9IF9yZWYud2l0aFJlZixcblx0ICAgICAgd2l0aFJlZiA9IF9yZWYkd2l0aFJlZiA9PT0g
dW5kZWZpbmVkID8gZmFsc2UgOiBfcmVmJHdpdGhSZWYsXG5cdCAgICAgIGNvbm5lY3RPcHRpb25z
ID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKF9yZWYsIFsnZ2V0RGlzcGxheU5hbWUnLCAnbWV0
aG9kTmFtZScsICdyZW5kZXJDb3VudFByb3AnLCAnc2hvdWxkSGFuZGxlU3RhdGVDaGFuZ2VzJywg
J3N0b3JlS2V5JywgJ3dpdGhSZWYnXSk7XG5cdFxuXHQgIHZhciBzdWJzY3JpcHRpb25LZXkgPSBz
dG9yZUtleSArICdTdWJzY3JpcHRpb24nO1xuXHQgIHZhciB2ZXJzaW9uID0gaG90UmVsb2FkaW5n
VmVyc2lvbisrO1xuXHRcblx0ICB2YXIgY29udGV4dFR5cGVzID0gKF9jb250ZXh0VHlwZXMgPSB7
fSwgX2NvbnRleHRUeXBlc1tzdG9yZUtleV0gPSBfUHJvcFR5cGVzLnN0b3JlU2hhcGUsIF9jb250
ZXh0VHlwZXNbc3Vic2NyaXB0aW9uS2V5XSA9IF9Qcm9wVHlwZXMuc3Vic2NyaXB0aW9uU2hhcGUs
IF9jb250ZXh0VHlwZXMpO1xuXHQgIHZhciBjaGlsZENvbnRleHRUeXBlcyA9IChfY2hpbGRDb250
ZXh0VHlwZXMgPSB7fSwgX2NoaWxkQ29udGV4dFR5cGVzW3N1YnNjcmlwdGlvbktleV0gPSBfUHJv
cFR5cGVzLnN1YnNjcmlwdGlvblNoYXBlLCBfY2hpbGRDb250ZXh0VHlwZXMpO1xuXHRcblx0ICBy
ZXR1cm4gZnVuY3Rpb24gd3JhcFdpdGhDb25uZWN0KFdyYXBwZWRDb21wb25lbnQpIHtcblx0ICAg
ICgwLCBfaW52YXJpYW50Mi5kZWZhdWx0KSh0eXBlb2YgV3JhcHBlZENvbXBvbmVudCA9PSAnZnVu
Y3Rpb24nLCAnWW91IG11c3QgcGFzcyBhIGNvbXBvbmVudCB0byB0aGUgZnVuY3Rpb24gcmV0dXJu
ZWQgYnkgJyArICgnY29ubmVjdC4gSW5zdGVhZCByZWNlaXZlZCAnICsgSlNPTi5zdHJpbmdpZnko
V3JhcHBlZENvbXBvbmVudCkpKTtcblx0XG5cdCAgICB2YXIgd3JhcHBlZENvbXBvbmVudE5hbWUg
PSBXcmFwcGVkQ29tcG9uZW50LmRpc3BsYXlOYW1lIHx8IFdyYXBwZWRDb21wb25lbnQubmFtZSB8
fCAnQ29tcG9uZW50Jztcblx0XG5cdCAgICB2YXIgZGlzcGxheU5hbWUgPSBnZXREaXNwbGF5TmFt
ZSh3cmFwcGVkQ29tcG9uZW50TmFtZSk7XG5cdFxuXHQgICAgdmFyIHNlbGVjdG9yRmFjdG9yeU9w
dGlvbnMgPSBfZXh0ZW5kcyh7fSwgY29ubmVjdE9wdGlvbnMsIHtcblx0ICAgICAgZ2V0RGlzcGxh
eU5hbWU6IGdldERpc3BsYXlOYW1lLFxuXHQgICAgICBtZXRob2ROYW1lOiBtZXRob2ROYW1lLFxu
XHQgICAgICByZW5kZXJDb3VudFByb3A6IHJlbmRlckNvdW50UHJvcCxcblx0ICAgICAgc2hvdWxk
SGFuZGxlU3RhdGVDaGFuZ2VzOiBzaG91bGRIYW5kbGVTdGF0ZUNoYW5nZXMsXG5cdCAgICAgIHN0
b3JlS2V5OiBzdG9yZUtleSxcblx0ICAgICAgd2l0aFJlZjogd2l0aFJlZixcblx0ICAgICAgZGlz
cGxheU5hbWU6IGRpc3BsYXlOYW1lLFxuXHQgICAgICB3cmFwcGVkQ29tcG9uZW50TmFtZTogd3Jh
cHBlZENvbXBvbmVudE5hbWUsXG5cdCAgICAgIFdyYXBwZWRDb21wb25lbnQ6IFdyYXBwZWRDb21w
b25lbnRcblx0ICAgIH0pO1xuXHRcblx0ICAgIHZhciBDb25uZWN0ID0gZnVuY3Rpb24gKF9Db21w
b25lbnQpIHtcblx0ICAgICAgX2luaGVyaXRzKENvbm5lY3QsIF9Db21wb25lbnQpO1xuXHRcblx0
ICAgICAgZnVuY3Rpb24gQ29ubmVjdChwcm9wcywgY29udGV4dCkge1xuXHQgICAgICAgIF9jbGFz
c0NhbGxDaGVjayh0aGlzLCBDb25uZWN0KTtcblx0XG5cdCAgICAgICAgdmFyIF90aGlzID0gX3Bv
c3NpYmxlQ29uc3RydWN0b3JSZXR1cm4odGhpcywgX0NvbXBvbmVudC5jYWxsKHRoaXMsIHByb3Bz
LCBjb250ZXh0KSk7XG5cdFxuXHQgICAgICAgIF90aGlzLnZlcnNpb24gPSB2ZXJzaW9uO1xuXHQg
ICAgICAgIF90aGlzLnN0YXRlID0ge307XG5cdCAgICAgICAgX3RoaXMucmVuZGVyQ291bnQgPSAw
O1xuXHQgICAgICAgIF90aGlzLnN0b3JlID0gcHJvcHNbc3RvcmVLZXldIHx8IGNvbnRleHRbc3Rv
cmVLZXldO1xuXHQgICAgICAgIF90aGlzLnByb3BzTW9kZSA9IEJvb2xlYW4ocHJvcHNbc3RvcmVL
ZXldKTtcblx0ICAgICAgICBfdGhpcy5zZXRXcmFwcGVkSW5zdGFuY2UgPSBfdGhpcy5zZXRXcmFw
cGVkSW5zdGFuY2UuYmluZChfdGhpcyk7XG5cdFxuXHQgICAgICAgICgwLCBfaW52YXJpYW50Mi5k
ZWZhdWx0KShfdGhpcy5zdG9yZSwgJ0NvdWxkIG5vdCBmaW5kIFwiJyArIHN0b3JlS2V5ICsgJ1wi
IGluIGVpdGhlciB0aGUgY29udGV4dCBvciBwcm9wcyBvZiAnICsgKCdcIicgKyBkaXNwbGF5TmFt
ZSArICdcIi4gRWl0aGVyIHdyYXAgdGhlIHJvb3QgY29tcG9uZW50IGluIGEgPFByb3ZpZGVyPiwg
JykgKyAoJ29yIGV4cGxpY2l0bHkgcGFzcyBcIicgKyBzdG9yZUtleSArICdcIiBhcyBhIHByb3Ag
dG8gXCInICsgZGlzcGxheU5hbWUgKyAnXCIuJykpO1xuXHRcblx0ICAgICAgICBfdGhpcy5pbml0
U2VsZWN0b3IoKTtcblx0ICAgICAgICBfdGhpcy5pbml0U3Vic2NyaXB0aW9uKCk7XG5cdCAgICAg
ICAgcmV0dXJuIF90aGlzO1xuXHQgICAgICB9XG5cdFxuXHQgICAgICBDb25uZWN0LnByb3RvdHlw
ZS5nZXRDaGlsZENvbnRleHQgPSBmdW5jdGlvbiBnZXRDaGlsZENvbnRleHQoKSB7XG5cdCAgICAg
ICAgdmFyIF9yZWYyO1xuXHRcblx0ICAgICAgICAvLyBJZiB0aGlzIGNvbXBvbmVudCByZWNlaXZl
ZCBzdG9yZSBmcm9tIHByb3BzLCBpdHMgc3Vic2NyaXB0aW9uIHNob3VsZCBiZSB0cmFuc3BhcmVu
dFxuXHQgICAgICAgIC8vIHRvIGFueSBkZXNjZW5kYW50cyByZWNlaXZpbmcgc3RvcmUrc3Vic2Ny
aXB0aW9uIGZyb20gY29udGV4dDsgaXQgcGFzc2VzIGFsb25nXG5cdCAgICAgICAgLy8gc3Vic2Ny
aXB0aW9uIHBhc3NlZCB0byBpdC4gT3RoZXJ3aXNlLCBpdCBzaGFkb3dzIHRoZSBwYXJlbnQgc3Vi
c2NyaXB0aW9uLCB3aGljaCBhbGxvd3Ncblx0ICAgICAgICAvLyBDb25uZWN0IHRvIGNvbnRyb2wg
b3JkZXJpbmcgb2Ygbm90aWZpY2F0aW9ucyB0byBmbG93IHRvcC1kb3duLlxuXHQgICAgICAgIHZh
ciBzdWJzY3JpcHRpb24gPSB0aGlzLnByb3BzTW9kZSA/IG51bGwgOiB0aGlzLnN1YnNjcmlwdGlv
bjtcblx0ICAgICAgICByZXR1cm4gX3JlZjIgPSB7fSwgX3JlZjJbc3Vic2NyaXB0aW9uS2V5XSA9
IHN1YnNjcmlwdGlvbiB8fCB0aGlzLmNvbnRleHRbc3Vic2NyaXB0aW9uS2V5XSwgX3JlZjI7XG5c
dCAgICAgIH07XG5cdFxuXHQgICAgICBDb25uZWN0LnByb3RvdHlwZS5jb21wb25lbnREaWRNb3Vu
dCA9IGZ1bmN0aW9uIGNvbXBvbmVudERpZE1vdW50KCkge1xuXHQgICAgICAgIGlmICghc2hvdWxk
SGFuZGxlU3RhdGVDaGFuZ2VzKSByZXR1cm47XG5cdFxuXHQgICAgICAgIC8vIGNvbXBvbmVudFdp
bGxNb3VudCBmaXJlcyBkdXJpbmcgc2VydmVyIHNpZGUgcmVuZGVyaW5nLCBidXQgY29tcG9uZW50
RGlkTW91bnQgYW5kXG5cdCAgICAgICAgLy8gY29tcG9uZW50V2lsbFVubW91bnQgZG8gbm90LiBC
ZWNhdXNlIG9mIHRoaXMsIHRyeVN1YnNjcmliZSBoYXBwZW5zIGR1cmluZyAuLi5kaWRNb3VudC5c
blx0ICAgICAgICAvLyBPdGhlcndpc2UsIHVuc3Vic2NyaXB0aW9uIHdvdWxkIG5ldmVyIHRha2Ug
cGxhY2UgZHVyaW5nIFNTUiwgY2F1c2luZyBhIG1lbW9yeSBsZWFrLlxuXHQgICAgICAgIC8vIFRv
IGhhbmRsZSB0aGUgY2FzZSB3aGVyZSBhIGNoaWxkIGNvbXBvbmVudCBtYXkgaGF2ZSB0cmlnZ2Vy
ZWQgYSBzdGF0ZSBjaGFuZ2UgYnlcblx0ICAgICAgICAvLyBkaXNwYXRjaGluZyBhbiBhY3Rpb24g
aW4gaXRzIGNvbXBvbmVudFdpbGxNb3VudCwgd2UgaGF2ZSB0byByZS1ydW4gdGhlIHNlbGVjdCBh
bmQgbWF5YmVcblx0ICAgICAgICAvLyByZS1yZW5kZXIuXG5cdCAgICAgICAgdGhpcy5zdWJzY3Jp
cHRpb24udHJ5U3Vic2NyaWJlKCk7XG5cdCAgICAgICAgdGhpcy5zZWxlY3Rvci5ydW4odGhpcy5w
cm9wcyk7XG5cdCAgICAgICAgaWYgKHRoaXMuc2VsZWN0b3Iuc2hvdWxkQ29tcG9uZW50VXBkYXRl
KSB0aGlzLmZvcmNlVXBkYXRlKCk7XG5cdCAgICAgIH07XG5cdFxuXHQgICAgICBDb25uZWN0LnBy
b3RvdHlwZS5jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzID0gZnVuY3Rpb24gY29tcG9uZW50V2ls
bFJlY2VpdmVQcm9wcyhuZXh0UHJvcHMpIHtcblx0ICAgICAgICB0aGlzLnNlbGVjdG9yLnJ1bihu
ZXh0UHJvcHMpO1xuXHQgICAgICB9O1xuXHRcblx0ICAgICAgQ29ubmVjdC5wcm90b3R5cGUuc2hv
dWxkQ29tcG9uZW50VXBkYXRlID0gZnVuY3Rpb24gc2hvdWxkQ29tcG9uZW50VXBkYXRlKCkge1xu
XHQgICAgICAgIHJldHVybiB0aGlzLnNlbGVjdG9yLnNob3VsZENvbXBvbmVudFVwZGF0ZTtcblx0
ICAgICAgfTtcblx0XG5cdCAgICAgIENvbm5lY3QucHJvdG90eXBlLmNvbXBvbmVudFdpbGxVbm1v
dW50ID0gZnVuY3Rpb24gY29tcG9uZW50V2lsbFVubW91bnQoKSB7XG5cdCAgICAgICAgaWYgKHRo
aXMuc3Vic2NyaXB0aW9uKSB0aGlzLnN1YnNjcmlwdGlvbi50cnlVbnN1YnNjcmliZSgpO1xuXHQg
ICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uID0gbnVsbDtcblx0ICAgICAgICB0aGlzLm5vdGlmeU5l
c3RlZFN1YnMgPSBub29wO1xuXHQgICAgICAgIHRoaXMuc3RvcmUgPSBudWxsO1xuXHQgICAgICAg
IHRoaXMuc2VsZWN0b3IucnVuID0gbm9vcDtcblx0ICAgICAgICB0aGlzLnNlbGVjdG9yLnNob3Vs
ZENvbXBvbmVudFVwZGF0ZSA9IGZhbHNlO1xuXHQgICAgICB9O1xuXHRcblx0ICAgICAgQ29ubmVj
dC5wcm90b3R5cGUuZ2V0V3JhcHBlZEluc3RhbmNlID0gZnVuY3Rpb24gZ2V0V3JhcHBlZEluc3Rh
bmNlKCkge1xuXHQgICAgICAgICgwLCBfaW52YXJpYW50Mi5kZWZhdWx0KSh3aXRoUmVmLCAnVG8g
YWNjZXNzIHRoZSB3cmFwcGVkIGluc3RhbmNlLCB5b3UgbmVlZCB0byBzcGVjaWZ5ICcgKyAoJ3sg
d2l0aFJlZjogdHJ1ZSB9IGluIHRoZSBvcHRpb25zIGFyZ3VtZW50IG9mIHRoZSAnICsgbWV0aG9k
TmFtZSArICcoKSBjYWxsLicpKTtcblx0ICAgICAgICByZXR1cm4gdGhpcy53cmFwcGVkSW5zdGFu
Y2U7XG5cdCAgICAgIH07XG5cdFxuXHQgICAgICBDb25uZWN0LnByb3RvdHlwZS5zZXRXcmFwcGVk
SW5zdGFuY2UgPSBmdW5jdGlvbiBzZXRXcmFwcGVkSW5zdGFuY2UocmVmKSB7XG5cdCAgICAgICAg
dGhpcy53cmFwcGVkSW5zdGFuY2UgPSByZWY7XG5cdCAgICAgIH07XG5cdFxuXHQgICAgICBDb25u
ZWN0LnByb3RvdHlwZS5pbml0U2VsZWN0b3IgPSBmdW5jdGlvbiBpbml0U2VsZWN0b3IoKSB7XG5c
dCAgICAgICAgdmFyIHNvdXJjZVNlbGVjdG9yID0gc2VsZWN0b3JGYWN0b3J5KHRoaXMuc3RvcmUu
ZGlzcGF0Y2gsIHNlbGVjdG9yRmFjdG9yeU9wdGlvbnMpO1xuXHQgICAgICAgIHRoaXMuc2VsZWN0
b3IgPSBtYWtlU2VsZWN0b3JTdGF0ZWZ1bChzb3VyY2VTZWxlY3RvciwgdGhpcy5zdG9yZSk7XG5c
dCAgICAgICAgdGhpcy5zZWxlY3Rvci5ydW4odGhpcy5wcm9wcyk7XG5cdCAgICAgIH07XG5cdFxu
XHQgICAgICBDb25uZWN0LnByb3RvdHlwZS5pbml0U3Vic2NyaXB0aW9uID0gZnVuY3Rpb24gaW5p
dFN1YnNjcmlwdGlvbigpIHtcblx0ICAgICAgICBpZiAoIXNob3VsZEhhbmRsZVN0YXRlQ2hhbmdl
cykgcmV0dXJuO1xuXHRcblx0ICAgICAgICAvLyBwYXJlbnRTdWIncyBzb3VyY2Ugc2hvdWxkIG1h
dGNoIHdoZXJlIHN0b3JlIGNhbWUgZnJvbTogcHJvcHMgdnMuIGNvbnRleHQuIEEgY29tcG9uZW50
XG5cdCAgICAgICAgLy8gY29ubmVjdGVkIHRvIHRoZSBzdG9yZSB2aWEgcHJvcHMgc2hvdWxkbid0
IHVzZSBzdWJzY3JpcHRpb24gZnJvbSBjb250ZXh0LCBvciB2aWNlIHZlcnNhLlxuXHQgICAgICAg
IHZhciBwYXJlbnRTdWIgPSAodGhpcy5wcm9wc01vZGUgPyB0aGlzLnByb3BzIDogdGhpcy5jb250
ZXh0KVtzdWJzY3JpcHRpb25LZXldO1xuXHQgICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uID0gbmV3
IF9TdWJzY3JpcHRpb24yLmRlZmF1bHQodGhpcy5zdG9yZSwgcGFyZW50U3ViLCB0aGlzLm9uU3Rh
dGVDaGFuZ2UuYmluZCh0aGlzKSk7XG5cdFxuXHQgICAgICAgIC8vIGBub3RpZnlOZXN0ZWRTdWJz
YCBpcyBkdXBsaWNhdGVkIHRvIGhhbmRsZSB0aGUgY2FzZSB3aGVyZSB0aGUgY29tcG9uZW50IGlz
ICB1bm1vdW50ZWQgaW5cblx0ICAgICAgICAvLyB0aGUgbWlkZGxlIG9mIHRoZSBub3RpZmljYXRp
b24gbG9vcCwgd2hlcmUgYHRoaXMuc3Vic2NyaXB0aW9uYCB3aWxsIHRoZW4gYmUgbnVsbC4gQW5c
blx0ICAgICAgICAvLyBleHRyYSBudWxsIGNoZWNrIGV2ZXJ5IGNoYW5nZSBjYW4gYmUgYXZvaWRl
ZCBieSBjb3B5aW5nIHRoZSBtZXRob2Qgb250byBgdGhpc2AgYW5kIHRoZW5cblx0ICAgICAgICAv
LyByZXBsYWNpbmcgaXQgd2l0aCBhIG5vLW9wIG9uIHVubW91bnQuIFRoaXMgY2FuIHByb2JhYmx5
IGJlIGF2b2lkZWQgaWYgU3Vic2NyaXB0aW9uJ3Ncblx0ICAgICAgICAvLyBsaXN0ZW5lcnMgbG9n
aWMgaXMgY2hhbmdlZCB0byBub3QgY2FsbCBsaXN0ZW5lcnMgdGhhdCBoYXZlIGJlZW4gdW5zdWJz
Y3JpYmVkIGluIHRoZVxuXHQgICAgICAgIC8vIG1pZGRsZSBvZiB0aGUgbm90aWZpY2F0aW9uIGxv
b3AuXG5cdCAgICAgICAgdGhpcy5ub3RpZnlOZXN0ZWRTdWJzID0gdGhpcy5zdWJzY3JpcHRpb24u
bm90aWZ5TmVzdGVkU3Vicy5iaW5kKHRoaXMuc3Vic2NyaXB0aW9uKTtcblx0ICAgICAgfTtcblx0
XG5cdCAgICAgIENvbm5lY3QucHJvdG90eXBlLm9uU3RhdGVDaGFuZ2UgPSBmdW5jdGlvbiBvblN0
YXRlQ2hhbmdlKCkge1xuXHQgICAgICAgIHRoaXMuc2VsZWN0b3IucnVuKHRoaXMucHJvcHMpO1xu
XHRcblx0ICAgICAgICBpZiAoIXRoaXMuc2VsZWN0b3Iuc2hvdWxkQ29tcG9uZW50VXBkYXRlKSB7
XG5cdCAgICAgICAgICB0aGlzLm5vdGlmeU5lc3RlZFN1YnMoKTtcblx0ICAgICAgICB9IGVsc2Ug
e1xuXHQgICAgICAgICAgdGhpcy5jb21wb25lbnREaWRVcGRhdGUgPSB0aGlzLm5vdGlmeU5lc3Rl
ZFN1YnNPbkNvbXBvbmVudERpZFVwZGF0ZTtcblx0ICAgICAgICAgIHRoaXMuc2V0U3RhdGUoZHVt
bXlTdGF0ZSk7XG5cdCAgICAgICAgfVxuXHQgICAgICB9O1xuXHRcblx0ICAgICAgQ29ubmVjdC5w
cm90b3R5cGUubm90aWZ5TmVzdGVkU3Vic09uQ29tcG9uZW50RGlkVXBkYXRlID0gZnVuY3Rpb24g
bm90aWZ5TmVzdGVkU3Vic09uQ29tcG9uZW50RGlkVXBkYXRlKCkge1xuXHQgICAgICAgIC8vIGBj
b21wb25lbnREaWRVcGRhdGVgIGlzIGNvbmRpdGlvbmFsbHkgaW1wbGVtZW50ZWQgd2hlbiBgb25T
dGF0ZUNoYW5nZWAgZGV0ZXJtaW5lcyBpdFxuXHQgICAgICAgIC8vIG5lZWRzIHRvIG5vdGlmeSBu
ZXN0ZWQgc3Vicy4gT25jZSBjYWxsZWQsIGl0IHVuaW1wbGVtZW50cyBpdHNlbGYgdW50aWwgZnVy
dGhlciBzdGF0ZVxuXHQgICAgICAgIC8vIGNoYW5nZXMgb2NjdXIuIERvaW5nIGl0IHRoaXMgd2F5
IHZzIGhhdmluZyBhIHBlcm1hbmVudCBgY29tcG9uZW50RGlkVXBkYXRlYCB0aGF0IGRvZXNcblx0
ICAgICAgICAvLyBhIGJvb2xlYW4gY2hlY2sgZXZlcnkgdGltZSBhdm9pZHMgYW4gZXh0cmEgbWV0
aG9kIGNhbGwgbW9zdCBvZiB0aGUgdGltZSwgcmVzdWx0aW5nXG5cdCAgICAgICAgLy8gaW4gc29t
ZSBwZXJmIGJvb3N0LlxuXHQgICAgICAgIHRoaXMuY29tcG9uZW50RGlkVXBkYXRlID0gdW5kZWZp
bmVkO1xuXHQgICAgICAgIHRoaXMubm90aWZ5TmVzdGVkU3VicygpO1xuXHQgICAgICB9O1xuXHRc
blx0ICAgICAgQ29ubmVjdC5wcm90b3R5cGUuaXNTdWJzY3JpYmVkID0gZnVuY3Rpb24gaXNTdWJz
Y3JpYmVkKCkge1xuXHQgICAgICAgIHJldHVybiBCb29sZWFuKHRoaXMuc3Vic2NyaXB0aW9uKSAm
JiB0aGlzLnN1YnNjcmlwdGlvbi5pc1N1YnNjcmliZWQoKTtcblx0ICAgICAgfTtcblx0XG5cdCAg
ICAgIENvbm5lY3QucHJvdG90eXBlLmFkZEV4dHJhUHJvcHMgPSBmdW5jdGlvbiBhZGRFeHRyYVBy
b3BzKHByb3BzKSB7XG5cdCAgICAgICAgaWYgKCF3aXRoUmVmICYmICFyZW5kZXJDb3VudFByb3Ag
JiYgISh0aGlzLnByb3BzTW9kZSAmJiB0aGlzLnN1YnNjcmlwdGlvbikpIHJldHVybiBwcm9wcztc
blx0ICAgICAgICAvLyBtYWtlIGEgc2hhbGxvdyBjb3B5IHNvIHRoYXQgZmllbGRzIGFkZGVkIGRv
bid0IGxlYWsgdG8gdGhlIG9yaWdpbmFsIHNlbGVjdG9yLlxuXHQgICAgICAgIC8vIHRoaXMgaXMg
ZXNwZWNpYWxseSBpbXBvcnRhbnQgZm9yICdyZWYnIHNpbmNlIHRoYXQncyBhIHJlZmVyZW5jZSBi
YWNrIHRvIHRoZSBjb21wb25lbnRcblx0ICAgICAgICAvLyBpbnN0YW5jZS4gYSBzaW5nbGV0b24g
bWVtb2l6ZWQgc2VsZWN0b3Igd291bGQgdGhlbiBiZSBob2xkaW5nIGEgcmVmZXJlbmNlIHRvIHRo
ZVxuXHQgICAgICAgIC8vIGluc3RhbmNlLCBwcmV2ZW50aW5nIHRoZSBpbnN0YW5jZSBmcm9tIGJl
aW5nIGdhcmJhZ2UgY29sbGVjdGVkLCBhbmQgdGhhdCB3b3VsZCBiZSBiYWRcblx0ICAgICAgICB2
YXIgd2l0aEV4dHJhcyA9IF9leHRlbmRzKHt9LCBwcm9wcyk7XG5cdCAgICAgICAgaWYgKHdpdGhS
ZWYpIHdpdGhFeHRyYXMucmVmID0gdGhpcy5zZXRXcmFwcGVkSW5zdGFuY2U7XG5cdCAgICAgICAg
aWYgKHJlbmRlckNvdW50UHJvcCkgd2l0aEV4dHJhc1tyZW5kZXJDb3VudFByb3BdID0gdGhpcy5y
ZW5kZXJDb3VudCsrO1xuXHQgICAgICAgIGlmICh0aGlzLnByb3BzTW9kZSAmJiB0aGlzLnN1YnNj
cmlwdGlvbikgd2l0aEV4dHJhc1tzdWJzY3JpcHRpb25LZXldID0gdGhpcy5zdWJzY3JpcHRpb247
XG5cdCAgICAgICAgcmV0dXJuIHdpdGhFeHRyYXM7XG5cdCAgICAgIH07XG5cdFxuXHQgICAgICBD
b25uZWN0LnByb3RvdHlwZS5yZW5kZXIgPSBmdW5jdGlvbiByZW5kZXIoKSB7XG5cdCAgICAgICAg
dmFyIHNlbGVjdG9yID0gdGhpcy5zZWxlY3Rvcjtcblx0ICAgICAgICBzZWxlY3Rvci5zaG91bGRD
b21wb25lbnRVcGRhdGUgPSBmYWxzZTtcblx0XG5cdCAgICAgICAgaWYgKHNlbGVjdG9yLmVycm9y
KSB7XG5cdCAgICAgICAgICB0aHJvdyBzZWxlY3Rvci5lcnJvcjtcblx0ICAgICAgICB9IGVsc2Ug
e1xuXHQgICAgICAgICAgcmV0dXJuICgwLCBfcmVhY3QuY3JlYXRlRWxlbWVudCkoV3JhcHBlZENv
bXBvbmVudCwgdGhpcy5hZGRFeHRyYVByb3BzKHNlbGVjdG9yLnByb3BzKSk7XG5cdCAgICAgICAg
fVxuXHQgICAgICB9O1xuXHRcblx0ICAgICAgcmV0dXJuIENvbm5lY3Q7XG5cdCAgICB9KF9yZWFj
dC5Db21wb25lbnQpO1xuXHRcblx0ICAgIENvbm5lY3QuV3JhcHBlZENvbXBvbmVudCA9IFdyYXBw
ZWRDb21wb25lbnQ7XG5cdCAgICBDb25uZWN0LmRpc3BsYXlOYW1lID0gZGlzcGxheU5hbWU7XG5c
dCAgICBDb25uZWN0LmNoaWxkQ29udGV4dFR5cGVzID0gY2hpbGRDb250ZXh0VHlwZXM7XG5cdCAg
ICBDb25uZWN0LmNvbnRleHRUeXBlcyA9IGNvbnRleHRUeXBlcztcblx0ICAgIENvbm5lY3QucHJv
cFR5cGVzID0gY29udGV4dFR5cGVzO1xuXHRcblx0ICAgIGlmIChmYWxzZSkge1xuXHQgICAgICBD
b25uZWN0LnByb3RvdHlwZS5jb21wb25lbnRXaWxsVXBkYXRlID0gZnVuY3Rpb24gY29tcG9uZW50
V2lsbFVwZGF0ZSgpIHtcblx0ICAgICAgICB2YXIgX3RoaXMyID0gdGhpcztcblx0XG5cdCAgICAg
ICAgLy8gV2UgYXJlIGhvdCByZWxvYWRpbmchXG5cdCAgICAgICAgaWYgKHRoaXMudmVyc2lvbiAh
PT0gdmVyc2lvbikge1xuXHQgICAgICAgICAgdGhpcy52ZXJzaW9uID0gdmVyc2lvbjtcblx0ICAg
ICAgICAgIHRoaXMuaW5pdFNlbGVjdG9yKCk7XG5cdFxuXHQgICAgICAgICAgLy8gSWYgYW55IGNv
bm5lY3RlZCBkZXNjZW5kYW50cyBkb24ndCBob3QgcmVsb2FkIChhbmQgcmVzdWJzY3JpYmUgaW4g
dGhlIHByb2Nlc3MpLCB0aGVpclxuXHQgICAgICAgICAgLy8gbGlzdGVuZXJzIHdpbGwgYmUgbG9z
dCB3aGVuIHdlIHVuc3Vic2NyaWJlLiBVbmZvcnR1bmF0ZWx5LCBieSBjb3B5aW5nIG92ZXIgYWxs
XG5cdCAgICAgICAgICAvLyBsaXN0ZW5lcnMsIHRoaXMgZG9lcyBtZWFuIHRoYXQgdGhlIG9sZCB2
ZXJzaW9ucyBvZiBjb25uZWN0ZWQgZGVzY2VuZGFudHMgd2lsbCBzdGlsbCBiZVxuXHQgICAgICAg
ICAgLy8gbm90aWZpZWQgb2Ygc3RhdGUgY2hhbmdlczsgaG93ZXZlciwgdGhlaXIgb25TdGF0ZUNo
YW5nZSBmdW5jdGlvbiBpcyBhIG5vLW9wIHNvIHRoaXNcblx0ICAgICAgICAgIC8vIGlzbid0IGEg
aHVnZSBkZWFsLlxuXHQgICAgICAgICAgdmFyIG9sZExpc3RlbmVycyA9IFtdO1xuXHRcblx0ICAg
ICAgICAgIGlmICh0aGlzLnN1YnNjcmlwdGlvbikge1xuXHQgICAgICAgICAgICBvbGRMaXN0ZW5l
cnMgPSB0aGlzLnN1YnNjcmlwdGlvbi5saXN0ZW5lcnMuZ2V0KCk7XG5cdCAgICAgICAgICAgIHRo
aXMuc3Vic2NyaXB0aW9uLnRyeVVuc3Vic2NyaWJlKCk7XG5cdCAgICAgICAgICB9XG5cdCAgICAg
ICAgICB0aGlzLmluaXRTdWJzY3JpcHRpb24oKTtcblx0ICAgICAgICAgIGlmIChzaG91bGRIYW5k
bGVTdGF0ZUNoYW5nZXMpIHtcblx0ICAgICAgICAgICAgdGhpcy5zdWJzY3JpcHRpb24udHJ5U3Vi
c2NyaWJlKCk7XG5cdCAgICAgICAgICAgIG9sZExpc3RlbmVycy5mb3JFYWNoKGZ1bmN0aW9uIChs
aXN0ZW5lcikge1xuXHQgICAgICAgICAgICAgIHJldHVybiBfdGhpczIuc3Vic2NyaXB0aW9uLmxp
c3RlbmVycy5zdWJzY3JpYmUobGlzdGVuZXIpO1xuXHQgICAgICAgICAgICB9KTtcblx0ICAgICAg
ICAgIH1cblx0ICAgICAgICB9XG5cdCAgICAgIH07XG5cdCAgICB9XG5cdFxuXHQgICAgcmV0dXJu
ICgwLCBfaG9pc3ROb25SZWFjdFN0YXRpY3MyLmRlZmF1bHQpKENvbm5lY3QsIFdyYXBwZWRDb21w
b25lbnQpO1xuXHQgIH07XG5cdH1cblxuLyoqKi8gfSxcbi8qIDgwICovXG4vKioqLyBmdW5jdGlv
bihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQndXNlIHN0cmlj
dCc7XG5cdFxuXHRleHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuXHRleHBvcnRzLndyYXBNYXBU
b1Byb3BzQ29uc3RhbnQgPSB3cmFwTWFwVG9Qcm9wc0NvbnN0YW50O1xuXHRleHBvcnRzLmdldERl
cGVuZHNPbk93blByb3BzID0gZ2V0RGVwZW5kc09uT3duUHJvcHM7XG5cdGV4cG9ydHMud3JhcE1h
cFRvUHJvcHNGdW5jID0gd3JhcE1hcFRvUHJvcHNGdW5jO1xuXHRcblx0dmFyIF92ZXJpZnlQbGFp
bk9iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oODMpO1xuXHRcblx0dmFyIF92ZXJpZnlQbGFp
bk9iamVjdDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF92ZXJpZnlQbGFpbk9iamVjdCk7XG5c
dFxuXHRmdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYm
IG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXHRcblx0ZnVuY3Rp
b24gd3JhcE1hcFRvUHJvcHNDb25zdGFudChnZXRDb25zdGFudCkge1xuXHQgIHJldHVybiBmdW5j
dGlvbiBpbml0Q29uc3RhbnRTZWxlY3RvcihkaXNwYXRjaCwgb3B0aW9ucykge1xuXHQgICAgdmFy
IGNvbnN0YW50ID0gZ2V0Q29uc3RhbnQoZGlzcGF0Y2gsIG9wdGlvbnMpO1xuXHRcblx0ICAgIGZ1
bmN0aW9uIGNvbnN0YW50U2VsZWN0b3IoKSB7XG5cdCAgICAgIHJldHVybiBjb25zdGFudDtcblx0
ICAgIH1cblx0ICAgIGNvbnN0YW50U2VsZWN0b3IuZGVwZW5kc09uT3duUHJvcHMgPSBmYWxzZTtc
blx0ICAgIHJldHVybiBjb25zdGFudFNlbGVjdG9yO1xuXHQgIH07XG5cdH1cblx0XG5cdC8vIGRl
cGVuZHNPbk93blByb3BzIGlzIHVzZWQgYnkgY3JlYXRlTWFwVG9Qcm9wc1Byb3h5IHRvIGRldGVy
bWluZSB3aGV0aGVyIHRvIHBhc3MgcHJvcHMgYXMgYXJnc1xuXHQvLyB0byB0aGUgbWFwVG9Qcm9w
cyBmdW5jdGlvbiBiZWluZyB3cmFwcGVkLiBJdCBpcyBhbHNvIHVzZWQgYnkgbWFrZVB1cmVQcm9w
c1NlbGVjdG9yIHRvIGRldGVybWluZVxuXHQvLyB3aGV0aGVyIG1hcFRvUHJvcHMgbmVlZHMgdG8g
YmUgaW52b2tlZCB3aGVuIHByb3BzIGhhdmUgY2hhbmdlZC5cblx0Ly8gXG5cdC8vIEEgbGVuZ3Ro
IG9mIG9uZSBzaWduYWxzIHRoYXQgbWFwVG9Qcm9wcyBkb2VzIG5vdCBkZXBlbmQgb24gcHJvcHMg
ZnJvbSB0aGUgcGFyZW50IGNvbXBvbmVudC5cblx0Ly8gQSBsZW5ndGggb2YgemVybyBpcyBhc3N1
bWVkIHRvIG1lYW4gbWFwVG9Qcm9wcyBpcyBnZXR0aW5nIGFyZ3MgdmlhIGFyZ3VtZW50cyBvciAu
Li5hcmdzIGFuZFxuXHQvLyB0aGVyZWZvcmUgbm90IHJlcG9ydGluZyBpdHMgbGVuZ3RoIGFjY3Vy
YXRlbHkuLlxuXHRmdW5jdGlvbiBnZXREZXBlbmRzT25Pd25Qcm9wcyhtYXBUb1Byb3BzKSB7XG5c
dCAgcmV0dXJuIG1hcFRvUHJvcHMuZGVwZW5kc09uT3duUHJvcHMgIT09IG51bGwgJiYgbWFwVG9Q
cm9wcy5kZXBlbmRzT25Pd25Qcm9wcyAhPT0gdW5kZWZpbmVkID8gQm9vbGVhbihtYXBUb1Byb3Bz
LmRlcGVuZHNPbk93blByb3BzKSA6IG1hcFRvUHJvcHMubGVuZ3RoICE9PSAxO1xuXHR9XG5cdFxu
XHQvLyBVc2VkIGJ5IHdoZW5NYXBTdGF0ZVRvUHJvcHNJc0Z1bmN0aW9uIGFuZCB3aGVuTWFwRGlz
cGF0Y2hUb1Byb3BzSXNGdW5jdGlvbixcblx0Ly8gdGhpcyBmdW5jdGlvbiB3cmFwcyBtYXBUb1By
b3BzIGluIGEgcHJveHkgZnVuY3Rpb24gd2hpY2ggZG9lcyBzZXZlcmFsIHRoaW5nczpcblx0Ly8g
XG5cdC8vICAqIERldGVjdHMgd2hldGhlciB0aGUgbWFwVG9Qcm9wcyBmdW5jdGlvbiBiZWluZyBj
YWxsZWQgZGVwZW5kcyBvbiBwcm9wcywgd2hpY2hcblx0Ly8gICAgaXMgdXNlZCBieSBzZWxlY3Rv
ckZhY3RvcnkgdG8gZGVjaWRlIGlmIGl0IHNob3VsZCByZWludm9rZSBvbiBwcm9wcyBjaGFuZ2Vz
LlxuXHQvLyAgICBcblx0Ly8gICogT24gZmlyc3QgY2FsbCwgaGFuZGxlcyBtYXBUb1Byb3BzIGlm
IHJldHVybnMgYW5vdGhlciBmdW5jdGlvbiwgYW5kIHRyZWF0cyB0aGF0XG5cdC8vICAgIG5ldyBm
dW5jdGlvbiBhcyB0aGUgdHJ1ZSBtYXBUb1Byb3BzIGZvciBzdWJzZXF1ZW50IGNhbGxzLlxuXHQv
LyAgICBcblx0Ly8gICogT24gZmlyc3QgY2FsbCwgdmVyaWZpZXMgdGhlIGZpcnN0IHJlc3VsdCBp
cyBhIHBsYWluIG9iamVjdCwgaW4gb3JkZXIgdG8gd2FyblxuXHQvLyAgICB0aGUgZGV2ZWxvcGVy
IHRoYXQgdGhlaXIgbWFwVG9Qcm9wcyBmdW5jdGlvbiBpcyBub3QgcmV0dXJuaW5nIGEgdmFsaWQg
cmVzdWx0LlxuXHQvLyAgICBcblx0ZnVuY3Rpb24gd3JhcE1hcFRvUHJvcHNGdW5jKG1hcFRvUHJv
cHMsIG1ldGhvZE5hbWUpIHtcblx0ICByZXR1cm4gZnVuY3Rpb24gaW5pdFByb3h5U2VsZWN0b3Io
ZGlzcGF0Y2gsIF9yZWYpIHtcblx0ICAgIHZhciBkaXNwbGF5TmFtZSA9IF9yZWYuZGlzcGxheU5h
bWU7XG5cdFxuXHQgICAgdmFyIHByb3h5ID0gZnVuY3Rpb24gbWFwVG9Qcm9wc1Byb3h5KHN0YXRl
T3JEaXNwYXRjaCwgb3duUHJvcHMpIHtcblx0ICAgICAgcmV0dXJuIHByb3h5LmRlcGVuZHNPbk93
blByb3BzID8gcHJveHkubWFwVG9Qcm9wcyhzdGF0ZU9yRGlzcGF0Y2gsIG93blByb3BzKSA6IHBy
b3h5Lm1hcFRvUHJvcHMoc3RhdGVPckRpc3BhdGNoKTtcblx0ICAgIH07XG5cdFxuXHQgICAgLy8g
YWxsb3cgZGV0ZWN0RmFjdG9yeUFuZFZlcmlmeSB0byBnZXQgb3duUHJvcHNcblx0ICAgIHByb3h5
LmRlcGVuZHNPbk93blByb3BzID0gdHJ1ZTtcblx0XG5cdCAgICBwcm94eS5tYXBUb1Byb3BzID0g
ZnVuY3Rpb24gZGV0ZWN0RmFjdG9yeUFuZFZlcmlmeShzdGF0ZU9yRGlzcGF0Y2gsIG93blByb3Bz
KSB7XG5cdCAgICAgIHByb3h5Lm1hcFRvUHJvcHMgPSBtYXBUb1Byb3BzO1xuXHQgICAgICBwcm94
eS5kZXBlbmRzT25Pd25Qcm9wcyA9IGdldERlcGVuZHNPbk93blByb3BzKG1hcFRvUHJvcHMpO1xu
XHQgICAgICB2YXIgcHJvcHMgPSBwcm94eShzdGF0ZU9yRGlzcGF0Y2gsIG93blByb3BzKTtcblx0
XG5cdCAgICAgIGlmICh0eXBlb2YgcHJvcHMgPT09ICdmdW5jdGlvbicpIHtcblx0ICAgICAgICBw
cm94eS5tYXBUb1Byb3BzID0gcHJvcHM7XG5cdCAgICAgICAgcHJveHkuZGVwZW5kc09uT3duUHJv
cHMgPSBnZXREZXBlbmRzT25Pd25Qcm9wcyhwcm9wcyk7XG5cdCAgICAgICAgcHJvcHMgPSBwcm94
eShzdGF0ZU9yRGlzcGF0Y2gsIG93blByb3BzKTtcblx0ICAgICAgfVxuXHRcblx0ICAgICAgaWYg
KGZhbHNlKSAoMCwgX3ZlcmlmeVBsYWluT2JqZWN0Mi5kZWZhdWx0KShwcm9wcywgZGlzcGxheU5h
bWUsIG1ldGhvZE5hbWUpO1xuXHRcblx0ICAgICAgcmV0dXJuIHByb3BzO1xuXHQgICAgfTtcblx0
XG5cdCAgICByZXR1cm4gcHJveHk7XG5cdCAgfTtcblx0fVxuXG4vKioqLyB9LFxuLyogODEgKi9c
bi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xu
XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdGV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5cdGV4
cG9ydHMuY29ubmVjdCA9IGV4cG9ydHMuY29ubmVjdEFkdmFuY2VkID0gZXhwb3J0cy5jcmVhdGVQ
cm92aWRlciA9IGV4cG9ydHMuUHJvdmlkZXIgPSB1bmRlZmluZWQ7XG5cdFxuXHR2YXIgX1Byb3Zp
ZGVyID0gX193ZWJwYWNrX3JlcXVpcmVfXygxODcpO1xuXHRcblx0dmFyIF9Qcm92aWRlcjIgPSBf
aW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9Qcm92aWRlcik7XG5cdFxuXHR2YXIgX2Nvbm5lY3RBZHZh
bmNlZCA9IF9fd2VicGFja19yZXF1aXJlX18oNzkpO1xuXHRcblx0dmFyIF9jb25uZWN0QWR2YW5j
ZWQyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfY29ubmVjdEFkdmFuY2VkKTtcblx0XG5cdHZh
ciBfY29ubmVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oMTg4KTtcblx0XG5cdHZhciBfY29ubmVj
dDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9jb25uZWN0KTtcblx0XG5cdGZ1bmN0aW9uIF9p
bnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUg
PyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cdFxuXHRleHBvcnRzLlByb3ZpZGVyID0gX1By
b3ZpZGVyMi5kZWZhdWx0O1xuXHRleHBvcnRzLmNyZWF0ZVByb3ZpZGVyID0gX1Byb3ZpZGVyLmNy
ZWF0ZVByb3ZpZGVyO1xuXHRleHBvcnRzLmNvbm5lY3RBZHZhbmNlZCA9IF9jb25uZWN0QWR2YW5j
ZWQyLmRlZmF1bHQ7XG5cdGV4cG9ydHMuY29ubmVjdCA9IF9jb25uZWN0Mi5kZWZhdWx0O1xuXG4v
KioqLyB9LFxuLyogODIgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJw
YWNrX3JlcXVpcmVfXykge1xuXG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdGV4cG9ydHMuX19lc01v
ZHVsZSA9IHRydWU7XG5cdGV4cG9ydHMuc3RvcmVTaGFwZSA9IGV4cG9ydHMuc3Vic2NyaXB0aW9u
U2hhcGUgPSB1bmRlZmluZWQ7XG5cdFxuXHR2YXIgX3Byb3BUeXBlcyA9IF9fd2VicGFja19yZXF1
aXJlX18oNTYpO1xuXHRcblx0dmFyIF9wcm9wVHlwZXMyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVs
dChfcHJvcFR5cGVzKTtcblx0XG5cdGZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2Jq
KSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9
OyB9XG5cdFxuXHR2YXIgc3Vic2NyaXB0aW9uU2hhcGUgPSBleHBvcnRzLnN1YnNjcmlwdGlvblNo
YXBlID0gX3Byb3BUeXBlczIuZGVmYXVsdC5zaGFwZSh7XG5cdCAgdHJ5U3Vic2NyaWJlOiBfcHJv
cFR5cGVzMi5kZWZhdWx0LmZ1bmMuaXNSZXF1aXJlZCxcblx0ICB0cnlVbnN1YnNjcmliZTogX3By
b3BUeXBlczIuZGVmYXVsdC5mdW5jLmlzUmVxdWlyZWQsXG5cdCAgbm90aWZ5TmVzdGVkU3Viczog
X3Byb3BUeXBlczIuZGVmYXVsdC5mdW5jLmlzUmVxdWlyZWQsXG5cdCAgaXNTdWJzY3JpYmVkOiBf
cHJvcFR5cGVzMi5kZWZhdWx0LmZ1bmMuaXNSZXF1aXJlZFxuXHR9KTtcblx0XG5cdHZhciBzdG9y
ZVNoYXBlID0gZXhwb3J0cy5zdG9yZVNoYXBlID0gX3Byb3BUeXBlczIuZGVmYXVsdC5zaGFwZSh7
XG5cdCAgc3Vic2NyaWJlOiBfcHJvcFR5cGVzMi5kZWZhdWx0LmZ1bmMuaXNSZXF1aXJlZCxcblx0
ICBkaXNwYXRjaDogX3Byb3BUeXBlczIuZGVmYXVsdC5mdW5jLmlzUmVxdWlyZWQsXG5cdCAgZ2V0
U3RhdGU6IF9wcm9wVHlwZXMyLmRlZmF1bHQuZnVuYy5pc1JlcXVpcmVkXG5cdH0pO1xuXG4vKioq
LyB9LFxuLyogODMgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNr
X3JlcXVpcmVfXykge1xuXG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdGV4cG9ydHMuX19lc01vZHVs
ZSA9IHRydWU7XG5cdGV4cG9ydHMuZGVmYXVsdCA9IHZlcmlmeVBsYWluT2JqZWN0O1xuXHRcblx0
dmFyIF9pc1BsYWluT2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygzMyk7XG5cdFxuXHR2YXIg
X2lzUGxhaW5PYmplY3QyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaXNQbGFpbk9iamVjdCk7
XG5cdFxuXHR2YXIgX3dhcm5pbmcgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDUwKTtcblx0XG5cdHZh
ciBfd2FybmluZzIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF93YXJuaW5nKTtcblx0XG5cdGZ1
bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9f
ZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cdFxuXHRmdW5jdGlvbiB2ZXJp
ZnlQbGFpbk9iamVjdCh2YWx1ZSwgZGlzcGxheU5hbWUsIG1ldGhvZE5hbWUpIHtcblx0ICBpZiAo
ISgwLCBfaXNQbGFpbk9iamVjdDIuZGVmYXVsdCkodmFsdWUpKSB7XG5cdCAgICAoMCwgX3dhcm5p
bmcyLmRlZmF1bHQpKG1ldGhvZE5hbWUgKyAnKCkgaW4gJyArIGRpc3BsYXlOYW1lICsgJyBtdXN0
IHJldHVybiBhIHBsYWluIG9iamVjdC4gSW5zdGVhZCByZWNlaXZlZCAnICsgdmFsdWUgKyAnLicp
O1xuXHQgIH1cblx0fVxuXG4vKioqLyB9LFxuLyogODQgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVs
ZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdCd1c2Ugc3RyaWN0Jztcblx0
XG5cdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuXHQg
IHZhbHVlOiB0cnVlXG5cdH0pO1xuXHRcblx0dmFyIF9jcmVhdGVDbGFzcyA9IGZ1bmN0aW9uICgp
IHsgZnVuY3Rpb24gZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7IGZvciAodmFyIGkg
PSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHsgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTsg
ZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlOyBk
ZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7IGlmIChcInZhbHVlXCIgaW4gZGVzY3JpcHRv
cikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJn
ZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTsgfSB9IHJldHVybiBmdW5jdGlvbiAoQ29u
c3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7IGlmIChwcm90b1Byb3BzKSBkZWZp
bmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7IGlmIChzdGF0
aWNQcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpOyByZXR1
cm4gQ29uc3RydWN0b3I7IH07IH0oKTtcblx0XG5cdHZhciBfcmVhY3QgPSBfX3dlYnBhY2tfcmVx
dWlyZV9fKDEyKTtcblx0XG5cdHZhciBfcmVhY3QyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChf
cmVhY3QpO1xuXHRcblx0dmFyIF9jbGFzc25hbWVzID0gX193ZWJwYWNrX3JlcXVpcmVfXygzMSk7
XG5cdFxuXHR2YXIgX2NsYXNzbmFtZXMyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfY2xhc3Nu
YW1lcyk7XG5cdFxuXHRmdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1
cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXHRc
blx0ZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAo
IShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9y
KFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpOyB9IH1cblx0XG5cdGZ1bmN0
aW9uIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHNlbGYsIGNhbGwpIHsgaWYgKCFzZWxmKSB7
IHRocm93IG5ldyBSZWZlcmVuY2VFcnJvcihcInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQg
LSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZFwiKTsgfSByZXR1cm4gY2FsbCAmJiAodHlwZW9m
IGNhbGwgPT09IFwib2JqZWN0XCIgfHwgdHlwZW9mIGNhbGwgPT09IFwiZnVuY3Rpb25cIikgPyBj
YWxsIDogc2VsZjsgfVxuXHRcblx0ZnVuY3Rpb24gX2luaGVyaXRzKHN1YkNsYXNzLCBzdXBlckNs
YXNzKSB7IGlmICh0eXBlb2Ygc3VwZXJDbGFzcyAhPT0gXCJmdW5jdGlvblwiICYmIHN1cGVyQ2xh
c3MgIT09IG51bGwpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN1cGVyIGV4cHJlc3Npb24gbXVz
dCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uLCBub3QgXCIgKyB0eXBlb2Ygc3VwZXJDbGFz
cyk7IH0gc3ViQ2xhc3MucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShzdXBlckNsYXNzICYmIHN1
cGVyQ2xhc3MucHJvdG90eXBlLCB7IGNvbnN0cnVjdG9yOiB7IHZhbHVlOiBzdWJDbGFzcywgZW51
bWVyYWJsZTogZmFsc2UsIHdyaXRhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUgfSB9KTsg
aWYgKHN1cGVyQ2xhc3MpIE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5zZXRQcm90b3R5
cGVPZihzdWJDbGFzcywgc3VwZXJDbGFzcykgOiBzdWJDbGFzcy5fX3Byb3RvX18gPSBzdXBlckNs
YXNzOyB9XG5cdFxuXHR2YXIgVG9kb1RleHRJbnB1dCA9IGZ1bmN0aW9uIChfQ29tcG9uZW50KSB7
XG5cdCAgX2luaGVyaXRzKFRvZG9UZXh0SW5wdXQsIF9Db21wb25lbnQpO1xuXHRcblx0ICBmdW5j
dGlvbiBUb2RvVGV4dElucHV0KCkge1xuXHQgICAgdmFyIF9yZWY7XG5cdFxuXHQgICAgdmFyIF90
ZW1wLCBfdGhpcywgX3JldDtcblx0XG5cdCAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgVG9kb1Rl
eHRJbnB1dCk7XG5cdFxuXHQgICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFy
Z3MgPSBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcblx0ICAg
ICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcblx0ICAgIH1cblx0XG5cdCAgICByZXR1
cm4gX3JldCA9IChfdGVtcCA9IChfdGhpcyA9IF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHRo
aXMsIChfcmVmID0gVG9kb1RleHRJbnB1dC5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlw
ZU9mKFRvZG9UZXh0SW5wdXQpKS5jYWxsLmFwcGx5KF9yZWYsIFt0aGlzXS5jb25jYXQoYXJncykp
KSwgX3RoaXMpLCBfdGhpcy5zdGF0ZSA9IHtcblx0ICAgICAgdGV4dDogX3RoaXMucHJvcHMudGV4
dCB8fCAnJ1xuXHQgICAgfSwgX3RoaXMuaGFuZGxlU3VibWl0ID0gZnVuY3Rpb24gKGUpIHtcblx0
ICAgICAgdmFyIHRleHQgPSBlLnRhcmdldC52YWx1ZS50cmltKCk7XG5cdCAgICAgIGlmIChlLndo
aWNoID09PSAxMykge1xuXHQgICAgICAgIF90aGlzLnByb3BzLm9uU2F2ZSh0ZXh0KTtcblx0ICAg
ICAgICBpZiAoX3RoaXMucHJvcHMubmV3VG9kbykge1xuXHQgICAgICAgICAgX3RoaXMuc2V0U3Rh
dGUoeyB0ZXh0OiAnJyB9KTtcblx0ICAgICAgICB9XG5cdCAgICAgIH1cblx0ICAgIH0sIF90aGlz
LmhhbmRsZUNoYW5nZSA9IGZ1bmN0aW9uIChlKSB7XG5cdCAgICAgIF90aGlzLnNldFN0YXRlKHsg
dGV4dDogZS50YXJnZXQudmFsdWUgfSk7XG5cdCAgICB9LCBfdGhpcy5oYW5kbGVCbHVyID0gZnVu
Y3Rpb24gKGUpIHtcblx0ICAgICAgaWYgKCFfdGhpcy5wcm9wcy5uZXdUb2RvKSB7XG5cdCAgICAg
ICAgX3RoaXMucHJvcHMub25TYXZlKGUudGFyZ2V0LnZhbHVlKTtcblx0ICAgICAgfVxuXHQgICAg
fSwgX3RlbXApLCBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybihfdGhpcywgX3JldCk7XG5cdCAg
fVxuXHRcblx0ICBfY3JlYXRlQ2xhc3MoVG9kb1RleHRJbnB1dCwgW3tcblx0ICAgIGtleTogJ3Jl
bmRlcicsXG5cdCAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyKCkge1xuXHQgICAgICByZXR1cm4g
X3JlYWN0Mi5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoJ2lucHV0JywgeyBjbGFzc05hbWU6ICgwLCBf
Y2xhc3NuYW1lczIuZGVmYXVsdCkoe1xuXHQgICAgICAgICAgZWRpdDogdGhpcy5wcm9wcy5lZGl0
aW5nLFxuXHQgICAgICAgICAgJ25ldy10b2RvJzogdGhpcy5wcm9wcy5uZXdUb2RvXG5cdCAgICAg
ICAgfSksXG5cdCAgICAgICAgdHlwZTogJ3RleHQnLFxuXHQgICAgICAgIHBsYWNlaG9sZGVyOiB0
aGlzLnByb3BzLnBsYWNlaG9sZGVyLFxuXHQgICAgICAgIGF1dG9Gb2N1czogJ3RydWUnLFxuXHQg
ICAgICAgIHZhbHVlOiB0aGlzLnN0YXRlLnRleHQsXG5cdCAgICAgICAgb25CbHVyOiB0aGlzLmhh
bmRsZUJsdXIsXG5cdCAgICAgICAgb25DaGFuZ2U6IHRoaXMuaGFuZGxlQ2hhbmdlLFxuXHQgICAg
ICAgIG9uS2V5RG93bjogdGhpcy5oYW5kbGVTdWJtaXQgfSk7XG5cdCAgICB9XG5cdCAgfV0pO1xu
XHRcblx0ICByZXR1cm4gVG9kb1RleHRJbnB1dDtcblx0fShfcmVhY3QuQ29tcG9uZW50KTtcblx0
XG5cdFRvZG9UZXh0SW5wdXQucHJvcFR5cGVzID0ge1xuXHQgIG9uU2F2ZTogX3JlYWN0LlByb3BU
eXBlcy5mdW5jLmlzUmVxdWlyZWQsXG5cdCAgdGV4dDogX3JlYWN0LlByb3BUeXBlcy5zdHJpbmcs
XG5cdCAgcGxhY2Vob2xkZXI6IF9yZWFjdC5Qcm9wVHlwZXMuc3RyaW5nLFxuXHQgIGVkaXRpbmc6
IF9yZWFjdC5Qcm9wVHlwZXMuYm9vbCxcblx0ICBuZXdUb2RvOiBfcmVhY3QuUHJvcFR5cGVzLmJv
b2xcblx0fTtcblx0ZXhwb3J0cy5kZWZhdWx0ID0gVG9kb1RleHRJbnB1dDtcblxuLyoqKi8gfSxc
bi8qIDg1ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuXHQndXNlIHN0
cmljdCc7XG5cdFxuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxl
XCIsIHtcblx0ICB2YWx1ZTogdHJ1ZVxuXHR9KTtcblx0dmFyIEFERF9UT0RPID0gZXhwb3J0cy5B
RERfVE9ETyA9ICdBRERfVE9ETyc7XG5cdHZhciBERUxFVEVfVE9ETyA9IGV4cG9ydHMuREVMRVRF
X1RPRE8gPSAnREVMRVRFX1RPRE8nO1xuXHR2YXIgRURJVF9UT0RPID0gZXhwb3J0cy5FRElUX1RP
RE8gPSAnRURJVF9UT0RPJztcblx0dmFyIENPTVBMRVRFX1RPRE8gPSBleHBvcnRzLkNPTVBMRVRF
X1RPRE8gPSAnQ09NUExFVEVfVE9ETyc7XG5cdHZhciBDT01QTEVURV9BTEwgPSBleHBvcnRzLkNP
TVBMRVRFX0FMTCA9ICdDT01QTEVURV9BTEwnO1xuXHR2YXIgQ0xFQVJfQ09NUExFVEVEID0gZXhw
b3J0cy5DTEVBUl9DT01QTEVURUQgPSAnQ0xFQVJfQ09NUExFVEVEJztcblxuLyoqKi8gfSxcbi8q
IDg2ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuXHQndXNlIHN0cmlj
dCc7XG5cdFxuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIs
IHtcblx0ICB2YWx1ZTogdHJ1ZVxuXHR9KTtcblx0dmFyIFNIT1dfQUxMID0gZXhwb3J0cy5TSE9X
X0FMTCA9ICdzaG93X2FsbCc7XG5cdHZhciBTSE9XX0NPTVBMRVRFRCA9IGV4cG9ydHMuU0hPV19D
T01QTEVURUQgPSAnc2hvd19jb21wbGV0ZWQnO1xuXHR2YXIgU0hPV19BQ1RJVkUgPSBleHBvcnRz
LlNIT1dfQUNUSVZFID0gJ3Nob3dfYWN0aXZlJztcblxuLyoqKi8gfSxcbi8qIDg3ICovXG4vKioq
LyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuXHQvLyBzaGltIGZvciB1c2luZyBwcm9j
ZXNzIGluIGJyb3dzZXJcblx0dmFyIHByb2Nlc3MgPSBtb2R1bGUuZXhwb3J0cyA9IHt9O1xuXHRc
blx0Ly8gY2FjaGVkIGZyb20gd2hhdGV2ZXIgZ2xvYmFsIGlzIHByZXNlbnQgc28gdGhhdCB0ZXN0
IHJ1bm5lcnMgdGhhdCBzdHViIGl0XG5cdC8vIGRvbid0IGJyZWFrIHRoaW5ncy4gIEJ1dCB3ZSBu
ZWVkIHRvIHdyYXAgaXQgaW4gYSB0cnkgY2F0Y2ggaW4gY2FzZSBpdCBpc1xuXHQvLyB3cmFwcGVk
IGluIHN0cmljdCBtb2RlIGNvZGUgd2hpY2ggZG9lc24ndCBkZWZpbmUgYW55IGdsb2JhbHMuICBJ
dCdzIGluc2lkZSBhXG5cdC8vIGZ1bmN0aW9uIGJlY2F1c2UgdHJ5L2NhdGNoZXMgZGVvcHRpbWl6
ZSBpbiBjZXJ0YWluIGVuZ2luZXMuXG5cdFxuXHR2YXIgY2FjaGVkU2V0VGltZW91dDtcblx0dmFy
IGNhY2hlZENsZWFyVGltZW91dDtcblx0XG5cdGZ1bmN0aW9uIGRlZmF1bHRTZXRUaW1vdXQoKSB7
XG5cdCAgICB0aHJvdyBuZXcgRXJyb3IoJ3NldFRpbWVvdXQgaGFzIG5vdCBiZWVuIGRlZmluZWQn
KTtcblx0fVxuXHRmdW5jdGlvbiBkZWZhdWx0Q2xlYXJUaW1lb3V0ICgpIHtcblx0ICAgIHRocm93
IG5ldyBFcnJvcignY2xlYXJUaW1lb3V0IGhhcyBub3QgYmVlbiBkZWZpbmVkJyk7XG5cdH1cblx0
KGZ1bmN0aW9uICgpIHtcblx0ICAgIHRyeSB7XG5cdCAgICAgICAgaWYgKHR5cGVvZiBzZXRUaW1l
b3V0ID09PSAnZnVuY3Rpb24nKSB7XG5cdCAgICAgICAgICAgIGNhY2hlZFNldFRpbWVvdXQgPSBz
ZXRUaW1lb3V0O1xuXHQgICAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgICAgIGNhY2hlZFNldFRp
bWVvdXQgPSBkZWZhdWx0U2V0VGltb3V0O1xuXHQgICAgICAgIH1cblx0ICAgIH0gY2F0Y2ggKGUp
IHtcblx0ICAgICAgICBjYWNoZWRTZXRUaW1lb3V0ID0gZGVmYXVsdFNldFRpbW91dDtcblx0ICAg
IH1cblx0ICAgIHRyeSB7XG5cdCAgICAgICAgaWYgKHR5cGVvZiBjbGVhclRpbWVvdXQgPT09ICdm
dW5jdGlvbicpIHtcblx0ICAgICAgICAgICAgY2FjaGVkQ2xlYXJUaW1lb3V0ID0gY2xlYXJUaW1l
b3V0O1xuXHQgICAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgICAgIGNhY2hlZENsZWFyVGltZW91
dCA9IGRlZmF1bHRDbGVhclRpbWVvdXQ7XG5cdCAgICAgICAgfVxuXHQgICAgfSBjYXRjaCAoZSkg
e1xuXHQgICAgICAgIGNhY2hlZENsZWFyVGltZW91dCA9IGRlZmF1bHRDbGVhclRpbWVvdXQ7XG5c
dCAgICB9XG5cdH0gKCkpXG5cdGZ1bmN0aW9uIHJ1blRpbWVvdXQoZnVuKSB7XG5cdCAgICBpZiAo
Y2FjaGVkU2V0VGltZW91dCA9PT0gc2V0VGltZW91dCkge1xuXHQgICAgICAgIC8vbm9ybWFsIGVu
dmlyb21lbnRzIGluIHNhbmUgc2l0dWF0aW9uc1xuXHQgICAgICAgIHJldHVybiBzZXRUaW1lb3V0
KGZ1biwgMCk7XG5cdCAgICB9XG5cdCAgICAvLyBpZiBzZXRUaW1lb3V0IHdhc24ndCBhdmFpbGFi
bGUgYnV0IHdhcyBsYXR0ZXIgZGVmaW5lZFxuXHQgICAgaWYgKChjYWNoZWRTZXRUaW1lb3V0ID09
PSBkZWZhdWx0U2V0VGltb3V0IHx8ICFjYWNoZWRTZXRUaW1lb3V0KSAmJiBzZXRUaW1lb3V0KSB7
XG5cdCAgICAgICAgY2FjaGVkU2V0VGltZW91dCA9IHNldFRpbWVvdXQ7XG5cdCAgICAgICAgcmV0
dXJuIHNldFRpbWVvdXQoZnVuLCAwKTtcblx0ICAgIH1cblx0ICAgIHRyeSB7XG5cdCAgICAgICAg
Ly8gd2hlbiB3aGVuIHNvbWVib2R5IGhhcyBzY3Jld2VkIHdpdGggc2V0VGltZW91dCBidXQgbm8g
SS5FLiBtYWRkbmVzc1xuXHQgICAgICAgIHJldHVybiBjYWNoZWRTZXRUaW1lb3V0KGZ1biwgMCk7
XG5cdCAgICB9IGNhdGNoKGUpe1xuXHQgICAgICAgIHRyeSB7XG5cdCAgICAgICAgICAgIC8vIFdo
ZW4gd2UgYXJlIGluIEkuRS4gYnV0IHRoZSBzY3JpcHQgaGFzIGJlZW4gZXZhbGVkIHNvIEkuRS4g
ZG9lc24ndCB0cnVzdCB0aGUgZ2xvYmFsIG9iamVjdCB3aGVuIGNhbGxlZCBub3JtYWxseVxuXHQg
ICAgICAgICAgICByZXR1cm4gY2FjaGVkU2V0VGltZW91dC5jYWxsKG51bGwsIGZ1biwgMCk7XG5c
dCAgICAgICAgfSBjYXRjaChlKXtcblx0ICAgICAgICAgICAgLy8gc2FtZSBhcyBhYm92ZSBidXQg
d2hlbiBpdCdzIGEgdmVyc2lvbiBvZiBJLkUuIHRoYXQgbXVzdCBoYXZlIHRoZSBnbG9iYWwgb2Jq
ZWN0IGZvciAndGhpcycsIGhvcGZ1bGx5IG91ciBjb250ZXh0IGNvcnJlY3Qgb3RoZXJ3aXNlIGl0
IHdpbGwgdGhyb3cgYSBnbG9iYWwgZXJyb3Jcblx0ICAgICAgICAgICAgcmV0dXJuIGNhY2hlZFNl
dFRpbWVvdXQuY2FsbCh0aGlzLCBmdW4sIDApO1xuXHQgICAgICAgIH1cblx0ICAgIH1cblx0XG5c
dFxuXHR9XG5cdGZ1bmN0aW9uIHJ1bkNsZWFyVGltZW91dChtYXJrZXIpIHtcblx0ICAgIGlmIChj
YWNoZWRDbGVhclRpbWVvdXQgPT09IGNsZWFyVGltZW91dCkge1xuXHQgICAgICAgIC8vbm9ybWFs
IGVudmlyb21lbnRzIGluIHNhbmUgc2l0dWF0aW9uc1xuXHQgICAgICAgIHJldHVybiBjbGVhclRp
bWVvdXQobWFya2VyKTtcblx0ICAgIH1cblx0ICAgIC8vIGlmIGNsZWFyVGltZW91dCB3YXNuJ3Qg
YXZhaWxhYmxlIGJ1dCB3YXMgbGF0dGVyIGRlZmluZWRcblx0ICAgIGlmICgoY2FjaGVkQ2xlYXJU
aW1lb3V0ID09PSBkZWZhdWx0Q2xlYXJUaW1lb3V0IHx8ICFjYWNoZWRDbGVhclRpbWVvdXQpICYm
IGNsZWFyVGltZW91dCkge1xuXHQgICAgICAgIGNhY2hlZENsZWFyVGltZW91dCA9IGNsZWFyVGlt
ZW91dDtcblx0ICAgICAgICByZXR1cm4gY2xlYXJUaW1lb3V0KG1hcmtlcik7XG5cdCAgICB9XG5c
dCAgICB0cnkge1xuXHQgICAgICAgIC8vIHdoZW4gd2hlbiBzb21lYm9keSBoYXMgc2NyZXdlZCB3
aXRoIHNldFRpbWVvdXQgYnV0IG5vIEkuRS4gbWFkZG5lc3Ncblx0ICAgICAgICByZXR1cm4gY2Fj
aGVkQ2xlYXJUaW1lb3V0KG1hcmtlcik7XG5cdCAgICB9IGNhdGNoIChlKXtcblx0ICAgICAgICB0
cnkge1xuXHQgICAgICAgICAgICAvLyBXaGVuIHdlIGFyZSBpbiBJLkUuIGJ1dCB0aGUgc2NyaXB0
IGhhcyBiZWVuIGV2YWxlZCBzbyBJLkUuIGRvZXNuJ3QgIHRydXN0IHRoZSBnbG9iYWwgb2JqZWN0
IHdoZW4gY2FsbGVkIG5vcm1hbGx5XG5cdCAgICAgICAgICAgIHJldHVybiBjYWNoZWRDbGVhclRp
bWVvdXQuY2FsbChudWxsLCBtYXJrZXIpO1xuXHQgICAgICAgIH0gY2F0Y2ggKGUpe1xuXHQgICAg
ICAgICAgICAvLyBzYW1lIGFzIGFib3ZlIGJ1dCB3aGVuIGl0J3MgYSB2ZXJzaW9uIG9mIEkuRS4g
dGhhdCBtdXN0IGhhdmUgdGhlIGdsb2JhbCBvYmplY3QgZm9yICd0aGlzJywgaG9wZnVsbHkgb3Vy
IGNvbnRleHQgY29ycmVjdCBvdGhlcndpc2UgaXQgd2lsbCB0aHJvdyBhIGdsb2JhbCBlcnJvci5c
blx0ICAgICAgICAgICAgLy8gU29tZSB2ZXJzaW9ucyBvZiBJLkUuIGhhdmUgZGlmZmVyZW50IHJ1
bGVzIGZvciBjbGVhclRpbWVvdXQgdnMgc2V0VGltZW91dFxuXHQgICAgICAgICAgICByZXR1cm4g
Y2FjaGVkQ2xlYXJUaW1lb3V0LmNhbGwodGhpcywgbWFya2VyKTtcblx0ICAgICAgICB9XG5cdCAg
ICB9XG5cdFxuXHRcblx0XG5cdH1cblx0dmFyIHF1ZXVlID0gW107XG5cdHZhciBkcmFpbmluZyA9
IGZhbHNlO1xuXHR2YXIgY3VycmVudFF1ZXVlO1xuXHR2YXIgcXVldWVJbmRleCA9IC0xO1xuXHRc
blx0ZnVuY3Rpb24gY2xlYW5VcE5leHRUaWNrKCkge1xuXHQgICAgaWYgKCFkcmFpbmluZyB8fCAh
Y3VycmVudFF1ZXVlKSB7XG5cdCAgICAgICAgcmV0dXJuO1xuXHQgICAgfVxuXHQgICAgZHJhaW5p
bmcgPSBmYWxzZTtcblx0ICAgIGlmIChjdXJyZW50UXVldWUubGVuZ3RoKSB7XG5cdCAgICAgICAg
cXVldWUgPSBjdXJyZW50UXVldWUuY29uY2F0KHF1ZXVlKTtcblx0ICAgIH0gZWxzZSB7XG5cdCAg
ICAgICAgcXVldWVJbmRleCA9IC0xO1xuXHQgICAgfVxuXHQgICAgaWYgKHF1ZXVlLmxlbmd0aCkg
e1xuXHQgICAgICAgIGRyYWluUXVldWUoKTtcblx0ICAgIH1cblx0fVxuXHRcblx0ZnVuY3Rpb24g
ZHJhaW5RdWV1ZSgpIHtcblx0ICAgIGlmIChkcmFpbmluZykge1xuXHQgICAgICAgIHJldHVybjtc
blx0ICAgIH1cblx0ICAgIHZhciB0aW1lb3V0ID0gcnVuVGltZW91dChjbGVhblVwTmV4dFRpY2sp
O1xuXHQgICAgZHJhaW5pbmcgPSB0cnVlO1xuXHRcblx0ICAgIHZhciBsZW4gPSBxdWV1ZS5sZW5n
dGg7XG5cdCAgICB3aGlsZShsZW4pIHtcblx0ICAgICAgICBjdXJyZW50UXVldWUgPSBxdWV1ZTtc
blx0ICAgICAgICBxdWV1ZSA9IFtdO1xuXHQgICAgICAgIHdoaWxlICgrK3F1ZXVlSW5kZXggPCBs
ZW4pIHtcblx0ICAgICAgICAgICAgaWYgKGN1cnJlbnRRdWV1ZSkge1xuXHQgICAgICAgICAgICAg
ICAgY3VycmVudFF1ZXVlW3F1ZXVlSW5kZXhdLnJ1bigpO1xuXHQgICAgICAgICAgICB9XG5cdCAg
ICAgICAgfVxuXHQgICAgICAgIHF1ZXVlSW5kZXggPSAtMTtcblx0ICAgICAgICBsZW4gPSBxdWV1
ZS5sZW5ndGg7XG5cdCAgICB9XG5cdCAgICBjdXJyZW50UXVldWUgPSBudWxsO1xuXHQgICAgZHJh
aW5pbmcgPSBmYWxzZTtcblx0ICAgIHJ1bkNsZWFyVGltZW91dCh0aW1lb3V0KTtcblx0fVxuXHRc
blx0cHJvY2Vzcy5uZXh0VGljayA9IGZ1bmN0aW9uIChmdW4pIHtcblx0ICAgIHZhciBhcmdzID0g
bmV3IEFycmF5KGFyZ3VtZW50cy5sZW5ndGggLSAxKTtcblx0ICAgIGlmIChhcmd1bWVudHMubGVu
Z3RoID4gMSkge1xuXHQgICAgICAgIGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0
aDsgaSsrKSB7XG5cdCAgICAgICAgICAgIGFyZ3NbaSAtIDFdID0gYXJndW1lbnRzW2ldO1xuXHQg
ICAgICAgIH1cblx0ICAgIH1cblx0ICAgIHF1ZXVlLnB1c2gobmV3IEl0ZW0oZnVuLCBhcmdzKSk7
XG5cdCAgICBpZiAocXVldWUubGVuZ3RoID09PSAxICYmICFkcmFpbmluZykge1xuXHQgICAgICAg
IHJ1blRpbWVvdXQoZHJhaW5RdWV1ZSk7XG5cdCAgICB9XG5cdH07XG5cdFxuXHQvLyB2OCBsaWtl
cyBwcmVkaWN0aWJsZSBvYmplY3RzXG5cdGZ1bmN0aW9uIEl0ZW0oZnVuLCBhcnJheSkge1xuXHQg
ICAgdGhpcy5mdW4gPSBmdW47XG5cdCAgICB0aGlzLmFycmF5ID0gYXJyYXk7XG5cdH1cblx0SXRl
bS5wcm90b3R5cGUucnVuID0gZnVuY3Rpb24gKCkge1xuXHQgICAgdGhpcy5mdW4uYXBwbHkobnVs
bCwgdGhpcy5hcnJheSk7XG5cdH07XG5cdHByb2Nlc3MudGl0bGUgPSAnYnJvd3Nlcic7XG5cdHBy
b2Nlc3MuYnJvd3NlciA9IHRydWU7XG5cdHByb2Nlc3MuZW52ID0ge307XG5cdHByb2Nlc3MuYXJn
diA9IFtdO1xuXHRwcm9jZXNzLnZlcnNpb24gPSAnJzsgLy8gZW1wdHkgc3RyaW5nIHRvIGF2b2lk
IHJlZ2V4cCBpc3N1ZXNcblx0cHJvY2Vzcy52ZXJzaW9ucyA9IHt9O1xuXHRcblx0ZnVuY3Rpb24g
bm9vcCgpIHt9XG5cdFxuXHRwcm9jZXNzLm9uID0gbm9vcDtcblx0cHJvY2Vzcy5hZGRMaXN0ZW5l
ciA9IG5vb3A7XG5cdHByb2Nlc3Mub25jZSA9IG5vb3A7XG5cdHByb2Nlc3Mub2ZmID0gbm9vcDtc
blx0cHJvY2Vzcy5yZW1vdmVMaXN0ZW5lciA9IG5vb3A7XG5cdHByb2Nlc3MucmVtb3ZlQWxsTGlz
dGVuZXJzID0gbm9vcDtcblx0cHJvY2Vzcy5lbWl0ID0gbm9vcDtcblx0XG5cdHByb2Nlc3MuYmlu
ZGluZyA9IGZ1bmN0aW9uIChuYW1lKSB7XG5cdCAgICB0aHJvdyBuZXcgRXJyb3IoJ3Byb2Nlc3Mu
YmluZGluZyBpcyBub3Qgc3VwcG9ydGVkJyk7XG5cdH07XG5cdFxuXHRwcm9jZXNzLmN3ZCA9IGZ1
bmN0aW9uICgpIHsgcmV0dXJuICcvJyB9O1xuXHRwcm9jZXNzLmNoZGlyID0gZnVuY3Rpb24gKGRp
cikge1xuXHQgICAgdGhyb3cgbmV3IEVycm9yKCdwcm9jZXNzLmNoZGlyIGlzIG5vdCBzdXBwb3J0
ZWQnKTtcblx0fTtcblx0cHJvY2Vzcy51bWFzayA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gMDsgfTtc
blxuXG4vKioqLyB9LFxuLyogODggKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywg
X193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdHZhciBhc2Fw
ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxOTcpO1xuXHRcblx0ZnVuY3Rpb24gbm9vcCgpIHt9XG5c
dFxuXHQvLyBTdGF0ZXM6XG5cdC8vXG5cdC8vIDAgLSBwZW5kaW5nXG5cdC8vIDEgLSBmdWxmaWxs
ZWQgd2l0aCBfdmFsdWVcblx0Ly8gMiAtIHJlamVjdGVkIHdpdGggX3ZhbHVlXG5cdC8vIDMgLSBh
ZG9wdGVkIHRoZSBzdGF0ZSBvZiBhbm90aGVyIHByb21pc2UsIF92YWx1ZVxuXHQvL1xuXHQvLyBv
bmNlIHRoZSBzdGF0ZSBpcyBubyBsb25nZXIgcGVuZGluZyAoMCkgaXQgaXMgaW1tdXRhYmxlXG5c
dFxuXHQvLyBBbGwgYF9gIHByZWZpeGVkIHByb3BlcnRpZXMgd2lsbCBiZSByZWR1Y2VkIHRvIGBf
e3JhbmRvbSBudW1iZXJ9YFxuXHQvLyBhdCBidWlsZCB0aW1lIHRvIG9iZnVzY2F0ZSB0aGVtIGFu
ZCBkaXNjb3VyYWdlIHRoZWlyIHVzZS5cblx0Ly8gV2UgZG9uJ3QgdXNlIHN5bWJvbHMgb3IgT2Jq
ZWN0LmRlZmluZVByb3BlcnR5IHRvIGZ1bGx5IGhpZGUgdGhlbVxuXHQvLyBiZWNhdXNlIHRoZSBw
ZXJmb3JtYW5jZSBpc24ndCBnb29kIGVub3VnaC5cblx0XG5cdFxuXHQvLyB0byBhdm9pZCB1c2lu
ZyB0cnkvY2F0Y2ggaW5zaWRlIGNyaXRpY2FsIGZ1bmN0aW9ucywgd2Vcblx0Ly8gZXh0cmFjdCB0
aGVtIHRvIGhlcmUuXG5cdHZhciBMQVNUX0VSUk9SID0gbnVsbDtcblx0dmFyIElTX0VSUk9SID0g
e307XG5cdGZ1bmN0aW9uIGdldFRoZW4ob2JqKSB7XG5cdCAgdHJ5IHtcblx0ICAgIHJldHVybiBv
YmoudGhlbjtcblx0ICB9IGNhdGNoIChleCkge1xuXHQgICAgTEFTVF9FUlJPUiA9IGV4O1xuXHQg
ICAgcmV0dXJuIElTX0VSUk9SO1xuXHQgIH1cblx0fVxuXHRcblx0ZnVuY3Rpb24gdHJ5Q2FsbE9u
ZShmbiwgYSkge1xuXHQgIHRyeSB7XG5cdCAgICByZXR1cm4gZm4oYSk7XG5cdCAgfSBjYXRjaCAo
ZXgpIHtcblx0ICAgIExBU1RfRVJST1IgPSBleDtcblx0ICAgIHJldHVybiBJU19FUlJPUjtcblx0
ICB9XG5cdH1cblx0ZnVuY3Rpb24gdHJ5Q2FsbFR3byhmbiwgYSwgYikge1xuXHQgIHRyeSB7XG5c
dCAgICBmbihhLCBiKTtcblx0ICB9IGNhdGNoIChleCkge1xuXHQgICAgTEFTVF9FUlJPUiA9IGV4
O1xuXHQgICAgcmV0dXJuIElTX0VSUk9SO1xuXHQgIH1cblx0fVxuXHRcblx0bW9kdWxlLmV4cG9y
dHMgPSBQcm9taXNlO1xuXHRcblx0ZnVuY3Rpb24gUHJvbWlzZShmbikge1xuXHQgIGlmICh0eXBl
b2YgdGhpcyAhPT0gJ29iamVjdCcpIHtcblx0ICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1Byb21p
c2VzIG11c3QgYmUgY29uc3RydWN0ZWQgdmlhIG5ldycpO1xuXHQgIH1cblx0ICBpZiAodHlwZW9m
IGZuICE9PSAnZnVuY3Rpb24nKSB7XG5cdCAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdub3QgYSBm
dW5jdGlvbicpO1xuXHQgIH1cblx0ICB0aGlzLl80NSA9IDA7XG5cdCAgdGhpcy5fODEgPSAwO1xu
XHQgIHRoaXMuXzY1ID0gbnVsbDtcblx0ICB0aGlzLl81NCA9IG51bGw7XG5cdCAgaWYgKGZuID09
PSBub29wKSByZXR1cm47XG5cdCAgZG9SZXNvbHZlKGZuLCB0aGlzKTtcblx0fVxuXHRQcm9taXNl
Ll8xMCA9IG51bGw7XG5cdFByb21pc2UuXzk3ID0gbnVsbDtcblx0UHJvbWlzZS5fNjEgPSBub29w
O1xuXHRcblx0UHJvbWlzZS5wcm90b3R5cGUudGhlbiA9IGZ1bmN0aW9uKG9uRnVsZmlsbGVkLCBv
blJlamVjdGVkKSB7XG5cdCAgaWYgKHRoaXMuY29uc3RydWN0b3IgIT09IFByb21pc2UpIHtcblx0
ICAgIHJldHVybiBzYWZlVGhlbih0aGlzLCBvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCk7XG5cdCAg
fVxuXHQgIHZhciByZXMgPSBuZXcgUHJvbWlzZShub29wKTtcblx0ICBoYW5kbGUodGhpcywgbmV3
IEhhbmRsZXIob25GdWxmaWxsZWQsIG9uUmVqZWN0ZWQsIHJlcykpO1xuXHQgIHJldHVybiByZXM7
XG5cdH07XG5cdFxuXHRmdW5jdGlvbiBzYWZlVGhlbihzZWxmLCBvbkZ1bGZpbGxlZCwgb25SZWpl
Y3RlZCkge1xuXHQgIHJldHVybiBuZXcgc2VsZi5jb25zdHJ1Y3RvcihmdW5jdGlvbiAocmVzb2x2
ZSwgcmVqZWN0KSB7XG5cdCAgICB2YXIgcmVzID0gbmV3IFByb21pc2Uobm9vcCk7XG5cdCAgICBy
ZXMudGhlbihyZXNvbHZlLCByZWplY3QpO1xuXHQgICAgaGFuZGxlKHNlbGYsIG5ldyBIYW5kbGVy
KG9uRnVsZmlsbGVkLCBvblJlamVjdGVkLCByZXMpKTtcblx0ICB9KTtcblx0fTtcblx0ZnVuY3Rp
b24gaGFuZGxlKHNlbGYsIGRlZmVycmVkKSB7XG5cdCAgd2hpbGUgKHNlbGYuXzgxID09PSAzKSB7
XG5cdCAgICBzZWxmID0gc2VsZi5fNjU7XG5cdCAgfVxuXHQgIGlmIChQcm9taXNlLl8xMCkge1xu
XHQgICAgUHJvbWlzZS5fMTAoc2VsZik7XG5cdCAgfVxuXHQgIGlmIChzZWxmLl84MSA9PT0gMCkg
e1xuXHQgICAgaWYgKHNlbGYuXzQ1ID09PSAwKSB7XG5cdCAgICAgIHNlbGYuXzQ1ID0gMTtcblx0
ICAgICAgc2VsZi5fNTQgPSBkZWZlcnJlZDtcblx0ICAgICAgcmV0dXJuO1xuXHQgICAgfVxuXHQg
ICAgaWYgKHNlbGYuXzQ1ID09PSAxKSB7XG5cdCAgICAgIHNlbGYuXzQ1ID0gMjtcblx0ICAgICAg
c2VsZi5fNTQgPSBbc2VsZi5fNTQsIGRlZmVycmVkXTtcblx0ICAgICAgcmV0dXJuO1xuXHQgICAg
fVxuXHQgICAgc2VsZi5fNTQucHVzaChkZWZlcnJlZCk7XG5cdCAgICByZXR1cm47XG5cdCAgfVxu
XHQgIGhhbmRsZVJlc29sdmVkKHNlbGYsIGRlZmVycmVkKTtcblx0fVxuXHRcblx0ZnVuY3Rpb24g
aGFuZGxlUmVzb2x2ZWQoc2VsZiwgZGVmZXJyZWQpIHtcblx0ICBhc2FwKGZ1bmN0aW9uKCkge1xu
XHQgICAgdmFyIGNiID0gc2VsZi5fODEgPT09IDEgPyBkZWZlcnJlZC5vbkZ1bGZpbGxlZCA6IGRl
ZmVycmVkLm9uUmVqZWN0ZWQ7XG5cdCAgICBpZiAoY2IgPT09IG51bGwpIHtcblx0ICAgICAgaWYg
KHNlbGYuXzgxID09PSAxKSB7XG5cdCAgICAgICAgcmVzb2x2ZShkZWZlcnJlZC5wcm9taXNlLCBz
ZWxmLl82NSk7XG5cdCAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgcmVqZWN0KGRlZmVycmVkLnBy
b21pc2UsIHNlbGYuXzY1KTtcblx0ICAgICAgfVxuXHQgICAgICByZXR1cm47XG5cdCAgICB9XG5c
dCAgICB2YXIgcmV0ID0gdHJ5Q2FsbE9uZShjYiwgc2VsZi5fNjUpO1xuXHQgICAgaWYgKHJldCA9
PT0gSVNfRVJST1IpIHtcblx0ICAgICAgcmVqZWN0KGRlZmVycmVkLnByb21pc2UsIExBU1RfRVJS
T1IpO1xuXHQgICAgfSBlbHNlIHtcblx0ICAgICAgcmVzb2x2ZShkZWZlcnJlZC5wcm9taXNlLCBy
ZXQpO1xuXHQgICAgfVxuXHQgIH0pO1xuXHR9XG5cdGZ1bmN0aW9uIHJlc29sdmUoc2VsZiwgbmV3
VmFsdWUpIHtcblx0ICAvLyBQcm9taXNlIFJlc29sdXRpb24gUHJvY2VkdXJlOiBodHRwczovL2dp
dGh1Yi5jb20vcHJvbWlzZXMtYXBsdXMvcHJvbWlzZXMtc3BlYyN0aGUtcHJvbWlzZS1yZXNvbHV0
aW9uLXByb2NlZHVyZVxuXHQgIGlmIChuZXdWYWx1ZSA9PT0gc2VsZikge1xuXHQgICAgcmV0dXJu
IHJlamVjdChcblx0ICAgICAgc2VsZixcblx0ICAgICAgbmV3IFR5cGVFcnJvcignQSBwcm9taXNl
IGNhbm5vdCBiZSByZXNvbHZlZCB3aXRoIGl0c2VsZi4nKVxuXHQgICAgKTtcblx0ICB9XG5cdCAg
aWYgKFxuXHQgICAgbmV3VmFsdWUgJiZcblx0ICAgICh0eXBlb2YgbmV3VmFsdWUgPT09ICdvYmpl
Y3QnIHx8IHR5cGVvZiBuZXdWYWx1ZSA9PT0gJ2Z1bmN0aW9uJylcblx0ICApIHtcblx0ICAgIHZh
ciB0aGVuID0gZ2V0VGhlbihuZXdWYWx1ZSk7XG5cdCAgICBpZiAodGhlbiA9PT0gSVNfRVJST1Ip
IHtcblx0ICAgICAgcmV0dXJuIHJlamVjdChzZWxmLCBMQVNUX0VSUk9SKTtcblx0ICAgIH1cblx0
ICAgIGlmIChcblx0ICAgICAgdGhlbiA9PT0gc2VsZi50aGVuICYmXG5cdCAgICAgIG5ld1ZhbHVl
IGluc3RhbmNlb2YgUHJvbWlzZVxuXHQgICAgKSB7XG5cdCAgICAgIHNlbGYuXzgxID0gMztcblx0
ICAgICAgc2VsZi5fNjUgPSBuZXdWYWx1ZTtcblx0ICAgICAgZmluYWxlKHNlbGYpO1xuXHQgICAg
ICByZXR1cm47XG5cdCAgICB9IGVsc2UgaWYgKHR5cGVvZiB0aGVuID09PSAnZnVuY3Rpb24nKSB7
XG5cdCAgICAgIGRvUmVzb2x2ZSh0aGVuLmJpbmQobmV3VmFsdWUpLCBzZWxmKTtcblx0ICAgICAg
cmV0dXJuO1xuXHQgICAgfVxuXHQgIH1cblx0ICBzZWxmLl84MSA9IDE7XG5cdCAgc2VsZi5fNjUg
PSBuZXdWYWx1ZTtcblx0ICBmaW5hbGUoc2VsZik7XG5cdH1cblx0XG5cdGZ1bmN0aW9uIHJlamVj
dChzZWxmLCBuZXdWYWx1ZSkge1xuXHQgIHNlbGYuXzgxID0gMjtcblx0ICBzZWxmLl82NSA9IG5l
d1ZhbHVlO1xuXHQgIGlmIChQcm9taXNlLl85Nykge1xuXHQgICAgUHJvbWlzZS5fOTcoc2VsZiwg
bmV3VmFsdWUpO1xuXHQgIH1cblx0ICBmaW5hbGUoc2VsZik7XG5cdH1cblx0ZnVuY3Rpb24gZmlu
YWxlKHNlbGYpIHtcblx0ICBpZiAoc2VsZi5fNDUgPT09IDEpIHtcblx0ICAgIGhhbmRsZShzZWxm
LCBzZWxmLl81NCk7XG5cdCAgICBzZWxmLl81NCA9IG51bGw7XG5cdCAgfVxuXHQgIGlmIChzZWxm
Ll80NSA9PT0gMikge1xuXHQgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzZWxmLl81NC5sZW5ndGg7
IGkrKykge1xuXHQgICAgICBoYW5kbGUoc2VsZiwgc2VsZi5fNTRbaV0pO1xuXHQgICAgfVxuXHQg
ICAgc2VsZi5fNTQgPSBudWxsO1xuXHQgIH1cblx0fVxuXHRcblx0ZnVuY3Rpb24gSGFuZGxlcihv
bkZ1bGZpbGxlZCwgb25SZWplY3RlZCwgcHJvbWlzZSl7XG5cdCAgdGhpcy5vbkZ1bGZpbGxlZCA9
IHR5cGVvZiBvbkZ1bGZpbGxlZCA9PT0gJ2Z1bmN0aW9uJyA/IG9uRnVsZmlsbGVkIDogbnVsbDtc
blx0ICB0aGlzLm9uUmVqZWN0ZWQgPSB0eXBlb2Ygb25SZWplY3RlZCA9PT0gJ2Z1bmN0aW9uJyA/
IG9uUmVqZWN0ZWQgOiBudWxsO1xuXHQgIHRoaXMucHJvbWlzZSA9IHByb21pc2U7XG5cdH1cblx0
XG5cdC8qKlxuXHQgKiBUYWtlIGEgcG90ZW50aWFsbHkgbWlzYmVoYXZpbmcgcmVzb2x2ZXIgZnVu
Y3Rpb24gYW5kIG1ha2Ugc3VyZVxuXHQgKiBvbkZ1bGZpbGxlZCBhbmQgb25SZWplY3RlZCBhcmUg
b25seSBjYWxsZWQgb25jZS5cblx0ICpcblx0ICogTWFrZXMgbm8gZ3VhcmFudGVlcyBhYm91dCBh
c3luY2hyb255LlxuXHQgKi9cblx0ZnVuY3Rpb24gZG9SZXNvbHZlKGZuLCBwcm9taXNlKSB7XG5c
dCAgdmFyIGRvbmUgPSBmYWxzZTtcblx0ICB2YXIgcmVzID0gdHJ5Q2FsbFR3byhmbiwgZnVuY3Rp
b24gKHZhbHVlKSB7XG5cdCAgICBpZiAoZG9uZSkgcmV0dXJuO1xuXHQgICAgZG9uZSA9IHRydWU7
XG5cdCAgICByZXNvbHZlKHByb21pc2UsIHZhbHVlKTtcblx0ICB9LCBmdW5jdGlvbiAocmVhc29u
KSB7XG5cdCAgICBpZiAoZG9uZSkgcmV0dXJuO1xuXHQgICAgZG9uZSA9IHRydWU7XG5cdCAgICBy
ZWplY3QocHJvbWlzZSwgcmVhc29uKTtcblx0ICB9KVxuXHQgIGlmICghZG9uZSAmJiByZXMgPT09
IElTX0VSUk9SKSB7XG5cdCAgICBkb25lID0gdHJ1ZTtcblx0ICAgIHJlamVjdChwcm9taXNlLCBM
QVNUX0VSUk9SKTtcblx0ICB9XG5cdH1cblxuXG4vKioqLyB9LFxuLyogODkgKi9cbi8qKiovIGZ1
bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8qKlxu
XHQgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmln
aHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVu
ZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxl
IGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFs
IGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRT
IGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKi9cblx0XG5cdCd1c2Ugc3Ry
aWN0Jztcblx0XG5cdHZhciBfcHJvZEludmFyaWFudCA9IF9fd2VicGFja19yZXF1aXJlX18oMjMp
LFxuXHQgICAgX2Fzc2lnbiA9IF9fd2VicGFja19yZXF1aXJlX18oNCk7XG5cdFxuXHR2YXIgUmVh
Y3ROb29wVXBkYXRlUXVldWUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDkyKTtcblx0XG5cdHZhciBj
YW5EZWZpbmVQcm9wZXJ0eSA9IF9fd2VicGFja19yZXF1aXJlX18oOTMpO1xuXHR2YXIgZW1wdHlP
YmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDI0KTtcblx0dmFyIGludmFyaWFudCA9IF9fd2Vi
cGFja19yZXF1aXJlX18oMSk7XG5cdHZhciBsb3dQcmlvcml0eVdhcm5pbmcgPSBfX3dlYnBhY2tf
cmVxdWlyZV9fKDIyMik7XG5cdFxuXHQvKipcblx0ICogQmFzZSBjbGFzcyBoZWxwZXJzIGZvciB0
aGUgdXBkYXRpbmcgc3RhdGUgb2YgYSBjb21wb25lbnQuXG5cdCAqL1xuXHRmdW5jdGlvbiBSZWFj
dENvbXBvbmVudChwcm9wcywgY29udGV4dCwgdXBkYXRlcikge1xuXHQgIHRoaXMucHJvcHMgPSBw
cm9wcztcblx0ICB0aGlzLmNvbnRleHQgPSBjb250ZXh0O1xuXHQgIHRoaXMucmVmcyA9IGVtcHR5
T2JqZWN0O1xuXHQgIC8vIFdlIGluaXRpYWxpemUgdGhlIGRlZmF1bHQgdXBkYXRlciBidXQgdGhl
IHJlYWwgb25lIGdldHMgaW5qZWN0ZWQgYnkgdGhlXG5cdCAgLy8gcmVuZGVyZXIuXG5cdCAgdGhp
cy51cGRhdGVyID0gdXBkYXRlciB8fCBSZWFjdE5vb3BVcGRhdGVRdWV1ZTtcblx0fVxuXHRcblx0
UmVhY3RDb21wb25lbnQucHJvdG90eXBlLmlzUmVhY3RDb21wb25lbnQgPSB7fTtcblx0XG5cdC8q
KlxuXHQgKiBTZXRzIGEgc3Vic2V0IG9mIHRoZSBzdGF0ZS4gQWx3YXlzIHVzZSB0aGlzIHRvIG11
dGF0ZVxuXHQgKiBzdGF0ZS4gWW91IHNob3VsZCB0cmVhdCBgdGhpcy5zdGF0ZWAgYXMgaW1tdXRh
YmxlLlxuXHQgKlxuXHQgKiBUaGVyZSBpcyBubyBndWFyYW50ZWUgdGhhdCBgdGhpcy5zdGF0ZWAg
d2lsbCBiZSBpbW1lZGlhdGVseSB1cGRhdGVkLCBzb1xuXHQgKiBhY2Nlc3NpbmcgYHRoaXMuc3Rh
dGVgIGFmdGVyIGNhbGxpbmcgdGhpcyBtZXRob2QgbWF5IHJldHVybiB0aGUgb2xkIHZhbHVlLlxu
XHQgKlxuXHQgKiBUaGVyZSBpcyBubyBndWFyYW50ZWUgdGhhdCBjYWxscyB0byBgc2V0U3RhdGVg
IHdpbGwgcnVuIHN5bmNocm9ub3VzbHksXG5cdCAqIGFzIHRoZXkgbWF5IGV2ZW50dWFsbHkgYmUg
YmF0Y2hlZCB0b2dldGhlci4gIFlvdSBjYW4gcHJvdmlkZSBhbiBvcHRpb25hbFxuXHQgKiBjYWxs
YmFjayB0aGF0IHdpbGwgYmUgZXhlY3V0ZWQgd2hlbiB0aGUgY2FsbCB0byBzZXRTdGF0ZSBpcyBh
Y3R1YWxseVxuXHQgKiBjb21wbGV0ZWQuXG5cdCAqXG5cdCAqIFdoZW4gYSBmdW5jdGlvbiBpcyBw
cm92aWRlZCB0byBzZXRTdGF0ZSwgaXQgd2lsbCBiZSBjYWxsZWQgYXQgc29tZSBwb2ludCBpblxu
XHQgKiB0aGUgZnV0dXJlIChub3Qgc3luY2hyb25vdXNseSkuIEl0IHdpbGwgYmUgY2FsbGVkIHdp
dGggdGhlIHVwIHRvIGRhdGVcblx0ICogY29tcG9uZW50IGFyZ3VtZW50cyAoc3RhdGUsIHByb3Bz
LCBjb250ZXh0KS4gVGhlc2UgdmFsdWVzIGNhbiBiZSBkaWZmZXJlbnRcblx0ICogZnJvbSB0aGlz
LiogYmVjYXVzZSB5b3VyIGZ1bmN0aW9uIG1heSBiZSBjYWxsZWQgYWZ0ZXIgcmVjZWl2ZVByb3Bz
IGJ1dCBiZWZvcmVcblx0ICogc2hvdWxkQ29tcG9uZW50VXBkYXRlLCBhbmQgdGhpcyBuZXcgc3Rh
dGUsIHByb3BzLCBhbmQgY29udGV4dCB3aWxsIG5vdCB5ZXQgYmVcblx0ICogYXNzaWduZWQgdG8g
dGhpcy5cblx0ICpcblx0ICogQHBhcmFtIHtvYmplY3R8ZnVuY3Rpb259IHBhcnRpYWxTdGF0ZSBO
ZXh0IHBhcnRpYWwgc3RhdGUgb3IgZnVuY3Rpb24gdG9cblx0ICogICAgICAgIHByb2R1Y2UgbmV4
dCBwYXJ0aWFsIHN0YXRlIHRvIGJlIG1lcmdlZCB3aXRoIGN1cnJlbnQgc3RhdGUuXG5cdCAqIEBw
YXJhbSB7P2Z1bmN0aW9ufSBjYWxsYmFjayBDYWxsZWQgYWZ0ZXIgc3RhdGUgaXMgdXBkYXRlZC5c
blx0ICogQGZpbmFsXG5cdCAqIEBwcm90ZWN0ZWRcblx0ICovXG5cdFJlYWN0Q29tcG9uZW50LnBy
b3RvdHlwZS5zZXRTdGF0ZSA9IGZ1bmN0aW9uIChwYXJ0aWFsU3RhdGUsIGNhbGxiYWNrKSB7XG5c
dCAgISh0eXBlb2YgcGFydGlhbFN0YXRlID09PSAnb2JqZWN0JyB8fCB0eXBlb2YgcGFydGlhbFN0
YXRlID09PSAnZnVuY3Rpb24nIHx8IHBhcnRpYWxTdGF0ZSA9PSBudWxsKSA/ICBmYWxzZSA/IGlu
dmFyaWFudChmYWxzZSwgJ3NldFN0YXRlKC4uLik6IHRha2VzIGFuIG9iamVjdCBvZiBzdGF0ZSB2
YXJpYWJsZXMgdG8gdXBkYXRlIG9yIGEgZnVuY3Rpb24gd2hpY2ggcmV0dXJucyBhbiBvYmplY3Qg
b2Ygc3RhdGUgdmFyaWFibGVzLicpIDogX3Byb2RJbnZhcmlhbnQoJzg1JykgOiB2b2lkIDA7XG5c
dCAgdGhpcy51cGRhdGVyLmVucXVldWVTZXRTdGF0ZSh0aGlzLCBwYXJ0aWFsU3RhdGUpO1xuXHQg
IGlmIChjYWxsYmFjaykge1xuXHQgICAgdGhpcy51cGRhdGVyLmVucXVldWVDYWxsYmFjayh0aGlz
LCBjYWxsYmFjaywgJ3NldFN0YXRlJyk7XG5cdCAgfVxuXHR9O1xuXHRcblx0LyoqXG5cdCAqIEZv
cmNlcyBhbiB1cGRhdGUuIFRoaXMgc2hvdWxkIG9ubHkgYmUgaW52b2tlZCB3aGVuIGl0IGlzIGtu
b3duIHdpdGhcblx0ICogY2VydGFpbnR5IHRoYXQgd2UgYXJlICoqbm90KiogaW4gYSBET00gdHJh
bnNhY3Rpb24uXG5cdCAqXG5cdCAqIFlvdSBtYXkgd2FudCB0byBjYWxsIHRoaXMgd2hlbiB5b3Ug
a25vdyB0aGF0IHNvbWUgZGVlcGVyIGFzcGVjdCBvZiB0aGVcblx0ICogY29tcG9uZW50J3Mgc3Rh
dGUgaGFzIGNoYW5nZWQgYnV0IGBzZXRTdGF0ZWAgd2FzIG5vdCBjYWxsZWQuXG5cdCAqXG5cdCAq
IFRoaXMgd2lsbCBub3QgaW52b2tlIGBzaG91bGRDb21wb25lbnRVcGRhdGVgLCBidXQgaXQgd2ls
bCBpbnZva2Vcblx0ICogYGNvbXBvbmVudFdpbGxVcGRhdGVgIGFuZCBgY29tcG9uZW50RGlkVXBk
YXRlYC5cblx0ICpcblx0ICogQHBhcmFtIHs/ZnVuY3Rpb259IGNhbGxiYWNrIENhbGxlZCBhZnRl
ciB1cGRhdGUgaXMgY29tcGxldGUuXG5cdCAqIEBmaW5hbFxuXHQgKiBAcHJvdGVjdGVkXG5cdCAq
L1xuXHRSZWFjdENvbXBvbmVudC5wcm90b3R5cGUuZm9yY2VVcGRhdGUgPSBmdW5jdGlvbiAoY2Fs
bGJhY2spIHtcblx0ICB0aGlzLnVwZGF0ZXIuZW5xdWV1ZUZvcmNlVXBkYXRlKHRoaXMpO1xuXHQg
IGlmIChjYWxsYmFjaykge1xuXHQgICAgdGhpcy51cGRhdGVyLmVucXVldWVDYWxsYmFjayh0aGlz
LCBjYWxsYmFjaywgJ2ZvcmNlVXBkYXRlJyk7XG5cdCAgfVxuXHR9O1xuXHRcblx0LyoqXG5cdCAq
IERlcHJlY2F0ZWQgQVBJcy4gVGhlc2UgQVBJcyB1c2VkIHRvIGV4aXN0IG9uIGNsYXNzaWMgUmVh
Y3QgY2xhc3NlcyBidXQgc2luY2Vcblx0ICogd2Ugd291bGQgbGlrZSB0byBkZXByZWNhdGUgdGhl
bSwgd2UncmUgbm90IGdvaW5nIHRvIG1vdmUgdGhlbSBvdmVyIHRvIHRoaXNcblx0ICogbW9kZXJu
IGJhc2UgY2xhc3MuIEluc3RlYWQsIHdlIGRlZmluZSBhIGdldHRlciB0aGF0IHdhcm5zIGlmIGl0
J3MgYWNjZXNzZWQuXG5cdCAqL1xuXHRpZiAoZmFsc2UpIHtcblx0ICB2YXIgZGVwcmVjYXRlZEFQ
SXMgPSB7XG5cdCAgICBpc01vdW50ZWQ6IFsnaXNNb3VudGVkJywgJ0luc3RlYWQsIG1ha2Ugc3Vy
ZSB0byBjbGVhbiB1cCBzdWJzY3JpcHRpb25zIGFuZCBwZW5kaW5nIHJlcXVlc3RzIGluICcgKyAn
Y29tcG9uZW50V2lsbFVubW91bnQgdG8gcHJldmVudCBtZW1vcnkgbGVha3MuJ10sXG5cdCAgICBy
ZXBsYWNlU3RhdGU6IFsncmVwbGFjZVN0YXRlJywgJ1JlZmFjdG9yIHlvdXIgY29kZSB0byB1c2Ug
c2V0U3RhdGUgaW5zdGVhZCAoc2VlICcgKyAnaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3Jl
YWN0L2lzc3Vlcy8zMjM2KS4nXVxuXHQgIH07XG5cdCAgdmFyIGRlZmluZURlcHJlY2F0aW9uV2Fy
bmluZyA9IGZ1bmN0aW9uIChtZXRob2ROYW1lLCBpbmZvKSB7XG5cdCAgICBpZiAoY2FuRGVmaW5l
UHJvcGVydHkpIHtcblx0ICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFJlYWN0Q29tcG9uZW50
LnByb3RvdHlwZSwgbWV0aG9kTmFtZSwge1xuXHQgICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xu
XHQgICAgICAgICAgbG93UHJpb3JpdHlXYXJuaW5nKGZhbHNlLCAnJXMoLi4uKSBpcyBkZXByZWNh
dGVkIGluIHBsYWluIEphdmFTY3JpcHQgUmVhY3QgY2xhc3Nlcy4gJXMnLCBpbmZvWzBdLCBpbmZv
WzFdKTtcblx0ICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG5cdCAgICAgICAgfVxuXHQgICAg
ICB9KTtcblx0ICAgIH1cblx0ICB9O1xuXHQgIGZvciAodmFyIGZuTmFtZSBpbiBkZXByZWNhdGVk
QVBJcykge1xuXHQgICAgaWYgKGRlcHJlY2F0ZWRBUElzLmhhc093blByb3BlcnR5KGZuTmFtZSkp
IHtcblx0ICAgICAgZGVmaW5lRGVwcmVjYXRpb25XYXJuaW5nKGZuTmFtZSwgZGVwcmVjYXRlZEFQ
SXNbZm5OYW1lXSk7XG5cdCAgICB9XG5cdCAgfVxuXHR9XG5cdFxuXHQvKipcblx0ICogQmFzZSBj
bGFzcyBoZWxwZXJzIGZvciB0aGUgdXBkYXRpbmcgc3RhdGUgb2YgYSBjb21wb25lbnQuXG5cdCAq
L1xuXHRmdW5jdGlvbiBSZWFjdFB1cmVDb21wb25lbnQocHJvcHMsIGNvbnRleHQsIHVwZGF0ZXIp
IHtcblx0ICAvLyBEdXBsaWNhdGVkIGZyb20gUmVhY3RDb21wb25lbnQuXG5cdCAgdGhpcy5wcm9w
cyA9IHByb3BzO1xuXHQgIHRoaXMuY29udGV4dCA9IGNvbnRleHQ7XG5cdCAgdGhpcy5yZWZzID0g
ZW1wdHlPYmplY3Q7XG5cdCAgLy8gV2UgaW5pdGlhbGl6ZSB0aGUgZGVmYXVsdCB1cGRhdGVyIGJ1
dCB0aGUgcmVhbCBvbmUgZ2V0cyBpbmplY3RlZCBieSB0aGVcblx0ICAvLyByZW5kZXJlci5cblx0
ICB0aGlzLnVwZGF0ZXIgPSB1cGRhdGVyIHx8IFJlYWN0Tm9vcFVwZGF0ZVF1ZXVlO1xuXHR9XG5c
dFxuXHRmdW5jdGlvbiBDb21wb25lbnREdW1teSgpIHt9XG5cdENvbXBvbmVudER1bW15LnByb3Rv
dHlwZSA9IFJlYWN0Q29tcG9uZW50LnByb3RvdHlwZTtcblx0UmVhY3RQdXJlQ29tcG9uZW50LnBy
b3RvdHlwZSA9IG5ldyBDb21wb25lbnREdW1teSgpO1xuXHRSZWFjdFB1cmVDb21wb25lbnQucHJv
dG90eXBlLmNvbnN0cnVjdG9yID0gUmVhY3RQdXJlQ29tcG9uZW50O1xuXHQvLyBBdm9pZCBhbiBl
eHRyYSBwcm90b3R5cGUganVtcCBmb3IgdGhlc2UgbWV0aG9kcy5cblx0X2Fzc2lnbihSZWFjdFB1
cmVDb21wb25lbnQucHJvdG90eXBlLCBSZWFjdENvbXBvbmVudC5wcm90b3R5cGUpO1xuXHRSZWFj
dFB1cmVDb21wb25lbnQucHJvdG90eXBlLmlzUHVyZVJlYWN0Q29tcG9uZW50ID0gdHJ1ZTtcblx0
XG5cdG1vZHVsZS5leHBvcnRzID0ge1xuXHQgIENvbXBvbmVudDogUmVhY3RDb21wb25lbnQsXG5c
dCAgUHVyZUNvbXBvbmVudDogUmVhY3RQdXJlQ29tcG9uZW50XG5cdH07XG5cbi8qKiovIH0sXG4v
KiA5MCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWly
ZV9fKSB7XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAyMDE2LXByZXNlbnQsIEZhY2Vib29rLCBJ
bmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNv
ZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxu
XHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRy
ZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91
bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAq
IFxuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdHZhciBfcHJvZEludmFyaWFudCA9
IF9fd2VicGFja19yZXF1aXJlX18oMjMpO1xuXHRcblx0dmFyIFJlYWN0Q3VycmVudE93bmVyID0g
X193ZWJwYWNrX3JlcXVpcmVfXygxMSk7XG5cdFxuXHR2YXIgaW52YXJpYW50ID0gX193ZWJwYWNr
X3JlcXVpcmVfXygxKTtcblx0dmFyIHdhcm5pbmcgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIpO1xu
XHRcblx0ZnVuY3Rpb24gaXNOYXRpdmUoZm4pIHtcblx0ICAvLyBCYXNlZCBvbiBpc05hdGl2ZSgp
IGZyb20gTG9kYXNoXG5cdCAgdmFyIGZ1bmNUb1N0cmluZyA9IEZ1bmN0aW9uLnByb3RvdHlwZS50
b1N0cmluZztcblx0ICB2YXIgaGFzT3duUHJvcGVydHkgPSBPYmplY3QucHJvdG90eXBlLmhhc093
blByb3BlcnR5O1xuXHQgIHZhciByZUlzTmF0aXZlID0gUmVnRXhwKCdeJyArIGZ1bmNUb1N0cmlu
Z1xuXHQgIC8vIFRha2UgYW4gZXhhbXBsZSBuYXRpdmUgZnVuY3Rpb24gc291cmNlIGZvciBjb21w
YXJpc29uXG5cdCAgLmNhbGwoaGFzT3duUHJvcGVydHlcblx0ICAvLyBTdHJpcCByZWdleCBjaGFy
YWN0ZXJzIHNvIHdlIGNhbiB1c2UgaXQgZm9yIHJlZ2V4XG5cdCAgKS5yZXBsYWNlKC9bXFxcXF4k
LiorPygpW1xcXXt9fF0vZywgJ1xcXFwkJidcblx0ICAvLyBSZW1vdmUgaGFzT3duUHJvcGVydHkg
ZnJvbSB0aGUgdGVtcGxhdGUgdG8gbWFrZSBpdCBnZW5lcmljXG5cdCAgKS5yZXBsYWNlKC9oYXNP
d25Qcm9wZXJ0eXwoZnVuY3Rpb24pLio/KD89XFxcXFxcKCl8IGZvciAuKz8oPz1cXFxcXFxdKS9n
LCAnJDEuKj8nKSArICckJyk7XG5cdCAgdHJ5IHtcblx0ICAgIHZhciBzb3VyY2UgPSBmdW5jVG9T
dHJpbmcuY2FsbChmbik7XG5cdCAgICByZXR1cm4gcmVJc05hdGl2ZS50ZXN0KHNvdXJjZSk7XG5c
dCAgfSBjYXRjaCAoZXJyKSB7XG5cdCAgICByZXR1cm4gZmFsc2U7XG5cdCAgfVxuXHR9XG5cdFxu
XHR2YXIgY2FuVXNlQ29sbGVjdGlvbnMgPVxuXHQvLyBBcnJheS5mcm9tXG5cdHR5cGVvZiBBcnJh
eS5mcm9tID09PSAnZnVuY3Rpb24nICYmXG5cdC8vIE1hcFxuXHR0eXBlb2YgTWFwID09PSAnZnVu
Y3Rpb24nICYmIGlzTmF0aXZlKE1hcCkgJiZcblx0Ly8gTWFwLnByb3RvdHlwZS5rZXlzXG5cdE1h
cC5wcm90b3R5cGUgIT0gbnVsbCAmJiB0eXBlb2YgTWFwLnByb3RvdHlwZS5rZXlzID09PSAnZnVu
Y3Rpb24nICYmIGlzTmF0aXZlKE1hcC5wcm90b3R5cGUua2V5cykgJiZcblx0Ly8gU2V0XG5cdHR5
cGVvZiBTZXQgPT09ICdmdW5jdGlvbicgJiYgaXNOYXRpdmUoU2V0KSAmJlxuXHQvLyBTZXQucHJv
dG90eXBlLmtleXNcblx0U2V0LnByb3RvdHlwZSAhPSBudWxsICYmIHR5cGVvZiBTZXQucHJvdG90
eXBlLmtleXMgPT09ICdmdW5jdGlvbicgJiYgaXNOYXRpdmUoU2V0LnByb3RvdHlwZS5rZXlzKTtc
blx0XG5cdHZhciBzZXRJdGVtO1xuXHR2YXIgZ2V0SXRlbTtcblx0dmFyIHJlbW92ZUl0ZW07XG5c
dHZhciBnZXRJdGVtSURzO1xuXHR2YXIgYWRkUm9vdDtcblx0dmFyIHJlbW92ZVJvb3Q7XG5cdHZh
ciBnZXRSb290SURzO1xuXHRcblx0aWYgKGNhblVzZUNvbGxlY3Rpb25zKSB7XG5cdCAgdmFyIGl0
ZW1NYXAgPSBuZXcgTWFwKCk7XG5cdCAgdmFyIHJvb3RJRFNldCA9IG5ldyBTZXQoKTtcblx0XG5c
dCAgc2V0SXRlbSA9IGZ1bmN0aW9uIChpZCwgaXRlbSkge1xuXHQgICAgaXRlbU1hcC5zZXQoaWQs
IGl0ZW0pO1xuXHQgIH07XG5cdCAgZ2V0SXRlbSA9IGZ1bmN0aW9uIChpZCkge1xuXHQgICAgcmV0
dXJuIGl0ZW1NYXAuZ2V0KGlkKTtcblx0ICB9O1xuXHQgIHJlbW92ZUl0ZW0gPSBmdW5jdGlvbiAo
aWQpIHtcblx0ICAgIGl0ZW1NYXBbJ2RlbGV0ZSddKGlkKTtcblx0ICB9O1xuXHQgIGdldEl0ZW1J
RHMgPSBmdW5jdGlvbiAoKSB7XG5cdCAgICByZXR1cm4gQXJyYXkuZnJvbShpdGVtTWFwLmtleXMo
KSk7XG5cdCAgfTtcblx0XG5cdCAgYWRkUm9vdCA9IGZ1bmN0aW9uIChpZCkge1xuXHQgICAgcm9v
dElEU2V0LmFkZChpZCk7XG5cdCAgfTtcblx0ICByZW1vdmVSb290ID0gZnVuY3Rpb24gKGlkKSB7
XG5cdCAgICByb290SURTZXRbJ2RlbGV0ZSddKGlkKTtcblx0ICB9O1xuXHQgIGdldFJvb3RJRHMg
PSBmdW5jdGlvbiAoKSB7XG5cdCAgICByZXR1cm4gQXJyYXkuZnJvbShyb290SURTZXQua2V5cygp
KTtcblx0ICB9O1xuXHR9IGVsc2Uge1xuXHQgIHZhciBpdGVtQnlLZXkgPSB7fTtcblx0ICB2YXIg
cm9vdEJ5S2V5ID0ge307XG5cdFxuXHQgIC8vIFVzZSBub24tbnVtZXJpYyBrZXlzIHRvIHByZXZl
bnQgVjggcGVyZm9ybWFuY2UgaXNzdWVzOlxuXHQgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNl
Ym9vay9yZWFjdC9wdWxsLzcyMzJcblx0ICB2YXIgZ2V0S2V5RnJvbUlEID0gZnVuY3Rpb24gKGlk
KSB7XG5cdCAgICByZXR1cm4gJy4nICsgaWQ7XG5cdCAgfTtcblx0ICB2YXIgZ2V0SURGcm9tS2V5
ID0gZnVuY3Rpb24gKGtleSkge1xuXHQgICAgcmV0dXJuIHBhcnNlSW50KGtleS5zdWJzdHIoMSks
IDEwKTtcblx0ICB9O1xuXHRcblx0ICBzZXRJdGVtID0gZnVuY3Rpb24gKGlkLCBpdGVtKSB7XG5c
dCAgICB2YXIga2V5ID0gZ2V0S2V5RnJvbUlEKGlkKTtcblx0ICAgIGl0ZW1CeUtleVtrZXldID0g
aXRlbTtcblx0ICB9O1xuXHQgIGdldEl0ZW0gPSBmdW5jdGlvbiAoaWQpIHtcblx0ICAgIHZhciBr
ZXkgPSBnZXRLZXlGcm9tSUQoaWQpO1xuXHQgICAgcmV0dXJuIGl0ZW1CeUtleVtrZXldO1xuXHQg
IH07XG5cdCAgcmVtb3ZlSXRlbSA9IGZ1bmN0aW9uIChpZCkge1xuXHQgICAgdmFyIGtleSA9IGdl
dEtleUZyb21JRChpZCk7XG5cdCAgICBkZWxldGUgaXRlbUJ5S2V5W2tleV07XG5cdCAgfTtcblx0
ICBnZXRJdGVtSURzID0gZnVuY3Rpb24gKCkge1xuXHQgICAgcmV0dXJuIE9iamVjdC5rZXlzKGl0
ZW1CeUtleSkubWFwKGdldElERnJvbUtleSk7XG5cdCAgfTtcblx0XG5cdCAgYWRkUm9vdCA9IGZ1
bmN0aW9uIChpZCkge1xuXHQgICAgdmFyIGtleSA9IGdldEtleUZyb21JRChpZCk7XG5cdCAgICBy
b290QnlLZXlba2V5XSA9IHRydWU7XG5cdCAgfTtcblx0ICByZW1vdmVSb290ID0gZnVuY3Rpb24g
KGlkKSB7XG5cdCAgICB2YXIga2V5ID0gZ2V0S2V5RnJvbUlEKGlkKTtcblx0ICAgIGRlbGV0ZSBy
b290QnlLZXlba2V5XTtcblx0ICB9O1xuXHQgIGdldFJvb3RJRHMgPSBmdW5jdGlvbiAoKSB7XG5c
dCAgICByZXR1cm4gT2JqZWN0LmtleXMocm9vdEJ5S2V5KS5tYXAoZ2V0SURGcm9tS2V5KTtcblx0
ICB9O1xuXHR9XG5cdFxuXHR2YXIgdW5tb3VudGVkSURzID0gW107XG5cdFxuXHRmdW5jdGlvbiBw
dXJnZURlZXAoaWQpIHtcblx0ICB2YXIgaXRlbSA9IGdldEl0ZW0oaWQpO1xuXHQgIGlmIChpdGVt
KSB7XG5cdCAgICB2YXIgY2hpbGRJRHMgPSBpdGVtLmNoaWxkSURzO1xuXHRcblx0ICAgIHJlbW92
ZUl0ZW0oaWQpO1xuXHQgICAgY2hpbGRJRHMuZm9yRWFjaChwdXJnZURlZXApO1xuXHQgIH1cblx0
fVxuXHRcblx0ZnVuY3Rpb24gZGVzY3JpYmVDb21wb25lbnRGcmFtZShuYW1lLCBzb3VyY2UsIG93
bmVyTmFtZSkge1xuXHQgIHJldHVybiAnXFxuICAgIGluICcgKyAobmFtZSB8fCAnVW5rbm93bicp
ICsgKHNvdXJjZSA/ICcgKGF0ICcgKyBzb3VyY2UuZmlsZU5hbWUucmVwbGFjZSgvXi4qW1xcXFxc
XC9dLywgJycpICsgJzonICsgc291cmNlLmxpbmVOdW1iZXIgKyAnKScgOiBvd25lck5hbWUgPyAn
IChjcmVhdGVkIGJ5ICcgKyBvd25lck5hbWUgKyAnKScgOiAnJyk7XG5cdH1cblx0XG5cdGZ1bmN0
aW9uIGdldERpc3BsYXlOYW1lKGVsZW1lbnQpIHtcblx0ICBpZiAoZWxlbWVudCA9PSBudWxsKSB7
XG5cdCAgICByZXR1cm4gJyNlbXB0eSc7XG5cdCAgfSBlbHNlIGlmICh0eXBlb2YgZWxlbWVudCA9
PT0gJ3N0cmluZycgfHwgdHlwZW9mIGVsZW1lbnQgPT09ICdudW1iZXInKSB7XG5cdCAgICByZXR1
cm4gJyN0ZXh0Jztcblx0ICB9IGVsc2UgaWYgKHR5cGVvZiBlbGVtZW50LnR5cGUgPT09ICdzdHJp
bmcnKSB7XG5cdCAgICByZXR1cm4gZWxlbWVudC50eXBlO1xuXHQgIH0gZWxzZSB7XG5cdCAgICBy
ZXR1cm4gZWxlbWVudC50eXBlLmRpc3BsYXlOYW1lIHx8IGVsZW1lbnQudHlwZS5uYW1lIHx8ICdV
bmtub3duJztcblx0ICB9XG5cdH1cblx0XG5cdGZ1bmN0aW9uIGRlc2NyaWJlSUQoaWQpIHtcblx0
ICB2YXIgbmFtZSA9IFJlYWN0Q29tcG9uZW50VHJlZUhvb2suZ2V0RGlzcGxheU5hbWUoaWQpO1xu
XHQgIHZhciBlbGVtZW50ID0gUmVhY3RDb21wb25lbnRUcmVlSG9vay5nZXRFbGVtZW50KGlkKTtc
blx0ICB2YXIgb3duZXJJRCA9IFJlYWN0Q29tcG9uZW50VHJlZUhvb2suZ2V0T3duZXJJRChpZCk7
XG5cdCAgdmFyIG93bmVyTmFtZTtcblx0ICBpZiAob3duZXJJRCkge1xuXHQgICAgb3duZXJOYW1l
ID0gUmVhY3RDb21wb25lbnRUcmVlSG9vay5nZXREaXNwbGF5TmFtZShvd25lcklEKTtcblx0ICB9
XG5cdCAgIGZhbHNlID8gd2FybmluZyhlbGVtZW50LCAnUmVhY3RDb21wb25lbnRUcmVlSG9vazog
TWlzc2luZyBSZWFjdCBlbGVtZW50IGZvciBkZWJ1Z0lEICVzIHdoZW4gJyArICdidWlsZGluZyBz
dGFjaycsIGlkKSA6IHZvaWQgMDtcblx0ICByZXR1cm4gZGVzY3JpYmVDb21wb25lbnRGcmFtZShu
YW1lLCBlbGVtZW50ICYmIGVsZW1lbnQuX3NvdXJjZSwgb3duZXJOYW1lKTtcblx0fVxuXHRcblx0
dmFyIFJlYWN0Q29tcG9uZW50VHJlZUhvb2sgPSB7XG5cdCAgb25TZXRDaGlsZHJlbjogZnVuY3Rp
b24gKGlkLCBuZXh0Q2hpbGRJRHMpIHtcblx0ICAgIHZhciBpdGVtID0gZ2V0SXRlbShpZCk7XG5c
dCAgICAhaXRlbSA/ICBmYWxzZSA/IGludmFyaWFudChmYWxzZSwgJ0l0ZW0gbXVzdCBoYXZlIGJl
ZW4gc2V0JykgOiBfcHJvZEludmFyaWFudCgnMTQ0JykgOiB2b2lkIDA7XG5cdCAgICBpdGVtLmNo
aWxkSURzID0gbmV4dENoaWxkSURzO1xuXHRcblx0ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbmV4
dENoaWxkSURzLmxlbmd0aDsgaSsrKSB7XG5cdCAgICAgIHZhciBuZXh0Q2hpbGRJRCA9IG5leHRD
aGlsZElEc1tpXTtcblx0ICAgICAgdmFyIG5leHRDaGlsZCA9IGdldEl0ZW0obmV4dENoaWxkSUQp
O1xuXHQgICAgICAhbmV4dENoaWxkID8gIGZhbHNlID8gaW52YXJpYW50KGZhbHNlLCAnRXhwZWN0
ZWQgaG9vayBldmVudHMgdG8gZmlyZSBmb3IgdGhlIGNoaWxkIGJlZm9yZSBpdHMgcGFyZW50IGlu
Y2x1ZGVzIGl0IGluIG9uU2V0Q2hpbGRyZW4oKS4nKSA6IF9wcm9kSW52YXJpYW50KCcxNDAnKSA6
IHZvaWQgMDtcblx0ICAgICAgIShuZXh0Q2hpbGQuY2hpbGRJRHMgIT0gbnVsbCB8fCB0eXBlb2Yg
bmV4dENoaWxkLmVsZW1lbnQgIT09ICdvYmplY3QnIHx8IG5leHRDaGlsZC5lbGVtZW50ID09IG51
bGwpID8gIGZhbHNlID8gaW52YXJpYW50KGZhbHNlLCAnRXhwZWN0ZWQgb25TZXRDaGlsZHJlbigp
IHRvIGZpcmUgZm9yIGEgY29udGFpbmVyIGNoaWxkIGJlZm9yZSBpdHMgcGFyZW50IGluY2x1ZGVz
IGl0IGluIG9uU2V0Q2hpbGRyZW4oKS4nKSA6IF9wcm9kSW52YXJpYW50KCcxNDEnKSA6IHZvaWQg
MDtcblx0ICAgICAgIW5leHRDaGlsZC5pc01vdW50ZWQgPyAgZmFsc2UgPyBpbnZhcmlhbnQoZmFs
c2UsICdFeHBlY3RlZCBvbk1vdW50Q29tcG9uZW50KCkgdG8gZmlyZSBmb3IgdGhlIGNoaWxkIGJl
Zm9yZSBpdHMgcGFyZW50IGluY2x1ZGVzIGl0IGluIG9uU2V0Q2hpbGRyZW4oKS4nKSA6IF9wcm9k
SW52YXJpYW50KCc3MScpIDogdm9pZCAwO1xuXHQgICAgICBpZiAobmV4dENoaWxkLnBhcmVudElE
ID09IG51bGwpIHtcblx0ICAgICAgICBuZXh0Q2hpbGQucGFyZW50SUQgPSBpZDtcblx0ICAgICAg
ICAvLyBUT0RPOiBUaGlzIHNob3VsZG4ndCBiZSBuZWNlc3NhcnkgYnV0IG1vdW50aW5nIGEgbmV3
IHJvb3QgZHVyaW5nIGluXG5cdCAgICAgICAgLy8gY29tcG9uZW50V2lsbE1vdW50IGN1cnJlbnRs
eSBjYXVzZXMgbm90LXlldC1tb3VudGVkIGNvbXBvbmVudHMgdG9cblx0ICAgICAgICAvLyBiZSBw
dXJnZWQgZnJvbSBvdXIgdHJlZSBkYXRhIHNvIHRoZWlyIHBhcmVudCBpZCBpcyBtaXNzaW5nLlxu
XHQgICAgICB9XG5cdCAgICAgICEobmV4dENoaWxkLnBhcmVudElEID09PSBpZCkgPyAgZmFsc2Ug
PyBpbnZhcmlhbnQoZmFsc2UsICdFeHBlY3RlZCBvbkJlZm9yZU1vdW50Q29tcG9uZW50KCkgcGFy
ZW50IGFuZCBvblNldENoaWxkcmVuKCkgdG8gYmUgY29uc2lzdGVudCAoJXMgaGFzIHBhcmVudHMg
JXMgYW5kICVzKS4nLCBuZXh0Q2hpbGRJRCwgbmV4dENoaWxkLnBhcmVudElELCBpZCkgOiBfcHJv
ZEludmFyaWFudCgnMTQyJywgbmV4dENoaWxkSUQsIG5leHRDaGlsZC5wYXJlbnRJRCwgaWQpIDog
dm9pZCAwO1xuXHQgICAgfVxuXHQgIH0sXG5cdCAgb25CZWZvcmVNb3VudENvbXBvbmVudDogZnVu
Y3Rpb24gKGlkLCBlbGVtZW50LCBwYXJlbnRJRCkge1xuXHQgICAgdmFyIGl0ZW0gPSB7XG5cdCAg
ICAgIGVsZW1lbnQ6IGVsZW1lbnQsXG5cdCAgICAgIHBhcmVudElEOiBwYXJlbnRJRCxcblx0ICAg
ICAgdGV4dDogbnVsbCxcblx0ICAgICAgY2hpbGRJRHM6IFtdLFxuXHQgICAgICBpc01vdW50ZWQ6
IGZhbHNlLFxuXHQgICAgICB1cGRhdGVDb3VudDogMFxuXHQgICAgfTtcblx0ICAgIHNldEl0ZW0o
aWQsIGl0ZW0pO1xuXHQgIH0sXG5cdCAgb25CZWZvcmVVcGRhdGVDb21wb25lbnQ6IGZ1bmN0aW9u
IChpZCwgZWxlbWVudCkge1xuXHQgICAgdmFyIGl0ZW0gPSBnZXRJdGVtKGlkKTtcblx0ICAgIGlm
ICghaXRlbSB8fCAhaXRlbS5pc01vdW50ZWQpIHtcblx0ICAgICAgLy8gV2UgbWF5IGVuZCB1cCBo
ZXJlIGFzIGEgcmVzdWx0IG9mIHNldFN0YXRlKCkgaW4gY29tcG9uZW50V2lsbFVubW91bnQoKS5c
blx0ICAgICAgLy8gSW4gdGhpcyBjYXNlLCBpZ25vcmUgdGhlIGVsZW1lbnQuXG5cdCAgICAgIHJl
dHVybjtcblx0ICAgIH1cblx0ICAgIGl0ZW0uZWxlbWVudCA9IGVsZW1lbnQ7XG5cdCAgfSxcblx0
ICBvbk1vdW50Q29tcG9uZW50OiBmdW5jdGlvbiAoaWQpIHtcblx0ICAgIHZhciBpdGVtID0gZ2V0
SXRlbShpZCk7XG5cdCAgICAhaXRlbSA/ICBmYWxzZSA/IGludmFyaWFudChmYWxzZSwgJ0l0ZW0g
bXVzdCBoYXZlIGJlZW4gc2V0JykgOiBfcHJvZEludmFyaWFudCgnMTQ0JykgOiB2b2lkIDA7XG5c
dCAgICBpdGVtLmlzTW91bnRlZCA9IHRydWU7XG5cdCAgICB2YXIgaXNSb290ID0gaXRlbS5wYXJl
bnRJRCA9PT0gMDtcblx0ICAgIGlmIChpc1Jvb3QpIHtcblx0ICAgICAgYWRkUm9vdChpZCk7XG5c
dCAgICB9XG5cdCAgfSxcblx0ICBvblVwZGF0ZUNvbXBvbmVudDogZnVuY3Rpb24gKGlkKSB7XG5c
dCAgICB2YXIgaXRlbSA9IGdldEl0ZW0oaWQpO1xuXHQgICAgaWYgKCFpdGVtIHx8ICFpdGVtLmlz
TW91bnRlZCkge1xuXHQgICAgICAvLyBXZSBtYXkgZW5kIHVwIGhlcmUgYXMgYSByZXN1bHQgb2Yg
c2V0U3RhdGUoKSBpbiBjb21wb25lbnRXaWxsVW5tb3VudCgpLlxuXHQgICAgICAvLyBJbiB0aGlz
IGNhc2UsIGlnbm9yZSB0aGUgZWxlbWVudC5cblx0ICAgICAgcmV0dXJuO1xuXHQgICAgfVxuXHQg
ICAgaXRlbS51cGRhdGVDb3VudCsrO1xuXHQgIH0sXG5cdCAgb25Vbm1vdW50Q29tcG9uZW50OiBm
dW5jdGlvbiAoaWQpIHtcblx0ICAgIHZhciBpdGVtID0gZ2V0SXRlbShpZCk7XG5cdCAgICBpZiAo
aXRlbSkge1xuXHQgICAgICAvLyBXZSBuZWVkIHRvIGNoZWNrIGlmIGl0IGV4aXN0cy5cblx0ICAg
ICAgLy8gYGl0ZW1gIG1pZ2h0IG5vdCBleGlzdCBpZiBpdCBpcyBpbnNpZGUgYW4gZXJyb3IgYm91
bmRhcnksIGFuZCBhIHNpYmxpbmdcblx0ICAgICAgLy8gZXJyb3IgYm91bmRhcnkgY2hpbGQgdGhy
ZXcgd2hpbGUgbW91bnRpbmcuIFRoZW4gdGhpcyBpbnN0YW5jZSBuZXZlclxuXHQgICAgICAvLyBn
b3QgYSBjaGFuY2UgdG8gbW91bnQsIGJ1dCBpdCBzdGlsbCBnZXRzIGFuIHVubW91bnRpbmcgZXZl
bnQgZHVyaW5nXG5cdCAgICAgIC8vIHRoZSBlcnJvciBib3VuZGFyeSBjbGVhbnVwLlxuXHQgICAg
ICBpdGVtLmlzTW91bnRlZCA9IGZhbHNlO1xuXHQgICAgICB2YXIgaXNSb290ID0gaXRlbS5wYXJl
bnRJRCA9PT0gMDtcblx0ICAgICAgaWYgKGlzUm9vdCkge1xuXHQgICAgICAgIHJlbW92ZVJvb3Qo
aWQpO1xuXHQgICAgICB9XG5cdCAgICB9XG5cdCAgICB1bm1vdW50ZWRJRHMucHVzaChpZCk7XG5c
dCAgfSxcblx0ICBwdXJnZVVubW91bnRlZENvbXBvbmVudHM6IGZ1bmN0aW9uICgpIHtcblx0ICAg
IGlmIChSZWFjdENvbXBvbmVudFRyZWVIb29rLl9wcmV2ZW50UHVyZ2luZykge1xuXHQgICAgICAv
LyBTaG91bGQgb25seSBiZSB1c2VkIGZvciB0ZXN0aW5nLlxuXHQgICAgICByZXR1cm47XG5cdCAg
ICB9XG5cdFxuXHQgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB1bm1vdW50ZWRJRHMubGVuZ3RoOyBp
KyspIHtcblx0ICAgICAgdmFyIGlkID0gdW5tb3VudGVkSURzW2ldO1xuXHQgICAgICBwdXJnZURl
ZXAoaWQpO1xuXHQgICAgfVxuXHQgICAgdW5tb3VudGVkSURzLmxlbmd0aCA9IDA7XG5cdCAgfSxc
blx0ICBpc01vdW50ZWQ6IGZ1bmN0aW9uIChpZCkge1xuXHQgICAgdmFyIGl0ZW0gPSBnZXRJdGVt
KGlkKTtcblx0ICAgIHJldHVybiBpdGVtID8gaXRlbS5pc01vdW50ZWQgOiBmYWxzZTtcblx0ICB9
LFxuXHQgIGdldEN1cnJlbnRTdGFja0FkZGVuZHVtOiBmdW5jdGlvbiAodG9wRWxlbWVudCkge1xu
XHQgICAgdmFyIGluZm8gPSAnJztcblx0ICAgIGlmICh0b3BFbGVtZW50KSB7XG5cdCAgICAgIHZh
ciBuYW1lID0gZ2V0RGlzcGxheU5hbWUodG9wRWxlbWVudCk7XG5cdCAgICAgIHZhciBvd25lciA9
IHRvcEVsZW1lbnQuX293bmVyO1xuXHQgICAgICBpbmZvICs9IGRlc2NyaWJlQ29tcG9uZW50RnJh
bWUobmFtZSwgdG9wRWxlbWVudC5fc291cmNlLCBvd25lciAmJiBvd25lci5nZXROYW1lKCkpO1xu
XHQgICAgfVxuXHRcblx0ICAgIHZhciBjdXJyZW50T3duZXIgPSBSZWFjdEN1cnJlbnRPd25lci5j
dXJyZW50O1xuXHQgICAgdmFyIGlkID0gY3VycmVudE93bmVyICYmIGN1cnJlbnRPd25lci5fZGVi
dWdJRDtcblx0XG5cdCAgICBpbmZvICs9IFJlYWN0Q29tcG9uZW50VHJlZUhvb2suZ2V0U3RhY2tB
ZGRlbmR1bUJ5SUQoaWQpO1xuXHQgICAgcmV0dXJuIGluZm87XG5cdCAgfSxcblx0ICBnZXRTdGFj
a0FkZGVuZHVtQnlJRDogZnVuY3Rpb24gKGlkKSB7XG5cdCAgICB2YXIgaW5mbyA9ICcnO1xuXHQg
ICAgd2hpbGUgKGlkKSB7XG5cdCAgICAgIGluZm8gKz0gZGVzY3JpYmVJRChpZCk7XG5cdCAgICAg
IGlkID0gUmVhY3RDb21wb25lbnRUcmVlSG9vay5nZXRQYXJlbnRJRChpZCk7XG5cdCAgICB9XG5c
dCAgICByZXR1cm4gaW5mbztcblx0ICB9LFxuXHQgIGdldENoaWxkSURzOiBmdW5jdGlvbiAoaWQp
IHtcblx0ICAgIHZhciBpdGVtID0gZ2V0SXRlbShpZCk7XG5cdCAgICByZXR1cm4gaXRlbSA/IGl0
ZW0uY2hpbGRJRHMgOiBbXTtcblx0ICB9LFxuXHQgIGdldERpc3BsYXlOYW1lOiBmdW5jdGlvbiAo
aWQpIHtcblx0ICAgIHZhciBlbGVtZW50ID0gUmVhY3RDb21wb25lbnRUcmVlSG9vay5nZXRFbGVt
ZW50KGlkKTtcblx0ICAgIGlmICghZWxlbWVudCkge1xuXHQgICAgICByZXR1cm4gbnVsbDtcblx0
ICAgIH1cblx0ICAgIHJldHVybiBnZXREaXNwbGF5TmFtZShlbGVtZW50KTtcblx0ICB9LFxuXHQg
IGdldEVsZW1lbnQ6IGZ1bmN0aW9uIChpZCkge1xuXHQgICAgdmFyIGl0ZW0gPSBnZXRJdGVtKGlk
KTtcblx0ICAgIHJldHVybiBpdGVtID8gaXRlbS5lbGVtZW50IDogbnVsbDtcblx0ICB9LFxuXHQg
IGdldE93bmVySUQ6IGZ1bmN0aW9uIChpZCkge1xuXHQgICAgdmFyIGVsZW1lbnQgPSBSZWFjdENv
bXBvbmVudFRyZWVIb29rLmdldEVsZW1lbnQoaWQpO1xuXHQgICAgaWYgKCFlbGVtZW50IHx8ICFl
bGVtZW50Ll9vd25lcikge1xuXHQgICAgICByZXR1cm4gbnVsbDtcblx0ICAgIH1cblx0ICAgIHJl
dHVybiBlbGVtZW50Ll9vd25lci5fZGVidWdJRDtcblx0ICB9LFxuXHQgIGdldFBhcmVudElEOiBm
dW5jdGlvbiAoaWQpIHtcblx0ICAgIHZhciBpdGVtID0gZ2V0SXRlbShpZCk7XG5cdCAgICByZXR1
cm4gaXRlbSA/IGl0ZW0ucGFyZW50SUQgOiBudWxsO1xuXHQgIH0sXG5cdCAgZ2V0U291cmNlOiBm
dW5jdGlvbiAoaWQpIHtcblx0ICAgIHZhciBpdGVtID0gZ2V0SXRlbShpZCk7XG5cdCAgICB2YXIg
ZWxlbWVudCA9IGl0ZW0gPyBpdGVtLmVsZW1lbnQgOiBudWxsO1xuXHQgICAgdmFyIHNvdXJjZSA9
IGVsZW1lbnQgIT0gbnVsbCA/IGVsZW1lbnQuX3NvdXJjZSA6IG51bGw7XG5cdCAgICByZXR1cm4g
c291cmNlO1xuXHQgIH0sXG5cdCAgZ2V0VGV4dDogZnVuY3Rpb24gKGlkKSB7XG5cdCAgICB2YXIg
ZWxlbWVudCA9IFJlYWN0Q29tcG9uZW50VHJlZUhvb2suZ2V0RWxlbWVudChpZCk7XG5cdCAgICBp
ZiAodHlwZW9mIGVsZW1lbnQgPT09ICdzdHJpbmcnKSB7XG5cdCAgICAgIHJldHVybiBlbGVtZW50
O1xuXHQgICAgfSBlbHNlIGlmICh0eXBlb2YgZWxlbWVudCA9PT0gJ251bWJlcicpIHtcblx0ICAg
ICAgcmV0dXJuICcnICsgZWxlbWVudDtcblx0ICAgIH0gZWxzZSB7XG5cdCAgICAgIHJldHVybiBu
dWxsO1xuXHQgICAgfVxuXHQgIH0sXG5cdCAgZ2V0VXBkYXRlQ291bnQ6IGZ1bmN0aW9uIChpZCkg
e1xuXHQgICAgdmFyIGl0ZW0gPSBnZXRJdGVtKGlkKTtcblx0ICAgIHJldHVybiBpdGVtID8gaXRl
bS51cGRhdGVDb3VudCA6IDA7XG5cdCAgfSxcblx0XG5cdFxuXHQgIGdldFJvb3RJRHM6IGdldFJv
b3RJRHMsXG5cdCAgZ2V0UmVnaXN0ZXJlZElEczogZ2V0SXRlbUlEcyxcblx0XG5cdCAgcHVzaE5v
blN0YW5kYXJkV2FybmluZ1N0YWNrOiBmdW5jdGlvbiAoaXNDcmVhdGluZ0VsZW1lbnQsIGN1cnJl
bnRTb3VyY2UpIHtcblx0ICAgIGlmICh0eXBlb2YgY29uc29sZS5yZWFjdFN0YWNrICE9PSAnZnVu
Y3Rpb24nKSB7XG5cdCAgICAgIHJldHVybjtcblx0ICAgIH1cblx0XG5cdCAgICB2YXIgc3RhY2sg
PSBbXTtcblx0ICAgIHZhciBjdXJyZW50T3duZXIgPSBSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50
O1xuXHQgICAgdmFyIGlkID0gY3VycmVudE93bmVyICYmIGN1cnJlbnRPd25lci5fZGVidWdJRDtc
blx0XG5cdCAgICB0cnkge1xuXHQgICAgICBpZiAoaXNDcmVhdGluZ0VsZW1lbnQpIHtcblx0ICAg
ICAgICBzdGFjay5wdXNoKHtcblx0ICAgICAgICAgIG5hbWU6IGlkID8gUmVhY3RDb21wb25lbnRU
cmVlSG9vay5nZXREaXNwbGF5TmFtZShpZCkgOiBudWxsLFxuXHQgICAgICAgICAgZmlsZU5hbWU6
IGN1cnJlbnRTb3VyY2UgPyBjdXJyZW50U291cmNlLmZpbGVOYW1lIDogbnVsbCxcblx0ICAgICAg
ICAgIGxpbmVOdW1iZXI6IGN1cnJlbnRTb3VyY2UgPyBjdXJyZW50U291cmNlLmxpbmVOdW1iZXIg
OiBudWxsXG5cdCAgICAgICAgfSk7XG5cdCAgICAgIH1cblx0XG5cdCAgICAgIHdoaWxlIChpZCkg
e1xuXHQgICAgICAgIHZhciBlbGVtZW50ID0gUmVhY3RDb21wb25lbnRUcmVlSG9vay5nZXRFbGVt
ZW50KGlkKTtcblx0ICAgICAgICB2YXIgcGFyZW50SUQgPSBSZWFjdENvbXBvbmVudFRyZWVIb29r
LmdldFBhcmVudElEKGlkKTtcblx0ICAgICAgICB2YXIgb3duZXJJRCA9IFJlYWN0Q29tcG9uZW50
VHJlZUhvb2suZ2V0T3duZXJJRChpZCk7XG5cdCAgICAgICAgdmFyIG93bmVyTmFtZSA9IG93bmVy
SUQgPyBSZWFjdENvbXBvbmVudFRyZWVIb29rLmdldERpc3BsYXlOYW1lKG93bmVySUQpIDogbnVs
bDtcblx0ICAgICAgICB2YXIgc291cmNlID0gZWxlbWVudCAmJiBlbGVtZW50Ll9zb3VyY2U7XG5c
dCAgICAgICAgc3RhY2sucHVzaCh7XG5cdCAgICAgICAgICBuYW1lOiBvd25lck5hbWUsXG5cdCAg
ICAgICAgICBmaWxlTmFtZTogc291cmNlID8gc291cmNlLmZpbGVOYW1lIDogbnVsbCxcblx0ICAg
ICAgICAgIGxpbmVOdW1iZXI6IHNvdXJjZSA/IHNvdXJjZS5saW5lTnVtYmVyIDogbnVsbFxuXHQg
ICAgICAgIH0pO1xuXHQgICAgICAgIGlkID0gcGFyZW50SUQ7XG5cdCAgICAgIH1cblx0ICAgIH0g
Y2F0Y2ggKGVycikge1xuXHQgICAgICAvLyBJbnRlcm5hbCBzdGF0ZSBpcyBtZXNzZWQgdXAuXG5c
dCAgICAgIC8vIFN0b3AgYnVpbGRpbmcgdGhlIHN0YWNrIChpdCdzIGp1c3QgYSBuaWNlIHRvIGhh
dmUpLlxuXHQgICAgfVxuXHRcblx0ICAgIGNvbnNvbGUucmVhY3RTdGFjayhzdGFjayk7XG5cdCAg
fSxcblx0ICBwb3BOb25TdGFuZGFyZFdhcm5pbmdTdGFjazogZnVuY3Rpb24gKCkge1xuXHQgICAg
aWYgKHR5cGVvZiBjb25zb2xlLnJlYWN0U3RhY2tFbmQgIT09ICdmdW5jdGlvbicpIHtcblx0ICAg
ICAgcmV0dXJuO1xuXHQgICAgfVxuXHQgICAgY29uc29sZS5yZWFjdFN0YWNrRW5kKCk7XG5cdCAg
fVxuXHR9O1xuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBSZWFjdENvbXBvbmVudFRyZWVIb29rO1xu
XG4vKioqLyB9LFxuLyogOTEgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xu
XG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQg
KiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxp
Y2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElD
RU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBh
ZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRo
ZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKiBcblx0ICov
XG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHQvLyBUaGUgU3ltYm9sIHVzZWQgdG8gdGFnIHRo
ZSBSZWFjdEVsZW1lbnQgdHlwZS4gSWYgdGhlcmUgaXMgbm8gbmF0aXZlIFN5bWJvbFxuXHQvLyBu
b3IgcG9seWZpbGwsIHRoZW4gYSBwbGFpbiBudW1iZXIgaXMgdXNlZCBmb3IgcGVyZm9ybWFuY2Uu
XG5cdFxuXHR2YXIgUkVBQ1RfRUxFTUVOVF9UWVBFID0gdHlwZW9mIFN5bWJvbCA9PT0gJ2Z1bmN0
aW9uJyAmJiBTeW1ib2xbJ2ZvciddICYmIFN5bWJvbFsnZm9yJ10oJ3JlYWN0LmVsZW1lbnQnKSB8
fCAweGVhYzc7XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IFJFQUNUX0VMRU1FTlRfVFlQRTtcblxu
LyoqKi8gfSxcbi8qIDkyICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2Vi
cGFja19yZXF1aXJlX18pIHtcblxuXHQvKipcblx0ICogQ29weXJpZ2h0IDIwMTUtcHJlc2VudCwg
RmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICogVGhp
cyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91
bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhp
cyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRz
IGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5c
blx0ICpcblx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHR2YXIgd2FybmluZyA9IF9f
d2VicGFja19yZXF1aXJlX18oMik7XG5cdFxuXHRmdW5jdGlvbiB3YXJuTm9vcChwdWJsaWNJbnN0
YW5jZSwgY2FsbGVyTmFtZSkge1xuXHQgIGlmIChmYWxzZSkge1xuXHQgICAgdmFyIGNvbnN0cnVj
dG9yID0gcHVibGljSW5zdGFuY2UuY29uc3RydWN0b3I7XG5cdCAgICBwcm9jZXNzLmVudi5OT0RF
X0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJyVzKC4uLik6IENhbiBvbmx5
IHVwZGF0ZSBhIG1vdW50ZWQgb3IgbW91bnRpbmcgY29tcG9uZW50LiAnICsgJ1RoaXMgdXN1YWxs
eSBtZWFucyB5b3UgY2FsbGVkICVzKCkgb24gYW4gdW5tb3VudGVkIGNvbXBvbmVudC4gJyArICdU
aGlzIGlzIGEgbm8tb3AuIFBsZWFzZSBjaGVjayB0aGUgY29kZSBmb3IgdGhlICVzIGNvbXBvbmVu
dC4nLCBjYWxsZXJOYW1lLCBjYWxsZXJOYW1lLCBjb25zdHJ1Y3RvciAmJiAoY29uc3RydWN0b3Iu
ZGlzcGxheU5hbWUgfHwgY29uc3RydWN0b3IubmFtZSkgfHwgJ1JlYWN0Q2xhc3MnKSA6IHZvaWQg
MDtcblx0ICB9XG5cdH1cblx0XG5cdC8qKlxuXHQgKiBUaGlzIGlzIHRoZSBhYnN0cmFjdCBBUEkg
Zm9yIGFuIHVwZGF0ZSBxdWV1ZS5cblx0ICovXG5cdHZhciBSZWFjdE5vb3BVcGRhdGVRdWV1ZSA9
IHtcblx0ICAvKipcblx0ICAgKiBDaGVja3Mgd2hldGhlciBvciBub3QgdGhpcyBjb21wb3NpdGUg
Y29tcG9uZW50IGlzIG1vdW50ZWQuXG5cdCAgICogQHBhcmFtIHtSZWFjdENsYXNzfSBwdWJsaWNJ
bnN0YW5jZSBUaGUgaW5zdGFuY2Ugd2Ugd2FudCB0byB0ZXN0LlxuXHQgICAqIEByZXR1cm4ge2Jv
b2xlYW59IFRydWUgaWYgbW91bnRlZCwgZmFsc2Ugb3RoZXJ3aXNlLlxuXHQgICAqIEBwcm90ZWN0
ZWRcblx0ICAgKiBAZmluYWxcblx0ICAgKi9cblx0ICBpc01vdW50ZWQ6IGZ1bmN0aW9uIChwdWJs
aWNJbnN0YW5jZSkge1xuXHQgICAgcmV0dXJuIGZhbHNlO1xuXHQgIH0sXG5cdFxuXHQgIC8qKlxu
XHQgICAqIEVucXVldWUgYSBjYWxsYmFjayB0aGF0IHdpbGwgYmUgZXhlY3V0ZWQgYWZ0ZXIgYWxs
IHRoZSBwZW5kaW5nIHVwZGF0ZXNcblx0ICAgKiBoYXZlIHByb2Nlc3NlZC5cblx0ICAgKlxuXHQg
ICAqIEBwYXJhbSB7UmVhY3RDbGFzc30gcHVibGljSW5zdGFuY2UgVGhlIGluc3RhbmNlIHRvIHVz
ZSBhcyBgdGhpc2AgY29udGV4dC5cblx0ICAgKiBAcGFyYW0gez9mdW5jdGlvbn0gY2FsbGJhY2sg
Q2FsbGVkIGFmdGVyIHN0YXRlIGlzIHVwZGF0ZWQuXG5cdCAgICogQGludGVybmFsXG5cdCAgICov
XG5cdCAgZW5xdWV1ZUNhbGxiYWNrOiBmdW5jdGlvbiAocHVibGljSW5zdGFuY2UsIGNhbGxiYWNr
KSB7fSxcblx0XG5cdCAgLyoqXG5cdCAgICogRm9yY2VzIGFuIHVwZGF0ZS4gVGhpcyBzaG91bGQg
b25seSBiZSBpbnZva2VkIHdoZW4gaXQgaXMga25vd24gd2l0aFxuXHQgICAqIGNlcnRhaW50eSB0
aGF0IHdlIGFyZSAqKm5vdCoqIGluIGEgRE9NIHRyYW5zYWN0aW9uLlxuXHQgICAqXG5cdCAgICog
WW91IG1heSB3YW50IHRvIGNhbGwgdGhpcyB3aGVuIHlvdSBrbm93IHRoYXQgc29tZSBkZWVwZXIg
YXNwZWN0IG9mIHRoZVxuXHQgICAqIGNvbXBvbmVudCdzIHN0YXRlIGhhcyBjaGFuZ2VkIGJ1dCBg
c2V0U3RhdGVgIHdhcyBub3QgY2FsbGVkLlxuXHQgICAqXG5cdCAgICogVGhpcyB3aWxsIG5vdCBp
bnZva2UgYHNob3VsZENvbXBvbmVudFVwZGF0ZWAsIGJ1dCBpdCB3aWxsIGludm9rZVxuXHQgICAq
IGBjb21wb25lbnRXaWxsVXBkYXRlYCBhbmQgYGNvbXBvbmVudERpZFVwZGF0ZWAuXG5cdCAgICpc
blx0ICAgKiBAcGFyYW0ge1JlYWN0Q2xhc3N9IHB1YmxpY0luc3RhbmNlIFRoZSBpbnN0YW5jZSB0
aGF0IHNob3VsZCByZXJlbmRlci5cblx0ICAgKiBAaW50ZXJuYWxcblx0ICAgKi9cblx0ICBlbnF1
ZXVlRm9yY2VVcGRhdGU6IGZ1bmN0aW9uIChwdWJsaWNJbnN0YW5jZSkge1xuXHQgICAgd2Fybk5v
b3AocHVibGljSW5zdGFuY2UsICdmb3JjZVVwZGF0ZScpO1xuXHQgIH0sXG5cdFxuXHQgIC8qKlxu
XHQgICAqIFJlcGxhY2VzIGFsbCBvZiB0aGUgc3RhdGUuIEFsd2F5cyB1c2UgdGhpcyBvciBgc2V0
U3RhdGVgIHRvIG11dGF0ZSBzdGF0ZS5cblx0ICAgKiBZb3Ugc2hvdWxkIHRyZWF0IGB0aGlzLnN0
YXRlYCBhcyBpbW11dGFibGUuXG5cdCAgICpcblx0ICAgKiBUaGVyZSBpcyBubyBndWFyYW50ZWUg
dGhhdCBgdGhpcy5zdGF0ZWAgd2lsbCBiZSBpbW1lZGlhdGVseSB1cGRhdGVkLCBzb1xuXHQgICAq
IGFjY2Vzc2luZyBgdGhpcy5zdGF0ZWAgYWZ0ZXIgY2FsbGluZyB0aGlzIG1ldGhvZCBtYXkgcmV0
dXJuIHRoZSBvbGQgdmFsdWUuXG5cdCAgICpcblx0ICAgKiBAcGFyYW0ge1JlYWN0Q2xhc3N9IHB1
YmxpY0luc3RhbmNlIFRoZSBpbnN0YW5jZSB0aGF0IHNob3VsZCByZXJlbmRlci5cblx0ICAgKiBA
cGFyYW0ge29iamVjdH0gY29tcGxldGVTdGF0ZSBOZXh0IHN0YXRlLlxuXHQgICAqIEBpbnRlcm5h
bFxuXHQgICAqL1xuXHQgIGVucXVldWVSZXBsYWNlU3RhdGU6IGZ1bmN0aW9uIChwdWJsaWNJbnN0
YW5jZSwgY29tcGxldGVTdGF0ZSkge1xuXHQgICAgd2Fybk5vb3AocHVibGljSW5zdGFuY2UsICdy
ZXBsYWNlU3RhdGUnKTtcblx0ICB9LFxuXHRcblx0ICAvKipcblx0ICAgKiBTZXRzIGEgc3Vic2V0
IG9mIHRoZSBzdGF0ZS4gVGhpcyBvbmx5IGV4aXN0cyBiZWNhdXNlIF9wZW5kaW5nU3RhdGUgaXNc
blx0ICAgKiBpbnRlcm5hbC4gVGhpcyBwcm92aWRlcyBhIG1lcmdpbmcgc3RyYXRlZ3kgdGhhdCBp
cyBub3QgYXZhaWxhYmxlIHRvIGRlZXBcblx0ICAgKiBwcm9wZXJ0aWVzIHdoaWNoIGlzIGNvbmZ1
c2luZy4gVE9ETzogRXhwb3NlIHBlbmRpbmdTdGF0ZSBvciBkb24ndCB1c2UgaXRcblx0ICAgKiBk
dXJpbmcgdGhlIG1lcmdlLlxuXHQgICAqXG5cdCAgICogQHBhcmFtIHtSZWFjdENsYXNzfSBwdWJs
aWNJbnN0YW5jZSBUaGUgaW5zdGFuY2UgdGhhdCBzaG91bGQgcmVyZW5kZXIuXG5cdCAgICogQHBh
cmFtIHtvYmplY3R9IHBhcnRpYWxTdGF0ZSBOZXh0IHBhcnRpYWwgc3RhdGUgdG8gYmUgbWVyZ2Vk
IHdpdGggc3RhdGUuXG5cdCAgICogQGludGVybmFsXG5cdCAgICovXG5cdCAgZW5xdWV1ZVNldFN0
YXRlOiBmdW5jdGlvbiAocHVibGljSW5zdGFuY2UsIHBhcnRpYWxTdGF0ZSkge1xuXHQgICAgd2Fy
bk5vb3AocHVibGljSW5zdGFuY2UsICdzZXRTdGF0ZScpO1xuXHQgIH1cblx0fTtcblx0XG5cdG1v
ZHVsZS5leHBvcnRzID0gUmVhY3ROb29wVXBkYXRlUXVldWU7XG5cbi8qKiovIH0sXG4vKiA5MyAq
L1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7
XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5c
dCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMg
bGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBM
SUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFu
IGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4g
dGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqIFxuXHQg
Ki9cblx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdHZhciBjYW5EZWZpbmVQcm9wZXJ0eSA9IGZh
bHNlO1xuXHRpZiAoZmFsc2UpIHtcblx0ICB0cnkge1xuXHQgICAgLy8gJEZsb3dGaXhNZSBodHRw
czovL2dpdGh1Yi5jb20vZmFjZWJvb2svZmxvdy9pc3N1ZXMvMjg1XG5cdCAgICBPYmplY3QuZGVm
aW5lUHJvcGVydHkoe30sICd4JywgeyBnZXQ6IGZ1bmN0aW9uICgpIHt9IH0pO1xuXHQgICAgY2Fu
RGVmaW5lUHJvcGVydHkgPSB0cnVlO1xuXHQgIH0gY2F0Y2ggKHgpIHtcblx0ICAgIC8vIElFIHdp
bGwgZmFpbCBvbiBkZWZpbmVQcm9wZXJ0eVxuXHQgIH1cblx0fVxuXHRcblx0bW9kdWxlLmV4cG9y
dHMgPSBjYW5EZWZpbmVQcm9wZXJ0eTtcblxuLyoqKi8gfSxcbi8qIDk0ICovXG4vKioqLyBmdW5j
dGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuXHRcInVzZSBzdHJpY3RcIjtcblx0XG5cdGV4cG9y
dHMuX19lc01vZHVsZSA9IHRydWU7XG5cdGV4cG9ydHNbXCJkZWZhdWx0XCJdID0gY29tcG9zZTtc
blx0LyoqXG5cdCAqIENvbXBvc2VzIHNpbmdsZS1hcmd1bWVudCBmdW5jdGlvbnMgZnJvbSByaWdo
dCB0byBsZWZ0LiBUaGUgcmlnaHRtb3N0XG5cdCAqIGZ1bmN0aW9uIGNhbiB0YWtlIG11bHRpcGxl
IGFyZ3VtZW50cyBhcyBpdCBwcm92aWRlcyB0aGUgc2lnbmF0dXJlIGZvclxuXHQgKiB0aGUgcmVz
dWx0aW5nIGNvbXBvc2l0ZSBmdW5jdGlvbi5cblx0ICpcblx0ICogQHBhcmFtIHsuLi5GdW5jdGlv
bn0gZnVuY3MgVGhlIGZ1bmN0aW9ucyB0byBjb21wb3NlLlxuXHQgKiBAcmV0dXJucyB7RnVuY3Rp
b259IEEgZnVuY3Rpb24gb2J0YWluZWQgYnkgY29tcG9zaW5nIHRoZSBhcmd1bWVudCBmdW5jdGlv
bnNcblx0ICogZnJvbSByaWdodCB0byBsZWZ0LiBGb3IgZXhhbXBsZSwgY29tcG9zZShmLCBnLCBo
KSBpcyBpZGVudGljYWwgdG8gZG9pbmdcblx0ICogKC4uLmFyZ3MpID0+IGYoZyhoKC4uLmFyZ3Mp
KSkuXG5cdCAqL1xuXHRcblx0ZnVuY3Rpb24gY29tcG9zZSgpIHtcblx0ICBmb3IgKHZhciBfbGVu
ID0gYXJndW1lbnRzLmxlbmd0aCwgZnVuY3MgPSBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkg
PCBfbGVuOyBfa2V5KyspIHtcblx0ICAgIGZ1bmNzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xu
XHQgIH1cblx0XG5cdCAgaWYgKGZ1bmNzLmxlbmd0aCA9PT0gMCkge1xuXHQgICAgcmV0dXJuIGZ1
bmN0aW9uIChhcmcpIHtcblx0ICAgICAgcmV0dXJuIGFyZztcblx0ICAgIH07XG5cdCAgfVxuXHRc
blx0ICBpZiAoZnVuY3MubGVuZ3RoID09PSAxKSB7XG5cdCAgICByZXR1cm4gZnVuY3NbMF07XG5c
dCAgfVxuXHRcblx0ICByZXR1cm4gZnVuY3MucmVkdWNlKGZ1bmN0aW9uIChhLCBiKSB7XG5cdCAg
ICByZXR1cm4gZnVuY3Rpb24gKCkge1xuXHQgICAgICByZXR1cm4gYShiLmFwcGx5KHVuZGVmaW5l
ZCwgYXJndW1lbnRzKSk7XG5cdCAgICB9O1xuXHQgIH0pO1xuXHR9XG5cbi8qKiovIH0sXG4vKiA5
NSAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9f
KSB7XG5cblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0ZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtc
blx0ZXhwb3J0cy5BY3Rpb25UeXBlcyA9IHVuZGVmaW5lZDtcblx0ZXhwb3J0c1snZGVmYXVsdCdd
ID0gY3JlYXRlU3RvcmU7XG5cdFxuXHR2YXIgX2lzUGxhaW5PYmplY3QgPSBfX3dlYnBhY2tfcmVx
dWlyZV9fKDMzKTtcblx0XG5cdHZhciBfaXNQbGFpbk9iamVjdDIgPSBfaW50ZXJvcFJlcXVpcmVE
ZWZhdWx0KF9pc1BsYWluT2JqZWN0KTtcblx0XG5cdHZhciBfc3ltYm9sT2JzZXJ2YWJsZSA9IF9f
d2VicGFja19yZXF1aXJlX18oMjI4KTtcblx0XG5cdHZhciBfc3ltYm9sT2JzZXJ2YWJsZTIgPSBf
aW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9zeW1ib2xPYnNlcnZhYmxlKTtcblx0XG5cdGZ1bmN0aW9u
IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1
bGUgPyBvYmogOiB7ICdkZWZhdWx0Jzogb2JqIH07IH1cblx0XG5cdC8qKlxuXHQgKiBUaGVzZSBh
cmUgcHJpdmF0ZSBhY3Rpb24gdHlwZXMgcmVzZXJ2ZWQgYnkgUmVkdXguXG5cdCAqIEZvciBhbnkg
dW5rbm93biBhY3Rpb25zLCB5b3UgbXVzdCByZXR1cm4gdGhlIGN1cnJlbnQgc3RhdGUuXG5cdCAq
IElmIHRoZSBjdXJyZW50IHN0YXRlIGlzIHVuZGVmaW5lZCwgeW91IG11c3QgcmV0dXJuIHRoZSBp
bml0aWFsIHN0YXRlLlxuXHQgKiBEbyBub3QgcmVmZXJlbmNlIHRoZXNlIGFjdGlvbiB0eXBlcyBk
aXJlY3RseSBpbiB5b3VyIGNvZGUuXG5cdCAqL1xuXHR2YXIgQWN0aW9uVHlwZXMgPSBleHBvcnRz
LkFjdGlvblR5cGVzID0ge1xuXHQgIElOSVQ6ICdAQHJlZHV4L0lOSVQnXG5cdFxuXHQgIC8qKlxu
XHQgICAqIENyZWF0ZXMgYSBSZWR1eCBzdG9yZSB0aGF0IGhvbGRzIHRoZSBzdGF0ZSB0cmVlLlxu
XHQgICAqIFRoZSBvbmx5IHdheSB0byBjaGFuZ2UgdGhlIGRhdGEgaW4gdGhlIHN0b3JlIGlzIHRv
IGNhbGwgYGRpc3BhdGNoKClgIG9uIGl0LlxuXHQgICAqXG5cdCAgICogVGhlcmUgc2hvdWxkIG9u
bHkgYmUgYSBzaW5nbGUgc3RvcmUgaW4geW91ciBhcHAuIFRvIHNwZWNpZnkgaG93IGRpZmZlcmVu
dFxuXHQgICAqIHBhcnRzIG9mIHRoZSBzdGF0ZSB0cmVlIHJlc3BvbmQgdG8gYWN0aW9ucywgeW91
IG1heSBjb21iaW5lIHNldmVyYWwgcmVkdWNlcnNcblx0ICAgKiBpbnRvIGEgc2luZ2xlIHJlZHVj
ZXIgZnVuY3Rpb24gYnkgdXNpbmcgYGNvbWJpbmVSZWR1Y2Vyc2AuXG5cdCAgICpcblx0ICAgKiBA
cGFyYW0ge0Z1bmN0aW9ufSByZWR1Y2VyIEEgZnVuY3Rpb24gdGhhdCByZXR1cm5zIHRoZSBuZXh0
IHN0YXRlIHRyZWUsIGdpdmVuXG5cdCAgICogdGhlIGN1cnJlbnQgc3RhdGUgdHJlZSBhbmQgdGhl
IGFjdGlvbiB0byBoYW5kbGUuXG5cdCAgICpcblx0ICAgKiBAcGFyYW0ge2FueX0gW3ByZWxvYWRl
ZFN0YXRlXSBUaGUgaW5pdGlhbCBzdGF0ZS4gWW91IG1heSBvcHRpb25hbGx5IHNwZWNpZnkgaXRc
blx0ICAgKiB0byBoeWRyYXRlIHRoZSBzdGF0ZSBmcm9tIHRoZSBzZXJ2ZXIgaW4gdW5pdmVyc2Fs
IGFwcHMsIG9yIHRvIHJlc3RvcmUgYVxuXHQgICAqIHByZXZpb3VzbHkgc2VyaWFsaXplZCB1c2Vy
IHNlc3Npb24uXG5cdCAgICogSWYgeW91IHVzZSBgY29tYmluZVJlZHVjZXJzYCB0byBwcm9kdWNl
IHRoZSByb290IHJlZHVjZXIgZnVuY3Rpb24sIHRoaXMgbXVzdCBiZVxuXHQgICAqIGFuIG9iamVj
dCB3aXRoIHRoZSBzYW1lIHNoYXBlIGFzIGBjb21iaW5lUmVkdWNlcnNgIGtleXMuXG5cdCAgICpc
blx0ICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbZW5oYW5jZXJdIFRoZSBzdG9yZSBlbmhhbmNlci4g
WW91IG1heSBvcHRpb25hbGx5IHNwZWNpZnkgaXRcblx0ICAgKiB0byBlbmhhbmNlIHRoZSBzdG9y
ZSB3aXRoIHRoaXJkLXBhcnR5IGNhcGFiaWxpdGllcyBzdWNoIGFzIG1pZGRsZXdhcmUsXG5cdCAg
ICogdGltZSB0cmF2ZWwsIHBlcnNpc3RlbmNlLCBldGMuIFRoZSBvbmx5IHN0b3JlIGVuaGFuY2Vy
IHRoYXQgc2hpcHMgd2l0aCBSZWR1eFxuXHQgICAqIGlzIGBhcHBseU1pZGRsZXdhcmUoKWAuXG5c
dCAgICpcblx0ICAgKiBAcmV0dXJucyB7U3RvcmV9IEEgUmVkdXggc3RvcmUgdGhhdCBsZXRzIHlv
dSByZWFkIHRoZSBzdGF0ZSwgZGlzcGF0Y2ggYWN0aW9uc1xuXHQgICAqIGFuZCBzdWJzY3JpYmUg
dG8gY2hhbmdlcy5cblx0ICAgKi9cblx0fTtmdW5jdGlvbiBjcmVhdGVTdG9yZShyZWR1Y2VyLCBw
cmVsb2FkZWRTdGF0ZSwgZW5oYW5jZXIpIHtcblx0ICB2YXIgX3JlZjI7XG5cdFxuXHQgIGlmICh0
eXBlb2YgcHJlbG9hZGVkU3RhdGUgPT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIGVuaGFuY2VyID09
PSAndW5kZWZpbmVkJykge1xuXHQgICAgZW5oYW5jZXIgPSBwcmVsb2FkZWRTdGF0ZTtcblx0ICAg
IHByZWxvYWRlZFN0YXRlID0gdW5kZWZpbmVkO1xuXHQgIH1cblx0XG5cdCAgaWYgKHR5cGVvZiBl
bmhhbmNlciAhPT0gJ3VuZGVmaW5lZCcpIHtcblx0ICAgIGlmICh0eXBlb2YgZW5oYW5jZXIgIT09
ICdmdW5jdGlvbicpIHtcblx0ICAgICAgdGhyb3cgbmV3IEVycm9yKCdFeHBlY3RlZCB0aGUgZW5o
YW5jZXIgdG8gYmUgYSBmdW5jdGlvbi4nKTtcblx0ICAgIH1cblx0XG5cdCAgICByZXR1cm4gZW5o
YW5jZXIoY3JlYXRlU3RvcmUpKHJlZHVjZXIsIHByZWxvYWRlZFN0YXRlKTtcblx0ICB9XG5cdFxu
XHQgIGlmICh0eXBlb2YgcmVkdWNlciAhPT0gJ2Z1bmN0aW9uJykge1xuXHQgICAgdGhyb3cgbmV3
IEVycm9yKCdFeHBlY3RlZCB0aGUgcmVkdWNlciB0byBiZSBhIGZ1bmN0aW9uLicpO1xuXHQgIH1c
blx0XG5cdCAgdmFyIGN1cnJlbnRSZWR1Y2VyID0gcmVkdWNlcjtcblx0ICB2YXIgY3VycmVudFN0
YXRlID0gcHJlbG9hZGVkU3RhdGU7XG5cdCAgdmFyIGN1cnJlbnRMaXN0ZW5lcnMgPSBbXTtcblx0
ICB2YXIgbmV4dExpc3RlbmVycyA9IGN1cnJlbnRMaXN0ZW5lcnM7XG5cdCAgdmFyIGlzRGlzcGF0
Y2hpbmcgPSBmYWxzZTtcblx0XG5cdCAgZnVuY3Rpb24gZW5zdXJlQ2FuTXV0YXRlTmV4dExpc3Rl
bmVycygpIHtcblx0ICAgIGlmIChuZXh0TGlzdGVuZXJzID09PSBjdXJyZW50TGlzdGVuZXJzKSB7
XG5cdCAgICAgIG5leHRMaXN0ZW5lcnMgPSBjdXJyZW50TGlzdGVuZXJzLnNsaWNlKCk7XG5cdCAg
ICB9XG5cdCAgfVxuXHRcblx0ICAvKipcblx0ICAgKiBSZWFkcyB0aGUgc3RhdGUgdHJlZSBtYW5h
Z2VkIGJ5IHRoZSBzdG9yZS5cblx0ICAgKlxuXHQgICAqIEByZXR1cm5zIHthbnl9IFRoZSBjdXJy
ZW50IHN0YXRlIHRyZWUgb2YgeW91ciBhcHBsaWNhdGlvbi5cblx0ICAgKi9cblx0ICBmdW5jdGlv
biBnZXRTdGF0ZSgpIHtcblx0ICAgIHJldHVybiBjdXJyZW50U3RhdGU7XG5cdCAgfVxuXHRcblx0
ICAvKipcblx0ICAgKiBBZGRzIGEgY2hhbmdlIGxpc3RlbmVyLiBJdCB3aWxsIGJlIGNhbGxlZCBh
bnkgdGltZSBhbiBhY3Rpb24gaXMgZGlzcGF0Y2hlZCxcblx0ICAgKiBhbmQgc29tZSBwYXJ0IG9m
IHRoZSBzdGF0ZSB0cmVlIG1heSBwb3RlbnRpYWxseSBoYXZlIGNoYW5nZWQuIFlvdSBtYXkgdGhl
blxuXHQgICAqIGNhbGwgYGdldFN0YXRlKClgIHRvIHJlYWQgdGhlIGN1cnJlbnQgc3RhdGUgdHJl
ZSBpbnNpZGUgdGhlIGNhbGxiYWNrLlxuXHQgICAqXG5cdCAgICogWW91IG1heSBjYWxsIGBkaXNw
YXRjaCgpYCBmcm9tIGEgY2hhbmdlIGxpc3RlbmVyLCB3aXRoIHRoZSBmb2xsb3dpbmdcblx0ICAg
KiBjYXZlYXRzOlxuXHQgICAqXG5cdCAgICogMS4gVGhlIHN1YnNjcmlwdGlvbnMgYXJlIHNuYXBz
aG90dGVkIGp1c3QgYmVmb3JlIGV2ZXJ5IGBkaXNwYXRjaCgpYCBjYWxsLlxuXHQgICAqIElmIHlv
dSBzdWJzY3JpYmUgb3IgdW5zdWJzY3JpYmUgd2hpbGUgdGhlIGxpc3RlbmVycyBhcmUgYmVpbmcg
aW52b2tlZCwgdGhpc1xuXHQgICAqIHdpbGwgbm90IGhhdmUgYW55IGVmZmVjdCBvbiB0aGUgYGRp
c3BhdGNoKClgIHRoYXQgaXMgY3VycmVudGx5IGluIHByb2dyZXNzLlxuXHQgICAqIEhvd2V2ZXIs
IHRoZSBuZXh0IGBkaXNwYXRjaCgpYCBjYWxsLCB3aGV0aGVyIG5lc3RlZCBvciBub3QsIHdpbGwg
dXNlIGEgbW9yZVxuXHQgICAqIHJlY2VudCBzbmFwc2hvdCBvZiB0aGUgc3Vic2NyaXB0aW9uIGxp
c3QuXG5cdCAgICpcblx0ICAgKiAyLiBUaGUgbGlzdGVuZXIgc2hvdWxkIG5vdCBleHBlY3QgdG8g
c2VlIGFsbCBzdGF0ZSBjaGFuZ2VzLCBhcyB0aGUgc3RhdGVcblx0ICAgKiBtaWdodCBoYXZlIGJl
ZW4gdXBkYXRlZCBtdWx0aXBsZSB0aW1lcyBkdXJpbmcgYSBuZXN0ZWQgYGRpc3BhdGNoKClgIGJl
Zm9yZVxuXHQgICAqIHRoZSBsaXN0ZW5lciBpcyBjYWxsZWQuIEl0IGlzLCBob3dldmVyLCBndWFy
YW50ZWVkIHRoYXQgYWxsIHN1YnNjcmliZXJzXG5cdCAgICogcmVnaXN0ZXJlZCBiZWZvcmUgdGhl
IGBkaXNwYXRjaCgpYCBzdGFydGVkIHdpbGwgYmUgY2FsbGVkIHdpdGggdGhlIGxhdGVzdFxuXHQg
ICAqIHN0YXRlIGJ5IHRoZSB0aW1lIGl0IGV4aXRzLlxuXHQgICAqXG5cdCAgICogQHBhcmFtIHtG
dW5jdGlvbn0gbGlzdGVuZXIgQSBjYWxsYmFjayB0byBiZSBpbnZva2VkIG9uIGV2ZXJ5IGRpc3Bh
dGNoLlxuXHQgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gQSBmdW5jdGlvbiB0byByZW1vdmUgdGhp
cyBjaGFuZ2UgbGlzdGVuZXIuXG5cdCAgICovXG5cdCAgZnVuY3Rpb24gc3Vic2NyaWJlKGxpc3Rl
bmVyKSB7XG5cdCAgICBpZiAodHlwZW9mIGxpc3RlbmVyICE9PSAnZnVuY3Rpb24nKSB7XG5cdCAg
ICAgIHRocm93IG5ldyBFcnJvcignRXhwZWN0ZWQgbGlzdGVuZXIgdG8gYmUgYSBmdW5jdGlvbi4n
KTtcblx0ICAgIH1cblx0XG5cdCAgICB2YXIgaXNTdWJzY3JpYmVkID0gdHJ1ZTtcblx0XG5cdCAg
ICBlbnN1cmVDYW5NdXRhdGVOZXh0TGlzdGVuZXJzKCk7XG5cdCAgICBuZXh0TGlzdGVuZXJzLnB1
c2gobGlzdGVuZXIpO1xuXHRcblx0ICAgIHJldHVybiBmdW5jdGlvbiB1bnN1YnNjcmliZSgpIHtc
blx0ICAgICAgaWYgKCFpc1N1YnNjcmliZWQpIHtcblx0ICAgICAgICByZXR1cm47XG5cdCAgICAg
IH1cblx0XG5cdCAgICAgIGlzU3Vic2NyaWJlZCA9IGZhbHNlO1xuXHRcblx0ICAgICAgZW5zdXJl
Q2FuTXV0YXRlTmV4dExpc3RlbmVycygpO1xuXHQgICAgICB2YXIgaW5kZXggPSBuZXh0TGlzdGVu
ZXJzLmluZGV4T2YobGlzdGVuZXIpO1xuXHQgICAgICBuZXh0TGlzdGVuZXJzLnNwbGljZShpbmRl
eCwgMSk7XG5cdCAgICB9O1xuXHQgIH1cblx0XG5cdCAgLyoqXG5cdCAgICogRGlzcGF0Y2hlcyBh
biBhY3Rpb24uIEl0IGlzIHRoZSBvbmx5IHdheSB0byB0cmlnZ2VyIGEgc3RhdGUgY2hhbmdlLlxu
XHQgICAqXG5cdCAgICogVGhlIGByZWR1Y2VyYCBmdW5jdGlvbiwgdXNlZCB0byBjcmVhdGUgdGhl
IHN0b3JlLCB3aWxsIGJlIGNhbGxlZCB3aXRoIHRoZVxuXHQgICAqIGN1cnJlbnQgc3RhdGUgdHJl
ZSBhbmQgdGhlIGdpdmVuIGBhY3Rpb25gLiBJdHMgcmV0dXJuIHZhbHVlIHdpbGxcblx0ICAgKiBi
ZSBjb25zaWRlcmVkIHRoZSAqKm5leHQqKiBzdGF0ZSBvZiB0aGUgdHJlZSwgYW5kIHRoZSBjaGFu
Z2UgbGlzdGVuZXJzXG5cdCAgICogd2lsbCBiZSBub3RpZmllZC5cblx0ICAgKlxuXHQgICAqIFRo
ZSBiYXNlIGltcGxlbWVudGF0aW9uIG9ubHkgc3VwcG9ydHMgcGxhaW4gb2JqZWN0IGFjdGlvbnMu
IElmIHlvdSB3YW50IHRvXG5cdCAgICogZGlzcGF0Y2ggYSBQcm9taXNlLCBhbiBPYnNlcnZhYmxl
LCBhIHRodW5rLCBvciBzb21ldGhpbmcgZWxzZSwgeW91IG5lZWQgdG9cblx0ICAgKiB3cmFwIHlv
dXIgc3RvcmUgY3JlYXRpbmcgZnVuY3Rpb24gaW50byB0aGUgY29ycmVzcG9uZGluZyBtaWRkbGV3
YXJlLiBGb3Jcblx0ICAgKiBleGFtcGxlLCBzZWUgdGhlIGRvY3VtZW50YXRpb24gZm9yIHRoZSBg
cmVkdXgtdGh1bmtgIHBhY2thZ2UuIEV2ZW4gdGhlXG5cdCAgICogbWlkZGxld2FyZSB3aWxsIGV2
ZW50dWFsbHkgZGlzcGF0Y2ggcGxhaW4gb2JqZWN0IGFjdGlvbnMgdXNpbmcgdGhpcyBtZXRob2Qu
XG5cdCAgICpcblx0ICAgKiBAcGFyYW0ge09iamVjdH0gYWN0aW9uIEEgcGxhaW4gb2JqZWN0IHJl
cHJlc2VudGluZyDigJx3aGF0IGNoYW5nZWTigJ0uIEl0IGlzXG5cdCAgICogYSBnb29kIGlkZWEg
dG8ga2VlcCBhY3Rpb25zIHNlcmlhbGl6YWJsZSBzbyB5b3UgY2FuIHJlY29yZCBhbmQgcmVwbGF5
IHVzZXJcblx0ICAgKiBzZXNzaW9ucywgb3IgdXNlIHRoZSB0aW1lIHRyYXZlbGxpbmcgYHJlZHV4
LWRldnRvb2xzYC4gQW4gYWN0aW9uIG11c3QgaGF2ZVxuXHQgICAqIGEgYHR5cGVgIHByb3BlcnR5
IHdoaWNoIG1heSBub3QgYmUgYHVuZGVmaW5lZGAuIEl0IGlzIGEgZ29vZCBpZGVhIHRvIHVzZVxu
XHQgICAqIHN0cmluZyBjb25zdGFudHMgZm9yIGFjdGlvbiB0eXBlcy5cblx0ICAgKlxuXHQgICAq
IEByZXR1cm5zIHtPYmplY3R9IEZvciBjb252ZW5pZW5jZSwgdGhlIHNhbWUgYWN0aW9uIG9iamVj
dCB5b3UgZGlzcGF0Y2hlZC5cblx0ICAgKlxuXHQgICAqIE5vdGUgdGhhdCwgaWYgeW91IHVzZSBh
IGN1c3RvbSBtaWRkbGV3YXJlLCBpdCBtYXkgd3JhcCBgZGlzcGF0Y2goKWAgdG9cblx0ICAgKiBy
ZXR1cm4gc29tZXRoaW5nIGVsc2UgKGZvciBleGFtcGxlLCBhIFByb21pc2UgeW91IGNhbiBhd2Fp
dCkuXG5cdCAgICovXG5cdCAgZnVuY3Rpb24gZGlzcGF0Y2goYWN0aW9uKSB7XG5cdCAgICBpZiAo
ISgwLCBfaXNQbGFpbk9iamVjdDJbJ2RlZmF1bHQnXSkoYWN0aW9uKSkge1xuXHQgICAgICB0aHJv
dyBuZXcgRXJyb3IoJ0FjdGlvbnMgbXVzdCBiZSBwbGFpbiBvYmplY3RzLiAnICsgJ1VzZSBjdXN0
b20gbWlkZGxld2FyZSBmb3IgYXN5bmMgYWN0aW9ucy4nKTtcblx0ICAgIH1cblx0XG5cdCAgICBp
ZiAodHlwZW9mIGFjdGlvbi50eXBlID09PSAndW5kZWZpbmVkJykge1xuXHQgICAgICB0aHJvdyBu
ZXcgRXJyb3IoJ0FjdGlvbnMgbWF5IG5vdCBoYXZlIGFuIHVuZGVmaW5lZCBcInR5cGVcIiBwcm9w
ZXJ0eS4gJyArICdIYXZlIHlvdSBtaXNzcGVsbGVkIGEgY29uc3RhbnQ/Jyk7XG5cdCAgICB9XG5c
dFxuXHQgICAgaWYgKGlzRGlzcGF0Y2hpbmcpIHtcblx0ICAgICAgdGhyb3cgbmV3IEVycm9yKCdS
ZWR1Y2VycyBtYXkgbm90IGRpc3BhdGNoIGFjdGlvbnMuJyk7XG5cdCAgICB9XG5cdFxuXHQgICAg
dHJ5IHtcblx0ICAgICAgaXNEaXNwYXRjaGluZyA9IHRydWU7XG5cdCAgICAgIGN1cnJlbnRTdGF0
ZSA9IGN1cnJlbnRSZWR1Y2VyKGN1cnJlbnRTdGF0ZSwgYWN0aW9uKTtcblx0ICAgIH0gZmluYWxs
eSB7XG5cdCAgICAgIGlzRGlzcGF0Y2hpbmcgPSBmYWxzZTtcblx0ICAgIH1cblx0XG5cdCAgICB2
YXIgbGlzdGVuZXJzID0gY3VycmVudExpc3RlbmVycyA9IG5leHRMaXN0ZW5lcnM7XG5cdCAgICBm
b3IgKHZhciBpID0gMDsgaSA8IGxpc3RlbmVycy5sZW5ndGg7IGkrKykge1xuXHQgICAgICB2YXIg
bGlzdGVuZXIgPSBsaXN0ZW5lcnNbaV07XG5cdCAgICAgIGxpc3RlbmVyKCk7XG5cdCAgICB9XG5c
dFxuXHQgICAgcmV0dXJuIGFjdGlvbjtcblx0ICB9XG5cdFxuXHQgIC8qKlxuXHQgICAqIFJlcGxh
Y2VzIHRoZSByZWR1Y2VyIGN1cnJlbnRseSB1c2VkIGJ5IHRoZSBzdG9yZSB0byBjYWxjdWxhdGUg
dGhlIHN0YXRlLlxuXHQgICAqXG5cdCAgICogWW91IG1pZ2h0IG5lZWQgdGhpcyBpZiB5b3VyIGFw
cCBpbXBsZW1lbnRzIGNvZGUgc3BsaXR0aW5nIGFuZCB5b3Ugd2FudCB0b1xuXHQgICAqIGxvYWQg
c29tZSBvZiB0aGUgcmVkdWNlcnMgZHluYW1pY2FsbHkuIFlvdSBtaWdodCBhbHNvIG5lZWQgdGhp
cyBpZiB5b3Vcblx0ICAgKiBpbXBsZW1lbnQgYSBob3QgcmVsb2FkaW5nIG1lY2hhbmlzbSBmb3Ig
UmVkdXguXG5cdCAgICpcblx0ICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBuZXh0UmVkdWNlciBUaGUg
cmVkdWNlciBmb3IgdGhlIHN0b3JlIHRvIHVzZSBpbnN0ZWFkLlxuXHQgICAqIEByZXR1cm5zIHt2
b2lkfVxuXHQgICAqL1xuXHQgIGZ1bmN0aW9uIHJlcGxhY2VSZWR1Y2VyKG5leHRSZWR1Y2VyKSB7
XG5cdCAgICBpZiAodHlwZW9mIG5leHRSZWR1Y2VyICE9PSAnZnVuY3Rpb24nKSB7XG5cdCAgICAg
IHRocm93IG5ldyBFcnJvcignRXhwZWN0ZWQgdGhlIG5leHRSZWR1Y2VyIHRvIGJlIGEgZnVuY3Rp
b24uJyk7XG5cdCAgICB9XG5cdFxuXHQgICAgY3VycmVudFJlZHVjZXIgPSBuZXh0UmVkdWNlcjtc
blx0ICAgIGRpc3BhdGNoKHsgdHlwZTogQWN0aW9uVHlwZXMuSU5JVCB9KTtcblx0ICB9XG5cdFxu
XHQgIC8qKlxuXHQgICAqIEludGVyb3BlcmFiaWxpdHkgcG9pbnQgZm9yIG9ic2VydmFibGUvcmVh
Y3RpdmUgbGlicmFyaWVzLlxuXHQgICAqIEByZXR1cm5zIHtvYnNlcnZhYmxlfSBBIG1pbmltYWwg
b2JzZXJ2YWJsZSBvZiBzdGF0ZSBjaGFuZ2VzLlxuXHQgICAqIEZvciBtb3JlIGluZm9ybWF0aW9u
LCBzZWUgdGhlIG9ic2VydmFibGUgcHJvcG9zYWw6XG5cdCAgICogaHR0cHM6Ly9naXRodWIuY29t
L3RjMzkvcHJvcG9zYWwtb2JzZXJ2YWJsZVxuXHQgICAqL1xuXHQgIGZ1bmN0aW9uIG9ic2VydmFi
bGUoKSB7XG5cdCAgICB2YXIgX3JlZjtcblx0XG5cdCAgICB2YXIgb3V0ZXJTdWJzY3JpYmUgPSBz
dWJzY3JpYmU7XG5cdCAgICByZXR1cm4gX3JlZiA9IHtcblx0ICAgICAgLyoqXG5cdCAgICAgICAq
IFRoZSBtaW5pbWFsIG9ic2VydmFibGUgc3Vic2NyaXB0aW9uIG1ldGhvZC5cblx0ICAgICAgICog
QHBhcmFtIHtPYmplY3R9IG9ic2VydmVyIEFueSBvYmplY3QgdGhhdCBjYW4gYmUgdXNlZCBhcyBh
biBvYnNlcnZlci5cblx0ICAgICAgICogVGhlIG9ic2VydmVyIG9iamVjdCBzaG91bGQgaGF2ZSBh
IGBuZXh0YCBtZXRob2QuXG5cdCAgICAgICAqIEByZXR1cm5zIHtzdWJzY3JpcHRpb259IEFuIG9i
amVjdCB3aXRoIGFuIGB1bnN1YnNjcmliZWAgbWV0aG9kIHRoYXQgY2FuXG5cdCAgICAgICAqIGJl
IHVzZWQgdG8gdW5zdWJzY3JpYmUgdGhlIG9ic2VydmFibGUgZnJvbSB0aGUgc3RvcmUsIGFuZCBw
cmV2ZW50IGZ1cnRoZXJcblx0ICAgICAgICogZW1pc3Npb24gb2YgdmFsdWVzIGZyb20gdGhlIG9i
c2VydmFibGUuXG5cdCAgICAgICAqL1xuXHQgICAgICBzdWJzY3JpYmU6IGZ1bmN0aW9uIHN1YnNj
cmliZShvYnNlcnZlcikge1xuXHQgICAgICAgIGlmICh0eXBlb2Ygb2JzZXJ2ZXIgIT09ICdvYmpl
Y3QnKSB7XG5cdCAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdFeHBlY3RlZCB0aGUgb2Jz
ZXJ2ZXIgdG8gYmUgYW4gb2JqZWN0LicpO1xuXHQgICAgICAgIH1cblx0XG5cdCAgICAgICAgZnVu
Y3Rpb24gb2JzZXJ2ZVN0YXRlKCkge1xuXHQgICAgICAgICAgaWYgKG9ic2VydmVyLm5leHQpIHtc
blx0ICAgICAgICAgICAgb2JzZXJ2ZXIubmV4dChnZXRTdGF0ZSgpKTtcblx0ICAgICAgICAgIH1c
blx0ICAgICAgICB9XG5cdFxuXHQgICAgICAgIG9ic2VydmVTdGF0ZSgpO1xuXHQgICAgICAgIHZh
ciB1bnN1YnNjcmliZSA9IG91dGVyU3Vic2NyaWJlKG9ic2VydmVTdGF0ZSk7XG5cdCAgICAgICAg
cmV0dXJuIHsgdW5zdWJzY3JpYmU6IHVuc3Vic2NyaWJlIH07XG5cdCAgICAgIH1cblx0ICAgIH0s
IF9yZWZbX3N5bWJvbE9ic2VydmFibGUyWydkZWZhdWx0J11dID0gZnVuY3Rpb24gKCkge1xuXHQg
ICAgICByZXR1cm4gdGhpcztcblx0ICAgIH0sIF9yZWY7XG5cdCAgfVxuXHRcblx0ICAvLyBXaGVu
IGEgc3RvcmUgaXMgY3JlYXRlZCwgYW4gXCJJTklUXCIgYWN0aW9uIGlzIGRpc3BhdGNoZWQgc28g
dGhhdCBldmVyeVxuXHQgIC8vIHJlZHVjZXIgcmV0dXJucyB0aGVpciBpbml0aWFsIHN0YXRlLiBU
aGlzIGVmZmVjdGl2ZWx5IHBvcHVsYXRlc1xuXHQgIC8vIHRoZSBpbml0aWFsIHN0YXRlIHRyZWUu
XG5cdCAgZGlzcGF0Y2goeyB0eXBlOiBBY3Rpb25UeXBlcy5JTklUIH0pO1xuXHRcblx0ICByZXR1
cm4gX3JlZjIgPSB7XG5cdCAgICBkaXNwYXRjaDogZGlzcGF0Y2gsXG5cdCAgICBzdWJzY3JpYmU6
IHN1YnNjcmliZSxcblx0ICAgIGdldFN0YXRlOiBnZXRTdGF0ZSxcblx0ICAgIHJlcGxhY2VSZWR1
Y2VyOiByZXBsYWNlUmVkdWNlclxuXHQgIH0sIF9yZWYyW19zeW1ib2xPYnNlcnZhYmxlMlsnZGVm
YXVsdCddXSA9IG9ic2VydmFibGUsIF9yZWYyO1xuXHR9XG5cbi8qKiovIH0sXG4vKiA5NiAqL1xu
LyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cblx0J3VzZSBzdHJpY3QnO1xuXHRc
blx0ZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcblx0ZXhwb3J0c1snZGVmYXVsdCddID0gd2Fy
bmluZztcblx0LyoqXG5cdCAqIFByaW50cyBhIHdhcm5pbmcgaW4gdGhlIGNvbnNvbGUgaWYgaXQg
ZXhpc3RzLlxuXHQgKlxuXHQgKiBAcGFyYW0ge1N0cmluZ30gbWVzc2FnZSBUaGUgd2FybmluZyBt
ZXNzYWdlLlxuXHQgKiBAcmV0dXJucyB7dm9pZH1cblx0ICovXG5cdGZ1bmN0aW9uIHdhcm5pbmco
bWVzc2FnZSkge1xuXHQgIC8qIGVzbGludC1kaXNhYmxlIG5vLWNvbnNvbGUgKi9cblx0ICBpZiAo
dHlwZW9mIGNvbnNvbGUgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiBjb25zb2xlLmVycm9yID09
PSAnZnVuY3Rpb24nKSB7XG5cdCAgICBjb25zb2xlLmVycm9yKG1lc3NhZ2UpO1xuXHQgIH1cblx0
ICAvKiBlc2xpbnQtZW5hYmxlIG5vLWNvbnNvbGUgKi9cblx0ICB0cnkge1xuXHQgICAgLy8gVGhp
cyBlcnJvciB3YXMgdGhyb3duIGFzIGEgY29udmVuaWVuY2Ugc28gdGhhdCBpZiB5b3UgZW5hYmxl
XG5cdCAgICAvLyBcImJyZWFrIG9uIGFsbCBleGNlcHRpb25zXCIgaW4geW91ciBjb25zb2xlLFxu
XHQgICAgLy8gaXQgd291bGQgcGF1c2UgdGhlIGV4ZWN1dGlvbiBhdCB0aGlzIGxpbmUuXG5cdCAg
ICB0aHJvdyBuZXcgRXJyb3IobWVzc2FnZSk7XG5cdCAgICAvKiBlc2xpbnQtZGlzYWJsZSBuby1l
bXB0eSAqL1xuXHQgIH0gY2F0Y2ggKGUpIHt9XG5cdCAgLyogZXNsaW50LWVuYWJsZSBuby1lbXB0
eSAqL1xuXHR9XG5cbi8qKiovIH0sXG4vKiA5NyAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBl
eHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAy
MDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5c
dCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHls
ZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGly
ZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2Yg
cGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2Ft
ZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqL1xuXHRcblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0dmFy
IF9hc3NpZ24gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQpO1xuXHRcblx0dmFyIGVtcHR5T2JqZWN0
ID0gX193ZWJwYWNrX3JlcXVpcmVfXygyNCk7XG5cdHZhciBfaW52YXJpYW50ID0gX193ZWJwYWNr
X3JlcXVpcmVfXygxKTtcblx0XG5cdGlmIChmYWxzZSkge1xuXHQgIHZhciB3YXJuaW5nID0gcmVx
dWlyZSgnZmJqcy9saWIvd2FybmluZycpO1xuXHR9XG5cdFxuXHR2YXIgTUlYSU5TX0tFWSA9ICdt
aXhpbnMnO1xuXHRcblx0Ly8gSGVscGVyIGZ1bmN0aW9uIHRvIGFsbG93IHRoZSBjcmVhdGlvbiBv
ZiBhbm9ueW1vdXMgZnVuY3Rpb25zIHdoaWNoIGRvIG5vdFxuXHQvLyBoYXZlIC5uYW1lIHNldCB0
byB0aGUgbmFtZSBvZiB0aGUgdmFyaWFibGUgYmVpbmcgYXNzaWduZWQgdG8uXG5cdGZ1bmN0aW9u
IGlkZW50aXR5KGZuKSB7XG5cdCAgcmV0dXJuIGZuO1xuXHR9XG5cdFxuXHR2YXIgUmVhY3RQcm9w
VHlwZUxvY2F0aW9uTmFtZXM7XG5cdGlmIChmYWxzZSkge1xuXHQgIFJlYWN0UHJvcFR5cGVMb2Nh
dGlvbk5hbWVzID0ge1xuXHQgICAgcHJvcDogJ3Byb3AnLFxuXHQgICAgY29udGV4dDogJ2NvbnRl
eHQnLFxuXHQgICAgY2hpbGRDb250ZXh0OiAnY2hpbGQgY29udGV4dCdcblx0ICB9O1xuXHR9IGVs
c2Uge1xuXHQgIFJlYWN0UHJvcFR5cGVMb2NhdGlvbk5hbWVzID0ge307XG5cdH1cblx0XG5cdGZ1
bmN0aW9uIGZhY3RvcnkoUmVhY3RDb21wb25lbnQsIGlzVmFsaWRFbGVtZW50LCBSZWFjdE5vb3BV
cGRhdGVRdWV1ZSkge1xuXHQgIC8qKlxuXHQgICAqIFBvbGljaWVzIHRoYXQgZGVzY3JpYmUgbWV0
aG9kcyBpbiBgUmVhY3RDbGFzc0ludGVyZmFjZWAuXG5cdCAgICovXG5cdFxuXHQgIHZhciBpbmpl
Y3RlZE1peGlucyA9IFtdO1xuXHRcblx0ICAvKipcblx0ICAgKiBDb21wb3NpdGUgY29tcG9uZW50
cyBhcmUgaGlnaGVyLWxldmVsIGNvbXBvbmVudHMgdGhhdCBjb21wb3NlIG90aGVyIGNvbXBvc2l0
ZVxuXHQgICAqIG9yIGhvc3QgY29tcG9uZW50cy5cblx0ICAgKlxuXHQgICAqIFRvIGNyZWF0ZSBh
IG5ldyB0eXBlIG9mIGBSZWFjdENsYXNzYCwgcGFzcyBhIHNwZWNpZmljYXRpb24gb2Zcblx0ICAg
KiB5b3VyIG5ldyBjbGFzcyB0byBgUmVhY3QuY3JlYXRlQ2xhc3NgLiBUaGUgb25seSByZXF1aXJl
bWVudCBvZiB5b3VyIGNsYXNzXG5cdCAgICogc3BlY2lmaWNhdGlvbiBpcyB0aGF0IHlvdSBpbXBs
ZW1lbnQgYSBgcmVuZGVyYCBtZXRob2QuXG5cdCAgICpcblx0ICAgKiAgIHZhciBNeUNvbXBvbmVu
dCA9IFJlYWN0LmNyZWF0ZUNsYXNzKHtcblx0ICAgKiAgICAgcmVuZGVyOiBmdW5jdGlvbigpIHtc
blx0ICAgKiAgICAgICByZXR1cm4gPGRpdj5IZWxsbyBXb3JsZDwvZGl2Pjtcblx0ICAgKiAgICAg
fVxuXHQgICAqICAgfSk7XG5cdCAgICpcblx0ICAgKiBUaGUgY2xhc3Mgc3BlY2lmaWNhdGlvbiBz
dXBwb3J0cyBhIHNwZWNpZmljIHByb3RvY29sIG9mIG1ldGhvZHMgdGhhdCBoYXZlXG5cdCAgICog
c3BlY2lhbCBtZWFuaW5nIChlLmcuIGByZW5kZXJgKS4gU2VlIGBSZWFjdENsYXNzSW50ZXJmYWNl
YCBmb3Jcblx0ICAgKiBtb3JlIHRoZSBjb21wcmVoZW5zaXZlIHByb3RvY29sLiBBbnkgb3RoZXIg
cHJvcGVydGllcyBhbmQgbWV0aG9kcyBpbiB0aGVcblx0ICAgKiBjbGFzcyBzcGVjaWZpY2F0aW9u
IHdpbGwgYmUgYXZhaWxhYmxlIG9uIHRoZSBwcm90b3R5cGUuXG5cdCAgICpcblx0ICAgKiBAaW50
ZXJmYWNlIFJlYWN0Q2xhc3NJbnRlcmZhY2Vcblx0ICAgKiBAaW50ZXJuYWxcblx0ICAgKi9cblx0
ICB2YXIgUmVhY3RDbGFzc0ludGVyZmFjZSA9IHtcblx0ICAgIC8qKlxuXHQgICAgICogQW4gYXJy
YXkgb2YgTWl4aW4gb2JqZWN0cyB0byBpbmNsdWRlIHdoZW4gZGVmaW5pbmcgeW91ciBjb21wb25l
bnQuXG5cdCAgICAgKlxuXHQgICAgICogQHR5cGUge2FycmF5fVxuXHQgICAgICogQG9wdGlvbmFs
XG5cdCAgICAgKi9cblx0ICAgIG1peGluczogJ0RFRklORV9NQU5ZJyxcblx0XG5cdCAgICAvKipc
blx0ICAgICAqIEFuIG9iamVjdCBjb250YWluaW5nIHByb3BlcnRpZXMgYW5kIG1ldGhvZHMgdGhh
dCBzaG91bGQgYmUgZGVmaW5lZCBvblxuXHQgICAgICogdGhlIGNvbXBvbmVudCdzIGNvbnN0cnVj
dG9yIGluc3RlYWQgb2YgaXRzIHByb3RvdHlwZSAoc3RhdGljIG1ldGhvZHMpLlxuXHQgICAgICpc
blx0ICAgICAqIEB0eXBlIHtvYmplY3R9XG5cdCAgICAgKiBAb3B0aW9uYWxcblx0ICAgICAqL1xu
XHQgICAgc3RhdGljczogJ0RFRklORV9NQU5ZJyxcblx0XG5cdCAgICAvKipcblx0ICAgICAqIERl
ZmluaXRpb24gb2YgcHJvcCB0eXBlcyBmb3IgdGhpcyBjb21wb25lbnQuXG5cdCAgICAgKlxuXHQg
ICAgICogQHR5cGUge29iamVjdH1cblx0ICAgICAqIEBvcHRpb25hbFxuXHQgICAgICovXG5cdCAg
ICBwcm9wVHlwZXM6ICdERUZJTkVfTUFOWScsXG5cdFxuXHQgICAgLyoqXG5cdCAgICAgKiBEZWZp
bml0aW9uIG9mIGNvbnRleHQgdHlwZXMgZm9yIHRoaXMgY29tcG9uZW50LlxuXHQgICAgICpcblx0
ICAgICAqIEB0eXBlIHtvYmplY3R9XG5cdCAgICAgKiBAb3B0aW9uYWxcblx0ICAgICAqL1xuXHQg
ICAgY29udGV4dFR5cGVzOiAnREVGSU5FX01BTlknLFxuXHRcblx0ICAgIC8qKlxuXHQgICAgICog
RGVmaW5pdGlvbiBvZiBjb250ZXh0IHR5cGVzIHRoaXMgY29tcG9uZW50IHNldHMgZm9yIGl0cyBj
aGlsZHJlbi5cblx0ICAgICAqXG5cdCAgICAgKiBAdHlwZSB7b2JqZWN0fVxuXHQgICAgICogQG9w
dGlvbmFsXG5cdCAgICAgKi9cblx0ICAgIGNoaWxkQ29udGV4dFR5cGVzOiAnREVGSU5FX01BTlkn
LFxuXHRcblx0ICAgIC8vID09PT0gRGVmaW5pdGlvbiBtZXRob2RzID09PT1cblx0XG5cdCAgICAv
Kipcblx0ICAgICAqIEludm9rZWQgd2hlbiB0aGUgY29tcG9uZW50IGlzIG1vdW50ZWQuIFZhbHVl
cyBpbiB0aGUgbWFwcGluZyB3aWxsIGJlIHNldCBvblxuXHQgICAgICogYHRoaXMucHJvcHNgIGlm
IHRoYXQgcHJvcCBpcyBub3Qgc3BlY2lmaWVkIChpLmUuIHVzaW5nIGFuIGBpbmAgY2hlY2spLlxu
XHQgICAgICpcblx0ICAgICAqIFRoaXMgbWV0aG9kIGlzIGludm9rZWQgYmVmb3JlIGBnZXRJbml0
aWFsU3RhdGVgIGFuZCB0aGVyZWZvcmUgY2Fubm90IHJlbHlcblx0ICAgICAqIG9uIGB0aGlzLnN0
YXRlYCBvciB1c2UgYHRoaXMuc2V0U3RhdGVgLlxuXHQgICAgICpcblx0ICAgICAqIEByZXR1cm4g
e29iamVjdH1cblx0ICAgICAqIEBvcHRpb25hbFxuXHQgICAgICovXG5cdCAgICBnZXREZWZhdWx0
UHJvcHM6ICdERUZJTkVfTUFOWV9NRVJHRUQnLFxuXHRcblx0ICAgIC8qKlxuXHQgICAgICogSW52
b2tlZCBvbmNlIGJlZm9yZSB0aGUgY29tcG9uZW50IGlzIG1vdW50ZWQuIFRoZSByZXR1cm4gdmFs
dWUgd2lsbCBiZSB1c2VkXG5cdCAgICAgKiBhcyB0aGUgaW5pdGlhbCB2YWx1ZSBvZiBgdGhpcy5z
dGF0ZWAuXG5cdCAgICAgKlxuXHQgICAgICogICBnZXRJbml0aWFsU3RhdGU6IGZ1bmN0aW9uKCkg
e1xuXHQgICAgICogICAgIHJldHVybiB7XG5cdCAgICAgKiAgICAgICBpc09uOiBmYWxzZSxcblx0
ICAgICAqICAgICAgIGZvb0JhejogbmV3IEJhekZvbygpXG5cdCAgICAgKiAgICAgfVxuXHQgICAg
ICogICB9XG5cdCAgICAgKlxuXHQgICAgICogQHJldHVybiB7b2JqZWN0fVxuXHQgICAgICogQG9w
dGlvbmFsXG5cdCAgICAgKi9cblx0ICAgIGdldEluaXRpYWxTdGF0ZTogJ0RFRklORV9NQU5ZX01F
UkdFRCcsXG5cdFxuXHQgICAgLyoqXG5cdCAgICAgKiBAcmV0dXJuIHtvYmplY3R9XG5cdCAgICAg
KiBAb3B0aW9uYWxcblx0ICAgICAqL1xuXHQgICAgZ2V0Q2hpbGRDb250ZXh0OiAnREVGSU5FX01B
TllfTUVSR0VEJyxcblx0XG5cdCAgICAvKipcblx0ICAgICAqIFVzZXMgcHJvcHMgZnJvbSBgdGhp
cy5wcm9wc2AgYW5kIHN0YXRlIGZyb20gYHRoaXMuc3RhdGVgIHRvIHJlbmRlciB0aGVcblx0ICAg
ICAqIHN0cnVjdHVyZSBvZiB0aGUgY29tcG9uZW50LlxuXHQgICAgICpcblx0ICAgICAqIE5vIGd1
YXJhbnRlZXMgYXJlIG1hZGUgYWJvdXQgd2hlbiBvciBob3cgb2Z0ZW4gdGhpcyBtZXRob2QgaXMg
aW52b2tlZCwgc29cblx0ICAgICAqIGl0IG11c3Qgbm90IGhhdmUgc2lkZSBlZmZlY3RzLlxuXHQg
ICAgICpcblx0ICAgICAqICAgcmVuZGVyOiBmdW5jdGlvbigpIHtcblx0ICAgICAqICAgICB2YXIg
bmFtZSA9IHRoaXMucHJvcHMubmFtZTtcblx0ICAgICAqICAgICByZXR1cm4gPGRpdj5IZWxsbywg
e25hbWV9ITwvZGl2Pjtcblx0ICAgICAqICAgfVxuXHQgICAgICpcblx0ICAgICAqIEByZXR1cm4g
e1JlYWN0Q29tcG9uZW50fVxuXHQgICAgICogQHJlcXVpcmVkXG5cdCAgICAgKi9cblx0ICAgIHJl
bmRlcjogJ0RFRklORV9PTkNFJyxcblx0XG5cdCAgICAvLyA9PT09IERlbGVnYXRlIG1ldGhvZHMg
PT09PVxuXHRcblx0ICAgIC8qKlxuXHQgICAgICogSW52b2tlZCB3aGVuIHRoZSBjb21wb25lbnQg
aXMgaW5pdGlhbGx5IGNyZWF0ZWQgYW5kIGFib3V0IHRvIGJlIG1vdW50ZWQuXG5cdCAgICAgKiBU
aGlzIG1heSBoYXZlIHNpZGUgZWZmZWN0cywgYnV0IGFueSBleHRlcm5hbCBzdWJzY3JpcHRpb25z
IG9yIGRhdGEgY3JlYXRlZFxuXHQgICAgICogYnkgdGhpcyBtZXRob2QgbXVzdCBiZSBjbGVhbmVk
IHVwIGluIGBjb21wb25lbnRXaWxsVW5tb3VudGAuXG5cdCAgICAgKlxuXHQgICAgICogQG9wdGlv
bmFsXG5cdCAgICAgKi9cblx0ICAgIGNvbXBvbmVudFdpbGxNb3VudDogJ0RFRklORV9NQU5ZJyxc
blx0XG5cdCAgICAvKipcblx0ICAgICAqIEludm9rZWQgd2hlbiB0aGUgY29tcG9uZW50IGhhcyBi
ZWVuIG1vdW50ZWQgYW5kIGhhcyBhIERPTSByZXByZXNlbnRhdGlvbi5cblx0ICAgICAqIEhvd2V2
ZXIsIHRoZXJlIGlzIG5vIGd1YXJhbnRlZSB0aGF0IHRoZSBET00gbm9kZSBpcyBpbiB0aGUgZG9j
dW1lbnQuXG5cdCAgICAgKlxuXHQgICAgICogVXNlIHRoaXMgYXMgYW4gb3Bwb3J0dW5pdHkgdG8g
b3BlcmF0ZSBvbiB0aGUgRE9NIHdoZW4gdGhlIGNvbXBvbmVudCBoYXNcblx0ICAgICAqIGJlZW4g
bW91bnRlZCAoaW5pdGlhbGl6ZWQgYW5kIHJlbmRlcmVkKSBmb3IgdGhlIGZpcnN0IHRpbWUuXG5c
dCAgICAgKlxuXHQgICAgICogQHBhcmFtIHtET01FbGVtZW50fSByb290Tm9kZSBET00gZWxlbWVu
dCByZXByZXNlbnRpbmcgdGhlIGNvbXBvbmVudC5cblx0ICAgICAqIEBvcHRpb25hbFxuXHQgICAg
ICovXG5cdCAgICBjb21wb25lbnREaWRNb3VudDogJ0RFRklORV9NQU5ZJyxcblx0XG5cdCAgICAv
Kipcblx0ICAgICAqIEludm9rZWQgYmVmb3JlIHRoZSBjb21wb25lbnQgcmVjZWl2ZXMgbmV3IHBy
b3BzLlxuXHQgICAgICpcblx0ICAgICAqIFVzZSB0aGlzIGFzIGFuIG9wcG9ydHVuaXR5IHRvIHJl
YWN0IHRvIGEgcHJvcCB0cmFuc2l0aW9uIGJ5IHVwZGF0aW5nIHRoZVxuXHQgICAgICogc3RhdGUg
dXNpbmcgYHRoaXMuc2V0U3RhdGVgLiBDdXJyZW50IHByb3BzIGFyZSBhY2Nlc3NlZCB2aWEgYHRo
aXMucHJvcHNgLlxuXHQgICAgICpcblx0ICAgICAqICAgY29tcG9uZW50V2lsbFJlY2VpdmVQcm9w
czogZnVuY3Rpb24obmV4dFByb3BzLCBuZXh0Q29udGV4dCkge1xuXHQgICAgICogICAgIHRoaXMu
c2V0U3RhdGUoe1xuXHQgICAgICogICAgICAgbGlrZXNJbmNyZWFzaW5nOiBuZXh0UHJvcHMubGlr
ZUNvdW50ID4gdGhpcy5wcm9wcy5saWtlQ291bnRcblx0ICAgICAqICAgICB9KTtcblx0ICAgICAq
ICAgfVxuXHQgICAgICpcblx0ICAgICAqIE5PVEU6IFRoZXJlIGlzIG5vIGVxdWl2YWxlbnQgYGNv
bXBvbmVudFdpbGxSZWNlaXZlU3RhdGVgLiBBbiBpbmNvbWluZyBwcm9wXG5cdCAgICAgKiB0cmFu
c2l0aW9uIG1heSBjYXVzZSBhIHN0YXRlIGNoYW5nZSwgYnV0IHRoZSBvcHBvc2l0ZSBpcyBub3Qg
dHJ1ZS4gSWYgeW91XG5cdCAgICAgKiBuZWVkIGl0LCB5b3UgYXJlIHByb2JhYmx5IGxvb2tpbmcg
Zm9yIGBjb21wb25lbnRXaWxsVXBkYXRlYC5cblx0ICAgICAqXG5cdCAgICAgKiBAcGFyYW0ge29i
amVjdH0gbmV4dFByb3BzXG5cdCAgICAgKiBAb3B0aW9uYWxcblx0ICAgICAqL1xuXHQgICAgY29t
cG9uZW50V2lsbFJlY2VpdmVQcm9wczogJ0RFRklORV9NQU5ZJyxcblx0XG5cdCAgICAvKipcblx0
ICAgICAqIEludm9rZWQgd2hpbGUgZGVjaWRpbmcgaWYgdGhlIGNvbXBvbmVudCBzaG91bGQgYmUg
dXBkYXRlZCBhcyBhIHJlc3VsdCBvZlxuXHQgICAgICogcmVjZWl2aW5nIG5ldyBwcm9wcywgc3Rh
dGUgYW5kL29yIGNvbnRleHQuXG5cdCAgICAgKlxuXHQgICAgICogVXNlIHRoaXMgYXMgYW4gb3Bw
b3J0dW5pdHkgdG8gYHJldHVybiBmYWxzZWAgd2hlbiB5b3UncmUgY2VydGFpbiB0aGF0IHRoZVxu
XHQgICAgICogdHJhbnNpdGlvbiB0byB0aGUgbmV3IHByb3BzL3N0YXRlL2NvbnRleHQgd2lsbCBu
b3QgcmVxdWlyZSBhIGNvbXBvbmVudFxuXHQgICAgICogdXBkYXRlLlxuXHQgICAgICpcblx0ICAg
ICAqICAgc2hvdWxkQ29tcG9uZW50VXBkYXRlOiBmdW5jdGlvbihuZXh0UHJvcHMsIG5leHRTdGF0
ZSwgbmV4dENvbnRleHQpIHtcblx0ICAgICAqICAgICByZXR1cm4gIWVxdWFsKG5leHRQcm9wcywg
dGhpcy5wcm9wcykgfHxcblx0ICAgICAqICAgICAgICFlcXVhbChuZXh0U3RhdGUsIHRoaXMuc3Rh
dGUpIHx8XG5cdCAgICAgKiAgICAgICAhZXF1YWwobmV4dENvbnRleHQsIHRoaXMuY29udGV4dCk7
XG5cdCAgICAgKiAgIH1cblx0ICAgICAqXG5cdCAgICAgKiBAcGFyYW0ge29iamVjdH0gbmV4dFBy
b3BzXG5cdCAgICAgKiBAcGFyYW0gez9vYmplY3R9IG5leHRTdGF0ZVxuXHQgICAgICogQHBhcmFt
IHs/b2JqZWN0fSBuZXh0Q29udGV4dFxuXHQgICAgICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBp
ZiB0aGUgY29tcG9uZW50IHNob3VsZCB1cGRhdGUuXG5cdCAgICAgKiBAb3B0aW9uYWxcblx0ICAg
ICAqL1xuXHQgICAgc2hvdWxkQ29tcG9uZW50VXBkYXRlOiAnREVGSU5FX09OQ0UnLFxuXHRcblx0
ICAgIC8qKlxuXHQgICAgICogSW52b2tlZCB3aGVuIHRoZSBjb21wb25lbnQgaXMgYWJvdXQgdG8g
dXBkYXRlIGR1ZSB0byBhIHRyYW5zaXRpb24gZnJvbVxuXHQgICAgICogYHRoaXMucHJvcHNgLCBg
dGhpcy5zdGF0ZWAgYW5kIGB0aGlzLmNvbnRleHRgIHRvIGBuZXh0UHJvcHNgLCBgbmV4dFN0YXRl
YFxuXHQgICAgICogYW5kIGBuZXh0Q29udGV4dGAuXG5cdCAgICAgKlxuXHQgICAgICogVXNlIHRo
aXMgYXMgYW4gb3Bwb3J0dW5pdHkgdG8gcGVyZm9ybSBwcmVwYXJhdGlvbiBiZWZvcmUgYW4gdXBk
YXRlIG9jY3Vycy5cblx0ICAgICAqXG5cdCAgICAgKiBOT1RFOiBZb3UgKipjYW5ub3QqKiB1c2Ug
YHRoaXMuc2V0U3RhdGUoKWAgaW4gdGhpcyBtZXRob2QuXG5cdCAgICAgKlxuXHQgICAgICogQHBh
cmFtIHtvYmplY3R9IG5leHRQcm9wc1xuXHQgICAgICogQHBhcmFtIHs/b2JqZWN0fSBuZXh0U3Rh
dGVcblx0ICAgICAqIEBwYXJhbSB7P29iamVjdH0gbmV4dENvbnRleHRcblx0ICAgICAqIEBwYXJh
bSB7UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbn0gdHJhbnNhY3Rpb25cblx0ICAgICAqIEBvcHRp
b25hbFxuXHQgICAgICovXG5cdCAgICBjb21wb25lbnRXaWxsVXBkYXRlOiAnREVGSU5FX01BTlkn
LFxuXHRcblx0ICAgIC8qKlxuXHQgICAgICogSW52b2tlZCB3aGVuIHRoZSBjb21wb25lbnQncyBE
T00gcmVwcmVzZW50YXRpb24gaGFzIGJlZW4gdXBkYXRlZC5cblx0ICAgICAqXG5cdCAgICAgKiBV
c2UgdGhpcyBhcyBhbiBvcHBvcnR1bml0eSB0byBvcGVyYXRlIG9uIHRoZSBET00gd2hlbiB0aGUg
Y29tcG9uZW50IGhhc1xuXHQgICAgICogYmVlbiB1cGRhdGVkLlxuXHQgICAgICpcblx0ICAgICAq
IEBwYXJhbSB7b2JqZWN0fSBwcmV2UHJvcHNcblx0ICAgICAqIEBwYXJhbSB7P29iamVjdH0gcHJl
dlN0YXRlXG5cdCAgICAgKiBAcGFyYW0gez9vYmplY3R9IHByZXZDb250ZXh0XG5cdCAgICAgKiBA
cGFyYW0ge0RPTUVsZW1lbnR9IHJvb3ROb2RlIERPTSBlbGVtZW50IHJlcHJlc2VudGluZyB0aGUg
Y29tcG9uZW50LlxuXHQgICAgICogQG9wdGlvbmFsXG5cdCAgICAgKi9cblx0ICAgIGNvbXBvbmVu
dERpZFVwZGF0ZTogJ0RFRklORV9NQU5ZJyxcblx0XG5cdCAgICAvKipcblx0ICAgICAqIEludm9r
ZWQgd2hlbiB0aGUgY29tcG9uZW50IGlzIGFib3V0IHRvIGJlIHJlbW92ZWQgZnJvbSBpdHMgcGFy
ZW50IGFuZCBoYXZlXG5cdCAgICAgKiBpdHMgRE9NIHJlcHJlc2VudGF0aW9uIGRlc3Ryb3llZC5c
blx0ICAgICAqXG5cdCAgICAgKiBVc2UgdGhpcyBhcyBhbiBvcHBvcnR1bml0eSB0byBkZWFsbG9j
YXRlIGFueSBleHRlcm5hbCByZXNvdXJjZXMuXG5cdCAgICAgKlxuXHQgICAgICogTk9URTogVGhl
cmUgaXMgbm8gYGNvbXBvbmVudERpZFVubW91bnRgIHNpbmNlIHlvdXIgY29tcG9uZW50IHdpbGwg
aGF2ZSBiZWVuXG5cdCAgICAgKiBkZXN0cm95ZWQgYnkgdGhhdCBwb2ludC5cblx0ICAgICAqXG5c
dCAgICAgKiBAb3B0aW9uYWxcblx0ICAgICAqL1xuXHQgICAgY29tcG9uZW50V2lsbFVubW91bnQ6
ICdERUZJTkVfTUFOWScsXG5cdFxuXHQgICAgLy8gPT09PSBBZHZhbmNlZCBtZXRob2RzID09PT1c
blx0XG5cdCAgICAvKipcblx0ICAgICAqIFVwZGF0ZXMgdGhlIGNvbXBvbmVudCdzIGN1cnJlbnRs
eSBtb3VudGVkIERPTSByZXByZXNlbnRhdGlvbi5cblx0ICAgICAqXG5cdCAgICAgKiBCeSBkZWZh
dWx0LCB0aGlzIGltcGxlbWVudHMgUmVhY3QncyByZW5kZXJpbmcgYW5kIHJlY29uY2lsaWF0aW9u
IGFsZ29yaXRobS5cblx0ICAgICAqIFNvcGhpc3RpY2F0ZWQgY2xpZW50cyBtYXkgd2lzaCB0byBv
dmVycmlkZSB0aGlzLlxuXHQgICAgICpcblx0ICAgICAqIEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVU
cmFuc2FjdGlvbn0gdHJhbnNhY3Rpb25cblx0ICAgICAqIEBpbnRlcm5hbFxuXHQgICAgICogQG92
ZXJyaWRhYmxlXG5cdCAgICAgKi9cblx0ICAgIHVwZGF0ZUNvbXBvbmVudDogJ09WRVJSSURFX0JB
U0UnXG5cdCAgfTtcblx0XG5cdCAgLyoqXG5cdCAgICogTWFwcGluZyBmcm9tIGNsYXNzIHNwZWNp
ZmljYXRpb24ga2V5cyB0byBzcGVjaWFsIHByb2Nlc3NpbmcgZnVuY3Rpb25zLlxuXHQgICAqXG5c
dCAgICogQWx0aG91Z2ggdGhlc2UgYXJlIGRlY2xhcmVkIGxpa2UgaW5zdGFuY2UgcHJvcGVydGll
cyBpbiB0aGUgc3BlY2lmaWNhdGlvblxuXHQgICAqIHdoZW4gZGVmaW5pbmcgY2xhc3NlcyB1c2lu
ZyBgUmVhY3QuY3JlYXRlQ2xhc3NgLCB0aGV5IGFyZSBhY3R1YWxseSBzdGF0aWNcblx0ICAgKiBh
bmQgYXJlIGFjY2Vzc2libGUgb24gdGhlIGNvbnN0cnVjdG9yIGluc3RlYWQgb2YgdGhlIHByb3Rv
dHlwZS4gRGVzcGl0ZVxuXHQgICAqIGJlaW5nIHN0YXRpYywgdGhleSBtdXN0IGJlIGRlZmluZWQg
b3V0c2lkZSBvZiB0aGUgXCJzdGF0aWNzXCIga2V5IHVuZGVyXG5cdCAgICogd2hpY2ggYWxsIG90
aGVyIHN0YXRpYyBtZXRob2RzIGFyZSBkZWZpbmVkLlxuXHQgICAqL1xuXHQgIHZhciBSRVNFUlZF
RF9TUEVDX0tFWVMgPSB7XG5cdCAgICBkaXNwbGF5TmFtZTogZnVuY3Rpb24oQ29uc3RydWN0b3Is
IGRpc3BsYXlOYW1lKSB7XG5cdCAgICAgIENvbnN0cnVjdG9yLmRpc3BsYXlOYW1lID0gZGlzcGxh
eU5hbWU7XG5cdCAgICB9LFxuXHQgICAgbWl4aW5zOiBmdW5jdGlvbihDb25zdHJ1Y3RvciwgbWl4
aW5zKSB7XG5cdCAgICAgIGlmIChtaXhpbnMpIHtcblx0ICAgICAgICBmb3IgKHZhciBpID0gMDsg
aSA8IG1peGlucy5sZW5ndGg7IGkrKykge1xuXHQgICAgICAgICAgbWl4U3BlY0ludG9Db21wb25l
bnQoQ29uc3RydWN0b3IsIG1peGluc1tpXSk7XG5cdCAgICAgICAgfVxuXHQgICAgICB9XG5cdCAg
ICB9LFxuXHQgICAgY2hpbGRDb250ZXh0VHlwZXM6IGZ1bmN0aW9uKENvbnN0cnVjdG9yLCBjaGls
ZENvbnRleHRUeXBlcykge1xuXHQgICAgICBpZiAoZmFsc2UpIHtcblx0ICAgICAgICB2YWxpZGF0
ZVR5cGVEZWYoQ29uc3RydWN0b3IsIGNoaWxkQ29udGV4dFR5cGVzLCAnY2hpbGRDb250ZXh0Jyk7
XG5cdCAgICAgIH1cblx0ICAgICAgQ29uc3RydWN0b3IuY2hpbGRDb250ZXh0VHlwZXMgPSBfYXNz
aWduKFxuXHQgICAgICAgIHt9LFxuXHQgICAgICAgIENvbnN0cnVjdG9yLmNoaWxkQ29udGV4dFR5
cGVzLFxuXHQgICAgICAgIGNoaWxkQ29udGV4dFR5cGVzXG5cdCAgICAgICk7XG5cdCAgICB9LFxu
XHQgICAgY29udGV4dFR5cGVzOiBmdW5jdGlvbihDb25zdHJ1Y3RvciwgY29udGV4dFR5cGVzKSB7
XG5cdCAgICAgIGlmIChmYWxzZSkge1xuXHQgICAgICAgIHZhbGlkYXRlVHlwZURlZihDb25zdHJ1
Y3RvciwgY29udGV4dFR5cGVzLCAnY29udGV4dCcpO1xuXHQgICAgICB9XG5cdCAgICAgIENvbnN0
cnVjdG9yLmNvbnRleHRUeXBlcyA9IF9hc3NpZ24oXG5cdCAgICAgICAge30sXG5cdCAgICAgICAg
Q29uc3RydWN0b3IuY29udGV4dFR5cGVzLFxuXHQgICAgICAgIGNvbnRleHRUeXBlc1xuXHQgICAg
ICApO1xuXHQgICAgfSxcblx0ICAgIC8qKlxuXHQgICAgICogU3BlY2lhbCBjYXNlIGdldERlZmF1
bHRQcm9wcyB3aGljaCBzaG91bGQgbW92ZSBpbnRvIHN0YXRpY3MgYnV0IHJlcXVpcmVzXG5cdCAg
ICAgKiBhdXRvbWF0aWMgbWVyZ2luZy5cblx0ICAgICAqL1xuXHQgICAgZ2V0RGVmYXVsdFByb3Bz
OiBmdW5jdGlvbihDb25zdHJ1Y3RvciwgZ2V0RGVmYXVsdFByb3BzKSB7XG5cdCAgICAgIGlmIChD
b25zdHJ1Y3Rvci5nZXREZWZhdWx0UHJvcHMpIHtcblx0ICAgICAgICBDb25zdHJ1Y3Rvci5nZXRE
ZWZhdWx0UHJvcHMgPSBjcmVhdGVNZXJnZWRSZXN1bHRGdW5jdGlvbihcblx0ICAgICAgICAgIENv
bnN0cnVjdG9yLmdldERlZmF1bHRQcm9wcyxcblx0ICAgICAgICAgIGdldERlZmF1bHRQcm9wc1xu
XHQgICAgICAgICk7XG5cdCAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgQ29uc3RydWN0b3IuZ2V0
RGVmYXVsdFByb3BzID0gZ2V0RGVmYXVsdFByb3BzO1xuXHQgICAgICB9XG5cdCAgICB9LFxuXHQg
ICAgcHJvcFR5cGVzOiBmdW5jdGlvbihDb25zdHJ1Y3RvciwgcHJvcFR5cGVzKSB7XG5cdCAgICAg
IGlmIChmYWxzZSkge1xuXHQgICAgICAgIHZhbGlkYXRlVHlwZURlZihDb25zdHJ1Y3RvciwgcHJv
cFR5cGVzLCAncHJvcCcpO1xuXHQgICAgICB9XG5cdCAgICAgIENvbnN0cnVjdG9yLnByb3BUeXBl
cyA9IF9hc3NpZ24oe30sIENvbnN0cnVjdG9yLnByb3BUeXBlcywgcHJvcFR5cGVzKTtcblx0ICAg
IH0sXG5cdCAgICBzdGF0aWNzOiBmdW5jdGlvbihDb25zdHJ1Y3Rvciwgc3RhdGljcykge1xuXHQg
ICAgICBtaXhTdGF0aWNTcGVjSW50b0NvbXBvbmVudChDb25zdHJ1Y3Rvciwgc3RhdGljcyk7XG5c
dCAgICB9LFxuXHQgICAgYXV0b2JpbmQ6IGZ1bmN0aW9uKCkge31cblx0ICB9O1xuXHRcblx0ICBm
dW5jdGlvbiB2YWxpZGF0ZVR5cGVEZWYoQ29uc3RydWN0b3IsIHR5cGVEZWYsIGxvY2F0aW9uKSB7
XG5cdCAgICBmb3IgKHZhciBwcm9wTmFtZSBpbiB0eXBlRGVmKSB7XG5cdCAgICAgIGlmICh0eXBl
RGVmLmhhc093blByb3BlcnR5KHByb3BOYW1lKSkge1xuXHQgICAgICAgIC8vIHVzZSBhIHdhcm5p
bmcgaW5zdGVhZCBvZiBhbiBfaW52YXJpYW50IHNvIGNvbXBvbmVudHNcblx0ICAgICAgICAvLyBk
b24ndCBzaG93IHVwIGluIHByb2QgYnV0IG9ubHkgaW4gX19ERVZfX1xuXHQgICAgICAgIGlmIChm
YWxzZSkge1xuXHQgICAgICAgICAgd2FybmluZyhcblx0ICAgICAgICAgICAgdHlwZW9mIHR5cGVE
ZWZbcHJvcE5hbWVdID09PSAnZnVuY3Rpb24nLFxuXHQgICAgICAgICAgICAnJXM6ICVzIHR5cGUg
YCVzYCBpcyBpbnZhbGlkOyBpdCBtdXN0IGJlIGEgZnVuY3Rpb24sIHVzdWFsbHkgZnJvbSAnICtc
blx0ICAgICAgICAgICAgICAnUmVhY3QuUHJvcFR5cGVzLicsXG5cdCAgICAgICAgICAgIENvbnN0
cnVjdG9yLmRpc3BsYXlOYW1lIHx8ICdSZWFjdENsYXNzJyxcblx0ICAgICAgICAgICAgUmVhY3RQ
cm9wVHlwZUxvY2F0aW9uTmFtZXNbbG9jYXRpb25dLFxuXHQgICAgICAgICAgICBwcm9wTmFtZVxu
XHQgICAgICAgICAgKTtcblx0ICAgICAgICB9XG5cdCAgICAgIH1cblx0ICAgIH1cblx0ICB9XG5c
dFxuXHQgIGZ1bmN0aW9uIHZhbGlkYXRlTWV0aG9kT3ZlcnJpZGUoaXNBbHJlYWR5RGVmaW5lZCwg
bmFtZSkge1xuXHQgICAgdmFyIHNwZWNQb2xpY3kgPSBSZWFjdENsYXNzSW50ZXJmYWNlLmhhc093
blByb3BlcnR5KG5hbWUpXG5cdCAgICAgID8gUmVhY3RDbGFzc0ludGVyZmFjZVtuYW1lXVxuXHQg
ICAgICA6IG51bGw7XG5cdFxuXHQgICAgLy8gRGlzYWxsb3cgb3ZlcnJpZGluZyBvZiBiYXNlIGNs
YXNzIG1ldGhvZHMgdW5sZXNzIGV4cGxpY2l0bHkgYWxsb3dlZC5cblx0ICAgIGlmIChSZWFjdENs
YXNzTWl4aW4uaGFzT3duUHJvcGVydHkobmFtZSkpIHtcblx0ICAgICAgX2ludmFyaWFudChcblx0
ICAgICAgICBzcGVjUG9saWN5ID09PSAnT1ZFUlJJREVfQkFTRScsXG5cdCAgICAgICAgJ1JlYWN0
Q2xhc3NJbnRlcmZhY2U6IFlvdSBhcmUgYXR0ZW1wdGluZyB0byBvdmVycmlkZSAnICtcblx0ICAg
ICAgICAgICdgJXNgIGZyb20geW91ciBjbGFzcyBzcGVjaWZpY2F0aW9uLiBFbnN1cmUgdGhhdCB5
b3VyIG1ldGhvZCBuYW1lcyAnICtcblx0ICAgICAgICAgICdkbyBub3Qgb3ZlcmxhcCB3aXRoIFJl
YWN0IG1ldGhvZHMuJyxcblx0ICAgICAgICBuYW1lXG5cdCAgICAgICk7XG5cdCAgICB9XG5cdFxu
XHQgICAgLy8gRGlzYWxsb3cgZGVmaW5pbmcgbWV0aG9kcyBtb3JlIHRoYW4gb25jZSB1bmxlc3Mg
ZXhwbGljaXRseSBhbGxvd2VkLlxuXHQgICAgaWYgKGlzQWxyZWFkeURlZmluZWQpIHtcblx0ICAg
ICAgX2ludmFyaWFudChcblx0ICAgICAgICBzcGVjUG9saWN5ID09PSAnREVGSU5FX01BTlknIHx8
IHNwZWNQb2xpY3kgPT09ICdERUZJTkVfTUFOWV9NRVJHRUQnLFxuXHQgICAgICAgICdSZWFjdENs
YXNzSW50ZXJmYWNlOiBZb3UgYXJlIGF0dGVtcHRpbmcgdG8gZGVmaW5lICcgK1xuXHQgICAgICAg
ICAgJ2Alc2Agb24geW91ciBjb21wb25lbnQgbW9yZSB0aGFuIG9uY2UuIFRoaXMgY29uZmxpY3Qg
bWF5IGJlIGR1ZSAnICtcblx0ICAgICAgICAgICd0byBhIG1peGluLicsXG5cdCAgICAgICAgbmFt
ZVxuXHQgICAgICApO1xuXHQgICAgfVxuXHQgIH1cblx0XG5cdCAgLyoqXG5cdCAgICogTWl4aW4g
aGVscGVyIHdoaWNoIGhhbmRsZXMgcG9saWN5IHZhbGlkYXRpb24gYW5kIHJlc2VydmVkXG5cdCAg
ICogc3BlY2lmaWNhdGlvbiBrZXlzIHdoZW4gYnVpbGRpbmcgUmVhY3QgY2xhc3Nlcy5cblx0ICAg
Ki9cblx0ICBmdW5jdGlvbiBtaXhTcGVjSW50b0NvbXBvbmVudChDb25zdHJ1Y3Rvciwgc3BlYykg
e1xuXHQgICAgaWYgKCFzcGVjKSB7XG5cdCAgICAgIGlmIChmYWxzZSkge1xuXHQgICAgICAgIHZh
ciB0eXBlb2ZTcGVjID0gdHlwZW9mIHNwZWM7XG5cdCAgICAgICAgdmFyIGlzTWl4aW5WYWxpZCA9
IHR5cGVvZlNwZWMgPT09ICdvYmplY3QnICYmIHNwZWMgIT09IG51bGw7XG5cdFxuXHQgICAgICAg
IGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG5cdCAgICAgICAg
ICB3YXJuaW5nKFxuXHQgICAgICAgICAgICBpc01peGluVmFsaWQsXG5cdCAgICAgICAgICAgIFwi
JXM6IFlvdSdyZSBhdHRlbXB0aW5nIHRvIGluY2x1ZGUgYSBtaXhpbiB0aGF0IGlzIGVpdGhlciBu
dWxsIFwiICtcblx0ICAgICAgICAgICAgICAnb3Igbm90IGFuIG9iamVjdC4gQ2hlY2sgdGhlIG1p
eGlucyBpbmNsdWRlZCBieSB0aGUgY29tcG9uZW50LCAnICtcblx0ICAgICAgICAgICAgICAnYXMg
d2VsbCBhcyBhbnkgbWl4aW5zIHRoZXkgaW5jbHVkZSB0aGVtc2VsdmVzLiAnICtcblx0ICAgICAg
ICAgICAgICAnRXhwZWN0ZWQgb2JqZWN0IGJ1dCBnb3QgJXMuJyxcblx0ICAgICAgICAgICAgQ29u
c3RydWN0b3IuZGlzcGxheU5hbWUgfHwgJ1JlYWN0Q2xhc3MnLFxuXHQgICAgICAgICAgICBzcGVj
ID09PSBudWxsID8gbnVsbCA6IHR5cGVvZlNwZWNcblx0ICAgICAgICAgICk7XG5cdCAgICAgICAg
fVxuXHQgICAgICB9XG5cdFxuXHQgICAgICByZXR1cm47XG5cdCAgICB9XG5cdFxuXHQgICAgX2lu
dmFyaWFudChcblx0ICAgICAgdHlwZW9mIHNwZWMgIT09ICdmdW5jdGlvbicsXG5cdCAgICAgIFwi
UmVhY3RDbGFzczogWW91J3JlIGF0dGVtcHRpbmcgdG8gXCIgK1xuXHQgICAgICAgICd1c2UgYSBj
b21wb25lbnQgY2xhc3Mgb3IgZnVuY3Rpb24gYXMgYSBtaXhpbi4gSW5zdGVhZCwganVzdCB1c2Ug
YSAnICtcblx0ICAgICAgICAncmVndWxhciBvYmplY3QuJ1xuXHQgICAgKTtcblx0ICAgIF9pbnZh
cmlhbnQoXG5cdCAgICAgICFpc1ZhbGlkRWxlbWVudChzcGVjKSxcblx0ICAgICAgXCJSZWFjdENs
YXNzOiBZb3UncmUgYXR0ZW1wdGluZyB0byBcIiArXG5cdCAgICAgICAgJ3VzZSBhIGNvbXBvbmVu
dCBhcyBhIG1peGluLiBJbnN0ZWFkLCBqdXN0IHVzZSBhIHJlZ3VsYXIgb2JqZWN0Lidcblx0ICAg
ICk7XG5cdFxuXHQgICAgdmFyIHByb3RvID0gQ29uc3RydWN0b3IucHJvdG90eXBlO1xuXHQgICAg
dmFyIGF1dG9CaW5kUGFpcnMgPSBwcm90by5fX3JlYWN0QXV0b0JpbmRQYWlycztcblx0XG5cdCAg
ICAvLyBCeSBoYW5kbGluZyBtaXhpbnMgYmVmb3JlIGFueSBvdGhlciBwcm9wZXJ0aWVzLCB3ZSBl
bnN1cmUgdGhlIHNhbWVcblx0ICAgIC8vIGNoYWluaW5nIG9yZGVyIGlzIGFwcGxpZWQgdG8gbWV0
aG9kcyB3aXRoIERFRklORV9NQU5ZIHBvbGljeSwgd2hldGhlclxuXHQgICAgLy8gbWl4aW5zIGFy
ZSBsaXN0ZWQgYmVmb3JlIG9yIGFmdGVyIHRoZXNlIG1ldGhvZHMgaW4gdGhlIHNwZWMuXG5cdCAg
ICBpZiAoc3BlYy5oYXNPd25Qcm9wZXJ0eShNSVhJTlNfS0VZKSkge1xuXHQgICAgICBSRVNFUlZF
RF9TUEVDX0tFWVMubWl4aW5zKENvbnN0cnVjdG9yLCBzcGVjLm1peGlucyk7XG5cdCAgICB9XG5c
dFxuXHQgICAgZm9yICh2YXIgbmFtZSBpbiBzcGVjKSB7XG5cdCAgICAgIGlmICghc3BlYy5oYXNP
d25Qcm9wZXJ0eShuYW1lKSkge1xuXHQgICAgICAgIGNvbnRpbnVlO1xuXHQgICAgICB9XG5cdFxu
XHQgICAgICBpZiAobmFtZSA9PT0gTUlYSU5TX0tFWSkge1xuXHQgICAgICAgIC8vIFdlIGhhdmUg
YWxyZWFkeSBoYW5kbGVkIG1peGlucyBpbiBhIHNwZWNpYWwgY2FzZSBhYm92ZS5cblx0ICAgICAg
ICBjb250aW51ZTtcblx0ICAgICAgfVxuXHRcblx0ICAgICAgdmFyIHByb3BlcnR5ID0gc3BlY1tu
YW1lXTtcblx0ICAgICAgdmFyIGlzQWxyZWFkeURlZmluZWQgPSBwcm90by5oYXNPd25Qcm9wZXJ0
eShuYW1lKTtcblx0ICAgICAgdmFsaWRhdGVNZXRob2RPdmVycmlkZShpc0FscmVhZHlEZWZpbmVk
LCBuYW1lKTtcblx0XG5cdCAgICAgIGlmIChSRVNFUlZFRF9TUEVDX0tFWVMuaGFzT3duUHJvcGVy
dHkobmFtZSkpIHtcblx0ICAgICAgICBSRVNFUlZFRF9TUEVDX0tFWVNbbmFtZV0oQ29uc3RydWN0
b3IsIHByb3BlcnR5KTtcblx0ICAgICAgfSBlbHNlIHtcblx0ICAgICAgICAvLyBTZXR1cCBtZXRo
b2RzIG9uIHByb3RvdHlwZTpcblx0ICAgICAgICAvLyBUaGUgZm9sbG93aW5nIG1lbWJlciBtZXRo
b2RzIHNob3VsZCBub3QgYmUgYXV0b21hdGljYWxseSBib3VuZDpcblx0ICAgICAgICAvLyAxLiBF
eHBlY3RlZCBSZWFjdENsYXNzIG1ldGhvZHMgKGluIHRoZSBcImludGVyZmFjZVwiKS5cblx0ICAg
ICAgICAvLyAyLiBPdmVycmlkZGVuIG1ldGhvZHMgKHRoYXQgd2VyZSBtaXhlZCBpbikuXG5cdCAg
ICAgICAgdmFyIGlzUmVhY3RDbGFzc01ldGhvZCA9IFJlYWN0Q2xhc3NJbnRlcmZhY2UuaGFzT3du
UHJvcGVydHkobmFtZSk7XG5cdCAgICAgICAgdmFyIGlzRnVuY3Rpb24gPSB0eXBlb2YgcHJvcGVy
dHkgPT09ICdmdW5jdGlvbic7XG5cdCAgICAgICAgdmFyIHNob3VsZEF1dG9CaW5kID1cblx0ICAg
ICAgICAgIGlzRnVuY3Rpb24gJiZcblx0ICAgICAgICAgICFpc1JlYWN0Q2xhc3NNZXRob2QgJiZc
blx0ICAgICAgICAgICFpc0FscmVhZHlEZWZpbmVkICYmXG5cdCAgICAgICAgICBzcGVjLmF1dG9i
aW5kICE9PSBmYWxzZTtcblx0XG5cdCAgICAgICAgaWYgKHNob3VsZEF1dG9CaW5kKSB7XG5cdCAg
ICAgICAgICBhdXRvQmluZFBhaXJzLnB1c2gobmFtZSwgcHJvcGVydHkpO1xuXHQgICAgICAgICAg
cHJvdG9bbmFtZV0gPSBwcm9wZXJ0eTtcblx0ICAgICAgICB9IGVsc2Uge1xuXHQgICAgICAgICAg
aWYgKGlzQWxyZWFkeURlZmluZWQpIHtcblx0ICAgICAgICAgICAgdmFyIHNwZWNQb2xpY3kgPSBS
ZWFjdENsYXNzSW50ZXJmYWNlW25hbWVdO1xuXHRcblx0ICAgICAgICAgICAgLy8gVGhlc2UgY2Fz
ZXMgc2hvdWxkIGFscmVhZHkgYmUgY2F1Z2h0IGJ5IHZhbGlkYXRlTWV0aG9kT3ZlcnJpZGUuXG5c
dCAgICAgICAgICAgIF9pbnZhcmlhbnQoXG5cdCAgICAgICAgICAgICAgaXNSZWFjdENsYXNzTWV0
aG9kICYmXG5cdCAgICAgICAgICAgICAgICAoc3BlY1BvbGljeSA9PT0gJ0RFRklORV9NQU5ZX01F
UkdFRCcgfHxcblx0ICAgICAgICAgICAgICAgICAgc3BlY1BvbGljeSA9PT0gJ0RFRklORV9NQU5Z
JyksXG5cdCAgICAgICAgICAgICAgJ1JlYWN0Q2xhc3M6IFVuZXhwZWN0ZWQgc3BlYyBwb2xpY3kg
JXMgZm9yIGtleSAlcyAnICtcblx0ICAgICAgICAgICAgICAgICd3aGVuIG1peGluZyBpbiBjb21w
b25lbnQgc3BlY3MuJyxcblx0ICAgICAgICAgICAgICBzcGVjUG9saWN5LFxuXHQgICAgICAgICAg
ICAgIG5hbWVcblx0ICAgICAgICAgICAgKTtcblx0XG5cdCAgICAgICAgICAgIC8vIEZvciBtZXRo
b2RzIHdoaWNoIGFyZSBkZWZpbmVkIG1vcmUgdGhhbiBvbmNlLCBjYWxsIHRoZSBleGlzdGluZ1xu
XHQgICAgICAgICAgICAvLyBtZXRob2RzIGJlZm9yZSBjYWxsaW5nIHRoZSBuZXcgcHJvcGVydHks
IG1lcmdpbmcgaWYgYXBwcm9wcmlhdGUuXG5cdCAgICAgICAgICAgIGlmIChzcGVjUG9saWN5ID09
PSAnREVGSU5FX01BTllfTUVSR0VEJykge1xuXHQgICAgICAgICAgICAgIHByb3RvW25hbWVdID0g
Y3JlYXRlTWVyZ2VkUmVzdWx0RnVuY3Rpb24ocHJvdG9bbmFtZV0sIHByb3BlcnR5KTtcblx0ICAg
ICAgICAgICAgfSBlbHNlIGlmIChzcGVjUG9saWN5ID09PSAnREVGSU5FX01BTlknKSB7XG5cdCAg
ICAgICAgICAgICAgcHJvdG9bbmFtZV0gPSBjcmVhdGVDaGFpbmVkRnVuY3Rpb24ocHJvdG9bbmFt
ZV0sIHByb3BlcnR5KTtcblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgICAgfSBlbHNlIHtcblx0
ICAgICAgICAgICAgcHJvdG9bbmFtZV0gPSBwcm9wZXJ0eTtcblx0ICAgICAgICAgICAgaWYgKGZh
bHNlKSB7XG5cdCAgICAgICAgICAgICAgLy8gQWRkIHZlcmJvc2UgZGlzcGxheU5hbWUgdG8gdGhl
IGZ1bmN0aW9uLCB3aGljaCBoZWxwcyB3aGVuIGxvb2tpbmdcblx0ICAgICAgICAgICAgICAvLyBh
dCBwcm9maWxpbmcgdG9vbHMuXG5cdCAgICAgICAgICAgICAgaWYgKHR5cGVvZiBwcm9wZXJ0eSA9
PT0gJ2Z1bmN0aW9uJyAmJiBzcGVjLmRpc3BsYXlOYW1lKSB7XG5cdCAgICAgICAgICAgICAgICBw
cm90b1tuYW1lXS5kaXNwbGF5TmFtZSA9IHNwZWMuZGlzcGxheU5hbWUgKyAnXycgKyBuYW1lO1xu
XHQgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgICAgfVxuXHQgICAg
ICAgIH1cblx0ICAgICAgfVxuXHQgICAgfVxuXHQgIH1cblx0XG5cdCAgZnVuY3Rpb24gbWl4U3Rh
dGljU3BlY0ludG9Db21wb25lbnQoQ29uc3RydWN0b3IsIHN0YXRpY3MpIHtcblx0ICAgIGlmICgh
c3RhdGljcykge1xuXHQgICAgICByZXR1cm47XG5cdCAgICB9XG5cdCAgICBmb3IgKHZhciBuYW1l
IGluIHN0YXRpY3MpIHtcblx0ICAgICAgdmFyIHByb3BlcnR5ID0gc3RhdGljc1tuYW1lXTtcblx0
ICAgICAgaWYgKCFzdGF0aWNzLmhhc093blByb3BlcnR5KG5hbWUpKSB7XG5cdCAgICAgICAgY29u
dGludWU7XG5cdCAgICAgIH1cblx0XG5cdCAgICAgIHZhciBpc1Jlc2VydmVkID0gbmFtZSBpbiBS
RVNFUlZFRF9TUEVDX0tFWVM7XG5cdCAgICAgIF9pbnZhcmlhbnQoXG5cdCAgICAgICAgIWlzUmVz
ZXJ2ZWQsXG5cdCAgICAgICAgJ1JlYWN0Q2xhc3M6IFlvdSBhcmUgYXR0ZW1wdGluZyB0byBkZWZp
bmUgYSByZXNlcnZlZCAnICtcblx0ICAgICAgICAgICdwcm9wZXJ0eSwgYCVzYCwgdGhhdCBzaG91
bGRuXFwndCBiZSBvbiB0aGUgXCJzdGF0aWNzXCIga2V5LiBEZWZpbmUgaXQgJyArXG5cdCAgICAg
ICAgICAnYXMgYW4gaW5zdGFuY2UgcHJvcGVydHkgaW5zdGVhZDsgaXQgd2lsbCBzdGlsbCBiZSBh
Y2Nlc3NpYmxlIG9uIHRoZSAnICtcblx0ICAgICAgICAgICdjb25zdHJ1Y3Rvci4nLFxuXHQgICAg
ICAgIG5hbWVcblx0ICAgICAgKTtcblx0XG5cdCAgICAgIHZhciBpc0luaGVyaXRlZCA9IG5hbWUg
aW4gQ29uc3RydWN0b3I7XG5cdCAgICAgIF9pbnZhcmlhbnQoXG5cdCAgICAgICAgIWlzSW5oZXJp
dGVkLFxuXHQgICAgICAgICdSZWFjdENsYXNzOiBZb3UgYXJlIGF0dGVtcHRpbmcgdG8gZGVmaW5l
ICcgK1xuXHQgICAgICAgICAgJ2Alc2Agb24geW91ciBjb21wb25lbnQgbW9yZSB0aGFuIG9uY2Uu
IFRoaXMgY29uZmxpY3QgbWF5IGJlICcgK1xuXHQgICAgICAgICAgJ2R1ZSB0byBhIG1peGluLics
XG5cdCAgICAgICAgbmFtZVxuXHQgICAgICApO1xuXHQgICAgICBDb25zdHJ1Y3RvcltuYW1lXSA9
IHByb3BlcnR5O1xuXHQgICAgfVxuXHQgIH1cblx0XG5cdCAgLyoqXG5cdCAgICogTWVyZ2UgdHdv
IG9iamVjdHMsIGJ1dCB0aHJvdyBpZiBib3RoIGNvbnRhaW4gdGhlIHNhbWUga2V5LlxuXHQgICAq
XG5cdCAgICogQHBhcmFtIHtvYmplY3R9IG9uZSBUaGUgZmlyc3Qgb2JqZWN0LCB3aGljaCBpcyBt
dXRhdGVkLlxuXHQgICAqIEBwYXJhbSB7b2JqZWN0fSB0d28gVGhlIHNlY29uZCBvYmplY3Rcblx0
ICAgKiBAcmV0dXJuIHtvYmplY3R9IG9uZSBhZnRlciBpdCBoYXMgYmVlbiBtdXRhdGVkIHRvIGNv
bnRhaW4gZXZlcnl0aGluZyBpbiB0d28uXG5cdCAgICovXG5cdCAgZnVuY3Rpb24gbWVyZ2VJbnRv
V2l0aE5vRHVwbGljYXRlS2V5cyhvbmUsIHR3bykge1xuXHQgICAgX2ludmFyaWFudChcblx0ICAg
ICAgb25lICYmIHR3byAmJiB0eXBlb2Ygb25lID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgdHdvID09
PSAnb2JqZWN0Jyxcblx0ICAgICAgJ21lcmdlSW50b1dpdGhOb0R1cGxpY2F0ZUtleXMoKTogQ2Fu
bm90IG1lcmdlIG5vbi1vYmplY3RzLidcblx0ICAgICk7XG5cdFxuXHQgICAgZm9yICh2YXIga2V5
IGluIHR3bykge1xuXHQgICAgICBpZiAodHdvLmhhc093blByb3BlcnR5KGtleSkpIHtcblx0ICAg
ICAgICBfaW52YXJpYW50KFxuXHQgICAgICAgICAgb25lW2tleV0gPT09IHVuZGVmaW5lZCxcblx0
ICAgICAgICAgICdtZXJnZUludG9XaXRoTm9EdXBsaWNhdGVLZXlzKCk6ICcgK1xuXHQgICAgICAg
ICAgICAnVHJpZWQgdG8gbWVyZ2UgdHdvIG9iamVjdHMgd2l0aCB0aGUgc2FtZSBrZXk6IGAlc2Au
IFRoaXMgY29uZmxpY3QgJyArXG5cdCAgICAgICAgICAgICdtYXkgYmUgZHVlIHRvIGEgbWl4aW47
IGluIHBhcnRpY3VsYXIsIHRoaXMgbWF5IGJlIGNhdXNlZCBieSB0d28gJyArXG5cdCAgICAgICAg
ICAgICdnZXRJbml0aWFsU3RhdGUoKSBvciBnZXREZWZhdWx0UHJvcHMoKSBtZXRob2RzIHJldHVy
bmluZyBvYmplY3RzICcgK1xuXHQgICAgICAgICAgICAnd2l0aCBjbGFzaGluZyBrZXlzLicsXG5c
dCAgICAgICAgICBrZXlcblx0ICAgICAgICApO1xuXHQgICAgICAgIG9uZVtrZXldID0gdHdvW2tl
eV07XG5cdCAgICAgIH1cblx0ICAgIH1cblx0ICAgIHJldHVybiBvbmU7XG5cdCAgfVxuXHRcblx0
ICAvKipcblx0ICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBpbnZva2VzIHR3byBmdW5jdGlv
bnMgYW5kIG1lcmdlcyB0aGVpciByZXR1cm4gdmFsdWVzLlxuXHQgICAqXG5cdCAgICogQHBhcmFt
IHtmdW5jdGlvbn0gb25lIEZ1bmN0aW9uIHRvIGludm9rZSBmaXJzdC5cblx0ICAgKiBAcGFyYW0g
e2Z1bmN0aW9ufSB0d28gRnVuY3Rpb24gdG8gaW52b2tlIHNlY29uZC5cblx0ICAgKiBAcmV0dXJu
IHtmdW5jdGlvbn0gRnVuY3Rpb24gdGhhdCBpbnZva2VzIHRoZSB0d28gYXJndW1lbnQgZnVuY3Rp
b25zLlxuXHQgICAqIEBwcml2YXRlXG5cdCAgICovXG5cdCAgZnVuY3Rpb24gY3JlYXRlTWVyZ2Vk
UmVzdWx0RnVuY3Rpb24ob25lLCB0d28pIHtcblx0ICAgIHJldHVybiBmdW5jdGlvbiBtZXJnZWRS
ZXN1bHQoKSB7XG5cdCAgICAgIHZhciBhID0gb25lLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG5c
dCAgICAgIHZhciBiID0gdHdvLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG5cdCAgICAgIGlmIChh
ID09IG51bGwpIHtcblx0ICAgICAgICByZXR1cm4gYjtcblx0ICAgICAgfSBlbHNlIGlmIChiID09
IG51bGwpIHtcblx0ICAgICAgICByZXR1cm4gYTtcblx0ICAgICAgfVxuXHQgICAgICB2YXIgYyA9
IHt9O1xuXHQgICAgICBtZXJnZUludG9XaXRoTm9EdXBsaWNhdGVLZXlzKGMsIGEpO1xuXHQgICAg
ICBtZXJnZUludG9XaXRoTm9EdXBsaWNhdGVLZXlzKGMsIGIpO1xuXHQgICAgICByZXR1cm4gYztc
blx0ICAgIH07XG5cdCAgfVxuXHRcblx0ICAvKipcblx0ICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24g
dGhhdCBpbnZva2VzIHR3byBmdW5jdGlvbnMgYW5kIGlnbm9yZXMgdGhlaXIgcmV0dXJuIHZhbGVz
LlxuXHQgICAqXG5cdCAgICogQHBhcmFtIHtmdW5jdGlvbn0gb25lIEZ1bmN0aW9uIHRvIGludm9r
ZSBmaXJzdC5cblx0ICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSB0d28gRnVuY3Rpb24gdG8gaW52b2tl
IHNlY29uZC5cblx0ICAgKiBAcmV0dXJuIHtmdW5jdGlvbn0gRnVuY3Rpb24gdGhhdCBpbnZva2Vz
IHRoZSB0d28gYXJndW1lbnQgZnVuY3Rpb25zLlxuXHQgICAqIEBwcml2YXRlXG5cdCAgICovXG5c
dCAgZnVuY3Rpb24gY3JlYXRlQ2hhaW5lZEZ1bmN0aW9uKG9uZSwgdHdvKSB7XG5cdCAgICByZXR1
cm4gZnVuY3Rpb24gY2hhaW5lZEZ1bmN0aW9uKCkge1xuXHQgICAgICBvbmUuYXBwbHkodGhpcywg
YXJndW1lbnRzKTtcblx0ICAgICAgdHdvLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG5cdCAgICB9
O1xuXHQgIH1cblx0XG5cdCAgLyoqXG5cdCAgICogQmluZHMgYSBtZXRob2QgdG8gdGhlIGNvbXBv
bmVudC5cblx0ICAgKlxuXHQgICAqIEBwYXJhbSB7b2JqZWN0fSBjb21wb25lbnQgQ29tcG9uZW50
IHdob3NlIG1ldGhvZCBpcyBnb2luZyB0byBiZSBib3VuZC5cblx0ICAgKiBAcGFyYW0ge2Z1bmN0
aW9ufSBtZXRob2QgTWV0aG9kIHRvIGJlIGJvdW5kLlxuXHQgICAqIEByZXR1cm4ge2Z1bmN0aW9u
fSBUaGUgYm91bmQgbWV0aG9kLlxuXHQgICAqL1xuXHQgIGZ1bmN0aW9uIGJpbmRBdXRvQmluZE1l
dGhvZChjb21wb25lbnQsIG1ldGhvZCkge1xuXHQgICAgdmFyIGJvdW5kTWV0aG9kID0gbWV0aG9k
LmJpbmQoY29tcG9uZW50KTtcblx0ICAgIGlmIChmYWxzZSkge1xuXHQgICAgICBib3VuZE1ldGhv
ZC5fX3JlYWN0Qm91bmRDb250ZXh0ID0gY29tcG9uZW50O1xuXHQgICAgICBib3VuZE1ldGhvZC5f
X3JlYWN0Qm91bmRNZXRob2QgPSBtZXRob2Q7XG5cdCAgICAgIGJvdW5kTWV0aG9kLl9fcmVhY3RC
b3VuZEFyZ3VtZW50cyA9IG51bGw7XG5cdCAgICAgIHZhciBjb21wb25lbnROYW1lID0gY29tcG9u
ZW50LmNvbnN0cnVjdG9yLmRpc3BsYXlOYW1lO1xuXHQgICAgICB2YXIgX2JpbmQgPSBib3VuZE1l
dGhvZC5iaW5kO1xuXHQgICAgICBib3VuZE1ldGhvZC5iaW5kID0gZnVuY3Rpb24obmV3VGhpcykg
e1xuXHQgICAgICAgIGZvciAoXG5cdCAgICAgICAgICB2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5n
dGgsXG5cdCAgICAgICAgICAgIGFyZ3MgPSBBcnJheShfbGVuID4gMSA/IF9sZW4gLSAxIDogMCks
XG5cdCAgICAgICAgICAgIF9rZXkgPSAxO1xuXHQgICAgICAgICAgX2tleSA8IF9sZW47XG5cdCAg
ICAgICAgICBfa2V5Kytcblx0ICAgICAgICApIHtcblx0ICAgICAgICAgIGFyZ3NbX2tleSAtIDFd
ID0gYXJndW1lbnRzW19rZXldO1xuXHQgICAgICAgIH1cblx0XG5cdCAgICAgICAgLy8gVXNlciBp
cyB0cnlpbmcgdG8gYmluZCgpIGFuIGF1dG9ib3VuZCBtZXRob2Q7IHdlIGVmZmVjdGl2ZWx5IHdp
bGxcblx0ICAgICAgICAvLyBpZ25vcmUgdGhlIHZhbHVlIG9mIFwidGhpc1wiIHRoYXQgdGhlIHVz
ZXIgaXMgdHJ5aW5nIHRvIHVzZSwgc29cblx0ICAgICAgICAvLyBsZXQncyB3YXJuLlxuXHQgICAg
ICAgIGlmIChuZXdUaGlzICE9PSBjb21wb25lbnQgJiYgbmV3VGhpcyAhPT0gbnVsbCkge1xuXHQg
ICAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcblx0
ICAgICAgICAgICAgd2FybmluZyhcblx0ICAgICAgICAgICAgICBmYWxzZSxcblx0ICAgICAgICAg
ICAgICAnYmluZCgpOiBSZWFjdCBjb21wb25lbnQgbWV0aG9kcyBtYXkgb25seSBiZSBib3VuZCB0
byB0aGUgJyArXG5cdCAgICAgICAgICAgICAgICAnY29tcG9uZW50IGluc3RhbmNlLiBTZWUgJXMn
LFxuXHQgICAgICAgICAgICAgIGNvbXBvbmVudE5hbWVcblx0ICAgICAgICAgICAgKTtcblx0ICAg
ICAgICAgIH1cblx0ICAgICAgICB9IGVsc2UgaWYgKCFhcmdzLmxlbmd0aCkge1xuXHQgICAgICAg
ICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcblx0ICAgICAg
ICAgICAgd2FybmluZyhcblx0ICAgICAgICAgICAgICBmYWxzZSxcblx0ICAgICAgICAgICAgICAn
YmluZCgpOiBZb3UgYXJlIGJpbmRpbmcgYSBjb21wb25lbnQgbWV0aG9kIHRvIHRoZSBjb21wb25l
bnQuICcgK1xuXHQgICAgICAgICAgICAgICAgJ1JlYWN0IGRvZXMgdGhpcyBmb3IgeW91IGF1dG9t
YXRpY2FsbHkgaW4gYSBoaWdoLXBlcmZvcm1hbmNlICcgK1xuXHQgICAgICAgICAgICAgICAgJ3dh
eSwgc28geW91IGNhbiBzYWZlbHkgcmVtb3ZlIHRoaXMgY2FsbC4gU2VlICVzJyxcblx0ICAgICAg
ICAgICAgICBjb21wb25lbnROYW1lXG5cdCAgICAgICAgICAgICk7XG5cdCAgICAgICAgICB9XG5c
dCAgICAgICAgICByZXR1cm4gYm91bmRNZXRob2Q7XG5cdCAgICAgICAgfVxuXHQgICAgICAgIHZh
ciByZWJvdW5kTWV0aG9kID0gX2JpbmQuYXBwbHkoYm91bmRNZXRob2QsIGFyZ3VtZW50cyk7XG5c
dCAgICAgICAgcmVib3VuZE1ldGhvZC5fX3JlYWN0Qm91bmRDb250ZXh0ID0gY29tcG9uZW50O1xu
XHQgICAgICAgIHJlYm91bmRNZXRob2QuX19yZWFjdEJvdW5kTWV0aG9kID0gbWV0aG9kO1xuXHQg
ICAgICAgIHJlYm91bmRNZXRob2QuX19yZWFjdEJvdW5kQXJndW1lbnRzID0gYXJncztcblx0ICAg
ICAgICByZXR1cm4gcmVib3VuZE1ldGhvZDtcblx0ICAgICAgfTtcblx0ICAgIH1cblx0ICAgIHJl
dHVybiBib3VuZE1ldGhvZDtcblx0ICB9XG5cdFxuXHQgIC8qKlxuXHQgICAqIEJpbmRzIGFsbCBh
dXRvLWJvdW5kIG1ldGhvZHMgaW4gYSBjb21wb25lbnQuXG5cdCAgICpcblx0ICAgKiBAcGFyYW0g
e29iamVjdH0gY29tcG9uZW50IENvbXBvbmVudCB3aG9zZSBtZXRob2QgaXMgZ29pbmcgdG8gYmUg
Ym91bmQuXG5cdCAgICovXG5cdCAgZnVuY3Rpb24gYmluZEF1dG9CaW5kTWV0aG9kcyhjb21wb25l
bnQpIHtcblx0ICAgIHZhciBwYWlycyA9IGNvbXBvbmVudC5fX3JlYWN0QXV0b0JpbmRQYWlycztc
blx0ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcGFpcnMubGVuZ3RoOyBpICs9IDIpIHtcblx0ICAg
ICAgdmFyIGF1dG9CaW5kS2V5ID0gcGFpcnNbaV07XG5cdCAgICAgIHZhciBtZXRob2QgPSBwYWly
c1tpICsgMV07XG5cdCAgICAgIGNvbXBvbmVudFthdXRvQmluZEtleV0gPSBiaW5kQXV0b0JpbmRN
ZXRob2QoY29tcG9uZW50LCBtZXRob2QpO1xuXHQgICAgfVxuXHQgIH1cblx0XG5cdCAgdmFyIElz
TW91bnRlZFByZU1peGluID0ge1xuXHQgICAgY29tcG9uZW50RGlkTW91bnQ6IGZ1bmN0aW9uKCkg
e1xuXHQgICAgICB0aGlzLl9faXNNb3VudGVkID0gdHJ1ZTtcblx0ICAgIH1cblx0ICB9O1xuXHRc
blx0ICB2YXIgSXNNb3VudGVkUG9zdE1peGluID0ge1xuXHQgICAgY29tcG9uZW50V2lsbFVubW91
bnQ6IGZ1bmN0aW9uKCkge1xuXHQgICAgICB0aGlzLl9faXNNb3VudGVkID0gZmFsc2U7XG5cdCAg
ICB9XG5cdCAgfTtcblx0XG5cdCAgLyoqXG5cdCAgICogQWRkIG1vcmUgdG8gdGhlIFJlYWN0Q2xh
c3MgYmFzZSBjbGFzcy4gVGhlc2UgYXJlIGFsbCBsZWdhY3kgZmVhdHVyZXMgYW5kXG5cdCAgICog
dGhlcmVmb3JlIG5vdCBhbHJlYWR5IHBhcnQgb2YgdGhlIG1vZGVybiBSZWFjdENvbXBvbmVudC5c
blx0ICAgKi9cblx0ICB2YXIgUmVhY3RDbGFzc01peGluID0ge1xuXHQgICAgLyoqXG5cdCAgICAg
KiBUT0RPOiBUaGlzIHdpbGwgYmUgZGVwcmVjYXRlZCBiZWNhdXNlIHN0YXRlIHNob3VsZCBhbHdh
eXMga2VlcCBhIGNvbnNpc3RlbnRcblx0ICAgICAqIHR5cGUgc2lnbmF0dXJlIGFuZCB0aGUgb25s
eSB1c2UgY2FzZSBmb3IgdGhpcywgaXMgdG8gYXZvaWQgdGhhdC5cblx0ICAgICAqL1xuXHQgICAg
cmVwbGFjZVN0YXRlOiBmdW5jdGlvbihuZXdTdGF0ZSwgY2FsbGJhY2spIHtcblx0ICAgICAgdGhp
cy51cGRhdGVyLmVucXVldWVSZXBsYWNlU3RhdGUodGhpcywgbmV3U3RhdGUsIGNhbGxiYWNrKTtc
blx0ICAgIH0sXG5cdFxuXHQgICAgLyoqXG5cdCAgICAgKiBDaGVja3Mgd2hldGhlciBvciBub3Qg
dGhpcyBjb21wb3NpdGUgY29tcG9uZW50IGlzIG1vdW50ZWQuXG5cdCAgICAgKiBAcmV0dXJuIHti
b29sZWFufSBUcnVlIGlmIG1vdW50ZWQsIGZhbHNlIG90aGVyd2lzZS5cblx0ICAgICAqIEBwcm90
ZWN0ZWRcblx0ICAgICAqIEBmaW5hbFxuXHQgICAgICovXG5cdCAgICBpc01vdW50ZWQ6IGZ1bmN0
aW9uKCkge1xuXHQgICAgICBpZiAoZmFsc2UpIHtcblx0ICAgICAgICB3YXJuaW5nKFxuXHQgICAg
ICAgICAgdGhpcy5fX2RpZFdhcm5Jc01vdW50ZWQsXG5cdCAgICAgICAgICAnJXM6IGlzTW91bnRl
ZCBpcyBkZXByZWNhdGVkLiBJbnN0ZWFkLCBtYWtlIHN1cmUgdG8gY2xlYW4gdXAgJyArXG5cdCAg
ICAgICAgICAgICdzdWJzY3JpcHRpb25zIGFuZCBwZW5kaW5nIHJlcXVlc3RzIGluIGNvbXBvbmVu
dFdpbGxVbm1vdW50IHRvICcgK1xuXHQgICAgICAgICAgICAncHJldmVudCBtZW1vcnkgbGVha3Mu
Jyxcblx0ICAgICAgICAgICh0aGlzLmNvbnN0cnVjdG9yICYmIHRoaXMuY29uc3RydWN0b3IuZGlz
cGxheU5hbWUpIHx8XG5cdCAgICAgICAgICAgIHRoaXMubmFtZSB8fFxuXHQgICAgICAgICAgICAn
Q29tcG9uZW50J1xuXHQgICAgICAgICk7XG5cdCAgICAgICAgdGhpcy5fX2RpZFdhcm5Jc01vdW50
ZWQgPSB0cnVlO1xuXHQgICAgICB9XG5cdCAgICAgIHJldHVybiAhIXRoaXMuX19pc01vdW50ZWQ7
XG5cdCAgICB9XG5cdCAgfTtcblx0XG5cdCAgdmFyIFJlYWN0Q2xhc3NDb21wb25lbnQgPSBmdW5j
dGlvbigpIHt9O1xuXHQgIF9hc3NpZ24oXG5cdCAgICBSZWFjdENsYXNzQ29tcG9uZW50LnByb3Rv
dHlwZSxcblx0ICAgIFJlYWN0Q29tcG9uZW50LnByb3RvdHlwZSxcblx0ICAgIFJlYWN0Q2xhc3NN
aXhpblxuXHQgICk7XG5cdFxuXHQgIC8qKlxuXHQgICAqIENyZWF0ZXMgYSBjb21wb3NpdGUgY29t
cG9uZW50IGNsYXNzIGdpdmVuIGEgY2xhc3Mgc3BlY2lmaWNhdGlvbi5cblx0ICAgKiBTZWUgaHR0
cHM6Ly9mYWNlYm9vay5naXRodWIuaW8vcmVhY3QvZG9jcy90b3AtbGV2ZWwtYXBpLmh0bWwjcmVh
Y3QuY3JlYXRlY2xhc3Ncblx0ICAgKlxuXHQgICAqIEBwYXJhbSB7b2JqZWN0fSBzcGVjIENsYXNz
IHNwZWNpZmljYXRpb24gKHdoaWNoIG11c3QgZGVmaW5lIGByZW5kZXJgKS5cblx0ICAgKiBAcmV0
dXJuIHtmdW5jdGlvbn0gQ29tcG9uZW50IGNvbnN0cnVjdG9yIGZ1bmN0aW9uLlxuXHQgICAqIEBw
dWJsaWNcblx0ICAgKi9cblx0ICBmdW5jdGlvbiBjcmVhdGVDbGFzcyhzcGVjKSB7XG5cdCAgICAv
LyBUbyBrZWVwIG91ciB3YXJuaW5ncyBtb3JlIHVuZGVyc3RhbmRhYmxlLCB3ZSdsbCB1c2UgYSBs
aXR0bGUgaGFjayBoZXJlIHRvXG5cdCAgICAvLyBlbnN1cmUgdGhhdCBDb25zdHJ1Y3Rvci5uYW1l
ICE9PSAnQ29uc3RydWN0b3InLiBUaGlzIG1ha2VzIHN1cmUgd2UgZG9uJ3Rcblx0ICAgIC8vIHVu
bmVjZXNzYXJpbHkgaWRlbnRpZnkgYSBjbGFzcyB3aXRob3V0IGRpc3BsYXlOYW1lIGFzICdDb25z
dHJ1Y3RvcicuXG5cdCAgICB2YXIgQ29uc3RydWN0b3IgPSBpZGVudGl0eShmdW5jdGlvbihwcm9w
cywgY29udGV4dCwgdXBkYXRlcikge1xuXHQgICAgICAvLyBUaGlzIGNvbnN0cnVjdG9yIGdldHMg
b3ZlcnJpZGRlbiBieSBtb2Nrcy4gVGhlIGFyZ3VtZW50IGlzIHVzZWRcblx0ICAgICAgLy8gYnkg
bW9ja3MgdG8gYXNzZXJ0IG9uIHdoYXQgZ2V0cyBtb3VudGVkLlxuXHRcblx0ICAgICAgaWYgKGZh
bHNlKSB7XG5cdCAgICAgICAgd2FybmluZyhcblx0ICAgICAgICAgIHRoaXMgaW5zdGFuY2VvZiBD
b25zdHJ1Y3Rvcixcblx0ICAgICAgICAgICdTb21ldGhpbmcgaXMgY2FsbGluZyBhIFJlYWN0IGNv
bXBvbmVudCBkaXJlY3RseS4gVXNlIGEgZmFjdG9yeSBvciAnICtcblx0ICAgICAgICAgICAgJ0pT
WCBpbnN0ZWFkLiBTZWU6IGh0dHBzOi8vZmIubWUvcmVhY3QtbGVnYWN5ZmFjdG9yeSdcblx0ICAg
ICAgICApO1xuXHQgICAgICB9XG5cdFxuXHQgICAgICAvLyBXaXJlIHVwIGF1dG8tYmluZGluZ1xu
XHQgICAgICBpZiAodGhpcy5fX3JlYWN0QXV0b0JpbmRQYWlycy5sZW5ndGgpIHtcblx0ICAgICAg
ICBiaW5kQXV0b0JpbmRNZXRob2RzKHRoaXMpO1xuXHQgICAgICB9XG5cdFxuXHQgICAgICB0aGlz
LnByb3BzID0gcHJvcHM7XG5cdCAgICAgIHRoaXMuY29udGV4dCA9IGNvbnRleHQ7XG5cdCAgICAg
IHRoaXMucmVmcyA9IGVtcHR5T2JqZWN0O1xuXHQgICAgICB0aGlzLnVwZGF0ZXIgPSB1cGRhdGVy
IHx8IFJlYWN0Tm9vcFVwZGF0ZVF1ZXVlO1xuXHRcblx0ICAgICAgdGhpcy5zdGF0ZSA9IG51bGw7
XG5cdFxuXHQgICAgICAvLyBSZWFjdENsYXNzZXMgZG9lc24ndCBoYXZlIGNvbnN0cnVjdG9ycy4g
SW5zdGVhZCwgdGhleSB1c2UgdGhlXG5cdCAgICAgIC8vIGdldEluaXRpYWxTdGF0ZSBhbmQgY29t
cG9uZW50V2lsbE1vdW50IG1ldGhvZHMgZm9yIGluaXRpYWxpemF0aW9uLlxuXHRcblx0ICAgICAg
dmFyIGluaXRpYWxTdGF0ZSA9IHRoaXMuZ2V0SW5pdGlhbFN0YXRlID8gdGhpcy5nZXRJbml0aWFs
U3RhdGUoKSA6IG51bGw7XG5cdCAgICAgIGlmIChmYWxzZSkge1xuXHQgICAgICAgIC8vIFdlIGFs
bG93IGF1dG8tbW9ja3MgdG8gcHJvY2VlZCBhcyBpZiB0aGV5J3JlIHJldHVybmluZyBudWxsLlxu
XHQgICAgICAgIGlmIChcblx0ICAgICAgICAgIGluaXRpYWxTdGF0ZSA9PT0gdW5kZWZpbmVkICYm
XG5cdCAgICAgICAgICB0aGlzLmdldEluaXRpYWxTdGF0ZS5faXNNb2NrRnVuY3Rpb25cblx0ICAg
ICAgICApIHtcblx0ICAgICAgICAgIC8vIFRoaXMgaXMgcHJvYmFibHkgYmFkIHByYWN0aWNlLiBD
b25zaWRlciB3YXJuaW5nIGhlcmUgYW5kXG5cdCAgICAgICAgICAvLyBkZXByZWNhdGluZyB0aGlz
IGNvbnZlbmllbmNlLlxuXHQgICAgICAgICAgaW5pdGlhbFN0YXRlID0gbnVsbDtcblx0ICAgICAg
ICB9XG5cdCAgICAgIH1cblx0ICAgICAgX2ludmFyaWFudChcblx0ICAgICAgICB0eXBlb2YgaW5p
dGlhbFN0YXRlID09PSAnb2JqZWN0JyAmJiAhQXJyYXkuaXNBcnJheShpbml0aWFsU3RhdGUpLFxu
XHQgICAgICAgICclcy5nZXRJbml0aWFsU3RhdGUoKTogbXVzdCByZXR1cm4gYW4gb2JqZWN0IG9y
IG51bGwnLFxuXHQgICAgICAgIENvbnN0cnVjdG9yLmRpc3BsYXlOYW1lIHx8ICdSZWFjdENvbXBv
c2l0ZUNvbXBvbmVudCdcblx0ICAgICAgKTtcblx0XG5cdCAgICAgIHRoaXMuc3RhdGUgPSBpbml0
aWFsU3RhdGU7XG5cdCAgICB9KTtcblx0ICAgIENvbnN0cnVjdG9yLnByb3RvdHlwZSA9IG5ldyBS
ZWFjdENsYXNzQ29tcG9uZW50KCk7XG5cdCAgICBDb25zdHJ1Y3Rvci5wcm90b3R5cGUuY29uc3Ry
dWN0b3IgPSBDb25zdHJ1Y3Rvcjtcblx0ICAgIENvbnN0cnVjdG9yLnByb3RvdHlwZS5fX3JlYWN0
QXV0b0JpbmRQYWlycyA9IFtdO1xuXHRcblx0ICAgIGluamVjdGVkTWl4aW5zLmZvckVhY2gobWl4
U3BlY0ludG9Db21wb25lbnQuYmluZChudWxsLCBDb25zdHJ1Y3RvcikpO1xuXHRcblx0ICAgIG1p
eFNwZWNJbnRvQ29tcG9uZW50KENvbnN0cnVjdG9yLCBJc01vdW50ZWRQcmVNaXhpbik7XG5cdCAg
ICBtaXhTcGVjSW50b0NvbXBvbmVudChDb25zdHJ1Y3Rvciwgc3BlYyk7XG5cdCAgICBtaXhTcGVj
SW50b0NvbXBvbmVudChDb25zdHJ1Y3RvciwgSXNNb3VudGVkUG9zdE1peGluKTtcblx0XG5cdCAg
ICAvLyBJbml0aWFsaXplIHRoZSBkZWZhdWx0UHJvcHMgcHJvcGVydHkgYWZ0ZXIgYWxsIG1peGlu
cyBoYXZlIGJlZW4gbWVyZ2VkLlxuXHQgICAgaWYgKENvbnN0cnVjdG9yLmdldERlZmF1bHRQcm9w
cykge1xuXHQgICAgICBDb25zdHJ1Y3Rvci5kZWZhdWx0UHJvcHMgPSBDb25zdHJ1Y3Rvci5nZXRE
ZWZhdWx0UHJvcHMoKTtcblx0ICAgIH1cblx0XG5cdCAgICBpZiAoZmFsc2UpIHtcblx0ICAgICAg
Ly8gVGhpcyBpcyBhIHRhZyB0byBpbmRpY2F0ZSB0aGF0IHRoZSB1c2Ugb2YgdGhlc2UgbWV0aG9k
IG5hbWVzIGlzIG9rLFxuXHQgICAgICAvLyBzaW5jZSBpdCdzIHVzZWQgd2l0aCBjcmVhdGVDbGFz
cy4gSWYgaXQncyBub3QsIHRoZW4gaXQncyBsaWtlbHkgYVxuXHQgICAgICAvLyBtaXN0YWtlIHNv
IHdlJ2xsIHdhcm4geW91IHRvIHVzZSB0aGUgc3RhdGljIHByb3BlcnR5LCBwcm9wZXJ0eVxuXHQg
ICAgICAvLyBpbml0aWFsaXplciBvciBjb25zdHJ1Y3RvciByZXNwZWN0aXZlbHkuXG5cdCAgICAg
IGlmIChDb25zdHJ1Y3Rvci5nZXREZWZhdWx0UHJvcHMpIHtcblx0ICAgICAgICBDb25zdHJ1Y3Rv
ci5nZXREZWZhdWx0UHJvcHMuaXNSZWFjdENsYXNzQXBwcm92ZWQgPSB7fTtcblx0ICAgICAgfVxu
XHQgICAgICBpZiAoQ29uc3RydWN0b3IucHJvdG90eXBlLmdldEluaXRpYWxTdGF0ZSkge1xuXHQg
ICAgICAgIENvbnN0cnVjdG9yLnByb3RvdHlwZS5nZXRJbml0aWFsU3RhdGUuaXNSZWFjdENsYXNz
QXBwcm92ZWQgPSB7fTtcblx0ICAgICAgfVxuXHQgICAgfVxuXHRcblx0ICAgIF9pbnZhcmlhbnQo
XG5cdCAgICAgIENvbnN0cnVjdG9yLnByb3RvdHlwZS5yZW5kZXIsXG5cdCAgICAgICdjcmVhdGVD
bGFzcyguLi4pOiBDbGFzcyBzcGVjaWZpY2F0aW9uIG11c3QgaW1wbGVtZW50IGEgYHJlbmRlcmAg
bWV0aG9kLidcblx0ICAgICk7XG5cdFxuXHQgICAgaWYgKGZhbHNlKSB7XG5cdCAgICAgIHdhcm5p
bmcoXG5cdCAgICAgICAgIUNvbnN0cnVjdG9yLnByb3RvdHlwZS5jb21wb25lbnRTaG91bGRVcGRh
dGUsXG5cdCAgICAgICAgJyVzIGhhcyBhIG1ldGhvZCBjYWxsZWQgJyArXG5cdCAgICAgICAgICAn
Y29tcG9uZW50U2hvdWxkVXBkYXRlKCkuIERpZCB5b3UgbWVhbiBzaG91bGRDb21wb25lbnRVcGRh
dGUoKT8gJyArXG5cdCAgICAgICAgICAnVGhlIG5hbWUgaXMgcGhyYXNlZCBhcyBhIHF1ZXN0aW9u
IGJlY2F1c2UgdGhlIGZ1bmN0aW9uIGlzICcgK1xuXHQgICAgICAgICAgJ2V4cGVjdGVkIHRvIHJl
dHVybiBhIHZhbHVlLicsXG5cdCAgICAgICAgc3BlYy5kaXNwbGF5TmFtZSB8fCAnQSBjb21wb25l
bnQnXG5cdCAgICAgICk7XG5cdCAgICAgIHdhcm5pbmcoXG5cdCAgICAgICAgIUNvbnN0cnVjdG9y
LnByb3RvdHlwZS5jb21wb25lbnRXaWxsUmVjaWV2ZVByb3BzLFxuXHQgICAgICAgICclcyBoYXMg
YSBtZXRob2QgY2FsbGVkICcgK1xuXHQgICAgICAgICAgJ2NvbXBvbmVudFdpbGxSZWNpZXZlUHJv
cHMoKS4gRGlkIHlvdSBtZWFuIGNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMoKT8nLFxuXHQgICAg
ICAgIHNwZWMuZGlzcGxheU5hbWUgfHwgJ0EgY29tcG9uZW50J1xuXHQgICAgICApO1xuXHQgICAg
fVxuXHRcblx0ICAgIC8vIFJlZHVjZSB0aW1lIHNwZW50IGRvaW5nIGxvb2t1cHMgYnkgc2V0dGlu
ZyB0aGVzZSBvbiB0aGUgcHJvdG90eXBlLlxuXHQgICAgZm9yICh2YXIgbWV0aG9kTmFtZSBpbiBS
ZWFjdENsYXNzSW50ZXJmYWNlKSB7XG5cdCAgICAgIGlmICghQ29uc3RydWN0b3IucHJvdG90eXBl
W21ldGhvZE5hbWVdKSB7XG5cdCAgICAgICAgQ29uc3RydWN0b3IucHJvdG90eXBlW21ldGhvZE5h
bWVdID0gbnVsbDtcblx0ICAgICAgfVxuXHQgICAgfVxuXHRcblx0ICAgIHJldHVybiBDb25zdHJ1
Y3Rvcjtcblx0ICB9XG5cdFxuXHQgIHJldHVybiBjcmVhdGVDbGFzcztcblx0fVxuXHRcblx0bW9k
dWxlLmV4cG9ydHMgPSBmYWN0b3J5O1xuXG5cbi8qKiovIH0sXG4vKiA5OCAqL1xuLyoqKi8gZnVu
Y3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cblx0XCJ1c2Ugc3RyaWN0XCI7XG5cdFxuXHQvKipc
blx0ICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFs
bCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5z
ZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNF
IGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0
aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBB
VEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqIEB0eXBlY2hlY2tz
XG5cdCAqL1xuXHRcblx0dmFyIF9oeXBoZW5QYXR0ZXJuID0gLy0oLikvZztcblx0XG5cdC8qKlxu
XHQgKiBDYW1lbGNhc2VzIGEgaHlwaGVuYXRlZCBzdHJpbmcsIGZvciBleGFtcGxlOlxuXHQgKlxu
XHQgKiAgID4gY2FtZWxpemUoJ2JhY2tncm91bmQtY29sb3InKVxuXHQgKiAgIDwgXCJiYWNrZ3Jv
dW5kQ29sb3JcIlxuXHQgKlxuXHQgKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nXG5cdCAqIEByZXR1
cm4ge3N0cmluZ31cblx0ICovXG5cdGZ1bmN0aW9uIGNhbWVsaXplKHN0cmluZykge1xuXHQgIHJl
dHVybiBzdHJpbmcucmVwbGFjZShfaHlwaGVuUGF0dGVybiwgZnVuY3Rpb24gKF8sIGNoYXJhY3Rl
cikge1xuXHQgICAgcmV0dXJuIGNoYXJhY3Rlci50b1VwcGVyQ2FzZSgpO1xuXHQgIH0pO1xuXHR9
XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IGNhbWVsaXplO1xuXG4vKioqLyB9LFxuLyogOTkgKi9c
bi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xu
XG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5c
blx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBp
cyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAq
IExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4g
QW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBp
biB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpcblx0ICogQHR5
cGVjaGVja3Ncblx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHR2YXIgY2FtZWxpemUg
PSBfX3dlYnBhY2tfcmVxdWlyZV9fKDk4KTtcblx0XG5cdHZhciBtc1BhdHRlcm4gPSAvXi1tcy0v
O1xuXHRcblx0LyoqXG5cdCAqIENhbWVsY2FzZXMgYSBoeXBoZW5hdGVkIENTUyBwcm9wZXJ0eSBu
YW1lLCBmb3IgZXhhbXBsZTpcblx0ICpcblx0ICogICA+IGNhbWVsaXplU3R5bGVOYW1lKCdiYWNr
Z3JvdW5kLWNvbG9yJylcblx0ICogICA8IFwiYmFja2dyb3VuZENvbG9yXCJcblx0ICogICA+IGNh
bWVsaXplU3R5bGVOYW1lKCctbW96LXRyYW5zaXRpb24nKVxuXHQgKiAgIDwgXCJNb3pUcmFuc2l0
aW9uXCJcblx0ICogICA+IGNhbWVsaXplU3R5bGVOYW1lKCctbXMtdHJhbnNpdGlvbicpXG5cdCAq
ICAgPCBcIm1zVHJhbnNpdGlvblwiXG5cdCAqXG5cdCAqIEFzIEFuZGkgU21pdGggc3VnZ2VzdHNc
blx0ICogKGh0dHA6Ly93d3cuYW5kaXNtaXRoLmNvbS9ibG9nLzIwMTIvMDIvbW9kZXJuaXpyLXBy
ZWZpeGVkLyksIGFuIGAtbXNgIHByZWZpeFxuXHQgKiBpcyBjb252ZXJ0ZWQgdG8gbG93ZXJjYXNl
IGBtc2AuXG5cdCAqXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmdcblx0ICogQHJldHVybiB7
c3RyaW5nfVxuXHQgKi9cblx0ZnVuY3Rpb24gY2FtZWxpemVTdHlsZU5hbWUoc3RyaW5nKSB7XG5c
dCAgcmV0dXJuIGNhbWVsaXplKHN0cmluZy5yZXBsYWNlKG1zUGF0dGVybiwgJ21zLScpKTtcblx0
fVxuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBjYW1lbGl6ZVN0eWxlTmFtZTtcblxuLyoqKi8gfSxc
bi8qIDEwMCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVx
dWlyZV9fKSB7XG5cblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0LyoqXG5cdCAqIENvcHlyaWdodCAo
YykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVk
LlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qt
c3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290
IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAq
IG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhl
IHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKiBcblx0ICovXG5cdFxuXHR2YXIgaXNUZXh0Tm9k
ZSA9IF9fd2VicGFja19yZXF1aXJlX18oMTA4KTtcblx0XG5cdC8qZXNsaW50LWRpc2FibGUgbm8t
Yml0d2lzZSAqL1xuXHRcblx0LyoqXG5cdCAqIENoZWNrcyBpZiBhIGdpdmVuIERPTSBub2RlIGNv
bnRhaW5zIG9yIGlzIGFub3RoZXIgRE9NIG5vZGUuXG5cdCAqL1xuXHRmdW5jdGlvbiBjb250YWlu
c05vZGUob3V0ZXJOb2RlLCBpbm5lck5vZGUpIHtcblx0ICBpZiAoIW91dGVyTm9kZSB8fCAhaW5u
ZXJOb2RlKSB7XG5cdCAgICByZXR1cm4gZmFsc2U7XG5cdCAgfSBlbHNlIGlmIChvdXRlck5vZGUg
PT09IGlubmVyTm9kZSkge1xuXHQgICAgcmV0dXJuIHRydWU7XG5cdCAgfSBlbHNlIGlmIChpc1Rl
eHROb2RlKG91dGVyTm9kZSkpIHtcblx0ICAgIHJldHVybiBmYWxzZTtcblx0ICB9IGVsc2UgaWYg
KGlzVGV4dE5vZGUoaW5uZXJOb2RlKSkge1xuXHQgICAgcmV0dXJuIGNvbnRhaW5zTm9kZShvdXRl
ck5vZGUsIGlubmVyTm9kZS5wYXJlbnROb2RlKTtcblx0ICB9IGVsc2UgaWYgKCdjb250YWlucycg
aW4gb3V0ZXJOb2RlKSB7XG5cdCAgICByZXR1cm4gb3V0ZXJOb2RlLmNvbnRhaW5zKGlubmVyTm9k
ZSk7XG5cdCAgfSBlbHNlIGlmIChvdXRlck5vZGUuY29tcGFyZURvY3VtZW50UG9zaXRpb24pIHtc
blx0ICAgIHJldHVybiAhIShvdXRlck5vZGUuY29tcGFyZURvY3VtZW50UG9zaXRpb24oaW5uZXJO
b2RlKSAmIDE2KTtcblx0ICB9IGVsc2Uge1xuXHQgICAgcmV0dXJuIGZhbHNlO1xuXHQgIH1cblx0
fVxuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBjb250YWluc05vZGU7XG5cbi8qKiovIH0sXG4vKiAx
MDEgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVf
Xykge1xuXG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgKGMpIDIw
MTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0
ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxl
IGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJl
Y3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBw
YXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1l
IGRpcmVjdG9yeS5cblx0ICpcblx0ICogQHR5cGVjaGVja3Ncblx0ICovXG5cdFxuXHR2YXIgaW52
YXJpYW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxKTtcblx0XG5cdC8qKlxuXHQgKiBDb252ZXJ0
IGFycmF5LWxpa2Ugb2JqZWN0cyB0byBhcnJheXMuXG5cdCAqXG5cdCAqIFRoaXMgQVBJIGFzc3Vt
ZXMgdGhlIGNhbGxlciBrbm93cyB0aGUgY29udGVudHMgb2YgdGhlIGRhdGEgdHlwZS4gRm9yIGxl
c3Ncblx0ICogd2VsbCBkZWZpbmVkIGlucHV0cyB1c2UgY3JlYXRlQXJyYXlGcm9tTWl4ZWQuXG5c
dCAqXG5cdCAqIEBwYXJhbSB7b2JqZWN0fGZ1bmN0aW9ufGZpbGVsaXN0fSBvYmpcblx0ICogQHJl
dHVybiB7YXJyYXl9XG5cdCAqL1xuXHRmdW5jdGlvbiB0b0FycmF5KG9iaikge1xuXHQgIHZhciBs
ZW5ndGggPSBvYmoubGVuZ3RoO1xuXHRcblx0ICAvLyBTb21lIGJyb3dzZXJzIGJ1aWx0aW4gb2Jq
ZWN0cyBjYW4gcmVwb3J0IHR5cGVvZiAnZnVuY3Rpb24nIChlLmcuIE5vZGVMaXN0XG5cdCAgLy8g
aW4gb2xkIHZlcnNpb25zIG9mIFNhZmFyaSkuXG5cdCAgISghQXJyYXkuaXNBcnJheShvYmopICYm
ICh0eXBlb2Ygb2JqID09PSAnb2JqZWN0JyB8fCB0eXBlb2Ygb2JqID09PSAnZnVuY3Rpb24nKSkg
PyAgZmFsc2UgPyBpbnZhcmlhbnQoZmFsc2UsICd0b0FycmF5OiBBcnJheS1saWtlIG9iamVjdCBl
eHBlY3RlZCcpIDogaW52YXJpYW50KGZhbHNlKSA6IHZvaWQgMDtcblx0XG5cdCAgISh0eXBlb2Yg
bGVuZ3RoID09PSAnbnVtYmVyJykgPyAgZmFsc2UgPyBpbnZhcmlhbnQoZmFsc2UsICd0b0FycmF5
OiBPYmplY3QgbmVlZHMgYSBsZW5ndGggcHJvcGVydHknKSA6IGludmFyaWFudChmYWxzZSkgOiB2
b2lkIDA7XG5cdFxuXHQgICEobGVuZ3RoID09PSAwIHx8IGxlbmd0aCAtIDEgaW4gb2JqKSA/ICBm
YWxzZSA/IGludmFyaWFudChmYWxzZSwgJ3RvQXJyYXk6IE9iamVjdCBzaG91bGQgaGF2ZSBrZXlz
IGZvciBpbmRpY2VzJykgOiBpbnZhcmlhbnQoZmFsc2UpIDogdm9pZCAwO1xuXHRcblx0ICAhKHR5
cGVvZiBvYmouY2FsbGVlICE9PSAnZnVuY3Rpb24nKSA/ICBmYWxzZSA/IGludmFyaWFudChmYWxz
ZSwgJ3RvQXJyYXk6IE9iamVjdCBjYW5cXCd0IGJlIGBhcmd1bWVudHNgLiBVc2UgcmVzdCBwYXJh
bXMgJyArICcoZnVuY3Rpb24oLi4uYXJncykge30pIG9yIEFycmF5LmZyb20oKSBpbnN0ZWFkLicp
IDogaW52YXJpYW50KGZhbHNlKSA6IHZvaWQgMDtcblx0XG5cdCAgLy8gT2xkIElFIGRvZXNuJ3Qg
Z2l2ZSBjb2xsZWN0aW9ucyBhY2Nlc3MgdG8gaGFzT3duUHJvcGVydHkuIEFzc3VtZSBpbnB1dHNc
blx0ICAvLyB3aXRob3V0IG1ldGhvZCB3aWxsIHRocm93IGR1cmluZyB0aGUgc2xpY2UgY2FsbCBh
bmQgc2tpcCBzdHJhaWdodCB0byB0aGVcblx0ICAvLyBmYWxsYmFjay5cblx0ICBpZiAob2JqLmhh
c093blByb3BlcnR5KSB7XG5cdCAgICB0cnkge1xuXHQgICAgICByZXR1cm4gQXJyYXkucHJvdG90
eXBlLnNsaWNlLmNhbGwob2JqKTtcblx0ICAgIH0gY2F0Y2ggKGUpIHtcblx0ICAgICAgLy8gSUUg
PCA5IGRvZXMgbm90IHN1cHBvcnQgQXJyYXkjc2xpY2Ugb24gY29sbGVjdGlvbnMgb2JqZWN0c1xu
XHQgICAgfVxuXHQgIH1cblx0XG5cdCAgLy8gRmFsbCBiYWNrIHRvIGNvcHlpbmcga2V5IGJ5IGtl
eS4gVGhpcyBhc3N1bWVzIGFsbCBrZXlzIGhhdmUgYSB2YWx1ZSxcblx0ICAvLyBzbyB3aWxsIG5v
dCBwcmVzZXJ2ZSBzcGFyc2VseSBwb3B1bGF0ZWQgaW5wdXRzLlxuXHQgIHZhciByZXQgPSBBcnJh
eShsZW5ndGgpO1xuXHQgIGZvciAodmFyIGlpID0gMDsgaWkgPCBsZW5ndGg7IGlpKyspIHtcblx0
ICAgIHJldFtpaV0gPSBvYmpbaWldO1xuXHQgIH1cblx0ICByZXR1cm4gcmV0O1xuXHR9XG5cdFxu
XHQvKipcblx0ICogUGVyZm9ybSBhIGhldXJpc3RpYyB0ZXN0IHRvIGRldGVybWluZSBpZiBhbiBv
YmplY3QgaXMgXCJhcnJheS1saWtlXCIuXG5cdCAqXG5cdCAqICAgQSBtb25rIGFza2VkIEpvc2h1
LCBhIFplbiBtYXN0ZXIsIFwiSGFzIGEgZG9nIEJ1ZGRoYSBuYXR1cmU/XCJcblx0ICogICBKb3No
dSByZXBsaWVkOiBcIk11LlwiXG5cdCAqXG5cdCAqIFRoaXMgZnVuY3Rpb24gZGV0ZXJtaW5lcyBp
ZiBpdHMgYXJndW1lbnQgaGFzIFwiYXJyYXkgbmF0dXJlXCI6IGl0IHJldHVybnNcblx0ICogdHJ1
ZSBpZiB0aGUgYXJndW1lbnQgaXMgYW4gYWN0dWFsIGFycmF5LCBhbiBgYXJndW1lbnRzJyBvYmpl
Y3QsIG9yIGFuXG5cdCAqIEhUTUxDb2xsZWN0aW9uIChlLmcuIG5vZGUuY2hpbGROb2RlcyBvciBu
b2RlLmdldEVsZW1lbnRzQnlUYWdOYW1lKCkpLlxuXHQgKlxuXHQgKiBJdCB3aWxsIHJldHVybiBm
YWxzZSBmb3Igb3RoZXIgYXJyYXktbGlrZSBvYmplY3RzIGxpa2UgRmlsZWxpc3QuXG5cdCAqXG5c
dCAqIEBwYXJhbSB7Kn0gb2JqXG5cdCAqIEByZXR1cm4ge2Jvb2xlYW59XG5cdCAqL1xuXHRmdW5j
dGlvbiBoYXNBcnJheU5hdHVyZShvYmopIHtcblx0ICByZXR1cm4gKFxuXHQgICAgLy8gbm90IG51
bGwvZmFsc2Vcblx0ICAgICEhb2JqICYmIChcblx0ICAgIC8vIGFycmF5cyBhcmUgb2JqZWN0cywg
Tm9kZUxpc3RzIGFyZSBmdW5jdGlvbnMgaW4gU2FmYXJpXG5cdCAgICB0eXBlb2Ygb2JqID09ICdv
YmplY3QnIHx8IHR5cGVvZiBvYmogPT0gJ2Z1bmN0aW9uJykgJiZcblx0ICAgIC8vIHF1YWNrcyBs
aWtlIGFuIGFycmF5XG5cdCAgICAnbGVuZ3RoJyBpbiBvYmogJiZcblx0ICAgIC8vIG5vdCB3aW5k
b3dcblx0ICAgICEoJ3NldEludGVydmFsJyBpbiBvYmopICYmXG5cdCAgICAvLyBubyBET00gbm9k
ZSBzaG91bGQgYmUgY29uc2lkZXJlZCBhbiBhcnJheS1saWtlXG5cdCAgICAvLyBhICdzZWxlY3Qn
IGVsZW1lbnQgaGFzICdsZW5ndGgnIGFuZCAnaXRlbScgcHJvcGVydGllcyBvbiBJRThcblx0ICAg
IHR5cGVvZiBvYmoubm9kZVR5cGUgIT0gJ251bWJlcicgJiYgKFxuXHQgICAgLy8gYSByZWFsIGFy
cmF5XG5cdCAgICBBcnJheS5pc0FycmF5KG9iaikgfHxcblx0ICAgIC8vIGFyZ3VtZW50c1xuXHQg
ICAgJ2NhbGxlZScgaW4gb2JqIHx8XG5cdCAgICAvLyBIVE1MQ29sbGVjdGlvbi9Ob2RlTGlzdFxu
XHQgICAgJ2l0ZW0nIGluIG9iailcblx0ICApO1xuXHR9XG5cdFxuXHQvKipcblx0ICogRW5zdXJl
IHRoYXQgdGhlIGFyZ3VtZW50IGlzIGFuIGFycmF5IGJ5IHdyYXBwaW5nIGl0IGluIGFuIGFycmF5
IGlmIGl0IGlzIG5vdC5cblx0ICogQ3JlYXRlcyBhIGNvcHkgb2YgdGhlIGFyZ3VtZW50IGlmIGl0
IGlzIGFscmVhZHkgYW4gYXJyYXkuXG5cdCAqXG5cdCAqIFRoaXMgaXMgbW9zdGx5IHVzZWZ1bCBp
ZGlvbWF0aWNhbGx5OlxuXHQgKlxuXHQgKiAgIHZhciBjcmVhdGVBcnJheUZyb21NaXhlZCA9IHJl
cXVpcmUoJ2NyZWF0ZUFycmF5RnJvbU1peGVkJyk7XG5cdCAqXG5cdCAqICAgZnVuY3Rpb24gdGFr
ZXNPbmVPck1vcmVUaGluZ3ModGhpbmdzKSB7XG5cdCAqICAgICB0aGluZ3MgPSBjcmVhdGVBcnJh
eUZyb21NaXhlZCh0aGluZ3MpO1xuXHQgKiAgICAgLi4uXG5cdCAqICAgfVxuXHQgKlxuXHQgKiBU
aGlzIGFsbG93cyB5b3UgdG8gdHJlYXQgYHRoaW5ncycgYXMgYW4gYXJyYXksIGJ1dCBhY2NlcHQg
c2NhbGFycyBpbiB0aGUgQVBJLlxuXHQgKlxuXHQgKiBJZiB5b3UgbmVlZCB0byBjb252ZXJ0IGFu
IGFycmF5LWxpa2Ugb2JqZWN0LCBsaWtlIGBhcmd1bWVudHNgLCBpbnRvIGFuIGFycmF5XG5cdCAq
IHVzZSB0b0FycmF5IGluc3RlYWQuXG5cdCAqXG5cdCAqIEBwYXJhbSB7Kn0gb2JqXG5cdCAqIEBy
ZXR1cm4ge2FycmF5fVxuXHQgKi9cblx0ZnVuY3Rpb24gY3JlYXRlQXJyYXlGcm9tTWl4ZWQob2Jq
KSB7XG5cdCAgaWYgKCFoYXNBcnJheU5hdHVyZShvYmopKSB7XG5cdCAgICByZXR1cm4gW29ial07
XG5cdCAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KG9iaikpIHtcblx0ICAgIHJldHVybiBvYmou
c2xpY2UoKTtcblx0ICB9IGVsc2Uge1xuXHQgICAgcmV0dXJuIHRvQXJyYXkob2JqKTtcblx0ICB9
XG5cdH1cblx0XG5cdG1vZHVsZS5leHBvcnRzID0gY3JlYXRlQXJyYXlGcm9tTWl4ZWQ7XG5cbi8q
KiovIH0sXG4vKiAxMDIgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJw
YWNrX3JlcXVpcmVfXykge1xuXG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdC8qKlxuXHQgKiBDb3B5
cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyBy
ZXNlcnZlZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0
aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0
aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFu
dFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxl
IGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpcblx0ICogQHR5cGVjaGVja3Ncblx0ICovXG5c
dFxuXHQvKmVzbGludC1kaXNhYmxlIGZiLXd3dy91bnNhZmUtaHRtbCovXG5cdFxuXHR2YXIgRXhl
Y3V0aW9uRW52aXJvbm1lbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDYpO1xuXHRcblx0dmFyIGNy
ZWF0ZUFycmF5RnJvbU1peGVkID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMDEpO1xuXHR2YXIgZ2V0
TWFya3VwV3JhcCA9IF9fd2VicGFja19yZXF1aXJlX18oMTAzKTtcblx0dmFyIGludmFyaWFudCA9
IF9fd2VicGFja19yZXF1aXJlX18oMSk7XG5cdFxuXHQvKipcblx0ICogRHVtbXkgY29udGFpbmVy
IHVzZWQgdG8gcmVuZGVyIGFsbCBtYXJrdXAuXG5cdCAqL1xuXHR2YXIgZHVtbXlOb2RlID0gRXhl
Y3V0aW9uRW52aXJvbm1lbnQuY2FuVXNlRE9NID8gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2
JykgOiBudWxsO1xuXHRcblx0LyoqXG5cdCAqIFBhdHRlcm4gdXNlZCBieSBgZ2V0Tm9kZU5hbWVg
LlxuXHQgKi9cblx0dmFyIG5vZGVOYW1lUGF0dGVybiA9IC9eXFxzKjwoXFx3KykvO1xuXHRcblx0
LyoqXG5cdCAqIEV4dHJhY3RzIHRoZSBgbm9kZU5hbWVgIG9mIHRoZSBmaXJzdCBlbGVtZW50IGlu
IGEgc3RyaW5nIG9mIG1hcmt1cC5cblx0ICpcblx0ICogQHBhcmFtIHtzdHJpbmd9IG1hcmt1cCBT
dHJpbmcgb2YgbWFya3VwLlxuXHQgKiBAcmV0dXJuIHs/c3RyaW5nfSBOb2RlIG5hbWUgb2YgdGhl
IHN1cHBsaWVkIG1hcmt1cC5cblx0ICovXG5cdGZ1bmN0aW9uIGdldE5vZGVOYW1lKG1hcmt1cCkg
e1xuXHQgIHZhciBub2RlTmFtZU1hdGNoID0gbWFya3VwLm1hdGNoKG5vZGVOYW1lUGF0dGVybik7
XG5cdCAgcmV0dXJuIG5vZGVOYW1lTWF0Y2ggJiYgbm9kZU5hbWVNYXRjaFsxXS50b0xvd2VyQ2Fz
ZSgpO1xuXHR9XG5cdFxuXHQvKipcblx0ICogQ3JlYXRlcyBhbiBhcnJheSBjb250YWluaW5nIHRo
ZSBub2RlcyByZW5kZXJlZCBmcm9tIHRoZSBzdXBwbGllZCBtYXJrdXAuIFRoZVxuXHQgKiBvcHRp
b25hbGx5IHN1cHBsaWVkIGBoYW5kbGVTY3JpcHRgIGZ1bmN0aW9uIHdpbGwgYmUgaW52b2tlZCBv
bmNlIGZvciBlYWNoXG5cdCAqIDxzY3JpcHQ+IGVsZW1lbnQgdGhhdCBpcyByZW5kZXJlZC4gSWYg
bm8gYGhhbmRsZVNjcmlwdGAgZnVuY3Rpb24gaXMgc3VwcGxpZWQsXG5cdCAqIGFuIGV4Y2VwdGlv
biBpcyB0aHJvd24gaWYgYW55IDxzY3JpcHQ+IGVsZW1lbnRzIGFyZSByZW5kZXJlZC5cblx0ICpc
blx0ICogQHBhcmFtIHtzdHJpbmd9IG1hcmt1cCBBIHN0cmluZyBvZiB2YWxpZCBIVE1MIG1hcmt1
cC5cblx0ICogQHBhcmFtIHs/ZnVuY3Rpb259IGhhbmRsZVNjcmlwdCBJbnZva2VkIG9uY2UgZm9y
IGVhY2ggcmVuZGVyZWQgPHNjcmlwdD4uXG5cdCAqIEByZXR1cm4ge2FycmF5PERPTUVsZW1lbnR8
RE9NVGV4dE5vZGU+fSBBbiBhcnJheSBvZiByZW5kZXJlZCBub2Rlcy5cblx0ICovXG5cdGZ1bmN0
aW9uIGNyZWF0ZU5vZGVzRnJvbU1hcmt1cChtYXJrdXAsIGhhbmRsZVNjcmlwdCkge1xuXHQgIHZh
ciBub2RlID0gZHVtbXlOb2RlO1xuXHQgICEhIWR1bW15Tm9kZSA/ICBmYWxzZSA/IGludmFyaWFu
dChmYWxzZSwgJ2NyZWF0ZU5vZGVzRnJvbU1hcmt1cCBkdW1teSBub3QgaW5pdGlhbGl6ZWQnKSA6
IGludmFyaWFudChmYWxzZSkgOiB2b2lkIDA7XG5cdCAgdmFyIG5vZGVOYW1lID0gZ2V0Tm9kZU5h
bWUobWFya3VwKTtcblx0XG5cdCAgdmFyIHdyYXAgPSBub2RlTmFtZSAmJiBnZXRNYXJrdXBXcmFw
KG5vZGVOYW1lKTtcblx0ICBpZiAod3JhcCkge1xuXHQgICAgbm9kZS5pbm5lckhUTUwgPSB3cmFw
WzFdICsgbWFya3VwICsgd3JhcFsyXTtcblx0XG5cdCAgICB2YXIgd3JhcERlcHRoID0gd3JhcFsw
XTtcblx0ICAgIHdoaWxlICh3cmFwRGVwdGgtLSkge1xuXHQgICAgICBub2RlID0gbm9kZS5sYXN0
Q2hpbGQ7XG5cdCAgICB9XG5cdCAgfSBlbHNlIHtcblx0ICAgIG5vZGUuaW5uZXJIVE1MID0gbWFy
a3VwO1xuXHQgIH1cblx0XG5cdCAgdmFyIHNjcmlwdHMgPSBub2RlLmdldEVsZW1lbnRzQnlUYWdO
YW1lKCdzY3JpcHQnKTtcblx0ICBpZiAoc2NyaXB0cy5sZW5ndGgpIHtcblx0ICAgICFoYW5kbGVT
Y3JpcHQgPyAgZmFsc2UgPyBpbnZhcmlhbnQoZmFsc2UsICdjcmVhdGVOb2Rlc0Zyb21NYXJrdXAo
Li4uKTogVW5leHBlY3RlZCA8c2NyaXB0PiBlbGVtZW50IHJlbmRlcmVkLicpIDogaW52YXJpYW50
KGZhbHNlKSA6IHZvaWQgMDtcblx0ICAgIGNyZWF0ZUFycmF5RnJvbU1peGVkKHNjcmlwdHMpLmZv
ckVhY2goaGFuZGxlU2NyaXB0KTtcblx0ICB9XG5cdFxuXHQgIHZhciBub2RlcyA9IEFycmF5LmZy
b20obm9kZS5jaGlsZE5vZGVzKTtcblx0ICB3aGlsZSAobm9kZS5sYXN0Q2hpbGQpIHtcblx0ICAg
IG5vZGUucmVtb3ZlQ2hpbGQobm9kZS5sYXN0Q2hpbGQpO1xuXHQgIH1cblx0ICByZXR1cm4gbm9k
ZXM7XG5cdH1cblx0XG5cdG1vZHVsZS5leHBvcnRzID0gY3JlYXRlTm9kZXNGcm9tTWFya3VwO1xu
XG4vKioqLyB9LFxuLyogMTAzICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9f
d2VicGFja19yZXF1aXJlX18pIHtcblxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHQvKipcblx0ICog
Q29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5k
ZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUg
aW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwg
Z3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMg
ZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqL1xuXHRcblx0Lyplc2xpbnQt
ZGlzYWJsZSBmYi13d3cvdW5zYWZlLWh0bWwgKi9cblx0XG5cdHZhciBFeGVjdXRpb25FbnZpcm9u
bWVudCA9IF9fd2VicGFja19yZXF1aXJlX18oNik7XG5cdFxuXHR2YXIgaW52YXJpYW50ID0gX193
ZWJwYWNrX3JlcXVpcmVfXygxKTtcblx0XG5cdC8qKlxuXHQgKiBEdW1teSBjb250YWluZXIgdXNl
ZCB0byBkZXRlY3Qgd2hpY2ggd3JhcHMgYXJlIG5lY2Vzc2FyeS5cblx0ICovXG5cdHZhciBkdW1t
eU5vZGUgPSBFeGVjdXRpb25FbnZpcm9ubWVudC5jYW5Vc2VET00gPyBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCdkaXYnKSA6IG51bGw7XG5cdFxuXHQvKipcblx0ICogU29tZSBicm93c2VycyBjYW5u
b3QgdXNlIGBpbm5lckhUTUxgIHRvIHJlbmRlciBjZXJ0YWluIGVsZW1lbnRzIHN0YW5kYWxvbmUs
XG5cdCAqIHNvIHdlIHdyYXAgdGhlbSwgcmVuZGVyIHRoZSB3cmFwcGVkIG5vZGVzLCB0aGVuIGV4
dHJhY3QgdGhlIGRlc2lyZWQgbm9kZS5cblx0ICpcblx0ICogSW4gSUU4LCBjZXJ0YWluIGVsZW1l
bnRzIGNhbm5vdCByZW5kZXIgYWxvbmUsIHNvIHdyYXAgYWxsIGVsZW1lbnRzICgnKicpLlxuXHQg
Ki9cblx0XG5cdHZhciBzaG91bGRXcmFwID0ge307XG5cdFxuXHR2YXIgc2VsZWN0V3JhcCA9IFsx
LCAnPHNlbGVjdCBtdWx0aXBsZT1cInRydWVcIj4nLCAnPC9zZWxlY3Q+J107XG5cdHZhciB0YWJs
ZVdyYXAgPSBbMSwgJzx0YWJsZT4nLCAnPC90YWJsZT4nXTtcblx0dmFyIHRyV3JhcCA9IFszLCAn
PHRhYmxlPjx0Ym9keT48dHI+JywgJzwvdHI+PC90Ym9keT48L3RhYmxlPiddO1xuXHRcblx0dmFy
IHN2Z1dyYXAgPSBbMSwgJzxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wi
PicsICc8L3N2Zz4nXTtcblx0XG5cdHZhciBtYXJrdXBXcmFwID0ge1xuXHQgICcqJzogWzEsICc/
PGRpdj4nLCAnPC9kaXY+J10sXG5cdFxuXHQgICdhcmVhJzogWzEsICc8bWFwPicsICc8L21hcD4n
XSxcblx0ICAnY29sJzogWzIsICc8dGFibGU+PHRib2R5PjwvdGJvZHk+PGNvbGdyb3VwPicsICc8
L2NvbGdyb3VwPjwvdGFibGU+J10sXG5cdCAgJ2xlZ2VuZCc6IFsxLCAnPGZpZWxkc2V0PicsICc8
L2ZpZWxkc2V0PiddLFxuXHQgICdwYXJhbSc6IFsxLCAnPG9iamVjdD4nLCAnPC9vYmplY3Q+J10s
XG5cdCAgJ3RyJzogWzIsICc8dGFibGU+PHRib2R5PicsICc8L3Rib2R5PjwvdGFibGU+J10sXG5c
dFxuXHQgICdvcHRncm91cCc6IHNlbGVjdFdyYXAsXG5cdCAgJ29wdGlvbic6IHNlbGVjdFdyYXAs
XG5cdFxuXHQgICdjYXB0aW9uJzogdGFibGVXcmFwLFxuXHQgICdjb2xncm91cCc6IHRhYmxlV3Jh
cCxcblx0ICAndGJvZHknOiB0YWJsZVdyYXAsXG5cdCAgJ3Rmb290JzogdGFibGVXcmFwLFxuXHQg
ICd0aGVhZCc6IHRhYmxlV3JhcCxcblx0XG5cdCAgJ3RkJzogdHJXcmFwLFxuXHQgICd0aCc6IHRy
V3JhcFxuXHR9O1xuXHRcblx0Ly8gSW5pdGlhbGl6ZSB0aGUgU1ZHIGVsZW1lbnRzIHNpbmNlIHdl
IGtub3cgdGhleSdsbCBhbHdheXMgbmVlZCB0byBiZSB3cmFwcGVkXG5cdC8vIGNvbnNpc3RlbnRs
eS4gSWYgdGhleSBhcmUgY3JlYXRlZCBpbnNpZGUgYSA8ZGl2PiB0aGV5IHdpbGwgYmUgaW5pdGlh
bGl6ZWQgaW5cblx0Ly8gdGhlIHdyb25nIG5hbWVzcGFjZSAoYW5kIHdpbGwgbm90IGRpc3BsYXkp
LlxuXHR2YXIgc3ZnRWxlbWVudHMgPSBbJ2NpcmNsZScsICdjbGlwUGF0aCcsICdkZWZzJywgJ2Vs
bGlwc2UnLCAnZycsICdpbWFnZScsICdsaW5lJywgJ2xpbmVhckdyYWRpZW50JywgJ21hc2snLCAn
cGF0aCcsICdwYXR0ZXJuJywgJ3BvbHlnb24nLCAncG9seWxpbmUnLCAncmFkaWFsR3JhZGllbnQn
LCAncmVjdCcsICdzdG9wJywgJ3RleHQnLCAndHNwYW4nXTtcblx0c3ZnRWxlbWVudHMuZm9yRWFj
aChmdW5jdGlvbiAobm9kZU5hbWUpIHtcblx0ICBtYXJrdXBXcmFwW25vZGVOYW1lXSA9IHN2Z1dy
YXA7XG5cdCAgc2hvdWxkV3JhcFtub2RlTmFtZV0gPSB0cnVlO1xuXHR9KTtcblx0XG5cdC8qKlxu
XHQgKiBHZXRzIHRoZSBtYXJrdXAgd3JhcCBjb25maWd1cmF0aW9uIGZvciB0aGUgc3VwcGxpZWQg
YG5vZGVOYW1lYC5cblx0ICpcblx0ICogTk9URTogVGhpcyBsYXppbHkgZGV0ZWN0cyB3aGljaCB3
cmFwcyBhcmUgbmVjZXNzYXJ5IGZvciB0aGUgY3VycmVudCBicm93c2VyLlxuXHQgKlxuXHQgKiBA
cGFyYW0ge3N0cmluZ30gbm9kZU5hbWUgTG93ZXJjYXNlIGBub2RlTmFtZWAuXG5cdCAqIEByZXR1
cm4gez9hcnJheX0gTWFya3VwIHdyYXAgY29uZmlndXJhdGlvbiwgaWYgYXBwbGljYWJsZS5cblx0
ICovXG5cdGZ1bmN0aW9uIGdldE1hcmt1cFdyYXAobm9kZU5hbWUpIHtcblx0ICAhISFkdW1teU5v
ZGUgPyAgZmFsc2UgPyBpbnZhcmlhbnQoZmFsc2UsICdNYXJrdXAgd3JhcHBpbmcgbm9kZSBub3Qg
aW5pdGlhbGl6ZWQnKSA6IGludmFyaWFudChmYWxzZSkgOiB2b2lkIDA7XG5cdCAgaWYgKCFtYXJr
dXBXcmFwLmhhc093blByb3BlcnR5KG5vZGVOYW1lKSkge1xuXHQgICAgbm9kZU5hbWUgPSAnKic7
XG5cdCAgfVxuXHQgIGlmICghc2hvdWxkV3JhcC5oYXNPd25Qcm9wZXJ0eShub2RlTmFtZSkpIHtc
blx0ICAgIGlmIChub2RlTmFtZSA9PT0gJyonKSB7XG5cdCAgICAgIGR1bW15Tm9kZS5pbm5lckhU
TUwgPSAnPGxpbmsgLz4nO1xuXHQgICAgfSBlbHNlIHtcblx0ICAgICAgZHVtbXlOb2RlLmlubmVy
SFRNTCA9ICc8JyArIG5vZGVOYW1lICsgJz48LycgKyBub2RlTmFtZSArICc+Jztcblx0ICAgIH1c
blx0ICAgIHNob3VsZFdyYXBbbm9kZU5hbWVdID0gIWR1bW15Tm9kZS5maXJzdENoaWxkO1xuXHQg
IH1cblx0ICByZXR1cm4gc2hvdWxkV3JhcFtub2RlTmFtZV0gPyBtYXJrdXBXcmFwW25vZGVOYW1l
XSA6IG51bGw7XG5cdH1cblx0XG5cdG1vZHVsZS5leHBvcnRzID0gZ2V0TWFya3VwV3JhcDtcblxu
LyoqKi8gfSxcbi8qIDEwNCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5c
blx0LyoqXG5cdCAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxu
XHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlz
IGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICog
TElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBB
biBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGlu
IHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKiBAdHlw
ZWNoZWNrc1xuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdC8qKlxuXHQgKiBHZXRz
IHRoZSBzY3JvbGwgcG9zaXRpb24gb2YgdGhlIHN1cHBsaWVkIGVsZW1lbnQgb3Igd2luZG93Llxu
XHQgKlxuXHQgKiBUaGUgcmV0dXJuIHZhbHVlcyBhcmUgdW5ib3VuZGVkLCB1bmxpa2UgYGdldFNj
cm9sbFBvc2l0aW9uYC4gVGhpcyBtZWFucyB0aGV5XG5cdCAqIG1heSBiZSBuZWdhdGl2ZSBvciBl
eGNlZWQgdGhlIGVsZW1lbnQgYm91bmRhcmllcyAod2hpY2ggaXMgcG9zc2libGUgdXNpbmdcblx0
ICogaW5lcnRpYWwgc2Nyb2xsaW5nKS5cblx0ICpcblx0ICogQHBhcmFtIHtET01XaW5kb3d8RE9N
RWxlbWVudH0gc2Nyb2xsYWJsZVxuXHQgKiBAcmV0dXJuIHtvYmplY3R9IE1hcCB3aXRoIGB4YCBh
bmQgYHlgIGtleXMuXG5cdCAqL1xuXHRcblx0ZnVuY3Rpb24gZ2V0VW5ib3VuZGVkU2Nyb2xsUG9z
aXRpb24oc2Nyb2xsYWJsZSkge1xuXHQgIGlmIChzY3JvbGxhYmxlLldpbmRvdyAmJiBzY3JvbGxh
YmxlIGluc3RhbmNlb2Ygc2Nyb2xsYWJsZS5XaW5kb3cpIHtcblx0ICAgIHJldHVybiB7XG5cdCAg
ICAgIHg6IHNjcm9sbGFibGUucGFnZVhPZmZzZXQgfHwgc2Nyb2xsYWJsZS5kb2N1bWVudC5kb2N1
bWVudEVsZW1lbnQuc2Nyb2xsTGVmdCxcblx0ICAgICAgeTogc2Nyb2xsYWJsZS5wYWdlWU9mZnNl
dCB8fCBzY3JvbGxhYmxlLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3Bcblx0ICAg
IH07XG5cdCAgfVxuXHQgIHJldHVybiB7XG5cdCAgICB4OiBzY3JvbGxhYmxlLnNjcm9sbExlZnQs
XG5cdCAgICB5OiBzY3JvbGxhYmxlLnNjcm9sbFRvcFxuXHQgIH07XG5cdH1cblx0XG5cdG1vZHVs
ZS5leHBvcnRzID0gZ2V0VW5ib3VuZGVkU2Nyb2xsUG9zaXRpb247XG5cbi8qKiovIH0sXG4vKiAx
MDUgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5cdCd1c2Ugc3RyaWN0
Jztcblx0XG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ss
IEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2Ug
Y29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhl
XG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2Ug
dHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBm
b3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpcblx0
ICogQHR5cGVjaGVja3Ncblx0ICovXG5cdFxuXHR2YXIgX3VwcGVyY2FzZVBhdHRlcm4gPSAvKFtB
LVpdKS9nO1xuXHRcblx0LyoqXG5cdCAqIEh5cGhlbmF0ZXMgYSBjYW1lbGNhc2VkIHN0cmluZywg
Zm9yIGV4YW1wbGU6XG5cdCAqXG5cdCAqICAgPiBoeXBoZW5hdGUoJ2JhY2tncm91bmRDb2xvcicp
XG5cdCAqICAgPCBcImJhY2tncm91bmQtY29sb3JcIlxuXHQgKlxuXHQgKiBGb3IgQ1NTIHN0eWxl
IG5hbWVzLCB1c2UgYGh5cGhlbmF0ZVN0eWxlTmFtZWAgaW5zdGVhZCB3aGljaCB3b3JrcyBwcm9w
ZXJseVxuXHQgKiB3aXRoIGFsbCB2ZW5kb3IgcHJlZml4ZXMsIGluY2x1ZGluZyBgbXNgLlxuXHQg
KlxuXHQgKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nXG5cdCAqIEByZXR1cm4ge3N0cmluZ31cblx0
ICovXG5cdGZ1bmN0aW9uIGh5cGhlbmF0ZShzdHJpbmcpIHtcblx0ICByZXR1cm4gc3RyaW5nLnJl
cGxhY2UoX3VwcGVyY2FzZVBhdHRlcm4sICctJDEnKS50b0xvd2VyQ2FzZSgpO1xuXHR9XG5cdFxu
XHRtb2R1bGUuZXhwb3J0cyA9IGh5cGhlbmF0ZTtcblxuLyoqKi8gfSxcbi8qIDEwNiAqL1xuLyoq
Ki8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0
LyoqXG5cdCAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQg
KiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxp
Y2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElD
RU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBh
ZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRo
ZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKiBAdHlwZWNo
ZWNrc1xuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdHZhciBoeXBoZW5hdGUgPSBf
X3dlYnBhY2tfcmVxdWlyZV9fKDEwNSk7XG5cdFxuXHR2YXIgbXNQYXR0ZXJuID0gL15tcy0vO1xu
XHRcblx0LyoqXG5cdCAqIEh5cGhlbmF0ZXMgYSBjYW1lbGNhc2VkIENTUyBwcm9wZXJ0eSBuYW1l
LCBmb3IgZXhhbXBsZTpcblx0ICpcblx0ICogICA+IGh5cGhlbmF0ZVN0eWxlTmFtZSgnYmFja2dy
b3VuZENvbG9yJylcblx0ICogICA8IFwiYmFja2dyb3VuZC1jb2xvclwiXG5cdCAqICAgPiBoeXBo
ZW5hdGVTdHlsZU5hbWUoJ01velRyYW5zaXRpb24nKVxuXHQgKiAgIDwgXCItbW96LXRyYW5zaXRp
b25cIlxuXHQgKiAgID4gaHlwaGVuYXRlU3R5bGVOYW1lKCdtc1RyYW5zaXRpb24nKVxuXHQgKiAg
IDwgXCItbXMtdHJhbnNpdGlvblwiXG5cdCAqXG5cdCAqIEFzIE1vZGVybml6ciBzdWdnZXN0cyAo
aHR0cDovL21vZGVybml6ci5jb20vZG9jcy8jcHJlZml4ZWQpLCBhbiBgbXNgIHByZWZpeFxuXHQg
KiBpcyBjb252ZXJ0ZWQgdG8gYC1tcy1gLlxuXHQgKlxuXHQgKiBAcGFyYW0ge3N0cmluZ30gc3Ry
aW5nXG5cdCAqIEByZXR1cm4ge3N0cmluZ31cblx0ICovXG5cdGZ1bmN0aW9uIGh5cGhlbmF0ZVN0
eWxlTmFtZShzdHJpbmcpIHtcblx0ICByZXR1cm4gaHlwaGVuYXRlKHN0cmluZykucmVwbGFjZSht
c1BhdHRlcm4sICctbXMtJyk7XG5cdH1cblx0XG5cdG1vZHVsZS5leHBvcnRzID0gaHlwaGVuYXRl
U3R5bGVOYW1lO1xuXG4vKioqLyB9LFxuLyogMTA3ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUs
IGV4cG9ydHMpIHtcblxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHQvKipcblx0ICogQ29weXJpZ2h0
IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2
ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJT
RC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJv
b3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0
ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0
aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqIEB0eXBlY2hlY2tzXG5cdCAqL1xuXHRcblx0
LyoqXG5cdCAqIEBwYXJhbSB7Kn0gb2JqZWN0IFRoZSBvYmplY3QgdG8gY2hlY2suXG5cdCAqIEBy
ZXR1cm4ge2Jvb2xlYW59IFdoZXRoZXIgb3Igbm90IHRoZSBvYmplY3QgaXMgYSBET00gbm9kZS5c
blx0ICovXG5cdGZ1bmN0aW9uIGlzTm9kZShvYmplY3QpIHtcblx0ICB2YXIgZG9jID0gb2JqZWN0
ID8gb2JqZWN0Lm93bmVyRG9jdW1lbnQgfHwgb2JqZWN0IDogZG9jdW1lbnQ7XG5cdCAgdmFyIGRl
ZmF1bHRWaWV3ID0gZG9jLmRlZmF1bHRWaWV3IHx8IHdpbmRvdztcblx0ICByZXR1cm4gISEob2Jq
ZWN0ICYmICh0eXBlb2YgZGVmYXVsdFZpZXcuTm9kZSA9PT0gJ2Z1bmN0aW9uJyA/IG9iamVjdCBp
bnN0YW5jZW9mIGRlZmF1bHRWaWV3Lk5vZGUgOiB0eXBlb2Ygb2JqZWN0ID09PSAnb2JqZWN0JyAm
JiB0eXBlb2Ygb2JqZWN0Lm5vZGVUeXBlID09PSAnbnVtYmVyJyAmJiB0eXBlb2Ygb2JqZWN0Lm5v
ZGVOYW1lID09PSAnc3RyaW5nJykpO1xuXHR9XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IGlzTm9k
ZTtcblxuLyoqKi8gfSxcbi8qIDEwOCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRz
LCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0LyoqXG5c
dCAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwg
cmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2Vk
IHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBm
aWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlv
bmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRF
TlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKiBAdHlwZWNoZWNrc1xu
XHQgKi9cblx0XG5cdHZhciBpc05vZGUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEwNyk7XG5cdFxu
XHQvKipcblx0ICogQHBhcmFtIHsqfSBvYmplY3QgVGhlIG9iamVjdCB0byBjaGVjay5cblx0ICog
QHJldHVybiB7Ym9vbGVhbn0gV2hldGhlciBvciBub3QgdGhlIG9iamVjdCBpcyBhIERPTSB0ZXh0
IG5vZGUuXG5cdCAqL1xuXHRmdW5jdGlvbiBpc1RleHROb2RlKG9iamVjdCkge1xuXHQgIHJldHVy
biBpc05vZGUob2JqZWN0KSAmJiBvYmplY3Qubm9kZVR5cGUgPT0gMztcblx0fVxuXHRcblx0bW9k
dWxlLmV4cG9ydHMgPSBpc1RleHROb2RlO1xuXG4vKioqLyB9LFxuLyogMTA5ICovXG4vKioqLyBm
dW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuXHQvKipcblx0ICogQ29weXJpZ2h0IChjKSAy
MDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5c
dCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHls
ZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGly
ZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2Yg
cGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2Ft
ZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqIFxuXHQgKiBAdHlwZWNoZWNrcyBzdGF0aWMtb25seVxu
XHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdC8qKlxuXHQgKiBNZW1vaXplcyB0aGUg
cmV0dXJuIHZhbHVlIG9mIGEgZnVuY3Rpb24gdGhhdCBhY2NlcHRzIG9uZSBzdHJpbmcgYXJndW1l
bnQuXG5cdCAqL1xuXHRcblx0ZnVuY3Rpb24gbWVtb2l6ZVN0cmluZ09ubHkoY2FsbGJhY2spIHtc
blx0ICB2YXIgY2FjaGUgPSB7fTtcblx0ICByZXR1cm4gZnVuY3Rpb24gKHN0cmluZykge1xuXHQg
ICAgaWYgKCFjYWNoZS5oYXNPd25Qcm9wZXJ0eShzdHJpbmcpKSB7XG5cdCAgICAgIGNhY2hlW3N0
cmluZ10gPSBjYWxsYmFjay5jYWxsKHRoaXMsIHN0cmluZyk7XG5cdCAgICB9XG5cdCAgICByZXR1
cm4gY2FjaGVbc3RyaW5nXTtcblx0ICB9O1xuXHR9XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IG1l
bW9pemVTdHJpbmdPbmx5O1xuXG4vKioqLyB9LFxuLyogMTEwICovXG4vKioqLyBmdW5jdGlvbiht
b2R1bGUsIGV4cG9ydHMpIHtcblxuXHQvKipcblx0ICogQ29weXJpZ2h0IDIwMTUsIFlhaG9vISBJ
bmMuXG5cdCAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE5ldyBCU0QgTGljZW5zZS4g
U2VlIHRoZSBhY2NvbXBhbnlpbmcgTElDRU5TRSBmaWxlIGZvciB0ZXJtcy5cblx0ICovXG5cdCd1
c2Ugc3RyaWN0Jztcblx0XG5cdHZhciBSRUFDVF9TVEFUSUNTID0ge1xuXHQgICAgY2hpbGRDb250
ZXh0VHlwZXM6IHRydWUsXG5cdCAgICBjb250ZXh0VHlwZXM6IHRydWUsXG5cdCAgICBkZWZhdWx0
UHJvcHM6IHRydWUsXG5cdCAgICBkaXNwbGF5TmFtZTogdHJ1ZSxcblx0ICAgIGdldERlZmF1bHRQ
cm9wczogdHJ1ZSxcblx0ICAgIG1peGluczogdHJ1ZSxcblx0ICAgIHByb3BUeXBlczogdHJ1ZSxc
blx0ICAgIHR5cGU6IHRydWVcblx0fTtcblx0XG5cdHZhciBLTk9XTl9TVEFUSUNTID0ge1xuXHQg
IG5hbWU6IHRydWUsXG5cdCAgbGVuZ3RoOiB0cnVlLFxuXHQgIHByb3RvdHlwZTogdHJ1ZSxcblx0
ICBjYWxsZXI6IHRydWUsXG5cdCAgY2FsbGVlOiB0cnVlLFxuXHQgIGFyZ3VtZW50czogdHJ1ZSxc
blx0ICBhcml0eTogdHJ1ZVxuXHR9O1xuXHRcblx0dmFyIGRlZmluZVByb3BlcnR5ID0gT2JqZWN0
LmRlZmluZVByb3BlcnR5O1xuXHR2YXIgZ2V0T3duUHJvcGVydHlOYW1lcyA9IE9iamVjdC5nZXRP
d25Qcm9wZXJ0eU5hbWVzO1xuXHR2YXIgZ2V0T3duUHJvcGVydHlTeW1ib2xzID0gT2JqZWN0Lmdl
dE93blByb3BlcnR5U3ltYm9scztcblx0dmFyIGdldE93blByb3BlcnR5RGVzY3JpcHRvciA9IE9i
amVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7XG5cdHZhciBnZXRQcm90b3R5cGVPZiA9IE9i
amVjdC5nZXRQcm90b3R5cGVPZjtcblx0dmFyIG9iamVjdFByb3RvdHlwZSA9IGdldFByb3RvdHlw
ZU9mICYmIGdldFByb3RvdHlwZU9mKE9iamVjdCk7XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IGZ1
bmN0aW9uIGhvaXN0Tm9uUmVhY3RTdGF0aWNzKHRhcmdldENvbXBvbmVudCwgc291cmNlQ29tcG9u
ZW50LCBibGFja2xpc3QpIHtcblx0ICAgIGlmICh0eXBlb2Ygc291cmNlQ29tcG9uZW50ICE9PSAn
c3RyaW5nJykgeyAvLyBkb24ndCBob2lzdCBvdmVyIHN0cmluZyAoaHRtbCkgY29tcG9uZW50c1xu
XHRcblx0ICAgICAgICBpZiAob2JqZWN0UHJvdG90eXBlKSB7XG5cdCAgICAgICAgICAgIHZhciBp
bmhlcml0ZWRDb21wb25lbnQgPSBnZXRQcm90b3R5cGVPZihzb3VyY2VDb21wb25lbnQpO1xuXHQg
ICAgICAgICAgICBpZiAoaW5oZXJpdGVkQ29tcG9uZW50ICYmIGluaGVyaXRlZENvbXBvbmVudCAh
PT0gb2JqZWN0UHJvdG90eXBlKSB7XG5cdCAgICAgICAgICAgICAgICBob2lzdE5vblJlYWN0U3Rh
dGljcyh0YXJnZXRDb21wb25lbnQsIGluaGVyaXRlZENvbXBvbmVudCwgYmxhY2tsaXN0KTtcblx0
ICAgICAgICAgICAgfVxuXHQgICAgICAgIH1cblx0XG5cdCAgICAgICAgdmFyIGtleXMgPSBnZXRP
d25Qcm9wZXJ0eU5hbWVzKHNvdXJjZUNvbXBvbmVudCk7XG5cdFxuXHQgICAgICAgIGlmIChnZXRP
d25Qcm9wZXJ0eVN5bWJvbHMpIHtcblx0ICAgICAgICAgICAga2V5cyA9IGtleXMuY29uY2F0KGdl
dE93blByb3BlcnR5U3ltYm9scyhzb3VyY2VDb21wb25lbnQpKTtcblx0ICAgICAgICB9XG5cdFxu
XHQgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7ICsraSkge1xuXHQgICAg
ICAgICAgICB2YXIga2V5ID0ga2V5c1tpXTtcblx0ICAgICAgICAgICAgaWYgKCFSRUFDVF9TVEFU
SUNTW2tleV0gJiYgIUtOT1dOX1NUQVRJQ1Nba2V5XSAmJiAoIWJsYWNrbGlzdCB8fCAhYmxhY2ts
aXN0W2tleV0pKSB7XG5cdCAgICAgICAgICAgICAgICB2YXIgZGVzY3JpcHRvciA9IGdldE93blBy
b3BlcnR5RGVzY3JpcHRvcihzb3VyY2VDb21wb25lbnQsIGtleSk7XG5cdCAgICAgICAgICAgICAg
ICB0cnkgeyAvLyBBdm9pZCBmYWlsdXJlcyBmcm9tIHJlYWQtb25seSBwcm9wZXJ0aWVzXG5cdCAg
ICAgICAgICAgICAgICAgICAgZGVmaW5lUHJvcGVydHkodGFyZ2V0Q29tcG9uZW50LCBrZXksIGRl
c2NyaXB0b3IpO1xuXHQgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge31cblx0ICAgICAgICAg
ICAgfVxuXHQgICAgICAgIH1cblx0XG5cdCAgICAgICAgcmV0dXJuIHRhcmdldENvbXBvbmVudDtc
blx0ICAgIH1cblx0XG5cdCAgICByZXR1cm4gdGFyZ2V0Q29tcG9uZW50O1xuXHR9O1xuXG5cbi8q
KiovIH0sXG4vKiAxMTEgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJw
YWNrX3JlcXVpcmVfXykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxMy0yMDE1LCBGYWNl
Ym9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNv
dXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBp
biB0aGVcblx0ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNv
dXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2Fu
IGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQg
Ki9cblx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdC8qKlxuXHQgKiBVc2UgaW52YXJpYW50KCkg
dG8gYXNzZXJ0IHN0YXRlIHdoaWNoIHlvdXIgcHJvZ3JhbSBhc3N1bWVzIHRvIGJlIHRydWUuXG5c
dCAqXG5cdCAqIFByb3ZpZGUgc3ByaW50Zi1zdHlsZSBmb3JtYXQgKG9ubHkgJXMgaXMgc3VwcG9y
dGVkKSBhbmQgYXJndW1lbnRzXG5cdCAqIHRvIHByb3ZpZGUgaW5mb3JtYXRpb24gYWJvdXQgd2hh
dCBicm9rZSBhbmQgd2hhdCB5b3Ugd2VyZVxuXHQgKiBleHBlY3RpbmcuXG5cdCAqXG5cdCAqIFRo
ZSBpbnZhcmlhbnQgbWVzc2FnZSB3aWxsIGJlIHN0cmlwcGVkIGluIHByb2R1Y3Rpb24sIGJ1dCB0
aGUgaW52YXJpYW50XG5cdCAqIHdpbGwgcmVtYWluIHRvIGVuc3VyZSBsb2dpYyBkb2VzIG5vdCBk
aWZmZXIgaW4gcHJvZHVjdGlvbi5cblx0ICovXG5cdFxuXHR2YXIgaW52YXJpYW50ID0gZnVuY3Rp
b24oY29uZGl0aW9uLCBmb3JtYXQsIGEsIGIsIGMsIGQsIGUsIGYpIHtcblx0ICBpZiAoZmFsc2Up
IHtcblx0ICAgIGlmIChmb3JtYXQgPT09IHVuZGVmaW5lZCkge1xuXHQgICAgICB0aHJvdyBuZXcg
RXJyb3IoJ2ludmFyaWFudCByZXF1aXJlcyBhbiBlcnJvciBtZXNzYWdlIGFyZ3VtZW50Jyk7XG5c
dCAgICB9XG5cdCAgfVxuXHRcblx0ICBpZiAoIWNvbmRpdGlvbikge1xuXHQgICAgdmFyIGVycm9y
O1xuXHQgICAgaWYgKGZvcm1hdCA9PT0gdW5kZWZpbmVkKSB7XG5cdCAgICAgIGVycm9yID0gbmV3
IEVycm9yKFxuXHQgICAgICAgICdNaW5pZmllZCBleGNlcHRpb24gb2NjdXJyZWQ7IHVzZSB0aGUg
bm9uLW1pbmlmaWVkIGRldiBlbnZpcm9ubWVudCAnICtcblx0ICAgICAgICAnZm9yIHRoZSBmdWxs
IGVycm9yIG1lc3NhZ2UgYW5kIGFkZGl0aW9uYWwgaGVscGZ1bCB3YXJuaW5ncy4nXG5cdCAgICAg
ICk7XG5cdCAgICB9IGVsc2Uge1xuXHQgICAgICB2YXIgYXJncyA9IFthLCBiLCBjLCBkLCBlLCBm
XTtcblx0ICAgICAgdmFyIGFyZ0luZGV4ID0gMDtcblx0ICAgICAgZXJyb3IgPSBuZXcgRXJyb3Io
XG5cdCAgICAgICAgZm9ybWF0LnJlcGxhY2UoLyVzL2csIGZ1bmN0aW9uKCkgeyByZXR1cm4gYXJn
c1thcmdJbmRleCsrXTsgfSlcblx0ICAgICAgKTtcblx0ICAgICAgZXJyb3IubmFtZSA9ICdJbnZh
cmlhbnQgVmlvbGF0aW9uJztcblx0ICAgIH1cblx0XG5cdCAgICBlcnJvci5mcmFtZXNUb1BvcCA9
IDE7IC8vIHdlIGRvbid0IGNhcmUgYWJvdXQgaW52YXJpYW50J3Mgb3duIGZyYW1lXG5cdCAgICB0
aHJvdyBlcnJvcjtcblx0ICB9XG5cdH07XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IGludmFyaWFu
dDtcblxuXG4vKioqLyB9LFxuLyogMTEyICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9y
dHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHR2YXIgU3ltYm9sID0gX193ZWJwYWNrX3Jl
cXVpcmVfXyg1NCksXG5cdCAgICBnZXRSYXdUYWcgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDExNSks
XG5cdCAgICBvYmplY3RUb1N0cmluZyA9IF9fd2VicGFja19yZXF1aXJlX18oMTE2KTtcblx0XG5c
dC8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cblx0dmFyIG51bGxU
YWcgPSAnW29iamVjdCBOdWxsXScsXG5cdCAgICB1bmRlZmluZWRUYWcgPSAnW29iamVjdCBVbmRl
ZmluZWRdJztcblx0XG5cdC8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xuXHR2YXIg
c3ltVG9TdHJpbmdUYWcgPSBTeW1ib2wgPyBTeW1ib2wudG9TdHJpbmdUYWcgOiB1bmRlZmluZWQ7
XG5cdFxuXHQvKipcblx0ICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYGdldFRhZ2Agd2l0
aG91dCBmYWxsYmFja3MgZm9yIGJ1Z2d5IGVudmlyb25tZW50cy5cblx0ICpcblx0ICogQHByaXZh
dGVcblx0ICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcXVlcnkuXG5cdCAqIEByZXR1
cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGB0b1N0cmluZ1RhZ2AuXG5cdCAqL1xuXHRmdW5jdGlv
biBiYXNlR2V0VGFnKHZhbHVlKSB7XG5cdCAgaWYgKHZhbHVlID09IG51bGwpIHtcblx0ICAgIHJl
dHVybiB2YWx1ZSA9PT0gdW5kZWZpbmVkID8gdW5kZWZpbmVkVGFnIDogbnVsbFRhZztcblx0ICB9
XG5cdCAgcmV0dXJuIChzeW1Ub1N0cmluZ1RhZyAmJiBzeW1Ub1N0cmluZ1RhZyBpbiBPYmplY3Qo
dmFsdWUpKVxuXHQgICAgPyBnZXRSYXdUYWcodmFsdWUpXG5cdCAgICA6IG9iamVjdFRvU3RyaW5n
KHZhbHVlKTtcblx0fVxuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBiYXNlR2V0VGFnO1xuXG5cbi8q
KiovIH0sXG4vKiAxMTMgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5c
dC8qIFdFQlBBQ0sgVkFSIElOSkVDVElPTiAqLyhmdW5jdGlvbihnbG9iYWwpIHsvKiogRGV0ZWN0
IGZyZWUgdmFyaWFibGUgYGdsb2JhbGAgZnJvbSBOb2RlLmpzLiAqL1xuXHR2YXIgZnJlZUdsb2Jh
bCA9IHR5cGVvZiBnbG9iYWwgPT0gJ29iamVjdCcgJiYgZ2xvYmFsICYmIGdsb2JhbC5PYmplY3Qg
PT09IE9iamVjdCAmJiBnbG9iYWw7XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IGZyZWVHbG9iYWw7
XG5cdFxuXHQvKiBXRUJQQUNLIFZBUiBJTkpFQ1RJT04gKi99LmNhbGwoZXhwb3J0cywgKGZ1bmN0
aW9uKCkgeyByZXR1cm4gdGhpczsgfSgpKSkpXG5cbi8qKiovIH0sXG4vKiAxMTQgKi9cbi8qKiov
IGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdHZh
ciBvdmVyQXJnID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMTcpO1xuXHRcblx0LyoqIEJ1aWx0LWlu
IHZhbHVlIHJlZmVyZW5jZXMuICovXG5cdHZhciBnZXRQcm90b3R5cGUgPSBvdmVyQXJnKE9iamVj
dC5nZXRQcm90b3R5cGVPZiwgT2JqZWN0KTtcblx0XG5cdG1vZHVsZS5leHBvcnRzID0gZ2V0UHJv
dG90eXBlO1xuXG5cbi8qKiovIH0sXG4vKiAxMTUgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwg
ZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdHZhciBTeW1ib2wgPSBfX3dlYnBh
Y2tfcmVxdWlyZV9fKDU0KTtcblx0XG5cdC8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVm
ZXJlbmNlcy4gKi9cblx0dmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblx0XG5c
dC8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xuXHR2YXIg
aGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblx0XG5cdC8qKlxu
XHQgKiBVc2VkIHRvIHJlc29sdmUgdGhlXG5cdCAqIFtgdG9TdHJpbmdUYWdgXShodHRwOi8vZWNt
YS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1vYmplY3QucHJvdG90eXBlLnRv
c3RyaW5nKVxuXHQgKiBvZiB2YWx1ZXMuXG5cdCAqL1xuXHR2YXIgbmF0aXZlT2JqZWN0VG9TdHJp
bmcgPSBvYmplY3RQcm90by50b1N0cmluZztcblx0XG5cdC8qKiBCdWlsdC1pbiB2YWx1ZSByZWZl
cmVuY2VzLiAqL1xuXHR2YXIgc3ltVG9TdHJpbmdUYWcgPSBTeW1ib2wgPyBTeW1ib2wudG9TdHJp
bmdUYWcgOiB1bmRlZmluZWQ7XG5cdFxuXHQvKipcblx0ICogQSBzcGVjaWFsaXplZCB2ZXJzaW9u
IG9mIGBiYXNlR2V0VGFnYCB3aGljaCBpZ25vcmVzIGBTeW1ib2wudG9TdHJpbmdUYWdgIHZhbHVl
cy5cblx0ICpcblx0ICogQHByaXZhdGVcblx0ICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUg
dG8gcXVlcnkuXG5cdCAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHJhdyBgdG9TdHJp
bmdUYWdgLlxuXHQgKi9cblx0ZnVuY3Rpb24gZ2V0UmF3VGFnKHZhbHVlKSB7XG5cdCAgdmFyIGlz
T3duID0gaGFzT3duUHJvcGVydHkuY2FsbCh2YWx1ZSwgc3ltVG9TdHJpbmdUYWcpLFxuXHQgICAg
ICB0YWcgPSB2YWx1ZVtzeW1Ub1N0cmluZ1RhZ107XG5cdFxuXHQgIHRyeSB7XG5cdCAgICB2YWx1
ZVtzeW1Ub1N0cmluZ1RhZ10gPSB1bmRlZmluZWQ7XG5cdCAgICB2YXIgdW5tYXNrZWQgPSB0cnVl
O1xuXHQgIH0gY2F0Y2ggKGUpIHt9XG5cdFxuXHQgIHZhciByZXN1bHQgPSBuYXRpdmVPYmplY3RU
b1N0cmluZy5jYWxsKHZhbHVlKTtcblx0ICBpZiAodW5tYXNrZWQpIHtcblx0ICAgIGlmIChpc093
bikge1xuXHQgICAgICB2YWx1ZVtzeW1Ub1N0cmluZ1RhZ10gPSB0YWc7XG5cdCAgICB9IGVsc2Ug
e1xuXHQgICAgICBkZWxldGUgdmFsdWVbc3ltVG9TdHJpbmdUYWddO1xuXHQgICAgfVxuXHQgIH1c
blx0ICByZXR1cm4gcmVzdWx0O1xuXHR9XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IGdldFJhd1Rh
ZztcblxuXG4vKioqLyB9LFxuLyogMTE2ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9y
dHMpIHtcblxuXHQvKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG5c
dHZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cdFxuXHQvKipcblx0ICogVXNl
ZCB0byByZXNvbHZlIHRoZVxuXHQgKiBbYHRvU3RyaW5nVGFnYF0oaHR0cDovL2VjbWEtaW50ZXJu
YXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtb2JqZWN0LnByb3RvdHlwZS50b3N0cmluZylc
blx0ICogb2YgdmFsdWVzLlxuXHQgKi9cblx0dmFyIG5hdGl2ZU9iamVjdFRvU3RyaW5nID0gb2Jq
ZWN0UHJvdG8udG9TdHJpbmc7XG5cdFxuXHQvKipcblx0ICogQ29udmVydHMgYHZhbHVlYCB0byBh
IHN0cmluZyB1c2luZyBgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZ2AuXG5cdCAqXG5cdCAqIEBw
cml2YXRlXG5cdCAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbnZlcnQuXG5cdCAq
IEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGNvbnZlcnRlZCBzdHJpbmcuXG5cdCAqL1xu
XHRmdW5jdGlvbiBvYmplY3RUb1N0cmluZyh2YWx1ZSkge1xuXHQgIHJldHVybiBuYXRpdmVPYmpl
Y3RUb1N0cmluZy5jYWxsKHZhbHVlKTtcblx0fVxuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBvYmpl
Y3RUb1N0cmluZztcblxuXG4vKioqLyB9LFxuLyogMTE3ICovXG4vKioqLyBmdW5jdGlvbihtb2R1
bGUsIGV4cG9ydHMpIHtcblxuXHQvKipcblx0ICogQ3JlYXRlcyBhIHVuYXJ5IGZ1bmN0aW9uIHRo
YXQgaW52b2tlcyBgZnVuY2Agd2l0aCBpdHMgYXJndW1lbnQgdHJhbnNmb3JtZWQuXG5cdCAqXG5c
dCAqIEBwcml2YXRlXG5cdCAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRv
IHdyYXAuXG5cdCAqIEBwYXJhbSB7RnVuY3Rpb259IHRyYW5zZm9ybSBUaGUgYXJndW1lbnQgdHJh
bnNmb3JtLlxuXHQgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBmdW5jdGlv
bi5cblx0ICovXG5cdGZ1bmN0aW9uIG92ZXJBcmcoZnVuYywgdHJhbnNmb3JtKSB7XG5cdCAgcmV0
dXJuIGZ1bmN0aW9uKGFyZykge1xuXHQgICAgcmV0dXJuIGZ1bmModHJhbnNmb3JtKGFyZykpO1xu
XHQgIH07XG5cdH1cblx0XG5cdG1vZHVsZS5leHBvcnRzID0gb3ZlckFyZztcblxuXG4vKioqLyB9
LFxuLyogMTE4ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19y
ZXF1aXJlX18pIHtcblxuXHR2YXIgZnJlZUdsb2JhbCA9IF9fd2VicGFja19yZXF1aXJlX18oMTEz
KTtcblx0XG5cdC8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgc2VsZmAuICovXG5cdHZhciBmcmVl
U2VsZiA9IHR5cGVvZiBzZWxmID09ICdvYmplY3QnICYmIHNlbGYgJiYgc2VsZi5PYmplY3QgPT09
IE9iamVjdCAmJiBzZWxmO1xuXHRcblx0LyoqIFVzZWQgYXMgYSByZWZlcmVuY2UgdG8gdGhlIGds
b2JhbCBvYmplY3QuICovXG5cdHZhciByb290ID0gZnJlZUdsb2JhbCB8fCBmcmVlU2VsZiB8fCBG
dW5jdGlvbigncmV0dXJuIHRoaXMnKSgpO1xuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSByb290O1xu
XG5cbi8qKiovIH0sXG4vKiAxMTkgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykg
e1xuXG5cdC8qKlxuXHQgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBvYmplY3QtbGlrZS4gQSB2YWx1
ZSBpcyBvYmplY3QtbGlrZSBpZiBpdCdzIG5vdCBgbnVsbGBcblx0ICogYW5kIGhhcyBhIGB0eXBl
b2ZgIHJlc3VsdCBvZiBcIm9iamVjdFwiLlxuXHQgKlxuXHQgKiBAc3RhdGljXG5cdCAqIEBtZW1i
ZXJPZiBfXG5cdCAqIEBzaW5jZSA0LjAuMFxuXHQgKiBAY2F0ZWdvcnkgTGFuZ1xuXHQgKiBAcGFy
YW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cblx0ICogQHJldHVybnMge2Jvb2xlYW59
IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgb2JqZWN0LWxpa2UsIGVsc2UgYGZhbHNlYC5c
blx0ICogQGV4YW1wbGVcblx0ICpcblx0ICogXy5pc09iamVjdExpa2Uoe30pO1xuXHQgKiAvLyA9
PiB0cnVlXG5cdCAqXG5cdCAqIF8uaXNPYmplY3RMaWtlKFsxLCAyLCAzXSk7XG5cdCAqIC8vID0+
IHRydWVcblx0ICpcblx0ICogXy5pc09iamVjdExpa2UoXy5ub29wKTtcblx0ICogLy8gPT4gZmFs
c2Vcblx0ICpcblx0ICogXy5pc09iamVjdExpa2UobnVsbCk7XG5cdCAqIC8vID0+IGZhbHNlXG5c
dCAqL1xuXHRmdW5jdGlvbiBpc09iamVjdExpa2UodmFsdWUpIHtcblx0ICByZXR1cm4gdmFsdWUg
IT0gbnVsbCAmJiB0eXBlb2YgdmFsdWUgPT0gJ29iamVjdCc7XG5cdH1cblx0XG5cdG1vZHVsZS5l
eHBvcnRzID0gaXNPYmplY3RMaWtlO1xuXG5cbi8qKiovIH0sXG4vKiAxMjAgKi9cbi8qKiovIGZ1
bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8qKlxu
XHQgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmln
aHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVu
ZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxl
IGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFs
IGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRT
IGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0Jztc
blx0XG5cdGlmIChmYWxzZSkge1xuXHQgIHZhciBpbnZhcmlhbnQgPSByZXF1aXJlKCdmYmpzL2xp
Yi9pbnZhcmlhbnQnKTtcblx0ICB2YXIgd2FybmluZyA9IHJlcXVpcmUoJ2ZianMvbGliL3dhcm5p
bmcnKTtcblx0ICB2YXIgUmVhY3RQcm9wVHlwZXNTZWNyZXQgPSByZXF1aXJlKCcuL2xpYi9SZWFj
dFByb3BUeXBlc1NlY3JldCcpO1xuXHQgIHZhciBsb2dnZWRUeXBlRmFpbHVyZXMgPSB7fTtcblx0
fVxuXHRcblx0LyoqXG5cdCAqIEFzc2VydCB0aGF0IHRoZSB2YWx1ZXMgbWF0Y2ggd2l0aCB0aGUg
dHlwZSBzcGVjcy5cblx0ICogRXJyb3IgbWVzc2FnZXMgYXJlIG1lbW9yaXplZCBhbmQgd2lsbCBv
bmx5IGJlIHNob3duIG9uY2UuXG5cdCAqXG5cdCAqIEBwYXJhbSB7b2JqZWN0fSB0eXBlU3BlY3Mg
TWFwIG9mIG5hbWUgdG8gYSBSZWFjdFByb3BUeXBlXG5cdCAqIEBwYXJhbSB7b2JqZWN0fSB2YWx1
ZXMgUnVudGltZSB2YWx1ZXMgdGhhdCBuZWVkIHRvIGJlIHR5cGUtY2hlY2tlZFxuXHQgKiBAcGFy
YW0ge3N0cmluZ30gbG9jYXRpb24gZS5nLiBcInByb3BcIiwgXCJjb250ZXh0XCIsIFwiY2hpbGQg
Y29udGV4dFwiXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBjb21wb25lbnROYW1lIE5hbWUgb2YgdGhl
IGNvbXBvbmVudCBmb3IgZXJyb3IgbWVzc2FnZXMuXG5cdCAqIEBwYXJhbSB7P0Z1bmN0aW9ufSBn
ZXRTdGFjayBSZXR1cm5zIHRoZSBjb21wb25lbnQgc3RhY2suXG5cdCAqIEBwcml2YXRlXG5cdCAq
L1xuXHRmdW5jdGlvbiBjaGVja1Byb3BUeXBlcyh0eXBlU3BlY3MsIHZhbHVlcywgbG9jYXRpb24s
IGNvbXBvbmVudE5hbWUsIGdldFN0YWNrKSB7XG5cdCAgaWYgKGZhbHNlKSB7XG5cdCAgICBmb3Ig
KHZhciB0eXBlU3BlY05hbWUgaW4gdHlwZVNwZWNzKSB7XG5cdCAgICAgIGlmICh0eXBlU3BlY3Mu
aGFzT3duUHJvcGVydHkodHlwZVNwZWNOYW1lKSkge1xuXHQgICAgICAgIHZhciBlcnJvcjtcblx0
ICAgICAgICAvLyBQcm9wIHR5cGUgdmFsaWRhdGlvbiBtYXkgdGhyb3cuIEluIGNhc2UgdGhleSBk
bywgd2UgZG9uJ3Qgd2FudCB0b1xuXHQgICAgICAgIC8vIGZhaWwgdGhlIHJlbmRlciBwaGFzZSB3
aGVyZSBpdCBkaWRuJ3QgZmFpbCBiZWZvcmUuIFNvIHdlIGxvZyBpdC5cblx0ICAgICAgICAvLyBB
ZnRlciB0aGVzZSBoYXZlIGJlZW4gY2xlYW5lZCB1cCwgd2UnbGwgbGV0IHRoZW0gdGhyb3cuXG5c
dCAgICAgICAgdHJ5IHtcblx0ICAgICAgICAgIC8vIFRoaXMgaXMgaW50ZW50aW9uYWxseSBhbiBp
bnZhcmlhbnQgdGhhdCBnZXRzIGNhdWdodC4gSXQncyB0aGUgc2FtZVxuXHQgICAgICAgICAgLy8g
YmVoYXZpb3IgYXMgd2l0aG91dCB0aGlzIHN0YXRlbWVudCBleGNlcHQgd2l0aCBhIGJldHRlciBt
ZXNzYWdlLlxuXHQgICAgICAgICAgaW52YXJpYW50KHR5cGVvZiB0eXBlU3BlY3NbdHlwZVNwZWNO
YW1lXSA9PT0gJ2Z1bmN0aW9uJywgJyVzOiAlcyB0eXBlIGAlc2AgaXMgaW52YWxpZDsgaXQgbXVz
dCBiZSBhIGZ1bmN0aW9uLCB1c3VhbGx5IGZyb20gJyArICdSZWFjdC5Qcm9wVHlwZXMuJywgY29t
cG9uZW50TmFtZSB8fCAnUmVhY3QgY2xhc3MnLCBsb2NhdGlvbiwgdHlwZVNwZWNOYW1lKTtcblx0
ICAgICAgICAgIGVycm9yID0gdHlwZVNwZWNzW3R5cGVTcGVjTmFtZV0odmFsdWVzLCB0eXBlU3Bl
Y05hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBudWxsLCBSZWFjdFByb3BUeXBlc1NlY3Jl
dCk7XG5cdCAgICAgICAgfSBjYXRjaCAoZXgpIHtcblx0ICAgICAgICAgIGVycm9yID0gZXg7XG5c
dCAgICAgICAgfVxuXHQgICAgICAgIHdhcm5pbmcoIWVycm9yIHx8IGVycm9yIGluc3RhbmNlb2Yg
RXJyb3IsICclczogdHlwZSBzcGVjaWZpY2F0aW9uIG9mICVzIGAlc2AgaXMgaW52YWxpZDsgdGhl
IHR5cGUgY2hlY2tlciAnICsgJ2Z1bmN0aW9uIG11c3QgcmV0dXJuIGBudWxsYCBvciBhbiBgRXJy
b3JgIGJ1dCByZXR1cm5lZCBhICVzLiAnICsgJ1lvdSBtYXkgaGF2ZSBmb3Jnb3R0ZW4gdG8gcGFz
cyBhbiBhcmd1bWVudCB0byB0aGUgdHlwZSBjaGVja2VyICcgKyAnY3JlYXRvciAoYXJyYXlPZiwg
aW5zdGFuY2VPZiwgb2JqZWN0T2YsIG9uZU9mLCBvbmVPZlR5cGUsIGFuZCAnICsgJ3NoYXBlIGFs
bCByZXF1aXJlIGFuIGFyZ3VtZW50KS4nLCBjb21wb25lbnROYW1lIHx8ICdSZWFjdCBjbGFzcycs
IGxvY2F0aW9uLCB0eXBlU3BlY05hbWUsIHR5cGVvZiBlcnJvcik7XG5cdCAgICAgICAgaWYgKGVy
cm9yIGluc3RhbmNlb2YgRXJyb3IgJiYgIShlcnJvci5tZXNzYWdlIGluIGxvZ2dlZFR5cGVGYWls
dXJlcykpIHtcblx0ICAgICAgICAgIC8vIE9ubHkgbW9uaXRvciB0aGlzIGZhaWx1cmUgb25jZSBi
ZWNhdXNlIHRoZXJlIHRlbmRzIHRvIGJlIGEgbG90IG9mIHRoZVxuXHQgICAgICAgICAgLy8gc2Ft
ZSBlcnJvci5cblx0ICAgICAgICAgIGxvZ2dlZFR5cGVGYWlsdXJlc1tlcnJvci5tZXNzYWdlXSA9
IHRydWU7XG5cdFxuXHQgICAgICAgICAgdmFyIHN0YWNrID0gZ2V0U3RhY2sgPyBnZXRTdGFjaygp
IDogJyc7XG5cdFxuXHQgICAgICAgICAgd2FybmluZyhmYWxzZSwgJ0ZhaWxlZCAlcyB0eXBlOiAl
cyVzJywgbG9jYXRpb24sIGVycm9yLm1lc3NhZ2UsIHN0YWNrICE9IG51bGwgPyBzdGFjayA6ICcn
KTtcblx0ICAgICAgICB9XG5cdCAgICAgIH1cblx0ICAgIH1cblx0ICB9XG5cdH1cblx0XG5cdG1v
ZHVsZS5leHBvcnRzID0gY2hlY2tQcm9wVHlwZXM7XG5cblxuLyoqKi8gfSxcbi8qIDEyMSAqL1xu
LyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5c
blx0LyoqXG5cdCAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAq
IEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGlj
ZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNF
TlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFk
ZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhl
IFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqL1xuXHRcblx0J3VzZSBz
dHJpY3QnO1xuXHRcblx0dmFyIGVtcHR5RnVuY3Rpb24gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDcp
O1xuXHR2YXIgaW52YXJpYW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxKTtcblx0dmFyIFJlYWN0
UHJvcFR5cGVzU2VjcmV0ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1Nyk7XG5cdFxuXHRtb2R1bGUu
ZXhwb3J0cyA9IGZ1bmN0aW9uKCkge1xuXHQgIGZ1bmN0aW9uIHNoaW0ocHJvcHMsIHByb3BOYW1l
LCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lLCBzZWNyZXQpIHtcblx0ICAg
IGlmIChzZWNyZXQgPT09IFJlYWN0UHJvcFR5cGVzU2VjcmV0KSB7XG5cdCAgICAgIC8vIEl0IGlz
IHN0aWxsIHNhZmUgd2hlbiBjYWxsZWQgZnJvbSBSZWFjdC5cblx0ICAgICAgcmV0dXJuO1xuXHQg
ICAgfVxuXHQgICAgaW52YXJpYW50KFxuXHQgICAgICBmYWxzZSxcblx0ICAgICAgJ0NhbGxpbmcg
UHJvcFR5cGVzIHZhbGlkYXRvcnMgZGlyZWN0bHkgaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgYHBy
b3AtdHlwZXNgIHBhY2thZ2UuICcgK1xuXHQgICAgICAnVXNlIFByb3BUeXBlcy5jaGVja1Byb3BU
eXBlcygpIHRvIGNhbGwgdGhlbS4gJyArXG5cdCAgICAgICdSZWFkIG1vcmUgYXQgaHR0cDovL2Zi
Lm1lL3VzZS1jaGVjay1wcm9wLXR5cGVzJ1xuXHQgICAgKTtcblx0ICB9O1xuXHQgIHNoaW0uaXNS
ZXF1aXJlZCA9IHNoaW07XG5cdCAgZnVuY3Rpb24gZ2V0U2hpbSgpIHtcblx0ICAgIHJldHVybiBz
aGltO1xuXHQgIH07XG5cdCAgLy8gSW1wb3J0YW50IVxuXHQgIC8vIEtlZXAgdGhpcyBsaXN0IGlu
IHN5bmMgd2l0aCBwcm9kdWN0aW9uIHZlcnNpb24gaW4gYC4vZmFjdG9yeVdpdGhUeXBlQ2hlY2tl
cnMuanNgLlxuXHQgIHZhciBSZWFjdFByb3BUeXBlcyA9IHtcblx0ICAgIGFycmF5OiBzaGltLFxu
XHQgICAgYm9vbDogc2hpbSxcblx0ICAgIGZ1bmM6IHNoaW0sXG5cdCAgICBudW1iZXI6IHNoaW0s
XG5cdCAgICBvYmplY3Q6IHNoaW0sXG5cdCAgICBzdHJpbmc6IHNoaW0sXG5cdCAgICBzeW1ib2w6
IHNoaW0sXG5cdFxuXHQgICAgYW55OiBzaGltLFxuXHQgICAgYXJyYXlPZjogZ2V0U2hpbSxcblx0
ICAgIGVsZW1lbnQ6IHNoaW0sXG5cdCAgICBpbnN0YW5jZU9mOiBnZXRTaGltLFxuXHQgICAgbm9k
ZTogc2hpbSxcblx0ICAgIG9iamVjdE9mOiBnZXRTaGltLFxuXHQgICAgb25lT2Y6IGdldFNoaW0s
XG5cdCAgICBvbmVPZlR5cGU6IGdldFNoaW0sXG5cdCAgICBzaGFwZTogZ2V0U2hpbVxuXHQgIH07
XG5cdFxuXHQgIFJlYWN0UHJvcFR5cGVzLmNoZWNrUHJvcFR5cGVzID0gZW1wdHlGdW5jdGlvbjtc
blx0ICBSZWFjdFByb3BUeXBlcy5Qcm9wVHlwZXMgPSBSZWFjdFByb3BUeXBlcztcblx0XG5cdCAg
cmV0dXJuIFJlYWN0UHJvcFR5cGVzO1xuXHR9O1xuXG5cbi8qKiovIH0sXG4vKiAxMjIgKi9cbi8q
KiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5c
dC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBB
bGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vu
c2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5T
RSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRp
dGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQ
QVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKi9cblx0XG5cdCd1c2Ugc3Ry
aWN0Jztcblx0XG5cdHZhciBlbXB0eUZ1bmN0aW9uID0gX193ZWJwYWNrX3JlcXVpcmVfXyg3KTtc
blx0dmFyIGludmFyaWFudCA9IF9fd2VicGFja19yZXF1aXJlX18oMSk7XG5cdHZhciB3YXJuaW5n
ID0gX193ZWJwYWNrX3JlcXVpcmVfXygyKTtcblx0XG5cdHZhciBSZWFjdFByb3BUeXBlc1NlY3Jl
dCA9IF9fd2VicGFja19yZXF1aXJlX18oNTcpO1xuXHR2YXIgY2hlY2tQcm9wVHlwZXMgPSBfX3dl
YnBhY2tfcmVxdWlyZV9fKDEyMCk7XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGlz
VmFsaWRFbGVtZW50LCB0aHJvd09uRGlyZWN0QWNjZXNzKSB7XG5cdCAgLyogZ2xvYmFsIFN5bWJv
bCAqL1xuXHQgIHZhciBJVEVSQVRPUl9TWU1CT0wgPSB0eXBlb2YgU3ltYm9sID09PSAnZnVuY3Rp
b24nICYmIFN5bWJvbC5pdGVyYXRvcjtcblx0ICB2YXIgRkFVWF9JVEVSQVRPUl9TWU1CT0wgPSAn
QEBpdGVyYXRvcic7IC8vIEJlZm9yZSBTeW1ib2wgc3BlYy5cblx0XG5cdCAgLyoqXG5cdCAgICog
UmV0dXJucyB0aGUgaXRlcmF0b3IgbWV0aG9kIGZ1bmN0aW9uIGNvbnRhaW5lZCBvbiB0aGUgaXRl
cmFibGUgb2JqZWN0LlxuXHQgICAqXG5cdCAgICogQmUgc3VyZSB0byBpbnZva2UgdGhlIGZ1bmN0
aW9uIHdpdGggdGhlIGl0ZXJhYmxlIGFzIGNvbnRleHQ6XG5cdCAgICpcblx0ICAgKiAgICAgdmFy
IGl0ZXJhdG9yRm4gPSBnZXRJdGVyYXRvckZuKG15SXRlcmFibGUpO1xuXHQgICAqICAgICBpZiAo
aXRlcmF0b3JGbikge1xuXHQgICAqICAgICAgIHZhciBpdGVyYXRvciA9IGl0ZXJhdG9yRm4uY2Fs
bChteUl0ZXJhYmxlKTtcblx0ICAgKiAgICAgICAuLi5cblx0ICAgKiAgICAgfVxuXHQgICAqXG5c
dCAgICogQHBhcmFtIHs/b2JqZWN0fSBtYXliZUl0ZXJhYmxlXG5cdCAgICogQHJldHVybiB7P2Z1
bmN0aW9ufVxuXHQgICAqL1xuXHQgIGZ1bmN0aW9uIGdldEl0ZXJhdG9yRm4obWF5YmVJdGVyYWJs
ZSkge1xuXHQgICAgdmFyIGl0ZXJhdG9yRm4gPSBtYXliZUl0ZXJhYmxlICYmIChJVEVSQVRPUl9T
WU1CT0wgJiYgbWF5YmVJdGVyYWJsZVtJVEVSQVRPUl9TWU1CT0xdIHx8IG1heWJlSXRlcmFibGVb
RkFVWF9JVEVSQVRPUl9TWU1CT0xdKTtcblx0ICAgIGlmICh0eXBlb2YgaXRlcmF0b3JGbiA9PT0g
J2Z1bmN0aW9uJykge1xuXHQgICAgICByZXR1cm4gaXRlcmF0b3JGbjtcblx0ICAgIH1cblx0ICB9
XG5cdFxuXHQgIC8qKlxuXHQgICAqIENvbGxlY3Rpb24gb2YgbWV0aG9kcyB0aGF0IGFsbG93IGRl
Y2xhcmF0aW9uIGFuZCB2YWxpZGF0aW9uIG9mIHByb3BzIHRoYXQgYXJlXG5cdCAgICogc3VwcGxp
ZWQgdG8gUmVhY3QgY29tcG9uZW50cy4gRXhhbXBsZSB1c2FnZTpcblx0ICAgKlxuXHQgICAqICAg
dmFyIFByb3BzID0gcmVxdWlyZSgnUmVhY3RQcm9wVHlwZXMnKTtcblx0ICAgKiAgIHZhciBNeUFy
dGljbGUgPSBSZWFjdC5jcmVhdGVDbGFzcyh7XG5cdCAgICogICAgIHByb3BUeXBlczoge1xuXHQg
ICAqICAgICAgIC8vIEFuIG9wdGlvbmFsIHN0cmluZyBwcm9wIG5hbWVkIFwiZGVzY3JpcHRpb25c
Ii5cblx0ICAgKiAgICAgICBkZXNjcmlwdGlvbjogUHJvcHMuc3RyaW5nLFxuXHQgICAqXG5cdCAg
ICogICAgICAgLy8gQSByZXF1aXJlZCBlbnVtIHByb3AgbmFtZWQgXCJjYXRlZ29yeVwiLlxuXHQg
ICAqICAgICAgIGNhdGVnb3J5OiBQcm9wcy5vbmVPZihbJ05ld3MnLCdQaG90b3MnXSkuaXNSZXF1
aXJlZCxcblx0ICAgKlxuXHQgICAqICAgICAgIC8vIEEgcHJvcCBuYW1lZCBcImRpYWxvZ1wiIHRo
YXQgcmVxdWlyZXMgYW4gaW5zdGFuY2Ugb2YgRGlhbG9nLlxuXHQgICAqICAgICAgIGRpYWxvZzog
UHJvcHMuaW5zdGFuY2VPZihEaWFsb2cpLmlzUmVxdWlyZWRcblx0ICAgKiAgICAgfSxcblx0ICAg
KiAgICAgcmVuZGVyOiBmdW5jdGlvbigpIHsgLi4uIH1cblx0ICAgKiAgIH0pO1xuXHQgICAqXG5c
dCAgICogQSBtb3JlIGZvcm1hbCBzcGVjaWZpY2F0aW9uIG9mIGhvdyB0aGVzZSBtZXRob2RzIGFy
ZSB1c2VkOlxuXHQgICAqXG5cdCAgICogICB0eXBlIDo9IGFycmF5fGJvb2x8ZnVuY3xvYmplY3R8
bnVtYmVyfHN0cmluZ3xvbmVPZihbLi4uXSl8aW5zdGFuY2VPZiguLi4pXG5cdCAgICogICBkZWNs
IDo9IFJlYWN0UHJvcFR5cGVzLnt0eXBlfSguaXNSZXF1aXJlZCk/XG5cdCAgICpcblx0ICAgKiBF
YWNoIGFuZCBldmVyeSBkZWNsYXJhdGlvbiBwcm9kdWNlcyBhIGZ1bmN0aW9uIHdpdGggdGhlIHNh
bWUgc2lnbmF0dXJlLiBUaGlzXG5cdCAgICogYWxsb3dzIHRoZSBjcmVhdGlvbiBvZiBjdXN0b20g
dmFsaWRhdGlvbiBmdW5jdGlvbnMuIEZvciBleGFtcGxlOlxuXHQgICAqXG5cdCAgICogIHZhciBN
eUxpbmsgPSBSZWFjdC5jcmVhdGVDbGFzcyh7XG5cdCAgICogICAgcHJvcFR5cGVzOiB7XG5cdCAg
ICogICAgICAvLyBBbiBvcHRpb25hbCBzdHJpbmcgb3IgVVJJIHByb3AgbmFtZWQgXCJocmVmXCIu
XG5cdCAgICogICAgICBocmVmOiBmdW5jdGlvbihwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5h
bWUpIHtcblx0ICAgKiAgICAgICAgdmFyIHByb3BWYWx1ZSA9IHByb3BzW3Byb3BOYW1lXTtcblx0
ICAgKiAgICAgICAgaWYgKHByb3BWYWx1ZSAhPSBudWxsICYmIHR5cGVvZiBwcm9wVmFsdWUgIT09
ICdzdHJpbmcnICYmXG5cdCAgICogICAgICAgICAgICAhKHByb3BWYWx1ZSBpbnN0YW5jZW9mIFVS
SSkpIHtcblx0ICAgKiAgICAgICAgICByZXR1cm4gbmV3IEVycm9yKFxuXHQgICAqICAgICAgICAg
ICAgJ0V4cGVjdGVkIGEgc3RyaW5nIG9yIGFuIFVSSSBmb3IgJyArIHByb3BOYW1lICsgJyBpbiAn
ICtcblx0ICAgKiAgICAgICAgICAgIGNvbXBvbmVudE5hbWVcblx0ICAgKiAgICAgICAgICApO1xu
XHQgICAqICAgICAgICB9XG5cdCAgICogICAgICB9XG5cdCAgICogICAgfSxcblx0ICAgKiAgICBy
ZW5kZXI6IGZ1bmN0aW9uKCkgey4uLn1cblx0ICAgKiAgfSk7XG5cdCAgICpcblx0ICAgKiBAaW50
ZXJuYWxcblx0ICAgKi9cblx0XG5cdCAgdmFyIEFOT05ZTU9VUyA9ICc8PGFub255bW91cz4+Jztc
blx0XG5cdCAgLy8gSW1wb3J0YW50IVxuXHQgIC8vIEtlZXAgdGhpcyBsaXN0IGluIHN5bmMgd2l0
aCBwcm9kdWN0aW9uIHZlcnNpb24gaW4gYC4vZmFjdG9yeVdpdGhUaHJvd2luZ1NoaW1zLmpzYC5c
blx0ICB2YXIgUmVhY3RQcm9wVHlwZXMgPSB7XG5cdCAgICBhcnJheTogY3JlYXRlUHJpbWl0aXZl
VHlwZUNoZWNrZXIoJ2FycmF5JyksXG5cdCAgICBib29sOiBjcmVhdGVQcmltaXRpdmVUeXBlQ2hl
Y2tlcignYm9vbGVhbicpLFxuXHQgICAgZnVuYzogY3JlYXRlUHJpbWl0aXZlVHlwZUNoZWNrZXIo
J2Z1bmN0aW9uJyksXG5cdCAgICBudW1iZXI6IGNyZWF0ZVByaW1pdGl2ZVR5cGVDaGVja2VyKCdu
dW1iZXInKSxcblx0ICAgIG9iamVjdDogY3JlYXRlUHJpbWl0aXZlVHlwZUNoZWNrZXIoJ29iamVj
dCcpLFxuXHQgICAgc3RyaW5nOiBjcmVhdGVQcmltaXRpdmVUeXBlQ2hlY2tlcignc3RyaW5nJyks
XG5cdCAgICBzeW1ib2w6IGNyZWF0ZVByaW1pdGl2ZVR5cGVDaGVja2VyKCdzeW1ib2wnKSxcblx0
XG5cdCAgICBhbnk6IGNyZWF0ZUFueVR5cGVDaGVja2VyKCksXG5cdCAgICBhcnJheU9mOiBjcmVh
dGVBcnJheU9mVHlwZUNoZWNrZXIsXG5cdCAgICBlbGVtZW50OiBjcmVhdGVFbGVtZW50VHlwZUNo
ZWNrZXIoKSxcblx0ICAgIGluc3RhbmNlT2Y6IGNyZWF0ZUluc3RhbmNlVHlwZUNoZWNrZXIsXG5c
dCAgICBub2RlOiBjcmVhdGVOb2RlQ2hlY2tlcigpLFxuXHQgICAgb2JqZWN0T2Y6IGNyZWF0ZU9i
amVjdE9mVHlwZUNoZWNrZXIsXG5cdCAgICBvbmVPZjogY3JlYXRlRW51bVR5cGVDaGVja2VyLFxu
XHQgICAgb25lT2ZUeXBlOiBjcmVhdGVVbmlvblR5cGVDaGVja2VyLFxuXHQgICAgc2hhcGU6IGNy
ZWF0ZVNoYXBlVHlwZUNoZWNrZXJcblx0ICB9O1xuXHRcblx0ICAvKipcblx0ICAgKiBpbmxpbmVk
IE9iamVjdC5pcyBwb2x5ZmlsbCB0byBhdm9pZCByZXF1aXJpbmcgY29uc3VtZXJzIHNoaXAgdGhl
aXIgb3duXG5cdCAgICogaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9X
ZWIvSmF2YVNjcmlwdC9SZWZlcmVuY2UvR2xvYmFsX09iamVjdHMvT2JqZWN0L2lzXG5cdCAgICov
XG5cdCAgLyplc2xpbnQtZGlzYWJsZSBuby1zZWxmLWNvbXBhcmUqL1xuXHQgIGZ1bmN0aW9uIGlz
KHgsIHkpIHtcblx0ICAgIC8vIFNhbWVWYWx1ZSBhbGdvcml0aG1cblx0ICAgIGlmICh4ID09PSB5
KSB7XG5cdCAgICAgIC8vIFN0ZXBzIDEtNSwgNy0xMFxuXHQgICAgICAvLyBTdGVwcyA2LmItNi5l
OiArMCAhPSAtMFxuXHQgICAgICByZXR1cm4geCAhPT0gMCB8fCAxIC8geCA9PT0gMSAvIHk7XG5c
dCAgICB9IGVsc2Uge1xuXHQgICAgICAvLyBTdGVwIDYuYTogTmFOID09IE5hTlxuXHQgICAgICBy
ZXR1cm4geCAhPT0geCAmJiB5ICE9PSB5O1xuXHQgICAgfVxuXHQgIH1cblx0ICAvKmVzbGludC1l
bmFibGUgbm8tc2VsZi1jb21wYXJlKi9cblx0XG5cdCAgLyoqXG5cdCAgICogV2UgdXNlIGFuIEVy
cm9yLWxpa2Ugb2JqZWN0IGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IGFzIHBlb3BsZSBtYXkg
Y2FsbFxuXHQgICAqIFByb3BUeXBlcyBkaXJlY3RseSBhbmQgaW5zcGVjdCB0aGVpciBvdXRwdXQu
IEhvd2V2ZXIsIHdlIGRvbid0IHVzZSByZWFsXG5cdCAgICogRXJyb3JzIGFueW1vcmUuIFdlIGRv
bid0IGluc3BlY3QgdGhlaXIgc3RhY2sgYW55d2F5LCBhbmQgY3JlYXRpbmcgdGhlbVxuXHQgICAq
IGlzIHByb2hpYml0aXZlbHkgZXhwZW5zaXZlIGlmIHRoZXkgYXJlIGNyZWF0ZWQgdG9vIG9mdGVu
LCBzdWNoIGFzIHdoYXRcblx0ICAgKiBoYXBwZW5zIGluIG9uZU9mVHlwZSgpIGZvciBhbnkgdHlw
ZSBiZWZvcmUgdGhlIG9uZSB0aGF0IG1hdGNoZWQuXG5cdCAgICovXG5cdCAgZnVuY3Rpb24gUHJv
cFR5cGVFcnJvcihtZXNzYWdlKSB7XG5cdCAgICB0aGlzLm1lc3NhZ2UgPSBtZXNzYWdlO1xuXHQg
ICAgdGhpcy5zdGFjayA9ICcnO1xuXHQgIH1cblx0ICAvLyBNYWtlIGBpbnN0YW5jZW9mIEVycm9y
YCBzdGlsbCB3b3JrIGZvciByZXR1cm5lZCBlcnJvcnMuXG5cdCAgUHJvcFR5cGVFcnJvci5wcm90
b3R5cGUgPSBFcnJvci5wcm90b3R5cGU7XG5cdFxuXHQgIGZ1bmN0aW9uIGNyZWF0ZUNoYWluYWJs
ZVR5cGVDaGVja2VyKHZhbGlkYXRlKSB7XG5cdCAgICBpZiAoZmFsc2UpIHtcblx0ICAgICAgdmFy
IG1hbnVhbFByb3BUeXBlQ2FsbENhY2hlID0ge307XG5cdCAgICAgIHZhciBtYW51YWxQcm9wVHlw
ZVdhcm5pbmdDb3VudCA9IDA7XG5cdCAgICB9XG5cdCAgICBmdW5jdGlvbiBjaGVja1R5cGUoaXNS
ZXF1aXJlZCwgcHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1
bGxOYW1lLCBzZWNyZXQpIHtcblx0ICAgICAgY29tcG9uZW50TmFtZSA9IGNvbXBvbmVudE5hbWUg
fHwgQU5PTllNT1VTO1xuXHQgICAgICBwcm9wRnVsbE5hbWUgPSBwcm9wRnVsbE5hbWUgfHwgcHJv
cE5hbWU7XG5cdFxuXHQgICAgICBpZiAoc2VjcmV0ICE9PSBSZWFjdFByb3BUeXBlc1NlY3JldCkg
e1xuXHQgICAgICAgIGlmICh0aHJvd09uRGlyZWN0QWNjZXNzKSB7XG5cdCAgICAgICAgICAvLyBO
ZXcgYmVoYXZpb3Igb25seSBmb3IgdXNlcnMgb2YgYHByb3AtdHlwZXNgIHBhY2thZ2Vcblx0ICAg
ICAgICAgIGludmFyaWFudChcblx0ICAgICAgICAgICAgZmFsc2UsXG5cdCAgICAgICAgICAgICdD
YWxsaW5nIFByb3BUeXBlcyB2YWxpZGF0b3JzIGRpcmVjdGx5IGlzIG5vdCBzdXBwb3J0ZWQgYnkg
dGhlIGBwcm9wLXR5cGVzYCBwYWNrYWdlLiAnICtcblx0ICAgICAgICAgICAgJ1VzZSBgUHJvcFR5
cGVzLmNoZWNrUHJvcFR5cGVzKClgIHRvIGNhbGwgdGhlbS4gJyArXG5cdCAgICAgICAgICAgICdS
ZWFkIG1vcmUgYXQgaHR0cDovL2ZiLm1lL3VzZS1jaGVjay1wcm9wLXR5cGVzJ1xuXHQgICAgICAg
ICAgKTtcblx0ICAgICAgICB9IGVsc2UgaWYgKGZhbHNlKSB7XG5cdCAgICAgICAgICAvLyBPbGQg
YmVoYXZpb3IgZm9yIHBlb3BsZSB1c2luZyBSZWFjdC5Qcm9wVHlwZXNcblx0ICAgICAgICAgIHZh
ciBjYWNoZUtleSA9IGNvbXBvbmVudE5hbWUgKyAnOicgKyBwcm9wTmFtZTtcblx0ICAgICAgICAg
IGlmIChcblx0ICAgICAgICAgICAgIW1hbnVhbFByb3BUeXBlQ2FsbENhY2hlW2NhY2hlS2V5XSAm
JlxuXHQgICAgICAgICAgICAvLyBBdm9pZCBzcGFtbWluZyB0aGUgY29uc29sZSBiZWNhdXNlIHRo
ZXkgYXJlIG9mdGVuIG5vdCBhY3Rpb25hYmxlIGV4Y2VwdCBmb3IgbGliIGF1dGhvcnNcblx0ICAg
ICAgICAgICAgbWFudWFsUHJvcFR5cGVXYXJuaW5nQ291bnQgPCAzXG5cdCAgICAgICAgICApIHtc
blx0ICAgICAgICAgICAgd2FybmluZyhcblx0ICAgICAgICAgICAgICBmYWxzZSxcblx0ICAgICAg
ICAgICAgICAnWW91IGFyZSBtYW51YWxseSBjYWxsaW5nIGEgUmVhY3QuUHJvcFR5cGVzIHZhbGlk
YXRpb24gJyArXG5cdCAgICAgICAgICAgICAgJ2Z1bmN0aW9uIGZvciB0aGUgYCVzYCBwcm9wIG9u
IGAlc2AuIFRoaXMgaXMgZGVwcmVjYXRlZCAnICtcblx0ICAgICAgICAgICAgICAnYW5kIHdpbGwg
dGhyb3cgaW4gdGhlIHN0YW5kYWxvbmUgYHByb3AtdHlwZXNgIHBhY2thZ2UuICcgK1xuXHQgICAg
ICAgICAgICAgICdZb3UgbWF5IGJlIHNlZWluZyB0aGlzIHdhcm5pbmcgZHVlIHRvIGEgdGhpcmQt
cGFydHkgUHJvcFR5cGVzICcgK1xuXHQgICAgICAgICAgICAgICdsaWJyYXJ5LiBTZWUgaHR0cHM6
Ly9mYi5tZS9yZWFjdC13YXJuaW5nLWRvbnQtY2FsbC1wcm9wdHlwZXMgJyArICdmb3IgZGV0YWls
cy4nLFxuXHQgICAgICAgICAgICAgIHByb3BGdWxsTmFtZSxcblx0ICAgICAgICAgICAgICBjb21w
b25lbnROYW1lXG5cdCAgICAgICAgICAgICk7XG5cdCAgICAgICAgICAgIG1hbnVhbFByb3BUeXBl
Q2FsbENhY2hlW2NhY2hlS2V5XSA9IHRydWU7XG5cdCAgICAgICAgICAgIG1hbnVhbFByb3BUeXBl
V2FybmluZ0NvdW50Kys7XG5cdCAgICAgICAgICB9XG5cdCAgICAgICAgfVxuXHQgICAgICB9XG5c
dCAgICAgIGlmIChwcm9wc1twcm9wTmFtZV0gPT0gbnVsbCkge1xuXHQgICAgICAgIGlmIChpc1Jl
cXVpcmVkKSB7XG5cdCAgICAgICAgICBpZiAocHJvcHNbcHJvcE5hbWVdID09PSBudWxsKSB7XG5c
dCAgICAgICAgICAgIHJldHVybiBuZXcgUHJvcFR5cGVFcnJvcignVGhlICcgKyBsb2NhdGlvbiAr
ICcgYCcgKyBwcm9wRnVsbE5hbWUgKyAnYCBpcyBtYXJrZWQgYXMgcmVxdWlyZWQgJyArICgnaW4g
YCcgKyBjb21wb25lbnROYW1lICsgJ2AsIGJ1dCBpdHMgdmFsdWUgaXMgYG51bGxgLicpKTtcblx0
ICAgICAgICAgIH1cblx0ICAgICAgICAgIHJldHVybiBuZXcgUHJvcFR5cGVFcnJvcignVGhlICcg
KyBsb2NhdGlvbiArICcgYCcgKyBwcm9wRnVsbE5hbWUgKyAnYCBpcyBtYXJrZWQgYXMgcmVxdWly
ZWQgaW4gJyArICgnYCcgKyBjb21wb25lbnROYW1lICsgJ2AsIGJ1dCBpdHMgdmFsdWUgaXMgYHVu
ZGVmaW5lZGAuJykpO1xuXHQgICAgICAgIH1cblx0ICAgICAgICByZXR1cm4gbnVsbDtcblx0ICAg
ICAgfSBlbHNlIHtcblx0ICAgICAgICByZXR1cm4gdmFsaWRhdGUocHJvcHMsIHByb3BOYW1lLCBj
b21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lKTtcblx0ICAgICAgfVxuXHQgICAg
fVxuXHRcblx0ICAgIHZhciBjaGFpbmVkQ2hlY2tUeXBlID0gY2hlY2tUeXBlLmJpbmQobnVsbCwg
ZmFsc2UpO1xuXHQgICAgY2hhaW5lZENoZWNrVHlwZS5pc1JlcXVpcmVkID0gY2hlY2tUeXBlLmJp
bmQobnVsbCwgdHJ1ZSk7XG5cdFxuXHQgICAgcmV0dXJuIGNoYWluZWRDaGVja1R5cGU7XG5cdCAg
fVxuXHRcblx0ICBmdW5jdGlvbiBjcmVhdGVQcmltaXRpdmVUeXBlQ2hlY2tlcihleHBlY3RlZFR5
cGUpIHtcblx0ICAgIGZ1bmN0aW9uIHZhbGlkYXRlKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50
TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSwgc2VjcmV0KSB7XG5cdCAgICAgIHZhciBwcm9w
VmFsdWUgPSBwcm9wc1twcm9wTmFtZV07XG5cdCAgICAgIHZhciBwcm9wVHlwZSA9IGdldFByb3BU
eXBlKHByb3BWYWx1ZSk7XG5cdCAgICAgIGlmIChwcm9wVHlwZSAhPT0gZXhwZWN0ZWRUeXBlKSB7
XG5cdCAgICAgICAgLy8gYHByb3BWYWx1ZWAgYmVpbmcgaW5zdGFuY2Ugb2YsIHNheSwgZGF0ZS9y
ZWdleHAsIHBhc3MgdGhlICdvYmplY3QnXG5cdCAgICAgICAgLy8gY2hlY2ssIGJ1dCB3ZSBjYW4g
b2ZmZXIgYSBtb3JlIHByZWNpc2UgZXJyb3IgbWVzc2FnZSBoZXJlIHJhdGhlciB0aGFuXG5cdCAg
ICAgICAgLy8gJ29mIHR5cGUgYG9iamVjdGAnLlxuXHQgICAgICAgIHZhciBwcmVjaXNlVHlwZSA9
IGdldFByZWNpc2VUeXBlKHByb3BWYWx1ZSk7XG5cdFxuXHQgICAgICAgIHJldHVybiBuZXcgUHJv
cFR5cGVFcnJvcignSW52YWxpZCAnICsgbG9jYXRpb24gKyAnIGAnICsgcHJvcEZ1bGxOYW1lICsg
J2Agb2YgdHlwZSAnICsgKCdgJyArIHByZWNpc2VUeXBlICsgJ2Agc3VwcGxpZWQgdG8gYCcgKyBj
b21wb25lbnROYW1lICsgJ2AsIGV4cGVjdGVkICcpICsgKCdgJyArIGV4cGVjdGVkVHlwZSArICdg
LicpKTtcblx0ICAgICAgfVxuXHQgICAgICByZXR1cm4gbnVsbDtcblx0ICAgIH1cblx0ICAgIHJl
dHVybiBjcmVhdGVDaGFpbmFibGVUeXBlQ2hlY2tlcih2YWxpZGF0ZSk7XG5cdCAgfVxuXHRcblx0
ICBmdW5jdGlvbiBjcmVhdGVBbnlUeXBlQ2hlY2tlcigpIHtcblx0ICAgIHJldHVybiBjcmVhdGVD
aGFpbmFibGVUeXBlQ2hlY2tlcihlbXB0eUZ1bmN0aW9uLnRoYXRSZXR1cm5zTnVsbCk7XG5cdCAg
fVxuXHRcblx0ICBmdW5jdGlvbiBjcmVhdGVBcnJheU9mVHlwZUNoZWNrZXIodHlwZUNoZWNrZXIp
IHtcblx0ICAgIGZ1bmN0aW9uIHZhbGlkYXRlKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFt
ZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSkge1xuXHQgICAgICBpZiAodHlwZW9mIHR5cGVDaGVj
a2VyICE9PSAnZnVuY3Rpb24nKSB7XG5cdCAgICAgICAgcmV0dXJuIG5ldyBQcm9wVHlwZUVycm9y
KCdQcm9wZXJ0eSBgJyArIHByb3BGdWxsTmFtZSArICdgIG9mIGNvbXBvbmVudCBgJyArIGNvbXBv
bmVudE5hbWUgKyAnYCBoYXMgaW52YWxpZCBQcm9wVHlwZSBub3RhdGlvbiBpbnNpZGUgYXJyYXlP
Zi4nKTtcblx0ICAgICAgfVxuXHQgICAgICB2YXIgcHJvcFZhbHVlID0gcHJvcHNbcHJvcE5hbWVd
O1xuXHQgICAgICBpZiAoIUFycmF5LmlzQXJyYXkocHJvcFZhbHVlKSkge1xuXHQgICAgICAgIHZh
ciBwcm9wVHlwZSA9IGdldFByb3BUeXBlKHByb3BWYWx1ZSk7XG5cdCAgICAgICAgcmV0dXJuIG5l
dyBQcm9wVHlwZUVycm9yKCdJbnZhbGlkICcgKyBsb2NhdGlvbiArICcgYCcgKyBwcm9wRnVsbE5h
bWUgKyAnYCBvZiB0eXBlICcgKyAoJ2AnICsgcHJvcFR5cGUgKyAnYCBzdXBwbGllZCB0byBgJyAr
IGNvbXBvbmVudE5hbWUgKyAnYCwgZXhwZWN0ZWQgYW4gYXJyYXkuJykpO1xuXHQgICAgICB9XG5c
dCAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcFZhbHVlLmxlbmd0aDsgaSsrKSB7XG5cdCAg
ICAgICAgdmFyIGVycm9yID0gdHlwZUNoZWNrZXIocHJvcFZhbHVlLCBpLCBjb21wb25lbnROYW1l
LCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lICsgJ1snICsgaSArICddJywgUmVhY3RQcm9wVHlwZXNT
ZWNyZXQpO1xuXHQgICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEVycm9yKSB7XG5cdCAgICAg
ICAgICByZXR1cm4gZXJyb3I7XG5cdCAgICAgICAgfVxuXHQgICAgICB9XG5cdCAgICAgIHJldHVy
biBudWxsO1xuXHQgICAgfVxuXHQgICAgcmV0dXJuIGNyZWF0ZUNoYWluYWJsZVR5cGVDaGVja2Vy
KHZhbGlkYXRlKTtcblx0ICB9XG5cdFxuXHQgIGZ1bmN0aW9uIGNyZWF0ZUVsZW1lbnRUeXBlQ2hl
Y2tlcigpIHtcblx0ICAgIGZ1bmN0aW9uIHZhbGlkYXRlKHByb3BzLCBwcm9wTmFtZSwgY29tcG9u
ZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSkge1xuXHQgICAgICB2YXIgcHJvcFZhbHVl
ID0gcHJvcHNbcHJvcE5hbWVdO1xuXHQgICAgICBpZiAoIWlzVmFsaWRFbGVtZW50KHByb3BWYWx1
ZSkpIHtcblx0ICAgICAgICB2YXIgcHJvcFR5cGUgPSBnZXRQcm9wVHlwZShwcm9wVmFsdWUpO1xu
XHQgICAgICAgIHJldHVybiBuZXcgUHJvcFR5cGVFcnJvcignSW52YWxpZCAnICsgbG9jYXRpb24g
KyAnIGAnICsgcHJvcEZ1bGxOYW1lICsgJ2Agb2YgdHlwZSAnICsgKCdgJyArIHByb3BUeXBlICsg
J2Agc3VwcGxpZWQgdG8gYCcgKyBjb21wb25lbnROYW1lICsgJ2AsIGV4cGVjdGVkIGEgc2luZ2xl
IFJlYWN0RWxlbWVudC4nKSk7XG5cdCAgICAgIH1cblx0ICAgICAgcmV0dXJuIG51bGw7XG5cdCAg
ICB9XG5cdCAgICByZXR1cm4gY3JlYXRlQ2hhaW5hYmxlVHlwZUNoZWNrZXIodmFsaWRhdGUpO1xu
XHQgIH1cblx0XG5cdCAgZnVuY3Rpb24gY3JlYXRlSW5zdGFuY2VUeXBlQ2hlY2tlcihleHBlY3Rl
ZENsYXNzKSB7XG5cdCAgICBmdW5jdGlvbiB2YWxpZGF0ZShwcm9wcywgcHJvcE5hbWUsIGNvbXBv
bmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUpIHtcblx0ICAgICAgaWYgKCEocHJvcHNb
cHJvcE5hbWVdIGluc3RhbmNlb2YgZXhwZWN0ZWRDbGFzcykpIHtcblx0ICAgICAgICB2YXIgZXhw
ZWN0ZWRDbGFzc05hbWUgPSBleHBlY3RlZENsYXNzLm5hbWUgfHwgQU5PTllNT1VTO1xuXHQgICAg
ICAgIHZhciBhY3R1YWxDbGFzc05hbWUgPSBnZXRDbGFzc05hbWUocHJvcHNbcHJvcE5hbWVdKTtc
blx0ICAgICAgICByZXR1cm4gbmV3IFByb3BUeXBlRXJyb3IoJ0ludmFsaWQgJyArIGxvY2F0aW9u
ICsgJyBgJyArIHByb3BGdWxsTmFtZSArICdgIG9mIHR5cGUgJyArICgnYCcgKyBhY3R1YWxDbGFz
c05hbWUgKyAnYCBzdXBwbGllZCB0byBgJyArIGNvbXBvbmVudE5hbWUgKyAnYCwgZXhwZWN0ZWQg
JykgKyAoJ2luc3RhbmNlIG9mIGAnICsgZXhwZWN0ZWRDbGFzc05hbWUgKyAnYC4nKSk7XG5cdCAg
ICAgIH1cblx0ICAgICAgcmV0dXJuIG51bGw7XG5cdCAgICB9XG5cdCAgICByZXR1cm4gY3JlYXRl
Q2hhaW5hYmxlVHlwZUNoZWNrZXIodmFsaWRhdGUpO1xuXHQgIH1cblx0XG5cdCAgZnVuY3Rpb24g
Y3JlYXRlRW51bVR5cGVDaGVja2VyKGV4cGVjdGVkVmFsdWVzKSB7XG5cdCAgICBpZiAoIUFycmF5
LmlzQXJyYXkoZXhwZWN0ZWRWYWx1ZXMpKSB7XG5cdCAgICAgICBmYWxzZSA/IHdhcm5pbmcoZmFs
c2UsICdJbnZhbGlkIGFyZ3VtZW50IHN1cHBsaWVkIHRvIG9uZU9mLCBleHBlY3RlZCBhbiBpbnN0
YW5jZSBvZiBhcnJheS4nKSA6IHZvaWQgMDtcblx0ICAgICAgcmV0dXJuIGVtcHR5RnVuY3Rpb24u
dGhhdFJldHVybnNOdWxsO1xuXHQgICAgfVxuXHRcblx0ICAgIGZ1bmN0aW9uIHZhbGlkYXRlKHBy
b3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSkge1xu
XHQgICAgICB2YXIgcHJvcFZhbHVlID0gcHJvcHNbcHJvcE5hbWVdO1xuXHQgICAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IGV4cGVjdGVkVmFsdWVzLmxlbmd0aDsgaSsrKSB7XG5cdCAgICAgICAgaWYg
KGlzKHByb3BWYWx1ZSwgZXhwZWN0ZWRWYWx1ZXNbaV0pKSB7XG5cdCAgICAgICAgICByZXR1cm4g
bnVsbDtcblx0ICAgICAgICB9XG5cdCAgICAgIH1cblx0XG5cdCAgICAgIHZhciB2YWx1ZXNTdHJp
bmcgPSBKU09OLnN0cmluZ2lmeShleHBlY3RlZFZhbHVlcyk7XG5cdCAgICAgIHJldHVybiBuZXcg
UHJvcFR5cGVFcnJvcignSW52YWxpZCAnICsgbG9jYXRpb24gKyAnIGAnICsgcHJvcEZ1bGxOYW1l
ICsgJ2Agb2YgdmFsdWUgYCcgKyBwcm9wVmFsdWUgKyAnYCAnICsgKCdzdXBwbGllZCB0byBgJyAr
IGNvbXBvbmVudE5hbWUgKyAnYCwgZXhwZWN0ZWQgb25lIG9mICcgKyB2YWx1ZXNTdHJpbmcgKyAn
LicpKTtcblx0ICAgIH1cblx0ICAgIHJldHVybiBjcmVhdGVDaGFpbmFibGVUeXBlQ2hlY2tlcih2
YWxpZGF0ZSk7XG5cdCAgfVxuXHRcblx0ICBmdW5jdGlvbiBjcmVhdGVPYmplY3RPZlR5cGVDaGVj
a2VyKHR5cGVDaGVja2VyKSB7XG5cdCAgICBmdW5jdGlvbiB2YWxpZGF0ZShwcm9wcywgcHJvcE5h
bWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUpIHtcblx0ICAgICAgaWYg
KHR5cGVvZiB0eXBlQ2hlY2tlciAhPT0gJ2Z1bmN0aW9uJykge1xuXHQgICAgICAgIHJldHVybiBu
ZXcgUHJvcFR5cGVFcnJvcignUHJvcGVydHkgYCcgKyBwcm9wRnVsbE5hbWUgKyAnYCBvZiBjb21w
b25lbnQgYCcgKyBjb21wb25lbnROYW1lICsgJ2AgaGFzIGludmFsaWQgUHJvcFR5cGUgbm90YXRp
b24gaW5zaWRlIG9iamVjdE9mLicpO1xuXHQgICAgICB9XG5cdCAgICAgIHZhciBwcm9wVmFsdWUg
PSBwcm9wc1twcm9wTmFtZV07XG5cdCAgICAgIHZhciBwcm9wVHlwZSA9IGdldFByb3BUeXBlKHBy
b3BWYWx1ZSk7XG5cdCAgICAgIGlmIChwcm9wVHlwZSAhPT0gJ29iamVjdCcpIHtcblx0ICAgICAg
ICByZXR1cm4gbmV3IFByb3BUeXBlRXJyb3IoJ0ludmFsaWQgJyArIGxvY2F0aW9uICsgJyBgJyAr
IHByb3BGdWxsTmFtZSArICdgIG9mIHR5cGUgJyArICgnYCcgKyBwcm9wVHlwZSArICdgIHN1cHBs
aWVkIHRvIGAnICsgY29tcG9uZW50TmFtZSArICdgLCBleHBlY3RlZCBhbiBvYmplY3QuJykpO1xu
XHQgICAgICB9XG5cdCAgICAgIGZvciAodmFyIGtleSBpbiBwcm9wVmFsdWUpIHtcblx0ICAgICAg
ICBpZiAocHJvcFZhbHVlLmhhc093blByb3BlcnR5KGtleSkpIHtcblx0ICAgICAgICAgIHZhciBl
cnJvciA9IHR5cGVDaGVja2VyKHByb3BWYWx1ZSwga2V5LCBjb21wb25lbnROYW1lLCBsb2NhdGlv
biwgcHJvcEZ1bGxOYW1lICsgJy4nICsga2V5LCBSZWFjdFByb3BUeXBlc1NlY3JldCk7XG5cdCAg
ICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBFcnJvcikge1xuXHQgICAgICAgICAgICByZXR1
cm4gZXJyb3I7XG5cdCAgICAgICAgICB9XG5cdCAgICAgICAgfVxuXHQgICAgICB9XG5cdCAgICAg
IHJldHVybiBudWxsO1xuXHQgICAgfVxuXHQgICAgcmV0dXJuIGNyZWF0ZUNoYWluYWJsZVR5cGVD
aGVja2VyKHZhbGlkYXRlKTtcblx0ICB9XG5cdFxuXHQgIGZ1bmN0aW9uIGNyZWF0ZVVuaW9uVHlw
ZUNoZWNrZXIoYXJyYXlPZlR5cGVDaGVja2Vycykge1xuXHQgICAgaWYgKCFBcnJheS5pc0FycmF5
KGFycmF5T2ZUeXBlQ2hlY2tlcnMpKSB7XG5cdCAgICAgICBmYWxzZSA/IHdhcm5pbmcoZmFsc2Us
ICdJbnZhbGlkIGFyZ3VtZW50IHN1cHBsaWVkIHRvIG9uZU9mVHlwZSwgZXhwZWN0ZWQgYW4gaW5z
dGFuY2Ugb2YgYXJyYXkuJykgOiB2b2lkIDA7XG5cdCAgICAgIHJldHVybiBlbXB0eUZ1bmN0aW9u
LnRoYXRSZXR1cm5zTnVsbDtcblx0ICAgIH1cblx0XG5cdCAgICBmb3IgKHZhciBpID0gMDsgaSA8
IGFycmF5T2ZUeXBlQ2hlY2tlcnMubGVuZ3RoOyBpKyspIHtcblx0ICAgICAgdmFyIGNoZWNrZXIg
PSBhcnJheU9mVHlwZUNoZWNrZXJzW2ldO1xuXHQgICAgICBpZiAodHlwZW9mIGNoZWNrZXIgIT09
ICdmdW5jdGlvbicpIHtcblx0ICAgICAgICB3YXJuaW5nKFxuXHQgICAgICAgICAgZmFsc2UsXG5c
dCAgICAgICAgICAnSW52YWxpZCBhcmd1bWVudCBzdXBwbGlkIHRvIG9uZU9mVHlwZS4gRXhwZWN0
ZWQgYW4gYXJyYXkgb2YgY2hlY2sgZnVuY3Rpb25zLCBidXQgJyArXG5cdCAgICAgICAgICAncmVj
ZWl2ZWQgJXMgYXQgaW5kZXggJXMuJyxcblx0ICAgICAgICAgIGdldFBvc3RmaXhGb3JUeXBlV2Fy
bmluZyhjaGVja2VyKSxcblx0ICAgICAgICAgIGlcblx0ICAgICAgICApO1xuXHQgICAgICAgIHJl
dHVybiBlbXB0eUZ1bmN0aW9uLnRoYXRSZXR1cm5zTnVsbDtcblx0ICAgICAgfVxuXHQgICAgfVxu
XHRcblx0ICAgIGZ1bmN0aW9uIHZhbGlkYXRlKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFt
ZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSkge1xuXHQgICAgICBmb3IgKHZhciBpID0gMDsgaSA8
IGFycmF5T2ZUeXBlQ2hlY2tlcnMubGVuZ3RoOyBpKyspIHtcblx0ICAgICAgICB2YXIgY2hlY2tl
ciA9IGFycmF5T2ZUeXBlQ2hlY2tlcnNbaV07XG5cdCAgICAgICAgaWYgKGNoZWNrZXIocHJvcHMs
IHByb3BOYW1lLCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lLCBSZWFjdFBy
b3BUeXBlc1NlY3JldCkgPT0gbnVsbCkge1xuXHQgICAgICAgICAgcmV0dXJuIG51bGw7XG5cdCAg
ICAgICAgfVxuXHQgICAgICB9XG5cdFxuXHQgICAgICByZXR1cm4gbmV3IFByb3BUeXBlRXJyb3Io
J0ludmFsaWQgJyArIGxvY2F0aW9uICsgJyBgJyArIHByb3BGdWxsTmFtZSArICdgIHN1cHBsaWVk
IHRvICcgKyAoJ2AnICsgY29tcG9uZW50TmFtZSArICdgLicpKTtcblx0ICAgIH1cblx0ICAgIHJl
dHVybiBjcmVhdGVDaGFpbmFibGVUeXBlQ2hlY2tlcih2YWxpZGF0ZSk7XG5cdCAgfVxuXHRcblx0
ICBmdW5jdGlvbiBjcmVhdGVOb2RlQ2hlY2tlcigpIHtcblx0ICAgIGZ1bmN0aW9uIHZhbGlkYXRl
KHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSkg
e1xuXHQgICAgICBpZiAoIWlzTm9kZShwcm9wc1twcm9wTmFtZV0pKSB7XG5cdCAgICAgICAgcmV0
dXJuIG5ldyBQcm9wVHlwZUVycm9yKCdJbnZhbGlkICcgKyBsb2NhdGlvbiArICcgYCcgKyBwcm9w
RnVsbE5hbWUgKyAnYCBzdXBwbGllZCB0byAnICsgKCdgJyArIGNvbXBvbmVudE5hbWUgKyAnYCwg
ZXhwZWN0ZWQgYSBSZWFjdE5vZGUuJykpO1xuXHQgICAgICB9XG5cdCAgICAgIHJldHVybiBudWxs
O1xuXHQgICAgfVxuXHQgICAgcmV0dXJuIGNyZWF0ZUNoYWluYWJsZVR5cGVDaGVja2VyKHZhbGlk
YXRlKTtcblx0ICB9XG5cdFxuXHQgIGZ1bmN0aW9uIGNyZWF0ZVNoYXBlVHlwZUNoZWNrZXIoc2hh
cGVUeXBlcykge1xuXHQgICAgZnVuY3Rpb24gdmFsaWRhdGUocHJvcHMsIHByb3BOYW1lLCBjb21w
b25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lKSB7XG5cdCAgICAgIHZhciBwcm9wVmFs
dWUgPSBwcm9wc1twcm9wTmFtZV07XG5cdCAgICAgIHZhciBwcm9wVHlwZSA9IGdldFByb3BUeXBl
KHByb3BWYWx1ZSk7XG5cdCAgICAgIGlmIChwcm9wVHlwZSAhPT0gJ29iamVjdCcpIHtcblx0ICAg
ICAgICByZXR1cm4gbmV3IFByb3BUeXBlRXJyb3IoJ0ludmFsaWQgJyArIGxvY2F0aW9uICsgJyBg
JyArIHByb3BGdWxsTmFtZSArICdgIG9mIHR5cGUgYCcgKyBwcm9wVHlwZSArICdgICcgKyAoJ3N1
cHBsaWVkIHRvIGAnICsgY29tcG9uZW50TmFtZSArICdgLCBleHBlY3RlZCBgb2JqZWN0YC4nKSk7
XG5cdCAgICAgIH1cblx0ICAgICAgZm9yICh2YXIga2V5IGluIHNoYXBlVHlwZXMpIHtcblx0ICAg
ICAgICB2YXIgY2hlY2tlciA9IHNoYXBlVHlwZXNba2V5XTtcblx0ICAgICAgICBpZiAoIWNoZWNr
ZXIpIHtcblx0ICAgICAgICAgIGNvbnRpbnVlO1xuXHQgICAgICAgIH1cblx0ICAgICAgICB2YXIg
ZXJyb3IgPSBjaGVja2VyKHByb3BWYWx1ZSwga2V5LCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwg
cHJvcEZ1bGxOYW1lICsgJy4nICsga2V5LCBSZWFjdFByb3BUeXBlc1NlY3JldCk7XG5cdCAgICAg
ICAgaWYgKGVycm9yKSB7XG5cdCAgICAgICAgICByZXR1cm4gZXJyb3I7XG5cdCAgICAgICAgfVxu
XHQgICAgICB9XG5cdCAgICAgIHJldHVybiBudWxsO1xuXHQgICAgfVxuXHQgICAgcmV0dXJuIGNy
ZWF0ZUNoYWluYWJsZVR5cGVDaGVja2VyKHZhbGlkYXRlKTtcblx0ICB9XG5cdFxuXHQgIGZ1bmN0
aW9uIGlzTm9kZShwcm9wVmFsdWUpIHtcblx0ICAgIHN3aXRjaCAodHlwZW9mIHByb3BWYWx1ZSkg
e1xuXHQgICAgICBjYXNlICdudW1iZXInOlxuXHQgICAgICBjYXNlICdzdHJpbmcnOlxuXHQgICAg
ICBjYXNlICd1bmRlZmluZWQnOlxuXHQgICAgICAgIHJldHVybiB0cnVlO1xuXHQgICAgICBjYXNl
ICdib29sZWFuJzpcblx0ICAgICAgICByZXR1cm4gIXByb3BWYWx1ZTtcblx0ICAgICAgY2FzZSAn
b2JqZWN0Jzpcblx0ICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShwcm9wVmFsdWUpKSB7XG5cdCAg
ICAgICAgICByZXR1cm4gcHJvcFZhbHVlLmV2ZXJ5KGlzTm9kZSk7XG5cdCAgICAgICAgfVxuXHQg
ICAgICAgIGlmIChwcm9wVmFsdWUgPT09IG51bGwgfHwgaXNWYWxpZEVsZW1lbnQocHJvcFZhbHVl
KSkge1xuXHQgICAgICAgICAgcmV0dXJuIHRydWU7XG5cdCAgICAgICAgfVxuXHRcblx0ICAgICAg
ICB2YXIgaXRlcmF0b3JGbiA9IGdldEl0ZXJhdG9yRm4ocHJvcFZhbHVlKTtcblx0ICAgICAgICBp
ZiAoaXRlcmF0b3JGbikge1xuXHQgICAgICAgICAgdmFyIGl0ZXJhdG9yID0gaXRlcmF0b3JGbi5j
YWxsKHByb3BWYWx1ZSk7XG5cdCAgICAgICAgICB2YXIgc3RlcDtcblx0ICAgICAgICAgIGlmIChp
dGVyYXRvckZuICE9PSBwcm9wVmFsdWUuZW50cmllcykge1xuXHQgICAgICAgICAgICB3aGlsZSAo
IShzdGVwID0gaXRlcmF0b3IubmV4dCgpKS5kb25lKSB7XG5cdCAgICAgICAgICAgICAgaWYgKCFp
c05vZGUoc3RlcC52YWx1ZSkpIHtcblx0ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcblx0
ICAgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICAgIH0gZWxzZSB7XG5c
dCAgICAgICAgICAgIC8vIEl0ZXJhdG9yIHdpbGwgcHJvdmlkZSBlbnRyeSBbayx2XSB0dXBsZXMg
cmF0aGVyIHRoYW4gdmFsdWVzLlxuXHQgICAgICAgICAgICB3aGlsZSAoIShzdGVwID0gaXRlcmF0
b3IubmV4dCgpKS5kb25lKSB7XG5cdCAgICAgICAgICAgICAgdmFyIGVudHJ5ID0gc3RlcC52YWx1
ZTtcblx0ICAgICAgICAgICAgICBpZiAoZW50cnkpIHtcblx0ICAgICAgICAgICAgICAgIGlmICgh
aXNOb2RlKGVudHJ5WzFdKSkge1xuXHQgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG5c
dCAgICAgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICB9XG5c
dCAgICAgICAgICB9XG5cdCAgICAgICAgfSBlbHNlIHtcblx0ICAgICAgICAgIHJldHVybiBmYWxz
ZTtcblx0ICAgICAgICB9XG5cdFxuXHQgICAgICAgIHJldHVybiB0cnVlO1xuXHQgICAgICBkZWZh
dWx0OlxuXHQgICAgICAgIHJldHVybiBmYWxzZTtcblx0ICAgIH1cblx0ICB9XG5cdFxuXHQgIGZ1
bmN0aW9uIGlzU3ltYm9sKHByb3BUeXBlLCBwcm9wVmFsdWUpIHtcblx0ICAgIC8vIE5hdGl2ZSBT
eW1ib2wuXG5cdCAgICBpZiAocHJvcFR5cGUgPT09ICdzeW1ib2wnKSB7XG5cdCAgICAgIHJldHVy
biB0cnVlO1xuXHQgICAgfVxuXHRcblx0ICAgIC8vIDE5LjQuMy41IFN5bWJvbC5wcm90b3R5cGVb
QEB0b1N0cmluZ1RhZ10gPT09ICdTeW1ib2wnXG5cdCAgICBpZiAocHJvcFZhbHVlWydAQHRvU3Ry
aW5nVGFnJ10gPT09ICdTeW1ib2wnKSB7XG5cdCAgICAgIHJldHVybiB0cnVlO1xuXHQgICAgfVxu
XHRcblx0ICAgIC8vIEZhbGxiYWNrIGZvciBub24tc3BlYyBjb21wbGlhbnQgU3ltYm9scyB3aGlj
aCBhcmUgcG9seWZpbGxlZC5cblx0ICAgIGlmICh0eXBlb2YgU3ltYm9sID09PSAnZnVuY3Rpb24n
ICYmIHByb3BWYWx1ZSBpbnN0YW5jZW9mIFN5bWJvbCkge1xuXHQgICAgICByZXR1cm4gdHJ1ZTtc
blx0ICAgIH1cblx0XG5cdCAgICByZXR1cm4gZmFsc2U7XG5cdCAgfVxuXHRcblx0ICAvLyBFcXVp
dmFsZW50IG9mIGB0eXBlb2ZgIGJ1dCB3aXRoIHNwZWNpYWwgaGFuZGxpbmcgZm9yIGFycmF5IGFu
ZCByZWdleHAuXG5cdCAgZnVuY3Rpb24gZ2V0UHJvcFR5cGUocHJvcFZhbHVlKSB7XG5cdCAgICB2
YXIgcHJvcFR5cGUgPSB0eXBlb2YgcHJvcFZhbHVlO1xuXHQgICAgaWYgKEFycmF5LmlzQXJyYXko
cHJvcFZhbHVlKSkge1xuXHQgICAgICByZXR1cm4gJ2FycmF5Jztcblx0ICAgIH1cblx0ICAgIGlm
IChwcm9wVmFsdWUgaW5zdGFuY2VvZiBSZWdFeHApIHtcblx0ICAgICAgLy8gT2xkIHdlYmtpdHMg
KGF0IGxlYXN0IHVudGlsIEFuZHJvaWQgNC4wKSByZXR1cm4gJ2Z1bmN0aW9uJyByYXRoZXIgdGhh
blxuXHQgICAgICAvLyAnb2JqZWN0JyBmb3IgdHlwZW9mIGEgUmVnRXhwLiBXZSdsbCBub3JtYWxp
emUgdGhpcyBoZXJlIHNvIHRoYXQgL2JsYS9cblx0ICAgICAgLy8gcGFzc2VzIFByb3BUeXBlcy5v
YmplY3QuXG5cdCAgICAgIHJldHVybiAnb2JqZWN0Jztcblx0ICAgIH1cblx0ICAgIGlmIChpc1N5
bWJvbChwcm9wVHlwZSwgcHJvcFZhbHVlKSkge1xuXHQgICAgICByZXR1cm4gJ3N5bWJvbCc7XG5c
dCAgICB9XG5cdCAgICByZXR1cm4gcHJvcFR5cGU7XG5cdCAgfVxuXHRcblx0ICAvLyBUaGlzIGhh
bmRsZXMgbW9yZSB0eXBlcyB0aGFuIGBnZXRQcm9wVHlwZWAuIE9ubHkgdXNlZCBmb3IgZXJyb3Ig
bWVzc2FnZXMuXG5cdCAgLy8gU2VlIGBjcmVhdGVQcmltaXRpdmVUeXBlQ2hlY2tlcmAuXG5cdCAg
ZnVuY3Rpb24gZ2V0UHJlY2lzZVR5cGUocHJvcFZhbHVlKSB7XG5cdCAgICBpZiAodHlwZW9mIHBy
b3BWYWx1ZSA9PT0gJ3VuZGVmaW5lZCcgfHwgcHJvcFZhbHVlID09PSBudWxsKSB7XG5cdCAgICAg
IHJldHVybiAnJyArIHByb3BWYWx1ZTtcblx0ICAgIH1cblx0ICAgIHZhciBwcm9wVHlwZSA9IGdl
dFByb3BUeXBlKHByb3BWYWx1ZSk7XG5cdCAgICBpZiAocHJvcFR5cGUgPT09ICdvYmplY3QnKSB7
XG5cdCAgICAgIGlmIChwcm9wVmFsdWUgaW5zdGFuY2VvZiBEYXRlKSB7XG5cdCAgICAgICAgcmV0
dXJuICdkYXRlJztcblx0ICAgICAgfSBlbHNlIGlmIChwcm9wVmFsdWUgaW5zdGFuY2VvZiBSZWdF
eHApIHtcblx0ICAgICAgICByZXR1cm4gJ3JlZ2V4cCc7XG5cdCAgICAgIH1cblx0ICAgIH1cblx0
ICAgIHJldHVybiBwcm9wVHlwZTtcblx0ICB9XG5cdFxuXHQgIC8vIFJldHVybnMgYSBzdHJpbmcg
dGhhdCBpcyBwb3N0Zml4ZWQgdG8gYSB3YXJuaW5nIGFib3V0IGFuIGludmFsaWQgdHlwZS5cblx0
ICAvLyBGb3IgZXhhbXBsZSwgXCJ1bmRlZmluZWRcIiBvciBcIm9mIHR5cGUgYXJyYXlcIlxuXHQg
IGZ1bmN0aW9uIGdldFBvc3RmaXhGb3JUeXBlV2FybmluZyh2YWx1ZSkge1xuXHQgICAgdmFyIHR5
cGUgPSBnZXRQcmVjaXNlVHlwZSh2YWx1ZSk7XG5cdCAgICBzd2l0Y2ggKHR5cGUpIHtcblx0ICAg
ICAgY2FzZSAnYXJyYXknOlxuXHQgICAgICBjYXNlICdvYmplY3QnOlxuXHQgICAgICAgIHJldHVy
biAnYW4gJyArIHR5cGU7XG5cdCAgICAgIGNhc2UgJ2Jvb2xlYW4nOlxuXHQgICAgICBjYXNlICdk
YXRlJzpcblx0ICAgICAgY2FzZSAncmVnZXhwJzpcblx0ICAgICAgICByZXR1cm4gJ2EgJyArIHR5
cGU7XG5cdCAgICAgIGRlZmF1bHQ6XG5cdCAgICAgICAgcmV0dXJuIHR5cGU7XG5cdCAgICB9XG5c
dCAgfVxuXHRcblx0ICAvLyBSZXR1cm5zIGNsYXNzIG5hbWUgb2YgdGhlIG9iamVjdCwgaWYgYW55
LlxuXHQgIGZ1bmN0aW9uIGdldENsYXNzTmFtZShwcm9wVmFsdWUpIHtcblx0ICAgIGlmICghcHJv
cFZhbHVlLmNvbnN0cnVjdG9yIHx8ICFwcm9wVmFsdWUuY29uc3RydWN0b3IubmFtZSkge1xuXHQg
ICAgICByZXR1cm4gQU5PTllNT1VTO1xuXHQgICAgfVxuXHQgICAgcmV0dXJuIHByb3BWYWx1ZS5j
b25zdHJ1Y3Rvci5uYW1lO1xuXHQgIH1cblx0XG5cdCAgUmVhY3RQcm9wVHlwZXMuY2hlY2tQcm9w
VHlwZXMgPSBjaGVja1Byb3BUeXBlcztcblx0ICBSZWFjdFByb3BUeXBlcy5Qcm9wVHlwZXMgPSBS
ZWFjdFByb3BUeXBlcztcblx0XG5cdCAgcmV0dXJuIFJlYWN0UHJvcFR5cGVzO1xuXHR9O1xuXG5c
bi8qKiovIH0sXG4vKiAxMjMgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193
ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdG1vZHVsZS5leHBv
cnRzID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMzcpO1xuXG5cbi8qKiovIH0sXG4vKiAxMjQgKi9c
bi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmln
aHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVk
LlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qt
c3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290
IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAq
IG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhl
IHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5c
dHZhciBBUklBRE9NUHJvcGVydHlDb25maWcgPSB7XG5cdCAgUHJvcGVydGllczoge1xuXHQgICAg
Ly8gR2xvYmFsIFN0YXRlcyBhbmQgUHJvcGVydGllc1xuXHQgICAgJ2FyaWEtY3VycmVudCc6IDAs
IC8vIHN0YXRlXG5cdCAgICAnYXJpYS1kZXRhaWxzJzogMCxcblx0ICAgICdhcmlhLWRpc2FibGVk
JzogMCwgLy8gc3RhdGVcblx0ICAgICdhcmlhLWhpZGRlbic6IDAsIC8vIHN0YXRlXG5cdCAgICAn
YXJpYS1pbnZhbGlkJzogMCwgLy8gc3RhdGVcblx0ICAgICdhcmlhLWtleXNob3J0Y3V0cyc6IDAs
XG5cdCAgICAnYXJpYS1sYWJlbCc6IDAsXG5cdCAgICAnYXJpYS1yb2xlZGVzY3JpcHRpb24nOiAw
LFxuXHQgICAgLy8gV2lkZ2V0IEF0dHJpYnV0ZXNcblx0ICAgICdhcmlhLWF1dG9jb21wbGV0ZSc6
IDAsXG5cdCAgICAnYXJpYS1jaGVja2VkJzogMCxcblx0ICAgICdhcmlhLWV4cGFuZGVkJzogMCxc
blx0ICAgICdhcmlhLWhhc3BvcHVwJzogMCxcblx0ICAgICdhcmlhLWxldmVsJzogMCxcblx0ICAg
ICdhcmlhLW1vZGFsJzogMCxcblx0ICAgICdhcmlhLW11bHRpbGluZSc6IDAsXG5cdCAgICAnYXJp
YS1tdWx0aXNlbGVjdGFibGUnOiAwLFxuXHQgICAgJ2FyaWEtb3JpZW50YXRpb24nOiAwLFxuXHQg
ICAgJ2FyaWEtcGxhY2Vob2xkZXInOiAwLFxuXHQgICAgJ2FyaWEtcHJlc3NlZCc6IDAsXG5cdCAg
ICAnYXJpYS1yZWFkb25seSc6IDAsXG5cdCAgICAnYXJpYS1yZXF1aXJlZCc6IDAsXG5cdCAgICAn
YXJpYS1zZWxlY3RlZCc6IDAsXG5cdCAgICAnYXJpYS1zb3J0JzogMCxcblx0ICAgICdhcmlhLXZh
bHVlbWF4JzogMCxcblx0ICAgICdhcmlhLXZhbHVlbWluJzogMCxcblx0ICAgICdhcmlhLXZhbHVl
bm93JzogMCxcblx0ICAgICdhcmlhLXZhbHVldGV4dCc6IDAsXG5cdCAgICAvLyBMaXZlIFJlZ2lv
biBBdHRyaWJ1dGVzXG5cdCAgICAnYXJpYS1hdG9taWMnOiAwLFxuXHQgICAgJ2FyaWEtYnVzeSc6
IDAsXG5cdCAgICAnYXJpYS1saXZlJzogMCxcblx0ICAgICdhcmlhLXJlbGV2YW50JzogMCxcblx0
ICAgIC8vIERyYWctYW5kLURyb3AgQXR0cmlidXRlc1xuXHQgICAgJ2FyaWEtZHJvcGVmZmVjdCc6
IDAsXG5cdCAgICAnYXJpYS1ncmFiYmVkJzogMCxcblx0ICAgIC8vIFJlbGF0aW9uc2hpcCBBdHRy
aWJ1dGVzXG5cdCAgICAnYXJpYS1hY3RpdmVkZXNjZW5kYW50JzogMCxcblx0ICAgICdhcmlhLWNv
bGNvdW50JzogMCxcblx0ICAgICdhcmlhLWNvbGluZGV4JzogMCxcblx0ICAgICdhcmlhLWNvbHNw
YW4nOiAwLFxuXHQgICAgJ2FyaWEtY29udHJvbHMnOiAwLFxuXHQgICAgJ2FyaWEtZGVzY3JpYmVk
YnknOiAwLFxuXHQgICAgJ2FyaWEtZXJyb3JtZXNzYWdlJzogMCxcblx0ICAgICdhcmlhLWZsb3d0
byc6IDAsXG5cdCAgICAnYXJpYS1sYWJlbGxlZGJ5JzogMCxcblx0ICAgICdhcmlhLW93bnMnOiAw
LFxuXHQgICAgJ2FyaWEtcG9zaW5zZXQnOiAwLFxuXHQgICAgJ2FyaWEtcm93Y291bnQnOiAwLFxu
XHQgICAgJ2FyaWEtcm93aW5kZXgnOiAwLFxuXHQgICAgJ2FyaWEtcm93c3Bhbic6IDAsXG5cdCAg
ICAnYXJpYS1zZXRzaXplJzogMFxuXHQgIH0sXG5cdCAgRE9NQXR0cmlidXRlTmFtZXM6IHt9LFxu
XHQgIERPTVByb3BlcnR5TmFtZXM6IHt9XG5cdH07XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IEFS
SUFET01Qcm9wZXJ0eUNvbmZpZztcblxuLyoqKi8gfSxcbi8qIDEyNSAqL1xuLyoqKi8gZnVuY3Rp
b24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0LyoqXG5cdCAq
IENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMg
cmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIg
dGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4g
dGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3Jh
bnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmls
ZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqL1xuXHRcblx0J3VzZSBzdHJpY3Qn
O1xuXHRcblx0dmFyIFJlYWN0RE9NQ29tcG9uZW50VHJlZSA9IF9fd2VicGFja19yZXF1aXJlX18o
NSk7XG5cdFxuXHR2YXIgZm9jdXNOb2RlID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1Mik7XG5cdFxu
XHR2YXIgQXV0b0ZvY3VzVXRpbHMgPSB7XG5cdCAgZm9jdXNET01Db21wb25lbnQ6IGZ1bmN0aW9u
ICgpIHtcblx0ICAgIGZvY3VzTm9kZShSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0Tm9kZUZyb21J
bnN0YW5jZSh0aGlzKSk7XG5cdCAgfVxuXHR9O1xuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBBdXRv
Rm9jdXNVdGlscztcblxuLyoqKi8gfSxcbi8qIDEyNiAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxl
LCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0LyoqXG5cdCAqIENvcHlyaWdo
dCAyMDEzLXByZXNlbnQgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5c
blx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0
eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBk
aXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBv
ZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBz
YW1lIGRpcmVjdG9yeS5cblx0ICpcblx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHR2
YXIgRXZlbnRQcm9wYWdhdG9ycyA9IF9fd2VicGFja19yZXF1aXJlX18oMjApO1xuXHR2YXIgRXhl
Y3V0aW9uRW52aXJvbm1lbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDYpO1xuXHR2YXIgRmFsbGJh
Y2tDb21wb3NpdGlvblN0YXRlID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMzIpO1xuXHR2YXIgU3lu
dGhldGljQ29tcG9zaXRpb25FdmVudCA9IF9fd2VicGFja19yZXF1aXJlX18oMTY5KTtcblx0dmFy
IFN5bnRoZXRpY0lucHV0RXZlbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE3Mik7XG5cdFxuXHR2
YXIgRU5EX0tFWUNPREVTID0gWzksIDEzLCAyNywgMzJdOyAvLyBUYWIsIFJldHVybiwgRXNjLCBT
cGFjZVxuXHR2YXIgU1RBUlRfS0VZQ09ERSA9IDIyOTtcblx0XG5cdHZhciBjYW5Vc2VDb21wb3Np
dGlvbkV2ZW50ID0gRXhlY3V0aW9uRW52aXJvbm1lbnQuY2FuVXNlRE9NICYmICdDb21wb3NpdGlv
bkV2ZW50JyBpbiB3aW5kb3c7XG5cdFxuXHR2YXIgZG9jdW1lbnRNb2RlID0gbnVsbDtcblx0aWYg
KEV4ZWN1dGlvbkVudmlyb25tZW50LmNhblVzZURPTSAmJiAnZG9jdW1lbnRNb2RlJyBpbiBkb2N1
bWVudCkge1xuXHQgIGRvY3VtZW50TW9kZSA9IGRvY3VtZW50LmRvY3VtZW50TW9kZTtcblx0fVxu
XHRcblx0Ly8gV2Via2l0IG9mZmVycyBhIHZlcnkgdXNlZnVsIGB0ZXh0SW5wdXRgIGV2ZW50IHRo
YXQgY2FuIGJlIHVzZWQgdG9cblx0Ly8gZGlyZWN0bHkgcmVwcmVzZW50IGBiZWZvcmVJbnB1dGAu
IFRoZSBJRSBgdGV4dGlucHV0YCBldmVudCBpcyBub3QgYXNcblx0Ly8gdXNlZnVsLCBzbyB3ZSBk
b24ndCB1c2UgaXQuXG5cdHZhciBjYW5Vc2VUZXh0SW5wdXRFdmVudCA9IEV4ZWN1dGlvbkVudmly
b25tZW50LmNhblVzZURPTSAmJiAnVGV4dEV2ZW50JyBpbiB3aW5kb3cgJiYgIWRvY3VtZW50TW9k
ZSAmJiAhaXNQcmVzdG8oKTtcblx0XG5cdC8vIEluIElFOSssIHdlIGhhdmUgYWNjZXNzIHRvIGNv
bXBvc2l0aW9uIGV2ZW50cywgYnV0IHRoZSBkYXRhIHN1cHBsaWVkXG5cdC8vIGJ5IHRoZSBuYXRp
dmUgY29tcG9zaXRpb25lbmQgZXZlbnQgbWF5IGJlIGluY29ycmVjdC4gSmFwYW5lc2UgaWRlb2dy
YXBoaWNcblx0Ly8gc3BhY2VzLCBmb3IgaW5zdGFuY2UgKFxcdTMwMDApIGFyZSBub3QgcmVjb3Jk
ZWQgY29ycmVjdGx5LlxuXHR2YXIgdXNlRmFsbGJhY2tDb21wb3NpdGlvbkRhdGEgPSBFeGVjdXRp
b25FbnZpcm9ubWVudC5jYW5Vc2VET00gJiYgKCFjYW5Vc2VDb21wb3NpdGlvbkV2ZW50IHx8IGRv
Y3VtZW50TW9kZSAmJiBkb2N1bWVudE1vZGUgPiA4ICYmIGRvY3VtZW50TW9kZSA8PSAxMSk7XG5c
dFxuXHQvKipcblx0ICogT3BlcmEgPD0gMTIgaW5jbHVkZXMgVGV4dEV2ZW50IGluIHdpbmRvdywg
YnV0IGRvZXMgbm90IGZpcmVcblx0ICogdGV4dCBpbnB1dCBldmVudHMuIFJlbHkgb24ga2V5cHJl
c3MgaW5zdGVhZC5cblx0ICovXG5cdGZ1bmN0aW9uIGlzUHJlc3RvKCkge1xuXHQgIHZhciBvcGVy
YSA9IHdpbmRvdy5vcGVyYTtcblx0ICByZXR1cm4gdHlwZW9mIG9wZXJhID09PSAnb2JqZWN0JyAm
JiB0eXBlb2Ygb3BlcmEudmVyc2lvbiA9PT0gJ2Z1bmN0aW9uJyAmJiBwYXJzZUludChvcGVyYS52
ZXJzaW9uKCksIDEwKSA8PSAxMjtcblx0fVxuXHRcblx0dmFyIFNQQUNFQkFSX0NPREUgPSAzMjtc
blx0dmFyIFNQQUNFQkFSX0NIQVIgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKFNQQUNFQkFSX0NPREUp
O1xuXHRcblx0Ly8gRXZlbnRzIGFuZCB0aGVpciBjb3JyZXNwb25kaW5nIHByb3BlcnR5IG5hbWVz
LlxuXHR2YXIgZXZlbnRUeXBlcyA9IHtcblx0ICBiZWZvcmVJbnB1dDoge1xuXHQgICAgcGhhc2Vk
UmVnaXN0cmF0aW9uTmFtZXM6IHtcblx0ICAgICAgYnViYmxlZDogJ29uQmVmb3JlSW5wdXQnLFxu
XHQgICAgICBjYXB0dXJlZDogJ29uQmVmb3JlSW5wdXRDYXB0dXJlJ1xuXHQgICAgfSxcblx0ICAg
IGRlcGVuZGVuY2llczogWyd0b3BDb21wb3NpdGlvbkVuZCcsICd0b3BLZXlQcmVzcycsICd0b3BU
ZXh0SW5wdXQnLCAndG9wUGFzdGUnXVxuXHQgIH0sXG5cdCAgY29tcG9zaXRpb25FbmQ6IHtcblx0
ICAgIHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOiB7XG5cdCAgICAgIGJ1YmJsZWQ6ICdvbkNvbXBv
c2l0aW9uRW5kJyxcblx0ICAgICAgY2FwdHVyZWQ6ICdvbkNvbXBvc2l0aW9uRW5kQ2FwdHVyZSdc
blx0ICAgIH0sXG5cdCAgICBkZXBlbmRlbmNpZXM6IFsndG9wQmx1cicsICd0b3BDb21wb3NpdGlv
bkVuZCcsICd0b3BLZXlEb3duJywgJ3RvcEtleVByZXNzJywgJ3RvcEtleVVwJywgJ3RvcE1vdXNl
RG93biddXG5cdCAgfSxcblx0ICBjb21wb3NpdGlvblN0YXJ0OiB7XG5cdCAgICBwaGFzZWRSZWdp
c3RyYXRpb25OYW1lczoge1xuXHQgICAgICBidWJibGVkOiAnb25Db21wb3NpdGlvblN0YXJ0Jyxc
blx0ICAgICAgY2FwdHVyZWQ6ICdvbkNvbXBvc2l0aW9uU3RhcnRDYXB0dXJlJ1xuXHQgICAgfSxc
blx0ICAgIGRlcGVuZGVuY2llczogWyd0b3BCbHVyJywgJ3RvcENvbXBvc2l0aW9uU3RhcnQnLCAn
dG9wS2V5RG93bicsICd0b3BLZXlQcmVzcycsICd0b3BLZXlVcCcsICd0b3BNb3VzZURvd24nXVxu
XHQgIH0sXG5cdCAgY29tcG9zaXRpb25VcGRhdGU6IHtcblx0ICAgIHBoYXNlZFJlZ2lzdHJhdGlv
bk5hbWVzOiB7XG5cdCAgICAgIGJ1YmJsZWQ6ICdvbkNvbXBvc2l0aW9uVXBkYXRlJyxcblx0ICAg
ICAgY2FwdHVyZWQ6ICdvbkNvbXBvc2l0aW9uVXBkYXRlQ2FwdHVyZSdcblx0ICAgIH0sXG5cdCAg
ICBkZXBlbmRlbmNpZXM6IFsndG9wQmx1cicsICd0b3BDb21wb3NpdGlvblVwZGF0ZScsICd0b3BL
ZXlEb3duJywgJ3RvcEtleVByZXNzJywgJ3RvcEtleVVwJywgJ3RvcE1vdXNlRG93biddXG5cdCAg
fVxuXHR9O1xuXHRcblx0Ly8gVHJhY2sgd2hldGhlciB3ZSd2ZSBldmVyIGhhbmRsZWQgYSBrZXlw
cmVzcyBvbiB0aGUgc3BhY2Uga2V5LlxuXHR2YXIgaGFzU3BhY2VLZXlwcmVzcyA9IGZhbHNlO1xu
XHRcblx0LyoqXG5cdCAqIFJldHVybiB3aGV0aGVyIGEgbmF0aXZlIGtleXByZXNzIGV2ZW50IGlz
IGFzc3VtZWQgdG8gYmUgYSBjb21tYW5kLlxuXHQgKiBUaGlzIGlzIHJlcXVpcmVkIGJlY2F1c2Ug
RmlyZWZveCBmaXJlcyBga2V5cHJlc3NgIGV2ZW50cyBmb3Iga2V5IGNvbW1hbmRzXG5cdCAqIChj
dXQsIGNvcHksIHNlbGVjdC1hbGwsIGV0Yy4pIGV2ZW4gdGhvdWdoIG5vIGNoYXJhY3RlciBpcyBp
bnNlcnRlZC5cblx0ICovXG5cdGZ1bmN0aW9uIGlzS2V5cHJlc3NDb21tYW5kKG5hdGl2ZUV2ZW50
KSB7XG5cdCAgcmV0dXJuIChuYXRpdmVFdmVudC5jdHJsS2V5IHx8IG5hdGl2ZUV2ZW50LmFsdEtl
eSB8fCBuYXRpdmVFdmVudC5tZXRhS2V5KSAmJlxuXHQgIC8vIGN0cmxLZXkgJiYgYWx0S2V5IGlz
IGVxdWl2YWxlbnQgdG8gQWx0R3IsIGFuZCBpcyBub3QgYSBjb21tYW5kLlxuXHQgICEobmF0aXZl
RXZlbnQuY3RybEtleSAmJiBuYXRpdmVFdmVudC5hbHRLZXkpO1xuXHR9XG5cdFxuXHQvKipcblx0
ICogVHJhbnNsYXRlIG5hdGl2ZSB0b3AgbGV2ZWwgZXZlbnRzIGludG8gZXZlbnQgdHlwZXMuXG5c
dCAqXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSB0b3BMZXZlbFR5cGVcblx0ICogQHJldHVybiB7b2Jq
ZWN0fVxuXHQgKi9cblx0ZnVuY3Rpb24gZ2V0Q29tcG9zaXRpb25FdmVudFR5cGUodG9wTGV2ZWxU
eXBlKSB7XG5cdCAgc3dpdGNoICh0b3BMZXZlbFR5cGUpIHtcblx0ICAgIGNhc2UgJ3RvcENvbXBv
c2l0aW9uU3RhcnQnOlxuXHQgICAgICByZXR1cm4gZXZlbnRUeXBlcy5jb21wb3NpdGlvblN0YXJ0
O1xuXHQgICAgY2FzZSAndG9wQ29tcG9zaXRpb25FbmQnOlxuXHQgICAgICByZXR1cm4gZXZlbnRU
eXBlcy5jb21wb3NpdGlvbkVuZDtcblx0ICAgIGNhc2UgJ3RvcENvbXBvc2l0aW9uVXBkYXRlJzpc
blx0ICAgICAgcmV0dXJuIGV2ZW50VHlwZXMuY29tcG9zaXRpb25VcGRhdGU7XG5cdCAgfVxuXHR9
XG5cdFxuXHQvKipcblx0ICogRG9lcyBvdXIgZmFsbGJhY2sgYmVzdC1ndWVzcyBtb2RlbCB0aGlu
ayB0aGlzIGV2ZW50IHNpZ25pZmllcyB0aGF0XG5cdCAqIGNvbXBvc2l0aW9uIGhhcyBiZWd1bj9c
blx0ICpcblx0ICogQHBhcmFtIHtzdHJpbmd9IHRvcExldmVsVHlwZVxuXHQgKiBAcGFyYW0ge29i
amVjdH0gbmF0aXZlRXZlbnRcblx0ICogQHJldHVybiB7Ym9vbGVhbn1cblx0ICovXG5cdGZ1bmN0
aW9uIGlzRmFsbGJhY2tDb21wb3NpdGlvblN0YXJ0KHRvcExldmVsVHlwZSwgbmF0aXZlRXZlbnQp
IHtcblx0ICByZXR1cm4gdG9wTGV2ZWxUeXBlID09PSAndG9wS2V5RG93bicgJiYgbmF0aXZlRXZl
bnQua2V5Q29kZSA9PT0gU1RBUlRfS0VZQ09ERTtcblx0fVxuXHRcblx0LyoqXG5cdCAqIERvZXMg
b3VyIGZhbGxiYWNrIG1vZGUgdGhpbmsgdGhhdCB0aGlzIGV2ZW50IGlzIHRoZSBlbmQgb2YgY29t
cG9zaXRpb24/XG5cdCAqXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSB0b3BMZXZlbFR5cGVcblx0ICog
QHBhcmFtIHtvYmplY3R9IG5hdGl2ZUV2ZW50XG5cdCAqIEByZXR1cm4ge2Jvb2xlYW59XG5cdCAq
L1xuXHRmdW5jdGlvbiBpc0ZhbGxiYWNrQ29tcG9zaXRpb25FbmQodG9wTGV2ZWxUeXBlLCBuYXRp
dmVFdmVudCkge1xuXHQgIHN3aXRjaCAodG9wTGV2ZWxUeXBlKSB7XG5cdCAgICBjYXNlICd0b3BL
ZXlVcCc6XG5cdCAgICAgIC8vIENvbW1hbmQga2V5cyBpbnNlcnQgb3IgY2xlYXIgSU1FIGlucHV0
LlxuXHQgICAgICByZXR1cm4gRU5EX0tFWUNPREVTLmluZGV4T2YobmF0aXZlRXZlbnQua2V5Q29k
ZSkgIT09IC0xO1xuXHQgICAgY2FzZSAndG9wS2V5RG93bic6XG5cdCAgICAgIC8vIEV4cGVjdCBJ
TUUga2V5Q29kZSBvbiBlYWNoIGtleWRvd24uIElmIHdlIGdldCBhbnkgb3RoZXJcblx0ICAgICAg
Ly8gY29kZSB3ZSBtdXN0IGhhdmUgZXhpdGVkIGVhcmxpZXIuXG5cdCAgICAgIHJldHVybiBuYXRp
dmVFdmVudC5rZXlDb2RlICE9PSBTVEFSVF9LRVlDT0RFO1xuXHQgICAgY2FzZSAndG9wS2V5UHJl
c3MnOlxuXHQgICAgY2FzZSAndG9wTW91c2VEb3duJzpcblx0ICAgIGNhc2UgJ3RvcEJsdXInOlxu
XHQgICAgICAvLyBFdmVudHMgYXJlIG5vdCBwb3NzaWJsZSB3aXRob3V0IGNhbmNlbGxpbmcgSU1F
LlxuXHQgICAgICByZXR1cm4gdHJ1ZTtcblx0ICAgIGRlZmF1bHQ6XG5cdCAgICAgIHJldHVybiBm
YWxzZTtcblx0ICB9XG5cdH1cblx0XG5cdC8qKlxuXHQgKiBHb29nbGUgSW5wdXQgVG9vbHMgcHJv
dmlkZXMgY29tcG9zaXRpb24gZGF0YSB2aWEgYSBDdXN0b21FdmVudCxcblx0ICogd2l0aCB0aGUg
YGRhdGFgIHByb3BlcnR5IHBvcHVsYXRlZCBpbiB0aGUgYGRldGFpbGAgb2JqZWN0LiBJZiB0aGlz
XG5cdCAqIGlzIGF2YWlsYWJsZSBvbiB0aGUgZXZlbnQgb2JqZWN0LCB1c2UgaXQuIElmIG5vdCwg
dGhpcyBpcyBhIHBsYWluXG5cdCAqIGNvbXBvc2l0aW9uIGV2ZW50IGFuZCB3ZSBoYXZlIG5vdGhp
bmcgc3BlY2lhbCB0byBleHRyYWN0LlxuXHQgKlxuXHQgKiBAcGFyYW0ge29iamVjdH0gbmF0aXZl
RXZlbnRcblx0ICogQHJldHVybiB7P3N0cmluZ31cblx0ICovXG5cdGZ1bmN0aW9uIGdldERhdGFG
cm9tQ3VzdG9tRXZlbnQobmF0aXZlRXZlbnQpIHtcblx0ICB2YXIgZGV0YWlsID0gbmF0aXZlRXZl
bnQuZGV0YWlsO1xuXHQgIGlmICh0eXBlb2YgZGV0YWlsID09PSAnb2JqZWN0JyAmJiAnZGF0YScg
aW4gZGV0YWlsKSB7XG5cdCAgICByZXR1cm4gZGV0YWlsLmRhdGE7XG5cdCAgfVxuXHQgIHJldHVy
biBudWxsO1xuXHR9XG5cdFxuXHQvLyBUcmFjayB0aGUgY3VycmVudCBJTUUgY29tcG9zaXRpb24g
ZmFsbGJhY2sgb2JqZWN0LCBpZiBhbnkuXG5cdHZhciBjdXJyZW50Q29tcG9zaXRpb24gPSBudWxs
O1xuXHRcblx0LyoqXG5cdCAqIEByZXR1cm4gez9vYmplY3R9IEEgU3ludGhldGljQ29tcG9zaXRp
b25FdmVudC5cblx0ICovXG5cdGZ1bmN0aW9uIGV4dHJhY3RDb21wb3NpdGlvbkV2ZW50KHRvcExl
dmVsVHlwZSwgdGFyZ2V0SW5zdCwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KSB7XG5c
dCAgdmFyIGV2ZW50VHlwZTtcblx0ICB2YXIgZmFsbGJhY2tEYXRhO1xuXHRcblx0ICBpZiAoY2Fu
VXNlQ29tcG9zaXRpb25FdmVudCkge1xuXHQgICAgZXZlbnRUeXBlID0gZ2V0Q29tcG9zaXRpb25F
dmVudFR5cGUodG9wTGV2ZWxUeXBlKTtcblx0ICB9IGVsc2UgaWYgKCFjdXJyZW50Q29tcG9zaXRp
b24pIHtcblx0ICAgIGlmIChpc0ZhbGxiYWNrQ29tcG9zaXRpb25TdGFydCh0b3BMZXZlbFR5cGUs
IG5hdGl2ZUV2ZW50KSkge1xuXHQgICAgICBldmVudFR5cGUgPSBldmVudFR5cGVzLmNvbXBvc2l0
aW9uU3RhcnQ7XG5cdCAgICB9XG5cdCAgfSBlbHNlIGlmIChpc0ZhbGxiYWNrQ29tcG9zaXRpb25F
bmQodG9wTGV2ZWxUeXBlLCBuYXRpdmVFdmVudCkpIHtcblx0ICAgIGV2ZW50VHlwZSA9IGV2ZW50
VHlwZXMuY29tcG9zaXRpb25FbmQ7XG5cdCAgfVxuXHRcblx0ICBpZiAoIWV2ZW50VHlwZSkge1xu
XHQgICAgcmV0dXJuIG51bGw7XG5cdCAgfVxuXHRcblx0ICBpZiAodXNlRmFsbGJhY2tDb21wb3Np
dGlvbkRhdGEpIHtcblx0ICAgIC8vIFRoZSBjdXJyZW50IGNvbXBvc2l0aW9uIGlzIHN0b3JlZCBz
dGF0aWNhbGx5IGFuZCBtdXN0IG5vdCBiZVxuXHQgICAgLy8gb3ZlcndyaXR0ZW4gd2hpbGUgY29t
cG9zaXRpb24gY29udGludWVzLlxuXHQgICAgaWYgKCFjdXJyZW50Q29tcG9zaXRpb24gJiYgZXZl
bnRUeXBlID09PSBldmVudFR5cGVzLmNvbXBvc2l0aW9uU3RhcnQpIHtcblx0ICAgICAgY3VycmVu
dENvbXBvc2l0aW9uID0gRmFsbGJhY2tDb21wb3NpdGlvblN0YXRlLmdldFBvb2xlZChuYXRpdmVF
dmVudFRhcmdldCk7XG5cdCAgICB9IGVsc2UgaWYgKGV2ZW50VHlwZSA9PT0gZXZlbnRUeXBlcy5j
b21wb3NpdGlvbkVuZCkge1xuXHQgICAgICBpZiAoY3VycmVudENvbXBvc2l0aW9uKSB7XG5cdCAg
ICAgICAgZmFsbGJhY2tEYXRhID0gY3VycmVudENvbXBvc2l0aW9uLmdldERhdGEoKTtcblx0ICAg
ICAgfVxuXHQgICAgfVxuXHQgIH1cblx0XG5cdCAgdmFyIGV2ZW50ID0gU3ludGhldGljQ29tcG9z
aXRpb25FdmVudC5nZXRQb29sZWQoZXZlbnRUeXBlLCB0YXJnZXRJbnN0LCBuYXRpdmVFdmVudCwg
bmF0aXZlRXZlbnRUYXJnZXQpO1xuXHRcblx0ICBpZiAoZmFsbGJhY2tEYXRhKSB7XG5cdCAgICAv
LyBJbmplY3QgZGF0YSBnZW5lcmF0ZWQgZnJvbSBmYWxsYmFjayBwYXRoIGludG8gdGhlIHN5bnRo
ZXRpYyBldmVudC5cblx0ICAgIC8vIFRoaXMgbWF0Y2hlcyB0aGUgcHJvcGVydHkgb2YgbmF0aXZl
IENvbXBvc2l0aW9uRXZlbnRJbnRlcmZhY2UuXG5cdCAgICBldmVudC5kYXRhID0gZmFsbGJhY2tE
YXRhO1xuXHQgIH0gZWxzZSB7XG5cdCAgICB2YXIgY3VzdG9tRGF0YSA9IGdldERhdGFGcm9tQ3Vz
dG9tRXZlbnQobmF0aXZlRXZlbnQpO1xuXHQgICAgaWYgKGN1c3RvbURhdGEgIT09IG51bGwpIHtc
blx0ICAgICAgZXZlbnQuZGF0YSA9IGN1c3RvbURhdGE7XG5cdCAgICB9XG5cdCAgfVxuXHRcblx0
ICBFdmVudFByb3BhZ2F0b3JzLmFjY3VtdWxhdGVUd29QaGFzZURpc3BhdGNoZXMoZXZlbnQpO1xu
XHQgIHJldHVybiBldmVudDtcblx0fVxuXHRcblx0LyoqXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSB0
b3BMZXZlbFR5cGUgUmVjb3JkIGZyb20gYEV2ZW50Q29uc3RhbnRzYC5cblx0ICogQHBhcmFtIHtv
YmplY3R9IG5hdGl2ZUV2ZW50IE5hdGl2ZSBicm93c2VyIGV2ZW50LlxuXHQgKiBAcmV0dXJuIHs/
c3RyaW5nfSBUaGUgc3RyaW5nIGNvcnJlc3BvbmRpbmcgdG8gdGhpcyBgYmVmb3JlSW5wdXRgIGV2
ZW50LlxuXHQgKi9cblx0ZnVuY3Rpb24gZ2V0TmF0aXZlQmVmb3JlSW5wdXRDaGFycyh0b3BMZXZl
bFR5cGUsIG5hdGl2ZUV2ZW50KSB7XG5cdCAgc3dpdGNoICh0b3BMZXZlbFR5cGUpIHtcblx0ICAg
IGNhc2UgJ3RvcENvbXBvc2l0aW9uRW5kJzpcblx0ICAgICAgcmV0dXJuIGdldERhdGFGcm9tQ3Vz
dG9tRXZlbnQobmF0aXZlRXZlbnQpO1xuXHQgICAgY2FzZSAndG9wS2V5UHJlc3MnOlxuXHQgICAg
ICAvKipcblx0ICAgICAgICogSWYgbmF0aXZlIGB0ZXh0SW5wdXRgIGV2ZW50cyBhcmUgYXZhaWxh
YmxlLCBvdXIgZ29hbCBpcyB0byBtYWtlXG5cdCAgICAgICAqIHVzZSBvZiB0aGVtLiBIb3dldmVy
LCB0aGVyZSBpcyBhIHNwZWNpYWwgY2FzZTogdGhlIHNwYWNlYmFyIGtleS5cblx0ICAgICAgICog
SW4gV2Via2l0LCBwcmV2ZW50aW5nIGRlZmF1bHQgb24gYSBzcGFjZWJhciBgdGV4dElucHV0YCBl
dmVudFxuXHQgICAgICAgKiBjYW5jZWxzIGNoYXJhY3RlciBpbnNlcnRpb24sIGJ1dCBpdCAqYWxz
byogY2F1c2VzIHRoZSBicm93c2VyXG5cdCAgICAgICAqIHRvIGZhbGwgYmFjayB0byBpdHMgZGVm
YXVsdCBzcGFjZWJhciBiZWhhdmlvciBvZiBzY3JvbGxpbmcgdGhlXG5cdCAgICAgICAqIHBhZ2Uu
XG5cdCAgICAgICAqXG5cdCAgICAgICAqIFRyYWNraW5nIGF0OlxuXHQgICAgICAgKiBodHRwczov
L2NvZGUuZ29vZ2xlLmNvbS9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9MzU1MTAzXG5cdCAg
ICAgICAqXG5cdCAgICAgICAqIFRvIGF2b2lkIHRoaXMgaXNzdWUsIHVzZSB0aGUga2V5cHJlc3Mg
ZXZlbnQgYXMgaWYgbm8gYHRleHRJbnB1dGBcblx0ICAgICAgICogZXZlbnQgaXMgYXZhaWxhYmxl
LlxuXHQgICAgICAgKi9cblx0ICAgICAgdmFyIHdoaWNoID0gbmF0aXZlRXZlbnQud2hpY2g7XG5c
dCAgICAgIGlmICh3aGljaCAhPT0gU1BBQ0VCQVJfQ09ERSkge1xuXHQgICAgICAgIHJldHVybiBu
dWxsO1xuXHQgICAgICB9XG5cdFxuXHQgICAgICBoYXNTcGFjZUtleXByZXNzID0gdHJ1ZTtcblx0
ICAgICAgcmV0dXJuIFNQQUNFQkFSX0NIQVI7XG5cdFxuXHQgICAgY2FzZSAndG9wVGV4dElucHV0
Jzpcblx0ICAgICAgLy8gUmVjb3JkIHRoZSBjaGFyYWN0ZXJzIHRvIGJlIGFkZGVkIHRvIHRoZSBE
T00uXG5cdCAgICAgIHZhciBjaGFycyA9IG5hdGl2ZUV2ZW50LmRhdGE7XG5cdFxuXHQgICAgICAv
LyBJZiBpdCdzIGEgc3BhY2ViYXIgY2hhcmFjdGVyLCBhc3N1bWUgdGhhdCB3ZSBoYXZlIGFscmVh
ZHkgaGFuZGxlZFxuXHQgICAgICAvLyBpdCBhdCB0aGUga2V5cHJlc3MgbGV2ZWwgYW5kIGJhaWwg
aW1tZWRpYXRlbHkuIEFuZHJvaWQgQ2hyb21lXG5cdCAgICAgIC8vIGRvZXNuJ3QgZ2l2ZSB1cyBr
ZXljb2Rlcywgc28gd2UgbmVlZCB0byBibGFja2xpc3QgaXQuXG5cdCAgICAgIGlmIChjaGFycyA9
PT0gU1BBQ0VCQVJfQ0hBUiAmJiBoYXNTcGFjZUtleXByZXNzKSB7XG5cdCAgICAgICAgcmV0dXJu
IG51bGw7XG5cdCAgICAgIH1cblx0XG5cdCAgICAgIHJldHVybiBjaGFycztcblx0XG5cdCAgICBk
ZWZhdWx0OlxuXHQgICAgICAvLyBGb3Igb3RoZXIgbmF0aXZlIGV2ZW50IHR5cGVzLCBkbyBub3Ro
aW5nLlxuXHQgICAgICByZXR1cm4gbnVsbDtcblx0ICB9XG5cdH1cblx0XG5cdC8qKlxuXHQgKiBG
b3IgYnJvd3NlcnMgdGhhdCBkbyBub3QgcHJvdmlkZSB0aGUgYHRleHRJbnB1dGAgZXZlbnQsIGV4
dHJhY3QgdGhlXG5cdCAqIGFwcHJvcHJpYXRlIHN0cmluZyB0byB1c2UgZm9yIFN5bnRoZXRpY0lu
cHV0RXZlbnQuXG5cdCAqXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSB0b3BMZXZlbFR5cGUgUmVjb3Jk
IGZyb20gYEV2ZW50Q29uc3RhbnRzYC5cblx0ICogQHBhcmFtIHtvYmplY3R9IG5hdGl2ZUV2ZW50
IE5hdGl2ZSBicm93c2VyIGV2ZW50LlxuXHQgKiBAcmV0dXJuIHs/c3RyaW5nfSBUaGUgZmFsbGJh
Y2sgc3RyaW5nIGZvciB0aGlzIGBiZWZvcmVJbnB1dGAgZXZlbnQuXG5cdCAqL1xuXHRmdW5jdGlv
biBnZXRGYWxsYmFja0JlZm9yZUlucHV0Q2hhcnModG9wTGV2ZWxUeXBlLCBuYXRpdmVFdmVudCkg
e1xuXHQgIC8vIElmIHdlIGFyZSBjdXJyZW50bHkgY29tcG9zaW5nIChJTUUpIGFuZCB1c2luZyBh
IGZhbGxiYWNrIHRvIGRvIHNvLFxuXHQgIC8vIHRyeSB0byBleHRyYWN0IHRoZSBjb21wb3NlZCBj
aGFyYWN0ZXJzIGZyb20gdGhlIGZhbGxiYWNrIG9iamVjdC5cblx0ICAvLyBJZiBjb21wb3NpdGlv
biBldmVudCBpcyBhdmFpbGFibGUsIHdlIGV4dHJhY3QgYSBzdHJpbmcgb25seSBhdFxuXHQgIC8v
IGNvbXBvc2l0aW9uZXZlbnQsIG90aGVyd2lzZSBleHRyYWN0IGl0IGF0IGZhbGxiYWNrIGV2ZW50
cy5cblx0ICBpZiAoY3VycmVudENvbXBvc2l0aW9uKSB7XG5cdCAgICBpZiAodG9wTGV2ZWxUeXBl
ID09PSAndG9wQ29tcG9zaXRpb25FbmQnIHx8ICFjYW5Vc2VDb21wb3NpdGlvbkV2ZW50ICYmIGlz
RmFsbGJhY2tDb21wb3NpdGlvbkVuZCh0b3BMZXZlbFR5cGUsIG5hdGl2ZUV2ZW50KSkge1xuXHQg
ICAgICB2YXIgY2hhcnMgPSBjdXJyZW50Q29tcG9zaXRpb24uZ2V0RGF0YSgpO1xuXHQgICAgICBG
YWxsYmFja0NvbXBvc2l0aW9uU3RhdGUucmVsZWFzZShjdXJyZW50Q29tcG9zaXRpb24pO1xuXHQg
ICAgICBjdXJyZW50Q29tcG9zaXRpb24gPSBudWxsO1xuXHQgICAgICByZXR1cm4gY2hhcnM7XG5c
dCAgICB9XG5cdCAgICByZXR1cm4gbnVsbDtcblx0ICB9XG5cdFxuXHQgIHN3aXRjaCAodG9wTGV2
ZWxUeXBlKSB7XG5cdCAgICBjYXNlICd0b3BQYXN0ZSc6XG5cdCAgICAgIC8vIElmIGEgcGFzdGUg
ZXZlbnQgb2NjdXJzIGFmdGVyIGEga2V5cHJlc3MsIHRocm93IG91dCB0aGUgaW5wdXRcblx0ICAg
ICAgLy8gY2hhcnMuIFBhc3RlIGV2ZW50cyBzaG91bGQgbm90IGxlYWQgdG8gQmVmb3JlSW5wdXQg
ZXZlbnRzLlxuXHQgICAgICByZXR1cm4gbnVsbDtcblx0ICAgIGNhc2UgJ3RvcEtleVByZXNzJzpc
blx0ICAgICAgLyoqXG5cdCAgICAgICAqIEFzIG9mIHYyNywgRmlyZWZveCBtYXkgZmlyZSBrZXlw
cmVzcyBldmVudHMgZXZlbiB3aGVuIG5vIGNoYXJhY3RlclxuXHQgICAgICAgKiB3aWxsIGJlIGlu
c2VydGVkLiBBIGZldyBwb3NzaWJpbGl0aWVzOlxuXHQgICAgICAgKlxuXHQgICAgICAgKiAtIGB3
aGljaGAgaXMgYDBgLiBBcnJvdyBrZXlzLCBFc2Mga2V5LCBldGMuXG5cdCAgICAgICAqXG5cdCAg
ICAgICAqIC0gYHdoaWNoYCBpcyB0aGUgcHJlc3NlZCBrZXkgY29kZSwgYnV0IG5vIGNoYXIgaXMg
YXZhaWxhYmxlLlxuXHQgICAgICAgKiAgIEV4OiAnQWx0R3IgKyBkYCBpbiBQb2xpc2guIFRoZXJl
IGlzIG5vIG1vZGlmaWVkIGNoYXJhY3RlciBmb3Jcblx0ICAgICAgICogICB0aGlzIGtleSBjb21i
aW5hdGlvbiBhbmQgbm8gY2hhcmFjdGVyIGlzIGluc2VydGVkIGludG8gdGhlXG5cdCAgICAgICAq
ICAgZG9jdW1lbnQsIGJ1dCBGRiBmaXJlcyB0aGUga2V5cHJlc3MgZm9yIGNoYXIgY29kZSBgMTAw
YCBhbnl3YXkuXG5cdCAgICAgICAqICAgTm8gYGlucHV0YCBldmVudCB3aWxsIG9jY3VyLlxuXHQg
ICAgICAgKlxuXHQgICAgICAgKiAtIGB3aGljaGAgaXMgdGhlIHByZXNzZWQga2V5IGNvZGUsIGJ1
dCBhIGNvbW1hbmQgY29tYmluYXRpb24gaXNcblx0ICAgICAgICogICBiZWluZyB1c2VkLiBFeDog
YENtZCtDYC4gTm8gY2hhcmFjdGVyIGlzIGluc2VydGVkLCBhbmQgbm9cblx0ICAgICAgICogICBg
aW5wdXRgIGV2ZW50IHdpbGwgb2NjdXIuXG5cdCAgICAgICAqL1xuXHQgICAgICBpZiAobmF0aXZl
RXZlbnQud2hpY2ggJiYgIWlzS2V5cHJlc3NDb21tYW5kKG5hdGl2ZUV2ZW50KSkge1xuXHQgICAg
ICAgIHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKG5hdGl2ZUV2ZW50LndoaWNoKTtcblx0ICAg
ICAgfVxuXHQgICAgICByZXR1cm4gbnVsbDtcblx0ICAgIGNhc2UgJ3RvcENvbXBvc2l0aW9uRW5k
Jzpcblx0ICAgICAgcmV0dXJuIHVzZUZhbGxiYWNrQ29tcG9zaXRpb25EYXRhID8gbnVsbCA6IG5h
dGl2ZUV2ZW50LmRhdGE7XG5cdCAgICBkZWZhdWx0OlxuXHQgICAgICByZXR1cm4gbnVsbDtcblx0
ICB9XG5cdH1cblx0XG5cdC8qKlxuXHQgKiBFeHRyYWN0IGEgU3ludGhldGljSW5wdXRFdmVudCBm
b3IgYGJlZm9yZUlucHV0YCwgYmFzZWQgb24gZWl0aGVyIG5hdGl2ZVxuXHQgKiBgdGV4dElucHV0
YCBvciBmYWxsYmFjayBiZWhhdmlvci5cblx0ICpcblx0ICogQHJldHVybiB7P29iamVjdH0gQSBT
eW50aGV0aWNJbnB1dEV2ZW50LlxuXHQgKi9cblx0ZnVuY3Rpb24gZXh0cmFjdEJlZm9yZUlucHV0
RXZlbnQodG9wTGV2ZWxUeXBlLCB0YXJnZXRJbnN0LCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRU
YXJnZXQpIHtcblx0ICB2YXIgY2hhcnM7XG5cdFxuXHQgIGlmIChjYW5Vc2VUZXh0SW5wdXRFdmVu
dCkge1xuXHQgICAgY2hhcnMgPSBnZXROYXRpdmVCZWZvcmVJbnB1dENoYXJzKHRvcExldmVsVHlw
ZSwgbmF0aXZlRXZlbnQpO1xuXHQgIH0gZWxzZSB7XG5cdCAgICBjaGFycyA9IGdldEZhbGxiYWNr
QmVmb3JlSW5wdXRDaGFycyh0b3BMZXZlbFR5cGUsIG5hdGl2ZUV2ZW50KTtcblx0ICB9XG5cdFxu
XHQgIC8vIElmIG5vIGNoYXJhY3RlcnMgYXJlIGJlaW5nIGluc2VydGVkLCBubyBCZWZvcmVJbnB1
dCBldmVudCBzaG91bGRcblx0ICAvLyBiZSBmaXJlZC5cblx0ICBpZiAoIWNoYXJzKSB7XG5cdCAg
ICByZXR1cm4gbnVsbDtcblx0ICB9XG5cdFxuXHQgIHZhciBldmVudCA9IFN5bnRoZXRpY0lucHV0
RXZlbnQuZ2V0UG9vbGVkKGV2ZW50VHlwZXMuYmVmb3JlSW5wdXQsIHRhcmdldEluc3QsIG5hdGl2
ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCk7XG5cdFxuXHQgIGV2ZW50LmRhdGEgPSBjaGFycztc
blx0ICBFdmVudFByb3BhZ2F0b3JzLmFjY3VtdWxhdGVUd29QaGFzZURpc3BhdGNoZXMoZXZlbnQp
O1xuXHQgIHJldHVybiBldmVudDtcblx0fVxuXHRcblx0LyoqXG5cdCAqIENyZWF0ZSBhbiBgb25C
ZWZvcmVJbnB1dGAgZXZlbnQgdG8gbWF0Y2hcblx0ICogaHR0cDovL3d3dy53My5vcmcvVFIvMjAx
My9XRC1ET00tTGV2ZWwtMy1FdmVudHMtMjAxMzExMDUvI2V2ZW50cy1pbnB1dGV2ZW50cy5cblx0
ICpcblx0ICogVGhpcyBldmVudCBwbHVnaW4gaXMgYmFzZWQgb24gdGhlIG5hdGl2ZSBgdGV4dElu
cHV0YCBldmVudFxuXHQgKiBhdmFpbGFibGUgaW4gQ2hyb21lLCBTYWZhcmksIE9wZXJhLCBhbmQg
SUUuIFRoaXMgZXZlbnQgZmlyZXMgYWZ0ZXJcblx0ICogYG9uS2V5UHJlc3NgIGFuZCBgb25Db21w
b3NpdGlvbkVuZGAsIGJ1dCBiZWZvcmUgYG9uSW5wdXRgLlxuXHQgKlxuXHQgKiBgYmVmb3JlSW5w
dXRgIGlzIHNwZWMnZCBidXQgbm90IGltcGxlbWVudGVkIGluIGFueSBicm93c2VycywgYW5kXG5c
dCAqIHRoZSBgaW5wdXRgIGV2ZW50IGRvZXMgbm90IHByb3ZpZGUgYW55IHVzZWZ1bCBpbmZvcm1h
dGlvbiBhYm91dCB3aGF0IGhhc1xuXHQgKiBhY3R1YWxseSBiZWVuIGFkZGVkLCBjb250cmFyeSB0
byB0aGUgc3BlYy4gVGh1cywgYHRleHRJbnB1dGAgaXMgdGhlIGJlc3Rcblx0ICogYXZhaWxhYmxl
IGV2ZW50IHRvIGlkZW50aWZ5IHRoZSBjaGFyYWN0ZXJzIHRoYXQgaGF2ZSBhY3R1YWxseSBiZWVu
IGluc2VydGVkXG5cdCAqIGludG8gdGhlIHRhcmdldCBub2RlLlxuXHQgKlxuXHQgKiBUaGlzIHBs
dWdpbiBpcyBhbHNvIHJlc3BvbnNpYmxlIGZvciBlbWl0dGluZyBgY29tcG9zaXRpb25gIGV2ZW50
cywgdGh1c1xuXHQgKiBhbGxvd2luZyB1cyB0byBzaGFyZSBjb21wb3NpdGlvbiBmYWxsYmFjayBj
b2RlIGZvciBib3RoIGBiZWZvcmVJbnB1dGAgYW5kXG5cdCAqIGBjb21wb3NpdGlvbmAgZXZlbnQg
dHlwZXMuXG5cdCAqL1xuXHR2YXIgQmVmb3JlSW5wdXRFdmVudFBsdWdpbiA9IHtcblx0ICBldmVu
dFR5cGVzOiBldmVudFR5cGVzLFxuXHRcblx0ICBleHRyYWN0RXZlbnRzOiBmdW5jdGlvbiAodG9w
TGV2ZWxUeXBlLCB0YXJnZXRJbnN0LCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpIHtc
blx0ICAgIHJldHVybiBbZXh0cmFjdENvbXBvc2l0aW9uRXZlbnQodG9wTGV2ZWxUeXBlLCB0YXJn
ZXRJbnN0LCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpLCBleHRyYWN0QmVmb3JlSW5w
dXRFdmVudCh0b3BMZXZlbFR5cGUsIHRhcmdldEluc3QsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVu
dFRhcmdldCldO1xuXHQgIH1cblx0fTtcblx0XG5cdG1vZHVsZS5leHBvcnRzID0gQmVmb3JlSW5w
dXRFdmVudFBsdWdpbjtcblxuLyoqKi8gfSxcbi8qIDEyNyAqL1xuLyoqKi8gZnVuY3Rpb24obW9k
dWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0LyoqXG5cdCAqIENvcHly
aWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2
ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJT
RC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJv
b3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0
ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0
aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqL1xuXHRcblx0J3VzZSBzdHJpY3QnO1xuXHRc
blx0dmFyIENTU1Byb3BlcnR5ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1OCk7XG5cdHZhciBFeGVj
dXRpb25FbnZpcm9ubWVudCA9IF9fd2VicGFja19yZXF1aXJlX18oNik7XG5cdHZhciBSZWFjdElu
c3RydW1lbnRhdGlvbiA9IF9fd2VicGFja19yZXF1aXJlX18oOCk7XG5cdFxuXHR2YXIgY2FtZWxp
emVTdHlsZU5hbWUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDk5KTtcblx0dmFyIGRhbmdlcm91c1N0
eWxlVmFsdWUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE3OCk7XG5cdHZhciBoeXBoZW5hdGVTdHls
ZU5hbWUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEwNik7XG5cdHZhciBtZW1vaXplU3RyaW5nT25s
eSA9IF9fd2VicGFja19yZXF1aXJlX18oMTA5KTtcblx0dmFyIHdhcm5pbmcgPSBfX3dlYnBhY2tf
cmVxdWlyZV9fKDIpO1xuXHRcblx0dmFyIHByb2Nlc3NTdHlsZU5hbWUgPSBtZW1vaXplU3RyaW5n
T25seShmdW5jdGlvbiAoc3R5bGVOYW1lKSB7XG5cdCAgcmV0dXJuIGh5cGhlbmF0ZVN0eWxlTmFt
ZShzdHlsZU5hbWUpO1xuXHR9KTtcblx0XG5cdHZhciBoYXNTaG9ydGhhbmRQcm9wZXJ0eUJ1ZyA9
IGZhbHNlO1xuXHR2YXIgc3R5bGVGbG9hdEFjY2Vzc29yID0gJ2Nzc0Zsb2F0Jztcblx0aWYgKEV4
ZWN1dGlvbkVudmlyb25tZW50LmNhblVzZURPTSkge1xuXHQgIHZhciB0ZW1wU3R5bGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKS5zdHlsZTtcblx0ICB0cnkge1xuXHQgICAgLy8gSUU4
IHRocm93cyBcIkludmFsaWQgYXJndW1lbnQuXCIgaWYgcmVzZXR0aW5nIHNob3J0aGFuZCBzdHls
ZSBwcm9wZXJ0aWVzLlxuXHQgICAgdGVtcFN0eWxlLmZvbnQgPSAnJztcblx0ICB9IGNhdGNoIChl
KSB7XG5cdCAgICBoYXNTaG9ydGhhbmRQcm9wZXJ0eUJ1ZyA9IHRydWU7XG5cdCAgfVxuXHQgIC8v
IElFOCBvbmx5IHN1cHBvcnRzIGFjY2Vzc2luZyBjc3NGbG9hdCAoc3RhbmRhcmQpIGFzIHN0eWxl
RmxvYXRcblx0ICBpZiAoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLmNzc0Zsb2F0ID09
PSB1bmRlZmluZWQpIHtcblx0ICAgIHN0eWxlRmxvYXRBY2Nlc3NvciA9ICdzdHlsZUZsb2F0Jztc
blx0ICB9XG5cdH1cblx0XG5cdGlmIChmYWxzZSkge1xuXHQgIC8vICdtc1RyYW5zZm9ybScgaXMg
Y29ycmVjdCwgYnV0IHRoZSBvdGhlciBwcmVmaXhlcyBzaG91bGQgYmUgY2FwaXRhbGl6ZWRcblx0
ICB2YXIgYmFkVmVuZG9yZWRTdHlsZU5hbWVQYXR0ZXJuID0gL14oPzp3ZWJraXR8bW96fG8pW0Et
Wl0vO1xuXHRcblx0ICAvLyBzdHlsZSB2YWx1ZXMgc2hvdWxkbid0IGNvbnRhaW4gYSBzZW1pY29s
b25cblx0ICB2YXIgYmFkU3R5bGVWYWx1ZVdpdGhTZW1pY29sb25QYXR0ZXJuID0gLztcXHMqJC87
XG5cdFxuXHQgIHZhciB3YXJuZWRTdHlsZU5hbWVzID0ge307XG5cdCAgdmFyIHdhcm5lZFN0eWxl
VmFsdWVzID0ge307XG5cdCAgdmFyIHdhcm5lZEZvck5hTlZhbHVlID0gZmFsc2U7XG5cdFxuXHQg
IHZhciB3YXJuSHlwaGVuYXRlZFN0eWxlTmFtZSA9IGZ1bmN0aW9uIChuYW1lLCBvd25lcikge1xu
XHQgICAgaWYgKHdhcm5lZFN0eWxlTmFtZXMuaGFzT3duUHJvcGVydHkobmFtZSkgJiYgd2FybmVk
U3R5bGVOYW1lc1tuYW1lXSkge1xuXHQgICAgICByZXR1cm47XG5cdCAgICB9XG5cdFxuXHQgICAg
d2FybmVkU3R5bGVOYW1lc1tuYW1lXSA9IHRydWU7XG5cdCAgICBwcm9jZXNzLmVudi5OT0RFX0VO
ViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ1Vuc3VwcG9ydGVkIHN0eWxlIHBy
b3BlcnR5ICVzLiBEaWQgeW91IG1lYW4gJXM/JXMnLCBuYW1lLCBjYW1lbGl6ZVN0eWxlTmFtZShu
YW1lKSwgY2hlY2tSZW5kZXJNZXNzYWdlKG93bmVyKSkgOiB2b2lkIDA7XG5cdCAgfTtcblx0XG5c
dCAgdmFyIHdhcm5CYWRWZW5kb3JlZFN0eWxlTmFtZSA9IGZ1bmN0aW9uIChuYW1lLCBvd25lcikg
e1xuXHQgICAgaWYgKHdhcm5lZFN0eWxlTmFtZXMuaGFzT3duUHJvcGVydHkobmFtZSkgJiYgd2Fy
bmVkU3R5bGVOYW1lc1tuYW1lXSkge1xuXHQgICAgICByZXR1cm47XG5cdCAgICB9XG5cdFxuXHQg
ICAgd2FybmVkU3R5bGVOYW1lc1tuYW1lXSA9IHRydWU7XG5cdCAgICBwcm9jZXNzLmVudi5OT0RF
X0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ1Vuc3VwcG9ydGVkIHZlbmRv
ci1wcmVmaXhlZCBzdHlsZSBwcm9wZXJ0eSAlcy4gRGlkIHlvdSBtZWFuICVzPyVzJywgbmFtZSwg
bmFtZS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIG5hbWUuc2xpY2UoMSksIGNoZWNrUmVuZGVy
TWVzc2FnZShvd25lcikpIDogdm9pZCAwO1xuXHQgIH07XG5cdFxuXHQgIHZhciB3YXJuU3R5bGVW
YWx1ZVdpdGhTZW1pY29sb24gPSBmdW5jdGlvbiAobmFtZSwgdmFsdWUsIG93bmVyKSB7XG5cdCAg
ICBpZiAod2FybmVkU3R5bGVWYWx1ZXMuaGFzT3duUHJvcGVydHkodmFsdWUpICYmIHdhcm5lZFN0
eWxlVmFsdWVzW3ZhbHVlXSkge1xuXHQgICAgICByZXR1cm47XG5cdCAgICB9XG5cdFxuXHQgICAg
d2FybmVkU3R5bGVWYWx1ZXNbdmFsdWVdID0gdHJ1ZTtcblx0ICAgIHByb2Nlc3MuZW52Lk5PREVf
RU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCBcIlN0eWxlIHByb3BlcnR5IHZh
bHVlcyBzaG91bGRuJ3QgY29udGFpbiBhIHNlbWljb2xvbi4lcyBcIiArICdUcnkgXCIlczogJXNc
IiBpbnN0ZWFkLicsIGNoZWNrUmVuZGVyTWVzc2FnZShvd25lciksIG5hbWUsIHZhbHVlLnJlcGxh
Y2UoYmFkU3R5bGVWYWx1ZVdpdGhTZW1pY29sb25QYXR0ZXJuLCAnJykpIDogdm9pZCAwO1xuXHQg
IH07XG5cdFxuXHQgIHZhciB3YXJuU3R5bGVWYWx1ZUlzTmFOID0gZnVuY3Rpb24gKG5hbWUsIHZh
bHVlLCBvd25lcikge1xuXHQgICAgaWYgKHdhcm5lZEZvck5hTlZhbHVlKSB7XG5cdCAgICAgIHJl
dHVybjtcblx0ICAgIH1cblx0XG5cdCAgICB3YXJuZWRGb3JOYU5WYWx1ZSA9IHRydWU7XG5cdCAg
ICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwg
J2BOYU5gIGlzIGFuIGludmFsaWQgdmFsdWUgZm9yIHRoZSBgJXNgIGNzcyBzdHlsZSBwcm9wZXJ0
eS4lcycsIG5hbWUsIGNoZWNrUmVuZGVyTWVzc2FnZShvd25lcikpIDogdm9pZCAwO1xuXHQgIH07
XG5cdFxuXHQgIHZhciBjaGVja1JlbmRlck1lc3NhZ2UgPSBmdW5jdGlvbiAob3duZXIpIHtcblx0
ICAgIGlmIChvd25lcikge1xuXHQgICAgICB2YXIgbmFtZSA9IG93bmVyLmdldE5hbWUoKTtcblx0
ICAgICAgaWYgKG5hbWUpIHtcblx0ICAgICAgICByZXR1cm4gJyBDaGVjayB0aGUgcmVuZGVyIG1l
dGhvZCBvZiBgJyArIG5hbWUgKyAnYC4nO1xuXHQgICAgICB9XG5cdCAgICB9XG5cdCAgICByZXR1
cm4gJyc7XG5cdCAgfTtcblx0XG5cdCAgLyoqXG5cdCAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWVc
blx0ICAgKiBAcGFyYW0geyp9IHZhbHVlXG5cdCAgICogQHBhcmFtIHtSZWFjdERPTUNvbXBvbmVu
dH0gY29tcG9uZW50XG5cdCAgICovXG5cdCAgdmFyIHdhcm5WYWxpZFN0eWxlID0gZnVuY3Rpb24g
KG5hbWUsIHZhbHVlLCBjb21wb25lbnQpIHtcblx0ICAgIHZhciBvd25lcjtcblx0ICAgIGlmIChj
b21wb25lbnQpIHtcblx0ICAgICAgb3duZXIgPSBjb21wb25lbnQuX2N1cnJlbnRFbGVtZW50Ll9v
d25lcjtcblx0ICAgIH1cblx0ICAgIGlmIChuYW1lLmluZGV4T2YoJy0nKSA+IC0xKSB7XG5cdCAg
ICAgIHdhcm5IeXBoZW5hdGVkU3R5bGVOYW1lKG5hbWUsIG93bmVyKTtcblx0ICAgIH0gZWxzZSBp
ZiAoYmFkVmVuZG9yZWRTdHlsZU5hbWVQYXR0ZXJuLnRlc3QobmFtZSkpIHtcblx0ICAgICAgd2Fy
bkJhZFZlbmRvcmVkU3R5bGVOYW1lKG5hbWUsIG93bmVyKTtcblx0ICAgIH0gZWxzZSBpZiAoYmFk
U3R5bGVWYWx1ZVdpdGhTZW1pY29sb25QYXR0ZXJuLnRlc3QodmFsdWUpKSB7XG5cdCAgICAgIHdh
cm5TdHlsZVZhbHVlV2l0aFNlbWljb2xvbihuYW1lLCB2YWx1ZSwgb3duZXIpO1xuXHQgICAgfVxu
XHRcblx0ICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInICYmIGlzTmFOKHZhbHVlKSkg
e1xuXHQgICAgICB3YXJuU3R5bGVWYWx1ZUlzTmFOKG5hbWUsIHZhbHVlLCBvd25lcik7XG5cdCAg
ICB9XG5cdCAgfTtcblx0fVxuXHRcblx0LyoqXG5cdCAqIE9wZXJhdGlvbnMgZm9yIGRlYWxpbmcg
d2l0aCBDU1MgcHJvcGVydGllcy5cblx0ICovXG5cdHZhciBDU1NQcm9wZXJ0eU9wZXJhdGlvbnMg
PSB7XG5cdCAgLyoqXG5cdCAgICogU2VyaWFsaXplcyBhIG1hcHBpbmcgb2Ygc3R5bGUgcHJvcGVy
dGllcyBmb3IgdXNlIGFzIGlubGluZSBzdHlsZXM6XG5cdCAgICpcblx0ICAgKiAgID4gY3JlYXRl
TWFya3VwRm9yU3R5bGVzKHt3aWR0aDogJzIwMHB4JywgaGVpZ2h0OiAwfSlcblx0ICAgKiAgIFwi
d2lkdGg6MjAwcHg7aGVpZ2h0OjA7XCJcblx0ICAgKlxuXHQgICAqIFVuZGVmaW5lZCB2YWx1ZXMg
YXJlIGlnbm9yZWQgc28gdGhhdCBkZWNsYXJhdGl2ZSBwcm9ncmFtbWluZyBpcyBlYXNpZXIuXG5c
dCAgICogVGhlIHJlc3VsdCBzaG91bGQgYmUgSFRNTC1lc2NhcGVkIGJlZm9yZSBpbnNlcnRpb24g
aW50byB0aGUgRE9NLlxuXHQgICAqXG5cdCAgICogQHBhcmFtIHtvYmplY3R9IHN0eWxlc1xuXHQg
ICAqIEBwYXJhbSB7UmVhY3RET01Db21wb25lbnR9IGNvbXBvbmVudFxuXHQgICAqIEByZXR1cm4g
ez9zdHJpbmd9XG5cdCAgICovXG5cdCAgY3JlYXRlTWFya3VwRm9yU3R5bGVzOiBmdW5jdGlvbiAo
c3R5bGVzLCBjb21wb25lbnQpIHtcblx0ICAgIHZhciBzZXJpYWxpemVkID0gJyc7XG5cdCAgICBm
b3IgKHZhciBzdHlsZU5hbWUgaW4gc3R5bGVzKSB7XG5cdCAgICAgIGlmICghc3R5bGVzLmhhc093
blByb3BlcnR5KHN0eWxlTmFtZSkpIHtcblx0ICAgICAgICBjb250aW51ZTtcblx0ICAgICAgfVxu
XHQgICAgICB2YXIgaXNDdXN0b21Qcm9wZXJ0eSA9IHN0eWxlTmFtZS5pbmRleE9mKCctLScpID09
PSAwO1xuXHQgICAgICB2YXIgc3R5bGVWYWx1ZSA9IHN0eWxlc1tzdHlsZU5hbWVdO1xuXHQgICAg
ICBpZiAoZmFsc2UpIHtcblx0ICAgICAgICBpZiAoIWlzQ3VzdG9tUHJvcGVydHkpIHtcblx0ICAg
ICAgICAgIHdhcm5WYWxpZFN0eWxlKHN0eWxlTmFtZSwgc3R5bGVWYWx1ZSwgY29tcG9uZW50KTtc
blx0ICAgICAgICB9XG5cdCAgICAgIH1cblx0ICAgICAgaWYgKHN0eWxlVmFsdWUgIT0gbnVsbCkg
e1xuXHQgICAgICAgIHNlcmlhbGl6ZWQgKz0gcHJvY2Vzc1N0eWxlTmFtZShzdHlsZU5hbWUpICsg
JzonO1xuXHQgICAgICAgIHNlcmlhbGl6ZWQgKz0gZGFuZ2Vyb3VzU3R5bGVWYWx1ZShzdHlsZU5h
bWUsIHN0eWxlVmFsdWUsIGNvbXBvbmVudCwgaXNDdXN0b21Qcm9wZXJ0eSkgKyAnOyc7XG5cdCAg
ICAgIH1cblx0ICAgIH1cblx0ICAgIHJldHVybiBzZXJpYWxpemVkIHx8IG51bGw7XG5cdCAgfSxc
blx0XG5cdCAgLyoqXG5cdCAgICogU2V0cyB0aGUgdmFsdWUgZm9yIG11bHRpcGxlIHN0eWxlcyBv
biBhIG5vZGUuICBJZiBhIHZhbHVlIGlzIHNwZWNpZmllZCBhc1xuXHQgICAqICcnIChlbXB0eSBz
dHJpbmcpLCB0aGUgY29ycmVzcG9uZGluZyBzdHlsZSBwcm9wZXJ0eSB3aWxsIGJlIHVuc2V0Llxu
XHQgICAqXG5cdCAgICogQHBhcmFtIHtET01FbGVtZW50fSBub2RlXG5cdCAgICogQHBhcmFtIHtv
YmplY3R9IHN0eWxlc1xuXHQgICAqIEBwYXJhbSB7UmVhY3RET01Db21wb25lbnR9IGNvbXBvbmVu
dFxuXHQgICAqL1xuXHQgIHNldFZhbHVlRm9yU3R5bGVzOiBmdW5jdGlvbiAobm9kZSwgc3R5bGVz
LCBjb21wb25lbnQpIHtcblx0ICAgIGlmIChmYWxzZSkge1xuXHQgICAgICBSZWFjdEluc3RydW1l
bnRhdGlvbi5kZWJ1Z1Rvb2wub25Ib3N0T3BlcmF0aW9uKHtcblx0ICAgICAgICBpbnN0YW5jZUlE
OiBjb21wb25lbnQuX2RlYnVnSUQsXG5cdCAgICAgICAgdHlwZTogJ3VwZGF0ZSBzdHlsZXMnLFxu
XHQgICAgICAgIHBheWxvYWQ6IHN0eWxlc1xuXHQgICAgICB9KTtcblx0ICAgIH1cblx0XG5cdCAg
ICB2YXIgc3R5bGUgPSBub2RlLnN0eWxlO1xuXHQgICAgZm9yICh2YXIgc3R5bGVOYW1lIGluIHN0
eWxlcykge1xuXHQgICAgICBpZiAoIXN0eWxlcy5oYXNPd25Qcm9wZXJ0eShzdHlsZU5hbWUpKSB7
XG5cdCAgICAgICAgY29udGludWU7XG5cdCAgICAgIH1cblx0ICAgICAgdmFyIGlzQ3VzdG9tUHJv
cGVydHkgPSBzdHlsZU5hbWUuaW5kZXhPZignLS0nKSA9PT0gMDtcblx0ICAgICAgaWYgKGZhbHNl
KSB7XG5cdCAgICAgICAgaWYgKCFpc0N1c3RvbVByb3BlcnR5KSB7XG5cdCAgICAgICAgICB3YXJu
VmFsaWRTdHlsZShzdHlsZU5hbWUsIHN0eWxlc1tzdHlsZU5hbWVdLCBjb21wb25lbnQpO1xuXHQg
ICAgICAgIH1cblx0ICAgICAgfVxuXHQgICAgICB2YXIgc3R5bGVWYWx1ZSA9IGRhbmdlcm91c1N0
eWxlVmFsdWUoc3R5bGVOYW1lLCBzdHlsZXNbc3R5bGVOYW1lXSwgY29tcG9uZW50LCBpc0N1c3Rv
bVByb3BlcnR5KTtcblx0ICAgICAgaWYgKHN0eWxlTmFtZSA9PT0gJ2Zsb2F0JyB8fCBzdHlsZU5h
bWUgPT09ICdjc3NGbG9hdCcpIHtcblx0ICAgICAgICBzdHlsZU5hbWUgPSBzdHlsZUZsb2F0QWNj
ZXNzb3I7XG5cdCAgICAgIH1cblx0ICAgICAgaWYgKGlzQ3VzdG9tUHJvcGVydHkpIHtcblx0ICAg
ICAgICBzdHlsZS5zZXRQcm9wZXJ0eShzdHlsZU5hbWUsIHN0eWxlVmFsdWUpO1xuXHQgICAgICB9
IGVsc2UgaWYgKHN0eWxlVmFsdWUpIHtcblx0ICAgICAgICBzdHlsZVtzdHlsZU5hbWVdID0gc3R5
bGVWYWx1ZTtcblx0ICAgICAgfSBlbHNlIHtcblx0ICAgICAgICB2YXIgZXhwYW5zaW9uID0gaGFz
U2hvcnRoYW5kUHJvcGVydHlCdWcgJiYgQ1NTUHJvcGVydHkuc2hvcnRoYW5kUHJvcGVydHlFeHBh
bnNpb25zW3N0eWxlTmFtZV07XG5cdCAgICAgICAgaWYgKGV4cGFuc2lvbikge1xuXHQgICAgICAg
ICAgLy8gU2hvcnRoYW5kIHByb3BlcnR5IHRoYXQgSUU4IHdvbid0IGxpa2UgdW5zZXR0aW5nLCBz
byB1bnNldCBlYWNoXG5cdCAgICAgICAgICAvLyBjb21wb25lbnQgdG8gcGxhY2F0ZSBpdFxuXHQg
ICAgICAgICAgZm9yICh2YXIgaW5kaXZpZHVhbFN0eWxlTmFtZSBpbiBleHBhbnNpb24pIHtcblx0
ICAgICAgICAgICAgc3R5bGVbaW5kaXZpZHVhbFN0eWxlTmFtZV0gPSAnJztcblx0ICAgICAgICAg
IH1cblx0ICAgICAgICB9IGVsc2Uge1xuXHQgICAgICAgICAgc3R5bGVbc3R5bGVOYW1lXSA9ICcn
O1xuXHQgICAgICAgIH1cblx0ICAgICAgfVxuXHQgICAgfVxuXHQgIH1cblx0fTtcblx0XG5cdG1v
ZHVsZS5leHBvcnRzID0gQ1NTUHJvcGVydHlPcGVyYXRpb25zO1xuXG4vKioqLyB9LFxuLyogMTI4
ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18p
IHtcblxuXHQvKipcblx0ICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5c
blx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBp
cyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAq
IExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4g
QW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBp
biB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpcblx0ICovXG5c
dFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHR2YXIgRXZlbnRQbHVnaW5IdWIgPSBfX3dlYnBhY2tf
cmVxdWlyZV9fKDE5KTtcblx0dmFyIEV2ZW50UHJvcGFnYXRvcnMgPSBfX3dlYnBhY2tfcmVxdWly
ZV9fKDIwKTtcblx0dmFyIEV4ZWN1dGlvbkVudmlyb25tZW50ID0gX193ZWJwYWNrX3JlcXVpcmVf
Xyg2KTtcblx0dmFyIFJlYWN0RE9NQ29tcG9uZW50VHJlZSA9IF9fd2VicGFja19yZXF1aXJlX18o
NSk7XG5cdHZhciBSZWFjdFVwZGF0ZXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDkpO1xuXHR2YXIg
U3ludGhldGljRXZlbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEwKTtcblx0XG5cdHZhciBpbnB1
dFZhbHVlVHJhY2tpbmcgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDc0KTtcblx0dmFyIGdldEV2ZW50
VGFyZ2V0ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0Nik7XG5cdHZhciBpc0V2ZW50U3VwcG9ydGVk
ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0Nyk7XG5cdHZhciBpc1RleHRJbnB1dEVsZW1lbnQgPSBf
X3dlYnBhY2tfcmVxdWlyZV9fKDc2KTtcblx0XG5cdHZhciBldmVudFR5cGVzID0ge1xuXHQgIGNo
YW5nZToge1xuXHQgICAgcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6IHtcblx0ICAgICAgYnViYmxl
ZDogJ29uQ2hhbmdlJyxcblx0ICAgICAgY2FwdHVyZWQ6ICdvbkNoYW5nZUNhcHR1cmUnXG5cdCAg
ICB9LFxuXHQgICAgZGVwZW5kZW5jaWVzOiBbJ3RvcEJsdXInLCAndG9wQ2hhbmdlJywgJ3RvcENs
aWNrJywgJ3RvcEZvY3VzJywgJ3RvcElucHV0JywgJ3RvcEtleURvd24nLCAndG9wS2V5VXAnLCAn
dG9wU2VsZWN0aW9uQ2hhbmdlJ11cblx0ICB9XG5cdH07XG5cdFxuXHRmdW5jdGlvbiBjcmVhdGVB
bmRBY2N1bXVsYXRlQ2hhbmdlRXZlbnQoaW5zdCwgbmF0aXZlRXZlbnQsIHRhcmdldCkge1xuXHQg
IHZhciBldmVudCA9IFN5bnRoZXRpY0V2ZW50LmdldFBvb2xlZChldmVudFR5cGVzLmNoYW5nZSwg
aW5zdCwgbmF0aXZlRXZlbnQsIHRhcmdldCk7XG5cdCAgZXZlbnQudHlwZSA9ICdjaGFuZ2UnO1xu
XHQgIEV2ZW50UHJvcGFnYXRvcnMuYWNjdW11bGF0ZVR3b1BoYXNlRGlzcGF0Y2hlcyhldmVudCk7
XG5cdCAgcmV0dXJuIGV2ZW50O1xuXHR9XG5cdC8qKlxuXHQgKiBGb3IgSUUgc2hpbXNcblx0ICov
XG5cdHZhciBhY3RpdmVFbGVtZW50ID0gbnVsbDtcblx0dmFyIGFjdGl2ZUVsZW1lbnRJbnN0ID0g
bnVsbDtcblx0XG5cdC8qKlxuXHQgKiBTRUNUSU9OOiBoYW5kbGUgYGNoYW5nZWAgZXZlbnRcblx0
ICovXG5cdGZ1bmN0aW9uIHNob3VsZFVzZUNoYW5nZUV2ZW50KGVsZW0pIHtcblx0ICB2YXIgbm9k
ZU5hbWUgPSBlbGVtLm5vZGVOYW1lICYmIGVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtcblx0
ICByZXR1cm4gbm9kZU5hbWUgPT09ICdzZWxlY3QnIHx8IG5vZGVOYW1lID09PSAnaW5wdXQnICYm
IGVsZW0udHlwZSA9PT0gJ2ZpbGUnO1xuXHR9XG5cdFxuXHR2YXIgZG9lc0NoYW5nZUV2ZW50QnVi
YmxlID0gZmFsc2U7XG5cdGlmIChFeGVjdXRpb25FbnZpcm9ubWVudC5jYW5Vc2VET00pIHtcblx0
ICAvLyBTZWUgYGhhbmRsZUNoYW5nZWAgY29tbWVudCBiZWxvd1xuXHQgIGRvZXNDaGFuZ2VFdmVu
dEJ1YmJsZSA9IGlzRXZlbnRTdXBwb3J0ZWQoJ2NoYW5nZScpICYmICghZG9jdW1lbnQuZG9jdW1l
bnRNb2RlIHx8IGRvY3VtZW50LmRvY3VtZW50TW9kZSA+IDgpO1xuXHR9XG5cdFxuXHRmdW5jdGlv
biBtYW51YWxEaXNwYXRjaENoYW5nZUV2ZW50KG5hdGl2ZUV2ZW50KSB7XG5cdCAgdmFyIGV2ZW50
ID0gY3JlYXRlQW5kQWNjdW11bGF0ZUNoYW5nZUV2ZW50KGFjdGl2ZUVsZW1lbnRJbnN0LCBuYXRp
dmVFdmVudCwgZ2V0RXZlbnRUYXJnZXQobmF0aXZlRXZlbnQpKTtcblx0XG5cdCAgLy8gSWYgY2hh
bmdlIGFuZCBwcm9wZXJ0eWNoYW5nZSBidWJibGVkLCB3ZSdkIGp1c3QgYmluZCB0byBpdCBsaWtl
IGFsbCB0aGVcblx0ICAvLyBvdGhlciBldmVudHMgYW5kIGhhdmUgaXQgZ28gdGhyb3VnaCBSZWFj
dEJyb3dzZXJFdmVudEVtaXR0ZXIuIFNpbmNlIGl0XG5cdCAgLy8gZG9lc24ndCwgd2UgbWFudWFs
bHkgbGlzdGVuIGZvciB0aGUgZXZlbnRzIGFuZCBzbyB3ZSBoYXZlIHRvIGVucXVldWUgYW5kXG5c
dCAgLy8gcHJvY2VzcyB0aGUgYWJzdHJhY3QgZXZlbnQgbWFudWFsbHkuXG5cdCAgLy9cblx0ICAv
LyBCYXRjaGluZyBpcyBuZWNlc3NhcnkgaGVyZSBpbiBvcmRlciB0byBlbnN1cmUgdGhhdCBhbGwg
ZXZlbnQgaGFuZGxlcnMgcnVuXG5cdCAgLy8gYmVmb3JlIHRoZSBuZXh0IHJlcmVuZGVyIChpbmNs
dWRpbmcgZXZlbnQgaGFuZGxlcnMgYXR0YWNoZWQgdG8gYW5jZXN0b3Jcblx0ICAvLyBlbGVtZW50
cyBpbnN0ZWFkIG9mIGRpcmVjdGx5IG9uIHRoZSBpbnB1dCkuIFdpdGhvdXQgdGhpcywgY29udHJv
bGxlZFxuXHQgIC8vIGNvbXBvbmVudHMgZG9uJ3Qgd29yayBwcm9wZXJseSBpbiBjb25qdW5jdGlv
biB3aXRoIGV2ZW50IGJ1YmJsaW5nIGJlY2F1c2Vcblx0ICAvLyB0aGUgY29tcG9uZW50IGlzIHJl
cmVuZGVyZWQgYW5kIHRoZSB2YWx1ZSByZXZlcnRlZCBiZWZvcmUgYWxsIHRoZSBldmVudFxuXHQg
IC8vIGhhbmRsZXJzIGNhbiBydW4uIFNlZSBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVh
Y3QvaXNzdWVzLzcwOC5cblx0ICBSZWFjdFVwZGF0ZXMuYmF0Y2hlZFVwZGF0ZXMocnVuRXZlbnRJ
bkJhdGNoLCBldmVudCk7XG5cdH1cblx0XG5cdGZ1bmN0aW9uIHJ1bkV2ZW50SW5CYXRjaChldmVu
dCkge1xuXHQgIEV2ZW50UGx1Z2luSHViLmVucXVldWVFdmVudHMoZXZlbnQpO1xuXHQgIEV2ZW50
UGx1Z2luSHViLnByb2Nlc3NFdmVudFF1ZXVlKGZhbHNlKTtcblx0fVxuXHRcblx0ZnVuY3Rpb24g
c3RhcnRXYXRjaGluZ0ZvckNoYW5nZUV2ZW50SUU4KHRhcmdldCwgdGFyZ2V0SW5zdCkge1xuXHQg
IGFjdGl2ZUVsZW1lbnQgPSB0YXJnZXQ7XG5cdCAgYWN0aXZlRWxlbWVudEluc3QgPSB0YXJnZXRJ
bnN0O1xuXHQgIGFjdGl2ZUVsZW1lbnQuYXR0YWNoRXZlbnQoJ29uY2hhbmdlJywgbWFudWFsRGlz
cGF0Y2hDaGFuZ2VFdmVudCk7XG5cdH1cblx0XG5cdGZ1bmN0aW9uIHN0b3BXYXRjaGluZ0ZvckNo
YW5nZUV2ZW50SUU4KCkge1xuXHQgIGlmICghYWN0aXZlRWxlbWVudCkge1xuXHQgICAgcmV0dXJu
O1xuXHQgIH1cblx0ICBhY3RpdmVFbGVtZW50LmRldGFjaEV2ZW50KCdvbmNoYW5nZScsIG1hbnVh
bERpc3BhdGNoQ2hhbmdlRXZlbnQpO1xuXHQgIGFjdGl2ZUVsZW1lbnQgPSBudWxsO1xuXHQgIGFj
dGl2ZUVsZW1lbnRJbnN0ID0gbnVsbDtcblx0fVxuXHRcblx0ZnVuY3Rpb24gZ2V0SW5zdElmVmFs
dWVDaGFuZ2VkKHRhcmdldEluc3QsIG5hdGl2ZUV2ZW50KSB7XG5cdCAgdmFyIHVwZGF0ZWQgPSBp
bnB1dFZhbHVlVHJhY2tpbmcudXBkYXRlVmFsdWVJZkNoYW5nZWQodGFyZ2V0SW5zdCk7XG5cdCAg
dmFyIHNpbXVsYXRlZCA9IG5hdGl2ZUV2ZW50LnNpbXVsYXRlZCA9PT0gdHJ1ZSAmJiBDaGFuZ2VF
dmVudFBsdWdpbi5fYWxsb3dTaW11bGF0ZWRQYXNzVGhyb3VnaDtcblx0XG5cdCAgaWYgKHVwZGF0
ZWQgfHwgc2ltdWxhdGVkKSB7XG5cdCAgICByZXR1cm4gdGFyZ2V0SW5zdDtcblx0ICB9XG5cdH1c
blx0XG5cdGZ1bmN0aW9uIGdldFRhcmdldEluc3RGb3JDaGFuZ2VFdmVudCh0b3BMZXZlbFR5cGUs
IHRhcmdldEluc3QpIHtcblx0ICBpZiAodG9wTGV2ZWxUeXBlID09PSAndG9wQ2hhbmdlJykge1xu
XHQgICAgcmV0dXJuIHRhcmdldEluc3Q7XG5cdCAgfVxuXHR9XG5cdFxuXHRmdW5jdGlvbiBoYW5k
bGVFdmVudHNGb3JDaGFuZ2VFdmVudElFOCh0b3BMZXZlbFR5cGUsIHRhcmdldCwgdGFyZ2V0SW5z
dCkge1xuXHQgIGlmICh0b3BMZXZlbFR5cGUgPT09ICd0b3BGb2N1cycpIHtcblx0ICAgIC8vIHN0
b3BXYXRjaGluZygpIHNob3VsZCBiZSBhIG5vb3AgaGVyZSBidXQgd2UgY2FsbCBpdCBqdXN0IGlu
IGNhc2Ugd2Vcblx0ICAgIC8vIG1pc3NlZCBhIGJsdXIgZXZlbnQgc29tZWhvdy5cblx0ICAgIHN0
b3BXYXRjaGluZ0ZvckNoYW5nZUV2ZW50SUU4KCk7XG5cdCAgICBzdGFydFdhdGNoaW5nRm9yQ2hh
bmdlRXZlbnRJRTgodGFyZ2V0LCB0YXJnZXRJbnN0KTtcblx0ICB9IGVsc2UgaWYgKHRvcExldmVs
VHlwZSA9PT0gJ3RvcEJsdXInKSB7XG5cdCAgICBzdG9wV2F0Y2hpbmdGb3JDaGFuZ2VFdmVudElF
OCgpO1xuXHQgIH1cblx0fVxuXHRcblx0LyoqXG5cdCAqIFNFQ1RJT046IGhhbmRsZSBgaW5wdXRg
IGV2ZW50XG5cdCAqL1xuXHR2YXIgaXNJbnB1dEV2ZW50U3VwcG9ydGVkID0gZmFsc2U7XG5cdGlm
IChFeGVjdXRpb25FbnZpcm9ubWVudC5jYW5Vc2VET00pIHtcblx0ICAvLyBJRTkgY2xhaW1zIHRv
IHN1cHBvcnQgdGhlIGlucHV0IGV2ZW50IGJ1dCBmYWlscyB0byB0cmlnZ2VyIGl0IHdoZW5cblx0
ICAvLyBkZWxldGluZyB0ZXh0LCBzbyB3ZSBpZ25vcmUgaXRzIGlucHV0IGV2ZW50cy5cblx0XG5c
dCAgaXNJbnB1dEV2ZW50U3VwcG9ydGVkID0gaXNFdmVudFN1cHBvcnRlZCgnaW5wdXQnKSAmJiAo
ISgnZG9jdW1lbnRNb2RlJyBpbiBkb2N1bWVudCkgfHwgZG9jdW1lbnQuZG9jdW1lbnRNb2RlID4g
OSk7XG5cdH1cblx0XG5cdC8qKlxuXHQgKiAoRm9yIElFIDw9OSkgU3RhcnRzIHRyYWNraW5nIHBy
b3BlcnR5Y2hhbmdlIGV2ZW50cyBvbiB0aGUgcGFzc2VkLWluIGVsZW1lbnRcblx0ICogYW5kIG92
ZXJyaWRlIHRoZSB2YWx1ZSBwcm9wZXJ0eSBzbyB0aGF0IHdlIGNhbiBkaXN0aW5ndWlzaCB1c2Vy
IGV2ZW50cyBmcm9tXG5cdCAqIHZhbHVlIGNoYW5nZXMgaW4gSlMuXG5cdCAqL1xuXHRmdW5jdGlv
biBzdGFydFdhdGNoaW5nRm9yVmFsdWVDaGFuZ2UodGFyZ2V0LCB0YXJnZXRJbnN0KSB7XG5cdCAg
YWN0aXZlRWxlbWVudCA9IHRhcmdldDtcblx0ICBhY3RpdmVFbGVtZW50SW5zdCA9IHRhcmdldElu
c3Q7XG5cdCAgYWN0aXZlRWxlbWVudC5hdHRhY2hFdmVudCgnb25wcm9wZXJ0eWNoYW5nZScsIGhh
bmRsZVByb3BlcnR5Q2hhbmdlKTtcblx0fVxuXHRcblx0LyoqXG5cdCAqIChGb3IgSUUgPD05KSBS
ZW1vdmVzIHRoZSBldmVudCBsaXN0ZW5lcnMgZnJvbSB0aGUgY3VycmVudGx5LXRyYWNrZWQgZWxl
bWVudCxcblx0ICogaWYgYW55IGV4aXN0cy5cblx0ICovXG5cdGZ1bmN0aW9uIHN0b3BXYXRjaGlu
Z0ZvclZhbHVlQ2hhbmdlKCkge1xuXHQgIGlmICghYWN0aXZlRWxlbWVudCkge1xuXHQgICAgcmV0
dXJuO1xuXHQgIH1cblx0ICBhY3RpdmVFbGVtZW50LmRldGFjaEV2ZW50KCdvbnByb3BlcnR5Y2hh
bmdlJywgaGFuZGxlUHJvcGVydHlDaGFuZ2UpO1xuXHRcblx0ICBhY3RpdmVFbGVtZW50ID0gbnVs
bDtcblx0ICBhY3RpdmVFbGVtZW50SW5zdCA9IG51bGw7XG5cdH1cblx0XG5cdC8qKlxuXHQgKiAo
Rm9yIElFIDw9OSkgSGFuZGxlcyBhIHByb3BlcnR5Y2hhbmdlIGV2ZW50LCBzZW5kaW5nIGEgYGNo
YW5nZWAgZXZlbnQgaWZcblx0ICogdGhlIHZhbHVlIG9mIHRoZSBhY3RpdmUgZWxlbWVudCBoYXMg
Y2hhbmdlZC5cblx0ICovXG5cdGZ1bmN0aW9uIGhhbmRsZVByb3BlcnR5Q2hhbmdlKG5hdGl2ZUV2
ZW50KSB7XG5cdCAgaWYgKG5hdGl2ZUV2ZW50LnByb3BlcnR5TmFtZSAhPT0gJ3ZhbHVlJykge1xu
XHQgICAgcmV0dXJuO1xuXHQgIH1cblx0ICBpZiAoZ2V0SW5zdElmVmFsdWVDaGFuZ2VkKGFjdGl2
ZUVsZW1lbnRJbnN0LCBuYXRpdmVFdmVudCkpIHtcblx0ICAgIG1hbnVhbERpc3BhdGNoQ2hhbmdl
RXZlbnQobmF0aXZlRXZlbnQpO1xuXHQgIH1cblx0fVxuXHRcblx0ZnVuY3Rpb24gaGFuZGxlRXZl
bnRzRm9ySW5wdXRFdmVudFBvbHlmaWxsKHRvcExldmVsVHlwZSwgdGFyZ2V0LCB0YXJnZXRJbnN0
KSB7XG5cdCAgaWYgKHRvcExldmVsVHlwZSA9PT0gJ3RvcEZvY3VzJykge1xuXHQgICAgLy8gSW4g
SUU4LCB3ZSBjYW4gY2FwdHVyZSBhbG1vc3QgYWxsIC52YWx1ZSBjaGFuZ2VzIGJ5IGFkZGluZyBh
XG5cdCAgICAvLyBwcm9wZXJ0eWNoYW5nZSBoYW5kbGVyIGFuZCBsb29raW5nIGZvciBldmVudHMg
d2l0aCBwcm9wZXJ0eU5hbWVcblx0ICAgIC8vIGVxdWFsIHRvICd2YWx1ZSdcblx0ICAgIC8vIElu
IElFOSwgcHJvcGVydHljaGFuZ2UgZmlyZXMgZm9yIG1vc3QgaW5wdXQgZXZlbnRzIGJ1dCBpcyBi
dWdneSBhbmRcblx0ICAgIC8vIGRvZXNuJ3QgZmlyZSB3aGVuIHRleHQgaXMgZGVsZXRlZCwgYnV0
IGNvbnZlbmllbnRseSwgc2VsZWN0aW9uY2hhbmdlXG5cdCAgICAvLyBhcHBlYXJzIHRvIGZpcmUg
aW4gYWxsIG9mIHRoZSByZW1haW5pbmcgY2FzZXMgc28gd2UgY2F0Y2ggdGhvc2UgYW5kXG5cdCAg
ICAvLyBmb3J3YXJkIHRoZSBldmVudCBpZiB0aGUgdmFsdWUgaGFzIGNoYW5nZWRcblx0ICAgIC8v
IEluIGVpdGhlciBjYXNlLCB3ZSBkb24ndCB3YW50IHRvIGNhbGwgdGhlIGV2ZW50IGhhbmRsZXIg
aWYgdGhlIHZhbHVlXG5cdCAgICAvLyBpcyBjaGFuZ2VkIGZyb20gSlMgc28gd2UgcmVkZWZpbmUg
YSBzZXR0ZXIgZm9yIGAudmFsdWVgIHRoYXQgdXBkYXRlc1xuXHQgICAgLy8gb3VyIGFjdGl2ZUVs
ZW1lbnRWYWx1ZSB2YXJpYWJsZSwgYWxsb3dpbmcgdXMgdG8gaWdub3JlIHRob3NlIGNoYW5nZXNc
blx0ICAgIC8vXG5cdCAgICAvLyBzdG9wV2F0Y2hpbmcoKSBzaG91bGQgYmUgYSBub29wIGhlcmUg
YnV0IHdlIGNhbGwgaXQganVzdCBpbiBjYXNlIHdlXG5cdCAgICAvLyBtaXNzZWQgYSBibHVyIGV2
ZW50IHNvbWVob3cuXG5cdCAgICBzdG9wV2F0Y2hpbmdGb3JWYWx1ZUNoYW5nZSgpO1xuXHQgICAg
c3RhcnRXYXRjaGluZ0ZvclZhbHVlQ2hhbmdlKHRhcmdldCwgdGFyZ2V0SW5zdCk7XG5cdCAgfSBl
bHNlIGlmICh0b3BMZXZlbFR5cGUgPT09ICd0b3BCbHVyJykge1xuXHQgICAgc3RvcFdhdGNoaW5n
Rm9yVmFsdWVDaGFuZ2UoKTtcblx0ICB9XG5cdH1cblx0XG5cdC8vIEZvciBJRTggYW5kIElFOS5c
blx0ZnVuY3Rpb24gZ2V0VGFyZ2V0SW5zdEZvcklucHV0RXZlbnRQb2x5ZmlsbCh0b3BMZXZlbFR5
cGUsIHRhcmdldEluc3QsIG5hdGl2ZUV2ZW50KSB7XG5cdCAgaWYgKHRvcExldmVsVHlwZSA9PT0g
J3RvcFNlbGVjdGlvbkNoYW5nZScgfHwgdG9wTGV2ZWxUeXBlID09PSAndG9wS2V5VXAnIHx8IHRv
cExldmVsVHlwZSA9PT0gJ3RvcEtleURvd24nKSB7XG5cdCAgICAvLyBPbiB0aGUgc2VsZWN0aW9u
Y2hhbmdlIGV2ZW50LCB0aGUgdGFyZ2V0IGlzIGp1c3QgZG9jdW1lbnQgd2hpY2ggaXNuJ3Rcblx0
ICAgIC8vIGhlbHBmdWwgZm9yIHVzIHNvIGp1c3QgY2hlY2sgYWN0aXZlRWxlbWVudCBpbnN0ZWFk
LlxuXHQgICAgLy9cblx0ICAgIC8vIDk5JSBvZiB0aGUgdGltZSwga2V5ZG93biBhbmQga2V5dXAg
YXJlbid0IG5lY2Vzc2FyeS4gSUU4IGZhaWxzIHRvIGZpcmVcblx0ICAgIC8vIHByb3BlcnR5Y2hh
bmdlIG9uIHRoZSBmaXJzdCBpbnB1dCBldmVudCBhZnRlciBzZXR0aW5nIGB2YWx1ZWAgZnJvbSBh
XG5cdCAgICAvLyBzY3JpcHQgYW5kIGZpcmVzIG9ubHkga2V5ZG93biwga2V5cHJlc3MsIGtleXVw
LiBDYXRjaGluZyBrZXl1cCB1c3VhbGx5XG5cdCAgICAvLyBnZXRzIGl0IGFuZCBjYXRjaGluZyBr
ZXlkb3duIGxldHMgdXMgZmlyZSBhbiBldmVudCBmb3IgdGhlIGZpcnN0XG5cdCAgICAvLyBrZXlz
dHJva2UgaWYgdXNlciBkb2VzIGEga2V5IHJlcGVhdCAoaXQnbGwgYmUgYSBsaXR0bGUgZGVsYXll
ZDogcmlnaHRcblx0ICAgIC8vIGJlZm9yZSB0aGUgc2Vjb25kIGtleXN0cm9rZSkuIE90aGVyIGlu
cHV0IG1ldGhvZHMgKGUuZy4sIHBhc3RlKSBzZWVtIHRvXG5cdCAgICAvLyBmaXJlIHNlbGVjdGlv
bmNoYW5nZSBub3JtYWxseS5cblx0ICAgIHJldHVybiBnZXRJbnN0SWZWYWx1ZUNoYW5nZWQoYWN0
aXZlRWxlbWVudEluc3QsIG5hdGl2ZUV2ZW50KTtcblx0ICB9XG5cdH1cblx0XG5cdC8qKlxuXHQg
KiBTRUNUSU9OOiBoYW5kbGUgYGNsaWNrYCBldmVudFxuXHQgKi9cblx0ZnVuY3Rpb24gc2hvdWxk
VXNlQ2xpY2tFdmVudChlbGVtKSB7XG5cdCAgLy8gVXNlIHRoZSBgY2xpY2tgIGV2ZW50IHRvIGRl
dGVjdCBjaGFuZ2VzIHRvIGNoZWNrYm94IGFuZCByYWRpbyBpbnB1dHMuXG5cdCAgLy8gVGhpcyBh
cHByb2FjaCB3b3JrcyBhY3Jvc3MgYWxsIGJyb3dzZXJzLCB3aGVyZWFzIGBjaGFuZ2VgIGRvZXMg
bm90IGZpcmVcblx0ICAvLyB1bnRpbCBgYmx1cmAgaW4gSUU4LlxuXHQgIHZhciBub2RlTmFtZSA9
IGVsZW0ubm9kZU5hbWU7XG5cdCAgcmV0dXJuIG5vZGVOYW1lICYmIG5vZGVOYW1lLnRvTG93ZXJD
YXNlKCkgPT09ICdpbnB1dCcgJiYgKGVsZW0udHlwZSA9PT0gJ2NoZWNrYm94JyB8fCBlbGVtLnR5
cGUgPT09ICdyYWRpbycpO1xuXHR9XG5cdFxuXHRmdW5jdGlvbiBnZXRUYXJnZXRJbnN0Rm9yQ2xp
Y2tFdmVudCh0b3BMZXZlbFR5cGUsIHRhcmdldEluc3QsIG5hdGl2ZUV2ZW50KSB7XG5cdCAgaWYg
KHRvcExldmVsVHlwZSA9PT0gJ3RvcENsaWNrJykge1xuXHQgICAgcmV0dXJuIGdldEluc3RJZlZh
bHVlQ2hhbmdlZCh0YXJnZXRJbnN0LCBuYXRpdmVFdmVudCk7XG5cdCAgfVxuXHR9XG5cdFxuXHRm
dW5jdGlvbiBnZXRUYXJnZXRJbnN0Rm9ySW5wdXRPckNoYW5nZUV2ZW50KHRvcExldmVsVHlwZSwg
dGFyZ2V0SW5zdCwgbmF0aXZlRXZlbnQpIHtcblx0ICBpZiAodG9wTGV2ZWxUeXBlID09PSAndG9w
SW5wdXQnIHx8IHRvcExldmVsVHlwZSA9PT0gJ3RvcENoYW5nZScpIHtcblx0ICAgIHJldHVybiBn
ZXRJbnN0SWZWYWx1ZUNoYW5nZWQodGFyZ2V0SW5zdCwgbmF0aXZlRXZlbnQpO1xuXHQgIH1cblx0
fVxuXHRcblx0ZnVuY3Rpb24gaGFuZGxlQ29udHJvbGxlZElucHV0Qmx1cihpbnN0LCBub2RlKSB7
XG5cdCAgLy8gVE9ETzogSW4gSUUsIGluc3QgaXMgb2NjYXNpb25hbGx5IG51bGwuIFdoeT9cblx0
ICBpZiAoaW5zdCA9PSBudWxsKSB7XG5cdCAgICByZXR1cm47XG5cdCAgfVxuXHRcblx0ICAvLyBG
aWJlciBhbmQgUmVhY3RET00ga2VlcCB3cmFwcGVyIHN0YXRlIGluIHNlcGFyYXRlIHBsYWNlc1xu
XHQgIHZhciBzdGF0ZSA9IGluc3QuX3dyYXBwZXJTdGF0ZSB8fCBub2RlLl93cmFwcGVyU3RhdGU7
XG5cdFxuXHQgIGlmICghc3RhdGUgfHwgIXN0YXRlLmNvbnRyb2xsZWQgfHwgbm9kZS50eXBlICE9
PSAnbnVtYmVyJykge1xuXHQgICAgcmV0dXJuO1xuXHQgIH1cblx0XG5cdCAgLy8gSWYgY29udHJv
bGxlZCwgYXNzaWduIHRoZSB2YWx1ZSBhdHRyaWJ1dGUgdG8gdGhlIGN1cnJlbnQgdmFsdWUgb24g
Ymx1clxuXHQgIHZhciB2YWx1ZSA9ICcnICsgbm9kZS52YWx1ZTtcblx0ICBpZiAobm9kZS5nZXRB
dHRyaWJ1dGUoJ3ZhbHVlJykgIT09IHZhbHVlKSB7XG5cdCAgICBub2RlLnNldEF0dHJpYnV0ZSgn
dmFsdWUnLCB2YWx1ZSk7XG5cdCAgfVxuXHR9XG5cdFxuXHQvKipcblx0ICogVGhpcyBwbHVnaW4g
Y3JlYXRlcyBhbiBgb25DaGFuZ2VgIGV2ZW50IHRoYXQgbm9ybWFsaXplcyBjaGFuZ2UgZXZlbnRz
XG5cdCAqIGFjcm9zcyBmb3JtIGVsZW1lbnRzLiBUaGlzIGV2ZW50IGZpcmVzIGF0IGEgdGltZSB3
aGVuIGl0J3MgcG9zc2libGUgdG9cblx0ICogY2hhbmdlIHRoZSBlbGVtZW50J3MgdmFsdWUgd2l0
aG91dCBzZWVpbmcgYSBmbGlja2VyLlxuXHQgKlxuXHQgKiBTdXBwb3J0ZWQgZWxlbWVudHMgYXJl
OlxuXHQgKiAtIGlucHV0IChzZWUgYGlzVGV4dElucHV0RWxlbWVudGApXG5cdCAqIC0gdGV4dGFy
ZWFcblx0ICogLSBzZWxlY3Rcblx0ICovXG5cdHZhciBDaGFuZ2VFdmVudFBsdWdpbiA9IHtcblx0
ICBldmVudFR5cGVzOiBldmVudFR5cGVzLFxuXHRcblx0ICBfYWxsb3dTaW11bGF0ZWRQYXNzVGhy
b3VnaDogdHJ1ZSxcblx0ICBfaXNJbnB1dEV2ZW50U3VwcG9ydGVkOiBpc0lucHV0RXZlbnRTdXBw
b3J0ZWQsXG5cdFxuXHQgIGV4dHJhY3RFdmVudHM6IGZ1bmN0aW9uICh0b3BMZXZlbFR5cGUsIHRh
cmdldEluc3QsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCkge1xuXHQgICAgdmFyIHRh
cmdldE5vZGUgPSB0YXJnZXRJbnN0ID8gUmVhY3RET01Db21wb25lbnRUcmVlLmdldE5vZGVGcm9t
SW5zdGFuY2UodGFyZ2V0SW5zdCkgOiB3aW5kb3c7XG5cdFxuXHQgICAgdmFyIGdldFRhcmdldElu
c3RGdW5jLCBoYW5kbGVFdmVudEZ1bmM7XG5cdCAgICBpZiAoc2hvdWxkVXNlQ2hhbmdlRXZlbnQo
dGFyZ2V0Tm9kZSkpIHtcblx0ICAgICAgaWYgKGRvZXNDaGFuZ2VFdmVudEJ1YmJsZSkge1xuXHQg
ICAgICAgIGdldFRhcmdldEluc3RGdW5jID0gZ2V0VGFyZ2V0SW5zdEZvckNoYW5nZUV2ZW50O1xu
XHQgICAgICB9IGVsc2Uge1xuXHQgICAgICAgIGhhbmRsZUV2ZW50RnVuYyA9IGhhbmRsZUV2ZW50
c0ZvckNoYW5nZUV2ZW50SUU4O1xuXHQgICAgICB9XG5cdCAgICB9IGVsc2UgaWYgKGlzVGV4dElu
cHV0RWxlbWVudCh0YXJnZXROb2RlKSkge1xuXHQgICAgICBpZiAoaXNJbnB1dEV2ZW50U3VwcG9y
dGVkKSB7XG5cdCAgICAgICAgZ2V0VGFyZ2V0SW5zdEZ1bmMgPSBnZXRUYXJnZXRJbnN0Rm9ySW5w
dXRPckNoYW5nZUV2ZW50O1xuXHQgICAgICB9IGVsc2Uge1xuXHQgICAgICAgIGdldFRhcmdldElu
c3RGdW5jID0gZ2V0VGFyZ2V0SW5zdEZvcklucHV0RXZlbnRQb2x5ZmlsbDtcblx0ICAgICAgICBo
YW5kbGVFdmVudEZ1bmMgPSBoYW5kbGVFdmVudHNGb3JJbnB1dEV2ZW50UG9seWZpbGw7XG5cdCAg
ICAgIH1cblx0ICAgIH0gZWxzZSBpZiAoc2hvdWxkVXNlQ2xpY2tFdmVudCh0YXJnZXROb2RlKSkg
e1xuXHQgICAgICBnZXRUYXJnZXRJbnN0RnVuYyA9IGdldFRhcmdldEluc3RGb3JDbGlja0V2ZW50
O1xuXHQgICAgfVxuXHRcblx0ICAgIGlmIChnZXRUYXJnZXRJbnN0RnVuYykge1xuXHQgICAgICB2
YXIgaW5zdCA9IGdldFRhcmdldEluc3RGdW5jKHRvcExldmVsVHlwZSwgdGFyZ2V0SW5zdCwgbmF0
aXZlRXZlbnQpO1xuXHQgICAgICBpZiAoaW5zdCkge1xuXHQgICAgICAgIHZhciBldmVudCA9IGNy
ZWF0ZUFuZEFjY3VtdWxhdGVDaGFuZ2VFdmVudChpbnN0LCBuYXRpdmVFdmVudCwgbmF0aXZlRXZl
bnRUYXJnZXQpO1xuXHQgICAgICAgIHJldHVybiBldmVudDtcblx0ICAgICAgfVxuXHQgICAgfVxu
XHRcblx0ICAgIGlmIChoYW5kbGVFdmVudEZ1bmMpIHtcblx0ICAgICAgaGFuZGxlRXZlbnRGdW5j
KHRvcExldmVsVHlwZSwgdGFyZ2V0Tm9kZSwgdGFyZ2V0SW5zdCk7XG5cdCAgICB9XG5cdFxuXHQg
ICAgLy8gV2hlbiBibHVycmluZywgc2V0IHRoZSB2YWx1ZSBhdHRyaWJ1dGUgZm9yIG51bWJlciBp
bnB1dHNcblx0ICAgIGlmICh0b3BMZXZlbFR5cGUgPT09ICd0b3BCbHVyJykge1xuXHQgICAgICBo
YW5kbGVDb250cm9sbGVkSW5wdXRCbHVyKHRhcmdldEluc3QsIHRhcmdldE5vZGUpO1xuXHQgICAg
fVxuXHQgIH1cblx0fTtcblx0XG5cdG1vZHVsZS5leHBvcnRzID0gQ2hhbmdlRXZlbnRQbHVnaW47
XG5cbi8qKiovIH0sXG4vKiAxMjkgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywg
X193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxMy1wcmVz
ZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQg
KiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5z
ZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBv
ZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCBy
aWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0
b3J5LlxuXHQgKlxuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdHZhciBfcHJvZElu
dmFyaWFudCA9IF9fd2VicGFja19yZXF1aXJlX18oMyk7XG5cdFxuXHR2YXIgRE9NTGF6eVRyZWUg
PSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE0KTtcblx0dmFyIEV4ZWN1dGlvbkVudmlyb25tZW50ID0g
X193ZWJwYWNrX3JlcXVpcmVfXyg2KTtcblx0XG5cdHZhciBjcmVhdGVOb2Rlc0Zyb21NYXJrdXAg
PSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEwMik7XG5cdHZhciBlbXB0eUZ1bmN0aW9uID0gX193ZWJw
YWNrX3JlcXVpcmVfXyg3KTtcblx0dmFyIGludmFyaWFudCA9IF9fd2VicGFja19yZXF1aXJlX18o
MSk7XG5cdFxuXHR2YXIgRGFuZ2VyID0ge1xuXHQgIC8qKlxuXHQgICAqIFJlcGxhY2VzIGEgbm9k
ZSB3aXRoIGEgc3RyaW5nIG9mIG1hcmt1cCBhdCBpdHMgY3VycmVudCBwb3NpdGlvbiB3aXRoaW4g
aXRzXG5cdCAgICogcGFyZW50LiBUaGUgbWFya3VwIG11c3QgcmVuZGVyIGludG8gYSBzaW5nbGUg
cm9vdCBub2RlLlxuXHQgICAqXG5cdCAgICogQHBhcmFtIHtET01FbGVtZW50fSBvbGRDaGlsZCBD
aGlsZCBub2RlIHRvIHJlcGxhY2UuXG5cdCAgICogQHBhcmFtIHtzdHJpbmd9IG1hcmt1cCBNYXJr
dXAgdG8gcmVuZGVyIGluIHBsYWNlIG9mIHRoZSBjaGlsZCBub2RlLlxuXHQgICAqIEBpbnRlcm5h
bFxuXHQgICAqL1xuXHQgIGRhbmdlcm91c2x5UmVwbGFjZU5vZGVXaXRoTWFya3VwOiBmdW5jdGlv
biAob2xkQ2hpbGQsIG1hcmt1cCkge1xuXHQgICAgIUV4ZWN1dGlvbkVudmlyb25tZW50LmNhblVz
ZURPTSA/ICBmYWxzZSA/IGludmFyaWFudChmYWxzZSwgJ2Rhbmdlcm91c2x5UmVwbGFjZU5vZGVX
aXRoTWFya3VwKC4uLik6IENhbm5vdCByZW5kZXIgbWFya3VwIGluIGEgd29ya2VyIHRocmVhZC4g
TWFrZSBzdXJlIGB3aW5kb3dgIGFuZCBgZG9jdW1lbnRgIGFyZSBhdmFpbGFibGUgZ2xvYmFsbHkg
YmVmb3JlIHJlcXVpcmluZyBSZWFjdCB3aGVuIHVuaXQgdGVzdGluZyBvciB1c2UgUmVhY3RET01T
ZXJ2ZXIucmVuZGVyVG9TdHJpbmcoKSBmb3Igc2VydmVyIHJlbmRlcmluZy4nKSA6IF9wcm9kSW52
YXJpYW50KCc1NicpIDogdm9pZCAwO1xuXHQgICAgIW1hcmt1cCA/ICBmYWxzZSA/IGludmFyaWFu
dChmYWxzZSwgJ2Rhbmdlcm91c2x5UmVwbGFjZU5vZGVXaXRoTWFya3VwKC4uLik6IE1pc3Npbmcg
bWFya3VwLicpIDogX3Byb2RJbnZhcmlhbnQoJzU3JykgOiB2b2lkIDA7XG5cdCAgICAhKG9sZENo
aWxkLm5vZGVOYW1lICE9PSAnSFRNTCcpID8gIGZhbHNlID8gaW52YXJpYW50KGZhbHNlLCAnZGFu
Z2Vyb3VzbHlSZXBsYWNlTm9kZVdpdGhNYXJrdXAoLi4uKTogQ2Fubm90IHJlcGxhY2UgbWFya3Vw
IG9mIHRoZSA8aHRtbD4gbm9kZS4gVGhpcyBpcyBiZWNhdXNlIGJyb3dzZXIgcXVpcmtzIG1ha2Ug
dGhpcyB1bnJlbGlhYmxlIGFuZC9vciBzbG93LiBJZiB5b3Ugd2FudCB0byByZW5kZXIgdG8gdGhl
IHJvb3QgeW91IG11c3QgdXNlIHNlcnZlciByZW5kZXJpbmcuIFNlZSBSZWFjdERPTVNlcnZlci5y
ZW5kZXJUb1N0cmluZygpLicpIDogX3Byb2RJbnZhcmlhbnQoJzU4JykgOiB2b2lkIDA7XG5cdFxu
XHQgICAgaWYgKHR5cGVvZiBtYXJrdXAgPT09ICdzdHJpbmcnKSB7XG5cdCAgICAgIHZhciBuZXdD
aGlsZCA9IGNyZWF0ZU5vZGVzRnJvbU1hcmt1cChtYXJrdXAsIGVtcHR5RnVuY3Rpb24pWzBdO1xu
XHQgICAgICBvbGRDaGlsZC5wYXJlbnROb2RlLnJlcGxhY2VDaGlsZChuZXdDaGlsZCwgb2xkQ2hp
bGQpO1xuXHQgICAgfSBlbHNlIHtcblx0ICAgICAgRE9NTGF6eVRyZWUucmVwbGFjZUNoaWxkV2l0
aFRyZWUob2xkQ2hpbGQsIG1hcmt1cCk7XG5cdCAgICB9XG5cdCAgfVxuXHR9O1xuXHRcblx0bW9k
dWxlLmV4cG9ydHMgPSBEYW5nZXI7XG5cbi8qKiovIH0sXG4vKiAxMzAgKi9cbi8qKiovIGZ1bmN0
aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxMy1wcmVz
ZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQg
KiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5z
ZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBv
ZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCBy
aWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0
b3J5LlxuXHQgKlxuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdC8qKlxuXHQgKiBN
b2R1bGUgdGhhdCBpcyBpbmplY3RhYmxlIGludG8gYEV2ZW50UGx1Z2luSHViYCwgdGhhdCBzcGVj
aWZpZXMgYVxuXHQgKiBkZXRlcm1pbmlzdGljIG9yZGVyaW5nIG9mIGBFdmVudFBsdWdpbmBzLiBB
IGNvbnZlbmllbnQgd2F5IHRvIHJlYXNvbiBhYm91dFxuXHQgKiBwbHVnaW5zLCB3aXRob3V0IGhh
dmluZyB0byBwYWNrYWdlIGV2ZXJ5IG9uZSBvZiB0aGVtLiBUaGlzIGlzIGJldHRlciB0aGFuXG5c
dCAqIGhhdmluZyBwbHVnaW5zIGJlIG9yZGVyZWQgaW4gdGhlIHNhbWUgb3JkZXIgdGhhdCB0aGV5
IGFyZSBpbmplY3RlZCBiZWNhdXNlXG5cdCAqIHRoYXQgb3JkZXJpbmcgd291bGQgYmUgaW5mbHVl
bmNlZCBieSB0aGUgcGFja2FnaW5nIG9yZGVyLlxuXHQgKiBgUmVzcG9uZGVyRXZlbnRQbHVnaW5g
IG11c3Qgb2NjdXIgYmVmb3JlIGBTaW1wbGVFdmVudFBsdWdpbmAgc28gdGhhdFxuXHQgKiBwcmV2
ZW50aW5nIGRlZmF1bHQgb24gZXZlbnRzIGlzIGNvbnZlbmllbnQgaW4gYFNpbXBsZUV2ZW50UGx1
Z2luYCBoYW5kbGVycy5cblx0ICovXG5cdFxuXHR2YXIgRGVmYXVsdEV2ZW50UGx1Z2luT3JkZXIg
PSBbJ1Jlc3BvbmRlckV2ZW50UGx1Z2luJywgJ1NpbXBsZUV2ZW50UGx1Z2luJywgJ1RhcEV2ZW50
UGx1Z2luJywgJ0VudGVyTGVhdmVFdmVudFBsdWdpbicsICdDaGFuZ2VFdmVudFBsdWdpbicsICdT
ZWxlY3RFdmVudFBsdWdpbicsICdCZWZvcmVJbnB1dEV2ZW50UGx1Z2luJ107XG5cdFxuXHRtb2R1
bGUuZXhwb3J0cyA9IERlZmF1bHRFdmVudFBsdWdpbk9yZGVyO1xuXG4vKioqLyB9LFxuLyogMTMx
ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18p
IHtcblxuXHQvKipcblx0ICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5c
blx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBp
cyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAq
IExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4g
QW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBp
biB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpcblx0ICovXG5c
dFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHR2YXIgRXZlbnRQcm9wYWdhdG9ycyA9IF9fd2VicGFj
a19yZXF1aXJlX18oMjApO1xuXHR2YXIgUmVhY3RET01Db21wb25lbnRUcmVlID0gX193ZWJwYWNr
X3JlcXVpcmVfXyg1KTtcblx0dmFyIFN5bnRoZXRpY01vdXNlRXZlbnQgPSBfX3dlYnBhY2tfcmVx
dWlyZV9fKDI2KTtcblx0XG5cdHZhciBldmVudFR5cGVzID0ge1xuXHQgIG1vdXNlRW50ZXI6IHtc
blx0ICAgIHJlZ2lzdHJhdGlvbk5hbWU6ICdvbk1vdXNlRW50ZXInLFxuXHQgICAgZGVwZW5kZW5j
aWVzOiBbJ3RvcE1vdXNlT3V0JywgJ3RvcE1vdXNlT3ZlciddXG5cdCAgfSxcblx0ICBtb3VzZUxl
YXZlOiB7XG5cdCAgICByZWdpc3RyYXRpb25OYW1lOiAnb25Nb3VzZUxlYXZlJyxcblx0ICAgIGRl
cGVuZGVuY2llczogWyd0b3BNb3VzZU91dCcsICd0b3BNb3VzZU92ZXInXVxuXHQgIH1cblx0fTtc
blx0XG5cdHZhciBFbnRlckxlYXZlRXZlbnRQbHVnaW4gPSB7XG5cdCAgZXZlbnRUeXBlczogZXZl
bnRUeXBlcyxcblx0XG5cdCAgLyoqXG5cdCAgICogRm9yIGFsbW9zdCBldmVyeSBpbnRlcmFjdGlv
biB3ZSBjYXJlIGFib3V0LCB0aGVyZSB3aWxsIGJlIGJvdGggYSB0b3AtbGV2ZWxcblx0ICAgKiBg
bW91c2VvdmVyYCBhbmQgYG1vdXNlb3V0YCBldmVudCB0aGF0IG9jY3Vycy4gT25seSB1c2UgYG1v
dXNlb3V0YCBzbyB0aGF0XG5cdCAgICogd2UgZG8gbm90IGV4dHJhY3QgZHVwbGljYXRlIGV2ZW50
cy4gSG93ZXZlciwgbW92aW5nIHRoZSBtb3VzZSBpbnRvIHRoZVxuXHQgICAqIGJyb3dzZXIgZnJv
bSBvdXRzaWRlIHdpbGwgbm90IGZpcmUgYSBgbW91c2VvdXRgIGV2ZW50LiBJbiB0aGlzIGNhc2Us
IHdlIHVzZVxuXHQgICAqIHRoZSBgbW91c2VvdmVyYCB0b3AtbGV2ZWwgZXZlbnQuXG5cdCAgICov
XG5cdCAgZXh0cmFjdEV2ZW50czogZnVuY3Rpb24gKHRvcExldmVsVHlwZSwgdGFyZ2V0SW5zdCwg
bmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KSB7XG5cdCAgICBpZiAodG9wTGV2ZWxUeXBl
ID09PSAndG9wTW91c2VPdmVyJyAmJiAobmF0aXZlRXZlbnQucmVsYXRlZFRhcmdldCB8fCBuYXRp
dmVFdmVudC5mcm9tRWxlbWVudCkpIHtcblx0ICAgICAgcmV0dXJuIG51bGw7XG5cdCAgICB9XG5c
dCAgICBpZiAodG9wTGV2ZWxUeXBlICE9PSAndG9wTW91c2VPdXQnICYmIHRvcExldmVsVHlwZSAh
PT0gJ3RvcE1vdXNlT3ZlcicpIHtcblx0ICAgICAgLy8gTXVzdCBub3QgYmUgYSBtb3VzZSBpbiBv
ciBtb3VzZSBvdXQgLSBpZ25vcmluZy5cblx0ICAgICAgcmV0dXJuIG51bGw7XG5cdCAgICB9XG5c
dFxuXHQgICAgdmFyIHdpbjtcblx0ICAgIGlmIChuYXRpdmVFdmVudFRhcmdldC53aW5kb3cgPT09
IG5hdGl2ZUV2ZW50VGFyZ2V0KSB7XG5cdCAgICAgIC8vIGBuYXRpdmVFdmVudFRhcmdldGAgaXMg
cHJvYmFibHkgYSB3aW5kb3cgb2JqZWN0LlxuXHQgICAgICB3aW4gPSBuYXRpdmVFdmVudFRhcmdl
dDtcblx0ICAgIH0gZWxzZSB7XG5cdCAgICAgIC8vIFRPRE86IEZpZ3VyZSBvdXQgd2h5IGBvd25l
ckRvY3VtZW50YCBpcyBzb21ldGltZXMgdW5kZWZpbmVkIGluIElFOC5cblx0ICAgICAgdmFyIGRv
YyA9IG5hdGl2ZUV2ZW50VGFyZ2V0Lm93bmVyRG9jdW1lbnQ7XG5cdCAgICAgIGlmIChkb2MpIHtc
blx0ICAgICAgICB3aW4gPSBkb2MuZGVmYXVsdFZpZXcgfHwgZG9jLnBhcmVudFdpbmRvdztcblx0
ICAgICAgfSBlbHNlIHtcblx0ICAgICAgICB3aW4gPSB3aW5kb3c7XG5cdCAgICAgIH1cblx0ICAg
IH1cblx0XG5cdCAgICB2YXIgZnJvbTtcblx0ICAgIHZhciB0bztcblx0ICAgIGlmICh0b3BMZXZl
bFR5cGUgPT09ICd0b3BNb3VzZU91dCcpIHtcblx0ICAgICAgZnJvbSA9IHRhcmdldEluc3Q7XG5c
dCAgICAgIHZhciByZWxhdGVkID0gbmF0aXZlRXZlbnQucmVsYXRlZFRhcmdldCB8fCBuYXRpdmVF
dmVudC50b0VsZW1lbnQ7XG5cdCAgICAgIHRvID0gcmVsYXRlZCA/IFJlYWN0RE9NQ29tcG9uZW50
VHJlZS5nZXRDbG9zZXN0SW5zdGFuY2VGcm9tTm9kZShyZWxhdGVkKSA6IG51bGw7XG5cdCAgICB9
IGVsc2Uge1xuXHQgICAgICAvLyBNb3ZpbmcgdG8gYSBub2RlIGZyb20gb3V0c2lkZSB0aGUgd2lu
ZG93LlxuXHQgICAgICBmcm9tID0gbnVsbDtcblx0ICAgICAgdG8gPSB0YXJnZXRJbnN0O1xuXHQg
ICAgfVxuXHRcblx0ICAgIGlmIChmcm9tID09PSB0bykge1xuXHQgICAgICAvLyBOb3RoaW5nIHBl
cnRhaW5zIHRvIG91ciBtYW5hZ2VkIGNvbXBvbmVudHMuXG5cdCAgICAgIHJldHVybiBudWxsO1xu
XHQgICAgfVxuXHRcblx0ICAgIHZhciBmcm9tTm9kZSA9IGZyb20gPT0gbnVsbCA/IHdpbiA6IFJl
YWN0RE9NQ29tcG9uZW50VHJlZS5nZXROb2RlRnJvbUluc3RhbmNlKGZyb20pO1xuXHQgICAgdmFy
IHRvTm9kZSA9IHRvID09IG51bGwgPyB3aW4gOiBSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0Tm9k
ZUZyb21JbnN0YW5jZSh0byk7XG5cdFxuXHQgICAgdmFyIGxlYXZlID0gU3ludGhldGljTW91c2VF
dmVudC5nZXRQb29sZWQoZXZlbnRUeXBlcy5tb3VzZUxlYXZlLCBmcm9tLCBuYXRpdmVFdmVudCwg
bmF0aXZlRXZlbnRUYXJnZXQpO1xuXHQgICAgbGVhdmUudHlwZSA9ICdtb3VzZWxlYXZlJztcblx0
ICAgIGxlYXZlLnRhcmdldCA9IGZyb21Ob2RlO1xuXHQgICAgbGVhdmUucmVsYXRlZFRhcmdldCA9
IHRvTm9kZTtcblx0XG5cdCAgICB2YXIgZW50ZXIgPSBTeW50aGV0aWNNb3VzZUV2ZW50LmdldFBv
b2xlZChldmVudFR5cGVzLm1vdXNlRW50ZXIsIHRvLCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRU
YXJnZXQpO1xuXHQgICAgZW50ZXIudHlwZSA9ICdtb3VzZWVudGVyJztcblx0ICAgIGVudGVyLnRh
cmdldCA9IHRvTm9kZTtcblx0ICAgIGVudGVyLnJlbGF0ZWRUYXJnZXQgPSBmcm9tTm9kZTtcblx0
XG5cdCAgICBFdmVudFByb3BhZ2F0b3JzLmFjY3VtdWxhdGVFbnRlckxlYXZlRGlzcGF0Y2hlcyhs
ZWF2ZSwgZW50ZXIsIGZyb20sIHRvKTtcblx0XG5cdCAgICByZXR1cm4gW2xlYXZlLCBlbnRlcl07
XG5cdCAgfVxuXHR9O1xuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBFbnRlckxlYXZlRXZlbnRQbHVn
aW47XG5cbi8qKiovIH0sXG4vKiAxMzIgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0
cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxMy1w
cmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxu
XHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGlj
ZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9y
eSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVu
dCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGly
ZWN0b3J5LlxuXHQgKlxuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdHZhciBfYXNz
aWduID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0KTtcblx0XG5cdHZhciBQb29sZWRDbGFzcyA9IF9f
d2VicGFja19yZXF1aXJlX18oMTMpO1xuXHRcblx0dmFyIGdldFRleHRDb250ZW50QWNjZXNzb3Ig
PSBfX3dlYnBhY2tfcmVxdWlyZV9fKDczKTtcblx0XG5cdC8qKlxuXHQgKiBUaGlzIGhlbHBlciBj
bGFzcyBzdG9yZXMgaW5mb3JtYXRpb24gYWJvdXQgdGV4dCBjb250ZW50IG9mIGEgdGFyZ2V0IG5v
ZGUsXG5cdCAqIGFsbG93aW5nIGNvbXBhcmlzb24gb2YgY29udGVudCBiZWZvcmUgYW5kIGFmdGVy
IGEgZ2l2ZW4gZXZlbnQuXG5cdCAqXG5cdCAqIElkZW50aWZ5IHRoZSBub2RlIHdoZXJlIHNlbGVj
dGlvbiBjdXJyZW50bHkgYmVnaW5zLCB0aGVuIG9ic2VydmVcblx0ICogYm90aCBpdHMgdGV4dCBj
b250ZW50IGFuZCBpdHMgY3VycmVudCBwb3NpdGlvbiBpbiB0aGUgRE9NLiBTaW5jZSB0aGVcblx0
ICogYnJvd3NlciBtYXkgbmF0aXZlbHkgcmVwbGFjZSB0aGUgdGFyZ2V0IG5vZGUgZHVyaW5nIGNv
bXBvc2l0aW9uLCB3ZSBjYW5cblx0ICogdXNlIGl0cyBwb3NpdGlvbiB0byBmaW5kIGl0cyByZXBs
YWNlbWVudC5cblx0ICpcblx0ICogQHBhcmFtIHtET01FdmVudFRhcmdldH0gcm9vdFxuXHQgKi9c
blx0ZnVuY3Rpb24gRmFsbGJhY2tDb21wb3NpdGlvblN0YXRlKHJvb3QpIHtcblx0ICB0aGlzLl9y
b290ID0gcm9vdDtcblx0ICB0aGlzLl9zdGFydFRleHQgPSB0aGlzLmdldFRleHQoKTtcblx0ICB0
aGlzLl9mYWxsYmFja1RleHQgPSBudWxsO1xuXHR9XG5cdFxuXHRfYXNzaWduKEZhbGxiYWNrQ29t
cG9zaXRpb25TdGF0ZS5wcm90b3R5cGUsIHtcblx0ICBkZXN0cnVjdG9yOiBmdW5jdGlvbiAoKSB7
XG5cdCAgICB0aGlzLl9yb290ID0gbnVsbDtcblx0ICAgIHRoaXMuX3N0YXJ0VGV4dCA9IG51bGw7
XG5cdCAgICB0aGlzLl9mYWxsYmFja1RleHQgPSBudWxsO1xuXHQgIH0sXG5cdFxuXHQgIC8qKlxu
XHQgICAqIEdldCBjdXJyZW50IHRleHQgb2YgaW5wdXQuXG5cdCAgICpcblx0ICAgKiBAcmV0dXJu
IHtzdHJpbmd9XG5cdCAgICovXG5cdCAgZ2V0VGV4dDogZnVuY3Rpb24gKCkge1xuXHQgICAgaWYg
KCd2YWx1ZScgaW4gdGhpcy5fcm9vdCkge1xuXHQgICAgICByZXR1cm4gdGhpcy5fcm9vdC52YWx1
ZTtcblx0ICAgIH1cblx0ICAgIHJldHVybiB0aGlzLl9yb290W2dldFRleHRDb250ZW50QWNjZXNz
b3IoKV07XG5cdCAgfSxcblx0XG5cdCAgLyoqXG5cdCAgICogRGV0ZXJtaW5lIHRoZSBkaWZmZXJp
bmcgc3Vic3RyaW5nIGJldHdlZW4gdGhlIGluaXRpYWxseSBzdG9yZWRcblx0ICAgKiB0ZXh0IGNv
bnRlbnQgYW5kIHRoZSBjdXJyZW50IGNvbnRlbnQuXG5cdCAgICpcblx0ICAgKiBAcmV0dXJuIHtz
dHJpbmd9XG5cdCAgICovXG5cdCAgZ2V0RGF0YTogZnVuY3Rpb24gKCkge1xuXHQgICAgaWYgKHRo
aXMuX2ZhbGxiYWNrVGV4dCkge1xuXHQgICAgICByZXR1cm4gdGhpcy5fZmFsbGJhY2tUZXh0O1xu
XHQgICAgfVxuXHRcblx0ICAgIHZhciBzdGFydDtcblx0ICAgIHZhciBzdGFydFZhbHVlID0gdGhp
cy5fc3RhcnRUZXh0O1xuXHQgICAgdmFyIHN0YXJ0TGVuZ3RoID0gc3RhcnRWYWx1ZS5sZW5ndGg7
XG5cdCAgICB2YXIgZW5kO1xuXHQgICAgdmFyIGVuZFZhbHVlID0gdGhpcy5nZXRUZXh0KCk7XG5c
dCAgICB2YXIgZW5kTGVuZ3RoID0gZW5kVmFsdWUubGVuZ3RoO1xuXHRcblx0ICAgIGZvciAoc3Rh
cnQgPSAwOyBzdGFydCA8IHN0YXJ0TGVuZ3RoOyBzdGFydCsrKSB7XG5cdCAgICAgIGlmIChzdGFy
dFZhbHVlW3N0YXJ0XSAhPT0gZW5kVmFsdWVbc3RhcnRdKSB7XG5cdCAgICAgICAgYnJlYWs7XG5c
dCAgICAgIH1cblx0ICAgIH1cblx0XG5cdCAgICB2YXIgbWluRW5kID0gc3RhcnRMZW5ndGggLSBz
dGFydDtcblx0ICAgIGZvciAoZW5kID0gMTsgZW5kIDw9IG1pbkVuZDsgZW5kKyspIHtcblx0ICAg
ICAgaWYgKHN0YXJ0VmFsdWVbc3RhcnRMZW5ndGggLSBlbmRdICE9PSBlbmRWYWx1ZVtlbmRMZW5n
dGggLSBlbmRdKSB7XG5cdCAgICAgICAgYnJlYWs7XG5cdCAgICAgIH1cblx0ICAgIH1cblx0XG5c
dCAgICB2YXIgc2xpY2VUYWlsID0gZW5kID4gMSA/IDEgLSBlbmQgOiB1bmRlZmluZWQ7XG5cdCAg
ICB0aGlzLl9mYWxsYmFja1RleHQgPSBlbmRWYWx1ZS5zbGljZShzdGFydCwgc2xpY2VUYWlsKTtc
blx0ICAgIHJldHVybiB0aGlzLl9mYWxsYmFja1RleHQ7XG5cdCAgfVxuXHR9KTtcblx0XG5cdFBv
b2xlZENsYXNzLmFkZFBvb2xpbmdUbyhGYWxsYmFja0NvbXBvc2l0aW9uU3RhdGUpO1xuXHRcblx0
bW9kdWxlLmV4cG9ydHMgPSBGYWxsYmFja0NvbXBvc2l0aW9uU3RhdGU7XG5cbi8qKiovIH0sXG4v
KiAxMzMgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVp
cmVfXykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywg
SW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBj
b2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVc
blx0ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0
cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZv
dW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQg
Ki9cblx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdHZhciBET01Qcm9wZXJ0eSA9IF9fd2VicGFj
a19yZXF1aXJlX18oMTUpO1xuXHRcblx0dmFyIE1VU1RfVVNFX1BST1BFUlRZID0gRE9NUHJvcGVy
dHkuaW5qZWN0aW9uLk1VU1RfVVNFX1BST1BFUlRZO1xuXHR2YXIgSEFTX0JPT0xFQU5fVkFMVUUg
PSBET01Qcm9wZXJ0eS5pbmplY3Rpb24uSEFTX0JPT0xFQU5fVkFMVUU7XG5cdHZhciBIQVNfTlVN
RVJJQ19WQUxVRSA9IERPTVByb3BlcnR5LmluamVjdGlvbi5IQVNfTlVNRVJJQ19WQUxVRTtcblx0
dmFyIEhBU19QT1NJVElWRV9OVU1FUklDX1ZBTFVFID0gRE9NUHJvcGVydHkuaW5qZWN0aW9uLkhB
U19QT1NJVElWRV9OVU1FUklDX1ZBTFVFO1xuXHR2YXIgSEFTX09WRVJMT0FERURfQk9PTEVBTl9W
QUxVRSA9IERPTVByb3BlcnR5LmluamVjdGlvbi5IQVNfT1ZFUkxPQURFRF9CT09MRUFOX1ZBTFVF
O1xuXHRcblx0dmFyIEhUTUxET01Qcm9wZXJ0eUNvbmZpZyA9IHtcblx0ICBpc0N1c3RvbUF0dHJp
YnV0ZTogUmVnRXhwLnByb3RvdHlwZS50ZXN0LmJpbmQobmV3IFJlZ0V4cCgnXihkYXRhfGFyaWEp
LVsnICsgRE9NUHJvcGVydHkuQVRUUklCVVRFX05BTUVfQ0hBUiArICddKiQnKSksXG5cdCAgUHJv
cGVydGllczoge1xuXHQgICAgLyoqXG5cdCAgICAgKiBTdGFuZGFyZCBQcm9wZXJ0aWVzXG5cdCAg
ICAgKi9cblx0ICAgIGFjY2VwdDogMCxcblx0ICAgIGFjY2VwdENoYXJzZXQ6IDAsXG5cdCAgICBh
Y2Nlc3NLZXk6IDAsXG5cdCAgICBhY3Rpb246IDAsXG5cdCAgICBhbGxvd0Z1bGxTY3JlZW46IEhB
U19CT09MRUFOX1ZBTFVFLFxuXHQgICAgYWxsb3dUcmFuc3BhcmVuY3k6IDAsXG5cdCAgICBhbHQ6
IDAsXG5cdCAgICAvLyBzcGVjaWZpZXMgdGFyZ2V0IGNvbnRleHQgZm9yIGxpbmtzIHdpdGggYHBy
ZWxvYWRgIHR5cGVcblx0ICAgIGFzOiAwLFxuXHQgICAgYXN5bmM6IEhBU19CT09MRUFOX1ZBTFVF
LFxuXHQgICAgYXV0b0NvbXBsZXRlOiAwLFxuXHQgICAgLy8gYXV0b0ZvY3VzIGlzIHBvbHlmaWxs
ZWQvbm9ybWFsaXplZCBieSBBdXRvRm9jdXNVdGlsc1xuXHQgICAgLy8gYXV0b0ZvY3VzOiBIQVNf
Qk9PTEVBTl9WQUxVRSxcblx0ICAgIGF1dG9QbGF5OiBIQVNfQk9PTEVBTl9WQUxVRSxcblx0ICAg
IGNhcHR1cmU6IEhBU19CT09MRUFOX1ZBTFVFLFxuXHQgICAgY2VsbFBhZGRpbmc6IDAsXG5cdCAg
ICBjZWxsU3BhY2luZzogMCxcblx0ICAgIGNoYXJTZXQ6IDAsXG5cdCAgICBjaGFsbGVuZ2U6IDAs
XG5cdCAgICBjaGVja2VkOiBNVVNUX1VTRV9QUk9QRVJUWSB8IEhBU19CT09MRUFOX1ZBTFVFLFxu
XHQgICAgY2l0ZTogMCxcblx0ICAgIGNsYXNzSUQ6IDAsXG5cdCAgICBjbGFzc05hbWU6IDAsXG5c
dCAgICBjb2xzOiBIQVNfUE9TSVRJVkVfTlVNRVJJQ19WQUxVRSxcblx0ICAgIGNvbFNwYW46IDAs
XG5cdCAgICBjb250ZW50OiAwLFxuXHQgICAgY29udGVudEVkaXRhYmxlOiAwLFxuXHQgICAgY29u
dGV4dE1lbnU6IDAsXG5cdCAgICBjb250cm9sczogSEFTX0JPT0xFQU5fVkFMVUUsXG5cdCAgICBj
b29yZHM6IDAsXG5cdCAgICBjcm9zc09yaWdpbjogMCxcblx0ICAgIGRhdGE6IDAsIC8vIEZvciBg
PG9iamVjdCAvPmAgYWN0cyBhcyBgc3JjYC5cblx0ICAgIGRhdGVUaW1lOiAwLFxuXHQgICAgJ2Rl
ZmF1bHQnOiBIQVNfQk9PTEVBTl9WQUxVRSxcblx0ICAgIGRlZmVyOiBIQVNfQk9PTEVBTl9WQUxV
RSxcblx0ICAgIGRpcjogMCxcblx0ICAgIGRpc2FibGVkOiBIQVNfQk9PTEVBTl9WQUxVRSxcblx0
ICAgIGRvd25sb2FkOiBIQVNfT1ZFUkxPQURFRF9CT09MRUFOX1ZBTFVFLFxuXHQgICAgZHJhZ2dh
YmxlOiAwLFxuXHQgICAgZW5jVHlwZTogMCxcblx0ICAgIGZvcm06IDAsXG5cdCAgICBmb3JtQWN0
aW9uOiAwLFxuXHQgICAgZm9ybUVuY1R5cGU6IDAsXG5cdCAgICBmb3JtTWV0aG9kOiAwLFxuXHQg
ICAgZm9ybU5vVmFsaWRhdGU6IEhBU19CT09MRUFOX1ZBTFVFLFxuXHQgICAgZm9ybVRhcmdldDog
MCxcblx0ICAgIGZyYW1lQm9yZGVyOiAwLFxuXHQgICAgaGVhZGVyczogMCxcblx0ICAgIGhlaWdo
dDogMCxcblx0ICAgIGhpZGRlbjogSEFTX0JPT0xFQU5fVkFMVUUsXG5cdCAgICBoaWdoOiAwLFxu
XHQgICAgaHJlZjogMCxcblx0ICAgIGhyZWZMYW5nOiAwLFxuXHQgICAgaHRtbEZvcjogMCxcblx0
ICAgIGh0dHBFcXVpdjogMCxcblx0ICAgIGljb246IDAsXG5cdCAgICBpZDogMCxcblx0ICAgIGlu
cHV0TW9kZTogMCxcblx0ICAgIGludGVncml0eTogMCxcblx0ICAgIGlzOiAwLFxuXHQgICAga2V5
UGFyYW1zOiAwLFxuXHQgICAga2V5VHlwZTogMCxcblx0ICAgIGtpbmQ6IDAsXG5cdCAgICBsYWJl
bDogMCxcblx0ICAgIGxhbmc6IDAsXG5cdCAgICBsaXN0OiAwLFxuXHQgICAgbG9vcDogSEFTX0JP
T0xFQU5fVkFMVUUsXG5cdCAgICBsb3c6IDAsXG5cdCAgICBtYW5pZmVzdDogMCxcblx0ICAgIG1h
cmdpbkhlaWdodDogMCxcblx0ICAgIG1hcmdpbldpZHRoOiAwLFxuXHQgICAgbWF4OiAwLFxuXHQg
ICAgbWF4TGVuZ3RoOiAwLFxuXHQgICAgbWVkaWE6IDAsXG5cdCAgICBtZWRpYUdyb3VwOiAwLFxu
XHQgICAgbWV0aG9kOiAwLFxuXHQgICAgbWluOiAwLFxuXHQgICAgbWluTGVuZ3RoOiAwLFxuXHQg
ICAgLy8gQ2F1dGlvbjsgYG9wdGlvbi5zZWxlY3RlZGAgaXMgbm90IHVwZGF0ZWQgaWYgYHNlbGVj
dC5tdWx0aXBsZWAgaXNcblx0ICAgIC8vIGRpc2FibGVkIHdpdGggYHJlbW92ZUF0dHJpYnV0ZWAu
XG5cdCAgICBtdWx0aXBsZTogTVVTVF9VU0VfUFJPUEVSVFkgfCBIQVNfQk9PTEVBTl9WQUxVRSxc
blx0ICAgIG11dGVkOiBNVVNUX1VTRV9QUk9QRVJUWSB8IEhBU19CT09MRUFOX1ZBTFVFLFxuXHQg
ICAgbmFtZTogMCxcblx0ICAgIG5vbmNlOiAwLFxuXHQgICAgbm9WYWxpZGF0ZTogSEFTX0JPT0xF
QU5fVkFMVUUsXG5cdCAgICBvcGVuOiBIQVNfQk9PTEVBTl9WQUxVRSxcblx0ICAgIG9wdGltdW06
IDAsXG5cdCAgICBwYXR0ZXJuOiAwLFxuXHQgICAgcGxhY2Vob2xkZXI6IDAsXG5cdCAgICBwbGF5
c0lubGluZTogSEFTX0JPT0xFQU5fVkFMVUUsXG5cdCAgICBwb3N0ZXI6IDAsXG5cdCAgICBwcmVs
b2FkOiAwLFxuXHQgICAgcHJvZmlsZTogMCxcblx0ICAgIHJhZGlvR3JvdXA6IDAsXG5cdCAgICBy
ZWFkT25seTogSEFTX0JPT0xFQU5fVkFMVUUsXG5cdCAgICByZWZlcnJlclBvbGljeTogMCxcblx0
ICAgIHJlbDogMCxcblx0ICAgIHJlcXVpcmVkOiBIQVNfQk9PTEVBTl9WQUxVRSxcblx0ICAgIHJl
dmVyc2VkOiBIQVNfQk9PTEVBTl9WQUxVRSxcblx0ICAgIHJvbGU6IDAsXG5cdCAgICByb3dzOiBI
QVNfUE9TSVRJVkVfTlVNRVJJQ19WQUxVRSxcblx0ICAgIHJvd1NwYW46IEhBU19OVU1FUklDX1ZB
TFVFLFxuXHQgICAgc2FuZGJveDogMCxcblx0ICAgIHNjb3BlOiAwLFxuXHQgICAgc2NvcGVkOiBI
QVNfQk9PTEVBTl9WQUxVRSxcblx0ICAgIHNjcm9sbGluZzogMCxcblx0ICAgIHNlYW1sZXNzOiBI
QVNfQk9PTEVBTl9WQUxVRSxcblx0ICAgIHNlbGVjdGVkOiBNVVNUX1VTRV9QUk9QRVJUWSB8IEhB
U19CT09MRUFOX1ZBTFVFLFxuXHQgICAgc2hhcGU6IDAsXG5cdCAgICBzaXplOiBIQVNfUE9TSVRJ
VkVfTlVNRVJJQ19WQUxVRSxcblx0ICAgIHNpemVzOiAwLFxuXHQgICAgc3BhbjogSEFTX1BPU0lU
SVZFX05VTUVSSUNfVkFMVUUsXG5cdCAgICBzcGVsbENoZWNrOiAwLFxuXHQgICAgc3JjOiAwLFxu
XHQgICAgc3JjRG9jOiAwLFxuXHQgICAgc3JjTGFuZzogMCxcblx0ICAgIHNyY1NldDogMCxcblx0
ICAgIHN0YXJ0OiBIQVNfTlVNRVJJQ19WQUxVRSxcblx0ICAgIHN0ZXA6IDAsXG5cdCAgICBzdHls
ZTogMCxcblx0ICAgIHN1bW1hcnk6IDAsXG5cdCAgICB0YWJJbmRleDogMCxcblx0ICAgIHRhcmdl
dDogMCxcblx0ICAgIHRpdGxlOiAwLFxuXHQgICAgLy8gU2V0dGluZyAudHlwZSB0aHJvd3Mgb24g
bm9uLTxpbnB1dD4gdGFnc1xuXHQgICAgdHlwZTogMCxcblx0ICAgIHVzZU1hcDogMCxcblx0ICAg
IHZhbHVlOiAwLFxuXHQgICAgd2lkdGg6IDAsXG5cdCAgICB3bW9kZTogMCxcblx0ICAgIHdyYXA6
IDAsXG5cdFxuXHQgICAgLyoqXG5cdCAgICAgKiBSREZhIFByb3BlcnRpZXNcblx0ICAgICAqL1xu
XHQgICAgYWJvdXQ6IDAsXG5cdCAgICBkYXRhdHlwZTogMCxcblx0ICAgIGlubGlzdDogMCxcblx0
ICAgIHByZWZpeDogMCxcblx0ICAgIC8vIHByb3BlcnR5IGlzIGFsc28gc3VwcG9ydGVkIGZvciBP
cGVuR3JhcGggaW4gbWV0YSB0YWdzLlxuXHQgICAgcHJvcGVydHk6IDAsXG5cdCAgICByZXNvdXJj
ZTogMCxcblx0ICAgICd0eXBlb2YnOiAwLFxuXHQgICAgdm9jYWI6IDAsXG5cdFxuXHQgICAgLyoq
XG5cdCAgICAgKiBOb24tc3RhbmRhcmQgUHJvcGVydGllc1xuXHQgICAgICovXG5cdCAgICAvLyBh
dXRvQ2FwaXRhbGl6ZSBhbmQgYXV0b0NvcnJlY3QgYXJlIHN1cHBvcnRlZCBpbiBNb2JpbGUgU2Fm
YXJpIGZvclxuXHQgICAgLy8ga2V5Ym9hcmQgaGludHMuXG5cdCAgICBhdXRvQ2FwaXRhbGl6ZTog
MCxcblx0ICAgIGF1dG9Db3JyZWN0OiAwLFxuXHQgICAgLy8gYXV0b1NhdmUgYWxsb3dzIFdlYktp
dC9CbGluayB0byBwZXJzaXN0IHZhbHVlcyBvZiBpbnB1dCBmaWVsZHMgb24gcGFnZSByZWxvYWRz
XG5cdCAgICBhdXRvU2F2ZTogMCxcblx0ICAgIC8vIGNvbG9yIGlzIGZvciBTYWZhcmkgbWFzay1p
Y29uIGxpbmtcblx0ICAgIGNvbG9yOiAwLFxuXHQgICAgLy8gaXRlbVByb3AsIGl0ZW1TY29wZSwg
aXRlbVR5cGUgYXJlIGZvclxuXHQgICAgLy8gTWljcm9kYXRhIHN1cHBvcnQuIFNlZSBodHRwOi8v
c2NoZW1hLm9yZy9kb2NzL2dzLmh0bWxcblx0ICAgIGl0ZW1Qcm9wOiAwLFxuXHQgICAgaXRlbVNj
b3BlOiBIQVNfQk9PTEVBTl9WQUxVRSxcblx0ICAgIGl0ZW1UeXBlOiAwLFxuXHQgICAgLy8gaXRl
bUlEIGFuZCBpdGVtUmVmIGFyZSBmb3IgTWljcm9kYXRhIHN1cHBvcnQgYXMgd2VsbCBidXRcblx0
ICAgIC8vIG9ubHkgc3BlY2lmaWVkIGluIHRoZSBXSEFUV0cgc3BlYyBkb2N1bWVudC4gU2VlXG5c
dCAgICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9taWNyb2RhdGEu
aHRtbCNtaWNyb2RhdGEtZG9tLWFwaVxuXHQgICAgaXRlbUlEOiAwLFxuXHQgICAgaXRlbVJlZjog
MCxcblx0ICAgIC8vIHJlc3VsdHMgc2hvdyBsb29raW5nIGdsYXNzIGljb24gYW5kIHJlY2VudCBz
ZWFyY2hlcyBvbiBpbnB1dFxuXHQgICAgLy8gc2VhcmNoIGZpZWxkcyBpbiBXZWJLaXQvQmxpbmtc
blx0ICAgIHJlc3VsdHM6IDAsXG5cdCAgICAvLyBJRS1vbmx5IGF0dHJpYnV0ZSB0aGF0IHNwZWNp
ZmllcyBzZWN1cml0eSByZXN0cmljdGlvbnMgb24gYW4gaWZyYW1lXG5cdCAgICAvLyBhcyBhbiBh
bHRlcm5hdGl2ZSB0byB0aGUgc2FuZGJveCBhdHRyaWJ1dGUgb24gSUU8MTBcblx0ICAgIHNlY3Vy
aXR5OiAwLFxuXHQgICAgLy8gSUUtb25seSBhdHRyaWJ1dGUgdGhhdCBjb250cm9scyBmb2N1cyBi
ZWhhdmlvclxuXHQgICAgdW5zZWxlY3RhYmxlOiAwXG5cdCAgfSxcblx0ICBET01BdHRyaWJ1dGVO
YW1lczoge1xuXHQgICAgYWNjZXB0Q2hhcnNldDogJ2FjY2VwdC1jaGFyc2V0Jyxcblx0ICAgIGNs
YXNzTmFtZTogJ2NsYXNzJyxcblx0ICAgIGh0bWxGb3I6ICdmb3InLFxuXHQgICAgaHR0cEVxdWl2
OiAnaHR0cC1lcXVpdidcblx0ICB9LFxuXHQgIERPTVByb3BlcnR5TmFtZXM6IHt9LFxuXHQgIERP
TU11dGF0aW9uTWV0aG9kczoge1xuXHQgICAgdmFsdWU6IGZ1bmN0aW9uIChub2RlLCB2YWx1ZSkg
e1xuXHQgICAgICBpZiAodmFsdWUgPT0gbnVsbCkge1xuXHQgICAgICAgIHJldHVybiBub2RlLnJl
bW92ZUF0dHJpYnV0ZSgndmFsdWUnKTtcblx0ICAgICAgfVxuXHRcblx0ICAgICAgLy8gTnVtYmVy
IGlucHV0cyBnZXQgc3BlY2lhbCB0cmVhdG1lbnQgZHVlIHRvIHNvbWUgZWRnZSBjYXNlcyBpblxu
XHQgICAgICAvLyBDaHJvbWUuIExldCBldmVyeXRoaW5nIGVsc2UgYXNzaWduIHRoZSB2YWx1ZSBh
dHRyaWJ1dGUgYXMgbm9ybWFsLlxuXHQgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJv
b2svcmVhY3QvaXNzdWVzLzcyNTMjaXNzdWVjb21tZW50LTIzNjA3NDMyNlxuXHQgICAgICBpZiAo
bm9kZS50eXBlICE9PSAnbnVtYmVyJyB8fCBub2RlLmhhc0F0dHJpYnV0ZSgndmFsdWUnKSA9PT0g
ZmFsc2UpIHtcblx0ICAgICAgICBub2RlLnNldEF0dHJpYnV0ZSgndmFsdWUnLCAnJyArIHZhbHVl
KTtcblx0ICAgICAgfSBlbHNlIGlmIChub2RlLnZhbGlkaXR5ICYmICFub2RlLnZhbGlkaXR5LmJh
ZElucHV0ICYmIG5vZGUub3duZXJEb2N1bWVudC5hY3RpdmVFbGVtZW50ICE9PSBub2RlKSB7XG5c
dCAgICAgICAgLy8gRG9uJ3QgYXNzaWduIGFuIGF0dHJpYnV0ZSBpZiB2YWxpZGF0aW9uIHJlcG9y
dHMgYmFkXG5cdCAgICAgICAgLy8gaW5wdXQuIENocm9tZSB3aWxsIGNsZWFyIHRoZSB2YWx1ZS4g
QWRkaXRpb25hbGx5LCBkb24ndFxuXHQgICAgICAgIC8vIG9wZXJhdGUgb24gaW5wdXRzIHRoYXQg
aGF2ZSBmb2N1cywgb3RoZXJ3aXNlIENocm9tZSBtaWdodFxuXHQgICAgICAgIC8vIHN0cmlwIG9m
ZiB0cmFpbGluZyBkZWNpbWFsIHBsYWNlcyBhbmQgY2F1c2UgdGhlIHVzZXInc1xuXHQgICAgICAg
IC8vIGN1cnNvciBwb3NpdGlvbiB0byBqdW1wIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGlucHV0
LlxuXHQgICAgICAgIC8vXG5cdCAgICAgICAgLy8gSW4gUmVhY3RET01JbnB1dCwgd2UgaGF2ZSBh
biBvbkJsdXIgZXZlbnQgdGhhdCB3aWxsIHRyaWdnZXJcblx0ICAgICAgICAvLyB0aGlzIGZ1bmN0
aW9uIGFnYWluIHdoZW4gZm9jdXMgaXMgbG9zdC5cblx0ICAgICAgICBub2RlLnNldEF0dHJpYnV0
ZSgndmFsdWUnLCAnJyArIHZhbHVlKTtcblx0ICAgICAgfVxuXHQgICAgfVxuXHQgIH1cblx0fTtc
blx0XG5cdG1vZHVsZS5leHBvcnRzID0gSFRNTERPTVByb3BlcnR5Q29uZmlnO1xuXG4vKioqLyB9
LFxuLyogMTM0ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19y
ZXF1aXJlX18pIHtcblxuXHQvKiBXRUJQQUNLIFZBUiBJTkpFQ1RJT04gKi8oZnVuY3Rpb24ocHJv
Y2Vzcykgey8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxu
XHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlz
IGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICog
TElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBB
biBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGlu
IHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKi9cblx0
XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdHZhciBSZWFjdFJlY29uY2lsZXIgPSBfX3dlYnBhY2tf
cmVxdWlyZV9fKDE2KTtcblx0XG5cdHZhciBpbnN0YW50aWF0ZVJlYWN0Q29tcG9uZW50ID0gX193
ZWJwYWNrX3JlcXVpcmVfXyg3NSk7XG5cdHZhciBLZXlFc2NhcGVVdGlscyA9IF9fd2VicGFja19y
ZXF1aXJlX18oMzgpO1xuXHR2YXIgc2hvdWxkVXBkYXRlUmVhY3RDb21wb25lbnQgPSBfX3dlYnBh
Y2tfcmVxdWlyZV9fKDQ4KTtcblx0dmFyIHRyYXZlcnNlQWxsQ2hpbGRyZW4gPSBfX3dlYnBhY2tf
cmVxdWlyZV9fKDc4KTtcblx0dmFyIHdhcm5pbmcgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIpO1xu
XHRcblx0dmFyIFJlYWN0Q29tcG9uZW50VHJlZUhvb2s7XG5cdFxuXHRpZiAodHlwZW9mIHByb2Nl
c3MgIT09ICd1bmRlZmluZWQnICYmIHByb2Nlc3MuZW52ICYmIChcInByb2R1Y3Rpb25cIikgPT09
ICd0ZXN0Jykge1xuXHQgIC8vIFRlbXBvcmFyeSBoYWNrLlxuXHQgIC8vIElubGluZSByZXF1aXJl
cyBkb24ndCB3b3JrIHdlbGwgd2l0aCBKZXN0OlxuXHQgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9m
YWNlYm9vay9yZWFjdC9pc3N1ZXMvNzI0MFxuXHQgIC8vIFJlbW92ZSB0aGUgaW5saW5lIHJlcXVp
cmVzIHdoZW4gd2UgZG9uJ3QgbmVlZCB0aGVtIGFueW1vcmU6XG5cdCAgLy8gaHR0cHM6Ly9naXRo
dWIuY29tL2ZhY2Vib29rL3JlYWN0L3B1bGwvNzE3OFxuXHQgIFJlYWN0Q29tcG9uZW50VHJlZUhv
b2sgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDkwKTtcblx0fVxuXHRcblx0ZnVuY3Rpb24gaW5zdGFu
dGlhdGVDaGlsZChjaGlsZEluc3RhbmNlcywgY2hpbGQsIG5hbWUsIHNlbGZEZWJ1Z0lEKSB7XG5c
dCAgLy8gV2UgZm91bmQgYSBjb21wb25lbnQgaW5zdGFuY2UuXG5cdCAgdmFyIGtleVVuaXF1ZSA9
IGNoaWxkSW5zdGFuY2VzW25hbWVdID09PSB1bmRlZmluZWQ7XG5cdCAgaWYgKGZhbHNlKSB7XG5c
dCAgICBpZiAoIVJlYWN0Q29tcG9uZW50VHJlZUhvb2spIHtcblx0ICAgICAgUmVhY3RDb21wb25l
bnRUcmVlSG9vayA9IHJlcXVpcmUoJ3JlYWN0L2xpYi9SZWFjdENvbXBvbmVudFRyZWVIb29rJyk7
XG5cdCAgICB9XG5cdCAgICBpZiAoIWtleVVuaXF1ZSkge1xuXHQgICAgICBwcm9jZXNzLmVudi5O
T0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ2ZsYXR0ZW5DaGlsZHJl
biguLi4pOiBFbmNvdW50ZXJlZCB0d28gY2hpbGRyZW4gd2l0aCB0aGUgc2FtZSBrZXksICcgKyAn
YCVzYC4gQ2hpbGQga2V5cyBtdXN0IGJlIHVuaXF1ZTsgd2hlbiB0d28gY2hpbGRyZW4gc2hhcmUg
YSBrZXksIG9ubHkgJyArICd0aGUgZmlyc3QgY2hpbGQgd2lsbCBiZSB1c2VkLiVzJywgS2V5RXNj
YXBlVXRpbHMudW5lc2NhcGUobmFtZSksIFJlYWN0Q29tcG9uZW50VHJlZUhvb2suZ2V0U3RhY2tB
ZGRlbmR1bUJ5SUQoc2VsZkRlYnVnSUQpKSA6IHZvaWQgMDtcblx0ICAgIH1cblx0ICB9XG5cdCAg
aWYgKGNoaWxkICE9IG51bGwgJiYga2V5VW5pcXVlKSB7XG5cdCAgICBjaGlsZEluc3RhbmNlc1tu
YW1lXSA9IGluc3RhbnRpYXRlUmVhY3RDb21wb25lbnQoY2hpbGQsIHRydWUpO1xuXHQgIH1cblx0
fVxuXHRcblx0LyoqXG5cdCAqIFJlYWN0Q2hpbGRSZWNvbmNpbGVyIHByb3ZpZGVzIGhlbHBlcnMg
Zm9yIGluaXRpYWxpemluZyBvciB1cGRhdGluZyBhIHNldCBvZlxuXHQgKiBjaGlsZHJlbi4gSXRz
IG91dHB1dCBpcyBzdWl0YWJsZSBmb3IgcGFzc2luZyBpdCBvbnRvIFJlYWN0TXVsdGlDaGlsZCB3
aGljaFxuXHQgKiBkb2VzIGRpZmZlZCByZW9yZGVyaW5nIGFuZCBpbnNlcnRpb24uXG5cdCAqL1xu
XHR2YXIgUmVhY3RDaGlsZFJlY29uY2lsZXIgPSB7XG5cdCAgLyoqXG5cdCAgICogR2VuZXJhdGVz
IGEgXCJtb3VudCBpbWFnZVwiIGZvciBlYWNoIG9mIHRoZSBzdXBwbGllZCBjaGlsZHJlbi4gSW4g
dGhlIGNhc2Vcblx0ICAgKiBvZiBgUmVhY3RET01Db21wb25lbnRgLCBhIG1vdW50IGltYWdlIGlz
IGEgc3RyaW5nIG9mIG1hcmt1cC5cblx0ICAgKlxuXHQgICAqIEBwYXJhbSB7P29iamVjdH0gbmVz
dGVkQ2hpbGROb2RlcyBOZXN0ZWQgY2hpbGQgbWFwcy5cblx0ICAgKiBAcmV0dXJuIHs/b2JqZWN0
fSBBIHNldCBvZiBjaGlsZCBpbnN0YW5jZXMuXG5cdCAgICogQGludGVybmFsXG5cdCAgICovXG5c
dCAgaW5zdGFudGlhdGVDaGlsZHJlbjogZnVuY3Rpb24gKG5lc3RlZENoaWxkTm9kZXMsIHRyYW5z
YWN0aW9uLCBjb250ZXh0LCBzZWxmRGVidWdJRCkgLy8gMCBpbiBwcm9kdWN0aW9uIGFuZCBmb3Ig
cm9vdHNcblx0ICB7XG5cdCAgICBpZiAobmVzdGVkQ2hpbGROb2RlcyA9PSBudWxsKSB7XG5cdCAg
ICAgIHJldHVybiBudWxsO1xuXHQgICAgfVxuXHQgICAgdmFyIGNoaWxkSW5zdGFuY2VzID0ge307
XG5cdFxuXHQgICAgaWYgKGZhbHNlKSB7XG5cdCAgICAgIHRyYXZlcnNlQWxsQ2hpbGRyZW4obmVz
dGVkQ2hpbGROb2RlcywgZnVuY3Rpb24gKGNoaWxkSW5zdHMsIGNoaWxkLCBuYW1lKSB7XG5cdCAg
ICAgICAgcmV0dXJuIGluc3RhbnRpYXRlQ2hpbGQoY2hpbGRJbnN0cywgY2hpbGQsIG5hbWUsIHNl
bGZEZWJ1Z0lEKTtcblx0ICAgICAgfSwgY2hpbGRJbnN0YW5jZXMpO1xuXHQgICAgfSBlbHNlIHtc
blx0ICAgICAgdHJhdmVyc2VBbGxDaGlsZHJlbihuZXN0ZWRDaGlsZE5vZGVzLCBpbnN0YW50aWF0
ZUNoaWxkLCBjaGlsZEluc3RhbmNlcyk7XG5cdCAgICB9XG5cdCAgICByZXR1cm4gY2hpbGRJbnN0
YW5jZXM7XG5cdCAgfSxcblx0XG5cdCAgLyoqXG5cdCAgICogVXBkYXRlcyB0aGUgcmVuZGVyZWQg
Y2hpbGRyZW4gYW5kIHJldHVybnMgYSBuZXcgc2V0IG9mIGNoaWxkcmVuLlxuXHQgICAqXG5cdCAg
ICogQHBhcmFtIHs/b2JqZWN0fSBwcmV2Q2hpbGRyZW4gUHJldmlvdXNseSBpbml0aWFsaXplZCBz
ZXQgb2YgY2hpbGRyZW4uXG5cdCAgICogQHBhcmFtIHs/b2JqZWN0fSBuZXh0Q2hpbGRyZW4gRmxh
dCBjaGlsZCBlbGVtZW50IG1hcHMuXG5cdCAgICogQHBhcmFtIHtSZWFjdFJlY29uY2lsZVRyYW5z
YWN0aW9ufSB0cmFuc2FjdGlvblxuXHQgICAqIEBwYXJhbSB7b2JqZWN0fSBjb250ZXh0XG5cdCAg
ICogQHJldHVybiB7P29iamVjdH0gQSBuZXcgc2V0IG9mIGNoaWxkIGluc3RhbmNlcy5cblx0ICAg
KiBAaW50ZXJuYWxcblx0ICAgKi9cblx0ICB1cGRhdGVDaGlsZHJlbjogZnVuY3Rpb24gKHByZXZD
aGlsZHJlbiwgbmV4dENoaWxkcmVuLCBtb3VudEltYWdlcywgcmVtb3ZlZE5vZGVzLCB0cmFuc2Fj
dGlvbiwgaG9zdFBhcmVudCwgaG9zdENvbnRhaW5lckluZm8sIGNvbnRleHQsIHNlbGZEZWJ1Z0lE
KSAvLyAwIGluIHByb2R1Y3Rpb24gYW5kIGZvciByb290c1xuXHQgIHtcblx0ICAgIC8vIFdlIGN1
cnJlbnRseSBkb24ndCBoYXZlIGEgd2F5IHRvIHRyYWNrIG1vdmVzIGhlcmUgYnV0IGlmIHdlIHVz
ZSBpdGVyYXRvcnNcblx0ICAgIC8vIGluc3RlYWQgb2YgZm9yLi5pbiB3ZSBjYW4gemlwIHRoZSBp
dGVyYXRvcnMgYW5kIGNoZWNrIGlmIGFuIGl0ZW0gaGFzXG5cdCAgICAvLyBtb3ZlZC5cblx0ICAg
IC8vIFRPRE86IElmIG5vdGhpbmcgaGFzIGNoYW5nZWQsIHJldHVybiB0aGUgcHJldkNoaWxkcmVu
IG9iamVjdCBzbyB0aGF0IHdlXG5cdCAgICAvLyBjYW4gcXVpY2tseSBiYWlsb3V0IGlmIG5vdGhp
bmcgaGFzIGNoYW5nZWQuXG5cdCAgICBpZiAoIW5leHRDaGlsZHJlbiAmJiAhcHJldkNoaWxkcmVu
KSB7XG5cdCAgICAgIHJldHVybjtcblx0ICAgIH1cblx0ICAgIHZhciBuYW1lO1xuXHQgICAgdmFy
IHByZXZDaGlsZDtcblx0ICAgIGZvciAobmFtZSBpbiBuZXh0Q2hpbGRyZW4pIHtcblx0ICAgICAg
aWYgKCFuZXh0Q2hpbGRyZW4uaGFzT3duUHJvcGVydHkobmFtZSkpIHtcblx0ICAgICAgICBjb250
aW51ZTtcblx0ICAgICAgfVxuXHQgICAgICBwcmV2Q2hpbGQgPSBwcmV2Q2hpbGRyZW4gJiYgcHJl
dkNoaWxkcmVuW25hbWVdO1xuXHQgICAgICB2YXIgcHJldkVsZW1lbnQgPSBwcmV2Q2hpbGQgJiYg
cHJldkNoaWxkLl9jdXJyZW50RWxlbWVudDtcblx0ICAgICAgdmFyIG5leHRFbGVtZW50ID0gbmV4
dENoaWxkcmVuW25hbWVdO1xuXHQgICAgICBpZiAocHJldkNoaWxkICE9IG51bGwgJiYgc2hvdWxk
VXBkYXRlUmVhY3RDb21wb25lbnQocHJldkVsZW1lbnQsIG5leHRFbGVtZW50KSkge1xuXHQgICAg
ICAgIFJlYWN0UmVjb25jaWxlci5yZWNlaXZlQ29tcG9uZW50KHByZXZDaGlsZCwgbmV4dEVsZW1l
bnQsIHRyYW5zYWN0aW9uLCBjb250ZXh0KTtcblx0ICAgICAgICBuZXh0Q2hpbGRyZW5bbmFtZV0g
PSBwcmV2Q2hpbGQ7XG5cdCAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgaWYgKHByZXZDaGlsZCkg
e1xuXHQgICAgICAgICAgcmVtb3ZlZE5vZGVzW25hbWVdID0gUmVhY3RSZWNvbmNpbGVyLmdldEhv
c3ROb2RlKHByZXZDaGlsZCk7XG5cdCAgICAgICAgICBSZWFjdFJlY29uY2lsZXIudW5tb3VudENv
bXBvbmVudChwcmV2Q2hpbGQsIGZhbHNlKTtcblx0ICAgICAgICB9XG5cdCAgICAgICAgLy8gVGhl
IGNoaWxkIG11c3QgYmUgaW5zdGFudGlhdGVkIGJlZm9yZSBpdCdzIG1vdW50ZWQuXG5cdCAgICAg
ICAgdmFyIG5leHRDaGlsZEluc3RhbmNlID0gaW5zdGFudGlhdGVSZWFjdENvbXBvbmVudChuZXh0
RWxlbWVudCwgdHJ1ZSk7XG5cdCAgICAgICAgbmV4dENoaWxkcmVuW25hbWVdID0gbmV4dENoaWxk
SW5zdGFuY2U7XG5cdCAgICAgICAgLy8gQ3JlYXRpbmcgbW91bnQgaW1hZ2Ugbm93IGVuc3VyZXMg
cmVmcyBhcmUgcmVzb2x2ZWQgaW4gcmlnaHQgb3JkZXJcblx0ICAgICAgICAvLyAoc2VlIGh0dHBz
Oi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9wdWxsLzcxMDEgZm9yIGV4cGxhbmF0aW9uKS5c
blx0ICAgICAgICB2YXIgbmV4dENoaWxkTW91bnRJbWFnZSA9IFJlYWN0UmVjb25jaWxlci5tb3Vu
dENvbXBvbmVudChuZXh0Q2hpbGRJbnN0YW5jZSwgdHJhbnNhY3Rpb24sIGhvc3RQYXJlbnQsIGhv
c3RDb250YWluZXJJbmZvLCBjb250ZXh0LCBzZWxmRGVidWdJRCk7XG5cdCAgICAgICAgbW91bnRJ
bWFnZXMucHVzaChuZXh0Q2hpbGRNb3VudEltYWdlKTtcblx0ICAgICAgfVxuXHQgICAgfVxuXHQg
ICAgLy8gVW5tb3VudCBjaGlsZHJlbiB0aGF0IGFyZSBubyBsb25nZXIgcHJlc2VudC5cblx0ICAg
IGZvciAobmFtZSBpbiBwcmV2Q2hpbGRyZW4pIHtcblx0ICAgICAgaWYgKHByZXZDaGlsZHJlbi5o
YXNPd25Qcm9wZXJ0eShuYW1lKSAmJiAhKG5leHRDaGlsZHJlbiAmJiBuZXh0Q2hpbGRyZW4uaGFz
T3duUHJvcGVydHkobmFtZSkpKSB7XG5cdCAgICAgICAgcHJldkNoaWxkID0gcHJldkNoaWxkcmVu
W25hbWVdO1xuXHQgICAgICAgIHJlbW92ZWROb2Rlc1tuYW1lXSA9IFJlYWN0UmVjb25jaWxlci5n
ZXRIb3N0Tm9kZShwcmV2Q2hpbGQpO1xuXHQgICAgICAgIFJlYWN0UmVjb25jaWxlci51bm1vdW50
Q29tcG9uZW50KHByZXZDaGlsZCwgZmFsc2UpO1xuXHQgICAgICB9XG5cdCAgICB9XG5cdCAgfSxc
blx0XG5cdCAgLyoqXG5cdCAgICogVW5tb3VudHMgYWxsIHJlbmRlcmVkIGNoaWxkcmVuLiBUaGlz
IHNob3VsZCBiZSB1c2VkIHRvIGNsZWFuIHVwIGNoaWxkcmVuXG5cdCAgICogd2hlbiB0aGlzIGNv
bXBvbmVudCBpcyB1bm1vdW50ZWQuXG5cdCAgICpcblx0ICAgKiBAcGFyYW0gez9vYmplY3R9IHJl
bmRlcmVkQ2hpbGRyZW4gUHJldmlvdXNseSBpbml0aWFsaXplZCBzZXQgb2YgY2hpbGRyZW4uXG5c
dCAgICogQGludGVybmFsXG5cdCAgICovXG5cdCAgdW5tb3VudENoaWxkcmVuOiBmdW5jdGlvbiAo
cmVuZGVyZWRDaGlsZHJlbiwgc2FmZWx5KSB7XG5cdCAgICBmb3IgKHZhciBuYW1lIGluIHJlbmRl
cmVkQ2hpbGRyZW4pIHtcblx0ICAgICAgaWYgKHJlbmRlcmVkQ2hpbGRyZW4uaGFzT3duUHJvcGVy
dHkobmFtZSkpIHtcblx0ICAgICAgICB2YXIgcmVuZGVyZWRDaGlsZCA9IHJlbmRlcmVkQ2hpbGRy
ZW5bbmFtZV07XG5cdCAgICAgICAgUmVhY3RSZWNvbmNpbGVyLnVubW91bnRDb21wb25lbnQocmVu
ZGVyZWRDaGlsZCwgc2FmZWx5KTtcblx0ICAgICAgfVxuXHQgICAgfVxuXHQgIH1cblx0fTtcblx0
XG5cdG1vZHVsZS5leHBvcnRzID0gUmVhY3RDaGlsZFJlY29uY2lsZXI7XG5cdC8qIFdFQlBBQ0sg
VkFSIElOSkVDVElPTiAqL30uY2FsbChleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKDg3KSkp
XG5cbi8qKiovIH0sXG4vKiAxMzUgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywg
X193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxMy1wcmVz
ZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQg
KiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5z
ZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBv
ZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCBy
aWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0
b3J5LlxuXHQgKlxuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdHZhciBET01DaGls
ZHJlbk9wZXJhdGlvbnMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDM0KTtcblx0dmFyIFJlYWN0RE9N
SURPcGVyYXRpb25zID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNDIpO1xuXHRcblx0LyoqXG5cdCAq
IEFic3RyYWN0cyBhd2F5IGFsbCBmdW5jdGlvbmFsaXR5IG9mIHRoZSByZWNvbmNpbGVyIHRoYXQg
cmVxdWlyZXMga25vd2xlZGdlIG9mXG5cdCAqIHRoZSBicm93c2VyIGNvbnRleHQuIFRPRE86IFRo
ZXNlIGNhbGxlcnMgc2hvdWxkIGJlIHJlZmFjdG9yZWQgdG8gYXZvaWQgdGhlXG5cdCAqIG5lZWQg
Zm9yIHRoaXMgaW5qZWN0aW9uLlxuXHQgKi9cblx0dmFyIFJlYWN0Q29tcG9uZW50QnJvd3NlckVu
dmlyb25tZW50ID0ge1xuXHQgIHByb2Nlc3NDaGlsZHJlblVwZGF0ZXM6IFJlYWN0RE9NSURPcGVy
YXRpb25zLmRhbmdlcm91c2x5UHJvY2Vzc0NoaWxkcmVuVXBkYXRlcyxcblx0XG5cdCAgcmVwbGFj
ZU5vZGVXaXRoTWFya3VwOiBET01DaGlsZHJlbk9wZXJhdGlvbnMuZGFuZ2Vyb3VzbHlSZXBsYWNl
Tm9kZVdpdGhNYXJrdXBcblx0fTtcblx0XG5cdG1vZHVsZS5leHBvcnRzID0gUmVhY3RDb21wb25l
bnRCcm93c2VyRW52aXJvbm1lbnQ7XG5cbi8qKiovIH0sXG4vKiAxMzYgKi9cbi8qKiovIGZ1bmN0
aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8qKlxuXHQg
KiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRz
IHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVy
IHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxlIGlu
IHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdy
YW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZp
bGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0
Jztcblx0XG5cdHZhciBfcHJvZEludmFyaWFudCA9IF9fd2VicGFja19yZXF1aXJlX18oMyksXG5c
dCAgICBfYXNzaWduID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0KTtcblx0XG5cdHZhciBSZWFjdCA9
IF9fd2VicGFja19yZXF1aXJlX18oMTcpO1xuXHR2YXIgUmVhY3RDb21wb25lbnRFbnZpcm9ubWVu
dCA9IF9fd2VicGFja19yZXF1aXJlX18oNDApO1xuXHR2YXIgUmVhY3RDdXJyZW50T3duZXIgPSBf
X3dlYnBhY2tfcmVxdWlyZV9fKDExKTtcblx0dmFyIFJlYWN0RXJyb3JVdGlscyA9IF9fd2VicGFj
a19yZXF1aXJlX18oNDEpO1xuXHR2YXIgUmVhY3RJbnN0YW5jZU1hcCA9IF9fd2VicGFja19yZXF1
aXJlX18oMjEpO1xuXHR2YXIgUmVhY3RJbnN0cnVtZW50YXRpb24gPSBfX3dlYnBhY2tfcmVxdWly
ZV9fKDgpO1xuXHR2YXIgUmVhY3ROb2RlVHlwZXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDY4KTtc
blx0dmFyIFJlYWN0UmVjb25jaWxlciA9IF9fd2VicGFja19yZXF1aXJlX18oMTYpO1xuXHRcblx0
aWYgKGZhbHNlKSB7XG5cdCAgdmFyIGNoZWNrUmVhY3RUeXBlU3BlYyA9IHJlcXVpcmUoJy4vY2hl
Y2tSZWFjdFR5cGVTcGVjJyk7XG5cdH1cblx0XG5cdHZhciBlbXB0eU9iamVjdCA9IF9fd2VicGFj
a19yZXF1aXJlX18oMjQpO1xuXHR2YXIgaW52YXJpYW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXygx
KTtcblx0dmFyIHNoYWxsb3dFcXVhbCA9IF9fd2VicGFja19yZXF1aXJlX18oMzIpO1xuXHR2YXIg
c2hvdWxkVXBkYXRlUmVhY3RDb21wb25lbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQ4KTtcblx0
dmFyIHdhcm5pbmcgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIpO1xuXHRcblx0dmFyIENvbXBvc2l0
ZVR5cGVzID0ge1xuXHQgIEltcHVyZUNsYXNzOiAwLFxuXHQgIFB1cmVDbGFzczogMSxcblx0ICBT
dGF0ZWxlc3NGdW5jdGlvbmFsOiAyXG5cdH07XG5cdFxuXHRmdW5jdGlvbiBTdGF0ZWxlc3NDb21w
b25lbnQoQ29tcG9uZW50KSB7fVxuXHRTdGF0ZWxlc3NDb21wb25lbnQucHJvdG90eXBlLnJlbmRl
ciA9IGZ1bmN0aW9uICgpIHtcblx0ICB2YXIgQ29tcG9uZW50ID0gUmVhY3RJbnN0YW5jZU1hcC5n
ZXQodGhpcykuX2N1cnJlbnRFbGVtZW50LnR5cGU7XG5cdCAgdmFyIGVsZW1lbnQgPSBDb21wb25l
bnQodGhpcy5wcm9wcywgdGhpcy5jb250ZXh0LCB0aGlzLnVwZGF0ZXIpO1xuXHQgIHdhcm5JZklu
dmFsaWRFbGVtZW50KENvbXBvbmVudCwgZWxlbWVudCk7XG5cdCAgcmV0dXJuIGVsZW1lbnQ7XG5c
dH07XG5cdFxuXHRmdW5jdGlvbiB3YXJuSWZJbnZhbGlkRWxlbWVudChDb21wb25lbnQsIGVsZW1l
bnQpIHtcblx0ICBpZiAoZmFsc2UpIHtcblx0ICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAn
cHJvZHVjdGlvbicgPyB3YXJuaW5nKGVsZW1lbnQgPT09IG51bGwgfHwgZWxlbWVudCA9PT0gZmFs
c2UgfHwgUmVhY3QuaXNWYWxpZEVsZW1lbnQoZWxlbWVudCksICclcyguLi4pOiBBIHZhbGlkIFJl
YWN0IGVsZW1lbnQgKG9yIG51bGwpIG11c3QgYmUgcmV0dXJuZWQuIFlvdSBtYXkgaGF2ZSAnICsg
J3JldHVybmVkIHVuZGVmaW5lZCwgYW4gYXJyYXkgb3Igc29tZSBvdGhlciBpbnZhbGlkIG9iamVj
dC4nLCBDb21wb25lbnQuZGlzcGxheU5hbWUgfHwgQ29tcG9uZW50Lm5hbWUgfHwgJ0NvbXBvbmVu
dCcpIDogdm9pZCAwO1xuXHQgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9u
JyA/IHdhcm5pbmcoIUNvbXBvbmVudC5jaGlsZENvbnRleHRUeXBlcywgJyVzKC4uLik6IGNoaWxk
Q29udGV4dFR5cGVzIGNhbm5vdCBiZSBkZWZpbmVkIG9uIGEgZnVuY3Rpb25hbCBjb21wb25lbnQu
JywgQ29tcG9uZW50LmRpc3BsYXlOYW1lIHx8IENvbXBvbmVudC5uYW1lIHx8ICdDb21wb25lbnQn
KSA6IHZvaWQgMDtcblx0ICB9XG5cdH1cblx0XG5cdGZ1bmN0aW9uIHNob3VsZENvbnN0cnVjdChD
b21wb25lbnQpIHtcblx0ICByZXR1cm4gISEoQ29tcG9uZW50LnByb3RvdHlwZSAmJiBDb21wb25l
bnQucHJvdG90eXBlLmlzUmVhY3RDb21wb25lbnQpO1xuXHR9XG5cdFxuXHRmdW5jdGlvbiBpc1B1
cmVDb21wb25lbnQoQ29tcG9uZW50KSB7XG5cdCAgcmV0dXJuICEhKENvbXBvbmVudC5wcm90b3R5
cGUgJiYgQ29tcG9uZW50LnByb3RvdHlwZS5pc1B1cmVSZWFjdENvbXBvbmVudCk7XG5cdH1cblx0
XG5cdC8vIFNlcGFyYXRlZCBpbnRvIGEgZnVuY3Rpb24gdG8gY29udGFpbiBkZW9wdGltaXphdGlv
bnMgY2F1c2VkIGJ5IHRyeS9maW5hbGx5LlxuXHRmdW5jdGlvbiBtZWFzdXJlTGlmZUN5Y2xlUGVy
ZihmbiwgZGVidWdJRCwgdGltZXJUeXBlKSB7XG5cdCAgaWYgKGRlYnVnSUQgPT09IDApIHtcblx0
ICAgIC8vIFRvcC1sZXZlbCB3cmFwcGVycyAoc2VlIFJlYWN0TW91bnQpIGFuZCBlbXB0eSBjb21w
b25lbnRzIChzZWVcblx0ICAgIC8vIFJlYWN0RE9NRW1wdHlDb21wb25lbnQpIGFyZSBpbnZpc2li
bGUgdG8gaG9va3MgYW5kIGRldnRvb2xzLlxuXHQgICAgLy8gQm90aCBhcmUgaW1wbGVtZW50YXRp
b24gZGV0YWlscyB0aGF0IHNob3VsZCBnbyBhd2F5IGluIHRoZSBmdXR1cmUuXG5cdCAgICByZXR1
cm4gZm4oKTtcblx0ICB9XG5cdFxuXHQgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5v
bkJlZ2luTGlmZUN5Y2xlVGltZXIoZGVidWdJRCwgdGltZXJUeXBlKTtcblx0ICB0cnkge1xuXHQg
ICAgcmV0dXJuIGZuKCk7XG5cdCAgfSBmaW5hbGx5IHtcblx0ICAgIFJlYWN0SW5zdHJ1bWVudGF0
aW9uLmRlYnVnVG9vbC5vbkVuZExpZmVDeWNsZVRpbWVyKGRlYnVnSUQsIHRpbWVyVHlwZSk7XG5c
dCAgfVxuXHR9XG5cdFxuXHQvKipcblx0ICogLS0tLS0tLS0tLS0tLS0tLS0tIFRoZSBMaWZlLUN5
Y2xlIG9mIGEgQ29tcG9zaXRlIENvbXBvbmVudCAtLS0tLS0tLS0tLS0tLS0tLS1cblx0ICpcblx0
ICogLSBjb25zdHJ1Y3RvcjogSW5pdGlhbGl6YXRpb24gb2Ygc3RhdGUuIFRoZSBpbnN0YW5jZSBp
cyBub3cgcmV0YWluZWQuXG5cdCAqICAgLSBjb21wb25lbnRXaWxsTW91bnRcblx0ICogICAtIHJl
bmRlclxuXHQgKiAgIC0gW2NoaWxkcmVuJ3MgY29uc3RydWN0b3JzXVxuXHQgKiAgICAgLSBbY2hp
bGRyZW4ncyBjb21wb25lbnRXaWxsTW91bnQgYW5kIHJlbmRlcl1cblx0ICogICAgIC0gW2NoaWxk
cmVuJ3MgY29tcG9uZW50RGlkTW91bnRdXG5cdCAqICAgICAtIGNvbXBvbmVudERpZE1vdW50XG5c
dCAqXG5cdCAqICAgICAgIFVwZGF0ZSBQaGFzZXM6XG5cdCAqICAgICAgIC0gY29tcG9uZW50V2ls
bFJlY2VpdmVQcm9wcyAob25seSBjYWxsZWQgaWYgcGFyZW50IHVwZGF0ZWQpXG5cdCAqICAgICAg
IC0gc2hvdWxkQ29tcG9uZW50VXBkYXRlXG5cdCAqICAgICAgICAgLSBjb21wb25lbnRXaWxsVXBk
YXRlXG5cdCAqICAgICAgICAgICAtIHJlbmRlclxuXHQgKiAgICAgICAgICAgLSBbY2hpbGRyZW4n
cyBjb25zdHJ1Y3RvcnMgb3IgcmVjZWl2ZSBwcm9wcyBwaGFzZXNdXG5cdCAqICAgICAgICAgLSBj
b21wb25lbnREaWRVcGRhdGVcblx0ICpcblx0ICogICAgIC0gY29tcG9uZW50V2lsbFVubW91bnRc
blx0ICogICAgIC0gW2NoaWxkcmVuJ3MgY29tcG9uZW50V2lsbFVubW91bnRdXG5cdCAqICAgLSBb
Y2hpbGRyZW4gZGVzdHJveWVkXVxuXHQgKiAtIChkZXN0cm95ZWQpOiBUaGUgaW5zdGFuY2UgaXMg
bm93IGJsYW5rLCByZWxlYXNlZCBieSBSZWFjdCBhbmQgcmVhZHkgZm9yIEdDLlxuXHQgKlxuXHQg
KiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXHQgKi9cblx0XG5cdC8qKlxuXHQgKiBBbiBpbmNyZW1l
bnRpbmcgSUQgYXNzaWduZWQgdG8gZWFjaCBjb21wb25lbnQgd2hlbiBpdCBpcyBtb3VudGVkLiBU
aGlzIGlzXG5cdCAqIHVzZWQgdG8gZW5mb3JjZSB0aGUgb3JkZXIgaW4gd2hpY2ggYFJlYWN0VXBk
YXRlc2AgdXBkYXRlcyBkaXJ0eSBjb21wb25lbnRzLlxuXHQgKlxuXHQgKiBAcHJpdmF0ZVxuXHQg
Ki9cblx0dmFyIG5leHRNb3VudElEID0gMTtcblx0XG5cdC8qKlxuXHQgKiBAbGVuZHMge1JlYWN0
Q29tcG9zaXRlQ29tcG9uZW50LnByb3RvdHlwZX1cblx0ICovXG5cdHZhciBSZWFjdENvbXBvc2l0
ZUNvbXBvbmVudCA9IHtcblx0ICAvKipcblx0ICAgKiBCYXNlIGNvbnN0cnVjdG9yIGZvciBhbGwg
Y29tcG9zaXRlIGNvbXBvbmVudC5cblx0ICAgKlxuXHQgICAqIEBwYXJhbSB7UmVhY3RFbGVtZW50
fSBlbGVtZW50XG5cdCAgICogQGZpbmFsXG5cdCAgICogQGludGVybmFsXG5cdCAgICovXG5cdCAg
Y29uc3RydWN0OiBmdW5jdGlvbiAoZWxlbWVudCkge1xuXHQgICAgdGhpcy5fY3VycmVudEVsZW1l
bnQgPSBlbGVtZW50O1xuXHQgICAgdGhpcy5fcm9vdE5vZGVJRCA9IDA7XG5cdCAgICB0aGlzLl9j
b21wb3NpdGVUeXBlID0gbnVsbDtcblx0ICAgIHRoaXMuX2luc3RhbmNlID0gbnVsbDtcblx0ICAg
IHRoaXMuX2hvc3RQYXJlbnQgPSBudWxsO1xuXHQgICAgdGhpcy5faG9zdENvbnRhaW5lckluZm8g
PSBudWxsO1xuXHRcblx0ICAgIC8vIFNlZSBSZWFjdFVwZGF0ZVF1ZXVlXG5cdCAgICB0aGlzLl91
cGRhdGVCYXRjaE51bWJlciA9IG51bGw7XG5cdCAgICB0aGlzLl9wZW5kaW5nRWxlbWVudCA9IG51
bGw7XG5cdCAgICB0aGlzLl9wZW5kaW5nU3RhdGVRdWV1ZSA9IG51bGw7XG5cdCAgICB0aGlzLl9w
ZW5kaW5nUmVwbGFjZVN0YXRlID0gZmFsc2U7XG5cdCAgICB0aGlzLl9wZW5kaW5nRm9yY2VVcGRh
dGUgPSBmYWxzZTtcblx0XG5cdCAgICB0aGlzLl9yZW5kZXJlZE5vZGVUeXBlID0gbnVsbDtcblx0
ICAgIHRoaXMuX3JlbmRlcmVkQ29tcG9uZW50ID0gbnVsbDtcblx0ICAgIHRoaXMuX2NvbnRleHQg
PSBudWxsO1xuXHQgICAgdGhpcy5fbW91bnRPcmRlciA9IDA7XG5cdCAgICB0aGlzLl90b3BMZXZl
bFdyYXBwZXIgPSBudWxsO1xuXHRcblx0ICAgIC8vIFNlZSBSZWFjdFVwZGF0ZXMgYW5kIFJlYWN0
VXBkYXRlUXVldWUuXG5cdCAgICB0aGlzLl9wZW5kaW5nQ2FsbGJhY2tzID0gbnVsbDtcblx0XG5c
dCAgICAvLyBDb21wb25lbnRXaWxsVW5tb3VudCBzaGFsbCBvbmx5IGJlIGNhbGxlZCBvbmNlXG5c
dCAgICB0aGlzLl9jYWxsZWRDb21wb25lbnRXaWxsVW5tb3VudCA9IGZhbHNlO1xuXHRcblx0ICAg
IGlmIChmYWxzZSkge1xuXHQgICAgICB0aGlzLl93YXJuZWRBYm91dFJlZnNJblJlbmRlciA9IGZh
bHNlO1xuXHQgICAgfVxuXHQgIH0sXG5cdFxuXHQgIC8qKlxuXHQgICAqIEluaXRpYWxpemVzIHRo
ZSBjb21wb25lbnQsIHJlbmRlcnMgbWFya3VwLCBhbmQgcmVnaXN0ZXJzIGV2ZW50IGxpc3RlbmVy
cy5cblx0ICAgKlxuXHQgICAqIEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbnxSZWFj
dFNlcnZlclJlbmRlcmluZ1RyYW5zYWN0aW9ufSB0cmFuc2FjdGlvblxuXHQgICAqIEBwYXJhbSB7
P29iamVjdH0gaG9zdFBhcmVudFxuXHQgICAqIEBwYXJhbSB7P29iamVjdH0gaG9zdENvbnRhaW5l
ckluZm9cblx0ICAgKiBAcGFyYW0gez9vYmplY3R9IGNvbnRleHRcblx0ICAgKiBAcmV0dXJuIHs/
c3RyaW5nfSBSZW5kZXJlZCBtYXJrdXAgdG8gYmUgaW5zZXJ0ZWQgaW50byB0aGUgRE9NLlxuXHQg
ICAqIEBmaW5hbFxuXHQgICAqIEBpbnRlcm5hbFxuXHQgICAqL1xuXHQgIG1vdW50Q29tcG9uZW50
OiBmdW5jdGlvbiAodHJhbnNhY3Rpb24sIGhvc3RQYXJlbnQsIGhvc3RDb250YWluZXJJbmZvLCBj
b250ZXh0KSB7XG5cdCAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXHRcblx0ICAgIHRoaXMuX2NvbnRl
eHQgPSBjb250ZXh0O1xuXHQgICAgdGhpcy5fbW91bnRPcmRlciA9IG5leHRNb3VudElEKys7XG5c
dCAgICB0aGlzLl9ob3N0UGFyZW50ID0gaG9zdFBhcmVudDtcblx0ICAgIHRoaXMuX2hvc3RDb250
YWluZXJJbmZvID0gaG9zdENvbnRhaW5lckluZm87XG5cdFxuXHQgICAgdmFyIHB1YmxpY1Byb3Bz
ID0gdGhpcy5fY3VycmVudEVsZW1lbnQucHJvcHM7XG5cdCAgICB2YXIgcHVibGljQ29udGV4dCA9
IHRoaXMuX3Byb2Nlc3NDb250ZXh0KGNvbnRleHQpO1xuXHRcblx0ICAgIHZhciBDb21wb25lbnQg
PSB0aGlzLl9jdXJyZW50RWxlbWVudC50eXBlO1xuXHRcblx0ICAgIHZhciB1cGRhdGVRdWV1ZSA9
IHRyYW5zYWN0aW9uLmdldFVwZGF0ZVF1ZXVlKCk7XG5cdFxuXHQgICAgLy8gSW5pdGlhbGl6ZSB0
aGUgcHVibGljIGNsYXNzXG5cdCAgICB2YXIgZG9Db25zdHJ1Y3QgPSBzaG91bGRDb25zdHJ1Y3Qo
Q29tcG9uZW50KTtcblx0ICAgIHZhciBpbnN0ID0gdGhpcy5fY29uc3RydWN0Q29tcG9uZW50KGRv
Q29uc3RydWN0LCBwdWJsaWNQcm9wcywgcHVibGljQ29udGV4dCwgdXBkYXRlUXVldWUpO1xuXHQg
ICAgdmFyIHJlbmRlcmVkRWxlbWVudDtcblx0XG5cdCAgICAvLyBTdXBwb3J0IGZ1bmN0aW9uYWwg
Y29tcG9uZW50c1xuXHQgICAgaWYgKCFkb0NvbnN0cnVjdCAmJiAoaW5zdCA9PSBudWxsIHx8IGlu
c3QucmVuZGVyID09IG51bGwpKSB7XG5cdCAgICAgIHJlbmRlcmVkRWxlbWVudCA9IGluc3Q7XG5c
dCAgICAgIHdhcm5JZkludmFsaWRFbGVtZW50KENvbXBvbmVudCwgcmVuZGVyZWRFbGVtZW50KTtc
blx0ICAgICAgIShpbnN0ID09PSBudWxsIHx8IGluc3QgPT09IGZhbHNlIHx8IFJlYWN0LmlzVmFs
aWRFbGVtZW50KGluc3QpKSA/ICBmYWxzZSA/IGludmFyaWFudChmYWxzZSwgJyVzKC4uLik6IEEg
dmFsaWQgUmVhY3QgZWxlbWVudCAob3IgbnVsbCkgbXVzdCBiZSByZXR1cm5lZC4gWW91IG1heSBo
YXZlIHJldHVybmVkIHVuZGVmaW5lZCwgYW4gYXJyYXkgb3Igc29tZSBvdGhlciBpbnZhbGlkIG9i
amVjdC4nLCBDb21wb25lbnQuZGlzcGxheU5hbWUgfHwgQ29tcG9uZW50Lm5hbWUgfHwgJ0NvbXBv
bmVudCcpIDogX3Byb2RJbnZhcmlhbnQoJzEwNScsIENvbXBvbmVudC5kaXNwbGF5TmFtZSB8fCBD
b21wb25lbnQubmFtZSB8fCAnQ29tcG9uZW50JykgOiB2b2lkIDA7XG5cdCAgICAgIGluc3QgPSBu
ZXcgU3RhdGVsZXNzQ29tcG9uZW50KENvbXBvbmVudCk7XG5cdCAgICAgIHRoaXMuX2NvbXBvc2l0
ZVR5cGUgPSBDb21wb3NpdGVUeXBlcy5TdGF0ZWxlc3NGdW5jdGlvbmFsO1xuXHQgICAgfSBlbHNl
IHtcblx0ICAgICAgaWYgKGlzUHVyZUNvbXBvbmVudChDb21wb25lbnQpKSB7XG5cdCAgICAgICAg
dGhpcy5fY29tcG9zaXRlVHlwZSA9IENvbXBvc2l0ZVR5cGVzLlB1cmVDbGFzcztcblx0ICAgICAg
fSBlbHNlIHtcblx0ICAgICAgICB0aGlzLl9jb21wb3NpdGVUeXBlID0gQ29tcG9zaXRlVHlwZXMu
SW1wdXJlQ2xhc3M7XG5cdCAgICAgIH1cblx0ICAgIH1cblx0XG5cdCAgICBpZiAoZmFsc2UpIHtc
blx0ICAgICAgLy8gVGhpcyB3aWxsIHRocm93IGxhdGVyIGluIF9yZW5kZXJWYWxpZGF0ZWRDb21w
b25lbnQsIGJ1dCBhZGQgYW4gZWFybHlcblx0ICAgICAgLy8gd2FybmluZyBub3cgdG8gaGVscCBk
ZWJ1Z2dpbmdcblx0ICAgICAgaWYgKGluc3QucmVuZGVyID09IG51bGwpIHtcblx0ICAgICAgICBw
cm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJyVz
KC4uLik6IE5vIGByZW5kZXJgIG1ldGhvZCBmb3VuZCBvbiB0aGUgcmV0dXJuZWQgY29tcG9uZW50
ICcgKyAnaW5zdGFuY2U6IHlvdSBtYXkgaGF2ZSBmb3Jnb3R0ZW4gdG8gZGVmaW5lIGByZW5kZXJg
LicsIENvbXBvbmVudC5kaXNwbGF5TmFtZSB8fCBDb21wb25lbnQubmFtZSB8fCAnQ29tcG9uZW50
JykgOiB2b2lkIDA7XG5cdCAgICAgIH1cblx0XG5cdCAgICAgIHZhciBwcm9wc011dGF0ZWQgPSBp
bnN0LnByb3BzICE9PSBwdWJsaWNQcm9wcztcblx0ICAgICAgdmFyIGNvbXBvbmVudE5hbWUgPSBD
b21wb25lbnQuZGlzcGxheU5hbWUgfHwgQ29tcG9uZW50Lm5hbWUgfHwgJ0NvbXBvbmVudCc7XG5c
dFxuXHQgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2Fybmlu
ZyhpbnN0LnByb3BzID09PSB1bmRlZmluZWQgfHwgIXByb3BzTXV0YXRlZCwgJyVzKC4uLik6IFdo
ZW4gY2FsbGluZyBzdXBlcigpIGluIGAlc2AsIG1ha2Ugc3VyZSB0byBwYXNzICcgKyBcInVwIHRo
ZSBzYW1lIHByb3BzIHRoYXQgeW91ciBjb21wb25lbnQncyBjb25zdHJ1Y3RvciB3YXMgcGFzc2Vk
LlwiLCBjb21wb25lbnROYW1lLCBjb21wb25lbnROYW1lKSA6IHZvaWQgMDtcblx0ICAgIH1cblx0
XG5cdCAgICAvLyBUaGVzZSBzaG91bGQgYmUgc2V0IHVwIGluIHRoZSBjb25zdHJ1Y3RvciwgYnV0
IGFzIGEgY29udmVuaWVuY2UgZm9yXG5cdCAgICAvLyBzaW1wbGVyIGNsYXNzIGFic3RyYWN0aW9u
cywgd2Ugc2V0IHRoZW0gdXAgYWZ0ZXIgdGhlIGZhY3QuXG5cdCAgICBpbnN0LnByb3BzID0gcHVi
bGljUHJvcHM7XG5cdCAgICBpbnN0LmNvbnRleHQgPSBwdWJsaWNDb250ZXh0O1xuXHQgICAgaW5z
dC5yZWZzID0gZW1wdHlPYmplY3Q7XG5cdCAgICBpbnN0LnVwZGF0ZXIgPSB1cGRhdGVRdWV1ZTtc
blx0XG5cdCAgICB0aGlzLl9pbnN0YW5jZSA9IGluc3Q7XG5cdFxuXHQgICAgLy8gU3RvcmUgYSBy
ZWZlcmVuY2UgZnJvbSB0aGUgaW5zdGFuY2UgYmFjayB0byB0aGUgaW50ZXJuYWwgcmVwcmVzZW50
YXRpb25cblx0ICAgIFJlYWN0SW5zdGFuY2VNYXAuc2V0KGluc3QsIHRoaXMpO1xuXHRcblx0ICAg
IGlmIChmYWxzZSkge1xuXHQgICAgICAvLyBTaW5jZSBwbGFpbiBKUyBjbGFzc2VzIGFyZSBkZWZp
bmVkIHdpdGhvdXQgYW55IHNwZWNpYWwgaW5pdGlhbGl6YXRpb25cblx0ICAgICAgLy8gbG9naWMs
IHdlIGNhbiBub3QgY2F0Y2ggY29tbW9uIGVycm9ycyBlYXJseS4gVGhlcmVmb3JlLCB3ZSBoYXZl
IHRvXG5cdCAgICAgIC8vIGNhdGNoIHRoZW0gaGVyZSwgYXQgaW5pdGlhbGl6YXRpb24gdGltZSwg
aW5zdGVhZC5cblx0ICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/
IHdhcm5pbmcoIWluc3QuZ2V0SW5pdGlhbFN0YXRlIHx8IGluc3QuZ2V0SW5pdGlhbFN0YXRlLmlz
UmVhY3RDbGFzc0FwcHJvdmVkIHx8IGluc3Quc3RhdGUsICdnZXRJbml0aWFsU3RhdGUgd2FzIGRl
ZmluZWQgb24gJXMsIGEgcGxhaW4gSmF2YVNjcmlwdCBjbGFzcy4gJyArICdUaGlzIGlzIG9ubHkg
c3VwcG9ydGVkIGZvciBjbGFzc2VzIGNyZWF0ZWQgdXNpbmcgUmVhY3QuY3JlYXRlQ2xhc3MuICcg
KyAnRGlkIHlvdSBtZWFuIHRvIGRlZmluZSBhIHN0YXRlIHByb3BlcnR5IGluc3RlYWQ/JywgdGhp
cy5nZXROYW1lKCkgfHwgJ2EgY29tcG9uZW50JykgOiB2b2lkIDA7XG5cdCAgICAgIHByb2Nlc3Mu
ZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKCFpbnN0LmdldERlZmF1bHRQ
cm9wcyB8fCBpbnN0LmdldERlZmF1bHRQcm9wcy5pc1JlYWN0Q2xhc3NBcHByb3ZlZCwgJ2dldERl
ZmF1bHRQcm9wcyB3YXMgZGVmaW5lZCBvbiAlcywgYSBwbGFpbiBKYXZhU2NyaXB0IGNsYXNzLiAn
ICsgJ1RoaXMgaXMgb25seSBzdXBwb3J0ZWQgZm9yIGNsYXNzZXMgY3JlYXRlZCB1c2luZyBSZWFj
dC5jcmVhdGVDbGFzcy4gJyArICdVc2UgYSBzdGF0aWMgcHJvcGVydHkgdG8gZGVmaW5lIGRlZmF1
bHRQcm9wcyBpbnN0ZWFkLicsIHRoaXMuZ2V0TmFtZSgpIHx8ICdhIGNvbXBvbmVudCcpIDogdm9p
ZCAwO1xuXHQgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2Fy
bmluZyghaW5zdC5wcm9wVHlwZXMsICdwcm9wVHlwZXMgd2FzIGRlZmluZWQgYXMgYW4gaW5zdGFu
Y2UgcHJvcGVydHkgb24gJXMuIFVzZSBhIHN0YXRpYyAnICsgJ3Byb3BlcnR5IHRvIGRlZmluZSBw
cm9wVHlwZXMgaW5zdGVhZC4nLCB0aGlzLmdldE5hbWUoKSB8fCAnYSBjb21wb25lbnQnKSA6IHZv
aWQgMDtcblx0ICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdh
cm5pbmcoIWluc3QuY29udGV4dFR5cGVzLCAnY29udGV4dFR5cGVzIHdhcyBkZWZpbmVkIGFzIGFu
IGluc3RhbmNlIHByb3BlcnR5IG9uICVzLiBVc2UgYSAnICsgJ3N0YXRpYyBwcm9wZXJ0eSB0byBk
ZWZpbmUgY29udGV4dFR5cGVzIGluc3RlYWQuJywgdGhpcy5nZXROYW1lKCkgfHwgJ2EgY29tcG9u
ZW50JykgOiB2b2lkIDA7XG5cdCAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVj
dGlvbicgPyB3YXJuaW5nKHR5cGVvZiBpbnN0LmNvbXBvbmVudFNob3VsZFVwZGF0ZSAhPT0gJ2Z1
bmN0aW9uJywgJyVzIGhhcyBhIG1ldGhvZCBjYWxsZWQgJyArICdjb21wb25lbnRTaG91bGRVcGRh
dGUoKS4gRGlkIHlvdSBtZWFuIHNob3VsZENvbXBvbmVudFVwZGF0ZSgpPyAnICsgJ1RoZSBuYW1l
IGlzIHBocmFzZWQgYXMgYSBxdWVzdGlvbiBiZWNhdXNlIHRoZSBmdW5jdGlvbiBpcyAnICsgJ2V4
cGVjdGVkIHRvIHJldHVybiBhIHZhbHVlLicsIHRoaXMuZ2V0TmFtZSgpIHx8ICdBIGNvbXBvbmVu
dCcpIDogdm9pZCAwO1xuXHQgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rp
b24nID8gd2FybmluZyh0eXBlb2YgaW5zdC5jb21wb25lbnREaWRVbm1vdW50ICE9PSAnZnVuY3Rp
b24nLCAnJXMgaGFzIGEgbWV0aG9kIGNhbGxlZCAnICsgJ2NvbXBvbmVudERpZFVubW91bnQoKS4g
QnV0IHRoZXJlIGlzIG5vIHN1Y2ggbGlmZWN5Y2xlIG1ldGhvZC4gJyArICdEaWQgeW91IG1lYW4g
Y29tcG9uZW50V2lsbFVubW91bnQoKT8nLCB0aGlzLmdldE5hbWUoKSB8fCAnQSBjb21wb25lbnQn
KSA6IHZvaWQgMDtcblx0ICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9u
JyA/IHdhcm5pbmcodHlwZW9mIGluc3QuY29tcG9uZW50V2lsbFJlY2lldmVQcm9wcyAhPT0gJ2Z1
bmN0aW9uJywgJyVzIGhhcyBhIG1ldGhvZCBjYWxsZWQgJyArICdjb21wb25lbnRXaWxsUmVjaWV2
ZVByb3BzKCkuIERpZCB5b3UgbWVhbiBjb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzKCk/JywgdGhp
cy5nZXROYW1lKCkgfHwgJ0EgY29tcG9uZW50JykgOiB2b2lkIDA7XG5cdCAgICB9XG5cdFxuXHQg
ICAgdmFyIGluaXRpYWxTdGF0ZSA9IGluc3Quc3RhdGU7XG5cdCAgICBpZiAoaW5pdGlhbFN0YXRl
ID09PSB1bmRlZmluZWQpIHtcblx0ICAgICAgaW5zdC5zdGF0ZSA9IGluaXRpYWxTdGF0ZSA9IG51
bGw7XG5cdCAgICB9XG5cdCAgICAhKHR5cGVvZiBpbml0aWFsU3RhdGUgPT09ICdvYmplY3QnICYm
ICFBcnJheS5pc0FycmF5KGluaXRpYWxTdGF0ZSkpID8gIGZhbHNlID8gaW52YXJpYW50KGZhbHNl
LCAnJXMuc3RhdGU6IG11c3QgYmUgc2V0IHRvIGFuIG9iamVjdCBvciBudWxsJywgdGhpcy5nZXRO
YW1lKCkgfHwgJ1JlYWN0Q29tcG9zaXRlQ29tcG9uZW50JykgOiBfcHJvZEludmFyaWFudCgnMTA2
JywgdGhpcy5nZXROYW1lKCkgfHwgJ1JlYWN0Q29tcG9zaXRlQ29tcG9uZW50JykgOiB2b2lkIDA7
XG5cdFxuXHQgICAgdGhpcy5fcGVuZGluZ1N0YXRlUXVldWUgPSBudWxsO1xuXHQgICAgdGhpcy5f
cGVuZGluZ1JlcGxhY2VTdGF0ZSA9IGZhbHNlO1xuXHQgICAgdGhpcy5fcGVuZGluZ0ZvcmNlVXBk
YXRlID0gZmFsc2U7XG5cdFxuXHQgICAgdmFyIG1hcmt1cDtcblx0ICAgIGlmIChpbnN0LnVuc3Rh
YmxlX2hhbmRsZUVycm9yKSB7XG5cdCAgICAgIG1hcmt1cCA9IHRoaXMucGVyZm9ybUluaXRpYWxN
b3VudFdpdGhFcnJvckhhbmRsaW5nKHJlbmRlcmVkRWxlbWVudCwgaG9zdFBhcmVudCwgaG9zdENv
bnRhaW5lckluZm8sIHRyYW5zYWN0aW9uLCBjb250ZXh0KTtcblx0ICAgIH0gZWxzZSB7XG5cdCAg
ICAgIG1hcmt1cCA9IHRoaXMucGVyZm9ybUluaXRpYWxNb3VudChyZW5kZXJlZEVsZW1lbnQsIGhv
c3RQYXJlbnQsIGhvc3RDb250YWluZXJJbmZvLCB0cmFuc2FjdGlvbiwgY29udGV4dCk7XG5cdCAg
ICB9XG5cdFxuXHQgICAgaWYgKGluc3QuY29tcG9uZW50RGlkTW91bnQpIHtcblx0ICAgICAgaWYg
KGZhbHNlKSB7XG5cdCAgICAgICAgdHJhbnNhY3Rpb24uZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5x
dWV1ZShmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgICBtZWFzdXJlTGlmZUN5Y2xlUGVyZihmdW5j
dGlvbiAoKSB7XG5cdCAgICAgICAgICAgIHJldHVybiBpbnN0LmNvbXBvbmVudERpZE1vdW50KCk7
XG5cdCAgICAgICAgICB9LCBfdGhpcy5fZGVidWdJRCwgJ2NvbXBvbmVudERpZE1vdW50Jyk7XG5c
dCAgICAgICAgfSk7XG5cdCAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgdHJhbnNhY3Rpb24uZ2V0
UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1ZShpbnN0LmNvbXBvbmVudERpZE1vdW50LCBpbnN0KTtc
blx0ICAgICAgfVxuXHQgICAgfVxuXHRcblx0ICAgIHJldHVybiBtYXJrdXA7XG5cdCAgfSxcblx0
XG5cdCAgX2NvbnN0cnVjdENvbXBvbmVudDogZnVuY3Rpb24gKGRvQ29uc3RydWN0LCBwdWJsaWNQ
cm9wcywgcHVibGljQ29udGV4dCwgdXBkYXRlUXVldWUpIHtcblx0ICAgIGlmIChmYWxzZSkge1xu
XHQgICAgICBSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50ID0gdGhpcztcblx0ICAgICAgdHJ5IHtc
blx0ICAgICAgICByZXR1cm4gdGhpcy5fY29uc3RydWN0Q29tcG9uZW50V2l0aG91dE93bmVyKGRv
Q29uc3RydWN0LCBwdWJsaWNQcm9wcywgcHVibGljQ29udGV4dCwgdXBkYXRlUXVldWUpO1xuXHQg
ICAgICB9IGZpbmFsbHkge1xuXHQgICAgICAgIFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQgPSBu
dWxsO1xuXHQgICAgICB9XG5cdCAgICB9IGVsc2Uge1xuXHQgICAgICByZXR1cm4gdGhpcy5fY29u
c3RydWN0Q29tcG9uZW50V2l0aG91dE93bmVyKGRvQ29uc3RydWN0LCBwdWJsaWNQcm9wcywgcHVi
bGljQ29udGV4dCwgdXBkYXRlUXVldWUpO1xuXHQgICAgfVxuXHQgIH0sXG5cdFxuXHQgIF9jb25z
dHJ1Y3RDb21wb25lbnRXaXRob3V0T3duZXI6IGZ1bmN0aW9uIChkb0NvbnN0cnVjdCwgcHVibGlj
UHJvcHMsIHB1YmxpY0NvbnRleHQsIHVwZGF0ZVF1ZXVlKSB7XG5cdCAgICB2YXIgQ29tcG9uZW50
ID0gdGhpcy5fY3VycmVudEVsZW1lbnQudHlwZTtcblx0XG5cdCAgICBpZiAoZG9Db25zdHJ1Y3Qp
IHtcblx0ICAgICAgaWYgKGZhbHNlKSB7XG5cdCAgICAgICAgcmV0dXJuIG1lYXN1cmVMaWZlQ3lj
bGVQZXJmKGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICAgIHJldHVybiBuZXcgQ29tcG9uZW50KHB1
YmxpY1Byb3BzLCBwdWJsaWNDb250ZXh0LCB1cGRhdGVRdWV1ZSk7XG5cdCAgICAgICAgfSwgdGhp
cy5fZGVidWdJRCwgJ2N0b3InKTtcblx0ICAgICAgfSBlbHNlIHtcblx0ICAgICAgICByZXR1cm4g
bmV3IENvbXBvbmVudChwdWJsaWNQcm9wcywgcHVibGljQ29udGV4dCwgdXBkYXRlUXVldWUpO1xu
XHQgICAgICB9XG5cdCAgICB9XG5cdFxuXHQgICAgLy8gVGhpcyBjYW4gc3RpbGwgYmUgYW4gaW5z
dGFuY2UgaW4gY2FzZSBvZiBmYWN0b3J5IGNvbXBvbmVudHNcblx0ICAgIC8vIGJ1dCB3ZSdsbCBj
b3VudCB0aGlzIGFzIHRpbWUgc3BlbnQgcmVuZGVyaW5nIGFzIHRoZSBtb3JlIGNvbW1vbiBjYXNl
LlxuXHQgICAgaWYgKGZhbHNlKSB7XG5cdCAgICAgIHJldHVybiBtZWFzdXJlTGlmZUN5Y2xlUGVy
ZihmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgcmV0dXJuIENvbXBvbmVudChwdWJsaWNQcm9wcywg
cHVibGljQ29udGV4dCwgdXBkYXRlUXVldWUpO1xuXHQgICAgICB9LCB0aGlzLl9kZWJ1Z0lELCAn
cmVuZGVyJyk7XG5cdCAgICB9IGVsc2Uge1xuXHQgICAgICByZXR1cm4gQ29tcG9uZW50KHB1Ymxp
Y1Byb3BzLCBwdWJsaWNDb250ZXh0LCB1cGRhdGVRdWV1ZSk7XG5cdCAgICB9XG5cdCAgfSxcblx0
XG5cdCAgcGVyZm9ybUluaXRpYWxNb3VudFdpdGhFcnJvckhhbmRsaW5nOiBmdW5jdGlvbiAocmVu
ZGVyZWRFbGVtZW50LCBob3N0UGFyZW50LCBob3N0Q29udGFpbmVySW5mbywgdHJhbnNhY3Rpb24s
IGNvbnRleHQpIHtcblx0ICAgIHZhciBtYXJrdXA7XG5cdCAgICB2YXIgY2hlY2twb2ludCA9IHRy
YW5zYWN0aW9uLmNoZWNrcG9pbnQoKTtcblx0ICAgIHRyeSB7XG5cdCAgICAgIG1hcmt1cCA9IHRo
aXMucGVyZm9ybUluaXRpYWxNb3VudChyZW5kZXJlZEVsZW1lbnQsIGhvc3RQYXJlbnQsIGhvc3RD
b250YWluZXJJbmZvLCB0cmFuc2FjdGlvbiwgY29udGV4dCk7XG5cdCAgICB9IGNhdGNoIChlKSB7
XG5cdCAgICAgIC8vIFJvbGwgYmFjayB0byBjaGVja3BvaW50LCBoYW5kbGUgZXJyb3IgKHdoaWNo
IG1heSBhZGQgaXRlbXMgdG8gdGhlIHRyYW5zYWN0aW9uKSwgYW5kIHRha2UgYSBuZXcgY2hlY2tw
b2ludFxuXHQgICAgICB0cmFuc2FjdGlvbi5yb2xsYmFjayhjaGVja3BvaW50KTtcblx0ICAgICAg
dGhpcy5faW5zdGFuY2UudW5zdGFibGVfaGFuZGxlRXJyb3IoZSk7XG5cdCAgICAgIGlmICh0aGlz
Ll9wZW5kaW5nU3RhdGVRdWV1ZSkge1xuXHQgICAgICAgIHRoaXMuX2luc3RhbmNlLnN0YXRlID0g
dGhpcy5fcHJvY2Vzc1BlbmRpbmdTdGF0ZSh0aGlzLl9pbnN0YW5jZS5wcm9wcywgdGhpcy5faW5z
dGFuY2UuY29udGV4dCk7XG5cdCAgICAgIH1cblx0ICAgICAgY2hlY2twb2ludCA9IHRyYW5zYWN0
aW9uLmNoZWNrcG9pbnQoKTtcblx0XG5cdCAgICAgIHRoaXMuX3JlbmRlcmVkQ29tcG9uZW50LnVu
bW91bnRDb21wb25lbnQodHJ1ZSk7XG5cdCAgICAgIHRyYW5zYWN0aW9uLnJvbGxiYWNrKGNoZWNr
cG9pbnQpO1xuXHRcblx0ICAgICAgLy8gVHJ5IGFnYWluIC0gd2UndmUgaW5mb3JtZWQgdGhlIGNv
bXBvbmVudCBhYm91dCB0aGUgZXJyb3IsIHNvIHRoZXkgY2FuIHJlbmRlciBhbiBlcnJvciBtZXNz
YWdlIHRoaXMgdGltZS5cblx0ICAgICAgLy8gSWYgdGhpcyB0aHJvd3MgYWdhaW4sIHRoZSBlcnJv
ciB3aWxsIGJ1YmJsZSB1cCAoYW5kIGNhbiBiZSBjYXVnaHQgYnkgYSBoaWdoZXIgZXJyb3IgYm91
bmRhcnkpLlxuXHQgICAgICBtYXJrdXAgPSB0aGlzLnBlcmZvcm1Jbml0aWFsTW91bnQocmVuZGVy
ZWRFbGVtZW50LCBob3N0UGFyZW50LCBob3N0Q29udGFpbmVySW5mbywgdHJhbnNhY3Rpb24sIGNv
bnRleHQpO1xuXHQgICAgfVxuXHQgICAgcmV0dXJuIG1hcmt1cDtcblx0ICB9LFxuXHRcblx0ICBw
ZXJmb3JtSW5pdGlhbE1vdW50OiBmdW5jdGlvbiAocmVuZGVyZWRFbGVtZW50LCBob3N0UGFyZW50
LCBob3N0Q29udGFpbmVySW5mbywgdHJhbnNhY3Rpb24sIGNvbnRleHQpIHtcblx0ICAgIHZhciBp
bnN0ID0gdGhpcy5faW5zdGFuY2U7XG5cdFxuXHQgICAgdmFyIGRlYnVnSUQgPSAwO1xuXHQgICAg
aWYgKGZhbHNlKSB7XG5cdCAgICAgIGRlYnVnSUQgPSB0aGlzLl9kZWJ1Z0lEO1xuXHQgICAgfVxu
XHRcblx0ICAgIGlmIChpbnN0LmNvbXBvbmVudFdpbGxNb3VudCkge1xuXHQgICAgICBpZiAoZmFs
c2UpIHtcblx0ICAgICAgICBtZWFzdXJlTGlmZUN5Y2xlUGVyZihmdW5jdGlvbiAoKSB7XG5cdCAg
ICAgICAgICByZXR1cm4gaW5zdC5jb21wb25lbnRXaWxsTW91bnQoKTtcblx0ICAgICAgICB9LCBk
ZWJ1Z0lELCAnY29tcG9uZW50V2lsbE1vdW50Jyk7XG5cdCAgICAgIH0gZWxzZSB7XG5cdCAgICAg
ICAgaW5zdC5jb21wb25lbnRXaWxsTW91bnQoKTtcblx0ICAgICAgfVxuXHQgICAgICAvLyBXaGVu
IG1vdW50aW5nLCBjYWxscyB0byBgc2V0U3RhdGVgIGJ5IGBjb21wb25lbnRXaWxsTW91bnRgIHdp
bGwgc2V0XG5cdCAgICAgIC8vIGB0aGlzLl9wZW5kaW5nU3RhdGVRdWV1ZWAgd2l0aG91dCB0cmln
Z2VyaW5nIGEgcmUtcmVuZGVyLlxuXHQgICAgICBpZiAodGhpcy5fcGVuZGluZ1N0YXRlUXVldWUp
IHtcblx0ICAgICAgICBpbnN0LnN0YXRlID0gdGhpcy5fcHJvY2Vzc1BlbmRpbmdTdGF0ZShpbnN0
LnByb3BzLCBpbnN0LmNvbnRleHQpO1xuXHQgICAgICB9XG5cdCAgICB9XG5cdFxuXHQgICAgLy8g
SWYgbm90IGEgc3RhdGVsZXNzIGNvbXBvbmVudCwgd2Ugbm93IHJlbmRlclxuXHQgICAgaWYgKHJl
bmRlcmVkRWxlbWVudCA9PT0gdW5kZWZpbmVkKSB7XG5cdCAgICAgIHJlbmRlcmVkRWxlbWVudCA9
IHRoaXMuX3JlbmRlclZhbGlkYXRlZENvbXBvbmVudCgpO1xuXHQgICAgfVxuXHRcblx0ICAgIHZh
ciBub2RlVHlwZSA9IFJlYWN0Tm9kZVR5cGVzLmdldFR5cGUocmVuZGVyZWRFbGVtZW50KTtcblx0
ICAgIHRoaXMuX3JlbmRlcmVkTm9kZVR5cGUgPSBub2RlVHlwZTtcblx0ICAgIHZhciBjaGlsZCA9
IHRoaXMuX2luc3RhbnRpYXRlUmVhY3RDb21wb25lbnQocmVuZGVyZWRFbGVtZW50LCBub2RlVHlw
ZSAhPT0gUmVhY3ROb2RlVHlwZXMuRU1QVFkgLyogc2hvdWxkSGF2ZURlYnVnSUQgKi9cblx0ICAg
ICk7XG5cdCAgICB0aGlzLl9yZW5kZXJlZENvbXBvbmVudCA9IGNoaWxkO1xuXHRcblx0ICAgIHZh
ciBtYXJrdXAgPSBSZWFjdFJlY29uY2lsZXIubW91bnRDb21wb25lbnQoY2hpbGQsIHRyYW5zYWN0
aW9uLCBob3N0UGFyZW50LCBob3N0Q29udGFpbmVySW5mbywgdGhpcy5fcHJvY2Vzc0NoaWxkQ29u
dGV4dChjb250ZXh0KSwgZGVidWdJRCk7XG5cdFxuXHQgICAgaWYgKGZhbHNlKSB7XG5cdCAgICAg
IGlmIChkZWJ1Z0lEICE9PSAwKSB7XG5cdCAgICAgICAgdmFyIGNoaWxkRGVidWdJRHMgPSBjaGls
ZC5fZGVidWdJRCAhPT0gMCA/IFtjaGlsZC5fZGVidWdJRF0gOiBbXTtcblx0ICAgICAgICBSZWFj
dEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25TZXRDaGlsZHJlbihkZWJ1Z0lELCBjaGlsZERl
YnVnSURzKTtcblx0ICAgICAgfVxuXHQgICAgfVxuXHRcblx0ICAgIHJldHVybiBtYXJrdXA7XG5c
dCAgfSxcblx0XG5cdCAgZ2V0SG9zdE5vZGU6IGZ1bmN0aW9uICgpIHtcblx0ICAgIHJldHVybiBS
ZWFjdFJlY29uY2lsZXIuZ2V0SG9zdE5vZGUodGhpcy5fcmVuZGVyZWRDb21wb25lbnQpO1xuXHQg
IH0sXG5cdFxuXHQgIC8qKlxuXHQgICAqIFJlbGVhc2VzIGFueSByZXNvdXJjZXMgYWxsb2NhdGVk
IGJ5IGBtb3VudENvbXBvbmVudGAuXG5cdCAgICpcblx0ICAgKiBAZmluYWxcblx0ICAgKiBAaW50
ZXJuYWxcblx0ICAgKi9cblx0ICB1bm1vdW50Q29tcG9uZW50OiBmdW5jdGlvbiAoc2FmZWx5KSB7
XG5cdCAgICBpZiAoIXRoaXMuX3JlbmRlcmVkQ29tcG9uZW50KSB7XG5cdCAgICAgIHJldHVybjtc
blx0ICAgIH1cblx0XG5cdCAgICB2YXIgaW5zdCA9IHRoaXMuX2luc3RhbmNlO1xuXHRcblx0ICAg
IGlmIChpbnN0LmNvbXBvbmVudFdpbGxVbm1vdW50ICYmICFpbnN0Ll9jYWxsZWRDb21wb25lbnRX
aWxsVW5tb3VudCkge1xuXHQgICAgICBpbnN0Ll9jYWxsZWRDb21wb25lbnRXaWxsVW5tb3VudCA9
IHRydWU7XG5cdFxuXHQgICAgICBpZiAoc2FmZWx5KSB7XG5cdCAgICAgICAgdmFyIG5hbWUgPSB0
aGlzLmdldE5hbWUoKSArICcuY29tcG9uZW50V2lsbFVubW91bnQoKSc7XG5cdCAgICAgICAgUmVh
Y3RFcnJvclV0aWxzLmludm9rZUd1YXJkZWRDYWxsYmFjayhuYW1lLCBpbnN0LmNvbXBvbmVudFdp
bGxVbm1vdW50LmJpbmQoaW5zdCkpO1xuXHQgICAgICB9IGVsc2Uge1xuXHQgICAgICAgIGlmIChm
YWxzZSkge1xuXHQgICAgICAgICAgbWVhc3VyZUxpZmVDeWNsZVBlcmYoZnVuY3Rpb24gKCkge1xu
XHQgICAgICAgICAgICByZXR1cm4gaW5zdC5jb21wb25lbnRXaWxsVW5tb3VudCgpO1xuXHQgICAg
ICAgICAgfSwgdGhpcy5fZGVidWdJRCwgJ2NvbXBvbmVudFdpbGxVbm1vdW50Jyk7XG5cdCAgICAg
ICAgfSBlbHNlIHtcblx0ICAgICAgICAgIGluc3QuY29tcG9uZW50V2lsbFVubW91bnQoKTtcblx0
ICAgICAgICB9XG5cdCAgICAgIH1cblx0ICAgIH1cblx0XG5cdCAgICBpZiAodGhpcy5fcmVuZGVy
ZWRDb21wb25lbnQpIHtcblx0ICAgICAgUmVhY3RSZWNvbmNpbGVyLnVubW91bnRDb21wb25lbnQo
dGhpcy5fcmVuZGVyZWRDb21wb25lbnQsIHNhZmVseSk7XG5cdCAgICAgIHRoaXMuX3JlbmRlcmVk
Tm9kZVR5cGUgPSBudWxsO1xuXHQgICAgICB0aGlzLl9yZW5kZXJlZENvbXBvbmVudCA9IG51bGw7
XG5cdCAgICAgIHRoaXMuX2luc3RhbmNlID0gbnVsbDtcblx0ICAgIH1cblx0XG5cdCAgICAvLyBS
ZXNldCBwZW5kaW5nIGZpZWxkc1xuXHQgICAgLy8gRXZlbiBpZiB0aGlzIGNvbXBvbmVudCBpcyBz
Y2hlZHVsZWQgZm9yIGFub3RoZXIgdXBkYXRlIGluIFJlYWN0VXBkYXRlcyxcblx0ICAgIC8vIGl0
IHdvdWxkIHN0aWxsIGJlIGlnbm9yZWQgYmVjYXVzZSB0aGVzZSBmaWVsZHMgYXJlIHJlc2V0Llxu
XHQgICAgdGhpcy5fcGVuZGluZ1N0YXRlUXVldWUgPSBudWxsO1xuXHQgICAgdGhpcy5fcGVuZGlu
Z1JlcGxhY2VTdGF0ZSA9IGZhbHNlO1xuXHQgICAgdGhpcy5fcGVuZGluZ0ZvcmNlVXBkYXRlID0g
ZmFsc2U7XG5cdCAgICB0aGlzLl9wZW5kaW5nQ2FsbGJhY2tzID0gbnVsbDtcblx0ICAgIHRoaXMu
X3BlbmRpbmdFbGVtZW50ID0gbnVsbDtcblx0XG5cdCAgICAvLyBUaGVzZSBmaWVsZHMgZG8gbm90
IHJlYWxseSBuZWVkIHRvIGJlIHJlc2V0IHNpbmNlIHRoaXMgb2JqZWN0IGlzIG5vXG5cdCAgICAv
LyBsb25nZXIgYWNjZXNzaWJsZS5cblx0ICAgIHRoaXMuX2NvbnRleHQgPSBudWxsO1xuXHQgICAg
dGhpcy5fcm9vdE5vZGVJRCA9IDA7XG5cdCAgICB0aGlzLl90b3BMZXZlbFdyYXBwZXIgPSBudWxs
O1xuXHRcblx0ICAgIC8vIERlbGV0ZSB0aGUgcmVmZXJlbmNlIGZyb20gdGhlIGluc3RhbmNlIHRv
IHRoaXMgaW50ZXJuYWwgcmVwcmVzZW50YXRpb25cblx0ICAgIC8vIHdoaWNoIGFsbG93IHRoZSBp
bnRlcm5hbHMgdG8gYmUgcHJvcGVybHkgY2xlYW5lZCB1cCBldmVuIGlmIHRoZSB1c2VyXG5cdCAg
ICAvLyBsZWFrcyBhIHJlZmVyZW5jZSB0byB0aGUgcHVibGljIGluc3RhbmNlLlxuXHQgICAgUmVh
Y3RJbnN0YW5jZU1hcC5yZW1vdmUoaW5zdCk7XG5cdFxuXHQgICAgLy8gU29tZSBleGlzdGluZyBj
b21wb25lbnRzIHJlbHkgb24gaW5zdC5wcm9wcyBldmVuIGFmdGVyIHRoZXkndmUgYmVlblxuXHQg
ICAgLy8gZGVzdHJveWVkIChpbiBldmVudCBoYW5kbGVycykuXG5cdCAgICAvLyBUT0RPOiBpbnN0
LnByb3BzID0gbnVsbDtcblx0ICAgIC8vIFRPRE86IGluc3Quc3RhdGUgPSBudWxsO1xuXHQgICAg
Ly8gVE9ETzogaW5zdC5jb250ZXh0ID0gbnVsbDtcblx0ICB9LFxuXHRcblx0ICAvKipcblx0ICAg
KiBGaWx0ZXJzIHRoZSBjb250ZXh0IG9iamVjdCB0byBvbmx5IGNvbnRhaW4ga2V5cyBzcGVjaWZp
ZWQgaW5cblx0ICAgKiBgY29udGV4dFR5cGVzYFxuXHQgICAqXG5cdCAgICogQHBhcmFtIHtvYmpl
Y3R9IGNvbnRleHRcblx0ICAgKiBAcmV0dXJuIHs/b2JqZWN0fVxuXHQgICAqIEBwcml2YXRlXG5c
dCAgICovXG5cdCAgX21hc2tDb250ZXh0OiBmdW5jdGlvbiAoY29udGV4dCkge1xuXHQgICAgdmFy
IENvbXBvbmVudCA9IHRoaXMuX2N1cnJlbnRFbGVtZW50LnR5cGU7XG5cdCAgICB2YXIgY29udGV4
dFR5cGVzID0gQ29tcG9uZW50LmNvbnRleHRUeXBlcztcblx0ICAgIGlmICghY29udGV4dFR5cGVz
KSB7XG5cdCAgICAgIHJldHVybiBlbXB0eU9iamVjdDtcblx0ICAgIH1cblx0ICAgIHZhciBtYXNr
ZWRDb250ZXh0ID0ge307XG5cdCAgICBmb3IgKHZhciBjb250ZXh0TmFtZSBpbiBjb250ZXh0VHlw
ZXMpIHtcblx0ICAgICAgbWFza2VkQ29udGV4dFtjb250ZXh0TmFtZV0gPSBjb250ZXh0W2NvbnRl
eHROYW1lXTtcblx0ICAgIH1cblx0ICAgIHJldHVybiBtYXNrZWRDb250ZXh0O1xuXHQgIH0sXG5c
dFxuXHQgIC8qKlxuXHQgICAqIEZpbHRlcnMgdGhlIGNvbnRleHQgb2JqZWN0IHRvIG9ubHkgY29u
dGFpbiBrZXlzIHNwZWNpZmllZCBpblxuXHQgICAqIGBjb250ZXh0VHlwZXNgLCBhbmQgYXNzZXJ0
cyB0aGF0IHRoZXkgYXJlIHZhbGlkLlxuXHQgICAqXG5cdCAgICogQHBhcmFtIHtvYmplY3R9IGNv
bnRleHRcblx0ICAgKiBAcmV0dXJuIHs/b2JqZWN0fVxuXHQgICAqIEBwcml2YXRlXG5cdCAgICov
XG5cdCAgX3Byb2Nlc3NDb250ZXh0OiBmdW5jdGlvbiAoY29udGV4dCkge1xuXHQgICAgdmFyIG1h
c2tlZENvbnRleHQgPSB0aGlzLl9tYXNrQ29udGV4dChjb250ZXh0KTtcblx0ICAgIGlmIChmYWxz
ZSkge1xuXHQgICAgICB2YXIgQ29tcG9uZW50ID0gdGhpcy5fY3VycmVudEVsZW1lbnQudHlwZTtc
blx0ICAgICAgaWYgKENvbXBvbmVudC5jb250ZXh0VHlwZXMpIHtcblx0ICAgICAgICB0aGlzLl9j
aGVja0NvbnRleHRUeXBlcyhDb21wb25lbnQuY29udGV4dFR5cGVzLCBtYXNrZWRDb250ZXh0LCAn
Y29udGV4dCcpO1xuXHQgICAgICB9XG5cdCAgICB9XG5cdCAgICByZXR1cm4gbWFza2VkQ29udGV4
dDtcblx0ICB9LFxuXHRcblx0ICAvKipcblx0ICAgKiBAcGFyYW0ge29iamVjdH0gY3VycmVudENv
bnRleHRcblx0ICAgKiBAcmV0dXJuIHtvYmplY3R9XG5cdCAgICogQHByaXZhdGVcblx0ICAgKi9c
blx0ICBfcHJvY2Vzc0NoaWxkQ29udGV4dDogZnVuY3Rpb24gKGN1cnJlbnRDb250ZXh0KSB7XG5c
dCAgICB2YXIgQ29tcG9uZW50ID0gdGhpcy5fY3VycmVudEVsZW1lbnQudHlwZTtcblx0ICAgIHZh
ciBpbnN0ID0gdGhpcy5faW5zdGFuY2U7XG5cdCAgICB2YXIgY2hpbGRDb250ZXh0O1xuXHRcblx0
ICAgIGlmIChpbnN0LmdldENoaWxkQ29udGV4dCkge1xuXHQgICAgICBpZiAoZmFsc2UpIHtcblx0
ICAgICAgICBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25CZWdpblByb2Nlc3NpbmdD
aGlsZENvbnRleHQoKTtcblx0ICAgICAgICB0cnkge1xuXHQgICAgICAgICAgY2hpbGRDb250ZXh0
ID0gaW5zdC5nZXRDaGlsZENvbnRleHQoKTtcblx0ICAgICAgICB9IGZpbmFsbHkge1xuXHQgICAg
ICAgICAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9uRW5kUHJvY2Vzc2luZ0NoaWxk
Q29udGV4dCgpO1xuXHQgICAgICAgIH1cblx0ICAgICAgfSBlbHNlIHtcblx0ICAgICAgICBjaGls
ZENvbnRleHQgPSBpbnN0LmdldENoaWxkQ29udGV4dCgpO1xuXHQgICAgICB9XG5cdCAgICB9XG5c
dFxuXHQgICAgaWYgKGNoaWxkQ29udGV4dCkge1xuXHQgICAgICAhKHR5cGVvZiBDb21wb25lbnQu
Y2hpbGRDb250ZXh0VHlwZXMgPT09ICdvYmplY3QnKSA/ICBmYWxzZSA/IGludmFyaWFudChmYWxz
ZSwgJyVzLmdldENoaWxkQ29udGV4dCgpOiBjaGlsZENvbnRleHRUeXBlcyBtdXN0IGJlIGRlZmlu
ZWQgaW4gb3JkZXIgdG8gdXNlIGdldENoaWxkQ29udGV4dCgpLicsIHRoaXMuZ2V0TmFtZSgpIHx8
ICdSZWFjdENvbXBvc2l0ZUNvbXBvbmVudCcpIDogX3Byb2RJbnZhcmlhbnQoJzEwNycsIHRoaXMu
Z2V0TmFtZSgpIHx8ICdSZWFjdENvbXBvc2l0ZUNvbXBvbmVudCcpIDogdm9pZCAwO1xuXHQgICAg
ICBpZiAoZmFsc2UpIHtcblx0ICAgICAgICB0aGlzLl9jaGVja0NvbnRleHRUeXBlcyhDb21wb25l
bnQuY2hpbGRDb250ZXh0VHlwZXMsIGNoaWxkQ29udGV4dCwgJ2NoaWxkIGNvbnRleHQnKTtcblx0
ICAgICAgfVxuXHQgICAgICBmb3IgKHZhciBuYW1lIGluIGNoaWxkQ29udGV4dCkge1xuXHQgICAg
ICAgICEobmFtZSBpbiBDb21wb25lbnQuY2hpbGRDb250ZXh0VHlwZXMpID8gIGZhbHNlID8gaW52
YXJpYW50KGZhbHNlLCAnJXMuZ2V0Q2hpbGRDb250ZXh0KCk6IGtleSBcIiVzXCIgaXMgbm90IGRl
ZmluZWQgaW4gY2hpbGRDb250ZXh0VHlwZXMuJywgdGhpcy5nZXROYW1lKCkgfHwgJ1JlYWN0Q29t
cG9zaXRlQ29tcG9uZW50JywgbmFtZSkgOiBfcHJvZEludmFyaWFudCgnMTA4JywgdGhpcy5nZXRO
YW1lKCkgfHwgJ1JlYWN0Q29tcG9zaXRlQ29tcG9uZW50JywgbmFtZSkgOiB2b2lkIDA7XG5cdCAg
ICAgIH1cblx0ICAgICAgcmV0dXJuIF9hc3NpZ24oe30sIGN1cnJlbnRDb250ZXh0LCBjaGlsZENv
bnRleHQpO1xuXHQgICAgfVxuXHQgICAgcmV0dXJuIGN1cnJlbnRDb250ZXh0O1xuXHQgIH0sXG5c
dFxuXHQgIC8qKlxuXHQgICAqIEFzc2VydCB0aGF0IHRoZSBjb250ZXh0IHR5cGVzIGFyZSB2YWxp
ZFxuXHQgICAqXG5cdCAgICogQHBhcmFtIHtvYmplY3R9IHR5cGVTcGVjcyBNYXAgb2YgY29udGV4
dCBmaWVsZCB0byBhIFJlYWN0UHJvcFR5cGVcblx0ICAgKiBAcGFyYW0ge29iamVjdH0gdmFsdWVz
IFJ1bnRpbWUgdmFsdWVzIHRoYXQgbmVlZCB0byBiZSB0eXBlLWNoZWNrZWRcblx0ICAgKiBAcGFy
YW0ge3N0cmluZ30gbG9jYXRpb24gZS5nLiBcInByb3BcIiwgXCJjb250ZXh0XCIsIFwiY2hpbGQg
Y29udGV4dFwiXG5cdCAgICogQHByaXZhdGVcblx0ICAgKi9cblx0ICBfY2hlY2tDb250ZXh0VHlw
ZXM6IGZ1bmN0aW9uICh0eXBlU3BlY3MsIHZhbHVlcywgbG9jYXRpb24pIHtcblx0ICAgIGlmIChm
YWxzZSkge1xuXHQgICAgICBjaGVja1JlYWN0VHlwZVNwZWModHlwZVNwZWNzLCB2YWx1ZXMsIGxv
Y2F0aW9uLCB0aGlzLmdldE5hbWUoKSwgbnVsbCwgdGhpcy5fZGVidWdJRCk7XG5cdCAgICB9XG5c
dCAgfSxcblx0XG5cdCAgcmVjZWl2ZUNvbXBvbmVudDogZnVuY3Rpb24gKG5leHRFbGVtZW50LCB0
cmFuc2FjdGlvbiwgbmV4dENvbnRleHQpIHtcblx0ICAgIHZhciBwcmV2RWxlbWVudCA9IHRoaXMu
X2N1cnJlbnRFbGVtZW50O1xuXHQgICAgdmFyIHByZXZDb250ZXh0ID0gdGhpcy5fY29udGV4dDtc
blx0XG5cdCAgICB0aGlzLl9wZW5kaW5nRWxlbWVudCA9IG51bGw7XG5cdFxuXHQgICAgdGhpcy51
cGRhdGVDb21wb25lbnQodHJhbnNhY3Rpb24sIHByZXZFbGVtZW50LCBuZXh0RWxlbWVudCwgcHJl
dkNvbnRleHQsIG5leHRDb250ZXh0KTtcblx0ICB9LFxuXHRcblx0ICAvKipcblx0ICAgKiBJZiBh
bnkgb2YgYF9wZW5kaW5nRWxlbWVudGAsIGBfcGVuZGluZ1N0YXRlUXVldWVgLCBvciBgX3BlbmRp
bmdGb3JjZVVwZGF0ZWBcblx0ICAgKiBpcyBzZXQsIHVwZGF0ZSB0aGUgY29tcG9uZW50LlxuXHQg
ICAqXG5cdCAgICogQHBhcmFtIHtSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9ufSB0cmFuc2FjdGlv
blxuXHQgICAqIEBpbnRlcm5hbFxuXHQgICAqL1xuXHQgIHBlcmZvcm1VcGRhdGVJZk5lY2Vzc2Fy
eTogZnVuY3Rpb24gKHRyYW5zYWN0aW9uKSB7XG5cdCAgICBpZiAodGhpcy5fcGVuZGluZ0VsZW1l
bnQgIT0gbnVsbCkge1xuXHQgICAgICBSZWFjdFJlY29uY2lsZXIucmVjZWl2ZUNvbXBvbmVudCh0
aGlzLCB0aGlzLl9wZW5kaW5nRWxlbWVudCwgdHJhbnNhY3Rpb24sIHRoaXMuX2NvbnRleHQpO1xu
XHQgICAgfSBlbHNlIGlmICh0aGlzLl9wZW5kaW5nU3RhdGVRdWV1ZSAhPT0gbnVsbCB8fCB0aGlz
Ll9wZW5kaW5nRm9yY2VVcGRhdGUpIHtcblx0ICAgICAgdGhpcy51cGRhdGVDb21wb25lbnQodHJh
bnNhY3Rpb24sIHRoaXMuX2N1cnJlbnRFbGVtZW50LCB0aGlzLl9jdXJyZW50RWxlbWVudCwgdGhp
cy5fY29udGV4dCwgdGhpcy5fY29udGV4dCk7XG5cdCAgICB9IGVsc2Uge1xuXHQgICAgICB0aGlz
Ll91cGRhdGVCYXRjaE51bWJlciA9IG51bGw7XG5cdCAgICB9XG5cdCAgfSxcblx0XG5cdCAgLyoq
XG5cdCAgICogUGVyZm9ybSBhbiB1cGRhdGUgdG8gYSBtb3VudGVkIGNvbXBvbmVudC4gVGhlIGNv
bXBvbmVudFdpbGxSZWNlaXZlUHJvcHMgYW5kXG5cdCAgICogc2hvdWxkQ29tcG9uZW50VXBkYXRl
IG1ldGhvZHMgYXJlIGNhbGxlZCwgdGhlbiAoYXNzdW1pbmcgdGhlIHVwZGF0ZSBpc24ndFxuXHQg
ICAqIHNraXBwZWQpIHRoZSByZW1haW5pbmcgdXBkYXRlIGxpZmVjeWNsZSBtZXRob2RzIGFyZSBj
YWxsZWQgYW5kIHRoZSBET01cblx0ICAgKiByZXByZXNlbnRhdGlvbiBpcyB1cGRhdGVkLlxuXHQg
ICAqXG5cdCAgICogQnkgZGVmYXVsdCwgdGhpcyBpbXBsZW1lbnRzIFJlYWN0J3MgcmVuZGVyaW5n
IGFuZCByZWNvbmNpbGlhdGlvbiBhbGdvcml0aG0uXG5cdCAgICogU29waGlzdGljYXRlZCBjbGll
bnRzIG1heSB3aXNoIHRvIG92ZXJyaWRlIHRoaXMuXG5cdCAgICpcblx0ICAgKiBAcGFyYW0ge1Jl
YWN0UmVjb25jaWxlVHJhbnNhY3Rpb259IHRyYW5zYWN0aW9uXG5cdCAgICogQHBhcmFtIHtSZWFj
dEVsZW1lbnR9IHByZXZQYXJlbnRFbGVtZW50XG5cdCAgICogQHBhcmFtIHtSZWFjdEVsZW1lbnR9
IG5leHRQYXJlbnRFbGVtZW50XG5cdCAgICogQGludGVybmFsXG5cdCAgICogQG92ZXJyaWRhYmxl
XG5cdCAgICovXG5cdCAgdXBkYXRlQ29tcG9uZW50OiBmdW5jdGlvbiAodHJhbnNhY3Rpb24sIHBy
ZXZQYXJlbnRFbGVtZW50LCBuZXh0UGFyZW50RWxlbWVudCwgcHJldlVubWFza2VkQ29udGV4dCwg
bmV4dFVubWFza2VkQ29udGV4dCkge1xuXHQgICAgdmFyIGluc3QgPSB0aGlzLl9pbnN0YW5jZTtc
blx0ICAgICEoaW5zdCAhPSBudWxsKSA/ICBmYWxzZSA/IGludmFyaWFudChmYWxzZSwgJ0F0dGVt
cHRlZCB0byB1cGRhdGUgY29tcG9uZW50IGAlc2AgdGhhdCBoYXMgYWxyZWFkeSBiZWVuIHVubW91
bnRlZCAob3IgZmFpbGVkIHRvIG1vdW50KS4nLCB0aGlzLmdldE5hbWUoKSB8fCAnUmVhY3RDb21w
b3NpdGVDb21wb25lbnQnKSA6IF9wcm9kSW52YXJpYW50KCcxMzYnLCB0aGlzLmdldE5hbWUoKSB8
fCAnUmVhY3RDb21wb3NpdGVDb21wb25lbnQnKSA6IHZvaWQgMDtcblx0XG5cdCAgICB2YXIgd2ls
bFJlY2VpdmUgPSBmYWxzZTtcblx0ICAgIHZhciBuZXh0Q29udGV4dDtcblx0XG5cdCAgICAvLyBE
ZXRlcm1pbmUgaWYgdGhlIGNvbnRleHQgaGFzIGNoYW5nZWQgb3Igbm90XG5cdCAgICBpZiAodGhp
cy5fY29udGV4dCA9PT0gbmV4dFVubWFza2VkQ29udGV4dCkge1xuXHQgICAgICBuZXh0Q29udGV4
dCA9IGluc3QuY29udGV4dDtcblx0ICAgIH0gZWxzZSB7XG5cdCAgICAgIG5leHRDb250ZXh0ID0g
dGhpcy5fcHJvY2Vzc0NvbnRleHQobmV4dFVubWFza2VkQ29udGV4dCk7XG5cdCAgICAgIHdpbGxS
ZWNlaXZlID0gdHJ1ZTtcblx0ICAgIH1cblx0XG5cdCAgICB2YXIgcHJldlByb3BzID0gcHJldlBh
cmVudEVsZW1lbnQucHJvcHM7XG5cdCAgICB2YXIgbmV4dFByb3BzID0gbmV4dFBhcmVudEVsZW1l
bnQucHJvcHM7XG5cdFxuXHQgICAgLy8gTm90IGEgc2ltcGxlIHN0YXRlIHVwZGF0ZSBidXQgYSBw
cm9wcyB1cGRhdGVcblx0ICAgIGlmIChwcmV2UGFyZW50RWxlbWVudCAhPT0gbmV4dFBhcmVudEVs
ZW1lbnQpIHtcblx0ICAgICAgd2lsbFJlY2VpdmUgPSB0cnVlO1xuXHQgICAgfVxuXHRcblx0ICAg
IC8vIEFuIHVwZGF0ZSBoZXJlIHdpbGwgc2NoZWR1bGUgYW4gdXBkYXRlIGJ1dCBpbW1lZGlhdGVs
eSBzZXRcblx0ICAgIC8vIF9wZW5kaW5nU3RhdGVRdWV1ZSB3aGljaCB3aWxsIGVuc3VyZSB0aGF0
IGFueSBzdGF0ZSB1cGRhdGVzIGdldHNcblx0ICAgIC8vIGltbWVkaWF0ZWx5IHJlY29uY2lsZWQg
aW5zdGVhZCBvZiB3YWl0aW5nIGZvciB0aGUgbmV4dCBiYXRjaC5cblx0ICAgIGlmICh3aWxsUmVj
ZWl2ZSAmJiBpbnN0LmNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMpIHtcblx0ICAgICAgaWYgKGZh
bHNlKSB7XG5cdCAgICAgICAgbWVhc3VyZUxpZmVDeWNsZVBlcmYoZnVuY3Rpb24gKCkge1xuXHQg
ICAgICAgICAgcmV0dXJuIGluc3QuY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyhuZXh0UHJvcHMs
IG5leHRDb250ZXh0KTtcblx0ICAgICAgICB9LCB0aGlzLl9kZWJ1Z0lELCAnY29tcG9uZW50V2ls
bFJlY2VpdmVQcm9wcycpO1xuXHQgICAgICB9IGVsc2Uge1xuXHQgICAgICAgIGluc3QuY29tcG9u
ZW50V2lsbFJlY2VpdmVQcm9wcyhuZXh0UHJvcHMsIG5leHRDb250ZXh0KTtcblx0ICAgICAgfVxu
XHQgICAgfVxuXHRcblx0ICAgIHZhciBuZXh0U3RhdGUgPSB0aGlzLl9wcm9jZXNzUGVuZGluZ1N0
YXRlKG5leHRQcm9wcywgbmV4dENvbnRleHQpO1xuXHQgICAgdmFyIHNob3VsZFVwZGF0ZSA9IHRy
dWU7XG5cdFxuXHQgICAgaWYgKCF0aGlzLl9wZW5kaW5nRm9yY2VVcGRhdGUpIHtcblx0ICAgICAg
aWYgKGluc3Quc2hvdWxkQ29tcG9uZW50VXBkYXRlKSB7XG5cdCAgICAgICAgaWYgKGZhbHNlKSB7
XG5cdCAgICAgICAgICBzaG91bGRVcGRhdGUgPSBtZWFzdXJlTGlmZUN5Y2xlUGVyZihmdW5jdGlv
biAoKSB7XG5cdCAgICAgICAgICAgIHJldHVybiBpbnN0LnNob3VsZENvbXBvbmVudFVwZGF0ZShu
ZXh0UHJvcHMsIG5leHRTdGF0ZSwgbmV4dENvbnRleHQpO1xuXHQgICAgICAgICAgfSwgdGhpcy5f
ZGVidWdJRCwgJ3Nob3VsZENvbXBvbmVudFVwZGF0ZScpO1xuXHQgICAgICAgIH0gZWxzZSB7XG5c
dCAgICAgICAgICBzaG91bGRVcGRhdGUgPSBpbnN0LnNob3VsZENvbXBvbmVudFVwZGF0ZShuZXh0
UHJvcHMsIG5leHRTdGF0ZSwgbmV4dENvbnRleHQpO1xuXHQgICAgICAgIH1cblx0ICAgICAgfSBl
bHNlIHtcblx0ICAgICAgICBpZiAodGhpcy5fY29tcG9zaXRlVHlwZSA9PT0gQ29tcG9zaXRlVHlw
ZXMuUHVyZUNsYXNzKSB7XG5cdCAgICAgICAgICBzaG91bGRVcGRhdGUgPSAhc2hhbGxvd0VxdWFs
KHByZXZQcm9wcywgbmV4dFByb3BzKSB8fCAhc2hhbGxvd0VxdWFsKGluc3Quc3RhdGUsIG5leHRT
dGF0ZSk7XG5cdCAgICAgICAgfVxuXHQgICAgICB9XG5cdCAgICB9XG5cdFxuXHQgICAgaWYgKGZh
bHNlKSB7XG5cdCAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3
YXJuaW5nKHNob3VsZFVwZGF0ZSAhPT0gdW5kZWZpbmVkLCAnJXMuc2hvdWxkQ29tcG9uZW50VXBk
YXRlKCk6IFJldHVybmVkIHVuZGVmaW5lZCBpbnN0ZWFkIG9mIGEgJyArICdib29sZWFuIHZhbHVl
LiBNYWtlIHN1cmUgdG8gcmV0dXJuIHRydWUgb3IgZmFsc2UuJywgdGhpcy5nZXROYW1lKCkgfHwg
J1JlYWN0Q29tcG9zaXRlQ29tcG9uZW50JykgOiB2b2lkIDA7XG5cdCAgICB9XG5cdFxuXHQgICAg
dGhpcy5fdXBkYXRlQmF0Y2hOdW1iZXIgPSBudWxsO1xuXHQgICAgaWYgKHNob3VsZFVwZGF0ZSkg
e1xuXHQgICAgICB0aGlzLl9wZW5kaW5nRm9yY2VVcGRhdGUgPSBmYWxzZTtcblx0ICAgICAgLy8g
V2lsbCBzZXQgYHRoaXMucHJvcHNgLCBgdGhpcy5zdGF0ZWAgYW5kIGB0aGlzLmNvbnRleHRgLlxu
XHQgICAgICB0aGlzLl9wZXJmb3JtQ29tcG9uZW50VXBkYXRlKG5leHRQYXJlbnRFbGVtZW50LCBu
ZXh0UHJvcHMsIG5leHRTdGF0ZSwgbmV4dENvbnRleHQsIHRyYW5zYWN0aW9uLCBuZXh0VW5tYXNr
ZWRDb250ZXh0KTtcblx0ICAgIH0gZWxzZSB7XG5cdCAgICAgIC8vIElmIGl0J3MgZGV0ZXJtaW5l
ZCB0aGF0IGEgY29tcG9uZW50IHNob3VsZCBub3QgdXBkYXRlLCB3ZSBzdGlsbCB3YW50XG5cdCAg
ICAgIC8vIHRvIHNldCBwcm9wcyBhbmQgc3RhdGUgYnV0IHdlIHNob3J0Y3V0IHRoZSByZXN0IG9m
IHRoZSB1cGRhdGUuXG5cdCAgICAgIHRoaXMuX2N1cnJlbnRFbGVtZW50ID0gbmV4dFBhcmVudEVs
ZW1lbnQ7XG5cdCAgICAgIHRoaXMuX2NvbnRleHQgPSBuZXh0VW5tYXNrZWRDb250ZXh0O1xuXHQg
ICAgICBpbnN0LnByb3BzID0gbmV4dFByb3BzO1xuXHQgICAgICBpbnN0LnN0YXRlID0gbmV4dFN0
YXRlO1xuXHQgICAgICBpbnN0LmNvbnRleHQgPSBuZXh0Q29udGV4dDtcblx0ICAgIH1cblx0ICB9
LFxuXHRcblx0ICBfcHJvY2Vzc1BlbmRpbmdTdGF0ZTogZnVuY3Rpb24gKHByb3BzLCBjb250ZXh0
KSB7XG5cdCAgICB2YXIgaW5zdCA9IHRoaXMuX2luc3RhbmNlO1xuXHQgICAgdmFyIHF1ZXVlID0g
dGhpcy5fcGVuZGluZ1N0YXRlUXVldWU7XG5cdCAgICB2YXIgcmVwbGFjZSA9IHRoaXMuX3BlbmRp
bmdSZXBsYWNlU3RhdGU7XG5cdCAgICB0aGlzLl9wZW5kaW5nUmVwbGFjZVN0YXRlID0gZmFsc2U7
XG5cdCAgICB0aGlzLl9wZW5kaW5nU3RhdGVRdWV1ZSA9IG51bGw7XG5cdFxuXHQgICAgaWYgKCFx
dWV1ZSkge1xuXHQgICAgICByZXR1cm4gaW5zdC5zdGF0ZTtcblx0ICAgIH1cblx0XG5cdCAgICBp
ZiAocmVwbGFjZSAmJiBxdWV1ZS5sZW5ndGggPT09IDEpIHtcblx0ICAgICAgcmV0dXJuIHF1ZXVl
WzBdO1xuXHQgICAgfVxuXHRcblx0ICAgIHZhciBuZXh0U3RhdGUgPSBfYXNzaWduKHt9LCByZXBs
YWNlID8gcXVldWVbMF0gOiBpbnN0LnN0YXRlKTtcblx0ICAgIGZvciAodmFyIGkgPSByZXBsYWNl
ID8gMSA6IDA7IGkgPCBxdWV1ZS5sZW5ndGg7IGkrKykge1xuXHQgICAgICB2YXIgcGFydGlhbCA9
IHF1ZXVlW2ldO1xuXHQgICAgICBfYXNzaWduKG5leHRTdGF0ZSwgdHlwZW9mIHBhcnRpYWwgPT09
ICdmdW5jdGlvbicgPyBwYXJ0aWFsLmNhbGwoaW5zdCwgbmV4dFN0YXRlLCBwcm9wcywgY29udGV4
dCkgOiBwYXJ0aWFsKTtcblx0ICAgIH1cblx0XG5cdCAgICByZXR1cm4gbmV4dFN0YXRlO1xuXHQg
IH0sXG5cdFxuXHQgIC8qKlxuXHQgICAqIE1lcmdlcyBuZXcgcHJvcHMgYW5kIHN0YXRlLCBub3Rp
ZmllcyBkZWxlZ2F0ZSBtZXRob2RzIG9mIHVwZGF0ZSBhbmRcblx0ICAgKiBwZXJmb3JtcyB1cGRh
dGUuXG5cdCAgICpcblx0ICAgKiBAcGFyYW0ge1JlYWN0RWxlbWVudH0gbmV4dEVsZW1lbnQgTmV4
dCBlbGVtZW50XG5cdCAgICogQHBhcmFtIHtvYmplY3R9IG5leHRQcm9wcyBOZXh0IHB1YmxpYyBv
YmplY3QgdG8gc2V0IGFzIHByb3BlcnRpZXMuXG5cdCAgICogQHBhcmFtIHs/b2JqZWN0fSBuZXh0
U3RhdGUgTmV4dCBvYmplY3QgdG8gc2V0IGFzIHN0YXRlLlxuXHQgICAqIEBwYXJhbSB7P29iamVj
dH0gbmV4dENvbnRleHQgTmV4dCBwdWJsaWMgb2JqZWN0IHRvIHNldCBhcyBjb250ZXh0LlxuXHQg
ICAqIEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbn0gdHJhbnNhY3Rpb25cblx0ICAg
KiBAcGFyYW0gez9vYmplY3R9IHVubWFza2VkQ29udGV4dFxuXHQgICAqIEBwcml2YXRlXG5cdCAg
ICovXG5cdCAgX3BlcmZvcm1Db21wb25lbnRVcGRhdGU6IGZ1bmN0aW9uIChuZXh0RWxlbWVudCwg
bmV4dFByb3BzLCBuZXh0U3RhdGUsIG5leHRDb250ZXh0LCB0cmFuc2FjdGlvbiwgdW5tYXNrZWRD
b250ZXh0KSB7XG5cdCAgICB2YXIgX3RoaXMyID0gdGhpcztcblx0XG5cdCAgICB2YXIgaW5zdCA9
IHRoaXMuX2luc3RhbmNlO1xuXHRcblx0ICAgIHZhciBoYXNDb21wb25lbnREaWRVcGRhdGUgPSBC
b29sZWFuKGluc3QuY29tcG9uZW50RGlkVXBkYXRlKTtcblx0ICAgIHZhciBwcmV2UHJvcHM7XG5c
dCAgICB2YXIgcHJldlN0YXRlO1xuXHQgICAgdmFyIHByZXZDb250ZXh0O1xuXHQgICAgaWYgKGhh
c0NvbXBvbmVudERpZFVwZGF0ZSkge1xuXHQgICAgICBwcmV2UHJvcHMgPSBpbnN0LnByb3BzO1xu
XHQgICAgICBwcmV2U3RhdGUgPSBpbnN0LnN0YXRlO1xuXHQgICAgICBwcmV2Q29udGV4dCA9IGlu
c3QuY29udGV4dDtcblx0ICAgIH1cblx0XG5cdCAgICBpZiAoaW5zdC5jb21wb25lbnRXaWxsVXBk
YXRlKSB7XG5cdCAgICAgIGlmIChmYWxzZSkge1xuXHQgICAgICAgIG1lYXN1cmVMaWZlQ3ljbGVQ
ZXJmKGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICAgIHJldHVybiBpbnN0LmNvbXBvbmVudFdpbGxV
cGRhdGUobmV4dFByb3BzLCBuZXh0U3RhdGUsIG5leHRDb250ZXh0KTtcblx0ICAgICAgICB9LCB0
aGlzLl9kZWJ1Z0lELCAnY29tcG9uZW50V2lsbFVwZGF0ZScpO1xuXHQgICAgICB9IGVsc2Uge1xu
XHQgICAgICAgIGluc3QuY29tcG9uZW50V2lsbFVwZGF0ZShuZXh0UHJvcHMsIG5leHRTdGF0ZSwg
bmV4dENvbnRleHQpO1xuXHQgICAgICB9XG5cdCAgICB9XG5cdFxuXHQgICAgdGhpcy5fY3VycmVu
dEVsZW1lbnQgPSBuZXh0RWxlbWVudDtcblx0ICAgIHRoaXMuX2NvbnRleHQgPSB1bm1hc2tlZENv
bnRleHQ7XG5cdCAgICBpbnN0LnByb3BzID0gbmV4dFByb3BzO1xuXHQgICAgaW5zdC5zdGF0ZSA9
IG5leHRTdGF0ZTtcblx0ICAgIGluc3QuY29udGV4dCA9IG5leHRDb250ZXh0O1xuXHRcblx0ICAg
IHRoaXMuX3VwZGF0ZVJlbmRlcmVkQ29tcG9uZW50KHRyYW5zYWN0aW9uLCB1bm1hc2tlZENvbnRl
eHQpO1xuXHRcblx0ICAgIGlmIChoYXNDb21wb25lbnREaWRVcGRhdGUpIHtcblx0ICAgICAgaWYg
KGZhbHNlKSB7XG5cdCAgICAgICAgdHJhbnNhY3Rpb24uZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5x
dWV1ZShmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgICBtZWFzdXJlTGlmZUN5Y2xlUGVyZihpbnN0
LmNvbXBvbmVudERpZFVwZGF0ZS5iaW5kKGluc3QsIHByZXZQcm9wcywgcHJldlN0YXRlLCBwcmV2
Q29udGV4dCksIF90aGlzMi5fZGVidWdJRCwgJ2NvbXBvbmVudERpZFVwZGF0ZScpO1xuXHQgICAg
ICAgIH0pO1xuXHQgICAgICB9IGVsc2Uge1xuXHQgICAgICAgIHRyYW5zYWN0aW9uLmdldFJlYWN0
TW91bnRSZWFkeSgpLmVucXVldWUoaW5zdC5jb21wb25lbnREaWRVcGRhdGUuYmluZChpbnN0LCBw
cmV2UHJvcHMsIHByZXZTdGF0ZSwgcHJldkNvbnRleHQpLCBpbnN0KTtcblx0ICAgICAgfVxuXHQg
ICAgfVxuXHQgIH0sXG5cdFxuXHQgIC8qKlxuXHQgICAqIENhbGwgdGhlIGNvbXBvbmVudCdzIGBy
ZW5kZXJgIG1ldGhvZCBhbmQgdXBkYXRlIHRoZSBET00gYWNjb3JkaW5nbHkuXG5cdCAgICpcblx0
ICAgKiBAcGFyYW0ge1JlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb259IHRyYW5zYWN0aW9uXG5cdCAg
ICogQGludGVybmFsXG5cdCAgICovXG5cdCAgX3VwZGF0ZVJlbmRlcmVkQ29tcG9uZW50OiBmdW5j
dGlvbiAodHJhbnNhY3Rpb24sIGNvbnRleHQpIHtcblx0ICAgIHZhciBwcmV2Q29tcG9uZW50SW5z
dGFuY2UgPSB0aGlzLl9yZW5kZXJlZENvbXBvbmVudDtcblx0ICAgIHZhciBwcmV2UmVuZGVyZWRF
bGVtZW50ID0gcHJldkNvbXBvbmVudEluc3RhbmNlLl9jdXJyZW50RWxlbWVudDtcblx0ICAgIHZh
ciBuZXh0UmVuZGVyZWRFbGVtZW50ID0gdGhpcy5fcmVuZGVyVmFsaWRhdGVkQ29tcG9uZW50KCk7
XG5cdFxuXHQgICAgdmFyIGRlYnVnSUQgPSAwO1xuXHQgICAgaWYgKGZhbHNlKSB7XG5cdCAgICAg
IGRlYnVnSUQgPSB0aGlzLl9kZWJ1Z0lEO1xuXHQgICAgfVxuXHRcblx0ICAgIGlmIChzaG91bGRV
cGRhdGVSZWFjdENvbXBvbmVudChwcmV2UmVuZGVyZWRFbGVtZW50LCBuZXh0UmVuZGVyZWRFbGVt
ZW50KSkge1xuXHQgICAgICBSZWFjdFJlY29uY2lsZXIucmVjZWl2ZUNvbXBvbmVudChwcmV2Q29t
cG9uZW50SW5zdGFuY2UsIG5leHRSZW5kZXJlZEVsZW1lbnQsIHRyYW5zYWN0aW9uLCB0aGlzLl9w
cm9jZXNzQ2hpbGRDb250ZXh0KGNvbnRleHQpKTtcblx0ICAgIH0gZWxzZSB7XG5cdCAgICAgIHZh
ciBvbGRIb3N0Tm9kZSA9IFJlYWN0UmVjb25jaWxlci5nZXRIb3N0Tm9kZShwcmV2Q29tcG9uZW50
SW5zdGFuY2UpO1xuXHQgICAgICBSZWFjdFJlY29uY2lsZXIudW5tb3VudENvbXBvbmVudChwcmV2
Q29tcG9uZW50SW5zdGFuY2UsIGZhbHNlKTtcblx0XG5cdCAgICAgIHZhciBub2RlVHlwZSA9IFJl
YWN0Tm9kZVR5cGVzLmdldFR5cGUobmV4dFJlbmRlcmVkRWxlbWVudCk7XG5cdCAgICAgIHRoaXMu
X3JlbmRlcmVkTm9kZVR5cGUgPSBub2RlVHlwZTtcblx0ICAgICAgdmFyIGNoaWxkID0gdGhpcy5f
aW5zdGFudGlhdGVSZWFjdENvbXBvbmVudChuZXh0UmVuZGVyZWRFbGVtZW50LCBub2RlVHlwZSAh
PT0gUmVhY3ROb2RlVHlwZXMuRU1QVFkgLyogc2hvdWxkSGF2ZURlYnVnSUQgKi9cblx0ICAgICAg
KTtcblx0ICAgICAgdGhpcy5fcmVuZGVyZWRDb21wb25lbnQgPSBjaGlsZDtcblx0XG5cdCAgICAg
IHZhciBuZXh0TWFya3VwID0gUmVhY3RSZWNvbmNpbGVyLm1vdW50Q29tcG9uZW50KGNoaWxkLCB0
cmFuc2FjdGlvbiwgdGhpcy5faG9zdFBhcmVudCwgdGhpcy5faG9zdENvbnRhaW5lckluZm8sIHRo
aXMuX3Byb2Nlc3NDaGlsZENvbnRleHQoY29udGV4dCksIGRlYnVnSUQpO1xuXHRcblx0ICAgICAg
aWYgKGZhbHNlKSB7XG5cdCAgICAgICAgaWYgKGRlYnVnSUQgIT09IDApIHtcblx0ICAgICAgICAg
IHZhciBjaGlsZERlYnVnSURzID0gY2hpbGQuX2RlYnVnSUQgIT09IDAgPyBbY2hpbGQuX2RlYnVn
SURdIDogW107XG5cdCAgICAgICAgICBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25T
ZXRDaGlsZHJlbihkZWJ1Z0lELCBjaGlsZERlYnVnSURzKTtcblx0ICAgICAgICB9XG5cdCAgICAg
IH1cblx0XG5cdCAgICAgIHRoaXMuX3JlcGxhY2VOb2RlV2l0aE1hcmt1cChvbGRIb3N0Tm9kZSwg
bmV4dE1hcmt1cCwgcHJldkNvbXBvbmVudEluc3RhbmNlKTtcblx0ICAgIH1cblx0ICB9LFxuXHRc
blx0ICAvKipcblx0ICAgKiBPdmVycmlkZGVuIGluIHNoYWxsb3cgcmVuZGVyaW5nLlxuXHQgICAq
XG5cdCAgICogQHByb3RlY3RlZFxuXHQgICAqL1xuXHQgIF9yZXBsYWNlTm9kZVdpdGhNYXJrdXA6
IGZ1bmN0aW9uIChvbGRIb3N0Tm9kZSwgbmV4dE1hcmt1cCwgcHJldkluc3RhbmNlKSB7XG5cdCAg
ICBSZWFjdENvbXBvbmVudEVudmlyb25tZW50LnJlcGxhY2VOb2RlV2l0aE1hcmt1cChvbGRIb3N0
Tm9kZSwgbmV4dE1hcmt1cCwgcHJldkluc3RhbmNlKTtcblx0ICB9LFxuXHRcblx0ICAvKipcblx0
ICAgKiBAcHJvdGVjdGVkXG5cdCAgICovXG5cdCAgX3JlbmRlclZhbGlkYXRlZENvbXBvbmVudFdp
dGhvdXRPd25lck9yQ29udGV4dDogZnVuY3Rpb24gKCkge1xuXHQgICAgdmFyIGluc3QgPSB0aGlz
Ll9pbnN0YW5jZTtcblx0ICAgIHZhciByZW5kZXJlZEVsZW1lbnQ7XG5cdFxuXHQgICAgaWYgKGZh
bHNlKSB7XG5cdCAgICAgIHJlbmRlcmVkRWxlbWVudCA9IG1lYXN1cmVMaWZlQ3ljbGVQZXJmKGZ1
bmN0aW9uICgpIHtcblx0ICAgICAgICByZXR1cm4gaW5zdC5yZW5kZXIoKTtcblx0ICAgICAgfSwg
dGhpcy5fZGVidWdJRCwgJ3JlbmRlcicpO1xuXHQgICAgfSBlbHNlIHtcblx0ICAgICAgcmVuZGVy
ZWRFbGVtZW50ID0gaW5zdC5yZW5kZXIoKTtcblx0ICAgIH1cblx0XG5cdCAgICBpZiAoZmFsc2Up
IHtcblx0ICAgICAgLy8gV2UgYWxsb3cgYXV0by1tb2NrcyB0byBwcm9jZWVkIGFzIGlmIHRoZXkn
cmUgcmV0dXJuaW5nIG51bGwuXG5cdCAgICAgIGlmIChyZW5kZXJlZEVsZW1lbnQgPT09IHVuZGVm
aW5lZCAmJiBpbnN0LnJlbmRlci5faXNNb2NrRnVuY3Rpb24pIHtcblx0ICAgICAgICAvLyBUaGlz
IGlzIHByb2JhYmx5IGJhZCBwcmFjdGljZS4gQ29uc2lkZXIgd2FybmluZyBoZXJlIGFuZFxuXHQg
ICAgICAgIC8vIGRlcHJlY2F0aW5nIHRoaXMgY29udmVuaWVuY2UuXG5cdCAgICAgICAgcmVuZGVy
ZWRFbGVtZW50ID0gbnVsbDtcblx0ICAgICAgfVxuXHQgICAgfVxuXHRcblx0ICAgIHJldHVybiBy
ZW5kZXJlZEVsZW1lbnQ7XG5cdCAgfSxcblx0XG5cdCAgLyoqXG5cdCAgICogQHByaXZhdGVcblx0
ICAgKi9cblx0ICBfcmVuZGVyVmFsaWRhdGVkQ29tcG9uZW50OiBmdW5jdGlvbiAoKSB7XG5cdCAg
ICB2YXIgcmVuZGVyZWRFbGVtZW50O1xuXHQgICAgaWYgKChcInByb2R1Y3Rpb25cIikgIT09ICdw
cm9kdWN0aW9uJyB8fCB0aGlzLl9jb21wb3NpdGVUeXBlICE9PSBDb21wb3NpdGVUeXBlcy5TdGF0
ZWxlc3NGdW5jdGlvbmFsKSB7XG5cdCAgICAgIFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQgPSB0
aGlzO1xuXHQgICAgICB0cnkge1xuXHQgICAgICAgIHJlbmRlcmVkRWxlbWVudCA9IHRoaXMuX3Jl
bmRlclZhbGlkYXRlZENvbXBvbmVudFdpdGhvdXRPd25lck9yQ29udGV4dCgpO1xuXHQgICAgICB9
IGZpbmFsbHkge1xuXHQgICAgICAgIFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQgPSBudWxsO1xu
XHQgICAgICB9XG5cdCAgICB9IGVsc2Uge1xuXHQgICAgICByZW5kZXJlZEVsZW1lbnQgPSB0aGlz
Ll9yZW5kZXJWYWxpZGF0ZWRDb21wb25lbnRXaXRob3V0T3duZXJPckNvbnRleHQoKTtcblx0ICAg
IH1cblx0ICAgICEoXG5cdCAgICAvLyBUT0RPOiBBbiBgaXNWYWxpZE5vZGVgIGZ1bmN0aW9uIHdv
dWxkIHByb2JhYmx5IGJlIG1vcmUgYXBwcm9wcmlhdGVcblx0ICAgIHJlbmRlcmVkRWxlbWVudCA9
PT0gbnVsbCB8fCByZW5kZXJlZEVsZW1lbnQgPT09IGZhbHNlIHx8IFJlYWN0LmlzVmFsaWRFbGVt
ZW50KHJlbmRlcmVkRWxlbWVudCkpID8gIGZhbHNlID8gaW52YXJpYW50KGZhbHNlLCAnJXMucmVu
ZGVyKCk6IEEgdmFsaWQgUmVhY3QgZWxlbWVudCAob3IgbnVsbCkgbXVzdCBiZSByZXR1cm5lZC4g
WW91IG1heSBoYXZlIHJldHVybmVkIHVuZGVmaW5lZCwgYW4gYXJyYXkgb3Igc29tZSBvdGhlciBp
bnZhbGlkIG9iamVjdC4nLCB0aGlzLmdldE5hbWUoKSB8fCAnUmVhY3RDb21wb3NpdGVDb21wb25l
bnQnKSA6IF9wcm9kSW52YXJpYW50KCcxMDknLCB0aGlzLmdldE5hbWUoKSB8fCAnUmVhY3RDb21w
b3NpdGVDb21wb25lbnQnKSA6IHZvaWQgMDtcblx0XG5cdCAgICByZXR1cm4gcmVuZGVyZWRFbGVt
ZW50O1xuXHQgIH0sXG5cdFxuXHQgIC8qKlxuXHQgICAqIExhemlseSBhbGxvY2F0ZXMgdGhlIHJl
ZnMgb2JqZWN0IGFuZCBzdG9yZXMgYGNvbXBvbmVudGAgYXMgYHJlZmAuXG5cdCAgICpcblx0ICAg
KiBAcGFyYW0ge3N0cmluZ30gcmVmIFJlZmVyZW5jZSBuYW1lLlxuXHQgICAqIEBwYXJhbSB7Y29t
cG9uZW50fSBjb21wb25lbnQgQ29tcG9uZW50IHRvIHN0b3JlIGFzIGByZWZgLlxuXHQgICAqIEBm
aW5hbFxuXHQgICAqIEBwcml2YXRlXG5cdCAgICovXG5cdCAgYXR0YWNoUmVmOiBmdW5jdGlvbiAo
cmVmLCBjb21wb25lbnQpIHtcblx0ICAgIHZhciBpbnN0ID0gdGhpcy5nZXRQdWJsaWNJbnN0YW5j
ZSgpO1xuXHQgICAgIShpbnN0ICE9IG51bGwpID8gIGZhbHNlID8gaW52YXJpYW50KGZhbHNlLCAn
U3RhdGVsZXNzIGZ1bmN0aW9uIGNvbXBvbmVudHMgY2Fubm90IGhhdmUgcmVmcy4nKSA6IF9wcm9k
SW52YXJpYW50KCcxMTAnKSA6IHZvaWQgMDtcblx0ICAgIHZhciBwdWJsaWNDb21wb25lbnRJbnN0
YW5jZSA9IGNvbXBvbmVudC5nZXRQdWJsaWNJbnN0YW5jZSgpO1xuXHQgICAgaWYgKGZhbHNlKSB7
XG5cdCAgICAgIHZhciBjb21wb25lbnROYW1lID0gY29tcG9uZW50ICYmIGNvbXBvbmVudC5nZXRO
YW1lID8gY29tcG9uZW50LmdldE5hbWUoKSA6ICdhIGNvbXBvbmVudCc7XG5cdCAgICAgIHByb2Nl
c3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKHB1YmxpY0NvbXBvbmVu
dEluc3RhbmNlICE9IG51bGwgfHwgY29tcG9uZW50Ll9jb21wb3NpdGVUeXBlICE9PSBDb21wb3Np
dGVUeXBlcy5TdGF0ZWxlc3NGdW5jdGlvbmFsLCAnU3RhdGVsZXNzIGZ1bmN0aW9uIGNvbXBvbmVu
dHMgY2Fubm90IGJlIGdpdmVuIHJlZnMgJyArICcoU2VlIHJlZiBcIiVzXCIgaW4gJXMgY3JlYXRl
ZCBieSAlcykuICcgKyAnQXR0ZW1wdHMgdG8gYWNjZXNzIHRoaXMgcmVmIHdpbGwgZmFpbC4nLCBy
ZWYsIGNvbXBvbmVudE5hbWUsIHRoaXMuZ2V0TmFtZSgpKSA6IHZvaWQgMDtcblx0ICAgIH1cblx0
ICAgIHZhciByZWZzID0gaW5zdC5yZWZzID09PSBlbXB0eU9iamVjdCA/IGluc3QucmVmcyA9IHt9
IDogaW5zdC5yZWZzO1xuXHQgICAgcmVmc1tyZWZdID0gcHVibGljQ29tcG9uZW50SW5zdGFuY2U7
XG5cdCAgfSxcblx0XG5cdCAgLyoqXG5cdCAgICogRGV0YWNoZXMgYSByZWZlcmVuY2UgbmFtZS5c
blx0ICAgKlxuXHQgICAqIEBwYXJhbSB7c3RyaW5nfSByZWYgTmFtZSB0byBkZXJlZmVyZW5jZS5c
blx0ICAgKiBAZmluYWxcblx0ICAgKiBAcHJpdmF0ZVxuXHQgICAqL1xuXHQgIGRldGFjaFJlZjog
ZnVuY3Rpb24gKHJlZikge1xuXHQgICAgdmFyIHJlZnMgPSB0aGlzLmdldFB1YmxpY0luc3RhbmNl
KCkucmVmcztcblx0ICAgIGRlbGV0ZSByZWZzW3JlZl07XG5cdCAgfSxcblx0XG5cdCAgLyoqXG5c
dCAgICogR2V0IGEgdGV4dCBkZXNjcmlwdGlvbiBvZiB0aGUgY29tcG9uZW50IHRoYXQgY2FuIGJl
IHVzZWQgdG8gaWRlbnRpZnkgaXRcblx0ICAgKiBpbiBlcnJvciBtZXNzYWdlcy5cblx0ICAgKiBA
cmV0dXJuIHtzdHJpbmd9IFRoZSBuYW1lIG9yIG51bGwuXG5cdCAgICogQGludGVybmFsXG5cdCAg
ICovXG5cdCAgZ2V0TmFtZTogZnVuY3Rpb24gKCkge1xuXHQgICAgdmFyIHR5cGUgPSB0aGlzLl9j
dXJyZW50RWxlbWVudC50eXBlO1xuXHQgICAgdmFyIGNvbnN0cnVjdG9yID0gdGhpcy5faW5zdGFu
Y2UgJiYgdGhpcy5faW5zdGFuY2UuY29uc3RydWN0b3I7XG5cdCAgICByZXR1cm4gdHlwZS5kaXNw
bGF5TmFtZSB8fCBjb25zdHJ1Y3RvciAmJiBjb25zdHJ1Y3Rvci5kaXNwbGF5TmFtZSB8fCB0eXBl
Lm5hbWUgfHwgY29uc3RydWN0b3IgJiYgY29uc3RydWN0b3IubmFtZSB8fCBudWxsO1xuXHQgIH0s
XG5cdFxuXHQgIC8qKlxuXHQgICAqIEdldCB0aGUgcHVibGljbHkgYWNjZXNzaWJsZSByZXByZXNl
bnRhdGlvbiBvZiB0aGlzIGNvbXBvbmVudCAtIGkuZS4gd2hhdFxuXHQgICAqIGlzIGV4cG9zZWQg
YnkgcmVmcyBhbmQgcmV0dXJuZWQgYnkgcmVuZGVyLiBDYW4gYmUgbnVsbCBmb3Igc3RhdGVsZXNz
XG5cdCAgICogY29tcG9uZW50cy5cblx0ICAgKlxuXHQgICAqIEByZXR1cm4ge1JlYWN0Q29tcG9u
ZW50fSB0aGUgcHVibGljIGNvbXBvbmVudCBpbnN0YW5jZS5cblx0ICAgKiBAaW50ZXJuYWxcblx0
ICAgKi9cblx0ICBnZXRQdWJsaWNJbnN0YW5jZTogZnVuY3Rpb24gKCkge1xuXHQgICAgdmFyIGlu
c3QgPSB0aGlzLl9pbnN0YW5jZTtcblx0ICAgIGlmICh0aGlzLl9jb21wb3NpdGVUeXBlID09PSBD
b21wb3NpdGVUeXBlcy5TdGF0ZWxlc3NGdW5jdGlvbmFsKSB7XG5cdCAgICAgIHJldHVybiBudWxs
O1xuXHQgICAgfVxuXHQgICAgcmV0dXJuIGluc3Q7XG5cdCAgfSxcblx0XG5cdCAgLy8gU3R1Ylxu
XHQgIF9pbnN0YW50aWF0ZVJlYWN0Q29tcG9uZW50OiBudWxsXG5cdH07XG5cdFxuXHRtb2R1bGUu
ZXhwb3J0cyA9IFJlYWN0Q29tcG9zaXRlQ29tcG9uZW50O1xuXG4vKioqLyB9LFxuLyogMTM3ICov
XG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtc
blxuXHQvKipcblx0ICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0
ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBs
aWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJ
Q0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4g
YWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0
aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpcblx0ICovXG5cdFxu
XHQvKiBnbG9iYWxzIF9fUkVBQ1RfREVWVE9PTFNfR0xPQkFMX0hPT0tfXyovXG5cdFxuXHQndXNl
IHN0cmljdCc7XG5cdFxuXHR2YXIgUmVhY3RET01Db21wb25lbnRUcmVlID0gX193ZWJwYWNrX3Jl
cXVpcmVfXyg1KTtcblx0dmFyIFJlYWN0RGVmYXVsdEluamVjdGlvbiA9IF9fd2VicGFja19yZXF1
aXJlX18oMTUwKTtcblx0dmFyIFJlYWN0TW91bnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDY3KTtc
blx0dmFyIFJlYWN0UmVjb25jaWxlciA9IF9fd2VicGFja19yZXF1aXJlX18oMTYpO1xuXHR2YXIg
UmVhY3RVcGRhdGVzID0gX193ZWJwYWNrX3JlcXVpcmVfXyg5KTtcblx0dmFyIFJlYWN0VmVyc2lv
biA9IF9fd2VicGFja19yZXF1aXJlX18oMTYzKTtcblx0XG5cdHZhciBmaW5kRE9NTm9kZSA9IF9f
d2VicGFja19yZXF1aXJlX18oMTc5KTtcblx0dmFyIGdldEhvc3RDb21wb25lbnRGcm9tQ29tcG9z
aXRlID0gX193ZWJwYWNrX3JlcXVpcmVfXyg3Mik7XG5cdHZhciByZW5kZXJTdWJ0cmVlSW50b0Nv
bnRhaW5lciA9IF9fd2VicGFja19yZXF1aXJlX18oMTg2KTtcblx0dmFyIHdhcm5pbmcgPSBfX3dl
YnBhY2tfcmVxdWlyZV9fKDIpO1xuXHRcblx0UmVhY3REZWZhdWx0SW5qZWN0aW9uLmluamVjdCgp
O1xuXHRcblx0dmFyIFJlYWN0RE9NID0ge1xuXHQgIGZpbmRET01Ob2RlOiBmaW5kRE9NTm9kZSxc
blx0ICByZW5kZXI6IFJlYWN0TW91bnQucmVuZGVyLFxuXHQgIHVubW91bnRDb21wb25lbnRBdE5v
ZGU6IFJlYWN0TW91bnQudW5tb3VudENvbXBvbmVudEF0Tm9kZSxcblx0ICB2ZXJzaW9uOiBSZWFj
dFZlcnNpb24sXG5cdFxuXHQgIC8qIGVzbGludC1kaXNhYmxlIGNhbWVsY2FzZSAqL1xuXHQgIHVu
c3RhYmxlX2JhdGNoZWRVcGRhdGVzOiBSZWFjdFVwZGF0ZXMuYmF0Y2hlZFVwZGF0ZXMsXG5cdCAg
dW5zdGFibGVfcmVuZGVyU3VidHJlZUludG9Db250YWluZXI6IHJlbmRlclN1YnRyZWVJbnRvQ29u
dGFpbmVyXG5cdCAgLyogZXNsaW50LWVuYWJsZSBjYW1lbGNhc2UgKi9cblx0fTtcblx0XG5cdC8v
IEluamVjdCB0aGUgcnVudGltZSBpbnRvIGEgZGV2dG9vbHMgZ2xvYmFsIGhvb2sgcmVnYXJkbGVz
cyBvZiBicm93c2VyLlxuXHQvLyBBbGxvd3MgZm9yIGRlYnVnZ2luZyB3aGVuIHRoZSBob29rIGlz
IGluamVjdGVkIG9uIHRoZSBwYWdlLlxuXHRpZiAodHlwZW9mIF9fUkVBQ1RfREVWVE9PTFNfR0xP
QkFMX0hPT0tfXyAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIF9fUkVBQ1RfREVWVE9PTFNfR0xP
QkFMX0hPT0tfXy5pbmplY3QgPT09ICdmdW5jdGlvbicpIHtcblx0ICBfX1JFQUNUX0RFVlRPT0xT
X0dMT0JBTF9IT09LX18uaW5qZWN0KHtcblx0ICAgIENvbXBvbmVudFRyZWU6IHtcblx0ICAgICAg
Z2V0Q2xvc2VzdEluc3RhbmNlRnJvbU5vZGU6IFJlYWN0RE9NQ29tcG9uZW50VHJlZS5nZXRDbG9z
ZXN0SW5zdGFuY2VGcm9tTm9kZSxcblx0ICAgICAgZ2V0Tm9kZUZyb21JbnN0YW5jZTogZnVuY3Rp
b24gKGluc3QpIHtcblx0ICAgICAgICAvLyBpbnN0IGlzIGFuIGludGVybmFsIGluc3RhbmNlIChi
dXQgY291bGQgYmUgYSBjb21wb3NpdGUpXG5cdCAgICAgICAgaWYgKGluc3QuX3JlbmRlcmVkQ29t
cG9uZW50KSB7XG5cdCAgICAgICAgICBpbnN0ID0gZ2V0SG9zdENvbXBvbmVudEZyb21Db21wb3Np
dGUoaW5zdCk7XG5cdCAgICAgICAgfVxuXHQgICAgICAgIGlmIChpbnN0KSB7XG5cdCAgICAgICAg
ICByZXR1cm4gUmVhY3RET01Db21wb25lbnRUcmVlLmdldE5vZGVGcm9tSW5zdGFuY2UoaW5zdCk7
XG5cdCAgICAgICAgfSBlbHNlIHtcblx0ICAgICAgICAgIHJldHVybiBudWxsO1xuXHQgICAgICAg
IH1cblx0ICAgICAgfVxuXHQgICAgfSxcblx0ICAgIE1vdW50OiBSZWFjdE1vdW50LFxuXHQgICAg
UmVjb25jaWxlcjogUmVhY3RSZWNvbmNpbGVyXG5cdCAgfSk7XG5cdH1cblx0XG5cdGlmIChmYWxz
ZSkge1xuXHQgIHZhciBFeGVjdXRpb25FbnZpcm9ubWVudCA9IHJlcXVpcmUoJ2ZianMvbGliL0V4
ZWN1dGlvbkVudmlyb25tZW50Jyk7XG5cdCAgaWYgKEV4ZWN1dGlvbkVudmlyb25tZW50LmNhblVz
ZURPTSAmJiB3aW5kb3cudG9wID09PSB3aW5kb3cuc2VsZikge1xuXHQgICAgLy8gRmlyc3QgY2hl
Y2sgaWYgZGV2dG9vbHMgaXMgbm90IGluc3RhbGxlZFxuXHQgICAgaWYgKHR5cGVvZiBfX1JFQUNU
X0RFVlRPT0xTX0dMT0JBTF9IT09LX18gPT09ICd1bmRlZmluZWQnKSB7XG5cdCAgICAgIC8vIElm
IHdlJ3JlIGluIENocm9tZSBvciBGaXJlZm94LCBwcm92aWRlIGEgZG93bmxvYWQgbGluayBpZiBu
b3QgaW5zdGFsbGVkLlxuXHQgICAgICBpZiAobmF2aWdhdG9yLnVzZXJBZ2VudC5pbmRleE9mKCdD
aHJvbWUnKSA+IC0xICYmIG5hdmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZignRWRnZScpID09PSAt
MSB8fCBuYXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YoJ0ZpcmVmb3gnKSA+IC0xKSB7XG5cdCAg
ICAgICAgLy8gRmlyZWZveCBkb2VzIG5vdCBoYXZlIHRoZSBpc3N1ZSB3aXRoIGRldnRvb2xzIGxv
YWRlZCBvdmVyIGZpbGU6Ly9cblx0ICAgICAgICB2YXIgc2hvd0ZpbGVVcmxNZXNzYWdlID0gd2lu
ZG93LmxvY2F0aW9uLnByb3RvY29sLmluZGV4T2YoJ2h0dHAnKSA9PT0gLTEgJiYgbmF2aWdhdG9y
LnVzZXJBZ2VudC5pbmRleE9mKCdGaXJlZm94JykgPT09IC0xO1xuXHQgICAgICAgIGNvbnNvbGUu
ZGVidWcoJ0Rvd25sb2FkIHRoZSBSZWFjdCBEZXZUb29scyAnICsgKHNob3dGaWxlVXJsTWVzc2Fn
ZSA/ICdhbmQgdXNlIGFuIEhUVFAgc2VydmVyIChpbnN0ZWFkIG9mIGEgZmlsZTogVVJMKSAnIDog
JycpICsgJ2ZvciBhIGJldHRlciBkZXZlbG9wbWVudCBleHBlcmllbmNlOiAnICsgJ2h0dHBzOi8v
ZmIubWUvcmVhY3QtZGV2dG9vbHMnKTtcblx0ICAgICAgfVxuXHQgICAgfVxuXHRcblx0ICAgIHZh
ciB0ZXN0RnVuYyA9IGZ1bmN0aW9uIHRlc3RGbigpIHt9O1xuXHQgICAgcHJvY2Vzcy5lbnYuTk9E
RV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoKHRlc3RGdW5jLm5hbWUgfHwgdGVzdEZ1
bmMudG9TdHJpbmcoKSkuaW5kZXhPZigndGVzdEZuJykgIT09IC0xLCBcIkl0IGxvb2tzIGxpa2Ug
eW91J3JlIHVzaW5nIGEgbWluaWZpZWQgY29weSBvZiB0aGUgZGV2ZWxvcG1lbnQgYnVpbGQgXCIg
KyAnb2YgUmVhY3QuIFdoZW4gZGVwbG95aW5nIFJlYWN0IGFwcHMgdG8gcHJvZHVjdGlvbiwgbWFr
ZSBzdXJlIHRvIHVzZSAnICsgJ3RoZSBwcm9kdWN0aW9uIGJ1aWxkIHdoaWNoIHNraXBzIGRldmVs
b3BtZW50IHdhcm5pbmdzIGFuZCBpcyBmYXN0ZXIuICcgKyAnU2VlIGh0dHBzOi8vZmIubWUvcmVh
Y3QtbWluaWZpY2F0aW9uIGZvciBtb3JlIGRldGFpbHMuJykgOiB2b2lkIDA7XG5cdFxuXHQgICAg
Ly8gSWYgd2UncmUgaW4gSUU4LCBjaGVjayB0byBzZWUgaWYgd2UgYXJlIGluIGNvbXBhdGliaWxp
dHkgbW9kZSBhbmQgcHJvdmlkZVxuXHQgICAgLy8gaW5mb3JtYXRpb24gb24gcHJldmVudGluZyBj
b21wYXRpYmlsaXR5IG1vZGVcblx0ICAgIHZhciBpZUNvbXBhdGliaWxpdHlNb2RlID0gZG9jdW1l
bnQuZG9jdW1lbnRNb2RlICYmIGRvY3VtZW50LmRvY3VtZW50TW9kZSA8IDg7XG5cdFxuXHQgICAg
cHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoIWllQ29tcGF0
aWJpbGl0eU1vZGUsICdJbnRlcm5ldCBFeHBsb3JlciBpcyBydW5uaW5nIGluIGNvbXBhdGliaWxp
dHkgbW9kZTsgcGxlYXNlIGFkZCB0aGUgJyArICdmb2xsb3dpbmcgdGFnIHRvIHlvdXIgSFRNTCB0
byBwcmV2ZW50IHRoaXMgZnJvbSBoYXBwZW5pbmc6ICcgKyAnPG1ldGEgaHR0cC1lcXVpdj1cIlgt
VUEtQ29tcGF0aWJsZVwiIGNvbnRlbnQ9XCJJRT1lZGdlXCIgLz4nKSA6IHZvaWQgMDtcblx0XG5c
dCAgICB2YXIgZXhwZWN0ZWRGZWF0dXJlcyA9IFtcblx0ICAgIC8vIHNoaW1zXG5cdCAgICBBcnJh
eS5pc0FycmF5LCBBcnJheS5wcm90b3R5cGUuZXZlcnksIEFycmF5LnByb3RvdHlwZS5mb3JFYWNo
LCBBcnJheS5wcm90b3R5cGUuaW5kZXhPZiwgQXJyYXkucHJvdG90eXBlLm1hcCwgRGF0ZS5ub3cs
IEZ1bmN0aW9uLnByb3RvdHlwZS5iaW5kLCBPYmplY3Qua2V5cywgU3RyaW5nLnByb3RvdHlwZS50
cmltXTtcblx0XG5cdCAgICBmb3IgKHZhciBpID0gMDsgaSA8IGV4cGVjdGVkRmVhdHVyZXMubGVu
Z3RoOyBpKyspIHtcblx0ICAgICAgaWYgKCFleHBlY3RlZEZlYXR1cmVzW2ldKSB7XG5cdCAgICAg
ICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2Us
ICdPbmUgb3IgbW9yZSBFUzUgc2hpbXMgZXhwZWN0ZWQgYnkgUmVhY3QgYXJlIG5vdCBhdmFpbGFi
bGU6ICcgKyAnaHR0cHM6Ly9mYi5tZS9yZWFjdC13YXJuaW5nLXBvbHlmaWxscycpIDogdm9pZCAw
O1xuXHQgICAgICAgIGJyZWFrO1xuXHQgICAgICB9XG5cdCAgICB9XG5cdCAgfVxuXHR9XG5cdFxu
XHRpZiAoZmFsc2UpIHtcblx0ICB2YXIgUmVhY3RJbnN0cnVtZW50YXRpb24gPSByZXF1aXJlKCcu
L1JlYWN0SW5zdHJ1bWVudGF0aW9uJyk7XG5cdCAgdmFyIFJlYWN0RE9NVW5rbm93blByb3BlcnR5
SG9vayA9IHJlcXVpcmUoJy4vUmVhY3RET01Vbmtub3duUHJvcGVydHlIb29rJyk7XG5cdCAgdmFy
IFJlYWN0RE9NTnVsbElucHV0VmFsdWVQcm9wSG9vayA9IHJlcXVpcmUoJy4vUmVhY3RET01OdWxs
SW5wdXRWYWx1ZVByb3BIb29rJyk7XG5cdCAgdmFyIFJlYWN0RE9NSW52YWxpZEFSSUFIb29rID0g
cmVxdWlyZSgnLi9SZWFjdERPTUludmFsaWRBUklBSG9vaycpO1xuXHRcblx0ICBSZWFjdEluc3Ry
dW1lbnRhdGlvbi5kZWJ1Z1Rvb2wuYWRkSG9vayhSZWFjdERPTVVua25vd25Qcm9wZXJ0eUhvb2sp
O1xuXHQgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5hZGRIb29rKFJlYWN0RE9NTnVs
bElucHV0VmFsdWVQcm9wSG9vayk7XG5cdCAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29s
LmFkZEhvb2soUmVhY3RET01JbnZhbGlkQVJJQUhvb2spO1xuXHR9XG5cdFxuXHRtb2R1bGUuZXhw
b3J0cyA9IFJlYWN0RE9NO1xuXG4vKioqLyB9LFxuLyogMTM4ICovXG4vKioqLyBmdW5jdGlvbiht
b2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvKipcblx0ICogQ29w
eXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNl
cnZlZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUg
QlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUg
cm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxu
XHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGlu
IHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpcblx0ICovXG5cdFxuXHQvKiBnbG9iYWwgaGFzT3du
UHJvcGVydHk6dHJ1ZSAqL1xuXHRcblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0dmFyIF9wcm9kSW52
YXJpYW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXygzKSxcblx0ICAgIF9hc3NpZ24gPSBfX3dlYnBh
Y2tfcmVxdWlyZV9fKDQpO1xuXHRcblx0dmFyIEF1dG9Gb2N1c1V0aWxzID0gX193ZWJwYWNrX3Jl
cXVpcmVfXygxMjUpO1xuXHR2YXIgQ1NTUHJvcGVydHlPcGVyYXRpb25zID0gX193ZWJwYWNrX3Jl
cXVpcmVfXygxMjcpO1xuXHR2YXIgRE9NTGF6eVRyZWUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE0
KTtcblx0dmFyIERPTU5hbWVzcGFjZXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDM1KTtcblx0dmFy
IERPTVByb3BlcnR5ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNSk7XG5cdHZhciBET01Qcm9wZXJ0
eU9wZXJhdGlvbnMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDYwKTtcblx0dmFyIEV2ZW50UGx1Z2lu
SHViID0gX193ZWJwYWNrX3JlcXVpcmVfXygxOSk7XG5cdHZhciBFdmVudFBsdWdpblJlZ2lzdHJ5
ID0gX193ZWJwYWNrX3JlcXVpcmVfXygzNik7XG5cdHZhciBSZWFjdEJyb3dzZXJFdmVudEVtaXR0
ZXIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDI1KTtcblx0dmFyIFJlYWN0RE9NQ29tcG9uZW50Rmxh
Z3MgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDYxKTtcblx0dmFyIFJlYWN0RE9NQ29tcG9uZW50VHJl
ZSA9IF9fd2VicGFja19yZXF1aXJlX18oNSk7XG5cdHZhciBSZWFjdERPTUlucHV0ID0gX193ZWJw
YWNrX3JlcXVpcmVfXygxNDMpO1xuXHR2YXIgUmVhY3RET01PcHRpb24gPSBfX3dlYnBhY2tfcmVx
dWlyZV9fKDE0NCk7XG5cdHZhciBSZWFjdERPTVNlbGVjdCA9IF9fd2VicGFja19yZXF1aXJlX18o
NjIpO1xuXHR2YXIgUmVhY3RET01UZXh0YXJlYSA9IF9fd2VicGFja19yZXF1aXJlX18oMTQ3KTtc
blx0dmFyIFJlYWN0SW5zdHJ1bWVudGF0aW9uID0gX193ZWJwYWNrX3JlcXVpcmVfXyg4KTtcblx0
dmFyIFJlYWN0TXVsdGlDaGlsZCA9IF9fd2VicGFja19yZXF1aXJlX18oMTU2KTtcblx0dmFyIFJl
YWN0U2VydmVyUmVuZGVyaW5nVHJhbnNhY3Rpb24gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE2MSk7
XG5cdFxuXHR2YXIgZW1wdHlGdW5jdGlvbiA9IF9fd2VicGFja19yZXF1aXJlX18oNyk7XG5cdHZh
ciBlc2NhcGVUZXh0Q29udGVudEZvckJyb3dzZXIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDI4KTtc
blx0dmFyIGludmFyaWFudCA9IF9fd2VicGFja19yZXF1aXJlX18oMSk7XG5cdHZhciBpc0V2ZW50
U3VwcG9ydGVkID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0Nyk7XG5cdHZhciBzaGFsbG93RXF1YWwg
PSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMyKTtcblx0dmFyIGlucHV0VmFsdWVUcmFja2luZyA9IF9f
d2VicGFja19yZXF1aXJlX18oNzQpO1xuXHR2YXIgdmFsaWRhdGVET01OZXN0aW5nID0gX193ZWJw
YWNrX3JlcXVpcmVfXyg0OSk7XG5cdHZhciB3YXJuaW5nID0gX193ZWJwYWNrX3JlcXVpcmVfXygy
KTtcblx0XG5cdHZhciBGbGFncyA9IFJlYWN0RE9NQ29tcG9uZW50RmxhZ3M7XG5cdHZhciBkZWxl
dGVMaXN0ZW5lciA9IEV2ZW50UGx1Z2luSHViLmRlbGV0ZUxpc3RlbmVyO1xuXHR2YXIgZ2V0Tm9k
ZSA9IFJlYWN0RE9NQ29tcG9uZW50VHJlZS5nZXROb2RlRnJvbUluc3RhbmNlO1xuXHR2YXIgbGlz
dGVuVG8gPSBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIubGlzdGVuVG87XG5cdHZhciByZWdpc3Ry
YXRpb25OYW1lTW9kdWxlcyA9IEV2ZW50UGx1Z2luUmVnaXN0cnkucmVnaXN0cmF0aW9uTmFtZU1v
ZHVsZXM7XG5cdFxuXHQvLyBGb3IgcXVpY2tseSBtYXRjaGluZyBjaGlsZHJlbiB0eXBlLCB0byB0
ZXN0IGlmIGNhbiBiZSB0cmVhdGVkIGFzIGNvbnRlbnQuXG5cdHZhciBDT05URU5UX1RZUEVTID0g
eyBzdHJpbmc6IHRydWUsIG51bWJlcjogdHJ1ZSB9O1xuXHRcblx0dmFyIFNUWUxFID0gJ3N0eWxl
Jztcblx0dmFyIEhUTUwgPSAnX19odG1sJztcblx0dmFyIFJFU0VSVkVEX1BST1BTID0ge1xuXHQg
IGNoaWxkcmVuOiBudWxsLFxuXHQgIGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MOiBudWxsLFxuXHQg
IHN1cHByZXNzQ29udGVudEVkaXRhYmxlV2FybmluZzogbnVsbFxuXHR9O1xuXHRcblx0Ly8gTm9k
ZSB0eXBlIGZvciBkb2N1bWVudCBmcmFnbWVudHMgKE5vZGUuRE9DVU1FTlRfRlJBR01FTlRfTk9E
RSkuXG5cdHZhciBET0NfRlJBR01FTlRfVFlQRSA9IDExO1xuXHRcblx0ZnVuY3Rpb24gZ2V0RGVj
bGFyYXRpb25FcnJvckFkZGVuZHVtKGludGVybmFsSW5zdGFuY2UpIHtcblx0ICBpZiAoaW50ZXJu
YWxJbnN0YW5jZSkge1xuXHQgICAgdmFyIG93bmVyID0gaW50ZXJuYWxJbnN0YW5jZS5fY3VycmVu
dEVsZW1lbnQuX293bmVyIHx8IG51bGw7XG5cdCAgICBpZiAob3duZXIpIHtcblx0ICAgICAgdmFy
IG5hbWUgPSBvd25lci5nZXROYW1lKCk7XG5cdCAgICAgIGlmIChuYW1lKSB7XG5cdCAgICAgICAg
cmV0dXJuICcgVGhpcyBET00gbm9kZSB3YXMgcmVuZGVyZWQgYnkgYCcgKyBuYW1lICsgJ2AuJztc
blx0ICAgICAgfVxuXHQgICAgfVxuXHQgIH1cblx0ICByZXR1cm4gJyc7XG5cdH1cblx0XG5cdGZ1
bmN0aW9uIGZyaWVuZGx5U3RyaW5naWZ5KG9iaikge1xuXHQgIGlmICh0eXBlb2Ygb2JqID09PSAn
b2JqZWN0Jykge1xuXHQgICAgaWYgKEFycmF5LmlzQXJyYXkob2JqKSkge1xuXHQgICAgICByZXR1
cm4gJ1snICsgb2JqLm1hcChmcmllbmRseVN0cmluZ2lmeSkuam9pbignLCAnKSArICddJztcblx0
ICAgIH0gZWxzZSB7XG5cdCAgICAgIHZhciBwYWlycyA9IFtdO1xuXHQgICAgICBmb3IgKHZhciBr
ZXkgaW4gb2JqKSB7XG5cdCAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVy
dHkuY2FsbChvYmosIGtleSkpIHtcblx0ICAgICAgICAgIHZhciBrZXlFc2NhcGVkID0gL15bYS16
JF9dW1xcdyRfXSokL2kudGVzdChrZXkpID8ga2V5IDogSlNPTi5zdHJpbmdpZnkoa2V5KTtcblx0
ICAgICAgICAgIHBhaXJzLnB1c2goa2V5RXNjYXBlZCArICc6ICcgKyBmcmllbmRseVN0cmluZ2lm
eShvYmpba2V5XSkpO1xuXHQgICAgICAgIH1cblx0ICAgICAgfVxuXHQgICAgICByZXR1cm4gJ3sn
ICsgcGFpcnMuam9pbignLCAnKSArICd9Jztcblx0ICAgIH1cblx0ICB9IGVsc2UgaWYgKHR5cGVv
ZiBvYmogPT09ICdzdHJpbmcnKSB7XG5cdCAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkob2JqKTtc
blx0ICB9IGVsc2UgaWYgKHR5cGVvZiBvYmogPT09ICdmdW5jdGlvbicpIHtcblx0ICAgIHJldHVy
biAnW2Z1bmN0aW9uIG9iamVjdF0nO1xuXHQgIH1cblx0ICAvLyBEaWZmZXJzIGZyb20gSlNPTi5z
dHJpbmdpZnkgaW4gdGhhdCB1bmRlZmluZWQgYmVjYXVzZSB1bmRlZmluZWQgYW5kIHRoYXRcblx0
ICAvLyBpbmYgYW5kIG5hbiBkb24ndCBiZWNvbWUgbnVsbFxuXHQgIHJldHVybiBTdHJpbmcob2Jq
KTtcblx0fVxuXHRcblx0dmFyIHN0eWxlTXV0YXRpb25XYXJuaW5nID0ge307XG5cdFxuXHRmdW5j
dGlvbiBjaGVja0FuZFdhcm5Gb3JNdXRhdGVkU3R5bGUoc3R5bGUxLCBzdHlsZTIsIGNvbXBvbmVu
dCkge1xuXHQgIGlmIChzdHlsZTEgPT0gbnVsbCB8fCBzdHlsZTIgPT0gbnVsbCkge1xuXHQgICAg
cmV0dXJuO1xuXHQgIH1cblx0ICBpZiAoc2hhbGxvd0VxdWFsKHN0eWxlMSwgc3R5bGUyKSkge1xu
XHQgICAgcmV0dXJuO1xuXHQgIH1cblx0XG5cdCAgdmFyIGNvbXBvbmVudE5hbWUgPSBjb21wb25l
bnQuX3RhZztcblx0ICB2YXIgb3duZXIgPSBjb21wb25lbnQuX2N1cnJlbnRFbGVtZW50Ll9vd25l
cjtcblx0ICB2YXIgb3duZXJOYW1lO1xuXHQgIGlmIChvd25lcikge1xuXHQgICAgb3duZXJOYW1l
ID0gb3duZXIuZ2V0TmFtZSgpO1xuXHQgIH1cblx0XG5cdCAgdmFyIGhhc2ggPSBvd25lck5hbWUg
KyAnfCcgKyBjb21wb25lbnROYW1lO1xuXHRcblx0ICBpZiAoc3R5bGVNdXRhdGlvbldhcm5pbmcu
aGFzT3duUHJvcGVydHkoaGFzaCkpIHtcblx0ICAgIHJldHVybjtcblx0ICB9XG5cdFxuXHQgIHN0
eWxlTXV0YXRpb25XYXJuaW5nW2hhc2hdID0gdHJ1ZTtcblx0XG5cdCAgIGZhbHNlID8gd2Fybmlu
ZyhmYWxzZSwgJ2Alc2Agd2FzIHBhc3NlZCBhIHN0eWxlIG9iamVjdCB0aGF0IGhhcyBwcmV2aW91
c2x5IGJlZW4gbXV0YXRlZC4gJyArICdNdXRhdGluZyBgc3R5bGVgIGlzIGRlcHJlY2F0ZWQuIENv
bnNpZGVyIGNsb25pbmcgaXQgYmVmb3JlaGFuZC4gQ2hlY2sgJyArICd0aGUgYHJlbmRlcmAgJXMu
IFByZXZpb3VzIHN0eWxlOiAlcy4gTXV0YXRlZCBzdHlsZTogJXMuJywgY29tcG9uZW50TmFtZSwg
b3duZXIgPyAnb2YgYCcgKyBvd25lck5hbWUgKyAnYCcgOiAndXNpbmcgPCcgKyBjb21wb25lbnRO
YW1lICsgJz4nLCBmcmllbmRseVN0cmluZ2lmeShzdHlsZTEpLCBmcmllbmRseVN0cmluZ2lmeShz
dHlsZTIpKSA6IHZvaWQgMDtcblx0fVxuXHRcblx0LyoqXG5cdCAqIEBwYXJhbSB7b2JqZWN0fSBj
b21wb25lbnRcblx0ICogQHBhcmFtIHs/b2JqZWN0fSBwcm9wc1xuXHQgKi9cblx0ZnVuY3Rpb24g
YXNzZXJ0VmFsaWRQcm9wcyhjb21wb25lbnQsIHByb3BzKSB7XG5cdCAgaWYgKCFwcm9wcykge1xu
XHQgICAgcmV0dXJuO1xuXHQgIH1cblx0ICAvLyBOb3RlIHRoZSB1c2Ugb2YgYD09YCB3aGljaCBj
aGVja3MgZm9yIG51bGwgb3IgdW5kZWZpbmVkLlxuXHQgIGlmICh2b2lkRWxlbWVudFRhZ3NbY29t
cG9uZW50Ll90YWddKSB7XG5cdCAgICAhKHByb3BzLmNoaWxkcmVuID09IG51bGwgJiYgcHJvcHMu
ZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwgPT0gbnVsbCkgPyAgZmFsc2UgPyBpbnZhcmlhbnQoZmFs
c2UsICclcyBpcyBhIHZvaWQgZWxlbWVudCB0YWcgYW5kIG11c3QgbmVpdGhlciBoYXZlIGBjaGls
ZHJlbmAgbm9yIHVzZSBgZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUxgLiVzJywgY29tcG9uZW50Ll90
YWcsIGNvbXBvbmVudC5fY3VycmVudEVsZW1lbnQuX293bmVyID8gJyBDaGVjayB0aGUgcmVuZGVy
IG1ldGhvZCBvZiAnICsgY29tcG9uZW50Ll9jdXJyZW50RWxlbWVudC5fb3duZXIuZ2V0TmFtZSgp
ICsgJy4nIDogJycpIDogX3Byb2RJbnZhcmlhbnQoJzEzNycsIGNvbXBvbmVudC5fdGFnLCBjb21w
b25lbnQuX2N1cnJlbnRFbGVtZW50Ll9vd25lciA/ICcgQ2hlY2sgdGhlIHJlbmRlciBtZXRob2Qg
b2YgJyArIGNvbXBvbmVudC5fY3VycmVudEVsZW1lbnQuX293bmVyLmdldE5hbWUoKSArICcuJyA6
ICcnKSA6IHZvaWQgMDtcblx0ICB9XG5cdCAgaWYgKHByb3BzLmRhbmdlcm91c2x5U2V0SW5uZXJI
VE1MICE9IG51bGwpIHtcblx0ICAgICEocHJvcHMuY2hpbGRyZW4gPT0gbnVsbCkgPyAgZmFsc2Ug
PyBpbnZhcmlhbnQoZmFsc2UsICdDYW4gb25seSBzZXQgb25lIG9mIGBjaGlsZHJlbmAgb3IgYHBy
b3BzLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MYC4nKSA6IF9wcm9kSW52YXJpYW50KCc2MCcpIDog
dm9pZCAwO1xuXHQgICAgISh0eXBlb2YgcHJvcHMuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwgPT09
ICdvYmplY3QnICYmIEhUTUwgaW4gcHJvcHMuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwpID8gIGZh
bHNlID8gaW52YXJpYW50KGZhbHNlLCAnYHByb3BzLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MYCBt
dXN0IGJlIGluIHRoZSBmb3JtIGB7X19odG1sOiAuLi59YC4gUGxlYXNlIHZpc2l0IGh0dHBzOi8v
ZmIubWUvcmVhY3QtaW52YXJpYW50LWRhbmdlcm91c2x5LXNldC1pbm5lci1odG1sIGZvciBtb3Jl
IGluZm9ybWF0aW9uLicpIDogX3Byb2RJbnZhcmlhbnQoJzYxJykgOiB2b2lkIDA7XG5cdCAgfVxu
XHQgIGlmIChmYWxzZSkge1xuXHQgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0
aW9uJyA/IHdhcm5pbmcocHJvcHMuaW5uZXJIVE1MID09IG51bGwsICdEaXJlY3RseSBzZXR0aW5n
IHByb3BlcnR5IGBpbm5lckhUTUxgIGlzIG5vdCBwZXJtaXR0ZWQuICcgKyAnRm9yIG1vcmUgaW5m
b3JtYXRpb24sIGxvb2t1cCBkb2N1bWVudGF0aW9uIG9uIGBkYW5nZXJvdXNseVNldElubmVySFRN
TGAuJykgOiB2b2lkIDA7XG5cdCAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rp
b24nID8gd2FybmluZyhwcm9wcy5zdXBwcmVzc0NvbnRlbnRFZGl0YWJsZVdhcm5pbmcgfHwgIXBy
b3BzLmNvbnRlbnRFZGl0YWJsZSB8fCBwcm9wcy5jaGlsZHJlbiA9PSBudWxsLCAnQSBjb21wb25l
bnQgaXMgYGNvbnRlbnRFZGl0YWJsZWAgYW5kIGNvbnRhaW5zIGBjaGlsZHJlbmAgbWFuYWdlZCBi
eSAnICsgJ1JlYWN0LiBJdCBpcyBub3cgeW91ciByZXNwb25zaWJpbGl0eSB0byBndWFyYW50ZWUg
dGhhdCBub25lIG9mICcgKyAndGhvc2Ugbm9kZXMgYXJlIHVuZXhwZWN0ZWRseSBtb2RpZmllZCBv
ciBkdXBsaWNhdGVkLiBUaGlzIGlzICcgKyAncHJvYmFibHkgbm90IGludGVudGlvbmFsLicpIDog
dm9pZCAwO1xuXHQgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdh
cm5pbmcocHJvcHMub25Gb2N1c0luID09IG51bGwgJiYgcHJvcHMub25Gb2N1c091dCA9PSBudWxs
LCAnUmVhY3QgdXNlcyBvbkZvY3VzIGFuZCBvbkJsdXIgaW5zdGVhZCBvZiBvbkZvY3VzSW4gYW5k
IG9uRm9jdXNPdXQuICcgKyAnQWxsIFJlYWN0IGV2ZW50cyBhcmUgbm9ybWFsaXplZCB0byBidWJi
bGUsIHNvIG9uRm9jdXNJbiBhbmQgb25Gb2N1c091dCAnICsgJ2FyZSBub3QgbmVlZGVkL3N1cHBv
cnRlZCBieSBSZWFjdC4nKSA6IHZvaWQgMDtcblx0ICB9XG5cdCAgIShwcm9wcy5zdHlsZSA9PSBu
dWxsIHx8IHR5cGVvZiBwcm9wcy5zdHlsZSA9PT0gJ29iamVjdCcpID8gIGZhbHNlID8gaW52YXJp
YW50KGZhbHNlLCAnVGhlIGBzdHlsZWAgcHJvcCBleHBlY3RzIGEgbWFwcGluZyBmcm9tIHN0eWxl
IHByb3BlcnRpZXMgdG8gdmFsdWVzLCBub3QgYSBzdHJpbmcuIEZvciBleGFtcGxlLCBzdHlsZT17
e21hcmdpblJpZ2h0OiBzcGFjaW5nICsgXFwnZW1cXCd9fSB3aGVuIHVzaW5nIEpTWC4lcycsIGdl
dERlY2xhcmF0aW9uRXJyb3JBZGRlbmR1bShjb21wb25lbnQpKSA6IF9wcm9kSW52YXJpYW50KCc2
MicsIGdldERlY2xhcmF0aW9uRXJyb3JBZGRlbmR1bShjb21wb25lbnQpKSA6IHZvaWQgMDtcblx0
fVxuXHRcblx0ZnVuY3Rpb24gZW5xdWV1ZVB1dExpc3RlbmVyKGluc3QsIHJlZ2lzdHJhdGlvbk5h
bWUsIGxpc3RlbmVyLCB0cmFuc2FjdGlvbikge1xuXHQgIGlmICh0cmFuc2FjdGlvbiBpbnN0YW5j
ZW9mIFJlYWN0U2VydmVyUmVuZGVyaW5nVHJhbnNhY3Rpb24pIHtcblx0ICAgIHJldHVybjtcblx0
ICB9XG5cdCAgaWYgKGZhbHNlKSB7XG5cdCAgICAvLyBJRTggaGFzIG5vIEFQSSBmb3IgZXZlbnQg
Y2FwdHVyaW5nIGFuZCB0aGUgYG9uU2Nyb2xsYCBldmVudCBkb2Vzbid0XG5cdCAgICAvLyBidWJi
bGUuXG5cdCAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2Fybmlu
ZyhyZWdpc3RyYXRpb25OYW1lICE9PSAnb25TY3JvbGwnIHx8IGlzRXZlbnRTdXBwb3J0ZWQoJ3Nj
cm9sbCcsIHRydWUpLCBcIlRoaXMgYnJvd3NlciBkb2Vzbid0IHN1cHBvcnQgdGhlIGBvblNjcm9s
bGAgZXZlbnRcIikgOiB2b2lkIDA7XG5cdCAgfVxuXHQgIHZhciBjb250YWluZXJJbmZvID0gaW5z
dC5faG9zdENvbnRhaW5lckluZm87XG5cdCAgdmFyIGlzRG9jdW1lbnRGcmFnbWVudCA9IGNvbnRh
aW5lckluZm8uX25vZGUgJiYgY29udGFpbmVySW5mby5fbm9kZS5ub2RlVHlwZSA9PT0gRE9DX0ZS
QUdNRU5UX1RZUEU7XG5cdCAgdmFyIGRvYyA9IGlzRG9jdW1lbnRGcmFnbWVudCA/IGNvbnRhaW5l
ckluZm8uX25vZGUgOiBjb250YWluZXJJbmZvLl9vd25lckRvY3VtZW50O1xuXHQgIGxpc3RlblRv
KHJlZ2lzdHJhdGlvbk5hbWUsIGRvYyk7XG5cdCAgdHJhbnNhY3Rpb24uZ2V0UmVhY3RNb3VudFJl
YWR5KCkuZW5xdWV1ZShwdXRMaXN0ZW5lciwge1xuXHQgICAgaW5zdDogaW5zdCxcblx0ICAgIHJl
Z2lzdHJhdGlvbk5hbWU6IHJlZ2lzdHJhdGlvbk5hbWUsXG5cdCAgICBsaXN0ZW5lcjogbGlzdGVu
ZXJcblx0ICB9KTtcblx0fVxuXHRcblx0ZnVuY3Rpb24gcHV0TGlzdGVuZXIoKSB7XG5cdCAgdmFy
IGxpc3RlbmVyVG9QdXQgPSB0aGlzO1xuXHQgIEV2ZW50UGx1Z2luSHViLnB1dExpc3RlbmVyKGxp
c3RlbmVyVG9QdXQuaW5zdCwgbGlzdGVuZXJUb1B1dC5yZWdpc3RyYXRpb25OYW1lLCBsaXN0ZW5l
clRvUHV0Lmxpc3RlbmVyKTtcblx0fVxuXHRcblx0ZnVuY3Rpb24gaW5wdXRQb3N0TW91bnQoKSB7
XG5cdCAgdmFyIGluc3QgPSB0aGlzO1xuXHQgIFJlYWN0RE9NSW5wdXQucG9zdE1vdW50V3JhcHBl
cihpbnN0KTtcblx0fVxuXHRcblx0ZnVuY3Rpb24gdGV4dGFyZWFQb3N0TW91bnQoKSB7XG5cdCAg
dmFyIGluc3QgPSB0aGlzO1xuXHQgIFJlYWN0RE9NVGV4dGFyZWEucG9zdE1vdW50V3JhcHBlcihp
bnN0KTtcblx0fVxuXHRcblx0ZnVuY3Rpb24gb3B0aW9uUG9zdE1vdW50KCkge1xuXHQgIHZhciBp
bnN0ID0gdGhpcztcblx0ICBSZWFjdERPTU9wdGlvbi5wb3N0TW91bnRXcmFwcGVyKGluc3QpO1xu
XHR9XG5cdFxuXHR2YXIgc2V0QW5kVmFsaWRhdGVDb250ZW50Q2hpbGREZXYgPSBlbXB0eUZ1bmN0
aW9uO1xuXHRpZiAoZmFsc2UpIHtcblx0ICBzZXRBbmRWYWxpZGF0ZUNvbnRlbnRDaGlsZERldiA9
IGZ1bmN0aW9uIChjb250ZW50KSB7XG5cdCAgICB2YXIgaGFzRXhpc3RpbmdDb250ZW50ID0gdGhp
cy5fY29udGVudERlYnVnSUQgIT0gbnVsbDtcblx0ICAgIHZhciBkZWJ1Z0lEID0gdGhpcy5fZGVi
dWdJRDtcblx0ICAgIC8vIFRoaXMgSUQgcmVwcmVzZW50cyB0aGUgaW5saW5lZCBjaGlsZCB0aGF0
IGhhcyBubyBiYWNraW5nIGluc3RhbmNlOlxuXHQgICAgdmFyIGNvbnRlbnREZWJ1Z0lEID0gLWRl
YnVnSUQ7XG5cdFxuXHQgICAgaWYgKGNvbnRlbnQgPT0gbnVsbCkge1xuXHQgICAgICBpZiAoaGFz
RXhpc3RpbmdDb250ZW50KSB7XG5cdCAgICAgICAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdU
b29sLm9uVW5tb3VudENvbXBvbmVudCh0aGlzLl9jb250ZW50RGVidWdJRCk7XG5cdCAgICAgIH1c
blx0ICAgICAgdGhpcy5fY29udGVudERlYnVnSUQgPSBudWxsO1xuXHQgICAgICByZXR1cm47XG5c
dCAgICB9XG5cdFxuXHQgICAgdmFsaWRhdGVET01OZXN0aW5nKG51bGwsIFN0cmluZyhjb250ZW50
KSwgdGhpcywgdGhpcy5fYW5jZXN0b3JJbmZvKTtcblx0ICAgIHRoaXMuX2NvbnRlbnREZWJ1Z0lE
ID0gY29udGVudERlYnVnSUQ7XG5cdCAgICBpZiAoaGFzRXhpc3RpbmdDb250ZW50KSB7XG5cdCAg
ICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vbkJlZm9yZVVwZGF0ZUNvbXBvbmVu
dChjb250ZW50RGVidWdJRCwgY29udGVudCk7XG5cdCAgICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9u
LmRlYnVnVG9vbC5vblVwZGF0ZUNvbXBvbmVudChjb250ZW50RGVidWdJRCk7XG5cdCAgICB9IGVs
c2Uge1xuXHQgICAgICBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25CZWZvcmVNb3Vu
dENvbXBvbmVudChjb250ZW50RGVidWdJRCwgY29udGVudCwgZGVidWdJRCk7XG5cdCAgICAgIFJl
YWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vbk1vdW50Q29tcG9uZW50KGNvbnRlbnREZWJ1
Z0lEKTtcblx0ICAgICAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9uU2V0Q2hpbGRy
ZW4oZGVidWdJRCwgW2NvbnRlbnREZWJ1Z0lEXSk7XG5cdCAgICB9XG5cdCAgfTtcblx0fVxuXHRc
blx0Ly8gVGhlcmUgYXJlIHNvIG1hbnkgbWVkaWEgZXZlbnRzLCBpdCBtYWtlcyBzZW5zZSB0byBq
dXN0XG5cdC8vIG1haW50YWluIGEgbGlzdCByYXRoZXIgdGhhbiBjcmVhdGUgYSBgdHJhcEJ1YmJs
ZWRFdmVudGAgZm9yIGVhY2hcblx0dmFyIG1lZGlhRXZlbnRzID0ge1xuXHQgIHRvcEFib3J0OiAn
YWJvcnQnLFxuXHQgIHRvcENhblBsYXk6ICdjYW5wbGF5Jyxcblx0ICB0b3BDYW5QbGF5VGhyb3Vn
aDogJ2NhbnBsYXl0aHJvdWdoJyxcblx0ICB0b3BEdXJhdGlvbkNoYW5nZTogJ2R1cmF0aW9uY2hh
bmdlJyxcblx0ICB0b3BFbXB0aWVkOiAnZW1wdGllZCcsXG5cdCAgdG9wRW5jcnlwdGVkOiAnZW5j
cnlwdGVkJyxcblx0ICB0b3BFbmRlZDogJ2VuZGVkJyxcblx0ICB0b3BFcnJvcjogJ2Vycm9yJyxc
blx0ICB0b3BMb2FkZWREYXRhOiAnbG9hZGVkZGF0YScsXG5cdCAgdG9wTG9hZGVkTWV0YWRhdGE6
ICdsb2FkZWRtZXRhZGF0YScsXG5cdCAgdG9wTG9hZFN0YXJ0OiAnbG9hZHN0YXJ0Jyxcblx0ICB0
b3BQYXVzZTogJ3BhdXNlJyxcblx0ICB0b3BQbGF5OiAncGxheScsXG5cdCAgdG9wUGxheWluZzog
J3BsYXlpbmcnLFxuXHQgIHRvcFByb2dyZXNzOiAncHJvZ3Jlc3MnLFxuXHQgIHRvcFJhdGVDaGFu
Z2U6ICdyYXRlY2hhbmdlJyxcblx0ICB0b3BTZWVrZWQ6ICdzZWVrZWQnLFxuXHQgIHRvcFNlZWtp
bmc6ICdzZWVraW5nJyxcblx0ICB0b3BTdGFsbGVkOiAnc3RhbGxlZCcsXG5cdCAgdG9wU3VzcGVu
ZDogJ3N1c3BlbmQnLFxuXHQgIHRvcFRpbWVVcGRhdGU6ICd0aW1ldXBkYXRlJyxcblx0ICB0b3BW
b2x1bWVDaGFuZ2U6ICd2b2x1bWVjaGFuZ2UnLFxuXHQgIHRvcFdhaXRpbmc6ICd3YWl0aW5nJ1xu
XHR9O1xuXHRcblx0ZnVuY3Rpb24gdHJhY2tJbnB1dFZhbHVlKCkge1xuXHQgIGlucHV0VmFsdWVU
cmFja2luZy50cmFjayh0aGlzKTtcblx0fVxuXHRcblx0ZnVuY3Rpb24gdHJhcEJ1YmJsZWRFdmVu
dHNMb2NhbCgpIHtcblx0ICB2YXIgaW5zdCA9IHRoaXM7XG5cdCAgLy8gSWYgYSBjb21wb25lbnQg
cmVuZGVycyB0byBudWxsIG9yIGlmIGFub3RoZXIgY29tcG9uZW50IGZhdGFscyBhbmQgY2F1c2Vz
XG5cdCAgLy8gdGhlIHN0YXRlIG9mIHRoZSB0cmVlIHRvIGJlIGNvcnJ1cHRlZCwgYG5vZGVgIGhl
cmUgY2FuIGJlIG51bGwuXG5cdCAgIWluc3QuX3Jvb3ROb2RlSUQgPyAgZmFsc2UgPyBpbnZhcmlh
bnQoZmFsc2UsICdNdXN0IGJlIG1vdW50ZWQgdG8gdHJhcCBldmVudHMnKSA6IF9wcm9kSW52YXJp
YW50KCc2MycpIDogdm9pZCAwO1xuXHQgIHZhciBub2RlID0gZ2V0Tm9kZShpbnN0KTtcblx0ICAh
bm9kZSA/ICBmYWxzZSA/IGludmFyaWFudChmYWxzZSwgJ3RyYXBCdWJibGVkRXZlbnQoLi4uKTog
UmVxdWlyZXMgbm9kZSB0byBiZSByZW5kZXJlZC4nKSA6IF9wcm9kSW52YXJpYW50KCc2NCcpIDog
dm9pZCAwO1xuXHRcblx0ICBzd2l0Y2ggKGluc3QuX3RhZykge1xuXHQgICAgY2FzZSAnaWZyYW1l
Jzpcblx0ICAgIGNhc2UgJ29iamVjdCc6XG5cdCAgICAgIGluc3QuX3dyYXBwZXJTdGF0ZS5saXN0
ZW5lcnMgPSBbUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLnRyYXBCdWJibGVkRXZlbnQoJ3RvcExv
YWQnLCAnbG9hZCcsIG5vZGUpXTtcblx0ICAgICAgYnJlYWs7XG5cdCAgICBjYXNlICd2aWRlbyc6
XG5cdCAgICBjYXNlICdhdWRpbyc6XG5cdCAgICAgIGluc3QuX3dyYXBwZXJTdGF0ZS5saXN0ZW5l
cnMgPSBbXTtcblx0ICAgICAgLy8gQ3JlYXRlIGxpc3RlbmVyIGZvciBlYWNoIG1lZGlhIGV2ZW50
XG5cdCAgICAgIGZvciAodmFyIGV2ZW50IGluIG1lZGlhRXZlbnRzKSB7XG5cdCAgICAgICAgaWYg
KG1lZGlhRXZlbnRzLmhhc093blByb3BlcnR5KGV2ZW50KSkge1xuXHQgICAgICAgICAgaW5zdC5f
d3JhcHBlclN0YXRlLmxpc3RlbmVycy5wdXNoKFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlci50cmFw
QnViYmxlZEV2ZW50KGV2ZW50LCBtZWRpYUV2ZW50c1tldmVudF0sIG5vZGUpKTtcblx0ICAgICAg
ICB9XG5cdCAgICAgIH1cblx0ICAgICAgYnJlYWs7XG5cdCAgICBjYXNlICdzb3VyY2UnOlxuXHQg
ICAgICBpbnN0Ll93cmFwcGVyU3RhdGUubGlzdGVuZXJzID0gW1JlYWN0QnJvd3NlckV2ZW50RW1p
dHRlci50cmFwQnViYmxlZEV2ZW50KCd0b3BFcnJvcicsICdlcnJvcicsIG5vZGUpXTtcblx0ICAg
ICAgYnJlYWs7XG5cdCAgICBjYXNlICdpbWcnOlxuXHQgICAgICBpbnN0Ll93cmFwcGVyU3RhdGUu
bGlzdGVuZXJzID0gW1JlYWN0QnJvd3NlckV2ZW50RW1pdHRlci50cmFwQnViYmxlZEV2ZW50KCd0
b3BFcnJvcicsICdlcnJvcicsIG5vZGUpLCBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIudHJhcEJ1
YmJsZWRFdmVudCgndG9wTG9hZCcsICdsb2FkJywgbm9kZSldO1xuXHQgICAgICBicmVhaztcblx0
ICAgIGNhc2UgJ2Zvcm0nOlxuXHQgICAgICBpbnN0Ll93cmFwcGVyU3RhdGUubGlzdGVuZXJzID0g
W1JlYWN0QnJvd3NlckV2ZW50RW1pdHRlci50cmFwQnViYmxlZEV2ZW50KCd0b3BSZXNldCcsICdy
ZXNldCcsIG5vZGUpLCBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIudHJhcEJ1YmJsZWRFdmVudCgn
dG9wU3VibWl0JywgJ3N1Ym1pdCcsIG5vZGUpXTtcblx0ICAgICAgYnJlYWs7XG5cdCAgICBjYXNl
ICdpbnB1dCc6XG5cdCAgICBjYXNlICdzZWxlY3QnOlxuXHQgICAgY2FzZSAndGV4dGFyZWEnOlxu
XHQgICAgICBpbnN0Ll93cmFwcGVyU3RhdGUubGlzdGVuZXJzID0gW1JlYWN0QnJvd3NlckV2ZW50
RW1pdHRlci50cmFwQnViYmxlZEV2ZW50KCd0b3BJbnZhbGlkJywgJ2ludmFsaWQnLCBub2RlKV07
XG5cdCAgICAgIGJyZWFrO1xuXHQgIH1cblx0fVxuXHRcblx0ZnVuY3Rpb24gcG9zdFVwZGF0ZVNl
bGVjdFdyYXBwZXIoKSB7XG5cdCAgUmVhY3RET01TZWxlY3QucG9zdFVwZGF0ZVdyYXBwZXIodGhp
cyk7XG5cdH1cblx0XG5cdC8vIEZvciBIVE1MLCBjZXJ0YWluIHRhZ3Mgc2hvdWxkIG9taXQgdGhl
aXIgY2xvc2UgdGFnLiBXZSBrZWVwIGEgd2hpdGVsaXN0IGZvclxuXHQvLyB0aG9zZSBzcGVjaWFs
LWNhc2UgdGFncy5cblx0XG5cdHZhciBvbWl0dGVkQ2xvc2VUYWdzID0ge1xuXHQgIGFyZWE6IHRy
dWUsXG5cdCAgYmFzZTogdHJ1ZSxcblx0ICBicjogdHJ1ZSxcblx0ICBjb2w6IHRydWUsXG5cdCAg
ZW1iZWQ6IHRydWUsXG5cdCAgaHI6IHRydWUsXG5cdCAgaW1nOiB0cnVlLFxuXHQgIGlucHV0OiB0
cnVlLFxuXHQgIGtleWdlbjogdHJ1ZSxcblx0ICBsaW5rOiB0cnVlLFxuXHQgIG1ldGE6IHRydWUs
XG5cdCAgcGFyYW06IHRydWUsXG5cdCAgc291cmNlOiB0cnVlLFxuXHQgIHRyYWNrOiB0cnVlLFxu
XHQgIHdicjogdHJ1ZVxuXHQgIC8vIE5PVEU6IG1lbnVpdGVtJ3MgY2xvc2UgdGFnIHNob3VsZCBi
ZSBvbWl0dGVkLCBidXQgdGhhdCBjYXVzZXMgcHJvYmxlbXMuXG5cdH07XG5cdFxuXHR2YXIgbmV3
bGluZUVhdGluZ1RhZ3MgPSB7XG5cdCAgbGlzdGluZzogdHJ1ZSxcblx0ICBwcmU6IHRydWUsXG5c
dCAgdGV4dGFyZWE6IHRydWVcblx0fTtcblx0XG5cdC8vIEZvciBIVE1MLCBjZXJ0YWluIHRhZ3Mg
Y2Fubm90IGhhdmUgY2hpbGRyZW4uIFRoaXMgaGFzIHRoZSBzYW1lIHB1cnBvc2UgYXNcblx0Ly8g
YG9taXR0ZWRDbG9zZVRhZ3NgIGV4Y2VwdCB0aGF0IGBtZW51aXRlbWAgc2hvdWxkIHN0aWxsIGhh
dmUgaXRzIGNsb3NpbmcgdGFnLlxuXHRcblx0dmFyIHZvaWRFbGVtZW50VGFncyA9IF9hc3NpZ24o
e1xuXHQgIG1lbnVpdGVtOiB0cnVlXG5cdH0sIG9taXR0ZWRDbG9zZVRhZ3MpO1xuXHRcblx0Ly8g
V2UgYWNjZXB0IGFueSB0YWcgdG8gYmUgcmVuZGVyZWQgYnV0IHNpbmNlIHRoaXMgZ2V0cyBpbmpl
Y3RlZCBpbnRvIGFyYml0cmFyeVxuXHQvLyBIVE1MLCB3ZSB3YW50IHRvIG1ha2Ugc3VyZSB0aGF0
IGl0J3MgYSBzYWZlIHRhZy5cblx0Ly8gaHR0cDovL3d3dy53My5vcmcvVFIvUkVDLXhtbC8jTlQt
TmFtZVxuXHRcblx0dmFyIFZBTElEX1RBR19SRUdFWCA9IC9eW2EtekEtWl1bYS16QS1aOl9cXC5c
XC1cXGRdKiQvOyAvLyBTaW1wbGlmaWVkIHN1YnNldFxuXHR2YXIgdmFsaWRhdGVkVGFnQ2FjaGUg
PSB7fTtcblx0dmFyIGhhc093blByb3BlcnR5ID0ge30uaGFzT3duUHJvcGVydHk7XG5cdFxuXHRm
dW5jdGlvbiB2YWxpZGF0ZURhbmdlcm91c1RhZyh0YWcpIHtcblx0ICBpZiAoIWhhc093blByb3Bl
cnR5LmNhbGwodmFsaWRhdGVkVGFnQ2FjaGUsIHRhZykpIHtcblx0ICAgICFWQUxJRF9UQUdfUkVH
RVgudGVzdCh0YWcpID8gIGZhbHNlID8gaW52YXJpYW50KGZhbHNlLCAnSW52YWxpZCB0YWc6ICVz
JywgdGFnKSA6IF9wcm9kSW52YXJpYW50KCc2NScsIHRhZykgOiB2b2lkIDA7XG5cdCAgICB2YWxp
ZGF0ZWRUYWdDYWNoZVt0YWddID0gdHJ1ZTtcblx0ICB9XG5cdH1cblx0XG5cdGZ1bmN0aW9uIGlz
Q3VzdG9tQ29tcG9uZW50KHRhZ05hbWUsIHByb3BzKSB7XG5cdCAgcmV0dXJuIHRhZ05hbWUuaW5k
ZXhPZignLScpID49IDAgfHwgcHJvcHMuaXMgIT0gbnVsbDtcblx0fVxuXHRcblx0dmFyIGdsb2Jh
bElkQ291bnRlciA9IDE7XG5cdFxuXHQvKipcblx0ICogQ3JlYXRlcyBhIG5ldyBSZWFjdCBjbGFz
cyB0aGF0IGlzIGlkZW1wb3RlbnQgYW5kIGNhcGFibGUgb2YgY29udGFpbmluZyBvdGhlclxuXHQg
KiBSZWFjdCBjb21wb25lbnRzLiBJdCBhY2NlcHRzIGV2ZW50IGxpc3RlbmVycyBhbmQgRE9NIHBy
b3BlcnRpZXMgdGhhdCBhcmVcblx0ICogdmFsaWQgYWNjb3JkaW5nIHRvIGBET01Qcm9wZXJ0eWAu
XG5cdCAqXG5cdCAqICAtIEV2ZW50IGxpc3RlbmVyczogYG9uQ2xpY2tgLCBgb25Nb3VzZURvd25g
LCBldGMuXG5cdCAqICAtIERPTSBwcm9wZXJ0aWVzOiBgY2xhc3NOYW1lYCwgYG5hbWVgLCBgdGl0
bGVgLCBldGMuXG5cdCAqXG5cdCAqIFRoZSBgc3R5bGVgIHByb3BlcnR5IGZ1bmN0aW9ucyBkaWZm
ZXJlbnRseSBmcm9tIHRoZSBET00gQVBJLiBJdCBhY2NlcHRzIGFuXG5cdCAqIG9iamVjdCBtYXBw
aW5nIG9mIHN0eWxlIHByb3BlcnRpZXMgdG8gdmFsdWVzLlxuXHQgKlxuXHQgKiBAY29uc3RydWN0
b3IgUmVhY3RET01Db21wb25lbnRcblx0ICogQGV4dGVuZHMgUmVhY3RNdWx0aUNoaWxkXG5cdCAq
L1xuXHRmdW5jdGlvbiBSZWFjdERPTUNvbXBvbmVudChlbGVtZW50KSB7XG5cdCAgdmFyIHRhZyA9
IGVsZW1lbnQudHlwZTtcblx0ICB2YWxpZGF0ZURhbmdlcm91c1RhZyh0YWcpO1xuXHQgIHRoaXMu
X2N1cnJlbnRFbGVtZW50ID0gZWxlbWVudDtcblx0ICB0aGlzLl90YWcgPSB0YWcudG9Mb3dlckNh
c2UoKTtcblx0ICB0aGlzLl9uYW1lc3BhY2VVUkkgPSBudWxsO1xuXHQgIHRoaXMuX3JlbmRlcmVk
Q2hpbGRyZW4gPSBudWxsO1xuXHQgIHRoaXMuX3ByZXZpb3VzU3R5bGUgPSBudWxsO1xuXHQgIHRo
aXMuX3ByZXZpb3VzU3R5bGVDb3B5ID0gbnVsbDtcblx0ICB0aGlzLl9ob3N0Tm9kZSA9IG51bGw7
XG5cdCAgdGhpcy5faG9zdFBhcmVudCA9IG51bGw7XG5cdCAgdGhpcy5fcm9vdE5vZGVJRCA9IDA7
XG5cdCAgdGhpcy5fZG9tSUQgPSAwO1xuXHQgIHRoaXMuX2hvc3RDb250YWluZXJJbmZvID0gbnVs
bDtcblx0ICB0aGlzLl93cmFwcGVyU3RhdGUgPSBudWxsO1xuXHQgIHRoaXMuX3RvcExldmVsV3Jh
cHBlciA9IG51bGw7XG5cdCAgdGhpcy5fZmxhZ3MgPSAwO1xuXHQgIGlmIChmYWxzZSkge1xuXHQg
ICAgdGhpcy5fYW5jZXN0b3JJbmZvID0gbnVsbDtcblx0ICAgIHNldEFuZFZhbGlkYXRlQ29udGVu
dENoaWxkRGV2LmNhbGwodGhpcywgbnVsbCk7XG5cdCAgfVxuXHR9XG5cdFxuXHRSZWFjdERPTUNv
bXBvbmVudC5kaXNwbGF5TmFtZSA9ICdSZWFjdERPTUNvbXBvbmVudCc7XG5cdFxuXHRSZWFjdERP
TUNvbXBvbmVudC5NaXhpbiA9IHtcblx0ICAvKipcblx0ICAgKiBHZW5lcmF0ZXMgcm9vdCB0YWcg
bWFya3VwIHRoZW4gcmVjdXJzZXMuIFRoaXMgbWV0aG9kIGhhcyBzaWRlIGVmZmVjdHMgYW5kXG5c
dCAgICogaXMgbm90IGlkZW1wb3RlbnQuXG5cdCAgICpcblx0ICAgKiBAaW50ZXJuYWxcblx0ICAg
KiBAcGFyYW0ge1JlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb258UmVhY3RTZXJ2ZXJSZW5kZXJpbmdU
cmFuc2FjdGlvbn0gdHJhbnNhY3Rpb25cblx0ICAgKiBAcGFyYW0gez9SZWFjdERPTUNvbXBvbmVu
dH0gdGhlIHBhcmVudCBjb21wb25lbnQgaW5zdGFuY2Vcblx0ICAgKiBAcGFyYW0gez9vYmplY3R9
IGluZm8gYWJvdXQgdGhlIGhvc3QgY29udGFpbmVyXG5cdCAgICogQHBhcmFtIHtvYmplY3R9IGNv
bnRleHRcblx0ICAgKiBAcmV0dXJuIHtzdHJpbmd9IFRoZSBjb21wdXRlZCBtYXJrdXAuXG5cdCAg
ICovXG5cdCAgbW91bnRDb21wb25lbnQ6IGZ1bmN0aW9uICh0cmFuc2FjdGlvbiwgaG9zdFBhcmVu
dCwgaG9zdENvbnRhaW5lckluZm8sIGNvbnRleHQpIHtcblx0ICAgIHRoaXMuX3Jvb3ROb2RlSUQg
PSBnbG9iYWxJZENvdW50ZXIrKztcblx0ICAgIHRoaXMuX2RvbUlEID0gaG9zdENvbnRhaW5lcklu
Zm8uX2lkQ291bnRlcisrO1xuXHQgICAgdGhpcy5faG9zdFBhcmVudCA9IGhvc3RQYXJlbnQ7XG5c
dCAgICB0aGlzLl9ob3N0Q29udGFpbmVySW5mbyA9IGhvc3RDb250YWluZXJJbmZvO1xuXHRcblx0
ICAgIHZhciBwcm9wcyA9IHRoaXMuX2N1cnJlbnRFbGVtZW50LnByb3BzO1xuXHRcblx0ICAgIHN3
aXRjaCAodGhpcy5fdGFnKSB7XG5cdCAgICAgIGNhc2UgJ2F1ZGlvJzpcblx0ICAgICAgY2FzZSAn
Zm9ybSc6XG5cdCAgICAgIGNhc2UgJ2lmcmFtZSc6XG5cdCAgICAgIGNhc2UgJ2ltZyc6XG5cdCAg
ICAgIGNhc2UgJ2xpbmsnOlxuXHQgICAgICBjYXNlICdvYmplY3QnOlxuXHQgICAgICBjYXNlICdz
b3VyY2UnOlxuXHQgICAgICBjYXNlICd2aWRlbyc6XG5cdCAgICAgICAgdGhpcy5fd3JhcHBlclN0
YXRlID0ge1xuXHQgICAgICAgICAgbGlzdGVuZXJzOiBudWxsXG5cdCAgICAgICAgfTtcblx0ICAg
ICAgICB0cmFuc2FjdGlvbi5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKHRyYXBCdWJibGVk
RXZlbnRzTG9jYWwsIHRoaXMpO1xuXHQgICAgICAgIGJyZWFrO1xuXHQgICAgICBjYXNlICdpbnB1
dCc6XG5cdCAgICAgICAgUmVhY3RET01JbnB1dC5tb3VudFdyYXBwZXIodGhpcywgcHJvcHMsIGhv
c3RQYXJlbnQpO1xuXHQgICAgICAgIHByb3BzID0gUmVhY3RET01JbnB1dC5nZXRIb3N0UHJvcHMo
dGhpcywgcHJvcHMpO1xuXHQgICAgICAgIHRyYW5zYWN0aW9uLmdldFJlYWN0TW91bnRSZWFkeSgp
LmVucXVldWUodHJhY2tJbnB1dFZhbHVlLCB0aGlzKTtcblx0ICAgICAgICB0cmFuc2FjdGlvbi5n
ZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKHRyYXBCdWJibGVkRXZlbnRzTG9jYWwsIHRoaXMp
O1xuXHQgICAgICAgIGJyZWFrO1xuXHQgICAgICBjYXNlICdvcHRpb24nOlxuXHQgICAgICAgIFJl
YWN0RE9NT3B0aW9uLm1vdW50V3JhcHBlcih0aGlzLCBwcm9wcywgaG9zdFBhcmVudCk7XG5cdCAg
ICAgICAgcHJvcHMgPSBSZWFjdERPTU9wdGlvbi5nZXRIb3N0UHJvcHModGhpcywgcHJvcHMpO1xu
XHQgICAgICAgIGJyZWFrO1xuXHQgICAgICBjYXNlICdzZWxlY3QnOlxuXHQgICAgICAgIFJlYWN0
RE9NU2VsZWN0Lm1vdW50V3JhcHBlcih0aGlzLCBwcm9wcywgaG9zdFBhcmVudCk7XG5cdCAgICAg
ICAgcHJvcHMgPSBSZWFjdERPTVNlbGVjdC5nZXRIb3N0UHJvcHModGhpcywgcHJvcHMpO1xuXHQg
ICAgICAgIHRyYW5zYWN0aW9uLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUodHJhcEJ1YmJs
ZWRFdmVudHNMb2NhbCwgdGhpcyk7XG5cdCAgICAgICAgYnJlYWs7XG5cdCAgICAgIGNhc2UgJ3Rl
eHRhcmVhJzpcblx0ICAgICAgICBSZWFjdERPTVRleHRhcmVhLm1vdW50V3JhcHBlcih0aGlzLCBw
cm9wcywgaG9zdFBhcmVudCk7XG5cdCAgICAgICAgcHJvcHMgPSBSZWFjdERPTVRleHRhcmVhLmdl
dEhvc3RQcm9wcyh0aGlzLCBwcm9wcyk7XG5cdCAgICAgICAgdHJhbnNhY3Rpb24uZ2V0UmVhY3RN
b3VudFJlYWR5KCkuZW5xdWV1ZSh0cmFja0lucHV0VmFsdWUsIHRoaXMpO1xuXHQgICAgICAgIHRy
YW5zYWN0aW9uLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUodHJhcEJ1YmJsZWRFdmVudHNM
b2NhbCwgdGhpcyk7XG5cdCAgICAgICAgYnJlYWs7XG5cdCAgICB9XG5cdFxuXHQgICAgYXNzZXJ0
VmFsaWRQcm9wcyh0aGlzLCBwcm9wcyk7XG5cdFxuXHQgICAgLy8gV2UgY3JlYXRlIHRhZ3MgaW4g
dGhlIG5hbWVzcGFjZSBvZiB0aGVpciBwYXJlbnQgY29udGFpbmVyLCBleGNlcHQgSFRNTFxuXHQg
ICAgLy8gdGFncyBnZXQgbm8gbmFtZXNwYWNlLlxuXHQgICAgdmFyIG5hbWVzcGFjZVVSSTtcblx0
ICAgIHZhciBwYXJlbnRUYWc7XG5cdCAgICBpZiAoaG9zdFBhcmVudCAhPSBudWxsKSB7XG5cdCAg
ICAgIG5hbWVzcGFjZVVSSSA9IGhvc3RQYXJlbnQuX25hbWVzcGFjZVVSSTtcblx0ICAgICAgcGFy
ZW50VGFnID0gaG9zdFBhcmVudC5fdGFnO1xuXHQgICAgfSBlbHNlIGlmIChob3N0Q29udGFpbmVy
SW5mby5fdGFnKSB7XG5cdCAgICAgIG5hbWVzcGFjZVVSSSA9IGhvc3RDb250YWluZXJJbmZvLl9u
YW1lc3BhY2VVUkk7XG5cdCAgICAgIHBhcmVudFRhZyA9IGhvc3RDb250YWluZXJJbmZvLl90YWc7
XG5cdCAgICB9XG5cdCAgICBpZiAobmFtZXNwYWNlVVJJID09IG51bGwgfHwgbmFtZXNwYWNlVVJJ
ID09PSBET01OYW1lc3BhY2VzLnN2ZyAmJiBwYXJlbnRUYWcgPT09ICdmb3JlaWdub2JqZWN0Jykg
e1xuXHQgICAgICBuYW1lc3BhY2VVUkkgPSBET01OYW1lc3BhY2VzLmh0bWw7XG5cdCAgICB9XG5c
dCAgICBpZiAobmFtZXNwYWNlVVJJID09PSBET01OYW1lc3BhY2VzLmh0bWwpIHtcblx0ICAgICAg
aWYgKHRoaXMuX3RhZyA9PT0gJ3N2ZycpIHtcblx0ICAgICAgICBuYW1lc3BhY2VVUkkgPSBET01O
YW1lc3BhY2VzLnN2Zztcblx0ICAgICAgfSBlbHNlIGlmICh0aGlzLl90YWcgPT09ICdtYXRoJykg
e1xuXHQgICAgICAgIG5hbWVzcGFjZVVSSSA9IERPTU5hbWVzcGFjZXMubWF0aG1sO1xuXHQgICAg
ICB9XG5cdCAgICB9XG5cdCAgICB0aGlzLl9uYW1lc3BhY2VVUkkgPSBuYW1lc3BhY2VVUkk7XG5c
dFxuXHQgICAgaWYgKGZhbHNlKSB7XG5cdCAgICAgIHZhciBwYXJlbnRJbmZvO1xuXHQgICAgICBp
ZiAoaG9zdFBhcmVudCAhPSBudWxsKSB7XG5cdCAgICAgICAgcGFyZW50SW5mbyA9IGhvc3RQYXJl
bnQuX2FuY2VzdG9ySW5mbztcblx0ICAgICAgfSBlbHNlIGlmIChob3N0Q29udGFpbmVySW5mby5f
dGFnKSB7XG5cdCAgICAgICAgcGFyZW50SW5mbyA9IGhvc3RDb250YWluZXJJbmZvLl9hbmNlc3Rv
ckluZm87XG5cdCAgICAgIH1cblx0ICAgICAgaWYgKHBhcmVudEluZm8pIHtcblx0ICAgICAgICAv
LyBwYXJlbnRJbmZvIHNob3VsZCBhbHdheXMgYmUgcHJlc2VudCBleGNlcHQgZm9yIHRoZSB0b3At
bGV2ZWxcblx0ICAgICAgICAvLyBjb21wb25lbnQgd2hlbiBzZXJ2ZXIgcmVuZGVyaW5nXG5cdCAg
ICAgICAgdmFsaWRhdGVET01OZXN0aW5nKHRoaXMuX3RhZywgbnVsbCwgdGhpcywgcGFyZW50SW5m
byk7XG5cdCAgICAgIH1cblx0ICAgICAgdGhpcy5fYW5jZXN0b3JJbmZvID0gdmFsaWRhdGVET01O
ZXN0aW5nLnVwZGF0ZWRBbmNlc3RvckluZm8ocGFyZW50SW5mbywgdGhpcy5fdGFnLCB0aGlzKTtc
blx0ICAgIH1cblx0XG5cdCAgICB2YXIgbW91bnRJbWFnZTtcblx0ICAgIGlmICh0cmFuc2FjdGlv
bi51c2VDcmVhdGVFbGVtZW50KSB7XG5cdCAgICAgIHZhciBvd25lckRvY3VtZW50ID0gaG9zdENv
bnRhaW5lckluZm8uX293bmVyRG9jdW1lbnQ7XG5cdCAgICAgIHZhciBlbDtcblx0ICAgICAgaWYg
KG5hbWVzcGFjZVVSSSA9PT0gRE9NTmFtZXNwYWNlcy5odG1sKSB7XG5cdCAgICAgICAgaWYgKHRo
aXMuX3RhZyA9PT0gJ3NjcmlwdCcpIHtcblx0ICAgICAgICAgIC8vIENyZWF0ZSB0aGUgc2NyaXB0
IHZpYSAuaW5uZXJIVE1MIHNvIGl0cyBcInBhcnNlci1pbnNlcnRlZFwiIGZsYWcgaXNcblx0ICAg
ICAgICAgIC8vIHNldCB0byB0cnVlIGFuZCBpdCBkb2VzIG5vdCBleGVjdXRlXG5cdCAgICAgICAg
ICB2YXIgZGl2ID0gb3duZXJEb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcblx0ICAgICAg
ICAgIHZhciB0eXBlID0gdGhpcy5fY3VycmVudEVsZW1lbnQudHlwZTtcblx0ICAgICAgICAgIGRp
di5pbm5lckhUTUwgPSAnPCcgKyB0eXBlICsgJz48LycgKyB0eXBlICsgJz4nO1xuXHQgICAgICAg
ICAgZWwgPSBkaXYucmVtb3ZlQ2hpbGQoZGl2LmZpcnN0Q2hpbGQpO1xuXHQgICAgICAgIH0gZWxz
ZSBpZiAocHJvcHMuaXMpIHtcblx0ICAgICAgICAgIGVsID0gb3duZXJEb2N1bWVudC5jcmVhdGVF
bGVtZW50KHRoaXMuX2N1cnJlbnRFbGVtZW50LnR5cGUsIHByb3BzLmlzKTtcblx0ICAgICAgICB9
IGVsc2Uge1xuXHQgICAgICAgICAgLy8gU2VwYXJhdGUgZWxzZSBicmFuY2ggaW5zdGVhZCBvZiB1
c2luZyBgcHJvcHMuaXMgfHwgdW5kZWZpbmVkYCBhYm92ZSBiZWN1YXNlIG9mIGEgRmlyZWZveCBi
dWcuXG5cdCAgICAgICAgICAvLyBTZWUgZGlzY3Vzc2lvbiBpbiBodHRwczovL2dpdGh1Yi5jb20v
ZmFjZWJvb2svcmVhY3QvcHVsbC82ODk2XG5cdCAgICAgICAgICAvLyBhbmQgZGlzY3Vzc2lvbiBp
biBodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjc2MjQwXG5c
dCAgICAgICAgICBlbCA9IG93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudCh0aGlzLl9jdXJyZW50
RWxlbWVudC50eXBlKTtcblx0ICAgICAgICB9XG5cdCAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAg
ZWwgPSBvd25lckRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhuYW1lc3BhY2VVUkksIHRoaXMuX2N1
cnJlbnRFbGVtZW50LnR5cGUpO1xuXHQgICAgICB9XG5cdCAgICAgIFJlYWN0RE9NQ29tcG9uZW50
VHJlZS5wcmVjYWNoZU5vZGUodGhpcywgZWwpO1xuXHQgICAgICB0aGlzLl9mbGFncyB8PSBGbGFn
cy5oYXNDYWNoZWRDaGlsZE5vZGVzO1xuXHQgICAgICBpZiAoIXRoaXMuX2hvc3RQYXJlbnQpIHtc
blx0ICAgICAgICBET01Qcm9wZXJ0eU9wZXJhdGlvbnMuc2V0QXR0cmlidXRlRm9yUm9vdChlbCk7
XG5cdCAgICAgIH1cblx0ICAgICAgdGhpcy5fdXBkYXRlRE9NUHJvcGVydGllcyhudWxsLCBwcm9w
cywgdHJhbnNhY3Rpb24pO1xuXHQgICAgICB2YXIgbGF6eVRyZWUgPSBET01MYXp5VHJlZShlbCk7
XG5cdCAgICAgIHRoaXMuX2NyZWF0ZUluaXRpYWxDaGlsZHJlbih0cmFuc2FjdGlvbiwgcHJvcHMs
IGNvbnRleHQsIGxhenlUcmVlKTtcblx0ICAgICAgbW91bnRJbWFnZSA9IGxhenlUcmVlO1xuXHQg
ICAgfSBlbHNlIHtcblx0ICAgICAgdmFyIHRhZ09wZW4gPSB0aGlzLl9jcmVhdGVPcGVuVGFnTWFy
a3VwQW5kUHV0TGlzdGVuZXJzKHRyYW5zYWN0aW9uLCBwcm9wcyk7XG5cdCAgICAgIHZhciB0YWdD
b250ZW50ID0gdGhpcy5fY3JlYXRlQ29udGVudE1hcmt1cCh0cmFuc2FjdGlvbiwgcHJvcHMsIGNv
bnRleHQpO1xuXHQgICAgICBpZiAoIXRhZ0NvbnRlbnQgJiYgb21pdHRlZENsb3NlVGFnc1t0aGlz
Ll90YWddKSB7XG5cdCAgICAgICAgbW91bnRJbWFnZSA9IHRhZ09wZW4gKyAnLz4nO1xuXHQgICAg
ICB9IGVsc2Uge1xuXHQgICAgICAgIG1vdW50SW1hZ2UgPSB0YWdPcGVuICsgJz4nICsgdGFnQ29u
dGVudCArICc8LycgKyB0aGlzLl9jdXJyZW50RWxlbWVudC50eXBlICsgJz4nO1xuXHQgICAgICB9
XG5cdCAgICB9XG5cdFxuXHQgICAgc3dpdGNoICh0aGlzLl90YWcpIHtcblx0ICAgICAgY2FzZSAn
aW5wdXQnOlxuXHQgICAgICAgIHRyYW5zYWN0aW9uLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVl
dWUoaW5wdXRQb3N0TW91bnQsIHRoaXMpO1xuXHQgICAgICAgIGlmIChwcm9wcy5hdXRvRm9jdXMp
IHtcblx0ICAgICAgICAgIHRyYW5zYWN0aW9uLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUo
QXV0b0ZvY3VzVXRpbHMuZm9jdXNET01Db21wb25lbnQsIHRoaXMpO1xuXHQgICAgICAgIH1cblx0
ICAgICAgICBicmVhaztcblx0ICAgICAgY2FzZSAndGV4dGFyZWEnOlxuXHQgICAgICAgIHRyYW5z
YWN0aW9uLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUodGV4dGFyZWFQb3N0TW91bnQsIHRo
aXMpO1xuXHQgICAgICAgIGlmIChwcm9wcy5hdXRvRm9jdXMpIHtcblx0ICAgICAgICAgIHRyYW5z
YWN0aW9uLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUoQXV0b0ZvY3VzVXRpbHMuZm9jdXNE
T01Db21wb25lbnQsIHRoaXMpO1xuXHQgICAgICAgIH1cblx0ICAgICAgICBicmVhaztcblx0ICAg
ICAgY2FzZSAnc2VsZWN0Jzpcblx0ICAgICAgICBpZiAocHJvcHMuYXV0b0ZvY3VzKSB7XG5cdCAg
ICAgICAgICB0cmFuc2FjdGlvbi5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKEF1dG9Gb2N1
c1V0aWxzLmZvY3VzRE9NQ29tcG9uZW50LCB0aGlzKTtcblx0ICAgICAgICB9XG5cdCAgICAgICAg
YnJlYWs7XG5cdCAgICAgIGNhc2UgJ2J1dHRvbic6XG5cdCAgICAgICAgaWYgKHByb3BzLmF1dG9G
b2N1cykge1xuXHQgICAgICAgICAgdHJhbnNhY3Rpb24uZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5x
dWV1ZShBdXRvRm9jdXNVdGlscy5mb2N1c0RPTUNvbXBvbmVudCwgdGhpcyk7XG5cdCAgICAgICAg
fVxuXHQgICAgICAgIGJyZWFrO1xuXHQgICAgICBjYXNlICdvcHRpb24nOlxuXHQgICAgICAgIHRy
YW5zYWN0aW9uLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUob3B0aW9uUG9zdE1vdW50LCB0
aGlzKTtcblx0ICAgICAgICBicmVhaztcblx0ICAgIH1cblx0XG5cdCAgICByZXR1cm4gbW91bnRJ
bWFnZTtcblx0ICB9LFxuXHRcblx0ICAvKipcblx0ICAgKiBDcmVhdGVzIG1hcmt1cCBmb3IgdGhl
IG9wZW4gdGFnIGFuZCBhbGwgYXR0cmlidXRlcy5cblx0ICAgKlxuXHQgICAqIFRoaXMgbWV0aG9k
IGhhcyBzaWRlIGVmZmVjdHMgYmVjYXVzZSBldmVudHMgZ2V0IHJlZ2lzdGVyZWQuXG5cdCAgICpc
blx0ICAgKiBJdGVyYXRpbmcgb3ZlciBvYmplY3QgcHJvcGVydGllcyBpcyBmYXN0ZXIgdGhhbiBp
dGVyYXRpbmcgb3ZlciBhcnJheXMuXG5cdCAgICogQHNlZSBodHRwOi8vanNwZXJmLmNvbS9vYmot
dnMtYXJyLWl0ZXJhdGlvblxuXHQgICAqXG5cdCAgICogQHByaXZhdGVcblx0ICAgKiBAcGFyYW0g
e1JlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb258UmVhY3RTZXJ2ZXJSZW5kZXJpbmdUcmFuc2FjdGlv
bn0gdHJhbnNhY3Rpb25cblx0ICAgKiBAcGFyYW0ge29iamVjdH0gcHJvcHNcblx0ICAgKiBAcmV0
dXJuIHtzdHJpbmd9IE1hcmt1cCBvZiBvcGVuaW5nIHRhZy5cblx0ICAgKi9cblx0ICBfY3JlYXRl
T3BlblRhZ01hcmt1cEFuZFB1dExpc3RlbmVyczogZnVuY3Rpb24gKHRyYW5zYWN0aW9uLCBwcm9w
cykge1xuXHQgICAgdmFyIHJldCA9ICc8JyArIHRoaXMuX2N1cnJlbnRFbGVtZW50LnR5cGU7XG5c
dFxuXHQgICAgZm9yICh2YXIgcHJvcEtleSBpbiBwcm9wcykge1xuXHQgICAgICBpZiAoIXByb3Bz
Lmhhc093blByb3BlcnR5KHByb3BLZXkpKSB7XG5cdCAgICAgICAgY29udGludWU7XG5cdCAgICAg
IH1cblx0ICAgICAgdmFyIHByb3BWYWx1ZSA9IHByb3BzW3Byb3BLZXldO1xuXHQgICAgICBpZiAo
cHJvcFZhbHVlID09IG51bGwpIHtcblx0ICAgICAgICBjb250aW51ZTtcblx0ICAgICAgfVxuXHQg
ICAgICBpZiAocmVnaXN0cmF0aW9uTmFtZU1vZHVsZXMuaGFzT3duUHJvcGVydHkocHJvcEtleSkp
IHtcblx0ICAgICAgICBpZiAocHJvcFZhbHVlKSB7XG5cdCAgICAgICAgICBlbnF1ZXVlUHV0TGlz
dGVuZXIodGhpcywgcHJvcEtleSwgcHJvcFZhbHVlLCB0cmFuc2FjdGlvbik7XG5cdCAgICAgICAg
fVxuXHQgICAgICB9IGVsc2Uge1xuXHQgICAgICAgIGlmIChwcm9wS2V5ID09PSBTVFlMRSkge1xu
XHQgICAgICAgICAgaWYgKHByb3BWYWx1ZSkge1xuXHQgICAgICAgICAgICBpZiAoZmFsc2UpIHtc
blx0ICAgICAgICAgICAgICAvLyBTZWUgYF91cGRhdGVET01Qcm9wZXJ0aWVzYC4gc3R5bGUgYmxv
Y2tcblx0ICAgICAgICAgICAgICB0aGlzLl9wcmV2aW91c1N0eWxlID0gcHJvcFZhbHVlO1xuXHQg
ICAgICAgICAgICB9XG5cdCAgICAgICAgICAgIHByb3BWYWx1ZSA9IHRoaXMuX3ByZXZpb3VzU3R5
bGVDb3B5ID0gX2Fzc2lnbih7fSwgcHJvcHMuc3R5bGUpO1xuXHQgICAgICAgICAgfVxuXHQgICAg
ICAgICAgcHJvcFZhbHVlID0gQ1NTUHJvcGVydHlPcGVyYXRpb25zLmNyZWF0ZU1hcmt1cEZvclN0
eWxlcyhwcm9wVmFsdWUsIHRoaXMpO1xuXHQgICAgICAgIH1cblx0ICAgICAgICB2YXIgbWFya3Vw
ID0gbnVsbDtcblx0ICAgICAgICBpZiAodGhpcy5fdGFnICE9IG51bGwgJiYgaXNDdXN0b21Db21w
b25lbnQodGhpcy5fdGFnLCBwcm9wcykpIHtcblx0ICAgICAgICAgIGlmICghUkVTRVJWRURfUFJP
UFMuaGFzT3duUHJvcGVydHkocHJvcEtleSkpIHtcblx0ICAgICAgICAgICAgbWFya3VwID0gRE9N
UHJvcGVydHlPcGVyYXRpb25zLmNyZWF0ZU1hcmt1cEZvckN1c3RvbUF0dHJpYnV0ZShwcm9wS2V5
LCBwcm9wVmFsdWUpO1xuXHQgICAgICAgICAgfVxuXHQgICAgICAgIH0gZWxzZSB7XG5cdCAgICAg
ICAgICBtYXJrdXAgPSBET01Qcm9wZXJ0eU9wZXJhdGlvbnMuY3JlYXRlTWFya3VwRm9yUHJvcGVy
dHkocHJvcEtleSwgcHJvcFZhbHVlKTtcblx0ICAgICAgICB9XG5cdCAgICAgICAgaWYgKG1hcmt1
cCkge1xuXHQgICAgICAgICAgcmV0ICs9ICcgJyArIG1hcmt1cDtcblx0ICAgICAgICB9XG5cdCAg
ICAgIH1cblx0ICAgIH1cblx0XG5cdCAgICAvLyBGb3Igc3RhdGljIHBhZ2VzLCBubyBuZWVkIHRv
IHB1dCBSZWFjdCBJRCBhbmQgY2hlY2tzdW0uIFNhdmVzIGxvdHMgb2Zcblx0ICAgIC8vIGJ5dGVz
LlxuXHQgICAgaWYgKHRyYW5zYWN0aW9uLnJlbmRlclRvU3RhdGljTWFya3VwKSB7XG5cdCAgICAg
IHJldHVybiByZXQ7XG5cdCAgICB9XG5cdFxuXHQgICAgaWYgKCF0aGlzLl9ob3N0UGFyZW50KSB7
XG5cdCAgICAgIHJldCArPSAnICcgKyBET01Qcm9wZXJ0eU9wZXJhdGlvbnMuY3JlYXRlTWFya3Vw
Rm9yUm9vdCgpO1xuXHQgICAgfVxuXHQgICAgcmV0ICs9ICcgJyArIERPTVByb3BlcnR5T3BlcmF0
aW9ucy5jcmVhdGVNYXJrdXBGb3JJRCh0aGlzLl9kb21JRCk7XG5cdCAgICByZXR1cm4gcmV0O1xu
XHQgIH0sXG5cdFxuXHQgIC8qKlxuXHQgICAqIENyZWF0ZXMgbWFya3VwIGZvciB0aGUgY29udGVu
dCBiZXR3ZWVuIHRoZSB0YWdzLlxuXHQgICAqXG5cdCAgICogQHByaXZhdGVcblx0ICAgKiBAcGFy
YW0ge1JlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb258UmVhY3RTZXJ2ZXJSZW5kZXJpbmdUcmFuc2Fj
dGlvbn0gdHJhbnNhY3Rpb25cblx0ICAgKiBAcGFyYW0ge29iamVjdH0gcHJvcHNcblx0ICAgKiBA
cGFyYW0ge29iamVjdH0gY29udGV4dFxuXHQgICAqIEByZXR1cm4ge3N0cmluZ30gQ29udGVudCBt
YXJrdXAuXG5cdCAgICovXG5cdCAgX2NyZWF0ZUNvbnRlbnRNYXJrdXA6IGZ1bmN0aW9uICh0cmFu
c2FjdGlvbiwgcHJvcHMsIGNvbnRleHQpIHtcblx0ICAgIHZhciByZXQgPSAnJztcblx0XG5cdCAg
ICAvLyBJbnRlbnRpb25hbCB1c2Ugb2YgIT0gdG8gYXZvaWQgY2F0Y2hpbmcgemVyby9mYWxzZS5c
blx0ICAgIHZhciBpbm5lckhUTUwgPSBwcm9wcy5kYW5nZXJvdXNseVNldElubmVySFRNTDtcblx0
ICAgIGlmIChpbm5lckhUTUwgIT0gbnVsbCkge1xuXHQgICAgICBpZiAoaW5uZXJIVE1MLl9faHRt
bCAhPSBudWxsKSB7XG5cdCAgICAgICAgcmV0ID0gaW5uZXJIVE1MLl9faHRtbDtcblx0ICAgICAg
fVxuXHQgICAgfSBlbHNlIHtcblx0ICAgICAgdmFyIGNvbnRlbnRUb1VzZSA9IENPTlRFTlRfVFlQ
RVNbdHlwZW9mIHByb3BzLmNoaWxkcmVuXSA/IHByb3BzLmNoaWxkcmVuIDogbnVsbDtcblx0ICAg
ICAgdmFyIGNoaWxkcmVuVG9Vc2UgPSBjb250ZW50VG9Vc2UgIT0gbnVsbCA/IG51bGwgOiBwcm9w
cy5jaGlsZHJlbjtcblx0ICAgICAgaWYgKGNvbnRlbnRUb1VzZSAhPSBudWxsKSB7XG5cdCAgICAg
ICAgLy8gVE9ETzogVmFsaWRhdGUgdGhhdCB0ZXh0IGlzIGFsbG93ZWQgYXMgYSBjaGlsZCBvZiB0
aGlzIG5vZGVcblx0ICAgICAgICByZXQgPSBlc2NhcGVUZXh0Q29udGVudEZvckJyb3dzZXIoY29u
dGVudFRvVXNlKTtcblx0ICAgICAgICBpZiAoZmFsc2UpIHtcblx0ICAgICAgICAgIHNldEFuZFZh
bGlkYXRlQ29udGVudENoaWxkRGV2LmNhbGwodGhpcywgY29udGVudFRvVXNlKTtcblx0ICAgICAg
ICB9XG5cdCAgICAgIH0gZWxzZSBpZiAoY2hpbGRyZW5Ub1VzZSAhPSBudWxsKSB7XG5cdCAgICAg
ICAgdmFyIG1vdW50SW1hZ2VzID0gdGhpcy5tb3VudENoaWxkcmVuKGNoaWxkcmVuVG9Vc2UsIHRy
YW5zYWN0aW9uLCBjb250ZXh0KTtcblx0ICAgICAgICByZXQgPSBtb3VudEltYWdlcy5qb2luKCcn
KTtcblx0ICAgICAgfVxuXHQgICAgfVxuXHQgICAgaWYgKG5ld2xpbmVFYXRpbmdUYWdzW3RoaXMu
X3RhZ10gJiYgcmV0LmNoYXJBdCgwKSA9PT0gJ1xcbicpIHtcblx0ICAgICAgLy8gdGV4dC9odG1s
IGlnbm9yZXMgdGhlIGZpcnN0IGNoYXJhY3RlciBpbiB0aGVzZSB0YWdzIGlmIGl0J3MgYSBuZXds
aW5lXG5cdCAgICAgIC8vIFByZWZlciB0byBicmVhayBhcHBsaWNhdGlvbi94bWwgb3ZlciB0ZXh0
L2h0bWwgKGZvciBub3cpIGJ5IGFkZGluZ1xuXHQgICAgICAvLyBhIG5ld2xpbmUgc3BlY2lmaWNh
bGx5IHRvIGdldCBlYXRlbiBieSB0aGUgcGFyc2VyLiAoQWx0ZXJuYXRlbHkgZm9yXG5cdCAgICAg
IC8vIHRleHRhcmVhcywgcmVwbGFjaW5nIFwiXlxcblwiIHdpdGggXCJcXHJcXG5cIiBkb2Vzbid0
IGdldCBlYXRlbiwgYW5kIHRoZSBmaXJzdFxuXHQgICAgICAvLyBcXHIgaXMgbm9ybWFsaXplZCBv
dXQgYnkgSFRNTFRleHRBcmVhRWxlbWVudCN2YWx1ZS4pXG5cdCAgICAgIC8vIFNlZTogPGh0dHA6
Ly93d3cudzMub3JnL1RSL2h0bWwtcG9seWdsb3QvI25ld2xpbmVzLWluLXRleHRhcmVhLWFuZC1w
cmU+XG5cdCAgICAgIC8vIFNlZTogPGh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw1L3N5bnRheC5o
dG1sI2VsZW1lbnQtcmVzdHJpY3Rpb25zPlxuXHQgICAgICAvLyBTZWU6IDxodHRwOi8vd3d3Lncz
Lm9yZy9UUi9odG1sNS9zeW50YXguaHRtbCNuZXdsaW5lcz5cblx0ICAgICAgLy8gU2VlOiBQYXJz
aW5nIG9mIFwidGV4dGFyZWFcIiBcImxpc3RpbmdcIiBhbmQgXCJwcmVcIiBlbGVtZW50c1xuXHQg
ICAgICAvLyAgZnJvbSA8aHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDUvc3ludGF4Lmh0bWwjcGFy
c2luZy1tYWluLWluYm9keT5cblx0ICAgICAgcmV0dXJuICdcXG4nICsgcmV0O1xuXHQgICAgfSBl
bHNlIHtcblx0ICAgICAgcmV0dXJuIHJldDtcblx0ICAgIH1cblx0ICB9LFxuXHRcblx0ICBfY3Jl
YXRlSW5pdGlhbENoaWxkcmVuOiBmdW5jdGlvbiAodHJhbnNhY3Rpb24sIHByb3BzLCBjb250ZXh0
LCBsYXp5VHJlZSkge1xuXHQgICAgLy8gSW50ZW50aW9uYWwgdXNlIG9mICE9IHRvIGF2b2lkIGNh
dGNoaW5nIHplcm8vZmFsc2UuXG5cdCAgICB2YXIgaW5uZXJIVE1MID0gcHJvcHMuZGFuZ2Vyb3Vz
bHlTZXRJbm5lckhUTUw7XG5cdCAgICBpZiAoaW5uZXJIVE1MICE9IG51bGwpIHtcblx0ICAgICAg
aWYgKGlubmVySFRNTC5fX2h0bWwgIT0gbnVsbCkge1xuXHQgICAgICAgIERPTUxhenlUcmVlLnF1
ZXVlSFRNTChsYXp5VHJlZSwgaW5uZXJIVE1MLl9faHRtbCk7XG5cdCAgICAgIH1cblx0ICAgIH0g
ZWxzZSB7XG5cdCAgICAgIHZhciBjb250ZW50VG9Vc2UgPSBDT05URU5UX1RZUEVTW3R5cGVvZiBw
cm9wcy5jaGlsZHJlbl0gPyBwcm9wcy5jaGlsZHJlbiA6IG51bGw7XG5cdCAgICAgIHZhciBjaGls
ZHJlblRvVXNlID0gY29udGVudFRvVXNlICE9IG51bGwgPyBudWxsIDogcHJvcHMuY2hpbGRyZW47
XG5cdCAgICAgIC8vIFRPRE86IFZhbGlkYXRlIHRoYXQgdGV4dCBpcyBhbGxvd2VkIGFzIGEgY2hp
bGQgb2YgdGhpcyBub2RlXG5cdCAgICAgIGlmIChjb250ZW50VG9Vc2UgIT0gbnVsbCkge1xuXHQg
ICAgICAgIC8vIEF2b2lkIHNldHRpbmcgdGV4dENvbnRlbnQgd2hlbiB0aGUgdGV4dCBpcyBlbXB0
eS4gSW4gSUUxMSBzZXR0aW5nXG5cdCAgICAgICAgLy8gdGV4dENvbnRlbnQgb24gYSB0ZXh0IGFy
ZWEgd2lsbCBjYXVzZSB0aGUgcGxhY2Vob2xkZXIgdG8gbm90XG5cdCAgICAgICAgLy8gc2hvdyB3
aXRoaW4gdGhlIHRleHRhcmVhIHVudGlsIGl0IGhhcyBiZWVuIGZvY3VzZWQgYW5kIGJsdXJyZWQg
YWdhaW4uXG5cdCAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0L2lz
c3Vlcy82NzMxI2lzc3VlY29tbWVudC0yNTQ4NzQ1NTNcblx0ICAgICAgICBpZiAoY29udGVudFRv
VXNlICE9PSAnJykge1xuXHQgICAgICAgICAgaWYgKGZhbHNlKSB7XG5cdCAgICAgICAgICAgIHNl
dEFuZFZhbGlkYXRlQ29udGVudENoaWxkRGV2LmNhbGwodGhpcywgY29udGVudFRvVXNlKTtcblx0
ICAgICAgICAgIH1cblx0ICAgICAgICAgIERPTUxhenlUcmVlLnF1ZXVlVGV4dChsYXp5VHJlZSwg
Y29udGVudFRvVXNlKTtcblx0ICAgICAgICB9XG5cdCAgICAgIH0gZWxzZSBpZiAoY2hpbGRyZW5U
b1VzZSAhPSBudWxsKSB7XG5cdCAgICAgICAgdmFyIG1vdW50SW1hZ2VzID0gdGhpcy5tb3VudENo
aWxkcmVuKGNoaWxkcmVuVG9Vc2UsIHRyYW5zYWN0aW9uLCBjb250ZXh0KTtcblx0ICAgICAgICBm
b3IgKHZhciBpID0gMDsgaSA8IG1vdW50SW1hZ2VzLmxlbmd0aDsgaSsrKSB7XG5cdCAgICAgICAg
ICBET01MYXp5VHJlZS5xdWV1ZUNoaWxkKGxhenlUcmVlLCBtb3VudEltYWdlc1tpXSk7XG5cdCAg
ICAgICAgfVxuXHQgICAgICB9XG5cdCAgICB9XG5cdCAgfSxcblx0XG5cdCAgLyoqXG5cdCAgICog
UmVjZWl2ZXMgYSBuZXh0IGVsZW1lbnQgYW5kIHVwZGF0ZXMgdGhlIGNvbXBvbmVudC5cblx0ICAg
KlxuXHQgICAqIEBpbnRlcm5hbFxuXHQgICAqIEBwYXJhbSB7UmVhY3RFbGVtZW50fSBuZXh0RWxl
bWVudFxuXHQgICAqIEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbnxSZWFjdFNlcnZl
clJlbmRlcmluZ1RyYW5zYWN0aW9ufSB0cmFuc2FjdGlvblxuXHQgICAqIEBwYXJhbSB7b2JqZWN0
fSBjb250ZXh0XG5cdCAgICovXG5cdCAgcmVjZWl2ZUNvbXBvbmVudDogZnVuY3Rpb24gKG5leHRF
bGVtZW50LCB0cmFuc2FjdGlvbiwgY29udGV4dCkge1xuXHQgICAgdmFyIHByZXZFbGVtZW50ID0g
dGhpcy5fY3VycmVudEVsZW1lbnQ7XG5cdCAgICB0aGlzLl9jdXJyZW50RWxlbWVudCA9IG5leHRF
bGVtZW50O1xuXHQgICAgdGhpcy51cGRhdGVDb21wb25lbnQodHJhbnNhY3Rpb24sIHByZXZFbGVt
ZW50LCBuZXh0RWxlbWVudCwgY29udGV4dCk7XG5cdCAgfSxcblx0XG5cdCAgLyoqXG5cdCAgICog
VXBkYXRlcyBhIERPTSBjb21wb25lbnQgYWZ0ZXIgaXQgaGFzIGFscmVhZHkgYmVlbiBhbGxvY2F0
ZWQgYW5kXG5cdCAgICogYXR0YWNoZWQgdG8gdGhlIERPTS4gUmVjb25jaWxlcyB0aGUgcm9vdCBE
T00gbm9kZSwgdGhlbiByZWN1cnNlcy5cblx0ICAgKlxuXHQgICAqIEBwYXJhbSB7UmVhY3RSZWNv
bmNpbGVUcmFuc2FjdGlvbn0gdHJhbnNhY3Rpb25cblx0ICAgKiBAcGFyYW0ge1JlYWN0RWxlbWVu
dH0gcHJldkVsZW1lbnRcblx0ICAgKiBAcGFyYW0ge1JlYWN0RWxlbWVudH0gbmV4dEVsZW1lbnRc
blx0ICAgKiBAaW50ZXJuYWxcblx0ICAgKiBAb3ZlcnJpZGFibGVcblx0ICAgKi9cblx0ICB1cGRh
dGVDb21wb25lbnQ6IGZ1bmN0aW9uICh0cmFuc2FjdGlvbiwgcHJldkVsZW1lbnQsIG5leHRFbGVt
ZW50LCBjb250ZXh0KSB7XG5cdCAgICB2YXIgbGFzdFByb3BzID0gcHJldkVsZW1lbnQucHJvcHM7
XG5cdCAgICB2YXIgbmV4dFByb3BzID0gdGhpcy5fY3VycmVudEVsZW1lbnQucHJvcHM7XG5cdFxu
XHQgICAgc3dpdGNoICh0aGlzLl90YWcpIHtcblx0ICAgICAgY2FzZSAnaW5wdXQnOlxuXHQgICAg
ICAgIGxhc3RQcm9wcyA9IFJlYWN0RE9NSW5wdXQuZ2V0SG9zdFByb3BzKHRoaXMsIGxhc3RQcm9w
cyk7XG5cdCAgICAgICAgbmV4dFByb3BzID0gUmVhY3RET01JbnB1dC5nZXRIb3N0UHJvcHModGhp
cywgbmV4dFByb3BzKTtcblx0ICAgICAgICBicmVhaztcblx0ICAgICAgY2FzZSAnb3B0aW9uJzpc
blx0ICAgICAgICBsYXN0UHJvcHMgPSBSZWFjdERPTU9wdGlvbi5nZXRIb3N0UHJvcHModGhpcywg
bGFzdFByb3BzKTtcblx0ICAgICAgICBuZXh0UHJvcHMgPSBSZWFjdERPTU9wdGlvbi5nZXRIb3N0
UHJvcHModGhpcywgbmV4dFByb3BzKTtcblx0ICAgICAgICBicmVhaztcblx0ICAgICAgY2FzZSAn
c2VsZWN0Jzpcblx0ICAgICAgICBsYXN0UHJvcHMgPSBSZWFjdERPTVNlbGVjdC5nZXRIb3N0UHJv
cHModGhpcywgbGFzdFByb3BzKTtcblx0ICAgICAgICBuZXh0UHJvcHMgPSBSZWFjdERPTVNlbGVj
dC5nZXRIb3N0UHJvcHModGhpcywgbmV4dFByb3BzKTtcblx0ICAgICAgICBicmVhaztcblx0ICAg
ICAgY2FzZSAndGV4dGFyZWEnOlxuXHQgICAgICAgIGxhc3RQcm9wcyA9IFJlYWN0RE9NVGV4dGFy
ZWEuZ2V0SG9zdFByb3BzKHRoaXMsIGxhc3RQcm9wcyk7XG5cdCAgICAgICAgbmV4dFByb3BzID0g
UmVhY3RET01UZXh0YXJlYS5nZXRIb3N0UHJvcHModGhpcywgbmV4dFByb3BzKTtcblx0ICAgICAg
ICBicmVhaztcblx0ICAgIH1cblx0XG5cdCAgICBhc3NlcnRWYWxpZFByb3BzKHRoaXMsIG5leHRQ
cm9wcyk7XG5cdCAgICB0aGlzLl91cGRhdGVET01Qcm9wZXJ0aWVzKGxhc3RQcm9wcywgbmV4dFBy
b3BzLCB0cmFuc2FjdGlvbik7XG5cdCAgICB0aGlzLl91cGRhdGVET01DaGlsZHJlbihsYXN0UHJv
cHMsIG5leHRQcm9wcywgdHJhbnNhY3Rpb24sIGNvbnRleHQpO1xuXHRcblx0ICAgIHN3aXRjaCAo
dGhpcy5fdGFnKSB7XG5cdCAgICAgIGNhc2UgJ2lucHV0Jzpcblx0ICAgICAgICAvLyBVcGRhdGUg
dGhlIHdyYXBwZXIgYXJvdW5kIGlucHV0cyAqYWZ0ZXIqIHVwZGF0aW5nIHByb3BzLiBUaGlzIGhh
cyB0b1xuXHQgICAgICAgIC8vIGhhcHBlbiBhZnRlciBgX3VwZGF0ZURPTVByb3BlcnRpZXNgLiBP
dGhlcndpc2UgSFRNTDUgaW5wdXQgdmFsaWRhdGlvbnNcblx0ICAgICAgICAvLyByYWlzZSB3YXJu
aW5ncyBhbmQgcHJldmVudCB0aGUgbmV3IHZhbHVlIGZyb20gYmVpbmcgYXNzaWduZWQuXG5cdCAg
ICAgICAgUmVhY3RET01JbnB1dC51cGRhdGVXcmFwcGVyKHRoaXMpO1xuXHQgICAgICAgIGJyZWFr
O1xuXHQgICAgICBjYXNlICd0ZXh0YXJlYSc6XG5cdCAgICAgICAgUmVhY3RET01UZXh0YXJlYS51
cGRhdGVXcmFwcGVyKHRoaXMpO1xuXHQgICAgICAgIGJyZWFrO1xuXHQgICAgICBjYXNlICdzZWxl
Y3QnOlxuXHQgICAgICAgIC8vIDxzZWxlY3Q+IHZhbHVlIHVwZGF0ZSBuZWVkcyB0byBvY2N1ciBh
ZnRlciA8b3B0aW9uPiBjaGlsZHJlblxuXHQgICAgICAgIC8vIHJlY29uY2lsaWF0aW9uXG5cdCAg
ICAgICAgdHJhbnNhY3Rpb24uZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1ZShwb3N0VXBkYXRl
U2VsZWN0V3JhcHBlciwgdGhpcyk7XG5cdCAgICAgICAgYnJlYWs7XG5cdCAgICB9XG5cdCAgfSxc
blx0XG5cdCAgLyoqXG5cdCAgICogUmVjb25jaWxlcyB0aGUgcHJvcGVydGllcyBieSBkZXRlY3Rp
bmcgZGlmZmVyZW5jZXMgaW4gcHJvcGVydHkgdmFsdWVzIGFuZFxuXHQgICAqIHVwZGF0aW5nIHRo
ZSBET00gYXMgbmVjZXNzYXJ5LiBUaGlzIGZ1bmN0aW9uIGlzIHByb2JhYmx5IHRoZSBzaW5nbGUg
bW9zdFxuXHQgICAqIGNyaXRpY2FsIHBhdGggZm9yIHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbi5c
blx0ICAgKlxuXHQgICAqIFRPRE86IEJlbmNobWFyayB3aGV0aGVyIGNoZWNraW5nIGZvciBjaGFu
Z2VkIHZhbHVlcyBpbiBtZW1vcnkgYWN0dWFsbHlcblx0ICAgKiAgICAgICBpbXByb3ZlcyBwZXJm
b3JtYW5jZSAoZXNwZWNpYWxseSBzdGF0aWNhbGx5IHBvc2l0aW9uZWQgZWxlbWVudHMpLlxuXHQg
ICAqIFRPRE86IEJlbmNobWFyayB0aGUgZWZmZWN0cyBvZiBwdXR0aW5nIHRoaXMgYXQgdGhlIHRv
cCBzaW5jZSA5OSUgb2YgcHJvcHNcblx0ICAgKiAgICAgICBkbyBub3QgY2hhbmdlIGZvciBhIGdp
dmVuIHJlY29uY2lsaWF0aW9uLlxuXHQgICAqIFRPRE86IEJlbmNobWFyayBhcmVhcyB0aGF0IGNh
biBiZSBpbXByb3ZlZCB3aXRoIGNhY2hpbmcuXG5cdCAgICpcblx0ICAgKiBAcHJpdmF0ZVxuXHQg
ICAqIEBwYXJhbSB7b2JqZWN0fSBsYXN0UHJvcHNcblx0ICAgKiBAcGFyYW0ge29iamVjdH0gbmV4
dFByb3BzXG5cdCAgICogQHBhcmFtIHs/RE9NRWxlbWVudH0gbm9kZVxuXHQgICAqL1xuXHQgIF91
cGRhdGVET01Qcm9wZXJ0aWVzOiBmdW5jdGlvbiAobGFzdFByb3BzLCBuZXh0UHJvcHMsIHRyYW5z
YWN0aW9uKSB7XG5cdCAgICB2YXIgcHJvcEtleTtcblx0ICAgIHZhciBzdHlsZU5hbWU7XG5cdCAg
ICB2YXIgc3R5bGVVcGRhdGVzO1xuXHQgICAgZm9yIChwcm9wS2V5IGluIGxhc3RQcm9wcykge1xu
XHQgICAgICBpZiAobmV4dFByb3BzLmhhc093blByb3BlcnR5KHByb3BLZXkpIHx8ICFsYXN0UHJv
cHMuaGFzT3duUHJvcGVydHkocHJvcEtleSkgfHwgbGFzdFByb3BzW3Byb3BLZXldID09IG51bGwp
IHtcblx0ICAgICAgICBjb250aW51ZTtcblx0ICAgICAgfVxuXHQgICAgICBpZiAocHJvcEtleSA9
PT0gU1RZTEUpIHtcblx0ICAgICAgICB2YXIgbGFzdFN0eWxlID0gdGhpcy5fcHJldmlvdXNTdHls
ZUNvcHk7XG5cdCAgICAgICAgZm9yIChzdHlsZU5hbWUgaW4gbGFzdFN0eWxlKSB7XG5cdCAgICAg
ICAgICBpZiAobGFzdFN0eWxlLmhhc093blByb3BlcnR5KHN0eWxlTmFtZSkpIHtcblx0ICAgICAg
ICAgICAgc3R5bGVVcGRhdGVzID0gc3R5bGVVcGRhdGVzIHx8IHt9O1xuXHQgICAgICAgICAgICBz
dHlsZVVwZGF0ZXNbc3R5bGVOYW1lXSA9ICcnO1xuXHQgICAgICAgICAgfVxuXHQgICAgICAgIH1c
blx0ICAgICAgICB0aGlzLl9wcmV2aW91c1N0eWxlQ29weSA9IG51bGw7XG5cdCAgICAgIH0gZWxz
ZSBpZiAocmVnaXN0cmF0aW9uTmFtZU1vZHVsZXMuaGFzT3duUHJvcGVydHkocHJvcEtleSkpIHtc
blx0ICAgICAgICBpZiAobGFzdFByb3BzW3Byb3BLZXldKSB7XG5cdCAgICAgICAgICAvLyBPbmx5
IGNhbGwgZGVsZXRlTGlzdGVuZXIgaWYgdGhlcmUgd2FzIGEgbGlzdGVuZXIgcHJldmlvdXNseSBv
clxuXHQgICAgICAgICAgLy8gZWxzZSB3aWxsRGVsZXRlTGlzdGVuZXIgZ2V0cyBjYWxsZWQgd2hl
biB0aGVyZSB3YXNuJ3QgYWN0dWFsbHkgYVxuXHQgICAgICAgICAgLy8gbGlzdGVuZXIgKGUuZy4s
IG9uQ2xpY2s9e251bGx9KVxuXHQgICAgICAgICAgZGVsZXRlTGlzdGVuZXIodGhpcywgcHJvcEtl
eSk7XG5cdCAgICAgICAgfVxuXHQgICAgICB9IGVsc2UgaWYgKGlzQ3VzdG9tQ29tcG9uZW50KHRo
aXMuX3RhZywgbGFzdFByb3BzKSkge1xuXHQgICAgICAgIGlmICghUkVTRVJWRURfUFJPUFMuaGFz
T3duUHJvcGVydHkocHJvcEtleSkpIHtcblx0ICAgICAgICAgIERPTVByb3BlcnR5T3BlcmF0aW9u
cy5kZWxldGVWYWx1ZUZvckF0dHJpYnV0ZShnZXROb2RlKHRoaXMpLCBwcm9wS2V5KTtcblx0ICAg
ICAgICB9XG5cdCAgICAgIH0gZWxzZSBpZiAoRE9NUHJvcGVydHkucHJvcGVydGllc1twcm9wS2V5
XSB8fCBET01Qcm9wZXJ0eS5pc0N1c3RvbUF0dHJpYnV0ZShwcm9wS2V5KSkge1xuXHQgICAgICAg
IERPTVByb3BlcnR5T3BlcmF0aW9ucy5kZWxldGVWYWx1ZUZvclByb3BlcnR5KGdldE5vZGUodGhp
cyksIHByb3BLZXkpO1xuXHQgICAgICB9XG5cdCAgICB9XG5cdCAgICBmb3IgKHByb3BLZXkgaW4g
bmV4dFByb3BzKSB7XG5cdCAgICAgIHZhciBuZXh0UHJvcCA9IG5leHRQcm9wc1twcm9wS2V5XTtc
blx0ICAgICAgdmFyIGxhc3RQcm9wID0gcHJvcEtleSA9PT0gU1RZTEUgPyB0aGlzLl9wcmV2aW91
c1N0eWxlQ29weSA6IGxhc3RQcm9wcyAhPSBudWxsID8gbGFzdFByb3BzW3Byb3BLZXldIDogdW5k
ZWZpbmVkO1xuXHQgICAgICBpZiAoIW5leHRQcm9wcy5oYXNPd25Qcm9wZXJ0eShwcm9wS2V5KSB8
fCBuZXh0UHJvcCA9PT0gbGFzdFByb3AgfHwgbmV4dFByb3AgPT0gbnVsbCAmJiBsYXN0UHJvcCA9
PSBudWxsKSB7XG5cdCAgICAgICAgY29udGludWU7XG5cdCAgICAgIH1cblx0ICAgICAgaWYgKHBy
b3BLZXkgPT09IFNUWUxFKSB7XG5cdCAgICAgICAgaWYgKG5leHRQcm9wKSB7XG5cdCAgICAgICAg
ICBpZiAoZmFsc2UpIHtcblx0ICAgICAgICAgICAgY2hlY2tBbmRXYXJuRm9yTXV0YXRlZFN0eWxl
KHRoaXMuX3ByZXZpb3VzU3R5bGVDb3B5LCB0aGlzLl9wcmV2aW91c1N0eWxlLCB0aGlzKTtcblx0
ICAgICAgICAgICAgdGhpcy5fcHJldmlvdXNTdHlsZSA9IG5leHRQcm9wO1xuXHQgICAgICAgICAg
fVxuXHQgICAgICAgICAgbmV4dFByb3AgPSB0aGlzLl9wcmV2aW91c1N0eWxlQ29weSA9IF9hc3Np
Z24oe30sIG5leHRQcm9wKTtcblx0ICAgICAgICB9IGVsc2Uge1xuXHQgICAgICAgICAgdGhpcy5f
cHJldmlvdXNTdHlsZUNvcHkgPSBudWxsO1xuXHQgICAgICAgIH1cblx0ICAgICAgICBpZiAobGFz
dFByb3ApIHtcblx0ICAgICAgICAgIC8vIFVuc2V0IHN0eWxlcyBvbiBgbGFzdFByb3BgIGJ1dCBu
b3Qgb24gYG5leHRQcm9wYC5cblx0ICAgICAgICAgIGZvciAoc3R5bGVOYW1lIGluIGxhc3RQcm9w
KSB7XG5cdCAgICAgICAgICAgIGlmIChsYXN0UHJvcC5oYXNPd25Qcm9wZXJ0eShzdHlsZU5hbWUp
ICYmICghbmV4dFByb3AgfHwgIW5leHRQcm9wLmhhc093blByb3BlcnR5KHN0eWxlTmFtZSkpKSB7
XG5cdCAgICAgICAgICAgICAgc3R5bGVVcGRhdGVzID0gc3R5bGVVcGRhdGVzIHx8IHt9O1xuXHQg
ICAgICAgICAgICAgIHN0eWxlVXBkYXRlc1tzdHlsZU5hbWVdID0gJyc7XG5cdCAgICAgICAgICAg
IH1cblx0ICAgICAgICAgIH1cblx0ICAgICAgICAgIC8vIFVwZGF0ZSBzdHlsZXMgdGhhdCBjaGFu
Z2VkIHNpbmNlIGBsYXN0UHJvcGAuXG5cdCAgICAgICAgICBmb3IgKHN0eWxlTmFtZSBpbiBuZXh0
UHJvcCkge1xuXHQgICAgICAgICAgICBpZiAobmV4dFByb3AuaGFzT3duUHJvcGVydHkoc3R5bGVO
YW1lKSAmJiBsYXN0UHJvcFtzdHlsZU5hbWVdICE9PSBuZXh0UHJvcFtzdHlsZU5hbWVdKSB7XG5c
dCAgICAgICAgICAgICAgc3R5bGVVcGRhdGVzID0gc3R5bGVVcGRhdGVzIHx8IHt9O1xuXHQgICAg
ICAgICAgICAgIHN0eWxlVXBkYXRlc1tzdHlsZU5hbWVdID0gbmV4dFByb3Bbc3R5bGVOYW1lXTtc
blx0ICAgICAgICAgICAgfVxuXHQgICAgICAgICAgfVxuXHQgICAgICAgIH0gZWxzZSB7XG5cdCAg
ICAgICAgICAvLyBSZWxpZXMgb24gYHVwZGF0ZVN0eWxlc0J5SURgIG5vdCBtdXRhdGluZyBgc3R5
bGVVcGRhdGVzYC5cblx0ICAgICAgICAgIHN0eWxlVXBkYXRlcyA9IG5leHRQcm9wO1xuXHQgICAg
ICAgIH1cblx0ICAgICAgfSBlbHNlIGlmIChyZWdpc3RyYXRpb25OYW1lTW9kdWxlcy5oYXNPd25Q
cm9wZXJ0eShwcm9wS2V5KSkge1xuXHQgICAgICAgIGlmIChuZXh0UHJvcCkge1xuXHQgICAgICAg
ICAgZW5xdWV1ZVB1dExpc3RlbmVyKHRoaXMsIHByb3BLZXksIG5leHRQcm9wLCB0cmFuc2FjdGlv
bik7XG5cdCAgICAgICAgfSBlbHNlIGlmIChsYXN0UHJvcCkge1xuXHQgICAgICAgICAgZGVsZXRl
TGlzdGVuZXIodGhpcywgcHJvcEtleSk7XG5cdCAgICAgICAgfVxuXHQgICAgICB9IGVsc2UgaWYg
KGlzQ3VzdG9tQ29tcG9uZW50KHRoaXMuX3RhZywgbmV4dFByb3BzKSkge1xuXHQgICAgICAgIGlm
ICghUkVTRVJWRURfUFJPUFMuaGFzT3duUHJvcGVydHkocHJvcEtleSkpIHtcblx0ICAgICAgICAg
IERPTVByb3BlcnR5T3BlcmF0aW9ucy5zZXRWYWx1ZUZvckF0dHJpYnV0ZShnZXROb2RlKHRoaXMp
LCBwcm9wS2V5LCBuZXh0UHJvcCk7XG5cdCAgICAgICAgfVxuXHQgICAgICB9IGVsc2UgaWYgKERP
TVByb3BlcnR5LnByb3BlcnRpZXNbcHJvcEtleV0gfHwgRE9NUHJvcGVydHkuaXNDdXN0b21BdHRy
aWJ1dGUocHJvcEtleSkpIHtcblx0ICAgICAgICB2YXIgbm9kZSA9IGdldE5vZGUodGhpcyk7XG5c
dCAgICAgICAgLy8gSWYgd2UncmUgdXBkYXRpbmcgdG8gbnVsbCBvciB1bmRlZmluZWQsIHdlIHNo
b3VsZCByZW1vdmUgdGhlIHByb3BlcnR5XG5cdCAgICAgICAgLy8gZnJvbSB0aGUgRE9NIG5vZGUg
aW5zdGVhZCBvZiBpbmFkdmVydGVudGx5IHNldHRpbmcgdG8gYSBzdHJpbmcuIFRoaXNcblx0ICAg
ICAgICAvLyBicmluZ3MgdXMgaW4gbGluZSB3aXRoIHRoZSBzYW1lIGJlaGF2aW9yIHdlIGhhdmUg
b24gaW5pdGlhbCByZW5kZXIuXG5cdCAgICAgICAgaWYgKG5leHRQcm9wICE9IG51bGwpIHtcblx0
ICAgICAgICAgIERPTVByb3BlcnR5T3BlcmF0aW9ucy5zZXRWYWx1ZUZvclByb3BlcnR5KG5vZGUs
IHByb3BLZXksIG5leHRQcm9wKTtcblx0ICAgICAgICB9IGVsc2Uge1xuXHQgICAgICAgICAgRE9N
UHJvcGVydHlPcGVyYXRpb25zLmRlbGV0ZVZhbHVlRm9yUHJvcGVydHkobm9kZSwgcHJvcEtleSk7
XG5cdCAgICAgICAgfVxuXHQgICAgICB9XG5cdCAgICB9XG5cdCAgICBpZiAoc3R5bGVVcGRhdGVz
KSB7XG5cdCAgICAgIENTU1Byb3BlcnR5T3BlcmF0aW9ucy5zZXRWYWx1ZUZvclN0eWxlcyhnZXRO
b2RlKHRoaXMpLCBzdHlsZVVwZGF0ZXMsIHRoaXMpO1xuXHQgICAgfVxuXHQgIH0sXG5cdFxuXHQg
IC8qKlxuXHQgICAqIFJlY29uY2lsZXMgdGhlIGNoaWxkcmVuIHdpdGggdGhlIHZhcmlvdXMgcHJv
cGVydGllcyB0aGF0IGFmZmVjdCB0aGVcblx0ICAgKiBjaGlsZHJlbiBjb250ZW50LlxuXHQgICAq
XG5cdCAgICogQHBhcmFtIHtvYmplY3R9IGxhc3RQcm9wc1xuXHQgICAqIEBwYXJhbSB7b2JqZWN0
fSBuZXh0UHJvcHNcblx0ICAgKiBAcGFyYW0ge1JlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb259IHRy
YW5zYWN0aW9uXG5cdCAgICogQHBhcmFtIHtvYmplY3R9IGNvbnRleHRcblx0ICAgKi9cblx0ICBf
dXBkYXRlRE9NQ2hpbGRyZW46IGZ1bmN0aW9uIChsYXN0UHJvcHMsIG5leHRQcm9wcywgdHJhbnNh
Y3Rpb24sIGNvbnRleHQpIHtcblx0ICAgIHZhciBsYXN0Q29udGVudCA9IENPTlRFTlRfVFlQRVNb
dHlwZW9mIGxhc3RQcm9wcy5jaGlsZHJlbl0gPyBsYXN0UHJvcHMuY2hpbGRyZW4gOiBudWxsO1xu
XHQgICAgdmFyIG5leHRDb250ZW50ID0gQ09OVEVOVF9UWVBFU1t0eXBlb2YgbmV4dFByb3BzLmNo
aWxkcmVuXSA/IG5leHRQcm9wcy5jaGlsZHJlbiA6IG51bGw7XG5cdFxuXHQgICAgdmFyIGxhc3RI
dG1sID0gbGFzdFByb3BzLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MICYmIGxhc3RQcm9wcy5kYW5n
ZXJvdXNseVNldElubmVySFRNTC5fX2h0bWw7XG5cdCAgICB2YXIgbmV4dEh0bWwgPSBuZXh0UHJv
cHMuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwgJiYgbmV4dFByb3BzLmRhbmdlcm91c2x5U2V0SW5u
ZXJIVE1MLl9faHRtbDtcblx0XG5cdCAgICAvLyBOb3RlIHRoZSB1c2Ugb2YgYCE9YCB3aGljaCBj
aGVja3MgZm9yIG51bGwgb3IgdW5kZWZpbmVkLlxuXHQgICAgdmFyIGxhc3RDaGlsZHJlbiA9IGxh
c3RDb250ZW50ICE9IG51bGwgPyBudWxsIDogbGFzdFByb3BzLmNoaWxkcmVuO1xuXHQgICAgdmFy
IG5leHRDaGlsZHJlbiA9IG5leHRDb250ZW50ICE9IG51bGwgPyBudWxsIDogbmV4dFByb3BzLmNo
aWxkcmVuO1xuXHRcblx0ICAgIC8vIElmIHdlJ3JlIHN3aXRjaGluZyBmcm9tIGNoaWxkcmVuIHRv
IGNvbnRlbnQvaHRtbCBvciB2aWNlIHZlcnNhLCByZW1vdmVcblx0ICAgIC8vIHRoZSBvbGQgY29u
dGVudFxuXHQgICAgdmFyIGxhc3RIYXNDb250ZW50T3JIdG1sID0gbGFzdENvbnRlbnQgIT0gbnVs
bCB8fCBsYXN0SHRtbCAhPSBudWxsO1xuXHQgICAgdmFyIG5leHRIYXNDb250ZW50T3JIdG1sID0g
bmV4dENvbnRlbnQgIT0gbnVsbCB8fCBuZXh0SHRtbCAhPSBudWxsO1xuXHQgICAgaWYgKGxhc3RD
aGlsZHJlbiAhPSBudWxsICYmIG5leHRDaGlsZHJlbiA9PSBudWxsKSB7XG5cdCAgICAgIHRoaXMu
dXBkYXRlQ2hpbGRyZW4obnVsbCwgdHJhbnNhY3Rpb24sIGNvbnRleHQpO1xuXHQgICAgfSBlbHNl
IGlmIChsYXN0SGFzQ29udGVudE9ySHRtbCAmJiAhbmV4dEhhc0NvbnRlbnRPckh0bWwpIHtcblx0
ICAgICAgdGhpcy51cGRhdGVUZXh0Q29udGVudCgnJyk7XG5cdCAgICAgIGlmIChmYWxzZSkge1xu
XHQgICAgICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vblNldENoaWxkcmVuKHRo
aXMuX2RlYnVnSUQsIFtdKTtcblx0ICAgICAgfVxuXHQgICAgfVxuXHRcblx0ICAgIGlmIChuZXh0
Q29udGVudCAhPSBudWxsKSB7XG5cdCAgICAgIGlmIChsYXN0Q29udGVudCAhPT0gbmV4dENvbnRl
bnQpIHtcblx0ICAgICAgICB0aGlzLnVwZGF0ZVRleHRDb250ZW50KCcnICsgbmV4dENvbnRlbnQp
O1xuXHQgICAgICAgIGlmIChmYWxzZSkge1xuXHQgICAgICAgICAgc2V0QW5kVmFsaWRhdGVDb250
ZW50Q2hpbGREZXYuY2FsbCh0aGlzLCBuZXh0Q29udGVudCk7XG5cdCAgICAgICAgfVxuXHQgICAg
ICB9XG5cdCAgICB9IGVsc2UgaWYgKG5leHRIdG1sICE9IG51bGwpIHtcblx0ICAgICAgaWYgKGxh
c3RIdG1sICE9PSBuZXh0SHRtbCkge1xuXHQgICAgICAgIHRoaXMudXBkYXRlTWFya3VwKCcnICsg
bmV4dEh0bWwpO1xuXHQgICAgICB9XG5cdCAgICAgIGlmIChmYWxzZSkge1xuXHQgICAgICAgIFJl
YWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vblNldENoaWxkcmVuKHRoaXMuX2RlYnVnSUQs
IFtdKTtcblx0ICAgICAgfVxuXHQgICAgfSBlbHNlIGlmIChuZXh0Q2hpbGRyZW4gIT0gbnVsbCkg
e1xuXHQgICAgICBpZiAoZmFsc2UpIHtcblx0ICAgICAgICBzZXRBbmRWYWxpZGF0ZUNvbnRlbnRD
aGlsZERldi5jYWxsKHRoaXMsIG51bGwpO1xuXHQgICAgICB9XG5cdFxuXHQgICAgICB0aGlzLnVw
ZGF0ZUNoaWxkcmVuKG5leHRDaGlsZHJlbiwgdHJhbnNhY3Rpb24sIGNvbnRleHQpO1xuXHQgICAg
fVxuXHQgIH0sXG5cdFxuXHQgIGdldEhvc3ROb2RlOiBmdW5jdGlvbiAoKSB7XG5cdCAgICByZXR1
cm4gZ2V0Tm9kZSh0aGlzKTtcblx0ICB9LFxuXHRcblx0ICAvKipcblx0ICAgKiBEZXN0cm95cyBh
bGwgZXZlbnQgcmVnaXN0cmF0aW9ucyBmb3IgdGhpcyBpbnN0YW5jZS4gRG9lcyBub3QgcmVtb3Zl
IGZyb21cblx0ICAgKiB0aGUgRE9NLiBUaGF0IG11c3QgYmUgZG9uZSBieSB0aGUgcGFyZW50Llxu
XHQgICAqXG5cdCAgICogQGludGVybmFsXG5cdCAgICovXG5cdCAgdW5tb3VudENvbXBvbmVudDog
ZnVuY3Rpb24gKHNhZmVseSkge1xuXHQgICAgc3dpdGNoICh0aGlzLl90YWcpIHtcblx0ICAgICAg
Y2FzZSAnYXVkaW8nOlxuXHQgICAgICBjYXNlICdmb3JtJzpcblx0ICAgICAgY2FzZSAnaWZyYW1l
Jzpcblx0ICAgICAgY2FzZSAnaW1nJzpcblx0ICAgICAgY2FzZSAnbGluayc6XG5cdCAgICAgIGNh
c2UgJ29iamVjdCc6XG5cdCAgICAgIGNhc2UgJ3NvdXJjZSc6XG5cdCAgICAgIGNhc2UgJ3ZpZGVv
Jzpcblx0ICAgICAgICB2YXIgbGlzdGVuZXJzID0gdGhpcy5fd3JhcHBlclN0YXRlLmxpc3RlbmVy
cztcblx0ICAgICAgICBpZiAobGlzdGVuZXJzKSB7XG5cdCAgICAgICAgICBmb3IgKHZhciBpID0g
MDsgaSA8IGxpc3RlbmVycy5sZW5ndGg7IGkrKykge1xuXHQgICAgICAgICAgICBsaXN0ZW5lcnNb
aV0ucmVtb3ZlKCk7XG5cdCAgICAgICAgICB9XG5cdCAgICAgICAgfVxuXHQgICAgICAgIGJyZWFr
O1xuXHQgICAgICBjYXNlICdpbnB1dCc6XG5cdCAgICAgIGNhc2UgJ3RleHRhcmVhJzpcblx0ICAg
ICAgICBpbnB1dFZhbHVlVHJhY2tpbmcuc3RvcFRyYWNraW5nKHRoaXMpO1xuXHQgICAgICAgIGJy
ZWFrO1xuXHQgICAgICBjYXNlICdodG1sJzpcblx0ICAgICAgY2FzZSAnaGVhZCc6XG5cdCAgICAg
IGNhc2UgJ2JvZHknOlxuXHQgICAgICAgIC8qKlxuXHQgICAgICAgICAqIENvbXBvbmVudHMgbGlr
ZSA8aHRtbD4gPGhlYWQ+IGFuZCA8Ym9keT4gY2FuJ3QgYmUgcmVtb3ZlZCBvciBhZGRlZFxuXHQg
ICAgICAgICAqIGVhc2lseSBpbiBhIGNyb3NzLWJyb3dzZXIgd2F5LCBob3dldmVyIGl0J3MgdmFs
dWFibGUgdG8gYmUgYWJsZSB0b1xuXHQgICAgICAgICAqIHRha2UgYWR2YW50YWdlIG9mIFJlYWN0
J3MgcmVjb25jaWxpYXRpb24gZm9yIHN0eWxpbmcgYW5kIDx0aXRsZT5cblx0ICAgICAgICAgKiBt
YW5hZ2VtZW50LiBTbyB3ZSBqdXN0IGRvY3VtZW50IGl0IGFuZCB0aHJvdyBpbiBkYW5nZXJvdXMg
Y2FzZXMuXG5cdCAgICAgICAgICovXG5cdCAgICAgICAgIHRydWUgPyAgZmFsc2UgPyBpbnZhcmlh
bnQoZmFsc2UsICc8JXM+IHRyaWVkIHRvIHVubW91bnQuIEJlY2F1c2Ugb2YgY3Jvc3MtYnJvd3Nl
ciBxdWlya3MgaXQgaXMgaW1wb3NzaWJsZSB0byB1bm1vdW50IHNvbWUgdG9wLWxldmVsIGNvbXBv
bmVudHMgKGVnIDxodG1sPiwgPGhlYWQ+LCBhbmQgPGJvZHk+KSByZWxpYWJseSBhbmQgZWZmaWNp
ZW50bHkuIFRvIGZpeCB0aGlzLCBoYXZlIGEgc2luZ2xlIHRvcC1sZXZlbCBjb21wb25lbnQgdGhh
dCBuZXZlciB1bm1vdW50cyByZW5kZXIgdGhlc2UgZWxlbWVudHMuJywgdGhpcy5fdGFnKSA6IF9w
cm9kSW52YXJpYW50KCc2NicsIHRoaXMuX3RhZykgOiB2b2lkIDA7XG5cdCAgICAgICAgYnJlYWs7
XG5cdCAgICB9XG5cdFxuXHQgICAgdGhpcy51bm1vdW50Q2hpbGRyZW4oc2FmZWx5KTtcblx0ICAg
IFJlYWN0RE9NQ29tcG9uZW50VHJlZS51bmNhY2hlTm9kZSh0aGlzKTtcblx0ICAgIEV2ZW50UGx1
Z2luSHViLmRlbGV0ZUFsbExpc3RlbmVycyh0aGlzKTtcblx0ICAgIHRoaXMuX3Jvb3ROb2RlSUQg
PSAwO1xuXHQgICAgdGhpcy5fZG9tSUQgPSAwO1xuXHQgICAgdGhpcy5fd3JhcHBlclN0YXRlID0g
bnVsbDtcblx0XG5cdCAgICBpZiAoZmFsc2UpIHtcblx0ICAgICAgc2V0QW5kVmFsaWRhdGVDb250
ZW50Q2hpbGREZXYuY2FsbCh0aGlzLCBudWxsKTtcblx0ICAgIH1cblx0ICB9LFxuXHRcblx0ICBn
ZXRQdWJsaWNJbnN0YW5jZTogZnVuY3Rpb24gKCkge1xuXHQgICAgcmV0dXJuIGdldE5vZGUodGhp
cyk7XG5cdCAgfVxuXHR9O1xuXHRcblx0X2Fzc2lnbihSZWFjdERPTUNvbXBvbmVudC5wcm90b3R5
cGUsIFJlYWN0RE9NQ29tcG9uZW50Lk1peGluLCBSZWFjdE11bHRpQ2hpbGQuTWl4aW4pO1xuXHRc
blx0bW9kdWxlLmV4cG9ydHMgPSBSZWFjdERPTUNvbXBvbmVudDtcblxuLyoqKi8gfSxcbi8qIDEz
OSAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9f
KSB7XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMu
XG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUg
aXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQg
KiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUu
IEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQg
aW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqL1xu
XHRcblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0dmFyIHZhbGlkYXRlRE9NTmVzdGluZyA9IF9fd2Vi
cGFja19yZXF1aXJlX18oNDkpO1xuXHRcblx0dmFyIERPQ19OT0RFX1RZUEUgPSA5O1xuXHRcblx0
ZnVuY3Rpb24gUmVhY3RET01Db250YWluZXJJbmZvKHRvcExldmVsV3JhcHBlciwgbm9kZSkge1xu
XHQgIHZhciBpbmZvID0ge1xuXHQgICAgX3RvcExldmVsV3JhcHBlcjogdG9wTGV2ZWxXcmFwcGVy
LFxuXHQgICAgX2lkQ291bnRlcjogMSxcblx0ICAgIF9vd25lckRvY3VtZW50OiBub2RlID8gbm9k
ZS5ub2RlVHlwZSA9PT0gRE9DX05PREVfVFlQRSA/IG5vZGUgOiBub2RlLm93bmVyRG9jdW1lbnQg
OiBudWxsLFxuXHQgICAgX25vZGU6IG5vZGUsXG5cdCAgICBfdGFnOiBub2RlID8gbm9kZS5ub2Rl
TmFtZS50b0xvd2VyQ2FzZSgpIDogbnVsbCxcblx0ICAgIF9uYW1lc3BhY2VVUkk6IG5vZGUgPyBu
b2RlLm5hbWVzcGFjZVVSSSA6IG51bGxcblx0ICB9O1xuXHQgIGlmIChmYWxzZSkge1xuXHQgICAg
aW5mby5fYW5jZXN0b3JJbmZvID0gbm9kZSA/IHZhbGlkYXRlRE9NTmVzdGluZy51cGRhdGVkQW5j
ZXN0b3JJbmZvKG51bGwsIGluZm8uX3RhZywgbnVsbCkgOiBudWxsO1xuXHQgIH1cblx0ICByZXR1
cm4gaW5mbztcblx0fVxuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBSZWFjdERPTUNvbnRhaW5lcklu
Zm87XG5cbi8qKiovIH0sXG4vKiAxNDAgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0
cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxNC1w
cmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxu
XHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGlj
ZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9y
eSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVu
dCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGly
ZWN0b3J5LlxuXHQgKlxuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdHZhciBfYXNz
aWduID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0KTtcblx0XG5cdHZhciBET01MYXp5VHJlZSA9IF9f
d2VicGFja19yZXF1aXJlX18oMTQpO1xuXHR2YXIgUmVhY3RET01Db21wb25lbnRUcmVlID0gX193
ZWJwYWNrX3JlcXVpcmVfXyg1KTtcblx0XG5cdHZhciBSZWFjdERPTUVtcHR5Q29tcG9uZW50ID0g
ZnVuY3Rpb24gKGluc3RhbnRpYXRlKSB7XG5cdCAgLy8gUmVhY3RDb21wb3NpdGVDb21wb25lbnQg
dXNlcyB0aGlzOlxuXHQgIHRoaXMuX2N1cnJlbnRFbGVtZW50ID0gbnVsbDtcblx0ICAvLyBSZWFj
dERPTUNvbXBvbmVudFRyZWUgdXNlcyB0aGVzZTpcblx0ICB0aGlzLl9ob3N0Tm9kZSA9IG51bGw7
XG5cdCAgdGhpcy5faG9zdFBhcmVudCA9IG51bGw7XG5cdCAgdGhpcy5faG9zdENvbnRhaW5lcklu
Zm8gPSBudWxsO1xuXHQgIHRoaXMuX2RvbUlEID0gMDtcblx0fTtcblx0X2Fzc2lnbihSZWFjdERP
TUVtcHR5Q29tcG9uZW50LnByb3RvdHlwZSwge1xuXHQgIG1vdW50Q29tcG9uZW50OiBmdW5jdGlv
biAodHJhbnNhY3Rpb24sIGhvc3RQYXJlbnQsIGhvc3RDb250YWluZXJJbmZvLCBjb250ZXh0KSB7
XG5cdCAgICB2YXIgZG9tSUQgPSBob3N0Q29udGFpbmVySW5mby5faWRDb3VudGVyKys7XG5cdCAg
ICB0aGlzLl9kb21JRCA9IGRvbUlEO1xuXHQgICAgdGhpcy5faG9zdFBhcmVudCA9IGhvc3RQYXJl
bnQ7XG5cdCAgICB0aGlzLl9ob3N0Q29udGFpbmVySW5mbyA9IGhvc3RDb250YWluZXJJbmZvO1xu
XHRcblx0ICAgIHZhciBub2RlVmFsdWUgPSAnIHJlYWN0LWVtcHR5OiAnICsgdGhpcy5fZG9tSUQg
KyAnICc7XG5cdCAgICBpZiAodHJhbnNhY3Rpb24udXNlQ3JlYXRlRWxlbWVudCkge1xuXHQgICAg
ICB2YXIgb3duZXJEb2N1bWVudCA9IGhvc3RDb250YWluZXJJbmZvLl9vd25lckRvY3VtZW50O1xu
XHQgICAgICB2YXIgbm9kZSA9IG93bmVyRG9jdW1lbnQuY3JlYXRlQ29tbWVudChub2RlVmFsdWUp
O1xuXHQgICAgICBSZWFjdERPTUNvbXBvbmVudFRyZWUucHJlY2FjaGVOb2RlKHRoaXMsIG5vZGUp
O1xuXHQgICAgICByZXR1cm4gRE9NTGF6eVRyZWUobm9kZSk7XG5cdCAgICB9IGVsc2Uge1xuXHQg
ICAgICBpZiAodHJhbnNhY3Rpb24ucmVuZGVyVG9TdGF0aWNNYXJrdXApIHtcblx0ICAgICAgICAv
LyBOb3JtYWxseSB3ZSdkIGluc2VydCBhIGNvbW1lbnQgbm9kZSwgYnV0IHNpbmNlIHRoaXMgaXMg
YSBzaXR1YXRpb25cblx0ICAgICAgICAvLyB3aGVyZSBSZWFjdCB3b24ndCB0YWtlIG92ZXIgKHN0
YXRpYyBwYWdlcyksIHdlIGNhbiBzaW1wbHkgcmV0dXJuXG5cdCAgICAgICAgLy8gbm90aGluZy5c
blx0ICAgICAgICByZXR1cm4gJyc7XG5cdCAgICAgIH1cblx0ICAgICAgcmV0dXJuICc8IS0tJyAr
IG5vZGVWYWx1ZSArICctLT4nO1xuXHQgICAgfVxuXHQgIH0sXG5cdCAgcmVjZWl2ZUNvbXBvbmVu
dDogZnVuY3Rpb24gKCkge30sXG5cdCAgZ2V0SG9zdE5vZGU6IGZ1bmN0aW9uICgpIHtcblx0ICAg
IHJldHVybiBSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0Tm9kZUZyb21JbnN0YW5jZSh0aGlzKTtc
blx0ICB9LFxuXHQgIHVubW91bnRDb21wb25lbnQ6IGZ1bmN0aW9uICgpIHtcblx0ICAgIFJlYWN0
RE9NQ29tcG9uZW50VHJlZS51bmNhY2hlTm9kZSh0aGlzKTtcblx0ICB9XG5cdH0pO1xuXHRcblx0
bW9kdWxlLmV4cG9ydHMgPSBSZWFjdERPTUVtcHR5Q29tcG9uZW50O1xuXG4vKioqLyB9LFxuLyog
MTQxICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuXHQvKipcblx0ICog
Q29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyBy
ZXNlcnZlZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0
aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0
aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFu
dFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxl
IGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpcblx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7
XG5cdFxuXHR2YXIgUmVhY3RET01GZWF0dXJlRmxhZ3MgPSB7XG5cdCAgdXNlQ3JlYXRlRWxlbWVu
dDogdHJ1ZSxcblx0ICB1c2VGaWJlcjogZmFsc2Vcblx0fTtcblx0XG5cdG1vZHVsZS5leHBvcnRz
ID0gUmVhY3RET01GZWF0dXJlRmxhZ3M7XG5cbi8qKiovIH0sXG4vKiAxNDIgKi9cbi8qKiovIGZ1
bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8qKlxu
XHQgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmln
aHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVu
ZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxl
IGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFs
IGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRT
IGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKi9cblx0XG5cdCd1c2Ugc3Ry
aWN0Jztcblx0XG5cdHZhciBET01DaGlsZHJlbk9wZXJhdGlvbnMgPSBfX3dlYnBhY2tfcmVxdWly
ZV9fKDM0KTtcblx0dmFyIFJlYWN0RE9NQ29tcG9uZW50VHJlZSA9IF9fd2VicGFja19yZXF1aXJl
X18oNSk7XG5cdFxuXHQvKipcblx0ICogT3BlcmF0aW9ucyB1c2VkIHRvIHByb2Nlc3MgdXBkYXRl
cyB0byBET00gbm9kZXMuXG5cdCAqL1xuXHR2YXIgUmVhY3RET01JRE9wZXJhdGlvbnMgPSB7XG5c
dCAgLyoqXG5cdCAgICogVXBkYXRlcyBhIGNvbXBvbmVudCdzIGNoaWxkcmVuIGJ5IHByb2Nlc3Np
bmcgYSBzZXJpZXMgb2YgdXBkYXRlcy5cblx0ICAgKlxuXHQgICAqIEBwYXJhbSB7YXJyYXk8b2Jq
ZWN0Pn0gdXBkYXRlcyBMaXN0IG9mIHVwZGF0ZSBjb25maWd1cmF0aW9ucy5cblx0ICAgKiBAaW50
ZXJuYWxcblx0ICAgKi9cblx0ICBkYW5nZXJvdXNseVByb2Nlc3NDaGlsZHJlblVwZGF0ZXM6IGZ1
bmN0aW9uIChwYXJlbnRJbnN0LCB1cGRhdGVzKSB7XG5cdCAgICB2YXIgbm9kZSA9IFJlYWN0RE9N
Q29tcG9uZW50VHJlZS5nZXROb2RlRnJvbUluc3RhbmNlKHBhcmVudEluc3QpO1xuXHQgICAgRE9N
Q2hpbGRyZW5PcGVyYXRpb25zLnByb2Nlc3NVcGRhdGVzKG5vZGUsIHVwZGF0ZXMpO1xuXHQgIH1c
blx0fTtcblx0XG5cdG1vZHVsZS5leHBvcnRzID0gUmVhY3RET01JRE9wZXJhdGlvbnM7XG5cbi8q
KiovIH0sXG4vKiAxNDMgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJw
YWNrX3JlcXVpcmVfXykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBG
YWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlz
IHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3Vu
ZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlz
IHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMg
Y2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5Llxu
XHQgKlxuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdHZhciBfcHJvZEludmFyaWFu
dCA9IF9fd2VicGFja19yZXF1aXJlX18oMyksXG5cdCAgICBfYXNzaWduID0gX193ZWJwYWNrX3Jl
cXVpcmVfXyg0KTtcblx0XG5cdHZhciBET01Qcm9wZXJ0eU9wZXJhdGlvbnMgPSBfX3dlYnBhY2tf
cmVxdWlyZV9fKDYwKTtcblx0dmFyIExpbmtlZFZhbHVlVXRpbHMgPSBfX3dlYnBhY2tfcmVxdWly
ZV9fKDM5KTtcblx0dmFyIFJlYWN0RE9NQ29tcG9uZW50VHJlZSA9IF9fd2VicGFja19yZXF1aXJl
X18oNSk7XG5cdHZhciBSZWFjdFVwZGF0ZXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDkpO1xuXHRc
blx0dmFyIGludmFyaWFudCA9IF9fd2VicGFja19yZXF1aXJlX18oMSk7XG5cdHZhciB3YXJuaW5n
ID0gX193ZWJwYWNrX3JlcXVpcmVfXygyKTtcblx0XG5cdHZhciBkaWRXYXJuVmFsdWVMaW5rID0g
ZmFsc2U7XG5cdHZhciBkaWRXYXJuQ2hlY2tlZExpbmsgPSBmYWxzZTtcblx0dmFyIGRpZFdhcm5W
YWx1ZURlZmF1bHRWYWx1ZSA9IGZhbHNlO1xuXHR2YXIgZGlkV2FybkNoZWNrZWREZWZhdWx0Q2hl
Y2tlZCA9IGZhbHNlO1xuXHR2YXIgZGlkV2FybkNvbnRyb2xsZWRUb1VuY29udHJvbGxlZCA9IGZh
bHNlO1xuXHR2YXIgZGlkV2FyblVuY29udHJvbGxlZFRvQ29udHJvbGxlZCA9IGZhbHNlO1xuXHRc
blx0ZnVuY3Rpb24gZm9yY2VVcGRhdGVJZk1vdW50ZWQoKSB7XG5cdCAgaWYgKHRoaXMuX3Jvb3RO
b2RlSUQpIHtcblx0ICAgIC8vIERPTSBjb21wb25lbnQgaXMgc3RpbGwgbW91bnRlZDsgdXBkYXRl
XG5cdCAgICBSZWFjdERPTUlucHV0LnVwZGF0ZVdyYXBwZXIodGhpcyk7XG5cdCAgfVxuXHR9XG5c
dFxuXHRmdW5jdGlvbiBpc0NvbnRyb2xsZWQocHJvcHMpIHtcblx0ICB2YXIgdXNlc0NoZWNrZWQg
PSBwcm9wcy50eXBlID09PSAnY2hlY2tib3gnIHx8IHByb3BzLnR5cGUgPT09ICdyYWRpbyc7XG5c
dCAgcmV0dXJuIHVzZXNDaGVja2VkID8gcHJvcHMuY2hlY2tlZCAhPSBudWxsIDogcHJvcHMudmFs
dWUgIT0gbnVsbDtcblx0fVxuXHRcblx0LyoqXG5cdCAqIEltcGxlbWVudHMgYW4gPGlucHV0PiBo
b3N0IGNvbXBvbmVudCB0aGF0IGFsbG93cyBzZXR0aW5nIHRoZXNlIG9wdGlvbmFsXG5cdCAqIHBy
b3BzOiBgY2hlY2tlZGAsIGB2YWx1ZWAsIGBkZWZhdWx0Q2hlY2tlZGAsIGFuZCBgZGVmYXVsdFZh
bHVlYC5cblx0ICpcblx0ICogSWYgYGNoZWNrZWRgIG9yIGB2YWx1ZWAgYXJlIG5vdCBzdXBwbGll
ZCAob3IgbnVsbC91bmRlZmluZWQpLCB1c2VyIGFjdGlvbnNcblx0ICogdGhhdCBhZmZlY3QgdGhl
IGNoZWNrZWQgc3RhdGUgb3IgdmFsdWUgd2lsbCB0cmlnZ2VyIHVwZGF0ZXMgdG8gdGhlIGVsZW1l
bnQuXG5cdCAqXG5cdCAqIElmIHRoZXkgYXJlIHN1cHBsaWVkIChhbmQgbm90IG51bGwvdW5kZWZp
bmVkKSwgdGhlIHJlbmRlcmVkIGVsZW1lbnQgd2lsbCBub3Rcblx0ICogdHJpZ2dlciB1cGRhdGVz
IHRvIHRoZSBlbGVtZW50LiBJbnN0ZWFkLCB0aGUgcHJvcHMgbXVzdCBjaGFuZ2UgaW4gb3JkZXIg
Zm9yXG5cdCAqIHRoZSByZW5kZXJlZCBlbGVtZW50IHRvIGJlIHVwZGF0ZWQuXG5cdCAqXG5cdCAq
IFRoZSByZW5kZXJlZCBlbGVtZW50IHdpbGwgYmUgaW5pdGlhbGl6ZWQgYXMgdW5jaGVja2VkIChv
ciBgZGVmYXVsdENoZWNrZWRgKVxuXHQgKiB3aXRoIGFuIGVtcHR5IHZhbHVlIChvciBgZGVmYXVs
dFZhbHVlYCkuXG5cdCAqXG5cdCAqIEBzZWUgaHR0cDovL3d3dy53My5vcmcvVFIvMjAxMi9XRC1o
dG1sNS0yMDEyMTAyNS90aGUtaW5wdXQtZWxlbWVudC5odG1sXG5cdCAqL1xuXHR2YXIgUmVhY3RE
T01JbnB1dCA9IHtcblx0ICBnZXRIb3N0UHJvcHM6IGZ1bmN0aW9uIChpbnN0LCBwcm9wcykge1xu
XHQgICAgdmFyIHZhbHVlID0gTGlua2VkVmFsdWVVdGlscy5nZXRWYWx1ZShwcm9wcyk7XG5cdCAg
ICB2YXIgY2hlY2tlZCA9IExpbmtlZFZhbHVlVXRpbHMuZ2V0Q2hlY2tlZChwcm9wcyk7XG5cdFxu
XHQgICAgdmFyIGhvc3RQcm9wcyA9IF9hc3NpZ24oe1xuXHQgICAgICAvLyBNYWtlIHN1cmUgd2Ug
c2V0IC50eXBlIGJlZm9yZSBhbnkgb3RoZXIgcHJvcGVydGllcyAoc2V0dGluZyAudmFsdWVcblx0
ICAgICAgLy8gYmVmb3JlIC50eXBlIG1lYW5zIC52YWx1ZSBpcyBsb3N0IGluIElFMTEgYW5kIGJl
bG93KVxuXHQgICAgICB0eXBlOiB1bmRlZmluZWQsXG5cdCAgICAgIC8vIE1ha2Ugc3VyZSB3ZSBz
ZXQgLnN0ZXAgYmVmb3JlIC52YWx1ZSAoc2V0dGluZyAudmFsdWUgYmVmb3JlIC5zdGVwXG5cdCAg
ICAgIC8vIG1lYW5zIC52YWx1ZSBpcyByb3VuZGVkIG9uIG1vdW50LCBiYXNlZCB1cG9uIHN0ZXAg
cHJlY2lzaW9uKVxuXHQgICAgICBzdGVwOiB1bmRlZmluZWQsXG5cdCAgICAgIC8vIE1ha2Ugc3Vy
ZSB3ZSBzZXQgLm1pbiAmIC5tYXggYmVmb3JlIC52YWx1ZSAodG8gZW5zdXJlIHByb3BlciBvcmRl
clxuXHQgICAgICAvLyBpbiBjb3JuZXIgY2FzZXMgc3VjaCBhcyBtaW4gb3IgbWF4IGRlcml2aW5n
IGZyb20gdmFsdWUsIGUuZy4gSXNzdWUgIzcxNzApXG5cdCAgICAgIG1pbjogdW5kZWZpbmVkLFxu
XHQgICAgICBtYXg6IHVuZGVmaW5lZFxuXHQgICAgfSwgcHJvcHMsIHtcblx0ICAgICAgZGVmYXVs
dENoZWNrZWQ6IHVuZGVmaW5lZCxcblx0ICAgICAgZGVmYXVsdFZhbHVlOiB1bmRlZmluZWQsXG5c
dCAgICAgIHZhbHVlOiB2YWx1ZSAhPSBudWxsID8gdmFsdWUgOiBpbnN0Ll93cmFwcGVyU3RhdGUu
aW5pdGlhbFZhbHVlLFxuXHQgICAgICBjaGVja2VkOiBjaGVja2VkICE9IG51bGwgPyBjaGVja2Vk
IDogaW5zdC5fd3JhcHBlclN0YXRlLmluaXRpYWxDaGVja2VkLFxuXHQgICAgICBvbkNoYW5nZTog
aW5zdC5fd3JhcHBlclN0YXRlLm9uQ2hhbmdlXG5cdCAgICB9KTtcblx0XG5cdCAgICByZXR1cm4g
aG9zdFByb3BzO1xuXHQgIH0sXG5cdFxuXHQgIG1vdW50V3JhcHBlcjogZnVuY3Rpb24gKGluc3Qs
IHByb3BzKSB7XG5cdCAgICBpZiAoZmFsc2UpIHtcblx0ICAgICAgTGlua2VkVmFsdWVVdGlscy5j
aGVja1Byb3BUeXBlcygnaW5wdXQnLCBwcm9wcywgaW5zdC5fY3VycmVudEVsZW1lbnQuX293bmVy
KTtcblx0XG5cdCAgICAgIHZhciBvd25lciA9IGluc3QuX2N1cnJlbnRFbGVtZW50Ll9vd25lcjtc
blx0XG5cdCAgICAgIGlmIChwcm9wcy52YWx1ZUxpbmsgIT09IHVuZGVmaW5lZCAmJiAhZGlkV2Fy
blZhbHVlTGluaykge1xuXHQgICAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVj
dGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnYHZhbHVlTGlua2AgcHJvcCBvbiBgaW5wdXRgIGlzIGRl
cHJlY2F0ZWQ7IHNldCBgdmFsdWVgIGFuZCBgb25DaGFuZ2VgIGluc3RlYWQuJykgOiB2b2lkIDA7
XG5cdCAgICAgICAgZGlkV2FyblZhbHVlTGluayA9IHRydWU7XG5cdCAgICAgIH1cblx0ICAgICAg
aWYgKHByb3BzLmNoZWNrZWRMaW5rICE9PSB1bmRlZmluZWQgJiYgIWRpZFdhcm5DaGVja2VkTGlu
aykge1xuXHQgICAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3
YXJuaW5nKGZhbHNlLCAnYGNoZWNrZWRMaW5rYCBwcm9wIG9uIGBpbnB1dGAgaXMgZGVwcmVjYXRl
ZDsgc2V0IGB2YWx1ZWAgYW5kIGBvbkNoYW5nZWAgaW5zdGVhZC4nKSA6IHZvaWQgMDtcblx0ICAg
ICAgICBkaWRXYXJuQ2hlY2tlZExpbmsgPSB0cnVlO1xuXHQgICAgICB9XG5cdCAgICAgIGlmIChw
cm9wcy5jaGVja2VkICE9PSB1bmRlZmluZWQgJiYgcHJvcHMuZGVmYXVsdENoZWNrZWQgIT09IHVu
ZGVmaW5lZCAmJiAhZGlkV2FybkNoZWNrZWREZWZhdWx0Q2hlY2tlZCkge1xuXHQgICAgICAgIHBy
b2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnJXMg
Y29udGFpbnMgYW4gaW5wdXQgb2YgdHlwZSAlcyB3aXRoIGJvdGggY2hlY2tlZCBhbmQgZGVmYXVs
dENoZWNrZWQgcHJvcHMuICcgKyAnSW5wdXQgZWxlbWVudHMgbXVzdCBiZSBlaXRoZXIgY29udHJv
bGxlZCBvciB1bmNvbnRyb2xsZWQgJyArICcoc3BlY2lmeSBlaXRoZXIgdGhlIGNoZWNrZWQgcHJv
cCwgb3IgdGhlIGRlZmF1bHRDaGVja2VkIHByb3AsIGJ1dCBub3QgJyArICdib3RoKS4gRGVjaWRl
IGJldHdlZW4gdXNpbmcgYSBjb250cm9sbGVkIG9yIHVuY29udHJvbGxlZCBpbnB1dCAnICsgJ2Vs
ZW1lbnQgYW5kIHJlbW92ZSBvbmUgb2YgdGhlc2UgcHJvcHMuIE1vcmUgaW5mbzogJyArICdodHRw
czovL2ZiLm1lL3JlYWN0LWNvbnRyb2xsZWQtY29tcG9uZW50cycsIG93bmVyICYmIG93bmVyLmdl
dE5hbWUoKSB8fCAnQSBjb21wb25lbnQnLCBwcm9wcy50eXBlKSA6IHZvaWQgMDtcblx0ICAgICAg
ICBkaWRXYXJuQ2hlY2tlZERlZmF1bHRDaGVja2VkID0gdHJ1ZTtcblx0ICAgICAgfVxuXHQgICAg
ICBpZiAocHJvcHMudmFsdWUgIT09IHVuZGVmaW5lZCAmJiBwcm9wcy5kZWZhdWx0VmFsdWUgIT09
IHVuZGVmaW5lZCAmJiAhZGlkV2FyblZhbHVlRGVmYXVsdFZhbHVlKSB7XG5cdCAgICAgICAgcHJv
Y2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICclcyBj
b250YWlucyBhbiBpbnB1dCBvZiB0eXBlICVzIHdpdGggYm90aCB2YWx1ZSBhbmQgZGVmYXVsdFZh
bHVlIHByb3BzLiAnICsgJ0lucHV0IGVsZW1lbnRzIG11c3QgYmUgZWl0aGVyIGNvbnRyb2xsZWQg
b3IgdW5jb250cm9sbGVkICcgKyAnKHNwZWNpZnkgZWl0aGVyIHRoZSB2YWx1ZSBwcm9wLCBvciB0
aGUgZGVmYXVsdFZhbHVlIHByb3AsIGJ1dCBub3QgJyArICdib3RoKS4gRGVjaWRlIGJldHdlZW4g
dXNpbmcgYSBjb250cm9sbGVkIG9yIHVuY29udHJvbGxlZCBpbnB1dCAnICsgJ2VsZW1lbnQgYW5k
IHJlbW92ZSBvbmUgb2YgdGhlc2UgcHJvcHMuIE1vcmUgaW5mbzogJyArICdodHRwczovL2ZiLm1l
L3JlYWN0LWNvbnRyb2xsZWQtY29tcG9uZW50cycsIG93bmVyICYmIG93bmVyLmdldE5hbWUoKSB8
fCAnQSBjb21wb25lbnQnLCBwcm9wcy50eXBlKSA6IHZvaWQgMDtcblx0ICAgICAgICBkaWRXYXJu
VmFsdWVEZWZhdWx0VmFsdWUgPSB0cnVlO1xuXHQgICAgICB9XG5cdCAgICB9XG5cdFxuXHQgICAg
dmFyIGRlZmF1bHRWYWx1ZSA9IHByb3BzLmRlZmF1bHRWYWx1ZTtcblx0ICAgIGluc3QuX3dyYXBw
ZXJTdGF0ZSA9IHtcblx0ICAgICAgaW5pdGlhbENoZWNrZWQ6IHByb3BzLmNoZWNrZWQgIT0gbnVs
bCA/IHByb3BzLmNoZWNrZWQgOiBwcm9wcy5kZWZhdWx0Q2hlY2tlZCxcblx0ICAgICAgaW5pdGlh
bFZhbHVlOiBwcm9wcy52YWx1ZSAhPSBudWxsID8gcHJvcHMudmFsdWUgOiBkZWZhdWx0VmFsdWUs
XG5cdCAgICAgIGxpc3RlbmVyczogbnVsbCxcblx0ICAgICAgb25DaGFuZ2U6IF9oYW5kbGVDaGFu
Z2UuYmluZChpbnN0KSxcblx0ICAgICAgY29udHJvbGxlZDogaXNDb250cm9sbGVkKHByb3BzKVxu
XHQgICAgfTtcblx0ICB9LFxuXHRcblx0ICB1cGRhdGVXcmFwcGVyOiBmdW5jdGlvbiAoaW5zdCkg
e1xuXHQgICAgdmFyIHByb3BzID0gaW5zdC5fY3VycmVudEVsZW1lbnQucHJvcHM7XG5cdFxuXHQg
ICAgaWYgKGZhbHNlKSB7XG5cdCAgICAgIHZhciBjb250cm9sbGVkID0gaXNDb250cm9sbGVkKHBy
b3BzKTtcblx0ICAgICAgdmFyIG93bmVyID0gaW5zdC5fY3VycmVudEVsZW1lbnQuX293bmVyO1xu
XHRcblx0ICAgICAgaWYgKCFpbnN0Ll93cmFwcGVyU3RhdGUuY29udHJvbGxlZCAmJiBjb250cm9s
bGVkICYmICFkaWRXYXJuVW5jb250cm9sbGVkVG9Db250cm9sbGVkKSB7XG5cdCAgICAgICAgcHJv
Y2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICclcyBp
cyBjaGFuZ2luZyBhbiB1bmNvbnRyb2xsZWQgaW5wdXQgb2YgdHlwZSAlcyB0byBiZSBjb250cm9s
bGVkLiAnICsgJ0lucHV0IGVsZW1lbnRzIHNob3VsZCBub3Qgc3dpdGNoIGZyb20gdW5jb250cm9s
bGVkIHRvIGNvbnRyb2xsZWQgKG9yIHZpY2UgdmVyc2EpLiAnICsgJ0RlY2lkZSBiZXR3ZWVuIHVz
aW5nIGEgY29udHJvbGxlZCBvciB1bmNvbnRyb2xsZWQgaW5wdXQgJyArICdlbGVtZW50IGZvciB0
aGUgbGlmZXRpbWUgb2YgdGhlIGNvbXBvbmVudC4gTW9yZSBpbmZvOiBodHRwczovL2ZiLm1lL3Jl
YWN0LWNvbnRyb2xsZWQtY29tcG9uZW50cycsIG93bmVyICYmIG93bmVyLmdldE5hbWUoKSB8fCAn
QSBjb21wb25lbnQnLCBwcm9wcy50eXBlKSA6IHZvaWQgMDtcblx0ICAgICAgICBkaWRXYXJuVW5j
b250cm9sbGVkVG9Db250cm9sbGVkID0gdHJ1ZTtcblx0ICAgICAgfVxuXHQgICAgICBpZiAoaW5z
dC5fd3JhcHBlclN0YXRlLmNvbnRyb2xsZWQgJiYgIWNvbnRyb2xsZWQgJiYgIWRpZFdhcm5Db250
cm9sbGVkVG9VbmNvbnRyb2xsZWQpIHtcblx0ICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAh
PT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJyVzIGlzIGNoYW5naW5nIGEgY29udHJv
bGxlZCBpbnB1dCBvZiB0eXBlICVzIHRvIGJlIHVuY29udHJvbGxlZC4gJyArICdJbnB1dCBlbGVt
ZW50cyBzaG91bGQgbm90IHN3aXRjaCBmcm9tIGNvbnRyb2xsZWQgdG8gdW5jb250cm9sbGVkIChv
ciB2aWNlIHZlcnNhKS4gJyArICdEZWNpZGUgYmV0d2VlbiB1c2luZyBhIGNvbnRyb2xsZWQgb3Ig
dW5jb250cm9sbGVkIGlucHV0ICcgKyAnZWxlbWVudCBmb3IgdGhlIGxpZmV0aW1lIG9mIHRoZSBj
b21wb25lbnQuIE1vcmUgaW5mbzogaHR0cHM6Ly9mYi5tZS9yZWFjdC1jb250cm9sbGVkLWNvbXBv
bmVudHMnLCBvd25lciAmJiBvd25lci5nZXROYW1lKCkgfHwgJ0EgY29tcG9uZW50JywgcHJvcHMu
dHlwZSkgOiB2b2lkIDA7XG5cdCAgICAgICAgZGlkV2FybkNvbnRyb2xsZWRUb1VuY29udHJvbGxl
ZCA9IHRydWU7XG5cdCAgICAgIH1cblx0ICAgIH1cblx0XG5cdCAgICAvLyBUT0RPOiBTaG91bGRu
J3QgdGhpcyBiZSBnZXRDaGVja2VkKHByb3BzKT9cblx0ICAgIHZhciBjaGVja2VkID0gcHJvcHMu
Y2hlY2tlZDtcblx0ICAgIGlmIChjaGVja2VkICE9IG51bGwpIHtcblx0ICAgICAgRE9NUHJvcGVy
dHlPcGVyYXRpb25zLnNldFZhbHVlRm9yUHJvcGVydHkoUmVhY3RET01Db21wb25lbnRUcmVlLmdl
dE5vZGVGcm9tSW5zdGFuY2UoaW5zdCksICdjaGVja2VkJywgY2hlY2tlZCB8fCBmYWxzZSk7XG5c
dCAgICB9XG5cdFxuXHQgICAgdmFyIG5vZGUgPSBSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0Tm9k
ZUZyb21JbnN0YW5jZShpbnN0KTtcblx0ICAgIHZhciB2YWx1ZSA9IExpbmtlZFZhbHVlVXRpbHMu
Z2V0VmFsdWUocHJvcHMpO1xuXHQgICAgaWYgKHZhbHVlICE9IG51bGwpIHtcblx0ICAgICAgaWYg
KHZhbHVlID09PSAwICYmIG5vZGUudmFsdWUgPT09ICcnKSB7XG5cdCAgICAgICAgbm9kZS52YWx1
ZSA9ICcwJztcblx0ICAgICAgICAvLyBOb3RlOiBJRTkgcmVwb3J0cyBhIG51bWJlciBpbnB1dHMg
YXMgJ3RleHQnLCBzbyBjaGVjayBwcm9wcyBpbnN0ZWFkLlxuXHQgICAgICB9IGVsc2UgaWYgKHBy
b3BzLnR5cGUgPT09ICdudW1iZXInKSB7XG5cdCAgICAgICAgLy8gU2ltdWxhdGUgYGlucHV0LnZh
bHVlQXNOdW1iZXJgLiBJRTkgZG9lcyBub3Qgc3VwcG9ydCBpdFxuXHQgICAgICAgIHZhciB2YWx1
ZUFzTnVtYmVyID0gcGFyc2VGbG9hdChub2RlLnZhbHVlLCAxMCkgfHwgMDtcblx0XG5cdCAgICAg
ICAgaWYgKFxuXHQgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuXHQgICAgICAg
IHZhbHVlICE9IHZhbHVlQXNOdW1iZXIgfHxcblx0ICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1u
ZXh0LWxpbmVcblx0ICAgICAgICB2YWx1ZSA9PSB2YWx1ZUFzTnVtYmVyICYmIG5vZGUudmFsdWUg
IT0gdmFsdWUpIHtcblx0ICAgICAgICAgIC8vIENhc3QgYHZhbHVlYCB0byBhIHN0cmluZyB0byBl
bnN1cmUgdGhlIHZhbHVlIGlzIHNldCBjb3JyZWN0bHkuIFdoaWxlXG5cdCAgICAgICAgICAvLyBi
cm93c2VycyB0eXBpY2FsbHkgZG8gdGhpcyBhcyBuZWNlc3NhcnksIGpzZG9tIGRvZXNuJ3QuXG5c
dCAgICAgICAgICBub2RlLnZhbHVlID0gJycgKyB2YWx1ZTtcblx0ICAgICAgICB9XG5cdCAgICAg
IH0gZWxzZSBpZiAobm9kZS52YWx1ZSAhPT0gJycgKyB2YWx1ZSkge1xuXHQgICAgICAgIC8vIENh
c3QgYHZhbHVlYCB0byBhIHN0cmluZyB0byBlbnN1cmUgdGhlIHZhbHVlIGlzIHNldCBjb3JyZWN0
bHkuIFdoaWxlXG5cdCAgICAgICAgLy8gYnJvd3NlcnMgdHlwaWNhbGx5IGRvIHRoaXMgYXMgbmVj
ZXNzYXJ5LCBqc2RvbSBkb2Vzbid0LlxuXHQgICAgICAgIG5vZGUudmFsdWUgPSAnJyArIHZhbHVl
O1xuXHQgICAgICB9XG5cdCAgICB9IGVsc2Uge1xuXHQgICAgICBpZiAocHJvcHMudmFsdWUgPT0g
bnVsbCAmJiBwcm9wcy5kZWZhdWx0VmFsdWUgIT0gbnVsbCkge1xuXHQgICAgICAgIC8vIEluIENo
cm9tZSwgYXNzaWduaW5nIGRlZmF1bHRWYWx1ZSB0byBjZXJ0YWluIGlucHV0IHR5cGVzIHRyaWdn
ZXJzIGlucHV0IHZhbGlkYXRpb24uXG5cdCAgICAgICAgLy8gRm9yIG51bWJlciBpbnB1dHMsIHRo
ZSBkaXNwbGF5IHZhbHVlIGxvc2VzIHRyYWlsaW5nIGRlY2ltYWwgcG9pbnRzLiBGb3IgZW1haWwg
aW5wdXRzLFxuXHQgICAgICAgIC8vIENocm9tZSByYWlzZXMgXCJUaGUgc3BlY2lmaWVkIHZhbHVl
IDx4PiBpcyBub3QgYSB2YWxpZCBlbWFpbCBhZGRyZXNzXCIuXG5cdCAgICAgICAgLy9cblx0ICAg
ICAgICAvLyBIZXJlIHdlIGNoZWNrIHRvIHNlZSBpZiB0aGUgZGVmYXVsdFZhbHVlIGhhcyBhY3R1
YWxseSBjaGFuZ2VkLCBhdm9pZGluZyB0aGVzZSBwcm9ibGVtc1xuXHQgICAgICAgIC8vIHdoZW4g
dGhlIHVzZXIgaXMgaW5wdXR0aW5nIHRleHRcblx0ICAgICAgICAvL1xuXHQgICAgICAgIC8vIGh0
dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9pc3N1ZXMvNzI1M1xuXHQgICAgICAgIGlm
IChub2RlLmRlZmF1bHRWYWx1ZSAhPT0gJycgKyBwcm9wcy5kZWZhdWx0VmFsdWUpIHtcblx0ICAg
ICAgICAgIG5vZGUuZGVmYXVsdFZhbHVlID0gJycgKyBwcm9wcy5kZWZhdWx0VmFsdWU7XG5cdCAg
ICAgICAgfVxuXHQgICAgICB9XG5cdCAgICAgIGlmIChwcm9wcy5jaGVja2VkID09IG51bGwgJiYg
cHJvcHMuZGVmYXVsdENoZWNrZWQgIT0gbnVsbCkge1xuXHQgICAgICAgIG5vZGUuZGVmYXVsdENo
ZWNrZWQgPSAhIXByb3BzLmRlZmF1bHRDaGVja2VkO1xuXHQgICAgICB9XG5cdCAgICB9XG5cdCAg
fSxcblx0XG5cdCAgcG9zdE1vdW50V3JhcHBlcjogZnVuY3Rpb24gKGluc3QpIHtcblx0ICAgIHZh
ciBwcm9wcyA9IGluc3QuX2N1cnJlbnRFbGVtZW50LnByb3BzO1xuXHRcblx0ICAgIC8vIFRoaXMg
aXMgaW4gcG9zdE1vdW50IGJlY2F1c2Ugd2UgbmVlZCBhY2Nlc3MgdG8gdGhlIERPTSBub2RlLCB3
aGljaCBpcyBub3Rcblx0ICAgIC8vIGF2YWlsYWJsZSB1bnRpbCBhZnRlciB0aGUgY29tcG9uZW50
IGhhcyBtb3VudGVkLlxuXHQgICAgdmFyIG5vZGUgPSBSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0
Tm9kZUZyb21JbnN0YW5jZShpbnN0KTtcblx0XG5cdCAgICAvLyBEZXRhY2ggdmFsdWUgZnJvbSBk
ZWZhdWx0VmFsdWUuIFdlIHdvbid0IGRvIGFueXRoaW5nIGlmIHdlJ3JlIHdvcmtpbmcgb25cblx0
ICAgIC8vIHN1Ym1pdCBvciByZXNldCBpbnB1dHMgYXMgdGhvc2UgdmFsdWVzICYgZGVmYXVsdFZh
bHVlcyBhcmUgbGlua2VkLiBUaGV5XG5cdCAgICAvLyBhcmUgbm90IHJlc2V0YWJsZSBub2RlcyBz
byB0aGlzIG9wZXJhdGlvbiBkb2Vzbid0IG1hdHRlciBhbmQgYWN0dWFsbHlcblx0ICAgIC8vIHJl
bW92ZXMgYnJvd3Nlci1kZWZhdWx0IHZhbHVlcyAoZWcgXCJTdWJtaXQgUXVlcnlcIikgd2hlbiBu
byB2YWx1ZSBpc1xuXHQgICAgLy8gcHJvdmlkZWQuXG5cdFxuXHQgICAgc3dpdGNoIChwcm9wcy50
eXBlKSB7XG5cdCAgICAgIGNhc2UgJ3N1Ym1pdCc6XG5cdCAgICAgIGNhc2UgJ3Jlc2V0Jzpcblx0
ICAgICAgICBicmVhaztcblx0ICAgICAgY2FzZSAnY29sb3InOlxuXHQgICAgICBjYXNlICdkYXRl
Jzpcblx0ICAgICAgY2FzZSAnZGF0ZXRpbWUnOlxuXHQgICAgICBjYXNlICdkYXRldGltZS1sb2Nh
bCc6XG5cdCAgICAgIGNhc2UgJ21vbnRoJzpcblx0ICAgICAgY2FzZSAndGltZSc6XG5cdCAgICAg
IGNhc2UgJ3dlZWsnOlxuXHQgICAgICAgIC8vIFRoaXMgZml4ZXMgdGhlIG5vLXNob3cgaXNzdWUg
b24gaU9TIFNhZmFyaSBhbmQgQW5kcm9pZCBDaHJvbWU6XG5cdCAgICAgICAgLy8gaHR0cHM6Ly9n
aXRodWIuY29tL2ZhY2Vib29rL3JlYWN0L2lzc3Vlcy83MjMzXG5cdCAgICAgICAgbm9kZS52YWx1
ZSA9ICcnO1xuXHQgICAgICAgIG5vZGUudmFsdWUgPSBub2RlLmRlZmF1bHRWYWx1ZTtcblx0ICAg
ICAgICBicmVhaztcblx0ICAgICAgZGVmYXVsdDpcblx0ICAgICAgICBub2RlLnZhbHVlID0gbm9k
ZS52YWx1ZTtcblx0ICAgICAgICBicmVhaztcblx0ICAgIH1cblx0XG5cdCAgICAvLyBOb3JtYWxs
eSwgd2UnZCBqdXN0IGRvIGBub2RlLmNoZWNrZWQgPSBub2RlLmNoZWNrZWRgIHVwb24gaW5pdGlh
bCBtb3VudCwgbGVzcyB0aGlzIGJ1Z1xuXHQgICAgLy8gdGhpcyBpcyBuZWVkZWQgdG8gd29yayBh
cm91bmQgYSBjaHJvbWUgYnVnIHdoZXJlIHNldHRpbmcgZGVmYXVsdENoZWNrZWRcblx0ICAgIC8v
IHdpbGwgc29tZXRpbWVzIGluZmx1ZW5jZSB0aGUgdmFsdWUgb2YgY2hlY2tlZCAoZXZlbiBhZnRl
ciBkZXRhY2htZW50KS5cblx0ICAgIC8vIFJlZmVyZW5jZTogaHR0cHM6Ly9idWdzLmNocm9taXVt
Lm9yZy9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9NjA4NDE2XG5cdCAgICAvLyBXZSBuZWVk
IHRvIHRlbXBvcmFyaWx5IHVuc2V0IG5hbWUgdG8gYXZvaWQgZGlzcnVwdGluZyByYWRpbyBidXR0
b24gZ3JvdXBzLlxuXHQgICAgdmFyIG5hbWUgPSBub2RlLm5hbWU7XG5cdCAgICBpZiAobmFtZSAh
PT0gJycpIHtcblx0ICAgICAgbm9kZS5uYW1lID0gJyc7XG5cdCAgICB9XG5cdCAgICBub2RlLmRl
ZmF1bHRDaGVja2VkID0gIW5vZGUuZGVmYXVsdENoZWNrZWQ7XG5cdCAgICBub2RlLmRlZmF1bHRD
aGVja2VkID0gIW5vZGUuZGVmYXVsdENoZWNrZWQ7XG5cdCAgICBpZiAobmFtZSAhPT0gJycpIHtc
blx0ICAgICAgbm9kZS5uYW1lID0gbmFtZTtcblx0ICAgIH1cblx0ICB9XG5cdH07XG5cdFxuXHRm
dW5jdGlvbiBfaGFuZGxlQ2hhbmdlKGV2ZW50KSB7XG5cdCAgdmFyIHByb3BzID0gdGhpcy5fY3Vy
cmVudEVsZW1lbnQucHJvcHM7XG5cdFxuXHQgIHZhciByZXR1cm5WYWx1ZSA9IExpbmtlZFZhbHVl
VXRpbHMuZXhlY3V0ZU9uQ2hhbmdlKHByb3BzLCBldmVudCk7XG5cdFxuXHQgIC8vIEhlcmUgd2Ug
dXNlIGFzYXAgdG8gd2FpdCB1bnRpbCBhbGwgdXBkYXRlcyBoYXZlIHByb3BhZ2F0ZWQsIHdoaWNo
XG5cdCAgLy8gaXMgaW1wb3J0YW50IHdoZW4gdXNpbmcgY29udHJvbGxlZCBjb21wb25lbnRzIHdp
dGhpbiBsYXllcnM6XG5cdCAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0L2lz
c3Vlcy8xNjk4XG5cdCAgUmVhY3RVcGRhdGVzLmFzYXAoZm9yY2VVcGRhdGVJZk1vdW50ZWQsIHRo
aXMpO1xuXHRcblx0ICB2YXIgbmFtZSA9IHByb3BzLm5hbWU7XG5cdCAgaWYgKHByb3BzLnR5cGUg
PT09ICdyYWRpbycgJiYgbmFtZSAhPSBudWxsKSB7XG5cdCAgICB2YXIgcm9vdE5vZGUgPSBSZWFj
dERPTUNvbXBvbmVudFRyZWUuZ2V0Tm9kZUZyb21JbnN0YW5jZSh0aGlzKTtcblx0ICAgIHZhciBx
dWVyeVJvb3QgPSByb290Tm9kZTtcblx0XG5cdCAgICB3aGlsZSAocXVlcnlSb290LnBhcmVudE5v
ZGUpIHtcblx0ICAgICAgcXVlcnlSb290ID0gcXVlcnlSb290LnBhcmVudE5vZGU7XG5cdCAgICB9
XG5cdFxuXHQgICAgLy8gSWYgYHJvb3ROb2RlLmZvcm1gIHdhcyBub24tbnVsbCwgdGhlbiB3ZSBj
b3VsZCB0cnkgYGZvcm0uZWxlbWVudHNgLFxuXHQgICAgLy8gYnV0IHRoYXQgc29tZXRpbWVzIGJl
aGF2ZXMgc3RyYW5nZWx5IGluIElFOC4gV2UgY291bGQgYWxzbyB0cnkgdXNpbmdcblx0ICAgIC8v
IGBmb3JtLmdldEVsZW1lbnRzQnlOYW1lYCwgYnV0IHRoYXQgd2lsbCBvbmx5IHJldHVybiBkaXJl
Y3QgY2hpbGRyZW5cblx0ICAgIC8vIGFuZCB3b24ndCBpbmNsdWRlIGlucHV0cyB0aGF0IHVzZSB0
aGUgSFRNTDUgYGZvcm09YCBhdHRyaWJ1dGUuIFNpbmNlXG5cdCAgICAvLyB0aGUgaW5wdXQgbWln
aHQgbm90IGV2ZW4gYmUgaW4gYSBmb3JtLCBsZXQncyBqdXN0IHVzZSB0aGUgZ2xvYmFsXG5cdCAg
ICAvLyBgcXVlcnlTZWxlY3RvckFsbGAgdG8gZW5zdXJlIHdlIGRvbid0IG1pc3MgYW55dGhpbmcu
XG5cdCAgICB2YXIgZ3JvdXAgPSBxdWVyeVJvb3QucXVlcnlTZWxlY3RvckFsbCgnaW5wdXRbbmFt
ZT0nICsgSlNPTi5zdHJpbmdpZnkoJycgKyBuYW1lKSArICddW3R5cGU9XCJyYWRpb1wiXScpO1xu
XHRcblx0ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZ3JvdXAubGVuZ3RoOyBpKyspIHtcblx0ICAg
ICAgdmFyIG90aGVyTm9kZSA9IGdyb3VwW2ldO1xuXHQgICAgICBpZiAob3RoZXJOb2RlID09PSBy
b290Tm9kZSB8fCBvdGhlck5vZGUuZm9ybSAhPT0gcm9vdE5vZGUuZm9ybSkge1xuXHQgICAgICAg
IGNvbnRpbnVlO1xuXHQgICAgICB9XG5cdCAgICAgIC8vIFRoaXMgd2lsbCB0aHJvdyBpZiByYWRp
byBidXR0b25zIHJlbmRlcmVkIGJ5IGRpZmZlcmVudCBjb3BpZXMgb2YgUmVhY3Rcblx0ICAgICAg
Ly8gYW5kIHRoZSBzYW1lIG5hbWUgYXJlIHJlbmRlcmVkIGludG8gdGhlIHNhbWUgZm9ybSAoc2Ft
ZSBhcyAjMTkzOSkuXG5cdCAgICAgIC8vIFRoYXQncyBwcm9iYWJseSBva2F5OyB3ZSBkb24ndCBz
dXBwb3J0IGl0IGp1c3QgYXMgd2UgZG9uJ3Qgc3VwcG9ydFxuXHQgICAgICAvLyBtaXhpbmcgUmVh
Y3QgcmFkaW8gYnV0dG9ucyB3aXRoIG5vbi1SZWFjdCBvbmVzLlxuXHQgICAgICB2YXIgb3RoZXJJ
bnN0YW5jZSA9IFJlYWN0RE9NQ29tcG9uZW50VHJlZS5nZXRJbnN0YW5jZUZyb21Ob2RlKG90aGVy
Tm9kZSk7XG5cdCAgICAgICFvdGhlckluc3RhbmNlID8gIGZhbHNlID8gaW52YXJpYW50KGZhbHNl
LCAnUmVhY3RET01JbnB1dDogTWl4aW5nIFJlYWN0IGFuZCBub24tUmVhY3QgcmFkaW8gaW5wdXRz
IHdpdGggdGhlIHNhbWUgYG5hbWVgIGlzIG5vdCBzdXBwb3J0ZWQuJykgOiBfcHJvZEludmFyaWFu
dCgnOTAnKSA6IHZvaWQgMDtcblx0ICAgICAgLy8gSWYgdGhpcyBpcyBhIGNvbnRyb2xsZWQgcmFk
aW8gYnV0dG9uIGdyb3VwLCBmb3JjaW5nIHRoZSBpbnB1dCB0aGF0XG5cdCAgICAgIC8vIHdhcyBw
cmV2aW91c2x5IGNoZWNrZWQgdG8gdXBkYXRlIHdpbGwgY2F1c2UgaXQgdG8gYmUgY29tZSByZS1j
aGVja2VkXG5cdCAgICAgIC8vIGFzIGFwcHJvcHJpYXRlLlxuXHQgICAgICBSZWFjdFVwZGF0ZXMu
YXNhcChmb3JjZVVwZGF0ZUlmTW91bnRlZCwgb3RoZXJJbnN0YW5jZSk7XG5cdCAgICB9XG5cdCAg
fVxuXHRcblx0ICByZXR1cm4gcmV0dXJuVmFsdWU7XG5cdH1cblx0XG5cdG1vZHVsZS5leHBvcnRz
ID0gUmVhY3RET01JbnB1dDtcblxuLyoqKi8gfSxcbi8qIDE0NCAqL1xuLyoqKi8gZnVuY3Rpb24o
bW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0LyoqXG5cdCAqIENv
cHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhl
IEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhl
IHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRc
blx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBp
biB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqL1xuXHRcblx0J3VzZSBzdHJpY3QnO1xu
XHRcblx0dmFyIF9hc3NpZ24gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQpO1xuXHRcblx0dmFyIFJl
YWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNyk7XG5cdHZhciBSZWFjdERPTUNvbXBvbmVudFRy
ZWUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDUpO1xuXHR2YXIgUmVhY3RET01TZWxlY3QgPSBfX3dl
YnBhY2tfcmVxdWlyZV9fKDYyKTtcblx0XG5cdHZhciB3YXJuaW5nID0gX193ZWJwYWNrX3JlcXVp
cmVfXygyKTtcblx0dmFyIGRpZFdhcm5JbnZhbGlkT3B0aW9uQ2hpbGRyZW4gPSBmYWxzZTtcblx0
XG5cdGZ1bmN0aW9uIGZsYXR0ZW5DaGlsZHJlbihjaGlsZHJlbikge1xuXHQgIHZhciBjb250ZW50
ID0gJyc7XG5cdFxuXHQgIC8vIEZsYXR0ZW4gY2hpbGRyZW4gYW5kIHdhcm4gaWYgdGhleSBhcmVu
J3Qgc3RyaW5ncyBvciBudW1iZXJzO1xuXHQgIC8vIGludmFsaWQgdHlwZXMgYXJlIGlnbm9yZWQu
XG5cdCAgUmVhY3QuQ2hpbGRyZW4uZm9yRWFjaChjaGlsZHJlbiwgZnVuY3Rpb24gKGNoaWxkKSB7
XG5cdCAgICBpZiAoY2hpbGQgPT0gbnVsbCkge1xuXHQgICAgICByZXR1cm47XG5cdCAgICB9XG5c
dCAgICBpZiAodHlwZW9mIGNoaWxkID09PSAnc3RyaW5nJyB8fCB0eXBlb2YgY2hpbGQgPT09ICdu
dW1iZXInKSB7XG5cdCAgICAgIGNvbnRlbnQgKz0gY2hpbGQ7XG5cdCAgICB9IGVsc2UgaWYgKCFk
aWRXYXJuSW52YWxpZE9wdGlvbkNoaWxkcmVuKSB7XG5cdCAgICAgIGRpZFdhcm5JbnZhbGlkT3B0
aW9uQ2hpbGRyZW4gPSB0cnVlO1xuXHQgICAgICAgZmFsc2UgPyB3YXJuaW5nKGZhbHNlLCAnT25s
eSBzdHJpbmdzIGFuZCBudW1iZXJzIGFyZSBzdXBwb3J0ZWQgYXMgPG9wdGlvbj4gY2hpbGRyZW4u
JykgOiB2b2lkIDA7XG5cdCAgICB9XG5cdCAgfSk7XG5cdFxuXHQgIHJldHVybiBjb250ZW50O1xu
XHR9XG5cdFxuXHQvKipcblx0ICogSW1wbGVtZW50cyBhbiA8b3B0aW9uPiBob3N0IGNvbXBvbmVu
dCB0aGF0IHdhcm5zIHdoZW4gYHNlbGVjdGVkYCBpcyBzZXQuXG5cdCAqL1xuXHR2YXIgUmVhY3RE
T01PcHRpb24gPSB7XG5cdCAgbW91bnRXcmFwcGVyOiBmdW5jdGlvbiAoaW5zdCwgcHJvcHMsIGhv
c3RQYXJlbnQpIHtcblx0ICAgIC8vIFRPRE8gKHl1bmdzdGVycyk6IFJlbW92ZSBzdXBwb3J0IGZv
ciBgc2VsZWN0ZWRgIGluIDxvcHRpb24+LlxuXHQgICAgaWYgKGZhbHNlKSB7XG5cdCAgICAgIHBy
b2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKHByb3BzLnNlbGVj
dGVkID09IG51bGwsICdVc2UgdGhlIGBkZWZhdWx0VmFsdWVgIG9yIGB2YWx1ZWAgcHJvcHMgb24g
PHNlbGVjdD4gaW5zdGVhZCBvZiAnICsgJ3NldHRpbmcgYHNlbGVjdGVkYCBvbiA8b3B0aW9uPi4n
KSA6IHZvaWQgMDtcblx0ICAgIH1cblx0XG5cdCAgICAvLyBMb29rIHVwIHdoZXRoZXIgdGhpcyBv
cHRpb24gaXMgJ3NlbGVjdGVkJ1xuXHQgICAgdmFyIHNlbGVjdFZhbHVlID0gbnVsbDtcblx0ICAg
IGlmIChob3N0UGFyZW50ICE9IG51bGwpIHtcblx0ICAgICAgdmFyIHNlbGVjdFBhcmVudCA9IGhv
c3RQYXJlbnQ7XG5cdFxuXHQgICAgICBpZiAoc2VsZWN0UGFyZW50Ll90YWcgPT09ICdvcHRncm91
cCcpIHtcblx0ICAgICAgICBzZWxlY3RQYXJlbnQgPSBzZWxlY3RQYXJlbnQuX2hvc3RQYXJlbnQ7
XG5cdCAgICAgIH1cblx0XG5cdCAgICAgIGlmIChzZWxlY3RQYXJlbnQgIT0gbnVsbCAmJiBzZWxl
Y3RQYXJlbnQuX3RhZyA9PT0gJ3NlbGVjdCcpIHtcblx0ICAgICAgICBzZWxlY3RWYWx1ZSA9IFJl
YWN0RE9NU2VsZWN0LmdldFNlbGVjdFZhbHVlQ29udGV4dChzZWxlY3RQYXJlbnQpO1xuXHQgICAg
ICB9XG5cdCAgICB9XG5cdFxuXHQgICAgLy8gSWYgdGhlIHZhbHVlIGlzIG51bGwgKGUuZy4sIG5v
IHNwZWNpZmllZCB2YWx1ZSBvciBhZnRlciBpbml0aWFsIG1vdW50KVxuXHQgICAgLy8gb3IgbWlz
c2luZyAoZS5nLiwgZm9yIDxkYXRhbGlzdD4pLCB3ZSBkb24ndCBjaGFuZ2UgcHJvcHMuc2VsZWN0
ZWRcblx0ICAgIHZhciBzZWxlY3RlZCA9IG51bGw7XG5cdCAgICBpZiAoc2VsZWN0VmFsdWUgIT0g
bnVsbCkge1xuXHQgICAgICB2YXIgdmFsdWU7XG5cdCAgICAgIGlmIChwcm9wcy52YWx1ZSAhPSBu
dWxsKSB7XG5cdCAgICAgICAgdmFsdWUgPSBwcm9wcy52YWx1ZSArICcnO1xuXHQgICAgICB9IGVs
c2Uge1xuXHQgICAgICAgIHZhbHVlID0gZmxhdHRlbkNoaWxkcmVuKHByb3BzLmNoaWxkcmVuKTtc
blx0ICAgICAgfVxuXHQgICAgICBzZWxlY3RlZCA9IGZhbHNlO1xuXHQgICAgICBpZiAoQXJyYXku
aXNBcnJheShzZWxlY3RWYWx1ZSkpIHtcblx0ICAgICAgICAvLyBtdWx0aXBsZVxuXHQgICAgICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgc2VsZWN0VmFsdWUubGVuZ3RoOyBpKyspIHtcblx0ICAgICAg
ICAgIGlmICgnJyArIHNlbGVjdFZhbHVlW2ldID09PSB2YWx1ZSkge1xuXHQgICAgICAgICAgICBz
ZWxlY3RlZCA9IHRydWU7XG5cdCAgICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgICAgfVxuXHQg
ICAgICAgIH1cblx0ICAgICAgfSBlbHNlIHtcblx0ICAgICAgICBzZWxlY3RlZCA9ICcnICsgc2Vs
ZWN0VmFsdWUgPT09IHZhbHVlO1xuXHQgICAgICB9XG5cdCAgICB9XG5cdFxuXHQgICAgaW5zdC5f
d3JhcHBlclN0YXRlID0geyBzZWxlY3RlZDogc2VsZWN0ZWQgfTtcblx0ICB9LFxuXHRcblx0ICBw
b3N0TW91bnRXcmFwcGVyOiBmdW5jdGlvbiAoaW5zdCkge1xuXHQgICAgLy8gdmFsdWU9XCJcIiBz
aG91bGQgbWFrZSBhIHZhbHVlIGF0dHJpYnV0ZSAoIzYyMTkpXG5cdCAgICB2YXIgcHJvcHMgPSBp
bnN0Ll9jdXJyZW50RWxlbWVudC5wcm9wcztcblx0ICAgIGlmIChwcm9wcy52YWx1ZSAhPSBudWxs
KSB7XG5cdCAgICAgIHZhciBub2RlID0gUmVhY3RET01Db21wb25lbnRUcmVlLmdldE5vZGVGcm9t
SW5zdGFuY2UoaW5zdCk7XG5cdCAgICAgIG5vZGUuc2V0QXR0cmlidXRlKCd2YWx1ZScsIHByb3Bz
LnZhbHVlKTtcblx0ICAgIH1cblx0ICB9LFxuXHRcblx0ICBnZXRIb3N0UHJvcHM6IGZ1bmN0aW9u
IChpbnN0LCBwcm9wcykge1xuXHQgICAgdmFyIGhvc3RQcm9wcyA9IF9hc3NpZ24oeyBzZWxlY3Rl
ZDogdW5kZWZpbmVkLCBjaGlsZHJlbjogdW5kZWZpbmVkIH0sIHByb3BzKTtcblx0XG5cdCAgICAv
LyBSZWFkIHN0YXRlIG9ubHkgZnJvbSBpbml0aWFsIG1vdW50IGJlY2F1c2UgPHNlbGVjdD4gdXBk
YXRlcyB2YWx1ZVxuXHQgICAgLy8gbWFudWFsbHk7IHdlIG5lZWQgdGhlIGluaXRpYWwgc3RhdGUg
b25seSBmb3Igc2VydmVyIHJlbmRlcmluZ1xuXHQgICAgaWYgKGluc3QuX3dyYXBwZXJTdGF0ZS5z
ZWxlY3RlZCAhPSBudWxsKSB7XG5cdCAgICAgIGhvc3RQcm9wcy5zZWxlY3RlZCA9IGluc3QuX3dy
YXBwZXJTdGF0ZS5zZWxlY3RlZDtcblx0ICAgIH1cblx0XG5cdCAgICB2YXIgY29udGVudCA9IGZs
YXR0ZW5DaGlsZHJlbihwcm9wcy5jaGlsZHJlbik7XG5cdFxuXHQgICAgaWYgKGNvbnRlbnQpIHtc
blx0ICAgICAgaG9zdFByb3BzLmNoaWxkcmVuID0gY29udGVudDtcblx0ICAgIH1cblx0XG5cdCAg
ICByZXR1cm4gaG9zdFByb3BzO1xuXHQgIH1cblx0fTtcblx0XG5cdG1vZHVsZS5leHBvcnRzID0g
UmVhY3RET01PcHRpb247XG5cbi8qKiovIH0sXG4vKiAxNDUgKi9cbi8qKiovIGZ1bmN0aW9uKG1v
ZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8qKlxuXHQgKiBDb3B5
cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBC
U0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxlIGluIHRoZSBy
b290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5c
dCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4g
dGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0
XG5cdHZhciBFeGVjdXRpb25FbnZpcm9ubWVudCA9IF9fd2VicGFja19yZXF1aXJlX18oNik7XG5c
dFxuXHR2YXIgZ2V0Tm9kZUZvckNoYXJhY3Rlck9mZnNldCA9IF9fd2VicGFja19yZXF1aXJlX18o
MTgzKTtcblx0dmFyIGdldFRleHRDb250ZW50QWNjZXNzb3IgPSBfX3dlYnBhY2tfcmVxdWlyZV9f
KDczKTtcblx0XG5cdC8qKlxuXHQgKiBXaGlsZSBgaXNDb2xsYXBzZWRgIGlzIGF2YWlsYWJsZSBv
biB0aGUgU2VsZWN0aW9uIG9iamVjdCBhbmQgYGNvbGxhcHNlZGBcblx0ICogaXMgYXZhaWxhYmxl
IG9uIHRoZSBSYW5nZSBvYmplY3QsIElFMTEgc29tZXRpbWVzIGdldHMgdGhlbSB3cm9uZy5cblx0
ICogSWYgdGhlIGFuY2hvci9mb2N1cyBub2RlcyBhbmQgb2Zmc2V0cyBhcmUgdGhlIHNhbWUsIHRo
ZSByYW5nZSBpcyBjb2xsYXBzZWQuXG5cdCAqL1xuXHRmdW5jdGlvbiBpc0NvbGxhcHNlZChhbmNo
b3JOb2RlLCBhbmNob3JPZmZzZXQsIGZvY3VzTm9kZSwgZm9jdXNPZmZzZXQpIHtcblx0ICByZXR1
cm4gYW5jaG9yTm9kZSA9PT0gZm9jdXNOb2RlICYmIGFuY2hvck9mZnNldCA9PT0gZm9jdXNPZmZz
ZXQ7XG5cdH1cblx0XG5cdC8qKlxuXHQgKiBHZXQgdGhlIGFwcHJvcHJpYXRlIGFuY2hvciBhbmQg
Zm9jdXMgbm9kZS9vZmZzZXQgcGFpcnMgZm9yIElFLlxuXHQgKlxuXHQgKiBUaGUgY2F0Y2ggaGVy
ZSBpcyB0aGF0IElFJ3Mgc2VsZWN0aW9uIEFQSSBkb2Vzbid0IHByb3ZpZGUgaW5mb3JtYXRpb25c
blx0ICogYWJvdXQgd2hldGhlciB0aGUgc2VsZWN0aW9uIGlzIGZvcndhcmQgb3IgYmFja3dhcmQs
IHNvIHdlIGhhdmUgdG9cblx0ICogYmVoYXZlIGFzIHRob3VnaCBpdCdzIGFsd2F5cyBmb3J3YXJk
LlxuXHQgKlxuXHQgKiBJRSB0ZXh0IGRpZmZlcnMgZnJvbSBtb2Rlcm4gc2VsZWN0aW9uIGluIHRo
YXQgaXQgYmVoYXZlcyBhcyB0aG91Z2hcblx0ICogYmxvY2sgZWxlbWVudHMgZW5kIHdpdGggYSBu
ZXcgbGluZS4gVGhpcyBtZWFucyBjaGFyYWN0ZXIgb2Zmc2V0cyB3aWxsXG5cdCAqIGRpZmZlciBi
ZXR3ZWVuIHRoZSB0d28gQVBJcy5cblx0ICpcblx0ICogQHBhcmFtIHtET01FbGVtZW50fSBub2Rl
XG5cdCAqIEByZXR1cm4ge29iamVjdH1cblx0ICovXG5cdGZ1bmN0aW9uIGdldElFT2Zmc2V0cyhu
b2RlKSB7XG5cdCAgdmFyIHNlbGVjdGlvbiA9IGRvY3VtZW50LnNlbGVjdGlvbjtcblx0ICB2YXIg
c2VsZWN0ZWRSYW5nZSA9IHNlbGVjdGlvbi5jcmVhdGVSYW5nZSgpO1xuXHQgIHZhciBzZWxlY3Rl
ZExlbmd0aCA9IHNlbGVjdGVkUmFuZ2UudGV4dC5sZW5ndGg7XG5cdFxuXHQgIC8vIER1cGxpY2F0
ZSBzZWxlY3Rpb24gc28gd2UgY2FuIG1vdmUgcmFuZ2Ugd2l0aG91dCBicmVha2luZyB1c2VyIHNl
bGVjdGlvbi5cblx0ICB2YXIgZnJvbVN0YXJ0ID0gc2VsZWN0ZWRSYW5nZS5kdXBsaWNhdGUoKTtc
blx0ICBmcm9tU3RhcnQubW92ZVRvRWxlbWVudFRleHQobm9kZSk7XG5cdCAgZnJvbVN0YXJ0LnNl
dEVuZFBvaW50KCdFbmRUb1N0YXJ0Jywgc2VsZWN0ZWRSYW5nZSk7XG5cdFxuXHQgIHZhciBzdGFy
dE9mZnNldCA9IGZyb21TdGFydC50ZXh0Lmxlbmd0aDtcblx0ICB2YXIgZW5kT2Zmc2V0ID0gc3Rh
cnRPZmZzZXQgKyBzZWxlY3RlZExlbmd0aDtcblx0XG5cdCAgcmV0dXJuIHtcblx0ICAgIHN0YXJ0
OiBzdGFydE9mZnNldCxcblx0ICAgIGVuZDogZW5kT2Zmc2V0XG5cdCAgfTtcblx0fVxuXHRcblx0
LyoqXG5cdCAqIEBwYXJhbSB7RE9NRWxlbWVudH0gbm9kZVxuXHQgKiBAcmV0dXJuIHs/b2JqZWN0
fVxuXHQgKi9cblx0ZnVuY3Rpb24gZ2V0TW9kZXJuT2Zmc2V0cyhub2RlKSB7XG5cdCAgdmFyIHNl
bGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24gJiYgd2luZG93LmdldFNlbGVjdGlvbigpO1xu
XHRcblx0ICBpZiAoIXNlbGVjdGlvbiB8fCBzZWxlY3Rpb24ucmFuZ2VDb3VudCA9PT0gMCkge1xu
XHQgICAgcmV0dXJuIG51bGw7XG5cdCAgfVxuXHRcblx0ICB2YXIgYW5jaG9yTm9kZSA9IHNlbGVj
dGlvbi5hbmNob3JOb2RlO1xuXHQgIHZhciBhbmNob3JPZmZzZXQgPSBzZWxlY3Rpb24uYW5jaG9y
T2Zmc2V0O1xuXHQgIHZhciBmb2N1c05vZGUgPSBzZWxlY3Rpb24uZm9jdXNOb2RlO1xuXHQgIHZh
ciBmb2N1c09mZnNldCA9IHNlbGVjdGlvbi5mb2N1c09mZnNldDtcblx0XG5cdCAgdmFyIGN1cnJl
bnRSYW5nZSA9IHNlbGVjdGlvbi5nZXRSYW5nZUF0KDApO1xuXHRcblx0ICAvLyBJbiBGaXJlZm94
LCByYW5nZS5zdGFydENvbnRhaW5lciBhbmQgcmFuZ2UuZW5kQ29udGFpbmVyIGNhbiBiZSBcImFu
b255bW91c1xuXHQgIC8vIGRpdnNcIiwgZS5nLiB0aGUgdXAvZG93biBidXR0b25zIG9uIGFuIDxp
bnB1dCB0eXBlPVwibnVtYmVyXCI+LiBBbm9ueW1vdXNcblx0ICAvLyBkaXZzIGRvIG5vdCBzZWVt
IHRvIGV4cG9zZSBwcm9wZXJ0aWVzLCB0cmlnZ2VyaW5nIGEgXCJQZXJtaXNzaW9uIGRlbmllZFxu
XHQgIC8vIGVycm9yXCIgaWYgYW55IG9mIGl0cyBwcm9wZXJ0aWVzIGFyZSBhY2Nlc3NlZC4gVGhl
IG9ubHkgc2VlbWluZ2x5IHBvc3NpYmxlXG5cdCAgLy8gd2F5IHRvIGF2b2lkIGVycm9yaW5nIGlz
IHRvIGFjY2VzcyBhIHByb3BlcnR5IHRoYXQgdHlwaWNhbGx5IHdvcmtzIGZvclxuXHQgIC8vIG5v
bi1hbm9ueW1vdXMgZGl2cyBhbmQgY2F0Y2ggYW55IGVycm9yIHRoYXQgbWF5IG90aGVyd2lzZSBh
cmlzZS4gU2VlXG5cdCAgLy8gaHR0cHM6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjA4NDI3XG5cdCAgdHJ5IHtcblx0ICAgIC8qIGVzbGludC1kaXNhYmxlIG5vLXVudXNl
ZC1leHByZXNzaW9ucyAqL1xuXHQgICAgY3VycmVudFJhbmdlLnN0YXJ0Q29udGFpbmVyLm5vZGVU
eXBlO1xuXHQgICAgY3VycmVudFJhbmdlLmVuZENvbnRhaW5lci5ub2RlVHlwZTtcblx0ICAgIC8q
IGVzbGludC1lbmFibGUgbm8tdW51c2VkLWV4cHJlc3Npb25zICovXG5cdCAgfSBjYXRjaCAoZSkg
e1xuXHQgICAgcmV0dXJuIG51bGw7XG5cdCAgfVxuXHRcblx0ICAvLyBJZiB0aGUgbm9kZSBhbmQg
b2Zmc2V0IHZhbHVlcyBhcmUgdGhlIHNhbWUsIHRoZSBzZWxlY3Rpb24gaXMgY29sbGFwc2VkLlxu
XHQgIC8vIGBTZWxlY3Rpb24uaXNDb2xsYXBzZWRgIGlzIGF2YWlsYWJsZSBuYXRpdmVseSwgYnV0
IElFIHNvbWV0aW1lcyBnZXRzXG5cdCAgLy8gdGhpcyB2YWx1ZSB3cm9uZy5cblx0ICB2YXIgaXNT
ZWxlY3Rpb25Db2xsYXBzZWQgPSBpc0NvbGxhcHNlZChzZWxlY3Rpb24uYW5jaG9yTm9kZSwgc2Vs
ZWN0aW9uLmFuY2hvck9mZnNldCwgc2VsZWN0aW9uLmZvY3VzTm9kZSwgc2VsZWN0aW9uLmZvY3Vz
T2Zmc2V0KTtcblx0XG5cdCAgdmFyIHJhbmdlTGVuZ3RoID0gaXNTZWxlY3Rpb25Db2xsYXBzZWQg
PyAwIDogY3VycmVudFJhbmdlLnRvU3RyaW5nKCkubGVuZ3RoO1xuXHRcblx0ICB2YXIgdGVtcFJh
bmdlID0gY3VycmVudFJhbmdlLmNsb25lUmFuZ2UoKTtcblx0ICB0ZW1wUmFuZ2Uuc2VsZWN0Tm9k
ZUNvbnRlbnRzKG5vZGUpO1xuXHQgIHRlbXBSYW5nZS5zZXRFbmQoY3VycmVudFJhbmdlLnN0YXJ0
Q29udGFpbmVyLCBjdXJyZW50UmFuZ2Uuc3RhcnRPZmZzZXQpO1xuXHRcblx0ICB2YXIgaXNUZW1w
UmFuZ2VDb2xsYXBzZWQgPSBpc0NvbGxhcHNlZCh0ZW1wUmFuZ2Uuc3RhcnRDb250YWluZXIsIHRl
bXBSYW5nZS5zdGFydE9mZnNldCwgdGVtcFJhbmdlLmVuZENvbnRhaW5lciwgdGVtcFJhbmdlLmVu
ZE9mZnNldCk7XG5cdFxuXHQgIHZhciBzdGFydCA9IGlzVGVtcFJhbmdlQ29sbGFwc2VkID8gMCA6
IHRlbXBSYW5nZS50b1N0cmluZygpLmxlbmd0aDtcblx0ICB2YXIgZW5kID0gc3RhcnQgKyByYW5n
ZUxlbmd0aDtcblx0XG5cdCAgLy8gRGV0ZWN0IHdoZXRoZXIgdGhlIHNlbGVjdGlvbiBpcyBiYWNr
d2FyZC5cblx0ICB2YXIgZGV0ZWN0aW9uUmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpO1xu
XHQgIGRldGVjdGlvblJhbmdlLnNldFN0YXJ0KGFuY2hvck5vZGUsIGFuY2hvck9mZnNldCk7XG5c
dCAgZGV0ZWN0aW9uUmFuZ2Uuc2V0RW5kKGZvY3VzTm9kZSwgZm9jdXNPZmZzZXQpO1xuXHQgIHZh
ciBpc0JhY2t3YXJkID0gZGV0ZWN0aW9uUmFuZ2UuY29sbGFwc2VkO1xuXHRcblx0ICByZXR1cm4g
e1xuXHQgICAgc3RhcnQ6IGlzQmFja3dhcmQgPyBlbmQgOiBzdGFydCxcblx0ICAgIGVuZDogaXNC
YWNrd2FyZCA/IHN0YXJ0IDogZW5kXG5cdCAgfTtcblx0fVxuXHRcblx0LyoqXG5cdCAqIEBwYXJh
bSB7RE9NRWxlbWVudHxET01UZXh0Tm9kZX0gbm9kZVxuXHQgKiBAcGFyYW0ge29iamVjdH0gb2Zm
c2V0c1xuXHQgKi9cblx0ZnVuY3Rpb24gc2V0SUVPZmZzZXRzKG5vZGUsIG9mZnNldHMpIHtcblx0
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5zZWxlY3Rpb24uY3JlYXRlUmFuZ2UoKS5kdXBsaWNhdGUo
KTtcblx0ICB2YXIgc3RhcnQsIGVuZDtcblx0XG5cdCAgaWYgKG9mZnNldHMuZW5kID09PSB1bmRl
ZmluZWQpIHtcblx0ICAgIHN0YXJ0ID0gb2Zmc2V0cy5zdGFydDtcblx0ICAgIGVuZCA9IHN0YXJ0
O1xuXHQgIH0gZWxzZSBpZiAob2Zmc2V0cy5zdGFydCA+IG9mZnNldHMuZW5kKSB7XG5cdCAgICBz
dGFydCA9IG9mZnNldHMuZW5kO1xuXHQgICAgZW5kID0gb2Zmc2V0cy5zdGFydDtcblx0ICB9IGVs
c2Uge1xuXHQgICAgc3RhcnQgPSBvZmZzZXRzLnN0YXJ0O1xuXHQgICAgZW5kID0gb2Zmc2V0cy5l
bmQ7XG5cdCAgfVxuXHRcblx0ICByYW5nZS5tb3ZlVG9FbGVtZW50VGV4dChub2RlKTtcblx0ICBy
YW5nZS5tb3ZlU3RhcnQoJ2NoYXJhY3RlcicsIHN0YXJ0KTtcblx0ICByYW5nZS5zZXRFbmRQb2lu
dCgnRW5kVG9TdGFydCcsIHJhbmdlKTtcblx0ICByYW5nZS5tb3ZlRW5kKCdjaGFyYWN0ZXInLCBl
bmQgLSBzdGFydCk7XG5cdCAgcmFuZ2Uuc2VsZWN0KCk7XG5cdH1cblx0XG5cdC8qKlxuXHQgKiBJ
biBtb2Rlcm4gbm9uLUlFIGJyb3dzZXJzLCB3ZSBjYW4gc3VwcG9ydCBib3RoIGZvcndhcmQgYW5k
IGJhY2t3YXJkXG5cdCAqIHNlbGVjdGlvbnMuXG5cdCAqXG5cdCAqIE5vdGU6IElFMTArIHN1cHBv
cnRzIHRoZSBTZWxlY3Rpb24gb2JqZWN0LCBidXQgaXQgZG9lcyBub3Qgc3VwcG9ydFxuXHQgKiB0
aGUgYGV4dGVuZGAgbWV0aG9kLCB3aGljaCBtZWFucyB0aGF0IGV2ZW4gaW4gbW9kZXJuIElFLCBp
dCdzIG5vdCBwb3NzaWJsZVxuXHQgKiB0byBwcm9ncmFtbWF0aWNhbGx5IGNyZWF0ZSBhIGJhY2t3
YXJkIHNlbGVjdGlvbi4gVGh1cywgZm9yIGFsbCBJRVxuXHQgKiB2ZXJzaW9ucywgd2UgdXNlIHRo
ZSBvbGQgSUUgQVBJIHRvIGNyZWF0ZSBvdXIgc2VsZWN0aW9ucy5cblx0ICpcblx0ICogQHBhcmFt
IHtET01FbGVtZW50fERPTVRleHROb2RlfSBub2RlXG5cdCAqIEBwYXJhbSB7b2JqZWN0fSBvZmZz
ZXRzXG5cdCAqL1xuXHRmdW5jdGlvbiBzZXRNb2Rlcm5PZmZzZXRzKG5vZGUsIG9mZnNldHMpIHtc
blx0ICBpZiAoIXdpbmRvdy5nZXRTZWxlY3Rpb24pIHtcblx0ICAgIHJldHVybjtcblx0ICB9XG5c
dFxuXHQgIHZhciBzZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7XG5cdCAgdmFyIGxl
bmd0aCA9IG5vZGVbZ2V0VGV4dENvbnRlbnRBY2Nlc3NvcigpXS5sZW5ndGg7XG5cdCAgdmFyIHN0
YXJ0ID0gTWF0aC5taW4ob2Zmc2V0cy5zdGFydCwgbGVuZ3RoKTtcblx0ICB2YXIgZW5kID0gb2Zm
c2V0cy5lbmQgPT09IHVuZGVmaW5lZCA/IHN0YXJ0IDogTWF0aC5taW4ob2Zmc2V0cy5lbmQsIGxl
bmd0aCk7XG5cdFxuXHQgIC8vIElFIDExIHVzZXMgbW9kZXJuIHNlbGVjdGlvbiwgYnV0IGRvZXNu
J3Qgc3VwcG9ydCB0aGUgZXh0ZW5kIG1ldGhvZC5cblx0ICAvLyBGbGlwIGJhY2t3YXJkIHNlbGVj
dGlvbnMsIHNvIHdlIGNhbiBzZXQgd2l0aCBhIHNpbmdsZSByYW5nZS5cblx0ICBpZiAoIXNlbGVj
dGlvbi5leHRlbmQgJiYgc3RhcnQgPiBlbmQpIHtcblx0ICAgIHZhciB0ZW1wID0gZW5kO1xuXHQg
ICAgZW5kID0gc3RhcnQ7XG5cdCAgICBzdGFydCA9IHRlbXA7XG5cdCAgfVxuXHRcblx0ICB2YXIg
c3RhcnRNYXJrZXIgPSBnZXROb2RlRm9yQ2hhcmFjdGVyT2Zmc2V0KG5vZGUsIHN0YXJ0KTtcblx0
ICB2YXIgZW5kTWFya2VyID0gZ2V0Tm9kZUZvckNoYXJhY3Rlck9mZnNldChub2RlLCBlbmQpO1xu
XHRcblx0ICBpZiAoc3RhcnRNYXJrZXIgJiYgZW5kTWFya2VyKSB7XG5cdCAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpO1xuXHQgICAgcmFuZ2Uuc2V0U3RhcnQoc3RhcnRNYXJr
ZXIubm9kZSwgc3RhcnRNYXJrZXIub2Zmc2V0KTtcblx0ICAgIHNlbGVjdGlvbi5yZW1vdmVBbGxS
YW5nZXMoKTtcblx0XG5cdCAgICBpZiAoc3RhcnQgPiBlbmQpIHtcblx0ICAgICAgc2VsZWN0aW9u
LmFkZFJhbmdlKHJhbmdlKTtcblx0ICAgICAgc2VsZWN0aW9uLmV4dGVuZChlbmRNYXJrZXIubm9k
ZSwgZW5kTWFya2VyLm9mZnNldCk7XG5cdCAgICB9IGVsc2Uge1xuXHQgICAgICByYW5nZS5zZXRF
bmQoZW5kTWFya2VyLm5vZGUsIGVuZE1hcmtlci5vZmZzZXQpO1xuXHQgICAgICBzZWxlY3Rpb24u
YWRkUmFuZ2UocmFuZ2UpO1xuXHQgICAgfVxuXHQgIH1cblx0fVxuXHRcblx0dmFyIHVzZUlFT2Zm
c2V0cyA9IEV4ZWN1dGlvbkVudmlyb25tZW50LmNhblVzZURPTSAmJiAnc2VsZWN0aW9uJyBpbiBk
b2N1bWVudCAmJiAhKCdnZXRTZWxlY3Rpb24nIGluIHdpbmRvdyk7XG5cdFxuXHR2YXIgUmVhY3RE
T01TZWxlY3Rpb24gPSB7XG5cdCAgLyoqXG5cdCAgICogQHBhcmFtIHtET01FbGVtZW50fSBub2Rl
XG5cdCAgICovXG5cdCAgZ2V0T2Zmc2V0czogdXNlSUVPZmZzZXRzID8gZ2V0SUVPZmZzZXRzIDog
Z2V0TW9kZXJuT2Zmc2V0cyxcblx0XG5cdCAgLyoqXG5cdCAgICogQHBhcmFtIHtET01FbGVtZW50
fERPTVRleHROb2RlfSBub2RlXG5cdCAgICogQHBhcmFtIHtvYmplY3R9IG9mZnNldHNcblx0ICAg
Ki9cblx0ICBzZXRPZmZzZXRzOiB1c2VJRU9mZnNldHMgPyBzZXRJRU9mZnNldHMgOiBzZXRNb2Rl
cm5PZmZzZXRzXG5cdH07XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IFJlYWN0RE9NU2VsZWN0aW9u
O1xuXG4vKioqLyB9LFxuLyogMTQ2ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMs
IF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvKipcblx0ICogQ29weXJpZ2h0IDIwMTMtcHJl
c2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0
ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vu
c2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkg
b2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQg
cmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVj
dG9yeS5cblx0ICpcblx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHR2YXIgX3Byb2RJ
bnZhcmlhbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMpLFxuXHQgICAgX2Fzc2lnbiA9IF9fd2Vi
cGFja19yZXF1aXJlX18oNCk7XG5cdFxuXHR2YXIgRE9NQ2hpbGRyZW5PcGVyYXRpb25zID0gX193
ZWJwYWNrX3JlcXVpcmVfXygzNCk7XG5cdHZhciBET01MYXp5VHJlZSA9IF9fd2VicGFja19yZXF1
aXJlX18oMTQpO1xuXHR2YXIgUmVhY3RET01Db21wb25lbnRUcmVlID0gX193ZWJwYWNrX3JlcXVp
cmVfXyg1KTtcblx0XG5cdHZhciBlc2NhcGVUZXh0Q29udGVudEZvckJyb3dzZXIgPSBfX3dlYnBh
Y2tfcmVxdWlyZV9fKDI4KTtcblx0dmFyIGludmFyaWFudCA9IF9fd2VicGFja19yZXF1aXJlX18o
MSk7XG5cdHZhciB2YWxpZGF0ZURPTU5lc3RpbmcgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQ5KTtc
blx0XG5cdC8qKlxuXHQgKiBUZXh0IG5vZGVzIHZpb2xhdGUgYSBjb3VwbGUgYXNzdW1wdGlvbnMg
dGhhdCBSZWFjdCBtYWtlcyBhYm91dCBjb21wb25lbnRzOlxuXHQgKlxuXHQgKiAgLSBXaGVuIG1v
dW50aW5nIHRleHQgaW50byB0aGUgRE9NLCBhZGphY2VudCB0ZXh0IG5vZGVzIGFyZSBtZXJnZWQu
XG5cdCAqICAtIFRleHQgbm9kZXMgY2Fubm90IGJlIGFzc2lnbmVkIGEgUmVhY3Qgcm9vdCBJRC5c
blx0ICpcblx0ICogVGhpcyBjb21wb25lbnQgaXMgdXNlZCB0byB3cmFwIHN0cmluZ3MgYmV0d2Vl
biBjb21tZW50IG5vZGVzIHNvIHRoYXQgdGhleVxuXHQgKiBjYW4gdW5kZXJnbyB0aGUgc2FtZSBy
ZWNvbmNpbGlhdGlvbiB0aGF0IGlzIGFwcGxpZWQgdG8gZWxlbWVudHMuXG5cdCAqXG5cdCAqIFRP
RE86IEludmVzdGlnYXRlIHJlcHJlc2VudGluZyBSZWFjdCBjb21wb25lbnRzIGluIHRoZSBET00g
d2l0aCB0ZXh0IG5vZGVzLlxuXHQgKlxuXHQgKiBAY2xhc3MgUmVhY3RET01UZXh0Q29tcG9uZW50
XG5cdCAqIEBleHRlbmRzIFJlYWN0Q29tcG9uZW50XG5cdCAqIEBpbnRlcm5hbFxuXHQgKi9cblx0
dmFyIFJlYWN0RE9NVGV4dENvbXBvbmVudCA9IGZ1bmN0aW9uICh0ZXh0KSB7XG5cdCAgLy8gVE9E
TzogVGhpcyBpcyByZWFsbHkgYSBSZWFjdFRleHQgKFJlYWN0Tm9kZSksIG5vdCBhIFJlYWN0RWxl
bWVudFxuXHQgIHRoaXMuX2N1cnJlbnRFbGVtZW50ID0gdGV4dDtcblx0ICB0aGlzLl9zdHJpbmdU
ZXh0ID0gJycgKyB0ZXh0O1xuXHQgIC8vIFJlYWN0RE9NQ29tcG9uZW50VHJlZSB1c2VzIHRoZXNl
OlxuXHQgIHRoaXMuX2hvc3ROb2RlID0gbnVsbDtcblx0ICB0aGlzLl9ob3N0UGFyZW50ID0gbnVs
bDtcblx0XG5cdCAgLy8gUHJvcGVydGllc1xuXHQgIHRoaXMuX2RvbUlEID0gMDtcblx0ICB0aGlz
Ll9tb3VudEluZGV4ID0gMDtcblx0ICB0aGlzLl9jbG9zaW5nQ29tbWVudCA9IG51bGw7XG5cdCAg
dGhpcy5fY29tbWVudE5vZGVzID0gbnVsbDtcblx0fTtcblx0XG5cdF9hc3NpZ24oUmVhY3RET01U
ZXh0Q29tcG9uZW50LnByb3RvdHlwZSwge1xuXHQgIC8qKlxuXHQgICAqIENyZWF0ZXMgdGhlIG1h
cmt1cCBmb3IgdGhpcyB0ZXh0IG5vZGUuIFRoaXMgbm9kZSBpcyBub3QgaW50ZW5kZWQgdG8gaGF2
ZVxuXHQgICAqIGFueSBmZWF0dXJlcyBiZXNpZGVzIGNvbnRhaW5pbmcgdGV4dCBjb250ZW50Llxu
XHQgICAqXG5cdCAgICogQHBhcmFtIHtSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9ufFJlYWN0U2Vy
dmVyUmVuZGVyaW5nVHJhbnNhY3Rpb259IHRyYW5zYWN0aW9uXG5cdCAgICogQHJldHVybiB7c3Ry
aW5nfSBNYXJrdXAgZm9yIHRoaXMgdGV4dCBub2RlLlxuXHQgICAqIEBpbnRlcm5hbFxuXHQgICAq
L1xuXHQgIG1vdW50Q29tcG9uZW50OiBmdW5jdGlvbiAodHJhbnNhY3Rpb24sIGhvc3RQYXJlbnQs
IGhvc3RDb250YWluZXJJbmZvLCBjb250ZXh0KSB7XG5cdCAgICBpZiAoZmFsc2UpIHtcblx0ICAg
ICAgdmFyIHBhcmVudEluZm87XG5cdCAgICAgIGlmIChob3N0UGFyZW50ICE9IG51bGwpIHtcblx0
ICAgICAgICBwYXJlbnRJbmZvID0gaG9zdFBhcmVudC5fYW5jZXN0b3JJbmZvO1xuXHQgICAgICB9
IGVsc2UgaWYgKGhvc3RDb250YWluZXJJbmZvICE9IG51bGwpIHtcblx0ICAgICAgICBwYXJlbnRJ
bmZvID0gaG9zdENvbnRhaW5lckluZm8uX2FuY2VzdG9ySW5mbztcblx0ICAgICAgfVxuXHQgICAg
ICBpZiAocGFyZW50SW5mbykge1xuXHQgICAgICAgIC8vIHBhcmVudEluZm8gc2hvdWxkIGFsd2F5
cyBiZSBwcmVzZW50IGV4Y2VwdCBmb3IgdGhlIHRvcC1sZXZlbFxuXHQgICAgICAgIC8vIGNvbXBv
bmVudCB3aGVuIHNlcnZlciByZW5kZXJpbmdcblx0ICAgICAgICB2YWxpZGF0ZURPTU5lc3Rpbmco
bnVsbCwgdGhpcy5fc3RyaW5nVGV4dCwgdGhpcywgcGFyZW50SW5mbyk7XG5cdCAgICAgIH1cblx0
ICAgIH1cblx0XG5cdCAgICB2YXIgZG9tSUQgPSBob3N0Q29udGFpbmVySW5mby5faWRDb3VudGVy
Kys7XG5cdCAgICB2YXIgb3BlbmluZ1ZhbHVlID0gJyByZWFjdC10ZXh0OiAnICsgZG9tSUQgKyAn
ICc7XG5cdCAgICB2YXIgY2xvc2luZ1ZhbHVlID0gJyAvcmVhY3QtdGV4dCAnO1xuXHQgICAgdGhp
cy5fZG9tSUQgPSBkb21JRDtcblx0ICAgIHRoaXMuX2hvc3RQYXJlbnQgPSBob3N0UGFyZW50O1xu
XHQgICAgaWYgKHRyYW5zYWN0aW9uLnVzZUNyZWF0ZUVsZW1lbnQpIHtcblx0ICAgICAgdmFyIG93
bmVyRG9jdW1lbnQgPSBob3N0Q29udGFpbmVySW5mby5fb3duZXJEb2N1bWVudDtcblx0ICAgICAg
dmFyIG9wZW5pbmdDb21tZW50ID0gb3duZXJEb2N1bWVudC5jcmVhdGVDb21tZW50KG9wZW5pbmdW
YWx1ZSk7XG5cdCAgICAgIHZhciBjbG9zaW5nQ29tbWVudCA9IG93bmVyRG9jdW1lbnQuY3JlYXRl
Q29tbWVudChjbG9zaW5nVmFsdWUpO1xuXHQgICAgICB2YXIgbGF6eVRyZWUgPSBET01MYXp5VHJl
ZShvd25lckRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKSk7XG5cdCAgICAgIERPTUxh
enlUcmVlLnF1ZXVlQ2hpbGQobGF6eVRyZWUsIERPTUxhenlUcmVlKG9wZW5pbmdDb21tZW50KSk7
XG5cdCAgICAgIGlmICh0aGlzLl9zdHJpbmdUZXh0KSB7XG5cdCAgICAgICAgRE9NTGF6eVRyZWUu
cXVldWVDaGlsZChsYXp5VHJlZSwgRE9NTGF6eVRyZWUob3duZXJEb2N1bWVudC5jcmVhdGVUZXh0
Tm9kZSh0aGlzLl9zdHJpbmdUZXh0KSkpO1xuXHQgICAgICB9XG5cdCAgICAgIERPTUxhenlUcmVl
LnF1ZXVlQ2hpbGQobGF6eVRyZWUsIERPTUxhenlUcmVlKGNsb3NpbmdDb21tZW50KSk7XG5cdCAg
ICAgIFJlYWN0RE9NQ29tcG9uZW50VHJlZS5wcmVjYWNoZU5vZGUodGhpcywgb3BlbmluZ0NvbW1l
bnQpO1xuXHQgICAgICB0aGlzLl9jbG9zaW5nQ29tbWVudCA9IGNsb3NpbmdDb21tZW50O1xuXHQg
ICAgICByZXR1cm4gbGF6eVRyZWU7XG5cdCAgICB9IGVsc2Uge1xuXHQgICAgICB2YXIgZXNjYXBl
ZFRleHQgPSBlc2NhcGVUZXh0Q29udGVudEZvckJyb3dzZXIodGhpcy5fc3RyaW5nVGV4dCk7XG5c
dFxuXHQgICAgICBpZiAodHJhbnNhY3Rpb24ucmVuZGVyVG9TdGF0aWNNYXJrdXApIHtcblx0ICAg
ICAgICAvLyBOb3JtYWxseSB3ZSdkIHdyYXAgdGhpcyBiZXR3ZWVuIGNvbW1lbnQgbm9kZXMgZm9y
IHRoZSByZWFzb25zIHN0YXRlZFxuXHQgICAgICAgIC8vIGFib3ZlLCBidXQgc2luY2UgdGhpcyBp
cyBhIHNpdHVhdGlvbiB3aGVyZSBSZWFjdCB3b24ndCB0YWtlIG92ZXJcblx0ICAgICAgICAvLyAo
c3RhdGljIHBhZ2VzKSwgd2UgY2FuIHNpbXBseSByZXR1cm4gdGhlIHRleHQgYXMgaXQgaXMuXG5c
dCAgICAgICAgcmV0dXJuIGVzY2FwZWRUZXh0O1xuXHQgICAgICB9XG5cdFxuXHQgICAgICByZXR1
cm4gJzwhLS0nICsgb3BlbmluZ1ZhbHVlICsgJy0tPicgKyBlc2NhcGVkVGV4dCArICc8IS0tJyAr
IGNsb3NpbmdWYWx1ZSArICctLT4nO1xuXHQgICAgfVxuXHQgIH0sXG5cdFxuXHQgIC8qKlxuXHQg
ICAqIFVwZGF0ZXMgdGhpcyBjb21wb25lbnQgYnkgdXBkYXRpbmcgdGhlIHRleHQgY29udGVudC5c
blx0ICAgKlxuXHQgICAqIEBwYXJhbSB7UmVhY3RUZXh0fSBuZXh0VGV4dCBUaGUgbmV4dCB0ZXh0
IGNvbnRlbnRcblx0ICAgKiBAcGFyYW0ge1JlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb259IHRyYW5z
YWN0aW9uXG5cdCAgICogQGludGVybmFsXG5cdCAgICovXG5cdCAgcmVjZWl2ZUNvbXBvbmVudDog
ZnVuY3Rpb24gKG5leHRUZXh0LCB0cmFuc2FjdGlvbikge1xuXHQgICAgaWYgKG5leHRUZXh0ICE9
PSB0aGlzLl9jdXJyZW50RWxlbWVudCkge1xuXHQgICAgICB0aGlzLl9jdXJyZW50RWxlbWVudCA9
IG5leHRUZXh0O1xuXHQgICAgICB2YXIgbmV4dFN0cmluZ1RleHQgPSAnJyArIG5leHRUZXh0O1xu
XHQgICAgICBpZiAobmV4dFN0cmluZ1RleHQgIT09IHRoaXMuX3N0cmluZ1RleHQpIHtcblx0ICAg
ICAgICAvLyBUT0RPOiBTYXZlIHRoaXMgYXMgcGVuZGluZyBwcm9wcyBhbmQgdXNlIHBlcmZvcm1V
cGRhdGVJZk5lY2Vzc2FyeVxuXHQgICAgICAgIC8vIGFuZC9vciB1cGRhdGVDb21wb25lbnQgdG8g
ZG8gdGhlIGFjdHVhbCB1cGRhdGUgZm9yIGNvbnNpc3RlbmN5IHdpdGhcblx0ICAgICAgICAvLyBv
dGhlciBjb21wb25lbnQgdHlwZXM/XG5cdCAgICAgICAgdGhpcy5fc3RyaW5nVGV4dCA9IG5leHRT
dHJpbmdUZXh0O1xuXHQgICAgICAgIHZhciBjb21tZW50Tm9kZXMgPSB0aGlzLmdldEhvc3ROb2Rl
KCk7XG5cdCAgICAgICAgRE9NQ2hpbGRyZW5PcGVyYXRpb25zLnJlcGxhY2VEZWxpbWl0ZWRUZXh0
KGNvbW1lbnROb2Rlc1swXSwgY29tbWVudE5vZGVzWzFdLCBuZXh0U3RyaW5nVGV4dCk7XG5cdCAg
ICAgIH1cblx0ICAgIH1cblx0ICB9LFxuXHRcblx0ICBnZXRIb3N0Tm9kZTogZnVuY3Rpb24gKCkg
e1xuXHQgICAgdmFyIGhvc3ROb2RlID0gdGhpcy5fY29tbWVudE5vZGVzO1xuXHQgICAgaWYgKGhv
c3ROb2RlKSB7XG5cdCAgICAgIHJldHVybiBob3N0Tm9kZTtcblx0ICAgIH1cblx0ICAgIGlmICgh
dGhpcy5fY2xvc2luZ0NvbW1lbnQpIHtcblx0ICAgICAgdmFyIG9wZW5pbmdDb21tZW50ID0gUmVh
Y3RET01Db21wb25lbnRUcmVlLmdldE5vZGVGcm9tSW5zdGFuY2UodGhpcyk7XG5cdCAgICAgIHZh
ciBub2RlID0gb3BlbmluZ0NvbW1lbnQubmV4dFNpYmxpbmc7XG5cdCAgICAgIHdoaWxlICh0cnVl
KSB7XG5cdCAgICAgICAgIShub2RlICE9IG51bGwpID8gIGZhbHNlID8gaW52YXJpYW50KGZhbHNl
LCAnTWlzc2luZyBjbG9zaW5nIGNvbW1lbnQgZm9yIHRleHQgY29tcG9uZW50ICVzJywgdGhpcy5f
ZG9tSUQpIDogX3Byb2RJbnZhcmlhbnQoJzY3JywgdGhpcy5fZG9tSUQpIDogdm9pZCAwO1xuXHQg
ICAgICAgIGlmIChub2RlLm5vZGVUeXBlID09PSA4ICYmIG5vZGUubm9kZVZhbHVlID09PSAnIC9y
ZWFjdC10ZXh0ICcpIHtcblx0ICAgICAgICAgIHRoaXMuX2Nsb3NpbmdDb21tZW50ID0gbm9kZTtc
blx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblx0ICAgICAgICBub2RlID0gbm9kZS5u
ZXh0U2libGluZztcblx0ICAgICAgfVxuXHQgICAgfVxuXHQgICAgaG9zdE5vZGUgPSBbdGhpcy5f
aG9zdE5vZGUsIHRoaXMuX2Nsb3NpbmdDb21tZW50XTtcblx0ICAgIHRoaXMuX2NvbW1lbnROb2Rl
cyA9IGhvc3ROb2RlO1xuXHQgICAgcmV0dXJuIGhvc3ROb2RlO1xuXHQgIH0sXG5cdFxuXHQgIHVu
bW91bnRDb21wb25lbnQ6IGZ1bmN0aW9uICgpIHtcblx0ICAgIHRoaXMuX2Nsb3NpbmdDb21tZW50
ID0gbnVsbDtcblx0ICAgIHRoaXMuX2NvbW1lbnROb2RlcyA9IG51bGw7XG5cdCAgICBSZWFjdERP
TUNvbXBvbmVudFRyZWUudW5jYWNoZU5vZGUodGhpcyk7XG5cdCAgfVxuXHR9KTtcblx0XG5cdG1v
ZHVsZS5leHBvcnRzID0gUmVhY3RET01UZXh0Q29tcG9uZW50O1xuXG4vKioqLyB9LFxuLyogMTQ3
ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18p
IHtcblxuXHQvKipcblx0ICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5c
blx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBp
cyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAq
IExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4g
QW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBp
biB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpcblx0ICovXG5c
dFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHR2YXIgX3Byb2RJbnZhcmlhbnQgPSBfX3dlYnBhY2tf
cmVxdWlyZV9fKDMpLFxuXHQgICAgX2Fzc2lnbiA9IF9fd2VicGFja19yZXF1aXJlX18oNCk7XG5c
dFxuXHR2YXIgTGlua2VkVmFsdWVVdGlscyA9IF9fd2VicGFja19yZXF1aXJlX18oMzkpO1xuXHR2
YXIgUmVhY3RET01Db21wb25lbnRUcmVlID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1KTtcblx0dmFy
IFJlYWN0VXBkYXRlcyA9IF9fd2VicGFja19yZXF1aXJlX18oOSk7XG5cdFxuXHR2YXIgaW52YXJp
YW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxKTtcblx0dmFyIHdhcm5pbmcgPSBfX3dlYnBhY2tf
cmVxdWlyZV9fKDIpO1xuXHRcblx0dmFyIGRpZFdhcm5WYWx1ZUxpbmsgPSBmYWxzZTtcblx0dmFy
IGRpZFdhcm5WYWxEZWZhdWx0VmFsID0gZmFsc2U7XG5cdFxuXHRmdW5jdGlvbiBmb3JjZVVwZGF0
ZUlmTW91bnRlZCgpIHtcblx0ICBpZiAodGhpcy5fcm9vdE5vZGVJRCkge1xuXHQgICAgLy8gRE9N
IGNvbXBvbmVudCBpcyBzdGlsbCBtb3VudGVkOyB1cGRhdGVcblx0ICAgIFJlYWN0RE9NVGV4dGFy
ZWEudXBkYXRlV3JhcHBlcih0aGlzKTtcblx0ICB9XG5cdH1cblx0XG5cdC8qKlxuXHQgKiBJbXBs
ZW1lbnRzIGEgPHRleHRhcmVhPiBob3N0IGNvbXBvbmVudCB0aGF0IGFsbG93cyBzZXR0aW5nIGB2
YWx1ZWAsIGFuZFxuXHQgKiBgZGVmYXVsdFZhbHVlYC4gVGhpcyBkaWZmZXJzIGZyb20gdGhlIHRy
YWRpdGlvbmFsIERPTSBBUEkgYmVjYXVzZSB2YWx1ZSBpc1xuXHQgKiB1c3VhbGx5IHNldCBhcyBQ
Q0RBVEEgY2hpbGRyZW4uXG5cdCAqXG5cdCAqIElmIGB2YWx1ZWAgaXMgbm90IHN1cHBsaWVkIChv
ciBudWxsL3VuZGVmaW5lZCksIHVzZXIgYWN0aW9ucyB0aGF0IGFmZmVjdCB0aGVcblx0ICogdmFs
dWUgd2lsbCB0cmlnZ2VyIHVwZGF0ZXMgdG8gdGhlIGVsZW1lbnQuXG5cdCAqXG5cdCAqIElmIGB2
YWx1ZWAgaXMgc3VwcGxpZWQgKGFuZCBub3QgbnVsbC91bmRlZmluZWQpLCB0aGUgcmVuZGVyZWQg
ZWxlbWVudCB3aWxsXG5cdCAqIG5vdCB0cmlnZ2VyIHVwZGF0ZXMgdG8gdGhlIGVsZW1lbnQuIElu
c3RlYWQsIHRoZSBgdmFsdWVgIHByb3AgbXVzdCBjaGFuZ2UgaW5cblx0ICogb3JkZXIgZm9yIHRo
ZSByZW5kZXJlZCBlbGVtZW50IHRvIGJlIHVwZGF0ZWQuXG5cdCAqXG5cdCAqIFRoZSByZW5kZXJl
ZCBlbGVtZW50IHdpbGwgYmUgaW5pdGlhbGl6ZWQgd2l0aCBhbiBlbXB0eSB2YWx1ZSwgdGhlIHBy
b3Bcblx0ICogYGRlZmF1bHRWYWx1ZWAgaWYgc3BlY2lmaWVkLCBvciB0aGUgY2hpbGRyZW4gY29u
dGVudCAoZGVwcmVjYXRlZCkuXG5cdCAqL1xuXHR2YXIgUmVhY3RET01UZXh0YXJlYSA9IHtcblx0
ICBnZXRIb3N0UHJvcHM6IGZ1bmN0aW9uIChpbnN0LCBwcm9wcykge1xuXHQgICAgIShwcm9wcy5k
YW5nZXJvdXNseVNldElubmVySFRNTCA9PSBudWxsKSA/ICBmYWxzZSA/IGludmFyaWFudChmYWxz
ZSwgJ2BkYW5nZXJvdXNseVNldElubmVySFRNTGAgZG9lcyBub3QgbWFrZSBzZW5zZSBvbiA8dGV4
dGFyZWE+LicpIDogX3Byb2RJbnZhcmlhbnQoJzkxJykgOiB2b2lkIDA7XG5cdFxuXHQgICAgLy8g
QWx3YXlzIHNldCBjaGlsZHJlbiB0byB0aGUgc2FtZSB0aGluZy4gSW4gSUU5LCB0aGUgc2VsZWN0
aW9uIHJhbmdlIHdpbGxcblx0ICAgIC8vIGdldCByZXNldCBpZiBgdGV4dENvbnRlbnRgIGlzIG11
dGF0ZWQuICBXZSBjb3VsZCBhZGQgYSBjaGVjayBpbiBzZXRUZXh0Q29udGVudFxuXHQgICAgLy8g
dG8gb25seSBzZXQgdGhlIHZhbHVlIGlmL3doZW4gdGhlIHZhbHVlIGRpZmZlcnMgZnJvbSB0aGUg
bm9kZSB2YWx1ZSAod2hpY2ggd291bGRcblx0ICAgIC8vIGNvbXBsZXRlbHkgc29sdmUgdGhpcyBJ
RTkgYnVnKSwgYnV0IFNlYmFzdGlhbitCZW4gc2VlbWVkIHRvIGxpa2UgdGhpcyBzb2x1dGlvbi5c
blx0ICAgIC8vIFRoZSB2YWx1ZSBjYW4gYmUgYSBib29sZWFuIG9yIG9iamVjdCBzbyB0aGF0J3Mg
d2h5IGl0J3MgZm9yY2VkIHRvIGJlIGEgc3RyaW5nLlxuXHQgICAgdmFyIGhvc3RQcm9wcyA9IF9h
c3NpZ24oe30sIHByb3BzLCB7XG5cdCAgICAgIHZhbHVlOiB1bmRlZmluZWQsXG5cdCAgICAgIGRl
ZmF1bHRWYWx1ZTogdW5kZWZpbmVkLFxuXHQgICAgICBjaGlsZHJlbjogJycgKyBpbnN0Ll93cmFw
cGVyU3RhdGUuaW5pdGlhbFZhbHVlLFxuXHQgICAgICBvbkNoYW5nZTogaW5zdC5fd3JhcHBlclN0
YXRlLm9uQ2hhbmdlXG5cdCAgICB9KTtcblx0XG5cdCAgICByZXR1cm4gaG9zdFByb3BzO1xuXHQg
IH0sXG5cdFxuXHQgIG1vdW50V3JhcHBlcjogZnVuY3Rpb24gKGluc3QsIHByb3BzKSB7XG5cdCAg
ICBpZiAoZmFsc2UpIHtcblx0ICAgICAgTGlua2VkVmFsdWVVdGlscy5jaGVja1Byb3BUeXBlcygn
dGV4dGFyZWEnLCBwcm9wcywgaW5zdC5fY3VycmVudEVsZW1lbnQuX293bmVyKTtcblx0ICAgICAg
aWYgKHByb3BzLnZhbHVlTGluayAhPT0gdW5kZWZpbmVkICYmICFkaWRXYXJuVmFsdWVMaW5rKSB7
XG5cdCAgICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5p
bmcoZmFsc2UsICdgdmFsdWVMaW5rYCBwcm9wIG9uIGB0ZXh0YXJlYWAgaXMgZGVwcmVjYXRlZDsg
c2V0IGB2YWx1ZWAgYW5kIGBvbkNoYW5nZWAgaW5zdGVhZC4nKSA6IHZvaWQgMDtcblx0ICAgICAg
ICBkaWRXYXJuVmFsdWVMaW5rID0gdHJ1ZTtcblx0ICAgICAgfVxuXHQgICAgICBpZiAocHJvcHMu
dmFsdWUgIT09IHVuZGVmaW5lZCAmJiBwcm9wcy5kZWZhdWx0VmFsdWUgIT09IHVuZGVmaW5lZCAm
JiAhZGlkV2FyblZhbERlZmF1bHRWYWwpIHtcblx0ICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VO
ViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ1RleHRhcmVhIGVsZW1lbnRzIG11
c3QgYmUgZWl0aGVyIGNvbnRyb2xsZWQgb3IgdW5jb250cm9sbGVkICcgKyAnKHNwZWNpZnkgZWl0
aGVyIHRoZSB2YWx1ZSBwcm9wLCBvciB0aGUgZGVmYXVsdFZhbHVlIHByb3AsIGJ1dCBub3QgJyAr
ICdib3RoKS4gRGVjaWRlIGJldHdlZW4gdXNpbmcgYSBjb250cm9sbGVkIG9yIHVuY29udHJvbGxl
ZCB0ZXh0YXJlYSAnICsgJ2FuZCByZW1vdmUgb25lIG9mIHRoZXNlIHByb3BzLiBNb3JlIGluZm86
ICcgKyAnaHR0cHM6Ly9mYi5tZS9yZWFjdC1jb250cm9sbGVkLWNvbXBvbmVudHMnKSA6IHZvaWQg
MDtcblx0ICAgICAgICBkaWRXYXJuVmFsRGVmYXVsdFZhbCA9IHRydWU7XG5cdCAgICAgIH1cblx0
ICAgIH1cblx0XG5cdCAgICB2YXIgdmFsdWUgPSBMaW5rZWRWYWx1ZVV0aWxzLmdldFZhbHVlKHBy
b3BzKTtcblx0ICAgIHZhciBpbml0aWFsVmFsdWUgPSB2YWx1ZTtcblx0XG5cdCAgICAvLyBPbmx5
IGJvdGhlciBmZXRjaGluZyBkZWZhdWx0IHZhbHVlIGlmIHdlJ3JlIGdvaW5nIHRvIHVzZSBpdFxu
XHQgICAgaWYgKHZhbHVlID09IG51bGwpIHtcblx0ICAgICAgdmFyIGRlZmF1bHRWYWx1ZSA9IHBy
b3BzLmRlZmF1bHRWYWx1ZTtcblx0ICAgICAgLy8gVE9ETyAoeXVuZ3N0ZXJzKTogUmVtb3ZlIHN1
cHBvcnQgZm9yIGNoaWxkcmVuIGNvbnRlbnQgaW4gPHRleHRhcmVhPi5cblx0ICAgICAgdmFyIGNo
aWxkcmVuID0gcHJvcHMuY2hpbGRyZW47XG5cdCAgICAgIGlmIChjaGlsZHJlbiAhPSBudWxsKSB7
XG5cdCAgICAgICAgaWYgKGZhbHNlKSB7XG5cdCAgICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VO
ViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ1VzZSB0aGUgYGRlZmF1bHRWYWx1
ZWAgb3IgYHZhbHVlYCBwcm9wcyBpbnN0ZWFkIG9mIHNldHRpbmcgJyArICdjaGlsZHJlbiBvbiA8
dGV4dGFyZWE+LicpIDogdm9pZCAwO1xuXHQgICAgICAgIH1cblx0ICAgICAgICAhKGRlZmF1bHRW
YWx1ZSA9PSBudWxsKSA/ICBmYWxzZSA/IGludmFyaWFudChmYWxzZSwgJ0lmIHlvdSBzdXBwbHkg
YGRlZmF1bHRWYWx1ZWAgb24gYSA8dGV4dGFyZWE+LCBkbyBub3QgcGFzcyBjaGlsZHJlbi4nKSA6
IF9wcm9kSW52YXJpYW50KCc5MicpIDogdm9pZCAwO1xuXHQgICAgICAgIGlmIChBcnJheS5pc0Fy
cmF5KGNoaWxkcmVuKSkge1xuXHQgICAgICAgICAgIShjaGlsZHJlbi5sZW5ndGggPD0gMSkgPyAg
ZmFsc2UgPyBpbnZhcmlhbnQoZmFsc2UsICc8dGV4dGFyZWE+IGNhbiBvbmx5IGhhdmUgYXQgbW9z
dCBvbmUgY2hpbGQuJykgOiBfcHJvZEludmFyaWFudCgnOTMnKSA6IHZvaWQgMDtcblx0ICAgICAg
ICAgIGNoaWxkcmVuID0gY2hpbGRyZW5bMF07XG5cdCAgICAgICAgfVxuXHRcblx0ICAgICAgICBk
ZWZhdWx0VmFsdWUgPSAnJyArIGNoaWxkcmVuO1xuXHQgICAgICB9XG5cdCAgICAgIGlmIChkZWZh
dWx0VmFsdWUgPT0gbnVsbCkge1xuXHQgICAgICAgIGRlZmF1bHRWYWx1ZSA9ICcnO1xuXHQgICAg
ICB9XG5cdCAgICAgIGluaXRpYWxWYWx1ZSA9IGRlZmF1bHRWYWx1ZTtcblx0ICAgIH1cblx0XG5c
dCAgICBpbnN0Ll93cmFwcGVyU3RhdGUgPSB7XG5cdCAgICAgIGluaXRpYWxWYWx1ZTogJycgKyBp
bml0aWFsVmFsdWUsXG5cdCAgICAgIGxpc3RlbmVyczogbnVsbCxcblx0ICAgICAgb25DaGFuZ2U6
IF9oYW5kbGVDaGFuZ2UuYmluZChpbnN0KVxuXHQgICAgfTtcblx0ICB9LFxuXHRcblx0ICB1cGRh
dGVXcmFwcGVyOiBmdW5jdGlvbiAoaW5zdCkge1xuXHQgICAgdmFyIHByb3BzID0gaW5zdC5fY3Vy
cmVudEVsZW1lbnQucHJvcHM7XG5cdFxuXHQgICAgdmFyIG5vZGUgPSBSZWFjdERPTUNvbXBvbmVu
dFRyZWUuZ2V0Tm9kZUZyb21JbnN0YW5jZShpbnN0KTtcblx0ICAgIHZhciB2YWx1ZSA9IExpbmtl
ZFZhbHVlVXRpbHMuZ2V0VmFsdWUocHJvcHMpO1xuXHQgICAgaWYgKHZhbHVlICE9IG51bGwpIHtc
blx0ICAgICAgLy8gQ2FzdCBgdmFsdWVgIHRvIGEgc3RyaW5nIHRvIGVuc3VyZSB0aGUgdmFsdWUg
aXMgc2V0IGNvcnJlY3RseS4gV2hpbGVcblx0ICAgICAgLy8gYnJvd3NlcnMgdHlwaWNhbGx5IGRv
IHRoaXMgYXMgbmVjZXNzYXJ5LCBqc2RvbSBkb2Vzbid0LlxuXHQgICAgICB2YXIgbmV3VmFsdWUg
PSAnJyArIHZhbHVlO1xuXHRcblx0ICAgICAgLy8gVG8gYXZvaWQgc2lkZSBlZmZlY3RzIChzdWNo
IGFzIGxvc2luZyB0ZXh0IHNlbGVjdGlvbiksIG9ubHkgc2V0IHZhbHVlIGlmIGNoYW5nZWRcblx0
ICAgICAgaWYgKG5ld1ZhbHVlICE9PSBub2RlLnZhbHVlKSB7XG5cdCAgICAgICAgbm9kZS52YWx1
ZSA9IG5ld1ZhbHVlO1xuXHQgICAgICB9XG5cdCAgICAgIGlmIChwcm9wcy5kZWZhdWx0VmFsdWUg
PT0gbnVsbCkge1xuXHQgICAgICAgIG5vZGUuZGVmYXVsdFZhbHVlID0gbmV3VmFsdWU7XG5cdCAg
ICAgIH1cblx0ICAgIH1cblx0ICAgIGlmIChwcm9wcy5kZWZhdWx0VmFsdWUgIT0gbnVsbCkge1xu
XHQgICAgICBub2RlLmRlZmF1bHRWYWx1ZSA9IHByb3BzLmRlZmF1bHRWYWx1ZTtcblx0ICAgIH1c
blx0ICB9LFxuXHRcblx0ICBwb3N0TW91bnRXcmFwcGVyOiBmdW5jdGlvbiAoaW5zdCkge1xuXHQg
ICAgLy8gVGhpcyBpcyBpbiBwb3N0TW91bnQgYmVjYXVzZSB3ZSBuZWVkIGFjY2VzcyB0byB0aGUg
RE9NIG5vZGUsIHdoaWNoIGlzIG5vdFxuXHQgICAgLy8gYXZhaWxhYmxlIHVudGlsIGFmdGVyIHRo
ZSBjb21wb25lbnQgaGFzIG1vdW50ZWQuXG5cdCAgICB2YXIgbm9kZSA9IFJlYWN0RE9NQ29tcG9u
ZW50VHJlZS5nZXROb2RlRnJvbUluc3RhbmNlKGluc3QpO1xuXHQgICAgdmFyIHRleHRDb250ZW50
ID0gbm9kZS50ZXh0Q29udGVudDtcblx0XG5cdCAgICAvLyBPbmx5IHNldCBub2RlLnZhbHVlIGlm
IHRleHRDb250ZW50IGlzIGVxdWFsIHRvIHRoZSBleHBlY3RlZFxuXHQgICAgLy8gaW5pdGlhbCB2
YWx1ZS4gSW4gSUUxMC9JRTExIHRoZXJlIGlzIGEgYnVnIHdoZXJlIHRoZSBwbGFjZWhvbGRlciBh
dHRyaWJ1dGVcblx0ICAgIC8vIHdpbGwgcG9wdWxhdGUgdGV4dENvbnRlbnQgYXMgd2VsbC5cblx0
ICAgIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1pY3Jvc29mdC5jb20vbWljcm9zb2Z0LWVkZ2UvcGxh
dGZvcm0vaXNzdWVzLzEwMTUyNS9cblx0ICAgIGlmICh0ZXh0Q29udGVudCA9PT0gaW5zdC5fd3Jh
cHBlclN0YXRlLmluaXRpYWxWYWx1ZSkge1xuXHQgICAgICBub2RlLnZhbHVlID0gdGV4dENvbnRl
bnQ7XG5cdCAgICB9XG5cdCAgfVxuXHR9O1xuXHRcblx0ZnVuY3Rpb24gX2hhbmRsZUNoYW5nZShl
dmVudCkge1xuXHQgIHZhciBwcm9wcyA9IHRoaXMuX2N1cnJlbnRFbGVtZW50LnByb3BzO1xuXHQg
IHZhciByZXR1cm5WYWx1ZSA9IExpbmtlZFZhbHVlVXRpbHMuZXhlY3V0ZU9uQ2hhbmdlKHByb3Bz
LCBldmVudCk7XG5cdCAgUmVhY3RVcGRhdGVzLmFzYXAoZm9yY2VVcGRhdGVJZk1vdW50ZWQsIHRo
aXMpO1xuXHQgIHJldHVybiByZXR1cm5WYWx1ZTtcblx0fVxuXHRcblx0bW9kdWxlLmV4cG9ydHMg
PSBSZWFjdERPTVRleHRhcmVhO1xuXG4vKioqLyB9LFxuLyogMTQ4ICovXG4vKioqLyBmdW5jdGlv
bihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvKipcblx0ICog
Q29weXJpZ2h0IDIwMTUtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyBy
ZXNlcnZlZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0
aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0
aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFu
dFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxl
IGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpcblx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7
XG5cdFxuXHR2YXIgX3Byb2RJbnZhcmlhbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMpO1xuXHRc
blx0dmFyIGludmFyaWFudCA9IF9fd2VicGFja19yZXF1aXJlX18oMSk7XG5cdFxuXHQvKipcblx0
ICogUmV0dXJuIHRoZSBsb3dlc3QgY29tbW9uIGFuY2VzdG9yIG9mIEEgYW5kIEIsIG9yIG51bGwg
aWYgdGhleSBhcmUgaW5cblx0ICogZGlmZmVyZW50IHRyZWVzLlxuXHQgKi9cblx0ZnVuY3Rpb24g
Z2V0TG93ZXN0Q29tbW9uQW5jZXN0b3IoaW5zdEEsIGluc3RCKSB7XG5cdCAgISgnX2hvc3ROb2Rl
JyBpbiBpbnN0QSkgPyAgZmFsc2UgPyBpbnZhcmlhbnQoZmFsc2UsICdnZXROb2RlRnJvbUluc3Rh
bmNlOiBJbnZhbGlkIGFyZ3VtZW50LicpIDogX3Byb2RJbnZhcmlhbnQoJzMzJykgOiB2b2lkIDA7
XG5cdCAgISgnX2hvc3ROb2RlJyBpbiBpbnN0QikgPyAgZmFsc2UgPyBpbnZhcmlhbnQoZmFsc2Us
ICdnZXROb2RlRnJvbUluc3RhbmNlOiBJbnZhbGlkIGFyZ3VtZW50LicpIDogX3Byb2RJbnZhcmlh
bnQoJzMzJykgOiB2b2lkIDA7XG5cdFxuXHQgIHZhciBkZXB0aEEgPSAwO1xuXHQgIGZvciAodmFy
IHRlbXBBID0gaW5zdEE7IHRlbXBBOyB0ZW1wQSA9IHRlbXBBLl9ob3N0UGFyZW50KSB7XG5cdCAg
ICBkZXB0aEErKztcblx0ICB9XG5cdCAgdmFyIGRlcHRoQiA9IDA7XG5cdCAgZm9yICh2YXIgdGVt
cEIgPSBpbnN0QjsgdGVtcEI7IHRlbXBCID0gdGVtcEIuX2hvc3RQYXJlbnQpIHtcblx0ICAgIGRl
cHRoQisrO1xuXHQgIH1cblx0XG5cdCAgLy8gSWYgQSBpcyBkZWVwZXIsIGNyYXdsIHVwLlxuXHQg
IHdoaWxlIChkZXB0aEEgLSBkZXB0aEIgPiAwKSB7XG5cdCAgICBpbnN0QSA9IGluc3RBLl9ob3N0
UGFyZW50O1xuXHQgICAgZGVwdGhBLS07XG5cdCAgfVxuXHRcblx0ICAvLyBJZiBCIGlzIGRlZXBl
ciwgY3Jhd2wgdXAuXG5cdCAgd2hpbGUgKGRlcHRoQiAtIGRlcHRoQSA+IDApIHtcblx0ICAgIGlu
c3RCID0gaW5zdEIuX2hvc3RQYXJlbnQ7XG5cdCAgICBkZXB0aEItLTtcblx0ICB9XG5cdFxuXHQg
IC8vIFdhbGsgaW4gbG9ja3N0ZXAgdW50aWwgd2UgZmluZCBhIG1hdGNoLlxuXHQgIHZhciBkZXB0
aCA9IGRlcHRoQTtcblx0ICB3aGlsZSAoZGVwdGgtLSkge1xuXHQgICAgaWYgKGluc3RBID09PSBp
bnN0Qikge1xuXHQgICAgICByZXR1cm4gaW5zdEE7XG5cdCAgICB9XG5cdCAgICBpbnN0QSA9IGlu
c3RBLl9ob3N0UGFyZW50O1xuXHQgICAgaW5zdEIgPSBpbnN0Qi5faG9zdFBhcmVudDtcblx0ICB9
XG5cdCAgcmV0dXJuIG51bGw7XG5cdH1cblx0XG5cdC8qKlxuXHQgKiBSZXR1cm4gaWYgQSBpcyBh
biBhbmNlc3RvciBvZiBCLlxuXHQgKi9cblx0ZnVuY3Rpb24gaXNBbmNlc3RvcihpbnN0QSwgaW5z
dEIpIHtcblx0ICAhKCdfaG9zdE5vZGUnIGluIGluc3RBKSA/ICBmYWxzZSA/IGludmFyaWFudChm
YWxzZSwgJ2lzQW5jZXN0b3I6IEludmFsaWQgYXJndW1lbnQuJykgOiBfcHJvZEludmFyaWFudCgn
MzUnKSA6IHZvaWQgMDtcblx0ICAhKCdfaG9zdE5vZGUnIGluIGluc3RCKSA/ICBmYWxzZSA/IGlu
dmFyaWFudChmYWxzZSwgJ2lzQW5jZXN0b3I6IEludmFsaWQgYXJndW1lbnQuJykgOiBfcHJvZElu
dmFyaWFudCgnMzUnKSA6IHZvaWQgMDtcblx0XG5cdCAgd2hpbGUgKGluc3RCKSB7XG5cdCAgICBp
ZiAoaW5zdEIgPT09IGluc3RBKSB7XG5cdCAgICAgIHJldHVybiB0cnVlO1xuXHQgICAgfVxuXHQg
ICAgaW5zdEIgPSBpbnN0Qi5faG9zdFBhcmVudDtcblx0ICB9XG5cdCAgcmV0dXJuIGZhbHNlO1xu
XHR9XG5cdFxuXHQvKipcblx0ICogUmV0dXJuIHRoZSBwYXJlbnQgaW5zdGFuY2Ugb2YgdGhlIHBh
c3NlZC1pbiBpbnN0YW5jZS5cblx0ICovXG5cdGZ1bmN0aW9uIGdldFBhcmVudEluc3RhbmNlKGlu
c3QpIHtcblx0ICAhKCdfaG9zdE5vZGUnIGluIGluc3QpID8gIGZhbHNlID8gaW52YXJpYW50KGZh
bHNlLCAnZ2V0UGFyZW50SW5zdGFuY2U6IEludmFsaWQgYXJndW1lbnQuJykgOiBfcHJvZEludmFy
aWFudCgnMzYnKSA6IHZvaWQgMDtcblx0XG5cdCAgcmV0dXJuIGluc3QuX2hvc3RQYXJlbnQ7XG5c
dH1cblx0XG5cdC8qKlxuXHQgKiBTaW11bGF0ZXMgdGhlIHRyYXZlcnNhbCBvZiBhIHR3by1waGFz
ZSwgY2FwdHVyZS9idWJibGUgZXZlbnQgZGlzcGF0Y2guXG5cdCAqL1xuXHRmdW5jdGlvbiB0cmF2
ZXJzZVR3b1BoYXNlKGluc3QsIGZuLCBhcmcpIHtcblx0ICB2YXIgcGF0aCA9IFtdO1xuXHQgIHdo
aWxlIChpbnN0KSB7XG5cdCAgICBwYXRoLnB1c2goaW5zdCk7XG5cdCAgICBpbnN0ID0gaW5zdC5f
aG9zdFBhcmVudDtcblx0ICB9XG5cdCAgdmFyIGk7XG5cdCAgZm9yIChpID0gcGF0aC5sZW5ndGg7
IGktLSA+IDA7KSB7XG5cdCAgICBmbihwYXRoW2ldLCAnY2FwdHVyZWQnLCBhcmcpO1xuXHQgIH1c
blx0ICBmb3IgKGkgPSAwOyBpIDwgcGF0aC5sZW5ndGg7IGkrKykge1xuXHQgICAgZm4ocGF0aFtp
XSwgJ2J1YmJsZWQnLCBhcmcpO1xuXHQgIH1cblx0fVxuXHRcblx0LyoqXG5cdCAqIFRyYXZlcnNl
cyB0aGUgSUQgaGllcmFyY2h5IGFuZCBpbnZva2VzIHRoZSBzdXBwbGllZCBgY2JgIG9uIGFueSBJ
RHMgdGhhdFxuXHQgKiBzaG91bGQgd291bGQgcmVjZWl2ZSBhIGBtb3VzZUVudGVyYCBvciBgbW91
c2VMZWF2ZWAgZXZlbnQuXG5cdCAqXG5cdCAqIERvZXMgbm90IGludm9rZSB0aGUgY2FsbGJhY2sg
b24gdGhlIG5lYXJlc3QgY29tbW9uIGFuY2VzdG9yIGJlY2F1c2Ugbm90aGluZ1xuXHQgKiBcImVu
dGVyZWRcIiBvciBcImxlZnRcIiB0aGF0IGVsZW1lbnQuXG5cdCAqL1xuXHRmdW5jdGlvbiB0cmF2
ZXJzZUVudGVyTGVhdmUoZnJvbSwgdG8sIGZuLCBhcmdGcm9tLCBhcmdUbykge1xuXHQgIHZhciBj
b21tb24gPSBmcm9tICYmIHRvID8gZ2V0TG93ZXN0Q29tbW9uQW5jZXN0b3IoZnJvbSwgdG8pIDog
bnVsbDtcblx0ICB2YXIgcGF0aEZyb20gPSBbXTtcblx0ICB3aGlsZSAoZnJvbSAmJiBmcm9tICE9
PSBjb21tb24pIHtcblx0ICAgIHBhdGhGcm9tLnB1c2goZnJvbSk7XG5cdCAgICBmcm9tID0gZnJv
bS5faG9zdFBhcmVudDtcblx0ICB9XG5cdCAgdmFyIHBhdGhUbyA9IFtdO1xuXHQgIHdoaWxlICh0
byAmJiB0byAhPT0gY29tbW9uKSB7XG5cdCAgICBwYXRoVG8ucHVzaCh0byk7XG5cdCAgICB0byA9
IHRvLl9ob3N0UGFyZW50O1xuXHQgIH1cblx0ICB2YXIgaTtcblx0ICBmb3IgKGkgPSAwOyBpIDwg
cGF0aEZyb20ubGVuZ3RoOyBpKyspIHtcblx0ICAgIGZuKHBhdGhGcm9tW2ldLCAnYnViYmxlZCcs
IGFyZ0Zyb20pO1xuXHQgIH1cblx0ICBmb3IgKGkgPSBwYXRoVG8ubGVuZ3RoOyBpLS0gPiAwOykg
e1xuXHQgICAgZm4ocGF0aFRvW2ldLCAnY2FwdHVyZWQnLCBhcmdUbyk7XG5cdCAgfVxuXHR9XG5c
dFxuXHRtb2R1bGUuZXhwb3J0cyA9IHtcblx0ICBpc0FuY2VzdG9yOiBpc0FuY2VzdG9yLFxuXHQg
IGdldExvd2VzdENvbW1vbkFuY2VzdG9yOiBnZXRMb3dlc3RDb21tb25BbmNlc3Rvcixcblx0ICBn
ZXRQYXJlbnRJbnN0YW5jZTogZ2V0UGFyZW50SW5zdGFuY2UsXG5cdCAgdHJhdmVyc2VUd29QaGFz
ZTogdHJhdmVyc2VUd29QaGFzZSxcblx0ICB0cmF2ZXJzZUVudGVyTGVhdmU6IHRyYXZlcnNlRW50
ZXJMZWF2ZVxuXHR9O1xuXG4vKioqLyB9LFxuLyogMTQ5ICovXG4vKioqLyBmdW5jdGlvbihtb2R1
bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvKipcblx0ICogQ29weXJp
Z2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZl
ZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNE
LXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9v
dCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQg
KiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRo
ZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpcblx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxu
XHR2YXIgX2Fzc2lnbiA9IF9fd2VicGFja19yZXF1aXJlX18oNCk7XG5cdFxuXHR2YXIgUmVhY3RV
cGRhdGVzID0gX193ZWJwYWNrX3JlcXVpcmVfXyg5KTtcblx0dmFyIFRyYW5zYWN0aW9uID0gX193
ZWJwYWNrX3JlcXVpcmVfXygyNyk7XG5cdFxuXHR2YXIgZW1wdHlGdW5jdGlvbiA9IF9fd2VicGFj
a19yZXF1aXJlX18oNyk7XG5cdFxuXHR2YXIgUkVTRVRfQkFUQ0hFRF9VUERBVEVTID0ge1xuXHQg
IGluaXRpYWxpemU6IGVtcHR5RnVuY3Rpb24sXG5cdCAgY2xvc2U6IGZ1bmN0aW9uICgpIHtcblx0
ICAgIFJlYWN0RGVmYXVsdEJhdGNoaW5nU3RyYXRlZ3kuaXNCYXRjaGluZ1VwZGF0ZXMgPSBmYWxz
ZTtcblx0ICB9XG5cdH07XG5cdFxuXHR2YXIgRkxVU0hfQkFUQ0hFRF9VUERBVEVTID0ge1xuXHQg
IGluaXRpYWxpemU6IGVtcHR5RnVuY3Rpb24sXG5cdCAgY2xvc2U6IFJlYWN0VXBkYXRlcy5mbHVz
aEJhdGNoZWRVcGRhdGVzLmJpbmQoUmVhY3RVcGRhdGVzKVxuXHR9O1xuXHRcblx0dmFyIFRSQU5T
QUNUSU9OX1dSQVBQRVJTID0gW0ZMVVNIX0JBVENIRURfVVBEQVRFUywgUkVTRVRfQkFUQ0hFRF9V
UERBVEVTXTtcblx0XG5cdGZ1bmN0aW9uIFJlYWN0RGVmYXVsdEJhdGNoaW5nU3RyYXRlZ3lUcmFu
c2FjdGlvbigpIHtcblx0ICB0aGlzLnJlaW5pdGlhbGl6ZVRyYW5zYWN0aW9uKCk7XG5cdH1cblx0
XG5cdF9hc3NpZ24oUmVhY3REZWZhdWx0QmF0Y2hpbmdTdHJhdGVneVRyYW5zYWN0aW9uLnByb3Rv
dHlwZSwgVHJhbnNhY3Rpb24sIHtcblx0ICBnZXRUcmFuc2FjdGlvbldyYXBwZXJzOiBmdW5jdGlv
biAoKSB7XG5cdCAgICByZXR1cm4gVFJBTlNBQ1RJT05fV1JBUFBFUlM7XG5cdCAgfVxuXHR9KTtc
blx0XG5cdHZhciB0cmFuc2FjdGlvbiA9IG5ldyBSZWFjdERlZmF1bHRCYXRjaGluZ1N0cmF0ZWd5
VHJhbnNhY3Rpb24oKTtcblx0XG5cdHZhciBSZWFjdERlZmF1bHRCYXRjaGluZ1N0cmF0ZWd5ID0g
e1xuXHQgIGlzQmF0Y2hpbmdVcGRhdGVzOiBmYWxzZSxcblx0XG5cdCAgLyoqXG5cdCAgICogQ2Fs
bCB0aGUgcHJvdmlkZWQgZnVuY3Rpb24gaW4gYSBjb250ZXh0IHdpdGhpbiB3aGljaCBjYWxscyB0
byBgc2V0U3RhdGVgXG5cdCAgICogYW5kIGZyaWVuZHMgYXJlIGJhdGNoZWQgc3VjaCB0aGF0IGNv
bXBvbmVudHMgYXJlbid0IHVwZGF0ZWQgdW5uZWNlc3NhcmlseS5cblx0ICAgKi9cblx0ICBiYXRj
aGVkVXBkYXRlczogZnVuY3Rpb24gKGNhbGxiYWNrLCBhLCBiLCBjLCBkLCBlKSB7XG5cdCAgICB2
YXIgYWxyZWFkeUJhdGNoaW5nVXBkYXRlcyA9IFJlYWN0RGVmYXVsdEJhdGNoaW5nU3RyYXRlZ3ku
aXNCYXRjaGluZ1VwZGF0ZXM7XG5cdFxuXHQgICAgUmVhY3REZWZhdWx0QmF0Y2hpbmdTdHJhdGVn
eS5pc0JhdGNoaW5nVXBkYXRlcyA9IHRydWU7XG5cdFxuXHQgICAgLy8gVGhlIGNvZGUgaXMgd3Jp
dHRlbiB0aGlzIHdheSB0byBhdm9pZCBleHRyYSBhbGxvY2F0aW9uc1xuXHQgICAgaWYgKGFscmVh
ZHlCYXRjaGluZ1VwZGF0ZXMpIHtcblx0ICAgICAgcmV0dXJuIGNhbGxiYWNrKGEsIGIsIGMsIGQs
IGUpO1xuXHQgICAgfSBlbHNlIHtcblx0ICAgICAgcmV0dXJuIHRyYW5zYWN0aW9uLnBlcmZvcm0o
Y2FsbGJhY2ssIG51bGwsIGEsIGIsIGMsIGQsIGUpO1xuXHQgICAgfVxuXHQgIH1cblx0fTtcblx0
XG5cdG1vZHVsZS5leHBvcnRzID0gUmVhY3REZWZhdWx0QmF0Y2hpbmdTdHJhdGVneTtcblxuLyoq
Ki8gfSxcbi8qIDE1MCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBh
Y2tfcmVxdWlyZV9fKSB7XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZh
Y2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMg
c291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5k
IGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMg
c291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBj
YW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5c
dCAqXG5cdCAqL1xuXHRcblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0dmFyIEFSSUFET01Qcm9wZXJ0
eUNvbmZpZyA9IF9fd2VicGFja19yZXF1aXJlX18oMTI0KTtcblx0dmFyIEJlZm9yZUlucHV0RXZl
bnRQbHVnaW4gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEyNik7XG5cdHZhciBDaGFuZ2VFdmVudFBs
dWdpbiA9IF9fd2VicGFja19yZXF1aXJlX18oMTI4KTtcblx0dmFyIERlZmF1bHRFdmVudFBsdWdp
bk9yZGVyID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMzApO1xuXHR2YXIgRW50ZXJMZWF2ZUV2ZW50
UGx1Z2luID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMzEpO1xuXHR2YXIgSFRNTERPTVByb3BlcnR5
Q29uZmlnID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMzMpO1xuXHR2YXIgUmVhY3RDb21wb25lbnRC
cm93c2VyRW52aXJvbm1lbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEzNSk7XG5cdHZhciBSZWFj
dERPTUNvbXBvbmVudCA9IF9fd2VicGFja19yZXF1aXJlX18oMTM4KTtcblx0dmFyIFJlYWN0RE9N
Q29tcG9uZW50VHJlZSA9IF9fd2VicGFja19yZXF1aXJlX18oNSk7XG5cdHZhciBSZWFjdERPTUVt
cHR5Q29tcG9uZW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNDApO1xuXHR2YXIgUmVhY3RET01U
cmVlVHJhdmVyc2FsID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNDgpO1xuXHR2YXIgUmVhY3RET01U
ZXh0Q29tcG9uZW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNDYpO1xuXHR2YXIgUmVhY3REZWZh
dWx0QmF0Y2hpbmdTdHJhdGVneSA9IF9fd2VicGFja19yZXF1aXJlX18oMTQ5KTtcblx0dmFyIFJl
YWN0RXZlbnRMaXN0ZW5lciA9IF9fd2VicGFja19yZXF1aXJlX18oMTUzKTtcblx0dmFyIFJlYWN0
SW5qZWN0aW9uID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNTQpO1xuXHR2YXIgUmVhY3RSZWNvbmNp
bGVUcmFuc2FjdGlvbiA9IF9fd2VicGFja19yZXF1aXJlX18oMTU5KTtcblx0dmFyIFNWR0RPTVBy
b3BlcnR5Q29uZmlnID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNjQpO1xuXHR2YXIgU2VsZWN0RXZl
bnRQbHVnaW4gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE2NSk7XG5cdHZhciBTaW1wbGVFdmVudFBs
dWdpbiA9IF9fd2VicGFja19yZXF1aXJlX18oMTY2KTtcblx0XG5cdHZhciBhbHJlYWR5SW5qZWN0
ZWQgPSBmYWxzZTtcblx0XG5cdGZ1bmN0aW9uIGluamVjdCgpIHtcblx0ICBpZiAoYWxyZWFkeUlu
amVjdGVkKSB7XG5cdCAgICAvLyBUT0RPOiBUaGlzIGlzIGN1cnJlbnRseSB0cnVlIGJlY2F1c2Ug
dGhlc2UgaW5qZWN0aW9ucyBhcmUgc2hhcmVkIGJldHdlZW5cblx0ICAgIC8vIHRoZSBjbGllbnQg
YW5kIHRoZSBzZXJ2ZXIgcGFja2FnZS4gVGhleSBzaG91bGQgYmUgYnVpbHQgaW5kZXBlbmRlbnRs
eVxuXHQgICAgLy8gYW5kIG5vdCBzaGFyZSBhbnkgaW5qZWN0aW9uIHN0YXRlLiBUaGVuIHRoaXMg
cHJvYmxlbSB3aWxsIGJlIHNvbHZlZC5cblx0ICAgIHJldHVybjtcblx0ICB9XG5cdCAgYWxyZWFk
eUluamVjdGVkID0gdHJ1ZTtcblx0XG5cdCAgUmVhY3RJbmplY3Rpb24uRXZlbnRFbWl0dGVyLmlu
amVjdFJlYWN0RXZlbnRMaXN0ZW5lcihSZWFjdEV2ZW50TGlzdGVuZXIpO1xuXHRcblx0ICAvKipc
blx0ICAgKiBJbmplY3QgbW9kdWxlcyBmb3IgcmVzb2x2aW5nIERPTSBoaWVyYXJjaHkgYW5kIHBs
dWdpbiBvcmRlcmluZy5cblx0ICAgKi9cblx0ICBSZWFjdEluamVjdGlvbi5FdmVudFBsdWdpbkh1
Yi5pbmplY3RFdmVudFBsdWdpbk9yZGVyKERlZmF1bHRFdmVudFBsdWdpbk9yZGVyKTtcblx0ICBS
ZWFjdEluamVjdGlvbi5FdmVudFBsdWdpblV0aWxzLmluamVjdENvbXBvbmVudFRyZWUoUmVhY3RE
T01Db21wb25lbnRUcmVlKTtcblx0ICBSZWFjdEluamVjdGlvbi5FdmVudFBsdWdpblV0aWxzLmlu
amVjdFRyZWVUcmF2ZXJzYWwoUmVhY3RET01UcmVlVHJhdmVyc2FsKTtcblx0XG5cdCAgLyoqXG5c
dCAgICogU29tZSBpbXBvcnRhbnQgZXZlbnQgcGx1Z2lucyBpbmNsdWRlZCBieSBkZWZhdWx0ICh3
aXRob3V0IGhhdmluZyB0byByZXF1aXJlXG5cdCAgICogdGhlbSkuXG5cdCAgICovXG5cdCAgUmVh
Y3RJbmplY3Rpb24uRXZlbnRQbHVnaW5IdWIuaW5qZWN0RXZlbnRQbHVnaW5zQnlOYW1lKHtcblx0
ICAgIFNpbXBsZUV2ZW50UGx1Z2luOiBTaW1wbGVFdmVudFBsdWdpbixcblx0ICAgIEVudGVyTGVh
dmVFdmVudFBsdWdpbjogRW50ZXJMZWF2ZUV2ZW50UGx1Z2luLFxuXHQgICAgQ2hhbmdlRXZlbnRQ
bHVnaW46IENoYW5nZUV2ZW50UGx1Z2luLFxuXHQgICAgU2VsZWN0RXZlbnRQbHVnaW46IFNlbGVj
dEV2ZW50UGx1Z2luLFxuXHQgICAgQmVmb3JlSW5wdXRFdmVudFBsdWdpbjogQmVmb3JlSW5wdXRF
dmVudFBsdWdpblxuXHQgIH0pO1xuXHRcblx0ICBSZWFjdEluamVjdGlvbi5Ib3N0Q29tcG9uZW50
LmluamVjdEdlbmVyaWNDb21wb25lbnRDbGFzcyhSZWFjdERPTUNvbXBvbmVudCk7XG5cdFxuXHQg
IFJlYWN0SW5qZWN0aW9uLkhvc3RDb21wb25lbnQuaW5qZWN0VGV4dENvbXBvbmVudENsYXNzKFJl
YWN0RE9NVGV4dENvbXBvbmVudCk7XG5cdFxuXHQgIFJlYWN0SW5qZWN0aW9uLkRPTVByb3BlcnR5
LmluamVjdERPTVByb3BlcnR5Q29uZmlnKEFSSUFET01Qcm9wZXJ0eUNvbmZpZyk7XG5cdCAgUmVh
Y3RJbmplY3Rpb24uRE9NUHJvcGVydHkuaW5qZWN0RE9NUHJvcGVydHlDb25maWcoSFRNTERPTVBy
b3BlcnR5Q29uZmlnKTtcblx0ICBSZWFjdEluamVjdGlvbi5ET01Qcm9wZXJ0eS5pbmplY3RET01Q
cm9wZXJ0eUNvbmZpZyhTVkdET01Qcm9wZXJ0eUNvbmZpZyk7XG5cdFxuXHQgIFJlYWN0SW5qZWN0
aW9uLkVtcHR5Q29tcG9uZW50LmluamVjdEVtcHR5Q29tcG9uZW50RmFjdG9yeShmdW5jdGlvbiAo
aW5zdGFudGlhdGUpIHtcblx0ICAgIHJldHVybiBuZXcgUmVhY3RET01FbXB0eUNvbXBvbmVudChp
bnN0YW50aWF0ZSk7XG5cdCAgfSk7XG5cdFxuXHQgIFJlYWN0SW5qZWN0aW9uLlVwZGF0ZXMuaW5q
ZWN0UmVjb25jaWxlVHJhbnNhY3Rpb24oUmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbik7XG5cdCAg
UmVhY3RJbmplY3Rpb24uVXBkYXRlcy5pbmplY3RCYXRjaGluZ1N0cmF0ZWd5KFJlYWN0RGVmYXVs
dEJhdGNoaW5nU3RyYXRlZ3kpO1xuXHRcblx0ICBSZWFjdEluamVjdGlvbi5Db21wb25lbnQuaW5q
ZWN0RW52aXJvbm1lbnQoUmVhY3RDb21wb25lbnRCcm93c2VyRW52aXJvbm1lbnQpO1xuXHR9XG5c
dFxuXHRtb2R1bGUuZXhwb3J0cyA9IHtcblx0ICBpbmplY3Q6IGluamVjdFxuXHR9O1xuXG4vKioq
LyB9LFxuLyogMTUxICovXG45MSxcbi8qIDE1MiAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBl
eHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAy
MDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5c
dCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHls
ZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGly
ZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2Yg
cGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2Ft
ZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqL1xuXHRcblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0dmFy
IEV2ZW50UGx1Z2luSHViID0gX193ZWJwYWNrX3JlcXVpcmVfXygxOSk7XG5cdFxuXHRmdW5jdGlv
biBydW5FdmVudFF1ZXVlSW5CYXRjaChldmVudHMpIHtcblx0ICBFdmVudFBsdWdpbkh1Yi5lbnF1
ZXVlRXZlbnRzKGV2ZW50cyk7XG5cdCAgRXZlbnRQbHVnaW5IdWIucHJvY2Vzc0V2ZW50UXVldWUo
ZmFsc2UpO1xuXHR9XG5cdFxuXHR2YXIgUmVhY3RFdmVudEVtaXR0ZXJNaXhpbiA9IHtcblx0ICAv
Kipcblx0ICAgKiBTdHJlYW1zIGEgZmlyZWQgdG9wLWxldmVsIGV2ZW50IHRvIGBFdmVudFBsdWdp
bkh1YmAgd2hlcmUgcGx1Z2lucyBoYXZlIHRoZVxuXHQgICAqIG9wcG9ydHVuaXR5IHRvIGNyZWF0
ZSBgUmVhY3RFdmVudGBzIHRvIGJlIGRpc3BhdGNoZWQuXG5cdCAgICovXG5cdCAgaGFuZGxlVG9w
TGV2ZWw6IGZ1bmN0aW9uICh0b3BMZXZlbFR5cGUsIHRhcmdldEluc3QsIG5hdGl2ZUV2ZW50LCBu
YXRpdmVFdmVudFRhcmdldCkge1xuXHQgICAgdmFyIGV2ZW50cyA9IEV2ZW50UGx1Z2luSHViLmV4
dHJhY3RFdmVudHModG9wTGV2ZWxUeXBlLCB0YXJnZXRJbnN0LCBuYXRpdmVFdmVudCwgbmF0aXZl
RXZlbnRUYXJnZXQpO1xuXHQgICAgcnVuRXZlbnRRdWV1ZUluQmF0Y2goZXZlbnRzKTtcblx0ICB9
XG5cdH07XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IFJlYWN0RXZlbnRFbWl0dGVyTWl4aW47XG5c
bi8qKiovIH0sXG4vKiAxNTMgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193
ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50
LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBU
aGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBm
b3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0
aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdo
dHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5
LlxuXHQgKlxuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdHZhciBfYXNzaWduID0g
X193ZWJwYWNrX3JlcXVpcmVfXyg0KTtcblx0XG5cdHZhciBFdmVudExpc3RlbmVyID0gX193ZWJw
YWNrX3JlcXVpcmVfXyg1MSk7XG5cdHZhciBFeGVjdXRpb25FbnZpcm9ubWVudCA9IF9fd2VicGFj
a19yZXF1aXJlX18oNik7XG5cdHZhciBQb29sZWRDbGFzcyA9IF9fd2VicGFja19yZXF1aXJlX18o
MTMpO1xuXHR2YXIgUmVhY3RET01Db21wb25lbnRUcmVlID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1
KTtcblx0dmFyIFJlYWN0VXBkYXRlcyA9IF9fd2VicGFja19yZXF1aXJlX18oOSk7XG5cdFxuXHR2
YXIgZ2V0RXZlbnRUYXJnZXQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQ2KTtcblx0dmFyIGdldFVu
Ym91bmRlZFNjcm9sbFBvc2l0aW9uID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMDQpO1xuXHRcblx0
LyoqXG5cdCAqIEZpbmQgdGhlIGRlZXBlc3QgUmVhY3QgY29tcG9uZW50IGNvbXBsZXRlbHkgY29u
dGFpbmluZyB0aGUgcm9vdCBvZiB0aGVcblx0ICogcGFzc2VkLWluIGluc3RhbmNlIChmb3IgdXNl
IHdoZW4gZW50aXJlIFJlYWN0IHRyZWVzIGFyZSBuZXN0ZWQgd2l0aGluIGVhY2hcblx0ICogb3Ro
ZXIpLiBJZiBSZWFjdCB0cmVlcyBhcmUgbm90IG5lc3RlZCwgcmV0dXJucyBudWxsLlxuXHQgKi9c
blx0ZnVuY3Rpb24gZmluZFBhcmVudChpbnN0KSB7XG5cdCAgLy8gVE9ETzogSXQgbWF5IGJlIGEg
Z29vZCBpZGVhIHRvIGNhY2hlIHRoaXMgdG8gcHJldmVudCB1bm5lY2Vzc2FyeSBET01cblx0ICAv
LyB0cmF2ZXJzYWwsIGJ1dCBjYWNoaW5nIGlzIGRpZmZpY3VsdCB0byBkbyBjb3JyZWN0bHkgd2l0
aG91dCB1c2luZyBhXG5cdCAgLy8gbXV0YXRpb24gb2JzZXJ2ZXIgdG8gbGlzdGVuIGZvciBhbGwg
RE9NIGNoYW5nZXMuXG5cdCAgd2hpbGUgKGluc3QuX2hvc3RQYXJlbnQpIHtcblx0ICAgIGluc3Qg
PSBpbnN0Ll9ob3N0UGFyZW50O1xuXHQgIH1cblx0ICB2YXIgcm9vdE5vZGUgPSBSZWFjdERPTUNv
bXBvbmVudFRyZWUuZ2V0Tm9kZUZyb21JbnN0YW5jZShpbnN0KTtcblx0ICB2YXIgY29udGFpbmVy
ID0gcm9vdE5vZGUucGFyZW50Tm9kZTtcblx0ICByZXR1cm4gUmVhY3RET01Db21wb25lbnRUcmVl
LmdldENsb3Nlc3RJbnN0YW5jZUZyb21Ob2RlKGNvbnRhaW5lcik7XG5cdH1cblx0XG5cdC8vIFVz
ZWQgdG8gc3RvcmUgYW5jZXN0b3IgaGllcmFyY2h5IGluIHRvcCBsZXZlbCBjYWxsYmFja1xuXHRm
dW5jdGlvbiBUb3BMZXZlbENhbGxiYWNrQm9va0tlZXBpbmcodG9wTGV2ZWxUeXBlLCBuYXRpdmVF
dmVudCkge1xuXHQgIHRoaXMudG9wTGV2ZWxUeXBlID0gdG9wTGV2ZWxUeXBlO1xuXHQgIHRoaXMu
bmF0aXZlRXZlbnQgPSBuYXRpdmVFdmVudDtcblx0ICB0aGlzLmFuY2VzdG9ycyA9IFtdO1xuXHR9
XG5cdF9hc3NpZ24oVG9wTGV2ZWxDYWxsYmFja0Jvb2tLZWVwaW5nLnByb3RvdHlwZSwge1xuXHQg
IGRlc3RydWN0b3I6IGZ1bmN0aW9uICgpIHtcblx0ICAgIHRoaXMudG9wTGV2ZWxUeXBlID0gbnVs
bDtcblx0ICAgIHRoaXMubmF0aXZlRXZlbnQgPSBudWxsO1xuXHQgICAgdGhpcy5hbmNlc3RvcnMu
bGVuZ3RoID0gMDtcblx0ICB9XG5cdH0pO1xuXHRQb29sZWRDbGFzcy5hZGRQb29saW5nVG8oVG9w
TGV2ZWxDYWxsYmFja0Jvb2tLZWVwaW5nLCBQb29sZWRDbGFzcy50d29Bcmd1bWVudFBvb2xlcik7
XG5cdFxuXHRmdW5jdGlvbiBoYW5kbGVUb3BMZXZlbEltcGwoYm9va0tlZXBpbmcpIHtcblx0ICB2
YXIgbmF0aXZlRXZlbnRUYXJnZXQgPSBnZXRFdmVudFRhcmdldChib29rS2VlcGluZy5uYXRpdmVF
dmVudCk7XG5cdCAgdmFyIHRhcmdldEluc3QgPSBSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0Q2xv
c2VzdEluc3RhbmNlRnJvbU5vZGUobmF0aXZlRXZlbnRUYXJnZXQpO1xuXHRcblx0ICAvLyBMb29w
IHRocm91Z2ggdGhlIGhpZXJhcmNoeSwgaW4gY2FzZSB0aGVyZSdzIGFueSBuZXN0ZWQgY29tcG9u
ZW50cy5cblx0ICAvLyBJdCdzIGltcG9ydGFudCB0aGF0IHdlIGJ1aWxkIHRoZSBhcnJheSBvZiBh
bmNlc3RvcnMgYmVmb3JlIGNhbGxpbmcgYW55XG5cdCAgLy8gZXZlbnQgaGFuZGxlcnMsIGJlY2F1
c2UgZXZlbnQgaGFuZGxlcnMgY2FuIG1vZGlmeSB0aGUgRE9NLCBsZWFkaW5nIHRvXG5cdCAgLy8g
aW5jb25zaXN0ZW5jaWVzIHdpdGggUmVhY3RNb3VudCdzIG5vZGUgY2FjaGUuIFNlZSAjMTEwNS5c
blx0ICB2YXIgYW5jZXN0b3IgPSB0YXJnZXRJbnN0O1xuXHQgIGRvIHtcblx0ICAgIGJvb2tLZWVw
aW5nLmFuY2VzdG9ycy5wdXNoKGFuY2VzdG9yKTtcblx0ICAgIGFuY2VzdG9yID0gYW5jZXN0b3Ig
JiYgZmluZFBhcmVudChhbmNlc3Rvcik7XG5cdCAgfSB3aGlsZSAoYW5jZXN0b3IpO1xuXHRcblx0
ICBmb3IgKHZhciBpID0gMDsgaSA8IGJvb2tLZWVwaW5nLmFuY2VzdG9ycy5sZW5ndGg7IGkrKykg
e1xuXHQgICAgdGFyZ2V0SW5zdCA9IGJvb2tLZWVwaW5nLmFuY2VzdG9yc1tpXTtcblx0ICAgIFJl
YWN0RXZlbnRMaXN0ZW5lci5faGFuZGxlVG9wTGV2ZWwoYm9va0tlZXBpbmcudG9wTGV2ZWxUeXBl
LCB0YXJnZXRJbnN0LCBib29rS2VlcGluZy5uYXRpdmVFdmVudCwgZ2V0RXZlbnRUYXJnZXQoYm9v
a0tlZXBpbmcubmF0aXZlRXZlbnQpKTtcblx0ICB9XG5cdH1cblx0XG5cdGZ1bmN0aW9uIHNjcm9s
bFZhbHVlTW9uaXRvcihjYikge1xuXHQgIHZhciBzY3JvbGxQb3NpdGlvbiA9IGdldFVuYm91bmRl
ZFNjcm9sbFBvc2l0aW9uKHdpbmRvdyk7XG5cdCAgY2Ioc2Nyb2xsUG9zaXRpb24pO1xuXHR9XG5c
dFxuXHR2YXIgUmVhY3RFdmVudExpc3RlbmVyID0ge1xuXHQgIF9lbmFibGVkOiB0cnVlLFxuXHQg
IF9oYW5kbGVUb3BMZXZlbDogbnVsbCxcblx0XG5cdCAgV0lORE9XX0hBTkRMRTogRXhlY3V0aW9u
RW52aXJvbm1lbnQuY2FuVXNlRE9NID8gd2luZG93IDogbnVsbCxcblx0XG5cdCAgc2V0SGFuZGxl
VG9wTGV2ZWw6IGZ1bmN0aW9uIChoYW5kbGVUb3BMZXZlbCkge1xuXHQgICAgUmVhY3RFdmVudExp
c3RlbmVyLl9oYW5kbGVUb3BMZXZlbCA9IGhhbmRsZVRvcExldmVsO1xuXHQgIH0sXG5cdFxuXHQg
IHNldEVuYWJsZWQ6IGZ1bmN0aW9uIChlbmFibGVkKSB7XG5cdCAgICBSZWFjdEV2ZW50TGlzdGVu
ZXIuX2VuYWJsZWQgPSAhIWVuYWJsZWQ7XG5cdCAgfSxcblx0XG5cdCAgaXNFbmFibGVkOiBmdW5j
dGlvbiAoKSB7XG5cdCAgICByZXR1cm4gUmVhY3RFdmVudExpc3RlbmVyLl9lbmFibGVkO1xuXHQg
IH0sXG5cdFxuXHQgIC8qKlxuXHQgICAqIFRyYXBzIHRvcC1sZXZlbCBldmVudHMgYnkgdXNpbmcg
ZXZlbnQgYnViYmxpbmcuXG5cdCAgICpcblx0ICAgKiBAcGFyYW0ge3N0cmluZ30gdG9wTGV2ZWxU
eXBlIFJlY29yZCBmcm9tIGBFdmVudENvbnN0YW50c2AuXG5cdCAgICogQHBhcmFtIHtzdHJpbmd9
IGhhbmRsZXJCYXNlTmFtZSBFdmVudCBuYW1lIChlLmcuIFwiY2xpY2tcIikuXG5cdCAgICogQHBh
cmFtIHtvYmplY3R9IGVsZW1lbnQgRWxlbWVudCBvbiB3aGljaCB0byBhdHRhY2ggbGlzdGVuZXIu
XG5cdCAgICogQHJldHVybiB7P29iamVjdH0gQW4gb2JqZWN0IHdpdGggYSByZW1vdmUgZnVuY3Rp
b24gd2hpY2ggd2lsbCBmb3JjZWZ1bGx5XG5cdCAgICogICAgICAgICAgICAgICAgICByZW1vdmUg
dGhlIGxpc3RlbmVyLlxuXHQgICAqIEBpbnRlcm5hbFxuXHQgICAqL1xuXHQgIHRyYXBCdWJibGVk
RXZlbnQ6IGZ1bmN0aW9uICh0b3BMZXZlbFR5cGUsIGhhbmRsZXJCYXNlTmFtZSwgZWxlbWVudCkg
e1xuXHQgICAgaWYgKCFlbGVtZW50KSB7XG5cdCAgICAgIHJldHVybiBudWxsO1xuXHQgICAgfVxu
XHQgICAgcmV0dXJuIEV2ZW50TGlzdGVuZXIubGlzdGVuKGVsZW1lbnQsIGhhbmRsZXJCYXNlTmFt
ZSwgUmVhY3RFdmVudExpc3RlbmVyLmRpc3BhdGNoRXZlbnQuYmluZChudWxsLCB0b3BMZXZlbFR5
cGUpKTtcblx0ICB9LFxuXHRcblx0ICAvKipcblx0ICAgKiBUcmFwcyBhIHRvcC1sZXZlbCBldmVu
dCBieSB1c2luZyBldmVudCBjYXB0dXJpbmcuXG5cdCAgICpcblx0ICAgKiBAcGFyYW0ge3N0cmlu
Z30gdG9wTGV2ZWxUeXBlIFJlY29yZCBmcm9tIGBFdmVudENvbnN0YW50c2AuXG5cdCAgICogQHBh
cmFtIHtzdHJpbmd9IGhhbmRsZXJCYXNlTmFtZSBFdmVudCBuYW1lIChlLmcuIFwiY2xpY2tcIiku
XG5cdCAgICogQHBhcmFtIHtvYmplY3R9IGVsZW1lbnQgRWxlbWVudCBvbiB3aGljaCB0byBhdHRh
Y2ggbGlzdGVuZXIuXG5cdCAgICogQHJldHVybiB7P29iamVjdH0gQW4gb2JqZWN0IHdpdGggYSBy
ZW1vdmUgZnVuY3Rpb24gd2hpY2ggd2lsbCBmb3JjZWZ1bGx5XG5cdCAgICogICAgICAgICAgICAg
ICAgICByZW1vdmUgdGhlIGxpc3RlbmVyLlxuXHQgICAqIEBpbnRlcm5hbFxuXHQgICAqL1xuXHQg
IHRyYXBDYXB0dXJlZEV2ZW50OiBmdW5jdGlvbiAodG9wTGV2ZWxUeXBlLCBoYW5kbGVyQmFzZU5h
bWUsIGVsZW1lbnQpIHtcblx0ICAgIGlmICghZWxlbWVudCkge1xuXHQgICAgICByZXR1cm4gbnVs
bDtcblx0ICAgIH1cblx0ICAgIHJldHVybiBFdmVudExpc3RlbmVyLmNhcHR1cmUoZWxlbWVudCwg
aGFuZGxlckJhc2VOYW1lLCBSZWFjdEV2ZW50TGlzdGVuZXIuZGlzcGF0Y2hFdmVudC5iaW5kKG51
bGwsIHRvcExldmVsVHlwZSkpO1xuXHQgIH0sXG5cdFxuXHQgIG1vbml0b3JTY3JvbGxWYWx1ZTog
ZnVuY3Rpb24gKHJlZnJlc2gpIHtcblx0ICAgIHZhciBjYWxsYmFjayA9IHNjcm9sbFZhbHVlTW9u
aXRvci5iaW5kKG51bGwsIHJlZnJlc2gpO1xuXHQgICAgRXZlbnRMaXN0ZW5lci5saXN0ZW4od2lu
ZG93LCAnc2Nyb2xsJywgY2FsbGJhY2spO1xuXHQgIH0sXG5cdFxuXHQgIGRpc3BhdGNoRXZlbnQ6
IGZ1bmN0aW9uICh0b3BMZXZlbFR5cGUsIG5hdGl2ZUV2ZW50KSB7XG5cdCAgICBpZiAoIVJlYWN0
RXZlbnRMaXN0ZW5lci5fZW5hYmxlZCkge1xuXHQgICAgICByZXR1cm47XG5cdCAgICB9XG5cdFxu
XHQgICAgdmFyIGJvb2tLZWVwaW5nID0gVG9wTGV2ZWxDYWxsYmFja0Jvb2tLZWVwaW5nLmdldFBv
b2xlZCh0b3BMZXZlbFR5cGUsIG5hdGl2ZUV2ZW50KTtcblx0ICAgIHRyeSB7XG5cdCAgICAgIC8v
IEV2ZW50IHF1ZXVlIGJlaW5nIHByb2Nlc3NlZCBpbiB0aGUgc2FtZSBjeWNsZSBhbGxvd3Ncblx0
ICAgICAgLy8gYHByZXZlbnREZWZhdWx0YC5cblx0ICAgICAgUmVhY3RVcGRhdGVzLmJhdGNoZWRV
cGRhdGVzKGhhbmRsZVRvcExldmVsSW1wbCwgYm9va0tlZXBpbmcpO1xuXHQgICAgfSBmaW5hbGx5
IHtcblx0ICAgICAgVG9wTGV2ZWxDYWxsYmFja0Jvb2tLZWVwaW5nLnJlbGVhc2UoYm9va0tlZXBp
bmcpO1xuXHQgICAgfVxuXHQgIH1cblx0fTtcblx0XG5cdG1vZHVsZS5leHBvcnRzID0gUmVhY3RF
dmVudExpc3RlbmVyO1xuXG4vKioqLyB9LFxuLyogMTU0ICovXG4vKioqLyBmdW5jdGlvbihtb2R1
bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvKipcblx0ICogQ29weXJp
Z2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZl
ZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNE
LXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9v
dCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQg
KiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRo
ZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpcblx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxu
XHR2YXIgRE9NUHJvcGVydHkgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE1KTtcblx0dmFyIEV2ZW50
UGx1Z2luSHViID0gX193ZWJwYWNrX3JlcXVpcmVfXygxOSk7XG5cdHZhciBFdmVudFBsdWdpblV0
aWxzID0gX193ZWJwYWNrX3JlcXVpcmVfXygzNyk7XG5cdHZhciBSZWFjdENvbXBvbmVudEVudmly
b25tZW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0MCk7XG5cdHZhciBSZWFjdEVtcHR5Q29tcG9u
ZW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg2Myk7XG5cdHZhciBSZWFjdEJyb3dzZXJFdmVudEVt
aXR0ZXIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDI1KTtcblx0dmFyIFJlYWN0SG9zdENvbXBvbmVu
dCA9IF9fd2VicGFja19yZXF1aXJlX18oNjUpO1xuXHR2YXIgUmVhY3RVcGRhdGVzID0gX193ZWJw
YWNrX3JlcXVpcmVfXyg5KTtcblx0XG5cdHZhciBSZWFjdEluamVjdGlvbiA9IHtcblx0ICBDb21w
b25lbnQ6IFJlYWN0Q29tcG9uZW50RW52aXJvbm1lbnQuaW5qZWN0aW9uLFxuXHQgIERPTVByb3Bl
cnR5OiBET01Qcm9wZXJ0eS5pbmplY3Rpb24sXG5cdCAgRW1wdHlDb21wb25lbnQ6IFJlYWN0RW1w
dHlDb21wb25lbnQuaW5qZWN0aW9uLFxuXHQgIEV2ZW50UGx1Z2luSHViOiBFdmVudFBsdWdpbkh1
Yi5pbmplY3Rpb24sXG5cdCAgRXZlbnRQbHVnaW5VdGlsczogRXZlbnRQbHVnaW5VdGlscy5pbmpl
Y3Rpb24sXG5cdCAgRXZlbnRFbWl0dGVyOiBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIuaW5qZWN0
aW9uLFxuXHQgIEhvc3RDb21wb25lbnQ6IFJlYWN0SG9zdENvbXBvbmVudC5pbmplY3Rpb24sXG5c
dCAgVXBkYXRlczogUmVhY3RVcGRhdGVzLmluamVjdGlvblxuXHR9O1xuXHRcblx0bW9kdWxlLmV4
cG9ydHMgPSBSZWFjdEluamVjdGlvbjtcblxuLyoqKi8gfSxcbi8qIDE1NSAqL1xuLyoqKi8gZnVu
Y3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0LyoqXG5c
dCAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5k
ZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUg
aW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwg
Z3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMg
ZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqL1xuXHRcblx0J3VzZSBzdHJp
Y3QnO1xuXHRcblx0dmFyIGFkbGVyMzIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE3Nyk7XG5cdFxu
XHR2YXIgVEFHX0VORCA9IC9cXC8/Pi87XG5cdHZhciBDT01NRU5UX1NUQVJUID0gL148XFwhXFwt
XFwtLztcblx0XG5cdHZhciBSZWFjdE1hcmt1cENoZWNrc3VtID0ge1xuXHQgIENIRUNLU1VNX0FU
VFJfTkFNRTogJ2RhdGEtcmVhY3QtY2hlY2tzdW0nLFxuXHRcblx0ICAvKipcblx0ICAgKiBAcGFy
YW0ge3N0cmluZ30gbWFya3VwIE1hcmt1cCBzdHJpbmdcblx0ICAgKiBAcmV0dXJuIHtzdHJpbmd9
IE1hcmt1cCBzdHJpbmcgd2l0aCBjaGVja3N1bSBhdHRyaWJ1dGUgYXR0YWNoZWRcblx0ICAgKi9c
blx0ICBhZGRDaGVja3N1bVRvTWFya3VwOiBmdW5jdGlvbiAobWFya3VwKSB7XG5cdCAgICB2YXIg
Y2hlY2tzdW0gPSBhZGxlcjMyKG1hcmt1cCk7XG5cdFxuXHQgICAgLy8gQWRkIGNoZWNrc3VtICho
YW5kbGUgYm90aCBwYXJlbnQgdGFncywgY29tbWVudHMgYW5kIHNlbGYtY2xvc2luZyB0YWdzKVxu
XHQgICAgaWYgKENPTU1FTlRfU1RBUlQudGVzdChtYXJrdXApKSB7XG5cdCAgICAgIHJldHVybiBt
YXJrdXA7XG5cdCAgICB9IGVsc2Uge1xuXHQgICAgICByZXR1cm4gbWFya3VwLnJlcGxhY2UoVEFH
X0VORCwgJyAnICsgUmVhY3RNYXJrdXBDaGVja3N1bS5DSEVDS1NVTV9BVFRSX05BTUUgKyAnPVwi
JyArIGNoZWNrc3VtICsgJ1wiJCYnKTtcblx0ICAgIH1cblx0ICB9LFxuXHRcblx0ICAvKipcblx0
ICAgKiBAcGFyYW0ge3N0cmluZ30gbWFya3VwIHRvIHVzZVxuXHQgICAqIEBwYXJhbSB7RE9NRWxl
bWVudH0gZWxlbWVudCByb290IFJlYWN0IGVsZW1lbnRcblx0ICAgKiBAcmV0dXJucyB7Ym9vbGVh
bn0gd2hldGhlciBvciBub3QgdGhlIG1hcmt1cCBpcyB0aGUgc2FtZVxuXHQgICAqL1xuXHQgIGNh
blJldXNlTWFya3VwOiBmdW5jdGlvbiAobWFya3VwLCBlbGVtZW50KSB7XG5cdCAgICB2YXIgZXhp
c3RpbmdDaGVja3N1bSA9IGVsZW1lbnQuZ2V0QXR0cmlidXRlKFJlYWN0TWFya3VwQ2hlY2tzdW0u
Q0hFQ0tTVU1fQVRUUl9OQU1FKTtcblx0ICAgIGV4aXN0aW5nQ2hlY2tzdW0gPSBleGlzdGluZ0No
ZWNrc3VtICYmIHBhcnNlSW50KGV4aXN0aW5nQ2hlY2tzdW0sIDEwKTtcblx0ICAgIHZhciBtYXJr
dXBDaGVja3N1bSA9IGFkbGVyMzIobWFya3VwKTtcblx0ICAgIHJldHVybiBtYXJrdXBDaGVja3N1
bSA9PT0gZXhpc3RpbmdDaGVja3N1bTtcblx0ICB9XG5cdH07XG5cdFxuXHRtb2R1bGUuZXhwb3J0
cyA9IFJlYWN0TWFya3VwQ2hlY2tzdW07XG5cbi8qKiovIH0sXG4vKiAxNTYgKi9cbi8qKiovIGZ1
bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8qKlxu
XHQgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmln
aHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVu
ZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxl
IGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFs
IGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRT
IGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKi9cblx0XG5cdCd1c2Ugc3Ry
aWN0Jztcblx0XG5cdHZhciBfcHJvZEludmFyaWFudCA9IF9fd2VicGFja19yZXF1aXJlX18oMyk7
XG5cdFxuXHR2YXIgUmVhY3RDb21wb25lbnRFbnZpcm9ubWVudCA9IF9fd2VicGFja19yZXF1aXJl
X18oNDApO1xuXHR2YXIgUmVhY3RJbnN0YW5jZU1hcCA9IF9fd2VicGFja19yZXF1aXJlX18oMjEp
O1xuXHR2YXIgUmVhY3RJbnN0cnVtZW50YXRpb24gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDgpO1xu
XHRcblx0dmFyIFJlYWN0Q3VycmVudE93bmVyID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMSk7XG5c
dHZhciBSZWFjdFJlY29uY2lsZXIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE2KTtcblx0dmFyIFJl
YWN0Q2hpbGRSZWNvbmNpbGVyID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMzQpO1xuXHRcblx0dmFy
IGVtcHR5RnVuY3Rpb24gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDcpO1xuXHR2YXIgZmxhdHRlbkNo
aWxkcmVuID0gX193ZWJwYWNrX3JlcXVpcmVfXygxODApO1xuXHR2YXIgaW52YXJpYW50ID0gX193
ZWJwYWNrX3JlcXVpcmVfXygxKTtcblx0XG5cdC8qKlxuXHQgKiBNYWtlIGFuIHVwZGF0ZSBmb3Ig
bWFya3VwIHRvIGJlIHJlbmRlcmVkIGFuZCBpbnNlcnRlZCBhdCBhIHN1cHBsaWVkIGluZGV4Llxu
XHQgKlxuXHQgKiBAcGFyYW0ge3N0cmluZ30gbWFya3VwIE1hcmt1cCB0aGF0IHJlbmRlcnMgaW50
byBhbiBlbGVtZW50LlxuXHQgKiBAcGFyYW0ge251bWJlcn0gdG9JbmRleCBEZXN0aW5hdGlvbiBp
bmRleC5cblx0ICogQHByaXZhdGVcblx0ICovXG5cdGZ1bmN0aW9uIG1ha2VJbnNlcnRNYXJrdXAo
bWFya3VwLCBhZnRlck5vZGUsIHRvSW5kZXgpIHtcblx0ICAvLyBOT1RFOiBOdWxsIHZhbHVlcyBy
ZWR1Y2UgaGlkZGVuIGNsYXNzZXMuXG5cdCAgcmV0dXJuIHtcblx0ICAgIHR5cGU6ICdJTlNFUlRf
TUFSS1VQJyxcblx0ICAgIGNvbnRlbnQ6IG1hcmt1cCxcblx0ICAgIGZyb21JbmRleDogbnVsbCxc
blx0ICAgIGZyb21Ob2RlOiBudWxsLFxuXHQgICAgdG9JbmRleDogdG9JbmRleCxcblx0ICAgIGFm
dGVyTm9kZTogYWZ0ZXJOb2RlXG5cdCAgfTtcblx0fVxuXHRcblx0LyoqXG5cdCAqIE1ha2UgYW4g
dXBkYXRlIGZvciBtb3ZpbmcgYW4gZXhpc3RpbmcgZWxlbWVudCB0byBhbm90aGVyIGluZGV4Llxu
XHQgKlxuXHQgKiBAcGFyYW0ge251bWJlcn0gZnJvbUluZGV4IFNvdXJjZSBpbmRleCBvZiB0aGUg
ZXhpc3RpbmcgZWxlbWVudC5cblx0ICogQHBhcmFtIHtudW1iZXJ9IHRvSW5kZXggRGVzdGluYXRp
b24gaW5kZXggb2YgdGhlIGVsZW1lbnQuXG5cdCAqIEBwcml2YXRlXG5cdCAqL1xuXHRmdW5jdGlv
biBtYWtlTW92ZShjaGlsZCwgYWZ0ZXJOb2RlLCB0b0luZGV4KSB7XG5cdCAgLy8gTk9URTogTnVs
bCB2YWx1ZXMgcmVkdWNlIGhpZGRlbiBjbGFzc2VzLlxuXHQgIHJldHVybiB7XG5cdCAgICB0eXBl
OiAnTU9WRV9FWElTVElORycsXG5cdCAgICBjb250ZW50OiBudWxsLFxuXHQgICAgZnJvbUluZGV4
OiBjaGlsZC5fbW91bnRJbmRleCxcblx0ICAgIGZyb21Ob2RlOiBSZWFjdFJlY29uY2lsZXIuZ2V0
SG9zdE5vZGUoY2hpbGQpLFxuXHQgICAgdG9JbmRleDogdG9JbmRleCxcblx0ICAgIGFmdGVyTm9k
ZTogYWZ0ZXJOb2RlXG5cdCAgfTtcblx0fVxuXHRcblx0LyoqXG5cdCAqIE1ha2UgYW4gdXBkYXRl
IGZvciByZW1vdmluZyBhbiBlbGVtZW50IGF0IGFuIGluZGV4LlxuXHQgKlxuXHQgKiBAcGFyYW0g
e251bWJlcn0gZnJvbUluZGV4IEluZGV4IG9mIHRoZSBlbGVtZW50IHRvIHJlbW92ZS5cblx0ICog
QHByaXZhdGVcblx0ICovXG5cdGZ1bmN0aW9uIG1ha2VSZW1vdmUoY2hpbGQsIG5vZGUpIHtcblx0
ICAvLyBOT1RFOiBOdWxsIHZhbHVlcyByZWR1Y2UgaGlkZGVuIGNsYXNzZXMuXG5cdCAgcmV0dXJu
IHtcblx0ICAgIHR5cGU6ICdSRU1PVkVfTk9ERScsXG5cdCAgICBjb250ZW50OiBudWxsLFxuXHQg
ICAgZnJvbUluZGV4OiBjaGlsZC5fbW91bnRJbmRleCxcblx0ICAgIGZyb21Ob2RlOiBub2RlLFxu
XHQgICAgdG9JbmRleDogbnVsbCxcblx0ICAgIGFmdGVyTm9kZTogbnVsbFxuXHQgIH07XG5cdH1c
blx0XG5cdC8qKlxuXHQgKiBNYWtlIGFuIHVwZGF0ZSBmb3Igc2V0dGluZyB0aGUgbWFya3VwIG9m
IGEgbm9kZS5cblx0ICpcblx0ICogQHBhcmFtIHtzdHJpbmd9IG1hcmt1cCBNYXJrdXAgdGhhdCBy
ZW5kZXJzIGludG8gYW4gZWxlbWVudC5cblx0ICogQHByaXZhdGVcblx0ICovXG5cdGZ1bmN0aW9u
IG1ha2VTZXRNYXJrdXAobWFya3VwKSB7XG5cdCAgLy8gTk9URTogTnVsbCB2YWx1ZXMgcmVkdWNl
IGhpZGRlbiBjbGFzc2VzLlxuXHQgIHJldHVybiB7XG5cdCAgICB0eXBlOiAnU0VUX01BUktVUCcs
XG5cdCAgICBjb250ZW50OiBtYXJrdXAsXG5cdCAgICBmcm9tSW5kZXg6IG51bGwsXG5cdCAgICBm
cm9tTm9kZTogbnVsbCxcblx0ICAgIHRvSW5kZXg6IG51bGwsXG5cdCAgICBhZnRlck5vZGU6IG51
bGxcblx0ICB9O1xuXHR9XG5cdFxuXHQvKipcblx0ICogTWFrZSBhbiB1cGRhdGUgZm9yIHNldHRp
bmcgdGhlIHRleHQgY29udGVudC5cblx0ICpcblx0ICogQHBhcmFtIHtzdHJpbmd9IHRleHRDb250
ZW50IFRleHQgY29udGVudCB0byBzZXQuXG5cdCAqIEBwcml2YXRlXG5cdCAqL1xuXHRmdW5jdGlv
biBtYWtlVGV4dENvbnRlbnQodGV4dENvbnRlbnQpIHtcblx0ICAvLyBOT1RFOiBOdWxsIHZhbHVl
cyByZWR1Y2UgaGlkZGVuIGNsYXNzZXMuXG5cdCAgcmV0dXJuIHtcblx0ICAgIHR5cGU6ICdURVhU
X0NPTlRFTlQnLFxuXHQgICAgY29udGVudDogdGV4dENvbnRlbnQsXG5cdCAgICBmcm9tSW5kZXg6
IG51bGwsXG5cdCAgICBmcm9tTm9kZTogbnVsbCxcblx0ICAgIHRvSW5kZXg6IG51bGwsXG5cdCAg
ICBhZnRlck5vZGU6IG51bGxcblx0ICB9O1xuXHR9XG5cdFxuXHQvKipcblx0ICogUHVzaCBhbiB1
cGRhdGUsIGlmIGFueSwgb250byB0aGUgcXVldWUuIENyZWF0ZXMgYSBuZXcgcXVldWUgaWYgbm9u
ZSBpc1xuXHQgKiBwYXNzZWQgYW5kIGFsd2F5cyByZXR1cm5zIHRoZSBxdWV1ZS4gTXV0YXRpdmUu
XG5cdCAqL1xuXHRmdW5jdGlvbiBlbnF1ZXVlKHF1ZXVlLCB1cGRhdGUpIHtcblx0ICBpZiAodXBk
YXRlKSB7XG5cdCAgICBxdWV1ZSA9IHF1ZXVlIHx8IFtdO1xuXHQgICAgcXVldWUucHVzaCh1cGRh
dGUpO1xuXHQgIH1cblx0ICByZXR1cm4gcXVldWU7XG5cdH1cblx0XG5cdC8qKlxuXHQgKiBQcm9j
ZXNzZXMgYW55IGVucXVldWVkIHVwZGF0ZXMuXG5cdCAqXG5cdCAqIEBwcml2YXRlXG5cdCAqL1xu
XHRmdW5jdGlvbiBwcm9jZXNzUXVldWUoaW5zdCwgdXBkYXRlUXVldWUpIHtcblx0ICBSZWFjdENv
bXBvbmVudEVudmlyb25tZW50LnByb2Nlc3NDaGlsZHJlblVwZGF0ZXMoaW5zdCwgdXBkYXRlUXVl
dWUpO1xuXHR9XG5cdFxuXHR2YXIgc2V0Q2hpbGRyZW5Gb3JJbnN0cnVtZW50YXRpb24gPSBlbXB0
eUZ1bmN0aW9uO1xuXHRpZiAoZmFsc2UpIHtcblx0ICB2YXIgZ2V0RGVidWdJRCA9IGZ1bmN0aW9u
IChpbnN0KSB7XG5cdCAgICBpZiAoIWluc3QuX2RlYnVnSUQpIHtcblx0ICAgICAgLy8gQ2hlY2sg
Zm9yIEFSVC1saWtlIGluc3RhbmNlcy4gVE9ETzogVGhpcyBpcyBzaWxseS9ncm9zcy5cblx0ICAg
ICAgdmFyIGludGVybmFsO1xuXHQgICAgICBpZiAoaW50ZXJuYWwgPSBSZWFjdEluc3RhbmNlTWFw
LmdldChpbnN0KSkge1xuXHQgICAgICAgIGluc3QgPSBpbnRlcm5hbDtcblx0ICAgICAgfVxuXHQg
ICAgfVxuXHQgICAgcmV0dXJuIGluc3QuX2RlYnVnSUQ7XG5cdCAgfTtcblx0ICBzZXRDaGlsZHJl
bkZvckluc3RydW1lbnRhdGlvbiA9IGZ1bmN0aW9uIChjaGlsZHJlbikge1xuXHQgICAgdmFyIGRl
YnVnSUQgPSBnZXREZWJ1Z0lEKHRoaXMpO1xuXHQgICAgLy8gVE9ETzogUmVhY3QgTmF0aXZlIGVt
cHR5IGNvbXBvbmVudHMgYXJlIGFsc28gbXVsdGljaGlsZC5cblx0ICAgIC8vIFRoaXMgbWVhbnMg
dGhleSBzdGlsbCBnZXQgaW50byB0aGlzIG1ldGhvZCBidXQgZG9uJ3QgaGF2ZSBfZGVidWdJRC5c
blx0ICAgIGlmIChkZWJ1Z0lEICE9PSAwKSB7XG5cdCAgICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9u
LmRlYnVnVG9vbC5vblNldENoaWxkcmVuKGRlYnVnSUQsIGNoaWxkcmVuID8gT2JqZWN0LmtleXMo
Y2hpbGRyZW4pLm1hcChmdW5jdGlvbiAoa2V5KSB7XG5cdCAgICAgICAgcmV0dXJuIGNoaWxkcmVu
W2tleV0uX2RlYnVnSUQ7XG5cdCAgICAgIH0pIDogW10pO1xuXHQgICAgfVxuXHQgIH07XG5cdH1c
blx0XG5cdC8qKlxuXHQgKiBSZWFjdE11bHRpQ2hpbGQgYXJlIGNhcGFibGUgb2YgcmVjb25jaWxp
bmcgbXVsdGlwbGUgY2hpbGRyZW4uXG5cdCAqXG5cdCAqIEBjbGFzcyBSZWFjdE11bHRpQ2hpbGRc
blx0ICogQGludGVybmFsXG5cdCAqL1xuXHR2YXIgUmVhY3RNdWx0aUNoaWxkID0ge1xuXHQgIC8q
KlxuXHQgICAqIFByb3ZpZGVzIGNvbW1vbiBmdW5jdGlvbmFsaXR5IGZvciBjb21wb25lbnRzIHRo
YXQgbXVzdCByZWNvbmNpbGUgbXVsdGlwbGVcblx0ICAgKiBjaGlsZHJlbi4gVGhpcyBpcyB1c2Vk
IGJ5IGBSZWFjdERPTUNvbXBvbmVudGAgdG8gbW91bnQsIHVwZGF0ZSwgYW5kXG5cdCAgICogdW5t
b3VudCBjaGlsZCBjb21wb25lbnRzLlxuXHQgICAqXG5cdCAgICogQGxlbmRzIHtSZWFjdE11bHRp
Q2hpbGQucHJvdG90eXBlfVxuXHQgICAqL1xuXHQgIE1peGluOiB7XG5cdCAgICBfcmVjb25jaWxl
ckluc3RhbnRpYXRlQ2hpbGRyZW46IGZ1bmN0aW9uIChuZXN0ZWRDaGlsZHJlbiwgdHJhbnNhY3Rp
b24sIGNvbnRleHQpIHtcblx0ICAgICAgaWYgKGZhbHNlKSB7XG5cdCAgICAgICAgdmFyIHNlbGZE
ZWJ1Z0lEID0gZ2V0RGVidWdJRCh0aGlzKTtcblx0ICAgICAgICBpZiAodGhpcy5fY3VycmVudEVs
ZW1lbnQpIHtcblx0ICAgICAgICAgIHRyeSB7XG5cdCAgICAgICAgICAgIFJlYWN0Q3VycmVudE93
bmVyLmN1cnJlbnQgPSB0aGlzLl9jdXJyZW50RWxlbWVudC5fb3duZXI7XG5cdCAgICAgICAgICAg
IHJldHVybiBSZWFjdENoaWxkUmVjb25jaWxlci5pbnN0YW50aWF0ZUNoaWxkcmVuKG5lc3RlZENo
aWxkcmVuLCB0cmFuc2FjdGlvbiwgY29udGV4dCwgc2VsZkRlYnVnSUQpO1xuXHQgICAgICAgICAg
fSBmaW5hbGx5IHtcblx0ICAgICAgICAgICAgUmVhY3RDdXJyZW50T3duZXIuY3VycmVudCA9IG51
bGw7XG5cdCAgICAgICAgICB9XG5cdCAgICAgICAgfVxuXHQgICAgICB9XG5cdCAgICAgIHJldHVy
biBSZWFjdENoaWxkUmVjb25jaWxlci5pbnN0YW50aWF0ZUNoaWxkcmVuKG5lc3RlZENoaWxkcmVu
LCB0cmFuc2FjdGlvbiwgY29udGV4dCk7XG5cdCAgICB9LFxuXHRcblx0ICAgIF9yZWNvbmNpbGVy
VXBkYXRlQ2hpbGRyZW46IGZ1bmN0aW9uIChwcmV2Q2hpbGRyZW4sIG5leHROZXN0ZWRDaGlsZHJl
bkVsZW1lbnRzLCBtb3VudEltYWdlcywgcmVtb3ZlZE5vZGVzLCB0cmFuc2FjdGlvbiwgY29udGV4
dCkge1xuXHQgICAgICB2YXIgbmV4dENoaWxkcmVuO1xuXHQgICAgICB2YXIgc2VsZkRlYnVnSUQg
PSAwO1xuXHQgICAgICBpZiAoZmFsc2UpIHtcblx0ICAgICAgICBzZWxmRGVidWdJRCA9IGdldERl
YnVnSUQodGhpcyk7XG5cdCAgICAgICAgaWYgKHRoaXMuX2N1cnJlbnRFbGVtZW50KSB7XG5cdCAg
ICAgICAgICB0cnkge1xuXHQgICAgICAgICAgICBSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50ID0g
dGhpcy5fY3VycmVudEVsZW1lbnQuX293bmVyO1xuXHQgICAgICAgICAgICBuZXh0Q2hpbGRyZW4g
PSBmbGF0dGVuQ2hpbGRyZW4obmV4dE5lc3RlZENoaWxkcmVuRWxlbWVudHMsIHNlbGZEZWJ1Z0lE
KTtcblx0ICAgICAgICAgIH0gZmluYWxseSB7XG5cdCAgICAgICAgICAgIFJlYWN0Q3VycmVudE93
bmVyLmN1cnJlbnQgPSBudWxsO1xuXHQgICAgICAgICAgfVxuXHQgICAgICAgICAgUmVhY3RDaGls
ZFJlY29uY2lsZXIudXBkYXRlQ2hpbGRyZW4ocHJldkNoaWxkcmVuLCBuZXh0Q2hpbGRyZW4sIG1v
dW50SW1hZ2VzLCByZW1vdmVkTm9kZXMsIHRyYW5zYWN0aW9uLCB0aGlzLCB0aGlzLl9ob3N0Q29u
dGFpbmVySW5mbywgY29udGV4dCwgc2VsZkRlYnVnSUQpO1xuXHQgICAgICAgICAgcmV0dXJuIG5l
eHRDaGlsZHJlbjtcblx0ICAgICAgICB9XG5cdCAgICAgIH1cblx0ICAgICAgbmV4dENoaWxkcmVu
ID0gZmxhdHRlbkNoaWxkcmVuKG5leHROZXN0ZWRDaGlsZHJlbkVsZW1lbnRzLCBzZWxmRGVidWdJ
RCk7XG5cdCAgICAgIFJlYWN0Q2hpbGRSZWNvbmNpbGVyLnVwZGF0ZUNoaWxkcmVuKHByZXZDaGls
ZHJlbiwgbmV4dENoaWxkcmVuLCBtb3VudEltYWdlcywgcmVtb3ZlZE5vZGVzLCB0cmFuc2FjdGlv
biwgdGhpcywgdGhpcy5faG9zdENvbnRhaW5lckluZm8sIGNvbnRleHQsIHNlbGZEZWJ1Z0lEKTtc
blx0ICAgICAgcmV0dXJuIG5leHRDaGlsZHJlbjtcblx0ICAgIH0sXG5cdFxuXHQgICAgLyoqXG5c
dCAgICAgKiBHZW5lcmF0ZXMgYSBcIm1vdW50IGltYWdlXCIgZm9yIGVhY2ggb2YgdGhlIHN1cHBs
aWVkIGNoaWxkcmVuLiBJbiB0aGUgY2FzZVxuXHQgICAgICogb2YgYFJlYWN0RE9NQ29tcG9uZW50
YCwgYSBtb3VudCBpbWFnZSBpcyBhIHN0cmluZyBvZiBtYXJrdXAuXG5cdCAgICAgKlxuXHQgICAg
ICogQHBhcmFtIHs/b2JqZWN0fSBuZXN0ZWRDaGlsZHJlbiBOZXN0ZWQgY2hpbGQgbWFwcy5cblx0
ICAgICAqIEByZXR1cm4ge2FycmF5fSBBbiBhcnJheSBvZiBtb3VudGVkIHJlcHJlc2VudGF0aW9u
cy5cblx0ICAgICAqIEBpbnRlcm5hbFxuXHQgICAgICovXG5cdCAgICBtb3VudENoaWxkcmVuOiBm
dW5jdGlvbiAobmVzdGVkQ2hpbGRyZW4sIHRyYW5zYWN0aW9uLCBjb250ZXh0KSB7XG5cdCAgICAg
IHZhciBjaGlsZHJlbiA9IHRoaXMuX3JlY29uY2lsZXJJbnN0YW50aWF0ZUNoaWxkcmVuKG5lc3Rl
ZENoaWxkcmVuLCB0cmFuc2FjdGlvbiwgY29udGV4dCk7XG5cdCAgICAgIHRoaXMuX3JlbmRlcmVk
Q2hpbGRyZW4gPSBjaGlsZHJlbjtcblx0XG5cdCAgICAgIHZhciBtb3VudEltYWdlcyA9IFtdO1xu
XHQgICAgICB2YXIgaW5kZXggPSAwO1xuXHQgICAgICBmb3IgKHZhciBuYW1lIGluIGNoaWxkcmVu
KSB7XG5cdCAgICAgICAgaWYgKGNoaWxkcmVuLmhhc093blByb3BlcnR5KG5hbWUpKSB7XG5cdCAg
ICAgICAgICB2YXIgY2hpbGQgPSBjaGlsZHJlbltuYW1lXTtcblx0ICAgICAgICAgIHZhciBzZWxm
RGVidWdJRCA9IDA7XG5cdCAgICAgICAgICBpZiAoZmFsc2UpIHtcblx0ICAgICAgICAgICAgc2Vs
ZkRlYnVnSUQgPSBnZXREZWJ1Z0lEKHRoaXMpO1xuXHQgICAgICAgICAgfVxuXHQgICAgICAgICAg
dmFyIG1vdW50SW1hZ2UgPSBSZWFjdFJlY29uY2lsZXIubW91bnRDb21wb25lbnQoY2hpbGQsIHRy
YW5zYWN0aW9uLCB0aGlzLCB0aGlzLl9ob3N0Q29udGFpbmVySW5mbywgY29udGV4dCwgc2VsZkRl
YnVnSUQpO1xuXHQgICAgICAgICAgY2hpbGQuX21vdW50SW5kZXggPSBpbmRleCsrO1xuXHQgICAg
ICAgICAgbW91bnRJbWFnZXMucHVzaChtb3VudEltYWdlKTtcblx0ICAgICAgICB9XG5cdCAgICAg
IH1cblx0XG5cdCAgICAgIGlmIChmYWxzZSkge1xuXHQgICAgICAgIHNldENoaWxkcmVuRm9ySW5z
dHJ1bWVudGF0aW9uLmNhbGwodGhpcywgY2hpbGRyZW4pO1xuXHQgICAgICB9XG5cdFxuXHQgICAg
ICByZXR1cm4gbW91bnRJbWFnZXM7XG5cdCAgICB9LFxuXHRcblx0ICAgIC8qKlxuXHQgICAgICog
UmVwbGFjZXMgYW55IHJlbmRlcmVkIGNoaWxkcmVuIHdpdGggYSB0ZXh0IGNvbnRlbnQgc3RyaW5n
LlxuXHQgICAgICpcblx0ICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuZXh0Q29udGVudCBTdHJpbmcg
b2YgY29udGVudC5cblx0ICAgICAqIEBpbnRlcm5hbFxuXHQgICAgICovXG5cdCAgICB1cGRhdGVU
ZXh0Q29udGVudDogZnVuY3Rpb24gKG5leHRDb250ZW50KSB7XG5cdCAgICAgIHZhciBwcmV2Q2hp
bGRyZW4gPSB0aGlzLl9yZW5kZXJlZENoaWxkcmVuO1xuXHQgICAgICAvLyBSZW1vdmUgYW55IHJl
bmRlcmVkIGNoaWxkcmVuLlxuXHQgICAgICBSZWFjdENoaWxkUmVjb25jaWxlci51bm1vdW50Q2hp
bGRyZW4ocHJldkNoaWxkcmVuLCBmYWxzZSk7XG5cdCAgICAgIGZvciAodmFyIG5hbWUgaW4gcHJl
dkNoaWxkcmVuKSB7XG5cdCAgICAgICAgaWYgKHByZXZDaGlsZHJlbi5oYXNPd25Qcm9wZXJ0eShu
YW1lKSkge1xuXHQgICAgICAgICAgIHRydWUgPyAgZmFsc2UgPyBpbnZhcmlhbnQoZmFsc2UsICd1
cGRhdGVUZXh0Q29udGVudCBjYWxsZWQgb24gbm9uLWVtcHR5IGNvbXBvbmVudC4nKSA6IF9wcm9k
SW52YXJpYW50KCcxMTgnKSA6IHZvaWQgMDtcblx0ICAgICAgICB9XG5cdCAgICAgIH1cblx0ICAg
ICAgLy8gU2V0IG5ldyB0ZXh0IGNvbnRlbnQuXG5cdCAgICAgIHZhciB1cGRhdGVzID0gW21ha2VU
ZXh0Q29udGVudChuZXh0Q29udGVudCldO1xuXHQgICAgICBwcm9jZXNzUXVldWUodGhpcywgdXBk
YXRlcyk7XG5cdCAgICB9LFxuXHRcblx0ICAgIC8qKlxuXHQgICAgICogUmVwbGFjZXMgYW55IHJl
bmRlcmVkIGNoaWxkcmVuIHdpdGggYSBtYXJrdXAgc3RyaW5nLlxuXHQgICAgICpcblx0ICAgICAq
IEBwYXJhbSB7c3RyaW5nfSBuZXh0TWFya3VwIFN0cmluZyBvZiBtYXJrdXAuXG5cdCAgICAgKiBA
aW50ZXJuYWxcblx0ICAgICAqL1xuXHQgICAgdXBkYXRlTWFya3VwOiBmdW5jdGlvbiAobmV4dE1h
cmt1cCkge1xuXHQgICAgICB2YXIgcHJldkNoaWxkcmVuID0gdGhpcy5fcmVuZGVyZWRDaGlsZHJl
bjtcblx0ICAgICAgLy8gUmVtb3ZlIGFueSByZW5kZXJlZCBjaGlsZHJlbi5cblx0ICAgICAgUmVh
Y3RDaGlsZFJlY29uY2lsZXIudW5tb3VudENoaWxkcmVuKHByZXZDaGlsZHJlbiwgZmFsc2UpO1xu
XHQgICAgICBmb3IgKHZhciBuYW1lIGluIHByZXZDaGlsZHJlbikge1xuXHQgICAgICAgIGlmIChw
cmV2Q2hpbGRyZW4uaGFzT3duUHJvcGVydHkobmFtZSkpIHtcblx0ICAgICAgICAgICB0cnVlID8g
IGZhbHNlID8gaW52YXJpYW50KGZhbHNlLCAndXBkYXRlVGV4dENvbnRlbnQgY2FsbGVkIG9uIG5v
bi1lbXB0eSBjb21wb25lbnQuJykgOiBfcHJvZEludmFyaWFudCgnMTE4JykgOiB2b2lkIDA7XG5c
dCAgICAgICAgfVxuXHQgICAgICB9XG5cdCAgICAgIHZhciB1cGRhdGVzID0gW21ha2VTZXRNYXJr
dXAobmV4dE1hcmt1cCldO1xuXHQgICAgICBwcm9jZXNzUXVldWUodGhpcywgdXBkYXRlcyk7XG5c
dCAgICB9LFxuXHRcblx0ICAgIC8qKlxuXHQgICAgICogVXBkYXRlcyB0aGUgcmVuZGVyZWQgY2hp
bGRyZW4gd2l0aCBuZXcgY2hpbGRyZW4uXG5cdCAgICAgKlxuXHQgICAgICogQHBhcmFtIHs/b2Jq
ZWN0fSBuZXh0TmVzdGVkQ2hpbGRyZW5FbGVtZW50cyBOZXN0ZWQgY2hpbGQgZWxlbWVudCBtYXBz
LlxuXHQgICAgICogQHBhcmFtIHtSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9ufSB0cmFuc2FjdGlv
blxuXHQgICAgICogQGludGVybmFsXG5cdCAgICAgKi9cblx0ICAgIHVwZGF0ZUNoaWxkcmVuOiBm
dW5jdGlvbiAobmV4dE5lc3RlZENoaWxkcmVuRWxlbWVudHMsIHRyYW5zYWN0aW9uLCBjb250ZXh0
KSB7XG5cdCAgICAgIC8vIEhvb2sgdXNlZCBieSBSZWFjdCBBUlRcblx0ICAgICAgdGhpcy5fdXBk
YXRlQ2hpbGRyZW4obmV4dE5lc3RlZENoaWxkcmVuRWxlbWVudHMsIHRyYW5zYWN0aW9uLCBjb250
ZXh0KTtcblx0ICAgIH0sXG5cdFxuXHQgICAgLyoqXG5cdCAgICAgKiBAcGFyYW0gez9vYmplY3R9
IG5leHROZXN0ZWRDaGlsZHJlbkVsZW1lbnRzIE5lc3RlZCBjaGlsZCBlbGVtZW50IG1hcHMuXG5c
dCAgICAgKiBAcGFyYW0ge1JlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb259IHRyYW5zYWN0aW9uXG5c
dCAgICAgKiBAZmluYWxcblx0ICAgICAqIEBwcm90ZWN0ZWRcblx0ICAgICAqL1xuXHQgICAgX3Vw
ZGF0ZUNoaWxkcmVuOiBmdW5jdGlvbiAobmV4dE5lc3RlZENoaWxkcmVuRWxlbWVudHMsIHRyYW5z
YWN0aW9uLCBjb250ZXh0KSB7XG5cdCAgICAgIHZhciBwcmV2Q2hpbGRyZW4gPSB0aGlzLl9yZW5k
ZXJlZENoaWxkcmVuO1xuXHQgICAgICB2YXIgcmVtb3ZlZE5vZGVzID0ge307XG5cdCAgICAgIHZh
ciBtb3VudEltYWdlcyA9IFtdO1xuXHQgICAgICB2YXIgbmV4dENoaWxkcmVuID0gdGhpcy5fcmVj
b25jaWxlclVwZGF0ZUNoaWxkcmVuKHByZXZDaGlsZHJlbiwgbmV4dE5lc3RlZENoaWxkcmVuRWxl
bWVudHMsIG1vdW50SW1hZ2VzLCByZW1vdmVkTm9kZXMsIHRyYW5zYWN0aW9uLCBjb250ZXh0KTtc
blx0ICAgICAgaWYgKCFuZXh0Q2hpbGRyZW4gJiYgIXByZXZDaGlsZHJlbikge1xuXHQgICAgICAg
IHJldHVybjtcblx0ICAgICAgfVxuXHQgICAgICB2YXIgdXBkYXRlcyA9IG51bGw7XG5cdCAgICAg
IHZhciBuYW1lO1xuXHQgICAgICAvLyBgbmV4dEluZGV4YCB3aWxsIGluY3JlbWVudCBmb3IgZWFj
aCBjaGlsZCBpbiBgbmV4dENoaWxkcmVuYCwgYnV0XG5cdCAgICAgIC8vIGBsYXN0SW5kZXhgIHdp
bGwgYmUgdGhlIGxhc3QgaW5kZXggdmlzaXRlZCBpbiBgcHJldkNoaWxkcmVuYC5cblx0ICAgICAg
dmFyIG5leHRJbmRleCA9IDA7XG5cdCAgICAgIHZhciBsYXN0SW5kZXggPSAwO1xuXHQgICAgICAv
LyBgbmV4dE1vdW50SW5kZXhgIHdpbGwgaW5jcmVtZW50IGZvciBlYWNoIG5ld2x5IG1vdW50ZWQg
Y2hpbGQuXG5cdCAgICAgIHZhciBuZXh0TW91bnRJbmRleCA9IDA7XG5cdCAgICAgIHZhciBsYXN0
UGxhY2VkTm9kZSA9IG51bGw7XG5cdCAgICAgIGZvciAobmFtZSBpbiBuZXh0Q2hpbGRyZW4pIHtc
blx0ICAgICAgICBpZiAoIW5leHRDaGlsZHJlbi5oYXNPd25Qcm9wZXJ0eShuYW1lKSkge1xuXHQg
ICAgICAgICAgY29udGludWU7XG5cdCAgICAgICAgfVxuXHQgICAgICAgIHZhciBwcmV2Q2hpbGQg
PSBwcmV2Q2hpbGRyZW4gJiYgcHJldkNoaWxkcmVuW25hbWVdO1xuXHQgICAgICAgIHZhciBuZXh0
Q2hpbGQgPSBuZXh0Q2hpbGRyZW5bbmFtZV07XG5cdCAgICAgICAgaWYgKHByZXZDaGlsZCA9PT0g
bmV4dENoaWxkKSB7XG5cdCAgICAgICAgICB1cGRhdGVzID0gZW5xdWV1ZSh1cGRhdGVzLCB0aGlz
Lm1vdmVDaGlsZChwcmV2Q2hpbGQsIGxhc3RQbGFjZWROb2RlLCBuZXh0SW5kZXgsIGxhc3RJbmRl
eCkpO1xuXHQgICAgICAgICAgbGFzdEluZGV4ID0gTWF0aC5tYXgocHJldkNoaWxkLl9tb3VudElu
ZGV4LCBsYXN0SW5kZXgpO1xuXHQgICAgICAgICAgcHJldkNoaWxkLl9tb3VudEluZGV4ID0gbmV4
dEluZGV4O1xuXHQgICAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgICBpZiAocHJldkNoaWxkKSB7
XG5cdCAgICAgICAgICAgIC8vIFVwZGF0ZSBgbGFzdEluZGV4YCBiZWZvcmUgYF9tb3VudEluZGV4
YCBnZXRzIHVuc2V0IGJ5IHVubW91bnRpbmcuXG5cdCAgICAgICAgICAgIGxhc3RJbmRleCA9IE1h
dGgubWF4KHByZXZDaGlsZC5fbW91bnRJbmRleCwgbGFzdEluZGV4KTtcblx0ICAgICAgICAgICAg
Ly8gVGhlIGByZW1vdmVkTm9kZXNgIGxvb3AgYmVsb3cgd2lsbCBhY3R1YWxseSByZW1vdmUgdGhl
IGNoaWxkLlxuXHQgICAgICAgICAgfVxuXHQgICAgICAgICAgLy8gVGhlIGNoaWxkIG11c3QgYmUg
aW5zdGFudGlhdGVkIGJlZm9yZSBpdCdzIG1vdW50ZWQuXG5cdCAgICAgICAgICB1cGRhdGVzID0g
ZW5xdWV1ZSh1cGRhdGVzLCB0aGlzLl9tb3VudENoaWxkQXRJbmRleChuZXh0Q2hpbGQsIG1vdW50
SW1hZ2VzW25leHRNb3VudEluZGV4XSwgbGFzdFBsYWNlZE5vZGUsIG5leHRJbmRleCwgdHJhbnNh
Y3Rpb24sIGNvbnRleHQpKTtcblx0ICAgICAgICAgIG5leHRNb3VudEluZGV4Kys7XG5cdCAgICAg
ICAgfVxuXHQgICAgICAgIG5leHRJbmRleCsrO1xuXHQgICAgICAgIGxhc3RQbGFjZWROb2RlID0g
UmVhY3RSZWNvbmNpbGVyLmdldEhvc3ROb2RlKG5leHRDaGlsZCk7XG5cdCAgICAgIH1cblx0ICAg
ICAgLy8gUmVtb3ZlIGNoaWxkcmVuIHRoYXQgYXJlIG5vIGxvbmdlciBwcmVzZW50LlxuXHQgICAg
ICBmb3IgKG5hbWUgaW4gcmVtb3ZlZE5vZGVzKSB7XG5cdCAgICAgICAgaWYgKHJlbW92ZWROb2Rl
cy5oYXNPd25Qcm9wZXJ0eShuYW1lKSkge1xuXHQgICAgICAgICAgdXBkYXRlcyA9IGVucXVldWUo
dXBkYXRlcywgdGhpcy5fdW5tb3VudENoaWxkKHByZXZDaGlsZHJlbltuYW1lXSwgcmVtb3ZlZE5v
ZGVzW25hbWVdKSk7XG5cdCAgICAgICAgfVxuXHQgICAgICB9XG5cdCAgICAgIGlmICh1cGRhdGVz
KSB7XG5cdCAgICAgICAgcHJvY2Vzc1F1ZXVlKHRoaXMsIHVwZGF0ZXMpO1xuXHQgICAgICB9XG5c
dCAgICAgIHRoaXMuX3JlbmRlcmVkQ2hpbGRyZW4gPSBuZXh0Q2hpbGRyZW47XG5cdFxuXHQgICAg
ICBpZiAoZmFsc2UpIHtcblx0ICAgICAgICBzZXRDaGlsZHJlbkZvckluc3RydW1lbnRhdGlvbi5j
YWxsKHRoaXMsIG5leHRDaGlsZHJlbik7XG5cdCAgICAgIH1cblx0ICAgIH0sXG5cdFxuXHQgICAg
LyoqXG5cdCAgICAgKiBVbm1vdW50cyBhbGwgcmVuZGVyZWQgY2hpbGRyZW4uIFRoaXMgc2hvdWxk
IGJlIHVzZWQgdG8gY2xlYW4gdXAgY2hpbGRyZW5cblx0ICAgICAqIHdoZW4gdGhpcyBjb21wb25l
bnQgaXMgdW5tb3VudGVkLiBJdCBkb2VzIG5vdCBhY3R1YWxseSBwZXJmb3JtIGFueVxuXHQgICAg
ICogYmFja2VuZCBvcGVyYXRpb25zLlxuXHQgICAgICpcblx0ICAgICAqIEBpbnRlcm5hbFxuXHQg
ICAgICovXG5cdCAgICB1bm1vdW50Q2hpbGRyZW46IGZ1bmN0aW9uIChzYWZlbHkpIHtcblx0ICAg
ICAgdmFyIHJlbmRlcmVkQ2hpbGRyZW4gPSB0aGlzLl9yZW5kZXJlZENoaWxkcmVuO1xuXHQgICAg
ICBSZWFjdENoaWxkUmVjb25jaWxlci51bm1vdW50Q2hpbGRyZW4ocmVuZGVyZWRDaGlsZHJlbiwg
c2FmZWx5KTtcblx0ICAgICAgdGhpcy5fcmVuZGVyZWRDaGlsZHJlbiA9IG51bGw7XG5cdCAgICB9
LFxuXHRcblx0ICAgIC8qKlxuXHQgICAgICogTW92ZXMgYSBjaGlsZCBjb21wb25lbnQgdG8gdGhl
IHN1cHBsaWVkIGluZGV4LlxuXHQgICAgICpcblx0ICAgICAqIEBwYXJhbSB7UmVhY3RDb21wb25l
bnR9IGNoaWxkIENvbXBvbmVudCB0byBtb3ZlLlxuXHQgICAgICogQHBhcmFtIHtudW1iZXJ9IHRv
SW5kZXggRGVzdGluYXRpb24gaW5kZXggb2YgdGhlIGVsZW1lbnQuXG5cdCAgICAgKiBAcGFyYW0g
e251bWJlcn0gbGFzdEluZGV4IExhc3QgaW5kZXggdmlzaXRlZCBvZiB0aGUgc2libGluZ3Mgb2Yg
YGNoaWxkYC5cblx0ICAgICAqIEBwcm90ZWN0ZWRcblx0ICAgICAqL1xuXHQgICAgbW92ZUNoaWxk
OiBmdW5jdGlvbiAoY2hpbGQsIGFmdGVyTm9kZSwgdG9JbmRleCwgbGFzdEluZGV4KSB7XG5cdCAg
ICAgIC8vIElmIHRoZSBpbmRleCBvZiBgY2hpbGRgIGlzIGxlc3MgdGhhbiBgbGFzdEluZGV4YCwg
dGhlbiBpdCBuZWVkcyB0b1xuXHQgICAgICAvLyBiZSBtb3ZlZC4gT3RoZXJ3aXNlLCB3ZSBkbyBu
b3QgbmVlZCB0byBtb3ZlIGl0IGJlY2F1c2UgYSBjaGlsZCB3aWxsIGJlXG5cdCAgICAgIC8vIGlu
c2VydGVkIG9yIG1vdmVkIGJlZm9yZSBgY2hpbGRgLlxuXHQgICAgICBpZiAoY2hpbGQuX21vdW50
SW5kZXggPCBsYXN0SW5kZXgpIHtcblx0ICAgICAgICByZXR1cm4gbWFrZU1vdmUoY2hpbGQsIGFm
dGVyTm9kZSwgdG9JbmRleCk7XG5cdCAgICAgIH1cblx0ICAgIH0sXG5cdFxuXHQgICAgLyoqXG5c
dCAgICAgKiBDcmVhdGVzIGEgY2hpbGQgY29tcG9uZW50LlxuXHQgICAgICpcblx0ICAgICAqIEBw
YXJhbSB7UmVhY3RDb21wb25lbnR9IGNoaWxkIENvbXBvbmVudCB0byBjcmVhdGUuXG5cdCAgICAg
KiBAcGFyYW0ge3N0cmluZ30gbW91bnRJbWFnZSBNYXJrdXAgdG8gaW5zZXJ0LlxuXHQgICAgICog
QHByb3RlY3RlZFxuXHQgICAgICovXG5cdCAgICBjcmVhdGVDaGlsZDogZnVuY3Rpb24gKGNoaWxk
LCBhZnRlck5vZGUsIG1vdW50SW1hZ2UpIHtcblx0ICAgICAgcmV0dXJuIG1ha2VJbnNlcnRNYXJr
dXAobW91bnRJbWFnZSwgYWZ0ZXJOb2RlLCBjaGlsZC5fbW91bnRJbmRleCk7XG5cdCAgICB9LFxu
XHRcblx0ICAgIC8qKlxuXHQgICAgICogUmVtb3ZlcyBhIGNoaWxkIGNvbXBvbmVudC5cblx0ICAg
ICAqXG5cdCAgICAgKiBAcGFyYW0ge1JlYWN0Q29tcG9uZW50fSBjaGlsZCBDaGlsZCB0byByZW1v
dmUuXG5cdCAgICAgKiBAcHJvdGVjdGVkXG5cdCAgICAgKi9cblx0ICAgIHJlbW92ZUNoaWxkOiBm
dW5jdGlvbiAoY2hpbGQsIG5vZGUpIHtcblx0ICAgICAgcmV0dXJuIG1ha2VSZW1vdmUoY2hpbGQs
IG5vZGUpO1xuXHQgICAgfSxcblx0XG5cdCAgICAvKipcblx0ICAgICAqIE1vdW50cyBhIGNoaWxk
IHdpdGggdGhlIHN1cHBsaWVkIG5hbWUuXG5cdCAgICAgKlxuXHQgICAgICogTk9URTogVGhpcyBp
cyBwYXJ0IG9mIGB1cGRhdGVDaGlsZHJlbmAgYW5kIGlzIGhlcmUgZm9yIHJlYWRhYmlsaXR5Llxu
XHQgICAgICpcblx0ICAgICAqIEBwYXJhbSB7UmVhY3RDb21wb25lbnR9IGNoaWxkIENvbXBvbmVu
dCB0byBtb3VudC5cblx0ICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIE5hbWUgb2YgdGhlIGNo
aWxkLlxuXHQgICAgICogQHBhcmFtIHtudW1iZXJ9IGluZGV4IEluZGV4IGF0IHdoaWNoIHRvIGlu
c2VydCB0aGUgY2hpbGQuXG5cdCAgICAgKiBAcGFyYW0ge1JlYWN0UmVjb25jaWxlVHJhbnNhY3Rp
b259IHRyYW5zYWN0aW9uXG5cdCAgICAgKiBAcHJpdmF0ZVxuXHQgICAgICovXG5cdCAgICBfbW91
bnRDaGlsZEF0SW5kZXg6IGZ1bmN0aW9uIChjaGlsZCwgbW91bnRJbWFnZSwgYWZ0ZXJOb2RlLCBp
bmRleCwgdHJhbnNhY3Rpb24sIGNvbnRleHQpIHtcblx0ICAgICAgY2hpbGQuX21vdW50SW5kZXgg
PSBpbmRleDtcblx0ICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlQ2hpbGQoY2hpbGQsIGFmdGVyTm9k
ZSwgbW91bnRJbWFnZSk7XG5cdCAgICB9LFxuXHRcblx0ICAgIC8qKlxuXHQgICAgICogVW5tb3Vu
dHMgYSByZW5kZXJlZCBjaGlsZC5cblx0ICAgICAqXG5cdCAgICAgKiBOT1RFOiBUaGlzIGlzIHBh
cnQgb2YgYHVwZGF0ZUNoaWxkcmVuYCBhbmQgaXMgaGVyZSBmb3IgcmVhZGFiaWxpdHkuXG5cdCAg
ICAgKlxuXHQgICAgICogQHBhcmFtIHtSZWFjdENvbXBvbmVudH0gY2hpbGQgQ29tcG9uZW50IHRv
IHVubW91bnQuXG5cdCAgICAgKiBAcHJpdmF0ZVxuXHQgICAgICovXG5cdCAgICBfdW5tb3VudENo
aWxkOiBmdW5jdGlvbiAoY2hpbGQsIG5vZGUpIHtcblx0ICAgICAgdmFyIHVwZGF0ZSA9IHRoaXMu
cmVtb3ZlQ2hpbGQoY2hpbGQsIG5vZGUpO1xuXHQgICAgICBjaGlsZC5fbW91bnRJbmRleCA9IG51
bGw7XG5cdCAgICAgIHJldHVybiB1cGRhdGU7XG5cdCAgICB9XG5cdCAgfVxuXHR9O1xuXHRcblx0
bW9kdWxlLmV4cG9ydHMgPSBSZWFjdE11bHRpQ2hpbGQ7XG5cbi8qKiovIH0sXG4vKiAxNTcgKi9c
bi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xu
XG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQg
KiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxp
Y2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElD
RU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBh
ZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRo
ZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKiBcblx0ICov
XG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHR2YXIgX3Byb2RJbnZhcmlhbnQgPSBfX3dlYnBh
Y2tfcmVxdWlyZV9fKDMpO1xuXHRcblx0dmFyIGludmFyaWFudCA9IF9fd2VicGFja19yZXF1aXJl
X18oMSk7XG5cdFxuXHQvKipcblx0ICogQHBhcmFtIHs/b2JqZWN0fSBvYmplY3Rcblx0ICogQHJl
dHVybiB7Ym9vbGVhbn0gVHJ1ZSBpZiBgb2JqZWN0YCBpcyBhIHZhbGlkIG93bmVyLlxuXHQgKiBA
ZmluYWxcblx0ICovXG5cdGZ1bmN0aW9uIGlzVmFsaWRPd25lcihvYmplY3QpIHtcblx0ICByZXR1
cm4gISEob2JqZWN0ICYmIHR5cGVvZiBvYmplY3QuYXR0YWNoUmVmID09PSAnZnVuY3Rpb24nICYm
IHR5cGVvZiBvYmplY3QuZGV0YWNoUmVmID09PSAnZnVuY3Rpb24nKTtcblx0fVxuXHRcblx0Lyoq
XG5cdCAqIFJlYWN0T3duZXJzIGFyZSBjYXBhYmxlIG9mIHN0b3JpbmcgcmVmZXJlbmNlcyB0byBv
d25lZCBjb21wb25lbnRzLlxuXHQgKlxuXHQgKiBBbGwgY29tcG9uZW50cyBhcmUgY2FwYWJsZSBv
ZiAvL2JlaW5nLy8gcmVmZXJlbmNlZCBieSBvd25lciBjb21wb25lbnRzLCBidXRcblx0ICogb25s
eSBSZWFjdE93bmVyIGNvbXBvbmVudHMgYXJlIGNhcGFibGUgb2YgLy9yZWZlcmVuY2luZy8vIG93
bmVkIGNvbXBvbmVudHMuXG5cdCAqIFRoZSBuYW1lZCByZWZlcmVuY2UgaXMga25vd24gYXMgYSBc
InJlZlwiLlxuXHQgKlxuXHQgKiBSZWZzIGFyZSBhdmFpbGFibGUgd2hlbiBtb3VudGVkIGFuZCB1
cGRhdGVkIGR1cmluZyByZWNvbmNpbGlhdGlvbi5cblx0ICpcblx0ICogICB2YXIgTXlDb21wb25l
bnQgPSBSZWFjdC5jcmVhdGVDbGFzcyh7XG5cdCAqICAgICByZW5kZXI6IGZ1bmN0aW9uKCkge1xu
XHQgKiAgICAgICByZXR1cm4gKFxuXHQgKiAgICAgICAgIDxkaXYgb25DbGljaz17dGhpcy5oYW5k
bGVDbGlja30+XG5cdCAqICAgICAgICAgICA8Q3VzdG9tQ29tcG9uZW50IHJlZj1cImN1c3RvbVwi
IC8+XG5cdCAqICAgICAgICAgPC9kaXY+XG5cdCAqICAgICAgICk7XG5cdCAqICAgICB9LFxuXHQg
KiAgICAgaGFuZGxlQ2xpY2s6IGZ1bmN0aW9uKCkge1xuXHQgKiAgICAgICB0aGlzLnJlZnMuY3Vz
dG9tLmhhbmRsZUNsaWNrKCk7XG5cdCAqICAgICB9LFxuXHQgKiAgICAgY29tcG9uZW50RGlkTW91
bnQ6IGZ1bmN0aW9uKCkge1xuXHQgKiAgICAgICB0aGlzLnJlZnMuY3VzdG9tLmluaXRpYWxpemUo
KTtcblx0ICogICAgIH1cblx0ICogICB9KTtcblx0ICpcblx0ICogUmVmcyBzaG91bGQgcmFyZWx5
IGJlIHVzZWQuIFdoZW4gcmVmcyBhcmUgdXNlZCwgdGhleSBzaG91bGQgb25seSBiZSBkb25lIHRv
XG5cdCAqIGNvbnRyb2wgZGF0YSB0aGF0IGlzIG5vdCBoYW5kbGVkIGJ5IFJlYWN0J3MgZGF0YSBm
bG93LlxuXHQgKlxuXHQgKiBAY2xhc3MgUmVhY3RPd25lclxuXHQgKi9cblx0dmFyIFJlYWN0T3du
ZXIgPSB7XG5cdCAgLyoqXG5cdCAgICogQWRkcyBhIGNvbXBvbmVudCBieSByZWYgdG8gYW4gb3du
ZXIgY29tcG9uZW50LlxuXHQgICAqXG5cdCAgICogQHBhcmFtIHtSZWFjdENvbXBvbmVudH0gY29t
cG9uZW50IENvbXBvbmVudCB0byByZWZlcmVuY2UuXG5cdCAgICogQHBhcmFtIHtzdHJpbmd9IHJl
ZiBOYW1lIGJ5IHdoaWNoIHRvIHJlZmVyIHRvIHRoZSBjb21wb25lbnQuXG5cdCAgICogQHBhcmFt
IHtSZWFjdE93bmVyfSBvd25lciBDb21wb25lbnQgb24gd2hpY2ggdG8gcmVjb3JkIHRoZSByZWYu
XG5cdCAgICogQGZpbmFsXG5cdCAgICogQGludGVybmFsXG5cdCAgICovXG5cdCAgYWRkQ29tcG9u
ZW50QXNSZWZUbzogZnVuY3Rpb24gKGNvbXBvbmVudCwgcmVmLCBvd25lcikge1xuXHQgICAgIWlz
VmFsaWRPd25lcihvd25lcikgPyAgZmFsc2UgPyBpbnZhcmlhbnQoZmFsc2UsICdhZGRDb21wb25l
bnRBc1JlZlRvKC4uLik6IE9ubHkgYSBSZWFjdE93bmVyIGNhbiBoYXZlIHJlZnMuIFlvdSBtaWdo
dCBiZSBhZGRpbmcgYSByZWYgdG8gYSBjb21wb25lbnQgdGhhdCB3YXMgbm90IGNyZWF0ZWQgaW5z
aWRlIGEgY29tcG9uZW50XFwncyBgcmVuZGVyYCBtZXRob2QsIG9yIHlvdSBoYXZlIG11bHRpcGxl
IGNvcGllcyBvZiBSZWFjdCBsb2FkZWQgKGRldGFpbHM6IGh0dHBzOi8vZmIubWUvcmVhY3QtcmVm
cy1tdXN0LWhhdmUtb3duZXIpLicpIDogX3Byb2RJbnZhcmlhbnQoJzExOScpIDogdm9pZCAwO1xu
XHQgICAgb3duZXIuYXR0YWNoUmVmKHJlZiwgY29tcG9uZW50KTtcblx0ICB9LFxuXHRcblx0ICAv
Kipcblx0ICAgKiBSZW1vdmVzIGEgY29tcG9uZW50IGJ5IHJlZiBmcm9tIGFuIG93bmVyIGNvbXBv
bmVudC5cblx0ICAgKlxuXHQgICAqIEBwYXJhbSB7UmVhY3RDb21wb25lbnR9IGNvbXBvbmVudCBD
b21wb25lbnQgdG8gZGVyZWZlcmVuY2UuXG5cdCAgICogQHBhcmFtIHtzdHJpbmd9IHJlZiBOYW1l
IG9mIHRoZSByZWYgdG8gcmVtb3ZlLlxuXHQgICAqIEBwYXJhbSB7UmVhY3RPd25lcn0gb3duZXIg
Q29tcG9uZW50IG9uIHdoaWNoIHRoZSByZWYgaXMgcmVjb3JkZWQuXG5cdCAgICogQGZpbmFsXG5c
dCAgICogQGludGVybmFsXG5cdCAgICovXG5cdCAgcmVtb3ZlQ29tcG9uZW50QXNSZWZGcm9tOiBm
dW5jdGlvbiAoY29tcG9uZW50LCByZWYsIG93bmVyKSB7XG5cdCAgICAhaXNWYWxpZE93bmVyKG93
bmVyKSA/ICBmYWxzZSA/IGludmFyaWFudChmYWxzZSwgJ3JlbW92ZUNvbXBvbmVudEFzUmVmRnJv
bSguLi4pOiBPbmx5IGEgUmVhY3RPd25lciBjYW4gaGF2ZSByZWZzLiBZb3UgbWlnaHQgYmUgcmVt
b3ZpbmcgYSByZWYgdG8gYSBjb21wb25lbnQgdGhhdCB3YXMgbm90IGNyZWF0ZWQgaW5zaWRlIGEg
Y29tcG9uZW50XFwncyBgcmVuZGVyYCBtZXRob2QsIG9yIHlvdSBoYXZlIG11bHRpcGxlIGNvcGll
cyBvZiBSZWFjdCBsb2FkZWQgKGRldGFpbHM6IGh0dHBzOi8vZmIubWUvcmVhY3QtcmVmcy1tdXN0
LWhhdmUtb3duZXIpLicpIDogX3Byb2RJbnZhcmlhbnQoJzEyMCcpIDogdm9pZCAwO1xuXHQgICAg
dmFyIG93bmVyUHVibGljSW5zdGFuY2UgPSBvd25lci5nZXRQdWJsaWNJbnN0YW5jZSgpO1xuXHQg
ICAgLy8gQ2hlY2sgdGhhdCBgY29tcG9uZW50YCdzIG93bmVyIGlzIHN0aWxsIGFsaXZlIGFuZCB0
aGF0IGBjb21wb25lbnRgIGlzIHN0aWxsIHRoZSBjdXJyZW50IHJlZlxuXHQgICAgLy8gYmVjYXVz
ZSB3ZSBkbyBub3Qgd2FudCB0byBkZXRhY2ggdGhlIHJlZiBpZiBhbm90aGVyIGNvbXBvbmVudCBz
dG9sZSBpdC5cblx0ICAgIGlmIChvd25lclB1YmxpY0luc3RhbmNlICYmIG93bmVyUHVibGljSW5z
dGFuY2UucmVmc1tyZWZdID09PSBjb21wb25lbnQuZ2V0UHVibGljSW5zdGFuY2UoKSkge1xuXHQg
ICAgICBvd25lci5kZXRhY2hSZWYocmVmKTtcblx0ICAgIH1cblx0ICB9XG5cdH07XG5cdFxuXHRt
b2R1bGUuZXhwb3J0cyA9IFJlYWN0T3duZXI7XG5cbi8qKiovIH0sXG4vKiAxNTggKi9cbi8qKiov
IGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAx
My1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQg
KlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUg
bGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVj
dG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBh
dGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUg
ZGlyZWN0b3J5LlxuXHQgKlxuXHQgKiBcblx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxu
XHR2YXIgUmVhY3RQcm9wVHlwZXNTZWNyZXQgPSAnU0VDUkVUX0RPX05PVF9QQVNTX1RISVNfT1Jf
WU9VX1dJTExfQkVfRklSRUQnO1xuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBSZWFjdFByb3BUeXBl
c1NlY3JldDtcblxuLyoqKi8gfSxcbi8qIDE1OSAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBl
eHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAy
MDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5c
dCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHls
ZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGly
ZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2Yg
cGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2Ft
ZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqL1xuXHRcblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0dmFy
IF9hc3NpZ24gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQpO1xuXHRcblx0dmFyIENhbGxiYWNrUXVl
dWUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDU5KTtcblx0dmFyIFBvb2xlZENsYXNzID0gX193ZWJw
YWNrX3JlcXVpcmVfXygxMyk7XG5cdHZhciBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIgPSBfX3dl
YnBhY2tfcmVxdWlyZV9fKDI1KTtcblx0dmFyIFJlYWN0SW5wdXRTZWxlY3Rpb24gPSBfX3dlYnBh
Y2tfcmVxdWlyZV9fKDY2KTtcblx0dmFyIFJlYWN0SW5zdHJ1bWVudGF0aW9uID0gX193ZWJwYWNr
X3JlcXVpcmVfXyg4KTtcblx0dmFyIFRyYW5zYWN0aW9uID0gX193ZWJwYWNrX3JlcXVpcmVfXygy
Nyk7XG5cdHZhciBSZWFjdFVwZGF0ZVF1ZXVlID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0Mik7XG5c
dFxuXHQvKipcblx0ICogRW5zdXJlcyB0aGF0LCB3aGVuIHBvc3NpYmxlLCB0aGUgc2VsZWN0aW9u
IHJhbmdlIChjdXJyZW50bHkgc2VsZWN0ZWQgdGV4dFxuXHQgKiBpbnB1dCkgaXMgbm90IGRpc3R1
cmJlZCBieSBwZXJmb3JtaW5nIHRoZSB0cmFuc2FjdGlvbi5cblx0ICovXG5cdHZhciBTRUxFQ1RJ
T05fUkVTVE9SQVRJT04gPSB7XG5cdCAgLyoqXG5cdCAgICogQHJldHVybiB7U2VsZWN0aW9ufSBT
ZWxlY3Rpb24gaW5mb3JtYXRpb24uXG5cdCAgICovXG5cdCAgaW5pdGlhbGl6ZTogUmVhY3RJbnB1
dFNlbGVjdGlvbi5nZXRTZWxlY3Rpb25JbmZvcm1hdGlvbixcblx0ICAvKipcblx0ICAgKiBAcGFy
YW0ge1NlbGVjdGlvbn0gc2VsIFNlbGVjdGlvbiBpbmZvcm1hdGlvbiByZXR1cm5lZCBmcm9tIGBp
bml0aWFsaXplYC5cblx0ICAgKi9cblx0ICBjbG9zZTogUmVhY3RJbnB1dFNlbGVjdGlvbi5yZXN0
b3JlU2VsZWN0aW9uXG5cdH07XG5cdFxuXHQvKipcblx0ICogU3VwcHJlc3NlcyBldmVudHMgKGJs
dXIvZm9jdXMpIHRoYXQgY291bGQgYmUgaW5hZHZlcnRlbnRseSBkaXNwYXRjaGVkIGR1ZSB0b1xu
XHQgKiBoaWdoIGxldmVsIERPTSBtYW5pcHVsYXRpb25zIChsaWtlIHRlbXBvcmFyaWx5IHJlbW92
aW5nIGEgdGV4dCBpbnB1dCBmcm9tIHRoZVxuXHQgKiBET00pLlxuXHQgKi9cblx0dmFyIEVWRU5U
X1NVUFBSRVNTSU9OID0ge1xuXHQgIC8qKlxuXHQgICAqIEByZXR1cm4ge2Jvb2xlYW59IFRoZSBl
bmFibGVkIHN0YXR1cyBvZiBgUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyYCBiZWZvcmVcblx0ICAg
KiB0aGUgcmVjb25jaWxpYXRpb24uXG5cdCAgICovXG5cdCAgaW5pdGlhbGl6ZTogZnVuY3Rpb24g
KCkge1xuXHQgICAgdmFyIGN1cnJlbnRseUVuYWJsZWQgPSBSZWFjdEJyb3dzZXJFdmVudEVtaXR0
ZXIuaXNFbmFibGVkKCk7XG5cdCAgICBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIuc2V0RW5hYmxl
ZChmYWxzZSk7XG5cdCAgICByZXR1cm4gY3VycmVudGx5RW5hYmxlZDtcblx0ICB9LFxuXHRcblx0
ICAvKipcblx0ICAgKiBAcGFyYW0ge2Jvb2xlYW59IHByZXZpb3VzbHlFbmFibGVkIEVuYWJsZWQg
c3RhdHVzIG9mXG5cdCAgICogICBgUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyYCBiZWZvcmUgdGhl
IHJlY29uY2lsaWF0aW9uIG9jY3VycmVkLiBgY2xvc2VgXG5cdCAgICogICByZXN0b3JlcyB0aGUg
cHJldmlvdXMgdmFsdWUuXG5cdCAgICovXG5cdCAgY2xvc2U6IGZ1bmN0aW9uIChwcmV2aW91c2x5
RW5hYmxlZCkge1xuXHQgICAgUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLnNldEVuYWJsZWQocHJl
dmlvdXNseUVuYWJsZWQpO1xuXHQgIH1cblx0fTtcblx0XG5cdC8qKlxuXHQgKiBQcm92aWRlcyBh
IHF1ZXVlIGZvciBjb2xsZWN0aW5nIGBjb21wb25lbnREaWRNb3VudGAgYW5kXG5cdCAqIGBjb21w
b25lbnREaWRVcGRhdGVgIGNhbGxiYWNrcyBkdXJpbmcgdGhlIHRyYW5zYWN0aW9uLlxuXHQgKi9c
blx0dmFyIE9OX0RPTV9SRUFEWV9RVUVVRUlORyA9IHtcblx0ICAvKipcblx0ICAgKiBJbml0aWFs
aXplcyB0aGUgaW50ZXJuYWwgYG9uRE9NUmVhZHlgIHF1ZXVlLlxuXHQgICAqL1xuXHQgIGluaXRp
YWxpemU6IGZ1bmN0aW9uICgpIHtcblx0ICAgIHRoaXMucmVhY3RNb3VudFJlYWR5LnJlc2V0KCk7
XG5cdCAgfSxcblx0XG5cdCAgLyoqXG5cdCAgICogQWZ0ZXIgRE9NIGlzIGZsdXNoZWQsIGludm9r
ZSBhbGwgcmVnaXN0ZXJlZCBgb25ET01SZWFkeWAgY2FsbGJhY2tzLlxuXHQgICAqL1xuXHQgIGNs
b3NlOiBmdW5jdGlvbiAoKSB7XG5cdCAgICB0aGlzLnJlYWN0TW91bnRSZWFkeS5ub3RpZnlBbGwo
KTtcblx0ICB9XG5cdH07XG5cdFxuXHQvKipcblx0ICogRXhlY3V0ZWQgd2l0aGluIHRoZSBzY29w
ZSBvZiB0aGUgYFRyYW5zYWN0aW9uYCBpbnN0YW5jZS4gQ29uc2lkZXIgdGhlc2UgYXNcblx0ICog
YmVpbmcgbWVtYmVyIG1ldGhvZHMsIGJ1dCB3aXRoIGFuIGltcGxpZWQgb3JkZXJpbmcgd2hpbGUg
YmVpbmcgaXNvbGF0ZWQgZnJvbVxuXHQgKiBlYWNoIG90aGVyLlxuXHQgKi9cblx0dmFyIFRSQU5T
QUNUSU9OX1dSQVBQRVJTID0gW1NFTEVDVElPTl9SRVNUT1JBVElPTiwgRVZFTlRfU1VQUFJFU1NJ
T04sIE9OX0RPTV9SRUFEWV9RVUVVRUlOR107XG5cdFxuXHRpZiAoZmFsc2UpIHtcblx0ICBUUkFO
U0FDVElPTl9XUkFQUEVSUy5wdXNoKHtcblx0ICAgIGluaXRpYWxpemU6IFJlYWN0SW5zdHJ1bWVu
dGF0aW9uLmRlYnVnVG9vbC5vbkJlZ2luRmx1c2gsXG5cdCAgICBjbG9zZTogUmVhY3RJbnN0cnVt
ZW50YXRpb24uZGVidWdUb29sLm9uRW5kRmx1c2hcblx0ICB9KTtcblx0fVxuXHRcblx0LyoqXG5c
dCAqIEN1cnJlbnRseTpcblx0ICogLSBUaGUgb3JkZXIgdGhhdCB0aGVzZSBhcmUgbGlzdGVkIGlu
IHRoZSB0cmFuc2FjdGlvbiBpcyBjcml0aWNhbDpcblx0ICogLSBTdXBwcmVzc2VzIGV2ZW50cy5c
blx0ICogLSBSZXN0b3JlcyBzZWxlY3Rpb24gcmFuZ2UuXG5cdCAqXG5cdCAqIEZ1dHVyZTpcblx0
ICogLSBSZXN0b3JlIGRvY3VtZW50L292ZXJmbG93IHNjcm9sbCBwb3NpdGlvbnMgdGhhdCB3ZXJl
IHVuaW50ZW50aW9uYWxseVxuXHQgKiAgIG1vZGlmaWVkIHZpYSBET00gaW5zZXJ0aW9ucyBhYm92
ZSB0aGUgdG9wIHZpZXdwb3J0IGJvdW5kYXJ5LlxuXHQgKiAtIEltcGxlbWVudC9pbnRlZ3JhdGUg
d2l0aCBjdXN0b21pemVkIGNvbnN0cmFpbnQgYmFzZWQgbGF5b3V0IHN5c3RlbSBhbmQga2VlcFxu
XHQgKiAgIHRyYWNrIG9mIHdoaWNoIGRpbWVuc2lvbnMgbXVzdCBiZSByZW1lYXN1cmVkLlxuXHQg
KlxuXHQgKiBAY2xhc3MgUmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvblxuXHQgKi9cblx0ZnVuY3Rp
b24gUmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbih1c2VDcmVhdGVFbGVtZW50KSB7XG5cdCAgdGhp
cy5yZWluaXRpYWxpemVUcmFuc2FjdGlvbigpO1xuXHQgIC8vIE9ubHkgc2VydmVyLXNpZGUgcmVu
ZGVyaW5nIHJlYWxseSBuZWVkcyB0aGlzIG9wdGlvbiAoc2VlXG5cdCAgLy8gYFJlYWN0U2VydmVy
UmVuZGVyaW5nYCksIGJ1dCBzZXJ2ZXItc2lkZSB1c2VzXG5cdCAgLy8gYFJlYWN0U2VydmVyUmVu
ZGVyaW5nVHJhbnNhY3Rpb25gIGluc3RlYWQuIFRoaXMgb3B0aW9uIGlzIGhlcmUgc28gdGhhdCBp
dCdzXG5cdCAgLy8gYWNjZXNzaWJsZSBhbmQgZGVmYXVsdHMgdG8gZmFsc2Ugd2hlbiBgUmVhY3RE
T01Db21wb25lbnRgIGFuZFxuXHQgIC8vIGBSZWFjdERPTVRleHRDb21wb25lbnRgIGNoZWNrcyBp
dCBpbiBgbW91bnRDb21wb25lbnRgLmBcblx0ICB0aGlzLnJlbmRlclRvU3RhdGljTWFya3VwID0g
ZmFsc2U7XG5cdCAgdGhpcy5yZWFjdE1vdW50UmVhZHkgPSBDYWxsYmFja1F1ZXVlLmdldFBvb2xl
ZChudWxsKTtcblx0ICB0aGlzLnVzZUNyZWF0ZUVsZW1lbnQgPSB1c2VDcmVhdGVFbGVtZW50O1xu
XHR9XG5cdFxuXHR2YXIgTWl4aW4gPSB7XG5cdCAgLyoqXG5cdCAgICogQHNlZSBUcmFuc2FjdGlv
blxuXHQgICAqIEBhYnN0cmFjdFxuXHQgICAqIEBmaW5hbFxuXHQgICAqIEByZXR1cm4ge2FycmF5
PG9iamVjdD59IExpc3Qgb2Ygb3BlcmF0aW9uIHdyYXAgcHJvY2VkdXJlcy5cblx0ICAgKiAgIFRP
RE86IGNvbnZlcnQgdG8gYXJyYXk8VHJhbnNhY3Rpb25XcmFwcGVyPlxuXHQgICAqL1xuXHQgIGdl
dFRyYW5zYWN0aW9uV3JhcHBlcnM6IGZ1bmN0aW9uICgpIHtcblx0ICAgIHJldHVybiBUUkFOU0FD
VElPTl9XUkFQUEVSUztcblx0ICB9LFxuXHRcblx0ICAvKipcblx0ICAgKiBAcmV0dXJuIHtvYmpl
Y3R9IFRoZSBxdWV1ZSB0byBjb2xsZWN0IGBvbkRPTVJlYWR5YCBjYWxsYmFja3Mgd2l0aC5cblx0
ICAgKi9cblx0ICBnZXRSZWFjdE1vdW50UmVhZHk6IGZ1bmN0aW9uICgpIHtcblx0ICAgIHJldHVy
biB0aGlzLnJlYWN0TW91bnRSZWFkeTtcblx0ICB9LFxuXHRcblx0ICAvKipcblx0ICAgKiBAcmV0
dXJuIHtvYmplY3R9IFRoZSBxdWV1ZSB0byBjb2xsZWN0IFJlYWN0IGFzeW5jIGV2ZW50cy5cblx0
ICAgKi9cblx0ICBnZXRVcGRhdGVRdWV1ZTogZnVuY3Rpb24gKCkge1xuXHQgICAgcmV0dXJuIFJl
YWN0VXBkYXRlUXVldWU7XG5cdCAgfSxcblx0XG5cdCAgLyoqXG5cdCAgICogU2F2ZSBjdXJyZW50
IHRyYW5zYWN0aW9uIHN0YXRlIC0tIGlmIHRoZSByZXR1cm4gdmFsdWUgZnJvbSB0aGlzIG1ldGhv
ZCBpc1xuXHQgICAqIHBhc3NlZCB0byBgcm9sbGJhY2tgLCB0aGUgdHJhbnNhY3Rpb24gd2lsbCBi
ZSByZXNldCB0byB0aGF0IHN0YXRlLlxuXHQgICAqL1xuXHQgIGNoZWNrcG9pbnQ6IGZ1bmN0aW9u
ICgpIHtcblx0ICAgIC8vIHJlYWN0TW91bnRSZWFkeSBpcyB0aGUgb3VyIG9ubHkgc3RhdGVmdWwg
d3JhcHBlclxuXHQgICAgcmV0dXJuIHRoaXMucmVhY3RNb3VudFJlYWR5LmNoZWNrcG9pbnQoKTtc
blx0ICB9LFxuXHRcblx0ICByb2xsYmFjazogZnVuY3Rpb24gKGNoZWNrcG9pbnQpIHtcblx0ICAg
IHRoaXMucmVhY3RNb3VudFJlYWR5LnJvbGxiYWNrKGNoZWNrcG9pbnQpO1xuXHQgIH0sXG5cdFxu
XHQgIC8qKlxuXHQgICAqIGBQb29sZWRDbGFzc2AgbG9va3MgZm9yIHRoaXMsIGFuZCB3aWxsIGlu
dm9rZSB0aGlzIGJlZm9yZSBhbGxvd2luZyB0aGlzXG5cdCAgICogaW5zdGFuY2UgdG8gYmUgcmV1
c2VkLlxuXHQgICAqL1xuXHQgIGRlc3RydWN0b3I6IGZ1bmN0aW9uICgpIHtcblx0ICAgIENhbGxi
YWNrUXVldWUucmVsZWFzZSh0aGlzLnJlYWN0TW91bnRSZWFkeSk7XG5cdCAgICB0aGlzLnJlYWN0
TW91bnRSZWFkeSA9IG51bGw7XG5cdCAgfVxuXHR9O1xuXHRcblx0X2Fzc2lnbihSZWFjdFJlY29u
Y2lsZVRyYW5zYWN0aW9uLnByb3RvdHlwZSwgVHJhbnNhY3Rpb24sIE1peGluKTtcblx0XG5cdFBv
b2xlZENsYXNzLmFkZFBvb2xpbmdUbyhSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9uKTtcblx0XG5c
dG1vZHVsZS5leHBvcnRzID0gUmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbjtcblxuLyoqKi8gfSxc
bi8qIDE2MCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVx
dWlyZV9fKSB7XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29r
LCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNl
IGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRo
ZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNl
IHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUg
Zm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5c
dCAqIFxuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdHZhciBSZWFjdE93bmVyID0g
X193ZWJwYWNrX3JlcXVpcmVfXygxNTcpO1xuXHRcblx0dmFyIFJlYWN0UmVmID0ge307XG5cdFxu
XHRmdW5jdGlvbiBhdHRhY2hSZWYocmVmLCBjb21wb25lbnQsIG93bmVyKSB7XG5cdCAgaWYgKHR5
cGVvZiByZWYgPT09ICdmdW5jdGlvbicpIHtcblx0ICAgIHJlZihjb21wb25lbnQuZ2V0UHVibGlj
SW5zdGFuY2UoKSk7XG5cdCAgfSBlbHNlIHtcblx0ICAgIC8vIExlZ2FjeSByZWZcblx0ICAgIFJl
YWN0T3duZXIuYWRkQ29tcG9uZW50QXNSZWZUbyhjb21wb25lbnQsIHJlZiwgb3duZXIpO1xuXHQg
IH1cblx0fVxuXHRcblx0ZnVuY3Rpb24gZGV0YWNoUmVmKHJlZiwgY29tcG9uZW50LCBvd25lcikg
e1xuXHQgIGlmICh0eXBlb2YgcmVmID09PSAnZnVuY3Rpb24nKSB7XG5cdCAgICByZWYobnVsbCk7
XG5cdCAgfSBlbHNlIHtcblx0ICAgIC8vIExlZ2FjeSByZWZcblx0ICAgIFJlYWN0T3duZXIucmVt
b3ZlQ29tcG9uZW50QXNSZWZGcm9tKGNvbXBvbmVudCwgcmVmLCBvd25lcik7XG5cdCAgfVxuXHR9
XG5cdFxuXHRSZWFjdFJlZi5hdHRhY2hSZWZzID0gZnVuY3Rpb24gKGluc3RhbmNlLCBlbGVtZW50
KSB7XG5cdCAgaWYgKGVsZW1lbnQgPT09IG51bGwgfHwgdHlwZW9mIGVsZW1lbnQgIT09ICdvYmpl
Y3QnKSB7XG5cdCAgICByZXR1cm47XG5cdCAgfVxuXHQgIHZhciByZWYgPSBlbGVtZW50LnJlZjtc
blx0ICBpZiAocmVmICE9IG51bGwpIHtcblx0ICAgIGF0dGFjaFJlZihyZWYsIGluc3RhbmNlLCBl
bGVtZW50Ll9vd25lcik7XG5cdCAgfVxuXHR9O1xuXHRcblx0UmVhY3RSZWYuc2hvdWxkVXBkYXRl
UmVmcyA9IGZ1bmN0aW9uIChwcmV2RWxlbWVudCwgbmV4dEVsZW1lbnQpIHtcblx0ICAvLyBJZiBl
aXRoZXIgdGhlIG93bmVyIG9yIGEgYHJlZmAgaGFzIGNoYW5nZWQsIG1ha2Ugc3VyZSB0aGUgbmV3
ZXN0IG93bmVyXG5cdCAgLy8gaGFzIHN0b3JlZCBhIHJlZmVyZW5jZSB0byBgdGhpc2AsIGFuZCB0
aGUgcHJldmlvdXMgb3duZXIgKGlmIGRpZmZlcmVudClcblx0ICAvLyBoYXMgZm9yZ290dGVuIHRo
ZSByZWZlcmVuY2UgdG8gYHRoaXNgLiBXZSB1c2UgdGhlIGVsZW1lbnQgaW5zdGVhZFxuXHQgIC8v
IG9mIHRoZSBwdWJsaWMgdGhpcy5wcm9wcyBiZWNhdXNlIHRoZSBwb3N0IHByb2Nlc3NpbmcgY2Fu
bm90IGRldGVybWluZVxuXHQgIC8vIGEgcmVmLiBUaGUgcmVmIGNvbmNlcHR1YWxseSBsaXZlcyBv
biB0aGUgZWxlbWVudC5cblx0XG5cdCAgLy8gVE9ETzogU2hvdWxkIHRoaXMgZXZlbiBiZSBwb3Nz
aWJsZT8gVGhlIG93bmVyIGNhbm5vdCBjaGFuZ2UgYmVjYXVzZVxuXHQgIC8vIGl0J3MgZm9yYmlk
ZGVuIGJ5IHNob3VsZFVwZGF0ZVJlYWN0Q29tcG9uZW50LiBUaGUgcmVmIGNhbiBjaGFuZ2Vcblx0
ICAvLyBpZiB5b3Ugc3dhcCB0aGUga2V5cyBvZiBidXQgbm90IHRoZSByZWZzLiBSZWNvbnNpZGVy
IHdoZXJlIHRoaXMgY2hlY2tcblx0ICAvLyBpcyBtYWRlLiBJdCBwcm9iYWJseSBiZWxvbmdzIHdo
ZXJlIHRoZSBrZXkgY2hlY2tpbmcgYW5kXG5cdCAgLy8gaW5zdGFudGlhdGVSZWFjdENvbXBvbmVu
dCBpcyBkb25lLlxuXHRcblx0ICB2YXIgcHJldlJlZiA9IG51bGw7XG5cdCAgdmFyIHByZXZPd25l
ciA9IG51bGw7XG5cdCAgaWYgKHByZXZFbGVtZW50ICE9PSBudWxsICYmIHR5cGVvZiBwcmV2RWxl
bWVudCA9PT0gJ29iamVjdCcpIHtcblx0ICAgIHByZXZSZWYgPSBwcmV2RWxlbWVudC5yZWY7XG5c
dCAgICBwcmV2T3duZXIgPSBwcmV2RWxlbWVudC5fb3duZXI7XG5cdCAgfVxuXHRcblx0ICB2YXIg
bmV4dFJlZiA9IG51bGw7XG5cdCAgdmFyIG5leHRPd25lciA9IG51bGw7XG5cdCAgaWYgKG5leHRF
bGVtZW50ICE9PSBudWxsICYmIHR5cGVvZiBuZXh0RWxlbWVudCA9PT0gJ29iamVjdCcpIHtcblx0
ICAgIG5leHRSZWYgPSBuZXh0RWxlbWVudC5yZWY7XG5cdCAgICBuZXh0T3duZXIgPSBuZXh0RWxl
bWVudC5fb3duZXI7XG5cdCAgfVxuXHRcblx0ICByZXR1cm4gcHJldlJlZiAhPT0gbmV4dFJlZiB8
fFxuXHQgIC8vIElmIG93bmVyIGNoYW5nZXMgYnV0IHdlIGhhdmUgYW4gdW5jaGFuZ2VkIGZ1bmN0
aW9uIHJlZiwgZG9uJ3QgdXBkYXRlIHJlZnNcblx0ICB0eXBlb2YgbmV4dFJlZiA9PT0gJ3N0cmlu
ZycgJiYgbmV4dE93bmVyICE9PSBwcmV2T3duZXI7XG5cdH07XG5cdFxuXHRSZWFjdFJlZi5kZXRh
Y2hSZWZzID0gZnVuY3Rpb24gKGluc3RhbmNlLCBlbGVtZW50KSB7XG5cdCAgaWYgKGVsZW1lbnQg
PT09IG51bGwgfHwgdHlwZW9mIGVsZW1lbnQgIT09ICdvYmplY3QnKSB7XG5cdCAgICByZXR1cm47
XG5cdCAgfVxuXHQgIHZhciByZWYgPSBlbGVtZW50LnJlZjtcblx0ICBpZiAocmVmICE9IG51bGwp
IHtcblx0ICAgIGRldGFjaFJlZihyZWYsIGluc3RhbmNlLCBlbGVtZW50Ll9vd25lcik7XG5cdCAg
fVxuXHR9O1xuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBSZWFjdFJlZjtcblxuLyoqKi8gfSxcbi8q
IDE2MSAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWly
ZV9fKSB7XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQsIEZhY2Vib29rLCBJ
bmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNv
ZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxu
XHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRy
ZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91
bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAq
L1xuXHRcblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0dmFyIF9hc3NpZ24gPSBfX3dlYnBhY2tfcmVx
dWlyZV9fKDQpO1xuXHRcblx0dmFyIFBvb2xlZENsYXNzID0gX193ZWJwYWNrX3JlcXVpcmVfXygx
Myk7XG5cdHZhciBUcmFuc2FjdGlvbiA9IF9fd2VicGFja19yZXF1aXJlX18oMjcpO1xuXHR2YXIg
UmVhY3RJbnN0cnVtZW50YXRpb24gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDgpO1xuXHR2YXIgUmVh
Y3RTZXJ2ZXJVcGRhdGVRdWV1ZSA9IF9fd2VicGFja19yZXF1aXJlX18oMTYyKTtcblx0XG5cdC8q
KlxuXHQgKiBFeGVjdXRlZCB3aXRoaW4gdGhlIHNjb3BlIG9mIHRoZSBgVHJhbnNhY3Rpb25gIGlu
c3RhbmNlLiBDb25zaWRlciB0aGVzZSBhc1xuXHQgKiBiZWluZyBtZW1iZXIgbWV0aG9kcywgYnV0
IHdpdGggYW4gaW1wbGllZCBvcmRlcmluZyB3aGlsZSBiZWluZyBpc29sYXRlZCBmcm9tXG5cdCAq
IGVhY2ggb3RoZXIuXG5cdCAqL1xuXHR2YXIgVFJBTlNBQ1RJT05fV1JBUFBFUlMgPSBbXTtcblx0
XG5cdGlmIChmYWxzZSkge1xuXHQgIFRSQU5TQUNUSU9OX1dSQVBQRVJTLnB1c2goe1xuXHQgICAg
aW5pdGlhbGl6ZTogUmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9uQmVnaW5GbHVzaCxc
blx0ICAgIGNsb3NlOiBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25FbmRGbHVzaFxu
XHQgIH0pO1xuXHR9XG5cdFxuXHR2YXIgbm9vcENhbGxiYWNrUXVldWUgPSB7XG5cdCAgZW5xdWV1
ZTogZnVuY3Rpb24gKCkge31cblx0fTtcblx0XG5cdC8qKlxuXHQgKiBAY2xhc3MgUmVhY3RTZXJ2
ZXJSZW5kZXJpbmdUcmFuc2FjdGlvblxuXHQgKiBAcGFyYW0ge2Jvb2xlYW59IHJlbmRlclRvU3Rh
dGljTWFya3VwXG5cdCAqL1xuXHRmdW5jdGlvbiBSZWFjdFNlcnZlclJlbmRlcmluZ1RyYW5zYWN0
aW9uKHJlbmRlclRvU3RhdGljTWFya3VwKSB7XG5cdCAgdGhpcy5yZWluaXRpYWxpemVUcmFuc2Fj
dGlvbigpO1xuXHQgIHRoaXMucmVuZGVyVG9TdGF0aWNNYXJrdXAgPSByZW5kZXJUb1N0YXRpY01h
cmt1cDtcblx0ICB0aGlzLnVzZUNyZWF0ZUVsZW1lbnQgPSBmYWxzZTtcblx0ICB0aGlzLnVwZGF0
ZVF1ZXVlID0gbmV3IFJlYWN0U2VydmVyVXBkYXRlUXVldWUodGhpcyk7XG5cdH1cblx0XG5cdHZh
ciBNaXhpbiA9IHtcblx0ICAvKipcblx0ICAgKiBAc2VlIFRyYW5zYWN0aW9uXG5cdCAgICogQGFi
c3RyYWN0XG5cdCAgICogQGZpbmFsXG5cdCAgICogQHJldHVybiB7YXJyYXl9IEVtcHR5IGxpc3Qg
b2Ygb3BlcmF0aW9uIHdyYXAgcHJvY2VkdXJlcy5cblx0ICAgKi9cblx0ICBnZXRUcmFuc2FjdGlv
bldyYXBwZXJzOiBmdW5jdGlvbiAoKSB7XG5cdCAgICByZXR1cm4gVFJBTlNBQ1RJT05fV1JBUFBF
UlM7XG5cdCAgfSxcblx0XG5cdCAgLyoqXG5cdCAgICogQHJldHVybiB7b2JqZWN0fSBUaGUgcXVl
dWUgdG8gY29sbGVjdCBgb25ET01SZWFkeWAgY2FsbGJhY2tzIHdpdGguXG5cdCAgICovXG5cdCAg
Z2V0UmVhY3RNb3VudFJlYWR5OiBmdW5jdGlvbiAoKSB7XG5cdCAgICByZXR1cm4gbm9vcENhbGxi
YWNrUXVldWU7XG5cdCAgfSxcblx0XG5cdCAgLyoqXG5cdCAgICogQHJldHVybiB7b2JqZWN0fSBU
aGUgcXVldWUgdG8gY29sbGVjdCBSZWFjdCBhc3luYyBldmVudHMuXG5cdCAgICovXG5cdCAgZ2V0
VXBkYXRlUXVldWU6IGZ1bmN0aW9uICgpIHtcblx0ICAgIHJldHVybiB0aGlzLnVwZGF0ZVF1ZXVl
O1xuXHQgIH0sXG5cdFxuXHQgIC8qKlxuXHQgICAqIGBQb29sZWRDbGFzc2AgbG9va3MgZm9yIHRo
aXMsIGFuZCB3aWxsIGludm9rZSB0aGlzIGJlZm9yZSBhbGxvd2luZyB0aGlzXG5cdCAgICogaW5z
dGFuY2UgdG8gYmUgcmV1c2VkLlxuXHQgICAqL1xuXHQgIGRlc3RydWN0b3I6IGZ1bmN0aW9uICgp
IHt9LFxuXHRcblx0ICBjaGVja3BvaW50OiBmdW5jdGlvbiAoKSB7fSxcblx0XG5cdCAgcm9sbGJh
Y2s6IGZ1bmN0aW9uICgpIHt9XG5cdH07XG5cdFxuXHRfYXNzaWduKFJlYWN0U2VydmVyUmVuZGVy
aW5nVHJhbnNhY3Rpb24ucHJvdG90eXBlLCBUcmFuc2FjdGlvbiwgTWl4aW4pO1xuXHRcblx0UG9v
bGVkQ2xhc3MuYWRkUG9vbGluZ1RvKFJlYWN0U2VydmVyUmVuZGVyaW5nVHJhbnNhY3Rpb24pO1xu
XHRcblx0bW9kdWxlLmV4cG9ydHMgPSBSZWFjdFNlcnZlclJlbmRlcmluZ1RyYW5zYWN0aW9uO1xu
XG4vKioqLyB9LFxuLyogMTYyICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9f
d2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvKipcblx0ICogQ29weXJpZ2h0IDIwMTUtcHJlc2Vu
dCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICog
VGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2Ug
Zm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2Yg
dGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmln
aHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9y
eS5cblx0ICpcblx0ICogXG5cdCAqL1xuXHRcblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0ZnVuY3Rp
b24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5j
ZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90
IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpOyB9IH1cblx0XG5cdHZhciBSZWFjdFVwZGF0
ZVF1ZXVlID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0Mik7XG5cdFxuXHR2YXIgd2FybmluZyA9IF9f
d2VicGFja19yZXF1aXJlX18oMik7XG5cdFxuXHRmdW5jdGlvbiB3YXJuTm9vcChwdWJsaWNJbnN0
YW5jZSwgY2FsbGVyTmFtZSkge1xuXHQgIGlmIChmYWxzZSkge1xuXHQgICAgdmFyIGNvbnN0cnVj
dG9yID0gcHVibGljSW5zdGFuY2UuY29uc3RydWN0b3I7XG5cdCAgICBwcm9jZXNzLmVudi5OT0RF
X0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJyVzKC4uLik6IENhbiBvbmx5
IHVwZGF0ZSBhIG1vdW50aW5nIGNvbXBvbmVudC4gJyArICdUaGlzIHVzdWFsbHkgbWVhbnMgeW91
IGNhbGxlZCAlcygpIG91dHNpZGUgY29tcG9uZW50V2lsbE1vdW50KCkgb24gdGhlIHNlcnZlci4g
JyArICdUaGlzIGlzIGEgbm8tb3AuIFBsZWFzZSBjaGVjayB0aGUgY29kZSBmb3IgdGhlICVzIGNv
bXBvbmVudC4nLCBjYWxsZXJOYW1lLCBjYWxsZXJOYW1lLCBjb25zdHJ1Y3RvciAmJiAoY29uc3Ry
dWN0b3IuZGlzcGxheU5hbWUgfHwgY29uc3RydWN0b3IubmFtZSkgfHwgJ1JlYWN0Q2xhc3MnKSA6
IHZvaWQgMDtcblx0ICB9XG5cdH1cblx0XG5cdC8qKlxuXHQgKiBUaGlzIGlzIHRoZSB1cGRhdGUg
cXVldWUgdXNlZCBmb3Igc2VydmVyIHJlbmRlcmluZy5cblx0ICogSXQgZGVsZWdhdGVzIHRvIFJl
YWN0VXBkYXRlUXVldWUgd2hpbGUgc2VydmVyIHJlbmRlcmluZyBpcyBpbiBwcm9ncmVzcyBhbmRc
blx0ICogc3dpdGNoZXMgdG8gUmVhY3ROb29wVXBkYXRlUXVldWUgYWZ0ZXIgdGhlIHRyYW5zYWN0
aW9uIGhhcyBjb21wbGV0ZWQuXG5cdCAqIEBjbGFzcyBSZWFjdFNlcnZlclVwZGF0ZVF1ZXVlXG5c
dCAqIEBwYXJhbSB7VHJhbnNhY3Rpb259IHRyYW5zYWN0aW9uXG5cdCAqL1xuXHRcblx0dmFyIFJl
YWN0U2VydmVyVXBkYXRlUXVldWUgPSBmdW5jdGlvbiAoKSB7XG5cdCAgZnVuY3Rpb24gUmVhY3RT
ZXJ2ZXJVcGRhdGVRdWV1ZSh0cmFuc2FjdGlvbikge1xuXHQgICAgX2NsYXNzQ2FsbENoZWNrKHRo
aXMsIFJlYWN0U2VydmVyVXBkYXRlUXVldWUpO1xuXHRcblx0ICAgIHRoaXMudHJhbnNhY3Rpb24g
PSB0cmFuc2FjdGlvbjtcblx0ICB9XG5cdFxuXHQgIC8qKlxuXHQgICAqIENoZWNrcyB3aGV0aGVy
IG9yIG5vdCB0aGlzIGNvbXBvc2l0ZSBjb21wb25lbnQgaXMgbW91bnRlZC5cblx0ICAgKiBAcGFy
YW0ge1JlYWN0Q2xhc3N9IHB1YmxpY0luc3RhbmNlIFRoZSBpbnN0YW5jZSB3ZSB3YW50IHRvIHRl
c3QuXG5cdCAgICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBpZiBtb3VudGVkLCBmYWxzZSBvdGhl
cndpc2UuXG5cdCAgICogQHByb3RlY3RlZFxuXHQgICAqIEBmaW5hbFxuXHQgICAqL1xuXHRcblx0
XG5cdCAgUmVhY3RTZXJ2ZXJVcGRhdGVRdWV1ZS5wcm90b3R5cGUuaXNNb3VudGVkID0gZnVuY3Rp
b24gaXNNb3VudGVkKHB1YmxpY0luc3RhbmNlKSB7XG5cdCAgICByZXR1cm4gZmFsc2U7XG5cdCAg
fTtcblx0XG5cdCAgLyoqXG5cdCAgICogRW5xdWV1ZSBhIGNhbGxiYWNrIHRoYXQgd2lsbCBiZSBl
eGVjdXRlZCBhZnRlciBhbGwgdGhlIHBlbmRpbmcgdXBkYXRlc1xuXHQgICAqIGhhdmUgcHJvY2Vz
c2VkLlxuXHQgICAqXG5cdCAgICogQHBhcmFtIHtSZWFjdENsYXNzfSBwdWJsaWNJbnN0YW5jZSBU
aGUgaW5zdGFuY2UgdG8gdXNlIGFzIGB0aGlzYCBjb250ZXh0LlxuXHQgICAqIEBwYXJhbSB7P2Z1
bmN0aW9ufSBjYWxsYmFjayBDYWxsZWQgYWZ0ZXIgc3RhdGUgaXMgdXBkYXRlZC5cblx0ICAgKiBA
aW50ZXJuYWxcblx0ICAgKi9cblx0XG5cdFxuXHQgIFJlYWN0U2VydmVyVXBkYXRlUXVldWUucHJv
dG90eXBlLmVucXVldWVDYWxsYmFjayA9IGZ1bmN0aW9uIGVucXVldWVDYWxsYmFjayhwdWJsaWNJ
bnN0YW5jZSwgY2FsbGJhY2ssIGNhbGxlck5hbWUpIHtcblx0ICAgIGlmICh0aGlzLnRyYW5zYWN0
aW9uLmlzSW5UcmFuc2FjdGlvbigpKSB7XG5cdCAgICAgIFJlYWN0VXBkYXRlUXVldWUuZW5xdWV1
ZUNhbGxiYWNrKHB1YmxpY0luc3RhbmNlLCBjYWxsYmFjaywgY2FsbGVyTmFtZSk7XG5cdCAgICB9
XG5cdCAgfTtcblx0XG5cdCAgLyoqXG5cdCAgICogRm9yY2VzIGFuIHVwZGF0ZS4gVGhpcyBzaG91
bGQgb25seSBiZSBpbnZva2VkIHdoZW4gaXQgaXMga25vd24gd2l0aFxuXHQgICAqIGNlcnRhaW50
eSB0aGF0IHdlIGFyZSAqKm5vdCoqIGluIGEgRE9NIHRyYW5zYWN0aW9uLlxuXHQgICAqXG5cdCAg
ICogWW91IG1heSB3YW50IHRvIGNhbGwgdGhpcyB3aGVuIHlvdSBrbm93IHRoYXQgc29tZSBkZWVw
ZXIgYXNwZWN0IG9mIHRoZVxuXHQgICAqIGNvbXBvbmVudCdzIHN0YXRlIGhhcyBjaGFuZ2VkIGJ1
dCBgc2V0U3RhdGVgIHdhcyBub3QgY2FsbGVkLlxuXHQgICAqXG5cdCAgICogVGhpcyB3aWxsIG5v
dCBpbnZva2UgYHNob3VsZENvbXBvbmVudFVwZGF0ZWAsIGJ1dCBpdCB3aWxsIGludm9rZVxuXHQg
ICAqIGBjb21wb25lbnRXaWxsVXBkYXRlYCBhbmQgYGNvbXBvbmVudERpZFVwZGF0ZWAuXG5cdCAg
ICpcblx0ICAgKiBAcGFyYW0ge1JlYWN0Q2xhc3N9IHB1YmxpY0luc3RhbmNlIFRoZSBpbnN0YW5j
ZSB0aGF0IHNob3VsZCByZXJlbmRlci5cblx0ICAgKiBAaW50ZXJuYWxcblx0ICAgKi9cblx0XG5c
dFxuXHQgIFJlYWN0U2VydmVyVXBkYXRlUXVldWUucHJvdG90eXBlLmVucXVldWVGb3JjZVVwZGF0
ZSA9IGZ1bmN0aW9uIGVucXVldWVGb3JjZVVwZGF0ZShwdWJsaWNJbnN0YW5jZSkge1xuXHQgICAg
aWYgKHRoaXMudHJhbnNhY3Rpb24uaXNJblRyYW5zYWN0aW9uKCkpIHtcblx0ICAgICAgUmVhY3RV
cGRhdGVRdWV1ZS5lbnF1ZXVlRm9yY2VVcGRhdGUocHVibGljSW5zdGFuY2UpO1xuXHQgICAgfSBl
bHNlIHtcblx0ICAgICAgd2Fybk5vb3AocHVibGljSW5zdGFuY2UsICdmb3JjZVVwZGF0ZScpO1xu
XHQgICAgfVxuXHQgIH07XG5cdFxuXHQgIC8qKlxuXHQgICAqIFJlcGxhY2VzIGFsbCBvZiB0aGUg
c3RhdGUuIEFsd2F5cyB1c2UgdGhpcyBvciBgc2V0U3RhdGVgIHRvIG11dGF0ZSBzdGF0ZS5cblx0
ICAgKiBZb3Ugc2hvdWxkIHRyZWF0IGB0aGlzLnN0YXRlYCBhcyBpbW11dGFibGUuXG5cdCAgICpc
blx0ICAgKiBUaGVyZSBpcyBubyBndWFyYW50ZWUgdGhhdCBgdGhpcy5zdGF0ZWAgd2lsbCBiZSBp
bW1lZGlhdGVseSB1cGRhdGVkLCBzb1xuXHQgICAqIGFjY2Vzc2luZyBgdGhpcy5zdGF0ZWAgYWZ0
ZXIgY2FsbGluZyB0aGlzIG1ldGhvZCBtYXkgcmV0dXJuIHRoZSBvbGQgdmFsdWUuXG5cdCAgICpc
blx0ICAgKiBAcGFyYW0ge1JlYWN0Q2xhc3N9IHB1YmxpY0luc3RhbmNlIFRoZSBpbnN0YW5jZSB0
aGF0IHNob3VsZCByZXJlbmRlci5cblx0ICAgKiBAcGFyYW0ge29iamVjdHxmdW5jdGlvbn0gY29t
cGxldGVTdGF0ZSBOZXh0IHN0YXRlLlxuXHQgICAqIEBpbnRlcm5hbFxuXHQgICAqL1xuXHRcblx0
XG5cdCAgUmVhY3RTZXJ2ZXJVcGRhdGVRdWV1ZS5wcm90b3R5cGUuZW5xdWV1ZVJlcGxhY2VTdGF0
ZSA9IGZ1bmN0aW9uIGVucXVldWVSZXBsYWNlU3RhdGUocHVibGljSW5zdGFuY2UsIGNvbXBsZXRl
U3RhdGUpIHtcblx0ICAgIGlmICh0aGlzLnRyYW5zYWN0aW9uLmlzSW5UcmFuc2FjdGlvbigpKSB7
XG5cdCAgICAgIFJlYWN0VXBkYXRlUXVldWUuZW5xdWV1ZVJlcGxhY2VTdGF0ZShwdWJsaWNJbnN0
YW5jZSwgY29tcGxldGVTdGF0ZSk7XG5cdCAgICB9IGVsc2Uge1xuXHQgICAgICB3YXJuTm9vcChw
dWJsaWNJbnN0YW5jZSwgJ3JlcGxhY2VTdGF0ZScpO1xuXHQgICAgfVxuXHQgIH07XG5cdFxuXHQg
IC8qKlxuXHQgICAqIFNldHMgYSBzdWJzZXQgb2YgdGhlIHN0YXRlLiBUaGlzIG9ubHkgZXhpc3Rz
IGJlY2F1c2UgX3BlbmRpbmdTdGF0ZSBpc1xuXHQgICAqIGludGVybmFsLiBUaGlzIHByb3ZpZGVz
IGEgbWVyZ2luZyBzdHJhdGVneSB0aGF0IGlzIG5vdCBhdmFpbGFibGUgdG8gZGVlcFxuXHQgICAq
IHByb3BlcnRpZXMgd2hpY2ggaXMgY29uZnVzaW5nLiBUT0RPOiBFeHBvc2UgcGVuZGluZ1N0YXRl
IG9yIGRvbid0IHVzZSBpdFxuXHQgICAqIGR1cmluZyB0aGUgbWVyZ2UuXG5cdCAgICpcblx0ICAg
KiBAcGFyYW0ge1JlYWN0Q2xhc3N9IHB1YmxpY0luc3RhbmNlIFRoZSBpbnN0YW5jZSB0aGF0IHNo
b3VsZCByZXJlbmRlci5cblx0ICAgKiBAcGFyYW0ge29iamVjdHxmdW5jdGlvbn0gcGFydGlhbFN0
YXRlIE5leHQgcGFydGlhbCBzdGF0ZSB0byBiZSBtZXJnZWQgd2l0aCBzdGF0ZS5cblx0ICAgKiBA
aW50ZXJuYWxcblx0ICAgKi9cblx0XG5cdFxuXHQgIFJlYWN0U2VydmVyVXBkYXRlUXVldWUucHJv
dG90eXBlLmVucXVldWVTZXRTdGF0ZSA9IGZ1bmN0aW9uIGVucXVldWVTZXRTdGF0ZShwdWJsaWNJ
bnN0YW5jZSwgcGFydGlhbFN0YXRlKSB7XG5cdCAgICBpZiAodGhpcy50cmFuc2FjdGlvbi5pc0lu
VHJhbnNhY3Rpb24oKSkge1xuXHQgICAgICBSZWFjdFVwZGF0ZVF1ZXVlLmVucXVldWVTZXRTdGF0
ZShwdWJsaWNJbnN0YW5jZSwgcGFydGlhbFN0YXRlKTtcblx0ICAgIH0gZWxzZSB7XG5cdCAgICAg
IHdhcm5Ob29wKHB1YmxpY0luc3RhbmNlLCAnc2V0U3RhdGUnKTtcblx0ICAgIH1cblx0ICB9O1xu
XHRcblx0ICByZXR1cm4gUmVhY3RTZXJ2ZXJVcGRhdGVRdWV1ZTtcblx0fSgpO1xuXHRcblx0bW9k
dWxlLmV4cG9ydHMgPSBSZWFjdFNlcnZlclVwZGF0ZVF1ZXVlO1xuXG4vKioqLyB9LFxuLyogMTYz
ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuXHQvKipcblx0ICogQ29w
eXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNl
cnZlZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUg
QlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUg
cm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxu
XHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGlu
IHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpcblx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5c
dFxuXHRtb2R1bGUuZXhwb3J0cyA9ICcxNS42LjEnO1xuXG4vKioqLyB9LFxuLyogMTY0ICovXG4v
KioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuXHQvKipcblx0ICogQ29weXJpZ2h0
IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5c
blx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0
eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBk
aXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBv
ZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBz
YW1lIGRpcmVjdG9yeS5cblx0ICpcblx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHR2
YXIgTlMgPSB7XG5cdCAgeGxpbms6ICdodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rJyxcblx0
ICB4bWw6ICdodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1lc3BhY2UnXG5cdH07XG5cdFxu
XHQvLyBXZSB1c2UgYXR0cmlidXRlcyBmb3IgZXZlcnl0aGluZyBTVkcgc28gbGV0J3MgYXZvaWQg
c29tZSBkdXBsaWNhdGlvbiBhbmQgcnVuXG5cdC8vIGNvZGUgaW5zdGVhZC5cblx0Ly8gVGhlIGZv
bGxvd2luZyBhcmUgYWxsIHNwZWNpZmllZCBpbiB0aGUgSFRNTCBjb25maWcgYWxyZWFkeSBzbyB3
ZSBleGNsdWRlIGhlcmUuXG5cdC8vIC0gY2xhc3MgKGFzIGNsYXNzTmFtZSlcblx0Ly8gLSBjb2xv
clxuXHQvLyAtIGhlaWdodFxuXHQvLyAtIGlkXG5cdC8vIC0gbGFuZ1xuXHQvLyAtIG1heFxuXHQv
LyAtIG1lZGlhXG5cdC8vIC0gbWV0aG9kXG5cdC8vIC0gbWluXG5cdC8vIC0gbmFtZVxuXHQvLyAt
IHN0eWxlXG5cdC8vIC0gdGFyZ2V0XG5cdC8vIC0gdHlwZVxuXHQvLyAtIHdpZHRoXG5cdHZhciBB
VFRSUyA9IHtcblx0ICBhY2NlbnRIZWlnaHQ6ICdhY2NlbnQtaGVpZ2h0Jyxcblx0ICBhY2N1bXVs
YXRlOiAwLFxuXHQgIGFkZGl0aXZlOiAwLFxuXHQgIGFsaWdubWVudEJhc2VsaW5lOiAnYWxpZ25t
ZW50LWJhc2VsaW5lJyxcblx0ICBhbGxvd1Jlb3JkZXI6ICdhbGxvd1Jlb3JkZXInLFxuXHQgIGFs
cGhhYmV0aWM6IDAsXG5cdCAgYW1wbGl0dWRlOiAwLFxuXHQgIGFyYWJpY0Zvcm06ICdhcmFiaWMt
Zm9ybScsXG5cdCAgYXNjZW50OiAwLFxuXHQgIGF0dHJpYnV0ZU5hbWU6ICdhdHRyaWJ1dGVOYW1l
Jyxcblx0ICBhdHRyaWJ1dGVUeXBlOiAnYXR0cmlidXRlVHlwZScsXG5cdCAgYXV0b1JldmVyc2U6
ICdhdXRvUmV2ZXJzZScsXG5cdCAgYXppbXV0aDogMCxcblx0ICBiYXNlRnJlcXVlbmN5OiAnYmFz
ZUZyZXF1ZW5jeScsXG5cdCAgYmFzZVByb2ZpbGU6ICdiYXNlUHJvZmlsZScsXG5cdCAgYmFzZWxp
bmVTaGlmdDogJ2Jhc2VsaW5lLXNoaWZ0Jyxcblx0ICBiYm94OiAwLFxuXHQgIGJlZ2luOiAwLFxu
XHQgIGJpYXM6IDAsXG5cdCAgYnk6IDAsXG5cdCAgY2FsY01vZGU6ICdjYWxjTW9kZScsXG5cdCAg
Y2FwSGVpZ2h0OiAnY2FwLWhlaWdodCcsXG5cdCAgY2xpcDogMCxcblx0ICBjbGlwUGF0aDogJ2Ns
aXAtcGF0aCcsXG5cdCAgY2xpcFJ1bGU6ICdjbGlwLXJ1bGUnLFxuXHQgIGNsaXBQYXRoVW5pdHM6
ICdjbGlwUGF0aFVuaXRzJyxcblx0ICBjb2xvckludGVycG9sYXRpb246ICdjb2xvci1pbnRlcnBv
bGF0aW9uJyxcblx0ICBjb2xvckludGVycG9sYXRpb25GaWx0ZXJzOiAnY29sb3ItaW50ZXJwb2xh
dGlvbi1maWx0ZXJzJyxcblx0ICBjb2xvclByb2ZpbGU6ICdjb2xvci1wcm9maWxlJyxcblx0ICBj
b2xvclJlbmRlcmluZzogJ2NvbG9yLXJlbmRlcmluZycsXG5cdCAgY29udGVudFNjcmlwdFR5cGU6
ICdjb250ZW50U2NyaXB0VHlwZScsXG5cdCAgY29udGVudFN0eWxlVHlwZTogJ2NvbnRlbnRTdHls
ZVR5cGUnLFxuXHQgIGN1cnNvcjogMCxcblx0ICBjeDogMCxcblx0ICBjeTogMCxcblx0ICBkOiAw
LFxuXHQgIGRlY2VsZXJhdGU6IDAsXG5cdCAgZGVzY2VudDogMCxcblx0ICBkaWZmdXNlQ29uc3Rh
bnQ6ICdkaWZmdXNlQ29uc3RhbnQnLFxuXHQgIGRpcmVjdGlvbjogMCxcblx0ICBkaXNwbGF5OiAw
LFxuXHQgIGRpdmlzb3I6IDAsXG5cdCAgZG9taW5hbnRCYXNlbGluZTogJ2RvbWluYW50LWJhc2Vs
aW5lJyxcblx0ICBkdXI6IDAsXG5cdCAgZHg6IDAsXG5cdCAgZHk6IDAsXG5cdCAgZWRnZU1vZGU6
ICdlZGdlTW9kZScsXG5cdCAgZWxldmF0aW9uOiAwLFxuXHQgIGVuYWJsZUJhY2tncm91bmQ6ICdl
bmFibGUtYmFja2dyb3VuZCcsXG5cdCAgZW5kOiAwLFxuXHQgIGV4cG9uZW50OiAwLFxuXHQgIGV4
dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6ICdleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkJyxcblx0
ICBmaWxsOiAwLFxuXHQgIGZpbGxPcGFjaXR5OiAnZmlsbC1vcGFjaXR5Jyxcblx0ICBmaWxsUnVs
ZTogJ2ZpbGwtcnVsZScsXG5cdCAgZmlsdGVyOiAwLFxuXHQgIGZpbHRlclJlczogJ2ZpbHRlclJl
cycsXG5cdCAgZmlsdGVyVW5pdHM6ICdmaWx0ZXJVbml0cycsXG5cdCAgZmxvb2RDb2xvcjogJ2Zs
b29kLWNvbG9yJyxcblx0ICBmbG9vZE9wYWNpdHk6ICdmbG9vZC1vcGFjaXR5Jyxcblx0ICBmb2N1
c2FibGU6IDAsXG5cdCAgZm9udEZhbWlseTogJ2ZvbnQtZmFtaWx5Jyxcblx0ICBmb250U2l6ZTog
J2ZvbnQtc2l6ZScsXG5cdCAgZm9udFNpemVBZGp1c3Q6ICdmb250LXNpemUtYWRqdXN0Jyxcblx0
ICBmb250U3RyZXRjaDogJ2ZvbnQtc3RyZXRjaCcsXG5cdCAgZm9udFN0eWxlOiAnZm9udC1zdHls
ZScsXG5cdCAgZm9udFZhcmlhbnQ6ICdmb250LXZhcmlhbnQnLFxuXHQgIGZvbnRXZWlnaHQ6ICdm
b250LXdlaWdodCcsXG5cdCAgZm9ybWF0OiAwLFxuXHQgIGZyb206IDAsXG5cdCAgZng6IDAsXG5c
dCAgZnk6IDAsXG5cdCAgZzE6IDAsXG5cdCAgZzI6IDAsXG5cdCAgZ2x5cGhOYW1lOiAnZ2x5cGgt
bmFtZScsXG5cdCAgZ2x5cGhPcmllbnRhdGlvbkhvcml6b250YWw6ICdnbHlwaC1vcmllbnRhdGlv
bi1ob3Jpem9udGFsJyxcblx0ICBnbHlwaE9yaWVudGF0aW9uVmVydGljYWw6ICdnbHlwaC1vcmll
bnRhdGlvbi12ZXJ0aWNhbCcsXG5cdCAgZ2x5cGhSZWY6ICdnbHlwaFJlZicsXG5cdCAgZ3JhZGll
bnRUcmFuc2Zvcm06ICdncmFkaWVudFRyYW5zZm9ybScsXG5cdCAgZ3JhZGllbnRVbml0czogJ2dy
YWRpZW50VW5pdHMnLFxuXHQgIGhhbmdpbmc6IDAsXG5cdCAgaG9yaXpBZHZYOiAnaG9yaXotYWR2
LXgnLFxuXHQgIGhvcml6T3JpZ2luWDogJ2hvcml6LW9yaWdpbi14Jyxcblx0ICBpZGVvZ3JhcGhp
YzogMCxcblx0ICBpbWFnZVJlbmRlcmluZzogJ2ltYWdlLXJlbmRlcmluZycsXG5cdCAgJ2luJzog
MCxcblx0ICBpbjI6IDAsXG5cdCAgaW50ZXJjZXB0OiAwLFxuXHQgIGs6IDAsXG5cdCAgazE6IDAs
XG5cdCAgazI6IDAsXG5cdCAgazM6IDAsXG5cdCAgazQ6IDAsXG5cdCAga2VybmVsTWF0cml4OiAn
a2VybmVsTWF0cml4Jyxcblx0ICBrZXJuZWxVbml0TGVuZ3RoOiAna2VybmVsVW5pdExlbmd0aCcs
XG5cdCAga2VybmluZzogMCxcblx0ICBrZXlQb2ludHM6ICdrZXlQb2ludHMnLFxuXHQgIGtleVNw
bGluZXM6ICdrZXlTcGxpbmVzJyxcblx0ICBrZXlUaW1lczogJ2tleVRpbWVzJyxcblx0ICBsZW5n
dGhBZGp1c3Q6ICdsZW5ndGhBZGp1c3QnLFxuXHQgIGxldHRlclNwYWNpbmc6ICdsZXR0ZXItc3Bh
Y2luZycsXG5cdCAgbGlnaHRpbmdDb2xvcjogJ2xpZ2h0aW5nLWNvbG9yJyxcblx0ICBsaW1pdGlu
Z0NvbmVBbmdsZTogJ2xpbWl0aW5nQ29uZUFuZ2xlJyxcblx0ICBsb2NhbDogMCxcblx0ICBtYXJr
ZXJFbmQ6ICdtYXJrZXItZW5kJyxcblx0ICBtYXJrZXJNaWQ6ICdtYXJrZXItbWlkJyxcblx0ICBt
YXJrZXJTdGFydDogJ21hcmtlci1zdGFydCcsXG5cdCAgbWFya2VySGVpZ2h0OiAnbWFya2VySGVp
Z2h0Jyxcblx0ICBtYXJrZXJVbml0czogJ21hcmtlclVuaXRzJyxcblx0ICBtYXJrZXJXaWR0aDog
J21hcmtlcldpZHRoJyxcblx0ICBtYXNrOiAwLFxuXHQgIG1hc2tDb250ZW50VW5pdHM6ICdtYXNr
Q29udGVudFVuaXRzJyxcblx0ICBtYXNrVW5pdHM6ICdtYXNrVW5pdHMnLFxuXHQgIG1hdGhlbWF0
aWNhbDogMCxcblx0ICBtb2RlOiAwLFxuXHQgIG51bU9jdGF2ZXM6ICdudW1PY3RhdmVzJyxcblx0
ICBvZmZzZXQ6IDAsXG5cdCAgb3BhY2l0eTogMCxcblx0ICBvcGVyYXRvcjogMCxcblx0ICBvcmRl
cjogMCxcblx0ICBvcmllbnQ6IDAsXG5cdCAgb3JpZW50YXRpb246IDAsXG5cdCAgb3JpZ2luOiAw
LFxuXHQgIG92ZXJmbG93OiAwLFxuXHQgIG92ZXJsaW5lUG9zaXRpb246ICdvdmVybGluZS1wb3Np
dGlvbicsXG5cdCAgb3ZlcmxpbmVUaGlja25lc3M6ICdvdmVybGluZS10aGlja25lc3MnLFxuXHQg
IHBhaW50T3JkZXI6ICdwYWludC1vcmRlcicsXG5cdCAgcGFub3NlMTogJ3Bhbm9zZS0xJyxcblx0
ICBwYXRoTGVuZ3RoOiAncGF0aExlbmd0aCcsXG5cdCAgcGF0dGVybkNvbnRlbnRVbml0czogJ3Bh
dHRlcm5Db250ZW50VW5pdHMnLFxuXHQgIHBhdHRlcm5UcmFuc2Zvcm06ICdwYXR0ZXJuVHJhbnNm
b3JtJyxcblx0ICBwYXR0ZXJuVW5pdHM6ICdwYXR0ZXJuVW5pdHMnLFxuXHQgIHBvaW50ZXJFdmVu
dHM6ICdwb2ludGVyLWV2ZW50cycsXG5cdCAgcG9pbnRzOiAwLFxuXHQgIHBvaW50c0F0WDogJ3Bv
aW50c0F0WCcsXG5cdCAgcG9pbnRzQXRZOiAncG9pbnRzQXRZJyxcblx0ICBwb2ludHNBdFo6ICdw
b2ludHNBdFonLFxuXHQgIHByZXNlcnZlQWxwaGE6ICdwcmVzZXJ2ZUFscGhhJyxcblx0ICBwcmVz
ZXJ2ZUFzcGVjdFJhdGlvOiAncHJlc2VydmVBc3BlY3RSYXRpbycsXG5cdCAgcHJpbWl0aXZlVW5p
dHM6ICdwcmltaXRpdmVVbml0cycsXG5cdCAgcjogMCxcblx0ICByYWRpdXM6IDAsXG5cdCAgcmVm
WDogJ3JlZlgnLFxuXHQgIHJlZlk6ICdyZWZZJyxcblx0ICByZW5kZXJpbmdJbnRlbnQ6ICdyZW5k
ZXJpbmctaW50ZW50Jyxcblx0ICByZXBlYXRDb3VudDogJ3JlcGVhdENvdW50Jyxcblx0ICByZXBl
YXREdXI6ICdyZXBlYXREdXInLFxuXHQgIHJlcXVpcmVkRXh0ZW5zaW9uczogJ3JlcXVpcmVkRXh0
ZW5zaW9ucycsXG5cdCAgcmVxdWlyZWRGZWF0dXJlczogJ3JlcXVpcmVkRmVhdHVyZXMnLFxuXHQg
IHJlc3RhcnQ6IDAsXG5cdCAgcmVzdWx0OiAwLFxuXHQgIHJvdGF0ZTogMCxcblx0ICByeDogMCxc
blx0ICByeTogMCxcblx0ICBzY2FsZTogMCxcblx0ICBzZWVkOiAwLFxuXHQgIHNoYXBlUmVuZGVy
aW5nOiAnc2hhcGUtcmVuZGVyaW5nJyxcblx0ICBzbG9wZTogMCxcblx0ICBzcGFjaW5nOiAwLFxu
XHQgIHNwZWN1bGFyQ29uc3RhbnQ6ICdzcGVjdWxhckNvbnN0YW50Jyxcblx0ICBzcGVjdWxhckV4
cG9uZW50OiAnc3BlY3VsYXJFeHBvbmVudCcsXG5cdCAgc3BlZWQ6IDAsXG5cdCAgc3ByZWFkTWV0
aG9kOiAnc3ByZWFkTWV0aG9kJyxcblx0ICBzdGFydE9mZnNldDogJ3N0YXJ0T2Zmc2V0Jyxcblx0
ICBzdGREZXZpYXRpb246ICdzdGREZXZpYXRpb24nLFxuXHQgIHN0ZW1oOiAwLFxuXHQgIHN0ZW12
OiAwLFxuXHQgIHN0aXRjaFRpbGVzOiAnc3RpdGNoVGlsZXMnLFxuXHQgIHN0b3BDb2xvcjogJ3N0
b3AtY29sb3InLFxuXHQgIHN0b3BPcGFjaXR5OiAnc3RvcC1vcGFjaXR5Jyxcblx0ICBzdHJpa2V0
aHJvdWdoUG9zaXRpb246ICdzdHJpa2V0aHJvdWdoLXBvc2l0aW9uJyxcblx0ICBzdHJpa2V0aHJv
dWdoVGhpY2tuZXNzOiAnc3RyaWtldGhyb3VnaC10aGlja25lc3MnLFxuXHQgIHN0cmluZzogMCxc
blx0ICBzdHJva2U6IDAsXG5cdCAgc3Ryb2tlRGFzaGFycmF5OiAnc3Ryb2tlLWRhc2hhcnJheScs
XG5cdCAgc3Ryb2tlRGFzaG9mZnNldDogJ3N0cm9rZS1kYXNob2Zmc2V0Jyxcblx0ICBzdHJva2VM
aW5lY2FwOiAnc3Ryb2tlLWxpbmVjYXAnLFxuXHQgIHN0cm9rZUxpbmVqb2luOiAnc3Ryb2tlLWxp
bmVqb2luJyxcblx0ICBzdHJva2VNaXRlcmxpbWl0OiAnc3Ryb2tlLW1pdGVybGltaXQnLFxuXHQg
IHN0cm9rZU9wYWNpdHk6ICdzdHJva2Utb3BhY2l0eScsXG5cdCAgc3Ryb2tlV2lkdGg6ICdzdHJv
a2Utd2lkdGgnLFxuXHQgIHN1cmZhY2VTY2FsZTogJ3N1cmZhY2VTY2FsZScsXG5cdCAgc3lzdGVt
TGFuZ3VhZ2U6ICdzeXN0ZW1MYW5ndWFnZScsXG5cdCAgdGFibGVWYWx1ZXM6ICd0YWJsZVZhbHVl
cycsXG5cdCAgdGFyZ2V0WDogJ3RhcmdldFgnLFxuXHQgIHRhcmdldFk6ICd0YXJnZXRZJyxcblx0
ICB0ZXh0QW5jaG9yOiAndGV4dC1hbmNob3InLFxuXHQgIHRleHREZWNvcmF0aW9uOiAndGV4dC1k
ZWNvcmF0aW9uJyxcblx0ICB0ZXh0UmVuZGVyaW5nOiAndGV4dC1yZW5kZXJpbmcnLFxuXHQgIHRl
eHRMZW5ndGg6ICd0ZXh0TGVuZ3RoJyxcblx0ICB0bzogMCxcblx0ICB0cmFuc2Zvcm06IDAsXG5c
dCAgdTE6IDAsXG5cdCAgdTI6IDAsXG5cdCAgdW5kZXJsaW5lUG9zaXRpb246ICd1bmRlcmxpbmUt
cG9zaXRpb24nLFxuXHQgIHVuZGVybGluZVRoaWNrbmVzczogJ3VuZGVybGluZS10aGlja25lc3Mn
LFxuXHQgIHVuaWNvZGU6IDAsXG5cdCAgdW5pY29kZUJpZGk6ICd1bmljb2RlLWJpZGknLFxuXHQg
IHVuaWNvZGVSYW5nZTogJ3VuaWNvZGUtcmFuZ2UnLFxuXHQgIHVuaXRzUGVyRW06ICd1bml0cy1w
ZXItZW0nLFxuXHQgIHZBbHBoYWJldGljOiAndi1hbHBoYWJldGljJyxcblx0ICB2SGFuZ2luZzog
J3YtaGFuZ2luZycsXG5cdCAgdklkZW9ncmFwaGljOiAndi1pZGVvZ3JhcGhpYycsXG5cdCAgdk1h
dGhlbWF0aWNhbDogJ3YtbWF0aGVtYXRpY2FsJyxcblx0ICB2YWx1ZXM6IDAsXG5cdCAgdmVjdG9y
RWZmZWN0OiAndmVjdG9yLWVmZmVjdCcsXG5cdCAgdmVyc2lvbjogMCxcblx0ICB2ZXJ0QWR2WTog
J3ZlcnQtYWR2LXknLFxuXHQgIHZlcnRPcmlnaW5YOiAndmVydC1vcmlnaW4teCcsXG5cdCAgdmVy
dE9yaWdpblk6ICd2ZXJ0LW9yaWdpbi15Jyxcblx0ICB2aWV3Qm94OiAndmlld0JveCcsXG5cdCAg
dmlld1RhcmdldDogJ3ZpZXdUYXJnZXQnLFxuXHQgIHZpc2liaWxpdHk6IDAsXG5cdCAgd2lkdGhz
OiAwLFxuXHQgIHdvcmRTcGFjaW5nOiAnd29yZC1zcGFjaW5nJyxcblx0ICB3cml0aW5nTW9kZTog
J3dyaXRpbmctbW9kZScsXG5cdCAgeDogMCxcblx0ICB4SGVpZ2h0OiAneC1oZWlnaHQnLFxuXHQg
IHgxOiAwLFxuXHQgIHgyOiAwLFxuXHQgIHhDaGFubmVsU2VsZWN0b3I6ICd4Q2hhbm5lbFNlbGVj
dG9yJyxcblx0ICB4bGlua0FjdHVhdGU6ICd4bGluazphY3R1YXRlJyxcblx0ICB4bGlua0FyY3Jv
bGU6ICd4bGluazphcmNyb2xlJyxcblx0ICB4bGlua0hyZWY6ICd4bGluazpocmVmJyxcblx0ICB4
bGlua1JvbGU6ICd4bGluazpyb2xlJyxcblx0ICB4bGlua1Nob3c6ICd4bGluazpzaG93Jyxcblx0
ICB4bGlua1RpdGxlOiAneGxpbms6dGl0bGUnLFxuXHQgIHhsaW5rVHlwZTogJ3hsaW5rOnR5cGUn
LFxuXHQgIHhtbEJhc2U6ICd4bWw6YmFzZScsXG5cdCAgeG1sbnM6IDAsXG5cdCAgeG1sbnNYbGlu
azogJ3htbG5zOnhsaW5rJyxcblx0ICB4bWxMYW5nOiAneG1sOmxhbmcnLFxuXHQgIHhtbFNwYWNl
OiAneG1sOnNwYWNlJyxcblx0ICB5OiAwLFxuXHQgIHkxOiAwLFxuXHQgIHkyOiAwLFxuXHQgIHlD
aGFubmVsU2VsZWN0b3I6ICd5Q2hhbm5lbFNlbGVjdG9yJyxcblx0ICB6OiAwLFxuXHQgIHpvb21B
bmRQYW46ICd6b29tQW5kUGFuJ1xuXHR9O1xuXHRcblx0dmFyIFNWR0RPTVByb3BlcnR5Q29uZmln
ID0ge1xuXHQgIFByb3BlcnRpZXM6IHt9LFxuXHQgIERPTUF0dHJpYnV0ZU5hbWVzcGFjZXM6IHtc
blx0ICAgIHhsaW5rQWN0dWF0ZTogTlMueGxpbmssXG5cdCAgICB4bGlua0FyY3JvbGU6IE5TLnhs
aW5rLFxuXHQgICAgeGxpbmtIcmVmOiBOUy54bGluayxcblx0ICAgIHhsaW5rUm9sZTogTlMueGxp
bmssXG5cdCAgICB4bGlua1Nob3c6IE5TLnhsaW5rLFxuXHQgICAgeGxpbmtUaXRsZTogTlMueGxp
bmssXG5cdCAgICB4bGlua1R5cGU6IE5TLnhsaW5rLFxuXHQgICAgeG1sQmFzZTogTlMueG1sLFxu
XHQgICAgeG1sTGFuZzogTlMueG1sLFxuXHQgICAgeG1sU3BhY2U6IE5TLnhtbFxuXHQgIH0sXG5c
dCAgRE9NQXR0cmlidXRlTmFtZXM6IHt9XG5cdH07XG5cdFxuXHRPYmplY3Qua2V5cyhBVFRSUyku
Zm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG5cdCAgU1ZHRE9NUHJvcGVydHlDb25maWcuUHJvcGVy
dGllc1trZXldID0gMDtcblx0ICBpZiAoQVRUUlNba2V5XSkge1xuXHQgICAgU1ZHRE9NUHJvcGVy
dHlDb25maWcuRE9NQXR0cmlidXRlTmFtZXNba2V5XSA9IEFUVFJTW2tleV07XG5cdCAgfVxuXHR9
KTtcblx0XG5cdG1vZHVsZS5leHBvcnRzID0gU1ZHRE9NUHJvcGVydHlDb25maWc7XG5cbi8qKiov
IH0sXG4vKiAxNjUgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNr
X3JlcXVpcmVfXykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNl
Ym9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNv
dXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBp
biB0aGVcblx0ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNv
dXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2Fu
IGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQg
KlxuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdHZhciBFdmVudFByb3BhZ2F0b3Jz
ID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMCk7XG5cdHZhciBFeGVjdXRpb25FbnZpcm9ubWVudCA9
IF9fd2VicGFja19yZXF1aXJlX18oNik7XG5cdHZhciBSZWFjdERPTUNvbXBvbmVudFRyZWUgPSBf
X3dlYnBhY2tfcmVxdWlyZV9fKDUpO1xuXHR2YXIgUmVhY3RJbnB1dFNlbGVjdGlvbiA9IF9fd2Vi
cGFja19yZXF1aXJlX18oNjYpO1xuXHR2YXIgU3ludGhldGljRXZlbnQgPSBfX3dlYnBhY2tfcmVx
dWlyZV9fKDEwKTtcblx0XG5cdHZhciBnZXRBY3RpdmVFbGVtZW50ID0gX193ZWJwYWNrX3JlcXVp
cmVfXyg1Myk7XG5cdHZhciBpc1RleHRJbnB1dEVsZW1lbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9f
KDc2KTtcblx0dmFyIHNoYWxsb3dFcXVhbCA9IF9fd2VicGFja19yZXF1aXJlX18oMzIpO1xuXHRc
blx0dmFyIHNraXBTZWxlY3Rpb25DaGFuZ2VFdmVudCA9IEV4ZWN1dGlvbkVudmlyb25tZW50LmNh
blVzZURPTSAmJiAnZG9jdW1lbnRNb2RlJyBpbiBkb2N1bWVudCAmJiBkb2N1bWVudC5kb2N1bWVu
dE1vZGUgPD0gMTE7XG5cdFxuXHR2YXIgZXZlbnRUeXBlcyA9IHtcblx0ICBzZWxlY3Q6IHtcblx0
ICAgIHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOiB7XG5cdCAgICAgIGJ1YmJsZWQ6ICdvblNlbGVj
dCcsXG5cdCAgICAgIGNhcHR1cmVkOiAnb25TZWxlY3RDYXB0dXJlJ1xuXHQgICAgfSxcblx0ICAg
IGRlcGVuZGVuY2llczogWyd0b3BCbHVyJywgJ3RvcENvbnRleHRNZW51JywgJ3RvcEZvY3VzJywg
J3RvcEtleURvd24nLCAndG9wS2V5VXAnLCAndG9wTW91c2VEb3duJywgJ3RvcE1vdXNlVXAnLCAn
dG9wU2VsZWN0aW9uQ2hhbmdlJ11cblx0ICB9XG5cdH07XG5cdFxuXHR2YXIgYWN0aXZlRWxlbWVu
dCA9IG51bGw7XG5cdHZhciBhY3RpdmVFbGVtZW50SW5zdCA9IG51bGw7XG5cdHZhciBsYXN0U2Vs
ZWN0aW9uID0gbnVsbDtcblx0dmFyIG1vdXNlRG93biA9IGZhbHNlO1xuXHRcblx0Ly8gVHJhY2sg
d2hldGhlciBhIGxpc3RlbmVyIGV4aXN0cyBmb3IgdGhpcyBwbHVnaW4uIElmIG5vbmUgZXhpc3Qs
IHdlIGRvXG5cdC8vIG5vdCBleHRyYWN0IGV2ZW50cy4gU2VlICMzNjM5LlxuXHR2YXIgaGFzTGlz
dGVuZXIgPSBmYWxzZTtcblx0XG5cdC8qKlxuXHQgKiBHZXQgYW4gb2JqZWN0IHdoaWNoIGlzIGEg
dW5pcXVlIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBjdXJyZW50IHNlbGVjdGlvbi5cblx0ICpcblx0
ICogVGhlIHJldHVybiB2YWx1ZSB3aWxsIG5vdCBiZSBjb25zaXN0ZW50IGFjcm9zcyBub2RlcyBv
ciBicm93c2VycywgYnV0XG5cdCAqIHR3byBpZGVudGljYWwgc2VsZWN0aW9ucyBvbiB0aGUgc2Ft
ZSBub2RlIHdpbGwgcmV0dXJuIGlkZW50aWNhbCBvYmplY3RzLlxuXHQgKlxuXHQgKiBAcGFyYW0g
e0RPTUVsZW1lbnR9IG5vZGVcblx0ICogQHJldHVybiB7b2JqZWN0fVxuXHQgKi9cblx0ZnVuY3Rp
b24gZ2V0U2VsZWN0aW9uKG5vZGUpIHtcblx0ICBpZiAoJ3NlbGVjdGlvblN0YXJ0JyBpbiBub2Rl
ICYmIFJlYWN0SW5wdXRTZWxlY3Rpb24uaGFzU2VsZWN0aW9uQ2FwYWJpbGl0aWVzKG5vZGUpKSB7
XG5cdCAgICByZXR1cm4ge1xuXHQgICAgICBzdGFydDogbm9kZS5zZWxlY3Rpb25TdGFydCxcblx0
ICAgICAgZW5kOiBub2RlLnNlbGVjdGlvbkVuZFxuXHQgICAgfTtcblx0ICB9IGVsc2UgaWYgKHdp
bmRvdy5nZXRTZWxlY3Rpb24pIHtcblx0ICAgIHZhciBzZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCk7XG5cdCAgICByZXR1cm4ge1xuXHQgICAgICBhbmNob3JOb2RlOiBzZWxlY3Rpb24u
YW5jaG9yTm9kZSxcblx0ICAgICAgYW5jaG9yT2Zmc2V0OiBzZWxlY3Rpb24uYW5jaG9yT2Zmc2V0
LFxuXHQgICAgICBmb2N1c05vZGU6IHNlbGVjdGlvbi5mb2N1c05vZGUsXG5cdCAgICAgIGZvY3Vz
T2Zmc2V0OiBzZWxlY3Rpb24uZm9jdXNPZmZzZXRcblx0ICAgIH07XG5cdCAgfSBlbHNlIGlmIChk
b2N1bWVudC5zZWxlY3Rpb24pIHtcblx0ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LnNlbGVjdGlv
bi5jcmVhdGVSYW5nZSgpO1xuXHQgICAgcmV0dXJuIHtcblx0ICAgICAgcGFyZW50RWxlbWVudDog
cmFuZ2UucGFyZW50RWxlbWVudCgpLFxuXHQgICAgICB0ZXh0OiByYW5nZS50ZXh0LFxuXHQgICAg
ICB0b3A6IHJhbmdlLmJvdW5kaW5nVG9wLFxuXHQgICAgICBsZWZ0OiByYW5nZS5ib3VuZGluZ0xl
ZnRcblx0ICAgIH07XG5cdCAgfVxuXHR9XG5cdFxuXHQvKipcblx0ICogUG9sbCBzZWxlY3Rpb24g
dG8gc2VlIHdoZXRoZXIgaXQncyBjaGFuZ2VkLlxuXHQgKlxuXHQgKiBAcGFyYW0ge29iamVjdH0g
bmF0aXZlRXZlbnRcblx0ICogQHJldHVybiB7P1N5bnRoZXRpY0V2ZW50fVxuXHQgKi9cblx0ZnVu
Y3Rpb24gY29uc3RydWN0U2VsZWN0RXZlbnQobmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0
KSB7XG5cdCAgLy8gRW5zdXJlIHdlIGhhdmUgdGhlIHJpZ2h0IGVsZW1lbnQsIGFuZCB0aGF0IHRo
ZSB1c2VyIGlzIG5vdCBkcmFnZ2luZyBhXG5cdCAgLy8gc2VsZWN0aW9uICh0aGlzIG1hdGNoZXMg
bmF0aXZlIGBzZWxlY3RgIGV2ZW50IGJlaGF2aW9yKS4gSW4gSFRNTDUsIHNlbGVjdFxuXHQgIC8v
IGZpcmVzIG9ubHkgb24gaW5wdXQgYW5kIHRleHRhcmVhIHRodXMgaWYgdGhlcmUncyBubyBmb2N1
c2VkIGVsZW1lbnQgd2Vcblx0ICAvLyB3b24ndCBkaXNwYXRjaC5cblx0ICBpZiAobW91c2VEb3du
IHx8IGFjdGl2ZUVsZW1lbnQgPT0gbnVsbCB8fCBhY3RpdmVFbGVtZW50ICE9PSBnZXRBY3RpdmVF
bGVtZW50KCkpIHtcblx0ICAgIHJldHVybiBudWxsO1xuXHQgIH1cblx0XG5cdCAgLy8gT25seSBm
aXJlIHdoZW4gc2VsZWN0aW9uIGhhcyBhY3R1YWxseSBjaGFuZ2VkLlxuXHQgIHZhciBjdXJyZW50
U2VsZWN0aW9uID0gZ2V0U2VsZWN0aW9uKGFjdGl2ZUVsZW1lbnQpO1xuXHQgIGlmICghbGFzdFNl
bGVjdGlvbiB8fCAhc2hhbGxvd0VxdWFsKGxhc3RTZWxlY3Rpb24sIGN1cnJlbnRTZWxlY3Rpb24p
KSB7XG5cdCAgICBsYXN0U2VsZWN0aW9uID0gY3VycmVudFNlbGVjdGlvbjtcblx0XG5cdCAgICB2
YXIgc3ludGhldGljRXZlbnQgPSBTeW50aGV0aWNFdmVudC5nZXRQb29sZWQoZXZlbnRUeXBlcy5z
ZWxlY3QsIGFjdGl2ZUVsZW1lbnRJbnN0LCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQp
O1xuXHRcblx0ICAgIHN5bnRoZXRpY0V2ZW50LnR5cGUgPSAnc2VsZWN0Jztcblx0ICAgIHN5bnRo
ZXRpY0V2ZW50LnRhcmdldCA9IGFjdGl2ZUVsZW1lbnQ7XG5cdFxuXHQgICAgRXZlbnRQcm9wYWdh
dG9ycy5hY2N1bXVsYXRlVHdvUGhhc2VEaXNwYXRjaGVzKHN5bnRoZXRpY0V2ZW50KTtcblx0XG5c
dCAgICByZXR1cm4gc3ludGhldGljRXZlbnQ7XG5cdCAgfVxuXHRcblx0ICByZXR1cm4gbnVsbDtc
blx0fVxuXHRcblx0LyoqXG5cdCAqIFRoaXMgcGx1Z2luIGNyZWF0ZXMgYW4gYG9uU2VsZWN0YCBl
dmVudCB0aGF0IG5vcm1hbGl6ZXMgc2VsZWN0IGV2ZW50c1xuXHQgKiBhY3Jvc3MgZm9ybSBlbGVt
ZW50cy5cblx0ICpcblx0ICogU3VwcG9ydGVkIGVsZW1lbnRzIGFyZTpcblx0ICogLSBpbnB1dCAo
c2VlIGBpc1RleHRJbnB1dEVsZW1lbnRgKVxuXHQgKiAtIHRleHRhcmVhXG5cdCAqIC0gY29udGVu
dEVkaXRhYmxlXG5cdCAqXG5cdCAqIFRoaXMgZGlmZmVycyBmcm9tIG5hdGl2ZSBicm93c2VyIGlt
cGxlbWVudGF0aW9ucyBpbiB0aGUgZm9sbG93aW5nIHdheXM6XG5cdCAqIC0gRmlyZXMgb24gY29u
dGVudEVkaXRhYmxlIGZpZWxkcyBhcyB3ZWxsIGFzIGlucHV0cy5cblx0ICogLSBGaXJlcyBmb3Ig
Y29sbGFwc2VkIHNlbGVjdGlvbi5cblx0ICogLSBGaXJlcyBhZnRlciB1c2VyIGlucHV0LlxuXHQg
Ki9cblx0dmFyIFNlbGVjdEV2ZW50UGx1Z2luID0ge1xuXHQgIGV2ZW50VHlwZXM6IGV2ZW50VHlw
ZXMsXG5cdFxuXHQgIGV4dHJhY3RFdmVudHM6IGZ1bmN0aW9uICh0b3BMZXZlbFR5cGUsIHRhcmdl
dEluc3QsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCkge1xuXHQgICAgaWYgKCFoYXNM
aXN0ZW5lcikge1xuXHQgICAgICByZXR1cm4gbnVsbDtcblx0ICAgIH1cblx0XG5cdCAgICB2YXIg
dGFyZ2V0Tm9kZSA9IHRhcmdldEluc3QgPyBSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0Tm9kZUZy
b21JbnN0YW5jZSh0YXJnZXRJbnN0KSA6IHdpbmRvdztcblx0XG5cdCAgICBzd2l0Y2ggKHRvcExl
dmVsVHlwZSkge1xuXHQgICAgICAvLyBUcmFjayB0aGUgaW5wdXQgbm9kZSB0aGF0IGhhcyBmb2N1
cy5cblx0ICAgICAgY2FzZSAndG9wRm9jdXMnOlxuXHQgICAgICAgIGlmIChpc1RleHRJbnB1dEVs
ZW1lbnQodGFyZ2V0Tm9kZSkgfHwgdGFyZ2V0Tm9kZS5jb250ZW50RWRpdGFibGUgPT09ICd0cnVl
Jykge1xuXHQgICAgICAgICAgYWN0aXZlRWxlbWVudCA9IHRhcmdldE5vZGU7XG5cdCAgICAgICAg
ICBhY3RpdmVFbGVtZW50SW5zdCA9IHRhcmdldEluc3Q7XG5cdCAgICAgICAgICBsYXN0U2VsZWN0
aW9uID0gbnVsbDtcblx0ICAgICAgICB9XG5cdCAgICAgICAgYnJlYWs7XG5cdCAgICAgIGNhc2Ug
J3RvcEJsdXInOlxuXHQgICAgICAgIGFjdGl2ZUVsZW1lbnQgPSBudWxsO1xuXHQgICAgICAgIGFj
dGl2ZUVsZW1lbnRJbnN0ID0gbnVsbDtcblx0ICAgICAgICBsYXN0U2VsZWN0aW9uID0gbnVsbDtc
blx0ICAgICAgICBicmVhaztcblx0ICAgICAgLy8gRG9uJ3QgZmlyZSB0aGUgZXZlbnQgd2hpbGUg
dGhlIHVzZXIgaXMgZHJhZ2dpbmcuIFRoaXMgbWF0Y2hlcyB0aGVcblx0ICAgICAgLy8gc2VtYW50
aWNzIG9mIHRoZSBuYXRpdmUgc2VsZWN0IGV2ZW50LlxuXHQgICAgICBjYXNlICd0b3BNb3VzZURv
d24nOlxuXHQgICAgICAgIG1vdXNlRG93biA9IHRydWU7XG5cdCAgICAgICAgYnJlYWs7XG5cdCAg
ICAgIGNhc2UgJ3RvcENvbnRleHRNZW51Jzpcblx0ICAgICAgY2FzZSAndG9wTW91c2VVcCc6XG5c
dCAgICAgICAgbW91c2VEb3duID0gZmFsc2U7XG5cdCAgICAgICAgcmV0dXJuIGNvbnN0cnVjdFNl
bGVjdEV2ZW50KG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCk7XG5cdCAgICAgIC8vIENo
cm9tZSBhbmQgSUUgZmlyZSBub24tc3RhbmRhcmQgZXZlbnQgd2hlbiBzZWxlY3Rpb24gaXMgY2hh
bmdlZCAoYW5kXG5cdCAgICAgIC8vIHNvbWV0aW1lcyB3aGVuIGl0IGhhc24ndCkuIElFJ3MgZXZl
bnQgZmlyZXMgb3V0IG9mIG9yZGVyIHdpdGggcmVzcGVjdFxuXHQgICAgICAvLyB0byBrZXkgYW5k
IGlucHV0IGV2ZW50cyBvbiBkZWxldGlvbiwgc28gd2UgZGlzY2FyZCBpdC5cblx0ICAgICAgLy9c
blx0ICAgICAgLy8gRmlyZWZveCBkb2Vzbid0IHN1cHBvcnQgc2VsZWN0aW9uY2hhbmdlLCBzbyBj
aGVjayBzZWxlY3Rpb24gc3RhdHVzXG5cdCAgICAgIC8vIGFmdGVyIGVhY2gga2V5IGVudHJ5LiBU
aGUgc2VsZWN0aW9uIGNoYW5nZXMgYWZ0ZXIga2V5ZG93biBhbmQgYmVmb3JlXG5cdCAgICAgIC8v
IGtleXVwLCBidXQgd2UgY2hlY2sgb24ga2V5ZG93biBhcyB3ZWxsIGluIHRoZSBjYXNlIG9mIGhv
bGRpbmcgZG93biBhXG5cdCAgICAgIC8vIGtleSwgd2hlbiBtdWx0aXBsZSBrZXlkb3duIGV2ZW50
cyBhcmUgZmlyZWQgYnV0IG9ubHkgb25lIGtleXVwIGlzLlxuXHQgICAgICAvLyBUaGlzIGlzIGFs
c28gb3VyIGFwcHJvYWNoIGZvciBJRSBoYW5kbGluZywgZm9yIHRoZSByZWFzb24gYWJvdmUuXG5c
dCAgICAgIGNhc2UgJ3RvcFNlbGVjdGlvbkNoYW5nZSc6XG5cdCAgICAgICAgaWYgKHNraXBTZWxl
Y3Rpb25DaGFuZ2VFdmVudCkge1xuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgfVxuXHQg
ICAgICAvLyBmYWxscyB0aHJvdWdoXG5cdCAgICAgIGNhc2UgJ3RvcEtleURvd24nOlxuXHQgICAg
ICBjYXNlICd0b3BLZXlVcCc6XG5cdCAgICAgICAgcmV0dXJuIGNvbnN0cnVjdFNlbGVjdEV2ZW50
KG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCk7XG5cdCAgICB9XG5cdFxuXHQgICAgcmV0
dXJuIG51bGw7XG5cdCAgfSxcblx0XG5cdCAgZGlkUHV0TGlzdGVuZXI6IGZ1bmN0aW9uIChpbnN0
LCByZWdpc3RyYXRpb25OYW1lLCBsaXN0ZW5lcikge1xuXHQgICAgaWYgKHJlZ2lzdHJhdGlvbk5h
bWUgPT09ICdvblNlbGVjdCcpIHtcblx0ICAgICAgaGFzTGlzdGVuZXIgPSB0cnVlO1xuXHQgICAg
fVxuXHQgIH1cblx0fTtcblx0XG5cdG1vZHVsZS5leHBvcnRzID0gU2VsZWN0RXZlbnRQbHVnaW47
XG5cbi8qKiovIH0sXG4vKiAxNjYgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywg
X193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxMy1wcmVz
ZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQg
KiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5z
ZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBv
ZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCBy
aWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0
b3J5LlxuXHQgKlxuXHQgKiBcblx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHR2YXIg
X3Byb2RJbnZhcmlhbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMpO1xuXHRcblx0dmFyIEV2ZW50
TGlzdGVuZXIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDUxKTtcblx0dmFyIEV2ZW50UHJvcGFnYXRv
cnMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIwKTtcblx0dmFyIFJlYWN0RE9NQ29tcG9uZW50VHJl
ZSA9IF9fd2VicGFja19yZXF1aXJlX18oNSk7XG5cdHZhciBTeW50aGV0aWNBbmltYXRpb25FdmVu
dCA9IF9fd2VicGFja19yZXF1aXJlX18oMTY3KTtcblx0dmFyIFN5bnRoZXRpY0NsaXBib2FyZEV2
ZW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNjgpO1xuXHR2YXIgU3ludGhldGljRXZlbnQgPSBf
X3dlYnBhY2tfcmVxdWlyZV9fKDEwKTtcblx0dmFyIFN5bnRoZXRpY0ZvY3VzRXZlbnQgPSBfX3dl
YnBhY2tfcmVxdWlyZV9fKDE3MSk7XG5cdHZhciBTeW50aGV0aWNLZXlib2FyZEV2ZW50ID0gX193
ZWJwYWNrX3JlcXVpcmVfXygxNzMpO1xuXHR2YXIgU3ludGhldGljTW91c2VFdmVudCA9IF9fd2Vi
cGFja19yZXF1aXJlX18oMjYpO1xuXHR2YXIgU3ludGhldGljRHJhZ0V2ZW50ID0gX193ZWJwYWNr
X3JlcXVpcmVfXygxNzApO1xuXHR2YXIgU3ludGhldGljVG91Y2hFdmVudCA9IF9fd2VicGFja19y
ZXF1aXJlX18oMTc0KTtcblx0dmFyIFN5bnRoZXRpY1RyYW5zaXRpb25FdmVudCA9IF9fd2VicGFj
a19yZXF1aXJlX18oMTc1KTtcblx0dmFyIFN5bnRoZXRpY1VJRXZlbnQgPSBfX3dlYnBhY2tfcmVx
dWlyZV9fKDIyKTtcblx0dmFyIFN5bnRoZXRpY1doZWVsRXZlbnQgPSBfX3dlYnBhY2tfcmVxdWly
ZV9fKDE3Nik7XG5cdFxuXHR2YXIgZW1wdHlGdW5jdGlvbiA9IF9fd2VicGFja19yZXF1aXJlX18o
Nyk7XG5cdHZhciBnZXRFdmVudENoYXJDb2RlID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0NCk7XG5c
dHZhciBpbnZhcmlhbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEpO1xuXHRcblx0LyoqXG5cdCAq
IFR1cm5zXG5cdCAqIFsnYWJvcnQnLCAuLi5dXG5cdCAqIGludG9cblx0ICogZXZlbnRUeXBlcyA9
IHtcblx0ICogICAnYWJvcnQnOiB7XG5cdCAqICAgICBwaGFzZWRSZWdpc3RyYXRpb25OYW1lczog
e1xuXHQgKiAgICAgICBidWJibGVkOiAnb25BYm9ydCcsXG5cdCAqICAgICAgIGNhcHR1cmVkOiAn
b25BYm9ydENhcHR1cmUnLFxuXHQgKiAgICAgfSxcblx0ICogICAgIGRlcGVuZGVuY2llczogWyd0
b3BBYm9ydCddLFxuXHQgKiAgIH0sXG5cdCAqICAgLi4uXG5cdCAqIH07XG5cdCAqIHRvcExldmVs
RXZlbnRzVG9EaXNwYXRjaENvbmZpZyA9IHtcblx0ICogICAndG9wQWJvcnQnOiB7IHNhbWVDb25m
aWcgfVxuXHQgKiB9O1xuXHQgKi9cblx0dmFyIGV2ZW50VHlwZXMgPSB7fTtcblx0dmFyIHRvcExl
dmVsRXZlbnRzVG9EaXNwYXRjaENvbmZpZyA9IHt9O1xuXHRbJ2Fib3J0JywgJ2FuaW1hdGlvbkVu
ZCcsICdhbmltYXRpb25JdGVyYXRpb24nLCAnYW5pbWF0aW9uU3RhcnQnLCAnYmx1cicsICdjYW5Q
bGF5JywgJ2NhblBsYXlUaHJvdWdoJywgJ2NsaWNrJywgJ2NvbnRleHRNZW51JywgJ2NvcHknLCAn
Y3V0JywgJ2RvdWJsZUNsaWNrJywgJ2RyYWcnLCAnZHJhZ0VuZCcsICdkcmFnRW50ZXInLCAnZHJh
Z0V4aXQnLCAnZHJhZ0xlYXZlJywgJ2RyYWdPdmVyJywgJ2RyYWdTdGFydCcsICdkcm9wJywgJ2R1
cmF0aW9uQ2hhbmdlJywgJ2VtcHRpZWQnLCAnZW5jcnlwdGVkJywgJ2VuZGVkJywgJ2Vycm9yJywg
J2ZvY3VzJywgJ2lucHV0JywgJ2ludmFsaWQnLCAna2V5RG93bicsICdrZXlQcmVzcycsICdrZXlV
cCcsICdsb2FkJywgJ2xvYWRlZERhdGEnLCAnbG9hZGVkTWV0YWRhdGEnLCAnbG9hZFN0YXJ0Jywg
J21vdXNlRG93bicsICdtb3VzZU1vdmUnLCAnbW91c2VPdXQnLCAnbW91c2VPdmVyJywgJ21vdXNl
VXAnLCAncGFzdGUnLCAncGF1c2UnLCAncGxheScsICdwbGF5aW5nJywgJ3Byb2dyZXNzJywgJ3Jh
dGVDaGFuZ2UnLCAncmVzZXQnLCAnc2Nyb2xsJywgJ3NlZWtlZCcsICdzZWVraW5nJywgJ3N0YWxs
ZWQnLCAnc3VibWl0JywgJ3N1c3BlbmQnLCAndGltZVVwZGF0ZScsICd0b3VjaENhbmNlbCcsICd0
b3VjaEVuZCcsICd0b3VjaE1vdmUnLCAndG91Y2hTdGFydCcsICd0cmFuc2l0aW9uRW5kJywgJ3Zv
bHVtZUNoYW5nZScsICd3YWl0aW5nJywgJ3doZWVsJ10uZm9yRWFjaChmdW5jdGlvbiAoZXZlbnQp
IHtcblx0ICB2YXIgY2FwaXRhbGl6ZWRFdmVudCA9IGV2ZW50WzBdLnRvVXBwZXJDYXNlKCkgKyBl
dmVudC5zbGljZSgxKTtcblx0ICB2YXIgb25FdmVudCA9ICdvbicgKyBjYXBpdGFsaXplZEV2ZW50
O1xuXHQgIHZhciB0b3BFdmVudCA9ICd0b3AnICsgY2FwaXRhbGl6ZWRFdmVudDtcblx0XG5cdCAg
dmFyIHR5cGUgPSB7XG5cdCAgICBwaGFzZWRSZWdpc3RyYXRpb25OYW1lczoge1xuXHQgICAgICBi
dWJibGVkOiBvbkV2ZW50LFxuXHQgICAgICBjYXB0dXJlZDogb25FdmVudCArICdDYXB0dXJlJ1xu
XHQgICAgfSxcblx0ICAgIGRlcGVuZGVuY2llczogW3RvcEV2ZW50XVxuXHQgIH07XG5cdCAgZXZl
bnRUeXBlc1tldmVudF0gPSB0eXBlO1xuXHQgIHRvcExldmVsRXZlbnRzVG9EaXNwYXRjaENvbmZp
Z1t0b3BFdmVudF0gPSB0eXBlO1xuXHR9KTtcblx0XG5cdHZhciBvbkNsaWNrTGlzdGVuZXJzID0g
e307XG5cdFxuXHRmdW5jdGlvbiBnZXREaWN0aW9uYXJ5S2V5KGluc3QpIHtcblx0ICAvLyBQcmV2
ZW50cyBWOCBwZXJmb3JtYW5jZSBpc3N1ZTpcblx0ICAvLyBodHRwczovL2dpdGh1Yi5jb20vZmFj
ZWJvb2svcmVhY3QvcHVsbC83MjMyXG5cdCAgcmV0dXJuICcuJyArIGluc3QuX3Jvb3ROb2RlSUQ7
XG5cdH1cblx0XG5cdGZ1bmN0aW9uIGlzSW50ZXJhY3RpdmUodGFnKSB7XG5cdCAgcmV0dXJuIHRh
ZyA9PT0gJ2J1dHRvbicgfHwgdGFnID09PSAnaW5wdXQnIHx8IHRhZyA9PT0gJ3NlbGVjdCcgfHwg
dGFnID09PSAndGV4dGFyZWEnO1xuXHR9XG5cdFxuXHR2YXIgU2ltcGxlRXZlbnRQbHVnaW4gPSB7
XG5cdCAgZXZlbnRUeXBlczogZXZlbnRUeXBlcyxcblx0XG5cdCAgZXh0cmFjdEV2ZW50czogZnVu
Y3Rpb24gKHRvcExldmVsVHlwZSwgdGFyZ2V0SW5zdCwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50
VGFyZ2V0KSB7XG5cdCAgICB2YXIgZGlzcGF0Y2hDb25maWcgPSB0b3BMZXZlbEV2ZW50c1RvRGlz
cGF0Y2hDb25maWdbdG9wTGV2ZWxUeXBlXTtcblx0ICAgIGlmICghZGlzcGF0Y2hDb25maWcpIHtc
blx0ICAgICAgcmV0dXJuIG51bGw7XG5cdCAgICB9XG5cdCAgICB2YXIgRXZlbnRDb25zdHJ1Y3Rv
cjtcblx0ICAgIHN3aXRjaCAodG9wTGV2ZWxUeXBlKSB7XG5cdCAgICAgIGNhc2UgJ3RvcEFib3J0
Jzpcblx0ICAgICAgY2FzZSAndG9wQ2FuUGxheSc6XG5cdCAgICAgIGNhc2UgJ3RvcENhblBsYXlU
aHJvdWdoJzpcblx0ICAgICAgY2FzZSAndG9wRHVyYXRpb25DaGFuZ2UnOlxuXHQgICAgICBjYXNl
ICd0b3BFbXB0aWVkJzpcblx0ICAgICAgY2FzZSAndG9wRW5jcnlwdGVkJzpcblx0ICAgICAgY2Fz
ZSAndG9wRW5kZWQnOlxuXHQgICAgICBjYXNlICd0b3BFcnJvcic6XG5cdCAgICAgIGNhc2UgJ3Rv
cElucHV0Jzpcblx0ICAgICAgY2FzZSAndG9wSW52YWxpZCc6XG5cdCAgICAgIGNhc2UgJ3RvcExv
YWQnOlxuXHQgICAgICBjYXNlICd0b3BMb2FkZWREYXRhJzpcblx0ICAgICAgY2FzZSAndG9wTG9h
ZGVkTWV0YWRhdGEnOlxuXHQgICAgICBjYXNlICd0b3BMb2FkU3RhcnQnOlxuXHQgICAgICBjYXNl
ICd0b3BQYXVzZSc6XG5cdCAgICAgIGNhc2UgJ3RvcFBsYXknOlxuXHQgICAgICBjYXNlICd0b3BQ
bGF5aW5nJzpcblx0ICAgICAgY2FzZSAndG9wUHJvZ3Jlc3MnOlxuXHQgICAgICBjYXNlICd0b3BS
YXRlQ2hhbmdlJzpcblx0ICAgICAgY2FzZSAndG9wUmVzZXQnOlxuXHQgICAgICBjYXNlICd0b3BT
ZWVrZWQnOlxuXHQgICAgICBjYXNlICd0b3BTZWVraW5nJzpcblx0ICAgICAgY2FzZSAndG9wU3Rh
bGxlZCc6XG5cdCAgICAgIGNhc2UgJ3RvcFN1Ym1pdCc6XG5cdCAgICAgIGNhc2UgJ3RvcFN1c3Bl
bmQnOlxuXHQgICAgICBjYXNlICd0b3BUaW1lVXBkYXRlJzpcblx0ICAgICAgY2FzZSAndG9wVm9s
dW1lQ2hhbmdlJzpcblx0ICAgICAgY2FzZSAndG9wV2FpdGluZyc6XG5cdCAgICAgICAgLy8gSFRN
TCBFdmVudHNcblx0ICAgICAgICAvLyBAc2VlIGh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw1L2lu
ZGV4Lmh0bWwjZXZlbnRzLTBcblx0ICAgICAgICBFdmVudENvbnN0cnVjdG9yID0gU3ludGhldGlj
RXZlbnQ7XG5cdCAgICAgICAgYnJlYWs7XG5cdCAgICAgIGNhc2UgJ3RvcEtleVByZXNzJzpcblx0
ICAgICAgICAvLyBGaXJlZm94IGNyZWF0ZXMgYSBrZXlwcmVzcyBldmVudCBmb3IgZnVuY3Rpb24g
a2V5cyB0b28uIFRoaXMgcmVtb3Zlc1xuXHQgICAgICAgIC8vIHRoZSB1bndhbnRlZCBrZXlwcmVz
cyBldmVudHMuIEVudGVyIGlzIGhvd2V2ZXIgYm90aCBwcmludGFibGUgYW5kXG5cdCAgICAgICAg
Ly8gbm9uLXByaW50YWJsZS4gT25lIHdvdWxkIGV4cGVjdCBUYWIgdG8gYmUgYXMgd2VsbCAoYnV0
IGl0IGlzbid0KS5cblx0ICAgICAgICBpZiAoZ2V0RXZlbnRDaGFyQ29kZShuYXRpdmVFdmVudCkg
PT09IDApIHtcblx0ICAgICAgICAgIHJldHVybiBudWxsO1xuXHQgICAgICAgIH1cblx0ICAgICAg
LyogZmFsbHMgdGhyb3VnaCAqL1xuXHQgICAgICBjYXNlICd0b3BLZXlEb3duJzpcblx0ICAgICAg
Y2FzZSAndG9wS2V5VXAnOlxuXHQgICAgICAgIEV2ZW50Q29uc3RydWN0b3IgPSBTeW50aGV0aWNL
ZXlib2FyZEV2ZW50O1xuXHQgICAgICAgIGJyZWFrO1xuXHQgICAgICBjYXNlICd0b3BCbHVyJzpc
blx0ICAgICAgY2FzZSAndG9wRm9jdXMnOlxuXHQgICAgICAgIEV2ZW50Q29uc3RydWN0b3IgPSBT
eW50aGV0aWNGb2N1c0V2ZW50O1xuXHQgICAgICAgIGJyZWFrO1xuXHQgICAgICBjYXNlICd0b3BD
bGljayc6XG5cdCAgICAgICAgLy8gRmlyZWZveCBjcmVhdGVzIGEgY2xpY2sgZXZlbnQgb24gcmln
aHQgbW91c2UgY2xpY2tzLiBUaGlzIHJlbW92ZXMgdGhlXG5cdCAgICAgICAgLy8gdW53YW50ZWQg
Y2xpY2sgZXZlbnRzLlxuXHQgICAgICAgIGlmIChuYXRpdmVFdmVudC5idXR0b24gPT09IDIpIHtc
blx0ICAgICAgICAgIHJldHVybiBudWxsO1xuXHQgICAgICAgIH1cblx0ICAgICAgLyogZmFsbHMg
dGhyb3VnaCAqL1xuXHQgICAgICBjYXNlICd0b3BEb3VibGVDbGljayc6XG5cdCAgICAgIGNhc2Ug
J3RvcE1vdXNlRG93bic6XG5cdCAgICAgIGNhc2UgJ3RvcE1vdXNlTW92ZSc6XG5cdCAgICAgIGNh
c2UgJ3RvcE1vdXNlVXAnOlxuXHQgICAgICAvLyBUT0RPOiBEaXNhYmxlZCBlbGVtZW50cyBzaG91
bGQgbm90IHJlc3BvbmQgdG8gbW91c2UgZXZlbnRzXG5cdCAgICAgIC8qIGZhbGxzIHRocm91Z2gg
Ki9cblx0ICAgICAgY2FzZSAndG9wTW91c2VPdXQnOlxuXHQgICAgICBjYXNlICd0b3BNb3VzZU92
ZXInOlxuXHQgICAgICBjYXNlICd0b3BDb250ZXh0TWVudSc6XG5cdCAgICAgICAgRXZlbnRDb25z
dHJ1Y3RvciA9IFN5bnRoZXRpY01vdXNlRXZlbnQ7XG5cdCAgICAgICAgYnJlYWs7XG5cdCAgICAg
IGNhc2UgJ3RvcERyYWcnOlxuXHQgICAgICBjYXNlICd0b3BEcmFnRW5kJzpcblx0ICAgICAgY2Fz
ZSAndG9wRHJhZ0VudGVyJzpcblx0ICAgICAgY2FzZSAndG9wRHJhZ0V4aXQnOlxuXHQgICAgICBj
YXNlICd0b3BEcmFnTGVhdmUnOlxuXHQgICAgICBjYXNlICd0b3BEcmFnT3Zlcic6XG5cdCAgICAg
IGNhc2UgJ3RvcERyYWdTdGFydCc6XG5cdCAgICAgIGNhc2UgJ3RvcERyb3AnOlxuXHQgICAgICAg
IEV2ZW50Q29uc3RydWN0b3IgPSBTeW50aGV0aWNEcmFnRXZlbnQ7XG5cdCAgICAgICAgYnJlYWs7
XG5cdCAgICAgIGNhc2UgJ3RvcFRvdWNoQ2FuY2VsJzpcblx0ICAgICAgY2FzZSAndG9wVG91Y2hF
bmQnOlxuXHQgICAgICBjYXNlICd0b3BUb3VjaE1vdmUnOlxuXHQgICAgICBjYXNlICd0b3BUb3Vj
aFN0YXJ0Jzpcblx0ICAgICAgICBFdmVudENvbnN0cnVjdG9yID0gU3ludGhldGljVG91Y2hFdmVu
dDtcblx0ICAgICAgICBicmVhaztcblx0ICAgICAgY2FzZSAndG9wQW5pbWF0aW9uRW5kJzpcblx0
ICAgICAgY2FzZSAndG9wQW5pbWF0aW9uSXRlcmF0aW9uJzpcblx0ICAgICAgY2FzZSAndG9wQW5p
bWF0aW9uU3RhcnQnOlxuXHQgICAgICAgIEV2ZW50Q29uc3RydWN0b3IgPSBTeW50aGV0aWNBbmlt
YXRpb25FdmVudDtcblx0ICAgICAgICBicmVhaztcblx0ICAgICAgY2FzZSAndG9wVHJhbnNpdGlv
bkVuZCc6XG5cdCAgICAgICAgRXZlbnRDb25zdHJ1Y3RvciA9IFN5bnRoZXRpY1RyYW5zaXRpb25F
dmVudDtcblx0ICAgICAgICBicmVhaztcblx0ICAgICAgY2FzZSAndG9wU2Nyb2xsJzpcblx0ICAg
ICAgICBFdmVudENvbnN0cnVjdG9yID0gU3ludGhldGljVUlFdmVudDtcblx0ICAgICAgICBicmVh
aztcblx0ICAgICAgY2FzZSAndG9wV2hlZWwnOlxuXHQgICAgICAgIEV2ZW50Q29uc3RydWN0b3Ig
PSBTeW50aGV0aWNXaGVlbEV2ZW50O1xuXHQgICAgICAgIGJyZWFrO1xuXHQgICAgICBjYXNlICd0
b3BDb3B5Jzpcblx0ICAgICAgY2FzZSAndG9wQ3V0Jzpcblx0ICAgICAgY2FzZSAndG9wUGFzdGUn
OlxuXHQgICAgICAgIEV2ZW50Q29uc3RydWN0b3IgPSBTeW50aGV0aWNDbGlwYm9hcmRFdmVudDtc
blx0ICAgICAgICBicmVhaztcblx0ICAgIH1cblx0ICAgICFFdmVudENvbnN0cnVjdG9yID8gIGZh
bHNlID8gaW52YXJpYW50KGZhbHNlLCAnU2ltcGxlRXZlbnRQbHVnaW46IFVuaGFuZGxlZCBldmVu
dCB0eXBlLCBgJXNgLicsIHRvcExldmVsVHlwZSkgOiBfcHJvZEludmFyaWFudCgnODYnLCB0b3BM
ZXZlbFR5cGUpIDogdm9pZCAwO1xuXHQgICAgdmFyIGV2ZW50ID0gRXZlbnRDb25zdHJ1Y3Rvci5n
ZXRQb29sZWQoZGlzcGF0Y2hDb25maWcsIHRhcmdldEluc3QsIG5hdGl2ZUV2ZW50LCBuYXRpdmVF
dmVudFRhcmdldCk7XG5cdCAgICBFdmVudFByb3BhZ2F0b3JzLmFjY3VtdWxhdGVUd29QaGFzZURp
c3BhdGNoZXMoZXZlbnQpO1xuXHQgICAgcmV0dXJuIGV2ZW50O1xuXHQgIH0sXG5cdFxuXHQgIGRp
ZFB1dExpc3RlbmVyOiBmdW5jdGlvbiAoaW5zdCwgcmVnaXN0cmF0aW9uTmFtZSwgbGlzdGVuZXIp
IHtcblx0ICAgIC8vIE1vYmlsZSBTYWZhcmkgZG9lcyBub3QgZmlyZSBwcm9wZXJseSBidWJibGUg
Y2xpY2sgZXZlbnRzIG9uXG5cdCAgICAvLyBub24taW50ZXJhY3RpdmUgZWxlbWVudHMsIHdoaWNo
IG1lYW5zIGRlbGVnYXRlZCBjbGljayBsaXN0ZW5lcnMgZG8gbm90XG5cdCAgICAvLyBmaXJlLiBU
aGUgd29ya2Fyb3VuZCBmb3IgdGhpcyBidWcgaW52b2x2ZXMgYXR0YWNoaW5nIGFuIGVtcHR5IGNs
aWNrXG5cdCAgICAvLyBsaXN0ZW5lciBvbiB0aGUgdGFyZ2V0IG5vZGUuXG5cdCAgICAvLyBodHRw
Oi8vd3d3LnF1aXJrc21vZGUub3JnL2Jsb2cvYXJjaGl2ZXMvMjAxMC8wOS9jbGlja19ldmVudF9k
ZWwuaHRtbFxuXHQgICAgaWYgKHJlZ2lzdHJhdGlvbk5hbWUgPT09ICdvbkNsaWNrJyAmJiAhaXNJ
bnRlcmFjdGl2ZShpbnN0Ll90YWcpKSB7XG5cdCAgICAgIHZhciBrZXkgPSBnZXREaWN0aW9uYXJ5
S2V5KGluc3QpO1xuXHQgICAgICB2YXIgbm9kZSA9IFJlYWN0RE9NQ29tcG9uZW50VHJlZS5nZXRO
b2RlRnJvbUluc3RhbmNlKGluc3QpO1xuXHQgICAgICBpZiAoIW9uQ2xpY2tMaXN0ZW5lcnNba2V5
XSkge1xuXHQgICAgICAgIG9uQ2xpY2tMaXN0ZW5lcnNba2V5XSA9IEV2ZW50TGlzdGVuZXIubGlz
dGVuKG5vZGUsICdjbGljaycsIGVtcHR5RnVuY3Rpb24pO1xuXHQgICAgICB9XG5cdCAgICB9XG5c
dCAgfSxcblx0XG5cdCAgd2lsbERlbGV0ZUxpc3RlbmVyOiBmdW5jdGlvbiAoaW5zdCwgcmVnaXN0
cmF0aW9uTmFtZSkge1xuXHQgICAgaWYgKHJlZ2lzdHJhdGlvbk5hbWUgPT09ICdvbkNsaWNrJyAm
JiAhaXNJbnRlcmFjdGl2ZShpbnN0Ll90YWcpKSB7XG5cdCAgICAgIHZhciBrZXkgPSBnZXREaWN0
aW9uYXJ5S2V5KGluc3QpO1xuXHQgICAgICBvbkNsaWNrTGlzdGVuZXJzW2tleV0ucmVtb3ZlKCk7
XG5cdCAgICAgIGRlbGV0ZSBvbkNsaWNrTGlzdGVuZXJzW2tleV07XG5cdCAgICB9XG5cdCAgfVxu
XHR9O1xuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBTaW1wbGVFdmVudFBsdWdpbjtcblxuLyoqKi8g
fSxcbi8qIDE2NyAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tf
cmVxdWlyZV9fKSB7XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vi
b29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291
cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGlu
IHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291
cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4g
YmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAq
XG5cdCAqL1xuXHRcblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0dmFyIFN5bnRoZXRpY0V2ZW50ID0g
X193ZWJwYWNrX3JlcXVpcmVfXygxMCk7XG5cdFxuXHQvKipcblx0ICogQGludGVyZmFjZSBFdmVu
dFxuXHQgKiBAc2VlIGh0dHA6Ly93d3cudzMub3JnL1RSL2NzczMtYW5pbWF0aW9ucy8jQW5pbWF0
aW9uRXZlbnQtaW50ZXJmYWNlXG5cdCAqIEBzZWUgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5v
cmcvZW4tVVMvZG9jcy9XZWIvQVBJL0FuaW1hdGlvbkV2ZW50XG5cdCAqL1xuXHR2YXIgQW5pbWF0
aW9uRXZlbnRJbnRlcmZhY2UgPSB7XG5cdCAgYW5pbWF0aW9uTmFtZTogbnVsbCxcblx0ICBlbGFw
c2VkVGltZTogbnVsbCxcblx0ICBwc2V1ZG9FbGVtZW50OiBudWxsXG5cdH07XG5cdFxuXHQvKipc
blx0ICogQHBhcmFtIHtvYmplY3R9IGRpc3BhdGNoQ29uZmlnIENvbmZpZ3VyYXRpb24gdXNlZCB0
byBkaXNwYXRjaCB0aGlzIGV2ZW50LlxuXHQgKiBAcGFyYW0ge3N0cmluZ30gZGlzcGF0Y2hNYXJr
ZXIgTWFya2VyIGlkZW50aWZ5aW5nIHRoZSBldmVudCB0YXJnZXQuXG5cdCAqIEBwYXJhbSB7b2Jq
ZWN0fSBuYXRpdmVFdmVudCBOYXRpdmUgYnJvd3NlciBldmVudC5cblx0ICogQGV4dGVuZHMge1N5
bnRoZXRpY0V2ZW50fVxuXHQgKi9cblx0ZnVuY3Rpb24gU3ludGhldGljQW5pbWF0aW9uRXZlbnQo
ZGlzcGF0Y2hDb25maWcsIGRpc3BhdGNoTWFya2VyLCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRU
YXJnZXQpIHtcblx0ICByZXR1cm4gU3ludGhldGljRXZlbnQuY2FsbCh0aGlzLCBkaXNwYXRjaENv
bmZpZywgZGlzcGF0Y2hNYXJrZXIsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCk7XG5c
dH1cblx0XG5cdFN5bnRoZXRpY0V2ZW50LmF1Z21lbnRDbGFzcyhTeW50aGV0aWNBbmltYXRpb25F
dmVudCwgQW5pbWF0aW9uRXZlbnRJbnRlcmZhY2UpO1xuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBT
eW50aGV0aWNBbmltYXRpb25FdmVudDtcblxuLyoqKi8gfSxcbi8qIDE2OCAqL1xuLyoqKi8gZnVu
Y3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0LyoqXG5c
dCAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5k
ZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUg
aW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwg
Z3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMg
ZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqL1xuXHRcblx0J3VzZSBzdHJp
Y3QnO1xuXHRcblx0dmFyIFN5bnRoZXRpY0V2ZW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMCk7
XG5cdFxuXHQvKipcblx0ICogQGludGVyZmFjZSBFdmVudFxuXHQgKiBAc2VlIGh0dHA6Ly93d3cu
dzMub3JnL1RSL2NsaXBib2FyZC1hcGlzL1xuXHQgKi9cblx0dmFyIENsaXBib2FyZEV2ZW50SW50
ZXJmYWNlID0ge1xuXHQgIGNsaXBib2FyZERhdGE6IGZ1bmN0aW9uIChldmVudCkge1xuXHQgICAg
cmV0dXJuICdjbGlwYm9hcmREYXRhJyBpbiBldmVudCA/IGV2ZW50LmNsaXBib2FyZERhdGEgOiB3
aW5kb3cuY2xpcGJvYXJkRGF0YTtcblx0ICB9XG5cdH07XG5cdFxuXHQvKipcblx0ICogQHBhcmFt
IHtvYmplY3R9IGRpc3BhdGNoQ29uZmlnIENvbmZpZ3VyYXRpb24gdXNlZCB0byBkaXNwYXRjaCB0
aGlzIGV2ZW50LlxuXHQgKiBAcGFyYW0ge3N0cmluZ30gZGlzcGF0Y2hNYXJrZXIgTWFya2VyIGlk
ZW50aWZ5aW5nIHRoZSBldmVudCB0YXJnZXQuXG5cdCAqIEBwYXJhbSB7b2JqZWN0fSBuYXRpdmVF
dmVudCBOYXRpdmUgYnJvd3NlciBldmVudC5cblx0ICogQGV4dGVuZHMge1N5bnRoZXRpY1VJRXZl
bnR9XG5cdCAqL1xuXHRmdW5jdGlvbiBTeW50aGV0aWNDbGlwYm9hcmRFdmVudChkaXNwYXRjaENv
bmZpZywgZGlzcGF0Y2hNYXJrZXIsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCkge1xu
XHQgIHJldHVybiBTeW50aGV0aWNFdmVudC5jYWxsKHRoaXMsIGRpc3BhdGNoQ29uZmlnLCBkaXNw
YXRjaE1hcmtlciwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KTtcblx0fVxuXHRcblx0
U3ludGhldGljRXZlbnQuYXVnbWVudENsYXNzKFN5bnRoZXRpY0NsaXBib2FyZEV2ZW50LCBDbGlw
Ym9hcmRFdmVudEludGVyZmFjZSk7XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IFN5bnRoZXRpY0Ns
aXBib2FyZEV2ZW50O1xuXG4vKioqLyB9LFxuLyogMTY5ICovXG4vKioqLyBmdW5jdGlvbihtb2R1
bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvKipcblx0ICogQ29weXJp
Z2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZl
ZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNE
LXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9v
dCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQg
KiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRo
ZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpcblx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxu
XHR2YXIgU3ludGhldGljRXZlbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEwKTtcblx0XG5cdC8q
KlxuXHQgKiBAaW50ZXJmYWNlIEV2ZW50XG5cdCAqIEBzZWUgaHR0cDovL3d3dy53My5vcmcvVFIv
RE9NLUxldmVsLTMtRXZlbnRzLyNldmVudHMtY29tcG9zaXRpb25ldmVudHNcblx0ICovXG5cdHZh
ciBDb21wb3NpdGlvbkV2ZW50SW50ZXJmYWNlID0ge1xuXHQgIGRhdGE6IG51bGxcblx0fTtcblx0
XG5cdC8qKlxuXHQgKiBAcGFyYW0ge29iamVjdH0gZGlzcGF0Y2hDb25maWcgQ29uZmlndXJhdGlv
biB1c2VkIHRvIGRpc3BhdGNoIHRoaXMgZXZlbnQuXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBkaXNw
YXRjaE1hcmtlciBNYXJrZXIgaWRlbnRpZnlpbmcgdGhlIGV2ZW50IHRhcmdldC5cblx0ICogQHBh
cmFtIHtvYmplY3R9IG5hdGl2ZUV2ZW50IE5hdGl2ZSBicm93c2VyIGV2ZW50LlxuXHQgKiBAZXh0
ZW5kcyB7U3ludGhldGljVUlFdmVudH1cblx0ICovXG5cdGZ1bmN0aW9uIFN5bnRoZXRpY0NvbXBv
c2l0aW9uRXZlbnQoZGlzcGF0Y2hDb25maWcsIGRpc3BhdGNoTWFya2VyLCBuYXRpdmVFdmVudCwg
bmF0aXZlRXZlbnRUYXJnZXQpIHtcblx0ICByZXR1cm4gU3ludGhldGljRXZlbnQuY2FsbCh0aGlz
LCBkaXNwYXRjaENvbmZpZywgZGlzcGF0Y2hNYXJrZXIsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVu
dFRhcmdldCk7XG5cdH1cblx0XG5cdFN5bnRoZXRpY0V2ZW50LmF1Z21lbnRDbGFzcyhTeW50aGV0
aWNDb21wb3NpdGlvbkV2ZW50LCBDb21wb3NpdGlvbkV2ZW50SW50ZXJmYWNlKTtcblx0XG5cdG1v
ZHVsZS5leHBvcnRzID0gU3ludGhldGljQ29tcG9zaXRpb25FdmVudDtcblxuLyoqKi8gfSxcbi8q
IDE3MCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWly
ZV9fKSB7XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJ
bmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNv
ZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxu
XHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRy
ZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91
bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAq
L1xuXHRcblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0dmFyIFN5bnRoZXRpY01vdXNlRXZlbnQgPSBf
X3dlYnBhY2tfcmVxdWlyZV9fKDI2KTtcblx0XG5cdC8qKlxuXHQgKiBAaW50ZXJmYWNlIERyYWdF
dmVudFxuXHQgKiBAc2VlIGh0dHA6Ly93d3cudzMub3JnL1RSL0RPTS1MZXZlbC0zLUV2ZW50cy9c
blx0ICovXG5cdHZhciBEcmFnRXZlbnRJbnRlcmZhY2UgPSB7XG5cdCAgZGF0YVRyYW5zZmVyOiBu
dWxsXG5cdH07XG5cdFxuXHQvKipcblx0ICogQHBhcmFtIHtvYmplY3R9IGRpc3BhdGNoQ29uZmln
IENvbmZpZ3VyYXRpb24gdXNlZCB0byBkaXNwYXRjaCB0aGlzIGV2ZW50LlxuXHQgKiBAcGFyYW0g
e3N0cmluZ30gZGlzcGF0Y2hNYXJrZXIgTWFya2VyIGlkZW50aWZ5aW5nIHRoZSBldmVudCB0YXJn
ZXQuXG5cdCAqIEBwYXJhbSB7b2JqZWN0fSBuYXRpdmVFdmVudCBOYXRpdmUgYnJvd3NlciBldmVu
dC5cblx0ICogQGV4dGVuZHMge1N5bnRoZXRpY1VJRXZlbnR9XG5cdCAqL1xuXHRmdW5jdGlvbiBT
eW50aGV0aWNEcmFnRXZlbnQoZGlzcGF0Y2hDb25maWcsIGRpc3BhdGNoTWFya2VyLCBuYXRpdmVF
dmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpIHtcblx0ICByZXR1cm4gU3ludGhldGljTW91c2VFdmVu
dC5jYWxsKHRoaXMsIGRpc3BhdGNoQ29uZmlnLCBkaXNwYXRjaE1hcmtlciwgbmF0aXZlRXZlbnQs
IG5hdGl2ZUV2ZW50VGFyZ2V0KTtcblx0fVxuXHRcblx0U3ludGhldGljTW91c2VFdmVudC5hdWdt
ZW50Q2xhc3MoU3ludGhldGljRHJhZ0V2ZW50LCBEcmFnRXZlbnRJbnRlcmZhY2UpO1xuXHRcblx0
bW9kdWxlLmV4cG9ydHMgPSBTeW50aGV0aWNEcmFnRXZlbnQ7XG5cbi8qKiovIH0sXG4vKiAxNzEg
Ki9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykg
e1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxu
XHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlz
IGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICog
TElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBB
biBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGlu
IHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKi9cblx0
XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdHZhciBTeW50aGV0aWNVSUV2ZW50ID0gX193ZWJwYWNr
X3JlcXVpcmVfXygyMik7XG5cdFxuXHQvKipcblx0ICogQGludGVyZmFjZSBGb2N1c0V2ZW50XG5c
dCAqIEBzZWUgaHR0cDovL3d3dy53My5vcmcvVFIvRE9NLUxldmVsLTMtRXZlbnRzL1xuXHQgKi9c
blx0dmFyIEZvY3VzRXZlbnRJbnRlcmZhY2UgPSB7XG5cdCAgcmVsYXRlZFRhcmdldDogbnVsbFxu
XHR9O1xuXHRcblx0LyoqXG5cdCAqIEBwYXJhbSB7b2JqZWN0fSBkaXNwYXRjaENvbmZpZyBDb25m
aWd1cmF0aW9uIHVzZWQgdG8gZGlzcGF0Y2ggdGhpcyBldmVudC5cblx0ICogQHBhcmFtIHtzdHJp
bmd9IGRpc3BhdGNoTWFya2VyIE1hcmtlciBpZGVudGlmeWluZyB0aGUgZXZlbnQgdGFyZ2V0Llxu
XHQgKiBAcGFyYW0ge29iamVjdH0gbmF0aXZlRXZlbnQgTmF0aXZlIGJyb3dzZXIgZXZlbnQuXG5c
dCAqIEBleHRlbmRzIHtTeW50aGV0aWNVSUV2ZW50fVxuXHQgKi9cblx0ZnVuY3Rpb24gU3ludGhl
dGljRm9jdXNFdmVudChkaXNwYXRjaENvbmZpZywgZGlzcGF0Y2hNYXJrZXIsIG5hdGl2ZUV2ZW50
LCBuYXRpdmVFdmVudFRhcmdldCkge1xuXHQgIHJldHVybiBTeW50aGV0aWNVSUV2ZW50LmNhbGwo
dGhpcywgZGlzcGF0Y2hDb25maWcsIGRpc3BhdGNoTWFya2VyLCBuYXRpdmVFdmVudCwgbmF0aXZl
RXZlbnRUYXJnZXQpO1xuXHR9XG5cdFxuXHRTeW50aGV0aWNVSUV2ZW50LmF1Z21lbnRDbGFzcyhT
eW50aGV0aWNGb2N1c0V2ZW50LCBGb2N1c0V2ZW50SW50ZXJmYWNlKTtcblx0XG5cdG1vZHVsZS5l
eHBvcnRzID0gU3ludGhldGljRm9jdXNFdmVudDtcblxuLyoqKi8gfSxcbi8qIDE3MiAqL1xuLyoq
Ki8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0
LyoqXG5cdCAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFs
bCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5z
ZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNF
IGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0
aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBB
VEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqL1xuXHRcblx0J3Vz
ZSBzdHJpY3QnO1xuXHRcblx0dmFyIFN5bnRoZXRpY0V2ZW50ID0gX193ZWJwYWNrX3JlcXVpcmVf
XygxMCk7XG5cdFxuXHQvKipcblx0ICogQGludGVyZmFjZSBFdmVudFxuXHQgKiBAc2VlIGh0dHA6
Ly93d3cudzMub3JnL1RSLzIwMTMvV0QtRE9NLUxldmVsLTMtRXZlbnRzLTIwMTMxMTA1XG5cdCAq
ICAgICAgLyNldmVudHMtaW5wdXRldmVudHNcblx0ICovXG5cdHZhciBJbnB1dEV2ZW50SW50ZXJm
YWNlID0ge1xuXHQgIGRhdGE6IG51bGxcblx0fTtcblx0XG5cdC8qKlxuXHQgKiBAcGFyYW0ge29i
amVjdH0gZGlzcGF0Y2hDb25maWcgQ29uZmlndXJhdGlvbiB1c2VkIHRvIGRpc3BhdGNoIHRoaXMg
ZXZlbnQuXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBkaXNwYXRjaE1hcmtlciBNYXJrZXIgaWRlbnRp
ZnlpbmcgdGhlIGV2ZW50IHRhcmdldC5cblx0ICogQHBhcmFtIHtvYmplY3R9IG5hdGl2ZUV2ZW50
IE5hdGl2ZSBicm93c2VyIGV2ZW50LlxuXHQgKiBAZXh0ZW5kcyB7U3ludGhldGljVUlFdmVudH1c
blx0ICovXG5cdGZ1bmN0aW9uIFN5bnRoZXRpY0lucHV0RXZlbnQoZGlzcGF0Y2hDb25maWcsIGRp
c3BhdGNoTWFya2VyLCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpIHtcblx0ICByZXR1
cm4gU3ludGhldGljRXZlbnQuY2FsbCh0aGlzLCBkaXNwYXRjaENvbmZpZywgZGlzcGF0Y2hNYXJr
ZXIsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCk7XG5cdH1cblx0XG5cdFN5bnRoZXRp
Y0V2ZW50LmF1Z21lbnRDbGFzcyhTeW50aGV0aWNJbnB1dEV2ZW50LCBJbnB1dEV2ZW50SW50ZXJm
YWNlKTtcblx0XG5cdG1vZHVsZS5leHBvcnRzID0gU3ludGhldGljSW5wdXRFdmVudDtcblxuLyoq
Ki8gfSxcbi8qIDE3MyAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBh
Y2tfcmVxdWlyZV9fKSB7XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZh
Y2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMg
c291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5k
IGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMg
c291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBj
YW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5c
dCAqXG5cdCAqL1xuXHRcblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0dmFyIFN5bnRoZXRpY1VJRXZl
bnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIyKTtcblx0XG5cdHZhciBnZXRFdmVudENoYXJDb2Rl
ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0NCk7XG5cdHZhciBnZXRFdmVudEtleSA9IF9fd2VicGFj
a19yZXF1aXJlX18oMTgxKTtcblx0dmFyIGdldEV2ZW50TW9kaWZpZXJTdGF0ZSA9IF9fd2VicGFj
a19yZXF1aXJlX18oNDUpO1xuXHRcblx0LyoqXG5cdCAqIEBpbnRlcmZhY2UgS2V5Ym9hcmRFdmVu
dFxuXHQgKiBAc2VlIGh0dHA6Ly93d3cudzMub3JnL1RSL0RPTS1MZXZlbC0zLUV2ZW50cy9cblx0
ICovXG5cdHZhciBLZXlib2FyZEV2ZW50SW50ZXJmYWNlID0ge1xuXHQgIGtleTogZ2V0RXZlbnRL
ZXksXG5cdCAgbG9jYXRpb246IG51bGwsXG5cdCAgY3RybEtleTogbnVsbCxcblx0ICBzaGlmdEtl
eTogbnVsbCxcblx0ICBhbHRLZXk6IG51bGwsXG5cdCAgbWV0YUtleTogbnVsbCxcblx0ICByZXBl
YXQ6IG51bGwsXG5cdCAgbG9jYWxlOiBudWxsLFxuXHQgIGdldE1vZGlmaWVyU3RhdGU6IGdldEV2
ZW50TW9kaWZpZXJTdGF0ZSxcblx0ICAvLyBMZWdhY3kgSW50ZXJmYWNlXG5cdCAgY2hhckNvZGU6
IGZ1bmN0aW9uIChldmVudCkge1xuXHQgICAgLy8gYGNoYXJDb2RlYCBpcyB0aGUgcmVzdWx0IG9m
IGEgS2V5UHJlc3MgZXZlbnQgYW5kIHJlcHJlc2VudHMgdGhlIHZhbHVlIG9mXG5cdCAgICAvLyB0
aGUgYWN0dWFsIHByaW50YWJsZSBjaGFyYWN0ZXIuXG5cdFxuXHQgICAgLy8gS2V5UHJlc3MgaXMg
ZGVwcmVjYXRlZCwgYnV0IGl0cyByZXBsYWNlbWVudCBpcyBub3QgeWV0IGZpbmFsIGFuZCBub3Rc
blx0ICAgIC8vIGltcGxlbWVudGVkIGluIGFueSBtYWpvciBicm93c2VyLiBPbmx5IEtleVByZXNz
IGhhcyBjaGFyQ29kZS5cblx0ICAgIGlmIChldmVudC50eXBlID09PSAna2V5cHJlc3MnKSB7XG5c
dCAgICAgIHJldHVybiBnZXRFdmVudENoYXJDb2RlKGV2ZW50KTtcblx0ICAgIH1cblx0ICAgIHJl
dHVybiAwO1xuXHQgIH0sXG5cdCAga2V5Q29kZTogZnVuY3Rpb24gKGV2ZW50KSB7XG5cdCAgICAv
LyBga2V5Q29kZWAgaXMgdGhlIHJlc3VsdCBvZiBhIEtleURvd24vVXAgZXZlbnQgYW5kIHJlcHJl
c2VudHMgdGhlIHZhbHVlIG9mXG5cdCAgICAvLyBwaHlzaWNhbCBrZXlib2FyZCBrZXkuXG5cdFxu
XHQgICAgLy8gVGhlIGFjdHVhbCBtZWFuaW5nIG9mIHRoZSB2YWx1ZSBkZXBlbmRzIG9uIHRoZSB1
c2Vycycga2V5Ym9hcmQgbGF5b3V0XG5cdCAgICAvLyB3aGljaCBjYW5ub3QgYmUgZGV0ZWN0ZWQu
IEFzc3VtaW5nIHRoYXQgaXQgaXMgYSBVUyBrZXlib2FyZCBsYXlvdXRcblx0ICAgIC8vIHByb3Zp
ZGVzIGEgc3VycHJpc2luZ2x5IGFjY3VyYXRlIG1hcHBpbmcgZm9yIFVTIGFuZCBFdXJvcGVhbiB1
c2Vycy5cblx0ICAgIC8vIER1ZSB0byB0aGlzLCBpdCBpcyBsZWZ0IHRvIHRoZSB1c2VyIHRvIGlt
cGxlbWVudCBhdCB0aGlzIHRpbWUuXG5cdCAgICBpZiAoZXZlbnQudHlwZSA9PT0gJ2tleWRvd24n
IHx8IGV2ZW50LnR5cGUgPT09ICdrZXl1cCcpIHtcblx0ICAgICAgcmV0dXJuIGV2ZW50LmtleUNv
ZGU7XG5cdCAgICB9XG5cdCAgICByZXR1cm4gMDtcblx0ICB9LFxuXHQgIHdoaWNoOiBmdW5jdGlv
biAoZXZlbnQpIHtcblx0ICAgIC8vIGB3aGljaGAgaXMgYW4gYWxpYXMgZm9yIGVpdGhlciBga2V5
Q29kZWAgb3IgYGNoYXJDb2RlYCBkZXBlbmRpbmcgb24gdGhlXG5cdCAgICAvLyB0eXBlIG9mIHRo
ZSBldmVudC5cblx0ICAgIGlmIChldmVudC50eXBlID09PSAna2V5cHJlc3MnKSB7XG5cdCAgICAg
IHJldHVybiBnZXRFdmVudENoYXJDb2RlKGV2ZW50KTtcblx0ICAgIH1cblx0ICAgIGlmIChldmVu
dC50eXBlID09PSAna2V5ZG93bicgfHwgZXZlbnQudHlwZSA9PT0gJ2tleXVwJykge1xuXHQgICAg
ICByZXR1cm4gZXZlbnQua2V5Q29kZTtcblx0ICAgIH1cblx0ICAgIHJldHVybiAwO1xuXHQgIH1c
blx0fTtcblx0XG5cdC8qKlxuXHQgKiBAcGFyYW0ge29iamVjdH0gZGlzcGF0Y2hDb25maWcgQ29u
ZmlndXJhdGlvbiB1c2VkIHRvIGRpc3BhdGNoIHRoaXMgZXZlbnQuXG5cdCAqIEBwYXJhbSB7c3Ry
aW5nfSBkaXNwYXRjaE1hcmtlciBNYXJrZXIgaWRlbnRpZnlpbmcgdGhlIGV2ZW50IHRhcmdldC5c
blx0ICogQHBhcmFtIHtvYmplY3R9IG5hdGl2ZUV2ZW50IE5hdGl2ZSBicm93c2VyIGV2ZW50Llxu
XHQgKiBAZXh0ZW5kcyB7U3ludGhldGljVUlFdmVudH1cblx0ICovXG5cdGZ1bmN0aW9uIFN5bnRo
ZXRpY0tleWJvYXJkRXZlbnQoZGlzcGF0Y2hDb25maWcsIGRpc3BhdGNoTWFya2VyLCBuYXRpdmVF
dmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpIHtcblx0ICByZXR1cm4gU3ludGhldGljVUlFdmVudC5j
YWxsKHRoaXMsIGRpc3BhdGNoQ29uZmlnLCBkaXNwYXRjaE1hcmtlciwgbmF0aXZlRXZlbnQsIG5h
dGl2ZUV2ZW50VGFyZ2V0KTtcblx0fVxuXHRcblx0U3ludGhldGljVUlFdmVudC5hdWdtZW50Q2xh
c3MoU3ludGhldGljS2V5Ym9hcmRFdmVudCwgS2V5Ym9hcmRFdmVudEludGVyZmFjZSk7XG5cdFxu
XHRtb2R1bGUuZXhwb3J0cyA9IFN5bnRoZXRpY0tleWJvYXJkRXZlbnQ7XG5cbi8qKiovIH0sXG4v
KiAxNzQgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVp
cmVfXykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywg
SW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBj
b2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVc
blx0ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0
cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZv
dW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQg
Ki9cblx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdHZhciBTeW50aGV0aWNVSUV2ZW50ID0gX193
ZWJwYWNrX3JlcXVpcmVfXygyMik7XG5cdFxuXHR2YXIgZ2V0RXZlbnRNb2RpZmllclN0YXRlID0g
X193ZWJwYWNrX3JlcXVpcmVfXyg0NSk7XG5cdFxuXHQvKipcblx0ICogQGludGVyZmFjZSBUb3Vj
aEV2ZW50XG5cdCAqIEBzZWUgaHR0cDovL3d3dy53My5vcmcvVFIvdG91Y2gtZXZlbnRzL1xuXHQg
Ki9cblx0dmFyIFRvdWNoRXZlbnRJbnRlcmZhY2UgPSB7XG5cdCAgdG91Y2hlczogbnVsbCxcblx0
ICB0YXJnZXRUb3VjaGVzOiBudWxsLFxuXHQgIGNoYW5nZWRUb3VjaGVzOiBudWxsLFxuXHQgIGFs
dEtleTogbnVsbCxcblx0ICBtZXRhS2V5OiBudWxsLFxuXHQgIGN0cmxLZXk6IG51bGwsXG5cdCAg
c2hpZnRLZXk6IG51bGwsXG5cdCAgZ2V0TW9kaWZpZXJTdGF0ZTogZ2V0RXZlbnRNb2RpZmllclN0
YXRlXG5cdH07XG5cdFxuXHQvKipcblx0ICogQHBhcmFtIHtvYmplY3R9IGRpc3BhdGNoQ29uZmln
IENvbmZpZ3VyYXRpb24gdXNlZCB0byBkaXNwYXRjaCB0aGlzIGV2ZW50LlxuXHQgKiBAcGFyYW0g
e3N0cmluZ30gZGlzcGF0Y2hNYXJrZXIgTWFya2VyIGlkZW50aWZ5aW5nIHRoZSBldmVudCB0YXJn
ZXQuXG5cdCAqIEBwYXJhbSB7b2JqZWN0fSBuYXRpdmVFdmVudCBOYXRpdmUgYnJvd3NlciBldmVu
dC5cblx0ICogQGV4dGVuZHMge1N5bnRoZXRpY1VJRXZlbnR9XG5cdCAqL1xuXHRmdW5jdGlvbiBT
eW50aGV0aWNUb3VjaEV2ZW50KGRpc3BhdGNoQ29uZmlnLCBkaXNwYXRjaE1hcmtlciwgbmF0aXZl
RXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KSB7XG5cdCAgcmV0dXJuIFN5bnRoZXRpY1VJRXZlbnQu
Y2FsbCh0aGlzLCBkaXNwYXRjaENvbmZpZywgZGlzcGF0Y2hNYXJrZXIsIG5hdGl2ZUV2ZW50LCBu
YXRpdmVFdmVudFRhcmdldCk7XG5cdH1cblx0XG5cdFN5bnRoZXRpY1VJRXZlbnQuYXVnbWVudENs
YXNzKFN5bnRoZXRpY1RvdWNoRXZlbnQsIFRvdWNoRXZlbnRJbnRlcmZhY2UpO1xuXHRcblx0bW9k
dWxlLmV4cG9ydHMgPSBTeW50aGV0aWNUb3VjaEV2ZW50O1xuXG4vKioqLyB9LFxuLyogMTc1ICov
XG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtc
blxuXHQvKipcblx0ICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0
ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBs
aWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJ
Q0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4g
YWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0
aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpcblx0ICovXG5cdFxu
XHQndXNlIHN0cmljdCc7XG5cdFxuXHR2YXIgU3ludGhldGljRXZlbnQgPSBfX3dlYnBhY2tfcmVx
dWlyZV9fKDEwKTtcblx0XG5cdC8qKlxuXHQgKiBAaW50ZXJmYWNlIEV2ZW50XG5cdCAqIEBzZWUg
aHR0cDovL3d3dy53My5vcmcvVFIvMjAwOS9XRC1jc3MzLXRyYW5zaXRpb25zLTIwMDkwMzIwLyN0
cmFuc2l0aW9uLWV2ZW50cy1cblx0ICogQHNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9y
Zy9lbi1VUy9kb2NzL1dlYi9BUEkvVHJhbnNpdGlvbkV2ZW50XG5cdCAqL1xuXHR2YXIgVHJhbnNp
dGlvbkV2ZW50SW50ZXJmYWNlID0ge1xuXHQgIHByb3BlcnR5TmFtZTogbnVsbCxcblx0ICBlbGFw
c2VkVGltZTogbnVsbCxcblx0ICBwc2V1ZG9FbGVtZW50OiBudWxsXG5cdH07XG5cdFxuXHQvKipc
blx0ICogQHBhcmFtIHtvYmplY3R9IGRpc3BhdGNoQ29uZmlnIENvbmZpZ3VyYXRpb24gdXNlZCB0
byBkaXNwYXRjaCB0aGlzIGV2ZW50LlxuXHQgKiBAcGFyYW0ge3N0cmluZ30gZGlzcGF0Y2hNYXJr
ZXIgTWFya2VyIGlkZW50aWZ5aW5nIHRoZSBldmVudCB0YXJnZXQuXG5cdCAqIEBwYXJhbSB7b2Jq
ZWN0fSBuYXRpdmVFdmVudCBOYXRpdmUgYnJvd3NlciBldmVudC5cblx0ICogQGV4dGVuZHMge1N5
bnRoZXRpY0V2ZW50fVxuXHQgKi9cblx0ZnVuY3Rpb24gU3ludGhldGljVHJhbnNpdGlvbkV2ZW50
KGRpc3BhdGNoQ29uZmlnLCBkaXNwYXRjaE1hcmtlciwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50
VGFyZ2V0KSB7XG5cdCAgcmV0dXJuIFN5bnRoZXRpY0V2ZW50LmNhbGwodGhpcywgZGlzcGF0Y2hD
b25maWcsIGRpc3BhdGNoTWFya2VyLCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpO1xu
XHR9XG5cdFxuXHRTeW50aGV0aWNFdmVudC5hdWdtZW50Q2xhc3MoU3ludGhldGljVHJhbnNpdGlv
bkV2ZW50LCBUcmFuc2l0aW9uRXZlbnRJbnRlcmZhY2UpO1xuXHRcblx0bW9kdWxlLmV4cG9ydHMg
PSBTeW50aGV0aWNUcmFuc2l0aW9uRXZlbnQ7XG5cbi8qKiovIH0sXG4vKiAxNzYgKi9cbi8qKiov
IGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8q
KlxuXHQgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwg
cmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2Vk
IHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBm
aWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlv
bmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRF
TlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKi9cblx0XG5cdCd1c2Ug
c3RyaWN0Jztcblx0XG5cdHZhciBTeW50aGV0aWNNb3VzZUV2ZW50ID0gX193ZWJwYWNrX3JlcXVp
cmVfXygyNik7XG5cdFxuXHQvKipcblx0ICogQGludGVyZmFjZSBXaGVlbEV2ZW50XG5cdCAqIEBz
ZWUgaHR0cDovL3d3dy53My5vcmcvVFIvRE9NLUxldmVsLTMtRXZlbnRzL1xuXHQgKi9cblx0dmFy
IFdoZWVsRXZlbnRJbnRlcmZhY2UgPSB7XG5cdCAgZGVsdGFYOiBmdW5jdGlvbiAoZXZlbnQpIHtc
blx0ICAgIHJldHVybiAnZGVsdGFYJyBpbiBldmVudCA/IGV2ZW50LmRlbHRhWCA6IC8vIEZhbGxi
YWNrIHRvIGB3aGVlbERlbHRhWGAgZm9yIFdlYmtpdCBhbmQgbm9ybWFsaXplIChyaWdodCBpcyBw
b3NpdGl2ZSkuXG5cdCAgICAnd2hlZWxEZWx0YVgnIGluIGV2ZW50ID8gLWV2ZW50LndoZWVsRGVs
dGFYIDogMDtcblx0ICB9LFxuXHQgIGRlbHRhWTogZnVuY3Rpb24gKGV2ZW50KSB7XG5cdCAgICBy
ZXR1cm4gJ2RlbHRhWScgaW4gZXZlbnQgPyBldmVudC5kZWx0YVkgOiAvLyBGYWxsYmFjayB0byBg
d2hlZWxEZWx0YVlgIGZvciBXZWJraXQgYW5kIG5vcm1hbGl6ZSAoZG93biBpcyBwb3NpdGl2ZSku
XG5cdCAgICAnd2hlZWxEZWx0YVknIGluIGV2ZW50ID8gLWV2ZW50LndoZWVsRGVsdGFZIDogLy8g
RmFsbGJhY2sgdG8gYHdoZWVsRGVsdGFgIGZvciBJRTw5IGFuZCBub3JtYWxpemUgKGRvd24gaXMg
cG9zaXRpdmUpLlxuXHQgICAgJ3doZWVsRGVsdGEnIGluIGV2ZW50ID8gLWV2ZW50LndoZWVsRGVs
dGEgOiAwO1xuXHQgIH0sXG5cdCAgZGVsdGFaOiBudWxsLFxuXHRcblx0ICAvLyBCcm93c2VycyB3
aXRob3V0IFwiZGVsdGFNb2RlXCIgaXMgcmVwb3J0aW5nIGluIHJhdyB3aGVlbCBkZWx0YSB3aGVy
ZSBvbmVcblx0ICAvLyBub3RjaCBvbiB0aGUgc2Nyb2xsIGlzIGFsd2F5cyArLy0gMTIwLCByb3Vn
aGx5IGVxdWl2YWxlbnQgdG8gcGl4ZWxzLlxuXHQgIC8vIEEgZ29vZCBhcHByb3hpbWF0aW9uIG9m
IERPTV9ERUxUQV9MSU5FICgxKSBpcyA1JSBvZiB2aWV3cG9ydCBzaXplIG9yXG5cdCAgLy8gfjQw
IHBpeGVscywgZm9yIERPTV9ERUxUQV9TQ1JFRU4gKDIpIGl0IGlzIDg3LjUlIG9mIHZpZXdwb3J0
IHNpemUuXG5cdCAgZGVsdGFNb2RlOiBudWxsXG5cdH07XG5cdFxuXHQvKipcblx0ICogQHBhcmFt
IHtvYmplY3R9IGRpc3BhdGNoQ29uZmlnIENvbmZpZ3VyYXRpb24gdXNlZCB0byBkaXNwYXRjaCB0
aGlzIGV2ZW50LlxuXHQgKiBAcGFyYW0ge3N0cmluZ30gZGlzcGF0Y2hNYXJrZXIgTWFya2VyIGlk
ZW50aWZ5aW5nIHRoZSBldmVudCB0YXJnZXQuXG5cdCAqIEBwYXJhbSB7b2JqZWN0fSBuYXRpdmVF
dmVudCBOYXRpdmUgYnJvd3NlciBldmVudC5cblx0ICogQGV4dGVuZHMge1N5bnRoZXRpY01vdXNl
RXZlbnR9XG5cdCAqL1xuXHRmdW5jdGlvbiBTeW50aGV0aWNXaGVlbEV2ZW50KGRpc3BhdGNoQ29u
ZmlnLCBkaXNwYXRjaE1hcmtlciwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KSB7XG5c
dCAgcmV0dXJuIFN5bnRoZXRpY01vdXNlRXZlbnQuY2FsbCh0aGlzLCBkaXNwYXRjaENvbmZpZywg
ZGlzcGF0Y2hNYXJrZXIsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCk7XG5cdH1cblx0
XG5cdFN5bnRoZXRpY01vdXNlRXZlbnQuYXVnbWVudENsYXNzKFN5bnRoZXRpY1doZWVsRXZlbnQs
IFdoZWVsRXZlbnRJbnRlcmZhY2UpO1xuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBTeW50aGV0aWNX
aGVlbEV2ZW50O1xuXG4vKioqLyB9LFxuLyogMTc3ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUs
IGV4cG9ydHMpIHtcblxuXHQvKipcblx0ICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJv
b2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICogVGhpcyBzb3Vy
Y2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4g
dGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3Vy
Y2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBi
ZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpc
blx0ICogXG5cdCAqL1xuXHRcblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0dmFyIE1PRCA9IDY1NTIx
O1xuXHRcblx0Ly8gYWRsZXIzMiBpcyBub3QgY3J5cHRvZ3JhcGhpY2FsbHkgc3Ryb25nLCBhbmQg
aXMgb25seSB1c2VkIHRvIHNhbml0eSBjaGVjayB0aGF0XG5cdC8vIG1hcmt1cCBnZW5lcmF0ZWQg
b24gdGhlIHNlcnZlciBtYXRjaGVzIHRoZSBtYXJrdXAgZ2VuZXJhdGVkIG9uIHRoZSBjbGllbnQu
XG5cdC8vIFRoaXMgaW1wbGVtZW50YXRpb24gKGEgbW9kaWZpZWQgdmVyc2lvbiBvZiB0aGUgU2hl
ZXRKUyB2ZXJzaW9uKSBoYXMgYmVlbiBvcHRpbWl6ZWRcblx0Ly8gZm9yIG91ciB1c2UgY2FzZSwg
YXQgdGhlIGV4cGVuc2Ugb2YgY29uZm9ybWluZyB0byB0aGUgYWRsZXIzMiBzcGVjaWZpY2F0aW9u
XG5cdC8vIGZvciBub24tYXNjaWkgaW5wdXRzLlxuXHRmdW5jdGlvbiBhZGxlcjMyKGRhdGEpIHtc
blx0ICB2YXIgYSA9IDE7XG5cdCAgdmFyIGIgPSAwO1xuXHQgIHZhciBpID0gMDtcblx0ICB2YXIg
bCA9IGRhdGEubGVuZ3RoO1xuXHQgIHZhciBtID0gbCAmIH4weDM7XG5cdCAgd2hpbGUgKGkgPCBt
KSB7XG5cdCAgICB2YXIgbiA9IE1hdGgubWluKGkgKyA0MDk2LCBtKTtcblx0ICAgIGZvciAoOyBp
IDwgbjsgaSArPSA0KSB7XG5cdCAgICAgIGIgKz0gKGEgKz0gZGF0YS5jaGFyQ29kZUF0KGkpKSAr
IChhICs9IGRhdGEuY2hhckNvZGVBdChpICsgMSkpICsgKGEgKz0gZGF0YS5jaGFyQ29kZUF0KGkg
KyAyKSkgKyAoYSArPSBkYXRhLmNoYXJDb2RlQXQoaSArIDMpKTtcblx0ICAgIH1cblx0ICAgIGEg
JT0gTU9EO1xuXHQgICAgYiAlPSBNT0Q7XG5cdCAgfVxuXHQgIGZvciAoOyBpIDwgbDsgaSsrKSB7
XG5cdCAgICBiICs9IGEgKz0gZGF0YS5jaGFyQ29kZUF0KGkpO1xuXHQgIH1cblx0ICBhICU9IE1P
RDtcblx0ICBiICU9IE1PRDtcblx0ICByZXR1cm4gYSB8IGIgPDwgMTY7XG5cdH1cblx0XG5cdG1v
ZHVsZS5leHBvcnRzID0gYWRsZXIzMjtcblxuLyoqKi8gfSxcbi8qIDE3OCAqL1xuLyoqKi8gZnVu
Y3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0LyoqXG5c
dCAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5k
ZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUg
aW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwg
Z3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMg
ZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqL1xuXHRcblx0J3VzZSBzdHJp
Y3QnO1xuXHRcblx0dmFyIENTU1Byb3BlcnR5ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1OCk7XG5c
dHZhciB3YXJuaW5nID0gX193ZWJwYWNrX3JlcXVpcmVfXygyKTtcblx0XG5cdHZhciBpc1VuaXRs
ZXNzTnVtYmVyID0gQ1NTUHJvcGVydHkuaXNVbml0bGVzc051bWJlcjtcblx0dmFyIHN0eWxlV2Fy
bmluZ3MgPSB7fTtcblx0XG5cdC8qKlxuXHQgKiBDb252ZXJ0IGEgdmFsdWUgaW50byB0aGUgcHJv
cGVyIGNzcyB3cml0YWJsZSB2YWx1ZS4gVGhlIHN0eWxlIG5hbWUgYG5hbWVgXG5cdCAqIHNob3Vs
ZCBiZSBsb2dpY2FsIChubyBoeXBoZW5zKSwgYXMgc3BlY2lmaWVkXG5cdCAqIGluIGBDU1NQcm9w
ZXJ0eS5pc1VuaXRsZXNzTnVtYmVyYC5cblx0ICpcblx0ICogQHBhcmFtIHtzdHJpbmd9IG5hbWUg
Q1NTIHByb3BlcnR5IG5hbWUgc3VjaCBhcyBgdG9wTWFyZ2luYC5cblx0ICogQHBhcmFtIHsqfSB2
YWx1ZSBDU1MgcHJvcGVydHkgdmFsdWUgc3VjaCBhcyBgMTBweGAuXG5cdCAqIEBwYXJhbSB7UmVh
Y3RET01Db21wb25lbnR9IGNvbXBvbmVudFxuXHQgKiBAcmV0dXJuIHtzdHJpbmd9IE5vcm1hbGl6
ZWQgc3R5bGUgdmFsdWUgd2l0aCBkaW1lbnNpb25zIGFwcGxpZWQuXG5cdCAqL1xuXHRmdW5jdGlv
biBkYW5nZXJvdXNTdHlsZVZhbHVlKG5hbWUsIHZhbHVlLCBjb21wb25lbnQsIGlzQ3VzdG9tUHJv
cGVydHkpIHtcblx0ICAvLyBOb3RlIHRoYXQgd2UndmUgcmVtb3ZlZCBlc2NhcGVUZXh0Rm9yQnJv
d3NlcigpIGNhbGxzIGhlcmUgc2luY2UgdGhlXG5cdCAgLy8gd2hvbGUgc3RyaW5nIHdpbGwgYmUg
ZXNjYXBlZCB3aGVuIHRoZSBhdHRyaWJ1dGUgaXMgaW5qZWN0ZWQgaW50b1xuXHQgIC8vIHRoZSBt
YXJrdXAuIElmIHlvdSBwcm92aWRlIHVuc2FmZSB1c2VyIGRhdGEgaGVyZSB0aGV5IGNhbiBpbmpl
Y3Rcblx0ICAvLyBhcmJpdHJhcnkgQ1NTIHdoaWNoIG1heSBiZSBwcm9ibGVtYXRpYyAoSSBjb3Vs
ZG4ndCByZXBybyB0aGlzKTpcblx0ICAvLyBodHRwczovL3d3dy5vd2FzcC5vcmcvaW5kZXgucGhw
L1hTU19GaWx0ZXJfRXZhc2lvbl9DaGVhdF9TaGVldFxuXHQgIC8vIGh0dHA6Ly93d3cudGhlc3Bh
bm5lci5jby51ay8yMDA3LzExLzI2L3VsdGltYXRlLXhzcy1jc3MtaW5qZWN0aW9uL1xuXHQgIC8v
IFRoaXMgaXMgbm90IGFuIFhTUyBob2xlIGJ1dCBpbnN0ZWFkIGEgcG90ZW50aWFsIENTUyBpbmpl
Y3Rpb24gaXNzdWVcblx0ICAvLyB3aGljaCBoYXMgbGVhZCB0byBhIGdyZWF0ZXIgZGlzY3Vzc2lv
biBhYm91dCBob3cgd2UncmUgZ29pbmcgdG9cblx0ICAvLyB0cnVzdCBVUkxzIG1vdmluZyBmb3J3
YXJkLiBTZWUgIzIxMTU5MDFcblx0XG5cdCAgdmFyIGlzRW1wdHkgPSB2YWx1ZSA9PSBudWxsIHx8
IHR5cGVvZiB2YWx1ZSA9PT0gJ2Jvb2xlYW4nIHx8IHZhbHVlID09PSAnJztcblx0ICBpZiAoaXNF
bXB0eSkge1xuXHQgICAgcmV0dXJuICcnO1xuXHQgIH1cblx0XG5cdCAgdmFyIGlzTm9uTnVtZXJp
YyA9IGlzTmFOKHZhbHVlKTtcblx0ICBpZiAoaXNDdXN0b21Qcm9wZXJ0eSB8fCBpc05vbk51bWVy
aWMgfHwgdmFsdWUgPT09IDAgfHwgaXNVbml0bGVzc051bWJlci5oYXNPd25Qcm9wZXJ0eShuYW1l
KSAmJiBpc1VuaXRsZXNzTnVtYmVyW25hbWVdKSB7XG5cdCAgICByZXR1cm4gJycgKyB2YWx1ZTsg
Ly8gY2FzdCB0byBzdHJpbmdcblx0ICB9XG5cdFxuXHQgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdz
dHJpbmcnKSB7XG5cdCAgICBpZiAoZmFsc2UpIHtcblx0ICAgICAgLy8gQWxsb3cgJzAnIHRvIHBh
c3MgdGhyb3VnaCB3aXRob3V0IHdhcm5pbmcuIDAgaXMgYWxyZWFkeSBzcGVjaWFsIGFuZFxuXHQg
ICAgICAvLyBkb2Vzbid0IHJlcXVpcmUgdW5pdHMsIHNvIHdlIGRvbid0IG5lZWQgdG8gd2FybiBh
Ym91dCBpdC5cblx0ICAgICAgaWYgKGNvbXBvbmVudCAmJiB2YWx1ZSAhPT0gJzAnKSB7XG5cdCAg
ICAgICAgdmFyIG93bmVyID0gY29tcG9uZW50Ll9jdXJyZW50RWxlbWVudC5fb3duZXI7XG5cdCAg
ICAgICAgdmFyIG93bmVyTmFtZSA9IG93bmVyID8gb3duZXIuZ2V0TmFtZSgpIDogbnVsbDtcblx0
ICAgICAgICBpZiAob3duZXJOYW1lICYmICFzdHlsZVdhcm5pbmdzW293bmVyTmFtZV0pIHtcblx0
ICAgICAgICAgIHN0eWxlV2FybmluZ3Nbb3duZXJOYW1lXSA9IHt9O1xuXHQgICAgICAgIH1cblx0
ICAgICAgICB2YXIgd2FybmVkID0gZmFsc2U7XG5cdCAgICAgICAgaWYgKG93bmVyTmFtZSkge1xu
XHQgICAgICAgICAgdmFyIHdhcm5pbmdzID0gc3R5bGVXYXJuaW5nc1tvd25lck5hbWVdO1xuXHQg
ICAgICAgICAgd2FybmVkID0gd2FybmluZ3NbbmFtZV07XG5cdCAgICAgICAgICBpZiAoIXdhcm5l
ZCkge1xuXHQgICAgICAgICAgICB3YXJuaW5nc1tuYW1lXSA9IHRydWU7XG5cdCAgICAgICAgICB9
XG5cdCAgICAgICAgfVxuXHQgICAgICAgIGlmICghd2FybmVkKSB7XG5cdCAgICAgICAgICBwcm9j
ZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ2EgYCVz
YCB0YWcgKG93bmVyOiBgJXNgKSB3YXMgcGFzc2VkIGEgbnVtZXJpYyBzdHJpbmcgdmFsdWUgJyAr
ICdmb3IgQ1NTIHByb3BlcnR5IGAlc2AgKHZhbHVlOiBgJXNgKSB3aGljaCB3aWxsIGJlIHRyZWF0
ZWQgJyArICdhcyBhIHVuaXRsZXNzIG51bWJlciBpbiBhIGZ1dHVyZSB2ZXJzaW9uIG9mIFJlYWN0
LicsIGNvbXBvbmVudC5fY3VycmVudEVsZW1lbnQudHlwZSwgb3duZXJOYW1lIHx8ICd1bmtub3du
JywgbmFtZSwgdmFsdWUpIDogdm9pZCAwO1xuXHQgICAgICAgIH1cblx0ICAgICAgfVxuXHQgICAg
fVxuXHQgICAgdmFsdWUgPSB2YWx1ZS50cmltKCk7XG5cdCAgfVxuXHQgIHJldHVybiB2YWx1ZSAr
ICdweCc7XG5cdH1cblx0XG5cdG1vZHVsZS5leHBvcnRzID0gZGFuZ2Vyb3VzU3R5bGVWYWx1ZTtc
blxuLyoqKi8gfSxcbi8qIDE3OSAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBf
X3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAyMDEzLXByZXNl
bnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAq
IFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNl
IGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9m
IHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJp
Z2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3Rv
cnkuXG5cdCAqXG5cdCAqL1xuXHRcblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0dmFyIF9wcm9kSW52
YXJpYW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXygzKTtcblx0XG5cdHZhciBSZWFjdEN1cnJlbnRP
d25lciA9IF9fd2VicGFja19yZXF1aXJlX18oMTEpO1xuXHR2YXIgUmVhY3RET01Db21wb25lbnRU
cmVlID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1KTtcblx0dmFyIFJlYWN0SW5zdGFuY2VNYXAgPSBf
X3dlYnBhY2tfcmVxdWlyZV9fKDIxKTtcblx0XG5cdHZhciBnZXRIb3N0Q29tcG9uZW50RnJvbUNv
bXBvc2l0ZSA9IF9fd2VicGFja19yZXF1aXJlX18oNzIpO1xuXHR2YXIgaW52YXJpYW50ID0gX193
ZWJwYWNrX3JlcXVpcmVfXygxKTtcblx0dmFyIHdhcm5pbmcgPSBfX3dlYnBhY2tfcmVxdWlyZV9f
KDIpO1xuXHRcblx0LyoqXG5cdCAqIFJldHVybnMgdGhlIERPTSBub2RlIHJlbmRlcmVkIGJ5IHRo
aXMgZWxlbWVudC5cblx0ICpcblx0ICogU2VlIGh0dHBzOi8vZmFjZWJvb2suZ2l0aHViLmlvL3Jl
YWN0L2RvY3MvdG9wLWxldmVsLWFwaS5odG1sI3JlYWN0ZG9tLmZpbmRkb21ub2RlXG5cdCAqXG5c
dCAqIEBwYXJhbSB7UmVhY3RDb21wb25lbnR8RE9NRWxlbWVudH0gY29tcG9uZW50T3JFbGVtZW50
XG5cdCAqIEByZXR1cm4gez9ET01FbGVtZW50fSBUaGUgcm9vdCBub2RlIG9mIHRoaXMgZWxlbWVu
dC5cblx0ICovXG5cdGZ1bmN0aW9uIGZpbmRET01Ob2RlKGNvbXBvbmVudE9yRWxlbWVudCkge1xu
XHQgIGlmIChmYWxzZSkge1xuXHQgICAgdmFyIG93bmVyID0gUmVhY3RDdXJyZW50T3duZXIuY3Vy
cmVudDtcblx0ICAgIGlmIChvd25lciAhPT0gbnVsbCkge1xuXHQgICAgICBwcm9jZXNzLmVudi5O
T0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhvd25lci5fd2FybmVkQWJvdXRSZWZz
SW5SZW5kZXIsICclcyBpcyBhY2Nlc3NpbmcgZmluZERPTU5vZGUgaW5zaWRlIGl0cyByZW5kZXIo
KS4gJyArICdyZW5kZXIoKSBzaG91bGQgYmUgYSBwdXJlIGZ1bmN0aW9uIG9mIHByb3BzIGFuZCBz
dGF0ZS4gSXQgc2hvdWxkICcgKyAnbmV2ZXIgYWNjZXNzIHNvbWV0aGluZyB0aGF0IHJlcXVpcmVz
IHN0YWxlIGRhdGEgZnJvbSB0aGUgcHJldmlvdXMgJyArICdyZW5kZXIsIHN1Y2ggYXMgcmVmcy4g
TW92ZSB0aGlzIGxvZ2ljIHRvIGNvbXBvbmVudERpZE1vdW50IGFuZCAnICsgJ2NvbXBvbmVudERp
ZFVwZGF0ZSBpbnN0ZWFkLicsIG93bmVyLmdldE5hbWUoKSB8fCAnQSBjb21wb25lbnQnKSA6IHZv
aWQgMDtcblx0ICAgICAgb3duZXIuX3dhcm5lZEFib3V0UmVmc0luUmVuZGVyID0gdHJ1ZTtcblx0
ICAgIH1cblx0ICB9XG5cdCAgaWYgKGNvbXBvbmVudE9yRWxlbWVudCA9PSBudWxsKSB7XG5cdCAg
ICByZXR1cm4gbnVsbDtcblx0ICB9XG5cdCAgaWYgKGNvbXBvbmVudE9yRWxlbWVudC5ub2RlVHlw
ZSA9PT0gMSkge1xuXHQgICAgcmV0dXJuIGNvbXBvbmVudE9yRWxlbWVudDtcblx0ICB9XG5cdFxu
XHQgIHZhciBpbnN0ID0gUmVhY3RJbnN0YW5jZU1hcC5nZXQoY29tcG9uZW50T3JFbGVtZW50KTtc
blx0ICBpZiAoaW5zdCkge1xuXHQgICAgaW5zdCA9IGdldEhvc3RDb21wb25lbnRGcm9tQ29tcG9z
aXRlKGluc3QpO1xuXHQgICAgcmV0dXJuIGluc3QgPyBSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0
Tm9kZUZyb21JbnN0YW5jZShpbnN0KSA6IG51bGw7XG5cdCAgfVxuXHRcblx0ICBpZiAodHlwZW9m
IGNvbXBvbmVudE9yRWxlbWVudC5yZW5kZXIgPT09ICdmdW5jdGlvbicpIHtcblx0ICAgICB0cnVl
ID8gIGZhbHNlID8gaW52YXJpYW50KGZhbHNlLCAnZmluZERPTU5vZGUgd2FzIGNhbGxlZCBvbiBh
biB1bm1vdW50ZWQgY29tcG9uZW50LicpIDogX3Byb2RJbnZhcmlhbnQoJzQ0JykgOiB2b2lkIDA7
XG5cdCAgfSBlbHNlIHtcblx0ICAgICB0cnVlID8gIGZhbHNlID8gaW52YXJpYW50KGZhbHNlLCAn
RWxlbWVudCBhcHBlYXJzIHRvIGJlIG5laXRoZXIgUmVhY3RDb21wb25lbnQgbm9yIERPTU5vZGUg
KGtleXM6ICVzKScsIE9iamVjdC5rZXlzKGNvbXBvbmVudE9yRWxlbWVudCkpIDogX3Byb2RJbnZh
cmlhbnQoJzQ1JywgT2JqZWN0LmtleXMoY29tcG9uZW50T3JFbGVtZW50KSkgOiB2b2lkIDA7XG5c
dCAgfVxuXHR9XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IGZpbmRET01Ob2RlO1xuXG4vKioqLyB9
LFxuLyogMTgwICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19y
ZXF1aXJlX18pIHtcblxuXHQvKiBXRUJQQUNLIFZBUiBJTkpFQ1RJT04gKi8oZnVuY3Rpb24ocHJv
Y2Vzcykgey8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxu
XHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlz
IGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICog
TElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBB
biBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGlu
IHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKiBcblx0
ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHR2YXIgS2V5RXNjYXBlVXRpbHMgPSBfX3dl
YnBhY2tfcmVxdWlyZV9fKDM4KTtcblx0dmFyIHRyYXZlcnNlQWxsQ2hpbGRyZW4gPSBfX3dlYnBh
Y2tfcmVxdWlyZV9fKDc4KTtcblx0dmFyIHdhcm5pbmcgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIp
O1xuXHRcblx0dmFyIFJlYWN0Q29tcG9uZW50VHJlZUhvb2s7XG5cdFxuXHRpZiAodHlwZW9mIHBy
b2Nlc3MgIT09ICd1bmRlZmluZWQnICYmIHByb2Nlc3MuZW52ICYmIChcInByb2R1Y3Rpb25cIikg
PT09ICd0ZXN0Jykge1xuXHQgIC8vIFRlbXBvcmFyeSBoYWNrLlxuXHQgIC8vIElubGluZSByZXF1
aXJlcyBkb24ndCB3b3JrIHdlbGwgd2l0aCBKZXN0OlxuXHQgIC8vIGh0dHBzOi8vZ2l0aHViLmNv
bS9mYWNlYm9vay9yZWFjdC9pc3N1ZXMvNzI0MFxuXHQgIC8vIFJlbW92ZSB0aGUgaW5saW5lIHJl
cXVpcmVzIHdoZW4gd2UgZG9uJ3QgbmVlZCB0aGVtIGFueW1vcmU6XG5cdCAgLy8gaHR0cHM6Ly9n
aXRodWIuY29tL2ZhY2Vib29rL3JlYWN0L3B1bGwvNzE3OFxuXHQgIFJlYWN0Q29tcG9uZW50VHJl
ZUhvb2sgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDkwKTtcblx0fVxuXHRcblx0LyoqXG5cdCAqIEBw
YXJhbSB7ZnVuY3Rpb259IHRyYXZlcnNlQ29udGV4dCBDb250ZXh0IHBhc3NlZCB0aHJvdWdoIHRy
YXZlcnNhbC5cblx0ICogQHBhcmFtIHs/UmVhY3RDb21wb25lbnR9IGNoaWxkIFJlYWN0IGNoaWxk
IGNvbXBvbmVudC5cblx0ICogQHBhcmFtIHshc3RyaW5nfSBuYW1lIFN0cmluZyBuYW1lIG9mIGtl
eSBwYXRoIHRvIGNoaWxkLlxuXHQgKiBAcGFyYW0ge251bWJlcj19IHNlbGZEZWJ1Z0lEIE9wdGlv
bmFsIGRlYnVnSUQgb2YgdGhlIGN1cnJlbnQgaW50ZXJuYWwgaW5zdGFuY2UuXG5cdCAqL1xuXHRm
dW5jdGlvbiBmbGF0dGVuU2luZ2xlQ2hpbGRJbnRvQ29udGV4dCh0cmF2ZXJzZUNvbnRleHQsIGNo
aWxkLCBuYW1lLCBzZWxmRGVidWdJRCkge1xuXHQgIC8vIFdlIGZvdW5kIGEgY29tcG9uZW50IGlu
c3RhbmNlLlxuXHQgIGlmICh0cmF2ZXJzZUNvbnRleHQgJiYgdHlwZW9mIHRyYXZlcnNlQ29udGV4
dCA9PT0gJ29iamVjdCcpIHtcblx0ICAgIHZhciByZXN1bHQgPSB0cmF2ZXJzZUNvbnRleHQ7XG5c
dCAgICB2YXIga2V5VW5pcXVlID0gcmVzdWx0W25hbWVdID09PSB1bmRlZmluZWQ7XG5cdCAgICBp
ZiAoZmFsc2UpIHtcblx0ICAgICAgaWYgKCFSZWFjdENvbXBvbmVudFRyZWVIb29rKSB7XG5cdCAg
ICAgICAgUmVhY3RDb21wb25lbnRUcmVlSG9vayA9IHJlcXVpcmUoJ3JlYWN0L2xpYi9SZWFjdENv
bXBvbmVudFRyZWVIb29rJyk7XG5cdCAgICAgIH1cblx0ICAgICAgaWYgKCFrZXlVbmlxdWUpIHtc
blx0ICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2Fybmlu
ZyhmYWxzZSwgJ2ZsYXR0ZW5DaGlsZHJlbiguLi4pOiBFbmNvdW50ZXJlZCB0d28gY2hpbGRyZW4g
d2l0aCB0aGUgc2FtZSBrZXksICcgKyAnYCVzYC4gQ2hpbGQga2V5cyBtdXN0IGJlIHVuaXF1ZTsg
d2hlbiB0d28gY2hpbGRyZW4gc2hhcmUgYSBrZXksIG9ubHkgJyArICd0aGUgZmlyc3QgY2hpbGQg
d2lsbCBiZSB1c2VkLiVzJywgS2V5RXNjYXBlVXRpbHMudW5lc2NhcGUobmFtZSksIFJlYWN0Q29t
cG9uZW50VHJlZUhvb2suZ2V0U3RhY2tBZGRlbmR1bUJ5SUQoc2VsZkRlYnVnSUQpKSA6IHZvaWQg
MDtcblx0ICAgICAgfVxuXHQgICAgfVxuXHQgICAgaWYgKGtleVVuaXF1ZSAmJiBjaGlsZCAhPSBu
dWxsKSB7XG5cdCAgICAgIHJlc3VsdFtuYW1lXSA9IGNoaWxkO1xuXHQgICAgfVxuXHQgIH1cblx0
fVxuXHRcblx0LyoqXG5cdCAqIEZsYXR0ZW5zIGNoaWxkcmVuIHRoYXQgYXJlIHR5cGljYWxseSBz
cGVjaWZpZWQgYXMgYHByb3BzLmNoaWxkcmVuYC4gQW55IG51bGxcblx0ICogY2hpbGRyZW4gd2ls
bCBub3QgYmUgaW5jbHVkZWQgaW4gdGhlIHJlc3VsdGluZyBvYmplY3QuXG5cdCAqIEByZXR1cm4g
eyFvYmplY3R9IGZsYXR0ZW5lZCBjaGlsZHJlbiBrZXllZCBieSBuYW1lLlxuXHQgKi9cblx0ZnVu
Y3Rpb24gZmxhdHRlbkNoaWxkcmVuKGNoaWxkcmVuLCBzZWxmRGVidWdJRCkge1xuXHQgIGlmIChj
aGlsZHJlbiA9PSBudWxsKSB7XG5cdCAgICByZXR1cm4gY2hpbGRyZW47XG5cdCAgfVxuXHQgIHZh
ciByZXN1bHQgPSB7fTtcblx0XG5cdCAgaWYgKGZhbHNlKSB7XG5cdCAgICB0cmF2ZXJzZUFsbENo
aWxkcmVuKGNoaWxkcmVuLCBmdW5jdGlvbiAodHJhdmVyc2VDb250ZXh0LCBjaGlsZCwgbmFtZSkg
e1xuXHQgICAgICByZXR1cm4gZmxhdHRlblNpbmdsZUNoaWxkSW50b0NvbnRleHQodHJhdmVyc2VD
b250ZXh0LCBjaGlsZCwgbmFtZSwgc2VsZkRlYnVnSUQpO1xuXHQgICAgfSwgcmVzdWx0KTtcblx0
ICB9IGVsc2Uge1xuXHQgICAgdHJhdmVyc2VBbGxDaGlsZHJlbihjaGlsZHJlbiwgZmxhdHRlblNp
bmdsZUNoaWxkSW50b0NvbnRleHQsIHJlc3VsdCk7XG5cdCAgfVxuXHQgIHJldHVybiByZXN1bHQ7
XG5cdH1cblx0XG5cdG1vZHVsZS5leHBvcnRzID0gZmxhdHRlbkNoaWxkcmVuO1xuXHQvKiBXRUJQ
QUNLIFZBUiBJTkpFQ1RJT04gKi99LmNhbGwoZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyg4
NykpKVxuXG4vKioqLyB9LFxuLyogMTgxICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9y
dHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvKipcblx0ICogQ29weXJpZ2h0IDIwMTMt
cHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpc
blx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxp
Y2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rv
cnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRl
bnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRp
cmVjdG9yeS5cblx0ICpcblx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHR2YXIgZ2V0
RXZlbnRDaGFyQ29kZSA9IF9fd2VicGFja19yZXF1aXJlX18oNDQpO1xuXHRcblx0LyoqXG5cdCAq
IE5vcm1hbGl6YXRpb24gb2YgZGVwcmVjYXRlZCBIVE1MNSBga2V5YCB2YWx1ZXNcblx0ICogQHNl
ZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvS2V5Ym9h
cmRFdmVudCNLZXlfbmFtZXNcblx0ICovXG5cdHZhciBub3JtYWxpemVLZXkgPSB7XG5cdCAgRXNj
OiAnRXNjYXBlJyxcblx0ICBTcGFjZWJhcjogJyAnLFxuXHQgIExlZnQ6ICdBcnJvd0xlZnQnLFxu
XHQgIFVwOiAnQXJyb3dVcCcsXG5cdCAgUmlnaHQ6ICdBcnJvd1JpZ2h0Jyxcblx0ICBEb3duOiAn
QXJyb3dEb3duJyxcblx0ICBEZWw6ICdEZWxldGUnLFxuXHQgIFdpbjogJ09TJyxcblx0ICBNZW51
OiAnQ29udGV4dE1lbnUnLFxuXHQgIEFwcHM6ICdDb250ZXh0TWVudScsXG5cdCAgU2Nyb2xsOiAn
U2Nyb2xsTG9jaycsXG5cdCAgTW96UHJpbnRhYmxlS2V5OiAnVW5pZGVudGlmaWVkJ1xuXHR9O1xu
XHRcblx0LyoqXG5cdCAqIFRyYW5zbGF0aW9uIGZyb20gbGVnYWN5IGBrZXlDb2RlYCB0byBIVE1M
NSBga2V5YFxuXHQgKiBPbmx5IHNwZWNpYWwga2V5cyBzdXBwb3J0ZWQsIGFsbCBvdGhlcnMgZGVw
ZW5kIG9uIGtleWJvYXJkIGxheW91dCBvciBicm93c2VyXG5cdCAqIEBzZWUgaHR0cHM6Ly9kZXZl
bG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0tleWJvYXJkRXZlbnQjS2V5X25h
bWVzXG5cdCAqL1xuXHR2YXIgdHJhbnNsYXRlVG9LZXkgPSB7XG5cdCAgODogJ0JhY2tzcGFjZScs
XG5cdCAgOTogJ1RhYicsXG5cdCAgMTI6ICdDbGVhcicsXG5cdCAgMTM6ICdFbnRlcicsXG5cdCAg
MTY6ICdTaGlmdCcsXG5cdCAgMTc6ICdDb250cm9sJyxcblx0ICAxODogJ0FsdCcsXG5cdCAgMTk6
ICdQYXVzZScsXG5cdCAgMjA6ICdDYXBzTG9jaycsXG5cdCAgMjc6ICdFc2NhcGUnLFxuXHQgIDMy
OiAnICcsXG5cdCAgMzM6ICdQYWdlVXAnLFxuXHQgIDM0OiAnUGFnZURvd24nLFxuXHQgIDM1OiAn
RW5kJyxcblx0ICAzNjogJ0hvbWUnLFxuXHQgIDM3OiAnQXJyb3dMZWZ0Jyxcblx0ICAzODogJ0Fy
cm93VXAnLFxuXHQgIDM5OiAnQXJyb3dSaWdodCcsXG5cdCAgNDA6ICdBcnJvd0Rvd24nLFxuXHQg
IDQ1OiAnSW5zZXJ0Jyxcblx0ICA0NjogJ0RlbGV0ZScsXG5cdCAgMTEyOiAnRjEnLFxuXHQgIDEx
MzogJ0YyJyxcblx0ICAxMTQ6ICdGMycsXG5cdCAgMTE1OiAnRjQnLFxuXHQgIDExNjogJ0Y1Jyxc
blx0ICAxMTc6ICdGNicsXG5cdCAgMTE4OiAnRjcnLFxuXHQgIDExOTogJ0Y4Jyxcblx0ICAxMjA6
ICdGOScsXG5cdCAgMTIxOiAnRjEwJyxcblx0ICAxMjI6ICdGMTEnLFxuXHQgIDEyMzogJ0YxMics
XG5cdCAgMTQ0OiAnTnVtTG9jaycsXG5cdCAgMTQ1OiAnU2Nyb2xsTG9jaycsXG5cdCAgMjI0OiAn
TWV0YSdcblx0fTtcblx0XG5cdC8qKlxuXHQgKiBAcGFyYW0ge29iamVjdH0gbmF0aXZlRXZlbnQg
TmF0aXZlIGJyb3dzZXIgZXZlbnQuXG5cdCAqIEByZXR1cm4ge3N0cmluZ30gTm9ybWFsaXplZCBg
a2V5YCBwcm9wZXJ0eS5cblx0ICovXG5cdGZ1bmN0aW9uIGdldEV2ZW50S2V5KG5hdGl2ZUV2ZW50
KSB7XG5cdCAgaWYgKG5hdGl2ZUV2ZW50LmtleSkge1xuXHQgICAgLy8gTm9ybWFsaXplIGluY29u
c2lzdGVudCB2YWx1ZXMgcmVwb3J0ZWQgYnkgYnJvd3NlcnMgZHVlIHRvXG5cdCAgICAvLyBpbXBs
ZW1lbnRhdGlvbnMgb2YgYSB3b3JraW5nIGRyYWZ0IHNwZWNpZmljYXRpb24uXG5cdFxuXHQgICAg
Ly8gRmlyZUZveCBpbXBsZW1lbnRzIGBrZXlgIGJ1dCByZXR1cm5zIGBNb3pQcmludGFibGVLZXlg
IGZvciBhbGxcblx0ICAgIC8vIHByaW50YWJsZSBjaGFyYWN0ZXJzIChub3JtYWxpemVkIHRvIGBV
bmlkZW50aWZpZWRgKSwgaWdub3JlIGl0LlxuXHQgICAgdmFyIGtleSA9IG5vcm1hbGl6ZUtleVtu
YXRpdmVFdmVudC5rZXldIHx8IG5hdGl2ZUV2ZW50LmtleTtcblx0ICAgIGlmIChrZXkgIT09ICdV
bmlkZW50aWZpZWQnKSB7XG5cdCAgICAgIHJldHVybiBrZXk7XG5cdCAgICB9XG5cdCAgfVxuXHRc
blx0ICAvLyBCcm93c2VyIGRvZXMgbm90IGltcGxlbWVudCBga2V5YCwgcG9seWZpbGwgYXMgbXVj
aCBvZiBpdCBhcyB3ZSBjYW4uXG5cdCAgaWYgKG5hdGl2ZUV2ZW50LnR5cGUgPT09ICdrZXlwcmVz
cycpIHtcblx0ICAgIHZhciBjaGFyQ29kZSA9IGdldEV2ZW50Q2hhckNvZGUobmF0aXZlRXZlbnQp
O1xuXHRcblx0ICAgIC8vIFRoZSBlbnRlci1rZXkgaXMgdGVjaG5pY2FsbHkgYm90aCBwcmludGFi
bGUgYW5kIG5vbi1wcmludGFibGUgYW5kIGNhblxuXHQgICAgLy8gdGh1cyBiZSBjYXB0dXJlZCBi
eSBga2V5cHJlc3NgLCBubyBvdGhlciBub24tcHJpbnRhYmxlIGtleSBzaG91bGQuXG5cdCAgICBy
ZXR1cm4gY2hhckNvZGUgPT09IDEzID8gJ0VudGVyJyA6IFN0cmluZy5mcm9tQ2hhckNvZGUoY2hh
ckNvZGUpO1xuXHQgIH1cblx0ICBpZiAobmF0aXZlRXZlbnQudHlwZSA9PT0gJ2tleWRvd24nIHx8
IG5hdGl2ZUV2ZW50LnR5cGUgPT09ICdrZXl1cCcpIHtcblx0ICAgIC8vIFdoaWxlIHVzZXIga2V5
Ym9hcmQgbGF5b3V0IGRldGVybWluZXMgdGhlIGFjdHVhbCBtZWFuaW5nIG9mIGVhY2hcblx0ICAg
IC8vIGBrZXlDb2RlYCB2YWx1ZSwgYWxtb3N0IGFsbCBmdW5jdGlvbiBrZXlzIGhhdmUgYSB1bml2
ZXJzYWwgdmFsdWUuXG5cdCAgICByZXR1cm4gdHJhbnNsYXRlVG9LZXlbbmF0aXZlRXZlbnQua2V5
Q29kZV0gfHwgJ1VuaWRlbnRpZmllZCc7XG5cdCAgfVxuXHQgIHJldHVybiAnJztcblx0fVxuXHRc
blx0bW9kdWxlLmV4cG9ydHMgPSBnZXRFdmVudEtleTtcblxuLyoqKi8gfSxcbi8qIDE4MiAqL1xu
LyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cblx0LyoqXG5cdCAqIENvcHlyaWdo
dCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQu
XG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1z
dHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qg
ZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICog
b2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUg
c2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqIFxuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0Jztc
blx0XG5cdC8qIGdsb2JhbCBTeW1ib2wgKi9cblx0XG5cdHZhciBJVEVSQVRPUl9TWU1CT0wgPSB0
eXBlb2YgU3ltYm9sID09PSAnZnVuY3Rpb24nICYmIFN5bWJvbC5pdGVyYXRvcjtcblx0dmFyIEZB
VVhfSVRFUkFUT1JfU1lNQk9MID0gJ0BAaXRlcmF0b3InOyAvLyBCZWZvcmUgU3ltYm9sIHNwZWMu
XG5cdFxuXHQvKipcblx0ICogUmV0dXJucyB0aGUgaXRlcmF0b3IgbWV0aG9kIGZ1bmN0aW9uIGNv
bnRhaW5lZCBvbiB0aGUgaXRlcmFibGUgb2JqZWN0LlxuXHQgKlxuXHQgKiBCZSBzdXJlIHRvIGlu
dm9rZSB0aGUgZnVuY3Rpb24gd2l0aCB0aGUgaXRlcmFibGUgYXMgY29udGV4dDpcblx0ICpcblx0
ICogICAgIHZhciBpdGVyYXRvckZuID0gZ2V0SXRlcmF0b3JGbihteUl0ZXJhYmxlKTtcblx0ICog
ICAgIGlmIChpdGVyYXRvckZuKSB7XG5cdCAqICAgICAgIHZhciBpdGVyYXRvciA9IGl0ZXJhdG9y
Rm4uY2FsbChteUl0ZXJhYmxlKTtcblx0ICogICAgICAgLi4uXG5cdCAqICAgICB9XG5cdCAqXG5c
dCAqIEBwYXJhbSB7P29iamVjdH0gbWF5YmVJdGVyYWJsZVxuXHQgKiBAcmV0dXJuIHs/ZnVuY3Rp
b259XG5cdCAqL1xuXHRmdW5jdGlvbiBnZXRJdGVyYXRvckZuKG1heWJlSXRlcmFibGUpIHtcblx0
ICB2YXIgaXRlcmF0b3JGbiA9IG1heWJlSXRlcmFibGUgJiYgKElURVJBVE9SX1NZTUJPTCAmJiBt
YXliZUl0ZXJhYmxlW0lURVJBVE9SX1NZTUJPTF0gfHwgbWF5YmVJdGVyYWJsZVtGQVVYX0lURVJB
VE9SX1NZTUJPTF0pO1xuXHQgIGlmICh0eXBlb2YgaXRlcmF0b3JGbiA9PT0gJ2Z1bmN0aW9uJykg
e1xuXHQgICAgcmV0dXJuIGl0ZXJhdG9yRm47XG5cdCAgfVxuXHR9XG5cdFxuXHRtb2R1bGUuZXhw
b3J0cyA9IGdldEl0ZXJhdG9yRm47XG5cbi8qKiovIH0sXG4vKiAxODMgKi9cbi8qKiovIGZ1bmN0
aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxMy1wcmVz
ZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQg
KiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5z
ZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBv
ZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCBy
aWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0
b3J5LlxuXHQgKlxuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdC8qKlxuXHQgKiBH
aXZlbiBhbnkgbm9kZSByZXR1cm4gdGhlIGZpcnN0IGxlYWYgbm9kZSB3aXRob3V0IGNoaWxkcmVu
LlxuXHQgKlxuXHQgKiBAcGFyYW0ge0RPTUVsZW1lbnR8RE9NVGV4dE5vZGV9IG5vZGVcblx0ICog
QHJldHVybiB7RE9NRWxlbWVudHxET01UZXh0Tm9kZX1cblx0ICovXG5cdFxuXHRmdW5jdGlvbiBn
ZXRMZWFmTm9kZShub2RlKSB7XG5cdCAgd2hpbGUgKG5vZGUgJiYgbm9kZS5maXJzdENoaWxkKSB7
XG5cdCAgICBub2RlID0gbm9kZS5maXJzdENoaWxkO1xuXHQgIH1cblx0ICByZXR1cm4gbm9kZTtc
blx0fVxuXHRcblx0LyoqXG5cdCAqIEdldCB0aGUgbmV4dCBzaWJsaW5nIHdpdGhpbiBhIGNvbnRh
aW5lci4gVGhpcyB3aWxsIHdhbGsgdXAgdGhlXG5cdCAqIERPTSBpZiBhIG5vZGUncyBzaWJsaW5n
cyBoYXZlIGJlZW4gZXhoYXVzdGVkLlxuXHQgKlxuXHQgKiBAcGFyYW0ge0RPTUVsZW1lbnR8RE9N
VGV4dE5vZGV9IG5vZGVcblx0ICogQHJldHVybiB7P0RPTUVsZW1lbnR8RE9NVGV4dE5vZGV9XG5c
dCAqL1xuXHRmdW5jdGlvbiBnZXRTaWJsaW5nTm9kZShub2RlKSB7XG5cdCAgd2hpbGUgKG5vZGUp
IHtcblx0ICAgIGlmIChub2RlLm5leHRTaWJsaW5nKSB7XG5cdCAgICAgIHJldHVybiBub2RlLm5l
eHRTaWJsaW5nO1xuXHQgICAgfVxuXHQgICAgbm9kZSA9IG5vZGUucGFyZW50Tm9kZTtcblx0ICB9
XG5cdH1cblx0XG5cdC8qKlxuXHQgKiBHZXQgb2JqZWN0IGRlc2NyaWJpbmcgdGhlIG5vZGVzIHdo
aWNoIGNvbnRhaW4gY2hhcmFjdGVycyBhdCBvZmZzZXQuXG5cdCAqXG5cdCAqIEBwYXJhbSB7RE9N
RWxlbWVudHxET01UZXh0Tm9kZX0gcm9vdFxuXHQgKiBAcGFyYW0ge251bWJlcn0gb2Zmc2V0XG5c
dCAqIEByZXR1cm4gez9vYmplY3R9XG5cdCAqL1xuXHRmdW5jdGlvbiBnZXROb2RlRm9yQ2hhcmFj
dGVyT2Zmc2V0KHJvb3QsIG9mZnNldCkge1xuXHQgIHZhciBub2RlID0gZ2V0TGVhZk5vZGUocm9v
dCk7XG5cdCAgdmFyIG5vZGVTdGFydCA9IDA7XG5cdCAgdmFyIG5vZGVFbmQgPSAwO1xuXHRcblx0
ICB3aGlsZSAobm9kZSkge1xuXHQgICAgaWYgKG5vZGUubm9kZVR5cGUgPT09IDMpIHtcblx0ICAg
ICAgbm9kZUVuZCA9IG5vZGVTdGFydCArIG5vZGUudGV4dENvbnRlbnQubGVuZ3RoO1xuXHRcblx0
ICAgICAgaWYgKG5vZGVTdGFydCA8PSBvZmZzZXQgJiYgbm9kZUVuZCA+PSBvZmZzZXQpIHtcblx0
ICAgICAgICByZXR1cm4ge1xuXHQgICAgICAgICAgbm9kZTogbm9kZSxcblx0ICAgICAgICAgIG9m
ZnNldDogb2Zmc2V0IC0gbm9kZVN0YXJ0XG5cdCAgICAgICAgfTtcblx0ICAgICAgfVxuXHRcblx0
ICAgICAgbm9kZVN0YXJ0ID0gbm9kZUVuZDtcblx0ICAgIH1cblx0XG5cdCAgICBub2RlID0gZ2V0
TGVhZk5vZGUoZ2V0U2libGluZ05vZGUobm9kZSkpO1xuXHQgIH1cblx0fVxuXHRcblx0bW9kdWxl
LmV4cG9ydHMgPSBnZXROb2RlRm9yQ2hhcmFjdGVyT2Zmc2V0O1xuXG4vKioqLyB9LFxuLyogMTg0
ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18p
IHtcblxuXHQvKipcblx0ICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5c
blx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBp
cyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAq
IExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4g
QW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBp
biB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpcblx0ICovXG5c
dFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHR2YXIgRXhlY3V0aW9uRW52aXJvbm1lbnQgPSBfX3dl
YnBhY2tfcmVxdWlyZV9fKDYpO1xuXHRcblx0LyoqXG5cdCAqIEdlbmVyYXRlIGEgbWFwcGluZyBv
ZiBzdGFuZGFyZCB2ZW5kb3IgcHJlZml4ZXMgdXNpbmcgdGhlIGRlZmluZWQgc3R5bGUgcHJvcGVy
dHkgYW5kIGV2ZW50IG5hbWUuXG5cdCAqXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBzdHlsZVByb3Bc
blx0ICogQHBhcmFtIHtzdHJpbmd9IGV2ZW50TmFtZVxuXHQgKiBAcmV0dXJucyB7b2JqZWN0fVxu
XHQgKi9cblx0ZnVuY3Rpb24gbWFrZVByZWZpeE1hcChzdHlsZVByb3AsIGV2ZW50TmFtZSkge1xu
XHQgIHZhciBwcmVmaXhlcyA9IHt9O1xuXHRcblx0ICBwcmVmaXhlc1tzdHlsZVByb3AudG9Mb3dl
ckNhc2UoKV0gPSBldmVudE5hbWUudG9Mb3dlckNhc2UoKTtcblx0ICBwcmVmaXhlc1snV2Via2l0
JyArIHN0eWxlUHJvcF0gPSAnd2Via2l0JyArIGV2ZW50TmFtZTtcblx0ICBwcmVmaXhlc1snTW96
JyArIHN0eWxlUHJvcF0gPSAnbW96JyArIGV2ZW50TmFtZTtcblx0ICBwcmVmaXhlc1snbXMnICsg
c3R5bGVQcm9wXSA9ICdNUycgKyBldmVudE5hbWU7XG5cdCAgcHJlZml4ZXNbJ08nICsgc3R5bGVQ
cm9wXSA9ICdvJyArIGV2ZW50TmFtZS50b0xvd2VyQ2FzZSgpO1xuXHRcblx0ICByZXR1cm4gcHJl
Zml4ZXM7XG5cdH1cblx0XG5cdC8qKlxuXHQgKiBBIGxpc3Qgb2YgZXZlbnQgbmFtZXMgdG8gYSBj
b25maWd1cmFibGUgbGlzdCBvZiB2ZW5kb3IgcHJlZml4ZXMuXG5cdCAqL1xuXHR2YXIgdmVuZG9y
UHJlZml4ZXMgPSB7XG5cdCAgYW5pbWF0aW9uZW5kOiBtYWtlUHJlZml4TWFwKCdBbmltYXRpb24n
LCAnQW5pbWF0aW9uRW5kJyksXG5cdCAgYW5pbWF0aW9uaXRlcmF0aW9uOiBtYWtlUHJlZml4TWFw
KCdBbmltYXRpb24nLCAnQW5pbWF0aW9uSXRlcmF0aW9uJyksXG5cdCAgYW5pbWF0aW9uc3RhcnQ6
IG1ha2VQcmVmaXhNYXAoJ0FuaW1hdGlvbicsICdBbmltYXRpb25TdGFydCcpLFxuXHQgIHRyYW5z
aXRpb25lbmQ6IG1ha2VQcmVmaXhNYXAoJ1RyYW5zaXRpb24nLCAnVHJhbnNpdGlvbkVuZCcpXG5c
dH07XG5cdFxuXHQvKipcblx0ICogRXZlbnQgbmFtZXMgdGhhdCBoYXZlIGFscmVhZHkgYmVlbiBk
ZXRlY3RlZCBhbmQgcHJlZml4ZWQgKGlmIGFwcGxpY2FibGUpLlxuXHQgKi9cblx0dmFyIHByZWZp
eGVkRXZlbnROYW1lcyA9IHt9O1xuXHRcblx0LyoqXG5cdCAqIEVsZW1lbnQgdG8gY2hlY2sgZm9y
IHByZWZpeGVzIG9uLlxuXHQgKi9cblx0dmFyIHN0eWxlID0ge307XG5cdFxuXHQvKipcblx0ICog
Qm9vdHN0cmFwIGlmIGEgRE9NIGV4aXN0cy5cblx0ICovXG5cdGlmIChFeGVjdXRpb25FbnZpcm9u
bWVudC5jYW5Vc2VET00pIHtcblx0ICBzdHlsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2Rp
dicpLnN0eWxlO1xuXHRcblx0ICAvLyBPbiBzb21lIHBsYXRmb3JtcywgaW4gcGFydGljdWxhciBz
b21lIHJlbGVhc2VzIG9mIEFuZHJvaWQgNC54LFxuXHQgIC8vIHRoZSB1bi1wcmVmaXhlZCBcImFu
aW1hdGlvblwiIGFuZCBcInRyYW5zaXRpb25cIiBwcm9wZXJ0aWVzIGFyZSBkZWZpbmVkIG9uIHRo
ZVxuXHQgIC8vIHN0eWxlIG9iamVjdCBidXQgdGhlIGV2ZW50cyB0aGF0IGZpcmUgd2lsbCBzdGls
bCBiZSBwcmVmaXhlZCwgc28gd2UgbmVlZFxuXHQgIC8vIHRvIGNoZWNrIGlmIHRoZSB1bi1wcmVm
aXhlZCBldmVudHMgYXJlIHVzYWJsZSwgYW5kIGlmIG5vdCByZW1vdmUgdGhlbSBmcm9tIHRoZSBt
YXAuXG5cdCAgaWYgKCEoJ0FuaW1hdGlvbkV2ZW50JyBpbiB3aW5kb3cpKSB7XG5cdCAgICBkZWxl
dGUgdmVuZG9yUHJlZml4ZXMuYW5pbWF0aW9uZW5kLmFuaW1hdGlvbjtcblx0ICAgIGRlbGV0ZSB2
ZW5kb3JQcmVmaXhlcy5hbmltYXRpb25pdGVyYXRpb24uYW5pbWF0aW9uO1xuXHQgICAgZGVsZXRl
IHZlbmRvclByZWZpeGVzLmFuaW1hdGlvbnN0YXJ0LmFuaW1hdGlvbjtcblx0ICB9XG5cdFxuXHQg
IC8vIFNhbWUgYXMgYWJvdmVcblx0ICBpZiAoISgnVHJhbnNpdGlvbkV2ZW50JyBpbiB3aW5kb3cp
KSB7XG5cdCAgICBkZWxldGUgdmVuZG9yUHJlZml4ZXMudHJhbnNpdGlvbmVuZC50cmFuc2l0aW9u
O1xuXHQgIH1cblx0fVxuXHRcblx0LyoqXG5cdCAqIEF0dGVtcHRzIHRvIGRldGVybWluZSB0aGUg
Y29ycmVjdCB2ZW5kb3IgcHJlZml4ZWQgZXZlbnQgbmFtZS5cblx0ICpcblx0ICogQHBhcmFtIHtz
dHJpbmd9IGV2ZW50TmFtZVxuXHQgKiBAcmV0dXJucyB7c3RyaW5nfVxuXHQgKi9cblx0ZnVuY3Rp
b24gZ2V0VmVuZG9yUHJlZml4ZWRFdmVudE5hbWUoZXZlbnROYW1lKSB7XG5cdCAgaWYgKHByZWZp
eGVkRXZlbnROYW1lc1tldmVudE5hbWVdKSB7XG5cdCAgICByZXR1cm4gcHJlZml4ZWRFdmVudE5h
bWVzW2V2ZW50TmFtZV07XG5cdCAgfSBlbHNlIGlmICghdmVuZG9yUHJlZml4ZXNbZXZlbnROYW1l
XSkge1xuXHQgICAgcmV0dXJuIGV2ZW50TmFtZTtcblx0ICB9XG5cdFxuXHQgIHZhciBwcmVmaXhN
YXAgPSB2ZW5kb3JQcmVmaXhlc1tldmVudE5hbWVdO1xuXHRcblx0ICBmb3IgKHZhciBzdHlsZVBy
b3AgaW4gcHJlZml4TWFwKSB7XG5cdCAgICBpZiAocHJlZml4TWFwLmhhc093blByb3BlcnR5KHN0
eWxlUHJvcCkgJiYgc3R5bGVQcm9wIGluIHN0eWxlKSB7XG5cdCAgICAgIHJldHVybiBwcmVmaXhl
ZEV2ZW50TmFtZXNbZXZlbnROYW1lXSA9IHByZWZpeE1hcFtzdHlsZVByb3BdO1xuXHQgICAgfVxu
XHQgIH1cblx0XG5cdCAgcmV0dXJuICcnO1xuXHR9XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IGdl
dFZlbmRvclByZWZpeGVkRXZlbnROYW1lO1xuXG4vKioqLyB9LFxuLyogMTg1ICovXG4vKioqLyBm
dW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvKipc
blx0ICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJp
Z2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1
bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmls
ZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25h
bCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5U
UyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpcblx0ICovXG5cdFxuXHQndXNlIHN0
cmljdCc7XG5cdFxuXHR2YXIgZXNjYXBlVGV4dENvbnRlbnRGb3JCcm93c2VyID0gX193ZWJwYWNr
X3JlcXVpcmVfXygyOCk7XG5cdFxuXHQvKipcblx0ICogRXNjYXBlcyBhdHRyaWJ1dGUgdmFsdWUg
dG8gcHJldmVudCBzY3JpcHRpbmcgYXR0YWNrcy5cblx0ICpcblx0ICogQHBhcmFtIHsqfSB2YWx1
ZSBWYWx1ZSB0byBlc2NhcGUuXG5cdCAqIEByZXR1cm4ge3N0cmluZ30gQW4gZXNjYXBlZCBzdHJp
bmcuXG5cdCAqL1xuXHRmdW5jdGlvbiBxdW90ZUF0dHJpYnV0ZVZhbHVlRm9yQnJvd3Nlcih2YWx1
ZSkge1xuXHQgIHJldHVybiAnXCInICsgZXNjYXBlVGV4dENvbnRlbnRGb3JCcm93c2VyKHZhbHVl
KSArICdcIic7XG5cdH1cblx0XG5cdG1vZHVsZS5leHBvcnRzID0gcXVvdGVBdHRyaWJ1dGVWYWx1
ZUZvckJyb3dzZXI7XG5cbi8qKiovIH0sXG4vKiAxODYgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVs
ZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmln
aHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVk
LlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qt
c3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290
IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAq
IG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhl
IHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5c
dHZhciBSZWFjdE1vdW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg2Nyk7XG5cdFxuXHRtb2R1bGUu
ZXhwb3J0cyA9IFJlYWN0TW91bnQucmVuZGVyU3VidHJlZUludG9Db250YWluZXI7XG5cbi8qKiov
IH0sXG4vKiAxODcgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNr
X3JlcXVpcmVfXykge1xuXG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdGV4cG9ydHMuX19lc01vZHVs
ZSA9IHRydWU7XG5cdGV4cG9ydHMuY3JlYXRlUHJvdmlkZXIgPSBjcmVhdGVQcm92aWRlcjtcblx0
XG5cdHZhciBfcmVhY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEyKTtcblx0XG5cdHZhciBfcHJv
cFR5cGVzID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1Nik7XG5cdFxuXHR2YXIgX3Byb3BUeXBlczIg
PSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9wcm9wVHlwZXMpO1xuXHRcblx0dmFyIF9Qcm9wVHlw
ZXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDgyKTtcblx0XG5cdHZhciBfd2FybmluZyA9IF9fd2Vi
cGFja19yZXF1aXJlX18oNTApO1xuXHRcblx0dmFyIF93YXJuaW5nMiA9IF9pbnRlcm9wUmVxdWly
ZURlZmF1bHQoX3dhcm5pbmcpO1xuXHRcblx0ZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVs
dChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDog
b2JqIH07IH1cblx0XG5cdGZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3Ry
dWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cg
bmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKTsgfSB9
XG5cdFxuXHRmdW5jdGlvbiBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybihzZWxmLCBjYWxsKSB7
IGlmICghc2VsZikgeyB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoXCJ0aGlzIGhhc24ndCBiZWVu
IGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWRcIik7IH0gcmV0dXJuIGNh
bGwgJiYgKHR5cGVvZiBjYWxsID09PSBcIm9iamVjdFwiIHx8IHR5cGVvZiBjYWxsID09PSBcImZ1
bmN0aW9uXCIpID8gY2FsbCA6IHNlbGY7IH1cblx0XG5cdGZ1bmN0aW9uIF9pbmhlcml0cyhzdWJD
bGFzcywgc3VwZXJDbGFzcykgeyBpZiAodHlwZW9mIHN1cGVyQ2xhc3MgIT09IFwiZnVuY3Rpb25c
IiAmJiBzdXBlckNsYXNzICE9PSBudWxsKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBl
eHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90IFwiICsgdHlw
ZW9mIHN1cGVyQ2xhc3MpOyB9IHN1YkNsYXNzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoc3Vw
ZXJDbGFzcyAmJiBzdXBlckNsYXNzLnByb3RvdHlwZSwgeyBjb25zdHJ1Y3RvcjogeyB2YWx1ZTog
c3ViQ2xhc3MsIGVudW1lcmFibGU6IGZhbHNlLCB3cml0YWJsZTogdHJ1ZSwgY29uZmlndXJhYmxl
OiB0cnVlIH0gfSk7IGlmIChzdXBlckNsYXNzKSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmpl
Y3Quc2V0UHJvdG90eXBlT2Yoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIDogc3ViQ2xhc3MuX19wcm90
b19fID0gc3VwZXJDbGFzczsgfVxuXHRcblx0dmFyIGRpZFdhcm5BYm91dFJlY2VpdmluZ1N0b3Jl
ID0gZmFsc2U7XG5cdGZ1bmN0aW9uIHdhcm5BYm91dFJlY2VpdmluZ1N0b3JlKCkge1xuXHQgIGlm
IChkaWRXYXJuQWJvdXRSZWNlaXZpbmdTdG9yZSkge1xuXHQgICAgcmV0dXJuO1xuXHQgIH1cblx0
ICBkaWRXYXJuQWJvdXRSZWNlaXZpbmdTdG9yZSA9IHRydWU7XG5cdFxuXHQgICgwLCBfd2Fybmlu
ZzIuZGVmYXVsdCkoJzxQcm92aWRlcj4gZG9lcyBub3Qgc3VwcG9ydCBjaGFuZ2luZyBgc3RvcmVg
IG9uIHRoZSBmbHkuICcgKyAnSXQgaXMgbW9zdCBsaWtlbHkgdGhhdCB5b3Ugc2VlIHRoaXMgZXJy
b3IgYmVjYXVzZSB5b3UgdXBkYXRlZCB0byAnICsgJ1JlZHV4IDIueCBhbmQgUmVhY3QgUmVkdXgg
Mi54IHdoaWNoIG5vIGxvbmdlciBob3QgcmVsb2FkIHJlZHVjZXJzICcgKyAnYXV0b21hdGljYWxs
eS4gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9yZWFjdGpzL3JlYWN0LXJlZHV4L3JlbGVhc2VzLycg
KyAndGFnL3YyLjAuMCBmb3IgdGhlIG1pZ3JhdGlvbiBpbnN0cnVjdGlvbnMuJyk7XG5cdH1cblx0
XG5cdGZ1bmN0aW9uIGNyZWF0ZVByb3ZpZGVyKCkge1xuXHQgIHZhciBfUHJvdmlkZXIkY2hpbGRD
b250ZXg7XG5cdFxuXHQgIHZhciBzdG9yZUtleSA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIGFy
Z3VtZW50c1swXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzBdIDogJ3N0b3JlJztcblx0ICB2
YXIgc3ViS2V5ID0gYXJndW1lbnRzWzFdO1xuXHRcblx0ICB2YXIgc3Vic2NyaXB0aW9uS2V5ID0g
c3ViS2V5IHx8IHN0b3JlS2V5ICsgJ1N1YnNjcmlwdGlvbic7XG5cdFxuXHQgIHZhciBQcm92aWRl
ciA9IGZ1bmN0aW9uIChfQ29tcG9uZW50KSB7XG5cdCAgICBfaW5oZXJpdHMoUHJvdmlkZXIsIF9D
b21wb25lbnQpO1xuXHRcblx0ICAgIFByb3ZpZGVyLnByb3RvdHlwZS5nZXRDaGlsZENvbnRleHQg
PSBmdW5jdGlvbiBnZXRDaGlsZENvbnRleHQoKSB7XG5cdCAgICAgIHZhciBfcmVmO1xuXHRcblx0
ICAgICAgcmV0dXJuIF9yZWYgPSB7fSwgX3JlZltzdG9yZUtleV0gPSB0aGlzW3N0b3JlS2V5XSwg
X3JlZltzdWJzY3JpcHRpb25LZXldID0gbnVsbCwgX3JlZjtcblx0ICAgIH07XG5cdFxuXHQgICAg
ZnVuY3Rpb24gUHJvdmlkZXIocHJvcHMsIGNvbnRleHQpIHtcblx0ICAgICAgX2NsYXNzQ2FsbENo
ZWNrKHRoaXMsIFByb3ZpZGVyKTtcblx0XG5cdCAgICAgIHZhciBfdGhpcyA9IF9wb3NzaWJsZUNv
bnN0cnVjdG9yUmV0dXJuKHRoaXMsIF9Db21wb25lbnQuY2FsbCh0aGlzLCBwcm9wcywgY29udGV4
dCkpO1xuXHRcblx0ICAgICAgX3RoaXNbc3RvcmVLZXldID0gcHJvcHMuc3RvcmU7XG5cdCAgICAg
IHJldHVybiBfdGhpcztcblx0ICAgIH1cblx0XG5cdCAgICBQcm92aWRlci5wcm90b3R5cGUucmVu
ZGVyID0gZnVuY3Rpb24gcmVuZGVyKCkge1xuXHQgICAgICByZXR1cm4gX3JlYWN0LkNoaWxkcmVu
Lm9ubHkodGhpcy5wcm9wcy5jaGlsZHJlbik7XG5cdCAgICB9O1xuXHRcblx0ICAgIHJldHVybiBQ
cm92aWRlcjtcblx0ICB9KF9yZWFjdC5Db21wb25lbnQpO1xuXHRcblx0ICBpZiAoZmFsc2UpIHtc
blx0ICAgIFByb3ZpZGVyLnByb3RvdHlwZS5jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzID0gZnVu
Y3Rpb24gKG5leHRQcm9wcykge1xuXHQgICAgICBpZiAodGhpc1tzdG9yZUtleV0gIT09IG5leHRQ
cm9wcy5zdG9yZSkge1xuXHQgICAgICAgIHdhcm5BYm91dFJlY2VpdmluZ1N0b3JlKCk7XG5cdCAg
ICAgIH1cblx0ICAgIH07XG5cdCAgfVxuXHRcblx0ICBQcm92aWRlci5wcm9wVHlwZXMgPSB7XG5c
dCAgICBzdG9yZTogX1Byb3BUeXBlcy5zdG9yZVNoYXBlLmlzUmVxdWlyZWQsXG5cdCAgICBjaGls
ZHJlbjogX3Byb3BUeXBlczIuZGVmYXVsdC5lbGVtZW50LmlzUmVxdWlyZWRcblx0ICB9O1xuXHQg
IFByb3ZpZGVyLmNoaWxkQ29udGV4dFR5cGVzID0gKF9Qcm92aWRlciRjaGlsZENvbnRleCA9IHt9
LCBfUHJvdmlkZXIkY2hpbGRDb250ZXhbc3RvcmVLZXldID0gX1Byb3BUeXBlcy5zdG9yZVNoYXBl
LmlzUmVxdWlyZWQsIF9Qcm92aWRlciRjaGlsZENvbnRleFtzdWJzY3JpcHRpb25LZXldID0gX1By
b3BUeXBlcy5zdWJzY3JpcHRpb25TaGFwZSwgX1Byb3ZpZGVyJGNoaWxkQ29udGV4KTtcblx0XG5c
dCAgcmV0dXJuIFByb3ZpZGVyO1xuXHR9XG5cdFxuXHRleHBvcnRzLmRlZmF1bHQgPSBjcmVhdGVQ
cm92aWRlcigpO1xuXG4vKioqLyB9LFxuLyogMTg4ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUs
IGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQndXNlIHN0cmljdCc7XG5cdFxu
XHRleHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuXHRcblx0dmFyIF9leHRlbmRzID0gT2JqZWN0
LmFzc2lnbiB8fCBmdW5jdGlvbiAodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1l
bnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07IGZvciAodmFyIGtl
eSBpbiBzb3VyY2UpIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChz
b3VyY2UsIGtleSkpIHsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IH0gcmV0dXJuIHRh
cmdldDsgfTtcblx0XG5cdGV4cG9ydHMuY3JlYXRlQ29ubmVjdCA9IGNyZWF0ZUNvbm5lY3Q7XG5c
dFxuXHR2YXIgX2Nvbm5lY3RBZHZhbmNlZCA9IF9fd2VicGFja19yZXF1aXJlX18oNzkpO1xuXHRc
blx0dmFyIF9jb25uZWN0QWR2YW5jZWQyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfY29ubmVj
dEFkdmFuY2VkKTtcblx0XG5cdHZhciBfc2hhbGxvd0VxdWFsID0gX193ZWJwYWNrX3JlcXVpcmVf
XygxOTUpO1xuXHRcblx0dmFyIF9zaGFsbG93RXF1YWwyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVs
dChfc2hhbGxvd0VxdWFsKTtcblx0XG5cdHZhciBfbWFwRGlzcGF0Y2hUb1Byb3BzID0gX193ZWJw
YWNrX3JlcXVpcmVfXygxODkpO1xuXHRcblx0dmFyIF9tYXBEaXNwYXRjaFRvUHJvcHMyID0gX2lu
dGVyb3BSZXF1aXJlRGVmYXVsdChfbWFwRGlzcGF0Y2hUb1Byb3BzKTtcblx0XG5cdHZhciBfbWFw
U3RhdGVUb1Byb3BzID0gX193ZWJwYWNrX3JlcXVpcmVfXygxOTApO1xuXHRcblx0dmFyIF9tYXBT
dGF0ZVRvUHJvcHMyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfbWFwU3RhdGVUb1Byb3BzKTtc
blx0XG5cdHZhciBfbWVyZ2VQcm9wcyA9IF9fd2VicGFja19yZXF1aXJlX18oMTkxKTtcblx0XG5c
dHZhciBfbWVyZ2VQcm9wczIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9tZXJnZVByb3BzKTtc
blx0XG5cdHZhciBfc2VsZWN0b3JGYWN0b3J5ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxOTIpO1xu
XHRcblx0dmFyIF9zZWxlY3RvckZhY3RvcnkyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfc2Vs
ZWN0b3JGYWN0b3J5KTtcblx0XG5cdGZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2Jq
KSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9
OyB9XG5cdFxuXHRmdW5jdGlvbiBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMob2JqLCBrZXlzKSB7
IHZhciB0YXJnZXQgPSB7fTsgZm9yICh2YXIgaSBpbiBvYmopIHsgaWYgKGtleXMuaW5kZXhPZihp
KSA+PSAwKSBjb250aW51ZTsgaWYgKCFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNh
bGwob2JqLCBpKSkgY29udGludWU7IHRhcmdldFtpXSA9IG9ialtpXTsgfSByZXR1cm4gdGFyZ2V0
OyB9XG5cdFxuXHQvKlxuXHQgIGNvbm5lY3QgaXMgYSBmYWNhZGUgb3ZlciBjb25uZWN0QWR2YW5j
ZWQuIEl0IHR1cm5zIGl0cyBhcmdzIGludG8gYSBjb21wYXRpYmxlXG5cdCAgc2VsZWN0b3JGYWN0
b3J5LCB3aGljaCBoYXMgdGhlIHNpZ25hdHVyZTpcblx0XG5cdCAgICAoZGlzcGF0Y2gsIG9wdGlv
bnMpID0+IChuZXh0U3RhdGUsIG5leHRPd25Qcm9wcykgPT4gbmV4dEZpbmFsUHJvcHNcblx0ICBc
blx0ICBjb25uZWN0IHBhc3NlcyBpdHMgYXJncyB0byBjb25uZWN0QWR2YW5jZWQgYXMgb3B0aW9u
cywgd2hpY2ggd2lsbCBpbiB0dXJuIHBhc3MgdGhlbSB0b1xuXHQgIHNlbGVjdG9yRmFjdG9yeSBl
YWNoIHRpbWUgYSBDb25uZWN0IGNvbXBvbmVudCBpbnN0YW5jZSBpcyBpbnN0YW50aWF0ZWQgb3Ig
aG90IHJlbG9hZGVkLlxuXHRcblx0ICBzZWxlY3RvckZhY3RvcnkgcmV0dXJucyBhIGZpbmFsIHBy
b3BzIHNlbGVjdG9yIGZyb20gaXRzIG1hcFN0YXRlVG9Qcm9wcyxcblx0ICBtYXBTdGF0ZVRvUHJv
cHNGYWN0b3JpZXMsIG1hcERpc3BhdGNoVG9Qcm9wcywgbWFwRGlzcGF0Y2hUb1Byb3BzRmFjdG9y
aWVzLCBtZXJnZVByb3BzLFxuXHQgIG1lcmdlUHJvcHNGYWN0b3JpZXMsIGFuZCBwdXJlIGFyZ3Mu
XG5cdFxuXHQgIFRoZSByZXN1bHRpbmcgZmluYWwgcHJvcHMgc2VsZWN0b3IgaXMgY2FsbGVkIGJ5
IHRoZSBDb25uZWN0IGNvbXBvbmVudCBpbnN0YW5jZSB3aGVuZXZlclxuXHQgIGl0IHJlY2VpdmVz
IG5ldyBwcm9wcyBvciBzdG9yZSBzdGF0ZS5cblx0ICovXG5cdFxuXHRmdW5jdGlvbiBtYXRjaChh
cmcsIGZhY3RvcmllcywgbmFtZSkge1xuXHQgIGZvciAodmFyIGkgPSBmYWN0b3JpZXMubGVuZ3Ro
IC0gMTsgaSA+PSAwOyBpLS0pIHtcblx0ICAgIHZhciByZXN1bHQgPSBmYWN0b3JpZXNbaV0oYXJn
KTtcblx0ICAgIGlmIChyZXN1bHQpIHJldHVybiByZXN1bHQ7XG5cdCAgfVxuXHRcblx0ICByZXR1
cm4gZnVuY3Rpb24gKGRpc3BhdGNoLCBvcHRpb25zKSB7XG5cdCAgICB0aHJvdyBuZXcgRXJyb3Io
J0ludmFsaWQgdmFsdWUgb2YgdHlwZSAnICsgdHlwZW9mIGFyZyArICcgZm9yICcgKyBuYW1lICsg
JyBhcmd1bWVudCB3aGVuIGNvbm5lY3RpbmcgY29tcG9uZW50ICcgKyBvcHRpb25zLndyYXBwZWRD
b21wb25lbnROYW1lICsgJy4nKTtcblx0ICB9O1xuXHR9XG5cdFxuXHRmdW5jdGlvbiBzdHJpY3RF
cXVhbChhLCBiKSB7XG5cdCAgcmV0dXJuIGEgPT09IGI7XG5cdH1cblx0XG5cdC8vIGNyZWF0ZUNv
bm5lY3Qgd2l0aCBkZWZhdWx0IGFyZ3MgYnVpbGRzIHRoZSAnb2ZmaWNpYWwnIGNvbm5lY3QgYmVo
YXZpb3IuIENhbGxpbmcgaXQgd2l0aFxuXHQvLyBkaWZmZXJlbnQgb3B0aW9ucyBvcGVucyB1cCBz
b21lIHRlc3RpbmcgYW5kIGV4dGVuc2liaWxpdHkgc2NlbmFyaW9zXG5cdGZ1bmN0aW9uIGNyZWF0
ZUNvbm5lY3QoKSB7XG5cdCAgdmFyIF9yZWYgPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiBhcmd1
bWVudHNbMF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1swXSA6IHt9LFxuXHQgICAgICBfcmVm
JGNvbm5lY3RIT0MgPSBfcmVmLmNvbm5lY3RIT0MsXG5cdCAgICAgIGNvbm5lY3RIT0MgPSBfcmVm
JGNvbm5lY3RIT0MgPT09IHVuZGVmaW5lZCA/IF9jb25uZWN0QWR2YW5jZWQyLmRlZmF1bHQgOiBf
cmVmJGNvbm5lY3RIT0MsXG5cdCAgICAgIF9yZWYkbWFwU3RhdGVUb1Byb3BzRiA9IF9yZWYubWFw
U3RhdGVUb1Byb3BzRmFjdG9yaWVzLFxuXHQgICAgICBtYXBTdGF0ZVRvUHJvcHNGYWN0b3JpZXMg
PSBfcmVmJG1hcFN0YXRlVG9Qcm9wc0YgPT09IHVuZGVmaW5lZCA/IF9tYXBTdGF0ZVRvUHJvcHMy
LmRlZmF1bHQgOiBfcmVmJG1hcFN0YXRlVG9Qcm9wc0YsXG5cdCAgICAgIF9yZWYkbWFwRGlzcGF0
Y2hUb1BybyA9IF9yZWYubWFwRGlzcGF0Y2hUb1Byb3BzRmFjdG9yaWVzLFxuXHQgICAgICBtYXBE
aXNwYXRjaFRvUHJvcHNGYWN0b3JpZXMgPSBfcmVmJG1hcERpc3BhdGNoVG9Qcm8gPT09IHVuZGVm
aW5lZCA/IF9tYXBEaXNwYXRjaFRvUHJvcHMyLmRlZmF1bHQgOiBfcmVmJG1hcERpc3BhdGNoVG9Q
cm8sXG5cdCAgICAgIF9yZWYkbWVyZ2VQcm9wc0ZhY3RvciA9IF9yZWYubWVyZ2VQcm9wc0ZhY3Rv
cmllcyxcblx0ICAgICAgbWVyZ2VQcm9wc0ZhY3RvcmllcyA9IF9yZWYkbWVyZ2VQcm9wc0ZhY3Rv
ciA9PT0gdW5kZWZpbmVkID8gX21lcmdlUHJvcHMyLmRlZmF1bHQgOiBfcmVmJG1lcmdlUHJvcHNG
YWN0b3IsXG5cdCAgICAgIF9yZWYkc2VsZWN0b3JGYWN0b3J5ID0gX3JlZi5zZWxlY3RvckZhY3Rv
cnksXG5cdCAgICAgIHNlbGVjdG9yRmFjdG9yeSA9IF9yZWYkc2VsZWN0b3JGYWN0b3J5ID09PSB1
bmRlZmluZWQgPyBfc2VsZWN0b3JGYWN0b3J5Mi5kZWZhdWx0IDogX3JlZiRzZWxlY3RvckZhY3Rv
cnk7XG5cdFxuXHQgIHJldHVybiBmdW5jdGlvbiBjb25uZWN0KG1hcFN0YXRlVG9Qcm9wcywgbWFw
RGlzcGF0Y2hUb1Byb3BzLCBtZXJnZVByb3BzKSB7XG5cdCAgICB2YXIgX3JlZjIgPSBhcmd1bWVu
dHMubGVuZ3RoID4gMyAmJiBhcmd1bWVudHNbM10gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sz
XSA6IHt9LFxuXHQgICAgICAgIF9yZWYyJHB1cmUgPSBfcmVmMi5wdXJlLFxuXHQgICAgICAgIHB1
cmUgPSBfcmVmMiRwdXJlID09PSB1bmRlZmluZWQgPyB0cnVlIDogX3JlZjIkcHVyZSxcblx0ICAg
ICAgICBfcmVmMiRhcmVTdGF0ZXNFcXVhbCA9IF9yZWYyLmFyZVN0YXRlc0VxdWFsLFxuXHQgICAg
ICAgIGFyZVN0YXRlc0VxdWFsID0gX3JlZjIkYXJlU3RhdGVzRXF1YWwgPT09IHVuZGVmaW5lZCA/
IHN0cmljdEVxdWFsIDogX3JlZjIkYXJlU3RhdGVzRXF1YWwsXG5cdCAgICAgICAgX3JlZjIkYXJl
T3duUHJvcHNFcXVhID0gX3JlZjIuYXJlT3duUHJvcHNFcXVhbCxcblx0ICAgICAgICBhcmVPd25Q
cm9wc0VxdWFsID0gX3JlZjIkYXJlT3duUHJvcHNFcXVhID09PSB1bmRlZmluZWQgPyBfc2hhbGxv
d0VxdWFsMi5kZWZhdWx0IDogX3JlZjIkYXJlT3duUHJvcHNFcXVhLFxuXHQgICAgICAgIF9yZWYy
JGFyZVN0YXRlUHJvcHNFcSA9IF9yZWYyLmFyZVN0YXRlUHJvcHNFcXVhbCxcblx0ICAgICAgICBh
cmVTdGF0ZVByb3BzRXF1YWwgPSBfcmVmMiRhcmVTdGF0ZVByb3BzRXEgPT09IHVuZGVmaW5lZCA/
IF9zaGFsbG93RXF1YWwyLmRlZmF1bHQgOiBfcmVmMiRhcmVTdGF0ZVByb3BzRXEsXG5cdCAgICAg
ICAgX3JlZjIkYXJlTWVyZ2VkUHJvcHNFID0gX3JlZjIuYXJlTWVyZ2VkUHJvcHNFcXVhbCxcblx0
ICAgICAgICBhcmVNZXJnZWRQcm9wc0VxdWFsID0gX3JlZjIkYXJlTWVyZ2VkUHJvcHNFID09PSB1
bmRlZmluZWQgPyBfc2hhbGxvd0VxdWFsMi5kZWZhdWx0IDogX3JlZjIkYXJlTWVyZ2VkUHJvcHNF
LFxuXHQgICAgICAgIGV4dHJhT3B0aW9ucyA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhfcmVm
MiwgWydwdXJlJywgJ2FyZVN0YXRlc0VxdWFsJywgJ2FyZU93blByb3BzRXF1YWwnLCAnYXJlU3Rh
dGVQcm9wc0VxdWFsJywgJ2FyZU1lcmdlZFByb3BzRXF1YWwnXSk7XG5cdFxuXHQgICAgdmFyIGlu
aXRNYXBTdGF0ZVRvUHJvcHMgPSBtYXRjaChtYXBTdGF0ZVRvUHJvcHMsIG1hcFN0YXRlVG9Qcm9w
c0ZhY3RvcmllcywgJ21hcFN0YXRlVG9Qcm9wcycpO1xuXHQgICAgdmFyIGluaXRNYXBEaXNwYXRj
aFRvUHJvcHMgPSBtYXRjaChtYXBEaXNwYXRjaFRvUHJvcHMsIG1hcERpc3BhdGNoVG9Qcm9wc0Zh
Y3RvcmllcywgJ21hcERpc3BhdGNoVG9Qcm9wcycpO1xuXHQgICAgdmFyIGluaXRNZXJnZVByb3Bz
ID0gbWF0Y2gobWVyZ2VQcm9wcywgbWVyZ2VQcm9wc0ZhY3RvcmllcywgJ21lcmdlUHJvcHMnKTtc
blx0XG5cdCAgICByZXR1cm4gY29ubmVjdEhPQyhzZWxlY3RvckZhY3RvcnksIF9leHRlbmRzKHtc
blx0ICAgICAgLy8gdXNlZCBpbiBlcnJvciBtZXNzYWdlc1xuXHQgICAgICBtZXRob2ROYW1lOiAn
Y29ubmVjdCcsXG5cdFxuXHQgICAgICAvLyB1c2VkIHRvIGNvbXB1dGUgQ29ubmVjdCdzIGRpc3Bs
YXlOYW1lIGZyb20gdGhlIHdyYXBwZWQgY29tcG9uZW50J3MgZGlzcGxheU5hbWUuXG5cdCAgICAg
IGdldERpc3BsYXlOYW1lOiBmdW5jdGlvbiBnZXREaXNwbGF5TmFtZShuYW1lKSB7XG5cdCAgICAg
ICAgcmV0dXJuICdDb25uZWN0KCcgKyBuYW1lICsgJyknO1xuXHQgICAgICB9LFxuXHRcblx0ICAg
ICAgLy8gaWYgbWFwU3RhdGVUb1Byb3BzIGlzIGZhbHN5LCB0aGUgQ29ubmVjdCBjb21wb25lbnQg
ZG9lc24ndCBzdWJzY3JpYmUgdG8gc3RvcmUgc3RhdGUgY2hhbmdlc1xuXHQgICAgICBzaG91bGRI
YW5kbGVTdGF0ZUNoYW5nZXM6IEJvb2xlYW4obWFwU3RhdGVUb1Byb3BzKSxcblx0XG5cdCAgICAg
IC8vIHBhc3NlZCB0aHJvdWdoIHRvIHNlbGVjdG9yRmFjdG9yeVxuXHQgICAgICBpbml0TWFwU3Rh
dGVUb1Byb3BzOiBpbml0TWFwU3RhdGVUb1Byb3BzLFxuXHQgICAgICBpbml0TWFwRGlzcGF0Y2hU
b1Byb3BzOiBpbml0TWFwRGlzcGF0Y2hUb1Byb3BzLFxuXHQgICAgICBpbml0TWVyZ2VQcm9wczog
aW5pdE1lcmdlUHJvcHMsXG5cdCAgICAgIHB1cmU6IHB1cmUsXG5cdCAgICAgIGFyZVN0YXRlc0Vx
dWFsOiBhcmVTdGF0ZXNFcXVhbCxcblx0ICAgICAgYXJlT3duUHJvcHNFcXVhbDogYXJlT3duUHJv
cHNFcXVhbCxcblx0ICAgICAgYXJlU3RhdGVQcm9wc0VxdWFsOiBhcmVTdGF0ZVByb3BzRXF1YWws
XG5cdCAgICAgIGFyZU1lcmdlZFByb3BzRXF1YWw6IGFyZU1lcmdlZFByb3BzRXF1YWxcblx0XG5c
dCAgICB9LCBleHRyYU9wdGlvbnMpKTtcblx0ICB9O1xuXHR9XG5cdFxuXHRleHBvcnRzLmRlZmF1
bHQgPSBjcmVhdGVDb25uZWN0KCk7XG5cbi8qKiovIH0sXG4vKiAxODkgKi9cbi8qKiovIGZ1bmN0
aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdCd1c2Ugc3Ry
aWN0Jztcblx0XG5cdGV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5cdGV4cG9ydHMud2hlbk1h
cERpc3BhdGNoVG9Qcm9wc0lzRnVuY3Rpb24gPSB3aGVuTWFwRGlzcGF0Y2hUb1Byb3BzSXNGdW5j
dGlvbjtcblx0ZXhwb3J0cy53aGVuTWFwRGlzcGF0Y2hUb1Byb3BzSXNNaXNzaW5nID0gd2hlbk1h
cERpc3BhdGNoVG9Qcm9wc0lzTWlzc2luZztcblx0ZXhwb3J0cy53aGVuTWFwRGlzcGF0Y2hUb1By
b3BzSXNPYmplY3QgPSB3aGVuTWFwRGlzcGF0Y2hUb1Byb3BzSXNPYmplY3Q7XG5cdFxuXHR2YXIg
X3JlZHV4ID0gX193ZWJwYWNrX3JlcXVpcmVfXygzMCk7XG5cdFxuXHR2YXIgX3dyYXBNYXBUb1By
b3BzID0gX193ZWJwYWNrX3JlcXVpcmVfXyg4MCk7XG5cdFxuXHRmdW5jdGlvbiB3aGVuTWFwRGlz
cGF0Y2hUb1Byb3BzSXNGdW5jdGlvbihtYXBEaXNwYXRjaFRvUHJvcHMpIHtcblx0ICByZXR1cm4g
dHlwZW9mIG1hcERpc3BhdGNoVG9Qcm9wcyA9PT0gJ2Z1bmN0aW9uJyA/ICgwLCBfd3JhcE1hcFRv
UHJvcHMud3JhcE1hcFRvUHJvcHNGdW5jKShtYXBEaXNwYXRjaFRvUHJvcHMsICdtYXBEaXNwYXRj
aFRvUHJvcHMnKSA6IHVuZGVmaW5lZDtcblx0fVxuXHRcblx0ZnVuY3Rpb24gd2hlbk1hcERpc3Bh
dGNoVG9Qcm9wc0lzTWlzc2luZyhtYXBEaXNwYXRjaFRvUHJvcHMpIHtcblx0ICByZXR1cm4gIW1h
cERpc3BhdGNoVG9Qcm9wcyA/ICgwLCBfd3JhcE1hcFRvUHJvcHMud3JhcE1hcFRvUHJvcHNDb25z
dGFudCkoZnVuY3Rpb24gKGRpc3BhdGNoKSB7XG5cdCAgICByZXR1cm4geyBkaXNwYXRjaDogZGlz
cGF0Y2ggfTtcblx0ICB9KSA6IHVuZGVmaW5lZDtcblx0fVxuXHRcblx0ZnVuY3Rpb24gd2hlbk1h
cERpc3BhdGNoVG9Qcm9wc0lzT2JqZWN0KG1hcERpc3BhdGNoVG9Qcm9wcykge1xuXHQgIHJldHVy
biBtYXBEaXNwYXRjaFRvUHJvcHMgJiYgdHlwZW9mIG1hcERpc3BhdGNoVG9Qcm9wcyA9PT0gJ29i
amVjdCcgPyAoMCwgX3dyYXBNYXBUb1Byb3BzLndyYXBNYXBUb1Byb3BzQ29uc3RhbnQpKGZ1bmN0
aW9uIChkaXNwYXRjaCkge1xuXHQgICAgcmV0dXJuICgwLCBfcmVkdXguYmluZEFjdGlvbkNyZWF0
b3JzKShtYXBEaXNwYXRjaFRvUHJvcHMsIGRpc3BhdGNoKTtcblx0ICB9KSA6IHVuZGVmaW5lZDtc
blx0fVxuXHRcblx0ZXhwb3J0cy5kZWZhdWx0ID0gW3doZW5NYXBEaXNwYXRjaFRvUHJvcHNJc0Z1
bmN0aW9uLCB3aGVuTWFwRGlzcGF0Y2hUb1Byb3BzSXNNaXNzaW5nLCB3aGVuTWFwRGlzcGF0Y2hU
b1Byb3BzSXNPYmplY3RdO1xuXG4vKioqLyB9LFxuLyogMTkwICovXG4vKioqLyBmdW5jdGlvbiht
b2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQndXNlIHN0cmljdCc7
XG5cdFxuXHRleHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuXHRleHBvcnRzLndoZW5NYXBTdGF0
ZVRvUHJvcHNJc0Z1bmN0aW9uID0gd2hlbk1hcFN0YXRlVG9Qcm9wc0lzRnVuY3Rpb247XG5cdGV4
cG9ydHMud2hlbk1hcFN0YXRlVG9Qcm9wc0lzTWlzc2luZyA9IHdoZW5NYXBTdGF0ZVRvUHJvcHNJ
c01pc3Npbmc7XG5cdFxuXHR2YXIgX3dyYXBNYXBUb1Byb3BzID0gX193ZWJwYWNrX3JlcXVpcmVf
Xyg4MCk7XG5cdFxuXHRmdW5jdGlvbiB3aGVuTWFwU3RhdGVUb1Byb3BzSXNGdW5jdGlvbihtYXBT
dGF0ZVRvUHJvcHMpIHtcblx0ICByZXR1cm4gdHlwZW9mIG1hcFN0YXRlVG9Qcm9wcyA9PT0gJ2Z1
bmN0aW9uJyA/ICgwLCBfd3JhcE1hcFRvUHJvcHMud3JhcE1hcFRvUHJvcHNGdW5jKShtYXBTdGF0
ZVRvUHJvcHMsICdtYXBTdGF0ZVRvUHJvcHMnKSA6IHVuZGVmaW5lZDtcblx0fVxuXHRcblx0ZnVu
Y3Rpb24gd2hlbk1hcFN0YXRlVG9Qcm9wc0lzTWlzc2luZyhtYXBTdGF0ZVRvUHJvcHMpIHtcblx0
ICByZXR1cm4gIW1hcFN0YXRlVG9Qcm9wcyA/ICgwLCBfd3JhcE1hcFRvUHJvcHMud3JhcE1hcFRv
UHJvcHNDb25zdGFudCkoZnVuY3Rpb24gKCkge1xuXHQgICAgcmV0dXJuIHt9O1xuXHQgIH0pIDog
dW5kZWZpbmVkO1xuXHR9XG5cdFxuXHRleHBvcnRzLmRlZmF1bHQgPSBbd2hlbk1hcFN0YXRlVG9Q
cm9wc0lzRnVuY3Rpb24sIHdoZW5NYXBTdGF0ZVRvUHJvcHNJc01pc3NpbmddO1xuXG4vKioqLyB9
LFxuLyogMTkxICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19y
ZXF1aXJlX18pIHtcblxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHRleHBvcnRzLl9fZXNNb2R1bGUg
PSB0cnVlO1xuXHRcblx0dmFyIF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiAo
dGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZh
ciBzb3VyY2UgPSBhcmd1bWVudHNbaV07IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsgaWYgKE9i
amVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsgdGFyZ2V0
W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IH0gcmV0dXJuIHRhcmdldDsgfTtcblx0XG5cdGV4cG9y
dHMuZGVmYXVsdE1lcmdlUHJvcHMgPSBkZWZhdWx0TWVyZ2VQcm9wcztcblx0ZXhwb3J0cy53cmFw
TWVyZ2VQcm9wc0Z1bmMgPSB3cmFwTWVyZ2VQcm9wc0Z1bmM7XG5cdGV4cG9ydHMud2hlbk1lcmdl
UHJvcHNJc0Z1bmN0aW9uID0gd2hlbk1lcmdlUHJvcHNJc0Z1bmN0aW9uO1xuXHRleHBvcnRzLndo
ZW5NZXJnZVByb3BzSXNPbWl0dGVkID0gd2hlbk1lcmdlUHJvcHNJc09taXR0ZWQ7XG5cdFxuXHR2
YXIgX3ZlcmlmeVBsYWluT2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg4Myk7XG5cdFxuXHR2
YXIgX3ZlcmlmeVBsYWluT2JqZWN0MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3ZlcmlmeVBs
YWluT2JqZWN0KTtcblx0XG5cdGZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7
IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9
XG5cdFxuXHRmdW5jdGlvbiBkZWZhdWx0TWVyZ2VQcm9wcyhzdGF0ZVByb3BzLCBkaXNwYXRjaFBy
b3BzLCBvd25Qcm9wcykge1xuXHQgIHJldHVybiBfZXh0ZW5kcyh7fSwgb3duUHJvcHMsIHN0YXRl
UHJvcHMsIGRpc3BhdGNoUHJvcHMpO1xuXHR9XG5cdFxuXHRmdW5jdGlvbiB3cmFwTWVyZ2VQcm9w
c0Z1bmMobWVyZ2VQcm9wcykge1xuXHQgIHJldHVybiBmdW5jdGlvbiBpbml0TWVyZ2VQcm9wc1By
b3h5KGRpc3BhdGNoLCBfcmVmKSB7XG5cdCAgICB2YXIgZGlzcGxheU5hbWUgPSBfcmVmLmRpc3Bs
YXlOYW1lLFxuXHQgICAgICAgIHB1cmUgPSBfcmVmLnB1cmUsXG5cdCAgICAgICAgYXJlTWVyZ2Vk
UHJvcHNFcXVhbCA9IF9yZWYuYXJlTWVyZ2VkUHJvcHNFcXVhbDtcblx0XG5cdCAgICB2YXIgaGFz
UnVuT25jZSA9IGZhbHNlO1xuXHQgICAgdmFyIG1lcmdlZFByb3BzID0gdm9pZCAwO1xuXHRcblx0
ICAgIHJldHVybiBmdW5jdGlvbiBtZXJnZVByb3BzUHJveHkoc3RhdGVQcm9wcywgZGlzcGF0Y2hQ
cm9wcywgb3duUHJvcHMpIHtcblx0ICAgICAgdmFyIG5leHRNZXJnZWRQcm9wcyA9IG1lcmdlUHJv
cHMoc3RhdGVQcm9wcywgZGlzcGF0Y2hQcm9wcywgb3duUHJvcHMpO1xuXHRcblx0ICAgICAgaWYg
KGhhc1J1bk9uY2UpIHtcblx0ICAgICAgICBpZiAoIXB1cmUgfHwgIWFyZU1lcmdlZFByb3BzRXF1
YWwobmV4dE1lcmdlZFByb3BzLCBtZXJnZWRQcm9wcykpIG1lcmdlZFByb3BzID0gbmV4dE1lcmdl
ZFByb3BzO1xuXHQgICAgICB9IGVsc2Uge1xuXHQgICAgICAgIGhhc1J1bk9uY2UgPSB0cnVlO1xu
XHQgICAgICAgIG1lcmdlZFByb3BzID0gbmV4dE1lcmdlZFByb3BzO1xuXHRcblx0ICAgICAgICBp
ZiAoZmFsc2UpICgwLCBfdmVyaWZ5UGxhaW5PYmplY3QyLmRlZmF1bHQpKG1lcmdlZFByb3BzLCBk
aXNwbGF5TmFtZSwgJ21lcmdlUHJvcHMnKTtcblx0ICAgICAgfVxuXHRcblx0ICAgICAgcmV0dXJu
IG1lcmdlZFByb3BzO1xuXHQgICAgfTtcblx0ICB9O1xuXHR9XG5cdFxuXHRmdW5jdGlvbiB3aGVu
TWVyZ2VQcm9wc0lzRnVuY3Rpb24obWVyZ2VQcm9wcykge1xuXHQgIHJldHVybiB0eXBlb2YgbWVy
Z2VQcm9wcyA9PT0gJ2Z1bmN0aW9uJyA/IHdyYXBNZXJnZVByb3BzRnVuYyhtZXJnZVByb3BzKSA6
IHVuZGVmaW5lZDtcblx0fVxuXHRcblx0ZnVuY3Rpb24gd2hlbk1lcmdlUHJvcHNJc09taXR0ZWQo
bWVyZ2VQcm9wcykge1xuXHQgIHJldHVybiAhbWVyZ2VQcm9wcyA/IGZ1bmN0aW9uICgpIHtcblx0
ICAgIHJldHVybiBkZWZhdWx0TWVyZ2VQcm9wcztcblx0ICB9IDogdW5kZWZpbmVkO1xuXHR9XG5c
dFxuXHRleHBvcnRzLmRlZmF1bHQgPSBbd2hlbk1lcmdlUHJvcHNJc0Z1bmN0aW9uLCB3aGVuTWVy
Z2VQcm9wc0lzT21pdHRlZF07XG5cbi8qKiovIH0sXG4vKiAxOTIgKi9cbi8qKiovIGZ1bmN0aW9u
KG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdCd1c2Ugc3RyaWN0
Jztcblx0XG5cdGV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5cdGV4cG9ydHMuaW1wdXJlRmlu
YWxQcm9wc1NlbGVjdG9yRmFjdG9yeSA9IGltcHVyZUZpbmFsUHJvcHNTZWxlY3RvckZhY3Rvcnk7
XG5cdGV4cG9ydHMucHVyZUZpbmFsUHJvcHNTZWxlY3RvckZhY3RvcnkgPSBwdXJlRmluYWxQcm9w
c1NlbGVjdG9yRmFjdG9yeTtcblx0ZXhwb3J0cy5kZWZhdWx0ID0gZmluYWxQcm9wc1NlbGVjdG9y
RmFjdG9yeTtcblx0XG5cdHZhciBfdmVyaWZ5U3Vic2VsZWN0b3JzID0gX193ZWJwYWNrX3JlcXVp
cmVfXygxOTMpO1xuXHRcblx0dmFyIF92ZXJpZnlTdWJzZWxlY3RvcnMyID0gX2ludGVyb3BSZXF1
aXJlRGVmYXVsdChfdmVyaWZ5U3Vic2VsZWN0b3JzKTtcblx0XG5cdGZ1bmN0aW9uIF9pbnRlcm9w
UmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmog
OiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cdFxuXHRmdW5jdGlvbiBfb2JqZWN0V2l0aG91dFByb3Bl
cnRpZXMob2JqLCBrZXlzKSB7IHZhciB0YXJnZXQgPSB7fTsgZm9yICh2YXIgaSBpbiBvYmopIHsg
aWYgKGtleXMuaW5kZXhPZihpKSA+PSAwKSBjb250aW51ZTsgaWYgKCFPYmplY3QucHJvdG90eXBl
Lmhhc093blByb3BlcnR5LmNhbGwob2JqLCBpKSkgY29udGludWU7IHRhcmdldFtpXSA9IG9ialtp
XTsgfSByZXR1cm4gdGFyZ2V0OyB9XG5cdFxuXHRmdW5jdGlvbiBpbXB1cmVGaW5hbFByb3BzU2Vs
ZWN0b3JGYWN0b3J5KG1hcFN0YXRlVG9Qcm9wcywgbWFwRGlzcGF0Y2hUb1Byb3BzLCBtZXJnZVBy
b3BzLCBkaXNwYXRjaCkge1xuXHQgIHJldHVybiBmdW5jdGlvbiBpbXB1cmVGaW5hbFByb3BzU2Vs
ZWN0b3Ioc3RhdGUsIG93blByb3BzKSB7XG5cdCAgICByZXR1cm4gbWVyZ2VQcm9wcyhtYXBTdGF0
ZVRvUHJvcHMoc3RhdGUsIG93blByb3BzKSwgbWFwRGlzcGF0Y2hUb1Byb3BzKGRpc3BhdGNoLCBv
d25Qcm9wcyksIG93blByb3BzKTtcblx0ICB9O1xuXHR9XG5cdFxuXHRmdW5jdGlvbiBwdXJlRmlu
YWxQcm9wc1NlbGVjdG9yRmFjdG9yeShtYXBTdGF0ZVRvUHJvcHMsIG1hcERpc3BhdGNoVG9Qcm9w
cywgbWVyZ2VQcm9wcywgZGlzcGF0Y2gsIF9yZWYpIHtcblx0ICB2YXIgYXJlU3RhdGVzRXF1YWwg
PSBfcmVmLmFyZVN0YXRlc0VxdWFsLFxuXHQgICAgICBhcmVPd25Qcm9wc0VxdWFsID0gX3JlZi5h
cmVPd25Qcm9wc0VxdWFsLFxuXHQgICAgICBhcmVTdGF0ZVByb3BzRXF1YWwgPSBfcmVmLmFyZVN0
YXRlUHJvcHNFcXVhbDtcblx0XG5cdCAgdmFyIGhhc1J1bkF0TGVhc3RPbmNlID0gZmFsc2U7XG5c
dCAgdmFyIHN0YXRlID0gdm9pZCAwO1xuXHQgIHZhciBvd25Qcm9wcyA9IHZvaWQgMDtcblx0ICB2
YXIgc3RhdGVQcm9wcyA9IHZvaWQgMDtcblx0ICB2YXIgZGlzcGF0Y2hQcm9wcyA9IHZvaWQgMDtc
blx0ICB2YXIgbWVyZ2VkUHJvcHMgPSB2b2lkIDA7XG5cdFxuXHQgIGZ1bmN0aW9uIGhhbmRsZUZp
cnN0Q2FsbChmaXJzdFN0YXRlLCBmaXJzdE93blByb3BzKSB7XG5cdCAgICBzdGF0ZSA9IGZpcnN0
U3RhdGU7XG5cdCAgICBvd25Qcm9wcyA9IGZpcnN0T3duUHJvcHM7XG5cdCAgICBzdGF0ZVByb3Bz
ID0gbWFwU3RhdGVUb1Byb3BzKHN0YXRlLCBvd25Qcm9wcyk7XG5cdCAgICBkaXNwYXRjaFByb3Bz
ID0gbWFwRGlzcGF0Y2hUb1Byb3BzKGRpc3BhdGNoLCBvd25Qcm9wcyk7XG5cdCAgICBtZXJnZWRQ
cm9wcyA9IG1lcmdlUHJvcHMoc3RhdGVQcm9wcywgZGlzcGF0Y2hQcm9wcywgb3duUHJvcHMpO1xu
XHQgICAgaGFzUnVuQXRMZWFzdE9uY2UgPSB0cnVlO1xuXHQgICAgcmV0dXJuIG1lcmdlZFByb3Bz
O1xuXHQgIH1cblx0XG5cdCAgZnVuY3Rpb24gaGFuZGxlTmV3UHJvcHNBbmROZXdTdGF0ZSgpIHtc
blx0ICAgIHN0YXRlUHJvcHMgPSBtYXBTdGF0ZVRvUHJvcHMoc3RhdGUsIG93blByb3BzKTtcblx0
XG5cdCAgICBpZiAobWFwRGlzcGF0Y2hUb1Byb3BzLmRlcGVuZHNPbk93blByb3BzKSBkaXNwYXRj
aFByb3BzID0gbWFwRGlzcGF0Y2hUb1Byb3BzKGRpc3BhdGNoLCBvd25Qcm9wcyk7XG5cdFxuXHQg
ICAgbWVyZ2VkUHJvcHMgPSBtZXJnZVByb3BzKHN0YXRlUHJvcHMsIGRpc3BhdGNoUHJvcHMsIG93
blByb3BzKTtcblx0ICAgIHJldHVybiBtZXJnZWRQcm9wcztcblx0ICB9XG5cdFxuXHQgIGZ1bmN0
aW9uIGhhbmRsZU5ld1Byb3BzKCkge1xuXHQgICAgaWYgKG1hcFN0YXRlVG9Qcm9wcy5kZXBlbmRz
T25Pd25Qcm9wcykgc3RhdGVQcm9wcyA9IG1hcFN0YXRlVG9Qcm9wcyhzdGF0ZSwgb3duUHJvcHMp
O1xuXHRcblx0ICAgIGlmIChtYXBEaXNwYXRjaFRvUHJvcHMuZGVwZW5kc09uT3duUHJvcHMpIGRp
c3BhdGNoUHJvcHMgPSBtYXBEaXNwYXRjaFRvUHJvcHMoZGlzcGF0Y2gsIG93blByb3BzKTtcblx0
XG5cdCAgICBtZXJnZWRQcm9wcyA9IG1lcmdlUHJvcHMoc3RhdGVQcm9wcywgZGlzcGF0Y2hQcm9w
cywgb3duUHJvcHMpO1xuXHQgICAgcmV0dXJuIG1lcmdlZFByb3BzO1xuXHQgIH1cblx0XG5cdCAg
ZnVuY3Rpb24gaGFuZGxlTmV3U3RhdGUoKSB7XG5cdCAgICB2YXIgbmV4dFN0YXRlUHJvcHMgPSBt
YXBTdGF0ZVRvUHJvcHMoc3RhdGUsIG93blByb3BzKTtcblx0ICAgIHZhciBzdGF0ZVByb3BzQ2hh
bmdlZCA9ICFhcmVTdGF0ZVByb3BzRXF1YWwobmV4dFN0YXRlUHJvcHMsIHN0YXRlUHJvcHMpO1xu
XHQgICAgc3RhdGVQcm9wcyA9IG5leHRTdGF0ZVByb3BzO1xuXHRcblx0ICAgIGlmIChzdGF0ZVBy
b3BzQ2hhbmdlZCkgbWVyZ2VkUHJvcHMgPSBtZXJnZVByb3BzKHN0YXRlUHJvcHMsIGRpc3BhdGNo
UHJvcHMsIG93blByb3BzKTtcblx0XG5cdCAgICByZXR1cm4gbWVyZ2VkUHJvcHM7XG5cdCAgfVxu
XHRcblx0ICBmdW5jdGlvbiBoYW5kbGVTdWJzZXF1ZW50Q2FsbHMobmV4dFN0YXRlLCBuZXh0T3du
UHJvcHMpIHtcblx0ICAgIHZhciBwcm9wc0NoYW5nZWQgPSAhYXJlT3duUHJvcHNFcXVhbChuZXh0
T3duUHJvcHMsIG93blByb3BzKTtcblx0ICAgIHZhciBzdGF0ZUNoYW5nZWQgPSAhYXJlU3RhdGVz
RXF1YWwobmV4dFN0YXRlLCBzdGF0ZSk7XG5cdCAgICBzdGF0ZSA9IG5leHRTdGF0ZTtcblx0ICAg
IG93blByb3BzID0gbmV4dE93blByb3BzO1xuXHRcblx0ICAgIGlmIChwcm9wc0NoYW5nZWQgJiYg
c3RhdGVDaGFuZ2VkKSByZXR1cm4gaGFuZGxlTmV3UHJvcHNBbmROZXdTdGF0ZSgpO1xuXHQgICAg
aWYgKHByb3BzQ2hhbmdlZCkgcmV0dXJuIGhhbmRsZU5ld1Byb3BzKCk7XG5cdCAgICBpZiAoc3Rh
dGVDaGFuZ2VkKSByZXR1cm4gaGFuZGxlTmV3U3RhdGUoKTtcblx0ICAgIHJldHVybiBtZXJnZWRQ
cm9wcztcblx0ICB9XG5cdFxuXHQgIHJldHVybiBmdW5jdGlvbiBwdXJlRmluYWxQcm9wc1NlbGVj
dG9yKG5leHRTdGF0ZSwgbmV4dE93blByb3BzKSB7XG5cdCAgICByZXR1cm4gaGFzUnVuQXRMZWFz
dE9uY2UgPyBoYW5kbGVTdWJzZXF1ZW50Q2FsbHMobmV4dFN0YXRlLCBuZXh0T3duUHJvcHMpIDog
aGFuZGxlRmlyc3RDYWxsKG5leHRTdGF0ZSwgbmV4dE93blByb3BzKTtcblx0ICB9O1xuXHR9XG5c
dFxuXHQvLyBUT0RPOiBBZGQgbW9yZSBjb21tZW50c1xuXHRcblx0Ly8gSWYgcHVyZSBpcyB0cnVl
LCB0aGUgc2VsZWN0b3IgcmV0dXJuZWQgYnkgc2VsZWN0b3JGYWN0b3J5IHdpbGwgbWVtb2l6ZSBp
dHMgcmVzdWx0cyxcblx0Ly8gYWxsb3dpbmcgY29ubmVjdEFkdmFuY2VkJ3Mgc2hvdWxkQ29tcG9u
ZW50VXBkYXRlIHRvIHJldHVybiBmYWxzZSBpZiBmaW5hbFxuXHQvLyBwcm9wcyBoYXZlIG5vdCBj
aGFuZ2VkLiBJZiBmYWxzZSwgdGhlIHNlbGVjdG9yIHdpbGwgYWx3YXlzIHJldHVybiBhIG5ld1xu
XHQvLyBvYmplY3QgYW5kIHNob3VsZENvbXBvbmVudFVwZGF0ZSB3aWxsIGFsd2F5cyByZXR1cm4g
dHJ1ZS5cblx0XG5cdGZ1bmN0aW9uIGZpbmFsUHJvcHNTZWxlY3RvckZhY3RvcnkoZGlzcGF0Y2gs
IF9yZWYyKSB7XG5cdCAgdmFyIGluaXRNYXBTdGF0ZVRvUHJvcHMgPSBfcmVmMi5pbml0TWFwU3Rh
dGVUb1Byb3BzLFxuXHQgICAgICBpbml0TWFwRGlzcGF0Y2hUb1Byb3BzID0gX3JlZjIuaW5pdE1h
cERpc3BhdGNoVG9Qcm9wcyxcblx0ICAgICAgaW5pdE1lcmdlUHJvcHMgPSBfcmVmMi5pbml0TWVy
Z2VQcm9wcyxcblx0ICAgICAgb3B0aW9ucyA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhfcmVm
MiwgWydpbml0TWFwU3RhdGVUb1Byb3BzJywgJ2luaXRNYXBEaXNwYXRjaFRvUHJvcHMnLCAnaW5p
dE1lcmdlUHJvcHMnXSk7XG5cdFxuXHQgIHZhciBtYXBTdGF0ZVRvUHJvcHMgPSBpbml0TWFwU3Rh
dGVUb1Byb3BzKGRpc3BhdGNoLCBvcHRpb25zKTtcblx0ICB2YXIgbWFwRGlzcGF0Y2hUb1Byb3Bz
ID0gaW5pdE1hcERpc3BhdGNoVG9Qcm9wcyhkaXNwYXRjaCwgb3B0aW9ucyk7XG5cdCAgdmFyIG1l
cmdlUHJvcHMgPSBpbml0TWVyZ2VQcm9wcyhkaXNwYXRjaCwgb3B0aW9ucyk7XG5cdFxuXHQgIGlm
IChmYWxzZSkge1xuXHQgICAgKDAsIF92ZXJpZnlTdWJzZWxlY3RvcnMyLmRlZmF1bHQpKG1hcFN0
YXRlVG9Qcm9wcywgbWFwRGlzcGF0Y2hUb1Byb3BzLCBtZXJnZVByb3BzLCBvcHRpb25zLmRpc3Bs
YXlOYW1lKTtcblx0ICB9XG5cdFxuXHQgIHZhciBzZWxlY3RvckZhY3RvcnkgPSBvcHRpb25zLnB1
cmUgPyBwdXJlRmluYWxQcm9wc1NlbGVjdG9yRmFjdG9yeSA6IGltcHVyZUZpbmFsUHJvcHNTZWxl
Y3RvckZhY3Rvcnk7XG5cdFxuXHQgIHJldHVybiBzZWxlY3RvckZhY3RvcnkobWFwU3RhdGVUb1By
b3BzLCBtYXBEaXNwYXRjaFRvUHJvcHMsIG1lcmdlUHJvcHMsIGRpc3BhdGNoLCBvcHRpb25zKTtc
blx0fVxuXG4vKioqLyB9LFxuLyogMTkzICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9y
dHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHRleHBv
cnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuXHRleHBvcnRzLmRlZmF1bHQgPSB2ZXJpZnlTdWJzZWxl
Y3RvcnM7XG5cdFxuXHR2YXIgX3dhcm5pbmcgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDUwKTtcblx0
XG5cdHZhciBfd2FybmluZzIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF93YXJuaW5nKTtcblx0
XG5cdGZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYg
b2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cdFxuXHRmdW5jdGlv
biB2ZXJpZnkoc2VsZWN0b3IsIG1ldGhvZE5hbWUsIGRpc3BsYXlOYW1lKSB7XG5cdCAgaWYgKCFz
ZWxlY3Rvcikge1xuXHQgICAgdGhyb3cgbmV3IEVycm9yKCdVbmV4cGVjdGVkIHZhbHVlIGZvciAn
ICsgbWV0aG9kTmFtZSArICcgaW4gJyArIGRpc3BsYXlOYW1lICsgJy4nKTtcblx0ICB9IGVsc2Ug
aWYgKG1ldGhvZE5hbWUgPT09ICdtYXBTdGF0ZVRvUHJvcHMnIHx8IG1ldGhvZE5hbWUgPT09ICdt
YXBEaXNwYXRjaFRvUHJvcHMnKSB7XG5cdCAgICBpZiAoIXNlbGVjdG9yLmhhc093blByb3BlcnR5
KCdkZXBlbmRzT25Pd25Qcm9wcycpKSB7XG5cdCAgICAgICgwLCBfd2FybmluZzIuZGVmYXVsdCko
J1RoZSBzZWxlY3RvciBmb3IgJyArIG1ldGhvZE5hbWUgKyAnIG9mICcgKyBkaXNwbGF5TmFtZSAr
ICcgZGlkIG5vdCBzcGVjaWZ5IGEgdmFsdWUgZm9yIGRlcGVuZHNPbk93blByb3BzLicpO1xuXHQg
ICAgfVxuXHQgIH1cblx0fVxuXHRcblx0ZnVuY3Rpb24gdmVyaWZ5U3Vic2VsZWN0b3JzKG1hcFN0
YXRlVG9Qcm9wcywgbWFwRGlzcGF0Y2hUb1Byb3BzLCBtZXJnZVByb3BzLCBkaXNwbGF5TmFtZSkg
e1xuXHQgIHZlcmlmeShtYXBTdGF0ZVRvUHJvcHMsICdtYXBTdGF0ZVRvUHJvcHMnLCBkaXNwbGF5
TmFtZSk7XG5cdCAgdmVyaWZ5KG1hcERpc3BhdGNoVG9Qcm9wcywgJ21hcERpc3BhdGNoVG9Qcm9w
cycsIGRpc3BsYXlOYW1lKTtcblx0ICB2ZXJpZnkobWVyZ2VQcm9wcywgJ21lcmdlUHJvcHMnLCBk
aXNwbGF5TmFtZSk7XG5cdH1cblxuLyoqKi8gfSxcbi8qIDE5NCAqL1xuLyoqKi8gZnVuY3Rpb24o
bW9kdWxlLCBleHBvcnRzKSB7XG5cblx0XCJ1c2Ugc3RyaWN0XCI7XG5cdFxuXHRleHBvcnRzLl9f
ZXNNb2R1bGUgPSB0cnVlO1xuXHRcblx0ZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNl
LCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkg
eyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9u
XCIpOyB9IH1cblx0XG5cdC8vIGVuY2Fwc3VsYXRlcyB0aGUgc3Vic2NyaXB0aW9uIGxvZ2ljIGZv
ciBjb25uZWN0aW5nIGEgY29tcG9uZW50IHRvIHRoZSByZWR1eCBzdG9yZSwgYXNcblx0Ly8gd2Vs
bCBhcyBuZXN0aW5nIHN1YnNjcmlwdGlvbnMgb2YgZGVzY2VuZGFudCBjb21wb25lbnRzLCBzbyB0
aGF0IHdlIGNhbiBlbnN1cmUgdGhlXG5cdC8vIGFuY2VzdG9yIGNvbXBvbmVudHMgcmUtcmVuZGVy
IGJlZm9yZSBkZXNjZW5kYW50c1xuXHRcblx0dmFyIENMRUFSRUQgPSBudWxsO1xuXHR2YXIgbnVs
bExpc3RlbmVycyA9IHtcblx0ICBub3RpZnk6IGZ1bmN0aW9uIG5vdGlmeSgpIHt9XG5cdH07XG5c
dFxuXHRmdW5jdGlvbiBjcmVhdGVMaXN0ZW5lckNvbGxlY3Rpb24oKSB7XG5cdCAgLy8gdGhlIGN1
cnJlbnQvbmV4dCBwYXR0ZXJuIGlzIGNvcGllZCBmcm9tIHJlZHV4J3MgY3JlYXRlU3RvcmUgY29k
ZS5cblx0ICAvLyBUT0RPOiByZWZhY3RvcitleHBvc2UgdGhhdCBjb2RlIHRvIGJlIHJldXNhYmxl
IGhlcmU/XG5cdCAgdmFyIGN1cnJlbnQgPSBbXTtcblx0ICB2YXIgbmV4dCA9IFtdO1xuXHRcblx0
ICByZXR1cm4ge1xuXHQgICAgY2xlYXI6IGZ1bmN0aW9uIGNsZWFyKCkge1xuXHQgICAgICBuZXh0
ID0gQ0xFQVJFRDtcblx0ICAgICAgY3VycmVudCA9IENMRUFSRUQ7XG5cdCAgICB9LFxuXHQgICAg
bm90aWZ5OiBmdW5jdGlvbiBub3RpZnkoKSB7XG5cdCAgICAgIHZhciBsaXN0ZW5lcnMgPSBjdXJy
ZW50ID0gbmV4dDtcblx0ICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsaXN0ZW5lcnMubGVuZ3Ro
OyBpKyspIHtcblx0ICAgICAgICBsaXN0ZW5lcnNbaV0oKTtcblx0ICAgICAgfVxuXHQgICAgfSxc
blx0ICAgIGdldDogZnVuY3Rpb24gZ2V0KCkge1xuXHQgICAgICByZXR1cm4gbmV4dDtcblx0ICAg
IH0sXG5cdCAgICBzdWJzY3JpYmU6IGZ1bmN0aW9uIHN1YnNjcmliZShsaXN0ZW5lcikge1xuXHQg
ICAgICB2YXIgaXNTdWJzY3JpYmVkID0gdHJ1ZTtcblx0ICAgICAgaWYgKG5leHQgPT09IGN1cnJl
bnQpIG5leHQgPSBjdXJyZW50LnNsaWNlKCk7XG5cdCAgICAgIG5leHQucHVzaChsaXN0ZW5lcik7
XG5cdFxuXHQgICAgICByZXR1cm4gZnVuY3Rpb24gdW5zdWJzY3JpYmUoKSB7XG5cdCAgICAgICAg
aWYgKCFpc1N1YnNjcmliZWQgfHwgY3VycmVudCA9PT0gQ0xFQVJFRCkgcmV0dXJuO1xuXHQgICAg
ICAgIGlzU3Vic2NyaWJlZCA9IGZhbHNlO1xuXHRcblx0ICAgICAgICBpZiAobmV4dCA9PT0gY3Vy
cmVudCkgbmV4dCA9IGN1cnJlbnQuc2xpY2UoKTtcblx0ICAgICAgICBuZXh0LnNwbGljZShuZXh0
LmluZGV4T2YobGlzdGVuZXIpLCAxKTtcblx0ICAgICAgfTtcblx0ICAgIH1cblx0ICB9O1xuXHR9
XG5cdFxuXHR2YXIgU3Vic2NyaXB0aW9uID0gZnVuY3Rpb24gKCkge1xuXHQgIGZ1bmN0aW9uIFN1
YnNjcmlwdGlvbihzdG9yZSwgcGFyZW50U3ViLCBvblN0YXRlQ2hhbmdlKSB7XG5cdCAgICBfY2xh
c3NDYWxsQ2hlY2sodGhpcywgU3Vic2NyaXB0aW9uKTtcblx0XG5cdCAgICB0aGlzLnN0b3JlID0g
c3RvcmU7XG5cdCAgICB0aGlzLnBhcmVudFN1YiA9IHBhcmVudFN1Yjtcblx0ICAgIHRoaXMub25T
dGF0ZUNoYW5nZSA9IG9uU3RhdGVDaGFuZ2U7XG5cdCAgICB0aGlzLnVuc3Vic2NyaWJlID0gbnVs
bDtcblx0ICAgIHRoaXMubGlzdGVuZXJzID0gbnVsbExpc3RlbmVycztcblx0ICB9XG5cdFxuXHQg
IFN1YnNjcmlwdGlvbi5wcm90b3R5cGUuYWRkTmVzdGVkU3ViID0gZnVuY3Rpb24gYWRkTmVzdGVk
U3ViKGxpc3RlbmVyKSB7XG5cdCAgICB0aGlzLnRyeVN1YnNjcmliZSgpO1xuXHQgICAgcmV0dXJu
IHRoaXMubGlzdGVuZXJzLnN1YnNjcmliZShsaXN0ZW5lcik7XG5cdCAgfTtcblx0XG5cdCAgU3Vi
c2NyaXB0aW9uLnByb3RvdHlwZS5ub3RpZnlOZXN0ZWRTdWJzID0gZnVuY3Rpb24gbm90aWZ5TmVz
dGVkU3VicygpIHtcblx0ICAgIHRoaXMubGlzdGVuZXJzLm5vdGlmeSgpO1xuXHQgIH07XG5cdFxu
XHQgIFN1YnNjcmlwdGlvbi5wcm90b3R5cGUuaXNTdWJzY3JpYmVkID0gZnVuY3Rpb24gaXNTdWJz
Y3JpYmVkKCkge1xuXHQgICAgcmV0dXJuIEJvb2xlYW4odGhpcy51bnN1YnNjcmliZSk7XG5cdCAg
fTtcblx0XG5cdCAgU3Vic2NyaXB0aW9uLnByb3RvdHlwZS50cnlTdWJzY3JpYmUgPSBmdW5jdGlv
biB0cnlTdWJzY3JpYmUoKSB7XG5cdCAgICBpZiAoIXRoaXMudW5zdWJzY3JpYmUpIHtcblx0ICAg
ICAgdGhpcy51bnN1YnNjcmliZSA9IHRoaXMucGFyZW50U3ViID8gdGhpcy5wYXJlbnRTdWIuYWRk
TmVzdGVkU3ViKHRoaXMub25TdGF0ZUNoYW5nZSkgOiB0aGlzLnN0b3JlLnN1YnNjcmliZSh0aGlz
Lm9uU3RhdGVDaGFuZ2UpO1xuXHRcblx0ICAgICAgdGhpcy5saXN0ZW5lcnMgPSBjcmVhdGVMaXN0
ZW5lckNvbGxlY3Rpb24oKTtcblx0ICAgIH1cblx0ICB9O1xuXHRcblx0ICBTdWJzY3JpcHRpb24u
cHJvdG90eXBlLnRyeVVuc3Vic2NyaWJlID0gZnVuY3Rpb24gdHJ5VW5zdWJzY3JpYmUoKSB7XG5c
dCAgICBpZiAodGhpcy51bnN1YnNjcmliZSkge1xuXHQgICAgICB0aGlzLnVuc3Vic2NyaWJlKCk7
XG5cdCAgICAgIHRoaXMudW5zdWJzY3JpYmUgPSBudWxsO1xuXHQgICAgICB0aGlzLmxpc3RlbmVy
cy5jbGVhcigpO1xuXHQgICAgICB0aGlzLmxpc3RlbmVycyA9IG51bGxMaXN0ZW5lcnM7XG5cdCAg
ICB9XG5cdCAgfTtcblx0XG5cdCAgcmV0dXJuIFN1YnNjcmlwdGlvbjtcblx0fSgpO1xuXHRcblx0
ZXhwb3J0cy5kZWZhdWx0ID0gU3Vic2NyaXB0aW9uO1xuXG4vKioqLyB9LFxuLyogMTk1ICovXG4v
KioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuXHQndXNlIHN0cmljdCc7XG5cdFxu
XHRleHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuXHRleHBvcnRzLmRlZmF1bHQgPSBzaGFsbG93
RXF1YWw7XG5cdHZhciBoYXNPd24gPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xu
XHRcblx0ZnVuY3Rpb24gaXMoeCwgeSkge1xuXHQgIGlmICh4ID09PSB5KSB7XG5cdCAgICByZXR1
cm4geCAhPT0gMCB8fCB5ICE9PSAwIHx8IDEgLyB4ID09PSAxIC8geTtcblx0ICB9IGVsc2Uge1xu
XHQgICAgcmV0dXJuIHggIT09IHggJiYgeSAhPT0geTtcblx0ICB9XG5cdH1cblx0XG5cdGZ1bmN0
aW9uIHNoYWxsb3dFcXVhbChvYmpBLCBvYmpCKSB7XG5cdCAgaWYgKGlzKG9iakEsIG9iakIpKSBy
ZXR1cm4gdHJ1ZTtcblx0XG5cdCAgaWYgKHR5cGVvZiBvYmpBICE9PSAnb2JqZWN0JyB8fCBvYmpB
ID09PSBudWxsIHx8IHR5cGVvZiBvYmpCICE9PSAnb2JqZWN0JyB8fCBvYmpCID09PSBudWxsKSB7
XG5cdCAgICByZXR1cm4gZmFsc2U7XG5cdCAgfVxuXHRcblx0ICB2YXIga2V5c0EgPSBPYmplY3Qu
a2V5cyhvYmpBKTtcblx0ICB2YXIga2V5c0IgPSBPYmplY3Qua2V5cyhvYmpCKTtcblx0XG5cdCAg
aWYgKGtleXNBLmxlbmd0aCAhPT0ga2V5c0IubGVuZ3RoKSByZXR1cm4gZmFsc2U7XG5cdFxuXHQg
IGZvciAodmFyIGkgPSAwOyBpIDwga2V5c0EubGVuZ3RoOyBpKyspIHtcblx0ICAgIGlmICghaGFz
T3duLmNhbGwob2JqQiwga2V5c0FbaV0pIHx8ICFpcyhvYmpBW2tleXNBW2ldXSwgb2JqQltrZXlz
QVtpXV0pKSB7XG5cdCAgICAgIHJldHVybiBmYWxzZTtcblx0ICAgIH1cblx0ICB9XG5cdFxuXHQg
IHJldHVybiB0cnVlO1xuXHR9XG5cbi8qKiovIH0sXG4vKiAxOTYgKi9cbi8qKiovIGZ1bmN0aW9u
KG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8vIEByZW1vdmUt
b24tZWplY3QtYmVnaW5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAoYykgMjAxNS1wcmVzZW50LCBG
YWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlz
IHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3Vu
ZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlz
IHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMg
Y2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5Llxu
XHQgKi9cblx0Ly8gQHJlbW92ZS1vbi1lamVjdC1lbmRcblx0XG5cdGlmICh0eXBlb2YgUHJvbWlz
ZSA9PT0gJ3VuZGVmaW5lZCcpIHtcblx0ICAvLyBSZWplY3Rpb24gdHJhY2tpbmcgcHJldmVudHMg
YSBjb21tb24gaXNzdWUgd2hlcmUgUmVhY3QgZ2V0cyBpbnRvIGFuXG5cdCAgLy8gaW5jb25zaXN0
ZW50IHN0YXRlIGR1ZSB0byBhbiBlcnJvciwgYnV0IGl0IGdldHMgc3dhbGxvd2VkIGJ5IGEgUHJv
bWlzZSxcblx0ICAvLyBhbmQgdGhlIHVzZXIgaGFzIG5vIGlkZWEgd2hhdCBjYXVzZXMgUmVhY3Qn
cyBlcnJhdGljIGZ1dHVyZSBiZWhhdmlvci5cblx0ICBfX3dlYnBhY2tfcmVxdWlyZV9fKDIxMCku
ZW5hYmxlKCk7XG5cdCAgd2luZG93LlByb21pc2UgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIwOSk7
XG5cdH1cblx0XG5cdC8vIGZldGNoKCkgcG9seWZpbGwgZm9yIG1ha2luZyBBUEkgY2FsbHMuXG5c
dF9fd2VicGFja19yZXF1aXJlX18oMjEyKTtcblx0XG5cdC8vIE9iamVjdC5hc3NpZ24oKSBpcyBj
b21tb25seSB1c2VkIHdpdGggUmVhY3QuXG5cdC8vIEl0IHdpbGwgdXNlIHRoZSBuYXRpdmUgaW1w
bGVtZW50YXRpb24gaWYgaXQncyBwcmVzZW50IGFuZCBpc24ndCBidWdneS5cblx0T2JqZWN0LmFz
c2lnbiA9IF9fd2VicGFja19yZXF1aXJlX18oMjA4KTtcblxuXG4vKioqLyB9LFxuLyogMTk3ICov
XG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuXHQvKiBXRUJQQUNLIFZBUiBJ
TkpFQ1RJT04gKi8oZnVuY3Rpb24oZ2xvYmFsKSB7XCJ1c2Ugc3RyaWN0XCI7XG5cdFxuXHQvLyBV
c2UgdGhlIGZhc3Rlc3QgbWVhbnMgcG9zc2libGUgdG8gZXhlY3V0ZSBhIHRhc2sgaW4gaXRzIG93
biB0dXJuLCB3aXRoXG5cdC8vIHByaW9yaXR5IG92ZXIgb3RoZXIgZXZlbnRzIGluY2x1ZGluZyBJ
TywgYW5pbWF0aW9uLCByZWZsb3csIGFuZCByZWRyYXdcblx0Ly8gZXZlbnRzIGluIGJyb3dzZXJz
LlxuXHQvL1xuXHQvLyBBbiBleGNlcHRpb24gdGhyb3duIGJ5IGEgdGFzayB3aWxsIHBlcm1hbmVu
dGx5IGludGVycnVwdCB0aGUgcHJvY2Vzc2luZyBvZlxuXHQvLyBzdWJzZXF1ZW50IHRhc2tzLiBU
aGUgaGlnaGVyIGxldmVsIGBhc2FwYCBmdW5jdGlvbiBlbnN1cmVzIHRoYXQgaWYgYW5cblx0Ly8g
ZXhjZXB0aW9uIGlzIHRocm93biBieSBhIHRhc2ssIHRoYXQgdGhlIHRhc2sgcXVldWUgd2lsbCBj
b250aW51ZSBmbHVzaGluZyBhc1xuXHQvLyBzb29uIGFzIHBvc3NpYmxlLCBidXQgaWYgeW91IHVz
ZSBgcmF3QXNhcGAgZGlyZWN0bHksIHlvdSBhcmUgcmVzcG9uc2libGUgdG9cblx0Ly8gZWl0aGVy
IGVuc3VyZSB0aGF0IG5vIGV4Y2VwdGlvbnMgYXJlIHRocm93biBmcm9tIHlvdXIgdGFzaywgb3Ig
dG8gbWFudWFsbHlcblx0Ly8gY2FsbCBgcmF3QXNhcC5yZXF1ZXN0Rmx1c2hgIGlmIGFuIGV4Y2Vw
dGlvbiBpcyB0aHJvd24uXG5cdG1vZHVsZS5leHBvcnRzID0gcmF3QXNhcDtcblx0ZnVuY3Rpb24g
cmF3QXNhcCh0YXNrKSB7XG5cdCAgICBpZiAoIXF1ZXVlLmxlbmd0aCkge1xuXHQgICAgICAgIHJl
cXVlc3RGbHVzaCgpO1xuXHQgICAgICAgIGZsdXNoaW5nID0gdHJ1ZTtcblx0ICAgIH1cblx0ICAg
IC8vIEVxdWl2YWxlbnQgdG8gcHVzaCwgYnV0IGF2b2lkcyBhIGZ1bmN0aW9uIGNhbGwuXG5cdCAg
ICBxdWV1ZVtxdWV1ZS5sZW5ndGhdID0gdGFzaztcblx0fVxuXHRcblx0dmFyIHF1ZXVlID0gW107
XG5cdC8vIE9uY2UgYSBmbHVzaCBoYXMgYmVlbiByZXF1ZXN0ZWQsIG5vIGZ1cnRoZXIgY2FsbHMg
dG8gYHJlcXVlc3RGbHVzaGAgYXJlXG5cdC8vIG5lY2Vzc2FyeSB1bnRpbCB0aGUgbmV4dCBgZmx1
c2hgIGNvbXBsZXRlcy5cblx0dmFyIGZsdXNoaW5nID0gZmFsc2U7XG5cdC8vIGByZXF1ZXN0Rmx1
c2hgIGlzIGFuIGltcGxlbWVudGF0aW9uLXNwZWNpZmljIG1ldGhvZCB0aGF0IGF0dGVtcHRzIHRv
IGtpY2tcblx0Ly8gb2ZmIGEgYGZsdXNoYCBldmVudCBhcyBxdWlja2x5IGFzIHBvc3NpYmxlLiBg
Zmx1c2hgIHdpbGwgYXR0ZW1wdCB0byBleGhhdXN0XG5cdC8vIHRoZSBldmVudCBxdWV1ZSBiZWZv
cmUgeWllbGRpbmcgdG8gdGhlIGJyb3dzZXIncyBvd24gZXZlbnQgbG9vcC5cblx0dmFyIHJlcXVl
c3RGbHVzaDtcblx0Ly8gVGhlIHBvc2l0aW9uIG9mIHRoZSBuZXh0IHRhc2sgdG8gZXhlY3V0ZSBp
biB0aGUgdGFzayBxdWV1ZS4gVGhpcyBpc1xuXHQvLyBwcmVzZXJ2ZWQgYmV0d2VlbiBjYWxscyB0
byBgZmx1c2hgIHNvIHRoYXQgaXQgY2FuIGJlIHJlc3VtZWQgaWZcblx0Ly8gYSB0YXNrIHRocm93
cyBhbiBleGNlcHRpb24uXG5cdHZhciBpbmRleCA9IDA7XG5cdC8vIElmIGEgdGFzayBzY2hlZHVs
ZXMgYWRkaXRpb25hbCB0YXNrcyByZWN1cnNpdmVseSwgdGhlIHRhc2sgcXVldWUgY2FuIGdyb3dc
blx0Ly8gdW5ib3VuZGVkLiBUbyBwcmV2ZW50IG1lbW9yeSBleGhhdXN0aW9uLCB0aGUgdGFzayBx
dWV1ZSB3aWxsIHBlcmlvZGljYWxseVxuXHQvLyB0cnVuY2F0ZSBhbHJlYWR5LWNvbXBsZXRlZCB0
YXNrcy5cblx0dmFyIGNhcGFjaXR5ID0gMTAyNDtcblx0XG5cdC8vIFRoZSBmbHVzaCBmdW5jdGlv
biBwcm9jZXNzZXMgYWxsIHRhc2tzIHRoYXQgaGF2ZSBiZWVuIHNjaGVkdWxlZCB3aXRoXG5cdC8v
IGByYXdBc2FwYCB1bmxlc3MgYW5kIHVudGlsIG9uZSBvZiB0aG9zZSB0YXNrcyB0aHJvd3MgYW4g
ZXhjZXB0aW9uLlxuXHQvLyBJZiBhIHRhc2sgdGhyb3dzIGFuIGV4Y2VwdGlvbiwgYGZsdXNoYCBl
bnN1cmVzIHRoYXQgaXRzIHN0YXRlIHdpbGwgcmVtYWluXG5cdC8vIGNvbnNpc3RlbnQgYW5kIHdp
bGwgcmVzdW1lIHdoZXJlIGl0IGxlZnQgb2ZmIHdoZW4gY2FsbGVkIGFnYWluLlxuXHQvLyBIb3dl
dmVyLCBgZmx1c2hgIGRvZXMgbm90IG1ha2UgYW55IGFycmFuZ2VtZW50cyB0byBiZSBjYWxsZWQg
YWdhaW4gaWYgYW5cblx0Ly8gZXhjZXB0aW9uIGlzIHRocm93bi5cblx0ZnVuY3Rpb24gZmx1c2go
KSB7XG5cdCAgICB3aGlsZSAoaW5kZXggPCBxdWV1ZS5sZW5ndGgpIHtcblx0ICAgICAgICB2YXIg
Y3VycmVudEluZGV4ID0gaW5kZXg7XG5cdCAgICAgICAgLy8gQWR2YW5jZSB0aGUgaW5kZXggYmVm
b3JlIGNhbGxpbmcgdGhlIHRhc2suIFRoaXMgZW5zdXJlcyB0aGF0IHdlIHdpbGxcblx0ICAgICAg
ICAvLyBiZWdpbiBmbHVzaGluZyBvbiB0aGUgbmV4dCB0YXNrIHRoZSB0YXNrIHRocm93cyBhbiBl
cnJvci5cblx0ICAgICAgICBpbmRleCA9IGluZGV4ICsgMTtcblx0ICAgICAgICBxdWV1ZVtjdXJy
ZW50SW5kZXhdLmNhbGwoKTtcblx0ICAgICAgICAvLyBQcmV2ZW50IGxlYWtpbmcgbWVtb3J5IGZv
ciBsb25nIGNoYWlucyBvZiByZWN1cnNpdmUgY2FsbHMgdG8gYGFzYXBgLlxuXHQgICAgICAgIC8v
IElmIHdlIGNhbGwgYGFzYXBgIHdpdGhpbiB0YXNrcyBzY2hlZHVsZWQgYnkgYGFzYXBgLCB0aGUg
cXVldWUgd2lsbFxuXHQgICAgICAgIC8vIGdyb3csIGJ1dCB0byBhdm9pZCBhbiBPKG4pIHdhbGsg
Zm9yIGV2ZXJ5IHRhc2sgd2UgZXhlY3V0ZSwgd2UgZG9uJ3Rcblx0ICAgICAgICAvLyBzaGlmdCB0
YXNrcyBvZmYgdGhlIHF1ZXVlIGFmdGVyIHRoZXkgaGF2ZSBiZWVuIGV4ZWN1dGVkLlxuXHQgICAg
ICAgIC8vIEluc3RlYWQsIHdlIHBlcmlvZGljYWxseSBzaGlmdCAxMDI0IHRhc2tzIG9mZiB0aGUg
cXVldWUuXG5cdCAgICAgICAgaWYgKGluZGV4ID4gY2FwYWNpdHkpIHtcblx0ICAgICAgICAgICAg
Ly8gTWFudWFsbHkgc2hpZnQgYWxsIHZhbHVlcyBzdGFydGluZyBhdCB0aGUgaW5kZXggYmFjayB0
byB0aGVcblx0ICAgICAgICAgICAgLy8gYmVnaW5uaW5nIG9mIHRoZSBxdWV1ZS5cblx0ICAgICAg
ICAgICAgZm9yICh2YXIgc2NhbiA9IDAsIG5ld0xlbmd0aCA9IHF1ZXVlLmxlbmd0aCAtIGluZGV4
OyBzY2FuIDwgbmV3TGVuZ3RoOyBzY2FuKyspIHtcblx0ICAgICAgICAgICAgICAgIHF1ZXVlW3Nj
YW5dID0gcXVldWVbc2NhbiArIGluZGV4XTtcblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgICAg
ICBxdWV1ZS5sZW5ndGggLT0gaW5kZXg7XG5cdCAgICAgICAgICAgIGluZGV4ID0gMDtcblx0ICAg
ICAgICB9XG5cdCAgICB9XG5cdCAgICBxdWV1ZS5sZW5ndGggPSAwO1xuXHQgICAgaW5kZXggPSAw
O1xuXHQgICAgZmx1c2hpbmcgPSBmYWxzZTtcblx0fVxuXHRcblx0Ly8gYHJlcXVlc3RGbHVzaGAg
aXMgaW1wbGVtZW50ZWQgdXNpbmcgYSBzdHJhdGVneSBiYXNlZCBvbiBkYXRhIGNvbGxlY3RlZCBm
cm9tXG5cdC8vIGV2ZXJ5IGF2YWlsYWJsZSBTYXVjZUxhYnMgU2VsZW5pdW0gd2ViIGRyaXZlciB3
b3JrZXIgYXQgdGltZSBvZiB3cml0aW5nLlxuXHQvLyBodHRwczovL2RvY3MuZ29vZ2xlLmNvbS9z
cHJlYWRzaGVldHMvZC8xbUctNVVZR3VwNXF4R2RFTVdraFA2QldDejA1M05VYjJFMVFvVVRVMTZ1
QS9lZGl0I2dpZD03ODM3MjQ1OTNcblx0XG5cdC8vIFNhZmFyaSA2IGFuZCA2LjEgZm9yIGRlc2t0
b3AsIGlQYWQsIGFuZCBpUGhvbmUgYXJlIHRoZSBvbmx5IGJyb3dzZXJzIHRoYXRcblx0Ly8gaGF2
ZSBXZWJLaXRNdXRhdGlvbk9ic2VydmVyIGJ1dCBub3QgdW4tcHJlZml4ZWQgTXV0YXRpb25PYnNl
cnZlci5cblx0Ly8gTXVzdCB1c2UgYGdsb2JhbGAgb3IgYHNlbGZgIGluc3RlYWQgb2YgYHdpbmRv
d2AgdG8gd29yayBpbiBib3RoIGZyYW1lcyBhbmQgd2ViXG5cdC8vIHdvcmtlcnMuIGBnbG9iYWxg
IGlzIGEgcHJvdmlzaW9uIG9mIEJyb3dzZXJpZnksIE1yLCBNcnMsIG9yIE1vcC5cblx0XG5cdC8q
IGdsb2JhbHMgc2VsZiAqL1xuXHR2YXIgc2NvcGUgPSB0eXBlb2YgZ2xvYmFsICE9PSBcInVuZGVm
aW5lZFwiID8gZ2xvYmFsIDogc2VsZjtcblx0dmFyIEJyb3dzZXJNdXRhdGlvbk9ic2VydmVyID0g
c2NvcGUuTXV0YXRpb25PYnNlcnZlciB8fCBzY29wZS5XZWJLaXRNdXRhdGlvbk9ic2VydmVyO1xu
XHRcblx0Ly8gTXV0YXRpb25PYnNlcnZlcnMgYXJlIGRlc2lyYWJsZSBiZWNhdXNlIHRoZXkgaGF2
ZSBoaWdoIHByaW9yaXR5IGFuZCB3b3JrXG5cdC8vIHJlbGlhYmx5IGV2ZXJ5d2hlcmUgdGhleSBh
cmUgaW1wbGVtZW50ZWQuXG5cdC8vIFRoZXkgYXJlIGltcGxlbWVudGVkIGluIGFsbCBtb2Rlcm4g
YnJvd3NlcnMuXG5cdC8vXG5cdC8vIC0gQW5kcm9pZCA0LTQuM1xuXHQvLyAtIENocm9tZSAyNi0z
NFxuXHQvLyAtIEZpcmVmb3ggMTQtMjlcblx0Ly8gLSBJbnRlcm5ldCBFeHBsb3JlciAxMVxuXHQv
LyAtIGlQYWQgU2FmYXJpIDYtNy4xXG5cdC8vIC0gaVBob25lIFNhZmFyaSA3LTcuMVxuXHQvLyAt
IFNhZmFyaSA2LTdcblx0aWYgKHR5cGVvZiBCcm93c2VyTXV0YXRpb25PYnNlcnZlciA9PT0gXCJm
dW5jdGlvblwiKSB7XG5cdCAgICByZXF1ZXN0Rmx1c2ggPSBtYWtlUmVxdWVzdENhbGxGcm9tTXV0
YXRpb25PYnNlcnZlcihmbHVzaCk7XG5cdFxuXHQvLyBNZXNzYWdlQ2hhbm5lbHMgYXJlIGRlc2ly
YWJsZSBiZWNhdXNlIHRoZXkgZ2l2ZSBkaXJlY3QgYWNjZXNzIHRvIHRoZSBIVE1MXG5cdC8vIHRh
c2sgcXVldWUsIGFyZSBpbXBsZW1lbnRlZCBpbiBJbnRlcm5ldCBFeHBsb3JlciAxMCwgU2FmYXJp
IDUuMC0xLCBhbmQgT3BlcmFcblx0Ly8gMTEtMTIsIGFuZCBpbiB3ZWIgd29ya2VycyBpbiBtYW55
IGVuZ2luZXMuXG5cdC8vIEFsdGhvdWdoIG1lc3NhZ2UgY2hhbm5lbHMgeWllbGQgdG8gYW55IHF1
ZXVlZCByZW5kZXJpbmcgYW5kIElPIHRhc2tzLCB0aGV5XG5cdC8vIHdvdWxkIGJlIGJldHRlciB0
aGFuIGltcG9zaW5nIHRoZSA0bXMgZGVsYXkgb2YgdGltZXJzLlxuXHQvLyBIb3dldmVyLCB0aGV5
IGRvIG5vdCB3b3JrIHJlbGlhYmx5IGluIEludGVybmV0IEV4cGxvcmVyIG9yIFNhZmFyaS5cblx0
XG5cdC8vIEludGVybmV0IEV4cGxvcmVyIDEwIGlzIHRoZSBvbmx5IGJyb3dzZXIgdGhhdCBoYXMg
c2V0SW1tZWRpYXRlIGJ1dCBkb2VzXG5cdC8vIG5vdCBoYXZlIE11dGF0aW9uT2JzZXJ2ZXJzLlxu
XHQvLyBBbHRob3VnaCBzZXRJbW1lZGlhdGUgeWllbGRzIHRvIHRoZSBicm93c2VyJ3MgcmVuZGVy
ZXIsIGl0IHdvdWxkIGJlXG5cdC8vIHByZWZlcnJhYmxlIHRvIGZhbGxpbmcgYmFjayB0byBzZXRU
aW1lb3V0IHNpbmNlIGl0IGRvZXMgbm90IGhhdmVcblx0Ly8gdGhlIG1pbmltdW0gNG1zIHBlbmFs
dHkuXG5cdC8vIFVuZm9ydHVuYXRlbHkgdGhlcmUgYXBwZWFycyB0byBiZSBhIGJ1ZyBpbiBJbnRl
cm5ldCBFeHBsb3JlciAxMCBNb2JpbGUgKGFuZFxuXHQvLyBEZXNrdG9wIHRvIGEgbGVzc2VyIGV4
dGVudCkgdGhhdCByZW5kZXJzIGJvdGggc2V0SW1tZWRpYXRlIGFuZFxuXHQvLyBNZXNzYWdlQ2hh
bm5lbCB1c2VsZXNzIGZvciB0aGUgcHVycG9zZXMgb2YgQVNBUC5cblx0Ly8gaHR0cHM6Ly9naXRo
dWIuY29tL2tyaXNrb3dhbC9xL2lzc3Vlcy8zOTZcblx0XG5cdC8vIFRpbWVycyBhcmUgaW1wbGVt
ZW50ZWQgdW5pdmVyc2FsbHkuXG5cdC8vIFdlIGZhbGwgYmFjayB0byB0aW1lcnMgaW4gd29ya2Vy
cyBpbiBtb3N0IGVuZ2luZXMsIGFuZCBpbiBmb3JlZ3JvdW5kXG5cdC8vIGNvbnRleHRzIGluIHRo
ZSBmb2xsb3dpbmcgYnJvd3NlcnMuXG5cdC8vIEhvd2V2ZXIsIG5vdGUgdGhhdCBldmVuIHRoaXMg
c2ltcGxlIGNhc2UgcmVxdWlyZXMgbnVhbmNlcyB0byBvcGVyYXRlIGluIGFcblx0Ly8gYnJvYWQg
c3BlY3RydW0gb2YgYnJvd3NlcnMuXG5cdC8vXG5cdC8vIC0gRmlyZWZveCAzLTEzXG5cdC8vIC0g
SW50ZXJuZXQgRXhwbG9yZXIgNi05XG5cdC8vIC0gaVBhZCBTYWZhcmkgNC4zXG5cdC8vIC0gTHlu
eCAyLjguN1xuXHR9IGVsc2Uge1xuXHQgICAgcmVxdWVzdEZsdXNoID0gbWFrZVJlcXVlc3RDYWxs
RnJvbVRpbWVyKGZsdXNoKTtcblx0fVxuXHRcblx0Ly8gYHJlcXVlc3RGbHVzaGAgcmVxdWVzdHMg
dGhhdCB0aGUgaGlnaCBwcmlvcml0eSBldmVudCBxdWV1ZSBiZSBmbHVzaGVkIGFzXG5cdC8vIHNv
b24gYXMgcG9zc2libGUuXG5cdC8vIFRoaXMgaXMgdXNlZnVsIHRvIHByZXZlbnQgYW4gZXJyb3Ig
dGhyb3duIGluIGEgdGFzayBmcm9tIHN0YWxsaW5nIHRoZSBldmVudFxuXHQvLyBxdWV1ZSBpZiB0
aGUgZXhjZXB0aW9uIGhhbmRsZWQgYnkgTm9kZS5qc+KAmXNcblx0Ly8gYHByb2Nlc3Mub24oXCJ1
bmNhdWdodEV4Y2VwdGlvblwiKWAgb3IgYnkgYSBkb21haW4uXG5cdHJhd0FzYXAucmVxdWVzdEZs
dXNoID0gcmVxdWVzdEZsdXNoO1xuXHRcblx0Ly8gVG8gcmVxdWVzdCBhIGhpZ2ggcHJpb3JpdHkg
ZXZlbnQsIHdlIGluZHVjZSBhIG11dGF0aW9uIG9ic2VydmVyIGJ5IHRvZ2dsaW5nXG5cdC8vIHRo
ZSB0ZXh0IG9mIGEgdGV4dCBub2RlIGJldHdlZW4gXCIxXCIgYW5kIFwiLTFcIi5cblx0ZnVuY3Rp
b24gbWFrZVJlcXVlc3RDYWxsRnJvbU11dGF0aW9uT2JzZXJ2ZXIoY2FsbGJhY2spIHtcblx0ICAg
IHZhciB0b2dnbGUgPSAxO1xuXHQgICAgdmFyIG9ic2VydmVyID0gbmV3IEJyb3dzZXJNdXRhdGlv
bk9ic2VydmVyKGNhbGxiYWNrKTtcblx0ICAgIHZhciBub2RlID0gZG9jdW1lbnQuY3JlYXRlVGV4
dE5vZGUoXCJcIik7XG5cdCAgICBvYnNlcnZlci5vYnNlcnZlKG5vZGUsIHtjaGFyYWN0ZXJEYXRh
OiB0cnVlfSk7XG5cdCAgICByZXR1cm4gZnVuY3Rpb24gcmVxdWVzdENhbGwoKSB7XG5cdCAgICAg
ICAgdG9nZ2xlID0gLXRvZ2dsZTtcblx0ICAgICAgICBub2RlLmRhdGEgPSB0b2dnbGU7XG5cdCAg
ICB9O1xuXHR9XG5cdFxuXHQvLyBUaGUgbWVzc2FnZSBjaGFubmVsIHRlY2huaXF1ZSB3YXMgZGlz
Y292ZXJlZCBieSBNYWx0ZSBVYmwgYW5kIHdhcyB0aGVcblx0Ly8gb3JpZ2luYWwgZm91bmRhdGlv
biBmb3IgdGhpcyBsaWJyYXJ5LlxuXHQvLyBodHRwOi8vd3d3Lm5vbmJsb2NraW5nLmlvLzIwMTEv
MDYvd2luZG93bmV4dHRpY2suaHRtbFxuXHRcblx0Ly8gU2FmYXJpIDYuMC41IChhdCBsZWFzdCkg
aW50ZXJtaXR0ZW50bHkgZmFpbHMgdG8gY3JlYXRlIG1lc3NhZ2UgcG9ydHMgb24gYVxuXHQvLyBw
YWdlJ3MgZmlyc3QgbG9hZC4gVGhhbmtmdWxseSwgdGhpcyB2ZXJzaW9uIG9mIFNhZmFyaSBzdXBw
b3J0c1xuXHQvLyBNdXRhdGlvbk9ic2VydmVycywgc28gd2UgZG9uJ3QgbmVlZCB0byBmYWxsIGJh
Y2sgaW4gdGhhdCBjYXNlLlxuXHRcblx0Ly8gZnVuY3Rpb24gbWFrZVJlcXVlc3RDYWxsRnJvbU1l
c3NhZ2VDaGFubmVsKGNhbGxiYWNrKSB7XG5cdC8vICAgICB2YXIgY2hhbm5lbCA9IG5ldyBNZXNz
YWdlQ2hhbm5lbCgpO1xuXHQvLyAgICAgY2hhbm5lbC5wb3J0MS5vbm1lc3NhZ2UgPSBjYWxsYmFj
aztcblx0Ly8gICAgIHJldHVybiBmdW5jdGlvbiByZXF1ZXN0Q2FsbCgpIHtcblx0Ly8gICAgICAg
ICBjaGFubmVsLnBvcnQyLnBvc3RNZXNzYWdlKDApO1xuXHQvLyAgICAgfTtcblx0Ly8gfVxuXHRc
blx0Ly8gRm9yIHJlYXNvbnMgZXhwbGFpbmVkIGFib3ZlLCB3ZSBhcmUgYWxzbyB1bmFibGUgdG8g
dXNlIGBzZXRJbW1lZGlhdGVgXG5cdC8vIHVuZGVyIGFueSBjaXJjdW1zdGFuY2VzLlxuXHQvLyBF
dmVuIGlmIHdlIHdlcmUsIHRoZXJlIGlzIGFub3RoZXIgYnVnIGluIEludGVybmV0IEV4cGxvcmVy
IDEwLlxuXHQvLyBJdCBpcyBub3Qgc3VmZmljaWVudCB0byBhc3NpZ24gYHNldEltbWVkaWF0ZWAg
dG8gYHJlcXVlc3RGbHVzaGAgYmVjYXVzZVxuXHQvLyBgc2V0SW1tZWRpYXRlYCBtdXN0IGJlIGNh
bGxlZCAqYnkgbmFtZSogYW5kIHRoZXJlZm9yZSBtdXN0IGJlIHdyYXBwZWQgaW4gYVxuXHQvLyBj
bG9zdXJlLlxuXHQvLyBOZXZlciBmb3JnZXQuXG5cdFxuXHQvLyBmdW5jdGlvbiBtYWtlUmVxdWVz
dENhbGxGcm9tU2V0SW1tZWRpYXRlKGNhbGxiYWNrKSB7XG5cdC8vICAgICByZXR1cm4gZnVuY3Rp
b24gcmVxdWVzdENhbGwoKSB7XG5cdC8vICAgICAgICAgc2V0SW1tZWRpYXRlKGNhbGxiYWNrKTtc
blx0Ly8gICAgIH07XG5cdC8vIH1cblx0XG5cdC8vIFNhZmFyaSA2LjAgaGFzIGEgcHJvYmxlbSB3
aGVyZSB0aW1lcnMgd2lsbCBnZXQgbG9zdCB3aGlsZSB0aGUgdXNlciBpc1xuXHQvLyBzY3JvbGxp
bmcuIFRoaXMgcHJvYmxlbSBkb2VzIG5vdCBpbXBhY3QgQVNBUCBiZWNhdXNlIFNhZmFyaSA2LjAg
c3VwcG9ydHNcblx0Ly8gbXV0YXRpb24gb2JzZXJ2ZXJzLCBzbyB0aGF0IGltcGxlbWVudGF0aW9u
IGlzIHVzZWQgaW5zdGVhZC5cblx0Ly8gSG93ZXZlciwgaWYgd2UgZXZlciBlbGVjdCB0byB1c2Ug
dGltZXJzIGluIFNhZmFyaSwgdGhlIHByZXZhbGVudCB3b3JrLWFyb3VuZFxuXHQvLyBpcyB0byBh
ZGQgYSBzY3JvbGwgZXZlbnQgbGlzdGVuZXIgdGhhdCBjYWxscyBmb3IgYSBmbHVzaC5cblx0XG5c
dC8vIGBzZXRUaW1lb3V0YCBkb2VzIG5vdCBjYWxsIHRoZSBwYXNzZWQgY2FsbGJhY2sgaWYgdGhl
IGRlbGF5IGlzIGxlc3MgdGhhblxuXHQvLyBhcHByb3hpbWF0ZWx5IDcgaW4gd2ViIHdvcmtlcnMg
aW4gRmlyZWZveCA4IHRocm91Z2ggMTgsIGFuZCBzb21ldGltZXMgbm90XG5cdC8vIGV2ZW4gdGhl
bi5cblx0XG5cdGZ1bmN0aW9uIG1ha2VSZXF1ZXN0Q2FsbEZyb21UaW1lcihjYWxsYmFjaykge1xu
XHQgICAgcmV0dXJuIGZ1bmN0aW9uIHJlcXVlc3RDYWxsKCkge1xuXHQgICAgICAgIC8vIFdlIGRp
c3BhdGNoIGEgdGltZW91dCB3aXRoIGEgc3BlY2lmaWVkIGRlbGF5IG9mIDAgZm9yIGVuZ2luZXMg
dGhhdFxuXHQgICAgICAgIC8vIGNhbiByZWxpYWJseSBhY2NvbW1vZGF0ZSB0aGF0IHJlcXVlc3Qu
IFRoaXMgd2lsbCB1c3VhbGx5IGJlIHNuYXBwZWRcblx0ICAgICAgICAvLyB0byBhIDQgbWlsaXNl
Y29uZCBkZWxheSwgYnV0IG9uY2Ugd2UncmUgZmx1c2hpbmcsIHRoZXJlJ3Mgbm8gZGVsYXlcblx0
ICAgICAgICAvLyBiZXR3ZWVuIGV2ZW50cy5cblx0ICAgICAgICB2YXIgdGltZW91dEhhbmRsZSA9
IHNldFRpbWVvdXQoaGFuZGxlVGltZXIsIDApO1xuXHQgICAgICAgIC8vIEhvd2V2ZXIsIHNpbmNl
IHRoaXMgdGltZXIgZ2V0cyBmcmVxdWVudGx5IGRyb3BwZWQgaW4gRmlyZWZveFxuXHQgICAgICAg
IC8vIHdvcmtlcnMsIHdlIGVubGlzdCBhbiBpbnRlcnZhbCBoYW5kbGUgdGhhdCB3aWxsIHRyeSB0
byBmaXJlXG5cdCAgICAgICAgLy8gYW4gZXZlbnQgMjAgdGltZXMgcGVyIHNlY29uZCB1bnRpbCBp
dCBzdWNjZWVkcy5cblx0ICAgICAgICB2YXIgaW50ZXJ2YWxIYW5kbGUgPSBzZXRJbnRlcnZhbCho
YW5kbGVUaW1lciwgNTApO1xuXHRcblx0ICAgICAgICBmdW5jdGlvbiBoYW5kbGVUaW1lcigpIHtc
blx0ICAgICAgICAgICAgLy8gV2hpY2hldmVyIHRpbWVyIHN1Y2NlZWRzIHdpbGwgY2FuY2VsIGJv
dGggdGltZXJzIGFuZFxuXHQgICAgICAgICAgICAvLyBleGVjdXRlIHRoZSBjYWxsYmFjay5cblx0
ICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXRIYW5kbGUpO1xuXHQgICAgICAgICAgICBj
bGVhckludGVydmFsKGludGVydmFsSGFuZGxlKTtcblx0ICAgICAgICAgICAgY2FsbGJhY2soKTtc
blx0ICAgICAgICB9XG5cdCAgICB9O1xuXHR9XG5cdFxuXHQvLyBUaGlzIGlzIGZvciBgYXNhcC5q
c2Agb25seS5cblx0Ly8gSXRzIG5hbWUgd2lsbCBiZSBwZXJpb2RpY2FsbHkgcmFuZG9taXplZCB0
byBicmVhayBhbnkgY29kZSB0aGF0IGRlcGVuZHMgb25cblx0Ly8gaXRzIGV4aXN0ZW5jZS5cblx0
cmF3QXNhcC5tYWtlUmVxdWVzdENhbGxGcm9tVGltZXIgPSBtYWtlUmVxdWVzdENhbGxGcm9tVGlt
ZXI7XG5cdFxuXHQvLyBBU0FQIHdhcyBvcmlnaW5hbGx5IGEgbmV4dFRpY2sgc2hpbSBpbmNsdWRl
ZCBpbiBRLiBUaGlzIHdhcyBmYWN0b3JlZCBvdXRcblx0Ly8gaW50byB0aGlzIEFTQVAgcGFja2Fn
ZS4gSXQgd2FzIGxhdGVyIGFkYXB0ZWQgdG8gUlNWUCB3aGljaCBtYWRlIGZ1cnRoZXJcblx0Ly8g
YW1lbmRtZW50cy4gVGhlc2UgZGVjaXNpb25zLCBwYXJ0aWN1bGFybHkgdG8gbWFyZ2luYWxpemUg
TWVzc2FnZUNoYW5uZWwgYW5kXG5cdC8vIHRvIGNhcHR1cmUgdGhlIE11dGF0aW9uT2JzZXJ2ZXIg
aW1wbGVtZW50YXRpb24gaW4gYSBjbG9zdXJlLCB3ZXJlIGludGVncmF0ZWRcblx0Ly8gYmFjayBp
bnRvIEFTQVAgcHJvcGVyLlxuXHQvLyBodHRwczovL2dpdGh1Yi5jb20vdGlsZGVpby9yc3ZwLmpz
L2Jsb2IvY2RkZjcyMzI1NDZhOWNmODU4NTI0Yjc1Y2RlNmY5ZWRmNzI2MjBhNy9saWIvcnN2cC9h
c2FwLmpzXG5cdFxuXHQvKiBXRUJQQUNLIFZBUiBJTkpFQ1RJT04gKi99LmNhbGwoZXhwb3J0cywg
KGZ1bmN0aW9uKCkgeyByZXR1cm4gdGhpczsgfSgpKSkpXG5cbi8qKiovIH0sXG4vKiAxOTggKi9c
bi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xu
XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBc
Il9fZXNNb2R1bGVcIiwge1xuXHQgIHZhbHVlOiB0cnVlXG5cdH0pO1xuXHRleHBvcnRzLmNsZWFy
Q29tcGxldGVkID0gZXhwb3J0cy5jb21wbGV0ZUFsbCA9IGV4cG9ydHMuY29tcGxldGVUb2RvID0g
ZXhwb3J0cy5lZGl0VG9kbyA9IGV4cG9ydHMuZGVsZXRlVG9kbyA9IGV4cG9ydHMuYWRkVG9kbyA9
IHVuZGVmaW5lZDtcblx0XG5cdHZhciBfQWN0aW9uVHlwZXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9f
KDg1KTtcblx0XG5cdHZhciB0eXBlcyA9IF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKF9BY3Rpb25U
eXBlcyk7XG5cdFxuXHRmdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChvYmopIHsgaWYg
KG9iaiAmJiBvYmouX19lc01vZHVsZSkgeyByZXR1cm4gb2JqOyB9IGVsc2UgeyB2YXIgbmV3T2Jq
ID0ge307IGlmIChvYmogIT0gbnVsbCkgeyBmb3IgKHZhciBrZXkgaW4gb2JqKSB7IGlmIChPYmpl
Y3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBrZXkpKSBuZXdPYmpba2V5XSA9
IG9ialtrZXldOyB9IH0gbmV3T2JqLmRlZmF1bHQgPSBvYmo7IHJldHVybiBuZXdPYmo7IH0gfVxu
XHRcblx0dmFyIGFkZFRvZG8gPSBleHBvcnRzLmFkZFRvZG8gPSBmdW5jdGlvbiBhZGRUb2RvKHRl
eHQpIHtcblx0ICByZXR1cm4geyB0eXBlOiB0eXBlcy5BRERfVE9ETywgdGV4dDogdGV4dCB9O1xu
XHR9O1xuXHR2YXIgZGVsZXRlVG9kbyA9IGV4cG9ydHMuZGVsZXRlVG9kbyA9IGZ1bmN0aW9uIGRl
bGV0ZVRvZG8oaWQpIHtcblx0ICByZXR1cm4geyB0eXBlOiB0eXBlcy5ERUxFVEVfVE9ETywgaWQ6
IGlkIH07XG5cdH07XG5cdHZhciBlZGl0VG9kbyA9IGV4cG9ydHMuZWRpdFRvZG8gPSBmdW5jdGlv
biBlZGl0VG9kbyhpZCwgdGV4dCkge1xuXHQgIHJldHVybiB7IHR5cGU6IHR5cGVzLkVESVRfVE9E
TywgaWQ6IGlkLCB0ZXh0OiB0ZXh0IH07XG5cdH07XG5cdHZhciBjb21wbGV0ZVRvZG8gPSBleHBv
cnRzLmNvbXBsZXRlVG9kbyA9IGZ1bmN0aW9uIGNvbXBsZXRlVG9kbyhpZCkge1xuXHQgIHJldHVy
biB7IHR5cGU6IHR5cGVzLkNPTVBMRVRFX1RPRE8sIGlkOiBpZCB9O1xuXHR9O1xuXHR2YXIgY29t
cGxldGVBbGwgPSBleHBvcnRzLmNvbXBsZXRlQWxsID0gZnVuY3Rpb24gY29tcGxldGVBbGwoKSB7
XG5cdCAgcmV0dXJuIHsgdHlwZTogdHlwZXMuQ09NUExFVEVfQUxMIH07XG5cdH07XG5cdHZhciBj
bGVhckNvbXBsZXRlZCA9IGV4cG9ydHMuY2xlYXJDb21wbGV0ZWQgPSBmdW5jdGlvbiBjbGVhckNv
bXBsZXRlZCgpIHtcblx0ICByZXR1cm4geyB0eXBlOiB0eXBlcy5DTEVBUl9DT01QTEVURUQgfTtc
blx0fTtcblxuLyoqKi8gfSxcbi8qIDE5OSAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBv
cnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0T2Jq
ZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG5cdCAgdmFsdWU6
IHRydWVcblx0fSk7XG5cdFxuXHR2YXIgX2NyZWF0ZUNsYXNzID0gZnVuY3Rpb24gKCkgeyBmdW5j
dGlvbiBkZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHsgZm9yICh2YXIgaSA9IDA7IGkg
PCBwcm9wcy5sZW5ndGg7IGkrKykgeyB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldOyBkZXNjcmlw
dG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7IGRlc2NyaXB0
b3IuY29uZmlndXJhYmxlID0gdHJ1ZTsgaWYgKFwidmFsdWVcIiBpbiBkZXNjcmlwdG9yKSBkZXNj
cmlwdG9yLndyaXRhYmxlID0gdHJ1ZTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgZGVz
Y3JpcHRvci5rZXksIGRlc2NyaXB0b3IpOyB9IH0gcmV0dXJuIGZ1bmN0aW9uIChDb25zdHJ1Y3Rv
ciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHsgaWYgKHByb3RvUHJvcHMpIGRlZmluZVByb3Bl
cnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTsgaWYgKHN0YXRpY1Byb3Bz
KSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7IHJldHVybiBDb25z
dHJ1Y3RvcjsgfTsgfSgpO1xuXHRcblx0dmFyIF9GSUxURVJfVElUTEVTO1xuXHRcblx0dmFyIF9y
ZWFjdCA9IF9fd2VicGFja19yZXF1aXJlX18oMTIpO1xuXHRcblx0dmFyIF9yZWFjdDIgPSBfaW50
ZXJvcFJlcXVpcmVEZWZhdWx0KF9yZWFjdCk7XG5cdFxuXHR2YXIgX2NsYXNzbmFtZXMgPSBfX3dl
YnBhY2tfcmVxdWlyZV9fKDMxKTtcblx0XG5cdHZhciBfY2xhc3NuYW1lczIgPSBfaW50ZXJvcFJl
cXVpcmVEZWZhdWx0KF9jbGFzc25hbWVzKTtcblx0XG5cdHZhciBfVG9kb0ZpbHRlcnMgPSBfX3dl
YnBhY2tfcmVxdWlyZV9fKDg2KTtcblx0XG5cdGZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1
bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6
IG9iaiB9OyB9XG5cdFxuXHRmdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0
cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93
IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7IH0g
fVxuXHRcblx0ZnVuY3Rpb24gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4oc2VsZiwgY2FsbCkg
eyBpZiAoIXNlbGYpIHsgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVl
biBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpOyB9IHJldHVybiBj
YWxsICYmICh0eXBlb2YgY2FsbCA9PT0gXCJvYmplY3RcIiB8fCB0eXBlb2YgY2FsbCA9PT0gXCJm
dW5jdGlvblwiKSA/IGNhbGwgOiBzZWxmOyB9XG5cdFxuXHRmdW5jdGlvbiBfaW5oZXJpdHMoc3Vi
Q2xhc3MsIHN1cGVyQ2xhc3MpIHsgaWYgKHR5cGVvZiBzdXBlckNsYXNzICE9PSBcImZ1bmN0aW9u
XCIgJiYgc3VwZXJDbGFzcyAhPT0gbnVsbCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIg
ZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCBcIiArIHR5
cGVvZiBzdXBlckNsYXNzKTsgfSBzdWJDbGFzcy5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHN1
cGVyQ2xhc3MgJiYgc3VwZXJDbGFzcy5wcm90b3R5cGUsIHsgY29uc3RydWN0b3I6IHsgdmFsdWU6
IHN1YkNsYXNzLCBlbnVtZXJhYmxlOiBmYWxzZSwgd3JpdGFibGU6IHRydWUsIGNvbmZpZ3VyYWJs
ZTogdHJ1ZSB9IH0pOyBpZiAoc3VwZXJDbGFzcykgT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2Jq
ZWN0LnNldFByb3RvdHlwZU9mKHN1YkNsYXNzLCBzdXBlckNsYXNzKSA6IHN1YkNsYXNzLl9fcHJv
dG9fXyA9IHN1cGVyQ2xhc3M7IH1cblx0XG5cdGZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShvYmos
IGtleSwgdmFsdWUpIHsgaWYgKGtleSBpbiBvYmopIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9i
aiwga2V5LCB7IHZhbHVlOiB2YWx1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0
cnVlLCB3cml0YWJsZTogdHJ1ZSB9KTsgfSBlbHNlIHsgb2JqW2tleV0gPSB2YWx1ZTsgfSByZXR1
cm4gb2JqOyB9XG5cdFxuXHR2YXIgRklMVEVSX1RJVExFUyA9IChfRklMVEVSX1RJVExFUyA9IHt9
LCBfZGVmaW5lUHJvcGVydHkoX0ZJTFRFUl9USVRMRVMsIF9Ub2RvRmlsdGVycy5TSE9XX0FMTCwg
J0FsbCcpLCBfZGVmaW5lUHJvcGVydHkoX0ZJTFRFUl9USVRMRVMsIF9Ub2RvRmlsdGVycy5TSE9X
X0FDVElWRSwgJ0FjdGl2ZScpLCBfZGVmaW5lUHJvcGVydHkoX0ZJTFRFUl9USVRMRVMsIF9Ub2Rv
RmlsdGVycy5TSE9XX0NPTVBMRVRFRCwgJ0NvbXBsZXRlZCcpLCBfRklMVEVSX1RJVExFUyk7XG5c
dFxuXHR2YXIgRm9vdGVyID0gZnVuY3Rpb24gKF9Db21wb25lbnQpIHtcblx0ICBfaW5oZXJpdHMo
Rm9vdGVyLCBfQ29tcG9uZW50KTtcblx0XG5cdCAgZnVuY3Rpb24gRm9vdGVyKCkge1xuXHQgICAg
X2NsYXNzQ2FsbENoZWNrKHRoaXMsIEZvb3Rlcik7XG5cdFxuXHQgICAgcmV0dXJuIF9wb3NzaWJs
ZUNvbnN0cnVjdG9yUmV0dXJuKHRoaXMsIChGb290ZXIuX19wcm90b19fIHx8IE9iamVjdC5nZXRQ
cm90b3R5cGVPZihGb290ZXIpKS5hcHBseSh0aGlzLCBhcmd1bWVudHMpKTtcblx0ICB9XG5cdFxu
XHQgIF9jcmVhdGVDbGFzcyhGb290ZXIsIFt7XG5cdCAgICBrZXk6ICdyZW5kZXJUb2RvQ291bnQn
LFxuXHQgICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlclRvZG9Db3VudCgpIHtcblx0ICAgICAgdmFy
IGFjdGl2ZUNvdW50ID0gdGhpcy5wcm9wcy5hY3RpdmVDb3VudDtcblx0XG5cdCAgICAgIHZhciBp
dGVtV29yZCA9IGFjdGl2ZUNvdW50ID09PSAxID8gJ2l0ZW0nIDogJ2l0ZW1zJztcblx0XG5cdCAg
ICAgIHJldHVybiBfcmVhY3QyLmRlZmF1bHQuY3JlYXRlRWxlbWVudChcblx0ICAgICAgICAnc3Bh
bicsXG5cdCAgICAgICAgeyBjbGFzc05hbWU6ICd0b2RvLWNvdW50JyB9LFxuXHQgICAgICAgIF9y
ZWFjdDIuZGVmYXVsdC5jcmVhdGVFbGVtZW50KFxuXHQgICAgICAgICAgJ3N0cm9uZycsXG5cdCAg
ICAgICAgICBudWxsLFxuXHQgICAgICAgICAgYWN0aXZlQ291bnQgfHwgJ05vJ1xuXHQgICAgICAg
ICksXG5cdCAgICAgICAgJyAnLFxuXHQgICAgICAgIGl0ZW1Xb3JkLFxuXHQgICAgICAgICcgbGVm
dCdcblx0ICAgICAgKTtcblx0ICAgIH1cblx0ICB9LCB7XG5cdCAgICBrZXk6ICdyZW5kZXJGaWx0
ZXJMaW5rJyxcblx0ICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXJGaWx0ZXJMaW5rKGZpbHRlcikg
e1xuXHQgICAgICB2YXIgdGl0bGUgPSBGSUxURVJfVElUTEVTW2ZpbHRlcl07XG5cdCAgICAgIHZh
ciBfcHJvcHMgPSB0aGlzLnByb3BzO1xuXHQgICAgICB2YXIgc2VsZWN0ZWRGaWx0ZXIgPSBfcHJv
cHMuZmlsdGVyO1xuXHQgICAgICB2YXIgb25TaG93ID0gX3Byb3BzLm9uU2hvdztcblx0XG5cdFxu
XHQgICAgICByZXR1cm4gX3JlYWN0Mi5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXG5cdCAgICAgICAg
J2EnLFxuXHQgICAgICAgIHsgY2xhc3NOYW1lOiAoMCwgX2NsYXNzbmFtZXMyLmRlZmF1bHQpKHsg
c2VsZWN0ZWQ6IGZpbHRlciA9PT0gc2VsZWN0ZWRGaWx0ZXIgfSksXG5cdCAgICAgICAgICBzdHls
ZTogeyBjdXJzb3I6ICdwb2ludGVyJyB9LFxuXHQgICAgICAgICAgb25DbGljazogZnVuY3Rpb24g
b25DbGljaygpIHtcblx0ICAgICAgICAgICAgcmV0dXJuIG9uU2hvdyhmaWx0ZXIpO1xuXHQgICAg
ICAgICAgfSB9LFxuXHQgICAgICAgIHRpdGxlXG5cdCAgICAgICk7XG5cdCAgICB9XG5cdCAgfSwg
e1xuXHQgICAga2V5OiAncmVuZGVyQ2xlYXJCdXR0b24nLFxuXHQgICAgdmFsdWU6IGZ1bmN0aW9u
IHJlbmRlckNsZWFyQnV0dG9uKCkge1xuXHQgICAgICB2YXIgX3Byb3BzMiA9IHRoaXMucHJvcHM7
XG5cdCAgICAgIHZhciBjb21wbGV0ZWRDb3VudCA9IF9wcm9wczIuY29tcGxldGVkQ291bnQ7XG5c
dCAgICAgIHZhciBvbkNsZWFyQ29tcGxldGVkID0gX3Byb3BzMi5vbkNsZWFyQ29tcGxldGVkO1xu
XHRcblx0ICAgICAgaWYgKGNvbXBsZXRlZENvdW50ID4gMCkge1xuXHQgICAgICAgIHJldHVybiBf
cmVhY3QyLmRlZmF1bHQuY3JlYXRlRWxlbWVudChcblx0ICAgICAgICAgICdidXR0b24nLFxuXHQg
ICAgICAgICAgeyBjbGFzc05hbWU6ICdjbGVhci1jb21wbGV0ZWQnLFxuXHQgICAgICAgICAgICBv
bkNsaWNrOiBvbkNsZWFyQ29tcGxldGVkIH0sXG5cdCAgICAgICAgICAnQ2xlYXIgY29tcGxldGVk
J1xuXHQgICAgICAgICk7XG5cdCAgICAgIH1cblx0ICAgIH1cblx0ICB9LCB7XG5cdCAgICBrZXk6
ICdyZW5kZXInLFxuXHQgICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlcigpIHtcblx0ICAgICAgdmFy
IF90aGlzMiA9IHRoaXM7XG5cdFxuXHQgICAgICByZXR1cm4gX3JlYWN0Mi5kZWZhdWx0LmNyZWF0
ZUVsZW1lbnQoXG5cdCAgICAgICAgJ2Zvb3RlcicsXG5cdCAgICAgICAgeyBjbGFzc05hbWU6ICdm
b290ZXInIH0sXG5cdCAgICAgICAgdGhpcy5yZW5kZXJUb2RvQ291bnQoKSxcblx0ICAgICAgICBf
cmVhY3QyLmRlZmF1bHQuY3JlYXRlRWxlbWVudChcblx0ICAgICAgICAgICd1bCcsXG5cdCAgICAg
ICAgICB7IGNsYXNzTmFtZTogJ2ZpbHRlcnMnIH0sXG5cdCAgICAgICAgICBbX1RvZG9GaWx0ZXJz
LlNIT1dfQUxMLCBfVG9kb0ZpbHRlcnMuU0hPV19BQ1RJVkUsIF9Ub2RvRmlsdGVycy5TSE9XX0NP
TVBMRVRFRF0ubWFwKGZ1bmN0aW9uIChmaWx0ZXIpIHtcblx0ICAgICAgICAgICAgcmV0dXJuIF9y
ZWFjdDIuZGVmYXVsdC5jcmVhdGVFbGVtZW50KFxuXHQgICAgICAgICAgICAgICdsaScsXG5cdCAg
ICAgICAgICAgICAgeyBrZXk6IGZpbHRlciB9LFxuXHQgICAgICAgICAgICAgIF90aGlzMi5yZW5k
ZXJGaWx0ZXJMaW5rKGZpbHRlcilcblx0ICAgICAgICAgICAgKTtcblx0ICAgICAgICAgIH0pXG5c
dCAgICAgICAgKSxcblx0ICAgICAgICB0aGlzLnJlbmRlckNsZWFyQnV0dG9uKClcblx0ICAgICAg
KTtcblx0ICAgIH1cblx0ICB9XSk7XG5cdFxuXHQgIHJldHVybiBGb290ZXI7XG5cdH0oX3JlYWN0
LkNvbXBvbmVudCk7XG5cdFxuXHRGb290ZXIucHJvcFR5cGVzID0ge1xuXHQgIGNvbXBsZXRlZENv
dW50OiBfcmVhY3QuUHJvcFR5cGVzLm51bWJlci5pc1JlcXVpcmVkLFxuXHQgIGFjdGl2ZUNvdW50
OiBfcmVhY3QuUHJvcFR5cGVzLm51bWJlci5pc1JlcXVpcmVkLFxuXHQgIGZpbHRlcjogX3JlYWN0
LlByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcblx0ICBvbkNsZWFyQ29tcGxldGVkOiBfcmVh
Y3QuUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcblx0ICBvblNob3c6IF9yZWFjdC5Qcm9wVHlw
ZXMuZnVuYy5pc1JlcXVpcmVkXG5cdH07XG5cdGV4cG9ydHMuZGVmYXVsdCA9IEZvb3Rlcjtcblxu
LyoqKi8gfSxcbi8qIDIwMCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dl
YnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0T2JqZWN0LmRlZmlu
ZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG5cdCAgdmFsdWU6IHRydWVcblx0
fSk7XG5cdFxuXHR2YXIgX2NyZWF0ZUNsYXNzID0gZnVuY3Rpb24gKCkgeyBmdW5jdGlvbiBkZWZp
bmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5s
ZW5ndGg7IGkrKykgeyB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldOyBkZXNjcmlwdG9yLmVudW1l
cmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7IGRlc2NyaXB0b3IuY29uZmln
dXJhYmxlID0gdHJ1ZTsgaWYgKFwidmFsdWVcIiBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndy
aXRhYmxlID0gdHJ1ZTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgZGVzY3JpcHRvci5r
ZXksIGRlc2NyaXB0b3IpOyB9IH0gcmV0dXJuIGZ1bmN0aW9uIChDb25zdHJ1Y3RvciwgcHJvdG9Q
cm9wcywgc3RhdGljUHJvcHMpIHsgaWYgKHByb3RvUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29u
c3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTsgaWYgKHN0YXRpY1Byb3BzKSBkZWZpbmVQ
cm9wZXJ0aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7IHJldHVybiBDb25zdHJ1Y3Rvcjsg
fTsgfSgpO1xuXHRcblx0dmFyIF9yZWFjdCA9IF9fd2VicGFja19yZXF1aXJlX18oMTIpO1xuXHRc
blx0dmFyIF9yZWFjdDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9yZWFjdCk7XG5cdFxuXHR2
YXIgX1RvZG9UZXh0SW5wdXQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDg0KTtcblx0XG5cdHZhciBf
VG9kb1RleHRJbnB1dDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9Ub2RvVGV4dElucHV0KTtc
blx0XG5cdGZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmog
JiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cdFxuXHRmdW5j
dGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3Rh
bmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5u
b3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7IH0gfVxuXHRcblx0ZnVuY3Rpb24gX3Bv
c3NpYmxlQ29uc3RydWN0b3JSZXR1cm4oc2VsZiwgY2FsbCkgeyBpZiAoIXNlbGYpIHsgdGhyb3cg
bmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVy
KCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpOyB9IHJldHVybiBjYWxsICYmICh0eXBlb2YgY2FsbCA9
PT0gXCJvYmplY3RcIiB8fCB0eXBlb2YgY2FsbCA9PT0gXCJmdW5jdGlvblwiKSA/IGNhbGwgOiBz
ZWxmOyB9XG5cdFxuXHRmdW5jdGlvbiBfaW5oZXJpdHMoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIHsg
aWYgKHR5cGVvZiBzdXBlckNsYXNzICE9PSBcImZ1bmN0aW9uXCIgJiYgc3VwZXJDbGFzcyAhPT0g
bnVsbCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhl
ciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCBcIiArIHR5cGVvZiBzdXBlckNsYXNzKTsgfSBz
dWJDbGFzcy5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHN1cGVyQ2xhc3MgJiYgc3VwZXJDbGFz
cy5wcm90b3R5cGUsIHsgY29uc3RydWN0b3I6IHsgdmFsdWU6IHN1YkNsYXNzLCBlbnVtZXJhYmxl
OiBmYWxzZSwgd3JpdGFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9IH0pOyBpZiAoc3Vw
ZXJDbGFzcykgT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LnNldFByb3RvdHlwZU9mKHN1
YkNsYXNzLCBzdXBlckNsYXNzKSA6IHN1YkNsYXNzLl9fcHJvdG9fXyA9IHN1cGVyQ2xhc3M7IH1c
blx0XG5cdHZhciBIZWFkZXIgPSBmdW5jdGlvbiAoX0NvbXBvbmVudCkge1xuXHQgIF9pbmhlcml0
cyhIZWFkZXIsIF9Db21wb25lbnQpO1xuXHRcblx0ICBmdW5jdGlvbiBIZWFkZXIoKSB7XG5cdCAg
ICB2YXIgX3JlZjtcblx0XG5cdCAgICB2YXIgX3RlbXAsIF90aGlzLCBfcmV0O1xuXHRcblx0ICAg
IF9jbGFzc0NhbGxDaGVjayh0aGlzLCBIZWFkZXIpO1xuXHRcblx0ICAgIGZvciAodmFyIF9sZW4g
PSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwg
X2xlbjsgX2tleSsrKSB7XG5cdCAgICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG5c
dCAgICB9XG5cdFxuXHQgICAgcmV0dXJuIF9yZXQgPSAoX3RlbXAgPSAoX3RoaXMgPSBfcG9zc2li
bGVDb25zdHJ1Y3RvclJldHVybih0aGlzLCAoX3JlZiA9IEhlYWRlci5fX3Byb3RvX18gfHwgT2Jq
ZWN0LmdldFByb3RvdHlwZU9mKEhlYWRlcikpLmNhbGwuYXBwbHkoX3JlZiwgW3RoaXNdLmNvbmNh
dChhcmdzKSkpLCBfdGhpcyksIF90aGlzLmhhbmRsZVNhdmUgPSBmdW5jdGlvbiAodGV4dCkge1xu
XHQgICAgICBpZiAodGV4dC5sZW5ndGggIT09IDApIHtcblx0ICAgICAgICBfdGhpcy5wcm9wcy5h
ZGRUb2RvKHRleHQpO1xuXHQgICAgICB9XG5cdCAgICB9LCBfdGVtcCksIF9wb3NzaWJsZUNvbnN0
cnVjdG9yUmV0dXJuKF90aGlzLCBfcmV0KTtcblx0ICB9XG5cdFxuXHQgIF9jcmVhdGVDbGFzcyhI
ZWFkZXIsIFt7XG5cdCAgICBrZXk6ICdyZW5kZXInLFxuXHQgICAgdmFsdWU6IGZ1bmN0aW9uIHJl
bmRlcigpIHtcblx0ICAgICAgcmV0dXJuIF9yZWFjdDIuZGVmYXVsdC5jcmVhdGVFbGVtZW50KFxu
XHQgICAgICAgICdoZWFkZXInLFxuXHQgICAgICAgIHsgY2xhc3NOYW1lOiAnaGVhZGVyJyB9LFxu
XHQgICAgICAgIF9yZWFjdDIuZGVmYXVsdC5jcmVhdGVFbGVtZW50KFxuXHQgICAgICAgICAgJ2gx
Jyxcblx0ICAgICAgICAgIG51bGwsXG5cdCAgICAgICAgICAndG9kb3MnXG5cdCAgICAgICAgKSxc
blx0ICAgICAgICBfcmVhY3QyLmRlZmF1bHQuY3JlYXRlRWxlbWVudChfVG9kb1RleHRJbnB1dDIu
ZGVmYXVsdCwgeyBuZXdUb2RvOiB0cnVlLFxuXHQgICAgICAgICAgb25TYXZlOiB0aGlzLmhhbmRs
ZVNhdmUsXG5cdCAgICAgICAgICBwbGFjZWhvbGRlcjogJ1doYXQgbmVlZHMgdG8gYmUgZG9uZT8n
IH0pXG5cdCAgICAgICk7XG5cdCAgICB9XG5cdCAgfV0pO1xuXHRcblx0ICByZXR1cm4gSGVhZGVy
O1xuXHR9KF9yZWFjdC5Db21wb25lbnQpO1xuXHRcblx0SGVhZGVyLnByb3BUeXBlcyA9IHtcblx0
ICBhZGRUb2RvOiBfcmVhY3QuUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZFxuXHR9O1xuXHRleHBv
cnRzLmRlZmF1bHQgPSBIZWFkZXI7XG5cbi8qKiovIH0sXG4vKiAyMDEgKi9cbi8qKiovIGZ1bmN0
aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdCd1c2Ugc3Ry
aWN0Jztcblx0XG5cdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVc
Iiwge1xuXHQgIHZhbHVlOiB0cnVlXG5cdH0pO1xuXHRcblx0dmFyIF9leHRlbmRzID0gT2JqZWN0
LmFzc2lnbiB8fCBmdW5jdGlvbiAodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1l
bnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07IGZvciAodmFyIGtl
eSBpbiBzb3VyY2UpIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChz
b3VyY2UsIGtleSkpIHsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IH0gcmV0dXJuIHRh
cmdldDsgfTtcblx0XG5cdHZhciBfY3JlYXRlQ2xhc3MgPSBmdW5jdGlvbiAoKSB7IGZ1bmN0aW9u
IGRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBwcm9wcykgeyBmb3IgKHZhciBpID0gMDsgaSA8IHBy
b3BzLmxlbmd0aDsgaSsrKSB7IHZhciBkZXNjcmlwdG9yID0gcHJvcHNbaV07IGRlc2NyaXB0b3Iu
ZW51bWVyYWJsZSA9IGRlc2NyaXB0b3IuZW51bWVyYWJsZSB8fCBmYWxzZTsgZGVzY3JpcHRvci5j
b25maWd1cmFibGUgPSB0cnVlOyBpZiAoXCJ2YWx1ZVwiIGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0
b3Iud3JpdGFibGUgPSB0cnVlOyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBkZXNjcmlw
dG9yLmtleSwgZGVzY3JpcHRvcik7IH0gfSByZXR1cm4gZnVuY3Rpb24gKENvbnN0cnVjdG9yLCBw
cm90b1Byb3BzLCBzdGF0aWNQcm9wcykgeyBpZiAocHJvdG9Qcm9wcykgZGVmaW5lUHJvcGVydGll
cyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpOyBpZiAoc3RhdGljUHJvcHMpIGRl
ZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTsgcmV0dXJuIENvbnN0cnVj
dG9yOyB9OyB9KCk7XG5cdFxuXHR2YXIgX1RPRE9fRklMVEVSUztcblx0XG5cdHZhciBfcmVhY3Qg
PSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEyKTtcblx0XG5cdHZhciBfcmVhY3QyID0gX2ludGVyb3BS
ZXF1aXJlRGVmYXVsdChfcmVhY3QpO1xuXHRcblx0dmFyIF9Ub2RvSXRlbSA9IF9fd2VicGFja19y
ZXF1aXJlX18oMjAyKTtcblx0XG5cdHZhciBfVG9kb0l0ZW0yID0gX2ludGVyb3BSZXF1aXJlRGVm
YXVsdChfVG9kb0l0ZW0pO1xuXHRcblx0dmFyIF9Gb290ZXIgPSBfX3dlYnBhY2tfcmVxdWlyZV9f
KDE5OSk7XG5cdFxuXHR2YXIgX0Zvb3RlcjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9Gb290
ZXIpO1xuXHRcblx0dmFyIF9Ub2RvRmlsdGVycyA9IF9fd2VicGFja19yZXF1aXJlX18oODYpO1xu
XHRcblx0ZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAm
JiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblx0XG5cdGZ1bmN0
aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFu
Y2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5v
dCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKTsgfSB9XG5cdFxuXHRmdW5jdGlvbiBfcG9z
c2libGVDb25zdHJ1Y3RvclJldHVybihzZWxmLCBjYWxsKSB7IGlmICghc2VsZikgeyB0aHJvdyBu
ZXcgUmVmZXJlbmNlRXJyb3IoXCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIo
KSBoYXNuJ3QgYmVlbiBjYWxsZWRcIik7IH0gcmV0dXJuIGNhbGwgJiYgKHR5cGVvZiBjYWxsID09
PSBcIm9iamVjdFwiIHx8IHR5cGVvZiBjYWxsID09PSBcImZ1bmN0aW9uXCIpID8gY2FsbCA6IHNl
bGY7IH1cblx0XG5cdGZ1bmN0aW9uIF9pbmhlcml0cyhzdWJDbGFzcywgc3VwZXJDbGFzcykgeyBp
ZiAodHlwZW9mIHN1cGVyQ2xhc3MgIT09IFwiZnVuY3Rpb25cIiAmJiBzdXBlckNsYXNzICE9PSBu
dWxsKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVy
IGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90IFwiICsgdHlwZW9mIHN1cGVyQ2xhc3MpOyB9IHN1
YkNsYXNzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoc3VwZXJDbGFzcyAmJiBzdXBlckNsYXNz
LnByb3RvdHlwZSwgeyBjb25zdHJ1Y3RvcjogeyB2YWx1ZTogc3ViQ2xhc3MsIGVudW1lcmFibGU6
IGZhbHNlLCB3cml0YWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlIH0gfSk7IGlmIChzdXBl
ckNsYXNzKSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3Quc2V0UHJvdG90eXBlT2Yoc3Vi
Q2xhc3MsIHN1cGVyQ2xhc3MpIDogc3ViQ2xhc3MuX19wcm90b19fID0gc3VwZXJDbGFzczsgfVxu
XHRcblx0ZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KG9iaiwga2V5LCB2YWx1ZSkgeyBpZiAoa2V5
IGluIG9iaikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHsgdmFsdWU6IHZhbHVl
LCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlIH0p
OyB9IGVsc2UgeyBvYmpba2V5XSA9IHZhbHVlOyB9IHJldHVybiBvYmo7IH1cblx0XG5cdHZhciBU
T0RPX0ZJTFRFUlMgPSAoX1RPRE9fRklMVEVSUyA9IHt9LCBfZGVmaW5lUHJvcGVydHkoX1RPRE9f
RklMVEVSUywgX1RvZG9GaWx0ZXJzLlNIT1dfQUxMLCBmdW5jdGlvbiAoKSB7XG5cdCAgcmV0dXJu
IHRydWU7XG5cdH0pLCBfZGVmaW5lUHJvcGVydHkoX1RPRE9fRklMVEVSUywgX1RvZG9GaWx0ZXJz
LlNIT1dfQUNUSVZFLCBmdW5jdGlvbiAodG9kbykge1xuXHQgIHJldHVybiAhdG9kby5jb21wbGV0
ZWQ7XG5cdH0pLCBfZGVmaW5lUHJvcGVydHkoX1RPRE9fRklMVEVSUywgX1RvZG9GaWx0ZXJzLlNI
T1dfQ09NUExFVEVELCBmdW5jdGlvbiAodG9kbykge1xuXHQgIHJldHVybiB0b2RvLmNvbXBsZXRl
ZDtcblx0fSksIF9UT0RPX0ZJTFRFUlMpO1xuXHRcblx0dmFyIE1haW5TZWN0aW9uID0gZnVuY3Rp
b24gKF9Db21wb25lbnQpIHtcblx0ICBfaW5oZXJpdHMoTWFpblNlY3Rpb24sIF9Db21wb25lbnQp
O1xuXHRcblx0ICBmdW5jdGlvbiBNYWluU2VjdGlvbigpIHtcblx0ICAgIHZhciBfcmVmO1xuXHRc
blx0ICAgIHZhciBfdGVtcCwgX3RoaXMsIF9yZXQ7XG5cdFxuXHQgICAgX2NsYXNzQ2FsbENoZWNr
KHRoaXMsIE1haW5TZWN0aW9uKTtcblx0XG5cdCAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRz
Lmxlbmd0aCwgYXJncyA9IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkr
Kykge1xuXHQgICAgICBhcmdzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuXHQgICAgfVxuXHRc
blx0ICAgIHJldHVybiBfcmV0ID0gKF90ZW1wID0gKF90aGlzID0gX3Bvc3NpYmxlQ29uc3RydWN0
b3JSZXR1cm4odGhpcywgKF9yZWYgPSBNYWluU2VjdGlvbi5fX3Byb3RvX18gfHwgT2JqZWN0Lmdl
dFByb3RvdHlwZU9mKE1haW5TZWN0aW9uKSkuY2FsbC5hcHBseShfcmVmLCBbdGhpc10uY29uY2F0
KGFyZ3MpKSksIF90aGlzKSwgX3RoaXMuc3RhdGUgPSB7IGZpbHRlcjogX1RvZG9GaWx0ZXJzLlNI
T1dfQUxMIH0sIF90aGlzLmhhbmRsZUNsZWFyQ29tcGxldGVkID0gZnVuY3Rpb24gKCkge1xuXHQg
ICAgICBfdGhpcy5wcm9wcy5hY3Rpb25zLmNsZWFyQ29tcGxldGVkKCk7XG5cdCAgICB9LCBfdGhp
cy5oYW5kbGVTaG93ID0gZnVuY3Rpb24gKGZpbHRlcikge1xuXHQgICAgICBfdGhpcy5zZXRTdGF0
ZSh7IGZpbHRlcjogZmlsdGVyIH0pO1xuXHQgICAgfSwgX3RlbXApLCBfcG9zc2libGVDb25zdHJ1
Y3RvclJldHVybihfdGhpcywgX3JldCk7XG5cdCAgfVxuXHRcblx0ICBfY3JlYXRlQ2xhc3MoTWFp
blNlY3Rpb24sIFt7XG5cdCAgICBrZXk6ICdyZW5kZXJUb2dnbGVBbGwnLFxuXHQgICAgdmFsdWU6
IGZ1bmN0aW9uIHJlbmRlclRvZ2dsZUFsbChjb21wbGV0ZWRDb3VudCkge1xuXHQgICAgICB2YXIg
X3Byb3BzID0gdGhpcy5wcm9wcztcblx0ICAgICAgdmFyIHRvZG9zID0gX3Byb3BzLnRvZG9zO1xu
XHQgICAgICB2YXIgYWN0aW9ucyA9IF9wcm9wcy5hY3Rpb25zO1xuXHRcblx0ICAgICAgaWYgKHRv
ZG9zLmxlbmd0aCA+IDApIHtcblx0ICAgICAgICByZXR1cm4gX3JlYWN0Mi5kZWZhdWx0LmNyZWF0
ZUVsZW1lbnQoJ2lucHV0JywgeyBjbGFzc05hbWU6ICd0b2dnbGUtYWxsJyxcblx0ICAgICAgICAg
IHR5cGU6ICdjaGVja2JveCcsXG5cdCAgICAgICAgICBjaGVja2VkOiBjb21wbGV0ZWRDb3VudCA9
PT0gdG9kb3MubGVuZ3RoLFxuXHQgICAgICAgICAgb25DaGFuZ2U6IGFjdGlvbnMuY29tcGxldGVB
bGwgfSk7XG5cdCAgICAgIH1cblx0ICAgIH1cblx0ICB9LCB7XG5cdCAgICBrZXk6ICdyZW5kZXJG
b290ZXInLFxuXHQgICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlckZvb3Rlcihjb21wbGV0ZWRDb3Vu
dCkge1xuXHQgICAgICB2YXIgdG9kb3MgPSB0aGlzLnByb3BzLnRvZG9zO1xuXHQgICAgICB2YXIg
ZmlsdGVyID0gdGhpcy5zdGF0ZS5maWx0ZXI7XG5cdFxuXHQgICAgICB2YXIgYWN0aXZlQ291bnQg
PSB0b2Rvcy5sZW5ndGggLSBjb21wbGV0ZWRDb3VudDtcblx0XG5cdCAgICAgIGlmICh0b2Rvcy5s
ZW5ndGgpIHtcblx0ICAgICAgICByZXR1cm4gX3JlYWN0Mi5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQo
X0Zvb3RlcjIuZGVmYXVsdCwgeyBjb21wbGV0ZWRDb3VudDogY29tcGxldGVkQ291bnQsXG5cdCAg
ICAgICAgICBhY3RpdmVDb3VudDogYWN0aXZlQ291bnQsXG5cdCAgICAgICAgICBmaWx0ZXI6IGZp
bHRlcixcblx0ICAgICAgICAgIG9uQ2xlYXJDb21wbGV0ZWQ6IHRoaXMuaGFuZGxlQ2xlYXJDb21w
bGV0ZWQuYmluZCh0aGlzKSxcblx0ICAgICAgICAgIG9uU2hvdzogdGhpcy5oYW5kbGVTaG93LmJp
bmQodGhpcykgfSk7XG5cdCAgICAgIH1cblx0ICAgIH1cblx0ICB9LCB7XG5cdCAgICBrZXk6ICdy
ZW5kZXInLFxuXHQgICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlcigpIHtcblx0ICAgICAgdmFyIF9w
cm9wczIgPSB0aGlzLnByb3BzO1xuXHQgICAgICB2YXIgdG9kb3MgPSBfcHJvcHMyLnRvZG9zO1xu
XHQgICAgICB2YXIgYWN0aW9ucyA9IF9wcm9wczIuYWN0aW9ucztcblx0ICAgICAgdmFyIGZpbHRl
ciA9IHRoaXMuc3RhdGUuZmlsdGVyO1xuXHRcblx0XG5cdCAgICAgIHZhciBmaWx0ZXJlZFRvZG9z
ID0gdG9kb3MuZmlsdGVyKFRPRE9fRklMVEVSU1tmaWx0ZXJdKTtcblx0ICAgICAgdmFyIGNvbXBs
ZXRlZENvdW50ID0gdG9kb3MucmVkdWNlKGZ1bmN0aW9uIChjb3VudCwgdG9kbykge1xuXHQgICAg
ICAgIHJldHVybiB0b2RvLmNvbXBsZXRlZCA/IGNvdW50ICsgMSA6IGNvdW50O1xuXHQgICAgICB9
LCAwKTtcblx0XG5cdCAgICAgIHJldHVybiBfcmVhY3QyLmRlZmF1bHQuY3JlYXRlRWxlbWVudChc
blx0ICAgICAgICAnc2VjdGlvbicsXG5cdCAgICAgICAgeyBjbGFzc05hbWU6ICdtYWluJyB9LFxu
XHQgICAgICAgIHRoaXMucmVuZGVyVG9nZ2xlQWxsKGNvbXBsZXRlZENvdW50KSxcblx0ICAgICAg
ICBfcmVhY3QyLmRlZmF1bHQuY3JlYXRlRWxlbWVudChcblx0ICAgICAgICAgICd1bCcsXG5cdCAg
ICAgICAgICB7IGNsYXNzTmFtZTogJ3RvZG8tbGlzdCcgfSxcblx0ICAgICAgICAgIGZpbHRlcmVk
VG9kb3MubWFwKGZ1bmN0aW9uICh0b2RvKSB7XG5cdCAgICAgICAgICAgIHJldHVybiBfcmVhY3Qy
LmRlZmF1bHQuY3JlYXRlRWxlbWVudChfVG9kb0l0ZW0yLmRlZmF1bHQsIF9leHRlbmRzKHsga2V5
OiB0b2RvLmlkLCB0b2RvOiB0b2RvIH0sIGFjdGlvbnMpKTtcblx0ICAgICAgICAgIH0pXG5cdCAg
ICAgICAgKSxcblx0ICAgICAgICB0aGlzLnJlbmRlckZvb3Rlcihjb21wbGV0ZWRDb3VudClcblx0
ICAgICAgKTtcblx0ICAgIH1cblx0ICB9XSk7XG5cdFxuXHQgIHJldHVybiBNYWluU2VjdGlvbjtc
blx0fShfcmVhY3QuQ29tcG9uZW50KTtcblx0XG5cdE1haW5TZWN0aW9uLnByb3BUeXBlcyA9IHtc
blx0ICB0b2RvczogX3JlYWN0LlByb3BUeXBlcy5hcnJheS5pc1JlcXVpcmVkLFxuXHQgIGFjdGlv
bnM6IF9yZWFjdC5Qcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWRcblx0fTtcblx0ZXhwb3J0cy5k
ZWZhdWx0ID0gTWFpblNlY3Rpb247XG5cbi8qKiovIH0sXG4vKiAyMDIgKi9cbi8qKiovIGZ1bmN0
aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdCd1c2Ugc3Ry
aWN0Jztcblx0XG5cdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVc
Iiwge1xuXHQgIHZhbHVlOiB0cnVlXG5cdH0pO1xuXHRcblx0dmFyIF9jcmVhdGVDbGFzcyA9IGZ1
bmN0aW9uICgpIHsgZnVuY3Rpb24gZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7IGZv
ciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHsgdmFyIGRlc2NyaXB0b3IgPSBw
cm9wc1tpXTsgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8
IGZhbHNlOyBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7IGlmIChcInZhbHVlXCIgaW4g
ZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7IE9iamVjdC5kZWZpbmVQcm9w
ZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTsgfSB9IHJldHVybiBmdW5j
dGlvbiAoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7IGlmIChwcm90b1By
b3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7
IGlmIChzdGF0aWNQcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJv
cHMpOyByZXR1cm4gQ29uc3RydWN0b3I7IH07IH0oKTtcblx0XG5cdHZhciBfcmVhY3QgPSBfX3dl
YnBhY2tfcmVxdWlyZV9fKDEyKTtcblx0XG5cdHZhciBfcmVhY3QyID0gX2ludGVyb3BSZXF1aXJl
RGVmYXVsdChfcmVhY3QpO1xuXHRcblx0dmFyIF9jbGFzc25hbWVzID0gX193ZWJwYWNrX3JlcXVp
cmVfXygzMSk7XG5cdFxuXHR2YXIgX2NsYXNzbmFtZXMyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVs
dChfY2xhc3NuYW1lcyk7XG5cdFxuXHR2YXIgX1RvZG9UZXh0SW5wdXQgPSBfX3dlYnBhY2tfcmVx
dWlyZV9fKDg0KTtcblx0XG5cdHZhciBfVG9kb1RleHRJbnB1dDIgPSBfaW50ZXJvcFJlcXVpcmVE
ZWZhdWx0KF9Ub2RvVGV4dElucHV0KTtcblx0XG5cdGZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURl
ZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1
bHQ6IG9iaiB9OyB9XG5cdFxuXHRmdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENv
bnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRo
cm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7
IH0gfVxuXHRcblx0ZnVuY3Rpb24gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4oc2VsZiwgY2Fs
bCkgeyBpZiAoIXNlbGYpIHsgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3Qg
YmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpOyB9IHJldHVy
biBjYWxsICYmICh0eXBlb2YgY2FsbCA9PT0gXCJvYmplY3RcIiB8fCB0eXBlb2YgY2FsbCA9PT0g
XCJmdW5jdGlvblwiKSA/IGNhbGwgOiBzZWxmOyB9XG5cdFxuXHRmdW5jdGlvbiBfaW5oZXJpdHMo
c3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIHsgaWYgKHR5cGVvZiBzdXBlckNsYXNzICE9PSBcImZ1bmN0
aW9uXCIgJiYgc3VwZXJDbGFzcyAhPT0gbnVsbCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3Vw
ZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCBcIiAr
IHR5cGVvZiBzdXBlckNsYXNzKTsgfSBzdWJDbGFzcy5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRl
KHN1cGVyQ2xhc3MgJiYgc3VwZXJDbGFzcy5wcm90b3R5cGUsIHsgY29uc3RydWN0b3I6IHsgdmFs
dWU6IHN1YkNsYXNzLCBlbnVtZXJhYmxlOiBmYWxzZSwgd3JpdGFibGU6IHRydWUsIGNvbmZpZ3Vy
YWJsZTogdHJ1ZSB9IH0pOyBpZiAoc3VwZXJDbGFzcykgT2JqZWN0LnNldFByb3RvdHlwZU9mID8g
T2JqZWN0LnNldFByb3RvdHlwZU9mKHN1YkNsYXNzLCBzdXBlckNsYXNzKSA6IHN1YkNsYXNzLl9f
cHJvdG9fXyA9IHN1cGVyQ2xhc3M7IH1cblx0XG5cdHZhciBUb2RvSXRlbSA9IGZ1bmN0aW9uIChf
Q29tcG9uZW50KSB7XG5cdCAgX2luaGVyaXRzKFRvZG9JdGVtLCBfQ29tcG9uZW50KTtcblx0XG5c
dCAgZnVuY3Rpb24gVG9kb0l0ZW0oKSB7XG5cdCAgICB2YXIgX3JlZjtcblx0XG5cdCAgICB2YXIg
X3RlbXAsIF90aGlzLCBfcmV0O1xuXHRcblx0ICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBUb2Rv
SXRlbSk7XG5cdFxuXHQgICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3Mg
PSBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcblx0ICAgICAg
YXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcblx0ICAgIH1cblx0XG5cdCAgICByZXR1cm4g
X3JldCA9IChfdGVtcCA9IChfdGhpcyA9IF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHRoaXMs
IChfcmVmID0gVG9kb0l0ZW0uX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZihUb2Rv
SXRlbSkpLmNhbGwuYXBwbHkoX3JlZiwgW3RoaXNdLmNvbmNhdChhcmdzKSkpLCBfdGhpcyksIF90
aGlzLnN0YXRlID0ge1xuXHQgICAgICBlZGl0aW5nOiBmYWxzZVxuXHQgICAgfSwgX3RoaXMuaGFu
ZGxlRG91YmxlQ2xpY2sgPSBmdW5jdGlvbiAoKSB7XG5cdCAgICAgIF90aGlzLnNldFN0YXRlKHsg
ZWRpdGluZzogdHJ1ZSB9KTtcblx0ICAgIH0sIF90aGlzLmhhbmRsZVNhdmUgPSBmdW5jdGlvbiAo
aWQsIHRleHQpIHtcblx0ICAgICAgaWYgKHRleHQubGVuZ3RoID09PSAwKSB7XG5cdCAgICAgICAg
X3RoaXMucHJvcHMuZGVsZXRlVG9kbyhpZCk7XG5cdCAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAg
X3RoaXMucHJvcHMuZWRpdFRvZG8oaWQsIHRleHQpO1xuXHQgICAgICB9XG5cdCAgICAgIF90aGlz
LnNldFN0YXRlKHsgZWRpdGluZzogZmFsc2UgfSk7XG5cdCAgICB9LCBfdGVtcCksIF9wb3NzaWJs
ZUNvbnN0cnVjdG9yUmV0dXJuKF90aGlzLCBfcmV0KTtcblx0ICB9XG5cdFxuXHQgIF9jcmVhdGVD
bGFzcyhUb2RvSXRlbSwgW3tcblx0ICAgIGtleTogJ3JlbmRlcicsXG5cdCAgICB2YWx1ZTogZnVu
Y3Rpb24gcmVuZGVyKCkge1xuXHQgICAgICB2YXIgX3RoaXMyID0gdGhpcztcblx0XG5cdCAgICAg
IHZhciBfcHJvcHMgPSB0aGlzLnByb3BzO1xuXHQgICAgICB2YXIgdG9kbyA9IF9wcm9wcy50b2Rv
O1xuXHQgICAgICB2YXIgY29tcGxldGVUb2RvID0gX3Byb3BzLmNvbXBsZXRlVG9kbztcblx0ICAg
ICAgdmFyIGRlbGV0ZVRvZG8gPSBfcHJvcHMuZGVsZXRlVG9kbztcblx0XG5cdFxuXHQgICAgICB2
YXIgZWxlbWVudCA9IHZvaWQgMDtcblx0ICAgICAgaWYgKHRoaXMuc3RhdGUuZWRpdGluZykge1xu
XHQgICAgICAgIGVsZW1lbnQgPSBfcmVhY3QyLmRlZmF1bHQuY3JlYXRlRWxlbWVudChfVG9kb1Rl
eHRJbnB1dDIuZGVmYXVsdCwgeyB0ZXh0OiB0b2RvLnRleHQsXG5cdCAgICAgICAgICBlZGl0aW5n
OiB0aGlzLnN0YXRlLmVkaXRpbmcsXG5cdCAgICAgICAgICBvblNhdmU6IGZ1bmN0aW9uIG9uU2F2
ZSh0ZXh0KSB7XG5cdCAgICAgICAgICAgIHJldHVybiBfdGhpczIuaGFuZGxlU2F2ZSh0b2RvLmlk
LCB0ZXh0KTtcblx0ICAgICAgICAgIH0gfSk7XG5cdCAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAg
ZWxlbWVudCA9IF9yZWFjdDIuZGVmYXVsdC5jcmVhdGVFbGVtZW50KFxuXHQgICAgICAgICAgJ2Rp
dicsXG5cdCAgICAgICAgICB7IGNsYXNzTmFtZTogJ3ZpZXcnIH0sXG5cdCAgICAgICAgICBfcmVh
Y3QyLmRlZmF1bHQuY3JlYXRlRWxlbWVudCgnaW5wdXQnLCB7IGNsYXNzTmFtZTogJ3RvZ2dsZScs
XG5cdCAgICAgICAgICAgIHR5cGU6ICdjaGVja2JveCcsXG5cdCAgICAgICAgICAgIGNoZWNrZWQ6
IHRvZG8uY29tcGxldGVkLFxuXHQgICAgICAgICAgICBvbkNoYW5nZTogZnVuY3Rpb24gb25DaGFu
Z2UoKSB7XG5cdCAgICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRlVG9kbyh0b2RvLmlkKTtcblx0
ICAgICAgICAgICAgfSB9KSxcblx0ICAgICAgICAgIF9yZWFjdDIuZGVmYXVsdC5jcmVhdGVFbGVt
ZW50KFxuXHQgICAgICAgICAgICAnbGFiZWwnLFxuXHQgICAgICAgICAgICB7IG9uRG91YmxlQ2xp
Y2s6IHRoaXMuaGFuZGxlRG91YmxlQ2xpY2sgfSxcblx0ICAgICAgICAgICAgdG9kby50ZXh0XG5c
dCAgICAgICAgICApLFxuXHQgICAgICAgICAgX3JlYWN0Mi5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQo
J2J1dHRvbicsIHsgY2xhc3NOYW1lOiAnZGVzdHJveScsXG5cdCAgICAgICAgICAgIG9uQ2xpY2s6
IGZ1bmN0aW9uIG9uQ2xpY2soKSB7XG5cdCAgICAgICAgICAgICAgcmV0dXJuIGRlbGV0ZVRvZG8o
dG9kby5pZCk7XG5cdCAgICAgICAgICAgIH0gfSlcblx0ICAgICAgICApO1xuXHQgICAgICB9XG5c
dFxuXHQgICAgICByZXR1cm4gX3JlYWN0Mi5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXG5cdCAgICAg
ICAgJ2xpJyxcblx0ICAgICAgICB7IGNsYXNzTmFtZTogKDAsIF9jbGFzc25hbWVzMi5kZWZhdWx0
KSh7XG5cdCAgICAgICAgICAgIGNvbXBsZXRlZDogdG9kby5jb21wbGV0ZWQsXG5cdCAgICAgICAg
ICAgIGVkaXRpbmc6IHRoaXMuc3RhdGUuZWRpdGluZ1xuXHQgICAgICAgICAgfSkgfSxcblx0ICAg
ICAgICBlbGVtZW50XG5cdCAgICAgICk7XG5cdCAgICB9XG5cdCAgfV0pO1xuXHRcblx0ICByZXR1
cm4gVG9kb0l0ZW07XG5cdH0oX3JlYWN0LkNvbXBvbmVudCk7XG5cdFxuXHRUb2RvSXRlbS5wcm9w
VHlwZXMgPSB7XG5cdCAgdG9kbzogX3JlYWN0LlByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxc
blx0ICBlZGl0VG9kbzogX3JlYWN0LlByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG5cdCAgZGVs
ZXRlVG9kbzogX3JlYWN0LlByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG5cdCAgY29tcGxldGVU
b2RvOiBfcmVhY3QuUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZFxuXHR9O1xuXHRleHBvcnRzLmRl
ZmF1bHQgPSBUb2RvSXRlbTtcblxuLyoqKi8gfSxcbi8qIDIwMyAqL1xuLyoqKi8gZnVuY3Rpb24o
bW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0J3VzZSBzdHJpY3Qn
O1xuXHRcblx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7
XG5cdCAgdmFsdWU6IHRydWVcblx0fSk7XG5cdFxuXHR2YXIgX3JlYWN0ID0gX193ZWJwYWNrX3Jl
cXVpcmVfXygxMik7XG5cdFxuXHR2YXIgX3JlYWN0MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQo
X3JlYWN0KTtcblx0XG5cdHZhciBfcmVkdXggPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMwKTtcblx0
XG5cdHZhciBfcmVhY3RSZWR1eCA9IF9fd2VicGFja19yZXF1aXJlX18oODEpO1xuXHRcblx0dmFy
IF9IZWFkZXIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIwMCk7XG5cdFxuXHR2YXIgX0hlYWRlcjIg
PSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9IZWFkZXIpO1xuXHRcblx0dmFyIF9NYWluU2VjdGlv
biA9IF9fd2VicGFja19yZXF1aXJlX18oMjAxKTtcblx0XG5cdHZhciBfTWFpblNlY3Rpb24yID0g
X2ludGVyb3BSZXF1aXJlRGVmYXVsdChfTWFpblNlY3Rpb24pO1xuXHRcblx0dmFyIF9hY3Rpb25z
ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxOTgpO1xuXHRcblx0dmFyIFRvZG9BY3Rpb25zID0gX2lu
dGVyb3BSZXF1aXJlV2lsZGNhcmQoX2FjdGlvbnMpO1xuXHRcblx0ZnVuY3Rpb24gX2ludGVyb3BS
ZXF1aXJlV2lsZGNhcmQob2JqKSB7IGlmIChvYmogJiYgb2JqLl9fZXNNb2R1bGUpIHsgcmV0dXJu
IG9iajsgfSBlbHNlIHsgdmFyIG5ld09iaiA9IHt9OyBpZiAob2JqICE9IG51bGwpIHsgZm9yICh2
YXIga2V5IGluIG9iaikgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxs
KG9iaiwga2V5KSkgbmV3T2JqW2tleV0gPSBvYmpba2V5XTsgfSB9IG5ld09iai5kZWZhdWx0ID0g
b2JqOyByZXR1cm4gbmV3T2JqOyB9IH1cblx0XG5cdGZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURl
ZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1
bHQ6IG9iaiB9OyB9XG5cdFxuXHR2YXIgQXBwID0gZnVuY3Rpb24gQXBwKF9yZWYpIHtcblx0ICB2
YXIgdG9kb3MgPSBfcmVmLnRvZG9zO1xuXHQgIHZhciBhY3Rpb25zID0gX3JlZi5hY3Rpb25zO1xu
XHQgIHJldHVybiBfcmVhY3QyLmRlZmF1bHQuY3JlYXRlRWxlbWVudChcblx0ICAgICdkaXYnLFxu
XHQgICAgbnVsbCxcblx0ICAgIF9yZWFjdDIuZGVmYXVsdC5jcmVhdGVFbGVtZW50KF9IZWFkZXIy
LmRlZmF1bHQsIHsgYWRkVG9kbzogYWN0aW9ucy5hZGRUb2RvIH0pLFxuXHQgICAgX3JlYWN0Mi5k
ZWZhdWx0LmNyZWF0ZUVsZW1lbnQoX01haW5TZWN0aW9uMi5kZWZhdWx0LCB7IHRvZG9zOiB0b2Rv
cywgYWN0aW9uczogYWN0aW9ucyB9KVxuXHQgICk7XG5cdH07XG5cdFxuXHRBcHAucHJvcFR5cGVz
ID0ge1xuXHQgIHRvZG9zOiBfcmVhY3QuUHJvcFR5cGVzLmFycmF5LmlzUmVxdWlyZWQsXG5cdCAg
YWN0aW9uczogX3JlYWN0LlByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZFxuXHR9O1xuXHRcblx0
dmFyIG1hcFN0YXRlVG9Qcm9wcyA9IGZ1bmN0aW9uIG1hcFN0YXRlVG9Qcm9wcyhzdGF0ZSkge1xu
XHQgIHJldHVybiB7XG5cdCAgICB0b2Rvczogc3RhdGUudG9kb3Ncblx0ICB9O1xuXHR9O1xuXHRc
blx0dmFyIG1hcERpc3BhdGNoVG9Qcm9wcyA9IGZ1bmN0aW9uIG1hcERpc3BhdGNoVG9Qcm9wcyhk
aXNwYXRjaCkge1xuXHQgIHJldHVybiB7XG5cdCAgICBhY3Rpb25zOiAoMCwgX3JlZHV4LmJpbmRB
Y3Rpb25DcmVhdG9ycykoVG9kb0FjdGlvbnMsIGRpc3BhdGNoKVxuXHQgIH07XG5cdH07XG5cdFxu
XHRleHBvcnRzLmRlZmF1bHQgPSAoMCwgX3JlYWN0UmVkdXguY29ubmVjdCkobWFwU3RhdGVUb1By
b3BzLCBtYXBEaXNwYXRjaFRvUHJvcHMpKEFwcCk7XG5cbi8qKiovIH0sXG4vKiAyMDQgKi9cbi8q
KiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5c
dCd1c2Ugc3RyaWN0Jztcblx0XG5cdHZhciBfcmVhY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEy
KTtcblx0XG5cdHZhciBfcmVhY3QyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfcmVhY3QpO1xu
XHRcblx0dmFyIF9yZWFjdERvbSA9IF9fd2VicGFja19yZXF1aXJlX18oMTIzKTtcblx0XG5cdHZh
ciBfcmVkdXggPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMwKTtcblx0XG5cdHZhciBfcmVhY3RSZWR1
eCA9IF9fd2VicGFja19yZXF1aXJlX18oODEpO1xuXHRcblx0dmFyIF9BcHAgPSBfX3dlYnBhY2tf
cmVxdWlyZV9fKDIwMyk7XG5cdFxuXHR2YXIgX0FwcDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0
KF9BcHApO1xuXHRcblx0dmFyIF9yZWR1Y2VycyA9IF9fd2VicGFja19yZXF1aXJlX18oMjA1KTtc
blx0XG5cdHZhciBfcmVkdWNlcnMyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfcmVkdWNlcnMp
O1xuXHRcblx0X193ZWJwYWNrX3JlcXVpcmVfXygyMDcpO1xuXHRcblx0ZnVuY3Rpb24gX2ludGVy
b3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9i
aiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblx0XG5cdHZhciBzdG9yZSA9ICgwLCBfcmVkdXguY3Jl
YXRlU3RvcmUpKF9yZWR1Y2VyczIuZGVmYXVsdCk7XG5cdFxuXHQoMCwgX3JlYWN0RG9tLnJlbmRl
cikoX3JlYWN0Mi5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXG5cdCAgX3JlYWN0UmVkdXguUHJvdmlk
ZXIsXG5cdCAgeyBzdG9yZTogc3RvcmUgfSxcblx0ICBfcmVhY3QyLmRlZmF1bHQuY3JlYXRlRWxl
bWVudChfQXBwMi5kZWZhdWx0LCBudWxsKVxuXHQpLCBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
cm9vdCcpKTtcblxuLyoqKi8gfSxcbi8qIDIwNSAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBl
eHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0
T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG5cdCAgdmFs
dWU6IHRydWVcblx0fSk7XG5cdFxuXHR2YXIgX3JlZHV4ID0gX193ZWJwYWNrX3JlcXVpcmVfXygz
MCk7XG5cdFxuXHR2YXIgX3RvZG9zID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMDYpO1xuXHRcblx0
dmFyIF90b2RvczIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF90b2Rvcyk7XG5cdFxuXHRmdW5j
dGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2Vz
TW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXHRcblx0dmFyIHJvb3RSZWR1Y2Vy
ID0gKDAsIF9yZWR1eC5jb21iaW5lUmVkdWNlcnMpKHtcblx0ICB0b2RvczogX3RvZG9zMi5kZWZh
dWx0XG5cdH0pO1xuXHRcblx0ZXhwb3J0cy5kZWZhdWx0ID0gcm9vdFJlZHVjZXI7XG5cbi8qKiov
IH0sXG4vKiAyMDYgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNr
X3JlcXVpcmVfXykge1xuXG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdE9iamVjdC5kZWZpbmVQcm9w
ZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuXHQgIHZhbHVlOiB0cnVlXG5cdH0pO1xu
XHRcblx0dmFyIF90eXBlb2YgPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgdHlw
ZW9mIFN5bWJvbC5pdGVyYXRvciA9PT0gXCJzeW1ib2xcIiA/IGZ1bmN0aW9uIChvYmopIHsgcmV0
dXJuIHR5cGVvZiBvYmo7IH0gOiBmdW5jdGlvbiAob2JqKSB7IHJldHVybiBvYmogJiYgdHlwZW9m
IFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9iai5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sID8g
XCJzeW1ib2xcIiA6IHR5cGVvZiBvYmo7IH07XG5cdFxuXHR2YXIgX2V4dGVuZHMgPSBPYmplY3Qu
YXNzaWduIHx8IGZ1bmN0aW9uICh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVu
dHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTsgZm9yICh2YXIga2V5
IGluIHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNv
dXJjZSwga2V5KSkgeyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gfSByZXR1cm4gdGFy
Z2V0OyB9O1xuXHRcblx0ZXhwb3J0cy5kZWZhdWx0ID0gdG9kb3M7XG5cdFxuXHR2YXIgX0FjdGlv
blR5cGVzID0gX193ZWJwYWNrX3JlcXVpcmVfXyg4NSk7XG5cdFxuXHRmdW5jdGlvbiBfdG9Db25z
dW1hYmxlQXJyYXkoYXJyKSB7IGlmIChBcnJheS5pc0FycmF5KGFycikpIHsgZm9yICh2YXIgaSA9
IDAsIGFycjIgPSBBcnJheShhcnIubGVuZ3RoKTsgaSA8IGFyci5sZW5ndGg7IGkrKykgeyBhcnIy
W2ldID0gYXJyW2ldOyB9IHJldHVybiBhcnIyOyB9IGVsc2UgeyByZXR1cm4gQXJyYXkuZnJvbShh
cnIpOyB9IH1cblx0XG5cdHZhciBpbml0aWFsU3RhdGUgPSBbXTtcblx0XG5cdGZ1bmN0aW9uIHRv
ZG9zKCkge1xuXHQgIHZhciBzdGF0ZSA9IGFyZ3VtZW50cy5sZW5ndGggPD0gMCB8fCBhcmd1bWVu
dHNbMF0gPT09IHVuZGVmaW5lZCA/IGluaXRpYWxTdGF0ZSA6IGFyZ3VtZW50c1swXTtcblx0ICB2
YXIgYWN0aW9uID0gYXJndW1lbnRzWzFdO1xuXHRcblx0ICB2YXIgX3JldCA9IGZ1bmN0aW9uICgp
IHtcblx0ICAgIHN3aXRjaCAoYWN0aW9uLnR5cGUpIHtcblx0ICAgICAgY2FzZSBfQWN0aW9uVHlw
ZXMuQUREX1RPRE86XG5cdCAgICAgICAgcmV0dXJuIHtcblx0ICAgICAgICAgIHY6IFtdLmNvbmNh
dChfdG9Db25zdW1hYmxlQXJyYXkoc3RhdGUpLCBbe1xuXHQgICAgICAgICAgICBpZDogc3RhdGUu
cmVkdWNlKGZ1bmN0aW9uIChtYXhJZCwgdG9kbykge1xuXHQgICAgICAgICAgICAgIHJldHVybiBN
YXRoLm1heCh0b2RvLmlkLCBtYXhJZCk7XG5cdCAgICAgICAgICAgIH0sIC0xKSArIDEsXG5cdCAg
ICAgICAgICAgIGNvbXBsZXRlZDogZmFsc2UsXG5cdCAgICAgICAgICAgIHRleHQ6IGFjdGlvbi50
ZXh0XG5cdCAgICAgICAgICB9XSlcblx0ICAgICAgICB9O1xuXHRcblx0ICAgICAgY2FzZSBfQWN0
aW9uVHlwZXMuREVMRVRFX1RPRE86XG5cdCAgICAgICAgcmV0dXJuIHtcblx0ICAgICAgICAgIHY6
IHN0YXRlLmZpbHRlcihmdW5jdGlvbiAodG9kbykge1xuXHQgICAgICAgICAgICByZXR1cm4gdG9k
by5pZCAhPT0gYWN0aW9uLmlkO1xuXHQgICAgICAgICAgfSlcblx0ICAgICAgICB9O1xuXHRcblx0
ICAgICAgY2FzZSBfQWN0aW9uVHlwZXMuRURJVF9UT0RPOlxuXHQgICAgICAgIHJldHVybiB7XG5c
dCAgICAgICAgICB2OiBzdGF0ZS5tYXAoZnVuY3Rpb24gKHRvZG8pIHtcblx0ICAgICAgICAgICAg
cmV0dXJuIHRvZG8uaWQgPT09IGFjdGlvbi5pZCA/IF9leHRlbmRzKHt9LCB0b2RvLCB7IHRleHQ6
IGFjdGlvbi50ZXh0IH0pIDogdG9kbztcblx0ICAgICAgICAgIH0pXG5cdCAgICAgICAgfTtcblx0
XG5cdCAgICAgIGNhc2UgX0FjdGlvblR5cGVzLkNPTVBMRVRFX1RPRE86XG5cdCAgICAgICAgcmV0
dXJuIHtcblx0ICAgICAgICAgIHY6IHN0YXRlLm1hcChmdW5jdGlvbiAodG9kbykge1xuXHQgICAg
ICAgICAgICByZXR1cm4gdG9kby5pZCA9PT0gYWN0aW9uLmlkID8gX2V4dGVuZHMoe30sIHRvZG8s
IHsgY29tcGxldGVkOiAhdG9kby5jb21wbGV0ZWQgfSkgOiB0b2RvO1xuXHQgICAgICAgICAgfSlc
blx0ICAgICAgICB9O1xuXHRcblx0ICAgICAgY2FzZSBfQWN0aW9uVHlwZXMuQ09NUExFVEVfQUxM
OlxuXHQgICAgICAgIHZhciBhcmVBbGxNYXJrZWQgPSBzdGF0ZS5ldmVyeShmdW5jdGlvbiAodG9k
bykge1xuXHQgICAgICAgICAgcmV0dXJuIHRvZG8uY29tcGxldGVkO1xuXHQgICAgICAgIH0pO1xu
XHQgICAgICAgIHJldHVybiB7XG5cdCAgICAgICAgICB2OiBzdGF0ZS5tYXAoZnVuY3Rpb24gKHRv
ZG8pIHtcblx0ICAgICAgICAgICAgcmV0dXJuIF9leHRlbmRzKHt9LCB0b2RvLCB7XG5cdCAgICAg
ICAgICAgICAgY29tcGxldGVkOiAhYXJlQWxsTWFya2VkXG5cdCAgICAgICAgICAgIH0pO1xuXHQg
ICAgICAgICAgfSlcblx0ICAgICAgICB9O1xuXHRcblx0ICAgICAgY2FzZSBfQWN0aW9uVHlwZXMu
Q0xFQVJfQ09NUExFVEVEOlxuXHQgICAgICAgIHJldHVybiB7XG5cdCAgICAgICAgICB2OiBzdGF0
ZS5maWx0ZXIoZnVuY3Rpb24gKHRvZG8pIHtcblx0ICAgICAgICAgICAgcmV0dXJuIHRvZG8uY29t
cGxldGVkID09PSBmYWxzZTtcblx0ICAgICAgICAgIH0pXG5cdCAgICAgICAgfTtcblx0XG5cdCAg
ICAgIGRlZmF1bHQ6XG5cdCAgICAgICAgcmV0dXJuIHtcblx0ICAgICAgICAgIHY6IHN0YXRlXG5c
dCAgICAgICAgfTtcblx0ICAgIH1cblx0ICB9KCk7XG5cdFxuXHQgIGlmICgodHlwZW9mIF9yZXQg
PT09ICd1bmRlZmluZWQnID8gJ3VuZGVmaW5lZCcgOiBfdHlwZW9mKF9yZXQpKSA9PT0gXCJvYmpl
Y3RcIikgcmV0dXJuIF9yZXQudjtcblx0fVxuXG4vKioqLyB9LFxuLyogMjA3ICovXG4vKioqLyBm
dW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuXHQvLyByZW1vdmVkIGJ5IGV4dHJhY3QtdGV4
dC13ZWJwYWNrLXBsdWdpblxuXG4vKioqLyB9LFxuLyogMjA4ICovXG4vKioqLyBmdW5jdGlvbiht
b2R1bGUsIGV4cG9ydHMpIHtcblxuXHQndXNlIHN0cmljdCc7XG5cdC8qIGVzbGludC1kaXNhYmxl
IG5vLXVudXNlZC12YXJzICovXG5cdHZhciBoYXNPd25Qcm9wZXJ0eSA9IE9iamVjdC5wcm90b3R5
cGUuaGFzT3duUHJvcGVydHk7XG5cdHZhciBwcm9wSXNFbnVtZXJhYmxlID0gT2JqZWN0LnByb3Rv
dHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZTtcblx0XG5cdGZ1bmN0aW9uIHRvT2JqZWN0KHZhbCkg
e1xuXHRcdGlmICh2YWwgPT09IG51bGwgfHwgdmFsID09PSB1bmRlZmluZWQpIHtcblx0XHRcdHRo
cm93IG5ldyBUeXBlRXJyb3IoJ09iamVjdC5hc3NpZ24gY2Fubm90IGJlIGNhbGxlZCB3aXRoIG51
bGwgb3IgdW5kZWZpbmVkJyk7XG5cdFx0fVxuXHRcblx0XHRyZXR1cm4gT2JqZWN0KHZhbCk7XG5c
dH1cblx0XG5cdGZ1bmN0aW9uIHNob3VsZFVzZU5hdGl2ZSgpIHtcblx0XHR0cnkge1xuXHRcdFx0
aWYgKCFPYmplY3QuYXNzaWduKSB7XG5cdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdH1cblx0
XG5cdFx0XHQvLyBEZXRlY3QgYnVnZ3kgcHJvcGVydHkgZW51bWVyYXRpb24gb3JkZXIgaW4gb2xk
ZXIgVjggdmVyc2lvbnMuXG5cdFxuXHRcdFx0Ly8gaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9w
L3Y4L2lzc3Vlcy9kZXRhaWw/aWQ9NDExOFxuXHRcdFx0dmFyIHRlc3QxID0gbmV3IFN0cmluZygn
YWJjJyk7ICAvLyBlc2xpbnQtZGlzYWJsZS1saW5lXG5cdFx0XHR0ZXN0MVs1XSA9ICdkZSc7XG5c
dFx0XHRpZiAoT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGVzdDEpWzBdID09PSAnNScpIHtc
blx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0fVxuXHRcblx0XHRcdC8vIGh0dHBzOi8vYnVn
cy5jaHJvbWl1bS5vcmcvcC92OC9pc3N1ZXMvZGV0YWlsP2lkPTMwNTZcblx0XHRcdHZhciB0ZXN0
MiA9IHt9O1xuXHRcdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCAxMDsgaSsrKSB7XG5cdFx0XHRcdHRl
c3QyWydfJyArIFN0cmluZy5mcm9tQ2hhckNvZGUoaSldID0gaTtcblx0XHRcdH1cblx0XHRcdHZh
ciBvcmRlcjIgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0ZXN0MikubWFwKGZ1bmN0aW9u
IChuKSB7XG5cdFx0XHRcdHJldHVybiB0ZXN0MltuXTtcblx0XHRcdH0pO1xuXHRcdFx0aWYgKG9y
ZGVyMi5qb2luKCcnKSAhPT0gJzAxMjM0NTY3ODknKSB7XG5cdFx0XHRcdHJldHVybiBmYWxzZTtc
blx0XHRcdH1cblx0XG5cdFx0XHQvLyBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvdjgvaXNz
dWVzL2RldGFpbD9pZD0zMDU2XG5cdFx0XHR2YXIgdGVzdDMgPSB7fTtcblx0XHRcdCdhYmNkZWZn
aGlqa2xtbm9wcXJzdCcuc3BsaXQoJycpLmZvckVhY2goZnVuY3Rpb24gKGxldHRlcikge1xuXHRc
dFx0XHR0ZXN0M1tsZXR0ZXJdID0gbGV0dGVyO1xuXHRcdFx0fSk7XG5cdFx0XHRpZiAoT2JqZWN0
LmtleXMoT2JqZWN0LmFzc2lnbih7fSwgdGVzdDMpKS5qb2luKCcnKSAhPT1cblx0XHRcdFx0XHQn
YWJjZGVmZ2hpamtsbW5vcHFyc3QnKSB7XG5cdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdH1c
blx0XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9IGNhdGNoIChlKSB7XG5cdFx0XHQvLyBXZSBk
b24ndCBleHBlY3QgYW55IG9mIHRoZSBhYm92ZSB0byB0aHJvdywgYnV0IGJldHRlciB0byBiZSBz
YWZlLlxuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblx0fVxuXHRcblx0bW9kdWxlLmV4cG9y
dHMgPSBzaG91bGRVc2VOYXRpdmUoKSA/IE9iamVjdC5hc3NpZ24gOiBmdW5jdGlvbiAodGFyZ2V0
LCBzb3VyY2UpIHtcblx0XHR2YXIgZnJvbTtcblx0XHR2YXIgdG8gPSB0b09iamVjdCh0YXJnZXQp
O1xuXHRcdHZhciBzeW1ib2xzO1xuXHRcblx0XHRmb3IgKHZhciBzID0gMTsgcyA8IGFyZ3VtZW50
cy5sZW5ndGg7IHMrKykge1xuXHRcdFx0ZnJvbSA9IE9iamVjdChhcmd1bWVudHNbc10pO1xuXHRc
blx0XHRcdGZvciAodmFyIGtleSBpbiBmcm9tKSB7XG5cdFx0XHRcdGlmIChoYXNPd25Qcm9wZXJ0
eS5jYWxsKGZyb20sIGtleSkpIHtcblx0XHRcdFx0XHR0b1trZXldID0gZnJvbVtrZXldO1xuXHRc
dFx0XHR9XG5cdFx0XHR9XG5cdFxuXHRcdFx0aWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJv
bHMpIHtcblx0XHRcdFx0c3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZnJv
bSk7XG5cdFx0XHRcdGZvciAodmFyIGkgPSAwOyBpIDwgc3ltYm9scy5sZW5ndGg7IGkrKykge1xu
XHRcdFx0XHRcdGlmIChwcm9wSXNFbnVtZXJhYmxlLmNhbGwoZnJvbSwgc3ltYm9sc1tpXSkpIHtc
blx0XHRcdFx0XHRcdHRvW3N5bWJvbHNbaV1dID0gZnJvbVtzeW1ib2xzW2ldXTtcblx0XHRcdFx0
XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdFxuXHRcdHJldHVybiB0bztcblx0fTtc
blxuXG4vKioqLyB9LFxuLyogMjA5ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMs
IF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHQvL1RoaXMg
ZmlsZSBjb250YWlucyB0aGUgRVM2IGV4dGVuc2lvbnMgdG8gdGhlIGNvcmUgUHJvbWlzZXMvQSsg
QVBJXG5cdFxuXHR2YXIgUHJvbWlzZSA9IF9fd2VicGFja19yZXF1aXJlX18oODgpO1xuXHRcblx0
bW9kdWxlLmV4cG9ydHMgPSBQcm9taXNlO1xuXHRcblx0LyogU3RhdGljIEZ1bmN0aW9ucyAqL1xu
XHRcblx0dmFyIFRSVUUgPSB2YWx1ZVByb21pc2UodHJ1ZSk7XG5cdHZhciBGQUxTRSA9IHZhbHVl
UHJvbWlzZShmYWxzZSk7XG5cdHZhciBOVUxMID0gdmFsdWVQcm9taXNlKG51bGwpO1xuXHR2YXIg
VU5ERUZJTkVEID0gdmFsdWVQcm9taXNlKHVuZGVmaW5lZCk7XG5cdHZhciBaRVJPID0gdmFsdWVQ
cm9taXNlKDApO1xuXHR2YXIgRU1QVFlTVFJJTkcgPSB2YWx1ZVByb21pc2UoJycpO1xuXHRcblx0
ZnVuY3Rpb24gdmFsdWVQcm9taXNlKHZhbHVlKSB7XG5cdCAgdmFyIHAgPSBuZXcgUHJvbWlzZShQ
cm9taXNlLl82MSk7XG5cdCAgcC5fODEgPSAxO1xuXHQgIHAuXzY1ID0gdmFsdWU7XG5cdCAgcmV0
dXJuIHA7XG5cdH1cblx0UHJvbWlzZS5yZXNvbHZlID0gZnVuY3Rpb24gKHZhbHVlKSB7XG5cdCAg
aWYgKHZhbHVlIGluc3RhbmNlb2YgUHJvbWlzZSkgcmV0dXJuIHZhbHVlO1xuXHRcblx0ICBpZiAo
dmFsdWUgPT09IG51bGwpIHJldHVybiBOVUxMO1xuXHQgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVk
KSByZXR1cm4gVU5ERUZJTkVEO1xuXHQgIGlmICh2YWx1ZSA9PT0gdHJ1ZSkgcmV0dXJuIFRSVUU7
XG5cdCAgaWYgKHZhbHVlID09PSBmYWxzZSkgcmV0dXJuIEZBTFNFO1xuXHQgIGlmICh2YWx1ZSA9
PT0gMCkgcmV0dXJuIFpFUk87XG5cdCAgaWYgKHZhbHVlID09PSAnJykgcmV0dXJuIEVNUFRZU1RS
SU5HO1xuXHRcblx0ICBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyB8fCB0eXBlb2YgdmFs
dWUgPT09ICdmdW5jdGlvbicpIHtcblx0ICAgIHRyeSB7XG5cdCAgICAgIHZhciB0aGVuID0gdmFs
dWUudGhlbjtcblx0ICAgICAgaWYgKHR5cGVvZiB0aGVuID09PSAnZnVuY3Rpb24nKSB7XG5cdCAg
ICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKHRoZW4uYmluZCh2YWx1ZSkpO1xuXHQgICAgICB9XG5c
dCAgICB9IGNhdGNoIChleCkge1xuXHQgICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24g
KHJlc29sdmUsIHJlamVjdCkge1xuXHQgICAgICAgIHJlamVjdChleCk7XG5cdCAgICAgIH0pO1xu
XHQgICAgfVxuXHQgIH1cblx0ICByZXR1cm4gdmFsdWVQcm9taXNlKHZhbHVlKTtcblx0fTtcblx0
XG5cdFByb21pc2UuYWxsID0gZnVuY3Rpb24gKGFycikge1xuXHQgIHZhciBhcmdzID0gQXJyYXku
cHJvdG90eXBlLnNsaWNlLmNhbGwoYXJyKTtcblx0XG5cdCAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1
bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcblx0ICAgIGlmIChhcmdzLmxlbmd0aCA9PT0gMCkg
cmV0dXJuIHJlc29sdmUoW10pO1xuXHQgICAgdmFyIHJlbWFpbmluZyA9IGFyZ3MubGVuZ3RoO1xu
XHQgICAgZnVuY3Rpb24gcmVzKGksIHZhbCkge1xuXHQgICAgICBpZiAodmFsICYmICh0eXBlb2Yg
dmFsID09PSAnb2JqZWN0JyB8fCB0eXBlb2YgdmFsID09PSAnZnVuY3Rpb24nKSkge1xuXHQgICAg
ICAgIGlmICh2YWwgaW5zdGFuY2VvZiBQcm9taXNlICYmIHZhbC50aGVuID09PSBQcm9taXNlLnBy
b3RvdHlwZS50aGVuKSB7XG5cdCAgICAgICAgICB3aGlsZSAodmFsLl84MSA9PT0gMykge1xuXHQg
ICAgICAgICAgICB2YWwgPSB2YWwuXzY1O1xuXHQgICAgICAgICAgfVxuXHQgICAgICAgICAgaWYg
KHZhbC5fODEgPT09IDEpIHJldHVybiByZXMoaSwgdmFsLl82NSk7XG5cdCAgICAgICAgICBpZiAo
dmFsLl84MSA9PT0gMikgcmVqZWN0KHZhbC5fNjUpO1xuXHQgICAgICAgICAgdmFsLnRoZW4oZnVu
Y3Rpb24gKHZhbCkge1xuXHQgICAgICAgICAgICByZXMoaSwgdmFsKTtcblx0ICAgICAgICAgIH0s
IHJlamVjdCk7XG5cdCAgICAgICAgICByZXR1cm47XG5cdCAgICAgICAgfSBlbHNlIHtcblx0ICAg
ICAgICAgIHZhciB0aGVuID0gdmFsLnRoZW47XG5cdCAgICAgICAgICBpZiAodHlwZW9mIHRoZW4g
PT09ICdmdW5jdGlvbicpIHtcblx0ICAgICAgICAgICAgdmFyIHAgPSBuZXcgUHJvbWlzZSh0aGVu
LmJpbmQodmFsKSk7XG5cdCAgICAgICAgICAgIHAudGhlbihmdW5jdGlvbiAodmFsKSB7XG5cdCAg
ICAgICAgICAgICAgcmVzKGksIHZhbCk7XG5cdCAgICAgICAgICAgIH0sIHJlamVjdCk7XG5cdCAg
ICAgICAgICAgIHJldHVybjtcblx0ICAgICAgICAgIH1cblx0ICAgICAgICB9XG5cdCAgICAgIH1c
blx0ICAgICAgYXJnc1tpXSA9IHZhbDtcblx0ICAgICAgaWYgKC0tcmVtYWluaW5nID09PSAwKSB7
XG5cdCAgICAgICAgcmVzb2x2ZShhcmdzKTtcblx0ICAgICAgfVxuXHQgICAgfVxuXHQgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCBhcmdzLmxlbmd0aDsgaSsrKSB7XG5cdCAgICAgIHJlcyhpLCBhcmdz
W2ldKTtcblx0ICAgIH1cblx0ICB9KTtcblx0fTtcblx0XG5cdFByb21pc2UucmVqZWN0ID0gZnVu
Y3Rpb24gKHZhbHVlKSB7XG5cdCAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZl
LCByZWplY3QpIHtcblx0ICAgIHJlamVjdCh2YWx1ZSk7XG5cdCAgfSk7XG5cdH07XG5cdFxuXHRQ
cm9taXNlLnJhY2UgPSBmdW5jdGlvbiAodmFsdWVzKSB7XG5cdCAgcmV0dXJuIG5ldyBQcm9taXNl
KGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcblx0ICAgIHZhbHVlcy5mb3JFYWNoKGZ1bmN0
aW9uKHZhbHVlKXtcblx0ICAgICAgUHJvbWlzZS5yZXNvbHZlKHZhbHVlKS50aGVuKHJlc29sdmUs
IHJlamVjdCk7XG5cdCAgICB9KTtcblx0ICB9KTtcblx0fTtcblx0XG5cdC8qIFByb3RvdHlwZSBN
ZXRob2RzICovXG5cdFxuXHRQcm9taXNlLnByb3RvdHlwZVsnY2F0Y2gnXSA9IGZ1bmN0aW9uIChv
blJlamVjdGVkKSB7XG5cdCAgcmV0dXJuIHRoaXMudGhlbihudWxsLCBvblJlamVjdGVkKTtcblx0
fTtcblxuXG4vKioqLyB9LFxuLyogMjEwICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9y
dHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHR2YXIg
UHJvbWlzZSA9IF9fd2VicGFja19yZXF1aXJlX18oODgpO1xuXHRcblx0dmFyIERFRkFVTFRfV0hJ
VEVMSVNUID0gW1xuXHQgIFJlZmVyZW5jZUVycm9yLFxuXHQgIFR5cGVFcnJvcixcblx0ICBSYW5n
ZUVycm9yXG5cdF07XG5cdFxuXHR2YXIgZW5hYmxlZCA9IGZhbHNlO1xuXHRleHBvcnRzLmRpc2Fi
bGUgPSBkaXNhYmxlO1xuXHRmdW5jdGlvbiBkaXNhYmxlKCkge1xuXHQgIGVuYWJsZWQgPSBmYWxz
ZTtcblx0ICBQcm9taXNlLl8xMCA9IG51bGw7XG5cdCAgUHJvbWlzZS5fOTcgPSBudWxsO1xuXHR9
XG5cdFxuXHRleHBvcnRzLmVuYWJsZSA9IGVuYWJsZTtcblx0ZnVuY3Rpb24gZW5hYmxlKG9wdGlv
bnMpIHtcblx0ICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcblx0ICBpZiAoZW5hYmxlZCkgZGlz
YWJsZSgpO1xuXHQgIGVuYWJsZWQgPSB0cnVlO1xuXHQgIHZhciBpZCA9IDA7XG5cdCAgdmFyIGRp
c3BsYXlJZCA9IDA7XG5cdCAgdmFyIHJlamVjdGlvbnMgPSB7fTtcblx0ICBQcm9taXNlLl8xMCA9
IGZ1bmN0aW9uIChwcm9taXNlKSB7XG5cdCAgICBpZiAoXG5cdCAgICAgIHByb21pc2UuXzgxID09
PSAyICYmIC8vIElTIFJFSkVDVEVEXG5cdCAgICAgIHJlamVjdGlvbnNbcHJvbWlzZS5fNzJdXG5c
dCAgICApIHtcblx0ICAgICAgaWYgKHJlamVjdGlvbnNbcHJvbWlzZS5fNzJdLmxvZ2dlZCkge1xu
XHQgICAgICAgIG9uSGFuZGxlZChwcm9taXNlLl83Mik7XG5cdCAgICAgIH0gZWxzZSB7XG5cdCAg
ICAgICAgY2xlYXJUaW1lb3V0KHJlamVjdGlvbnNbcHJvbWlzZS5fNzJdLnRpbWVvdXQpO1xuXHQg
ICAgICB9XG5cdCAgICAgIGRlbGV0ZSByZWplY3Rpb25zW3Byb21pc2UuXzcyXTtcblx0ICAgIH1c
blx0ICB9O1xuXHQgIFByb21pc2UuXzk3ID0gZnVuY3Rpb24gKHByb21pc2UsIGVycikge1xuXHQg
ICAgaWYgKHByb21pc2UuXzQ1ID09PSAwKSB7IC8vIG5vdCB5ZXQgaGFuZGxlZFxuXHQgICAgICBw
cm9taXNlLl83MiA9IGlkKys7XG5cdCAgICAgIHJlamVjdGlvbnNbcHJvbWlzZS5fNzJdID0ge1xu
XHQgICAgICAgIGRpc3BsYXlJZDogbnVsbCxcblx0ICAgICAgICBlcnJvcjogZXJyLFxuXHQgICAg
ICAgIHRpbWVvdXQ6IHNldFRpbWVvdXQoXG5cdCAgICAgICAgICBvblVuaGFuZGxlZC5iaW5kKG51
bGwsIHByb21pc2UuXzcyKSxcblx0ICAgICAgICAgIC8vIEZvciByZWZlcmVuY2UgZXJyb3JzIGFu
ZCB0eXBlIGVycm9ycywgdGhpcyBhbG1vc3QgYWx3YXlzXG5cdCAgICAgICAgICAvLyBtZWFucyB0
aGUgcHJvZ3JhbW1lciBtYWRlIGEgbWlzdGFrZSwgc28gbG9nIHRoZW0gYWZ0ZXIganVzdFxuXHQg
ICAgICAgICAgLy8gMTAwbXNcblx0ICAgICAgICAgIC8vIG90aGVyd2lzZSwgd2FpdCAyIHNlY29u
ZHMgdG8gc2VlIGlmIHRoZXkgZ2V0IGhhbmRsZWRcblx0ICAgICAgICAgIG1hdGNoV2hpdGVsaXN0
KGVyciwgREVGQVVMVF9XSElURUxJU1QpXG5cdCAgICAgICAgICAgID8gMTAwXG5cdCAgICAgICAg
ICAgIDogMjAwMFxuXHQgICAgICAgICksXG5cdCAgICAgICAgbG9nZ2VkOiBmYWxzZVxuXHQgICAg
ICB9O1xuXHQgICAgfVxuXHQgIH07XG5cdCAgZnVuY3Rpb24gb25VbmhhbmRsZWQoaWQpIHtcblx0
ICAgIGlmIChcblx0ICAgICAgb3B0aW9ucy5hbGxSZWplY3Rpb25zIHx8XG5cdCAgICAgIG1hdGNo
V2hpdGVsaXN0KFxuXHQgICAgICAgIHJlamVjdGlvbnNbaWRdLmVycm9yLFxuXHQgICAgICAgIG9w
dGlvbnMud2hpdGVsaXN0IHx8IERFRkFVTFRfV0hJVEVMSVNUXG5cdCAgICAgIClcblx0ICAgICkg
e1xuXHQgICAgICByZWplY3Rpb25zW2lkXS5kaXNwbGF5SWQgPSBkaXNwbGF5SWQrKztcblx0ICAg
ICAgaWYgKG9wdGlvbnMub25VbmhhbmRsZWQpIHtcblx0ICAgICAgICByZWplY3Rpb25zW2lkXS5s
b2dnZWQgPSB0cnVlO1xuXHQgICAgICAgIG9wdGlvbnMub25VbmhhbmRsZWQoXG5cdCAgICAgICAg
ICByZWplY3Rpb25zW2lkXS5kaXNwbGF5SWQsXG5cdCAgICAgICAgICByZWplY3Rpb25zW2lkXS5l
cnJvclxuXHQgICAgICAgICk7XG5cdCAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgcmVqZWN0aW9u
c1tpZF0ubG9nZ2VkID0gdHJ1ZTtcblx0ICAgICAgICBsb2dFcnJvcihcblx0ICAgICAgICAgIHJl
amVjdGlvbnNbaWRdLmRpc3BsYXlJZCxcblx0ICAgICAgICAgIHJlamVjdGlvbnNbaWRdLmVycm9y
XG5cdCAgICAgICAgKTtcblx0ICAgICAgfVxuXHQgICAgfVxuXHQgIH1cblx0ICBmdW5jdGlvbiBv
bkhhbmRsZWQoaWQpIHtcblx0ICAgIGlmIChyZWplY3Rpb25zW2lkXS5sb2dnZWQpIHtcblx0ICAg
ICAgaWYgKG9wdGlvbnMub25IYW5kbGVkKSB7XG5cdCAgICAgICAgb3B0aW9ucy5vbkhhbmRsZWQo
cmVqZWN0aW9uc1tpZF0uZGlzcGxheUlkLCByZWplY3Rpb25zW2lkXS5lcnJvcik7XG5cdCAgICAg
IH0gZWxzZSBpZiAoIXJlamVjdGlvbnNbaWRdLm9uVW5oYW5kbGVkKSB7XG5cdCAgICAgICAgY29u
c29sZS53YXJuKFxuXHQgICAgICAgICAgJ1Byb21pc2UgUmVqZWN0aW9uIEhhbmRsZWQgKGlkOiAn
ICsgcmVqZWN0aW9uc1tpZF0uZGlzcGxheUlkICsgJyk6J1xuXHQgICAgICAgICk7XG5cdCAgICAg
ICAgY29uc29sZS53YXJuKFxuXHQgICAgICAgICAgJyAgVGhpcyBtZWFucyB5b3UgY2FuIGlnbm9y
ZSBhbnkgcHJldmlvdXMgbWVzc2FnZXMgb2YgdGhlIGZvcm0gXCJQb3NzaWJsZSBVbmhhbmRsZWQg
UHJvbWlzZSBSZWplY3Rpb25cIiB3aXRoIGlkICcgK1xuXHQgICAgICAgICAgcmVqZWN0aW9uc1tp
ZF0uZGlzcGxheUlkICsgJy4nXG5cdCAgICAgICAgKTtcblx0ICAgICAgfVxuXHQgICAgfVxuXHQg
IH1cblx0fVxuXHRcblx0ZnVuY3Rpb24gbG9nRXJyb3IoaWQsIGVycm9yKSB7XG5cdCAgY29uc29s
ZS53YXJuKCdQb3NzaWJsZSBVbmhhbmRsZWQgUHJvbWlzZSBSZWplY3Rpb24gKGlkOiAnICsgaWQg
KyAnKTonKTtcblx0ICB2YXIgZXJyU3RyID0gKGVycm9yICYmIChlcnJvci5zdGFjayB8fCBlcnJv
cikpICsgJyc7XG5cdCAgZXJyU3RyLnNwbGl0KCdcXG4nKS5mb3JFYWNoKGZ1bmN0aW9uIChsaW5l
KSB7XG5cdCAgICBjb25zb2xlLndhcm4oJyAgJyArIGxpbmUpO1xuXHQgIH0pO1xuXHR9XG5cdFxu
XHRmdW5jdGlvbiBtYXRjaFdoaXRlbGlzdChlcnJvciwgbGlzdCkge1xuXHQgIHJldHVybiBsaXN0
LnNvbWUoZnVuY3Rpb24gKGNscykge1xuXHQgICAgcmV0dXJuIGVycm9yIGluc3RhbmNlb2YgY2xz
O1xuXHQgIH0pO1xuXHR9XG5cbi8qKiovIH0sXG4vKiAyMTEgKi9cbi8qKiovIGZ1bmN0aW9uKG1v
ZHVsZSwgZXhwb3J0cykge1xuXG5cdG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24obW9kdWxlKSB7
XHJcblx0XHRpZighbW9kdWxlLndlYnBhY2tQb2x5ZmlsbCkge1xyXG5cdFx0XHRtb2R1bGUuZGVw
cmVjYXRlID0gZnVuY3Rpb24oKSB7fTtcclxuXHRcdFx0bW9kdWxlLnBhdGhzID0gW107XHJcblx0
XHRcdC8vIG1vZHVsZS5wYXJlbnQgPSB1bmRlZmluZWQgYnkgZGVmYXVsdFxyXG5cdFx0XHRtb2R1
bGUuY2hpbGRyZW4gPSBbXTtcclxuXHRcdFx0bW9kdWxlLndlYnBhY2tQb2x5ZmlsbCA9IDE7XHJc
blx0XHR9XHJcblx0XHRyZXR1cm4gbW9kdWxlO1xyXG5cdH1cclxuXG5cbi8qKiovIH0sXG4vKiAy
MTIgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5cdChmdW5jdGlvbihz
ZWxmKSB7XG5cdCAgJ3VzZSBzdHJpY3QnO1xuXHRcblx0ICBpZiAoc2VsZi5mZXRjaCkge1xuXHQg
ICAgcmV0dXJuXG5cdCAgfVxuXHRcblx0ICB2YXIgc3VwcG9ydCA9IHtcblx0ICAgIHNlYXJjaFBh
cmFtczogJ1VSTFNlYXJjaFBhcmFtcycgaW4gc2VsZixcblx0ICAgIGl0ZXJhYmxlOiAnU3ltYm9s
JyBpbiBzZWxmICYmICdpdGVyYXRvcicgaW4gU3ltYm9sLFxuXHQgICAgYmxvYjogJ0ZpbGVSZWFk
ZXInIGluIHNlbGYgJiYgJ0Jsb2InIGluIHNlbGYgJiYgKGZ1bmN0aW9uKCkge1xuXHQgICAgICB0
cnkge1xuXHQgICAgICAgIG5ldyBCbG9iKClcblx0ICAgICAgICByZXR1cm4gdHJ1ZVxuXHQgICAg
ICB9IGNhdGNoKGUpIHtcblx0ICAgICAgICByZXR1cm4gZmFsc2Vcblx0ICAgICAgfVxuXHQgICAg
fSkoKSxcblx0ICAgIGZvcm1EYXRhOiAnRm9ybURhdGEnIGluIHNlbGYsXG5cdCAgICBhcnJheUJ1
ZmZlcjogJ0FycmF5QnVmZmVyJyBpbiBzZWxmXG5cdCAgfVxuXHRcblx0ICBmdW5jdGlvbiBub3Jt
YWxpemVOYW1lKG5hbWUpIHtcblx0ICAgIGlmICh0eXBlb2YgbmFtZSAhPT0gJ3N0cmluZycpIHtc
blx0ICAgICAgbmFtZSA9IFN0cmluZyhuYW1lKVxuXHQgICAgfVxuXHQgICAgaWYgKC9bXmEtejAt
OVxcLSMkJSYnKisuXFxeX2B8fl0vaS50ZXN0KG5hbWUpKSB7XG5cdCAgICAgIHRocm93IG5ldyBU
eXBlRXJyb3IoJ0ludmFsaWQgY2hhcmFjdGVyIGluIGhlYWRlciBmaWVsZCBuYW1lJylcblx0ICAg
IH1cblx0ICAgIHJldHVybiBuYW1lLnRvTG93ZXJDYXNlKClcblx0ICB9XG5cdFxuXHQgIGZ1bmN0
aW9uIG5vcm1hbGl6ZVZhbHVlKHZhbHVlKSB7XG5cdCAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAn
c3RyaW5nJykge1xuXHQgICAgICB2YWx1ZSA9IFN0cmluZyh2YWx1ZSlcblx0ICAgIH1cblx0ICAg
IHJldHVybiB2YWx1ZVxuXHQgIH1cblx0XG5cdCAgLy8gQnVpbGQgYSBkZXN0cnVjdGl2ZSBpdGVy
YXRvciBmb3IgdGhlIHZhbHVlIGxpc3Rcblx0ICBmdW5jdGlvbiBpdGVyYXRvckZvcihpdGVtcykg
e1xuXHQgICAgdmFyIGl0ZXJhdG9yID0ge1xuXHQgICAgICBuZXh0OiBmdW5jdGlvbigpIHtcblx0
ICAgICAgICB2YXIgdmFsdWUgPSBpdGVtcy5zaGlmdCgpXG5cdCAgICAgICAgcmV0dXJuIHtkb25l
OiB2YWx1ZSA9PT0gdW5kZWZpbmVkLCB2YWx1ZTogdmFsdWV9XG5cdCAgICAgIH1cblx0ICAgIH1c
blx0XG5cdCAgICBpZiAoc3VwcG9ydC5pdGVyYWJsZSkge1xuXHQgICAgICBpdGVyYXRvcltTeW1i
b2wuaXRlcmF0b3JdID0gZnVuY3Rpb24oKSB7XG5cdCAgICAgICAgcmV0dXJuIGl0ZXJhdG9yXG5c
dCAgICAgIH1cblx0ICAgIH1cblx0XG5cdCAgICByZXR1cm4gaXRlcmF0b3Jcblx0ICB9XG5cdFxu
XHQgIGZ1bmN0aW9uIEhlYWRlcnMoaGVhZGVycykge1xuXHQgICAgdGhpcy5tYXAgPSB7fVxuXHRc
blx0ICAgIGlmIChoZWFkZXJzIGluc3RhbmNlb2YgSGVhZGVycykge1xuXHQgICAgICBoZWFkZXJz
LmZvckVhY2goZnVuY3Rpb24odmFsdWUsIG5hbWUpIHtcblx0ICAgICAgICB0aGlzLmFwcGVuZChu
YW1lLCB2YWx1ZSlcblx0ICAgICAgfSwgdGhpcylcblx0XG5cdCAgICB9IGVsc2UgaWYgKGhlYWRl
cnMpIHtcblx0ICAgICAgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoaGVhZGVycykuZm9yRWFj
aChmdW5jdGlvbihuYW1lKSB7XG5cdCAgICAgICAgdGhpcy5hcHBlbmQobmFtZSwgaGVhZGVyc1tu
YW1lXSlcblx0ICAgICAgfSwgdGhpcylcblx0ICAgIH1cblx0ICB9XG5cdFxuXHQgIEhlYWRlcnMu
cHJvdG90eXBlLmFwcGVuZCA9IGZ1bmN0aW9uKG5hbWUsIHZhbHVlKSB7XG5cdCAgICBuYW1lID0g
bm9ybWFsaXplTmFtZShuYW1lKVxuXHQgICAgdmFsdWUgPSBub3JtYWxpemVWYWx1ZSh2YWx1ZSlc
blx0ICAgIHZhciBsaXN0ID0gdGhpcy5tYXBbbmFtZV1cblx0ICAgIGlmICghbGlzdCkge1xuXHQg
ICAgICBsaXN0ID0gW11cblx0ICAgICAgdGhpcy5tYXBbbmFtZV0gPSBsaXN0XG5cdCAgICB9XG5c
dCAgICBsaXN0LnB1c2godmFsdWUpXG5cdCAgfVxuXHRcblx0ICBIZWFkZXJzLnByb3RvdHlwZVsn
ZGVsZXRlJ10gPSBmdW5jdGlvbihuYW1lKSB7XG5cdCAgICBkZWxldGUgdGhpcy5tYXBbbm9ybWFs
aXplTmFtZShuYW1lKV1cblx0ICB9XG5cdFxuXHQgIEhlYWRlcnMucHJvdG90eXBlLmdldCA9IGZ1
bmN0aW9uKG5hbWUpIHtcblx0ICAgIHZhciB2YWx1ZXMgPSB0aGlzLm1hcFtub3JtYWxpemVOYW1l
KG5hbWUpXVxuXHQgICAgcmV0dXJuIHZhbHVlcyA/IHZhbHVlc1swXSA6IG51bGxcblx0ICB9XG5c
dFxuXHQgIEhlYWRlcnMucHJvdG90eXBlLmdldEFsbCA9IGZ1bmN0aW9uKG5hbWUpIHtcblx0ICAg
IHJldHVybiB0aGlzLm1hcFtub3JtYWxpemVOYW1lKG5hbWUpXSB8fCBbXVxuXHQgIH1cblx0XG5c
dCAgSGVhZGVycy5wcm90b3R5cGUuaGFzID0gZnVuY3Rpb24obmFtZSkge1xuXHQgICAgcmV0dXJu
IHRoaXMubWFwLmhhc093blByb3BlcnR5KG5vcm1hbGl6ZU5hbWUobmFtZSkpXG5cdCAgfVxuXHRc
blx0ICBIZWFkZXJzLnByb3RvdHlwZS5zZXQgPSBmdW5jdGlvbihuYW1lLCB2YWx1ZSkge1xuXHQg
ICAgdGhpcy5tYXBbbm9ybWFsaXplTmFtZShuYW1lKV0gPSBbbm9ybWFsaXplVmFsdWUodmFsdWUp
XVxuXHQgIH1cblx0XG5cdCAgSGVhZGVycy5wcm90b3R5cGUuZm9yRWFjaCA9IGZ1bmN0aW9uKGNh
bGxiYWNrLCB0aGlzQXJnKSB7XG5cdCAgICBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0aGlz
Lm1hcCkuZm9yRWFjaChmdW5jdGlvbihuYW1lKSB7XG5cdCAgICAgIHRoaXMubWFwW25hbWVdLmZv
ckVhY2goZnVuY3Rpb24odmFsdWUpIHtcblx0ICAgICAgICBjYWxsYmFjay5jYWxsKHRoaXNBcmcs
IHZhbHVlLCBuYW1lLCB0aGlzKVxuXHQgICAgICB9LCB0aGlzKVxuXHQgICAgfSwgdGhpcylcblx0
ICB9XG5cdFxuXHQgIEhlYWRlcnMucHJvdG90eXBlLmtleXMgPSBmdW5jdGlvbigpIHtcblx0ICAg
IHZhciBpdGVtcyA9IFtdXG5cdCAgICB0aGlzLmZvckVhY2goZnVuY3Rpb24odmFsdWUsIG5hbWUp
IHsgaXRlbXMucHVzaChuYW1lKSB9KVxuXHQgICAgcmV0dXJuIGl0ZXJhdG9yRm9yKGl0ZW1zKVxu
XHQgIH1cblx0XG5cdCAgSGVhZGVycy5wcm90b3R5cGUudmFsdWVzID0gZnVuY3Rpb24oKSB7XG5c
dCAgICB2YXIgaXRlbXMgPSBbXVxuXHQgICAgdGhpcy5mb3JFYWNoKGZ1bmN0aW9uKHZhbHVlKSB7
IGl0ZW1zLnB1c2godmFsdWUpIH0pXG5cdCAgICByZXR1cm4gaXRlcmF0b3JGb3IoaXRlbXMpXG5c
dCAgfVxuXHRcblx0ICBIZWFkZXJzLnByb3RvdHlwZS5lbnRyaWVzID0gZnVuY3Rpb24oKSB7XG5c
dCAgICB2YXIgaXRlbXMgPSBbXVxuXHQgICAgdGhpcy5mb3JFYWNoKGZ1bmN0aW9uKHZhbHVlLCBu
YW1lKSB7IGl0ZW1zLnB1c2goW25hbWUsIHZhbHVlXSkgfSlcblx0ICAgIHJldHVybiBpdGVyYXRv
ckZvcihpdGVtcylcblx0ICB9XG5cdFxuXHQgIGlmIChzdXBwb3J0Lml0ZXJhYmxlKSB7XG5cdCAg
ICBIZWFkZXJzLnByb3RvdHlwZVtTeW1ib2wuaXRlcmF0b3JdID0gSGVhZGVycy5wcm90b3R5cGUu
ZW50cmllc1xuXHQgIH1cblx0XG5cdCAgZnVuY3Rpb24gY29uc3VtZWQoYm9keSkge1xuXHQgICAg
aWYgKGJvZHkuYm9keVVzZWQpIHtcblx0ICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBU
eXBlRXJyb3IoJ0FscmVhZHkgcmVhZCcpKVxuXHQgICAgfVxuXHQgICAgYm9keS5ib2R5VXNlZCA9
IHRydWVcblx0ICB9XG5cdFxuXHQgIGZ1bmN0aW9uIGZpbGVSZWFkZXJSZWFkeShyZWFkZXIpIHtc
blx0ICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcblx0
ICAgICAgcmVhZGVyLm9ubG9hZCA9IGZ1bmN0aW9uKCkge1xuXHQgICAgICAgIHJlc29sdmUocmVh
ZGVyLnJlc3VsdClcblx0ICAgICAgfVxuXHQgICAgICByZWFkZXIub25lcnJvciA9IGZ1bmN0aW9u
KCkge1xuXHQgICAgICAgIHJlamVjdChyZWFkZXIuZXJyb3IpXG5cdCAgICAgIH1cblx0ICAgIH0p
XG5cdCAgfVxuXHRcblx0ICBmdW5jdGlvbiByZWFkQmxvYkFzQXJyYXlCdWZmZXIoYmxvYikge1xu
XHQgICAgdmFyIHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKClcblx0ICAgIHJlYWRlci5yZWFkQXNB
cnJheUJ1ZmZlcihibG9iKVxuXHQgICAgcmV0dXJuIGZpbGVSZWFkZXJSZWFkeShyZWFkZXIpXG5c
dCAgfVxuXHRcblx0ICBmdW5jdGlvbiByZWFkQmxvYkFzVGV4dChibG9iKSB7XG5cdCAgICB2YXIg
cmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKVxuXHQgICAgcmVhZGVyLnJlYWRBc1RleHQoYmxvYilc
blx0ICAgIHJldHVybiBmaWxlUmVhZGVyUmVhZHkocmVhZGVyKVxuXHQgIH1cblx0XG5cdCAgZnVu
Y3Rpb24gQm9keSgpIHtcblx0ICAgIHRoaXMuYm9keVVzZWQgPSBmYWxzZVxuXHRcblx0ICAgIHRo
aXMuX2luaXRCb2R5ID0gZnVuY3Rpb24oYm9keSkge1xuXHQgICAgICB0aGlzLl9ib2R5SW5pdCA9
IGJvZHlcblx0ICAgICAgaWYgKHR5cGVvZiBib2R5ID09PSAnc3RyaW5nJykge1xuXHQgICAgICAg
IHRoaXMuX2JvZHlUZXh0ID0gYm9keVxuXHQgICAgICB9IGVsc2UgaWYgKHN1cHBvcnQuYmxvYiAm
JiBCbG9iLnByb3RvdHlwZS5pc1Byb3RvdHlwZU9mKGJvZHkpKSB7XG5cdCAgICAgICAgdGhpcy5f
Ym9keUJsb2IgPSBib2R5XG5cdCAgICAgIH0gZWxzZSBpZiAoc3VwcG9ydC5mb3JtRGF0YSAmJiBG
b3JtRGF0YS5wcm90b3R5cGUuaXNQcm90b3R5cGVPZihib2R5KSkge1xuXHQgICAgICAgIHRoaXMu
X2JvZHlGb3JtRGF0YSA9IGJvZHlcblx0ICAgICAgfSBlbHNlIGlmIChzdXBwb3J0LnNlYXJjaFBh
cmFtcyAmJiBVUkxTZWFyY2hQYXJhbXMucHJvdG90eXBlLmlzUHJvdG90eXBlT2YoYm9keSkpIHtc
blx0ICAgICAgICB0aGlzLl9ib2R5VGV4dCA9IGJvZHkudG9TdHJpbmcoKVxuXHQgICAgICB9IGVs
c2UgaWYgKCFib2R5KSB7XG5cdCAgICAgICAgdGhpcy5fYm9keVRleHQgPSAnJ1xuXHQgICAgICB9
IGVsc2UgaWYgKHN1cHBvcnQuYXJyYXlCdWZmZXIgJiYgQXJyYXlCdWZmZXIucHJvdG90eXBlLmlz
UHJvdG90eXBlT2YoYm9keSkpIHtcblx0ICAgICAgICAvLyBPbmx5IHN1cHBvcnQgQXJyYXlCdWZm
ZXJzIGZvciBQT1NUIG1ldGhvZC5cblx0ICAgICAgICAvLyBSZWNlaXZpbmcgQXJyYXlCdWZmZXJz
IGhhcHBlbnMgdmlhIEJsb2JzLCBpbnN0ZWFkLlxuXHQgICAgICB9IGVsc2Uge1xuXHQgICAgICAg
IHRocm93IG5ldyBFcnJvcigndW5zdXBwb3J0ZWQgQm9keUluaXQgdHlwZScpXG5cdCAgICAgIH1c
blx0XG5cdCAgICAgIGlmICghdGhpcy5oZWFkZXJzLmdldCgnY29udGVudC10eXBlJykpIHtcblx0
ICAgICAgICBpZiAodHlwZW9mIGJvZHkgPT09ICdzdHJpbmcnKSB7XG5cdCAgICAgICAgICB0aGlz
LmhlYWRlcnMuc2V0KCdjb250ZW50LXR5cGUnLCAndGV4dC9wbGFpbjtjaGFyc2V0PVVURi04Jylc
blx0ICAgICAgICB9IGVsc2UgaWYgKHRoaXMuX2JvZHlCbG9iICYmIHRoaXMuX2JvZHlCbG9iLnR5
cGUpIHtcblx0ICAgICAgICAgIHRoaXMuaGVhZGVycy5zZXQoJ2NvbnRlbnQtdHlwZScsIHRoaXMu
X2JvZHlCbG9iLnR5cGUpXG5cdCAgICAgICAgfSBlbHNlIGlmIChzdXBwb3J0LnNlYXJjaFBhcmFt
cyAmJiBVUkxTZWFyY2hQYXJhbXMucHJvdG90eXBlLmlzUHJvdG90eXBlT2YoYm9keSkpIHtcblx0
ICAgICAgICAgIHRoaXMuaGVhZGVycy5zZXQoJ2NvbnRlbnQtdHlwZScsICdhcHBsaWNhdGlvbi94
LXd3dy1mb3JtLXVybGVuY29kZWQ7Y2hhcnNldD1VVEYtOCcpXG5cdCAgICAgICAgfVxuXHQgICAg
ICB9XG5cdCAgICB9XG5cdFxuXHQgICAgaWYgKHN1cHBvcnQuYmxvYikge1xuXHQgICAgICB0aGlz
LmJsb2IgPSBmdW5jdGlvbigpIHtcblx0ICAgICAgICB2YXIgcmVqZWN0ZWQgPSBjb25zdW1lZCh0
aGlzKVxuXHQgICAgICAgIGlmIChyZWplY3RlZCkge1xuXHQgICAgICAgICAgcmV0dXJuIHJlamVj
dGVkXG5cdCAgICAgICAgfVxuXHRcblx0ICAgICAgICBpZiAodGhpcy5fYm9keUJsb2IpIHtcblx0
ICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodGhpcy5fYm9keUJsb2IpXG5cdCAgICAg
ICAgfSBlbHNlIGlmICh0aGlzLl9ib2R5Rm9ybURhdGEpIHtcblx0ICAgICAgICAgIHRocm93IG5l
dyBFcnJvcignY291bGQgbm90IHJlYWQgRm9ybURhdGEgYm9keSBhcyBibG9iJylcblx0ICAgICAg
ICB9IGVsc2Uge1xuXHQgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShuZXcgQmxvYihb
dGhpcy5fYm9keVRleHRdKSlcblx0ICAgICAgICB9XG5cdCAgICAgIH1cblx0XG5cdCAgICAgIHRo
aXMuYXJyYXlCdWZmZXIgPSBmdW5jdGlvbigpIHtcblx0ICAgICAgICByZXR1cm4gdGhpcy5ibG9i
KCkudGhlbihyZWFkQmxvYkFzQXJyYXlCdWZmZXIpXG5cdCAgICAgIH1cblx0XG5cdCAgICAgIHRo
aXMudGV4dCA9IGZ1bmN0aW9uKCkge1xuXHQgICAgICAgIHZhciByZWplY3RlZCA9IGNvbnN1bWVk
KHRoaXMpXG5cdCAgICAgICAgaWYgKHJlamVjdGVkKSB7XG5cdCAgICAgICAgICByZXR1cm4gcmVq
ZWN0ZWRcblx0ICAgICAgICB9XG5cdFxuXHQgICAgICAgIGlmICh0aGlzLl9ib2R5QmxvYikge1xu
XHQgICAgICAgICAgcmV0dXJuIHJlYWRCbG9iQXNUZXh0KHRoaXMuX2JvZHlCbG9iKVxuXHQgICAg
ICAgIH0gZWxzZSBpZiAodGhpcy5fYm9keUZvcm1EYXRhKSB7XG5cdCAgICAgICAgICB0aHJvdyBu
ZXcgRXJyb3IoJ2NvdWxkIG5vdCByZWFkIEZvcm1EYXRhIGJvZHkgYXMgdGV4dCcpXG5cdCAgICAg
ICAgfSBlbHNlIHtcblx0ICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodGhpcy5fYm9k
eVRleHQpXG5cdCAgICAgICAgfVxuXHQgICAgICB9XG5cdCAgICB9IGVsc2Uge1xuXHQgICAgICB0
aGlzLnRleHQgPSBmdW5jdGlvbigpIHtcblx0ICAgICAgICB2YXIgcmVqZWN0ZWQgPSBjb25zdW1l
ZCh0aGlzKVxuXHQgICAgICAgIHJldHVybiByZWplY3RlZCA/IHJlamVjdGVkIDogUHJvbWlzZS5y
ZXNvbHZlKHRoaXMuX2JvZHlUZXh0KVxuXHQgICAgICB9XG5cdCAgICB9XG5cdFxuXHQgICAgaWYg
KHN1cHBvcnQuZm9ybURhdGEpIHtcblx0ICAgICAgdGhpcy5mb3JtRGF0YSA9IGZ1bmN0aW9uKCkg
e1xuXHQgICAgICAgIHJldHVybiB0aGlzLnRleHQoKS50aGVuKGRlY29kZSlcblx0ICAgICAgfVxu
XHQgICAgfVxuXHRcblx0ICAgIHRoaXMuanNvbiA9IGZ1bmN0aW9uKCkge1xuXHQgICAgICByZXR1
cm4gdGhpcy50ZXh0KCkudGhlbihKU09OLnBhcnNlKVxuXHQgICAgfVxuXHRcblx0ICAgIHJldHVy
biB0aGlzXG5cdCAgfVxuXHRcblx0ICAvLyBIVFRQIG1ldGhvZHMgd2hvc2UgY2FwaXRhbGl6YXRp
b24gc2hvdWxkIGJlIG5vcm1hbGl6ZWRcblx0ICB2YXIgbWV0aG9kcyA9IFsnREVMRVRFJywgJ0dF
VCcsICdIRUFEJywgJ09QVElPTlMnLCAnUE9TVCcsICdQVVQnXVxuXHRcblx0ICBmdW5jdGlvbiBu
b3JtYWxpemVNZXRob2QobWV0aG9kKSB7XG5cdCAgICB2YXIgdXBjYXNlZCA9IG1ldGhvZC50b1Vw
cGVyQ2FzZSgpXG5cdCAgICByZXR1cm4gKG1ldGhvZHMuaW5kZXhPZih1cGNhc2VkKSA+IC0xKSA/
IHVwY2FzZWQgOiBtZXRob2Rcblx0ICB9XG5cdFxuXHQgIGZ1bmN0aW9uIFJlcXVlc3QoaW5wdXQs
IG9wdGlvbnMpIHtcblx0ICAgIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9XG5cdCAgICB2YXIgYm9k
eSA9IG9wdGlvbnMuYm9keVxuXHQgICAgaWYgKFJlcXVlc3QucHJvdG90eXBlLmlzUHJvdG90eXBl
T2YoaW5wdXQpKSB7XG5cdCAgICAgIGlmIChpbnB1dC5ib2R5VXNlZCkge1xuXHQgICAgICAgIHRo
cm93IG5ldyBUeXBlRXJyb3IoJ0FscmVhZHkgcmVhZCcpXG5cdCAgICAgIH1cblx0ICAgICAgdGhp
cy51cmwgPSBpbnB1dC51cmxcblx0ICAgICAgdGhpcy5jcmVkZW50aWFscyA9IGlucHV0LmNyZWRl
bnRpYWxzXG5cdCAgICAgIGlmICghb3B0aW9ucy5oZWFkZXJzKSB7XG5cdCAgICAgICAgdGhpcy5o
ZWFkZXJzID0gbmV3IEhlYWRlcnMoaW5wdXQuaGVhZGVycylcblx0ICAgICAgfVxuXHQgICAgICB0
aGlzLm1ldGhvZCA9IGlucHV0Lm1ldGhvZFxuXHQgICAgICB0aGlzLm1vZGUgPSBpbnB1dC5tb2Rl
XG5cdCAgICAgIGlmICghYm9keSkge1xuXHQgICAgICAgIGJvZHkgPSBpbnB1dC5fYm9keUluaXRc
blx0ICAgICAgICBpbnB1dC5ib2R5VXNlZCA9IHRydWVcblx0ICAgICAgfVxuXHQgICAgfSBlbHNl
IHtcblx0ICAgICAgdGhpcy51cmwgPSBpbnB1dFxuXHQgICAgfVxuXHRcblx0ICAgIHRoaXMuY3Jl
ZGVudGlhbHMgPSBvcHRpb25zLmNyZWRlbnRpYWxzIHx8IHRoaXMuY3JlZGVudGlhbHMgfHwgJ29t
aXQnXG5cdCAgICBpZiAob3B0aW9ucy5oZWFkZXJzIHx8ICF0aGlzLmhlYWRlcnMpIHtcblx0ICAg
ICAgdGhpcy5oZWFkZXJzID0gbmV3IEhlYWRlcnMob3B0aW9ucy5oZWFkZXJzKVxuXHQgICAgfVxu
XHQgICAgdGhpcy5tZXRob2QgPSBub3JtYWxpemVNZXRob2Qob3B0aW9ucy5tZXRob2QgfHwgdGhp
cy5tZXRob2QgfHwgJ0dFVCcpXG5cdCAgICB0aGlzLm1vZGUgPSBvcHRpb25zLm1vZGUgfHwgdGhp
cy5tb2RlIHx8IG51bGxcblx0ICAgIHRoaXMucmVmZXJyZXIgPSBudWxsXG5cdFxuXHQgICAgaWYg
KCh0aGlzLm1ldGhvZCA9PT0gJ0dFVCcgfHwgdGhpcy5tZXRob2QgPT09ICdIRUFEJykgJiYgYm9k
eSkge1xuXHQgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdCb2R5IG5vdCBhbGxvd2VkIGZvciBH
RVQgb3IgSEVBRCByZXF1ZXN0cycpXG5cdCAgICB9XG5cdCAgICB0aGlzLl9pbml0Qm9keShib2R5
KVxuXHQgIH1cblx0XG5cdCAgUmVxdWVzdC5wcm90b3R5cGUuY2xvbmUgPSBmdW5jdGlvbigpIHtc
blx0ICAgIHJldHVybiBuZXcgUmVxdWVzdCh0aGlzKVxuXHQgIH1cblx0XG5cdCAgZnVuY3Rpb24g
ZGVjb2RlKGJvZHkpIHtcblx0ICAgIHZhciBmb3JtID0gbmV3IEZvcm1EYXRhKClcblx0ICAgIGJv
ZHkudHJpbSgpLnNwbGl0KCcmJykuZm9yRWFjaChmdW5jdGlvbihieXRlcykge1xuXHQgICAgICBp
ZiAoYnl0ZXMpIHtcblx0ICAgICAgICB2YXIgc3BsaXQgPSBieXRlcy5zcGxpdCgnPScpXG5cdCAg
ICAgICAgdmFyIG5hbWUgPSBzcGxpdC5zaGlmdCgpLnJlcGxhY2UoL1xcKy9nLCAnICcpXG5cdCAg
ICAgICAgdmFyIHZhbHVlID0gc3BsaXQuam9pbignPScpLnJlcGxhY2UoL1xcKy9nLCAnICcpXG5c
dCAgICAgICAgZm9ybS5hcHBlbmQoZGVjb2RlVVJJQ29tcG9uZW50KG5hbWUpLCBkZWNvZGVVUklD
b21wb25lbnQodmFsdWUpKVxuXHQgICAgICB9XG5cdCAgICB9KVxuXHQgICAgcmV0dXJuIGZvcm1c
blx0ICB9XG5cdFxuXHQgIGZ1bmN0aW9uIGhlYWRlcnMoeGhyKSB7XG5cdCAgICB2YXIgaGVhZCA9
IG5ldyBIZWFkZXJzKClcblx0ICAgIHZhciBwYWlycyA9ICh4aHIuZ2V0QWxsUmVzcG9uc2VIZWFk
ZXJzKCkgfHwgJycpLnRyaW0oKS5zcGxpdCgnXFxuJylcblx0ICAgIHBhaXJzLmZvckVhY2goZnVu
Y3Rpb24oaGVhZGVyKSB7XG5cdCAgICAgIHZhciBzcGxpdCA9IGhlYWRlci50cmltKCkuc3BsaXQo
JzonKVxuXHQgICAgICB2YXIga2V5ID0gc3BsaXQuc2hpZnQoKS50cmltKClcblx0ICAgICAgdmFy
IHZhbHVlID0gc3BsaXQuam9pbignOicpLnRyaW0oKVxuXHQgICAgICBoZWFkLmFwcGVuZChrZXks
IHZhbHVlKVxuXHQgICAgfSlcblx0ICAgIHJldHVybiBoZWFkXG5cdCAgfVxuXHRcblx0ICBCb2R5
LmNhbGwoUmVxdWVzdC5wcm90b3R5cGUpXG5cdFxuXHQgIGZ1bmN0aW9uIFJlc3BvbnNlKGJvZHlJ
bml0LCBvcHRpb25zKSB7XG5cdCAgICBpZiAoIW9wdGlvbnMpIHtcblx0ICAgICAgb3B0aW9ucyA9
IHt9XG5cdCAgICB9XG5cdFxuXHQgICAgdGhpcy50eXBlID0gJ2RlZmF1bHQnXG5cdCAgICB0aGlz
LnN0YXR1cyA9IG9wdGlvbnMuc3RhdHVzXG5cdCAgICB0aGlzLm9rID0gdGhpcy5zdGF0dXMgPj0g
MjAwICYmIHRoaXMuc3RhdHVzIDwgMzAwXG5cdCAgICB0aGlzLnN0YXR1c1RleHQgPSBvcHRpb25z
LnN0YXR1c1RleHRcblx0ICAgIHRoaXMuaGVhZGVycyA9IG9wdGlvbnMuaGVhZGVycyBpbnN0YW5j
ZW9mIEhlYWRlcnMgPyBvcHRpb25zLmhlYWRlcnMgOiBuZXcgSGVhZGVycyhvcHRpb25zLmhlYWRl
cnMpXG5cdCAgICB0aGlzLnVybCA9IG9wdGlvbnMudXJsIHx8ICcnXG5cdCAgICB0aGlzLl9pbml0
Qm9keShib2R5SW5pdClcblx0ICB9XG5cdFxuXHQgIEJvZHkuY2FsbChSZXNwb25zZS5wcm90b3R5
cGUpXG5cdFxuXHQgIFJlc3BvbnNlLnByb3RvdHlwZS5jbG9uZSA9IGZ1bmN0aW9uKCkge1xuXHQg
ICAgcmV0dXJuIG5ldyBSZXNwb25zZSh0aGlzLl9ib2R5SW5pdCwge1xuXHQgICAgICBzdGF0dXM6
IHRoaXMuc3RhdHVzLFxuXHQgICAgICBzdGF0dXNUZXh0OiB0aGlzLnN0YXR1c1RleHQsXG5cdCAg
ICAgIGhlYWRlcnM6IG5ldyBIZWFkZXJzKHRoaXMuaGVhZGVycyksXG5cdCAgICAgIHVybDogdGhp
cy51cmxcblx0ICAgIH0pXG5cdCAgfVxuXHRcblx0ICBSZXNwb25zZS5lcnJvciA9IGZ1bmN0aW9u
KCkge1xuXHQgICAgdmFyIHJlc3BvbnNlID0gbmV3IFJlc3BvbnNlKG51bGwsIHtzdGF0dXM6IDAs
IHN0YXR1c1RleHQ6ICcnfSlcblx0ICAgIHJlc3BvbnNlLnR5cGUgPSAnZXJyb3InXG5cdCAgICBy
ZXR1cm4gcmVzcG9uc2Vcblx0ICB9XG5cdFxuXHQgIHZhciByZWRpcmVjdFN0YXR1c2VzID0gWzMw
MSwgMzAyLCAzMDMsIDMwNywgMzA4XVxuXHRcblx0ICBSZXNwb25zZS5yZWRpcmVjdCA9IGZ1bmN0
aW9uKHVybCwgc3RhdHVzKSB7XG5cdCAgICBpZiAocmVkaXJlY3RTdGF0dXNlcy5pbmRleE9mKHN0
YXR1cykgPT09IC0xKSB7XG5cdCAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdJbnZhbGlkIHN0
YXR1cyBjb2RlJylcblx0ICAgIH1cblx0XG5cdCAgICByZXR1cm4gbmV3IFJlc3BvbnNlKG51bGws
IHtzdGF0dXM6IHN0YXR1cywgaGVhZGVyczoge2xvY2F0aW9uOiB1cmx9fSlcblx0ICB9XG5cdFxu
XHQgIHNlbGYuSGVhZGVycyA9IEhlYWRlcnNcblx0ICBzZWxmLlJlcXVlc3QgPSBSZXF1ZXN0XG5c
dCAgc2VsZi5SZXNwb25zZSA9IFJlc3BvbnNlXG5cdFxuXHQgIHNlbGYuZmV0Y2ggPSBmdW5jdGlv
bihpbnB1dCwgaW5pdCkge1xuXHQgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29s
dmUsIHJlamVjdCkge1xuXHQgICAgICB2YXIgcmVxdWVzdFxuXHQgICAgICBpZiAoUmVxdWVzdC5w
cm90b3R5cGUuaXNQcm90b3R5cGVPZihpbnB1dCkgJiYgIWluaXQpIHtcblx0ICAgICAgICByZXF1
ZXN0ID0gaW5wdXRcblx0ICAgICAgfSBlbHNlIHtcblx0ICAgICAgICByZXF1ZXN0ID0gbmV3IFJl
cXVlc3QoaW5wdXQsIGluaXQpXG5cdCAgICAgIH1cblx0XG5cdCAgICAgIHZhciB4aHIgPSBuZXcg
WE1MSHR0cFJlcXVlc3QoKVxuXHRcblx0ICAgICAgZnVuY3Rpb24gcmVzcG9uc2VVUkwoKSB7XG5c
dCAgICAgICAgaWYgKCdyZXNwb25zZVVSTCcgaW4geGhyKSB7XG5cdCAgICAgICAgICByZXR1cm4g
eGhyLnJlc3BvbnNlVVJMXG5cdCAgICAgICAgfVxuXHRcblx0ICAgICAgICAvLyBBdm9pZCBzZWN1
cml0eSB3YXJuaW5ncyBvbiBnZXRSZXNwb25zZUhlYWRlciB3aGVuIG5vdCBhbGxvd2VkIGJ5IENP
UlNcblx0ICAgICAgICBpZiAoL15YLVJlcXVlc3QtVVJMOi9tLnRlc3QoeGhyLmdldEFsbFJlc3Bv
bnNlSGVhZGVycygpKSkge1xuXHQgICAgICAgICAgcmV0dXJuIHhoci5nZXRSZXNwb25zZUhlYWRl
cignWC1SZXF1ZXN0LVVSTCcpXG5cdCAgICAgICAgfVxuXHRcblx0ICAgICAgICByZXR1cm5cblx0
ICAgICAgfVxuXHRcblx0ICAgICAgeGhyLm9ubG9hZCA9IGZ1bmN0aW9uKCkge1xuXHQgICAgICAg
IHZhciBvcHRpb25zID0ge1xuXHQgICAgICAgICAgc3RhdHVzOiB4aHIuc3RhdHVzLFxuXHQgICAg
ICAgICAgc3RhdHVzVGV4dDogeGhyLnN0YXR1c1RleHQsXG5cdCAgICAgICAgICBoZWFkZXJzOiBo
ZWFkZXJzKHhociksXG5cdCAgICAgICAgICB1cmw6IHJlc3BvbnNlVVJMKClcblx0ICAgICAgICB9
XG5cdCAgICAgICAgdmFyIGJvZHkgPSAncmVzcG9uc2UnIGluIHhociA/IHhoci5yZXNwb25zZSA6
IHhoci5yZXNwb25zZVRleHRcblx0ICAgICAgICByZXNvbHZlKG5ldyBSZXNwb25zZShib2R5LCBv
cHRpb25zKSlcblx0ICAgICAgfVxuXHRcblx0ICAgICAgeGhyLm9uZXJyb3IgPSBmdW5jdGlvbigp
IHtcblx0ICAgICAgICByZWplY3QobmV3IFR5cGVFcnJvcignTmV0d29yayByZXF1ZXN0IGZhaWxl
ZCcpKVxuXHQgICAgICB9XG5cdFxuXHQgICAgICB4aHIub250aW1lb3V0ID0gZnVuY3Rpb24oKSB7
XG5cdCAgICAgICAgcmVqZWN0KG5ldyBUeXBlRXJyb3IoJ05ldHdvcmsgcmVxdWVzdCBmYWlsZWQn
KSlcblx0ICAgICAgfVxuXHRcblx0ICAgICAgeGhyLm9wZW4ocmVxdWVzdC5tZXRob2QsIHJlcXVl
c3QudXJsLCB0cnVlKVxuXHRcblx0ICAgICAgaWYgKHJlcXVlc3QuY3JlZGVudGlhbHMgPT09ICdp
bmNsdWRlJykge1xuXHQgICAgICAgIHhoci53aXRoQ3JlZGVudGlhbHMgPSB0cnVlXG5cdCAgICAg
IH1cblx0XG5cdCAgICAgIGlmICgncmVzcG9uc2VUeXBlJyBpbiB4aHIgJiYgc3VwcG9ydC5ibG9i
KSB7XG5cdCAgICAgICAgeGhyLnJlc3BvbnNlVHlwZSA9ICdibG9iJ1xuXHQgICAgICB9XG5cdFxu
XHQgICAgICByZXF1ZXN0LmhlYWRlcnMuZm9yRWFjaChmdW5jdGlvbih2YWx1ZSwgbmFtZSkge1xu
XHQgICAgICAgIHhoci5zZXRSZXF1ZXN0SGVhZGVyKG5hbWUsIHZhbHVlKVxuXHQgICAgICB9KVxu
XHRcblx0ICAgICAgeGhyLnNlbmQodHlwZW9mIHJlcXVlc3QuX2JvZHlJbml0ID09PSAndW5kZWZp
bmVkJyA/IG51bGwgOiByZXF1ZXN0Ll9ib2R5SW5pdClcblx0ICAgIH0pXG5cdCAgfVxuXHQgIHNl
bGYuZmV0Y2gucG9seWZpbGwgPSB0cnVlXG5cdH0pKHR5cGVvZiBzZWxmICE9PSAndW5kZWZpbmVk
JyA/IHNlbGYgOiB0aGlzKTtcblxuXG4vKioqLyB9LFxuLyogMjEzICovXG4zOCxcbi8qIDIxNCAq
L1xuWzIzMSwgMjNdLFxuLyogMjE1ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMs
IF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvKipcblx0ICogQ29weXJpZ2h0IDIwMTMtcHJl
c2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0
ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vu
c2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkg
b2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQg
cmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVj
dG9yeS5cblx0ICpcblx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHR2YXIgUG9vbGVk
Q2xhc3MgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIxNCk7XG5cdHZhciBSZWFjdEVsZW1lbnQgPSBf
X3dlYnBhY2tfcmVxdWlyZV9fKDE4KTtcblx0XG5cdHZhciBlbXB0eUZ1bmN0aW9uID0gX193ZWJw
YWNrX3JlcXVpcmVfXyg3KTtcblx0dmFyIHRyYXZlcnNlQWxsQ2hpbGRyZW4gPSBfX3dlYnBhY2tf
cmVxdWlyZV9fKDIyNCk7XG5cdFxuXHR2YXIgdHdvQXJndW1lbnRQb29sZXIgPSBQb29sZWRDbGFz
cy50d29Bcmd1bWVudFBvb2xlcjtcblx0dmFyIGZvdXJBcmd1bWVudFBvb2xlciA9IFBvb2xlZENs
YXNzLmZvdXJBcmd1bWVudFBvb2xlcjtcblx0XG5cdHZhciB1c2VyUHJvdmlkZWRLZXlFc2NhcGVS
ZWdleCA9IC9cXC8rL2c7XG5cdGZ1bmN0aW9uIGVzY2FwZVVzZXJQcm92aWRlZEtleSh0ZXh0KSB7
XG5cdCAgcmV0dXJuICgnJyArIHRleHQpLnJlcGxhY2UodXNlclByb3ZpZGVkS2V5RXNjYXBlUmVn
ZXgsICckJi8nKTtcblx0fVxuXHRcblx0LyoqXG5cdCAqIFBvb2xlZENsYXNzIHJlcHJlc2VudGlu
ZyB0aGUgYm9va2tlZXBpbmcgYXNzb2NpYXRlZCB3aXRoIHBlcmZvcm1pbmcgYSBjaGlsZFxuXHQg
KiB0cmF2ZXJzYWwuIEFsbG93cyBhdm9pZGluZyBiaW5kaW5nIGNhbGxiYWNrcy5cblx0ICpcblx0
ICogQGNvbnN0cnVjdG9yIEZvckVhY2hCb29rS2VlcGluZ1xuXHQgKiBAcGFyYW0geyFmdW5jdGlv
bn0gZm9yRWFjaEZ1bmN0aW9uIEZ1bmN0aW9uIHRvIHBlcmZvcm0gdHJhdmVyc2FsIHdpdGguXG5c
dCAqIEBwYXJhbSB7Pyp9IGZvckVhY2hDb250ZXh0IENvbnRleHQgdG8gcGVyZm9ybSBjb250ZXh0
IHdpdGguXG5cdCAqL1xuXHRmdW5jdGlvbiBGb3JFYWNoQm9va0tlZXBpbmcoZm9yRWFjaEZ1bmN0
aW9uLCBmb3JFYWNoQ29udGV4dCkge1xuXHQgIHRoaXMuZnVuYyA9IGZvckVhY2hGdW5jdGlvbjtc
blx0ICB0aGlzLmNvbnRleHQgPSBmb3JFYWNoQ29udGV4dDtcblx0ICB0aGlzLmNvdW50ID0gMDtc
blx0fVxuXHRGb3JFYWNoQm9va0tlZXBpbmcucHJvdG90eXBlLmRlc3RydWN0b3IgPSBmdW5jdGlv
biAoKSB7XG5cdCAgdGhpcy5mdW5jID0gbnVsbDtcblx0ICB0aGlzLmNvbnRleHQgPSBudWxsO1xu
XHQgIHRoaXMuY291bnQgPSAwO1xuXHR9O1xuXHRQb29sZWRDbGFzcy5hZGRQb29saW5nVG8oRm9y
RWFjaEJvb2tLZWVwaW5nLCB0d29Bcmd1bWVudFBvb2xlcik7XG5cdFxuXHRmdW5jdGlvbiBmb3JF
YWNoU2luZ2xlQ2hpbGQoYm9va0tlZXBpbmcsIGNoaWxkLCBuYW1lKSB7XG5cdCAgdmFyIGZ1bmMg
PSBib29rS2VlcGluZy5mdW5jLFxuXHQgICAgICBjb250ZXh0ID0gYm9va0tlZXBpbmcuY29udGV4
dDtcblx0XG5cdCAgZnVuYy5jYWxsKGNvbnRleHQsIGNoaWxkLCBib29rS2VlcGluZy5jb3VudCsr
KTtcblx0fVxuXHRcblx0LyoqXG5cdCAqIEl0ZXJhdGVzIHRocm91Z2ggY2hpbGRyZW4gdGhhdCBh
cmUgdHlwaWNhbGx5IHNwZWNpZmllZCBhcyBgcHJvcHMuY2hpbGRyZW5gLlxuXHQgKlxuXHQgKiBT
ZWUgaHR0cHM6Ly9mYWNlYm9vay5naXRodWIuaW8vcmVhY3QvZG9jcy90b3AtbGV2ZWwtYXBpLmh0
bWwjcmVhY3QuY2hpbGRyZW4uZm9yZWFjaFxuXHQgKlxuXHQgKiBUaGUgcHJvdmlkZWQgZm9yRWFj
aEZ1bmMoY2hpbGQsIGluZGV4KSB3aWxsIGJlIGNhbGxlZCBmb3IgZWFjaFxuXHQgKiBsZWFmIGNo
aWxkLlxuXHQgKlxuXHQgKiBAcGFyYW0gez8qfSBjaGlsZHJlbiBDaGlsZHJlbiB0cmVlIGNvbnRh
aW5lci5cblx0ICogQHBhcmFtIHtmdW5jdGlvbigqLCBpbnQpfSBmb3JFYWNoRnVuY1xuXHQgKiBA
cGFyYW0geyp9IGZvckVhY2hDb250ZXh0IENvbnRleHQgZm9yIGZvckVhY2hDb250ZXh0LlxuXHQg
Ki9cblx0ZnVuY3Rpb24gZm9yRWFjaENoaWxkcmVuKGNoaWxkcmVuLCBmb3JFYWNoRnVuYywgZm9y
RWFjaENvbnRleHQpIHtcblx0ICBpZiAoY2hpbGRyZW4gPT0gbnVsbCkge1xuXHQgICAgcmV0dXJu
IGNoaWxkcmVuO1xuXHQgIH1cblx0ICB2YXIgdHJhdmVyc2VDb250ZXh0ID0gRm9yRWFjaEJvb2tL
ZWVwaW5nLmdldFBvb2xlZChmb3JFYWNoRnVuYywgZm9yRWFjaENvbnRleHQpO1xuXHQgIHRyYXZl
cnNlQWxsQ2hpbGRyZW4oY2hpbGRyZW4sIGZvckVhY2hTaW5nbGVDaGlsZCwgdHJhdmVyc2VDb250
ZXh0KTtcblx0ICBGb3JFYWNoQm9va0tlZXBpbmcucmVsZWFzZSh0cmF2ZXJzZUNvbnRleHQpO1xu
XHR9XG5cdFxuXHQvKipcblx0ICogUG9vbGVkQ2xhc3MgcmVwcmVzZW50aW5nIHRoZSBib29ra2Vl
cGluZyBhc3NvY2lhdGVkIHdpdGggcGVyZm9ybWluZyBhIGNoaWxkXG5cdCAqIG1hcHBpbmcuIEFs
bG93cyBhdm9pZGluZyBiaW5kaW5nIGNhbGxiYWNrcy5cblx0ICpcblx0ICogQGNvbnN0cnVjdG9y
IE1hcEJvb2tLZWVwaW5nXG5cdCAqIEBwYXJhbSB7ISp9IG1hcFJlc3VsdCBPYmplY3QgY29udGFp
bmluZyB0aGUgb3JkZXJlZCBtYXAgb2YgcmVzdWx0cy5cblx0ICogQHBhcmFtIHshZnVuY3Rpb259
IG1hcEZ1bmN0aW9uIEZ1bmN0aW9uIHRvIHBlcmZvcm0gbWFwcGluZyB3aXRoLlxuXHQgKiBAcGFy
YW0gez8qfSBtYXBDb250ZXh0IENvbnRleHQgdG8gcGVyZm9ybSBtYXBwaW5nIHdpdGguXG5cdCAq
L1xuXHRmdW5jdGlvbiBNYXBCb29rS2VlcGluZyhtYXBSZXN1bHQsIGtleVByZWZpeCwgbWFwRnVu
Y3Rpb24sIG1hcENvbnRleHQpIHtcblx0ICB0aGlzLnJlc3VsdCA9IG1hcFJlc3VsdDtcblx0ICB0
aGlzLmtleVByZWZpeCA9IGtleVByZWZpeDtcblx0ICB0aGlzLmZ1bmMgPSBtYXBGdW5jdGlvbjtc
blx0ICB0aGlzLmNvbnRleHQgPSBtYXBDb250ZXh0O1xuXHQgIHRoaXMuY291bnQgPSAwO1xuXHR9
XG5cdE1hcEJvb2tLZWVwaW5nLnByb3RvdHlwZS5kZXN0cnVjdG9yID0gZnVuY3Rpb24gKCkge1xu
XHQgIHRoaXMucmVzdWx0ID0gbnVsbDtcblx0ICB0aGlzLmtleVByZWZpeCA9IG51bGw7XG5cdCAg
dGhpcy5mdW5jID0gbnVsbDtcblx0ICB0aGlzLmNvbnRleHQgPSBudWxsO1xuXHQgIHRoaXMuY291
bnQgPSAwO1xuXHR9O1xuXHRQb29sZWRDbGFzcy5hZGRQb29saW5nVG8oTWFwQm9va0tlZXBpbmcs
IGZvdXJBcmd1bWVudFBvb2xlcik7XG5cdFxuXHRmdW5jdGlvbiBtYXBTaW5nbGVDaGlsZEludG9D
b250ZXh0KGJvb2tLZWVwaW5nLCBjaGlsZCwgY2hpbGRLZXkpIHtcblx0ICB2YXIgcmVzdWx0ID0g
Ym9va0tlZXBpbmcucmVzdWx0LFxuXHQgICAgICBrZXlQcmVmaXggPSBib29rS2VlcGluZy5rZXlQ
cmVmaXgsXG5cdCAgICAgIGZ1bmMgPSBib29rS2VlcGluZy5mdW5jLFxuXHQgICAgICBjb250ZXh0
ID0gYm9va0tlZXBpbmcuY29udGV4dDtcblx0XG5cdFxuXHQgIHZhciBtYXBwZWRDaGlsZCA9IGZ1
bmMuY2FsbChjb250ZXh0LCBjaGlsZCwgYm9va0tlZXBpbmcuY291bnQrKyk7XG5cdCAgaWYgKEFy
cmF5LmlzQXJyYXkobWFwcGVkQ2hpbGQpKSB7XG5cdCAgICBtYXBJbnRvV2l0aEtleVByZWZpeElu
dGVybmFsKG1hcHBlZENoaWxkLCByZXN1bHQsIGNoaWxkS2V5LCBlbXB0eUZ1bmN0aW9uLnRoYXRS
ZXR1cm5zQXJndW1lbnQpO1xuXHQgIH0gZWxzZSBpZiAobWFwcGVkQ2hpbGQgIT0gbnVsbCkge1xu
XHQgICAgaWYgKFJlYWN0RWxlbWVudC5pc1ZhbGlkRWxlbWVudChtYXBwZWRDaGlsZCkpIHtcblx0
ICAgICAgbWFwcGVkQ2hpbGQgPSBSZWFjdEVsZW1lbnQuY2xvbmVBbmRSZXBsYWNlS2V5KG1hcHBl
ZENoaWxkLFxuXHQgICAgICAvLyBLZWVwIGJvdGggdGhlIChtYXBwZWQpIGFuZCBvbGQga2V5cyBp
ZiB0aGV5IGRpZmZlciwganVzdCBhc1xuXHQgICAgICAvLyB0cmF2ZXJzZUFsbENoaWxkcmVuIHVz
ZWQgdG8gZG8gZm9yIG9iamVjdHMgYXMgY2hpbGRyZW5cblx0ICAgICAga2V5UHJlZml4ICsgKG1h
cHBlZENoaWxkLmtleSAmJiAoIWNoaWxkIHx8IGNoaWxkLmtleSAhPT0gbWFwcGVkQ2hpbGQua2V5
KSA/IGVzY2FwZVVzZXJQcm92aWRlZEtleShtYXBwZWRDaGlsZC5rZXkpICsgJy8nIDogJycpICsg
Y2hpbGRLZXkpO1xuXHQgICAgfVxuXHQgICAgcmVzdWx0LnB1c2gobWFwcGVkQ2hpbGQpO1xuXHQg
IH1cblx0fVxuXHRcblx0ZnVuY3Rpb24gbWFwSW50b1dpdGhLZXlQcmVmaXhJbnRlcm5hbChjaGls
ZHJlbiwgYXJyYXksIHByZWZpeCwgZnVuYywgY29udGV4dCkge1xuXHQgIHZhciBlc2NhcGVkUHJl
Zml4ID0gJyc7XG5cdCAgaWYgKHByZWZpeCAhPSBudWxsKSB7XG5cdCAgICBlc2NhcGVkUHJlZml4
ID0gZXNjYXBlVXNlclByb3ZpZGVkS2V5KHByZWZpeCkgKyAnLyc7XG5cdCAgfVxuXHQgIHZhciB0
cmF2ZXJzZUNvbnRleHQgPSBNYXBCb29rS2VlcGluZy5nZXRQb29sZWQoYXJyYXksIGVzY2FwZWRQ
cmVmaXgsIGZ1bmMsIGNvbnRleHQpO1xuXHQgIHRyYXZlcnNlQWxsQ2hpbGRyZW4oY2hpbGRyZW4s
IG1hcFNpbmdsZUNoaWxkSW50b0NvbnRleHQsIHRyYXZlcnNlQ29udGV4dCk7XG5cdCAgTWFwQm9v
a0tlZXBpbmcucmVsZWFzZSh0cmF2ZXJzZUNvbnRleHQpO1xuXHR9XG5cdFxuXHQvKipcblx0ICog
TWFwcyBjaGlsZHJlbiB0aGF0IGFyZSB0eXBpY2FsbHkgc3BlY2lmaWVkIGFzIGBwcm9wcy5jaGls
ZHJlbmAuXG5cdCAqXG5cdCAqIFNlZSBodHRwczovL2ZhY2Vib29rLmdpdGh1Yi5pby9yZWFjdC9k
b2NzL3RvcC1sZXZlbC1hcGkuaHRtbCNyZWFjdC5jaGlsZHJlbi5tYXBcblx0ICpcblx0ICogVGhl
IHByb3ZpZGVkIG1hcEZ1bmN0aW9uKGNoaWxkLCBrZXksIGluZGV4KSB3aWxsIGJlIGNhbGxlZCBm
b3IgZWFjaFxuXHQgKiBsZWFmIGNoaWxkLlxuXHQgKlxuXHQgKiBAcGFyYW0gez8qfSBjaGlsZHJl
biBDaGlsZHJlbiB0cmVlIGNvbnRhaW5lci5cblx0ICogQHBhcmFtIHtmdW5jdGlvbigqLCBpbnQp
fSBmdW5jIFRoZSBtYXAgZnVuY3Rpb24uXG5cdCAqIEBwYXJhbSB7Kn0gY29udGV4dCBDb250ZXh0
IGZvciBtYXBGdW5jdGlvbi5cblx0ICogQHJldHVybiB7b2JqZWN0fSBPYmplY3QgY29udGFpbmlu
ZyB0aGUgb3JkZXJlZCBtYXAgb2YgcmVzdWx0cy5cblx0ICovXG5cdGZ1bmN0aW9uIG1hcENoaWxk
cmVuKGNoaWxkcmVuLCBmdW5jLCBjb250ZXh0KSB7XG5cdCAgaWYgKGNoaWxkcmVuID09IG51bGwp
IHtcblx0ICAgIHJldHVybiBjaGlsZHJlbjtcblx0ICB9XG5cdCAgdmFyIHJlc3VsdCA9IFtdO1xu
XHQgIG1hcEludG9XaXRoS2V5UHJlZml4SW50ZXJuYWwoY2hpbGRyZW4sIHJlc3VsdCwgbnVsbCwg
ZnVuYywgY29udGV4dCk7XG5cdCAgcmV0dXJuIHJlc3VsdDtcblx0fVxuXHRcblx0ZnVuY3Rpb24g
Zm9yRWFjaFNpbmdsZUNoaWxkRHVtbXkodHJhdmVyc2VDb250ZXh0LCBjaGlsZCwgbmFtZSkge1xu
XHQgIHJldHVybiBudWxsO1xuXHR9XG5cdFxuXHQvKipcblx0ICogQ291bnQgdGhlIG51bWJlciBv
ZiBjaGlsZHJlbiB0aGF0IGFyZSB0eXBpY2FsbHkgc3BlY2lmaWVkIGFzXG5cdCAqIGBwcm9wcy5j
aGlsZHJlbmAuXG5cdCAqXG5cdCAqIFNlZSBodHRwczovL2ZhY2Vib29rLmdpdGh1Yi5pby9yZWFj
dC9kb2NzL3RvcC1sZXZlbC1hcGkuaHRtbCNyZWFjdC5jaGlsZHJlbi5jb3VudFxuXHQgKlxuXHQg
KiBAcGFyYW0gez8qfSBjaGlsZHJlbiBDaGlsZHJlbiB0cmVlIGNvbnRhaW5lci5cblx0ICogQHJl
dHVybiB7bnVtYmVyfSBUaGUgbnVtYmVyIG9mIGNoaWxkcmVuLlxuXHQgKi9cblx0ZnVuY3Rpb24g
Y291bnRDaGlsZHJlbihjaGlsZHJlbiwgY29udGV4dCkge1xuXHQgIHJldHVybiB0cmF2ZXJzZUFs
bENoaWxkcmVuKGNoaWxkcmVuLCBmb3JFYWNoU2luZ2xlQ2hpbGREdW1teSwgbnVsbCk7XG5cdH1c
blx0XG5cdC8qKlxuXHQgKiBGbGF0dGVuIGEgY2hpbGRyZW4gb2JqZWN0ICh0eXBpY2FsbHkgc3Bl
Y2lmaWVkIGFzIGBwcm9wcy5jaGlsZHJlbmApIGFuZFxuXHQgKiByZXR1cm4gYW4gYXJyYXkgd2l0
aCBhcHByb3ByaWF0ZWx5IHJlLWtleWVkIGNoaWxkcmVuLlxuXHQgKlxuXHQgKiBTZWUgaHR0cHM6
Ly9mYWNlYm9vay5naXRodWIuaW8vcmVhY3QvZG9jcy90b3AtbGV2ZWwtYXBpLmh0bWwjcmVhY3Qu
Y2hpbGRyZW4udG9hcnJheVxuXHQgKi9cblx0ZnVuY3Rpb24gdG9BcnJheShjaGlsZHJlbikge1xu
XHQgIHZhciByZXN1bHQgPSBbXTtcblx0ICBtYXBJbnRvV2l0aEtleVByZWZpeEludGVybmFsKGNo
aWxkcmVuLCByZXN1bHQsIG51bGwsIGVtcHR5RnVuY3Rpb24udGhhdFJldHVybnNBcmd1bWVudCk7
XG5cdCAgcmV0dXJuIHJlc3VsdDtcblx0fVxuXHRcblx0dmFyIFJlYWN0Q2hpbGRyZW4gPSB7XG5c
dCAgZm9yRWFjaDogZm9yRWFjaENoaWxkcmVuLFxuXHQgIG1hcDogbWFwQ2hpbGRyZW4sXG5cdCAg
bWFwSW50b1dpdGhLZXlQcmVmaXhJbnRlcm5hbDogbWFwSW50b1dpdGhLZXlQcmVmaXhJbnRlcm5h
bCxcblx0ICBjb3VudDogY291bnRDaGlsZHJlbixcblx0ICB0b0FycmF5OiB0b0FycmF5XG5cdH07
XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IFJlYWN0Q2hpbGRyZW47XG5cbi8qKiovIH0sXG4vKiAy
MTYgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVf
Xykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5j
LlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2Rl
IGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0
ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVl
LiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5k
IGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKi9c
blx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdHZhciBSZWFjdEVsZW1lbnQgPSBfX3dlYnBhY2tf
cmVxdWlyZV9fKDE4KTtcblx0XG5cdC8qKlxuXHQgKiBDcmVhdGUgYSBmYWN0b3J5IHRoYXQgY3Jl
YXRlcyBIVE1MIHRhZyBlbGVtZW50cy5cblx0ICpcblx0ICogQHByaXZhdGVcblx0ICovXG5cdHZh
ciBjcmVhdGVET01GYWN0b3J5ID0gUmVhY3RFbGVtZW50LmNyZWF0ZUZhY3Rvcnk7XG5cdGlmIChm
YWxzZSkge1xuXHQgIHZhciBSZWFjdEVsZW1lbnRWYWxpZGF0b3IgPSByZXF1aXJlKCcuL1JlYWN0
RWxlbWVudFZhbGlkYXRvcicpO1xuXHQgIGNyZWF0ZURPTUZhY3RvcnkgPSBSZWFjdEVsZW1lbnRW
YWxpZGF0b3IuY3JlYXRlRmFjdG9yeTtcblx0fVxuXHRcblx0LyoqXG5cdCAqIENyZWF0ZXMgYSBt
YXBwaW5nIGZyb20gc3VwcG9ydGVkIEhUTUwgdGFncyB0byBgUmVhY3RET01Db21wb25lbnRgIGNs
YXNzZXMuXG5cdCAqXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdHZhciBSZWFjdERPTUZhY3Rvcmll
cyA9IHtcblx0ICBhOiBjcmVhdGVET01GYWN0b3J5KCdhJyksXG5cdCAgYWJicjogY3JlYXRlRE9N
RmFjdG9yeSgnYWJicicpLFxuXHQgIGFkZHJlc3M6IGNyZWF0ZURPTUZhY3RvcnkoJ2FkZHJlc3Mn
KSxcblx0ICBhcmVhOiBjcmVhdGVET01GYWN0b3J5KCdhcmVhJyksXG5cdCAgYXJ0aWNsZTogY3Jl
YXRlRE9NRmFjdG9yeSgnYXJ0aWNsZScpLFxuXHQgIGFzaWRlOiBjcmVhdGVET01GYWN0b3J5KCdh
c2lkZScpLFxuXHQgIGF1ZGlvOiBjcmVhdGVET01GYWN0b3J5KCdhdWRpbycpLFxuXHQgIGI6IGNy
ZWF0ZURPTUZhY3RvcnkoJ2InKSxcblx0ICBiYXNlOiBjcmVhdGVET01GYWN0b3J5KCdiYXNlJyks
XG5cdCAgYmRpOiBjcmVhdGVET01GYWN0b3J5KCdiZGknKSxcblx0ICBiZG86IGNyZWF0ZURPTUZh
Y3RvcnkoJ2JkbycpLFxuXHQgIGJpZzogY3JlYXRlRE9NRmFjdG9yeSgnYmlnJyksXG5cdCAgYmxv
Y2txdW90ZTogY3JlYXRlRE9NRmFjdG9yeSgnYmxvY2txdW90ZScpLFxuXHQgIGJvZHk6IGNyZWF0
ZURPTUZhY3RvcnkoJ2JvZHknKSxcblx0ICBicjogY3JlYXRlRE9NRmFjdG9yeSgnYnInKSxcblx0
ICBidXR0b246IGNyZWF0ZURPTUZhY3RvcnkoJ2J1dHRvbicpLFxuXHQgIGNhbnZhczogY3JlYXRl
RE9NRmFjdG9yeSgnY2FudmFzJyksXG5cdCAgY2FwdGlvbjogY3JlYXRlRE9NRmFjdG9yeSgnY2Fw
dGlvbicpLFxuXHQgIGNpdGU6IGNyZWF0ZURPTUZhY3RvcnkoJ2NpdGUnKSxcblx0ICBjb2RlOiBj
cmVhdGVET01GYWN0b3J5KCdjb2RlJyksXG5cdCAgY29sOiBjcmVhdGVET01GYWN0b3J5KCdjb2wn
KSxcblx0ICBjb2xncm91cDogY3JlYXRlRE9NRmFjdG9yeSgnY29sZ3JvdXAnKSxcblx0ICBkYXRh
OiBjcmVhdGVET01GYWN0b3J5KCdkYXRhJyksXG5cdCAgZGF0YWxpc3Q6IGNyZWF0ZURPTUZhY3Rv
cnkoJ2RhdGFsaXN0JyksXG5cdCAgZGQ6IGNyZWF0ZURPTUZhY3RvcnkoJ2RkJyksXG5cdCAgZGVs
OiBjcmVhdGVET01GYWN0b3J5KCdkZWwnKSxcblx0ICBkZXRhaWxzOiBjcmVhdGVET01GYWN0b3J5
KCdkZXRhaWxzJyksXG5cdCAgZGZuOiBjcmVhdGVET01GYWN0b3J5KCdkZm4nKSxcblx0ICBkaWFs
b2c6IGNyZWF0ZURPTUZhY3RvcnkoJ2RpYWxvZycpLFxuXHQgIGRpdjogY3JlYXRlRE9NRmFjdG9y
eSgnZGl2JyksXG5cdCAgZGw6IGNyZWF0ZURPTUZhY3RvcnkoJ2RsJyksXG5cdCAgZHQ6IGNyZWF0
ZURPTUZhY3RvcnkoJ2R0JyksXG5cdCAgZW06IGNyZWF0ZURPTUZhY3RvcnkoJ2VtJyksXG5cdCAg
ZW1iZWQ6IGNyZWF0ZURPTUZhY3RvcnkoJ2VtYmVkJyksXG5cdCAgZmllbGRzZXQ6IGNyZWF0ZURP
TUZhY3RvcnkoJ2ZpZWxkc2V0JyksXG5cdCAgZmlnY2FwdGlvbjogY3JlYXRlRE9NRmFjdG9yeSgn
ZmlnY2FwdGlvbicpLFxuXHQgIGZpZ3VyZTogY3JlYXRlRE9NRmFjdG9yeSgnZmlndXJlJyksXG5c
dCAgZm9vdGVyOiBjcmVhdGVET01GYWN0b3J5KCdmb290ZXInKSxcblx0ICBmb3JtOiBjcmVhdGVE
T01GYWN0b3J5KCdmb3JtJyksXG5cdCAgaDE6IGNyZWF0ZURPTUZhY3RvcnkoJ2gxJyksXG5cdCAg
aDI6IGNyZWF0ZURPTUZhY3RvcnkoJ2gyJyksXG5cdCAgaDM6IGNyZWF0ZURPTUZhY3RvcnkoJ2gz
JyksXG5cdCAgaDQ6IGNyZWF0ZURPTUZhY3RvcnkoJ2g0JyksXG5cdCAgaDU6IGNyZWF0ZURPTUZh
Y3RvcnkoJ2g1JyksXG5cdCAgaDY6IGNyZWF0ZURPTUZhY3RvcnkoJ2g2JyksXG5cdCAgaGVhZDog
Y3JlYXRlRE9NRmFjdG9yeSgnaGVhZCcpLFxuXHQgIGhlYWRlcjogY3JlYXRlRE9NRmFjdG9yeSgn
aGVhZGVyJyksXG5cdCAgaGdyb3VwOiBjcmVhdGVET01GYWN0b3J5KCdoZ3JvdXAnKSxcblx0ICBo
cjogY3JlYXRlRE9NRmFjdG9yeSgnaHInKSxcblx0ICBodG1sOiBjcmVhdGVET01GYWN0b3J5KCdo
dG1sJyksXG5cdCAgaTogY3JlYXRlRE9NRmFjdG9yeSgnaScpLFxuXHQgIGlmcmFtZTogY3JlYXRl
RE9NRmFjdG9yeSgnaWZyYW1lJyksXG5cdCAgaW1nOiBjcmVhdGVET01GYWN0b3J5KCdpbWcnKSxc
blx0ICBpbnB1dDogY3JlYXRlRE9NRmFjdG9yeSgnaW5wdXQnKSxcblx0ICBpbnM6IGNyZWF0ZURP
TUZhY3RvcnkoJ2lucycpLFxuXHQgIGtiZDogY3JlYXRlRE9NRmFjdG9yeSgna2JkJyksXG5cdCAg
a2V5Z2VuOiBjcmVhdGVET01GYWN0b3J5KCdrZXlnZW4nKSxcblx0ICBsYWJlbDogY3JlYXRlRE9N
RmFjdG9yeSgnbGFiZWwnKSxcblx0ICBsZWdlbmQ6IGNyZWF0ZURPTUZhY3RvcnkoJ2xlZ2VuZCcp
LFxuXHQgIGxpOiBjcmVhdGVET01GYWN0b3J5KCdsaScpLFxuXHQgIGxpbms6IGNyZWF0ZURPTUZh
Y3RvcnkoJ2xpbmsnKSxcblx0ICBtYWluOiBjcmVhdGVET01GYWN0b3J5KCdtYWluJyksXG5cdCAg
bWFwOiBjcmVhdGVET01GYWN0b3J5KCdtYXAnKSxcblx0ICBtYXJrOiBjcmVhdGVET01GYWN0b3J5
KCdtYXJrJyksXG5cdCAgbWVudTogY3JlYXRlRE9NRmFjdG9yeSgnbWVudScpLFxuXHQgIG1lbnVp
dGVtOiBjcmVhdGVET01GYWN0b3J5KCdtZW51aXRlbScpLFxuXHQgIG1ldGE6IGNyZWF0ZURPTUZh
Y3RvcnkoJ21ldGEnKSxcblx0ICBtZXRlcjogY3JlYXRlRE9NRmFjdG9yeSgnbWV0ZXInKSxcblx0
ICBuYXY6IGNyZWF0ZURPTUZhY3RvcnkoJ25hdicpLFxuXHQgIG5vc2NyaXB0OiBjcmVhdGVET01G
YWN0b3J5KCdub3NjcmlwdCcpLFxuXHQgIG9iamVjdDogY3JlYXRlRE9NRmFjdG9yeSgnb2JqZWN0
JyksXG5cdCAgb2w6IGNyZWF0ZURPTUZhY3RvcnkoJ29sJyksXG5cdCAgb3B0Z3JvdXA6IGNyZWF0
ZURPTUZhY3RvcnkoJ29wdGdyb3VwJyksXG5cdCAgb3B0aW9uOiBjcmVhdGVET01GYWN0b3J5KCdv
cHRpb24nKSxcblx0ICBvdXRwdXQ6IGNyZWF0ZURPTUZhY3RvcnkoJ291dHB1dCcpLFxuXHQgIHA6
IGNyZWF0ZURPTUZhY3RvcnkoJ3AnKSxcblx0ICBwYXJhbTogY3JlYXRlRE9NRmFjdG9yeSgncGFy
YW0nKSxcblx0ICBwaWN0dXJlOiBjcmVhdGVET01GYWN0b3J5KCdwaWN0dXJlJyksXG5cdCAgcHJl
OiBjcmVhdGVET01GYWN0b3J5KCdwcmUnKSxcblx0ICBwcm9ncmVzczogY3JlYXRlRE9NRmFjdG9y
eSgncHJvZ3Jlc3MnKSxcblx0ICBxOiBjcmVhdGVET01GYWN0b3J5KCdxJyksXG5cdCAgcnA6IGNy
ZWF0ZURPTUZhY3RvcnkoJ3JwJyksXG5cdCAgcnQ6IGNyZWF0ZURPTUZhY3RvcnkoJ3J0JyksXG5c
dCAgcnVieTogY3JlYXRlRE9NRmFjdG9yeSgncnVieScpLFxuXHQgIHM6IGNyZWF0ZURPTUZhY3Rv
cnkoJ3MnKSxcblx0ICBzYW1wOiBjcmVhdGVET01GYWN0b3J5KCdzYW1wJyksXG5cdCAgc2NyaXB0
OiBjcmVhdGVET01GYWN0b3J5KCdzY3JpcHQnKSxcblx0ICBzZWN0aW9uOiBjcmVhdGVET01GYWN0
b3J5KCdzZWN0aW9uJyksXG5cdCAgc2VsZWN0OiBjcmVhdGVET01GYWN0b3J5KCdzZWxlY3QnKSxc
blx0ICBzbWFsbDogY3JlYXRlRE9NRmFjdG9yeSgnc21hbGwnKSxcblx0ICBzb3VyY2U6IGNyZWF0
ZURPTUZhY3RvcnkoJ3NvdXJjZScpLFxuXHQgIHNwYW46IGNyZWF0ZURPTUZhY3RvcnkoJ3NwYW4n
KSxcblx0ICBzdHJvbmc6IGNyZWF0ZURPTUZhY3RvcnkoJ3N0cm9uZycpLFxuXHQgIHN0eWxlOiBj
cmVhdGVET01GYWN0b3J5KCdzdHlsZScpLFxuXHQgIHN1YjogY3JlYXRlRE9NRmFjdG9yeSgnc3Vi
JyksXG5cdCAgc3VtbWFyeTogY3JlYXRlRE9NRmFjdG9yeSgnc3VtbWFyeScpLFxuXHQgIHN1cDog
Y3JlYXRlRE9NRmFjdG9yeSgnc3VwJyksXG5cdCAgdGFibGU6IGNyZWF0ZURPTUZhY3RvcnkoJ3Rh
YmxlJyksXG5cdCAgdGJvZHk6IGNyZWF0ZURPTUZhY3RvcnkoJ3Rib2R5JyksXG5cdCAgdGQ6IGNy
ZWF0ZURPTUZhY3RvcnkoJ3RkJyksXG5cdCAgdGV4dGFyZWE6IGNyZWF0ZURPTUZhY3RvcnkoJ3Rl
eHRhcmVhJyksXG5cdCAgdGZvb3Q6IGNyZWF0ZURPTUZhY3RvcnkoJ3Rmb290JyksXG5cdCAgdGg6
IGNyZWF0ZURPTUZhY3RvcnkoJ3RoJyksXG5cdCAgdGhlYWQ6IGNyZWF0ZURPTUZhY3RvcnkoJ3Ro
ZWFkJyksXG5cdCAgdGltZTogY3JlYXRlRE9NRmFjdG9yeSgndGltZScpLFxuXHQgIHRpdGxlOiBj
cmVhdGVET01GYWN0b3J5KCd0aXRsZScpLFxuXHQgIHRyOiBjcmVhdGVET01GYWN0b3J5KCd0cicp
LFxuXHQgIHRyYWNrOiBjcmVhdGVET01GYWN0b3J5KCd0cmFjaycpLFxuXHQgIHU6IGNyZWF0ZURP
TUZhY3RvcnkoJ3UnKSxcblx0ICB1bDogY3JlYXRlRE9NRmFjdG9yeSgndWwnKSxcblx0ICAndmFy
JzogY3JlYXRlRE9NRmFjdG9yeSgndmFyJyksXG5cdCAgdmlkZW86IGNyZWF0ZURPTUZhY3Rvcnko
J3ZpZGVvJyksXG5cdCAgd2JyOiBjcmVhdGVET01GYWN0b3J5KCd3YnInKSxcblx0XG5cdCAgLy8g
U1ZHXG5cdCAgY2lyY2xlOiBjcmVhdGVET01GYWN0b3J5KCdjaXJjbGUnKSxcblx0ICBjbGlwUGF0
aDogY3JlYXRlRE9NRmFjdG9yeSgnY2xpcFBhdGgnKSxcblx0ICBkZWZzOiBjcmVhdGVET01GYWN0
b3J5KCdkZWZzJyksXG5cdCAgZWxsaXBzZTogY3JlYXRlRE9NRmFjdG9yeSgnZWxsaXBzZScpLFxu
XHQgIGc6IGNyZWF0ZURPTUZhY3RvcnkoJ2cnKSxcblx0ICBpbWFnZTogY3JlYXRlRE9NRmFjdG9y
eSgnaW1hZ2UnKSxcblx0ICBsaW5lOiBjcmVhdGVET01GYWN0b3J5KCdsaW5lJyksXG5cdCAgbGlu
ZWFyR3JhZGllbnQ6IGNyZWF0ZURPTUZhY3RvcnkoJ2xpbmVhckdyYWRpZW50JyksXG5cdCAgbWFz
azogY3JlYXRlRE9NRmFjdG9yeSgnbWFzaycpLFxuXHQgIHBhdGg6IGNyZWF0ZURPTUZhY3Rvcnko
J3BhdGgnKSxcblx0ICBwYXR0ZXJuOiBjcmVhdGVET01GYWN0b3J5KCdwYXR0ZXJuJyksXG5cdCAg
cG9seWdvbjogY3JlYXRlRE9NRmFjdG9yeSgncG9seWdvbicpLFxuXHQgIHBvbHlsaW5lOiBjcmVh
dGVET01GYWN0b3J5KCdwb2x5bGluZScpLFxuXHQgIHJhZGlhbEdyYWRpZW50OiBjcmVhdGVET01G
YWN0b3J5KCdyYWRpYWxHcmFkaWVudCcpLFxuXHQgIHJlY3Q6IGNyZWF0ZURPTUZhY3RvcnkoJ3Jl
Y3QnKSxcblx0ICBzdG9wOiBjcmVhdGVET01GYWN0b3J5KCdzdG9wJyksXG5cdCAgc3ZnOiBjcmVh
dGVET01GYWN0b3J5KCdzdmcnKSxcblx0ICB0ZXh0OiBjcmVhdGVET01GYWN0b3J5KCd0ZXh0Jyks
XG5cdCAgdHNwYW46IGNyZWF0ZURPTUZhY3RvcnkoJ3RzcGFuJylcblx0fTtcblx0XG5cdG1vZHVs
ZS5leHBvcnRzID0gUmVhY3RET01GYWN0b3JpZXM7XG5cbi8qKiovIH0sXG4vKiAyMTcgKi9cbi8q
KiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5c
dC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBB
bGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vu
c2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5T
RSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRp
dGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQ
QVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKi9cblx0XG5cdCd1
c2Ugc3RyaWN0Jztcblx0XG5cdHZhciBfcmVxdWlyZSA9IF9fd2VicGFja19yZXF1aXJlX18oMTgp
LFxuXHQgICAgaXNWYWxpZEVsZW1lbnQgPSBfcmVxdWlyZS5pc1ZhbGlkRWxlbWVudDtcblx0XG5c
dHZhciBmYWN0b3J5ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1NSk7XG5cdFxuXHRtb2R1bGUuZXhw
b3J0cyA9IGZhY3RvcnkoaXNWYWxpZEVsZW1lbnQpO1xuXG4vKioqLyB9LFxuLyogMjE4ICovXG4x
NjMsXG4vKiAyMTkgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNr
X3JlcXVpcmVfXykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNl
Ym9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNv
dXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBp
biB0aGVcblx0ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNv
dXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2Fu
IGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQg
KlxuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdHZhciBfcmVxdWlyZSA9IF9fd2Vi
cGFja19yZXF1aXJlX18oODkpLFxuXHQgICAgQ29tcG9uZW50ID0gX3JlcXVpcmUuQ29tcG9uZW50
O1xuXHRcblx0dmFyIF9yZXF1aXJlMiA9IF9fd2VicGFja19yZXF1aXJlX18oMTgpLFxuXHQgICAg
aXNWYWxpZEVsZW1lbnQgPSBfcmVxdWlyZTIuaXNWYWxpZEVsZW1lbnQ7XG5cdFxuXHR2YXIgUmVh
Y3ROb29wVXBkYXRlUXVldWUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDkyKTtcblx0dmFyIGZhY3Rv
cnkgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDk3KTtcblx0XG5cdG1vZHVsZS5leHBvcnRzID0gZmFj
dG9yeShDb21wb25lbnQsIGlzVmFsaWRFbGVtZW50LCBSZWFjdE5vb3BVcGRhdGVRdWV1ZSk7XG5c
bi8qKiovIH0sXG4vKiAyMjAgKi9cbjE4Mixcbi8qIDIyMSAqL1xuLyoqKi8gZnVuY3Rpb24obW9k
dWxlLCBleHBvcnRzKSB7XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZh
Y2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMg
c291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5k
IGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMg
c291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBj
YW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5c
dCAqXG5cdCAqIFxuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdHZhciBuZXh0RGVi
dWdJRCA9IDE7XG5cdFxuXHRmdW5jdGlvbiBnZXROZXh0RGVidWdJRCgpIHtcblx0ICByZXR1cm4g
bmV4dERlYnVnSUQrKztcblx0fVxuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBnZXROZXh0RGVidWdJ
RDtcblxuLyoqKi8gfSxcbi8qIDIyMiAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRz
LCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAyMDE0LTIw
MTUsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAq
IFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNl
IGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9m
IHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJp
Z2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3Rv
cnkuXG5cdCAqXG5cdCAqL1xuXHRcblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0LyoqXG5cdCAqIEZv
cmtlZCBmcm9tIGZianMvd2FybmluZzpcblx0ICogaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29r
L2ZianMvYmxvYi9lNjZiYTIwYWQ1YmU0MzNlYjU0NDIzZjJiMDk3ZDgyOTMyNGQ5ZGU2L3BhY2th
Z2VzL2ZianMvc3JjL19fZm9ya3NfXy93YXJuaW5nLmpzXG5cdCAqXG5cdCAqIE9ubHkgY2hhbmdl
IGlzIHdlIHVzZSBjb25zb2xlLndhcm4gaW5zdGVhZCBvZiBjb25zb2xlLmVycm9yLFxuXHQgKiBh
bmQgZG8gbm90aGluZyB3aGVuICdjb25zb2xlJyBpcyBub3Qgc3VwcG9ydGVkLlxuXHQgKiBUaGlz
IHJlYWxseSBzaW1wbGlmaWVzIHRoZSBjb2RlLlxuXHQgKiAtLS1cblx0ICogU2ltaWxhciB0byBp
bnZhcmlhbnQgYnV0IG9ubHkgbG9ncyBhIHdhcm5pbmcgaWYgdGhlIGNvbmRpdGlvbiBpcyBub3Qg
bWV0LlxuXHQgKiBUaGlzIGNhbiBiZSB1c2VkIHRvIGxvZyBpc3N1ZXMgaW4gZGV2ZWxvcG1lbnQg
ZW52aXJvbm1lbnRzIGluIGNyaXRpY2FsXG5cdCAqIHBhdGhzLiBSZW1vdmluZyB0aGUgbG9nZ2lu
ZyBjb2RlIGZvciBwcm9kdWN0aW9uIGVudmlyb25tZW50cyB3aWxsIGtlZXAgdGhlXG5cdCAqIHNh
bWUgbG9naWMgYW5kIGZvbGxvdyB0aGUgc2FtZSBjb2RlIHBhdGhzLlxuXHQgKi9cblx0XG5cdHZh
ciBsb3dQcmlvcml0eVdhcm5pbmcgPSBmdW5jdGlvbiAoKSB7fTtcblx0XG5cdGlmIChmYWxzZSkg
e1xuXHQgIHZhciBwcmludFdhcm5pbmcgPSBmdW5jdGlvbiAoZm9ybWF0KSB7XG5cdCAgICBmb3Ig
KHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IEFycmF5KF9sZW4gPiAxID8gX2xl
biAtIDEgOiAwKSwgX2tleSA9IDE7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcblx0ICAgICAgYXJn
c1tfa2V5IC0gMV0gPSBhcmd1bWVudHNbX2tleV07XG5cdCAgICB9XG5cdFxuXHQgICAgdmFyIGFy
Z0luZGV4ID0gMDtcblx0ICAgIHZhciBtZXNzYWdlID0gJ1dhcm5pbmc6ICcgKyBmb3JtYXQucmVw
bGFjZSgvJXMvZywgZnVuY3Rpb24gKCkge1xuXHQgICAgICByZXR1cm4gYXJnc1thcmdJbmRleCsr
XTtcblx0ICAgIH0pO1xuXHQgICAgaWYgKHR5cGVvZiBjb25zb2xlICE9PSAndW5kZWZpbmVkJykg
e1xuXHQgICAgICBjb25zb2xlLndhcm4obWVzc2FnZSk7XG5cdCAgICB9XG5cdCAgICB0cnkge1xu
XHQgICAgICAvLyAtLS0gV2VsY29tZSB0byBkZWJ1Z2dpbmcgUmVhY3QgLS0tXG5cdCAgICAgIC8v
IFRoaXMgZXJyb3Igd2FzIHRocm93biBhcyBhIGNvbnZlbmllbmNlIHNvIHRoYXQgeW91IGNhbiB1
c2UgdGhpcyBzdGFja1xuXHQgICAgICAvLyB0byBmaW5kIHRoZSBjYWxsc2l0ZSB0aGF0IGNhdXNl
ZCB0aGlzIHdhcm5pbmcgdG8gZmlyZS5cblx0ICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2Up
O1xuXHQgICAgfSBjYXRjaCAoeCkge31cblx0ICB9O1xuXHRcblx0ICBsb3dQcmlvcml0eVdhcm5p
bmcgPSBmdW5jdGlvbiAoY29uZGl0aW9uLCBmb3JtYXQpIHtcblx0ICAgIGlmIChmb3JtYXQgPT09
IHVuZGVmaW5lZCkge1xuXHQgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2B3YXJuaW5nKGNvbmRpdGlv
biwgZm9ybWF0LCAuLi5hcmdzKWAgcmVxdWlyZXMgYSB3YXJuaW5nICcgKyAnbWVzc2FnZSBhcmd1
bWVudCcpO1xuXHQgICAgfVxuXHQgICAgaWYgKCFjb25kaXRpb24pIHtcblx0ICAgICAgZm9yICh2
YXIgX2xlbjIgPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gQXJyYXkoX2xlbjIgPiAyID8gX2xl
bjIgLSAyIDogMCksIF9rZXkyID0gMjsgX2tleTIgPCBfbGVuMjsgX2tleTIrKykge1xuXHQgICAg
ICAgIGFyZ3NbX2tleTIgLSAyXSA9IGFyZ3VtZW50c1tfa2V5Ml07XG5cdCAgICAgIH1cblx0XG5c
dCAgICAgIHByaW50V2FybmluZy5hcHBseSh1bmRlZmluZWQsIFtmb3JtYXRdLmNvbmNhdChhcmdz
KSk7XG5cdCAgICB9XG5cdCAgfTtcblx0fVxuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBsb3dQcmlv
cml0eVdhcm5pbmc7XG5cbi8qKiovIH0sXG4vKiAyMjMgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVs
ZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmln
aHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVk
LlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qt
c3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290
IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAq
IG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhl
IHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKi9cblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0dmFy
IF9wcm9kSW52YXJpYW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMyk7XG5cdFxuXHR2YXIgUmVh
Y3RFbGVtZW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxOCk7XG5cdFxuXHR2YXIgaW52YXJpYW50
ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxKTtcblx0XG5cdC8qKlxuXHQgKiBSZXR1cm5zIHRoZSBm
aXJzdCBjaGlsZCBpbiBhIGNvbGxlY3Rpb24gb2YgY2hpbGRyZW4gYW5kIHZlcmlmaWVzIHRoYXQg
dGhlcmVcblx0ICogaXMgb25seSBvbmUgY2hpbGQgaW4gdGhlIGNvbGxlY3Rpb24uXG5cdCAqXG5c
dCAqIFNlZSBodHRwczovL2ZhY2Vib29rLmdpdGh1Yi5pby9yZWFjdC9kb2NzL3RvcC1sZXZlbC1h
cGkuaHRtbCNyZWFjdC5jaGlsZHJlbi5vbmx5XG5cdCAqXG5cdCAqIFRoZSBjdXJyZW50IGltcGxl
bWVudGF0aW9uIG9mIHRoaXMgZnVuY3Rpb24gYXNzdW1lcyB0aGF0IGEgc2luZ2xlIGNoaWxkIGdl
dHNcblx0ICogcGFzc2VkIHdpdGhvdXQgYSB3cmFwcGVyLCBidXQgdGhlIHB1cnBvc2Ugb2YgdGhp
cyBoZWxwZXIgZnVuY3Rpb24gaXMgdG9cblx0ICogYWJzdHJhY3QgYXdheSB0aGUgcGFydGljdWxh
ciBzdHJ1Y3R1cmUgb2YgY2hpbGRyZW4uXG5cdCAqXG5cdCAqIEBwYXJhbSB7P29iamVjdH0gY2hp
bGRyZW4gQ2hpbGQgY29sbGVjdGlvbiBzdHJ1Y3R1cmUuXG5cdCAqIEByZXR1cm4ge1JlYWN0RWxl
bWVudH0gVGhlIGZpcnN0IGFuZCBvbmx5IGBSZWFjdEVsZW1lbnRgIGNvbnRhaW5lZCBpbiB0aGVc
blx0ICogc3RydWN0dXJlLlxuXHQgKi9cblx0ZnVuY3Rpb24gb25seUNoaWxkKGNoaWxkcmVuKSB7
XG5cdCAgIVJlYWN0RWxlbWVudC5pc1ZhbGlkRWxlbWVudChjaGlsZHJlbikgPyAgZmFsc2UgPyBp
bnZhcmlhbnQoZmFsc2UsICdSZWFjdC5DaGlsZHJlbi5vbmx5IGV4cGVjdGVkIHRvIHJlY2VpdmUg
YSBzaW5nbGUgUmVhY3QgZWxlbWVudCBjaGlsZC4nKSA6IF9wcm9kSW52YXJpYW50KCcxNDMnKSA6
IHZvaWQgMDtcblx0ICByZXR1cm4gY2hpbGRyZW47XG5cdH1cblx0XG5cdG1vZHVsZS5leHBvcnRz
ID0gb25seUNoaWxkO1xuXG4vKioqLyB9LFxuLyogMjI0ICovXG4vKioqLyBmdW5jdGlvbihtb2R1
bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvKipcblx0ICogQ29weXJp
Z2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZl
ZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNE
LXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9v
dCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQg
KiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRo
ZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpcblx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxu
XHR2YXIgX3Byb2RJbnZhcmlhbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIzKTtcblx0XG5cdHZh
ciBSZWFjdEN1cnJlbnRPd25lciA9IF9fd2VicGFja19yZXF1aXJlX18oMTEpO1xuXHR2YXIgUkVB
Q1RfRUxFTUVOVF9UWVBFID0gX193ZWJwYWNrX3JlcXVpcmVfXyg5MSk7XG5cdFxuXHR2YXIgZ2V0
SXRlcmF0b3JGbiA9IF9fd2VicGFja19yZXF1aXJlX18oMjIwKTtcblx0dmFyIGludmFyaWFudCA9
IF9fd2VicGFja19yZXF1aXJlX18oMSk7XG5cdHZhciBLZXlFc2NhcGVVdGlscyA9IF9fd2VicGFj
a19yZXF1aXJlX18oMjEzKTtcblx0dmFyIHdhcm5pbmcgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIp
O1xuXHRcblx0dmFyIFNFUEFSQVRPUiA9ICcuJztcblx0dmFyIFNVQlNFUEFSQVRPUiA9ICc6Jztc
blx0XG5cdC8qKlxuXHQgKiBUaGlzIGlzIGlubGluZWQgZnJvbSBSZWFjdEVsZW1lbnQgc2luY2Ug
dGhpcyBmaWxlIGlzIHNoYXJlZCBiZXR3ZWVuXG5cdCAqIGlzb21vcnBoaWMgYW5kIHJlbmRlcmVy
cy4gV2UgY291bGQgZXh0cmFjdCB0aGlzIHRvIGFcblx0ICpcblx0ICovXG5cdFxuXHQvKipcblx0
ICogVE9ETzogVGVzdCB0aGF0IGEgc2luZ2xlIGNoaWxkIGFuZCBhbiBhcnJheSB3aXRoIG9uZSBp
dGVtIGhhdmUgdGhlIHNhbWUga2V5XG5cdCAqIHBhdHRlcm4uXG5cdCAqL1xuXHRcblx0dmFyIGRp
ZFdhcm5BYm91dE1hcHMgPSBmYWxzZTtcblx0XG5cdC8qKlxuXHQgKiBHZW5lcmF0ZSBhIGtleSBz
dHJpbmcgdGhhdCBpZGVudGlmaWVzIGEgY29tcG9uZW50IHdpdGhpbiBhIHNldC5cblx0ICpcblx0
ICogQHBhcmFtIHsqfSBjb21wb25lbnQgQSBjb21wb25lbnQgdGhhdCBjb3VsZCBjb250YWluIGEg
bWFudWFsIGtleS5cblx0ICogQHBhcmFtIHtudW1iZXJ9IGluZGV4IEluZGV4IHRoYXQgaXMgdXNl
ZCBpZiBhIG1hbnVhbCBrZXkgaXMgbm90IHByb3ZpZGVkLlxuXHQgKiBAcmV0dXJuIHtzdHJpbmd9
XG5cdCAqL1xuXHRmdW5jdGlvbiBnZXRDb21wb25lbnRLZXkoY29tcG9uZW50LCBpbmRleCkge1xu
XHQgIC8vIERvIHNvbWUgdHlwZWNoZWNraW5nIGhlcmUgc2luY2Ugd2UgY2FsbCB0aGlzIGJsaW5k
bHkuIFdlIHdhbnQgdG8gZW5zdXJlXG5cdCAgLy8gdGhhdCB3ZSBkb24ndCBibG9jayBwb3RlbnRp
YWwgZnV0dXJlIEVTIEFQSXMuXG5cdCAgaWYgKGNvbXBvbmVudCAmJiB0eXBlb2YgY29tcG9uZW50
ID09PSAnb2JqZWN0JyAmJiBjb21wb25lbnQua2V5ICE9IG51bGwpIHtcblx0ICAgIC8vIEV4cGxp
Y2l0IGtleVxuXHQgICAgcmV0dXJuIEtleUVzY2FwZVV0aWxzLmVzY2FwZShjb21wb25lbnQua2V5
KTtcblx0ICB9XG5cdCAgLy8gSW1wbGljaXQga2V5IGRldGVybWluZWQgYnkgdGhlIGluZGV4IGlu
IHRoZSBzZXRcblx0ICByZXR1cm4gaW5kZXgudG9TdHJpbmcoMzYpO1xuXHR9XG5cdFxuXHQvKipc
blx0ICogQHBhcmFtIHs/Kn0gY2hpbGRyZW4gQ2hpbGRyZW4gdHJlZSBjb250YWluZXIuXG5cdCAq
IEBwYXJhbSB7IXN0cmluZ30gbmFtZVNvRmFyIE5hbWUgb2YgdGhlIGtleSBwYXRoIHNvIGZhci5c
blx0ICogQHBhcmFtIHshZnVuY3Rpb259IGNhbGxiYWNrIENhbGxiYWNrIHRvIGludm9rZSB3aXRo
IGVhY2ggY2hpbGQgZm91bmQuXG5cdCAqIEBwYXJhbSB7Pyp9IHRyYXZlcnNlQ29udGV4dCBVc2Vk
IHRvIHBhc3MgaW5mb3JtYXRpb24gdGhyb3VnaG91dCB0aGUgdHJhdmVyc2FsXG5cdCAqIHByb2Nl
c3MuXG5cdCAqIEByZXR1cm4geyFudW1iZXJ9IFRoZSBudW1iZXIgb2YgY2hpbGRyZW4gaW4gdGhp
cyBzdWJ0cmVlLlxuXHQgKi9cblx0ZnVuY3Rpb24gdHJhdmVyc2VBbGxDaGlsZHJlbkltcGwoY2hp
bGRyZW4sIG5hbWVTb0ZhciwgY2FsbGJhY2ssIHRyYXZlcnNlQ29udGV4dCkge1xuXHQgIHZhciB0
eXBlID0gdHlwZW9mIGNoaWxkcmVuO1xuXHRcblx0ICBpZiAodHlwZSA9PT0gJ3VuZGVmaW5lZCcg
fHwgdHlwZSA9PT0gJ2Jvb2xlYW4nKSB7XG5cdCAgICAvLyBBbGwgb2YgdGhlIGFib3ZlIGFyZSBw
ZXJjZWl2ZWQgYXMgbnVsbC5cblx0ICAgIGNoaWxkcmVuID0gbnVsbDtcblx0ICB9XG5cdFxuXHQg
IGlmIChjaGlsZHJlbiA9PT0gbnVsbCB8fCB0eXBlID09PSAnc3RyaW5nJyB8fCB0eXBlID09PSAn
bnVtYmVyJyB8fFxuXHQgIC8vIFRoZSBmb2xsb3dpbmcgaXMgaW5saW5lZCBmcm9tIFJlYWN0RWxl
bWVudC4gVGhpcyBtZWFucyB3ZSBjYW4gb3B0aW1pemVcblx0ICAvLyBzb21lIGNoZWNrcy4gUmVh
Y3QgRmliZXIgYWxzbyBpbmxpbmVzIHRoaXMgbG9naWMgZm9yIHNpbWlsYXIgcHVycG9zZXMuXG5c
dCAgdHlwZSA9PT0gJ29iamVjdCcgJiYgY2hpbGRyZW4uJCR0eXBlb2YgPT09IFJFQUNUX0VMRU1F
TlRfVFlQRSkge1xuXHQgICAgY2FsbGJhY2sodHJhdmVyc2VDb250ZXh0LCBjaGlsZHJlbixcblx0
ICAgIC8vIElmIGl0J3MgdGhlIG9ubHkgY2hpbGQsIHRyZWF0IHRoZSBuYW1lIGFzIGlmIGl0IHdh
cyB3cmFwcGVkIGluIGFuIGFycmF5XG5cdCAgICAvLyBzbyB0aGF0IGl0J3MgY29uc2lzdGVudCBp
ZiB0aGUgbnVtYmVyIG9mIGNoaWxkcmVuIGdyb3dzLlxuXHQgICAgbmFtZVNvRmFyID09PSAnJyA/
IFNFUEFSQVRPUiArIGdldENvbXBvbmVudEtleShjaGlsZHJlbiwgMCkgOiBuYW1lU29GYXIpO1xu
XHQgICAgcmV0dXJuIDE7XG5cdCAgfVxuXHRcblx0ICB2YXIgY2hpbGQ7XG5cdCAgdmFyIG5leHRO
YW1lO1xuXHQgIHZhciBzdWJ0cmVlQ291bnQgPSAwOyAvLyBDb3VudCBvZiBjaGlsZHJlbiBmb3Vu
ZCBpbiB0aGUgY3VycmVudCBzdWJ0cmVlLlxuXHQgIHZhciBuZXh0TmFtZVByZWZpeCA9IG5hbWVT
b0ZhciA9PT0gJycgPyBTRVBBUkFUT1IgOiBuYW1lU29GYXIgKyBTVUJTRVBBUkFUT1I7XG5cdFxu
XHQgIGlmIChBcnJheS5pc0FycmF5KGNoaWxkcmVuKSkge1xuXHQgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCBjaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuXHQgICAgICBjaGlsZCA9IGNoaWxkcmVuW2ld
O1xuXHQgICAgICBuZXh0TmFtZSA9IG5leHROYW1lUHJlZml4ICsgZ2V0Q29tcG9uZW50S2V5KGNo
aWxkLCBpKTtcblx0ICAgICAgc3VidHJlZUNvdW50ICs9IHRyYXZlcnNlQWxsQ2hpbGRyZW5JbXBs
KGNoaWxkLCBuZXh0TmFtZSwgY2FsbGJhY2ssIHRyYXZlcnNlQ29udGV4dCk7XG5cdCAgICB9XG5c
dCAgfSBlbHNlIHtcblx0ICAgIHZhciBpdGVyYXRvckZuID0gZ2V0SXRlcmF0b3JGbihjaGlsZHJl
bik7XG5cdCAgICBpZiAoaXRlcmF0b3JGbikge1xuXHQgICAgICB2YXIgaXRlcmF0b3IgPSBpdGVy
YXRvckZuLmNhbGwoY2hpbGRyZW4pO1xuXHQgICAgICB2YXIgc3RlcDtcblx0ICAgICAgaWYgKGl0
ZXJhdG9yRm4gIT09IGNoaWxkcmVuLmVudHJpZXMpIHtcblx0ICAgICAgICB2YXIgaWkgPSAwO1xu
XHQgICAgICAgIHdoaWxlICghKHN0ZXAgPSBpdGVyYXRvci5uZXh0KCkpLmRvbmUpIHtcblx0ICAg
ICAgICAgIGNoaWxkID0gc3RlcC52YWx1ZTtcblx0ICAgICAgICAgIG5leHROYW1lID0gbmV4dE5h
bWVQcmVmaXggKyBnZXRDb21wb25lbnRLZXkoY2hpbGQsIGlpKyspO1xuXHQgICAgICAgICAgc3Vi
dHJlZUNvdW50ICs9IHRyYXZlcnNlQWxsQ2hpbGRyZW5JbXBsKGNoaWxkLCBuZXh0TmFtZSwgY2Fs
bGJhY2ssIHRyYXZlcnNlQ29udGV4dCk7XG5cdCAgICAgICAgfVxuXHQgICAgICB9IGVsc2Uge1xu
XHQgICAgICAgIGlmIChmYWxzZSkge1xuXHQgICAgICAgICAgdmFyIG1hcHNBc0NoaWxkcmVuQWRk
ZW5kdW0gPSAnJztcblx0ICAgICAgICAgIGlmIChSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50KSB7
XG5cdCAgICAgICAgICAgIHZhciBtYXBzQXNDaGlsZHJlbk93bmVyTmFtZSA9IFJlYWN0Q3VycmVu
dE93bmVyLmN1cnJlbnQuZ2V0TmFtZSgpO1xuXHQgICAgICAgICAgICBpZiAobWFwc0FzQ2hpbGRy
ZW5Pd25lck5hbWUpIHtcblx0ICAgICAgICAgICAgICBtYXBzQXNDaGlsZHJlbkFkZGVuZHVtID0g
JyBDaGVjayB0aGUgcmVuZGVyIG1ldGhvZCBvZiBgJyArIG1hcHNBc0NoaWxkcmVuT3duZXJOYW1l
ICsgJ2AuJztcblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgICAgfVxuXHQgICAgICAgICAgcHJv
Y2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZGlkV2FybkFib3V0
TWFwcywgJ1VzaW5nIE1hcHMgYXMgY2hpbGRyZW4gaXMgbm90IHlldCBmdWxseSBzdXBwb3J0ZWQu
IEl0IGlzIGFuICcgKyAnZXhwZXJpbWVudGFsIGZlYXR1cmUgdGhhdCBtaWdodCBiZSByZW1vdmVk
LiBDb252ZXJ0IGl0IHRvIGEgJyArICdzZXF1ZW5jZSAvIGl0ZXJhYmxlIG9mIGtleWVkIFJlYWN0
RWxlbWVudHMgaW5zdGVhZC4lcycsIG1hcHNBc0NoaWxkcmVuQWRkZW5kdW0pIDogdm9pZCAwO1xu
XHQgICAgICAgICAgZGlkV2FybkFib3V0TWFwcyA9IHRydWU7XG5cdCAgICAgICAgfVxuXHQgICAg
ICAgIC8vIEl0ZXJhdG9yIHdpbGwgcHJvdmlkZSBlbnRyeSBbayx2XSB0dXBsZXMgcmF0aGVyIHRo
YW4gdmFsdWVzLlxuXHQgICAgICAgIHdoaWxlICghKHN0ZXAgPSBpdGVyYXRvci5uZXh0KCkpLmRv
bmUpIHtcblx0ICAgICAgICAgIHZhciBlbnRyeSA9IHN0ZXAudmFsdWU7XG5cdCAgICAgICAgICBp
ZiAoZW50cnkpIHtcblx0ICAgICAgICAgICAgY2hpbGQgPSBlbnRyeVsxXTtcblx0ICAgICAgICAg
ICAgbmV4dE5hbWUgPSBuZXh0TmFtZVByZWZpeCArIEtleUVzY2FwZVV0aWxzLmVzY2FwZShlbnRy
eVswXSkgKyBTVUJTRVBBUkFUT1IgKyBnZXRDb21wb25lbnRLZXkoY2hpbGQsIDApO1xuXHQgICAg
ICAgICAgICBzdWJ0cmVlQ291bnQgKz0gdHJhdmVyc2VBbGxDaGlsZHJlbkltcGwoY2hpbGQsIG5l
eHROYW1lLCBjYWxsYmFjaywgdHJhdmVyc2VDb250ZXh0KTtcblx0ICAgICAgICAgIH1cblx0ICAg
ICAgICB9XG5cdCAgICAgIH1cblx0ICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ29iamVjdCcpIHtc
blx0ICAgICAgdmFyIGFkZGVuZHVtID0gJyc7XG5cdCAgICAgIGlmIChmYWxzZSkge1xuXHQgICAg
ICAgIGFkZGVuZHVtID0gJyBJZiB5b3UgbWVhbnQgdG8gcmVuZGVyIGEgY29sbGVjdGlvbiBvZiBj
aGlsZHJlbiwgdXNlIGFuIGFycmF5ICcgKyAnaW5zdGVhZCBvciB3cmFwIHRoZSBvYmplY3QgdXNp
bmcgY3JlYXRlRnJhZ21lbnQob2JqZWN0KSBmcm9tIHRoZSAnICsgJ1JlYWN0IGFkZC1vbnMuJztc
blx0ICAgICAgICBpZiAoY2hpbGRyZW4uX2lzUmVhY3RFbGVtZW50KSB7XG5cdCAgICAgICAgICBh
ZGRlbmR1bSA9IFwiIEl0IGxvb2tzIGxpa2UgeW91J3JlIHVzaW5nIGFuIGVsZW1lbnQgY3JlYXRl
ZCBieSBhIGRpZmZlcmVudCBcIiArICd2ZXJzaW9uIG9mIFJlYWN0LiBNYWtlIHN1cmUgdG8gdXNl
IG9ubHkgb25lIGNvcHkgb2YgUmVhY3QuJztcblx0ICAgICAgICB9XG5cdCAgICAgICAgaWYgKFJl
YWN0Q3VycmVudE93bmVyLmN1cnJlbnQpIHtcblx0ICAgICAgICAgIHZhciBuYW1lID0gUmVhY3RD
dXJyZW50T3duZXIuY3VycmVudC5nZXROYW1lKCk7XG5cdCAgICAgICAgICBpZiAobmFtZSkge1xu
XHQgICAgICAgICAgICBhZGRlbmR1bSArPSAnIENoZWNrIHRoZSByZW5kZXIgbWV0aG9kIG9mIGAn
ICsgbmFtZSArICdgLic7XG5cdCAgICAgICAgICB9XG5cdCAgICAgICAgfVxuXHQgICAgICB9XG5c
dCAgICAgIHZhciBjaGlsZHJlblN0cmluZyA9IFN0cmluZyhjaGlsZHJlbik7XG5cdCAgICAgICB0
cnVlID8gIGZhbHNlID8gaW52YXJpYW50KGZhbHNlLCAnT2JqZWN0cyBhcmUgbm90IHZhbGlkIGFz
IGEgUmVhY3QgY2hpbGQgKGZvdW5kOiAlcykuJXMnLCBjaGlsZHJlblN0cmluZyA9PT0gJ1tvYmpl
Y3QgT2JqZWN0XScgPyAnb2JqZWN0IHdpdGgga2V5cyB7JyArIE9iamVjdC5rZXlzKGNoaWxkcmVu
KS5qb2luKCcsICcpICsgJ30nIDogY2hpbGRyZW5TdHJpbmcsIGFkZGVuZHVtKSA6IF9wcm9kSW52
YXJpYW50KCczMScsIGNoaWxkcmVuU3RyaW5nID09PSAnW29iamVjdCBPYmplY3RdJyA/ICdvYmpl
Y3Qgd2l0aCBrZXlzIHsnICsgT2JqZWN0LmtleXMoY2hpbGRyZW4pLmpvaW4oJywgJykgKyAnfScg
OiBjaGlsZHJlblN0cmluZywgYWRkZW5kdW0pIDogdm9pZCAwO1xuXHQgICAgfVxuXHQgIH1cblx0
XG5cdCAgcmV0dXJuIHN1YnRyZWVDb3VudDtcblx0fVxuXHRcblx0LyoqXG5cdCAqIFRyYXZlcnNl
cyBjaGlsZHJlbiB0aGF0IGFyZSB0eXBpY2FsbHkgc3BlY2lmaWVkIGFzIGBwcm9wcy5jaGlsZHJl
bmAsIGJ1dFxuXHQgKiBtaWdodCBhbHNvIGJlIHNwZWNpZmllZCB0aHJvdWdoIGF0dHJpYnV0ZXM6
XG5cdCAqXG5cdCAqIC0gYHRyYXZlcnNlQWxsQ2hpbGRyZW4odGhpcy5wcm9wcy5jaGlsZHJlbiwg
Li4uKWBcblx0ICogLSBgdHJhdmVyc2VBbGxDaGlsZHJlbih0aGlzLnByb3BzLmxlZnRQYW5lbENo
aWxkcmVuLCAuLi4pYFxuXHQgKlxuXHQgKiBUaGUgYHRyYXZlcnNlQ29udGV4dGAgaXMgYW4gb3B0
aW9uYWwgYXJndW1lbnQgdGhhdCBpcyBwYXNzZWQgdGhyb3VnaCB0aGVcblx0ICogZW50aXJlIHRy
YXZlcnNhbC4gSXQgY2FuIGJlIHVzZWQgdG8gc3RvcmUgYWNjdW11bGF0aW9ucyBvciBhbnl0aGlu
ZyBlbHNlIHRoYXRcblx0ICogdGhlIGNhbGxiYWNrIG1pZ2h0IGZpbmQgcmVsZXZhbnQuXG5cdCAq
XG5cdCAqIEBwYXJhbSB7Pyp9IGNoaWxkcmVuIENoaWxkcmVuIHRyZWUgb2JqZWN0LlxuXHQgKiBA
cGFyYW0geyFmdW5jdGlvbn0gY2FsbGJhY2sgVG8gaW52b2tlIHVwb24gdHJhdmVyc2luZyBlYWNo
IGNoaWxkLlxuXHQgKiBAcGFyYW0gez8qfSB0cmF2ZXJzZUNvbnRleHQgQ29udGV4dCBmb3IgdHJh
dmVyc2FsLlxuXHQgKiBAcmV0dXJuIHshbnVtYmVyfSBUaGUgbnVtYmVyIG9mIGNoaWxkcmVuIGlu
IHRoaXMgc3VidHJlZS5cblx0ICovXG5cdGZ1bmN0aW9uIHRyYXZlcnNlQWxsQ2hpbGRyZW4oY2hp
bGRyZW4sIGNhbGxiYWNrLCB0cmF2ZXJzZUNvbnRleHQpIHtcblx0ICBpZiAoY2hpbGRyZW4gPT0g
bnVsbCkge1xuXHQgICAgcmV0dXJuIDA7XG5cdCAgfVxuXHRcblx0ICByZXR1cm4gdHJhdmVyc2VB
bGxDaGlsZHJlbkltcGwoY2hpbGRyZW4sICcnLCBjYWxsYmFjaywgdHJhdmVyc2VDb250ZXh0KTtc
blx0fVxuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSB0cmF2ZXJzZUFsbENoaWxkcmVuO1xuXG4vKioq
LyB9LFxuLyogMjI1ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFj
a19yZXF1aXJlX18pIHtcblxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHRleHBvcnRzLl9fZXNNb2R1
bGUgPSB0cnVlO1xuXHRcblx0dmFyIF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlv
biAodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7
IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsgaWYg
KE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsgdGFy
Z2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IH0gcmV0dXJuIHRhcmdldDsgfTtcblx0XG5cdGV4
cG9ydHNbJ2RlZmF1bHQnXSA9IGFwcGx5TWlkZGxld2FyZTtcblx0XG5cdHZhciBfY29tcG9zZSA9
IF9fd2VicGFja19yZXF1aXJlX18oOTQpO1xuXHRcblx0dmFyIF9jb21wb3NlMiA9IF9pbnRlcm9w
UmVxdWlyZURlZmF1bHQoX2NvbXBvc2UpO1xuXHRcblx0ZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJl
RGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgJ2Rl
ZmF1bHQnOiBvYmogfTsgfVxuXHRcblx0LyoqXG5cdCAqIENyZWF0ZXMgYSBzdG9yZSBlbmhhbmNl
ciB0aGF0IGFwcGxpZXMgbWlkZGxld2FyZSB0byB0aGUgZGlzcGF0Y2ggbWV0aG9kXG5cdCAqIG9m
IHRoZSBSZWR1eCBzdG9yZS4gVGhpcyBpcyBoYW5keSBmb3IgYSB2YXJpZXR5IG9mIHRhc2tzLCBz
dWNoIGFzIGV4cHJlc3Npbmdcblx0ICogYXN5bmNocm9ub3VzIGFjdGlvbnMgaW4gYSBjb25jaXNl
IG1hbm5lciwgb3IgbG9nZ2luZyBldmVyeSBhY3Rpb24gcGF5bG9hZC5cblx0ICpcblx0ICogU2Vl
IGByZWR1eC10aHVua2AgcGFja2FnZSBhcyBhbiBleGFtcGxlIG9mIHRoZSBSZWR1eCBtaWRkbGV3
YXJlLlxuXHQgKlxuXHQgKiBCZWNhdXNlIG1pZGRsZXdhcmUgaXMgcG90ZW50aWFsbHkgYXN5bmNo
cm9ub3VzLCB0aGlzIHNob3VsZCBiZSB0aGUgZmlyc3Rcblx0ICogc3RvcmUgZW5oYW5jZXIgaW4g
dGhlIGNvbXBvc2l0aW9uIGNoYWluLlxuXHQgKlxuXHQgKiBOb3RlIHRoYXQgZWFjaCBtaWRkbGV3
YXJlIHdpbGwgYmUgZ2l2ZW4gdGhlIGBkaXNwYXRjaGAgYW5kIGBnZXRTdGF0ZWAgZnVuY3Rpb25z
XG5cdCAqIGFzIG5hbWVkIGFyZ3VtZW50cy5cblx0ICpcblx0ICogQHBhcmFtIHsuLi5GdW5jdGlv
bn0gbWlkZGxld2FyZXMgVGhlIG1pZGRsZXdhcmUgY2hhaW4gdG8gYmUgYXBwbGllZC5cblx0ICog
QHJldHVybnMge0Z1bmN0aW9ufSBBIHN0b3JlIGVuaGFuY2VyIGFwcGx5aW5nIHRoZSBtaWRkbGV3
YXJlLlxuXHQgKi9cblx0ZnVuY3Rpb24gYXBwbHlNaWRkbGV3YXJlKCkge1xuXHQgIGZvciAodmFy
IF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBtaWRkbGV3YXJlcyA9IEFycmF5KF9sZW4pLCBfa2V5
ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuXHQgICAgbWlkZGxld2FyZXNbX2tleV0gPSBh
cmd1bWVudHNbX2tleV07XG5cdCAgfVxuXHRcblx0ICByZXR1cm4gZnVuY3Rpb24gKGNyZWF0ZVN0
b3JlKSB7XG5cdCAgICByZXR1cm4gZnVuY3Rpb24gKHJlZHVjZXIsIHByZWxvYWRlZFN0YXRlLCBl
bmhhbmNlcikge1xuXHQgICAgICB2YXIgc3RvcmUgPSBjcmVhdGVTdG9yZShyZWR1Y2VyLCBwcmVs
b2FkZWRTdGF0ZSwgZW5oYW5jZXIpO1xuXHQgICAgICB2YXIgX2Rpc3BhdGNoID0gc3RvcmUuZGlz
cGF0Y2g7XG5cdCAgICAgIHZhciBjaGFpbiA9IFtdO1xuXHRcblx0ICAgICAgdmFyIG1pZGRsZXdh
cmVBUEkgPSB7XG5cdCAgICAgICAgZ2V0U3RhdGU6IHN0b3JlLmdldFN0YXRlLFxuXHQgICAgICAg
IGRpc3BhdGNoOiBmdW5jdGlvbiBkaXNwYXRjaChhY3Rpb24pIHtcblx0ICAgICAgICAgIHJldHVy
biBfZGlzcGF0Y2goYWN0aW9uKTtcblx0ICAgICAgICB9XG5cdCAgICAgIH07XG5cdCAgICAgIGNo
YWluID0gbWlkZGxld2FyZXMubWFwKGZ1bmN0aW9uIChtaWRkbGV3YXJlKSB7XG5cdCAgICAgICAg
cmV0dXJuIG1pZGRsZXdhcmUobWlkZGxld2FyZUFQSSk7XG5cdCAgICAgIH0pO1xuXHQgICAgICBf
ZGlzcGF0Y2ggPSBfY29tcG9zZTJbJ2RlZmF1bHQnXS5hcHBseSh1bmRlZmluZWQsIGNoYWluKShz
dG9yZS5kaXNwYXRjaCk7XG5cdFxuXHQgICAgICByZXR1cm4gX2V4dGVuZHMoe30sIHN0b3JlLCB7
XG5cdCAgICAgICAgZGlzcGF0Y2g6IF9kaXNwYXRjaFxuXHQgICAgICB9KTtcblx0ICAgIH07XG5c
dCAgfTtcblx0fVxuXG4vKioqLyB9LFxuLyogMjI2ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUs
IGV4cG9ydHMpIHtcblxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHRleHBvcnRzLl9fZXNNb2R1bGUg
PSB0cnVlO1xuXHRleHBvcnRzWydkZWZhdWx0J10gPSBiaW5kQWN0aW9uQ3JlYXRvcnM7XG5cdGZ1
bmN0aW9uIGJpbmRBY3Rpb25DcmVhdG9yKGFjdGlvbkNyZWF0b3IsIGRpc3BhdGNoKSB7XG5cdCAg
cmV0dXJuIGZ1bmN0aW9uICgpIHtcblx0ICAgIHJldHVybiBkaXNwYXRjaChhY3Rpb25DcmVhdG9y
LmFwcGx5KHVuZGVmaW5lZCwgYXJndW1lbnRzKSk7XG5cdCAgfTtcblx0fVxuXHRcblx0LyoqXG5c
dCAqIFR1cm5zIGFuIG9iamVjdCB3aG9zZSB2YWx1ZXMgYXJlIGFjdGlvbiBjcmVhdG9ycywgaW50
byBhbiBvYmplY3Qgd2l0aCB0aGVcblx0ICogc2FtZSBrZXlzLCBidXQgd2l0aCBldmVyeSBmdW5j
dGlvbiB3cmFwcGVkIGludG8gYSBgZGlzcGF0Y2hgIGNhbGwgc28gdGhleVxuXHQgKiBtYXkgYmUg
aW52b2tlZCBkaXJlY3RseS4gVGhpcyBpcyBqdXN0IGEgY29udmVuaWVuY2UgbWV0aG9kLCBhcyB5
b3UgY2FuIGNhbGxcblx0ICogYHN0b3JlLmRpc3BhdGNoKE15QWN0aW9uQ3JlYXRvcnMuZG9Tb21l
dGhpbmcoKSlgIHlvdXJzZWxmIGp1c3QgZmluZS5cblx0ICpcblx0ICogRm9yIGNvbnZlbmllbmNl
LCB5b3UgY2FuIGFsc28gcGFzcyBhIHNpbmdsZSBmdW5jdGlvbiBhcyB0aGUgZmlyc3QgYXJndW1l
bnQsXG5cdCAqIGFuZCBnZXQgYSBmdW5jdGlvbiBpbiByZXR1cm4uXG5cdCAqXG5cdCAqIEBwYXJh
bSB7RnVuY3Rpb258T2JqZWN0fSBhY3Rpb25DcmVhdG9ycyBBbiBvYmplY3Qgd2hvc2UgdmFsdWVz
IGFyZSBhY3Rpb25cblx0ICogY3JlYXRvciBmdW5jdGlvbnMuIE9uZSBoYW5keSB3YXkgdG8gb2J0
YWluIGl0IGlzIHRvIHVzZSBFUzYgYGltcG9ydCAqIGFzYFxuXHQgKiBzeW50YXguIFlvdSBtYXkg
YWxzbyBwYXNzIGEgc2luZ2xlIGZ1bmN0aW9uLlxuXHQgKlxuXHQgKiBAcGFyYW0ge0Z1bmN0aW9u
fSBkaXNwYXRjaCBUaGUgYGRpc3BhdGNoYCBmdW5jdGlvbiBhdmFpbGFibGUgb24geW91ciBSZWR1
eFxuXHQgKiBzdG9yZS5cblx0ICpcblx0ICogQHJldHVybnMge0Z1bmN0aW9ufE9iamVjdH0gVGhl
IG9iamVjdCBtaW1pY2tpbmcgdGhlIG9yaWdpbmFsIG9iamVjdCwgYnV0IHdpdGhcblx0ICogZXZl
cnkgYWN0aW9uIGNyZWF0b3Igd3JhcHBlZCBpbnRvIHRoZSBgZGlzcGF0Y2hgIGNhbGwuIElmIHlv
dSBwYXNzZWQgYVxuXHQgKiBmdW5jdGlvbiBhcyBgYWN0aW9uQ3JlYXRvcnNgLCB0aGUgcmV0dXJu
IHZhbHVlIHdpbGwgYWxzbyBiZSBhIHNpbmdsZVxuXHQgKiBmdW5jdGlvbi5cblx0ICovXG5cdGZ1
bmN0aW9uIGJpbmRBY3Rpb25DcmVhdG9ycyhhY3Rpb25DcmVhdG9ycywgZGlzcGF0Y2gpIHtcblx0
ICBpZiAodHlwZW9mIGFjdGlvbkNyZWF0b3JzID09PSAnZnVuY3Rpb24nKSB7XG5cdCAgICByZXR1
cm4gYmluZEFjdGlvbkNyZWF0b3IoYWN0aW9uQ3JlYXRvcnMsIGRpc3BhdGNoKTtcblx0ICB9XG5c
dFxuXHQgIGlmICh0eXBlb2YgYWN0aW9uQ3JlYXRvcnMgIT09ICdvYmplY3QnIHx8IGFjdGlvbkNy
ZWF0b3JzID09PSBudWxsKSB7XG5cdCAgICB0aHJvdyBuZXcgRXJyb3IoJ2JpbmRBY3Rpb25DcmVh
dG9ycyBleHBlY3RlZCBhbiBvYmplY3Qgb3IgYSBmdW5jdGlvbiwgaW5zdGVhZCByZWNlaXZlZCAn
ICsgKGFjdGlvbkNyZWF0b3JzID09PSBudWxsID8gJ251bGwnIDogdHlwZW9mIGFjdGlvbkNyZWF0
b3JzKSArICcuICcgKyAnRGlkIHlvdSB3cml0ZSBcImltcG9ydCBBY3Rpb25DcmVhdG9ycyBmcm9t
XCIgaW5zdGVhZCBvZiBcImltcG9ydCAqIGFzIEFjdGlvbkNyZWF0b3JzIGZyb21cIj8nKTtcblx0
ICB9XG5cdFxuXHQgIHZhciBrZXlzID0gT2JqZWN0LmtleXMoYWN0aW9uQ3JlYXRvcnMpO1xuXHQg
IHZhciBib3VuZEFjdGlvbkNyZWF0b3JzID0ge307XG5cdCAgZm9yICh2YXIgaSA9IDA7IGkgPCBr
ZXlzLmxlbmd0aDsgaSsrKSB7XG5cdCAgICB2YXIga2V5ID0ga2V5c1tpXTtcblx0ICAgIHZhciBh
Y3Rpb25DcmVhdG9yID0gYWN0aW9uQ3JlYXRvcnNba2V5XTtcblx0ICAgIGlmICh0eXBlb2YgYWN0
aW9uQ3JlYXRvciA9PT0gJ2Z1bmN0aW9uJykge1xuXHQgICAgICBib3VuZEFjdGlvbkNyZWF0b3Jz
W2tleV0gPSBiaW5kQWN0aW9uQ3JlYXRvcihhY3Rpb25DcmVhdG9yLCBkaXNwYXRjaCk7XG5cdCAg
ICB9XG5cdCAgfVxuXHQgIHJldHVybiBib3VuZEFjdGlvbkNyZWF0b3JzO1xuXHR9XG5cbi8qKiov
IH0sXG4vKiAyMjcgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNr
X3JlcXVpcmVfXykge1xuXG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdGV4cG9ydHMuX19lc01vZHVs
ZSA9IHRydWU7XG5cdGV4cG9ydHNbJ2RlZmF1bHQnXSA9IGNvbWJpbmVSZWR1Y2Vycztcblx0XG5c
dHZhciBfY3JlYXRlU3RvcmUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDk1KTtcblx0XG5cdHZhciBf
aXNQbGFpbk9iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oMzMpO1xuXHRcblx0dmFyIF9pc1Bs
YWluT2JqZWN0MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2lzUGxhaW5PYmplY3QpO1xuXHRc
blx0dmFyIF93YXJuaW5nID0gX193ZWJwYWNrX3JlcXVpcmVfXyg5Nik7XG5cdFxuXHR2YXIgX3dh
cm5pbmcyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfd2FybmluZyk7XG5cdFxuXHRmdW5jdGlv
biBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9k
dWxlID8gb2JqIDogeyAnZGVmYXVsdCc6IG9iaiB9OyB9XG5cdFxuXHRmdW5jdGlvbiBnZXRVbmRl
ZmluZWRTdGF0ZUVycm9yTWVzc2FnZShrZXksIGFjdGlvbikge1xuXHQgIHZhciBhY3Rpb25UeXBl
ID0gYWN0aW9uICYmIGFjdGlvbi50eXBlO1xuXHQgIHZhciBhY3Rpb25OYW1lID0gYWN0aW9uVHlw
ZSAmJiAnXCInICsgYWN0aW9uVHlwZS50b1N0cmluZygpICsgJ1wiJyB8fCAnYW4gYWN0aW9uJztc
blx0XG5cdCAgcmV0dXJuICdHaXZlbiBhY3Rpb24gJyArIGFjdGlvbk5hbWUgKyAnLCByZWR1Y2Vy
IFwiJyArIGtleSArICdcIiByZXR1cm5lZCB1bmRlZmluZWQuICcgKyAnVG8gaWdub3JlIGFuIGFj
dGlvbiwgeW91IG11c3QgZXhwbGljaXRseSByZXR1cm4gdGhlIHByZXZpb3VzIHN0YXRlLiAnICsg
J0lmIHlvdSB3YW50IHRoaXMgcmVkdWNlciB0byBob2xkIG5vIHZhbHVlLCB5b3UgY2FuIHJldHVy
biBudWxsIGluc3RlYWQgb2YgdW5kZWZpbmVkLic7XG5cdH1cblx0XG5cdGZ1bmN0aW9uIGdldFVu
ZXhwZWN0ZWRTdGF0ZVNoYXBlV2FybmluZ01lc3NhZ2UoaW5wdXRTdGF0ZSwgcmVkdWNlcnMsIGFj
dGlvbiwgdW5leHBlY3RlZEtleUNhY2hlKSB7XG5cdCAgdmFyIHJlZHVjZXJLZXlzID0gT2JqZWN0
LmtleXMocmVkdWNlcnMpO1xuXHQgIHZhciBhcmd1bWVudE5hbWUgPSBhY3Rpb24gJiYgYWN0aW9u
LnR5cGUgPT09IF9jcmVhdGVTdG9yZS5BY3Rpb25UeXBlcy5JTklUID8gJ3ByZWxvYWRlZFN0YXRl
IGFyZ3VtZW50IHBhc3NlZCB0byBjcmVhdGVTdG9yZScgOiAncHJldmlvdXMgc3RhdGUgcmVjZWl2
ZWQgYnkgdGhlIHJlZHVjZXInO1xuXHRcblx0ICBpZiAocmVkdWNlcktleXMubGVuZ3RoID09PSAw
KSB7XG5cdCAgICByZXR1cm4gJ1N0b3JlIGRvZXMgbm90IGhhdmUgYSB2YWxpZCByZWR1Y2VyLiBN
YWtlIHN1cmUgdGhlIGFyZ3VtZW50IHBhc3NlZCAnICsgJ3RvIGNvbWJpbmVSZWR1Y2VycyBpcyBh
biBvYmplY3Qgd2hvc2UgdmFsdWVzIGFyZSByZWR1Y2Vycy4nO1xuXHQgIH1cblx0XG5cdCAgaWYg
KCEoMCwgX2lzUGxhaW5PYmplY3QyWydkZWZhdWx0J10pKGlucHV0U3RhdGUpKSB7XG5cdCAgICBy
ZXR1cm4gJ1RoZSAnICsgYXJndW1lbnROYW1lICsgJyBoYXMgdW5leHBlY3RlZCB0eXBlIG9mIFwi
JyArIHt9LnRvU3RyaW5nLmNhbGwoaW5wdXRTdGF0ZSkubWF0Y2goL1xccyhbYS16fEEtWl0rKS8p
WzFdICsgJ1wiLiBFeHBlY3RlZCBhcmd1bWVudCB0byBiZSBhbiBvYmplY3Qgd2l0aCB0aGUgZm9s
bG93aW5nICcgKyAoJ2tleXM6IFwiJyArIHJlZHVjZXJLZXlzLmpvaW4oJ1wiLCBcIicpICsgJ1wi
Jyk7XG5cdCAgfVxuXHRcblx0ICB2YXIgdW5leHBlY3RlZEtleXMgPSBPYmplY3Qua2V5cyhpbnB1
dFN0YXRlKS5maWx0ZXIoZnVuY3Rpb24gKGtleSkge1xuXHQgICAgcmV0dXJuICFyZWR1Y2Vycy5o
YXNPd25Qcm9wZXJ0eShrZXkpICYmICF1bmV4cGVjdGVkS2V5Q2FjaGVba2V5XTtcblx0ICB9KTtc
blx0XG5cdCAgdW5leHBlY3RlZEtleXMuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG5cdCAgICB1
bmV4cGVjdGVkS2V5Q2FjaGVba2V5XSA9IHRydWU7XG5cdCAgfSk7XG5cdFxuXHQgIGlmICh1bmV4
cGVjdGVkS2V5cy5sZW5ndGggPiAwKSB7XG5cdCAgICByZXR1cm4gJ1VuZXhwZWN0ZWQgJyArICh1
bmV4cGVjdGVkS2V5cy5sZW5ndGggPiAxID8gJ2tleXMnIDogJ2tleScpICsgJyAnICsgKCdcIicg
KyB1bmV4cGVjdGVkS2V5cy5qb2luKCdcIiwgXCInKSArICdcIiBmb3VuZCBpbiAnICsgYXJndW1l
bnROYW1lICsgJy4gJykgKyAnRXhwZWN0ZWQgdG8gZmluZCBvbmUgb2YgdGhlIGtub3duIHJlZHVj
ZXIga2V5cyBpbnN0ZWFkOiAnICsgKCdcIicgKyByZWR1Y2VyS2V5cy5qb2luKCdcIiwgXCInKSAr
ICdcIi4gVW5leHBlY3RlZCBrZXlzIHdpbGwgYmUgaWdub3JlZC4nKTtcblx0ICB9XG5cdH1cblx0
XG5cdGZ1bmN0aW9uIGFzc2VydFJlZHVjZXJTaGFwZShyZWR1Y2Vycykge1xuXHQgIE9iamVjdC5r
ZXlzKHJlZHVjZXJzKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcblx0ICAgIHZhciByZWR1Y2Vy
ID0gcmVkdWNlcnNba2V5XTtcblx0ICAgIHZhciBpbml0aWFsU3RhdGUgPSByZWR1Y2VyKHVuZGVm
aW5lZCwgeyB0eXBlOiBfY3JlYXRlU3RvcmUuQWN0aW9uVHlwZXMuSU5JVCB9KTtcblx0XG5cdCAg
ICBpZiAodHlwZW9mIGluaXRpYWxTdGF0ZSA9PT0gJ3VuZGVmaW5lZCcpIHtcblx0ICAgICAgdGhy
b3cgbmV3IEVycm9yKCdSZWR1Y2VyIFwiJyArIGtleSArICdcIiByZXR1cm5lZCB1bmRlZmluZWQg
ZHVyaW5nIGluaXRpYWxpemF0aW9uLiAnICsgJ0lmIHRoZSBzdGF0ZSBwYXNzZWQgdG8gdGhlIHJl
ZHVjZXIgaXMgdW5kZWZpbmVkLCB5b3UgbXVzdCAnICsgJ2V4cGxpY2l0bHkgcmV0dXJuIHRoZSBp
bml0aWFsIHN0YXRlLiBUaGUgaW5pdGlhbCBzdGF0ZSBtYXkgJyArICdub3QgYmUgdW5kZWZpbmVk
LiBJZiB5b3UgZG9uXFwndCB3YW50IHRvIHNldCBhIHZhbHVlIGZvciB0aGlzIHJlZHVjZXIsICcg
KyAneW91IGNhbiB1c2UgbnVsbCBpbnN0ZWFkIG9mIHVuZGVmaW5lZC4nKTtcblx0ICAgIH1cblx0
XG5cdCAgICB2YXIgdHlwZSA9ICdAQHJlZHV4L1BST0JFX1VOS05PV05fQUNUSU9OXycgKyBNYXRo
LnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zdWJzdHJpbmcoNykuc3BsaXQoJycpLmpvaW4oJy4nKTtc
blx0ICAgIGlmICh0eXBlb2YgcmVkdWNlcih1bmRlZmluZWQsIHsgdHlwZTogdHlwZSB9KSA9PT0g
J3VuZGVmaW5lZCcpIHtcblx0ICAgICAgdGhyb3cgbmV3IEVycm9yKCdSZWR1Y2VyIFwiJyArIGtl
eSArICdcIiByZXR1cm5lZCB1bmRlZmluZWQgd2hlbiBwcm9iZWQgd2l0aCBhIHJhbmRvbSB0eXBl
LiAnICsgKCdEb25cXCd0IHRyeSB0byBoYW5kbGUgJyArIF9jcmVhdGVTdG9yZS5BY3Rpb25UeXBl
cy5JTklUICsgJyBvciBvdGhlciBhY3Rpb25zIGluIFwicmVkdXgvKlwiICcpICsgJ25hbWVzcGFj
ZS4gVGhleSBhcmUgY29uc2lkZXJlZCBwcml2YXRlLiBJbnN0ZWFkLCB5b3UgbXVzdCByZXR1cm4g
dGhlICcgKyAnY3VycmVudCBzdGF0ZSBmb3IgYW55IHVua25vd24gYWN0aW9ucywgdW5sZXNzIGl0
IGlzIHVuZGVmaW5lZCwgJyArICdpbiB3aGljaCBjYXNlIHlvdSBtdXN0IHJldHVybiB0aGUgaW5p
dGlhbCBzdGF0ZSwgcmVnYXJkbGVzcyBvZiB0aGUgJyArICdhY3Rpb24gdHlwZS4gVGhlIGluaXRp
YWwgc3RhdGUgbWF5IG5vdCBiZSB1bmRlZmluZWQsIGJ1dCBjYW4gYmUgbnVsbC4nKTtcblx0ICAg
IH1cblx0ICB9KTtcblx0fVxuXHRcblx0LyoqXG5cdCAqIFR1cm5zIGFuIG9iamVjdCB3aG9zZSB2
YWx1ZXMgYXJlIGRpZmZlcmVudCByZWR1Y2VyIGZ1bmN0aW9ucywgaW50byBhIHNpbmdsZVxuXHQg
KiByZWR1Y2VyIGZ1bmN0aW9uLiBJdCB3aWxsIGNhbGwgZXZlcnkgY2hpbGQgcmVkdWNlciwgYW5k
IGdhdGhlciB0aGVpciByZXN1bHRzXG5cdCAqIGludG8gYSBzaW5nbGUgc3RhdGUgb2JqZWN0LCB3
aG9zZSBrZXlzIGNvcnJlc3BvbmQgdG8gdGhlIGtleXMgb2YgdGhlIHBhc3NlZFxuXHQgKiByZWR1
Y2VyIGZ1bmN0aW9ucy5cblx0ICpcblx0ICogQHBhcmFtIHtPYmplY3R9IHJlZHVjZXJzIEFuIG9i
amVjdCB3aG9zZSB2YWx1ZXMgY29ycmVzcG9uZCB0byBkaWZmZXJlbnRcblx0ICogcmVkdWNlciBm
dW5jdGlvbnMgdGhhdCBuZWVkIHRvIGJlIGNvbWJpbmVkIGludG8gb25lLiBPbmUgaGFuZHkgd2F5
IHRvIG9idGFpblxuXHQgKiBpdCBpcyB0byB1c2UgRVM2IGBpbXBvcnQgKiBhcyByZWR1Y2Vyc2Ag
c3ludGF4LiBUaGUgcmVkdWNlcnMgbWF5IG5ldmVyIHJldHVyblxuXHQgKiB1bmRlZmluZWQgZm9y
IGFueSBhY3Rpb24uIEluc3RlYWQsIHRoZXkgc2hvdWxkIHJldHVybiB0aGVpciBpbml0aWFsIHN0
YXRlXG5cdCAqIGlmIHRoZSBzdGF0ZSBwYXNzZWQgdG8gdGhlbSB3YXMgdW5kZWZpbmVkLCBhbmQg
dGhlIGN1cnJlbnQgc3RhdGUgZm9yIGFueVxuXHQgKiB1bnJlY29nbml6ZWQgYWN0aW9uLlxuXHQg
KlxuXHQgKiBAcmV0dXJucyB7RnVuY3Rpb259IEEgcmVkdWNlciBmdW5jdGlvbiB0aGF0IGludm9r
ZXMgZXZlcnkgcmVkdWNlciBpbnNpZGUgdGhlXG5cdCAqIHBhc3NlZCBvYmplY3QsIGFuZCBidWls
ZHMgYSBzdGF0ZSBvYmplY3Qgd2l0aCB0aGUgc2FtZSBzaGFwZS5cblx0ICovXG5cdGZ1bmN0aW9u
IGNvbWJpbmVSZWR1Y2VycyhyZWR1Y2Vycykge1xuXHQgIHZhciByZWR1Y2VyS2V5cyA9IE9iamVj
dC5rZXlzKHJlZHVjZXJzKTtcblx0ICB2YXIgZmluYWxSZWR1Y2VycyA9IHt9O1xuXHQgIGZvciAo
dmFyIGkgPSAwOyBpIDwgcmVkdWNlcktleXMubGVuZ3RoOyBpKyspIHtcblx0ICAgIHZhciBrZXkg
PSByZWR1Y2VyS2V5c1tpXTtcblx0XG5cdCAgICBpZiAoZmFsc2UpIHtcblx0ICAgICAgaWYgKHR5
cGVvZiByZWR1Y2Vyc1trZXldID09PSAndW5kZWZpbmVkJykge1xuXHQgICAgICAgICgwLCBfd2Fy
bmluZzJbJ2RlZmF1bHQnXSkoJ05vIHJlZHVjZXIgcHJvdmlkZWQgZm9yIGtleSBcIicgKyBrZXkg
KyAnXCInKTtcblx0ICAgICAgfVxuXHQgICAgfVxuXHRcblx0ICAgIGlmICh0eXBlb2YgcmVkdWNl
cnNba2V5XSA9PT0gJ2Z1bmN0aW9uJykge1xuXHQgICAgICBmaW5hbFJlZHVjZXJzW2tleV0gPSBy
ZWR1Y2Vyc1trZXldO1xuXHQgICAgfVxuXHQgIH1cblx0ICB2YXIgZmluYWxSZWR1Y2VyS2V5cyA9
IE9iamVjdC5rZXlzKGZpbmFsUmVkdWNlcnMpO1xuXHRcblx0ICB2YXIgdW5leHBlY3RlZEtleUNh
Y2hlID0gdm9pZCAwO1xuXHQgIGlmIChmYWxzZSkge1xuXHQgICAgdW5leHBlY3RlZEtleUNhY2hl
ID0ge307XG5cdCAgfVxuXHRcblx0ICB2YXIgc2hhcGVBc3NlcnRpb25FcnJvciA9IHZvaWQgMDtc
blx0ICB0cnkge1xuXHQgICAgYXNzZXJ0UmVkdWNlclNoYXBlKGZpbmFsUmVkdWNlcnMpO1xuXHQg
IH0gY2F0Y2ggKGUpIHtcblx0ICAgIHNoYXBlQXNzZXJ0aW9uRXJyb3IgPSBlO1xuXHQgIH1cblx0
XG5cdCAgcmV0dXJuIGZ1bmN0aW9uIGNvbWJpbmF0aW9uKCkge1xuXHQgICAgdmFyIHN0YXRlID0g
YXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgYXJndW1lbnRzWzBdICE9PSB1bmRlZmluZWQgPyBhcmd1
bWVudHNbMF0gOiB7fTtcblx0ICAgIHZhciBhY3Rpb24gPSBhcmd1bWVudHNbMV07XG5cdFxuXHQg
ICAgaWYgKHNoYXBlQXNzZXJ0aW9uRXJyb3IpIHtcblx0ICAgICAgdGhyb3cgc2hhcGVBc3NlcnRp
b25FcnJvcjtcblx0ICAgIH1cblx0XG5cdCAgICBpZiAoZmFsc2UpIHtcblx0ICAgICAgdmFyIHdh
cm5pbmdNZXNzYWdlID0gZ2V0VW5leHBlY3RlZFN0YXRlU2hhcGVXYXJuaW5nTWVzc2FnZShzdGF0
ZSwgZmluYWxSZWR1Y2VycywgYWN0aW9uLCB1bmV4cGVjdGVkS2V5Q2FjaGUpO1xuXHQgICAgICBp
ZiAod2FybmluZ01lc3NhZ2UpIHtcblx0ICAgICAgICAoMCwgX3dhcm5pbmcyWydkZWZhdWx0J10p
KHdhcm5pbmdNZXNzYWdlKTtcblx0ICAgICAgfVxuXHQgICAgfVxuXHRcblx0ICAgIHZhciBoYXND
aGFuZ2VkID0gZmFsc2U7XG5cdCAgICB2YXIgbmV4dFN0YXRlID0ge307XG5cdCAgICBmb3IgKHZh
ciBfaSA9IDA7IF9pIDwgZmluYWxSZWR1Y2VyS2V5cy5sZW5ndGg7IF9pKyspIHtcblx0ICAgICAg
dmFyIF9rZXkgPSBmaW5hbFJlZHVjZXJLZXlzW19pXTtcblx0ICAgICAgdmFyIHJlZHVjZXIgPSBm
aW5hbFJlZHVjZXJzW19rZXldO1xuXHQgICAgICB2YXIgcHJldmlvdXNTdGF0ZUZvcktleSA9IHN0
YXRlW19rZXldO1xuXHQgICAgICB2YXIgbmV4dFN0YXRlRm9yS2V5ID0gcmVkdWNlcihwcmV2aW91
c1N0YXRlRm9yS2V5LCBhY3Rpb24pO1xuXHQgICAgICBpZiAodHlwZW9mIG5leHRTdGF0ZUZvcktl
eSA9PT0gJ3VuZGVmaW5lZCcpIHtcblx0ICAgICAgICB2YXIgZXJyb3JNZXNzYWdlID0gZ2V0VW5k
ZWZpbmVkU3RhdGVFcnJvck1lc3NhZ2UoX2tleSwgYWN0aW9uKTtcblx0ICAgICAgICB0aHJvdyBu
ZXcgRXJyb3IoZXJyb3JNZXNzYWdlKTtcblx0ICAgICAgfVxuXHQgICAgICBuZXh0U3RhdGVbX2tl
eV0gPSBuZXh0U3RhdGVGb3JLZXk7XG5cdCAgICAgIGhhc0NoYW5nZWQgPSBoYXNDaGFuZ2VkIHx8
IG5leHRTdGF0ZUZvcktleSAhPT0gcHJldmlvdXNTdGF0ZUZvcktleTtcblx0ICAgIH1cblx0ICAg
IHJldHVybiBoYXNDaGFuZ2VkID8gbmV4dFN0YXRlIDogc3RhdGU7XG5cdCAgfTtcblx0fVxuXG4v
KioqLyB9LFxuLyogMjI4ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2Vi
cGFja19yZXF1aXJlX18pIHtcblxuXHRtb2R1bGUuZXhwb3J0cyA9IF9fd2VicGFja19yZXF1aXJl
X18oMjI5KTtcblxuXG4vKioqLyB9LFxuLyogMjI5ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUs
IGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvKiBXRUJQQUNLIFZBUiBJTkpF
Q1RJT04gKi8oZnVuY3Rpb24oZ2xvYmFsLCBtb2R1bGUpIHsndXNlIHN0cmljdCc7XG5cdFxuXHRP
YmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcblx0ICB2YWx1
ZTogdHJ1ZVxuXHR9KTtcblx0XG5cdHZhciBfcG9ueWZpbGwgPSBfX3dlYnBhY2tfcmVxdWlyZV9f
KDIzMCk7XG5cdFxuXHR2YXIgX3BvbnlmaWxsMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3Bv
bnlmaWxsKTtcblx0XG5cdGZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJl
dHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7ICdkZWZhdWx0Jzogb2JqIH07IH1c
blx0XG5cdHZhciByb290OyAvKiBnbG9iYWwgd2luZG93ICovXG5cdFxuXHRcblx0aWYgKHR5cGVv
ZiBzZWxmICE9PSAndW5kZWZpbmVkJykge1xuXHQgIHJvb3QgPSBzZWxmO1xuXHR9IGVsc2UgaWYg
KHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnKSB7XG5cdCAgcm9vdCA9IHdpbmRvdztcblx0
fSBlbHNlIGlmICh0eXBlb2YgZ2xvYmFsICE9PSAndW5kZWZpbmVkJykge1xuXHQgIHJvb3QgPSBn
bG9iYWw7XG5cdH0gZWxzZSBpZiAodHJ1ZSkge1xuXHQgIHJvb3QgPSBtb2R1bGU7XG5cdH0gZWxz
ZSB7XG5cdCAgcm9vdCA9IEZ1bmN0aW9uKCdyZXR1cm4gdGhpcycpKCk7XG5cdH1cblx0XG5cdHZh
ciByZXN1bHQgPSAoMCwgX3BvbnlmaWxsMlsnZGVmYXVsdCddKShyb290KTtcblx0ZXhwb3J0c1sn
ZGVmYXVsdCddID0gcmVzdWx0O1xuXHQvKiBXRUJQQUNLIFZBUiBJTkpFQ1RJT04gKi99LmNhbGwo
ZXhwb3J0cywgKGZ1bmN0aW9uKCkgeyByZXR1cm4gdGhpczsgfSgpKSwgX193ZWJwYWNrX3JlcXVp
cmVfXygyMTEpKG1vZHVsZSkpKVxuXG4vKioqLyB9LFxuLyogMjMwICovXG4vKioqLyBmdW5jdGlv
bihtb2R1bGUsIGV4cG9ydHMpIHtcblxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHRPYmplY3QuZGVm
aW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcblx0XHR2YWx1ZTogdHJ1ZVxu
XHR9KTtcblx0ZXhwb3J0c1snZGVmYXVsdCddID0gc3ltYm9sT2JzZXJ2YWJsZVBvbnlmaWxsO1xu
XHRmdW5jdGlvbiBzeW1ib2xPYnNlcnZhYmxlUG9ueWZpbGwocm9vdCkge1xuXHRcdHZhciByZXN1
bHQ7XG5cdFx0dmFyIF9TeW1ib2wgPSByb290LlN5bWJvbDtcblx0XG5cdFx0aWYgKHR5cGVvZiBf
U3ltYm9sID09PSAnZnVuY3Rpb24nKSB7XG5cdFx0XHRpZiAoX1N5bWJvbC5vYnNlcnZhYmxlKSB7
XG5cdFx0XHRcdHJlc3VsdCA9IF9TeW1ib2wub2JzZXJ2YWJsZTtcblx0XHRcdH0gZWxzZSB7XG5c
dFx0XHRcdHJlc3VsdCA9IF9TeW1ib2woJ29ic2VydmFibGUnKTtcblx0XHRcdFx0X1N5bWJvbC5v
YnNlcnZhYmxlID0gcmVzdWx0O1xuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHRyZXN1bHQg
PSAnQEBvYnNlcnZhYmxlJztcblx0XHR9XG5cdFxuXHRcdHJldHVybiByZXN1bHQ7XG5cdH07XG5c
bi8qKiovIH0sXG4vKiAyMzEgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193
ZWJwYWNrX3JlcXVpcmVfXywgX193ZWJwYWNrX21vZHVsZV90ZW1wbGF0ZV9hcmd1bWVudF8wX18p
IHtcblxuXHQvKipcblx0ICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5c
blx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBp
cyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAq
IExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4g
QW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBp
biB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpcblx0ICogXG5c
dCAqL1xuXHRcblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0dmFyIF9wcm9kSW52YXJpYW50ID0gX193
ZWJwYWNrX3JlcXVpcmVfXyhfX3dlYnBhY2tfbW9kdWxlX3RlbXBsYXRlX2FyZ3VtZW50XzBfXyk7
XG5cdFxuXHR2YXIgaW52YXJpYW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxKTtcblx0XG5cdC8q
KlxuXHQgKiBTdGF0aWMgcG9vbGVycy4gU2V2ZXJhbCBjdXN0b20gdmVyc2lvbnMgZm9yIGVhY2gg
cG90ZW50aWFsIG51bWJlciBvZlxuXHQgKiBhcmd1bWVudHMuIEEgY29tcGxldGVseSBnZW5lcmlj
IHBvb2xlciBpcyBlYXN5IHRvIGltcGxlbWVudCwgYnV0IHdvdWxkXG5cdCAqIHJlcXVpcmUgYWNj
ZXNzaW5nIHRoZSBgYXJndW1lbnRzYCBvYmplY3QuIEluIGVhY2ggb2YgdGhlc2UsIGB0aGlzYCBy
ZWZlcnMgdG9cblx0ICogdGhlIENsYXNzIGl0c2VsZiwgbm90IGFuIGluc3RhbmNlLiBJZiBhbnkg
b3RoZXJzIGFyZSBuZWVkZWQsIHNpbXBseSBhZGQgdGhlbVxuXHQgKiBoZXJlLCBvciBpbiB0aGVp
ciBvd24gZmlsZXMuXG5cdCAqL1xuXHR2YXIgb25lQXJndW1lbnRQb29sZXIgPSBmdW5jdGlvbiAo
Y29weUZpZWxkc0Zyb20pIHtcblx0ICB2YXIgS2xhc3MgPSB0aGlzO1xuXHQgIGlmIChLbGFzcy5p
bnN0YW5jZVBvb2wubGVuZ3RoKSB7XG5cdCAgICB2YXIgaW5zdGFuY2UgPSBLbGFzcy5pbnN0YW5j
ZVBvb2wucG9wKCk7XG5cdCAgICBLbGFzcy5jYWxsKGluc3RhbmNlLCBjb3B5RmllbGRzRnJvbSk7
XG5cdCAgICByZXR1cm4gaW5zdGFuY2U7XG5cdCAgfSBlbHNlIHtcblx0ICAgIHJldHVybiBuZXcg
S2xhc3MoY29weUZpZWxkc0Zyb20pO1xuXHQgIH1cblx0fTtcblx0XG5cdHZhciB0d29Bcmd1bWVu
dFBvb2xlciA9IGZ1bmN0aW9uIChhMSwgYTIpIHtcblx0ICB2YXIgS2xhc3MgPSB0aGlzO1xuXHQg
IGlmIChLbGFzcy5pbnN0YW5jZVBvb2wubGVuZ3RoKSB7XG5cdCAgICB2YXIgaW5zdGFuY2UgPSBL
bGFzcy5pbnN0YW5jZVBvb2wucG9wKCk7XG5cdCAgICBLbGFzcy5jYWxsKGluc3RhbmNlLCBhMSwg
YTIpO1xuXHQgICAgcmV0dXJuIGluc3RhbmNlO1xuXHQgIH0gZWxzZSB7XG5cdCAgICByZXR1cm4g
bmV3IEtsYXNzKGExLCBhMik7XG5cdCAgfVxuXHR9O1xuXHRcblx0dmFyIHRocmVlQXJndW1lbnRQ
b29sZXIgPSBmdW5jdGlvbiAoYTEsIGEyLCBhMykge1xuXHQgIHZhciBLbGFzcyA9IHRoaXM7XG5c
dCAgaWYgKEtsYXNzLmluc3RhbmNlUG9vbC5sZW5ndGgpIHtcblx0ICAgIHZhciBpbnN0YW5jZSA9
IEtsYXNzLmluc3RhbmNlUG9vbC5wb3AoKTtcblx0ICAgIEtsYXNzLmNhbGwoaW5zdGFuY2UsIGEx
LCBhMiwgYTMpO1xuXHQgICAgcmV0dXJuIGluc3RhbmNlO1xuXHQgIH0gZWxzZSB7XG5cdCAgICBy
ZXR1cm4gbmV3IEtsYXNzKGExLCBhMiwgYTMpO1xuXHQgIH1cblx0fTtcblx0XG5cdHZhciBmb3Vy
QXJndW1lbnRQb29sZXIgPSBmdW5jdGlvbiAoYTEsIGEyLCBhMywgYTQpIHtcblx0ICB2YXIgS2xh
c3MgPSB0aGlzO1xuXHQgIGlmIChLbGFzcy5pbnN0YW5jZVBvb2wubGVuZ3RoKSB7XG5cdCAgICB2
YXIgaW5zdGFuY2UgPSBLbGFzcy5pbnN0YW5jZVBvb2wucG9wKCk7XG5cdCAgICBLbGFzcy5jYWxs
KGluc3RhbmNlLCBhMSwgYTIsIGEzLCBhNCk7XG5cdCAgICByZXR1cm4gaW5zdGFuY2U7XG5cdCAg
fSBlbHNlIHtcblx0ICAgIHJldHVybiBuZXcgS2xhc3MoYTEsIGEyLCBhMywgYTQpO1xuXHQgIH1c
blx0fTtcblx0XG5cdHZhciBzdGFuZGFyZFJlbGVhc2VyID0gZnVuY3Rpb24gKGluc3RhbmNlKSB7
XG5cdCAgdmFyIEtsYXNzID0gdGhpcztcblx0ICAhKGluc3RhbmNlIGluc3RhbmNlb2YgS2xhc3Mp
ID8gIGZhbHNlID8gaW52YXJpYW50KGZhbHNlLCAnVHJ5aW5nIHRvIHJlbGVhc2UgYW4gaW5zdGFu
Y2UgaW50byBhIHBvb2wgb2YgYSBkaWZmZXJlbnQgdHlwZS4nKSA6IF9wcm9kSW52YXJpYW50KCcy
NScpIDogdm9pZCAwO1xuXHQgIGluc3RhbmNlLmRlc3RydWN0b3IoKTtcblx0ICBpZiAoS2xhc3Mu
aW5zdGFuY2VQb29sLmxlbmd0aCA8IEtsYXNzLnBvb2xTaXplKSB7XG5cdCAgICBLbGFzcy5pbnN0
YW5jZVBvb2wucHVzaChpbnN0YW5jZSk7XG5cdCAgfVxuXHR9O1xuXHRcblx0dmFyIERFRkFVTFRf
UE9PTF9TSVpFID0gMTA7XG5cdHZhciBERUZBVUxUX1BPT0xFUiA9IG9uZUFyZ3VtZW50UG9vbGVy
O1xuXHRcblx0LyoqXG5cdCAqIEF1Z21lbnRzIGBDb3B5Q29uc3RydWN0b3JgIHRvIGJlIGEgcG9v
bGFibGUgY2xhc3MsIGF1Z21lbnRpbmcgb25seSB0aGUgY2xhc3Ncblx0ICogaXRzZWxmIChzdGF0
aWNhbGx5KSBub3QgYWRkaW5nIGFueSBwcm90b3R5cGljYWwgZmllbGRzLiBBbnkgQ29weUNvbnN0
cnVjdG9yXG5cdCAqIHlvdSBnaXZlIHRoaXMgbWF5IGhhdmUgYSBgcG9vbFNpemVgIHByb3BlcnR5
LCBhbmQgd2lsbCBsb29rIGZvciBhXG5cdCAqIHByb3RvdHlwaWNhbCBgZGVzdHJ1Y3RvcmAgb24g
aW5zdGFuY2VzLlxuXHQgKlxuXHQgKiBAcGFyYW0ge0Z1bmN0aW9ufSBDb3B5Q29uc3RydWN0b3Ig
Q29uc3RydWN0b3IgdGhhdCBjYW4gYmUgdXNlZCB0byByZXNldC5cblx0ICogQHBhcmFtIHtGdW5j
dGlvbn0gcG9vbGVyIEN1c3RvbWl6YWJsZSBwb29sZXIuXG5cdCAqL1xuXHR2YXIgYWRkUG9vbGlu
Z1RvID0gZnVuY3Rpb24gKENvcHlDb25zdHJ1Y3RvciwgcG9vbGVyKSB7XG5cdCAgLy8gQ2FzdGlu
ZyBhcyBhbnkgc28gdGhhdCBmbG93IGlnbm9yZXMgdGhlIGFjdHVhbCBpbXBsZW1lbnRhdGlvbiBh
bmQgdHJ1c3RzXG5cdCAgLy8gaXQgdG8gbWF0Y2ggdGhlIHR5cGUgd2UgZGVjbGFyZWRcblx0ICB2
YXIgTmV3S2xhc3MgPSBDb3B5Q29uc3RydWN0b3I7XG5cdCAgTmV3S2xhc3MuaW5zdGFuY2VQb29s
ID0gW107XG5cdCAgTmV3S2xhc3MuZ2V0UG9vbGVkID0gcG9vbGVyIHx8IERFRkFVTFRfUE9PTEVS
O1xuXHQgIGlmICghTmV3S2xhc3MucG9vbFNpemUpIHtcblx0ICAgIE5ld0tsYXNzLnBvb2xTaXpl
ID0gREVGQVVMVF9QT09MX1NJWkU7XG5cdCAgfVxuXHQgIE5ld0tsYXNzLnJlbGVhc2UgPSBzdGFu
ZGFyZFJlbGVhc2VyO1xuXHQgIHJldHVybiBOZXdLbGFzcztcblx0fTtcblx0XG5cdHZhciBQb29s
ZWRDbGFzcyA9IHtcblx0ICBhZGRQb29saW5nVG86IGFkZFBvb2xpbmdUbyxcblx0ICBvbmVBcmd1
bWVudFBvb2xlcjogb25lQXJndW1lbnRQb29sZXIsXG5cdCAgdHdvQXJndW1lbnRQb29sZXI6IHR3
b0FyZ3VtZW50UG9vbGVyLFxuXHQgIHRocmVlQXJndW1lbnRQb29sZXI6IHRocmVlQXJndW1lbnRQ
b29sZXIsXG5cdCAgZm91ckFyZ3VtZW50UG9vbGVyOiBmb3VyQXJndW1lbnRQb29sZXJcblx0fTtc
blx0XG5cdG1vZHVsZS5leHBvcnRzID0gUG9vbGVkQ2xhc3M7XG5cbi8qKiovIH1cbi8qKioqKiov
IF0pKSk7XG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogc3RhdGljL2pzL21haW4uNjlj
ZDk2NTUuanNcbiAqKi8iLCIgXHQvLyBUaGUgbW9kdWxlIGNhY2hlXG4gXHR2YXIgaW5zdGFsbGVk
TW9kdWxlcyA9IHt9O1xuXG4gXHQvLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuIFx0ZnVuY3Rpb24g
X193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXG4gXHRcdC8vIENoZWNrIGlmIG1vZHVs
ZSBpcyBpbiBjYWNoZVxuIFx0XHRpZihpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSlcbiBcdFx0
XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcblxuIFx0XHQvLyBD
cmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuIFx0XHR2YXIg
bW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4gXHRcdFx0ZXhwb3J0czog
e30sXG4gXHRcdFx0aWQ6IG1vZHVsZUlkLFxuIFx0XHRcdGxvYWRlZDogZmFsc2VcbiBcdFx0fTtc
blxuIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbiBcdFx0bW9kdWxlc1ttb2R1
bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJw
YWNrX3JlcXVpcmVfXyk7XG5cbiBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuIFx0
XHRtb2R1bGUubG9hZGVkID0gdHJ1ZTtcblxuIFx0XHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2Yg
dGhlIG1vZHVsZVxuIFx0XHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG4gXHR9XG5cblxuIFx0Ly8g
ZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXylcbiBcdF9fd2Vi
cGFja19yZXF1aXJlX18ubSA9IG1vZHVsZXM7XG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlIGNh
Y2hlXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmMgPSBpbnN0YWxsZWRNb2R1bGVzO1xuXG4gXHQv
LyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCIu
L1wiO1xuXG4gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbiBcdHJl
dHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKDApO1xuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoq
XG4gKiogd2VicGFjay9ib290c3RyYXAgMWMxNGVmMzQ3ZmI3NTIyOTI0NmNcbiAqKi8iLCIvKipc
biAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJp
Z2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVy
IHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0
aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFu
dFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBp
biB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxuLyoqXG4g
KiBVc2UgaW52YXJpYW50KCkgdG8gYXNzZXJ0IHN0YXRlIHdoaWNoIHlvdXIgcHJvZ3JhbSBhc3N1
bWVzIHRvIGJlIHRydWUuXG4gKlxuICogUHJvdmlkZSBzcHJpbnRmLXN0eWxlIGZvcm1hdCAob25s
eSAlcyBpcyBzdXBwb3J0ZWQpIGFuZCBhcmd1bWVudHNcbiAqIHRvIHByb3ZpZGUgaW5mb3JtYXRp
b24gYWJvdXQgd2hhdCBicm9rZSBhbmQgd2hhdCB5b3Ugd2VyZVxuICogZXhwZWN0aW5nLlxuICpc
biAqIFRoZSBpbnZhcmlhbnQgbWVzc2FnZSB3aWxsIGJlIHN0cmlwcGVkIGluIHByb2R1Y3Rpb24s
IGJ1dCB0aGUgaW52YXJpYW50XG4gKiB3aWxsIHJlbWFpbiB0byBlbnN1cmUgbG9naWMgZG9lcyBu
b3QgZGlmZmVyIGluIHByb2R1Y3Rpb24uXG4gKi9cblxudmFyIHZhbGlkYXRlRm9ybWF0ID0gZnVu
Y3Rpb24gdmFsaWRhdGVGb3JtYXQoZm9ybWF0KSB7fTtcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVf
RU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgdmFsaWRhdGVGb3JtYXQgPSBmdW5jdGlvbiB2YWxp
ZGF0ZUZvcm1hdChmb3JtYXQpIHtcbiAgICBpZiAoZm9ybWF0ID09PSB1bmRlZmluZWQpIHtcbiAg
ICAgIHRocm93IG5ldyBFcnJvcignaW52YXJpYW50IHJlcXVpcmVzIGFuIGVycm9yIG1lc3NhZ2Ug
YXJndW1lbnQnKTtcbiAgICB9XG4gIH07XG59XG5cbmZ1bmN0aW9uIGludmFyaWFudChjb25kaXRp
b24sIGZvcm1hdCwgYSwgYiwgYywgZCwgZSwgZikge1xuICB2YWxpZGF0ZUZvcm1hdChmb3JtYXQp
O1xuXG4gIGlmICghY29uZGl0aW9uKSB7XG4gICAgdmFyIGVycm9yO1xuICAgIGlmIChmb3JtYXQg
PT09IHVuZGVmaW5lZCkge1xuICAgICAgZXJyb3IgPSBuZXcgRXJyb3IoJ01pbmlmaWVkIGV4Y2Vw
dGlvbiBvY2N1cnJlZDsgdXNlIHRoZSBub24tbWluaWZpZWQgZGV2IGVudmlyb25tZW50ICcgKyAn
Zm9yIHRoZSBmdWxsIGVycm9yIG1lc3NhZ2UgYW5kIGFkZGl0aW9uYWwgaGVscGZ1bCB3YXJuaW5n
cy4nKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIGFyZ3MgPSBbYSwgYiwgYywgZCwgZSwgZl07
XG4gICAgICB2YXIgYXJnSW5kZXggPSAwO1xuICAgICAgZXJyb3IgPSBuZXcgRXJyb3IoZm9ybWF0
LnJlcGxhY2UoLyVzL2csIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIGFyZ3NbYXJnSW5k
ZXgrK107XG4gICAgICB9KSk7XG4gICAgICBlcnJvci5uYW1lID0gJ0ludmFyaWFudCBWaW9sYXRp
b24nO1xuICAgIH1cblxuICAgIGVycm9yLmZyYW1lc1RvUG9wID0gMTsgLy8gd2UgZG9uJ3QgY2Fy
ZSBhYm91dCBpbnZhcmlhbnQncyBvd24gZnJhbWVcbiAgICB0aHJvdyBlcnJvcjtcbiAgfVxufVxu
XG5tb2R1bGUuZXhwb3J0cyA9IGludmFyaWFudDtcblxuXG4vKioqKioqKioqKioqKioqKipcbiAq
KiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9mYmpzL2xpYi9pbnZhcmlhbnQuanNcbiAqKiBtb2R1
bGUgaWQgPSAxXG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENvcHlyaWdo
dCAyMDE0LTIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpc
biAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNl
bnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBv
ZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmln
aHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9y
eS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgZW1wdHlGdW5jdGlvbiA9IHJlcXVp
cmUoJy4vZW1wdHlGdW5jdGlvbicpO1xuXG4vKipcbiAqIFNpbWlsYXIgdG8gaW52YXJpYW50IGJ1
dCBvbmx5IGxvZ3MgYSB3YXJuaW5nIGlmIHRoZSBjb25kaXRpb24gaXMgbm90IG1ldC5cbiAqIFRo
aXMgY2FuIGJlIHVzZWQgdG8gbG9nIGlzc3VlcyBpbiBkZXZlbG9wbWVudCBlbnZpcm9ubWVudHMg
aW4gY3JpdGljYWxcbiAqIHBhdGhzLiBSZW1vdmluZyB0aGUgbG9nZ2luZyBjb2RlIGZvciBwcm9k
dWN0aW9uIGVudmlyb25tZW50cyB3aWxsIGtlZXAgdGhlXG4gKiBzYW1lIGxvZ2ljIGFuZCBmb2xs
b3cgdGhlIHNhbWUgY29kZSBwYXRocy5cbiAqL1xuXG52YXIgd2FybmluZyA9IGVtcHR5RnVuY3Rp
b247XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIHZh
ciBwcmludFdhcm5pbmcgPSBmdW5jdGlvbiBwcmludFdhcm5pbmcoZm9ybWF0KSB7XG4gICAgZm9y
ICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBBcnJheShfbGVuID4gMSA/IF9s
ZW4gLSAxIDogMCksIF9rZXkgPSAxOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgICBhcmdz
W19rZXkgLSAxXSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICB9XG5cbiAgICB2YXIgYXJnSW5kZXgg
PSAwO1xuICAgIHZhciBtZXNzYWdlID0gJ1dhcm5pbmc6ICcgKyBmb3JtYXQucmVwbGFjZSgvJXMv
ZywgZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIGFyZ3NbYXJnSW5kZXgrK107XG4gICAgfSk7
XG4gICAgaWYgKHR5cGVvZiBjb25zb2xlICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgY29uc29s
ZS5lcnJvcihtZXNzYWdlKTtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgIC8vIC0tLSBXZWxjb21l
IHRvIGRlYnVnZ2luZyBSZWFjdCAtLS1cbiAgICAgIC8vIFRoaXMgZXJyb3Igd2FzIHRocm93biBh
cyBhIGNvbnZlbmllbmNlIHNvIHRoYXQgeW91IGNhbiB1c2UgdGhpcyBzdGFja1xuICAgICAgLy8g
dG8gZmluZCB0aGUgY2FsbHNpdGUgdGhhdCBjYXVzZWQgdGhpcyB3YXJuaW5nIHRvIGZpcmUuXG4g
ICAgICB0aHJvdyBuZXcgRXJyb3IobWVzc2FnZSk7XG4gICAgfSBjYXRjaCAoeCkge31cbiAgfTtc
blxuICB3YXJuaW5nID0gZnVuY3Rpb24gd2FybmluZyhjb25kaXRpb24sIGZvcm1hdCkge1xuICAg
IGlmIChmb3JtYXQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdgd2Fy
bmluZyhjb25kaXRpb24sIGZvcm1hdCwgLi4uYXJncylgIHJlcXVpcmVzIGEgd2FybmluZyAnICsg
J21lc3NhZ2UgYXJndW1lbnQnKTtcbiAgICB9XG5cbiAgICBpZiAoZm9ybWF0LmluZGV4T2YoJ0Zh
aWxlZCBDb21wb3NpdGUgcHJvcFR5cGU6ICcpID09PSAwKSB7XG4gICAgICByZXR1cm47IC8vIEln
bm9yZSBDb21wb3NpdGVDb21wb25lbnQgcHJvcHR5cGUgY2hlY2suXG4gICAgfVxuXG4gICAgaWYg
KCFjb25kaXRpb24pIHtcbiAgICAgIGZvciAodmFyIF9sZW4yID0gYXJndW1lbnRzLmxlbmd0aCwg
YXJncyA9IEFycmF5KF9sZW4yID4gMiA/IF9sZW4yIC0gMiA6IDApLCBfa2V5MiA9IDI7IF9rZXky
IDwgX2xlbjI7IF9rZXkyKyspIHtcbiAgICAgICAgYXJnc1tfa2V5MiAtIDJdID0gYXJndW1lbnRz
W19rZXkyXTtcbiAgICAgIH1cblxuICAgICAgcHJpbnRXYXJuaW5nLmFwcGx5KHVuZGVmaW5lZCwg
W2Zvcm1hdF0uY29uY2F0KGFyZ3MpKTtcbiAgICB9XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRz
ID0gd2FybmluZztcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxu
ICoqIC4vfi9mYmpzL2xpYi93YXJuaW5nLmpzXG4gKiogbW9kdWxlIGlkID0gMlxuICoqIG1vZHVs
ZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwg
RmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3Vy
Y2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4g
dGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNl
IHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZv
dW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIFxu
ICovXG4ndXNlIHN0cmljdCc7XG5cbi8qKlxuICogV0FSTklORzogRE8gTk9UIG1hbnVhbGx5IHJl
cXVpcmUgdGhpcyBtb2R1bGUuXG4gKiBUaGlzIGlzIGEgcmVwbGFjZW1lbnQgZm9yIGBpbnZhcmlh
bnQoLi4uKWAgdXNlZCBieSB0aGUgZXJyb3IgY29kZSBzeXN0ZW1cbiAqIGFuZCB3aWxsIF9vbmx5
XyBiZSByZXF1aXJlZCBieSB0aGUgY29ycmVzcG9uZGluZyBiYWJlbCBwYXNzLlxuICogSXQgYWx3
YXlzIHRocm93cy5cbiAqL1xuXG5mdW5jdGlvbiByZWFjdFByb2RJbnZhcmlhbnQoY29kZSkge1xu
ICB2YXIgYXJnQ291bnQgPSBhcmd1bWVudHMubGVuZ3RoIC0gMTtcblxuICB2YXIgbWVzc2FnZSA9
ICdNaW5pZmllZCBSZWFjdCBlcnJvciAjJyArIGNvZGUgKyAnOyB2aXNpdCAnICsgJ2h0dHA6Ly9m
YWNlYm9vay5naXRodWIuaW8vcmVhY3QvZG9jcy9lcnJvci1kZWNvZGVyLmh0bWw/aW52YXJpYW50
PScgKyBjb2RlO1xuXG4gIGZvciAodmFyIGFyZ0lkeCA9IDA7IGFyZ0lkeCA8IGFyZ0NvdW50OyBh
cmdJZHgrKykge1xuICAgIG1lc3NhZ2UgKz0gJyZhcmdzW109JyArIGVuY29kZVVSSUNvbXBvbmVu
dChhcmd1bWVudHNbYXJnSWR4ICsgMV0pO1xuICB9XG5cbiAgbWVzc2FnZSArPSAnIGZvciB0aGUg
ZnVsbCBtZXNzYWdlIG9yIHVzZSB0aGUgbm9uLW1pbmlmaWVkIGRldiBlbnZpcm9ubWVudCcgKyAn
IGZvciBmdWxsIGVycm9ycyBhbmQgYWRkaXRpb25hbCBoZWxwZnVsIHdhcm5pbmdzLic7XG5cbiAg
dmFyIGVycm9yID0gbmV3IEVycm9yKG1lc3NhZ2UpO1xuICBlcnJvci5uYW1lID0gJ0ludmFyaWFu
dCBWaW9sYXRpb24nO1xuICBlcnJvci5mcmFtZXNUb1BvcCA9IDE7IC8vIHdlIGRvbid0IGNhcmUg
YWJvdXQgcmVhY3RQcm9kSW52YXJpYW50J3Mgb3duIGZyYW1lXG5cbiAgdGhyb3cgZXJyb3I7XG59
XG5cbm1vZHVsZS5leHBvcnRzID0gcmVhY3RQcm9kSW52YXJpYW50O1xuXG5cbi8qKioqKioqKioq
KioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0LWRvbS9saWIvcmVhY3RQ
cm9kSW52YXJpYW50LmpzXG4gKiogbW9kdWxlIGlkID0gM1xuICoqIG1vZHVsZSBjaHVua3MgPSAw
XG4gKiovIiwiLypcbm9iamVjdC1hc3NpZ25cbihjKSBTaW5kcmUgU29yaHVzXG5AbGljZW5zZSBN
SVRcbiovXG5cbid1c2Ugc3RyaWN0Jztcbi8qIGVzbGludC1kaXNhYmxlIG5vLXVudXNlZC12YXJz
ICovXG52YXIgZ2V0T3duUHJvcGVydHlTeW1ib2xzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3lt
Ym9scztcbnZhciBoYXNPd25Qcm9wZXJ0eSA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVy
dHk7XG52YXIgcHJvcElzRW51bWVyYWJsZSA9IE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0Vu
dW1lcmFibGU7XG5cbmZ1bmN0aW9uIHRvT2JqZWN0KHZhbCkge1xuXHRpZiAodmFsID09PSBudWxs
IHx8IHZhbCA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0dGhyb3cgbmV3IFR5cGVFcnJvcignT2JqZWN0
LmFzc2lnbiBjYW5ub3QgYmUgY2FsbGVkIHdpdGggbnVsbCBvciB1bmRlZmluZWQnKTtcblx0fVxu
XG5cdHJldHVybiBPYmplY3QodmFsKTtcbn1cblxuZnVuY3Rpb24gc2hvdWxkVXNlTmF0aXZlKCkg
e1xuXHR0cnkge1xuXHRcdGlmICghT2JqZWN0LmFzc2lnbikge1xuXHRcdFx0cmV0dXJuIGZhbHNl
O1xuXHRcdH1cblxuXHRcdC8vIERldGVjdCBidWdneSBwcm9wZXJ0eSBlbnVtZXJhdGlvbiBvcmRl
ciBpbiBvbGRlciBWOCB2ZXJzaW9ucy5cblxuXHRcdC8vIGh0dHBzOi8vYnVncy5jaHJvbWl1bS5v
cmcvcC92OC9pc3N1ZXMvZGV0YWlsP2lkPTQxMThcblx0XHR2YXIgdGVzdDEgPSBuZXcgU3RyaW5n
KCdhYmMnKTsgIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tbmV3LXdyYXBwZXJzXG5cdFx0dGVz
dDFbNV0gPSAnZGUnO1xuXHRcdGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0ZXN0MSlb
MF0gPT09ICc1Jykge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblxuXHRcdC8vIGh0dHBz
Oi8vYnVncy5jaHJvbWl1bS5vcmcvcC92OC9pc3N1ZXMvZGV0YWlsP2lkPTMwNTZcblx0XHR2YXIg
dGVzdDIgPSB7fTtcblx0XHRmb3IgKHZhciBpID0gMDsgaSA8IDEwOyBpKyspIHtcblx0XHRcdHRl
c3QyWydfJyArIFN0cmluZy5mcm9tQ2hhckNvZGUoaSldID0gaTtcblx0XHR9XG5cdFx0dmFyIG9y
ZGVyMiA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRlc3QyKS5tYXAoZnVuY3Rpb24gKG4p
IHtcblx0XHRcdHJldHVybiB0ZXN0MltuXTtcblx0XHR9KTtcblx0XHRpZiAob3JkZXIyLmpvaW4o
JycpICE9PSAnMDEyMzQ1Njc4OScpIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cblx0
XHQvLyBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvdjgvaXNzdWVzL2RldGFpbD9pZD0zMDU2
XG5cdFx0dmFyIHRlc3QzID0ge307XG5cdFx0J2FiY2RlZmdoaWprbG1ub3BxcnN0Jy5zcGxpdCgn
JykuZm9yRWFjaChmdW5jdGlvbiAobGV0dGVyKSB7XG5cdFx0XHR0ZXN0M1tsZXR0ZXJdID0gbGV0
dGVyO1xuXHRcdH0pO1xuXHRcdGlmIChPYmplY3Qua2V5cyhPYmplY3QuYXNzaWduKHt9LCB0ZXN0
MykpLmpvaW4oJycpICE9PVxuXHRcdFx0XHQnYWJjZGVmZ2hpamtsbW5vcHFyc3QnKSB7XG5cdFx0
XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRydWU7XG5cdH0gY2F0Y2ggKGVy
cikge1xuXHRcdC8vIFdlIGRvbid0IGV4cGVjdCBhbnkgb2YgdGhlIGFib3ZlIHRvIHRocm93LCBi
dXQgYmV0dGVyIHRvIGJlIHNhZmUuXG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG59XG5cbm1vZHVs
ZS5leHBvcnRzID0gc2hvdWxkVXNlTmF0aXZlKCkgPyBPYmplY3QuYXNzaWduIDogZnVuY3Rpb24g
KHRhcmdldCwgc291cmNlKSB7XG5cdHZhciBmcm9tO1xuXHR2YXIgdG8gPSB0b09iamVjdCh0YXJn
ZXQpO1xuXHR2YXIgc3ltYm9scztcblxuXHRmb3IgKHZhciBzID0gMTsgcyA8IGFyZ3VtZW50cy5s
ZW5ndGg7IHMrKykge1xuXHRcdGZyb20gPSBPYmplY3QoYXJndW1lbnRzW3NdKTtcblxuXHRcdGZv
ciAodmFyIGtleSBpbiBmcm9tKSB7XG5cdFx0XHRpZiAoaGFzT3duUHJvcGVydHkuY2FsbChmcm9t
LCBrZXkpKSB7XG5cdFx0XHRcdHRvW2tleV0gPSBmcm9tW2tleV07XG5cdFx0XHR9XG5cdFx0fVxu
XG5cdFx0aWYgKGdldE93blByb3BlcnR5U3ltYm9scykge1xuXHRcdFx0c3ltYm9scyA9IGdldE93
blByb3BlcnR5U3ltYm9scyhmcm9tKTtcblx0XHRcdGZvciAodmFyIGkgPSAwOyBpIDwgc3ltYm9s
cy5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHRpZiAocHJvcElzRW51bWVyYWJsZS5jYWxsKGZyb20s
IHN5bWJvbHNbaV0pKSB7XG5cdFx0XHRcdFx0dG9bc3ltYm9sc1tpXV0gPSBmcm9tW3N5bWJvbHNb
aV1dO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIHRvO1xufTtc
blxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L29i
amVjdC1hc3NpZ24vaW5kZXguanNcbiAqKiBtb2R1bGUgaWQgPSA0XG4gKiogbW9kdWxlIGNodW5r
cyA9IDBcbiAqKi8iLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJ
bmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMg
bGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElD
RU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBh
ZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUg
UEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJp
Y3QnO1xuXG52YXIgX3Byb2RJbnZhcmlhbnQgPSByZXF1aXJlKCcuL3JlYWN0UHJvZEludmFyaWFu
dCcpO1xuXG52YXIgRE9NUHJvcGVydHkgPSByZXF1aXJlKCcuL0RPTVByb3BlcnR5Jyk7XG52YXIg
UmVhY3RET01Db21wb25lbnRGbGFncyA9IHJlcXVpcmUoJy4vUmVhY3RET01Db21wb25lbnRGbGFn
cycpO1xuXG52YXIgaW52YXJpYW50ID0gcmVxdWlyZSgnZmJqcy9saWIvaW52YXJpYW50Jyk7XG5c
bnZhciBBVFRSX05BTUUgPSBET01Qcm9wZXJ0eS5JRF9BVFRSSUJVVEVfTkFNRTtcbnZhciBGbGFn
cyA9IFJlYWN0RE9NQ29tcG9uZW50RmxhZ3M7XG5cbnZhciBpbnRlcm5hbEluc3RhbmNlS2V5ID0g
J19fcmVhY3RJbnRlcm5hbEluc3RhbmNlJCcgKyBNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5z
bGljZSgyKTtcblxuLyoqXG4gKiBDaGVjayBpZiBhIGdpdmVuIG5vZGUgc2hvdWxkIGJlIGNhY2hl
ZC5cbiAqL1xuZnVuY3Rpb24gc2hvdWxkUHJlY2FjaGVOb2RlKG5vZGUsIG5vZGVJRCkge1xuICBy
ZXR1cm4gbm9kZS5ub2RlVHlwZSA9PT0gMSAmJiBub2RlLmdldEF0dHJpYnV0ZShBVFRSX05BTUUp
ID09PSBTdHJpbmcobm9kZUlEKSB8fCBub2RlLm5vZGVUeXBlID09PSA4ICYmIG5vZGUubm9kZVZh
bHVlID09PSAnIHJlYWN0LXRleHQ6ICcgKyBub2RlSUQgKyAnICcgfHwgbm9kZS5ub2RlVHlwZSA9
PT0gOCAmJiBub2RlLm5vZGVWYWx1ZSA9PT0gJyByZWFjdC1lbXB0eTogJyArIG5vZGVJRCArICcg
Jztcbn1cblxuLyoqXG4gKiBEcmlsbCBkb3duICh0aHJvdWdoIGNvbXBvc2l0ZXMgYW5kIGVtcHR5
IGNvbXBvbmVudHMpIHVudGlsIHdlIGdldCBhIGhvc3Qgb3JcbiAqIGhvc3QgdGV4dCBjb21wb25l
bnQuXG4gKlxuICogVGhpcyBpcyBwcmV0dHkgcG9seW1vcnBoaWMgYnV0IHVuYXZvaWRhYmxlIHdp
dGggdGhlIGN1cnJlbnQgc3RydWN0dXJlIHdlIGhhdmVcbiAqIGZvciBgX3JlbmRlcmVkQ2hpbGRy
ZW5gLlxuICovXG5mdW5jdGlvbiBnZXRSZW5kZXJlZEhvc3RPclRleHRGcm9tQ29tcG9uZW50KGNv
bXBvbmVudCkge1xuICB2YXIgcmVuZGVyZWQ7XG4gIHdoaWxlIChyZW5kZXJlZCA9IGNvbXBvbmVu
dC5fcmVuZGVyZWRDb21wb25lbnQpIHtcbiAgICBjb21wb25lbnQgPSByZW5kZXJlZDtcbiAgfVxu
ICByZXR1cm4gY29tcG9uZW50O1xufVxuXG4vKipcbiAqIFBvcHVsYXRlIGBfaG9zdE5vZGVgIG9u
IHRoZSByZW5kZXJlZCBob3N0L3RleHQgY29tcG9uZW50IHdpdGggdGhlIGdpdmVuXG4gKiBET00g
bm9kZS4gVGhlIHBhc3NlZCBgaW5zdGAgY2FuIGJlIGEgY29tcG9zaXRlLlxuICovXG5mdW5jdGlv
biBwcmVjYWNoZU5vZGUoaW5zdCwgbm9kZSkge1xuICB2YXIgaG9zdEluc3QgPSBnZXRSZW5kZXJl
ZEhvc3RPclRleHRGcm9tQ29tcG9uZW50KGluc3QpO1xuICBob3N0SW5zdC5faG9zdE5vZGUgPSBu
b2RlO1xuICBub2RlW2ludGVybmFsSW5zdGFuY2VLZXldID0gaG9zdEluc3Q7XG59XG5cbmZ1bmN0
aW9uIHVuY2FjaGVOb2RlKGluc3QpIHtcbiAgdmFyIG5vZGUgPSBpbnN0Ll9ob3N0Tm9kZTtcbiAg
aWYgKG5vZGUpIHtcbiAgICBkZWxldGUgbm9kZVtpbnRlcm5hbEluc3RhbmNlS2V5XTtcbiAgICBp
bnN0Ll9ob3N0Tm9kZSA9IG51bGw7XG4gIH1cbn1cblxuLyoqXG4gKiBQb3B1bGF0ZSBgX2hvc3RO
b2RlYCBvbiBlYWNoIGNoaWxkIG9mIGBpbnN0YCwgYXNzdW1pbmcgdGhhdCB0aGUgY2hpbGRyZW5c
biAqIG1hdGNoIHVwIHdpdGggdGhlIERPTSAoZWxlbWVudCkgY2hpbGRyZW4gb2YgYG5vZGVgLlxu
ICpcbiAqIFdlIGNhY2hlIGVudGlyZSBsZXZlbHMgYXQgb25jZSB0byBhdm9pZCBhbiBuXjIgcHJv
YmxlbSB3aGVyZSB3ZSBhY2Nlc3MgdGhlXG4gKiBjaGlsZHJlbiBvZiBhIG5vZGUgc2VxdWVudGlh
bGx5IGFuZCBoYXZlIHRvIHdhbGsgZnJvbSB0aGUgc3RhcnQgdG8gb3VyIHRhcmdldFxuICogbm9k
ZSBldmVyeSB0aW1lLlxuICpcbiAqIFNpbmNlIHdlIHVwZGF0ZSBgX3JlbmRlcmVkQ2hpbGRyZW5g
IGFuZCB0aGUgYWN0dWFsIERPTSBhdCAoc2xpZ2h0bHkpXG4gKiBkaWZmZXJlbnQgdGltZXMsIHdl
IGNvdWxkIHJhY2UgaGVyZSBhbmQgc2VlIGEgbmV3ZXIgYF9yZW5kZXJlZENoaWxkcmVuYCB0aGFu
XG4gKiB0aGUgRE9NIG5vZGVzIHdlIHNlZS4gVG8gYXZvaWQgdGhpcywgUmVhY3RNdWx0aUNoaWxk
IGNhbGxzXG4gKiBgcHJlcGFyZVRvTWFuYWdlQ2hpbGRyZW5gIGJlZm9yZSB3ZSBjaGFuZ2UgYF9y
ZW5kZXJlZENoaWxkcmVuYCwgYXQgd2hpY2hcbiAqIHRpbWUgdGhlIGNvbnRhaW5lcidzIGNoaWxk
IG5vZGVzIGFyZSBhbHdheXMgY2FjaGVkICh1bnRpbCBpdCB1bm1vdW50cykuXG4gKi9cbmZ1bmN0
aW9uIHByZWNhY2hlQ2hpbGROb2RlcyhpbnN0LCBub2RlKSB7XG4gIGlmIChpbnN0Ll9mbGFncyAm
IEZsYWdzLmhhc0NhY2hlZENoaWxkTm9kZXMpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgdmFyIGNo
aWxkcmVuID0gaW5zdC5fcmVuZGVyZWRDaGlsZHJlbjtcbiAgdmFyIGNoaWxkTm9kZSA9IG5vZGUu
Zmlyc3RDaGlsZDtcbiAgb3V0ZXI6IGZvciAodmFyIG5hbWUgaW4gY2hpbGRyZW4pIHtcbiAgICBp
ZiAoIWNoaWxkcmVuLmhhc093blByb3BlcnR5KG5hbWUpKSB7XG4gICAgICBjb250aW51ZTtcbiAg
ICB9XG4gICAgdmFyIGNoaWxkSW5zdCA9IGNoaWxkcmVuW25hbWVdO1xuICAgIHZhciBjaGlsZElE
ID0gZ2V0UmVuZGVyZWRIb3N0T3JUZXh0RnJvbUNvbXBvbmVudChjaGlsZEluc3QpLl9kb21JRDtc
biAgICBpZiAoY2hpbGRJRCA9PT0gMCkge1xuICAgICAgLy8gV2UncmUgY3VycmVudGx5IHVubW91
bnRpbmcgdGhpcyBjaGlsZCBpbiBSZWFjdE11bHRpQ2hpbGQ7IHNraXAgaXQuXG4gICAgICBjb250
aW51ZTtcbiAgICB9XG4gICAgLy8gV2UgYXNzdW1lIHRoZSBjaGlsZCBub2RlcyBhcmUgaW4gdGhl
IHNhbWUgb3JkZXIgYXMgdGhlIGNoaWxkIGluc3RhbmNlcy5cbiAgICBmb3IgKDsgY2hpbGROb2Rl
ICE9PSBudWxsOyBjaGlsZE5vZGUgPSBjaGlsZE5vZGUubmV4dFNpYmxpbmcpIHtcbiAgICAgIGlm
IChzaG91bGRQcmVjYWNoZU5vZGUoY2hpbGROb2RlLCBjaGlsZElEKSkge1xuICAgICAgICBwcmVj
YWNoZU5vZGUoY2hpbGRJbnN0LCBjaGlsZE5vZGUpO1xuICAgICAgICBjb250aW51ZSBvdXRlcjtc
biAgICAgIH1cbiAgICB9XG4gICAgLy8gV2UgcmVhY2hlZCB0aGUgZW5kIG9mIHRoZSBET00gY2hp
bGRyZW4gd2l0aG91dCBmaW5kaW5nIGFuIElEIG1hdGNoLlxuICAgICFmYWxzZSA/IHByb2Nlc3Mu
ZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdVbmFibGUg
dG8gZmluZCBlbGVtZW50IHdpdGggSUQgJXMuJywgY2hpbGRJRCkgOiBfcHJvZEludmFyaWFudCgn
MzInLCBjaGlsZElEKSA6IHZvaWQgMDtcbiAgfVxuICBpbnN0Ll9mbGFncyB8PSBGbGFncy5oYXND
YWNoZWRDaGlsZE5vZGVzO1xufVxuXG4vKipcbiAqIEdpdmVuIGEgRE9NIG5vZGUsIHJldHVybiB0
aGUgY2xvc2VzdCBSZWFjdERPTUNvbXBvbmVudCBvclxuICogUmVhY3RET01UZXh0Q29tcG9uZW50
IGluc3RhbmNlIGFuY2VzdG9yLlxuICovXG5mdW5jdGlvbiBnZXRDbG9zZXN0SW5zdGFuY2VGcm9t
Tm9kZShub2RlKSB7XG4gIGlmIChub2RlW2ludGVybmFsSW5zdGFuY2VLZXldKSB7XG4gICAgcmV0
dXJuIG5vZGVbaW50ZXJuYWxJbnN0YW5jZUtleV07XG4gIH1cblxuICAvLyBXYWxrIHVwIHRoZSB0
cmVlIHVudGlsIHdlIGZpbmQgYW4gYW5jZXN0b3Igd2hvc2UgaW5zdGFuY2Ugd2UgaGF2ZSBjYWNo
ZWQuXG4gIHZhciBwYXJlbnRzID0gW107XG4gIHdoaWxlICghbm9kZVtpbnRlcm5hbEluc3RhbmNl
S2V5XSkge1xuICAgIHBhcmVudHMucHVzaChub2RlKTtcbiAgICBpZiAobm9kZS5wYXJlbnROb2Rl
KSB7XG4gICAgICBub2RlID0gbm9kZS5wYXJlbnROb2RlO1xuICAgIH0gZWxzZSB7XG4gICAgICAv
LyBUb3Agb2YgdGhlIHRyZWUuIFRoaXMgbm9kZSBtdXN0IG5vdCBiZSBwYXJ0IG9mIGEgUmVhY3Qg
dHJlZSAob3IgaXNcbiAgICAgIC8vIHVubW91bnRlZCwgcG90ZW50aWFsbHkpLlxuICAgICAgcmV0
dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgdmFyIGNsb3Nlc3Q7XG4gIHZhciBpbnN0O1xuICBm
b3IgKDsgbm9kZSAmJiAoaW5zdCA9IG5vZGVbaW50ZXJuYWxJbnN0YW5jZUtleV0pOyBub2RlID0g
cGFyZW50cy5wb3AoKSkge1xuICAgIGNsb3Nlc3QgPSBpbnN0O1xuICAgIGlmIChwYXJlbnRzLmxl
bmd0aCkge1xuICAgICAgcHJlY2FjaGVDaGlsZE5vZGVzKGluc3QsIG5vZGUpO1xuICAgIH1cbiAg
fVxuXG4gIHJldHVybiBjbG9zZXN0O1xufVxuXG4vKipcbiAqIEdpdmVuIGEgRE9NIG5vZGUsIHJl
dHVybiB0aGUgUmVhY3RET01Db21wb25lbnQgb3IgUmVhY3RET01UZXh0Q29tcG9uZW50XG4gKiBp
bnN0YW5jZSwgb3IgbnVsbCBpZiB0aGUgbm9kZSB3YXMgbm90IHJlbmRlcmVkIGJ5IHRoaXMgUmVh
Y3QuXG4gKi9cbmZ1bmN0aW9uIGdldEluc3RhbmNlRnJvbU5vZGUobm9kZSkge1xuICB2YXIgaW5z
dCA9IGdldENsb3Nlc3RJbnN0YW5jZUZyb21Ob2RlKG5vZGUpO1xuICBpZiAoaW5zdCAhPSBudWxs
ICYmIGluc3QuX2hvc3ROb2RlID09PSBub2RlKSB7XG4gICAgcmV0dXJuIGluc3Q7XG4gIH0gZWxz
ZSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cblxuLyoqXG4gKiBHaXZlbiBhIFJlYWN0RE9N
Q29tcG9uZW50IG9yIFJlYWN0RE9NVGV4dENvbXBvbmVudCwgcmV0dXJuIHRoZSBjb3JyZXNwb25k
aW5nXG4gKiBET00gbm9kZS5cbiAqL1xuZnVuY3Rpb24gZ2V0Tm9kZUZyb21JbnN0YW5jZShpbnN0
KSB7XG4gIC8vIFdpdGhvdXQgdGhpcyBmaXJzdCBpbnZhcmlhbnQsIHBhc3NpbmcgYSBub24tRE9N
LWNvbXBvbmVudCB0cmlnZ2VycyB0aGUgbmV4dFxuICAvLyBpbnZhcmlhbnQgZm9yIGEgbWlzc2lu
ZyBwYXJlbnQsIHdoaWNoIGlzIHN1cGVyIGNvbmZ1c2luZy5cbiAgIShpbnN0Ll9ob3N0Tm9kZSAh
PT0gdW5kZWZpbmVkKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBp
bnZhcmlhbnQoZmFsc2UsICdnZXROb2RlRnJvbUluc3RhbmNlOiBJbnZhbGlkIGFyZ3VtZW50Licp
IDogX3Byb2RJbnZhcmlhbnQoJzMzJykgOiB2b2lkIDA7XG5cbiAgaWYgKGluc3QuX2hvc3ROb2Rl
KSB7XG4gICAgcmV0dXJuIGluc3QuX2hvc3ROb2RlO1xuICB9XG5cbiAgLy8gV2FsayB1cCB0aGUg
dHJlZSB1bnRpbCB3ZSBmaW5kIGFuIGFuY2VzdG9yIHdob3NlIERPTSBub2RlIHdlIGhhdmUgY2Fj
aGVkLlxuICB2YXIgcGFyZW50cyA9IFtdO1xuICB3aGlsZSAoIWluc3QuX2hvc3ROb2RlKSB7XG4g
ICAgcGFyZW50cy5wdXNoKGluc3QpO1xuICAgICFpbnN0Ll9ob3N0UGFyZW50ID8gcHJvY2Vzcy5l
bnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ1JlYWN0IERP
TSB0cmVlIHJvb3Qgc2hvdWxkIGFsd2F5cyBoYXZlIGEgbm9kZSByZWZlcmVuY2UuJykgOiBfcHJv
ZEludmFyaWFudCgnMzQnKSA6IHZvaWQgMDtcbiAgICBpbnN0ID0gaW5zdC5faG9zdFBhcmVudDtc
biAgfVxuXG4gIC8vIE5vdyBwYXJlbnRzIGNvbnRhaW5zIGVhY2ggYW5jZXN0b3IgdGhhdCBkb2Vz
ICpub3QqIGhhdmUgYSBjYWNoZWQgbmF0aXZlXG4gIC8vIG5vZGUsIGFuZCBgaW5zdGAgaXMgdGhl
IGRlZXBlc3QgYW5jZXN0b3IgdGhhdCBkb2VzLlxuICBmb3IgKDsgcGFyZW50cy5sZW5ndGg7IGlu
c3QgPSBwYXJlbnRzLnBvcCgpKSB7XG4gICAgcHJlY2FjaGVDaGlsZE5vZGVzKGluc3QsIGluc3Qu
X2hvc3ROb2RlKTtcbiAgfVxuXG4gIHJldHVybiBpbnN0Ll9ob3N0Tm9kZTtcbn1cblxudmFyIFJl
YWN0RE9NQ29tcG9uZW50VHJlZSA9IHtcbiAgZ2V0Q2xvc2VzdEluc3RhbmNlRnJvbU5vZGU6IGdl
dENsb3Nlc3RJbnN0YW5jZUZyb21Ob2RlLFxuICBnZXRJbnN0YW5jZUZyb21Ob2RlOiBnZXRJbnN0
YW5jZUZyb21Ob2RlLFxuICBnZXROb2RlRnJvbUluc3RhbmNlOiBnZXROb2RlRnJvbUluc3RhbmNl
LFxuICBwcmVjYWNoZUNoaWxkTm9kZXM6IHByZWNhY2hlQ2hpbGROb2RlcyxcbiAgcHJlY2FjaGVO
b2RlOiBwcmVjYWNoZU5vZGUsXG4gIHVuY2FjaGVOb2RlOiB1bmNhY2hlTm9kZVxufTtcblxubW9k
dWxlLmV4cG9ydHMgPSBSZWFjdERPTUNvbXBvbmVudFRyZWU7XG5cblxuLyoqKioqKioqKioqKioq
KioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3QtZG9tL2xpYi9SZWFjdERPTUNv
bXBvbmVudFRyZWUuanNcbiAqKiBtb2R1bGUgaWQgPSA1XG4gKiogbW9kdWxlIGNodW5rcyA9IDBc
biAqKi8iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5j
LlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxp
Y2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VO
U0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRk
aXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBB
VEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICovXG5cbid1c2Ugc3RyaWN0
JztcblxudmFyIGNhblVzZURPTSA9ICEhKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYm
IHdpbmRvdy5kb2N1bWVudCAmJiB3aW5kb3cuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCk7XG5cbi8q
KlxuICogU2ltcGxlLCBsaWdodHdlaWdodCBtb2R1bGUgYXNzaXN0aW5nIHdpdGggdGhlIGRldGVj
dGlvbiBhbmQgY29udGV4dCBvZlxuICogV29ya2VyLiBIZWxwcyBhdm9pZCBjaXJjdWxhciBkZXBl
bmRlbmNpZXMgYW5kIGFsbG93cyBjb2RlIHRvIHJlYXNvbiBhYm91dFxuICogd2hldGhlciBvciBu
b3QgdGhleSBhcmUgaW4gYSBXb3JrZXIsIGV2ZW4gaWYgdGhleSBuZXZlciBpbmNsdWRlIHRoZSBt
YWluXG4gKiBgUmVhY3RXb3JrZXJgIGRlcGVuZGVuY3kuXG4gKi9cbnZhciBFeGVjdXRpb25FbnZp
cm9ubWVudCA9IHtcblxuICBjYW5Vc2VET006IGNhblVzZURPTSxcblxuICBjYW5Vc2VXb3JrZXJz
OiB0eXBlb2YgV29ya2VyICE9PSAndW5kZWZpbmVkJyxcblxuICBjYW5Vc2VFdmVudExpc3RlbmVy
czogY2FuVXNlRE9NICYmICEhKHdpbmRvdy5hZGRFdmVudExpc3RlbmVyIHx8IHdpbmRvdy5hdHRh
Y2hFdmVudCksXG5cbiAgY2FuVXNlVmlld3BvcnQ6IGNhblVzZURPTSAmJiAhIXdpbmRvdy5zY3Jl
ZW4sXG5cbiAgaXNJbldvcmtlcjogIWNhblVzZURPTSAvLyBGb3Igbm93LCB0aGlzIGlzIHRydWUg
LSBtaWdodCBjaGFuZ2UgaW4gdGhlIGZ1dHVyZS5cblxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBF
eGVjdXRpb25FbnZpcm9ubWVudDtcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNL
IEZPT1RFUlxuICoqIC4vfi9mYmpzL2xpYi9FeGVjdXRpb25FbnZpcm9ubWVudC5qc1xuICoqIG1v
ZHVsZSBpZCA9IDZcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIlwidXNlIHN0cmljdFwi
O1xuXG4vKipcbiAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxu
ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vu
c2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0Ug
ZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRp
b25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVO
VFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogXG4gKi9cblxuZnVuY3Rpb24g
bWFrZUVtcHR5RnVuY3Rpb24oYXJnKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0
dXJuIGFyZztcbiAgfTtcbn1cblxuLyoqXG4gKiBUaGlzIGZ1bmN0aW9uIGFjY2VwdHMgYW5kIGRp
c2NhcmRzIGlucHV0czsgaXQgaGFzIG5vIHNpZGUgZWZmZWN0cy4gVGhpcyBpc1xuICogcHJpbWFy
aWx5IHVzZWZ1bCBpZGlvbWF0aWNhbGx5IGZvciBvdmVycmlkYWJsZSBmdW5jdGlvbiBlbmRwb2lu
dHMgd2hpY2hcbiAqIGFsd2F5cyBuZWVkIHRvIGJlIGNhbGxhYmxlLCBzaW5jZSBKUyBsYWNrcyBh
IG51bGwtY2FsbCBpZGlvbSBhbGEgQ29jb2EuXG4gKi9cbnZhciBlbXB0eUZ1bmN0aW9uID0gZnVu
Y3Rpb24gZW1wdHlGdW5jdGlvbigpIHt9O1xuXG5lbXB0eUZ1bmN0aW9uLnRoYXRSZXR1cm5zID0g
bWFrZUVtcHR5RnVuY3Rpb247XG5lbXB0eUZ1bmN0aW9uLnRoYXRSZXR1cm5zRmFsc2UgPSBtYWtl
RW1wdHlGdW5jdGlvbihmYWxzZSk7XG5lbXB0eUZ1bmN0aW9uLnRoYXRSZXR1cm5zVHJ1ZSA9IG1h
a2VFbXB0eUZ1bmN0aW9uKHRydWUpO1xuZW1wdHlGdW5jdGlvbi50aGF0UmV0dXJuc051bGwgPSBt
YWtlRW1wdHlGdW5jdGlvbihudWxsKTtcbmVtcHR5RnVuY3Rpb24udGhhdFJldHVybnNUaGlzID0g
ZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcztcbn07XG5lbXB0eUZ1bmN0aW9uLnRoYXRSZXR1
cm5zQXJndW1lbnQgPSBmdW5jdGlvbiAoYXJnKSB7XG4gIHJldHVybiBhcmc7XG59O1xuXG5tb2R1
bGUuZXhwb3J0cyA9IGVtcHR5RnVuY3Rpb247XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiog
V0VCUEFDSyBGT09URVJcbiAqKiAuL34vZmJqcy9saWIvZW1wdHlGdW5jdGlvbi5qc1xuICoqIG1v
ZHVsZSBpZCA9IDdcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29weXJp
Z2h0IDIwMTYtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQu
XG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxl
IGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0
b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVu
dCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGly
ZWN0b3J5LlxuICpcbiAqIFxuICovXG5cbid1c2Ugc3RyaWN0JztcblxuLy8gVHJ1c3QgdGhlIGRl
dmVsb3BlciB0byBvbmx5IHVzZSBSZWFjdEluc3RydW1lbnRhdGlvbiB3aXRoIGEgX19ERVZfXyBj
aGVja1xuXG52YXIgZGVidWdUb29sID0gbnVsbDtcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5W
ICE9PSAncHJvZHVjdGlvbicpIHtcbiAgdmFyIFJlYWN0RGVidWdUb29sID0gcmVxdWlyZSgnLi9S
ZWFjdERlYnVnVG9vbCcpO1xuICBkZWJ1Z1Rvb2wgPSBSZWFjdERlYnVnVG9vbDtcbn1cblxubW9k
dWxlLmV4cG9ydHMgPSB7IGRlYnVnVG9vbDogZGVidWdUb29sIH07XG5cblxuLyoqKioqKioqKioq
KioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3QtZG9tL2xpYi9SZWFjdElu
c3RydW1lbnRhdGlvbi5qc1xuICoqIG1vZHVsZSBpZCA9IDhcbiAqKiBtb2R1bGUgY2h1bmtzID0g
MFxuICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5c
biAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNl
bnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNF
IGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0
aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRF
TlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7
XG5cbnZhciBfcHJvZEludmFyaWFudCA9IHJlcXVpcmUoJy4vcmVhY3RQcm9kSW52YXJpYW50Jyks
XG4gICAgX2Fzc2lnbiA9IHJlcXVpcmUoJ29iamVjdC1hc3NpZ24nKTtcblxudmFyIENhbGxiYWNr
UXVldWUgPSByZXF1aXJlKCcuL0NhbGxiYWNrUXVldWUnKTtcbnZhciBQb29sZWRDbGFzcyA9IHJl
cXVpcmUoJy4vUG9vbGVkQ2xhc3MnKTtcbnZhciBSZWFjdEZlYXR1cmVGbGFncyA9IHJlcXVpcmUo
Jy4vUmVhY3RGZWF0dXJlRmxhZ3MnKTtcbnZhciBSZWFjdFJlY29uY2lsZXIgPSByZXF1aXJlKCcu
L1JlYWN0UmVjb25jaWxlcicpO1xudmFyIFRyYW5zYWN0aW9uID0gcmVxdWlyZSgnLi9UcmFuc2Fj
dGlvbicpO1xuXG52YXIgaW52YXJpYW50ID0gcmVxdWlyZSgnZmJqcy9saWIvaW52YXJpYW50Jyk7
XG5cbnZhciBkaXJ0eUNvbXBvbmVudHMgPSBbXTtcbnZhciB1cGRhdGVCYXRjaE51bWJlciA9IDA7
XG52YXIgYXNhcENhbGxiYWNrUXVldWUgPSBDYWxsYmFja1F1ZXVlLmdldFBvb2xlZCgpO1xudmFy
IGFzYXBFbnF1ZXVlZCA9IGZhbHNlO1xuXG52YXIgYmF0Y2hpbmdTdHJhdGVneSA9IG51bGw7XG5c
bmZ1bmN0aW9uIGVuc3VyZUluamVjdGVkKCkge1xuICAhKFJlYWN0VXBkYXRlcy5SZWFjdFJlY29u
Y2lsZVRyYW5zYWN0aW9uICYmIGJhdGNoaW5nU3RyYXRlZ3kpID8gcHJvY2Vzcy5lbnYuTk9ERV9F
TlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ1JlYWN0VXBkYXRlczogbXVz
dCBpbmplY3QgYSByZWNvbmNpbGUgdHJhbnNhY3Rpb24gY2xhc3MgYW5kIGJhdGNoaW5nIHN0cmF0
ZWd5JykgOiBfcHJvZEludmFyaWFudCgnMTIzJykgOiB2b2lkIDA7XG59XG5cbnZhciBORVNURURf
VVBEQVRFUyA9IHtcbiAgaW5pdGlhbGl6ZTogZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuZGlydHlD
b21wb25lbnRzTGVuZ3RoID0gZGlydHlDb21wb25lbnRzLmxlbmd0aDtcbiAgfSxcbiAgY2xvc2U6
IGZ1bmN0aW9uICgpIHtcbiAgICBpZiAodGhpcy5kaXJ0eUNvbXBvbmVudHNMZW5ndGggIT09IGRp
cnR5Q29tcG9uZW50cy5sZW5ndGgpIHtcbiAgICAgIC8vIEFkZGl0aW9uYWwgdXBkYXRlcyB3ZXJl
IGVucXVldWVkIGJ5IGNvbXBvbmVudERpZFVwZGF0ZSBoYW5kbGVycyBvclxuICAgICAgLy8gc2lt
aWxhcjsgYmVmb3JlIG91ciBvd24gVVBEQVRFX1FVRVVFSU5HIHdyYXBwZXIgY2xvc2VzLCB3ZSB3
YW50IHRvIHJ1blxuICAgICAgLy8gdGhlc2UgbmV3IHVwZGF0ZXMgc28gdGhhdCBpZiBBJ3MgY29t
cG9uZW50RGlkVXBkYXRlIGNhbGxzIHNldFN0YXRlIG9uXG4gICAgICAvLyBCLCBCIHdpbGwgdXBk
YXRlIGJlZm9yZSB0aGUgY2FsbGJhY2sgQSdzIHVwZGF0ZXIgcHJvdmlkZWQgd2hlbiBjYWxsaW5n
XG4gICAgICAvLyBzZXRTdGF0ZS5cbiAgICAgIGRpcnR5Q29tcG9uZW50cy5zcGxpY2UoMCwgdGhp
cy5kaXJ0eUNvbXBvbmVudHNMZW5ndGgpO1xuICAgICAgZmx1c2hCYXRjaGVkVXBkYXRlcygpO1xu
ICAgIH0gZWxzZSB7XG4gICAgICBkaXJ0eUNvbXBvbmVudHMubGVuZ3RoID0gMDtcbiAgICB9XG4g
IH1cbn07XG5cbnZhciBVUERBVEVfUVVFVUVJTkcgPSB7XG4gIGluaXRpYWxpemU6IGZ1bmN0aW9u
ICgpIHtcbiAgICB0aGlzLmNhbGxiYWNrUXVldWUucmVzZXQoKTtcbiAgfSxcbiAgY2xvc2U6IGZ1
bmN0aW9uICgpIHtcbiAgICB0aGlzLmNhbGxiYWNrUXVldWUubm90aWZ5QWxsKCk7XG4gIH1cbn07
XG5cbnZhciBUUkFOU0FDVElPTl9XUkFQUEVSUyA9IFtORVNURURfVVBEQVRFUywgVVBEQVRFX1FV
RVVFSU5HXTtcblxuZnVuY3Rpb24gUmVhY3RVcGRhdGVzRmx1c2hUcmFuc2FjdGlvbigpIHtcbiAg
dGhpcy5yZWluaXRpYWxpemVUcmFuc2FjdGlvbigpO1xuICB0aGlzLmRpcnR5Q29tcG9uZW50c0xl
bmd0aCA9IG51bGw7XG4gIHRoaXMuY2FsbGJhY2tRdWV1ZSA9IENhbGxiYWNrUXVldWUuZ2V0UG9v
bGVkKCk7XG4gIHRoaXMucmVjb25jaWxlVHJhbnNhY3Rpb24gPSBSZWFjdFVwZGF0ZXMuUmVhY3RS
ZWNvbmNpbGVUcmFuc2FjdGlvbi5nZXRQb29sZWQoXG4gIC8qIHVzZUNyZWF0ZUVsZW1lbnQgKi90
cnVlKTtcbn1cblxuX2Fzc2lnbihSZWFjdFVwZGF0ZXNGbHVzaFRyYW5zYWN0aW9uLnByb3RvdHlw
ZSwgVHJhbnNhY3Rpb24sIHtcbiAgZ2V0VHJhbnNhY3Rpb25XcmFwcGVyczogZnVuY3Rpb24gKCkg
e1xuICAgIHJldHVybiBUUkFOU0FDVElPTl9XUkFQUEVSUztcbiAgfSxcblxuICBkZXN0cnVjdG9y
OiBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5kaXJ0eUNvbXBvbmVudHNMZW5ndGggPSBudWxsO1xu
ICAgIENhbGxiYWNrUXVldWUucmVsZWFzZSh0aGlzLmNhbGxiYWNrUXVldWUpO1xuICAgIHRoaXMu
Y2FsbGJhY2tRdWV1ZSA9IG51bGw7XG4gICAgUmVhY3RVcGRhdGVzLlJlYWN0UmVjb25jaWxlVHJh
bnNhY3Rpb24ucmVsZWFzZSh0aGlzLnJlY29uY2lsZVRyYW5zYWN0aW9uKTtcbiAgICB0aGlzLnJl
Y29uY2lsZVRyYW5zYWN0aW9uID0gbnVsbDtcbiAgfSxcblxuICBwZXJmb3JtOiBmdW5jdGlvbiAo
bWV0aG9kLCBzY29wZSwgYSkge1xuICAgIC8vIEVzc2VudGlhbGx5IGNhbGxzIGB0aGlzLnJlY29u
Y2lsZVRyYW5zYWN0aW9uLnBlcmZvcm0obWV0aG9kLCBzY29wZSwgYSlgXG4gICAgLy8gd2l0aCB0
aGlzIHRyYW5zYWN0aW9uJ3Mgd3JhcHBlcnMgYXJvdW5kIGl0LlxuICAgIHJldHVybiBUcmFuc2Fj
dGlvbi5wZXJmb3JtLmNhbGwodGhpcywgdGhpcy5yZWNvbmNpbGVUcmFuc2FjdGlvbi5wZXJmb3Jt
LCB0aGlzLnJlY29uY2lsZVRyYW5zYWN0aW9uLCBtZXRob2QsIHNjb3BlLCBhKTtcbiAgfVxufSk7
XG5cblBvb2xlZENsYXNzLmFkZFBvb2xpbmdUbyhSZWFjdFVwZGF0ZXNGbHVzaFRyYW5zYWN0aW9u
KTtcblxuZnVuY3Rpb24gYmF0Y2hlZFVwZGF0ZXMoY2FsbGJhY2ssIGEsIGIsIGMsIGQsIGUpIHtc
biAgZW5zdXJlSW5qZWN0ZWQoKTtcbiAgcmV0dXJuIGJhdGNoaW5nU3RyYXRlZ3kuYmF0Y2hlZFVw
ZGF0ZXMoY2FsbGJhY2ssIGEsIGIsIGMsIGQsIGUpO1xufVxuXG4vKipcbiAqIEFycmF5IGNvbXBh
cmF0b3IgZm9yIFJlYWN0Q29tcG9uZW50cyBieSBtb3VudCBvcmRlcmluZy5cbiAqXG4gKiBAcGFy
YW0ge1JlYWN0Q29tcG9uZW50fSBjMSBmaXJzdCBjb21wb25lbnQgeW91J3JlIGNvbXBhcmluZ1xu
ICogQHBhcmFtIHtSZWFjdENvbXBvbmVudH0gYzIgc2Vjb25kIGNvbXBvbmVudCB5b3UncmUgY29t
cGFyaW5nXG4gKiBAcmV0dXJuIHtudW1iZXJ9IFJldHVybiB2YWx1ZSB1c2FibGUgYnkgQXJyYXku
cHJvdG90eXBlLnNvcnQoKS5cbiAqL1xuZnVuY3Rpb24gbW91bnRPcmRlckNvbXBhcmF0b3IoYzEs
IGMyKSB7XG4gIHJldHVybiBjMS5fbW91bnRPcmRlciAtIGMyLl9tb3VudE9yZGVyO1xufVxuXG5m
dW5jdGlvbiBydW5CYXRjaGVkVXBkYXRlcyh0cmFuc2FjdGlvbikge1xuICB2YXIgbGVuID0gdHJh
bnNhY3Rpb24uZGlydHlDb21wb25lbnRzTGVuZ3RoO1xuICAhKGxlbiA9PT0gZGlydHlDb21wb25l
bnRzLmxlbmd0aCkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52
YXJpYW50KGZhbHNlLCAnRXhwZWN0ZWQgZmx1c2ggdHJhbnNhY3Rpb25cXCdzIHN0b3JlZCBkaXJ0
eS1jb21wb25lbnRzIGxlbmd0aCAoJXMpIHRvIG1hdGNoIGRpcnR5LWNvbXBvbmVudHMgYXJyYXkg
bGVuZ3RoICglcykuJywgbGVuLCBkaXJ0eUNvbXBvbmVudHMubGVuZ3RoKSA6IF9wcm9kSW52YXJp
YW50KCcxMjQnLCBsZW4sIGRpcnR5Q29tcG9uZW50cy5sZW5ndGgpIDogdm9pZCAwO1xuXG4gIC8v
IFNpbmNlIHJlY29uY2lsaW5nIGEgY29tcG9uZW50IGhpZ2hlciBpbiB0aGUgb3duZXIgaGllcmFy
Y2h5IHVzdWFsbHkgKG5vdFxuICAvLyBhbHdheXMgLS0gc2VlIHNob3VsZENvbXBvbmVudFVwZGF0
ZSgpKSB3aWxsIHJlY29uY2lsZSBjaGlsZHJlbiwgcmVjb25jaWxlXG4gIC8vIHRoZW0gYmVmb3Jl
IHRoZWlyIGNoaWxkcmVuIGJ5IHNvcnRpbmcgdGhlIGFycmF5LlxuICBkaXJ0eUNvbXBvbmVudHMu
c29ydChtb3VudE9yZGVyQ29tcGFyYXRvcik7XG5cbiAgLy8gQW55IHVwZGF0ZXMgZW5xdWV1ZWQg
d2hpbGUgcmVjb25jaWxpbmcgbXVzdCBiZSBwZXJmb3JtZWQgYWZ0ZXIgdGhpcyBlbnRpcmVcbiAg
Ly8gYmF0Y2guIE90aGVyd2lzZSwgaWYgZGlydHlDb21wb25lbnRzIGlzIFtBLCBCXSB3aGVyZSBB
IGhhcyBjaGlsZHJlbiBCIGFuZFxuICAvLyBDLCBCIGNvdWxkIHVwZGF0ZSB0d2ljZSBpbiBhIHNp
bmdsZSBiYXRjaCBpZiBDJ3MgcmVuZGVyIGVucXVldWVzIGFuIHVwZGF0ZVxuICAvLyB0byBCIChz
aW5jZSBCIHdvdWxkIGhhdmUgYWxyZWFkeSB1cGRhdGVkLCB3ZSBzaG91bGQgc2tpcCBpdCwgYW5k
IHRoZSBvbmx5XG4gIC8vIHdheSB3ZSBjYW4ga25vdyB0byBkbyBzbyBpcyBieSBjaGVja2luZyB0
aGUgYmF0Y2ggY291bnRlcikuXG4gIHVwZGF0ZUJhdGNoTnVtYmVyKys7XG5cbiAgZm9yICh2YXIg
aSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIC8vIElmIGEgY29tcG9uZW50IGlzIHVubW91bnRl
ZCBiZWZvcmUgcGVuZGluZyBjaGFuZ2VzIGFwcGx5LCBpdCB3aWxsIHN0aWxsXG4gICAgLy8gYmUg
aGVyZSwgYnV0IHdlIGFzc3VtZSB0aGF0IGl0IGhhcyBjbGVhcmVkIGl0cyBfcGVuZGluZ0NhbGxi
YWNrcyBhbmRcbiAgICAvLyB0aGF0IHBlcmZvcm1VcGRhdGVJZk5lY2Vzc2FyeSBpcyBhIG5vb3Au
XG4gICAgdmFyIGNvbXBvbmVudCA9IGRpcnR5Q29tcG9uZW50c1tpXTtcblxuICAgIC8vIElmIHBl
cmZvcm1VcGRhdGVJZk5lY2Vzc2FyeSBoYXBwZW5zIHRvIGVucXVldWUgYW55IG5ldyB1cGRhdGVz
LCB3ZVxuICAgIC8vIHNob3VsZG4ndCBleGVjdXRlIHRoZSBjYWxsYmFja3MgdW50aWwgdGhlIG5l
eHQgcmVuZGVyIGhhcHBlbnMsIHNvXG4gICAgLy8gc3Rhc2ggdGhlIGNhbGxiYWNrcyBmaXJzdFxu
ICAgIHZhciBjYWxsYmFja3MgPSBjb21wb25lbnQuX3BlbmRpbmdDYWxsYmFja3M7XG4gICAgY29t
cG9uZW50Ll9wZW5kaW5nQ2FsbGJhY2tzID0gbnVsbDtcblxuICAgIHZhciBtYXJrZXJOYW1lO1xu
ICAgIGlmIChSZWFjdEZlYXR1cmVGbGFncy5sb2dUb3BMZXZlbFJlbmRlcnMpIHtcbiAgICAgIHZh
ciBuYW1lZENvbXBvbmVudCA9IGNvbXBvbmVudDtcbiAgICAgIC8vIER1Y2sgdHlwZSBUb3BMZXZl
bFdyYXBwZXIuIFRoaXMgaXMgcHJvYmFibHkgYWx3YXlzIHRydWUuXG4gICAgICBpZiAoY29tcG9u
ZW50Ll9jdXJyZW50RWxlbWVudC50eXBlLmlzUmVhY3RUb3BMZXZlbFdyYXBwZXIpIHtcbiAgICAg
ICAgbmFtZWRDb21wb25lbnQgPSBjb21wb25lbnQuX3JlbmRlcmVkQ29tcG9uZW50O1xuICAgICAg
fVxuICAgICAgbWFya2VyTmFtZSA9ICdSZWFjdCB1cGRhdGU6ICcgKyBuYW1lZENvbXBvbmVudC5n
ZXROYW1lKCk7XG4gICAgICBjb25zb2xlLnRpbWUobWFya2VyTmFtZSk7XG4gICAgfVxuXG4gICAg
UmVhY3RSZWNvbmNpbGVyLnBlcmZvcm1VcGRhdGVJZk5lY2Vzc2FyeShjb21wb25lbnQsIHRyYW5z
YWN0aW9uLnJlY29uY2lsZVRyYW5zYWN0aW9uLCB1cGRhdGVCYXRjaE51bWJlcik7XG5cbiAgICBp
ZiAobWFya2VyTmFtZSkge1xuICAgICAgY29uc29sZS50aW1lRW5kKG1hcmtlck5hbWUpO1xuICAg
IH1cblxuICAgIGlmIChjYWxsYmFja3MpIHtcbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgY2Fs
bGJhY2tzLmxlbmd0aDsgaisrKSB7XG4gICAgICAgIHRyYW5zYWN0aW9uLmNhbGxiYWNrUXVldWUu
ZW5xdWV1ZShjYWxsYmFja3Nbal0sIGNvbXBvbmVudC5nZXRQdWJsaWNJbnN0YW5jZSgpKTtcbiAg
ICAgIH1cbiAgICB9XG4gIH1cbn1cblxudmFyIGZsdXNoQmF0Y2hlZFVwZGF0ZXMgPSBmdW5jdGlv
biAoKSB7XG4gIC8vIFJlYWN0VXBkYXRlc0ZsdXNoVHJhbnNhY3Rpb24ncyB3cmFwcGVycyB3aWxs
IGNsZWFyIHRoZSBkaXJ0eUNvbXBvbmVudHNcbiAgLy8gYXJyYXkgYW5kIHBlcmZvcm0gYW55IHVw
ZGF0ZXMgZW5xdWV1ZWQgYnkgbW91bnQtcmVhZHkgaGFuZGxlcnMgKGkuZS4sXG4gIC8vIGNvbXBv
bmVudERpZFVwZGF0ZSkgYnV0IHdlIG5lZWQgdG8gY2hlY2sgaGVyZSB0b28gaW4gb3JkZXIgdG8g
Y2F0Y2hcbiAgLy8gdXBkYXRlcyBlbnF1ZXVlZCBieSBzZXRTdGF0ZSBjYWxsYmFja3MgYW5kIGFz
YXAgY2FsbHMuXG4gIHdoaWxlIChkaXJ0eUNvbXBvbmVudHMubGVuZ3RoIHx8IGFzYXBFbnF1ZXVl
ZCkge1xuICAgIGlmIChkaXJ0eUNvbXBvbmVudHMubGVuZ3RoKSB7XG4gICAgICB2YXIgdHJhbnNh
Y3Rpb24gPSBSZWFjdFVwZGF0ZXNGbHVzaFRyYW5zYWN0aW9uLmdldFBvb2xlZCgpO1xuICAgICAg
dHJhbnNhY3Rpb24ucGVyZm9ybShydW5CYXRjaGVkVXBkYXRlcywgbnVsbCwgdHJhbnNhY3Rpb24p
O1xuICAgICAgUmVhY3RVcGRhdGVzRmx1c2hUcmFuc2FjdGlvbi5yZWxlYXNlKHRyYW5zYWN0aW9u
KTtcbiAgICB9XG5cbiAgICBpZiAoYXNhcEVucXVldWVkKSB7XG4gICAgICBhc2FwRW5xdWV1ZWQg
PSBmYWxzZTtcbiAgICAgIHZhciBxdWV1ZSA9IGFzYXBDYWxsYmFja1F1ZXVlO1xuICAgICAgYXNh
cENhbGxiYWNrUXVldWUgPSBDYWxsYmFja1F1ZXVlLmdldFBvb2xlZCgpO1xuICAgICAgcXVldWUu
bm90aWZ5QWxsKCk7XG4gICAgICBDYWxsYmFja1F1ZXVlLnJlbGVhc2UocXVldWUpO1xuICAgIH1c
biAgfVxufTtcblxuLyoqXG4gKiBNYXJrIGEgY29tcG9uZW50IGFzIG5lZWRpbmcgYSByZXJlbmRl
ciwgYWRkaW5nIGFuIG9wdGlvbmFsIGNhbGxiYWNrIHRvIGFcbiAqIGxpc3Qgb2YgZnVuY3Rpb25z
IHdoaWNoIHdpbGwgYmUgZXhlY3V0ZWQgb25jZSB0aGUgcmVyZW5kZXIgb2NjdXJzLlxuICovXG5m
dW5jdGlvbiBlbnF1ZXVlVXBkYXRlKGNvbXBvbmVudCkge1xuICBlbnN1cmVJbmplY3RlZCgpO1xu
XG4gIC8vIFZhcmlvdXMgcGFydHMgb2Ygb3VyIGNvZGUgKHN1Y2ggYXMgUmVhY3RDb21wb3NpdGVD
b21wb25lbnQnc1xuICAvLyBfcmVuZGVyVmFsaWRhdGVkQ29tcG9uZW50KSBhc3N1bWUgdGhhdCBj
YWxscyB0byByZW5kZXIgYXJlbid0IG5lc3RlZDtcbiAgLy8gdmVyaWZ5IHRoYXQgdGhhdCdzIHRo
ZSBjYXNlLiAoVGhpcyBpcyBjYWxsZWQgYnkgZWFjaCB0b3AtbGV2ZWwgdXBkYXRlXG4gIC8vIGZ1
bmN0aW9uLCBsaWtlIHNldFN0YXRlLCBmb3JjZVVwZGF0ZSwgZXRjLjsgY3JlYXRpb24gYW5kXG4g
IC8vIGRlc3RydWN0aW9uIG9mIHRvcC1sZXZlbCBjb21wb25lbnRzIGlzIGd1YXJkZWQgaW4gUmVh
Y3RNb3VudC4pXG5cbiAgaWYgKCFiYXRjaGluZ1N0cmF0ZWd5LmlzQmF0Y2hpbmdVcGRhdGVzKSB7
XG4gICAgYmF0Y2hpbmdTdHJhdGVneS5iYXRjaGVkVXBkYXRlcyhlbnF1ZXVlVXBkYXRlLCBjb21w
b25lbnQpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGRpcnR5Q29tcG9uZW50cy5wdXNoKGNvbXBv
bmVudCk7XG4gIGlmIChjb21wb25lbnQuX3VwZGF0ZUJhdGNoTnVtYmVyID09IG51bGwpIHtcbiAg
ICBjb21wb25lbnQuX3VwZGF0ZUJhdGNoTnVtYmVyID0gdXBkYXRlQmF0Y2hOdW1iZXIgKyAxO1xu
ICB9XG59XG5cbi8qKlxuICogRW5xdWV1ZSBhIGNhbGxiYWNrIHRvIGJlIHJ1biBhdCB0aGUgZW5k
IG9mIHRoZSBjdXJyZW50IGJhdGNoaW5nIGN5Y2xlLiBUaHJvd3NcbiAqIGlmIG5vIHVwZGF0ZXMg
YXJlIGN1cnJlbnRseSBiZWluZyBwZXJmb3JtZWQuXG4gKi9cbmZ1bmN0aW9uIGFzYXAoY2FsbGJh
Y2ssIGNvbnRleHQpIHtcbiAgIWJhdGNoaW5nU3RyYXRlZ3kuaXNCYXRjaGluZ1VwZGF0ZXMgPyBw
cm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAn
UmVhY3RVcGRhdGVzLmFzYXA6IENhblxcJ3QgZW5xdWV1ZSBhbiBhc2FwIGNhbGxiYWNrIGluIGEg
Y29udGV4dCB3aGVyZXVwZGF0ZXMgYXJlIG5vdCBiZWluZyBiYXRjaGVkLicpIDogX3Byb2RJbnZh
cmlhbnQoJzEyNScpIDogdm9pZCAwO1xuICBhc2FwQ2FsbGJhY2tRdWV1ZS5lbnF1ZXVlKGNhbGxi
YWNrLCBjb250ZXh0KTtcbiAgYXNhcEVucXVldWVkID0gdHJ1ZTtcbn1cblxudmFyIFJlYWN0VXBk
YXRlc0luamVjdGlvbiA9IHtcbiAgaW5qZWN0UmVjb25jaWxlVHJhbnNhY3Rpb246IGZ1bmN0aW9u
IChSZWNvbmNpbGVUcmFuc2FjdGlvbikge1xuICAgICFSZWNvbmNpbGVUcmFuc2FjdGlvbiA/IHBy
b2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdS
ZWFjdFVwZGF0ZXM6IG11c3QgcHJvdmlkZSBhIHJlY29uY2lsZSB0cmFuc2FjdGlvbiBjbGFzcycp
IDogX3Byb2RJbnZhcmlhbnQoJzEyNicpIDogdm9pZCAwO1xuICAgIFJlYWN0VXBkYXRlcy5SZWFj
dFJlY29uY2lsZVRyYW5zYWN0aW9uID0gUmVjb25jaWxlVHJhbnNhY3Rpb247XG4gIH0sXG5cbiAg
aW5qZWN0QmF0Y2hpbmdTdHJhdGVneTogZnVuY3Rpb24gKF9iYXRjaGluZ1N0cmF0ZWd5KSB7XG4g
ICAgIV9iYXRjaGluZ1N0cmF0ZWd5ID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0
aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ1JlYWN0VXBkYXRlczogbXVzdCBwcm92aWRlIGEgYmF0
Y2hpbmcgc3RyYXRlZ3knKSA6IF9wcm9kSW52YXJpYW50KCcxMjcnKSA6IHZvaWQgMDtcbiAgICAh
KHR5cGVvZiBfYmF0Y2hpbmdTdHJhdGVneS5iYXRjaGVkVXBkYXRlcyA9PT0gJ2Z1bmN0aW9uJykg
PyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNl
LCAnUmVhY3RVcGRhdGVzOiBtdXN0IHByb3ZpZGUgYSBiYXRjaGVkVXBkYXRlcygpIGZ1bmN0aW9u
JykgOiBfcHJvZEludmFyaWFudCgnMTI4JykgOiB2b2lkIDA7XG4gICAgISh0eXBlb2YgX2JhdGNo
aW5nU3RyYXRlZ3kuaXNCYXRjaGluZ1VwZGF0ZXMgPT09ICdib29sZWFuJykgPyBwcm9jZXNzLmVu
di5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnUmVhY3RVcGRh
dGVzOiBtdXN0IHByb3ZpZGUgYW4gaXNCYXRjaGluZ1VwZGF0ZXMgYm9vbGVhbiBhdHRyaWJ1dGUn
KSA6IF9wcm9kSW52YXJpYW50KCcxMjknKSA6IHZvaWQgMDtcbiAgICBiYXRjaGluZ1N0cmF0ZWd5
ID0gX2JhdGNoaW5nU3RyYXRlZ3k7XG4gIH1cbn07XG5cbnZhciBSZWFjdFVwZGF0ZXMgPSB7XG4g
IC8qKlxuICAgKiBSZWFjdCByZWZlcmVuY2VzIGBSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9uYCB1
c2luZyB0aGlzIHByb3BlcnR5IGluIG9yZGVyXG4gICAqIHRvIGFsbG93IGRlcGVuZGVuY3kgaW5q
ZWN0aW9uLlxuICAgKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIFJlYWN0UmVjb25jaWxlVHJh
bnNhY3Rpb246IG51bGwsXG5cbiAgYmF0Y2hlZFVwZGF0ZXM6IGJhdGNoZWRVcGRhdGVzLFxuICBl
bnF1ZXVlVXBkYXRlOiBlbnF1ZXVlVXBkYXRlLFxuICBmbHVzaEJhdGNoZWRVcGRhdGVzOiBmbHVz
aEJhdGNoZWRVcGRhdGVzLFxuICBpbmplY3Rpb246IFJlYWN0VXBkYXRlc0luamVjdGlvbixcbiAg
YXNhcDogYXNhcFxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdFVwZGF0ZXM7XG5cblxuLyoq
KioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3QtZG9tL2xp
Yi9SZWFjdFVwZGF0ZXMuanNcbiAqKiBtb2R1bGUgaWQgPSA5XG4gKiogbW9kdWxlIGNodW5rcyA9
IDBcbiAqKi8iLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMu
XG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGlj
ZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5T
RSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRp
dGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFU
RU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJpY3Qn
O1xuXG52YXIgX2Fzc2lnbiA9IHJlcXVpcmUoJ29iamVjdC1hc3NpZ24nKTtcblxudmFyIFBvb2xl
ZENsYXNzID0gcmVxdWlyZSgnLi9Qb29sZWRDbGFzcycpO1xuXG52YXIgZW1wdHlGdW5jdGlvbiA9
IHJlcXVpcmUoJ2ZianMvbGliL2VtcHR5RnVuY3Rpb24nKTtcbnZhciB3YXJuaW5nID0gcmVxdWly
ZSgnZmJqcy9saWIvd2FybmluZycpO1xuXG52YXIgZGlkV2FybkZvckFkZGVkTmV3UHJvcGVydHkg
PSBmYWxzZTtcbnZhciBpc1Byb3h5U3VwcG9ydGVkID0gdHlwZW9mIFByb3h5ID09PSAnZnVuY3Rp
b24nO1xuXG52YXIgc2hvdWxkQmVSZWxlYXNlZFByb3BlcnRpZXMgPSBbJ2Rpc3BhdGNoQ29uZmln
JywgJ190YXJnZXRJbnN0JywgJ25hdGl2ZUV2ZW50JywgJ2lzRGVmYXVsdFByZXZlbnRlZCcsICdp
c1Byb3BhZ2F0aW9uU3RvcHBlZCcsICdfZGlzcGF0Y2hMaXN0ZW5lcnMnLCAnX2Rpc3BhdGNoSW5z
dGFuY2VzJ107XG5cbi8qKlxuICogQGludGVyZmFjZSBFdmVudFxuICogQHNlZSBodHRwOi8vd3d3
LnczLm9yZy9UUi9ET00tTGV2ZWwtMy1FdmVudHMvXG4gKi9cbnZhciBFdmVudEludGVyZmFjZSA9
IHtcbiAgdHlwZTogbnVsbCxcbiAgdGFyZ2V0OiBudWxsLFxuICAvLyBjdXJyZW50VGFyZ2V0IGlz
IHNldCB3aGVuIGRpc3BhdGNoaW5nOyBubyB1c2UgaW4gY29weWluZyBpdCBoZXJlXG4gIGN1cnJl
bnRUYXJnZXQ6IGVtcHR5RnVuY3Rpb24udGhhdFJldHVybnNOdWxsLFxuICBldmVudFBoYXNlOiBu
dWxsLFxuICBidWJibGVzOiBudWxsLFxuICBjYW5jZWxhYmxlOiBudWxsLFxuICB0aW1lU3RhbXA6
IGZ1bmN0aW9uIChldmVudCkge1xuICAgIHJldHVybiBldmVudC50aW1lU3RhbXAgfHwgRGF0ZS5u
b3coKTtcbiAgfSxcbiAgZGVmYXVsdFByZXZlbnRlZDogbnVsbCxcbiAgaXNUcnVzdGVkOiBudWxs
XG59O1xuXG4vKipcbiAqIFN5bnRoZXRpYyBldmVudHMgYXJlIGRpc3BhdGNoZWQgYnkgZXZlbnQg
cGx1Z2lucywgdHlwaWNhbGx5IGluIHJlc3BvbnNlIHRvIGFcbiAqIHRvcC1sZXZlbCBldmVudCBk
ZWxlZ2F0aW9uIGhhbmRsZXIuXG4gKlxuICogVGhlc2Ugc3lzdGVtcyBzaG91bGQgZ2VuZXJhbGx5
IHVzZSBwb29saW5nIHRvIHJlZHVjZSB0aGUgZnJlcXVlbmN5IG9mIGdhcmJhZ2VcbiAqIGNvbGxl
Y3Rpb24uIFRoZSBzeXN0ZW0gc2hvdWxkIGNoZWNrIGBpc1BlcnNpc3RlbnRgIHRvIGRldGVybWlu
ZSB3aGV0aGVyIHRoZVxuICogZXZlbnQgc2hvdWxkIGJlIHJlbGVhc2VkIGludG8gdGhlIHBvb2wg
YWZ0ZXIgYmVpbmcgZGlzcGF0Y2hlZC4gVXNlcnMgdGhhdFxuICogbmVlZCBhIHBlcnNpc3RlZCBl
dmVudCBzaG91bGQgaW52b2tlIGBwZXJzaXN0YC5cbiAqXG4gKiBTeW50aGV0aWMgZXZlbnRzIChh
bmQgc3ViY2xhc3NlcykgaW1wbGVtZW50IHRoZSBET00gTGV2ZWwgMyBFdmVudHMgQVBJIGJ5XG4g
KiBub3JtYWxpemluZyBicm93c2VyIHF1aXJrcy4gU3ViY2xhc3NlcyBkbyBub3QgbmVjZXNzYXJp
bHkgaGF2ZSB0byBpbXBsZW1lbnQgYVxuICogRE9NIGludGVyZmFjZTsgY3VzdG9tIGFwcGxpY2F0
aW9uLXNwZWNpZmljIGV2ZW50cyBjYW4gYWxzbyBzdWJjbGFzcyB0aGlzLlxuICpcbiAqIEBwYXJh
bSB7b2JqZWN0fSBkaXNwYXRjaENvbmZpZyBDb25maWd1cmF0aW9uIHVzZWQgdG8gZGlzcGF0Y2gg
dGhpcyBldmVudC5cbiAqIEBwYXJhbSB7Kn0gdGFyZ2V0SW5zdCBNYXJrZXIgaWRlbnRpZnlpbmcg
dGhlIGV2ZW50IHRhcmdldC5cbiAqIEBwYXJhbSB7b2JqZWN0fSBuYXRpdmVFdmVudCBOYXRpdmUg
YnJvd3NlciBldmVudC5cbiAqIEBwYXJhbSB7RE9NRXZlbnRUYXJnZXR9IG5hdGl2ZUV2ZW50VGFy
Z2V0IFRhcmdldCBub2RlLlxuICovXG5mdW5jdGlvbiBTeW50aGV0aWNFdmVudChkaXNwYXRjaENv
bmZpZywgdGFyZ2V0SW5zdCwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KSB7XG4gIGlm
IChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgLy8gdGhlc2Ug
aGF2ZSBhIGdldHRlci9zZXR0ZXIgZm9yIHdhcm5pbmdzXG4gICAgZGVsZXRlIHRoaXMubmF0aXZl
RXZlbnQ7XG4gICAgZGVsZXRlIHRoaXMucHJldmVudERlZmF1bHQ7XG4gICAgZGVsZXRlIHRoaXMu
c3RvcFByb3BhZ2F0aW9uO1xuICB9XG5cbiAgdGhpcy5kaXNwYXRjaENvbmZpZyA9IGRpc3BhdGNo
Q29uZmlnO1xuICB0aGlzLl90YXJnZXRJbnN0ID0gdGFyZ2V0SW5zdDtcbiAgdGhpcy5uYXRpdmVF
dmVudCA9IG5hdGl2ZUV2ZW50O1xuXG4gIHZhciBJbnRlcmZhY2UgPSB0aGlzLmNvbnN0cnVjdG9y
LkludGVyZmFjZTtcbiAgZm9yICh2YXIgcHJvcE5hbWUgaW4gSW50ZXJmYWNlKSB7XG4gICAgaWYg
KCFJbnRlcmZhY2UuaGFzT3duUHJvcGVydHkocHJvcE5hbWUpKSB7XG4gICAgICBjb250aW51ZTtc
biAgICB9XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtc
biAgICAgIGRlbGV0ZSB0aGlzW3Byb3BOYW1lXTsgLy8gdGhpcyBoYXMgYSBnZXR0ZXIvc2V0dGVy
IGZvciB3YXJuaW5nc1xuICAgIH1cbiAgICB2YXIgbm9ybWFsaXplID0gSW50ZXJmYWNlW3Byb3BO
YW1lXTtcbiAgICBpZiAobm9ybWFsaXplKSB7XG4gICAgICB0aGlzW3Byb3BOYW1lXSA9IG5vcm1h
bGl6ZShuYXRpdmVFdmVudCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChwcm9wTmFtZSA9PT0g
J3RhcmdldCcpIHtcbiAgICAgICAgdGhpcy50YXJnZXQgPSBuYXRpdmVFdmVudFRhcmdldDtcbiAg
ICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXNbcHJvcE5hbWVdID0gbmF0aXZlRXZlbnRbcHJvcE5h
bWVdO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHZhciBkZWZhdWx0UHJldmVudGVkID0gbmF0
aXZlRXZlbnQuZGVmYXVsdFByZXZlbnRlZCAhPSBudWxsID8gbmF0aXZlRXZlbnQuZGVmYXVsdFBy
ZXZlbnRlZCA6IG5hdGl2ZUV2ZW50LnJldHVyblZhbHVlID09PSBmYWxzZTtcbiAgaWYgKGRlZmF1
bHRQcmV2ZW50ZWQpIHtcbiAgICB0aGlzLmlzRGVmYXVsdFByZXZlbnRlZCA9IGVtcHR5RnVuY3Rp
b24udGhhdFJldHVybnNUcnVlO1xuICB9IGVsc2Uge1xuICAgIHRoaXMuaXNEZWZhdWx0UHJldmVu
dGVkID0gZW1wdHlGdW5jdGlvbi50aGF0UmV0dXJuc0ZhbHNlO1xuICB9XG4gIHRoaXMuaXNQcm9w
YWdhdGlvblN0b3BwZWQgPSBlbXB0eUZ1bmN0aW9uLnRoYXRSZXR1cm5zRmFsc2U7XG4gIHJldHVy
biB0aGlzO1xufVxuXG5fYXNzaWduKFN5bnRoZXRpY0V2ZW50LnByb3RvdHlwZSwge1xuICBwcmV2
ZW50RGVmYXVsdDogZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuZGVmYXVsdFByZXZlbnRlZCA9IHRy
dWU7XG4gICAgdmFyIGV2ZW50ID0gdGhpcy5uYXRpdmVFdmVudDtcbiAgICBpZiAoIWV2ZW50KSB7
XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGV2ZW50LnByZXZlbnREZWZhdWx0KSB7
XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUt
bmV4dC1saW5lIHZhbGlkLXR5cGVvZlxuICAgIH0gZWxzZSBpZiAodHlwZW9mIGV2ZW50LnJldHVy
blZhbHVlICE9PSAndW5rbm93bicpIHtcbiAgICAgIGV2ZW50LnJldHVyblZhbHVlID0gZmFsc2U7
XG4gICAgfVxuICAgIHRoaXMuaXNEZWZhdWx0UHJldmVudGVkID0gZW1wdHlGdW5jdGlvbi50aGF0
UmV0dXJuc1RydWU7XG4gIH0sXG5cbiAgc3RvcFByb3BhZ2F0aW9uOiBmdW5jdGlvbiAoKSB7XG4g
ICAgdmFyIGV2ZW50ID0gdGhpcy5uYXRpdmVFdmVudDtcbiAgICBpZiAoIWV2ZW50KSB7XG4gICAg
ICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGV2ZW50LnN0b3BQcm9wYWdhdGlvbikge1xuICAg
ICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0
LWxpbmUgdmFsaWQtdHlwZW9mXG4gICAgfSBlbHNlIGlmICh0eXBlb2YgZXZlbnQuY2FuY2VsQnVi
YmxlICE9PSAndW5rbm93bicpIHtcbiAgICAgIC8vIFRoZSBDaGFuZ2VFdmVudFBsdWdpbiByZWdp
c3RlcnMgYSBcInByb3BlcnR5Y2hhbmdlXCIgZXZlbnQgZm9yXG4gICAgICAvLyBJRS4gVGhpcyBl
dmVudCBkb2VzIG5vdCBzdXBwb3J0IGJ1YmJsaW5nIG9yIGNhbmNlbGxpbmcsIGFuZFxuICAgICAg
Ly8gYW55IHJlZmVyZW5jZXMgdG8gY2FuY2VsQnViYmxlIHRocm93IFwiTWVtYmVyIG5vdCBmb3Vu
ZFwiLiAgQVxuICAgICAgLy8gdHlwZW9mIGNoZWNrIG9mIFwidW5rbm93blwiIGNpcmN1bXZlbnRz
IHRoaXMgaXNzdWUgKGFuZCBpcyBhbHNvXG4gICAgICAvLyBJRSBzcGVjaWZpYykuXG4gICAgICBl
dmVudC5jYW5jZWxCdWJibGUgPSB0cnVlO1xuICAgIH1cblxuICAgIHRoaXMuaXNQcm9wYWdhdGlv
blN0b3BwZWQgPSBlbXB0eUZ1bmN0aW9uLnRoYXRSZXR1cm5zVHJ1ZTtcbiAgfSxcblxuICAvKipc
biAgICogV2UgcmVsZWFzZSBhbGwgZGlzcGF0Y2hlZCBgU3ludGhldGljRXZlbnRgcyBhZnRlciBl
YWNoIGV2ZW50IGxvb3AsIGFkZGluZ1xuICAgKiB0aGVtIGJhY2sgaW50byB0aGUgcG9vbC4gVGhp
cyBhbGxvd3MgYSB3YXkgdG8gaG9sZCBvbnRvIGEgcmVmZXJlbmNlIHRoYXRcbiAgICogd29uJ3Qg
YmUgYWRkZWQgYmFjayBpbnRvIHRoZSBwb29sLlxuICAgKi9cbiAgcGVyc2lzdDogZnVuY3Rpb24g
KCkge1xuICAgIHRoaXMuaXNQZXJzaXN0ZW50ID0gZW1wdHlGdW5jdGlvbi50aGF0UmV0dXJuc1Ry
dWU7XG4gIH0sXG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiB0aGlzIGV2ZW50IHNob3VsZCBiZSBy
ZWxlYXNlZCBiYWNrIGludG8gdGhlIHBvb2wuXG4gICAqXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59
IFRydWUgaWYgdGhpcyBzaG91bGQgbm90IGJlIHJlbGVhc2VkLCBmYWxzZSBvdGhlcndpc2UuXG4g
ICAqL1xuICBpc1BlcnNpc3RlbnQ6IGVtcHR5RnVuY3Rpb24udGhhdFJldHVybnNGYWxzZSxcblxu
ICAvKipcbiAgICogYFBvb2xlZENsYXNzYCBsb29rcyBmb3IgYGRlc3RydWN0b3JgIG9uIGVhY2gg
aW5zdGFuY2UgaXQgcmVsZWFzZXMuXG4gICAqL1xuICBkZXN0cnVjdG9yOiBmdW5jdGlvbiAoKSB7
XG4gICAgdmFyIEludGVyZmFjZSA9IHRoaXMuY29uc3RydWN0b3IuSW50ZXJmYWNlO1xuICAgIGZv
ciAodmFyIHByb3BOYW1lIGluIEludGVyZmFjZSkge1xuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5P
REVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5
KHRoaXMsIHByb3BOYW1lLCBnZXRQb29sZWRXYXJuaW5nUHJvcGVydHlEZWZpbml0aW9uKHByb3BO
YW1lLCBJbnRlcmZhY2VbcHJvcE5hbWVdKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlz
W3Byb3BOYW1lXSA9IG51bGw7XG4gICAgICB9XG4gICAgfVxuICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgc2hvdWxkQmVSZWxlYXNlZFByb3BlcnRpZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHRoaXNb
c2hvdWxkQmVSZWxlYXNlZFByb3BlcnRpZXNbaV1dID0gbnVsbDtcbiAgICB9XG4gICAgaWYgKHBy
b2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIE9iamVjdC5kZWZp
bmVQcm9wZXJ0eSh0aGlzLCAnbmF0aXZlRXZlbnQnLCBnZXRQb29sZWRXYXJuaW5nUHJvcGVydHlE
ZWZpbml0aW9uKCduYXRpdmVFdmVudCcsIG51bGwpKTtcbiAgICAgIE9iamVjdC5kZWZpbmVQcm9w
ZXJ0eSh0aGlzLCAncHJldmVudERlZmF1bHQnLCBnZXRQb29sZWRXYXJuaW5nUHJvcGVydHlEZWZp
bml0aW9uKCdwcmV2ZW50RGVmYXVsdCcsIGVtcHR5RnVuY3Rpb24pKTtcbiAgICAgIE9iamVjdC5k
ZWZpbmVQcm9wZXJ0eSh0aGlzLCAnc3RvcFByb3BhZ2F0aW9uJywgZ2V0UG9vbGVkV2FybmluZ1By
b3BlcnR5RGVmaW5pdGlvbignc3RvcFByb3BhZ2F0aW9uJywgZW1wdHlGdW5jdGlvbikpO1xuICAg
IH1cbiAgfVxufSk7XG5cblN5bnRoZXRpY0V2ZW50LkludGVyZmFjZSA9IEV2ZW50SW50ZXJmYWNl
O1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICBpZiAo
aXNQcm94eVN1cHBvcnRlZCkge1xuICAgIC8qZXNsaW50LWRpc2FibGUgbm8tZnVuYy1hc3NpZ24g
Ki9cbiAgICBTeW50aGV0aWNFdmVudCA9IG5ldyBQcm94eShTeW50aGV0aWNFdmVudCwge1xuICAg
ICAgY29uc3RydWN0OiBmdW5jdGlvbiAodGFyZ2V0LCBhcmdzKSB7XG4gICAgICAgIHJldHVybiB0
aGlzLmFwcGx5KHRhcmdldCwgT2JqZWN0LmNyZWF0ZSh0YXJnZXQucHJvdG90eXBlKSwgYXJncyk7
XG4gICAgICB9LFxuICAgICAgYXBwbHk6IGZ1bmN0aW9uIChjb25zdHJ1Y3RvciwgdGhhdCwgYXJn
cykge1xuICAgICAgICByZXR1cm4gbmV3IFByb3h5KGNvbnN0cnVjdG9yLmFwcGx5KHRoYXQsIGFy
Z3MpLCB7XG4gICAgICAgICAgc2V0OiBmdW5jdGlvbiAodGFyZ2V0LCBwcm9wLCB2YWx1ZSkge1xu
ICAgICAgICAgICAgaWYgKHByb3AgIT09ICdpc1BlcnNpc3RlbnQnICYmICF0YXJnZXQuY29uc3Ry
dWN0b3IuSW50ZXJmYWNlLmhhc093blByb3BlcnR5KHByb3ApICYmIHNob3VsZEJlUmVsZWFzZWRQ
cm9wZXJ0aWVzLmluZGV4T2YocHJvcCkgPT09IC0xKSB7XG4gICAgICAgICAgICAgIHByb2Nlc3Mu
ZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGRpZFdhcm5Gb3JBZGRlZE5l
d1Byb3BlcnR5IHx8IHRhcmdldC5pc1BlcnNpc3RlbnQoKSwgXCJUaGlzIHN5bnRoZXRpYyBldmVu
dCBpcyByZXVzZWQgZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMuIElmIHlvdSdyZSBcIiArIFwic2Vl
aW5nIHRoaXMsIHlvdSdyZSBhZGRpbmcgYSBuZXcgcHJvcGVydHkgaW4gdGhlIHN5bnRoZXRpYyBl
dmVudCBvYmplY3QuIFwiICsgJ1RoZSBwcm9wZXJ0eSBpcyBuZXZlciByZWxlYXNlZC4gU2VlICcg
KyAnaHR0cHM6Ly9mYi5tZS9yZWFjdC1ldmVudC1wb29saW5nIGZvciBtb3JlIGluZm9ybWF0aW9u
LicpIDogdm9pZCAwO1xuICAgICAgICAgICAgICBkaWRXYXJuRm9yQWRkZWROZXdQcm9wZXJ0eSA9
IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0YXJnZXRbcHJvcF0gPSB2YWx1ZTtc
biAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAg
ICB9XG4gICAgfSk7XG4gICAgLyplc2xpbnQtZW5hYmxlIG5vLWZ1bmMtYXNzaWduICovXG4gIH1c
bn1cbi8qKlxuICogSGVscGVyIHRvIHJlZHVjZSBib2lsZXJwbGF0ZSB3aGVuIGNyZWF0aW5nIHN1
YmNsYXNzZXMuXG4gKlxuICogQHBhcmFtIHtmdW5jdGlvbn0gQ2xhc3NcbiAqIEBwYXJhbSB7P29i
amVjdH0gSW50ZXJmYWNlXG4gKi9cblN5bnRoZXRpY0V2ZW50LmF1Z21lbnRDbGFzcyA9IGZ1bmN0
aW9uIChDbGFzcywgSW50ZXJmYWNlKSB7XG4gIHZhciBTdXBlciA9IHRoaXM7XG5cbiAgdmFyIEUg
PSBmdW5jdGlvbiAoKSB7fTtcbiAgRS5wcm90b3R5cGUgPSBTdXBlci5wcm90b3R5cGU7XG4gIHZh
ciBwcm90b3R5cGUgPSBuZXcgRSgpO1xuXG4gIF9hc3NpZ24ocHJvdG90eXBlLCBDbGFzcy5wcm90
b3R5cGUpO1xuICBDbGFzcy5wcm90b3R5cGUgPSBwcm90b3R5cGU7XG4gIENsYXNzLnByb3RvdHlw
ZS5jb25zdHJ1Y3RvciA9IENsYXNzO1xuXG4gIENsYXNzLkludGVyZmFjZSA9IF9hc3NpZ24oe30s
IFN1cGVyLkludGVyZmFjZSwgSW50ZXJmYWNlKTtcbiAgQ2xhc3MuYXVnbWVudENsYXNzID0gU3Vw
ZXIuYXVnbWVudENsYXNzO1xuXG4gIFBvb2xlZENsYXNzLmFkZFBvb2xpbmdUbyhDbGFzcywgUG9v
bGVkQ2xhc3MuZm91ckFyZ3VtZW50UG9vbGVyKTtcbn07XG5cblBvb2xlZENsYXNzLmFkZFBvb2xp
bmdUbyhTeW50aGV0aWNFdmVudCwgUG9vbGVkQ2xhc3MuZm91ckFyZ3VtZW50UG9vbGVyKTtcblxu
bW9kdWxlLmV4cG9ydHMgPSBTeW50aGV0aWNFdmVudDtcblxuLyoqXG4gICogSGVscGVyIHRvIG51
bGxpZnkgc3ludGhldGljRXZlbnQgaW5zdGFuY2UgcHJvcGVydGllcyB3aGVuIGRlc3RydWN0aW5n
XG4gICpcbiAgKiBAcGFyYW0ge29iamVjdH0gU3ludGhldGljRXZlbnRcbiAgKiBAcGFyYW0ge1N0
cmluZ30gcHJvcE5hbWVcbiAgKiBAcmV0dXJuIHtvYmplY3R9IGRlZmluZVByb3BlcnR5IG9iamVj
dFxuICAqL1xuZnVuY3Rpb24gZ2V0UG9vbGVkV2FybmluZ1Byb3BlcnR5RGVmaW5pdGlvbihwcm9w
TmFtZSwgZ2V0VmFsKSB7XG4gIHZhciBpc0Z1bmN0aW9uID0gdHlwZW9mIGdldFZhbCA9PT0gJ2Z1
bmN0aW9uJztcbiAgcmV0dXJuIHtcbiAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgc2V0OiBz
ZXQsXG4gICAgZ2V0OiBnZXRcbiAgfTtcblxuICBmdW5jdGlvbiBzZXQodmFsKSB7XG4gICAgdmFy
IGFjdGlvbiA9IGlzRnVuY3Rpb24gPyAnc2V0dGluZyB0aGUgbWV0aG9kJyA6ICdzZXR0aW5nIHRo
ZSBwcm9wZXJ0eSc7XG4gICAgd2FybihhY3Rpb24sICdUaGlzIGlzIGVmZmVjdGl2ZWx5IGEgbm8t
b3AnKTtcbiAgICByZXR1cm4gdmFsO1xuICB9XG5cbiAgZnVuY3Rpb24gZ2V0KCkge1xuICAgIHZh
ciBhY3Rpb24gPSBpc0Z1bmN0aW9uID8gJ2FjY2Vzc2luZyB0aGUgbWV0aG9kJyA6ICdhY2Nlc3Np
bmcgdGhlIHByb3BlcnR5JztcbiAgICB2YXIgcmVzdWx0ID0gaXNGdW5jdGlvbiA/ICdUaGlzIGlz
IGEgbm8tb3AgZnVuY3Rpb24nIDogJ1RoaXMgaXMgc2V0IHRvIG51bGwnO1xuICAgIHdhcm4oYWN0
aW9uLCByZXN1bHQpO1xuICAgIHJldHVybiBnZXRWYWw7XG4gIH1cblxuICBmdW5jdGlvbiB3YXJu
KGFjdGlvbiwgcmVzdWx0KSB7XG4gICAgdmFyIHdhcm5pbmdDb25kaXRpb24gPSBmYWxzZTtcbiAg
ICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyh3YXJuaW5n
Q29uZGl0aW9uLCBcIlRoaXMgc3ludGhldGljIGV2ZW50IGlzIHJldXNlZCBmb3IgcGVyZm9ybWFu
Y2UgcmVhc29ucy4gSWYgeW91J3JlIHNlZWluZyB0aGlzLCBcIiArIFwieW91J3JlICVzIGAlc2Ag
b24gYSByZWxlYXNlZC9udWxsaWZpZWQgc3ludGhldGljIGV2ZW50LiAlcy4gXCIgKyAnSWYgeW91
IG11c3Qga2VlcCB0aGUgb3JpZ2luYWwgc3ludGhldGljIGV2ZW50IGFyb3VuZCwgdXNlIGV2ZW50
LnBlcnNpc3QoKS4gJyArICdTZWUgaHR0cHM6Ly9mYi5tZS9yZWFjdC1ldmVudC1wb29saW5nIGZv
ciBtb3JlIGluZm9ybWF0aW9uLicsIGFjdGlvbiwgcHJvcE5hbWUsIHJlc3VsdCkgOiB2b2lkIDA7
XG4gIH1cbn1cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoq
IC4vfi9yZWFjdC1kb20vbGliL1N5bnRoZXRpY0V2ZW50LmpzXG4gKiogbW9kdWxlIGlkID0gMTBc
biAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJl
c2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhp
cyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91
bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMg
c291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2Fu
IGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpc
biAqIFxuICovXG5cbid1c2Ugc3RyaWN0JztcblxuLyoqXG4gKiBLZWVwcyB0cmFjayBvZiB0aGUg
Y3VycmVudCBvd25lci5cbiAqXG4gKiBUaGUgY3VycmVudCBvd25lciBpcyB0aGUgY29tcG9uZW50
IHdobyBzaG91bGQgb3duIGFueSBjb21wb25lbnRzIHRoYXQgYXJlXG4gKiBjdXJyZW50bHkgYmVp
bmcgY29uc3RydWN0ZWQuXG4gKi9cbnZhciBSZWFjdEN1cnJlbnRPd25lciA9IHtcbiAgLyoqXG4g
ICAqIEBpbnRlcm5hbFxuICAgKiBAdHlwZSB7UmVhY3RDb21wb25lbnR9XG4gICAqL1xuICBjdXJy
ZW50OiBudWxsXG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0Q3VycmVudE93bmVyO1xuXG5c
bi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0L2xp
Yi9SZWFjdEN1cnJlbnRPd25lci5qc1xuICoqIG1vZHVsZSBpZCA9IDExXG4gKiogbW9kdWxlIGNo
dW5rcyA9IDBcbiAqKi8iLCIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gcmVxdWly
ZSgnLi9saWIvUmVhY3QnKTtcblxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sg
Rk9PVEVSXG4gKiogLi9+L3JlYWN0L3JlYWN0LmpzXG4gKiogbW9kdWxlIGlkID0gMTJcbiAqKiBt
b2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTUtcHJlc2VudCwg
RmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3Vy
Y2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4g
dGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNl
IHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZv
dW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xu
XG4ndXNlIHN0cmljdCc7XG5cbnZhciBET01OYW1lc3BhY2VzID0gcmVxdWlyZSgnLi9ET01OYW1l
c3BhY2VzJyk7XG52YXIgc2V0SW5uZXJIVE1MID0gcmVxdWlyZSgnLi9zZXRJbm5lckhUTUwnKTtc
blxudmFyIGNyZWF0ZU1pY3Jvc29mdFVuc2FmZUxvY2FsRnVuY3Rpb24gPSByZXF1aXJlKCcuL2Ny
ZWF0ZU1pY3Jvc29mdFVuc2FmZUxvY2FsRnVuY3Rpb24nKTtcbnZhciBzZXRUZXh0Q29udGVudCA9
IHJlcXVpcmUoJy4vc2V0VGV4dENvbnRlbnQnKTtcblxudmFyIEVMRU1FTlRfTk9ERV9UWVBFID0g
MTtcbnZhciBET0NVTUVOVF9GUkFHTUVOVF9OT0RFX1RZUEUgPSAxMTtcblxuLyoqXG4gKiBJbiBJ
RSAoOC0xMSkgYW5kIEVkZ2UsIGFwcGVuZGluZyBub2RlcyB3aXRoIG5vIGNoaWxkcmVuIGlzIGRy
YW1hdGljYWxseVxuICogZmFzdGVyIHRoYW4gYXBwZW5kaW5nIGEgZnVsbCBzdWJ0cmVlLCBzbyB3
ZSBlc3NlbnRpYWxseSBxdWV1ZSB1cCB0aGVcbiAqIC5hcHBlbmRDaGlsZCBjYWxscyBoZXJlIGFu
ZCBhcHBseSB0aGVtIHNvIGVhY2ggbm9kZSBpcyBhZGRlZCB0byBpdHMgcGFyZW50XG4gKiBiZWZv
cmUgYW55IGNoaWxkcmVuIGFyZSBhZGRlZC5cbiAqXG4gKiBJbiBvdGhlciBicm93c2VycywgZG9p
bmcgc28gaXMgc2xvd2VyIG9yIG5ldXRyYWwgY29tcGFyZWQgdG8gdGhlIG90aGVyIG9yZGVyXG4g
KiAoaW4gRmlyZWZveCwgdHdpY2UgYXMgc2xvdykgc28gd2Ugb25seSBkbyB0aGlzIGludmVyc2lv
biBpbiBJRS5cbiAqXG4gKiBTZWUgaHR0cHM6Ly9naXRodWIuY29tL3NwaWN5ai9pbm5lcmh0bWwt
dnMtY3JlYXRlZWxlbWVudC12cy1jbG9uZW5vZGUuXG4gKi9cbnZhciBlbmFibGVMYXp5ID0gdHlw
ZW9mIGRvY3VtZW50ICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2YgZG9jdW1lbnQuZG9jdW1lbnRN
b2RlID09PSAnbnVtYmVyJyB8fCB0eXBlb2YgbmF2aWdhdG9yICE9PSAndW5kZWZpbmVkJyAmJiB0
eXBlb2YgbmF2aWdhdG9yLnVzZXJBZ2VudCA9PT0gJ3N0cmluZycgJiYgL1xcYkVkZ2VcXC9cXGQv
LnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCk7XG5cbmZ1bmN0aW9uIGluc2VydFRyZWVDaGlsZHJl
bih0cmVlKSB7XG4gIGlmICghZW5hYmxlTGF6eSkge1xuICAgIHJldHVybjtcbiAgfVxuICB2YXIg
bm9kZSA9IHRyZWUubm9kZTtcbiAgdmFyIGNoaWxkcmVuID0gdHJlZS5jaGlsZHJlbjtcbiAgaWYg
KGNoaWxkcmVuLmxlbmd0aCkge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2hpbGRyZW4ubGVu
Z3RoOyBpKyspIHtcbiAgICAgIGluc2VydFRyZWVCZWZvcmUobm9kZSwgY2hpbGRyZW5baV0sIG51
bGwpO1xuICAgIH1cbiAgfSBlbHNlIGlmICh0cmVlLmh0bWwgIT0gbnVsbCkge1xuICAgIHNldElu
bmVySFRNTChub2RlLCB0cmVlLmh0bWwpO1xuICB9IGVsc2UgaWYgKHRyZWUudGV4dCAhPSBudWxs
KSB7XG4gICAgc2V0VGV4dENvbnRlbnQobm9kZSwgdHJlZS50ZXh0KTtcbiAgfVxufVxuXG52YXIg
aW5zZXJ0VHJlZUJlZm9yZSA9IGNyZWF0ZU1pY3Jvc29mdFVuc2FmZUxvY2FsRnVuY3Rpb24oZnVu
Y3Rpb24gKHBhcmVudE5vZGUsIHRyZWUsIHJlZmVyZW5jZU5vZGUpIHtcbiAgLy8gRG9jdW1lbnRG
cmFnbWVudHMgYXJlbid0IGFjdHVhbGx5IHBhcnQgb2YgdGhlIERPTSBhZnRlciBpbnNlcnRpb24g
c29cbiAgLy8gYXBwZW5kaW5nIGNoaWxkcmVuIHdvbid0IHVwZGF0ZSB0aGUgRE9NLiBXZSBuZWVk
IHRvIGVuc3VyZSB0aGUgZnJhZ21lbnRcbiAgLy8gaXMgcHJvcGVybHkgcG9wdWxhdGVkIGZpcnN0
LCBicmVha2luZyBvdXQgb2Ygb3VyIGxhenkgYXBwcm9hY2ggZm9yIGp1c3RcbiAgLy8gdGhpcyBs
ZXZlbC4gQWxzbywgc29tZSA8b2JqZWN0PiBwbHVnaW5zIChsaWtlIEZsYXNoIFBsYXllcikgd2ls
bCByZWFkXG4gIC8vIDxwYXJhbT4gbm9kZXMgaW1tZWRpYXRlbHkgdXBvbiBpbnNlcnRpb24gaW50
byB0aGUgRE9NLCBzbyA8b2JqZWN0PlxuICAvLyBtdXN0IGFsc28gYmUgcG9wdWxhdGVkIHByaW9y
IHRvIGluc2VydGlvbiBpbnRvIHRoZSBET00uXG4gIGlmICh0cmVlLm5vZGUubm9kZVR5cGUgPT09
IERPQ1VNRU5UX0ZSQUdNRU5UX05PREVfVFlQRSB8fCB0cmVlLm5vZGUubm9kZVR5cGUgPT09IEVM
RU1FTlRfTk9ERV9UWVBFICYmIHRyZWUubm9kZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSAn
b2JqZWN0JyAmJiAodHJlZS5ub2RlLm5hbWVzcGFjZVVSSSA9PSBudWxsIHx8IHRyZWUubm9kZS5u
YW1lc3BhY2VVUkkgPT09IERPTU5hbWVzcGFjZXMuaHRtbCkpIHtcbiAgICBpbnNlcnRUcmVlQ2hp
bGRyZW4odHJlZSk7XG4gICAgcGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUodHJlZS5ub2RlLCByZWZl
cmVuY2VOb2RlKTtcbiAgfSBlbHNlIHtcbiAgICBwYXJlbnROb2RlLmluc2VydEJlZm9yZSh0cmVl
Lm5vZGUsIHJlZmVyZW5jZU5vZGUpO1xuICAgIGluc2VydFRyZWVDaGlsZHJlbih0cmVlKTtcbiAg
fVxufSk7XG5cbmZ1bmN0aW9uIHJlcGxhY2VDaGlsZFdpdGhUcmVlKG9sZE5vZGUsIG5ld1RyZWUp
IHtcbiAgb2xkTm9kZS5wYXJlbnROb2RlLnJlcGxhY2VDaGlsZChuZXdUcmVlLm5vZGUsIG9sZE5v
ZGUpO1xuICBpbnNlcnRUcmVlQ2hpbGRyZW4obmV3VHJlZSk7XG59XG5cbmZ1bmN0aW9uIHF1ZXVl
Q2hpbGQocGFyZW50VHJlZSwgY2hpbGRUcmVlKSB7XG4gIGlmIChlbmFibGVMYXp5KSB7XG4gICAg
cGFyZW50VHJlZS5jaGlsZHJlbi5wdXNoKGNoaWxkVHJlZSk7XG4gIH0gZWxzZSB7XG4gICAgcGFy
ZW50VHJlZS5ub2RlLmFwcGVuZENoaWxkKGNoaWxkVHJlZS5ub2RlKTtcbiAgfVxufVxuXG5mdW5j
dGlvbiBxdWV1ZUhUTUwodHJlZSwgaHRtbCkge1xuICBpZiAoZW5hYmxlTGF6eSkge1xuICAgIHRy
ZWUuaHRtbCA9IGh0bWw7XG4gIH0gZWxzZSB7XG4gICAgc2V0SW5uZXJIVE1MKHRyZWUubm9kZSwg
aHRtbCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gcXVldWVUZXh0KHRyZWUsIHRleHQpIHtcbiAgaWYg
KGVuYWJsZUxhenkpIHtcbiAgICB0cmVlLnRleHQgPSB0ZXh0O1xuICB9IGVsc2Uge1xuICAgIHNl
dFRleHRDb250ZW50KHRyZWUubm9kZSwgdGV4dCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gdG9TdHJp
bmcoKSB7XG4gIHJldHVybiB0aGlzLm5vZGUubm9kZU5hbWU7XG59XG5cbmZ1bmN0aW9uIERPTUxh
enlUcmVlKG5vZGUpIHtcbiAgcmV0dXJuIHtcbiAgICBub2RlOiBub2RlLFxuICAgIGNoaWxkcmVu
OiBbXSxcbiAgICBodG1sOiBudWxsLFxuICAgIHRleHQ6IG51bGwsXG4gICAgdG9TdHJpbmc6IHRv
U3RyaW5nXG4gIH07XG59XG5cbkRPTUxhenlUcmVlLmluc2VydFRyZWVCZWZvcmUgPSBpbnNlcnRU
cmVlQmVmb3JlO1xuRE9NTGF6eVRyZWUucmVwbGFjZUNoaWxkV2l0aFRyZWUgPSByZXBsYWNlQ2hp
bGRXaXRoVHJlZTtcbkRPTUxhenlUcmVlLnF1ZXVlQ2hpbGQgPSBxdWV1ZUNoaWxkO1xuRE9NTGF6
eVRyZWUucXVldWVIVE1MID0gcXVldWVIVE1MO1xuRE9NTGF6eVRyZWUucXVldWVUZXh0ID0gcXVl
dWVUZXh0O1xuXG5tb2R1bGUuZXhwb3J0cyA9IERPTUxhenlUcmVlO1xuXG5cbi8qKioqKioqKioq
KioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0LWRvbS9saWIvRE9NTGF6
eVRyZWUuanNcbiAqKiBtb2R1bGUgaWQgPSAxNFxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiov
IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxs
IHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVu
ZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBp
biB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBn
cmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmls
ZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFy
IF9wcm9kSW52YXJpYW50ID0gcmVxdWlyZSgnLi9yZWFjdFByb2RJbnZhcmlhbnQnKTtcblxudmFy
IGludmFyaWFudCA9IHJlcXVpcmUoJ2ZianMvbGliL2ludmFyaWFudCcpO1xuXG5mdW5jdGlvbiBj
aGVja01hc2sodmFsdWUsIGJpdG1hc2spIHtcbiAgcmV0dXJuICh2YWx1ZSAmIGJpdG1hc2spID09
PSBiaXRtYXNrO1xufVxuXG52YXIgRE9NUHJvcGVydHlJbmplY3Rpb24gPSB7XG4gIC8qKlxuICAg
KiBNYXBwaW5nIGZyb20gbm9ybWFsaXplZCwgY2FtZWxjYXNlZCBwcm9wZXJ0eSBuYW1lcyB0byBh
IGNvbmZpZ3VyYXRpb24gdGhhdFxuICAgKiBzcGVjaWZpZXMgaG93IHRoZSBhc3NvY2lhdGVkIERP
TSBwcm9wZXJ0eSBzaG91bGQgYmUgYWNjZXNzZWQgb3IgcmVuZGVyZWQuXG4gICAqL1xuICBNVVNU
X1VTRV9QUk9QRVJUWTogMHgxLFxuICBIQVNfQk9PTEVBTl9WQUxVRTogMHg0LFxuICBIQVNfTlVN
RVJJQ19WQUxVRTogMHg4LFxuICBIQVNfUE9TSVRJVkVfTlVNRVJJQ19WQUxVRTogMHgxMCB8IDB4
OCxcbiAgSEFTX09WRVJMT0FERURfQk9PTEVBTl9WQUxVRTogMHgyMCxcblxuICAvKipcbiAgICog
SW5qZWN0IHNvbWUgc3BlY2lhbGl6ZWQga25vd2xlZGdlIGFib3V0IHRoZSBET00uIFRoaXMgdGFr
ZXMgYSBjb25maWcgb2JqZWN0XG4gICAqIHdpdGggdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzOlxu
ICAgKlxuICAgKiBpc0N1c3RvbUF0dHJpYnV0ZTogZnVuY3Rpb24gdGhhdCBnaXZlbiBhbiBhdHRy
aWJ1dGUgbmFtZSB3aWxsIHJldHVybiB0cnVlXG4gICAqIGlmIGl0IGNhbiBiZSBpbnNlcnRlZCBp
bnRvIHRoZSBET00gdmVyYmF0aW0uIFVzZWZ1bCBmb3IgZGF0YS0qIG9yIGFyaWEtKlxuICAgKiBh
dHRyaWJ1dGVzIHdoZXJlIGl0J3MgaW1wb3NzaWJsZSB0byBlbnVtZXJhdGUgYWxsIG9mIHRoZSBw
b3NzaWJsZVxuICAgKiBhdHRyaWJ1dGUgbmFtZXMsXG4gICAqXG4gICAqIFByb3BlcnRpZXM6IG9i
amVjdCBtYXBwaW5nIERPTSBwcm9wZXJ0eSBuYW1lIHRvIG9uZSBvZiB0aGVcbiAgICogRE9NUHJv
cGVydHlJbmplY3Rpb24gY29uc3RhbnRzIG9yIG51bGwuIElmIHlvdXIgYXR0cmlidXRlIGlzbid0
IGluIGhlcmUsXG4gICAqIGl0IHdvbid0IGdldCB3cml0dGVuIHRvIHRoZSBET00uXG4gICAqXG4g
ICAqIERPTUF0dHJpYnV0ZU5hbWVzOiBvYmplY3QgbWFwcGluZyBSZWFjdCBhdHRyaWJ1dGUgbmFt
ZSB0byB0aGUgRE9NXG4gICAqIGF0dHJpYnV0ZSBuYW1lLiBBdHRyaWJ1dGUgbmFtZXMgbm90IHNw
ZWNpZmllZCB1c2UgdGhlICoqbG93ZXJjYXNlKipcbiAgICogbm9ybWFsaXplZCBuYW1lLlxuICAg
KlxuICAgKiBET01BdHRyaWJ1dGVOYW1lc3BhY2VzOiBvYmplY3QgbWFwcGluZyBSZWFjdCBhdHRy
aWJ1dGUgbmFtZSB0byB0aGUgRE9NXG4gICAqIGF0dHJpYnV0ZSBuYW1lc3BhY2UgVVJMLiAoQXR0
cmlidXRlIG5hbWVzIG5vdCBzcGVjaWZpZWQgdXNlIG5vIG5hbWVzcGFjZS4pXG4gICAqXG4gICAq
IERPTVByb3BlcnR5TmFtZXM6IHNpbWlsYXIgdG8gRE9NQXR0cmlidXRlTmFtZXMgYnV0IGZvciBE
T00gcHJvcGVydGllcy5cbiAgICogUHJvcGVydHkgbmFtZXMgbm90IHNwZWNpZmllZCB1c2UgdGhl
IG5vcm1hbGl6ZWQgbmFtZS5cbiAgICpcbiAgICogRE9NTXV0YXRpb25NZXRob2RzOiBQcm9wZXJ0
aWVzIHRoYXQgcmVxdWlyZSBzcGVjaWFsIG11dGF0aW9uIG1ldGhvZHMuIElmXG4gICAqIGB2YWx1
ZWAgaXMgdW5kZWZpbmVkLCB0aGUgbXV0YXRpb24gbWV0aG9kIHNob3VsZCB1bnNldCB0aGUgcHJv
cGVydHkuXG4gICAqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBkb21Qcm9wZXJ0eUNvbmZpZyB0aGUg
Y29uZmlnIGFzIGRlc2NyaWJlZCBhYm92ZS5cbiAgICovXG4gIGluamVjdERPTVByb3BlcnR5Q29u
ZmlnOiBmdW5jdGlvbiAoZG9tUHJvcGVydHlDb25maWcpIHtcbiAgICB2YXIgSW5qZWN0aW9uID0g
RE9NUHJvcGVydHlJbmplY3Rpb247XG4gICAgdmFyIFByb3BlcnRpZXMgPSBkb21Qcm9wZXJ0eUNv
bmZpZy5Qcm9wZXJ0aWVzIHx8IHt9O1xuICAgIHZhciBET01BdHRyaWJ1dGVOYW1lc3BhY2VzID0g
ZG9tUHJvcGVydHlDb25maWcuRE9NQXR0cmlidXRlTmFtZXNwYWNlcyB8fCB7fTtcbiAgICB2YXIg
RE9NQXR0cmlidXRlTmFtZXMgPSBkb21Qcm9wZXJ0eUNvbmZpZy5ET01BdHRyaWJ1dGVOYW1lcyB8
fCB7fTtcbiAgICB2YXIgRE9NUHJvcGVydHlOYW1lcyA9IGRvbVByb3BlcnR5Q29uZmlnLkRPTVBy
b3BlcnR5TmFtZXMgfHwge307XG4gICAgdmFyIERPTU11dGF0aW9uTWV0aG9kcyA9IGRvbVByb3Bl
cnR5Q29uZmlnLkRPTU11dGF0aW9uTWV0aG9kcyB8fCB7fTtcblxuICAgIGlmIChkb21Qcm9wZXJ0
eUNvbmZpZy5pc0N1c3RvbUF0dHJpYnV0ZSkge1xuICAgICAgRE9NUHJvcGVydHkuX2lzQ3VzdG9t
QXR0cmlidXRlRnVuY3Rpb25zLnB1c2goZG9tUHJvcGVydHlDb25maWcuaXNDdXN0b21BdHRyaWJ1
dGUpO1xuICAgIH1cblxuICAgIGZvciAodmFyIHByb3BOYW1lIGluIFByb3BlcnRpZXMpIHtcbiAg
ICAgICEhRE9NUHJvcGVydHkucHJvcGVydGllcy5oYXNPd25Qcm9wZXJ0eShwcm9wTmFtZSkgPyBw
cm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAn
aW5qZWN0RE9NUHJvcGVydHlDb25maWcoLi4uKTogWW91XFwncmUgdHJ5aW5nIHRvIGluamVjdCBE
T00gcHJvcGVydHkgXFwnJXNcXCcgd2hpY2ggaGFzIGFscmVhZHkgYmVlbiBpbmplY3RlZC4gWW91
IG1heSBiZSBhY2NpZGVudGFsbHkgaW5qZWN0aW5nIHRoZSBzYW1lIERPTSBwcm9wZXJ0eSBjb25m
aWcgdHdpY2UsIG9yIHlvdSBtYXkgYmUgaW5qZWN0aW5nIHR3byBjb25maWdzIHRoYXQgaGF2ZSBj
b25mbGljdGluZyBwcm9wZXJ0eSBuYW1lcy4nLCBwcm9wTmFtZSkgOiBfcHJvZEludmFyaWFudCgn
NDgnLCBwcm9wTmFtZSkgOiB2b2lkIDA7XG5cbiAgICAgIHZhciBsb3dlckNhc2VkID0gcHJvcE5h
bWUudG9Mb3dlckNhc2UoKTtcbiAgICAgIHZhciBwcm9wQ29uZmlnID0gUHJvcGVydGllc1twcm9w
TmFtZV07XG5cbiAgICAgIHZhciBwcm9wZXJ0eUluZm8gPSB7XG4gICAgICAgIGF0dHJpYnV0ZU5h
bWU6IGxvd2VyQ2FzZWQsXG4gICAgICAgIGF0dHJpYnV0ZU5hbWVzcGFjZTogbnVsbCxcbiAgICAg
ICAgcHJvcGVydHlOYW1lOiBwcm9wTmFtZSxcbiAgICAgICAgbXV0YXRpb25NZXRob2Q6IG51bGws
XG5cbiAgICAgICAgbXVzdFVzZVByb3BlcnR5OiBjaGVja01hc2socHJvcENvbmZpZywgSW5qZWN0
aW9uLk1VU1RfVVNFX1BST1BFUlRZKSxcbiAgICAgICAgaGFzQm9vbGVhblZhbHVlOiBjaGVja01h
c2socHJvcENvbmZpZywgSW5qZWN0aW9uLkhBU19CT09MRUFOX1ZBTFVFKSxcbiAgICAgICAgaGFz
TnVtZXJpY1ZhbHVlOiBjaGVja01hc2socHJvcENvbmZpZywgSW5qZWN0aW9uLkhBU19OVU1FUklD
X1ZBTFVFKSxcbiAgICAgICAgaGFzUG9zaXRpdmVOdW1lcmljVmFsdWU6IGNoZWNrTWFzayhwcm9w
Q29uZmlnLCBJbmplY3Rpb24uSEFTX1BPU0lUSVZFX05VTUVSSUNfVkFMVUUpLFxuICAgICAgICBo
YXNPdmVybG9hZGVkQm9vbGVhblZhbHVlOiBjaGVja01hc2socHJvcENvbmZpZywgSW5qZWN0aW9u
LkhBU19PVkVSTE9BREVEX0JPT0xFQU5fVkFMVUUpXG4gICAgICB9O1xuICAgICAgIShwcm9wZXJ0
eUluZm8uaGFzQm9vbGVhblZhbHVlICsgcHJvcGVydHlJbmZvLmhhc051bWVyaWNWYWx1ZSArIHBy
b3BlcnR5SW5mby5oYXNPdmVybG9hZGVkQm9vbGVhblZhbHVlIDw9IDEpID8gcHJvY2Vzcy5lbnYu
Tk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ0RPTVByb3BlcnR5
OiBWYWx1ZSBjYW4gYmUgb25lIG9mIGJvb2xlYW4sIG92ZXJsb2FkZWQgYm9vbGVhbiwgb3IgbnVt
ZXJpYyB2YWx1ZSwgYnV0IG5vdCBhIGNvbWJpbmF0aW9uOiAlcycsIHByb3BOYW1lKSA6IF9wcm9k
SW52YXJpYW50KCc1MCcsIHByb3BOYW1lKSA6IHZvaWQgMDtcblxuICAgICAgaWYgKHByb2Nlc3Mu
ZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgRE9NUHJvcGVydHkuZ2V0
UG9zc2libGVTdGFuZGFyZE5hbWVbbG93ZXJDYXNlZF0gPSBwcm9wTmFtZTtcbiAgICAgIH1cblxu
ICAgICAgaWYgKERPTUF0dHJpYnV0ZU5hbWVzLmhhc093blByb3BlcnR5KHByb3BOYW1lKSkge1xu
ICAgICAgICB2YXIgYXR0cmlidXRlTmFtZSA9IERPTUF0dHJpYnV0ZU5hbWVzW3Byb3BOYW1lXTtc
biAgICAgICAgcHJvcGVydHlJbmZvLmF0dHJpYnV0ZU5hbWUgPSBhdHRyaWJ1dGVOYW1lO1xuICAg
ICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAg
ICAgIERPTVByb3BlcnR5LmdldFBvc3NpYmxlU3RhbmRhcmROYW1lW2F0dHJpYnV0ZU5hbWVdID0g
cHJvcE5hbWU7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKERPTUF0dHJpYnV0ZU5h
bWVzcGFjZXMuaGFzT3duUHJvcGVydHkocHJvcE5hbWUpKSB7XG4gICAgICAgIHByb3BlcnR5SW5m
by5hdHRyaWJ1dGVOYW1lc3BhY2UgPSBET01BdHRyaWJ1dGVOYW1lc3BhY2VzW3Byb3BOYW1lXTtc
biAgICAgIH1cblxuICAgICAgaWYgKERPTVByb3BlcnR5TmFtZXMuaGFzT3duUHJvcGVydHkocHJv
cE5hbWUpKSB7XG4gICAgICAgIHByb3BlcnR5SW5mby5wcm9wZXJ0eU5hbWUgPSBET01Qcm9wZXJ0
eU5hbWVzW3Byb3BOYW1lXTtcbiAgICAgIH1cblxuICAgICAgaWYgKERPTU11dGF0aW9uTWV0aG9k
cy5oYXNPd25Qcm9wZXJ0eShwcm9wTmFtZSkpIHtcbiAgICAgICAgcHJvcGVydHlJbmZvLm11dGF0
aW9uTWV0aG9kID0gRE9NTXV0YXRpb25NZXRob2RzW3Byb3BOYW1lXTtcbiAgICAgIH1cblxuICAg
ICAgRE9NUHJvcGVydHkucHJvcGVydGllc1twcm9wTmFtZV0gPSBwcm9wZXJ0eUluZm87XG4gICAg
fVxuICB9XG59O1xuXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuICovXG52YXIgQVRUUklCVVRF
X05BTUVfU1RBUlRfQ0hBUiA9ICc6QS1aX2EtelxcXFx1MDBDMC1cXFxcdTAwRDZcXFxcdTAwRDgt
XFxcXHUwMEY2XFxcXHUwMEY4LVxcXFx1MDJGRlxcXFx1MDM3MC1cXFxcdTAzN0RcXFxcdTAzN0Yt
XFxcXHUxRkZGXFxcXHUyMDBDLVxcXFx1MjAwRFxcXFx1MjA3MC1cXFxcdTIxOEZcXFxcdTJDMDAt
XFxcXHUyRkVGXFxcXHUzMDAxLVxcXFx1RDdGRlxcXFx1RjkwMC1cXFxcdUZEQ0ZcXFxcdUZERjAt
XFxcXHVGRkZEJztcbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiAqL1xuXG4vKipcbiAqIERPTVBy
b3BlcnR5IGV4cG9ydHMgbG9va3VwIG9iamVjdHMgdGhhdCBjYW4gYmUgdXNlZCBsaWtlIGZ1bmN0
aW9uczpcbiAqXG4gKiAgID4gRE9NUHJvcGVydHkuaXNWYWxpZFsnaWQnXVxuICogICB0cnVlXG4g
KiAgID4gRE9NUHJvcGVydHkuaXNWYWxpZFsnZm9vYmFyJ11cbiAqICAgdW5kZWZpbmVkXG4gKlxu
ICogQWx0aG91Z2ggdGhpcyBtYXkgYmUgY29uZnVzaW5nLCBpdCBwZXJmb3JtcyBiZXR0ZXIgaW4g
Z2VuZXJhbC5cbiAqXG4gKiBAc2VlIGh0dHA6Ly9qc3BlcmYuY29tL2tleS1leGlzdHNcbiAqIEBz
ZWUgaHR0cDovL2pzcGVyZi5jb20va2V5LW1pc3NpbmdcbiAqL1xudmFyIERPTVByb3BlcnR5ID0g
e1xuICBJRF9BVFRSSUJVVEVfTkFNRTogJ2RhdGEtcmVhY3RpZCcsXG4gIFJPT1RfQVRUUklCVVRF
X05BTUU6ICdkYXRhLXJlYWN0cm9vdCcsXG5cbiAgQVRUUklCVVRFX05BTUVfU1RBUlRfQ0hBUjog
QVRUUklCVVRFX05BTUVfU1RBUlRfQ0hBUixcbiAgQVRUUklCVVRFX05BTUVfQ0hBUjogQVRUUklC
VVRFX05BTUVfU1RBUlRfQ0hBUiArICdcXFxcLS4wLTlcXFxcdTAwQjdcXFxcdTAzMDAtXFxcXHUw
MzZGXFxcXHUyMDNGLVxcXFx1MjA0MCcsXG5cbiAgLyoqXG4gICAqIE1hcCBmcm9tIHByb3BlcnR5
IFwic3RhbmRhcmQgbmFtZVwiIHRvIGFuIG9iamVjdCB3aXRoIGluZm8gYWJvdXQgaG93IHRvIHNl
dFxuICAgKiB0aGUgcHJvcGVydHkgaW4gdGhlIERPTS4gRWFjaCBvYmplY3QgY29udGFpbnM6XG4g
ICAqXG4gICAqIGF0dHJpYnV0ZU5hbWU6XG4gICAqICAgVXNlZCB3aGVuIHJlbmRlcmluZyBtYXJr
dXAgb3Igd2l0aCBgKkF0dHJpYnV0ZSgpYC5cbiAgICogYXR0cmlidXRlTmFtZXNwYWNlXG4gICAq
IHByb3BlcnR5TmFtZTpcbiAgICogICBVc2VkIG9uIERPTSBub2RlIGluc3RhbmNlcy4gKFRoaXMg
aW5jbHVkZXMgcHJvcGVydGllcyB0aGF0IG11dGF0ZSBkdWUgdG9cbiAgICogICBleHRlcm5hbCBm
YWN0b3JzLilcbiAgICogbXV0YXRpb25NZXRob2Q6XG4gICAqICAgSWYgbm9uLW51bGwsIHVzZWQg
aW5zdGVhZCBvZiB0aGUgcHJvcGVydHkgb3IgYHNldEF0dHJpYnV0ZSgpYCBhZnRlclxuICAgKiAg
IGluaXRpYWwgcmVuZGVyLlxuICAgKiBtdXN0VXNlUHJvcGVydHk6XG4gICAqICAgV2hldGhlciB0
aGUgcHJvcGVydHkgbXVzdCBiZSBhY2Nlc3NlZCBhbmQgbXV0YXRlZCBhcyBhbiBvYmplY3QgcHJv
cGVydHkuXG4gICAqIGhhc0Jvb2xlYW5WYWx1ZTpcbiAgICogICBXaGV0aGVyIHRoZSBwcm9wZXJ0
eSBzaG91bGQgYmUgcmVtb3ZlZCB3aGVuIHNldCB0byBhIGZhbHNleSB2YWx1ZS5cbiAgICogaGFz
TnVtZXJpY1ZhbHVlOlxuICAgKiAgIFdoZXRoZXIgdGhlIHByb3BlcnR5IG11c3QgYmUgbnVtZXJp
YyBvciBwYXJzZSBhcyBhIG51bWVyaWMgYW5kIHNob3VsZCBiZVxuICAgKiAgIHJlbW92ZWQgd2hl
biBzZXQgdG8gYSBmYWxzZXkgdmFsdWUuXG4gICAqIGhhc1Bvc2l0aXZlTnVtZXJpY1ZhbHVlOlxu
ICAgKiAgIFdoZXRoZXIgdGhlIHByb3BlcnR5IG11c3QgYmUgcG9zaXRpdmUgbnVtZXJpYyBvciBw
YXJzZSBhcyBhIHBvc2l0aXZlXG4gICAqICAgbnVtZXJpYyBhbmQgc2hvdWxkIGJlIHJlbW92ZWQg
d2hlbiBzZXQgdG8gYSBmYWxzZXkgdmFsdWUuXG4gICAqIGhhc092ZXJsb2FkZWRCb29sZWFuVmFs
dWU6XG4gICAqICAgV2hldGhlciB0aGUgcHJvcGVydHkgY2FuIGJlIHVzZWQgYXMgYSBmbGFnIGFz
IHdlbGwgYXMgd2l0aCBhIHZhbHVlLlxuICAgKiAgIFJlbW92ZWQgd2hlbiBzdHJpY3RseSBlcXVh
bCB0byBmYWxzZTsgcHJlc2VudCB3aXRob3V0IGEgdmFsdWUgd2hlblxuICAgKiAgIHN0cmljdGx5
IGVxdWFsIHRvIHRydWU7IHByZXNlbnQgd2l0aCBhIHZhbHVlIG90aGVyd2lzZS5cbiAgICovXG4g
IHByb3BlcnRpZXM6IHt9LFxuXG4gIC8qKlxuICAgKiBNYXBwaW5nIGZyb20gbG93ZXJjYXNlIHBy
b3BlcnR5IG5hbWVzIHRvIHRoZSBwcm9wZXJseSBjYXNlZCB2ZXJzaW9uLCB1c2VkXG4gICAqIHRv
IHdhcm4gaW4gdGhlIGNhc2Ugb2YgbWlzc2luZyBwcm9wZXJ0aWVzLiBBdmFpbGFibGUgb25seSBp
biBfX0RFVl9fLlxuICAgKlxuICAgKiBhdXRvZm9jdXMgaXMgcHJlZGVmaW5lZCwgYmVjYXVzZSBh
ZGRpbmcgaXQgdG8gdGhlIHByb3BlcnR5IHdoaXRlbGlzdFxuICAgKiBjYXVzZXMgdW5pbnRlbmRl
ZCBzaWRlIGVmZmVjdHMuXG4gICAqXG4gICAqIEB0eXBlIHtPYmplY3R9XG4gICAqL1xuICBnZXRQ
b3NzaWJsZVN0YW5kYXJkTmFtZTogcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9u
JyA/IHsgYXV0b2ZvY3VzOiAnYXV0b0ZvY3VzJyB9IDogbnVsbCxcblxuICAvKipcbiAgICogQWxs
IG9mIHRoZSBpc0N1c3RvbUF0dHJpYnV0ZSgpIGZ1bmN0aW9ucyB0aGF0IGhhdmUgYmVlbiBpbmpl
Y3RlZC5cbiAgICovXG4gIF9pc0N1c3RvbUF0dHJpYnV0ZUZ1bmN0aW9uczogW10sXG5cbiAgLyoq
XG4gICAqIENoZWNrcyB3aGV0aGVyIGEgcHJvcGVydHkgbmFtZSBpcyBhIGN1c3RvbSBhdHRyaWJ1
dGUuXG4gICAqIEBtZXRob2RcbiAgICovXG4gIGlzQ3VzdG9tQXR0cmlidXRlOiBmdW5jdGlvbiAo
YXR0cmlidXRlTmFtZSkge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgRE9NUHJvcGVydHkuX2lz
Q3VzdG9tQXR0cmlidXRlRnVuY3Rpb25zLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgaXNDdXN0
b21BdHRyaWJ1dGVGbiA9IERPTVByb3BlcnR5Ll9pc0N1c3RvbUF0dHJpYnV0ZUZ1bmN0aW9uc1tp
XTtcbiAgICAgIGlmIChpc0N1c3RvbUF0dHJpYnV0ZUZuKGF0dHJpYnV0ZU5hbWUpKSB7XG4gICAg
ICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH0s
XG5cbiAgaW5qZWN0aW9uOiBET01Qcm9wZXJ0eUluamVjdGlvblxufTtcblxubW9kdWxlLmV4cG9y
dHMgPSBET01Qcm9wZXJ0eTtcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZP
T1RFUlxuICoqIC4vfi9yZWFjdC1kb20vbGliL0RPTVByb3BlcnR5LmpzXG4gKiogbW9kdWxlIGlk
ID0gMTVcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIw
MTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxu
ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vu
c2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9m
IHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdo
dHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5
LlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBSZWFjdFJlZiA9IHJlcXVpcmUoJy4v
UmVhY3RSZWYnKTtcbnZhciBSZWFjdEluc3RydW1lbnRhdGlvbiA9IHJlcXVpcmUoJy4vUmVhY3RJ
bnN0cnVtZW50YXRpb24nKTtcblxudmFyIHdhcm5pbmcgPSByZXF1aXJlKCdmYmpzL2xpYi93YXJu
aW5nJyk7XG5cbi8qKlxuICogSGVscGVyIHRvIGNhbGwgUmVhY3RSZWYuYXR0YWNoUmVmcyB3aXRo
IHRoaXMgY29tcG9zaXRlIGNvbXBvbmVudCwgc3BsaXQgb3V0XG4gKiB0byBhdm9pZCBhbGxvY2F0
aW9ucyBpbiB0aGUgdHJhbnNhY3Rpb24gbW91bnQtcmVhZHkgcXVldWUuXG4gKi9cbmZ1bmN0aW9u
IGF0dGFjaFJlZnMoKSB7XG4gIFJlYWN0UmVmLmF0dGFjaFJlZnModGhpcywgdGhpcy5fY3VycmVu
dEVsZW1lbnQpO1xufVxuXG52YXIgUmVhY3RSZWNvbmNpbGVyID0ge1xuICAvKipcbiAgICogSW5p
dGlhbGl6ZXMgdGhlIGNvbXBvbmVudCwgcmVuZGVycyBtYXJrdXAsIGFuZCByZWdpc3RlcnMgZXZl
bnQgbGlzdGVuZXJzLlxuICAgKlxuICAgKiBAcGFyYW0ge1JlYWN0Q29tcG9uZW50fSBpbnRlcm5h
bEluc3RhbmNlXG4gICAqIEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbnxSZWFjdFNl
cnZlclJlbmRlcmluZ1RyYW5zYWN0aW9ufSB0cmFuc2FjdGlvblxuICAgKiBAcGFyYW0gez9vYmpl
Y3R9IHRoZSBjb250YWluaW5nIGhvc3QgY29tcG9uZW50IGluc3RhbmNlXG4gICAqIEBwYXJhbSB7
P29iamVjdH0gaW5mbyBhYm91dCB0aGUgaG9zdCBjb250YWluZXJcbiAgICogQHJldHVybiB7P3N0
cmluZ30gUmVuZGVyZWQgbWFya3VwIHRvIGJlIGluc2VydGVkIGludG8gdGhlIERPTS5cbiAgICog
QGZpbmFsXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgbW91bnRDb21wb25lbnQ6IGZ1bmN0aW9u
IChpbnRlcm5hbEluc3RhbmNlLCB0cmFuc2FjdGlvbiwgaG9zdFBhcmVudCwgaG9zdENvbnRhaW5l
ckluZm8sIGNvbnRleHQsIHBhcmVudERlYnVnSUQpIC8vIDAgaW4gcHJvZHVjdGlvbiBhbmQgZm9y
IHJvb3RzXG4gIHtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9u
Jykge1xuICAgICAgaWYgKGludGVybmFsSW5zdGFuY2UuX2RlYnVnSUQgIT09IDApIHtcbiAgICAg
ICAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9uQmVmb3JlTW91bnRDb21wb25lbnQo
aW50ZXJuYWxJbnN0YW5jZS5fZGVidWdJRCwgaW50ZXJuYWxJbnN0YW5jZS5fY3VycmVudEVsZW1l
bnQsIHBhcmVudERlYnVnSUQpO1xuICAgICAgfVxuICAgIH1cbiAgICB2YXIgbWFya3VwID0gaW50
ZXJuYWxJbnN0YW5jZS5tb3VudENvbXBvbmVudCh0cmFuc2FjdGlvbiwgaG9zdFBhcmVudCwgaG9z
dENvbnRhaW5lckluZm8sIGNvbnRleHQsIHBhcmVudERlYnVnSUQpO1xuICAgIGlmIChpbnRlcm5h
bEluc3RhbmNlLl9jdXJyZW50RWxlbWVudCAmJiBpbnRlcm5hbEluc3RhbmNlLl9jdXJyZW50RWxl
bWVudC5yZWYgIT0gbnVsbCkge1xuICAgICAgdHJhbnNhY3Rpb24uZ2V0UmVhY3RNb3VudFJlYWR5
KCkuZW5xdWV1ZShhdHRhY2hSZWZzLCBpbnRlcm5hbEluc3RhbmNlKTtcbiAgICB9XG4gICAgaWYg
KHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIGlmIChpbnRl
cm5hbEluc3RhbmNlLl9kZWJ1Z0lEICE9PSAwKSB7XG4gICAgICAgIFJlYWN0SW5zdHJ1bWVudGF0
aW9uLmRlYnVnVG9vbC5vbk1vdW50Q29tcG9uZW50KGludGVybmFsSW5zdGFuY2UuX2RlYnVnSUQp
O1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbWFya3VwO1xuICB9LFxuXG4gIC8qKlxuICAg
KiBSZXR1cm5zIGEgdmFsdWUgdGhhdCBjYW4gYmUgcGFzc2VkIHRvXG4gICAqIFJlYWN0Q29tcG9u
ZW50RW52aXJvbm1lbnQucmVwbGFjZU5vZGVXaXRoTWFya3VwLlxuICAgKi9cbiAgZ2V0SG9zdE5v
ZGU6IGZ1bmN0aW9uIChpbnRlcm5hbEluc3RhbmNlKSB7XG4gICAgcmV0dXJuIGludGVybmFsSW5z
dGFuY2UuZ2V0SG9zdE5vZGUoKTtcbiAgfSxcblxuICAvKipcbiAgICogUmVsZWFzZXMgYW55IHJl
c291cmNlcyBhbGxvY2F0ZWQgYnkgYG1vdW50Q29tcG9uZW50YC5cbiAgICpcbiAgICogQGZpbmFs
XG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgdW5tb3VudENvbXBvbmVudDogZnVuY3Rpb24gKGlu
dGVybmFsSW5zdGFuY2UsIHNhZmVseSkge1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAh
PT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICBpZiAoaW50ZXJuYWxJbnN0YW5jZS5fZGVidWdJRCAh
PT0gMCkge1xuICAgICAgICBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25CZWZvcmVV
bm1vdW50Q29tcG9uZW50KGludGVybmFsSW5zdGFuY2UuX2RlYnVnSUQpO1xuICAgICAgfVxuICAg
IH1cbiAgICBSZWFjdFJlZi5kZXRhY2hSZWZzKGludGVybmFsSW5zdGFuY2UsIGludGVybmFsSW5z
dGFuY2UuX2N1cnJlbnRFbGVtZW50KTtcbiAgICBpbnRlcm5hbEluc3RhbmNlLnVubW91bnRDb21w
b25lbnQoc2FmZWx5KTtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0
aW9uJykge1xuICAgICAgaWYgKGludGVybmFsSW5zdGFuY2UuX2RlYnVnSUQgIT09IDApIHtcbiAg
ICAgICAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9uVW5tb3VudENvbXBvbmVudChp
bnRlcm5hbEluc3RhbmNlLl9kZWJ1Z0lEKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG5cbiAgLyoq
XG4gICAqIFVwZGF0ZSBhIGNvbXBvbmVudCB1c2luZyBhIG5ldyBlbGVtZW50LlxuICAgKlxuICAg
KiBAcGFyYW0ge1JlYWN0Q29tcG9uZW50fSBpbnRlcm5hbEluc3RhbmNlXG4gICAqIEBwYXJhbSB7
UmVhY3RFbGVtZW50fSBuZXh0RWxlbWVudFxuICAgKiBAcGFyYW0ge1JlYWN0UmVjb25jaWxlVHJh
bnNhY3Rpb259IHRyYW5zYWN0aW9uXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBjb250ZXh0XG4gICAq
IEBpbnRlcm5hbFxuICAgKi9cbiAgcmVjZWl2ZUNvbXBvbmVudDogZnVuY3Rpb24gKGludGVybmFs
SW5zdGFuY2UsIG5leHRFbGVtZW50LCB0cmFuc2FjdGlvbiwgY29udGV4dCkge1xuICAgIHZhciBw
cmV2RWxlbWVudCA9IGludGVybmFsSW5zdGFuY2UuX2N1cnJlbnRFbGVtZW50O1xuXG4gICAgaWYg
KG5leHRFbGVtZW50ID09PSBwcmV2RWxlbWVudCAmJiBjb250ZXh0ID09PSBpbnRlcm5hbEluc3Rh
bmNlLl9jb250ZXh0KSB7XG4gICAgICAvLyBTaW5jZSBlbGVtZW50cyBhcmUgaW1tdXRhYmxlIGFm
dGVyIHRoZSBvd25lciBpcyByZW5kZXJlZCxcbiAgICAgIC8vIHdlIGNhbiBkbyBhIGNoZWFwIGlk
ZW50aXR5IGNvbXBhcmUgaGVyZSB0byBkZXRlcm1pbmUgaWYgdGhpcyBpcyBhXG4gICAgICAvLyBz
dXBlcmZsdW91cyByZWNvbmNpbGUuIEl0J3MgcG9zc2libGUgZm9yIHN0YXRlIHRvIGJlIG11dGFi
bGUgYnV0IHN1Y2hcbiAgICAgIC8vIGNoYW5nZSBzaG91bGQgdHJpZ2dlciBhbiB1cGRhdGUgb2Yg
dGhlIG93bmVyIHdoaWNoIHdvdWxkIHJlY3JlYXRlXG4gICAgICAvLyB0aGUgZWxlbWVudC4gV2Ug
ZXhwbGljaXRseSBjaGVjayBmb3IgdGhlIGV4aXN0ZW5jZSBvZiBhbiBvd25lciBzaW5jZVxuICAg
ICAgLy8gaXQncyBwb3NzaWJsZSBmb3IgYW4gZWxlbWVudCBjcmVhdGVkIG91dHNpZGUgYSBjb21w
b3NpdGUgdG8gYmVcbiAgICAgIC8vIGRlZXBseSBtdXRhdGVkIGFuZCByZXVzZWQuXG5cbiAgICAg
IC8vIFRPRE86IEJhaWxpbmcgb3V0IGVhcmx5IGlzIGp1c3QgYSBwZXJmIG9wdGltaXphdGlvbiBy
aWdodD9cbiAgICAgIC8vIFRPRE86IFJlbW92aW5nIHRoZSByZXR1cm4gc3RhdGVtZW50IHNob3Vs
ZCBhZmZlY3QgY29ycmVjdG5lc3M/XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHBy
b2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIGlmIChpbnRlcm5h
bEluc3RhbmNlLl9kZWJ1Z0lEICE9PSAwKSB7XG4gICAgICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9u
LmRlYnVnVG9vbC5vbkJlZm9yZVVwZGF0ZUNvbXBvbmVudChpbnRlcm5hbEluc3RhbmNlLl9kZWJ1
Z0lELCBuZXh0RWxlbWVudCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIHJlZnNDaGFuZ2Vk
ID0gUmVhY3RSZWYuc2hvdWxkVXBkYXRlUmVmcyhwcmV2RWxlbWVudCwgbmV4dEVsZW1lbnQpO1xu
XG4gICAgaWYgKHJlZnNDaGFuZ2VkKSB7XG4gICAgICBSZWFjdFJlZi5kZXRhY2hSZWZzKGludGVy
bmFsSW5zdGFuY2UsIHByZXZFbGVtZW50KTtcbiAgICB9XG5cbiAgICBpbnRlcm5hbEluc3RhbmNl
LnJlY2VpdmVDb21wb25lbnQobmV4dEVsZW1lbnQsIHRyYW5zYWN0aW9uLCBjb250ZXh0KTtcblxu
ICAgIGlmIChyZWZzQ2hhbmdlZCAmJiBpbnRlcm5hbEluc3RhbmNlLl9jdXJyZW50RWxlbWVudCAm
JiBpbnRlcm5hbEluc3RhbmNlLl9jdXJyZW50RWxlbWVudC5yZWYgIT0gbnVsbCkge1xuICAgICAg
dHJhbnNhY3Rpb24uZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1ZShhdHRhY2hSZWZzLCBpbnRl
cm5hbEluc3RhbmNlKTtcbiAgICB9XG5cbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09
ICdwcm9kdWN0aW9uJykge1xuICAgICAgaWYgKGludGVybmFsSW5zdGFuY2UuX2RlYnVnSUQgIT09
IDApIHtcbiAgICAgICAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9uVXBkYXRlQ29t
cG9uZW50KGludGVybmFsSW5zdGFuY2UuX2RlYnVnSUQpO1xuICAgICAgfVxuICAgIH1cbiAgfSxc
blxuICAvKipcbiAgICogRmx1c2ggYW55IGRpcnR5IGNoYW5nZXMgaW4gYSBjb21wb25lbnQuXG4g
ICAqXG4gICAqIEBwYXJhbSB7UmVhY3RDb21wb25lbnR9IGludGVybmFsSW5zdGFuY2VcbiAgICog
QHBhcmFtIHtSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9ufSB0cmFuc2FjdGlvblxuICAgKiBAaW50
ZXJuYWxcbiAgICovXG4gIHBlcmZvcm1VcGRhdGVJZk5lY2Vzc2FyeTogZnVuY3Rpb24gKGludGVy
bmFsSW5zdGFuY2UsIHRyYW5zYWN0aW9uLCB1cGRhdGVCYXRjaE51bWJlcikge1xuICAgIGlmIChp
bnRlcm5hbEluc3RhbmNlLl91cGRhdGVCYXRjaE51bWJlciAhPT0gdXBkYXRlQmF0Y2hOdW1iZXIp
IHtcbiAgICAgIC8vIFRoZSBjb21wb25lbnQncyBlbnF1ZXVlZCBiYXRjaCBudW1iZXIgc2hvdWxk
IGFsd2F5cyBiZSB0aGUgY3VycmVudFxuICAgICAgLy8gYmF0Y2ggb3IgdGhlIGZvbGxvd2luZyBv
bmUuXG4gICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2Fybmlu
ZyhpbnRlcm5hbEluc3RhbmNlLl91cGRhdGVCYXRjaE51bWJlciA9PSBudWxsIHx8IGludGVybmFs
SW5zdGFuY2UuX3VwZGF0ZUJhdGNoTnVtYmVyID09PSB1cGRhdGVCYXRjaE51bWJlciArIDEsICdw
ZXJmb3JtVXBkYXRlSWZOZWNlc3Nhcnk6IFVuZXhwZWN0ZWQgYmF0Y2ggbnVtYmVyIChjdXJyZW50
ICVzLCAnICsgJ3BlbmRpbmcgJXMpJywgdXBkYXRlQmF0Y2hOdW1iZXIsIGludGVybmFsSW5zdGFu
Y2UuX3VwZGF0ZUJhdGNoTnVtYmVyKSA6IHZvaWQgMDtcbiAgICAgIHJldHVybjtcbiAgICB9XG4g
ICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIGlm
IChpbnRlcm5hbEluc3RhbmNlLl9kZWJ1Z0lEICE9PSAwKSB7XG4gICAgICAgIFJlYWN0SW5zdHJ1
bWVudGF0aW9uLmRlYnVnVG9vbC5vbkJlZm9yZVVwZGF0ZUNvbXBvbmVudChpbnRlcm5hbEluc3Rh
bmNlLl9kZWJ1Z0lELCBpbnRlcm5hbEluc3RhbmNlLl9jdXJyZW50RWxlbWVudCk7XG4gICAgICB9
XG4gICAgfVxuICAgIGludGVybmFsSW5zdGFuY2UucGVyZm9ybVVwZGF0ZUlmTmVjZXNzYXJ5KHRy
YW5zYWN0aW9uKTtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9u
Jykge1xuICAgICAgaWYgKGludGVybmFsSW5zdGFuY2UuX2RlYnVnSUQgIT09IDApIHtcbiAgICAg
ICAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9uVXBkYXRlQ29tcG9uZW50KGludGVy
bmFsSW5zdGFuY2UuX2RlYnVnSUQpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufTtcblxubW9kdWxl
LmV4cG9ydHMgPSBSZWFjdFJlY29uY2lsZXI7XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiog
V0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3QtZG9tL2xpYi9SZWFjdFJlY29uY2lsZXIuanNc
biAqKiBtb2R1bGUgaWQgPSAxNlxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4g
KiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyBy
ZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBC
U0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9v
dCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICog
b2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUg
c2FtZSBkaXJlY3RvcnkuXG4gKlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIF9hc3NpZ24g
PSByZXF1aXJlKCdvYmplY3QtYXNzaWduJyk7XG5cbnZhciBSZWFjdEJhc2VDbGFzc2VzID0gcmVx
dWlyZSgnLi9SZWFjdEJhc2VDbGFzc2VzJyk7XG52YXIgUmVhY3RDaGlsZHJlbiA9IHJlcXVpcmUo
Jy4vUmVhY3RDaGlsZHJlbicpO1xudmFyIFJlYWN0RE9NRmFjdG9yaWVzID0gcmVxdWlyZSgnLi9S
ZWFjdERPTUZhY3RvcmllcycpO1xudmFyIFJlYWN0RWxlbWVudCA9IHJlcXVpcmUoJy4vUmVhY3RF
bGVtZW50Jyk7XG52YXIgUmVhY3RQcm9wVHlwZXMgPSByZXF1aXJlKCcuL1JlYWN0UHJvcFR5cGVz
Jyk7XG52YXIgUmVhY3RWZXJzaW9uID0gcmVxdWlyZSgnLi9SZWFjdFZlcnNpb24nKTtcblxudmFy
IGNyZWF0ZVJlYWN0Q2xhc3MgPSByZXF1aXJlKCcuL2NyZWF0ZUNsYXNzJyk7XG52YXIgb25seUNo
aWxkID0gcmVxdWlyZSgnLi9vbmx5Q2hpbGQnKTtcblxudmFyIGNyZWF0ZUVsZW1lbnQgPSBSZWFj
dEVsZW1lbnQuY3JlYXRlRWxlbWVudDtcbnZhciBjcmVhdGVGYWN0b3J5ID0gUmVhY3RFbGVtZW50
LmNyZWF0ZUZhY3Rvcnk7XG52YXIgY2xvbmVFbGVtZW50ID0gUmVhY3RFbGVtZW50LmNsb25lRWxl
bWVudDtcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAg
dmFyIGxvd1ByaW9yaXR5V2FybmluZyA9IHJlcXVpcmUoJy4vbG93UHJpb3JpdHlXYXJuaW5nJyk7
XG4gIHZhciBjYW5EZWZpbmVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4vY2FuRGVmaW5lUHJvcGVydHkn
KTtcbiAgdmFyIFJlYWN0RWxlbWVudFZhbGlkYXRvciA9IHJlcXVpcmUoJy4vUmVhY3RFbGVtZW50
VmFsaWRhdG9yJyk7XG4gIHZhciBkaWRXYXJuUHJvcFR5cGVzRGVwcmVjYXRlZCA9IGZhbHNlO1xu
ICBjcmVhdGVFbGVtZW50ID0gUmVhY3RFbGVtZW50VmFsaWRhdG9yLmNyZWF0ZUVsZW1lbnQ7XG4g
IGNyZWF0ZUZhY3RvcnkgPSBSZWFjdEVsZW1lbnRWYWxpZGF0b3IuY3JlYXRlRmFjdG9yeTtcbiAg
Y2xvbmVFbGVtZW50ID0gUmVhY3RFbGVtZW50VmFsaWRhdG9yLmNsb25lRWxlbWVudDtcbn1cblxu
dmFyIF9fc3ByZWFkID0gX2Fzc2lnbjtcbnZhciBjcmVhdGVNaXhpbiA9IGZ1bmN0aW9uIChtaXhp
bikge1xuICByZXR1cm4gbWl4aW47XG59O1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09
ICdwcm9kdWN0aW9uJykge1xuICB2YXIgd2FybmVkRm9yU3ByZWFkID0gZmFsc2U7XG4gIHZhciB3
YXJuZWRGb3JDcmVhdGVNaXhpbiA9IGZhbHNlO1xuICBfX3NwcmVhZCA9IGZ1bmN0aW9uICgpIHtc
biAgICBsb3dQcmlvcml0eVdhcm5pbmcod2FybmVkRm9yU3ByZWFkLCAnUmVhY3QuX19zcHJlYWQg
aXMgZGVwcmVjYXRlZCBhbmQgc2hvdWxkIG5vdCBiZSB1c2VkLiBVc2UgJyArICdPYmplY3QuYXNz
aWduIGRpcmVjdGx5IG9yIGFub3RoZXIgaGVscGVyIGZ1bmN0aW9uIHdpdGggc2ltaWxhciAnICsg
J3NlbWFudGljcy4gWW91IG1heSBiZSBzZWVpbmcgdGhpcyB3YXJuaW5nIGR1ZSB0byB5b3VyIGNv
bXBpbGVyLiAnICsgJ1NlZSBodHRwczovL2ZiLm1lL3JlYWN0LXNwcmVhZC1kZXByZWNhdGlvbiBm
b3IgbW9yZSBkZXRhaWxzLicpO1xuICAgIHdhcm5lZEZvclNwcmVhZCA9IHRydWU7XG4gICAgcmV0
dXJuIF9hc3NpZ24uYXBwbHkobnVsbCwgYXJndW1lbnRzKTtcbiAgfTtcblxuICBjcmVhdGVNaXhp
biA9IGZ1bmN0aW9uIChtaXhpbikge1xuICAgIGxvd1ByaW9yaXR5V2FybmluZyh3YXJuZWRGb3JD
cmVhdGVNaXhpbiwgJ1JlYWN0LmNyZWF0ZU1peGluIGlzIGRlcHJlY2F0ZWQgYW5kIHNob3VsZCBu
b3QgYmUgdXNlZC4gJyArICdJbiBSZWFjdCB2MTYuMCwgaXQgd2lsbCBiZSByZW1vdmVkLiAnICsg
J1lvdSBjYW4gdXNlIHRoaXMgbWl4aW4gZGlyZWN0bHkgaW5zdGVhZC4gJyArICdTZWUgaHR0cHM6
Ly9mYi5tZS9jcmVhdGVtaXhpbi13YXMtbmV2ZXItaW1wbGVtZW50ZWQgZm9yIG1vcmUgaW5mby4n
KTtcbiAgICB3YXJuZWRGb3JDcmVhdGVNaXhpbiA9IHRydWU7XG4gICAgcmV0dXJuIG1peGluO1xu
ICB9O1xufVxuXG52YXIgUmVhY3QgPSB7XG4gIC8vIE1vZGVyblxuXG4gIENoaWxkcmVuOiB7XG4g
ICAgbWFwOiBSZWFjdENoaWxkcmVuLm1hcCxcbiAgICBmb3JFYWNoOiBSZWFjdENoaWxkcmVuLmZv
ckVhY2gsXG4gICAgY291bnQ6IFJlYWN0Q2hpbGRyZW4uY291bnQsXG4gICAgdG9BcnJheTogUmVh
Y3RDaGlsZHJlbi50b0FycmF5LFxuICAgIG9ubHk6IG9ubHlDaGlsZFxuICB9LFxuXG4gIENvbXBv
bmVudDogUmVhY3RCYXNlQ2xhc3Nlcy5Db21wb25lbnQsXG4gIFB1cmVDb21wb25lbnQ6IFJlYWN0
QmFzZUNsYXNzZXMuUHVyZUNvbXBvbmVudCxcblxuICBjcmVhdGVFbGVtZW50OiBjcmVhdGVFbGVt
ZW50LFxuICBjbG9uZUVsZW1lbnQ6IGNsb25lRWxlbWVudCxcbiAgaXNWYWxpZEVsZW1lbnQ6IFJl
YWN0RWxlbWVudC5pc1ZhbGlkRWxlbWVudCxcblxuICAvLyBDbGFzc2ljXG5cbiAgUHJvcFR5cGVz
OiBSZWFjdFByb3BUeXBlcyxcbiAgY3JlYXRlQ2xhc3M6IGNyZWF0ZVJlYWN0Q2xhc3MsXG4gIGNy
ZWF0ZUZhY3Rvcnk6IGNyZWF0ZUZhY3RvcnksXG4gIGNyZWF0ZU1peGluOiBjcmVhdGVNaXhpbixc
blxuICAvLyBUaGlzIGxvb2tzIERPTSBzcGVjaWZpYyBidXQgdGhlc2UgYXJlIGFjdHVhbGx5IGlz
b21vcnBoaWMgaGVscGVyc1xuICAvLyBzaW5jZSB0aGV5IGFyZSBqdXN0IGdlbmVyYXRpbmcgRE9N
IHN0cmluZ3MuXG4gIERPTTogUmVhY3RET01GYWN0b3JpZXMsXG5cbiAgdmVyc2lvbjogUmVhY3RW
ZXJzaW9uLFxuXG4gIC8vIERlcHJlY2F0ZWQgaG9vayBmb3IgSlNYIHNwcmVhZCwgZG9uJ3QgdXNl
IHRoaXMgZm9yIGFueXRoaW5nLlxuICBfX3NwcmVhZDogX19zcHJlYWRcbn07XG5cbmlmIChwcm9j
ZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIHZhciB3YXJuZWRGb3JDcmVh
dGVDbGFzcyA9IGZhbHNlO1xuICBpZiAoY2FuRGVmaW5lUHJvcGVydHkpIHtcbiAgICBPYmplY3Qu
ZGVmaW5lUHJvcGVydHkoUmVhY3QsICdQcm9wVHlwZXMnLCB7XG4gICAgICBnZXQ6IGZ1bmN0aW9u
ICgpIHtcbiAgICAgICAgbG93UHJpb3JpdHlXYXJuaW5nKGRpZFdhcm5Qcm9wVHlwZXNEZXByZWNh
dGVkLCAnQWNjZXNzaW5nIFByb3BUeXBlcyB2aWEgdGhlIG1haW4gUmVhY3QgcGFja2FnZSBpcyBk
ZXByZWNhdGVkLCcgKyAnIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gIFJlYWN0IHYxNi4wLicgKyAn
IFVzZSB0aGUgbGF0ZXN0IGF2YWlsYWJsZSB2MTUuKiBwcm9wLXR5cGVzIHBhY2thZ2UgZnJvbSBu
cG0gaW5zdGVhZC4nICsgJyBGb3IgaW5mbyBvbiB1c2FnZSwgY29tcGF0aWJpbGl0eSwgbWlncmF0
aW9uIGFuZCBtb3JlLCBzZWUgJyArICdodHRwczovL2ZiLm1lL3Byb3AtdHlwZXMtZG9jcycpO1xu
ICAgICAgICBkaWRXYXJuUHJvcFR5cGVzRGVwcmVjYXRlZCA9IHRydWU7XG4gICAgICAgIHJldHVy
biBSZWFjdFByb3BUeXBlcztcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIE9iamVjdC5kZWZpbmVQ
cm9wZXJ0eShSZWFjdCwgJ2NyZWF0ZUNsYXNzJywge1xuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7
XG4gICAgICAgIGxvd1ByaW9yaXR5V2FybmluZyh3YXJuZWRGb3JDcmVhdGVDbGFzcywgJ0FjY2Vz
c2luZyBjcmVhdGVDbGFzcyB2aWEgdGhlIG1haW4gUmVhY3QgcGFja2FnZSBpcyBkZXByZWNhdGVk
LCcgKyAnIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gUmVhY3QgdjE2LjAuJyArIFwiIFVzZSBhIHBs
YWluIEphdmFTY3JpcHQgY2xhc3MgaW5zdGVhZC4gSWYgeW91J3JlIG5vdCB5ZXQgXCIgKyAncmVh
ZHkgdG8gbWlncmF0ZSwgY3JlYXRlLXJlYWN0LWNsYXNzIHYxNS4qIGlzIGF2YWlsYWJsZSAnICsg
J29uIG5wbSBhcyBhIHRlbXBvcmFyeSwgZHJvcC1pbiByZXBsYWNlbWVudC4gJyArICdGb3IgbW9y
ZSBpbmZvIHNlZSBodHRwczovL2ZiLm1lL3JlYWN0LWNyZWF0ZS1jbGFzcycpO1xuICAgICAgICB3
YXJuZWRGb3JDcmVhdGVDbGFzcyA9IHRydWU7XG4gICAgICAgIHJldHVybiBjcmVhdGVSZWFjdENs
YXNzO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLy8gUmVhY3QuRE9NIGZhY3RvcmllcyBh
cmUgZGVwcmVjYXRlZC4gV3JhcCB0aGVzZSBtZXRob2RzIHNvIHRoYXRcbiAgLy8gaW52b2NhdGlv
bnMgb2YgdGhlIFJlYWN0LkRPTSBuYW1lc3BhY2UgYW5kIGFsZXJ0IHVzZXJzIHRvIHN3aXRjaFxu
ICAvLyB0byB0aGUgYHJlYWN0LWRvbS1mYWN0b3JpZXNgIHBhY2thZ2UuXG4gIFJlYWN0LkRPTSA9
IHt9O1xuICB2YXIgd2FybmVkRm9yRmFjdG9yaWVzID0gZmFsc2U7XG4gIE9iamVjdC5rZXlzKFJl
YWN0RE9NRmFjdG9yaWVzKS5mb3JFYWNoKGZ1bmN0aW9uIChmYWN0b3J5KSB7XG4gICAgUmVhY3Qu
RE9NW2ZhY3RvcnldID0gZnVuY3Rpb24gKCkge1xuICAgICAgaWYgKCF3YXJuZWRGb3JGYWN0b3Jp
ZXMpIHtcbiAgICAgICAgbG93UHJpb3JpdHlXYXJuaW5nKGZhbHNlLCAnQWNjZXNzaW5nIGZhY3Rv
cmllcyBsaWtlIFJlYWN0LkRPTS4lcyBoYXMgYmVlbiBkZXByZWNhdGVkICcgKyAnYW5kIHdpbGwg
YmUgcmVtb3ZlZCBpbiB2MTYuMCsuIFVzZSB0aGUgJyArICdyZWFjdC1kb20tZmFjdG9yaWVzIHBh
Y2thZ2UgaW5zdGVhZC4gJyArICcgVmVyc2lvbiAxLjAgcHJvdmlkZXMgYSBkcm9wLWluIHJlcGxh
Y2VtZW50LicgKyAnIEZvciBtb3JlIGluZm8sIHNlZSBodHRwczovL2ZiLm1lL3JlYWN0LWRvbS1m
YWN0b3JpZXMnLCBmYWN0b3J5KTtcbiAgICAgICAgd2FybmVkRm9yRmFjdG9yaWVzID0gdHJ1ZTtc
biAgICAgIH1cbiAgICAgIHJldHVybiBSZWFjdERPTUZhY3Rvcmllc1tmYWN0b3J5XS5hcHBseShS
ZWFjdERPTUZhY3RvcmllcywgYXJndW1lbnRzKTtcbiAgICB9O1xuICB9KTtcbn1cblxubW9kdWxl
LmV4cG9ydHMgPSBSZWFjdDtcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZP
T1RFUlxuICoqIC4vfi9yZWFjdC9saWIvUmVhY3QuanNcbiAqKiBtb2R1bGUgaWQgPSAxN1xuICoq
IG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50
LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNv
dXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBp
biB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3Vy
Y2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUg
Zm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICov
XG5cbid1c2Ugc3RyaWN0JztcblxudmFyIF9hc3NpZ24gPSByZXF1aXJlKCdvYmplY3QtYXNzaWdu
Jyk7XG5cbnZhciBSZWFjdEN1cnJlbnRPd25lciA9IHJlcXVpcmUoJy4vUmVhY3RDdXJyZW50T3du
ZXInKTtcblxudmFyIHdhcm5pbmcgPSByZXF1aXJlKCdmYmpzL2xpYi93YXJuaW5nJyk7XG52YXIg
Y2FuRGVmaW5lUHJvcGVydHkgPSByZXF1aXJlKCcuL2NhbkRlZmluZVByb3BlcnR5Jyk7XG52YXIg
aGFzT3duUHJvcGVydHkgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xuXG52YXIg
UkVBQ1RfRUxFTUVOVF9UWVBFID0gcmVxdWlyZSgnLi9SZWFjdEVsZW1lbnRTeW1ib2wnKTtcblxu
dmFyIFJFU0VSVkVEX1BST1BTID0ge1xuICBrZXk6IHRydWUsXG4gIHJlZjogdHJ1ZSxcbiAgX19z
ZWxmOiB0cnVlLFxuICBfX3NvdXJjZTogdHJ1ZVxufTtcblxudmFyIHNwZWNpYWxQcm9wS2V5V2Fy
bmluZ1Nob3duLCBzcGVjaWFsUHJvcFJlZldhcm5pbmdTaG93bjtcblxuZnVuY3Rpb24gaGFzVmFs
aWRSZWYoY29uZmlnKSB7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rp
b24nKSB7XG4gICAgaWYgKGhhc093blByb3BlcnR5LmNhbGwoY29uZmlnLCAncmVmJykpIHtcbiAg
ICAgIHZhciBnZXR0ZXIgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGNvbmZpZywg
J3JlZicpLmdldDtcbiAgICAgIGlmIChnZXR0ZXIgJiYgZ2V0dGVyLmlzUmVhY3RXYXJuaW5nKSB7
XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIGNv
bmZpZy5yZWYgIT09IHVuZGVmaW5lZDtcbn1cblxuZnVuY3Rpb24gaGFzVmFsaWRLZXkoY29uZmln
KSB7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAg
aWYgKGhhc093blByb3BlcnR5LmNhbGwoY29uZmlnLCAna2V5JykpIHtcbiAgICAgIHZhciBnZXR0
ZXIgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGNvbmZpZywgJ2tleScpLmdldDtc
biAgICAgIGlmIChnZXR0ZXIgJiYgZ2V0dGVyLmlzUmVhY3RXYXJuaW5nKSB7XG4gICAgICAgIHJl
dHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIGNvbmZpZy5rZXkgIT09
IHVuZGVmaW5lZDtcbn1cblxuZnVuY3Rpb24gZGVmaW5lS2V5UHJvcFdhcm5pbmdHZXR0ZXIocHJv
cHMsIGRpc3BsYXlOYW1lKSB7XG4gIHZhciB3YXJuQWJvdXRBY2Nlc3NpbmdLZXkgPSBmdW5jdGlv
biAoKSB7XG4gICAgaWYgKCFzcGVjaWFsUHJvcEtleVdhcm5pbmdTaG93bikge1xuICAgICAgc3Bl
Y2lhbFByb3BLZXlXYXJuaW5nU2hvd24gPSB0cnVlO1xuICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9F
TlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICclczogYGtleWAgaXMgbm90IGEg
cHJvcC4gVHJ5aW5nIHRvIGFjY2VzcyBpdCB3aWxsIHJlc3VsdCAnICsgJ2luIGB1bmRlZmluZWRg
IGJlaW5nIHJldHVybmVkLiBJZiB5b3UgbmVlZCB0byBhY2Nlc3MgdGhlIHNhbWUgJyArICd2YWx1
ZSB3aXRoaW4gdGhlIGNoaWxkIGNvbXBvbmVudCwgeW91IHNob3VsZCBwYXNzIGl0IGFzIGEgZGlm
ZmVyZW50ICcgKyAncHJvcC4gKGh0dHBzOi8vZmIubWUvcmVhY3Qtc3BlY2lhbC1wcm9wcyknLCBk
aXNwbGF5TmFtZSkgOiB2b2lkIDA7XG4gICAgfVxuICB9O1xuICB3YXJuQWJvdXRBY2Nlc3NpbmdL
ZXkuaXNSZWFjdFdhcm5pbmcgPSB0cnVlO1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkocHJvcHMs
ICdrZXknLCB7XG4gICAgZ2V0OiB3YXJuQWJvdXRBY2Nlc3NpbmdLZXksXG4gICAgY29uZmlndXJh
YmxlOiB0cnVlXG4gIH0pO1xufVxuXG5mdW5jdGlvbiBkZWZpbmVSZWZQcm9wV2FybmluZ0dldHRl
cihwcm9wcywgZGlzcGxheU5hbWUpIHtcbiAgdmFyIHdhcm5BYm91dEFjY2Vzc2luZ1JlZiA9IGZ1
bmN0aW9uICgpIHtcbiAgICBpZiAoIXNwZWNpYWxQcm9wUmVmV2FybmluZ1Nob3duKSB7XG4gICAg
ICBzcGVjaWFsUHJvcFJlZldhcm5pbmdTaG93biA9IHRydWU7XG4gICAgICBwcm9jZXNzLmVudi5O
T0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJyVzOiBgcmVmYCBpcyBu
b3QgYSBwcm9wLiBUcnlpbmcgdG8gYWNjZXNzIGl0IHdpbGwgcmVzdWx0ICcgKyAnaW4gYHVuZGVm
aW5lZGAgYmVpbmcgcmV0dXJuZWQuIElmIHlvdSBuZWVkIHRvIGFjY2VzcyB0aGUgc2FtZSAnICsg
J3ZhbHVlIHdpdGhpbiB0aGUgY2hpbGQgY29tcG9uZW50LCB5b3Ugc2hvdWxkIHBhc3MgaXQgYXMg
YSBkaWZmZXJlbnQgJyArICdwcm9wLiAoaHR0cHM6Ly9mYi5tZS9yZWFjdC1zcGVjaWFsLXByb3Bz
KScsIGRpc3BsYXlOYW1lKSA6IHZvaWQgMDtcbiAgICB9XG4gIH07XG4gIHdhcm5BYm91dEFjY2Vz
c2luZ1JlZi5pc1JlYWN0V2FybmluZyA9IHRydWU7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShw
cm9wcywgJ3JlZicsIHtcbiAgICBnZXQ6IHdhcm5BYm91dEFjY2Vzc2luZ1JlZixcbiAgICBjb25m
aWd1cmFibGU6IHRydWVcbiAgfSk7XG59XG5cbi8qKlxuICogRmFjdG9yeSBtZXRob2QgdG8gY3Jl
YXRlIGEgbmV3IFJlYWN0IGVsZW1lbnQuIFRoaXMgbm8gbG9uZ2VyIGFkaGVyZXMgdG9cbiAqIHRo
ZSBjbGFzcyBwYXR0ZXJuLCBzbyBkbyBub3QgdXNlIG5ldyB0byBjYWxsIGl0LiBBbHNvLCBubyBp
bnN0YW5jZW9mIGNoZWNrXG4gKiB3aWxsIHdvcmsuIEluc3RlYWQgdGVzdCAkJHR5cGVvZiBmaWVs
ZCBhZ2FpbnN0IFN5bWJvbC5mb3IoJ3JlYWN0LmVsZW1lbnQnKSB0byBjaGVja1xuICogaWYgc29t
ZXRoaW5nIGlzIGEgUmVhY3QgRWxlbWVudC5cbiAqXG4gKiBAcGFyYW0geyp9IHR5cGVcbiAqIEBw
YXJhbSB7Kn0ga2V5XG4gKiBAcGFyYW0ge3N0cmluZ3xvYmplY3R9IHJlZlxuICogQHBhcmFtIHsq
fSBzZWxmIEEgKnRlbXBvcmFyeSogaGVscGVyIHRvIGRldGVjdCBwbGFjZXMgd2hlcmUgYHRoaXNg
IGlzXG4gKiBkaWZmZXJlbnQgZnJvbSB0aGUgYG93bmVyYCB3aGVuIFJlYWN0LmNyZWF0ZUVsZW1l
bnQgaXMgY2FsbGVkLCBzbyB0aGF0IHdlXG4gKiBjYW4gd2Fybi4gV2Ugd2FudCB0byBnZXQgcmlk
IG9mIG93bmVyIGFuZCByZXBsYWNlIHN0cmluZyBgcmVmYHMgd2l0aCBhcnJvd1xuICogZnVuY3Rp
b25zLCBhbmQgYXMgbG9uZyBhcyBgdGhpc2AgYW5kIG93bmVyIGFyZSB0aGUgc2FtZSwgdGhlcmUg
d2lsbCBiZSBub1xuICogY2hhbmdlIGluIGJlaGF2aW9yLlxuICogQHBhcmFtIHsqfSBzb3VyY2Ug
QW4gYW5ub3RhdGlvbiBvYmplY3QgKGFkZGVkIGJ5IGEgdHJhbnNwaWxlciBvciBvdGhlcndpc2Up
XG4gKiBpbmRpY2F0aW5nIGZpbGVuYW1lLCBsaW5lIG51bWJlciwgYW5kL29yIG90aGVyIGluZm9y
bWF0aW9uLlxuICogQHBhcmFtIHsqfSBvd25lclxuICogQHBhcmFtIHsqfSBwcm9wc1xuICogQGlu
dGVybmFsXG4gKi9cbnZhciBSZWFjdEVsZW1lbnQgPSBmdW5jdGlvbiAodHlwZSwga2V5LCByZWYs
IHNlbGYsIHNvdXJjZSwgb3duZXIsIHByb3BzKSB7XG4gIHZhciBlbGVtZW50ID0ge1xuICAgIC8v
IFRoaXMgdGFnIGFsbG93IHVzIHRvIHVuaXF1ZWx5IGlkZW50aWZ5IHRoaXMgYXMgYSBSZWFjdCBF
bGVtZW50XG4gICAgJCR0eXBlb2Y6IFJFQUNUX0VMRU1FTlRfVFlQRSxcblxuICAgIC8vIEJ1aWx0
LWluIHByb3BlcnRpZXMgdGhhdCBiZWxvbmcgb24gdGhlIGVsZW1lbnRcbiAgICB0eXBlOiB0eXBl
LFxuICAgIGtleToga2V5LFxuICAgIHJlZjogcmVmLFxuICAgIHByb3BzOiBwcm9wcyxcblxuICAg
IC8vIFJlY29yZCB0aGUgY29tcG9uZW50IHJlc3BvbnNpYmxlIGZvciBjcmVhdGluZyB0aGlzIGVs
ZW1lbnQuXG4gICAgX293bmVyOiBvd25lclxuICB9O1xuXG4gIGlmIChwcm9jZXNzLmVudi5OT0RF
X0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgLy8gVGhlIHZhbGlkYXRpb24gZmxhZyBpcyBj
dXJyZW50bHkgbXV0YXRpdmUuIFdlIHB1dCBpdCBvblxuICAgIC8vIGFuIGV4dGVybmFsIGJhY2tp
bmcgc3RvcmUgc28gdGhhdCB3ZSBjYW4gZnJlZXplIHRoZSB3aG9sZSBvYmplY3QuXG4gICAgLy8g
VGhpcyBjYW4gYmUgcmVwbGFjZWQgd2l0aCBhIFdlYWtNYXAgb25jZSB0aGV5IGFyZSBpbXBsZW1l
bnRlZCBpblxuICAgIC8vIGNvbW1vbmx5IHVzZWQgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnRzLlxu
ICAgIGVsZW1lbnQuX3N0b3JlID0ge307XG5cbiAgICAvLyBUbyBtYWtlIGNvbXBhcmluZyBSZWFj
dEVsZW1lbnRzIGVhc2llciBmb3IgdGVzdGluZyBwdXJwb3Nlcywgd2UgbWFrZVxuICAgIC8vIHRo
ZSB2YWxpZGF0aW9uIGZsYWcgbm9uLWVudW1lcmFibGUgKHdoZXJlIHBvc3NpYmxlLCB3aGljaCBz
aG91bGRcbiAgICAvLyBpbmNsdWRlIGV2ZXJ5IGVudmlyb25tZW50IHdlIHJ1biB0ZXN0cyBpbiks
IHNvIHRoZSB0ZXN0IGZyYW1ld29ya1xuICAgIC8vIGlnbm9yZXMgaXQuXG4gICAgaWYgKGNhbkRl
ZmluZVByb3BlcnR5KSB7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZWxlbWVudC5fc3Rv
cmUsICd2YWxpZGF0ZWQnLCB7XG4gICAgICAgIGNvbmZpZ3VyYWJsZTogZmFsc2UsXG4gICAgICAg
IGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgICAgdmFs
dWU6IGZhbHNlXG4gICAgICB9KTtcbiAgICAgIC8vIHNlbGYgYW5kIHNvdXJjZSBhcmUgREVWIG9u
bHkgcHJvcGVydGllcy5cbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlbGVtZW50LCAnX3Nl
bGYnLCB7XG4gICAgICAgIGNvbmZpZ3VyYWJsZTogZmFsc2UsXG4gICAgICAgIGVudW1lcmFibGU6
IGZhbHNlLFxuICAgICAgICB3cml0YWJsZTogZmFsc2UsXG4gICAgICAgIHZhbHVlOiBzZWxmXG4g
ICAgICB9KTtcbiAgICAgIC8vIFR3byBlbGVtZW50cyBjcmVhdGVkIGluIHR3byBkaWZmZXJlbnQg
cGxhY2VzIHNob3VsZCBiZSBjb25zaWRlcmVkXG4gICAgICAvLyBlcXVhbCBmb3IgdGVzdGluZyBw
dXJwb3NlcyBhbmQgdGhlcmVmb3JlIHdlIGhpZGUgaXQgZnJvbSBlbnVtZXJhdGlvbi5cbiAgICAg
IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlbGVtZW50LCAnX3NvdXJjZScsIHtcbiAgICAgICAgY29u
ZmlndXJhYmxlOiBmYWxzZSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIHdy
aXRhYmxlOiBmYWxzZSxcbiAgICAgICAgdmFsdWU6IHNvdXJjZVxuICAgICAgfSk7XG4gICAgfSBl
bHNlIHtcbiAgICAgIGVsZW1lbnQuX3N0b3JlLnZhbGlkYXRlZCA9IGZhbHNlO1xuICAgICAgZWxl
bWVudC5fc2VsZiA9IHNlbGY7XG4gICAgICBlbGVtZW50Ll9zb3VyY2UgPSBzb3VyY2U7XG4gICAg
fVxuICAgIGlmIChPYmplY3QuZnJlZXplKSB7XG4gICAgICBPYmplY3QuZnJlZXplKGVsZW1lbnQu
cHJvcHMpO1xuICAgICAgT2JqZWN0LmZyZWV6ZShlbGVtZW50KTtcbiAgICB9XG4gIH1cblxuICBy
ZXR1cm4gZWxlbWVudDtcbn07XG5cbi8qKlxuICogQ3JlYXRlIGFuZCByZXR1cm4gYSBuZXcgUmVh
Y3RFbGVtZW50IG9mIHRoZSBnaXZlbiB0eXBlLlxuICogU2VlIGh0dHBzOi8vZmFjZWJvb2suZ2l0
aHViLmlvL3JlYWN0L2RvY3MvdG9wLWxldmVsLWFwaS5odG1sI3JlYWN0LmNyZWF0ZWVsZW1lbnRc
biAqL1xuUmVhY3RFbGVtZW50LmNyZWF0ZUVsZW1lbnQgPSBmdW5jdGlvbiAodHlwZSwgY29uZmln
LCBjaGlsZHJlbikge1xuICB2YXIgcHJvcE5hbWU7XG5cbiAgLy8gUmVzZXJ2ZWQgbmFtZXMgYXJl
IGV4dHJhY3RlZFxuICB2YXIgcHJvcHMgPSB7fTtcblxuICB2YXIga2V5ID0gbnVsbDtcbiAgdmFy
IHJlZiA9IG51bGw7XG4gIHZhciBzZWxmID0gbnVsbDtcbiAgdmFyIHNvdXJjZSA9IG51bGw7XG5c
biAgaWYgKGNvbmZpZyAhPSBudWxsKSB7XG4gICAgaWYgKGhhc1ZhbGlkUmVmKGNvbmZpZykpIHtc
biAgICAgIHJlZiA9IGNvbmZpZy5yZWY7XG4gICAgfVxuICAgIGlmIChoYXNWYWxpZEtleShjb25m
aWcpKSB7XG4gICAgICBrZXkgPSAnJyArIGNvbmZpZy5rZXk7XG4gICAgfVxuXG4gICAgc2VsZiA9
IGNvbmZpZy5fX3NlbGYgPT09IHVuZGVmaW5lZCA/IG51bGwgOiBjb25maWcuX19zZWxmO1xuICAg
IHNvdXJjZSA9IGNvbmZpZy5fX3NvdXJjZSA9PT0gdW5kZWZpbmVkID8gbnVsbCA6IGNvbmZpZy5f
X3NvdXJjZTtcbiAgICAvLyBSZW1haW5pbmcgcHJvcGVydGllcyBhcmUgYWRkZWQgdG8gYSBuZXcg
cHJvcHMgb2JqZWN0XG4gICAgZm9yIChwcm9wTmFtZSBpbiBjb25maWcpIHtcbiAgICAgIGlmICho
YXNPd25Qcm9wZXJ0eS5jYWxsKGNvbmZpZywgcHJvcE5hbWUpICYmICFSRVNFUlZFRF9QUk9QUy5o
YXNPd25Qcm9wZXJ0eShwcm9wTmFtZSkpIHtcbiAgICAgICAgcHJvcHNbcHJvcE5hbWVdID0gY29u
ZmlnW3Byb3BOYW1lXTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBDaGlsZHJlbiBjYW4g
YmUgbW9yZSB0aGFuIG9uZSBhcmd1bWVudCwgYW5kIHRob3NlIGFyZSB0cmFuc2ZlcnJlZCBvbnRv
XG4gIC8vIHRoZSBuZXdseSBhbGxvY2F0ZWQgcHJvcHMgb2JqZWN0LlxuICB2YXIgY2hpbGRyZW5M
ZW5ndGggPSBhcmd1bWVudHMubGVuZ3RoIC0gMjtcbiAgaWYgKGNoaWxkcmVuTGVuZ3RoID09PSAx
KSB7XG4gICAgcHJvcHMuY2hpbGRyZW4gPSBjaGlsZHJlbjtcbiAgfSBlbHNlIGlmIChjaGlsZHJl
bkxlbmd0aCA+IDEpIHtcbiAgICB2YXIgY2hpbGRBcnJheSA9IEFycmF5KGNoaWxkcmVuTGVuZ3Ro
KTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNoaWxkcmVuTGVuZ3RoOyBpKyspIHtcbiAgICAg
IGNoaWxkQXJyYXlbaV0gPSBhcmd1bWVudHNbaSArIDJdO1xuICAgIH1cbiAgICBpZiAocHJvY2Vz
cy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgaWYgKE9iamVjdC5mcmVl
emUpIHtcbiAgICAgICAgT2JqZWN0LmZyZWV6ZShjaGlsZEFycmF5KTtcbiAgICAgIH1cbiAgICB9
XG4gICAgcHJvcHMuY2hpbGRyZW4gPSBjaGlsZEFycmF5O1xuICB9XG5cbiAgLy8gUmVzb2x2ZSBk
ZWZhdWx0IHByb3BzXG4gIGlmICh0eXBlICYmIHR5cGUuZGVmYXVsdFByb3BzKSB7XG4gICAgdmFy
IGRlZmF1bHRQcm9wcyA9IHR5cGUuZGVmYXVsdFByb3BzO1xuICAgIGZvciAocHJvcE5hbWUgaW4g
ZGVmYXVsdFByb3BzKSB7XG4gICAgICBpZiAocHJvcHNbcHJvcE5hbWVdID09PSB1bmRlZmluZWQp
IHtcbiAgICAgICAgcHJvcHNbcHJvcE5hbWVdID0gZGVmYXVsdFByb3BzW3Byb3BOYW1lXTtcbiAg
ICAgIH1cbiAgICB9XG4gIH1cbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVj
dGlvbicpIHtcbiAgICBpZiAoa2V5IHx8IHJlZikge1xuICAgICAgaWYgKHR5cGVvZiBwcm9wcy4k
JHR5cGVvZiA9PT0gJ3VuZGVmaW5lZCcgfHwgcHJvcHMuJCR0eXBlb2YgIT09IFJFQUNUX0VMRU1F
TlRfVFlQRSkge1xuICAgICAgICB2YXIgZGlzcGxheU5hbWUgPSB0eXBlb2YgdHlwZSA9PT0gJ2Z1
bmN0aW9uJyA/IHR5cGUuZGlzcGxheU5hbWUgfHwgdHlwZS5uYW1lIHx8ICdVbmtub3duJyA6IHR5
cGU7XG4gICAgICAgIGlmIChrZXkpIHtcbiAgICAgICAgICBkZWZpbmVLZXlQcm9wV2FybmluZ0dl
dHRlcihwcm9wcywgZGlzcGxheU5hbWUpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChyZWYpIHtc
biAgICAgICAgICBkZWZpbmVSZWZQcm9wV2FybmluZ0dldHRlcihwcm9wcywgZGlzcGxheU5hbWUp
O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBSZWFjdEVsZW1lbnQo
dHlwZSwga2V5LCByZWYsIHNlbGYsIHNvdXJjZSwgUmVhY3RDdXJyZW50T3duZXIuY3VycmVudCwg
cHJvcHMpO1xufTtcblxuLyoqXG4gKiBSZXR1cm4gYSBmdW5jdGlvbiB0aGF0IHByb2R1Y2VzIFJl
YWN0RWxlbWVudHMgb2YgYSBnaXZlbiB0eXBlLlxuICogU2VlIGh0dHBzOi8vZmFjZWJvb2suZ2l0
aHViLmlvL3JlYWN0L2RvY3MvdG9wLWxldmVsLWFwaS5odG1sI3JlYWN0LmNyZWF0ZWZhY3Rvcnlc
biAqL1xuUmVhY3RFbGVtZW50LmNyZWF0ZUZhY3RvcnkgPSBmdW5jdGlvbiAodHlwZSkge1xuICB2
YXIgZmFjdG9yeSA9IFJlYWN0RWxlbWVudC5jcmVhdGVFbGVtZW50LmJpbmQobnVsbCwgdHlwZSk7
XG4gIC8vIEV4cG9zZSB0aGUgdHlwZSBvbiB0aGUgZmFjdG9yeSBhbmQgdGhlIHByb3RvdHlwZSBz
byB0aGF0IGl0IGNhbiBiZVxuICAvLyBlYXNpbHkgYWNjZXNzZWQgb24gZWxlbWVudHMuIEUuZy4g
YDxGb28gLz4udHlwZSA9PT0gRm9vYC5cbiAgLy8gVGhpcyBzaG91bGQgbm90IGJlIG5hbWVkIGBj
b25zdHJ1Y3RvcmAgc2luY2UgdGhpcyBtYXkgbm90IGJlIHRoZSBmdW5jdGlvblxuICAvLyB0aGF0
IGNyZWF0ZWQgdGhlIGVsZW1lbnQsIGFuZCBpdCBtYXkgbm90IGV2ZW4gYmUgYSBjb25zdHJ1Y3Rv
ci5cbiAgLy8gTGVnYWN5IGhvb2sgVE9ETzogV2FybiBpZiB0aGlzIGlzIGFjY2Vzc2VkXG4gIGZh
Y3RvcnkudHlwZSA9IHR5cGU7XG4gIHJldHVybiBmYWN0b3J5O1xufTtcblxuUmVhY3RFbGVtZW50
LmNsb25lQW5kUmVwbGFjZUtleSA9IGZ1bmN0aW9uIChvbGRFbGVtZW50LCBuZXdLZXkpIHtcbiAg
dmFyIG5ld0VsZW1lbnQgPSBSZWFjdEVsZW1lbnQob2xkRWxlbWVudC50eXBlLCBuZXdLZXksIG9s
ZEVsZW1lbnQucmVmLCBvbGRFbGVtZW50Ll9zZWxmLCBvbGRFbGVtZW50Ll9zb3VyY2UsIG9sZEVs
ZW1lbnQuX293bmVyLCBvbGRFbGVtZW50LnByb3BzKTtcblxuICByZXR1cm4gbmV3RWxlbWVudDtc
bn07XG5cbi8qKlxuICogQ2xvbmUgYW5kIHJldHVybiBhIG5ldyBSZWFjdEVsZW1lbnQgdXNpbmcg
ZWxlbWVudCBhcyB0aGUgc3RhcnRpbmcgcG9pbnQuXG4gKiBTZWUgaHR0cHM6Ly9mYWNlYm9vay5n
aXRodWIuaW8vcmVhY3QvZG9jcy90b3AtbGV2ZWwtYXBpLmh0bWwjcmVhY3QuY2xvbmVlbGVtZW50
XG4gKi9cblJlYWN0RWxlbWVudC5jbG9uZUVsZW1lbnQgPSBmdW5jdGlvbiAoZWxlbWVudCwgY29u
ZmlnLCBjaGlsZHJlbikge1xuICB2YXIgcHJvcE5hbWU7XG5cbiAgLy8gT3JpZ2luYWwgcHJvcHMg
YXJlIGNvcGllZFxuICB2YXIgcHJvcHMgPSBfYXNzaWduKHt9LCBlbGVtZW50LnByb3BzKTtcblxu
ICAvLyBSZXNlcnZlZCBuYW1lcyBhcmUgZXh0cmFjdGVkXG4gIHZhciBrZXkgPSBlbGVtZW50Lmtl
eTtcbiAgdmFyIHJlZiA9IGVsZW1lbnQucmVmO1xuICAvLyBTZWxmIGlzIHByZXNlcnZlZCBzaW5j
ZSB0aGUgb3duZXIgaXMgcHJlc2VydmVkLlxuICB2YXIgc2VsZiA9IGVsZW1lbnQuX3NlbGY7XG4g
IC8vIFNvdXJjZSBpcyBwcmVzZXJ2ZWQgc2luY2UgY2xvbmVFbGVtZW50IGlzIHVubGlrZWx5IHRv
IGJlIHRhcmdldGVkIGJ5IGFcbiAgLy8gdHJhbnNwaWxlciwgYW5kIHRoZSBvcmlnaW5hbCBzb3Vy
Y2UgaXMgcHJvYmFibHkgYSBiZXR0ZXIgaW5kaWNhdG9yIG9mIHRoZVxuICAvLyB0cnVlIG93bmVy
LlxuICB2YXIgc291cmNlID0gZWxlbWVudC5fc291cmNlO1xuXG4gIC8vIE93bmVyIHdpbGwgYmUg
cHJlc2VydmVkLCB1bmxlc3MgcmVmIGlzIG92ZXJyaWRkZW5cbiAgdmFyIG93bmVyID0gZWxlbWVu
dC5fb3duZXI7XG5cbiAgaWYgKGNvbmZpZyAhPSBudWxsKSB7XG4gICAgaWYgKGhhc1ZhbGlkUmVm
KGNvbmZpZykpIHtcbiAgICAgIC8vIFNpbGVudGx5IHN0ZWFsIHRoZSByZWYgZnJvbSB0aGUgcGFy
ZW50LlxuICAgICAgcmVmID0gY29uZmlnLnJlZjtcbiAgICAgIG93bmVyID0gUmVhY3RDdXJyZW50
T3duZXIuY3VycmVudDtcbiAgICB9XG4gICAgaWYgKGhhc1ZhbGlkS2V5KGNvbmZpZykpIHtcbiAg
ICAgIGtleSA9ICcnICsgY29uZmlnLmtleTtcbiAgICB9XG5cbiAgICAvLyBSZW1haW5pbmcgcHJv
cGVydGllcyBvdmVycmlkZSBleGlzdGluZyBwcm9wc1xuICAgIHZhciBkZWZhdWx0UHJvcHM7XG4g
ICAgaWYgKGVsZW1lbnQudHlwZSAmJiBlbGVtZW50LnR5cGUuZGVmYXVsdFByb3BzKSB7XG4gICAg
ICBkZWZhdWx0UHJvcHMgPSBlbGVtZW50LnR5cGUuZGVmYXVsdFByb3BzO1xuICAgIH1cbiAgICBm
b3IgKHByb3BOYW1lIGluIGNvbmZpZykge1xuICAgICAgaWYgKGhhc093blByb3BlcnR5LmNhbGwo
Y29uZmlnLCBwcm9wTmFtZSkgJiYgIVJFU0VSVkVEX1BST1BTLmhhc093blByb3BlcnR5KHByb3BO
YW1lKSkge1xuICAgICAgICBpZiAoY29uZmlnW3Byb3BOYW1lXSA9PT0gdW5kZWZpbmVkICYmIGRl
ZmF1bHRQcm9wcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgLy8gUmVzb2x2ZSBkZWZhdWx0
IHByb3BzXG4gICAgICAgICAgcHJvcHNbcHJvcE5hbWVdID0gZGVmYXVsdFByb3BzW3Byb3BOYW1l
XTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwcm9wc1twcm9wTmFtZV0gPSBjb25maWdb
cHJvcE5hbWVdO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gQ2hpbGRy
ZW4gY2FuIGJlIG1vcmUgdGhhbiBvbmUgYXJndW1lbnQsIGFuZCB0aG9zZSBhcmUgdHJhbnNmZXJy
ZWQgb250b1xuICAvLyB0aGUgbmV3bHkgYWxsb2NhdGVkIHByb3BzIG9iamVjdC5cbiAgdmFyIGNo
aWxkcmVuTGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aCAtIDI7XG4gIGlmIChjaGlsZHJlbkxlbmd0
aCA9PT0gMSkge1xuICAgIHByb3BzLmNoaWxkcmVuID0gY2hpbGRyZW47XG4gIH0gZWxzZSBpZiAo
Y2hpbGRyZW5MZW5ndGggPiAxKSB7XG4gICAgdmFyIGNoaWxkQXJyYXkgPSBBcnJheShjaGlsZHJl
bkxlbmd0aCk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGlsZHJlbkxlbmd0aDsgaSsrKSB7
XG4gICAgICBjaGlsZEFycmF5W2ldID0gYXJndW1lbnRzW2kgKyAyXTtcbiAgICB9XG4gICAgcHJv
cHMuY2hpbGRyZW4gPSBjaGlsZEFycmF5O1xuICB9XG5cbiAgcmV0dXJuIFJlYWN0RWxlbWVudChl
bGVtZW50LnR5cGUsIGtleSwgcmVmLCBzZWxmLCBzb3VyY2UsIG93bmVyLCBwcm9wcyk7XG59O1xu
XG4vKipcbiAqIFZlcmlmaWVzIHRoZSBvYmplY3QgaXMgYSBSZWFjdEVsZW1lbnQuXG4gKiBTZWUg
aHR0cHM6Ly9mYWNlYm9vay5naXRodWIuaW8vcmVhY3QvZG9jcy90b3AtbGV2ZWwtYXBpLmh0bWwj
cmVhY3QuaXN2YWxpZGVsZW1lbnRcbiAqIEBwYXJhbSB7P29iamVjdH0gb2JqZWN0XG4gKiBAcmV0
dXJuIHtib29sZWFufSBUcnVlIGlmIGBvYmplY3RgIGlzIGEgdmFsaWQgY29tcG9uZW50LlxuICog
QGZpbmFsXG4gKi9cblJlYWN0RWxlbWVudC5pc1ZhbGlkRWxlbWVudCA9IGZ1bmN0aW9uIChvYmpl
Y3QpIHtcbiAgcmV0dXJuIHR5cGVvZiBvYmplY3QgPT09ICdvYmplY3QnICYmIG9iamVjdCAhPT0g
bnVsbCAmJiBvYmplY3QuJCR0eXBlb2YgPT09IFJFQUNUX0VMRU1FTlRfVFlQRTtcbn07XG5cbm1v
ZHVsZS5leHBvcnRzID0gUmVhY3RFbGVtZW50O1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoq
IFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0L2xpYi9SZWFjdEVsZW1lbnQuanNcbiAqKiBt
b2R1bGUgaWQgPSAxOFxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5
cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZl
ZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5
bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJl
Y3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0
ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBk
aXJlY3RvcnkuXG4gKlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIF9wcm9kSW52YXJpYW50
ID0gcmVxdWlyZSgnLi9yZWFjdFByb2RJbnZhcmlhbnQnKTtcblxudmFyIEV2ZW50UGx1Z2luUmVn
aXN0cnkgPSByZXF1aXJlKCcuL0V2ZW50UGx1Z2luUmVnaXN0cnknKTtcbnZhciBFdmVudFBsdWdp
blV0aWxzID0gcmVxdWlyZSgnLi9FdmVudFBsdWdpblV0aWxzJyk7XG52YXIgUmVhY3RFcnJvclV0
aWxzID0gcmVxdWlyZSgnLi9SZWFjdEVycm9yVXRpbHMnKTtcblxudmFyIGFjY3VtdWxhdGVJbnRv
ID0gcmVxdWlyZSgnLi9hY2N1bXVsYXRlSW50bycpO1xudmFyIGZvckVhY2hBY2N1bXVsYXRlZCA9
IHJlcXVpcmUoJy4vZm9yRWFjaEFjY3VtdWxhdGVkJyk7XG52YXIgaW52YXJpYW50ID0gcmVxdWly
ZSgnZmJqcy9saWIvaW52YXJpYW50Jyk7XG5cbi8qKlxuICogSW50ZXJuYWwgc3RvcmUgZm9yIGV2
ZW50IGxpc3RlbmVyc1xuICovXG52YXIgbGlzdGVuZXJCYW5rID0ge307XG5cbi8qKlxuICogSW50
ZXJuYWwgcXVldWUgb2YgZXZlbnRzIHRoYXQgaGF2ZSBhY2N1bXVsYXRlZCB0aGVpciBkaXNwYXRj
aGVzIGFuZCBhcmVcbiAqIHdhaXRpbmcgdG8gaGF2ZSB0aGVpciBkaXNwYXRjaGVzIGV4ZWN1dGVk
LlxuICovXG52YXIgZXZlbnRRdWV1ZSA9IG51bGw7XG5cbi8qKlxuICogRGlzcGF0Y2hlcyBhbiBl
dmVudCBhbmQgcmVsZWFzZXMgaXQgYmFjayBpbnRvIHRoZSBwb29sLCB1bmxlc3MgcGVyc2lzdGVu
dC5cbiAqXG4gKiBAcGFyYW0gez9vYmplY3R9IGV2ZW50IFN5bnRoZXRpYyBldmVudCB0byBiZSBk
aXNwYXRjaGVkLlxuICogQHBhcmFtIHtib29sZWFufSBzaW11bGF0ZWQgSWYgdGhlIGV2ZW50IGlz
IHNpbXVsYXRlZCAoY2hhbmdlcyBleG4gYmVoYXZpb3IpXG4gKiBAcHJpdmF0ZVxuICovXG52YXIg
ZXhlY3V0ZURpc3BhdGNoZXNBbmRSZWxlYXNlID0gZnVuY3Rpb24gKGV2ZW50LCBzaW11bGF0ZWQp
IHtcbiAgaWYgKGV2ZW50KSB7XG4gICAgRXZlbnRQbHVnaW5VdGlscy5leGVjdXRlRGlzcGF0Y2hl
c0luT3JkZXIoZXZlbnQsIHNpbXVsYXRlZCk7XG5cbiAgICBpZiAoIWV2ZW50LmlzUGVyc2lzdGVu
dCgpKSB7XG4gICAgICBldmVudC5jb25zdHJ1Y3Rvci5yZWxlYXNlKGV2ZW50KTtcbiAgICB9XG4g
IH1cbn07XG52YXIgZXhlY3V0ZURpc3BhdGNoZXNBbmRSZWxlYXNlU2ltdWxhdGVkID0gZnVuY3Rp
b24gKGUpIHtcbiAgcmV0dXJuIGV4ZWN1dGVEaXNwYXRjaGVzQW5kUmVsZWFzZShlLCB0cnVlKTtc
bn07XG52YXIgZXhlY3V0ZURpc3BhdGNoZXNBbmRSZWxlYXNlVG9wTGV2ZWwgPSBmdW5jdGlvbiAo
ZSkge1xuICByZXR1cm4gZXhlY3V0ZURpc3BhdGNoZXNBbmRSZWxlYXNlKGUsIGZhbHNlKTtcbn07
XG5cbnZhciBnZXREaWN0aW9uYXJ5S2V5ID0gZnVuY3Rpb24gKGluc3QpIHtcbiAgLy8gUHJldmVu
dHMgVjggcGVyZm9ybWFuY2UgaXNzdWU6XG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9v
ay9yZWFjdC9wdWxsLzcyMzJcbiAgcmV0dXJuICcuJyArIGluc3QuX3Jvb3ROb2RlSUQ7XG59O1xu
XG5mdW5jdGlvbiBpc0ludGVyYWN0aXZlKHRhZykge1xuICByZXR1cm4gdGFnID09PSAnYnV0dG9u
JyB8fCB0YWcgPT09ICdpbnB1dCcgfHwgdGFnID09PSAnc2VsZWN0JyB8fCB0YWcgPT09ICd0ZXh0
YXJlYSc7XG59XG5cbmZ1bmN0aW9uIHNob3VsZFByZXZlbnRNb3VzZUV2ZW50KG5hbWUsIHR5cGUs
IHByb3BzKSB7XG4gIHN3aXRjaCAobmFtZSkge1xuICAgIGNhc2UgJ29uQ2xpY2snOlxuICAgIGNh
c2UgJ29uQ2xpY2tDYXB0dXJlJzpcbiAgICBjYXNlICdvbkRvdWJsZUNsaWNrJzpcbiAgICBjYXNl
ICdvbkRvdWJsZUNsaWNrQ2FwdHVyZSc6XG4gICAgY2FzZSAnb25Nb3VzZURvd24nOlxuICAgIGNh
c2UgJ29uTW91c2VEb3duQ2FwdHVyZSc6XG4gICAgY2FzZSAnb25Nb3VzZU1vdmUnOlxuICAgIGNh
c2UgJ29uTW91c2VNb3ZlQ2FwdHVyZSc6XG4gICAgY2FzZSAnb25Nb3VzZVVwJzpcbiAgICBjYXNl
ICdvbk1vdXNlVXBDYXB0dXJlJzpcbiAgICAgIHJldHVybiAhIShwcm9wcy5kaXNhYmxlZCAmJiBp
c0ludGVyYWN0aXZlKHR5cGUpKTtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIGZhbHNlO1xu
ICB9XG59XG5cbi8qKlxuICogVGhpcyBpcyBhIHVuaWZpZWQgaW50ZXJmYWNlIGZvciBldmVudCBw
bHVnaW5zIHRvIGJlIGluc3RhbGxlZCBhbmQgY29uZmlndXJlZC5cbiAqXG4gKiBFdmVudCBwbHVn
aW5zIGNhbiBpbXBsZW1lbnQgdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzOlxuICpcbiAqICAgYGV4
dHJhY3RFdmVudHNgIHtmdW5jdGlvbihzdHJpbmcsIERPTUV2ZW50VGFyZ2V0LCBzdHJpbmcsIG9i
amVjdCk6ICp9XG4gKiAgICAgUmVxdWlyZWQuIFdoZW4gYSB0b3AtbGV2ZWwgZXZlbnQgaXMgZmly
ZWQsIHRoaXMgbWV0aG9kIGlzIGV4cGVjdGVkIHRvXG4gKiAgICAgZXh0cmFjdCBzeW50aGV0aWMg
ZXZlbnRzIHRoYXQgd2lsbCBpbiB0dXJuIGJlIHF1ZXVlZCBhbmQgZGlzcGF0Y2hlZC5cbiAqXG4g
KiAgIGBldmVudFR5cGVzYCB7b2JqZWN0fVxuICogICAgIE9wdGlvbmFsLCBwbHVnaW5zIHRoYXQg
ZmlyZSBldmVudHMgbXVzdCBwdWJsaXNoIGEgbWFwcGluZyBvZiByZWdpc3RyYXRpb25cbiAqICAg
ICBuYW1lcyB0aGF0IGFyZSB1c2VkIHRvIHJlZ2lzdGVyIGxpc3RlbmVycy4gVmFsdWVzIG9mIHRo
aXMgbWFwcGluZyBtdXN0XG4gKiAgICAgYmUgb2JqZWN0cyB0aGF0IGNvbnRhaW4gYHJlZ2lzdHJh
dGlvbk5hbWVgIG9yIGBwaGFzZWRSZWdpc3RyYXRpb25OYW1lc2AuXG4gKlxuICogICBgZXhlY3V0
ZURpc3BhdGNoYCB7ZnVuY3Rpb24ob2JqZWN0LCBmdW5jdGlvbiwgc3RyaW5nKX1cbiAqICAgICBP
cHRpb25hbCwgYWxsb3dzIHBsdWdpbnMgdG8gb3ZlcnJpZGUgaG93IGFuIGV2ZW50IGdldHMgZGlz
cGF0Y2hlZC4gQnlcbiAqICAgICBkZWZhdWx0LCB0aGUgbGlzdGVuZXIgaXMgc2ltcGx5IGludm9r
ZWQuXG4gKlxuICogRWFjaCBwbHVnaW4gdGhhdCBpcyBpbmplY3RlZCBpbnRvIGBFdmVudHNQbHVn
aW5IdWJgIGlzIGltbWVkaWF0ZWx5IG9wZXJhYmxlLlxuICpcbiAqIEBwdWJsaWNcbiAqL1xudmFy
IEV2ZW50UGx1Z2luSHViID0ge1xuICAvKipcbiAgICogTWV0aG9kcyBmb3IgaW5qZWN0aW5nIGRl
cGVuZGVuY2llcy5cbiAgICovXG4gIGluamVjdGlvbjoge1xuICAgIC8qKlxuICAgICAqIEBwYXJh
bSB7YXJyYXl9IEluamVjdGVkRXZlbnRQbHVnaW5PcmRlclxuICAgICAqIEBwdWJsaWNcbiAgICAg
Ki9cbiAgICBpbmplY3RFdmVudFBsdWdpbk9yZGVyOiBFdmVudFBsdWdpblJlZ2lzdHJ5LmluamVj
dEV2ZW50UGx1Z2luT3JkZXIsXG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge29iamVjdH0gaW5q
ZWN0ZWROYW1lc1RvUGx1Z2lucyBNYXAgZnJvbSBuYW1lcyB0byBwbHVnaW4gbW9kdWxlcy5cbiAg
ICAgKi9cbiAgICBpbmplY3RFdmVudFBsdWdpbnNCeU5hbWU6IEV2ZW50UGx1Z2luUmVnaXN0cnku
aW5qZWN0RXZlbnRQbHVnaW5zQnlOYW1lXG4gIH0sXG5cbiAgLyoqXG4gICAqIFN0b3JlcyBgbGlz
dGVuZXJgIGF0IGBsaXN0ZW5lckJhbmtbcmVnaXN0cmF0aW9uTmFtZV1ba2V5XWAuIElzIGlkZW1w
b3RlbnQuXG4gICAqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBpbnN0IFRoZSBpbnN0YW5jZSwgd2hp
Y2ggaXMgdGhlIHNvdXJjZSBvZiBldmVudHMuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSByZWdpc3Ry
YXRpb25OYW1lIE5hbWUgb2YgbGlzdGVuZXIgKGUuZy4gYG9uQ2xpY2tgKS5cbiAgICogQHBhcmFt
IHtmdW5jdGlvbn0gbGlzdGVuZXIgVGhlIGNhbGxiYWNrIHRvIHN0b3JlLlxuICAgKi9cbiAgcHV0
TGlzdGVuZXI6IGZ1bmN0aW9uIChpbnN0LCByZWdpc3RyYXRpb25OYW1lLCBsaXN0ZW5lcikge1xu
ICAgICEodHlwZW9mIGxpc3RlbmVyID09PSAnZnVuY3Rpb24nKSA/IHByb2Nlc3MuZW52Lk5PREVf
RU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdFeHBlY3RlZCAlcyBsaXN0
ZW5lciB0byBiZSBhIGZ1bmN0aW9uLCBpbnN0ZWFkIGdvdCB0eXBlICVzJywgcmVnaXN0cmF0aW9u
TmFtZSwgdHlwZW9mIGxpc3RlbmVyKSA6IF9wcm9kSW52YXJpYW50KCc5NCcsIHJlZ2lzdHJhdGlv
bk5hbWUsIHR5cGVvZiBsaXN0ZW5lcikgOiB2b2lkIDA7XG5cbiAgICB2YXIga2V5ID0gZ2V0RGlj
dGlvbmFyeUtleShpbnN0KTtcbiAgICB2YXIgYmFua0ZvclJlZ2lzdHJhdGlvbk5hbWUgPSBsaXN0
ZW5lckJhbmtbcmVnaXN0cmF0aW9uTmFtZV0gfHwgKGxpc3RlbmVyQmFua1tyZWdpc3RyYXRpb25O
YW1lXSA9IHt9KTtcbiAgICBiYW5rRm9yUmVnaXN0cmF0aW9uTmFtZVtrZXldID0gbGlzdGVuZXI7
XG5cbiAgICB2YXIgUGx1Z2luTW9kdWxlID0gRXZlbnRQbHVnaW5SZWdpc3RyeS5yZWdpc3RyYXRp
b25OYW1lTW9kdWxlc1tyZWdpc3RyYXRpb25OYW1lXTtcbiAgICBpZiAoUGx1Z2luTW9kdWxlICYm
IFBsdWdpbk1vZHVsZS5kaWRQdXRMaXN0ZW5lcikge1xuICAgICAgUGx1Z2luTW9kdWxlLmRpZFB1
dExpc3RlbmVyKGluc3QsIHJlZ2lzdHJhdGlvbk5hbWUsIGxpc3RlbmVyKTtcbiAgICB9XG4gIH0s
XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBpbnN0IFRoZSBpbnN0YW5jZSwgd2hpY2gg
aXMgdGhlIHNvdXJjZSBvZiBldmVudHMuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSByZWdpc3RyYXRp
b25OYW1lIE5hbWUgb2YgbGlzdGVuZXIgKGUuZy4gYG9uQ2xpY2tgKS5cbiAgICogQHJldHVybiB7
P2Z1bmN0aW9ufSBUaGUgc3RvcmVkIGNhbGxiYWNrLlxuICAgKi9cbiAgZ2V0TGlzdGVuZXI6IGZ1
bmN0aW9uIChpbnN0LCByZWdpc3RyYXRpb25OYW1lKSB7XG4gICAgLy8gVE9ETzogc2hvdWxkUHJl
dmVudE1vdXNlRXZlbnQgaXMgRE9NLXNwZWNpZmljIGFuZCBkZWZpbml0ZWx5IHNob3VsZCBub3Rc
biAgICAvLyBsaXZlIGhlcmU7IG5lZWRzIHRvIGJlIG1vdmVkIHRvIGEgYmV0dGVyIHBsYWNlIHNv
b25cbiAgICB2YXIgYmFua0ZvclJlZ2lzdHJhdGlvbk5hbWUgPSBsaXN0ZW5lckJhbmtbcmVnaXN0
cmF0aW9uTmFtZV07XG4gICAgaWYgKHNob3VsZFByZXZlbnRNb3VzZUV2ZW50KHJlZ2lzdHJhdGlv
bk5hbWUsIGluc3QuX2N1cnJlbnRFbGVtZW50LnR5cGUsIGluc3QuX2N1cnJlbnRFbGVtZW50LnBy
b3BzKSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHZhciBrZXkgPSBnZXREaWN0
aW9uYXJ5S2V5KGluc3QpO1xuICAgIHJldHVybiBiYW5rRm9yUmVnaXN0cmF0aW9uTmFtZSAmJiBi
YW5rRm9yUmVnaXN0cmF0aW9uTmFtZVtrZXldO1xuICB9LFxuXG4gIC8qKlxuICAgKiBEZWxldGVz
IGEgbGlzdGVuZXIgZnJvbSB0aGUgcmVnaXN0cmF0aW9uIGJhbmsuXG4gICAqXG4gICAqIEBwYXJh
bSB7b2JqZWN0fSBpbnN0IFRoZSBpbnN0YW5jZSwgd2hpY2ggaXMgdGhlIHNvdXJjZSBvZiBldmVu
dHMuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSByZWdpc3RyYXRpb25OYW1lIE5hbWUgb2YgbGlzdGVu
ZXIgKGUuZy4gYG9uQ2xpY2tgKS5cbiAgICovXG4gIGRlbGV0ZUxpc3RlbmVyOiBmdW5jdGlvbiAo
aW5zdCwgcmVnaXN0cmF0aW9uTmFtZSkge1xuICAgIHZhciBQbHVnaW5Nb2R1bGUgPSBFdmVudFBs
dWdpblJlZ2lzdHJ5LnJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVzW3JlZ2lzdHJhdGlvbk5hbWVdO1xu
ICAgIGlmIChQbHVnaW5Nb2R1bGUgJiYgUGx1Z2luTW9kdWxlLndpbGxEZWxldGVMaXN0ZW5lcikg
e1xuICAgICAgUGx1Z2luTW9kdWxlLndpbGxEZWxldGVMaXN0ZW5lcihpbnN0LCByZWdpc3RyYXRp
b25OYW1lKTtcbiAgICB9XG5cbiAgICB2YXIgYmFua0ZvclJlZ2lzdHJhdGlvbk5hbWUgPSBsaXN0
ZW5lckJhbmtbcmVnaXN0cmF0aW9uTmFtZV07XG4gICAgLy8gVE9ETzogVGhpcyBzaG91bGQgbmV2
ZXIgYmUgbnVsbCAtLSB3aGVuIGlzIGl0P1xuICAgIGlmIChiYW5rRm9yUmVnaXN0cmF0aW9uTmFt
ZSkge1xuICAgICAgdmFyIGtleSA9IGdldERpY3Rpb25hcnlLZXkoaW5zdCk7XG4gICAgICBkZWxl
dGUgYmFua0ZvclJlZ2lzdHJhdGlvbk5hbWVba2V5XTtcbiAgICB9XG4gIH0sXG5cbiAgLyoqXG4g
ICAqIERlbGV0ZXMgYWxsIGxpc3RlbmVycyBmb3IgdGhlIERPTSBlbGVtZW50IHdpdGggdGhlIHN1
cHBsaWVkIElELlxuICAgKlxuICAgKiBAcGFyYW0ge29iamVjdH0gaW5zdCBUaGUgaW5zdGFuY2Us
IHdoaWNoIGlzIHRoZSBzb3VyY2Ugb2YgZXZlbnRzLlxuICAgKi9cbiAgZGVsZXRlQWxsTGlzdGVu
ZXJzOiBmdW5jdGlvbiAoaW5zdCkge1xuICAgIHZhciBrZXkgPSBnZXREaWN0aW9uYXJ5S2V5KGlu
c3QpO1xuICAgIGZvciAodmFyIHJlZ2lzdHJhdGlvbk5hbWUgaW4gbGlzdGVuZXJCYW5rKSB7XG4g
ICAgICBpZiAoIWxpc3RlbmVyQmFuay5oYXNPd25Qcm9wZXJ0eShyZWdpc3RyYXRpb25OYW1lKSkg
e1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFsaXN0ZW5lckJhbmtb
cmVnaXN0cmF0aW9uTmFtZV1ba2V5XSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxu
ICAgICAgdmFyIFBsdWdpbk1vZHVsZSA9IEV2ZW50UGx1Z2luUmVnaXN0cnkucmVnaXN0cmF0aW9u
TmFtZU1vZHVsZXNbcmVnaXN0cmF0aW9uTmFtZV07XG4gICAgICBpZiAoUGx1Z2luTW9kdWxlICYm
IFBsdWdpbk1vZHVsZS53aWxsRGVsZXRlTGlzdGVuZXIpIHtcbiAgICAgICAgUGx1Z2luTW9kdWxl
LndpbGxEZWxldGVMaXN0ZW5lcihpbnN0LCByZWdpc3RyYXRpb25OYW1lKTtcbiAgICAgIH1cblxu
ICAgICAgZGVsZXRlIGxpc3RlbmVyQmFua1tyZWdpc3RyYXRpb25OYW1lXVtrZXldO1xuICAgIH1c
biAgfSxcblxuICAvKipcbiAgICogQWxsb3dzIHJlZ2lzdGVyZWQgcGx1Z2lucyBhbiBvcHBvcnR1
bml0eSB0byBleHRyYWN0IGV2ZW50cyBmcm9tIHRvcC1sZXZlbFxuICAgKiBuYXRpdmUgYnJvd3Nl
ciBldmVudHMuXG4gICAqXG4gICAqIEByZXR1cm4geyp9IEFuIGFjY3VtdWxhdGlvbiBvZiBzeW50
aGV0aWMgZXZlbnRzLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIGV4dHJhY3RFdmVudHM6IGZ1
bmN0aW9uICh0b3BMZXZlbFR5cGUsIHRhcmdldEluc3QsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVu
dFRhcmdldCkge1xuICAgIHZhciBldmVudHM7XG4gICAgdmFyIHBsdWdpbnMgPSBFdmVudFBsdWdp
blJlZ2lzdHJ5LnBsdWdpbnM7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwbHVnaW5zLmxlbmd0
aDsgaSsrKSB7XG4gICAgICAvLyBOb3QgZXZlcnkgcGx1Z2luIGluIHRoZSBvcmRlcmluZyBtYXkg
YmUgbG9hZGVkIGF0IHJ1bnRpbWUuXG4gICAgICB2YXIgcG9zc2libGVQbHVnaW4gPSBwbHVnaW5z
W2ldO1xuICAgICAgaWYgKHBvc3NpYmxlUGx1Z2luKSB7XG4gICAgICAgIHZhciBleHRyYWN0ZWRF
dmVudHMgPSBwb3NzaWJsZVBsdWdpbi5leHRyYWN0RXZlbnRzKHRvcExldmVsVHlwZSwgdGFyZ2V0
SW5zdCwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KTtcbiAgICAgICAgaWYgKGV4dHJh
Y3RlZEV2ZW50cykge1xuICAgICAgICAgIGV2ZW50cyA9IGFjY3VtdWxhdGVJbnRvKGV2ZW50cywg
ZXh0cmFjdGVkRXZlbnRzKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4g
ZXZlbnRzO1xuICB9LFxuXG4gIC8qKlxuICAgKiBFbnF1ZXVlcyBhIHN5bnRoZXRpYyBldmVudCB0
aGF0IHNob3VsZCBiZSBkaXNwYXRjaGVkIHdoZW5cbiAgICogYHByb2Nlc3NFdmVudFF1ZXVlYCBp
cyBpbnZva2VkLlxuICAgKlxuICAgKiBAcGFyYW0geyp9IGV2ZW50cyBBbiBhY2N1bXVsYXRpb24g
b2Ygc3ludGhldGljIGV2ZW50cy5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBlbnF1ZXVlRXZl
bnRzOiBmdW5jdGlvbiAoZXZlbnRzKSB7XG4gICAgaWYgKGV2ZW50cykge1xuICAgICAgZXZlbnRR
dWV1ZSA9IGFjY3VtdWxhdGVJbnRvKGV2ZW50UXVldWUsIGV2ZW50cyk7XG4gICAgfVxuICB9LFxu
XG4gIC8qKlxuICAgKiBEaXNwYXRjaGVzIGFsbCBzeW50aGV0aWMgZXZlbnRzIG9uIHRoZSBldmVu
dCBxdWV1ZS5cbiAgICpcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwcm9jZXNzRXZlbnRRdWV1
ZTogZnVuY3Rpb24gKHNpbXVsYXRlZCkge1xuICAgIC8vIFNldCBgZXZlbnRRdWV1ZWAgdG8gbnVs
bCBiZWZvcmUgcHJvY2Vzc2luZyBpdCBzbyB0aGF0IHdlIGNhbiB0ZWxsIGlmIG1vcmVcbiAgICAv
LyBldmVudHMgZ2V0IGVucXVldWVkIHdoaWxlIHByb2Nlc3NpbmcuXG4gICAgdmFyIHByb2Nlc3Np
bmdFdmVudFF1ZXVlID0gZXZlbnRRdWV1ZTtcbiAgICBldmVudFF1ZXVlID0gbnVsbDtcbiAgICBp
ZiAoc2ltdWxhdGVkKSB7XG4gICAgICBmb3JFYWNoQWNjdW11bGF0ZWQocHJvY2Vzc2luZ0V2ZW50
UXVldWUsIGV4ZWN1dGVEaXNwYXRjaGVzQW5kUmVsZWFzZVNpbXVsYXRlZCk7XG4gICAgfSBlbHNl
IHtcbiAgICAgIGZvckVhY2hBY2N1bXVsYXRlZChwcm9jZXNzaW5nRXZlbnRRdWV1ZSwgZXhlY3V0
ZURpc3BhdGNoZXNBbmRSZWxlYXNlVG9wTGV2ZWwpO1xuICAgIH1cbiAgICAhIWV2ZW50UXVldWUg
PyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNl
LCAncHJvY2Vzc0V2ZW50UXVldWUoKTogQWRkaXRpb25hbCBldmVudHMgd2VyZSBlbnF1ZXVlZCB3
aGlsZSBwcm9jZXNzaW5nIGFuIGV2ZW50IHF1ZXVlLiBTdXBwb3J0IGZvciB0aGlzIGhhcyBub3Qg
eWV0IGJlZW4gaW1wbGVtZW50ZWQuJykgOiBfcHJvZEludmFyaWFudCgnOTUnKSA6IHZvaWQgMDtc
biAgICAvLyBUaGlzIHdvdWxkIGJlIGEgZ29vZCB0aW1lIHRvIHJldGhyb3cgaWYgYW55IG9mIHRo
ZSBldmVudCBoYW5kbGVycyB0aHJldy5cbiAgICBSZWFjdEVycm9yVXRpbHMucmV0aHJvd0NhdWdo
dEVycm9yKCk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIFRoZXNlIGFyZSBuZWVkZWQgZm9yIHRlc3Rz
IG9ubHkuIERvIG5vdCB1c2UhXG4gICAqL1xuICBfX3B1cmdlOiBmdW5jdGlvbiAoKSB7XG4gICAg
bGlzdGVuZXJCYW5rID0ge307XG4gIH0sXG5cbiAgX19nZXRMaXN0ZW5lckJhbms6IGZ1bmN0aW9u
ICgpIHtcbiAgICByZXR1cm4gbGlzdGVuZXJCYW5rO1xuICB9XG59O1xuXG5tb2R1bGUuZXhwb3J0
cyA9IEV2ZW50UGx1Z2luSHViO1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sg
Rk9PVEVSXG4gKiogLi9+L3JlYWN0LWRvbS9saWIvRXZlbnRQbHVnaW5IdWIuanNcbiAqKiBtb2R1
bGUgaWQgPSAxOVxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmln
aHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5c
biAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUg
bGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rv
cnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50
IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJl
Y3RvcnkuXG4gKlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIEV2ZW50UGx1Z2luSHViID0g
cmVxdWlyZSgnLi9FdmVudFBsdWdpbkh1YicpO1xudmFyIEV2ZW50UGx1Z2luVXRpbHMgPSByZXF1
aXJlKCcuL0V2ZW50UGx1Z2luVXRpbHMnKTtcblxudmFyIGFjY3VtdWxhdGVJbnRvID0gcmVxdWly
ZSgnLi9hY2N1bXVsYXRlSW50bycpO1xudmFyIGZvckVhY2hBY2N1bXVsYXRlZCA9IHJlcXVpcmUo
Jy4vZm9yRWFjaEFjY3VtdWxhdGVkJyk7XG52YXIgd2FybmluZyA9IHJlcXVpcmUoJ2ZianMvbGli
L3dhcm5pbmcnKTtcblxudmFyIGdldExpc3RlbmVyID0gRXZlbnRQbHVnaW5IdWIuZ2V0TGlzdGVu
ZXI7XG5cbi8qKlxuICogU29tZSBldmVudCB0eXBlcyBoYXZlIGEgbm90aW9uIG9mIGRpZmZlcmVu
dCByZWdpc3RyYXRpb24gbmFtZXMgZm9yIGRpZmZlcmVudFxuICogXCJwaGFzZXNcIiBvZiBwcm9w
YWdhdGlvbi4gVGhpcyBmaW5kcyBsaXN0ZW5lcnMgYnkgYSBnaXZlbiBwaGFzZS5cbiAqL1xuZnVu
Y3Rpb24gbGlzdGVuZXJBdFBoYXNlKGluc3QsIGV2ZW50LCBwcm9wYWdhdGlvblBoYXNlKSB7XG4g
IHZhciByZWdpc3RyYXRpb25OYW1lID0gZXZlbnQuZGlzcGF0Y2hDb25maWcucGhhc2VkUmVnaXN0
cmF0aW9uTmFtZXNbcHJvcGFnYXRpb25QaGFzZV07XG4gIHJldHVybiBnZXRMaXN0ZW5lcihpbnN0
LCByZWdpc3RyYXRpb25OYW1lKTtcbn1cblxuLyoqXG4gKiBUYWdzIGEgYFN5bnRoZXRpY0V2ZW50
YCB3aXRoIGRpc3BhdGNoZWQgbGlzdGVuZXJzLiBDcmVhdGluZyB0aGlzIGZ1bmN0aW9uXG4gKiBo
ZXJlLCBhbGxvd3MgdXMgdG8gbm90IGhhdmUgdG8gYmluZCBvciBjcmVhdGUgZnVuY3Rpb25zIGZv
ciBlYWNoIGV2ZW50LlxuICogTXV0YXRpbmcgdGhlIGV2ZW50J3MgbWVtYmVycyBhbGxvd3MgdXMg
dG8gbm90IGhhdmUgdG8gY3JlYXRlIGEgd3JhcHBpbmdcbiAqIFwiZGlzcGF0Y2hcIiBvYmplY3Qg
dGhhdCBwYWlycyB0aGUgZXZlbnQgd2l0aCB0aGUgbGlzdGVuZXIuXG4gKi9cbmZ1bmN0aW9uIGFj
Y3VtdWxhdGVEaXJlY3Rpb25hbERpc3BhdGNoZXMoaW5zdCwgcGhhc2UsIGV2ZW50KSB7XG4gIGlm
IChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgcHJvY2Vzcy5l
bnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoaW5zdCwgJ0Rpc3BhdGNoaW5n
IGluc3QgbXVzdCBub3QgYmUgbnVsbCcpIDogdm9pZCAwO1xuICB9XG4gIHZhciBsaXN0ZW5lciA9
IGxpc3RlbmVyQXRQaGFzZShpbnN0LCBldmVudCwgcGhhc2UpO1xuICBpZiAobGlzdGVuZXIpIHtc
biAgICBldmVudC5fZGlzcGF0Y2hMaXN0ZW5lcnMgPSBhY2N1bXVsYXRlSW50byhldmVudC5fZGlz
cGF0Y2hMaXN0ZW5lcnMsIGxpc3RlbmVyKTtcbiAgICBldmVudC5fZGlzcGF0Y2hJbnN0YW5jZXMg
PSBhY2N1bXVsYXRlSW50byhldmVudC5fZGlzcGF0Y2hJbnN0YW5jZXMsIGluc3QpO1xuICB9XG59
XG5cbi8qKlxuICogQ29sbGVjdCBkaXNwYXRjaGVzIChtdXN0IGJlIGVudGlyZWx5IGNvbGxlY3Rl
ZCBiZWZvcmUgZGlzcGF0Y2hpbmcgLSBzZWUgdW5pdFxuICogdGVzdHMpLiBMYXppbHkgYWxsb2Nh
dGUgdGhlIGFycmF5IHRvIGNvbnNlcnZlIG1lbW9yeS4gIFdlIG11c3QgbG9vcCB0aHJvdWdoXG4g
KiBlYWNoIGV2ZW50IGFuZCBwZXJmb3JtIHRoZSB0cmF2ZXJzYWwgZm9yIGVhY2ggb25lLiBXZSBj
YW5ub3QgcGVyZm9ybSBhXG4gKiBzaW5nbGUgdHJhdmVyc2FsIGZvciB0aGUgZW50aXJlIGNvbGxl
Y3Rpb24gb2YgZXZlbnRzIGJlY2F1c2UgZWFjaCBldmVudCBtYXlcbiAqIGhhdmUgYSBkaWZmZXJl
bnQgdGFyZ2V0LlxuICovXG5mdW5jdGlvbiBhY2N1bXVsYXRlVHdvUGhhc2VEaXNwYXRjaGVzU2lu
Z2xlKGV2ZW50KSB7XG4gIGlmIChldmVudCAmJiBldmVudC5kaXNwYXRjaENvbmZpZy5waGFzZWRS
ZWdpc3RyYXRpb25OYW1lcykge1xuICAgIEV2ZW50UGx1Z2luVXRpbHMudHJhdmVyc2VUd29QaGFz
ZShldmVudC5fdGFyZ2V0SW5zdCwgYWNjdW11bGF0ZURpcmVjdGlvbmFsRGlzcGF0Y2hlcywgZXZl
bnQpO1xuICB9XG59XG5cbi8qKlxuICogU2FtZSBhcyBgYWNjdW11bGF0ZVR3b1BoYXNlRGlzcGF0
Y2hlc1NpbmdsZWAsIGJ1dCBza2lwcyBvdmVyIHRoZSB0YXJnZXRJRC5cbiAqL1xuZnVuY3Rpb24g
YWNjdW11bGF0ZVR3b1BoYXNlRGlzcGF0Y2hlc1NpbmdsZVNraXBUYXJnZXQoZXZlbnQpIHtcbiAg
aWYgKGV2ZW50ICYmIGV2ZW50LmRpc3BhdGNoQ29uZmlnLnBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVz
KSB7XG4gICAgdmFyIHRhcmdldEluc3QgPSBldmVudC5fdGFyZ2V0SW5zdDtcbiAgICB2YXIgcGFy
ZW50SW5zdCA9IHRhcmdldEluc3QgPyBFdmVudFBsdWdpblV0aWxzLmdldFBhcmVudEluc3RhbmNl
KHRhcmdldEluc3QpIDogbnVsbDtcbiAgICBFdmVudFBsdWdpblV0aWxzLnRyYXZlcnNlVHdvUGhh
c2UocGFyZW50SW5zdCwgYWNjdW11bGF0ZURpcmVjdGlvbmFsRGlzcGF0Y2hlcywgZXZlbnQpO1xu
ICB9XG59XG5cbi8qKlxuICogQWNjdW11bGF0ZXMgd2l0aG91dCByZWdhcmQgdG8gZGlyZWN0aW9u
LCBkb2VzIG5vdCBsb29rIGZvciBwaGFzZWRcbiAqIHJlZ2lzdHJhdGlvbiBuYW1lcy4gU2FtZSBh
cyBgYWNjdW11bGF0ZURpcmVjdERpc3BhdGNoZXNTaW5nbGVgIGJ1dCB3aXRob3V0XG4gKiByZXF1
aXJpbmcgdGhhdCB0aGUgYGRpc3BhdGNoTWFya2VyYCBiZSB0aGUgc2FtZSBhcyB0aGUgZGlzcGF0
Y2hlZCBJRC5cbiAqL1xuZnVuY3Rpb24gYWNjdW11bGF0ZURpc3BhdGNoZXMoaW5zdCwgaWdub3Jl
ZERpcmVjdGlvbiwgZXZlbnQpIHtcbiAgaWYgKGV2ZW50ICYmIGV2ZW50LmRpc3BhdGNoQ29uZmln
LnJlZ2lzdHJhdGlvbk5hbWUpIHtcbiAgICB2YXIgcmVnaXN0cmF0aW9uTmFtZSA9IGV2ZW50LmRp
c3BhdGNoQ29uZmlnLnJlZ2lzdHJhdGlvbk5hbWU7XG4gICAgdmFyIGxpc3RlbmVyID0gZ2V0TGlz
dGVuZXIoaW5zdCwgcmVnaXN0cmF0aW9uTmFtZSk7XG4gICAgaWYgKGxpc3RlbmVyKSB7XG4gICAg
ICBldmVudC5fZGlzcGF0Y2hMaXN0ZW5lcnMgPSBhY2N1bXVsYXRlSW50byhldmVudC5fZGlzcGF0
Y2hMaXN0ZW5lcnMsIGxpc3RlbmVyKTtcbiAgICAgIGV2ZW50Ll9kaXNwYXRjaEluc3RhbmNlcyA9
IGFjY3VtdWxhdGVJbnRvKGV2ZW50Ll9kaXNwYXRjaEluc3RhbmNlcywgaW5zdCk7XG4gICAgfVxu
ICB9XG59XG5cbi8qKlxuICogQWNjdW11bGF0ZXMgZGlzcGF0Y2hlcyBvbiBhbiBgU3ludGhldGlj
RXZlbnRgLCBidXQgb25seSBmb3IgdGhlXG4gKiBgZGlzcGF0Y2hNYXJrZXJgLlxuICogQHBhcmFt
IHtTeW50aGV0aWNFdmVudH0gZXZlbnRcbiAqL1xuZnVuY3Rpb24gYWNjdW11bGF0ZURpcmVjdERp
c3BhdGNoZXNTaW5nbGUoZXZlbnQpIHtcbiAgaWYgKGV2ZW50ICYmIGV2ZW50LmRpc3BhdGNoQ29u
ZmlnLnJlZ2lzdHJhdGlvbk5hbWUpIHtcbiAgICBhY2N1bXVsYXRlRGlzcGF0Y2hlcyhldmVudC5f
dGFyZ2V0SW5zdCwgbnVsbCwgZXZlbnQpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGFjY3VtdWxhdGVU
d29QaGFzZURpc3BhdGNoZXMoZXZlbnRzKSB7XG4gIGZvckVhY2hBY2N1bXVsYXRlZChldmVudHMs
IGFjY3VtdWxhdGVUd29QaGFzZURpc3BhdGNoZXNTaW5nbGUpO1xufVxuXG5mdW5jdGlvbiBhY2N1
bXVsYXRlVHdvUGhhc2VEaXNwYXRjaGVzU2tpcFRhcmdldChldmVudHMpIHtcbiAgZm9yRWFjaEFj
Y3VtdWxhdGVkKGV2ZW50cywgYWNjdW11bGF0ZVR3b1BoYXNlRGlzcGF0Y2hlc1NpbmdsZVNraXBU
YXJnZXQpO1xufVxuXG5mdW5jdGlvbiBhY2N1bXVsYXRlRW50ZXJMZWF2ZURpc3BhdGNoZXMobGVh
dmUsIGVudGVyLCBmcm9tLCB0bykge1xuICBFdmVudFBsdWdpblV0aWxzLnRyYXZlcnNlRW50ZXJM
ZWF2ZShmcm9tLCB0bywgYWNjdW11bGF0ZURpc3BhdGNoZXMsIGxlYXZlLCBlbnRlcik7XG59XG5c
bmZ1bmN0aW9uIGFjY3VtdWxhdGVEaXJlY3REaXNwYXRjaGVzKGV2ZW50cykge1xuICBmb3JFYWNo
QWNjdW11bGF0ZWQoZXZlbnRzLCBhY2N1bXVsYXRlRGlyZWN0RGlzcGF0Y2hlc1NpbmdsZSk7XG59
XG5cbi8qKlxuICogQSBzbWFsbCBzZXQgb2YgcHJvcGFnYXRpb24gcGF0dGVybnMsIGVhY2ggb2Yg
d2hpY2ggd2lsbCBhY2NlcHQgYSBzbWFsbCBhbW91bnRcbiAqIG9mIGluZm9ybWF0aW9uLCBhbmQg
Z2VuZXJhdGUgYSBzZXQgb2YgXCJkaXNwYXRjaCByZWFkeSBldmVudCBvYmplY3RzXCIgLSB3aGlj
aFxuICogYXJlIHNldHMgb2YgZXZlbnRzIHRoYXQgaGF2ZSBhbHJlYWR5IGJlZW4gYW5ub3RhdGVk
IHdpdGggYSBzZXQgb2YgZGlzcGF0Y2hlZFxuICogbGlzdGVuZXIgZnVuY3Rpb25zL2lkcy4gVGhl
IEFQSSBpcyBkZXNpZ25lZCB0aGlzIHdheSB0byBkaXNjb3VyYWdlIHRoZXNlXG4gKiBwcm9wYWdh
dGlvbiBzdHJhdGVnaWVzIGZyb20gYWN0dWFsbHkgZXhlY3V0aW5nIHRoZSBkaXNwYXRjaGVzLCBz
aW5jZSB3ZVxuICogYWx3YXlzIHdhbnQgdG8gY29sbGVjdCB0aGUgZW50aXJlIHNldCBvZiBkaXNw
YXRjaGVzIGJlZm9yZSBleGVjdXRpbmcgZXZlbnQgYVxuICogc2luZ2xlIG9uZS5cbiAqXG4gKiBA
Y29uc3RydWN0b3IgRXZlbnRQcm9wYWdhdG9yc1xuICovXG52YXIgRXZlbnRQcm9wYWdhdG9ycyA9
IHtcbiAgYWNjdW11bGF0ZVR3b1BoYXNlRGlzcGF0Y2hlczogYWNjdW11bGF0ZVR3b1BoYXNlRGlz
cGF0Y2hlcyxcbiAgYWNjdW11bGF0ZVR3b1BoYXNlRGlzcGF0Y2hlc1NraXBUYXJnZXQ6IGFjY3Vt
dWxhdGVUd29QaGFzZURpc3BhdGNoZXNTa2lwVGFyZ2V0LFxuICBhY2N1bXVsYXRlRGlyZWN0RGlz
cGF0Y2hlczogYWNjdW11bGF0ZURpcmVjdERpc3BhdGNoZXMsXG4gIGFjY3VtdWxhdGVFbnRlckxl
YXZlRGlzcGF0Y2hlczogYWNjdW11bGF0ZUVudGVyTGVhdmVEaXNwYXRjaGVzXG59O1xuXG5tb2R1
bGUuZXhwb3J0cyA9IEV2ZW50UHJvcGFnYXRvcnM7XG5cblxuLyoqKioqKioqKioqKioqKioqXG4g
KiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3QtZG9tL2xpYi9FdmVudFByb3BhZ2F0b3Jz
LmpzXG4gKiogbW9kdWxlIGlkID0gMjBcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8q
KlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0
aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhl
IHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRc
biAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4g
dGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbi8qKlxuICog
YFJlYWN0SW5zdGFuY2VNYXBgIG1haW50YWlucyBhIG1hcHBpbmcgZnJvbSBhIHB1YmxpYyBmYWNp
bmcgc3RhdGVmdWxcbiAqIGluc3RhbmNlIChrZXkpIGFuZCB0aGUgaW50ZXJuYWwgcmVwcmVzZW50
YXRpb24gKHZhbHVlKS4gVGhpcyBhbGxvd3MgcHVibGljXG4gKiBtZXRob2RzIHRvIGFjY2VwdCB0
aGUgdXNlciBmYWNpbmcgaW5zdGFuY2UgYXMgYW4gYXJndW1lbnQgYW5kIG1hcCB0aGVtIGJhY2tc
biAqIHRvIGludGVybmFsIG1ldGhvZHMuXG4gKi9cblxuLy8gVE9ETzogUmVwbGFjZSB0aGlzIHdp
dGggRVM2OiB2YXIgUmVhY3RJbnN0YW5jZU1hcCA9IG5ldyBNYXAoKTtcblxudmFyIFJlYWN0SW5z
dGFuY2VNYXAgPSB7XG4gIC8qKlxuICAgKiBUaGlzIEFQSSBzaG91bGQgYmUgY2FsbGVkIGBkZWxl
dGVgIGJ1dCB3ZSdkIGhhdmUgdG8gbWFrZSBzdXJlIHRvIGFsd2F5c1xuICAgKiB0cmFuc2Zvcm0g
dGhlc2UgdG8gc3RyaW5ncyBmb3IgSUUgc3VwcG9ydC4gV2hlbiB0aGlzIHRyYW5zZm9ybSBpcyBm
dWxseVxuICAgKiBzdXBwb3J0ZWQgd2UgY2FuIHJlbmFtZSBpdC5cbiAgICovXG4gIHJlbW92ZTog
ZnVuY3Rpb24gKGtleSkge1xuICAgIGtleS5fcmVhY3RJbnRlcm5hbEluc3RhbmNlID0gdW5kZWZp
bmVkO1xuICB9LFxuXG4gIGdldDogZnVuY3Rpb24gKGtleSkge1xuICAgIHJldHVybiBrZXkuX3Jl
YWN0SW50ZXJuYWxJbnN0YW5jZTtcbiAgfSxcblxuICBoYXM6IGZ1bmN0aW9uIChrZXkpIHtcbiAg
ICByZXR1cm4ga2V5Ll9yZWFjdEludGVybmFsSW5zdGFuY2UgIT09IHVuZGVmaW5lZDtcbiAgfSxc
blxuICBzZXQ6IGZ1bmN0aW9uIChrZXksIHZhbHVlKSB7XG4gICAga2V5Ll9yZWFjdEludGVybmFs
SW5zdGFuY2UgPSB2YWx1ZTtcbiAgfVxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdEluc3Rh
bmNlTWFwO1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiog
Li9+L3JlYWN0LWRvbS9saWIvUmVhY3RJbnN0YW5jZU1hcC5qc1xuICoqIG1vZHVsZSBpZCA9IDIx
XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLXBy
ZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRo
aXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZv
dW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlz
IHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNh
biBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAq
XG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgU3ludGhldGljRXZlbnQgPSByZXF1aXJlKCcu
L1N5bnRoZXRpY0V2ZW50Jyk7XG5cbnZhciBnZXRFdmVudFRhcmdldCA9IHJlcXVpcmUoJy4vZ2V0
RXZlbnRUYXJnZXQnKTtcblxuLyoqXG4gKiBAaW50ZXJmYWNlIFVJRXZlbnRcbiAqIEBzZWUgaHR0
cDovL3d3dy53My5vcmcvVFIvRE9NLUxldmVsLTMtRXZlbnRzL1xuICovXG52YXIgVUlFdmVudElu
dGVyZmFjZSA9IHtcbiAgdmlldzogZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgaWYgKGV2ZW50LnZp
ZXcpIHtcbiAgICAgIHJldHVybiBldmVudC52aWV3O1xuICAgIH1cblxuICAgIHZhciB0YXJnZXQg
PSBnZXRFdmVudFRhcmdldChldmVudCk7XG4gICAgaWYgKHRhcmdldC53aW5kb3cgPT09IHRhcmdl
dCkge1xuICAgICAgLy8gdGFyZ2V0IGlzIGEgd2luZG93IG9iamVjdFxuICAgICAgcmV0dXJuIHRh
cmdldDtcbiAgICB9XG5cbiAgICB2YXIgZG9jID0gdGFyZ2V0Lm93bmVyRG9jdW1lbnQ7XG4gICAg
Ly8gVE9ETzogRmlndXJlIG91dCB3aHkgYG93bmVyRG9jdW1lbnRgIGlzIHNvbWV0aW1lcyB1bmRl
ZmluZWQgaW4gSUU4LlxuICAgIGlmIChkb2MpIHtcbiAgICAgIHJldHVybiBkb2MuZGVmYXVsdFZp
ZXcgfHwgZG9jLnBhcmVudFdpbmRvdztcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHdpbmRv
dztcbiAgICB9XG4gIH0sXG4gIGRldGFpbDogZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgcmV0dXJu
IGV2ZW50LmRldGFpbCB8fCAwO1xuICB9XG59O1xuXG4vKipcbiAqIEBwYXJhbSB7b2JqZWN0fSBk
aXNwYXRjaENvbmZpZyBDb25maWd1cmF0aW9uIHVzZWQgdG8gZGlzcGF0Y2ggdGhpcyBldmVudC5c
biAqIEBwYXJhbSB7c3RyaW5nfSBkaXNwYXRjaE1hcmtlciBNYXJrZXIgaWRlbnRpZnlpbmcgdGhl
IGV2ZW50IHRhcmdldC5cbiAqIEBwYXJhbSB7b2JqZWN0fSBuYXRpdmVFdmVudCBOYXRpdmUgYnJv
d3NlciBldmVudC5cbiAqIEBleHRlbmRzIHtTeW50aGV0aWNFdmVudH1cbiAqL1xuZnVuY3Rpb24g
U3ludGhldGljVUlFdmVudChkaXNwYXRjaENvbmZpZywgZGlzcGF0Y2hNYXJrZXIsIG5hdGl2ZUV2
ZW50LCBuYXRpdmVFdmVudFRhcmdldCkge1xuICByZXR1cm4gU3ludGhldGljRXZlbnQuY2FsbCh0
aGlzLCBkaXNwYXRjaENvbmZpZywgZGlzcGF0Y2hNYXJrZXIsIG5hdGl2ZUV2ZW50LCBuYXRpdmVF
dmVudFRhcmdldCk7XG59XG5cblN5bnRoZXRpY0V2ZW50LmF1Z21lbnRDbGFzcyhTeW50aGV0aWNV
SUV2ZW50LCBVSUV2ZW50SW50ZXJmYWNlKTtcblxubW9kdWxlLmV4cG9ydHMgPSBTeW50aGV0aWNV
SUV2ZW50O1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiog
Li9+L3JlYWN0LWRvbS9saWIvU3ludGhldGljVUlFdmVudC5qc1xuICoqIG1vZHVsZSBpZCA9IDIy
XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAx
My1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4g
KiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5z
ZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2Yg
dGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0
cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3Rvcnku
XG4gKlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIGVtcHR5T2JqZWN0ID0ge307XG5cbmlm
IChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIE9iamVjdC5mcmVl
emUoZW1wdHlPYmplY3QpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGVtcHR5T2JqZWN0O1xuXG5c
bi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L2ZianMvbGli
L2VtcHR5T2JqZWN0LmpzXG4gKiogbW9kdWxlIGlkID0gMjRcbiAqKiBtb2R1bGUgY2h1bmtzID0g
MFxuICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5c
biAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNl
bnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNF
IGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0
aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRF
TlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7
XG5cbnZhciBfYXNzaWduID0gcmVxdWlyZSgnb2JqZWN0LWFzc2lnbicpO1xuXG52YXIgRXZlbnRQ
bHVnaW5SZWdpc3RyeSA9IHJlcXVpcmUoJy4vRXZlbnRQbHVnaW5SZWdpc3RyeScpO1xudmFyIFJl
YWN0RXZlbnRFbWl0dGVyTWl4aW4gPSByZXF1aXJlKCcuL1JlYWN0RXZlbnRFbWl0dGVyTWl4aW4n
KTtcbnZhciBWaWV3cG9ydE1ldHJpY3MgPSByZXF1aXJlKCcuL1ZpZXdwb3J0TWV0cmljcycpO1xu
XG52YXIgZ2V0VmVuZG9yUHJlZml4ZWRFdmVudE5hbWUgPSByZXF1aXJlKCcuL2dldFZlbmRvclBy
ZWZpeGVkRXZlbnROYW1lJyk7XG52YXIgaXNFdmVudFN1cHBvcnRlZCA9IHJlcXVpcmUoJy4vaXNF
dmVudFN1cHBvcnRlZCcpO1xuXG4vKipcbiAqIFN1bW1hcnkgb2YgYFJlYWN0QnJvd3NlckV2ZW50
RW1pdHRlcmAgZXZlbnQgaGFuZGxpbmc6XG4gKlxuICogIC0gVG9wLWxldmVsIGRlbGVnYXRpb24g
aXMgdXNlZCB0byB0cmFwIG1vc3QgbmF0aXZlIGJyb3dzZXIgZXZlbnRzLiBUaGlzXG4gKiAgICBt
YXkgb25seSBvY2N1ciBpbiB0aGUgbWFpbiB0aHJlYWQgYW5kIGlzIHRoZSByZXNwb25zaWJpbGl0
eSBvZlxuICogICAgUmVhY3RFdmVudExpc3RlbmVyLCB3aGljaCBpcyBpbmplY3RlZCBhbmQgY2Fu
IHRoZXJlZm9yZSBzdXBwb3J0IHBsdWdnYWJsZVxuICogICAgZXZlbnQgc291cmNlcy4gVGhpcyBp
cyB0aGUgb25seSB3b3JrIHRoYXQgb2NjdXJzIGluIHRoZSBtYWluIHRocmVhZC5cbiAqXG4gKiAg
LSBXZSBub3JtYWxpemUgYW5kIGRlLWR1cGxpY2F0ZSBldmVudHMgdG8gYWNjb3VudCBmb3IgYnJv
d3NlciBxdWlya3MuIFRoaXNcbiAqICAgIG1heSBiZSBkb25lIGluIHRoZSB3b3JrZXIgdGhyZWFk
LlxuICpcbiAqICAtIEZvcndhcmQgdGhlc2UgbmF0aXZlIGV2ZW50cyAod2l0aCB0aGUgYXNzb2Np
YXRlZCB0b3AtbGV2ZWwgdHlwZSB1c2VkIHRvXG4gKiAgICB0cmFwIGl0KSB0byBgRXZlbnRQbHVn
aW5IdWJgLCB3aGljaCBpbiB0dXJuIHdpbGwgYXNrIHBsdWdpbnMgaWYgdGhleSB3YW50XG4gKiAg
ICB0byBleHRyYWN0IGFueSBzeW50aGV0aWMgZXZlbnRzLlxuICpcbiAqICAtIFRoZSBgRXZlbnRQ
bHVnaW5IdWJgIHdpbGwgdGhlbiBwcm9jZXNzIGVhY2ggZXZlbnQgYnkgYW5ub3RhdGluZyB0aGVt
IHdpdGhcbiAqICAgIFwiZGlzcGF0Y2hlc1wiLCBhIHNlcXVlbmNlIG9mIGxpc3RlbmVycyBhbmQg
SURzIHRoYXQgY2FyZSBhYm91dCB0aGF0IGV2ZW50LlxuICpcbiAqICAtIFRoZSBgRXZlbnRQbHVn
aW5IdWJgIHRoZW4gZGlzcGF0Y2hlcyB0aGUgZXZlbnRzLlxuICpcbiAqIE92ZXJ2aWV3IG9mIFJl
YWN0IGFuZCB0aGUgZXZlbnQgc3lzdGVtOlxuICpcbiAqICstLS0tLS0tLS0tLS0rICAgIC5cbiAq
IHwgICAgRE9NICAgICB8ICAgIC5cbiAqICstLS0tLS0tLS0tLS0rICAgIC5cbiAqICAgICAgIHwg
ICAgICAgICAgIC5cbiAqICAgICAgIHYgICAgICAgICAgIC5cbiAqICstLS0tLS0tLS0tLS0rICAg
IC5cbiAqIHwgUmVhY3RFdmVudCB8ICAgIC5cbiAqIHwgIExpc3RlbmVyICB8ICAgIC5cbiAqICst
LS0tLS0tLS0tLS0rICAgIC4gICAgICAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tK1xu
ICogICAgICAgfCAgICAgICAgICAgLiAgICAgICAgICAgICAgICstLS0tLS0tLSt8U2ltcGxlRXZl
bnR8XG4gKiAgICAgICB8ICAgICAgICAgICAuICAgICAgICAgICAgICAgfCAgICAgICAgIHxQbHVn
aW4gICAgIHxcbiAqICstLS0tLXwtLS0tLS0rICAgIC4gICAgICAgICAgICAgICB2ICAgICAgICAg
Ky0tLS0tLS0tLS0tK1xuICogfCAgICAgfCAgICAgIHwgICAgLiAgICArLS0tLS0tLS0tLS0tLS0r
ICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tK1xuICogfCAgICAgKy0tLS0tLS0tLS0t
Li0tLT58RXZlbnRQbHVnaW5IdWJ8ICAgICAgICAgICAgICAgICAgICB8ICAgIEV2ZW50ICAgfFxu
ICogfCAgICAgICAgICAgIHwgICAgLiAgICB8ICAgICAgICAgICAgICB8ICAgICArLS0tLS0tLS0t
LS0rICB8IFByb3BhZ2F0b3JzfFxuICogfCBSZWFjdEV2ZW50IHwgICAgLiAgICB8ICAgICAgICAg
ICAgICB8ICAgICB8VGFwRXZlbnQgICB8ICB8LS0tLS0tLS0tLS0tfFxuICogfCAgRW1pdHRlciAg
IHwgICAgLiAgICB8ICAgICAgICAgICAgICB8PC0tLSt8UGx1Z2luICAgICB8ICB8b3RoZXIgcGx1
Z2lufFxuICogfCAgICAgICAgICAgIHwgICAgLiAgICB8ICAgICAgICAgICAgICB8ICAgICArLS0t
LS0tLS0tLS0rICB8ICB1dGlsaXRpZXMgfFxuICogfCAgICAgKy0tLS0tLS0tLS0tLi0tLT58ICAg
ICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tK1xuICogfCAgICAg
fCAgICAgIHwgICAgLiAgICArLS0tLS0tLS0tLS0tLS0rXG4gKiArLS0tLS18LS0tLS0tKyAgICAu
ICAgICAgICAgICAgICAgIF4gICAgICAgICstLS0tLS0tLS0tLStcbiAqICAgICAgIHwgICAgICAg
ICAgIC4gICAgICAgICAgICAgICAgfCAgICAgICAgfEVudGVyL0xlYXZlfFxuICogICAgICAgKyAg
ICAgICAgICAgLiAgICAgICAgICAgICAgICArLS0tLS0tLSt8UGx1Z2luICAgICB8XG4gKiArLS0t
LS0tLS0tLS0tLSsgICAuICAgICAgICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLStcbiAq
IHwgYXBwbGljYXRpb24gfCAgIC5cbiAqIHwtLS0tLS0tLS0tLS0tfCAgIC5cbiAqIHwgICAgICAg
ICAgICAgfCAgIC5cbiAqIHwgICAgICAgICAgICAgfCAgIC5cbiAqICstLS0tLS0tLS0tLS0tKyAg
IC5cbiAqICAgICAgICAgICAgICAgICAgIC5cbiAqICAgIFJlYWN0IENvcmUgICAgIC4gIEdlbmVy
YWwgUHVycG9zZSBFdmVudCBQbHVnaW4gU3lzdGVtXG4gKi9cblxudmFyIGhhc0V2ZW50UGFnZVhZ
O1xudmFyIGFscmVhZHlMaXN0ZW5pbmdUbyA9IHt9O1xudmFyIGlzTW9uaXRvcmluZ1Njcm9sbFZh
bHVlID0gZmFsc2U7XG52YXIgcmVhY3RUb3BMaXN0ZW5lcnNDb3VudGVyID0gMDtcblxuLy8gRm9y
IGV2ZW50cyBsaWtlICdzdWJtaXQnIHdoaWNoIGRvbid0IGNvbnNpc3RlbnRseSBidWJibGUgKHdo
aWNoIHdlIHRyYXAgYXQgYVxuLy8gbG93ZXIgbm9kZSB0aGFuIGBkb2N1bWVudGApLCBiaW5kaW5n
IGF0IGBkb2N1bWVudGAgd291bGQgY2F1c2UgZHVwbGljYXRlXG4vLyBldmVudHMgc28gd2UgZG9u
J3QgaW5jbHVkZSB0aGVtIGhlcmVcbnZhciB0b3BFdmVudE1hcHBpbmcgPSB7XG4gIHRvcEFib3J0
OiAnYWJvcnQnLFxuICB0b3BBbmltYXRpb25FbmQ6IGdldFZlbmRvclByZWZpeGVkRXZlbnROYW1l
KCdhbmltYXRpb25lbmQnKSB8fCAnYW5pbWF0aW9uZW5kJyxcbiAgdG9wQW5pbWF0aW9uSXRlcmF0
aW9uOiBnZXRWZW5kb3JQcmVmaXhlZEV2ZW50TmFtZSgnYW5pbWF0aW9uaXRlcmF0aW9uJykgfHwg
J2FuaW1hdGlvbml0ZXJhdGlvbicsXG4gIHRvcEFuaW1hdGlvblN0YXJ0OiBnZXRWZW5kb3JQcmVm
aXhlZEV2ZW50TmFtZSgnYW5pbWF0aW9uc3RhcnQnKSB8fCAnYW5pbWF0aW9uc3RhcnQnLFxuICB0
b3BCbHVyOiAnYmx1cicsXG4gIHRvcENhblBsYXk6ICdjYW5wbGF5JyxcbiAgdG9wQ2FuUGxheVRo
cm91Z2g6ICdjYW5wbGF5dGhyb3VnaCcsXG4gIHRvcENoYW5nZTogJ2NoYW5nZScsXG4gIHRvcENs
aWNrOiAnY2xpY2snLFxuICB0b3BDb21wb3NpdGlvbkVuZDogJ2NvbXBvc2l0aW9uZW5kJyxcbiAg
dG9wQ29tcG9zaXRpb25TdGFydDogJ2NvbXBvc2l0aW9uc3RhcnQnLFxuICB0b3BDb21wb3NpdGlv
blVwZGF0ZTogJ2NvbXBvc2l0aW9udXBkYXRlJyxcbiAgdG9wQ29udGV4dE1lbnU6ICdjb250ZXh0
bWVudScsXG4gIHRvcENvcHk6ICdjb3B5JyxcbiAgdG9wQ3V0OiAnY3V0JyxcbiAgdG9wRG91Ymxl
Q2xpY2s6ICdkYmxjbGljaycsXG4gIHRvcERyYWc6ICdkcmFnJyxcbiAgdG9wRHJhZ0VuZDogJ2Ry
YWdlbmQnLFxuICB0b3BEcmFnRW50ZXI6ICdkcmFnZW50ZXInLFxuICB0b3BEcmFnRXhpdDogJ2Ry
YWdleGl0JyxcbiAgdG9wRHJhZ0xlYXZlOiAnZHJhZ2xlYXZlJyxcbiAgdG9wRHJhZ092ZXI6ICdk
cmFnb3ZlcicsXG4gIHRvcERyYWdTdGFydDogJ2RyYWdzdGFydCcsXG4gIHRvcERyb3A6ICdkcm9w
JyxcbiAgdG9wRHVyYXRpb25DaGFuZ2U6ICdkdXJhdGlvbmNoYW5nZScsXG4gIHRvcEVtcHRpZWQ6
ICdlbXB0aWVkJyxcbiAgdG9wRW5jcnlwdGVkOiAnZW5jcnlwdGVkJyxcbiAgdG9wRW5kZWQ6ICdl
bmRlZCcsXG4gIHRvcEVycm9yOiAnZXJyb3InLFxuICB0b3BGb2N1czogJ2ZvY3VzJyxcbiAgdG9w
SW5wdXQ6ICdpbnB1dCcsXG4gIHRvcEtleURvd246ICdrZXlkb3duJyxcbiAgdG9wS2V5UHJlc3M6
ICdrZXlwcmVzcycsXG4gIHRvcEtleVVwOiAna2V5dXAnLFxuICB0b3BMb2FkZWREYXRhOiAnbG9h
ZGVkZGF0YScsXG4gIHRvcExvYWRlZE1ldGFkYXRhOiAnbG9hZGVkbWV0YWRhdGEnLFxuICB0b3BM
b2FkU3RhcnQ6ICdsb2Fkc3RhcnQnLFxuICB0b3BNb3VzZURvd246ICdtb3VzZWRvd24nLFxuICB0
b3BNb3VzZU1vdmU6ICdtb3VzZW1vdmUnLFxuICB0b3BNb3VzZU91dDogJ21vdXNlb3V0JyxcbiAg
dG9wTW91c2VPdmVyOiAnbW91c2VvdmVyJyxcbiAgdG9wTW91c2VVcDogJ21vdXNldXAnLFxuICB0
b3BQYXN0ZTogJ3Bhc3RlJyxcbiAgdG9wUGF1c2U6ICdwYXVzZScsXG4gIHRvcFBsYXk6ICdwbGF5
JyxcbiAgdG9wUGxheWluZzogJ3BsYXlpbmcnLFxuICB0b3BQcm9ncmVzczogJ3Byb2dyZXNzJyxc
biAgdG9wUmF0ZUNoYW5nZTogJ3JhdGVjaGFuZ2UnLFxuICB0b3BTY3JvbGw6ICdzY3JvbGwnLFxu
ICB0b3BTZWVrZWQ6ICdzZWVrZWQnLFxuICB0b3BTZWVraW5nOiAnc2Vla2luZycsXG4gIHRvcFNl
bGVjdGlvbkNoYW5nZTogJ3NlbGVjdGlvbmNoYW5nZScsXG4gIHRvcFN0YWxsZWQ6ICdzdGFsbGVk
JyxcbiAgdG9wU3VzcGVuZDogJ3N1c3BlbmQnLFxuICB0b3BUZXh0SW5wdXQ6ICd0ZXh0SW5wdXQn
LFxuICB0b3BUaW1lVXBkYXRlOiAndGltZXVwZGF0ZScsXG4gIHRvcFRvdWNoQ2FuY2VsOiAndG91
Y2hjYW5jZWwnLFxuICB0b3BUb3VjaEVuZDogJ3RvdWNoZW5kJyxcbiAgdG9wVG91Y2hNb3ZlOiAn
dG91Y2htb3ZlJyxcbiAgdG9wVG91Y2hTdGFydDogJ3RvdWNoc3RhcnQnLFxuICB0b3BUcmFuc2l0
aW9uRW5kOiBnZXRWZW5kb3JQcmVmaXhlZEV2ZW50TmFtZSgndHJhbnNpdGlvbmVuZCcpIHx8ICd0
cmFuc2l0aW9uZW5kJyxcbiAgdG9wVm9sdW1lQ2hhbmdlOiAndm9sdW1lY2hhbmdlJyxcbiAgdG9w
V2FpdGluZzogJ3dhaXRpbmcnLFxuICB0b3BXaGVlbDogJ3doZWVsJ1xufTtcblxuLyoqXG4gKiBU
byBlbnN1cmUgbm8gY29uZmxpY3RzIHdpdGggb3RoZXIgcG90ZW50aWFsIFJlYWN0IGluc3RhbmNl
cyBvbiB0aGUgcGFnZVxuICovXG52YXIgdG9wTGlzdGVuZXJzSURLZXkgPSAnX3JlYWN0TGlzdGVu
ZXJzSUQnICsgU3RyaW5nKE1hdGgucmFuZG9tKCkpLnNsaWNlKDIpO1xuXG5mdW5jdGlvbiBnZXRM
aXN0ZW5pbmdGb3JEb2N1bWVudChtb3VudEF0KSB7XG4gIC8vIEluIElFOCwgYG1vdW50QXRgIGlz
IGEgaG9zdCBvYmplY3QgYW5kIGRvZXNuJ3QgaGF2ZSBgaGFzT3duUHJvcGVydHlgXG4gIC8vIGRp
cmVjdGx5LlxuICBpZiAoIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChtb3Vu
dEF0LCB0b3BMaXN0ZW5lcnNJREtleSkpIHtcbiAgICBtb3VudEF0W3RvcExpc3RlbmVyc0lES2V5
XSA9IHJlYWN0VG9wTGlzdGVuZXJzQ291bnRlcisrO1xuICAgIGFscmVhZHlMaXN0ZW5pbmdUb1tt
b3VudEF0W3RvcExpc3RlbmVyc0lES2V5XV0gPSB7fTtcbiAgfVxuICByZXR1cm4gYWxyZWFkeUxp
c3RlbmluZ1RvW21vdW50QXRbdG9wTGlzdGVuZXJzSURLZXldXTtcbn1cblxuLyoqXG4gKiBgUmVh
Y3RCcm93c2VyRXZlbnRFbWl0dGVyYCBpcyB1c2VkIHRvIGF0dGFjaCB0b3AtbGV2ZWwgZXZlbnQg
bGlzdGVuZXJzLiBGb3JcbiAqIGV4YW1wbGU6XG4gKlxuICogICBFdmVudFBsdWdpbkh1Yi5wdXRM
aXN0ZW5lcignbXlJRCcsICdvbkNsaWNrJywgbXlGdW5jdGlvbik7XG4gKlxuICogVGhpcyB3b3Vs
ZCBhbGxvY2F0ZSBhIFwicmVnaXN0cmF0aW9uXCIgb2YgYCgnb25DbGljaycsIG15RnVuY3Rpb24p
YCBvbiAnbXlJRCcuXG4gKlxuICogQGludGVybmFsXG4gKi9cbnZhciBSZWFjdEJyb3dzZXJFdmVu
dEVtaXR0ZXIgPSBfYXNzaWduKHt9LCBSZWFjdEV2ZW50RW1pdHRlck1peGluLCB7XG4gIC8qKlxu
ICAgKiBJbmplY3RhYmxlIGV2ZW50IGJhY2tlbmRcbiAgICovXG4gIFJlYWN0RXZlbnRMaXN0ZW5l
cjogbnVsbCxcblxuICBpbmplY3Rpb246IHtcbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge29iamVj
dH0gUmVhY3RFdmVudExpc3RlbmVyXG4gICAgICovXG4gICAgaW5qZWN0UmVhY3RFdmVudExpc3Rl
bmVyOiBmdW5jdGlvbiAoUmVhY3RFdmVudExpc3RlbmVyKSB7XG4gICAgICBSZWFjdEV2ZW50TGlz
dGVuZXIuc2V0SGFuZGxlVG9wTGV2ZWwoUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLmhhbmRsZVRv
cExldmVsKTtcbiAgICAgIFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlci5SZWFjdEV2ZW50TGlzdGVu
ZXIgPSBSZWFjdEV2ZW50TGlzdGVuZXI7XG4gICAgfVxuICB9LFxuXG4gIC8qKlxuICAgKiBTZXRz
IHdoZXRoZXIgb3Igbm90IGFueSBjcmVhdGVkIGNhbGxiYWNrcyBzaG91bGQgYmUgZW5hYmxlZC5c
biAgICpcbiAgICogQHBhcmFtIHtib29sZWFufSBlbmFibGVkIFRydWUgaWYgY2FsbGJhY2tzIHNo
b3VsZCBiZSBlbmFibGVkLlxuICAgKi9cbiAgc2V0RW5hYmxlZDogZnVuY3Rpb24gKGVuYWJsZWQp
IHtcbiAgICBpZiAoUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLlJlYWN0RXZlbnRMaXN0ZW5lcikg
e1xuICAgICAgUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLlJlYWN0RXZlbnRMaXN0ZW5lci5zZXRF
bmFibGVkKGVuYWJsZWQpO1xuICAgIH1cbiAgfSxcblxuICAvKipcbiAgICogQHJldHVybiB7Ym9v
bGVhbn0gVHJ1ZSBpZiBjYWxsYmFja3MgYXJlIGVuYWJsZWQuXG4gICAqL1xuICBpc0VuYWJsZWQ6
IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gISEoUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLlJl
YWN0RXZlbnRMaXN0ZW5lciAmJiBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIuUmVhY3RFdmVudExp
c3RlbmVyLmlzRW5hYmxlZCgpKTtcbiAgfSxcblxuICAvKipcbiAgICogV2UgbGlzdGVuIGZvciBi
dWJibGVkIHRvdWNoIGV2ZW50cyBvbiB0aGUgZG9jdW1lbnQgb2JqZWN0LlxuICAgKlxuICAgKiBG
aXJlZm94IHY4LjAxIChhbmQgcG9zc2libHkgb3RoZXJzKSBleGhpYml0ZWQgc3RyYW5nZSBiZWhh
dmlvciB3aGVuXG4gICAqIG1vdW50aW5nIGBvbm1vdXNlbW92ZWAgZXZlbnRzIGF0IHNvbWUgbm9k
ZSB0aGF0IHdhcyBub3QgdGhlIGRvY3VtZW50XG4gICAqIGVsZW1lbnQuIFRoZSBzeW1wdG9tcyB3
ZXJlIHRoYXQgaWYgeW91ciBtb3VzZSBpcyBub3QgbW92aW5nIG92ZXIgc29tZXRoaW5nXG4gICAq
IGNvbnRhaW5lZCB3aXRoaW4gdGhhdCBtb3VudCBwb2ludCAoZm9yIGV4YW1wbGUgb24gdGhlIGJh
Y2tncm91bmQpIHRoZVxuICAgKiB0b3AtbGV2ZWwgbGlzdGVuZXJzIGZvciBgb25tb3VzZW1vdmVg
IHdvbid0IGJlIGNhbGxlZC4gSG93ZXZlciwgaWYgeW91XG4gICAqIHJlZ2lzdGVyIHRoZSBgbW91
c2Vtb3ZlYCBvbiB0aGUgZG9jdW1lbnQgb2JqZWN0LCB0aGVuIGl0IHdpbGwgb2YgY291cnNlXG4g
ICAqIGNhdGNoIGFsbCBgbW91c2Vtb3ZlYHMuIFRoaXMgYWxvbmcgd2l0aCBpT1MgcXVpcmtzLCBq
dXN0aWZpZXMgcmVzdHJpY3RpbmdcbiAgICogdG9wLWxldmVsIGxpc3RlbmVycyB0byB0aGUgZG9j
dW1lbnQgb2JqZWN0IG9ubHksIGF0IGxlYXN0IGZvciB0aGVzZVxuICAgKiBtb3ZlbWVudCB0eXBl
cyBvZiBldmVudHMgYW5kIHBvc3NpYmx5IGFsbCBldmVudHMuXG4gICAqXG4gICAqIEBzZWUgaHR0
cDovL3d3dy5xdWlya3Ntb2RlLm9yZy9ibG9nL2FyY2hpdmVzLzIwMTAvMDkvY2xpY2tfZXZlbnRf
ZGVsLmh0bWxcbiAgICpcbiAgICogQWxzbywgYGtleXVwYC9ga2V5cHJlc3NgL2BrZXlkb3duYCBk
byBub3QgYnViYmxlIHRvIHRoZSB3aW5kb3cgb24gSUUsIGJ1dFxuICAgKiB0aGV5IGJ1YmJsZSB0
byBkb2N1bWVudC5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHJlZ2lzdHJhdGlvbk5hbWUg
TmFtZSBvZiBsaXN0ZW5lciAoZS5nLiBgb25DbGlja2ApLlxuICAgKiBAcGFyYW0ge29iamVjdH0g
Y29udGVudERvY3VtZW50SGFuZGxlIERvY3VtZW50IHdoaWNoIG93bnMgdGhlIGNvbnRhaW5lclxu
ICAgKi9cbiAgbGlzdGVuVG86IGZ1bmN0aW9uIChyZWdpc3RyYXRpb25OYW1lLCBjb250ZW50RG9j
dW1lbnRIYW5kbGUpIHtcbiAgICB2YXIgbW91bnRBdCA9IGNvbnRlbnREb2N1bWVudEhhbmRsZTtc
biAgICB2YXIgaXNMaXN0ZW5pbmcgPSBnZXRMaXN0ZW5pbmdGb3JEb2N1bWVudChtb3VudEF0KTtc
biAgICB2YXIgZGVwZW5kZW5jaWVzID0gRXZlbnRQbHVnaW5SZWdpc3RyeS5yZWdpc3RyYXRpb25O
YW1lRGVwZW5kZW5jaWVzW3JlZ2lzdHJhdGlvbk5hbWVdO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7
IGkgPCBkZXBlbmRlbmNpZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBkZXBlbmRlbmN5ID0g
ZGVwZW5kZW5jaWVzW2ldO1xuICAgICAgaWYgKCEoaXNMaXN0ZW5pbmcuaGFzT3duUHJvcGVydHko
ZGVwZW5kZW5jeSkgJiYgaXNMaXN0ZW5pbmdbZGVwZW5kZW5jeV0pKSB7XG4gICAgICAgIGlmIChk
ZXBlbmRlbmN5ID09PSAndG9wV2hlZWwnKSB7XG4gICAgICAgICAgaWYgKGlzRXZlbnRTdXBwb3J0
ZWQoJ3doZWVsJykpIHtcbiAgICAgICAgICAgIFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlci5SZWFj
dEV2ZW50TGlzdGVuZXIudHJhcEJ1YmJsZWRFdmVudCgndG9wV2hlZWwnLCAnd2hlZWwnLCBtb3Vu
dEF0KTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGlzRXZlbnRTdXBwb3J0ZWQoJ21vdXNld2hlZWwn
KSkge1xuICAgICAgICAgICAgUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLlJlYWN0RXZlbnRMaXN0
ZW5lci50cmFwQnViYmxlZEV2ZW50KCd0b3BXaGVlbCcsICdtb3VzZXdoZWVsJywgbW91bnRBdCk7
XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIEZpcmVmb3ggbmVlZHMgdG8gY2Fw
dHVyZSBhIGRpZmZlcmVudCBtb3VzZSBzY3JvbGwgZXZlbnQuXG4gICAgICAgICAgICAvLyBAc2Vl
IGh0dHA6Ly93d3cucXVpcmtzbW9kZS5vcmcvZG9tL2V2ZW50cy90ZXN0cy9zY3JvbGwuaHRtbFxu
ICAgICAgICAgICAgUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLlJlYWN0RXZlbnRMaXN0ZW5lci50
cmFwQnViYmxlZEV2ZW50KCd0b3BXaGVlbCcsICdET01Nb3VzZVNjcm9sbCcsIG1vdW50QXQpO1xu
ICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChkZXBlbmRlbmN5ID09PSAndG9wU2Nyb2xs
Jykge1xuICAgICAgICAgIGlmIChpc0V2ZW50U3VwcG9ydGVkKCdzY3JvbGwnLCB0cnVlKSkge1xu
ICAgICAgICAgICAgUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLlJlYWN0RXZlbnRMaXN0ZW5lci50
cmFwQ2FwdHVyZWRFdmVudCgndG9wU2Nyb2xsJywgJ3Njcm9sbCcsIG1vdW50QXQpO1xuICAgICAg
ICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIuUmVhY3RF
dmVudExpc3RlbmVyLnRyYXBCdWJibGVkRXZlbnQoJ3RvcFNjcm9sbCcsICdzY3JvbGwnLCBSZWFj
dEJyb3dzZXJFdmVudEVtaXR0ZXIuUmVhY3RFdmVudExpc3RlbmVyLldJTkRPV19IQU5ETEUpO1xu
ICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChkZXBlbmRlbmN5ID09PSAndG9wRm9jdXMn
IHx8IGRlcGVuZGVuY3kgPT09ICd0b3BCbHVyJykge1xuICAgICAgICAgIGlmIChpc0V2ZW50U3Vw
cG9ydGVkKCdmb2N1cycsIHRydWUpKSB7XG4gICAgICAgICAgICBSZWFjdEJyb3dzZXJFdmVudEVt
aXR0ZXIuUmVhY3RFdmVudExpc3RlbmVyLnRyYXBDYXB0dXJlZEV2ZW50KCd0b3BGb2N1cycsICdm
b2N1cycsIG1vdW50QXQpO1xuICAgICAgICAgICAgUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLlJl
YWN0RXZlbnRMaXN0ZW5lci50cmFwQ2FwdHVyZWRFdmVudCgndG9wQmx1cicsICdibHVyJywgbW91
bnRBdCk7XG4gICAgICAgICAgfSBlbHNlIGlmIChpc0V2ZW50U3VwcG9ydGVkKCdmb2N1c2luJykp
IHtcbiAgICAgICAgICAgIC8vIElFIGhhcyBgZm9jdXNpbmAgYW5kIGBmb2N1c291dGAgZXZlbnRz
IHdoaWNoIGJ1YmJsZS5cbiAgICAgICAgICAgIC8vIEBzZWUgaHR0cDovL3d3dy5xdWlya3Ntb2Rl
Lm9yZy9ibG9nL2FyY2hpdmVzLzIwMDgvMDQvZGVsZWdhdGluZ190aGUuaHRtbFxuICAgICAgICAg
ICAgUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLlJlYWN0RXZlbnRMaXN0ZW5lci50cmFwQnViYmxl
ZEV2ZW50KCd0b3BGb2N1cycsICdmb2N1c2luJywgbW91bnRBdCk7XG4gICAgICAgICAgICBSZWFj
dEJyb3dzZXJFdmVudEVtaXR0ZXIuUmVhY3RFdmVudExpc3RlbmVyLnRyYXBCdWJibGVkRXZlbnQo
J3RvcEJsdXInLCAnZm9jdXNvdXQnLCBtb3VudEF0KTtcbiAgICAgICAgICB9XG5cbiAgICAgICAg
ICAvLyB0byBtYWtlIHN1cmUgYmx1ciBhbmQgZm9jdXMgZXZlbnQgbGlzdGVuZXJzIGFyZSBvbmx5
IGF0dGFjaGVkIG9uY2VcbiAgICAgICAgICBpc0xpc3RlbmluZy50b3BCbHVyID0gdHJ1ZTtcbiAg
ICAgICAgICBpc0xpc3RlbmluZy50b3BGb2N1cyA9IHRydWU7XG4gICAgICAgIH0gZWxzZSBpZiAo
dG9wRXZlbnRNYXBwaW5nLmhhc093blByb3BlcnR5KGRlcGVuZGVuY3kpKSB7XG4gICAgICAgICAg
UmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLlJlYWN0RXZlbnRMaXN0ZW5lci50cmFwQnViYmxlZEV2
ZW50KGRlcGVuZGVuY3ksIHRvcEV2ZW50TWFwcGluZ1tkZXBlbmRlbmN5XSwgbW91bnRBdCk7XG4g
ICAgICAgIH1cblxuICAgICAgICBpc0xpc3RlbmluZ1tkZXBlbmRlbmN5XSA9IHRydWU7XG4gICAg
ICB9XG4gICAgfVxuICB9LFxuXG4gIHRyYXBCdWJibGVkRXZlbnQ6IGZ1bmN0aW9uICh0b3BMZXZl
bFR5cGUsIGhhbmRsZXJCYXNlTmFtZSwgaGFuZGxlKSB7XG4gICAgcmV0dXJuIFJlYWN0QnJvd3Nl
ckV2ZW50RW1pdHRlci5SZWFjdEV2ZW50TGlzdGVuZXIudHJhcEJ1YmJsZWRFdmVudCh0b3BMZXZl
bFR5cGUsIGhhbmRsZXJCYXNlTmFtZSwgaGFuZGxlKTtcbiAgfSxcblxuICB0cmFwQ2FwdHVyZWRF
dmVudDogZnVuY3Rpb24gKHRvcExldmVsVHlwZSwgaGFuZGxlckJhc2VOYW1lLCBoYW5kbGUpIHtc
biAgICByZXR1cm4gUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLlJlYWN0RXZlbnRMaXN0ZW5lci50
cmFwQ2FwdHVyZWRFdmVudCh0b3BMZXZlbFR5cGUsIGhhbmRsZXJCYXNlTmFtZSwgaGFuZGxlKTtc
biAgfSxcblxuICAvKipcbiAgICogUHJvdGVjdCBhZ2FpbnN0IGRvY3VtZW50LmNyZWF0ZUV2ZW50
KCkgcmV0dXJuaW5nIG51bGxcbiAgICogU29tZSBwb3B1cCBibG9ja2VyIGV4dGVuc2lvbnMgYXBw
ZWFyIHRvIGRvIHRoaXM6XG4gICAqIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9p
c3N1ZXMvNjg4N1xuICAgKi9cbiAgc3VwcG9ydHNFdmVudFBhZ2VYWTogZnVuY3Rpb24gKCkge1xu
ICAgIGlmICghZG9jdW1lbnQuY3JlYXRlRXZlbnQpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAg
ICB9XG4gICAgdmFyIGV2ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ01vdXNlRXZlbnQnKTtcbiAg
ICByZXR1cm4gZXYgIT0gbnVsbCAmJiAncGFnZVgnIGluIGV2O1xuICB9LFxuXG4gIC8qKlxuICAg
KiBMaXN0ZW5zIHRvIHdpbmRvdyBzY3JvbGwgYW5kIHJlc2l6ZSBldmVudHMuIFdlIGNhY2hlIHNj
cm9sbCB2YWx1ZXMgc28gdGhhdFxuICAgKiBhcHBsaWNhdGlvbiBjb2RlIGNhbiBhY2Nlc3MgdGhl
bSB3aXRob3V0IHRyaWdnZXJpbmcgcmVmbG93cy5cbiAgICpcbiAgICogVmlld3BvcnRNZXRyaWNz
IGlzIG9ubHkgdXNlZCBieSBTeW50aGV0aWNNb3VzZS9Ub3VjaEV2ZW50IGFuZCBvbmx5IHdoZW5c
biAgICogcGFnZVgvcGFnZVkgaXNuJ3Qgc3VwcG9ydGVkIChsZWdhY3kgYnJvd3NlcnMpLlxuICAg
KlxuICAgKiBOT1RFOiBTY3JvbGwgZXZlbnRzIGRvIG5vdCBidWJibGUuXG4gICAqXG4gICAqIEBz
ZWUgaHR0cDovL3d3dy5xdWlya3Ntb2RlLm9yZy9kb20vZXZlbnRzL3Njcm9sbC5odG1sXG4gICAq
L1xuICBlbnN1cmVTY3JvbGxWYWx1ZU1vbml0b3Jpbmc6IGZ1bmN0aW9uICgpIHtcbiAgICBpZiAo
aGFzRXZlbnRQYWdlWFkgPT09IHVuZGVmaW5lZCkge1xuICAgICAgaGFzRXZlbnRQYWdlWFkgPSBS
ZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIuc3VwcG9ydHNFdmVudFBhZ2VYWSgpO1xuICAgIH1cbiAg
ICBpZiAoIWhhc0V2ZW50UGFnZVhZICYmICFpc01vbml0b3JpbmdTY3JvbGxWYWx1ZSkge1xuICAg
ICAgdmFyIHJlZnJlc2ggPSBWaWV3cG9ydE1ldHJpY3MucmVmcmVzaFNjcm9sbFZhbHVlcztcbiAg
ICAgIFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlci5SZWFjdEV2ZW50TGlzdGVuZXIubW9uaXRvclNj
cm9sbFZhbHVlKHJlZnJlc2gpO1xuICAgICAgaXNNb25pdG9yaW5nU2Nyb2xsVmFsdWUgPSB0cnVl
O1xuICAgIH1cbiAgfVxufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RCcm93c2VyRXZlbnRF
bWl0dGVyO1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiog
Li9+L3JlYWN0LWRvbS9saWIvUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLmpzXG4gKiogbW9kdWxl
IGlkID0gMjVcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29weXJpZ2h0
IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4g
KlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxp
Y2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5
IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCBy
aWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0
b3J5LlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBTeW50aGV0aWNVSUV2ZW50ID0g
cmVxdWlyZSgnLi9TeW50aGV0aWNVSUV2ZW50Jyk7XG52YXIgVmlld3BvcnRNZXRyaWNzID0gcmVx
dWlyZSgnLi9WaWV3cG9ydE1ldHJpY3MnKTtcblxudmFyIGdldEV2ZW50TW9kaWZpZXJTdGF0ZSA9
IHJlcXVpcmUoJy4vZ2V0RXZlbnRNb2RpZmllclN0YXRlJyk7XG5cbi8qKlxuICogQGludGVyZmFj
ZSBNb3VzZUV2ZW50XG4gKiBAc2VlIGh0dHA6Ly93d3cudzMub3JnL1RSL0RPTS1MZXZlbC0zLUV2
ZW50cy9cbiAqL1xudmFyIE1vdXNlRXZlbnRJbnRlcmZhY2UgPSB7XG4gIHNjcmVlblg6IG51bGws
XG4gIHNjcmVlblk6IG51bGwsXG4gIGNsaWVudFg6IG51bGwsXG4gIGNsaWVudFk6IG51bGwsXG4g
IGN0cmxLZXk6IG51bGwsXG4gIHNoaWZ0S2V5OiBudWxsLFxuICBhbHRLZXk6IG51bGwsXG4gIG1l
dGFLZXk6IG51bGwsXG4gIGdldE1vZGlmaWVyU3RhdGU6IGdldEV2ZW50TW9kaWZpZXJTdGF0ZSxc
biAgYnV0dG9uOiBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAvLyBXZWJraXQsIEZpcmVmb3gsIElF
OStcbiAgICAvLyB3aGljaDogIDEgMiAzXG4gICAgLy8gYnV0dG9uOiAwIDEgMiAoc3RhbmRhcmQp
XG4gICAgdmFyIGJ1dHRvbiA9IGV2ZW50LmJ1dHRvbjtcbiAgICBpZiAoJ3doaWNoJyBpbiBldmVu
dCkge1xuICAgICAgcmV0dXJuIGJ1dHRvbjtcbiAgICB9XG4gICAgLy8gSUU8OVxuICAgIC8vIHdo
aWNoOiAgdW5kZWZpbmVkXG4gICAgLy8gYnV0dG9uOiAwIDAgMFxuICAgIC8vIGJ1dHRvbjogMSA0
IDIgKG9ubW91c2V1cClcbiAgICByZXR1cm4gYnV0dG9uID09PSAyID8gMiA6IGJ1dHRvbiA9PT0g
NCA/IDEgOiAwO1xuICB9LFxuICBidXR0b25zOiBudWxsLFxuICByZWxhdGVkVGFyZ2V0OiBmdW5j
dGlvbiAoZXZlbnQpIHtcbiAgICByZXR1cm4gZXZlbnQucmVsYXRlZFRhcmdldCB8fCAoZXZlbnQu
ZnJvbUVsZW1lbnQgPT09IGV2ZW50LnNyY0VsZW1lbnQgPyBldmVudC50b0VsZW1lbnQgOiBldmVu
dC5mcm9tRWxlbWVudCk7XG4gIH0sXG4gIC8vIFwiUHJvcHJpZXRhcnlcIiBJbnRlcmZhY2UuXG4g
IHBhZ2VYOiBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICByZXR1cm4gJ3BhZ2VYJyBpbiBldmVudCA/
IGV2ZW50LnBhZ2VYIDogZXZlbnQuY2xpZW50WCArIFZpZXdwb3J0TWV0cmljcy5jdXJyZW50U2Ny
b2xsTGVmdDtcbiAgfSxcbiAgcGFnZVk6IGZ1bmN0aW9uIChldmVudCkge1xuICAgIHJldHVybiAn
cGFnZVknIGluIGV2ZW50ID8gZXZlbnQucGFnZVkgOiBldmVudC5jbGllbnRZICsgVmlld3BvcnRN
ZXRyaWNzLmN1cnJlbnRTY3JvbGxUb3A7XG4gIH1cbn07XG5cbi8qKlxuICogQHBhcmFtIHtvYmpl
Y3R9IGRpc3BhdGNoQ29uZmlnIENvbmZpZ3VyYXRpb24gdXNlZCB0byBkaXNwYXRjaCB0aGlzIGV2
ZW50LlxuICogQHBhcmFtIHtzdHJpbmd9IGRpc3BhdGNoTWFya2VyIE1hcmtlciBpZGVudGlmeWlu
ZyB0aGUgZXZlbnQgdGFyZ2V0LlxuICogQHBhcmFtIHtvYmplY3R9IG5hdGl2ZUV2ZW50IE5hdGl2
ZSBicm93c2VyIGV2ZW50LlxuICogQGV4dGVuZHMge1N5bnRoZXRpY1VJRXZlbnR9XG4gKi9cbmZ1
bmN0aW9uIFN5bnRoZXRpY01vdXNlRXZlbnQoZGlzcGF0Y2hDb25maWcsIGRpc3BhdGNoTWFya2Vy
LCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpIHtcbiAgcmV0dXJuIFN5bnRoZXRpY1VJ
RXZlbnQuY2FsbCh0aGlzLCBkaXNwYXRjaENvbmZpZywgZGlzcGF0Y2hNYXJrZXIsIG5hdGl2ZUV2
ZW50LCBuYXRpdmVFdmVudFRhcmdldCk7XG59XG5cblN5bnRoZXRpY1VJRXZlbnQuYXVnbWVudENs
YXNzKFN5bnRoZXRpY01vdXNlRXZlbnQsIE1vdXNlRXZlbnRJbnRlcmZhY2UpO1xuXG5tb2R1bGUu
ZXhwb3J0cyA9IFN5bnRoZXRpY01vdXNlRXZlbnQ7XG5cblxuLyoqKioqKioqKioqKioqKioqXG4g
KiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3QtZG9tL2xpYi9TeW50aGV0aWNNb3VzZUV2
ZW50LmpzXG4gKiogbW9kdWxlIGlkID0gMjZcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIs
Ii8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRl
ciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4g
dGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3Jh
bnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUg
aW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIFxuICovXG5cbid1c2Ugc3RyaWN0Jztcblxu
dmFyIF9wcm9kSW52YXJpYW50ID0gcmVxdWlyZSgnLi9yZWFjdFByb2RJbnZhcmlhbnQnKTtcblxu
dmFyIGludmFyaWFudCA9IHJlcXVpcmUoJ2ZianMvbGliL2ludmFyaWFudCcpO1xuXG52YXIgT0JT
RVJWRURfRVJST1IgPSB7fTtcblxuLyoqXG4gKiBgVHJhbnNhY3Rpb25gIGNyZWF0ZXMgYSBibGFj
ayBib3ggdGhhdCBpcyBhYmxlIHRvIHdyYXAgYW55IG1ldGhvZCBzdWNoIHRoYXRcbiAqIGNlcnRh
aW4gaW52YXJpYW50cyBhcmUgbWFpbnRhaW5lZCBiZWZvcmUgYW5kIGFmdGVyIHRoZSBtZXRob2Qg
aXMgaW52b2tlZFxuICogKEV2ZW4gaWYgYW4gZXhjZXB0aW9uIGlzIHRocm93biB3aGlsZSBpbnZv
a2luZyB0aGUgd3JhcHBlZCBtZXRob2QpLiBXaG9ldmVyXG4gKiBpbnN0YW50aWF0ZXMgYSB0cmFu
c2FjdGlvbiBjYW4gcHJvdmlkZSBlbmZvcmNlcnMgb2YgdGhlIGludmFyaWFudHMgYXRcbiAqIGNy
ZWF0aW9uIHRpbWUuIFRoZSBgVHJhbnNhY3Rpb25gIGNsYXNzIGl0c2VsZiB3aWxsIHN1cHBseSBv
bmUgYWRkaXRpb25hbFxuICogYXV0b21hdGljIGludmFyaWFudCBmb3IgeW91IC0gdGhlIGludmFy
aWFudCB0aGF0IGFueSB0cmFuc2FjdGlvbiBpbnN0YW5jZVxuICogc2hvdWxkIG5vdCBiZSBydW4g
d2hpbGUgaXQgaXMgYWxyZWFkeSBiZWluZyBydW4uIFlvdSB3b3VsZCB0eXBpY2FsbHkgY3JlYXRl
IGFcbiAqIHNpbmdsZSBpbnN0YW5jZSBvZiBhIGBUcmFuc2FjdGlvbmAgZm9yIHJldXNlIG11bHRp
cGxlIHRpbWVzLCB0aGF0IHBvdGVudGlhbGx5XG4gKiBpcyB1c2VkIHRvIHdyYXAgc2V2ZXJhbCBk
aWZmZXJlbnQgbWV0aG9kcy4gV3JhcHBlcnMgYXJlIGV4dHJlbWVseSBzaW1wbGUgLVxuICogdGhl
eSBvbmx5IHJlcXVpcmUgaW1wbGVtZW50aW5nIHR3byBtZXRob2RzLlxuICpcbiAqIDxwcmU+XG4g
KiAgICAgICAgICAgICAgICAgICAgICAgd3JhcHBlcnMgKGluamVjdGVkIGF0IGNyZWF0aW9uIHRp
bWUpXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAgICAgICAgK1xu
ICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgIHxcbiAqICAg
ICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS18LS0tLS0tLS0tLS0t
LS0rXG4gKiAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgdiAgICAgICAgfCAg
ICAgICAgICAgICAgfFxuICogICAgICAgICAgICAgICAgICAgIHwgICAgICArLS0tLS0tLS0tLS0t
LS0tKyAgIHwgICAgICAgICAgICAgIHxcbiAqICAgICAgICAgICAgICAgICAgICB8ICAgKy0tfCAg
ICB3cmFwcGVyMSAgIHwtLS18LS0tLSsgICAgICAgICB8XG4gKiAgICAgICAgICAgICAgICAgICAg
fCAgIHwgICstLS0tLS0tLS0tLS0tLS0rICAgdiAgICB8ICAgICAgICAgfFxuICogICAgICAgICAg
ICAgICAgICAgIHwgICB8ICAgICAgICAgICstLS0tLS0tLS0tLS0tKyAgfCAgICAgICAgIHxcbiAq
ICAgICAgICAgICAgICAgICAgICB8ICAgfCAgICAgKy0tLS18ICAgd3JhcHBlcjIgIHwtLS0tLS0t
LSsgICB8XG4gKiAgICAgICAgICAgICAgICAgICAgfCAgIHwgICAgIHwgICAgKy0tLS0tLS0tLS0t
LS0rICB8ICAgICB8ICAgfFxuICogICAgICAgICAgICAgICAgICAgIHwgICB8ICAgICB8ICAgICAg
ICAgICAgICAgICAgICAgfCAgICAgfCAgIHxcbiAqICAgICAgICAgICAgICAgICAgICB8ICAgdiAg
ICAgdiAgICAgICAgICAgICAgICAgICAgIHYgICAgIHYgICB8IHdyYXBwZXJcbiAqICAgICAgICAg
ICAgICAgICAgICB8ICstLS0rICstLS0rICAgKy0tLS0tLS0tLSsgICArLS0tKyArLS0tKyB8IGlu
dmFyaWFudHNcbiAqIHBlcmZvcm0oYW55TWV0aG9kKSB8IHwgICB8IHwgICB8ICAgfCAgICAgICAg
IHwgICB8ICAgfCB8ICAgfCB8IG1haW50YWluZWRcbiAqICstLS0tLS0tLS0tLS0tLS0tLT58LXwt
LS18LXwtLS18LS0+fGFueU1ldGhvZHwtLS18LS0tfC18LS0tfC18LS0tLS0tLS0+XG4gKiAgICAg
ICAgICAgICAgICAgICAgfCB8ICAgfCB8ICAgfCAgIHwgICAgICAgICB8ICAgfCAgIHwgfCAgIHwg
fFxuICogICAgICAgICAgICAgICAgICAgIHwgfCAgIHwgfCAgIHwgICB8ICAgICAgICAgfCAgIHwg
ICB8IHwgICB8IHxcbiAqICAgICAgICAgICAgICAgICAgICB8IHwgICB8IHwgICB8ICAgfCAgICAg
ICAgIHwgICB8ICAgfCB8ICAgfCB8XG4gKiAgICAgICAgICAgICAgICAgICAgfCArLS0tKyArLS0t
KyAgICstLS0tLS0tLS0rICAgKy0tLSsgKy0tLSsgfFxuICogICAgICAgICAgICAgICAgICAgIHwg
IGluaXRpYWxpemUgICAgICAgICAgICAgICAgICAgIGNsb3NlICAgIHxcbiAqICAgICAgICAgICAg
ICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gKiA8
L3ByZT5cbiAqXG4gKiBVc2UgY2FzZXM6XG4gKiAtIFByZXNlcnZpbmcgdGhlIGlucHV0IHNlbGVj
dGlvbiByYW5nZXMgYmVmb3JlL2FmdGVyIHJlY29uY2lsaWF0aW9uLlxuICogICBSZXN0b3Jpbmcg
c2VsZWN0aW9uIGV2ZW4gaW4gdGhlIGV2ZW50IG9mIGFuIHVuZXhwZWN0ZWQgZXJyb3IuXG4gKiAt
IERlYWN0aXZhdGluZyBldmVudHMgd2hpbGUgcmVhcnJhbmdpbmcgdGhlIERPTSwgcHJldmVudGlu
ZyBibHVycy9mb2N1c2VzLFxuICogICB3aGlsZSBndWFyYW50ZWVpbmcgdGhhdCBhZnRlcndhcmRz
LCB0aGUgZXZlbnQgc3lzdGVtIGlzIHJlYWN0aXZhdGVkLlxuICogLSBGbHVzaGluZyBhIHF1ZXVl
IG9mIGNvbGxlY3RlZCBET00gbXV0YXRpb25zIHRvIHRoZSBtYWluIFVJIHRocmVhZCBhZnRlciBh
XG4gKiAgIHJlY29uY2lsaWF0aW9uIHRha2VzIHBsYWNlIGluIGEgd29ya2VyIHRocmVhZC5cbiAq
IC0gSW52b2tpbmcgYW55IGNvbGxlY3RlZCBgY29tcG9uZW50RGlkVXBkYXRlYCBjYWxsYmFja3Mg
YWZ0ZXIgcmVuZGVyaW5nIG5ld1xuICogICBjb250ZW50LlxuICogLSAoRnV0dXJlIHVzZSBjYXNl
KTogV3JhcHBpbmcgcGFydGljdWxhciBmbHVzaGVzIG9mIHRoZSBgUmVhY3RXb3JrZXJgIHF1ZXVl
XG4gKiAgIHRvIHByZXNlcnZlIHRoZSBgc2Nyb2xsVG9wYCAoYW4gYXV0b21hdGljIHNjcm9sbCBh
d2FyZSBET00pLlxuICogLSAoRnV0dXJlIHVzZSBjYXNlKTogTGF5b3V0IGNhbGN1bGF0aW9ucyBi
ZWZvcmUgYW5kIGFmdGVyIERPTSB1cGRhdGVzLlxuICpcbiAqIFRyYW5zYWN0aW9uYWwgcGx1Z2lu
IEFQSTpcbiAqIC0gQSBtb2R1bGUgdGhhdCBoYXMgYW4gYGluaXRpYWxpemVgIG1ldGhvZCB0aGF0
IHJldHVybnMgYW55IHByZWNvbXB1dGF0aW9uLlxuICogLSBhbmQgYSBgY2xvc2VgIG1ldGhvZCB0
aGF0IGFjY2VwdHMgdGhlIHByZWNvbXB1dGF0aW9uLiBgY2xvc2VgIGlzIGludm9rZWRcbiAqICAg
d2hlbiB0aGUgd3JhcHBlZCBwcm9jZXNzIGlzIGNvbXBsZXRlZCwgb3IgaGFzIGZhaWxlZC5cbiAq
XG4gKiBAcGFyYW0ge0FycmF5PFRyYW5zYWN0aW9uYWxXcmFwcGVyPn0gdHJhbnNhY3Rpb25XcmFw
cGVyIFdyYXBwZXIgbW9kdWxlc1xuICogdGhhdCBpbXBsZW1lbnQgYGluaXRpYWxpemVgIGFuZCBg
Y2xvc2VgLlxuICogQHJldHVybiB7VHJhbnNhY3Rpb259IFNpbmdsZSB0cmFuc2FjdGlvbiBmb3Ig
cmV1c2UgaW4gdGhyZWFkLlxuICpcbiAqIEBjbGFzcyBUcmFuc2FjdGlvblxuICovXG52YXIgVHJh
bnNhY3Rpb25JbXBsID0ge1xuICAvKipcbiAgICogU2V0cyB1cCB0aGlzIGluc3RhbmNlIHNvIHRo
YXQgaXQgaXMgcHJlcGFyZWQgZm9yIGNvbGxlY3RpbmcgbWV0cmljcy4gRG9lc1xuICAgKiBzbyBz
dWNoIHRoYXQgdGhpcyBzZXR1cCBtZXRob2QgbWF5IGJlIHVzZWQgb24gYW4gaW5zdGFuY2UgdGhh
dCBpcyBhbHJlYWR5XG4gICAqIGluaXRpYWxpemVkLCBpbiBhIHdheSB0aGF0IGRvZXMgbm90IGNv
bnN1bWUgYWRkaXRpb25hbCBtZW1vcnkgdXBvbiByZXVzZS5cbiAgICogVGhhdCBjYW4gYmUgdXNl
ZnVsIGlmIHlvdSBkZWNpZGUgdG8gbWFrZSB5b3VyIHN1YmNsYXNzIG9mIHRoaXMgbWl4aW4gYVxu
ICAgKiBcIlBvb2xlZENsYXNzXCIuXG4gICAqL1xuICByZWluaXRpYWxpemVUcmFuc2FjdGlvbjog
ZnVuY3Rpb24gKCkge1xuICAgIHRoaXMudHJhbnNhY3Rpb25XcmFwcGVycyA9IHRoaXMuZ2V0VHJh
bnNhY3Rpb25XcmFwcGVycygpO1xuICAgIGlmICh0aGlzLndyYXBwZXJJbml0RGF0YSkge1xuICAg
ICAgdGhpcy53cmFwcGVySW5pdERhdGEubGVuZ3RoID0gMDtcbiAgICB9IGVsc2Uge1xuICAgICAg
dGhpcy53cmFwcGVySW5pdERhdGEgPSBbXTtcbiAgICB9XG4gICAgdGhpcy5faXNJblRyYW5zYWN0
aW9uID0gZmFsc2U7XG4gIH0sXG5cbiAgX2lzSW5UcmFuc2FjdGlvbjogZmFsc2UsXG5cbiAgLyoq
XG4gICAqIEBhYnN0cmFjdFxuICAgKiBAcmV0dXJuIHtBcnJheTxUcmFuc2FjdGlvbldyYXBwZXI+
fSBBcnJheSBvZiB0cmFuc2FjdGlvbiB3cmFwcGVycy5cbiAgICovXG4gIGdldFRyYW5zYWN0aW9u
V3JhcHBlcnM6IG51bGwsXG5cbiAgaXNJblRyYW5zYWN0aW9uOiBmdW5jdGlvbiAoKSB7XG4gICAg
cmV0dXJuICEhdGhpcy5faXNJblRyYW5zYWN0aW9uO1xuICB9LFxuXG4gIC8qIGVzbGludC1kaXNh
YmxlIHNwYWNlLWJlZm9yZS1mdW5jdGlvbi1wYXJlbiAqL1xuXG4gIC8qKlxuICAgKiBFeGVjdXRl
cyB0aGUgZnVuY3Rpb24gd2l0aGluIGEgc2FmZXR5IHdpbmRvdy4gVXNlIHRoaXMgZm9yIHRoZSB0
b3AgbGV2ZWxcbiAgICogbWV0aG9kcyB0aGF0IHJlc3VsdCBpbiBsYXJnZSBhbW91bnRzIG9mIGNv
bXB1dGF0aW9uL211dGF0aW9ucyB0aGF0IHdvdWxkXG4gICAqIG5lZWQgdG8gYmUgc2FmZXR5IGNo
ZWNrZWQuIFRoZSBvcHRpb25hbCBhcmd1bWVudHMgaGVscHMgcHJldmVudCB0aGUgbmVlZFxuICAg
KiB0byBiaW5kIGluIG1hbnkgY2FzZXMuXG4gICAqXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IG1l
dGhvZCBNZW1iZXIgb2Ygc2NvcGUgdG8gY2FsbC5cbiAgICogQHBhcmFtIHtPYmplY3R9IHNjb3Bl
IFNjb3BlIHRvIGludm9rZSBmcm9tLlxuICAgKiBAcGFyYW0ge09iamVjdD89fSBhIEFyZ3VtZW50
IHRvIHBhc3MgdG8gdGhlIG1ldGhvZC5cbiAgICogQHBhcmFtIHtPYmplY3Q/PX0gYiBBcmd1bWVu
dCB0byBwYXNzIHRvIHRoZSBtZXRob2QuXG4gICAqIEBwYXJhbSB7T2JqZWN0Pz19IGMgQXJndW1l
bnQgdG8gcGFzcyB0byB0aGUgbWV0aG9kLlxuICAgKiBAcGFyYW0ge09iamVjdD89fSBkIEFyZ3Vt
ZW50IHRvIHBhc3MgdG8gdGhlIG1ldGhvZC5cbiAgICogQHBhcmFtIHtPYmplY3Q/PX0gZSBBcmd1
bWVudCB0byBwYXNzIHRvIHRoZSBtZXRob2QuXG4gICAqIEBwYXJhbSB7T2JqZWN0Pz19IGYgQXJn
dW1lbnQgdG8gcGFzcyB0byB0aGUgbWV0aG9kLlxuICAgKlxuICAgKiBAcmV0dXJuIHsqfSBSZXR1
cm4gdmFsdWUgZnJvbSBgbWV0aG9kYC5cbiAgICovXG4gIHBlcmZvcm06IGZ1bmN0aW9uIChtZXRo
b2QsIHNjb3BlLCBhLCBiLCBjLCBkLCBlLCBmKSB7XG4gICAgLyogZXNsaW50LWVuYWJsZSBzcGFj
ZS1iZWZvcmUtZnVuY3Rpb24tcGFyZW4gKi9cbiAgICAhIXRoaXMuaXNJblRyYW5zYWN0aW9uKCkg
PyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNl
LCAnVHJhbnNhY3Rpb24ucGVyZm9ybSguLi4pOiBDYW5ub3QgaW5pdGlhbGl6ZSBhIHRyYW5zYWN0
aW9uIHdoZW4gdGhlcmUgaXMgYWxyZWFkeSBhbiBvdXRzdGFuZGluZyB0cmFuc2FjdGlvbi4nKSA6
IF9wcm9kSW52YXJpYW50KCcyNycpIDogdm9pZCAwO1xuICAgIHZhciBlcnJvclRocm93bjtcbiAg
ICB2YXIgcmV0O1xuICAgIHRyeSB7XG4gICAgICB0aGlzLl9pc0luVHJhbnNhY3Rpb24gPSB0cnVl
O1xuICAgICAgLy8gQ2F0Y2hpbmcgZXJyb3JzIG1ha2VzIGRlYnVnZ2luZyBtb3JlIGRpZmZpY3Vs
dCwgc28gd2Ugc3RhcnQgd2l0aFxuICAgICAgLy8gZXJyb3JUaHJvd24gc2V0IHRvIHRydWUgYmVm
b3JlIHNldHRpbmcgaXQgdG8gZmFsc2UgYWZ0ZXIgY2FsbGluZ1xuICAgICAgLy8gY2xvc2UgLS0g
aWYgaXQncyBzdGlsbCBzZXQgdG8gdHJ1ZSBpbiB0aGUgZmluYWxseSBibG9jaywgaXQgbWVhbnNc
biAgICAgIC8vIG9uZSBvZiB0aGVzZSBjYWxscyB0aHJldy5cbiAgICAgIGVycm9yVGhyb3duID0g
dHJ1ZTtcbiAgICAgIHRoaXMuaW5pdGlhbGl6ZUFsbCgwKTtcbiAgICAgIHJldCA9IG1ldGhvZC5j
YWxsKHNjb3BlLCBhLCBiLCBjLCBkLCBlLCBmKTtcbiAgICAgIGVycm9yVGhyb3duID0gZmFsc2U7
XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGlmIChlcnJvclRocm93bikg
e1xuICAgICAgICAgIC8vIElmIGBtZXRob2RgIHRocm93cywgcHJlZmVyIHRvIHNob3cgdGhhdCBz
dGFjayB0cmFjZSBvdmVyIGFueSB0aHJvd25cbiAgICAgICAgICAvLyBieSBpbnZva2luZyBgY2xv
c2VBbGxgLlxuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICB0aGlzLmNsb3NlQWxsKDApO1xu
ICAgICAgICAgIH0gY2F0Y2ggKGVycikge31cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAv
LyBTaW5jZSBgbWV0aG9kYCBkaWRuJ3QgdGhyb3csIHdlIGRvbid0IHdhbnQgdG8gc2lsZW5jZSB0
aGUgZXhjZXB0aW9uXG4gICAgICAgICAgLy8gaGVyZS5cbiAgICAgICAgICB0aGlzLmNsb3NlQWxs
KDApO1xuICAgICAgICB9XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICB0aGlzLl9pc0luVHJh
bnNhY3Rpb24gPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJldDtcbiAgfSxc
blxuICBpbml0aWFsaXplQWxsOiBmdW5jdGlvbiAoc3RhcnRJbmRleCkge1xuICAgIHZhciB0cmFu
c2FjdGlvbldyYXBwZXJzID0gdGhpcy50cmFuc2FjdGlvbldyYXBwZXJzO1xuICAgIGZvciAodmFy
IGkgPSBzdGFydEluZGV4OyBpIDwgdHJhbnNhY3Rpb25XcmFwcGVycy5sZW5ndGg7IGkrKykge1xu
ICAgICAgdmFyIHdyYXBwZXIgPSB0cmFuc2FjdGlvbldyYXBwZXJzW2ldO1xuICAgICAgdHJ5IHtc
biAgICAgICAgLy8gQ2F0Y2hpbmcgZXJyb3JzIG1ha2VzIGRlYnVnZ2luZyBtb3JlIGRpZmZpY3Vs
dCwgc28gd2Ugc3RhcnQgd2l0aCB0aGVcbiAgICAgICAgLy8gT0JTRVJWRURfRVJST1Igc3RhdGUg
YmVmb3JlIG92ZXJ3cml0aW5nIGl0IHdpdGggdGhlIHJlYWwgcmV0dXJuIHZhbHVlXG4gICAgICAg
IC8vIG9mIGluaXRpYWxpemUgLS0gaWYgaXQncyBzdGlsbCBzZXQgdG8gT0JTRVJWRURfRVJST1Ig
aW4gdGhlIGZpbmFsbHlcbiAgICAgICAgLy8gYmxvY2ssIGl0IG1lYW5zIHdyYXBwZXIuaW5pdGlh
bGl6ZSB0aHJldy5cbiAgICAgICAgdGhpcy53cmFwcGVySW5pdERhdGFbaV0gPSBPQlNFUlZFRF9F
UlJPUjtcbiAgICAgICAgdGhpcy53cmFwcGVySW5pdERhdGFbaV0gPSB3cmFwcGVyLmluaXRpYWxp
emUgPyB3cmFwcGVyLmluaXRpYWxpemUuY2FsbCh0aGlzKSA6IG51bGw7XG4gICAgICB9IGZpbmFs
bHkge1xuICAgICAgICBpZiAodGhpcy53cmFwcGVySW5pdERhdGFbaV0gPT09IE9CU0VSVkVEX0VS
Uk9SKSB7XG4gICAgICAgICAgLy8gVGhlIGluaXRpYWxpemVyIGZvciB3cmFwcGVyIGkgdGhyZXcg
YW4gZXJyb3I7IGluaXRpYWxpemUgdGhlXG4gICAgICAgICAgLy8gcmVtYWluaW5nIHdyYXBwZXJz
IGJ1dCBzaWxlbmNlIGFueSBleGNlcHRpb25zIGZyb20gdGhlbSB0byBlbnN1cmVcbiAgICAgICAg
ICAvLyB0aGF0IHRoZSBmaXJzdCBlcnJvciBpcyB0aGUgb25lIHRvIGJ1YmJsZSB1cC5cbiAgICAg
ICAgICB0cnkge1xuICAgICAgICAgICAgdGhpcy5pbml0aWFsaXplQWxsKGkgKyAxKTtcbiAgICAg
ICAgICB9IGNhdGNoIChlcnIpIHt9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0sXG5c
biAgLyoqXG4gICAqIEludm9rZXMgZWFjaCBvZiBgdGhpcy50cmFuc2FjdGlvbldyYXBwZXJzLmNs
b3NlW2ldYCBmdW5jdGlvbnMsIHBhc3NpbmcgaW50b1xuICAgKiB0aGVtIHRoZSByZXNwZWN0aXZl
IHJldHVybiB2YWx1ZXMgb2YgYHRoaXMudHJhbnNhY3Rpb25XcmFwcGVycy5pbml0W2ldYFxuICAg
KiAoYGNsb3NlYHJzIHRoYXQgY29ycmVzcG9uZCB0byBpbml0aWFsaXplcnMgdGhhdCBmYWlsZWQg
d2lsbCBub3QgYmVcbiAgICogaW52b2tlZCkuXG4gICAqL1xuICBjbG9zZUFsbDogZnVuY3Rpb24g
KHN0YXJ0SW5kZXgpIHtcbiAgICAhdGhpcy5pc0luVHJhbnNhY3Rpb24oKSA/IHByb2Nlc3MuZW52
Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdUcmFuc2FjdGlv
bi5jbG9zZUFsbCgpOiBDYW5ub3QgY2xvc2UgdHJhbnNhY3Rpb24gd2hlbiBub25lIGFyZSBvcGVu
LicpIDogX3Byb2RJbnZhcmlhbnQoJzI4JykgOiB2b2lkIDA7XG4gICAgdmFyIHRyYW5zYWN0aW9u
V3JhcHBlcnMgPSB0aGlzLnRyYW5zYWN0aW9uV3JhcHBlcnM7XG4gICAgZm9yICh2YXIgaSA9IHN0
YXJ0SW5kZXg7IGkgPCB0cmFuc2FjdGlvbldyYXBwZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2
YXIgd3JhcHBlciA9IHRyYW5zYWN0aW9uV3JhcHBlcnNbaV07XG4gICAgICB2YXIgaW5pdERhdGEg
PSB0aGlzLndyYXBwZXJJbml0RGF0YVtpXTtcbiAgICAgIHZhciBlcnJvclRocm93bjtcbiAgICAg
IHRyeSB7XG4gICAgICAgIC8vIENhdGNoaW5nIGVycm9ycyBtYWtlcyBkZWJ1Z2dpbmcgbW9yZSBk
aWZmaWN1bHQsIHNvIHdlIHN0YXJ0IHdpdGhcbiAgICAgICAgLy8gZXJyb3JUaHJvd24gc2V0IHRv
IHRydWUgYmVmb3JlIHNldHRpbmcgaXQgdG8gZmFsc2UgYWZ0ZXIgY2FsbGluZ1xuICAgICAgICAv
LyBjbG9zZSAtLSBpZiBpdCdzIHN0aWxsIHNldCB0byB0cnVlIGluIHRoZSBmaW5hbGx5IGJsb2Nr
LCBpdCBtZWFuc1xuICAgICAgICAvLyB3cmFwcGVyLmNsb3NlIHRocmV3LlxuICAgICAgICBlcnJv
clRocm93biA9IHRydWU7XG4gICAgICAgIGlmIChpbml0RGF0YSAhPT0gT0JTRVJWRURfRVJST1Ig
JiYgd3JhcHBlci5jbG9zZSkge1xuICAgICAgICAgIHdyYXBwZXIuY2xvc2UuY2FsbCh0aGlzLCBp
bml0RGF0YSk7XG4gICAgICAgIH1cbiAgICAgICAgZXJyb3JUaHJvd24gPSBmYWxzZTtcbiAgICAg
IH0gZmluYWxseSB7XG4gICAgICAgIGlmIChlcnJvclRocm93bikge1xuICAgICAgICAgIC8vIFRo
ZSBjbG9zZXIgZm9yIHdyYXBwZXIgaSB0aHJldyBhbiBlcnJvcjsgY2xvc2UgdGhlIHJlbWFpbmlu
Z1xuICAgICAgICAgIC8vIHdyYXBwZXJzIGJ1dCBzaWxlbmNlIGFueSBleGNlcHRpb25zIGZyb20g
dGhlbSB0byBlbnN1cmUgdGhhdCB0aGVcbiAgICAgICAgICAvLyBmaXJzdCBlcnJvciBpcyB0aGUg
b25lIHRvIGJ1YmJsZSB1cC5cbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgdGhpcy5jbG9z
ZUFsbChpICsgMSk7XG4gICAgICAgICAgfSBjYXRjaCAoZSkge31cbiAgICAgICAgfVxuICAgICAg
fVxuICAgIH1cbiAgICB0aGlzLndyYXBwZXJJbml0RGF0YS5sZW5ndGggPSAwO1xuICB9XG59O1xu
XG5tb2R1bGUuZXhwb3J0cyA9IFRyYW5zYWN0aW9uSW1wbDtcblxuXG4vKioqKioqKioqKioqKioq
KipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFjdC1kb20vbGliL1RyYW5zYWN0aW9u
LmpzXG4gKiogbW9kdWxlIGlkID0gMjdcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8q
KlxuICogQ29weXJpZ2h0IDIwMTYtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0
aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhl
IHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRc
biAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4g
dGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEJhc2VkIG9uIHRoZSBlc2NhcGUtaHRtbCBsaWJy
YXJ5LCB3aGljaCBpcyB1c2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZSBiZWxvdzpcbiAqXG4gKiBD
b3B5cmlnaHQgKGMpIDIwMTItMjAxMyBUSiBIb2xvd2F5Y2h1a1xuICogQ29weXJpZ2h0IChjKSAy
MDE1IEFuZHJlYXMgTHViYmVcbiAqIENvcHlyaWdodCAoYykgMjAxNSBUaWFuY2hlbmcgXCJUaW1v
dGh5XCIgR3VcbiAqXG4gKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNo
YXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmdcbiAqIGEgY29weSBvZiB0aGlzIHNvZnR3YXJl
IGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZVxuICogJ1NvZnR3YXJlJyks
IHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZ1xu
ICogd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1l
cmdlLCBwdWJsaXNoLFxuICogZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29w
aWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvXG4gKiBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRo
ZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG9cbiAqIHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9uczpcbiAqXG4gKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQg
dGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZVxuICogaW5jbHVkZWQgaW4gYWxsIGNvcGll
cyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4gKlxuICogVEhFIFNP
RlRXQVJFIElTIFBST1ZJREVEICdBUyBJUycsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQs
XG4gKiBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhF
IFdBUlJBTlRJRVMgT0ZcbiAqIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC5cbiAqIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZXG4gKiBDTEFJ
TSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENP
TlRSQUNULFxuICogVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElO
IENPTk5FQ1RJT04gV0lUSCBUSEVcbiAqIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVB
TElOR1MgSU4gVEhFIFNPRlRXQVJFLlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbi8vIGNv
ZGUgY29waWVkIGFuZCBtb2RpZmllZCBmcm9tIGVzY2FwZS1odG1sXG4vKipcbiAqIE1vZHVsZSB2
YXJpYWJsZXMuXG4gKiBAcHJpdmF0ZVxuICovXG5cbnZhciBtYXRjaEh0bWxSZWdFeHAgPSAvW1wi
JyY8Pl0vO1xuXG4vKipcbiAqIEVzY2FwZSBzcGVjaWFsIGNoYXJhY3RlcnMgaW4gdGhlIGdpdmVu
IHN0cmluZyBvZiBodG1sLlxuICpcbiAqIEBwYXJhbSAge3N0cmluZ30gc3RyaW5nIFRoZSBzdHJp
bmcgdG8gZXNjYXBlIGZvciBpbnNlcnRpbmcgaW50byBIVE1MXG4gKiBAcmV0dXJuIHtzdHJpbmd9
XG4gKiBAcHVibGljXG4gKi9cblxuZnVuY3Rpb24gZXNjYXBlSHRtbChzdHJpbmcpIHtcbiAgdmFy
IHN0ciA9ICcnICsgc3RyaW5nO1xuICB2YXIgbWF0Y2ggPSBtYXRjaEh0bWxSZWdFeHAuZXhlYyhz
dHIpO1xuXG4gIGlmICghbWF0Y2gpIHtcbiAgICByZXR1cm4gc3RyO1xuICB9XG5cbiAgdmFyIGVz
Y2FwZTtcbiAgdmFyIGh0bWwgPSAnJztcbiAgdmFyIGluZGV4ID0gMDtcbiAgdmFyIGxhc3RJbmRl
eCA9IDA7XG5cbiAgZm9yIChpbmRleCA9IG1hdGNoLmluZGV4OyBpbmRleCA8IHN0ci5sZW5ndGg7
IGluZGV4KyspIHtcbiAgICBzd2l0Y2ggKHN0ci5jaGFyQ29kZUF0KGluZGV4KSkge1xuICAgICAg
Y2FzZSAzNDpcbiAgICAgICAgLy8gXCJcbiAgICAgICAgZXNjYXBlID0gJyZxdW90Oyc7XG4gICAg
ICAgIGJyZWFrO1xuICAgICAgY2FzZSAzODpcbiAgICAgICAgLy8gJlxuICAgICAgICBlc2NhcGUg
PSAnJmFtcDsnO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMzk6XG4gICAgICAgIC8vICdc
biAgICAgICAgZXNjYXBlID0gJyYjeDI3Oyc7IC8vIG1vZGlmaWVkIGZyb20gZXNjYXBlLWh0bWw7
IHVzZWQgdG8gYmUgJyYjMzknXG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSA2MDpcbiAgICAg
ICAgLy8gPFxuICAgICAgICBlc2NhcGUgPSAnJmx0Oyc7XG4gICAgICAgIGJyZWFrO1xuICAgICAg
Y2FzZSA2MjpcbiAgICAgICAgLy8gPlxuICAgICAgICBlc2NhcGUgPSAnJmd0Oyc7XG4gICAgICAg
IGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAg
aWYgKGxhc3RJbmRleCAhPT0gaW5kZXgpIHtcbiAgICAgIGh0bWwgKz0gc3RyLnN1YnN0cmluZyhs
YXN0SW5kZXgsIGluZGV4KTtcbiAgICB9XG5cbiAgICBsYXN0SW5kZXggPSBpbmRleCArIDE7XG4g
ICAgaHRtbCArPSBlc2NhcGU7XG4gIH1cblxuICByZXR1cm4gbGFzdEluZGV4ICE9PSBpbmRleCA/
IGh0bWwgKyBzdHIuc3Vic3RyaW5nKGxhc3RJbmRleCwgaW5kZXgpIDogaHRtbDtcbn1cbi8vIGVu
ZCBjb2RlIGNvcGllZCBhbmQgbW9kaWZpZWQgZnJvbSBlc2NhcGUtaHRtbFxuXG4vKipcbiAqIEVz
Y2FwZXMgdGV4dCB0byBwcmV2ZW50IHNjcmlwdGluZyBhdHRhY2tzLlxuICpcbiAqIEBwYXJhbSB7
Kn0gdGV4dCBUZXh0IHZhbHVlIHRvIGVzY2FwZS5cbiAqIEByZXR1cm4ge3N0cmluZ30gQW4gZXNj
YXBlZCBzdHJpbmcuXG4gKi9cbmZ1bmN0aW9uIGVzY2FwZVRleHRDb250ZW50Rm9yQnJvd3Nlcih0
ZXh0KSB7XG4gIGlmICh0eXBlb2YgdGV4dCA9PT0gJ2Jvb2xlYW4nIHx8IHR5cGVvZiB0ZXh0ID09
PSAnbnVtYmVyJykge1xuICAgIC8vIHRoaXMgc2hvcnRjaXJjdWl0IGhlbHBzIHBlcmYgZm9yIHR5
cGVzIHRoYXQgd2Uga25vdyB3aWxsIG5ldmVyIGhhdmVcbiAgICAvLyBzcGVjaWFsIGNoYXJhY3Rl
cnMsIGVzcGVjaWFsbHkgZ2l2ZW4gdGhhdCB0aGlzIGZ1bmN0aW9uIGlzIHVzZWQgb2Z0ZW5cbiAg
ICAvLyBmb3IgbnVtZXJpYyBkb20gaWRzLlxuICAgIHJldHVybiAnJyArIHRleHQ7XG4gIH1cbiAg
cmV0dXJuIGVzY2FwZUh0bWwodGV4dCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZXNjYXBlVGV4
dENvbnRlbnRGb3JCcm93c2VyO1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sg
Rk9PVEVSXG4gKiogLi9+L3JlYWN0LWRvbS9saWIvZXNjYXBlVGV4dENvbnRlbnRGb3JCcm93c2Vy
LmpzXG4gKiogbW9kdWxlIGlkID0gMjhcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8q
KlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0
aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhl
IHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRc
biAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4g
dGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBFeGVj
dXRpb25FbnZpcm9ubWVudCA9IHJlcXVpcmUoJ2ZianMvbGliL0V4ZWN1dGlvbkVudmlyb25tZW50
Jyk7XG52YXIgRE9NTmFtZXNwYWNlcyA9IHJlcXVpcmUoJy4vRE9NTmFtZXNwYWNlcycpO1xuXG52
YXIgV0hJVEVTUEFDRV9URVNUID0gL15bIFxcclxcblxcdFxcZl0vO1xudmFyIE5PTlZJU0lCTEVf
VEVTVCA9IC88KCEtLXxsaW5rfG5vc2NyaXB0fG1ldGF8c2NyaXB0fHN0eWxlKVsgXFxyXFxuXFx0
XFxmXFwvPl0vO1xuXG52YXIgY3JlYXRlTWljcm9zb2Z0VW5zYWZlTG9jYWxGdW5jdGlvbiA9IHJl
cXVpcmUoJy4vY3JlYXRlTWljcm9zb2Z0VW5zYWZlTG9jYWxGdW5jdGlvbicpO1xuXG4vLyBTVkcg
dGVtcCBjb250YWluZXIgZm9yIElFIGxhY2tpbmcgaW5uZXJIVE1MXG52YXIgcmV1c2FibGVTVkdD
b250YWluZXI7XG5cbi8qKlxuICogU2V0IHRoZSBpbm5lckhUTUwgcHJvcGVydHkgb2YgYSBub2Rl
LCBlbnN1cmluZyB0aGF0IHdoaXRlc3BhY2UgaXMgcHJlc2VydmVkXG4gKiBldmVuIGluIElFOC5c
biAqXG4gKiBAcGFyYW0ge0RPTUVsZW1lbnR9IG5vZGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBodG1s
XG4gKiBAaW50ZXJuYWxcbiAqL1xudmFyIHNldElubmVySFRNTCA9IGNyZWF0ZU1pY3Jvc29mdFVu
c2FmZUxvY2FsRnVuY3Rpb24oZnVuY3Rpb24gKG5vZGUsIGh0bWwpIHtcbiAgLy8gSUUgZG9lcyBu
b3QgaGF2ZSBpbm5lckhUTUwgZm9yIFNWRyBub2Rlcywgc28gaW5zdGVhZCB3ZSBpbmplY3QgdGhl
XG4gIC8vIG5ldyBtYXJrdXAgaW4gYSB0ZW1wIG5vZGUgYW5kIHRoZW4gbW92ZSB0aGUgY2hpbGQg
bm9kZXMgYWNyb3NzIGludG9cbiAgLy8gdGhlIHRhcmdldCBub2RlXG4gIGlmIChub2RlLm5hbWVz
cGFjZVVSSSA9PT0gRE9NTmFtZXNwYWNlcy5zdmcgJiYgISgnaW5uZXJIVE1MJyBpbiBub2RlKSkg
e1xuICAgIHJldXNhYmxlU1ZHQ29udGFpbmVyID0gcmV1c2FibGVTVkdDb250YWluZXIgfHwgZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgcmV1c2FibGVTVkdDb250YWluZXIuaW5u
ZXJIVE1MID0gJzxzdmc+JyArIGh0bWwgKyAnPC9zdmc+JztcbiAgICB2YXIgc3ZnTm9kZSA9IHJl
dXNhYmxlU1ZHQ29udGFpbmVyLmZpcnN0Q2hpbGQ7XG4gICAgd2hpbGUgKHN2Z05vZGUuZmlyc3RD
aGlsZCkge1xuICAgICAgbm9kZS5hcHBlbmRDaGlsZChzdmdOb2RlLmZpcnN0Q2hpbGQpO1xuICAg
IH1cbiAgfSBlbHNlIHtcbiAgICBub2RlLmlubmVySFRNTCA9IGh0bWw7XG4gIH1cbn0pO1xuXG5p
ZiAoRXhlY3V0aW9uRW52aXJvbm1lbnQuY2FuVXNlRE9NKSB7XG4gIC8vIElFODogV2hlbiB1cGRh
dGluZyBhIGp1c3QgY3JlYXRlZCBub2RlIHdpdGggaW5uZXJIVE1MIG9ubHkgbGVhZGluZ1xuICAv
LyB3aGl0ZXNwYWNlIGlzIHJlbW92ZWQuIFdoZW4gdXBkYXRpbmcgYW4gZXhpc3Rpbmcgbm9kZSB3
aXRoIGlubmVySFRNTFxuICAvLyB3aGl0ZXNwYWNlIGluIHJvb3QgVGV4dE5vZGVzIGlzIGFsc28g
Y29sbGFwc2VkLlxuICAvLyBAc2VlIHF1aXJrc21vZGUub3JnL2J1Z3JlcG9ydHMvYXJjaGl2ZXMv
MjAwNC8xMS9pbm5lcmh0bWxfYW5kX3QuaHRtbFxuXG4gIC8vIEZlYXR1cmUgZGV0ZWN0aW9uOyBv
bmx5IElFOCBpcyBrbm93biB0byBiZWhhdmUgaW1wcm9wZXJseSBsaWtlIHRoaXMuXG4gIHZhciB0
ZXN0RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICB0ZXN0RWxlbWVu
dC5pbm5lckhUTUwgPSAnICc7XG4gIGlmICh0ZXN0RWxlbWVudC5pbm5lckhUTUwgPT09ICcnKSB7
XG4gICAgc2V0SW5uZXJIVE1MID0gZnVuY3Rpb24gKG5vZGUsIGh0bWwpIHtcbiAgICAgIC8vIE1h
Z2ljIHRoZW9yeTogSUU4IHN1cHBvc2VkbHkgZGlmZmVyZW50aWF0ZXMgYmV0d2VlbiBhZGRlZCBh
bmQgdXBkYXRlZFxuICAgICAgLy8gbm9kZXMgd2hlbiBwcm9jZXNzaW5nIGlubmVySFRNTCwgaW5u
ZXJIVE1MIG9uIHVwZGF0ZWQgbm9kZXMgc3VmZmVyc1xuICAgICAgLy8gZnJvbSB3b3JzZSB3aGl0
ZXNwYWNlIGJlaGF2aW9yLiBSZS1hZGRpbmcgYSBub2RlIGxpa2UgdGhpcyB0cmlnZ2Vyc1xuICAg
ICAgLy8gdGhlIGluaXRpYWwgYW5kIG1vcmUgZmF2b3JhYmxlIHdoaXRlc3BhY2UgYmVoYXZpb3Iu
XG4gICAgICAvLyBUT0RPOiBXaGF0IHRvIGRvIG9uIGEgZGV0YWNoZWQgbm9kZT9cbiAgICAgIGlm
IChub2RlLnBhcmVudE5vZGUpIHtcbiAgICAgICAgbm9kZS5wYXJlbnROb2RlLnJlcGxhY2VDaGls
ZChub2RlLCBub2RlKTtcbiAgICAgIH1cblxuICAgICAgLy8gV2UgYWxzbyBpbXBsZW1lbnQgYSB3
b3JrYXJvdW5kIGZvciBub24tdmlzaWJsZSB0YWdzIGRpc2FwcGVhcmluZyBpbnRvXG4gICAgICAv
LyB0aGluIGFpciBvbiBJRTgsIHRoaXMgb25seSBoYXBwZW5zIGlmIHRoZXJlIGlzIG5vIHZpc2li
bGUgdGV4dFxuICAgICAgLy8gaW4tZnJvbnQgb2YgdGhlIG5vbi12aXNpYmxlIHRhZ3MuIFBpZ2d5
YmFjayBvbiB0aGUgd2hpdGVzcGFjZSBmaXhcbiAgICAgIC8vIGFuZCBzaW1wbHkgY2hlY2sgaWYg
YW55IG5vbi12aXNpYmxlIHRhZ3MgYXBwZWFyIGluIHRoZSBzb3VyY2UuXG4gICAgICBpZiAoV0hJ
VEVTUEFDRV9URVNULnRlc3QoaHRtbCkgfHwgaHRtbFswXSA9PT0gJzwnICYmIE5PTlZJU0lCTEVf
VEVTVC50ZXN0KGh0bWwpKSB7XG4gICAgICAgIC8vIFJlY292ZXIgbGVhZGluZyB3aGl0ZXNwYWNl
IGJ5IHRlbXBvcmFyaWx5IHByZXBlbmRpbmcgYW55IGNoYXJhY3Rlci5cbiAgICAgICAgLy8gXFx1
RkVGRiBoYXMgdGhlIHBvdGVudGlhbCBhZHZhbnRhZ2Ugb2YgYmVpbmcgemVyby13aWR0aC9pbnZp
c2libGUuXG4gICAgICAgIC8vIFVnbGlmeUpTIGRyb3BzIFUrRkVGRiBjaGFycyB3aGVuIHBhcnNp
bmcsIHNvIHVzZSBTdHJpbmcuZnJvbUNoYXJDb2RlXG4gICAgICAgIC8vIGluIGhvcGVzIHRoYXQg
dGhpcyBpcyBwcmVzZXJ2ZWQgZXZlbiBpZiBcIlxcdUZFRkZcIiBpcyB0cmFuc2Zvcm1lZCB0b1xu
ICAgICAgICAvLyB0aGUgYWN0dWFsIFVuaWNvZGUgY2hhcmFjdGVyIChieSBCYWJlbCwgZm9yIGV4
YW1wbGUpLlxuICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vbWlzaG9vL1VnbGlmeUpTMi9i
bG9iL3YyLjQuMjAvbGliL3BhcnNlLmpzI0wyMTZcbiAgICAgICAgbm9kZS5pbm5lckhUTUwgPSBT
dHJpbmcuZnJvbUNoYXJDb2RlKDB4ZmVmZikgKyBodG1sO1xuXG4gICAgICAgIC8vIGRlbGV0ZURh
dGEgbGVhdmVzIGFuIGVtcHR5IGBUZXh0Tm9kZWAgd2hpY2ggb2Zmc2V0cyB0aGUgaW5kZXggb2Yg
YWxsXG4gICAgICAgIC8vIGNoaWxkcmVuLiBEZWZpbml0ZWx5IHdhbnQgdG8gYXZvaWQgdGhpcy5c
biAgICAgICAgdmFyIHRleHROb2RlID0gbm9kZS5maXJzdENoaWxkO1xuICAgICAgICBpZiAodGV4
dE5vZGUuZGF0YS5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICBub2RlLnJlbW92ZUNoaWxkKHRl
eHROb2RlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0ZXh0Tm9kZS5kZWxldGVEYXRh
KDAsIDEpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBub2RlLmlubmVySFRN
TCA9IGh0bWw7XG4gICAgICB9XG4gICAgfTtcbiAgfVxuICB0ZXN0RWxlbWVudCA9IG51bGw7XG59
XG5cbm1vZHVsZS5leHBvcnRzID0gc2V0SW5uZXJIVE1MO1xuXG5cbi8qKioqKioqKioqKioqKioq
KlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0LWRvbS9saWIvc2V0SW5uZXJIVE1M
LmpzXG4gKiogbW9kdWxlIGlkID0gMjlcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIid1
c2Ugc3RyaWN0JztcblxuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcbmV4cG9ydHMuY29tcG9z
ZSA9IGV4cG9ydHMuYXBwbHlNaWRkbGV3YXJlID0gZXhwb3J0cy5iaW5kQWN0aW9uQ3JlYXRvcnMg
PSBleHBvcnRzLmNvbWJpbmVSZWR1Y2VycyA9IGV4cG9ydHMuY3JlYXRlU3RvcmUgPSB1bmRlZmlu
ZWQ7XG5cbnZhciBfY3JlYXRlU3RvcmUgPSByZXF1aXJlKCcuL2NyZWF0ZVN0b3JlJyk7XG5cbnZh
ciBfY3JlYXRlU3RvcmUyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfY3JlYXRlU3RvcmUpO1xu
XG52YXIgX2NvbWJpbmVSZWR1Y2VycyA9IHJlcXVpcmUoJy4vY29tYmluZVJlZHVjZXJzJyk7XG5c
bnZhciBfY29tYmluZVJlZHVjZXJzMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2NvbWJpbmVS
ZWR1Y2Vycyk7XG5cbnZhciBfYmluZEFjdGlvbkNyZWF0b3JzID0gcmVxdWlyZSgnLi9iaW5kQWN0
aW9uQ3JlYXRvcnMnKTtcblxudmFyIF9iaW5kQWN0aW9uQ3JlYXRvcnMyID0gX2ludGVyb3BSZXF1
aXJlRGVmYXVsdChfYmluZEFjdGlvbkNyZWF0b3JzKTtcblxudmFyIF9hcHBseU1pZGRsZXdhcmUg
PSByZXF1aXJlKCcuL2FwcGx5TWlkZGxld2FyZScpO1xuXG52YXIgX2FwcGx5TWlkZGxld2FyZTIg
PSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9hcHBseU1pZGRsZXdhcmUpO1xuXG52YXIgX2NvbXBv
c2UgPSByZXF1aXJlKCcuL2NvbXBvc2UnKTtcblxudmFyIF9jb21wb3NlMiA9IF9pbnRlcm9wUmVx
dWlyZURlZmF1bHQoX2NvbXBvc2UpO1xuXG52YXIgX3dhcm5pbmcgPSByZXF1aXJlKCcuL3V0aWxz
L3dhcm5pbmcnKTtcblxudmFyIF93YXJuaW5nMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3dh
cm5pbmcpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4g
b2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyAnZGVmYXVsdCc6IG9iaiB9OyB9XG5cbi8q
XG4qIFRoaXMgaXMgYSBkdW1teSBmdW5jdGlvbiB0byBjaGVjayBpZiB0aGUgZnVuY3Rpb24gbmFt
ZSBoYXMgYmVlbiBhbHRlcmVkIGJ5IG1pbmlmaWNhdGlvbi5cbiogSWYgdGhlIGZ1bmN0aW9uIGhh
cyBiZWVuIG1pbmlmaWVkIGFuZCBOT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nLCB3YXJuIHRoZSB1
c2VyLlxuKi9cbmZ1bmN0aW9uIGlzQ3J1c2hlZCgpIHt9XG5cbmlmIChwcm9jZXNzLmVudi5OT0RF
X0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIHR5cGVvZiBpc0NydXNoZWQubmFtZSA9PT0gJ3N0cmlu
ZycgJiYgaXNDcnVzaGVkLm5hbWUgIT09ICdpc0NydXNoZWQnKSB7XG4gICgwLCBfd2FybmluZzJb
J2RlZmF1bHQnXSkoJ1lvdSBhcmUgY3VycmVudGx5IHVzaW5nIG1pbmlmaWVkIGNvZGUgb3V0c2lk
ZSBvZiBOT0RFX0VOViA9PT0gXFwncHJvZHVjdGlvblxcJy4gJyArICdUaGlzIG1lYW5zIHRoYXQg
eW91IGFyZSBydW5uaW5nIGEgc2xvd2VyIGRldmVsb3BtZW50IGJ1aWxkIG9mIFJlZHV4LiAnICsg
J1lvdSBjYW4gdXNlIGxvb3NlLWVudmlmeSAoaHR0cHM6Ly9naXRodWIuY29tL3plcnRvc2gvbG9v
c2UtZW52aWZ5KSBmb3IgYnJvd3NlcmlmeSAnICsgJ29yIERlZmluZVBsdWdpbiBmb3Igd2VicGFj
ayAoaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8zMDAzMDAzMSkgJyArICd0byBl
bnN1cmUgeW91IGhhdmUgdGhlIGNvcnJlY3QgY29kZSBmb3IgeW91ciBwcm9kdWN0aW9uIGJ1aWxk
LicpO1xufVxuXG5leHBvcnRzLmNyZWF0ZVN0b3JlID0gX2NyZWF0ZVN0b3JlMlsnZGVmYXVsdCdd
O1xuZXhwb3J0cy5jb21iaW5lUmVkdWNlcnMgPSBfY29tYmluZVJlZHVjZXJzMlsnZGVmYXVsdCdd
O1xuZXhwb3J0cy5iaW5kQWN0aW9uQ3JlYXRvcnMgPSBfYmluZEFjdGlvbkNyZWF0b3JzMlsnZGVm
YXVsdCddO1xuZXhwb3J0cy5hcHBseU1pZGRsZXdhcmUgPSBfYXBwbHlNaWRkbGV3YXJlMlsnZGVm
YXVsdCddO1xuZXhwb3J0cy5jb21wb3NlID0gX2NvbXBvc2UyWydkZWZhdWx0J107XG5cblxuLyoq
KioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVkdXgvbGliL2lu
ZGV4LmpzXG4gKiogbW9kdWxlIGlkID0gMzBcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIs
Ii8qIVxuICBDb3B5cmlnaHQgKGMpIDIwMTYgSmVkIFdhdHNvbi5cbiAgTGljZW5zZWQgdW5kZXIg
dGhlIE1JVCBMaWNlbnNlIChNSVQpLCBzZWVcbiAgaHR0cDovL2plZHdhdHNvbi5naXRodWIuaW8v
Y2xhc3NuYW1lc1xuKi9cbi8qIGdsb2JhbCBkZWZpbmUgKi9cblxuKGZ1bmN0aW9uICgpIHtcblx0
J3VzZSBzdHJpY3QnO1xuXG5cdHZhciBoYXNPd24gPSB7fS5oYXNPd25Qcm9wZXJ0eTtcblxuXHRm
dW5jdGlvbiBjbGFzc05hbWVzICgpIHtcblx0XHR2YXIgY2xhc3NlcyA9IFtdO1xuXG5cdFx0Zm9y
ICh2YXIgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcblx0XHRcdHZhciBhcmcg
PSBhcmd1bWVudHNbaV07XG5cdFx0XHRpZiAoIWFyZykgY29udGludWU7XG5cblx0XHRcdHZhciBh
cmdUeXBlID0gdHlwZW9mIGFyZztcblxuXHRcdFx0aWYgKGFyZ1R5cGUgPT09ICdzdHJpbmcnIHx8
IGFyZ1R5cGUgPT09ICdudW1iZXInKSB7XG5cdFx0XHRcdGNsYXNzZXMucHVzaChhcmcpO1xuXHRc
dFx0fSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGFyZykpIHtcblx0XHRcdFx0Y2xhc3Nlcy5wdXNo
KGNsYXNzTmFtZXMuYXBwbHkobnVsbCwgYXJnKSk7XG5cdFx0XHR9IGVsc2UgaWYgKGFyZ1R5cGUg
PT09ICdvYmplY3QnKSB7XG5cdFx0XHRcdGZvciAodmFyIGtleSBpbiBhcmcpIHtcblx0XHRcdFx0
XHRpZiAoaGFzT3duLmNhbGwoYXJnLCBrZXkpICYmIGFyZ1trZXldKSB7XG5cdFx0XHRcdFx0XHRj
bGFzc2VzLnB1c2goa2V5KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9
XG5cblx0XHRyZXR1cm4gY2xhc3Nlcy5qb2luKCcgJyk7XG5cdH1cblxuXHRpZiAodHlwZW9mIG1v
ZHVsZSAhPT0gJ3VuZGVmaW5lZCcgJiYgbW9kdWxlLmV4cG9ydHMpIHtcblx0XHRtb2R1bGUuZXhw
b3J0cyA9IGNsYXNzTmFtZXM7XG5cdH0gZWxzZSBpZiAodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0
aW9uJyAmJiB0eXBlb2YgZGVmaW5lLmFtZCA9PT0gJ29iamVjdCcgJiYgZGVmaW5lLmFtZCkge1xu
XHRcdC8vIHJlZ2lzdGVyIGFzICdjbGFzc25hbWVzJywgY29uc2lzdGVudCB3aXRoIG5wbSBwYWNr
YWdlIG5hbWVcblx0XHRkZWZpbmUoJ2NsYXNzbmFtZXMnLCBbXSwgZnVuY3Rpb24gKCkge1xuXHRc
dFx0cmV0dXJuIGNsYXNzTmFtZXM7XG5cdFx0fSk7XG5cdH0gZWxzZSB7XG5cdFx0d2luZG93LmNs
YXNzTmFtZXMgPSBjbGFzc05hbWVzO1xuXHR9XG59KCkpO1xuXG5cblxuLyoqKioqKioqKioqKioq
KioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vY2xhc3NuYW1lcy9pbmRleC5qc1xuICoq
IG1vZHVsZSBpZCA9IDMxXG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENv
cHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyBy
ZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBC
U0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9v
dCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICog
b2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUg
c2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHR5cGVjaGVja3NcbiAqIFxuICovXG5cbi8qZXNsaW50
LWRpc2FibGUgbm8tc2VsZi1jb21wYXJlICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIGhhc093
blByb3BlcnR5ID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqXG4gKiBp
bmxpbmVkIE9iamVjdC5pcyBwb2x5ZmlsbCB0byBhdm9pZCByZXF1aXJpbmcgY29uc3VtZXJzIHNo
aXAgdGhlaXIgb3duXG4gKiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2Nz
L1dlYi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9HbG9iYWxfT2JqZWN0cy9PYmplY3QvaXNcbiAqL1xu
ZnVuY3Rpb24gaXMoeCwgeSkge1xuICAvLyBTYW1lVmFsdWUgYWxnb3JpdGhtXG4gIGlmICh4ID09
PSB5KSB7XG4gICAgLy8gU3RlcHMgMS01LCA3LTEwXG4gICAgLy8gU3RlcHMgNi5iLTYuZTogKzAg
IT0gLTBcbiAgICAvLyBBZGRlZCB0aGUgbm9uemVybyB5IGNoZWNrIHRvIG1ha2UgRmxvdyBoYXBw
eSwgYnV0IGl0IGlzIHJlZHVuZGFudFxuICAgIHJldHVybiB4ICE9PSAwIHx8IHkgIT09IDAgfHwg
MSAvIHggPT09IDEgLyB5O1xuICB9IGVsc2Uge1xuICAgIC8vIFN0ZXAgNi5hOiBOYU4gPT0gTmFO
XG4gICAgcmV0dXJuIHggIT09IHggJiYgeSAhPT0geTtcbiAgfVxufVxuXG4vKipcbiAqIFBlcmZv
cm1zIGVxdWFsaXR5IGJ5IGl0ZXJhdGluZyB0aHJvdWdoIGtleXMgb24gYW4gb2JqZWN0IGFuZCBy
ZXR1cm5pbmcgZmFsc2VcbiAqIHdoZW4gYW55IGtleSBoYXMgdmFsdWVzIHdoaWNoIGFyZSBub3Qg
c3RyaWN0bHkgZXF1YWwgYmV0d2VlbiB0aGUgYXJndW1lbnRzLlxuICogUmV0dXJucyB0cnVlIHdo
ZW4gdGhlIHZhbHVlcyBvZiBhbGwga2V5cyBhcmUgc3RyaWN0bHkgZXF1YWwuXG4gKi9cbmZ1bmN0
aW9uIHNoYWxsb3dFcXVhbChvYmpBLCBvYmpCKSB7XG4gIGlmIChpcyhvYmpBLCBvYmpCKSkge1xu
ICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgaWYgKHR5cGVvZiBvYmpBICE9PSAnb2JqZWN0JyB8
fCBvYmpBID09PSBudWxsIHx8IHR5cGVvZiBvYmpCICE9PSAnb2JqZWN0JyB8fCBvYmpCID09PSBu
dWxsKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgdmFyIGtleXNBID0gT2JqZWN0Lmtl
eXMob2JqQSk7XG4gIHZhciBrZXlzQiA9IE9iamVjdC5rZXlzKG9iakIpO1xuXG4gIGlmIChrZXlz
QS5sZW5ndGggIT09IGtleXNCLmxlbmd0aCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4g
IC8vIFRlc3QgZm9yIEEncyBrZXlzIGRpZmZlcmVudCBmcm9tIEIuXG4gIGZvciAodmFyIGkgPSAw
OyBpIDwga2V5c0EubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAoIWhhc093blByb3BlcnR5LmNhbGwo
b2JqQiwga2V5c0FbaV0pIHx8ICFpcyhvYmpBW2tleXNBW2ldXSwgb2JqQltrZXlzQVtpXV0pKSB7
XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59XG5c
bm1vZHVsZS5leHBvcnRzID0gc2hhbGxvd0VxdWFsO1xuXG5cbi8qKioqKioqKioqKioqKioqKlxu
ICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L2ZianMvbGliL3NoYWxsb3dFcXVhbC5qc1xuICoq
IG1vZHVsZSBpZCA9IDMyXG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCJ2YXIgYmFzZUdl
dFRhZyA9IHJlcXVpcmUoJy4vX2Jhc2VHZXRUYWcnKSxcbiAgICBnZXRQcm90b3R5cGUgPSByZXF1
aXJlKCcuL19nZXRQcm90b3R5cGUnKSxcbiAgICBpc09iamVjdExpa2UgPSByZXF1aXJlKCcuL2lz
T2JqZWN0TGlrZScpO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMu
ICovXG52YXIgb2JqZWN0VGFnID0gJ1tvYmplY3QgT2JqZWN0XSc7XG5cbi8qKiBVc2VkIGZvciBi
dWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBmdW5jUHJvdG8gPSBGdW5jdGlvbi5w
cm90b3R5cGUsXG4gICAgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNl
ZCB0byByZXNvbHZlIHRoZSBkZWNvbXBpbGVkIHNvdXJjZSBvZiBmdW5jdGlvbnMuICovXG52YXIg
ZnVuY1RvU3RyaW5nID0gZnVuY1Byb3RvLnRvU3RyaW5nO1xuXG4vKiogVXNlZCB0byBjaGVjayBv
YmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVj
dFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKiogVXNlZCB0byBpbmZlciB0aGUgYE9iamVjdGAg
Y29uc3RydWN0b3IuICovXG52YXIgb2JqZWN0Q3RvclN0cmluZyA9IGZ1bmNUb1N0cmluZy5jYWxs
KE9iamVjdCk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSBwbGFpbiBvYmplY3Qs
IHRoYXQgaXMsIGFuIG9iamVjdCBjcmVhdGVkIGJ5IHRoZVxuICogYE9iamVjdGAgY29uc3RydWN0
b3Igb3Igb25lIHdpdGggYSBgW1tQcm90b3R5cGVdXWAgb2YgYG51bGxgLlxuICpcbiAqIEBzdGF0
aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC44LjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4g
KiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29s
ZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgcGxhaW4gb2JqZWN0LCBlbHNlIGBm
YWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIGZ1bmN0aW9uIEZvbygpIHtcbiAqICAgdGhpcy5h
ID0gMTtcbiAqIH1cbiAqXG4gKiBfLmlzUGxhaW5PYmplY3QobmV3IEZvbyk7XG4gKiAvLyA9PiBm
YWxzZVxuICpcbiAqIF8uaXNQbGFpbk9iamVjdChbMSwgMiwgM10pO1xuICogLy8gPT4gZmFsc2Vc
biAqXG4gKiBfLmlzUGxhaW5PYmplY3QoeyAneCc6IDAsICd5JzogMCB9KTtcbiAqIC8vID0+IHRy
dWVcbiAqXG4gKiBfLmlzUGxhaW5PYmplY3QoT2JqZWN0LmNyZWF0ZShudWxsKSk7XG4gKiAvLyA9
PiB0cnVlXG4gKi9cbmZ1bmN0aW9uIGlzUGxhaW5PYmplY3QodmFsdWUpIHtcbiAgaWYgKCFpc09i
amVjdExpa2UodmFsdWUpIHx8IGJhc2VHZXRUYWcodmFsdWUpICE9IG9iamVjdFRhZykge1xuICAg
IHJldHVybiBmYWxzZTtcbiAgfVxuICB2YXIgcHJvdG8gPSBnZXRQcm90b3R5cGUodmFsdWUpO1xu
ICBpZiAocHJvdG8gPT09IG51bGwpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICB2YXIgQ3Rv
ciA9IGhhc093blByb3BlcnR5LmNhbGwocHJvdG8sICdjb25zdHJ1Y3RvcicpICYmIHByb3RvLmNv
bnN0cnVjdG9yO1xuICByZXR1cm4gdHlwZW9mIEN0b3IgPT0gJ2Z1bmN0aW9uJyAmJiBDdG9yIGlu
c3RhbmNlb2YgQ3RvciAmJlxuICAgIGZ1bmNUb1N0cmluZy5jYWxsKEN0b3IpID09IG9iamVjdEN0
b3JTdHJpbmc7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNQbGFpbk9iamVjdDtcblxuXG5cbi8q
KioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L2xvZGFzaC9pc1Bs
YWluT2JqZWN0LmpzXG4gKiogbW9kdWxlIGlkID0gMzNcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxu
ICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAq
IEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNl
ZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZp
bGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9u
YWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRT
IGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5c
bnZhciBET01MYXp5VHJlZSA9IHJlcXVpcmUoJy4vRE9NTGF6eVRyZWUnKTtcbnZhciBEYW5nZXIg
PSByZXF1aXJlKCcuL0RhbmdlcicpO1xudmFyIFJlYWN0RE9NQ29tcG9uZW50VHJlZSA9IHJlcXVp
cmUoJy4vUmVhY3RET01Db21wb25lbnRUcmVlJyk7XG52YXIgUmVhY3RJbnN0cnVtZW50YXRpb24g
PSByZXF1aXJlKCcuL1JlYWN0SW5zdHJ1bWVudGF0aW9uJyk7XG5cbnZhciBjcmVhdGVNaWNyb3Nv
ZnRVbnNhZmVMb2NhbEZ1bmN0aW9uID0gcmVxdWlyZSgnLi9jcmVhdGVNaWNyb3NvZnRVbnNhZmVM
b2NhbEZ1bmN0aW9uJyk7XG52YXIgc2V0SW5uZXJIVE1MID0gcmVxdWlyZSgnLi9zZXRJbm5lckhU
TUwnKTtcbnZhciBzZXRUZXh0Q29udGVudCA9IHJlcXVpcmUoJy4vc2V0VGV4dENvbnRlbnQnKTtc
blxuZnVuY3Rpb24gZ2V0Tm9kZUFmdGVyKHBhcmVudE5vZGUsIG5vZGUpIHtcbiAgLy8gU3BlY2lh
bCBjYXNlIGZvciB0ZXh0IGNvbXBvbmVudHMsIHdoaWNoIHJldHVybiBbb3BlbiwgY2xvc2VdIGNv
bW1lbnRzXG4gIC8vIGZyb20gZ2V0SG9zdE5vZGUuXG4gIGlmIChBcnJheS5pc0FycmF5KG5vZGUp
KSB7XG4gICAgbm9kZSA9IG5vZGVbMV07XG4gIH1cbiAgcmV0dXJuIG5vZGUgPyBub2RlLm5leHRT
aWJsaW5nIDogcGFyZW50Tm9kZS5maXJzdENoaWxkO1xufVxuXG4vKipcbiAqIEluc2VydHMgYGNo
aWxkTm9kZWAgYXMgYSBjaGlsZCBvZiBgcGFyZW50Tm9kZWAgYXQgdGhlIGBpbmRleGAuXG4gKlxu
ICogQHBhcmFtIHtET01FbGVtZW50fSBwYXJlbnROb2RlIFBhcmVudCBub2RlIGluIHdoaWNoIHRv
IGluc2VydC5cbiAqIEBwYXJhbSB7RE9NRWxlbWVudH0gY2hpbGROb2RlIENoaWxkIG5vZGUgdG8g
aW5zZXJ0LlxuICogQHBhcmFtIHtudW1iZXJ9IGluZGV4IEluZGV4IGF0IHdoaWNoIHRvIGluc2Vy
dCB0aGUgY2hpbGQuXG4gKiBAaW50ZXJuYWxcbiAqL1xudmFyIGluc2VydENoaWxkQXQgPSBjcmVh
dGVNaWNyb3NvZnRVbnNhZmVMb2NhbEZ1bmN0aW9uKGZ1bmN0aW9uIChwYXJlbnROb2RlLCBjaGls
ZE5vZGUsIHJlZmVyZW5jZU5vZGUpIHtcbiAgLy8gV2UgcmVseSBleGNsdXNpdmVseSBvbiBgaW5z
ZXJ0QmVmb3JlKG5vZGUsIG51bGwpYCBpbnN0ZWFkIG9mIGFsc28gdXNpbmdcbiAgLy8gYGFwcGVu
ZENoaWxkKG5vZGUpYC4gKFVzaW5nIGB1bmRlZmluZWRgIGlzIG5vdCBhbGxvd2VkIGJ5IGFsbCBi
cm93c2VycyBzb1xuICAvLyB3ZSBhcmUgY2FyZWZ1bCB0byB1c2UgYG51bGxgLilcbiAgcGFyZW50
Tm9kZS5pbnNlcnRCZWZvcmUoY2hpbGROb2RlLCByZWZlcmVuY2VOb2RlKTtcbn0pO1xuXG5mdW5j
dGlvbiBpbnNlcnRMYXp5VHJlZUNoaWxkQXQocGFyZW50Tm9kZSwgY2hpbGRUcmVlLCByZWZlcmVu
Y2VOb2RlKSB7XG4gIERPTUxhenlUcmVlLmluc2VydFRyZWVCZWZvcmUocGFyZW50Tm9kZSwgY2hp
bGRUcmVlLCByZWZlcmVuY2VOb2RlKTtcbn1cblxuZnVuY3Rpb24gbW92ZUNoaWxkKHBhcmVudE5v
ZGUsIGNoaWxkTm9kZSwgcmVmZXJlbmNlTm9kZSkge1xuICBpZiAoQXJyYXkuaXNBcnJheShjaGls
ZE5vZGUpKSB7XG4gICAgbW92ZURlbGltaXRlZFRleHQocGFyZW50Tm9kZSwgY2hpbGROb2RlWzBd
LCBjaGlsZE5vZGVbMV0sIHJlZmVyZW5jZU5vZGUpO1xuICB9IGVsc2Uge1xuICAgIGluc2VydENo
aWxkQXQocGFyZW50Tm9kZSwgY2hpbGROb2RlLCByZWZlcmVuY2VOb2RlKTtcbiAgfVxufVxuXG5m
dW5jdGlvbiByZW1vdmVDaGlsZChwYXJlbnROb2RlLCBjaGlsZE5vZGUpIHtcbiAgaWYgKEFycmF5
LmlzQXJyYXkoY2hpbGROb2RlKSkge1xuICAgIHZhciBjbG9zaW5nQ29tbWVudCA9IGNoaWxkTm9k
ZVsxXTtcbiAgICBjaGlsZE5vZGUgPSBjaGlsZE5vZGVbMF07XG4gICAgcmVtb3ZlRGVsaW1pdGVk
VGV4dChwYXJlbnROb2RlLCBjaGlsZE5vZGUsIGNsb3NpbmdDb21tZW50KTtcbiAgICBwYXJlbnRO
b2RlLnJlbW92ZUNoaWxkKGNsb3NpbmdDb21tZW50KTtcbiAgfVxuICBwYXJlbnROb2RlLnJlbW92
ZUNoaWxkKGNoaWxkTm9kZSk7XG59XG5cbmZ1bmN0aW9uIG1vdmVEZWxpbWl0ZWRUZXh0KHBhcmVu
dE5vZGUsIG9wZW5pbmdDb21tZW50LCBjbG9zaW5nQ29tbWVudCwgcmVmZXJlbmNlTm9kZSkge1xu
ICB2YXIgbm9kZSA9IG9wZW5pbmdDb21tZW50O1xuICB3aGlsZSAodHJ1ZSkge1xuICAgIHZhciBu
ZXh0Tm9kZSA9IG5vZGUubmV4dFNpYmxpbmc7XG4gICAgaW5zZXJ0Q2hpbGRBdChwYXJlbnROb2Rl
LCBub2RlLCByZWZlcmVuY2VOb2RlKTtcbiAgICBpZiAobm9kZSA9PT0gY2xvc2luZ0NvbW1lbnQp
IHtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBub2RlID0gbmV4dE5vZGU7XG4gIH1cbn1cblxu
ZnVuY3Rpb24gcmVtb3ZlRGVsaW1pdGVkVGV4dChwYXJlbnROb2RlLCBzdGFydE5vZGUsIGNsb3Np
bmdDb21tZW50KSB7XG4gIHdoaWxlICh0cnVlKSB7XG4gICAgdmFyIG5vZGUgPSBzdGFydE5vZGUu
bmV4dFNpYmxpbmc7XG4gICAgaWYgKG5vZGUgPT09IGNsb3NpbmdDb21tZW50KSB7XG4gICAgICAv
LyBUaGUgY2xvc2luZyBjb21tZW50IGlzIHJlbW92ZWQgYnkgUmVhY3RNdWx0aUNoaWxkLlxuICAg
ICAgYnJlYWs7XG4gICAgfSBlbHNlIHtcbiAgICAgIHBhcmVudE5vZGUucmVtb3ZlQ2hpbGQobm9k
ZSk7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHJlcGxhY2VEZWxpbWl0ZWRUZXh0KG9wZW5p
bmdDb21tZW50LCBjbG9zaW5nQ29tbWVudCwgc3RyaW5nVGV4dCkge1xuICB2YXIgcGFyZW50Tm9k
ZSA9IG9wZW5pbmdDb21tZW50LnBhcmVudE5vZGU7XG4gIHZhciBub2RlQWZ0ZXJDb21tZW50ID0g
b3BlbmluZ0NvbW1lbnQubmV4dFNpYmxpbmc7XG4gIGlmIChub2RlQWZ0ZXJDb21tZW50ID09PSBj
bG9zaW5nQ29tbWVudCkge1xuICAgIC8vIFRoZXJlIGFyZSBubyB0ZXh0IG5vZGVzIGJldHdlZW4g
dGhlIG9wZW5pbmcgYW5kIGNsb3NpbmcgY29tbWVudHM7IGluc2VydFxuICAgIC8vIGEgbmV3IG9u
ZSBpZiBzdHJpbmdUZXh0IGlzbid0IGVtcHR5LlxuICAgIGlmIChzdHJpbmdUZXh0KSB7XG4gICAg
ICBpbnNlcnRDaGlsZEF0KHBhcmVudE5vZGUsIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHN0cmlu
Z1RleHQpLCBub2RlQWZ0ZXJDb21tZW50KTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgaWYgKHN0
cmluZ1RleHQpIHtcbiAgICAgIC8vIFNldCB0aGUgdGV4dCBjb250ZW50IG9mIHRoZSBmaXJzdCBu
b2RlIGFmdGVyIHRoZSBvcGVuaW5nIGNvbW1lbnQsIGFuZFxuICAgICAgLy8gcmVtb3ZlIGFsbCBm
b2xsb3dpbmcgbm9kZXMgdXAgdW50aWwgdGhlIGNsb3NpbmcgY29tbWVudC5cbiAgICAgIHNldFRl
eHRDb250ZW50KG5vZGVBZnRlckNvbW1lbnQsIHN0cmluZ1RleHQpO1xuICAgICAgcmVtb3ZlRGVs
aW1pdGVkVGV4dChwYXJlbnROb2RlLCBub2RlQWZ0ZXJDb21tZW50LCBjbG9zaW5nQ29tbWVudCk7
XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlbW92ZURlbGltaXRlZFRleHQocGFyZW50Tm9kZSwgb3Bl
bmluZ0NvbW1lbnQsIGNsb3NpbmdDb21tZW50KTtcbiAgICB9XG4gIH1cblxuICBpZiAocHJvY2Vz
cy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIFJlYWN0SW5zdHJ1bWVudGF0
aW9uLmRlYnVnVG9vbC5vbkhvc3RPcGVyYXRpb24oe1xuICAgICAgaW5zdGFuY2VJRDogUmVhY3RE
T01Db21wb25lbnRUcmVlLmdldEluc3RhbmNlRnJvbU5vZGUob3BlbmluZ0NvbW1lbnQpLl9kZWJ1
Z0lELFxuICAgICAgdHlwZTogJ3JlcGxhY2UgdGV4dCcsXG4gICAgICBwYXlsb2FkOiBzdHJpbmdU
ZXh0XG4gICAgfSk7XG4gIH1cbn1cblxudmFyIGRhbmdlcm91c2x5UmVwbGFjZU5vZGVXaXRoTWFy
a3VwID0gRGFuZ2VyLmRhbmdlcm91c2x5UmVwbGFjZU5vZGVXaXRoTWFya3VwO1xuaWYgKHByb2Nl
c3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgZGFuZ2Vyb3VzbHlSZXBsYWNl
Tm9kZVdpdGhNYXJrdXAgPSBmdW5jdGlvbiAob2xkQ2hpbGQsIG1hcmt1cCwgcHJldkluc3RhbmNl
KSB7XG4gICAgRGFuZ2VyLmRhbmdlcm91c2x5UmVwbGFjZU5vZGVXaXRoTWFya3VwKG9sZENoaWxk
LCBtYXJrdXApO1xuICAgIGlmIChwcmV2SW5zdGFuY2UuX2RlYnVnSUQgIT09IDApIHtcbiAgICAg
IFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vbkhvc3RPcGVyYXRpb24oe1xuICAgICAg
ICBpbnN0YW5jZUlEOiBwcmV2SW5zdGFuY2UuX2RlYnVnSUQsXG4gICAgICAgIHR5cGU6ICdyZXBs
YWNlIHdpdGgnLFxuICAgICAgICBwYXlsb2FkOiBtYXJrdXAudG9TdHJpbmcoKVxuICAgICAgfSk7
XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBuZXh0SW5zdGFuY2UgPSBSZWFjdERPTUNvbXBvbmVu
dFRyZWUuZ2V0SW5zdGFuY2VGcm9tTm9kZShtYXJrdXAubm9kZSk7XG4gICAgICBpZiAobmV4dElu
c3RhbmNlLl9kZWJ1Z0lEICE9PSAwKSB7XG4gICAgICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRl
YnVnVG9vbC5vbkhvc3RPcGVyYXRpb24oe1xuICAgICAgICAgIGluc3RhbmNlSUQ6IG5leHRJbnN0
YW5jZS5fZGVidWdJRCxcbiAgICAgICAgICB0eXBlOiAnbW91bnQnLFxuICAgICAgICAgIHBheWxv
YWQ6IG1hcmt1cC50b1N0cmluZygpXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfTtc
bn1cblxuLyoqXG4gKiBPcGVyYXRpb25zIGZvciB1cGRhdGluZyB3aXRoIERPTSBjaGlsZHJlbi5c
biAqL1xudmFyIERPTUNoaWxkcmVuT3BlcmF0aW9ucyA9IHtcbiAgZGFuZ2Vyb3VzbHlSZXBsYWNl
Tm9kZVdpdGhNYXJrdXA6IGRhbmdlcm91c2x5UmVwbGFjZU5vZGVXaXRoTWFya3VwLFxuXG4gIHJl
cGxhY2VEZWxpbWl0ZWRUZXh0OiByZXBsYWNlRGVsaW1pdGVkVGV4dCxcblxuICAvKipcbiAgICog
VXBkYXRlcyBhIGNvbXBvbmVudCdzIGNoaWxkcmVuIGJ5IHByb2Nlc3NpbmcgYSBzZXJpZXMgb2Yg
dXBkYXRlcy4gVGhlXG4gICAqIHVwZGF0ZSBjb25maWd1cmF0aW9ucyBhcmUgZWFjaCBleHBlY3Rl
ZCB0byBoYXZlIGEgYHBhcmVudE5vZGVgIHByb3BlcnR5LlxuICAgKlxuICAgKiBAcGFyYW0ge2Fy
cmF5PG9iamVjdD59IHVwZGF0ZXMgTGlzdCBvZiB1cGRhdGUgY29uZmlndXJhdGlvbnMuXG4gICAq
IEBpbnRlcm5hbFxuICAgKi9cbiAgcHJvY2Vzc1VwZGF0ZXM6IGZ1bmN0aW9uIChwYXJlbnROb2Rl
LCB1cGRhdGVzKSB7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlv
bicpIHtcbiAgICAgIHZhciBwYXJlbnROb2RlRGVidWdJRCA9IFJlYWN0RE9NQ29tcG9uZW50VHJl
ZS5nZXRJbnN0YW5jZUZyb21Ob2RlKHBhcmVudE5vZGUpLl9kZWJ1Z0lEO1xuICAgIH1cblxuICAg
IGZvciAodmFyIGsgPSAwOyBrIDwgdXBkYXRlcy5sZW5ndGg7IGsrKykge1xuICAgICAgdmFyIHVw
ZGF0ZSA9IHVwZGF0ZXNba107XG4gICAgICBzd2l0Y2ggKHVwZGF0ZS50eXBlKSB7XG4gICAgICAg
IGNhc2UgJ0lOU0VSVF9NQVJLVVAnOlxuICAgICAgICAgIGluc2VydExhenlUcmVlQ2hpbGRBdChw
YXJlbnROb2RlLCB1cGRhdGUuY29udGVudCwgZ2V0Tm9kZUFmdGVyKHBhcmVudE5vZGUsIHVwZGF0
ZS5hZnRlck5vZGUpKTtcbiAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdw
cm9kdWN0aW9uJykge1xuICAgICAgICAgICAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29s
Lm9uSG9zdE9wZXJhdGlvbih7XG4gICAgICAgICAgICAgIGluc3RhbmNlSUQ6IHBhcmVudE5vZGVE
ZWJ1Z0lELFxuICAgICAgICAgICAgICB0eXBlOiAnaW5zZXJ0IGNoaWxkJyxcbiAgICAgICAgICAg
ICAgcGF5bG9hZDoge1xuICAgICAgICAgICAgICAgIHRvSW5kZXg6IHVwZGF0ZS50b0luZGV4LFxu
ICAgICAgICAgICAgICAgIGNvbnRlbnQ6IHVwZGF0ZS5jb250ZW50LnRvU3RyaW5nKClcbiAgICAg
ICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFr
O1xuICAgICAgICBjYXNlICdNT1ZFX0VYSVNUSU5HJzpcbiAgICAgICAgICBtb3ZlQ2hpbGQocGFy
ZW50Tm9kZSwgdXBkYXRlLmZyb21Ob2RlLCBnZXROb2RlQWZ0ZXIocGFyZW50Tm9kZSwgdXBkYXRl
LmFmdGVyTm9kZSkpO1xuICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3By
b2R1Y3Rpb24nKSB7XG4gICAgICAgICAgICBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wu
b25Ib3N0T3BlcmF0aW9uKHtcbiAgICAgICAgICAgICAgaW5zdGFuY2VJRDogcGFyZW50Tm9kZURl
YnVnSUQsXG4gICAgICAgICAgICAgIHR5cGU6ICdtb3ZlIGNoaWxkJyxcbiAgICAgICAgICAgICAg
cGF5bG9hZDogeyBmcm9tSW5kZXg6IHVwZGF0ZS5mcm9tSW5kZXgsIHRvSW5kZXg6IHVwZGF0ZS50
b0luZGV4IH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztc
biAgICAgICAgY2FzZSAnU0VUX01BUktVUCc6XG4gICAgICAgICAgc2V0SW5uZXJIVE1MKHBhcmVu
dE5vZGUsIHVwZGF0ZS5jb250ZW50KTtcbiAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9F
TlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICAgICAgUmVhY3RJbnN0cnVtZW50YXRpb24u
ZGVidWdUb29sLm9uSG9zdE9wZXJhdGlvbih7XG4gICAgICAgICAgICAgIGluc3RhbmNlSUQ6IHBh
cmVudE5vZGVEZWJ1Z0lELFxuICAgICAgICAgICAgICB0eXBlOiAncmVwbGFjZSBjaGlsZHJlbics
XG4gICAgICAgICAgICAgIHBheWxvYWQ6IHVwZGF0ZS5jb250ZW50LnRvU3RyaW5nKClcbiAgICAg
ICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAn
VEVYVF9DT05URU5UJzpcbiAgICAgICAgICBzZXRUZXh0Q29udGVudChwYXJlbnROb2RlLCB1cGRh
dGUuY29udGVudCk7XG4gICAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJv
ZHVjdGlvbicpIHtcbiAgICAgICAgICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5v
bkhvc3RPcGVyYXRpb24oe1xuICAgICAgICAgICAgICBpbnN0YW5jZUlEOiBwYXJlbnROb2RlRGVi
dWdJRCxcbiAgICAgICAgICAgICAgdHlwZTogJ3JlcGxhY2UgdGV4dCcsXG4gICAgICAgICAgICAg
IHBheWxvYWQ6IHVwZGF0ZS5jb250ZW50LnRvU3RyaW5nKClcbiAgICAgICAgICAgIH0pO1xuICAg
ICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnUkVNT1ZFX05PREUnOlxu
ICAgICAgICAgIHJlbW92ZUNoaWxkKHBhcmVudE5vZGUsIHVwZGF0ZS5mcm9tTm9kZSk7XG4gICAg
ICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAg
ICAgICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vbkhvc3RPcGVyYXRpb24oe1xu
ICAgICAgICAgICAgICBpbnN0YW5jZUlEOiBwYXJlbnROb2RlRGVidWdJRCxcbiAgICAgICAgICAg
ICAgdHlwZTogJ3JlbW92ZSBjaGlsZCcsXG4gICAgICAgICAgICAgIHBheWxvYWQ6IHsgZnJvbUlu
ZGV4OiB1cGRhdGUuZnJvbUluZGV4IH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAg
ICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH1cbn07XG5cbm1vZHVsZS5leHBvcnRz
ID0gRE9NQ2hpbGRyZW5PcGVyYXRpb25zO1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdF
QlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0LWRvbS9saWIvRE9NQ2hpbGRyZW5PcGVyYXRpb25z
LmpzXG4gKiogbW9kdWxlIGlkID0gMzRcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8q
KlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0
aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhl
IHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRc
biAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4g
dGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBET01O
YW1lc3BhY2VzID0ge1xuICBodG1sOiAnaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCcsXG4g
IG1hdGhtbDogJ2h0dHA6Ly93d3cudzMub3JnLzE5OTgvTWF0aC9NYXRoTUwnLFxuICBzdmc6ICdo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zydcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gRE9NTmFt
ZXNwYWNlcztcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoq
IC4vfi9yZWFjdC1kb20vbGliL0RPTU5hbWVzcGFjZXMuanNcbiAqKiBtb2R1bGUgaWQgPSAzNVxu
ICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVz
ZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlz
IHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3Vu
ZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBz
b3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4g
YmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxu
ICogXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgX3Byb2RJbnZhcmlhbnQgPSByZXF1aXJl
KCcuL3JlYWN0UHJvZEludmFyaWFudCcpO1xuXG52YXIgaW52YXJpYW50ID0gcmVxdWlyZSgnZmJq
cy9saWIvaW52YXJpYW50Jyk7XG5cbi8qKlxuICogSW5qZWN0YWJsZSBvcmRlcmluZyBvZiBldmVu
dCBwbHVnaW5zLlxuICovXG52YXIgZXZlbnRQbHVnaW5PcmRlciA9IG51bGw7XG5cbi8qKlxuICog
SW5qZWN0YWJsZSBtYXBwaW5nIGZyb20gbmFtZXMgdG8gZXZlbnQgcGx1Z2luIG1vZHVsZXMuXG4g
Ki9cbnZhciBuYW1lc1RvUGx1Z2lucyA9IHt9O1xuXG4vKipcbiAqIFJlY29tcHV0ZXMgdGhlIHBs
dWdpbiBsaXN0IHVzaW5nIHRoZSBpbmplY3RlZCBwbHVnaW5zIGFuZCBwbHVnaW4gb3JkZXJpbmcu
XG4gKlxuICogQHByaXZhdGVcbiAqL1xuZnVuY3Rpb24gcmVjb21wdXRlUGx1Z2luT3JkZXJpbmco
KSB7XG4gIGlmICghZXZlbnRQbHVnaW5PcmRlcikge1xuICAgIC8vIFdhaXQgdW50aWwgYW4gYGV2
ZW50UGx1Z2luT3JkZXJgIGlzIGluamVjdGVkLlxuICAgIHJldHVybjtcbiAgfVxuICBmb3IgKHZh
ciBwbHVnaW5OYW1lIGluIG5hbWVzVG9QbHVnaW5zKSB7XG4gICAgdmFyIHBsdWdpbk1vZHVsZSA9
IG5hbWVzVG9QbHVnaW5zW3BsdWdpbk5hbWVdO1xuICAgIHZhciBwbHVnaW5JbmRleCA9IGV2ZW50
UGx1Z2luT3JkZXIuaW5kZXhPZihwbHVnaW5OYW1lKTtcbiAgICAhKHBsdWdpbkluZGV4ID4gLTEp
ID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxz
ZSwgJ0V2ZW50UGx1Z2luUmVnaXN0cnk6IENhbm5vdCBpbmplY3QgZXZlbnQgcGx1Z2lucyB0aGF0
IGRvIG5vdCBleGlzdCBpbiB0aGUgcGx1Z2luIG9yZGVyaW5nLCBgJXNgLicsIHBsdWdpbk5hbWUp
IDogX3Byb2RJbnZhcmlhbnQoJzk2JywgcGx1Z2luTmFtZSkgOiB2b2lkIDA7XG4gICAgaWYgKEV2
ZW50UGx1Z2luUmVnaXN0cnkucGx1Z2luc1twbHVnaW5JbmRleF0pIHtcbiAgICAgIGNvbnRpbnVl
O1xuICAgIH1cbiAgICAhcGx1Z2luTW9kdWxlLmV4dHJhY3RFdmVudHMgPyBwcm9jZXNzLmVudi5O
T0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnRXZlbnRQbHVnaW5S
ZWdpc3RyeTogRXZlbnQgcGx1Z2lucyBtdXN0IGltcGxlbWVudCBhbiBgZXh0cmFjdEV2ZW50c2Ag
bWV0aG9kLCBidXQgYCVzYCBkb2VzIG5vdC4nLCBwbHVnaW5OYW1lKSA6IF9wcm9kSW52YXJpYW50
KCc5NycsIHBsdWdpbk5hbWUpIDogdm9pZCAwO1xuICAgIEV2ZW50UGx1Z2luUmVnaXN0cnkucGx1
Z2luc1twbHVnaW5JbmRleF0gPSBwbHVnaW5Nb2R1bGU7XG4gICAgdmFyIHB1Ymxpc2hlZEV2ZW50
cyA9IHBsdWdpbk1vZHVsZS5ldmVudFR5cGVzO1xuICAgIGZvciAodmFyIGV2ZW50TmFtZSBpbiBw
dWJsaXNoZWRFdmVudHMpIHtcbiAgICAgICFwdWJsaXNoRXZlbnRGb3JQbHVnaW4ocHVibGlzaGVk
RXZlbnRzW2V2ZW50TmFtZV0sIHBsdWdpbk1vZHVsZSwgZXZlbnROYW1lKSA/IHByb2Nlc3MuZW52
Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdFdmVudFBsdWdp
blJlZ2lzdHJ5OiBGYWlsZWQgdG8gcHVibGlzaCBldmVudCBgJXNgIGZvciBwbHVnaW4gYCVzYC4n
LCBldmVudE5hbWUsIHBsdWdpbk5hbWUpIDogX3Byb2RJbnZhcmlhbnQoJzk4JywgZXZlbnROYW1l
LCBwbHVnaW5OYW1lKSA6IHZvaWQgMDtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBQdWJsaXNo
ZXMgYW4gZXZlbnQgc28gdGhhdCBpdCBjYW4gYmUgZGlzcGF0Y2hlZCBieSB0aGUgc3VwcGxpZWQg
cGx1Z2luLlxuICpcbiAqIEBwYXJhbSB7b2JqZWN0fSBkaXNwYXRjaENvbmZpZyBEaXNwYXRjaCBj
b25maWd1cmF0aW9uIGZvciB0aGUgZXZlbnQuXG4gKiBAcGFyYW0ge29iamVjdH0gUGx1Z2luTW9k
dWxlIFBsdWdpbiBwdWJsaXNoaW5nIHRoZSBldmVudC5cbiAqIEByZXR1cm4ge2Jvb2xlYW59IFRy
dWUgaWYgdGhlIGV2ZW50IHdhcyBzdWNjZXNzZnVsbHkgcHVibGlzaGVkLlxuICogQHByaXZhdGVc
biAqL1xuZnVuY3Rpb24gcHVibGlzaEV2ZW50Rm9yUGx1Z2luKGRpc3BhdGNoQ29uZmlnLCBwbHVn
aW5Nb2R1bGUsIGV2ZW50TmFtZSkge1xuICAhIUV2ZW50UGx1Z2luUmVnaXN0cnkuZXZlbnROYW1l
RGlzcGF0Y2hDb25maWdzLmhhc093blByb3BlcnR5KGV2ZW50TmFtZSkgPyBwcm9jZXNzLmVudi5O
T0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnRXZlbnRQbHVnaW5I
dWI6IE1vcmUgdGhhbiBvbmUgcGx1Z2luIGF0dGVtcHRlZCB0byBwdWJsaXNoIHRoZSBzYW1lIGV2
ZW50IG5hbWUsIGAlc2AuJywgZXZlbnROYW1lKSA6IF9wcm9kSW52YXJpYW50KCc5OScsIGV2ZW50
TmFtZSkgOiB2b2lkIDA7XG4gIEV2ZW50UGx1Z2luUmVnaXN0cnkuZXZlbnROYW1lRGlzcGF0Y2hD
b25maWdzW2V2ZW50TmFtZV0gPSBkaXNwYXRjaENvbmZpZztcblxuICB2YXIgcGhhc2VkUmVnaXN0
cmF0aW9uTmFtZXMgPSBkaXNwYXRjaENvbmZpZy5waGFzZWRSZWdpc3RyYXRpb25OYW1lcztcbiAg
aWYgKHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzKSB7XG4gICAgZm9yICh2YXIgcGhhc2VOYW1lIGlu
IHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzKSB7XG4gICAgICBpZiAocGhhc2VkUmVnaXN0cmF0aW9u
TmFtZXMuaGFzT3duUHJvcGVydHkocGhhc2VOYW1lKSkge1xuICAgICAgICB2YXIgcGhhc2VkUmVn
aXN0cmF0aW9uTmFtZSA9IHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzW3BoYXNlTmFtZV07XG4gICAg
ICAgIHB1Ymxpc2hSZWdpc3RyYXRpb25OYW1lKHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWUsIHBsdWdp
bk1vZHVsZSwgZXZlbnROYW1lKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4g
IH0gZWxzZSBpZiAoZGlzcGF0Y2hDb25maWcucmVnaXN0cmF0aW9uTmFtZSkge1xuICAgIHB1Ymxp
c2hSZWdpc3RyYXRpb25OYW1lKGRpc3BhdGNoQ29uZmlnLnJlZ2lzdHJhdGlvbk5hbWUsIHBsdWdp
bk1vZHVsZSwgZXZlbnROYW1lKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICByZXR1cm4gZmFs
c2U7XG59XG5cbi8qKlxuICogUHVibGlzaGVzIGEgcmVnaXN0cmF0aW9uIG5hbWUgdGhhdCBpcyB1
c2VkIHRvIGlkZW50aWZ5IGRpc3BhdGNoZWQgZXZlbnRzIGFuZFxuICogY2FuIGJlIHVzZWQgd2l0
aCBgRXZlbnRQbHVnaW5IdWIucHV0TGlzdGVuZXJgIHRvIHJlZ2lzdGVyIGxpc3RlbmVycy5cbiAq
XG4gKiBAcGFyYW0ge3N0cmluZ30gcmVnaXN0cmF0aW9uTmFtZSBSZWdpc3RyYXRpb24gbmFtZSB0
byBhZGQuXG4gKiBAcGFyYW0ge29iamVjdH0gUGx1Z2luTW9kdWxlIFBsdWdpbiBwdWJsaXNoaW5n
IHRoZSBldmVudC5cbiAqIEBwcml2YXRlXG4gKi9cbmZ1bmN0aW9uIHB1Ymxpc2hSZWdpc3RyYXRp
b25OYW1lKHJlZ2lzdHJhdGlvbk5hbWUsIHBsdWdpbk1vZHVsZSwgZXZlbnROYW1lKSB7XG4gICEh
RXZlbnRQbHVnaW5SZWdpc3RyeS5yZWdpc3RyYXRpb25OYW1lTW9kdWxlc1tyZWdpc3RyYXRpb25O
YW1lXSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQo
ZmFsc2UsICdFdmVudFBsdWdpbkh1YjogTW9yZSB0aGFuIG9uZSBwbHVnaW4gYXR0ZW1wdGVkIHRv
IHB1Ymxpc2ggdGhlIHNhbWUgcmVnaXN0cmF0aW9uIG5hbWUsIGAlc2AuJywgcmVnaXN0cmF0aW9u
TmFtZSkgOiBfcHJvZEludmFyaWFudCgnMTAwJywgcmVnaXN0cmF0aW9uTmFtZSkgOiB2b2lkIDA7
XG4gIEV2ZW50UGx1Z2luUmVnaXN0cnkucmVnaXN0cmF0aW9uTmFtZU1vZHVsZXNbcmVnaXN0cmF0
aW9uTmFtZV0gPSBwbHVnaW5Nb2R1bGU7XG4gIEV2ZW50UGx1Z2luUmVnaXN0cnkucmVnaXN0cmF0
aW9uTmFtZURlcGVuZGVuY2llc1tyZWdpc3RyYXRpb25OYW1lXSA9IHBsdWdpbk1vZHVsZS5ldmVu
dFR5cGVzW2V2ZW50TmFtZV0uZGVwZW5kZW5jaWVzO1xuXG4gIGlmIChwcm9jZXNzLmVudi5OT0RF
X0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgdmFyIGxvd2VyQ2FzZWROYW1lID0gcmVnaXN0
cmF0aW9uTmFtZS50b0xvd2VyQ2FzZSgpO1xuICAgIEV2ZW50UGx1Z2luUmVnaXN0cnkucG9zc2li
bGVSZWdpc3RyYXRpb25OYW1lc1tsb3dlckNhc2VkTmFtZV0gPSByZWdpc3RyYXRpb25OYW1lO1xu
XG4gICAgaWYgKHJlZ2lzdHJhdGlvbk5hbWUgPT09ICdvbkRvdWJsZUNsaWNrJykge1xuICAgICAg
RXZlbnRQbHVnaW5SZWdpc3RyeS5wb3NzaWJsZVJlZ2lzdHJhdGlvbk5hbWVzLm9uZGJsY2xpY2sg
PSByZWdpc3RyYXRpb25OYW1lO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIFJlZ2lzdGVycyBw
bHVnaW5zIHNvIHRoYXQgdGhleSBjYW4gZXh0cmFjdCBhbmQgZGlzcGF0Y2ggZXZlbnRzLlxuICpc
biAqIEBzZWUge0V2ZW50UGx1Z2luSHVifVxuICovXG52YXIgRXZlbnRQbHVnaW5SZWdpc3RyeSA9
IHtcbiAgLyoqXG4gICAqIE9yZGVyZWQgbGlzdCBvZiBpbmplY3RlZCBwbHVnaW5zLlxuICAgKi9c
biAgcGx1Z2luczogW10sXG5cbiAgLyoqXG4gICAqIE1hcHBpbmcgZnJvbSBldmVudCBuYW1lIHRv
IGRpc3BhdGNoIGNvbmZpZ1xuICAgKi9cbiAgZXZlbnROYW1lRGlzcGF0Y2hDb25maWdzOiB7fSxc
blxuICAvKipcbiAgICogTWFwcGluZyBmcm9tIHJlZ2lzdHJhdGlvbiBuYW1lIHRvIHBsdWdpbiBt
b2R1bGVcbiAgICovXG4gIHJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVzOiB7fSxcblxuICAvKipcbiAg
ICogTWFwcGluZyBmcm9tIHJlZ2lzdHJhdGlvbiBuYW1lIHRvIGV2ZW50IG5hbWVcbiAgICovXG4g
IHJlZ2lzdHJhdGlvbk5hbWVEZXBlbmRlbmNpZXM6IHt9LFxuXG4gIC8qKlxuICAgKiBNYXBwaW5n
IGZyb20gbG93ZXJjYXNlIHJlZ2lzdHJhdGlvbiBuYW1lcyB0byB0aGUgcHJvcGVybHkgY2FzZWQg
dmVyc2lvbixcbiAgICogdXNlZCB0byB3YXJuIGluIHRoZSBjYXNlIG9mIG1pc3NpbmcgZXZlbnQg
aGFuZGxlcnMuIEF2YWlsYWJsZVxuICAgKiBvbmx5IGluIF9fREVWX18uXG4gICAqIEB0eXBlIHtP
YmplY3R9XG4gICAqL1xuICBwb3NzaWJsZVJlZ2lzdHJhdGlvbk5hbWVzOiBwcm9jZXNzLmVudi5O
T0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8ge30gOiBudWxsLFxuICAvLyBUcnVzdCB0aGUgZGV2
ZWxvcGVyIHRvIG9ubHkgdXNlIHBvc3NpYmxlUmVnaXN0cmF0aW9uTmFtZXMgaW4gX19ERVZfX1xu
XG4gIC8qKlxuICAgKiBJbmplY3RzIGFuIG9yZGVyaW5nIG9mIHBsdWdpbnMgKGJ5IHBsdWdpbiBu
YW1lKS4gVGhpcyBhbGxvd3MgdGhlIG9yZGVyaW5nXG4gICAqIHRvIGJlIGRlY291cGxlZCBmcm9t
IGluamVjdGlvbiBvZiB0aGUgYWN0dWFsIHBsdWdpbnMgc28gdGhhdCBvcmRlcmluZyBpc1xuICAg
KiBhbHdheXMgZGV0ZXJtaW5pc3RpYyByZWdhcmRsZXNzIG9mIHBhY2thZ2luZywgb24tdGhlLWZs
eSBpbmplY3Rpb24sIGV0Yy5cbiAgICpcbiAgICogQHBhcmFtIHthcnJheX0gSW5qZWN0ZWRFdmVu
dFBsdWdpbk9yZGVyXG4gICAqIEBpbnRlcm5hbFxuICAgKiBAc2VlIHtFdmVudFBsdWdpbkh1Yi5p
bmplY3Rpb24uaW5qZWN0RXZlbnRQbHVnaW5PcmRlcn1cbiAgICovXG4gIGluamVjdEV2ZW50UGx1
Z2luT3JkZXI6IGZ1bmN0aW9uIChpbmplY3RlZEV2ZW50UGx1Z2luT3JkZXIpIHtcbiAgICAhIWV2
ZW50UGx1Z2luT3JkZXIgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8g
aW52YXJpYW50KGZhbHNlLCAnRXZlbnRQbHVnaW5SZWdpc3RyeTogQ2Fubm90IGluamVjdCBldmVu
dCBwbHVnaW4gb3JkZXJpbmcgbW9yZSB0aGFuIG9uY2UuIFlvdSBhcmUgbGlrZWx5IHRyeWluZyB0
byBsb2FkIG1vcmUgdGhhbiBvbmUgY29weSBvZiBSZWFjdC4nKSA6IF9wcm9kSW52YXJpYW50KCcx
MDEnKSA6IHZvaWQgMDtcbiAgICAvLyBDbG9uZSB0aGUgb3JkZXJpbmcgc28gaXQgY2Fubm90IGJl
IGR5bmFtaWNhbGx5IG11dGF0ZWQuXG4gICAgZXZlbnRQbHVnaW5PcmRlciA9IEFycmF5LnByb3Rv
dHlwZS5zbGljZS5jYWxsKGluamVjdGVkRXZlbnRQbHVnaW5PcmRlcik7XG4gICAgcmVjb21wdXRl
UGx1Z2luT3JkZXJpbmcoKTtcbiAgfSxcblxuICAvKipcbiAgICogSW5qZWN0cyBwbHVnaW5zIHRv
IGJlIHVzZWQgYnkgYEV2ZW50UGx1Z2luSHViYC4gVGhlIHBsdWdpbiBuYW1lcyBtdXN0IGJlXG4g
ICAqIGluIHRoZSBvcmRlcmluZyBpbmplY3RlZCBieSBgaW5qZWN0RXZlbnRQbHVnaW5PcmRlcmAu
XG4gICAqXG4gICAqIFBsdWdpbnMgY2FuIGJlIGluamVjdGVkIGFzIHBhcnQgb2YgcGFnZSBpbml0
aWFsaXphdGlvbiBvciBvbi10aGUtZmx5LlxuICAgKlxuICAgKiBAcGFyYW0ge29iamVjdH0gaW5q
ZWN0ZWROYW1lc1RvUGx1Z2lucyBNYXAgZnJvbSBuYW1lcyB0byBwbHVnaW4gbW9kdWxlcy5cbiAg
ICogQGludGVybmFsXG4gICAqIEBzZWUge0V2ZW50UGx1Z2luSHViLmluamVjdGlvbi5pbmplY3RF
dmVudFBsdWdpbnNCeU5hbWV9XG4gICAqL1xuICBpbmplY3RFdmVudFBsdWdpbnNCeU5hbWU6IGZ1
bmN0aW9uIChpbmplY3RlZE5hbWVzVG9QbHVnaW5zKSB7XG4gICAgdmFyIGlzT3JkZXJpbmdEaXJ0
eSA9IGZhbHNlO1xuICAgIGZvciAodmFyIHBsdWdpbk5hbWUgaW4gaW5qZWN0ZWROYW1lc1RvUGx1
Z2lucykge1xuICAgICAgaWYgKCFpbmplY3RlZE5hbWVzVG9QbHVnaW5zLmhhc093blByb3BlcnR5
KHBsdWdpbk5hbWUpKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgdmFyIHBs
dWdpbk1vZHVsZSA9IGluamVjdGVkTmFtZXNUb1BsdWdpbnNbcGx1Z2luTmFtZV07XG4gICAgICBp
ZiAoIW5hbWVzVG9QbHVnaW5zLmhhc093blByb3BlcnR5KHBsdWdpbk5hbWUpIHx8IG5hbWVzVG9Q
bHVnaW5zW3BsdWdpbk5hbWVdICE9PSBwbHVnaW5Nb2R1bGUpIHtcbiAgICAgICAgISFuYW1lc1Rv
UGx1Z2luc1twbHVnaW5OYW1lXSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlv
bicgPyBpbnZhcmlhbnQoZmFsc2UsICdFdmVudFBsdWdpblJlZ2lzdHJ5OiBDYW5ub3QgaW5qZWN0
IHR3byBkaWZmZXJlbnQgZXZlbnQgcGx1Z2lucyB1c2luZyB0aGUgc2FtZSBuYW1lLCBgJXNgLics
IHBsdWdpbk5hbWUpIDogX3Byb2RJbnZhcmlhbnQoJzEwMicsIHBsdWdpbk5hbWUpIDogdm9pZCAw
O1xuICAgICAgICBuYW1lc1RvUGx1Z2luc1twbHVnaW5OYW1lXSA9IHBsdWdpbk1vZHVsZTtcbiAg
ICAgICAgaXNPcmRlcmluZ0RpcnR5ID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGlz
T3JkZXJpbmdEaXJ0eSkge1xuICAgICAgcmVjb21wdXRlUGx1Z2luT3JkZXJpbmcoKTtcbiAgICB9
XG4gIH0sXG5cbiAgLyoqXG4gICAqIExvb2tzIHVwIHRoZSBwbHVnaW4gZm9yIHRoZSBzdXBwbGll
ZCBldmVudC5cbiAgICpcbiAgICogQHBhcmFtIHtvYmplY3R9IGV2ZW50IEEgc3ludGhldGljIGV2
ZW50LlxuICAgKiBAcmV0dXJuIHs/b2JqZWN0fSBUaGUgcGx1Z2luIHRoYXQgY3JlYXRlZCB0aGUg
c3VwcGxpZWQgZXZlbnQuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgZ2V0UGx1Z2luTW9kdWxl
Rm9yRXZlbnQ6IGZ1bmN0aW9uIChldmVudCkge1xuICAgIHZhciBkaXNwYXRjaENvbmZpZyA9IGV2
ZW50LmRpc3BhdGNoQ29uZmlnO1xuICAgIGlmIChkaXNwYXRjaENvbmZpZy5yZWdpc3RyYXRpb25O
YW1lKSB7XG4gICAgICByZXR1cm4gRXZlbnRQbHVnaW5SZWdpc3RyeS5yZWdpc3RyYXRpb25OYW1l
TW9kdWxlc1tkaXNwYXRjaENvbmZpZy5yZWdpc3RyYXRpb25OYW1lXSB8fCBudWxsO1xuICAgIH1c
biAgICBpZiAoZGlzcGF0Y2hDb25maWcucGhhc2VkUmVnaXN0cmF0aW9uTmFtZXMgIT09IHVuZGVm
aW5lZCkge1xuICAgICAgLy8gcHVsbGluZyBwaGFzZWRSZWdpc3RyYXRpb25OYW1lcyBvdXQgb2Yg
ZGlzcGF0Y2hDb25maWcgaGVscHMgRmxvdyBzZWVcbiAgICAgIC8vIHRoYXQgaXQgaXMgbm90IHVu
ZGVmaW5lZC5cbiAgICAgIHZhciBwaGFzZWRSZWdpc3RyYXRpb25OYW1lcyA9IGRpc3BhdGNoQ29u
ZmlnLnBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzO1xuXG4gICAgICBmb3IgKHZhciBwaGFzZSBpbiBw
aGFzZWRSZWdpc3RyYXRpb25OYW1lcykge1xuICAgICAgICBpZiAoIXBoYXNlZFJlZ2lzdHJhdGlv
bk5hbWVzLmhhc093blByb3BlcnR5KHBoYXNlKSkge1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAg
ICAgICB9XG4gICAgICAgIHZhciBwbHVnaW5Nb2R1bGUgPSBFdmVudFBsdWdpblJlZ2lzdHJ5LnJl
Z2lzdHJhdGlvbk5hbWVNb2R1bGVzW3BoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzW3BoYXNlXV07XG4g
ICAgICAgIGlmIChwbHVnaW5Nb2R1bGUpIHtcbiAgICAgICAgICByZXR1cm4gcGx1Z2luTW9kdWxl
O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9LFxuXG4g
IC8qKlxuICAgKiBFeHBvc2VkIGZvciB1bml0IHRlc3RpbmcuXG4gICAqIEBwcml2YXRlXG4gICAq
L1xuICBfcmVzZXRFdmVudFBsdWdpbnM6IGZ1bmN0aW9uICgpIHtcbiAgICBldmVudFBsdWdpbk9y
ZGVyID0gbnVsbDtcbiAgICBmb3IgKHZhciBwbHVnaW5OYW1lIGluIG5hbWVzVG9QbHVnaW5zKSB7
XG4gICAgICBpZiAobmFtZXNUb1BsdWdpbnMuaGFzT3duUHJvcGVydHkocGx1Z2luTmFtZSkpIHtc
biAgICAgICAgZGVsZXRlIG5hbWVzVG9QbHVnaW5zW3BsdWdpbk5hbWVdO1xuICAgICAgfVxuICAg
IH1cbiAgICBFdmVudFBsdWdpblJlZ2lzdHJ5LnBsdWdpbnMubGVuZ3RoID0gMDtcblxuICAgIHZh
ciBldmVudE5hbWVEaXNwYXRjaENvbmZpZ3MgPSBFdmVudFBsdWdpblJlZ2lzdHJ5LmV2ZW50TmFt
ZURpc3BhdGNoQ29uZmlncztcbiAgICBmb3IgKHZhciBldmVudE5hbWUgaW4gZXZlbnROYW1lRGlz
cGF0Y2hDb25maWdzKSB7XG4gICAgICBpZiAoZXZlbnROYW1lRGlzcGF0Y2hDb25maWdzLmhhc093
blByb3BlcnR5KGV2ZW50TmFtZSkpIHtcbiAgICAgICAgZGVsZXRlIGV2ZW50TmFtZURpc3BhdGNo
Q29uZmlnc1tldmVudE5hbWVdO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciByZWdpc3RyYXRp
b25OYW1lTW9kdWxlcyA9IEV2ZW50UGx1Z2luUmVnaXN0cnkucmVnaXN0cmF0aW9uTmFtZU1vZHVs
ZXM7XG4gICAgZm9yICh2YXIgcmVnaXN0cmF0aW9uTmFtZSBpbiByZWdpc3RyYXRpb25OYW1lTW9k
dWxlcykge1xuICAgICAgaWYgKHJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVzLmhhc093blByb3BlcnR5
KHJlZ2lzdHJhdGlvbk5hbWUpKSB7XG4gICAgICAgIGRlbGV0ZSByZWdpc3RyYXRpb25OYW1lTW9k
dWxlc1tyZWdpc3RyYXRpb25OYW1lXTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAocHJvY2Vz
cy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgdmFyIHBvc3NpYmxlUmVn
aXN0cmF0aW9uTmFtZXMgPSBFdmVudFBsdWdpblJlZ2lzdHJ5LnBvc3NpYmxlUmVnaXN0cmF0aW9u
TmFtZXM7XG4gICAgICBmb3IgKHZhciBsb3dlckNhc2VkTmFtZSBpbiBwb3NzaWJsZVJlZ2lzdHJh
dGlvbk5hbWVzKSB7XG4gICAgICAgIGlmIChwb3NzaWJsZVJlZ2lzdHJhdGlvbk5hbWVzLmhhc093
blByb3BlcnR5KGxvd2VyQ2FzZWROYW1lKSkge1xuICAgICAgICAgIGRlbGV0ZSBwb3NzaWJsZVJl
Z2lzdHJhdGlvbk5hbWVzW2xvd2VyQ2FzZWROYW1lXTtcbiAgICAgICAgfVxuICAgICAgfVxuICAg
IH1cbiAgfVxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBFdmVudFBsdWdpblJlZ2lzdHJ5O1xuXG5c
bi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0LWRv
bS9saWIvRXZlbnRQbHVnaW5SZWdpc3RyeS5qc1xuICoqIG1vZHVsZSBpZCA9IDM2XG4gKiogbW9k
dWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZh
Y2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNl
IGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRo
ZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0
cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3Vu
ZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxu
J3VzZSBzdHJpY3QnO1xuXG52YXIgX3Byb2RJbnZhcmlhbnQgPSByZXF1aXJlKCcuL3JlYWN0UHJv
ZEludmFyaWFudCcpO1xuXG52YXIgUmVhY3RFcnJvclV0aWxzID0gcmVxdWlyZSgnLi9SZWFjdEVy
cm9yVXRpbHMnKTtcblxudmFyIGludmFyaWFudCA9IHJlcXVpcmUoJ2ZianMvbGliL2ludmFyaWFu
dCcpO1xudmFyIHdhcm5pbmcgPSByZXF1aXJlKCdmYmpzL2xpYi93YXJuaW5nJyk7XG5cbi8qKlxu
ICogSW5qZWN0ZWQgZGVwZW5kZW5jaWVzOlxuICovXG5cbi8qKlxuICogLSBgQ29tcG9uZW50VHJl
ZWA6IFtyZXF1aXJlZF0gTW9kdWxlIHRoYXQgY2FuIGNvbnZlcnQgYmV0d2VlbiBSZWFjdCBpbnN0
YW5jZXNcbiAqICAgYW5kIGFjdHVhbCBub2RlIHJlZmVyZW5jZXMuXG4gKi9cbnZhciBDb21wb25l
bnRUcmVlO1xudmFyIFRyZWVUcmF2ZXJzYWw7XG52YXIgaW5qZWN0aW9uID0ge1xuICBpbmplY3RD
b21wb25lbnRUcmVlOiBmdW5jdGlvbiAoSW5qZWN0ZWQpIHtcbiAgICBDb21wb25lbnRUcmVlID0g
SW5qZWN0ZWQ7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicp
IHtcbiAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5n
KEluamVjdGVkICYmIEluamVjdGVkLmdldE5vZGVGcm9tSW5zdGFuY2UgJiYgSW5qZWN0ZWQuZ2V0
SW5zdGFuY2VGcm9tTm9kZSwgJ0V2ZW50UGx1Z2luVXRpbHMuaW5qZWN0aW9uLmluamVjdENvbXBv
bmVudFRyZWUoLi4uKTogSW5qZWN0ZWQgJyArICdtb2R1bGUgaXMgbWlzc2luZyBnZXROb2RlRnJv
bUluc3RhbmNlIG9yIGdldEluc3RhbmNlRnJvbU5vZGUuJykgOiB2b2lkIDA7XG4gICAgfVxuICB9
LFxuICBpbmplY3RUcmVlVHJhdmVyc2FsOiBmdW5jdGlvbiAoSW5qZWN0ZWQpIHtcbiAgICBUcmVl
VHJhdmVyc2FsID0gSW5qZWN0ZWQ7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAn
cHJvZHVjdGlvbicpIHtcbiAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlv
bicgPyB3YXJuaW5nKEluamVjdGVkICYmIEluamVjdGVkLmlzQW5jZXN0b3IgJiYgSW5qZWN0ZWQu
Z2V0TG93ZXN0Q29tbW9uQW5jZXN0b3IsICdFdmVudFBsdWdpblV0aWxzLmluamVjdGlvbi5pbmpl
Y3RUcmVlVHJhdmVyc2FsKC4uLik6IEluamVjdGVkICcgKyAnbW9kdWxlIGlzIG1pc3NpbmcgaXNB
bmNlc3RvciBvciBnZXRMb3dlc3RDb21tb25BbmNlc3Rvci4nKSA6IHZvaWQgMDtcbiAgICB9XG4g
IH1cbn07XG5cbmZ1bmN0aW9uIGlzRW5kaXNoKHRvcExldmVsVHlwZSkge1xuICByZXR1cm4gdG9w
TGV2ZWxUeXBlID09PSAndG9wTW91c2VVcCcgfHwgdG9wTGV2ZWxUeXBlID09PSAndG9wVG91Y2hF
bmQnIHx8IHRvcExldmVsVHlwZSA9PT0gJ3RvcFRvdWNoQ2FuY2VsJztcbn1cblxuZnVuY3Rpb24g
aXNNb3ZlaXNoKHRvcExldmVsVHlwZSkge1xuICByZXR1cm4gdG9wTGV2ZWxUeXBlID09PSAndG9w
TW91c2VNb3ZlJyB8fCB0b3BMZXZlbFR5cGUgPT09ICd0b3BUb3VjaE1vdmUnO1xufVxuZnVuY3Rp
b24gaXNTdGFydGlzaCh0b3BMZXZlbFR5cGUpIHtcbiAgcmV0dXJuIHRvcExldmVsVHlwZSA9PT0g
J3RvcE1vdXNlRG93bicgfHwgdG9wTGV2ZWxUeXBlID09PSAndG9wVG91Y2hTdGFydCc7XG59XG5c
bnZhciB2YWxpZGF0ZUV2ZW50RGlzcGF0Y2hlcztcbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAh
PT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIHZhbGlkYXRlRXZlbnREaXNwYXRjaGVzID0gZnVuY3Rpb24g
KGV2ZW50KSB7XG4gICAgdmFyIGRpc3BhdGNoTGlzdGVuZXJzID0gZXZlbnQuX2Rpc3BhdGNoTGlz
dGVuZXJzO1xuICAgIHZhciBkaXNwYXRjaEluc3RhbmNlcyA9IGV2ZW50Ll9kaXNwYXRjaEluc3Rh
bmNlcztcblxuICAgIHZhciBsaXN0ZW5lcnNJc0FyciA9IEFycmF5LmlzQXJyYXkoZGlzcGF0Y2hM
aXN0ZW5lcnMpO1xuICAgIHZhciBsaXN0ZW5lcnNMZW4gPSBsaXN0ZW5lcnNJc0FyciA/IGRpc3Bh
dGNoTGlzdGVuZXJzLmxlbmd0aCA6IGRpc3BhdGNoTGlzdGVuZXJzID8gMSA6IDA7XG5cbiAgICB2
YXIgaW5zdGFuY2VzSXNBcnIgPSBBcnJheS5pc0FycmF5KGRpc3BhdGNoSW5zdGFuY2VzKTtcbiAg
ICB2YXIgaW5zdGFuY2VzTGVuID0gaW5zdGFuY2VzSXNBcnIgPyBkaXNwYXRjaEluc3RhbmNlcy5s
ZW5ndGggOiBkaXNwYXRjaEluc3RhbmNlcyA/IDEgOiAwO1xuXG4gICAgcHJvY2Vzcy5lbnYuTk9E
RV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoaW5zdGFuY2VzSXNBcnIgPT09IGxpc3Rl
bmVyc0lzQXJyICYmIGluc3RhbmNlc0xlbiA9PT0gbGlzdGVuZXJzTGVuLCAnRXZlbnRQbHVnaW5V
dGlsczogSW52YWxpZCBgZXZlbnRgLicpIDogdm9pZCAwO1xuICB9O1xufVxuXG4vKipcbiAqIERp
c3BhdGNoIHRoZSBldmVudCB0byB0aGUgbGlzdGVuZXIuXG4gKiBAcGFyYW0ge1N5bnRoZXRpY0V2
ZW50fSBldmVudCBTeW50aGV0aWNFdmVudCB0byBoYW5kbGVcbiAqIEBwYXJhbSB7Ym9vbGVhbn0g
c2ltdWxhdGVkIElmIHRoZSBldmVudCBpcyBzaW11bGF0ZWQgKGNoYW5nZXMgZXhuIGJlaGF2aW9y
KVxuICogQHBhcmFtIHtmdW5jdGlvbn0gbGlzdGVuZXIgQXBwbGljYXRpb24tbGV2ZWwgY2FsbGJh
Y2tcbiAqIEBwYXJhbSB7Kn0gaW5zdCBJbnRlcm5hbCBjb21wb25lbnQgaW5zdGFuY2VcbiAqL1xu
ZnVuY3Rpb24gZXhlY3V0ZURpc3BhdGNoKGV2ZW50LCBzaW11bGF0ZWQsIGxpc3RlbmVyLCBpbnN0
KSB7XG4gIHZhciB0eXBlID0gZXZlbnQudHlwZSB8fCAndW5rbm93bi1ldmVudCc7XG4gIGV2ZW50
LmN1cnJlbnRUYXJnZXQgPSBFdmVudFBsdWdpblV0aWxzLmdldE5vZGVGcm9tSW5zdGFuY2UoaW5z
dCk7XG4gIGlmIChzaW11bGF0ZWQpIHtcbiAgICBSZWFjdEVycm9yVXRpbHMuaW52b2tlR3VhcmRl
ZENhbGxiYWNrV2l0aENhdGNoKHR5cGUsIGxpc3RlbmVyLCBldmVudCk7XG4gIH0gZWxzZSB7XG4g
ICAgUmVhY3RFcnJvclV0aWxzLmludm9rZUd1YXJkZWRDYWxsYmFjayh0eXBlLCBsaXN0ZW5lciwg
ZXZlbnQpO1xuICB9XG4gIGV2ZW50LmN1cnJlbnRUYXJnZXQgPSBudWxsO1xufVxuXG4vKipcbiAq
IFN0YW5kYXJkL3NpbXBsZSBpdGVyYXRpb24gdGhyb3VnaCBhbiBldmVudCdzIGNvbGxlY3RlZCBk
aXNwYXRjaGVzLlxuICovXG5mdW5jdGlvbiBleGVjdXRlRGlzcGF0Y2hlc0luT3JkZXIoZXZlbnQs
IHNpbXVsYXRlZCkge1xuICB2YXIgZGlzcGF0Y2hMaXN0ZW5lcnMgPSBldmVudC5fZGlzcGF0Y2hM
aXN0ZW5lcnM7XG4gIHZhciBkaXNwYXRjaEluc3RhbmNlcyA9IGV2ZW50Ll9kaXNwYXRjaEluc3Rh
bmNlcztcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAg
ICB2YWxpZGF0ZUV2ZW50RGlzcGF0Y2hlcyhldmVudCk7XG4gIH1cbiAgaWYgKEFycmF5LmlzQXJy
YXkoZGlzcGF0Y2hMaXN0ZW5lcnMpKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkaXNwYXRj
aExpc3RlbmVycy5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKGV2ZW50LmlzUHJvcGFnYXRpb25T
dG9wcGVkKCkpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICAvLyBMaXN0ZW5lcnMg
YW5kIEluc3RhbmNlcyBhcmUgdHdvIHBhcmFsbGVsIGFycmF5cyB0aGF0IGFyZSBhbHdheXMgaW4g
c3luYy5cbiAgICAgIGV4ZWN1dGVEaXNwYXRjaChldmVudCwgc2ltdWxhdGVkLCBkaXNwYXRjaExp
c3RlbmVyc1tpXSwgZGlzcGF0Y2hJbnN0YW5jZXNbaV0pO1xuICAgIH1cbiAgfSBlbHNlIGlmIChk
aXNwYXRjaExpc3RlbmVycykge1xuICAgIGV4ZWN1dGVEaXNwYXRjaChldmVudCwgc2ltdWxhdGVk
LCBkaXNwYXRjaExpc3RlbmVycywgZGlzcGF0Y2hJbnN0YW5jZXMpO1xuICB9XG4gIGV2ZW50Ll9k
aXNwYXRjaExpc3RlbmVycyA9IG51bGw7XG4gIGV2ZW50Ll9kaXNwYXRjaEluc3RhbmNlcyA9IG51
bGw7XG59XG5cbi8qKlxuICogU3RhbmRhcmQvc2ltcGxlIGl0ZXJhdGlvbiB0aHJvdWdoIGFuIGV2
ZW50J3MgY29sbGVjdGVkIGRpc3BhdGNoZXMsIGJ1dCBzdG9wc1xuICogYXQgdGhlIGZpcnN0IGRp
c3BhdGNoIGV4ZWN1dGlvbiByZXR1cm5pbmcgdHJ1ZSwgYW5kIHJldHVybnMgdGhhdCBpZC5cbiAq
XG4gKiBAcmV0dXJuIHs/c3RyaW5nfSBpZCBvZiB0aGUgZmlyc3QgZGlzcGF0Y2ggZXhlY3V0aW9u
IHdobydzIGxpc3RlbmVyIHJldHVybnNcbiAqIHRydWUsIG9yIG51bGwgaWYgbm8gbGlzdGVuZXIg
cmV0dXJuZWQgdHJ1ZS5cbiAqL1xuZnVuY3Rpb24gZXhlY3V0ZURpc3BhdGNoZXNJbk9yZGVyU3Rv
cEF0VHJ1ZUltcGwoZXZlbnQpIHtcbiAgdmFyIGRpc3BhdGNoTGlzdGVuZXJzID0gZXZlbnQuX2Rp
c3BhdGNoTGlzdGVuZXJzO1xuICB2YXIgZGlzcGF0Y2hJbnN0YW5jZXMgPSBldmVudC5fZGlzcGF0
Y2hJbnN0YW5jZXM7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24n
KSB7XG4gICAgdmFsaWRhdGVFdmVudERpc3BhdGNoZXMoZXZlbnQpO1xuICB9XG4gIGlmIChBcnJh
eS5pc0FycmF5KGRpc3BhdGNoTGlzdGVuZXJzKSkge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
ZGlzcGF0Y2hMaXN0ZW5lcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmIChldmVudC5pc1Byb3Bh
Z2F0aW9uU3RvcHBlZCgpKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgLy8gTGlz
dGVuZXJzIGFuZCBJbnN0YW5jZXMgYXJlIHR3byBwYXJhbGxlbCBhcnJheXMgdGhhdCBhcmUgYWx3
YXlzIGluIHN5bmMuXG4gICAgICBpZiAoZGlzcGF0Y2hMaXN0ZW5lcnNbaV0oZXZlbnQsIGRpc3Bh
dGNoSW5zdGFuY2VzW2ldKSkge1xuICAgICAgICByZXR1cm4gZGlzcGF0Y2hJbnN0YW5jZXNbaV07
XG4gICAgICB9XG4gICAgfVxuICB9IGVsc2UgaWYgKGRpc3BhdGNoTGlzdGVuZXJzKSB7XG4gICAg
aWYgKGRpc3BhdGNoTGlzdGVuZXJzKGV2ZW50LCBkaXNwYXRjaEluc3RhbmNlcykpIHtcbiAgICAg
IHJldHVybiBkaXNwYXRjaEluc3RhbmNlcztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59
XG5cbi8qKlxuICogQHNlZSBleGVjdXRlRGlzcGF0Y2hlc0luT3JkZXJTdG9wQXRUcnVlSW1wbFxu
ICovXG5mdW5jdGlvbiBleGVjdXRlRGlzcGF0Y2hlc0luT3JkZXJTdG9wQXRUcnVlKGV2ZW50KSB7
XG4gIHZhciByZXQgPSBleGVjdXRlRGlzcGF0Y2hlc0luT3JkZXJTdG9wQXRUcnVlSW1wbChldmVu
dCk7XG4gIGV2ZW50Ll9kaXNwYXRjaEluc3RhbmNlcyA9IG51bGw7XG4gIGV2ZW50Ll9kaXNwYXRj
aExpc3RlbmVycyA9IG51bGw7XG4gIHJldHVybiByZXQ7XG59XG5cbi8qKlxuICogRXhlY3V0aW9u
IG9mIGEgXCJkaXJlY3RcIiBkaXNwYXRjaCAtIHRoZXJlIG11c3QgYmUgYXQgbW9zdCBvbmUgZGlz
cGF0Y2hcbiAqIGFjY3VtdWxhdGVkIG9uIHRoZSBldmVudCBvciBpdCBpcyBjb25zaWRlcmVkIGFu
IGVycm9yLiBJdCBkb2Vzbid0IHJlYWxseSBtYWtlXG4gKiBzZW5zZSBmb3IgYW4gZXZlbnQgd2l0
aCBtdWx0aXBsZSBkaXNwYXRjaGVzIChidWJibGVkKSB0byBrZWVwIHRyYWNrIG9mIHRoZVxuICog
cmV0dXJuIHZhbHVlcyBhdCBlYWNoIGRpc3BhdGNoIGV4ZWN1dGlvbiwgYnV0IGl0IGRvZXMgdGVu
ZCB0byBtYWtlIHNlbnNlIHdoZW5cbiAqIGRlYWxpbmcgd2l0aCBcImRpcmVjdFwiIGRpc3BhdGNo
ZXMuXG4gKlxuICogQHJldHVybiB7Kn0gVGhlIHJldHVybiB2YWx1ZSBvZiBleGVjdXRpbmcgdGhl
IHNpbmdsZSBkaXNwYXRjaC5cbiAqL1xuZnVuY3Rpb24gZXhlY3V0ZURpcmVjdERpc3BhdGNoKGV2
ZW50KSB7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4g
ICAgdmFsaWRhdGVFdmVudERpc3BhdGNoZXMoZXZlbnQpO1xuICB9XG4gIHZhciBkaXNwYXRjaExp
c3RlbmVyID0gZXZlbnQuX2Rpc3BhdGNoTGlzdGVuZXJzO1xuICB2YXIgZGlzcGF0Y2hJbnN0YW5j
ZSA9IGV2ZW50Ll9kaXNwYXRjaEluc3RhbmNlcztcbiAgISFBcnJheS5pc0FycmF5KGRpc3BhdGNo
TGlzdGVuZXIpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFy
aWFudChmYWxzZSwgJ2V4ZWN1dGVEaXJlY3REaXNwYXRjaCguLi4pOiBJbnZhbGlkIGBldmVudGAu
JykgOiBfcHJvZEludmFyaWFudCgnMTAzJykgOiB2b2lkIDA7XG4gIGV2ZW50LmN1cnJlbnRUYXJn
ZXQgPSBkaXNwYXRjaExpc3RlbmVyID8gRXZlbnRQbHVnaW5VdGlscy5nZXROb2RlRnJvbUluc3Rh
bmNlKGRpc3BhdGNoSW5zdGFuY2UpIDogbnVsbDtcbiAgdmFyIHJlcyA9IGRpc3BhdGNoTGlzdGVu
ZXIgPyBkaXNwYXRjaExpc3RlbmVyKGV2ZW50KSA6IG51bGw7XG4gIGV2ZW50LmN1cnJlbnRUYXJn
ZXQgPSBudWxsO1xuICBldmVudC5fZGlzcGF0Y2hMaXN0ZW5lcnMgPSBudWxsO1xuICBldmVudC5f
ZGlzcGF0Y2hJbnN0YW5jZXMgPSBudWxsO1xuICByZXR1cm4gcmVzO1xufVxuXG4vKipcbiAqIEBw
YXJhbSB7U3ludGhldGljRXZlbnR9IGV2ZW50XG4gKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlm
ZiBudW1iZXIgb2YgZGlzcGF0Y2hlcyBhY2N1bXVsYXRlZCBpcyBncmVhdGVyIHRoYW4gMC5cbiAq
L1xuZnVuY3Rpb24gaGFzRGlzcGF0Y2hlcyhldmVudCkge1xuICByZXR1cm4gISFldmVudC5fZGlz
cGF0Y2hMaXN0ZW5lcnM7XG59XG5cbi8qKlxuICogR2VuZXJhbCB1dGlsaXRpZXMgdGhhdCBhcmUg
dXNlZnVsIGluIGNyZWF0aW5nIGN1c3RvbSBFdmVudCBQbHVnaW5zLlxuICovXG52YXIgRXZlbnRQ
bHVnaW5VdGlscyA9IHtcbiAgaXNFbmRpc2g6IGlzRW5kaXNoLFxuICBpc01vdmVpc2g6IGlzTW92
ZWlzaCxcbiAgaXNTdGFydGlzaDogaXNTdGFydGlzaCxcblxuICBleGVjdXRlRGlyZWN0RGlzcGF0
Y2g6IGV4ZWN1dGVEaXJlY3REaXNwYXRjaCxcbiAgZXhlY3V0ZURpc3BhdGNoZXNJbk9yZGVyOiBl
eGVjdXRlRGlzcGF0Y2hlc0luT3JkZXIsXG4gIGV4ZWN1dGVEaXNwYXRjaGVzSW5PcmRlclN0b3BB
dFRydWU6IGV4ZWN1dGVEaXNwYXRjaGVzSW5PcmRlclN0b3BBdFRydWUsXG4gIGhhc0Rpc3BhdGNo
ZXM6IGhhc0Rpc3BhdGNoZXMsXG5cbiAgZ2V0SW5zdGFuY2VGcm9tTm9kZTogZnVuY3Rpb24gKG5v
ZGUpIHtcbiAgICByZXR1cm4gQ29tcG9uZW50VHJlZS5nZXRJbnN0YW5jZUZyb21Ob2RlKG5vZGUp
O1xuICB9LFxuICBnZXROb2RlRnJvbUluc3RhbmNlOiBmdW5jdGlvbiAobm9kZSkge1xuICAgIHJl
dHVybiBDb21wb25lbnRUcmVlLmdldE5vZGVGcm9tSW5zdGFuY2Uobm9kZSk7XG4gIH0sXG4gIGlz
QW5jZXN0b3I6IGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgcmV0dXJuIFRyZWVUcmF2ZXJzYWwuaXNB
bmNlc3RvcihhLCBiKTtcbiAgfSxcbiAgZ2V0TG93ZXN0Q29tbW9uQW5jZXN0b3I6IGZ1bmN0aW9u
IChhLCBiKSB7XG4gICAgcmV0dXJuIFRyZWVUcmF2ZXJzYWwuZ2V0TG93ZXN0Q29tbW9uQW5jZXN0
b3IoYSwgYik7XG4gIH0sXG4gIGdldFBhcmVudEluc3RhbmNlOiBmdW5jdGlvbiAoaW5zdCkge1xu
ICAgIHJldHVybiBUcmVlVHJhdmVyc2FsLmdldFBhcmVudEluc3RhbmNlKGluc3QpO1xuICB9LFxu
ICB0cmF2ZXJzZVR3b1BoYXNlOiBmdW5jdGlvbiAodGFyZ2V0LCBmbiwgYXJnKSB7XG4gICAgcmV0
dXJuIFRyZWVUcmF2ZXJzYWwudHJhdmVyc2VUd29QaGFzZSh0YXJnZXQsIGZuLCBhcmcpO1xuICB9
LFxuICB0cmF2ZXJzZUVudGVyTGVhdmU6IGZ1bmN0aW9uIChmcm9tLCB0bywgZm4sIGFyZ0Zyb20s
IGFyZ1RvKSB7XG4gICAgcmV0dXJuIFRyZWVUcmF2ZXJzYWwudHJhdmVyc2VFbnRlckxlYXZlKGZy
b20sIHRvLCBmbiwgYXJnRnJvbSwgYXJnVG8pO1xuICB9LFxuXG4gIGluamVjdGlvbjogaW5qZWN0
aW9uXG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IEV2ZW50UGx1Z2luVXRpbHM7XG5cblxuLyoqKioq
KioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3QtZG9tL2xpYi9F
dmVudFBsdWdpblV0aWxzLmpzXG4gKiogbW9kdWxlIGlkID0gMzdcbiAqKiBtb2R1bGUgY2h1bmtz
ID0gMFxuICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIElu
Yy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBs
aWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNF
TlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFk
ZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQ
QVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIFxuICovXG5cbid1c2Ug
c3RyaWN0JztcblxuLyoqXG4gKiBFc2NhcGUgYW5kIHdyYXAga2V5IHNvIGl0IGlzIHNhZmUgdG8g
dXNlIGFzIGEgcmVhY3RpZFxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgdG8gYmUgZXNjYXBl
ZC5cbiAqIEByZXR1cm4ge3N0cmluZ30gdGhlIGVzY2FwZWQga2V5LlxuICovXG5cbmZ1bmN0aW9u
IGVzY2FwZShrZXkpIHtcbiAgdmFyIGVzY2FwZVJlZ2V4ID0gL1s9Ol0vZztcbiAgdmFyIGVzY2Fw
ZXJMb29rdXAgPSB7XG4gICAgJz0nOiAnPTAnLFxuICAgICc6JzogJz0yJ1xuICB9O1xuICB2YXIg
ZXNjYXBlZFN0cmluZyA9ICgnJyArIGtleSkucmVwbGFjZShlc2NhcGVSZWdleCwgZnVuY3Rpb24g
KG1hdGNoKSB7XG4gICAgcmV0dXJuIGVzY2FwZXJMb29rdXBbbWF0Y2hdO1xuICB9KTtcblxuICBy
ZXR1cm4gJyQnICsgZXNjYXBlZFN0cmluZztcbn1cblxuLyoqXG4gKiBVbmVzY2FwZSBhbmQgdW53
cmFwIGtleSBmb3IgaHVtYW4tcmVhZGFibGUgZGlzcGxheVxuICpcbiAqIEBwYXJhbSB7c3RyaW5n
fSBrZXkgdG8gdW5lc2NhcGUuXG4gKiBAcmV0dXJuIHtzdHJpbmd9IHRoZSB1bmVzY2FwZWQga2V5
LlxuICovXG5mdW5jdGlvbiB1bmVzY2FwZShrZXkpIHtcbiAgdmFyIHVuZXNjYXBlUmVnZXggPSAv
KD0wfD0yKS9nO1xuICB2YXIgdW5lc2NhcGVyTG9va3VwID0ge1xuICAgICc9MCc6ICc9JyxcbiAg
ICAnPTInOiAnOidcbiAgfTtcbiAgdmFyIGtleVN1YnN0cmluZyA9IGtleVswXSA9PT0gJy4nICYm
IGtleVsxXSA9PT0gJyQnID8ga2V5LnN1YnN0cmluZygyKSA6IGtleS5zdWJzdHJpbmcoMSk7XG5c
biAgcmV0dXJuICgnJyArIGtleVN1YnN0cmluZykucmVwbGFjZSh1bmVzY2FwZVJlZ2V4LCBmdW5j
dGlvbiAobWF0Y2gpIHtcbiAgICByZXR1cm4gdW5lc2NhcGVyTG9va3VwW21hdGNoXTtcbiAgfSk7
XG59XG5cbnZhciBLZXlFc2NhcGVVdGlscyA9IHtcbiAgZXNjYXBlOiBlc2NhcGUsXG4gIHVuZXNj
YXBlOiB1bmVzY2FwZVxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBLZXlFc2NhcGVVdGlscztcblxu
XG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFjdC1k
b20vbGliL0tleUVzY2FwZVV0aWxzLmpzXG4gKiogbW9kdWxlIGlkID0gMzhcbiAqKiBtb2R1bGUg
Y2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJv
b2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29k
ZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4g
KiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUu
IEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGlu
IHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNl
IHN0cmljdCc7XG5cbnZhciBfcHJvZEludmFyaWFudCA9IHJlcXVpcmUoJy4vcmVhY3RQcm9kSW52
YXJpYW50Jyk7XG5cbnZhciBSZWFjdFByb3BUeXBlc1NlY3JldCA9IHJlcXVpcmUoJy4vUmVhY3RQ
cm9wVHlwZXNTZWNyZXQnKTtcbnZhciBwcm9wVHlwZXNGYWN0b3J5ID0gcmVxdWlyZSgncHJvcC10
eXBlcy9mYWN0b3J5Jyk7XG5cbnZhciBSZWFjdCA9IHJlcXVpcmUoJ3JlYWN0L2xpYi9SZWFjdCcp
O1xudmFyIFByb3BUeXBlcyA9IHByb3BUeXBlc0ZhY3RvcnkoUmVhY3QuaXNWYWxpZEVsZW1lbnQp
O1xuXG52YXIgaW52YXJpYW50ID0gcmVxdWlyZSgnZmJqcy9saWIvaW52YXJpYW50Jyk7XG52YXIg
d2FybmluZyA9IHJlcXVpcmUoJ2ZianMvbGliL3dhcm5pbmcnKTtcblxudmFyIGhhc1JlYWRPbmx5
VmFsdWUgPSB7XG4gIGJ1dHRvbjogdHJ1ZSxcbiAgY2hlY2tib3g6IHRydWUsXG4gIGltYWdlOiB0
cnVlLFxuICBoaWRkZW46IHRydWUsXG4gIHJhZGlvOiB0cnVlLFxuICByZXNldDogdHJ1ZSxcbiAg
c3VibWl0OiB0cnVlXG59O1xuXG5mdW5jdGlvbiBfYXNzZXJ0U2luZ2xlTGluayhpbnB1dFByb3Bz
KSB7XG4gICEoaW5wdXRQcm9wcy5jaGVja2VkTGluayA9PSBudWxsIHx8IGlucHV0UHJvcHMudmFs
dWVMaW5rID09IG51bGwpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/
IGludmFyaWFudChmYWxzZSwgJ0Nhbm5vdCBwcm92aWRlIGEgY2hlY2tlZExpbmsgYW5kIGEgdmFs
dWVMaW5rLiBJZiB5b3Ugd2FudCB0byB1c2UgY2hlY2tlZExpbmssIHlvdSBwcm9iYWJseSBkb25c
XCd0IHdhbnQgdG8gdXNlIHZhbHVlTGluayBhbmQgdmljZSB2ZXJzYS4nKSA6IF9wcm9kSW52YXJp
YW50KCc4NycpIDogdm9pZCAwO1xufVxuZnVuY3Rpb24gX2Fzc2VydFZhbHVlTGluayhpbnB1dFBy
b3BzKSB7XG4gIF9hc3NlcnRTaW5nbGVMaW5rKGlucHV0UHJvcHMpO1xuICAhKGlucHV0UHJvcHMu
dmFsdWUgPT0gbnVsbCAmJiBpbnB1dFByb3BzLm9uQ2hhbmdlID09IG51bGwpID8gcHJvY2Vzcy5l
bnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ0Nhbm5vdCBw
cm92aWRlIGEgdmFsdWVMaW5rIGFuZCBhIHZhbHVlIG9yIG9uQ2hhbmdlIGV2ZW50LiBJZiB5b3Ug
d2FudCB0byB1c2UgdmFsdWUgb3Igb25DaGFuZ2UsIHlvdSBwcm9iYWJseSBkb25cXCd0IHdhbnQg
dG8gdXNlIHZhbHVlTGluay4nKSA6IF9wcm9kSW52YXJpYW50KCc4OCcpIDogdm9pZCAwO1xufVxu
XG5mdW5jdGlvbiBfYXNzZXJ0Q2hlY2tlZExpbmsoaW5wdXRQcm9wcykge1xuICBfYXNzZXJ0U2lu
Z2xlTGluayhpbnB1dFByb3BzKTtcbiAgIShpbnB1dFByb3BzLmNoZWNrZWQgPT0gbnVsbCAmJiBp
bnB1dFByb3BzLm9uQ2hhbmdlID09IG51bGwpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdw
cm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ0Nhbm5vdCBwcm92aWRlIGEgY2hlY2tlZExp
bmsgYW5kIGEgY2hlY2tlZCBwcm9wZXJ0eSBvciBvbkNoYW5nZSBldmVudC4gSWYgeW91IHdhbnQg
dG8gdXNlIGNoZWNrZWQgb3Igb25DaGFuZ2UsIHlvdSBwcm9iYWJseSBkb25cXCd0IHdhbnQgdG8g
dXNlIGNoZWNrZWRMaW5rJykgOiBfcHJvZEludmFyaWFudCgnODknKSA6IHZvaWQgMDtcbn1cblxu
dmFyIHByb3BUeXBlcyA9IHtcbiAgdmFsdWU6IGZ1bmN0aW9uIChwcm9wcywgcHJvcE5hbWUsIGNv
bXBvbmVudE5hbWUpIHtcbiAgICBpZiAoIXByb3BzW3Byb3BOYW1lXSB8fCBoYXNSZWFkT25seVZh
bHVlW3Byb3BzLnR5cGVdIHx8IHByb3BzLm9uQ2hhbmdlIHx8IHByb3BzLnJlYWRPbmx5IHx8IHBy
b3BzLmRpc2FibGVkKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIG5l
dyBFcnJvcignWW91IHByb3ZpZGVkIGEgYHZhbHVlYCBwcm9wIHRvIGEgZm9ybSBmaWVsZCB3aXRo
b3V0IGFuICcgKyAnYG9uQ2hhbmdlYCBoYW5kbGVyLiBUaGlzIHdpbGwgcmVuZGVyIGEgcmVhZC1v
bmx5IGZpZWxkLiBJZiAnICsgJ3RoZSBmaWVsZCBzaG91bGQgYmUgbXV0YWJsZSB1c2UgYGRlZmF1
bHRWYWx1ZWAuIE90aGVyd2lzZSwgJyArICdzZXQgZWl0aGVyIGBvbkNoYW5nZWAgb3IgYHJlYWRP
bmx5YC4nKTtcbiAgfSxcbiAgY2hlY2tlZDogZnVuY3Rpb24gKHByb3BzLCBwcm9wTmFtZSwgY29t
cG9uZW50TmFtZSkge1xuICAgIGlmICghcHJvcHNbcHJvcE5hbWVdIHx8IHByb3BzLm9uQ2hhbmdl
IHx8IHByb3BzLnJlYWRPbmx5IHx8IHByb3BzLmRpc2FibGVkKSB7XG4gICAgICByZXR1cm4gbnVs
bDtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBFcnJvcignWW91IHByb3ZpZGVkIGEgYGNoZWNrZWRg
IHByb3AgdG8gYSBmb3JtIGZpZWxkIHdpdGhvdXQgYW4gJyArICdgb25DaGFuZ2VgIGhhbmRsZXIu
IFRoaXMgd2lsbCByZW5kZXIgYSByZWFkLW9ubHkgZmllbGQuIElmICcgKyAndGhlIGZpZWxkIHNo
b3VsZCBiZSBtdXRhYmxlIHVzZSBgZGVmYXVsdENoZWNrZWRgLiBPdGhlcndpc2UsICcgKyAnc2V0
IGVpdGhlciBgb25DaGFuZ2VgIG9yIGByZWFkT25seWAuJyk7XG4gIH0sXG4gIG9uQ2hhbmdlOiBQ
cm9wVHlwZXMuZnVuY1xufTtcblxudmFyIGxvZ2dlZFR5cGVGYWlsdXJlcyA9IHt9O1xuZnVuY3Rp
b24gZ2V0RGVjbGFyYXRpb25FcnJvckFkZGVuZHVtKG93bmVyKSB7XG4gIGlmIChvd25lcikge1xu
ICAgIHZhciBuYW1lID0gb3duZXIuZ2V0TmFtZSgpO1xuICAgIGlmIChuYW1lKSB7XG4gICAgICBy
ZXR1cm4gJyBDaGVjayB0aGUgcmVuZGVyIG1ldGhvZCBvZiBgJyArIG5hbWUgKyAnYC4nO1xuICAg
IH1cbiAgfVxuICByZXR1cm4gJyc7XG59XG5cbi8qKlxuICogUHJvdmlkZSBhIGxpbmtlZCBgdmFs
dWVgIGF0dHJpYnV0ZSBmb3IgY29udHJvbGxlZCBmb3Jtcy4gWW91IHNob3VsZCBub3QgdXNlXG4g
KiB0aGlzIG91dHNpZGUgb2YgdGhlIFJlYWN0RE9NIGNvbnRyb2xsZWQgZm9ybSBjb21wb25lbnRz
LlxuICovXG52YXIgTGlua2VkVmFsdWVVdGlscyA9IHtcbiAgY2hlY2tQcm9wVHlwZXM6IGZ1bmN0
aW9uICh0YWdOYW1lLCBwcm9wcywgb3duZXIpIHtcbiAgICBmb3IgKHZhciBwcm9wTmFtZSBpbiBw
cm9wVHlwZXMpIHtcbiAgICAgIGlmIChwcm9wVHlwZXMuaGFzT3duUHJvcGVydHkocHJvcE5hbWUp
KSB7XG4gICAgICAgIHZhciBlcnJvciA9IHByb3BUeXBlc1twcm9wTmFtZV0ocHJvcHMsIHByb3BO
YW1lLCB0YWdOYW1lLCAncHJvcCcsIG51bGwsIFJlYWN0UHJvcFR5cGVzU2VjcmV0KTtcbiAgICAg
IH1cbiAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEVycm9yICYmICEoZXJyb3IubWVzc2FnZSBp
biBsb2dnZWRUeXBlRmFpbHVyZXMpKSB7XG4gICAgICAgIC8vIE9ubHkgbW9uaXRvciB0aGlzIGZh
aWx1cmUgb25jZSBiZWNhdXNlIHRoZXJlIHRlbmRzIHRvIGJlIGEgbG90IG9mIHRoZVxuICAgICAg
ICAvLyBzYW1lIGVycm9yLlxuICAgICAgICBsb2dnZWRUeXBlRmFpbHVyZXNbZXJyb3IubWVzc2Fn
ZV0gPSB0cnVlO1xuXG4gICAgICAgIHZhciBhZGRlbmR1bSA9IGdldERlY2xhcmF0aW9uRXJyb3JB
ZGRlbmR1bShvd25lcik7XG4gICAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVj
dGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnRmFpbGVkIGZvcm0gcHJvcFR5cGU6ICVzJXMnLCBlcnJv
ci5tZXNzYWdlLCBhZGRlbmR1bSkgOiB2b2lkIDA7XG4gICAgICB9XG4gICAgfVxuICB9LFxuXG4g
IC8qKlxuICAgKiBAcGFyYW0ge29iamVjdH0gaW5wdXRQcm9wcyBQcm9wcyBmb3IgZm9ybSBjb21w
b25lbnRcbiAgICogQHJldHVybiB7Kn0gY3VycmVudCB2YWx1ZSBvZiB0aGUgaW5wdXQgZWl0aGVy
IGZyb20gdmFsdWUgcHJvcCBvciBsaW5rLlxuICAgKi9cbiAgZ2V0VmFsdWU6IGZ1bmN0aW9uIChp
bnB1dFByb3BzKSB7XG4gICAgaWYgKGlucHV0UHJvcHMudmFsdWVMaW5rKSB7XG4gICAgICBfYXNz
ZXJ0VmFsdWVMaW5rKGlucHV0UHJvcHMpO1xuICAgICAgcmV0dXJuIGlucHV0UHJvcHMudmFsdWVM
aW5rLnZhbHVlO1xuICAgIH1cbiAgICByZXR1cm4gaW5wdXRQcm9wcy52YWx1ZTtcbiAgfSxcblxu
ICAvKipcbiAgICogQHBhcmFtIHtvYmplY3R9IGlucHV0UHJvcHMgUHJvcHMgZm9yIGZvcm0gY29t
cG9uZW50XG4gICAqIEByZXR1cm4geyp9IGN1cnJlbnQgY2hlY2tlZCBzdGF0dXMgb2YgdGhlIGlu
cHV0IGVpdGhlciBmcm9tIGNoZWNrZWQgcHJvcFxuICAgKiAgICAgICAgICAgICBvciBsaW5rLlxu
ICAgKi9cbiAgZ2V0Q2hlY2tlZDogZnVuY3Rpb24gKGlucHV0UHJvcHMpIHtcbiAgICBpZiAoaW5w
dXRQcm9wcy5jaGVja2VkTGluaykge1xuICAgICAgX2Fzc2VydENoZWNrZWRMaW5rKGlucHV0UHJv
cHMpO1xuICAgICAgcmV0dXJuIGlucHV0UHJvcHMuY2hlY2tlZExpbmsudmFsdWU7XG4gICAgfVxu
ICAgIHJldHVybiBpbnB1dFByb3BzLmNoZWNrZWQ7XG4gIH0sXG5cbiAgLyoqXG4gICAqIEBwYXJh
bSB7b2JqZWN0fSBpbnB1dFByb3BzIFByb3BzIGZvciBmb3JtIGNvbXBvbmVudFxuICAgKiBAcGFy
YW0ge1N5bnRoZXRpY0V2ZW50fSBldmVudCBjaGFuZ2UgZXZlbnQgdG8gaGFuZGxlXG4gICAqL1xu
ICBleGVjdXRlT25DaGFuZ2U6IGZ1bmN0aW9uIChpbnB1dFByb3BzLCBldmVudCkge1xuICAgIGlm
IChpbnB1dFByb3BzLnZhbHVlTGluaykge1xuICAgICAgX2Fzc2VydFZhbHVlTGluayhpbnB1dFBy
b3BzKTtcbiAgICAgIHJldHVybiBpbnB1dFByb3BzLnZhbHVlTGluay5yZXF1ZXN0Q2hhbmdlKGV2
ZW50LnRhcmdldC52YWx1ZSk7XG4gICAgfSBlbHNlIGlmIChpbnB1dFByb3BzLmNoZWNrZWRMaW5r
KSB7XG4gICAgICBfYXNzZXJ0Q2hlY2tlZExpbmsoaW5wdXRQcm9wcyk7XG4gICAgICByZXR1cm4g
aW5wdXRQcm9wcy5jaGVja2VkTGluay5yZXF1ZXN0Q2hhbmdlKGV2ZW50LnRhcmdldC5jaGVja2Vk
KTtcbiAgICB9IGVsc2UgaWYgKGlucHV0UHJvcHMub25DaGFuZ2UpIHtcbiAgICAgIHJldHVybiBp
bnB1dFByb3BzLm9uQ2hhbmdlLmNhbGwodW5kZWZpbmVkLCBldmVudCk7XG4gICAgfVxuICB9XG59
O1xuXG5tb2R1bGUuZXhwb3J0cyA9IExpbmtlZFZhbHVlVXRpbHM7XG5cblxuLyoqKioqKioqKioq
KioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3QtZG9tL2xpYi9MaW5rZWRW
YWx1ZVV0aWxzLmpzXG4gKiogbW9kdWxlIGlkID0gMzlcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxu
ICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAq
IEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNl
ZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZp
bGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9u
YWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRT
IGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIFxuICovXG5cbid1c2Ugc3RyaWN0
JztcblxudmFyIF9wcm9kSW52YXJpYW50ID0gcmVxdWlyZSgnLi9yZWFjdFByb2RJbnZhcmlhbnQn
KTtcblxudmFyIGludmFyaWFudCA9IHJlcXVpcmUoJ2ZianMvbGliL2ludmFyaWFudCcpO1xuXG52
YXIgaW5qZWN0ZWQgPSBmYWxzZTtcblxudmFyIFJlYWN0Q29tcG9uZW50RW52aXJvbm1lbnQgPSB7
XG4gIC8qKlxuICAgKiBPcHRpb25hbGx5IGluamVjdGFibGUgaG9vayBmb3Igc3dhcHBpbmcgb3V0
IG1vdW50IGltYWdlcyBpbiB0aGUgbWlkZGxlIG9mXG4gICAqIHRoZSB0cmVlLlxuICAgKi9cbiAg
cmVwbGFjZU5vZGVXaXRoTWFya3VwOiBudWxsLFxuXG4gIC8qKlxuICAgKiBPcHRpb25hbGx5IGlu
amVjdGFibGUgaG9vayBmb3IgcHJvY2Vzc2luZyBhIHF1ZXVlIG9mIGNoaWxkIHVwZGF0ZXMuIFdp
bGxcbiAgICogbGF0ZXIgbW92ZSBpbnRvIE11bHRpQ2hpbGRDb21wb25lbnRzLlxuICAgKi9cbiAg
cHJvY2Vzc0NoaWxkcmVuVXBkYXRlczogbnVsbCxcblxuICBpbmplY3Rpb246IHtcbiAgICBpbmpl
Y3RFbnZpcm9ubWVudDogZnVuY3Rpb24gKGVudmlyb25tZW50KSB7XG4gICAgICAhIWluamVjdGVk
ID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxz
ZSwgJ1JlYWN0Q29tcG9zaXRlQ29tcG9uZW50OiBpbmplY3RFbnZpcm9ubWVudCgpIGNhbiBvbmx5
IGJlIGNhbGxlZCBvbmNlLicpIDogX3Byb2RJbnZhcmlhbnQoJzEwNCcpIDogdm9pZCAwO1xuICAg
ICAgUmVhY3RDb21wb25lbnRFbnZpcm9ubWVudC5yZXBsYWNlTm9kZVdpdGhNYXJrdXAgPSBlbnZp
cm9ubWVudC5yZXBsYWNlTm9kZVdpdGhNYXJrdXA7XG4gICAgICBSZWFjdENvbXBvbmVudEVudmly
b25tZW50LnByb2Nlc3NDaGlsZHJlblVwZGF0ZXMgPSBlbnZpcm9ubWVudC5wcm9jZXNzQ2hpbGRy
ZW5VcGRhdGVzO1xuICAgICAgaW5qZWN0ZWQgPSB0cnVlO1xuICAgIH1cbiAgfVxufTtcblxubW9k
dWxlLmV4cG9ydHMgPSBSZWFjdENvbXBvbmVudEVudmlyb25tZW50O1xuXG5cbi8qKioqKioqKioq
KioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0LWRvbS9saWIvUmVhY3RD
b21wb25lbnRFbnZpcm9ubWVudC5qc1xuICoqIG1vZHVsZSBpZCA9IDQwXG4gKiogbW9kdWxlIGNo
dW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29r
LCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUg
aXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICog
TElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBB
biBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0
aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBcbiAqL1xuXG4n
dXNlIHN0cmljdCc7XG5cbnZhciBjYXVnaHRFcnJvciA9IG51bGw7XG5cbi8qKlxuICogQ2FsbCBh
IGZ1bmN0aW9uIHdoaWxlIGd1YXJkaW5nIGFnYWluc3QgZXJyb3JzIHRoYXQgaGFwcGVucyB3aXRo
aW4gaXQuXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IG5hbWUgb2YgdGhlIGd1YXJkIHRvIHVzZSBm
b3IgbG9nZ2luZyBvciBkZWJ1Z2dpbmdcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1
bmN0aW9uIHRvIGludm9rZVxuICogQHBhcmFtIHsqfSBhIEZpcnN0IGFyZ3VtZW50XG4gKiBAcGFy
YW0geyp9IGIgU2Vjb25kIGFyZ3VtZW50XG4gKi9cbmZ1bmN0aW9uIGludm9rZUd1YXJkZWRDYWxs
YmFjayhuYW1lLCBmdW5jLCBhKSB7XG4gIHRyeSB7XG4gICAgZnVuYyhhKTtcbiAgfSBjYXRjaCAo
eCkge1xuICAgIGlmIChjYXVnaHRFcnJvciA9PT0gbnVsbCkge1xuICAgICAgY2F1Z2h0RXJyb3Ig
PSB4O1xuICAgIH1cbiAgfVxufVxuXG52YXIgUmVhY3RFcnJvclV0aWxzID0ge1xuICBpbnZva2VH
dWFyZGVkQ2FsbGJhY2s6IGludm9rZUd1YXJkZWRDYWxsYmFjayxcblxuICAvKipcbiAgICogSW52
b2tlZCBieSBSZWFjdFRlc3RVdGlscy5TaW11bGF0ZSBzbyB0aGF0IGFueSBlcnJvcnMgdGhyb3du
IGJ5IHRoZSBldmVudFxuICAgKiBoYW5kbGVyIGFyZSBzdXJlIHRvIGJlIHJldGhyb3duIGJ5IHJl
dGhyb3dDYXVnaHRFcnJvci5cbiAgICovXG4gIGludm9rZUd1YXJkZWRDYWxsYmFja1dpdGhDYXRj
aDogaW52b2tlR3VhcmRlZENhbGxiYWNrLFxuXG4gIC8qKlxuICAgKiBEdXJpbmcgZXhlY3V0aW9u
IG9mIGd1YXJkZWQgZnVuY3Rpb25zIHdlIHdpbGwgY2FwdHVyZSB0aGUgZmlyc3QgZXJyb3Igd2hp
Y2hcbiAgICogd2Ugd2lsbCByZXRocm93IHRvIGJlIGhhbmRsZWQgYnkgdGhlIHRvcCBsZXZlbCBl
cnJvciBoYW5kbGVyLlxuICAgKi9cbiAgcmV0aHJvd0NhdWdodEVycm9yOiBmdW5jdGlvbiAoKSB7
XG4gICAgaWYgKGNhdWdodEVycm9yKSB7XG4gICAgICB2YXIgZXJyb3IgPSBjYXVnaHRFcnJvcjtc
biAgICAgIGNhdWdodEVycm9yID0gbnVsbDtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbiAg
fVxufTtcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAg
LyoqXG4gICAqIFRvIGhlbHAgZGV2ZWxvcG1lbnQgd2UgY2FuIGdldCBiZXR0ZXIgZGV2dG9vbHMg
aW50ZWdyYXRpb24gYnkgc2ltdWxhdGluZyBhXG4gICAqIHJlYWwgYnJvd3NlciBldmVudC5cbiAg
ICovXG4gIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2Ygd2luZG93
LmRpc3BhdGNoRXZlbnQgPT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIGRvY3VtZW50ICE9PSAndW5k
ZWZpbmVkJyAmJiB0eXBlb2YgZG9jdW1lbnQuY3JlYXRlRXZlbnQgPT09ICdmdW5jdGlvbicpIHtc
biAgICB2YXIgZmFrZU5vZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdyZWFjdCcpO1xuICAg
IFJlYWN0RXJyb3JVdGlscy5pbnZva2VHdWFyZGVkQ2FsbGJhY2sgPSBmdW5jdGlvbiAobmFtZSwg
ZnVuYywgYSkge1xuICAgICAgdmFyIGJvdW5kRnVuYyA9IGZ1bmMuYmluZChudWxsLCBhKTtcbiAg
ICAgIHZhciBldnRUeXBlID0gJ3JlYWN0LScgKyBuYW1lO1xuICAgICAgZmFrZU5vZGUuYWRkRXZl
bnRMaXN0ZW5lcihldnRUeXBlLCBib3VuZEZ1bmMsIGZhbHNlKTtcbiAgICAgIHZhciBldnQgPSBk
b2N1bWVudC5jcmVhdGVFdmVudCgnRXZlbnQnKTtcbiAgICAgIGV2dC5pbml0RXZlbnQoZXZ0VHlw
ZSwgZmFsc2UsIGZhbHNlKTtcbiAgICAgIGZha2VOb2RlLmRpc3BhdGNoRXZlbnQoZXZ0KTtcbiAg
ICAgIGZha2VOb2RlLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZ0VHlwZSwgYm91bmRGdW5jLCBmYWxz
ZSk7XG4gICAgfTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0RXJyb3JVdGlscztc
blxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFj
dC1kb20vbGliL1JlYWN0RXJyb3JVdGlscy5qc1xuICoqIG1vZHVsZSBpZCA9IDQxXG4gKiogbW9k
dWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENvcHlyaWdodCAyMDE1LXByZXNlbnQsIEZh
Y2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNl
IGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRo
ZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0
cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3Vu
ZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxu
J3VzZSBzdHJpY3QnO1xuXG52YXIgX3Byb2RJbnZhcmlhbnQgPSByZXF1aXJlKCcuL3JlYWN0UHJv
ZEludmFyaWFudCcpO1xuXG52YXIgUmVhY3RDdXJyZW50T3duZXIgPSByZXF1aXJlKCdyZWFjdC9s
aWIvUmVhY3RDdXJyZW50T3duZXInKTtcbnZhciBSZWFjdEluc3RhbmNlTWFwID0gcmVxdWlyZSgn
Li9SZWFjdEluc3RhbmNlTWFwJyk7XG52YXIgUmVhY3RJbnN0cnVtZW50YXRpb24gPSByZXF1aXJl
KCcuL1JlYWN0SW5zdHJ1bWVudGF0aW9uJyk7XG52YXIgUmVhY3RVcGRhdGVzID0gcmVxdWlyZSgn
Li9SZWFjdFVwZGF0ZXMnKTtcblxudmFyIGludmFyaWFudCA9IHJlcXVpcmUoJ2ZianMvbGliL2lu
dmFyaWFudCcpO1xudmFyIHdhcm5pbmcgPSByZXF1aXJlKCdmYmpzL2xpYi93YXJuaW5nJyk7XG5c
bmZ1bmN0aW9uIGVucXVldWVVcGRhdGUoaW50ZXJuYWxJbnN0YW5jZSkge1xuICBSZWFjdFVwZGF0
ZXMuZW5xdWV1ZVVwZGF0ZShpbnRlcm5hbEluc3RhbmNlKTtcbn1cblxuZnVuY3Rpb24gZm9ybWF0
VW5leHBlY3RlZEFyZ3VtZW50KGFyZykge1xuICB2YXIgdHlwZSA9IHR5cGVvZiBhcmc7XG4gIGlm
ICh0eXBlICE9PSAnb2JqZWN0Jykge1xuICAgIHJldHVybiB0eXBlO1xuICB9XG4gIHZhciBkaXNw
bGF5TmFtZSA9IGFyZy5jb25zdHJ1Y3RvciAmJiBhcmcuY29uc3RydWN0b3IubmFtZSB8fCB0eXBl
O1xuICB2YXIga2V5cyA9IE9iamVjdC5rZXlzKGFyZyk7XG4gIGlmIChrZXlzLmxlbmd0aCA+IDAg
JiYga2V5cy5sZW5ndGggPCAyMCkge1xuICAgIHJldHVybiBkaXNwbGF5TmFtZSArICcgKGtleXM6
ICcgKyBrZXlzLmpvaW4oJywgJykgKyAnKSc7XG4gIH1cbiAgcmV0dXJuIGRpc3BsYXlOYW1lO1xu
fVxuXG5mdW5jdGlvbiBnZXRJbnRlcm5hbEluc3RhbmNlUmVhZHlGb3JVcGRhdGUocHVibGljSW5z
dGFuY2UsIGNhbGxlck5hbWUpIHtcbiAgdmFyIGludGVybmFsSW5zdGFuY2UgPSBSZWFjdEluc3Rh
bmNlTWFwLmdldChwdWJsaWNJbnN0YW5jZSk7XG4gIGlmICghaW50ZXJuYWxJbnN0YW5jZSkge1xu
ICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICB2
YXIgY3RvciA9IHB1YmxpY0luc3RhbmNlLmNvbnN0cnVjdG9yO1xuICAgICAgLy8gT25seSB3YXJu
IHdoZW4gd2UgaGF2ZSBhIGNhbGxlck5hbWUuIE90aGVyd2lzZSB3ZSBzaG91bGQgYmUgc2lsZW50
LlxuICAgICAgLy8gV2UncmUgcHJvYmFibHkgY2FsbGluZyBmcm9tIGVucXVldWVDYWxsYmFjay4g
V2UgZG9uJ3Qgd2FudCB0byB3YXJuXG4gICAgICAvLyB0aGVyZSBiZWNhdXNlIHdlIGFscmVhZHkg
d2FybmVkIGZvciB0aGUgY29ycmVzcG9uZGluZyBsaWZlY3ljbGUgbWV0aG9kLlxuICAgICAgcHJv
Y2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoIWNhbGxlck5hbWUs
ICclcyguLi4pOiBDYW4gb25seSB1cGRhdGUgYSBtb3VudGVkIG9yIG1vdW50aW5nIGNvbXBvbmVu
dC4gJyArICdUaGlzIHVzdWFsbHkgbWVhbnMgeW91IGNhbGxlZCAlcygpIG9uIGFuIHVubW91bnRl
ZCBjb21wb25lbnQuICcgKyAnVGhpcyBpcyBhIG5vLW9wLiBQbGVhc2UgY2hlY2sgdGhlIGNvZGUg
Zm9yIHRoZSAlcyBjb21wb25lbnQuJywgY2FsbGVyTmFtZSwgY2FsbGVyTmFtZSwgY3RvciAmJiAo
Y3Rvci5kaXNwbGF5TmFtZSB8fCBjdG9yLm5hbWUpIHx8ICdSZWFjdENsYXNzJykgOiB2b2lkIDA7
XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVf
RU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3By
b2R1Y3Rpb24nID8gd2FybmluZyhSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50ID09IG51bGwsICcl
cyguLi4pOiBDYW5ub3QgdXBkYXRlIGR1cmluZyBhbiBleGlzdGluZyBzdGF0ZSB0cmFuc2l0aW9u
IChzdWNoIGFzICcgKyBcIndpdGhpbiBgcmVuZGVyYCBvciBhbm90aGVyIGNvbXBvbmVudCdzIGNv
bnN0cnVjdG9yKS4gUmVuZGVyIG1ldGhvZHMgXCIgKyAnc2hvdWxkIGJlIGEgcHVyZSBmdW5jdGlv
biBvZiBwcm9wcyBhbmQgc3RhdGU7IGNvbnN0cnVjdG9yICcgKyAnc2lkZS1lZmZlY3RzIGFyZSBh
biBhbnRpLXBhdHRlcm4sIGJ1dCBjYW4gYmUgbW92ZWQgdG8gJyArICdgY29tcG9uZW50V2lsbE1v
dW50YC4nLCBjYWxsZXJOYW1lKSA6IHZvaWQgMDtcbiAgfVxuXG4gIHJldHVybiBpbnRlcm5hbElu
c3RhbmNlO1xufVxuXG4vKipcbiAqIFJlYWN0VXBkYXRlUXVldWUgYWxsb3dzIGZvciBzdGF0ZSB1
cGRhdGVzIHRvIGJlIHNjaGVkdWxlZCBpbnRvIGEgbGF0ZXJcbiAqIHJlY29uY2lsaWF0aW9uIHN0
ZXAuXG4gKi9cbnZhciBSZWFjdFVwZGF0ZVF1ZXVlID0ge1xuICAvKipcbiAgICogQ2hlY2tzIHdo
ZXRoZXIgb3Igbm90IHRoaXMgY29tcG9zaXRlIGNvbXBvbmVudCBpcyBtb3VudGVkLlxuICAgKiBA
cGFyYW0ge1JlYWN0Q2xhc3N9IHB1YmxpY0luc3RhbmNlIFRoZSBpbnN0YW5jZSB3ZSB3YW50IHRv
IHRlc3QuXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUgaWYgbW91bnRlZCwgZmFsc2Ugb3Ro
ZXJ3aXNlLlxuICAgKiBAcHJvdGVjdGVkXG4gICAqIEBmaW5hbFxuICAgKi9cbiAgaXNNb3VudGVk
OiBmdW5jdGlvbiAocHVibGljSW5zdGFuY2UpIHtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9F
TlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgdmFyIG93bmVyID0gUmVhY3RDdXJyZW50T3du
ZXIuY3VycmVudDtcbiAgICAgIGlmIChvd25lciAhPT0gbnVsbCkge1xuICAgICAgICBwcm9jZXNz
LmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhvd25lci5fd2FybmVkQWJv
dXRSZWZzSW5SZW5kZXIsICclcyBpcyBhY2Nlc3NpbmcgaXNNb3VudGVkIGluc2lkZSBpdHMgcmVu
ZGVyKCkgZnVuY3Rpb24uICcgKyAncmVuZGVyKCkgc2hvdWxkIGJlIGEgcHVyZSBmdW5jdGlvbiBv
ZiBwcm9wcyBhbmQgc3RhdGUuIEl0IHNob3VsZCAnICsgJ25ldmVyIGFjY2VzcyBzb21ldGhpbmcg
dGhhdCByZXF1aXJlcyBzdGFsZSBkYXRhIGZyb20gdGhlIHByZXZpb3VzICcgKyAncmVuZGVyLCBz
dWNoIGFzIHJlZnMuIE1vdmUgdGhpcyBsb2dpYyB0byBjb21wb25lbnREaWRNb3VudCBhbmQgJyAr
ICdjb21wb25lbnREaWRVcGRhdGUgaW5zdGVhZC4nLCBvd25lci5nZXROYW1lKCkgfHwgJ0EgY29t
cG9uZW50JykgOiB2b2lkIDA7XG4gICAgICAgIG93bmVyLl93YXJuZWRBYm91dFJlZnNJblJlbmRl
ciA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIHZhciBpbnRlcm5hbEluc3RhbmNlID0gUmVh
Y3RJbnN0YW5jZU1hcC5nZXQocHVibGljSW5zdGFuY2UpO1xuICAgIGlmIChpbnRlcm5hbEluc3Rh
bmNlKSB7XG4gICAgICAvLyBEdXJpbmcgY29tcG9uZW50V2lsbE1vdW50IGFuZCByZW5kZXIgdGhp
cyB3aWxsIHN0aWxsIGJlIG51bGwgYnV0IGFmdGVyXG4gICAgICAvLyB0aGF0IHdpbGwgYWx3YXlz
IHJlbmRlciB0byBzb21ldGhpbmcuIEF0IGxlYXN0IGZvciBub3cuIFNvIHdlIGNhbiB1c2VcbiAg
ICAgIC8vIHRoaXMgaGFjay5cbiAgICAgIHJldHVybiAhIWludGVybmFsSW5zdGFuY2UuX3JlbmRl
cmVkQ29tcG9uZW50O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxu
ICB9LFxuXG4gIC8qKlxuICAgKiBFbnF1ZXVlIGEgY2FsbGJhY2sgdGhhdCB3aWxsIGJlIGV4ZWN1
dGVkIGFmdGVyIGFsbCB0aGUgcGVuZGluZyB1cGRhdGVzXG4gICAqIGhhdmUgcHJvY2Vzc2VkLlxu
ICAgKlxuICAgKiBAcGFyYW0ge1JlYWN0Q2xhc3N9IHB1YmxpY0luc3RhbmNlIFRoZSBpbnN0YW5j
ZSB0byB1c2UgYXMgYHRoaXNgIGNvbnRleHQuXG4gICAqIEBwYXJhbSB7P2Z1bmN0aW9ufSBjYWxs
YmFjayBDYWxsZWQgYWZ0ZXIgc3RhdGUgaXMgdXBkYXRlZC5cbiAgICogQHBhcmFtIHtzdHJpbmd9
IGNhbGxlck5hbWUgTmFtZSBvZiB0aGUgY2FsbGluZyBmdW5jdGlvbiBpbiB0aGUgcHVibGljIEFQ
SS5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBlbnF1ZXVlQ2FsbGJhY2s6IGZ1bmN0aW9uIChw
dWJsaWNJbnN0YW5jZSwgY2FsbGJhY2ssIGNhbGxlck5hbWUpIHtcbiAgICBSZWFjdFVwZGF0ZVF1
ZXVlLnZhbGlkYXRlQ2FsbGJhY2soY2FsbGJhY2ssIGNhbGxlck5hbWUpO1xuICAgIHZhciBpbnRl
cm5hbEluc3RhbmNlID0gZ2V0SW50ZXJuYWxJbnN0YW5jZVJlYWR5Rm9yVXBkYXRlKHB1YmxpY0lu
c3RhbmNlKTtcblxuICAgIC8vIFByZXZpb3VzbHkgd2Ugd291bGQgdGhyb3cgYW4gZXJyb3IgaWYg
d2UgZGlkbid0IGhhdmUgYW4gaW50ZXJuYWxcbiAgICAvLyBpbnN0YW5jZS4gU2luY2Ugd2Ugd2Fu
dCB0byBtYWtlIGl0IGEgbm8tb3AgaW5zdGVhZCwgd2UgbWlycm9yIHRoZSBzYW1lXG4gICAgLy8g
YmVoYXZpb3Igd2UgaGF2ZSBpbiBvdGhlciBlbnF1ZXVlKiBtZXRob2RzLlxuICAgIC8vIFdlIGFs
c28gbmVlZCB0byBpZ25vcmUgY2FsbGJhY2tzIGluIGNvbXBvbmVudFdpbGxNb3VudC4gU2VlXG4g
ICAgLy8gZW5xdWV1ZVVwZGF0ZXMuXG4gICAgaWYgKCFpbnRlcm5hbEluc3RhbmNlKSB7XG4gICAg
ICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAoaW50ZXJuYWxJbnN0YW5jZS5fcGVuZGlu
Z0NhbGxiYWNrcykge1xuICAgICAgaW50ZXJuYWxJbnN0YW5jZS5fcGVuZGluZ0NhbGxiYWNrcy5w
dXNoKGNhbGxiYWNrKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaW50ZXJuYWxJbnN0YW5jZS5fcGVu
ZGluZ0NhbGxiYWNrcyA9IFtjYWxsYmFja107XG4gICAgfVxuICAgIC8vIFRPRE86IFRoZSBjYWxs
YmFjayBoZXJlIGlzIGlnbm9yZWQgd2hlbiBzZXRTdGF0ZSBpcyBjYWxsZWQgZnJvbVxuICAgIC8v
IGNvbXBvbmVudFdpbGxNb3VudC4gRWl0aGVyIGZpeCBpdCBvciBkaXNhbGxvdyBkb2luZyBzbyBj
b21wbGV0ZWx5IGluXG4gICAgLy8gZmF2b3Igb2YgZ2V0SW5pdGlhbFN0YXRlLiBBbHRlcm5hdGl2
ZWx5LCB3ZSBjYW4gZGlzYWxsb3dcbiAgICAvLyBjb21wb25lbnRXaWxsTW91bnQgZHVyaW5nIHNl
cnZlci1zaWRlIHJlbmRlcmluZy5cbiAgICBlbnF1ZXVlVXBkYXRlKGludGVybmFsSW5zdGFuY2Up
O1xuICB9LFxuXG4gIGVucXVldWVDYWxsYmFja0ludGVybmFsOiBmdW5jdGlvbiAoaW50ZXJuYWxJ
bnN0YW5jZSwgY2FsbGJhY2spIHtcbiAgICBpZiAoaW50ZXJuYWxJbnN0YW5jZS5fcGVuZGluZ0Nh
bGxiYWNrcykge1xuICAgICAgaW50ZXJuYWxJbnN0YW5jZS5fcGVuZGluZ0NhbGxiYWNrcy5wdXNo
KGNhbGxiYWNrKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaW50ZXJuYWxJbnN0YW5jZS5fcGVuZGlu
Z0NhbGxiYWNrcyA9IFtjYWxsYmFja107XG4gICAgfVxuICAgIGVucXVldWVVcGRhdGUoaW50ZXJu
YWxJbnN0YW5jZSk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIEZvcmNlcyBhbiB1cGRhdGUuIFRoaXMg
c2hvdWxkIG9ubHkgYmUgaW52b2tlZCB3aGVuIGl0IGlzIGtub3duIHdpdGhcbiAgICogY2VydGFp
bnR5IHRoYXQgd2UgYXJlICoqbm90KiogaW4gYSBET00gdHJhbnNhY3Rpb24uXG4gICAqXG4gICAq
IFlvdSBtYXkgd2FudCB0byBjYWxsIHRoaXMgd2hlbiB5b3Uga25vdyB0aGF0IHNvbWUgZGVlcGVy
IGFzcGVjdCBvZiB0aGVcbiAgICogY29tcG9uZW50J3Mgc3RhdGUgaGFzIGNoYW5nZWQgYnV0IGBz
ZXRTdGF0ZWAgd2FzIG5vdCBjYWxsZWQuXG4gICAqXG4gICAqIFRoaXMgd2lsbCBub3QgaW52b2tl
IGBzaG91bGRDb21wb25lbnRVcGRhdGVgLCBidXQgaXQgd2lsbCBpbnZva2VcbiAgICogYGNvbXBv
bmVudFdpbGxVcGRhdGVgIGFuZCBgY29tcG9uZW50RGlkVXBkYXRlYC5cbiAgICpcbiAgICogQHBh
cmFtIHtSZWFjdENsYXNzfSBwdWJsaWNJbnN0YW5jZSBUaGUgaW5zdGFuY2UgdGhhdCBzaG91bGQg
cmVyZW5kZXIuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgZW5xdWV1ZUZvcmNlVXBkYXRlOiBm
dW5jdGlvbiAocHVibGljSW5zdGFuY2UpIHtcbiAgICB2YXIgaW50ZXJuYWxJbnN0YW5jZSA9IGdl
dEludGVybmFsSW5zdGFuY2VSZWFkeUZvclVwZGF0ZShwdWJsaWNJbnN0YW5jZSwgJ2ZvcmNlVXBk
YXRlJyk7XG5cbiAgICBpZiAoIWludGVybmFsSW5zdGFuY2UpIHtcbiAgICAgIHJldHVybjtcbiAg
ICB9XG5cbiAgICBpbnRlcm5hbEluc3RhbmNlLl9wZW5kaW5nRm9yY2VVcGRhdGUgPSB0cnVlO1xu
XG4gICAgZW5xdWV1ZVVwZGF0ZShpbnRlcm5hbEluc3RhbmNlKTtcbiAgfSxcblxuICAvKipcbiAg
ICogUmVwbGFjZXMgYWxsIG9mIHRoZSBzdGF0ZS4gQWx3YXlzIHVzZSB0aGlzIG9yIGBzZXRTdGF0
ZWAgdG8gbXV0YXRlIHN0YXRlLlxuICAgKiBZb3Ugc2hvdWxkIHRyZWF0IGB0aGlzLnN0YXRlYCBh
cyBpbW11dGFibGUuXG4gICAqXG4gICAqIFRoZXJlIGlzIG5vIGd1YXJhbnRlZSB0aGF0IGB0aGlz
LnN0YXRlYCB3aWxsIGJlIGltbWVkaWF0ZWx5IHVwZGF0ZWQsIHNvXG4gICAqIGFjY2Vzc2luZyBg
dGhpcy5zdGF0ZWAgYWZ0ZXIgY2FsbGluZyB0aGlzIG1ldGhvZCBtYXkgcmV0dXJuIHRoZSBvbGQg
dmFsdWUuXG4gICAqXG4gICAqIEBwYXJhbSB7UmVhY3RDbGFzc30gcHVibGljSW5zdGFuY2UgVGhl
IGluc3RhbmNlIHRoYXQgc2hvdWxkIHJlcmVuZGVyLlxuICAgKiBAcGFyYW0ge29iamVjdH0gY29t
cGxldGVTdGF0ZSBOZXh0IHN0YXRlLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIGVucXVldWVS
ZXBsYWNlU3RhdGU6IGZ1bmN0aW9uIChwdWJsaWNJbnN0YW5jZSwgY29tcGxldGVTdGF0ZSwgY2Fs
bGJhY2spIHtcbiAgICB2YXIgaW50ZXJuYWxJbnN0YW5jZSA9IGdldEludGVybmFsSW5zdGFuY2VS
ZWFkeUZvclVwZGF0ZShwdWJsaWNJbnN0YW5jZSwgJ3JlcGxhY2VTdGF0ZScpO1xuXG4gICAgaWYg
KCFpbnRlcm5hbEluc3RhbmNlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaW50ZXJu
YWxJbnN0YW5jZS5fcGVuZGluZ1N0YXRlUXVldWUgPSBbY29tcGxldGVTdGF0ZV07XG4gICAgaW50
ZXJuYWxJbnN0YW5jZS5fcGVuZGluZ1JlcGxhY2VTdGF0ZSA9IHRydWU7XG5cbiAgICAvLyBGdXR1
cmUtcHJvb2YgMTUuNVxuICAgIGlmIChjYWxsYmFjayAhPT0gdW5kZWZpbmVkICYmIGNhbGxiYWNr
ICE9PSBudWxsKSB7XG4gICAgICBSZWFjdFVwZGF0ZVF1ZXVlLnZhbGlkYXRlQ2FsbGJhY2soY2Fs
bGJhY2ssICdyZXBsYWNlU3RhdGUnKTtcbiAgICAgIGlmIChpbnRlcm5hbEluc3RhbmNlLl9wZW5k
aW5nQ2FsbGJhY2tzKSB7XG4gICAgICAgIGludGVybmFsSW5zdGFuY2UuX3BlbmRpbmdDYWxsYmFj
a3MucHVzaChjYWxsYmFjayk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpbnRlcm5hbEluc3Rh
bmNlLl9wZW5kaW5nQ2FsbGJhY2tzID0gW2NhbGxiYWNrXTtcbiAgICAgIH1cbiAgICB9XG5cbiAg
ICBlbnF1ZXVlVXBkYXRlKGludGVybmFsSW5zdGFuY2UpO1xuICB9LFxuXG4gIC8qKlxuICAgKiBT
ZXRzIGEgc3Vic2V0IG9mIHRoZSBzdGF0ZS4gVGhpcyBvbmx5IGV4aXN0cyBiZWNhdXNlIF9wZW5k
aW5nU3RhdGUgaXNcbiAgICogaW50ZXJuYWwuIFRoaXMgcHJvdmlkZXMgYSBtZXJnaW5nIHN0cmF0
ZWd5IHRoYXQgaXMgbm90IGF2YWlsYWJsZSB0byBkZWVwXG4gICAqIHByb3BlcnRpZXMgd2hpY2gg
aXMgY29uZnVzaW5nLiBUT0RPOiBFeHBvc2UgcGVuZGluZ1N0YXRlIG9yIGRvbid0IHVzZSBpdFxu
ICAgKiBkdXJpbmcgdGhlIG1lcmdlLlxuICAgKlxuICAgKiBAcGFyYW0ge1JlYWN0Q2xhc3N9IHB1
YmxpY0luc3RhbmNlIFRoZSBpbnN0YW5jZSB0aGF0IHNob3VsZCByZXJlbmRlci5cbiAgICogQHBh
cmFtIHtvYmplY3R9IHBhcnRpYWxTdGF0ZSBOZXh0IHBhcnRpYWwgc3RhdGUgdG8gYmUgbWVyZ2Vk
IHdpdGggc3RhdGUuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgZW5xdWV1ZVNldFN0YXRlOiBm
dW5jdGlvbiAocHVibGljSW5zdGFuY2UsIHBhcnRpYWxTdGF0ZSkge1xuICAgIGlmIChwcm9jZXNz
LmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICBSZWFjdEluc3RydW1lbnRh
dGlvbi5kZWJ1Z1Rvb2wub25TZXRTdGF0ZSgpO1xuICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYg
IT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcocGFydGlhbFN0YXRlICE9IG51bGwsICdzZXRTdGF0
ZSguLi4pOiBZb3UgcGFzc2VkIGFuIHVuZGVmaW5lZCBvciBudWxsIHN0YXRlIG9iamVjdDsgJyAr
ICdpbnN0ZWFkLCB1c2UgZm9yY2VVcGRhdGUoKS4nKSA6IHZvaWQgMDtcbiAgICB9XG5cbiAgICB2
YXIgaW50ZXJuYWxJbnN0YW5jZSA9IGdldEludGVybmFsSW5zdGFuY2VSZWFkeUZvclVwZGF0ZShw
dWJsaWNJbnN0YW5jZSwgJ3NldFN0YXRlJyk7XG5cbiAgICBpZiAoIWludGVybmFsSW5zdGFuY2Up
IHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgcXVldWUgPSBpbnRlcm5hbEluc3Rh
bmNlLl9wZW5kaW5nU3RhdGVRdWV1ZSB8fCAoaW50ZXJuYWxJbnN0YW5jZS5fcGVuZGluZ1N0YXRl
UXVldWUgPSBbXSk7XG4gICAgcXVldWUucHVzaChwYXJ0aWFsU3RhdGUpO1xuXG4gICAgZW5xdWV1
ZVVwZGF0ZShpbnRlcm5hbEluc3RhbmNlKTtcbiAgfSxcblxuICBlbnF1ZXVlRWxlbWVudEludGVy
bmFsOiBmdW5jdGlvbiAoaW50ZXJuYWxJbnN0YW5jZSwgbmV4dEVsZW1lbnQsIG5leHRDb250ZXh0
KSB7XG4gICAgaW50ZXJuYWxJbnN0YW5jZS5fcGVuZGluZ0VsZW1lbnQgPSBuZXh0RWxlbWVudDtc
biAgICAvLyBUT0RPOiBpbnRyb2R1Y2UgX3BlbmRpbmdDb250ZXh0IGluc3RlYWQgb2Ygc2V0dGlu
ZyBpdCBkaXJlY3RseS5cbiAgICBpbnRlcm5hbEluc3RhbmNlLl9jb250ZXh0ID0gbmV4dENvbnRl
eHQ7XG4gICAgZW5xdWV1ZVVwZGF0ZShpbnRlcm5hbEluc3RhbmNlKTtcbiAgfSxcblxuICB2YWxp
ZGF0ZUNhbGxiYWNrOiBmdW5jdGlvbiAoY2FsbGJhY2ssIGNhbGxlck5hbWUpIHtcbiAgICAhKCFj
YWxsYmFjayB8fCB0eXBlb2YgY2FsbGJhY2sgPT09ICdmdW5jdGlvbicpID8gcHJvY2Vzcy5lbnYu
Tk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJyVzKC4uLik6IEV4
cGVjdGVkIHRoZSBsYXN0IG9wdGlvbmFsIGBjYWxsYmFja2AgYXJndW1lbnQgdG8gYmUgYSBmdW5j
dGlvbi4gSW5zdGVhZCByZWNlaXZlZDogJXMuJywgY2FsbGVyTmFtZSwgZm9ybWF0VW5leHBlY3Rl
ZEFyZ3VtZW50KGNhbGxiYWNrKSkgOiBfcHJvZEludmFyaWFudCgnMTIyJywgY2FsbGVyTmFtZSwg
Zm9ybWF0VW5leHBlY3RlZEFyZ3VtZW50KGNhbGxiYWNrKSkgOiB2b2lkIDA7XG4gIH1cbn07XG5c
bm1vZHVsZS5leHBvcnRzID0gUmVhY3RVcGRhdGVRdWV1ZTtcblxuXG4vKioqKioqKioqKioqKioq
KipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFjdC1kb20vbGliL1JlYWN0VXBkYXRl
UXVldWUuanNcbiAqKiBtb2R1bGUgaWQgPSA0MlxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiov
IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxs
IHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVu
ZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBp
biB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBn
cmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmls
ZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICovXG5cbi8qIGdsb2JhbHMgTVNBcHAgKi9c
blxuJ3VzZSBzdHJpY3QnO1xuXG4vKipcbiAqIENyZWF0ZSBhIGZ1bmN0aW9uIHdoaWNoIGhhcyAn
dW5zYWZlJyBwcml2aWxlZ2VzIChyZXF1aXJlZCBieSB3aW5kb3dzOCBhcHBzKVxuICovXG5cbnZh
ciBjcmVhdGVNaWNyb3NvZnRVbnNhZmVMb2NhbEZ1bmN0aW9uID0gZnVuY3Rpb24gKGZ1bmMpIHtc
biAgaWYgKHR5cGVvZiBNU0FwcCAhPT0gJ3VuZGVmaW5lZCcgJiYgTVNBcHAuZXhlY1Vuc2FmZUxv
Y2FsRnVuY3Rpb24pIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKGFyZzAsIGFyZzEsIGFyZzIsIGFy
ZzMpIHtcbiAgICAgIE1TQXBwLmV4ZWNVbnNhZmVMb2NhbEZ1bmN0aW9uKGZ1bmN0aW9uICgpIHtc
biAgICAgICAgcmV0dXJuIGZ1bmMoYXJnMCwgYXJnMSwgYXJnMiwgYXJnMyk7XG4gICAgICB9KTtc
biAgICB9O1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBmdW5jO1xuICB9XG59O1xuXG5tb2R1bGUu
ZXhwb3J0cyA9IGNyZWF0ZU1pY3Jvc29mdFVuc2FmZUxvY2FsRnVuY3Rpb247XG5cblxuLyoqKioq
KioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3QtZG9tL2xpYi9j
cmVhdGVNaWNyb3NvZnRVbnNhZmVMb2NhbEZ1bmN0aW9uLmpzXG4gKiogbW9kdWxlIGlkID0gNDNc
biAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJl
c2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhp
cyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91
bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMg
c291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2Fu
IGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpc
biAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbi8qKlxuICogYGNoYXJDb2RlYCByZXByZXNlbnRzIHRo
ZSBhY3R1YWwgXCJjaGFyYWN0ZXIgY29kZVwiIGFuZCBpcyBzYWZlIHRvIHVzZSB3aXRoXG4gKiBg
U3RyaW5nLmZyb21DaGFyQ29kZWAuIEFzIHN1Y2gsIG9ubHkga2V5cyB0aGF0IGNvcnJlc3BvbmQg
dG8gcHJpbnRhYmxlXG4gKiBjaGFyYWN0ZXJzIHByb2R1Y2UgYSB2YWxpZCBgY2hhckNvZGVgLCB0
aGUgb25seSBleGNlcHRpb24gdG8gdGhpcyBpcyBFbnRlci5cbiAqIFRoZSBUYWIta2V5IGlzIGNv
bnNpZGVyZWQgbm9uLXByaW50YWJsZSBhbmQgZG9lcyBub3QgaGF2ZSBhIGBjaGFyQ29kZWAsXG4g
KiBwcmVzdW1hYmx5IGJlY2F1c2UgaXQgZG9lcyBub3QgcHJvZHVjZSBhIHRhYi1jaGFyYWN0ZXIg
aW4gYnJvd3NlcnMuXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IG5hdGl2ZUV2ZW50IE5hdGl2ZSBi
cm93c2VyIGV2ZW50LlxuICogQHJldHVybiB7bnVtYmVyfSBOb3JtYWxpemVkIGBjaGFyQ29kZWAg
cHJvcGVydHkuXG4gKi9cblxuZnVuY3Rpb24gZ2V0RXZlbnRDaGFyQ29kZShuYXRpdmVFdmVudCkg
e1xuICB2YXIgY2hhckNvZGU7XG4gIHZhciBrZXlDb2RlID0gbmF0aXZlRXZlbnQua2V5Q29kZTtc
blxuICBpZiAoJ2NoYXJDb2RlJyBpbiBuYXRpdmVFdmVudCkge1xuICAgIGNoYXJDb2RlID0gbmF0
aXZlRXZlbnQuY2hhckNvZGU7XG5cbiAgICAvLyBGRiBkb2VzIG5vdCBzZXQgYGNoYXJDb2RlYCBm
b3IgdGhlIEVudGVyLWtleSwgY2hlY2sgYWdhaW5zdCBga2V5Q29kZWAuXG4gICAgaWYgKGNoYXJD
b2RlID09PSAwICYmIGtleUNvZGUgPT09IDEzKSB7XG4gICAgICBjaGFyQ29kZSA9IDEzO1xuICAg
IH1cbiAgfSBlbHNlIHtcbiAgICAvLyBJRTggZG9lcyBub3QgaW1wbGVtZW50IGBjaGFyQ29kZWAs
IGJ1dCBga2V5Q29kZWAgaGFzIHRoZSBjb3JyZWN0IHZhbHVlLlxuICAgIGNoYXJDb2RlID0ga2V5
Q29kZTtcbiAgfVxuXG4gIC8vIFNvbWUgbm9uLXByaW50YWJsZSBrZXlzIGFyZSByZXBvcnRlZCBp
biBgY2hhckNvZGVgL2BrZXlDb2RlYCwgZGlzY2FyZCB0aGVtLlxuICAvLyBNdXN0IG5vdCBkaXNj
YXJkIHRoZSAobm9uLSlwcmludGFibGUgRW50ZXIta2V5LlxuICBpZiAoY2hhckNvZGUgPj0gMzIg
fHwgY2hhckNvZGUgPT09IDEzKSB7XG4gICAgcmV0dXJuIGNoYXJDb2RlO1xuICB9XG5cbiAgcmV0
dXJuIDA7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0RXZlbnRDaGFyQ29kZTtcblxuXG4vKioq
KioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFjdC1kb20vbGli
L2dldEV2ZW50Q2hhckNvZGUuanNcbiAqKiBtb2R1bGUgaWQgPSA0NFxuICoqIG1vZHVsZSBjaHVu
a3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywg
SW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlz
IGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJ
Q0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4g
YWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhl
IFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICovXG5cbid1c2Ugc3Ry
aWN0JztcblxuLyoqXG4gKiBUcmFuc2xhdGlvbiBmcm9tIG1vZGlmaWVyIGtleSB0byB0aGUgYXNz
b2NpYXRlZCBwcm9wZXJ0eSBpbiB0aGUgZXZlbnQuXG4gKiBAc2VlIGh0dHA6Ly93d3cudzMub3Jn
L1RSL0RPTS1MZXZlbC0zLUV2ZW50cy8ja2V5cy1Nb2RpZmllcnNcbiAqL1xuXG52YXIgbW9kaWZp
ZXJLZXlUb1Byb3AgPSB7XG4gIEFsdDogJ2FsdEtleScsXG4gIENvbnRyb2w6ICdjdHJsS2V5Jyxc
biAgTWV0YTogJ21ldGFLZXknLFxuICBTaGlmdDogJ3NoaWZ0S2V5J1xufTtcblxuLy8gSUU4IGRv
ZXMgbm90IGltcGxlbWVudCBnZXRNb2RpZmllclN0YXRlIHNvIHdlIHNpbXBseSBtYXAgaXQgdG8g
dGhlIG9ubHlcbi8vIG1vZGlmaWVyIGtleXMgZXhwb3NlZCBieSB0aGUgZXZlbnQgaXRzZWxmLCBk
b2VzIG5vdCBzdXBwb3J0IExvY2sta2V5cy5cbi8vIEN1cnJlbnRseSwgYWxsIG1ham9yIGJyb3dz
ZXJzIGV4Y2VwdCBDaHJvbWUgc2VlbXMgdG8gc3VwcG9ydCBMb2NrLWtleXMuXG5mdW5jdGlvbiBt
b2RpZmllclN0YXRlR2V0dGVyKGtleUFyZykge1xuICB2YXIgc3ludGhldGljRXZlbnQgPSB0aGlz
O1xuICB2YXIgbmF0aXZlRXZlbnQgPSBzeW50aGV0aWNFdmVudC5uYXRpdmVFdmVudDtcbiAgaWYg
KG5hdGl2ZUV2ZW50LmdldE1vZGlmaWVyU3RhdGUpIHtcbiAgICByZXR1cm4gbmF0aXZlRXZlbnQu
Z2V0TW9kaWZpZXJTdGF0ZShrZXlBcmcpO1xuICB9XG4gIHZhciBrZXlQcm9wID0gbW9kaWZpZXJL
ZXlUb1Byb3Bba2V5QXJnXTtcbiAgcmV0dXJuIGtleVByb3AgPyAhIW5hdGl2ZUV2ZW50W2tleVBy
b3BdIDogZmFsc2U7XG59XG5cbmZ1bmN0aW9uIGdldEV2ZW50TW9kaWZpZXJTdGF0ZShuYXRpdmVF
dmVudCkge1xuICByZXR1cm4gbW9kaWZpZXJTdGF0ZUdldHRlcjtcbn1cblxubW9kdWxlLmV4cG9y
dHMgPSBnZXRFdmVudE1vZGlmaWVyU3RhdGU7XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiog
V0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3QtZG9tL2xpYi9nZXRFdmVudE1vZGlmaWVyU3Rh
dGUuanNcbiAqKiBtb2R1bGUgaWQgPSA0NVxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwi
LyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJp
Z2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVy
IHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0
aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFu
dFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBp
biB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxuLyoqXG4g
KiBHZXRzIHRoZSB0YXJnZXQgbm9kZSBmcm9tIGEgbmF0aXZlIGJyb3dzZXIgZXZlbnQgYnkgYWNj
b3VudGluZyBmb3JcbiAqIGluY29uc2lzdGVuY2llcyBpbiBicm93c2VyIERPTSBBUElzLlxuICpc
biAqIEBwYXJhbSB7b2JqZWN0fSBuYXRpdmVFdmVudCBOYXRpdmUgYnJvd3NlciBldmVudC5cbiAq
IEByZXR1cm4ge0RPTUV2ZW50VGFyZ2V0fSBUYXJnZXQgbm9kZS5cbiAqL1xuXG5mdW5jdGlvbiBn
ZXRFdmVudFRhcmdldChuYXRpdmVFdmVudCkge1xuICB2YXIgdGFyZ2V0ID0gbmF0aXZlRXZlbnQu
dGFyZ2V0IHx8IG5hdGl2ZUV2ZW50LnNyY0VsZW1lbnQgfHwgd2luZG93O1xuXG4gIC8vIE5vcm1h
bGl6ZSBTVkcgPHVzZT4gZWxlbWVudCBldmVudHMgIzQ5NjNcbiAgaWYgKHRhcmdldC5jb3JyZXNw
b25kaW5nVXNlRWxlbWVudCkge1xuICAgIHRhcmdldCA9IHRhcmdldC5jb3JyZXNwb25kaW5nVXNl
RWxlbWVudDtcbiAgfVxuXG4gIC8vIFNhZmFyaSBtYXkgZmlyZSBldmVudHMgb24gdGV4dCBub2Rl
cyAoTm9kZS5URVhUX05PREUgaXMgMykuXG4gIC8vIEBzZWUgaHR0cDovL3d3dy5xdWlya3Ntb2Rl
Lm9yZy9qcy9ldmVudHNfcHJvcGVydGllcy5odG1sXG4gIHJldHVybiB0YXJnZXQubm9kZVR5cGUg
PT09IDMgPyB0YXJnZXQucGFyZW50Tm9kZSA6IHRhcmdldDtcbn1cblxubW9kdWxlLmV4cG9ydHMg
PSBnZXRFdmVudFRhcmdldDtcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZP
T1RFUlxuICoqIC4vfi9yZWFjdC1kb20vbGliL2dldEV2ZW50VGFyZ2V0LmpzXG4gKiogbW9kdWxl
IGlkID0gNDZcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29weXJpZ2h0
IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4g
KlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxp
Y2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5
IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCBy
aWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0
b3J5LlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBFeGVjdXRpb25FbnZpcm9ubWVu
dCA9IHJlcXVpcmUoJ2ZianMvbGliL0V4ZWN1dGlvbkVudmlyb25tZW50Jyk7XG5cbnZhciB1c2VI
YXNGZWF0dXJlO1xuaWYgKEV4ZWN1dGlvbkVudmlyb25tZW50LmNhblVzZURPTSkge1xuICB1c2VI
YXNGZWF0dXJlID0gZG9jdW1lbnQuaW1wbGVtZW50YXRpb24gJiYgZG9jdW1lbnQuaW1wbGVtZW50
YXRpb24uaGFzRmVhdHVyZSAmJlxuICAvLyBhbHdheXMgcmV0dXJucyB0cnVlIGluIG5ld2VyIGJy
b3dzZXJzIGFzIHBlciB0aGUgc3RhbmRhcmQuXG4gIC8vIEBzZWUgaHR0cDovL2RvbS5zcGVjLndo
YXR3Zy5vcmcvI2RvbS1kb21pbXBsZW1lbnRhdGlvbi1oYXNmZWF0dXJlXG4gIGRvY3VtZW50Lmlt
cGxlbWVudGF0aW9uLmhhc0ZlYXR1cmUoJycsICcnKSAhPT0gdHJ1ZTtcbn1cblxuLyoqXG4gKiBD
aGVja3MgaWYgYW4gZXZlbnQgaXMgc3VwcG9ydGVkIGluIHRoZSBjdXJyZW50IGV4ZWN1dGlvbiBl
bnZpcm9ubWVudC5cbiAqXG4gKiBOT1RFOiBUaGlzIHdpbGwgbm90IHdvcmsgY29ycmVjdGx5IGZv
ciBub24tZ2VuZXJpYyBldmVudHMgc3VjaCBhcyBgY2hhbmdlYCxcbiAqIGByZXNldGAsIGBsb2Fk
YCwgYGVycm9yYCwgYW5kIGBzZWxlY3RgLlxuICpcbiAqIEJvcnJvd3MgZnJvbSBNb2Rlcm5penIu
XG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGV2ZW50TmFtZVN1ZmZpeCBFdmVudCBuYW1lLCBlLmcu
IFwiY2xpY2tcIi5cbiAqIEBwYXJhbSB7P2Jvb2xlYW59IGNhcHR1cmUgQ2hlY2sgaWYgdGhlIGNh
cHR1cmUgcGhhc2UgaXMgc3VwcG9ydGVkLlxuICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBpZiB0
aGUgZXZlbnQgaXMgc3VwcG9ydGVkLlxuICogQGludGVybmFsXG4gKiBAbGljZW5zZSBNb2Rlcm5p
enIgMy4wLjBwcmUgKEN1c3RvbSBCdWlsZCkgfCBNSVRcbiAqL1xuZnVuY3Rpb24gaXNFdmVudFN1
cHBvcnRlZChldmVudE5hbWVTdWZmaXgsIGNhcHR1cmUpIHtcbiAgaWYgKCFFeGVjdXRpb25FbnZp
cm9ubWVudC5jYW5Vc2VET00gfHwgY2FwdHVyZSAmJiAhKCdhZGRFdmVudExpc3RlbmVyJyBpbiBk
b2N1bWVudCkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICB2YXIgZXZlbnROYW1lID0g
J29uJyArIGV2ZW50TmFtZVN1ZmZpeDtcbiAgdmFyIGlzU3VwcG9ydGVkID0gZXZlbnROYW1lIGlu
IGRvY3VtZW50O1xuXG4gIGlmICghaXNTdXBwb3J0ZWQpIHtcbiAgICB2YXIgZWxlbWVudCA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKGV2
ZW50TmFtZSwgJ3JldHVybjsnKTtcbiAgICBpc1N1cHBvcnRlZCA9IHR5cGVvZiBlbGVtZW50W2V2
ZW50TmFtZV0gPT09ICdmdW5jdGlvbic7XG4gIH1cblxuICBpZiAoIWlzU3VwcG9ydGVkICYmIHVz
ZUhhc0ZlYXR1cmUgJiYgZXZlbnROYW1lU3VmZml4ID09PSAnd2hlZWwnKSB7XG4gICAgLy8gVGhp
cyBpcyB0aGUgb25seSB3YXkgdG8gdGVzdCBzdXBwb3J0IGZvciB0aGUgYHdoZWVsYCBldmVudCBp
biBJRTkrLlxuICAgIGlzU3VwcG9ydGVkID0gZG9jdW1lbnQuaW1wbGVtZW50YXRpb24uaGFzRmVh
dHVyZSgnRXZlbnRzLndoZWVsJywgJzMuMCcpO1xuICB9XG5cbiAgcmV0dXJuIGlzU3VwcG9ydGVk
O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzRXZlbnRTdXBwb3J0ZWQ7XG5cblxuLyoqKioqKioq
KioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3QtZG9tL2xpYi9pc0V2
ZW50U3VwcG9ydGVkLmpzXG4gKiogbW9kdWxlIGlkID0gNDdcbiAqKiBtb2R1bGUgY2h1bmtzID0g
MFxuICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5c
biAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNl
bnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNF
IGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0
aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRF
TlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7
XG5cbi8qKlxuICogR2l2ZW4gYSBgcHJldkVsZW1lbnRgIGFuZCBgbmV4dEVsZW1lbnRgLCBkZXRl
cm1pbmVzIGlmIHRoZSBleGlzdGluZ1xuICogaW5zdGFuY2Ugc2hvdWxkIGJlIHVwZGF0ZWQgYXMg
b3Bwb3NlZCB0byBiZWluZyBkZXN0cm95ZWQgb3IgcmVwbGFjZWQgYnkgYSBuZXdcbiAqIGluc3Rh
bmNlLiBCb3RoIGFyZ3VtZW50cyBhcmUgZWxlbWVudHMuIFRoaXMgZW5zdXJlcyB0aGF0IHRoaXMg
bG9naWMgY2FuXG4gKiBvcGVyYXRlIG9uIHN0YXRlbGVzcyB0cmVlcyB3aXRob3V0IGFueSBiYWNr
aW5nIGluc3RhbmNlLlxuICpcbiAqIEBwYXJhbSB7P29iamVjdH0gcHJldkVsZW1lbnRcbiAqIEBw
YXJhbSB7P29iamVjdH0gbmV4dEVsZW1lbnRcbiAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUgaWYg
dGhlIGV4aXN0aW5nIGluc3RhbmNlIHNob3VsZCBiZSB1cGRhdGVkLlxuICogQHByb3RlY3RlZFxu
ICovXG5cbmZ1bmN0aW9uIHNob3VsZFVwZGF0ZVJlYWN0Q29tcG9uZW50KHByZXZFbGVtZW50LCBu
ZXh0RWxlbWVudCkge1xuICB2YXIgcHJldkVtcHR5ID0gcHJldkVsZW1lbnQgPT09IG51bGwgfHwg
cHJldkVsZW1lbnQgPT09IGZhbHNlO1xuICB2YXIgbmV4dEVtcHR5ID0gbmV4dEVsZW1lbnQgPT09
IG51bGwgfHwgbmV4dEVsZW1lbnQgPT09IGZhbHNlO1xuICBpZiAocHJldkVtcHR5IHx8IG5leHRF
bXB0eSkge1xuICAgIHJldHVybiBwcmV2RW1wdHkgPT09IG5leHRFbXB0eTtcbiAgfVxuXG4gIHZh
ciBwcmV2VHlwZSA9IHR5cGVvZiBwcmV2RWxlbWVudDtcbiAgdmFyIG5leHRUeXBlID0gdHlwZW9m
IG5leHRFbGVtZW50O1xuICBpZiAocHJldlR5cGUgPT09ICdzdHJpbmcnIHx8IHByZXZUeXBlID09
PSAnbnVtYmVyJykge1xuICAgIHJldHVybiBuZXh0VHlwZSA9PT0gJ3N0cmluZycgfHwgbmV4dFR5
cGUgPT09ICdudW1iZXInO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBuZXh0VHlwZSA9PT0gJ29i
amVjdCcgJiYgcHJldkVsZW1lbnQudHlwZSA9PT0gbmV4dEVsZW1lbnQudHlwZSAmJiBwcmV2RWxl
bWVudC5rZXkgPT09IG5leHRFbGVtZW50LmtleTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9
IHNob3VsZFVwZGF0ZVJlYWN0Q29tcG9uZW50O1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoq
IFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0LWRvbS9saWIvc2hvdWxkVXBkYXRlUmVhY3RD
b21wb25lbnQuanNcbiAqKiBtb2R1bGUgaWQgPSA0OFxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4g
KiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNS1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICog
QWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2Vk
IHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmls
ZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25h
bCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMg
ZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICovXG5cbid1c2Ugc3RyaWN0Jztcblxu
dmFyIF9hc3NpZ24gPSByZXF1aXJlKCdvYmplY3QtYXNzaWduJyk7XG5cbnZhciBlbXB0eUZ1bmN0
aW9uID0gcmVxdWlyZSgnZmJqcy9saWIvZW1wdHlGdW5jdGlvbicpO1xudmFyIHdhcm5pbmcgPSBy
ZXF1aXJlKCdmYmpzL2xpYi93YXJuaW5nJyk7XG5cbnZhciB2YWxpZGF0ZURPTU5lc3RpbmcgPSBl
bXB0eUZ1bmN0aW9uO1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9u
Jykge1xuICAvLyBUaGlzIHZhbGlkYXRpb24gY29kZSB3YXMgd3JpdHRlbiBiYXNlZCBvbiB0aGUg
SFRNTDUgcGFyc2luZyBzcGVjOlxuICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211
bHRpcGFnZS9zeW50YXguaHRtbCNoYXMtYW4tZWxlbWVudC1pbi1zY29wZVxuICAvL1xuICAvLyBO
b3RlOiB0aGlzIGRvZXMgbm90IGNhdGNoIGFsbCBpbnZhbGlkIG5lc3RpbmcsIG5vciBkb2VzIGl0
IHRyeSB0byAoYXMgaXQnc1xuICAvLyBub3QgY2xlYXIgd2hhdCBwcmFjdGljYWwgYmVuZWZpdCBk
b2luZyBzbyBwcm92aWRlcyk7IGluc3RlYWQsIHdlIHdhcm4gb25seVxuICAvLyBmb3IgY2FzZXMg
d2hlcmUgdGhlIHBhcnNlciB3aWxsIGdpdmUgYSBwYXJzZSB0cmVlIGRpZmZlcmluZyBmcm9tIHdo
YXQgUmVhY3RcbiAgLy8gaW50ZW5kZWQuIEZvciBleGFtcGxlLCA8Yj48ZGl2PjwvZGl2PjwvYj4g
aXMgaW52YWxpZCBidXQgd2UgZG9uJ3Qgd2FyblxuICAvLyBiZWNhdXNlIGl0IHN0aWxsIHBhcnNl
cyBjb3JyZWN0bHk7IHdlIGRvIHdhcm4gZm9yIG90aGVyIGNhc2VzIGxpa2UgbmVzdGVkXG4gIC8v
IDxwPiB0YWdzIHdoZXJlIHRoZSBiZWdpbm5pbmcgb2YgdGhlIHNlY29uZCBlbGVtZW50IGltcGxp
Y2l0bHkgY2xvc2VzIHRoZVxuICAvLyBmaXJzdCwgY2F1c2luZyBhIGNvbmZ1c2luZyBtZXNzLlxu
XG4gIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3N5bnRheC5odG1s
I3NwZWNpYWxcbiAgdmFyIHNwZWNpYWxUYWdzID0gWydhZGRyZXNzJywgJ2FwcGxldCcsICdhcmVh
JywgJ2FydGljbGUnLCAnYXNpZGUnLCAnYmFzZScsICdiYXNlZm9udCcsICdiZ3NvdW5kJywgJ2Js
b2NrcXVvdGUnLCAnYm9keScsICdicicsICdidXR0b24nLCAnY2FwdGlvbicsICdjZW50ZXInLCAn
Y29sJywgJ2NvbGdyb3VwJywgJ2RkJywgJ2RldGFpbHMnLCAnZGlyJywgJ2RpdicsICdkbCcsICdk
dCcsICdlbWJlZCcsICdmaWVsZHNldCcsICdmaWdjYXB0aW9uJywgJ2ZpZ3VyZScsICdmb290ZXIn
LCAnZm9ybScsICdmcmFtZScsICdmcmFtZXNldCcsICdoMScsICdoMicsICdoMycsICdoNCcsICdo
NScsICdoNicsICdoZWFkJywgJ2hlYWRlcicsICdoZ3JvdXAnLCAnaHInLCAnaHRtbCcsICdpZnJh
bWUnLCAnaW1nJywgJ2lucHV0JywgJ2lzaW5kZXgnLCAnbGknLCAnbGluaycsICdsaXN0aW5nJywg
J21haW4nLCAnbWFycXVlZScsICdtZW51JywgJ21lbnVpdGVtJywgJ21ldGEnLCAnbmF2JywgJ25v
ZW1iZWQnLCAnbm9mcmFtZXMnLCAnbm9zY3JpcHQnLCAnb2JqZWN0JywgJ29sJywgJ3AnLCAncGFy
YW0nLCAncGxhaW50ZXh0JywgJ3ByZScsICdzY3JpcHQnLCAnc2VjdGlvbicsICdzZWxlY3QnLCAn
c291cmNlJywgJ3N0eWxlJywgJ3N1bW1hcnknLCAndGFibGUnLCAndGJvZHknLCAndGQnLCAndGVt
cGxhdGUnLCAndGV4dGFyZWEnLCAndGZvb3QnLCAndGgnLCAndGhlYWQnLCAndGl0bGUnLCAndHIn
LCAndHJhY2snLCAndWwnLCAnd2JyJywgJ3htcCddO1xuXG4gIC8vIGh0dHBzOi8vaHRtbC5zcGVj
LndoYXR3Zy5vcmcvbXVsdGlwYWdlL3N5bnRheC5odG1sI2hhcy1hbi1lbGVtZW50LWluLXNjb3Bl
XG4gIHZhciBpblNjb3BlVGFncyA9IFsnYXBwbGV0JywgJ2NhcHRpb24nLCAnaHRtbCcsICd0YWJs
ZScsICd0ZCcsICd0aCcsICdtYXJxdWVlJywgJ29iamVjdCcsICd0ZW1wbGF0ZScsXG5cbiAgLy8g
aHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvc3ludGF4Lmh0bWwjaHRtbC1p
bnRlZ3JhdGlvbi1wb2ludFxuICAvLyBUT0RPOiBEaXN0aW5ndWlzaCBieSBuYW1lc3BhY2UgaGVy
ZSAtLSBmb3IgPHRpdGxlPiwgaW5jbHVkaW5nIGl0IGhlcmVcbiAgLy8gZXJycyBvbiB0aGUgc2lk
ZSBvZiBmZXdlciB3YXJuaW5nc1xuICAnZm9yZWlnbk9iamVjdCcsICdkZXNjJywgJ3RpdGxlJ107
XG5cbiAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvc3ludGF4Lmh0
bWwjaGFzLWFuLWVsZW1lbnQtaW4tYnV0dG9uLXNjb3BlXG4gIHZhciBidXR0b25TY29wZVRhZ3Mg
PSBpblNjb3BlVGFncy5jb25jYXQoWydidXR0b24nXSk7XG5cbiAgLy8gaHR0cHM6Ly9odG1sLnNw
ZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvc3ludGF4Lmh0bWwjZ2VuZXJhdGUtaW1wbGllZC1lbmQt
dGFnc1xuICB2YXIgaW1wbGllZEVuZFRhZ3MgPSBbJ2RkJywgJ2R0JywgJ2xpJywgJ29wdGlvbics
ICdvcHRncm91cCcsICdwJywgJ3JwJywgJ3J0J107XG5cbiAgdmFyIGVtcHR5QW5jZXN0b3JJbmZv
ID0ge1xuICAgIGN1cnJlbnQ6IG51bGwsXG5cbiAgICBmb3JtVGFnOiBudWxsLFxuICAgIGFUYWdJ
blNjb3BlOiBudWxsLFxuICAgIGJ1dHRvblRhZ0luU2NvcGU6IG51bGwsXG4gICAgbm9iclRhZ0lu
U2NvcGU6IG51bGwsXG4gICAgcFRhZ0luQnV0dG9uU2NvcGU6IG51bGwsXG5cbiAgICBsaXN0SXRl
bVRhZ0F1dG9jbG9zaW5nOiBudWxsLFxuICAgIGRsSXRlbVRhZ0F1dG9jbG9zaW5nOiBudWxsXG4g
IH07XG5cbiAgdmFyIHVwZGF0ZWRBbmNlc3RvckluZm8gPSBmdW5jdGlvbiAob2xkSW5mbywgdGFn
LCBpbnN0YW5jZSkge1xuICAgIHZhciBhbmNlc3RvckluZm8gPSBfYXNzaWduKHt9LCBvbGRJbmZv
IHx8IGVtcHR5QW5jZXN0b3JJbmZvKTtcbiAgICB2YXIgaW5mbyA9IHsgdGFnOiB0YWcsIGluc3Rh
bmNlOiBpbnN0YW5jZSB9O1xuXG4gICAgaWYgKGluU2NvcGVUYWdzLmluZGV4T2YodGFnKSAhPT0g
LTEpIHtcbiAgICAgIGFuY2VzdG9ySW5mby5hVGFnSW5TY29wZSA9IG51bGw7XG4gICAgICBhbmNl
c3RvckluZm8uYnV0dG9uVGFnSW5TY29wZSA9IG51bGw7XG4gICAgICBhbmNlc3RvckluZm8ubm9i
clRhZ0luU2NvcGUgPSBudWxsO1xuICAgIH1cbiAgICBpZiAoYnV0dG9uU2NvcGVUYWdzLmluZGV4
T2YodGFnKSAhPT0gLTEpIHtcbiAgICAgIGFuY2VzdG9ySW5mby5wVGFnSW5CdXR0b25TY29wZSA9
IG51bGw7XG4gICAgfVxuXG4gICAgLy8gU2VlIHJ1bGVzIGZvciAnbGknLCAnZGQnLCAnZHQnIHN0
YXJ0IHRhZ3MgaW5cbiAgICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFn
ZS9zeW50YXguaHRtbCNwYXJzaW5nLW1haW4taW5ib2R5XG4gICAgaWYgKHNwZWNpYWxUYWdzLmlu
ZGV4T2YodGFnKSAhPT0gLTEgJiYgdGFnICE9PSAnYWRkcmVzcycgJiYgdGFnICE9PSAnZGl2JyAm
JiB0YWcgIT09ICdwJykge1xuICAgICAgYW5jZXN0b3JJbmZvLmxpc3RJdGVtVGFnQXV0b2Nsb3Np
bmcgPSBudWxsO1xuICAgICAgYW5jZXN0b3JJbmZvLmRsSXRlbVRhZ0F1dG9jbG9zaW5nID0gbnVs
bDtcbiAgICB9XG5cbiAgICBhbmNlc3RvckluZm8uY3VycmVudCA9IGluZm87XG5cbiAgICBpZiAo
dGFnID09PSAnZm9ybScpIHtcbiAgICAgIGFuY2VzdG9ySW5mby5mb3JtVGFnID0gaW5mbztcbiAg
ICB9XG4gICAgaWYgKHRhZyA9PT0gJ2EnKSB7XG4gICAgICBhbmNlc3RvckluZm8uYVRhZ0luU2Nv
cGUgPSBpbmZvO1xuICAgIH1cbiAgICBpZiAodGFnID09PSAnYnV0dG9uJykge1xuICAgICAgYW5j
ZXN0b3JJbmZvLmJ1dHRvblRhZ0luU2NvcGUgPSBpbmZvO1xuICAgIH1cbiAgICBpZiAodGFnID09
PSAnbm9icicpIHtcbiAgICAgIGFuY2VzdG9ySW5mby5ub2JyVGFnSW5TY29wZSA9IGluZm87XG4g
ICAgfVxuICAgIGlmICh0YWcgPT09ICdwJykge1xuICAgICAgYW5jZXN0b3JJbmZvLnBUYWdJbkJ1
dHRvblNjb3BlID0gaW5mbztcbiAgICB9XG4gICAgaWYgKHRhZyA9PT0gJ2xpJykge1xuICAgICAg
YW5jZXN0b3JJbmZvLmxpc3RJdGVtVGFnQXV0b2Nsb3NpbmcgPSBpbmZvO1xuICAgIH1cbiAgICBp
ZiAodGFnID09PSAnZGQnIHx8IHRhZyA9PT0gJ2R0Jykge1xuICAgICAgYW5jZXN0b3JJbmZvLmRs
SXRlbVRhZ0F1dG9jbG9zaW5nID0gaW5mbztcbiAgICB9XG5cbiAgICByZXR1cm4gYW5jZXN0b3JJ
bmZvO1xuICB9O1xuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHdoZXRoZXJcbiAgICovXG4gIHZhciBp
c1RhZ1ZhbGlkV2l0aFBhcmVudCA9IGZ1bmN0aW9uICh0YWcsIHBhcmVudFRhZykge1xuICAgIC8v
IEZpcnN0LCBsZXQncyBjaGVjayBpZiB3ZSdyZSBpbiBhbiB1bnVzdWFsIHBhcnNpbmcgbW9kZS4u
LlxuICAgIHN3aXRjaCAocGFyZW50VGFnKSB7XG4gICAgICAvLyBodHRwczovL2h0bWwuc3BlYy53
aGF0d2cub3JnL211bHRpcGFnZS9zeW50YXguaHRtbCNwYXJzaW5nLW1haW4taW5zZWxlY3RcbiAg
ICAgIGNhc2UgJ3NlbGVjdCc6XG4gICAgICAgIHJldHVybiB0YWcgPT09ICdvcHRpb24nIHx8IHRh
ZyA9PT0gJ29wdGdyb3VwJyB8fCB0YWcgPT09ICcjdGV4dCc7XG4gICAgICBjYXNlICdvcHRncm91
cCc6XG4gICAgICAgIHJldHVybiB0YWcgPT09ICdvcHRpb24nIHx8IHRhZyA9PT0gJyN0ZXh0Jztc
biAgICAgIC8vIFN0cmljdGx5IHNwZWFraW5nLCBzZWVpbmcgYW4gPG9wdGlvbj4gZG9lc24ndCBt
ZWFuIHdlJ3JlIGluIGEgPHNlbGVjdD5cbiAgICAgIC8vIGJ1dFxuICAgICAgY2FzZSAnb3B0aW9u
JzpcbiAgICAgICAgcmV0dXJuIHRhZyA9PT0gJyN0ZXh0JztcbiAgICAgIC8vIGh0dHBzOi8vaHRt
bC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3N5bnRheC5odG1sI3BhcnNpbmctbWFpbi1pbnRk
XG4gICAgICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9zeW50YXgu
aHRtbCNwYXJzaW5nLW1haW4taW5jYXB0aW9uXG4gICAgICAvLyBObyBzcGVjaWFsIGJlaGF2aW9y
IHNpbmNlIHRoZXNlIHJ1bGVzIGZhbGwgYmFjayB0byBcImluIGJvZHlcIiBtb2RlIGZvclxuICAg
ICAgLy8gYWxsIGV4Y2VwdCBzcGVjaWFsIHRhYmxlIG5vZGVzIHdoaWNoIGNhdXNlIGJhZCBwYXJz
aW5nIGJlaGF2aW9yIGFueXdheS5cblxuICAgICAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdn
Lm9yZy9tdWx0aXBhZ2Uvc3ludGF4Lmh0bWwjcGFyc2luZy1tYWluLWludHJcbiAgICAgIGNhc2Ug
J3RyJzpcbiAgICAgICAgcmV0dXJuIHRhZyA9PT0gJ3RoJyB8fCB0YWcgPT09ICd0ZCcgfHwgdGFn
ID09PSAnc3R5bGUnIHx8IHRhZyA9PT0gJ3NjcmlwdCcgfHwgdGFnID09PSAndGVtcGxhdGUnO1xu
ICAgICAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvc3ludGF4Lmh0
bWwjcGFyc2luZy1tYWluLWludGJvZHlcbiAgICAgIGNhc2UgJ3Rib2R5JzpcbiAgICAgIGNhc2Ug
J3RoZWFkJzpcbiAgICAgIGNhc2UgJ3Rmb290JzpcbiAgICAgICAgcmV0dXJuIHRhZyA9PT0gJ3Ry
JyB8fCB0YWcgPT09ICdzdHlsZScgfHwgdGFnID09PSAnc2NyaXB0JyB8fCB0YWcgPT09ICd0ZW1w
bGF0ZSc7XG4gICAgICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9z
eW50YXguaHRtbCNwYXJzaW5nLW1haW4taW5jb2xncm91cFxuICAgICAgY2FzZSAnY29sZ3JvdXAn
OlxuICAgICAgICByZXR1cm4gdGFnID09PSAnY29sJyB8fCB0YWcgPT09ICd0ZW1wbGF0ZSc7XG4g
ICAgICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9zeW50YXguaHRt
bCNwYXJzaW5nLW1haW4taW50YWJsZVxuICAgICAgY2FzZSAndGFibGUnOlxuICAgICAgICByZXR1
cm4gdGFnID09PSAnY2FwdGlvbicgfHwgdGFnID09PSAnY29sZ3JvdXAnIHx8IHRhZyA9PT0gJ3Ri
b2R5JyB8fCB0YWcgPT09ICd0Zm9vdCcgfHwgdGFnID09PSAndGhlYWQnIHx8IHRhZyA9PT0gJ3N0
eWxlJyB8fCB0YWcgPT09ICdzY3JpcHQnIHx8IHRhZyA9PT0gJ3RlbXBsYXRlJztcbiAgICAgIC8v
IGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3N5bnRheC5odG1sI3BhcnNp
bmctbWFpbi1pbmhlYWRcbiAgICAgIGNhc2UgJ2hlYWQnOlxuICAgICAgICByZXR1cm4gdGFnID09
PSAnYmFzZScgfHwgdGFnID09PSAnYmFzZWZvbnQnIHx8IHRhZyA9PT0gJ2Jnc291bmQnIHx8IHRh
ZyA9PT0gJ2xpbmsnIHx8IHRhZyA9PT0gJ21ldGEnIHx8IHRhZyA9PT0gJ3RpdGxlJyB8fCB0YWcg
PT09ICdub3NjcmlwdCcgfHwgdGFnID09PSAnbm9mcmFtZXMnIHx8IHRhZyA9PT0gJ3N0eWxlJyB8
fCB0YWcgPT09ICdzY3JpcHQnIHx8IHRhZyA9PT0gJ3RlbXBsYXRlJztcbiAgICAgIC8vIGh0dHBz
Oi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3NlbWFudGljcy5odG1sI3RoZS1odG1s
LWVsZW1lbnRcbiAgICAgIGNhc2UgJ2h0bWwnOlxuICAgICAgICByZXR1cm4gdGFnID09PSAnaGVh
ZCcgfHwgdGFnID09PSAnYm9keSc7XG4gICAgICBjYXNlICcjZG9jdW1lbnQnOlxuICAgICAgICBy
ZXR1cm4gdGFnID09PSAnaHRtbCc7XG4gICAgfVxuXG4gICAgLy8gUHJvYmFibHkgaW4gdGhlIFwi
aW4gYm9keVwiIHBhcnNpbmcgbW9kZSwgc28gd2Ugb3V0bGF3IG9ubHkgdGFnIGNvbWJvc1xuICAg
IC8vIHdoZXJlIHRoZSBwYXJzaW5nIHJ1bGVzIGNhdXNlIGltcGxpY2l0IG9wZW5zIG9yIGNsb3Nl
cyB0byBiZSBhZGRlZC5cbiAgICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRp
cGFnZS9zeW50YXguaHRtbCNwYXJzaW5nLW1haW4taW5ib2R5XG4gICAgc3dpdGNoICh0YWcpIHtc
biAgICAgIGNhc2UgJ2gxJzpcbiAgICAgIGNhc2UgJ2gyJzpcbiAgICAgIGNhc2UgJ2gzJzpcbiAg
ICAgIGNhc2UgJ2g0JzpcbiAgICAgIGNhc2UgJ2g1JzpcbiAgICAgIGNhc2UgJ2g2JzpcbiAgICAg
ICAgcmV0dXJuIHBhcmVudFRhZyAhPT0gJ2gxJyAmJiBwYXJlbnRUYWcgIT09ICdoMicgJiYgcGFy
ZW50VGFnICE9PSAnaDMnICYmIHBhcmVudFRhZyAhPT0gJ2g0JyAmJiBwYXJlbnRUYWcgIT09ICdo
NScgJiYgcGFyZW50VGFnICE9PSAnaDYnO1xuXG4gICAgICBjYXNlICdycCc6XG4gICAgICBjYXNl
ICdydCc6XG4gICAgICAgIHJldHVybiBpbXBsaWVkRW5kVGFncy5pbmRleE9mKHBhcmVudFRhZykg
PT09IC0xO1xuXG4gICAgICBjYXNlICdib2R5JzpcbiAgICAgIGNhc2UgJ2NhcHRpb24nOlxuICAg
ICAgY2FzZSAnY29sJzpcbiAgICAgIGNhc2UgJ2NvbGdyb3VwJzpcbiAgICAgIGNhc2UgJ2ZyYW1l
JzpcbiAgICAgIGNhc2UgJ2hlYWQnOlxuICAgICAgY2FzZSAnaHRtbCc6XG4gICAgICBjYXNlICd0
Ym9keSc6XG4gICAgICBjYXNlICd0ZCc6XG4gICAgICBjYXNlICd0Zm9vdCc6XG4gICAgICBjYXNl
ICd0aCc6XG4gICAgICBjYXNlICd0aGVhZCc6XG4gICAgICBjYXNlICd0cic6XG4gICAgICAgIC8v
IFRoZXNlIHRhZ3MgYXJlIG9ubHkgdmFsaWQgd2l0aCBhIGZldyBwYXJlbnRzIHRoYXQgaGF2ZSBz
cGVjaWFsIGNoaWxkXG4gICAgICAgIC8vIHBhcnNpbmcgcnVsZXMgLS0gaWYgd2UncmUgZG93biBo
ZXJlLCB0aGVuIG5vbmUgb2YgdGhvc2UgbWF0Y2hlZCBhbmRcbiAgICAgICAgLy8gc28gd2UgYWxs
b3cgaXQgb25seSBpZiB3ZSBkb24ndCBrbm93IHdoYXQgdGhlIHBhcmVudCBpcywgYXMgYWxsIG90
aGVyXG4gICAgICAgIC8vIGNhc2VzIGFyZSBpbnZhbGlkLlxuICAgICAgICByZXR1cm4gcGFyZW50
VGFnID09IG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH07XG5cbiAgLyoqXG4g
ICAqIFJldHVybnMgd2hldGhlclxuICAgKi9cbiAgdmFyIGZpbmRJbnZhbGlkQW5jZXN0b3JGb3JU
YWcgPSBmdW5jdGlvbiAodGFnLCBhbmNlc3RvckluZm8pIHtcbiAgICBzd2l0Y2ggKHRhZykge1xu
ICAgICAgY2FzZSAnYWRkcmVzcyc6XG4gICAgICBjYXNlICdhcnRpY2xlJzpcbiAgICAgIGNhc2Ug
J2FzaWRlJzpcbiAgICAgIGNhc2UgJ2Jsb2NrcXVvdGUnOlxuICAgICAgY2FzZSAnY2VudGVyJzpc
biAgICAgIGNhc2UgJ2RldGFpbHMnOlxuICAgICAgY2FzZSAnZGlhbG9nJzpcbiAgICAgIGNhc2Ug
J2Rpcic6XG4gICAgICBjYXNlICdkaXYnOlxuICAgICAgY2FzZSAnZGwnOlxuICAgICAgY2FzZSAn
ZmllbGRzZXQnOlxuICAgICAgY2FzZSAnZmlnY2FwdGlvbic6XG4gICAgICBjYXNlICdmaWd1cmUn
OlxuICAgICAgY2FzZSAnZm9vdGVyJzpcbiAgICAgIGNhc2UgJ2hlYWRlcic6XG4gICAgICBjYXNl
ICdoZ3JvdXAnOlxuICAgICAgY2FzZSAnbWFpbic6XG4gICAgICBjYXNlICdtZW51JzpcbiAgICAg
IGNhc2UgJ25hdic6XG4gICAgICBjYXNlICdvbCc6XG4gICAgICBjYXNlICdwJzpcbiAgICAgIGNh
c2UgJ3NlY3Rpb24nOlxuICAgICAgY2FzZSAnc3VtbWFyeSc6XG4gICAgICBjYXNlICd1bCc6XG4g
ICAgICBjYXNlICdwcmUnOlxuICAgICAgY2FzZSAnbGlzdGluZyc6XG4gICAgICBjYXNlICd0YWJs
ZSc6XG4gICAgICBjYXNlICdocic6XG4gICAgICBjYXNlICd4bXAnOlxuICAgICAgY2FzZSAnaDEn
OlxuICAgICAgY2FzZSAnaDInOlxuICAgICAgY2FzZSAnaDMnOlxuICAgICAgY2FzZSAnaDQnOlxu
ICAgICAgY2FzZSAnaDUnOlxuICAgICAgY2FzZSAnaDYnOlxuICAgICAgICByZXR1cm4gYW5jZXN0
b3JJbmZvLnBUYWdJbkJ1dHRvblNjb3BlO1xuXG4gICAgICBjYXNlICdmb3JtJzpcbiAgICAgICAg
cmV0dXJuIGFuY2VzdG9ySW5mby5mb3JtVGFnIHx8IGFuY2VzdG9ySW5mby5wVGFnSW5CdXR0b25T
Y29wZTtcblxuICAgICAgY2FzZSAnbGknOlxuICAgICAgICByZXR1cm4gYW5jZXN0b3JJbmZvLmxp
c3RJdGVtVGFnQXV0b2Nsb3Npbmc7XG5cbiAgICAgIGNhc2UgJ2RkJzpcbiAgICAgIGNhc2UgJ2R0
JzpcbiAgICAgICAgcmV0dXJuIGFuY2VzdG9ySW5mby5kbEl0ZW1UYWdBdXRvY2xvc2luZztcblxu
ICAgICAgY2FzZSAnYnV0dG9uJzpcbiAgICAgICAgcmV0dXJuIGFuY2VzdG9ySW5mby5idXR0b25U
YWdJblNjb3BlO1xuXG4gICAgICBjYXNlICdhJzpcbiAgICAgICAgLy8gU3BlYyBzYXlzIHNvbWV0
aGluZyBhYm91dCBzdG9yaW5nIGEgbGlzdCBvZiBtYXJrZXJzLCBidXQgaXQgc291bmRzXG4gICAg
ICAgIC8vIGVxdWl2YWxlbnQgdG8gdGhpcyBjaGVjay5cbiAgICAgICAgcmV0dXJuIGFuY2VzdG9y
SW5mby5hVGFnSW5TY29wZTtcblxuICAgICAgY2FzZSAnbm9icic6XG4gICAgICAgIHJldHVybiBh
bmNlc3RvckluZm8ubm9iclRhZ0luU2NvcGU7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4g
IH07XG5cbiAgLyoqXG4gICAqIEdpdmVuIGEgUmVhY3RDb21wb3NpdGVDb21wb25lbnQgaW5zdGFu
Y2UsIHJldHVybiBhIGxpc3Qgb2YgaXRzIHJlY3Vyc2l2ZVxuICAgKiBvd25lcnMsIHN0YXJ0aW5n
IGF0IHRoZSByb290IGFuZCBlbmRpbmcgd2l0aCB0aGUgaW5zdGFuY2UgaXRzZWxmLlxuICAgKi9c
biAgdmFyIGZpbmRPd25lclN0YWNrID0gZnVuY3Rpb24gKGluc3RhbmNlKSB7XG4gICAgaWYgKCFp
bnN0YW5jZSkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIHZhciBzdGFjayA9IFtd
O1xuICAgIGRvIHtcbiAgICAgIHN0YWNrLnB1c2goaW5zdGFuY2UpO1xuICAgIH0gd2hpbGUgKGlu
c3RhbmNlID0gaW5zdGFuY2UuX2N1cnJlbnRFbGVtZW50Ll9vd25lcik7XG4gICAgc3RhY2sucmV2
ZXJzZSgpO1xuICAgIHJldHVybiBzdGFjaztcbiAgfTtcblxuICB2YXIgZGlkV2FybiA9IHt9O1xu
XG4gIHZhbGlkYXRlRE9NTmVzdGluZyA9IGZ1bmN0aW9uIChjaGlsZFRhZywgY2hpbGRUZXh0LCBj
aGlsZEluc3RhbmNlLCBhbmNlc3RvckluZm8pIHtcbiAgICBhbmNlc3RvckluZm8gPSBhbmNlc3Rv
ckluZm8gfHwgZW1wdHlBbmNlc3RvckluZm87XG4gICAgdmFyIHBhcmVudEluZm8gPSBhbmNlc3Rv
ckluZm8uY3VycmVudDtcbiAgICB2YXIgcGFyZW50VGFnID0gcGFyZW50SW5mbyAmJiBwYXJlbnRJ
bmZvLnRhZztcblxuICAgIGlmIChjaGlsZFRleHQgIT0gbnVsbCkge1xuICAgICAgcHJvY2Vzcy5l
bnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoY2hpbGRUYWcgPT0gbnVsbCwg
J3ZhbGlkYXRlRE9NTmVzdGluZzogd2hlbiBjaGlsZFRleHQgaXMgcGFzc2VkLCBjaGlsZFRhZyBz
aG91bGQgYmUgbnVsbCcpIDogdm9pZCAwO1xuICAgICAgY2hpbGRUYWcgPSAnI3RleHQnO1xuICAg
IH1cblxuICAgIHZhciBpbnZhbGlkUGFyZW50ID0gaXNUYWdWYWxpZFdpdGhQYXJlbnQoY2hpbGRU
YWcsIHBhcmVudFRhZykgPyBudWxsIDogcGFyZW50SW5mbztcbiAgICB2YXIgaW52YWxpZEFuY2Vz
dG9yID0gaW52YWxpZFBhcmVudCA/IG51bGwgOiBmaW5kSW52YWxpZEFuY2VzdG9yRm9yVGFnKGNo
aWxkVGFnLCBhbmNlc3RvckluZm8pO1xuICAgIHZhciBwcm9ibGVtYXRpYyA9IGludmFsaWRQYXJl
bnQgfHwgaW52YWxpZEFuY2VzdG9yO1xuXG4gICAgaWYgKHByb2JsZW1hdGljKSB7XG4gICAgICB2
YXIgYW5jZXN0b3JUYWcgPSBwcm9ibGVtYXRpYy50YWc7XG4gICAgICB2YXIgYW5jZXN0b3JJbnN0
YW5jZSA9IHByb2JsZW1hdGljLmluc3RhbmNlO1xuXG4gICAgICB2YXIgY2hpbGRPd25lciA9IGNo
aWxkSW5zdGFuY2UgJiYgY2hpbGRJbnN0YW5jZS5fY3VycmVudEVsZW1lbnQuX293bmVyO1xuICAg
ICAgdmFyIGFuY2VzdG9yT3duZXIgPSBhbmNlc3Rvckluc3RhbmNlICYmIGFuY2VzdG9ySW5zdGFu
Y2UuX2N1cnJlbnRFbGVtZW50Ll9vd25lcjtcblxuICAgICAgdmFyIGNoaWxkT3duZXJzID0gZmlu
ZE93bmVyU3RhY2soY2hpbGRPd25lcik7XG4gICAgICB2YXIgYW5jZXN0b3JPd25lcnMgPSBmaW5k
T3duZXJTdGFjayhhbmNlc3Rvck93bmVyKTtcblxuICAgICAgdmFyIG1pblN0YWNrTGVuID0gTWF0
aC5taW4oY2hpbGRPd25lcnMubGVuZ3RoLCBhbmNlc3Rvck93bmVycy5sZW5ndGgpO1xuICAgICAg
dmFyIGk7XG5cbiAgICAgIHZhciBkZWVwZXN0Q29tbW9uID0gLTE7XG4gICAgICBmb3IgKGkgPSAw
OyBpIDwgbWluU3RhY2tMZW47IGkrKykge1xuICAgICAgICBpZiAoY2hpbGRPd25lcnNbaV0gPT09
IGFuY2VzdG9yT3duZXJzW2ldKSB7XG4gICAgICAgICAgZGVlcGVzdENvbW1vbiA9IGk7XG4gICAg
ICAgIH0gZWxzZSB7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAg
ICAgdmFyIFVOS05PV04gPSAnKHVua25vd24pJztcbiAgICAgIHZhciBjaGlsZE93bmVyTmFtZXMg
PSBjaGlsZE93bmVycy5zbGljZShkZWVwZXN0Q29tbW9uICsgMSkubWFwKGZ1bmN0aW9uIChpbnN0
KSB7XG4gICAgICAgIHJldHVybiBpbnN0LmdldE5hbWUoKSB8fCBVTktOT1dOO1xuICAgICAgfSk7
XG4gICAgICB2YXIgYW5jZXN0b3JPd25lck5hbWVzID0gYW5jZXN0b3JPd25lcnMuc2xpY2UoZGVl
cGVzdENvbW1vbiArIDEpLm1hcChmdW5jdGlvbiAoaW5zdCkge1xuICAgICAgICByZXR1cm4gaW5z
dC5nZXROYW1lKCkgfHwgVU5LTk9XTjtcbiAgICAgIH0pO1xuICAgICAgdmFyIG93bmVySW5mbyA9
IFtdLmNvbmNhdChcbiAgICAgIC8vIElmIHRoZSBwYXJlbnQgYW5kIGNoaWxkIGluc3RhbmNlcyBo
YXZlIGEgY29tbW9uIG93bmVyIGFuY2VzdG9yLCBzdGFydFxuICAgICAgLy8gd2l0aCB0aGF0IC0t
IG90aGVyd2lzZSB3ZSBqdXN0IHN0YXJ0IHdpdGggdGhlIHBhcmVudCdzIG93bmVycy5cbiAgICAg
IGRlZXBlc3RDb21tb24gIT09IC0xID8gY2hpbGRPd25lcnNbZGVlcGVzdENvbW1vbl0uZ2V0TmFt
ZSgpIHx8IFVOS05PV04gOiBbXSwgYW5jZXN0b3JPd25lck5hbWVzLCBhbmNlc3RvclRhZyxcbiAg
ICAgIC8vIElmIHdlJ3JlIHdhcm5pbmcgYWJvdXQgYW4gaW52YWxpZCAobm9uLXBhcmVudCkgYW5j
ZXN0cnksIGFkZCAnLi4uJ1xuICAgICAgaW52YWxpZEFuY2VzdG9yID8gWycuLi4nXSA6IFtdLCBj
aGlsZE93bmVyTmFtZXMsIGNoaWxkVGFnKS5qb2luKCcgPiAnKTtcblxuICAgICAgdmFyIHdhcm5L
ZXkgPSAhIWludmFsaWRQYXJlbnQgKyAnfCcgKyBjaGlsZFRhZyArICd8JyArIGFuY2VzdG9yVGFn
ICsgJ3wnICsgb3duZXJJbmZvO1xuICAgICAgaWYgKGRpZFdhcm5bd2FybktleV0pIHtcbiAgICAg
ICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgZGlkV2Fyblt3YXJuS2V5XSA9IHRydWU7XG5cbiAg
ICAgIHZhciB0YWdEaXNwbGF5TmFtZSA9IGNoaWxkVGFnO1xuICAgICAgdmFyIHdoaXRlc3BhY2VJ
bmZvID0gJyc7XG4gICAgICBpZiAoY2hpbGRUYWcgPT09ICcjdGV4dCcpIHtcbiAgICAgICAgaWYg
KC9cXFMvLnRlc3QoY2hpbGRUZXh0KSkge1xuICAgICAgICAgIHRhZ0Rpc3BsYXlOYW1lID0gJ1Rl
eHQgbm9kZXMnO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRhZ0Rpc3BsYXlOYW1lID0g
J1doaXRlc3BhY2UgdGV4dCBub2Rlcyc7XG4gICAgICAgICAgd2hpdGVzcGFjZUluZm8gPSBcIiBN
YWtlIHN1cmUgeW91IGRvbid0IGhhdmUgYW55IGV4dHJhIHdoaXRlc3BhY2UgYmV0d2VlbiB0YWdz
IG9uIFwiICsgJ2VhY2ggbGluZSBvZiB5b3VyIHNvdXJjZSBjb2RlLic7XG4gICAgICAgIH1cbiAg
ICAgIH0gZWxzZSB7XG4gICAgICAgIHRhZ0Rpc3BsYXlOYW1lID0gJzwnICsgY2hpbGRUYWcgKyAn
Pic7XG4gICAgICB9XG5cbiAgICAgIGlmIChpbnZhbGlkUGFyZW50KSB7XG4gICAgICAgIHZhciBp
bmZvID0gJyc7XG4gICAgICAgIGlmIChhbmNlc3RvclRhZyA9PT0gJ3RhYmxlJyAmJiBjaGlsZFRh
ZyA9PT0gJ3RyJykge1xuICAgICAgICAgIGluZm8gKz0gJyBBZGQgYSA8dGJvZHk+IHRvIHlvdXIg
Y29kZSB0byBtYXRjaCB0aGUgRE9NIHRyZWUgZ2VuZXJhdGVkIGJ5ICcgKyAndGhlIGJyb3dzZXIu
JztcbiAgICAgICAgfVxuICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rp
b24nID8gd2FybmluZyhmYWxzZSwgJ3ZhbGlkYXRlRE9NTmVzdGluZyguLi4pOiAlcyBjYW5ub3Qg
YXBwZWFyIGFzIGEgY2hpbGQgb2YgPCVzPi4lcyAnICsgJ1NlZSAlcy4lcycsIHRhZ0Rpc3BsYXlO
YW1lLCBhbmNlc3RvclRhZywgd2hpdGVzcGFjZUluZm8sIG93bmVySW5mbywgaW5mbykgOiB2b2lk
IDA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3By
b2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ3ZhbGlkYXRlRE9NTmVzdGluZyguLi4pOiAlcyBj
YW5ub3QgYXBwZWFyIGFzIGEgZGVzY2VuZGFudCBvZiAnICsgJzwlcz4uIFNlZSAlcy4nLCB0YWdE
aXNwbGF5TmFtZSwgYW5jZXN0b3JUYWcsIG93bmVySW5mbykgOiB2b2lkIDA7XG4gICAgICB9XG4g
ICAgfVxuICB9O1xuXG4gIHZhbGlkYXRlRE9NTmVzdGluZy51cGRhdGVkQW5jZXN0b3JJbmZvID0g
dXBkYXRlZEFuY2VzdG9ySW5mbztcblxuICAvLyBGb3IgdGVzdGluZ1xuICB2YWxpZGF0ZURPTU5l
c3RpbmcuaXNUYWdWYWxpZEluQ29udGV4dCA9IGZ1bmN0aW9uICh0YWcsIGFuY2VzdG9ySW5mbykg
e1xuICAgIGFuY2VzdG9ySW5mbyA9IGFuY2VzdG9ySW5mbyB8fCBlbXB0eUFuY2VzdG9ySW5mbztc
biAgICB2YXIgcGFyZW50SW5mbyA9IGFuY2VzdG9ySW5mby5jdXJyZW50O1xuICAgIHZhciBwYXJl
bnRUYWcgPSBwYXJlbnRJbmZvICYmIHBhcmVudEluZm8udGFnO1xuICAgIHJldHVybiBpc1RhZ1Zh
bGlkV2l0aFBhcmVudCh0YWcsIHBhcmVudFRhZykgJiYgIWZpbmRJbnZhbGlkQW5jZXN0b3JGb3JU
YWcodGFnLCBhbmNlc3RvckluZm8pO1xuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHZhbGlk
YXRlRE9NTmVzdGluZztcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RF
UlxuICoqIC4vfi9yZWFjdC1kb20vbGliL3ZhbGlkYXRlRE9NTmVzdGluZy5qc1xuICoqIG1vZHVs
ZSBpZCA9IDQ5XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIndXNlIHN0cmljdCc7XG5c
bmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5leHBvcnRzLmRlZmF1bHQgPSB3YXJuaW5nO1xu
LyoqXG4gKiBQcmludHMgYSB3YXJuaW5nIGluIHRoZSBjb25zb2xlIGlmIGl0IGV4aXN0cy5cbiAq
XG4gKiBAcGFyYW0ge1N0cmluZ30gbWVzc2FnZSBUaGUgd2FybmluZyBtZXNzYWdlLlxuICogQHJl
dHVybnMge3ZvaWR9XG4gKi9cbmZ1bmN0aW9uIHdhcm5pbmcobWVzc2FnZSkge1xuICAvKiBlc2xp
bnQtZGlzYWJsZSBuby1jb25zb2xlICovXG4gIGlmICh0eXBlb2YgY29uc29sZSAhPT0gJ3VuZGVm
aW5lZCcgJiYgdHlwZW9mIGNvbnNvbGUuZXJyb3IgPT09ICdmdW5jdGlvbicpIHtcbiAgICBjb25z
b2xlLmVycm9yKG1lc3NhZ2UpO1xuICB9XG4gIC8qIGVzbGludC1lbmFibGUgbm8tY29uc29sZSAq
L1xuICB0cnkge1xuICAgIC8vIFRoaXMgZXJyb3Igd2FzIHRocm93biBhcyBhIGNvbnZlbmllbmNl
IHNvIHRoYXQgaWYgeW91IGVuYWJsZVxuICAgIC8vIFwiYnJlYWsgb24gYWxsIGV4Y2VwdGlvbnNc
IiBpbiB5b3VyIGNvbnNvbGUsXG4gICAgLy8gaXQgd291bGQgcGF1c2UgdGhlIGV4ZWN1dGlvbiBh
dCB0aGlzIGxpbmUuXG4gICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xuICAgIC8qIGVzbGlu
dC1kaXNhYmxlIG5vLWVtcHR5ICovXG4gIH0gY2F0Y2ggKGUpIHt9XG4gIC8qIGVzbGludC1lbmFi
bGUgbm8tZW1wdHkgKi9cbn1cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZP
T1RFUlxuICoqIC4vfi9yZWFjdC1yZWR1eC9saWIvdXRpbHMvd2FybmluZy5qc1xuICoqIG1vZHVs
ZSBpZCA9IDUwXG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIndXNlIHN0cmljdCc7XG5c
bi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBB
bGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQg
dW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxl
IGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFs
IGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBm
aWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAdHlwZWNoZWNrc1xuICovXG5cbnZh
ciBlbXB0eUZ1bmN0aW9uID0gcmVxdWlyZSgnLi9lbXB0eUZ1bmN0aW9uJyk7XG5cbi8qKlxuICog
VXBzdHJlYW0gdmVyc2lvbiBvZiBldmVudCBsaXN0ZW5lci4gRG9lcyBub3QgdGFrZSBpbnRvIGFj
Y291bnQgc3BlY2lmaWNcbiAqIG5hdHVyZSBvZiBwbGF0Zm9ybS5cbiAqL1xudmFyIEV2ZW50TGlz
dGVuZXIgPSB7XG4gIC8qKlxuICAgKiBMaXN0ZW4gdG8gRE9NIGV2ZW50cyBkdXJpbmcgdGhlIGJ1
YmJsZSBwaGFzZS5cbiAgICpcbiAgICogQHBhcmFtIHtET01FdmVudFRhcmdldH0gdGFyZ2V0IERP
TSBlbGVtZW50IHRvIHJlZ2lzdGVyIGxpc3RlbmVyIG9uLlxuICAgKiBAcGFyYW0ge3N0cmluZ30g
ZXZlbnRUeXBlIEV2ZW50IHR5cGUsIGUuZy4gJ2NsaWNrJyBvciAnbW91c2VvdmVyJy5cbiAgICog
QHBhcmFtIHtmdW5jdGlvbn0gY2FsbGJhY2sgQ2FsbGJhY2sgZnVuY3Rpb24uXG4gICAqIEByZXR1
cm4ge29iamVjdH0gT2JqZWN0IHdpdGggYSBgcmVtb3ZlYCBtZXRob2QuXG4gICAqL1xuICBsaXN0
ZW46IGZ1bmN0aW9uIGxpc3Rlbih0YXJnZXQsIGV2ZW50VHlwZSwgY2FsbGJhY2spIHtcbiAgICBp
ZiAodGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIpIHtcbiAgICAgIHRhcmdldC5hZGRFdmVudExpc3Rl
bmVyKGV2ZW50VHlwZSwgY2FsbGJhY2ssIGZhbHNlKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAg
IHJlbW92ZTogZnVuY3Rpb24gcmVtb3ZlKCkge1xuICAgICAgICAgIHRhcmdldC5yZW1vdmVFdmVu
dExpc3RlbmVyKGV2ZW50VHlwZSwgY2FsbGJhY2ssIGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAg
fTtcbiAgICB9IGVsc2UgaWYgKHRhcmdldC5hdHRhY2hFdmVudCkge1xuICAgICAgdGFyZ2V0LmF0
dGFjaEV2ZW50KCdvbicgKyBldmVudFR5cGUsIGNhbGxiYWNrKTtcbiAgICAgIHJldHVybiB7XG4g
ICAgICAgIHJlbW92ZTogZnVuY3Rpb24gcmVtb3ZlKCkge1xuICAgICAgICAgIHRhcmdldC5kZXRh
Y2hFdmVudCgnb24nICsgZXZlbnRUeXBlLCBjYWxsYmFjayk7XG4gICAgICAgIH1cbiAgICAgIH07
XG4gICAgfVxuICB9LFxuXG4gIC8qKlxuICAgKiBMaXN0ZW4gdG8gRE9NIGV2ZW50cyBkdXJpbmcg
dGhlIGNhcHR1cmUgcGhhc2UuXG4gICAqXG4gICAqIEBwYXJhbSB7RE9NRXZlbnRUYXJnZXR9IHRh
cmdldCBET00gZWxlbWVudCB0byByZWdpc3RlciBsaXN0ZW5lciBvbi5cbiAgICogQHBhcmFtIHtz
dHJpbmd9IGV2ZW50VHlwZSBFdmVudCB0eXBlLCBlLmcuICdjbGljaycgb3IgJ21vdXNlb3Zlcicu
XG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IGNhbGxiYWNrIENhbGxiYWNrIGZ1bmN0aW9uLlxuICAg
KiBAcmV0dXJuIHtvYmplY3R9IE9iamVjdCB3aXRoIGEgYHJlbW92ZWAgbWV0aG9kLlxuICAgKi9c
biAgY2FwdHVyZTogZnVuY3Rpb24gY2FwdHVyZSh0YXJnZXQsIGV2ZW50VHlwZSwgY2FsbGJhY2sp
IHtcbiAgICBpZiAodGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIpIHtcbiAgICAgIHRhcmdldC5hZGRF
dmVudExpc3RlbmVyKGV2ZW50VHlwZSwgY2FsbGJhY2ssIHRydWUpO1xuICAgICAgcmV0dXJuIHtc
biAgICAgICAgcmVtb3ZlOiBmdW5jdGlvbiByZW1vdmUoKSB7XG4gICAgICAgICAgdGFyZ2V0LnJl
bW92ZUV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBjYWxsYmFjaywgdHJ1ZSk7XG4gICAgICAgIH1c
biAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAh
PT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0F0dGVtcHRlZCB0byBs
aXN0ZW4gdG8gZXZlbnRzIGR1cmluZyB0aGUgY2FwdHVyZSBwaGFzZSBvbiBhICcgKyAnYnJvd3Nl
ciB0aGF0IGRvZXMgbm90IHN1cHBvcnQgdGhlIGNhcHR1cmUgcGhhc2UuIFlvdXIgYXBwbGljYXRp
b24gJyArICd3aWxsIG5vdCByZWNlaXZlIHNvbWUgZXZlbnRzLicpO1xuICAgICAgfVxuICAgICAg
cmV0dXJuIHtcbiAgICAgICAgcmVtb3ZlOiBlbXB0eUZ1bmN0aW9uXG4gICAgICB9O1xuICAgIH1c
biAgfSxcblxuICByZWdpc3RlckRlZmF1bHQ6IGZ1bmN0aW9uIHJlZ2lzdGVyRGVmYXVsdCgpIHt9
XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IEV2ZW50TGlzdGVuZXI7XG5cblxuLyoqKioqKioqKioq
KioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vZmJqcy9saWIvRXZlbnRMaXN0ZW5l
ci5qc1xuICoqIG1vZHVsZSBpZCA9IDUxXG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIv
KipcbiAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxs
IHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVu
ZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBp
biB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBn
cmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmls
ZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxuLyoq
XG4gKiBAcGFyYW0ge0RPTUVsZW1lbnR9IG5vZGUgaW5wdXQvdGV4dGFyZWEgdG8gZm9jdXNcbiAq
L1xuXG5mdW5jdGlvbiBmb2N1c05vZGUobm9kZSkge1xuICAvLyBJRTggY2FuIHRocm93IFwiQ2Fu
J3QgbW92ZSBmb2N1cyB0byB0aGUgY29udHJvbCBiZWNhdXNlIGl0IGlzIGludmlzaWJsZSxcbiAg
Ly8gbm90IGVuYWJsZWQsIG9yIG9mIGEgdHlwZSB0aGF0IGRvZXMgbm90IGFjY2VwdCB0aGUgZm9j
dXMuXCIgZm9yIGFsbCBraW5kcyBvZlxuICAvLyByZWFzb25zIHRoYXQgYXJlIHRvbyBleHBlbnNp
dmUgYW5kIGZyYWdpbGUgdG8gdGVzdC5cbiAgdHJ5IHtcbiAgICBub2RlLmZvY3VzKCk7XG4gIH0g
Y2F0Y2ggKGUpIHt9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZm9jdXNOb2RlO1xuXG5cbi8qKioq
KioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L2ZianMvbGliL2ZvY3Vz
Tm9kZS5qc1xuICoqIG1vZHVsZSBpZCA9IDUyXG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8i
LCIndXNlIHN0cmljdCc7XG5cbi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZh
Y2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNl
IGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRo
ZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0
cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3Vu
ZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAdHlw
ZWNoZWNrc1xuICovXG5cbi8qIGVzbGludC1kaXNhYmxlIGZiLXd3dy90eXBlb2YtdW5kZWZpbmVk
ICovXG5cbi8qKlxuICogU2FtZSBhcyBkb2N1bWVudC5hY3RpdmVFbGVtZW50IGJ1dCB3cmFwcyBp
biBhIHRyeS1jYXRjaCBibG9jay4gSW4gSUUgaXQgaXNcbiAqIG5vdCBzYWZlIHRvIGNhbGwgZG9j
dW1lbnQuYWN0aXZlRWxlbWVudCBpZiB0aGVyZSBpcyBub3RoaW5nIGZvY3VzZWQuXG4gKlxuICog
VGhlIGFjdGl2ZUVsZW1lbnQgd2lsbCBiZSBudWxsIG9ubHkgaWYgdGhlIGRvY3VtZW50IG9yIGRv
Y3VtZW50IGJvZHkgaXMgbm90XG4gKiB5ZXQgZGVmaW5lZC5cbiAqXG4gKiBAcGFyYW0gez9ET01E
b2N1bWVudH0gZG9jIERlZmF1bHRzIHRvIGN1cnJlbnQgZG9jdW1lbnQuXG4gKiBAcmV0dXJuIHs/
RE9NRWxlbWVudH1cbiAqL1xuZnVuY3Rpb24gZ2V0QWN0aXZlRWxlbWVudChkb2MpIC8qP0RPTUVs
ZW1lbnQqL3tcbiAgZG9jID0gZG9jIHx8ICh0eXBlb2YgZG9jdW1lbnQgIT09ICd1bmRlZmluZWQn
ID8gZG9jdW1lbnQgOiB1bmRlZmluZWQpO1xuICBpZiAodHlwZW9mIGRvYyA9PT0gJ3VuZGVmaW5l
ZCcpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICB0cnkge1xuICAgIHJldHVybiBkb2MuYWN0
aXZlRWxlbWVudCB8fCBkb2MuYm9keTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiBkb2Mu
Ym9keTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGdldEFjdGl2ZUVsZW1lbnQ7XG5cblxu
LyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vZmJqcy9saWIv
Z2V0QWN0aXZlRWxlbWVudC5qc1xuICoqIG1vZHVsZSBpZCA9IDUzXG4gKiogbW9kdWxlIGNodW5r
cyA9IDBcbiAqKi8iLCJ2YXIgcm9vdCA9IHJlcXVpcmUoJy4vX3Jvb3QnKTtcblxuLyoqIEJ1aWx0
LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgU3ltYm9sID0gcm9vdC5TeW1ib2w7XG5cbm1v
ZHVsZS5leHBvcnRzID0gU3ltYm9sO1xuXG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VC
UEFDSyBGT09URVJcbiAqKiAuL34vbG9kYXNoL19TeW1ib2wuanNcbiAqKiBtb2R1bGUgaWQgPSA1
NFxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1w
cmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBU
aGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBm
b3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhp
cyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBj
YW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4g
Ki9cblxuJ3VzZSBzdHJpY3QnO1xuXG4vLyBSZWFjdCAxNS41IHJlZmVyZW5jZXMgdGhpcyBtb2R1
bGUsIGFuZCBhc3N1bWVzIFByb3BUeXBlcyBhcmUgc3RpbGwgY2FsbGFibGUgaW4gcHJvZHVjdGlv
bi5cbi8vIFRoZXJlZm9yZSB3ZSByZS1leHBvcnQgZGV2ZWxvcG1lbnQtb25seSB2ZXJzaW9uIHdp
dGggYWxsIHRoZSBQcm9wVHlwZXMgY2hlY2tzIGhlcmUuXG4vLyBIb3dldmVyIGlmIG9uZSBpcyBt
aWdyYXRpbmcgdG8gdGhlIGBwcm9wLXR5cGVzYCBucG0gbGlicmFyeSwgdGhleSB3aWxsIGdvIHRo
cm91Z2ggdGhlXG4vLyBgaW5kZXguanNgIGVudHJ5IHBvaW50LCBhbmQgaXQgd2lsbCBicmFuY2gg
ZGVwZW5kaW5nIG9uIHRoZSBlbnZpcm9ubWVudC5cbnZhciBmYWN0b3J5ID0gcmVxdWlyZSgnLi9m
YWN0b3J5V2l0aFR5cGVDaGVja2VycycpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihpc1Zh
bGlkRWxlbWVudCkge1xuICAvLyBJdCBpcyBzdGlsbCBhbGxvd2VkIGluIDE1LjUuXG4gIHZhciB0
aHJvd09uRGlyZWN0QWNjZXNzID0gZmFsc2U7XG4gIHJldHVybiBmYWN0b3J5KGlzVmFsaWRFbGVt
ZW50LCB0aHJvd09uRGlyZWN0QWNjZXNzKTtcbn07XG5cblxuXG4vKioqKioqKioqKioqKioqKipc
biAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9wcm9wLXR5cGVzL2ZhY3RvcnkuanNcbiAqKiBt
b2R1bGUgaWQgPSA1NVxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5
cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZl
ZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5
bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJl
Y3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0
ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBk
aXJlY3RvcnkuXG4gKi9cblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlv
bicpIHtcbiAgdmFyIFJFQUNUX0VMRU1FTlRfVFlQRSA9ICh0eXBlb2YgU3ltYm9sID09PSAnZnVu
Y3Rpb24nICYmXG4gICAgU3ltYm9sLmZvciAmJlxuICAgIFN5bWJvbC5mb3IoJ3JlYWN0LmVsZW1l
bnQnKSkgfHxcbiAgICAweGVhYzc7XG5cbiAgdmFyIGlzVmFsaWRFbGVtZW50ID0gZnVuY3Rpb24o
b2JqZWN0KSB7XG4gICAgcmV0dXJuIHR5cGVvZiBvYmplY3QgPT09ICdvYmplY3QnICYmXG4gICAg
ICBvYmplY3QgIT09IG51bGwgJiZcbiAgICAgIG9iamVjdC4kJHR5cGVvZiA9PT0gUkVBQ1RfRUxF
TUVOVF9UWVBFO1xuICB9O1xuXG4gIC8vIEJ5IGV4cGxpY2l0bHkgdXNpbmcgYHByb3AtdHlwZXNg
IHlvdSBhcmUgb3B0aW5nIGludG8gbmV3IGRldmVsb3BtZW50IGJlaGF2aW9yLlxuICAvLyBodHRw
Oi8vZmIubWUvcHJvcC10eXBlcy1pbi1wcm9kXG4gIHZhciB0aHJvd09uRGlyZWN0QWNjZXNzID0g
dHJ1ZTtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2ZhY3RvcnlXaXRoVHlwZUNoZWNr
ZXJzJykoaXNWYWxpZEVsZW1lbnQsIHRocm93T25EaXJlY3RBY2Nlc3MpO1xufSBlbHNlIHtcbiAg
Ly8gQnkgZXhwbGljaXRseSB1c2luZyBgcHJvcC10eXBlc2AgeW91IGFyZSBvcHRpbmcgaW50byBu
ZXcgcHJvZHVjdGlvbiBiZWhhdmlvci5cbiAgLy8gaHR0cDovL2ZiLm1lL3Byb3AtdHlwZXMtaW4t
cHJvZFxuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vZmFjdG9yeVdpdGhUaHJvd2luZ1No
aW1zJykoKTtcbn1cblxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVS
XG4gKiogLi9+L3Byb3AtdHlwZXMvaW5kZXguanNcbiAqKiBtb2R1bGUgaWQgPSA1NlxuICoqIG1v
ZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBG
YWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJj
ZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0
aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2Ug
dHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91
bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKi9cblxuJ3Vz
ZSBzdHJpY3QnO1xuXG52YXIgUmVhY3RQcm9wVHlwZXNTZWNyZXQgPSAnU0VDUkVUX0RPX05PVF9Q
QVNTX1RISVNfT1JfWU9VX1dJTExfQkVfRklSRUQnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0
UHJvcFR5cGVzU2VjcmV0O1xuXG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBG
T09URVJcbiAqKiAuL34vcHJvcC10eXBlcy9saWIvUmVhY3RQcm9wVHlwZXNTZWNyZXQuanNcbiAq
KiBtb2R1bGUgaWQgPSA1N1xuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBD
b3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNl
cnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qt
c3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBk
aXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2Yg
cGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2Ft
ZSBkaXJlY3RvcnkuXG4gKlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxuLyoqXG4gKiBDU1MgcHJv
cGVydGllcyB3aGljaCBhY2NlcHQgbnVtYmVycyBidXQgYXJlIG5vdCBpbiB1bml0cyBvZiBcInB4
XCIuXG4gKi9cblxudmFyIGlzVW5pdGxlc3NOdW1iZXIgPSB7XG4gIGFuaW1hdGlvbkl0ZXJhdGlv
bkNvdW50OiB0cnVlLFxuICBib3JkZXJJbWFnZU91dHNldDogdHJ1ZSxcbiAgYm9yZGVySW1hZ2VT
bGljZTogdHJ1ZSxcbiAgYm9yZGVySW1hZ2VXaWR0aDogdHJ1ZSxcbiAgYm94RmxleDogdHJ1ZSxc
biAgYm94RmxleEdyb3VwOiB0cnVlLFxuICBib3hPcmRpbmFsR3JvdXA6IHRydWUsXG4gIGNvbHVt
bkNvdW50OiB0cnVlLFxuICBmbGV4OiB0cnVlLFxuICBmbGV4R3JvdzogdHJ1ZSxcbiAgZmxleFBv
c2l0aXZlOiB0cnVlLFxuICBmbGV4U2hyaW5rOiB0cnVlLFxuICBmbGV4TmVnYXRpdmU6IHRydWUs
XG4gIGZsZXhPcmRlcjogdHJ1ZSxcbiAgZ3JpZFJvdzogdHJ1ZSxcbiAgZ3JpZFJvd0VuZDogdHJ1
ZSxcbiAgZ3JpZFJvd1NwYW46IHRydWUsXG4gIGdyaWRSb3dTdGFydDogdHJ1ZSxcbiAgZ3JpZENv
bHVtbjogdHJ1ZSxcbiAgZ3JpZENvbHVtbkVuZDogdHJ1ZSxcbiAgZ3JpZENvbHVtblNwYW46IHRy
dWUsXG4gIGdyaWRDb2x1bW5TdGFydDogdHJ1ZSxcbiAgZm9udFdlaWdodDogdHJ1ZSxcbiAgbGlu
ZUNsYW1wOiB0cnVlLFxuICBsaW5lSGVpZ2h0OiB0cnVlLFxuICBvcGFjaXR5OiB0cnVlLFxuICBv
cmRlcjogdHJ1ZSxcbiAgb3JwaGFuczogdHJ1ZSxcbiAgdGFiU2l6ZTogdHJ1ZSxcbiAgd2lkb3dz
OiB0cnVlLFxuICB6SW5kZXg6IHRydWUsXG4gIHpvb206IHRydWUsXG5cbiAgLy8gU1ZHLXJlbGF0
ZWQgcHJvcGVydGllc1xuICBmaWxsT3BhY2l0eTogdHJ1ZSxcbiAgZmxvb2RPcGFjaXR5OiB0cnVl
LFxuICBzdG9wT3BhY2l0eTogdHJ1ZSxcbiAgc3Ryb2tlRGFzaGFycmF5OiB0cnVlLFxuICBzdHJv
a2VEYXNob2Zmc2V0OiB0cnVlLFxuICBzdHJva2VNaXRlcmxpbWl0OiB0cnVlLFxuICBzdHJva2VP
cGFjaXR5OiB0cnVlLFxuICBzdHJva2VXaWR0aDogdHJ1ZVxufTtcblxuLyoqXG4gKiBAcGFyYW0g
e3N0cmluZ30gcHJlZml4IHZlbmRvci1zcGVjaWZpYyBwcmVmaXgsIGVnOiBXZWJraXRcbiAqIEBw
YXJhbSB7c3RyaW5nfSBrZXkgc3R5bGUgbmFtZSwgZWc6IHRyYW5zaXRpb25EdXJhdGlvblxuICog
QHJldHVybiB7c3RyaW5nfSBzdHlsZSBuYW1lIHByZWZpeGVkIHdpdGggYHByZWZpeGAsIHByb3Bl
cmx5IGNhbWVsQ2FzZWQsIGVnOlxuICogV2Via2l0VHJhbnNpdGlvbkR1cmF0aW9uXG4gKi9cbmZ1
bmN0aW9uIHByZWZpeEtleShwcmVmaXgsIGtleSkge1xuICByZXR1cm4gcHJlZml4ICsga2V5LmNo
YXJBdCgwKS50b1VwcGVyQ2FzZSgpICsga2V5LnN1YnN0cmluZygxKTtcbn1cblxuLyoqXG4gKiBT
dXBwb3J0IHN0eWxlIG5hbWVzIHRoYXQgbWF5IGNvbWUgcGFzc2VkIGluIHByZWZpeGVkIGJ5IGFk
ZGluZyBwZXJtdXRhdGlvbnNcbiAqIG9mIHZlbmRvciBwcmVmaXhlcy5cbiAqL1xudmFyIHByZWZp
eGVzID0gWydXZWJraXQnLCAnbXMnLCAnTW96JywgJ08nXTtcblxuLy8gVXNpbmcgT2JqZWN0Lmtl
eXMgaGVyZSwgb3IgZWxzZSB0aGUgdmFuaWxsYSBmb3ItaW4gbG9vcCBtYWtlcyBJRTggZ28gaW50
byBhblxuLy8gaW5maW5pdGUgbG9vcCwgYmVjYXVzZSBpdCBpdGVyYXRlcyBvdmVyIHRoZSBuZXds
eSBhZGRlZCBwcm9wcyB0b28uXG5PYmplY3Qua2V5cyhpc1VuaXRsZXNzTnVtYmVyKS5mb3JFYWNo
KGZ1bmN0aW9uIChwcm9wKSB7XG4gIHByZWZpeGVzLmZvckVhY2goZnVuY3Rpb24gKHByZWZpeCkg
e1xuICAgIGlzVW5pdGxlc3NOdW1iZXJbcHJlZml4S2V5KHByZWZpeCwgcHJvcCldID0gaXNVbml0
bGVzc051bWJlcltwcm9wXTtcbiAgfSk7XG59KTtcblxuLyoqXG4gKiBNb3N0IHN0eWxlIHByb3Bl
cnRpZXMgY2FuIGJlIHVuc2V0IGJ5IGRvaW5nIC5zdHlsZVtwcm9wXSA9ICcnIGJ1dCBJRThcbiAq
IGRvZXNuJ3QgbGlrZSBkb2luZyB0aGF0IHdpdGggc2hvcnRoYW5kIHByb3BlcnRpZXMgc28gZm9y
IHRoZSBwcm9wZXJ0aWVzIHRoYXRcbiAqIElFOCBicmVha3Mgb24sIHdoaWNoIGFyZSBsaXN0ZWQg
aGVyZSwgd2UgaW5zdGVhZCB1bnNldCBlYWNoIG9mIHRoZVxuICogaW5kaXZpZHVhbCBwcm9wZXJ0
aWVzLiBTZWUgaHR0cDovL2J1Z3MuanF1ZXJ5LmNvbS90aWNrZXQvMTIzODUuXG4gKiBUaGUgNC12
YWx1ZSAnY2xvY2snIHByb3BlcnRpZXMgbGlrZSBtYXJnaW4sIHBhZGRpbmcsIGJvcmRlci13aWR0
aCBzZWVtIHRvXG4gKiBiZWhhdmUgd2l0aG91dCBhbnkgcHJvYmxlbXMuIEN1cmlvdXNseSwgbGlz
dC1zdHlsZSB3b3JrcyB0b28gd2l0aG91dCBhbnlcbiAqIHNwZWNpYWwgcHJvZGRpbmcuXG4gKi9c
bnZhciBzaG9ydGhhbmRQcm9wZXJ0eUV4cGFuc2lvbnMgPSB7XG4gIGJhY2tncm91bmQ6IHtcbiAg
ICBiYWNrZ3JvdW5kQXR0YWNobWVudDogdHJ1ZSxcbiAgICBiYWNrZ3JvdW5kQ29sb3I6IHRydWUs
XG4gICAgYmFja2dyb3VuZEltYWdlOiB0cnVlLFxuICAgIGJhY2tncm91bmRQb3NpdGlvblg6IHRy
dWUsXG4gICAgYmFja2dyb3VuZFBvc2l0aW9uWTogdHJ1ZSxcbiAgICBiYWNrZ3JvdW5kUmVwZWF0
OiB0cnVlXG4gIH0sXG4gIGJhY2tncm91bmRQb3NpdGlvbjoge1xuICAgIGJhY2tncm91bmRQb3Np
dGlvblg6IHRydWUsXG4gICAgYmFja2dyb3VuZFBvc2l0aW9uWTogdHJ1ZVxuICB9LFxuICBib3Jk
ZXI6IHtcbiAgICBib3JkZXJXaWR0aDogdHJ1ZSxcbiAgICBib3JkZXJTdHlsZTogdHJ1ZSxcbiAg
ICBib3JkZXJDb2xvcjogdHJ1ZVxuICB9LFxuICBib3JkZXJCb3R0b206IHtcbiAgICBib3JkZXJC
b3R0b21XaWR0aDogdHJ1ZSxcbiAgICBib3JkZXJCb3R0b21TdHlsZTogdHJ1ZSxcbiAgICBib3Jk
ZXJCb3R0b21Db2xvcjogdHJ1ZVxuICB9LFxuICBib3JkZXJMZWZ0OiB7XG4gICAgYm9yZGVyTGVm
dFdpZHRoOiB0cnVlLFxuICAgIGJvcmRlckxlZnRTdHlsZTogdHJ1ZSxcbiAgICBib3JkZXJMZWZ0
Q29sb3I6IHRydWVcbiAgfSxcbiAgYm9yZGVyUmlnaHQ6IHtcbiAgICBib3JkZXJSaWdodFdpZHRo
OiB0cnVlLFxuICAgIGJvcmRlclJpZ2h0U3R5bGU6IHRydWUsXG4gICAgYm9yZGVyUmlnaHRDb2xv
cjogdHJ1ZVxuICB9LFxuICBib3JkZXJUb3A6IHtcbiAgICBib3JkZXJUb3BXaWR0aDogdHJ1ZSxc
biAgICBib3JkZXJUb3BTdHlsZTogdHJ1ZSxcbiAgICBib3JkZXJUb3BDb2xvcjogdHJ1ZVxuICB9
LFxuICBmb250OiB7XG4gICAgZm9udFN0eWxlOiB0cnVlLFxuICAgIGZvbnRWYXJpYW50OiB0cnVl
LFxuICAgIGZvbnRXZWlnaHQ6IHRydWUsXG4gICAgZm9udFNpemU6IHRydWUsXG4gICAgbGluZUhl
aWdodDogdHJ1ZSxcbiAgICBmb250RmFtaWx5OiB0cnVlXG4gIH0sXG4gIG91dGxpbmU6IHtcbiAg
ICBvdXRsaW5lV2lkdGg6IHRydWUsXG4gICAgb3V0bGluZVN0eWxlOiB0cnVlLFxuICAgIG91dGxp
bmVDb2xvcjogdHJ1ZVxuICB9XG59O1xuXG52YXIgQ1NTUHJvcGVydHkgPSB7XG4gIGlzVW5pdGxl
c3NOdW1iZXI6IGlzVW5pdGxlc3NOdW1iZXIsXG4gIHNob3J0aGFuZFByb3BlcnR5RXhwYW5zaW9u
czogc2hvcnRoYW5kUHJvcGVydHlFeHBhbnNpb25zXG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IENT
U1Byb3BlcnR5O1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4g
KiogLi9+L3JlYWN0LWRvbS9saWIvQ1NTUHJvcGVydHkuanNcbiAqKiBtb2R1bGUgaWQgPSA1OFxu
ICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVz
ZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlz
IHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3Vu
ZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBz
b3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4g
YmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxu
ICogXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgX3Byb2RJbnZhcmlhbnQgPSByZXF1aXJl
KCcuL3JlYWN0UHJvZEludmFyaWFudCcpO1xuXG5mdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5z
dGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0
b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVu
Y3Rpb25cIik7IH0gfVxuXG52YXIgUG9vbGVkQ2xhc3MgPSByZXF1aXJlKCcuL1Bvb2xlZENsYXNz
Jyk7XG5cbnZhciBpbnZhcmlhbnQgPSByZXF1aXJlKCdmYmpzL2xpYi9pbnZhcmlhbnQnKTtcblxu
LyoqXG4gKiBBIHNwZWNpYWxpemVkIHBzZXVkby1ldmVudCBtb2R1bGUgdG8gaGVscCBrZWVwIHRy
YWNrIG9mIGNvbXBvbmVudHMgd2FpdGluZyB0b1xuICogYmUgbm90aWZpZWQgd2hlbiB0aGVpciBE
T00gcmVwcmVzZW50YXRpb25zIGFyZSBhdmFpbGFibGUgZm9yIHVzZS5cbiAqXG4gKiBUaGlzIGlt
cGxlbWVudHMgYFBvb2xlZENsYXNzYCwgc28geW91IHNob3VsZCBuZXZlciBuZWVkIHRvIGluc3Rh
bnRpYXRlIHRoaXMuXG4gKiBJbnN0ZWFkLCB1c2UgYENhbGxiYWNrUXVldWUuZ2V0UG9vbGVkKClg
LlxuICpcbiAqIEBjbGFzcyBSZWFjdE1vdW50UmVhZHlcbiAqIEBpbXBsZW1lbnRzIFBvb2xlZENs
YXNzXG4gKiBAaW50ZXJuYWxcbiAqL1xuXG52YXIgQ2FsbGJhY2tRdWV1ZSA9IGZ1bmN0aW9uICgp
IHtcbiAgZnVuY3Rpb24gQ2FsbGJhY2tRdWV1ZShhcmcpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2so
dGhpcywgQ2FsbGJhY2tRdWV1ZSk7XG5cbiAgICB0aGlzLl9jYWxsYmFja3MgPSBudWxsO1xuICAg
IHRoaXMuX2NvbnRleHRzID0gbnVsbDtcbiAgICB0aGlzLl9hcmcgPSBhcmc7XG4gIH1cblxuICAv
KipcbiAgICogRW5xdWV1ZXMgYSBjYWxsYmFjayB0byBiZSBpbnZva2VkIHdoZW4gYG5vdGlmeUFs
bGAgaXMgaW52b2tlZC5cbiAgICpcbiAgICogQHBhcmFtIHtmdW5jdGlvbn0gY2FsbGJhY2sgSW52
b2tlZCB3aGVuIGBub3RpZnlBbGxgIGlzIGludm9rZWQuXG4gICAqIEBwYXJhbSB7P29iamVjdH0g
Y29udGV4dCBDb250ZXh0IHRvIGNhbGwgYGNhbGxiYWNrYCB3aXRoLlxuICAgKiBAaW50ZXJuYWxc
biAgICovXG5cblxuICBDYWxsYmFja1F1ZXVlLnByb3RvdHlwZS5lbnF1ZXVlID0gZnVuY3Rpb24g
ZW5xdWV1ZShjYWxsYmFjaywgY29udGV4dCkge1xuICAgIHRoaXMuX2NhbGxiYWNrcyA9IHRoaXMu
X2NhbGxiYWNrcyB8fCBbXTtcbiAgICB0aGlzLl9jYWxsYmFja3MucHVzaChjYWxsYmFjayk7XG4g
ICAgdGhpcy5fY29udGV4dHMgPSB0aGlzLl9jb250ZXh0cyB8fCBbXTtcbiAgICB0aGlzLl9jb250
ZXh0cy5wdXNoKGNvbnRleHQpO1xuICB9O1xuXG4gIC8qKlxuICAgKiBJbnZva2VzIGFsbCBlbnF1
ZXVlZCBjYWxsYmFja3MgYW5kIGNsZWFycyB0aGUgcXVldWUuIFRoaXMgaXMgaW52b2tlZCBhZnRl
clxuICAgKiB0aGUgRE9NIHJlcHJlc2VudGF0aW9uIG9mIGEgY29tcG9uZW50IGhhcyBiZWVuIGNy
ZWF0ZWQgb3IgdXBkYXRlZC5cbiAgICpcbiAgICogQGludGVybmFsXG4gICAqL1xuXG5cbiAgQ2Fs
bGJhY2tRdWV1ZS5wcm90b3R5cGUubm90aWZ5QWxsID0gZnVuY3Rpb24gbm90aWZ5QWxsKCkge1xu
ICAgIHZhciBjYWxsYmFja3MgPSB0aGlzLl9jYWxsYmFja3M7XG4gICAgdmFyIGNvbnRleHRzID0g
dGhpcy5fY29udGV4dHM7XG4gICAgdmFyIGFyZyA9IHRoaXMuX2FyZztcbiAgICBpZiAoY2FsbGJh
Y2tzICYmIGNvbnRleHRzKSB7XG4gICAgICAhKGNhbGxiYWNrcy5sZW5ndGggPT09IGNvbnRleHRz
Lmxlbmd0aCkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJp
YW50KGZhbHNlLCAnTWlzbWF0Y2hlZCBsaXN0IG9mIGNvbnRleHRzIGluIGNhbGxiYWNrIHF1ZXVl
JykgOiBfcHJvZEludmFyaWFudCgnMjQnKSA6IHZvaWQgMDtcbiAgICAgIHRoaXMuX2NhbGxiYWNr
cyA9IG51bGw7XG4gICAgICB0aGlzLl9jb250ZXh0cyA9IG51bGw7XG4gICAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IGNhbGxiYWNrcy5sZW5ndGg7IGkrKykge1xuICAgICAgICBjYWxsYmFja3NbaV0u
Y2FsbChjb250ZXh0c1tpXSwgYXJnKTtcbiAgICAgIH1cbiAgICAgIGNhbGxiYWNrcy5sZW5ndGgg
PSAwO1xuICAgICAgY29udGV4dHMubGVuZ3RoID0gMDtcbiAgICB9XG4gIH07XG5cbiAgQ2FsbGJh
Y2tRdWV1ZS5wcm90b3R5cGUuY2hlY2twb2ludCA9IGZ1bmN0aW9uIGNoZWNrcG9pbnQoKSB7XG4g
ICAgcmV0dXJuIHRoaXMuX2NhbGxiYWNrcyA/IHRoaXMuX2NhbGxiYWNrcy5sZW5ndGggOiAwO1xu
ICB9O1xuXG4gIENhbGxiYWNrUXVldWUucHJvdG90eXBlLnJvbGxiYWNrID0gZnVuY3Rpb24gcm9s
bGJhY2sobGVuKSB7XG4gICAgaWYgKHRoaXMuX2NhbGxiYWNrcyAmJiB0aGlzLl9jb250ZXh0cykg
e1xuICAgICAgdGhpcy5fY2FsbGJhY2tzLmxlbmd0aCA9IGxlbjtcbiAgICAgIHRoaXMuX2NvbnRl
eHRzLmxlbmd0aCA9IGxlbjtcbiAgICB9XG4gIH07XG5cbiAgLyoqXG4gICAqIFJlc2V0cyB0aGUg
aW50ZXJuYWwgcXVldWUuXG4gICAqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cblxuXG4gIENhbGxi
YWNrUXVldWUucHJvdG90eXBlLnJlc2V0ID0gZnVuY3Rpb24gcmVzZXQoKSB7XG4gICAgdGhpcy5f
Y2FsbGJhY2tzID0gbnVsbDtcbiAgICB0aGlzLl9jb250ZXh0cyA9IG51bGw7XG4gIH07XG5cbiAg
LyoqXG4gICAqIGBQb29sZWRDbGFzc2AgbG9va3MgZm9yIHRoaXMuXG4gICAqL1xuXG5cbiAgQ2Fs
bGJhY2tRdWV1ZS5wcm90b3R5cGUuZGVzdHJ1Y3RvciA9IGZ1bmN0aW9uIGRlc3RydWN0b3IoKSB7
XG4gICAgdGhpcy5yZXNldCgpO1xuICB9O1xuXG4gIHJldHVybiBDYWxsYmFja1F1ZXVlO1xufSgp
O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFBvb2xlZENsYXNzLmFkZFBvb2xpbmdUbyhDYWxsYmFja1F1
ZXVlKTtcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4v
fi9yZWFjdC1kb20vbGliL0NhbGxiYWNrUXVldWUuanNcbiAqKiBtb2R1bGUgaWQgPSA1OVxuICoq
IG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50
LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNv
dXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBp
biB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3Vy
Y2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUg
Zm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICov
XG5cbid1c2Ugc3RyaWN0JztcblxudmFyIERPTVByb3BlcnR5ID0gcmVxdWlyZSgnLi9ET01Qcm9w
ZXJ0eScpO1xudmFyIFJlYWN0RE9NQ29tcG9uZW50VHJlZSA9IHJlcXVpcmUoJy4vUmVhY3RET01D
b21wb25lbnRUcmVlJyk7XG52YXIgUmVhY3RJbnN0cnVtZW50YXRpb24gPSByZXF1aXJlKCcuL1Jl
YWN0SW5zdHJ1bWVudGF0aW9uJyk7XG5cbnZhciBxdW90ZUF0dHJpYnV0ZVZhbHVlRm9yQnJvd3Nl
ciA9IHJlcXVpcmUoJy4vcXVvdGVBdHRyaWJ1dGVWYWx1ZUZvckJyb3dzZXInKTtcbnZhciB3YXJu
aW5nID0gcmVxdWlyZSgnZmJqcy9saWIvd2FybmluZycpO1xuXG52YXIgVkFMSURfQVRUUklCVVRF
X05BTUVfUkVHRVggPSBuZXcgUmVnRXhwKCdeWycgKyBET01Qcm9wZXJ0eS5BVFRSSUJVVEVfTkFN
RV9TVEFSVF9DSEFSICsgJ11bJyArIERPTVByb3BlcnR5LkFUVFJJQlVURV9OQU1FX0NIQVIgKyAn
XSokJyk7XG52YXIgaWxsZWdhbEF0dHJpYnV0ZU5hbWVDYWNoZSA9IHt9O1xudmFyIHZhbGlkYXRl
ZEF0dHJpYnV0ZU5hbWVDYWNoZSA9IHt9O1xuXG5mdW5jdGlvbiBpc0F0dHJpYnV0ZU5hbWVTYWZl
KGF0dHJpYnV0ZU5hbWUpIHtcbiAgaWYgKHZhbGlkYXRlZEF0dHJpYnV0ZU5hbWVDYWNoZS5oYXNP
d25Qcm9wZXJ0eShhdHRyaWJ1dGVOYW1lKSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIGlm
IChpbGxlZ2FsQXR0cmlidXRlTmFtZUNhY2hlLmhhc093blByb3BlcnR5KGF0dHJpYnV0ZU5hbWUp
KSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGlmIChWQUxJRF9BVFRSSUJVVEVfTkFNRV9S
RUdFWC50ZXN0KGF0dHJpYnV0ZU5hbWUpKSB7XG4gICAgdmFsaWRhdGVkQXR0cmlidXRlTmFtZUNh
Y2hlW2F0dHJpYnV0ZU5hbWVdID0gdHJ1ZTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICBpbGxl
Z2FsQXR0cmlidXRlTmFtZUNhY2hlW2F0dHJpYnV0ZU5hbWVdID0gdHJ1ZTtcbiAgcHJvY2Vzcy5l
bnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdJbnZhbGlkIGF0
dHJpYnV0ZSBuYW1lOiBgJXNgJywgYXR0cmlidXRlTmFtZSkgOiB2b2lkIDA7XG4gIHJldHVybiBm
YWxzZTtcbn1cblxuZnVuY3Rpb24gc2hvdWxkSWdub3JlVmFsdWUocHJvcGVydHlJbmZvLCB2YWx1
ZSkge1xuICByZXR1cm4gdmFsdWUgPT0gbnVsbCB8fCBwcm9wZXJ0eUluZm8uaGFzQm9vbGVhblZh
bHVlICYmICF2YWx1ZSB8fCBwcm9wZXJ0eUluZm8uaGFzTnVtZXJpY1ZhbHVlICYmIGlzTmFOKHZh
bHVlKSB8fCBwcm9wZXJ0eUluZm8uaGFzUG9zaXRpdmVOdW1lcmljVmFsdWUgJiYgdmFsdWUgPCAx
IHx8IHByb3BlcnR5SW5mby5oYXNPdmVybG9hZGVkQm9vbGVhblZhbHVlICYmIHZhbHVlID09PSBm
YWxzZTtcbn1cblxuLyoqXG4gKiBPcGVyYXRpb25zIGZvciBkZWFsaW5nIHdpdGggRE9NIHByb3Bl
cnRpZXMuXG4gKi9cbnZhciBET01Qcm9wZXJ0eU9wZXJhdGlvbnMgPSB7XG4gIC8qKlxuICAgKiBD
cmVhdGVzIG1hcmt1cCBmb3IgdGhlIElEIHByb3BlcnR5LlxuICAgKlxuICAgKiBAcGFyYW0ge3N0
cmluZ30gaWQgVW5lc2NhcGVkIElELlxuICAgKiBAcmV0dXJuIHtzdHJpbmd9IE1hcmt1cCBzdHJp
bmcuXG4gICAqL1xuICBjcmVhdGVNYXJrdXBGb3JJRDogZnVuY3Rpb24gKGlkKSB7XG4gICAgcmV0
dXJuIERPTVByb3BlcnR5LklEX0FUVFJJQlVURV9OQU1FICsgJz0nICsgcXVvdGVBdHRyaWJ1dGVW
YWx1ZUZvckJyb3dzZXIoaWQpO1xuICB9LFxuXG4gIHNldEF0dHJpYnV0ZUZvcklEOiBmdW5jdGlv
biAobm9kZSwgaWQpIHtcbiAgICBub2RlLnNldEF0dHJpYnV0ZShET01Qcm9wZXJ0eS5JRF9BVFRS
SUJVVEVfTkFNRSwgaWQpO1xuICB9LFxuXG4gIGNyZWF0ZU1hcmt1cEZvclJvb3Q6IGZ1bmN0aW9u
ICgpIHtcbiAgICByZXR1cm4gRE9NUHJvcGVydHkuUk9PVF9BVFRSSUJVVEVfTkFNRSArICc9XCJc
Iic7XG4gIH0sXG5cbiAgc2V0QXR0cmlidXRlRm9yUm9vdDogZnVuY3Rpb24gKG5vZGUpIHtcbiAg
ICBub2RlLnNldEF0dHJpYnV0ZShET01Qcm9wZXJ0eS5ST09UX0FUVFJJQlVURV9OQU1FLCAnJyk7
XG4gIH0sXG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgbWFya3VwIGZvciBhIHByb3BlcnR5LlxuICAg
KlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZVxuICAgKiBAcGFyYW0geyp9IHZhbHVlXG4gICAq
IEByZXR1cm4gez9zdHJpbmd9IE1hcmt1cCBzdHJpbmcsIG9yIG51bGwgaWYgdGhlIHByb3BlcnR5
IHdhcyBpbnZhbGlkLlxuICAgKi9cbiAgY3JlYXRlTWFya3VwRm9yUHJvcGVydHk6IGZ1bmN0aW9u
IChuYW1lLCB2YWx1ZSkge1xuICAgIHZhciBwcm9wZXJ0eUluZm8gPSBET01Qcm9wZXJ0eS5wcm9w
ZXJ0aWVzLmhhc093blByb3BlcnR5KG5hbWUpID8gRE9NUHJvcGVydHkucHJvcGVydGllc1tuYW1l
XSA6IG51bGw7XG4gICAgaWYgKHByb3BlcnR5SW5mbykge1xuICAgICAgaWYgKHNob3VsZElnbm9y
ZVZhbHVlKHByb3BlcnR5SW5mbywgdmFsdWUpKSB7XG4gICAgICAgIHJldHVybiAnJztcbiAgICAg
IH1cbiAgICAgIHZhciBhdHRyaWJ1dGVOYW1lID0gcHJvcGVydHlJbmZvLmF0dHJpYnV0ZU5hbWU7
XG4gICAgICBpZiAocHJvcGVydHlJbmZvLmhhc0Jvb2xlYW5WYWx1ZSB8fCBwcm9wZXJ0eUluZm8u
aGFzT3ZlcmxvYWRlZEJvb2xlYW5WYWx1ZSAmJiB2YWx1ZSA9PT0gdHJ1ZSkge1xuICAgICAgICBy
ZXR1cm4gYXR0cmlidXRlTmFtZSArICc9XCJcIic7XG4gICAgICB9XG4gICAgICByZXR1cm4gYXR0
cmlidXRlTmFtZSArICc9JyArIHF1b3RlQXR0cmlidXRlVmFsdWVGb3JCcm93c2VyKHZhbHVlKTtc
biAgICB9IGVsc2UgaWYgKERPTVByb3BlcnR5LmlzQ3VzdG9tQXR0cmlidXRlKG5hbWUpKSB7XG4g
ICAgICBpZiAodmFsdWUgPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gJyc7XG4gICAgICB9XG4g
ICAgICByZXR1cm4gbmFtZSArICc9JyArIHF1b3RlQXR0cmlidXRlVmFsdWVGb3JCcm93c2VyKHZh
bHVlKTtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH0sXG5cbiAgLyoqXG4gICAqIENyZWF0
ZXMgbWFya3VwIGZvciBhIGN1c3RvbSBwcm9wZXJ0eS5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJp
bmd9IG5hbWVcbiAgICogQHBhcmFtIHsqfSB2YWx1ZVxuICAgKiBAcmV0dXJuIHtzdHJpbmd9IE1h
cmt1cCBzdHJpbmcsIG9yIGVtcHR5IHN0cmluZyBpZiB0aGUgcHJvcGVydHkgd2FzIGludmFsaWQu
XG4gICAqL1xuICBjcmVhdGVNYXJrdXBGb3JDdXN0b21BdHRyaWJ1dGU6IGZ1bmN0aW9uIChuYW1l
LCB2YWx1ZSkge1xuICAgIGlmICghaXNBdHRyaWJ1dGVOYW1lU2FmZShuYW1lKSB8fCB2YWx1ZSA9
PSBudWxsKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICAgIHJldHVybiBuYW1lICsgJz0n
ICsgcXVvdGVBdHRyaWJ1dGVWYWx1ZUZvckJyb3dzZXIodmFsdWUpO1xuICB9LFxuXG4gIC8qKlxu
ICAgKiBTZXRzIHRoZSB2YWx1ZSBmb3IgYSBwcm9wZXJ0eSBvbiBhIG5vZGUuXG4gICAqXG4gICAq
IEBwYXJhbSB7RE9NRWxlbWVudH0gbm9kZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZVxuICAg
KiBAcGFyYW0geyp9IHZhbHVlXG4gICAqL1xuICBzZXRWYWx1ZUZvclByb3BlcnR5OiBmdW5jdGlv
biAobm9kZSwgbmFtZSwgdmFsdWUpIHtcbiAgICB2YXIgcHJvcGVydHlJbmZvID0gRE9NUHJvcGVy
dHkucHJvcGVydGllcy5oYXNPd25Qcm9wZXJ0eShuYW1lKSA/IERPTVByb3BlcnR5LnByb3BlcnRp
ZXNbbmFtZV0gOiBudWxsO1xuICAgIGlmIChwcm9wZXJ0eUluZm8pIHtcbiAgICAgIHZhciBtdXRh
dGlvbk1ldGhvZCA9IHByb3BlcnR5SW5mby5tdXRhdGlvbk1ldGhvZDtcbiAgICAgIGlmIChtdXRh
dGlvbk1ldGhvZCkge1xuICAgICAgICBtdXRhdGlvbk1ldGhvZChub2RlLCB2YWx1ZSk7XG4gICAg
ICB9IGVsc2UgaWYgKHNob3VsZElnbm9yZVZhbHVlKHByb3BlcnR5SW5mbywgdmFsdWUpKSB7XG4g
ICAgICAgIHRoaXMuZGVsZXRlVmFsdWVGb3JQcm9wZXJ0eShub2RlLCBuYW1lKTtcbiAgICAgICAg
cmV0dXJuO1xuICAgICAgfSBlbHNlIGlmIChwcm9wZXJ0eUluZm8ubXVzdFVzZVByb3BlcnR5KSB7
XG4gICAgICAgIC8vIENvbnRyYXJ5IHRvIGBzZXRBdHRyaWJ1dGVgLCBvYmplY3QgcHJvcGVydGll
cyBhcmUgcHJvcGVybHlcbiAgICAgICAgLy8gYHRvU3RyaW5nYGVkIGJ5IElFOC85LlxuICAgICAg
ICBub2RlW3Byb3BlcnR5SW5mby5wcm9wZXJ0eU5hbWVdID0gdmFsdWU7XG4gICAgICB9IGVsc2Ug
e1xuICAgICAgICB2YXIgYXR0cmlidXRlTmFtZSA9IHByb3BlcnR5SW5mby5hdHRyaWJ1dGVOYW1l
O1xuICAgICAgICB2YXIgbmFtZXNwYWNlID0gcHJvcGVydHlJbmZvLmF0dHJpYnV0ZU5hbWVzcGFj
ZTtcbiAgICAgICAgLy8gYHNldEF0dHJpYnV0ZWAgd2l0aCBvYmplY3RzIGJlY29tZXMgb25seSBg
W29iamVjdF1gIGluIElFOC85LFxuICAgICAgICAvLyAoJycgKyB2YWx1ZSkgbWFrZXMgaXQgb3V0
cHV0IHRoZSBjb3JyZWN0IHRvU3RyaW5nKCktdmFsdWUuXG4gICAgICAgIGlmIChuYW1lc3BhY2Up
IHtcbiAgICAgICAgICBub2RlLnNldEF0dHJpYnV0ZU5TKG5hbWVzcGFjZSwgYXR0cmlidXRlTmFt
ZSwgJycgKyB2YWx1ZSk7XG4gICAgICAgIH0gZWxzZSBpZiAocHJvcGVydHlJbmZvLmhhc0Jvb2xl
YW5WYWx1ZSB8fCBwcm9wZXJ0eUluZm8uaGFzT3ZlcmxvYWRlZEJvb2xlYW5WYWx1ZSAmJiB2YWx1
ZSA9PT0gdHJ1ZSkge1xuICAgICAgICAgIG5vZGUuc2V0QXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUs
ICcnKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBub2RlLnNldEF0dHJpYnV0ZShhdHRy
aWJ1dGVOYW1lLCAnJyArIHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSBp
ZiAoRE9NUHJvcGVydHkuaXNDdXN0b21BdHRyaWJ1dGUobmFtZSkpIHtcbiAgICAgIERPTVByb3Bl
cnR5T3BlcmF0aW9ucy5zZXRWYWx1ZUZvckF0dHJpYnV0ZShub2RlLCBuYW1lLCB2YWx1ZSk7XG4g
ICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAn
cHJvZHVjdGlvbicpIHtcbiAgICAgIHZhciBwYXlsb2FkID0ge307XG4gICAgICBwYXlsb2FkW25h
bWVdID0gdmFsdWU7XG4gICAgICBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25Ib3N0
T3BlcmF0aW9uKHtcbiAgICAgICAgaW5zdGFuY2VJRDogUmVhY3RET01Db21wb25lbnRUcmVlLmdl
dEluc3RhbmNlRnJvbU5vZGUobm9kZSkuX2RlYnVnSUQsXG4gICAgICAgIHR5cGU6ICd1cGRhdGUg
YXR0cmlidXRlJyxcbiAgICAgICAgcGF5bG9hZDogcGF5bG9hZFxuICAgICAgfSk7XG4gICAgfVxu
ICB9LFxuXG4gIHNldFZhbHVlRm9yQXR0cmlidXRlOiBmdW5jdGlvbiAobm9kZSwgbmFtZSwgdmFs
dWUpIHtcbiAgICBpZiAoIWlzQXR0cmlidXRlTmFtZVNhZmUobmFtZSkpIHtcbiAgICAgIHJldHVy
bjtcbiAgICB9XG4gICAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICAgIG5vZGUucmVtb3ZlQXR0
cmlidXRlKG5hbWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBub2RlLnNldEF0dHJpYnV0ZShuYW1l
LCAnJyArIHZhbHVlKTtcbiAgICB9XG5cbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09
ICdwcm9kdWN0aW9uJykge1xuICAgICAgdmFyIHBheWxvYWQgPSB7fTtcbiAgICAgIHBheWxvYWRb
bmFtZV0gPSB2YWx1ZTtcbiAgICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vbkhv
c3RPcGVyYXRpb24oe1xuICAgICAgICBpbnN0YW5jZUlEOiBSZWFjdERPTUNvbXBvbmVudFRyZWUu
Z2V0SW5zdGFuY2VGcm9tTm9kZShub2RlKS5fZGVidWdJRCxcbiAgICAgICAgdHlwZTogJ3VwZGF0
ZSBhdHRyaWJ1dGUnLFxuICAgICAgICBwYXlsb2FkOiBwYXlsb2FkXG4gICAgICB9KTtcbiAgICB9
XG4gIH0sXG5cbiAgLyoqXG4gICAqIERlbGV0ZXMgYW4gYXR0cmlidXRlcyBmcm9tIGEgbm9kZS5c
biAgICpcbiAgICogQHBhcmFtIHtET01FbGVtZW50fSBub2RlXG4gICAqIEBwYXJhbSB7c3RyaW5n
fSBuYW1lXG4gICAqL1xuICBkZWxldGVWYWx1ZUZvckF0dHJpYnV0ZTogZnVuY3Rpb24gKG5vZGUs
IG5hbWUpIHtcbiAgICBub2RlLnJlbW92ZUF0dHJpYnV0ZShuYW1lKTtcbiAgICBpZiAocHJvY2Vz
cy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgUmVhY3RJbnN0cnVtZW50
YXRpb24uZGVidWdUb29sLm9uSG9zdE9wZXJhdGlvbih7XG4gICAgICAgIGluc3RhbmNlSUQ6IFJl
YWN0RE9NQ29tcG9uZW50VHJlZS5nZXRJbnN0YW5jZUZyb21Ob2RlKG5vZGUpLl9kZWJ1Z0lELFxu
ICAgICAgICB0eXBlOiAncmVtb3ZlIGF0dHJpYnV0ZScsXG4gICAgICAgIHBheWxvYWQ6IG5hbWVc
biAgICAgIH0pO1xuICAgIH1cbiAgfSxcblxuICAvKipcbiAgICogRGVsZXRlcyB0aGUgdmFsdWUg
Zm9yIGEgcHJvcGVydHkgb24gYSBub2RlLlxuICAgKlxuICAgKiBAcGFyYW0ge0RPTUVsZW1lbnR9
IG5vZGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWVcbiAgICovXG4gIGRlbGV0ZVZhbHVlRm9y
UHJvcGVydHk6IGZ1bmN0aW9uIChub2RlLCBuYW1lKSB7XG4gICAgdmFyIHByb3BlcnR5SW5mbyA9
IERPTVByb3BlcnR5LnByb3BlcnRpZXMuaGFzT3duUHJvcGVydHkobmFtZSkgPyBET01Qcm9wZXJ0
eS5wcm9wZXJ0aWVzW25hbWVdIDogbnVsbDtcbiAgICBpZiAocHJvcGVydHlJbmZvKSB7XG4gICAg
ICB2YXIgbXV0YXRpb25NZXRob2QgPSBwcm9wZXJ0eUluZm8ubXV0YXRpb25NZXRob2Q7XG4gICAg
ICBpZiAobXV0YXRpb25NZXRob2QpIHtcbiAgICAgICAgbXV0YXRpb25NZXRob2Qobm9kZSwgdW5k
ZWZpbmVkKTtcbiAgICAgIH0gZWxzZSBpZiAocHJvcGVydHlJbmZvLm11c3RVc2VQcm9wZXJ0eSkg
e1xuICAgICAgICB2YXIgcHJvcE5hbWUgPSBwcm9wZXJ0eUluZm8ucHJvcGVydHlOYW1lO1xuICAg
ICAgICBpZiAocHJvcGVydHlJbmZvLmhhc0Jvb2xlYW5WYWx1ZSkge1xuICAgICAgICAgIG5vZGVb
cHJvcE5hbWVdID0gZmFsc2U7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbm9kZVtwcm9w
TmFtZV0gPSAnJztcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbm9kZS5yZW1v
dmVBdHRyaWJ1dGUocHJvcGVydHlJbmZvLmF0dHJpYnV0ZU5hbWUpO1xuICAgICAgfVxuICAgIH0g
ZWxzZSBpZiAoRE9NUHJvcGVydHkuaXNDdXN0b21BdHRyaWJ1dGUobmFtZSkpIHtcbiAgICAgIG5v
ZGUucmVtb3ZlQXR0cmlidXRlKG5hbWUpO1xuICAgIH1cblxuICAgIGlmIChwcm9jZXNzLmVudi5O
T0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICBSZWFjdEluc3RydW1lbnRhdGlvbi5k
ZWJ1Z1Rvb2wub25Ib3N0T3BlcmF0aW9uKHtcbiAgICAgICAgaW5zdGFuY2VJRDogUmVhY3RET01D
b21wb25lbnRUcmVlLmdldEluc3RhbmNlRnJvbU5vZGUobm9kZSkuX2RlYnVnSUQsXG4gICAgICAg
IHR5cGU6ICdyZW1vdmUgYXR0cmlidXRlJyxcbiAgICAgICAgcGF5bG9hZDogbmFtZVxuICAgICAg
fSk7XG4gICAgfVxuICB9XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IERPTVByb3BlcnR5T3BlcmF0
aW9ucztcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4v
fi9yZWFjdC1kb20vbGliL0RPTVByb3BlcnR5T3BlcmF0aW9ucy5qc1xuICoqIG1vZHVsZSBpZCA9
IDYwXG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENvcHlyaWdodCAyMDE1
LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAq
IFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNl
IGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0
aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRz
IGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5c
biAqXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgUmVhY3RET01Db21wb25lbnRGbGFncyA9
IHtcbiAgaGFzQ2FjaGVkQ2hpbGROb2RlczogMSA8PCAwXG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9
IFJlYWN0RE9NQ29tcG9uZW50RmxhZ3M7XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VC
UEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3QtZG9tL2xpYi9SZWFjdERPTUNvbXBvbmVudEZsYWdz
LmpzXG4gKiogbW9kdWxlIGlkID0gNjFcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8q
KlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0
aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhl
IHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRc
biAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4g
dGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBfYXNz
aWduID0gcmVxdWlyZSgnb2JqZWN0LWFzc2lnbicpO1xuXG52YXIgTGlua2VkVmFsdWVVdGlscyA9
IHJlcXVpcmUoJy4vTGlua2VkVmFsdWVVdGlscycpO1xudmFyIFJlYWN0RE9NQ29tcG9uZW50VHJl
ZSA9IHJlcXVpcmUoJy4vUmVhY3RET01Db21wb25lbnRUcmVlJyk7XG52YXIgUmVhY3RVcGRhdGVz
ID0gcmVxdWlyZSgnLi9SZWFjdFVwZGF0ZXMnKTtcblxudmFyIHdhcm5pbmcgPSByZXF1aXJlKCdm
YmpzL2xpYi93YXJuaW5nJyk7XG5cbnZhciBkaWRXYXJuVmFsdWVMaW5rID0gZmFsc2U7XG52YXIg
ZGlkV2FyblZhbHVlRGVmYXVsdFZhbHVlID0gZmFsc2U7XG5cbmZ1bmN0aW9uIHVwZGF0ZU9wdGlv
bnNJZlBlbmRpbmdVcGRhdGVBbmRNb3VudGVkKCkge1xuICBpZiAodGhpcy5fcm9vdE5vZGVJRCAm
JiB0aGlzLl93cmFwcGVyU3RhdGUucGVuZGluZ1VwZGF0ZSkge1xuICAgIHRoaXMuX3dyYXBwZXJT
dGF0ZS5wZW5kaW5nVXBkYXRlID0gZmFsc2U7XG5cbiAgICB2YXIgcHJvcHMgPSB0aGlzLl9jdXJy
ZW50RWxlbWVudC5wcm9wcztcbiAgICB2YXIgdmFsdWUgPSBMaW5rZWRWYWx1ZVV0aWxzLmdldFZh
bHVlKHByb3BzKTtcblxuICAgIGlmICh2YWx1ZSAhPSBudWxsKSB7XG4gICAgICB1cGRhdGVPcHRp
b25zKHRoaXMsIEJvb2xlYW4ocHJvcHMubXVsdGlwbGUpLCB2YWx1ZSk7XG4gICAgfVxuICB9XG59
XG5cbmZ1bmN0aW9uIGdldERlY2xhcmF0aW9uRXJyb3JBZGRlbmR1bShvd25lcikge1xuICBpZiAo
b3duZXIpIHtcbiAgICB2YXIgbmFtZSA9IG93bmVyLmdldE5hbWUoKTtcbiAgICBpZiAobmFtZSkg
e1xuICAgICAgcmV0dXJuICcgQ2hlY2sgdGhlIHJlbmRlciBtZXRob2Qgb2YgYCcgKyBuYW1lICsg
J2AuJztcbiAgICB9XG4gIH1cbiAgcmV0dXJuICcnO1xufVxuXG52YXIgdmFsdWVQcm9wTmFtZXMg
PSBbJ3ZhbHVlJywgJ2RlZmF1bHRWYWx1ZSddO1xuXG4vKipcbiAqIFZhbGlkYXRpb24gZnVuY3Rp
b24gZm9yIGB2YWx1ZWAgYW5kIGBkZWZhdWx0VmFsdWVgLlxuICogQHByaXZhdGVcbiAqL1xuZnVu
Y3Rpb24gY2hlY2tTZWxlY3RQcm9wVHlwZXMoaW5zdCwgcHJvcHMpIHtcbiAgdmFyIG93bmVyID0g
aW5zdC5fY3VycmVudEVsZW1lbnQuX293bmVyO1xuICBMaW5rZWRWYWx1ZVV0aWxzLmNoZWNrUHJv
cFR5cGVzKCdzZWxlY3QnLCBwcm9wcywgb3duZXIpO1xuXG4gIGlmIChwcm9wcy52YWx1ZUxpbmsg
IT09IHVuZGVmaW5lZCAmJiAhZGlkV2FyblZhbHVlTGluaykge1xuICAgIHByb2Nlc3MuZW52Lk5P
REVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnYHZhbHVlTGlua2AgcHJv
cCBvbiBgc2VsZWN0YCBpcyBkZXByZWNhdGVkOyBzZXQgYHZhbHVlYCBhbmQgYG9uQ2hhbmdlYCBp
bnN0ZWFkLicpIDogdm9pZCAwO1xuICAgIGRpZFdhcm5WYWx1ZUxpbmsgPSB0cnVlO1xuICB9XG5c
biAgZm9yICh2YXIgaSA9IDA7IGkgPCB2YWx1ZVByb3BOYW1lcy5sZW5ndGg7IGkrKykge1xuICAg
IHZhciBwcm9wTmFtZSA9IHZhbHVlUHJvcE5hbWVzW2ldO1xuICAgIGlmIChwcm9wc1twcm9wTmFt
ZV0gPT0gbnVsbCkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIHZhciBpc0FycmF5ID0g
QXJyYXkuaXNBcnJheShwcm9wc1twcm9wTmFtZV0pO1xuICAgIGlmIChwcm9wcy5tdWx0aXBsZSAm
JiAhaXNBcnJheSkge1xuICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9u
JyA/IHdhcm5pbmcoZmFsc2UsICdUaGUgYCVzYCBwcm9wIHN1cHBsaWVkIHRvIDxzZWxlY3Q+IG11
c3QgYmUgYW4gYXJyYXkgaWYgJyArICdgbXVsdGlwbGVgIGlzIHRydWUuJXMnLCBwcm9wTmFtZSwg
Z2V0RGVjbGFyYXRpb25FcnJvckFkZGVuZHVtKG93bmVyKSkgOiB2b2lkIDA7XG4gICAgfSBlbHNl
IGlmICghcHJvcHMubXVsdGlwbGUgJiYgaXNBcnJheSkge1xuICAgICAgcHJvY2Vzcy5lbnYuTk9E
RV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdUaGUgYCVzYCBwcm9wIHN1
cHBsaWVkIHRvIDxzZWxlY3Q+IG11c3QgYmUgYSBzY2FsYXIgJyArICd2YWx1ZSBpZiBgbXVsdGlw
bGVgIGlzIGZhbHNlLiVzJywgcHJvcE5hbWUsIGdldERlY2xhcmF0aW9uRXJyb3JBZGRlbmR1bShv
d25lcikpIDogdm9pZCAwO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIEBwYXJhbSB7UmVhY3RE
T01Db21wb25lbnR9IGluc3RcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gbXVsdGlwbGVcbiAqIEBwYXJh
bSB7Kn0gcHJvcFZhbHVlIEEgc3RyaW5nYWJsZSAod2l0aCBgbXVsdGlwbGVgLCBhIGxpc3Qgb2Yg
c3RyaW5nYWJsZXMpLlxuICogQHByaXZhdGVcbiAqL1xuZnVuY3Rpb24gdXBkYXRlT3B0aW9ucyhp
bnN0LCBtdWx0aXBsZSwgcHJvcFZhbHVlKSB7XG4gIHZhciBzZWxlY3RlZFZhbHVlLCBpO1xuICB2
YXIgb3B0aW9ucyA9IFJlYWN0RE9NQ29tcG9uZW50VHJlZS5nZXROb2RlRnJvbUluc3RhbmNlKGlu
c3QpLm9wdGlvbnM7XG5cbiAgaWYgKG11bHRpcGxlKSB7XG4gICAgc2VsZWN0ZWRWYWx1ZSA9IHt9
O1xuICAgIGZvciAoaSA9IDA7IGkgPCBwcm9wVmFsdWUubGVuZ3RoOyBpKyspIHtcbiAgICAgIHNl
bGVjdGVkVmFsdWVbJycgKyBwcm9wVmFsdWVbaV1dID0gdHJ1ZTtcbiAgICB9XG4gICAgZm9yIChp
ID0gMDsgaSA8IG9wdGlvbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBzZWxlY3RlZCA9IHNl
bGVjdGVkVmFsdWUuaGFzT3duUHJvcGVydHkob3B0aW9uc1tpXS52YWx1ZSk7XG4gICAgICBpZiAo
b3B0aW9uc1tpXS5zZWxlY3RlZCAhPT0gc2VsZWN0ZWQpIHtcbiAgICAgICAgb3B0aW9uc1tpXS5z
ZWxlY3RlZCA9IHNlbGVjdGVkO1xuICAgICAgfVxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICAvLyBE
byBub3Qgc2V0IGBzZWxlY3QudmFsdWVgIGFzIGV4YWN0IGJlaGF2aW9yIGlzbid0IGNvbnNpc3Rl
bnQgYWNyb3NzIGFsbFxuICAgIC8vIGJyb3dzZXJzIGZvciBhbGwgY2FzZXMuXG4gICAgc2VsZWN0
ZWRWYWx1ZSA9ICcnICsgcHJvcFZhbHVlO1xuICAgIGZvciAoaSA9IDA7IGkgPCBvcHRpb25zLmxl
bmd0aDsgaSsrKSB7XG4gICAgICBpZiAob3B0aW9uc1tpXS52YWx1ZSA9PT0gc2VsZWN0ZWRWYWx1
ZSkge1xuICAgICAgICBvcHRpb25zW2ldLnNlbGVjdGVkID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJu
O1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAob3B0aW9ucy5sZW5ndGgpIHtcbiAgICAgIG9wdGlv
bnNbMF0uc2VsZWN0ZWQgPSB0cnVlO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIEltcGxlbWVu
dHMgYSA8c2VsZWN0PiBob3N0IGNvbXBvbmVudCB0aGF0IGFsbG93cyBvcHRpb25hbGx5IHNldHRp
bmcgdGhlXG4gKiBwcm9wcyBgdmFsdWVgIGFuZCBgZGVmYXVsdFZhbHVlYC4gSWYgYG11bHRpcGxl
YCBpcyBmYWxzZSwgdGhlIHByb3AgbXVzdCBiZSBhXG4gKiBzdHJpbmdhYmxlLiBJZiBgbXVsdGlw
bGVgIGlzIHRydWUsIHRoZSBwcm9wIG11c3QgYmUgYW4gYXJyYXkgb2Ygc3RyaW5nYWJsZXMuXG4g
KlxuICogSWYgYHZhbHVlYCBpcyBub3Qgc3VwcGxpZWQgKG9yIG51bGwvdW5kZWZpbmVkKSwgdXNl
ciBhY3Rpb25zIHRoYXQgY2hhbmdlIHRoZVxuICogc2VsZWN0ZWQgb3B0aW9uIHdpbGwgdHJpZ2dl
ciB1cGRhdGVzIHRvIHRoZSByZW5kZXJlZCBvcHRpb25zLlxuICpcbiAqIElmIGl0IGlzIHN1cHBs
aWVkIChhbmQgbm90IG51bGwvdW5kZWZpbmVkKSwgdGhlIHJlbmRlcmVkIG9wdGlvbnMgd2lsbCBu
b3RcbiAqIHVwZGF0ZSBpbiByZXNwb25zZSB0byB1c2VyIGFjdGlvbnMuIEluc3RlYWQsIHRoZSBg
dmFsdWVgIHByb3AgbXVzdCBjaGFuZ2UgaW5cbiAqIG9yZGVyIGZvciB0aGUgcmVuZGVyZWQgb3B0
aW9ucyB0byB1cGRhdGUuXG4gKlxuICogSWYgYGRlZmF1bHRWYWx1ZWAgaXMgcHJvdmlkZWQsIGFu
eSBvcHRpb25zIHdpdGggdGhlIHN1cHBsaWVkIHZhbHVlcyB3aWxsIGJlXG4gKiBzZWxlY3RlZC5c
biAqL1xudmFyIFJlYWN0RE9NU2VsZWN0ID0ge1xuICBnZXRIb3N0UHJvcHM6IGZ1bmN0aW9uIChp
bnN0LCBwcm9wcykge1xuICAgIHJldHVybiBfYXNzaWduKHt9LCBwcm9wcywge1xuICAgICAgb25D
aGFuZ2U6IGluc3QuX3dyYXBwZXJTdGF0ZS5vbkNoYW5nZSxcbiAgICAgIHZhbHVlOiB1bmRlZmlu
ZWRcbiAgICB9KTtcbiAgfSxcblxuICBtb3VudFdyYXBwZXI6IGZ1bmN0aW9uIChpbnN0LCBwcm9w
cykge1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4g
ICAgICBjaGVja1NlbGVjdFByb3BUeXBlcyhpbnN0LCBwcm9wcyk7XG4gICAgfVxuXG4gICAgdmFy
IHZhbHVlID0gTGlua2VkVmFsdWVVdGlscy5nZXRWYWx1ZShwcm9wcyk7XG4gICAgaW5zdC5fd3Jh
cHBlclN0YXRlID0ge1xuICAgICAgcGVuZGluZ1VwZGF0ZTogZmFsc2UsXG4gICAgICBpbml0aWFs
VmFsdWU6IHZhbHVlICE9IG51bGwgPyB2YWx1ZSA6IHByb3BzLmRlZmF1bHRWYWx1ZSxcbiAgICAg
IGxpc3RlbmVyczogbnVsbCxcbiAgICAgIG9uQ2hhbmdlOiBfaGFuZGxlQ2hhbmdlLmJpbmQoaW5z
dCksXG4gICAgICB3YXNNdWx0aXBsZTogQm9vbGVhbihwcm9wcy5tdWx0aXBsZSlcbiAgICB9O1xu
XG4gICAgaWYgKHByb3BzLnZhbHVlICE9PSB1bmRlZmluZWQgJiYgcHJvcHMuZGVmYXVsdFZhbHVl
ICE9PSB1bmRlZmluZWQgJiYgIWRpZFdhcm5WYWx1ZURlZmF1bHRWYWx1ZSkge1xuICAgICAgcHJv
Y2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdTZWxl
Y3QgZWxlbWVudHMgbXVzdCBiZSBlaXRoZXIgY29udHJvbGxlZCBvciB1bmNvbnRyb2xsZWQgJyAr
ICcoc3BlY2lmeSBlaXRoZXIgdGhlIHZhbHVlIHByb3AsIG9yIHRoZSBkZWZhdWx0VmFsdWUgcHJv
cCwgYnV0IG5vdCAnICsgJ2JvdGgpLiBEZWNpZGUgYmV0d2VlbiB1c2luZyBhIGNvbnRyb2xsZWQg
b3IgdW5jb250cm9sbGVkIHNlbGVjdCAnICsgJ2VsZW1lbnQgYW5kIHJlbW92ZSBvbmUgb2YgdGhl
c2UgcHJvcHMuIE1vcmUgaW5mbzogJyArICdodHRwczovL2ZiLm1lL3JlYWN0LWNvbnRyb2xsZWQt
Y29tcG9uZW50cycpIDogdm9pZCAwO1xuICAgICAgZGlkV2FyblZhbHVlRGVmYXVsdFZhbHVlID0g
dHJ1ZTtcbiAgICB9XG4gIH0sXG5cbiAgZ2V0U2VsZWN0VmFsdWVDb250ZXh0OiBmdW5jdGlvbiAo
aW5zdCkge1xuICAgIC8vIFJlYWN0RE9NT3B0aW9uIGxvb2tzIGF0IHRoaXMgaW5pdGlhbCB2YWx1
ZSBzbyB0aGUgaW5pdGlhbCBnZW5lcmF0ZWRcbiAgICAvLyBtYXJrdXAgaGFzIGNvcnJlY3QgYHNl
bGVjdGVkYCBhdHRyaWJ1dGVzXG4gICAgcmV0dXJuIGluc3QuX3dyYXBwZXJTdGF0ZS5pbml0aWFs
VmFsdWU7XG4gIH0sXG5cbiAgcG9zdFVwZGF0ZVdyYXBwZXI6IGZ1bmN0aW9uIChpbnN0KSB7XG4g
ICAgdmFyIHByb3BzID0gaW5zdC5fY3VycmVudEVsZW1lbnQucHJvcHM7XG5cbiAgICAvLyBBZnRl
ciB0aGUgaW5pdGlhbCBtb3VudCwgd2UgY29udHJvbCBzZWxlY3RlZC1uZXNzIG1hbnVhbGx5IHNv
IGRvbid0IHBhc3NcbiAgICAvLyB0aGlzIHZhbHVlIGRvd25cbiAgICBpbnN0Ll93cmFwcGVyU3Rh
dGUuaW5pdGlhbFZhbHVlID0gdW5kZWZpbmVkO1xuXG4gICAgdmFyIHdhc011bHRpcGxlID0gaW5z
dC5fd3JhcHBlclN0YXRlLndhc011bHRpcGxlO1xuICAgIGluc3QuX3dyYXBwZXJTdGF0ZS53YXNN
dWx0aXBsZSA9IEJvb2xlYW4ocHJvcHMubXVsdGlwbGUpO1xuXG4gICAgdmFyIHZhbHVlID0gTGlu
a2VkVmFsdWVVdGlscy5nZXRWYWx1ZShwcm9wcyk7XG4gICAgaWYgKHZhbHVlICE9IG51bGwpIHtc
biAgICAgIGluc3QuX3dyYXBwZXJTdGF0ZS5wZW5kaW5nVXBkYXRlID0gZmFsc2U7XG4gICAgICB1
cGRhdGVPcHRpb25zKGluc3QsIEJvb2xlYW4ocHJvcHMubXVsdGlwbGUpLCB2YWx1ZSk7XG4gICAg
fSBlbHNlIGlmICh3YXNNdWx0aXBsZSAhPT0gQm9vbGVhbihwcm9wcy5tdWx0aXBsZSkpIHtcbiAg
ICAgIC8vIEZvciBzaW1wbGljaXR5LCByZWFwcGx5IGBkZWZhdWx0VmFsdWVgIGlmIGBtdWx0aXBs
ZWAgaXMgdG9nZ2xlZC5cbiAgICAgIGlmIChwcm9wcy5kZWZhdWx0VmFsdWUgIT0gbnVsbCkge1xu
ICAgICAgICB1cGRhdGVPcHRpb25zKGluc3QsIEJvb2xlYW4ocHJvcHMubXVsdGlwbGUpLCBwcm9w
cy5kZWZhdWx0VmFsdWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gUmV2ZXJ0IHRoZSBz
ZWxlY3QgYmFjayB0byBpdHMgZGVmYXVsdCB1bnNlbGVjdGVkIHN0YXRlLlxuICAgICAgICB1cGRh
dGVPcHRpb25zKGluc3QsIEJvb2xlYW4ocHJvcHMubXVsdGlwbGUpLCBwcm9wcy5tdWx0aXBsZSA/
IFtdIDogJycpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufTtcblxuZnVuY3Rpb24gX2hhbmRsZUNo
YW5nZShldmVudCkge1xuICB2YXIgcHJvcHMgPSB0aGlzLl9jdXJyZW50RWxlbWVudC5wcm9wcztc
biAgdmFyIHJldHVyblZhbHVlID0gTGlua2VkVmFsdWVVdGlscy5leGVjdXRlT25DaGFuZ2UocHJv
cHMsIGV2ZW50KTtcblxuICBpZiAodGhpcy5fcm9vdE5vZGVJRCkge1xuICAgIHRoaXMuX3dyYXBw
ZXJTdGF0ZS5wZW5kaW5nVXBkYXRlID0gdHJ1ZTtcbiAgfVxuICBSZWFjdFVwZGF0ZXMuYXNhcCh1
cGRhdGVPcHRpb25zSWZQZW5kaW5nVXBkYXRlQW5kTW91bnRlZCwgdGhpcyk7XG4gIHJldHVybiBy
ZXR1cm5WYWx1ZTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdERPTVNlbGVjdDtcblxuXG4v
KioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFjdC1kb20v
bGliL1JlYWN0RE9NU2VsZWN0LmpzXG4gKiogbW9kdWxlIGlkID0gNjJcbiAqKiBtb2R1bGUgY2h1
bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCwgRmFjZWJvb2ss
IEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBp
cyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBM
SUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFu
IGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRo
ZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNlIHN0
cmljdCc7XG5cbnZhciBlbXB0eUNvbXBvbmVudEZhY3Rvcnk7XG5cbnZhciBSZWFjdEVtcHR5Q29t
cG9uZW50SW5qZWN0aW9uID0ge1xuICBpbmplY3RFbXB0eUNvbXBvbmVudEZhY3Rvcnk6IGZ1bmN0
aW9uIChmYWN0b3J5KSB7XG4gICAgZW1wdHlDb21wb25lbnRGYWN0b3J5ID0gZmFjdG9yeTtcbiAg
fVxufTtcblxudmFyIFJlYWN0RW1wdHlDb21wb25lbnQgPSB7XG4gIGNyZWF0ZTogZnVuY3Rpb24g
KGluc3RhbnRpYXRlKSB7XG4gICAgcmV0dXJuIGVtcHR5Q29tcG9uZW50RmFjdG9yeShpbnN0YW50
aWF0ZSk7XG4gIH1cbn07XG5cblJlYWN0RW1wdHlDb21wb25lbnQuaW5qZWN0aW9uID0gUmVhY3RF
bXB0eUNvbXBvbmVudEluamVjdGlvbjtcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdEVtcHR5Q29t
cG9uZW50O1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiog
Li9+L3JlYWN0LWRvbS9saWIvUmVhY3RFbXB0eUNvbXBvbmVudC5qc1xuICoqIG1vZHVsZSBpZCA9
IDYzXG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENvcHlyaWdodCAyMDEz
LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAq
IFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNl
IGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0
aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRz
IGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5c
biAqXG4gKiBcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBSZWFjdEZlYXR1cmVGbGFncyA9
IHtcbiAgLy8gV2hlbiB0cnVlLCBjYWxsIGNvbnNvbGUudGltZSgpIGJlZm9yZSBhbmQgLnRpbWVF
bmQoKSBhZnRlciBlYWNoIHRvcC1sZXZlbFxuICAvLyByZW5kZXIgKGJvdGggaW5pdGlhbCByZW5k
ZXJzIGFuZCB1cGRhdGVzKS4gVXNlZnVsIHdoZW4gbG9va2luZyBhdCBwcm9kLW1vZGVcbiAgLy8g
dGltZWxpbmUgcHJvZmlsZXMgaW4gQ2hyb21lLCBmb3IgZXhhbXBsZS5cbiAgbG9nVG9wTGV2ZWxS
ZW5kZXJzOiBmYWxzZVxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdEZlYXR1cmVGbGFncztc
blxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFj
dC1kb20vbGliL1JlYWN0RmVhdHVyZUZsYWdzLmpzXG4gKiogbW9kdWxlIGlkID0gNjRcbiAqKiBt
b2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCwg
RmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3Vy
Y2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4g
dGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNl
IHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZv
dW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xu
XG4ndXNlIHN0cmljdCc7XG5cbnZhciBfcHJvZEludmFyaWFudCA9IHJlcXVpcmUoJy4vcmVhY3RQ
cm9kSW52YXJpYW50Jyk7XG5cbnZhciBpbnZhcmlhbnQgPSByZXF1aXJlKCdmYmpzL2xpYi9pbnZh
cmlhbnQnKTtcblxudmFyIGdlbmVyaWNDb21wb25lbnRDbGFzcyA9IG51bGw7XG52YXIgdGV4dENv
bXBvbmVudENsYXNzID0gbnVsbDtcblxudmFyIFJlYWN0SG9zdENvbXBvbmVudEluamVjdGlvbiA9
IHtcbiAgLy8gVGhpcyBhY2NlcHRzIGEgY2xhc3MgdGhhdCByZWNlaXZlcyB0aGUgdGFnIHN0cmlu
Zy4gVGhpcyBpcyBhIGNhdGNoIGFsbFxuICAvLyB0aGF0IGNhbiByZW5kZXIgYW55IGtpbmQgb2Yg
dGFnLlxuICBpbmplY3RHZW5lcmljQ29tcG9uZW50Q2xhc3M6IGZ1bmN0aW9uIChjb21wb25lbnRD
bGFzcykge1xuICAgIGdlbmVyaWNDb21wb25lbnRDbGFzcyA9IGNvbXBvbmVudENsYXNzO1xuICB9
LFxuICAvLyBUaGlzIGFjY2VwdHMgYSB0ZXh0IGNvbXBvbmVudCBjbGFzcyB0aGF0IHRha2VzIHRo
ZSB0ZXh0IHN0cmluZyB0byBiZVxuICAvLyByZW5kZXJlZCBhcyBwcm9wcy5cbiAgaW5qZWN0VGV4
dENvbXBvbmVudENsYXNzOiBmdW5jdGlvbiAoY29tcG9uZW50Q2xhc3MpIHtcbiAgICB0ZXh0Q29t
cG9uZW50Q2xhc3MgPSBjb21wb25lbnRDbGFzcztcbiAgfVxufTtcblxuLyoqXG4gKiBHZXQgYSBo
b3N0IGludGVybmFsIGNvbXBvbmVudCBjbGFzcyBmb3IgYSBzcGVjaWZpYyB0YWcuXG4gKlxuICog
QHBhcmFtIHtSZWFjdEVsZW1lbnR9IGVsZW1lbnQgVGhlIGVsZW1lbnQgdG8gY3JlYXRlLlxuICog
QHJldHVybiB7ZnVuY3Rpb259IFRoZSBpbnRlcm5hbCBjbGFzcyBjb25zdHJ1Y3RvciBmdW5jdGlv
bi5cbiAqL1xuZnVuY3Rpb24gY3JlYXRlSW50ZXJuYWxDb21wb25lbnQoZWxlbWVudCkge1xuICAh
Z2VuZXJpY0NvbXBvbmVudENsYXNzID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0
aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ1RoZXJlIGlzIG5vIHJlZ2lzdGVyZWQgY29tcG9uZW50
IGZvciB0aGUgdGFnICVzJywgZWxlbWVudC50eXBlKSA6IF9wcm9kSW52YXJpYW50KCcxMTEnLCBl
bGVtZW50LnR5cGUpIDogdm9pZCAwO1xuICByZXR1cm4gbmV3IGdlbmVyaWNDb21wb25lbnRDbGFz
cyhlbGVtZW50KTtcbn1cblxuLyoqXG4gKiBAcGFyYW0ge1JlYWN0VGV4dH0gdGV4dFxuICogQHJl
dHVybiB7UmVhY3RDb21wb25lbnR9XG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZUluc3RhbmNlRm9yVGV4
dCh0ZXh0KSB7XG4gIHJldHVybiBuZXcgdGV4dENvbXBvbmVudENsYXNzKHRleHQpO1xufVxuXG4v
KipcbiAqIEBwYXJhbSB7UmVhY3RDb21wb25lbnR9IGNvbXBvbmVudFxuICogQHJldHVybiB7Ym9v
bGVhbn1cbiAqL1xuZnVuY3Rpb24gaXNUZXh0Q29tcG9uZW50KGNvbXBvbmVudCkge1xuICByZXR1
cm4gY29tcG9uZW50IGluc3RhbmNlb2YgdGV4dENvbXBvbmVudENsYXNzO1xufVxuXG52YXIgUmVh
Y3RIb3N0Q29tcG9uZW50ID0ge1xuICBjcmVhdGVJbnRlcm5hbENvbXBvbmVudDogY3JlYXRlSW50
ZXJuYWxDb21wb25lbnQsXG4gIGNyZWF0ZUluc3RhbmNlRm9yVGV4dDogY3JlYXRlSW5zdGFuY2VG
b3JUZXh0LFxuICBpc1RleHRDb21wb25lbnQ6IGlzVGV4dENvbXBvbmVudCxcbiAgaW5qZWN0aW9u
OiBSZWFjdEhvc3RDb21wb25lbnRJbmplY3Rpb25cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gUmVh
Y3RIb3N0Q29tcG9uZW50O1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9P
VEVSXG4gKiogLi9+L3JlYWN0LWRvbS9saWIvUmVhY3RIb3N0Q29tcG9uZW50LmpzXG4gKiogbW9k
dWxlIGlkID0gNjVcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29weXJp
Z2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQu
XG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxl
IGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0
b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVu
dCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGly
ZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBSZWFjdERPTVNlbGVjdGlv
biA9IHJlcXVpcmUoJy4vUmVhY3RET01TZWxlY3Rpb24nKTtcblxudmFyIGNvbnRhaW5zTm9kZSA9
IHJlcXVpcmUoJ2ZianMvbGliL2NvbnRhaW5zTm9kZScpO1xudmFyIGZvY3VzTm9kZSA9IHJlcXVp
cmUoJ2ZianMvbGliL2ZvY3VzTm9kZScpO1xudmFyIGdldEFjdGl2ZUVsZW1lbnQgPSByZXF1aXJl
KCdmYmpzL2xpYi9nZXRBY3RpdmVFbGVtZW50Jyk7XG5cbmZ1bmN0aW9uIGlzSW5Eb2N1bWVudChu
b2RlKSB7XG4gIHJldHVybiBjb250YWluc05vZGUoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LCBu
b2RlKTtcbn1cblxuLyoqXG4gKiBAUmVhY3RJbnB1dFNlbGVjdGlvbjogUmVhY3QgaW5wdXQgc2Vs
ZWN0aW9uIG1vZHVsZS4gQmFzZWQgb24gU2VsZWN0aW9uLmpzLFxuICogYnV0IG1vZGlmaWVkIHRv
IGJlIHN1aXRhYmxlIGZvciByZWFjdCBhbmQgaGFzIGEgY291cGxlIG9mIGJ1ZyBmaXhlcyAoZG9l
c24ndFxuICogYXNzdW1lIGJ1dHRvbnMgaGF2ZSByYW5nZSBzZWxlY3Rpb25zIGFsbG93ZWQpLlxu
ICogSW5wdXQgc2VsZWN0aW9uIG1vZHVsZSBmb3IgUmVhY3QuXG4gKi9cbnZhciBSZWFjdElucHV0
U2VsZWN0aW9uID0ge1xuICBoYXNTZWxlY3Rpb25DYXBhYmlsaXRpZXM6IGZ1bmN0aW9uIChlbGVt
KSB7XG4gICAgdmFyIG5vZGVOYW1lID0gZWxlbSAmJiBlbGVtLm5vZGVOYW1lICYmIGVsZW0ubm9k
ZU5hbWUudG9Mb3dlckNhc2UoKTtcbiAgICByZXR1cm4gbm9kZU5hbWUgJiYgKG5vZGVOYW1lID09
PSAnaW5wdXQnICYmIGVsZW0udHlwZSA9PT0gJ3RleHQnIHx8IG5vZGVOYW1lID09PSAndGV4dGFy
ZWEnIHx8IGVsZW0uY29udGVudEVkaXRhYmxlID09PSAndHJ1ZScpO1xuICB9LFxuXG4gIGdldFNl
bGVjdGlvbkluZm9ybWF0aW9uOiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGZvY3VzZWRFbGVtID0g
Z2V0QWN0aXZlRWxlbWVudCgpO1xuICAgIHJldHVybiB7XG4gICAgICBmb2N1c2VkRWxlbTogZm9j
dXNlZEVsZW0sXG4gICAgICBzZWxlY3Rpb25SYW5nZTogUmVhY3RJbnB1dFNlbGVjdGlvbi5oYXNT
ZWxlY3Rpb25DYXBhYmlsaXRpZXMoZm9jdXNlZEVsZW0pID8gUmVhY3RJbnB1dFNlbGVjdGlvbi5n
ZXRTZWxlY3Rpb24oZm9jdXNlZEVsZW0pIDogbnVsbFxuICAgIH07XG4gIH0sXG5cbiAgLyoqXG4g
ICAqIEByZXN0b3JlU2VsZWN0aW9uOiBJZiBhbnkgc2VsZWN0aW9uIGluZm9ybWF0aW9uIHdhcyBw
b3RlbnRpYWxseSBsb3N0LFxuICAgKiByZXN0b3JlIGl0LiBUaGlzIGlzIHVzZWZ1bCB3aGVuIHBl
cmZvcm1pbmcgb3BlcmF0aW9ucyB0aGF0IGNvdWxkIHJlbW92ZSBkb21cbiAgICogbm9kZXMgYW5k
IHBsYWNlIHRoZW0gYmFjayBpbiwgcmVzdWx0aW5nIGluIGZvY3VzIGJlaW5nIGxvc3QuXG4gICAq
L1xuICByZXN0b3JlU2VsZWN0aW9uOiBmdW5jdGlvbiAocHJpb3JTZWxlY3Rpb25JbmZvcm1hdGlv
bikge1xuICAgIHZhciBjdXJGb2N1c2VkRWxlbSA9IGdldEFjdGl2ZUVsZW1lbnQoKTtcbiAgICB2
YXIgcHJpb3JGb2N1c2VkRWxlbSA9IHByaW9yU2VsZWN0aW9uSW5mb3JtYXRpb24uZm9jdXNlZEVs
ZW07XG4gICAgdmFyIHByaW9yU2VsZWN0aW9uUmFuZ2UgPSBwcmlvclNlbGVjdGlvbkluZm9ybWF0
aW9uLnNlbGVjdGlvblJhbmdlO1xuICAgIGlmIChjdXJGb2N1c2VkRWxlbSAhPT0gcHJpb3JGb2N1
c2VkRWxlbSAmJiBpc0luRG9jdW1lbnQocHJpb3JGb2N1c2VkRWxlbSkpIHtcbiAgICAgIGlmIChS
ZWFjdElucHV0U2VsZWN0aW9uLmhhc1NlbGVjdGlvbkNhcGFiaWxpdGllcyhwcmlvckZvY3VzZWRF
bGVtKSkge1xuICAgICAgICBSZWFjdElucHV0U2VsZWN0aW9uLnNldFNlbGVjdGlvbihwcmlvckZv
Y3VzZWRFbGVtLCBwcmlvclNlbGVjdGlvblJhbmdlKTtcbiAgICAgIH1cbiAgICAgIGZvY3VzTm9k
ZShwcmlvckZvY3VzZWRFbGVtKTtcbiAgICB9XG4gIH0sXG5cbiAgLyoqXG4gICAqIEBnZXRTZWxl
Y3Rpb246IEdldHMgdGhlIHNlbGVjdGlvbiBib3VuZHMgb2YgYSBmb2N1c2VkIHRleHRhcmVhLCBp
bnB1dCBvclxuICAgKiBjb250ZW50RWRpdGFibGUgbm9kZS5cbiAgICogLUBpbnB1dDogTG9vayB1
cCBzZWxlY3Rpb24gYm91bmRzIG9mIHRoaXMgaW5wdXRcbiAgICogLUByZXR1cm4ge3N0YXJ0OiBz
ZWxlY3Rpb25TdGFydCwgZW5kOiBzZWxlY3Rpb25FbmR9XG4gICAqL1xuICBnZXRTZWxlY3Rpb246
IGZ1bmN0aW9uIChpbnB1dCkge1xuICAgIHZhciBzZWxlY3Rpb247XG5cbiAgICBpZiAoJ3NlbGVj
dGlvblN0YXJ0JyBpbiBpbnB1dCkge1xuICAgICAgLy8gTW9kZXJuIGJyb3dzZXIgd2l0aCBpbnB1
dCBvciB0ZXh0YXJlYS5cbiAgICAgIHNlbGVjdGlvbiA9IHtcbiAgICAgICAgc3RhcnQ6IGlucHV0
LnNlbGVjdGlvblN0YXJ0LFxuICAgICAgICBlbmQ6IGlucHV0LnNlbGVjdGlvbkVuZFxuICAgICAg
fTtcbiAgICB9IGVsc2UgaWYgKGRvY3VtZW50LnNlbGVjdGlvbiAmJiBpbnB1dC5ub2RlTmFtZSAm
JiBpbnB1dC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSAnaW5wdXQnKSB7XG4gICAgICAvLyBJ
RTggaW5wdXQuXG4gICAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5zZWxlY3Rpb24uY3JlYXRlUmFu
Z2UoKTtcbiAgICAgIC8vIFRoZXJlIGNhbiBvbmx5IGJlIG9uZSBzZWxlY3Rpb24gcGVyIGRvY3Vt
ZW50IGluIElFLCBzbyBpdCBtdXN0XG4gICAgICAvLyBiZSBpbiBvdXIgZWxlbWVudC5cbiAgICAg
IGlmIChyYW5nZS5wYXJlbnRFbGVtZW50KCkgPT09IGlucHV0KSB7XG4gICAgICAgIHNlbGVjdGlv
biA9IHtcbiAgICAgICAgICBzdGFydDogLXJhbmdlLm1vdmVTdGFydCgnY2hhcmFjdGVyJywgLWlu
cHV0LnZhbHVlLmxlbmd0aCksXG4gICAgICAgICAgZW5kOiAtcmFuZ2UubW92ZUVuZCgnY2hhcmFj
dGVyJywgLWlucHV0LnZhbHVlLmxlbmd0aClcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9IGVs
c2Uge1xuICAgICAgLy8gQ29udGVudCBlZGl0YWJsZSBvciBvbGQgSUUgdGV4dGFyZWEuXG4gICAg
ICBzZWxlY3Rpb24gPSBSZWFjdERPTVNlbGVjdGlvbi5nZXRPZmZzZXRzKGlucHV0KTtcbiAgICB9
XG5cbiAgICByZXR1cm4gc2VsZWN0aW9uIHx8IHsgc3RhcnQ6IDAsIGVuZDogMCB9O1xuICB9LFxu
XG4gIC8qKlxuICAgKiBAc2V0U2VsZWN0aW9uOiBTZXRzIHRoZSBzZWxlY3Rpb24gYm91bmRzIG9m
IGEgdGV4dGFyZWEgb3IgaW5wdXQgYW5kIGZvY3VzZXNcbiAgICogdGhlIGlucHV0LlxuICAgKiAt
QGlucHV0ICAgICBTZXQgc2VsZWN0aW9uIGJvdW5kcyBvZiB0aGlzIGlucHV0IG9yIHRleHRhcmVh
XG4gICAqIC1Ab2Zmc2V0cyAgIE9iamVjdCBvZiBzYW1lIGZvcm0gdGhhdCBpcyByZXR1cm5lZCBm
cm9tIGdldCpcbiAgICovXG4gIHNldFNlbGVjdGlvbjogZnVuY3Rpb24gKGlucHV0LCBvZmZzZXRz
KSB7XG4gICAgdmFyIHN0YXJ0ID0gb2Zmc2V0cy5zdGFydDtcbiAgICB2YXIgZW5kID0gb2Zmc2V0
cy5lbmQ7XG4gICAgaWYgKGVuZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBlbmQgPSBzdGFydDtc
biAgICB9XG5cbiAgICBpZiAoJ3NlbGVjdGlvblN0YXJ0JyBpbiBpbnB1dCkge1xuICAgICAgaW5w
dXQuc2VsZWN0aW9uU3RhcnQgPSBzdGFydDtcbiAgICAgIGlucHV0LnNlbGVjdGlvbkVuZCA9IE1h
dGgubWluKGVuZCwgaW5wdXQudmFsdWUubGVuZ3RoKTtcbiAgICB9IGVsc2UgaWYgKGRvY3VtZW50
LnNlbGVjdGlvbiAmJiBpbnB1dC5ub2RlTmFtZSAmJiBpbnB1dC5ub2RlTmFtZS50b0xvd2VyQ2Fz
ZSgpID09PSAnaW5wdXQnKSB7XG4gICAgICB2YXIgcmFuZ2UgPSBpbnB1dC5jcmVhdGVUZXh0UmFu
Z2UoKTtcbiAgICAgIHJhbmdlLmNvbGxhcHNlKHRydWUpO1xuICAgICAgcmFuZ2UubW92ZVN0YXJ0
KCdjaGFyYWN0ZXInLCBzdGFydCk7XG4gICAgICByYW5nZS5tb3ZlRW5kKCdjaGFyYWN0ZXInLCBl
bmQgLSBzdGFydCk7XG4gICAgICByYW5nZS5zZWxlY3QoKTtcbiAgICB9IGVsc2Uge1xuICAgICAg
UmVhY3RET01TZWxlY3Rpb24uc2V0T2Zmc2V0cyhpbnB1dCwgb2Zmc2V0cyk7XG4gICAgfVxuICB9
XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0SW5wdXRTZWxlY3Rpb247XG5cblxuLyoqKioq
KioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3QtZG9tL2xpYi9S
ZWFjdElucHV0U2VsZWN0aW9uLmpzXG4gKiogbW9kdWxlIGlkID0gNjZcbiAqKiBtb2R1bGUgY2h1
bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ss
IEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBp
cyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBM
SUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFu
IGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRo
ZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNlIHN0
cmljdCc7XG5cbnZhciBfcHJvZEludmFyaWFudCA9IHJlcXVpcmUoJy4vcmVhY3RQcm9kSW52YXJp
YW50Jyk7XG5cbnZhciBET01MYXp5VHJlZSA9IHJlcXVpcmUoJy4vRE9NTGF6eVRyZWUnKTtcbnZh
ciBET01Qcm9wZXJ0eSA9IHJlcXVpcmUoJy4vRE9NUHJvcGVydHknKTtcbnZhciBSZWFjdCA9IHJl
cXVpcmUoJ3JlYWN0L2xpYi9SZWFjdCcpO1xudmFyIFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlciA9
IHJlcXVpcmUoJy4vUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyJyk7XG52YXIgUmVhY3RDdXJyZW50
T3duZXIgPSByZXF1aXJlKCdyZWFjdC9saWIvUmVhY3RDdXJyZW50T3duZXInKTtcbnZhciBSZWFj
dERPTUNvbXBvbmVudFRyZWUgPSByZXF1aXJlKCcuL1JlYWN0RE9NQ29tcG9uZW50VHJlZScpO1xu
dmFyIFJlYWN0RE9NQ29udGFpbmVySW5mbyA9IHJlcXVpcmUoJy4vUmVhY3RET01Db250YWluZXJJ
bmZvJyk7XG52YXIgUmVhY3RET01GZWF0dXJlRmxhZ3MgPSByZXF1aXJlKCcuL1JlYWN0RE9NRmVh
dHVyZUZsYWdzJyk7XG52YXIgUmVhY3RGZWF0dXJlRmxhZ3MgPSByZXF1aXJlKCcuL1JlYWN0RmVh
dHVyZUZsYWdzJyk7XG52YXIgUmVhY3RJbnN0YW5jZU1hcCA9IHJlcXVpcmUoJy4vUmVhY3RJbnN0
YW5jZU1hcCcpO1xudmFyIFJlYWN0SW5zdHJ1bWVudGF0aW9uID0gcmVxdWlyZSgnLi9SZWFjdElu
c3RydW1lbnRhdGlvbicpO1xudmFyIFJlYWN0TWFya3VwQ2hlY2tzdW0gPSByZXF1aXJlKCcuL1Jl
YWN0TWFya3VwQ2hlY2tzdW0nKTtcbnZhciBSZWFjdFJlY29uY2lsZXIgPSByZXF1aXJlKCcuL1Jl
YWN0UmVjb25jaWxlcicpO1xudmFyIFJlYWN0VXBkYXRlUXVldWUgPSByZXF1aXJlKCcuL1JlYWN0
VXBkYXRlUXVldWUnKTtcbnZhciBSZWFjdFVwZGF0ZXMgPSByZXF1aXJlKCcuL1JlYWN0VXBkYXRl
cycpO1xuXG52YXIgZW1wdHlPYmplY3QgPSByZXF1aXJlKCdmYmpzL2xpYi9lbXB0eU9iamVjdCcp
O1xudmFyIGluc3RhbnRpYXRlUmVhY3RDb21wb25lbnQgPSByZXF1aXJlKCcuL2luc3RhbnRpYXRl
UmVhY3RDb21wb25lbnQnKTtcbnZhciBpbnZhcmlhbnQgPSByZXF1aXJlKCdmYmpzL2xpYi9pbnZh
cmlhbnQnKTtcbnZhciBzZXRJbm5lckhUTUwgPSByZXF1aXJlKCcuL3NldElubmVySFRNTCcpO1xu
dmFyIHNob3VsZFVwZGF0ZVJlYWN0Q29tcG9uZW50ID0gcmVxdWlyZSgnLi9zaG91bGRVcGRhdGVS
ZWFjdENvbXBvbmVudCcpO1xudmFyIHdhcm5pbmcgPSByZXF1aXJlKCdmYmpzL2xpYi93YXJuaW5n
Jyk7XG5cbnZhciBBVFRSX05BTUUgPSBET01Qcm9wZXJ0eS5JRF9BVFRSSUJVVEVfTkFNRTtcbnZh
ciBST09UX0FUVFJfTkFNRSA9IERPTVByb3BlcnR5LlJPT1RfQVRUUklCVVRFX05BTUU7XG5cbnZh
ciBFTEVNRU5UX05PREVfVFlQRSA9IDE7XG52YXIgRE9DX05PREVfVFlQRSA9IDk7XG52YXIgRE9D
VU1FTlRfRlJBR01FTlRfTk9ERV9UWVBFID0gMTE7XG5cbnZhciBpbnN0YW5jZXNCeVJlYWN0Um9v
dElEID0ge307XG5cbi8qKlxuICogRmluZHMgdGhlIGluZGV4IG9mIHRoZSBmaXJzdCBjaGFyYWN0
ZXJcbiAqIHRoYXQncyBub3QgY29tbW9uIGJldHdlZW4gdGhlIHR3byBnaXZlbiBzdHJpbmdzLlxu
ICpcbiAqIEByZXR1cm4ge251bWJlcn0gdGhlIGluZGV4IG9mIHRoZSBjaGFyYWN0ZXIgd2hlcmUg
dGhlIHN0cmluZ3MgZGl2ZXJnZVxuICovXG5mdW5jdGlvbiBmaXJzdERpZmZlcmVuY2VJbmRleChz
dHJpbmcxLCBzdHJpbmcyKSB7XG4gIHZhciBtaW5MZW4gPSBNYXRoLm1pbihzdHJpbmcxLmxlbmd0
aCwgc3RyaW5nMi5sZW5ndGgpO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IG1pbkxlbjsgaSsrKSB7
XG4gICAgaWYgKHN0cmluZzEuY2hhckF0KGkpICE9PSBzdHJpbmcyLmNoYXJBdChpKSkge1xuICAg
ICAgcmV0dXJuIGk7XG4gICAgfVxuICB9XG4gIHJldHVybiBzdHJpbmcxLmxlbmd0aCA9PT0gc3Ry
aW5nMi5sZW5ndGggPyAtMSA6IG1pbkxlbjtcbn1cblxuLyoqXG4gKiBAcGFyYW0ge0RPTUVsZW1l
bnR8RE9NRG9jdW1lbnR9IGNvbnRhaW5lciBET00gZWxlbWVudCB0aGF0IG1heSBjb250YWluXG4g
KiBhIFJlYWN0IGNvbXBvbmVudFxuICogQHJldHVybiB7Pyp9IERPTSBlbGVtZW50IHRoYXQgbWF5
IGhhdmUgdGhlIHJlYWN0Um9vdCBJRCwgb3IgbnVsbC5cbiAqL1xuZnVuY3Rpb24gZ2V0UmVhY3RS
b290RWxlbWVudEluQ29udGFpbmVyKGNvbnRhaW5lcikge1xuICBpZiAoIWNvbnRhaW5lcikge1xu
ICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgaWYgKGNvbnRhaW5lci5ub2RlVHlwZSA9PT0gRE9D
X05PREVfVFlQRSkge1xuICAgIHJldHVybiBjb250YWluZXIuZG9jdW1lbnRFbGVtZW50O1xuICB9
IGVsc2Uge1xuICAgIHJldHVybiBjb250YWluZXIuZmlyc3RDaGlsZDtcbiAgfVxufVxuXG5mdW5j
dGlvbiBpbnRlcm5hbEdldElEKG5vZGUpIHtcbiAgLy8gSWYgbm9kZSBpcyBzb21ldGhpbmcgbGlr
ZSBhIHdpbmRvdywgZG9jdW1lbnQsIG9yIHRleHQgbm9kZSwgbm9uZSBvZlxuICAvLyB3aGljaCBz
dXBwb3J0IGF0dHJpYnV0ZXMgb3IgYSAuZ2V0QXR0cmlidXRlIG1ldGhvZCwgZ3JhY2VmdWxseSBy
ZXR1cm5cbiAgLy8gdGhlIGVtcHR5IHN0cmluZywgYXMgaWYgdGhlIGF0dHJpYnV0ZSB3ZXJlIG1p
c3NpbmcuXG4gIHJldHVybiBub2RlLmdldEF0dHJpYnV0ZSAmJiBub2RlLmdldEF0dHJpYnV0ZShB
VFRSX05BTUUpIHx8ICcnO1xufVxuXG4vKipcbiAqIE1vdW50cyB0aGlzIGNvbXBvbmVudCBhbmQg
aW5zZXJ0cyBpdCBpbnRvIHRoZSBET00uXG4gKlxuICogQHBhcmFtIHtSZWFjdENvbXBvbmVudH0g
Y29tcG9uZW50SW5zdGFuY2UgVGhlIGluc3RhbmNlIHRvIG1vdW50LlxuICogQHBhcmFtIHtET01F
bGVtZW50fSBjb250YWluZXIgRE9NIGVsZW1lbnQgdG8gbW91bnQgaW50by5cbiAqIEBwYXJhbSB7
UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbn0gdHJhbnNhY3Rpb25cbiAqIEBwYXJhbSB7Ym9vbGVh
bn0gc2hvdWxkUmV1c2VNYXJrdXAgSWYgdHJ1ZSwgZG8gbm90IGluc2VydCBtYXJrdXBcbiAqL1xu
ZnVuY3Rpb24gbW91bnRDb21wb25lbnRJbnRvTm9kZSh3cmFwcGVySW5zdGFuY2UsIGNvbnRhaW5l
ciwgdHJhbnNhY3Rpb24sIHNob3VsZFJldXNlTWFya3VwLCBjb250ZXh0KSB7XG4gIHZhciBtYXJr
ZXJOYW1lO1xuICBpZiAoUmVhY3RGZWF0dXJlRmxhZ3MubG9nVG9wTGV2ZWxSZW5kZXJzKSB7XG4g
ICAgdmFyIHdyYXBwZWRFbGVtZW50ID0gd3JhcHBlckluc3RhbmNlLl9jdXJyZW50RWxlbWVudC5w
cm9wcy5jaGlsZDtcbiAgICB2YXIgdHlwZSA9IHdyYXBwZWRFbGVtZW50LnR5cGU7XG4gICAgbWFy
a2VyTmFtZSA9ICdSZWFjdCBtb3VudDogJyArICh0eXBlb2YgdHlwZSA9PT0gJ3N0cmluZycgPyB0
eXBlIDogdHlwZS5kaXNwbGF5TmFtZSB8fCB0eXBlLm5hbWUpO1xuICAgIGNvbnNvbGUudGltZSht
YXJrZXJOYW1lKTtcbiAgfVxuXG4gIHZhciBtYXJrdXAgPSBSZWFjdFJlY29uY2lsZXIubW91bnRD
b21wb25lbnQod3JhcHBlckluc3RhbmNlLCB0cmFuc2FjdGlvbiwgbnVsbCwgUmVhY3RET01Db250
YWluZXJJbmZvKHdyYXBwZXJJbnN0YW5jZSwgY29udGFpbmVyKSwgY29udGV4dCwgMCAvKiBwYXJl
bnREZWJ1Z0lEICovXG4gICk7XG5cbiAgaWYgKG1hcmtlck5hbWUpIHtcbiAgICBjb25zb2xlLnRp
bWVFbmQobWFya2VyTmFtZSk7XG4gIH1cblxuICB3cmFwcGVySW5zdGFuY2UuX3JlbmRlcmVkQ29t
cG9uZW50Ll90b3BMZXZlbFdyYXBwZXIgPSB3cmFwcGVySW5zdGFuY2U7XG4gIFJlYWN0TW91bnQu
X21vdW50SW1hZ2VJbnRvTm9kZShtYXJrdXAsIGNvbnRhaW5lciwgd3JhcHBlckluc3RhbmNlLCBz
aG91bGRSZXVzZU1hcmt1cCwgdHJhbnNhY3Rpb24pO1xufVxuXG4vKipcbiAqIEJhdGNoZWQgbW91
bnQuXG4gKlxuICogQHBhcmFtIHtSZWFjdENvbXBvbmVudH0gY29tcG9uZW50SW5zdGFuY2UgVGhl
IGluc3RhbmNlIHRvIG1vdW50LlxuICogQHBhcmFtIHtET01FbGVtZW50fSBjb250YWluZXIgRE9N
IGVsZW1lbnQgdG8gbW91bnQgaW50by5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gc2hvdWxkUmV1c2VN
YXJrdXAgSWYgdHJ1ZSwgZG8gbm90IGluc2VydCBtYXJrdXBcbiAqL1xuZnVuY3Rpb24gYmF0Y2hl
ZE1vdW50Q29tcG9uZW50SW50b05vZGUoY29tcG9uZW50SW5zdGFuY2UsIGNvbnRhaW5lciwgc2hv
dWxkUmV1c2VNYXJrdXAsIGNvbnRleHQpIHtcbiAgdmFyIHRyYW5zYWN0aW9uID0gUmVhY3RVcGRh
dGVzLlJlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb24uZ2V0UG9vbGVkKFxuICAvKiB1c2VDcmVhdGVF
bGVtZW50ICovXG4gICFzaG91bGRSZXVzZU1hcmt1cCAmJiBSZWFjdERPTUZlYXR1cmVGbGFncy51
c2VDcmVhdGVFbGVtZW50KTtcbiAgdHJhbnNhY3Rpb24ucGVyZm9ybShtb3VudENvbXBvbmVudElu
dG9Ob2RlLCBudWxsLCBjb21wb25lbnRJbnN0YW5jZSwgY29udGFpbmVyLCB0cmFuc2FjdGlvbiwg
c2hvdWxkUmV1c2VNYXJrdXAsIGNvbnRleHQpO1xuICBSZWFjdFVwZGF0ZXMuUmVhY3RSZWNvbmNp
bGVUcmFuc2FjdGlvbi5yZWxlYXNlKHRyYW5zYWN0aW9uKTtcbn1cblxuLyoqXG4gKiBVbm1vdW50
cyBhIGNvbXBvbmVudCBhbmQgcmVtb3ZlcyBpdCBmcm9tIHRoZSBET00uXG4gKlxuICogQHBhcmFt
IHtSZWFjdENvbXBvbmVudH0gaW5zdGFuY2UgUmVhY3QgY29tcG9uZW50IGluc3RhbmNlLlxuICog
QHBhcmFtIHtET01FbGVtZW50fSBjb250YWluZXIgRE9NIGVsZW1lbnQgdG8gdW5tb3VudCBmcm9t
LlxuICogQGZpbmFsXG4gKiBAaW50ZXJuYWxcbiAqIEBzZWUge1JlYWN0TW91bnQudW5tb3VudENv
bXBvbmVudEF0Tm9kZX1cbiAqL1xuZnVuY3Rpb24gdW5tb3VudENvbXBvbmVudEZyb21Ob2RlKGlu
c3RhbmNlLCBjb250YWluZXIsIHNhZmVseSkge1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYg
IT09ICdwcm9kdWN0aW9uJykge1xuICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5v
bkJlZ2luRmx1c2goKTtcbiAgfVxuICBSZWFjdFJlY29uY2lsZXIudW5tb3VudENvbXBvbmVudChp
bnN0YW5jZSwgc2FmZWx5KTtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVj
dGlvbicpIHtcbiAgICBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25FbmRGbHVzaCgp
O1xuICB9XG5cbiAgaWYgKGNvbnRhaW5lci5ub2RlVHlwZSA9PT0gRE9DX05PREVfVFlQRSkge1xu
ICAgIGNvbnRhaW5lciA9IGNvbnRhaW5lci5kb2N1bWVudEVsZW1lbnQ7XG4gIH1cblxuICAvLyBo
dHRwOi8vanNwZXJmLmNvbS9lbXB0eWluZy1hLW5vZGVcbiAgd2hpbGUgKGNvbnRhaW5lci5sYXN0
Q2hpbGQpIHtcbiAgICBjb250YWluZXIucmVtb3ZlQ2hpbGQoY29udGFpbmVyLmxhc3RDaGlsZCk7
XG4gIH1cbn1cblxuLyoqXG4gKiBUcnVlIGlmIHRoZSBzdXBwbGllZCBET00gbm9kZSBoYXMgYSBk
aXJlY3QgUmVhY3QtcmVuZGVyZWQgY2hpbGQgdGhhdCBpc1xuICogbm90IGEgUmVhY3Qgcm9vdCBl
bGVtZW50LiBVc2VmdWwgZm9yIHdhcm5pbmcgaW4gYHJlbmRlcmAsXG4gKiBgdW5tb3VudENvbXBv
bmVudEF0Tm9kZWAsIGV0Yy5cbiAqXG4gKiBAcGFyYW0gez9ET01FbGVtZW50fSBub2RlIFRoZSBj
YW5kaWRhdGUgRE9NIG5vZGUuXG4gKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmIHRoZSBET00g
ZWxlbWVudCBjb250YWlucyBhIGRpcmVjdCBjaGlsZCB0aGF0IHdhc1xuICogcmVuZGVyZWQgYnkg
UmVhY3QgYnV0IGlzIG5vdCBhIHJvb3QgZWxlbWVudC5cbiAqIEBpbnRlcm5hbFxuICovXG5mdW5j
dGlvbiBoYXNOb25Sb290UmVhY3RDaGlsZChjb250YWluZXIpIHtcbiAgdmFyIHJvb3RFbCA9IGdl
dFJlYWN0Um9vdEVsZW1lbnRJbkNvbnRhaW5lcihjb250YWluZXIpO1xuICBpZiAocm9vdEVsKSB7
XG4gICAgdmFyIGluc3QgPSBSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0SW5zdGFuY2VGcm9tTm9k
ZShyb290RWwpO1xuICAgIHJldHVybiAhIShpbnN0ICYmIGluc3QuX2hvc3RQYXJlbnQpO1xuICB9
XG59XG5cbi8qKlxuICogVHJ1ZSBpZiB0aGUgc3VwcGxpZWQgRE9NIG5vZGUgaXMgYSBSZWFjdCBE
T00gZWxlbWVudCBhbmRcbiAqIGl0IGhhcyBiZWVuIHJlbmRlcmVkIGJ5IGFub3RoZXIgY29weSBv
ZiBSZWFjdC5cbiAqXG4gKiBAcGFyYW0gez9ET01FbGVtZW50fSBub2RlIFRoZSBjYW5kaWRhdGUg
RE9NIG5vZGUuXG4gKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmIHRoZSBET00gaGFzIGJlZW4g
cmVuZGVyZWQgYnkgYW5vdGhlciBjb3B5IG9mIFJlYWN0XG4gKiBAaW50ZXJuYWxcbiAqL1xuZnVu
Y3Rpb24gbm9kZUlzUmVuZGVyZWRCeU90aGVySW5zdGFuY2UoY29udGFpbmVyKSB7XG4gIHZhciBy
b290RWwgPSBnZXRSZWFjdFJvb3RFbGVtZW50SW5Db250YWluZXIoY29udGFpbmVyKTtcbiAgcmV0
dXJuICEhKHJvb3RFbCAmJiBpc1JlYWN0Tm9kZShyb290RWwpICYmICFSZWFjdERPTUNvbXBvbmVu
dFRyZWUuZ2V0SW5zdGFuY2VGcm9tTm9kZShyb290RWwpKTtcbn1cblxuLyoqXG4gKiBUcnVlIGlm
IHRoZSBzdXBwbGllZCBET00gbm9kZSBpcyBhIHZhbGlkIG5vZGUgZWxlbWVudC5cbiAqXG4gKiBA
cGFyYW0gez9ET01FbGVtZW50fSBub2RlIFRoZSBjYW5kaWRhdGUgRE9NIG5vZGUuXG4gKiBAcmV0
dXJuIHtib29sZWFufSBUcnVlIGlmIHRoZSBET00gaXMgYSB2YWxpZCBET00gbm9kZS5cbiAqIEBp
bnRlcm5hbFxuICovXG5mdW5jdGlvbiBpc1ZhbGlkQ29udGFpbmVyKG5vZGUpIHtcbiAgcmV0dXJu
ICEhKG5vZGUgJiYgKG5vZGUubm9kZVR5cGUgPT09IEVMRU1FTlRfTk9ERV9UWVBFIHx8IG5vZGUu
bm9kZVR5cGUgPT09IERPQ19OT0RFX1RZUEUgfHwgbm9kZS5ub2RlVHlwZSA9PT0gRE9DVU1FTlRf
RlJBR01FTlRfTk9ERV9UWVBFKSk7XG59XG5cbi8qKlxuICogVHJ1ZSBpZiB0aGUgc3VwcGxpZWQg
RE9NIG5vZGUgaXMgYSB2YWxpZCBSZWFjdCBub2RlIGVsZW1lbnQuXG4gKlxuICogQHBhcmFtIHs/
RE9NRWxlbWVudH0gbm9kZSBUaGUgY2FuZGlkYXRlIERPTSBub2RlLlxuICogQHJldHVybiB7Ym9v
bGVhbn0gVHJ1ZSBpZiB0aGUgRE9NIGlzIGEgdmFsaWQgUmVhY3QgRE9NIG5vZGUuXG4gKiBAaW50
ZXJuYWxcbiAqL1xuZnVuY3Rpb24gaXNSZWFjdE5vZGUobm9kZSkge1xuICByZXR1cm4gaXNWYWxp
ZENvbnRhaW5lcihub2RlKSAmJiAobm9kZS5oYXNBdHRyaWJ1dGUoUk9PVF9BVFRSX05BTUUpIHx8
IG5vZGUuaGFzQXR0cmlidXRlKEFUVFJfTkFNRSkpO1xufVxuXG5mdW5jdGlvbiBnZXRIb3N0Um9v
dEluc3RhbmNlSW5Db250YWluZXIoY29udGFpbmVyKSB7XG4gIHZhciByb290RWwgPSBnZXRSZWFj
dFJvb3RFbGVtZW50SW5Db250YWluZXIoY29udGFpbmVyKTtcbiAgdmFyIHByZXZIb3N0SW5zdGFu
Y2UgPSByb290RWwgJiYgUmVhY3RET01Db21wb25lbnRUcmVlLmdldEluc3RhbmNlRnJvbU5vZGUo
cm9vdEVsKTtcbiAgcmV0dXJuIHByZXZIb3N0SW5zdGFuY2UgJiYgIXByZXZIb3N0SW5zdGFuY2Uu
X2hvc3RQYXJlbnQgPyBwcmV2SG9zdEluc3RhbmNlIDogbnVsbDtcbn1cblxuZnVuY3Rpb24gZ2V0
VG9wTGV2ZWxXcmFwcGVySW5Db250YWluZXIoY29udGFpbmVyKSB7XG4gIHZhciByb290ID0gZ2V0
SG9zdFJvb3RJbnN0YW5jZUluQ29udGFpbmVyKGNvbnRhaW5lcik7XG4gIHJldHVybiByb290ID8g
cm9vdC5faG9zdENvbnRhaW5lckluZm8uX3RvcExldmVsV3JhcHBlciA6IG51bGw7XG59XG5cbi8q
KlxuICogVGVtcG9yYXJ5ICg/KSBoYWNrIHNvIHRoYXQgd2UgY2FuIHN0b3JlIGFsbCB0b3AtbGV2
ZWwgcGVuZGluZyB1cGRhdGVzIG9uXG4gKiBjb21wb3NpdGVzIGluc3RlYWQgb2YgaGF2aW5nIHRv
IHdvcnJ5IGFib3V0IGRpZmZlcmVudCB0eXBlcyBvZiBjb21wb25lbnRzXG4gKiBoZXJlLlxuICov
XG52YXIgdG9wTGV2ZWxSb290Q291bnRlciA9IDE7XG52YXIgVG9wTGV2ZWxXcmFwcGVyID0gZnVu
Y3Rpb24gKCkge1xuICB0aGlzLnJvb3RJRCA9IHRvcExldmVsUm9vdENvdW50ZXIrKztcbn07XG5U
b3BMZXZlbFdyYXBwZXIucHJvdG90eXBlLmlzUmVhY3RDb21wb25lbnQgPSB7fTtcbmlmIChwcm9j
ZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIFRvcExldmVsV3JhcHBlci5k
aXNwbGF5TmFtZSA9ICdUb3BMZXZlbFdyYXBwZXInO1xufVxuVG9wTGV2ZWxXcmFwcGVyLnByb3Rv
dHlwZS5yZW5kZXIgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLnByb3BzLmNoaWxkO1xu
fTtcblRvcExldmVsV3JhcHBlci5pc1JlYWN0VG9wTGV2ZWxXcmFwcGVyID0gdHJ1ZTtcblxuLyoq
XG4gKiBNb3VudGluZyBpcyB0aGUgcHJvY2VzcyBvZiBpbml0aWFsaXppbmcgYSBSZWFjdCBjb21w
b25lbnQgYnkgY3JlYXRpbmcgaXRzXG4gKiByZXByZXNlbnRhdGl2ZSBET00gZWxlbWVudHMgYW5k
IGluc2VydGluZyB0aGVtIGludG8gYSBzdXBwbGllZCBgY29udGFpbmVyYC5cbiAqIEFueSBwcmlv
ciBjb250ZW50IGluc2lkZSBgY29udGFpbmVyYCBpcyBkZXN0cm95ZWQgaW4gdGhlIHByb2Nlc3Mu
XG4gKlxuICogICBSZWFjdE1vdW50LnJlbmRlcihcbiAqICAgICBjb21wb25lbnQsXG4gKiAgICAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnRhaW5lcicpXG4gKiAgICk7XG4gKlxuICogICA8
ZGl2IGlkPVwiY29udGFpbmVyXCI+ICAgICAgICAgICAgICAgICAgIDwtLSBTdXBwbGllZCBgY29u
dGFpbmVyYC5cbiAqICAgICA8ZGl2IGRhdGEtcmVhY3RpZD1cIi4zXCI+ICAgICAgICAgICAgICA8
LS0gUmVuZGVyZWQgcmVhY3RSb290IG9mIFJlYWN0XG4gKiAgICAgICAvLyAuLi4gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQuXG4gKiAgICAgPC9kaXY+XG4gKiAgIDwv
ZGl2PlxuICpcbiAqIEluc2lkZSBvZiBgY29udGFpbmVyYCwgdGhlIGZpcnN0IGVsZW1lbnQgcmVu
ZGVyZWQgaXMgdGhlIFwicmVhY3RSb290XCIuXG4gKi9cbnZhciBSZWFjdE1vdW50ID0ge1xuICBU
b3BMZXZlbFdyYXBwZXI6IFRvcExldmVsV3JhcHBlcixcblxuICAvKipcbiAgICogVXNlZCBieSBk
ZXZ0b29scy4gVGhlIGtleXMgYXJlIG5vdCBpbXBvcnRhbnQuXG4gICAqL1xuICBfaW5zdGFuY2Vz
QnlSZWFjdFJvb3RJRDogaW5zdGFuY2VzQnlSZWFjdFJvb3RJRCxcblxuICAvKipcbiAgICogVGhp
cyBpcyBhIGhvb2sgcHJvdmlkZWQgdG8gc3VwcG9ydCByZW5kZXJpbmcgUmVhY3QgY29tcG9uZW50
cyB3aGlsZVxuICAgKiBlbnN1cmluZyB0aGF0IHRoZSBhcHBhcmVudCBzY3JvbGwgcG9zaXRpb24g
b2YgaXRzIGBjb250YWluZXJgIGRvZXMgbm90XG4gICAqIGNoYW5nZS5cbiAgICpcbiAgICogQHBh
cmFtIHtET01FbGVtZW50fSBjb250YWluZXIgVGhlIGBjb250YWluZXJgIGJlaW5nIHJlbmRlcmVk
IGludG8uXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IHJlbmRlckNhbGxiYWNrIFRoaXMgbXVzdCBi
ZSBjYWxsZWQgb25jZSB0byBkbyB0aGUgcmVuZGVyLlxuICAgKi9cbiAgc2Nyb2xsTW9uaXRvcjog
ZnVuY3Rpb24gKGNvbnRhaW5lciwgcmVuZGVyQ2FsbGJhY2spIHtcbiAgICByZW5kZXJDYWxsYmFj
aygpO1xuICB9LFxuXG4gIC8qKlxuICAgKiBUYWtlIGEgY29tcG9uZW50IHRoYXQncyBhbHJlYWR5
IG1vdW50ZWQgaW50byB0aGUgRE9NIGFuZCByZXBsYWNlIGl0cyBwcm9wc1xuICAgKiBAcGFyYW0g
e1JlYWN0Q29tcG9uZW50fSBwcmV2Q29tcG9uZW50IGNvbXBvbmVudCBpbnN0YW5jZSBhbHJlYWR5
IGluIHRoZSBET01cbiAgICogQHBhcmFtIHtSZWFjdEVsZW1lbnR9IG5leHRFbGVtZW50IGNvbXBv
bmVudCBpbnN0YW5jZSB0byByZW5kZXJcbiAgICogQHBhcmFtIHtET01FbGVtZW50fSBjb250YWlu
ZXIgY29udGFpbmVyIHRvIHJlbmRlciBpbnRvXG4gICAqIEBwYXJhbSB7P2Z1bmN0aW9ufSBjYWxs
YmFjayBmdW5jdGlvbiB0cmlnZ2VyZWQgb24gY29tcGxldGlvblxuICAgKi9cbiAgX3VwZGF0ZVJv
b3RDb21wb25lbnQ6IGZ1bmN0aW9uIChwcmV2Q29tcG9uZW50LCBuZXh0RWxlbWVudCwgbmV4dENv
bnRleHQsIGNvbnRhaW5lciwgY2FsbGJhY2spIHtcbiAgICBSZWFjdE1vdW50LnNjcm9sbE1vbml0
b3IoY29udGFpbmVyLCBmdW5jdGlvbiAoKSB7XG4gICAgICBSZWFjdFVwZGF0ZVF1ZXVlLmVucXVl
dWVFbGVtZW50SW50ZXJuYWwocHJldkNvbXBvbmVudCwgbmV4dEVsZW1lbnQsIG5leHRDb250ZXh0
KTtcbiAgICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgICBSZWFjdFVwZGF0ZVF1ZXVlLmVucXVl
dWVDYWxsYmFja0ludGVybmFsKHByZXZDb21wb25lbnQsIGNhbGxiYWNrKTtcbiAgICAgIH1cbiAg
ICB9KTtcblxuICAgIHJldHVybiBwcmV2Q29tcG9uZW50O1xuICB9LFxuXG4gIC8qKlxuICAgKiBS
ZW5kZXIgYSBuZXcgY29tcG9uZW50IGludG8gdGhlIERPTS4gSG9va2VkIGJ5IGhvb2tzIVxuICAg
KlxuICAgKiBAcGFyYW0ge1JlYWN0RWxlbWVudH0gbmV4dEVsZW1lbnQgZWxlbWVudCB0byByZW5k
ZXJcbiAgICogQHBhcmFtIHtET01FbGVtZW50fSBjb250YWluZXIgY29udGFpbmVyIHRvIHJlbmRl
ciBpbnRvXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gc2hvdWxkUmV1c2VNYXJrdXAgaWYgd2Ugc2hv
dWxkIHNraXAgdGhlIG1hcmt1cCBpbnNlcnRpb25cbiAgICogQHJldHVybiB7UmVhY3RDb21wb25l
bnR9IG5leHRDb21wb25lbnRcbiAgICovXG4gIF9yZW5kZXJOZXdSb290Q29tcG9uZW50OiBmdW5j
dGlvbiAobmV4dEVsZW1lbnQsIGNvbnRhaW5lciwgc2hvdWxkUmV1c2VNYXJrdXAsIGNvbnRleHQp
IHtcbiAgICAvLyBWYXJpb3VzIHBhcnRzIG9mIG91ciBjb2RlIChzdWNoIGFzIFJlYWN0Q29tcG9z
aXRlQ29tcG9uZW50J3NcbiAgICAvLyBfcmVuZGVyVmFsaWRhdGVkQ29tcG9uZW50KSBhc3N1bWUg
dGhhdCBjYWxscyB0byByZW5kZXIgYXJlbid0IG5lc3RlZDtcbiAgICAvLyB2ZXJpZnkgdGhhdCB0
aGF0J3MgdGhlIGNhc2UuXG4gICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9u
JyA/IHdhcm5pbmcoUmVhY3RDdXJyZW50T3duZXIuY3VycmVudCA9PSBudWxsLCAnX3JlbmRlck5l
d1Jvb3RDb21wb25lbnQoKTogUmVuZGVyIG1ldGhvZHMgc2hvdWxkIGJlIGEgcHVyZSBmdW5jdGlv
biAnICsgJ29mIHByb3BzIGFuZCBzdGF0ZTsgdHJpZ2dlcmluZyBuZXN0ZWQgY29tcG9uZW50IHVw
ZGF0ZXMgZnJvbSAnICsgJ3JlbmRlciBpcyBub3QgYWxsb3dlZC4gSWYgbmVjZXNzYXJ5LCB0cmln
Z2VyIG5lc3RlZCB1cGRhdGVzIGluICcgKyAnY29tcG9uZW50RGlkVXBkYXRlLiBDaGVjayB0aGUg
cmVuZGVyIG1ldGhvZCBvZiAlcy4nLCBSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50ICYmIFJlYWN0
Q3VycmVudE93bmVyLmN1cnJlbnQuZ2V0TmFtZSgpIHx8ICdSZWFjdENvbXBvc2l0ZUNvbXBvbmVu
dCcpIDogdm9pZCAwO1xuXG4gICAgIWlzVmFsaWRDb250YWluZXIoY29udGFpbmVyKSA/IHByb2Nl
c3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdfcmVn
aXN0ZXJDb21wb25lbnQoLi4uKTogVGFyZ2V0IGNvbnRhaW5lciBpcyBub3QgYSBET00gZWxlbWVu
dC4nKSA6IF9wcm9kSW52YXJpYW50KCczNycpIDogdm9pZCAwO1xuXG4gICAgUmVhY3RCcm93c2Vy
RXZlbnRFbWl0dGVyLmVuc3VyZVNjcm9sbFZhbHVlTW9uaXRvcmluZygpO1xuICAgIHZhciBjb21w
b25lbnRJbnN0YW5jZSA9IGluc3RhbnRpYXRlUmVhY3RDb21wb25lbnQobmV4dEVsZW1lbnQsIGZh
bHNlKTtcblxuICAgIC8vIFRoZSBpbml0aWFsIHJlbmRlciBpcyBzeW5jaHJvbm91cyBidXQgYW55
IHVwZGF0ZXMgdGhhdCBoYXBwZW4gZHVyaW5nXG4gICAgLy8gcmVuZGVyaW5nLCBpbiBjb21wb25l
bnRXaWxsTW91bnQgb3IgY29tcG9uZW50RGlkTW91bnQsIHdpbGwgYmUgYmF0Y2hlZFxuICAgIC8v
IGFjY29yZGluZyB0byB0aGUgY3VycmVudCBiYXRjaGluZyBzdHJhdGVneS5cblxuICAgIFJlYWN0
VXBkYXRlcy5iYXRjaGVkVXBkYXRlcyhiYXRjaGVkTW91bnRDb21wb25lbnRJbnRvTm9kZSwgY29t
cG9uZW50SW5zdGFuY2UsIGNvbnRhaW5lciwgc2hvdWxkUmV1c2VNYXJrdXAsIGNvbnRleHQpO1xu
XG4gICAgdmFyIHdyYXBwZXJJRCA9IGNvbXBvbmVudEluc3RhbmNlLl9pbnN0YW5jZS5yb290SUQ7
XG4gICAgaW5zdGFuY2VzQnlSZWFjdFJvb3RJRFt3cmFwcGVySURdID0gY29tcG9uZW50SW5zdGFu
Y2U7XG5cbiAgICByZXR1cm4gY29tcG9uZW50SW5zdGFuY2U7XG4gIH0sXG5cbiAgLyoqXG4gICAq
IFJlbmRlcnMgYSBSZWFjdCBjb21wb25lbnQgaW50byB0aGUgRE9NIGluIHRoZSBzdXBwbGllZCBg
Y29udGFpbmVyYC5cbiAgICpcbiAgICogSWYgdGhlIFJlYWN0IGNvbXBvbmVudCB3YXMgcHJldmlv
dXNseSByZW5kZXJlZCBpbnRvIGBjb250YWluZXJgLCB0aGlzIHdpbGxcbiAgICogcGVyZm9ybSBh
biB1cGRhdGUgb24gaXQgYW5kIG9ubHkgbXV0YXRlIHRoZSBET00gYXMgbmVjZXNzYXJ5IHRvIHJl
ZmxlY3QgdGhlXG4gICAqIGxhdGVzdCBSZWFjdCBjb21wb25lbnQuXG4gICAqXG4gICAqIEBwYXJh
bSB7UmVhY3RDb21wb25lbnR9IHBhcmVudENvbXBvbmVudCBUaGUgY29uY2VwdHVhbCBwYXJlbnQg
b2YgdGhpcyByZW5kZXIgdHJlZS5cbiAgICogQHBhcmFtIHtSZWFjdEVsZW1lbnR9IG5leHRFbGVt
ZW50IENvbXBvbmVudCBlbGVtZW50IHRvIHJlbmRlci5cbiAgICogQHBhcmFtIHtET01FbGVtZW50
fSBjb250YWluZXIgRE9NIGVsZW1lbnQgdG8gcmVuZGVyIGludG8uXG4gICAqIEBwYXJhbSB7P2Z1
bmN0aW9ufSBjYWxsYmFjayBmdW5jdGlvbiB0cmlnZ2VyZWQgb24gY29tcGxldGlvblxuICAgKiBA
cmV0dXJuIHtSZWFjdENvbXBvbmVudH0gQ29tcG9uZW50IGluc3RhbmNlIHJlbmRlcmVkIGluIGBj
b250YWluZXJgLlxuICAgKi9cbiAgcmVuZGVyU3VidHJlZUludG9Db250YWluZXI6IGZ1bmN0aW9u
IChwYXJlbnRDb21wb25lbnQsIG5leHRFbGVtZW50LCBjb250YWluZXIsIGNhbGxiYWNrKSB7XG4g
ICAgIShwYXJlbnRDb21wb25lbnQgIT0gbnVsbCAmJiBSZWFjdEluc3RhbmNlTWFwLmhhcyhwYXJl
bnRDb21wb25lbnQpKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBp
bnZhcmlhbnQoZmFsc2UsICdwYXJlbnRDb21wb25lbnQgbXVzdCBiZSBhIHZhbGlkIFJlYWN0IENv
bXBvbmVudCcpIDogX3Byb2RJbnZhcmlhbnQoJzM4JykgOiB2b2lkIDA7XG4gICAgcmV0dXJuIFJl
YWN0TW91bnQuX3JlbmRlclN1YnRyZWVJbnRvQ29udGFpbmVyKHBhcmVudENvbXBvbmVudCwgbmV4
dEVsZW1lbnQsIGNvbnRhaW5lciwgY2FsbGJhY2spO1xuICB9LFxuXG4gIF9yZW5kZXJTdWJ0cmVl
SW50b0NvbnRhaW5lcjogZnVuY3Rpb24gKHBhcmVudENvbXBvbmVudCwgbmV4dEVsZW1lbnQsIGNv
bnRhaW5lciwgY2FsbGJhY2spIHtcbiAgICBSZWFjdFVwZGF0ZVF1ZXVlLnZhbGlkYXRlQ2FsbGJh
Y2soY2FsbGJhY2ssICdSZWFjdERPTS5yZW5kZXInKTtcbiAgICAhUmVhY3QuaXNWYWxpZEVsZW1l
bnQobmV4dEVsZW1lbnQpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/
IGludmFyaWFudChmYWxzZSwgJ1JlYWN0RE9NLnJlbmRlcigpOiBJbnZhbGlkIGNvbXBvbmVudCBl
bGVtZW50LiVzJywgdHlwZW9mIG5leHRFbGVtZW50ID09PSAnc3RyaW5nJyA/IFwiIEluc3RlYWQg
b2YgcGFzc2luZyBhIHN0cmluZyBsaWtlICdkaXYnLCBwYXNzIFwiICsgXCJSZWFjdC5jcmVhdGVF
bGVtZW50KCdkaXYnKSBvciA8ZGl2IC8+LlwiIDogdHlwZW9mIG5leHRFbGVtZW50ID09PSAnZnVu
Y3Rpb24nID8gJyBJbnN0ZWFkIG9mIHBhc3NpbmcgYSBjbGFzcyBsaWtlIEZvbywgcGFzcyAnICsg
J1JlYWN0LmNyZWF0ZUVsZW1lbnQoRm9vKSBvciA8Rm9vIC8+LicgOiAvLyBDaGVjayBpZiBpdCBx
dWFja3MgbGlrZSBhbiBlbGVtZW50XG4gICAgbmV4dEVsZW1lbnQgIT0gbnVsbCAmJiBuZXh0RWxl
bWVudC5wcm9wcyAhPT0gdW5kZWZpbmVkID8gJyBUaGlzIG1heSBiZSBjYXVzZWQgYnkgdW5pbnRl
bnRpb25hbGx5IGxvYWRpbmcgdHdvIGluZGVwZW5kZW50ICcgKyAnY29waWVzIG9mIFJlYWN0Licg
OiAnJykgOiBfcHJvZEludmFyaWFudCgnMzknLCB0eXBlb2YgbmV4dEVsZW1lbnQgPT09ICdzdHJp
bmcnID8gXCIgSW5zdGVhZCBvZiBwYXNzaW5nIGEgc3RyaW5nIGxpa2UgJ2RpdicsIHBhc3MgXCIg
KyBcIlJlYWN0LmNyZWF0ZUVsZW1lbnQoJ2RpdicpIG9yIDxkaXYgLz4uXCIgOiB0eXBlb2YgbmV4
dEVsZW1lbnQgPT09ICdmdW5jdGlvbicgPyAnIEluc3RlYWQgb2YgcGFzc2luZyBhIGNsYXNzIGxp
a2UgRm9vLCBwYXNzICcgKyAnUmVhY3QuY3JlYXRlRWxlbWVudChGb28pIG9yIDxGb28gLz4uJyA6
IG5leHRFbGVtZW50ICE9IG51bGwgJiYgbmV4dEVsZW1lbnQucHJvcHMgIT09IHVuZGVmaW5lZCA/
ICcgVGhpcyBtYXkgYmUgY2F1c2VkIGJ5IHVuaW50ZW50aW9uYWxseSBsb2FkaW5nIHR3byBpbmRl
cGVuZGVudCAnICsgJ2NvcGllcyBvZiBSZWFjdC4nIDogJycpIDogdm9pZCAwO1xuXG4gICAgcHJv
Y2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoIWNvbnRhaW5lciB8
fCAhY29udGFpbmVyLnRhZ05hbWUgfHwgY29udGFpbmVyLnRhZ05hbWUudG9VcHBlckNhc2UoKSAh
PT0gJ0JPRFknLCAncmVuZGVyKCk6IFJlbmRlcmluZyBjb21wb25lbnRzIGRpcmVjdGx5IGludG8g
ZG9jdW1lbnQuYm9keSBpcyAnICsgJ2Rpc2NvdXJhZ2VkLCBzaW5jZSBpdHMgY2hpbGRyZW4gYXJl
IG9mdGVuIG1hbmlwdWxhdGVkIGJ5IHRoaXJkLXBhcnR5ICcgKyAnc2NyaXB0cyBhbmQgYnJvd3Nl
ciBleHRlbnNpb25zLiBUaGlzIG1heSBsZWFkIHRvIHN1YnRsZSAnICsgJ3JlY29uY2lsaWF0aW9u
IGlzc3Vlcy4gVHJ5IHJlbmRlcmluZyBpbnRvIGEgY29udGFpbmVyIGVsZW1lbnQgY3JlYXRlZCAn
ICsgJ2ZvciB5b3VyIGFwcC4nKSA6IHZvaWQgMDtcblxuICAgIHZhciBuZXh0V3JhcHBlZEVsZW1l
bnQgPSBSZWFjdC5jcmVhdGVFbGVtZW50KFRvcExldmVsV3JhcHBlciwge1xuICAgICAgY2hpbGQ6
IG5leHRFbGVtZW50XG4gICAgfSk7XG5cbiAgICB2YXIgbmV4dENvbnRleHQ7XG4gICAgaWYgKHBh
cmVudENvbXBvbmVudCkge1xuICAgICAgdmFyIHBhcmVudEluc3QgPSBSZWFjdEluc3RhbmNlTWFw
LmdldChwYXJlbnRDb21wb25lbnQpO1xuICAgICAgbmV4dENvbnRleHQgPSBwYXJlbnRJbnN0Ll9w
cm9jZXNzQ2hpbGRDb250ZXh0KHBhcmVudEluc3QuX2NvbnRleHQpO1xuICAgIH0gZWxzZSB7XG4g
ICAgICBuZXh0Q29udGV4dCA9IGVtcHR5T2JqZWN0O1xuICAgIH1cblxuICAgIHZhciBwcmV2Q29t
cG9uZW50ID0gZ2V0VG9wTGV2ZWxXcmFwcGVySW5Db250YWluZXIoY29udGFpbmVyKTtcblxuICAg
IGlmIChwcmV2Q29tcG9uZW50KSB7XG4gICAgICB2YXIgcHJldldyYXBwZWRFbGVtZW50ID0gcHJl
dkNvbXBvbmVudC5fY3VycmVudEVsZW1lbnQ7XG4gICAgICB2YXIgcHJldkVsZW1lbnQgPSBwcmV2
V3JhcHBlZEVsZW1lbnQucHJvcHMuY2hpbGQ7XG4gICAgICBpZiAoc2hvdWxkVXBkYXRlUmVhY3RD
b21wb25lbnQocHJldkVsZW1lbnQsIG5leHRFbGVtZW50KSkge1xuICAgICAgICB2YXIgcHVibGlj
SW5zdCA9IHByZXZDb21wb25lbnQuX3JlbmRlcmVkQ29tcG9uZW50LmdldFB1YmxpY0luc3RhbmNl
KCk7XG4gICAgICAgIHZhciB1cGRhdGVkQ2FsbGJhY2sgPSBjYWxsYmFjayAmJiBmdW5jdGlvbiAo
KSB7XG4gICAgICAgICAgY2FsbGJhY2suY2FsbChwdWJsaWNJbnN0KTtcbiAgICAgICAgfTtcbiAg
ICAgICAgUmVhY3RNb3VudC5fdXBkYXRlUm9vdENvbXBvbmVudChwcmV2Q29tcG9uZW50LCBuZXh0
V3JhcHBlZEVsZW1lbnQsIG5leHRDb250ZXh0LCBjb250YWluZXIsIHVwZGF0ZWRDYWxsYmFjayk7
XG4gICAgICAgIHJldHVybiBwdWJsaWNJbnN0O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgUmVh
Y3RNb3VudC51bm1vdW50Q29tcG9uZW50QXROb2RlKGNvbnRhaW5lcik7XG4gICAgICB9XG4gICAg
fVxuXG4gICAgdmFyIHJlYWN0Um9vdEVsZW1lbnQgPSBnZXRSZWFjdFJvb3RFbGVtZW50SW5Db250
YWluZXIoY29udGFpbmVyKTtcbiAgICB2YXIgY29udGFpbmVySGFzUmVhY3RNYXJrdXAgPSByZWFj
dFJvb3RFbGVtZW50ICYmICEhaW50ZXJuYWxHZXRJRChyZWFjdFJvb3RFbGVtZW50KTtcbiAgICB2
YXIgY29udGFpbmVySGFzTm9uUm9vdFJlYWN0Q2hpbGQgPSBoYXNOb25Sb290UmVhY3RDaGlsZChj
b250YWluZXIpO1xuXG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlv
bicpIHtcbiAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJu
aW5nKCFjb250YWluZXJIYXNOb25Sb290UmVhY3RDaGlsZCwgJ3JlbmRlciguLi4pOiBSZXBsYWNp
bmcgUmVhY3QtcmVuZGVyZWQgY2hpbGRyZW4gd2l0aCBhIG5ldyByb290ICcgKyAnY29tcG9uZW50
LiBJZiB5b3UgaW50ZW5kZWQgdG8gdXBkYXRlIHRoZSBjaGlsZHJlbiBvZiB0aGlzIG5vZGUsICcg
KyAneW91IHNob3VsZCBpbnN0ZWFkIGhhdmUgdGhlIGV4aXN0aW5nIGNoaWxkcmVuIHVwZGF0ZSB0
aGVpciBzdGF0ZSAnICsgJ2FuZCByZW5kZXIgdGhlIG5ldyBjb21wb25lbnRzIGluc3RlYWQgb2Yg
Y2FsbGluZyBSZWFjdERPTS5yZW5kZXIuJykgOiB2b2lkIDA7XG5cbiAgICAgIGlmICghY29udGFp
bmVySGFzUmVhY3RNYXJrdXAgfHwgcmVhY3RSb290RWxlbWVudC5uZXh0U2libGluZykge1xuICAg
ICAgICB2YXIgcm9vdEVsZW1lbnRTaWJsaW5nID0gcmVhY3RSb290RWxlbWVudDtcbiAgICAgICAg
d2hpbGUgKHJvb3RFbGVtZW50U2libGluZykge1xuICAgICAgICAgIGlmIChpbnRlcm5hbEdldElE
KHJvb3RFbGVtZW50U2libGluZykpIHtcbiAgICAgICAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5W
ICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAncmVuZGVyKCk6IFRhcmdldCBub2Rl
IGhhcyBtYXJrdXAgcmVuZGVyZWQgYnkgUmVhY3QsIGJ1dCB0aGVyZSAnICsgJ2FyZSB1bnJlbGF0
ZWQgbm9kZXMgYXMgd2VsbC4gVGhpcyBpcyBtb3N0IGNvbW1vbmx5IGNhdXNlZCBieSAnICsgJ3do
aXRlLXNwYWNlIGluc2VydGVkIGFyb3VuZCBzZXJ2ZXItcmVuZGVyZWQgbWFya3VwLicpIDogdm9p
ZCAwO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJvb3RFbGVt
ZW50U2libGluZyA9IHJvb3RFbGVtZW50U2libGluZy5uZXh0U2libGluZztcbiAgICAgICAgfVxu
ICAgICAgfVxuICAgIH1cblxuICAgIHZhciBzaG91bGRSZXVzZU1hcmt1cCA9IGNvbnRhaW5lckhh
c1JlYWN0TWFya3VwICYmICFwcmV2Q29tcG9uZW50ICYmICFjb250YWluZXJIYXNOb25Sb290UmVh
Y3RDaGlsZDtcbiAgICB2YXIgY29tcG9uZW50ID0gUmVhY3RNb3VudC5fcmVuZGVyTmV3Um9vdENv
bXBvbmVudChuZXh0V3JhcHBlZEVsZW1lbnQsIGNvbnRhaW5lciwgc2hvdWxkUmV1c2VNYXJrdXAs
IG5leHRDb250ZXh0KS5fcmVuZGVyZWRDb21wb25lbnQuZ2V0UHVibGljSW5zdGFuY2UoKTtcbiAg
ICBpZiAoY2FsbGJhY2spIHtcbiAgICAgIGNhbGxiYWNrLmNhbGwoY29tcG9uZW50KTtcbiAgICB9
XG4gICAgcmV0dXJuIGNvbXBvbmVudDtcbiAgfSxcblxuICAvKipcbiAgICogUmVuZGVycyBhIFJl
YWN0IGNvbXBvbmVudCBpbnRvIHRoZSBET00gaW4gdGhlIHN1cHBsaWVkIGBjb250YWluZXJgLlxu
ICAgKiBTZWUgaHR0cHM6Ly9mYWNlYm9vay5naXRodWIuaW8vcmVhY3QvZG9jcy90b3AtbGV2ZWwt
YXBpLmh0bWwjcmVhY3Rkb20ucmVuZGVyXG4gICAqXG4gICAqIElmIHRoZSBSZWFjdCBjb21wb25l
bnQgd2FzIHByZXZpb3VzbHkgcmVuZGVyZWQgaW50byBgY29udGFpbmVyYCwgdGhpcyB3aWxsXG4g
ICAqIHBlcmZvcm0gYW4gdXBkYXRlIG9uIGl0IGFuZCBvbmx5IG11dGF0ZSB0aGUgRE9NIGFzIG5l
Y2Vzc2FyeSB0byByZWZsZWN0IHRoZVxuICAgKiBsYXRlc3QgUmVhY3QgY29tcG9uZW50LlxuICAg
KlxuICAgKiBAcGFyYW0ge1JlYWN0RWxlbWVudH0gbmV4dEVsZW1lbnQgQ29tcG9uZW50IGVsZW1l
bnQgdG8gcmVuZGVyLlxuICAgKiBAcGFyYW0ge0RPTUVsZW1lbnR9IGNvbnRhaW5lciBET00gZWxl
bWVudCB0byByZW5kZXIgaW50by5cbiAgICogQHBhcmFtIHs/ZnVuY3Rpb259IGNhbGxiYWNrIGZ1
bmN0aW9uIHRyaWdnZXJlZCBvbiBjb21wbGV0aW9uXG4gICAqIEByZXR1cm4ge1JlYWN0Q29tcG9u
ZW50fSBDb21wb25lbnQgaW5zdGFuY2UgcmVuZGVyZWQgaW4gYGNvbnRhaW5lcmAuXG4gICAqL1xu
ICByZW5kZXI6IGZ1bmN0aW9uIChuZXh0RWxlbWVudCwgY29udGFpbmVyLCBjYWxsYmFjaykge1xu
ICAgIHJldHVybiBSZWFjdE1vdW50Ll9yZW5kZXJTdWJ0cmVlSW50b0NvbnRhaW5lcihudWxsLCBu
ZXh0RWxlbWVudCwgY29udGFpbmVyLCBjYWxsYmFjayk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIFVu
bW91bnRzIGFuZCBkZXN0cm95cyB0aGUgUmVhY3QgY29tcG9uZW50IHJlbmRlcmVkIGluIHRoZSBg
Y29udGFpbmVyYC5cbiAgICogU2VlIGh0dHBzOi8vZmFjZWJvb2suZ2l0aHViLmlvL3JlYWN0L2Rv
Y3MvdG9wLWxldmVsLWFwaS5odG1sI3JlYWN0ZG9tLnVubW91bnRjb21wb25lbnRhdG5vZGVcbiAg
ICpcbiAgICogQHBhcmFtIHtET01FbGVtZW50fSBjb250YWluZXIgRE9NIGVsZW1lbnQgY29udGFp
bmluZyBhIFJlYWN0IGNvbXBvbmVudC5cbiAgICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBpZiBh
IGNvbXBvbmVudCB3YXMgZm91bmQgaW4gYW5kIHVubW91bnRlZCBmcm9tXG4gICAqICAgICAgICAg
ICAgICAgICAgIGBjb250YWluZXJgXG4gICAqL1xuICB1bm1vdW50Q29tcG9uZW50QXROb2RlOiBm
dW5jdGlvbiAoY29udGFpbmVyKSB7XG4gICAgLy8gVmFyaW91cyBwYXJ0cyBvZiBvdXIgY29kZSAo
c3VjaCBhcyBSZWFjdENvbXBvc2l0ZUNvbXBvbmVudCdzXG4gICAgLy8gX3JlbmRlclZhbGlkYXRl
ZENvbXBvbmVudCkgYXNzdW1lIHRoYXQgY2FsbHMgdG8gcmVuZGVyIGFyZW4ndCBuZXN0ZWQ7XG4g
ICAgLy8gdmVyaWZ5IHRoYXQgdGhhdCdzIHRoZSBjYXNlLiAoU3RyaWN0bHkgc3BlYWtpbmcsIHVu
bW91bnRpbmcgd29uJ3QgY2F1c2UgYVxuICAgIC8vIHJlbmRlciBidXQgd2Ugc3RpbGwgZG9uJ3Qg
ZXhwZWN0IHRvIGJlIGluIGEgcmVuZGVyIGNhbGwgaGVyZS4pXG4gICAgcHJvY2Vzcy5lbnYuTk9E
RV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoUmVhY3RDdXJyZW50T3duZXIuY3VycmVu
dCA9PSBudWxsLCAndW5tb3VudENvbXBvbmVudEF0Tm9kZSgpOiBSZW5kZXIgbWV0aG9kcyBzaG91
bGQgYmUgYSBwdXJlIGZ1bmN0aW9uICcgKyAnb2YgcHJvcHMgYW5kIHN0YXRlOyB0cmlnZ2VyaW5n
IG5lc3RlZCBjb21wb25lbnQgdXBkYXRlcyBmcm9tIHJlbmRlciAnICsgJ2lzIG5vdCBhbGxvd2Vk
LiBJZiBuZWNlc3NhcnksIHRyaWdnZXIgbmVzdGVkIHVwZGF0ZXMgaW4gJyArICdjb21wb25lbnRE
aWRVcGRhdGUuIENoZWNrIHRoZSByZW5kZXIgbWV0aG9kIG9mICVzLicsIFJlYWN0Q3VycmVudE93
bmVyLmN1cnJlbnQgJiYgUmVhY3RDdXJyZW50T3duZXIuY3VycmVudC5nZXROYW1lKCkgfHwgJ1Jl
YWN0Q29tcG9zaXRlQ29tcG9uZW50JykgOiB2b2lkIDA7XG5cbiAgICAhaXNWYWxpZENvbnRhaW5l
cihjb250YWluZXIpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGlu
dmFyaWFudChmYWxzZSwgJ3VubW91bnRDb21wb25lbnRBdE5vZGUoLi4uKTogVGFyZ2V0IGNvbnRh
aW5lciBpcyBub3QgYSBET00gZWxlbWVudC4nKSA6IF9wcm9kSW52YXJpYW50KCc0MCcpIDogdm9p
ZCAwO1xuXG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtc
biAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKCFu
b2RlSXNSZW5kZXJlZEJ5T3RoZXJJbnN0YW5jZShjb250YWluZXIpLCBcInVubW91bnRDb21wb25l
bnRBdE5vZGUoKTogVGhlIG5vZGUgeW91J3JlIGF0dGVtcHRpbmcgdG8gdW5tb3VudCBcIiArICd3
YXMgcmVuZGVyZWQgYnkgYW5vdGhlciBjb3B5IG9mIFJlYWN0LicpIDogdm9pZCAwO1xuICAgIH1c
blxuICAgIHZhciBwcmV2Q29tcG9uZW50ID0gZ2V0VG9wTGV2ZWxXcmFwcGVySW5Db250YWluZXIo
Y29udGFpbmVyKTtcbiAgICBpZiAoIXByZXZDb21wb25lbnQpIHtcbiAgICAgIC8vIENoZWNrIGlm
IHRoZSBub2RlIGJlaW5nIHVubW91bnRlZCB3YXMgcmVuZGVyZWQgYnkgUmVhY3QsIGJ1dCBpc24n
dCBhXG4gICAgICAvLyByb290IG5vZGUuXG4gICAgICB2YXIgY29udGFpbmVySGFzTm9uUm9vdFJl
YWN0Q2hpbGQgPSBoYXNOb25Sb290UmVhY3RDaGlsZChjb250YWluZXIpO1xuXG4gICAgICAvLyBD
aGVjayBpZiB0aGUgY29udGFpbmVyIGl0c2VsZiBpcyBhIFJlYWN0IHJvb3Qgbm9kZS5cbiAgICAg
IHZhciBpc0NvbnRhaW5lclJlYWN0Um9vdCA9IGNvbnRhaW5lci5ub2RlVHlwZSA9PT0gMSAmJiBj
b250YWluZXIuaGFzQXR0cmlidXRlKFJPT1RfQVRUUl9OQU1FKTtcblxuICAgICAgaWYgKHByb2Nl
c3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgcHJvY2Vzcy5lbnYu
Tk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoIWNvbnRhaW5lckhhc05vblJvb3RS
ZWFjdENoaWxkLCBcInVubW91bnRDb21wb25lbnRBdE5vZGUoKTogVGhlIG5vZGUgeW91J3JlIGF0
dGVtcHRpbmcgdG8gdW5tb3VudCBcIiArICd3YXMgcmVuZGVyZWQgYnkgUmVhY3QgYW5kIGlzIG5v
dCBhIHRvcC1sZXZlbCBjb250YWluZXIuICVzJywgaXNDb250YWluZXJSZWFjdFJvb3QgPyAnWW91
IG1heSBoYXZlIGFjY2lkZW50YWxseSBwYXNzZWQgaW4gYSBSZWFjdCByb290IG5vZGUgaW5zdGVh
ZCAnICsgJ29mIGl0cyBjb250YWluZXIuJyA6ICdJbnN0ZWFkLCBoYXZlIHRoZSBwYXJlbnQgY29t
cG9uZW50IHVwZGF0ZSBpdHMgc3RhdGUgYW5kICcgKyAncmVyZW5kZXIgaW4gb3JkZXIgdG8gcmVt
b3ZlIHRoaXMgY29tcG9uZW50LicpIDogdm9pZCAwO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4g
ZmFsc2U7XG4gICAgfVxuICAgIGRlbGV0ZSBpbnN0YW5jZXNCeVJlYWN0Um9vdElEW3ByZXZDb21w
b25lbnQuX2luc3RhbmNlLnJvb3RJRF07XG4gICAgUmVhY3RVcGRhdGVzLmJhdGNoZWRVcGRhdGVz
KHVubW91bnRDb21wb25lbnRGcm9tTm9kZSwgcHJldkNvbXBvbmVudCwgY29udGFpbmVyLCBmYWxz
ZSk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0sXG5cbiAgX21vdW50SW1hZ2VJbnRvTm9kZTogZnVu
Y3Rpb24gKG1hcmt1cCwgY29udGFpbmVyLCBpbnN0YW5jZSwgc2hvdWxkUmV1c2VNYXJrdXAsIHRy
YW5zYWN0aW9uKSB7XG4gICAgIWlzVmFsaWRDb250YWluZXIoY29udGFpbmVyKSA/IHByb2Nlc3Mu
ZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdtb3VudENv
bXBvbmVudEludG9Ob2RlKC4uLik6IFRhcmdldCBjb250YWluZXIgaXMgbm90IHZhbGlkLicpIDog
X3Byb2RJbnZhcmlhbnQoJzQxJykgOiB2b2lkIDA7XG5cbiAgICBpZiAoc2hvdWxkUmV1c2VNYXJr
dXApIHtcbiAgICAgIHZhciByb290RWxlbWVudCA9IGdldFJlYWN0Um9vdEVsZW1lbnRJbkNvbnRh
aW5lcihjb250YWluZXIpO1xuICAgICAgaWYgKFJlYWN0TWFya3VwQ2hlY2tzdW0uY2FuUmV1c2VN
YXJrdXAobWFya3VwLCByb290RWxlbWVudCkpIHtcbiAgICAgICAgUmVhY3RET01Db21wb25lbnRU
cmVlLnByZWNhY2hlTm9kZShpbnN0YW5jZSwgcm9vdEVsZW1lbnQpO1xuICAgICAgICByZXR1cm47
XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgY2hlY2tzdW0gPSByb290RWxlbWVudC5nZXRB
dHRyaWJ1dGUoUmVhY3RNYXJrdXBDaGVja3N1bS5DSEVDS1NVTV9BVFRSX05BTUUpO1xuICAgICAg
ICByb290RWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoUmVhY3RNYXJrdXBDaGVja3N1bS5DSEVDS1NV
TV9BVFRSX05BTUUpO1xuXG4gICAgICAgIHZhciByb290TWFya3VwID0gcm9vdEVsZW1lbnQub3V0
ZXJIVE1MO1xuICAgICAgICByb290RWxlbWVudC5zZXRBdHRyaWJ1dGUoUmVhY3RNYXJrdXBDaGVj
a3N1bS5DSEVDS1NVTV9BVFRSX05BTUUsIGNoZWNrc3VtKTtcblxuICAgICAgICB2YXIgbm9ybWFs
aXplZE1hcmt1cCA9IG1hcmt1cDtcbiAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9
PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICAvLyBiZWNhdXNlIHJvb3RNYXJrdXAgaXMgcmV0
cmlldmVkIGZyb20gdGhlIERPTSwgdmFyaW91cyBub3JtYWxpemF0aW9uc1xuICAgICAgICAgIC8v
IHdpbGwgaGF2ZSBvY2N1cnJlZCB3aGljaCB3aWxsIG5vdCBiZSBwcmVzZW50IGluIGBtYXJrdXBg
LiBIZXJlLFxuICAgICAgICAgIC8vIGluc2VydCBtYXJrdXAgaW50byBhIDxkaXY+IG9yIDxpZnJh
bWU+IGRlcGVuZGluZyBvbiB0aGUgY29udGFpbmVyXG4gICAgICAgICAgLy8gdHlwZSB0byBwZXJm
b3JtIHRoZSBzYW1lIG5vcm1hbGl6YXRpb25zIGJlZm9yZSBjb21wYXJpbmcuXG4gICAgICAgICAg
dmFyIG5vcm1hbGl6ZXI7XG4gICAgICAgICAgaWYgKGNvbnRhaW5lci5ub2RlVHlwZSA9PT0gRUxF
TUVOVF9OT0RFX1RZUEUpIHtcbiAgICAgICAgICAgIG5vcm1hbGl6ZXIgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCdkaXYnKTtcbiAgICAgICAgICAgIG5vcm1hbGl6ZXIuaW5uZXJIVE1MID0gbWFy
a3VwO1xuICAgICAgICAgICAgbm9ybWFsaXplZE1hcmt1cCA9IG5vcm1hbGl6ZXIuaW5uZXJIVE1M
O1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBub3JtYWxpemVyID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgnaWZyYW1lJyk7XG4gICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVu
ZENoaWxkKG5vcm1hbGl6ZXIpO1xuICAgICAgICAgICAgbm9ybWFsaXplci5jb250ZW50RG9jdW1l
bnQud3JpdGUobWFya3VwKTtcbiAgICAgICAgICAgIG5vcm1hbGl6ZWRNYXJrdXAgPSBub3JtYWxp
emVyLmNvbnRlbnREb2N1bWVudC5kb2N1bWVudEVsZW1lbnQub3V0ZXJIVE1MO1xuICAgICAgICAg
ICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChub3JtYWxpemVyKTtcbiAgICAgICAgICB9XG4g
ICAgICAgIH1cblxuICAgICAgICB2YXIgZGlmZkluZGV4ID0gZmlyc3REaWZmZXJlbmNlSW5kZXgo
bm9ybWFsaXplZE1hcmt1cCwgcm9vdE1hcmt1cCk7XG4gICAgICAgIHZhciBkaWZmZXJlbmNlID0g
JyAoY2xpZW50KSAnICsgbm9ybWFsaXplZE1hcmt1cC5zdWJzdHJpbmcoZGlmZkluZGV4IC0gMjAs
IGRpZmZJbmRleCArIDIwKSArICdcXG4gKHNlcnZlcikgJyArIHJvb3RNYXJrdXAuc3Vic3RyaW5n
KGRpZmZJbmRleCAtIDIwLCBkaWZmSW5kZXggKyAyMCk7XG5cbiAgICAgICAgIShjb250YWluZXIu
bm9kZVR5cGUgIT09IERPQ19OT0RFX1RZUEUpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdw
cm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ1lvdVxcJ3JlIHRyeWluZyB0byByZW5kZXIg
YSBjb21wb25lbnQgdG8gdGhlIGRvY3VtZW50IHVzaW5nIHNlcnZlciByZW5kZXJpbmcgYnV0IHRo
ZSBjaGVja3N1bSB3YXMgaW52YWxpZC4gVGhpcyB1c3VhbGx5IG1lYW5zIHlvdSByZW5kZXJlZCBh
IGRpZmZlcmVudCBjb21wb25lbnQgdHlwZSBvciBwcm9wcyBvbiB0aGUgY2xpZW50IGZyb20gdGhl
IG9uZSBvbiB0aGUgc2VydmVyLCBvciB5b3VyIHJlbmRlcigpIG1ldGhvZHMgYXJlIGltcHVyZS4g
UmVhY3QgY2Fubm90IGhhbmRsZSB0aGlzIGNhc2UgZHVlIHRvIGNyb3NzLWJyb3dzZXIgcXVpcmtz
IGJ5IHJlbmRlcmluZyBhdCB0aGUgZG9jdW1lbnQgcm9vdC4gWW91IHNob3VsZCBsb29rIGZvciBl
bnZpcm9ubWVudCBkZXBlbmRlbnQgY29kZSBpbiB5b3VyIGNvbXBvbmVudHMgYW5kIGVuc3VyZSB0
aGUgcHJvcHMgYXJlIHRoZSBzYW1lIGNsaWVudCBhbmQgc2VydmVyIHNpZGU6XFxuJXMnLCBkaWZm
ZXJlbmNlKSA6IF9wcm9kSW52YXJpYW50KCc0MicsIGRpZmZlcmVuY2UpIDogdm9pZCAwO1xuXG4g
ICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAg
ICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFs
c2UsICdSZWFjdCBhdHRlbXB0ZWQgdG8gcmV1c2UgbWFya3VwIGluIGEgY29udGFpbmVyIGJ1dCB0
aGUgJyArICdjaGVja3N1bSB3YXMgaW52YWxpZC4gVGhpcyBnZW5lcmFsbHkgbWVhbnMgdGhhdCB5
b3UgYXJlICcgKyAndXNpbmcgc2VydmVyIHJlbmRlcmluZyBhbmQgdGhlIG1hcmt1cCBnZW5lcmF0
ZWQgb24gdGhlICcgKyAnc2VydmVyIHdhcyBub3Qgd2hhdCB0aGUgY2xpZW50IHdhcyBleHBlY3Rp
bmcuIFJlYWN0IGluamVjdGVkICcgKyAnbmV3IG1hcmt1cCB0byBjb21wZW5zYXRlIHdoaWNoIHdv
cmtzIGJ1dCB5b3UgaGF2ZSBsb3N0IG1hbnkgJyArICdvZiB0aGUgYmVuZWZpdHMgb2Ygc2VydmVy
IHJlbmRlcmluZy4gSW5zdGVhZCwgZmlndXJlIG91dCAnICsgJ3doeSB0aGUgbWFya3VwIGJlaW5n
IGdlbmVyYXRlZCBpcyBkaWZmZXJlbnQgb24gdGhlIGNsaWVudCAnICsgJ29yIHNlcnZlcjpcXG4l
cycsIGRpZmZlcmVuY2UpIDogdm9pZCAwO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4g
ICAgIShjb250YWluZXIubm9kZVR5cGUgIT09IERPQ19OT0RFX1RZUEUpID8gcHJvY2Vzcy5lbnYu
Tk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ1lvdVxcJ3JlIHRy
eWluZyB0byByZW5kZXIgYSBjb21wb25lbnQgdG8gdGhlIGRvY3VtZW50IGJ1dCB5b3UgZGlkblxc
J3QgdXNlIHNlcnZlciByZW5kZXJpbmcuIFdlIGNhblxcJ3QgZG8gdGhpcyB3aXRob3V0IHVzaW5n
IHNlcnZlciByZW5kZXJpbmcgZHVlIHRvIGNyb3NzLWJyb3dzZXIgcXVpcmtzLiBTZWUgUmVhY3RE
T01TZXJ2ZXIucmVuZGVyVG9TdHJpbmcoKSBmb3Igc2VydmVyIHJlbmRlcmluZy4nKSA6IF9wcm9k
SW52YXJpYW50KCc0MycpIDogdm9pZCAwO1xuXG4gICAgaWYgKHRyYW5zYWN0aW9uLnVzZUNyZWF0
ZUVsZW1lbnQpIHtcbiAgICAgIHdoaWxlIChjb250YWluZXIubGFzdENoaWxkKSB7XG4gICAgICAg
IGNvbnRhaW5lci5yZW1vdmVDaGlsZChjb250YWluZXIubGFzdENoaWxkKTtcbiAgICAgIH1cbiAg
ICAgIERPTUxhenlUcmVlLmluc2VydFRyZWVCZWZvcmUoY29udGFpbmVyLCBtYXJrdXAsIG51bGwp
O1xuICAgIH0gZWxzZSB7XG4gICAgICBzZXRJbm5lckhUTUwoY29udGFpbmVyLCBtYXJrdXApO1xu
ICAgICAgUmVhY3RET01Db21wb25lbnRUcmVlLnByZWNhY2hlTm9kZShpbnN0YW5jZSwgY29udGFp
bmVyLmZpcnN0Q2hpbGQpO1xuICAgIH1cblxuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAh
PT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICB2YXIgaG9zdE5vZGUgPSBSZWFjdERPTUNvbXBvbmVu
dFRyZWUuZ2V0SW5zdGFuY2VGcm9tTm9kZShjb250YWluZXIuZmlyc3RDaGlsZCk7XG4gICAgICBp
ZiAoaG9zdE5vZGUuX2RlYnVnSUQgIT09IDApIHtcbiAgICAgICAgUmVhY3RJbnN0cnVtZW50YXRp
b24uZGVidWdUb29sLm9uSG9zdE9wZXJhdGlvbih7XG4gICAgICAgICAgaW5zdGFuY2VJRDogaG9z
dE5vZGUuX2RlYnVnSUQsXG4gICAgICAgICAgdHlwZTogJ21vdW50JyxcbiAgICAgICAgICBwYXls
b2FkOiBtYXJrdXAudG9TdHJpbmcoKVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1c
bn07XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RNb3VudDtcblxuXG4vKioqKioqKioqKioqKioq
KipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFjdC1kb20vbGliL1JlYWN0TW91bnQu
anNcbiAqKiBtb2R1bGUgaWQgPSA2N1xuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoq
XG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0
cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRo
ZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUg
cm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxu
ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0
aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIg
X3Byb2RJbnZhcmlhbnQgPSByZXF1aXJlKCcuL3JlYWN0UHJvZEludmFyaWFudCcpO1xuXG52YXIg
UmVhY3QgPSByZXF1aXJlKCdyZWFjdC9saWIvUmVhY3QnKTtcblxudmFyIGludmFyaWFudCA9IHJl
cXVpcmUoJ2ZianMvbGliL2ludmFyaWFudCcpO1xuXG52YXIgUmVhY3ROb2RlVHlwZXMgPSB7XG4g
IEhPU1Q6IDAsXG4gIENPTVBPU0lURTogMSxcbiAgRU1QVFk6IDIsXG5cbiAgZ2V0VHlwZTogZnVu
Y3Rpb24gKG5vZGUpIHtcbiAgICBpZiAobm9kZSA9PT0gbnVsbCB8fCBub2RlID09PSBmYWxzZSkg
e1xuICAgICAgcmV0dXJuIFJlYWN0Tm9kZVR5cGVzLkVNUFRZO1xuICAgIH0gZWxzZSBpZiAoUmVh
Y3QuaXNWYWxpZEVsZW1lbnQobm9kZSkpIHtcbiAgICAgIGlmICh0eXBlb2Ygbm9kZS50eXBlID09
PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHJldHVybiBSZWFjdE5vZGVUeXBlcy5DT01QT1NJVEU7
XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gUmVhY3ROb2RlVHlwZXMuSE9TVDtcbiAg
ICAgIH1cbiAgICB9XG4gICAgIWZhbHNlID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9k
dWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ1VuZXhwZWN0ZWQgbm9kZTogJXMnLCBub2RlKSA6
IF9wcm9kSW52YXJpYW50KCcyNicsIG5vZGUpIDogdm9pZCAwO1xuICB9XG59O1xuXG5tb2R1bGUu
ZXhwb3J0cyA9IFJlYWN0Tm9kZVR5cGVzO1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdF
QlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0LWRvbS9saWIvUmVhY3ROb2RlVHlwZXMuanNcbiAq
KiBtb2R1bGUgaWQgPSA2OFxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBD
b3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNl
cnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qt
c3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBk
aXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2Yg
cGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2Ft
ZSBkaXJlY3RvcnkuXG4gKlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIFZpZXdwb3J0TWV0
cmljcyA9IHtcbiAgY3VycmVudFNjcm9sbExlZnQ6IDAsXG5cbiAgY3VycmVudFNjcm9sbFRvcDog
MCxcblxuICByZWZyZXNoU2Nyb2xsVmFsdWVzOiBmdW5jdGlvbiAoc2Nyb2xsUG9zaXRpb24pIHtc
biAgICBWaWV3cG9ydE1ldHJpY3MuY3VycmVudFNjcm9sbExlZnQgPSBzY3JvbGxQb3NpdGlvbi54
O1xuICAgIFZpZXdwb3J0TWV0cmljcy5jdXJyZW50U2Nyb2xsVG9wID0gc2Nyb2xsUG9zaXRpb24u
eTtcbiAgfVxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBWaWV3cG9ydE1ldHJpY3M7XG5cblxuLyoq
KioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3QtZG9tL2xp
Yi9WaWV3cG9ydE1ldHJpY3MuanNcbiAqKiBtb2R1bGUgaWQgPSA2OVxuICoqIG1vZHVsZSBjaHVu
a3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50LCBGYWNlYm9vaywg
SW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlz
IGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJ
Q0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4g
YWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhl
IFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogXG4gKi9cblxuJ3Vz
ZSBzdHJpY3QnO1xuXG52YXIgX3Byb2RJbnZhcmlhbnQgPSByZXF1aXJlKCcuL3JlYWN0UHJvZElu
dmFyaWFudCcpO1xuXG52YXIgaW52YXJpYW50ID0gcmVxdWlyZSgnZmJqcy9saWIvaW52YXJpYW50
Jyk7XG5cbi8qKlxuICogQWNjdW11bGF0ZXMgaXRlbXMgdGhhdCBtdXN0IG5vdCBiZSBudWxsIG9y
IHVuZGVmaW5lZCBpbnRvIHRoZSBmaXJzdCBvbmUuIFRoaXNcbiAqIGlzIHVzZWQgdG8gY29uc2Vy
dmUgbWVtb3J5IGJ5IGF2b2lkaW5nIGFycmF5IGFsbG9jYXRpb25zLCBhbmQgdGh1cyBzYWNyaWZp
Y2VzXG4gKiBBUEkgY2xlYW5uZXNzLiBTaW5jZSBgY3VycmVudGAgY2FuIGJlIG51bGwgYmVmb3Jl
IGJlaW5nIHBhc3NlZCBpbiBhbmQgbm90XG4gKiBudWxsIGFmdGVyIHRoaXMgZnVuY3Rpb24sIG1h
a2Ugc3VyZSB0byBhc3NpZ24gaXQgYmFjayB0byBgY3VycmVudGA6XG4gKlxuICogYGEgPSBhY2N1
bXVsYXRlSW50byhhLCBiKTtgXG4gKlxuICogVGhpcyBBUEkgc2hvdWxkIGJlIHNwYXJpbmdseSB1
c2VkLiBUcnkgYGFjY3VtdWxhdGVgIGZvciBzb21ldGhpbmcgY2xlYW5lci5cbiAqXG4gKiBAcmV0
dXJuIHsqfGFycmF5PCo+fSBBbiBhY2N1bXVsYXRpb24gb2YgaXRlbXMuXG4gKi9cblxuZnVuY3Rp
b24gYWNjdW11bGF0ZUludG8oY3VycmVudCwgbmV4dCkge1xuICAhKG5leHQgIT0gbnVsbCkgPyBw
cm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAn
YWNjdW11bGF0ZUludG8oLi4uKTogQWNjdW11bGF0ZWQgaXRlbXMgbXVzdCBub3QgYmUgbnVsbCBv
ciB1bmRlZmluZWQuJykgOiBfcHJvZEludmFyaWFudCgnMzAnKSA6IHZvaWQgMDtcblxuICBpZiAo
Y3VycmVudCA9PSBudWxsKSB7XG4gICAgcmV0dXJuIG5leHQ7XG4gIH1cblxuICAvLyBCb3RoIGFy
ZSBub3QgZW1wdHkuIFdhcm5pbmc6IE5ldmVyIGNhbGwgeC5jb25jYXQoeSkgd2hlbiB5b3UgYXJl
IG5vdFxuICAvLyBjZXJ0YWluIHRoYXQgeCBpcyBhbiBBcnJheSAoeCBjb3VsZCBiZSBhIHN0cmlu
ZyB3aXRoIGNvbmNhdCBtZXRob2QpLlxuICBpZiAoQXJyYXkuaXNBcnJheShjdXJyZW50KSkge1xu
ICAgIGlmIChBcnJheS5pc0FycmF5KG5leHQpKSB7XG4gICAgICBjdXJyZW50LnB1c2guYXBwbHko
Y3VycmVudCwgbmV4dCk7XG4gICAgICByZXR1cm4gY3VycmVudDtcbiAgICB9XG4gICAgY3VycmVu
dC5wdXNoKG5leHQpO1xuICAgIHJldHVybiBjdXJyZW50O1xuICB9XG5cbiAgaWYgKEFycmF5Lmlz
QXJyYXkobmV4dCkpIHtcbiAgICAvLyBBIGJpdCB0b28gZGFuZ2Vyb3VzIHRvIG11dGF0ZSBgbmV4
dGAuXG4gICAgcmV0dXJuIFtjdXJyZW50XS5jb25jYXQobmV4dCk7XG4gIH1cblxuICByZXR1cm4g
W2N1cnJlbnQsIG5leHRdO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGFjY3VtdWxhdGVJbnRvO1xu
XG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0
LWRvbS9saWIvYWNjdW11bGF0ZUludG8uanNcbiAqKiBtb2R1bGUgaWQgPSA3MFxuICoqIG1vZHVs
ZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNl
Ym9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBj
b2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVc
biAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJl
ZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQg
aW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogXG4gKi9c
blxuJ3VzZSBzdHJpY3QnO1xuXG4vKipcbiAqIEBwYXJhbSB7YXJyYXl9IGFyciBhbiBcImFjY3Vt
dWxhdGlvblwiIG9mIGl0ZW1zIHdoaWNoIGlzIGVpdGhlciBhbiBBcnJheSBvclxuICogYSBzaW5n
bGUgaXRlbS4gVXNlZnVsIHdoZW4gcGFpcmVkIHdpdGggdGhlIGBhY2N1bXVsYXRlYCBtb2R1bGUu
IFRoaXMgaXMgYVxuICogc2ltcGxlIHV0aWxpdHkgdGhhdCBhbGxvd3MgdXMgdG8gcmVhc29uIGFi
b3V0IGEgY29sbGVjdGlvbiBvZiBpdGVtcywgYnV0XG4gKiBoYW5kbGluZyB0aGUgY2FzZSB3aGVu
IHRoZXJlIGlzIGV4YWN0bHkgb25lIGl0ZW0gKGFuZCB3ZSBkbyBub3QgbmVlZCB0b1xuICogYWxs
b2NhdGUgYW4gYXJyYXkpLlxuICovXG5cbmZ1bmN0aW9uIGZvckVhY2hBY2N1bXVsYXRlZChhcnIs
IGNiLCBzY29wZSkge1xuICBpZiAoQXJyYXkuaXNBcnJheShhcnIpKSB7XG4gICAgYXJyLmZvckVh
Y2goY2IsIHNjb3BlKTtcbiAgfSBlbHNlIGlmIChhcnIpIHtcbiAgICBjYi5jYWxsKHNjb3BlLCBh
cnIpO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZm9yRWFjaEFjY3VtdWxhdGVkO1xuXG5c
bi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0LWRv
bS9saWIvZm9yRWFjaEFjY3VtdWxhdGVkLmpzXG4gKiogbW9kdWxlIGlkID0gNzFcbiAqKiBtb2R1
bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFj
ZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2Ug
Y29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhl
XG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRy
ZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5k
IGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4n
dXNlIHN0cmljdCc7XG5cbnZhciBSZWFjdE5vZGVUeXBlcyA9IHJlcXVpcmUoJy4vUmVhY3ROb2Rl
VHlwZXMnKTtcblxuZnVuY3Rpb24gZ2V0SG9zdENvbXBvbmVudEZyb21Db21wb3NpdGUoaW5zdCkg
e1xuICB2YXIgdHlwZTtcblxuICB3aGlsZSAoKHR5cGUgPSBpbnN0Ll9yZW5kZXJlZE5vZGVUeXBl
KSA9PT0gUmVhY3ROb2RlVHlwZXMuQ09NUE9TSVRFKSB7XG4gICAgaW5zdCA9IGluc3QuX3JlbmRl
cmVkQ29tcG9uZW50O1xuICB9XG5cbiAgaWYgKHR5cGUgPT09IFJlYWN0Tm9kZVR5cGVzLkhPU1Qp
IHtcbiAgICByZXR1cm4gaW5zdC5fcmVuZGVyZWRDb21wb25lbnQ7XG4gIH0gZWxzZSBpZiAodHlw
ZSA9PT0gUmVhY3ROb2RlVHlwZXMuRU1QVFkpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxu
XG5tb2R1bGUuZXhwb3J0cyA9IGdldEhvc3RDb21wb25lbnRGcm9tQ29tcG9zaXRlO1xuXG5cbi8q
KioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0LWRvbS9s
aWIvZ2V0SG9zdENvbXBvbmVudEZyb21Db21wb3NpdGUuanNcbiAqKiBtb2R1bGUgaWQgPSA3Mlxu
ICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVz
ZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlz
IHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3Vu
ZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBz
b3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4g
YmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxu
ICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIEV4ZWN1dGlvbkVudmlyb25tZW50ID0gcmVxdWly
ZSgnZmJqcy9saWIvRXhlY3V0aW9uRW52aXJvbm1lbnQnKTtcblxudmFyIGNvbnRlbnRLZXkgPSBu
dWxsO1xuXG4vKipcbiAqIEdldHMgdGhlIGtleSB1c2VkIHRvIGFjY2VzcyB0ZXh0IGNvbnRlbnQg
b24gYSBET00gbm9kZS5cbiAqXG4gKiBAcmV0dXJuIHs/c3RyaW5nfSBLZXkgdXNlZCB0byBhY2Nl
c3MgdGV4dCBjb250ZW50LlxuICogQGludGVybmFsXG4gKi9cbmZ1bmN0aW9uIGdldFRleHRDb250
ZW50QWNjZXNzb3IoKSB7XG4gIGlmICghY29udGVudEtleSAmJiBFeGVjdXRpb25FbnZpcm9ubWVu
dC5jYW5Vc2VET00pIHtcbiAgICAvLyBQcmVmZXIgdGV4dENvbnRlbnQgdG8gaW5uZXJUZXh0IGJl
Y2F1c2UgbWFueSBicm93c2VycyBzdXBwb3J0IGJvdGggYnV0XG4gICAgLy8gU1ZHIDx0ZXh0PiBl
bGVtZW50cyBkb24ndCBzdXBwb3J0IGlubmVyVGV4dCBldmVuIHdoZW4gPGRpdj4gZG9lcy5cbiAg
ICBjb250ZW50S2V5ID0gJ3RleHRDb250ZW50JyBpbiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQg
PyAndGV4dENvbnRlbnQnIDogJ2lubmVyVGV4dCc7XG4gIH1cbiAgcmV0dXJuIGNvbnRlbnRLZXk7
XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0VGV4dENvbnRlbnRBY2Nlc3NvcjtcblxuXG4vKioq
KioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFjdC1kb20vbGli
L2dldFRleHRDb250ZW50QWNjZXNzb3IuanNcbiAqKiBtb2R1bGUgaWQgPSA3M1xuICoqIG1vZHVs
ZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNl
Ym9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBj
b2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVc
biAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJl
ZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQg
aW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICovXG5cbid1
c2Ugc3RyaWN0JztcblxudmFyIFJlYWN0RE9NQ29tcG9uZW50VHJlZSA9IHJlcXVpcmUoJy4vUmVh
Y3RET01Db21wb25lbnRUcmVlJyk7XG5cbmZ1bmN0aW9uIGlzQ2hlY2thYmxlKGVsZW0pIHtcbiAg
dmFyIHR5cGUgPSBlbGVtLnR5cGU7XG4gIHZhciBub2RlTmFtZSA9IGVsZW0ubm9kZU5hbWU7XG4g
IHJldHVybiBub2RlTmFtZSAmJiBub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSAnaW5wdXQnICYm
ICh0eXBlID09PSAnY2hlY2tib3gnIHx8IHR5cGUgPT09ICdyYWRpbycpO1xufVxuXG5mdW5jdGlv
biBnZXRUcmFja2VyKGluc3QpIHtcbiAgcmV0dXJuIGluc3QuX3dyYXBwZXJTdGF0ZS52YWx1ZVRy
YWNrZXI7XG59XG5cbmZ1bmN0aW9uIGF0dGFjaFRyYWNrZXIoaW5zdCwgdHJhY2tlcikge1xuICBp
bnN0Ll93cmFwcGVyU3RhdGUudmFsdWVUcmFja2VyID0gdHJhY2tlcjtcbn1cblxuZnVuY3Rpb24g
ZGV0YWNoVHJhY2tlcihpbnN0KSB7XG4gIGRlbGV0ZSBpbnN0Ll93cmFwcGVyU3RhdGUudmFsdWVU
cmFja2VyO1xufVxuXG5mdW5jdGlvbiBnZXRWYWx1ZUZyb21Ob2RlKG5vZGUpIHtcbiAgdmFyIHZh
bHVlO1xuICBpZiAobm9kZSkge1xuICAgIHZhbHVlID0gaXNDaGVja2FibGUobm9kZSkgPyAnJyAr
IG5vZGUuY2hlY2tlZCA6IG5vZGUudmFsdWU7XG4gIH1cbiAgcmV0dXJuIHZhbHVlO1xufVxuXG52
YXIgaW5wdXRWYWx1ZVRyYWNraW5nID0ge1xuICAvLyBleHBvc2VkIGZvciB0ZXN0aW5nXG4gIF9n
ZXRUcmFja2VyRnJvbU5vZGU6IGZ1bmN0aW9uIChub2RlKSB7XG4gICAgcmV0dXJuIGdldFRyYWNr
ZXIoUmVhY3RET01Db21wb25lbnRUcmVlLmdldEluc3RhbmNlRnJvbU5vZGUobm9kZSkpO1xuICB9
LFxuXG5cbiAgdHJhY2s6IGZ1bmN0aW9uIChpbnN0KSB7XG4gICAgaWYgKGdldFRyYWNrZXIoaW5z
dCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgbm9kZSA9IFJlYWN0RE9NQ29t
cG9uZW50VHJlZS5nZXROb2RlRnJvbUluc3RhbmNlKGluc3QpO1xuICAgIHZhciB2YWx1ZUZpZWxk
ID0gaXNDaGVja2FibGUobm9kZSkgPyAnY2hlY2tlZCcgOiAndmFsdWUnO1xuICAgIHZhciBkZXNj
cmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihub2RlLmNvbnN0cnVjdG9y
LnByb3RvdHlwZSwgdmFsdWVGaWVsZCk7XG5cbiAgICB2YXIgY3VycmVudFZhbHVlID0gJycgKyBu
b2RlW3ZhbHVlRmllbGRdO1xuXG4gICAgLy8gaWYgc29tZW9uZSBoYXMgYWxyZWFkeSBkZWZpbmVk
IGEgdmFsdWUgb3IgU2FmYXJpLCB0aGVuIGJhaWxcbiAgICAvLyBhbmQgZG9uJ3QgdHJhY2sgdmFs
dWUgd2lsbCBjYXVzZSBvdmVyIHJlcG9ydGluZyBvZiBjaGFuZ2VzLFxuICAgIC8vIGJ1dCBpdCdz
IGJldHRlciB0aGVuIGEgaGFyZCBmYWlsdXJlXG4gICAgLy8gKG5lZWRlZCBmb3IgY2VydGFpbiB0
ZXN0cyB0aGF0IHNweU9uIGlucHV0IHZhbHVlcyBhbmQgU2FmYXJpKVxuICAgIGlmIChub2RlLmhh
c093blByb3BlcnR5KHZhbHVlRmllbGQpIHx8IHR5cGVvZiBkZXNjcmlwdG9yLmdldCAhPT0gJ2Z1
bmN0aW9uJyB8fCB0eXBlb2YgZGVzY3JpcHRvci5zZXQgIT09ICdmdW5jdGlvbicpIHtcbiAgICAg
IHJldHVybjtcbiAgICB9XG5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkobm9kZSwgdmFsdWVG
aWVsZCwge1xuICAgICAgZW51bWVyYWJsZTogZGVzY3JpcHRvci5lbnVtZXJhYmxlLFxuICAgICAg
Y29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJl
dHVybiBkZXNjcmlwdG9yLmdldC5jYWxsKHRoaXMpO1xuICAgICAgfSxcbiAgICAgIHNldDogZnVu
Y3Rpb24gKHZhbHVlKSB7XG4gICAgICAgIGN1cnJlbnRWYWx1ZSA9ICcnICsgdmFsdWU7XG4gICAg
ICAgIGRlc2NyaXB0b3Iuc2V0LmNhbGwodGhpcywgdmFsdWUpO1xuICAgICAgfVxuICAgIH0pO1xu
XG4gICAgYXR0YWNoVHJhY2tlcihpbnN0LCB7XG4gICAgICBnZXRWYWx1ZTogZnVuY3Rpb24gKCkg
e1xuICAgICAgICByZXR1cm4gY3VycmVudFZhbHVlO1xuICAgICAgfSxcbiAgICAgIHNldFZhbHVl
OiBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgY3VycmVudFZhbHVlID0gJycgKyB2YWx1ZTtc
biAgICAgIH0sXG4gICAgICBzdG9wVHJhY2tpbmc6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgZGV0
YWNoVHJhY2tlcihpbnN0KTtcbiAgICAgICAgZGVsZXRlIG5vZGVbdmFsdWVGaWVsZF07XG4gICAg
ICB9XG4gICAgfSk7XG4gIH0sXG5cbiAgdXBkYXRlVmFsdWVJZkNoYW5nZWQ6IGZ1bmN0aW9uIChp
bnN0KSB7XG4gICAgaWYgKCFpbnN0KSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAg
IHZhciB0cmFja2VyID0gZ2V0VHJhY2tlcihpbnN0KTtcblxuICAgIGlmICghdHJhY2tlcikge1xu
ICAgICAgaW5wdXRWYWx1ZVRyYWNraW5nLnRyYWNrKGluc3QpO1xuICAgICAgcmV0dXJuIHRydWU7
XG4gICAgfVxuXG4gICAgdmFyIGxhc3RWYWx1ZSA9IHRyYWNrZXIuZ2V0VmFsdWUoKTtcbiAgICB2
YXIgbmV4dFZhbHVlID0gZ2V0VmFsdWVGcm9tTm9kZShSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0
Tm9kZUZyb21JbnN0YW5jZShpbnN0KSk7XG5cbiAgICBpZiAobmV4dFZhbHVlICE9PSBsYXN0VmFs
dWUpIHtcbiAgICAgIHRyYWNrZXIuc2V0VmFsdWUobmV4dFZhbHVlKTtcbiAgICAgIHJldHVybiB0
cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfSxcbiAgc3RvcFRyYWNraW5nOiBm
dW5jdGlvbiAoaW5zdCkge1xuICAgIHZhciB0cmFja2VyID0gZ2V0VHJhY2tlcihpbnN0KTtcbiAg
ICBpZiAodHJhY2tlcikge1xuICAgICAgdHJhY2tlci5zdG9wVHJhY2tpbmcoKTtcbiAgICB9XG4g
IH1cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gaW5wdXRWYWx1ZVRyYWNraW5nO1xuXG5cbi8qKioq
KioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0LWRvbS9saWIv
aW5wdXRWYWx1ZVRyYWNraW5nLmpzXG4gKiogbW9kdWxlIGlkID0gNzRcbiAqKiBtb2R1bGUgY2h1
bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ss
IEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBp
cyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBM
SUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFu
IGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRo
ZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNlIHN0
cmljdCc7XG5cbnZhciBfcHJvZEludmFyaWFudCA9IHJlcXVpcmUoJy4vcmVhY3RQcm9kSW52YXJp
YW50JyksXG4gICAgX2Fzc2lnbiA9IHJlcXVpcmUoJ29iamVjdC1hc3NpZ24nKTtcblxudmFyIFJl
YWN0Q29tcG9zaXRlQ29tcG9uZW50ID0gcmVxdWlyZSgnLi9SZWFjdENvbXBvc2l0ZUNvbXBvbmVu
dCcpO1xudmFyIFJlYWN0RW1wdHlDb21wb25lbnQgPSByZXF1aXJlKCcuL1JlYWN0RW1wdHlDb21w
b25lbnQnKTtcbnZhciBSZWFjdEhvc3RDb21wb25lbnQgPSByZXF1aXJlKCcuL1JlYWN0SG9zdENv
bXBvbmVudCcpO1xuXG52YXIgZ2V0TmV4dERlYnVnSUQgPSByZXF1aXJlKCdyZWFjdC9saWIvZ2V0
TmV4dERlYnVnSUQnKTtcbnZhciBpbnZhcmlhbnQgPSByZXF1aXJlKCdmYmpzL2xpYi9pbnZhcmlh
bnQnKTtcbnZhciB3YXJuaW5nID0gcmVxdWlyZSgnZmJqcy9saWIvd2FybmluZycpO1xuXG4vLyBU
byBhdm9pZCBhIGN5Y2xpYyBkZXBlbmRlbmN5LCB3ZSBjcmVhdGUgdGhlIGZpbmFsIGNsYXNzIGlu
IHRoaXMgbW9kdWxlXG52YXIgUmVhY3RDb21wb3NpdGVDb21wb25lbnRXcmFwcGVyID0gZnVuY3Rp
b24gKGVsZW1lbnQpIHtcbiAgdGhpcy5jb25zdHJ1Y3QoZWxlbWVudCk7XG59O1xuXG5mdW5jdGlv
biBnZXREZWNsYXJhdGlvbkVycm9yQWRkZW5kdW0ob3duZXIpIHtcbiAgaWYgKG93bmVyKSB7XG4g
ICAgdmFyIG5hbWUgPSBvd25lci5nZXROYW1lKCk7XG4gICAgaWYgKG5hbWUpIHtcbiAgICAgIHJl
dHVybiAnIENoZWNrIHRoZSByZW5kZXIgbWV0aG9kIG9mIGAnICsgbmFtZSArICdgLic7XG4gICAg
fVxuICB9XG4gIHJldHVybiAnJztcbn1cblxuLyoqXG4gKiBDaGVjayBpZiB0aGUgdHlwZSByZWZl
cmVuY2UgaXMgYSBrbm93biBpbnRlcm5hbCB0eXBlLiBJLmUuIG5vdCBhIHVzZXJcbiAqIHByb3Zp
ZGVkIGNvbXBvc2l0ZSB0eXBlLlxuICpcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IHR5cGVcbiAqIEBy
ZXR1cm4ge2Jvb2xlYW59IFJldHVybnMgdHJ1ZSBpZiB0aGlzIGlzIGEgdmFsaWQgaW50ZXJuYWwg
dHlwZS5cbiAqL1xuZnVuY3Rpb24gaXNJbnRlcm5hbENvbXBvbmVudFR5cGUodHlwZSkge1xuICBy
ZXR1cm4gdHlwZW9mIHR5cGUgPT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIHR5cGUucHJvdG90eXBl
ICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2YgdHlwZS5wcm90b3R5cGUubW91bnRDb21wb25lbnQg
PT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIHR5cGUucHJvdG90eXBlLnJlY2VpdmVDb21wb25lbnQg
PT09ICdmdW5jdGlvbic7XG59XG5cbi8qKlxuICogR2l2ZW4gYSBSZWFjdE5vZGUsIGNyZWF0ZSBh
biBpbnN0YW5jZSB0aGF0IHdpbGwgYWN0dWFsbHkgYmUgbW91bnRlZC5cbiAqXG4gKiBAcGFyYW0g
e1JlYWN0Tm9kZX0gbm9kZVxuICogQHBhcmFtIHtib29sZWFufSBzaG91bGRIYXZlRGVidWdJRFxu
ICogQHJldHVybiB7b2JqZWN0fSBBIG5ldyBpbnN0YW5jZSBvZiB0aGUgZWxlbWVudCdzIGNvbnN0
cnVjdG9yLlxuICogQHByb3RlY3RlZFxuICovXG5mdW5jdGlvbiBpbnN0YW50aWF0ZVJlYWN0Q29t
cG9uZW50KG5vZGUsIHNob3VsZEhhdmVEZWJ1Z0lEKSB7XG4gIHZhciBpbnN0YW5jZTtcblxuICBp
ZiAobm9kZSA9PT0gbnVsbCB8fCBub2RlID09PSBmYWxzZSkge1xuICAgIGluc3RhbmNlID0gUmVh
Y3RFbXB0eUNvbXBvbmVudC5jcmVhdGUoaW5zdGFudGlhdGVSZWFjdENvbXBvbmVudCk7XG4gIH0g
ZWxzZSBpZiAodHlwZW9mIG5vZGUgPT09ICdvYmplY3QnKSB7XG4gICAgdmFyIGVsZW1lbnQgPSBu
b2RlO1xuICAgIHZhciB0eXBlID0gZWxlbWVudC50eXBlO1xuICAgIGlmICh0eXBlb2YgdHlwZSAh
PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgdHlwZSAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHZhciBp
bmZvID0gJyc7XG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9u
Jykge1xuICAgICAgICBpZiAodHlwZSA9PT0gdW5kZWZpbmVkIHx8IHR5cGVvZiB0eXBlID09PSAn
b2JqZWN0JyAmJiB0eXBlICE9PSBudWxsICYmIE9iamVjdC5rZXlzKHR5cGUpLmxlbmd0aCA9PT0g
MCkge1xuICAgICAgICAgIGluZm8gKz0gJyBZb3UgbGlrZWx5IGZvcmdvdCB0byBleHBvcnQgeW91
ciBjb21wb25lbnQgZnJvbSB0aGUgZmlsZSAnICsgXCJpdCdzIGRlZmluZWQgaW4uXCI7XG4gICAg
ICAgIH1cbiAgICAgIH1cbiAgICAgIGluZm8gKz0gZ2V0RGVjbGFyYXRpb25FcnJvckFkZGVuZHVt
KGVsZW1lbnQuX293bmVyKTtcbiAgICAgICFmYWxzZSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9
PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdFbGVtZW50IHR5cGUgaXMgaW52YWxp
ZDogZXhwZWN0ZWQgYSBzdHJpbmcgKGZvciBidWlsdC1pbiBjb21wb25lbnRzKSBvciBhIGNsYXNz
L2Z1bmN0aW9uIChmb3IgY29tcG9zaXRlIGNvbXBvbmVudHMpIGJ1dCBnb3Q6ICVzLiVzJywgdHlw
ZSA9PSBudWxsID8gdHlwZSA6IHR5cGVvZiB0eXBlLCBpbmZvKSA6IF9wcm9kSW52YXJpYW50KCcx
MzAnLCB0eXBlID09IG51bGwgPyB0eXBlIDogdHlwZW9mIHR5cGUsIGluZm8pIDogdm9pZCAwO1xu
ICAgIH1cblxuICAgIC8vIFNwZWNpYWwgY2FzZSBzdHJpbmcgdmFsdWVzXG4gICAgaWYgKHR5cGVv
ZiBlbGVtZW50LnR5cGUgPT09ICdzdHJpbmcnKSB7XG4gICAgICBpbnN0YW5jZSA9IFJlYWN0SG9z
dENvbXBvbmVudC5jcmVhdGVJbnRlcm5hbENvbXBvbmVudChlbGVtZW50KTtcbiAgICB9IGVsc2Ug
aWYgKGlzSW50ZXJuYWxDb21wb25lbnRUeXBlKGVsZW1lbnQudHlwZSkpIHtcbiAgICAgIC8vIFRo
aXMgaXMgdGVtcG9yYXJpbHkgYXZhaWxhYmxlIGZvciBjdXN0b20gY29tcG9uZW50cyB0aGF0IGFy
ZSBub3Qgc3RyaW5nXG4gICAgICAvLyByZXByZXNlbnRhdGlvbnMuIEkuZS4gQVJULiBPbmNlIHRo
b3NlIGFyZSB1cGRhdGVkIHRvIHVzZSB0aGUgc3RyaW5nXG4gICAgICAvLyByZXByZXNlbnRhdGlv
biwgd2UgY2FuIGRyb3AgdGhpcyBjb2RlIHBhdGguXG4gICAgICBpbnN0YW5jZSA9IG5ldyBlbGVt
ZW50LnR5cGUoZWxlbWVudCk7XG5cbiAgICAgIC8vIFdlIHJlbmFtZWQgdGhpcy4gQWxsb3cgdGhl
IG9sZCBuYW1lIGZvciBjb21wYXQuIDooXG4gICAgICBpZiAoIWluc3RhbmNlLmdldEhvc3ROb2Rl
KSB7XG4gICAgICAgIGluc3RhbmNlLmdldEhvc3ROb2RlID0gaW5zdGFuY2UuZ2V0TmF0aXZlTm9k
ZTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaW5zdGFuY2UgPSBuZXcgUmVhY3RDb21w
b3NpdGVDb21wb25lbnRXcmFwcGVyKGVsZW1lbnQpO1xuICAgIH1cbiAgfSBlbHNlIGlmICh0eXBl
b2Ygbm9kZSA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIG5vZGUgPT09ICdudW1iZXInKSB7XG4gICAg
aW5zdGFuY2UgPSBSZWFjdEhvc3RDb21wb25lbnQuY3JlYXRlSW5zdGFuY2VGb3JUZXh0KG5vZGUp
O1xuICB9IGVsc2Uge1xuICAgICFmYWxzZSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJv
ZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdFbmNvdW50ZXJlZCBpbnZhbGlkIFJlYWN0IG5v
ZGUgb2YgdHlwZSAlcycsIHR5cGVvZiBub2RlKSA6IF9wcm9kSW52YXJpYW50KCcxMzEnLCB0eXBl
b2Ygbm9kZSkgOiB2b2lkIDA7XG4gIH1cblxuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09
ICdwcm9kdWN0aW9uJykge1xuICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlv
bicgPyB3YXJuaW5nKHR5cGVvZiBpbnN0YW5jZS5tb3VudENvbXBvbmVudCA9PT0gJ2Z1bmN0aW9u
JyAmJiB0eXBlb2YgaW5zdGFuY2UucmVjZWl2ZUNvbXBvbmVudCA9PT0gJ2Z1bmN0aW9uJyAmJiB0
eXBlb2YgaW5zdGFuY2UuZ2V0SG9zdE5vZGUgPT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIGluc3Rh
bmNlLnVubW91bnRDb21wb25lbnQgPT09ICdmdW5jdGlvbicsICdPbmx5IFJlYWN0IENvbXBvbmVu
dHMgY2FuIGJlIG1vdW50ZWQuJykgOiB2b2lkIDA7XG4gIH1cblxuICAvLyBUaGVzZSB0d28gZmll
bGRzIGFyZSB1c2VkIGJ5IHRoZSBET00gYW5kIEFSVCBkaWZmaW5nIGFsZ29yaXRobXNcbiAgLy8g
cmVzcGVjdGl2ZWx5LiBJbnN0ZWFkIG9mIHVzaW5nIGV4cGFuZG9zIG9uIGNvbXBvbmVudHMsIHdl
IHNob3VsZCBiZVxuICAvLyBzdG9yaW5nIHRoZSBzdGF0ZSBuZWVkZWQgYnkgdGhlIGRpZmZpbmcg
YWxnb3JpdGhtcyBlbHNld2hlcmUuXG4gIGluc3RhbmNlLl9tb3VudEluZGV4ID0gMDtcbiAgaW5z
dGFuY2UuX21vdW50SW1hZ2UgPSBudWxsO1xuXG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAh
PT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgaW5zdGFuY2UuX2RlYnVnSUQgPSBzaG91bGRIYXZlRGVi
dWdJRCA/IGdldE5leHREZWJ1Z0lEKCkgOiAwO1xuICB9XG5cbiAgLy8gSW50ZXJuYWwgaW5zdGFu
Y2VzIHNob3VsZCBmdWxseSBjb25zdHJ1Y3RlZCBhdCB0aGlzIHBvaW50LCBzbyB0aGV5IHNob3Vs
ZFxuICAvLyBub3QgZ2V0IGFueSBuZXcgZmllbGRzIGFkZGVkIHRvIHRoZW0gYXQgdGhpcyBwb2lu
dC5cbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICBp
ZiAoT2JqZWN0LnByZXZlbnRFeHRlbnNpb25zKSB7XG4gICAgICBPYmplY3QucHJldmVudEV4dGVu
c2lvbnMoaW5zdGFuY2UpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBpbnN0YW5jZTtcbn1cblxu
X2Fzc2lnbihSZWFjdENvbXBvc2l0ZUNvbXBvbmVudFdyYXBwZXIucHJvdG90eXBlLCBSZWFjdENv
bXBvc2l0ZUNvbXBvbmVudCwge1xuICBfaW5zdGFudGlhdGVSZWFjdENvbXBvbmVudDogaW5zdGFu
dGlhdGVSZWFjdENvbXBvbmVudFxufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gaW5zdGFudGlhdGVS
ZWFjdENvbXBvbmVudDtcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RF
UlxuICoqIC4vfi9yZWFjdC1kb20vbGliL2luc3RhbnRpYXRlUmVhY3RDb21wb25lbnQuanNcbiAq
KiBtb2R1bGUgaWQgPSA3NVxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBD
b3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNl
cnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qt
c3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBk
aXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2Yg
cGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2Ft
ZSBkaXJlY3RvcnkuXG4gKlxuICogXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG4vKipcbiAqIEBz
ZWUgaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay9tdWx0
aXBhZ2UvdGhlLWlucHV0LWVsZW1lbnQuaHRtbCNpbnB1dC10eXBlLWF0dHItc3VtbWFyeVxuICov
XG5cbnZhciBzdXBwb3J0ZWRJbnB1dFR5cGVzID0ge1xuICBjb2xvcjogdHJ1ZSxcbiAgZGF0ZTog
dHJ1ZSxcbiAgZGF0ZXRpbWU6IHRydWUsXG4gICdkYXRldGltZS1sb2NhbCc6IHRydWUsXG4gIGVt
YWlsOiB0cnVlLFxuICBtb250aDogdHJ1ZSxcbiAgbnVtYmVyOiB0cnVlLFxuICBwYXNzd29yZDog
dHJ1ZSxcbiAgcmFuZ2U6IHRydWUsXG4gIHNlYXJjaDogdHJ1ZSxcbiAgdGVsOiB0cnVlLFxuICB0
ZXh0OiB0cnVlLFxuICB0aW1lOiB0cnVlLFxuICB1cmw6IHRydWUsXG4gIHdlZWs6IHRydWVcbn07
XG5cbmZ1bmN0aW9uIGlzVGV4dElucHV0RWxlbWVudChlbGVtKSB7XG4gIHZhciBub2RlTmFtZSA9
IGVsZW0gJiYgZWxlbS5ub2RlTmFtZSAmJiBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7XG5c
biAgaWYgKG5vZGVOYW1lID09PSAnaW5wdXQnKSB7XG4gICAgcmV0dXJuICEhc3VwcG9ydGVkSW5w
dXRUeXBlc1tlbGVtLnR5cGVdO1xuICB9XG5cbiAgaWYgKG5vZGVOYW1lID09PSAndGV4dGFyZWEn
KSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59XG5cbm1vZHVs
ZS5leHBvcnRzID0gaXNUZXh0SW5wdXRFbGVtZW50O1xuXG5cbi8qKioqKioqKioqKioqKioqKlxu
ICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0LWRvbS9saWIvaXNUZXh0SW5wdXRFbGVt
ZW50LmpzXG4gKiogbW9kdWxlIGlkID0gNzZcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIs
Ii8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRl
ciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4g
dGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3Jh
bnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUg
aW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBF
eGVjdXRpb25FbnZpcm9ubWVudCA9IHJlcXVpcmUoJ2ZianMvbGliL0V4ZWN1dGlvbkVudmlyb25t
ZW50Jyk7XG52YXIgZXNjYXBlVGV4dENvbnRlbnRGb3JCcm93c2VyID0gcmVxdWlyZSgnLi9lc2Nh
cGVUZXh0Q29udGVudEZvckJyb3dzZXInKTtcbnZhciBzZXRJbm5lckhUTUwgPSByZXF1aXJlKCcu
L3NldElubmVySFRNTCcpO1xuXG4vKipcbiAqIFNldCB0aGUgdGV4dENvbnRlbnQgcHJvcGVydHkg
b2YgYSBub2RlLCBlbnN1cmluZyB0aGF0IHdoaXRlc3BhY2UgaXMgcHJlc2VydmVkXG4gKiBldmVu
IGluIElFOC4gaW5uZXJUZXh0IGlzIGEgcG9vciBzdWJzdGl0dXRlIGZvciB0ZXh0Q29udGVudCBh
bmQsIGFtb25nIG1hbnlcbiAqIGlzc3VlcywgaW5zZXJ0cyA8YnI+IGluc3RlYWQgb2YgdGhlIGxp
dGVyYWwgbmV3bGluZSBjaGFycy4gaW5uZXJIVE1MIGJlaGF2ZXNcbiAqIGFzIGl0IHNob3VsZC5c
biAqXG4gKiBAcGFyYW0ge0RPTUVsZW1lbnR9IG5vZGVcbiAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0
XG4gKiBAaW50ZXJuYWxcbiAqL1xudmFyIHNldFRleHRDb250ZW50ID0gZnVuY3Rpb24gKG5vZGUs
IHRleHQpIHtcbiAgaWYgKHRleHQpIHtcbiAgICB2YXIgZmlyc3RDaGlsZCA9IG5vZGUuZmlyc3RD
aGlsZDtcblxuICAgIGlmIChmaXJzdENoaWxkICYmIGZpcnN0Q2hpbGQgPT09IG5vZGUubGFzdENo
aWxkICYmIGZpcnN0Q2hpbGQubm9kZVR5cGUgPT09IDMpIHtcbiAgICAgIGZpcnN0Q2hpbGQubm9k
ZVZhbHVlID0gdGV4dDtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cbiAgbm9kZS50ZXh0Q29u
dGVudCA9IHRleHQ7XG59O1xuXG5pZiAoRXhlY3V0aW9uRW52aXJvbm1lbnQuY2FuVXNlRE9NKSB7
XG4gIGlmICghKCd0ZXh0Q29udGVudCcgaW4gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KSkge1xu
ICAgIHNldFRleHRDb250ZW50ID0gZnVuY3Rpb24gKG5vZGUsIHRleHQpIHtcbiAgICAgIGlmIChu
b2RlLm5vZGVUeXBlID09PSAzKSB7XG4gICAgICAgIG5vZGUubm9kZVZhbHVlID0gdGV4dDtcbiAg
ICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgc2V0SW5uZXJIVE1MKG5vZGUsIGVzY2FwZVRl
eHRDb250ZW50Rm9yQnJvd3Nlcih0ZXh0KSk7XG4gICAgfTtcbiAgfVxufVxuXG5tb2R1bGUuZXhw
b3J0cyA9IHNldFRleHRDb250ZW50O1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBB
Q0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0LWRvbS9saWIvc2V0VGV4dENvbnRlbnQuanNcbiAqKiBt
b2R1bGUgaWQgPSA3N1xuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5
cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZl
ZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5
bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJl
Y3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0
ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBk
aXJlY3RvcnkuXG4gKlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIF9wcm9kSW52YXJpYW50
ID0gcmVxdWlyZSgnLi9yZWFjdFByb2RJbnZhcmlhbnQnKTtcblxudmFyIFJlYWN0Q3VycmVudE93
bmVyID0gcmVxdWlyZSgncmVhY3QvbGliL1JlYWN0Q3VycmVudE93bmVyJyk7XG52YXIgUkVBQ1Rf
RUxFTUVOVF9UWVBFID0gcmVxdWlyZSgnLi9SZWFjdEVsZW1lbnRTeW1ib2wnKTtcblxudmFyIGdl
dEl0ZXJhdG9yRm4gPSByZXF1aXJlKCcuL2dldEl0ZXJhdG9yRm4nKTtcbnZhciBpbnZhcmlhbnQg
PSByZXF1aXJlKCdmYmpzL2xpYi9pbnZhcmlhbnQnKTtcbnZhciBLZXlFc2NhcGVVdGlscyA9IHJl
cXVpcmUoJy4vS2V5RXNjYXBlVXRpbHMnKTtcbnZhciB3YXJuaW5nID0gcmVxdWlyZSgnZmJqcy9s
aWIvd2FybmluZycpO1xuXG52YXIgU0VQQVJBVE9SID0gJy4nO1xudmFyIFNVQlNFUEFSQVRPUiA9
ICc6JztcblxuLyoqXG4gKiBUaGlzIGlzIGlubGluZWQgZnJvbSBSZWFjdEVsZW1lbnQgc2luY2Ug
dGhpcyBmaWxlIGlzIHNoYXJlZCBiZXR3ZWVuXG4gKiBpc29tb3JwaGljIGFuZCByZW5kZXJlcnMu
IFdlIGNvdWxkIGV4dHJhY3QgdGhpcyB0byBhXG4gKlxuICovXG5cbi8qKlxuICogVE9ETzogVGVz
dCB0aGF0IGEgc2luZ2xlIGNoaWxkIGFuZCBhbiBhcnJheSB3aXRoIG9uZSBpdGVtIGhhdmUgdGhl
IHNhbWUga2V5XG4gKiBwYXR0ZXJuLlxuICovXG5cbnZhciBkaWRXYXJuQWJvdXRNYXBzID0gZmFs
c2U7XG5cbi8qKlxuICogR2VuZXJhdGUgYSBrZXkgc3RyaW5nIHRoYXQgaWRlbnRpZmllcyBhIGNv
bXBvbmVudCB3aXRoaW4gYSBzZXQuXG4gKlxuICogQHBhcmFtIHsqfSBjb21wb25lbnQgQSBjb21w
b25lbnQgdGhhdCBjb3VsZCBjb250YWluIGEgbWFudWFsIGtleS5cbiAqIEBwYXJhbSB7bnVtYmVy
fSBpbmRleCBJbmRleCB0aGF0IGlzIHVzZWQgaWYgYSBtYW51YWwga2V5IGlzIG5vdCBwcm92aWRl
ZC5cbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqL1xuZnVuY3Rpb24gZ2V0Q29tcG9uZW50S2V5KGNv
bXBvbmVudCwgaW5kZXgpIHtcbiAgLy8gRG8gc29tZSB0eXBlY2hlY2tpbmcgaGVyZSBzaW5jZSB3
ZSBjYWxsIHRoaXMgYmxpbmRseS4gV2Ugd2FudCB0byBlbnN1cmVcbiAgLy8gdGhhdCB3ZSBkb24n
dCBibG9jayBwb3RlbnRpYWwgZnV0dXJlIEVTIEFQSXMuXG4gIGlmIChjb21wb25lbnQgJiYgdHlw
ZW9mIGNvbXBvbmVudCA9PT0gJ29iamVjdCcgJiYgY29tcG9uZW50LmtleSAhPSBudWxsKSB7XG4g
ICAgLy8gRXhwbGljaXQga2V5XG4gICAgcmV0dXJuIEtleUVzY2FwZVV0aWxzLmVzY2FwZShjb21w
b25lbnQua2V5KTtcbiAgfVxuICAvLyBJbXBsaWNpdCBrZXkgZGV0ZXJtaW5lZCBieSB0aGUgaW5k
ZXggaW4gdGhlIHNldFxuICByZXR1cm4gaW5kZXgudG9TdHJpbmcoMzYpO1xufVxuXG4vKipcbiAq
IEBwYXJhbSB7Pyp9IGNoaWxkcmVuIENoaWxkcmVuIHRyZWUgY29udGFpbmVyLlxuICogQHBhcmFt
IHshc3RyaW5nfSBuYW1lU29GYXIgTmFtZSBvZiB0aGUga2V5IHBhdGggc28gZmFyLlxuICogQHBh
cmFtIHshZnVuY3Rpb259IGNhbGxiYWNrIENhbGxiYWNrIHRvIGludm9rZSB3aXRoIGVhY2ggY2hp
bGQgZm91bmQuXG4gKiBAcGFyYW0gez8qfSB0cmF2ZXJzZUNvbnRleHQgVXNlZCB0byBwYXNzIGlu
Zm9ybWF0aW9uIHRocm91Z2hvdXQgdGhlIHRyYXZlcnNhbFxuICogcHJvY2Vzcy5cbiAqIEByZXR1
cm4geyFudW1iZXJ9IFRoZSBudW1iZXIgb2YgY2hpbGRyZW4gaW4gdGhpcyBzdWJ0cmVlLlxuICov
XG5mdW5jdGlvbiB0cmF2ZXJzZUFsbENoaWxkcmVuSW1wbChjaGlsZHJlbiwgbmFtZVNvRmFyLCBj
YWxsYmFjaywgdHJhdmVyc2VDb250ZXh0KSB7XG4gIHZhciB0eXBlID0gdHlwZW9mIGNoaWxkcmVu
O1xuXG4gIGlmICh0eXBlID09PSAndW5kZWZpbmVkJyB8fCB0eXBlID09PSAnYm9vbGVhbicpIHtc
biAgICAvLyBBbGwgb2YgdGhlIGFib3ZlIGFyZSBwZXJjZWl2ZWQgYXMgbnVsbC5cbiAgICBjaGls
ZHJlbiA9IG51bGw7XG4gIH1cblxuICBpZiAoY2hpbGRyZW4gPT09IG51bGwgfHwgdHlwZSA9PT0g
J3N0cmluZycgfHwgdHlwZSA9PT0gJ251bWJlcicgfHxcbiAgLy8gVGhlIGZvbGxvd2luZyBpcyBp
bmxpbmVkIGZyb20gUmVhY3RFbGVtZW50LiBUaGlzIG1lYW5zIHdlIGNhbiBvcHRpbWl6ZVxuICAv
LyBzb21lIGNoZWNrcy4gUmVhY3QgRmliZXIgYWxzbyBpbmxpbmVzIHRoaXMgbG9naWMgZm9yIHNp
bWlsYXIgcHVycG9zZXMuXG4gIHR5cGUgPT09ICdvYmplY3QnICYmIGNoaWxkcmVuLiQkdHlwZW9m
ID09PSBSRUFDVF9FTEVNRU5UX1RZUEUpIHtcbiAgICBjYWxsYmFjayh0cmF2ZXJzZUNvbnRleHQs
IGNoaWxkcmVuLFxuICAgIC8vIElmIGl0J3MgdGhlIG9ubHkgY2hpbGQsIHRyZWF0IHRoZSBuYW1l
IGFzIGlmIGl0IHdhcyB3cmFwcGVkIGluIGFuIGFycmF5XG4gICAgLy8gc28gdGhhdCBpdCdzIGNv
bnNpc3RlbnQgaWYgdGhlIG51bWJlciBvZiBjaGlsZHJlbiBncm93cy5cbiAgICBuYW1lU29GYXIg
PT09ICcnID8gU0VQQVJBVE9SICsgZ2V0Q29tcG9uZW50S2V5KGNoaWxkcmVuLCAwKSA6IG5hbWVT
b0Zhcik7XG4gICAgcmV0dXJuIDE7XG4gIH1cblxuICB2YXIgY2hpbGQ7XG4gIHZhciBuZXh0TmFt
ZTtcbiAgdmFyIHN1YnRyZWVDb3VudCA9IDA7IC8vIENvdW50IG9mIGNoaWxkcmVuIGZvdW5kIGlu
IHRoZSBjdXJyZW50IHN1YnRyZWUuXG4gIHZhciBuZXh0TmFtZVByZWZpeCA9IG5hbWVTb0ZhciA9
PT0gJycgPyBTRVBBUkFUT1IgOiBuYW1lU29GYXIgKyBTVUJTRVBBUkFUT1I7XG5cbiAgaWYgKEFy
cmF5LmlzQXJyYXkoY2hpbGRyZW4pKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGlsZHJl
bi5sZW5ndGg7IGkrKykge1xuICAgICAgY2hpbGQgPSBjaGlsZHJlbltpXTtcbiAgICAgIG5leHRO
YW1lID0gbmV4dE5hbWVQcmVmaXggKyBnZXRDb21wb25lbnRLZXkoY2hpbGQsIGkpO1xuICAgICAg
c3VidHJlZUNvdW50ICs9IHRyYXZlcnNlQWxsQ2hpbGRyZW5JbXBsKGNoaWxkLCBuZXh0TmFtZSwg
Y2FsbGJhY2ssIHRyYXZlcnNlQ29udGV4dCk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHZhciBp
dGVyYXRvckZuID0gZ2V0SXRlcmF0b3JGbihjaGlsZHJlbik7XG4gICAgaWYgKGl0ZXJhdG9yRm4p
IHtcbiAgICAgIHZhciBpdGVyYXRvciA9IGl0ZXJhdG9yRm4uY2FsbChjaGlsZHJlbik7XG4gICAg
ICB2YXIgc3RlcDtcbiAgICAgIGlmIChpdGVyYXRvckZuICE9PSBjaGlsZHJlbi5lbnRyaWVzKSB7
XG4gICAgICAgIHZhciBpaSA9IDA7XG4gICAgICAgIHdoaWxlICghKHN0ZXAgPSBpdGVyYXRvci5u
ZXh0KCkpLmRvbmUpIHtcbiAgICAgICAgICBjaGlsZCA9IHN0ZXAudmFsdWU7XG4gICAgICAgICAg
bmV4dE5hbWUgPSBuZXh0TmFtZVByZWZpeCArIGdldENvbXBvbmVudEtleShjaGlsZCwgaWkrKyk7
XG4gICAgICAgICAgc3VidHJlZUNvdW50ICs9IHRyYXZlcnNlQWxsQ2hpbGRyZW5JbXBsKGNoaWxk
LCBuZXh0TmFtZSwgY2FsbGJhY2ssIHRyYXZlcnNlQ29udGV4dCk7XG4gICAgICAgIH1cbiAgICAg
IH0gZWxzZSB7XG4gICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rp
b24nKSB7XG4gICAgICAgICAgdmFyIG1hcHNBc0NoaWxkcmVuQWRkZW5kdW0gPSAnJztcbiAgICAg
ICAgICBpZiAoUmVhY3RDdXJyZW50T3duZXIuY3VycmVudCkge1xuICAgICAgICAgICAgdmFyIG1h
cHNBc0NoaWxkcmVuT3duZXJOYW1lID0gUmVhY3RDdXJyZW50T3duZXIuY3VycmVudC5nZXROYW1l
KCk7XG4gICAgICAgICAgICBpZiAobWFwc0FzQ2hpbGRyZW5Pd25lck5hbWUpIHtcbiAgICAgICAg
ICAgICAgbWFwc0FzQ2hpbGRyZW5BZGRlbmR1bSA9ICcgQ2hlY2sgdGhlIHJlbmRlciBtZXRob2Qg
b2YgYCcgKyBtYXBzQXNDaGlsZHJlbk93bmVyTmFtZSArICdgLic7XG4gICAgICAgICAgICB9XG4g
ICAgICAgICAgfVxuICAgICAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlv
bicgPyB3YXJuaW5nKGRpZFdhcm5BYm91dE1hcHMsICdVc2luZyBNYXBzIGFzIGNoaWxkcmVuIGlz
IG5vdCB5ZXQgZnVsbHkgc3VwcG9ydGVkLiBJdCBpcyBhbiAnICsgJ2V4cGVyaW1lbnRhbCBmZWF0
dXJlIHRoYXQgbWlnaHQgYmUgcmVtb3ZlZC4gQ29udmVydCBpdCB0byBhICcgKyAnc2VxdWVuY2Ug
LyBpdGVyYWJsZSBvZiBrZXllZCBSZWFjdEVsZW1lbnRzIGluc3RlYWQuJXMnLCBtYXBzQXNDaGls
ZHJlbkFkZGVuZHVtKSA6IHZvaWQgMDtcbiAgICAgICAgICBkaWRXYXJuQWJvdXRNYXBzID0gdHJ1
ZTtcbiAgICAgICAgfVxuICAgICAgICAvLyBJdGVyYXRvciB3aWxsIHByb3ZpZGUgZW50cnkgW2ss
dl0gdHVwbGVzIHJhdGhlciB0aGFuIHZhbHVlcy5cbiAgICAgICAgd2hpbGUgKCEoc3RlcCA9IGl0
ZXJhdG9yLm5leHQoKSkuZG9uZSkge1xuICAgICAgICAgIHZhciBlbnRyeSA9IHN0ZXAudmFsdWU7
XG4gICAgICAgICAgaWYgKGVudHJ5KSB7XG4gICAgICAgICAgICBjaGlsZCA9IGVudHJ5WzFdO1xu
ICAgICAgICAgICAgbmV4dE5hbWUgPSBuZXh0TmFtZVByZWZpeCArIEtleUVzY2FwZVV0aWxzLmVz
Y2FwZShlbnRyeVswXSkgKyBTVUJTRVBBUkFUT1IgKyBnZXRDb21wb25lbnRLZXkoY2hpbGQsIDAp
O1xuICAgICAgICAgICAgc3VidHJlZUNvdW50ICs9IHRyYXZlcnNlQWxsQ2hpbGRyZW5JbXBsKGNo
aWxkLCBuZXh0TmFtZSwgY2FsbGJhY2ssIHRyYXZlcnNlQ29udGV4dCk7XG4gICAgICAgICAgfVxu
ICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0eXBlID09PSAnb2JqZWN0Jykge1xu
ICAgICAgdmFyIGFkZGVuZHVtID0gJyc7XG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYg
IT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICBhZGRlbmR1bSA9ICcgSWYgeW91IG1lYW50IHRv
IHJlbmRlciBhIGNvbGxlY3Rpb24gb2YgY2hpbGRyZW4sIHVzZSBhbiBhcnJheSAnICsgJ2luc3Rl
YWQgb3Igd3JhcCB0aGUgb2JqZWN0IHVzaW5nIGNyZWF0ZUZyYWdtZW50KG9iamVjdCkgZnJvbSB0
aGUgJyArICdSZWFjdCBhZGQtb25zLic7XG4gICAgICAgIGlmIChjaGlsZHJlbi5faXNSZWFjdEVs
ZW1lbnQpIHtcbiAgICAgICAgICBhZGRlbmR1bSA9IFwiIEl0IGxvb2tzIGxpa2UgeW91J3JlIHVz
aW5nIGFuIGVsZW1lbnQgY3JlYXRlZCBieSBhIGRpZmZlcmVudCBcIiArICd2ZXJzaW9uIG9mIFJl
YWN0LiBNYWtlIHN1cmUgdG8gdXNlIG9ubHkgb25lIGNvcHkgb2YgUmVhY3QuJztcbiAgICAgICAg
fVxuICAgICAgICBpZiAoUmVhY3RDdXJyZW50T3duZXIuY3VycmVudCkge1xuICAgICAgICAgIHZh
ciBuYW1lID0gUmVhY3RDdXJyZW50T3duZXIuY3VycmVudC5nZXROYW1lKCk7XG4gICAgICAgICAg
aWYgKG5hbWUpIHtcbiAgICAgICAgICAgIGFkZGVuZHVtICs9ICcgQ2hlY2sgdGhlIHJlbmRlciBt
ZXRob2Qgb2YgYCcgKyBuYW1lICsgJ2AuJztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAg
IH1cbiAgICAgIHZhciBjaGlsZHJlblN0cmluZyA9IFN0cmluZyhjaGlsZHJlbik7XG4gICAgICAh
ZmFsc2UgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50
KGZhbHNlLCAnT2JqZWN0cyBhcmUgbm90IHZhbGlkIGFzIGEgUmVhY3QgY2hpbGQgKGZvdW5kOiAl
cykuJXMnLCBjaGlsZHJlblN0cmluZyA9PT0gJ1tvYmplY3QgT2JqZWN0XScgPyAnb2JqZWN0IHdp
dGgga2V5cyB7JyArIE9iamVjdC5rZXlzKGNoaWxkcmVuKS5qb2luKCcsICcpICsgJ30nIDogY2hp
bGRyZW5TdHJpbmcsIGFkZGVuZHVtKSA6IF9wcm9kSW52YXJpYW50KCczMScsIGNoaWxkcmVuU3Ry
aW5nID09PSAnW29iamVjdCBPYmplY3RdJyA/ICdvYmplY3Qgd2l0aCBrZXlzIHsnICsgT2JqZWN0
LmtleXMoY2hpbGRyZW4pLmpvaW4oJywgJykgKyAnfScgOiBjaGlsZHJlblN0cmluZywgYWRkZW5k
dW0pIDogdm9pZCAwO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBzdWJ0cmVlQ291bnQ7XG59XG5c
bi8qKlxuICogVHJhdmVyc2VzIGNoaWxkcmVuIHRoYXQgYXJlIHR5cGljYWxseSBzcGVjaWZpZWQg
YXMgYHByb3BzLmNoaWxkcmVuYCwgYnV0XG4gKiBtaWdodCBhbHNvIGJlIHNwZWNpZmllZCB0aHJv
dWdoIGF0dHJpYnV0ZXM6XG4gKlxuICogLSBgdHJhdmVyc2VBbGxDaGlsZHJlbih0aGlzLnByb3Bz
LmNoaWxkcmVuLCAuLi4pYFxuICogLSBgdHJhdmVyc2VBbGxDaGlsZHJlbih0aGlzLnByb3BzLmxl
ZnRQYW5lbENoaWxkcmVuLCAuLi4pYFxuICpcbiAqIFRoZSBgdHJhdmVyc2VDb250ZXh0YCBpcyBh
biBvcHRpb25hbCBhcmd1bWVudCB0aGF0IGlzIHBhc3NlZCB0aHJvdWdoIHRoZVxuICogZW50aXJl
IHRyYXZlcnNhbC4gSXQgY2FuIGJlIHVzZWQgdG8gc3RvcmUgYWNjdW11bGF0aW9ucyBvciBhbnl0
aGluZyBlbHNlIHRoYXRcbiAqIHRoZSBjYWxsYmFjayBtaWdodCBmaW5kIHJlbGV2YW50LlxuICpc
biAqIEBwYXJhbSB7Pyp9IGNoaWxkcmVuIENoaWxkcmVuIHRyZWUgb2JqZWN0LlxuICogQHBhcmFt
IHshZnVuY3Rpb259IGNhbGxiYWNrIFRvIGludm9rZSB1cG9uIHRyYXZlcnNpbmcgZWFjaCBjaGls
ZC5cbiAqIEBwYXJhbSB7Pyp9IHRyYXZlcnNlQ29udGV4dCBDb250ZXh0IGZvciB0cmF2ZXJzYWwu
XG4gKiBAcmV0dXJuIHshbnVtYmVyfSBUaGUgbnVtYmVyIG9mIGNoaWxkcmVuIGluIHRoaXMgc3Vi
dHJlZS5cbiAqL1xuZnVuY3Rpb24gdHJhdmVyc2VBbGxDaGlsZHJlbihjaGlsZHJlbiwgY2FsbGJh
Y2ssIHRyYXZlcnNlQ29udGV4dCkge1xuICBpZiAoY2hpbGRyZW4gPT0gbnVsbCkge1xuICAgIHJl
dHVybiAwO1xuICB9XG5cbiAgcmV0dXJuIHRyYXZlcnNlQWxsQ2hpbGRyZW5JbXBsKGNoaWxkcmVu
LCAnJywgY2FsbGJhY2ssIHRyYXZlcnNlQ29udGV4dCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0g
dHJhdmVyc2VBbGxDaGlsZHJlbjtcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNL
IEZPT1RFUlxuICoqIC4vfi9yZWFjdC1kb20vbGliL3RyYXZlcnNlQWxsQ2hpbGRyZW4uanNcbiAq
KiBtb2R1bGUgaWQgPSA3OFxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiJ3VzZSBzdHJp
Y3QnO1xuXG5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuXG52YXIgX2V4dGVuZHMgPSBPYmpl
Y3QuYXNzaWduIHx8IGZ1bmN0aW9uICh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1
bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTsgZm9yICh2YXIg
a2V5IGluIHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxs
KHNvdXJjZSwga2V5KSkgeyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gfSByZXR1cm4g
dGFyZ2V0OyB9O1xuXG5leHBvcnRzLmRlZmF1bHQgPSBjb25uZWN0QWR2YW5jZWQ7XG5cbnZhciBf
aG9pc3ROb25SZWFjdFN0YXRpY3MgPSByZXF1aXJlKCdob2lzdC1ub24tcmVhY3Qtc3RhdGljcycp
O1xuXG52YXIgX2hvaXN0Tm9uUmVhY3RTdGF0aWNzMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQo
X2hvaXN0Tm9uUmVhY3RTdGF0aWNzKTtcblxudmFyIF9pbnZhcmlhbnQgPSByZXF1aXJlKCdpbnZh
cmlhbnQnKTtcblxudmFyIF9pbnZhcmlhbnQyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaW52
YXJpYW50KTtcblxudmFyIF9yZWFjdCA9IHJlcXVpcmUoJ3JlYWN0Jyk7XG5cbnZhciBfU3Vic2Ny
aXB0aW9uID0gcmVxdWlyZSgnLi4vdXRpbHMvU3Vic2NyaXB0aW9uJyk7XG5cbnZhciBfU3Vic2Ny
aXB0aW9uMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX1N1YnNjcmlwdGlvbik7XG5cbnZhciBf
UHJvcFR5cGVzID0gcmVxdWlyZSgnLi4vdXRpbHMvUHJvcFR5cGVzJyk7XG5cbmZ1bmN0aW9uIF9p
bnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUg
PyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbmZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhp
bnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1
Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBm
dW5jdGlvblwiKTsgfSB9XG5cbmZ1bmN0aW9uIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHNl
bGYsIGNhbGwpIHsgaWYgKCFzZWxmKSB7IHRocm93IG5ldyBSZWZlcmVuY2VFcnJvcihcInRoaXMg
aGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZFwiKTsg
fSByZXR1cm4gY2FsbCAmJiAodHlwZW9mIGNhbGwgPT09IFwib2JqZWN0XCIgfHwgdHlwZW9mIGNh
bGwgPT09IFwiZnVuY3Rpb25cIikgPyBjYWxsIDogc2VsZjsgfVxuXG5mdW5jdGlvbiBfaW5oZXJp
dHMoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIHsgaWYgKHR5cGVvZiBzdXBlckNsYXNzICE9PSBcImZ1
bmN0aW9uXCIgJiYgc3VwZXJDbGFzcyAhPT0gbnVsbCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwi
U3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCBc
IiArIHR5cGVvZiBzdXBlckNsYXNzKTsgfSBzdWJDbGFzcy5wcm90b3R5cGUgPSBPYmplY3QuY3Jl
YXRlKHN1cGVyQ2xhc3MgJiYgc3VwZXJDbGFzcy5wcm90b3R5cGUsIHsgY29uc3RydWN0b3I6IHsg
dmFsdWU6IHN1YkNsYXNzLCBlbnVtZXJhYmxlOiBmYWxzZSwgd3JpdGFibGU6IHRydWUsIGNvbmZp
Z3VyYWJsZTogdHJ1ZSB9IH0pOyBpZiAoc3VwZXJDbGFzcykgT2JqZWN0LnNldFByb3RvdHlwZU9m
ID8gT2JqZWN0LnNldFByb3RvdHlwZU9mKHN1YkNsYXNzLCBzdXBlckNsYXNzKSA6IHN1YkNsYXNz
Ll9fcHJvdG9fXyA9IHN1cGVyQ2xhc3M7IH1cblxuZnVuY3Rpb24gX29iamVjdFdpdGhvdXRQcm9w
ZXJ0aWVzKG9iaiwga2V5cykgeyB2YXIgdGFyZ2V0ID0ge307IGZvciAodmFyIGkgaW4gb2JqKSB7
IGlmIChrZXlzLmluZGV4T2YoaSkgPj0gMCkgY29udGludWU7IGlmICghT2JqZWN0LnByb3RvdHlw
ZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgaSkpIGNvbnRpbnVlOyB0YXJnZXRbaV0gPSBvYmpb
aV07IH0gcmV0dXJuIHRhcmdldDsgfVxuXG52YXIgaG90UmVsb2FkaW5nVmVyc2lvbiA9IDA7XG52
YXIgZHVtbXlTdGF0ZSA9IHt9O1xuZnVuY3Rpb24gbm9vcCgpIHt9XG5mdW5jdGlvbiBtYWtlU2Vs
ZWN0b3JTdGF0ZWZ1bChzb3VyY2VTZWxlY3Rvciwgc3RvcmUpIHtcbiAgLy8gd3JhcCB0aGUgc2Vs
ZWN0b3IgaW4gYW4gb2JqZWN0IHRoYXQgdHJhY2tzIGl0cyByZXN1bHRzIGJldHdlZW4gcnVucy5c
biAgdmFyIHNlbGVjdG9yID0ge1xuICAgIHJ1bjogZnVuY3Rpb24gcnVuQ29tcG9uZW50U2VsZWN0
b3IocHJvcHMpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHZhciBuZXh0UHJvcHMgPSBzb3VyY2VT
ZWxlY3RvcihzdG9yZS5nZXRTdGF0ZSgpLCBwcm9wcyk7XG4gICAgICAgIGlmIChuZXh0UHJvcHMg
IT09IHNlbGVjdG9yLnByb3BzIHx8IHNlbGVjdG9yLmVycm9yKSB7XG4gICAgICAgICAgc2VsZWN0
b3Iuc2hvdWxkQ29tcG9uZW50VXBkYXRlID0gdHJ1ZTtcbiAgICAgICAgICBzZWxlY3Rvci5wcm9w
cyA9IG5leHRQcm9wcztcbiAgICAgICAgICBzZWxlY3Rvci5lcnJvciA9IG51bGw7XG4gICAgICAg
IH1cbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIHNlbGVjdG9yLnNob3VsZENvbXBv
bmVudFVwZGF0ZSA9IHRydWU7XG4gICAgICAgIHNlbGVjdG9yLmVycm9yID0gZXJyb3I7XG4gICAg
ICB9XG4gICAgfVxuICB9O1xuXG4gIHJldHVybiBzZWxlY3Rvcjtcbn1cblxuZnVuY3Rpb24gY29u
bmVjdEFkdmFuY2VkKFxuLypcbiAgc2VsZWN0b3JGYWN0b3J5IGlzIGEgZnVuYyB0aGF0IGlzIHJl
c3BvbnNpYmxlIGZvciByZXR1cm5pbmcgdGhlIHNlbGVjdG9yIGZ1bmN0aW9uIHVzZWQgdG9cbiAg
Y29tcHV0ZSBuZXcgcHJvcHMgZnJvbSBzdGF0ZSwgcHJvcHMsIGFuZCBkaXNwYXRjaC4gRm9yIGV4
YW1wbGU6XG4gICAgIGV4cG9ydCBkZWZhdWx0IGNvbm5lY3RBZHZhbmNlZCgoZGlzcGF0Y2gsIG9w
dGlvbnMpID0+IChzdGF0ZSwgcHJvcHMpID0+ICh7XG4gICAgICB0aGluZzogc3RhdGUudGhpbmdz
W3Byb3BzLnRoaW5nSWRdLFxuICAgICAgc2F2ZVRoaW5nOiBmaWVsZHMgPT4gZGlzcGF0Y2goYWN0
aW9uQ3JlYXRvcnMuc2F2ZVRoaW5nKHByb3BzLnRoaW5nSWQsIGZpZWxkcykpLFxuICAgIH0pKShZ
b3VyQ29tcG9uZW50KVxuICAgQWNjZXNzIHRvIGRpc3BhdGNoIGlzIHByb3ZpZGVkIHRvIHRoZSBm
YWN0b3J5IHNvIHNlbGVjdG9yRmFjdG9yaWVzIGNhbiBiaW5kIGFjdGlvbkNyZWF0b3JzXG4gIG91
dHNpZGUgb2YgdGhlaXIgc2VsZWN0b3IgYXMgYW4gb3B0aW1pemF0aW9uLiBPcHRpb25zIHBhc3Nl
ZCB0byBjb25uZWN0QWR2YW5jZWQgYXJlIHBhc3NlZCB0b1xuICB0aGUgc2VsZWN0b3JGYWN0b3J5
LCBhbG9uZyB3aXRoIGRpc3BsYXlOYW1lIGFuZCBXcmFwcGVkQ29tcG9uZW50LCBhcyB0aGUgc2Vj
b25kIGFyZ3VtZW50LlxuICAgTm90ZSB0aGF0IHNlbGVjdG9yRmFjdG9yeSBpcyByZXNwb25zaWJs
ZSBmb3IgYWxsIGNhY2hpbmcvbWVtb2l6YXRpb24gb2YgaW5ib3VuZCBhbmQgb3V0Ym91bmRcbiAg
cHJvcHMuIERvIG5vdCB1c2UgY29ubmVjdEFkdmFuY2VkIGRpcmVjdGx5IHdpdGhvdXQgbWVtb2l6
aW5nIHJlc3VsdHMgYmV0d2VlbiBjYWxscyB0byB5b3VyXG4gIHNlbGVjdG9yLCBvdGhlcndpc2Ug
dGhlIENvbm5lY3QgY29tcG9uZW50IHdpbGwgcmUtcmVuZGVyIG9uIGV2ZXJ5IHN0YXRlIG9yIHBy
b3BzIGNoYW5nZS5cbiovXG5zZWxlY3RvckZhY3RvcnkpIHtcbiAgdmFyIF9jb250ZXh0VHlwZXMs
IF9jaGlsZENvbnRleHRUeXBlcztcblxuICB2YXIgX3JlZiA9IGFyZ3VtZW50cy5sZW5ndGggPiAx
ICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDoge30sXG4gICAg
ICBfcmVmJGdldERpc3BsYXlOYW1lID0gX3JlZi5nZXREaXNwbGF5TmFtZSxcbiAgICAgIGdldERp
c3BsYXlOYW1lID0gX3JlZiRnZXREaXNwbGF5TmFtZSA9PT0gdW5kZWZpbmVkID8gZnVuY3Rpb24g
KG5hbWUpIHtcbiAgICByZXR1cm4gJ0Nvbm5lY3RBZHZhbmNlZCgnICsgbmFtZSArICcpJztcbiAg
fSA6IF9yZWYkZ2V0RGlzcGxheU5hbWUsXG4gICAgICBfcmVmJG1ldGhvZE5hbWUgPSBfcmVmLm1l
dGhvZE5hbWUsXG4gICAgICBtZXRob2ROYW1lID0gX3JlZiRtZXRob2ROYW1lID09PSB1bmRlZmlu
ZWQgPyAnY29ubmVjdEFkdmFuY2VkJyA6IF9yZWYkbWV0aG9kTmFtZSxcbiAgICAgIF9yZWYkcmVu
ZGVyQ291bnRQcm9wID0gX3JlZi5yZW5kZXJDb3VudFByb3AsXG4gICAgICByZW5kZXJDb3VudFBy
b3AgPSBfcmVmJHJlbmRlckNvdW50UHJvcCA9PT0gdW5kZWZpbmVkID8gdW5kZWZpbmVkIDogX3Jl
ZiRyZW5kZXJDb3VudFByb3AsXG4gICAgICBfcmVmJHNob3VsZEhhbmRsZVN0YXQgPSBfcmVmLnNo
b3VsZEhhbmRsZVN0YXRlQ2hhbmdlcyxcbiAgICAgIHNob3VsZEhhbmRsZVN0YXRlQ2hhbmdlcyA9
IF9yZWYkc2hvdWxkSGFuZGxlU3RhdCA9PT0gdW5kZWZpbmVkID8gdHJ1ZSA6IF9yZWYkc2hvdWxk
SGFuZGxlU3RhdCxcbiAgICAgIF9yZWYkc3RvcmVLZXkgPSBfcmVmLnN0b3JlS2V5LFxuICAgICAg
c3RvcmVLZXkgPSBfcmVmJHN0b3JlS2V5ID09PSB1bmRlZmluZWQgPyAnc3RvcmUnIDogX3JlZiRz
dG9yZUtleSxcbiAgICAgIF9yZWYkd2l0aFJlZiA9IF9yZWYud2l0aFJlZixcbiAgICAgIHdpdGhS
ZWYgPSBfcmVmJHdpdGhSZWYgPT09IHVuZGVmaW5lZCA/IGZhbHNlIDogX3JlZiR3aXRoUmVmLFxu
ICAgICAgY29ubmVjdE9wdGlvbnMgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMoX3JlZiwgWydn
ZXREaXNwbGF5TmFtZScsICdtZXRob2ROYW1lJywgJ3JlbmRlckNvdW50UHJvcCcsICdzaG91bGRI
YW5kbGVTdGF0ZUNoYW5nZXMnLCAnc3RvcmVLZXknLCAnd2l0aFJlZiddKTtcblxuICB2YXIgc3Vi
c2NyaXB0aW9uS2V5ID0gc3RvcmVLZXkgKyAnU3Vic2NyaXB0aW9uJztcbiAgdmFyIHZlcnNpb24g
PSBob3RSZWxvYWRpbmdWZXJzaW9uKys7XG5cbiAgdmFyIGNvbnRleHRUeXBlcyA9IChfY29udGV4
dFR5cGVzID0ge30sIF9jb250ZXh0VHlwZXNbc3RvcmVLZXldID0gX1Byb3BUeXBlcy5zdG9yZVNo
YXBlLCBfY29udGV4dFR5cGVzW3N1YnNjcmlwdGlvbktleV0gPSBfUHJvcFR5cGVzLnN1YnNjcmlw
dGlvblNoYXBlLCBfY29udGV4dFR5cGVzKTtcbiAgdmFyIGNoaWxkQ29udGV4dFR5cGVzID0gKF9j
aGlsZENvbnRleHRUeXBlcyA9IHt9LCBfY2hpbGRDb250ZXh0VHlwZXNbc3Vic2NyaXB0aW9uS2V5
XSA9IF9Qcm9wVHlwZXMuc3Vic2NyaXB0aW9uU2hhcGUsIF9jaGlsZENvbnRleHRUeXBlcyk7XG5c
biAgcmV0dXJuIGZ1bmN0aW9uIHdyYXBXaXRoQ29ubmVjdChXcmFwcGVkQ29tcG9uZW50KSB7XG4g
ICAgKDAsIF9pbnZhcmlhbnQyLmRlZmF1bHQpKHR5cGVvZiBXcmFwcGVkQ29tcG9uZW50ID09ICdm
dW5jdGlvbicsICdZb3UgbXVzdCBwYXNzIGEgY29tcG9uZW50IHRvIHRoZSBmdW5jdGlvbiByZXR1
cm5lZCBieSAnICsgKCdjb25uZWN0LiBJbnN0ZWFkIHJlY2VpdmVkICcgKyBKU09OLnN0cmluZ2lm
eShXcmFwcGVkQ29tcG9uZW50KSkpO1xuXG4gICAgdmFyIHdyYXBwZWRDb21wb25lbnROYW1lID0g
V3JhcHBlZENvbXBvbmVudC5kaXNwbGF5TmFtZSB8fCBXcmFwcGVkQ29tcG9uZW50Lm5hbWUgfHwg
J0NvbXBvbmVudCc7XG5cbiAgICB2YXIgZGlzcGxheU5hbWUgPSBnZXREaXNwbGF5TmFtZSh3cmFw
cGVkQ29tcG9uZW50TmFtZSk7XG5cbiAgICB2YXIgc2VsZWN0b3JGYWN0b3J5T3B0aW9ucyA9IF9l
eHRlbmRzKHt9LCBjb25uZWN0T3B0aW9ucywge1xuICAgICAgZ2V0RGlzcGxheU5hbWU6IGdldERp
c3BsYXlOYW1lLFxuICAgICAgbWV0aG9kTmFtZTogbWV0aG9kTmFtZSxcbiAgICAgIHJlbmRlckNv
dW50UHJvcDogcmVuZGVyQ291bnRQcm9wLFxuICAgICAgc2hvdWxkSGFuZGxlU3RhdGVDaGFuZ2Vz
OiBzaG91bGRIYW5kbGVTdGF0ZUNoYW5nZXMsXG4gICAgICBzdG9yZUtleTogc3RvcmVLZXksXG4g
ICAgICB3aXRoUmVmOiB3aXRoUmVmLFxuICAgICAgZGlzcGxheU5hbWU6IGRpc3BsYXlOYW1lLFxu
ICAgICAgd3JhcHBlZENvbXBvbmVudE5hbWU6IHdyYXBwZWRDb21wb25lbnROYW1lLFxuICAgICAg
V3JhcHBlZENvbXBvbmVudDogV3JhcHBlZENvbXBvbmVudFxuICAgIH0pO1xuXG4gICAgdmFyIENv
bm5lY3QgPSBmdW5jdGlvbiAoX0NvbXBvbmVudCkge1xuICAgICAgX2luaGVyaXRzKENvbm5lY3Qs
IF9Db21wb25lbnQpO1xuXG4gICAgICBmdW5jdGlvbiBDb25uZWN0KHByb3BzLCBjb250ZXh0KSB7
XG4gICAgICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBDb25uZWN0KTtcblxuICAgICAgICB2YXIg
X3RoaXMgPSBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybih0aGlzLCBfQ29tcG9uZW50LmNhbGwo
dGhpcywgcHJvcHMsIGNvbnRleHQpKTtcblxuICAgICAgICBfdGhpcy52ZXJzaW9uID0gdmVyc2lv
bjtcbiAgICAgICAgX3RoaXMuc3RhdGUgPSB7fTtcbiAgICAgICAgX3RoaXMucmVuZGVyQ291bnQg
PSAwO1xuICAgICAgICBfdGhpcy5zdG9yZSA9IHByb3BzW3N0b3JlS2V5XSB8fCBjb250ZXh0W3N0
b3JlS2V5XTtcbiAgICAgICAgX3RoaXMucHJvcHNNb2RlID0gQm9vbGVhbihwcm9wc1tzdG9yZUtl
eV0pO1xuICAgICAgICBfdGhpcy5zZXRXcmFwcGVkSW5zdGFuY2UgPSBfdGhpcy5zZXRXcmFwcGVk
SW5zdGFuY2UuYmluZChfdGhpcyk7XG5cbiAgICAgICAgKDAsIF9pbnZhcmlhbnQyLmRlZmF1bHQp
KF90aGlzLnN0b3JlLCAnQ291bGQgbm90IGZpbmQgXCInICsgc3RvcmVLZXkgKyAnXCIgaW4gZWl0
aGVyIHRoZSBjb250ZXh0IG9yIHByb3BzIG9mICcgKyAoJ1wiJyArIGRpc3BsYXlOYW1lICsgJ1wi
LiBFaXRoZXIgd3JhcCB0aGUgcm9vdCBjb21wb25lbnQgaW4gYSA8UHJvdmlkZXI+LCAnKSArICgn
b3IgZXhwbGljaXRseSBwYXNzIFwiJyArIHN0b3JlS2V5ICsgJ1wiIGFzIGEgcHJvcCB0byBcIicg
KyBkaXNwbGF5TmFtZSArICdcIi4nKSk7XG5cbiAgICAgICAgX3RoaXMuaW5pdFNlbGVjdG9yKCk7
XG4gICAgICAgIF90aGlzLmluaXRTdWJzY3JpcHRpb24oKTtcbiAgICAgICAgcmV0dXJuIF90aGlz
O1xuICAgICAgfVxuXG4gICAgICBDb25uZWN0LnByb3RvdHlwZS5nZXRDaGlsZENvbnRleHQgPSBm
dW5jdGlvbiBnZXRDaGlsZENvbnRleHQoKSB7XG4gICAgICAgIHZhciBfcmVmMjtcblxuICAgICAg
ICAvLyBJZiB0aGlzIGNvbXBvbmVudCByZWNlaXZlZCBzdG9yZSBmcm9tIHByb3BzLCBpdHMgc3Vi
c2NyaXB0aW9uIHNob3VsZCBiZSB0cmFuc3BhcmVudFxuICAgICAgICAvLyB0byBhbnkgZGVzY2Vu
ZGFudHMgcmVjZWl2aW5nIHN0b3JlK3N1YnNjcmlwdGlvbiBmcm9tIGNvbnRleHQ7IGl0IHBhc3Nl
cyBhbG9uZ1xuICAgICAgICAvLyBzdWJzY3JpcHRpb24gcGFzc2VkIHRvIGl0LiBPdGhlcndpc2Us
IGl0IHNoYWRvd3MgdGhlIHBhcmVudCBzdWJzY3JpcHRpb24sIHdoaWNoIGFsbG93c1xuICAgICAg
ICAvLyBDb25uZWN0IHRvIGNvbnRyb2wgb3JkZXJpbmcgb2Ygbm90aWZpY2F0aW9ucyB0byBmbG93
IHRvcC1kb3duLlxuICAgICAgICB2YXIgc3Vic2NyaXB0aW9uID0gdGhpcy5wcm9wc01vZGUgPyBu
dWxsIDogdGhpcy5zdWJzY3JpcHRpb247XG4gICAgICAgIHJldHVybiBfcmVmMiA9IHt9LCBfcmVm
MltzdWJzY3JpcHRpb25LZXldID0gc3Vic2NyaXB0aW9uIHx8IHRoaXMuY29udGV4dFtzdWJzY3Jp
cHRpb25LZXldLCBfcmVmMjtcbiAgICAgIH07XG5cbiAgICAgIENvbm5lY3QucHJvdG90eXBlLmNv
bXBvbmVudERpZE1vdW50ID0gZnVuY3Rpb24gY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgICAg
IGlmICghc2hvdWxkSGFuZGxlU3RhdGVDaGFuZ2VzKSByZXR1cm47XG5cbiAgICAgICAgLy8gY29t
cG9uZW50V2lsbE1vdW50IGZpcmVzIGR1cmluZyBzZXJ2ZXIgc2lkZSByZW5kZXJpbmcsIGJ1dCBj
b21wb25lbnREaWRNb3VudCBhbmRcbiAgICAgICAgLy8gY29tcG9uZW50V2lsbFVubW91bnQgZG8g
bm90LiBCZWNhdXNlIG9mIHRoaXMsIHRyeVN1YnNjcmliZSBoYXBwZW5zIGR1cmluZyAuLi5kaWRN
b3VudC5cbiAgICAgICAgLy8gT3RoZXJ3aXNlLCB1bnN1YnNjcmlwdGlvbiB3b3VsZCBuZXZlciB0
YWtlIHBsYWNlIGR1cmluZyBTU1IsIGNhdXNpbmcgYSBtZW1vcnkgbGVhay5cbiAgICAgICAgLy8g
VG8gaGFuZGxlIHRoZSBjYXNlIHdoZXJlIGEgY2hpbGQgY29tcG9uZW50IG1heSBoYXZlIHRyaWdn
ZXJlZCBhIHN0YXRlIGNoYW5nZSBieVxuICAgICAgICAvLyBkaXNwYXRjaGluZyBhbiBhY3Rpb24g
aW4gaXRzIGNvbXBvbmVudFdpbGxNb3VudCwgd2UgaGF2ZSB0byByZS1ydW4gdGhlIHNlbGVjdCBh
bmQgbWF5YmVcbiAgICAgICAgLy8gcmUtcmVuZGVyLlxuICAgICAgICB0aGlzLnN1YnNjcmlwdGlv
bi50cnlTdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy5zZWxlY3Rvci5ydW4odGhpcy5wcm9wcyk7
XG4gICAgICAgIGlmICh0aGlzLnNlbGVjdG9yLnNob3VsZENvbXBvbmVudFVwZGF0ZSkgdGhpcy5m
b3JjZVVwZGF0ZSgpO1xuICAgICAgfTtcblxuICAgICAgQ29ubmVjdC5wcm90b3R5cGUuY29tcG9u
ZW50V2lsbFJlY2VpdmVQcm9wcyA9IGZ1bmN0aW9uIGNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMo
bmV4dFByb3BzKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0b3IucnVuKG5leHRQcm9wcyk7XG4gICAg
ICB9O1xuXG4gICAgICBDb25uZWN0LnByb3RvdHlwZS5zaG91bGRDb21wb25lbnRVcGRhdGUgPSBm
dW5jdGlvbiBzaG91bGRDb21wb25lbnRVcGRhdGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNl
bGVjdG9yLnNob3VsZENvbXBvbmVudFVwZGF0ZTtcbiAgICAgIH07XG5cbiAgICAgIENvbm5lY3Qu
cHJvdG90eXBlLmNvbXBvbmVudFdpbGxVbm1vdW50ID0gZnVuY3Rpb24gY29tcG9uZW50V2lsbFVu
bW91bnQoKSB7XG4gICAgICAgIGlmICh0aGlzLnN1YnNjcmlwdGlvbikgdGhpcy5zdWJzY3JpcHRp
b24udHJ5VW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb24gPSBudWxsO1xu
ICAgICAgICB0aGlzLm5vdGlmeU5lc3RlZFN1YnMgPSBub29wO1xuICAgICAgICB0aGlzLnN0b3Jl
ID0gbnVsbDtcbiAgICAgICAgdGhpcy5zZWxlY3Rvci5ydW4gPSBub29wO1xuICAgICAgICB0aGlz
LnNlbGVjdG9yLnNob3VsZENvbXBvbmVudFVwZGF0ZSA9IGZhbHNlO1xuICAgICAgfTtcblxuICAg
ICAgQ29ubmVjdC5wcm90b3R5cGUuZ2V0V3JhcHBlZEluc3RhbmNlID0gZnVuY3Rpb24gZ2V0V3Jh
cHBlZEluc3RhbmNlKCkge1xuICAgICAgICAoMCwgX2ludmFyaWFudDIuZGVmYXVsdCkod2l0aFJl
ZiwgJ1RvIGFjY2VzcyB0aGUgd3JhcHBlZCBpbnN0YW5jZSwgeW91IG5lZWQgdG8gc3BlY2lmeSAn
ICsgKCd7IHdpdGhSZWY6IHRydWUgfSBpbiB0aGUgb3B0aW9ucyBhcmd1bWVudCBvZiB0aGUgJyAr
IG1ldGhvZE5hbWUgKyAnKCkgY2FsbC4nKSk7XG4gICAgICAgIHJldHVybiB0aGlzLndyYXBwZWRJ
bnN0YW5jZTtcbiAgICAgIH07XG5cbiAgICAgIENvbm5lY3QucHJvdG90eXBlLnNldFdyYXBwZWRJ
bnN0YW5jZSA9IGZ1bmN0aW9uIHNldFdyYXBwZWRJbnN0YW5jZShyZWYpIHtcbiAgICAgICAgdGhp
cy53cmFwcGVkSW5zdGFuY2UgPSByZWY7XG4gICAgICB9O1xuXG4gICAgICBDb25uZWN0LnByb3Rv
dHlwZS5pbml0U2VsZWN0b3IgPSBmdW5jdGlvbiBpbml0U2VsZWN0b3IoKSB7XG4gICAgICAgIHZh
ciBzb3VyY2VTZWxlY3RvciA9IHNlbGVjdG9yRmFjdG9yeSh0aGlzLnN0b3JlLmRpc3BhdGNoLCBz
ZWxlY3RvckZhY3RvcnlPcHRpb25zKTtcbiAgICAgICAgdGhpcy5zZWxlY3RvciA9IG1ha2VTZWxl
Y3RvclN0YXRlZnVsKHNvdXJjZVNlbGVjdG9yLCB0aGlzLnN0b3JlKTtcbiAgICAgICAgdGhpcy5z
ZWxlY3Rvci5ydW4odGhpcy5wcm9wcyk7XG4gICAgICB9O1xuXG4gICAgICBDb25uZWN0LnByb3Rv
dHlwZS5pbml0U3Vic2NyaXB0aW9uID0gZnVuY3Rpb24gaW5pdFN1YnNjcmlwdGlvbigpIHtcbiAg
ICAgICAgaWYgKCFzaG91bGRIYW5kbGVTdGF0ZUNoYW5nZXMpIHJldHVybjtcblxuICAgICAgICAv
LyBwYXJlbnRTdWIncyBzb3VyY2Ugc2hvdWxkIG1hdGNoIHdoZXJlIHN0b3JlIGNhbWUgZnJvbTog
cHJvcHMgdnMuIGNvbnRleHQuIEEgY29tcG9uZW50XG4gICAgICAgIC8vIGNvbm5lY3RlZCB0byB0
aGUgc3RvcmUgdmlhIHByb3BzIHNob3VsZG4ndCB1c2Ugc3Vic2NyaXB0aW9uIGZyb20gY29udGV4
dCwgb3IgdmljZSB2ZXJzYS5cbiAgICAgICAgdmFyIHBhcmVudFN1YiA9ICh0aGlzLnByb3BzTW9k
ZSA/IHRoaXMucHJvcHMgOiB0aGlzLmNvbnRleHQpW3N1YnNjcmlwdGlvbktleV07XG4gICAgICAg
IHRoaXMuc3Vic2NyaXB0aW9uID0gbmV3IF9TdWJzY3JpcHRpb24yLmRlZmF1bHQodGhpcy5zdG9y
ZSwgcGFyZW50U3ViLCB0aGlzLm9uU3RhdGVDaGFuZ2UuYmluZCh0aGlzKSk7XG5cbiAgICAgICAg
Ly8gYG5vdGlmeU5lc3RlZFN1YnNgIGlzIGR1cGxpY2F0ZWQgdG8gaGFuZGxlIHRoZSBjYXNlIHdo
ZXJlIHRoZSBjb21wb25lbnQgaXMgIHVubW91bnRlZCBpblxuICAgICAgICAvLyB0aGUgbWlkZGxl
IG9mIHRoZSBub3RpZmljYXRpb24gbG9vcCwgd2hlcmUgYHRoaXMuc3Vic2NyaXB0aW9uYCB3aWxs
IHRoZW4gYmUgbnVsbC4gQW5cbiAgICAgICAgLy8gZXh0cmEgbnVsbCBjaGVjayBldmVyeSBjaGFu
Z2UgY2FuIGJlIGF2b2lkZWQgYnkgY29weWluZyB0aGUgbWV0aG9kIG9udG8gYHRoaXNgIGFuZCB0
aGVuXG4gICAgICAgIC8vIHJlcGxhY2luZyBpdCB3aXRoIGEgbm8tb3Agb24gdW5tb3VudC4gVGhp
cyBjYW4gcHJvYmFibHkgYmUgYXZvaWRlZCBpZiBTdWJzY3JpcHRpb24nc1xuICAgICAgICAvLyBs
aXN0ZW5lcnMgbG9naWMgaXMgY2hhbmdlZCB0byBub3QgY2FsbCBsaXN0ZW5lcnMgdGhhdCBoYXZl
IGJlZW4gdW5zdWJzY3JpYmVkIGluIHRoZVxuICAgICAgICAvLyBtaWRkbGUgb2YgdGhlIG5vdGlm
aWNhdGlvbiBsb29wLlxuICAgICAgICB0aGlzLm5vdGlmeU5lc3RlZFN1YnMgPSB0aGlzLnN1YnNj
cmlwdGlvbi5ub3RpZnlOZXN0ZWRTdWJzLmJpbmQodGhpcy5zdWJzY3JpcHRpb24pO1xuICAgICAg
fTtcblxuICAgICAgQ29ubmVjdC5wcm90b3R5cGUub25TdGF0ZUNoYW5nZSA9IGZ1bmN0aW9uIG9u
U3RhdGVDaGFuZ2UoKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0b3IucnVuKHRoaXMucHJvcHMpO1xu
XG4gICAgICAgIGlmICghdGhpcy5zZWxlY3Rvci5zaG91bGRDb21wb25lbnRVcGRhdGUpIHtcbiAg
ICAgICAgICB0aGlzLm5vdGlmeU5lc3RlZFN1YnMoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAg
ICAgICB0aGlzLmNvbXBvbmVudERpZFVwZGF0ZSA9IHRoaXMubm90aWZ5TmVzdGVkU3Vic09uQ29t
cG9uZW50RGlkVXBkYXRlO1xuICAgICAgICAgIHRoaXMuc2V0U3RhdGUoZHVtbXlTdGF0ZSk7XG4g
ICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIENvbm5lY3QucHJvdG90eXBlLm5vdGlmeU5lc3Rl
ZFN1YnNPbkNvbXBvbmVudERpZFVwZGF0ZSA9IGZ1bmN0aW9uIG5vdGlmeU5lc3RlZFN1YnNPbkNv
bXBvbmVudERpZFVwZGF0ZSgpIHtcbiAgICAgICAgLy8gYGNvbXBvbmVudERpZFVwZGF0ZWAgaXMg
Y29uZGl0aW9uYWxseSBpbXBsZW1lbnRlZCB3aGVuIGBvblN0YXRlQ2hhbmdlYCBkZXRlcm1pbmVz
IGl0XG4gICAgICAgIC8vIG5lZWRzIHRvIG5vdGlmeSBuZXN0ZWQgc3Vicy4gT25jZSBjYWxsZWQs
IGl0IHVuaW1wbGVtZW50cyBpdHNlbGYgdW50aWwgZnVydGhlciBzdGF0ZVxuICAgICAgICAvLyBj
aGFuZ2VzIG9jY3VyLiBEb2luZyBpdCB0aGlzIHdheSB2cyBoYXZpbmcgYSBwZXJtYW5lbnQgYGNv
bXBvbmVudERpZFVwZGF0ZWAgdGhhdCBkb2VzXG4gICAgICAgIC8vIGEgYm9vbGVhbiBjaGVjayBl
dmVyeSB0aW1lIGF2b2lkcyBhbiBleHRyYSBtZXRob2QgY2FsbCBtb3N0IG9mIHRoZSB0aW1lLCBy
ZXN1bHRpbmdcbiAgICAgICAgLy8gaW4gc29tZSBwZXJmIGJvb3N0LlxuICAgICAgICB0aGlzLmNv
bXBvbmVudERpZFVwZGF0ZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy5ub3RpZnlOZXN0ZWRT
dWJzKCk7XG4gICAgICB9O1xuXG4gICAgICBDb25uZWN0LnByb3RvdHlwZS5pc1N1YnNjcmliZWQg
PSBmdW5jdGlvbiBpc1N1YnNjcmliZWQoKSB7XG4gICAgICAgIHJldHVybiBCb29sZWFuKHRoaXMu
c3Vic2NyaXB0aW9uKSAmJiB0aGlzLnN1YnNjcmlwdGlvbi5pc1N1YnNjcmliZWQoKTtcbiAgICAg
IH07XG5cbiAgICAgIENvbm5lY3QucHJvdG90eXBlLmFkZEV4dHJhUHJvcHMgPSBmdW5jdGlvbiBh
ZGRFeHRyYVByb3BzKHByb3BzKSB7XG4gICAgICAgIGlmICghd2l0aFJlZiAmJiAhcmVuZGVyQ291
bnRQcm9wICYmICEodGhpcy5wcm9wc01vZGUgJiYgdGhpcy5zdWJzY3JpcHRpb24pKSByZXR1cm4g
cHJvcHM7XG4gICAgICAgIC8vIG1ha2UgYSBzaGFsbG93IGNvcHkgc28gdGhhdCBmaWVsZHMgYWRk
ZWQgZG9uJ3QgbGVhayB0byB0aGUgb3JpZ2luYWwgc2VsZWN0b3IuXG4gICAgICAgIC8vIHRoaXMg
aXMgZXNwZWNpYWxseSBpbXBvcnRhbnQgZm9yICdyZWYnIHNpbmNlIHRoYXQncyBhIHJlZmVyZW5j
ZSBiYWNrIHRvIHRoZSBjb21wb25lbnRcbiAgICAgICAgLy8gaW5zdGFuY2UuIGEgc2luZ2xldG9u
IG1lbW9pemVkIHNlbGVjdG9yIHdvdWxkIHRoZW4gYmUgaG9sZGluZyBhIHJlZmVyZW5jZSB0byB0
aGVcbiAgICAgICAgLy8gaW5zdGFuY2UsIHByZXZlbnRpbmcgdGhlIGluc3RhbmNlIGZyb20gYmVp
bmcgZ2FyYmFnZSBjb2xsZWN0ZWQsIGFuZCB0aGF0IHdvdWxkIGJlIGJhZFxuICAgICAgICB2YXIg
d2l0aEV4dHJhcyA9IF9leHRlbmRzKHt9LCBwcm9wcyk7XG4gICAgICAgIGlmICh3aXRoUmVmKSB3
aXRoRXh0cmFzLnJlZiA9IHRoaXMuc2V0V3JhcHBlZEluc3RhbmNlO1xuICAgICAgICBpZiAocmVu
ZGVyQ291bnRQcm9wKSB3aXRoRXh0cmFzW3JlbmRlckNvdW50UHJvcF0gPSB0aGlzLnJlbmRlckNv
dW50Kys7XG4gICAgICAgIGlmICh0aGlzLnByb3BzTW9kZSAmJiB0aGlzLnN1YnNjcmlwdGlvbikg
d2l0aEV4dHJhc1tzdWJzY3JpcHRpb25LZXldID0gdGhpcy5zdWJzY3JpcHRpb247XG4gICAgICAg
IHJldHVybiB3aXRoRXh0cmFzO1xuICAgICAgfTtcblxuICAgICAgQ29ubmVjdC5wcm90b3R5cGUu
cmVuZGVyID0gZnVuY3Rpb24gcmVuZGVyKCkge1xuICAgICAgICB2YXIgc2VsZWN0b3IgPSB0aGlz
LnNlbGVjdG9yO1xuICAgICAgICBzZWxlY3Rvci5zaG91bGRDb21wb25lbnRVcGRhdGUgPSBmYWxz
ZTtcblxuICAgICAgICBpZiAoc2VsZWN0b3IuZXJyb3IpIHtcbiAgICAgICAgICB0aHJvdyBzZWxl
Y3Rvci5lcnJvcjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gKDAsIF9yZWFj
dC5jcmVhdGVFbGVtZW50KShXcmFwcGVkQ29tcG9uZW50LCB0aGlzLmFkZEV4dHJhUHJvcHMoc2Vs
ZWN0b3IucHJvcHMpKTtcbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgICAgcmV0dXJuIENvbm5l
Y3Q7XG4gICAgfShfcmVhY3QuQ29tcG9uZW50KTtcblxuICAgIENvbm5lY3QuV3JhcHBlZENvbXBv
bmVudCA9IFdyYXBwZWRDb21wb25lbnQ7XG4gICAgQ29ubmVjdC5kaXNwbGF5TmFtZSA9IGRpc3Bs
YXlOYW1lO1xuICAgIENvbm5lY3QuY2hpbGRDb250ZXh0VHlwZXMgPSBjaGlsZENvbnRleHRUeXBl
cztcbiAgICBDb25uZWN0LmNvbnRleHRUeXBlcyA9IGNvbnRleHRUeXBlcztcbiAgICBDb25uZWN0
LnByb3BUeXBlcyA9IGNvbnRleHRUeXBlcztcblxuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VO
ViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICBDb25uZWN0LnByb3RvdHlwZS5jb21wb25lbnRX
aWxsVXBkYXRlID0gZnVuY3Rpb24gY29tcG9uZW50V2lsbFVwZGF0ZSgpIHtcbiAgICAgICAgdmFy
IF90aGlzMiA9IHRoaXM7XG5cbiAgICAgICAgLy8gV2UgYXJlIGhvdCByZWxvYWRpbmchXG4gICAg
ICAgIGlmICh0aGlzLnZlcnNpb24gIT09IHZlcnNpb24pIHtcbiAgICAgICAgICB0aGlzLnZlcnNp
b24gPSB2ZXJzaW9uO1xuICAgICAgICAgIHRoaXMuaW5pdFNlbGVjdG9yKCk7XG5cbiAgICAgICAg
ICAvLyBJZiBhbnkgY29ubmVjdGVkIGRlc2NlbmRhbnRzIGRvbid0IGhvdCByZWxvYWQgKGFuZCBy
ZXN1YnNjcmliZSBpbiB0aGUgcHJvY2VzcyksIHRoZWlyXG4gICAgICAgICAgLy8gbGlzdGVuZXJz
IHdpbGwgYmUgbG9zdCB3aGVuIHdlIHVuc3Vic2NyaWJlLiBVbmZvcnR1bmF0ZWx5LCBieSBjb3B5
aW5nIG92ZXIgYWxsXG4gICAgICAgICAgLy8gbGlzdGVuZXJzLCB0aGlzIGRvZXMgbWVhbiB0aGF0
IHRoZSBvbGQgdmVyc2lvbnMgb2YgY29ubmVjdGVkIGRlc2NlbmRhbnRzIHdpbGwgc3RpbGwgYmVc
biAgICAgICAgICAvLyBub3RpZmllZCBvZiBzdGF0ZSBjaGFuZ2VzOyBob3dldmVyLCB0aGVpciBv
blN0YXRlQ2hhbmdlIGZ1bmN0aW9uIGlzIGEgbm8tb3Agc28gdGhpc1xuICAgICAgICAgIC8vIGlz
bid0IGEgaHVnZSBkZWFsLlxuICAgICAgICAgIHZhciBvbGRMaXN0ZW5lcnMgPSBbXTtcblxuICAg
ICAgICAgIGlmICh0aGlzLnN1YnNjcmlwdGlvbikge1xuICAgICAgICAgICAgb2xkTGlzdGVuZXJz
ID0gdGhpcy5zdWJzY3JpcHRpb24ubGlzdGVuZXJzLmdldCgpO1xuICAgICAgICAgICAgdGhpcy5z
dWJzY3JpcHRpb24udHJ5VW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhp
cy5pbml0U3Vic2NyaXB0aW9uKCk7XG4gICAgICAgICAgaWYgKHNob3VsZEhhbmRsZVN0YXRlQ2hh
bmdlcykge1xuICAgICAgICAgICAgdGhpcy5zdWJzY3JpcHRpb24udHJ5U3Vic2NyaWJlKCk7XG4g
ICAgICAgICAgICBvbGRMaXN0ZW5lcnMuZm9yRWFjaChmdW5jdGlvbiAobGlzdGVuZXIpIHtcbiAg
ICAgICAgICAgICAgcmV0dXJuIF90aGlzMi5zdWJzY3JpcHRpb24ubGlzdGVuZXJzLnN1YnNjcmli
ZShsaXN0ZW5lcik7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAg
ICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuICgwLCBfaG9pc3ROb25SZWFjdFN0YXRpY3MyLmRl
ZmF1bHQpKENvbm5lY3QsIFdyYXBwZWRDb21wb25lbnQpO1xuICB9O1xufVxuXG5cbi8qKioqKioq
KioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0LXJlZHV4L2xpYi9j
b21wb25lbnRzL2Nvbm5lY3RBZHZhbmNlZC5qc1xuICoqIG1vZHVsZSBpZCA9IDc5XG4gKiogbW9k
dWxlIGNodW5rcyA9IDBcbiAqKi8iLCIndXNlIHN0cmljdCc7XG5cbmV4cG9ydHMuX19lc01vZHVs
ZSA9IHRydWU7XG5leHBvcnRzLndyYXBNYXBUb1Byb3BzQ29uc3RhbnQgPSB3cmFwTWFwVG9Qcm9w
c0NvbnN0YW50O1xuZXhwb3J0cy5nZXREZXBlbmRzT25Pd25Qcm9wcyA9IGdldERlcGVuZHNPbk93
blByb3BzO1xuZXhwb3J0cy53cmFwTWFwVG9Qcm9wc0Z1bmMgPSB3cmFwTWFwVG9Qcm9wc0Z1bmM7
XG5cbnZhciBfdmVyaWZ5UGxhaW5PYmplY3QgPSByZXF1aXJlKCcuLi91dGlscy92ZXJpZnlQbGFp
bk9iamVjdCcpO1xuXG52YXIgX3ZlcmlmeVBsYWluT2JqZWN0MiA9IF9pbnRlcm9wUmVxdWlyZURl
ZmF1bHQoX3ZlcmlmeVBsYWluT2JqZWN0KTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVm
YXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVs
dDogb2JqIH07IH1cblxuZnVuY3Rpb24gd3JhcE1hcFRvUHJvcHNDb25zdGFudChnZXRDb25zdGFu
dCkge1xuICByZXR1cm4gZnVuY3Rpb24gaW5pdENvbnN0YW50U2VsZWN0b3IoZGlzcGF0Y2gsIG9w
dGlvbnMpIHtcbiAgICB2YXIgY29uc3RhbnQgPSBnZXRDb25zdGFudChkaXNwYXRjaCwgb3B0aW9u
cyk7XG5cbiAgICBmdW5jdGlvbiBjb25zdGFudFNlbGVjdG9yKCkge1xuICAgICAgcmV0dXJuIGNv
bnN0YW50O1xuICAgIH1cbiAgICBjb25zdGFudFNlbGVjdG9yLmRlcGVuZHNPbk93blByb3BzID0g
ZmFsc2U7XG4gICAgcmV0dXJuIGNvbnN0YW50U2VsZWN0b3I7XG4gIH07XG59XG5cbi8vIGRlcGVu
ZHNPbk93blByb3BzIGlzIHVzZWQgYnkgY3JlYXRlTWFwVG9Qcm9wc1Byb3h5IHRvIGRldGVybWlu
ZSB3aGV0aGVyIHRvIHBhc3MgcHJvcHMgYXMgYXJnc1xuLy8gdG8gdGhlIG1hcFRvUHJvcHMgZnVu
Y3Rpb24gYmVpbmcgd3JhcHBlZC4gSXQgaXMgYWxzbyB1c2VkIGJ5IG1ha2VQdXJlUHJvcHNTZWxl
Y3RvciB0byBkZXRlcm1pbmVcbi8vIHdoZXRoZXIgbWFwVG9Qcm9wcyBuZWVkcyB0byBiZSBpbnZv
a2VkIHdoZW4gcHJvcHMgaGF2ZSBjaGFuZ2VkLlxuLy8gXG4vLyBBIGxlbmd0aCBvZiBvbmUgc2ln
bmFscyB0aGF0IG1hcFRvUHJvcHMgZG9lcyBub3QgZGVwZW5kIG9uIHByb3BzIGZyb20gdGhlIHBh
cmVudCBjb21wb25lbnQuXG4vLyBBIGxlbmd0aCBvZiB6ZXJvIGlzIGFzc3VtZWQgdG8gbWVhbiBt
YXBUb1Byb3BzIGlzIGdldHRpbmcgYXJncyB2aWEgYXJndW1lbnRzIG9yIC4uLmFyZ3MgYW5kXG4v
LyB0aGVyZWZvcmUgbm90IHJlcG9ydGluZyBpdHMgbGVuZ3RoIGFjY3VyYXRlbHkuLlxuZnVuY3Rp
b24gZ2V0RGVwZW5kc09uT3duUHJvcHMobWFwVG9Qcm9wcykge1xuICByZXR1cm4gbWFwVG9Qcm9w
cy5kZXBlbmRzT25Pd25Qcm9wcyAhPT0gbnVsbCAmJiBtYXBUb1Byb3BzLmRlcGVuZHNPbk93blBy
b3BzICE9PSB1bmRlZmluZWQgPyBCb29sZWFuKG1hcFRvUHJvcHMuZGVwZW5kc09uT3duUHJvcHMp
IDogbWFwVG9Qcm9wcy5sZW5ndGggIT09IDE7XG59XG5cbi8vIFVzZWQgYnkgd2hlbk1hcFN0YXRl
VG9Qcm9wc0lzRnVuY3Rpb24gYW5kIHdoZW5NYXBEaXNwYXRjaFRvUHJvcHNJc0Z1bmN0aW9uLFxu
Ly8gdGhpcyBmdW5jdGlvbiB3cmFwcyBtYXBUb1Byb3BzIGluIGEgcHJveHkgZnVuY3Rpb24gd2hp
Y2ggZG9lcyBzZXZlcmFsIHRoaW5nczpcbi8vIFxuLy8gICogRGV0ZWN0cyB3aGV0aGVyIHRoZSBt
YXBUb1Byb3BzIGZ1bmN0aW9uIGJlaW5nIGNhbGxlZCBkZXBlbmRzIG9uIHByb3BzLCB3aGljaFxu
Ly8gICAgaXMgdXNlZCBieSBzZWxlY3RvckZhY3RvcnkgdG8gZGVjaWRlIGlmIGl0IHNob3VsZCBy
ZWludm9rZSBvbiBwcm9wcyBjaGFuZ2VzLlxuLy8gICAgXG4vLyAgKiBPbiBmaXJzdCBjYWxsLCBo
YW5kbGVzIG1hcFRvUHJvcHMgaWYgcmV0dXJucyBhbm90aGVyIGZ1bmN0aW9uLCBhbmQgdHJlYXRz
IHRoYXRcbi8vICAgIG5ldyBmdW5jdGlvbiBhcyB0aGUgdHJ1ZSBtYXBUb1Byb3BzIGZvciBzdWJz
ZXF1ZW50IGNhbGxzLlxuLy8gICAgXG4vLyAgKiBPbiBmaXJzdCBjYWxsLCB2ZXJpZmllcyB0aGUg
Zmlyc3QgcmVzdWx0IGlzIGEgcGxhaW4gb2JqZWN0LCBpbiBvcmRlciB0byB3YXJuXG4vLyAgICB0
aGUgZGV2ZWxvcGVyIHRoYXQgdGhlaXIgbWFwVG9Qcm9wcyBmdW5jdGlvbiBpcyBub3QgcmV0dXJu
aW5nIGEgdmFsaWQgcmVzdWx0LlxuLy8gICAgXG5mdW5jdGlvbiB3cmFwTWFwVG9Qcm9wc0Z1bmMo
bWFwVG9Qcm9wcywgbWV0aG9kTmFtZSkge1xuICByZXR1cm4gZnVuY3Rpb24gaW5pdFByb3h5U2Vs
ZWN0b3IoZGlzcGF0Y2gsIF9yZWYpIHtcbiAgICB2YXIgZGlzcGxheU5hbWUgPSBfcmVmLmRpc3Bs
YXlOYW1lO1xuXG4gICAgdmFyIHByb3h5ID0gZnVuY3Rpb24gbWFwVG9Qcm9wc1Byb3h5KHN0YXRl
T3JEaXNwYXRjaCwgb3duUHJvcHMpIHtcbiAgICAgIHJldHVybiBwcm94eS5kZXBlbmRzT25Pd25Q
cm9wcyA/IHByb3h5Lm1hcFRvUHJvcHMoc3RhdGVPckRpc3BhdGNoLCBvd25Qcm9wcykgOiBwcm94
eS5tYXBUb1Byb3BzKHN0YXRlT3JEaXNwYXRjaCk7XG4gICAgfTtcblxuICAgIC8vIGFsbG93IGRl
dGVjdEZhY3RvcnlBbmRWZXJpZnkgdG8gZ2V0IG93blByb3BzXG4gICAgcHJveHkuZGVwZW5kc09u
T3duUHJvcHMgPSB0cnVlO1xuXG4gICAgcHJveHkubWFwVG9Qcm9wcyA9IGZ1bmN0aW9uIGRldGVj
dEZhY3RvcnlBbmRWZXJpZnkoc3RhdGVPckRpc3BhdGNoLCBvd25Qcm9wcykge1xuICAgICAgcHJv
eHkubWFwVG9Qcm9wcyA9IG1hcFRvUHJvcHM7XG4gICAgICBwcm94eS5kZXBlbmRzT25Pd25Qcm9w
cyA9IGdldERlcGVuZHNPbk93blByb3BzKG1hcFRvUHJvcHMpO1xuICAgICAgdmFyIHByb3BzID0g
cHJveHkoc3RhdGVPckRpc3BhdGNoLCBvd25Qcm9wcyk7XG5cbiAgICAgIGlmICh0eXBlb2YgcHJv
cHMgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcHJveHkubWFwVG9Qcm9wcyA9IHByb3BzO1xu
ICAgICAgICBwcm94eS5kZXBlbmRzT25Pd25Qcm9wcyA9IGdldERlcGVuZHNPbk93blByb3BzKHBy
b3BzKTtcbiAgICAgICAgcHJvcHMgPSBwcm94eShzdGF0ZU9yRGlzcGF0Y2gsIG93blByb3BzKTtc
biAgICAgIH1cblxuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlv
bicpICgwLCBfdmVyaWZ5UGxhaW5PYmplY3QyLmRlZmF1bHQpKHByb3BzLCBkaXNwbGF5TmFtZSwg
bWV0aG9kTmFtZSk7XG5cbiAgICAgIHJldHVybiBwcm9wcztcbiAgICB9O1xuXG4gICAgcmV0dXJu
IHByb3h5O1xuICB9O1xufVxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9P
VEVSXG4gKiogLi9+L3JlYWN0LXJlZHV4L2xpYi9jb25uZWN0L3dyYXBNYXBUb1Byb3BzLmpzXG4g
KiogbW9kdWxlIGlkID0gODBcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIid1c2Ugc3Ry
aWN0JztcblxuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcbmV4cG9ydHMuY29ubmVjdCA9IGV4
cG9ydHMuY29ubmVjdEFkdmFuY2VkID0gZXhwb3J0cy5jcmVhdGVQcm92aWRlciA9IGV4cG9ydHMu
UHJvdmlkZXIgPSB1bmRlZmluZWQ7XG5cbnZhciBfUHJvdmlkZXIgPSByZXF1aXJlKCcuL2NvbXBv
bmVudHMvUHJvdmlkZXInKTtcblxudmFyIF9Qcm92aWRlcjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZh
dWx0KF9Qcm92aWRlcik7XG5cbnZhciBfY29ubmVjdEFkdmFuY2VkID0gcmVxdWlyZSgnLi9jb21w
b25lbnRzL2Nvbm5lY3RBZHZhbmNlZCcpO1xuXG52YXIgX2Nvbm5lY3RBZHZhbmNlZDIgPSBfaW50
ZXJvcFJlcXVpcmVEZWZhdWx0KF9jb25uZWN0QWR2YW5jZWQpO1xuXG52YXIgX2Nvbm5lY3QgPSBy
ZXF1aXJlKCcuL2Nvbm5lY3QvY29ubmVjdCcpO1xuXG52YXIgX2Nvbm5lY3QyID0gX2ludGVyb3BS
ZXF1aXJlRGVmYXVsdChfY29ubmVjdCk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1
bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6
IG9iaiB9OyB9XG5cbmV4cG9ydHMuUHJvdmlkZXIgPSBfUHJvdmlkZXIyLmRlZmF1bHQ7XG5leHBv
cnRzLmNyZWF0ZVByb3ZpZGVyID0gX1Byb3ZpZGVyLmNyZWF0ZVByb3ZpZGVyO1xuZXhwb3J0cy5j
b25uZWN0QWR2YW5jZWQgPSBfY29ubmVjdEFkdmFuY2VkMi5kZWZhdWx0O1xuZXhwb3J0cy5jb25u
ZWN0ID0gX2Nvbm5lY3QyLmRlZmF1bHQ7XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VC
UEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3QtcmVkdXgvbGliL2luZGV4LmpzXG4gKiogbW9kdWxl
IGlkID0gODFcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIid1c2Ugc3RyaWN0Jztcblxu
ZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcbmV4cG9ydHMuc3RvcmVTaGFwZSA9IGV4cG9ydHMu
c3Vic2NyaXB0aW9uU2hhcGUgPSB1bmRlZmluZWQ7XG5cbnZhciBfcHJvcFR5cGVzID0gcmVxdWly
ZSgncHJvcC10eXBlcycpO1xuXG52YXIgX3Byb3BUeXBlczIgPSBfaW50ZXJvcFJlcXVpcmVEZWZh
dWx0KF9wcm9wVHlwZXMpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikg
eyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsg
fVxuXG52YXIgc3Vic2NyaXB0aW9uU2hhcGUgPSBleHBvcnRzLnN1YnNjcmlwdGlvblNoYXBlID0g
X3Byb3BUeXBlczIuZGVmYXVsdC5zaGFwZSh7XG4gIHRyeVN1YnNjcmliZTogX3Byb3BUeXBlczIu
ZGVmYXVsdC5mdW5jLmlzUmVxdWlyZWQsXG4gIHRyeVVuc3Vic2NyaWJlOiBfcHJvcFR5cGVzMi5k
ZWZhdWx0LmZ1bmMuaXNSZXF1aXJlZCxcbiAgbm90aWZ5TmVzdGVkU3ViczogX3Byb3BUeXBlczIu
ZGVmYXVsdC5mdW5jLmlzUmVxdWlyZWQsXG4gIGlzU3Vic2NyaWJlZDogX3Byb3BUeXBlczIuZGVm
YXVsdC5mdW5jLmlzUmVxdWlyZWRcbn0pO1xuXG52YXIgc3RvcmVTaGFwZSA9IGV4cG9ydHMuc3Rv
cmVTaGFwZSA9IF9wcm9wVHlwZXMyLmRlZmF1bHQuc2hhcGUoe1xuICBzdWJzY3JpYmU6IF9wcm9w
VHlwZXMyLmRlZmF1bHQuZnVuYy5pc1JlcXVpcmVkLFxuICBkaXNwYXRjaDogX3Byb3BUeXBlczIu
ZGVmYXVsdC5mdW5jLmlzUmVxdWlyZWQsXG4gIGdldFN0YXRlOiBfcHJvcFR5cGVzMi5kZWZhdWx0
LmZ1bmMuaXNSZXF1aXJlZFxufSk7XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFD
SyBGT09URVJcbiAqKiAuL34vcmVhY3QtcmVkdXgvbGliL3V0aWxzL1Byb3BUeXBlcy5qc1xuICoq
IG1vZHVsZSBpZCA9IDgyXG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIndXNlIHN0cmlj
dCc7XG5cbmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5leHBvcnRzLmRlZmF1bHQgPSB2ZXJp
ZnlQbGFpbk9iamVjdDtcblxudmFyIF9pc1BsYWluT2JqZWN0ID0gcmVxdWlyZSgnbG9kYXNoL2lz
UGxhaW5PYmplY3QnKTtcblxudmFyIF9pc1BsYWluT2JqZWN0MiA9IF9pbnRlcm9wUmVxdWlyZURl
ZmF1bHQoX2lzUGxhaW5PYmplY3QpO1xuXG52YXIgX3dhcm5pbmcgPSByZXF1aXJlKCcuL3dhcm5p
bmcnKTtcblxudmFyIF93YXJuaW5nMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3dhcm5pbmcp
O1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYm
IG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG5mdW5jdGlvbiB2
ZXJpZnlQbGFpbk9iamVjdCh2YWx1ZSwgZGlzcGxheU5hbWUsIG1ldGhvZE5hbWUpIHtcbiAgaWYg
KCEoMCwgX2lzUGxhaW5PYmplY3QyLmRlZmF1bHQpKHZhbHVlKSkge1xuICAgICgwLCBfd2Fybmlu
ZzIuZGVmYXVsdCkobWV0aG9kTmFtZSArICcoKSBpbiAnICsgZGlzcGxheU5hbWUgKyAnIG11c3Qg
cmV0dXJuIGEgcGxhaW4gb2JqZWN0LiBJbnN0ZWFkIHJlY2VpdmVkICcgKyB2YWx1ZSArICcuJyk7
XG4gIH1cbn1cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoq
IC4vfi9yZWFjdC1yZWR1eC9saWIvdXRpbHMvdmVyaWZ5UGxhaW5PYmplY3QuanNcbiAqKiBtb2R1
bGUgaWQgPSA4M1xuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiaW1wb3J0IFJlYWN0LCB7
IENvbXBvbmVudCwgUHJvcFR5cGVzIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgY2xhc3NuYW1lcyBm
cm9tICdjbGFzc25hbWVzJ1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUb2RvVGV4dElucHV0IGV4
dGVuZHMgQ29tcG9uZW50IHtcbiAgc3RhdGljIHByb3BUeXBlcyA9IHtcbiAgICBvblNhdmU6IFBy
b3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gICAgdGV4dDogUHJvcFR5cGVzLnN0cmluZyxcbiAg
ICBwbGFjZWhvbGRlcjogUHJvcFR5cGVzLnN0cmluZyxcbiAgICBlZGl0aW5nOiBQcm9wVHlwZXMu
Ym9vbCxcbiAgICBuZXdUb2RvOiBQcm9wVHlwZXMuYm9vbFxuICB9XG5cbiAgc3RhdGUgPSB7XG4g
ICAgdGV4dDogdGhpcy5wcm9wcy50ZXh0IHx8ICcnXG4gIH1cblxuICBoYW5kbGVTdWJtaXQgPSBl
ID0+IHtcbiAgICBjb25zdCB0ZXh0ID0gZS50YXJnZXQudmFsdWUudHJpbSgpXG4gICAgaWYgKGUu
d2hpY2ggPT09IDEzKSB7XG4gICAgICB0aGlzLnByb3BzLm9uU2F2ZSh0ZXh0KVxuICAgICAgaWYg
KHRoaXMucHJvcHMubmV3VG9kbykge1xuICAgICAgICB0aGlzLnNldFN0YXRlKHsgdGV4dDogJycg
fSlcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBoYW5kbGVDaGFuZ2UgPSBlID0+IHtcbiAgICB0
aGlzLnNldFN0YXRlKHsgdGV4dDogZS50YXJnZXQudmFsdWUgfSlcbiAgfVxuXG4gIGhhbmRsZUJs
dXIgPSBlID0+IHtcbiAgICBpZiAoIXRoaXMucHJvcHMubmV3VG9kbykge1xuICAgICAgdGhpcy5w
cm9wcy5vblNhdmUoZS50YXJnZXQudmFsdWUpXG4gICAgfVxuICB9XG5cbiAgcmVuZGVyKCkge1xu
ICAgIHJldHVybiAoXG4gICAgICA8aW5wdXQgY2xhc3NOYW1lPXtcbiAgICAgICAgY2xhc3NuYW1l
cyh7XG4gICAgICAgICAgZWRpdDogdGhpcy5wcm9wcy5lZGl0aW5nLFxuICAgICAgICAgICduZXct
dG9kbyc6IHRoaXMucHJvcHMubmV3VG9kb1xuICAgICAgICB9KX1cbiAgICAgICAgdHlwZT1cInRl
eHRcIlxuICAgICAgICBwbGFjZWhvbGRlcj17dGhpcy5wcm9wcy5wbGFjZWhvbGRlcn1cbiAgICAg
ICAgYXV0b0ZvY3VzPVwidHJ1ZVwiXG4gICAgICAgIHZhbHVlPXt0aGlzLnN0YXRlLnRleHR9XG4g
ICAgICAgIG9uQmx1cj17dGhpcy5oYW5kbGVCbHVyfVxuICAgICAgICBvbkNoYW5nZT17dGhpcy5o
YW5kbGVDaGFuZ2V9XG4gICAgICAgIG9uS2V5RG93bj17dGhpcy5oYW5kbGVTdWJtaXR9IC8+XG4g
ICAgKVxuICB9XG59XG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiAuL3NyYy9jb21w
b25lbnRzL1RvZG9UZXh0SW5wdXQuanNcbiAqKi8iLCJleHBvcnQgY29uc3QgQUREX1RPRE8gPSAn
QUREX1RPRE8nXG5leHBvcnQgY29uc3QgREVMRVRFX1RPRE8gPSAnREVMRVRFX1RPRE8nXG5leHBv
cnQgY29uc3QgRURJVF9UT0RPID0gJ0VESVRfVE9ETydcbmV4cG9ydCBjb25zdCBDT01QTEVURV9U
T0RPID0gJ0NPTVBMRVRFX1RPRE8nXG5leHBvcnQgY29uc3QgQ09NUExFVEVfQUxMID0gJ0NPTVBM
RVRFX0FMTCdcbmV4cG9ydCBjb25zdCBDTEVBUl9DT01QTEVURUQgPSAnQ0xFQVJfQ09NUExFVEVE
J1xuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogLi9zcmMvY29uc3RhbnRzL0FjdGlv
blR5cGVzLmpzXG4gKiovIiwiZXhwb3J0IGNvbnN0IFNIT1dfQUxMID0gJ3Nob3dfYWxsJ1xuZXhw
b3J0IGNvbnN0IFNIT1dfQ09NUExFVEVEID0gJ3Nob3dfY29tcGxldGVkJ1xuZXhwb3J0IGNvbnN0
IFNIT1dfQUNUSVZFID0gJ3Nob3dfYWN0aXZlJ1xuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoq
XG4gKiogLi9zcmMvY29uc3RhbnRzL1RvZG9GaWx0ZXJzLmpzXG4gKiovIiwiLy8gc2hpbSBmb3Ig
dXNpbmcgcHJvY2VzcyBpbiBicm93c2VyXG52YXIgcHJvY2VzcyA9IG1vZHVsZS5leHBvcnRzID0g
e307XG5cbi8vIGNhY2hlZCBmcm9tIHdoYXRldmVyIGdsb2JhbCBpcyBwcmVzZW50IHNvIHRoYXQg
dGVzdCBydW5uZXJzIHRoYXQgc3R1YiBpdFxuLy8gZG9uJ3QgYnJlYWsgdGhpbmdzLiAgQnV0IHdl
IG5lZWQgdG8gd3JhcCBpdCBpbiBhIHRyeSBjYXRjaCBpbiBjYXNlIGl0IGlzXG4vLyB3cmFwcGVk
IGluIHN0cmljdCBtb2RlIGNvZGUgd2hpY2ggZG9lc24ndCBkZWZpbmUgYW55IGdsb2JhbHMuICBJ
dCdzIGluc2lkZSBhXG4vLyBmdW5jdGlvbiBiZWNhdXNlIHRyeS9jYXRjaGVzIGRlb3B0aW1pemUg
aW4gY2VydGFpbiBlbmdpbmVzLlxuXG52YXIgY2FjaGVkU2V0VGltZW91dDtcbnZhciBjYWNoZWRD
bGVhclRpbWVvdXQ7XG5cbmZ1bmN0aW9uIGRlZmF1bHRTZXRUaW1vdXQoKSB7XG4gICAgdGhyb3cg
bmV3IEVycm9yKCdzZXRUaW1lb3V0IGhhcyBub3QgYmVlbiBkZWZpbmVkJyk7XG59XG5mdW5jdGlv
biBkZWZhdWx0Q2xlYXJUaW1lb3V0ICgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2NsZWFyVGlt
ZW91dCBoYXMgbm90IGJlZW4gZGVmaW5lZCcpO1xufVxuKGZ1bmN0aW9uICgpIHtcbiAgICB0cnkg
e1xuICAgICAgICBpZiAodHlwZW9mIHNldFRpbWVvdXQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAg
ICAgICAgIGNhY2hlZFNldFRpbWVvdXQgPSBzZXRUaW1lb3V0O1xuICAgICAgICB9IGVsc2Uge1xu
ICAgICAgICAgICAgY2FjaGVkU2V0VGltZW91dCA9IGRlZmF1bHRTZXRUaW1vdXQ7XG4gICAgICAg
IH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGNhY2hlZFNldFRpbWVvdXQgPSBkZWZhdWx0
U2V0VGltb3V0O1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgICBpZiAodHlwZW9mIGNsZWFyVGlt
ZW91dCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgY2FjaGVkQ2xlYXJUaW1lb3V0ID0g
Y2xlYXJUaW1lb3V0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY2FjaGVkQ2xlYXJU
aW1lb3V0ID0gZGVmYXVsdENsZWFyVGltZW91dDtcbiAgICAgICAgfVxuICAgIH0gY2F0Y2ggKGUp
IHtcbiAgICAgICAgY2FjaGVkQ2xlYXJUaW1lb3V0ID0gZGVmYXVsdENsZWFyVGltZW91dDtcbiAg
ICB9XG59ICgpKVxuZnVuY3Rpb24gcnVuVGltZW91dChmdW4pIHtcbiAgICBpZiAoY2FjaGVkU2V0
VGltZW91dCA9PT0gc2V0VGltZW91dCkge1xuICAgICAgICAvL25vcm1hbCBlbnZpcm9tZW50cyBp
biBzYW5lIHNpdHVhdGlvbnNcbiAgICAgICAgcmV0dXJuIHNldFRpbWVvdXQoZnVuLCAwKTtcbiAg
ICB9XG4gICAgLy8gaWYgc2V0VGltZW91dCB3YXNuJ3QgYXZhaWxhYmxlIGJ1dCB3YXMgbGF0dGVy
IGRlZmluZWRcbiAgICBpZiAoKGNhY2hlZFNldFRpbWVvdXQgPT09IGRlZmF1bHRTZXRUaW1vdXQg
fHwgIWNhY2hlZFNldFRpbWVvdXQpICYmIHNldFRpbWVvdXQpIHtcbiAgICAgICAgY2FjaGVkU2V0
VGltZW91dCA9IHNldFRpbWVvdXQ7XG4gICAgICAgIHJldHVybiBzZXRUaW1lb3V0KGZ1biwgMCk7
XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICAgIC8vIHdoZW4gd2hlbiBzb21lYm9keSBoYXMgc2Ny
ZXdlZCB3aXRoIHNldFRpbWVvdXQgYnV0IG5vIEkuRS4gbWFkZG5lc3NcbiAgICAgICAgcmV0dXJu
IGNhY2hlZFNldFRpbWVvdXQoZnVuLCAwKTtcbiAgICB9IGNhdGNoKGUpe1xuICAgICAgICB0cnkg
e1xuICAgICAgICAgICAgLy8gV2hlbiB3ZSBhcmUgaW4gSS5FLiBidXQgdGhlIHNjcmlwdCBoYXMg
YmVlbiBldmFsZWQgc28gSS5FLiBkb2Vzbid0IHRydXN0IHRoZSBnbG9iYWwgb2JqZWN0IHdoZW4g
Y2FsbGVkIG5vcm1hbGx5XG4gICAgICAgICAgICByZXR1cm4gY2FjaGVkU2V0VGltZW91dC5jYWxs
KG51bGwsIGZ1biwgMCk7XG4gICAgICAgIH0gY2F0Y2goZSl7XG4gICAgICAgICAgICAvLyBzYW1l
IGFzIGFib3ZlIGJ1dCB3aGVuIGl0J3MgYSB2ZXJzaW9uIG9mIEkuRS4gdGhhdCBtdXN0IGhhdmUg
dGhlIGdsb2JhbCBvYmplY3QgZm9yICd0aGlzJywgaG9wZnVsbHkgb3VyIGNvbnRleHQgY29ycmVj
dCBvdGhlcndpc2UgaXQgd2lsbCB0aHJvdyBhIGdsb2JhbCBlcnJvclxuICAgICAgICAgICAgcmV0
dXJuIGNhY2hlZFNldFRpbWVvdXQuY2FsbCh0aGlzLCBmdW4sIDApO1xuICAgICAgICB9XG4gICAg
fVxuXG5cbn1cbmZ1bmN0aW9uIHJ1bkNsZWFyVGltZW91dChtYXJrZXIpIHtcbiAgICBpZiAoY2Fj
aGVkQ2xlYXJUaW1lb3V0ID09PSBjbGVhclRpbWVvdXQpIHtcbiAgICAgICAgLy9ub3JtYWwgZW52
aXJvbWVudHMgaW4gc2FuZSBzaXR1YXRpb25zXG4gICAgICAgIHJldHVybiBjbGVhclRpbWVvdXQo
bWFya2VyKTtcbiAgICB9XG4gICAgLy8gaWYgY2xlYXJUaW1lb3V0IHdhc24ndCBhdmFpbGFibGUg
YnV0IHdhcyBsYXR0ZXIgZGVmaW5lZFxuICAgIGlmICgoY2FjaGVkQ2xlYXJUaW1lb3V0ID09PSBk
ZWZhdWx0Q2xlYXJUaW1lb3V0IHx8ICFjYWNoZWRDbGVhclRpbWVvdXQpICYmIGNsZWFyVGltZW91
dCkge1xuICAgICAgICBjYWNoZWRDbGVhclRpbWVvdXQgPSBjbGVhclRpbWVvdXQ7XG4gICAgICAg
IHJldHVybiBjbGVhclRpbWVvdXQobWFya2VyKTtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgICAg
Ly8gd2hlbiB3aGVuIHNvbWVib2R5IGhhcyBzY3Jld2VkIHdpdGggc2V0VGltZW91dCBidXQgbm8g
SS5FLiBtYWRkbmVzc1xuICAgICAgICByZXR1cm4gY2FjaGVkQ2xlYXJUaW1lb3V0KG1hcmtlcik7
XG4gICAgfSBjYXRjaCAoZSl7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICAvLyBXaGVuIHdl
IGFyZSBpbiBJLkUuIGJ1dCB0aGUgc2NyaXB0IGhhcyBiZWVuIGV2YWxlZCBzbyBJLkUuIGRvZXNu
J3QgIHRydXN0IHRoZSBnbG9iYWwgb2JqZWN0IHdoZW4gY2FsbGVkIG5vcm1hbGx5XG4gICAgICAg
ICAgICByZXR1cm4gY2FjaGVkQ2xlYXJUaW1lb3V0LmNhbGwobnVsbCwgbWFya2VyKTtcbiAgICAg
ICAgfSBjYXRjaCAoZSl7XG4gICAgICAgICAgICAvLyBzYW1lIGFzIGFib3ZlIGJ1dCB3aGVuIGl0
J3MgYSB2ZXJzaW9uIG9mIEkuRS4gdGhhdCBtdXN0IGhhdmUgdGhlIGdsb2JhbCBvYmplY3QgZm9y
ICd0aGlzJywgaG9wZnVsbHkgb3VyIGNvbnRleHQgY29ycmVjdCBvdGhlcndpc2UgaXQgd2lsbCB0
aHJvdyBhIGdsb2JhbCBlcnJvci5cbiAgICAgICAgICAgIC8vIFNvbWUgdmVyc2lvbnMgb2YgSS5F
LiBoYXZlIGRpZmZlcmVudCBydWxlcyBmb3IgY2xlYXJUaW1lb3V0IHZzIHNldFRpbWVvdXRcbiAg
ICAgICAgICAgIHJldHVybiBjYWNoZWRDbGVhclRpbWVvdXQuY2FsbCh0aGlzLCBtYXJrZXIpO1xu
ICAgICAgICB9XG4gICAgfVxuXG5cblxufVxudmFyIHF1ZXVlID0gW107XG52YXIgZHJhaW5pbmcg
PSBmYWxzZTtcbnZhciBjdXJyZW50UXVldWU7XG52YXIgcXVldWVJbmRleCA9IC0xO1xuXG5mdW5j
dGlvbiBjbGVhblVwTmV4dFRpY2soKSB7XG4gICAgaWYgKCFkcmFpbmluZyB8fCAhY3VycmVudFF1
ZXVlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZHJhaW5pbmcgPSBmYWxzZTtcbiAg
ICBpZiAoY3VycmVudFF1ZXVlLmxlbmd0aCkge1xuICAgICAgICBxdWV1ZSA9IGN1cnJlbnRRdWV1
ZS5jb25jYXQocXVldWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHF1ZXVlSW5kZXggPSAtMTtc
biAgICB9XG4gICAgaWYgKHF1ZXVlLmxlbmd0aCkge1xuICAgICAgICBkcmFpblF1ZXVlKCk7XG4g
ICAgfVxufVxuXG5mdW5jdGlvbiBkcmFpblF1ZXVlKCkge1xuICAgIGlmIChkcmFpbmluZykge1xu
ICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIHZhciB0aW1lb3V0ID0gcnVuVGltZW91dChjbGVh
blVwTmV4dFRpY2spO1xuICAgIGRyYWluaW5nID0gdHJ1ZTtcblxuICAgIHZhciBsZW4gPSBxdWV1
ZS5sZW5ndGg7XG4gICAgd2hpbGUobGVuKSB7XG4gICAgICAgIGN1cnJlbnRRdWV1ZSA9IHF1ZXVl
O1xuICAgICAgICBxdWV1ZSA9IFtdO1xuICAgICAgICB3aGlsZSAoKytxdWV1ZUluZGV4IDwgbGVu
KSB7XG4gICAgICAgICAgICBpZiAoY3VycmVudFF1ZXVlKSB7XG4gICAgICAgICAgICAgICAgY3Vy
cmVudFF1ZXVlW3F1ZXVlSW5kZXhdLnJ1bigpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4g
ICAgICAgIHF1ZXVlSW5kZXggPSAtMTtcbiAgICAgICAgbGVuID0gcXVldWUubGVuZ3RoO1xuICAg
IH1cbiAgICBjdXJyZW50UXVldWUgPSBudWxsO1xuICAgIGRyYWluaW5nID0gZmFsc2U7XG4gICAg
cnVuQ2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xufVxuXG5wcm9jZXNzLm5leHRUaWNrID0gZnVuY3Rp
b24gKGZ1bikge1xuICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGFyZ3VtZW50cy5sZW5ndGggLSAx
KTtcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGFyZ3NbaSAtIDFd
ID0gYXJndW1lbnRzW2ldO1xuICAgICAgICB9XG4gICAgfVxuICAgIHF1ZXVlLnB1c2gobmV3IEl0
ZW0oZnVuLCBhcmdzKSk7XG4gICAgaWYgKHF1ZXVlLmxlbmd0aCA9PT0gMSAmJiAhZHJhaW5pbmcp
IHtcbiAgICAgICAgcnVuVGltZW91dChkcmFpblF1ZXVlKTtcbiAgICB9XG59O1xuXG4vLyB2OCBs
aWtlcyBwcmVkaWN0aWJsZSBvYmplY3RzXG5mdW5jdGlvbiBJdGVtKGZ1biwgYXJyYXkpIHtcbiAg
ICB0aGlzLmZ1biA9IGZ1bjtcbiAgICB0aGlzLmFycmF5ID0gYXJyYXk7XG59XG5JdGVtLnByb3Rv
dHlwZS5ydW4gPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5mdW4uYXBwbHkobnVsbCwgdGhpcy5h
cnJheSk7XG59O1xucHJvY2Vzcy50aXRsZSA9ICdicm93c2VyJztcbnByb2Nlc3MuYnJvd3NlciA9
IHRydWU7XG5wcm9jZXNzLmVudiA9IHt9O1xucHJvY2Vzcy5hcmd2ID0gW107XG5wcm9jZXNzLnZl
cnNpb24gPSAnJzsgLy8gZW1wdHkgc3RyaW5nIHRvIGF2b2lkIHJlZ2V4cCBpc3N1ZXNcbnByb2Nl
c3MudmVyc2lvbnMgPSB7fTtcblxuZnVuY3Rpb24gbm9vcCgpIHt9XG5cbnByb2Nlc3Mub24gPSBu
b29wO1xucHJvY2Vzcy5hZGRMaXN0ZW5lciA9IG5vb3A7XG5wcm9jZXNzLm9uY2UgPSBub29wO1xu
cHJvY2Vzcy5vZmYgPSBub29wO1xucHJvY2Vzcy5yZW1vdmVMaXN0ZW5lciA9IG5vb3A7XG5wcm9j
ZXNzLnJlbW92ZUFsbExpc3RlbmVycyA9IG5vb3A7XG5wcm9jZXNzLmVtaXQgPSBub29wO1xuXG5w
cm9jZXNzLmJpbmRpbmcgPSBmdW5jdGlvbiAobmFtZSkge1xuICAgIHRocm93IG5ldyBFcnJvcign
cHJvY2Vzcy5iaW5kaW5nIGlzIG5vdCBzdXBwb3J0ZWQnKTtcbn07XG5cbnByb2Nlc3MuY3dkID0g
ZnVuY3Rpb24gKCkgeyByZXR1cm4gJy8nIH07XG5wcm9jZXNzLmNoZGlyID0gZnVuY3Rpb24gKGRp
cikge1xuICAgIHRocm93IG5ldyBFcnJvcigncHJvY2Vzcy5jaGRpciBpcyBub3Qgc3VwcG9ydGVk
Jyk7XG59O1xucHJvY2Vzcy51bWFzayA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gMDsgfTtcblxuXG5c
bi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0LXNj
cmlwdHMvfi9wcm9jZXNzL2Jyb3dzZXIuanNcbiAqKiBtb2R1bGUgaWQgPSA4N1xuICoqIG1vZHVs
ZSBjaHVua3MgPSAwXG4gKiovIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgYXNhcCA9IHJlcXVpcmUo
J2FzYXAvcmF3Jyk7XG5cbmZ1bmN0aW9uIG5vb3AoKSB7fVxuXG4vLyBTdGF0ZXM6XG4vL1xuLy8g
MCAtIHBlbmRpbmdcbi8vIDEgLSBmdWxmaWxsZWQgd2l0aCBfdmFsdWVcbi8vIDIgLSByZWplY3Rl
ZCB3aXRoIF92YWx1ZVxuLy8gMyAtIGFkb3B0ZWQgdGhlIHN0YXRlIG9mIGFub3RoZXIgcHJvbWlz
ZSwgX3ZhbHVlXG4vL1xuLy8gb25jZSB0aGUgc3RhdGUgaXMgbm8gbG9uZ2VyIHBlbmRpbmcgKDAp
IGl0IGlzIGltbXV0YWJsZVxuXG4vLyBBbGwgYF9gIHByZWZpeGVkIHByb3BlcnRpZXMgd2lsbCBi
ZSByZWR1Y2VkIHRvIGBfe3JhbmRvbSBudW1iZXJ9YFxuLy8gYXQgYnVpbGQgdGltZSB0byBvYmZ1
c2NhdGUgdGhlbSBhbmQgZGlzY291cmFnZSB0aGVpciB1c2UuXG4vLyBXZSBkb24ndCB1c2Ugc3lt
Ym9scyBvciBPYmplY3QuZGVmaW5lUHJvcGVydHkgdG8gZnVsbHkgaGlkZSB0aGVtXG4vLyBiZWNh
dXNlIHRoZSBwZXJmb3JtYW5jZSBpc24ndCBnb29kIGVub3VnaC5cblxuXG4vLyB0byBhdm9pZCB1
c2luZyB0cnkvY2F0Y2ggaW5zaWRlIGNyaXRpY2FsIGZ1bmN0aW9ucywgd2Vcbi8vIGV4dHJhY3Qg
dGhlbSB0byBoZXJlLlxudmFyIExBU1RfRVJST1IgPSBudWxsO1xudmFyIElTX0VSUk9SID0ge307
XG5mdW5jdGlvbiBnZXRUaGVuKG9iaikge1xuICB0cnkge1xuICAgIHJldHVybiBvYmoudGhlbjtc
biAgfSBjYXRjaCAoZXgpIHtcbiAgICBMQVNUX0VSUk9SID0gZXg7XG4gICAgcmV0dXJuIElTX0VS
Uk9SO1xuICB9XG59XG5cbmZ1bmN0aW9uIHRyeUNhbGxPbmUoZm4sIGEpIHtcbiAgdHJ5IHtcbiAg
ICByZXR1cm4gZm4oYSk7XG4gIH0gY2F0Y2ggKGV4KSB7XG4gICAgTEFTVF9FUlJPUiA9IGV4O1xu
ICAgIHJldHVybiBJU19FUlJPUjtcbiAgfVxufVxuZnVuY3Rpb24gdHJ5Q2FsbFR3byhmbiwgYSwg
Yikge1xuICB0cnkge1xuICAgIGZuKGEsIGIpO1xuICB9IGNhdGNoIChleCkge1xuICAgIExBU1Rf
RVJST1IgPSBleDtcbiAgICByZXR1cm4gSVNfRVJST1I7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9y
dHMgPSBQcm9taXNlO1xuXG5mdW5jdGlvbiBQcm9taXNlKGZuKSB7XG4gIGlmICh0eXBlb2YgdGhp
cyAhPT0gJ29iamVjdCcpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdQcm9taXNlcyBtdXN0
IGJlIGNvbnN0cnVjdGVkIHZpYSBuZXcnKTtcbiAgfVxuICBpZiAodHlwZW9mIGZuICE9PSAnZnVu
Y3Rpb24nKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignbm90IGEgZnVuY3Rpb24nKTtcbiAg
fVxuICB0aGlzLl80NSA9IDA7XG4gIHRoaXMuXzgxID0gMDtcbiAgdGhpcy5fNjUgPSBudWxsO1xu
ICB0aGlzLl81NCA9IG51bGw7XG4gIGlmIChmbiA9PT0gbm9vcCkgcmV0dXJuO1xuICBkb1Jlc29s
dmUoZm4sIHRoaXMpO1xufVxuUHJvbWlzZS5fMTAgPSBudWxsO1xuUHJvbWlzZS5fOTcgPSBudWxs
O1xuUHJvbWlzZS5fNjEgPSBub29wO1xuXG5Qcm9taXNlLnByb3RvdHlwZS50aGVuID0gZnVuY3Rp
b24ob25GdWxmaWxsZWQsIG9uUmVqZWN0ZWQpIHtcbiAgaWYgKHRoaXMuY29uc3RydWN0b3IgIT09
IFByb21pc2UpIHtcbiAgICByZXR1cm4gc2FmZVRoZW4odGhpcywgb25GdWxmaWxsZWQsIG9uUmVq
ZWN0ZWQpO1xuICB9XG4gIHZhciByZXMgPSBuZXcgUHJvbWlzZShub29wKTtcbiAgaGFuZGxlKHRo
aXMsIG5ldyBIYW5kbGVyKG9uRnVsZmlsbGVkLCBvblJlamVjdGVkLCByZXMpKTtcbiAgcmV0dXJu
IHJlcztcbn07XG5cbmZ1bmN0aW9uIHNhZmVUaGVuKHNlbGYsIG9uRnVsZmlsbGVkLCBvblJlamVj
dGVkKSB7XG4gIHJldHVybiBuZXcgc2VsZi5jb25zdHJ1Y3RvcihmdW5jdGlvbiAocmVzb2x2ZSwg
cmVqZWN0KSB7XG4gICAgdmFyIHJlcyA9IG5ldyBQcm9taXNlKG5vb3ApO1xuICAgIHJlcy50aGVu
KHJlc29sdmUsIHJlamVjdCk7XG4gICAgaGFuZGxlKHNlbGYsIG5ldyBIYW5kbGVyKG9uRnVsZmls
bGVkLCBvblJlamVjdGVkLCByZXMpKTtcbiAgfSk7XG59O1xuZnVuY3Rpb24gaGFuZGxlKHNlbGYs
IGRlZmVycmVkKSB7XG4gIHdoaWxlIChzZWxmLl84MSA9PT0gMykge1xuICAgIHNlbGYgPSBzZWxm
Ll82NTtcbiAgfVxuICBpZiAoUHJvbWlzZS5fMTApIHtcbiAgICBQcm9taXNlLl8xMChzZWxmKTtc
biAgfVxuICBpZiAoc2VsZi5fODEgPT09IDApIHtcbiAgICBpZiAoc2VsZi5fNDUgPT09IDApIHtc
biAgICAgIHNlbGYuXzQ1ID0gMTtcbiAgICAgIHNlbGYuXzU0ID0gZGVmZXJyZWQ7XG4gICAgICBy
ZXR1cm47XG4gICAgfVxuICAgIGlmIChzZWxmLl80NSA9PT0gMSkge1xuICAgICAgc2VsZi5fNDUg
PSAyO1xuICAgICAgc2VsZi5fNTQgPSBbc2VsZi5fNTQsIGRlZmVycmVkXTtcbiAgICAgIHJldHVy
bjtcbiAgICB9XG4gICAgc2VsZi5fNTQucHVzaChkZWZlcnJlZCk7XG4gICAgcmV0dXJuO1xuICB9
XG4gIGhhbmRsZVJlc29sdmVkKHNlbGYsIGRlZmVycmVkKTtcbn1cblxuZnVuY3Rpb24gaGFuZGxl
UmVzb2x2ZWQoc2VsZiwgZGVmZXJyZWQpIHtcbiAgYXNhcChmdW5jdGlvbigpIHtcbiAgICB2YXIg
Y2IgPSBzZWxmLl84MSA9PT0gMSA/IGRlZmVycmVkLm9uRnVsZmlsbGVkIDogZGVmZXJyZWQub25S
ZWplY3RlZDtcbiAgICBpZiAoY2IgPT09IG51bGwpIHtcbiAgICAgIGlmIChzZWxmLl84MSA9PT0g
MSkge1xuICAgICAgICByZXNvbHZlKGRlZmVycmVkLnByb21pc2UsIHNlbGYuXzY1KTtcbiAgICAg
IH0gZWxzZSB7XG4gICAgICAgIHJlamVjdChkZWZlcnJlZC5wcm9taXNlLCBzZWxmLl82NSk7XG4g
ICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHZhciByZXQgPSB0cnlDYWxsT25lKGNi
LCBzZWxmLl82NSk7XG4gICAgaWYgKHJldCA9PT0gSVNfRVJST1IpIHtcbiAgICAgIHJlamVjdChk
ZWZlcnJlZC5wcm9taXNlLCBMQVNUX0VSUk9SKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzb2x2
ZShkZWZlcnJlZC5wcm9taXNlLCByZXQpO1xuICAgIH1cbiAgfSk7XG59XG5mdW5jdGlvbiByZXNv
bHZlKHNlbGYsIG5ld1ZhbHVlKSB7XG4gIC8vIFByb21pc2UgUmVzb2x1dGlvbiBQcm9jZWR1cmU6
IGh0dHBzOi8vZ2l0aHViLmNvbS9wcm9taXNlcy1hcGx1cy9wcm9taXNlcy1zcGVjI3RoZS1wcm9t
aXNlLXJlc29sdXRpb24tcHJvY2VkdXJlXG4gIGlmIChuZXdWYWx1ZSA9PT0gc2VsZikge1xuICAg
IHJldHVybiByZWplY3QoXG4gICAgICBzZWxmLFxuICAgICAgbmV3IFR5cGVFcnJvcignQSBwcm9t
aXNlIGNhbm5vdCBiZSByZXNvbHZlZCB3aXRoIGl0c2VsZi4nKVxuICAgICk7XG4gIH1cbiAgaWYg
KFxuICAgIG5ld1ZhbHVlICYmXG4gICAgKHR5cGVvZiBuZXdWYWx1ZSA9PT0gJ29iamVjdCcgfHwg
dHlwZW9mIG5ld1ZhbHVlID09PSAnZnVuY3Rpb24nKVxuICApIHtcbiAgICB2YXIgdGhlbiA9IGdl
dFRoZW4obmV3VmFsdWUpO1xuICAgIGlmICh0aGVuID09PSBJU19FUlJPUikge1xuICAgICAgcmV0
dXJuIHJlamVjdChzZWxmLCBMQVNUX0VSUk9SKTtcbiAgICB9XG4gICAgaWYgKFxuICAgICAgdGhl
biA9PT0gc2VsZi50aGVuICYmXG4gICAgICBuZXdWYWx1ZSBpbnN0YW5jZW9mIFByb21pc2VcbiAg
ICApIHtcbiAgICAgIHNlbGYuXzgxID0gMztcbiAgICAgIHNlbGYuXzY1ID0gbmV3VmFsdWU7XG4g
ICAgICBmaW5hbGUoc2VsZik7XG4gICAgICByZXR1cm47XG4gICAgfSBlbHNlIGlmICh0eXBlb2Yg
dGhlbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgZG9SZXNvbHZlKHRoZW4uYmluZChuZXdWYWx1
ZSksIHNlbGYpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfVxuICBzZWxmLl84MSA9IDE7XG4g
IHNlbGYuXzY1ID0gbmV3VmFsdWU7XG4gIGZpbmFsZShzZWxmKTtcbn1cblxuZnVuY3Rpb24gcmVq
ZWN0KHNlbGYsIG5ld1ZhbHVlKSB7XG4gIHNlbGYuXzgxID0gMjtcbiAgc2VsZi5fNjUgPSBuZXdW
YWx1ZTtcbiAgaWYgKFByb21pc2UuXzk3KSB7XG4gICAgUHJvbWlzZS5fOTcoc2VsZiwgbmV3VmFs
dWUpO1xuICB9XG4gIGZpbmFsZShzZWxmKTtcbn1cbmZ1bmN0aW9uIGZpbmFsZShzZWxmKSB7XG4g
IGlmIChzZWxmLl80NSA9PT0gMSkge1xuICAgIGhhbmRsZShzZWxmLCBzZWxmLl81NCk7XG4gICAg
c2VsZi5fNTQgPSBudWxsO1xuICB9XG4gIGlmIChzZWxmLl80NSA9PT0gMikge1xuICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgc2VsZi5fNTQubGVuZ3RoOyBpKyspIHtcbiAgICAgIGhhbmRsZShzZWxm
LCBzZWxmLl81NFtpXSk7XG4gICAgfVxuICAgIHNlbGYuXzU0ID0gbnVsbDtcbiAgfVxufVxuXG5m
dW5jdGlvbiBIYW5kbGVyKG9uRnVsZmlsbGVkLCBvblJlamVjdGVkLCBwcm9taXNlKXtcbiAgdGhp
cy5vbkZ1bGZpbGxlZCA9IHR5cGVvZiBvbkZ1bGZpbGxlZCA9PT0gJ2Z1bmN0aW9uJyA/IG9uRnVs
ZmlsbGVkIDogbnVsbDtcbiAgdGhpcy5vblJlamVjdGVkID0gdHlwZW9mIG9uUmVqZWN0ZWQgPT09
ICdmdW5jdGlvbicgPyBvblJlamVjdGVkIDogbnVsbDtcbiAgdGhpcy5wcm9taXNlID0gcHJvbWlz
ZTtcbn1cblxuLyoqXG4gKiBUYWtlIGEgcG90ZW50aWFsbHkgbWlzYmVoYXZpbmcgcmVzb2x2ZXIg
ZnVuY3Rpb24gYW5kIG1ha2Ugc3VyZVxuICogb25GdWxmaWxsZWQgYW5kIG9uUmVqZWN0ZWQgYXJl
IG9ubHkgY2FsbGVkIG9uY2UuXG4gKlxuICogTWFrZXMgbm8gZ3VhcmFudGVlcyBhYm91dCBhc3lu
Y2hyb255LlxuICovXG5mdW5jdGlvbiBkb1Jlc29sdmUoZm4sIHByb21pc2UpIHtcbiAgdmFyIGRv
bmUgPSBmYWxzZTtcbiAgdmFyIHJlcyA9IHRyeUNhbGxUd28oZm4sIGZ1bmN0aW9uICh2YWx1ZSkg
e1xuICAgIGlmIChkb25lKSByZXR1cm47XG4gICAgZG9uZSA9IHRydWU7XG4gICAgcmVzb2x2ZShw
cm9taXNlLCB2YWx1ZSk7XG4gIH0sIGZ1bmN0aW9uIChyZWFzb24pIHtcbiAgICBpZiAoZG9uZSkg
cmV0dXJuO1xuICAgIGRvbmUgPSB0cnVlO1xuICAgIHJlamVjdChwcm9taXNlLCByZWFzb24pO1xu
ICB9KVxuICBpZiAoIWRvbmUgJiYgcmVzID09PSBJU19FUlJPUikge1xuICAgIGRvbmUgPSB0cnVl
O1xuICAgIHJlamVjdChwcm9taXNlLCBMQVNUX0VSUk9SKTtcbiAgfVxufVxuXG5cblxuLyoqKioq
KioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3Qtc2NyaXB0cy9+
L3Byb21pc2UvbGliL2NvcmUuanNcbiAqKiBtb2R1bGUgaWQgPSA4OFxuICoqIG1vZHVsZSBjaHVu
a3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywg
SW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlz
IGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJ
Q0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4g
YWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhl
IFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICovXG5cbid1c2Ugc3Ry
aWN0JztcblxudmFyIF9wcm9kSW52YXJpYW50ID0gcmVxdWlyZSgnLi9yZWFjdFByb2RJbnZhcmlh
bnQnKSxcbiAgICBfYXNzaWduID0gcmVxdWlyZSgnb2JqZWN0LWFzc2lnbicpO1xuXG52YXIgUmVh
Y3ROb29wVXBkYXRlUXVldWUgPSByZXF1aXJlKCcuL1JlYWN0Tm9vcFVwZGF0ZVF1ZXVlJyk7XG5c
bnZhciBjYW5EZWZpbmVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4vY2FuRGVmaW5lUHJvcGVydHknKTtc
bnZhciBlbXB0eU9iamVjdCA9IHJlcXVpcmUoJ2ZianMvbGliL2VtcHR5T2JqZWN0Jyk7XG52YXIg
aW52YXJpYW50ID0gcmVxdWlyZSgnZmJqcy9saWIvaW52YXJpYW50Jyk7XG52YXIgbG93UHJpb3Jp
dHlXYXJuaW5nID0gcmVxdWlyZSgnLi9sb3dQcmlvcml0eVdhcm5pbmcnKTtcblxuLyoqXG4gKiBC
YXNlIGNsYXNzIGhlbHBlcnMgZm9yIHRoZSB1cGRhdGluZyBzdGF0ZSBvZiBhIGNvbXBvbmVudC5c
biAqL1xuZnVuY3Rpb24gUmVhY3RDb21wb25lbnQocHJvcHMsIGNvbnRleHQsIHVwZGF0ZXIpIHtc
biAgdGhpcy5wcm9wcyA9IHByb3BzO1xuICB0aGlzLmNvbnRleHQgPSBjb250ZXh0O1xuICB0aGlz
LnJlZnMgPSBlbXB0eU9iamVjdDtcbiAgLy8gV2UgaW5pdGlhbGl6ZSB0aGUgZGVmYXVsdCB1cGRh
dGVyIGJ1dCB0aGUgcmVhbCBvbmUgZ2V0cyBpbmplY3RlZCBieSB0aGVcbiAgLy8gcmVuZGVyZXIu
XG4gIHRoaXMudXBkYXRlciA9IHVwZGF0ZXIgfHwgUmVhY3ROb29wVXBkYXRlUXVldWU7XG59XG5c
blJlYWN0Q29tcG9uZW50LnByb3RvdHlwZS5pc1JlYWN0Q29tcG9uZW50ID0ge307XG5cbi8qKlxu
ICogU2V0cyBhIHN1YnNldCBvZiB0aGUgc3RhdGUuIEFsd2F5cyB1c2UgdGhpcyB0byBtdXRhdGVc
biAqIHN0YXRlLiBZb3Ugc2hvdWxkIHRyZWF0IGB0aGlzLnN0YXRlYCBhcyBpbW11dGFibGUuXG4g
KlxuICogVGhlcmUgaXMgbm8gZ3VhcmFudGVlIHRoYXQgYHRoaXMuc3RhdGVgIHdpbGwgYmUgaW1t
ZWRpYXRlbHkgdXBkYXRlZCwgc29cbiAqIGFjY2Vzc2luZyBgdGhpcy5zdGF0ZWAgYWZ0ZXIgY2Fs
bGluZyB0aGlzIG1ldGhvZCBtYXkgcmV0dXJuIHRoZSBvbGQgdmFsdWUuXG4gKlxuICogVGhlcmUg
aXMgbm8gZ3VhcmFudGVlIHRoYXQgY2FsbHMgdG8gYHNldFN0YXRlYCB3aWxsIHJ1biBzeW5jaHJv
bm91c2x5LFxuICogYXMgdGhleSBtYXkgZXZlbnR1YWxseSBiZSBiYXRjaGVkIHRvZ2V0aGVyLiAg
WW91IGNhbiBwcm92aWRlIGFuIG9wdGlvbmFsXG4gKiBjYWxsYmFjayB0aGF0IHdpbGwgYmUgZXhl
Y3V0ZWQgd2hlbiB0aGUgY2FsbCB0byBzZXRTdGF0ZSBpcyBhY3R1YWxseVxuICogY29tcGxldGVk
LlxuICpcbiAqIFdoZW4gYSBmdW5jdGlvbiBpcyBwcm92aWRlZCB0byBzZXRTdGF0ZSwgaXQgd2ls
bCBiZSBjYWxsZWQgYXQgc29tZSBwb2ludCBpblxuICogdGhlIGZ1dHVyZSAobm90IHN5bmNocm9u
b3VzbHkpLiBJdCB3aWxsIGJlIGNhbGxlZCB3aXRoIHRoZSB1cCB0byBkYXRlXG4gKiBjb21wb25l
bnQgYXJndW1lbnRzIChzdGF0ZSwgcHJvcHMsIGNvbnRleHQpLiBUaGVzZSB2YWx1ZXMgY2FuIGJl
IGRpZmZlcmVudFxuICogZnJvbSB0aGlzLiogYmVjYXVzZSB5b3VyIGZ1bmN0aW9uIG1heSBiZSBj
YWxsZWQgYWZ0ZXIgcmVjZWl2ZVByb3BzIGJ1dCBiZWZvcmVcbiAqIHNob3VsZENvbXBvbmVudFVw
ZGF0ZSwgYW5kIHRoaXMgbmV3IHN0YXRlLCBwcm9wcywgYW5kIGNvbnRleHQgd2lsbCBub3QgeWV0
IGJlXG4gKiBhc3NpZ25lZCB0byB0aGlzLlxuICpcbiAqIEBwYXJhbSB7b2JqZWN0fGZ1bmN0aW9u
fSBwYXJ0aWFsU3RhdGUgTmV4dCBwYXJ0aWFsIHN0YXRlIG9yIGZ1bmN0aW9uIHRvXG4gKiAgICAg
ICAgcHJvZHVjZSBuZXh0IHBhcnRpYWwgc3RhdGUgdG8gYmUgbWVyZ2VkIHdpdGggY3VycmVudCBz
dGF0ZS5cbiAqIEBwYXJhbSB7P2Z1bmN0aW9ufSBjYWxsYmFjayBDYWxsZWQgYWZ0ZXIgc3RhdGUg
aXMgdXBkYXRlZC5cbiAqIEBmaW5hbFxuICogQHByb3RlY3RlZFxuICovXG5SZWFjdENvbXBvbmVu
dC5wcm90b3R5cGUuc2V0U3RhdGUgPSBmdW5jdGlvbiAocGFydGlhbFN0YXRlLCBjYWxsYmFjaykg
e1xuICAhKHR5cGVvZiBwYXJ0aWFsU3RhdGUgPT09ICdvYmplY3QnIHx8IHR5cGVvZiBwYXJ0aWFs
U3RhdGUgPT09ICdmdW5jdGlvbicgfHwgcGFydGlhbFN0YXRlID09IG51bGwpID8gcHJvY2Vzcy5l
bnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ3NldFN0YXRl
KC4uLik6IHRha2VzIGFuIG9iamVjdCBvZiBzdGF0ZSB2YXJpYWJsZXMgdG8gdXBkYXRlIG9yIGEg
ZnVuY3Rpb24gd2hpY2ggcmV0dXJucyBhbiBvYmplY3Qgb2Ygc3RhdGUgdmFyaWFibGVzLicpIDog
X3Byb2RJbnZhcmlhbnQoJzg1JykgOiB2b2lkIDA7XG4gIHRoaXMudXBkYXRlci5lbnF1ZXVlU2V0
U3RhdGUodGhpcywgcGFydGlhbFN0YXRlKTtcbiAgaWYgKGNhbGxiYWNrKSB7XG4gICAgdGhpcy51
cGRhdGVyLmVucXVldWVDYWxsYmFjayh0aGlzLCBjYWxsYmFjaywgJ3NldFN0YXRlJyk7XG4gIH1c
bn07XG5cbi8qKlxuICogRm9yY2VzIGFuIHVwZGF0ZS4gVGhpcyBzaG91bGQgb25seSBiZSBpbnZv
a2VkIHdoZW4gaXQgaXMga25vd24gd2l0aFxuICogY2VydGFpbnR5IHRoYXQgd2UgYXJlICoqbm90
KiogaW4gYSBET00gdHJhbnNhY3Rpb24uXG4gKlxuICogWW91IG1heSB3YW50IHRvIGNhbGwgdGhp
cyB3aGVuIHlvdSBrbm93IHRoYXQgc29tZSBkZWVwZXIgYXNwZWN0IG9mIHRoZVxuICogY29tcG9u
ZW50J3Mgc3RhdGUgaGFzIGNoYW5nZWQgYnV0IGBzZXRTdGF0ZWAgd2FzIG5vdCBjYWxsZWQuXG4g
KlxuICogVGhpcyB3aWxsIG5vdCBpbnZva2UgYHNob3VsZENvbXBvbmVudFVwZGF0ZWAsIGJ1dCBp
dCB3aWxsIGludm9rZVxuICogYGNvbXBvbmVudFdpbGxVcGRhdGVgIGFuZCBgY29tcG9uZW50RGlk
VXBkYXRlYC5cbiAqXG4gKiBAcGFyYW0gez9mdW5jdGlvbn0gY2FsbGJhY2sgQ2FsbGVkIGFmdGVy
IHVwZGF0ZSBpcyBjb21wbGV0ZS5cbiAqIEBmaW5hbFxuICogQHByb3RlY3RlZFxuICovXG5SZWFj
dENvbXBvbmVudC5wcm90b3R5cGUuZm9yY2VVcGRhdGUgPSBmdW5jdGlvbiAoY2FsbGJhY2spIHtc
biAgdGhpcy51cGRhdGVyLmVucXVldWVGb3JjZVVwZGF0ZSh0aGlzKTtcbiAgaWYgKGNhbGxiYWNr
KSB7XG4gICAgdGhpcy51cGRhdGVyLmVucXVldWVDYWxsYmFjayh0aGlzLCBjYWxsYmFjaywgJ2Zv
cmNlVXBkYXRlJyk7XG4gIH1cbn07XG5cbi8qKlxuICogRGVwcmVjYXRlZCBBUElzLiBUaGVzZSBB
UElzIHVzZWQgdG8gZXhpc3Qgb24gY2xhc3NpYyBSZWFjdCBjbGFzc2VzIGJ1dCBzaW5jZVxuICog
d2Ugd291bGQgbGlrZSB0byBkZXByZWNhdGUgdGhlbSwgd2UncmUgbm90IGdvaW5nIHRvIG1vdmUg
dGhlbSBvdmVyIHRvIHRoaXNcbiAqIG1vZGVybiBiYXNlIGNsYXNzLiBJbnN0ZWFkLCB3ZSBkZWZp
bmUgYSBnZXR0ZXIgdGhhdCB3YXJucyBpZiBpdCdzIGFjY2Vzc2VkLlxuICovXG5pZiAocHJvY2Vz
cy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICB2YXIgZGVwcmVjYXRlZEFQSXMg
PSB7XG4gICAgaXNNb3VudGVkOiBbJ2lzTW91bnRlZCcsICdJbnN0ZWFkLCBtYWtlIHN1cmUgdG8g
Y2xlYW4gdXAgc3Vic2NyaXB0aW9ucyBhbmQgcGVuZGluZyByZXF1ZXN0cyBpbiAnICsgJ2NvbXBv
bmVudFdpbGxVbm1vdW50IHRvIHByZXZlbnQgbWVtb3J5IGxlYWtzLiddLFxuICAgIHJlcGxhY2VT
dGF0ZTogWydyZXBsYWNlU3RhdGUnLCAnUmVmYWN0b3IgeW91ciBjb2RlIHRvIHVzZSBzZXRTdGF0
ZSBpbnN0ZWFkIChzZWUgJyArICdodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvaXNz
dWVzLzMyMzYpLiddXG4gIH07XG4gIHZhciBkZWZpbmVEZXByZWNhdGlvbldhcm5pbmcgPSBmdW5j
dGlvbiAobWV0aG9kTmFtZSwgaW5mbykge1xuICAgIGlmIChjYW5EZWZpbmVQcm9wZXJ0eSkge1xu
ICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFJlYWN0Q29tcG9uZW50LnByb3RvdHlwZSwgbWV0
aG9kTmFtZSwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBsb3dQcmlv
cml0eVdhcm5pbmcoZmFsc2UsICclcyguLi4pIGlzIGRlcHJlY2F0ZWQgaW4gcGxhaW4gSmF2YVNj
cmlwdCBSZWFjdCBjbGFzc2VzLiAlcycsIGluZm9bMF0sIGluZm9bMV0pO1xuICAgICAgICAgIHJl
dHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfTtcbiAgZm9y
ICh2YXIgZm5OYW1lIGluIGRlcHJlY2F0ZWRBUElzKSB7XG4gICAgaWYgKGRlcHJlY2F0ZWRBUElz
Lmhhc093blByb3BlcnR5KGZuTmFtZSkpIHtcbiAgICAgIGRlZmluZURlcHJlY2F0aW9uV2Fybmlu
Zyhmbk5hbWUsIGRlcHJlY2F0ZWRBUElzW2ZuTmFtZV0pO1xuICAgIH1cbiAgfVxufVxuXG4vKipc
biAqIEJhc2UgY2xhc3MgaGVscGVycyBmb3IgdGhlIHVwZGF0aW5nIHN0YXRlIG9mIGEgY29tcG9u
ZW50LlxuICovXG5mdW5jdGlvbiBSZWFjdFB1cmVDb21wb25lbnQocHJvcHMsIGNvbnRleHQsIHVw
ZGF0ZXIpIHtcbiAgLy8gRHVwbGljYXRlZCBmcm9tIFJlYWN0Q29tcG9uZW50LlxuICB0aGlzLnBy
b3BzID0gcHJvcHM7XG4gIHRoaXMuY29udGV4dCA9IGNvbnRleHQ7XG4gIHRoaXMucmVmcyA9IGVt
cHR5T2JqZWN0O1xuICAvLyBXZSBpbml0aWFsaXplIHRoZSBkZWZhdWx0IHVwZGF0ZXIgYnV0IHRo
ZSByZWFsIG9uZSBnZXRzIGluamVjdGVkIGJ5IHRoZVxuICAvLyByZW5kZXJlci5cbiAgdGhpcy51
cGRhdGVyID0gdXBkYXRlciB8fCBSZWFjdE5vb3BVcGRhdGVRdWV1ZTtcbn1cblxuZnVuY3Rpb24g
Q29tcG9uZW50RHVtbXkoKSB7fVxuQ29tcG9uZW50RHVtbXkucHJvdG90eXBlID0gUmVhY3RDb21w
b25lbnQucHJvdG90eXBlO1xuUmVhY3RQdXJlQ29tcG9uZW50LnByb3RvdHlwZSA9IG5ldyBDb21w
b25lbnREdW1teSgpO1xuUmVhY3RQdXJlQ29tcG9uZW50LnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9
IFJlYWN0UHVyZUNvbXBvbmVudDtcbi8vIEF2b2lkIGFuIGV4dHJhIHByb3RvdHlwZSBqdW1wIGZv
ciB0aGVzZSBtZXRob2RzLlxuX2Fzc2lnbihSZWFjdFB1cmVDb21wb25lbnQucHJvdG90eXBlLCBS
ZWFjdENvbXBvbmVudC5wcm90b3R5cGUpO1xuUmVhY3RQdXJlQ29tcG9uZW50LnByb3RvdHlwZS5p
c1B1cmVSZWFjdENvbXBvbmVudCA9IHRydWU7XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBDb21w
b25lbnQ6IFJlYWN0Q29tcG9uZW50LFxuICBQdXJlQ29tcG9uZW50OiBSZWFjdFB1cmVDb21wb25l
bnRcbn07XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAu
L34vcmVhY3QvbGliL1JlYWN0QmFzZUNsYXNzZXMuanNcbiAqKiBtb2R1bGUgaWQgPSA4OVxuICoq
IG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNi1wcmVzZW50
LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNv
dXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBp
biB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3Vy
Y2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUg
Zm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICog
XG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgX3Byb2RJbnZhcmlhbnQgPSByZXF1aXJlKCcu
L3JlYWN0UHJvZEludmFyaWFudCcpO1xuXG52YXIgUmVhY3RDdXJyZW50T3duZXIgPSByZXF1aXJl
KCcuL1JlYWN0Q3VycmVudE93bmVyJyk7XG5cbnZhciBpbnZhcmlhbnQgPSByZXF1aXJlKCdmYmpz
L2xpYi9pbnZhcmlhbnQnKTtcbnZhciB3YXJuaW5nID0gcmVxdWlyZSgnZmJqcy9saWIvd2Fybmlu
ZycpO1xuXG5mdW5jdGlvbiBpc05hdGl2ZShmbikge1xuICAvLyBCYXNlZCBvbiBpc05hdGl2ZSgp
IGZyb20gTG9kYXNoXG4gIHZhciBmdW5jVG9TdHJpbmcgPSBGdW5jdGlvbi5wcm90b3R5cGUudG9T
dHJpbmc7XG4gIHZhciBoYXNPd25Qcm9wZXJ0eSA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJv
cGVydHk7XG4gIHZhciByZUlzTmF0aXZlID0gUmVnRXhwKCdeJyArIGZ1bmNUb1N0cmluZ1xuICAv
LyBUYWtlIGFuIGV4YW1wbGUgbmF0aXZlIGZ1bmN0aW9uIHNvdXJjZSBmb3IgY29tcGFyaXNvblxu
ICAuY2FsbChoYXNPd25Qcm9wZXJ0eVxuICAvLyBTdHJpcCByZWdleCBjaGFyYWN0ZXJzIHNvIHdl
IGNhbiB1c2UgaXQgZm9yIHJlZ2V4XG4gICkucmVwbGFjZSgvW1xcXFxeJC4qKz8oKVtcXF17fXxd
L2csICdcXFxcJCYnXG4gIC8vIFJlbW92ZSBoYXNPd25Qcm9wZXJ0eSBmcm9tIHRoZSB0ZW1wbGF0
ZSB0byBtYWtlIGl0IGdlbmVyaWNcbiAgKS5yZXBsYWNlKC9oYXNPd25Qcm9wZXJ0eXwoZnVuY3Rp
b24pLio/KD89XFxcXFxcKCl8IGZvciAuKz8oPz1cXFxcXFxdKS9nLCAnJDEuKj8nKSArICckJyk7
XG4gIHRyeSB7XG4gICAgdmFyIHNvdXJjZSA9IGZ1bmNUb1N0cmluZy5jYWxsKGZuKTtcbiAgICBy
ZXR1cm4gcmVJc05hdGl2ZS50ZXN0KHNvdXJjZSk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHJl
dHVybiBmYWxzZTtcbiAgfVxufVxuXG52YXIgY2FuVXNlQ29sbGVjdGlvbnMgPVxuLy8gQXJyYXku
ZnJvbVxudHlwZW9mIEFycmF5LmZyb20gPT09ICdmdW5jdGlvbicgJiZcbi8vIE1hcFxudHlwZW9m
IE1hcCA9PT0gJ2Z1bmN0aW9uJyAmJiBpc05hdGl2ZShNYXApICYmXG4vLyBNYXAucHJvdG90eXBl
LmtleXNcbk1hcC5wcm90b3R5cGUgIT0gbnVsbCAmJiB0eXBlb2YgTWFwLnByb3RvdHlwZS5rZXlz
ID09PSAnZnVuY3Rpb24nICYmIGlzTmF0aXZlKE1hcC5wcm90b3R5cGUua2V5cykgJiZcbi8vIFNl
dFxudHlwZW9mIFNldCA9PT0gJ2Z1bmN0aW9uJyAmJiBpc05hdGl2ZShTZXQpICYmXG4vLyBTZXQu
cHJvdG90eXBlLmtleXNcblNldC5wcm90b3R5cGUgIT0gbnVsbCAmJiB0eXBlb2YgU2V0LnByb3Rv
dHlwZS5rZXlzID09PSAnZnVuY3Rpb24nICYmIGlzTmF0aXZlKFNldC5wcm90b3R5cGUua2V5cyk7
XG5cbnZhciBzZXRJdGVtO1xudmFyIGdldEl0ZW07XG52YXIgcmVtb3ZlSXRlbTtcbnZhciBnZXRJ
dGVtSURzO1xudmFyIGFkZFJvb3Q7XG52YXIgcmVtb3ZlUm9vdDtcbnZhciBnZXRSb290SURzO1xu
XG5pZiAoY2FuVXNlQ29sbGVjdGlvbnMpIHtcbiAgdmFyIGl0ZW1NYXAgPSBuZXcgTWFwKCk7XG4g
IHZhciByb290SURTZXQgPSBuZXcgU2V0KCk7XG5cbiAgc2V0SXRlbSA9IGZ1bmN0aW9uIChpZCwg
aXRlbSkge1xuICAgIGl0ZW1NYXAuc2V0KGlkLCBpdGVtKTtcbiAgfTtcbiAgZ2V0SXRlbSA9IGZ1
bmN0aW9uIChpZCkge1xuICAgIHJldHVybiBpdGVtTWFwLmdldChpZCk7XG4gIH07XG4gIHJlbW92
ZUl0ZW0gPSBmdW5jdGlvbiAoaWQpIHtcbiAgICBpdGVtTWFwWydkZWxldGUnXShpZCk7XG4gIH07
XG4gIGdldEl0ZW1JRHMgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIEFycmF5LmZyb20oaXRl
bU1hcC5rZXlzKCkpO1xuICB9O1xuXG4gIGFkZFJvb3QgPSBmdW5jdGlvbiAoaWQpIHtcbiAgICBy
b290SURTZXQuYWRkKGlkKTtcbiAgfTtcbiAgcmVtb3ZlUm9vdCA9IGZ1bmN0aW9uIChpZCkge1xu
ICAgIHJvb3RJRFNldFsnZGVsZXRlJ10oaWQpO1xuICB9O1xuICBnZXRSb290SURzID0gZnVuY3Rp
b24gKCkge1xuICAgIHJldHVybiBBcnJheS5mcm9tKHJvb3RJRFNldC5rZXlzKCkpO1xuICB9O1xu
fSBlbHNlIHtcbiAgdmFyIGl0ZW1CeUtleSA9IHt9O1xuICB2YXIgcm9vdEJ5S2V5ID0ge307XG5c
biAgLy8gVXNlIG5vbi1udW1lcmljIGtleXMgdG8gcHJldmVudCBWOCBwZXJmb3JtYW5jZSBpc3N1
ZXM6XG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9wdWxsLzcyMzJcbiAg
dmFyIGdldEtleUZyb21JRCA9IGZ1bmN0aW9uIChpZCkge1xuICAgIHJldHVybiAnLicgKyBpZDtc
biAgfTtcbiAgdmFyIGdldElERnJvbUtleSA9IGZ1bmN0aW9uIChrZXkpIHtcbiAgICByZXR1cm4g
cGFyc2VJbnQoa2V5LnN1YnN0cigxKSwgMTApO1xuICB9O1xuXG4gIHNldEl0ZW0gPSBmdW5jdGlv
biAoaWQsIGl0ZW0pIHtcbiAgICB2YXIga2V5ID0gZ2V0S2V5RnJvbUlEKGlkKTtcbiAgICBpdGVt
QnlLZXlba2V5XSA9IGl0ZW07XG4gIH07XG4gIGdldEl0ZW0gPSBmdW5jdGlvbiAoaWQpIHtcbiAg
ICB2YXIga2V5ID0gZ2V0S2V5RnJvbUlEKGlkKTtcbiAgICByZXR1cm4gaXRlbUJ5S2V5W2tleV07
XG4gIH07XG4gIHJlbW92ZUl0ZW0gPSBmdW5jdGlvbiAoaWQpIHtcbiAgICB2YXIga2V5ID0gZ2V0
S2V5RnJvbUlEKGlkKTtcbiAgICBkZWxldGUgaXRlbUJ5S2V5W2tleV07XG4gIH07XG4gIGdldEl0
ZW1JRHMgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKGl0ZW1CeUtleSku
bWFwKGdldElERnJvbUtleSk7XG4gIH07XG5cbiAgYWRkUm9vdCA9IGZ1bmN0aW9uIChpZCkge1xu
ICAgIHZhciBrZXkgPSBnZXRLZXlGcm9tSUQoaWQpO1xuICAgIHJvb3RCeUtleVtrZXldID0gdHJ1
ZTtcbiAgfTtcbiAgcmVtb3ZlUm9vdCA9IGZ1bmN0aW9uIChpZCkge1xuICAgIHZhciBrZXkgPSBn
ZXRLZXlGcm9tSUQoaWQpO1xuICAgIGRlbGV0ZSByb290QnlLZXlba2V5XTtcbiAgfTtcbiAgZ2V0
Um9vdElEcyA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXMocm9vdEJ5S2V5
KS5tYXAoZ2V0SURGcm9tS2V5KTtcbiAgfTtcbn1cblxudmFyIHVubW91bnRlZElEcyA9IFtdO1xu
XG5mdW5jdGlvbiBwdXJnZURlZXAoaWQpIHtcbiAgdmFyIGl0ZW0gPSBnZXRJdGVtKGlkKTtcbiAg
aWYgKGl0ZW0pIHtcbiAgICB2YXIgY2hpbGRJRHMgPSBpdGVtLmNoaWxkSURzO1xuXG4gICAgcmVt
b3ZlSXRlbShpZCk7XG4gICAgY2hpbGRJRHMuZm9yRWFjaChwdXJnZURlZXApO1xuICB9XG59XG5c
bmZ1bmN0aW9uIGRlc2NyaWJlQ29tcG9uZW50RnJhbWUobmFtZSwgc291cmNlLCBvd25lck5hbWUp
IHtcbiAgcmV0dXJuICdcXG4gICAgaW4gJyArIChuYW1lIHx8ICdVbmtub3duJykgKyAoc291cmNl
ID8gJyAoYXQgJyArIHNvdXJjZS5maWxlTmFtZS5yZXBsYWNlKC9eLipbXFxcXFxcL10vLCAnJykg
KyAnOicgKyBzb3VyY2UubGluZU51bWJlciArICcpJyA6IG93bmVyTmFtZSA/ICcgKGNyZWF0ZWQg
YnkgJyArIG93bmVyTmFtZSArICcpJyA6ICcnKTtcbn1cblxuZnVuY3Rpb24gZ2V0RGlzcGxheU5h
bWUoZWxlbWVudCkge1xuICBpZiAoZWxlbWVudCA9PSBudWxsKSB7XG4gICAgcmV0dXJuICcjZW1w
dHknO1xuICB9IGVsc2UgaWYgKHR5cGVvZiBlbGVtZW50ID09PSAnc3RyaW5nJyB8fCB0eXBlb2Yg
ZWxlbWVudCA9PT0gJ251bWJlcicpIHtcbiAgICByZXR1cm4gJyN0ZXh0JztcbiAgfSBlbHNlIGlm
ICh0eXBlb2YgZWxlbWVudC50eXBlID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBlbGVtZW50
LnR5cGU7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGVsZW1lbnQudHlwZS5kaXNwbGF5TmFtZSB8
fCBlbGVtZW50LnR5cGUubmFtZSB8fCAnVW5rbm93bic7XG4gIH1cbn1cblxuZnVuY3Rpb24gZGVz
Y3JpYmVJRChpZCkge1xuICB2YXIgbmFtZSA9IFJlYWN0Q29tcG9uZW50VHJlZUhvb2suZ2V0RGlz
cGxheU5hbWUoaWQpO1xuICB2YXIgZWxlbWVudCA9IFJlYWN0Q29tcG9uZW50VHJlZUhvb2suZ2V0
RWxlbWVudChpZCk7XG4gIHZhciBvd25lcklEID0gUmVhY3RDb21wb25lbnRUcmVlSG9vay5nZXRP
d25lcklEKGlkKTtcbiAgdmFyIG93bmVyTmFtZTtcbiAgaWYgKG93bmVySUQpIHtcbiAgICBvd25l
ck5hbWUgPSBSZWFjdENvbXBvbmVudFRyZWVIb29rLmdldERpc3BsYXlOYW1lKG93bmVySUQpO1xu
ICB9XG4gIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGVs
ZW1lbnQsICdSZWFjdENvbXBvbmVudFRyZWVIb29rOiBNaXNzaW5nIFJlYWN0IGVsZW1lbnQgZm9y
IGRlYnVnSUQgJXMgd2hlbiAnICsgJ2J1aWxkaW5nIHN0YWNrJywgaWQpIDogdm9pZCAwO1xuICBy
ZXR1cm4gZGVzY3JpYmVDb21wb25lbnRGcmFtZShuYW1lLCBlbGVtZW50ICYmIGVsZW1lbnQuX3Nv
dXJjZSwgb3duZXJOYW1lKTtcbn1cblxudmFyIFJlYWN0Q29tcG9uZW50VHJlZUhvb2sgPSB7XG4g
IG9uU2V0Q2hpbGRyZW46IGZ1bmN0aW9uIChpZCwgbmV4dENoaWxkSURzKSB7XG4gICAgdmFyIGl0
ZW0gPSBnZXRJdGVtKGlkKTtcbiAgICAhaXRlbSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAn
cHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdJdGVtIG11c3QgaGF2ZSBiZWVuIHNldCcp
IDogX3Byb2RJbnZhcmlhbnQoJzE0NCcpIDogdm9pZCAwO1xuICAgIGl0ZW0uY2hpbGRJRHMgPSBu
ZXh0Q2hpbGRJRHM7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5leHRDaGlsZElEcy5sZW5n
dGg7IGkrKykge1xuICAgICAgdmFyIG5leHRDaGlsZElEID0gbmV4dENoaWxkSURzW2ldO1xuICAg
ICAgdmFyIG5leHRDaGlsZCA9IGdldEl0ZW0obmV4dENoaWxkSUQpO1xuICAgICAgIW5leHRDaGls
ZCA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFs
c2UsICdFeHBlY3RlZCBob29rIGV2ZW50cyB0byBmaXJlIGZvciB0aGUgY2hpbGQgYmVmb3JlIGl0
cyBwYXJlbnQgaW5jbHVkZXMgaXQgaW4gb25TZXRDaGlsZHJlbigpLicpIDogX3Byb2RJbnZhcmlh
bnQoJzE0MCcpIDogdm9pZCAwO1xuICAgICAgIShuZXh0Q2hpbGQuY2hpbGRJRHMgIT0gbnVsbCB8
fCB0eXBlb2YgbmV4dENoaWxkLmVsZW1lbnQgIT09ICdvYmplY3QnIHx8IG5leHRDaGlsZC5lbGVt
ZW50ID09IG51bGwpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGlu
dmFyaWFudChmYWxzZSwgJ0V4cGVjdGVkIG9uU2V0Q2hpbGRyZW4oKSB0byBmaXJlIGZvciBhIGNv
bnRhaW5lciBjaGlsZCBiZWZvcmUgaXRzIHBhcmVudCBpbmNsdWRlcyBpdCBpbiBvblNldENoaWxk
cmVuKCkuJykgOiBfcHJvZEludmFyaWFudCgnMTQxJykgOiB2b2lkIDA7XG4gICAgICAhbmV4dENo
aWxkLmlzTW91bnRlZCA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBp
bnZhcmlhbnQoZmFsc2UsICdFeHBlY3RlZCBvbk1vdW50Q29tcG9uZW50KCkgdG8gZmlyZSBmb3Ig
dGhlIGNoaWxkIGJlZm9yZSBpdHMgcGFyZW50IGluY2x1ZGVzIGl0IGluIG9uU2V0Q2hpbGRyZW4o
KS4nKSA6IF9wcm9kSW52YXJpYW50KCc3MScpIDogdm9pZCAwO1xuICAgICAgaWYgKG5leHRDaGls
ZC5wYXJlbnRJRCA9PSBudWxsKSB7XG4gICAgICAgIG5leHRDaGlsZC5wYXJlbnRJRCA9IGlkO1xu
ICAgICAgICAvLyBUT0RPOiBUaGlzIHNob3VsZG4ndCBiZSBuZWNlc3NhcnkgYnV0IG1vdW50aW5n
IGEgbmV3IHJvb3QgZHVyaW5nIGluXG4gICAgICAgIC8vIGNvbXBvbmVudFdpbGxNb3VudCBjdXJy
ZW50bHkgY2F1c2VzIG5vdC15ZXQtbW91bnRlZCBjb21wb25lbnRzIHRvXG4gICAgICAgIC8vIGJl
IHB1cmdlZCBmcm9tIG91ciB0cmVlIGRhdGEgc28gdGhlaXIgcGFyZW50IGlkIGlzIG1pc3Npbmcu
XG4gICAgICB9XG4gICAgICAhKG5leHRDaGlsZC5wYXJlbnRJRCA9PT0gaWQpID8gcHJvY2Vzcy5l
bnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ0V4cGVjdGVk
IG9uQmVmb3JlTW91bnRDb21wb25lbnQoKSBwYXJlbnQgYW5kIG9uU2V0Q2hpbGRyZW4oKSB0byBi
ZSBjb25zaXN0ZW50ICglcyBoYXMgcGFyZW50cyAlcyBhbmQgJXMpLicsIG5leHRDaGlsZElELCBu
ZXh0Q2hpbGQucGFyZW50SUQsIGlkKSA6IF9wcm9kSW52YXJpYW50KCcxNDInLCBuZXh0Q2hpbGRJ
RCwgbmV4dENoaWxkLnBhcmVudElELCBpZCkgOiB2b2lkIDA7XG4gICAgfVxuICB9LFxuICBvbkJl
Zm9yZU1vdW50Q29tcG9uZW50OiBmdW5jdGlvbiAoaWQsIGVsZW1lbnQsIHBhcmVudElEKSB7XG4g
ICAgdmFyIGl0ZW0gPSB7XG4gICAgICBlbGVtZW50OiBlbGVtZW50LFxuICAgICAgcGFyZW50SUQ6
IHBhcmVudElELFxuICAgICAgdGV4dDogbnVsbCxcbiAgICAgIGNoaWxkSURzOiBbXSxcbiAgICAg
IGlzTW91bnRlZDogZmFsc2UsXG4gICAgICB1cGRhdGVDb3VudDogMFxuICAgIH07XG4gICAgc2V0
SXRlbShpZCwgaXRlbSk7XG4gIH0sXG4gIG9uQmVmb3JlVXBkYXRlQ29tcG9uZW50OiBmdW5jdGlv
biAoaWQsIGVsZW1lbnQpIHtcbiAgICB2YXIgaXRlbSA9IGdldEl0ZW0oaWQpO1xuICAgIGlmICgh
aXRlbSB8fCAhaXRlbS5pc01vdW50ZWQpIHtcbiAgICAgIC8vIFdlIG1heSBlbmQgdXAgaGVyZSBh
cyBhIHJlc3VsdCBvZiBzZXRTdGF0ZSgpIGluIGNvbXBvbmVudFdpbGxVbm1vdW50KCkuXG4gICAg
ICAvLyBJbiB0aGlzIGNhc2UsIGlnbm9yZSB0aGUgZWxlbWVudC5cbiAgICAgIHJldHVybjtcbiAg
ICB9XG4gICAgaXRlbS5lbGVtZW50ID0gZWxlbWVudDtcbiAgfSxcbiAgb25Nb3VudENvbXBvbmVu
dDogZnVuY3Rpb24gKGlkKSB7XG4gICAgdmFyIGl0ZW0gPSBnZXRJdGVtKGlkKTtcbiAgICAhaXRl
bSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFs
c2UsICdJdGVtIG11c3QgaGF2ZSBiZWVuIHNldCcpIDogX3Byb2RJbnZhcmlhbnQoJzE0NCcpIDog
dm9pZCAwO1xuICAgIGl0ZW0uaXNNb3VudGVkID0gdHJ1ZTtcbiAgICB2YXIgaXNSb290ID0gaXRl
bS5wYXJlbnRJRCA9PT0gMDtcbiAgICBpZiAoaXNSb290KSB7XG4gICAgICBhZGRSb290KGlkKTtc
biAgICB9XG4gIH0sXG4gIG9uVXBkYXRlQ29tcG9uZW50OiBmdW5jdGlvbiAoaWQpIHtcbiAgICB2
YXIgaXRlbSA9IGdldEl0ZW0oaWQpO1xuICAgIGlmICghaXRlbSB8fCAhaXRlbS5pc01vdW50ZWQp
IHtcbiAgICAgIC8vIFdlIG1heSBlbmQgdXAgaGVyZSBhcyBhIHJlc3VsdCBvZiBzZXRTdGF0ZSgp
IGluIGNvbXBvbmVudFdpbGxVbm1vdW50KCkuXG4gICAgICAvLyBJbiB0aGlzIGNhc2UsIGlnbm9y
ZSB0aGUgZWxlbWVudC5cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaXRlbS51cGRhdGVDb3Vu
dCsrO1xuICB9LFxuICBvblVubW91bnRDb21wb25lbnQ6IGZ1bmN0aW9uIChpZCkge1xuICAgIHZh
ciBpdGVtID0gZ2V0SXRlbShpZCk7XG4gICAgaWYgKGl0ZW0pIHtcbiAgICAgIC8vIFdlIG5lZWQg
dG8gY2hlY2sgaWYgaXQgZXhpc3RzLlxuICAgICAgLy8gYGl0ZW1gIG1pZ2h0IG5vdCBleGlzdCBp
ZiBpdCBpcyBpbnNpZGUgYW4gZXJyb3IgYm91bmRhcnksIGFuZCBhIHNpYmxpbmdcbiAgICAgIC8v
IGVycm9yIGJvdW5kYXJ5IGNoaWxkIHRocmV3IHdoaWxlIG1vdW50aW5nLiBUaGVuIHRoaXMgaW5z
dGFuY2UgbmV2ZXJcbiAgICAgIC8vIGdvdCBhIGNoYW5jZSB0byBtb3VudCwgYnV0IGl0IHN0aWxs
IGdldHMgYW4gdW5tb3VudGluZyBldmVudCBkdXJpbmdcbiAgICAgIC8vIHRoZSBlcnJvciBib3Vu
ZGFyeSBjbGVhbnVwLlxuICAgICAgaXRlbS5pc01vdW50ZWQgPSBmYWxzZTtcbiAgICAgIHZhciBp
c1Jvb3QgPSBpdGVtLnBhcmVudElEID09PSAwO1xuICAgICAgaWYgKGlzUm9vdCkge1xuICAgICAg
ICByZW1vdmVSb290KGlkKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdW5tb3VudGVkSURzLnB1c2go
aWQpO1xuICB9LFxuICBwdXJnZVVubW91bnRlZENvbXBvbmVudHM6IGZ1bmN0aW9uICgpIHtcbiAg
ICBpZiAoUmVhY3RDb21wb25lbnRUcmVlSG9vay5fcHJldmVudFB1cmdpbmcpIHtcbiAgICAgIC8v
IFNob3VsZCBvbmx5IGJlIHVzZWQgZm9yIHRlc3RpbmcuXG4gICAgICByZXR1cm47XG4gICAgfVxu
XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB1bm1vdW50ZWRJRHMubGVuZ3RoOyBpKyspIHtcbiAg
ICAgIHZhciBpZCA9IHVubW91bnRlZElEc1tpXTtcbiAgICAgIHB1cmdlRGVlcChpZCk7XG4gICAg
fVxuICAgIHVubW91bnRlZElEcy5sZW5ndGggPSAwO1xuICB9LFxuICBpc01vdW50ZWQ6IGZ1bmN0
aW9uIChpZCkge1xuICAgIHZhciBpdGVtID0gZ2V0SXRlbShpZCk7XG4gICAgcmV0dXJuIGl0ZW0g
PyBpdGVtLmlzTW91bnRlZCA6IGZhbHNlO1xuICB9LFxuICBnZXRDdXJyZW50U3RhY2tBZGRlbmR1
bTogZnVuY3Rpb24gKHRvcEVsZW1lbnQpIHtcbiAgICB2YXIgaW5mbyA9ICcnO1xuICAgIGlmICh0
b3BFbGVtZW50KSB7XG4gICAgICB2YXIgbmFtZSA9IGdldERpc3BsYXlOYW1lKHRvcEVsZW1lbnQp
O1xuICAgICAgdmFyIG93bmVyID0gdG9wRWxlbWVudC5fb3duZXI7XG4gICAgICBpbmZvICs9IGRl
c2NyaWJlQ29tcG9uZW50RnJhbWUobmFtZSwgdG9wRWxlbWVudC5fc291cmNlLCBvd25lciAmJiBv
d25lci5nZXROYW1lKCkpO1xuICAgIH1cblxuICAgIHZhciBjdXJyZW50T3duZXIgPSBSZWFjdEN1
cnJlbnRPd25lci5jdXJyZW50O1xuICAgIHZhciBpZCA9IGN1cnJlbnRPd25lciAmJiBjdXJyZW50
T3duZXIuX2RlYnVnSUQ7XG5cbiAgICBpbmZvICs9IFJlYWN0Q29tcG9uZW50VHJlZUhvb2suZ2V0
U3RhY2tBZGRlbmR1bUJ5SUQoaWQpO1xuICAgIHJldHVybiBpbmZvO1xuICB9LFxuICBnZXRTdGFj
a0FkZGVuZHVtQnlJRDogZnVuY3Rpb24gKGlkKSB7XG4gICAgdmFyIGluZm8gPSAnJztcbiAgICB3
aGlsZSAoaWQpIHtcbiAgICAgIGluZm8gKz0gZGVzY3JpYmVJRChpZCk7XG4gICAgICBpZCA9IFJl
YWN0Q29tcG9uZW50VHJlZUhvb2suZ2V0UGFyZW50SUQoaWQpO1xuICAgIH1cbiAgICByZXR1cm4g
aW5mbztcbiAgfSxcbiAgZ2V0Q2hpbGRJRHM6IGZ1bmN0aW9uIChpZCkge1xuICAgIHZhciBpdGVt
ID0gZ2V0SXRlbShpZCk7XG4gICAgcmV0dXJuIGl0ZW0gPyBpdGVtLmNoaWxkSURzIDogW107XG4g
IH0sXG4gIGdldERpc3BsYXlOYW1lOiBmdW5jdGlvbiAoaWQpIHtcbiAgICB2YXIgZWxlbWVudCA9
IFJlYWN0Q29tcG9uZW50VHJlZUhvb2suZ2V0RWxlbWVudChpZCk7XG4gICAgaWYgKCFlbGVtZW50
KSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIGdldERpc3BsYXlOYW1l
KGVsZW1lbnQpO1xuICB9LFxuICBnZXRFbGVtZW50OiBmdW5jdGlvbiAoaWQpIHtcbiAgICB2YXIg
aXRlbSA9IGdldEl0ZW0oaWQpO1xuICAgIHJldHVybiBpdGVtID8gaXRlbS5lbGVtZW50IDogbnVs
bDtcbiAgfSxcbiAgZ2V0T3duZXJJRDogZnVuY3Rpb24gKGlkKSB7XG4gICAgdmFyIGVsZW1lbnQg
PSBSZWFjdENvbXBvbmVudFRyZWVIb29rLmdldEVsZW1lbnQoaWQpO1xuICAgIGlmICghZWxlbWVu
dCB8fCAhZWxlbWVudC5fb3duZXIpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBy
ZXR1cm4gZWxlbWVudC5fb3duZXIuX2RlYnVnSUQ7XG4gIH0sXG4gIGdldFBhcmVudElEOiBmdW5j
dGlvbiAoaWQpIHtcbiAgICB2YXIgaXRlbSA9IGdldEl0ZW0oaWQpO1xuICAgIHJldHVybiBpdGVt
ID8gaXRlbS5wYXJlbnRJRCA6IG51bGw7XG4gIH0sXG4gIGdldFNvdXJjZTogZnVuY3Rpb24gKGlk
KSB7XG4gICAgdmFyIGl0ZW0gPSBnZXRJdGVtKGlkKTtcbiAgICB2YXIgZWxlbWVudCA9IGl0ZW0g
PyBpdGVtLmVsZW1lbnQgOiBudWxsO1xuICAgIHZhciBzb3VyY2UgPSBlbGVtZW50ICE9IG51bGwg
PyBlbGVtZW50Ll9zb3VyY2UgOiBudWxsO1xuICAgIHJldHVybiBzb3VyY2U7XG4gIH0sXG4gIGdl
dFRleHQ6IGZ1bmN0aW9uIChpZCkge1xuICAgIHZhciBlbGVtZW50ID0gUmVhY3RDb21wb25lbnRU
cmVlSG9vay5nZXRFbGVtZW50KGlkKTtcbiAgICBpZiAodHlwZW9mIGVsZW1lbnQgPT09ICdzdHJp
bmcnKSB7XG4gICAgICByZXR1cm4gZWxlbWVudDtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBlbGVt
ZW50ID09PSAnbnVtYmVyJykge1xuICAgICAgcmV0dXJuICcnICsgZWxlbWVudDtcbiAgICB9IGVs
c2Uge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9LFxuICBnZXRVcGRhdGVDb3VudDog
ZnVuY3Rpb24gKGlkKSB7XG4gICAgdmFyIGl0ZW0gPSBnZXRJdGVtKGlkKTtcbiAgICByZXR1cm4g
aXRlbSA/IGl0ZW0udXBkYXRlQ291bnQgOiAwO1xuICB9LFxuXG5cbiAgZ2V0Um9vdElEczogZ2V0
Um9vdElEcyxcbiAgZ2V0UmVnaXN0ZXJlZElEczogZ2V0SXRlbUlEcyxcblxuICBwdXNoTm9uU3Rh
bmRhcmRXYXJuaW5nU3RhY2s6IGZ1bmN0aW9uIChpc0NyZWF0aW5nRWxlbWVudCwgY3VycmVudFNv
dXJjZSkge1xuICAgIGlmICh0eXBlb2YgY29uc29sZS5yZWFjdFN0YWNrICE9PSAnZnVuY3Rpb24n
KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmFyIHN0YWNrID0gW107XG4gICAgdmFy
IGN1cnJlbnRPd25lciA9IFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQ7XG4gICAgdmFyIGlkID0g
Y3VycmVudE93bmVyICYmIGN1cnJlbnRPd25lci5fZGVidWdJRDtcblxuICAgIHRyeSB7XG4gICAg
ICBpZiAoaXNDcmVhdGluZ0VsZW1lbnQpIHtcbiAgICAgICAgc3RhY2sucHVzaCh7XG4gICAgICAg
ICAgbmFtZTogaWQgPyBSZWFjdENvbXBvbmVudFRyZWVIb29rLmdldERpc3BsYXlOYW1lKGlkKSA6
IG51bGwsXG4gICAgICAgICAgZmlsZU5hbWU6IGN1cnJlbnRTb3VyY2UgPyBjdXJyZW50U291cmNl
LmZpbGVOYW1lIDogbnVsbCxcbiAgICAgICAgICBsaW5lTnVtYmVyOiBjdXJyZW50U291cmNlID8g
Y3VycmVudFNvdXJjZS5saW5lTnVtYmVyIDogbnVsbFxuICAgICAgICB9KTtcbiAgICAgIH1cblxu
ICAgICAgd2hpbGUgKGlkKSB7XG4gICAgICAgIHZhciBlbGVtZW50ID0gUmVhY3RDb21wb25lbnRU
cmVlSG9vay5nZXRFbGVtZW50KGlkKTtcbiAgICAgICAgdmFyIHBhcmVudElEID0gUmVhY3RDb21w
b25lbnRUcmVlSG9vay5nZXRQYXJlbnRJRChpZCk7XG4gICAgICAgIHZhciBvd25lcklEID0gUmVh
Y3RDb21wb25lbnRUcmVlSG9vay5nZXRPd25lcklEKGlkKTtcbiAgICAgICAgdmFyIG93bmVyTmFt
ZSA9IG93bmVySUQgPyBSZWFjdENvbXBvbmVudFRyZWVIb29rLmdldERpc3BsYXlOYW1lKG93bmVy
SUQpIDogbnVsbDtcbiAgICAgICAgdmFyIHNvdXJjZSA9IGVsZW1lbnQgJiYgZWxlbWVudC5fc291
cmNlO1xuICAgICAgICBzdGFjay5wdXNoKHtcbiAgICAgICAgICBuYW1lOiBvd25lck5hbWUsXG4g
ICAgICAgICAgZmlsZU5hbWU6IHNvdXJjZSA/IHNvdXJjZS5maWxlTmFtZSA6IG51bGwsXG4gICAg
ICAgICAgbGluZU51bWJlcjogc291cmNlID8gc291cmNlLmxpbmVOdW1iZXIgOiBudWxsXG4gICAg
ICAgIH0pO1xuICAgICAgICBpZCA9IHBhcmVudElEO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVy
cikge1xuICAgICAgLy8gSW50ZXJuYWwgc3RhdGUgaXMgbWVzc2VkIHVwLlxuICAgICAgLy8gU3Rv
cCBidWlsZGluZyB0aGUgc3RhY2sgKGl0J3MganVzdCBhIG5pY2UgdG8gaGF2ZSkuXG4gICAgfVxu
XG4gICAgY29uc29sZS5yZWFjdFN0YWNrKHN0YWNrKTtcbiAgfSxcbiAgcG9wTm9uU3RhbmRhcmRX
YXJuaW5nU3RhY2s6IGZ1bmN0aW9uICgpIHtcbiAgICBpZiAodHlwZW9mIGNvbnNvbGUucmVhY3RT
dGFja0VuZCAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25z
b2xlLnJlYWN0U3RhY2tFbmQoKTtcbiAgfVxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdENv
bXBvbmVudFRyZWVIb29rO1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9P
VEVSXG4gKiogLi9+L3JlYWN0L2xpYi9SZWFjdENvbXBvbmVudFRyZWVIb29rLmpzXG4gKiogbW9k
dWxlIGlkID0gOTBcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29weXJp
Z2h0IDIwMTQtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQu
XG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxl
IGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0
b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVu
dCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGly
ZWN0b3J5LlxuICpcbiAqIFxuICovXG5cbid1c2Ugc3RyaWN0JztcblxuLy8gVGhlIFN5bWJvbCB1
c2VkIHRvIHRhZyB0aGUgUmVhY3RFbGVtZW50IHR5cGUuIElmIHRoZXJlIGlzIG5vIG5hdGl2ZSBT
eW1ib2xcbi8vIG5vciBwb2x5ZmlsbCwgdGhlbiBhIHBsYWluIG51bWJlciBpcyB1c2VkIGZvciBw
ZXJmb3JtYW5jZS5cblxudmFyIFJFQUNUX0VMRU1FTlRfVFlQRSA9IHR5cGVvZiBTeW1ib2wgPT09
ICdmdW5jdGlvbicgJiYgU3ltYm9sWydmb3InXSAmJiBTeW1ib2xbJ2ZvciddKCdyZWFjdC5lbGVt
ZW50JykgfHwgMHhlYWM3O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFJFQUNUX0VMRU1FTlRfVFlQRTtc
blxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFj
dC9saWIvUmVhY3RFbGVtZW50U3ltYm9sLmpzXG4gKiogbW9kdWxlIGlkID0gOTFcbiAqKiBtb2R1
bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTUtcHJlc2VudCwgRmFj
ZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2Ug
Y29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhl
XG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRy
ZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5k
IGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4n
dXNlIHN0cmljdCc7XG5cbnZhciB3YXJuaW5nID0gcmVxdWlyZSgnZmJqcy9saWIvd2FybmluZycp
O1xuXG5mdW5jdGlvbiB3YXJuTm9vcChwdWJsaWNJbnN0YW5jZSwgY2FsbGVyTmFtZSkge1xuICBp
ZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIHZhciBjb25z
dHJ1Y3RvciA9IHB1YmxpY0luc3RhbmNlLmNvbnN0cnVjdG9yO1xuICAgIHByb2Nlc3MuZW52Lk5P
REVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnJXMoLi4uKTogQ2FuIG9u
bHkgdXBkYXRlIGEgbW91bnRlZCBvciBtb3VudGluZyBjb21wb25lbnQuICcgKyAnVGhpcyB1c3Vh
bGx5IG1lYW5zIHlvdSBjYWxsZWQgJXMoKSBvbiBhbiB1bm1vdW50ZWQgY29tcG9uZW50LiAnICsg
J1RoaXMgaXMgYSBuby1vcC4gUGxlYXNlIGNoZWNrIHRoZSBjb2RlIGZvciB0aGUgJXMgY29tcG9u
ZW50LicsIGNhbGxlck5hbWUsIGNhbGxlck5hbWUsIGNvbnN0cnVjdG9yICYmIChjb25zdHJ1Y3Rv
ci5kaXNwbGF5TmFtZSB8fCBjb25zdHJ1Y3Rvci5uYW1lKSB8fCAnUmVhY3RDbGFzcycpIDogdm9p
ZCAwO1xuICB9XG59XG5cbi8qKlxuICogVGhpcyBpcyB0aGUgYWJzdHJhY3QgQVBJIGZvciBhbiB1
cGRhdGUgcXVldWUuXG4gKi9cbnZhciBSZWFjdE5vb3BVcGRhdGVRdWV1ZSA9IHtcbiAgLyoqXG4g
ICAqIENoZWNrcyB3aGV0aGVyIG9yIG5vdCB0aGlzIGNvbXBvc2l0ZSBjb21wb25lbnQgaXMgbW91
bnRlZC5cbiAgICogQHBhcmFtIHtSZWFjdENsYXNzfSBwdWJsaWNJbnN0YW5jZSBUaGUgaW5zdGFu
Y2Ugd2Ugd2FudCB0byB0ZXN0LlxuICAgKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmIG1vdW50
ZWQsIGZhbHNlIG90aGVyd2lzZS5cbiAgICogQHByb3RlY3RlZFxuICAgKiBAZmluYWxcbiAgICov
XG4gIGlzTW91bnRlZDogZnVuY3Rpb24gKHB1YmxpY0luc3RhbmNlKSB7XG4gICAgcmV0dXJuIGZh
bHNlO1xuICB9LFxuXG4gIC8qKlxuICAgKiBFbnF1ZXVlIGEgY2FsbGJhY2sgdGhhdCB3aWxsIGJl
IGV4ZWN1dGVkIGFmdGVyIGFsbCB0aGUgcGVuZGluZyB1cGRhdGVzXG4gICAqIGhhdmUgcHJvY2Vz
c2VkLlxuICAgKlxuICAgKiBAcGFyYW0ge1JlYWN0Q2xhc3N9IHB1YmxpY0luc3RhbmNlIFRoZSBp
bnN0YW5jZSB0byB1c2UgYXMgYHRoaXNgIGNvbnRleHQuXG4gICAqIEBwYXJhbSB7P2Z1bmN0aW9u
fSBjYWxsYmFjayBDYWxsZWQgYWZ0ZXIgc3RhdGUgaXMgdXBkYXRlZC5cbiAgICogQGludGVybmFs
XG4gICAqL1xuICBlbnF1ZXVlQ2FsbGJhY2s6IGZ1bmN0aW9uIChwdWJsaWNJbnN0YW5jZSwgY2Fs
bGJhY2spIHt9LFxuXG4gIC8qKlxuICAgKiBGb3JjZXMgYW4gdXBkYXRlLiBUaGlzIHNob3VsZCBv
bmx5IGJlIGludm9rZWQgd2hlbiBpdCBpcyBrbm93biB3aXRoXG4gICAqIGNlcnRhaW50eSB0aGF0
IHdlIGFyZSAqKm5vdCoqIGluIGEgRE9NIHRyYW5zYWN0aW9uLlxuICAgKlxuICAgKiBZb3UgbWF5
IHdhbnQgdG8gY2FsbCB0aGlzIHdoZW4geW91IGtub3cgdGhhdCBzb21lIGRlZXBlciBhc3BlY3Qg
b2YgdGhlXG4gICAqIGNvbXBvbmVudCdzIHN0YXRlIGhhcyBjaGFuZ2VkIGJ1dCBgc2V0U3RhdGVg
IHdhcyBub3QgY2FsbGVkLlxuICAgKlxuICAgKiBUaGlzIHdpbGwgbm90IGludm9rZSBgc2hvdWxk
Q29tcG9uZW50VXBkYXRlYCwgYnV0IGl0IHdpbGwgaW52b2tlXG4gICAqIGBjb21wb25lbnRXaWxs
VXBkYXRlYCBhbmQgYGNvbXBvbmVudERpZFVwZGF0ZWAuXG4gICAqXG4gICAqIEBwYXJhbSB7UmVh
Y3RDbGFzc30gcHVibGljSW5zdGFuY2UgVGhlIGluc3RhbmNlIHRoYXQgc2hvdWxkIHJlcmVuZGVy
LlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIGVucXVldWVGb3JjZVVwZGF0ZTogZnVuY3Rpb24g
KHB1YmxpY0luc3RhbmNlKSB7XG4gICAgd2Fybk5vb3AocHVibGljSW5zdGFuY2UsICdmb3JjZVVw
ZGF0ZScpO1xuICB9LFxuXG4gIC8qKlxuICAgKiBSZXBsYWNlcyBhbGwgb2YgdGhlIHN0YXRlLiBB
bHdheXMgdXNlIHRoaXMgb3IgYHNldFN0YXRlYCB0byBtdXRhdGUgc3RhdGUuXG4gICAqIFlvdSBz
aG91bGQgdHJlYXQgYHRoaXMuc3RhdGVgIGFzIGltbXV0YWJsZS5cbiAgICpcbiAgICogVGhlcmUg
aXMgbm8gZ3VhcmFudGVlIHRoYXQgYHRoaXMuc3RhdGVgIHdpbGwgYmUgaW1tZWRpYXRlbHkgdXBk
YXRlZCwgc29cbiAgICogYWNjZXNzaW5nIGB0aGlzLnN0YXRlYCBhZnRlciBjYWxsaW5nIHRoaXMg
bWV0aG9kIG1heSByZXR1cm4gdGhlIG9sZCB2YWx1ZS5cbiAgICpcbiAgICogQHBhcmFtIHtSZWFj
dENsYXNzfSBwdWJsaWNJbnN0YW5jZSBUaGUgaW5zdGFuY2UgdGhhdCBzaG91bGQgcmVyZW5kZXIu
XG4gICAqIEBwYXJhbSB7b2JqZWN0fSBjb21wbGV0ZVN0YXRlIE5leHQgc3RhdGUuXG4gICAqIEBp
bnRlcm5hbFxuICAgKi9cbiAgZW5xdWV1ZVJlcGxhY2VTdGF0ZTogZnVuY3Rpb24gKHB1YmxpY0lu
c3RhbmNlLCBjb21wbGV0ZVN0YXRlKSB7XG4gICAgd2Fybk5vb3AocHVibGljSW5zdGFuY2UsICdy
ZXBsYWNlU3RhdGUnKTtcbiAgfSxcblxuICAvKipcbiAgICogU2V0cyBhIHN1YnNldCBvZiB0aGUg
c3RhdGUuIFRoaXMgb25seSBleGlzdHMgYmVjYXVzZSBfcGVuZGluZ1N0YXRlIGlzXG4gICAqIGlu
dGVybmFsLiBUaGlzIHByb3ZpZGVzIGEgbWVyZ2luZyBzdHJhdGVneSB0aGF0IGlzIG5vdCBhdmFp
bGFibGUgdG8gZGVlcFxuICAgKiBwcm9wZXJ0aWVzIHdoaWNoIGlzIGNvbmZ1c2luZy4gVE9ETzog
RXhwb3NlIHBlbmRpbmdTdGF0ZSBvciBkb24ndCB1c2UgaXRcbiAgICogZHVyaW5nIHRoZSBtZXJn
ZS5cbiAgICpcbiAgICogQHBhcmFtIHtSZWFjdENsYXNzfSBwdWJsaWNJbnN0YW5jZSBUaGUgaW5z
dGFuY2UgdGhhdCBzaG91bGQgcmVyZW5kZXIuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBwYXJ0aWFs
U3RhdGUgTmV4dCBwYXJ0aWFsIHN0YXRlIHRvIGJlIG1lcmdlZCB3aXRoIHN0YXRlLlxuICAgKiBA
aW50ZXJuYWxcbiAgICovXG4gIGVucXVldWVTZXRTdGF0ZTogZnVuY3Rpb24gKHB1YmxpY0luc3Rh
bmNlLCBwYXJ0aWFsU3RhdGUpIHtcbiAgICB3YXJuTm9vcChwdWJsaWNJbnN0YW5jZSwgJ3NldFN0
YXRlJyk7XG4gIH1cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3ROb29wVXBkYXRlUXVldWU7
XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVh
Y3QvbGliL1JlYWN0Tm9vcFVwZGF0ZVF1ZXVlLmpzXG4gKiogbW9kdWxlIGlkID0gOTJcbiAqKiBt
b2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwg
RmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3Vy
Y2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4g
dGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNl
IHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZv
dW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIFxu
ICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIGNhbkRlZmluZVByb3BlcnR5ID0gZmFsc2U7XG5p
ZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICB0cnkge1xuICAg
IC8vICRGbG93Rml4TWUgaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL2Zsb3cvaXNzdWVzLzI4
NVxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSwgJ3gnLCB7IGdldDogZnVuY3Rpb24gKCkg
e30gfSk7XG4gICAgY2FuRGVmaW5lUHJvcGVydHkgPSB0cnVlO1xuICB9IGNhdGNoICh4KSB7XG4g
ICAgLy8gSUUgd2lsbCBmYWlsIG9uIGRlZmluZVByb3BlcnR5XG4gIH1cbn1cblxubW9kdWxlLmV4
cG9ydHMgPSBjYW5EZWZpbmVQcm9wZXJ0eTtcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBX
RUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFjdC9saWIvY2FuRGVmaW5lUHJvcGVydHkuanNcbiAq
KiBtb2R1bGUgaWQgPSA5M1xuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiXCJ1c2Ugc3Ry
aWN0XCI7XG5cbmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5leHBvcnRzW1wiZGVmYXVsdFwi
XSA9IGNvbXBvc2U7XG4vKipcbiAqIENvbXBvc2VzIHNpbmdsZS1hcmd1bWVudCBmdW5jdGlvbnMg
ZnJvbSByaWdodCB0byBsZWZ0LiBUaGUgcmlnaHRtb3N0XG4gKiBmdW5jdGlvbiBjYW4gdGFrZSBt
dWx0aXBsZSBhcmd1bWVudHMgYXMgaXQgcHJvdmlkZXMgdGhlIHNpZ25hdHVyZSBmb3JcbiAqIHRo
ZSByZXN1bHRpbmcgY29tcG9zaXRlIGZ1bmN0aW9uLlxuICpcbiAqIEBwYXJhbSB7Li4uRnVuY3Rp
b259IGZ1bmNzIFRoZSBmdW5jdGlvbnMgdG8gY29tcG9zZS5cbiAqIEByZXR1cm5zIHtGdW5jdGlv
bn0gQSBmdW5jdGlvbiBvYnRhaW5lZCBieSBjb21wb3NpbmcgdGhlIGFyZ3VtZW50IGZ1bmN0aW9u
c1xuICogZnJvbSByaWdodCB0byBsZWZ0LiBGb3IgZXhhbXBsZSwgY29tcG9zZShmLCBnLCBoKSBp
cyBpZGVudGljYWwgdG8gZG9pbmdcbiAqICguLi5hcmdzKSA9PiBmKGcoaCguLi5hcmdzKSkpLlxu
ICovXG5cbmZ1bmN0aW9uIGNvbXBvc2UoKSB7XG4gIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMu
bGVuZ3RoLCBmdW5jcyA9IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkr
Kykge1xuICAgIGZ1bmNzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICB9XG5cbiAgaWYgKGZ1
bmNzLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBmdW5jdGlvbiAoYXJnKSB7XG4gICAgICBy
ZXR1cm4gYXJnO1xuICAgIH07XG4gIH1cblxuICBpZiAoZnVuY3MubGVuZ3RoID09PSAxKSB7XG4g
ICAgcmV0dXJuIGZ1bmNzWzBdO1xuICB9XG5cbiAgcmV0dXJuIGZ1bmNzLnJlZHVjZShmdW5jdGlv
biAoYSwgYikge1xuICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gYShiLmFw
cGx5KHVuZGVmaW5lZCwgYXJndW1lbnRzKSk7XG4gICAgfTtcbiAgfSk7XG59XG5cblxuLyoqKioq
KioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVkdXgvbGliL2NvbXBv
c2UuanNcbiAqKiBtb2R1bGUgaWQgPSA5NFxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwi
J3VzZSBzdHJpY3QnO1xuXG5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuZXhwb3J0cy5BY3Rp
b25UeXBlcyA9IHVuZGVmaW5lZDtcbmV4cG9ydHNbJ2RlZmF1bHQnXSA9IGNyZWF0ZVN0b3JlO1xu
XG52YXIgX2lzUGxhaW5PYmplY3QgPSByZXF1aXJlKCdsb2Rhc2gvaXNQbGFpbk9iamVjdCcpO1xu
XG52YXIgX2lzUGxhaW5PYmplY3QyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaXNQbGFpbk9i
amVjdCk7XG5cbnZhciBfc3ltYm9sT2JzZXJ2YWJsZSA9IHJlcXVpcmUoJ3N5bWJvbC1vYnNlcnZh
YmxlJyk7XG5cbnZhciBfc3ltYm9sT2JzZXJ2YWJsZTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0
KF9zeW1ib2xPYnNlcnZhYmxlKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChv
YmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgJ2RlZmF1bHQnOiBv
YmogfTsgfVxuXG4vKipcbiAqIFRoZXNlIGFyZSBwcml2YXRlIGFjdGlvbiB0eXBlcyByZXNlcnZl
ZCBieSBSZWR1eC5cbiAqIEZvciBhbnkgdW5rbm93biBhY3Rpb25zLCB5b3UgbXVzdCByZXR1cm4g
dGhlIGN1cnJlbnQgc3RhdGUuXG4gKiBJZiB0aGUgY3VycmVudCBzdGF0ZSBpcyB1bmRlZmluZWQs
IHlvdSBtdXN0IHJldHVybiB0aGUgaW5pdGlhbCBzdGF0ZS5cbiAqIERvIG5vdCByZWZlcmVuY2Ug
dGhlc2UgYWN0aW9uIHR5cGVzIGRpcmVjdGx5IGluIHlvdXIgY29kZS5cbiAqL1xudmFyIEFjdGlv
blR5cGVzID0gZXhwb3J0cy5BY3Rpb25UeXBlcyA9IHtcbiAgSU5JVDogJ0BAcmVkdXgvSU5JVCdc
blxuICAvKipcbiAgICogQ3JlYXRlcyBhIFJlZHV4IHN0b3JlIHRoYXQgaG9sZHMgdGhlIHN0YXRl
IHRyZWUuXG4gICAqIFRoZSBvbmx5IHdheSB0byBjaGFuZ2UgdGhlIGRhdGEgaW4gdGhlIHN0b3Jl
IGlzIHRvIGNhbGwgYGRpc3BhdGNoKClgIG9uIGl0LlxuICAgKlxuICAgKiBUaGVyZSBzaG91bGQg
b25seSBiZSBhIHNpbmdsZSBzdG9yZSBpbiB5b3VyIGFwcC4gVG8gc3BlY2lmeSBob3cgZGlmZmVy
ZW50XG4gICAqIHBhcnRzIG9mIHRoZSBzdGF0ZSB0cmVlIHJlc3BvbmQgdG8gYWN0aW9ucywgeW91
IG1heSBjb21iaW5lIHNldmVyYWwgcmVkdWNlcnNcbiAgICogaW50byBhIHNpbmdsZSByZWR1Y2Vy
IGZ1bmN0aW9uIGJ5IHVzaW5nIGBjb21iaW5lUmVkdWNlcnNgLlxuICAgKlxuICAgKiBAcGFyYW0g
e0Z1bmN0aW9ufSByZWR1Y2VyIEEgZnVuY3Rpb24gdGhhdCByZXR1cm5zIHRoZSBuZXh0IHN0YXRl
IHRyZWUsIGdpdmVuXG4gICAqIHRoZSBjdXJyZW50IHN0YXRlIHRyZWUgYW5kIHRoZSBhY3Rpb24g
dG8gaGFuZGxlLlxuICAgKlxuICAgKiBAcGFyYW0ge2FueX0gW3ByZWxvYWRlZFN0YXRlXSBUaGUg
aW5pdGlhbCBzdGF0ZS4gWW91IG1heSBvcHRpb25hbGx5IHNwZWNpZnkgaXRcbiAgICogdG8gaHlk
cmF0ZSB0aGUgc3RhdGUgZnJvbSB0aGUgc2VydmVyIGluIHVuaXZlcnNhbCBhcHBzLCBvciB0byBy
ZXN0b3JlIGFcbiAgICogcHJldmlvdXNseSBzZXJpYWxpemVkIHVzZXIgc2Vzc2lvbi5cbiAgICog
SWYgeW91IHVzZSBgY29tYmluZVJlZHVjZXJzYCB0byBwcm9kdWNlIHRoZSByb290IHJlZHVjZXIg
ZnVuY3Rpb24sIHRoaXMgbXVzdCBiZVxuICAgKiBhbiBvYmplY3Qgd2l0aCB0aGUgc2FtZSBzaGFw
ZSBhcyBgY29tYmluZVJlZHVjZXJzYCBrZXlzLlxuICAgKlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9u
fSBbZW5oYW5jZXJdIFRoZSBzdG9yZSBlbmhhbmNlci4gWW91IG1heSBvcHRpb25hbGx5IHNwZWNp
ZnkgaXRcbiAgICogdG8gZW5oYW5jZSB0aGUgc3RvcmUgd2l0aCB0aGlyZC1wYXJ0eSBjYXBhYmls
aXRpZXMgc3VjaCBhcyBtaWRkbGV3YXJlLFxuICAgKiB0aW1lIHRyYXZlbCwgcGVyc2lzdGVuY2Us
IGV0Yy4gVGhlIG9ubHkgc3RvcmUgZW5oYW5jZXIgdGhhdCBzaGlwcyB3aXRoIFJlZHV4XG4gICAq
IGlzIGBhcHBseU1pZGRsZXdhcmUoKWAuXG4gICAqXG4gICAqIEByZXR1cm5zIHtTdG9yZX0gQSBS
ZWR1eCBzdG9yZSB0aGF0IGxldHMgeW91IHJlYWQgdGhlIHN0YXRlLCBkaXNwYXRjaCBhY3Rpb25z
XG4gICAqIGFuZCBzdWJzY3JpYmUgdG8gY2hhbmdlcy5cbiAgICovXG59O2Z1bmN0aW9uIGNyZWF0
ZVN0b3JlKHJlZHVjZXIsIHByZWxvYWRlZFN0YXRlLCBlbmhhbmNlcikge1xuICB2YXIgX3JlZjI7
XG5cbiAgaWYgKHR5cGVvZiBwcmVsb2FkZWRTdGF0ZSA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2Yg
ZW5oYW5jZXIgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgZW5oYW5jZXIgPSBwcmVsb2FkZWRTdGF0
ZTtcbiAgICBwcmVsb2FkZWRTdGF0ZSA9IHVuZGVmaW5lZDtcbiAgfVxuXG4gIGlmICh0eXBlb2Yg
ZW5oYW5jZXIgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgaWYgKHR5cGVvZiBlbmhhbmNlciAhPT0g
J2Z1bmN0aW9uJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdFeHBlY3RlZCB0aGUgZW5oYW5j
ZXIgdG8gYmUgYSBmdW5jdGlvbi4nKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZW5oYW5jZXIoY3Jl
YXRlU3RvcmUpKHJlZHVjZXIsIHByZWxvYWRlZFN0YXRlKTtcbiAgfVxuXG4gIGlmICh0eXBlb2Yg
cmVkdWNlciAhPT0gJ2Z1bmN0aW9uJykge1xuICAgIHRocm93IG5ldyBFcnJvcignRXhwZWN0ZWQg
dGhlIHJlZHVjZXIgdG8gYmUgYSBmdW5jdGlvbi4nKTtcbiAgfVxuXG4gIHZhciBjdXJyZW50UmVk
dWNlciA9IHJlZHVjZXI7XG4gIHZhciBjdXJyZW50U3RhdGUgPSBwcmVsb2FkZWRTdGF0ZTtcbiAg
dmFyIGN1cnJlbnRMaXN0ZW5lcnMgPSBbXTtcbiAgdmFyIG5leHRMaXN0ZW5lcnMgPSBjdXJyZW50
TGlzdGVuZXJzO1xuICB2YXIgaXNEaXNwYXRjaGluZyA9IGZhbHNlO1xuXG4gIGZ1bmN0aW9uIGVu
c3VyZUNhbk11dGF0ZU5leHRMaXN0ZW5lcnMoKSB7XG4gICAgaWYgKG5leHRMaXN0ZW5lcnMgPT09
IGN1cnJlbnRMaXN0ZW5lcnMpIHtcbiAgICAgIG5leHRMaXN0ZW5lcnMgPSBjdXJyZW50TGlzdGVu
ZXJzLnNsaWNlKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJlYWRzIHRoZSBzdGF0ZSB0
cmVlIG1hbmFnZWQgYnkgdGhlIHN0b3JlLlxuICAgKlxuICAgKiBAcmV0dXJucyB7YW55fSBUaGUg
Y3VycmVudCBzdGF0ZSB0cmVlIG9mIHlvdXIgYXBwbGljYXRpb24uXG4gICAqL1xuICBmdW5jdGlv
biBnZXRTdGF0ZSgpIHtcbiAgICByZXR1cm4gY3VycmVudFN0YXRlO1xuICB9XG5cbiAgLyoqXG4g
ICAqIEFkZHMgYSBjaGFuZ2UgbGlzdGVuZXIuIEl0IHdpbGwgYmUgY2FsbGVkIGFueSB0aW1lIGFu
IGFjdGlvbiBpcyBkaXNwYXRjaGVkLFxuICAgKiBhbmQgc29tZSBwYXJ0IG9mIHRoZSBzdGF0ZSB0
cmVlIG1heSBwb3RlbnRpYWxseSBoYXZlIGNoYW5nZWQuIFlvdSBtYXkgdGhlblxuICAgKiBjYWxs
IGBnZXRTdGF0ZSgpYCB0byByZWFkIHRoZSBjdXJyZW50IHN0YXRlIHRyZWUgaW5zaWRlIHRoZSBj
YWxsYmFjay5cbiAgICpcbiAgICogWW91IG1heSBjYWxsIGBkaXNwYXRjaCgpYCBmcm9tIGEgY2hh
bmdlIGxpc3RlbmVyLCB3aXRoIHRoZSBmb2xsb3dpbmdcbiAgICogY2F2ZWF0czpcbiAgICpcbiAg
ICogMS4gVGhlIHN1YnNjcmlwdGlvbnMgYXJlIHNuYXBzaG90dGVkIGp1c3QgYmVmb3JlIGV2ZXJ5
IGBkaXNwYXRjaCgpYCBjYWxsLlxuICAgKiBJZiB5b3Ugc3Vic2NyaWJlIG9yIHVuc3Vic2NyaWJl
IHdoaWxlIHRoZSBsaXN0ZW5lcnMgYXJlIGJlaW5nIGludm9rZWQsIHRoaXNcbiAgICogd2lsbCBu
b3QgaGF2ZSBhbnkgZWZmZWN0IG9uIHRoZSBgZGlzcGF0Y2goKWAgdGhhdCBpcyBjdXJyZW50bHkg
aW4gcHJvZ3Jlc3MuXG4gICAqIEhvd2V2ZXIsIHRoZSBuZXh0IGBkaXNwYXRjaCgpYCBjYWxsLCB3
aGV0aGVyIG5lc3RlZCBvciBub3QsIHdpbGwgdXNlIGEgbW9yZVxuICAgKiByZWNlbnQgc25hcHNo
b3Qgb2YgdGhlIHN1YnNjcmlwdGlvbiBsaXN0LlxuICAgKlxuICAgKiAyLiBUaGUgbGlzdGVuZXIg
c2hvdWxkIG5vdCBleHBlY3QgdG8gc2VlIGFsbCBzdGF0ZSBjaGFuZ2VzLCBhcyB0aGUgc3RhdGVc
biAgICogbWlnaHQgaGF2ZSBiZWVuIHVwZGF0ZWQgbXVsdGlwbGUgdGltZXMgZHVyaW5nIGEgbmVz
dGVkIGBkaXNwYXRjaCgpYCBiZWZvcmVcbiAgICogdGhlIGxpc3RlbmVyIGlzIGNhbGxlZC4gSXQg
aXMsIGhvd2V2ZXIsIGd1YXJhbnRlZWQgdGhhdCBhbGwgc3Vic2NyaWJlcnNcbiAgICogcmVnaXN0
ZXJlZCBiZWZvcmUgdGhlIGBkaXNwYXRjaCgpYCBzdGFydGVkIHdpbGwgYmUgY2FsbGVkIHdpdGgg
dGhlIGxhdGVzdFxuICAgKiBzdGF0ZSBieSB0aGUgdGltZSBpdCBleGl0cy5cbiAgICpcbiAgICog
QHBhcmFtIHtGdW5jdGlvbn0gbGlzdGVuZXIgQSBjYWxsYmFjayB0byBiZSBpbnZva2VkIG9uIGV2
ZXJ5IGRpc3BhdGNoLlxuICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IEEgZnVuY3Rpb24gdG8gcmVt
b3ZlIHRoaXMgY2hhbmdlIGxpc3RlbmVyLlxuICAgKi9cbiAgZnVuY3Rpb24gc3Vic2NyaWJlKGxp
c3RlbmVyKSB7XG4gICAgaWYgKHR5cGVvZiBsaXN0ZW5lciAhPT0gJ2Z1bmN0aW9uJykge1xuICAg
ICAgdGhyb3cgbmV3IEVycm9yKCdFeHBlY3RlZCBsaXN0ZW5lciB0byBiZSBhIGZ1bmN0aW9uLicp
O1xuICAgIH1cblxuICAgIHZhciBpc1N1YnNjcmliZWQgPSB0cnVlO1xuXG4gICAgZW5zdXJlQ2Fu
TXV0YXRlTmV4dExpc3RlbmVycygpO1xuICAgIG5leHRMaXN0ZW5lcnMucHVzaChsaXN0ZW5lcik7
XG5cbiAgICByZXR1cm4gZnVuY3Rpb24gdW5zdWJzY3JpYmUoKSB7XG4gICAgICBpZiAoIWlzU3Vi
c2NyaWJlZCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlzU3Vic2NyaWJl
ZCA9IGZhbHNlO1xuXG4gICAgICBlbnN1cmVDYW5NdXRhdGVOZXh0TGlzdGVuZXJzKCk7XG4gICAg
ICB2YXIgaW5kZXggPSBuZXh0TGlzdGVuZXJzLmluZGV4T2YobGlzdGVuZXIpO1xuICAgICAgbmV4
dExpc3RlbmVycy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIH07XG4gIH1cblxuICAvKipcbiAgICog
RGlzcGF0Y2hlcyBhbiBhY3Rpb24uIEl0IGlzIHRoZSBvbmx5IHdheSB0byB0cmlnZ2VyIGEgc3Rh
dGUgY2hhbmdlLlxuICAgKlxuICAgKiBUaGUgYHJlZHVjZXJgIGZ1bmN0aW9uLCB1c2VkIHRvIGNy
ZWF0ZSB0aGUgc3RvcmUsIHdpbGwgYmUgY2FsbGVkIHdpdGggdGhlXG4gICAqIGN1cnJlbnQgc3Rh
dGUgdHJlZSBhbmQgdGhlIGdpdmVuIGBhY3Rpb25gLiBJdHMgcmV0dXJuIHZhbHVlIHdpbGxcbiAg
ICogYmUgY29uc2lkZXJlZCB0aGUgKipuZXh0Kiogc3RhdGUgb2YgdGhlIHRyZWUsIGFuZCB0aGUg
Y2hhbmdlIGxpc3RlbmVyc1xuICAgKiB3aWxsIGJlIG5vdGlmaWVkLlxuICAgKlxuICAgKiBUaGUg
YmFzZSBpbXBsZW1lbnRhdGlvbiBvbmx5IHN1cHBvcnRzIHBsYWluIG9iamVjdCBhY3Rpb25zLiBJ
ZiB5b3Ugd2FudCB0b1xuICAgKiBkaXNwYXRjaCBhIFByb21pc2UsIGFuIE9ic2VydmFibGUsIGEg
dGh1bmssIG9yIHNvbWV0aGluZyBlbHNlLCB5b3UgbmVlZCB0b1xuICAgKiB3cmFwIHlvdXIgc3Rv
cmUgY3JlYXRpbmcgZnVuY3Rpb24gaW50byB0aGUgY29ycmVzcG9uZGluZyBtaWRkbGV3YXJlLiBG
b3JcbiAgICogZXhhbXBsZSwgc2VlIHRoZSBkb2N1bWVudGF0aW9uIGZvciB0aGUgYHJlZHV4LXRo
dW5rYCBwYWNrYWdlLiBFdmVuIHRoZVxuICAgKiBtaWRkbGV3YXJlIHdpbGwgZXZlbnR1YWxseSBk
aXNwYXRjaCBwbGFpbiBvYmplY3QgYWN0aW9ucyB1c2luZyB0aGlzIG1ldGhvZC5cbiAgICpcbiAg
ICogQHBhcmFtIHtPYmplY3R9IGFjdGlvbiBBIHBsYWluIG9iamVjdCByZXByZXNlbnRpbmcg4oCc
d2hhdCBjaGFuZ2Vk4oCdLiBJdCBpc1xuICAgKiBhIGdvb2QgaWRlYSB0byBrZWVwIGFjdGlvbnMg
c2VyaWFsaXphYmxlIHNvIHlvdSBjYW4gcmVjb3JkIGFuZCByZXBsYXkgdXNlclxuICAgKiBzZXNz
aW9ucywgb3IgdXNlIHRoZSB0aW1lIHRyYXZlbGxpbmcgYHJlZHV4LWRldnRvb2xzYC4gQW4gYWN0
aW9uIG11c3QgaGF2ZVxuICAgKiBhIGB0eXBlYCBwcm9wZXJ0eSB3aGljaCBtYXkgbm90IGJlIGB1
bmRlZmluZWRgLiBJdCBpcyBhIGdvb2QgaWRlYSB0byB1c2VcbiAgICogc3RyaW5nIGNvbnN0YW50
cyBmb3IgYWN0aW9uIHR5cGVzLlxuICAgKlxuICAgKiBAcmV0dXJucyB7T2JqZWN0fSBGb3IgY29u
dmVuaWVuY2UsIHRoZSBzYW1lIGFjdGlvbiBvYmplY3QgeW91IGRpc3BhdGNoZWQuXG4gICAqXG4g
ICAqIE5vdGUgdGhhdCwgaWYgeW91IHVzZSBhIGN1c3RvbSBtaWRkbGV3YXJlLCBpdCBtYXkgd3Jh
cCBgZGlzcGF0Y2goKWAgdG9cbiAgICogcmV0dXJuIHNvbWV0aGluZyBlbHNlIChmb3IgZXhhbXBs
ZSwgYSBQcm9taXNlIHlvdSBjYW4gYXdhaXQpLlxuICAgKi9cbiAgZnVuY3Rpb24gZGlzcGF0Y2go
YWN0aW9uKSB7XG4gICAgaWYgKCEoMCwgX2lzUGxhaW5PYmplY3QyWydkZWZhdWx0J10pKGFjdGlv
bikpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQWN0aW9ucyBtdXN0IGJlIHBsYWluIG9iamVj
dHMuICcgKyAnVXNlIGN1c3RvbSBtaWRkbGV3YXJlIGZvciBhc3luYyBhY3Rpb25zLicpO1xuICAg
IH1cblxuICAgIGlmICh0eXBlb2YgYWN0aW9uLnR5cGUgPT09ICd1bmRlZmluZWQnKSB7XG4gICAg
ICB0aHJvdyBuZXcgRXJyb3IoJ0FjdGlvbnMgbWF5IG5vdCBoYXZlIGFuIHVuZGVmaW5lZCBcInR5
cGVcIiBwcm9wZXJ0eS4gJyArICdIYXZlIHlvdSBtaXNzcGVsbGVkIGEgY29uc3RhbnQ/Jyk7XG4g
ICAgfVxuXG4gICAgaWYgKGlzRGlzcGF0Y2hpbmcpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcign
UmVkdWNlcnMgbWF5IG5vdCBkaXNwYXRjaCBhY3Rpb25zLicpO1xuICAgIH1cblxuICAgIHRyeSB7
XG4gICAgICBpc0Rpc3BhdGNoaW5nID0gdHJ1ZTtcbiAgICAgIGN1cnJlbnRTdGF0ZSA9IGN1cnJl
bnRSZWR1Y2VyKGN1cnJlbnRTdGF0ZSwgYWN0aW9uKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAg
aXNEaXNwYXRjaGluZyA9IGZhbHNlO1xuICAgIH1cblxuICAgIHZhciBsaXN0ZW5lcnMgPSBjdXJy
ZW50TGlzdGVuZXJzID0gbmV4dExpc3RlbmVycztcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxp
c3RlbmVycy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGxpc3RlbmVyID0gbGlzdGVuZXJzW2ld
O1xuICAgICAgbGlzdGVuZXIoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gYWN0aW9uO1xuICB9XG5c
biAgLyoqXG4gICAqIFJlcGxhY2VzIHRoZSByZWR1Y2VyIGN1cnJlbnRseSB1c2VkIGJ5IHRoZSBz
dG9yZSB0byBjYWxjdWxhdGUgdGhlIHN0YXRlLlxuICAgKlxuICAgKiBZb3UgbWlnaHQgbmVlZCB0
aGlzIGlmIHlvdXIgYXBwIGltcGxlbWVudHMgY29kZSBzcGxpdHRpbmcgYW5kIHlvdSB3YW50IHRv
XG4gICAqIGxvYWQgc29tZSBvZiB0aGUgcmVkdWNlcnMgZHluYW1pY2FsbHkuIFlvdSBtaWdodCBh
bHNvIG5lZWQgdGhpcyBpZiB5b3VcbiAgICogaW1wbGVtZW50IGEgaG90IHJlbG9hZGluZyBtZWNo
YW5pc20gZm9yIFJlZHV4LlxuICAgKlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBuZXh0UmVkdWNl
ciBUaGUgcmVkdWNlciBmb3IgdGhlIHN0b3JlIHRvIHVzZSBpbnN0ZWFkLlxuICAgKiBAcmV0dXJu
cyB7dm9pZH1cbiAgICovXG4gIGZ1bmN0aW9uIHJlcGxhY2VSZWR1Y2VyKG5leHRSZWR1Y2VyKSB7
XG4gICAgaWYgKHR5cGVvZiBuZXh0UmVkdWNlciAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgdGhy
b3cgbmV3IEVycm9yKCdFeHBlY3RlZCB0aGUgbmV4dFJlZHVjZXIgdG8gYmUgYSBmdW5jdGlvbi4n
KTtcbiAgICB9XG5cbiAgICBjdXJyZW50UmVkdWNlciA9IG5leHRSZWR1Y2VyO1xuICAgIGRpc3Bh
dGNoKHsgdHlwZTogQWN0aW9uVHlwZXMuSU5JVCB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbnRl
cm9wZXJhYmlsaXR5IHBvaW50IGZvciBvYnNlcnZhYmxlL3JlYWN0aXZlIGxpYnJhcmllcy5cbiAg
ICogQHJldHVybnMge29ic2VydmFibGV9IEEgbWluaW1hbCBvYnNlcnZhYmxlIG9mIHN0YXRlIGNo
YW5nZXMuXG4gICAqIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgdGhlIG9ic2VydmFibGUgcHJv
cG9zYWw6XG4gICAqIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLW9ic2VydmFibGVc
biAgICovXG4gIGZ1bmN0aW9uIG9ic2VydmFibGUoKSB7XG4gICAgdmFyIF9yZWY7XG5cbiAgICB2
YXIgb3V0ZXJTdWJzY3JpYmUgPSBzdWJzY3JpYmU7XG4gICAgcmV0dXJuIF9yZWYgPSB7XG4gICAg
ICAvKipcbiAgICAgICAqIFRoZSBtaW5pbWFsIG9ic2VydmFibGUgc3Vic2NyaXB0aW9uIG1ldGhv
ZC5cbiAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYnNlcnZlciBBbnkgb2JqZWN0IHRoYXQgY2Fu
IGJlIHVzZWQgYXMgYW4gb2JzZXJ2ZXIuXG4gICAgICAgKiBUaGUgb2JzZXJ2ZXIgb2JqZWN0IHNo
b3VsZCBoYXZlIGEgYG5leHRgIG1ldGhvZC5cbiAgICAgICAqIEByZXR1cm5zIHtzdWJzY3JpcHRp
b259IEFuIG9iamVjdCB3aXRoIGFuIGB1bnN1YnNjcmliZWAgbWV0aG9kIHRoYXQgY2FuXG4gICAg
ICAgKiBiZSB1c2VkIHRvIHVuc3Vic2NyaWJlIHRoZSBvYnNlcnZhYmxlIGZyb20gdGhlIHN0b3Jl
LCBhbmQgcHJldmVudCBmdXJ0aGVyXG4gICAgICAgKiBlbWlzc2lvbiBvZiB2YWx1ZXMgZnJvbSB0
aGUgb2JzZXJ2YWJsZS5cbiAgICAgICAqL1xuICAgICAgc3Vic2NyaWJlOiBmdW5jdGlvbiBzdWJz
Y3JpYmUob2JzZXJ2ZXIpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBvYnNlcnZlciAhPT0gJ29iamVj
dCcpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdFeHBlY3RlZCB0aGUgb2JzZXJ2
ZXIgdG8gYmUgYW4gb2JqZWN0LicpO1xuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gb2Jz
ZXJ2ZVN0YXRlKCkge1xuICAgICAgICAgIGlmIChvYnNlcnZlci5uZXh0KSB7XG4gICAgICAgICAg
ICBvYnNlcnZlci5uZXh0KGdldFN0YXRlKCkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4g
ICAgICAgIG9ic2VydmVTdGF0ZSgpO1xuICAgICAgICB2YXIgdW5zdWJzY3JpYmUgPSBvdXRlclN1
YnNjcmliZShvYnNlcnZlU3RhdGUpO1xuICAgICAgICByZXR1cm4geyB1bnN1YnNjcmliZTogdW5z
dWJzY3JpYmUgfTtcbiAgICAgIH1cbiAgICB9LCBfcmVmW19zeW1ib2xPYnNlcnZhYmxlMlsnZGVm
YXVsdCddXSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH0sIF9yZWY7
XG4gIH1cblxuICAvLyBXaGVuIGEgc3RvcmUgaXMgY3JlYXRlZCwgYW4gXCJJTklUXCIgYWN0aW9u
IGlzIGRpc3BhdGNoZWQgc28gdGhhdCBldmVyeVxuICAvLyByZWR1Y2VyIHJldHVybnMgdGhlaXIg
aW5pdGlhbCBzdGF0ZS4gVGhpcyBlZmZlY3RpdmVseSBwb3B1bGF0ZXNcbiAgLy8gdGhlIGluaXRp
YWwgc3RhdGUgdHJlZS5cbiAgZGlzcGF0Y2goeyB0eXBlOiBBY3Rpb25UeXBlcy5JTklUIH0pO1xu
XG4gIHJldHVybiBfcmVmMiA9IHtcbiAgICBkaXNwYXRjaDogZGlzcGF0Y2gsXG4gICAgc3Vic2Ny
aWJlOiBzdWJzY3JpYmUsXG4gICAgZ2V0U3RhdGU6IGdldFN0YXRlLFxuICAgIHJlcGxhY2VSZWR1
Y2VyOiByZXBsYWNlUmVkdWNlclxuICB9LCBfcmVmMltfc3ltYm9sT2JzZXJ2YWJsZTJbJ2RlZmF1
bHQnXV0gPSBvYnNlcnZhYmxlLCBfcmVmMjtcbn1cblxuXG4vKioqKioqKioqKioqKioqKipcbiAq
KiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWR1eC9saWIvY3JlYXRlU3RvcmUuanNcbiAqKiBt
b2R1bGUgaWQgPSA5NVxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiJ3VzZSBzdHJpY3Qn
O1xuXG5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuZXhwb3J0c1snZGVmYXVsdCddID0gd2Fy
bmluZztcbi8qKlxuICogUHJpbnRzIGEgd2FybmluZyBpbiB0aGUgY29uc29sZSBpZiBpdCBleGlz
dHMuXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IG1lc3NhZ2UgVGhlIHdhcm5pbmcgbWVzc2FnZS5c
biAqIEByZXR1cm5zIHt2b2lkfVxuICovXG5mdW5jdGlvbiB3YXJuaW5nKG1lc3NhZ2UpIHtcbiAg
LyogZXNsaW50LWRpc2FibGUgbm8tY29uc29sZSAqL1xuICBpZiAodHlwZW9mIGNvbnNvbGUgIT09
ICd1bmRlZmluZWQnICYmIHR5cGVvZiBjb25zb2xlLmVycm9yID09PSAnZnVuY3Rpb24nKSB7XG4g
ICAgY29uc29sZS5lcnJvcihtZXNzYWdlKTtcbiAgfVxuICAvKiBlc2xpbnQtZW5hYmxlIG5vLWNv
bnNvbGUgKi9cbiAgdHJ5IHtcbiAgICAvLyBUaGlzIGVycm9yIHdhcyB0aHJvd24gYXMgYSBjb252
ZW5pZW5jZSBzbyB0aGF0IGlmIHlvdSBlbmFibGVcbiAgICAvLyBcImJyZWFrIG9uIGFsbCBleGNl
cHRpb25zXCIgaW4geW91ciBjb25zb2xlLFxuICAgIC8vIGl0IHdvdWxkIHBhdXNlIHRoZSBleGVj
dXRpb24gYXQgdGhpcyBsaW5lLlxuICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKTtcbiAgICAv
KiBlc2xpbnQtZGlzYWJsZSBuby1lbXB0eSAqL1xuICB9IGNhdGNoIChlKSB7fVxuICAvKiBlc2xp
bnQtZW5hYmxlIG5vLWVtcHR5ICovXG59XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VC
UEFDSyBGT09URVJcbiAqKiAuL34vcmVkdXgvbGliL3V0aWxzL3dhcm5pbmcuanNcbiAqKiBtb2R1
bGUgaWQgPSA5NlxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmln
aHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5c
biAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUg
bGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rv
cnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50
IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJl
Y3RvcnkuXG4gKlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIF9hc3NpZ24gPSByZXF1aXJl
KCdvYmplY3QtYXNzaWduJyk7XG5cbnZhciBlbXB0eU9iamVjdCA9IHJlcXVpcmUoJ2ZianMvbGli
L2VtcHR5T2JqZWN0Jyk7XG52YXIgX2ludmFyaWFudCA9IHJlcXVpcmUoJ2ZianMvbGliL2ludmFy
aWFudCcpO1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xu
ICB2YXIgd2FybmluZyA9IHJlcXVpcmUoJ2ZianMvbGliL3dhcm5pbmcnKTtcbn1cblxudmFyIE1J
WElOU19LRVkgPSAnbWl4aW5zJztcblxuLy8gSGVscGVyIGZ1bmN0aW9uIHRvIGFsbG93IHRoZSBj
cmVhdGlvbiBvZiBhbm9ueW1vdXMgZnVuY3Rpb25zIHdoaWNoIGRvIG5vdFxuLy8gaGF2ZSAubmFt
ZSBzZXQgdG8gdGhlIG5hbWUgb2YgdGhlIHZhcmlhYmxlIGJlaW5nIGFzc2lnbmVkIHRvLlxuZnVu
Y3Rpb24gaWRlbnRpdHkoZm4pIHtcbiAgcmV0dXJuIGZuO1xufVxuXG52YXIgUmVhY3RQcm9wVHlw
ZUxvY2F0aW9uTmFtZXM7XG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9u
Jykge1xuICBSZWFjdFByb3BUeXBlTG9jYXRpb25OYW1lcyA9IHtcbiAgICBwcm9wOiAncHJvcCcs
XG4gICAgY29udGV4dDogJ2NvbnRleHQnLFxuICAgIGNoaWxkQ29udGV4dDogJ2NoaWxkIGNvbnRl
eHQnXG4gIH07XG59IGVsc2Uge1xuICBSZWFjdFByb3BUeXBlTG9jYXRpb25OYW1lcyA9IHt9O1xu
fVxuXG5mdW5jdGlvbiBmYWN0b3J5KFJlYWN0Q29tcG9uZW50LCBpc1ZhbGlkRWxlbWVudCwgUmVh
Y3ROb29wVXBkYXRlUXVldWUpIHtcbiAgLyoqXG4gICAqIFBvbGljaWVzIHRoYXQgZGVzY3JpYmUg
bWV0aG9kcyBpbiBgUmVhY3RDbGFzc0ludGVyZmFjZWAuXG4gICAqL1xuXG4gIHZhciBpbmplY3Rl
ZE1peGlucyA9IFtdO1xuXG4gIC8qKlxuICAgKiBDb21wb3NpdGUgY29tcG9uZW50cyBhcmUgaGln
aGVyLWxldmVsIGNvbXBvbmVudHMgdGhhdCBjb21wb3NlIG90aGVyIGNvbXBvc2l0ZVxuICAgKiBv
ciBob3N0IGNvbXBvbmVudHMuXG4gICAqXG4gICAqIFRvIGNyZWF0ZSBhIG5ldyB0eXBlIG9mIGBS
ZWFjdENsYXNzYCwgcGFzcyBhIHNwZWNpZmljYXRpb24gb2ZcbiAgICogeW91ciBuZXcgY2xhc3Mg
dG8gYFJlYWN0LmNyZWF0ZUNsYXNzYC4gVGhlIG9ubHkgcmVxdWlyZW1lbnQgb2YgeW91ciBjbGFz
c1xuICAgKiBzcGVjaWZpY2F0aW9uIGlzIHRoYXQgeW91IGltcGxlbWVudCBhIGByZW5kZXJgIG1l
dGhvZC5cbiAgICpcbiAgICogICB2YXIgTXlDb21wb25lbnQgPSBSZWFjdC5jcmVhdGVDbGFzcyh7
XG4gICAqICAgICByZW5kZXI6IGZ1bmN0aW9uKCkge1xuICAgKiAgICAgICByZXR1cm4gPGRpdj5I
ZWxsbyBXb3JsZDwvZGl2PjtcbiAgICogICAgIH1cbiAgICogICB9KTtcbiAgICpcbiAgICogVGhl
IGNsYXNzIHNwZWNpZmljYXRpb24gc3VwcG9ydHMgYSBzcGVjaWZpYyBwcm90b2NvbCBvZiBtZXRo
b2RzIHRoYXQgaGF2ZVxuICAgKiBzcGVjaWFsIG1lYW5pbmcgKGUuZy4gYHJlbmRlcmApLiBTZWUg
YFJlYWN0Q2xhc3NJbnRlcmZhY2VgIGZvclxuICAgKiBtb3JlIHRoZSBjb21wcmVoZW5zaXZlIHBy
b3RvY29sLiBBbnkgb3RoZXIgcHJvcGVydGllcyBhbmQgbWV0aG9kcyBpbiB0aGVcbiAgICogY2xh
c3Mgc3BlY2lmaWNhdGlvbiB3aWxsIGJlIGF2YWlsYWJsZSBvbiB0aGUgcHJvdG90eXBlLlxuICAg
KlxuICAgKiBAaW50ZXJmYWNlIFJlYWN0Q2xhc3NJbnRlcmZhY2VcbiAgICogQGludGVybmFsXG4g
ICAqL1xuICB2YXIgUmVhY3RDbGFzc0ludGVyZmFjZSA9IHtcbiAgICAvKipcbiAgICAgKiBBbiBh
cnJheSBvZiBNaXhpbiBvYmplY3RzIHRvIGluY2x1ZGUgd2hlbiBkZWZpbmluZyB5b3VyIGNvbXBv
bmVudC5cbiAgICAgKlxuICAgICAqIEB0eXBlIHthcnJheX1cbiAgICAgKiBAb3B0aW9uYWxcbiAg
ICAgKi9cbiAgICBtaXhpbnM6ICdERUZJTkVfTUFOWScsXG5cbiAgICAvKipcbiAgICAgKiBBbiBv
YmplY3QgY29udGFpbmluZyBwcm9wZXJ0aWVzIGFuZCBtZXRob2RzIHRoYXQgc2hvdWxkIGJlIGRl
ZmluZWQgb25cbiAgICAgKiB0aGUgY29tcG9uZW50J3MgY29uc3RydWN0b3IgaW5zdGVhZCBvZiBp
dHMgcHJvdG90eXBlIChzdGF0aWMgbWV0aG9kcykuXG4gICAgICpcbiAgICAgKiBAdHlwZSB7b2Jq
ZWN0fVxuICAgICAqIEBvcHRpb25hbFxuICAgICAqL1xuICAgIHN0YXRpY3M6ICdERUZJTkVfTUFO
WScsXG5cbiAgICAvKipcbiAgICAgKiBEZWZpbml0aW9uIG9mIHByb3AgdHlwZXMgZm9yIHRoaXMg
Y29tcG9uZW50LlxuICAgICAqXG4gICAgICogQHR5cGUge29iamVjdH1cbiAgICAgKiBAb3B0aW9u
YWxcbiAgICAgKi9cbiAgICBwcm9wVHlwZXM6ICdERUZJTkVfTUFOWScsXG5cbiAgICAvKipcbiAg
ICAgKiBEZWZpbml0aW9uIG9mIGNvbnRleHQgdHlwZXMgZm9yIHRoaXMgY29tcG9uZW50LlxuICAg
ICAqXG4gICAgICogQHR5cGUge29iamVjdH1cbiAgICAgKiBAb3B0aW9uYWxcbiAgICAgKi9cbiAg
ICBjb250ZXh0VHlwZXM6ICdERUZJTkVfTUFOWScsXG5cbiAgICAvKipcbiAgICAgKiBEZWZpbml0
aW9uIG9mIGNvbnRleHQgdHlwZXMgdGhpcyBjb21wb25lbnQgc2V0cyBmb3IgaXRzIGNoaWxkcmVu
LlxuICAgICAqXG4gICAgICogQHR5cGUge29iamVjdH1cbiAgICAgKiBAb3B0aW9uYWxcbiAgICAg
Ki9cbiAgICBjaGlsZENvbnRleHRUeXBlczogJ0RFRklORV9NQU5ZJyxcblxuICAgIC8vID09PT0g
RGVmaW5pdGlvbiBtZXRob2RzID09PT1cblxuICAgIC8qKlxuICAgICAqIEludm9rZWQgd2hlbiB0
aGUgY29tcG9uZW50IGlzIG1vdW50ZWQuIFZhbHVlcyBpbiB0aGUgbWFwcGluZyB3aWxsIGJlIHNl
dCBvblxuICAgICAqIGB0aGlzLnByb3BzYCBpZiB0aGF0IHByb3AgaXMgbm90IHNwZWNpZmllZCAo
aS5lLiB1c2luZyBhbiBgaW5gIGNoZWNrKS5cbiAgICAgKlxuICAgICAqIFRoaXMgbWV0aG9kIGlz
IGludm9rZWQgYmVmb3JlIGBnZXRJbml0aWFsU3RhdGVgIGFuZCB0aGVyZWZvcmUgY2Fubm90IHJl
bHlcbiAgICAgKiBvbiBgdGhpcy5zdGF0ZWAgb3IgdXNlIGB0aGlzLnNldFN0YXRlYC5cbiAgICAg
KlxuICAgICAqIEByZXR1cm4ge29iamVjdH1cbiAgICAgKiBAb3B0aW9uYWxcbiAgICAgKi9cbiAg
ICBnZXREZWZhdWx0UHJvcHM6ICdERUZJTkVfTUFOWV9NRVJHRUQnLFxuXG4gICAgLyoqXG4gICAg
ICogSW52b2tlZCBvbmNlIGJlZm9yZSB0aGUgY29tcG9uZW50IGlzIG1vdW50ZWQuIFRoZSByZXR1
cm4gdmFsdWUgd2lsbCBiZSB1c2VkXG4gICAgICogYXMgdGhlIGluaXRpYWwgdmFsdWUgb2YgYHRo
aXMuc3RhdGVgLlxuICAgICAqXG4gICAgICogICBnZXRJbml0aWFsU3RhdGU6IGZ1bmN0aW9uKCkg
e1xuICAgICAqICAgICByZXR1cm4ge1xuICAgICAqICAgICAgIGlzT246IGZhbHNlLFxuICAgICAq
ICAgICAgIGZvb0JhejogbmV3IEJhekZvbygpXG4gICAgICogICAgIH1cbiAgICAgKiAgIH1cbiAg
ICAgKlxuICAgICAqIEByZXR1cm4ge29iamVjdH1cbiAgICAgKiBAb3B0aW9uYWxcbiAgICAgKi9c
biAgICBnZXRJbml0aWFsU3RhdGU6ICdERUZJTkVfTUFOWV9NRVJHRUQnLFxuXG4gICAgLyoqXG4g
ICAgICogQHJldHVybiB7b2JqZWN0fVxuICAgICAqIEBvcHRpb25hbFxuICAgICAqL1xuICAgIGdl
dENoaWxkQ29udGV4dDogJ0RFRklORV9NQU5ZX01FUkdFRCcsXG5cbiAgICAvKipcbiAgICAgKiBV
c2VzIHByb3BzIGZyb20gYHRoaXMucHJvcHNgIGFuZCBzdGF0ZSBmcm9tIGB0aGlzLnN0YXRlYCB0
byByZW5kZXIgdGhlXG4gICAgICogc3RydWN0dXJlIG9mIHRoZSBjb21wb25lbnQuXG4gICAgICpc
biAgICAgKiBObyBndWFyYW50ZWVzIGFyZSBtYWRlIGFib3V0IHdoZW4gb3IgaG93IG9mdGVuIHRo
aXMgbWV0aG9kIGlzIGludm9rZWQsIHNvXG4gICAgICogaXQgbXVzdCBub3QgaGF2ZSBzaWRlIGVm
ZmVjdHMuXG4gICAgICpcbiAgICAgKiAgIHJlbmRlcjogZnVuY3Rpb24oKSB7XG4gICAgICogICAg
IHZhciBuYW1lID0gdGhpcy5wcm9wcy5uYW1lO1xuICAgICAqICAgICByZXR1cm4gPGRpdj5IZWxs
bywge25hbWV9ITwvZGl2PjtcbiAgICAgKiAgIH1cbiAgICAgKlxuICAgICAqIEByZXR1cm4ge1Jl
YWN0Q29tcG9uZW50fVxuICAgICAqIEByZXF1aXJlZFxuICAgICAqL1xuICAgIHJlbmRlcjogJ0RF
RklORV9PTkNFJyxcblxuICAgIC8vID09PT0gRGVsZWdhdGUgbWV0aG9kcyA9PT09XG5cbiAgICAv
KipcbiAgICAgKiBJbnZva2VkIHdoZW4gdGhlIGNvbXBvbmVudCBpcyBpbml0aWFsbHkgY3JlYXRl
ZCBhbmQgYWJvdXQgdG8gYmUgbW91bnRlZC5cbiAgICAgKiBUaGlzIG1heSBoYXZlIHNpZGUgZWZm
ZWN0cywgYnV0IGFueSBleHRlcm5hbCBzdWJzY3JpcHRpb25zIG9yIGRhdGEgY3JlYXRlZFxuICAg
ICAqIGJ5IHRoaXMgbWV0aG9kIG11c3QgYmUgY2xlYW5lZCB1cCBpbiBgY29tcG9uZW50V2lsbFVu
bW91bnRgLlxuICAgICAqXG4gICAgICogQG9wdGlvbmFsXG4gICAgICovXG4gICAgY29tcG9uZW50
V2lsbE1vdW50OiAnREVGSU5FX01BTlknLFxuXG4gICAgLyoqXG4gICAgICogSW52b2tlZCB3aGVu
IHRoZSBjb21wb25lbnQgaGFzIGJlZW4gbW91bnRlZCBhbmQgaGFzIGEgRE9NIHJlcHJlc2VudGF0
aW9uLlxuICAgICAqIEhvd2V2ZXIsIHRoZXJlIGlzIG5vIGd1YXJhbnRlZSB0aGF0IHRoZSBET00g
bm9kZSBpcyBpbiB0aGUgZG9jdW1lbnQuXG4gICAgICpcbiAgICAgKiBVc2UgdGhpcyBhcyBhbiBv
cHBvcnR1bml0eSB0byBvcGVyYXRlIG9uIHRoZSBET00gd2hlbiB0aGUgY29tcG9uZW50IGhhc1xu
ICAgICAqIGJlZW4gbW91bnRlZCAoaW5pdGlhbGl6ZWQgYW5kIHJlbmRlcmVkKSBmb3IgdGhlIGZp
cnN0IHRpbWUuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge0RPTUVsZW1lbnR9IHJvb3ROb2RlIERP
TSBlbGVtZW50IHJlcHJlc2VudGluZyB0aGUgY29tcG9uZW50LlxuICAgICAqIEBvcHRpb25hbFxu
ICAgICAqL1xuICAgIGNvbXBvbmVudERpZE1vdW50OiAnREVGSU5FX01BTlknLFxuXG4gICAgLyoq
XG4gICAgICogSW52b2tlZCBiZWZvcmUgdGhlIGNvbXBvbmVudCByZWNlaXZlcyBuZXcgcHJvcHMu
XG4gICAgICpcbiAgICAgKiBVc2UgdGhpcyBhcyBhbiBvcHBvcnR1bml0eSB0byByZWFjdCB0byBh
IHByb3AgdHJhbnNpdGlvbiBieSB1cGRhdGluZyB0aGVcbiAgICAgKiBzdGF0ZSB1c2luZyBgdGhp
cy5zZXRTdGF0ZWAuIEN1cnJlbnQgcHJvcHMgYXJlIGFjY2Vzc2VkIHZpYSBgdGhpcy5wcm9wc2Au
XG4gICAgICpcbiAgICAgKiAgIGNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHM6IGZ1bmN0aW9uKG5l
eHRQcm9wcywgbmV4dENvbnRleHQpIHtcbiAgICAgKiAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAg
ICogICAgICAgbGlrZXNJbmNyZWFzaW5nOiBuZXh0UHJvcHMubGlrZUNvdW50ID4gdGhpcy5wcm9w
cy5saWtlQ291bnRcbiAgICAgKiAgICAgfSk7XG4gICAgICogICB9XG4gICAgICpcbiAgICAgKiBO
T1RFOiBUaGVyZSBpcyBubyBlcXVpdmFsZW50IGBjb21wb25lbnRXaWxsUmVjZWl2ZVN0YXRlYC4g
QW4gaW5jb21pbmcgcHJvcFxuICAgICAqIHRyYW5zaXRpb24gbWF5IGNhdXNlIGEgc3RhdGUgY2hh
bmdlLCBidXQgdGhlIG9wcG9zaXRlIGlzIG5vdCB0cnVlLiBJZiB5b3VcbiAgICAgKiBuZWVkIGl0
LCB5b3UgYXJlIHByb2JhYmx5IGxvb2tpbmcgZm9yIGBjb21wb25lbnRXaWxsVXBkYXRlYC5cbiAg
ICAgKlxuICAgICAqIEBwYXJhbSB7b2JqZWN0fSBuZXh0UHJvcHNcbiAgICAgKiBAb3B0aW9uYWxc
biAgICAgKi9cbiAgICBjb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzOiAnREVGSU5FX01BTlknLFxu
XG4gICAgLyoqXG4gICAgICogSW52b2tlZCB3aGlsZSBkZWNpZGluZyBpZiB0aGUgY29tcG9uZW50
IHNob3VsZCBiZSB1cGRhdGVkIGFzIGEgcmVzdWx0IG9mXG4gICAgICogcmVjZWl2aW5nIG5ldyBw
cm9wcywgc3RhdGUgYW5kL29yIGNvbnRleHQuXG4gICAgICpcbiAgICAgKiBVc2UgdGhpcyBhcyBh
biBvcHBvcnR1bml0eSB0byBgcmV0dXJuIGZhbHNlYCB3aGVuIHlvdSdyZSBjZXJ0YWluIHRoYXQg
dGhlXG4gICAgICogdHJhbnNpdGlvbiB0byB0aGUgbmV3IHByb3BzL3N0YXRlL2NvbnRleHQgd2ls
bCBub3QgcmVxdWlyZSBhIGNvbXBvbmVudFxuICAgICAqIHVwZGF0ZS5cbiAgICAgKlxuICAgICAq
ICAgc2hvdWxkQ29tcG9uZW50VXBkYXRlOiBmdW5jdGlvbihuZXh0UHJvcHMsIG5leHRTdGF0ZSwg
bmV4dENvbnRleHQpIHtcbiAgICAgKiAgICAgcmV0dXJuICFlcXVhbChuZXh0UHJvcHMsIHRoaXMu
cHJvcHMpIHx8XG4gICAgICogICAgICAgIWVxdWFsKG5leHRTdGF0ZSwgdGhpcy5zdGF0ZSkgfHxc
biAgICAgKiAgICAgICAhZXF1YWwobmV4dENvbnRleHQsIHRoaXMuY29udGV4dCk7XG4gICAgICog
ICB9XG4gICAgICpcbiAgICAgKiBAcGFyYW0ge29iamVjdH0gbmV4dFByb3BzXG4gICAgICogQHBh
cmFtIHs/b2JqZWN0fSBuZXh0U3RhdGVcbiAgICAgKiBAcGFyYW0gez9vYmplY3R9IG5leHRDb250
ZXh0XG4gICAgICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBpZiB0aGUgY29tcG9uZW50IHNob3Vs
ZCB1cGRhdGUuXG4gICAgICogQG9wdGlvbmFsXG4gICAgICovXG4gICAgc2hvdWxkQ29tcG9uZW50
VXBkYXRlOiAnREVGSU5FX09OQ0UnLFxuXG4gICAgLyoqXG4gICAgICogSW52b2tlZCB3aGVuIHRo
ZSBjb21wb25lbnQgaXMgYWJvdXQgdG8gdXBkYXRlIGR1ZSB0byBhIHRyYW5zaXRpb24gZnJvbVxu
ICAgICAqIGB0aGlzLnByb3BzYCwgYHRoaXMuc3RhdGVgIGFuZCBgdGhpcy5jb250ZXh0YCB0byBg
bmV4dFByb3BzYCwgYG5leHRTdGF0ZWBcbiAgICAgKiBhbmQgYG5leHRDb250ZXh0YC5cbiAgICAg
KlxuICAgICAqIFVzZSB0aGlzIGFzIGFuIG9wcG9ydHVuaXR5IHRvIHBlcmZvcm0gcHJlcGFyYXRp
b24gYmVmb3JlIGFuIHVwZGF0ZSBvY2N1cnMuXG4gICAgICpcbiAgICAgKiBOT1RFOiBZb3UgKipj
YW5ub3QqKiB1c2UgYHRoaXMuc2V0U3RhdGUoKWAgaW4gdGhpcyBtZXRob2QuXG4gICAgICpcbiAg
ICAgKiBAcGFyYW0ge29iamVjdH0gbmV4dFByb3BzXG4gICAgICogQHBhcmFtIHs/b2JqZWN0fSBu
ZXh0U3RhdGVcbiAgICAgKiBAcGFyYW0gez9vYmplY3R9IG5leHRDb250ZXh0XG4gICAgICogQHBh
cmFtIHtSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9ufSB0cmFuc2FjdGlvblxuICAgICAqIEBvcHRp
b25hbFxuICAgICAqL1xuICAgIGNvbXBvbmVudFdpbGxVcGRhdGU6ICdERUZJTkVfTUFOWScsXG5c
biAgICAvKipcbiAgICAgKiBJbnZva2VkIHdoZW4gdGhlIGNvbXBvbmVudCdzIERPTSByZXByZXNl
bnRhdGlvbiBoYXMgYmVlbiB1cGRhdGVkLlxuICAgICAqXG4gICAgICogVXNlIHRoaXMgYXMgYW4g
b3Bwb3J0dW5pdHkgdG8gb3BlcmF0ZSBvbiB0aGUgRE9NIHdoZW4gdGhlIGNvbXBvbmVudCBoYXNc
biAgICAgKiBiZWVuIHVwZGF0ZWQuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge29iamVjdH0gcHJl
dlByb3BzXG4gICAgICogQHBhcmFtIHs/b2JqZWN0fSBwcmV2U3RhdGVcbiAgICAgKiBAcGFyYW0g
ez9vYmplY3R9IHByZXZDb250ZXh0XG4gICAgICogQHBhcmFtIHtET01FbGVtZW50fSByb290Tm9k
ZSBET00gZWxlbWVudCByZXByZXNlbnRpbmcgdGhlIGNvbXBvbmVudC5cbiAgICAgKiBAb3B0aW9u
YWxcbiAgICAgKi9cbiAgICBjb21wb25lbnREaWRVcGRhdGU6ICdERUZJTkVfTUFOWScsXG5cbiAg
ICAvKipcbiAgICAgKiBJbnZva2VkIHdoZW4gdGhlIGNvbXBvbmVudCBpcyBhYm91dCB0byBiZSBy
ZW1vdmVkIGZyb20gaXRzIHBhcmVudCBhbmQgaGF2ZVxuICAgICAqIGl0cyBET00gcmVwcmVzZW50
YXRpb24gZGVzdHJveWVkLlxuICAgICAqXG4gICAgICogVXNlIHRoaXMgYXMgYW4gb3Bwb3J0dW5p
dHkgdG8gZGVhbGxvY2F0ZSBhbnkgZXh0ZXJuYWwgcmVzb3VyY2VzLlxuICAgICAqXG4gICAgICog
Tk9URTogVGhlcmUgaXMgbm8gYGNvbXBvbmVudERpZFVubW91bnRgIHNpbmNlIHlvdXIgY29tcG9u
ZW50IHdpbGwgaGF2ZSBiZWVuXG4gICAgICogZGVzdHJveWVkIGJ5IHRoYXQgcG9pbnQuXG4gICAg
ICpcbiAgICAgKiBAb3B0aW9uYWxcbiAgICAgKi9cbiAgICBjb21wb25lbnRXaWxsVW5tb3VudDog
J0RFRklORV9NQU5ZJyxcblxuICAgIC8vID09PT0gQWR2YW5jZWQgbWV0aG9kcyA9PT09XG5cbiAg
ICAvKipcbiAgICAgKiBVcGRhdGVzIHRoZSBjb21wb25lbnQncyBjdXJyZW50bHkgbW91bnRlZCBE
T00gcmVwcmVzZW50YXRpb24uXG4gICAgICpcbiAgICAgKiBCeSBkZWZhdWx0LCB0aGlzIGltcGxl
bWVudHMgUmVhY3QncyByZW5kZXJpbmcgYW5kIHJlY29uY2lsaWF0aW9uIGFsZ29yaXRobS5cbiAg
ICAgKiBTb3BoaXN0aWNhdGVkIGNsaWVudHMgbWF5IHdpc2ggdG8gb3ZlcnJpZGUgdGhpcy5cbiAg
ICAgKlxuICAgICAqIEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbn0gdHJhbnNhY3Rp
b25cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKiBAb3ZlcnJpZGFibGVcbiAgICAgKi9cbiAgICB1
cGRhdGVDb21wb25lbnQ6ICdPVkVSUklERV9CQVNFJ1xuICB9O1xuXG4gIC8qKlxuICAgKiBNYXBw
aW5nIGZyb20gY2xhc3Mgc3BlY2lmaWNhdGlvbiBrZXlzIHRvIHNwZWNpYWwgcHJvY2Vzc2luZyBm
dW5jdGlvbnMuXG4gICAqXG4gICAqIEFsdGhvdWdoIHRoZXNlIGFyZSBkZWNsYXJlZCBsaWtlIGlu
c3RhbmNlIHByb3BlcnRpZXMgaW4gdGhlIHNwZWNpZmljYXRpb25cbiAgICogd2hlbiBkZWZpbmlu
ZyBjbGFzc2VzIHVzaW5nIGBSZWFjdC5jcmVhdGVDbGFzc2AsIHRoZXkgYXJlIGFjdHVhbGx5IHN0
YXRpY1xuICAgKiBhbmQgYXJlIGFjY2Vzc2libGUgb24gdGhlIGNvbnN0cnVjdG9yIGluc3RlYWQg
b2YgdGhlIHByb3RvdHlwZS4gRGVzcGl0ZVxuICAgKiBiZWluZyBzdGF0aWMsIHRoZXkgbXVzdCBi
ZSBkZWZpbmVkIG91dHNpZGUgb2YgdGhlIFwic3RhdGljc1wiIGtleSB1bmRlclxuICAgKiB3aGlj
aCBhbGwgb3RoZXIgc3RhdGljIG1ldGhvZHMgYXJlIGRlZmluZWQuXG4gICAqL1xuICB2YXIgUkVT
RVJWRURfU1BFQ19LRVlTID0ge1xuICAgIGRpc3BsYXlOYW1lOiBmdW5jdGlvbihDb25zdHJ1Y3Rv
ciwgZGlzcGxheU5hbWUpIHtcbiAgICAgIENvbnN0cnVjdG9yLmRpc3BsYXlOYW1lID0gZGlzcGxh
eU5hbWU7XG4gICAgfSxcbiAgICBtaXhpbnM6IGZ1bmN0aW9uKENvbnN0cnVjdG9yLCBtaXhpbnMp
IHtcbiAgICAgIGlmIChtaXhpbnMpIHtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBtaXhp
bnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICBtaXhTcGVjSW50b0NvbXBvbmVudChDb25zdHJ1
Y3RvciwgbWl4aW5zW2ldKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgY2hpbGRD
b250ZXh0VHlwZXM6IGZ1bmN0aW9uKENvbnN0cnVjdG9yLCBjaGlsZENvbnRleHRUeXBlcykge1xu
ICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAg
ICAgdmFsaWRhdGVUeXBlRGVmKENvbnN0cnVjdG9yLCBjaGlsZENvbnRleHRUeXBlcywgJ2NoaWxk
Q29udGV4dCcpO1xuICAgICAgfVxuICAgICAgQ29uc3RydWN0b3IuY2hpbGRDb250ZXh0VHlwZXMg
PSBfYXNzaWduKFxuICAgICAgICB7fSxcbiAgICAgICAgQ29uc3RydWN0b3IuY2hpbGRDb250ZXh0
VHlwZXMsXG4gICAgICAgIGNoaWxkQ29udGV4dFR5cGVzXG4gICAgICApO1xuICAgIH0sXG4gICAg
Y29udGV4dFR5cGVzOiBmdW5jdGlvbihDb25zdHJ1Y3RvciwgY29udGV4dFR5cGVzKSB7XG4gICAg
ICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICB2
YWxpZGF0ZVR5cGVEZWYoQ29uc3RydWN0b3IsIGNvbnRleHRUeXBlcywgJ2NvbnRleHQnKTtcbiAg
ICAgIH1cbiAgICAgIENvbnN0cnVjdG9yLmNvbnRleHRUeXBlcyA9IF9hc3NpZ24oXG4gICAgICAg
IHt9LFxuICAgICAgICBDb25zdHJ1Y3Rvci5jb250ZXh0VHlwZXMsXG4gICAgICAgIGNvbnRleHRU
eXBlc1xuICAgICAgKTtcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIFNwZWNpYWwgY2FzZSBnZXRE
ZWZhdWx0UHJvcHMgd2hpY2ggc2hvdWxkIG1vdmUgaW50byBzdGF0aWNzIGJ1dCByZXF1aXJlc1xu
ICAgICAqIGF1dG9tYXRpYyBtZXJnaW5nLlxuICAgICAqL1xuICAgIGdldERlZmF1bHRQcm9wczog
ZnVuY3Rpb24oQ29uc3RydWN0b3IsIGdldERlZmF1bHRQcm9wcykge1xuICAgICAgaWYgKENvbnN0
cnVjdG9yLmdldERlZmF1bHRQcm9wcykge1xuICAgICAgICBDb25zdHJ1Y3Rvci5nZXREZWZhdWx0
UHJvcHMgPSBjcmVhdGVNZXJnZWRSZXN1bHRGdW5jdGlvbihcbiAgICAgICAgICBDb25zdHJ1Y3Rv
ci5nZXREZWZhdWx0UHJvcHMsXG4gICAgICAgICAgZ2V0RGVmYXVsdFByb3BzXG4gICAgICAgICk7
XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBDb25zdHJ1Y3Rvci5nZXREZWZhdWx0UHJvcHMgPSBn
ZXREZWZhdWx0UHJvcHM7XG4gICAgICB9XG4gICAgfSxcbiAgICBwcm9wVHlwZXM6IGZ1bmN0aW9u
KENvbnN0cnVjdG9yLCBwcm9wVHlwZXMpIHtcbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VO
ViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgIHZhbGlkYXRlVHlwZURlZihDb25zdHJ1Y3Rv
ciwgcHJvcFR5cGVzLCAncHJvcCcpO1xuICAgICAgfVxuICAgICAgQ29uc3RydWN0b3IucHJvcFR5
cGVzID0gX2Fzc2lnbih7fSwgQ29uc3RydWN0b3IucHJvcFR5cGVzLCBwcm9wVHlwZXMpO1xuICAg
IH0sXG4gICAgc3RhdGljczogZnVuY3Rpb24oQ29uc3RydWN0b3IsIHN0YXRpY3MpIHtcbiAgICAg
IG1peFN0YXRpY1NwZWNJbnRvQ29tcG9uZW50KENvbnN0cnVjdG9yLCBzdGF0aWNzKTtcbiAgICB9
LFxuICAgIGF1dG9iaW5kOiBmdW5jdGlvbigpIHt9XG4gIH07XG5cbiAgZnVuY3Rpb24gdmFsaWRh
dGVUeXBlRGVmKENvbnN0cnVjdG9yLCB0eXBlRGVmLCBsb2NhdGlvbikge1xuICAgIGZvciAodmFy
IHByb3BOYW1lIGluIHR5cGVEZWYpIHtcbiAgICAgIGlmICh0eXBlRGVmLmhhc093blByb3BlcnR5
KHByb3BOYW1lKSkge1xuICAgICAgICAvLyB1c2UgYSB3YXJuaW5nIGluc3RlYWQgb2YgYW4gX2lu
dmFyaWFudCBzbyBjb21wb25lbnRzXG4gICAgICAgIC8vIGRvbid0IHNob3cgdXAgaW4gcHJvZCBi
dXQgb25seSBpbiBfX0RFVl9fXG4gICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0g
J3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgICAgd2FybmluZyhcbiAgICAgICAgICAgIHR5cGVvZiB0
eXBlRGVmW3Byb3BOYW1lXSA9PT0gJ2Z1bmN0aW9uJyxcbiAgICAgICAgICAgICclczogJXMgdHlw
ZSBgJXNgIGlzIGludmFsaWQ7IGl0IG11c3QgYmUgYSBmdW5jdGlvbiwgdXN1YWxseSBmcm9tICcg
K1xuICAgICAgICAgICAgICAnUmVhY3QuUHJvcFR5cGVzLicsXG4gICAgICAgICAgICBDb25zdHJ1
Y3Rvci5kaXNwbGF5TmFtZSB8fCAnUmVhY3RDbGFzcycsXG4gICAgICAgICAgICBSZWFjdFByb3BU
eXBlTG9jYXRpb25OYW1lc1tsb2NhdGlvbl0sXG4gICAgICAgICAgICBwcm9wTmFtZVxuICAgICAg
ICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiB2YWxp
ZGF0ZU1ldGhvZE92ZXJyaWRlKGlzQWxyZWFkeURlZmluZWQsIG5hbWUpIHtcbiAgICB2YXIgc3Bl
Y1BvbGljeSA9IFJlYWN0Q2xhc3NJbnRlcmZhY2UuaGFzT3duUHJvcGVydHkobmFtZSlcbiAgICAg
ID8gUmVhY3RDbGFzc0ludGVyZmFjZVtuYW1lXVxuICAgICAgOiBudWxsO1xuXG4gICAgLy8gRGlz
YWxsb3cgb3ZlcnJpZGluZyBvZiBiYXNlIGNsYXNzIG1ldGhvZHMgdW5sZXNzIGV4cGxpY2l0bHkg
YWxsb3dlZC5cbiAgICBpZiAoUmVhY3RDbGFzc01peGluLmhhc093blByb3BlcnR5KG5hbWUpKSB7
XG4gICAgICBfaW52YXJpYW50KFxuICAgICAgICBzcGVjUG9saWN5ID09PSAnT1ZFUlJJREVfQkFT
RScsXG4gICAgICAgICdSZWFjdENsYXNzSW50ZXJmYWNlOiBZb3UgYXJlIGF0dGVtcHRpbmcgdG8g
b3ZlcnJpZGUgJyArXG4gICAgICAgICAgJ2Alc2AgZnJvbSB5b3VyIGNsYXNzIHNwZWNpZmljYXRp
b24uIEVuc3VyZSB0aGF0IHlvdXIgbWV0aG9kIG5hbWVzICcgK1xuICAgICAgICAgICdkbyBub3Qg
b3ZlcmxhcCB3aXRoIFJlYWN0IG1ldGhvZHMuJyxcbiAgICAgICAgbmFtZVxuICAgICAgKTtcbiAg
ICB9XG5cbiAgICAvLyBEaXNhbGxvdyBkZWZpbmluZyBtZXRob2RzIG1vcmUgdGhhbiBvbmNlIHVu
bGVzcyBleHBsaWNpdGx5IGFsbG93ZWQuXG4gICAgaWYgKGlzQWxyZWFkeURlZmluZWQpIHtcbiAg
ICAgIF9pbnZhcmlhbnQoXG4gICAgICAgIHNwZWNQb2xpY3kgPT09ICdERUZJTkVfTUFOWScgfHwg
c3BlY1BvbGljeSA9PT0gJ0RFRklORV9NQU5ZX01FUkdFRCcsXG4gICAgICAgICdSZWFjdENsYXNz
SW50ZXJmYWNlOiBZb3UgYXJlIGF0dGVtcHRpbmcgdG8gZGVmaW5lICcgK1xuICAgICAgICAgICdg
JXNgIG9uIHlvdXIgY29tcG9uZW50IG1vcmUgdGhhbiBvbmNlLiBUaGlzIGNvbmZsaWN0IG1heSBi
ZSBkdWUgJyArXG4gICAgICAgICAgJ3RvIGEgbWl4aW4uJyxcbiAgICAgICAgbmFtZVxuICAgICAg
KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogTWl4aW4gaGVscGVyIHdoaWNoIGhhbmRsZXMg
cG9saWN5IHZhbGlkYXRpb24gYW5kIHJlc2VydmVkXG4gICAqIHNwZWNpZmljYXRpb24ga2V5cyB3
aGVuIGJ1aWxkaW5nIFJlYWN0IGNsYXNzZXMuXG4gICAqL1xuICBmdW5jdGlvbiBtaXhTcGVjSW50
b0NvbXBvbmVudChDb25zdHJ1Y3Rvciwgc3BlYykge1xuICAgIGlmICghc3BlYykge1xuICAgICAg
aWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgdmFy
IHR5cGVvZlNwZWMgPSB0eXBlb2Ygc3BlYztcbiAgICAgICAgdmFyIGlzTWl4aW5WYWxpZCA9IHR5
cGVvZlNwZWMgPT09ICdvYmplY3QnICYmIHNwZWMgIT09IG51bGw7XG5cbiAgICAgICAgaWYgKHBy
b2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICB3YXJuaW5n
KFxuICAgICAgICAgICAgaXNNaXhpblZhbGlkLFxuICAgICAgICAgICAgXCIlczogWW91J3JlIGF0
dGVtcHRpbmcgdG8gaW5jbHVkZSBhIG1peGluIHRoYXQgaXMgZWl0aGVyIG51bGwgXCIgK1xuICAg
ICAgICAgICAgICAnb3Igbm90IGFuIG9iamVjdC4gQ2hlY2sgdGhlIG1peGlucyBpbmNsdWRlZCBi
eSB0aGUgY29tcG9uZW50LCAnICtcbiAgICAgICAgICAgICAgJ2FzIHdlbGwgYXMgYW55IG1peGlu
cyB0aGV5IGluY2x1ZGUgdGhlbXNlbHZlcy4gJyArXG4gICAgICAgICAgICAgICdFeHBlY3RlZCBv
YmplY3QgYnV0IGdvdCAlcy4nLFxuICAgICAgICAgICAgQ29uc3RydWN0b3IuZGlzcGxheU5hbWUg
fHwgJ1JlYWN0Q2xhc3MnLFxuICAgICAgICAgICAgc3BlYyA9PT0gbnVsbCA/IG51bGwgOiB0eXBl
b2ZTcGVjXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm47
XG4gICAgfVxuXG4gICAgX2ludmFyaWFudChcbiAgICAgIHR5cGVvZiBzcGVjICE9PSAnZnVuY3Rp
b24nLFxuICAgICAgXCJSZWFjdENsYXNzOiBZb3UncmUgYXR0ZW1wdGluZyB0byBcIiArXG4gICAg
ICAgICd1c2UgYSBjb21wb25lbnQgY2xhc3Mgb3IgZnVuY3Rpb24gYXMgYSBtaXhpbi4gSW5zdGVh
ZCwganVzdCB1c2UgYSAnICtcbiAgICAgICAgJ3JlZ3VsYXIgb2JqZWN0LidcbiAgICApO1xuICAg
IF9pbnZhcmlhbnQoXG4gICAgICAhaXNWYWxpZEVsZW1lbnQoc3BlYyksXG4gICAgICBcIlJlYWN0
Q2xhc3M6IFlvdSdyZSBhdHRlbXB0aW5nIHRvIFwiICtcbiAgICAgICAgJ3VzZSBhIGNvbXBvbmVu
dCBhcyBhIG1peGluLiBJbnN0ZWFkLCBqdXN0IHVzZSBhIHJlZ3VsYXIgb2JqZWN0LidcbiAgICAp
O1xuXG4gICAgdmFyIHByb3RvID0gQ29uc3RydWN0b3IucHJvdG90eXBlO1xuICAgIHZhciBhdXRv
QmluZFBhaXJzID0gcHJvdG8uX19yZWFjdEF1dG9CaW5kUGFpcnM7XG5cbiAgICAvLyBCeSBoYW5k
bGluZyBtaXhpbnMgYmVmb3JlIGFueSBvdGhlciBwcm9wZXJ0aWVzLCB3ZSBlbnN1cmUgdGhlIHNh
bWVcbiAgICAvLyBjaGFpbmluZyBvcmRlciBpcyBhcHBsaWVkIHRvIG1ldGhvZHMgd2l0aCBERUZJ
TkVfTUFOWSBwb2xpY3ksIHdoZXRoZXJcbiAgICAvLyBtaXhpbnMgYXJlIGxpc3RlZCBiZWZvcmUg
b3IgYWZ0ZXIgdGhlc2UgbWV0aG9kcyBpbiB0aGUgc3BlYy5cbiAgICBpZiAoc3BlYy5oYXNPd25Q
cm9wZXJ0eShNSVhJTlNfS0VZKSkge1xuICAgICAgUkVTRVJWRURfU1BFQ19LRVlTLm1peGlucyhD
b25zdHJ1Y3Rvciwgc3BlYy5taXhpbnMpO1xuICAgIH1cblxuICAgIGZvciAodmFyIG5hbWUgaW4g
c3BlYykge1xuICAgICAgaWYgKCFzcGVjLmhhc093blByb3BlcnR5KG5hbWUpKSB7XG4gICAgICAg
IGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAobmFtZSA9PT0gTUlYSU5TX0tFWSkge1xu
ICAgICAgICAvLyBXZSBoYXZlIGFscmVhZHkgaGFuZGxlZCBtaXhpbnMgaW4gYSBzcGVjaWFsIGNh
c2UgYWJvdmUuXG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICB2YXIgcHJvcGVy
dHkgPSBzcGVjW25hbWVdO1xuICAgICAgdmFyIGlzQWxyZWFkeURlZmluZWQgPSBwcm90by5oYXNP
d25Qcm9wZXJ0eShuYW1lKTtcbiAgICAgIHZhbGlkYXRlTWV0aG9kT3ZlcnJpZGUoaXNBbHJlYWR5
RGVmaW5lZCwgbmFtZSk7XG5cbiAgICAgIGlmIChSRVNFUlZFRF9TUEVDX0tFWVMuaGFzT3duUHJv
cGVydHkobmFtZSkpIHtcbiAgICAgICAgUkVTRVJWRURfU1BFQ19LRVlTW25hbWVdKENvbnN0cnVj
dG9yLCBwcm9wZXJ0eSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBTZXR1cCBtZXRob2Rz
IG9uIHByb3RvdHlwZTpcbiAgICAgICAgLy8gVGhlIGZvbGxvd2luZyBtZW1iZXIgbWV0aG9kcyBz
aG91bGQgbm90IGJlIGF1dG9tYXRpY2FsbHkgYm91bmQ6XG4gICAgICAgIC8vIDEuIEV4cGVjdGVk
IFJlYWN0Q2xhc3MgbWV0aG9kcyAoaW4gdGhlIFwiaW50ZXJmYWNlXCIpLlxuICAgICAgICAvLyAy
LiBPdmVycmlkZGVuIG1ldGhvZHMgKHRoYXQgd2VyZSBtaXhlZCBpbikuXG4gICAgICAgIHZhciBp
c1JlYWN0Q2xhc3NNZXRob2QgPSBSZWFjdENsYXNzSW50ZXJmYWNlLmhhc093blByb3BlcnR5KG5h
bWUpO1xuICAgICAgICB2YXIgaXNGdW5jdGlvbiA9IHR5cGVvZiBwcm9wZXJ0eSA9PT0gJ2Z1bmN0
aW9uJztcbiAgICAgICAgdmFyIHNob3VsZEF1dG9CaW5kID1cbiAgICAgICAgICBpc0Z1bmN0aW9u
ICYmXG4gICAgICAgICAgIWlzUmVhY3RDbGFzc01ldGhvZCAmJlxuICAgICAgICAgICFpc0FscmVh
ZHlEZWZpbmVkICYmXG4gICAgICAgICAgc3BlYy5hdXRvYmluZCAhPT0gZmFsc2U7XG5cbiAgICAg
ICAgaWYgKHNob3VsZEF1dG9CaW5kKSB7XG4gICAgICAgICAgYXV0b0JpbmRQYWlycy5wdXNoKG5h
bWUsIHByb3BlcnR5KTtcbiAgICAgICAgICBwcm90b1tuYW1lXSA9IHByb3BlcnR5O1xuICAgICAg
ICB9IGVsc2Uge1xuICAgICAgICAgIGlmIChpc0FscmVhZHlEZWZpbmVkKSB7XG4gICAgICAgICAg
ICB2YXIgc3BlY1BvbGljeSA9IFJlYWN0Q2xhc3NJbnRlcmZhY2VbbmFtZV07XG5cbiAgICAgICAg
ICAgIC8vIFRoZXNlIGNhc2VzIHNob3VsZCBhbHJlYWR5IGJlIGNhdWdodCBieSB2YWxpZGF0ZU1l
dGhvZE92ZXJyaWRlLlxuICAgICAgICAgICAgX2ludmFyaWFudChcbiAgICAgICAgICAgICAgaXNS
ZWFjdENsYXNzTWV0aG9kICYmXG4gICAgICAgICAgICAgICAgKHNwZWNQb2xpY3kgPT09ICdERUZJ
TkVfTUFOWV9NRVJHRUQnIHx8XG4gICAgICAgICAgICAgICAgICBzcGVjUG9saWN5ID09PSAnREVG
SU5FX01BTlknKSxcbiAgICAgICAgICAgICAgJ1JlYWN0Q2xhc3M6IFVuZXhwZWN0ZWQgc3BlYyBw
b2xpY3kgJXMgZm9yIGtleSAlcyAnICtcbiAgICAgICAgICAgICAgICAnd2hlbiBtaXhpbmcgaW4g
Y29tcG9uZW50IHNwZWNzLicsXG4gICAgICAgICAgICAgIHNwZWNQb2xpY3ksXG4gICAgICAgICAg
ICAgIG5hbWVcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIC8vIEZvciBtZXRob2RzIHdo
aWNoIGFyZSBkZWZpbmVkIG1vcmUgdGhhbiBvbmNlLCBjYWxsIHRoZSBleGlzdGluZ1xuICAgICAg
ICAgICAgLy8gbWV0aG9kcyBiZWZvcmUgY2FsbGluZyB0aGUgbmV3IHByb3BlcnR5LCBtZXJnaW5n
IGlmIGFwcHJvcHJpYXRlLlxuICAgICAgICAgICAgaWYgKHNwZWNQb2xpY3kgPT09ICdERUZJTkVf
TUFOWV9NRVJHRUQnKSB7XG4gICAgICAgICAgICAgIHByb3RvW25hbWVdID0gY3JlYXRlTWVyZ2Vk
UmVzdWx0RnVuY3Rpb24ocHJvdG9bbmFtZV0sIHByb3BlcnR5KTtcbiAgICAgICAgICAgIH0gZWxz
ZSBpZiAoc3BlY1BvbGljeSA9PT0gJ0RFRklORV9NQU5ZJykge1xuICAgICAgICAgICAgICBwcm90
b1tuYW1lXSA9IGNyZWF0ZUNoYWluZWRGdW5jdGlvbihwcm90b1tuYW1lXSwgcHJvcGVydHkpO1xu
ICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwcm90b1tuYW1l
XSA9IHByb3BlcnR5O1xuICAgICAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAn
cHJvZHVjdGlvbicpIHtcbiAgICAgICAgICAgICAgLy8gQWRkIHZlcmJvc2UgZGlzcGxheU5hbWUg
dG8gdGhlIGZ1bmN0aW9uLCB3aGljaCBoZWxwcyB3aGVuIGxvb2tpbmdcbiAgICAgICAgICAgICAg
Ly8gYXQgcHJvZmlsaW5nIHRvb2xzLlxuICAgICAgICAgICAgICBpZiAodHlwZW9mIHByb3BlcnR5
ID09PSAnZnVuY3Rpb24nICYmIHNwZWMuZGlzcGxheU5hbWUpIHtcbiAgICAgICAgICAgICAgICBw
cm90b1tuYW1lXS5kaXNwbGF5TmFtZSA9IHNwZWMuZGlzcGxheU5hbWUgKyAnXycgKyBuYW1lO1xu
ICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4g
ICAgICB9XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gbWl4U3RhdGljU3BlY0ludG9Db21wb25l
bnQoQ29uc3RydWN0b3IsIHN0YXRpY3MpIHtcbiAgICBpZiAoIXN0YXRpY3MpIHtcbiAgICAgIHJl
dHVybjtcbiAgICB9XG4gICAgZm9yICh2YXIgbmFtZSBpbiBzdGF0aWNzKSB7XG4gICAgICB2YXIg
cHJvcGVydHkgPSBzdGF0aWNzW25hbWVdO1xuICAgICAgaWYgKCFzdGF0aWNzLmhhc093blByb3Bl
cnR5KG5hbWUpKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICB2YXIgaXNS
ZXNlcnZlZCA9IG5hbWUgaW4gUkVTRVJWRURfU1BFQ19LRVlTO1xuICAgICAgX2ludmFyaWFudChc
biAgICAgICAgIWlzUmVzZXJ2ZWQsXG4gICAgICAgICdSZWFjdENsYXNzOiBZb3UgYXJlIGF0dGVt
cHRpbmcgdG8gZGVmaW5lIGEgcmVzZXJ2ZWQgJyArXG4gICAgICAgICAgJ3Byb3BlcnR5LCBgJXNg
LCB0aGF0IHNob3VsZG5cXCd0IGJlIG9uIHRoZSBcInN0YXRpY3NcIiBrZXkuIERlZmluZSBpdCAn
ICtcbiAgICAgICAgICAnYXMgYW4gaW5zdGFuY2UgcHJvcGVydHkgaW5zdGVhZDsgaXQgd2lsbCBz
dGlsbCBiZSBhY2Nlc3NpYmxlIG9uIHRoZSAnICtcbiAgICAgICAgICAnY29uc3RydWN0b3IuJyxc
biAgICAgICAgbmFtZVxuICAgICAgKTtcblxuICAgICAgdmFyIGlzSW5oZXJpdGVkID0gbmFtZSBp
biBDb25zdHJ1Y3RvcjtcbiAgICAgIF9pbnZhcmlhbnQoXG4gICAgICAgICFpc0luaGVyaXRlZCxc
biAgICAgICAgJ1JlYWN0Q2xhc3M6IFlvdSBhcmUgYXR0ZW1wdGluZyB0byBkZWZpbmUgJyArXG4g
ICAgICAgICAgJ2Alc2Agb24geW91ciBjb21wb25lbnQgbW9yZSB0aGFuIG9uY2UuIFRoaXMgY29u
ZmxpY3QgbWF5IGJlICcgK1xuICAgICAgICAgICdkdWUgdG8gYSBtaXhpbi4nLFxuICAgICAgICBu
YW1lXG4gICAgICApO1xuICAgICAgQ29uc3RydWN0b3JbbmFtZV0gPSBwcm9wZXJ0eTtcbiAgICB9
XG4gIH1cblxuICAvKipcbiAgICogTWVyZ2UgdHdvIG9iamVjdHMsIGJ1dCB0aHJvdyBpZiBib3Ro
IGNvbnRhaW4gdGhlIHNhbWUga2V5LlxuICAgKlxuICAgKiBAcGFyYW0ge29iamVjdH0gb25lIFRo
ZSBmaXJzdCBvYmplY3QsIHdoaWNoIGlzIG11dGF0ZWQuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSB0
d28gVGhlIHNlY29uZCBvYmplY3RcbiAgICogQHJldHVybiB7b2JqZWN0fSBvbmUgYWZ0ZXIgaXQg
aGFzIGJlZW4gbXV0YXRlZCB0byBjb250YWluIGV2ZXJ5dGhpbmcgaW4gdHdvLlxuICAgKi9cbiAg
ZnVuY3Rpb24gbWVyZ2VJbnRvV2l0aE5vRHVwbGljYXRlS2V5cyhvbmUsIHR3bykge1xuICAgIF9p
bnZhcmlhbnQoXG4gICAgICBvbmUgJiYgdHdvICYmIHR5cGVvZiBvbmUgPT09ICdvYmplY3QnICYm
IHR5cGVvZiB0d28gPT09ICdvYmplY3QnLFxuICAgICAgJ21lcmdlSW50b1dpdGhOb0R1cGxpY2F0
ZUtleXMoKTogQ2Fubm90IG1lcmdlIG5vbi1vYmplY3RzLidcbiAgICApO1xuXG4gICAgZm9yICh2
YXIga2V5IGluIHR3bykge1xuICAgICAgaWYgKHR3by5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4g
ICAgICAgIF9pbnZhcmlhbnQoXG4gICAgICAgICAgb25lW2tleV0gPT09IHVuZGVmaW5lZCxcbiAg
ICAgICAgICAnbWVyZ2VJbnRvV2l0aE5vRHVwbGljYXRlS2V5cygpOiAnICtcbiAgICAgICAgICAg
ICdUcmllZCB0byBtZXJnZSB0d28gb2JqZWN0cyB3aXRoIHRoZSBzYW1lIGtleTogYCVzYC4gVGhp
cyBjb25mbGljdCAnICtcbiAgICAgICAgICAgICdtYXkgYmUgZHVlIHRvIGEgbWl4aW47IGluIHBh
cnRpY3VsYXIsIHRoaXMgbWF5IGJlIGNhdXNlZCBieSB0d28gJyArXG4gICAgICAgICAgICAnZ2V0
SW5pdGlhbFN0YXRlKCkgb3IgZ2V0RGVmYXVsdFByb3BzKCkgbWV0aG9kcyByZXR1cm5pbmcgb2Jq
ZWN0cyAnICtcbiAgICAgICAgICAgICd3aXRoIGNsYXNoaW5nIGtleXMuJyxcbiAgICAgICAgICBr
ZXlcbiAgICAgICAgKTtcbiAgICAgICAgb25lW2tleV0gPSB0d29ba2V5XTtcbiAgICAgIH1cbiAg
ICB9XG4gICAgcmV0dXJuIG9uZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgZnVuY3Rp
b24gdGhhdCBpbnZva2VzIHR3byBmdW5jdGlvbnMgYW5kIG1lcmdlcyB0aGVpciByZXR1cm4gdmFs
dWVzLlxuICAgKlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBvbmUgRnVuY3Rpb24gdG8gaW52b2tl
IGZpcnN0LlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSB0d28gRnVuY3Rpb24gdG8gaW52b2tlIHNl
Y29uZC5cbiAgICogQHJldHVybiB7ZnVuY3Rpb259IEZ1bmN0aW9uIHRoYXQgaW52b2tlcyB0aGUg
dHdvIGFyZ3VtZW50IGZ1bmN0aW9ucy5cbiAgICogQHByaXZhdGVcbiAgICovXG4gIGZ1bmN0aW9u
IGNyZWF0ZU1lcmdlZFJlc3VsdEZ1bmN0aW9uKG9uZSwgdHdvKSB7XG4gICAgcmV0dXJuIGZ1bmN0
aW9uIG1lcmdlZFJlc3VsdCgpIHtcbiAgICAgIHZhciBhID0gb25lLmFwcGx5KHRoaXMsIGFyZ3Vt
ZW50cyk7XG4gICAgICB2YXIgYiA9IHR3by5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAg
aWYgKGEgPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gYjtcbiAgICAgIH0gZWxzZSBpZiAoYiA9
PSBudWxsKSB7XG4gICAgICAgIHJldHVybiBhO1xuICAgICAgfVxuICAgICAgdmFyIGMgPSB7fTtc
biAgICAgIG1lcmdlSW50b1dpdGhOb0R1cGxpY2F0ZUtleXMoYywgYSk7XG4gICAgICBtZXJnZUlu
dG9XaXRoTm9EdXBsaWNhdGVLZXlzKGMsIGIpO1xuICAgICAgcmV0dXJuIGM7XG4gICAgfTtcbiAg
fVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBpbnZva2VzIHR3byBmdW5j
dGlvbnMgYW5kIGlnbm9yZXMgdGhlaXIgcmV0dXJuIHZhbGVzLlxuICAgKlxuICAgKiBAcGFyYW0g
e2Z1bmN0aW9ufSBvbmUgRnVuY3Rpb24gdG8gaW52b2tlIGZpcnN0LlxuICAgKiBAcGFyYW0ge2Z1
bmN0aW9ufSB0d28gRnVuY3Rpb24gdG8gaW52b2tlIHNlY29uZC5cbiAgICogQHJldHVybiB7ZnVu
Y3Rpb259IEZ1bmN0aW9uIHRoYXQgaW52b2tlcyB0aGUgdHdvIGFyZ3VtZW50IGZ1bmN0aW9ucy5c
biAgICogQHByaXZhdGVcbiAgICovXG4gIGZ1bmN0aW9uIGNyZWF0ZUNoYWluZWRGdW5jdGlvbihv
bmUsIHR3bykge1xuICAgIHJldHVybiBmdW5jdGlvbiBjaGFpbmVkRnVuY3Rpb24oKSB7XG4gICAg
ICBvbmUuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgIHR3by5hcHBseSh0aGlzLCBhcmd1
bWVudHMpO1xuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQmluZHMgYSBtZXRob2QgdG8gdGhl
IGNvbXBvbmVudC5cbiAgICpcbiAgICogQHBhcmFtIHtvYmplY3R9IGNvbXBvbmVudCBDb21wb25l
bnQgd2hvc2UgbWV0aG9kIGlzIGdvaW5nIHRvIGJlIGJvdW5kLlxuICAgKiBAcGFyYW0ge2Z1bmN0
aW9ufSBtZXRob2QgTWV0aG9kIHRvIGJlIGJvdW5kLlxuICAgKiBAcmV0dXJuIHtmdW5jdGlvbn0g
VGhlIGJvdW5kIG1ldGhvZC5cbiAgICovXG4gIGZ1bmN0aW9uIGJpbmRBdXRvQmluZE1ldGhvZChj
b21wb25lbnQsIG1ldGhvZCkge1xuICAgIHZhciBib3VuZE1ldGhvZCA9IG1ldGhvZC5iaW5kKGNv
bXBvbmVudCk7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicp
IHtcbiAgICAgIGJvdW5kTWV0aG9kLl9fcmVhY3RCb3VuZENvbnRleHQgPSBjb21wb25lbnQ7XG4g
ICAgICBib3VuZE1ldGhvZC5fX3JlYWN0Qm91bmRNZXRob2QgPSBtZXRob2Q7XG4gICAgICBib3Vu
ZE1ldGhvZC5fX3JlYWN0Qm91bmRBcmd1bWVudHMgPSBudWxsO1xuICAgICAgdmFyIGNvbXBvbmVu
dE5hbWUgPSBjb21wb25lbnQuY29uc3RydWN0b3IuZGlzcGxheU5hbWU7XG4gICAgICB2YXIgX2Jp
bmQgPSBib3VuZE1ldGhvZC5iaW5kO1xuICAgICAgYm91bmRNZXRob2QuYmluZCA9IGZ1bmN0aW9u
KG5ld1RoaXMpIHtcbiAgICAgICAgZm9yIChcbiAgICAgICAgICB2YXIgX2xlbiA9IGFyZ3VtZW50
cy5sZW5ndGgsXG4gICAgICAgICAgICBhcmdzID0gQXJyYXkoX2xlbiA+IDEgPyBfbGVuIC0gMSA6
IDApLFxuICAgICAgICAgICAgX2tleSA9IDE7XG4gICAgICAgICAgX2tleSA8IF9sZW47XG4gICAg
ICAgICAgX2tleSsrXG4gICAgICAgICkge1xuICAgICAgICAgIGFyZ3NbX2tleSAtIDFdID0gYXJn
dW1lbnRzW19rZXldO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gVXNlciBpcyB0cnlpbmcgdG8g
YmluZCgpIGFuIGF1dG9ib3VuZCBtZXRob2Q7IHdlIGVmZmVjdGl2ZWx5IHdpbGxcbiAgICAgICAg
Ly8gaWdub3JlIHRoZSB2YWx1ZSBvZiBcInRoaXNcIiB0aGF0IHRoZSB1c2VyIGlzIHRyeWluZyB0
byB1c2UsIHNvXG4gICAgICAgIC8vIGxldCdzIHdhcm4uXG4gICAgICAgIGlmIChuZXdUaGlzICE9
PSBjb21wb25lbnQgJiYgbmV3VGhpcyAhPT0gbnVsbCkge1xuICAgICAgICAgIGlmIChwcm9jZXNz
LmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgICAgICB3YXJuaW5nKFxu
ICAgICAgICAgICAgICBmYWxzZSxcbiAgICAgICAgICAgICAgJ2JpbmQoKTogUmVhY3QgY29tcG9u
ZW50IG1ldGhvZHMgbWF5IG9ubHkgYmUgYm91bmQgdG8gdGhlICcgK1xuICAgICAgICAgICAgICAg
ICdjb21wb25lbnQgaW5zdGFuY2UuIFNlZSAlcycsXG4gICAgICAgICAgICAgIGNvbXBvbmVudE5h
bWVcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKCFhcmdz
Lmxlbmd0aCkge1xuICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1
Y3Rpb24nKSB7XG4gICAgICAgICAgICB3YXJuaW5nKFxuICAgICAgICAgICAgICBmYWxzZSxcbiAg
ICAgICAgICAgICAgJ2JpbmQoKTogWW91IGFyZSBiaW5kaW5nIGEgY29tcG9uZW50IG1ldGhvZCB0
byB0aGUgY29tcG9uZW50LiAnICtcbiAgICAgICAgICAgICAgICAnUmVhY3QgZG9lcyB0aGlzIGZv
ciB5b3UgYXV0b21hdGljYWxseSBpbiBhIGhpZ2gtcGVyZm9ybWFuY2UgJyArXG4gICAgICAgICAg
ICAgICAgJ3dheSwgc28geW91IGNhbiBzYWZlbHkgcmVtb3ZlIHRoaXMgY2FsbC4gU2VlICVzJyxc
biAgICAgICAgICAgICAgY29tcG9uZW50TmFtZVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9
XG4gICAgICAgICAgcmV0dXJuIGJvdW5kTWV0aG9kO1xuICAgICAgICB9XG4gICAgICAgIHZhciBy
ZWJvdW5kTWV0aG9kID0gX2JpbmQuYXBwbHkoYm91bmRNZXRob2QsIGFyZ3VtZW50cyk7XG4gICAg
ICAgIHJlYm91bmRNZXRob2QuX19yZWFjdEJvdW5kQ29udGV4dCA9IGNvbXBvbmVudDtcbiAgICAg
ICAgcmVib3VuZE1ldGhvZC5fX3JlYWN0Qm91bmRNZXRob2QgPSBtZXRob2Q7XG4gICAgICAgIHJl
Ym91bmRNZXRob2QuX19yZWFjdEJvdW5kQXJndW1lbnRzID0gYXJncztcbiAgICAgICAgcmV0dXJu
IHJlYm91bmRNZXRob2Q7XG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gYm91bmRNZXRob2Q7
XG4gIH1cblxuICAvKipcbiAgICogQmluZHMgYWxsIGF1dG8tYm91bmQgbWV0aG9kcyBpbiBhIGNv
bXBvbmVudC5cbiAgICpcbiAgICogQHBhcmFtIHtvYmplY3R9IGNvbXBvbmVudCBDb21wb25lbnQg
d2hvc2UgbWV0aG9kIGlzIGdvaW5nIHRvIGJlIGJvdW5kLlxuICAgKi9cbiAgZnVuY3Rpb24gYmlu
ZEF1dG9CaW5kTWV0aG9kcyhjb21wb25lbnQpIHtcbiAgICB2YXIgcGFpcnMgPSBjb21wb25lbnQu
X19yZWFjdEF1dG9CaW5kUGFpcnM7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwYWlycy5sZW5n
dGg7IGkgKz0gMikge1xuICAgICAgdmFyIGF1dG9CaW5kS2V5ID0gcGFpcnNbaV07XG4gICAgICB2
YXIgbWV0aG9kID0gcGFpcnNbaSArIDFdO1xuICAgICAgY29tcG9uZW50W2F1dG9CaW5kS2V5XSA9
IGJpbmRBdXRvQmluZE1ldGhvZChjb21wb25lbnQsIG1ldGhvZCk7XG4gICAgfVxuICB9XG5cbiAg
dmFyIElzTW91bnRlZFByZU1peGluID0ge1xuICAgIGNvbXBvbmVudERpZE1vdW50OiBmdW5jdGlv
bigpIHtcbiAgICAgIHRoaXMuX19pc01vdW50ZWQgPSB0cnVlO1xuICAgIH1cbiAgfTtcblxuICB2
YXIgSXNNb3VudGVkUG9zdE1peGluID0ge1xuICAgIGNvbXBvbmVudFdpbGxVbm1vdW50OiBmdW5j
dGlvbigpIHtcbiAgICAgIHRoaXMuX19pc01vdW50ZWQgPSBmYWxzZTtcbiAgICB9XG4gIH07XG5c
biAgLyoqXG4gICAqIEFkZCBtb3JlIHRvIHRoZSBSZWFjdENsYXNzIGJhc2UgY2xhc3MuIFRoZXNl
IGFyZSBhbGwgbGVnYWN5IGZlYXR1cmVzIGFuZFxuICAgKiB0aGVyZWZvcmUgbm90IGFscmVhZHkg
cGFydCBvZiB0aGUgbW9kZXJuIFJlYWN0Q29tcG9uZW50LlxuICAgKi9cbiAgdmFyIFJlYWN0Q2xh
c3NNaXhpbiA9IHtcbiAgICAvKipcbiAgICAgKiBUT0RPOiBUaGlzIHdpbGwgYmUgZGVwcmVjYXRl
ZCBiZWNhdXNlIHN0YXRlIHNob3VsZCBhbHdheXMga2VlcCBhIGNvbnNpc3RlbnRcbiAgICAgKiB0
eXBlIHNpZ25hdHVyZSBhbmQgdGhlIG9ubHkgdXNlIGNhc2UgZm9yIHRoaXMsIGlzIHRvIGF2b2lk
IHRoYXQuXG4gICAgICovXG4gICAgcmVwbGFjZVN0YXRlOiBmdW5jdGlvbihuZXdTdGF0ZSwgY2Fs
bGJhY2spIHtcbiAgICAgIHRoaXMudXBkYXRlci5lbnF1ZXVlUmVwbGFjZVN0YXRlKHRoaXMsIG5l
d1N0YXRlLCBjYWxsYmFjayk7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIENoZWNrcyB3aGV0
aGVyIG9yIG5vdCB0aGlzIGNvbXBvc2l0ZSBjb21wb25lbnQgaXMgbW91bnRlZC5cbiAgICAgKiBA
cmV0dXJuIHtib29sZWFufSBUcnVlIGlmIG1vdW50ZWQsIGZhbHNlIG90aGVyd2lzZS5cbiAgICAg
KiBAcHJvdGVjdGVkXG4gICAgICogQGZpbmFsXG4gICAgICovXG4gICAgaXNNb3VudGVkOiBmdW5j
dGlvbigpIHtcbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24n
KSB7XG4gICAgICAgIHdhcm5pbmcoXG4gICAgICAgICAgdGhpcy5fX2RpZFdhcm5Jc01vdW50ZWQs
XG4gICAgICAgICAgJyVzOiBpc01vdW50ZWQgaXMgZGVwcmVjYXRlZC4gSW5zdGVhZCwgbWFrZSBz
dXJlIHRvIGNsZWFuIHVwICcgK1xuICAgICAgICAgICAgJ3N1YnNjcmlwdGlvbnMgYW5kIHBlbmRp
bmcgcmVxdWVzdHMgaW4gY29tcG9uZW50V2lsbFVubW91bnQgdG8gJyArXG4gICAgICAgICAgICAn
cHJldmVudCBtZW1vcnkgbGVha3MuJyxcbiAgICAgICAgICAodGhpcy5jb25zdHJ1Y3RvciAmJiB0
aGlzLmNvbnN0cnVjdG9yLmRpc3BsYXlOYW1lKSB8fFxuICAgICAgICAgICAgdGhpcy5uYW1lIHx8
XG4gICAgICAgICAgICAnQ29tcG9uZW50J1xuICAgICAgICApO1xuICAgICAgICB0aGlzLl9fZGlk
V2FybklzTW91bnRlZCA9IHRydWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gISF0aGlzLl9faXNN
b3VudGVkO1xuICAgIH1cbiAgfTtcblxuICB2YXIgUmVhY3RDbGFzc0NvbXBvbmVudCA9IGZ1bmN0
aW9uKCkge307XG4gIF9hc3NpZ24oXG4gICAgUmVhY3RDbGFzc0NvbXBvbmVudC5wcm90b3R5cGUs
XG4gICAgUmVhY3RDb21wb25lbnQucHJvdG90eXBlLFxuICAgIFJlYWN0Q2xhc3NNaXhpblxuICAp
O1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgY29tcG9zaXRlIGNvbXBvbmVudCBjbGFzcyBnaXZl
biBhIGNsYXNzIHNwZWNpZmljYXRpb24uXG4gICAqIFNlZSBodHRwczovL2ZhY2Vib29rLmdpdGh1
Yi5pby9yZWFjdC9kb2NzL3RvcC1sZXZlbC1hcGkuaHRtbCNyZWFjdC5jcmVhdGVjbGFzc1xuICAg
KlxuICAgKiBAcGFyYW0ge29iamVjdH0gc3BlYyBDbGFzcyBzcGVjaWZpY2F0aW9uICh3aGljaCBt
dXN0IGRlZmluZSBgcmVuZGVyYCkuXG4gICAqIEByZXR1cm4ge2Z1bmN0aW9ufSBDb21wb25lbnQg
Y29uc3RydWN0b3IgZnVuY3Rpb24uXG4gICAqIEBwdWJsaWNcbiAgICovXG4gIGZ1bmN0aW9uIGNy
ZWF0ZUNsYXNzKHNwZWMpIHtcbiAgICAvLyBUbyBrZWVwIG91ciB3YXJuaW5ncyBtb3JlIHVuZGVy
c3RhbmRhYmxlLCB3ZSdsbCB1c2UgYSBsaXR0bGUgaGFjayBoZXJlIHRvXG4gICAgLy8gZW5zdXJl
IHRoYXQgQ29uc3RydWN0b3IubmFtZSAhPT0gJ0NvbnN0cnVjdG9yJy4gVGhpcyBtYWtlcyBzdXJl
IHdlIGRvbid0XG4gICAgLy8gdW5uZWNlc3NhcmlseSBpZGVudGlmeSBhIGNsYXNzIHdpdGhvdXQg
ZGlzcGxheU5hbWUgYXMgJ0NvbnN0cnVjdG9yJy5cbiAgICB2YXIgQ29uc3RydWN0b3IgPSBpZGVu
dGl0eShmdW5jdGlvbihwcm9wcywgY29udGV4dCwgdXBkYXRlcikge1xuICAgICAgLy8gVGhpcyBj
b25zdHJ1Y3RvciBnZXRzIG92ZXJyaWRkZW4gYnkgbW9ja3MuIFRoZSBhcmd1bWVudCBpcyB1c2Vk
XG4gICAgICAvLyBieSBtb2NrcyB0byBhc3NlcnQgb24gd2hhdCBnZXRzIG1vdW50ZWQuXG5cbiAg
ICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAg
IHdhcm5pbmcoXG4gICAgICAgICAgdGhpcyBpbnN0YW5jZW9mIENvbnN0cnVjdG9yLFxuICAgICAg
ICAgICdTb21ldGhpbmcgaXMgY2FsbGluZyBhIFJlYWN0IGNvbXBvbmVudCBkaXJlY3RseS4gVXNl
IGEgZmFjdG9yeSBvciAnICtcbiAgICAgICAgICAgICdKU1ggaW5zdGVhZC4gU2VlOiBodHRwczov
L2ZiLm1lL3JlYWN0LWxlZ2FjeWZhY3RvcnknXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAg
IC8vIFdpcmUgdXAgYXV0by1iaW5kaW5nXG4gICAgICBpZiAodGhpcy5fX3JlYWN0QXV0b0JpbmRQ
YWlycy5sZW5ndGgpIHtcbiAgICAgICAgYmluZEF1dG9CaW5kTWV0aG9kcyh0aGlzKTtcbiAgICAg
IH1cblxuICAgICAgdGhpcy5wcm9wcyA9IHByb3BzO1xuICAgICAgdGhpcy5jb250ZXh0ID0gY29u
dGV4dDtcbiAgICAgIHRoaXMucmVmcyA9IGVtcHR5T2JqZWN0O1xuICAgICAgdGhpcy51cGRhdGVy
ID0gdXBkYXRlciB8fCBSZWFjdE5vb3BVcGRhdGVRdWV1ZTtcblxuICAgICAgdGhpcy5zdGF0ZSA9
IG51bGw7XG5cbiAgICAgIC8vIFJlYWN0Q2xhc3NlcyBkb2Vzbid0IGhhdmUgY29uc3RydWN0b3Jz
LiBJbnN0ZWFkLCB0aGV5IHVzZSB0aGVcbiAgICAgIC8vIGdldEluaXRpYWxTdGF0ZSBhbmQgY29t
cG9uZW50V2lsbE1vdW50IG1ldGhvZHMgZm9yIGluaXRpYWxpemF0aW9uLlxuXG4gICAgICB2YXIg
aW5pdGlhbFN0YXRlID0gdGhpcy5nZXRJbml0aWFsU3RhdGUgPyB0aGlzLmdldEluaXRpYWxTdGF0
ZSgpIDogbnVsbDtcbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rp
b24nKSB7XG4gICAgICAgIC8vIFdlIGFsbG93IGF1dG8tbW9ja3MgdG8gcHJvY2VlZCBhcyBpZiB0
aGV5J3JlIHJldHVybmluZyBudWxsLlxuICAgICAgICBpZiAoXG4gICAgICAgICAgaW5pdGlhbFN0
YXRlID09PSB1bmRlZmluZWQgJiZcbiAgICAgICAgICB0aGlzLmdldEluaXRpYWxTdGF0ZS5faXNN
b2NrRnVuY3Rpb25cbiAgICAgICAgKSB7XG4gICAgICAgICAgLy8gVGhpcyBpcyBwcm9iYWJseSBi
YWQgcHJhY3RpY2UuIENvbnNpZGVyIHdhcm5pbmcgaGVyZSBhbmRcbiAgICAgICAgICAvLyBkZXBy
ZWNhdGluZyB0aGlzIGNvbnZlbmllbmNlLlxuICAgICAgICAgIGluaXRpYWxTdGF0ZSA9IG51bGw7
XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIF9pbnZhcmlhbnQoXG4gICAgICAgIHR5cGVvZiBp
bml0aWFsU3RhdGUgPT09ICdvYmplY3QnICYmICFBcnJheS5pc0FycmF5KGluaXRpYWxTdGF0ZSks
XG4gICAgICAgICclcy5nZXRJbml0aWFsU3RhdGUoKTogbXVzdCByZXR1cm4gYW4gb2JqZWN0IG9y
IG51bGwnLFxuICAgICAgICBDb25zdHJ1Y3Rvci5kaXNwbGF5TmFtZSB8fCAnUmVhY3RDb21wb3Np
dGVDb21wb25lbnQnXG4gICAgICApO1xuXG4gICAgICB0aGlzLnN0YXRlID0gaW5pdGlhbFN0YXRl
O1xuICAgIH0pO1xuICAgIENvbnN0cnVjdG9yLnByb3RvdHlwZSA9IG5ldyBSZWFjdENsYXNzQ29t
cG9uZW50KCk7XG4gICAgQ29uc3RydWN0b3IucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gQ29uc3Ry
dWN0b3I7XG4gICAgQ29uc3RydWN0b3IucHJvdG90eXBlLl9fcmVhY3RBdXRvQmluZFBhaXJzID0g
W107XG5cbiAgICBpbmplY3RlZE1peGlucy5mb3JFYWNoKG1peFNwZWNJbnRvQ29tcG9uZW50LmJp
bmQobnVsbCwgQ29uc3RydWN0b3IpKTtcblxuICAgIG1peFNwZWNJbnRvQ29tcG9uZW50KENvbnN0
cnVjdG9yLCBJc01vdW50ZWRQcmVNaXhpbik7XG4gICAgbWl4U3BlY0ludG9Db21wb25lbnQoQ29u
c3RydWN0b3IsIHNwZWMpO1xuICAgIG1peFNwZWNJbnRvQ29tcG9uZW50KENvbnN0cnVjdG9yLCBJ
c01vdW50ZWRQb3N0TWl4aW4pO1xuXG4gICAgLy8gSW5pdGlhbGl6ZSB0aGUgZGVmYXVsdFByb3Bz
IHByb3BlcnR5IGFmdGVyIGFsbCBtaXhpbnMgaGF2ZSBiZWVuIG1lcmdlZC5cbiAgICBpZiAoQ29u
c3RydWN0b3IuZ2V0RGVmYXVsdFByb3BzKSB7XG4gICAgICBDb25zdHJ1Y3Rvci5kZWZhdWx0UHJv
cHMgPSBDb25zdHJ1Y3Rvci5nZXREZWZhdWx0UHJvcHMoKTtcbiAgICB9XG5cbiAgICBpZiAocHJv
Y2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgLy8gVGhpcyBpcyBh
IHRhZyB0byBpbmRpY2F0ZSB0aGF0IHRoZSB1c2Ugb2YgdGhlc2UgbWV0aG9kIG5hbWVzIGlzIG9r
LFxuICAgICAgLy8gc2luY2UgaXQncyB1c2VkIHdpdGggY3JlYXRlQ2xhc3MuIElmIGl0J3Mgbm90
LCB0aGVuIGl0J3MgbGlrZWx5IGFcbiAgICAgIC8vIG1pc3Rha2Ugc28gd2UnbGwgd2FybiB5b3Ug
dG8gdXNlIHRoZSBzdGF0aWMgcHJvcGVydHksIHByb3BlcnR5XG4gICAgICAvLyBpbml0aWFsaXpl
ciBvciBjb25zdHJ1Y3RvciByZXNwZWN0aXZlbHkuXG4gICAgICBpZiAoQ29uc3RydWN0b3IuZ2V0
RGVmYXVsdFByb3BzKSB7XG4gICAgICAgIENvbnN0cnVjdG9yLmdldERlZmF1bHRQcm9wcy5pc1Jl
YWN0Q2xhc3NBcHByb3ZlZCA9IHt9O1xuICAgICAgfVxuICAgICAgaWYgKENvbnN0cnVjdG9yLnBy
b3RvdHlwZS5nZXRJbml0aWFsU3RhdGUpIHtcbiAgICAgICAgQ29uc3RydWN0b3IucHJvdG90eXBl
LmdldEluaXRpYWxTdGF0ZS5pc1JlYWN0Q2xhc3NBcHByb3ZlZCA9IHt9O1xuICAgICAgfVxuICAg
IH1cblxuICAgIF9pbnZhcmlhbnQoXG4gICAgICBDb25zdHJ1Y3Rvci5wcm90b3R5cGUucmVuZGVy
LFxuICAgICAgJ2NyZWF0ZUNsYXNzKC4uLik6IENsYXNzIHNwZWNpZmljYXRpb24gbXVzdCBpbXBs
ZW1lbnQgYSBgcmVuZGVyYCBtZXRob2QuJ1xuICAgICk7XG5cbiAgICBpZiAocHJvY2Vzcy5lbnYu
Tk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgd2FybmluZyhcbiAgICAgICAgIUNv
bnN0cnVjdG9yLnByb3RvdHlwZS5jb21wb25lbnRTaG91bGRVcGRhdGUsXG4gICAgICAgICclcyBo
YXMgYSBtZXRob2QgY2FsbGVkICcgK1xuICAgICAgICAgICdjb21wb25lbnRTaG91bGRVcGRhdGUo
KS4gRGlkIHlvdSBtZWFuIHNob3VsZENvbXBvbmVudFVwZGF0ZSgpPyAnICtcbiAgICAgICAgICAn
VGhlIG5hbWUgaXMgcGhyYXNlZCBhcyBhIHF1ZXN0aW9uIGJlY2F1c2UgdGhlIGZ1bmN0aW9uIGlz
ICcgK1xuICAgICAgICAgICdleHBlY3RlZCB0byByZXR1cm4gYSB2YWx1ZS4nLFxuICAgICAgICBz
cGVjLmRpc3BsYXlOYW1lIHx8ICdBIGNvbXBvbmVudCdcbiAgICAgICk7XG4gICAgICB3YXJuaW5n
KFxuICAgICAgICAhQ29uc3RydWN0b3IucHJvdG90eXBlLmNvbXBvbmVudFdpbGxSZWNpZXZlUHJv
cHMsXG4gICAgICAgICclcyBoYXMgYSBtZXRob2QgY2FsbGVkICcgK1xuICAgICAgICAgICdjb21w
b25lbnRXaWxsUmVjaWV2ZVByb3BzKCkuIERpZCB5b3UgbWVhbiBjb21wb25lbnRXaWxsUmVjZWl2
ZVByb3BzKCk/JyxcbiAgICAgICAgc3BlYy5kaXNwbGF5TmFtZSB8fCAnQSBjb21wb25lbnQnXG4g
ICAgICApO1xuICAgIH1cblxuICAgIC8vIFJlZHVjZSB0aW1lIHNwZW50IGRvaW5nIGxvb2t1cHMg
Ynkgc2V0dGluZyB0aGVzZSBvbiB0aGUgcHJvdG90eXBlLlxuICAgIGZvciAodmFyIG1ldGhvZE5h
bWUgaW4gUmVhY3RDbGFzc0ludGVyZmFjZSkge1xuICAgICAgaWYgKCFDb25zdHJ1Y3Rvci5wcm90
b3R5cGVbbWV0aG9kTmFtZV0pIHtcbiAgICAgICAgQ29uc3RydWN0b3IucHJvdG90eXBlW21ldGhv
ZE5hbWVdID0gbnVsbDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gQ29uc3RydWN0b3I7
XG4gIH1cblxuICByZXR1cm4gY3JlYXRlQ2xhc3M7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZmFj
dG9yeTtcblxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiog
Li9+L2NyZWF0ZS1yZWFjdC1jbGFzcy9mYWN0b3J5LmpzXG4gKiogbW9kdWxlIGlkID0gOTdcbiAq
KiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIlwidXNlIHN0cmljdFwiO1xuXG4vKipcbiAqIENv
cHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyBy
ZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBC
U0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9v
dCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICog
b2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUg
c2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHR5cGVjaGVja3NcbiAqL1xuXG52YXIgX2h5cGhlblBh
dHRlcm4gPSAvLSguKS9nO1xuXG4vKipcbiAqIENhbWVsY2FzZXMgYSBoeXBoZW5hdGVkIHN0cmlu
ZywgZm9yIGV4YW1wbGU6XG4gKlxuICogICA+IGNhbWVsaXplKCdiYWNrZ3JvdW5kLWNvbG9yJylc
biAqICAgPCBcImJhY2tncm91bmRDb2xvclwiXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHN0cmlu
Z1xuICogQHJldHVybiB7c3RyaW5nfVxuICovXG5mdW5jdGlvbiBjYW1lbGl6ZShzdHJpbmcpIHtc
biAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKF9oeXBoZW5QYXR0ZXJuLCBmdW5jdGlvbiAoXywgY2hh
cmFjdGVyKSB7XG4gICAgcmV0dXJuIGNoYXJhY3Rlci50b1VwcGVyQ2FzZSgpO1xuICB9KTtcbn1c
blxubW9kdWxlLmV4cG9ydHMgPSBjYW1lbGl6ZTtcblxuXG4vKioqKioqKioqKioqKioqKipcbiAq
KiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9mYmpzL2xpYi9jYW1lbGl6ZS5qc1xuICoqIG1vZHVs
ZSBpZCA9IDk4XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENvcHlyaWdo
dCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZl
ZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5
bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJl
Y3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0
ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBk
aXJlY3RvcnkuXG4gKlxuICogQHR5cGVjaGVja3NcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZh
ciBjYW1lbGl6ZSA9IHJlcXVpcmUoJy4vY2FtZWxpemUnKTtcblxudmFyIG1zUGF0dGVybiA9IC9e
LW1zLS87XG5cbi8qKlxuICogQ2FtZWxjYXNlcyBhIGh5cGhlbmF0ZWQgQ1NTIHByb3BlcnR5IG5h
bWUsIGZvciBleGFtcGxlOlxuICpcbiAqICAgPiBjYW1lbGl6ZVN0eWxlTmFtZSgnYmFja2dyb3Vu
ZC1jb2xvcicpXG4gKiAgIDwgXCJiYWNrZ3JvdW5kQ29sb3JcIlxuICogICA+IGNhbWVsaXplU3R5
bGVOYW1lKCctbW96LXRyYW5zaXRpb24nKVxuICogICA8IFwiTW96VHJhbnNpdGlvblwiXG4gKiAg
ID4gY2FtZWxpemVTdHlsZU5hbWUoJy1tcy10cmFuc2l0aW9uJylcbiAqICAgPCBcIm1zVHJhbnNp
dGlvblwiXG4gKlxuICogQXMgQW5kaSBTbWl0aCBzdWdnZXN0c1xuICogKGh0dHA6Ly93d3cuYW5k
aXNtaXRoLmNvbS9ibG9nLzIwMTIvMDIvbW9kZXJuaXpyLXByZWZpeGVkLyksIGFuIGAtbXNgIHBy
ZWZpeFxuICogaXMgY29udmVydGVkIHRvIGxvd2VyY2FzZSBgbXNgLlxuICpcbiAqIEBwYXJhbSB7
c3RyaW5nfSBzdHJpbmdcbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqL1xuZnVuY3Rpb24gY2FtZWxp
emVTdHlsZU5hbWUoc3RyaW5nKSB7XG4gIHJldHVybiBjYW1lbGl6ZShzdHJpbmcucmVwbGFjZSht
c1BhdHRlcm4sICdtcy0nKSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY2FtZWxpemVTdHlsZU5h
bWU7XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34v
ZmJqcy9saWIvY2FtZWxpemVTdHlsZU5hbWUuanNcbiAqKiBtb2R1bGUgaWQgPSA5OVxuICoqIG1v
ZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiJ3VzZSBzdHJpY3QnO1xuXG4vKipcbiAqIENvcHlyaWdo
dCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZl
ZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5
bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJl
Y3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0
ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBk
aXJlY3RvcnkuXG4gKlxuICogXG4gKi9cblxudmFyIGlzVGV4dE5vZGUgPSByZXF1aXJlKCcuL2lz
VGV4dE5vZGUnKTtcblxuLyplc2xpbnQtZGlzYWJsZSBuby1iaXR3aXNlICovXG5cbi8qKlxuICog
Q2hlY2tzIGlmIGEgZ2l2ZW4gRE9NIG5vZGUgY29udGFpbnMgb3IgaXMgYW5vdGhlciBET00gbm9k
ZS5cbiAqL1xuZnVuY3Rpb24gY29udGFpbnNOb2RlKG91dGVyTm9kZSwgaW5uZXJOb2RlKSB7XG4g
IGlmICghb3V0ZXJOb2RlIHx8ICFpbm5lck5vZGUpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH0g
ZWxzZSBpZiAob3V0ZXJOb2RlID09PSBpbm5lck5vZGUpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAg
fSBlbHNlIGlmIChpc1RleHROb2RlKG91dGVyTm9kZSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4g
IH0gZWxzZSBpZiAoaXNUZXh0Tm9kZShpbm5lck5vZGUpKSB7XG4gICAgcmV0dXJuIGNvbnRhaW5z
Tm9kZShvdXRlck5vZGUsIGlubmVyTm9kZS5wYXJlbnROb2RlKTtcbiAgfSBlbHNlIGlmICgnY29u
dGFpbnMnIGluIG91dGVyTm9kZSkge1xuICAgIHJldHVybiBvdXRlck5vZGUuY29udGFpbnMoaW5u
ZXJOb2RlKTtcbiAgfSBlbHNlIGlmIChvdXRlck5vZGUuY29tcGFyZURvY3VtZW50UG9zaXRpb24p
IHtcbiAgICByZXR1cm4gISEob3V0ZXJOb2RlLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGlubmVy
Tm9kZSkgJiAxNik7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbm1v
ZHVsZS5leHBvcnRzID0gY29udGFpbnNOb2RlO1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoq
IFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L2ZianMvbGliL2NvbnRhaW5zTm9kZS5qc1xuICoqIG1v
ZHVsZSBpZCA9IDEwMFxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiJ3VzZSBzdHJpY3Qn
O1xuXG4vKipcbiAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxu
ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vu
c2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0Ug
ZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRp
b25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVO
VFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHR5cGVjaGVja3NcbiAqL1xu
XG52YXIgaW52YXJpYW50ID0gcmVxdWlyZSgnLi9pbnZhcmlhbnQnKTtcblxuLyoqXG4gKiBDb252
ZXJ0IGFycmF5LWxpa2Ugb2JqZWN0cyB0byBhcnJheXMuXG4gKlxuICogVGhpcyBBUEkgYXNzdW1l
cyB0aGUgY2FsbGVyIGtub3dzIHRoZSBjb250ZW50cyBvZiB0aGUgZGF0YSB0eXBlLiBGb3IgbGVz
c1xuICogd2VsbCBkZWZpbmVkIGlucHV0cyB1c2UgY3JlYXRlQXJyYXlGcm9tTWl4ZWQuXG4gKlxu
ICogQHBhcmFtIHtvYmplY3R8ZnVuY3Rpb258ZmlsZWxpc3R9IG9ialxuICogQHJldHVybiB7YXJy
YXl9XG4gKi9cbmZ1bmN0aW9uIHRvQXJyYXkob2JqKSB7XG4gIHZhciBsZW5ndGggPSBvYmoubGVu
Z3RoO1xuXG4gIC8vIFNvbWUgYnJvd3NlcnMgYnVpbHRpbiBvYmplY3RzIGNhbiByZXBvcnQgdHlw
ZW9mICdmdW5jdGlvbicgKGUuZy4gTm9kZUxpc3RcbiAgLy8gaW4gb2xkIHZlcnNpb25zIG9mIFNh
ZmFyaSkuXG4gICEoIUFycmF5LmlzQXJyYXkob2JqKSAmJiAodHlwZW9mIG9iaiA9PT0gJ29iamVj
dCcgfHwgdHlwZW9mIG9iaiA9PT0gJ2Z1bmN0aW9uJykpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYg
IT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ3RvQXJyYXk6IEFycmF5LWxpa2Ug
b2JqZWN0IGV4cGVjdGVkJykgOiBpbnZhcmlhbnQoZmFsc2UpIDogdm9pZCAwO1xuXG4gICEodHlw
ZW9mIGxlbmd0aCA9PT0gJ251bWJlcicpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9k
dWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ3RvQXJyYXk6IE9iamVjdCBuZWVkcyBhIGxlbmd0
aCBwcm9wZXJ0eScpIDogaW52YXJpYW50KGZhbHNlKSA6IHZvaWQgMDtcblxuICAhKGxlbmd0aCA9
PT0gMCB8fCBsZW5ndGggLSAxIGluIG9iaikgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3By
b2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAndG9BcnJheTogT2JqZWN0IHNob3VsZCBoYXZl
IGtleXMgZm9yIGluZGljZXMnKSA6IGludmFyaWFudChmYWxzZSkgOiB2b2lkIDA7XG5cbiAgISh0
eXBlb2Ygb2JqLmNhbGxlZSAhPT0gJ2Z1bmN0aW9uJykgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAh
PT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAndG9BcnJheTogT2JqZWN0IGNhblxc
J3QgYmUgYGFyZ3VtZW50c2AuIFVzZSByZXN0IHBhcmFtcyAnICsgJyhmdW5jdGlvbiguLi5hcmdz
KSB7fSkgb3IgQXJyYXkuZnJvbSgpIGluc3RlYWQuJykgOiBpbnZhcmlhbnQoZmFsc2UpIDogdm9p
ZCAwO1xuXG4gIC8vIE9sZCBJRSBkb2Vzbid0IGdpdmUgY29sbGVjdGlvbnMgYWNjZXNzIHRvIGhh
c093blByb3BlcnR5LiBBc3N1bWUgaW5wdXRzXG4gIC8vIHdpdGhvdXQgbWV0aG9kIHdpbGwgdGhy
b3cgZHVyaW5nIHRoZSBzbGljZSBjYWxsIGFuZCBza2lwIHN0cmFpZ2h0IHRvIHRoZVxuICAvLyBm
YWxsYmFjay5cbiAgaWYgKG9iai5oYXNPd25Qcm9wZXJ0eSkge1xuICAgIHRyeSB7XG4gICAgICBy
ZXR1cm4gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwob2JqKTtcbiAgICB9IGNhdGNoIChlKSB7
XG4gICAgICAvLyBJRSA8IDkgZG9lcyBub3Qgc3VwcG9ydCBBcnJheSNzbGljZSBvbiBjb2xsZWN0
aW9ucyBvYmplY3RzXG4gICAgfVxuICB9XG5cbiAgLy8gRmFsbCBiYWNrIHRvIGNvcHlpbmcga2V5
IGJ5IGtleS4gVGhpcyBhc3N1bWVzIGFsbCBrZXlzIGhhdmUgYSB2YWx1ZSxcbiAgLy8gc28gd2ls
bCBub3QgcHJlc2VydmUgc3BhcnNlbHkgcG9wdWxhdGVkIGlucHV0cy5cbiAgdmFyIHJldCA9IEFy
cmF5KGxlbmd0aCk7XG4gIGZvciAodmFyIGlpID0gMDsgaWkgPCBsZW5ndGg7IGlpKyspIHtcbiAg
ICByZXRbaWldID0gb2JqW2lpXTtcbiAgfVxuICByZXR1cm4gcmV0O1xufVxuXG4vKipcbiAqIFBl
cmZvcm0gYSBoZXVyaXN0aWMgdGVzdCB0byBkZXRlcm1pbmUgaWYgYW4gb2JqZWN0IGlzIFwiYXJy
YXktbGlrZVwiLlxuICpcbiAqICAgQSBtb25rIGFza2VkIEpvc2h1LCBhIFplbiBtYXN0ZXIsIFwi
SGFzIGEgZG9nIEJ1ZGRoYSBuYXR1cmU/XCJcbiAqICAgSm9zaHUgcmVwbGllZDogXCJNdS5cIlxu
ICpcbiAqIFRoaXMgZnVuY3Rpb24gZGV0ZXJtaW5lcyBpZiBpdHMgYXJndW1lbnQgaGFzIFwiYXJy
YXkgbmF0dXJlXCI6IGl0IHJldHVybnNcbiAqIHRydWUgaWYgdGhlIGFyZ3VtZW50IGlzIGFuIGFj
dHVhbCBhcnJheSwgYW4gYGFyZ3VtZW50cycgb2JqZWN0LCBvciBhblxuICogSFRNTENvbGxlY3Rp
b24gKGUuZy4gbm9kZS5jaGlsZE5vZGVzIG9yIG5vZGUuZ2V0RWxlbWVudHNCeVRhZ05hbWUoKSku
XG4gKlxuICogSXQgd2lsbCByZXR1cm4gZmFsc2UgZm9yIG90aGVyIGFycmF5LWxpa2Ugb2JqZWN0
cyBsaWtlIEZpbGVsaXN0LlxuICpcbiAqIEBwYXJhbSB7Kn0gb2JqXG4gKiBAcmV0dXJuIHtib29s
ZWFufVxuICovXG5mdW5jdGlvbiBoYXNBcnJheU5hdHVyZShvYmopIHtcbiAgcmV0dXJuIChcbiAg
ICAvLyBub3QgbnVsbC9mYWxzZVxuICAgICEhb2JqICYmIChcbiAgICAvLyBhcnJheXMgYXJlIG9i
amVjdHMsIE5vZGVMaXN0cyBhcmUgZnVuY3Rpb25zIGluIFNhZmFyaVxuICAgIHR5cGVvZiBvYmog
PT0gJ29iamVjdCcgfHwgdHlwZW9mIG9iaiA9PSAnZnVuY3Rpb24nKSAmJlxuICAgIC8vIHF1YWNr
cyBsaWtlIGFuIGFycmF5XG4gICAgJ2xlbmd0aCcgaW4gb2JqICYmXG4gICAgLy8gbm90IHdpbmRv
d1xuICAgICEoJ3NldEludGVydmFsJyBpbiBvYmopICYmXG4gICAgLy8gbm8gRE9NIG5vZGUgc2hv
dWxkIGJlIGNvbnNpZGVyZWQgYW4gYXJyYXktbGlrZVxuICAgIC8vIGEgJ3NlbGVjdCcgZWxlbWVu
dCBoYXMgJ2xlbmd0aCcgYW5kICdpdGVtJyBwcm9wZXJ0aWVzIG9uIElFOFxuICAgIHR5cGVvZiBv
Ymoubm9kZVR5cGUgIT0gJ251bWJlcicgJiYgKFxuICAgIC8vIGEgcmVhbCBhcnJheVxuICAgIEFy
cmF5LmlzQXJyYXkob2JqKSB8fFxuICAgIC8vIGFyZ3VtZW50c1xuICAgICdjYWxsZWUnIGluIG9i
aiB8fFxuICAgIC8vIEhUTUxDb2xsZWN0aW9uL05vZGVMaXN0XG4gICAgJ2l0ZW0nIGluIG9iailc
biAgKTtcbn1cblxuLyoqXG4gKiBFbnN1cmUgdGhhdCB0aGUgYXJndW1lbnQgaXMgYW4gYXJyYXkg
Ynkgd3JhcHBpbmcgaXQgaW4gYW4gYXJyYXkgaWYgaXQgaXMgbm90LlxuICogQ3JlYXRlcyBhIGNv
cHkgb2YgdGhlIGFyZ3VtZW50IGlmIGl0IGlzIGFscmVhZHkgYW4gYXJyYXkuXG4gKlxuICogVGhp
cyBpcyBtb3N0bHkgdXNlZnVsIGlkaW9tYXRpY2FsbHk6XG4gKlxuICogICB2YXIgY3JlYXRlQXJy
YXlGcm9tTWl4ZWQgPSByZXF1aXJlKCdjcmVhdGVBcnJheUZyb21NaXhlZCcpO1xuICpcbiAqICAg
ZnVuY3Rpb24gdGFrZXNPbmVPck1vcmVUaGluZ3ModGhpbmdzKSB7XG4gKiAgICAgdGhpbmdzID0g
Y3JlYXRlQXJyYXlGcm9tTWl4ZWQodGhpbmdzKTtcbiAqICAgICAuLi5cbiAqICAgfVxuICpcbiAq
IFRoaXMgYWxsb3dzIHlvdSB0byB0cmVhdCBgdGhpbmdzJyBhcyBhbiBhcnJheSwgYnV0IGFjY2Vw
dCBzY2FsYXJzIGluIHRoZSBBUEkuXG4gKlxuICogSWYgeW91IG5lZWQgdG8gY29udmVydCBhbiBh
cnJheS1saWtlIG9iamVjdCwgbGlrZSBgYXJndW1lbnRzYCwgaW50byBhbiBhcnJheVxuICogdXNl
IHRvQXJyYXkgaW5zdGVhZC5cbiAqXG4gKiBAcGFyYW0geyp9IG9ialxuICogQHJldHVybiB7YXJy
YXl9XG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZUFycmF5RnJvbU1peGVkKG9iaikge1xuICBpZiAoIWhh
c0FycmF5TmF0dXJlKG9iaikpIHtcbiAgICByZXR1cm4gW29ial07XG4gIH0gZWxzZSBpZiAoQXJy
YXkuaXNBcnJheShvYmopKSB7XG4gICAgcmV0dXJuIG9iai5zbGljZSgpO1xuICB9IGVsc2Uge1xu
ICAgIHJldHVybiB0b0FycmF5KG9iaik7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjcmVh
dGVBcnJheUZyb21NaXhlZDtcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZP
T1RFUlxuICoqIC4vfi9mYmpzL2xpYi9jcmVhdGVBcnJheUZyb21NaXhlZC5qc1xuICoqIG1vZHVs
ZSBpZCA9IDEwMVxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiJ3VzZSBzdHJpY3QnO1xu
XG4vKipcbiAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICog
QWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2Vk
IHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmls
ZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25h
bCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMg
ZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHR5cGVjaGVja3NcbiAqL1xuXG4v
KmVzbGludC1kaXNhYmxlIGZiLXd3dy91bnNhZmUtaHRtbCovXG5cbnZhciBFeGVjdXRpb25FbnZp
cm9ubWVudCA9IHJlcXVpcmUoJy4vRXhlY3V0aW9uRW52aXJvbm1lbnQnKTtcblxudmFyIGNyZWF0
ZUFycmF5RnJvbU1peGVkID0gcmVxdWlyZSgnLi9jcmVhdGVBcnJheUZyb21NaXhlZCcpO1xudmFy
IGdldE1hcmt1cFdyYXAgPSByZXF1aXJlKCcuL2dldE1hcmt1cFdyYXAnKTtcbnZhciBpbnZhcmlh
bnQgPSByZXF1aXJlKCcuL2ludmFyaWFudCcpO1xuXG4vKipcbiAqIER1bW15IGNvbnRhaW5lciB1
c2VkIHRvIHJlbmRlciBhbGwgbWFya3VwLlxuICovXG52YXIgZHVtbXlOb2RlID0gRXhlY3V0aW9u
RW52aXJvbm1lbnQuY2FuVXNlRE9NID8gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JykgOiBu
dWxsO1xuXG4vKipcbiAqIFBhdHRlcm4gdXNlZCBieSBgZ2V0Tm9kZU5hbWVgLlxuICovXG52YXIg
bm9kZU5hbWVQYXR0ZXJuID0gL15cXHMqPChcXHcrKS87XG5cbi8qKlxuICogRXh0cmFjdHMgdGhl
IGBub2RlTmFtZWAgb2YgdGhlIGZpcnN0IGVsZW1lbnQgaW4gYSBzdHJpbmcgb2YgbWFya3VwLlxu
ICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBtYXJrdXAgU3RyaW5nIG9mIG1hcmt1cC5cbiAqIEByZXR1
cm4gez9zdHJpbmd9IE5vZGUgbmFtZSBvZiB0aGUgc3VwcGxpZWQgbWFya3VwLlxuICovXG5mdW5j
dGlvbiBnZXROb2RlTmFtZShtYXJrdXApIHtcbiAgdmFyIG5vZGVOYW1lTWF0Y2ggPSBtYXJrdXAu
bWF0Y2gobm9kZU5hbWVQYXR0ZXJuKTtcbiAgcmV0dXJuIG5vZGVOYW1lTWF0Y2ggJiYgbm9kZU5h
bWVNYXRjaFsxXS50b0xvd2VyQ2FzZSgpO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYW4gYXJyYXkg
Y29udGFpbmluZyB0aGUgbm9kZXMgcmVuZGVyZWQgZnJvbSB0aGUgc3VwcGxpZWQgbWFya3VwLiBU
aGVcbiAqIG9wdGlvbmFsbHkgc3VwcGxpZWQgYGhhbmRsZVNjcmlwdGAgZnVuY3Rpb24gd2lsbCBi
ZSBpbnZva2VkIG9uY2UgZm9yIGVhY2hcbiAqIDxzY3JpcHQ+IGVsZW1lbnQgdGhhdCBpcyByZW5k
ZXJlZC4gSWYgbm8gYGhhbmRsZVNjcmlwdGAgZnVuY3Rpb24gaXMgc3VwcGxpZWQsXG4gKiBhbiBl
eGNlcHRpb24gaXMgdGhyb3duIGlmIGFueSA8c2NyaXB0PiBlbGVtZW50cyBhcmUgcmVuZGVyZWQu
XG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IG1hcmt1cCBBIHN0cmluZyBvZiB2YWxpZCBIVE1MIG1h
cmt1cC5cbiAqIEBwYXJhbSB7P2Z1bmN0aW9ufSBoYW5kbGVTY3JpcHQgSW52b2tlZCBvbmNlIGZv
ciBlYWNoIHJlbmRlcmVkIDxzY3JpcHQ+LlxuICogQHJldHVybiB7YXJyYXk8RE9NRWxlbWVudHxE
T01UZXh0Tm9kZT59IEFuIGFycmF5IG9mIHJlbmRlcmVkIG5vZGVzLlxuICovXG5mdW5jdGlvbiBj
cmVhdGVOb2Rlc0Zyb21NYXJrdXAobWFya3VwLCBoYW5kbGVTY3JpcHQpIHtcbiAgdmFyIG5vZGUg
PSBkdW1teU5vZGU7XG4gICEhIWR1bW15Tm9kZSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAn
cHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdjcmVhdGVOb2Rlc0Zyb21NYXJrdXAgZHVt
bXkgbm90IGluaXRpYWxpemVkJykgOiBpbnZhcmlhbnQoZmFsc2UpIDogdm9pZCAwO1xuICB2YXIg
bm9kZU5hbWUgPSBnZXROb2RlTmFtZShtYXJrdXApO1xuXG4gIHZhciB3cmFwID0gbm9kZU5hbWUg
JiYgZ2V0TWFya3VwV3JhcChub2RlTmFtZSk7XG4gIGlmICh3cmFwKSB7XG4gICAgbm9kZS5pbm5l
ckhUTUwgPSB3cmFwWzFdICsgbWFya3VwICsgd3JhcFsyXTtcblxuICAgIHZhciB3cmFwRGVwdGgg
PSB3cmFwWzBdO1xuICAgIHdoaWxlICh3cmFwRGVwdGgtLSkge1xuICAgICAgbm9kZSA9IG5vZGUu
bGFzdENoaWxkO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBub2RlLmlubmVySFRNTCA9IG1hcmt1
cDtcbiAgfVxuXG4gIHZhciBzY3JpcHRzID0gbm9kZS5nZXRFbGVtZW50c0J5VGFnTmFtZSgnc2Ny
aXB0Jyk7XG4gIGlmIChzY3JpcHRzLmxlbmd0aCkge1xuICAgICFoYW5kbGVTY3JpcHQgPyBwcm9j
ZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnY3Jl
YXRlTm9kZXNGcm9tTWFya3VwKC4uLik6IFVuZXhwZWN0ZWQgPHNjcmlwdD4gZWxlbWVudCByZW5k
ZXJlZC4nKSA6IGludmFyaWFudChmYWxzZSkgOiB2b2lkIDA7XG4gICAgY3JlYXRlQXJyYXlGcm9t
TWl4ZWQoc2NyaXB0cykuZm9yRWFjaChoYW5kbGVTY3JpcHQpO1xuICB9XG5cbiAgdmFyIG5vZGVz
ID0gQXJyYXkuZnJvbShub2RlLmNoaWxkTm9kZXMpO1xuICB3aGlsZSAobm9kZS5sYXN0Q2hpbGQp
IHtcbiAgICBub2RlLnJlbW92ZUNoaWxkKG5vZGUubGFzdENoaWxkKTtcbiAgfVxuICByZXR1cm4g
bm9kZXM7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY3JlYXRlTm9kZXNGcm9tTWFya3VwO1xuXG5c
bi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L2ZianMvbGli
L2NyZWF0ZU5vZGVzRnJvbU1hcmt1cC5qc1xuICoqIG1vZHVsZSBpZCA9IDEwMlxuICoqIG1vZHVs
ZSBjaHVua3MgPSAwXG4gKiovIiwiJ3VzZSBzdHJpY3QnO1xuXG4vKipcbiAqIENvcHlyaWdodCAo
YykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5c
biAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUg
bGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rv
cnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50
IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJl
Y3RvcnkuXG4gKlxuICovXG5cbi8qZXNsaW50LWRpc2FibGUgZmItd3d3L3Vuc2FmZS1odG1sICov
XG5cbnZhciBFeGVjdXRpb25FbnZpcm9ubWVudCA9IHJlcXVpcmUoJy4vRXhlY3V0aW9uRW52aXJv
bm1lbnQnKTtcblxudmFyIGludmFyaWFudCA9IHJlcXVpcmUoJy4vaW52YXJpYW50Jyk7XG5cbi8q
KlxuICogRHVtbXkgY29udGFpbmVyIHVzZWQgdG8gZGV0ZWN0IHdoaWNoIHdyYXBzIGFyZSBuZWNl
c3NhcnkuXG4gKi9cbnZhciBkdW1teU5vZGUgPSBFeGVjdXRpb25FbnZpcm9ubWVudC5jYW5Vc2VE
T00gPyBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKSA6IG51bGw7XG5cbi8qKlxuICogU29t
ZSBicm93c2VycyBjYW5ub3QgdXNlIGBpbm5lckhUTUxgIHRvIHJlbmRlciBjZXJ0YWluIGVsZW1l
bnRzIHN0YW5kYWxvbmUsXG4gKiBzbyB3ZSB3cmFwIHRoZW0sIHJlbmRlciB0aGUgd3JhcHBlZCBu
b2RlcywgdGhlbiBleHRyYWN0IHRoZSBkZXNpcmVkIG5vZGUuXG4gKlxuICogSW4gSUU4LCBjZXJ0
YWluIGVsZW1lbnRzIGNhbm5vdCByZW5kZXIgYWxvbmUsIHNvIHdyYXAgYWxsIGVsZW1lbnRzICgn
KicpLlxuICovXG5cbnZhciBzaG91bGRXcmFwID0ge307XG5cbnZhciBzZWxlY3RXcmFwID0gWzEs
ICc8c2VsZWN0IG11bHRpcGxlPVwidHJ1ZVwiPicsICc8L3NlbGVjdD4nXTtcbnZhciB0YWJsZVdy
YXAgPSBbMSwgJzx0YWJsZT4nLCAnPC90YWJsZT4nXTtcbnZhciB0cldyYXAgPSBbMywgJzx0YWJs
ZT48dGJvZHk+PHRyPicsICc8L3RyPjwvdGJvZHk+PC90YWJsZT4nXTtcblxudmFyIHN2Z1dyYXAg
PSBbMSwgJzxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPicsICc8L3N2
Zz4nXTtcblxudmFyIG1hcmt1cFdyYXAgPSB7XG4gICcqJzogWzEsICc/PGRpdj4nLCAnPC9kaXY+
J10sXG5cbiAgJ2FyZWEnOiBbMSwgJzxtYXA+JywgJzwvbWFwPiddLFxuICAnY29sJzogWzIsICc8
dGFibGU+PHRib2R5PjwvdGJvZHk+PGNvbGdyb3VwPicsICc8L2NvbGdyb3VwPjwvdGFibGU+J10s
XG4gICdsZWdlbmQnOiBbMSwgJzxmaWVsZHNldD4nLCAnPC9maWVsZHNldD4nXSxcbiAgJ3BhcmFt
JzogWzEsICc8b2JqZWN0PicsICc8L29iamVjdD4nXSxcbiAgJ3RyJzogWzIsICc8dGFibGU+PHRi
b2R5PicsICc8L3Rib2R5PjwvdGFibGU+J10sXG5cbiAgJ29wdGdyb3VwJzogc2VsZWN0V3JhcCxc
biAgJ29wdGlvbic6IHNlbGVjdFdyYXAsXG5cbiAgJ2NhcHRpb24nOiB0YWJsZVdyYXAsXG4gICdj
b2xncm91cCc6IHRhYmxlV3JhcCxcbiAgJ3Rib2R5JzogdGFibGVXcmFwLFxuICAndGZvb3QnOiB0
YWJsZVdyYXAsXG4gICd0aGVhZCc6IHRhYmxlV3JhcCxcblxuICAndGQnOiB0cldyYXAsXG4gICd0
aCc6IHRyV3JhcFxufTtcblxuLy8gSW5pdGlhbGl6ZSB0aGUgU1ZHIGVsZW1lbnRzIHNpbmNlIHdl
IGtub3cgdGhleSdsbCBhbHdheXMgbmVlZCB0byBiZSB3cmFwcGVkXG4vLyBjb25zaXN0ZW50bHku
IElmIHRoZXkgYXJlIGNyZWF0ZWQgaW5zaWRlIGEgPGRpdj4gdGhleSB3aWxsIGJlIGluaXRpYWxp
emVkIGluXG4vLyB0aGUgd3JvbmcgbmFtZXNwYWNlIChhbmQgd2lsbCBub3QgZGlzcGxheSkuXG52
YXIgc3ZnRWxlbWVudHMgPSBbJ2NpcmNsZScsICdjbGlwUGF0aCcsICdkZWZzJywgJ2VsbGlwc2Un
LCAnZycsICdpbWFnZScsICdsaW5lJywgJ2xpbmVhckdyYWRpZW50JywgJ21hc2snLCAncGF0aCcs
ICdwYXR0ZXJuJywgJ3BvbHlnb24nLCAncG9seWxpbmUnLCAncmFkaWFsR3JhZGllbnQnLCAncmVj
dCcsICdzdG9wJywgJ3RleHQnLCAndHNwYW4nXTtcbnN2Z0VsZW1lbnRzLmZvckVhY2goZnVuY3Rp
b24gKG5vZGVOYW1lKSB7XG4gIG1hcmt1cFdyYXBbbm9kZU5hbWVdID0gc3ZnV3JhcDtcbiAgc2hv
dWxkV3JhcFtub2RlTmFtZV0gPSB0cnVlO1xufSk7XG5cbi8qKlxuICogR2V0cyB0aGUgbWFya3Vw
IHdyYXAgY29uZmlndXJhdGlvbiBmb3IgdGhlIHN1cHBsaWVkIGBub2RlTmFtZWAuXG4gKlxuICog
Tk9URTogVGhpcyBsYXppbHkgZGV0ZWN0cyB3aGljaCB3cmFwcyBhcmUgbmVjZXNzYXJ5IGZvciB0
aGUgY3VycmVudCBicm93c2VyLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBub2RlTmFtZSBMb3dl
cmNhc2UgYG5vZGVOYW1lYC5cbiAqIEByZXR1cm4gez9hcnJheX0gTWFya3VwIHdyYXAgY29uZmln
dXJhdGlvbiwgaWYgYXBwbGljYWJsZS5cbiAqL1xuZnVuY3Rpb24gZ2V0TWFya3VwV3JhcChub2Rl
TmFtZSkge1xuICAhISFkdW1teU5vZGUgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1
Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnTWFya3VwIHdyYXBwaW5nIG5vZGUgbm90IGluaXRp
YWxpemVkJykgOiBpbnZhcmlhbnQoZmFsc2UpIDogdm9pZCAwO1xuICBpZiAoIW1hcmt1cFdyYXAu
aGFzT3duUHJvcGVydHkobm9kZU5hbWUpKSB7XG4gICAgbm9kZU5hbWUgPSAnKic7XG4gIH1cbiAg
aWYgKCFzaG91bGRXcmFwLmhhc093blByb3BlcnR5KG5vZGVOYW1lKSkge1xuICAgIGlmIChub2Rl
TmFtZSA9PT0gJyonKSB7XG4gICAgICBkdW1teU5vZGUuaW5uZXJIVE1MID0gJzxsaW5rIC8+Jztc
biAgICB9IGVsc2Uge1xuICAgICAgZHVtbXlOb2RlLmlubmVySFRNTCA9ICc8JyArIG5vZGVOYW1l
ICsgJz48LycgKyBub2RlTmFtZSArICc+JztcbiAgICB9XG4gICAgc2hvdWxkV3JhcFtub2RlTmFt
ZV0gPSAhZHVtbXlOb2RlLmZpcnN0Q2hpbGQ7XG4gIH1cbiAgcmV0dXJuIHNob3VsZFdyYXBbbm9k
ZU5hbWVdID8gbWFya3VwV3JhcFtub2RlTmFtZV0gOiBudWxsO1xufVxuXG5tb2R1bGUuZXhwb3J0
cyA9IGdldE1hcmt1cFdyYXA7XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBG
T09URVJcbiAqKiAuL34vZmJqcy9saWIvZ2V0TWFya3VwV3JhcC5qc1xuICoqIG1vZHVsZSBpZCA9
IDEwM1xuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMp
IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4g
KlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxp
Y2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5
IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCBy
aWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0
b3J5LlxuICpcbiAqIEB0eXBlY2hlY2tzXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG4vKipcbiAq
IEdldHMgdGhlIHNjcm9sbCBwb3NpdGlvbiBvZiB0aGUgc3VwcGxpZWQgZWxlbWVudCBvciB3aW5k
b3cuXG4gKlxuICogVGhlIHJldHVybiB2YWx1ZXMgYXJlIHVuYm91bmRlZCwgdW5saWtlIGBnZXRT
Y3JvbGxQb3NpdGlvbmAuIFRoaXMgbWVhbnMgdGhleVxuICogbWF5IGJlIG5lZ2F0aXZlIG9yIGV4
Y2VlZCB0aGUgZWxlbWVudCBib3VuZGFyaWVzICh3aGljaCBpcyBwb3NzaWJsZSB1c2luZ1xuICog
aW5lcnRpYWwgc2Nyb2xsaW5nKS5cbiAqXG4gKiBAcGFyYW0ge0RPTVdpbmRvd3xET01FbGVtZW50
fSBzY3JvbGxhYmxlXG4gKiBAcmV0dXJuIHtvYmplY3R9IE1hcCB3aXRoIGB4YCBhbmQgYHlgIGtl
eXMuXG4gKi9cblxuZnVuY3Rpb24gZ2V0VW5ib3VuZGVkU2Nyb2xsUG9zaXRpb24oc2Nyb2xsYWJs
ZSkge1xuICBpZiAoc2Nyb2xsYWJsZS5XaW5kb3cgJiYgc2Nyb2xsYWJsZSBpbnN0YW5jZW9mIHNj
cm9sbGFibGUuV2luZG93KSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHg6IHNjcm9sbGFibGUucGFn
ZVhPZmZzZXQgfHwgc2Nyb2xsYWJsZS5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsTGVm
dCxcbiAgICAgIHk6IHNjcm9sbGFibGUucGFnZVlPZmZzZXQgfHwgc2Nyb2xsYWJsZS5kb2N1bWVu
dC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsVG9wXG4gICAgfTtcbiAgfVxuICByZXR1cm4ge1xuICAg
IHg6IHNjcm9sbGFibGUuc2Nyb2xsTGVmdCxcbiAgICB5OiBzY3JvbGxhYmxlLnNjcm9sbFRvcFxu
ICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGdldFVuYm91bmRlZFNjcm9sbFBvc2l0aW9uO1xu
XG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L2ZianMv
bGliL2dldFVuYm91bmRlZFNjcm9sbFBvc2l0aW9uLmpzXG4gKiogbW9kdWxlIGlkID0gMTA0XG4g
KiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIndXNlIHN0cmljdCc7XG5cbi8qKlxuICogQ29w
eXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJl
c2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJT
RC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290
IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBv
ZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBz
YW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAdHlwZWNoZWNrc1xuICovXG5cbnZhciBfdXBwZXJjYXNl
UGF0dGVybiA9IC8oW0EtWl0pL2c7XG5cbi8qKlxuICogSHlwaGVuYXRlcyBhIGNhbWVsY2FzZWQg
c3RyaW5nLCBmb3IgZXhhbXBsZTpcbiAqXG4gKiAgID4gaHlwaGVuYXRlKCdiYWNrZ3JvdW5kQ29s
b3InKVxuICogICA8IFwiYmFja2dyb3VuZC1jb2xvclwiXG4gKlxuICogRm9yIENTUyBzdHlsZSBu
YW1lcywgdXNlIGBoeXBoZW5hdGVTdHlsZU5hbWVgIGluc3RlYWQgd2hpY2ggd29ya3MgcHJvcGVy
bHlcbiAqIHdpdGggYWxsIHZlbmRvciBwcmVmaXhlcywgaW5jbHVkaW5nIGBtc2AuXG4gKlxuICog
QHBhcmFtIHtzdHJpbmd9IHN0cmluZ1xuICogQHJldHVybiB7c3RyaW5nfVxuICovXG5mdW5jdGlv
biBoeXBoZW5hdGUoc3RyaW5nKSB7XG4gIHJldHVybiBzdHJpbmcucmVwbGFjZShfdXBwZXJjYXNl
UGF0dGVybiwgJy0kMScpLnRvTG93ZXJDYXNlKCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaHlw
aGVuYXRlO1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiog
Li9+L2ZianMvbGliL2h5cGhlbmF0ZS5qc1xuICoqIG1vZHVsZSBpZCA9IDEwNVxuICoqIG1vZHVs
ZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwg
RmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3Vy
Y2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4g
dGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNl
IHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZv
dW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEB0
eXBlY2hlY2tzXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgaHlwaGVuYXRlID0gcmVxdWly
ZSgnLi9oeXBoZW5hdGUnKTtcblxudmFyIG1zUGF0dGVybiA9IC9ebXMtLztcblxuLyoqXG4gKiBI
eXBoZW5hdGVzIGEgY2FtZWxjYXNlZCBDU1MgcHJvcGVydHkgbmFtZSwgZm9yIGV4YW1wbGU6XG4g
KlxuICogICA+IGh5cGhlbmF0ZVN0eWxlTmFtZSgnYmFja2dyb3VuZENvbG9yJylcbiAqICAgPCBc
ImJhY2tncm91bmQtY29sb3JcIlxuICogICA+IGh5cGhlbmF0ZVN0eWxlTmFtZSgnTW96VHJhbnNp
dGlvbicpXG4gKiAgIDwgXCItbW96LXRyYW5zaXRpb25cIlxuICogICA+IGh5cGhlbmF0ZVN0eWxl
TmFtZSgnbXNUcmFuc2l0aW9uJylcbiAqICAgPCBcIi1tcy10cmFuc2l0aW9uXCJcbiAqXG4gKiBB
cyBNb2Rlcm5penIgc3VnZ2VzdHMgKGh0dHA6Ly9tb2Rlcm5penIuY29tL2RvY3MvI3ByZWZpeGVk
KSwgYW4gYG1zYCBwcmVmaXhcbiAqIGlzIGNvbnZlcnRlZCB0byBgLW1zLWAuXG4gKlxuICogQHBh
cmFtIHtzdHJpbmd9IHN0cmluZ1xuICogQHJldHVybiB7c3RyaW5nfVxuICovXG5mdW5jdGlvbiBo
eXBoZW5hdGVTdHlsZU5hbWUoc3RyaW5nKSB7XG4gIHJldHVybiBoeXBoZW5hdGUoc3RyaW5nKS5y
ZXBsYWNlKG1zUGF0dGVybiwgJy1tcy0nKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBoeXBoZW5h
dGVTdHlsZU5hbWU7XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJc
biAqKiAuL34vZmJqcy9saWIvaHlwaGVuYXRlU3R5bGVOYW1lLmpzXG4gKiogbW9kdWxlIGlkID0g
MTA2XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIndXNlIHN0cmljdCc7XG5cbi8qKlxu
ICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmln
aHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIg
dGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRo
ZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50
XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGlu
IHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAdHlwZWNoZWNrc1xuICovXG5cbi8qKlxuICog
QHBhcmFtIHsqfSBvYmplY3QgVGhlIG9iamVjdCB0byBjaGVjay5cbiAqIEByZXR1cm4ge2Jvb2xl
YW59IFdoZXRoZXIgb3Igbm90IHRoZSBvYmplY3QgaXMgYSBET00gbm9kZS5cbiAqL1xuZnVuY3Rp
b24gaXNOb2RlKG9iamVjdCkge1xuICB2YXIgZG9jID0gb2JqZWN0ID8gb2JqZWN0Lm93bmVyRG9j
dW1lbnQgfHwgb2JqZWN0IDogZG9jdW1lbnQ7XG4gIHZhciBkZWZhdWx0VmlldyA9IGRvYy5kZWZh
dWx0VmlldyB8fCB3aW5kb3c7XG4gIHJldHVybiAhIShvYmplY3QgJiYgKHR5cGVvZiBkZWZhdWx0
Vmlldy5Ob2RlID09PSAnZnVuY3Rpb24nID8gb2JqZWN0IGluc3RhbmNlb2YgZGVmYXVsdFZpZXcu
Tm9kZSA6IHR5cGVvZiBvYmplY3QgPT09ICdvYmplY3QnICYmIHR5cGVvZiBvYmplY3Qubm9kZVR5
cGUgPT09ICdudW1iZXInICYmIHR5cGVvZiBvYmplY3Qubm9kZU5hbWUgPT09ICdzdHJpbmcnKSk7
XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNOb2RlO1xuXG5cbi8qKioqKioqKioqKioqKioqKlxu
ICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L2ZianMvbGliL2lzTm9kZS5qc1xuICoqIG1vZHVs
ZSBpZCA9IDEwN1xuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiJ3VzZSBzdHJpY3QnO1xu
XG4vKipcbiAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICog
QWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2Vk
IHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmls
ZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25h
bCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMg
ZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHR5cGVjaGVja3NcbiAqL1xuXG52
YXIgaXNOb2RlID0gcmVxdWlyZSgnLi9pc05vZGUnKTtcblxuLyoqXG4gKiBAcGFyYW0geyp9IG9i
amVjdCBUaGUgb2JqZWN0IHRvIGNoZWNrLlxuICogQHJldHVybiB7Ym9vbGVhbn0gV2hldGhlciBv
ciBub3QgdGhlIG9iamVjdCBpcyBhIERPTSB0ZXh0IG5vZGUuXG4gKi9cbmZ1bmN0aW9uIGlzVGV4
dE5vZGUob2JqZWN0KSB7XG4gIHJldHVybiBpc05vZGUob2JqZWN0KSAmJiBvYmplY3Qubm9kZVR5
cGUgPT0gMztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc1RleHROb2RlO1xuXG5cbi8qKioqKioq
KioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L2ZianMvbGliL2lzVGV4dE5v
ZGUuanNcbiAqKiBtb2R1bGUgaWQgPSAxMDhcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIs
Ii8qKlxuICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBB
bGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQg
dW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxl
IGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFs
IGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBm
aWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBcbiAqIEB0eXBlY2hlY2tzIHN0YXRp
Yy1vbmx5XG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG4vKipcbiAqIE1lbW9pemVzIHRoZSByZXR1
cm4gdmFsdWUgb2YgYSBmdW5jdGlvbiB0aGF0IGFjY2VwdHMgb25lIHN0cmluZyBhcmd1bWVudC5c
biAqL1xuXG5mdW5jdGlvbiBtZW1vaXplU3RyaW5nT25seShjYWxsYmFjaykge1xuICB2YXIgY2Fj
aGUgPSB7fTtcbiAgcmV0dXJuIGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgICBpZiAoIWNhY2hlLmhh
c093blByb3BlcnR5KHN0cmluZykpIHtcbiAgICAgIGNhY2hlW3N0cmluZ10gPSBjYWxsYmFjay5j
YWxsKHRoaXMsIHN0cmluZyk7XG4gICAgfVxuICAgIHJldHVybiBjYWNoZVtzdHJpbmddO1xuICB9
O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG1lbW9pemVTdHJpbmdPbmx5O1xuXG5cbi8qKioqKioq
KioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L2ZianMvbGliL21lbW9pemVT
dHJpbmdPbmx5LmpzXG4gKiogbW9kdWxlIGlkID0gMTA5XG4gKiogbW9kdWxlIGNodW5rcyA9IDBc
biAqKi8iLCIvKipcbiAqIENvcHlyaWdodCAyMDE1LCBZYWhvbyEgSW5jLlxuICogQ29weXJpZ2h0
cyBsaWNlbnNlZCB1bmRlciB0aGUgTmV3IEJTRCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWlu
ZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG4ndXNlIHN0cmljdCc7XG5cbnZhciBSRUFD
VF9TVEFUSUNTID0ge1xuICAgIGNoaWxkQ29udGV4dFR5cGVzOiB0cnVlLFxuICAgIGNvbnRleHRU
eXBlczogdHJ1ZSxcbiAgICBkZWZhdWx0UHJvcHM6IHRydWUsXG4gICAgZGlzcGxheU5hbWU6IHRy
dWUsXG4gICAgZ2V0RGVmYXVsdFByb3BzOiB0cnVlLFxuICAgIG1peGluczogdHJ1ZSxcbiAgICBw
cm9wVHlwZXM6IHRydWUsXG4gICAgdHlwZTogdHJ1ZVxufTtcblxudmFyIEtOT1dOX1NUQVRJQ1Mg
PSB7XG4gIG5hbWU6IHRydWUsXG4gIGxlbmd0aDogdHJ1ZSxcbiAgcHJvdG90eXBlOiB0cnVlLFxu
ICBjYWxsZXI6IHRydWUsXG4gIGNhbGxlZTogdHJ1ZSxcbiAgYXJndW1lbnRzOiB0cnVlLFxuICBh
cml0eTogdHJ1ZVxufTtcblxudmFyIGRlZmluZVByb3BlcnR5ID0gT2JqZWN0LmRlZmluZVByb3Bl
cnR5O1xudmFyIGdldE93blByb3BlcnR5TmFtZXMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1l
cztcbnZhciBnZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1i
b2xzO1xudmFyIGdldE93blByb3BlcnR5RGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3I7XG52YXIgZ2V0UHJvdG90eXBlT2YgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2Y7
XG52YXIgb2JqZWN0UHJvdG90eXBlID0gZ2V0UHJvdG90eXBlT2YgJiYgZ2V0UHJvdG90eXBlT2Yo
T2JqZWN0KTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBob2lzdE5vblJlYWN0U3RhdGlj
cyh0YXJnZXRDb21wb25lbnQsIHNvdXJjZUNvbXBvbmVudCwgYmxhY2tsaXN0KSB7XG4gICAgaWYg
KHR5cGVvZiBzb3VyY2VDb21wb25lbnQgIT09ICdzdHJpbmcnKSB7IC8vIGRvbid0IGhvaXN0IG92
ZXIgc3RyaW5nIChodG1sKSBjb21wb25lbnRzXG5cbiAgICAgICAgaWYgKG9iamVjdFByb3RvdHlw
ZSkge1xuICAgICAgICAgICAgdmFyIGluaGVyaXRlZENvbXBvbmVudCA9IGdldFByb3RvdHlwZU9m
KHNvdXJjZUNvbXBvbmVudCk7XG4gICAgICAgICAgICBpZiAoaW5oZXJpdGVkQ29tcG9uZW50ICYm
IGluaGVyaXRlZENvbXBvbmVudCAhPT0gb2JqZWN0UHJvdG90eXBlKSB7XG4gICAgICAgICAgICAg
ICAgaG9pc3ROb25SZWFjdFN0YXRpY3ModGFyZ2V0Q29tcG9uZW50LCBpbmhlcml0ZWRDb21wb25l
bnQsIGJsYWNrbGlzdCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB2YXIg
a2V5cyA9IGdldE93blByb3BlcnR5TmFtZXMoc291cmNlQ29tcG9uZW50KTtcblxuICAgICAgICBp
ZiAoZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7XG4gICAgICAgICAgICBrZXlzID0ga2V5cy5jb25j
YXQoZ2V0T3duUHJvcGVydHlTeW1ib2xzKHNvdXJjZUNvbXBvbmVudCkpO1xuICAgICAgICB9XG5c
biAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgKytpKSB7XG4gICAgICAg
ICAgICB2YXIga2V5ID0ga2V5c1tpXTtcbiAgICAgICAgICAgIGlmICghUkVBQ1RfU1RBVElDU1tr
ZXldICYmICFLTk9XTl9TVEFUSUNTW2tleV0gJiYgKCFibGFja2xpc3QgfHwgIWJsYWNrbGlzdFtr
ZXldKSkge1xuICAgICAgICAgICAgICAgIHZhciBkZXNjcmlwdG9yID0gZ2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yKHNvdXJjZUNvbXBvbmVudCwga2V5KTtcbiAgICAgICAgICAgICAgICB0cnkgeyAv
LyBBdm9pZCBmYWlsdXJlcyBmcm9tIHJlYWQtb25seSBwcm9wZXJ0aWVzXG4gICAgICAgICAgICAg
ICAgICAgIGRlZmluZVByb3BlcnR5KHRhcmdldENvbXBvbmVudCwga2V5LCBkZXNjcmlwdG9yKTtc
biAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7fVxuICAgICAgICAgICAgfVxuICAgICAgICB9
XG5cbiAgICAgICAgcmV0dXJuIHRhcmdldENvbXBvbmVudDtcbiAgICB9XG5cbiAgICByZXR1cm4g
dGFyZ2V0Q29tcG9uZW50O1xufTtcblxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBB
Q0sgRk9PVEVSXG4gKiogLi9+L2hvaXN0LW5vbi1yZWFjdC1zdGF0aWNzL2luZGV4LmpzXG4gKiog
bW9kdWxlIGlkID0gMTEwXG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENv
cHlyaWdodCAyMDEzLTIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVk
LlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHls
ZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVj
dG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRl
bnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRp
cmVjdG9yeS5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbi8qKlxuICogVXNlIGludmFyaWFudCgp
IHRvIGFzc2VydCBzdGF0ZSB3aGljaCB5b3VyIHByb2dyYW0gYXNzdW1lcyB0byBiZSB0cnVlLlxu
ICpcbiAqIFByb3ZpZGUgc3ByaW50Zi1zdHlsZSBmb3JtYXQgKG9ubHkgJXMgaXMgc3VwcG9ydGVk
KSBhbmQgYXJndW1lbnRzXG4gKiB0byBwcm92aWRlIGluZm9ybWF0aW9uIGFib3V0IHdoYXQgYnJv
a2UgYW5kIHdoYXQgeW91IHdlcmVcbiAqIGV4cGVjdGluZy5cbiAqXG4gKiBUaGUgaW52YXJpYW50
IG1lc3NhZ2Ugd2lsbCBiZSBzdHJpcHBlZCBpbiBwcm9kdWN0aW9uLCBidXQgdGhlIGludmFyaWFu
dFxuICogd2lsbCByZW1haW4gdG8gZW5zdXJlIGxvZ2ljIGRvZXMgbm90IGRpZmZlciBpbiBwcm9k
dWN0aW9uLlxuICovXG5cbnZhciBpbnZhcmlhbnQgPSBmdW5jdGlvbihjb25kaXRpb24sIGZvcm1h
dCwgYSwgYiwgYywgZCwgZSwgZikge1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdw
cm9kdWN0aW9uJykge1xuICAgIGlmIChmb3JtYXQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhy
b3cgbmV3IEVycm9yKCdpbnZhcmlhbnQgcmVxdWlyZXMgYW4gZXJyb3IgbWVzc2FnZSBhcmd1bWVu
dCcpO1xuICAgIH1cbiAgfVxuXG4gIGlmICghY29uZGl0aW9uKSB7XG4gICAgdmFyIGVycm9yO1xu
ICAgIGlmIChmb3JtYXQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgZXJyb3IgPSBuZXcgRXJyb3Io
XG4gICAgICAgICdNaW5pZmllZCBleGNlcHRpb24gb2NjdXJyZWQ7IHVzZSB0aGUgbm9uLW1pbmlm
aWVkIGRldiBlbnZpcm9ubWVudCAnICtcbiAgICAgICAgJ2ZvciB0aGUgZnVsbCBlcnJvciBtZXNz
YWdlIGFuZCBhZGRpdGlvbmFsIGhlbHBmdWwgd2FybmluZ3MuJ1xuICAgICAgKTtcbiAgICB9IGVs
c2Uge1xuICAgICAgdmFyIGFyZ3MgPSBbYSwgYiwgYywgZCwgZSwgZl07XG4gICAgICB2YXIgYXJn
SW5kZXggPSAwO1xuICAgICAgZXJyb3IgPSBuZXcgRXJyb3IoXG4gICAgICAgIGZvcm1hdC5yZXBs
YWNlKC8lcy9nLCBmdW5jdGlvbigpIHsgcmV0dXJuIGFyZ3NbYXJnSW5kZXgrK107IH0pXG4gICAg
ICApO1xuICAgICAgZXJyb3IubmFtZSA9ICdJbnZhcmlhbnQgVmlvbGF0aW9uJztcbiAgICB9XG5c
biAgICBlcnJvci5mcmFtZXNUb1BvcCA9IDE7IC8vIHdlIGRvbid0IGNhcmUgYWJvdXQgaW52YXJp
YW50J3Mgb3duIGZyYW1lXG4gICAgdGhyb3cgZXJyb3I7XG4gIH1cbn07XG5cbm1vZHVsZS5leHBv
cnRzID0gaW52YXJpYW50O1xuXG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBG
T09URVJcbiAqKiAuL34vaW52YXJpYW50L2Jyb3dzZXIuanNcbiAqKiBtb2R1bGUgaWQgPSAxMTFc
biAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsInZhciBTeW1ib2wgPSByZXF1aXJlKCcuL19T
eW1ib2wnKSxcbiAgICBnZXRSYXdUYWcgPSByZXF1aXJlKCcuL19nZXRSYXdUYWcnKSxcbiAgICBv
YmplY3RUb1N0cmluZyA9IHJlcXVpcmUoJy4vX29iamVjdFRvU3RyaW5nJyk7XG5cbi8qKiBgT2Jq
ZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBudWxsVGFnID0gJ1tvYmpl
Y3QgTnVsbF0nLFxuICAgIHVuZGVmaW5lZFRhZyA9ICdbb2JqZWN0IFVuZGVmaW5lZF0nO1xuXG4v
KiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cbnZhciBzeW1Ub1N0cmluZ1RhZyA9IFN5
bWJvbCA/IFN5bWJvbC50b1N0cmluZ1RhZyA6IHVuZGVmaW5lZDtcblxuLyoqXG4gKiBUaGUgYmFz
ZSBpbXBsZW1lbnRhdGlvbiBvZiBgZ2V0VGFnYCB3aXRob3V0IGZhbGxiYWNrcyBmb3IgYnVnZ3kg
ZW52aXJvbm1lbnRzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2
YWx1ZSB0byBxdWVyeS5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGB0b1N0cmlu
Z1RhZ2AuXG4gKi9cbmZ1bmN0aW9uIGJhc2VHZXRUYWcodmFsdWUpIHtcbiAgaWYgKHZhbHVlID09
IG51bGwpIHtcbiAgICByZXR1cm4gdmFsdWUgPT09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZFRhZyA6
IG51bGxUYWc7XG4gIH1cbiAgcmV0dXJuIChzeW1Ub1N0cmluZ1RhZyAmJiBzeW1Ub1N0cmluZ1Rh
ZyBpbiBPYmplY3QodmFsdWUpKVxuICAgID8gZ2V0UmF3VGFnKHZhbHVlKVxuICAgIDogb2JqZWN0
VG9TdHJpbmcodmFsdWUpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VHZXRUYWc7XG5cblxu
XG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9sb2Rhc2gv
X2Jhc2VHZXRUYWcuanNcbiAqKiBtb2R1bGUgaWQgPSAxMTJcbiAqKiBtb2R1bGUgY2h1bmtzID0g
MFxuICoqLyIsIi8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgZ2xvYmFsYCBmcm9tIE5vZGUuanMu
ICovXG52YXIgZnJlZUdsb2JhbCA9IHR5cGVvZiBnbG9iYWwgPT0gJ29iamVjdCcgJiYgZ2xvYmFs
ICYmIGdsb2JhbC5PYmplY3QgPT09IE9iamVjdCAmJiBnbG9iYWw7XG5cbm1vZHVsZS5leHBvcnRz
ID0gZnJlZUdsb2JhbDtcblxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9P
VEVSXG4gKiogLi9+L2xvZGFzaC9fZnJlZUdsb2JhbC5qc1xuICoqIG1vZHVsZSBpZCA9IDExM1xu
ICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwidmFyIG92ZXJBcmcgPSByZXF1aXJlKCcuL19v
dmVyQXJnJyk7XG5cbi8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xudmFyIGdldFBy
b3RvdHlwZSA9IG92ZXJBcmcoT2JqZWN0LmdldFByb3RvdHlwZU9mLCBPYmplY3QpO1xuXG5tb2R1
bGUuZXhwb3J0cyA9IGdldFByb3RvdHlwZTtcblxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoq
IFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L2xvZGFzaC9fZ2V0UHJvdG90eXBlLmpzXG4gKiogbW9k
dWxlIGlkID0gMTE0XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCJ2YXIgU3ltYm9sID0g
cmVxdWlyZSgnLi9fU3ltYm9sJyk7XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVm
ZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBV
c2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blBy
b3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKlxuICogVXNlZCB0byBy
ZXNvbHZlIHRoZVxuICogW2B0b1N0cmluZ1RhZ2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwu
b3JnL2VjbWEtMjYyLzcuMC8jc2VjLW9iamVjdC5wcm90b3R5cGUudG9zdHJpbmcpXG4gKiBvZiB2
YWx1ZXMuXG4gKi9cbnZhciBuYXRpdmVPYmplY3RUb1N0cmluZyA9IG9iamVjdFByb3RvLnRvU3Ry
aW5nO1xuXG4vKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cbnZhciBzeW1Ub1N0cmlu
Z1RhZyA9IFN5bWJvbCA/IFN5bWJvbC50b1N0cmluZ1RhZyA6IHVuZGVmaW5lZDtcblxuLyoqXG4g
KiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYGJhc2VHZXRUYWdgIHdoaWNoIGlnbm9yZXMgYFN5
bWJvbC50b1N0cmluZ1RhZ2AgdmFsdWVzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9
IHZhbHVlIFRoZSB2YWx1ZSB0byBxdWVyeS5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMg
dGhlIHJhdyBgdG9TdHJpbmdUYWdgLlxuICovXG5mdW5jdGlvbiBnZXRSYXdUYWcodmFsdWUpIHtc
biAgdmFyIGlzT3duID0gaGFzT3duUHJvcGVydHkuY2FsbCh2YWx1ZSwgc3ltVG9TdHJpbmdUYWcp
LFxuICAgICAgdGFnID0gdmFsdWVbc3ltVG9TdHJpbmdUYWddO1xuXG4gIHRyeSB7XG4gICAgdmFs
dWVbc3ltVG9TdHJpbmdUYWddID0gdW5kZWZpbmVkO1xuICAgIHZhciB1bm1hc2tlZCA9IHRydWU7
XG4gIH0gY2F0Y2ggKGUpIHt9XG5cbiAgdmFyIHJlc3VsdCA9IG5hdGl2ZU9iamVjdFRvU3RyaW5n
LmNhbGwodmFsdWUpO1xuICBpZiAodW5tYXNrZWQpIHtcbiAgICBpZiAoaXNPd24pIHtcbiAgICAg
IHZhbHVlW3N5bVRvU3RyaW5nVGFnXSA9IHRhZztcbiAgICB9IGVsc2Uge1xuICAgICAgZGVsZXRl
IHZhbHVlW3N5bVRvU3RyaW5nVGFnXTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1c
blxubW9kdWxlLmV4cG9ydHMgPSBnZXRSYXdUYWc7XG5cblxuXG4vKioqKioqKioqKioqKioqKipc
biAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9sb2Rhc2gvX2dldFJhd1RhZy5qc1xuICoqIG1v
ZHVsZSBpZCA9IDExNVxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqIFVzZWQgZm9y
IGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0
LnByb3RvdHlwZTtcblxuLyoqXG4gKiBVc2VkIHRvIHJlc29sdmUgdGhlXG4gKiBbYHRvU3RyaW5n
VGFnYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtb2Jq
ZWN0LnByb3RvdHlwZS50b3N0cmluZylcbiAqIG9mIHZhbHVlcy5cbiAqL1xudmFyIG5hdGl2ZU9i
amVjdFRvU3RyaW5nID0gb2JqZWN0UHJvdG8udG9TdHJpbmc7XG5cbi8qKlxuICogQ29udmVydHMg
YHZhbHVlYCB0byBhIHN0cmluZyB1c2luZyBgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZ2AuXG4g
KlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbnZlcnQu
XG4gKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBjb252ZXJ0ZWQgc3RyaW5nLlxuICov
XG5mdW5jdGlvbiBvYmplY3RUb1N0cmluZyh2YWx1ZSkge1xuICByZXR1cm4gbmF0aXZlT2JqZWN0
VG9TdHJpbmcuY2FsbCh2YWx1ZSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gb2JqZWN0VG9TdHJp
bmc7XG5cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4v
fi9sb2Rhc2gvX29iamVjdFRvU3RyaW5nLmpzXG4gKiogbW9kdWxlIGlkID0gMTE2XG4gKiogbW9k
dWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENyZWF0ZXMgYSB1bmFyeSBmdW5jdGlvbiB0
aGF0IGludm9rZXMgYGZ1bmNgIHdpdGggaXRzIGFyZ3VtZW50IHRyYW5zZm9ybWVkLlxuICpcbiAq
IEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byB3cmFw
LlxuICogQHBhcmFtIHtGdW5jdGlvbn0gdHJhbnNmb3JtIFRoZSBhcmd1bWVudCB0cmFuc2Zvcm0u
XG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBmdW5jdGlvbi5cbiAqL1xu
ZnVuY3Rpb24gb3ZlckFyZyhmdW5jLCB0cmFuc2Zvcm0pIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKGFy
Zykge1xuICAgIHJldHVybiBmdW5jKHRyYW5zZm9ybShhcmcpKTtcbiAgfTtcbn1cblxubW9kdWxl
LmV4cG9ydHMgPSBvdmVyQXJnO1xuXG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFD
SyBGT09URVJcbiAqKiAuL34vbG9kYXNoL19vdmVyQXJnLmpzXG4gKiogbW9kdWxlIGlkID0gMTE3
XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCJ2YXIgZnJlZUdsb2JhbCA9IHJlcXVpcmUo
Jy4vX2ZyZWVHbG9iYWwnKTtcblxuLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBzZWxmYC4gKi9c
bnZhciBmcmVlU2VsZiA9IHR5cGVvZiBzZWxmID09ICdvYmplY3QnICYmIHNlbGYgJiYgc2VsZi5P
YmplY3QgPT09IE9iamVjdCAmJiBzZWxmO1xuXG4vKiogVXNlZCBhcyBhIHJlZmVyZW5jZSB0byB0
aGUgZ2xvYmFsIG9iamVjdC4gKi9cbnZhciByb290ID0gZnJlZUdsb2JhbCB8fCBmcmVlU2VsZiB8
fCBGdW5jdGlvbigncmV0dXJuIHRoaXMnKSgpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHJvb3Q7XG5c
blxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9sb2Rh
c2gvX3Jvb3QuanNcbiAqKiBtb2R1bGUgaWQgPSAxMThcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxu
ICoqLyIsIi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgb2JqZWN0LWxpa2UuIEEgdmFsdWUg
aXMgb2JqZWN0LWxpa2UgaWYgaXQncyBub3QgYG51bGxgXG4gKiBhbmQgaGFzIGEgYHR5cGVvZmAg
cmVzdWx0IG9mIFwib2JqZWN0XCIuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAq
IEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhl
IHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlm
IGB2YWx1ZWAgaXMgb2JqZWN0LWxpa2UsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxu
ICogXy5pc09iamVjdExpa2Uoe30pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNPYmplY3RM
aWtlKFsxLCAyLCAzXSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc09iamVjdExpa2UoXy5u
b29wKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc09iamVjdExpa2UobnVsbCk7XG4gKiAv
LyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc09iamVjdExpa2UodmFsdWUpIHtcbiAgcmV0dXJu
IHZhbHVlICE9IG51bGwgJiYgdHlwZW9mIHZhbHVlID09ICdvYmplY3QnO1xufVxuXG5tb2R1bGUu
ZXhwb3J0cyA9IGlzT2JqZWN0TGlrZTtcblxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdF
QlBBQ0sgRk9PVEVSXG4gKiogLi9+L2xvZGFzaC9pc09iamVjdExpa2UuanNcbiAqKiBtb2R1bGUg
aWQgPSAxMTlcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29weXJpZ2h0
IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4g
KlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxp
Y2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5
IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCBy
aWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0
b3J5LlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9
PSAncHJvZHVjdGlvbicpIHtcbiAgdmFyIGludmFyaWFudCA9IHJlcXVpcmUoJ2ZianMvbGliL2lu
dmFyaWFudCcpO1xuICB2YXIgd2FybmluZyA9IHJlcXVpcmUoJ2ZianMvbGliL3dhcm5pbmcnKTtc
biAgdmFyIFJlYWN0UHJvcFR5cGVzU2VjcmV0ID0gcmVxdWlyZSgnLi9saWIvUmVhY3RQcm9wVHlw
ZXNTZWNyZXQnKTtcbiAgdmFyIGxvZ2dlZFR5cGVGYWlsdXJlcyA9IHt9O1xufVxuXG4vKipcbiAq
IEFzc2VydCB0aGF0IHRoZSB2YWx1ZXMgbWF0Y2ggd2l0aCB0aGUgdHlwZSBzcGVjcy5cbiAqIEVy
cm9yIG1lc3NhZ2VzIGFyZSBtZW1vcml6ZWQgYW5kIHdpbGwgb25seSBiZSBzaG93biBvbmNlLlxu
ICpcbiAqIEBwYXJhbSB7b2JqZWN0fSB0eXBlU3BlY3MgTWFwIG9mIG5hbWUgdG8gYSBSZWFjdFBy
b3BUeXBlXG4gKiBAcGFyYW0ge29iamVjdH0gdmFsdWVzIFJ1bnRpbWUgdmFsdWVzIHRoYXQgbmVl
ZCB0byBiZSB0eXBlLWNoZWNrZWRcbiAqIEBwYXJhbSB7c3RyaW5nfSBsb2NhdGlvbiBlLmcuIFwi
cHJvcFwiLCBcImNvbnRleHRcIiwgXCJjaGlsZCBjb250ZXh0XCJcbiAqIEBwYXJhbSB7c3RyaW5n
fSBjb21wb25lbnROYW1lIE5hbWUgb2YgdGhlIGNvbXBvbmVudCBmb3IgZXJyb3IgbWVzc2FnZXMu
XG4gKiBAcGFyYW0gez9GdW5jdGlvbn0gZ2V0U3RhY2sgUmV0dXJucyB0aGUgY29tcG9uZW50IHN0
YWNrLlxuICogQHByaXZhdGVcbiAqL1xuZnVuY3Rpb24gY2hlY2tQcm9wVHlwZXModHlwZVNwZWNz
LCB2YWx1ZXMsIGxvY2F0aW9uLCBjb21wb25lbnROYW1lLCBnZXRTdGFjaykge1xuICBpZiAocHJv
Y2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIGZvciAodmFyIHR5cGVT
cGVjTmFtZSBpbiB0eXBlU3BlY3MpIHtcbiAgICAgIGlmICh0eXBlU3BlY3MuaGFzT3duUHJvcGVy
dHkodHlwZVNwZWNOYW1lKSkge1xuICAgICAgICB2YXIgZXJyb3I7XG4gICAgICAgIC8vIFByb3Ag
dHlwZSB2YWxpZGF0aW9uIG1heSB0aHJvdy4gSW4gY2FzZSB0aGV5IGRvLCB3ZSBkb24ndCB3YW50
IHRvXG4gICAgICAgIC8vIGZhaWwgdGhlIHJlbmRlciBwaGFzZSB3aGVyZSBpdCBkaWRuJ3QgZmFp
bCBiZWZvcmUuIFNvIHdlIGxvZyBpdC5cbiAgICAgICAgLy8gQWZ0ZXIgdGhlc2UgaGF2ZSBiZWVu
IGNsZWFuZWQgdXAsIHdlJ2xsIGxldCB0aGVtIHRocm93LlxuICAgICAgICB0cnkge1xuICAgICAg
ICAgIC8vIFRoaXMgaXMgaW50ZW50aW9uYWxseSBhbiBpbnZhcmlhbnQgdGhhdCBnZXRzIGNhdWdo
dC4gSXQncyB0aGUgc2FtZVxuICAgICAgICAgIC8vIGJlaGF2aW9yIGFzIHdpdGhvdXQgdGhpcyBz
dGF0ZW1lbnQgZXhjZXB0IHdpdGggYSBiZXR0ZXIgbWVzc2FnZS5cbiAgICAgICAgICBpbnZhcmlh
bnQodHlwZW9mIHR5cGVTcGVjc1t0eXBlU3BlY05hbWVdID09PSAnZnVuY3Rpb24nLCAnJXM6ICVz
IHR5cGUgYCVzYCBpcyBpbnZhbGlkOyBpdCBtdXN0IGJlIGEgZnVuY3Rpb24sIHVzdWFsbHkgZnJv
bSAnICsgJ1JlYWN0LlByb3BUeXBlcy4nLCBjb21wb25lbnROYW1lIHx8ICdSZWFjdCBjbGFzcycs
IGxvY2F0aW9uLCB0eXBlU3BlY05hbWUpO1xuICAgICAgICAgIGVycm9yID0gdHlwZVNwZWNzW3R5
cGVTcGVjTmFtZV0odmFsdWVzLCB0eXBlU3BlY05hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9u
LCBudWxsLCBSZWFjdFByb3BUeXBlc1NlY3JldCk7XG4gICAgICAgIH0gY2F0Y2ggKGV4KSB7XG4g
ICAgICAgICAgZXJyb3IgPSBleDtcbiAgICAgICAgfVxuICAgICAgICB3YXJuaW5nKCFlcnJvciB8
fCBlcnJvciBpbnN0YW5jZW9mIEVycm9yLCAnJXM6IHR5cGUgc3BlY2lmaWNhdGlvbiBvZiAlcyBg
JXNgIGlzIGludmFsaWQ7IHRoZSB0eXBlIGNoZWNrZXIgJyArICdmdW5jdGlvbiBtdXN0IHJldHVy
biBgbnVsbGAgb3IgYW4gYEVycm9yYCBidXQgcmV0dXJuZWQgYSAlcy4gJyArICdZb3UgbWF5IGhh
dmUgZm9yZ290dGVuIHRvIHBhc3MgYW4gYXJndW1lbnQgdG8gdGhlIHR5cGUgY2hlY2tlciAnICsg
J2NyZWF0b3IgKGFycmF5T2YsIGluc3RhbmNlT2YsIG9iamVjdE9mLCBvbmVPZiwgb25lT2ZUeXBl
LCBhbmQgJyArICdzaGFwZSBhbGwgcmVxdWlyZSBhbiBhcmd1bWVudCkuJywgY29tcG9uZW50TmFt
ZSB8fCAnUmVhY3QgY2xhc3MnLCBsb2NhdGlvbiwgdHlwZVNwZWNOYW1lLCB0eXBlb2YgZXJyb3Ip
O1xuICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBFcnJvciAmJiAhKGVycm9yLm1lc3NhZ2Ug
aW4gbG9nZ2VkVHlwZUZhaWx1cmVzKSkge1xuICAgICAgICAgIC8vIE9ubHkgbW9uaXRvciB0aGlz
IGZhaWx1cmUgb25jZSBiZWNhdXNlIHRoZXJlIHRlbmRzIHRvIGJlIGEgbG90IG9mIHRoZVxuICAg
ICAgICAgIC8vIHNhbWUgZXJyb3IuXG4gICAgICAgICAgbG9nZ2VkVHlwZUZhaWx1cmVzW2Vycm9y
Lm1lc3NhZ2VdID0gdHJ1ZTtcblxuICAgICAgICAgIHZhciBzdGFjayA9IGdldFN0YWNrID8gZ2V0
U3RhY2soKSA6ICcnO1xuXG4gICAgICAgICAgd2FybmluZyhmYWxzZSwgJ0ZhaWxlZCAlcyB0eXBl
OiAlcyVzJywgbG9jYXRpb24sIGVycm9yLm1lc3NhZ2UsIHN0YWNrICE9IG51bGwgPyBzdGFjayA6
ICcnKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0
cyA9IGNoZWNrUHJvcFR5cGVzO1xuXG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFD
SyBGT09URVJcbiAqKiAuL34vcHJvcC10eXBlcy9jaGVja1Byb3BUeXBlcy5qc1xuICoqIG1vZHVs
ZSBpZCA9IDEyMFxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmln
aHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5c
biAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUg
bGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rv
cnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50
IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJl
Y3RvcnkuXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgZW1wdHlGdW5jdGlvbiA9IHJlcXVp
cmUoJ2ZianMvbGliL2VtcHR5RnVuY3Rpb24nKTtcbnZhciBpbnZhcmlhbnQgPSByZXF1aXJlKCdm
YmpzL2xpYi9pbnZhcmlhbnQnKTtcbnZhciBSZWFjdFByb3BUeXBlc1NlY3JldCA9IHJlcXVpcmUo
Jy4vbGliL1JlYWN0UHJvcFR5cGVzU2VjcmV0Jyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rp
b24oKSB7XG4gIGZ1bmN0aW9uIHNoaW0ocHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1lLCBs
b2NhdGlvbiwgcHJvcEZ1bGxOYW1lLCBzZWNyZXQpIHtcbiAgICBpZiAoc2VjcmV0ID09PSBSZWFj
dFByb3BUeXBlc1NlY3JldCkge1xuICAgICAgLy8gSXQgaXMgc3RpbGwgc2FmZSB3aGVuIGNhbGxl
ZCBmcm9tIFJlYWN0LlxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpbnZhcmlhbnQoXG4gICAg
ICBmYWxzZSxcbiAgICAgICdDYWxsaW5nIFByb3BUeXBlcyB2YWxpZGF0b3JzIGRpcmVjdGx5IGlz
IG5vdCBzdXBwb3J0ZWQgYnkgdGhlIGBwcm9wLXR5cGVzYCBwYWNrYWdlLiAnICtcbiAgICAgICdV
c2UgUHJvcFR5cGVzLmNoZWNrUHJvcFR5cGVzKCkgdG8gY2FsbCB0aGVtLiAnICtcbiAgICAgICdS
ZWFkIG1vcmUgYXQgaHR0cDovL2ZiLm1lL3VzZS1jaGVjay1wcm9wLXR5cGVzJ1xuICAgICk7XG4g
IH07XG4gIHNoaW0uaXNSZXF1aXJlZCA9IHNoaW07XG4gIGZ1bmN0aW9uIGdldFNoaW0oKSB7XG4g
ICAgcmV0dXJuIHNoaW07XG4gIH07XG4gIC8vIEltcG9ydGFudCFcbiAgLy8gS2VlcCB0aGlzIGxp
c3QgaW4gc3luYyB3aXRoIHByb2R1Y3Rpb24gdmVyc2lvbiBpbiBgLi9mYWN0b3J5V2l0aFR5cGVD
aGVja2Vycy5qc2AuXG4gIHZhciBSZWFjdFByb3BUeXBlcyA9IHtcbiAgICBhcnJheTogc2hpbSxc
biAgICBib29sOiBzaGltLFxuICAgIGZ1bmM6IHNoaW0sXG4gICAgbnVtYmVyOiBzaGltLFxuICAg
IG9iamVjdDogc2hpbSxcbiAgICBzdHJpbmc6IHNoaW0sXG4gICAgc3ltYm9sOiBzaGltLFxuXG4g
ICAgYW55OiBzaGltLFxuICAgIGFycmF5T2Y6IGdldFNoaW0sXG4gICAgZWxlbWVudDogc2hpbSxc
biAgICBpbnN0YW5jZU9mOiBnZXRTaGltLFxuICAgIG5vZGU6IHNoaW0sXG4gICAgb2JqZWN0T2Y6
IGdldFNoaW0sXG4gICAgb25lT2Y6IGdldFNoaW0sXG4gICAgb25lT2ZUeXBlOiBnZXRTaGltLFxu
ICAgIHNoYXBlOiBnZXRTaGltXG4gIH07XG5cbiAgUmVhY3RQcm9wVHlwZXMuY2hlY2tQcm9wVHlw
ZXMgPSBlbXB0eUZ1bmN0aW9uO1xuICBSZWFjdFByb3BUeXBlcy5Qcm9wVHlwZXMgPSBSZWFjdFBy
b3BUeXBlcztcblxuICByZXR1cm4gUmVhY3RQcm9wVHlwZXM7XG59O1xuXG5cblxuLyoqKioqKioq
KioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcHJvcC10eXBlcy9mYWN0b3J5
V2l0aFRocm93aW5nU2hpbXMuanNcbiAqKiBtb2R1bGUgaWQgPSAxMjFcbiAqKiBtb2R1bGUgY2h1
bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ss
IEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBp
cyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBM
SUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFu
IGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRo
ZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICovXG5cbid1c2Ugc3RyaWN0
JztcblxudmFyIGVtcHR5RnVuY3Rpb24gPSByZXF1aXJlKCdmYmpzL2xpYi9lbXB0eUZ1bmN0aW9u
Jyk7XG52YXIgaW52YXJpYW50ID0gcmVxdWlyZSgnZmJqcy9saWIvaW52YXJpYW50Jyk7XG52YXIg
d2FybmluZyA9IHJlcXVpcmUoJ2ZianMvbGliL3dhcm5pbmcnKTtcblxudmFyIFJlYWN0UHJvcFR5
cGVzU2VjcmV0ID0gcmVxdWlyZSgnLi9saWIvUmVhY3RQcm9wVHlwZXNTZWNyZXQnKTtcbnZhciBj
aGVja1Byb3BUeXBlcyA9IHJlcXVpcmUoJy4vY2hlY2tQcm9wVHlwZXMnKTtcblxubW9kdWxlLmV4
cG9ydHMgPSBmdW5jdGlvbihpc1ZhbGlkRWxlbWVudCwgdGhyb3dPbkRpcmVjdEFjY2Vzcykge1xu
ICAvKiBnbG9iYWwgU3ltYm9sICovXG4gIHZhciBJVEVSQVRPUl9TWU1CT0wgPSB0eXBlb2YgU3lt
Ym9sID09PSAnZnVuY3Rpb24nICYmIFN5bWJvbC5pdGVyYXRvcjtcbiAgdmFyIEZBVVhfSVRFUkFU
T1JfU1lNQk9MID0gJ0BAaXRlcmF0b3InOyAvLyBCZWZvcmUgU3ltYm9sIHNwZWMuXG5cbiAgLyoq
XG4gICAqIFJldHVybnMgdGhlIGl0ZXJhdG9yIG1ldGhvZCBmdW5jdGlvbiBjb250YWluZWQgb24g
dGhlIGl0ZXJhYmxlIG9iamVjdC5cbiAgICpcbiAgICogQmUgc3VyZSB0byBpbnZva2UgdGhlIGZ1
bmN0aW9uIHdpdGggdGhlIGl0ZXJhYmxlIGFzIGNvbnRleHQ6XG4gICAqXG4gICAqICAgICB2YXIg
aXRlcmF0b3JGbiA9IGdldEl0ZXJhdG9yRm4obXlJdGVyYWJsZSk7XG4gICAqICAgICBpZiAoaXRl
cmF0b3JGbikge1xuICAgKiAgICAgICB2YXIgaXRlcmF0b3IgPSBpdGVyYXRvckZuLmNhbGwobXlJ
dGVyYWJsZSk7XG4gICAqICAgICAgIC4uLlxuICAgKiAgICAgfVxuICAgKlxuICAgKiBAcGFyYW0g
ez9vYmplY3R9IG1heWJlSXRlcmFibGVcbiAgICogQHJldHVybiB7P2Z1bmN0aW9ufVxuICAgKi9c
biAgZnVuY3Rpb24gZ2V0SXRlcmF0b3JGbihtYXliZUl0ZXJhYmxlKSB7XG4gICAgdmFyIGl0ZXJh
dG9yRm4gPSBtYXliZUl0ZXJhYmxlICYmIChJVEVSQVRPUl9TWU1CT0wgJiYgbWF5YmVJdGVyYWJs
ZVtJVEVSQVRPUl9TWU1CT0xdIHx8IG1heWJlSXRlcmFibGVbRkFVWF9JVEVSQVRPUl9TWU1CT0xd
KTtcbiAgICBpZiAodHlwZW9mIGl0ZXJhdG9yRm4gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHJl
dHVybiBpdGVyYXRvckZuO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDb2xsZWN0aW9uIG9m
IG1ldGhvZHMgdGhhdCBhbGxvdyBkZWNsYXJhdGlvbiBhbmQgdmFsaWRhdGlvbiBvZiBwcm9wcyB0
aGF0IGFyZVxuICAgKiBzdXBwbGllZCB0byBSZWFjdCBjb21wb25lbnRzLiBFeGFtcGxlIHVzYWdl
OlxuICAgKlxuICAgKiAgIHZhciBQcm9wcyA9IHJlcXVpcmUoJ1JlYWN0UHJvcFR5cGVzJyk7XG4g
ICAqICAgdmFyIE15QXJ0aWNsZSA9IFJlYWN0LmNyZWF0ZUNsYXNzKHtcbiAgICogICAgIHByb3BU
eXBlczoge1xuICAgKiAgICAgICAvLyBBbiBvcHRpb25hbCBzdHJpbmcgcHJvcCBuYW1lZCBcImRl
c2NyaXB0aW9uXCIuXG4gICAqICAgICAgIGRlc2NyaXB0aW9uOiBQcm9wcy5zdHJpbmcsXG4gICAq
XG4gICAqICAgICAgIC8vIEEgcmVxdWlyZWQgZW51bSBwcm9wIG5hbWVkIFwiY2F0ZWdvcnlcIi5c
biAgICogICAgICAgY2F0ZWdvcnk6IFByb3BzLm9uZU9mKFsnTmV3cycsJ1Bob3RvcyddKS5pc1Jl
cXVpcmVkLFxuICAgKlxuICAgKiAgICAgICAvLyBBIHByb3AgbmFtZWQgXCJkaWFsb2dcIiB0aGF0
IHJlcXVpcmVzIGFuIGluc3RhbmNlIG9mIERpYWxvZy5cbiAgICogICAgICAgZGlhbG9nOiBQcm9w
cy5pbnN0YW5jZU9mKERpYWxvZykuaXNSZXF1aXJlZFxuICAgKiAgICAgfSxcbiAgICogICAgIHJl
bmRlcjogZnVuY3Rpb24oKSB7IC4uLiB9XG4gICAqICAgfSk7XG4gICAqXG4gICAqIEEgbW9yZSBm
b3JtYWwgc3BlY2lmaWNhdGlvbiBvZiBob3cgdGhlc2UgbWV0aG9kcyBhcmUgdXNlZDpcbiAgICpc
biAgICogICB0eXBlIDo9IGFycmF5fGJvb2x8ZnVuY3xvYmplY3R8bnVtYmVyfHN0cmluZ3xvbmVP
ZihbLi4uXSl8aW5zdGFuY2VPZiguLi4pXG4gICAqICAgZGVjbCA6PSBSZWFjdFByb3BUeXBlcy57
dHlwZX0oLmlzUmVxdWlyZWQpP1xuICAgKlxuICAgKiBFYWNoIGFuZCBldmVyeSBkZWNsYXJhdGlv
biBwcm9kdWNlcyBhIGZ1bmN0aW9uIHdpdGggdGhlIHNhbWUgc2lnbmF0dXJlLiBUaGlzXG4gICAq
IGFsbG93cyB0aGUgY3JlYXRpb24gb2YgY3VzdG9tIHZhbGlkYXRpb24gZnVuY3Rpb25zLiBGb3Ig
ZXhhbXBsZTpcbiAgICpcbiAgICogIHZhciBNeUxpbmsgPSBSZWFjdC5jcmVhdGVDbGFzcyh7XG4g
ICAqICAgIHByb3BUeXBlczoge1xuICAgKiAgICAgIC8vIEFuIG9wdGlvbmFsIHN0cmluZyBvciBV
UkkgcHJvcCBuYW1lZCBcImhyZWZcIi5cbiAgICogICAgICBocmVmOiBmdW5jdGlvbihwcm9wcywg
cHJvcE5hbWUsIGNvbXBvbmVudE5hbWUpIHtcbiAgICogICAgICAgIHZhciBwcm9wVmFsdWUgPSBw
cm9wc1twcm9wTmFtZV07XG4gICAqICAgICAgICBpZiAocHJvcFZhbHVlICE9IG51bGwgJiYgdHlw
ZW9mIHByb3BWYWx1ZSAhPT0gJ3N0cmluZycgJiZcbiAgICogICAgICAgICAgICAhKHByb3BWYWx1
ZSBpbnN0YW5jZW9mIFVSSSkpIHtcbiAgICogICAgICAgICAgcmV0dXJuIG5ldyBFcnJvcihcbiAg
ICogICAgICAgICAgICAnRXhwZWN0ZWQgYSBzdHJpbmcgb3IgYW4gVVJJIGZvciAnICsgcHJvcE5h
bWUgKyAnIGluICcgK1xuICAgKiAgICAgICAgICAgIGNvbXBvbmVudE5hbWVcbiAgICogICAgICAg
ICAgKTtcbiAgICogICAgICAgIH1cbiAgICogICAgICB9XG4gICAqICAgIH0sXG4gICAqICAgIHJl
bmRlcjogZnVuY3Rpb24oKSB7Li4ufVxuICAgKiAgfSk7XG4gICAqXG4gICAqIEBpbnRlcm5hbFxu
ICAgKi9cblxuICB2YXIgQU5PTllNT1VTID0gJzw8YW5vbnltb3VzPj4nO1xuXG4gIC8vIEltcG9y
dGFudCFcbiAgLy8gS2VlcCB0aGlzIGxpc3QgaW4gc3luYyB3aXRoIHByb2R1Y3Rpb24gdmVyc2lv
biBpbiBgLi9mYWN0b3J5V2l0aFRocm93aW5nU2hpbXMuanNgLlxuICB2YXIgUmVhY3RQcm9wVHlw
ZXMgPSB7XG4gICAgYXJyYXk6IGNyZWF0ZVByaW1pdGl2ZVR5cGVDaGVja2VyKCdhcnJheScpLFxu
ICAgIGJvb2w6IGNyZWF0ZVByaW1pdGl2ZVR5cGVDaGVja2VyKCdib29sZWFuJyksXG4gICAgZnVu
YzogY3JlYXRlUHJpbWl0aXZlVHlwZUNoZWNrZXIoJ2Z1bmN0aW9uJyksXG4gICAgbnVtYmVyOiBj
cmVhdGVQcmltaXRpdmVUeXBlQ2hlY2tlcignbnVtYmVyJyksXG4gICAgb2JqZWN0OiBjcmVhdGVQ
cmltaXRpdmVUeXBlQ2hlY2tlcignb2JqZWN0JyksXG4gICAgc3RyaW5nOiBjcmVhdGVQcmltaXRp
dmVUeXBlQ2hlY2tlcignc3RyaW5nJyksXG4gICAgc3ltYm9sOiBjcmVhdGVQcmltaXRpdmVUeXBl
Q2hlY2tlcignc3ltYm9sJyksXG5cbiAgICBhbnk6IGNyZWF0ZUFueVR5cGVDaGVja2VyKCksXG4g
ICAgYXJyYXlPZjogY3JlYXRlQXJyYXlPZlR5cGVDaGVja2VyLFxuICAgIGVsZW1lbnQ6IGNyZWF0
ZUVsZW1lbnRUeXBlQ2hlY2tlcigpLFxuICAgIGluc3RhbmNlT2Y6IGNyZWF0ZUluc3RhbmNlVHlw
ZUNoZWNrZXIsXG4gICAgbm9kZTogY3JlYXRlTm9kZUNoZWNrZXIoKSxcbiAgICBvYmplY3RPZjog
Y3JlYXRlT2JqZWN0T2ZUeXBlQ2hlY2tlcixcbiAgICBvbmVPZjogY3JlYXRlRW51bVR5cGVDaGVj
a2VyLFxuICAgIG9uZU9mVHlwZTogY3JlYXRlVW5pb25UeXBlQ2hlY2tlcixcbiAgICBzaGFwZTog
Y3JlYXRlU2hhcGVUeXBlQ2hlY2tlclxuICB9O1xuXG4gIC8qKlxuICAgKiBpbmxpbmVkIE9iamVj
dC5pcyBwb2x5ZmlsbCB0byBhdm9pZCByZXF1aXJpbmcgY29uc3VtZXJzIHNoaXAgdGhlaXIgb3du
XG4gICAqIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0phdmFT
Y3JpcHQvUmVmZXJlbmNlL0dsb2JhbF9PYmplY3RzL09iamVjdC9pc1xuICAgKi9cbiAgLyplc2xp
bnQtZGlzYWJsZSBuby1zZWxmLWNvbXBhcmUqL1xuICBmdW5jdGlvbiBpcyh4LCB5KSB7XG4gICAg
Ly8gU2FtZVZhbHVlIGFsZ29yaXRobVxuICAgIGlmICh4ID09PSB5KSB7XG4gICAgICAvLyBTdGVw
cyAxLTUsIDctMTBcbiAgICAgIC8vIFN0ZXBzIDYuYi02LmU6ICswICE9IC0wXG4gICAgICByZXR1
cm4geCAhPT0gMCB8fCAxIC8geCA9PT0gMSAvIHk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFN0
ZXAgNi5hOiBOYU4gPT0gTmFOXG4gICAgICByZXR1cm4geCAhPT0geCAmJiB5ICE9PSB5O1xuICAg
IH1cbiAgfVxuICAvKmVzbGludC1lbmFibGUgbm8tc2VsZi1jb21wYXJlKi9cblxuICAvKipcbiAg
ICogV2UgdXNlIGFuIEVycm9yLWxpa2Ugb2JqZWN0IGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5
IGFzIHBlb3BsZSBtYXkgY2FsbFxuICAgKiBQcm9wVHlwZXMgZGlyZWN0bHkgYW5kIGluc3BlY3Qg
dGhlaXIgb3V0cHV0LiBIb3dldmVyLCB3ZSBkb24ndCB1c2UgcmVhbFxuICAgKiBFcnJvcnMgYW55
bW9yZS4gV2UgZG9uJ3QgaW5zcGVjdCB0aGVpciBzdGFjayBhbnl3YXksIGFuZCBjcmVhdGluZyB0
aGVtXG4gICAqIGlzIHByb2hpYml0aXZlbHkgZXhwZW5zaXZlIGlmIHRoZXkgYXJlIGNyZWF0ZWQg
dG9vIG9mdGVuLCBzdWNoIGFzIHdoYXRcbiAgICogaGFwcGVucyBpbiBvbmVPZlR5cGUoKSBmb3Ig
YW55IHR5cGUgYmVmb3JlIHRoZSBvbmUgdGhhdCBtYXRjaGVkLlxuICAgKi9cbiAgZnVuY3Rpb24g
UHJvcFR5cGVFcnJvcihtZXNzYWdlKSB7XG4gICAgdGhpcy5tZXNzYWdlID0gbWVzc2FnZTtcbiAg
ICB0aGlzLnN0YWNrID0gJyc7XG4gIH1cbiAgLy8gTWFrZSBgaW5zdGFuY2VvZiBFcnJvcmAgc3Rp
bGwgd29yayBmb3IgcmV0dXJuZWQgZXJyb3JzLlxuICBQcm9wVHlwZUVycm9yLnByb3RvdHlwZSA9
IEVycm9yLnByb3RvdHlwZTtcblxuICBmdW5jdGlvbiBjcmVhdGVDaGFpbmFibGVUeXBlQ2hlY2tl
cih2YWxpZGF0ZSkge1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rp
b24nKSB7XG4gICAgICB2YXIgbWFudWFsUHJvcFR5cGVDYWxsQ2FjaGUgPSB7fTtcbiAgICAgIHZh
ciBtYW51YWxQcm9wVHlwZVdhcm5pbmdDb3VudCA9IDA7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGNo
ZWNrVHlwZShpc1JlcXVpcmVkLCBwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0
aW9uLCBwcm9wRnVsbE5hbWUsIHNlY3JldCkge1xuICAgICAgY29tcG9uZW50TmFtZSA9IGNvbXBv
bmVudE5hbWUgfHwgQU5PTllNT1VTO1xuICAgICAgcHJvcEZ1bGxOYW1lID0gcHJvcEZ1bGxOYW1l
IHx8IHByb3BOYW1lO1xuXG4gICAgICBpZiAoc2VjcmV0ICE9PSBSZWFjdFByb3BUeXBlc1NlY3Jl
dCkge1xuICAgICAgICBpZiAodGhyb3dPbkRpcmVjdEFjY2Vzcykge1xuICAgICAgICAgIC8vIE5l
dyBiZWhhdmlvciBvbmx5IGZvciB1c2VycyBvZiBgcHJvcC10eXBlc2AgcGFja2FnZVxuICAgICAg
ICAgIGludmFyaWFudChcbiAgICAgICAgICAgIGZhbHNlLFxuICAgICAgICAgICAgJ0NhbGxpbmcg
UHJvcFR5cGVzIHZhbGlkYXRvcnMgZGlyZWN0bHkgaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgYHBy
b3AtdHlwZXNgIHBhY2thZ2UuICcgK1xuICAgICAgICAgICAgJ1VzZSBgUHJvcFR5cGVzLmNoZWNr
UHJvcFR5cGVzKClgIHRvIGNhbGwgdGhlbS4gJyArXG4gICAgICAgICAgICAnUmVhZCBtb3JlIGF0
IGh0dHA6Ly9mYi5tZS91c2UtY2hlY2stcHJvcC10eXBlcydcbiAgICAgICAgICApO1xuICAgICAg
ICB9IGVsc2UgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgdHlw
ZW9mIGNvbnNvbGUgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgLy8gT2xkIGJlaGF2aW9y
IGZvciBwZW9wbGUgdXNpbmcgUmVhY3QuUHJvcFR5cGVzXG4gICAgICAgICAgdmFyIGNhY2hlS2V5
ID0gY29tcG9uZW50TmFtZSArICc6JyArIHByb3BOYW1lO1xuICAgICAgICAgIGlmIChcbiAgICAg
ICAgICAgICFtYW51YWxQcm9wVHlwZUNhbGxDYWNoZVtjYWNoZUtleV0gJiZcbiAgICAgICAgICAg
IC8vIEF2b2lkIHNwYW1taW5nIHRoZSBjb25zb2xlIGJlY2F1c2UgdGhleSBhcmUgb2Z0ZW4gbm90
IGFjdGlvbmFibGUgZXhjZXB0IGZvciBsaWIgYXV0aG9yc1xuICAgICAgICAgICAgbWFudWFsUHJv
cFR5cGVXYXJuaW5nQ291bnQgPCAzXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICB3YXJuaW5n
KFxuICAgICAgICAgICAgICBmYWxzZSxcbiAgICAgICAgICAgICAgJ1lvdSBhcmUgbWFudWFsbHkg
Y2FsbGluZyBhIFJlYWN0LlByb3BUeXBlcyB2YWxpZGF0aW9uICcgK1xuICAgICAgICAgICAgICAn
ZnVuY3Rpb24gZm9yIHRoZSBgJXNgIHByb3Agb24gYCVzYC4gVGhpcyBpcyBkZXByZWNhdGVkICcg
K1xuICAgICAgICAgICAgICAnYW5kIHdpbGwgdGhyb3cgaW4gdGhlIHN0YW5kYWxvbmUgYHByb3At
dHlwZXNgIHBhY2thZ2UuICcgK1xuICAgICAgICAgICAgICAnWW91IG1heSBiZSBzZWVpbmcgdGhp
cyB3YXJuaW5nIGR1ZSB0byBhIHRoaXJkLXBhcnR5IFByb3BUeXBlcyAnICtcbiAgICAgICAgICAg
ICAgJ2xpYnJhcnkuIFNlZSBodHRwczovL2ZiLm1lL3JlYWN0LXdhcm5pbmctZG9udC1jYWxsLXBy
b3B0eXBlcyAnICsgJ2ZvciBkZXRhaWxzLicsXG4gICAgICAgICAgICAgIHByb3BGdWxsTmFtZSxc
biAgICAgICAgICAgICAgY29tcG9uZW50TmFtZVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAg
IG1hbnVhbFByb3BUeXBlQ2FsbENhY2hlW2NhY2hlS2V5XSA9IHRydWU7XG4gICAgICAgICAgICBt
YW51YWxQcm9wVHlwZVdhcm5pbmdDb3VudCsrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAg
ICAgfVxuICAgICAgaWYgKHByb3BzW3Byb3BOYW1lXSA9PSBudWxsKSB7XG4gICAgICAgIGlmIChp
c1JlcXVpcmVkKSB7XG4gICAgICAgICAgaWYgKHByb3BzW3Byb3BOYW1lXSA9PT0gbnVsbCkge1xu
ICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9wVHlwZUVycm9yKCdUaGUgJyArIGxvY2F0aW9uICsg
JyBgJyArIHByb3BGdWxsTmFtZSArICdgIGlzIG1hcmtlZCBhcyByZXF1aXJlZCAnICsgKCdpbiBg
JyArIGNvbXBvbmVudE5hbWUgKyAnYCwgYnV0IGl0cyB2YWx1ZSBpcyBgbnVsbGAuJykpO1xuICAg
ICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gbmV3IFByb3BUeXBlRXJyb3IoJ1RoZSAnICsgbG9j
YXRpb24gKyAnIGAnICsgcHJvcEZ1bGxOYW1lICsgJ2AgaXMgbWFya2VkIGFzIHJlcXVpcmVkIGlu
ICcgKyAoJ2AnICsgY29tcG9uZW50TmFtZSArICdgLCBidXQgaXRzIHZhbHVlIGlzIGB1bmRlZmlu
ZWRgLicpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH0gZWxzZSB7
XG4gICAgICAgIHJldHVybiB2YWxpZGF0ZShwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUs
IGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciBjaGFp
bmVkQ2hlY2tUeXBlID0gY2hlY2tUeXBlLmJpbmQobnVsbCwgZmFsc2UpO1xuICAgIGNoYWluZWRD
aGVja1R5cGUuaXNSZXF1aXJlZCA9IGNoZWNrVHlwZS5iaW5kKG51bGwsIHRydWUpO1xuXG4gICAg
cmV0dXJuIGNoYWluZWRDaGVja1R5cGU7XG4gIH1cblxuICBmdW5jdGlvbiBjcmVhdGVQcmltaXRp
dmVUeXBlQ2hlY2tlcihleHBlY3RlZFR5cGUpIHtcbiAgICBmdW5jdGlvbiB2YWxpZGF0ZShwcm9w
cywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUsIHNlY3Jl
dCkge1xuICAgICAgdmFyIHByb3BWYWx1ZSA9IHByb3BzW3Byb3BOYW1lXTtcbiAgICAgIHZhciBw
cm9wVHlwZSA9IGdldFByb3BUeXBlKHByb3BWYWx1ZSk7XG4gICAgICBpZiAocHJvcFR5cGUgIT09
IGV4cGVjdGVkVHlwZSkge1xuICAgICAgICAvLyBgcHJvcFZhbHVlYCBiZWluZyBpbnN0YW5jZSBv
Ziwgc2F5LCBkYXRlL3JlZ2V4cCwgcGFzcyB0aGUgJ29iamVjdCdcbiAgICAgICAgLy8gY2hlY2ss
IGJ1dCB3ZSBjYW4gb2ZmZXIgYSBtb3JlIHByZWNpc2UgZXJyb3IgbWVzc2FnZSBoZXJlIHJhdGhl
ciB0aGFuXG4gICAgICAgIC8vICdvZiB0eXBlIGBvYmplY3RgJy5cbiAgICAgICAgdmFyIHByZWNp
c2VUeXBlID0gZ2V0UHJlY2lzZVR5cGUocHJvcFZhbHVlKTtcblxuICAgICAgICByZXR1cm4gbmV3
IFByb3BUeXBlRXJyb3IoJ0ludmFsaWQgJyArIGxvY2F0aW9uICsgJyBgJyArIHByb3BGdWxsTmFt
ZSArICdgIG9mIHR5cGUgJyArICgnYCcgKyBwcmVjaXNlVHlwZSArICdgIHN1cHBsaWVkIHRvIGAn
ICsgY29tcG9uZW50TmFtZSArICdgLCBleHBlY3RlZCAnKSArICgnYCcgKyBleHBlY3RlZFR5cGUg
KyAnYC4nKSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJu
IGNyZWF0ZUNoYWluYWJsZVR5cGVDaGVja2VyKHZhbGlkYXRlKTtcbiAgfVxuXG4gIGZ1bmN0aW9u
IGNyZWF0ZUFueVR5cGVDaGVja2VyKCkge1xuICAgIHJldHVybiBjcmVhdGVDaGFpbmFibGVUeXBl
Q2hlY2tlcihlbXB0eUZ1bmN0aW9uLnRoYXRSZXR1cm5zTnVsbCk7XG4gIH1cblxuICBmdW5jdGlv
biBjcmVhdGVBcnJheU9mVHlwZUNoZWNrZXIodHlwZUNoZWNrZXIpIHtcbiAgICBmdW5jdGlvbiB2
YWxpZGF0ZShwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVs
bE5hbWUpIHtcbiAgICAgIGlmICh0eXBlb2YgdHlwZUNoZWNrZXIgIT09ICdmdW5jdGlvbicpIHtc
biAgICAgICAgcmV0dXJuIG5ldyBQcm9wVHlwZUVycm9yKCdQcm9wZXJ0eSBgJyArIHByb3BGdWxs
TmFtZSArICdgIG9mIGNvbXBvbmVudCBgJyArIGNvbXBvbmVudE5hbWUgKyAnYCBoYXMgaW52YWxp
ZCBQcm9wVHlwZSBub3RhdGlvbiBpbnNpZGUgYXJyYXlPZi4nKTtcbiAgICAgIH1cbiAgICAgIHZh
ciBwcm9wVmFsdWUgPSBwcm9wc1twcm9wTmFtZV07XG4gICAgICBpZiAoIUFycmF5LmlzQXJyYXko
cHJvcFZhbHVlKSkge1xuICAgICAgICB2YXIgcHJvcFR5cGUgPSBnZXRQcm9wVHlwZShwcm9wVmFs
dWUpO1xuICAgICAgICByZXR1cm4gbmV3IFByb3BUeXBlRXJyb3IoJ0ludmFsaWQgJyArIGxvY2F0
aW9uICsgJyBgJyArIHByb3BGdWxsTmFtZSArICdgIG9mIHR5cGUgJyArICgnYCcgKyBwcm9wVHlw
ZSArICdgIHN1cHBsaWVkIHRvIGAnICsgY29tcG9uZW50TmFtZSArICdgLCBleHBlY3RlZCBhbiBh
cnJheS4nKSk7XG4gICAgICB9XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BWYWx1ZS5s
ZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgZXJyb3IgPSB0eXBlQ2hlY2tlcihwcm9wVmFsdWUs
IGksIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUgKyAnWycgKyBpICsgJ10n
LCBSZWFjdFByb3BUeXBlc1NlY3JldCk7XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEVy
cm9yKSB7XG4gICAgICAgICAgcmV0dXJuIGVycm9yO1xuICAgICAgICB9XG4gICAgICB9XG4gICAg
ICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIGNyZWF0ZUNoYWluYWJsZVR5cGVDaGVj
a2VyKHZhbGlkYXRlKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNyZWF0ZUVsZW1lbnRUeXBlQ2hlY2tl
cigpIHtcbiAgICBmdW5jdGlvbiB2YWxpZGF0ZShwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5h
bWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUpIHtcbiAgICAgIHZhciBwcm9wVmFsdWUgPSBwcm9w
c1twcm9wTmFtZV07XG4gICAgICBpZiAoIWlzVmFsaWRFbGVtZW50KHByb3BWYWx1ZSkpIHtcbiAg
ICAgICAgdmFyIHByb3BUeXBlID0gZ2V0UHJvcFR5cGUocHJvcFZhbHVlKTtcbiAgICAgICAgcmV0
dXJuIG5ldyBQcm9wVHlwZUVycm9yKCdJbnZhbGlkICcgKyBsb2NhdGlvbiArICcgYCcgKyBwcm9w
RnVsbE5hbWUgKyAnYCBvZiB0eXBlICcgKyAoJ2AnICsgcHJvcFR5cGUgKyAnYCBzdXBwbGllZCB0
byBgJyArIGNvbXBvbmVudE5hbWUgKyAnYCwgZXhwZWN0ZWQgYSBzaW5nbGUgUmVhY3RFbGVtZW50
LicpKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gY3Jl
YXRlQ2hhaW5hYmxlVHlwZUNoZWNrZXIodmFsaWRhdGUpO1xuICB9XG5cbiAgZnVuY3Rpb24gY3Jl
YXRlSW5zdGFuY2VUeXBlQ2hlY2tlcihleHBlY3RlZENsYXNzKSB7XG4gICAgZnVuY3Rpb24gdmFs
aWRhdGUocHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxO
YW1lKSB7XG4gICAgICBpZiAoIShwcm9wc1twcm9wTmFtZV0gaW5zdGFuY2VvZiBleHBlY3RlZENs
YXNzKSkge1xuICAgICAgICB2YXIgZXhwZWN0ZWRDbGFzc05hbWUgPSBleHBlY3RlZENsYXNzLm5h
bWUgfHwgQU5PTllNT1VTO1xuICAgICAgICB2YXIgYWN0dWFsQ2xhc3NOYW1lID0gZ2V0Q2xhc3NO
YW1lKHByb3BzW3Byb3BOYW1lXSk7XG4gICAgICAgIHJldHVybiBuZXcgUHJvcFR5cGVFcnJvcign
SW52YWxpZCAnICsgbG9jYXRpb24gKyAnIGAnICsgcHJvcEZ1bGxOYW1lICsgJ2Agb2YgdHlwZSAn
ICsgKCdgJyArIGFjdHVhbENsYXNzTmFtZSArICdgIHN1cHBsaWVkIHRvIGAnICsgY29tcG9uZW50
TmFtZSArICdgLCBleHBlY3RlZCAnKSArICgnaW5zdGFuY2Ugb2YgYCcgKyBleHBlY3RlZENsYXNz
TmFtZSArICdgLicpKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBy
ZXR1cm4gY3JlYXRlQ2hhaW5hYmxlVHlwZUNoZWNrZXIodmFsaWRhdGUpO1xuICB9XG5cbiAgZnVu
Y3Rpb24gY3JlYXRlRW51bVR5cGVDaGVja2VyKGV4cGVjdGVkVmFsdWVzKSB7XG4gICAgaWYgKCFB
cnJheS5pc0FycmF5KGV4cGVjdGVkVmFsdWVzKSkge1xuICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9F
TlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdJbnZhbGlkIGFyZ3VtZW50IHN1
cHBsaWVkIHRvIG9uZU9mLCBleHBlY3RlZCBhbiBpbnN0YW5jZSBvZiBhcnJheS4nKSA6IHZvaWQg
MDtcbiAgICAgIHJldHVybiBlbXB0eUZ1bmN0aW9uLnRoYXRSZXR1cm5zTnVsbDtcbiAgICB9XG5c
biAgICBmdW5jdGlvbiB2YWxpZGF0ZShwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUsIGxv
Y2F0aW9uLCBwcm9wRnVsbE5hbWUpIHtcbiAgICAgIHZhciBwcm9wVmFsdWUgPSBwcm9wc1twcm9w
TmFtZV07XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGV4cGVjdGVkVmFsdWVzLmxlbmd0aDsg
aSsrKSB7XG4gICAgICAgIGlmIChpcyhwcm9wVmFsdWUsIGV4cGVjdGVkVmFsdWVzW2ldKSkge1xu
ICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHZhciB2
YWx1ZXNTdHJpbmcgPSBKU09OLnN0cmluZ2lmeShleHBlY3RlZFZhbHVlcyk7XG4gICAgICByZXR1
cm4gbmV3IFByb3BUeXBlRXJyb3IoJ0ludmFsaWQgJyArIGxvY2F0aW9uICsgJyBgJyArIHByb3BG
dWxsTmFtZSArICdgIG9mIHZhbHVlIGAnICsgcHJvcFZhbHVlICsgJ2AgJyArICgnc3VwcGxpZWQg
dG8gYCcgKyBjb21wb25lbnROYW1lICsgJ2AsIGV4cGVjdGVkIG9uZSBvZiAnICsgdmFsdWVzU3Ry
aW5nICsgJy4nKSk7XG4gICAgfVxuICAgIHJldHVybiBjcmVhdGVDaGFpbmFibGVUeXBlQ2hlY2tl
cih2YWxpZGF0ZSk7XG4gIH1cblxuICBmdW5jdGlvbiBjcmVhdGVPYmplY3RPZlR5cGVDaGVja2Vy
KHR5cGVDaGVja2VyKSB7XG4gICAgZnVuY3Rpb24gdmFsaWRhdGUocHJvcHMsIHByb3BOYW1lLCBj
b21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lKSB7XG4gICAgICBpZiAodHlwZW9m
IHR5cGVDaGVja2VyICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvcFR5
cGVFcnJvcignUHJvcGVydHkgYCcgKyBwcm9wRnVsbE5hbWUgKyAnYCBvZiBjb21wb25lbnQgYCcg
KyBjb21wb25lbnROYW1lICsgJ2AgaGFzIGludmFsaWQgUHJvcFR5cGUgbm90YXRpb24gaW5zaWRl
IG9iamVjdE9mLicpO1xuICAgICAgfVxuICAgICAgdmFyIHByb3BWYWx1ZSA9IHByb3BzW3Byb3BO
YW1lXTtcbiAgICAgIHZhciBwcm9wVHlwZSA9IGdldFByb3BUeXBlKHByb3BWYWx1ZSk7XG4gICAg
ICBpZiAocHJvcFR5cGUgIT09ICdvYmplY3QnKSB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvcFR5
cGVFcnJvcignSW52YWxpZCAnICsgbG9jYXRpb24gKyAnIGAnICsgcHJvcEZ1bGxOYW1lICsgJ2Ag
b2YgdHlwZSAnICsgKCdgJyArIHByb3BUeXBlICsgJ2Agc3VwcGxpZWQgdG8gYCcgKyBjb21wb25l
bnROYW1lICsgJ2AsIGV4cGVjdGVkIGFuIG9iamVjdC4nKSk7XG4gICAgICB9XG4gICAgICBmb3Ig
KHZhciBrZXkgaW4gcHJvcFZhbHVlKSB7XG4gICAgICAgIGlmIChwcm9wVmFsdWUuaGFzT3duUHJv
cGVydHkoa2V5KSkge1xuICAgICAgICAgIHZhciBlcnJvciA9IHR5cGVDaGVja2VyKHByb3BWYWx1
ZSwga2V5LCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lICsgJy4nICsga2V5
LCBSZWFjdFByb3BUeXBlc1NlY3JldCk7XG4gICAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2Yg
RXJyb3IpIHtcbiAgICAgICAgICAgIHJldHVybiBlcnJvcjtcbiAgICAgICAgICB9XG4gICAgICAg
IH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gY3JlYXRl
Q2hhaW5hYmxlVHlwZUNoZWNrZXIodmFsaWRhdGUpO1xuICB9XG5cbiAgZnVuY3Rpb24gY3JlYXRl
VW5pb25UeXBlQ2hlY2tlcihhcnJheU9mVHlwZUNoZWNrZXJzKSB7XG4gICAgaWYgKCFBcnJheS5p
c0FycmF5KGFycmF5T2ZUeXBlQ2hlY2tlcnMpKSB7XG4gICAgICBwcm9jZXNzLmVudi5OT0RFX0VO
ViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ0ludmFsaWQgYXJndW1lbnQgc3Vw
cGxpZWQgdG8gb25lT2ZUeXBlLCBleHBlY3RlZCBhbiBpbnN0YW5jZSBvZiBhcnJheS4nKSA6IHZv
aWQgMDtcbiAgICAgIHJldHVybiBlbXB0eUZ1bmN0aW9uLnRoYXRSZXR1cm5zTnVsbDtcbiAgICB9
XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFycmF5T2ZUeXBlQ2hlY2tlcnMubGVuZ3RoOyBp
KyspIHtcbiAgICAgIHZhciBjaGVja2VyID0gYXJyYXlPZlR5cGVDaGVja2Vyc1tpXTtcbiAgICAg
IGlmICh0eXBlb2YgY2hlY2tlciAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB3YXJuaW5nKFxu
ICAgICAgICAgIGZhbHNlLFxuICAgICAgICAgICdJbnZhbGlkIGFyZ3VtZW50IHN1cHBsaWQgdG8g
b25lT2ZUeXBlLiBFeHBlY3RlZCBhbiBhcnJheSBvZiBjaGVjayBmdW5jdGlvbnMsIGJ1dCAnICtc
biAgICAgICAgICAncmVjZWl2ZWQgJXMgYXQgaW5kZXggJXMuJyxcbiAgICAgICAgICBnZXRQb3N0
Zml4Rm9yVHlwZVdhcm5pbmcoY2hlY2tlciksXG4gICAgICAgICAgaVxuICAgICAgICApO1xuICAg
ICAgICByZXR1cm4gZW1wdHlGdW5jdGlvbi50aGF0UmV0dXJuc051bGw7XG4gICAgICB9XG4gICAg
fVxuXG4gICAgZnVuY3Rpb24gdmFsaWRhdGUocHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1l
LCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lKSB7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFy
cmF5T2ZUeXBlQ2hlY2tlcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIGNoZWNrZXIgPSBh
cnJheU9mVHlwZUNoZWNrZXJzW2ldO1xuICAgICAgICBpZiAoY2hlY2tlcihwcm9wcywgcHJvcE5h
bWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUsIFJlYWN0UHJvcFR5cGVz
U2VjcmV0KSA9PSBudWxsKSB7XG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAg
ICAgIH1cblxuICAgICAgcmV0dXJuIG5ldyBQcm9wVHlwZUVycm9yKCdJbnZhbGlkICcgKyBsb2Nh
dGlvbiArICcgYCcgKyBwcm9wRnVsbE5hbWUgKyAnYCBzdXBwbGllZCB0byAnICsgKCdgJyArIGNv
bXBvbmVudE5hbWUgKyAnYC4nKSk7XG4gICAgfVxuICAgIHJldHVybiBjcmVhdGVDaGFpbmFibGVU
eXBlQ2hlY2tlcih2YWxpZGF0ZSk7XG4gIH1cblxuICBmdW5jdGlvbiBjcmVhdGVOb2RlQ2hlY2tl
cigpIHtcbiAgICBmdW5jdGlvbiB2YWxpZGF0ZShwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5h
bWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUpIHtcbiAgICAgIGlmICghaXNOb2RlKHByb3BzW3By
b3BOYW1lXSkpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9wVHlwZUVycm9yKCdJbnZhbGlkICcg
KyBsb2NhdGlvbiArICcgYCcgKyBwcm9wRnVsbE5hbWUgKyAnYCBzdXBwbGllZCB0byAnICsgKCdg
JyArIGNvbXBvbmVudE5hbWUgKyAnYCwgZXhwZWN0ZWQgYSBSZWFjdE5vZGUuJykpO1xuICAgICAg
fVxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJldHVybiBjcmVhdGVDaGFpbmFibGVU
eXBlQ2hlY2tlcih2YWxpZGF0ZSk7XG4gIH1cblxuICBmdW5jdGlvbiBjcmVhdGVTaGFwZVR5cGVD
aGVja2VyKHNoYXBlVHlwZXMpIHtcbiAgICBmdW5jdGlvbiB2YWxpZGF0ZShwcm9wcywgcHJvcE5h
bWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUpIHtcbiAgICAgIHZhciBw
cm9wVmFsdWUgPSBwcm9wc1twcm9wTmFtZV07XG4gICAgICB2YXIgcHJvcFR5cGUgPSBnZXRQcm9w
VHlwZShwcm9wVmFsdWUpO1xuICAgICAgaWYgKHByb3BUeXBlICE9PSAnb2JqZWN0Jykge1xuICAg
ICAgICByZXR1cm4gbmV3IFByb3BUeXBlRXJyb3IoJ0ludmFsaWQgJyArIGxvY2F0aW9uICsgJyBg
JyArIHByb3BGdWxsTmFtZSArICdgIG9mIHR5cGUgYCcgKyBwcm9wVHlwZSArICdgICcgKyAoJ3N1
cHBsaWVkIHRvIGAnICsgY29tcG9uZW50TmFtZSArICdgLCBleHBlY3RlZCBgb2JqZWN0YC4nKSk7
XG4gICAgICB9XG4gICAgICBmb3IgKHZhciBrZXkgaW4gc2hhcGVUeXBlcykge1xuICAgICAgICB2
YXIgY2hlY2tlciA9IHNoYXBlVHlwZXNba2V5XTtcbiAgICAgICAgaWYgKCFjaGVja2VyKSB7XG4g
ICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGVycm9yID0gY2hlY2tl
cihwcm9wVmFsdWUsIGtleSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSAr
ICcuJyArIGtleSwgUmVhY3RQcm9wVHlwZXNTZWNyZXQpO1xuICAgICAgICBpZiAoZXJyb3IpIHtc
biAgICAgICAgICByZXR1cm4gZXJyb3I7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVy
biBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gY3JlYXRlQ2hhaW5hYmxlVHlwZUNoZWNrZXIodmFs
aWRhdGUpO1xuICB9XG5cbiAgZnVuY3Rpb24gaXNOb2RlKHByb3BWYWx1ZSkge1xuICAgIHN3aXRj
aCAodHlwZW9mIHByb3BWYWx1ZSkge1xuICAgICAgY2FzZSAnbnVtYmVyJzpcbiAgICAgIGNhc2Ug
J3N0cmluZyc6XG4gICAgICBjYXNlICd1bmRlZmluZWQnOlxuICAgICAgICByZXR1cm4gdHJ1ZTtc
biAgICAgIGNhc2UgJ2Jvb2xlYW4nOlxuICAgICAgICByZXR1cm4gIXByb3BWYWx1ZTtcbiAgICAg
IGNhc2UgJ29iamVjdCc6XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHByb3BWYWx1ZSkpIHtc
biAgICAgICAgICByZXR1cm4gcHJvcFZhbHVlLmV2ZXJ5KGlzTm9kZSk7XG4gICAgICAgIH1cbiAg
ICAgICAgaWYgKHByb3BWYWx1ZSA9PT0gbnVsbCB8fCBpc1ZhbGlkRWxlbWVudChwcm9wVmFsdWUp
KSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgaXRl
cmF0b3JGbiA9IGdldEl0ZXJhdG9yRm4ocHJvcFZhbHVlKTtcbiAgICAgICAgaWYgKGl0ZXJhdG9y
Rm4pIHtcbiAgICAgICAgICB2YXIgaXRlcmF0b3IgPSBpdGVyYXRvckZuLmNhbGwocHJvcFZhbHVl
KTtcbiAgICAgICAgICB2YXIgc3RlcDtcbiAgICAgICAgICBpZiAoaXRlcmF0b3JGbiAhPT0gcHJv
cFZhbHVlLmVudHJpZXMpIHtcbiAgICAgICAgICAgIHdoaWxlICghKHN0ZXAgPSBpdGVyYXRvci5u
ZXh0KCkpLmRvbmUpIHtcbiAgICAgICAgICAgICAgaWYgKCFpc05vZGUoc3RlcC52YWx1ZSkpIHtc
biAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAg
ICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gSXRlcmF0b3Igd2lsbCBw
cm92aWRlIGVudHJ5IFtrLHZdIHR1cGxlcyByYXRoZXIgdGhhbiB2YWx1ZXMuXG4gICAgICAgICAg
ICB3aGlsZSAoIShzdGVwID0gaXRlcmF0b3IubmV4dCgpKS5kb25lKSB7XG4gICAgICAgICAgICAg
IHZhciBlbnRyeSA9IHN0ZXAudmFsdWU7XG4gICAgICAgICAgICAgIGlmIChlbnRyeSkge1xuICAg
ICAgICAgICAgICAgIGlmICghaXNOb2RlKGVudHJ5WzFdKSkge1xuICAgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAg
ICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4g
ZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIGRlZmF1bHQ6
XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBpc1N5bWJv
bChwcm9wVHlwZSwgcHJvcFZhbHVlKSB7XG4gICAgLy8gTmF0aXZlIFN5bWJvbC5cbiAgICBpZiAo
cHJvcFR5cGUgPT09ICdzeW1ib2wnKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAg
ICAvLyAxOS40LjMuNSBTeW1ib2wucHJvdG90eXBlW0BAdG9TdHJpbmdUYWddID09PSAnU3ltYm9s
J1xuICAgIGlmIChwcm9wVmFsdWVbJ0BAdG9TdHJpbmdUYWcnXSA9PT0gJ1N5bWJvbCcpIHtcbiAg
ICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIC8vIEZhbGxiYWNrIGZvciBub24tc3BlYyBj
b21wbGlhbnQgU3ltYm9scyB3aGljaCBhcmUgcG9seWZpbGxlZC5cbiAgICBpZiAodHlwZW9mIFN5
bWJvbCA9PT0gJ2Z1bmN0aW9uJyAmJiBwcm9wVmFsdWUgaW5zdGFuY2VvZiBTeW1ib2wpIHtcbiAg
ICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8v
IEVxdWl2YWxlbnQgb2YgYHR5cGVvZmAgYnV0IHdpdGggc3BlY2lhbCBoYW5kbGluZyBmb3IgYXJy
YXkgYW5kIHJlZ2V4cC5cbiAgZnVuY3Rpb24gZ2V0UHJvcFR5cGUocHJvcFZhbHVlKSB7XG4gICAg
dmFyIHByb3BUeXBlID0gdHlwZW9mIHByb3BWYWx1ZTtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShw
cm9wVmFsdWUpKSB7XG4gICAgICByZXR1cm4gJ2FycmF5JztcbiAgICB9XG4gICAgaWYgKHByb3BW
YWx1ZSBpbnN0YW5jZW9mIFJlZ0V4cCkge1xuICAgICAgLy8gT2xkIHdlYmtpdHMgKGF0IGxlYXN0
IHVudGlsIEFuZHJvaWQgNC4wKSByZXR1cm4gJ2Z1bmN0aW9uJyByYXRoZXIgdGhhblxuICAgICAg
Ly8gJ29iamVjdCcgZm9yIHR5cGVvZiBhIFJlZ0V4cC4gV2UnbGwgbm9ybWFsaXplIHRoaXMgaGVy
ZSBzbyB0aGF0IC9ibGEvXG4gICAgICAvLyBwYXNzZXMgUHJvcFR5cGVzLm9iamVjdC5cbiAgICAg
IHJldHVybiAnb2JqZWN0JztcbiAgICB9XG4gICAgaWYgKGlzU3ltYm9sKHByb3BUeXBlLCBwcm9w
VmFsdWUpKSB7XG4gICAgICByZXR1cm4gJ3N5bWJvbCc7XG4gICAgfVxuICAgIHJldHVybiBwcm9w
VHlwZTtcbiAgfVxuXG4gIC8vIFRoaXMgaGFuZGxlcyBtb3JlIHR5cGVzIHRoYW4gYGdldFByb3BU
eXBlYC4gT25seSB1c2VkIGZvciBlcnJvciBtZXNzYWdlcy5cbiAgLy8gU2VlIGBjcmVhdGVQcmlt
aXRpdmVUeXBlQ2hlY2tlcmAuXG4gIGZ1bmN0aW9uIGdldFByZWNpc2VUeXBlKHByb3BWYWx1ZSkg
e1xuICAgIGlmICh0eXBlb2YgcHJvcFZhbHVlID09PSAndW5kZWZpbmVkJyB8fCBwcm9wVmFsdWUg
PT09IG51bGwpIHtcbiAgICAgIHJldHVybiAnJyArIHByb3BWYWx1ZTtcbiAgICB9XG4gICAgdmFy
IHByb3BUeXBlID0gZ2V0UHJvcFR5cGUocHJvcFZhbHVlKTtcbiAgICBpZiAocHJvcFR5cGUgPT09
ICdvYmplY3QnKSB7XG4gICAgICBpZiAocHJvcFZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAg
ICAgICByZXR1cm4gJ2RhdGUnO1xuICAgICAgfSBlbHNlIGlmIChwcm9wVmFsdWUgaW5zdGFuY2Vv
ZiBSZWdFeHApIHtcbiAgICAgICAgcmV0dXJuICdyZWdleHAnO1xuICAgICAgfVxuICAgIH1cbiAg
ICByZXR1cm4gcHJvcFR5cGU7XG4gIH1cblxuICAvLyBSZXR1cm5zIGEgc3RyaW5nIHRoYXQgaXMg
cG9zdGZpeGVkIHRvIGEgd2FybmluZyBhYm91dCBhbiBpbnZhbGlkIHR5cGUuXG4gIC8vIEZvciBl
eGFtcGxlLCBcInVuZGVmaW5lZFwiIG9yIFwib2YgdHlwZSBhcnJheVwiXG4gIGZ1bmN0aW9uIGdl
dFBvc3RmaXhGb3JUeXBlV2FybmluZyh2YWx1ZSkge1xuICAgIHZhciB0eXBlID0gZ2V0UHJlY2lz
ZVR5cGUodmFsdWUpO1xuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSAnYXJyYXknOlxu
ICAgICAgY2FzZSAnb2JqZWN0JzpcbiAgICAgICAgcmV0dXJuICdhbiAnICsgdHlwZTtcbiAgICAg
IGNhc2UgJ2Jvb2xlYW4nOlxuICAgICAgY2FzZSAnZGF0ZSc6XG4gICAgICBjYXNlICdyZWdleHAn
OlxuICAgICAgICByZXR1cm4gJ2EgJyArIHR5cGU7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBy
ZXR1cm4gdHlwZTtcbiAgICB9XG4gIH1cblxuICAvLyBSZXR1cm5zIGNsYXNzIG5hbWUgb2YgdGhl
IG9iamVjdCwgaWYgYW55LlxuICBmdW5jdGlvbiBnZXRDbGFzc05hbWUocHJvcFZhbHVlKSB7XG4g
ICAgaWYgKCFwcm9wVmFsdWUuY29uc3RydWN0b3IgfHwgIXByb3BWYWx1ZS5jb25zdHJ1Y3Rvci5u
YW1lKSB7XG4gICAgICByZXR1cm4gQU5PTllNT1VTO1xuICAgIH1cbiAgICByZXR1cm4gcHJvcFZh
bHVlLmNvbnN0cnVjdG9yLm5hbWU7XG4gIH1cblxuICBSZWFjdFByb3BUeXBlcy5jaGVja1Byb3BU
eXBlcyA9IGNoZWNrUHJvcFR5cGVzO1xuICBSZWFjdFByb3BUeXBlcy5Qcm9wVHlwZXMgPSBSZWFj
dFByb3BUeXBlcztcblxuICByZXR1cm4gUmVhY3RQcm9wVHlwZXM7XG59O1xuXG5cblxuLyoqKioq
KioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcHJvcC10eXBlcy9mYWN0
b3J5V2l0aFR5cGVDaGVja2Vycy5qc1xuICoqIG1vZHVsZSBpZCA9IDEyMlxuICoqIG1vZHVsZSBj
aHVua3MgPSAwXG4gKiovIiwiJ3VzZSBzdHJpY3QnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVp
cmUoJy4vbGliL1JlYWN0RE9NJyk7XG5cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQ
QUNLIEZPT1RFUlxuICoqIC4vfi9yZWFjdC1kb20vaW5kZXguanNcbiAqKiBtb2R1bGUgaWQgPSAx
MjNcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMt
cHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICog
VGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2Ug
Zm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRo
aXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMg
Y2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5Llxu
ICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBBUklBRE9NUHJvcGVydHlDb25maWcgPSB7
XG4gIFByb3BlcnRpZXM6IHtcbiAgICAvLyBHbG9iYWwgU3RhdGVzIGFuZCBQcm9wZXJ0aWVzXG4g
ICAgJ2FyaWEtY3VycmVudCc6IDAsIC8vIHN0YXRlXG4gICAgJ2FyaWEtZGV0YWlscyc6IDAsXG4g
ICAgJ2FyaWEtZGlzYWJsZWQnOiAwLCAvLyBzdGF0ZVxuICAgICdhcmlhLWhpZGRlbic6IDAsIC8v
IHN0YXRlXG4gICAgJ2FyaWEtaW52YWxpZCc6IDAsIC8vIHN0YXRlXG4gICAgJ2FyaWEta2V5c2hv
cnRjdXRzJzogMCxcbiAgICAnYXJpYS1sYWJlbCc6IDAsXG4gICAgJ2FyaWEtcm9sZWRlc2NyaXB0
aW9uJzogMCxcbiAgICAvLyBXaWRnZXQgQXR0cmlidXRlc1xuICAgICdhcmlhLWF1dG9jb21wbGV0
ZSc6IDAsXG4gICAgJ2FyaWEtY2hlY2tlZCc6IDAsXG4gICAgJ2FyaWEtZXhwYW5kZWQnOiAwLFxu
ICAgICdhcmlhLWhhc3BvcHVwJzogMCxcbiAgICAnYXJpYS1sZXZlbCc6IDAsXG4gICAgJ2FyaWEt
bW9kYWwnOiAwLFxuICAgICdhcmlhLW11bHRpbGluZSc6IDAsXG4gICAgJ2FyaWEtbXVsdGlzZWxl
Y3RhYmxlJzogMCxcbiAgICAnYXJpYS1vcmllbnRhdGlvbic6IDAsXG4gICAgJ2FyaWEtcGxhY2Vo
b2xkZXInOiAwLFxuICAgICdhcmlhLXByZXNzZWQnOiAwLFxuICAgICdhcmlhLXJlYWRvbmx5Jzog
MCxcbiAgICAnYXJpYS1yZXF1aXJlZCc6IDAsXG4gICAgJ2FyaWEtc2VsZWN0ZWQnOiAwLFxuICAg
ICdhcmlhLXNvcnQnOiAwLFxuICAgICdhcmlhLXZhbHVlbWF4JzogMCxcbiAgICAnYXJpYS12YWx1
ZW1pbic6IDAsXG4gICAgJ2FyaWEtdmFsdWVub3cnOiAwLFxuICAgICdhcmlhLXZhbHVldGV4dCc6
IDAsXG4gICAgLy8gTGl2ZSBSZWdpb24gQXR0cmlidXRlc1xuICAgICdhcmlhLWF0b21pYyc6IDAs
XG4gICAgJ2FyaWEtYnVzeSc6IDAsXG4gICAgJ2FyaWEtbGl2ZSc6IDAsXG4gICAgJ2FyaWEtcmVs
ZXZhbnQnOiAwLFxuICAgIC8vIERyYWctYW5kLURyb3AgQXR0cmlidXRlc1xuICAgICdhcmlhLWRy
b3BlZmZlY3QnOiAwLFxuICAgICdhcmlhLWdyYWJiZWQnOiAwLFxuICAgIC8vIFJlbGF0aW9uc2hp
cCBBdHRyaWJ1dGVzXG4gICAgJ2FyaWEtYWN0aXZlZGVzY2VuZGFudCc6IDAsXG4gICAgJ2FyaWEt
Y29sY291bnQnOiAwLFxuICAgICdhcmlhLWNvbGluZGV4JzogMCxcbiAgICAnYXJpYS1jb2xzcGFu
JzogMCxcbiAgICAnYXJpYS1jb250cm9scyc6IDAsXG4gICAgJ2FyaWEtZGVzY3JpYmVkYnknOiAw
LFxuICAgICdhcmlhLWVycm9ybWVzc2FnZSc6IDAsXG4gICAgJ2FyaWEtZmxvd3RvJzogMCxcbiAg
ICAnYXJpYS1sYWJlbGxlZGJ5JzogMCxcbiAgICAnYXJpYS1vd25zJzogMCxcbiAgICAnYXJpYS1w
b3NpbnNldCc6IDAsXG4gICAgJ2FyaWEtcm93Y291bnQnOiAwLFxuICAgICdhcmlhLXJvd2luZGV4
JzogMCxcbiAgICAnYXJpYS1yb3dzcGFuJzogMCxcbiAgICAnYXJpYS1zZXRzaXplJzogMFxuICB9
LFxuICBET01BdHRyaWJ1dGVOYW1lczoge30sXG4gIERPTVByb3BlcnR5TmFtZXM6IHt9XG59O1xu
XG5tb2R1bGUuZXhwb3J0cyA9IEFSSUFET01Qcm9wZXJ0eUNvbmZpZztcblxuXG4vKioqKioqKioq
KioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFjdC1kb20vbGliL0FSSUFE
T01Qcm9wZXJ0eUNvbmZpZy5qc1xuICoqIG1vZHVsZSBpZCA9IDEyNFxuICoqIG1vZHVsZSBjaHVu
a3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywg
SW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlz
IGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJ
Q0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4g
YWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhl
IFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICovXG5cbid1c2Ugc3Ry
aWN0JztcblxudmFyIFJlYWN0RE9NQ29tcG9uZW50VHJlZSA9IHJlcXVpcmUoJy4vUmVhY3RET01D
b21wb25lbnRUcmVlJyk7XG5cbnZhciBmb2N1c05vZGUgPSByZXF1aXJlKCdmYmpzL2xpYi9mb2N1
c05vZGUnKTtcblxudmFyIEF1dG9Gb2N1c1V0aWxzID0ge1xuICBmb2N1c0RPTUNvbXBvbmVudDog
ZnVuY3Rpb24gKCkge1xuICAgIGZvY3VzTm9kZShSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0Tm9k
ZUZyb21JbnN0YW5jZSh0aGlzKSk7XG4gIH1cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gQXV0b0Zv
Y3VzVXRpbHM7XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAq
KiAuL34vcmVhY3QtZG9tL2xpYi9BdXRvRm9jdXNVdGlscy5qc1xuICoqIG1vZHVsZSBpZCA9IDEy
NVxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1w
cmVzZW50IEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRo
aXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZv
dW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlz
IHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNh
biBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAq
XG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgRXZlbnRQcm9wYWdhdG9ycyA9IHJlcXVpcmUo
Jy4vRXZlbnRQcm9wYWdhdG9ycycpO1xudmFyIEV4ZWN1dGlvbkVudmlyb25tZW50ID0gcmVxdWly
ZSgnZmJqcy9saWIvRXhlY3V0aW9uRW52aXJvbm1lbnQnKTtcbnZhciBGYWxsYmFja0NvbXBvc2l0
aW9uU3RhdGUgPSByZXF1aXJlKCcuL0ZhbGxiYWNrQ29tcG9zaXRpb25TdGF0ZScpO1xudmFyIFN5
bnRoZXRpY0NvbXBvc2l0aW9uRXZlbnQgPSByZXF1aXJlKCcuL1N5bnRoZXRpY0NvbXBvc2l0aW9u
RXZlbnQnKTtcbnZhciBTeW50aGV0aWNJbnB1dEV2ZW50ID0gcmVxdWlyZSgnLi9TeW50aGV0aWNJ
bnB1dEV2ZW50Jyk7XG5cbnZhciBFTkRfS0VZQ09ERVMgPSBbOSwgMTMsIDI3LCAzMl07IC8vIFRh
YiwgUmV0dXJuLCBFc2MsIFNwYWNlXG52YXIgU1RBUlRfS0VZQ09ERSA9IDIyOTtcblxudmFyIGNh
blVzZUNvbXBvc2l0aW9uRXZlbnQgPSBFeGVjdXRpb25FbnZpcm9ubWVudC5jYW5Vc2VET00gJiYg
J0NvbXBvc2l0aW9uRXZlbnQnIGluIHdpbmRvdztcblxudmFyIGRvY3VtZW50TW9kZSA9IG51bGw7
XG5pZiAoRXhlY3V0aW9uRW52aXJvbm1lbnQuY2FuVXNlRE9NICYmICdkb2N1bWVudE1vZGUnIGlu
IGRvY3VtZW50KSB7XG4gIGRvY3VtZW50TW9kZSA9IGRvY3VtZW50LmRvY3VtZW50TW9kZTtcbn1c
blxuLy8gV2Via2l0IG9mZmVycyBhIHZlcnkgdXNlZnVsIGB0ZXh0SW5wdXRgIGV2ZW50IHRoYXQg
Y2FuIGJlIHVzZWQgdG9cbi8vIGRpcmVjdGx5IHJlcHJlc2VudCBgYmVmb3JlSW5wdXRgLiBUaGUg
SUUgYHRleHRpbnB1dGAgZXZlbnQgaXMgbm90IGFzXG4vLyB1c2VmdWwsIHNvIHdlIGRvbid0IHVz
ZSBpdC5cbnZhciBjYW5Vc2VUZXh0SW5wdXRFdmVudCA9IEV4ZWN1dGlvbkVudmlyb25tZW50LmNh
blVzZURPTSAmJiAnVGV4dEV2ZW50JyBpbiB3aW5kb3cgJiYgIWRvY3VtZW50TW9kZSAmJiAhaXNQ
cmVzdG8oKTtcblxuLy8gSW4gSUU5Kywgd2UgaGF2ZSBhY2Nlc3MgdG8gY29tcG9zaXRpb24gZXZl
bnRzLCBidXQgdGhlIGRhdGEgc3VwcGxpZWRcbi8vIGJ5IHRoZSBuYXRpdmUgY29tcG9zaXRpb25l
bmQgZXZlbnQgbWF5IGJlIGluY29ycmVjdC4gSmFwYW5lc2UgaWRlb2dyYXBoaWNcbi8vIHNwYWNl
cywgZm9yIGluc3RhbmNlIChcXHUzMDAwKSBhcmUgbm90IHJlY29yZGVkIGNvcnJlY3RseS5cbnZh
ciB1c2VGYWxsYmFja0NvbXBvc2l0aW9uRGF0YSA9IEV4ZWN1dGlvbkVudmlyb25tZW50LmNhblVz
ZURPTSAmJiAoIWNhblVzZUNvbXBvc2l0aW9uRXZlbnQgfHwgZG9jdW1lbnRNb2RlICYmIGRvY3Vt
ZW50TW9kZSA+IDggJiYgZG9jdW1lbnRNb2RlIDw9IDExKTtcblxuLyoqXG4gKiBPcGVyYSA8PSAx
MiBpbmNsdWRlcyBUZXh0RXZlbnQgaW4gd2luZG93LCBidXQgZG9lcyBub3QgZmlyZVxuICogdGV4
dCBpbnB1dCBldmVudHMuIFJlbHkgb24ga2V5cHJlc3MgaW5zdGVhZC5cbiAqL1xuZnVuY3Rpb24g
aXNQcmVzdG8oKSB7XG4gIHZhciBvcGVyYSA9IHdpbmRvdy5vcGVyYTtcbiAgcmV0dXJuIHR5cGVv
ZiBvcGVyYSA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG9wZXJhLnZlcnNpb24gPT09ICdmdW5jdGlv
bicgJiYgcGFyc2VJbnQob3BlcmEudmVyc2lvbigpLCAxMCkgPD0gMTI7XG59XG5cbnZhciBTUEFD
RUJBUl9DT0RFID0gMzI7XG52YXIgU1BBQ0VCQVJfQ0hBUiA9IFN0cmluZy5mcm9tQ2hhckNvZGUo
U1BBQ0VCQVJfQ09ERSk7XG5cbi8vIEV2ZW50cyBhbmQgdGhlaXIgY29ycmVzcG9uZGluZyBwcm9w
ZXJ0eSBuYW1lcy5cbnZhciBldmVudFR5cGVzID0ge1xuICBiZWZvcmVJbnB1dDoge1xuICAgIHBo
YXNlZFJlZ2lzdHJhdGlvbk5hbWVzOiB7XG4gICAgICBidWJibGVkOiAnb25CZWZvcmVJbnB1dCcs
XG4gICAgICBjYXB0dXJlZDogJ29uQmVmb3JlSW5wdXRDYXB0dXJlJ1xuICAgIH0sXG4gICAgZGVw
ZW5kZW5jaWVzOiBbJ3RvcENvbXBvc2l0aW9uRW5kJywgJ3RvcEtleVByZXNzJywgJ3RvcFRleHRJ
bnB1dCcsICd0b3BQYXN0ZSddXG4gIH0sXG4gIGNvbXBvc2l0aW9uRW5kOiB7XG4gICAgcGhhc2Vk
UmVnaXN0cmF0aW9uTmFtZXM6IHtcbiAgICAgIGJ1YmJsZWQ6ICdvbkNvbXBvc2l0aW9uRW5kJyxc
biAgICAgIGNhcHR1cmVkOiAnb25Db21wb3NpdGlvbkVuZENhcHR1cmUnXG4gICAgfSxcbiAgICBk
ZXBlbmRlbmNpZXM6IFsndG9wQmx1cicsICd0b3BDb21wb3NpdGlvbkVuZCcsICd0b3BLZXlEb3du
JywgJ3RvcEtleVByZXNzJywgJ3RvcEtleVVwJywgJ3RvcE1vdXNlRG93biddXG4gIH0sXG4gIGNv
bXBvc2l0aW9uU3RhcnQ6IHtcbiAgICBwaGFzZWRSZWdpc3RyYXRpb25OYW1lczoge1xuICAgICAg
YnViYmxlZDogJ29uQ29tcG9zaXRpb25TdGFydCcsXG4gICAgICBjYXB0dXJlZDogJ29uQ29tcG9z
aXRpb25TdGFydENhcHR1cmUnXG4gICAgfSxcbiAgICBkZXBlbmRlbmNpZXM6IFsndG9wQmx1cics
ICd0b3BDb21wb3NpdGlvblN0YXJ0JywgJ3RvcEtleURvd24nLCAndG9wS2V5UHJlc3MnLCAndG9w
S2V5VXAnLCAndG9wTW91c2VEb3duJ11cbiAgfSxcbiAgY29tcG9zaXRpb25VcGRhdGU6IHtcbiAg
ICBwaGFzZWRSZWdpc3RyYXRpb25OYW1lczoge1xuICAgICAgYnViYmxlZDogJ29uQ29tcG9zaXRp
b25VcGRhdGUnLFxuICAgICAgY2FwdHVyZWQ6ICdvbkNvbXBvc2l0aW9uVXBkYXRlQ2FwdHVyZSdc
biAgICB9LFxuICAgIGRlcGVuZGVuY2llczogWyd0b3BCbHVyJywgJ3RvcENvbXBvc2l0aW9uVXBk
YXRlJywgJ3RvcEtleURvd24nLCAndG9wS2V5UHJlc3MnLCAndG9wS2V5VXAnLCAndG9wTW91c2VE
b3duJ11cbiAgfVxufTtcblxuLy8gVHJhY2sgd2hldGhlciB3ZSd2ZSBldmVyIGhhbmRsZWQgYSBr
ZXlwcmVzcyBvbiB0aGUgc3BhY2Uga2V5LlxudmFyIGhhc1NwYWNlS2V5cHJlc3MgPSBmYWxzZTtc
blxuLyoqXG4gKiBSZXR1cm4gd2hldGhlciBhIG5hdGl2ZSBrZXlwcmVzcyBldmVudCBpcyBhc3N1
bWVkIHRvIGJlIGEgY29tbWFuZC5cbiAqIFRoaXMgaXMgcmVxdWlyZWQgYmVjYXVzZSBGaXJlZm94
IGZpcmVzIGBrZXlwcmVzc2AgZXZlbnRzIGZvciBrZXkgY29tbWFuZHNcbiAqIChjdXQsIGNvcHks
IHNlbGVjdC1hbGwsIGV0Yy4pIGV2ZW4gdGhvdWdoIG5vIGNoYXJhY3RlciBpcyBpbnNlcnRlZC5c
biAqL1xuZnVuY3Rpb24gaXNLZXlwcmVzc0NvbW1hbmQobmF0aXZlRXZlbnQpIHtcbiAgcmV0dXJu
IChuYXRpdmVFdmVudC5jdHJsS2V5IHx8IG5hdGl2ZUV2ZW50LmFsdEtleSB8fCBuYXRpdmVFdmVu
dC5tZXRhS2V5KSAmJlxuICAvLyBjdHJsS2V5ICYmIGFsdEtleSBpcyBlcXVpdmFsZW50IHRvIEFs
dEdyLCBhbmQgaXMgbm90IGEgY29tbWFuZC5cbiAgIShuYXRpdmVFdmVudC5jdHJsS2V5ICYmIG5h
dGl2ZUV2ZW50LmFsdEtleSk7XG59XG5cbi8qKlxuICogVHJhbnNsYXRlIG5hdGl2ZSB0b3AgbGV2
ZWwgZXZlbnRzIGludG8gZXZlbnQgdHlwZXMuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHRvcExl
dmVsVHlwZVxuICogQHJldHVybiB7b2JqZWN0fVxuICovXG5mdW5jdGlvbiBnZXRDb21wb3NpdGlv
bkV2ZW50VHlwZSh0b3BMZXZlbFR5cGUpIHtcbiAgc3dpdGNoICh0b3BMZXZlbFR5cGUpIHtcbiAg
ICBjYXNlICd0b3BDb21wb3NpdGlvblN0YXJ0JzpcbiAgICAgIHJldHVybiBldmVudFR5cGVzLmNv
bXBvc2l0aW9uU3RhcnQ7XG4gICAgY2FzZSAndG9wQ29tcG9zaXRpb25FbmQnOlxuICAgICAgcmV0
dXJuIGV2ZW50VHlwZXMuY29tcG9zaXRpb25FbmQ7XG4gICAgY2FzZSAndG9wQ29tcG9zaXRpb25V
cGRhdGUnOlxuICAgICAgcmV0dXJuIGV2ZW50VHlwZXMuY29tcG9zaXRpb25VcGRhdGU7XG4gIH1c
bn1cblxuLyoqXG4gKiBEb2VzIG91ciBmYWxsYmFjayBiZXN0LWd1ZXNzIG1vZGVsIHRoaW5rIHRo
aXMgZXZlbnQgc2lnbmlmaWVzIHRoYXRcbiAqIGNvbXBvc2l0aW9uIGhhcyBiZWd1bj9cbiAqXG4g
KiBAcGFyYW0ge3N0cmluZ30gdG9wTGV2ZWxUeXBlXG4gKiBAcGFyYW0ge29iamVjdH0gbmF0aXZl
RXZlbnRcbiAqIEByZXR1cm4ge2Jvb2xlYW59XG4gKi9cbmZ1bmN0aW9uIGlzRmFsbGJhY2tDb21w
b3NpdGlvblN0YXJ0KHRvcExldmVsVHlwZSwgbmF0aXZlRXZlbnQpIHtcbiAgcmV0dXJuIHRvcExl
dmVsVHlwZSA9PT0gJ3RvcEtleURvd24nICYmIG5hdGl2ZUV2ZW50LmtleUNvZGUgPT09IFNUQVJU
X0tFWUNPREU7XG59XG5cbi8qKlxuICogRG9lcyBvdXIgZmFsbGJhY2sgbW9kZSB0aGluayB0aGF0
IHRoaXMgZXZlbnQgaXMgdGhlIGVuZCBvZiBjb21wb3NpdGlvbj9cbiAqXG4gKiBAcGFyYW0ge3N0
cmluZ30gdG9wTGV2ZWxUeXBlXG4gKiBAcGFyYW0ge29iamVjdH0gbmF0aXZlRXZlbnRcbiAqIEBy
ZXR1cm4ge2Jvb2xlYW59XG4gKi9cbmZ1bmN0aW9uIGlzRmFsbGJhY2tDb21wb3NpdGlvbkVuZCh0
b3BMZXZlbFR5cGUsIG5hdGl2ZUV2ZW50KSB7XG4gIHN3aXRjaCAodG9wTGV2ZWxUeXBlKSB7XG4g
ICAgY2FzZSAndG9wS2V5VXAnOlxuICAgICAgLy8gQ29tbWFuZCBrZXlzIGluc2VydCBvciBjbGVh
ciBJTUUgaW5wdXQuXG4gICAgICByZXR1cm4gRU5EX0tFWUNPREVTLmluZGV4T2YobmF0aXZlRXZl
bnQua2V5Q29kZSkgIT09IC0xO1xuICAgIGNhc2UgJ3RvcEtleURvd24nOlxuICAgICAgLy8gRXhw
ZWN0IElNRSBrZXlDb2RlIG9uIGVhY2gga2V5ZG93bi4gSWYgd2UgZ2V0IGFueSBvdGhlclxuICAg
ICAgLy8gY29kZSB3ZSBtdXN0IGhhdmUgZXhpdGVkIGVhcmxpZXIuXG4gICAgICByZXR1cm4gbmF0
aXZlRXZlbnQua2V5Q29kZSAhPT0gU1RBUlRfS0VZQ09ERTtcbiAgICBjYXNlICd0b3BLZXlQcmVz
cyc6XG4gICAgY2FzZSAndG9wTW91c2VEb3duJzpcbiAgICBjYXNlICd0b3BCbHVyJzpcbiAgICAg
IC8vIEV2ZW50cyBhcmUgbm90IHBvc3NpYmxlIHdpdGhvdXQgY2FuY2VsbGluZyBJTUUuXG4gICAg
ICByZXR1cm4gdHJ1ZTtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIGZhbHNlO1xuICB9XG59
XG5cbi8qKlxuICogR29vZ2xlIElucHV0IFRvb2xzIHByb3ZpZGVzIGNvbXBvc2l0aW9uIGRhdGEg
dmlhIGEgQ3VzdG9tRXZlbnQsXG4gKiB3aXRoIHRoZSBgZGF0YWAgcHJvcGVydHkgcG9wdWxhdGVk
IGluIHRoZSBgZGV0YWlsYCBvYmplY3QuIElmIHRoaXNcbiAqIGlzIGF2YWlsYWJsZSBvbiB0aGUg
ZXZlbnQgb2JqZWN0LCB1c2UgaXQuIElmIG5vdCwgdGhpcyBpcyBhIHBsYWluXG4gKiBjb21wb3Np
dGlvbiBldmVudCBhbmQgd2UgaGF2ZSBub3RoaW5nIHNwZWNpYWwgdG8gZXh0cmFjdC5cbiAqXG4g
KiBAcGFyYW0ge29iamVjdH0gbmF0aXZlRXZlbnRcbiAqIEByZXR1cm4gez9zdHJpbmd9XG4gKi9c
bmZ1bmN0aW9uIGdldERhdGFGcm9tQ3VzdG9tRXZlbnQobmF0aXZlRXZlbnQpIHtcbiAgdmFyIGRl
dGFpbCA9IG5hdGl2ZUV2ZW50LmRldGFpbDtcbiAgaWYgKHR5cGVvZiBkZXRhaWwgPT09ICdvYmpl
Y3QnICYmICdkYXRhJyBpbiBkZXRhaWwpIHtcbiAgICByZXR1cm4gZGV0YWlsLmRhdGE7XG4gIH1c
biAgcmV0dXJuIG51bGw7XG59XG5cbi8vIFRyYWNrIHRoZSBjdXJyZW50IElNRSBjb21wb3NpdGlv
biBmYWxsYmFjayBvYmplY3QsIGlmIGFueS5cbnZhciBjdXJyZW50Q29tcG9zaXRpb24gPSBudWxs
O1xuXG4vKipcbiAqIEByZXR1cm4gez9vYmplY3R9IEEgU3ludGhldGljQ29tcG9zaXRpb25FdmVu
dC5cbiAqL1xuZnVuY3Rpb24gZXh0cmFjdENvbXBvc2l0aW9uRXZlbnQodG9wTGV2ZWxUeXBlLCB0
YXJnZXRJbnN0LCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpIHtcbiAgdmFyIGV2ZW50
VHlwZTtcbiAgdmFyIGZhbGxiYWNrRGF0YTtcblxuICBpZiAoY2FuVXNlQ29tcG9zaXRpb25FdmVu
dCkge1xuICAgIGV2ZW50VHlwZSA9IGdldENvbXBvc2l0aW9uRXZlbnRUeXBlKHRvcExldmVsVHlw
ZSk7XG4gIH0gZWxzZSBpZiAoIWN1cnJlbnRDb21wb3NpdGlvbikge1xuICAgIGlmIChpc0ZhbGxi
YWNrQ29tcG9zaXRpb25TdGFydCh0b3BMZXZlbFR5cGUsIG5hdGl2ZUV2ZW50KSkge1xuICAgICAg
ZXZlbnRUeXBlID0gZXZlbnRUeXBlcy5jb21wb3NpdGlvblN0YXJ0O1xuICAgIH1cbiAgfSBlbHNl
IGlmIChpc0ZhbGxiYWNrQ29tcG9zaXRpb25FbmQodG9wTGV2ZWxUeXBlLCBuYXRpdmVFdmVudCkp
IHtcbiAgICBldmVudFR5cGUgPSBldmVudFR5cGVzLmNvbXBvc2l0aW9uRW5kO1xuICB9XG5cbiAg
aWYgKCFldmVudFR5cGUpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGlmICh1c2VGYWxs
YmFja0NvbXBvc2l0aW9uRGF0YSkge1xuICAgIC8vIFRoZSBjdXJyZW50IGNvbXBvc2l0aW9uIGlz
IHN0b3JlZCBzdGF0aWNhbGx5IGFuZCBtdXN0IG5vdCBiZVxuICAgIC8vIG92ZXJ3cml0dGVuIHdo
aWxlIGNvbXBvc2l0aW9uIGNvbnRpbnVlcy5cbiAgICBpZiAoIWN1cnJlbnRDb21wb3NpdGlvbiAm
JiBldmVudFR5cGUgPT09IGV2ZW50VHlwZXMuY29tcG9zaXRpb25TdGFydCkge1xuICAgICAgY3Vy
cmVudENvbXBvc2l0aW9uID0gRmFsbGJhY2tDb21wb3NpdGlvblN0YXRlLmdldFBvb2xlZChuYXRp
dmVFdmVudFRhcmdldCk7XG4gICAgfSBlbHNlIGlmIChldmVudFR5cGUgPT09IGV2ZW50VHlwZXMu
Y29tcG9zaXRpb25FbmQpIHtcbiAgICAgIGlmIChjdXJyZW50Q29tcG9zaXRpb24pIHtcbiAgICAg
ICAgZmFsbGJhY2tEYXRhID0gY3VycmVudENvbXBvc2l0aW9uLmdldERhdGEoKTtcbiAgICAgIH1c
biAgICB9XG4gIH1cblxuICB2YXIgZXZlbnQgPSBTeW50aGV0aWNDb21wb3NpdGlvbkV2ZW50Lmdl
dFBvb2xlZChldmVudFR5cGUsIHRhcmdldEluc3QsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRh
cmdldCk7XG5cbiAgaWYgKGZhbGxiYWNrRGF0YSkge1xuICAgIC8vIEluamVjdCBkYXRhIGdlbmVy
YXRlZCBmcm9tIGZhbGxiYWNrIHBhdGggaW50byB0aGUgc3ludGhldGljIGV2ZW50LlxuICAgIC8v
IFRoaXMgbWF0Y2hlcyB0aGUgcHJvcGVydHkgb2YgbmF0aXZlIENvbXBvc2l0aW9uRXZlbnRJbnRl
cmZhY2UuXG4gICAgZXZlbnQuZGF0YSA9IGZhbGxiYWNrRGF0YTtcbiAgfSBlbHNlIHtcbiAgICB2
YXIgY3VzdG9tRGF0YSA9IGdldERhdGFGcm9tQ3VzdG9tRXZlbnQobmF0aXZlRXZlbnQpO1xuICAg
IGlmIChjdXN0b21EYXRhICE9PSBudWxsKSB7XG4gICAgICBldmVudC5kYXRhID0gY3VzdG9tRGF0
YTtcbiAgICB9XG4gIH1cblxuICBFdmVudFByb3BhZ2F0b3JzLmFjY3VtdWxhdGVUd29QaGFzZURp
c3BhdGNoZXMoZXZlbnQpO1xuICByZXR1cm4gZXZlbnQ7XG59XG5cbi8qKlxuICogQHBhcmFtIHtz
dHJpbmd9IHRvcExldmVsVHlwZSBSZWNvcmQgZnJvbSBgRXZlbnRDb25zdGFudHNgLlxuICogQHBh
cmFtIHtvYmplY3R9IG5hdGl2ZUV2ZW50IE5hdGl2ZSBicm93c2VyIGV2ZW50LlxuICogQHJldHVy
biB7P3N0cmluZ30gVGhlIHN0cmluZyBjb3JyZXNwb25kaW5nIHRvIHRoaXMgYGJlZm9yZUlucHV0
YCBldmVudC5cbiAqL1xuZnVuY3Rpb24gZ2V0TmF0aXZlQmVmb3JlSW5wdXRDaGFycyh0b3BMZXZl
bFR5cGUsIG5hdGl2ZUV2ZW50KSB7XG4gIHN3aXRjaCAodG9wTGV2ZWxUeXBlKSB7XG4gICAgY2Fz
ZSAndG9wQ29tcG9zaXRpb25FbmQnOlxuICAgICAgcmV0dXJuIGdldERhdGFGcm9tQ3VzdG9tRXZl
bnQobmF0aXZlRXZlbnQpO1xuICAgIGNhc2UgJ3RvcEtleVByZXNzJzpcbiAgICAgIC8qKlxuICAg
ICAgICogSWYgbmF0aXZlIGB0ZXh0SW5wdXRgIGV2ZW50cyBhcmUgYXZhaWxhYmxlLCBvdXIgZ29h
bCBpcyB0byBtYWtlXG4gICAgICAgKiB1c2Ugb2YgdGhlbS4gSG93ZXZlciwgdGhlcmUgaXMgYSBz
cGVjaWFsIGNhc2U6IHRoZSBzcGFjZWJhciBrZXkuXG4gICAgICAgKiBJbiBXZWJraXQsIHByZXZl
bnRpbmcgZGVmYXVsdCBvbiBhIHNwYWNlYmFyIGB0ZXh0SW5wdXRgIGV2ZW50XG4gICAgICAgKiBj
YW5jZWxzIGNoYXJhY3RlciBpbnNlcnRpb24sIGJ1dCBpdCAqYWxzbyogY2F1c2VzIHRoZSBicm93
c2VyXG4gICAgICAgKiB0byBmYWxsIGJhY2sgdG8gaXRzIGRlZmF1bHQgc3BhY2ViYXIgYmVoYXZp
b3Igb2Ygc2Nyb2xsaW5nIHRoZVxuICAgICAgICogcGFnZS5cbiAgICAgICAqXG4gICAgICAgKiBU
cmFja2luZyBhdDpcbiAgICAgICAqIGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvY2hyb21pdW0v
aXNzdWVzL2RldGFpbD9pZD0zNTUxMDNcbiAgICAgICAqXG4gICAgICAgKiBUbyBhdm9pZCB0aGlz
IGlzc3VlLCB1c2UgdGhlIGtleXByZXNzIGV2ZW50IGFzIGlmIG5vIGB0ZXh0SW5wdXRgXG4gICAg
ICAgKiBldmVudCBpcyBhdmFpbGFibGUuXG4gICAgICAgKi9cbiAgICAgIHZhciB3aGljaCA9IG5h
dGl2ZUV2ZW50LndoaWNoO1xuICAgICAgaWYgKHdoaWNoICE9PSBTUEFDRUJBUl9DT0RFKSB7XG4g
ICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuXG4gICAgICBoYXNTcGFjZUtleXByZXNzID0g
dHJ1ZTtcbiAgICAgIHJldHVybiBTUEFDRUJBUl9DSEFSO1xuXG4gICAgY2FzZSAndG9wVGV4dElu
cHV0JzpcbiAgICAgIC8vIFJlY29yZCB0aGUgY2hhcmFjdGVycyB0byBiZSBhZGRlZCB0byB0aGUg
RE9NLlxuICAgICAgdmFyIGNoYXJzID0gbmF0aXZlRXZlbnQuZGF0YTtcblxuICAgICAgLy8gSWYg
aXQncyBhIHNwYWNlYmFyIGNoYXJhY3RlciwgYXNzdW1lIHRoYXQgd2UgaGF2ZSBhbHJlYWR5IGhh
bmRsZWRcbiAgICAgIC8vIGl0IGF0IHRoZSBrZXlwcmVzcyBsZXZlbCBhbmQgYmFpbCBpbW1lZGlh
dGVseS4gQW5kcm9pZCBDaHJvbWVcbiAgICAgIC8vIGRvZXNuJ3QgZ2l2ZSB1cyBrZXljb2Rlcywg
c28gd2UgbmVlZCB0byBibGFja2xpc3QgaXQuXG4gICAgICBpZiAoY2hhcnMgPT09IFNQQUNFQkFS
X0NIQVIgJiYgaGFzU3BhY2VLZXlwcmVzcykge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAg
IH1cblxuICAgICAgcmV0dXJuIGNoYXJzO1xuXG4gICAgZGVmYXVsdDpcbiAgICAgIC8vIEZvciBv
dGhlciBuYXRpdmUgZXZlbnQgdHlwZXMsIGRvIG5vdGhpbmcuXG4gICAgICByZXR1cm4gbnVsbDtc
biAgfVxufVxuXG4vKipcbiAqIEZvciBicm93c2VycyB0aGF0IGRvIG5vdCBwcm92aWRlIHRoZSBg
dGV4dElucHV0YCBldmVudCwgZXh0cmFjdCB0aGVcbiAqIGFwcHJvcHJpYXRlIHN0cmluZyB0byB1
c2UgZm9yIFN5bnRoZXRpY0lucHV0RXZlbnQuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHRvcExl
dmVsVHlwZSBSZWNvcmQgZnJvbSBgRXZlbnRDb25zdGFudHNgLlxuICogQHBhcmFtIHtvYmplY3R9
IG5hdGl2ZUV2ZW50IE5hdGl2ZSBicm93c2VyIGV2ZW50LlxuICogQHJldHVybiB7P3N0cmluZ30g
VGhlIGZhbGxiYWNrIHN0cmluZyBmb3IgdGhpcyBgYmVmb3JlSW5wdXRgIGV2ZW50LlxuICovXG5m
dW5jdGlvbiBnZXRGYWxsYmFja0JlZm9yZUlucHV0Q2hhcnModG9wTGV2ZWxUeXBlLCBuYXRpdmVF
dmVudCkge1xuICAvLyBJZiB3ZSBhcmUgY3VycmVudGx5IGNvbXBvc2luZyAoSU1FKSBhbmQgdXNp
bmcgYSBmYWxsYmFjayB0byBkbyBzbyxcbiAgLy8gdHJ5IHRvIGV4dHJhY3QgdGhlIGNvbXBvc2Vk
IGNoYXJhY3RlcnMgZnJvbSB0aGUgZmFsbGJhY2sgb2JqZWN0LlxuICAvLyBJZiBjb21wb3NpdGlv
biBldmVudCBpcyBhdmFpbGFibGUsIHdlIGV4dHJhY3QgYSBzdHJpbmcgb25seSBhdFxuICAvLyBj
b21wb3NpdGlvbmV2ZW50LCBvdGhlcndpc2UgZXh0cmFjdCBpdCBhdCBmYWxsYmFjayBldmVudHMu
XG4gIGlmIChjdXJyZW50Q29tcG9zaXRpb24pIHtcbiAgICBpZiAodG9wTGV2ZWxUeXBlID09PSAn
dG9wQ29tcG9zaXRpb25FbmQnIHx8ICFjYW5Vc2VDb21wb3NpdGlvbkV2ZW50ICYmIGlzRmFsbGJh
Y2tDb21wb3NpdGlvbkVuZCh0b3BMZXZlbFR5cGUsIG5hdGl2ZUV2ZW50KSkge1xuICAgICAgdmFy
IGNoYXJzID0gY3VycmVudENvbXBvc2l0aW9uLmdldERhdGEoKTtcbiAgICAgIEZhbGxiYWNrQ29t
cG9zaXRpb25TdGF0ZS5yZWxlYXNlKGN1cnJlbnRDb21wb3NpdGlvbik7XG4gICAgICBjdXJyZW50
Q29tcG9zaXRpb24gPSBudWxsO1xuICAgICAgcmV0dXJuIGNoYXJzO1xuICAgIH1cbiAgICByZXR1
cm4gbnVsbDtcbiAgfVxuXG4gIHN3aXRjaCAodG9wTGV2ZWxUeXBlKSB7XG4gICAgY2FzZSAndG9w
UGFzdGUnOlxuICAgICAgLy8gSWYgYSBwYXN0ZSBldmVudCBvY2N1cnMgYWZ0ZXIgYSBrZXlwcmVz
cywgdGhyb3cgb3V0IHRoZSBpbnB1dFxuICAgICAgLy8gY2hhcnMuIFBhc3RlIGV2ZW50cyBzaG91
bGQgbm90IGxlYWQgdG8gQmVmb3JlSW5wdXQgZXZlbnRzLlxuICAgICAgcmV0dXJuIG51bGw7XG4g
ICAgY2FzZSAndG9wS2V5UHJlc3MnOlxuICAgICAgLyoqXG4gICAgICAgKiBBcyBvZiB2MjcsIEZp
cmVmb3ggbWF5IGZpcmUga2V5cHJlc3MgZXZlbnRzIGV2ZW4gd2hlbiBubyBjaGFyYWN0ZXJcbiAg
ICAgICAqIHdpbGwgYmUgaW5zZXJ0ZWQuIEEgZmV3IHBvc3NpYmlsaXRpZXM6XG4gICAgICAgKlxu
ICAgICAgICogLSBgd2hpY2hgIGlzIGAwYC4gQXJyb3cga2V5cywgRXNjIGtleSwgZXRjLlxuICAg
ICAgICpcbiAgICAgICAqIC0gYHdoaWNoYCBpcyB0aGUgcHJlc3NlZCBrZXkgY29kZSwgYnV0IG5v
IGNoYXIgaXMgYXZhaWxhYmxlLlxuICAgICAgICogICBFeDogJ0FsdEdyICsgZGAgaW4gUG9saXNo
LiBUaGVyZSBpcyBubyBtb2RpZmllZCBjaGFyYWN0ZXIgZm9yXG4gICAgICAgKiAgIHRoaXMga2V5
IGNvbWJpbmF0aW9uIGFuZCBubyBjaGFyYWN0ZXIgaXMgaW5zZXJ0ZWQgaW50byB0aGVcbiAgICAg
ICAqICAgZG9jdW1lbnQsIGJ1dCBGRiBmaXJlcyB0aGUga2V5cHJlc3MgZm9yIGNoYXIgY29kZSBg
MTAwYCBhbnl3YXkuXG4gICAgICAgKiAgIE5vIGBpbnB1dGAgZXZlbnQgd2lsbCBvY2N1ci5cbiAg
ICAgICAqXG4gICAgICAgKiAtIGB3aGljaGAgaXMgdGhlIHByZXNzZWQga2V5IGNvZGUsIGJ1dCBh
IGNvbW1hbmQgY29tYmluYXRpb24gaXNcbiAgICAgICAqICAgYmVpbmcgdXNlZC4gRXg6IGBDbWQr
Q2AuIE5vIGNoYXJhY3RlciBpcyBpbnNlcnRlZCwgYW5kIG5vXG4gICAgICAgKiAgIGBpbnB1dGAg
ZXZlbnQgd2lsbCBvY2N1ci5cbiAgICAgICAqL1xuICAgICAgaWYgKG5hdGl2ZUV2ZW50LndoaWNo
ICYmICFpc0tleXByZXNzQ29tbWFuZChuYXRpdmVFdmVudCkpIHtcbiAgICAgICAgcmV0dXJuIFN0
cmluZy5mcm9tQ2hhckNvZGUobmF0aXZlRXZlbnQud2hpY2gpO1xuICAgICAgfVxuICAgICAgcmV0
dXJuIG51bGw7XG4gICAgY2FzZSAndG9wQ29tcG9zaXRpb25FbmQnOlxuICAgICAgcmV0dXJuIHVz
ZUZhbGxiYWNrQ29tcG9zaXRpb25EYXRhID8gbnVsbCA6IG5hdGl2ZUV2ZW50LmRhdGE7XG4gICAg
ZGVmYXVsdDpcbiAgICAgIHJldHVybiBudWxsO1xuICB9XG59XG5cbi8qKlxuICogRXh0cmFjdCBh
IFN5bnRoZXRpY0lucHV0RXZlbnQgZm9yIGBiZWZvcmVJbnB1dGAsIGJhc2VkIG9uIGVpdGhlciBu
YXRpdmVcbiAqIGB0ZXh0SW5wdXRgIG9yIGZhbGxiYWNrIGJlaGF2aW9yLlxuICpcbiAqIEByZXR1
cm4gez9vYmplY3R9IEEgU3ludGhldGljSW5wdXRFdmVudC5cbiAqL1xuZnVuY3Rpb24gZXh0cmFj
dEJlZm9yZUlucHV0RXZlbnQodG9wTGV2ZWxUeXBlLCB0YXJnZXRJbnN0LCBuYXRpdmVFdmVudCwg
bmF0aXZlRXZlbnRUYXJnZXQpIHtcbiAgdmFyIGNoYXJzO1xuXG4gIGlmIChjYW5Vc2VUZXh0SW5w
dXRFdmVudCkge1xuICAgIGNoYXJzID0gZ2V0TmF0aXZlQmVmb3JlSW5wdXRDaGFycyh0b3BMZXZl
bFR5cGUsIG5hdGl2ZUV2ZW50KTtcbiAgfSBlbHNlIHtcbiAgICBjaGFycyA9IGdldEZhbGxiYWNr
QmVmb3JlSW5wdXRDaGFycyh0b3BMZXZlbFR5cGUsIG5hdGl2ZUV2ZW50KTtcbiAgfVxuXG4gIC8v
IElmIG5vIGNoYXJhY3RlcnMgYXJlIGJlaW5nIGluc2VydGVkLCBubyBCZWZvcmVJbnB1dCBldmVu
dCBzaG91bGRcbiAgLy8gYmUgZmlyZWQuXG4gIGlmICghY2hhcnMpIHtcbiAgICByZXR1cm4gbnVs
bDtcbiAgfVxuXG4gIHZhciBldmVudCA9IFN5bnRoZXRpY0lucHV0RXZlbnQuZ2V0UG9vbGVkKGV2
ZW50VHlwZXMuYmVmb3JlSW5wdXQsIHRhcmdldEluc3QsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVu
dFRhcmdldCk7XG5cbiAgZXZlbnQuZGF0YSA9IGNoYXJzO1xuICBFdmVudFByb3BhZ2F0b3JzLmFj
Y3VtdWxhdGVUd29QaGFzZURpc3BhdGNoZXMoZXZlbnQpO1xuICByZXR1cm4gZXZlbnQ7XG59XG5c
bi8qKlxuICogQ3JlYXRlIGFuIGBvbkJlZm9yZUlucHV0YCBldmVudCB0byBtYXRjaFxuICogaHR0
cDovL3d3dy53My5vcmcvVFIvMjAxMy9XRC1ET00tTGV2ZWwtMy1FdmVudHMtMjAxMzExMDUvI2V2
ZW50cy1pbnB1dGV2ZW50cy5cbiAqXG4gKiBUaGlzIGV2ZW50IHBsdWdpbiBpcyBiYXNlZCBvbiB0
aGUgbmF0aXZlIGB0ZXh0SW5wdXRgIGV2ZW50XG4gKiBhdmFpbGFibGUgaW4gQ2hyb21lLCBTYWZh
cmksIE9wZXJhLCBhbmQgSUUuIFRoaXMgZXZlbnQgZmlyZXMgYWZ0ZXJcbiAqIGBvbktleVByZXNz
YCBhbmQgYG9uQ29tcG9zaXRpb25FbmRgLCBidXQgYmVmb3JlIGBvbklucHV0YC5cbiAqXG4gKiBg
YmVmb3JlSW5wdXRgIGlzIHNwZWMnZCBidXQgbm90IGltcGxlbWVudGVkIGluIGFueSBicm93c2Vy
cywgYW5kXG4gKiB0aGUgYGlucHV0YCBldmVudCBkb2VzIG5vdCBwcm92aWRlIGFueSB1c2VmdWwg
aW5mb3JtYXRpb24gYWJvdXQgd2hhdCBoYXNcbiAqIGFjdHVhbGx5IGJlZW4gYWRkZWQsIGNvbnRy
YXJ5IHRvIHRoZSBzcGVjLiBUaHVzLCBgdGV4dElucHV0YCBpcyB0aGUgYmVzdFxuICogYXZhaWxh
YmxlIGV2ZW50IHRvIGlkZW50aWZ5IHRoZSBjaGFyYWN0ZXJzIHRoYXQgaGF2ZSBhY3R1YWxseSBi
ZWVuIGluc2VydGVkXG4gKiBpbnRvIHRoZSB0YXJnZXQgbm9kZS5cbiAqXG4gKiBUaGlzIHBsdWdp
biBpcyBhbHNvIHJlc3BvbnNpYmxlIGZvciBlbWl0dGluZyBgY29tcG9zaXRpb25gIGV2ZW50cywg
dGh1c1xuICogYWxsb3dpbmcgdXMgdG8gc2hhcmUgY29tcG9zaXRpb24gZmFsbGJhY2sgY29kZSBm
b3IgYm90aCBgYmVmb3JlSW5wdXRgIGFuZFxuICogYGNvbXBvc2l0aW9uYCBldmVudCB0eXBlcy5c
biAqL1xudmFyIEJlZm9yZUlucHV0RXZlbnRQbHVnaW4gPSB7XG4gIGV2ZW50VHlwZXM6IGV2ZW50
VHlwZXMsXG5cbiAgZXh0cmFjdEV2ZW50czogZnVuY3Rpb24gKHRvcExldmVsVHlwZSwgdGFyZ2V0
SW5zdCwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KSB7XG4gICAgcmV0dXJuIFtleHRy
YWN0Q29tcG9zaXRpb25FdmVudCh0b3BMZXZlbFR5cGUsIHRhcmdldEluc3QsIG5hdGl2ZUV2ZW50
LCBuYXRpdmVFdmVudFRhcmdldCksIGV4dHJhY3RCZWZvcmVJbnB1dEV2ZW50KHRvcExldmVsVHlw
ZSwgdGFyZ2V0SW5zdCwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KV07XG4gIH1cbn07
XG5cbm1vZHVsZS5leHBvcnRzID0gQmVmb3JlSW5wdXRFdmVudFBsdWdpbjtcblxuXG4vKioqKioq
KioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFjdC1kb20vbGliL0Jl
Zm9yZUlucHV0RXZlbnRQbHVnaW4uanNcbiAqKiBtb2R1bGUgaWQgPSAxMjZcbiAqKiBtb2R1bGUg
Y2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJv
b2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29k
ZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4g
KiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUu
IEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGlu
IHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNl
IHN0cmljdCc7XG5cbnZhciBDU1NQcm9wZXJ0eSA9IHJlcXVpcmUoJy4vQ1NTUHJvcGVydHknKTtc
bnZhciBFeGVjdXRpb25FbnZpcm9ubWVudCA9IHJlcXVpcmUoJ2ZianMvbGliL0V4ZWN1dGlvbkVu
dmlyb25tZW50Jyk7XG52YXIgUmVhY3RJbnN0cnVtZW50YXRpb24gPSByZXF1aXJlKCcuL1JlYWN0
SW5zdHJ1bWVudGF0aW9uJyk7XG5cbnZhciBjYW1lbGl6ZVN0eWxlTmFtZSA9IHJlcXVpcmUoJ2Zi
anMvbGliL2NhbWVsaXplU3R5bGVOYW1lJyk7XG52YXIgZGFuZ2Vyb3VzU3R5bGVWYWx1ZSA9IHJl
cXVpcmUoJy4vZGFuZ2Vyb3VzU3R5bGVWYWx1ZScpO1xudmFyIGh5cGhlbmF0ZVN0eWxlTmFtZSA9
IHJlcXVpcmUoJ2ZianMvbGliL2h5cGhlbmF0ZVN0eWxlTmFtZScpO1xudmFyIG1lbW9pemVTdHJp
bmdPbmx5ID0gcmVxdWlyZSgnZmJqcy9saWIvbWVtb2l6ZVN0cmluZ09ubHknKTtcbnZhciB3YXJu
aW5nID0gcmVxdWlyZSgnZmJqcy9saWIvd2FybmluZycpO1xuXG52YXIgcHJvY2Vzc1N0eWxlTmFt
ZSA9IG1lbW9pemVTdHJpbmdPbmx5KGZ1bmN0aW9uIChzdHlsZU5hbWUpIHtcbiAgcmV0dXJuIGh5
cGhlbmF0ZVN0eWxlTmFtZShzdHlsZU5hbWUpO1xufSk7XG5cbnZhciBoYXNTaG9ydGhhbmRQcm9w
ZXJ0eUJ1ZyA9IGZhbHNlO1xudmFyIHN0eWxlRmxvYXRBY2Nlc3NvciA9ICdjc3NGbG9hdCc7XG5p
ZiAoRXhlY3V0aW9uRW52aXJvbm1lbnQuY2FuVXNlRE9NKSB7XG4gIHZhciB0ZW1wU3R5bGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKS5zdHlsZTtcbiAgdHJ5IHtcbiAgICAvLyBJRTgg
dGhyb3dzIFwiSW52YWxpZCBhcmd1bWVudC5cIiBpZiByZXNldHRpbmcgc2hvcnRoYW5kIHN0eWxl
IHByb3BlcnRpZXMuXG4gICAgdGVtcFN0eWxlLmZvbnQgPSAnJztcbiAgfSBjYXRjaCAoZSkge1xu
ICAgIGhhc1Nob3J0aGFuZFByb3BlcnR5QnVnID0gdHJ1ZTtcbiAgfVxuICAvLyBJRTggb25seSBz
dXBwb3J0cyBhY2Nlc3NpbmcgY3NzRmxvYXQgKHN0YW5kYXJkKSBhcyBzdHlsZUZsb2F0XG4gIGlm
IChkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUuY3NzRmxvYXQgPT09IHVuZGVmaW5lZCkg
e1xuICAgIHN0eWxlRmxvYXRBY2Nlc3NvciA9ICdzdHlsZUZsb2F0JztcbiAgfVxufVxuXG5pZiAo
cHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAvLyAnbXNUcmFuc2Zv
cm0nIGlzIGNvcnJlY3QsIGJ1dCB0aGUgb3RoZXIgcHJlZml4ZXMgc2hvdWxkIGJlIGNhcGl0YWxp
emVkXG4gIHZhciBiYWRWZW5kb3JlZFN0eWxlTmFtZVBhdHRlcm4gPSAvXig/OndlYmtpdHxtb3p8
bylbQS1aXS87XG5cbiAgLy8gc3R5bGUgdmFsdWVzIHNob3VsZG4ndCBjb250YWluIGEgc2VtaWNv
bG9uXG4gIHZhciBiYWRTdHlsZVZhbHVlV2l0aFNlbWljb2xvblBhdHRlcm4gPSAvO1xccyokLztc
blxuICB2YXIgd2FybmVkU3R5bGVOYW1lcyA9IHt9O1xuICB2YXIgd2FybmVkU3R5bGVWYWx1ZXMg
PSB7fTtcbiAgdmFyIHdhcm5lZEZvck5hTlZhbHVlID0gZmFsc2U7XG5cbiAgdmFyIHdhcm5IeXBo
ZW5hdGVkU3R5bGVOYW1lID0gZnVuY3Rpb24gKG5hbWUsIG93bmVyKSB7XG4gICAgaWYgKHdhcm5l
ZFN0eWxlTmFtZXMuaGFzT3duUHJvcGVydHkobmFtZSkgJiYgd2FybmVkU3R5bGVOYW1lc1tuYW1l
XSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHdhcm5lZFN0eWxlTmFtZXNbbmFtZV0g
PSB0cnVlO1xuICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJu
aW5nKGZhbHNlLCAnVW5zdXBwb3J0ZWQgc3R5bGUgcHJvcGVydHkgJXMuIERpZCB5b3UgbWVhbiAl
cz8lcycsIG5hbWUsIGNhbWVsaXplU3R5bGVOYW1lKG5hbWUpLCBjaGVja1JlbmRlck1lc3NhZ2Uo
b3duZXIpKSA6IHZvaWQgMDtcbiAgfTtcblxuICB2YXIgd2FybkJhZFZlbmRvcmVkU3R5bGVOYW1l
ID0gZnVuY3Rpb24gKG5hbWUsIG93bmVyKSB7XG4gICAgaWYgKHdhcm5lZFN0eWxlTmFtZXMuaGFz
T3duUHJvcGVydHkobmFtZSkgJiYgd2FybmVkU3R5bGVOYW1lc1tuYW1lXSkge1xuICAgICAgcmV0
dXJuO1xuICAgIH1cblxuICAgIHdhcm5lZFN0eWxlTmFtZXNbbmFtZV0gPSB0cnVlO1xuICAgIHBy
b2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnVW5z
dXBwb3J0ZWQgdmVuZG9yLXByZWZpeGVkIHN0eWxlIHByb3BlcnR5ICVzLiBEaWQgeW91IG1lYW4g
JXM/JXMnLCBuYW1lLCBuYW1lLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgbmFtZS5zbGljZSgx
KSwgY2hlY2tSZW5kZXJNZXNzYWdlKG93bmVyKSkgOiB2b2lkIDA7XG4gIH07XG5cbiAgdmFyIHdh
cm5TdHlsZVZhbHVlV2l0aFNlbWljb2xvbiA9IGZ1bmN0aW9uIChuYW1lLCB2YWx1ZSwgb3duZXIp
IHtcbiAgICBpZiAod2FybmVkU3R5bGVWYWx1ZXMuaGFzT3duUHJvcGVydHkodmFsdWUpICYmIHdh
cm5lZFN0eWxlVmFsdWVzW3ZhbHVlXSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHdh
cm5lZFN0eWxlVmFsdWVzW3ZhbHVlXSA9IHRydWU7XG4gICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYg
IT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsIFwiU3R5bGUgcHJvcGVydHkgdmFsdWVz
IHNob3VsZG4ndCBjb250YWluIGEgc2VtaWNvbG9uLiVzIFwiICsgJ1RyeSBcIiVzOiAlc1wiIGlu
c3RlYWQuJywgY2hlY2tSZW5kZXJNZXNzYWdlKG93bmVyKSwgbmFtZSwgdmFsdWUucmVwbGFjZShi
YWRTdHlsZVZhbHVlV2l0aFNlbWljb2xvblBhdHRlcm4sICcnKSkgOiB2b2lkIDA7XG4gIH07XG5c
biAgdmFyIHdhcm5TdHlsZVZhbHVlSXNOYU4gPSBmdW5jdGlvbiAobmFtZSwgdmFsdWUsIG93bmVy
KSB7XG4gICAgaWYgKHdhcm5lZEZvck5hTlZhbHVlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxu
XG4gICAgd2FybmVkRm9yTmFOVmFsdWUgPSB0cnVlO1xuICAgIHByb2Nlc3MuZW52Lk5PREVfRU5W
ICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnYE5hTmAgaXMgYW4gaW52YWxpZCB2
YWx1ZSBmb3IgdGhlIGAlc2AgY3NzIHN0eWxlIHByb3BlcnR5LiVzJywgbmFtZSwgY2hlY2tSZW5k
ZXJNZXNzYWdlKG93bmVyKSkgOiB2b2lkIDA7XG4gIH07XG5cbiAgdmFyIGNoZWNrUmVuZGVyTWVz
c2FnZSA9IGZ1bmN0aW9uIChvd25lcikge1xuICAgIGlmIChvd25lcikge1xuICAgICAgdmFyIG5h
bWUgPSBvd25lci5nZXROYW1lKCk7XG4gICAgICBpZiAobmFtZSkge1xuICAgICAgICByZXR1cm4g
JyBDaGVjayB0aGUgcmVuZGVyIG1ldGhvZCBvZiBgJyArIG5hbWUgKyAnYC4nO1xuICAgICAgfVxu
ICAgIH1cbiAgICByZXR1cm4gJyc7XG4gIH07XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5n
fSBuYW1lXG4gICAqIEBwYXJhbSB7Kn0gdmFsdWVcbiAgICogQHBhcmFtIHtSZWFjdERPTUNvbXBv
bmVudH0gY29tcG9uZW50XG4gICAqL1xuICB2YXIgd2FyblZhbGlkU3R5bGUgPSBmdW5jdGlvbiAo
bmFtZSwgdmFsdWUsIGNvbXBvbmVudCkge1xuICAgIHZhciBvd25lcjtcbiAgICBpZiAoY29tcG9u
ZW50KSB7XG4gICAgICBvd25lciA9IGNvbXBvbmVudC5fY3VycmVudEVsZW1lbnQuX293bmVyO1xu
ICAgIH1cbiAgICBpZiAobmFtZS5pbmRleE9mKCctJykgPiAtMSkge1xuICAgICAgd2Fybkh5cGhl
bmF0ZWRTdHlsZU5hbWUobmFtZSwgb3duZXIpO1xuICAgIH0gZWxzZSBpZiAoYmFkVmVuZG9yZWRT
dHlsZU5hbWVQYXR0ZXJuLnRlc3QobmFtZSkpIHtcbiAgICAgIHdhcm5CYWRWZW5kb3JlZFN0eWxl
TmFtZShuYW1lLCBvd25lcik7XG4gICAgfSBlbHNlIGlmIChiYWRTdHlsZVZhbHVlV2l0aFNlbWlj
b2xvblBhdHRlcm4udGVzdCh2YWx1ZSkpIHtcbiAgICAgIHdhcm5TdHlsZVZhbHVlV2l0aFNlbWlj
b2xvbihuYW1lLCB2YWx1ZSwgb3duZXIpO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgdmFsdWUg
PT09ICdudW1iZXInICYmIGlzTmFOKHZhbHVlKSkge1xuICAgICAgd2FyblN0eWxlVmFsdWVJc05h
TihuYW1lLCB2YWx1ZSwgb3duZXIpO1xuICAgIH1cbiAgfTtcbn1cblxuLyoqXG4gKiBPcGVyYXRp
b25zIGZvciBkZWFsaW5nIHdpdGggQ1NTIHByb3BlcnRpZXMuXG4gKi9cbnZhciBDU1NQcm9wZXJ0
eU9wZXJhdGlvbnMgPSB7XG4gIC8qKlxuICAgKiBTZXJpYWxpemVzIGEgbWFwcGluZyBvZiBzdHls
ZSBwcm9wZXJ0aWVzIGZvciB1c2UgYXMgaW5saW5lIHN0eWxlczpcbiAgICpcbiAgICogICA+IGNy
ZWF0ZU1hcmt1cEZvclN0eWxlcyh7d2lkdGg6ICcyMDBweCcsIGhlaWdodDogMH0pXG4gICAqICAg
XCJ3aWR0aDoyMDBweDtoZWlnaHQ6MDtcIlxuICAgKlxuICAgKiBVbmRlZmluZWQgdmFsdWVzIGFy
ZSBpZ25vcmVkIHNvIHRoYXQgZGVjbGFyYXRpdmUgcHJvZ3JhbW1pbmcgaXMgZWFzaWVyLlxuICAg
KiBUaGUgcmVzdWx0IHNob3VsZCBiZSBIVE1MLWVzY2FwZWQgYmVmb3JlIGluc2VydGlvbiBpbnRv
IHRoZSBET00uXG4gICAqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBzdHlsZXNcbiAgICogQHBhcmFt
IHtSZWFjdERPTUNvbXBvbmVudH0gY29tcG9uZW50XG4gICAqIEByZXR1cm4gez9zdHJpbmd9XG4g
ICAqL1xuICBjcmVhdGVNYXJrdXBGb3JTdHlsZXM6IGZ1bmN0aW9uIChzdHlsZXMsIGNvbXBvbmVu
dCkge1xuICAgIHZhciBzZXJpYWxpemVkID0gJyc7XG4gICAgZm9yICh2YXIgc3R5bGVOYW1lIGlu
IHN0eWxlcykge1xuICAgICAgaWYgKCFzdHlsZXMuaGFzT3duUHJvcGVydHkoc3R5bGVOYW1lKSkg
e1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIHZhciBpc0N1c3RvbVByb3BlcnR5
ID0gc3R5bGVOYW1lLmluZGV4T2YoJy0tJykgPT09IDA7XG4gICAgICB2YXIgc3R5bGVWYWx1ZSA9
IHN0eWxlc1tzdHlsZU5hbWVdO1xuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAn
cHJvZHVjdGlvbicpIHtcbiAgICAgICAgaWYgKCFpc0N1c3RvbVByb3BlcnR5KSB7XG4gICAgICAg
ICAgd2FyblZhbGlkU3R5bGUoc3R5bGVOYW1lLCBzdHlsZVZhbHVlLCBjb21wb25lbnQpO1xuICAg
ICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoc3R5bGVWYWx1ZSAhPSBudWxsKSB7XG4gICAgICAg
IHNlcmlhbGl6ZWQgKz0gcHJvY2Vzc1N0eWxlTmFtZShzdHlsZU5hbWUpICsgJzonO1xuICAgICAg
ICBzZXJpYWxpemVkICs9IGRhbmdlcm91c1N0eWxlVmFsdWUoc3R5bGVOYW1lLCBzdHlsZVZhbHVl
LCBjb21wb25lbnQsIGlzQ3VzdG9tUHJvcGVydHkpICsgJzsnO1xuICAgICAgfVxuICAgIH1cbiAg
ICByZXR1cm4gc2VyaWFsaXplZCB8fCBudWxsO1xuICB9LFxuXG4gIC8qKlxuICAgKiBTZXRzIHRo
ZSB2YWx1ZSBmb3IgbXVsdGlwbGUgc3R5bGVzIG9uIGEgbm9kZS4gIElmIGEgdmFsdWUgaXMgc3Bl
Y2lmaWVkIGFzXG4gICAqICcnIChlbXB0eSBzdHJpbmcpLCB0aGUgY29ycmVzcG9uZGluZyBzdHls
ZSBwcm9wZXJ0eSB3aWxsIGJlIHVuc2V0LlxuICAgKlxuICAgKiBAcGFyYW0ge0RPTUVsZW1lbnR9
IG5vZGVcbiAgICogQHBhcmFtIHtvYmplY3R9IHN0eWxlc1xuICAgKiBAcGFyYW0ge1JlYWN0RE9N
Q29tcG9uZW50fSBjb21wb25lbnRcbiAgICovXG4gIHNldFZhbHVlRm9yU3R5bGVzOiBmdW5jdGlv
biAobm9kZSwgc3R5bGVzLCBjb21wb25lbnQpIHtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9F
TlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdU
b29sLm9uSG9zdE9wZXJhdGlvbih7XG4gICAgICAgIGluc3RhbmNlSUQ6IGNvbXBvbmVudC5fZGVi
dWdJRCxcbiAgICAgICAgdHlwZTogJ3VwZGF0ZSBzdHlsZXMnLFxuICAgICAgICBwYXlsb2FkOiBz
dHlsZXNcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHZhciBzdHlsZSA9IG5vZGUuc3R5bGU7XG4g
ICAgZm9yICh2YXIgc3R5bGVOYW1lIGluIHN0eWxlcykge1xuICAgICAgaWYgKCFzdHlsZXMuaGFz
T3duUHJvcGVydHkoc3R5bGVOYW1lKSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAg
ICAgIHZhciBpc0N1c3RvbVByb3BlcnR5ID0gc3R5bGVOYW1lLmluZGV4T2YoJy0tJykgPT09IDA7
XG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAg
ICAgICBpZiAoIWlzQ3VzdG9tUHJvcGVydHkpIHtcbiAgICAgICAgICB3YXJuVmFsaWRTdHlsZShz
dHlsZU5hbWUsIHN0eWxlc1tzdHlsZU5hbWVdLCBjb21wb25lbnQpO1xuICAgICAgICB9XG4gICAg
ICB9XG4gICAgICB2YXIgc3R5bGVWYWx1ZSA9IGRhbmdlcm91c1N0eWxlVmFsdWUoc3R5bGVOYW1l
LCBzdHlsZXNbc3R5bGVOYW1lXSwgY29tcG9uZW50LCBpc0N1c3RvbVByb3BlcnR5KTtcbiAgICAg
IGlmIChzdHlsZU5hbWUgPT09ICdmbG9hdCcgfHwgc3R5bGVOYW1lID09PSAnY3NzRmxvYXQnKSB7
XG4gICAgICAgIHN0eWxlTmFtZSA9IHN0eWxlRmxvYXRBY2Nlc3NvcjtcbiAgICAgIH1cbiAgICAg
IGlmIChpc0N1c3RvbVByb3BlcnR5KSB7XG4gICAgICAgIHN0eWxlLnNldFByb3BlcnR5KHN0eWxl
TmFtZSwgc3R5bGVWYWx1ZSk7XG4gICAgICB9IGVsc2UgaWYgKHN0eWxlVmFsdWUpIHtcbiAgICAg
ICAgc3R5bGVbc3R5bGVOYW1lXSA9IHN0eWxlVmFsdWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAg
ICB2YXIgZXhwYW5zaW9uID0gaGFzU2hvcnRoYW5kUHJvcGVydHlCdWcgJiYgQ1NTUHJvcGVydHku
c2hvcnRoYW5kUHJvcGVydHlFeHBhbnNpb25zW3N0eWxlTmFtZV07XG4gICAgICAgIGlmIChleHBh
bnNpb24pIHtcbiAgICAgICAgICAvLyBTaG9ydGhhbmQgcHJvcGVydHkgdGhhdCBJRTggd29uJ3Qg
bGlrZSB1bnNldHRpbmcsIHNvIHVuc2V0IGVhY2hcbiAgICAgICAgICAvLyBjb21wb25lbnQgdG8g
cGxhY2F0ZSBpdFxuICAgICAgICAgIGZvciAodmFyIGluZGl2aWR1YWxTdHlsZU5hbWUgaW4gZXhw
YW5zaW9uKSB7XG4gICAgICAgICAgICBzdHlsZVtpbmRpdmlkdWFsU3R5bGVOYW1lXSA9ICcnO1xu
ICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzdHlsZVtzdHlsZU5hbWVd
ID0gJyc7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn07XG5cbm1vZHVsZS5leHBv
cnRzID0gQ1NTUHJvcGVydHlPcGVyYXRpb25zO1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoq
IFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0LWRvbS9saWIvQ1NTUHJvcGVydHlPcGVyYXRp
b25zLmpzXG4gKiogbW9kdWxlIGlkID0gMTI3XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8i
LCIvKipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwg
cmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5k
ZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGlu
IHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdy
YW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxl
IGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIg
RXZlbnRQbHVnaW5IdWIgPSByZXF1aXJlKCcuL0V2ZW50UGx1Z2luSHViJyk7XG52YXIgRXZlbnRQ
cm9wYWdhdG9ycyA9IHJlcXVpcmUoJy4vRXZlbnRQcm9wYWdhdG9ycycpO1xudmFyIEV4ZWN1dGlv
bkVudmlyb25tZW50ID0gcmVxdWlyZSgnZmJqcy9saWIvRXhlY3V0aW9uRW52aXJvbm1lbnQnKTtc
bnZhciBSZWFjdERPTUNvbXBvbmVudFRyZWUgPSByZXF1aXJlKCcuL1JlYWN0RE9NQ29tcG9uZW50
VHJlZScpO1xudmFyIFJlYWN0VXBkYXRlcyA9IHJlcXVpcmUoJy4vUmVhY3RVcGRhdGVzJyk7XG52
YXIgU3ludGhldGljRXZlbnQgPSByZXF1aXJlKCcuL1N5bnRoZXRpY0V2ZW50Jyk7XG5cbnZhciBp
bnB1dFZhbHVlVHJhY2tpbmcgPSByZXF1aXJlKCcuL2lucHV0VmFsdWVUcmFja2luZycpO1xudmFy
IGdldEV2ZW50VGFyZ2V0ID0gcmVxdWlyZSgnLi9nZXRFdmVudFRhcmdldCcpO1xudmFyIGlzRXZl
bnRTdXBwb3J0ZWQgPSByZXF1aXJlKCcuL2lzRXZlbnRTdXBwb3J0ZWQnKTtcbnZhciBpc1RleHRJ
bnB1dEVsZW1lbnQgPSByZXF1aXJlKCcuL2lzVGV4dElucHV0RWxlbWVudCcpO1xuXG52YXIgZXZl
bnRUeXBlcyA9IHtcbiAgY2hhbmdlOiB7XG4gICAgcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6IHtc
biAgICAgIGJ1YmJsZWQ6ICdvbkNoYW5nZScsXG4gICAgICBjYXB0dXJlZDogJ29uQ2hhbmdlQ2Fw
dHVyZSdcbiAgICB9LFxuICAgIGRlcGVuZGVuY2llczogWyd0b3BCbHVyJywgJ3RvcENoYW5nZScs
ICd0b3BDbGljaycsICd0b3BGb2N1cycsICd0b3BJbnB1dCcsICd0b3BLZXlEb3duJywgJ3RvcEtl
eVVwJywgJ3RvcFNlbGVjdGlvbkNoYW5nZSddXG4gIH1cbn07XG5cbmZ1bmN0aW9uIGNyZWF0ZUFu
ZEFjY3VtdWxhdGVDaGFuZ2VFdmVudChpbnN0LCBuYXRpdmVFdmVudCwgdGFyZ2V0KSB7XG4gIHZh
ciBldmVudCA9IFN5bnRoZXRpY0V2ZW50LmdldFBvb2xlZChldmVudFR5cGVzLmNoYW5nZSwgaW5z
dCwgbmF0aXZlRXZlbnQsIHRhcmdldCk7XG4gIGV2ZW50LnR5cGUgPSAnY2hhbmdlJztcbiAgRXZl
bnRQcm9wYWdhdG9ycy5hY2N1bXVsYXRlVHdvUGhhc2VEaXNwYXRjaGVzKGV2ZW50KTtcbiAgcmV0
dXJuIGV2ZW50O1xufVxuLyoqXG4gKiBGb3IgSUUgc2hpbXNcbiAqL1xudmFyIGFjdGl2ZUVsZW1l
bnQgPSBudWxsO1xudmFyIGFjdGl2ZUVsZW1lbnRJbnN0ID0gbnVsbDtcblxuLyoqXG4gKiBTRUNU
SU9OOiBoYW5kbGUgYGNoYW5nZWAgZXZlbnRcbiAqL1xuZnVuY3Rpb24gc2hvdWxkVXNlQ2hhbmdl
RXZlbnQoZWxlbSkge1xuICB2YXIgbm9kZU5hbWUgPSBlbGVtLm5vZGVOYW1lICYmIGVsZW0ubm9k
ZU5hbWUudG9Mb3dlckNhc2UoKTtcbiAgcmV0dXJuIG5vZGVOYW1lID09PSAnc2VsZWN0JyB8fCBu
b2RlTmFtZSA9PT0gJ2lucHV0JyAmJiBlbGVtLnR5cGUgPT09ICdmaWxlJztcbn1cblxudmFyIGRv
ZXNDaGFuZ2VFdmVudEJ1YmJsZSA9IGZhbHNlO1xuaWYgKEV4ZWN1dGlvbkVudmlyb25tZW50LmNh
blVzZURPTSkge1xuICAvLyBTZWUgYGhhbmRsZUNoYW5nZWAgY29tbWVudCBiZWxvd1xuICBkb2Vz
Q2hhbmdlRXZlbnRCdWJibGUgPSBpc0V2ZW50U3VwcG9ydGVkKCdjaGFuZ2UnKSAmJiAoIWRvY3Vt
ZW50LmRvY3VtZW50TW9kZSB8fCBkb2N1bWVudC5kb2N1bWVudE1vZGUgPiA4KTtcbn1cblxuZnVu
Y3Rpb24gbWFudWFsRGlzcGF0Y2hDaGFuZ2VFdmVudChuYXRpdmVFdmVudCkge1xuICB2YXIgZXZl
bnQgPSBjcmVhdGVBbmRBY2N1bXVsYXRlQ2hhbmdlRXZlbnQoYWN0aXZlRWxlbWVudEluc3QsIG5h
dGl2ZUV2ZW50LCBnZXRFdmVudFRhcmdldChuYXRpdmVFdmVudCkpO1xuXG4gIC8vIElmIGNoYW5n
ZSBhbmQgcHJvcGVydHljaGFuZ2UgYnViYmxlZCwgd2UnZCBqdXN0IGJpbmQgdG8gaXQgbGlrZSBh
bGwgdGhlXG4gIC8vIG90aGVyIGV2ZW50cyBhbmQgaGF2ZSBpdCBnbyB0aHJvdWdoIFJlYWN0QnJv
d3NlckV2ZW50RW1pdHRlci4gU2luY2UgaXRcbiAgLy8gZG9lc24ndCwgd2UgbWFudWFsbHkgbGlz
dGVuIGZvciB0aGUgZXZlbnRzIGFuZCBzbyB3ZSBoYXZlIHRvIGVucXVldWUgYW5kXG4gIC8vIHBy
b2Nlc3MgdGhlIGFic3RyYWN0IGV2ZW50IG1hbnVhbGx5LlxuICAvL1xuICAvLyBCYXRjaGluZyBp
cyBuZWNlc3NhcnkgaGVyZSBpbiBvcmRlciB0byBlbnN1cmUgdGhhdCBhbGwgZXZlbnQgaGFuZGxl
cnMgcnVuXG4gIC8vIGJlZm9yZSB0aGUgbmV4dCByZXJlbmRlciAoaW5jbHVkaW5nIGV2ZW50IGhh
bmRsZXJzIGF0dGFjaGVkIHRvIGFuY2VzdG9yXG4gIC8vIGVsZW1lbnRzIGluc3RlYWQgb2YgZGly
ZWN0bHkgb24gdGhlIGlucHV0KS4gV2l0aG91dCB0aGlzLCBjb250cm9sbGVkXG4gIC8vIGNvbXBv
bmVudHMgZG9uJ3Qgd29yayBwcm9wZXJseSBpbiBjb25qdW5jdGlvbiB3aXRoIGV2ZW50IGJ1YmJs
aW5nIGJlY2F1c2VcbiAgLy8gdGhlIGNvbXBvbmVudCBpcyByZXJlbmRlcmVkIGFuZCB0aGUgdmFs
dWUgcmV2ZXJ0ZWQgYmVmb3JlIGFsbCB0aGUgZXZlbnRcbiAgLy8gaGFuZGxlcnMgY2FuIHJ1bi4g
U2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9pc3N1ZXMvNzA4LlxuICBSZWFj
dFVwZGF0ZXMuYmF0Y2hlZFVwZGF0ZXMocnVuRXZlbnRJbkJhdGNoLCBldmVudCk7XG59XG5cbmZ1
bmN0aW9uIHJ1bkV2ZW50SW5CYXRjaChldmVudCkge1xuICBFdmVudFBsdWdpbkh1Yi5lbnF1ZXVl
RXZlbnRzKGV2ZW50KTtcbiAgRXZlbnRQbHVnaW5IdWIucHJvY2Vzc0V2ZW50UXVldWUoZmFsc2Up
O1xufVxuXG5mdW5jdGlvbiBzdGFydFdhdGNoaW5nRm9yQ2hhbmdlRXZlbnRJRTgodGFyZ2V0LCB0
YXJnZXRJbnN0KSB7XG4gIGFjdGl2ZUVsZW1lbnQgPSB0YXJnZXQ7XG4gIGFjdGl2ZUVsZW1lbnRJ
bnN0ID0gdGFyZ2V0SW5zdDtcbiAgYWN0aXZlRWxlbWVudC5hdHRhY2hFdmVudCgnb25jaGFuZ2Un
LCBtYW51YWxEaXNwYXRjaENoYW5nZUV2ZW50KTtcbn1cblxuZnVuY3Rpb24gc3RvcFdhdGNoaW5n
Rm9yQ2hhbmdlRXZlbnRJRTgoKSB7XG4gIGlmICghYWN0aXZlRWxlbWVudCkge1xuICAgIHJldHVy
bjtcbiAgfVxuICBhY3RpdmVFbGVtZW50LmRldGFjaEV2ZW50KCdvbmNoYW5nZScsIG1hbnVhbERp
c3BhdGNoQ2hhbmdlRXZlbnQpO1xuICBhY3RpdmVFbGVtZW50ID0gbnVsbDtcbiAgYWN0aXZlRWxl
bWVudEluc3QgPSBudWxsO1xufVxuXG5mdW5jdGlvbiBnZXRJbnN0SWZWYWx1ZUNoYW5nZWQodGFy
Z2V0SW5zdCwgbmF0aXZlRXZlbnQpIHtcbiAgdmFyIHVwZGF0ZWQgPSBpbnB1dFZhbHVlVHJhY2tp
bmcudXBkYXRlVmFsdWVJZkNoYW5nZWQodGFyZ2V0SW5zdCk7XG4gIHZhciBzaW11bGF0ZWQgPSBu
YXRpdmVFdmVudC5zaW11bGF0ZWQgPT09IHRydWUgJiYgQ2hhbmdlRXZlbnRQbHVnaW4uX2FsbG93
U2ltdWxhdGVkUGFzc1Rocm91Z2g7XG5cbiAgaWYgKHVwZGF0ZWQgfHwgc2ltdWxhdGVkKSB7XG4g
ICAgcmV0dXJuIHRhcmdldEluc3Q7XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0VGFyZ2V0SW5zdEZv
ckNoYW5nZUV2ZW50KHRvcExldmVsVHlwZSwgdGFyZ2V0SW5zdCkge1xuICBpZiAodG9wTGV2ZWxU
eXBlID09PSAndG9wQ2hhbmdlJykge1xuICAgIHJldHVybiB0YXJnZXRJbnN0O1xuICB9XG59XG5c
bmZ1bmN0aW9uIGhhbmRsZUV2ZW50c0ZvckNoYW5nZUV2ZW50SUU4KHRvcExldmVsVHlwZSwgdGFy
Z2V0LCB0YXJnZXRJbnN0KSB7XG4gIGlmICh0b3BMZXZlbFR5cGUgPT09ICd0b3BGb2N1cycpIHtc
biAgICAvLyBzdG9wV2F0Y2hpbmcoKSBzaG91bGQgYmUgYSBub29wIGhlcmUgYnV0IHdlIGNhbGwg
aXQganVzdCBpbiBjYXNlIHdlXG4gICAgLy8gbWlzc2VkIGEgYmx1ciBldmVudCBzb21laG93Llxu
ICAgIHN0b3BXYXRjaGluZ0ZvckNoYW5nZUV2ZW50SUU4KCk7XG4gICAgc3RhcnRXYXRjaGluZ0Zv
ckNoYW5nZUV2ZW50SUU4KHRhcmdldCwgdGFyZ2V0SW5zdCk7XG4gIH0gZWxzZSBpZiAodG9wTGV2
ZWxUeXBlID09PSAndG9wQmx1cicpIHtcbiAgICBzdG9wV2F0Y2hpbmdGb3JDaGFuZ2VFdmVudElF
OCgpO1xuICB9XG59XG5cbi8qKlxuICogU0VDVElPTjogaGFuZGxlIGBpbnB1dGAgZXZlbnRcbiAq
L1xudmFyIGlzSW5wdXRFdmVudFN1cHBvcnRlZCA9IGZhbHNlO1xuaWYgKEV4ZWN1dGlvbkVudmly
b25tZW50LmNhblVzZURPTSkge1xuICAvLyBJRTkgY2xhaW1zIHRvIHN1cHBvcnQgdGhlIGlucHV0
IGV2ZW50IGJ1dCBmYWlscyB0byB0cmlnZ2VyIGl0IHdoZW5cbiAgLy8gZGVsZXRpbmcgdGV4dCwg
c28gd2UgaWdub3JlIGl0cyBpbnB1dCBldmVudHMuXG5cbiAgaXNJbnB1dEV2ZW50U3VwcG9ydGVk
ID0gaXNFdmVudFN1cHBvcnRlZCgnaW5wdXQnKSAmJiAoISgnZG9jdW1lbnRNb2RlJyBpbiBkb2N1
bWVudCkgfHwgZG9jdW1lbnQuZG9jdW1lbnRNb2RlID4gOSk7XG59XG5cbi8qKlxuICogKEZvciBJ
RSA8PTkpIFN0YXJ0cyB0cmFja2luZyBwcm9wZXJ0eWNoYW5nZSBldmVudHMgb24gdGhlIHBhc3Nl
ZC1pbiBlbGVtZW50XG4gKiBhbmQgb3ZlcnJpZGUgdGhlIHZhbHVlIHByb3BlcnR5IHNvIHRoYXQg
d2UgY2FuIGRpc3Rpbmd1aXNoIHVzZXIgZXZlbnRzIGZyb21cbiAqIHZhbHVlIGNoYW5nZXMgaW4g
SlMuXG4gKi9cbmZ1bmN0aW9uIHN0YXJ0V2F0Y2hpbmdGb3JWYWx1ZUNoYW5nZSh0YXJnZXQsIHRh
cmdldEluc3QpIHtcbiAgYWN0aXZlRWxlbWVudCA9IHRhcmdldDtcbiAgYWN0aXZlRWxlbWVudElu
c3QgPSB0YXJnZXRJbnN0O1xuICBhY3RpdmVFbGVtZW50LmF0dGFjaEV2ZW50KCdvbnByb3BlcnR5
Y2hhbmdlJywgaGFuZGxlUHJvcGVydHlDaGFuZ2UpO1xufVxuXG4vKipcbiAqIChGb3IgSUUgPD05
KSBSZW1vdmVzIHRoZSBldmVudCBsaXN0ZW5lcnMgZnJvbSB0aGUgY3VycmVudGx5LXRyYWNrZWQg
ZWxlbWVudCxcbiAqIGlmIGFueSBleGlzdHMuXG4gKi9cbmZ1bmN0aW9uIHN0b3BXYXRjaGluZ0Zv
clZhbHVlQ2hhbmdlKCkge1xuICBpZiAoIWFjdGl2ZUVsZW1lbnQpIHtcbiAgICByZXR1cm47XG4g
IH1cbiAgYWN0aXZlRWxlbWVudC5kZXRhY2hFdmVudCgnb25wcm9wZXJ0eWNoYW5nZScsIGhhbmRs
ZVByb3BlcnR5Q2hhbmdlKTtcblxuICBhY3RpdmVFbGVtZW50ID0gbnVsbDtcbiAgYWN0aXZlRWxl
bWVudEluc3QgPSBudWxsO1xufVxuXG4vKipcbiAqIChGb3IgSUUgPD05KSBIYW5kbGVzIGEgcHJv
cGVydHljaGFuZ2UgZXZlbnQsIHNlbmRpbmcgYSBgY2hhbmdlYCBldmVudCBpZlxuICogdGhlIHZh
bHVlIG9mIHRoZSBhY3RpdmUgZWxlbWVudCBoYXMgY2hhbmdlZC5cbiAqL1xuZnVuY3Rpb24gaGFu
ZGxlUHJvcGVydHlDaGFuZ2UobmF0aXZlRXZlbnQpIHtcbiAgaWYgKG5hdGl2ZUV2ZW50LnByb3Bl
cnR5TmFtZSAhPT0gJ3ZhbHVlJykge1xuICAgIHJldHVybjtcbiAgfVxuICBpZiAoZ2V0SW5zdElm
VmFsdWVDaGFuZ2VkKGFjdGl2ZUVsZW1lbnRJbnN0LCBuYXRpdmVFdmVudCkpIHtcbiAgICBtYW51
YWxEaXNwYXRjaENoYW5nZUV2ZW50KG5hdGl2ZUV2ZW50KTtcbiAgfVxufVxuXG5mdW5jdGlvbiBo
YW5kbGVFdmVudHNGb3JJbnB1dEV2ZW50UG9seWZpbGwodG9wTGV2ZWxUeXBlLCB0YXJnZXQsIHRh
cmdldEluc3QpIHtcbiAgaWYgKHRvcExldmVsVHlwZSA9PT0gJ3RvcEZvY3VzJykge1xuICAgIC8v
IEluIElFOCwgd2UgY2FuIGNhcHR1cmUgYWxtb3N0IGFsbCAudmFsdWUgY2hhbmdlcyBieSBhZGRp
bmcgYVxuICAgIC8vIHByb3BlcnR5Y2hhbmdlIGhhbmRsZXIgYW5kIGxvb2tpbmcgZm9yIGV2ZW50
cyB3aXRoIHByb3BlcnR5TmFtZVxuICAgIC8vIGVxdWFsIHRvICd2YWx1ZSdcbiAgICAvLyBJbiBJ
RTksIHByb3BlcnR5Y2hhbmdlIGZpcmVzIGZvciBtb3N0IGlucHV0IGV2ZW50cyBidXQgaXMgYnVn
Z3kgYW5kXG4gICAgLy8gZG9lc24ndCBmaXJlIHdoZW4gdGV4dCBpcyBkZWxldGVkLCBidXQgY29u
dmVuaWVudGx5LCBzZWxlY3Rpb25jaGFuZ2VcbiAgICAvLyBhcHBlYXJzIHRvIGZpcmUgaW4gYWxs
IG9mIHRoZSByZW1haW5pbmcgY2FzZXMgc28gd2UgY2F0Y2ggdGhvc2UgYW5kXG4gICAgLy8gZm9y
d2FyZCB0aGUgZXZlbnQgaWYgdGhlIHZhbHVlIGhhcyBjaGFuZ2VkXG4gICAgLy8gSW4gZWl0aGVy
IGNhc2UsIHdlIGRvbid0IHdhbnQgdG8gY2FsbCB0aGUgZXZlbnQgaGFuZGxlciBpZiB0aGUgdmFs
dWVcbiAgICAvLyBpcyBjaGFuZ2VkIGZyb20gSlMgc28gd2UgcmVkZWZpbmUgYSBzZXR0ZXIgZm9y
IGAudmFsdWVgIHRoYXQgdXBkYXRlc1xuICAgIC8vIG91ciBhY3RpdmVFbGVtZW50VmFsdWUgdmFy
aWFibGUsIGFsbG93aW5nIHVzIHRvIGlnbm9yZSB0aG9zZSBjaGFuZ2VzXG4gICAgLy9cbiAgICAv
LyBzdG9wV2F0Y2hpbmcoKSBzaG91bGQgYmUgYSBub29wIGhlcmUgYnV0IHdlIGNhbGwgaXQganVz
dCBpbiBjYXNlIHdlXG4gICAgLy8gbWlzc2VkIGEgYmx1ciBldmVudCBzb21laG93LlxuICAgIHN0
b3BXYXRjaGluZ0ZvclZhbHVlQ2hhbmdlKCk7XG4gICAgc3RhcnRXYXRjaGluZ0ZvclZhbHVlQ2hh
bmdlKHRhcmdldCwgdGFyZ2V0SW5zdCk7XG4gIH0gZWxzZSBpZiAodG9wTGV2ZWxUeXBlID09PSAn
dG9wQmx1cicpIHtcbiAgICBzdG9wV2F0Y2hpbmdGb3JWYWx1ZUNoYW5nZSgpO1xuICB9XG59XG5c
bi8vIEZvciBJRTggYW5kIElFOS5cbmZ1bmN0aW9uIGdldFRhcmdldEluc3RGb3JJbnB1dEV2ZW50
UG9seWZpbGwodG9wTGV2ZWxUeXBlLCB0YXJnZXRJbnN0LCBuYXRpdmVFdmVudCkge1xuICBpZiAo
dG9wTGV2ZWxUeXBlID09PSAndG9wU2VsZWN0aW9uQ2hhbmdlJyB8fCB0b3BMZXZlbFR5cGUgPT09
ICd0b3BLZXlVcCcgfHwgdG9wTGV2ZWxUeXBlID09PSAndG9wS2V5RG93bicpIHtcbiAgICAvLyBP
biB0aGUgc2VsZWN0aW9uY2hhbmdlIGV2ZW50LCB0aGUgdGFyZ2V0IGlzIGp1c3QgZG9jdW1lbnQg
d2hpY2ggaXNuJ3RcbiAgICAvLyBoZWxwZnVsIGZvciB1cyBzbyBqdXN0IGNoZWNrIGFjdGl2ZUVs
ZW1lbnQgaW5zdGVhZC5cbiAgICAvL1xuICAgIC8vIDk5JSBvZiB0aGUgdGltZSwga2V5ZG93biBh
bmQga2V5dXAgYXJlbid0IG5lY2Vzc2FyeS4gSUU4IGZhaWxzIHRvIGZpcmVcbiAgICAvLyBwcm9w
ZXJ0eWNoYW5nZSBvbiB0aGUgZmlyc3QgaW5wdXQgZXZlbnQgYWZ0ZXIgc2V0dGluZyBgdmFsdWVg
IGZyb20gYVxuICAgIC8vIHNjcmlwdCBhbmQgZmlyZXMgb25seSBrZXlkb3duLCBrZXlwcmVzcywg
a2V5dXAuIENhdGNoaW5nIGtleXVwIHVzdWFsbHlcbiAgICAvLyBnZXRzIGl0IGFuZCBjYXRjaGlu
ZyBrZXlkb3duIGxldHMgdXMgZmlyZSBhbiBldmVudCBmb3IgdGhlIGZpcnN0XG4gICAgLy8ga2V5
c3Ryb2tlIGlmIHVzZXIgZG9lcyBhIGtleSByZXBlYXQgKGl0J2xsIGJlIGEgbGl0dGxlIGRlbGF5
ZWQ6IHJpZ2h0XG4gICAgLy8gYmVmb3JlIHRoZSBzZWNvbmQga2V5c3Ryb2tlKS4gT3RoZXIgaW5w
dXQgbWV0aG9kcyAoZS5nLiwgcGFzdGUpIHNlZW0gdG9cbiAgICAvLyBmaXJlIHNlbGVjdGlvbmNo
YW5nZSBub3JtYWxseS5cbiAgICByZXR1cm4gZ2V0SW5zdElmVmFsdWVDaGFuZ2VkKGFjdGl2ZUVs
ZW1lbnRJbnN0LCBuYXRpdmVFdmVudCk7XG4gIH1cbn1cblxuLyoqXG4gKiBTRUNUSU9OOiBoYW5k
bGUgYGNsaWNrYCBldmVudFxuICovXG5mdW5jdGlvbiBzaG91bGRVc2VDbGlja0V2ZW50KGVsZW0p
IHtcbiAgLy8gVXNlIHRoZSBgY2xpY2tgIGV2ZW50IHRvIGRldGVjdCBjaGFuZ2VzIHRvIGNoZWNr
Ym94IGFuZCByYWRpbyBpbnB1dHMuXG4gIC8vIFRoaXMgYXBwcm9hY2ggd29ya3MgYWNyb3NzIGFs
bCBicm93c2Vycywgd2hlcmVhcyBgY2hhbmdlYCBkb2VzIG5vdCBmaXJlXG4gIC8vIHVudGlsIGBi
bHVyYCBpbiBJRTguXG4gIHZhciBub2RlTmFtZSA9IGVsZW0ubm9kZU5hbWU7XG4gIHJldHVybiBu
b2RlTmFtZSAmJiBub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSAnaW5wdXQnICYmIChlbGVtLnR5
cGUgPT09ICdjaGVja2JveCcgfHwgZWxlbS50eXBlID09PSAncmFkaW8nKTtcbn1cblxuZnVuY3Rp
b24gZ2V0VGFyZ2V0SW5zdEZvckNsaWNrRXZlbnQodG9wTGV2ZWxUeXBlLCB0YXJnZXRJbnN0LCBu
YXRpdmVFdmVudCkge1xuICBpZiAodG9wTGV2ZWxUeXBlID09PSAndG9wQ2xpY2snKSB7XG4gICAg
cmV0dXJuIGdldEluc3RJZlZhbHVlQ2hhbmdlZCh0YXJnZXRJbnN0LCBuYXRpdmVFdmVudCk7XG4g
IH1cbn1cblxuZnVuY3Rpb24gZ2V0VGFyZ2V0SW5zdEZvcklucHV0T3JDaGFuZ2VFdmVudCh0b3BM
ZXZlbFR5cGUsIHRhcmdldEluc3QsIG5hdGl2ZUV2ZW50KSB7XG4gIGlmICh0b3BMZXZlbFR5cGUg
PT09ICd0b3BJbnB1dCcgfHwgdG9wTGV2ZWxUeXBlID09PSAndG9wQ2hhbmdlJykge1xuICAgIHJl
dHVybiBnZXRJbnN0SWZWYWx1ZUNoYW5nZWQodGFyZ2V0SW5zdCwgbmF0aXZlRXZlbnQpO1xuICB9
XG59XG5cbmZ1bmN0aW9uIGhhbmRsZUNvbnRyb2xsZWRJbnB1dEJsdXIoaW5zdCwgbm9kZSkge1xu
ICAvLyBUT0RPOiBJbiBJRSwgaW5zdCBpcyBvY2Nhc2lvbmFsbHkgbnVsbC4gV2h5P1xuICBpZiAo
aW5zdCA9PSBudWxsKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLy8gRmliZXIgYW5kIFJlYWN0
RE9NIGtlZXAgd3JhcHBlciBzdGF0ZSBpbiBzZXBhcmF0ZSBwbGFjZXNcbiAgdmFyIHN0YXRlID0g
aW5zdC5fd3JhcHBlclN0YXRlIHx8IG5vZGUuX3dyYXBwZXJTdGF0ZTtcblxuICBpZiAoIXN0YXRl
IHx8ICFzdGF0ZS5jb250cm9sbGVkIHx8IG5vZGUudHlwZSAhPT0gJ251bWJlcicpIHtcbiAgICBy
ZXR1cm47XG4gIH1cblxuICAvLyBJZiBjb250cm9sbGVkLCBhc3NpZ24gdGhlIHZhbHVlIGF0dHJp
YnV0ZSB0byB0aGUgY3VycmVudCB2YWx1ZSBvbiBibHVyXG4gIHZhciB2YWx1ZSA9ICcnICsgbm9k
ZS52YWx1ZTtcbiAgaWYgKG5vZGUuZ2V0QXR0cmlidXRlKCd2YWx1ZScpICE9PSB2YWx1ZSkge1xu
ICAgIG5vZGUuc2V0QXR0cmlidXRlKCd2YWx1ZScsIHZhbHVlKTtcbiAgfVxufVxuXG4vKipcbiAq
IFRoaXMgcGx1Z2luIGNyZWF0ZXMgYW4gYG9uQ2hhbmdlYCBldmVudCB0aGF0IG5vcm1hbGl6ZXMg
Y2hhbmdlIGV2ZW50c1xuICogYWNyb3NzIGZvcm0gZWxlbWVudHMuIFRoaXMgZXZlbnQgZmlyZXMg
YXQgYSB0aW1lIHdoZW4gaXQncyBwb3NzaWJsZSB0b1xuICogY2hhbmdlIHRoZSBlbGVtZW50J3Mg
dmFsdWUgd2l0aG91dCBzZWVpbmcgYSBmbGlja2VyLlxuICpcbiAqIFN1cHBvcnRlZCBlbGVtZW50
cyBhcmU6XG4gKiAtIGlucHV0IChzZWUgYGlzVGV4dElucHV0RWxlbWVudGApXG4gKiAtIHRleHRh
cmVhXG4gKiAtIHNlbGVjdFxuICovXG52YXIgQ2hhbmdlRXZlbnRQbHVnaW4gPSB7XG4gIGV2ZW50
VHlwZXM6IGV2ZW50VHlwZXMsXG5cbiAgX2FsbG93U2ltdWxhdGVkUGFzc1Rocm91Z2g6IHRydWUs
XG4gIF9pc0lucHV0RXZlbnRTdXBwb3J0ZWQ6IGlzSW5wdXRFdmVudFN1cHBvcnRlZCxcblxuICBl
eHRyYWN0RXZlbnRzOiBmdW5jdGlvbiAodG9wTGV2ZWxUeXBlLCB0YXJnZXRJbnN0LCBuYXRpdmVF
dmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpIHtcbiAgICB2YXIgdGFyZ2V0Tm9kZSA9IHRhcmdldElu
c3QgPyBSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0Tm9kZUZyb21JbnN0YW5jZSh0YXJnZXRJbnN0
KSA6IHdpbmRvdztcblxuICAgIHZhciBnZXRUYXJnZXRJbnN0RnVuYywgaGFuZGxlRXZlbnRGdW5j
O1xuICAgIGlmIChzaG91bGRVc2VDaGFuZ2VFdmVudCh0YXJnZXROb2RlKSkge1xuICAgICAgaWYg
KGRvZXNDaGFuZ2VFdmVudEJ1YmJsZSkge1xuICAgICAgICBnZXRUYXJnZXRJbnN0RnVuYyA9IGdl
dFRhcmdldEluc3RGb3JDaGFuZ2VFdmVudDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGhhbmRs
ZUV2ZW50RnVuYyA9IGhhbmRsZUV2ZW50c0ZvckNoYW5nZUV2ZW50SUU4O1xuICAgICAgfVxuICAg
IH0gZWxzZSBpZiAoaXNUZXh0SW5wdXRFbGVtZW50KHRhcmdldE5vZGUpKSB7XG4gICAgICBpZiAo
aXNJbnB1dEV2ZW50U3VwcG9ydGVkKSB7XG4gICAgICAgIGdldFRhcmdldEluc3RGdW5jID0gZ2V0
VGFyZ2V0SW5zdEZvcklucHV0T3JDaGFuZ2VFdmVudDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAg
IGdldFRhcmdldEluc3RGdW5jID0gZ2V0VGFyZ2V0SW5zdEZvcklucHV0RXZlbnRQb2x5ZmlsbDtc
biAgICAgICAgaGFuZGxlRXZlbnRGdW5jID0gaGFuZGxlRXZlbnRzRm9ySW5wdXRFdmVudFBvbHlm
aWxsO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoc2hvdWxkVXNlQ2xpY2tFdmVudCh0YXJnZXRO
b2RlKSkge1xuICAgICAgZ2V0VGFyZ2V0SW5zdEZ1bmMgPSBnZXRUYXJnZXRJbnN0Rm9yQ2xpY2tF
dmVudDtcbiAgICB9XG5cbiAgICBpZiAoZ2V0VGFyZ2V0SW5zdEZ1bmMpIHtcbiAgICAgIHZhciBp
bnN0ID0gZ2V0VGFyZ2V0SW5zdEZ1bmModG9wTGV2ZWxUeXBlLCB0YXJnZXRJbnN0LCBuYXRpdmVF
dmVudCk7XG4gICAgICBpZiAoaW5zdCkge1xuICAgICAgICB2YXIgZXZlbnQgPSBjcmVhdGVBbmRB
Y2N1bXVsYXRlQ2hhbmdlRXZlbnQoaW5zdCwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0
KTtcbiAgICAgICAgcmV0dXJuIGV2ZW50O1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChoYW5k
bGVFdmVudEZ1bmMpIHtcbiAgICAgIGhhbmRsZUV2ZW50RnVuYyh0b3BMZXZlbFR5cGUsIHRhcmdl
dE5vZGUsIHRhcmdldEluc3QpO1xuICAgIH1cblxuICAgIC8vIFdoZW4gYmx1cnJpbmcsIHNldCB0
aGUgdmFsdWUgYXR0cmlidXRlIGZvciBudW1iZXIgaW5wdXRzXG4gICAgaWYgKHRvcExldmVsVHlw
ZSA9PT0gJ3RvcEJsdXInKSB7XG4gICAgICBoYW5kbGVDb250cm9sbGVkSW5wdXRCbHVyKHRhcmdl
dEluc3QsIHRhcmdldE5vZGUpO1xuICAgIH1cbiAgfVxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBD
aGFuZ2VFdmVudFBsdWdpbjtcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZP
T1RFUlxuICoqIC4vfi9yZWFjdC1kb20vbGliL0NoYW5nZUV2ZW50UGx1Z2luLmpzXG4gKiogbW9k
dWxlIGlkID0gMTI4XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENvcHly
aWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVk
LlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHls
ZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVj
dG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRl
bnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRp
cmVjdG9yeS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgX3Byb2RJbnZhcmlhbnQg
PSByZXF1aXJlKCcuL3JlYWN0UHJvZEludmFyaWFudCcpO1xuXG52YXIgRE9NTGF6eVRyZWUgPSBy
ZXF1aXJlKCcuL0RPTUxhenlUcmVlJyk7XG52YXIgRXhlY3V0aW9uRW52aXJvbm1lbnQgPSByZXF1
aXJlKCdmYmpzL2xpYi9FeGVjdXRpb25FbnZpcm9ubWVudCcpO1xuXG52YXIgY3JlYXRlTm9kZXNG
cm9tTWFya3VwID0gcmVxdWlyZSgnZmJqcy9saWIvY3JlYXRlTm9kZXNGcm9tTWFya3VwJyk7XG52
YXIgZW1wdHlGdW5jdGlvbiA9IHJlcXVpcmUoJ2ZianMvbGliL2VtcHR5RnVuY3Rpb24nKTtcbnZh
ciBpbnZhcmlhbnQgPSByZXF1aXJlKCdmYmpzL2xpYi9pbnZhcmlhbnQnKTtcblxudmFyIERhbmdl
ciA9IHtcbiAgLyoqXG4gICAqIFJlcGxhY2VzIGEgbm9kZSB3aXRoIGEgc3RyaW5nIG9mIG1hcmt1
cCBhdCBpdHMgY3VycmVudCBwb3NpdGlvbiB3aXRoaW4gaXRzXG4gICAqIHBhcmVudC4gVGhlIG1h
cmt1cCBtdXN0IHJlbmRlciBpbnRvIGEgc2luZ2xlIHJvb3Qgbm9kZS5cbiAgICpcbiAgICogQHBh
cmFtIHtET01FbGVtZW50fSBvbGRDaGlsZCBDaGlsZCBub2RlIHRvIHJlcGxhY2UuXG4gICAqIEBw
YXJhbSB7c3RyaW5nfSBtYXJrdXAgTWFya3VwIHRvIHJlbmRlciBpbiBwbGFjZSBvZiB0aGUgY2hp
bGQgbm9kZS5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBkYW5nZXJvdXNseVJlcGxhY2VOb2Rl
V2l0aE1hcmt1cDogZnVuY3Rpb24gKG9sZENoaWxkLCBtYXJrdXApIHtcbiAgICAhRXhlY3V0aW9u
RW52aXJvbm1lbnQuY2FuVXNlRE9NID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0
aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ2Rhbmdlcm91c2x5UmVwbGFjZU5vZGVXaXRoTWFya3Vw
KC4uLik6IENhbm5vdCByZW5kZXIgbWFya3VwIGluIGEgd29ya2VyIHRocmVhZC4gTWFrZSBzdXJl
IGB3aW5kb3dgIGFuZCBgZG9jdW1lbnRgIGFyZSBhdmFpbGFibGUgZ2xvYmFsbHkgYmVmb3JlIHJl
cXVpcmluZyBSZWFjdCB3aGVuIHVuaXQgdGVzdGluZyBvciB1c2UgUmVhY3RET01TZXJ2ZXIucmVu
ZGVyVG9TdHJpbmcoKSBmb3Igc2VydmVyIHJlbmRlcmluZy4nKSA6IF9wcm9kSW52YXJpYW50KCc1
NicpIDogdm9pZCAwO1xuICAgICFtYXJrdXAgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3By
b2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnZGFuZ2Vyb3VzbHlSZXBsYWNlTm9kZVdpdGhN
YXJrdXAoLi4uKTogTWlzc2luZyBtYXJrdXAuJykgOiBfcHJvZEludmFyaWFudCgnNTcnKSA6IHZv
aWQgMDtcbiAgICAhKG9sZENoaWxkLm5vZGVOYW1lICE9PSAnSFRNTCcpID8gcHJvY2Vzcy5lbnYu
Tk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ2Rhbmdlcm91c2x5
UmVwbGFjZU5vZGVXaXRoTWFya3VwKC4uLik6IENhbm5vdCByZXBsYWNlIG1hcmt1cCBvZiB0aGUg
PGh0bWw+IG5vZGUuIFRoaXMgaXMgYmVjYXVzZSBicm93c2VyIHF1aXJrcyBtYWtlIHRoaXMgdW5y
ZWxpYWJsZSBhbmQvb3Igc2xvdy4gSWYgeW91IHdhbnQgdG8gcmVuZGVyIHRvIHRoZSByb290IHlv
dSBtdXN0IHVzZSBzZXJ2ZXIgcmVuZGVyaW5nLiBTZWUgUmVhY3RET01TZXJ2ZXIucmVuZGVyVG9T
dHJpbmcoKS4nKSA6IF9wcm9kSW52YXJpYW50KCc1OCcpIDogdm9pZCAwO1xuXG4gICAgaWYgKHR5
cGVvZiBtYXJrdXAgPT09ICdzdHJpbmcnKSB7XG4gICAgICB2YXIgbmV3Q2hpbGQgPSBjcmVhdGVO
b2Rlc0Zyb21NYXJrdXAobWFya3VwLCBlbXB0eUZ1bmN0aW9uKVswXTtcbiAgICAgIG9sZENoaWxk
LnBhcmVudE5vZGUucmVwbGFjZUNoaWxkKG5ld0NoaWxkLCBvbGRDaGlsZCk7XG4gICAgfSBlbHNl
IHtcbiAgICAgIERPTUxhenlUcmVlLnJlcGxhY2VDaGlsZFdpdGhUcmVlKG9sZENoaWxkLCBtYXJr
dXApO1xuICAgIH1cbiAgfVxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBEYW5nZXI7XG5cblxuLyoq
KioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3QtZG9tL2xp
Yi9EYW5nZXIuanNcbiAqKiBtb2R1bGUgaWQgPSAxMjlcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxu
ICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAq
IEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNl
ZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZp
bGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9u
YWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRT
IGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5c
bi8qKlxuICogTW9kdWxlIHRoYXQgaXMgaW5qZWN0YWJsZSBpbnRvIGBFdmVudFBsdWdpbkh1YmAs
IHRoYXQgc3BlY2lmaWVzIGFcbiAqIGRldGVybWluaXN0aWMgb3JkZXJpbmcgb2YgYEV2ZW50UGx1
Z2luYHMuIEEgY29udmVuaWVudCB3YXkgdG8gcmVhc29uIGFib3V0XG4gKiBwbHVnaW5zLCB3aXRo
b3V0IGhhdmluZyB0byBwYWNrYWdlIGV2ZXJ5IG9uZSBvZiB0aGVtLiBUaGlzIGlzIGJldHRlciB0
aGFuXG4gKiBoYXZpbmcgcGx1Z2lucyBiZSBvcmRlcmVkIGluIHRoZSBzYW1lIG9yZGVyIHRoYXQg
dGhleSBhcmUgaW5qZWN0ZWQgYmVjYXVzZVxuICogdGhhdCBvcmRlcmluZyB3b3VsZCBiZSBpbmZs
dWVuY2VkIGJ5IHRoZSBwYWNrYWdpbmcgb3JkZXIuXG4gKiBgUmVzcG9uZGVyRXZlbnRQbHVnaW5g
IG11c3Qgb2NjdXIgYmVmb3JlIGBTaW1wbGVFdmVudFBsdWdpbmAgc28gdGhhdFxuICogcHJldmVu
dGluZyBkZWZhdWx0IG9uIGV2ZW50cyBpcyBjb252ZW5pZW50IGluIGBTaW1wbGVFdmVudFBsdWdp
bmAgaGFuZGxlcnMuXG4gKi9cblxudmFyIERlZmF1bHRFdmVudFBsdWdpbk9yZGVyID0gWydSZXNw
b25kZXJFdmVudFBsdWdpbicsICdTaW1wbGVFdmVudFBsdWdpbicsICdUYXBFdmVudFBsdWdpbics
ICdFbnRlckxlYXZlRXZlbnRQbHVnaW4nLCAnQ2hhbmdlRXZlbnRQbHVnaW4nLCAnU2VsZWN0RXZl
bnRQbHVnaW4nLCAnQmVmb3JlSW5wdXRFdmVudFBsdWdpbiddO1xuXG5tb2R1bGUuZXhwb3J0cyA9
IERlZmF1bHRFdmVudFBsdWdpbk9yZGVyO1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdF
QlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0LWRvbS9saWIvRGVmYXVsdEV2ZW50UGx1Z2luT3Jk
ZXIuanNcbiAqKiBtb2R1bGUgaWQgPSAxMzBcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIs
Ii8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRl
ciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4g
dGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3Jh
bnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUg
aW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBF
dmVudFByb3BhZ2F0b3JzID0gcmVxdWlyZSgnLi9FdmVudFByb3BhZ2F0b3JzJyk7XG52YXIgUmVh
Y3RET01Db21wb25lbnRUcmVlID0gcmVxdWlyZSgnLi9SZWFjdERPTUNvbXBvbmVudFRyZWUnKTtc
bnZhciBTeW50aGV0aWNNb3VzZUV2ZW50ID0gcmVxdWlyZSgnLi9TeW50aGV0aWNNb3VzZUV2ZW50
Jyk7XG5cbnZhciBldmVudFR5cGVzID0ge1xuICBtb3VzZUVudGVyOiB7XG4gICAgcmVnaXN0cmF0
aW9uTmFtZTogJ29uTW91c2VFbnRlcicsXG4gICAgZGVwZW5kZW5jaWVzOiBbJ3RvcE1vdXNlT3V0
JywgJ3RvcE1vdXNlT3ZlciddXG4gIH0sXG4gIG1vdXNlTGVhdmU6IHtcbiAgICByZWdpc3RyYXRp
b25OYW1lOiAnb25Nb3VzZUxlYXZlJyxcbiAgICBkZXBlbmRlbmNpZXM6IFsndG9wTW91c2VPdXQn
LCAndG9wTW91c2VPdmVyJ11cbiAgfVxufTtcblxudmFyIEVudGVyTGVhdmVFdmVudFBsdWdpbiA9
IHtcbiAgZXZlbnRUeXBlczogZXZlbnRUeXBlcyxcblxuICAvKipcbiAgICogRm9yIGFsbW9zdCBl
dmVyeSBpbnRlcmFjdGlvbiB3ZSBjYXJlIGFib3V0LCB0aGVyZSB3aWxsIGJlIGJvdGggYSB0b3At
bGV2ZWxcbiAgICogYG1vdXNlb3ZlcmAgYW5kIGBtb3VzZW91dGAgZXZlbnQgdGhhdCBvY2N1cnMu
IE9ubHkgdXNlIGBtb3VzZW91dGAgc28gdGhhdFxuICAgKiB3ZSBkbyBub3QgZXh0cmFjdCBkdXBs
aWNhdGUgZXZlbnRzLiBIb3dldmVyLCBtb3ZpbmcgdGhlIG1vdXNlIGludG8gdGhlXG4gICAqIGJy
b3dzZXIgZnJvbSBvdXRzaWRlIHdpbGwgbm90IGZpcmUgYSBgbW91c2VvdXRgIGV2ZW50LiBJbiB0
aGlzIGNhc2UsIHdlIHVzZVxuICAgKiB0aGUgYG1vdXNlb3ZlcmAgdG9wLWxldmVsIGV2ZW50Llxu
ICAgKi9cbiAgZXh0cmFjdEV2ZW50czogZnVuY3Rpb24gKHRvcExldmVsVHlwZSwgdGFyZ2V0SW5z
dCwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KSB7XG4gICAgaWYgKHRvcExldmVsVHlw
ZSA9PT0gJ3RvcE1vdXNlT3ZlcicgJiYgKG5hdGl2ZUV2ZW50LnJlbGF0ZWRUYXJnZXQgfHwgbmF0
aXZlRXZlbnQuZnJvbUVsZW1lbnQpKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAg
aWYgKHRvcExldmVsVHlwZSAhPT0gJ3RvcE1vdXNlT3V0JyAmJiB0b3BMZXZlbFR5cGUgIT09ICd0
b3BNb3VzZU92ZXInKSB7XG4gICAgICAvLyBNdXN0IG5vdCBiZSBhIG1vdXNlIGluIG9yIG1vdXNl
IG91dCAtIGlnbm9yaW5nLlxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgdmFyIHdp
bjtcbiAgICBpZiAobmF0aXZlRXZlbnRUYXJnZXQud2luZG93ID09PSBuYXRpdmVFdmVudFRhcmdl
dCkge1xuICAgICAgLy8gYG5hdGl2ZUV2ZW50VGFyZ2V0YCBpcyBwcm9iYWJseSBhIHdpbmRvdyBv
YmplY3QuXG4gICAgICB3aW4gPSBuYXRpdmVFdmVudFRhcmdldDtcbiAgICB9IGVsc2Uge1xuICAg
ICAgLy8gVE9ETzogRmlndXJlIG91dCB3aHkgYG93bmVyRG9jdW1lbnRgIGlzIHNvbWV0aW1lcyB1
bmRlZmluZWQgaW4gSUU4LlxuICAgICAgdmFyIGRvYyA9IG5hdGl2ZUV2ZW50VGFyZ2V0Lm93bmVy
RG9jdW1lbnQ7XG4gICAgICBpZiAoZG9jKSB7XG4gICAgICAgIHdpbiA9IGRvYy5kZWZhdWx0Vmll
dyB8fCBkb2MucGFyZW50V2luZG93O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgd2luID0gd2lu
ZG93O1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciBmcm9tO1xuICAgIHZhciB0bztcbiAgICBp
ZiAodG9wTGV2ZWxUeXBlID09PSAndG9wTW91c2VPdXQnKSB7XG4gICAgICBmcm9tID0gdGFyZ2V0
SW5zdDtcbiAgICAgIHZhciByZWxhdGVkID0gbmF0aXZlRXZlbnQucmVsYXRlZFRhcmdldCB8fCBu
YXRpdmVFdmVudC50b0VsZW1lbnQ7XG4gICAgICB0byA9IHJlbGF0ZWQgPyBSZWFjdERPTUNvbXBv
bmVudFRyZWUuZ2V0Q2xvc2VzdEluc3RhbmNlRnJvbU5vZGUocmVsYXRlZCkgOiBudWxsO1xuICAg
IH0gZWxzZSB7XG4gICAgICAvLyBNb3ZpbmcgdG8gYSBub2RlIGZyb20gb3V0c2lkZSB0aGUgd2lu
ZG93LlxuICAgICAgZnJvbSA9IG51bGw7XG4gICAgICB0byA9IHRhcmdldEluc3Q7XG4gICAgfVxu
XG4gICAgaWYgKGZyb20gPT09IHRvKSB7XG4gICAgICAvLyBOb3RoaW5nIHBlcnRhaW5zIHRvIG91
ciBtYW5hZ2VkIGNvbXBvbmVudHMuXG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICB2
YXIgZnJvbU5vZGUgPSBmcm9tID09IG51bGwgPyB3aW4gOiBSZWFjdERPTUNvbXBvbmVudFRyZWUu
Z2V0Tm9kZUZyb21JbnN0YW5jZShmcm9tKTtcbiAgICB2YXIgdG9Ob2RlID0gdG8gPT0gbnVsbCA/
IHdpbiA6IFJlYWN0RE9NQ29tcG9uZW50VHJlZS5nZXROb2RlRnJvbUluc3RhbmNlKHRvKTtcblxu
ICAgIHZhciBsZWF2ZSA9IFN5bnRoZXRpY01vdXNlRXZlbnQuZ2V0UG9vbGVkKGV2ZW50VHlwZXMu
bW91c2VMZWF2ZSwgZnJvbSwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KTtcbiAgICBs
ZWF2ZS50eXBlID0gJ21vdXNlbGVhdmUnO1xuICAgIGxlYXZlLnRhcmdldCA9IGZyb21Ob2RlO1xu
ICAgIGxlYXZlLnJlbGF0ZWRUYXJnZXQgPSB0b05vZGU7XG5cbiAgICB2YXIgZW50ZXIgPSBTeW50
aGV0aWNNb3VzZUV2ZW50LmdldFBvb2xlZChldmVudFR5cGVzLm1vdXNlRW50ZXIsIHRvLCBuYXRp
dmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpO1xuICAgIGVudGVyLnR5cGUgPSAnbW91c2VlbnRl
cic7XG4gICAgZW50ZXIudGFyZ2V0ID0gdG9Ob2RlO1xuICAgIGVudGVyLnJlbGF0ZWRUYXJnZXQg
PSBmcm9tTm9kZTtcblxuICAgIEV2ZW50UHJvcGFnYXRvcnMuYWNjdW11bGF0ZUVudGVyTGVhdmVE
aXNwYXRjaGVzKGxlYXZlLCBlbnRlciwgZnJvbSwgdG8pO1xuXG4gICAgcmV0dXJuIFtsZWF2ZSwg
ZW50ZXJdO1xuICB9XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IEVudGVyTGVhdmVFdmVudFBsdWdp
bjtcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9y
ZWFjdC1kb20vbGliL0VudGVyTGVhdmVFdmVudFBsdWdpbi5qc1xuICoqIG1vZHVsZSBpZCA9IDEz
MVxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1w
cmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBU
aGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBm
b3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhp
cyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBj
YW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4g
KlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIF9hc3NpZ24gPSByZXF1aXJlKCdvYmplY3Qt
YXNzaWduJyk7XG5cbnZhciBQb29sZWRDbGFzcyA9IHJlcXVpcmUoJy4vUG9vbGVkQ2xhc3MnKTtc
blxudmFyIGdldFRleHRDb250ZW50QWNjZXNzb3IgPSByZXF1aXJlKCcuL2dldFRleHRDb250ZW50
QWNjZXNzb3InKTtcblxuLyoqXG4gKiBUaGlzIGhlbHBlciBjbGFzcyBzdG9yZXMgaW5mb3JtYXRp
b24gYWJvdXQgdGV4dCBjb250ZW50IG9mIGEgdGFyZ2V0IG5vZGUsXG4gKiBhbGxvd2luZyBjb21w
YXJpc29uIG9mIGNvbnRlbnQgYmVmb3JlIGFuZCBhZnRlciBhIGdpdmVuIGV2ZW50LlxuICpcbiAq
IElkZW50aWZ5IHRoZSBub2RlIHdoZXJlIHNlbGVjdGlvbiBjdXJyZW50bHkgYmVnaW5zLCB0aGVu
IG9ic2VydmVcbiAqIGJvdGggaXRzIHRleHQgY29udGVudCBhbmQgaXRzIGN1cnJlbnQgcG9zaXRp
b24gaW4gdGhlIERPTS4gU2luY2UgdGhlXG4gKiBicm93c2VyIG1heSBuYXRpdmVseSByZXBsYWNl
IHRoZSB0YXJnZXQgbm9kZSBkdXJpbmcgY29tcG9zaXRpb24sIHdlIGNhblxuICogdXNlIGl0cyBw
b3NpdGlvbiB0byBmaW5kIGl0cyByZXBsYWNlbWVudC5cbiAqXG4gKiBAcGFyYW0ge0RPTUV2ZW50
VGFyZ2V0fSByb290XG4gKi9cbmZ1bmN0aW9uIEZhbGxiYWNrQ29tcG9zaXRpb25TdGF0ZShyb290
KSB7XG4gIHRoaXMuX3Jvb3QgPSByb290O1xuICB0aGlzLl9zdGFydFRleHQgPSB0aGlzLmdldFRl
eHQoKTtcbiAgdGhpcy5fZmFsbGJhY2tUZXh0ID0gbnVsbDtcbn1cblxuX2Fzc2lnbihGYWxsYmFj
a0NvbXBvc2l0aW9uU3RhdGUucHJvdG90eXBlLCB7XG4gIGRlc3RydWN0b3I6IGZ1bmN0aW9uICgp
IHtcbiAgICB0aGlzLl9yb290ID0gbnVsbDtcbiAgICB0aGlzLl9zdGFydFRleHQgPSBudWxsO1xu
ICAgIHRoaXMuX2ZhbGxiYWNrVGV4dCA9IG51bGw7XG4gIH0sXG5cbiAgLyoqXG4gICAqIEdldCBj
dXJyZW50IHRleHQgb2YgaW5wdXQuXG4gICAqXG4gICAqIEByZXR1cm4ge3N0cmluZ31cbiAgICov
XG4gIGdldFRleHQ6IGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoJ3ZhbHVlJyBpbiB0aGlzLl9yb290
KSB7XG4gICAgICByZXR1cm4gdGhpcy5fcm9vdC52YWx1ZTtcbiAgICB9XG4gICAgcmV0dXJuIHRo
aXMuX3Jvb3RbZ2V0VGV4dENvbnRlbnRBY2Nlc3NvcigpXTtcbiAgfSxcblxuICAvKipcbiAgICog
RGV0ZXJtaW5lIHRoZSBkaWZmZXJpbmcgc3Vic3RyaW5nIGJldHdlZW4gdGhlIGluaXRpYWxseSBz
dG9yZWRcbiAgICogdGV4dCBjb250ZW50IGFuZCB0aGUgY3VycmVudCBjb250ZW50LlxuICAgKlxu
ICAgKiBAcmV0dXJuIHtzdHJpbmd9XG4gICAqL1xuICBnZXREYXRhOiBmdW5jdGlvbiAoKSB7XG4g
ICAgaWYgKHRoaXMuX2ZhbGxiYWNrVGV4dCkge1xuICAgICAgcmV0dXJuIHRoaXMuX2ZhbGxiYWNr
VGV4dDtcbiAgICB9XG5cbiAgICB2YXIgc3RhcnQ7XG4gICAgdmFyIHN0YXJ0VmFsdWUgPSB0aGlz
Ll9zdGFydFRleHQ7XG4gICAgdmFyIHN0YXJ0TGVuZ3RoID0gc3RhcnRWYWx1ZS5sZW5ndGg7XG4g
ICAgdmFyIGVuZDtcbiAgICB2YXIgZW5kVmFsdWUgPSB0aGlzLmdldFRleHQoKTtcbiAgICB2YXIg
ZW5kTGVuZ3RoID0gZW5kVmFsdWUubGVuZ3RoO1xuXG4gICAgZm9yIChzdGFydCA9IDA7IHN0YXJ0
IDwgc3RhcnRMZW5ndGg7IHN0YXJ0KyspIHtcbiAgICAgIGlmIChzdGFydFZhbHVlW3N0YXJ0XSAh
PT0gZW5kVmFsdWVbc3RhcnRdKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxu
ICAgIHZhciBtaW5FbmQgPSBzdGFydExlbmd0aCAtIHN0YXJ0O1xuICAgIGZvciAoZW5kID0gMTsg
ZW5kIDw9IG1pbkVuZDsgZW5kKyspIHtcbiAgICAgIGlmIChzdGFydFZhbHVlW3N0YXJ0TGVuZ3Ro
IC0gZW5kXSAhPT0gZW5kVmFsdWVbZW5kTGVuZ3RoIC0gZW5kXSkge1xuICAgICAgICBicmVhaztc
biAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgc2xpY2VUYWlsID0gZW5kID4gMSA/IDEgLSBlbmQg
OiB1bmRlZmluZWQ7XG4gICAgdGhpcy5fZmFsbGJhY2tUZXh0ID0gZW5kVmFsdWUuc2xpY2Uoc3Rh
cnQsIHNsaWNlVGFpbCk7XG4gICAgcmV0dXJuIHRoaXMuX2ZhbGxiYWNrVGV4dDtcbiAgfVxufSk7
XG5cblBvb2xlZENsYXNzLmFkZFBvb2xpbmdUbyhGYWxsYmFja0NvbXBvc2l0aW9uU3RhdGUpO1xu
XG5tb2R1bGUuZXhwb3J0cyA9IEZhbGxiYWNrQ29tcG9zaXRpb25TdGF0ZTtcblxuXG4vKioqKioq
KioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFjdC1kb20vbGliL0Zh
bGxiYWNrQ29tcG9zaXRpb25TdGF0ZS5qc1xuICoqIG1vZHVsZSBpZCA9IDEzMlxuICoqIG1vZHVs
ZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNl
Ym9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBj
b2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVc
biAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJl
ZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQg
aW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICovXG5cbid1
c2Ugc3RyaWN0JztcblxudmFyIERPTVByb3BlcnR5ID0gcmVxdWlyZSgnLi9ET01Qcm9wZXJ0eScp
O1xuXG52YXIgTVVTVF9VU0VfUFJPUEVSVFkgPSBET01Qcm9wZXJ0eS5pbmplY3Rpb24uTVVTVF9V
U0VfUFJPUEVSVFk7XG52YXIgSEFTX0JPT0xFQU5fVkFMVUUgPSBET01Qcm9wZXJ0eS5pbmplY3Rp
b24uSEFTX0JPT0xFQU5fVkFMVUU7XG52YXIgSEFTX05VTUVSSUNfVkFMVUUgPSBET01Qcm9wZXJ0
eS5pbmplY3Rpb24uSEFTX05VTUVSSUNfVkFMVUU7XG52YXIgSEFTX1BPU0lUSVZFX05VTUVSSUNf
VkFMVUUgPSBET01Qcm9wZXJ0eS5pbmplY3Rpb24uSEFTX1BPU0lUSVZFX05VTUVSSUNfVkFMVUU7
XG52YXIgSEFTX09WRVJMT0FERURfQk9PTEVBTl9WQUxVRSA9IERPTVByb3BlcnR5LmluamVjdGlv
bi5IQVNfT1ZFUkxPQURFRF9CT09MRUFOX1ZBTFVFO1xuXG52YXIgSFRNTERPTVByb3BlcnR5Q29u
ZmlnID0ge1xuICBpc0N1c3RvbUF0dHJpYnV0ZTogUmVnRXhwLnByb3RvdHlwZS50ZXN0LmJpbmQo
bmV3IFJlZ0V4cCgnXihkYXRhfGFyaWEpLVsnICsgRE9NUHJvcGVydHkuQVRUUklCVVRFX05BTUVf
Q0hBUiArICddKiQnKSksXG4gIFByb3BlcnRpZXM6IHtcbiAgICAvKipcbiAgICAgKiBTdGFuZGFy
ZCBQcm9wZXJ0aWVzXG4gICAgICovXG4gICAgYWNjZXB0OiAwLFxuICAgIGFjY2VwdENoYXJzZXQ6
IDAsXG4gICAgYWNjZXNzS2V5OiAwLFxuICAgIGFjdGlvbjogMCxcbiAgICBhbGxvd0Z1bGxTY3Jl
ZW46IEhBU19CT09MRUFOX1ZBTFVFLFxuICAgIGFsbG93VHJhbnNwYXJlbmN5OiAwLFxuICAgIGFs
dDogMCxcbiAgICAvLyBzcGVjaWZpZXMgdGFyZ2V0IGNvbnRleHQgZm9yIGxpbmtzIHdpdGggYHBy
ZWxvYWRgIHR5cGVcbiAgICBhczogMCxcbiAgICBhc3luYzogSEFTX0JPT0xFQU5fVkFMVUUsXG4g
ICAgYXV0b0NvbXBsZXRlOiAwLFxuICAgIC8vIGF1dG9Gb2N1cyBpcyBwb2x5ZmlsbGVkL25vcm1h
bGl6ZWQgYnkgQXV0b0ZvY3VzVXRpbHNcbiAgICAvLyBhdXRvRm9jdXM6IEhBU19CT09MRUFOX1ZB
TFVFLFxuICAgIGF1dG9QbGF5OiBIQVNfQk9PTEVBTl9WQUxVRSxcbiAgICBjYXB0dXJlOiBIQVNf
Qk9PTEVBTl9WQUxVRSxcbiAgICBjZWxsUGFkZGluZzogMCxcbiAgICBjZWxsU3BhY2luZzogMCxc
biAgICBjaGFyU2V0OiAwLFxuICAgIGNoYWxsZW5nZTogMCxcbiAgICBjaGVja2VkOiBNVVNUX1VT
RV9QUk9QRVJUWSB8IEhBU19CT09MRUFOX1ZBTFVFLFxuICAgIGNpdGU6IDAsXG4gICAgY2xhc3NJ
RDogMCxcbiAgICBjbGFzc05hbWU6IDAsXG4gICAgY29sczogSEFTX1BPU0lUSVZFX05VTUVSSUNf
VkFMVUUsXG4gICAgY29sU3BhbjogMCxcbiAgICBjb250ZW50OiAwLFxuICAgIGNvbnRlbnRFZGl0
YWJsZTogMCxcbiAgICBjb250ZXh0TWVudTogMCxcbiAgICBjb250cm9sczogSEFTX0JPT0xFQU5f
VkFMVUUsXG4gICAgY29vcmRzOiAwLFxuICAgIGNyb3NzT3JpZ2luOiAwLFxuICAgIGRhdGE6IDAs
IC8vIEZvciBgPG9iamVjdCAvPmAgYWN0cyBhcyBgc3JjYC5cbiAgICBkYXRlVGltZTogMCxcbiAg
ICAnZGVmYXVsdCc6IEhBU19CT09MRUFOX1ZBTFVFLFxuICAgIGRlZmVyOiBIQVNfQk9PTEVBTl9W
QUxVRSxcbiAgICBkaXI6IDAsXG4gICAgZGlzYWJsZWQ6IEhBU19CT09MRUFOX1ZBTFVFLFxuICAg
IGRvd25sb2FkOiBIQVNfT1ZFUkxPQURFRF9CT09MRUFOX1ZBTFVFLFxuICAgIGRyYWdnYWJsZTog
MCxcbiAgICBlbmNUeXBlOiAwLFxuICAgIGZvcm06IDAsXG4gICAgZm9ybUFjdGlvbjogMCxcbiAg
ICBmb3JtRW5jVHlwZTogMCxcbiAgICBmb3JtTWV0aG9kOiAwLFxuICAgIGZvcm1Ob1ZhbGlkYXRl
OiBIQVNfQk9PTEVBTl9WQUxVRSxcbiAgICBmb3JtVGFyZ2V0OiAwLFxuICAgIGZyYW1lQm9yZGVy
OiAwLFxuICAgIGhlYWRlcnM6IDAsXG4gICAgaGVpZ2h0OiAwLFxuICAgIGhpZGRlbjogSEFTX0JP
T0xFQU5fVkFMVUUsXG4gICAgaGlnaDogMCxcbiAgICBocmVmOiAwLFxuICAgIGhyZWZMYW5nOiAw
LFxuICAgIGh0bWxGb3I6IDAsXG4gICAgaHR0cEVxdWl2OiAwLFxuICAgIGljb246IDAsXG4gICAg
aWQ6IDAsXG4gICAgaW5wdXRNb2RlOiAwLFxuICAgIGludGVncml0eTogMCxcbiAgICBpczogMCxc
biAgICBrZXlQYXJhbXM6IDAsXG4gICAga2V5VHlwZTogMCxcbiAgICBraW5kOiAwLFxuICAgIGxh
YmVsOiAwLFxuICAgIGxhbmc6IDAsXG4gICAgbGlzdDogMCxcbiAgICBsb29wOiBIQVNfQk9PTEVB
Tl9WQUxVRSxcbiAgICBsb3c6IDAsXG4gICAgbWFuaWZlc3Q6IDAsXG4gICAgbWFyZ2luSGVpZ2h0
OiAwLFxuICAgIG1hcmdpbldpZHRoOiAwLFxuICAgIG1heDogMCxcbiAgICBtYXhMZW5ndGg6IDAs
XG4gICAgbWVkaWE6IDAsXG4gICAgbWVkaWFHcm91cDogMCxcbiAgICBtZXRob2Q6IDAsXG4gICAg
bWluOiAwLFxuICAgIG1pbkxlbmd0aDogMCxcbiAgICAvLyBDYXV0aW9uOyBgb3B0aW9uLnNlbGVj
dGVkYCBpcyBub3QgdXBkYXRlZCBpZiBgc2VsZWN0Lm11bHRpcGxlYCBpc1xuICAgIC8vIGRpc2Fi
bGVkIHdpdGggYHJlbW92ZUF0dHJpYnV0ZWAuXG4gICAgbXVsdGlwbGU6IE1VU1RfVVNFX1BST1BF
UlRZIHwgSEFTX0JPT0xFQU5fVkFMVUUsXG4gICAgbXV0ZWQ6IE1VU1RfVVNFX1BST1BFUlRZIHwg
SEFTX0JPT0xFQU5fVkFMVUUsXG4gICAgbmFtZTogMCxcbiAgICBub25jZTogMCxcbiAgICBub1Zh
bGlkYXRlOiBIQVNfQk9PTEVBTl9WQUxVRSxcbiAgICBvcGVuOiBIQVNfQk9PTEVBTl9WQUxVRSxc
biAgICBvcHRpbXVtOiAwLFxuICAgIHBhdHRlcm46IDAsXG4gICAgcGxhY2Vob2xkZXI6IDAsXG4g
ICAgcGxheXNJbmxpbmU6IEhBU19CT09MRUFOX1ZBTFVFLFxuICAgIHBvc3RlcjogMCxcbiAgICBw
cmVsb2FkOiAwLFxuICAgIHByb2ZpbGU6IDAsXG4gICAgcmFkaW9Hcm91cDogMCxcbiAgICByZWFk
T25seTogSEFTX0JPT0xFQU5fVkFMVUUsXG4gICAgcmVmZXJyZXJQb2xpY3k6IDAsXG4gICAgcmVs
OiAwLFxuICAgIHJlcXVpcmVkOiBIQVNfQk9PTEVBTl9WQUxVRSxcbiAgICByZXZlcnNlZDogSEFT
X0JPT0xFQU5fVkFMVUUsXG4gICAgcm9sZTogMCxcbiAgICByb3dzOiBIQVNfUE9TSVRJVkVfTlVN
RVJJQ19WQUxVRSxcbiAgICByb3dTcGFuOiBIQVNfTlVNRVJJQ19WQUxVRSxcbiAgICBzYW5kYm94
OiAwLFxuICAgIHNjb3BlOiAwLFxuICAgIHNjb3BlZDogSEFTX0JPT0xFQU5fVkFMVUUsXG4gICAg
c2Nyb2xsaW5nOiAwLFxuICAgIHNlYW1sZXNzOiBIQVNfQk9PTEVBTl9WQUxVRSxcbiAgICBzZWxl
Y3RlZDogTVVTVF9VU0VfUFJPUEVSVFkgfCBIQVNfQk9PTEVBTl9WQUxVRSxcbiAgICBzaGFwZTog
MCxcbiAgICBzaXplOiBIQVNfUE9TSVRJVkVfTlVNRVJJQ19WQUxVRSxcbiAgICBzaXplczogMCxc
biAgICBzcGFuOiBIQVNfUE9TSVRJVkVfTlVNRVJJQ19WQUxVRSxcbiAgICBzcGVsbENoZWNrOiAw
LFxuICAgIHNyYzogMCxcbiAgICBzcmNEb2M6IDAsXG4gICAgc3JjTGFuZzogMCxcbiAgICBzcmNT
ZXQ6IDAsXG4gICAgc3RhcnQ6IEhBU19OVU1FUklDX1ZBTFVFLFxuICAgIHN0ZXA6IDAsXG4gICAg
c3R5bGU6IDAsXG4gICAgc3VtbWFyeTogMCxcbiAgICB0YWJJbmRleDogMCxcbiAgICB0YXJnZXQ6
IDAsXG4gICAgdGl0bGU6IDAsXG4gICAgLy8gU2V0dGluZyAudHlwZSB0aHJvd3Mgb24gbm9uLTxp
bnB1dD4gdGFnc1xuICAgIHR5cGU6IDAsXG4gICAgdXNlTWFwOiAwLFxuICAgIHZhbHVlOiAwLFxu
ICAgIHdpZHRoOiAwLFxuICAgIHdtb2RlOiAwLFxuICAgIHdyYXA6IDAsXG5cbiAgICAvKipcbiAg
ICAgKiBSREZhIFByb3BlcnRpZXNcbiAgICAgKi9cbiAgICBhYm91dDogMCxcbiAgICBkYXRhdHlw
ZTogMCxcbiAgICBpbmxpc3Q6IDAsXG4gICAgcHJlZml4OiAwLFxuICAgIC8vIHByb3BlcnR5IGlz
IGFsc28gc3VwcG9ydGVkIGZvciBPcGVuR3JhcGggaW4gbWV0YSB0YWdzLlxuICAgIHByb3BlcnR5
OiAwLFxuICAgIHJlc291cmNlOiAwLFxuICAgICd0eXBlb2YnOiAwLFxuICAgIHZvY2FiOiAwLFxu
XG4gICAgLyoqXG4gICAgICogTm9uLXN0YW5kYXJkIFByb3BlcnRpZXNcbiAgICAgKi9cbiAgICAv
LyBhdXRvQ2FwaXRhbGl6ZSBhbmQgYXV0b0NvcnJlY3QgYXJlIHN1cHBvcnRlZCBpbiBNb2JpbGUg
U2FmYXJpIGZvclxuICAgIC8vIGtleWJvYXJkIGhpbnRzLlxuICAgIGF1dG9DYXBpdGFsaXplOiAw
LFxuICAgIGF1dG9Db3JyZWN0OiAwLFxuICAgIC8vIGF1dG9TYXZlIGFsbG93cyBXZWJLaXQvQmxp
bmsgdG8gcGVyc2lzdCB2YWx1ZXMgb2YgaW5wdXQgZmllbGRzIG9uIHBhZ2UgcmVsb2Fkc1xuICAg
IGF1dG9TYXZlOiAwLFxuICAgIC8vIGNvbG9yIGlzIGZvciBTYWZhcmkgbWFzay1pY29uIGxpbmtc
biAgICBjb2xvcjogMCxcbiAgICAvLyBpdGVtUHJvcCwgaXRlbVNjb3BlLCBpdGVtVHlwZSBhcmUg
Zm9yXG4gICAgLy8gTWljcm9kYXRhIHN1cHBvcnQuIFNlZSBodHRwOi8vc2NoZW1hLm9yZy9kb2Nz
L2dzLmh0bWxcbiAgICBpdGVtUHJvcDogMCxcbiAgICBpdGVtU2NvcGU6IEhBU19CT09MRUFOX1ZB
TFVFLFxuICAgIGl0ZW1UeXBlOiAwLFxuICAgIC8vIGl0ZW1JRCBhbmQgaXRlbVJlZiBhcmUgZm9y
IE1pY3JvZGF0YSBzdXBwb3J0IGFzIHdlbGwgYnV0XG4gICAgLy8gb25seSBzcGVjaWZpZWQgaW4g
dGhlIFdIQVRXRyBzcGVjIGRvY3VtZW50LiBTZWVcbiAgICAvLyBodHRwczovL2h0bWwuc3BlYy53
aGF0d2cub3JnL211bHRpcGFnZS9taWNyb2RhdGEuaHRtbCNtaWNyb2RhdGEtZG9tLWFwaVxuICAg
IGl0ZW1JRDogMCxcbiAgICBpdGVtUmVmOiAwLFxuICAgIC8vIHJlc3VsdHMgc2hvdyBsb29raW5n
IGdsYXNzIGljb24gYW5kIHJlY2VudCBzZWFyY2hlcyBvbiBpbnB1dFxuICAgIC8vIHNlYXJjaCBm
aWVsZHMgaW4gV2ViS2l0L0JsaW5rXG4gICAgcmVzdWx0czogMCxcbiAgICAvLyBJRS1vbmx5IGF0
dHJpYnV0ZSB0aGF0IHNwZWNpZmllcyBzZWN1cml0eSByZXN0cmljdGlvbnMgb24gYW4gaWZyYW1l
XG4gICAgLy8gYXMgYW4gYWx0ZXJuYXRpdmUgdG8gdGhlIHNhbmRib3ggYXR0cmlidXRlIG9uIElF
PDEwXG4gICAgc2VjdXJpdHk6IDAsXG4gICAgLy8gSUUtb25seSBhdHRyaWJ1dGUgdGhhdCBjb250
cm9scyBmb2N1cyBiZWhhdmlvclxuICAgIHVuc2VsZWN0YWJsZTogMFxuICB9LFxuICBET01BdHRy
aWJ1dGVOYW1lczoge1xuICAgIGFjY2VwdENoYXJzZXQ6ICdhY2NlcHQtY2hhcnNldCcsXG4gICAg
Y2xhc3NOYW1lOiAnY2xhc3MnLFxuICAgIGh0bWxGb3I6ICdmb3InLFxuICAgIGh0dHBFcXVpdjog
J2h0dHAtZXF1aXYnXG4gIH0sXG4gIERPTVByb3BlcnR5TmFtZXM6IHt9LFxuICBET01NdXRhdGlv
bk1ldGhvZHM6IHtcbiAgICB2YWx1ZTogZnVuY3Rpb24gKG5vZGUsIHZhbHVlKSB7XG4gICAgICBp
ZiAodmFsdWUgPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gbm9kZS5yZW1vdmVBdHRyaWJ1dGUo
J3ZhbHVlJyk7XG4gICAgICB9XG5cbiAgICAgIC8vIE51bWJlciBpbnB1dHMgZ2V0IHNwZWNpYWwg
dHJlYXRtZW50IGR1ZSB0byBzb21lIGVkZ2UgY2FzZXMgaW5cbiAgICAgIC8vIENocm9tZS4gTGV0
IGV2ZXJ5dGhpbmcgZWxzZSBhc3NpZ24gdGhlIHZhbHVlIGF0dHJpYnV0ZSBhcyBub3JtYWwuXG4g
ICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvaXNzdWVzLzcyNTMjaXNz
dWVjb21tZW50LTIzNjA3NDMyNlxuICAgICAgaWYgKG5vZGUudHlwZSAhPT0gJ251bWJlcicgfHwg
bm9kZS5oYXNBdHRyaWJ1dGUoJ3ZhbHVlJykgPT09IGZhbHNlKSB7XG4gICAgICAgIG5vZGUuc2V0
QXR0cmlidXRlKCd2YWx1ZScsICcnICsgdmFsdWUpO1xuICAgICAgfSBlbHNlIGlmIChub2RlLnZh
bGlkaXR5ICYmICFub2RlLnZhbGlkaXR5LmJhZElucHV0ICYmIG5vZGUub3duZXJEb2N1bWVudC5h
Y3RpdmVFbGVtZW50ICE9PSBub2RlKSB7XG4gICAgICAgIC8vIERvbid0IGFzc2lnbiBhbiBhdHRy
aWJ1dGUgaWYgdmFsaWRhdGlvbiByZXBvcnRzIGJhZFxuICAgICAgICAvLyBpbnB1dC4gQ2hyb21l
IHdpbGwgY2xlYXIgdGhlIHZhbHVlLiBBZGRpdGlvbmFsbHksIGRvbid0XG4gICAgICAgIC8vIG9w
ZXJhdGUgb24gaW5wdXRzIHRoYXQgaGF2ZSBmb2N1cywgb3RoZXJ3aXNlIENocm9tZSBtaWdodFxu
ICAgICAgICAvLyBzdHJpcCBvZmYgdHJhaWxpbmcgZGVjaW1hbCBwbGFjZXMgYW5kIGNhdXNlIHRo
ZSB1c2VyJ3NcbiAgICAgICAgLy8gY3Vyc29yIHBvc2l0aW9uIHRvIGp1bXAgdG8gdGhlIGJlZ2lu
bmluZyBvZiB0aGUgaW5wdXQuXG4gICAgICAgIC8vXG4gICAgICAgIC8vIEluIFJlYWN0RE9NSW5w
dXQsIHdlIGhhdmUgYW4gb25CbHVyIGV2ZW50IHRoYXQgd2lsbCB0cmlnZ2VyXG4gICAgICAgIC8v
IHRoaXMgZnVuY3Rpb24gYWdhaW4gd2hlbiBmb2N1cyBpcyBsb3N0LlxuICAgICAgICBub2RlLnNl
dEF0dHJpYnV0ZSgndmFsdWUnLCAnJyArIHZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn07
XG5cbm1vZHVsZS5leHBvcnRzID0gSFRNTERPTVByb3BlcnR5Q29uZmlnO1xuXG5cbi8qKioqKioq
KioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0LWRvbS9saWIvSFRN
TERPTVByb3BlcnR5Q29uZmlnLmpzXG4gKiogbW9kdWxlIGlkID0gMTMzXG4gKiogbW9kdWxlIGNo
dW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQsIEZhY2Vib29r
LCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUg
aXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICog
TElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBB
biBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0
aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuJ3VzZSBz
dHJpY3QnO1xuXG52YXIgUmVhY3RSZWNvbmNpbGVyID0gcmVxdWlyZSgnLi9SZWFjdFJlY29uY2ls
ZXInKTtcblxudmFyIGluc3RhbnRpYXRlUmVhY3RDb21wb25lbnQgPSByZXF1aXJlKCcuL2luc3Rh
bnRpYXRlUmVhY3RDb21wb25lbnQnKTtcbnZhciBLZXlFc2NhcGVVdGlscyA9IHJlcXVpcmUoJy4v
S2V5RXNjYXBlVXRpbHMnKTtcbnZhciBzaG91bGRVcGRhdGVSZWFjdENvbXBvbmVudCA9IHJlcXVp
cmUoJy4vc2hvdWxkVXBkYXRlUmVhY3RDb21wb25lbnQnKTtcbnZhciB0cmF2ZXJzZUFsbENoaWxk
cmVuID0gcmVxdWlyZSgnLi90cmF2ZXJzZUFsbENoaWxkcmVuJyk7XG52YXIgd2FybmluZyA9IHJl
cXVpcmUoJ2ZianMvbGliL3dhcm5pbmcnKTtcblxudmFyIFJlYWN0Q29tcG9uZW50VHJlZUhvb2s7
XG5cbmlmICh0eXBlb2YgcHJvY2VzcyAhPT0gJ3VuZGVmaW5lZCcgJiYgcHJvY2Vzcy5lbnYgJiYg
cHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICd0ZXN0Jykge1xuICAvLyBUZW1wb3JhcnkgaGFjay5c
biAgLy8gSW5saW5lIHJlcXVpcmVzIGRvbid0IHdvcmsgd2VsbCB3aXRoIEplc3Q6XG4gIC8vIGh0
dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9pc3N1ZXMvNzI0MFxuICAvLyBSZW1vdmUg
dGhlIGlubGluZSByZXF1aXJlcyB3aGVuIHdlIGRvbid0IG5lZWQgdGhlbSBhbnltb3JlOlxuICAv
LyBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvcHVsbC83MTc4XG4gIFJlYWN0Q29t
cG9uZW50VHJlZUhvb2sgPSByZXF1aXJlKCdyZWFjdC9saWIvUmVhY3RDb21wb25lbnRUcmVlSG9v
aycpO1xufVxuXG5mdW5jdGlvbiBpbnN0YW50aWF0ZUNoaWxkKGNoaWxkSW5zdGFuY2VzLCBjaGls
ZCwgbmFtZSwgc2VsZkRlYnVnSUQpIHtcbiAgLy8gV2UgZm91bmQgYSBjb21wb25lbnQgaW5zdGFu
Y2UuXG4gIHZhciBrZXlVbmlxdWUgPSBjaGlsZEluc3RhbmNlc1tuYW1lXSA9PT0gdW5kZWZpbmVk
O1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIGlm
ICghUmVhY3RDb21wb25lbnRUcmVlSG9vaykge1xuICAgICAgUmVhY3RDb21wb25lbnRUcmVlSG9v
ayA9IHJlcXVpcmUoJ3JlYWN0L2xpYi9SZWFjdENvbXBvbmVudFRyZWVIb29rJyk7XG4gICAgfVxu
ICAgIGlmICgha2V5VW5pcXVlKSB7XG4gICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3By
b2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ2ZsYXR0ZW5DaGlsZHJlbiguLi4pOiBFbmNvdW50
ZXJlZCB0d28gY2hpbGRyZW4gd2l0aCB0aGUgc2FtZSBrZXksICcgKyAnYCVzYC4gQ2hpbGQga2V5
cyBtdXN0IGJlIHVuaXF1ZTsgd2hlbiB0d28gY2hpbGRyZW4gc2hhcmUgYSBrZXksIG9ubHkgJyAr
ICd0aGUgZmlyc3QgY2hpbGQgd2lsbCBiZSB1c2VkLiVzJywgS2V5RXNjYXBlVXRpbHMudW5lc2Nh
cGUobmFtZSksIFJlYWN0Q29tcG9uZW50VHJlZUhvb2suZ2V0U3RhY2tBZGRlbmR1bUJ5SUQoc2Vs
ZkRlYnVnSUQpKSA6IHZvaWQgMDtcbiAgICB9XG4gIH1cbiAgaWYgKGNoaWxkICE9IG51bGwgJiYg
a2V5VW5pcXVlKSB7XG4gICAgY2hpbGRJbnN0YW5jZXNbbmFtZV0gPSBpbnN0YW50aWF0ZVJlYWN0
Q29tcG9uZW50KGNoaWxkLCB0cnVlKTtcbiAgfVxufVxuXG4vKipcbiAqIFJlYWN0Q2hpbGRSZWNv
bmNpbGVyIHByb3ZpZGVzIGhlbHBlcnMgZm9yIGluaXRpYWxpemluZyBvciB1cGRhdGluZyBhIHNl
dCBvZlxuICogY2hpbGRyZW4uIEl0cyBvdXRwdXQgaXMgc3VpdGFibGUgZm9yIHBhc3NpbmcgaXQg
b250byBSZWFjdE11bHRpQ2hpbGQgd2hpY2hcbiAqIGRvZXMgZGlmZmVkIHJlb3JkZXJpbmcgYW5k
IGluc2VydGlvbi5cbiAqL1xudmFyIFJlYWN0Q2hpbGRSZWNvbmNpbGVyID0ge1xuICAvKipcbiAg
ICogR2VuZXJhdGVzIGEgXCJtb3VudCBpbWFnZVwiIGZvciBlYWNoIG9mIHRoZSBzdXBwbGllZCBj
aGlsZHJlbi4gSW4gdGhlIGNhc2VcbiAgICogb2YgYFJlYWN0RE9NQ29tcG9uZW50YCwgYSBtb3Vu
dCBpbWFnZSBpcyBhIHN0cmluZyBvZiBtYXJrdXAuXG4gICAqXG4gICAqIEBwYXJhbSB7P29iamVj
dH0gbmVzdGVkQ2hpbGROb2RlcyBOZXN0ZWQgY2hpbGQgbWFwcy5cbiAgICogQHJldHVybiB7P29i
amVjdH0gQSBzZXQgb2YgY2hpbGQgaW5zdGFuY2VzLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4g
IGluc3RhbnRpYXRlQ2hpbGRyZW46IGZ1bmN0aW9uIChuZXN0ZWRDaGlsZE5vZGVzLCB0cmFuc2Fj
dGlvbiwgY29udGV4dCwgc2VsZkRlYnVnSUQpIC8vIDAgaW4gcHJvZHVjdGlvbiBhbmQgZm9yIHJv
b3RzXG4gIHtcbiAgICBpZiAobmVzdGVkQ2hpbGROb2RlcyA9PSBudWxsKSB7XG4gICAgICByZXR1
cm4gbnVsbDtcbiAgICB9XG4gICAgdmFyIGNoaWxkSW5zdGFuY2VzID0ge307XG5cbiAgICBpZiAo
cHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgdHJhdmVyc2VB
bGxDaGlsZHJlbihuZXN0ZWRDaGlsZE5vZGVzLCBmdW5jdGlvbiAoY2hpbGRJbnN0cywgY2hpbGQs
IG5hbWUpIHtcbiAgICAgICAgcmV0dXJuIGluc3RhbnRpYXRlQ2hpbGQoY2hpbGRJbnN0cywgY2hp
bGQsIG5hbWUsIHNlbGZEZWJ1Z0lEKTtcbiAgICAgIH0sIGNoaWxkSW5zdGFuY2VzKTtcbiAgICB9
IGVsc2Uge1xuICAgICAgdHJhdmVyc2VBbGxDaGlsZHJlbihuZXN0ZWRDaGlsZE5vZGVzLCBpbnN0
YW50aWF0ZUNoaWxkLCBjaGlsZEluc3RhbmNlcyk7XG4gICAgfVxuICAgIHJldHVybiBjaGlsZElu
c3RhbmNlcztcbiAgfSxcblxuICAvKipcbiAgICogVXBkYXRlcyB0aGUgcmVuZGVyZWQgY2hpbGRy
ZW4gYW5kIHJldHVybnMgYSBuZXcgc2V0IG9mIGNoaWxkcmVuLlxuICAgKlxuICAgKiBAcGFyYW0g
ez9vYmplY3R9IHByZXZDaGlsZHJlbiBQcmV2aW91c2x5IGluaXRpYWxpemVkIHNldCBvZiBjaGls
ZHJlbi5cbiAgICogQHBhcmFtIHs/b2JqZWN0fSBuZXh0Q2hpbGRyZW4gRmxhdCBjaGlsZCBlbGVt
ZW50IG1hcHMuXG4gICAqIEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbn0gdHJhbnNh
Y3Rpb25cbiAgICogQHBhcmFtIHtvYmplY3R9IGNvbnRleHRcbiAgICogQHJldHVybiB7P29iamVj
dH0gQSBuZXcgc2V0IG9mIGNoaWxkIGluc3RhbmNlcy5cbiAgICogQGludGVybmFsXG4gICAqL1xu
ICB1cGRhdGVDaGlsZHJlbjogZnVuY3Rpb24gKHByZXZDaGlsZHJlbiwgbmV4dENoaWxkcmVuLCBt
b3VudEltYWdlcywgcmVtb3ZlZE5vZGVzLCB0cmFuc2FjdGlvbiwgaG9zdFBhcmVudCwgaG9zdENv
bnRhaW5lckluZm8sIGNvbnRleHQsIHNlbGZEZWJ1Z0lEKSAvLyAwIGluIHByb2R1Y3Rpb24gYW5k
IGZvciByb290c1xuICB7XG4gICAgLy8gV2UgY3VycmVudGx5IGRvbid0IGhhdmUgYSB3YXkgdG8g
dHJhY2sgbW92ZXMgaGVyZSBidXQgaWYgd2UgdXNlIGl0ZXJhdG9yc1xuICAgIC8vIGluc3RlYWQg
b2YgZm9yLi5pbiB3ZSBjYW4gemlwIHRoZSBpdGVyYXRvcnMgYW5kIGNoZWNrIGlmIGFuIGl0ZW0g
aGFzXG4gICAgLy8gbW92ZWQuXG4gICAgLy8gVE9ETzogSWYgbm90aGluZyBoYXMgY2hhbmdlZCwg
cmV0dXJuIHRoZSBwcmV2Q2hpbGRyZW4gb2JqZWN0IHNvIHRoYXQgd2VcbiAgICAvLyBjYW4gcXVp
Y2tseSBiYWlsb3V0IGlmIG5vdGhpbmcgaGFzIGNoYW5nZWQuXG4gICAgaWYgKCFuZXh0Q2hpbGRy
ZW4gJiYgIXByZXZDaGlsZHJlbikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB2YXIgbmFt
ZTtcbiAgICB2YXIgcHJldkNoaWxkO1xuICAgIGZvciAobmFtZSBpbiBuZXh0Q2hpbGRyZW4pIHtc
biAgICAgIGlmICghbmV4dENoaWxkcmVuLmhhc093blByb3BlcnR5KG5hbWUpKSB7XG4gICAgICAg
IGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgcHJldkNoaWxkID0gcHJldkNoaWxkcmVuICYmIHBy
ZXZDaGlsZHJlbltuYW1lXTtcbiAgICAgIHZhciBwcmV2RWxlbWVudCA9IHByZXZDaGlsZCAmJiBw
cmV2Q2hpbGQuX2N1cnJlbnRFbGVtZW50O1xuICAgICAgdmFyIG5leHRFbGVtZW50ID0gbmV4dENo
aWxkcmVuW25hbWVdO1xuICAgICAgaWYgKHByZXZDaGlsZCAhPSBudWxsICYmIHNob3VsZFVwZGF0
ZVJlYWN0Q29tcG9uZW50KHByZXZFbGVtZW50LCBuZXh0RWxlbWVudCkpIHtcbiAgICAgICAgUmVh
Y3RSZWNvbmNpbGVyLnJlY2VpdmVDb21wb25lbnQocHJldkNoaWxkLCBuZXh0RWxlbWVudCwgdHJh
bnNhY3Rpb24sIGNvbnRleHQpO1xuICAgICAgICBuZXh0Q2hpbGRyZW5bbmFtZV0gPSBwcmV2Q2hp
bGQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAocHJldkNoaWxkKSB7XG4gICAgICAgICAg
cmVtb3ZlZE5vZGVzW25hbWVdID0gUmVhY3RSZWNvbmNpbGVyLmdldEhvc3ROb2RlKHByZXZDaGls
ZCk7XG4gICAgICAgICAgUmVhY3RSZWNvbmNpbGVyLnVubW91bnRDb21wb25lbnQocHJldkNoaWxk
LCBmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gVGhlIGNoaWxkIG11c3QgYmUgaW5zdGFu
dGlhdGVkIGJlZm9yZSBpdCdzIG1vdW50ZWQuXG4gICAgICAgIHZhciBuZXh0Q2hpbGRJbnN0YW5j
ZSA9IGluc3RhbnRpYXRlUmVhY3RDb21wb25lbnQobmV4dEVsZW1lbnQsIHRydWUpO1xuICAgICAg
ICBuZXh0Q2hpbGRyZW5bbmFtZV0gPSBuZXh0Q2hpbGRJbnN0YW5jZTtcbiAgICAgICAgLy8gQ3Jl
YXRpbmcgbW91bnQgaW1hZ2Ugbm93IGVuc3VyZXMgcmVmcyBhcmUgcmVzb2x2ZWQgaW4gcmlnaHQg
b3JkZXJcbiAgICAgICAgLy8gKHNlZSBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3Qv
cHVsbC83MTAxIGZvciBleHBsYW5hdGlvbikuXG4gICAgICAgIHZhciBuZXh0Q2hpbGRNb3VudElt
YWdlID0gUmVhY3RSZWNvbmNpbGVyLm1vdW50Q29tcG9uZW50KG5leHRDaGlsZEluc3RhbmNlLCB0
cmFuc2FjdGlvbiwgaG9zdFBhcmVudCwgaG9zdENvbnRhaW5lckluZm8sIGNvbnRleHQsIHNlbGZE
ZWJ1Z0lEKTtcbiAgICAgICAgbW91bnRJbWFnZXMucHVzaChuZXh0Q2hpbGRNb3VudEltYWdlKTtc
biAgICAgIH1cbiAgICB9XG4gICAgLy8gVW5tb3VudCBjaGlsZHJlbiB0aGF0IGFyZSBubyBsb25n
ZXIgcHJlc2VudC5cbiAgICBmb3IgKG5hbWUgaW4gcHJldkNoaWxkcmVuKSB7XG4gICAgICBpZiAo
cHJldkNoaWxkcmVuLmhhc093blByb3BlcnR5KG5hbWUpICYmICEobmV4dENoaWxkcmVuICYmIG5l
eHRDaGlsZHJlbi5oYXNPd25Qcm9wZXJ0eShuYW1lKSkpIHtcbiAgICAgICAgcHJldkNoaWxkID0g
cHJldkNoaWxkcmVuW25hbWVdO1xuICAgICAgICByZW1vdmVkTm9kZXNbbmFtZV0gPSBSZWFjdFJl
Y29uY2lsZXIuZ2V0SG9zdE5vZGUocHJldkNoaWxkKTtcbiAgICAgICAgUmVhY3RSZWNvbmNpbGVy
LnVubW91bnRDb21wb25lbnQocHJldkNoaWxkLCBmYWxzZSk7XG4gICAgICB9XG4gICAgfVxuICB9
LFxuXG4gIC8qKlxuICAgKiBVbm1vdW50cyBhbGwgcmVuZGVyZWQgY2hpbGRyZW4uIFRoaXMgc2hv
dWxkIGJlIHVzZWQgdG8gY2xlYW4gdXAgY2hpbGRyZW5cbiAgICogd2hlbiB0aGlzIGNvbXBvbmVu
dCBpcyB1bm1vdW50ZWQuXG4gICAqXG4gICAqIEBwYXJhbSB7P29iamVjdH0gcmVuZGVyZWRDaGls
ZHJlbiBQcmV2aW91c2x5IGluaXRpYWxpemVkIHNldCBvZiBjaGlsZHJlbi5cbiAgICogQGludGVy
bmFsXG4gICAqL1xuICB1bm1vdW50Q2hpbGRyZW46IGZ1bmN0aW9uIChyZW5kZXJlZENoaWxkcmVu
LCBzYWZlbHkpIHtcbiAgICBmb3IgKHZhciBuYW1lIGluIHJlbmRlcmVkQ2hpbGRyZW4pIHtcbiAg
ICAgIGlmIChyZW5kZXJlZENoaWxkcmVuLmhhc093blByb3BlcnR5KG5hbWUpKSB7XG4gICAgICAg
IHZhciByZW5kZXJlZENoaWxkID0gcmVuZGVyZWRDaGlsZHJlbltuYW1lXTtcbiAgICAgICAgUmVh
Y3RSZWNvbmNpbGVyLnVubW91bnRDb21wb25lbnQocmVuZGVyZWRDaGlsZCwgc2FmZWx5KTtcbiAg
ICAgIH1cbiAgICB9XG4gIH1cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RDaGlsZFJlY29u
Y2lsZXI7XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAu
L34vcmVhY3QtZG9tL2xpYi9SZWFjdENoaWxkUmVjb25jaWxlci5qc1xuICoqIG1vZHVsZSBpZCA9
IDEzNFxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAx
My1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4g
KiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5z
ZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2Yg
dGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0
cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3Rvcnku
XG4gKlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIERPTUNoaWxkcmVuT3BlcmF0aW9ucyA9
IHJlcXVpcmUoJy4vRE9NQ2hpbGRyZW5PcGVyYXRpb25zJyk7XG52YXIgUmVhY3RET01JRE9wZXJh
dGlvbnMgPSByZXF1aXJlKCcuL1JlYWN0RE9NSURPcGVyYXRpb25zJyk7XG5cbi8qKlxuICogQWJz
dHJhY3RzIGF3YXkgYWxsIGZ1bmN0aW9uYWxpdHkgb2YgdGhlIHJlY29uY2lsZXIgdGhhdCByZXF1
aXJlcyBrbm93bGVkZ2Ugb2ZcbiAqIHRoZSBicm93c2VyIGNvbnRleHQuIFRPRE86IFRoZXNlIGNh
bGxlcnMgc2hvdWxkIGJlIHJlZmFjdG9yZWQgdG8gYXZvaWQgdGhlXG4gKiBuZWVkIGZvciB0aGlz
IGluamVjdGlvbi5cbiAqL1xudmFyIFJlYWN0Q29tcG9uZW50QnJvd3NlckVudmlyb25tZW50ID0g
e1xuICBwcm9jZXNzQ2hpbGRyZW5VcGRhdGVzOiBSZWFjdERPTUlET3BlcmF0aW9ucy5kYW5nZXJv
dXNseVByb2Nlc3NDaGlsZHJlblVwZGF0ZXMsXG5cbiAgcmVwbGFjZU5vZGVXaXRoTWFya3VwOiBE
T01DaGlsZHJlbk9wZXJhdGlvbnMuZGFuZ2Vyb3VzbHlSZXBsYWNlTm9kZVdpdGhNYXJrdXBcbn07
XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RDb21wb25lbnRCcm93c2VyRW52aXJvbm1lbnQ7XG5c
blxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3Qt
ZG9tL2xpYi9SZWFjdENvbXBvbmVudEJyb3dzZXJFbnZpcm9ubWVudC5qc1xuICoqIG1vZHVsZSBp
ZCA9IDEzNVxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQg
MjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAq
XG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGlj
ZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkg
b2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJp
Z2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3Rv
cnkuXG4gKlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIF9wcm9kSW52YXJpYW50ID0gcmVx
dWlyZSgnLi9yZWFjdFByb2RJbnZhcmlhbnQnKSxcbiAgICBfYXNzaWduID0gcmVxdWlyZSgnb2Jq
ZWN0LWFzc2lnbicpO1xuXG52YXIgUmVhY3QgPSByZXF1aXJlKCdyZWFjdC9saWIvUmVhY3QnKTtc
bnZhciBSZWFjdENvbXBvbmVudEVudmlyb25tZW50ID0gcmVxdWlyZSgnLi9SZWFjdENvbXBvbmVu
dEVudmlyb25tZW50Jyk7XG52YXIgUmVhY3RDdXJyZW50T3duZXIgPSByZXF1aXJlKCdyZWFjdC9s
aWIvUmVhY3RDdXJyZW50T3duZXInKTtcbnZhciBSZWFjdEVycm9yVXRpbHMgPSByZXF1aXJlKCcu
L1JlYWN0RXJyb3JVdGlscycpO1xudmFyIFJlYWN0SW5zdGFuY2VNYXAgPSByZXF1aXJlKCcuL1Jl
YWN0SW5zdGFuY2VNYXAnKTtcbnZhciBSZWFjdEluc3RydW1lbnRhdGlvbiA9IHJlcXVpcmUoJy4v
UmVhY3RJbnN0cnVtZW50YXRpb24nKTtcbnZhciBSZWFjdE5vZGVUeXBlcyA9IHJlcXVpcmUoJy4v
UmVhY3ROb2RlVHlwZXMnKTtcbnZhciBSZWFjdFJlY29uY2lsZXIgPSByZXF1aXJlKCcuL1JlYWN0
UmVjb25jaWxlcicpO1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9u
Jykge1xuICB2YXIgY2hlY2tSZWFjdFR5cGVTcGVjID0gcmVxdWlyZSgnLi9jaGVja1JlYWN0VHlw
ZVNwZWMnKTtcbn1cblxudmFyIGVtcHR5T2JqZWN0ID0gcmVxdWlyZSgnZmJqcy9saWIvZW1wdHlP
YmplY3QnKTtcbnZhciBpbnZhcmlhbnQgPSByZXF1aXJlKCdmYmpzL2xpYi9pbnZhcmlhbnQnKTtc
bnZhciBzaGFsbG93RXF1YWwgPSByZXF1aXJlKCdmYmpzL2xpYi9zaGFsbG93RXF1YWwnKTtcbnZh
ciBzaG91bGRVcGRhdGVSZWFjdENvbXBvbmVudCA9IHJlcXVpcmUoJy4vc2hvdWxkVXBkYXRlUmVh
Y3RDb21wb25lbnQnKTtcbnZhciB3YXJuaW5nID0gcmVxdWlyZSgnZmJqcy9saWIvd2FybmluZycp
O1xuXG52YXIgQ29tcG9zaXRlVHlwZXMgPSB7XG4gIEltcHVyZUNsYXNzOiAwLFxuICBQdXJlQ2xh
c3M6IDEsXG4gIFN0YXRlbGVzc0Z1bmN0aW9uYWw6IDJcbn07XG5cbmZ1bmN0aW9uIFN0YXRlbGVz
c0NvbXBvbmVudChDb21wb25lbnQpIHt9XG5TdGF0ZWxlc3NDb21wb25lbnQucHJvdG90eXBlLnJl
bmRlciA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIENvbXBvbmVudCA9IFJlYWN0SW5zdGFuY2VNYXAu
Z2V0KHRoaXMpLl9jdXJyZW50RWxlbWVudC50eXBlO1xuICB2YXIgZWxlbWVudCA9IENvbXBvbmVu
dCh0aGlzLnByb3BzLCB0aGlzLmNvbnRleHQsIHRoaXMudXBkYXRlcik7XG4gIHdhcm5JZkludmFs
aWRFbGVtZW50KENvbXBvbmVudCwgZWxlbWVudCk7XG4gIHJldHVybiBlbGVtZW50O1xufTtcblxu
ZnVuY3Rpb24gd2FybklmSW52YWxpZEVsZW1lbnQoQ29tcG9uZW50LCBlbGVtZW50KSB7XG4gIGlm
IChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgcHJvY2Vzcy5l
bnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZWxlbWVudCA9PT0gbnVsbCB8
fCBlbGVtZW50ID09PSBmYWxzZSB8fCBSZWFjdC5pc1ZhbGlkRWxlbWVudChlbGVtZW50KSwgJyVz
KC4uLik6IEEgdmFsaWQgUmVhY3QgZWxlbWVudCAob3IgbnVsbCkgbXVzdCBiZSByZXR1cm5lZC4g
WW91IG1heSBoYXZlICcgKyAncmV0dXJuZWQgdW5kZWZpbmVkLCBhbiBhcnJheSBvciBzb21lIG90
aGVyIGludmFsaWQgb2JqZWN0LicsIENvbXBvbmVudC5kaXNwbGF5TmFtZSB8fCBDb21wb25lbnQu
bmFtZSB8fCAnQ29tcG9uZW50JykgOiB2b2lkIDA7XG4gICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYg
IT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoIUNvbXBvbmVudC5jaGlsZENvbnRleHRUeXBlcywg
JyVzKC4uLik6IGNoaWxkQ29udGV4dFR5cGVzIGNhbm5vdCBiZSBkZWZpbmVkIG9uIGEgZnVuY3Rp
b25hbCBjb21wb25lbnQuJywgQ29tcG9uZW50LmRpc3BsYXlOYW1lIHx8IENvbXBvbmVudC5uYW1l
IHx8ICdDb21wb25lbnQnKSA6IHZvaWQgMDtcbiAgfVxufVxuXG5mdW5jdGlvbiBzaG91bGRDb25z
dHJ1Y3QoQ29tcG9uZW50KSB7XG4gIHJldHVybiAhIShDb21wb25lbnQucHJvdG90eXBlICYmIENv
bXBvbmVudC5wcm90b3R5cGUuaXNSZWFjdENvbXBvbmVudCk7XG59XG5cbmZ1bmN0aW9uIGlzUHVy
ZUNvbXBvbmVudChDb21wb25lbnQpIHtcbiAgcmV0dXJuICEhKENvbXBvbmVudC5wcm90b3R5cGUg
JiYgQ29tcG9uZW50LnByb3RvdHlwZS5pc1B1cmVSZWFjdENvbXBvbmVudCk7XG59XG5cbi8vIFNl
cGFyYXRlZCBpbnRvIGEgZnVuY3Rpb24gdG8gY29udGFpbiBkZW9wdGltaXphdGlvbnMgY2F1c2Vk
IGJ5IHRyeS9maW5hbGx5LlxuZnVuY3Rpb24gbWVhc3VyZUxpZmVDeWNsZVBlcmYoZm4sIGRlYnVn
SUQsIHRpbWVyVHlwZSkge1xuICBpZiAoZGVidWdJRCA9PT0gMCkge1xuICAgIC8vIFRvcC1sZXZl
bCB3cmFwcGVycyAoc2VlIFJlYWN0TW91bnQpIGFuZCBlbXB0eSBjb21wb25lbnRzIChzZWVcbiAg
ICAvLyBSZWFjdERPTUVtcHR5Q29tcG9uZW50KSBhcmUgaW52aXNpYmxlIHRvIGhvb2tzIGFuZCBk
ZXZ0b29scy5cbiAgICAvLyBCb3RoIGFyZSBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIHRoYXQgc2hv
dWxkIGdvIGF3YXkgaW4gdGhlIGZ1dHVyZS5cbiAgICByZXR1cm4gZm4oKTtcbiAgfVxuXG4gIFJl
YWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vbkJlZ2luTGlmZUN5Y2xlVGltZXIoZGVidWdJ
RCwgdGltZXJUeXBlKTtcbiAgdHJ5IHtcbiAgICByZXR1cm4gZm4oKTtcbiAgfSBmaW5hbGx5IHtc
biAgICBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25FbmRMaWZlQ3ljbGVUaW1lcihk
ZWJ1Z0lELCB0aW1lclR5cGUpO1xuICB9XG59XG5cbi8qKlxuICogLS0tLS0tLS0tLS0tLS0tLS0t
IFRoZSBMaWZlLUN5Y2xlIG9mIGEgQ29tcG9zaXRlIENvbXBvbmVudCAtLS0tLS0tLS0tLS0tLS0t
LS1cbiAqXG4gKiAtIGNvbnN0cnVjdG9yOiBJbml0aWFsaXphdGlvbiBvZiBzdGF0ZS4gVGhlIGlu
c3RhbmNlIGlzIG5vdyByZXRhaW5lZC5cbiAqICAgLSBjb21wb25lbnRXaWxsTW91bnRcbiAqICAg
LSByZW5kZXJcbiAqICAgLSBbY2hpbGRyZW4ncyBjb25zdHJ1Y3RvcnNdXG4gKiAgICAgLSBbY2hp
bGRyZW4ncyBjb21wb25lbnRXaWxsTW91bnQgYW5kIHJlbmRlcl1cbiAqICAgICAtIFtjaGlsZHJl
bidzIGNvbXBvbmVudERpZE1vdW50XVxuICogICAgIC0gY29tcG9uZW50RGlkTW91bnRcbiAqXG4g
KiAgICAgICBVcGRhdGUgUGhhc2VzOlxuICogICAgICAgLSBjb21wb25lbnRXaWxsUmVjZWl2ZVBy
b3BzIChvbmx5IGNhbGxlZCBpZiBwYXJlbnQgdXBkYXRlZClcbiAqICAgICAgIC0gc2hvdWxkQ29t
cG9uZW50VXBkYXRlXG4gKiAgICAgICAgIC0gY29tcG9uZW50V2lsbFVwZGF0ZVxuICogICAgICAg
ICAgIC0gcmVuZGVyXG4gKiAgICAgICAgICAgLSBbY2hpbGRyZW4ncyBjb25zdHJ1Y3RvcnMgb3Ig
cmVjZWl2ZSBwcm9wcyBwaGFzZXNdXG4gKiAgICAgICAgIC0gY29tcG9uZW50RGlkVXBkYXRlXG4g
KlxuICogICAgIC0gY29tcG9uZW50V2lsbFVubW91bnRcbiAqICAgICAtIFtjaGlsZHJlbidzIGNv
bXBvbmVudFdpbGxVbm1vdW50XVxuICogICAtIFtjaGlsZHJlbiBkZXN0cm95ZWRdXG4gKiAtIChk
ZXN0cm95ZWQpOiBUaGUgaW5zdGFuY2UgaXMgbm93IGJsYW5rLCByZWxlYXNlZCBieSBSZWFjdCBh
bmQgcmVhZHkgZm9yIEdDLlxuICpcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKi9cblxuLyoq
XG4gKiBBbiBpbmNyZW1lbnRpbmcgSUQgYXNzaWduZWQgdG8gZWFjaCBjb21wb25lbnQgd2hlbiBp
dCBpcyBtb3VudGVkLiBUaGlzIGlzXG4gKiB1c2VkIHRvIGVuZm9yY2UgdGhlIG9yZGVyIGluIHdo
aWNoIGBSZWFjdFVwZGF0ZXNgIHVwZGF0ZXMgZGlydHkgY29tcG9uZW50cy5cbiAqXG4gKiBAcHJp
dmF0ZVxuICovXG52YXIgbmV4dE1vdW50SUQgPSAxO1xuXG4vKipcbiAqIEBsZW5kcyB7UmVhY3RD
b21wb3NpdGVDb21wb25lbnQucHJvdG90eXBlfVxuICovXG52YXIgUmVhY3RDb21wb3NpdGVDb21w
b25lbnQgPSB7XG4gIC8qKlxuICAgKiBCYXNlIGNvbnN0cnVjdG9yIGZvciBhbGwgY29tcG9zaXRl
IGNvbXBvbmVudC5cbiAgICpcbiAgICogQHBhcmFtIHtSZWFjdEVsZW1lbnR9IGVsZW1lbnRcbiAg
ICogQGZpbmFsXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgY29uc3RydWN0OiBmdW5jdGlvbiAo
ZWxlbWVudCkge1xuICAgIHRoaXMuX2N1cnJlbnRFbGVtZW50ID0gZWxlbWVudDtcbiAgICB0aGlz
Ll9yb290Tm9kZUlEID0gMDtcbiAgICB0aGlzLl9jb21wb3NpdGVUeXBlID0gbnVsbDtcbiAgICB0
aGlzLl9pbnN0YW5jZSA9IG51bGw7XG4gICAgdGhpcy5faG9zdFBhcmVudCA9IG51bGw7XG4gICAg
dGhpcy5faG9zdENvbnRhaW5lckluZm8gPSBudWxsO1xuXG4gICAgLy8gU2VlIFJlYWN0VXBkYXRl
UXVldWVcbiAgICB0aGlzLl91cGRhdGVCYXRjaE51bWJlciA9IG51bGw7XG4gICAgdGhpcy5fcGVu
ZGluZ0VsZW1lbnQgPSBudWxsO1xuICAgIHRoaXMuX3BlbmRpbmdTdGF0ZVF1ZXVlID0gbnVsbDtc
biAgICB0aGlzLl9wZW5kaW5nUmVwbGFjZVN0YXRlID0gZmFsc2U7XG4gICAgdGhpcy5fcGVuZGlu
Z0ZvcmNlVXBkYXRlID0gZmFsc2U7XG5cbiAgICB0aGlzLl9yZW5kZXJlZE5vZGVUeXBlID0gbnVs
bDtcbiAgICB0aGlzLl9yZW5kZXJlZENvbXBvbmVudCA9IG51bGw7XG4gICAgdGhpcy5fY29udGV4
dCA9IG51bGw7XG4gICAgdGhpcy5fbW91bnRPcmRlciA9IDA7XG4gICAgdGhpcy5fdG9wTGV2ZWxX
cmFwcGVyID0gbnVsbDtcblxuICAgIC8vIFNlZSBSZWFjdFVwZGF0ZXMgYW5kIFJlYWN0VXBkYXRl
UXVldWUuXG4gICAgdGhpcy5fcGVuZGluZ0NhbGxiYWNrcyA9IG51bGw7XG5cbiAgICAvLyBDb21w
b25lbnRXaWxsVW5tb3VudCBzaGFsbCBvbmx5IGJlIGNhbGxlZCBvbmNlXG4gICAgdGhpcy5fY2Fs
bGVkQ29tcG9uZW50V2lsbFVubW91bnQgPSBmYWxzZTtcblxuICAgIGlmIChwcm9jZXNzLmVudi5O
T0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICB0aGlzLl93YXJuZWRBYm91dFJlZnNJ
blJlbmRlciA9IGZhbHNlO1xuICAgIH1cbiAgfSxcblxuICAvKipcbiAgICogSW5pdGlhbGl6ZXMg
dGhlIGNvbXBvbmVudCwgcmVuZGVycyBtYXJrdXAsIGFuZCByZWdpc3RlcnMgZXZlbnQgbGlzdGVu
ZXJzLlxuICAgKlxuICAgKiBAcGFyYW0ge1JlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb258UmVhY3RT
ZXJ2ZXJSZW5kZXJpbmdUcmFuc2FjdGlvbn0gdHJhbnNhY3Rpb25cbiAgICogQHBhcmFtIHs/b2Jq
ZWN0fSBob3N0UGFyZW50XG4gICAqIEBwYXJhbSB7P29iamVjdH0gaG9zdENvbnRhaW5lckluZm9c
biAgICogQHBhcmFtIHs/b2JqZWN0fSBjb250ZXh0XG4gICAqIEByZXR1cm4gez9zdHJpbmd9IFJl
bmRlcmVkIG1hcmt1cCB0byBiZSBpbnNlcnRlZCBpbnRvIHRoZSBET00uXG4gICAqIEBmaW5hbFxu
ICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIG1vdW50Q29tcG9uZW50OiBmdW5jdGlvbiAodHJhbnNh
Y3Rpb24sIGhvc3RQYXJlbnQsIGhvc3RDb250YWluZXJJbmZvLCBjb250ZXh0KSB7XG4gICAgdmFy
IF90aGlzID0gdGhpcztcblxuICAgIHRoaXMuX2NvbnRleHQgPSBjb250ZXh0O1xuICAgIHRoaXMu
X21vdW50T3JkZXIgPSBuZXh0TW91bnRJRCsrO1xuICAgIHRoaXMuX2hvc3RQYXJlbnQgPSBob3N0
UGFyZW50O1xuICAgIHRoaXMuX2hvc3RDb250YWluZXJJbmZvID0gaG9zdENvbnRhaW5lckluZm87
XG5cbiAgICB2YXIgcHVibGljUHJvcHMgPSB0aGlzLl9jdXJyZW50RWxlbWVudC5wcm9wcztcbiAg
ICB2YXIgcHVibGljQ29udGV4dCA9IHRoaXMuX3Byb2Nlc3NDb250ZXh0KGNvbnRleHQpO1xuXG4g
ICAgdmFyIENvbXBvbmVudCA9IHRoaXMuX2N1cnJlbnRFbGVtZW50LnR5cGU7XG5cbiAgICB2YXIg
dXBkYXRlUXVldWUgPSB0cmFuc2FjdGlvbi5nZXRVcGRhdGVRdWV1ZSgpO1xuXG4gICAgLy8gSW5p
dGlhbGl6ZSB0aGUgcHVibGljIGNsYXNzXG4gICAgdmFyIGRvQ29uc3RydWN0ID0gc2hvdWxkQ29u
c3RydWN0KENvbXBvbmVudCk7XG4gICAgdmFyIGluc3QgPSB0aGlzLl9jb25zdHJ1Y3RDb21wb25l
bnQoZG9Db25zdHJ1Y3QsIHB1YmxpY1Byb3BzLCBwdWJsaWNDb250ZXh0LCB1cGRhdGVRdWV1ZSk7
XG4gICAgdmFyIHJlbmRlcmVkRWxlbWVudDtcblxuICAgIC8vIFN1cHBvcnQgZnVuY3Rpb25hbCBj
b21wb25lbnRzXG4gICAgaWYgKCFkb0NvbnN0cnVjdCAmJiAoaW5zdCA9PSBudWxsIHx8IGluc3Qu
cmVuZGVyID09IG51bGwpKSB7XG4gICAgICByZW5kZXJlZEVsZW1lbnQgPSBpbnN0O1xuICAgICAg
d2FybklmSW52YWxpZEVsZW1lbnQoQ29tcG9uZW50LCByZW5kZXJlZEVsZW1lbnQpO1xuICAgICAg
IShpbnN0ID09PSBudWxsIHx8IGluc3QgPT09IGZhbHNlIHx8IFJlYWN0LmlzVmFsaWRFbGVtZW50
KGluc3QpKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlh
bnQoZmFsc2UsICclcyguLi4pOiBBIHZhbGlkIFJlYWN0IGVsZW1lbnQgKG9yIG51bGwpIG11c3Qg
YmUgcmV0dXJuZWQuIFlvdSBtYXkgaGF2ZSByZXR1cm5lZCB1bmRlZmluZWQsIGFuIGFycmF5IG9y
IHNvbWUgb3RoZXIgaW52YWxpZCBvYmplY3QuJywgQ29tcG9uZW50LmRpc3BsYXlOYW1lIHx8IENv
bXBvbmVudC5uYW1lIHx8ICdDb21wb25lbnQnKSA6IF9wcm9kSW52YXJpYW50KCcxMDUnLCBDb21w
b25lbnQuZGlzcGxheU5hbWUgfHwgQ29tcG9uZW50Lm5hbWUgfHwgJ0NvbXBvbmVudCcpIDogdm9p
ZCAwO1xuICAgICAgaW5zdCA9IG5ldyBTdGF0ZWxlc3NDb21wb25lbnQoQ29tcG9uZW50KTtcbiAg
ICAgIHRoaXMuX2NvbXBvc2l0ZVR5cGUgPSBDb21wb3NpdGVUeXBlcy5TdGF0ZWxlc3NGdW5jdGlv
bmFsO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoaXNQdXJlQ29tcG9uZW50KENvbXBvbmVudCkp
IHtcbiAgICAgICAgdGhpcy5fY29tcG9zaXRlVHlwZSA9IENvbXBvc2l0ZVR5cGVzLlB1cmVDbGFz
cztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX2NvbXBvc2l0ZVR5cGUgPSBDb21wb3Np
dGVUeXBlcy5JbXB1cmVDbGFzcztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAocHJvY2Vzcy5l
bnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgLy8gVGhpcyB3aWxsIHRocm93
IGxhdGVyIGluIF9yZW5kZXJWYWxpZGF0ZWRDb21wb25lbnQsIGJ1dCBhZGQgYW4gZWFybHlcbiAg
ICAgIC8vIHdhcm5pbmcgbm93IHRvIGhlbHAgZGVidWdnaW5nXG4gICAgICBpZiAoaW5zdC5yZW5k
ZXIgPT0gbnVsbCkge1xuICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rp
b24nID8gd2FybmluZyhmYWxzZSwgJyVzKC4uLik6IE5vIGByZW5kZXJgIG1ldGhvZCBmb3VuZCBv
biB0aGUgcmV0dXJuZWQgY29tcG9uZW50ICcgKyAnaW5zdGFuY2U6IHlvdSBtYXkgaGF2ZSBmb3Jn
b3R0ZW4gdG8gZGVmaW5lIGByZW5kZXJgLicsIENvbXBvbmVudC5kaXNwbGF5TmFtZSB8fCBDb21w
b25lbnQubmFtZSB8fCAnQ29tcG9uZW50JykgOiB2b2lkIDA7XG4gICAgICB9XG5cbiAgICAgIHZh
ciBwcm9wc011dGF0ZWQgPSBpbnN0LnByb3BzICE9PSBwdWJsaWNQcm9wcztcbiAgICAgIHZhciBj
b21wb25lbnROYW1lID0gQ29tcG9uZW50LmRpc3BsYXlOYW1lIHx8IENvbXBvbmVudC5uYW1lIHx8
ICdDb21wb25lbnQnO1xuXG4gICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rp
b24nID8gd2FybmluZyhpbnN0LnByb3BzID09PSB1bmRlZmluZWQgfHwgIXByb3BzTXV0YXRlZCwg
JyVzKC4uLik6IFdoZW4gY2FsbGluZyBzdXBlcigpIGluIGAlc2AsIG1ha2Ugc3VyZSB0byBwYXNz
ICcgKyBcInVwIHRoZSBzYW1lIHByb3BzIHRoYXQgeW91ciBjb21wb25lbnQncyBjb25zdHJ1Y3Rv
ciB3YXMgcGFzc2VkLlwiLCBjb21wb25lbnROYW1lLCBjb21wb25lbnROYW1lKSA6IHZvaWQgMDtc
biAgICB9XG5cbiAgICAvLyBUaGVzZSBzaG91bGQgYmUgc2V0IHVwIGluIHRoZSBjb25zdHJ1Y3Rv
ciwgYnV0IGFzIGEgY29udmVuaWVuY2UgZm9yXG4gICAgLy8gc2ltcGxlciBjbGFzcyBhYnN0cmFj
dGlvbnMsIHdlIHNldCB0aGVtIHVwIGFmdGVyIHRoZSBmYWN0LlxuICAgIGluc3QucHJvcHMgPSBw
dWJsaWNQcm9wcztcbiAgICBpbnN0LmNvbnRleHQgPSBwdWJsaWNDb250ZXh0O1xuICAgIGluc3Qu
cmVmcyA9IGVtcHR5T2JqZWN0O1xuICAgIGluc3QudXBkYXRlciA9IHVwZGF0ZVF1ZXVlO1xuXG4g
ICAgdGhpcy5faW5zdGFuY2UgPSBpbnN0O1xuXG4gICAgLy8gU3RvcmUgYSByZWZlcmVuY2UgZnJv
bSB0aGUgaW5zdGFuY2UgYmFjayB0byB0aGUgaW50ZXJuYWwgcmVwcmVzZW50YXRpb25cbiAgICBS
ZWFjdEluc3RhbmNlTWFwLnNldChpbnN0LCB0aGlzKTtcblxuICAgIGlmIChwcm9jZXNzLmVudi5O
T0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAvLyBTaW5jZSBwbGFpbiBKUyBjbGFz
c2VzIGFyZSBkZWZpbmVkIHdpdGhvdXQgYW55IHNwZWNpYWwgaW5pdGlhbGl6YXRpb25cbiAgICAg
IC8vIGxvZ2ljLCB3ZSBjYW4gbm90IGNhdGNoIGNvbW1vbiBlcnJvcnMgZWFybHkuIFRoZXJlZm9y
ZSwgd2UgaGF2ZSB0b1xuICAgICAgLy8gY2F0Y2ggdGhlbSBoZXJlLCBhdCBpbml0aWFsaXphdGlv
biB0aW1lLCBpbnN0ZWFkLlxuICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0
aW9uJyA/IHdhcm5pbmcoIWluc3QuZ2V0SW5pdGlhbFN0YXRlIHx8IGluc3QuZ2V0SW5pdGlhbFN0
YXRlLmlzUmVhY3RDbGFzc0FwcHJvdmVkIHx8IGluc3Quc3RhdGUsICdnZXRJbml0aWFsU3RhdGUg
d2FzIGRlZmluZWQgb24gJXMsIGEgcGxhaW4gSmF2YVNjcmlwdCBjbGFzcy4gJyArICdUaGlzIGlz
IG9ubHkgc3VwcG9ydGVkIGZvciBjbGFzc2VzIGNyZWF0ZWQgdXNpbmcgUmVhY3QuY3JlYXRlQ2xh
c3MuICcgKyAnRGlkIHlvdSBtZWFuIHRvIGRlZmluZSBhIHN0YXRlIHByb3BlcnR5IGluc3RlYWQ/
JywgdGhpcy5nZXROYW1lKCkgfHwgJ2EgY29tcG9uZW50JykgOiB2b2lkIDA7XG4gICAgICBwcm9j
ZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyghaW5zdC5nZXREZWZh
dWx0UHJvcHMgfHwgaW5zdC5nZXREZWZhdWx0UHJvcHMuaXNSZWFjdENsYXNzQXBwcm92ZWQsICdn
ZXREZWZhdWx0UHJvcHMgd2FzIGRlZmluZWQgb24gJXMsIGEgcGxhaW4gSmF2YVNjcmlwdCBjbGFz
cy4gJyArICdUaGlzIGlzIG9ubHkgc3VwcG9ydGVkIGZvciBjbGFzc2VzIGNyZWF0ZWQgdXNpbmcg
UmVhY3QuY3JlYXRlQ2xhc3MuICcgKyAnVXNlIGEgc3RhdGljIHByb3BlcnR5IHRvIGRlZmluZSBk
ZWZhdWx0UHJvcHMgaW5zdGVhZC4nLCB0aGlzLmdldE5hbWUoKSB8fCAnYSBjb21wb25lbnQnKSA6
IHZvaWQgMDtcbiAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3
YXJuaW5nKCFpbnN0LnByb3BUeXBlcywgJ3Byb3BUeXBlcyB3YXMgZGVmaW5lZCBhcyBhbiBpbnN0
YW5jZSBwcm9wZXJ0eSBvbiAlcy4gVXNlIGEgc3RhdGljICcgKyAncHJvcGVydHkgdG8gZGVmaW5l
IHByb3BUeXBlcyBpbnN0ZWFkLicsIHRoaXMuZ2V0TmFtZSgpIHx8ICdhIGNvbXBvbmVudCcpIDog
dm9pZCAwO1xuICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdh
cm5pbmcoIWluc3QuY29udGV4dFR5cGVzLCAnY29udGV4dFR5cGVzIHdhcyBkZWZpbmVkIGFzIGFu
IGluc3RhbmNlIHByb3BlcnR5IG9uICVzLiBVc2UgYSAnICsgJ3N0YXRpYyBwcm9wZXJ0eSB0byBk
ZWZpbmUgY29udGV4dFR5cGVzIGluc3RlYWQuJywgdGhpcy5nZXROYW1lKCkgfHwgJ2EgY29tcG9u
ZW50JykgOiB2b2lkIDA7XG4gICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rp
b24nID8gd2FybmluZyh0eXBlb2YgaW5zdC5jb21wb25lbnRTaG91bGRVcGRhdGUgIT09ICdmdW5j
dGlvbicsICclcyBoYXMgYSBtZXRob2QgY2FsbGVkICcgKyAnY29tcG9uZW50U2hvdWxkVXBkYXRl
KCkuIERpZCB5b3UgbWVhbiBzaG91bGRDb21wb25lbnRVcGRhdGUoKT8gJyArICdUaGUgbmFtZSBp
cyBwaHJhc2VkIGFzIGEgcXVlc3Rpb24gYmVjYXVzZSB0aGUgZnVuY3Rpb24gaXMgJyArICdleHBl
Y3RlZCB0byByZXR1cm4gYSB2YWx1ZS4nLCB0aGlzLmdldE5hbWUoKSB8fCAnQSBjb21wb25lbnQn
KSA6IHZvaWQgMDtcbiAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicg
PyB3YXJuaW5nKHR5cGVvZiBpbnN0LmNvbXBvbmVudERpZFVubW91bnQgIT09ICdmdW5jdGlvbics
ICclcyBoYXMgYSBtZXRob2QgY2FsbGVkICcgKyAnY29tcG9uZW50RGlkVW5tb3VudCgpLiBCdXQg
dGhlcmUgaXMgbm8gc3VjaCBsaWZlY3ljbGUgbWV0aG9kLiAnICsgJ0RpZCB5b3UgbWVhbiBjb21w
b25lbnRXaWxsVW5tb3VudCgpPycsIHRoaXMuZ2V0TmFtZSgpIHx8ICdBIGNvbXBvbmVudCcpIDog
dm9pZCAwO1xuICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdh
cm5pbmcodHlwZW9mIGluc3QuY29tcG9uZW50V2lsbFJlY2lldmVQcm9wcyAhPT0gJ2Z1bmN0aW9u
JywgJyVzIGhhcyBhIG1ldGhvZCBjYWxsZWQgJyArICdjb21wb25lbnRXaWxsUmVjaWV2ZVByb3Bz
KCkuIERpZCB5b3UgbWVhbiBjb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzKCk/JywgdGhpcy5nZXRO
YW1lKCkgfHwgJ0EgY29tcG9uZW50JykgOiB2b2lkIDA7XG4gICAgfVxuXG4gICAgdmFyIGluaXRp
YWxTdGF0ZSA9IGluc3Quc3RhdGU7XG4gICAgaWYgKGluaXRpYWxTdGF0ZSA9PT0gdW5kZWZpbmVk
KSB7XG4gICAgICBpbnN0LnN0YXRlID0gaW5pdGlhbFN0YXRlID0gbnVsbDtcbiAgICB9XG4gICAg
ISh0eXBlb2YgaW5pdGlhbFN0YXRlID09PSAnb2JqZWN0JyAmJiAhQXJyYXkuaXNBcnJheShpbml0
aWFsU3RhdGUpKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZh
cmlhbnQoZmFsc2UsICclcy5zdGF0ZTogbXVzdCBiZSBzZXQgdG8gYW4gb2JqZWN0IG9yIG51bGwn
LCB0aGlzLmdldE5hbWUoKSB8fCAnUmVhY3RDb21wb3NpdGVDb21wb25lbnQnKSA6IF9wcm9kSW52
YXJpYW50KCcxMDYnLCB0aGlzLmdldE5hbWUoKSB8fCAnUmVhY3RDb21wb3NpdGVDb21wb25lbnQn
KSA6IHZvaWQgMDtcblxuICAgIHRoaXMuX3BlbmRpbmdTdGF0ZVF1ZXVlID0gbnVsbDtcbiAgICB0
aGlzLl9wZW5kaW5nUmVwbGFjZVN0YXRlID0gZmFsc2U7XG4gICAgdGhpcy5fcGVuZGluZ0ZvcmNl
VXBkYXRlID0gZmFsc2U7XG5cbiAgICB2YXIgbWFya3VwO1xuICAgIGlmIChpbnN0LnVuc3RhYmxl
X2hhbmRsZUVycm9yKSB7XG4gICAgICBtYXJrdXAgPSB0aGlzLnBlcmZvcm1Jbml0aWFsTW91bnRX
aXRoRXJyb3JIYW5kbGluZyhyZW5kZXJlZEVsZW1lbnQsIGhvc3RQYXJlbnQsIGhvc3RDb250YWlu
ZXJJbmZvLCB0cmFuc2FjdGlvbiwgY29udGV4dCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG1hcmt1
cCA9IHRoaXMucGVyZm9ybUluaXRpYWxNb3VudChyZW5kZXJlZEVsZW1lbnQsIGhvc3RQYXJlbnQs
IGhvc3RDb250YWluZXJJbmZvLCB0cmFuc2FjdGlvbiwgY29udGV4dCk7XG4gICAgfVxuXG4gICAg
aWYgKGluc3QuY29tcG9uZW50RGlkTW91bnQpIHtcbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RF
X0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgIHRyYW5zYWN0aW9uLmdldFJlYWN0TW91
bnRSZWFkeSgpLmVucXVldWUoZnVuY3Rpb24gKCkge1xuICAgICAgICAgIG1lYXN1cmVMaWZlQ3lj
bGVQZXJmKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBpbnN0LmNvbXBvbmVudERp
ZE1vdW50KCk7XG4gICAgICAgICAgfSwgX3RoaXMuX2RlYnVnSUQsICdjb21wb25lbnREaWRNb3Vu
dCcpO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRyYW5zYWN0aW9uLmdl
dFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUoaW5zdC5jb21wb25lbnREaWRNb3VudCwgaW5zdCk7
XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG1hcmt1cDtcbiAgfSxcblxuICBfY29uc3Ry
dWN0Q29tcG9uZW50OiBmdW5jdGlvbiAoZG9Db25zdHJ1Y3QsIHB1YmxpY1Byb3BzLCBwdWJsaWND
b250ZXh0LCB1cGRhdGVRdWV1ZSkge1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0g
J3Byb2R1Y3Rpb24nKSB7XG4gICAgICBSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50ID0gdGhpcztc
biAgICAgIHRyeSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jb25zdHJ1Y3RDb21wb25lbnRXaXRo
b3V0T3duZXIoZG9Db25zdHJ1Y3QsIHB1YmxpY1Byb3BzLCBwdWJsaWNDb250ZXh0LCB1cGRhdGVR
dWV1ZSk7XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICBSZWFjdEN1cnJlbnRPd25lci5jdXJy
ZW50ID0gbnVsbDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMuX2Nv
bnN0cnVjdENvbXBvbmVudFdpdGhvdXRPd25lcihkb0NvbnN0cnVjdCwgcHVibGljUHJvcHMsIHB1
YmxpY0NvbnRleHQsIHVwZGF0ZVF1ZXVlKTtcbiAgICB9XG4gIH0sXG5cbiAgX2NvbnN0cnVjdENv
bXBvbmVudFdpdGhvdXRPd25lcjogZnVuY3Rpb24gKGRvQ29uc3RydWN0LCBwdWJsaWNQcm9wcywg
cHVibGljQ29udGV4dCwgdXBkYXRlUXVldWUpIHtcbiAgICB2YXIgQ29tcG9uZW50ID0gdGhpcy5f
Y3VycmVudEVsZW1lbnQudHlwZTtcblxuICAgIGlmIChkb0NvbnN0cnVjdCkge1xuICAgICAgaWYg
KHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgcmV0dXJu
IG1lYXN1cmVMaWZlQ3ljbGVQZXJmKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICByZXR1cm4gbmV3
IENvbXBvbmVudChwdWJsaWNQcm9wcywgcHVibGljQ29udGV4dCwgdXBkYXRlUXVldWUpO1xuICAg
ICAgICB9LCB0aGlzLl9kZWJ1Z0lELCAnY3RvcicpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAg
cmV0dXJuIG5ldyBDb21wb25lbnQocHVibGljUHJvcHMsIHB1YmxpY0NvbnRleHQsIHVwZGF0ZVF1
ZXVlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBUaGlzIGNhbiBzdGlsbCBiZSBhbiBpbnN0
YW5jZSBpbiBjYXNlIG9mIGZhY3RvcnkgY29tcG9uZW50c1xuICAgIC8vIGJ1dCB3ZSdsbCBjb3Vu
dCB0aGlzIGFzIHRpbWUgc3BlbnQgcmVuZGVyaW5nIGFzIHRoZSBtb3JlIGNvbW1vbiBjYXNlLlxu
ICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICBy
ZXR1cm4gbWVhc3VyZUxpZmVDeWNsZVBlcmYoZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4g
Q29tcG9uZW50KHB1YmxpY1Byb3BzLCBwdWJsaWNDb250ZXh0LCB1cGRhdGVRdWV1ZSk7XG4gICAg
ICB9LCB0aGlzLl9kZWJ1Z0lELCAncmVuZGVyJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVy
biBDb21wb25lbnQocHVibGljUHJvcHMsIHB1YmxpY0NvbnRleHQsIHVwZGF0ZVF1ZXVlKTtcbiAg
ICB9XG4gIH0sXG5cbiAgcGVyZm9ybUluaXRpYWxNb3VudFdpdGhFcnJvckhhbmRsaW5nOiBmdW5j
dGlvbiAocmVuZGVyZWRFbGVtZW50LCBob3N0UGFyZW50LCBob3N0Q29udGFpbmVySW5mbywgdHJh
bnNhY3Rpb24sIGNvbnRleHQpIHtcbiAgICB2YXIgbWFya3VwO1xuICAgIHZhciBjaGVja3BvaW50
ID0gdHJhbnNhY3Rpb24uY2hlY2twb2ludCgpO1xuICAgIHRyeSB7XG4gICAgICBtYXJrdXAgPSB0
aGlzLnBlcmZvcm1Jbml0aWFsTW91bnQocmVuZGVyZWRFbGVtZW50LCBob3N0UGFyZW50LCBob3N0
Q29udGFpbmVySW5mbywgdHJhbnNhY3Rpb24sIGNvbnRleHQpO1xuICAgIH0gY2F0Y2ggKGUpIHtc
biAgICAgIC8vIFJvbGwgYmFjayB0byBjaGVja3BvaW50LCBoYW5kbGUgZXJyb3IgKHdoaWNoIG1h
eSBhZGQgaXRlbXMgdG8gdGhlIHRyYW5zYWN0aW9uKSwgYW5kIHRha2UgYSBuZXcgY2hlY2twb2lu
dFxuICAgICAgdHJhbnNhY3Rpb24ucm9sbGJhY2soY2hlY2twb2ludCk7XG4gICAgICB0aGlzLl9p
bnN0YW5jZS51bnN0YWJsZV9oYW5kbGVFcnJvcihlKTtcbiAgICAgIGlmICh0aGlzLl9wZW5kaW5n
U3RhdGVRdWV1ZSkge1xuICAgICAgICB0aGlzLl9pbnN0YW5jZS5zdGF0ZSA9IHRoaXMuX3Byb2Nl
c3NQZW5kaW5nU3RhdGUodGhpcy5faW5zdGFuY2UucHJvcHMsIHRoaXMuX2luc3RhbmNlLmNvbnRl
eHQpO1xuICAgICAgfVxuICAgICAgY2hlY2twb2ludCA9IHRyYW5zYWN0aW9uLmNoZWNrcG9pbnQo
KTtcblxuICAgICAgdGhpcy5fcmVuZGVyZWRDb21wb25lbnQudW5tb3VudENvbXBvbmVudCh0cnVl
KTtcbiAgICAgIHRyYW5zYWN0aW9uLnJvbGxiYWNrKGNoZWNrcG9pbnQpO1xuXG4gICAgICAvLyBU
cnkgYWdhaW4gLSB3ZSd2ZSBpbmZvcm1lZCB0aGUgY29tcG9uZW50IGFib3V0IHRoZSBlcnJvciwg
c28gdGhleSBjYW4gcmVuZGVyIGFuIGVycm9yIG1lc3NhZ2UgdGhpcyB0aW1lLlxuICAgICAgLy8g
SWYgdGhpcyB0aHJvd3MgYWdhaW4sIHRoZSBlcnJvciB3aWxsIGJ1YmJsZSB1cCAoYW5kIGNhbiBi
ZSBjYXVnaHQgYnkgYSBoaWdoZXIgZXJyb3IgYm91bmRhcnkpLlxuICAgICAgbWFya3VwID0gdGhp
cy5wZXJmb3JtSW5pdGlhbE1vdW50KHJlbmRlcmVkRWxlbWVudCwgaG9zdFBhcmVudCwgaG9zdENv
bnRhaW5lckluZm8sIHRyYW5zYWN0aW9uLCBjb250ZXh0KTtcbiAgICB9XG4gICAgcmV0dXJuIG1h
cmt1cDtcbiAgfSxcblxuICBwZXJmb3JtSW5pdGlhbE1vdW50OiBmdW5jdGlvbiAocmVuZGVyZWRF
bGVtZW50LCBob3N0UGFyZW50LCBob3N0Q29udGFpbmVySW5mbywgdHJhbnNhY3Rpb24sIGNvbnRl
eHQpIHtcbiAgICB2YXIgaW5zdCA9IHRoaXMuX2luc3RhbmNlO1xuXG4gICAgdmFyIGRlYnVnSUQg
PSAwO1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4g
ICAgICBkZWJ1Z0lEID0gdGhpcy5fZGVidWdJRDtcbiAgICB9XG5cbiAgICBpZiAoaW5zdC5jb21w
b25lbnRXaWxsTW91bnQpIHtcbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3By
b2R1Y3Rpb24nKSB7XG4gICAgICAgIG1lYXN1cmVMaWZlQ3ljbGVQZXJmKGZ1bmN0aW9uICgpIHtc
biAgICAgICAgICByZXR1cm4gaW5zdC5jb21wb25lbnRXaWxsTW91bnQoKTtcbiAgICAgICAgfSwg
ZGVidWdJRCwgJ2NvbXBvbmVudFdpbGxNb3VudCcpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAg
aW5zdC5jb21wb25lbnRXaWxsTW91bnQoKTtcbiAgICAgIH1cbiAgICAgIC8vIFdoZW4gbW91bnRp
bmcsIGNhbGxzIHRvIGBzZXRTdGF0ZWAgYnkgYGNvbXBvbmVudFdpbGxNb3VudGAgd2lsbCBzZXRc
biAgICAgIC8vIGB0aGlzLl9wZW5kaW5nU3RhdGVRdWV1ZWAgd2l0aG91dCB0cmlnZ2VyaW5nIGEg
cmUtcmVuZGVyLlxuICAgICAgaWYgKHRoaXMuX3BlbmRpbmdTdGF0ZVF1ZXVlKSB7XG4gICAgICAg
IGluc3Quc3RhdGUgPSB0aGlzLl9wcm9jZXNzUGVuZGluZ1N0YXRlKGluc3QucHJvcHMsIGluc3Qu
Y29udGV4dCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gSWYgbm90IGEgc3RhdGVsZXNzIGNv
bXBvbmVudCwgd2Ugbm93IHJlbmRlclxuICAgIGlmIChyZW5kZXJlZEVsZW1lbnQgPT09IHVuZGVm
aW5lZCkge1xuICAgICAgcmVuZGVyZWRFbGVtZW50ID0gdGhpcy5fcmVuZGVyVmFsaWRhdGVkQ29t
cG9uZW50KCk7XG4gICAgfVxuXG4gICAgdmFyIG5vZGVUeXBlID0gUmVhY3ROb2RlVHlwZXMuZ2V0
VHlwZShyZW5kZXJlZEVsZW1lbnQpO1xuICAgIHRoaXMuX3JlbmRlcmVkTm9kZVR5cGUgPSBub2Rl
VHlwZTtcbiAgICB2YXIgY2hpbGQgPSB0aGlzLl9pbnN0YW50aWF0ZVJlYWN0Q29tcG9uZW50KHJl
bmRlcmVkRWxlbWVudCwgbm9kZVR5cGUgIT09IFJlYWN0Tm9kZVR5cGVzLkVNUFRZIC8qIHNob3Vs
ZEhhdmVEZWJ1Z0lEICovXG4gICAgKTtcbiAgICB0aGlzLl9yZW5kZXJlZENvbXBvbmVudCA9IGNo
aWxkO1xuXG4gICAgdmFyIG1hcmt1cCA9IFJlYWN0UmVjb25jaWxlci5tb3VudENvbXBvbmVudChj
aGlsZCwgdHJhbnNhY3Rpb24sIGhvc3RQYXJlbnQsIGhvc3RDb250YWluZXJJbmZvLCB0aGlzLl9w
cm9jZXNzQ2hpbGRDb250ZXh0KGNvbnRleHQpLCBkZWJ1Z0lEKTtcblxuICAgIGlmIChwcm9jZXNz
LmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICBpZiAoZGVidWdJRCAhPT0g
MCkge1xuICAgICAgICB2YXIgY2hpbGREZWJ1Z0lEcyA9IGNoaWxkLl9kZWJ1Z0lEICE9PSAwID8g
W2NoaWxkLl9kZWJ1Z0lEXSA6IFtdO1xuICAgICAgICBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1
Z1Rvb2wub25TZXRDaGlsZHJlbihkZWJ1Z0lELCBjaGlsZERlYnVnSURzKTtcbiAgICAgIH1cbiAg
ICB9XG5cbiAgICByZXR1cm4gbWFya3VwO1xuICB9LFxuXG4gIGdldEhvc3ROb2RlOiBmdW5jdGlv
biAoKSB7XG4gICAgcmV0dXJuIFJlYWN0UmVjb25jaWxlci5nZXRIb3N0Tm9kZSh0aGlzLl9yZW5k
ZXJlZENvbXBvbmVudCk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIFJlbGVhc2VzIGFueSByZXNvdXJj
ZXMgYWxsb2NhdGVkIGJ5IGBtb3VudENvbXBvbmVudGAuXG4gICAqXG4gICAqIEBmaW5hbFxuICAg
KiBAaW50ZXJuYWxcbiAgICovXG4gIHVubW91bnRDb21wb25lbnQ6IGZ1bmN0aW9uIChzYWZlbHkp
IHtcbiAgICBpZiAoIXRoaXMuX3JlbmRlcmVkQ29tcG9uZW50KSB7XG4gICAgICByZXR1cm47XG4g
ICAgfVxuXG4gICAgdmFyIGluc3QgPSB0aGlzLl9pbnN0YW5jZTtcblxuICAgIGlmIChpbnN0LmNv
bXBvbmVudFdpbGxVbm1vdW50ICYmICFpbnN0Ll9jYWxsZWRDb21wb25lbnRXaWxsVW5tb3VudCkg
e1xuICAgICAgaW5zdC5fY2FsbGVkQ29tcG9uZW50V2lsbFVubW91bnQgPSB0cnVlO1xuXG4gICAg
ICBpZiAoc2FmZWx5KSB7XG4gICAgICAgIHZhciBuYW1lID0gdGhpcy5nZXROYW1lKCkgKyAnLmNv
bXBvbmVudFdpbGxVbm1vdW50KCknO1xuICAgICAgICBSZWFjdEVycm9yVXRpbHMuaW52b2tlR3Vh
cmRlZENhbGxiYWNrKG5hbWUsIGluc3QuY29tcG9uZW50V2lsbFVubW91bnQuYmluZChpbnN0KSk7
XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdw
cm9kdWN0aW9uJykge1xuICAgICAgICAgIG1lYXN1cmVMaWZlQ3ljbGVQZXJmKGZ1bmN0aW9uICgp
IHtcbiAgICAgICAgICAgIHJldHVybiBpbnN0LmNvbXBvbmVudFdpbGxVbm1vdW50KCk7XG4gICAg
ICAgICAgfSwgdGhpcy5fZGVidWdJRCwgJ2NvbXBvbmVudFdpbGxVbm1vdW50Jyk7XG4gICAgICAg
IH0gZWxzZSB7XG4gICAgICAgICAgaW5zdC5jb21wb25lbnRXaWxsVW5tb3VudCgpO1xuICAgICAg
ICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX3JlbmRlcmVkQ29tcG9uZW50KSB7
XG4gICAgICBSZWFjdFJlY29uY2lsZXIudW5tb3VudENvbXBvbmVudCh0aGlzLl9yZW5kZXJlZENv
bXBvbmVudCwgc2FmZWx5KTtcbiAgICAgIHRoaXMuX3JlbmRlcmVkTm9kZVR5cGUgPSBudWxsO1xu
ICAgICAgdGhpcy5fcmVuZGVyZWRDb21wb25lbnQgPSBudWxsO1xuICAgICAgdGhpcy5faW5zdGFu
Y2UgPSBudWxsO1xuICAgIH1cblxuICAgIC8vIFJlc2V0IHBlbmRpbmcgZmllbGRzXG4gICAgLy8g
RXZlbiBpZiB0aGlzIGNvbXBvbmVudCBpcyBzY2hlZHVsZWQgZm9yIGFub3RoZXIgdXBkYXRlIGlu
IFJlYWN0VXBkYXRlcyxcbiAgICAvLyBpdCB3b3VsZCBzdGlsbCBiZSBpZ25vcmVkIGJlY2F1c2Ug
dGhlc2UgZmllbGRzIGFyZSByZXNldC5cbiAgICB0aGlzLl9wZW5kaW5nU3RhdGVRdWV1ZSA9IG51
bGw7XG4gICAgdGhpcy5fcGVuZGluZ1JlcGxhY2VTdGF0ZSA9IGZhbHNlO1xuICAgIHRoaXMuX3Bl
bmRpbmdGb3JjZVVwZGF0ZSA9IGZhbHNlO1xuICAgIHRoaXMuX3BlbmRpbmdDYWxsYmFja3MgPSBu
dWxsO1xuICAgIHRoaXMuX3BlbmRpbmdFbGVtZW50ID0gbnVsbDtcblxuICAgIC8vIFRoZXNlIGZp
ZWxkcyBkbyBub3QgcmVhbGx5IG5lZWQgdG8gYmUgcmVzZXQgc2luY2UgdGhpcyBvYmplY3QgaXMg
bm9cbiAgICAvLyBsb25nZXIgYWNjZXNzaWJsZS5cbiAgICB0aGlzLl9jb250ZXh0ID0gbnVsbDtc
biAgICB0aGlzLl9yb290Tm9kZUlEID0gMDtcbiAgICB0aGlzLl90b3BMZXZlbFdyYXBwZXIgPSBu
dWxsO1xuXG4gICAgLy8gRGVsZXRlIHRoZSByZWZlcmVuY2UgZnJvbSB0aGUgaW5zdGFuY2UgdG8g
dGhpcyBpbnRlcm5hbCByZXByZXNlbnRhdGlvblxuICAgIC8vIHdoaWNoIGFsbG93IHRoZSBpbnRl
cm5hbHMgdG8gYmUgcHJvcGVybHkgY2xlYW5lZCB1cCBldmVuIGlmIHRoZSB1c2VyXG4gICAgLy8g
bGVha3MgYSByZWZlcmVuY2UgdG8gdGhlIHB1YmxpYyBpbnN0YW5jZS5cbiAgICBSZWFjdEluc3Rh
bmNlTWFwLnJlbW92ZShpbnN0KTtcblxuICAgIC8vIFNvbWUgZXhpc3RpbmcgY29tcG9uZW50cyBy
ZWx5IG9uIGluc3QucHJvcHMgZXZlbiBhZnRlciB0aGV5J3ZlIGJlZW5cbiAgICAvLyBkZXN0cm95
ZWQgKGluIGV2ZW50IGhhbmRsZXJzKS5cbiAgICAvLyBUT0RPOiBpbnN0LnByb3BzID0gbnVsbDtc
biAgICAvLyBUT0RPOiBpbnN0LnN0YXRlID0gbnVsbDtcbiAgICAvLyBUT0RPOiBpbnN0LmNvbnRl
eHQgPSBudWxsO1xuICB9LFxuXG4gIC8qKlxuICAgKiBGaWx0ZXJzIHRoZSBjb250ZXh0IG9iamVj
dCB0byBvbmx5IGNvbnRhaW4ga2V5cyBzcGVjaWZpZWQgaW5cbiAgICogYGNvbnRleHRUeXBlc2Bc
biAgICpcbiAgICogQHBhcmFtIHtvYmplY3R9IGNvbnRleHRcbiAgICogQHJldHVybiB7P29iamVj
dH1cbiAgICogQHByaXZhdGVcbiAgICovXG4gIF9tYXNrQ29udGV4dDogZnVuY3Rpb24gKGNvbnRl
eHQpIHtcbiAgICB2YXIgQ29tcG9uZW50ID0gdGhpcy5fY3VycmVudEVsZW1lbnQudHlwZTtcbiAg
ICB2YXIgY29udGV4dFR5cGVzID0gQ29tcG9uZW50LmNvbnRleHRUeXBlcztcbiAgICBpZiAoIWNv
bnRleHRUeXBlcykge1xuICAgICAgcmV0dXJuIGVtcHR5T2JqZWN0O1xuICAgIH1cbiAgICB2YXIg
bWFza2VkQ29udGV4dCA9IHt9O1xuICAgIGZvciAodmFyIGNvbnRleHROYW1lIGluIGNvbnRleHRU
eXBlcykge1xuICAgICAgbWFza2VkQ29udGV4dFtjb250ZXh0TmFtZV0gPSBjb250ZXh0W2NvbnRl
eHROYW1lXTtcbiAgICB9XG4gICAgcmV0dXJuIG1hc2tlZENvbnRleHQ7XG4gIH0sXG5cbiAgLyoq
XG4gICAqIEZpbHRlcnMgdGhlIGNvbnRleHQgb2JqZWN0IHRvIG9ubHkgY29udGFpbiBrZXlzIHNw
ZWNpZmllZCBpblxuICAgKiBgY29udGV4dFR5cGVzYCwgYW5kIGFzc2VydHMgdGhhdCB0aGV5IGFy
ZSB2YWxpZC5cbiAgICpcbiAgICogQHBhcmFtIHtvYmplY3R9IGNvbnRleHRcbiAgICogQHJldHVy
biB7P29iamVjdH1cbiAgICogQHByaXZhdGVcbiAgICovXG4gIF9wcm9jZXNzQ29udGV4dDogZnVu
Y3Rpb24gKGNvbnRleHQpIHtcbiAgICB2YXIgbWFza2VkQ29udGV4dCA9IHRoaXMuX21hc2tDb250
ZXh0KGNvbnRleHQpO1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rp
b24nKSB7XG4gICAgICB2YXIgQ29tcG9uZW50ID0gdGhpcy5fY3VycmVudEVsZW1lbnQudHlwZTtc
biAgICAgIGlmIChDb21wb25lbnQuY29udGV4dFR5cGVzKSB7XG4gICAgICAgIHRoaXMuX2NoZWNr
Q29udGV4dFR5cGVzKENvbXBvbmVudC5jb250ZXh0VHlwZXMsIG1hc2tlZENvbnRleHQsICdjb250
ZXh0Jyk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBtYXNrZWRDb250ZXh0O1xuICB9LFxu
XG4gIC8qKlxuICAgKiBAcGFyYW0ge29iamVjdH0gY3VycmVudENvbnRleHRcbiAgICogQHJldHVy
biB7b2JqZWN0fVxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgX3Byb2Nlc3NDaGlsZENvbnRleHQ6
IGZ1bmN0aW9uIChjdXJyZW50Q29udGV4dCkge1xuICAgIHZhciBDb21wb25lbnQgPSB0aGlzLl9j
dXJyZW50RWxlbWVudC50eXBlO1xuICAgIHZhciBpbnN0ID0gdGhpcy5faW5zdGFuY2U7XG4gICAg
dmFyIGNoaWxkQ29udGV4dDtcblxuICAgIGlmIChpbnN0LmdldENoaWxkQ29udGV4dCkge1xuICAg
ICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAg
UmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9uQmVnaW5Qcm9jZXNzaW5nQ2hpbGRDb250
ZXh0KCk7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY2hpbGRDb250ZXh0ID0gaW5zdC5nZXRD
aGlsZENvbnRleHQoKTtcbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICBSZWFjdEluc3Ry
dW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25FbmRQcm9jZXNzaW5nQ2hpbGRDb250ZXh0KCk7XG4gICAg
ICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNoaWxkQ29udGV4dCA9IGluc3QuZ2V0Q2hp
bGRDb250ZXh0KCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGNoaWxkQ29udGV4dCkge1xu
ICAgICAgISh0eXBlb2YgQ29tcG9uZW50LmNoaWxkQ29udGV4dFR5cGVzID09PSAnb2JqZWN0Jykg
PyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNl
LCAnJXMuZ2V0Q2hpbGRDb250ZXh0KCk6IGNoaWxkQ29udGV4dFR5cGVzIG11c3QgYmUgZGVmaW5l
ZCBpbiBvcmRlciB0byB1c2UgZ2V0Q2hpbGRDb250ZXh0KCkuJywgdGhpcy5nZXROYW1lKCkgfHwg
J1JlYWN0Q29tcG9zaXRlQ29tcG9uZW50JykgOiBfcHJvZEludmFyaWFudCgnMTA3JywgdGhpcy5n
ZXROYW1lKCkgfHwgJ1JlYWN0Q29tcG9zaXRlQ29tcG9uZW50JykgOiB2b2lkIDA7XG4gICAgICBp
ZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICB0aGlz
Ll9jaGVja0NvbnRleHRUeXBlcyhDb21wb25lbnQuY2hpbGRDb250ZXh0VHlwZXMsIGNoaWxkQ29u
dGV4dCwgJ2NoaWxkIGNvbnRleHQnKTtcbiAgICAgIH1cbiAgICAgIGZvciAodmFyIG5hbWUgaW4g
Y2hpbGRDb250ZXh0KSB7XG4gICAgICAgICEobmFtZSBpbiBDb21wb25lbnQuY2hpbGRDb250ZXh0
VHlwZXMpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFu
dChmYWxzZSwgJyVzLmdldENoaWxkQ29udGV4dCgpOiBrZXkgXCIlc1wiIGlzIG5vdCBkZWZpbmVk
IGluIGNoaWxkQ29udGV4dFR5cGVzLicsIHRoaXMuZ2V0TmFtZSgpIHx8ICdSZWFjdENvbXBvc2l0
ZUNvbXBvbmVudCcsIG5hbWUpIDogX3Byb2RJbnZhcmlhbnQoJzEwOCcsIHRoaXMuZ2V0TmFtZSgp
IHx8ICdSZWFjdENvbXBvc2l0ZUNvbXBvbmVudCcsIG5hbWUpIDogdm9pZCAwO1xuICAgICAgfVxu
ICAgICAgcmV0dXJuIF9hc3NpZ24oe30sIGN1cnJlbnRDb250ZXh0LCBjaGlsZENvbnRleHQpO1xu
ICAgIH1cbiAgICByZXR1cm4gY3VycmVudENvbnRleHQ7XG4gIH0sXG5cbiAgLyoqXG4gICAqIEFz
c2VydCB0aGF0IHRoZSBjb250ZXh0IHR5cGVzIGFyZSB2YWxpZFxuICAgKlxuICAgKiBAcGFyYW0g
e29iamVjdH0gdHlwZVNwZWNzIE1hcCBvZiBjb250ZXh0IGZpZWxkIHRvIGEgUmVhY3RQcm9wVHlw
ZVxuICAgKiBAcGFyYW0ge29iamVjdH0gdmFsdWVzIFJ1bnRpbWUgdmFsdWVzIHRoYXQgbmVlZCB0
byBiZSB0eXBlLWNoZWNrZWRcbiAgICogQHBhcmFtIHtzdHJpbmd9IGxvY2F0aW9uIGUuZy4gXCJw
cm9wXCIsIFwiY29udGV4dFwiLCBcImNoaWxkIGNvbnRleHRcIlxuICAgKiBAcHJpdmF0ZVxuICAg
Ki9cbiAgX2NoZWNrQ29udGV4dFR5cGVzOiBmdW5jdGlvbiAodHlwZVNwZWNzLCB2YWx1ZXMsIGxv
Y2F0aW9uKSB7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicp
IHtcbiAgICAgIGNoZWNrUmVhY3RUeXBlU3BlYyh0eXBlU3BlY3MsIHZhbHVlcywgbG9jYXRpb24s
IHRoaXMuZ2V0TmFtZSgpLCBudWxsLCB0aGlzLl9kZWJ1Z0lEKTtcbiAgICB9XG4gIH0sXG5cbiAg
cmVjZWl2ZUNvbXBvbmVudDogZnVuY3Rpb24gKG5leHRFbGVtZW50LCB0cmFuc2FjdGlvbiwgbmV4
dENvbnRleHQpIHtcbiAgICB2YXIgcHJldkVsZW1lbnQgPSB0aGlzLl9jdXJyZW50RWxlbWVudDtc
biAgICB2YXIgcHJldkNvbnRleHQgPSB0aGlzLl9jb250ZXh0O1xuXG4gICAgdGhpcy5fcGVuZGlu
Z0VsZW1lbnQgPSBudWxsO1xuXG4gICAgdGhpcy51cGRhdGVDb21wb25lbnQodHJhbnNhY3Rpb24s
IHByZXZFbGVtZW50LCBuZXh0RWxlbWVudCwgcHJldkNvbnRleHQsIG5leHRDb250ZXh0KTtcbiAg
fSxcblxuICAvKipcbiAgICogSWYgYW55IG9mIGBfcGVuZGluZ0VsZW1lbnRgLCBgX3BlbmRpbmdT
dGF0ZVF1ZXVlYCwgb3IgYF9wZW5kaW5nRm9yY2VVcGRhdGVgXG4gICAqIGlzIHNldCwgdXBkYXRl
IHRoZSBjb21wb25lbnQuXG4gICAqXG4gICAqIEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFuc2Fj
dGlvbn0gdHJhbnNhY3Rpb25cbiAgICogQGludGVybmFsXG4gICAqL1xuICBwZXJmb3JtVXBkYXRl
SWZOZWNlc3Nhcnk6IGZ1bmN0aW9uICh0cmFuc2FjdGlvbikge1xuICAgIGlmICh0aGlzLl9wZW5k
aW5nRWxlbWVudCAhPSBudWxsKSB7XG4gICAgICBSZWFjdFJlY29uY2lsZXIucmVjZWl2ZUNvbXBv
bmVudCh0aGlzLCB0aGlzLl9wZW5kaW5nRWxlbWVudCwgdHJhbnNhY3Rpb24sIHRoaXMuX2NvbnRl
eHQpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5fcGVuZGluZ1N0YXRlUXVldWUgIT09IG51bGwgfHwg
dGhpcy5fcGVuZGluZ0ZvcmNlVXBkYXRlKSB7XG4gICAgICB0aGlzLnVwZGF0ZUNvbXBvbmVudCh0
cmFuc2FjdGlvbiwgdGhpcy5fY3VycmVudEVsZW1lbnQsIHRoaXMuX2N1cnJlbnRFbGVtZW50LCB0
aGlzLl9jb250ZXh0LCB0aGlzLl9jb250ZXh0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5f
dXBkYXRlQmF0Y2hOdW1iZXIgPSBudWxsO1xuICAgIH1cbiAgfSxcblxuICAvKipcbiAgICogUGVy
Zm9ybSBhbiB1cGRhdGUgdG8gYSBtb3VudGVkIGNvbXBvbmVudC4gVGhlIGNvbXBvbmVudFdpbGxS
ZWNlaXZlUHJvcHMgYW5kXG4gICAqIHNob3VsZENvbXBvbmVudFVwZGF0ZSBtZXRob2RzIGFyZSBj
YWxsZWQsIHRoZW4gKGFzc3VtaW5nIHRoZSB1cGRhdGUgaXNuJ3RcbiAgICogc2tpcHBlZCkgdGhl
IHJlbWFpbmluZyB1cGRhdGUgbGlmZWN5Y2xlIG1ldGhvZHMgYXJlIGNhbGxlZCBhbmQgdGhlIERP
TVxuICAgKiByZXByZXNlbnRhdGlvbiBpcyB1cGRhdGVkLlxuICAgKlxuICAgKiBCeSBkZWZhdWx0
LCB0aGlzIGltcGxlbWVudHMgUmVhY3QncyByZW5kZXJpbmcgYW5kIHJlY29uY2lsaWF0aW9uIGFs
Z29yaXRobS5cbiAgICogU29waGlzdGljYXRlZCBjbGllbnRzIG1heSB3aXNoIHRvIG92ZXJyaWRl
IHRoaXMuXG4gICAqXG4gICAqIEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbn0gdHJh
bnNhY3Rpb25cbiAgICogQHBhcmFtIHtSZWFjdEVsZW1lbnR9IHByZXZQYXJlbnRFbGVtZW50XG4g
ICAqIEBwYXJhbSB7UmVhY3RFbGVtZW50fSBuZXh0UGFyZW50RWxlbWVudFxuICAgKiBAaW50ZXJu
YWxcbiAgICogQG92ZXJyaWRhYmxlXG4gICAqL1xuICB1cGRhdGVDb21wb25lbnQ6IGZ1bmN0aW9u
ICh0cmFuc2FjdGlvbiwgcHJldlBhcmVudEVsZW1lbnQsIG5leHRQYXJlbnRFbGVtZW50LCBwcmV2
VW5tYXNrZWRDb250ZXh0LCBuZXh0VW5tYXNrZWRDb250ZXh0KSB7XG4gICAgdmFyIGluc3QgPSB0
aGlzLl9pbnN0YW5jZTtcbiAgICAhKGluc3QgIT0gbnVsbCkgPyBwcm9jZXNzLmVudi5OT0RFX0VO
ViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnQXR0ZW1wdGVkIHRvIHVwZGF0
ZSBjb21wb25lbnQgYCVzYCB0aGF0IGhhcyBhbHJlYWR5IGJlZW4gdW5tb3VudGVkIChvciBmYWls
ZWQgdG8gbW91bnQpLicsIHRoaXMuZ2V0TmFtZSgpIHx8ICdSZWFjdENvbXBvc2l0ZUNvbXBvbmVu
dCcpIDogX3Byb2RJbnZhcmlhbnQoJzEzNicsIHRoaXMuZ2V0TmFtZSgpIHx8ICdSZWFjdENvbXBv
c2l0ZUNvbXBvbmVudCcpIDogdm9pZCAwO1xuXG4gICAgdmFyIHdpbGxSZWNlaXZlID0gZmFsc2U7
XG4gICAgdmFyIG5leHRDb250ZXh0O1xuXG4gICAgLy8gRGV0ZXJtaW5lIGlmIHRoZSBjb250ZXh0
IGhhcyBjaGFuZ2VkIG9yIG5vdFxuICAgIGlmICh0aGlzLl9jb250ZXh0ID09PSBuZXh0VW5tYXNr
ZWRDb250ZXh0KSB7XG4gICAgICBuZXh0Q29udGV4dCA9IGluc3QuY29udGV4dDtcbiAgICB9IGVs
c2Uge1xuICAgICAgbmV4dENvbnRleHQgPSB0aGlzLl9wcm9jZXNzQ29udGV4dChuZXh0VW5tYXNr
ZWRDb250ZXh0KTtcbiAgICAgIHdpbGxSZWNlaXZlID0gdHJ1ZTtcbiAgICB9XG5cbiAgICB2YXIg
cHJldlByb3BzID0gcHJldlBhcmVudEVsZW1lbnQucHJvcHM7XG4gICAgdmFyIG5leHRQcm9wcyA9
IG5leHRQYXJlbnRFbGVtZW50LnByb3BzO1xuXG4gICAgLy8gTm90IGEgc2ltcGxlIHN0YXRlIHVw
ZGF0ZSBidXQgYSBwcm9wcyB1cGRhdGVcbiAgICBpZiAocHJldlBhcmVudEVsZW1lbnQgIT09IG5l
eHRQYXJlbnRFbGVtZW50KSB7XG4gICAgICB3aWxsUmVjZWl2ZSA9IHRydWU7XG4gICAgfVxuXG4g
ICAgLy8gQW4gdXBkYXRlIGhlcmUgd2lsbCBzY2hlZHVsZSBhbiB1cGRhdGUgYnV0IGltbWVkaWF0
ZWx5IHNldFxuICAgIC8vIF9wZW5kaW5nU3RhdGVRdWV1ZSB3aGljaCB3aWxsIGVuc3VyZSB0aGF0
IGFueSBzdGF0ZSB1cGRhdGVzIGdldHNcbiAgICAvLyBpbW1lZGlhdGVseSByZWNvbmNpbGVkIGlu
c3RlYWQgb2Ygd2FpdGluZyBmb3IgdGhlIG5leHQgYmF0Y2guXG4gICAgaWYgKHdpbGxSZWNlaXZl
ICYmIGluc3QuY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcykge1xuICAgICAgaWYgKHByb2Nlc3Mu
ZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgbWVhc3VyZUxpZmVDeWNs
ZVBlcmYoZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHJldHVybiBpbnN0LmNvbXBvbmVudFdpbGxS
ZWNlaXZlUHJvcHMobmV4dFByb3BzLCBuZXh0Q29udGV4dCk7XG4gICAgICAgIH0sIHRoaXMuX2Rl
YnVnSUQsICdjb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzJyk7XG4gICAgICB9IGVsc2Uge1xuICAg
ICAgICBpbnN0LmNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMobmV4dFByb3BzLCBuZXh0Q29udGV4
dCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIG5leHRTdGF0ZSA9IHRoaXMuX3Byb2Nlc3NQ
ZW5kaW5nU3RhdGUobmV4dFByb3BzLCBuZXh0Q29udGV4dCk7XG4gICAgdmFyIHNob3VsZFVwZGF0
ZSA9IHRydWU7XG5cbiAgICBpZiAoIXRoaXMuX3BlbmRpbmdGb3JjZVVwZGF0ZSkge1xuICAgICAg
aWYgKGluc3Quc2hvdWxkQ29tcG9uZW50VXBkYXRlKSB7XG4gICAgICAgIGlmIChwcm9jZXNzLmVu
di5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgICAgc2hvdWxkVXBkYXRlID0g
bWVhc3VyZUxpZmVDeWNsZVBlcmYoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIGlu
c3Quc2hvdWxkQ29tcG9uZW50VXBkYXRlKG5leHRQcm9wcywgbmV4dFN0YXRlLCBuZXh0Q29udGV4
dCk7XG4gICAgICAgICAgfSwgdGhpcy5fZGVidWdJRCwgJ3Nob3VsZENvbXBvbmVudFVwZGF0ZScp
O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHNob3VsZFVwZGF0ZSA9IGluc3Quc2hvdWxk
Q29tcG9uZW50VXBkYXRlKG5leHRQcm9wcywgbmV4dFN0YXRlLCBuZXh0Q29udGV4dCk7XG4gICAg
ICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICh0aGlzLl9jb21wb3NpdGVUeXBlID09
PSBDb21wb3NpdGVUeXBlcy5QdXJlQ2xhc3MpIHtcbiAgICAgICAgICBzaG91bGRVcGRhdGUgPSAh
c2hhbGxvd0VxdWFsKHByZXZQcm9wcywgbmV4dFByb3BzKSB8fCAhc2hhbGxvd0VxdWFsKGluc3Qu
c3RhdGUsIG5leHRTdGF0ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAo
cHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgcHJvY2Vzcy5l
bnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoc2hvdWxkVXBkYXRlICE9PSB1
bmRlZmluZWQsICclcy5zaG91bGRDb21wb25lbnRVcGRhdGUoKTogUmV0dXJuZWQgdW5kZWZpbmVk
IGluc3RlYWQgb2YgYSAnICsgJ2Jvb2xlYW4gdmFsdWUuIE1ha2Ugc3VyZSB0byByZXR1cm4gdHJ1
ZSBvciBmYWxzZS4nLCB0aGlzLmdldE5hbWUoKSB8fCAnUmVhY3RDb21wb3NpdGVDb21wb25lbnQn
KSA6IHZvaWQgMDtcbiAgICB9XG5cbiAgICB0aGlzLl91cGRhdGVCYXRjaE51bWJlciA9IG51bGw7
XG4gICAgaWYgKHNob3VsZFVwZGF0ZSkge1xuICAgICAgdGhpcy5fcGVuZGluZ0ZvcmNlVXBkYXRl
ID0gZmFsc2U7XG4gICAgICAvLyBXaWxsIHNldCBgdGhpcy5wcm9wc2AsIGB0aGlzLnN0YXRlYCBh
bmQgYHRoaXMuY29udGV4dGAuXG4gICAgICB0aGlzLl9wZXJmb3JtQ29tcG9uZW50VXBkYXRlKG5l
eHRQYXJlbnRFbGVtZW50LCBuZXh0UHJvcHMsIG5leHRTdGF0ZSwgbmV4dENvbnRleHQsIHRyYW5z
YWN0aW9uLCBuZXh0VW5tYXNrZWRDb250ZXh0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gSWYg
aXQncyBkZXRlcm1pbmVkIHRoYXQgYSBjb21wb25lbnQgc2hvdWxkIG5vdCB1cGRhdGUsIHdlIHN0
aWxsIHdhbnRcbiAgICAgIC8vIHRvIHNldCBwcm9wcyBhbmQgc3RhdGUgYnV0IHdlIHNob3J0Y3V0
IHRoZSByZXN0IG9mIHRoZSB1cGRhdGUuXG4gICAgICB0aGlzLl9jdXJyZW50RWxlbWVudCA9IG5l
eHRQYXJlbnRFbGVtZW50O1xuICAgICAgdGhpcy5fY29udGV4dCA9IG5leHRVbm1hc2tlZENvbnRl
eHQ7XG4gICAgICBpbnN0LnByb3BzID0gbmV4dFByb3BzO1xuICAgICAgaW5zdC5zdGF0ZSA9IG5l
eHRTdGF0ZTtcbiAgICAgIGluc3QuY29udGV4dCA9IG5leHRDb250ZXh0O1xuICAgIH1cbiAgfSxc
blxuICBfcHJvY2Vzc1BlbmRpbmdTdGF0ZTogZnVuY3Rpb24gKHByb3BzLCBjb250ZXh0KSB7XG4g
ICAgdmFyIGluc3QgPSB0aGlzLl9pbnN0YW5jZTtcbiAgICB2YXIgcXVldWUgPSB0aGlzLl9wZW5k
aW5nU3RhdGVRdWV1ZTtcbiAgICB2YXIgcmVwbGFjZSA9IHRoaXMuX3BlbmRpbmdSZXBsYWNlU3Rh
dGU7XG4gICAgdGhpcy5fcGVuZGluZ1JlcGxhY2VTdGF0ZSA9IGZhbHNlO1xuICAgIHRoaXMuX3Bl
bmRpbmdTdGF0ZVF1ZXVlID0gbnVsbDtcblxuICAgIGlmICghcXVldWUpIHtcbiAgICAgIHJldHVy
biBpbnN0LnN0YXRlO1xuICAgIH1cblxuICAgIGlmIChyZXBsYWNlICYmIHF1ZXVlLmxlbmd0aCA9
PT0gMSkge1xuICAgICAgcmV0dXJuIHF1ZXVlWzBdO1xuICAgIH1cblxuICAgIHZhciBuZXh0U3Rh
dGUgPSBfYXNzaWduKHt9LCByZXBsYWNlID8gcXVldWVbMF0gOiBpbnN0LnN0YXRlKTtcbiAgICBm
b3IgKHZhciBpID0gcmVwbGFjZSA/IDEgOiAwOyBpIDwgcXVldWUubGVuZ3RoOyBpKyspIHtcbiAg
ICAgIHZhciBwYXJ0aWFsID0gcXVldWVbaV07XG4gICAgICBfYXNzaWduKG5leHRTdGF0ZSwgdHlw
ZW9mIHBhcnRpYWwgPT09ICdmdW5jdGlvbicgPyBwYXJ0aWFsLmNhbGwoaW5zdCwgbmV4dFN0YXRl
LCBwcm9wcywgY29udGV4dCkgOiBwYXJ0aWFsKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV4dFN0
YXRlO1xuICB9LFxuXG4gIC8qKlxuICAgKiBNZXJnZXMgbmV3IHByb3BzIGFuZCBzdGF0ZSwgbm90
aWZpZXMgZGVsZWdhdGUgbWV0aG9kcyBvZiB1cGRhdGUgYW5kXG4gICAqIHBlcmZvcm1zIHVwZGF0
ZS5cbiAgICpcbiAgICogQHBhcmFtIHtSZWFjdEVsZW1lbnR9IG5leHRFbGVtZW50IE5leHQgZWxl
bWVudFxuICAgKiBAcGFyYW0ge29iamVjdH0gbmV4dFByb3BzIE5leHQgcHVibGljIG9iamVjdCB0
byBzZXQgYXMgcHJvcGVydGllcy5cbiAgICogQHBhcmFtIHs/b2JqZWN0fSBuZXh0U3RhdGUgTmV4
dCBvYmplY3QgdG8gc2V0IGFzIHN0YXRlLlxuICAgKiBAcGFyYW0gez9vYmplY3R9IG5leHRDb250
ZXh0IE5leHQgcHVibGljIG9iamVjdCB0byBzZXQgYXMgY29udGV4dC5cbiAgICogQHBhcmFtIHtS
ZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9ufSB0cmFuc2FjdGlvblxuICAgKiBAcGFyYW0gez9vYmpl
Y3R9IHVubWFza2VkQ29udGV4dFxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgX3BlcmZvcm1Db21w
b25lbnRVcGRhdGU6IGZ1bmN0aW9uIChuZXh0RWxlbWVudCwgbmV4dFByb3BzLCBuZXh0U3RhdGUs
IG5leHRDb250ZXh0LCB0cmFuc2FjdGlvbiwgdW5tYXNrZWRDb250ZXh0KSB7XG4gICAgdmFyIF90
aGlzMiA9IHRoaXM7XG5cbiAgICB2YXIgaW5zdCA9IHRoaXMuX2luc3RhbmNlO1xuXG4gICAgdmFy
IGhhc0NvbXBvbmVudERpZFVwZGF0ZSA9IEJvb2xlYW4oaW5zdC5jb21wb25lbnREaWRVcGRhdGUp
O1xuICAgIHZhciBwcmV2UHJvcHM7XG4gICAgdmFyIHByZXZTdGF0ZTtcbiAgICB2YXIgcHJldkNv
bnRleHQ7XG4gICAgaWYgKGhhc0NvbXBvbmVudERpZFVwZGF0ZSkge1xuICAgICAgcHJldlByb3Bz
ID0gaW5zdC5wcm9wcztcbiAgICAgIHByZXZTdGF0ZSA9IGluc3Quc3RhdGU7XG4gICAgICBwcmV2
Q29udGV4dCA9IGluc3QuY29udGV4dDtcbiAgICB9XG5cbiAgICBpZiAoaW5zdC5jb21wb25lbnRX
aWxsVXBkYXRlKSB7XG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0
aW9uJykge1xuICAgICAgICBtZWFzdXJlTGlmZUN5Y2xlUGVyZihmdW5jdGlvbiAoKSB7XG4gICAg
ICAgICAgcmV0dXJuIGluc3QuY29tcG9uZW50V2lsbFVwZGF0ZShuZXh0UHJvcHMsIG5leHRTdGF0
ZSwgbmV4dENvbnRleHQpO1xuICAgICAgICB9LCB0aGlzLl9kZWJ1Z0lELCAnY29tcG9uZW50V2ls
bFVwZGF0ZScpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaW5zdC5jb21wb25lbnRXaWxsVXBk
YXRlKG5leHRQcm9wcywgbmV4dFN0YXRlLCBuZXh0Q29udGV4dCk7XG4gICAgICB9XG4gICAgfVxu
XG4gICAgdGhpcy5fY3VycmVudEVsZW1lbnQgPSBuZXh0RWxlbWVudDtcbiAgICB0aGlzLl9jb250
ZXh0ID0gdW5tYXNrZWRDb250ZXh0O1xuICAgIGluc3QucHJvcHMgPSBuZXh0UHJvcHM7XG4gICAg
aW5zdC5zdGF0ZSA9IG5leHRTdGF0ZTtcbiAgICBpbnN0LmNvbnRleHQgPSBuZXh0Q29udGV4dDtc
blxuICAgIHRoaXMuX3VwZGF0ZVJlbmRlcmVkQ29tcG9uZW50KHRyYW5zYWN0aW9uLCB1bm1hc2tl
ZENvbnRleHQpO1xuXG4gICAgaWYgKGhhc0NvbXBvbmVudERpZFVwZGF0ZSkge1xuICAgICAgaWYg
KHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgdHJhbnNh
Y3Rpb24uZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1ZShmdW5jdGlvbiAoKSB7XG4gICAgICAg
ICAgbWVhc3VyZUxpZmVDeWNsZVBlcmYoaW5zdC5jb21wb25lbnREaWRVcGRhdGUuYmluZChpbnN0
LCBwcmV2UHJvcHMsIHByZXZTdGF0ZSwgcHJldkNvbnRleHQpLCBfdGhpczIuX2RlYnVnSUQsICdj
b21wb25lbnREaWRVcGRhdGUnKTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAg
ICB0cmFuc2FjdGlvbi5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKGluc3QuY29tcG9uZW50
RGlkVXBkYXRlLmJpbmQoaW5zdCwgcHJldlByb3BzLCBwcmV2U3RhdGUsIHByZXZDb250ZXh0KSwg
aW5zdCk7XG4gICAgICB9XG4gICAgfVxuICB9LFxuXG4gIC8qKlxuICAgKiBDYWxsIHRoZSBjb21w
b25lbnQncyBgcmVuZGVyYCBtZXRob2QgYW5kIHVwZGF0ZSB0aGUgRE9NIGFjY29yZGluZ2x5Llxu
ICAgKlxuICAgKiBAcGFyYW0ge1JlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb259IHRyYW5zYWN0aW9u
XG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgX3VwZGF0ZVJlbmRlcmVkQ29tcG9uZW50OiBmdW5j
dGlvbiAodHJhbnNhY3Rpb24sIGNvbnRleHQpIHtcbiAgICB2YXIgcHJldkNvbXBvbmVudEluc3Rh
bmNlID0gdGhpcy5fcmVuZGVyZWRDb21wb25lbnQ7XG4gICAgdmFyIHByZXZSZW5kZXJlZEVsZW1l
bnQgPSBwcmV2Q29tcG9uZW50SW5zdGFuY2UuX2N1cnJlbnRFbGVtZW50O1xuICAgIHZhciBuZXh0
UmVuZGVyZWRFbGVtZW50ID0gdGhpcy5fcmVuZGVyVmFsaWRhdGVkQ29tcG9uZW50KCk7XG5cbiAg
ICB2YXIgZGVidWdJRCA9IDA7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJv
ZHVjdGlvbicpIHtcbiAgICAgIGRlYnVnSUQgPSB0aGlzLl9kZWJ1Z0lEO1xuICAgIH1cblxuICAg
IGlmIChzaG91bGRVcGRhdGVSZWFjdENvbXBvbmVudChwcmV2UmVuZGVyZWRFbGVtZW50LCBuZXh0
UmVuZGVyZWRFbGVtZW50KSkge1xuICAgICAgUmVhY3RSZWNvbmNpbGVyLnJlY2VpdmVDb21wb25l
bnQocHJldkNvbXBvbmVudEluc3RhbmNlLCBuZXh0UmVuZGVyZWRFbGVtZW50LCB0cmFuc2FjdGlv
biwgdGhpcy5fcHJvY2Vzc0NoaWxkQ29udGV4dChjb250ZXh0KSk7XG4gICAgfSBlbHNlIHtcbiAg
ICAgIHZhciBvbGRIb3N0Tm9kZSA9IFJlYWN0UmVjb25jaWxlci5nZXRIb3N0Tm9kZShwcmV2Q29t
cG9uZW50SW5zdGFuY2UpO1xuICAgICAgUmVhY3RSZWNvbmNpbGVyLnVubW91bnRDb21wb25lbnQo
cHJldkNvbXBvbmVudEluc3RhbmNlLCBmYWxzZSk7XG5cbiAgICAgIHZhciBub2RlVHlwZSA9IFJl
YWN0Tm9kZVR5cGVzLmdldFR5cGUobmV4dFJlbmRlcmVkRWxlbWVudCk7XG4gICAgICB0aGlzLl9y
ZW5kZXJlZE5vZGVUeXBlID0gbm9kZVR5cGU7XG4gICAgICB2YXIgY2hpbGQgPSB0aGlzLl9pbnN0
YW50aWF0ZVJlYWN0Q29tcG9uZW50KG5leHRSZW5kZXJlZEVsZW1lbnQsIG5vZGVUeXBlICE9PSBS
ZWFjdE5vZGVUeXBlcy5FTVBUWSAvKiBzaG91bGRIYXZlRGVidWdJRCAqL1xuICAgICAgKTtcbiAg
ICAgIHRoaXMuX3JlbmRlcmVkQ29tcG9uZW50ID0gY2hpbGQ7XG5cbiAgICAgIHZhciBuZXh0TWFy
a3VwID0gUmVhY3RSZWNvbmNpbGVyLm1vdW50Q29tcG9uZW50KGNoaWxkLCB0cmFuc2FjdGlvbiwg
dGhpcy5faG9zdFBhcmVudCwgdGhpcy5faG9zdENvbnRhaW5lckluZm8sIHRoaXMuX3Byb2Nlc3ND
aGlsZENvbnRleHQoY29udGV4dCksIGRlYnVnSUQpO1xuXG4gICAgICBpZiAocHJvY2Vzcy5lbnYu
Tk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICBpZiAoZGVidWdJRCAhPT0gMCkg
e1xuICAgICAgICAgIHZhciBjaGlsZERlYnVnSURzID0gY2hpbGQuX2RlYnVnSUQgIT09IDAgPyBb
Y2hpbGQuX2RlYnVnSURdIDogW107XG4gICAgICAgICAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVi
dWdUb29sLm9uU2V0Q2hpbGRyZW4oZGVidWdJRCwgY2hpbGREZWJ1Z0lEcyk7XG4gICAgICAgIH1c
biAgICAgIH1cblxuICAgICAgdGhpcy5fcmVwbGFjZU5vZGVXaXRoTWFya3VwKG9sZEhvc3ROb2Rl
LCBuZXh0TWFya3VwLCBwcmV2Q29tcG9uZW50SW5zdGFuY2UpO1xuICAgIH1cbiAgfSxcblxuICAv
KipcbiAgICogT3ZlcnJpZGRlbiBpbiBzaGFsbG93IHJlbmRlcmluZy5cbiAgICpcbiAgICogQHBy
b3RlY3RlZFxuICAgKi9cbiAgX3JlcGxhY2VOb2RlV2l0aE1hcmt1cDogZnVuY3Rpb24gKG9sZEhv
c3ROb2RlLCBuZXh0TWFya3VwLCBwcmV2SW5zdGFuY2UpIHtcbiAgICBSZWFjdENvbXBvbmVudEVu
dmlyb25tZW50LnJlcGxhY2VOb2RlV2l0aE1hcmt1cChvbGRIb3N0Tm9kZSwgbmV4dE1hcmt1cCwg
cHJldkluc3RhbmNlKTtcbiAgfSxcblxuICAvKipcbiAgICogQHByb3RlY3RlZFxuICAgKi9cbiAg
X3JlbmRlclZhbGlkYXRlZENvbXBvbmVudFdpdGhvdXRPd25lck9yQ29udGV4dDogZnVuY3Rpb24g
KCkge1xuICAgIHZhciBpbnN0ID0gdGhpcy5faW5zdGFuY2U7XG4gICAgdmFyIHJlbmRlcmVkRWxl
bWVudDtcblxuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7
XG4gICAgICByZW5kZXJlZEVsZW1lbnQgPSBtZWFzdXJlTGlmZUN5Y2xlUGVyZihmdW5jdGlvbiAo
KSB7XG4gICAgICAgIHJldHVybiBpbnN0LnJlbmRlcigpO1xuICAgICAgfSwgdGhpcy5fZGVidWdJ
RCwgJ3JlbmRlcicpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZW5kZXJlZEVsZW1lbnQgPSBpbnN0
LnJlbmRlcigpO1xuICAgIH1cblxuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3By
b2R1Y3Rpb24nKSB7XG4gICAgICAvLyBXZSBhbGxvdyBhdXRvLW1vY2tzIHRvIHByb2NlZWQgYXMg
aWYgdGhleSdyZSByZXR1cm5pbmcgbnVsbC5cbiAgICAgIGlmIChyZW5kZXJlZEVsZW1lbnQgPT09
IHVuZGVmaW5lZCAmJiBpbnN0LnJlbmRlci5faXNNb2NrRnVuY3Rpb24pIHtcbiAgICAgICAgLy8g
VGhpcyBpcyBwcm9iYWJseSBiYWQgcHJhY3RpY2UuIENvbnNpZGVyIHdhcm5pbmcgaGVyZSBhbmRc
biAgICAgICAgLy8gZGVwcmVjYXRpbmcgdGhpcyBjb252ZW5pZW5jZS5cbiAgICAgICAgcmVuZGVy
ZWRFbGVtZW50ID0gbnVsbDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcmVuZGVyZWRF
bGVtZW50O1xuICB9LFxuXG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgX3JlbmRlclZh
bGlkYXRlZENvbXBvbmVudDogZnVuY3Rpb24gKCkge1xuICAgIHZhciByZW5kZXJlZEVsZW1lbnQ7
XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgfHwgdGhpcy5f
Y29tcG9zaXRlVHlwZSAhPT0gQ29tcG9zaXRlVHlwZXMuU3RhdGVsZXNzRnVuY3Rpb25hbCkge1xu
ICAgICAgUmVhY3RDdXJyZW50T3duZXIuY3VycmVudCA9IHRoaXM7XG4gICAgICB0cnkge1xuICAg
ICAgICByZW5kZXJlZEVsZW1lbnQgPSB0aGlzLl9yZW5kZXJWYWxpZGF0ZWRDb21wb25lbnRXaXRo
b3V0T3duZXJPckNvbnRleHQoKTtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIFJlYWN0Q3Vy
cmVudE93bmVyLmN1cnJlbnQgPSBudWxsO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBy
ZW5kZXJlZEVsZW1lbnQgPSB0aGlzLl9yZW5kZXJWYWxpZGF0ZWRDb21wb25lbnRXaXRob3V0T3du
ZXJPckNvbnRleHQoKTtcbiAgICB9XG4gICAgIShcbiAgICAvLyBUT0RPOiBBbiBgaXNWYWxpZE5v
ZGVgIGZ1bmN0aW9uIHdvdWxkIHByb2JhYmx5IGJlIG1vcmUgYXBwcm9wcmlhdGVcbiAgICByZW5k
ZXJlZEVsZW1lbnQgPT09IG51bGwgfHwgcmVuZGVyZWRFbGVtZW50ID09PSBmYWxzZSB8fCBSZWFj
dC5pc1ZhbGlkRWxlbWVudChyZW5kZXJlZEVsZW1lbnQpKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5W
ICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICclcy5yZW5kZXIoKTogQSB2YWxp
ZCBSZWFjdCBlbGVtZW50IChvciBudWxsKSBtdXN0IGJlIHJldHVybmVkLiBZb3UgbWF5IGhhdmUg
cmV0dXJuZWQgdW5kZWZpbmVkLCBhbiBhcnJheSBvciBzb21lIG90aGVyIGludmFsaWQgb2JqZWN0
LicsIHRoaXMuZ2V0TmFtZSgpIHx8ICdSZWFjdENvbXBvc2l0ZUNvbXBvbmVudCcpIDogX3Byb2RJ
bnZhcmlhbnQoJzEwOScsIHRoaXMuZ2V0TmFtZSgpIHx8ICdSZWFjdENvbXBvc2l0ZUNvbXBvbmVu
dCcpIDogdm9pZCAwO1xuXG4gICAgcmV0dXJuIHJlbmRlcmVkRWxlbWVudDtcbiAgfSxcblxuICAv
KipcbiAgICogTGF6aWx5IGFsbG9jYXRlcyB0aGUgcmVmcyBvYmplY3QgYW5kIHN0b3JlcyBgY29t
cG9uZW50YCBhcyBgcmVmYC5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHJlZiBSZWZlcmVu
Y2UgbmFtZS5cbiAgICogQHBhcmFtIHtjb21wb25lbnR9IGNvbXBvbmVudCBDb21wb25lbnQgdG8g
c3RvcmUgYXMgYHJlZmAuXG4gICAqIEBmaW5hbFxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgYXR0
YWNoUmVmOiBmdW5jdGlvbiAocmVmLCBjb21wb25lbnQpIHtcbiAgICB2YXIgaW5zdCA9IHRoaXMu
Z2V0UHVibGljSW5zdGFuY2UoKTtcbiAgICAhKGluc3QgIT0gbnVsbCkgPyBwcm9jZXNzLmVudi5O
T0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnU3RhdGVsZXNzIGZ1
bmN0aW9uIGNvbXBvbmVudHMgY2Fubm90IGhhdmUgcmVmcy4nKSA6IF9wcm9kSW52YXJpYW50KCcx
MTAnKSA6IHZvaWQgMDtcbiAgICB2YXIgcHVibGljQ29tcG9uZW50SW5zdGFuY2UgPSBjb21wb25l
bnQuZ2V0UHVibGljSW5zdGFuY2UoKTtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09
ICdwcm9kdWN0aW9uJykge1xuICAgICAgdmFyIGNvbXBvbmVudE5hbWUgPSBjb21wb25lbnQgJiYg
Y29tcG9uZW50LmdldE5hbWUgPyBjb21wb25lbnQuZ2V0TmFtZSgpIDogJ2EgY29tcG9uZW50Jztc
biAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKHB1
YmxpY0NvbXBvbmVudEluc3RhbmNlICE9IG51bGwgfHwgY29tcG9uZW50Ll9jb21wb3NpdGVUeXBl
ICE9PSBDb21wb3NpdGVUeXBlcy5TdGF0ZWxlc3NGdW5jdGlvbmFsLCAnU3RhdGVsZXNzIGZ1bmN0
aW9uIGNvbXBvbmVudHMgY2Fubm90IGJlIGdpdmVuIHJlZnMgJyArICcoU2VlIHJlZiBcIiVzXCIg
aW4gJXMgY3JlYXRlZCBieSAlcykuICcgKyAnQXR0ZW1wdHMgdG8gYWNjZXNzIHRoaXMgcmVmIHdp
bGwgZmFpbC4nLCByZWYsIGNvbXBvbmVudE5hbWUsIHRoaXMuZ2V0TmFtZSgpKSA6IHZvaWQgMDtc
biAgICB9XG4gICAgdmFyIHJlZnMgPSBpbnN0LnJlZnMgPT09IGVtcHR5T2JqZWN0ID8gaW5zdC5y
ZWZzID0ge30gOiBpbnN0LnJlZnM7XG4gICAgcmVmc1tyZWZdID0gcHVibGljQ29tcG9uZW50SW5z
dGFuY2U7XG4gIH0sXG5cbiAgLyoqXG4gICAqIERldGFjaGVzIGEgcmVmZXJlbmNlIG5hbWUuXG4g
ICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSByZWYgTmFtZSB0byBkZXJlZmVyZW5jZS5cbiAgICog
QGZpbmFsXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBkZXRhY2hSZWY6IGZ1bmN0aW9uIChyZWYp
IHtcbiAgICB2YXIgcmVmcyA9IHRoaXMuZ2V0UHVibGljSW5zdGFuY2UoKS5yZWZzO1xuICAgIGRl
bGV0ZSByZWZzW3JlZl07XG4gIH0sXG5cbiAgLyoqXG4gICAqIEdldCBhIHRleHQgZGVzY3JpcHRp
b24gb2YgdGhlIGNvbXBvbmVudCB0aGF0IGNhbiBiZSB1c2VkIHRvIGlkZW50aWZ5IGl0XG4gICAq
IGluIGVycm9yIG1lc3NhZ2VzLlxuICAgKiBAcmV0dXJuIHtzdHJpbmd9IFRoZSBuYW1lIG9yIG51
bGwuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgZ2V0TmFtZTogZnVuY3Rpb24gKCkge1xuICAg
IHZhciB0eXBlID0gdGhpcy5fY3VycmVudEVsZW1lbnQudHlwZTtcbiAgICB2YXIgY29uc3RydWN0
b3IgPSB0aGlzLl9pbnN0YW5jZSAmJiB0aGlzLl9pbnN0YW5jZS5jb25zdHJ1Y3RvcjtcbiAgICBy
ZXR1cm4gdHlwZS5kaXNwbGF5TmFtZSB8fCBjb25zdHJ1Y3RvciAmJiBjb25zdHJ1Y3Rvci5kaXNw
bGF5TmFtZSB8fCB0eXBlLm5hbWUgfHwgY29uc3RydWN0b3IgJiYgY29uc3RydWN0b3IubmFtZSB8
fCBudWxsO1xuICB9LFxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIHB1YmxpY2x5IGFjY2Vzc2libGUg
cmVwcmVzZW50YXRpb24gb2YgdGhpcyBjb21wb25lbnQgLSBpLmUuIHdoYXRcbiAgICogaXMgZXhw
b3NlZCBieSByZWZzIGFuZCByZXR1cm5lZCBieSByZW5kZXIuIENhbiBiZSBudWxsIGZvciBzdGF0
ZWxlc3NcbiAgICogY29tcG9uZW50cy5cbiAgICpcbiAgICogQHJldHVybiB7UmVhY3RDb21wb25l
bnR9IHRoZSBwdWJsaWMgY29tcG9uZW50IGluc3RhbmNlLlxuICAgKiBAaW50ZXJuYWxcbiAgICov
XG4gIGdldFB1YmxpY0luc3RhbmNlOiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGluc3QgPSB0aGlz
Ll9pbnN0YW5jZTtcbiAgICBpZiAodGhpcy5fY29tcG9zaXRlVHlwZSA9PT0gQ29tcG9zaXRlVHlw
ZXMuU3RhdGVsZXNzRnVuY3Rpb25hbCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAg
IHJldHVybiBpbnN0O1xuICB9LFxuXG4gIC8vIFN0dWJcbiAgX2luc3RhbnRpYXRlUmVhY3RDb21w
b25lbnQ6IG51bGxcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RDb21wb3NpdGVDb21wb25l
bnQ7XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34v
cmVhY3QtZG9tL2xpYi9SZWFjdENvbXBvc2l0ZUNvbXBvbmVudC5qc1xuICoqIG1vZHVsZSBpZCA9
IDEzNlxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAx
My1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4g
KiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5z
ZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2Yg
dGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0
cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3Rvcnku
XG4gKlxuICovXG5cbi8qIGdsb2JhbHMgX19SRUFDVF9ERVZUT09MU19HTE9CQUxfSE9PS19fKi9c
blxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgUmVhY3RET01Db21wb25lbnRUcmVlID0gcmVxdWlyZSgn
Li9SZWFjdERPTUNvbXBvbmVudFRyZWUnKTtcbnZhciBSZWFjdERlZmF1bHRJbmplY3Rpb24gPSBy
ZXF1aXJlKCcuL1JlYWN0RGVmYXVsdEluamVjdGlvbicpO1xudmFyIFJlYWN0TW91bnQgPSByZXF1
aXJlKCcuL1JlYWN0TW91bnQnKTtcbnZhciBSZWFjdFJlY29uY2lsZXIgPSByZXF1aXJlKCcuL1Jl
YWN0UmVjb25jaWxlcicpO1xudmFyIFJlYWN0VXBkYXRlcyA9IHJlcXVpcmUoJy4vUmVhY3RVcGRh
dGVzJyk7XG52YXIgUmVhY3RWZXJzaW9uID0gcmVxdWlyZSgnLi9SZWFjdFZlcnNpb24nKTtcblxu
dmFyIGZpbmRET01Ob2RlID0gcmVxdWlyZSgnLi9maW5kRE9NTm9kZScpO1xudmFyIGdldEhvc3RD
b21wb25lbnRGcm9tQ29tcG9zaXRlID0gcmVxdWlyZSgnLi9nZXRIb3N0Q29tcG9uZW50RnJvbUNv
bXBvc2l0ZScpO1xudmFyIHJlbmRlclN1YnRyZWVJbnRvQ29udGFpbmVyID0gcmVxdWlyZSgnLi9y
ZW5kZXJTdWJ0cmVlSW50b0NvbnRhaW5lcicpO1xudmFyIHdhcm5pbmcgPSByZXF1aXJlKCdmYmpz
L2xpYi93YXJuaW5nJyk7XG5cblJlYWN0RGVmYXVsdEluamVjdGlvbi5pbmplY3QoKTtcblxudmFy
IFJlYWN0RE9NID0ge1xuICBmaW5kRE9NTm9kZTogZmluZERPTU5vZGUsXG4gIHJlbmRlcjogUmVh
Y3RNb3VudC5yZW5kZXIsXG4gIHVubW91bnRDb21wb25lbnRBdE5vZGU6IFJlYWN0TW91bnQudW5t
b3VudENvbXBvbmVudEF0Tm9kZSxcbiAgdmVyc2lvbjogUmVhY3RWZXJzaW9uLFxuXG4gIC8qIGVz
bGludC1kaXNhYmxlIGNhbWVsY2FzZSAqL1xuICB1bnN0YWJsZV9iYXRjaGVkVXBkYXRlczogUmVh
Y3RVcGRhdGVzLmJhdGNoZWRVcGRhdGVzLFxuICB1bnN0YWJsZV9yZW5kZXJTdWJ0cmVlSW50b0Nv
bnRhaW5lcjogcmVuZGVyU3VidHJlZUludG9Db250YWluZXJcbiAgLyogZXNsaW50LWVuYWJsZSBj
YW1lbGNhc2UgKi9cbn07XG5cbi8vIEluamVjdCB0aGUgcnVudGltZSBpbnRvIGEgZGV2dG9vbHMg
Z2xvYmFsIGhvb2sgcmVnYXJkbGVzcyBvZiBicm93c2VyLlxuLy8gQWxsb3dzIGZvciBkZWJ1Z2dp
bmcgd2hlbiB0aGUgaG9vayBpcyBpbmplY3RlZCBvbiB0aGUgcGFnZS5cbmlmICh0eXBlb2YgX19S
RUFDVF9ERVZUT09MU19HTE9CQUxfSE9PS19fICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2YgX19S
RUFDVF9ERVZUT09MU19HTE9CQUxfSE9PS19fLmluamVjdCA9PT0gJ2Z1bmN0aW9uJykge1xuICBf
X1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX18uaW5qZWN0KHtcbiAgICBDb21wb25lbnRUcmVl
OiB7XG4gICAgICBnZXRDbG9zZXN0SW5zdGFuY2VGcm9tTm9kZTogUmVhY3RET01Db21wb25lbnRU
cmVlLmdldENsb3Nlc3RJbnN0YW5jZUZyb21Ob2RlLFxuICAgICAgZ2V0Tm9kZUZyb21JbnN0YW5j
ZTogZnVuY3Rpb24gKGluc3QpIHtcbiAgICAgICAgLy8gaW5zdCBpcyBhbiBpbnRlcm5hbCBpbnN0
YW5jZSAoYnV0IGNvdWxkIGJlIGEgY29tcG9zaXRlKVxuICAgICAgICBpZiAoaW5zdC5fcmVuZGVy
ZWRDb21wb25lbnQpIHtcbiAgICAgICAgICBpbnN0ID0gZ2V0SG9zdENvbXBvbmVudEZyb21Db21w
b3NpdGUoaW5zdCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGluc3QpIHtcbiAgICAgICAgICBy
ZXR1cm4gUmVhY3RET01Db21wb25lbnRUcmVlLmdldE5vZGVGcm9tSW5zdGFuY2UoaW5zdCk7XG4g
ICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAg
IH1cbiAgICB9LFxuICAgIE1vdW50OiBSZWFjdE1vdW50LFxuICAgIFJlY29uY2lsZXI6IFJlYWN0
UmVjb25jaWxlclxuICB9KTtcbn1cblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJv
ZHVjdGlvbicpIHtcbiAgdmFyIEV4ZWN1dGlvbkVudmlyb25tZW50ID0gcmVxdWlyZSgnZmJqcy9s
aWIvRXhlY3V0aW9uRW52aXJvbm1lbnQnKTtcbiAgaWYgKEV4ZWN1dGlvbkVudmlyb25tZW50LmNh
blVzZURPTSAmJiB3aW5kb3cudG9wID09PSB3aW5kb3cuc2VsZikge1xuICAgIC8vIEZpcnN0IGNo
ZWNrIGlmIGRldnRvb2xzIGlzIG5vdCBpbnN0YWxsZWRcbiAgICBpZiAodHlwZW9mIF9fUkVBQ1Rf
REVWVE9PTFNfR0xPQkFMX0hPT0tfXyA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIC8vIElmIHdl
J3JlIGluIENocm9tZSBvciBGaXJlZm94LCBwcm92aWRlIGEgZG93bmxvYWQgbGluayBpZiBub3Qg
aW5zdGFsbGVkLlxuICAgICAgaWYgKG5hdmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZignQ2hyb21l
JykgPiAtMSAmJiBuYXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YoJ0VkZ2UnKSA9PT0gLTEgfHwg
bmF2aWdhdG9yLnVzZXJBZ2VudC5pbmRleE9mKCdGaXJlZm94JykgPiAtMSkge1xuICAgICAgICAv
LyBGaXJlZm94IGRvZXMgbm90IGhhdmUgdGhlIGlzc3VlIHdpdGggZGV2dG9vbHMgbG9hZGVkIG92
ZXIgZmlsZTovL1xuICAgICAgICB2YXIgc2hvd0ZpbGVVcmxNZXNzYWdlID0gd2luZG93LmxvY2F0
aW9uLnByb3RvY29sLmluZGV4T2YoJ2h0dHAnKSA9PT0gLTEgJiYgbmF2aWdhdG9yLnVzZXJBZ2Vu
dC5pbmRleE9mKCdGaXJlZm94JykgPT09IC0xO1xuICAgICAgICBjb25zb2xlLmRlYnVnKCdEb3du
bG9hZCB0aGUgUmVhY3QgRGV2VG9vbHMgJyArIChzaG93RmlsZVVybE1lc3NhZ2UgPyAnYW5kIHVz
ZSBhbiBIVFRQIHNlcnZlciAoaW5zdGVhZCBvZiBhIGZpbGU6IFVSTCkgJyA6ICcnKSArICdmb3Ig
YSBiZXR0ZXIgZGV2ZWxvcG1lbnQgZXhwZXJpZW5jZTogJyArICdodHRwczovL2ZiLm1lL3JlYWN0
LWRldnRvb2xzJyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIHRlc3RGdW5jID0gZnVuY3Rp
b24gdGVzdEZuKCkge307XG4gICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9u
JyA/IHdhcm5pbmcoKHRlc3RGdW5jLm5hbWUgfHwgdGVzdEZ1bmMudG9TdHJpbmcoKSkuaW5kZXhP
ZigndGVzdEZuJykgIT09IC0xLCBcIkl0IGxvb2tzIGxpa2UgeW91J3JlIHVzaW5nIGEgbWluaWZp
ZWQgY29weSBvZiB0aGUgZGV2ZWxvcG1lbnQgYnVpbGQgXCIgKyAnb2YgUmVhY3QuIFdoZW4gZGVw
bG95aW5nIFJlYWN0IGFwcHMgdG8gcHJvZHVjdGlvbiwgbWFrZSBzdXJlIHRvIHVzZSAnICsgJ3Ro
ZSBwcm9kdWN0aW9uIGJ1aWxkIHdoaWNoIHNraXBzIGRldmVsb3BtZW50IHdhcm5pbmdzIGFuZCBp
cyBmYXN0ZXIuICcgKyAnU2VlIGh0dHBzOi8vZmIubWUvcmVhY3QtbWluaWZpY2F0aW9uIGZvciBt
b3JlIGRldGFpbHMuJykgOiB2b2lkIDA7XG5cbiAgICAvLyBJZiB3ZSdyZSBpbiBJRTgsIGNoZWNr
IHRvIHNlZSBpZiB3ZSBhcmUgaW4gY29tcGF0aWJpbGl0eSBtb2RlIGFuZCBwcm92aWRlXG4gICAg
Ly8gaW5mb3JtYXRpb24gb24gcHJldmVudGluZyBjb21wYXRpYmlsaXR5IG1vZGVcbiAgICB2YXIg
aWVDb21wYXRpYmlsaXR5TW9kZSA9IGRvY3VtZW50LmRvY3VtZW50TW9kZSAmJiBkb2N1bWVudC5k
b2N1bWVudE1vZGUgPCA4O1xuXG4gICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0
aW9uJyA/IHdhcm5pbmcoIWllQ29tcGF0aWJpbGl0eU1vZGUsICdJbnRlcm5ldCBFeHBsb3JlciBp
cyBydW5uaW5nIGluIGNvbXBhdGliaWxpdHkgbW9kZTsgcGxlYXNlIGFkZCB0aGUgJyArICdmb2xs
b3dpbmcgdGFnIHRvIHlvdXIgSFRNTCB0byBwcmV2ZW50IHRoaXMgZnJvbSBoYXBwZW5pbmc6ICcg
KyAnPG1ldGEgaHR0cC1lcXVpdj1cIlgtVUEtQ29tcGF0aWJsZVwiIGNvbnRlbnQ9XCJJRT1lZGdl
XCIgLz4nKSA6IHZvaWQgMDtcblxuICAgIHZhciBleHBlY3RlZEZlYXR1cmVzID0gW1xuICAgIC8v
IHNoaW1zXG4gICAgQXJyYXkuaXNBcnJheSwgQXJyYXkucHJvdG90eXBlLmV2ZXJ5LCBBcnJheS5w
cm90b3R5cGUuZm9yRWFjaCwgQXJyYXkucHJvdG90eXBlLmluZGV4T2YsIEFycmF5LnByb3RvdHlw
ZS5tYXAsIERhdGUubm93LCBGdW5jdGlvbi5wcm90b3R5cGUuYmluZCwgT2JqZWN0LmtleXMsIFN0
cmluZy5wcm90b3R5cGUudHJpbV07XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGV4cGVjdGVk
RmVhdHVyZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmICghZXhwZWN0ZWRGZWF0dXJlc1tpXSkg
e1xuICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2Fybmlu
ZyhmYWxzZSwgJ09uZSBvciBtb3JlIEVTNSBzaGltcyBleHBlY3RlZCBieSBSZWFjdCBhcmUgbm90
IGF2YWlsYWJsZTogJyArICdodHRwczovL2ZiLm1lL3JlYWN0LXdhcm5pbmctcG9seWZpbGxzJykg
OiB2b2lkIDA7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5pZiAo
cHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICB2YXIgUmVhY3RJbnN0
cnVtZW50YXRpb24gPSByZXF1aXJlKCcuL1JlYWN0SW5zdHJ1bWVudGF0aW9uJyk7XG4gIHZhciBS
ZWFjdERPTVVua25vd25Qcm9wZXJ0eUhvb2sgPSByZXF1aXJlKCcuL1JlYWN0RE9NVW5rbm93blBy
b3BlcnR5SG9vaycpO1xuICB2YXIgUmVhY3RET01OdWxsSW5wdXRWYWx1ZVByb3BIb29rID0gcmVx
dWlyZSgnLi9SZWFjdERPTU51bGxJbnB1dFZhbHVlUHJvcEhvb2snKTtcbiAgdmFyIFJlYWN0RE9N
SW52YWxpZEFSSUFIb29rID0gcmVxdWlyZSgnLi9SZWFjdERPTUludmFsaWRBUklBSG9vaycpO1xu
XG4gIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5hZGRIb29rKFJlYWN0RE9NVW5rbm93
blByb3BlcnR5SG9vayk7XG4gIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5hZGRIb29r
KFJlYWN0RE9NTnVsbElucHV0VmFsdWVQcm9wSG9vayk7XG4gIFJlYWN0SW5zdHJ1bWVudGF0aW9u
LmRlYnVnVG9vbC5hZGRIb29rKFJlYWN0RE9NSW52YWxpZEFSSUFIb29rKTtcbn1cblxubW9kdWxl
LmV4cG9ydHMgPSBSZWFjdERPTTtcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNL
IEZPT1RFUlxuICoqIC4vfi9yZWFjdC1kb20vbGliL1JlYWN0RE9NLmpzXG4gKiogbW9kdWxlIGlk
ID0gMTM3XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENvcHlyaWdodCAy
MDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpc
biAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNl
bnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBv
ZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmln
aHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9y
eS5cbiAqXG4gKi9cblxuLyogZ2xvYmFsIGhhc093blByb3BlcnR5OnRydWUgKi9cblxuJ3VzZSBz
dHJpY3QnO1xuXG52YXIgX3Byb2RJbnZhcmlhbnQgPSByZXF1aXJlKCcuL3JlYWN0UHJvZEludmFy
aWFudCcpLFxuICAgIF9hc3NpZ24gPSByZXF1aXJlKCdvYmplY3QtYXNzaWduJyk7XG5cbnZhciBB
dXRvRm9jdXNVdGlscyA9IHJlcXVpcmUoJy4vQXV0b0ZvY3VzVXRpbHMnKTtcbnZhciBDU1NQcm9w
ZXJ0eU9wZXJhdGlvbnMgPSByZXF1aXJlKCcuL0NTU1Byb3BlcnR5T3BlcmF0aW9ucycpO1xudmFy
IERPTUxhenlUcmVlID0gcmVxdWlyZSgnLi9ET01MYXp5VHJlZScpO1xudmFyIERPTU5hbWVzcGFj
ZXMgPSByZXF1aXJlKCcuL0RPTU5hbWVzcGFjZXMnKTtcbnZhciBET01Qcm9wZXJ0eSA9IHJlcXVp
cmUoJy4vRE9NUHJvcGVydHknKTtcbnZhciBET01Qcm9wZXJ0eU9wZXJhdGlvbnMgPSByZXF1aXJl
KCcuL0RPTVByb3BlcnR5T3BlcmF0aW9ucycpO1xudmFyIEV2ZW50UGx1Z2luSHViID0gcmVxdWly
ZSgnLi9FdmVudFBsdWdpbkh1YicpO1xudmFyIEV2ZW50UGx1Z2luUmVnaXN0cnkgPSByZXF1aXJl
KCcuL0V2ZW50UGx1Z2luUmVnaXN0cnknKTtcbnZhciBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIg
PSByZXF1aXJlKCcuL1JlYWN0QnJvd3NlckV2ZW50RW1pdHRlcicpO1xudmFyIFJlYWN0RE9NQ29t
cG9uZW50RmxhZ3MgPSByZXF1aXJlKCcuL1JlYWN0RE9NQ29tcG9uZW50RmxhZ3MnKTtcbnZhciBS
ZWFjdERPTUNvbXBvbmVudFRyZWUgPSByZXF1aXJlKCcuL1JlYWN0RE9NQ29tcG9uZW50VHJlZScp
O1xudmFyIFJlYWN0RE9NSW5wdXQgPSByZXF1aXJlKCcuL1JlYWN0RE9NSW5wdXQnKTtcbnZhciBS
ZWFjdERPTU9wdGlvbiA9IHJlcXVpcmUoJy4vUmVhY3RET01PcHRpb24nKTtcbnZhciBSZWFjdERP
TVNlbGVjdCA9IHJlcXVpcmUoJy4vUmVhY3RET01TZWxlY3QnKTtcbnZhciBSZWFjdERPTVRleHRh
cmVhID0gcmVxdWlyZSgnLi9SZWFjdERPTVRleHRhcmVhJyk7XG52YXIgUmVhY3RJbnN0cnVtZW50
YXRpb24gPSByZXF1aXJlKCcuL1JlYWN0SW5zdHJ1bWVudGF0aW9uJyk7XG52YXIgUmVhY3RNdWx0
aUNoaWxkID0gcmVxdWlyZSgnLi9SZWFjdE11bHRpQ2hpbGQnKTtcbnZhciBSZWFjdFNlcnZlclJl
bmRlcmluZ1RyYW5zYWN0aW9uID0gcmVxdWlyZSgnLi9SZWFjdFNlcnZlclJlbmRlcmluZ1RyYW5z
YWN0aW9uJyk7XG5cbnZhciBlbXB0eUZ1bmN0aW9uID0gcmVxdWlyZSgnZmJqcy9saWIvZW1wdHlG
dW5jdGlvbicpO1xudmFyIGVzY2FwZVRleHRDb250ZW50Rm9yQnJvd3NlciA9IHJlcXVpcmUoJy4v
ZXNjYXBlVGV4dENvbnRlbnRGb3JCcm93c2VyJyk7XG52YXIgaW52YXJpYW50ID0gcmVxdWlyZSgn
ZmJqcy9saWIvaW52YXJpYW50Jyk7XG52YXIgaXNFdmVudFN1cHBvcnRlZCA9IHJlcXVpcmUoJy4v
aXNFdmVudFN1cHBvcnRlZCcpO1xudmFyIHNoYWxsb3dFcXVhbCA9IHJlcXVpcmUoJ2ZianMvbGli
L3NoYWxsb3dFcXVhbCcpO1xudmFyIGlucHV0VmFsdWVUcmFja2luZyA9IHJlcXVpcmUoJy4vaW5w
dXRWYWx1ZVRyYWNraW5nJyk7XG52YXIgdmFsaWRhdGVET01OZXN0aW5nID0gcmVxdWlyZSgnLi92
YWxpZGF0ZURPTU5lc3RpbmcnKTtcbnZhciB3YXJuaW5nID0gcmVxdWlyZSgnZmJqcy9saWIvd2Fy
bmluZycpO1xuXG52YXIgRmxhZ3MgPSBSZWFjdERPTUNvbXBvbmVudEZsYWdzO1xudmFyIGRlbGV0
ZUxpc3RlbmVyID0gRXZlbnRQbHVnaW5IdWIuZGVsZXRlTGlzdGVuZXI7XG52YXIgZ2V0Tm9kZSA9
IFJlYWN0RE9NQ29tcG9uZW50VHJlZS5nZXROb2RlRnJvbUluc3RhbmNlO1xudmFyIGxpc3RlblRv
ID0gUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLmxpc3RlblRvO1xudmFyIHJlZ2lzdHJhdGlvbk5h
bWVNb2R1bGVzID0gRXZlbnRQbHVnaW5SZWdpc3RyeS5yZWdpc3RyYXRpb25OYW1lTW9kdWxlcztc
blxuLy8gRm9yIHF1aWNrbHkgbWF0Y2hpbmcgY2hpbGRyZW4gdHlwZSwgdG8gdGVzdCBpZiBjYW4g
YmUgdHJlYXRlZCBhcyBjb250ZW50LlxudmFyIENPTlRFTlRfVFlQRVMgPSB7IHN0cmluZzogdHJ1
ZSwgbnVtYmVyOiB0cnVlIH07XG5cbnZhciBTVFlMRSA9ICdzdHlsZSc7XG52YXIgSFRNTCA9ICdf
X2h0bWwnO1xudmFyIFJFU0VSVkVEX1BST1BTID0ge1xuICBjaGlsZHJlbjogbnVsbCxcbiAgZGFu
Z2Vyb3VzbHlTZXRJbm5lckhUTUw6IG51bGwsXG4gIHN1cHByZXNzQ29udGVudEVkaXRhYmxlV2Fy
bmluZzogbnVsbFxufTtcblxuLy8gTm9kZSB0eXBlIGZvciBkb2N1bWVudCBmcmFnbWVudHMgKE5v
ZGUuRE9DVU1FTlRfRlJBR01FTlRfTk9ERSkuXG52YXIgRE9DX0ZSQUdNRU5UX1RZUEUgPSAxMTtc
blxuZnVuY3Rpb24gZ2V0RGVjbGFyYXRpb25FcnJvckFkZGVuZHVtKGludGVybmFsSW5zdGFuY2Up
IHtcbiAgaWYgKGludGVybmFsSW5zdGFuY2UpIHtcbiAgICB2YXIgb3duZXIgPSBpbnRlcm5hbElu
c3RhbmNlLl9jdXJyZW50RWxlbWVudC5fb3duZXIgfHwgbnVsbDtcbiAgICBpZiAob3duZXIpIHtc
biAgICAgIHZhciBuYW1lID0gb3duZXIuZ2V0TmFtZSgpO1xuICAgICAgaWYgKG5hbWUpIHtcbiAg
ICAgICAgcmV0dXJuICcgVGhpcyBET00gbm9kZSB3YXMgcmVuZGVyZWQgYnkgYCcgKyBuYW1lICsg
J2AuJztcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuICcnO1xufVxuXG5mdW5jdGlvbiBm
cmllbmRseVN0cmluZ2lmeShvYmopIHtcbiAgaWYgKHR5cGVvZiBvYmogPT09ICdvYmplY3QnKSB7
XG4gICAgaWYgKEFycmF5LmlzQXJyYXkob2JqKSkge1xuICAgICAgcmV0dXJuICdbJyArIG9iai5t
YXAoZnJpZW5kbHlTdHJpbmdpZnkpLmpvaW4oJywgJykgKyAnXSc7XG4gICAgfSBlbHNlIHtcbiAg
ICAgIHZhciBwYWlycyA9IFtdO1xuICAgICAgZm9yICh2YXIga2V5IGluIG9iaikge1xuICAgICAg
ICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwga2V5KSkge1xu
ICAgICAgICAgIHZhciBrZXlFc2NhcGVkID0gL15bYS16JF9dW1xcdyRfXSokL2kudGVzdChrZXkp
ID8ga2V5IDogSlNPTi5zdHJpbmdpZnkoa2V5KTtcbiAgICAgICAgICBwYWlycy5wdXNoKGtleUVz
Y2FwZWQgKyAnOiAnICsgZnJpZW5kbHlTdHJpbmdpZnkob2JqW2tleV0pKTtcbiAgICAgICAgfVxu
ICAgICAgfVxuICAgICAgcmV0dXJuICd7JyArIHBhaXJzLmpvaW4oJywgJykgKyAnfSc7XG4gICAg
fVxuICB9IGVsc2UgaWYgKHR5cGVvZiBvYmogPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIEpT
T04uc3RyaW5naWZ5KG9iaik7XG4gIH0gZWxzZSBpZiAodHlwZW9mIG9iaiA9PT0gJ2Z1bmN0aW9u
Jykge1xuICAgIHJldHVybiAnW2Z1bmN0aW9uIG9iamVjdF0nO1xuICB9XG4gIC8vIERpZmZlcnMg
ZnJvbSBKU09OLnN0cmluZ2lmeSBpbiB0aGF0IHVuZGVmaW5lZCBiZWNhdXNlIHVuZGVmaW5lZCBh
bmQgdGhhdFxuICAvLyBpbmYgYW5kIG5hbiBkb24ndCBiZWNvbWUgbnVsbFxuICByZXR1cm4gU3Ry
aW5nKG9iaik7XG59XG5cbnZhciBzdHlsZU11dGF0aW9uV2FybmluZyA9IHt9O1xuXG5mdW5jdGlv
biBjaGVja0FuZFdhcm5Gb3JNdXRhdGVkU3R5bGUoc3R5bGUxLCBzdHlsZTIsIGNvbXBvbmVudCkg
e1xuICBpZiAoc3R5bGUxID09IG51bGwgfHwgc3R5bGUyID09IG51bGwpIHtcbiAgICByZXR1cm47
XG4gIH1cbiAgaWYgKHNoYWxsb3dFcXVhbChzdHlsZTEsIHN0eWxlMikpIHtcbiAgICByZXR1cm47
XG4gIH1cblxuICB2YXIgY29tcG9uZW50TmFtZSA9IGNvbXBvbmVudC5fdGFnO1xuICB2YXIgb3du
ZXIgPSBjb21wb25lbnQuX2N1cnJlbnRFbGVtZW50Ll9vd25lcjtcbiAgdmFyIG93bmVyTmFtZTtc
biAgaWYgKG93bmVyKSB7XG4gICAgb3duZXJOYW1lID0gb3duZXIuZ2V0TmFtZSgpO1xuICB9XG5c
biAgdmFyIGhhc2ggPSBvd25lck5hbWUgKyAnfCcgKyBjb21wb25lbnROYW1lO1xuXG4gIGlmIChz
dHlsZU11dGF0aW9uV2FybmluZy5oYXNPd25Qcm9wZXJ0eShoYXNoKSkge1xuICAgIHJldHVybjtc
biAgfVxuXG4gIHN0eWxlTXV0YXRpb25XYXJuaW5nW2hhc2hdID0gdHJ1ZTtcblxuICBwcm9jZXNz
LmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ2Alc2Agd2Fz
IHBhc3NlZCBhIHN0eWxlIG9iamVjdCB0aGF0IGhhcyBwcmV2aW91c2x5IGJlZW4gbXV0YXRlZC4g
JyArICdNdXRhdGluZyBgc3R5bGVgIGlzIGRlcHJlY2F0ZWQuIENvbnNpZGVyIGNsb25pbmcgaXQg
YmVmb3JlaGFuZC4gQ2hlY2sgJyArICd0aGUgYHJlbmRlcmAgJXMuIFByZXZpb3VzIHN0eWxlOiAl
cy4gTXV0YXRlZCBzdHlsZTogJXMuJywgY29tcG9uZW50TmFtZSwgb3duZXIgPyAnb2YgYCcgKyBv
d25lck5hbWUgKyAnYCcgOiAndXNpbmcgPCcgKyBjb21wb25lbnROYW1lICsgJz4nLCBmcmllbmRs
eVN0cmluZ2lmeShzdHlsZTEpLCBmcmllbmRseVN0cmluZ2lmeShzdHlsZTIpKSA6IHZvaWQgMDtc
bn1cblxuLyoqXG4gKiBAcGFyYW0ge29iamVjdH0gY29tcG9uZW50XG4gKiBAcGFyYW0gez9vYmpl
Y3R9IHByb3BzXG4gKi9cbmZ1bmN0aW9uIGFzc2VydFZhbGlkUHJvcHMoY29tcG9uZW50LCBwcm9w
cykge1xuICBpZiAoIXByb3BzKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIC8vIE5vdGUgdGhlIHVz
ZSBvZiBgPT1gIHdoaWNoIGNoZWNrcyBmb3IgbnVsbCBvciB1bmRlZmluZWQuXG4gIGlmICh2b2lk
RWxlbWVudFRhZ3NbY29tcG9uZW50Ll90YWddKSB7XG4gICAgIShwcm9wcy5jaGlsZHJlbiA9PSBu
dWxsICYmIHByb3BzLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MID09IG51bGwpID8gcHJvY2Vzcy5l
bnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJyVzIGlzIGEg
dm9pZCBlbGVtZW50IHRhZyBhbmQgbXVzdCBuZWl0aGVyIGhhdmUgYGNoaWxkcmVuYCBub3IgdXNl
IGBkYW5nZXJvdXNseVNldElubmVySFRNTGAuJXMnLCBjb21wb25lbnQuX3RhZywgY29tcG9uZW50
Ll9jdXJyZW50RWxlbWVudC5fb3duZXIgPyAnIENoZWNrIHRoZSByZW5kZXIgbWV0aG9kIG9mICcg
KyBjb21wb25lbnQuX2N1cnJlbnRFbGVtZW50Ll9vd25lci5nZXROYW1lKCkgKyAnLicgOiAnJykg
OiBfcHJvZEludmFyaWFudCgnMTM3JywgY29tcG9uZW50Ll90YWcsIGNvbXBvbmVudC5fY3VycmVu
dEVsZW1lbnQuX293bmVyID8gJyBDaGVjayB0aGUgcmVuZGVyIG1ldGhvZCBvZiAnICsgY29tcG9u
ZW50Ll9jdXJyZW50RWxlbWVudC5fb3duZXIuZ2V0TmFtZSgpICsgJy4nIDogJycpIDogdm9pZCAw
O1xuICB9XG4gIGlmIChwcm9wcy5kYW5nZXJvdXNseVNldElubmVySFRNTCAhPSBudWxsKSB7XG4g
ICAgIShwcm9wcy5jaGlsZHJlbiA9PSBudWxsKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAn
cHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdDYW4gb25seSBzZXQgb25lIG9mIGBjaGls
ZHJlbmAgb3IgYHByb3BzLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MYC4nKSA6IF9wcm9kSW52YXJp
YW50KCc2MCcpIDogdm9pZCAwO1xuICAgICEodHlwZW9mIHByb3BzLmRhbmdlcm91c2x5U2V0SW5u
ZXJIVE1MID09PSAnb2JqZWN0JyAmJiBIVE1MIGluIHByb3BzLmRhbmdlcm91c2x5U2V0SW5uZXJI
VE1MKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQo
ZmFsc2UsICdgcHJvcHMuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUxgIG11c3QgYmUgaW4gdGhlIGZv
cm0gYHtfX2h0bWw6IC4uLn1gLiBQbGVhc2UgdmlzaXQgaHR0cHM6Ly9mYi5tZS9yZWFjdC1pbnZh
cmlhbnQtZGFuZ2Vyb3VzbHktc2V0LWlubmVyLWh0bWwgZm9yIG1vcmUgaW5mb3JtYXRpb24uJykg
OiBfcHJvZEludmFyaWFudCgnNjEnKSA6IHZvaWQgMDtcbiAgfVxuICBpZiAocHJvY2Vzcy5lbnYu
Tk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9
PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKHByb3BzLmlubmVySFRNTCA9PSBudWxsLCAnRGlyZWN0
bHkgc2V0dGluZyBwcm9wZXJ0eSBgaW5uZXJIVE1MYCBpcyBub3QgcGVybWl0dGVkLiAnICsgJ0Zv
ciBtb3JlIGluZm9ybWF0aW9uLCBsb29rdXAgZG9jdW1lbnRhdGlvbiBvbiBgZGFuZ2Vyb3VzbHlT
ZXRJbm5lckhUTUxgLicpIDogdm9pZCAwO1xuICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAn
cHJvZHVjdGlvbicgPyB3YXJuaW5nKHByb3BzLnN1cHByZXNzQ29udGVudEVkaXRhYmxlV2Fybmlu
ZyB8fCAhcHJvcHMuY29udGVudEVkaXRhYmxlIHx8IHByb3BzLmNoaWxkcmVuID09IG51bGwsICdB
IGNvbXBvbmVudCBpcyBgY29udGVudEVkaXRhYmxlYCBhbmQgY29udGFpbnMgYGNoaWxkcmVuYCBt
YW5hZ2VkIGJ5ICcgKyAnUmVhY3QuIEl0IGlzIG5vdyB5b3VyIHJlc3BvbnNpYmlsaXR5IHRvIGd1
YXJhbnRlZSB0aGF0IG5vbmUgb2YgJyArICd0aG9zZSBub2RlcyBhcmUgdW5leHBlY3RlZGx5IG1v
ZGlmaWVkIG9yIGR1cGxpY2F0ZWQuIFRoaXMgaXMgJyArICdwcm9iYWJseSBub3QgaW50ZW50aW9u
YWwuJykgOiB2b2lkIDA7XG4gICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9u
JyA/IHdhcm5pbmcocHJvcHMub25Gb2N1c0luID09IG51bGwgJiYgcHJvcHMub25Gb2N1c091dCA9
PSBudWxsLCAnUmVhY3QgdXNlcyBvbkZvY3VzIGFuZCBvbkJsdXIgaW5zdGVhZCBvZiBvbkZvY3Vz
SW4gYW5kIG9uRm9jdXNPdXQuICcgKyAnQWxsIFJlYWN0IGV2ZW50cyBhcmUgbm9ybWFsaXplZCB0
byBidWJibGUsIHNvIG9uRm9jdXNJbiBhbmQgb25Gb2N1c091dCAnICsgJ2FyZSBub3QgbmVlZGVk
L3N1cHBvcnRlZCBieSBSZWFjdC4nKSA6IHZvaWQgMDtcbiAgfVxuICAhKHByb3BzLnN0eWxlID09
IG51bGwgfHwgdHlwZW9mIHByb3BzLnN0eWxlID09PSAnb2JqZWN0JykgPyBwcm9jZXNzLmVudi5O
T0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnVGhlIGBzdHlsZWAg
cHJvcCBleHBlY3RzIGEgbWFwcGluZyBmcm9tIHN0eWxlIHByb3BlcnRpZXMgdG8gdmFsdWVzLCBu
b3QgYSBzdHJpbmcuIEZvciBleGFtcGxlLCBzdHlsZT17e21hcmdpblJpZ2h0OiBzcGFjaW5nICsg
XFwnZW1cXCd9fSB3aGVuIHVzaW5nIEpTWC4lcycsIGdldERlY2xhcmF0aW9uRXJyb3JBZGRlbmR1
bShjb21wb25lbnQpKSA6IF9wcm9kSW52YXJpYW50KCc2MicsIGdldERlY2xhcmF0aW9uRXJyb3JB
ZGRlbmR1bShjb21wb25lbnQpKSA6IHZvaWQgMDtcbn1cblxuZnVuY3Rpb24gZW5xdWV1ZVB1dExp
c3RlbmVyKGluc3QsIHJlZ2lzdHJhdGlvbk5hbWUsIGxpc3RlbmVyLCB0cmFuc2FjdGlvbikge1xu
ICBpZiAodHJhbnNhY3Rpb24gaW5zdGFuY2VvZiBSZWFjdFNlcnZlclJlbmRlcmluZ1RyYW5zYWN0
aW9uKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0g
J3Byb2R1Y3Rpb24nKSB7XG4gICAgLy8gSUU4IGhhcyBubyBBUEkgZm9yIGV2ZW50IGNhcHR1cmlu
ZyBhbmQgdGhlIGBvblNjcm9sbGAgZXZlbnQgZG9lc24ndFxuICAgIC8vIGJ1YmJsZS5cbiAgICBw
cm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhyZWdpc3RyYXRp
b25OYW1lICE9PSAnb25TY3JvbGwnIHx8IGlzRXZlbnRTdXBwb3J0ZWQoJ3Njcm9sbCcsIHRydWUp
LCBcIlRoaXMgYnJvd3NlciBkb2Vzbid0IHN1cHBvcnQgdGhlIGBvblNjcm9sbGAgZXZlbnRcIikg
OiB2b2lkIDA7XG4gIH1cbiAgdmFyIGNvbnRhaW5lckluZm8gPSBpbnN0Ll9ob3N0Q29udGFpbmVy
SW5mbztcbiAgdmFyIGlzRG9jdW1lbnRGcmFnbWVudCA9IGNvbnRhaW5lckluZm8uX25vZGUgJiYg
Y29udGFpbmVySW5mby5fbm9kZS5ub2RlVHlwZSA9PT0gRE9DX0ZSQUdNRU5UX1RZUEU7XG4gIHZh
ciBkb2MgPSBpc0RvY3VtZW50RnJhZ21lbnQgPyBjb250YWluZXJJbmZvLl9ub2RlIDogY29udGFp
bmVySW5mby5fb3duZXJEb2N1bWVudDtcbiAgbGlzdGVuVG8ocmVnaXN0cmF0aW9uTmFtZSwgZG9j
KTtcbiAgdHJhbnNhY3Rpb24uZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1ZShwdXRMaXN0ZW5l
ciwge1xuICAgIGluc3Q6IGluc3QsXG4gICAgcmVnaXN0cmF0aW9uTmFtZTogcmVnaXN0cmF0aW9u
TmFtZSxcbiAgICBsaXN0ZW5lcjogbGlzdGVuZXJcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHB1dExp
c3RlbmVyKCkge1xuICB2YXIgbGlzdGVuZXJUb1B1dCA9IHRoaXM7XG4gIEV2ZW50UGx1Z2luSHVi
LnB1dExpc3RlbmVyKGxpc3RlbmVyVG9QdXQuaW5zdCwgbGlzdGVuZXJUb1B1dC5yZWdpc3RyYXRp
b25OYW1lLCBsaXN0ZW5lclRvUHV0Lmxpc3RlbmVyKTtcbn1cblxuZnVuY3Rpb24gaW5wdXRQb3N0
TW91bnQoKSB7XG4gIHZhciBpbnN0ID0gdGhpcztcbiAgUmVhY3RET01JbnB1dC5wb3N0TW91bnRX
cmFwcGVyKGluc3QpO1xufVxuXG5mdW5jdGlvbiB0ZXh0YXJlYVBvc3RNb3VudCgpIHtcbiAgdmFy
IGluc3QgPSB0aGlzO1xuICBSZWFjdERPTVRleHRhcmVhLnBvc3RNb3VudFdyYXBwZXIoaW5zdCk7
XG59XG5cbmZ1bmN0aW9uIG9wdGlvblBvc3RNb3VudCgpIHtcbiAgdmFyIGluc3QgPSB0aGlzO1xu
ICBSZWFjdERPTU9wdGlvbi5wb3N0TW91bnRXcmFwcGVyKGluc3QpO1xufVxuXG52YXIgc2V0QW5k
VmFsaWRhdGVDb250ZW50Q2hpbGREZXYgPSBlbXB0eUZ1bmN0aW9uO1xuaWYgKHByb2Nlc3MuZW52
Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgc2V0QW5kVmFsaWRhdGVDb250ZW50Q2hp
bGREZXYgPSBmdW5jdGlvbiAoY29udGVudCkge1xuICAgIHZhciBoYXNFeGlzdGluZ0NvbnRlbnQg
PSB0aGlzLl9jb250ZW50RGVidWdJRCAhPSBudWxsO1xuICAgIHZhciBkZWJ1Z0lEID0gdGhpcy5f
ZGVidWdJRDtcbiAgICAvLyBUaGlzIElEIHJlcHJlc2VudHMgdGhlIGlubGluZWQgY2hpbGQgdGhh
dCBoYXMgbm8gYmFja2luZyBpbnN0YW5jZTpcbiAgICB2YXIgY29udGVudERlYnVnSUQgPSAtZGVi
dWdJRDtcblxuICAgIGlmIChjb250ZW50ID09IG51bGwpIHtcbiAgICAgIGlmIChoYXNFeGlzdGlu
Z0NvbnRlbnQpIHtcbiAgICAgICAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9uVW5t
b3VudENvbXBvbmVudCh0aGlzLl9jb250ZW50RGVidWdJRCk7XG4gICAgICB9XG4gICAgICB0aGlz
Ll9jb250ZW50RGVidWdJRCA9IG51bGw7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmFs
aWRhdGVET01OZXN0aW5nKG51bGwsIFN0cmluZyhjb250ZW50KSwgdGhpcywgdGhpcy5fYW5jZXN0
b3JJbmZvKTtcbiAgICB0aGlzLl9jb250ZW50RGVidWdJRCA9IGNvbnRlbnREZWJ1Z0lEO1xuICAg
IGlmIChoYXNFeGlzdGluZ0NvbnRlbnQpIHtcbiAgICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRl
YnVnVG9vbC5vbkJlZm9yZVVwZGF0ZUNvbXBvbmVudChjb250ZW50RGVidWdJRCwgY29udGVudCk7
XG4gICAgICBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25VcGRhdGVDb21wb25lbnQo
Y29udGVudERlYnVnSUQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBSZWFjdEluc3RydW1lbnRhdGlv
bi5kZWJ1Z1Rvb2wub25CZWZvcmVNb3VudENvbXBvbmVudChjb250ZW50RGVidWdJRCwgY29udGVu
dCwgZGVidWdJRCk7XG4gICAgICBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25Nb3Vu
dENvbXBvbmVudChjb250ZW50RGVidWdJRCk7XG4gICAgICBSZWFjdEluc3RydW1lbnRhdGlvbi5k
ZWJ1Z1Rvb2wub25TZXRDaGlsZHJlbihkZWJ1Z0lELCBbY29udGVudERlYnVnSURdKTtcbiAgICB9
XG4gIH07XG59XG5cbi8vIFRoZXJlIGFyZSBzbyBtYW55IG1lZGlhIGV2ZW50cywgaXQgbWFrZXMg
c2Vuc2UgdG8ganVzdFxuLy8gbWFpbnRhaW4gYSBsaXN0IHJhdGhlciB0aGFuIGNyZWF0ZSBhIGB0
cmFwQnViYmxlZEV2ZW50YCBmb3IgZWFjaFxudmFyIG1lZGlhRXZlbnRzID0ge1xuICB0b3BBYm9y
dDogJ2Fib3J0JyxcbiAgdG9wQ2FuUGxheTogJ2NhbnBsYXknLFxuICB0b3BDYW5QbGF5VGhyb3Vn
aDogJ2NhbnBsYXl0aHJvdWdoJyxcbiAgdG9wRHVyYXRpb25DaGFuZ2U6ICdkdXJhdGlvbmNoYW5n
ZScsXG4gIHRvcEVtcHRpZWQ6ICdlbXB0aWVkJyxcbiAgdG9wRW5jcnlwdGVkOiAnZW5jcnlwdGVk
JyxcbiAgdG9wRW5kZWQ6ICdlbmRlZCcsXG4gIHRvcEVycm9yOiAnZXJyb3InLFxuICB0b3BMb2Fk
ZWREYXRhOiAnbG9hZGVkZGF0YScsXG4gIHRvcExvYWRlZE1ldGFkYXRhOiAnbG9hZGVkbWV0YWRh
dGEnLFxuICB0b3BMb2FkU3RhcnQ6ICdsb2Fkc3RhcnQnLFxuICB0b3BQYXVzZTogJ3BhdXNlJyxc
biAgdG9wUGxheTogJ3BsYXknLFxuICB0b3BQbGF5aW5nOiAncGxheWluZycsXG4gIHRvcFByb2dy
ZXNzOiAncHJvZ3Jlc3MnLFxuICB0b3BSYXRlQ2hhbmdlOiAncmF0ZWNoYW5nZScsXG4gIHRvcFNl
ZWtlZDogJ3NlZWtlZCcsXG4gIHRvcFNlZWtpbmc6ICdzZWVraW5nJyxcbiAgdG9wU3RhbGxlZDog
J3N0YWxsZWQnLFxuICB0b3BTdXNwZW5kOiAnc3VzcGVuZCcsXG4gIHRvcFRpbWVVcGRhdGU6ICd0
aW1ldXBkYXRlJyxcbiAgdG9wVm9sdW1lQ2hhbmdlOiAndm9sdW1lY2hhbmdlJyxcbiAgdG9wV2Fp
dGluZzogJ3dhaXRpbmcnXG59O1xuXG5mdW5jdGlvbiB0cmFja0lucHV0VmFsdWUoKSB7XG4gIGlu
cHV0VmFsdWVUcmFja2luZy50cmFjayh0aGlzKTtcbn1cblxuZnVuY3Rpb24gdHJhcEJ1YmJsZWRF
dmVudHNMb2NhbCgpIHtcbiAgdmFyIGluc3QgPSB0aGlzO1xuICAvLyBJZiBhIGNvbXBvbmVudCBy
ZW5kZXJzIHRvIG51bGwgb3IgaWYgYW5vdGhlciBjb21wb25lbnQgZmF0YWxzIGFuZCBjYXVzZXNc
biAgLy8gdGhlIHN0YXRlIG9mIHRoZSB0cmVlIHRvIGJlIGNvcnJ1cHRlZCwgYG5vZGVgIGhlcmUg
Y2FuIGJlIG51bGwuXG4gICFpbnN0Ll9yb290Tm9kZUlEID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYg
IT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ011c3QgYmUgbW91bnRlZCB0byB0
cmFwIGV2ZW50cycpIDogX3Byb2RJbnZhcmlhbnQoJzYzJykgOiB2b2lkIDA7XG4gIHZhciBub2Rl
ID0gZ2V0Tm9kZShpbnN0KTtcbiAgIW5vZGUgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3By
b2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAndHJhcEJ1YmJsZWRFdmVudCguLi4pOiBSZXF1
aXJlcyBub2RlIHRvIGJlIHJlbmRlcmVkLicpIDogX3Byb2RJbnZhcmlhbnQoJzY0JykgOiB2b2lk
IDA7XG5cbiAgc3dpdGNoIChpbnN0Ll90YWcpIHtcbiAgICBjYXNlICdpZnJhbWUnOlxuICAgIGNh
c2UgJ29iamVjdCc6XG4gICAgICBpbnN0Ll93cmFwcGVyU3RhdGUubGlzdGVuZXJzID0gW1JlYWN0
QnJvd3NlckV2ZW50RW1pdHRlci50cmFwQnViYmxlZEV2ZW50KCd0b3BMb2FkJywgJ2xvYWQnLCBu
b2RlKV07XG4gICAgICBicmVhaztcbiAgICBjYXNlICd2aWRlbyc6XG4gICAgY2FzZSAnYXVkaW8n
OlxuICAgICAgaW5zdC5fd3JhcHBlclN0YXRlLmxpc3RlbmVycyA9IFtdO1xuICAgICAgLy8gQ3Jl
YXRlIGxpc3RlbmVyIGZvciBlYWNoIG1lZGlhIGV2ZW50XG4gICAgICBmb3IgKHZhciBldmVudCBp
biBtZWRpYUV2ZW50cykge1xuICAgICAgICBpZiAobWVkaWFFdmVudHMuaGFzT3duUHJvcGVydHko
ZXZlbnQpKSB7XG4gICAgICAgICAgaW5zdC5fd3JhcHBlclN0YXRlLmxpc3RlbmVycy5wdXNoKFJl
YWN0QnJvd3NlckV2ZW50RW1pdHRlci50cmFwQnViYmxlZEV2ZW50KGV2ZW50LCBtZWRpYUV2ZW50
c1tldmVudF0sIG5vZGUpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAg
Y2FzZSAnc291cmNlJzpcbiAgICAgIGluc3QuX3dyYXBwZXJTdGF0ZS5saXN0ZW5lcnMgPSBbUmVh
Y3RCcm93c2VyRXZlbnRFbWl0dGVyLnRyYXBCdWJibGVkRXZlbnQoJ3RvcEVycm9yJywgJ2Vycm9y
Jywgbm9kZSldO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnaW1nJzpcbiAgICAgIGluc3QuX3dy
YXBwZXJTdGF0ZS5saXN0ZW5lcnMgPSBbUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLnRyYXBCdWJi
bGVkRXZlbnQoJ3RvcEVycm9yJywgJ2Vycm9yJywgbm9kZSksIFJlYWN0QnJvd3NlckV2ZW50RW1p
dHRlci50cmFwQnViYmxlZEV2ZW50KCd0b3BMb2FkJywgJ2xvYWQnLCBub2RlKV07XG4gICAgICBi
cmVhaztcbiAgICBjYXNlICdmb3JtJzpcbiAgICAgIGluc3QuX3dyYXBwZXJTdGF0ZS5saXN0ZW5l
cnMgPSBbUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLnRyYXBCdWJibGVkRXZlbnQoJ3RvcFJlc2V0
JywgJ3Jlc2V0Jywgbm9kZSksIFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlci50cmFwQnViYmxlZEV2
ZW50KCd0b3BTdWJtaXQnLCAnc3VibWl0Jywgbm9kZSldO1xuICAgICAgYnJlYWs7XG4gICAgY2Fz
ZSAnaW5wdXQnOlxuICAgIGNhc2UgJ3NlbGVjdCc6XG4gICAgY2FzZSAndGV4dGFyZWEnOlxuICAg
ICAgaW5zdC5fd3JhcHBlclN0YXRlLmxpc3RlbmVycyA9IFtSZWFjdEJyb3dzZXJFdmVudEVtaXR0
ZXIudHJhcEJ1YmJsZWRFdmVudCgndG9wSW52YWxpZCcsICdpbnZhbGlkJywgbm9kZSldO1xuICAg
ICAgYnJlYWs7XG4gIH1cbn1cblxuZnVuY3Rpb24gcG9zdFVwZGF0ZVNlbGVjdFdyYXBwZXIoKSB7
XG4gIFJlYWN0RE9NU2VsZWN0LnBvc3RVcGRhdGVXcmFwcGVyKHRoaXMpO1xufVxuXG4vLyBGb3Ig
SFRNTCwgY2VydGFpbiB0YWdzIHNob3VsZCBvbWl0IHRoZWlyIGNsb3NlIHRhZy4gV2Uga2VlcCBh
IHdoaXRlbGlzdCBmb3Jcbi8vIHRob3NlIHNwZWNpYWwtY2FzZSB0YWdzLlxuXG52YXIgb21pdHRl
ZENsb3NlVGFncyA9IHtcbiAgYXJlYTogdHJ1ZSxcbiAgYmFzZTogdHJ1ZSxcbiAgYnI6IHRydWUs
XG4gIGNvbDogdHJ1ZSxcbiAgZW1iZWQ6IHRydWUsXG4gIGhyOiB0cnVlLFxuICBpbWc6IHRydWUs
XG4gIGlucHV0OiB0cnVlLFxuICBrZXlnZW46IHRydWUsXG4gIGxpbms6IHRydWUsXG4gIG1ldGE6
IHRydWUsXG4gIHBhcmFtOiB0cnVlLFxuICBzb3VyY2U6IHRydWUsXG4gIHRyYWNrOiB0cnVlLFxu
ICB3YnI6IHRydWVcbiAgLy8gTk9URTogbWVudWl0ZW0ncyBjbG9zZSB0YWcgc2hvdWxkIGJlIG9t
aXR0ZWQsIGJ1dCB0aGF0IGNhdXNlcyBwcm9ibGVtcy5cbn07XG5cbnZhciBuZXdsaW5lRWF0aW5n
VGFncyA9IHtcbiAgbGlzdGluZzogdHJ1ZSxcbiAgcHJlOiB0cnVlLFxuICB0ZXh0YXJlYTogdHJ1
ZVxufTtcblxuLy8gRm9yIEhUTUwsIGNlcnRhaW4gdGFncyBjYW5ub3QgaGF2ZSBjaGlsZHJlbi4g
VGhpcyBoYXMgdGhlIHNhbWUgcHVycG9zZSBhc1xuLy8gYG9taXR0ZWRDbG9zZVRhZ3NgIGV4Y2Vw
dCB0aGF0IGBtZW51aXRlbWAgc2hvdWxkIHN0aWxsIGhhdmUgaXRzIGNsb3NpbmcgdGFnLlxuXG52
YXIgdm9pZEVsZW1lbnRUYWdzID0gX2Fzc2lnbih7XG4gIG1lbnVpdGVtOiB0cnVlXG59LCBvbWl0
dGVkQ2xvc2VUYWdzKTtcblxuLy8gV2UgYWNjZXB0IGFueSB0YWcgdG8gYmUgcmVuZGVyZWQgYnV0
IHNpbmNlIHRoaXMgZ2V0cyBpbmplY3RlZCBpbnRvIGFyYml0cmFyeVxuLy8gSFRNTCwgd2Ugd2Fu
dCB0byBtYWtlIHN1cmUgdGhhdCBpdCdzIGEgc2FmZSB0YWcuXG4vLyBodHRwOi8vd3d3LnczLm9y
Zy9UUi9SRUMteG1sLyNOVC1OYW1lXG5cbnZhciBWQUxJRF9UQUdfUkVHRVggPSAvXlthLXpBLVpd
W2EtekEtWjpfXFwuXFwtXFxkXSokLzsgLy8gU2ltcGxpZmllZCBzdWJzZXRcbnZhciB2YWxpZGF0
ZWRUYWdDYWNoZSA9IHt9O1xudmFyIGhhc093blByb3BlcnR5ID0ge30uaGFzT3duUHJvcGVydHk7
XG5cbmZ1bmN0aW9uIHZhbGlkYXRlRGFuZ2Vyb3VzVGFnKHRhZykge1xuICBpZiAoIWhhc093blBy
b3BlcnR5LmNhbGwodmFsaWRhdGVkVGFnQ2FjaGUsIHRhZykpIHtcbiAgICAhVkFMSURfVEFHX1JF
R0VYLnRlc3QodGFnKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBp
bnZhcmlhbnQoZmFsc2UsICdJbnZhbGlkIHRhZzogJXMnLCB0YWcpIDogX3Byb2RJbnZhcmlhbnQo
JzY1JywgdGFnKSA6IHZvaWQgMDtcbiAgICB2YWxpZGF0ZWRUYWdDYWNoZVt0YWddID0gdHJ1ZTtc
biAgfVxufVxuXG5mdW5jdGlvbiBpc0N1c3RvbUNvbXBvbmVudCh0YWdOYW1lLCBwcm9wcykge1xu
ICByZXR1cm4gdGFnTmFtZS5pbmRleE9mKCctJykgPj0gMCB8fCBwcm9wcy5pcyAhPSBudWxsO1xu
fVxuXG52YXIgZ2xvYmFsSWRDb3VudGVyID0gMTtcblxuLyoqXG4gKiBDcmVhdGVzIGEgbmV3IFJl
YWN0IGNsYXNzIHRoYXQgaXMgaWRlbXBvdGVudCBhbmQgY2FwYWJsZSBvZiBjb250YWluaW5nIG90
aGVyXG4gKiBSZWFjdCBjb21wb25lbnRzLiBJdCBhY2NlcHRzIGV2ZW50IGxpc3RlbmVycyBhbmQg
RE9NIHByb3BlcnRpZXMgdGhhdCBhcmVcbiAqIHZhbGlkIGFjY29yZGluZyB0byBgRE9NUHJvcGVy
dHlgLlxuICpcbiAqICAtIEV2ZW50IGxpc3RlbmVyczogYG9uQ2xpY2tgLCBgb25Nb3VzZURvd25g
LCBldGMuXG4gKiAgLSBET00gcHJvcGVydGllczogYGNsYXNzTmFtZWAsIGBuYW1lYCwgYHRpdGxl
YCwgZXRjLlxuICpcbiAqIFRoZSBgc3R5bGVgIHByb3BlcnR5IGZ1bmN0aW9ucyBkaWZmZXJlbnRs
eSBmcm9tIHRoZSBET00gQVBJLiBJdCBhY2NlcHRzIGFuXG4gKiBvYmplY3QgbWFwcGluZyBvZiBz
dHlsZSBwcm9wZXJ0aWVzIHRvIHZhbHVlcy5cbiAqXG4gKiBAY29uc3RydWN0b3IgUmVhY3RET01D
b21wb25lbnRcbiAqIEBleHRlbmRzIFJlYWN0TXVsdGlDaGlsZFxuICovXG5mdW5jdGlvbiBSZWFj
dERPTUNvbXBvbmVudChlbGVtZW50KSB7XG4gIHZhciB0YWcgPSBlbGVtZW50LnR5cGU7XG4gIHZh
bGlkYXRlRGFuZ2Vyb3VzVGFnKHRhZyk7XG4gIHRoaXMuX2N1cnJlbnRFbGVtZW50ID0gZWxlbWVu
dDtcbiAgdGhpcy5fdGFnID0gdGFnLnRvTG93ZXJDYXNlKCk7XG4gIHRoaXMuX25hbWVzcGFjZVVS
SSA9IG51bGw7XG4gIHRoaXMuX3JlbmRlcmVkQ2hpbGRyZW4gPSBudWxsO1xuICB0aGlzLl9wcmV2
aW91c1N0eWxlID0gbnVsbDtcbiAgdGhpcy5fcHJldmlvdXNTdHlsZUNvcHkgPSBudWxsO1xuICB0
aGlzLl9ob3N0Tm9kZSA9IG51bGw7XG4gIHRoaXMuX2hvc3RQYXJlbnQgPSBudWxsO1xuICB0aGlz
Ll9yb290Tm9kZUlEID0gMDtcbiAgdGhpcy5fZG9tSUQgPSAwO1xuICB0aGlzLl9ob3N0Q29udGFp
bmVySW5mbyA9IG51bGw7XG4gIHRoaXMuX3dyYXBwZXJTdGF0ZSA9IG51bGw7XG4gIHRoaXMuX3Rv
cExldmVsV3JhcHBlciA9IG51bGw7XG4gIHRoaXMuX2ZsYWdzID0gMDtcbiAgaWYgKHByb2Nlc3Mu
ZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICB0aGlzLl9hbmNlc3RvckluZm8g
PSBudWxsO1xuICAgIHNldEFuZFZhbGlkYXRlQ29udGVudENoaWxkRGV2LmNhbGwodGhpcywgbnVs
bCk7XG4gIH1cbn1cblxuUmVhY3RET01Db21wb25lbnQuZGlzcGxheU5hbWUgPSAnUmVhY3RET01D
b21wb25lbnQnO1xuXG5SZWFjdERPTUNvbXBvbmVudC5NaXhpbiA9IHtcbiAgLyoqXG4gICAqIEdl
bmVyYXRlcyByb290IHRhZyBtYXJrdXAgdGhlbiByZWN1cnNlcy4gVGhpcyBtZXRob2QgaGFzIHNp
ZGUgZWZmZWN0cyBhbmRcbiAgICogaXMgbm90IGlkZW1wb3RlbnQuXG4gICAqXG4gICAqIEBpbnRl
cm5hbFxuICAgKiBAcGFyYW0ge1JlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb258UmVhY3RTZXJ2ZXJS
ZW5kZXJpbmdUcmFuc2FjdGlvbn0gdHJhbnNhY3Rpb25cbiAgICogQHBhcmFtIHs/UmVhY3RET01D
b21wb25lbnR9IHRoZSBwYXJlbnQgY29tcG9uZW50IGluc3RhbmNlXG4gICAqIEBwYXJhbSB7P29i
amVjdH0gaW5mbyBhYm91dCB0aGUgaG9zdCBjb250YWluZXJcbiAgICogQHBhcmFtIHtvYmplY3R9
IGNvbnRleHRcbiAgICogQHJldHVybiB7c3RyaW5nfSBUaGUgY29tcHV0ZWQgbWFya3VwLlxuICAg
Ki9cbiAgbW91bnRDb21wb25lbnQ6IGZ1bmN0aW9uICh0cmFuc2FjdGlvbiwgaG9zdFBhcmVudCwg
aG9zdENvbnRhaW5lckluZm8sIGNvbnRleHQpIHtcbiAgICB0aGlzLl9yb290Tm9kZUlEID0gZ2xv
YmFsSWRDb3VudGVyKys7XG4gICAgdGhpcy5fZG9tSUQgPSBob3N0Q29udGFpbmVySW5mby5faWRD
b3VudGVyKys7XG4gICAgdGhpcy5faG9zdFBhcmVudCA9IGhvc3RQYXJlbnQ7XG4gICAgdGhpcy5f
aG9zdENvbnRhaW5lckluZm8gPSBob3N0Q29udGFpbmVySW5mbztcblxuICAgIHZhciBwcm9wcyA9
IHRoaXMuX2N1cnJlbnRFbGVtZW50LnByb3BzO1xuXG4gICAgc3dpdGNoICh0aGlzLl90YWcpIHtc
biAgICAgIGNhc2UgJ2F1ZGlvJzpcbiAgICAgIGNhc2UgJ2Zvcm0nOlxuICAgICAgY2FzZSAnaWZy
YW1lJzpcbiAgICAgIGNhc2UgJ2ltZyc6XG4gICAgICBjYXNlICdsaW5rJzpcbiAgICAgIGNhc2Ug
J29iamVjdCc6XG4gICAgICBjYXNlICdzb3VyY2UnOlxuICAgICAgY2FzZSAndmlkZW8nOlxuICAg
ICAgICB0aGlzLl93cmFwcGVyU3RhdGUgPSB7XG4gICAgICAgICAgbGlzdGVuZXJzOiBudWxsXG4g
ICAgICAgIH07XG4gICAgICAgIHRyYW5zYWN0aW9uLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVl
dWUodHJhcEJ1YmJsZWRFdmVudHNMb2NhbCwgdGhpcyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAg
Y2FzZSAnaW5wdXQnOlxuICAgICAgICBSZWFjdERPTUlucHV0Lm1vdW50V3JhcHBlcih0aGlzLCBw
cm9wcywgaG9zdFBhcmVudCk7XG4gICAgICAgIHByb3BzID0gUmVhY3RET01JbnB1dC5nZXRIb3N0
UHJvcHModGhpcywgcHJvcHMpO1xuICAgICAgICB0cmFuc2FjdGlvbi5nZXRSZWFjdE1vdW50UmVh
ZHkoKS5lbnF1ZXVlKHRyYWNrSW5wdXRWYWx1ZSwgdGhpcyk7XG4gICAgICAgIHRyYW5zYWN0aW9u
LmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUodHJhcEJ1YmJsZWRFdmVudHNMb2NhbCwgdGhp
cyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnb3B0aW9uJzpcbiAgICAgICAgUmVhY3RE
T01PcHRpb24ubW91bnRXcmFwcGVyKHRoaXMsIHByb3BzLCBob3N0UGFyZW50KTtcbiAgICAgICAg
cHJvcHMgPSBSZWFjdERPTU9wdGlvbi5nZXRIb3N0UHJvcHModGhpcywgcHJvcHMpO1xuICAgICAg
ICBicmVhaztcbiAgICAgIGNhc2UgJ3NlbGVjdCc6XG4gICAgICAgIFJlYWN0RE9NU2VsZWN0Lm1v
dW50V3JhcHBlcih0aGlzLCBwcm9wcywgaG9zdFBhcmVudCk7XG4gICAgICAgIHByb3BzID0gUmVh
Y3RET01TZWxlY3QuZ2V0SG9zdFByb3BzKHRoaXMsIHByb3BzKTtcbiAgICAgICAgdHJhbnNhY3Rp
b24uZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1ZSh0cmFwQnViYmxlZEV2ZW50c0xvY2FsLCB0
aGlzKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICd0ZXh0YXJlYSc6XG4gICAgICAgIFJl
YWN0RE9NVGV4dGFyZWEubW91bnRXcmFwcGVyKHRoaXMsIHByb3BzLCBob3N0UGFyZW50KTtcbiAg
ICAgICAgcHJvcHMgPSBSZWFjdERPTVRleHRhcmVhLmdldEhvc3RQcm9wcyh0aGlzLCBwcm9wcyk7
XG4gICAgICAgIHRyYW5zYWN0aW9uLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUodHJhY2tJ
bnB1dFZhbHVlLCB0aGlzKTtcbiAgICAgICAgdHJhbnNhY3Rpb24uZ2V0UmVhY3RNb3VudFJlYWR5
KCkuZW5xdWV1ZSh0cmFwQnViYmxlZEV2ZW50c0xvY2FsLCB0aGlzKTtcbiAgICAgICAgYnJlYWs7
XG4gICAgfVxuXG4gICAgYXNzZXJ0VmFsaWRQcm9wcyh0aGlzLCBwcm9wcyk7XG5cbiAgICAvLyBX
ZSBjcmVhdGUgdGFncyBpbiB0aGUgbmFtZXNwYWNlIG9mIHRoZWlyIHBhcmVudCBjb250YWluZXIs
IGV4Y2VwdCBIVE1MXG4gICAgLy8gdGFncyBnZXQgbm8gbmFtZXNwYWNlLlxuICAgIHZhciBuYW1l
c3BhY2VVUkk7XG4gICAgdmFyIHBhcmVudFRhZztcbiAgICBpZiAoaG9zdFBhcmVudCAhPSBudWxs
KSB7XG4gICAgICBuYW1lc3BhY2VVUkkgPSBob3N0UGFyZW50Ll9uYW1lc3BhY2VVUkk7XG4gICAg
ICBwYXJlbnRUYWcgPSBob3N0UGFyZW50Ll90YWc7XG4gICAgfSBlbHNlIGlmIChob3N0Q29udGFp
bmVySW5mby5fdGFnKSB7XG4gICAgICBuYW1lc3BhY2VVUkkgPSBob3N0Q29udGFpbmVySW5mby5f
bmFtZXNwYWNlVVJJO1xuICAgICAgcGFyZW50VGFnID0gaG9zdENvbnRhaW5lckluZm8uX3RhZztc
biAgICB9XG4gICAgaWYgKG5hbWVzcGFjZVVSSSA9PSBudWxsIHx8IG5hbWVzcGFjZVVSSSA9PT0g
RE9NTmFtZXNwYWNlcy5zdmcgJiYgcGFyZW50VGFnID09PSAnZm9yZWlnbm9iamVjdCcpIHtcbiAg
ICAgIG5hbWVzcGFjZVVSSSA9IERPTU5hbWVzcGFjZXMuaHRtbDtcbiAgICB9XG4gICAgaWYgKG5h
bWVzcGFjZVVSSSA9PT0gRE9NTmFtZXNwYWNlcy5odG1sKSB7XG4gICAgICBpZiAodGhpcy5fdGFn
ID09PSAnc3ZnJykge1xuICAgICAgICBuYW1lc3BhY2VVUkkgPSBET01OYW1lc3BhY2VzLnN2Zztc
biAgICAgIH0gZWxzZSBpZiAodGhpcy5fdGFnID09PSAnbWF0aCcpIHtcbiAgICAgICAgbmFtZXNw
YWNlVVJJID0gRE9NTmFtZXNwYWNlcy5tYXRobWw7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMu
X25hbWVzcGFjZVVSSSA9IG5hbWVzcGFjZVVSSTtcblxuICAgIGlmIChwcm9jZXNzLmVudi5OT0RF
X0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICB2YXIgcGFyZW50SW5mbztcbiAgICAgIGlm
IChob3N0UGFyZW50ICE9IG51bGwpIHtcbiAgICAgICAgcGFyZW50SW5mbyA9IGhvc3RQYXJlbnQu
X2FuY2VzdG9ySW5mbztcbiAgICAgIH0gZWxzZSBpZiAoaG9zdENvbnRhaW5lckluZm8uX3RhZykg
e1xuICAgICAgICBwYXJlbnRJbmZvID0gaG9zdENvbnRhaW5lckluZm8uX2FuY2VzdG9ySW5mbztc
biAgICAgIH1cbiAgICAgIGlmIChwYXJlbnRJbmZvKSB7XG4gICAgICAgIC8vIHBhcmVudEluZm8g
c2hvdWxkIGFsd2F5cyBiZSBwcmVzZW50IGV4Y2VwdCBmb3IgdGhlIHRvcC1sZXZlbFxuICAgICAg
ICAvLyBjb21wb25lbnQgd2hlbiBzZXJ2ZXIgcmVuZGVyaW5nXG4gICAgICAgIHZhbGlkYXRlRE9N
TmVzdGluZyh0aGlzLl90YWcsIG51bGwsIHRoaXMsIHBhcmVudEluZm8pO1xuICAgICAgfVxuICAg
ICAgdGhpcy5fYW5jZXN0b3JJbmZvID0gdmFsaWRhdGVET01OZXN0aW5nLnVwZGF0ZWRBbmNlc3Rv
ckluZm8ocGFyZW50SW5mbywgdGhpcy5fdGFnLCB0aGlzKTtcbiAgICB9XG5cbiAgICB2YXIgbW91
bnRJbWFnZTtcbiAgICBpZiAodHJhbnNhY3Rpb24udXNlQ3JlYXRlRWxlbWVudCkge1xuICAgICAg
dmFyIG93bmVyRG9jdW1lbnQgPSBob3N0Q29udGFpbmVySW5mby5fb3duZXJEb2N1bWVudDtcbiAg
ICAgIHZhciBlbDtcbiAgICAgIGlmIChuYW1lc3BhY2VVUkkgPT09IERPTU5hbWVzcGFjZXMuaHRt
bCkge1xuICAgICAgICBpZiAodGhpcy5fdGFnID09PSAnc2NyaXB0Jykge1xuICAgICAgICAgIC8v
IENyZWF0ZSB0aGUgc2NyaXB0IHZpYSAuaW5uZXJIVE1MIHNvIGl0cyBcInBhcnNlci1pbnNlcnRl
ZFwiIGZsYWcgaXNcbiAgICAgICAgICAvLyBzZXQgdG8gdHJ1ZSBhbmQgaXQgZG9lcyBub3QgZXhl
Y3V0ZVxuICAgICAgICAgIHZhciBkaXYgPSBvd25lckRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2Rp
dicpO1xuICAgICAgICAgIHZhciB0eXBlID0gdGhpcy5fY3VycmVudEVsZW1lbnQudHlwZTtcbiAg
ICAgICAgICBkaXYuaW5uZXJIVE1MID0gJzwnICsgdHlwZSArICc+PC8nICsgdHlwZSArICc+Jztc
biAgICAgICAgICBlbCA9IGRpdi5yZW1vdmVDaGlsZChkaXYuZmlyc3RDaGlsZCk7XG4gICAgICAg
IH0gZWxzZSBpZiAocHJvcHMuaXMpIHtcbiAgICAgICAgICBlbCA9IG93bmVyRG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCh0aGlzLl9jdXJyZW50RWxlbWVudC50eXBlLCBwcm9wcy5pcyk7XG4gICAgICAg
IH0gZWxzZSB7XG4gICAgICAgICAgLy8gU2VwYXJhdGUgZWxzZSBicmFuY2ggaW5zdGVhZCBvZiB1
c2luZyBgcHJvcHMuaXMgfHwgdW5kZWZpbmVkYCBhYm92ZSBiZWN1YXNlIG9mIGEgRmlyZWZveCBi
dWcuXG4gICAgICAgICAgLy8gU2VlIGRpc2N1c3Npb24gaW4gaHR0cHM6Ly9naXRodWIuY29tL2Zh
Y2Vib29rL3JlYWN0L3B1bGwvNjg5NlxuICAgICAgICAgIC8vIGFuZCBkaXNjdXNzaW9uIGluIGh0
dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTEyNzYyNDBcbiAgICAg
ICAgICBlbCA9IG93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudCh0aGlzLl9jdXJyZW50RWxlbWVu
dC50eXBlKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZWwgPSBvd25lckRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUyhuYW1lc3BhY2VVUkksIHRoaXMuX2N1cnJlbnRFbGVtZW50
LnR5cGUpO1xuICAgICAgfVxuICAgICAgUmVhY3RET01Db21wb25lbnRUcmVlLnByZWNhY2hlTm9k
ZSh0aGlzLCBlbCk7XG4gICAgICB0aGlzLl9mbGFncyB8PSBGbGFncy5oYXNDYWNoZWRDaGlsZE5v
ZGVzO1xuICAgICAgaWYgKCF0aGlzLl9ob3N0UGFyZW50KSB7XG4gICAgICAgIERPTVByb3BlcnR5
T3BlcmF0aW9ucy5zZXRBdHRyaWJ1dGVGb3JSb290KGVsKTtcbiAgICAgIH1cbiAgICAgIHRoaXMu
X3VwZGF0ZURPTVByb3BlcnRpZXMobnVsbCwgcHJvcHMsIHRyYW5zYWN0aW9uKTtcbiAgICAgIHZh
ciBsYXp5VHJlZSA9IERPTUxhenlUcmVlKGVsKTtcbiAgICAgIHRoaXMuX2NyZWF0ZUluaXRpYWxD
aGlsZHJlbih0cmFuc2FjdGlvbiwgcHJvcHMsIGNvbnRleHQsIGxhenlUcmVlKTtcbiAgICAgIG1v
dW50SW1hZ2UgPSBsYXp5VHJlZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIHRhZ09wZW4gPSB0
aGlzLl9jcmVhdGVPcGVuVGFnTWFya3VwQW5kUHV0TGlzdGVuZXJzKHRyYW5zYWN0aW9uLCBwcm9w
cyk7XG4gICAgICB2YXIgdGFnQ29udGVudCA9IHRoaXMuX2NyZWF0ZUNvbnRlbnRNYXJrdXAodHJh
bnNhY3Rpb24sIHByb3BzLCBjb250ZXh0KTtcbiAgICAgIGlmICghdGFnQ29udGVudCAmJiBvbWl0
dGVkQ2xvc2VUYWdzW3RoaXMuX3RhZ10pIHtcbiAgICAgICAgbW91bnRJbWFnZSA9IHRhZ09wZW4g
KyAnLz4nO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbW91bnRJbWFnZSA9IHRhZ09wZW4gKyAn
PicgKyB0YWdDb250ZW50ICsgJzwvJyArIHRoaXMuX2N1cnJlbnRFbGVtZW50LnR5cGUgKyAnPic7
XG4gICAgICB9XG4gICAgfVxuXG4gICAgc3dpdGNoICh0aGlzLl90YWcpIHtcbiAgICAgIGNhc2Ug
J2lucHV0JzpcbiAgICAgICAgdHJhbnNhY3Rpb24uZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1
ZShpbnB1dFBvc3RNb3VudCwgdGhpcyk7XG4gICAgICAgIGlmIChwcm9wcy5hdXRvRm9jdXMpIHtc
biAgICAgICAgICB0cmFuc2FjdGlvbi5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKEF1dG9G
b2N1c1V0aWxzLmZvY3VzRE9NQ29tcG9uZW50LCB0aGlzKTtcbiAgICAgICAgfVxuICAgICAgICBi
cmVhaztcbiAgICAgIGNhc2UgJ3RleHRhcmVhJzpcbiAgICAgICAgdHJhbnNhY3Rpb24uZ2V0UmVh
Y3RNb3VudFJlYWR5KCkuZW5xdWV1ZSh0ZXh0YXJlYVBvc3RNb3VudCwgdGhpcyk7XG4gICAgICAg
IGlmIChwcm9wcy5hdXRvRm9jdXMpIHtcbiAgICAgICAgICB0cmFuc2FjdGlvbi5nZXRSZWFjdE1v
dW50UmVhZHkoKS5lbnF1ZXVlKEF1dG9Gb2N1c1V0aWxzLmZvY3VzRE9NQ29tcG9uZW50LCB0aGlz
KTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3NlbGVjdCc6XG4gICAg
ICAgIGlmIChwcm9wcy5hdXRvRm9jdXMpIHtcbiAgICAgICAgICB0cmFuc2FjdGlvbi5nZXRSZWFj
dE1vdW50UmVhZHkoKS5lbnF1ZXVlKEF1dG9Gb2N1c1V0aWxzLmZvY3VzRE9NQ29tcG9uZW50LCB0
aGlzKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2J1dHRvbic6XG4g
ICAgICAgIGlmIChwcm9wcy5hdXRvRm9jdXMpIHtcbiAgICAgICAgICB0cmFuc2FjdGlvbi5nZXRS
ZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKEF1dG9Gb2N1c1V0aWxzLmZvY3VzRE9NQ29tcG9uZW50
LCB0aGlzKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ29wdGlvbic6
XG4gICAgICAgIHRyYW5zYWN0aW9uLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUob3B0aW9u
UG9zdE1vdW50LCB0aGlzKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1v
dW50SW1hZ2U7XG4gIH0sXG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgbWFya3VwIGZvciB0aGUgb3Bl
biB0YWcgYW5kIGFsbCBhdHRyaWJ1dGVzLlxuICAgKlxuICAgKiBUaGlzIG1ldGhvZCBoYXMgc2lk
ZSBlZmZlY3RzIGJlY2F1c2UgZXZlbnRzIGdldCByZWdpc3RlcmVkLlxuICAgKlxuICAgKiBJdGVy
YXRpbmcgb3ZlciBvYmplY3QgcHJvcGVydGllcyBpcyBmYXN0ZXIgdGhhbiBpdGVyYXRpbmcgb3Zl
ciBhcnJheXMuXG4gICAqIEBzZWUgaHR0cDovL2pzcGVyZi5jb20vb2JqLXZzLWFyci1pdGVyYXRp
b25cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtSZWFjdFJlY29uY2lsZVRyYW5z
YWN0aW9ufFJlYWN0U2VydmVyUmVuZGVyaW5nVHJhbnNhY3Rpb259IHRyYW5zYWN0aW9uXG4gICAq
IEBwYXJhbSB7b2JqZWN0fSBwcm9wc1xuICAgKiBAcmV0dXJuIHtzdHJpbmd9IE1hcmt1cCBvZiBv
cGVuaW5nIHRhZy5cbiAgICovXG4gIF9jcmVhdGVPcGVuVGFnTWFya3VwQW5kUHV0TGlzdGVuZXJz
OiBmdW5jdGlvbiAodHJhbnNhY3Rpb24sIHByb3BzKSB7XG4gICAgdmFyIHJldCA9ICc8JyArIHRo
aXMuX2N1cnJlbnRFbGVtZW50LnR5cGU7XG5cbiAgICBmb3IgKHZhciBwcm9wS2V5IGluIHByb3Bz
KSB7XG4gICAgICBpZiAoIXByb3BzLmhhc093blByb3BlcnR5KHByb3BLZXkpKSB7XG4gICAgICAg
IGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgdmFyIHByb3BWYWx1ZSA9IHByb3BzW3Byb3BLZXld
O1xuICAgICAgaWYgKHByb3BWYWx1ZSA9PSBudWxsKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAg
ICAgfVxuICAgICAgaWYgKHJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVzLmhhc093blByb3BlcnR5KHBy
b3BLZXkpKSB7XG4gICAgICAgIGlmIChwcm9wVmFsdWUpIHtcbiAgICAgICAgICBlbnF1ZXVlUHV0
TGlzdGVuZXIodGhpcywgcHJvcEtleSwgcHJvcFZhbHVlLCB0cmFuc2FjdGlvbik7XG4gICAgICAg
IH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChwcm9wS2V5ID09PSBTVFlMRSkge1xuICAg
ICAgICAgIGlmIChwcm9wVmFsdWUpIHtcbiAgICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RF
X0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgICAgICAgIC8vIFNlZSBgX3VwZGF0ZURP
TVByb3BlcnRpZXNgLiBzdHlsZSBibG9ja1xuICAgICAgICAgICAgICB0aGlzLl9wcmV2aW91c1N0
eWxlID0gcHJvcFZhbHVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcHJvcFZhbHVlID0g
dGhpcy5fcHJldmlvdXNTdHlsZUNvcHkgPSBfYXNzaWduKHt9LCBwcm9wcy5zdHlsZSk7XG4gICAg
ICAgICAgfVxuICAgICAgICAgIHByb3BWYWx1ZSA9IENTU1Byb3BlcnR5T3BlcmF0aW9ucy5jcmVh
dGVNYXJrdXBGb3JTdHlsZXMocHJvcFZhbHVlLCB0aGlzKTtcbiAgICAgICAgfVxuICAgICAgICB2
YXIgbWFya3VwID0gbnVsbDtcbiAgICAgICAgaWYgKHRoaXMuX3RhZyAhPSBudWxsICYmIGlzQ3Vz
dG9tQ29tcG9uZW50KHRoaXMuX3RhZywgcHJvcHMpKSB7XG4gICAgICAgICAgaWYgKCFSRVNFUlZF
RF9QUk9QUy5oYXNPd25Qcm9wZXJ0eShwcm9wS2V5KSkge1xuICAgICAgICAgICAgbWFya3VwID0g
RE9NUHJvcGVydHlPcGVyYXRpb25zLmNyZWF0ZU1hcmt1cEZvckN1c3RvbUF0dHJpYnV0ZShwcm9w
S2V5LCBwcm9wVmFsdWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAg
ICBtYXJrdXAgPSBET01Qcm9wZXJ0eU9wZXJhdGlvbnMuY3JlYXRlTWFya3VwRm9yUHJvcGVydHko
cHJvcEtleSwgcHJvcFZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobWFya3VwKSB7XG4g
ICAgICAgICAgcmV0ICs9ICcgJyArIG1hcmt1cDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1c
blxuICAgIC8vIEZvciBzdGF0aWMgcGFnZXMsIG5vIG5lZWQgdG8gcHV0IFJlYWN0IElEIGFuZCBj
aGVja3N1bS4gU2F2ZXMgbG90cyBvZlxuICAgIC8vIGJ5dGVzLlxuICAgIGlmICh0cmFuc2FjdGlv
bi5yZW5kZXJUb1N0YXRpY01hcmt1cCkge1xuICAgICAgcmV0dXJuIHJldDtcbiAgICB9XG5cbiAg
ICBpZiAoIXRoaXMuX2hvc3RQYXJlbnQpIHtcbiAgICAgIHJldCArPSAnICcgKyBET01Qcm9wZXJ0
eU9wZXJhdGlvbnMuY3JlYXRlTWFya3VwRm9yUm9vdCgpO1xuICAgIH1cbiAgICByZXQgKz0gJyAn
ICsgRE9NUHJvcGVydHlPcGVyYXRpb25zLmNyZWF0ZU1hcmt1cEZvcklEKHRoaXMuX2RvbUlEKTtc
biAgICByZXR1cm4gcmV0O1xuICB9LFxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIG1hcmt1cCBmb3Ig
dGhlIGNvbnRlbnQgYmV0d2VlbiB0aGUgdGFncy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICog
QHBhcmFtIHtSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9ufFJlYWN0U2VydmVyUmVuZGVyaW5nVHJh
bnNhY3Rpb259IHRyYW5zYWN0aW9uXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBwcm9wc1xuICAgKiBA
cGFyYW0ge29iamVjdH0gY29udGV4dFxuICAgKiBAcmV0dXJuIHtzdHJpbmd9IENvbnRlbnQgbWFy
a3VwLlxuICAgKi9cbiAgX2NyZWF0ZUNvbnRlbnRNYXJrdXA6IGZ1bmN0aW9uICh0cmFuc2FjdGlv
biwgcHJvcHMsIGNvbnRleHQpIHtcbiAgICB2YXIgcmV0ID0gJyc7XG5cbiAgICAvLyBJbnRlbnRp
b25hbCB1c2Ugb2YgIT0gdG8gYXZvaWQgY2F0Y2hpbmcgemVyby9mYWxzZS5cbiAgICB2YXIgaW5u
ZXJIVE1MID0gcHJvcHMuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw7XG4gICAgaWYgKGlubmVySFRN
TCAhPSBudWxsKSB7XG4gICAgICBpZiAoaW5uZXJIVE1MLl9faHRtbCAhPSBudWxsKSB7XG4gICAg
ICAgIHJldCA9IGlubmVySFRNTC5fX2h0bWw7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAg
IHZhciBjb250ZW50VG9Vc2UgPSBDT05URU5UX1RZUEVTW3R5cGVvZiBwcm9wcy5jaGlsZHJlbl0g
PyBwcm9wcy5jaGlsZHJlbiA6IG51bGw7XG4gICAgICB2YXIgY2hpbGRyZW5Ub1VzZSA9IGNvbnRl
bnRUb1VzZSAhPSBudWxsID8gbnVsbCA6IHByb3BzLmNoaWxkcmVuO1xuICAgICAgaWYgKGNvbnRl
bnRUb1VzZSAhPSBudWxsKSB7XG4gICAgICAgIC8vIFRPRE86IFZhbGlkYXRlIHRoYXQgdGV4dCBp
cyBhbGxvd2VkIGFzIGEgY2hpbGQgb2YgdGhpcyBub2RlXG4gICAgICAgIHJldCA9IGVzY2FwZVRl
eHRDb250ZW50Rm9yQnJvd3Nlcihjb250ZW50VG9Vc2UpO1xuICAgICAgICBpZiAocHJvY2Vzcy5l
bnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICAgIHNldEFuZFZhbGlkYXRl
Q29udGVudENoaWxkRGV2LmNhbGwodGhpcywgY29udGVudFRvVXNlKTtcbiAgICAgICAgfVxuICAg
ICAgfSBlbHNlIGlmIChjaGlsZHJlblRvVXNlICE9IG51bGwpIHtcbiAgICAgICAgdmFyIG1vdW50
SW1hZ2VzID0gdGhpcy5tb3VudENoaWxkcmVuKGNoaWxkcmVuVG9Vc2UsIHRyYW5zYWN0aW9uLCBj
b250ZXh0KTtcbiAgICAgICAgcmV0ID0gbW91bnRJbWFnZXMuam9pbignJyk7XG4gICAgICB9XG4g
ICAgfVxuICAgIGlmIChuZXdsaW5lRWF0aW5nVGFnc1t0aGlzLl90YWddICYmIHJldC5jaGFyQXQo
MCkgPT09ICdcXG4nKSB7XG4gICAgICAvLyB0ZXh0L2h0bWwgaWdub3JlcyB0aGUgZmlyc3QgY2hh
cmFjdGVyIGluIHRoZXNlIHRhZ3MgaWYgaXQncyBhIG5ld2xpbmVcbiAgICAgIC8vIFByZWZlciB0
byBicmVhayBhcHBsaWNhdGlvbi94bWwgb3ZlciB0ZXh0L2h0bWwgKGZvciBub3cpIGJ5IGFkZGlu
Z1xuICAgICAgLy8gYSBuZXdsaW5lIHNwZWNpZmljYWxseSB0byBnZXQgZWF0ZW4gYnkgdGhlIHBh
cnNlci4gKEFsdGVybmF0ZWx5IGZvclxuICAgICAgLy8gdGV4dGFyZWFzLCByZXBsYWNpbmcgXCJe
XFxuXCIgd2l0aCBcIlxcclxcblwiIGRvZXNuJ3QgZ2V0IGVhdGVuLCBhbmQgdGhlIGZpcnN0XG4g
ICAgICAvLyBcXHIgaXMgbm9ybWFsaXplZCBvdXQgYnkgSFRNTFRleHRBcmVhRWxlbWVudCN2YWx1
ZS4pXG4gICAgICAvLyBTZWU6IDxodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sLXBvbHlnbG90LyNu
ZXdsaW5lcy1pbi10ZXh0YXJlYS1hbmQtcHJlPlxuICAgICAgLy8gU2VlOiA8aHR0cDovL3d3dy53
My5vcmcvVFIvaHRtbDUvc3ludGF4Lmh0bWwjZWxlbWVudC1yZXN0cmljdGlvbnM+XG4gICAgICAv
LyBTZWU6IDxodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNS9zeW50YXguaHRtbCNuZXdsaW5lcz5c
biAgICAgIC8vIFNlZTogUGFyc2luZyBvZiBcInRleHRhcmVhXCIgXCJsaXN0aW5nXCIgYW5kIFwi
cHJlXCIgZWxlbWVudHNcbiAgICAgIC8vICBmcm9tIDxodHRwOi8vd3d3LnczLm9yZy9UUi9odG1s
NS9zeW50YXguaHRtbCNwYXJzaW5nLW1haW4taW5ib2R5PlxuICAgICAgcmV0dXJuICdcXG4nICsg
cmV0O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gcmV0O1xuICAgIH1cbiAgfSxcblxuICBf
Y3JlYXRlSW5pdGlhbENoaWxkcmVuOiBmdW5jdGlvbiAodHJhbnNhY3Rpb24sIHByb3BzLCBjb250
ZXh0LCBsYXp5VHJlZSkge1xuICAgIC8vIEludGVudGlvbmFsIHVzZSBvZiAhPSB0byBhdm9pZCBj
YXRjaGluZyB6ZXJvL2ZhbHNlLlxuICAgIHZhciBpbm5lckhUTUwgPSBwcm9wcy5kYW5nZXJvdXNs
eVNldElubmVySFRNTDtcbiAgICBpZiAoaW5uZXJIVE1MICE9IG51bGwpIHtcbiAgICAgIGlmIChp
bm5lckhUTUwuX19odG1sICE9IG51bGwpIHtcbiAgICAgICAgRE9NTGF6eVRyZWUucXVldWVIVE1M
KGxhenlUcmVlLCBpbm5lckhUTUwuX19odG1sKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAg
ICAgdmFyIGNvbnRlbnRUb1VzZSA9IENPTlRFTlRfVFlQRVNbdHlwZW9mIHByb3BzLmNoaWxkcmVu
XSA/IHByb3BzLmNoaWxkcmVuIDogbnVsbDtcbiAgICAgIHZhciBjaGlsZHJlblRvVXNlID0gY29u
dGVudFRvVXNlICE9IG51bGwgPyBudWxsIDogcHJvcHMuY2hpbGRyZW47XG4gICAgICAvLyBUT0RP
OiBWYWxpZGF0ZSB0aGF0IHRleHQgaXMgYWxsb3dlZCBhcyBhIGNoaWxkIG9mIHRoaXMgbm9kZVxu
ICAgICAgaWYgKGNvbnRlbnRUb1VzZSAhPSBudWxsKSB7XG4gICAgICAgIC8vIEF2b2lkIHNldHRp
bmcgdGV4dENvbnRlbnQgd2hlbiB0aGUgdGV4dCBpcyBlbXB0eS4gSW4gSUUxMSBzZXR0aW5nXG4g
ICAgICAgIC8vIHRleHRDb250ZW50IG9uIGEgdGV4dCBhcmVhIHdpbGwgY2F1c2UgdGhlIHBsYWNl
aG9sZGVyIHRvIG5vdFxuICAgICAgICAvLyBzaG93IHdpdGhpbiB0aGUgdGV4dGFyZWEgdW50aWwg
aXQgaGFzIGJlZW4gZm9jdXNlZCBhbmQgYmx1cnJlZCBhZ2Fpbi5cbiAgICAgICAgLy8gaHR0cHM6
Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0L2lzc3Vlcy82NzMxI2lzc3VlY29tbWVudC0yNTQ4
NzQ1NTNcbiAgICAgICAgaWYgKGNvbnRlbnRUb1VzZSAhPT0gJycpIHtcbiAgICAgICAgICBpZiAo
cHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICAgICAgc2V0
QW5kVmFsaWRhdGVDb250ZW50Q2hpbGREZXYuY2FsbCh0aGlzLCBjb250ZW50VG9Vc2UpO1xuICAg
ICAgICAgIH1cbiAgICAgICAgICBET01MYXp5VHJlZS5xdWV1ZVRleHQobGF6eVRyZWUsIGNvbnRl
bnRUb1VzZSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoY2hpbGRyZW5Ub1VzZSAhPSBu
dWxsKSB7XG4gICAgICAgIHZhciBtb3VudEltYWdlcyA9IHRoaXMubW91bnRDaGlsZHJlbihjaGls
ZHJlblRvVXNlLCB0cmFuc2FjdGlvbiwgY29udGV4dCk7XG4gICAgICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgbW91bnRJbWFnZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICBET01MYXp5VHJlZS5x
dWV1ZUNoaWxkKGxhenlUcmVlLCBtb3VudEltYWdlc1tpXSk7XG4gICAgICAgIH1cbiAgICAgIH1c
biAgICB9XG4gIH0sXG5cbiAgLyoqXG4gICAqIFJlY2VpdmVzIGEgbmV4dCBlbGVtZW50IGFuZCB1
cGRhdGVzIHRoZSBjb21wb25lbnQuXG4gICAqXG4gICAqIEBpbnRlcm5hbFxuICAgKiBAcGFyYW0g
e1JlYWN0RWxlbWVudH0gbmV4dEVsZW1lbnRcbiAgICogQHBhcmFtIHtSZWFjdFJlY29uY2lsZVRy
YW5zYWN0aW9ufFJlYWN0U2VydmVyUmVuZGVyaW5nVHJhbnNhY3Rpb259IHRyYW5zYWN0aW9uXG4g
ICAqIEBwYXJhbSB7b2JqZWN0fSBjb250ZXh0XG4gICAqL1xuICByZWNlaXZlQ29tcG9uZW50OiBm
dW5jdGlvbiAobmV4dEVsZW1lbnQsIHRyYW5zYWN0aW9uLCBjb250ZXh0KSB7XG4gICAgdmFyIHBy
ZXZFbGVtZW50ID0gdGhpcy5fY3VycmVudEVsZW1lbnQ7XG4gICAgdGhpcy5fY3VycmVudEVsZW1l
bnQgPSBuZXh0RWxlbWVudDtcbiAgICB0aGlzLnVwZGF0ZUNvbXBvbmVudCh0cmFuc2FjdGlvbiwg
cHJldkVsZW1lbnQsIG5leHRFbGVtZW50LCBjb250ZXh0KTtcbiAgfSxcblxuICAvKipcbiAgICog
VXBkYXRlcyBhIERPTSBjb21wb25lbnQgYWZ0ZXIgaXQgaGFzIGFscmVhZHkgYmVlbiBhbGxvY2F0
ZWQgYW5kXG4gICAqIGF0dGFjaGVkIHRvIHRoZSBET00uIFJlY29uY2lsZXMgdGhlIHJvb3QgRE9N
IG5vZGUsIHRoZW4gcmVjdXJzZXMuXG4gICAqXG4gICAqIEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVU
cmFuc2FjdGlvbn0gdHJhbnNhY3Rpb25cbiAgICogQHBhcmFtIHtSZWFjdEVsZW1lbnR9IHByZXZF
bGVtZW50XG4gICAqIEBwYXJhbSB7UmVhY3RFbGVtZW50fSBuZXh0RWxlbWVudFxuICAgKiBAaW50
ZXJuYWxcbiAgICogQG92ZXJyaWRhYmxlXG4gICAqL1xuICB1cGRhdGVDb21wb25lbnQ6IGZ1bmN0
aW9uICh0cmFuc2FjdGlvbiwgcHJldkVsZW1lbnQsIG5leHRFbGVtZW50LCBjb250ZXh0KSB7XG4g
ICAgdmFyIGxhc3RQcm9wcyA9IHByZXZFbGVtZW50LnByb3BzO1xuICAgIHZhciBuZXh0UHJvcHMg
PSB0aGlzLl9jdXJyZW50RWxlbWVudC5wcm9wcztcblxuICAgIHN3aXRjaCAodGhpcy5fdGFnKSB7
XG4gICAgICBjYXNlICdpbnB1dCc6XG4gICAgICAgIGxhc3RQcm9wcyA9IFJlYWN0RE9NSW5wdXQu
Z2V0SG9zdFByb3BzKHRoaXMsIGxhc3RQcm9wcyk7XG4gICAgICAgIG5leHRQcm9wcyA9IFJlYWN0
RE9NSW5wdXQuZ2V0SG9zdFByb3BzKHRoaXMsIG5leHRQcm9wcyk7XG4gICAgICAgIGJyZWFrO1xu
ICAgICAgY2FzZSAnb3B0aW9uJzpcbiAgICAgICAgbGFzdFByb3BzID0gUmVhY3RET01PcHRpb24u
Z2V0SG9zdFByb3BzKHRoaXMsIGxhc3RQcm9wcyk7XG4gICAgICAgIG5leHRQcm9wcyA9IFJlYWN0
RE9NT3B0aW9uLmdldEhvc3RQcm9wcyh0aGlzLCBuZXh0UHJvcHMpO1xuICAgICAgICBicmVhaztc
biAgICAgIGNhc2UgJ3NlbGVjdCc6XG4gICAgICAgIGxhc3RQcm9wcyA9IFJlYWN0RE9NU2VsZWN0
LmdldEhvc3RQcm9wcyh0aGlzLCBsYXN0UHJvcHMpO1xuICAgICAgICBuZXh0UHJvcHMgPSBSZWFj
dERPTVNlbGVjdC5nZXRIb3N0UHJvcHModGhpcywgbmV4dFByb3BzKTtcbiAgICAgICAgYnJlYWs7
XG4gICAgICBjYXNlICd0ZXh0YXJlYSc6XG4gICAgICAgIGxhc3RQcm9wcyA9IFJlYWN0RE9NVGV4
dGFyZWEuZ2V0SG9zdFByb3BzKHRoaXMsIGxhc3RQcm9wcyk7XG4gICAgICAgIG5leHRQcm9wcyA9
IFJlYWN0RE9NVGV4dGFyZWEuZ2V0SG9zdFByb3BzKHRoaXMsIG5leHRQcm9wcyk7XG4gICAgICAg
IGJyZWFrO1xuICAgIH1cblxuICAgIGFzc2VydFZhbGlkUHJvcHModGhpcywgbmV4dFByb3BzKTtc
biAgICB0aGlzLl91cGRhdGVET01Qcm9wZXJ0aWVzKGxhc3RQcm9wcywgbmV4dFByb3BzLCB0cmFu
c2FjdGlvbik7XG4gICAgdGhpcy5fdXBkYXRlRE9NQ2hpbGRyZW4obGFzdFByb3BzLCBuZXh0UHJv
cHMsIHRyYW5zYWN0aW9uLCBjb250ZXh0KTtcblxuICAgIHN3aXRjaCAodGhpcy5fdGFnKSB7XG4g
ICAgICBjYXNlICdpbnB1dCc6XG4gICAgICAgIC8vIFVwZGF0ZSB0aGUgd3JhcHBlciBhcm91bmQg
aW5wdXRzICphZnRlciogdXBkYXRpbmcgcHJvcHMuIFRoaXMgaGFzIHRvXG4gICAgICAgIC8vIGhh
cHBlbiBhZnRlciBgX3VwZGF0ZURPTVByb3BlcnRpZXNgLiBPdGhlcndpc2UgSFRNTDUgaW5wdXQg
dmFsaWRhdGlvbnNcbiAgICAgICAgLy8gcmFpc2Ugd2FybmluZ3MgYW5kIHByZXZlbnQgdGhlIG5l
dyB2YWx1ZSBmcm9tIGJlaW5nIGFzc2lnbmVkLlxuICAgICAgICBSZWFjdERPTUlucHV0LnVwZGF0
ZVdyYXBwZXIodGhpcyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAndGV4dGFyZWEnOlxu
ICAgICAgICBSZWFjdERPTVRleHRhcmVhLnVwZGF0ZVdyYXBwZXIodGhpcyk7XG4gICAgICAgIGJy
ZWFrO1xuICAgICAgY2FzZSAnc2VsZWN0JzpcbiAgICAgICAgLy8gPHNlbGVjdD4gdmFsdWUgdXBk
YXRlIG5lZWRzIHRvIG9jY3VyIGFmdGVyIDxvcHRpb24+IGNoaWxkcmVuXG4gICAgICAgIC8vIHJl
Y29uY2lsaWF0aW9uXG4gICAgICAgIHRyYW5zYWN0aW9uLmdldFJlYWN0TW91bnRSZWFkeSgpLmVu
cXVldWUocG9zdFVwZGF0ZVNlbGVjdFdyYXBwZXIsIHRoaXMpO1xuICAgICAgICBicmVhaztcbiAg
ICB9XG4gIH0sXG5cbiAgLyoqXG4gICAqIFJlY29uY2lsZXMgdGhlIHByb3BlcnRpZXMgYnkgZGV0
ZWN0aW5nIGRpZmZlcmVuY2VzIGluIHByb3BlcnR5IHZhbHVlcyBhbmRcbiAgICogdXBkYXRpbmcg
dGhlIERPTSBhcyBuZWNlc3NhcnkuIFRoaXMgZnVuY3Rpb24gaXMgcHJvYmFibHkgdGhlIHNpbmds
ZSBtb3N0XG4gICAqIGNyaXRpY2FsIHBhdGggZm9yIHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbi5c
biAgICpcbiAgICogVE9ETzogQmVuY2htYXJrIHdoZXRoZXIgY2hlY2tpbmcgZm9yIGNoYW5nZWQg
dmFsdWVzIGluIG1lbW9yeSBhY3R1YWxseVxuICAgKiAgICAgICBpbXByb3ZlcyBwZXJmb3JtYW5j
ZSAoZXNwZWNpYWxseSBzdGF0aWNhbGx5IHBvc2l0aW9uZWQgZWxlbWVudHMpLlxuICAgKiBUT0RP
OiBCZW5jaG1hcmsgdGhlIGVmZmVjdHMgb2YgcHV0dGluZyB0aGlzIGF0IHRoZSB0b3Agc2luY2Ug
OTklIG9mIHByb3BzXG4gICAqICAgICAgIGRvIG5vdCBjaGFuZ2UgZm9yIGEgZ2l2ZW4gcmVjb25j
aWxpYXRpb24uXG4gICAqIFRPRE86IEJlbmNobWFyayBhcmVhcyB0aGF0IGNhbiBiZSBpbXByb3Zl
ZCB3aXRoIGNhY2hpbmcuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7b2JqZWN0
fSBsYXN0UHJvcHNcbiAgICogQHBhcmFtIHtvYmplY3R9IG5leHRQcm9wc1xuICAgKiBAcGFyYW0g
ez9ET01FbGVtZW50fSBub2RlXG4gICAqL1xuICBfdXBkYXRlRE9NUHJvcGVydGllczogZnVuY3Rp
b24gKGxhc3RQcm9wcywgbmV4dFByb3BzLCB0cmFuc2FjdGlvbikge1xuICAgIHZhciBwcm9wS2V5
O1xuICAgIHZhciBzdHlsZU5hbWU7XG4gICAgdmFyIHN0eWxlVXBkYXRlcztcbiAgICBmb3IgKHBy
b3BLZXkgaW4gbGFzdFByb3BzKSB7XG4gICAgICBpZiAobmV4dFByb3BzLmhhc093blByb3BlcnR5
KHByb3BLZXkpIHx8ICFsYXN0UHJvcHMuaGFzT3duUHJvcGVydHkocHJvcEtleSkgfHwgbGFzdFBy
b3BzW3Byb3BLZXldID09IG51bGwpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAg
ICBpZiAocHJvcEtleSA9PT0gU1RZTEUpIHtcbiAgICAgICAgdmFyIGxhc3RTdHlsZSA9IHRoaXMu
X3ByZXZpb3VzU3R5bGVDb3B5O1xuICAgICAgICBmb3IgKHN0eWxlTmFtZSBpbiBsYXN0U3R5bGUp
IHtcbiAgICAgICAgICBpZiAobGFzdFN0eWxlLmhhc093blByb3BlcnR5KHN0eWxlTmFtZSkpIHtc
biAgICAgICAgICAgIHN0eWxlVXBkYXRlcyA9IHN0eWxlVXBkYXRlcyB8fCB7fTtcbiAgICAgICAg
ICAgIHN0eWxlVXBkYXRlc1tzdHlsZU5hbWVdID0gJyc7XG4gICAgICAgICAgfVxuICAgICAgICB9
XG4gICAgICAgIHRoaXMuX3ByZXZpb3VzU3R5bGVDb3B5ID0gbnVsbDtcbiAgICAgIH0gZWxzZSBp
ZiAocmVnaXN0cmF0aW9uTmFtZU1vZHVsZXMuaGFzT3duUHJvcGVydHkocHJvcEtleSkpIHtcbiAg
ICAgICAgaWYgKGxhc3RQcm9wc1twcm9wS2V5XSkge1xuICAgICAgICAgIC8vIE9ubHkgY2FsbCBk
ZWxldGVMaXN0ZW5lciBpZiB0aGVyZSB3YXMgYSBsaXN0ZW5lciBwcmV2aW91c2x5IG9yXG4gICAg
ICAgICAgLy8gZWxzZSB3aWxsRGVsZXRlTGlzdGVuZXIgZ2V0cyBjYWxsZWQgd2hlbiB0aGVyZSB3
YXNuJ3QgYWN0dWFsbHkgYVxuICAgICAgICAgIC8vIGxpc3RlbmVyIChlLmcuLCBvbkNsaWNrPXtu
dWxsfSlcbiAgICAgICAgICBkZWxldGVMaXN0ZW5lcih0aGlzLCBwcm9wS2V5KTtcbiAgICAgICAg
fVxuICAgICAgfSBlbHNlIGlmIChpc0N1c3RvbUNvbXBvbmVudCh0aGlzLl90YWcsIGxhc3RQcm9w
cykpIHtcbiAgICAgICAgaWYgKCFSRVNFUlZFRF9QUk9QUy5oYXNPd25Qcm9wZXJ0eShwcm9wS2V5
KSkge1xuICAgICAgICAgIERPTVByb3BlcnR5T3BlcmF0aW9ucy5kZWxldGVWYWx1ZUZvckF0dHJp
YnV0ZShnZXROb2RlKHRoaXMpLCBwcm9wS2V5KTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlm
IChET01Qcm9wZXJ0eS5wcm9wZXJ0aWVzW3Byb3BLZXldIHx8IERPTVByb3BlcnR5LmlzQ3VzdG9t
QXR0cmlidXRlKHByb3BLZXkpKSB7XG4gICAgICAgIERPTVByb3BlcnR5T3BlcmF0aW9ucy5kZWxl
dGVWYWx1ZUZvclByb3BlcnR5KGdldE5vZGUodGhpcyksIHByb3BLZXkpO1xuICAgICAgfVxuICAg
IH1cbiAgICBmb3IgKHByb3BLZXkgaW4gbmV4dFByb3BzKSB7XG4gICAgICB2YXIgbmV4dFByb3Ag
PSBuZXh0UHJvcHNbcHJvcEtleV07XG4gICAgICB2YXIgbGFzdFByb3AgPSBwcm9wS2V5ID09PSBT
VFlMRSA/IHRoaXMuX3ByZXZpb3VzU3R5bGVDb3B5IDogbGFzdFByb3BzICE9IG51bGwgPyBsYXN0
UHJvcHNbcHJvcEtleV0gOiB1bmRlZmluZWQ7XG4gICAgICBpZiAoIW5leHRQcm9wcy5oYXNPd25Q
cm9wZXJ0eShwcm9wS2V5KSB8fCBuZXh0UHJvcCA9PT0gbGFzdFByb3AgfHwgbmV4dFByb3AgPT0g
bnVsbCAmJiBsYXN0UHJvcCA9PSBudWxsKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxu
ICAgICAgaWYgKHByb3BLZXkgPT09IFNUWUxFKSB7XG4gICAgICAgIGlmIChuZXh0UHJvcCkge1xu
ICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4g
ICAgICAgICAgICBjaGVja0FuZFdhcm5Gb3JNdXRhdGVkU3R5bGUodGhpcy5fcHJldmlvdXNTdHls
ZUNvcHksIHRoaXMuX3ByZXZpb3VzU3R5bGUsIHRoaXMpO1xuICAgICAgICAgICAgdGhpcy5fcHJl
dmlvdXNTdHlsZSA9IG5leHRQcm9wO1xuICAgICAgICAgIH1cbiAgICAgICAgICBuZXh0UHJvcCA9
IHRoaXMuX3ByZXZpb3VzU3R5bGVDb3B5ID0gX2Fzc2lnbih7fSwgbmV4dFByb3ApO1xuICAgICAg
ICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuX3ByZXZpb3VzU3R5bGVDb3B5ID0gbnVsbDtcbiAg
ICAgICAgfVxuICAgICAgICBpZiAobGFzdFByb3ApIHtcbiAgICAgICAgICAvLyBVbnNldCBzdHls
ZXMgb24gYGxhc3RQcm9wYCBidXQgbm90IG9uIGBuZXh0UHJvcGAuXG4gICAgICAgICAgZm9yIChz
dHlsZU5hbWUgaW4gbGFzdFByb3ApIHtcbiAgICAgICAgICAgIGlmIChsYXN0UHJvcC5oYXNPd25Q
cm9wZXJ0eShzdHlsZU5hbWUpICYmICghbmV4dFByb3AgfHwgIW5leHRQcm9wLmhhc093blByb3Bl
cnR5KHN0eWxlTmFtZSkpKSB7XG4gICAgICAgICAgICAgIHN0eWxlVXBkYXRlcyA9IHN0eWxlVXBk
YXRlcyB8fCB7fTtcbiAgICAgICAgICAgICAgc3R5bGVVcGRhdGVzW3N0eWxlTmFtZV0gPSAnJztc
biAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gVXBkYXRlIHN0eWxlcyB0
aGF0IGNoYW5nZWQgc2luY2UgYGxhc3RQcm9wYC5cbiAgICAgICAgICBmb3IgKHN0eWxlTmFtZSBp
biBuZXh0UHJvcCkge1xuICAgICAgICAgICAgaWYgKG5leHRQcm9wLmhhc093blByb3BlcnR5KHN0
eWxlTmFtZSkgJiYgbGFzdFByb3Bbc3R5bGVOYW1lXSAhPT0gbmV4dFByb3Bbc3R5bGVOYW1lXSkg
e1xuICAgICAgICAgICAgICBzdHlsZVVwZGF0ZXMgPSBzdHlsZVVwZGF0ZXMgfHwge307XG4gICAg
ICAgICAgICAgIHN0eWxlVXBkYXRlc1tzdHlsZU5hbWVdID0gbmV4dFByb3Bbc3R5bGVOYW1lXTtc
biAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAg
Ly8gUmVsaWVzIG9uIGB1cGRhdGVTdHlsZXNCeUlEYCBub3QgbXV0YXRpbmcgYHN0eWxlVXBkYXRl
c2AuXG4gICAgICAgICAgc3R5bGVVcGRhdGVzID0gbmV4dFByb3A7XG4gICAgICAgIH1cbiAgICAg
IH0gZWxzZSBpZiAocmVnaXN0cmF0aW9uTmFtZU1vZHVsZXMuaGFzT3duUHJvcGVydHkocHJvcEtl
eSkpIHtcbiAgICAgICAgaWYgKG5leHRQcm9wKSB7XG4gICAgICAgICAgZW5xdWV1ZVB1dExpc3Rl
bmVyKHRoaXMsIHByb3BLZXksIG5leHRQcm9wLCB0cmFuc2FjdGlvbik7XG4gICAgICAgIH0gZWxz
ZSBpZiAobGFzdFByb3ApIHtcbiAgICAgICAgICBkZWxldGVMaXN0ZW5lcih0aGlzLCBwcm9wS2V5
KTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChpc0N1c3RvbUNvbXBvbmVudCh0aGlzLl90
YWcsIG5leHRQcm9wcykpIHtcbiAgICAgICAgaWYgKCFSRVNFUlZFRF9QUk9QUy5oYXNPd25Qcm9w
ZXJ0eShwcm9wS2V5KSkge1xuICAgICAgICAgIERPTVByb3BlcnR5T3BlcmF0aW9ucy5zZXRWYWx1
ZUZvckF0dHJpYnV0ZShnZXROb2RlKHRoaXMpLCBwcm9wS2V5LCBuZXh0UHJvcCk7XG4gICAgICAg
IH1cbiAgICAgIH0gZWxzZSBpZiAoRE9NUHJvcGVydHkucHJvcGVydGllc1twcm9wS2V5XSB8fCBE
T01Qcm9wZXJ0eS5pc0N1c3RvbUF0dHJpYnV0ZShwcm9wS2V5KSkge1xuICAgICAgICB2YXIgbm9k
ZSA9IGdldE5vZGUodGhpcyk7XG4gICAgICAgIC8vIElmIHdlJ3JlIHVwZGF0aW5nIHRvIG51bGwg
b3IgdW5kZWZpbmVkLCB3ZSBzaG91bGQgcmVtb3ZlIHRoZSBwcm9wZXJ0eVxuICAgICAgICAvLyBm
cm9tIHRoZSBET00gbm9kZSBpbnN0ZWFkIG9mIGluYWR2ZXJ0ZW50bHkgc2V0dGluZyB0byBhIHN0
cmluZy4gVGhpc1xuICAgICAgICAvLyBicmluZ3MgdXMgaW4gbGluZSB3aXRoIHRoZSBzYW1lIGJl
aGF2aW9yIHdlIGhhdmUgb24gaW5pdGlhbCByZW5kZXIuXG4gICAgICAgIGlmIChuZXh0UHJvcCAh
PSBudWxsKSB7XG4gICAgICAgICAgRE9NUHJvcGVydHlPcGVyYXRpb25zLnNldFZhbHVlRm9yUHJv
cGVydHkobm9kZSwgcHJvcEtleSwgbmV4dFByb3ApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAg
ICAgIERPTVByb3BlcnR5T3BlcmF0aW9ucy5kZWxldGVWYWx1ZUZvclByb3BlcnR5KG5vZGUsIHBy
b3BLZXkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChzdHlsZVVwZGF0ZXMp
IHtcbiAgICAgIENTU1Byb3BlcnR5T3BlcmF0aW9ucy5zZXRWYWx1ZUZvclN0eWxlcyhnZXROb2Rl
KHRoaXMpLCBzdHlsZVVwZGF0ZXMsIHRoaXMpO1xuICAgIH1cbiAgfSxcblxuICAvKipcbiAgICog
UmVjb25jaWxlcyB0aGUgY2hpbGRyZW4gd2l0aCB0aGUgdmFyaW91cyBwcm9wZXJ0aWVzIHRoYXQg
YWZmZWN0IHRoZVxuICAgKiBjaGlsZHJlbiBjb250ZW50LlxuICAgKlxuICAgKiBAcGFyYW0ge29i
amVjdH0gbGFzdFByb3BzXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBuZXh0UHJvcHNcbiAgICogQHBh
cmFtIHtSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9ufSB0cmFuc2FjdGlvblxuICAgKiBAcGFyYW0g
e29iamVjdH0gY29udGV4dFxuICAgKi9cbiAgX3VwZGF0ZURPTUNoaWxkcmVuOiBmdW5jdGlvbiAo
bGFzdFByb3BzLCBuZXh0UHJvcHMsIHRyYW5zYWN0aW9uLCBjb250ZXh0KSB7XG4gICAgdmFyIGxh
c3RDb250ZW50ID0gQ09OVEVOVF9UWVBFU1t0eXBlb2YgbGFzdFByb3BzLmNoaWxkcmVuXSA/IGxh
c3RQcm9wcy5jaGlsZHJlbiA6IG51bGw7XG4gICAgdmFyIG5leHRDb250ZW50ID0gQ09OVEVOVF9U
WVBFU1t0eXBlb2YgbmV4dFByb3BzLmNoaWxkcmVuXSA/IG5leHRQcm9wcy5jaGlsZHJlbiA6IG51
bGw7XG5cbiAgICB2YXIgbGFzdEh0bWwgPSBsYXN0UHJvcHMuZGFuZ2Vyb3VzbHlTZXRJbm5lckhU
TUwgJiYgbGFzdFByb3BzLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MLl9faHRtbDtcbiAgICB2YXIg
bmV4dEh0bWwgPSBuZXh0UHJvcHMuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwgJiYgbmV4dFByb3Bz
LmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MLl9faHRtbDtcblxuICAgIC8vIE5vdGUgdGhlIHVzZSBv
ZiBgIT1gIHdoaWNoIGNoZWNrcyBmb3IgbnVsbCBvciB1bmRlZmluZWQuXG4gICAgdmFyIGxhc3RD
aGlsZHJlbiA9IGxhc3RDb250ZW50ICE9IG51bGwgPyBudWxsIDogbGFzdFByb3BzLmNoaWxkcmVu
O1xuICAgIHZhciBuZXh0Q2hpbGRyZW4gPSBuZXh0Q29udGVudCAhPSBudWxsID8gbnVsbCA6IG5l
eHRQcm9wcy5jaGlsZHJlbjtcblxuICAgIC8vIElmIHdlJ3JlIHN3aXRjaGluZyBmcm9tIGNoaWxk
cmVuIHRvIGNvbnRlbnQvaHRtbCBvciB2aWNlIHZlcnNhLCByZW1vdmVcbiAgICAvLyB0aGUgb2xk
IGNvbnRlbnRcbiAgICB2YXIgbGFzdEhhc0NvbnRlbnRPckh0bWwgPSBsYXN0Q29udGVudCAhPSBu
dWxsIHx8IGxhc3RIdG1sICE9IG51bGw7XG4gICAgdmFyIG5leHRIYXNDb250ZW50T3JIdG1sID0g
bmV4dENvbnRlbnQgIT0gbnVsbCB8fCBuZXh0SHRtbCAhPSBudWxsO1xuICAgIGlmIChsYXN0Q2hp
bGRyZW4gIT0gbnVsbCAmJiBuZXh0Q2hpbGRyZW4gPT0gbnVsbCkge1xuICAgICAgdGhpcy51cGRh
dGVDaGlsZHJlbihudWxsLCB0cmFuc2FjdGlvbiwgY29udGV4dCk7XG4gICAgfSBlbHNlIGlmIChs
YXN0SGFzQ29udGVudE9ySHRtbCAmJiAhbmV4dEhhc0NvbnRlbnRPckh0bWwpIHtcbiAgICAgIHRo
aXMudXBkYXRlVGV4dENvbnRlbnQoJycpO1xuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5W
ICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdU
b29sLm9uU2V0Q2hpbGRyZW4odGhpcy5fZGVidWdJRCwgW10pO1xuICAgICAgfVxuICAgIH1cblxu
ICAgIGlmIChuZXh0Q29udGVudCAhPSBudWxsKSB7XG4gICAgICBpZiAobGFzdENvbnRlbnQgIT09
IG5leHRDb250ZW50KSB7XG4gICAgICAgIHRoaXMudXBkYXRlVGV4dENvbnRlbnQoJycgKyBuZXh0
Q29udGVudCk7XG4gICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rp
b24nKSB7XG4gICAgICAgICAgc2V0QW5kVmFsaWRhdGVDb250ZW50Q2hpbGREZXYuY2FsbCh0aGlz
LCBuZXh0Q29udGVudCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKG5leHRI
dG1sICE9IG51bGwpIHtcbiAgICAgIGlmIChsYXN0SHRtbCAhPT0gbmV4dEh0bWwpIHtcbiAgICAg
ICAgdGhpcy51cGRhdGVNYXJrdXAoJycgKyBuZXh0SHRtbCk7XG4gICAgICB9XG4gICAgICBpZiAo
cHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICBSZWFjdElu
c3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25TZXRDaGlsZHJlbih0aGlzLl9kZWJ1Z0lELCBbXSk7
XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChuZXh0Q2hpbGRyZW4gIT0gbnVsbCkge1xuICAgICAg
aWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgc2V0
QW5kVmFsaWRhdGVDb250ZW50Q2hpbGREZXYuY2FsbCh0aGlzLCBudWxsKTtcbiAgICAgIH1cblxu
ICAgICAgdGhpcy51cGRhdGVDaGlsZHJlbihuZXh0Q2hpbGRyZW4sIHRyYW5zYWN0aW9uLCBjb250
ZXh0KTtcbiAgICB9XG4gIH0sXG5cbiAgZ2V0SG9zdE5vZGU6IGZ1bmN0aW9uICgpIHtcbiAgICBy
ZXR1cm4gZ2V0Tm9kZSh0aGlzKTtcbiAgfSxcblxuICAvKipcbiAgICogRGVzdHJveXMgYWxsIGV2
ZW50IHJlZ2lzdHJhdGlvbnMgZm9yIHRoaXMgaW5zdGFuY2UuIERvZXMgbm90IHJlbW92ZSBmcm9t
XG4gICAqIHRoZSBET00uIFRoYXQgbXVzdCBiZSBkb25lIGJ5IHRoZSBwYXJlbnQuXG4gICAqXG4g
ICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgdW5tb3VudENvbXBvbmVudDogZnVuY3Rpb24gKHNhZmVs
eSkge1xuICAgIHN3aXRjaCAodGhpcy5fdGFnKSB7XG4gICAgICBjYXNlICdhdWRpbyc6XG4gICAg
ICBjYXNlICdmb3JtJzpcbiAgICAgIGNhc2UgJ2lmcmFtZSc6XG4gICAgICBjYXNlICdpbWcnOlxu
ICAgICAgY2FzZSAnbGluayc6XG4gICAgICBjYXNlICdvYmplY3QnOlxuICAgICAgY2FzZSAnc291
cmNlJzpcbiAgICAgIGNhc2UgJ3ZpZGVvJzpcbiAgICAgICAgdmFyIGxpc3RlbmVycyA9IHRoaXMu
X3dyYXBwZXJTdGF0ZS5saXN0ZW5lcnM7XG4gICAgICAgIGlmIChsaXN0ZW5lcnMpIHtcbiAgICAg
ICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxpc3RlbmVycy5sZW5ndGg7IGkrKykge1xuICAgICAg
ICAgICAgbGlzdGVuZXJzW2ldLnJlbW92ZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAg
ICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2lucHV0JzpcbiAgICAgIGNhc2UgJ3RleHRhcmVhJzpc
biAgICAgICAgaW5wdXRWYWx1ZVRyYWNraW5nLnN0b3BUcmFja2luZyh0aGlzKTtcbiAgICAgICAg
YnJlYWs7XG4gICAgICBjYXNlICdodG1sJzpcbiAgICAgIGNhc2UgJ2hlYWQnOlxuICAgICAgY2Fz
ZSAnYm9keSc6XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBDb21wb25lbnRzIGxpa2UgPGh0bWw+
IDxoZWFkPiBhbmQgPGJvZHk+IGNhbid0IGJlIHJlbW92ZWQgb3IgYWRkZWRcbiAgICAgICAgICog
ZWFzaWx5IGluIGEgY3Jvc3MtYnJvd3NlciB3YXksIGhvd2V2ZXIgaXQncyB2YWx1YWJsZSB0byBi
ZSBhYmxlIHRvXG4gICAgICAgICAqIHRha2UgYWR2YW50YWdlIG9mIFJlYWN0J3MgcmVjb25jaWxp
YXRpb24gZm9yIHN0eWxpbmcgYW5kIDx0aXRsZT5cbiAgICAgICAgICogbWFuYWdlbWVudC4gU28g
d2UganVzdCBkb2N1bWVudCBpdCBhbmQgdGhyb3cgaW4gZGFuZ2Vyb3VzIGNhc2VzLlxuICAgICAg
ICAgKi9cbiAgICAgICAgIWZhbHNlID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0
aW9uJyA/IGludmFyaWFudChmYWxzZSwgJzwlcz4gdHJpZWQgdG8gdW5tb3VudC4gQmVjYXVzZSBv
ZiBjcm9zcy1icm93c2VyIHF1aXJrcyBpdCBpcyBpbXBvc3NpYmxlIHRvIHVubW91bnQgc29tZSB0
b3AtbGV2ZWwgY29tcG9uZW50cyAoZWcgPGh0bWw+LCA8aGVhZD4sIGFuZCA8Ym9keT4pIHJlbGlh
Ymx5IGFuZCBlZmZpY2llbnRseS4gVG8gZml4IHRoaXMsIGhhdmUgYSBzaW5nbGUgdG9wLWxldmVs
IGNvbXBvbmVudCB0aGF0IG5ldmVyIHVubW91bnRzIHJlbmRlciB0aGVzZSBlbGVtZW50cy4nLCB0
aGlzLl90YWcpIDogX3Byb2RJbnZhcmlhbnQoJzY2JywgdGhpcy5fdGFnKSA6IHZvaWQgMDtcbiAg
ICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgdGhpcy51bm1vdW50Q2hpbGRyZW4oc2FmZWx5KTtc
biAgICBSZWFjdERPTUNvbXBvbmVudFRyZWUudW5jYWNoZU5vZGUodGhpcyk7XG4gICAgRXZlbnRQ
bHVnaW5IdWIuZGVsZXRlQWxsTGlzdGVuZXJzKHRoaXMpO1xuICAgIHRoaXMuX3Jvb3ROb2RlSUQg
PSAwO1xuICAgIHRoaXMuX2RvbUlEID0gMDtcbiAgICB0aGlzLl93cmFwcGVyU3RhdGUgPSBudWxs
O1xuXG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAg
ICAgIHNldEFuZFZhbGlkYXRlQ29udGVudENoaWxkRGV2LmNhbGwodGhpcywgbnVsbCk7XG4gICAg
fVxuICB9LFxuXG4gIGdldFB1YmxpY0luc3RhbmNlOiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJu
IGdldE5vZGUodGhpcyk7XG4gIH1cbn07XG5cbl9hc3NpZ24oUmVhY3RET01Db21wb25lbnQucHJv
dG90eXBlLCBSZWFjdERPTUNvbXBvbmVudC5NaXhpbiwgUmVhY3RNdWx0aUNoaWxkLk1peGluKTtc
blxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdERPTUNvbXBvbmVudDtcblxuXG4vKioqKioqKioqKioq
KioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFjdC1kb20vbGliL1JlYWN0RE9N
Q29tcG9uZW50LmpzXG4gKiogbW9kdWxlIGlkID0gMTM4XG4gKiogbW9kdWxlIGNodW5rcyA9IDBc
biAqKi8iLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4g
KiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5z
ZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBm
aWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlv
bmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5U
UyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xu
XG52YXIgdmFsaWRhdGVET01OZXN0aW5nID0gcmVxdWlyZSgnLi92YWxpZGF0ZURPTU5lc3Rpbmcn
KTtcblxudmFyIERPQ19OT0RFX1RZUEUgPSA5O1xuXG5mdW5jdGlvbiBSZWFjdERPTUNvbnRhaW5l
ckluZm8odG9wTGV2ZWxXcmFwcGVyLCBub2RlKSB7XG4gIHZhciBpbmZvID0ge1xuICAgIF90b3BM
ZXZlbFdyYXBwZXI6IHRvcExldmVsV3JhcHBlcixcbiAgICBfaWRDb3VudGVyOiAxLFxuICAgIF9v
d25lckRvY3VtZW50OiBub2RlID8gbm9kZS5ub2RlVHlwZSA9PT0gRE9DX05PREVfVFlQRSA/IG5v
ZGUgOiBub2RlLm93bmVyRG9jdW1lbnQgOiBudWxsLFxuICAgIF9ub2RlOiBub2RlLFxuICAgIF90
YWc6IG5vZGUgPyBub2RlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgOiBudWxsLFxuICAgIF9uYW1l
c3BhY2VVUkk6IG5vZGUgPyBub2RlLm5hbWVzcGFjZVVSSSA6IG51bGxcbiAgfTtcbiAgaWYgKHBy
b2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICBpbmZvLl9hbmNlc3Rv
ckluZm8gPSBub2RlID8gdmFsaWRhdGVET01OZXN0aW5nLnVwZGF0ZWRBbmNlc3RvckluZm8obnVs
bCwgaW5mby5fdGFnLCBudWxsKSA6IG51bGw7XG4gIH1cbiAgcmV0dXJuIGluZm87XG59XG5cbm1v
ZHVsZS5leHBvcnRzID0gUmVhY3RET01Db250YWluZXJJbmZvO1xuXG5cbi8qKioqKioqKioqKioq
KioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0LWRvbS9saWIvUmVhY3RET01D
b250YWluZXJJbmZvLmpzXG4gKiogbW9kdWxlIGlkID0gMTM5XG4gKiogbW9kdWxlIGNodW5rcyA9
IDBcbiAqKi8iLCIvKipcbiAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQsIEZhY2Vib29rLCBJbmMu
XG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGlj
ZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5T
RSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRp
dGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFU
RU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJpY3Qn
O1xuXG52YXIgX2Fzc2lnbiA9IHJlcXVpcmUoJ29iamVjdC1hc3NpZ24nKTtcblxudmFyIERPTUxh
enlUcmVlID0gcmVxdWlyZSgnLi9ET01MYXp5VHJlZScpO1xudmFyIFJlYWN0RE9NQ29tcG9uZW50
VHJlZSA9IHJlcXVpcmUoJy4vUmVhY3RET01Db21wb25lbnRUcmVlJyk7XG5cbnZhciBSZWFjdERP
TUVtcHR5Q29tcG9uZW50ID0gZnVuY3Rpb24gKGluc3RhbnRpYXRlKSB7XG4gIC8vIFJlYWN0Q29t
cG9zaXRlQ29tcG9uZW50IHVzZXMgdGhpczpcbiAgdGhpcy5fY3VycmVudEVsZW1lbnQgPSBudWxs
O1xuICAvLyBSZWFjdERPTUNvbXBvbmVudFRyZWUgdXNlcyB0aGVzZTpcbiAgdGhpcy5faG9zdE5v
ZGUgPSBudWxsO1xuICB0aGlzLl9ob3N0UGFyZW50ID0gbnVsbDtcbiAgdGhpcy5faG9zdENvbnRh
aW5lckluZm8gPSBudWxsO1xuICB0aGlzLl9kb21JRCA9IDA7XG59O1xuX2Fzc2lnbihSZWFjdERP
TUVtcHR5Q29tcG9uZW50LnByb3RvdHlwZSwge1xuICBtb3VudENvbXBvbmVudDogZnVuY3Rpb24g
KHRyYW5zYWN0aW9uLCBob3N0UGFyZW50LCBob3N0Q29udGFpbmVySW5mbywgY29udGV4dCkge1xu
ICAgIHZhciBkb21JRCA9IGhvc3RDb250YWluZXJJbmZvLl9pZENvdW50ZXIrKztcbiAgICB0aGlz
Ll9kb21JRCA9IGRvbUlEO1xuICAgIHRoaXMuX2hvc3RQYXJlbnQgPSBob3N0UGFyZW50O1xuICAg
IHRoaXMuX2hvc3RDb250YWluZXJJbmZvID0gaG9zdENvbnRhaW5lckluZm87XG5cbiAgICB2YXIg
bm9kZVZhbHVlID0gJyByZWFjdC1lbXB0eTogJyArIHRoaXMuX2RvbUlEICsgJyAnO1xuICAgIGlm
ICh0cmFuc2FjdGlvbi51c2VDcmVhdGVFbGVtZW50KSB7XG4gICAgICB2YXIgb3duZXJEb2N1bWVu
dCA9IGhvc3RDb250YWluZXJJbmZvLl9vd25lckRvY3VtZW50O1xuICAgICAgdmFyIG5vZGUgPSBv
d25lckRvY3VtZW50LmNyZWF0ZUNvbW1lbnQobm9kZVZhbHVlKTtcbiAgICAgIFJlYWN0RE9NQ29t
cG9uZW50VHJlZS5wcmVjYWNoZU5vZGUodGhpcywgbm9kZSk7XG4gICAgICByZXR1cm4gRE9NTGF6
eVRyZWUobm9kZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh0cmFuc2FjdGlvbi5yZW5kZXJU
b1N0YXRpY01hcmt1cCkge1xuICAgICAgICAvLyBOb3JtYWxseSB3ZSdkIGluc2VydCBhIGNvbW1l
bnQgbm9kZSwgYnV0IHNpbmNlIHRoaXMgaXMgYSBzaXR1YXRpb25cbiAgICAgICAgLy8gd2hlcmUg
UmVhY3Qgd29uJ3QgdGFrZSBvdmVyIChzdGF0aWMgcGFnZXMpLCB3ZSBjYW4gc2ltcGx5IHJldHVy
blxuICAgICAgICAvLyBub3RoaW5nLlxuICAgICAgICByZXR1cm4gJyc7XG4gICAgICB9XG4gICAg
ICByZXR1cm4gJzwhLS0nICsgbm9kZVZhbHVlICsgJy0tPic7XG4gICAgfVxuICB9LFxuICByZWNl
aXZlQ29tcG9uZW50OiBmdW5jdGlvbiAoKSB7fSxcbiAgZ2V0SG9zdE5vZGU6IGZ1bmN0aW9uICgp
IHtcbiAgICByZXR1cm4gUmVhY3RET01Db21wb25lbnRUcmVlLmdldE5vZGVGcm9tSW5zdGFuY2Uo
dGhpcyk7XG4gIH0sXG4gIHVubW91bnRDb21wb25lbnQ6IGZ1bmN0aW9uICgpIHtcbiAgICBSZWFj
dERPTUNvbXBvbmVudFRyZWUudW5jYWNoZU5vZGUodGhpcyk7XG4gIH1cbn0pO1xuXG5tb2R1bGUu
ZXhwb3J0cyA9IFJlYWN0RE9NRW1wdHlDb21wb25lbnQ7XG5cblxuLyoqKioqKioqKioqKioqKioq
XG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3QtZG9tL2xpYi9SZWFjdERPTUVtcHR5
Q29tcG9uZW50LmpzXG4gKiogbW9kdWxlIGlkID0gMTQwXG4gKiogbW9kdWxlIGNodW5rcyA9IDBc
biAqKi8iLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4g
KiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5z
ZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBm
aWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlv
bmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5U
UyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xu
XG52YXIgUmVhY3RET01GZWF0dXJlRmxhZ3MgPSB7XG4gIHVzZUNyZWF0ZUVsZW1lbnQ6IHRydWUs
XG4gIHVzZUZpYmVyOiBmYWxzZVxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdERPTUZlYXR1
cmVGbGFncztcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoq
IC4vfi9yZWFjdC1kb20vbGliL1JlYWN0RE9NRmVhdHVyZUZsYWdzLmpzXG4gKiogbW9kdWxlIGlk
ID0gMTQxXG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENvcHlyaWdodCAy
MDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpc
biAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNl
bnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBv
ZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmln
aHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9y
eS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgRE9NQ2hpbGRyZW5PcGVyYXRpb25z
ID0gcmVxdWlyZSgnLi9ET01DaGlsZHJlbk9wZXJhdGlvbnMnKTtcbnZhciBSZWFjdERPTUNvbXBv
bmVudFRyZWUgPSByZXF1aXJlKCcuL1JlYWN0RE9NQ29tcG9uZW50VHJlZScpO1xuXG4vKipcbiAq
IE9wZXJhdGlvbnMgdXNlZCB0byBwcm9jZXNzIHVwZGF0ZXMgdG8gRE9NIG5vZGVzLlxuICovXG52
YXIgUmVhY3RET01JRE9wZXJhdGlvbnMgPSB7XG4gIC8qKlxuICAgKiBVcGRhdGVzIGEgY29tcG9u
ZW50J3MgY2hpbGRyZW4gYnkgcHJvY2Vzc2luZyBhIHNlcmllcyBvZiB1cGRhdGVzLlxuICAgKlxu
ICAgKiBAcGFyYW0ge2FycmF5PG9iamVjdD59IHVwZGF0ZXMgTGlzdCBvZiB1cGRhdGUgY29uZmln
dXJhdGlvbnMuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgZGFuZ2Vyb3VzbHlQcm9jZXNzQ2hp
bGRyZW5VcGRhdGVzOiBmdW5jdGlvbiAocGFyZW50SW5zdCwgdXBkYXRlcykge1xuICAgIHZhciBu
b2RlID0gUmVhY3RET01Db21wb25lbnRUcmVlLmdldE5vZGVGcm9tSW5zdGFuY2UocGFyZW50SW5z
dCk7XG4gICAgRE9NQ2hpbGRyZW5PcGVyYXRpb25zLnByb2Nlc3NVcGRhdGVzKG5vZGUsIHVwZGF0
ZXMpO1xuICB9XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0RE9NSURPcGVyYXRpb25zO1xu
XG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0
LWRvbS9saWIvUmVhY3RET01JRE9wZXJhdGlvbnMuanNcbiAqKiBtb2R1bGUgaWQgPSAxNDJcbiAq
KiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2Vu
dCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBz
b3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQg
aW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291
cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJl
IGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAq
L1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBfcHJvZEludmFyaWFudCA9IHJlcXVpcmUoJy4vcmVh
Y3RQcm9kSW52YXJpYW50JyksXG4gICAgX2Fzc2lnbiA9IHJlcXVpcmUoJ29iamVjdC1hc3NpZ24n
KTtcblxudmFyIERPTVByb3BlcnR5T3BlcmF0aW9ucyA9IHJlcXVpcmUoJy4vRE9NUHJvcGVydHlP
cGVyYXRpb25zJyk7XG52YXIgTGlua2VkVmFsdWVVdGlscyA9IHJlcXVpcmUoJy4vTGlua2VkVmFs
dWVVdGlscycpO1xudmFyIFJlYWN0RE9NQ29tcG9uZW50VHJlZSA9IHJlcXVpcmUoJy4vUmVhY3RE
T01Db21wb25lbnRUcmVlJyk7XG52YXIgUmVhY3RVcGRhdGVzID0gcmVxdWlyZSgnLi9SZWFjdFVw
ZGF0ZXMnKTtcblxudmFyIGludmFyaWFudCA9IHJlcXVpcmUoJ2ZianMvbGliL2ludmFyaWFudCcp
O1xudmFyIHdhcm5pbmcgPSByZXF1aXJlKCdmYmpzL2xpYi93YXJuaW5nJyk7XG5cbnZhciBkaWRX
YXJuVmFsdWVMaW5rID0gZmFsc2U7XG52YXIgZGlkV2FybkNoZWNrZWRMaW5rID0gZmFsc2U7XG52
YXIgZGlkV2FyblZhbHVlRGVmYXVsdFZhbHVlID0gZmFsc2U7XG52YXIgZGlkV2FybkNoZWNrZWRE
ZWZhdWx0Q2hlY2tlZCA9IGZhbHNlO1xudmFyIGRpZFdhcm5Db250cm9sbGVkVG9VbmNvbnRyb2xs
ZWQgPSBmYWxzZTtcbnZhciBkaWRXYXJuVW5jb250cm9sbGVkVG9Db250cm9sbGVkID0gZmFsc2U7
XG5cbmZ1bmN0aW9uIGZvcmNlVXBkYXRlSWZNb3VudGVkKCkge1xuICBpZiAodGhpcy5fcm9vdE5v
ZGVJRCkge1xuICAgIC8vIERPTSBjb21wb25lbnQgaXMgc3RpbGwgbW91bnRlZDsgdXBkYXRlXG4g
ICAgUmVhY3RET01JbnB1dC51cGRhdGVXcmFwcGVyKHRoaXMpO1xuICB9XG59XG5cbmZ1bmN0aW9u
IGlzQ29udHJvbGxlZChwcm9wcykge1xuICB2YXIgdXNlc0NoZWNrZWQgPSBwcm9wcy50eXBlID09
PSAnY2hlY2tib3gnIHx8IHByb3BzLnR5cGUgPT09ICdyYWRpbyc7XG4gIHJldHVybiB1c2VzQ2hl
Y2tlZCA/IHByb3BzLmNoZWNrZWQgIT0gbnVsbCA6IHByb3BzLnZhbHVlICE9IG51bGw7XG59XG5c
bi8qKlxuICogSW1wbGVtZW50cyBhbiA8aW5wdXQ+IGhvc3QgY29tcG9uZW50IHRoYXQgYWxsb3dz
IHNldHRpbmcgdGhlc2Ugb3B0aW9uYWxcbiAqIHByb3BzOiBgY2hlY2tlZGAsIGB2YWx1ZWAsIGBk
ZWZhdWx0Q2hlY2tlZGAsIGFuZCBgZGVmYXVsdFZhbHVlYC5cbiAqXG4gKiBJZiBgY2hlY2tlZGAg
b3IgYHZhbHVlYCBhcmUgbm90IHN1cHBsaWVkIChvciBudWxsL3VuZGVmaW5lZCksIHVzZXIgYWN0
aW9uc1xuICogdGhhdCBhZmZlY3QgdGhlIGNoZWNrZWQgc3RhdGUgb3IgdmFsdWUgd2lsbCB0cmln
Z2VyIHVwZGF0ZXMgdG8gdGhlIGVsZW1lbnQuXG4gKlxuICogSWYgdGhleSBhcmUgc3VwcGxpZWQg
KGFuZCBub3QgbnVsbC91bmRlZmluZWQpLCB0aGUgcmVuZGVyZWQgZWxlbWVudCB3aWxsIG5vdFxu
ICogdHJpZ2dlciB1cGRhdGVzIHRvIHRoZSBlbGVtZW50LiBJbnN0ZWFkLCB0aGUgcHJvcHMgbXVz
dCBjaGFuZ2UgaW4gb3JkZXIgZm9yXG4gKiB0aGUgcmVuZGVyZWQgZWxlbWVudCB0byBiZSB1cGRh
dGVkLlxuICpcbiAqIFRoZSByZW5kZXJlZCBlbGVtZW50IHdpbGwgYmUgaW5pdGlhbGl6ZWQgYXMg
dW5jaGVja2VkIChvciBgZGVmYXVsdENoZWNrZWRgKVxuICogd2l0aCBhbiBlbXB0eSB2YWx1ZSAo
b3IgYGRlZmF1bHRWYWx1ZWApLlxuICpcbiAqIEBzZWUgaHR0cDovL3d3dy53My5vcmcvVFIvMjAx
Mi9XRC1odG1sNS0yMDEyMTAyNS90aGUtaW5wdXQtZWxlbWVudC5odG1sXG4gKi9cbnZhciBSZWFj
dERPTUlucHV0ID0ge1xuICBnZXRIb3N0UHJvcHM6IGZ1bmN0aW9uIChpbnN0LCBwcm9wcykge1xu
ICAgIHZhciB2YWx1ZSA9IExpbmtlZFZhbHVlVXRpbHMuZ2V0VmFsdWUocHJvcHMpO1xuICAgIHZh
ciBjaGVja2VkID0gTGlua2VkVmFsdWVVdGlscy5nZXRDaGVja2VkKHByb3BzKTtcblxuICAgIHZh
ciBob3N0UHJvcHMgPSBfYXNzaWduKHtcbiAgICAgIC8vIE1ha2Ugc3VyZSB3ZSBzZXQgLnR5cGUg
YmVmb3JlIGFueSBvdGhlciBwcm9wZXJ0aWVzIChzZXR0aW5nIC52YWx1ZVxuICAgICAgLy8gYmVm
b3JlIC50eXBlIG1lYW5zIC52YWx1ZSBpcyBsb3N0IGluIElFMTEgYW5kIGJlbG93KVxuICAgICAg
dHlwZTogdW5kZWZpbmVkLFxuICAgICAgLy8gTWFrZSBzdXJlIHdlIHNldCAuc3RlcCBiZWZvcmUg
LnZhbHVlIChzZXR0aW5nIC52YWx1ZSBiZWZvcmUgLnN0ZXBcbiAgICAgIC8vIG1lYW5zIC52YWx1
ZSBpcyByb3VuZGVkIG9uIG1vdW50LCBiYXNlZCB1cG9uIHN0ZXAgcHJlY2lzaW9uKVxuICAgICAg
c3RlcDogdW5kZWZpbmVkLFxuICAgICAgLy8gTWFrZSBzdXJlIHdlIHNldCAubWluICYgLm1heCBi
ZWZvcmUgLnZhbHVlICh0byBlbnN1cmUgcHJvcGVyIG9yZGVyXG4gICAgICAvLyBpbiBjb3JuZXIg
Y2FzZXMgc3VjaCBhcyBtaW4gb3IgbWF4IGRlcml2aW5nIGZyb20gdmFsdWUsIGUuZy4gSXNzdWUg
IzcxNzApXG4gICAgICBtaW46IHVuZGVmaW5lZCxcbiAgICAgIG1heDogdW5kZWZpbmVkXG4gICAg
fSwgcHJvcHMsIHtcbiAgICAgIGRlZmF1bHRDaGVja2VkOiB1bmRlZmluZWQsXG4gICAgICBkZWZh
dWx0VmFsdWU6IHVuZGVmaW5lZCxcbiAgICAgIHZhbHVlOiB2YWx1ZSAhPSBudWxsID8gdmFsdWUg
OiBpbnN0Ll93cmFwcGVyU3RhdGUuaW5pdGlhbFZhbHVlLFxuICAgICAgY2hlY2tlZDogY2hlY2tl
ZCAhPSBudWxsID8gY2hlY2tlZCA6IGluc3QuX3dyYXBwZXJTdGF0ZS5pbml0aWFsQ2hlY2tlZCxc
biAgICAgIG9uQ2hhbmdlOiBpbnN0Ll93cmFwcGVyU3RhdGUub25DaGFuZ2VcbiAgICB9KTtcblxu
ICAgIHJldHVybiBob3N0UHJvcHM7XG4gIH0sXG5cbiAgbW91bnRXcmFwcGVyOiBmdW5jdGlvbiAo
aW5zdCwgcHJvcHMpIHtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0
aW9uJykge1xuICAgICAgTGlua2VkVmFsdWVVdGlscy5jaGVja1Byb3BUeXBlcygnaW5wdXQnLCBw
cm9wcywgaW5zdC5fY3VycmVudEVsZW1lbnQuX293bmVyKTtcblxuICAgICAgdmFyIG93bmVyID0g
aW5zdC5fY3VycmVudEVsZW1lbnQuX293bmVyO1xuXG4gICAgICBpZiAocHJvcHMudmFsdWVMaW5r
ICE9PSB1bmRlZmluZWQgJiYgIWRpZFdhcm5WYWx1ZUxpbmspIHtcbiAgICAgICAgcHJvY2Vzcy5l
bnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdgdmFsdWVMaW5r
YCBwcm9wIG9uIGBpbnB1dGAgaXMgZGVwcmVjYXRlZDsgc2V0IGB2YWx1ZWAgYW5kIGBvbkNoYW5n
ZWAgaW5zdGVhZC4nKSA6IHZvaWQgMDtcbiAgICAgICAgZGlkV2FyblZhbHVlTGluayA9IHRydWU7
XG4gICAgICB9XG4gICAgICBpZiAocHJvcHMuY2hlY2tlZExpbmsgIT09IHVuZGVmaW5lZCAmJiAh
ZGlkV2FybkNoZWNrZWRMaW5rKSB7XG4gICAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAn
cHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnYGNoZWNrZWRMaW5rYCBwcm9wIG9uIGBpbnB1
dGAgaXMgZGVwcmVjYXRlZDsgc2V0IGB2YWx1ZWAgYW5kIGBvbkNoYW5nZWAgaW5zdGVhZC4nKSA6
IHZvaWQgMDtcbiAgICAgICAgZGlkV2FybkNoZWNrZWRMaW5rID0gdHJ1ZTtcbiAgICAgIH1cbiAg
ICAgIGlmIChwcm9wcy5jaGVja2VkICE9PSB1bmRlZmluZWQgJiYgcHJvcHMuZGVmYXVsdENoZWNr
ZWQgIT09IHVuZGVmaW5lZCAmJiAhZGlkV2FybkNoZWNrZWREZWZhdWx0Q2hlY2tlZCkge1xuICAg
ICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxz
ZSwgJyVzIGNvbnRhaW5zIGFuIGlucHV0IG9mIHR5cGUgJXMgd2l0aCBib3RoIGNoZWNrZWQgYW5k
IGRlZmF1bHRDaGVja2VkIHByb3BzLiAnICsgJ0lucHV0IGVsZW1lbnRzIG11c3QgYmUgZWl0aGVy
IGNvbnRyb2xsZWQgb3IgdW5jb250cm9sbGVkICcgKyAnKHNwZWNpZnkgZWl0aGVyIHRoZSBjaGVj
a2VkIHByb3AsIG9yIHRoZSBkZWZhdWx0Q2hlY2tlZCBwcm9wLCBidXQgbm90ICcgKyAnYm90aCku
IERlY2lkZSBiZXR3ZWVuIHVzaW5nIGEgY29udHJvbGxlZCBvciB1bmNvbnRyb2xsZWQgaW5wdXQg
JyArICdlbGVtZW50IGFuZCByZW1vdmUgb25lIG9mIHRoZXNlIHByb3BzLiBNb3JlIGluZm86ICcg
KyAnaHR0cHM6Ly9mYi5tZS9yZWFjdC1jb250cm9sbGVkLWNvbXBvbmVudHMnLCBvd25lciAmJiBv
d25lci5nZXROYW1lKCkgfHwgJ0EgY29tcG9uZW50JywgcHJvcHMudHlwZSkgOiB2b2lkIDA7XG4g
ICAgICAgIGRpZFdhcm5DaGVja2VkRGVmYXVsdENoZWNrZWQgPSB0cnVlO1xuICAgICAgfVxuICAg
ICAgaWYgKHByb3BzLnZhbHVlICE9PSB1bmRlZmluZWQgJiYgcHJvcHMuZGVmYXVsdFZhbHVlICE9
PSB1bmRlZmluZWQgJiYgIWRpZFdhcm5WYWx1ZURlZmF1bHRWYWx1ZSkge1xuICAgICAgICBwcm9j
ZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJyVzIGNv
bnRhaW5zIGFuIGlucHV0IG9mIHR5cGUgJXMgd2l0aCBib3RoIHZhbHVlIGFuZCBkZWZhdWx0VmFs
dWUgcHJvcHMuICcgKyAnSW5wdXQgZWxlbWVudHMgbXVzdCBiZSBlaXRoZXIgY29udHJvbGxlZCBv
ciB1bmNvbnRyb2xsZWQgJyArICcoc3BlY2lmeSBlaXRoZXIgdGhlIHZhbHVlIHByb3AsIG9yIHRo
ZSBkZWZhdWx0VmFsdWUgcHJvcCwgYnV0IG5vdCAnICsgJ2JvdGgpLiBEZWNpZGUgYmV0d2VlbiB1
c2luZyBhIGNvbnRyb2xsZWQgb3IgdW5jb250cm9sbGVkIGlucHV0ICcgKyAnZWxlbWVudCBhbmQg
cmVtb3ZlIG9uZSBvZiB0aGVzZSBwcm9wcy4gTW9yZSBpbmZvOiAnICsgJ2h0dHBzOi8vZmIubWUv
cmVhY3QtY29udHJvbGxlZC1jb21wb25lbnRzJywgb3duZXIgJiYgb3duZXIuZ2V0TmFtZSgpIHx8
ICdBIGNvbXBvbmVudCcsIHByb3BzLnR5cGUpIDogdm9pZCAwO1xuICAgICAgICBkaWRXYXJuVmFs
dWVEZWZhdWx0VmFsdWUgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciBkZWZhdWx0
VmFsdWUgPSBwcm9wcy5kZWZhdWx0VmFsdWU7XG4gICAgaW5zdC5fd3JhcHBlclN0YXRlID0ge1xu
ICAgICAgaW5pdGlhbENoZWNrZWQ6IHByb3BzLmNoZWNrZWQgIT0gbnVsbCA/IHByb3BzLmNoZWNr
ZWQgOiBwcm9wcy5kZWZhdWx0Q2hlY2tlZCxcbiAgICAgIGluaXRpYWxWYWx1ZTogcHJvcHMudmFs
dWUgIT0gbnVsbCA/IHByb3BzLnZhbHVlIDogZGVmYXVsdFZhbHVlLFxuICAgICAgbGlzdGVuZXJz
OiBudWxsLFxuICAgICAgb25DaGFuZ2U6IF9oYW5kbGVDaGFuZ2UuYmluZChpbnN0KSxcbiAgICAg
IGNvbnRyb2xsZWQ6IGlzQ29udHJvbGxlZChwcm9wcylcbiAgICB9O1xuICB9LFxuXG4gIHVwZGF0
ZVdyYXBwZXI6IGZ1bmN0aW9uIChpbnN0KSB7XG4gICAgdmFyIHByb3BzID0gaW5zdC5fY3VycmVu
dEVsZW1lbnQucHJvcHM7XG5cbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9k
dWN0aW9uJykge1xuICAgICAgdmFyIGNvbnRyb2xsZWQgPSBpc0NvbnRyb2xsZWQocHJvcHMpO1xu
ICAgICAgdmFyIG93bmVyID0gaW5zdC5fY3VycmVudEVsZW1lbnQuX293bmVyO1xuXG4gICAgICBp
ZiAoIWluc3QuX3dyYXBwZXJTdGF0ZS5jb250cm9sbGVkICYmIGNvbnRyb2xsZWQgJiYgIWRpZFdh
cm5VbmNvbnRyb2xsZWRUb0NvbnRyb2xsZWQpIHtcbiAgICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9F
TlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICclcyBpcyBjaGFuZ2luZyBhbiB1
bmNvbnRyb2xsZWQgaW5wdXQgb2YgdHlwZSAlcyB0byBiZSBjb250cm9sbGVkLiAnICsgJ0lucHV0
IGVsZW1lbnRzIHNob3VsZCBub3Qgc3dpdGNoIGZyb20gdW5jb250cm9sbGVkIHRvIGNvbnRyb2xs
ZWQgKG9yIHZpY2UgdmVyc2EpLiAnICsgJ0RlY2lkZSBiZXR3ZWVuIHVzaW5nIGEgY29udHJvbGxl
ZCBvciB1bmNvbnRyb2xsZWQgaW5wdXQgJyArICdlbGVtZW50IGZvciB0aGUgbGlmZXRpbWUgb2Yg
dGhlIGNvbXBvbmVudC4gTW9yZSBpbmZvOiBodHRwczovL2ZiLm1lL3JlYWN0LWNvbnRyb2xsZWQt
Y29tcG9uZW50cycsIG93bmVyICYmIG93bmVyLmdldE5hbWUoKSB8fCAnQSBjb21wb25lbnQnLCBw
cm9wcy50eXBlKSA6IHZvaWQgMDtcbiAgICAgICAgZGlkV2FyblVuY29udHJvbGxlZFRvQ29udHJv
bGxlZCA9IHRydWU7XG4gICAgICB9XG4gICAgICBpZiAoaW5zdC5fd3JhcHBlclN0YXRlLmNvbnRy
b2xsZWQgJiYgIWNvbnRyb2xsZWQgJiYgIWRpZFdhcm5Db250cm9sbGVkVG9VbmNvbnRyb2xsZWQp
IHtcbiAgICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5p
bmcoZmFsc2UsICclcyBpcyBjaGFuZ2luZyBhIGNvbnRyb2xsZWQgaW5wdXQgb2YgdHlwZSAlcyB0
byBiZSB1bmNvbnRyb2xsZWQuICcgKyAnSW5wdXQgZWxlbWVudHMgc2hvdWxkIG5vdCBzd2l0Y2gg
ZnJvbSBjb250cm9sbGVkIHRvIHVuY29udHJvbGxlZCAob3IgdmljZSB2ZXJzYSkuICcgKyAnRGVj
aWRlIGJldHdlZW4gdXNpbmcgYSBjb250cm9sbGVkIG9yIHVuY29udHJvbGxlZCBpbnB1dCAnICsg
J2VsZW1lbnQgZm9yIHRoZSBsaWZldGltZSBvZiB0aGUgY29tcG9uZW50LiBNb3JlIGluZm86IGh0
dHBzOi8vZmIubWUvcmVhY3QtY29udHJvbGxlZC1jb21wb25lbnRzJywgb3duZXIgJiYgb3duZXIu
Z2V0TmFtZSgpIHx8ICdBIGNvbXBvbmVudCcsIHByb3BzLnR5cGUpIDogdm9pZCAwO1xuICAgICAg
ICBkaWRXYXJuQ29udHJvbGxlZFRvVW5jb250cm9sbGVkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9
XG5cbiAgICAvLyBUT0RPOiBTaG91bGRuJ3QgdGhpcyBiZSBnZXRDaGVja2VkKHByb3BzKT9cbiAg
ICB2YXIgY2hlY2tlZCA9IHByb3BzLmNoZWNrZWQ7XG4gICAgaWYgKGNoZWNrZWQgIT0gbnVsbCkg
e1xuICAgICAgRE9NUHJvcGVydHlPcGVyYXRpb25zLnNldFZhbHVlRm9yUHJvcGVydHkoUmVhY3RE
T01Db21wb25lbnRUcmVlLmdldE5vZGVGcm9tSW5zdGFuY2UoaW5zdCksICdjaGVja2VkJywgY2hl
Y2tlZCB8fCBmYWxzZSk7XG4gICAgfVxuXG4gICAgdmFyIG5vZGUgPSBSZWFjdERPTUNvbXBvbmVu
dFRyZWUuZ2V0Tm9kZUZyb21JbnN0YW5jZShpbnN0KTtcbiAgICB2YXIgdmFsdWUgPSBMaW5rZWRW
YWx1ZVV0aWxzLmdldFZhbHVlKHByb3BzKTtcbiAgICBpZiAodmFsdWUgIT0gbnVsbCkge1xuICAg
ICAgaWYgKHZhbHVlID09PSAwICYmIG5vZGUudmFsdWUgPT09ICcnKSB7XG4gICAgICAgIG5vZGUu
dmFsdWUgPSAnMCc7XG4gICAgICAgIC8vIE5vdGU6IElFOSByZXBvcnRzIGEgbnVtYmVyIGlucHV0
cyBhcyAndGV4dCcsIHNvIGNoZWNrIHByb3BzIGluc3RlYWQuXG4gICAgICB9IGVsc2UgaWYgKHBy
b3BzLnR5cGUgPT09ICdudW1iZXInKSB7XG4gICAgICAgIC8vIFNpbXVsYXRlIGBpbnB1dC52YWx1
ZUFzTnVtYmVyYC4gSUU5IGRvZXMgbm90IHN1cHBvcnQgaXRcbiAgICAgICAgdmFyIHZhbHVlQXNO
dW1iZXIgPSBwYXJzZUZsb2F0KG5vZGUudmFsdWUsIDEwKSB8fCAwO1xuXG4gICAgICAgIGlmIChc
biAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gICAgICAgIHZhbHVlICE9IHZh
bHVlQXNOdW1iZXIgfHxcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gICAg
ICAgIHZhbHVlID09IHZhbHVlQXNOdW1iZXIgJiYgbm9kZS52YWx1ZSAhPSB2YWx1ZSkge1xuICAg
ICAgICAgIC8vIENhc3QgYHZhbHVlYCB0byBhIHN0cmluZyB0byBlbnN1cmUgdGhlIHZhbHVlIGlz
IHNldCBjb3JyZWN0bHkuIFdoaWxlXG4gICAgICAgICAgLy8gYnJvd3NlcnMgdHlwaWNhbGx5IGRv
IHRoaXMgYXMgbmVjZXNzYXJ5LCBqc2RvbSBkb2Vzbid0LlxuICAgICAgICAgIG5vZGUudmFsdWUg
PSAnJyArIHZhbHVlO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKG5vZGUudmFsdWUgIT09
ICcnICsgdmFsdWUpIHtcbiAgICAgICAgLy8gQ2FzdCBgdmFsdWVgIHRvIGEgc3RyaW5nIHRvIGVu
c3VyZSB0aGUgdmFsdWUgaXMgc2V0IGNvcnJlY3RseS4gV2hpbGVcbiAgICAgICAgLy8gYnJvd3Nl
cnMgdHlwaWNhbGx5IGRvIHRoaXMgYXMgbmVjZXNzYXJ5LCBqc2RvbSBkb2Vzbid0LlxuICAgICAg
ICBub2RlLnZhbHVlID0gJycgKyB2YWx1ZTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAg
aWYgKHByb3BzLnZhbHVlID09IG51bGwgJiYgcHJvcHMuZGVmYXVsdFZhbHVlICE9IG51bGwpIHtc
biAgICAgICAgLy8gSW4gQ2hyb21lLCBhc3NpZ25pbmcgZGVmYXVsdFZhbHVlIHRvIGNlcnRhaW4g
aW5wdXQgdHlwZXMgdHJpZ2dlcnMgaW5wdXQgdmFsaWRhdGlvbi5cbiAgICAgICAgLy8gRm9yIG51
bWJlciBpbnB1dHMsIHRoZSBkaXNwbGF5IHZhbHVlIGxvc2VzIHRyYWlsaW5nIGRlY2ltYWwgcG9p
bnRzLiBGb3IgZW1haWwgaW5wdXRzLFxuICAgICAgICAvLyBDaHJvbWUgcmFpc2VzIFwiVGhlIHNw
ZWNpZmllZCB2YWx1ZSA8eD4gaXMgbm90IGEgdmFsaWQgZW1haWwgYWRkcmVzc1wiLlxuICAgICAg
ICAvL1xuICAgICAgICAvLyBIZXJlIHdlIGNoZWNrIHRvIHNlZSBpZiB0aGUgZGVmYXVsdFZhbHVl
IGhhcyBhY3R1YWxseSBjaGFuZ2VkLCBhdm9pZGluZyB0aGVzZSBwcm9ibGVtc1xuICAgICAgICAv
LyB3aGVuIHRoZSB1c2VyIGlzIGlucHV0dGluZyB0ZXh0XG4gICAgICAgIC8vXG4gICAgICAgIC8v
IGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9pc3N1ZXMvNzI1M1xuICAgICAgICBp
ZiAobm9kZS5kZWZhdWx0VmFsdWUgIT09ICcnICsgcHJvcHMuZGVmYXVsdFZhbHVlKSB7XG4gICAg
ICAgICAgbm9kZS5kZWZhdWx0VmFsdWUgPSAnJyArIHByb3BzLmRlZmF1bHRWYWx1ZTtcbiAgICAg
ICAgfVxuICAgICAgfVxuICAgICAgaWYgKHByb3BzLmNoZWNrZWQgPT0gbnVsbCAmJiBwcm9wcy5k
ZWZhdWx0Q2hlY2tlZCAhPSBudWxsKSB7XG4gICAgICAgIG5vZGUuZGVmYXVsdENoZWNrZWQgPSAh
IXByb3BzLmRlZmF1bHRDaGVja2VkO1xuICAgICAgfVxuICAgIH1cbiAgfSxcblxuICBwb3N0TW91
bnRXcmFwcGVyOiBmdW5jdGlvbiAoaW5zdCkge1xuICAgIHZhciBwcm9wcyA9IGluc3QuX2N1cnJl
bnRFbGVtZW50LnByb3BzO1xuXG4gICAgLy8gVGhpcyBpcyBpbiBwb3N0TW91bnQgYmVjYXVzZSB3
ZSBuZWVkIGFjY2VzcyB0byB0aGUgRE9NIG5vZGUsIHdoaWNoIGlzIG5vdFxuICAgIC8vIGF2YWls
YWJsZSB1bnRpbCBhZnRlciB0aGUgY29tcG9uZW50IGhhcyBtb3VudGVkLlxuICAgIHZhciBub2Rl
ID0gUmVhY3RET01Db21wb25lbnRUcmVlLmdldE5vZGVGcm9tSW5zdGFuY2UoaW5zdCk7XG5cbiAg
ICAvLyBEZXRhY2ggdmFsdWUgZnJvbSBkZWZhdWx0VmFsdWUuIFdlIHdvbid0IGRvIGFueXRoaW5n
IGlmIHdlJ3JlIHdvcmtpbmcgb25cbiAgICAvLyBzdWJtaXQgb3IgcmVzZXQgaW5wdXRzIGFzIHRo
b3NlIHZhbHVlcyAmIGRlZmF1bHRWYWx1ZXMgYXJlIGxpbmtlZC4gVGhleVxuICAgIC8vIGFyZSBu
b3QgcmVzZXRhYmxlIG5vZGVzIHNvIHRoaXMgb3BlcmF0aW9uIGRvZXNuJ3QgbWF0dGVyIGFuZCBh
Y3R1YWxseVxuICAgIC8vIHJlbW92ZXMgYnJvd3Nlci1kZWZhdWx0IHZhbHVlcyAoZWcgXCJTdWJt
aXQgUXVlcnlcIikgd2hlbiBubyB2YWx1ZSBpc1xuICAgIC8vIHByb3ZpZGVkLlxuXG4gICAgc3dp
dGNoIChwcm9wcy50eXBlKSB7XG4gICAgICBjYXNlICdzdWJtaXQnOlxuICAgICAgY2FzZSAncmVz
ZXQnOlxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2NvbG9yJzpcbiAgICAgIGNhc2UgJ2Rh
dGUnOlxuICAgICAgY2FzZSAnZGF0ZXRpbWUnOlxuICAgICAgY2FzZSAnZGF0ZXRpbWUtbG9jYWwn
OlxuICAgICAgY2FzZSAnbW9udGgnOlxuICAgICAgY2FzZSAndGltZSc6XG4gICAgICBjYXNlICd3
ZWVrJzpcbiAgICAgICAgLy8gVGhpcyBmaXhlcyB0aGUgbm8tc2hvdyBpc3N1ZSBvbiBpT1MgU2Fm
YXJpIGFuZCBBbmRyb2lkIENocm9tZTpcbiAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2Zh
Y2Vib29rL3JlYWN0L2lzc3Vlcy83MjMzXG4gICAgICAgIG5vZGUudmFsdWUgPSAnJztcbiAgICAg
ICAgbm9kZS52YWx1ZSA9IG5vZGUuZGVmYXVsdFZhbHVlO1xuICAgICAgICBicmVhaztcbiAgICAg
IGRlZmF1bHQ6XG4gICAgICAgIG5vZGUudmFsdWUgPSBub2RlLnZhbHVlO1xuICAgICAgICBicmVh
aztcbiAgICB9XG5cbiAgICAvLyBOb3JtYWxseSwgd2UnZCBqdXN0IGRvIGBub2RlLmNoZWNrZWQg
PSBub2RlLmNoZWNrZWRgIHVwb24gaW5pdGlhbCBtb3VudCwgbGVzcyB0aGlzIGJ1Z1xuICAgIC8v
IHRoaXMgaXMgbmVlZGVkIHRvIHdvcmsgYXJvdW5kIGEgY2hyb21lIGJ1ZyB3aGVyZSBzZXR0aW5n
IGRlZmF1bHRDaGVja2VkXG4gICAgLy8gd2lsbCBzb21ldGltZXMgaW5mbHVlbmNlIHRoZSB2YWx1
ZSBvZiBjaGVja2VkIChldmVuIGFmdGVyIGRldGFjaG1lbnQpLlxuICAgIC8vIFJlZmVyZW5jZTog
aHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9NjA4
NDE2XG4gICAgLy8gV2UgbmVlZCB0byB0ZW1wb3JhcmlseSB1bnNldCBuYW1lIHRvIGF2b2lkIGRp
c3J1cHRpbmcgcmFkaW8gYnV0dG9uIGdyb3Vwcy5cbiAgICB2YXIgbmFtZSA9IG5vZGUubmFtZTtc
biAgICBpZiAobmFtZSAhPT0gJycpIHtcbiAgICAgIG5vZGUubmFtZSA9ICcnO1xuICAgIH1cbiAg
ICBub2RlLmRlZmF1bHRDaGVja2VkID0gIW5vZGUuZGVmYXVsdENoZWNrZWQ7XG4gICAgbm9kZS5k
ZWZhdWx0Q2hlY2tlZCA9ICFub2RlLmRlZmF1bHRDaGVja2VkO1xuICAgIGlmIChuYW1lICE9PSAn
Jykge1xuICAgICAgbm9kZS5uYW1lID0gbmFtZTtcbiAgICB9XG4gIH1cbn07XG5cbmZ1bmN0aW9u
IF9oYW5kbGVDaGFuZ2UoZXZlbnQpIHtcbiAgdmFyIHByb3BzID0gdGhpcy5fY3VycmVudEVsZW1l
bnQucHJvcHM7XG5cbiAgdmFyIHJldHVyblZhbHVlID0gTGlua2VkVmFsdWVVdGlscy5leGVjdXRl
T25DaGFuZ2UocHJvcHMsIGV2ZW50KTtcblxuICAvLyBIZXJlIHdlIHVzZSBhc2FwIHRvIHdhaXQg
dW50aWwgYWxsIHVwZGF0ZXMgaGF2ZSBwcm9wYWdhdGVkLCB3aGljaFxuICAvLyBpcyBpbXBvcnRh
bnQgd2hlbiB1c2luZyBjb250cm9sbGVkIGNvbXBvbmVudHMgd2l0aGluIGxheWVyczpcbiAgLy8g
aHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0L2lzc3Vlcy8xNjk4XG4gIFJlYWN0VXBk
YXRlcy5hc2FwKGZvcmNlVXBkYXRlSWZNb3VudGVkLCB0aGlzKTtcblxuICB2YXIgbmFtZSA9IHBy
b3BzLm5hbWU7XG4gIGlmIChwcm9wcy50eXBlID09PSAncmFkaW8nICYmIG5hbWUgIT0gbnVsbCkg
e1xuICAgIHZhciByb290Tm9kZSA9IFJlYWN0RE9NQ29tcG9uZW50VHJlZS5nZXROb2RlRnJvbUlu
c3RhbmNlKHRoaXMpO1xuICAgIHZhciBxdWVyeVJvb3QgPSByb290Tm9kZTtcblxuICAgIHdoaWxl
IChxdWVyeVJvb3QucGFyZW50Tm9kZSkge1xuICAgICAgcXVlcnlSb290ID0gcXVlcnlSb290LnBh
cmVudE5vZGU7XG4gICAgfVxuXG4gICAgLy8gSWYgYHJvb3ROb2RlLmZvcm1gIHdhcyBub24tbnVs
bCwgdGhlbiB3ZSBjb3VsZCB0cnkgYGZvcm0uZWxlbWVudHNgLFxuICAgIC8vIGJ1dCB0aGF0IHNv
bWV0aW1lcyBiZWhhdmVzIHN0cmFuZ2VseSBpbiBJRTguIFdlIGNvdWxkIGFsc28gdHJ5IHVzaW5n
XG4gICAgLy8gYGZvcm0uZ2V0RWxlbWVudHNCeU5hbWVgLCBidXQgdGhhdCB3aWxsIG9ubHkgcmV0
dXJuIGRpcmVjdCBjaGlsZHJlblxuICAgIC8vIGFuZCB3b24ndCBpbmNsdWRlIGlucHV0cyB0aGF0
IHVzZSB0aGUgSFRNTDUgYGZvcm09YCBhdHRyaWJ1dGUuIFNpbmNlXG4gICAgLy8gdGhlIGlucHV0
IG1pZ2h0IG5vdCBldmVuIGJlIGluIGEgZm9ybSwgbGV0J3MganVzdCB1c2UgdGhlIGdsb2JhbFxu
ICAgIC8vIGBxdWVyeVNlbGVjdG9yQWxsYCB0byBlbnN1cmUgd2UgZG9uJ3QgbWlzcyBhbnl0aGlu
Zy5cbiAgICB2YXIgZ3JvdXAgPSBxdWVyeVJvb3QucXVlcnlTZWxlY3RvckFsbCgnaW5wdXRbbmFt
ZT0nICsgSlNPTi5zdHJpbmdpZnkoJycgKyBuYW1lKSArICddW3R5cGU9XCJyYWRpb1wiXScpO1xu
XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBncm91cC5sZW5ndGg7IGkrKykge1xuICAgICAgdmFy
IG90aGVyTm9kZSA9IGdyb3VwW2ldO1xuICAgICAgaWYgKG90aGVyTm9kZSA9PT0gcm9vdE5vZGUg
fHwgb3RoZXJOb2RlLmZvcm0gIT09IHJvb3ROb2RlLmZvcm0pIHtcbiAgICAgICAgY29udGludWU7
XG4gICAgICB9XG4gICAgICAvLyBUaGlzIHdpbGwgdGhyb3cgaWYgcmFkaW8gYnV0dG9ucyByZW5k
ZXJlZCBieSBkaWZmZXJlbnQgY29waWVzIG9mIFJlYWN0XG4gICAgICAvLyBhbmQgdGhlIHNhbWUg
bmFtZSBhcmUgcmVuZGVyZWQgaW50byB0aGUgc2FtZSBmb3JtIChzYW1lIGFzICMxOTM5KS5cbiAg
ICAgIC8vIFRoYXQncyBwcm9iYWJseSBva2F5OyB3ZSBkb24ndCBzdXBwb3J0IGl0IGp1c3QgYXMg
d2UgZG9uJ3Qgc3VwcG9ydFxuICAgICAgLy8gbWl4aW5nIFJlYWN0IHJhZGlvIGJ1dHRvbnMgd2l0
aCBub24tUmVhY3Qgb25lcy5cbiAgICAgIHZhciBvdGhlckluc3RhbmNlID0gUmVhY3RET01Db21w
b25lbnRUcmVlLmdldEluc3RhbmNlRnJvbU5vZGUob3RoZXJOb2RlKTtcbiAgICAgICFvdGhlcklu
c3RhbmNlID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFu
dChmYWxzZSwgJ1JlYWN0RE9NSW5wdXQ6IE1peGluZyBSZWFjdCBhbmQgbm9uLVJlYWN0IHJhZGlv
IGlucHV0cyB3aXRoIHRoZSBzYW1lIGBuYW1lYCBpcyBub3Qgc3VwcG9ydGVkLicpIDogX3Byb2RJ
bnZhcmlhbnQoJzkwJykgOiB2b2lkIDA7XG4gICAgICAvLyBJZiB0aGlzIGlzIGEgY29udHJvbGxl
ZCByYWRpbyBidXR0b24gZ3JvdXAsIGZvcmNpbmcgdGhlIGlucHV0IHRoYXRcbiAgICAgIC8vIHdh
cyBwcmV2aW91c2x5IGNoZWNrZWQgdG8gdXBkYXRlIHdpbGwgY2F1c2UgaXQgdG8gYmUgY29tZSBy
ZS1jaGVja2VkXG4gICAgICAvLyBhcyBhcHByb3ByaWF0ZS5cbiAgICAgIFJlYWN0VXBkYXRlcy5h
c2FwKGZvcmNlVXBkYXRlSWZNb3VudGVkLCBvdGhlckluc3RhbmNlKTtcbiAgICB9XG4gIH1cblxu
ICByZXR1cm4gcmV0dXJuVmFsdWU7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RET01JbnB1
dDtcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9y
ZWFjdC1kb20vbGliL1JlYWN0RE9NSW5wdXQuanNcbiAqKiBtb2R1bGUgaWQgPSAxNDNcbiAqKiBt
b2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwg
RmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3Vy
Y2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4g
dGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNl
IHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZv
dW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xu
XG4ndXNlIHN0cmljdCc7XG5cbnZhciBfYXNzaWduID0gcmVxdWlyZSgnb2JqZWN0LWFzc2lnbicp
O1xuXG52YXIgUmVhY3QgPSByZXF1aXJlKCdyZWFjdC9saWIvUmVhY3QnKTtcbnZhciBSZWFjdERP
TUNvbXBvbmVudFRyZWUgPSByZXF1aXJlKCcuL1JlYWN0RE9NQ29tcG9uZW50VHJlZScpO1xudmFy
IFJlYWN0RE9NU2VsZWN0ID0gcmVxdWlyZSgnLi9SZWFjdERPTVNlbGVjdCcpO1xuXG52YXIgd2Fy
bmluZyA9IHJlcXVpcmUoJ2ZianMvbGliL3dhcm5pbmcnKTtcbnZhciBkaWRXYXJuSW52YWxpZE9w
dGlvbkNoaWxkcmVuID0gZmFsc2U7XG5cbmZ1bmN0aW9uIGZsYXR0ZW5DaGlsZHJlbihjaGlsZHJl
bikge1xuICB2YXIgY29udGVudCA9ICcnO1xuXG4gIC8vIEZsYXR0ZW4gY2hpbGRyZW4gYW5kIHdh
cm4gaWYgdGhleSBhcmVuJ3Qgc3RyaW5ncyBvciBudW1iZXJzO1xuICAvLyBpbnZhbGlkIHR5cGVz
IGFyZSBpZ25vcmVkLlxuICBSZWFjdC5DaGlsZHJlbi5mb3JFYWNoKGNoaWxkcmVuLCBmdW5jdGlv
biAoY2hpbGQpIHtcbiAgICBpZiAoY2hpbGQgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuO1xuICAg
IH1cbiAgICBpZiAodHlwZW9mIGNoaWxkID09PSAnc3RyaW5nJyB8fCB0eXBlb2YgY2hpbGQgPT09
ICdudW1iZXInKSB7XG4gICAgICBjb250ZW50ICs9IGNoaWxkO1xuICAgIH0gZWxzZSBpZiAoIWRp
ZFdhcm5JbnZhbGlkT3B0aW9uQ2hpbGRyZW4pIHtcbiAgICAgIGRpZFdhcm5JbnZhbGlkT3B0aW9u
Q2hpbGRyZW4gPSB0cnVlO1xuICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0
aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdPbmx5IHN0cmluZ3MgYW5kIG51bWJlcnMgYXJlIHN1cHBv
cnRlZCBhcyA8b3B0aW9uPiBjaGlsZHJlbi4nKSA6IHZvaWQgMDtcbiAgICB9XG4gIH0pO1xuXG4g
IHJldHVybiBjb250ZW50O1xufVxuXG4vKipcbiAqIEltcGxlbWVudHMgYW4gPG9wdGlvbj4gaG9z
dCBjb21wb25lbnQgdGhhdCB3YXJucyB3aGVuIGBzZWxlY3RlZGAgaXMgc2V0LlxuICovXG52YXIg
UmVhY3RET01PcHRpb24gPSB7XG4gIG1vdW50V3JhcHBlcjogZnVuY3Rpb24gKGluc3QsIHByb3Bz
LCBob3N0UGFyZW50KSB7XG4gICAgLy8gVE9ETyAoeXVuZ3N0ZXJzKTogUmVtb3ZlIHN1cHBvcnQg
Zm9yIGBzZWxlY3RlZGAgaW4gPG9wdGlvbj4uXG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5W
ICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJv
ZHVjdGlvbicgPyB3YXJuaW5nKHByb3BzLnNlbGVjdGVkID09IG51bGwsICdVc2UgdGhlIGBkZWZh
dWx0VmFsdWVgIG9yIGB2YWx1ZWAgcHJvcHMgb24gPHNlbGVjdD4gaW5zdGVhZCBvZiAnICsgJ3Nl
dHRpbmcgYHNlbGVjdGVkYCBvbiA8b3B0aW9uPi4nKSA6IHZvaWQgMDtcbiAgICB9XG5cbiAgICAv
LyBMb29rIHVwIHdoZXRoZXIgdGhpcyBvcHRpb24gaXMgJ3NlbGVjdGVkJ1xuICAgIHZhciBzZWxl
Y3RWYWx1ZSA9IG51bGw7XG4gICAgaWYgKGhvc3RQYXJlbnQgIT0gbnVsbCkge1xuICAgICAgdmFy
IHNlbGVjdFBhcmVudCA9IGhvc3RQYXJlbnQ7XG5cbiAgICAgIGlmIChzZWxlY3RQYXJlbnQuX3Rh
ZyA9PT0gJ29wdGdyb3VwJykge1xuICAgICAgICBzZWxlY3RQYXJlbnQgPSBzZWxlY3RQYXJlbnQu
X2hvc3RQYXJlbnQ7XG4gICAgICB9XG5cbiAgICAgIGlmIChzZWxlY3RQYXJlbnQgIT0gbnVsbCAm
JiBzZWxlY3RQYXJlbnQuX3RhZyA9PT0gJ3NlbGVjdCcpIHtcbiAgICAgICAgc2VsZWN0VmFsdWUg
PSBSZWFjdERPTVNlbGVjdC5nZXRTZWxlY3RWYWx1ZUNvbnRleHQoc2VsZWN0UGFyZW50KTtcbiAg
ICAgIH1cbiAgICB9XG5cbiAgICAvLyBJZiB0aGUgdmFsdWUgaXMgbnVsbCAoZS5nLiwgbm8gc3Bl
Y2lmaWVkIHZhbHVlIG9yIGFmdGVyIGluaXRpYWwgbW91bnQpXG4gICAgLy8gb3IgbWlzc2luZyAo
ZS5nLiwgZm9yIDxkYXRhbGlzdD4pLCB3ZSBkb24ndCBjaGFuZ2UgcHJvcHMuc2VsZWN0ZWRcbiAg
ICB2YXIgc2VsZWN0ZWQgPSBudWxsO1xuICAgIGlmIChzZWxlY3RWYWx1ZSAhPSBudWxsKSB7XG4g
ICAgICB2YXIgdmFsdWU7XG4gICAgICBpZiAocHJvcHMudmFsdWUgIT0gbnVsbCkge1xuICAgICAg
ICB2YWx1ZSA9IHByb3BzLnZhbHVlICsgJyc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YWx1
ZSA9IGZsYXR0ZW5DaGlsZHJlbihwcm9wcy5jaGlsZHJlbik7XG4gICAgICB9XG4gICAgICBzZWxl
Y3RlZCA9IGZhbHNlO1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkoc2VsZWN0VmFsdWUpKSB7XG4g
ICAgICAgIC8vIG11bHRpcGxlXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2VsZWN0VmFs
dWUubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICBpZiAoJycgKyBzZWxlY3RWYWx1ZVtpXSA9PT0g
dmFsdWUpIHtcbiAgICAgICAgICAgIHNlbGVjdGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIGJyZWFr
O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2VsZWN0
ZWQgPSAnJyArIHNlbGVjdFZhbHVlID09PSB2YWx1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBp
bnN0Ll93cmFwcGVyU3RhdGUgPSB7IHNlbGVjdGVkOiBzZWxlY3RlZCB9O1xuICB9LFxuXG4gIHBv
c3RNb3VudFdyYXBwZXI6IGZ1bmN0aW9uIChpbnN0KSB7XG4gICAgLy8gdmFsdWU9XCJcIiBzaG91
bGQgbWFrZSBhIHZhbHVlIGF0dHJpYnV0ZSAoIzYyMTkpXG4gICAgdmFyIHByb3BzID0gaW5zdC5f
Y3VycmVudEVsZW1lbnQucHJvcHM7XG4gICAgaWYgKHByb3BzLnZhbHVlICE9IG51bGwpIHtcbiAg
ICAgIHZhciBub2RlID0gUmVhY3RET01Db21wb25lbnRUcmVlLmdldE5vZGVGcm9tSW5zdGFuY2Uo
aW5zdCk7XG4gICAgICBub2RlLnNldEF0dHJpYnV0ZSgndmFsdWUnLCBwcm9wcy52YWx1ZSk7XG4g
ICAgfVxuICB9LFxuXG4gIGdldEhvc3RQcm9wczogZnVuY3Rpb24gKGluc3QsIHByb3BzKSB7XG4g
ICAgdmFyIGhvc3RQcm9wcyA9IF9hc3NpZ24oeyBzZWxlY3RlZDogdW5kZWZpbmVkLCBjaGlsZHJl
bjogdW5kZWZpbmVkIH0sIHByb3BzKTtcblxuICAgIC8vIFJlYWQgc3RhdGUgb25seSBmcm9tIGlu
aXRpYWwgbW91bnQgYmVjYXVzZSA8c2VsZWN0PiB1cGRhdGVzIHZhbHVlXG4gICAgLy8gbWFudWFs
bHk7IHdlIG5lZWQgdGhlIGluaXRpYWwgc3RhdGUgb25seSBmb3Igc2VydmVyIHJlbmRlcmluZ1xu
ICAgIGlmIChpbnN0Ll93cmFwcGVyU3RhdGUuc2VsZWN0ZWQgIT0gbnVsbCkge1xuICAgICAgaG9z
dFByb3BzLnNlbGVjdGVkID0gaW5zdC5fd3JhcHBlclN0YXRlLnNlbGVjdGVkO1xuICAgIH1cblxu
ICAgIHZhciBjb250ZW50ID0gZmxhdHRlbkNoaWxkcmVuKHByb3BzLmNoaWxkcmVuKTtcblxuICAg
IGlmIChjb250ZW50KSB7XG4gICAgICBob3N0UHJvcHMuY2hpbGRyZW4gPSBjb250ZW50O1xuICAg
IH1cblxuICAgIHJldHVybiBob3N0UHJvcHM7XG4gIH1cbn07XG5cbm1vZHVsZS5leHBvcnRzID0g
UmVhY3RET01PcHRpb247XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09U
RVJcbiAqKiAuL34vcmVhY3QtZG9tL2xpYi9SZWFjdERPTU9wdGlvbi5qc1xuICoqIG1vZHVsZSBp
ZCA9IDE0NFxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQg
MjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAq
XG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGlj
ZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkg
b2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJp
Z2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3Rv
cnkuXG4gKlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIEV4ZWN1dGlvbkVudmlyb25tZW50
ID0gcmVxdWlyZSgnZmJqcy9saWIvRXhlY3V0aW9uRW52aXJvbm1lbnQnKTtcblxudmFyIGdldE5v
ZGVGb3JDaGFyYWN0ZXJPZmZzZXQgPSByZXF1aXJlKCcuL2dldE5vZGVGb3JDaGFyYWN0ZXJPZmZz
ZXQnKTtcbnZhciBnZXRUZXh0Q29udGVudEFjY2Vzc29yID0gcmVxdWlyZSgnLi9nZXRUZXh0Q29u
dGVudEFjY2Vzc29yJyk7XG5cbi8qKlxuICogV2hpbGUgYGlzQ29sbGFwc2VkYCBpcyBhdmFpbGFi
bGUgb24gdGhlIFNlbGVjdGlvbiBvYmplY3QgYW5kIGBjb2xsYXBzZWRgXG4gKiBpcyBhdmFpbGFi
bGUgb24gdGhlIFJhbmdlIG9iamVjdCwgSUUxMSBzb21ldGltZXMgZ2V0cyB0aGVtIHdyb25nLlxu
ICogSWYgdGhlIGFuY2hvci9mb2N1cyBub2RlcyBhbmQgb2Zmc2V0cyBhcmUgdGhlIHNhbWUsIHRo
ZSByYW5nZSBpcyBjb2xsYXBzZWQuXG4gKi9cbmZ1bmN0aW9uIGlzQ29sbGFwc2VkKGFuY2hvck5v
ZGUsIGFuY2hvck9mZnNldCwgZm9jdXNOb2RlLCBmb2N1c09mZnNldCkge1xuICByZXR1cm4gYW5j
aG9yTm9kZSA9PT0gZm9jdXNOb2RlICYmIGFuY2hvck9mZnNldCA9PT0gZm9jdXNPZmZzZXQ7XG59
XG5cbi8qKlxuICogR2V0IHRoZSBhcHByb3ByaWF0ZSBhbmNob3IgYW5kIGZvY3VzIG5vZGUvb2Zm
c2V0IHBhaXJzIGZvciBJRS5cbiAqXG4gKiBUaGUgY2F0Y2ggaGVyZSBpcyB0aGF0IElFJ3Mgc2Vs
ZWN0aW9uIEFQSSBkb2Vzbid0IHByb3ZpZGUgaW5mb3JtYXRpb25cbiAqIGFib3V0IHdoZXRoZXIg
dGhlIHNlbGVjdGlvbiBpcyBmb3J3YXJkIG9yIGJhY2t3YXJkLCBzbyB3ZSBoYXZlIHRvXG4gKiBi
ZWhhdmUgYXMgdGhvdWdoIGl0J3MgYWx3YXlzIGZvcndhcmQuXG4gKlxuICogSUUgdGV4dCBkaWZm
ZXJzIGZyb20gbW9kZXJuIHNlbGVjdGlvbiBpbiB0aGF0IGl0IGJlaGF2ZXMgYXMgdGhvdWdoXG4g
KiBibG9jayBlbGVtZW50cyBlbmQgd2l0aCBhIG5ldyBsaW5lLiBUaGlzIG1lYW5zIGNoYXJhY3Rl
ciBvZmZzZXRzIHdpbGxcbiAqIGRpZmZlciBiZXR3ZWVuIHRoZSB0d28gQVBJcy5cbiAqXG4gKiBA
cGFyYW0ge0RPTUVsZW1lbnR9IG5vZGVcbiAqIEByZXR1cm4ge29iamVjdH1cbiAqL1xuZnVuY3Rp
b24gZ2V0SUVPZmZzZXRzKG5vZGUpIHtcbiAgdmFyIHNlbGVjdGlvbiA9IGRvY3VtZW50LnNlbGVj
dGlvbjtcbiAgdmFyIHNlbGVjdGVkUmFuZ2UgPSBzZWxlY3Rpb24uY3JlYXRlUmFuZ2UoKTtcbiAg
dmFyIHNlbGVjdGVkTGVuZ3RoID0gc2VsZWN0ZWRSYW5nZS50ZXh0Lmxlbmd0aDtcblxuICAvLyBE
dXBsaWNhdGUgc2VsZWN0aW9uIHNvIHdlIGNhbiBtb3ZlIHJhbmdlIHdpdGhvdXQgYnJlYWtpbmcg
dXNlciBzZWxlY3Rpb24uXG4gIHZhciBmcm9tU3RhcnQgPSBzZWxlY3RlZFJhbmdlLmR1cGxpY2F0
ZSgpO1xuICBmcm9tU3RhcnQubW92ZVRvRWxlbWVudFRleHQobm9kZSk7XG4gIGZyb21TdGFydC5z
ZXRFbmRQb2ludCgnRW5kVG9TdGFydCcsIHNlbGVjdGVkUmFuZ2UpO1xuXG4gIHZhciBzdGFydE9m
ZnNldCA9IGZyb21TdGFydC50ZXh0Lmxlbmd0aDtcbiAgdmFyIGVuZE9mZnNldCA9IHN0YXJ0T2Zm
c2V0ICsgc2VsZWN0ZWRMZW5ndGg7XG5cbiAgcmV0dXJuIHtcbiAgICBzdGFydDogc3RhcnRPZmZz
ZXQsXG4gICAgZW5kOiBlbmRPZmZzZXRcbiAgfTtcbn1cblxuLyoqXG4gKiBAcGFyYW0ge0RPTUVs
ZW1lbnR9IG5vZGVcbiAqIEByZXR1cm4gez9vYmplY3R9XG4gKi9cbmZ1bmN0aW9uIGdldE1vZGVy
bk9mZnNldHMobm9kZSkge1xuICB2YXIgc2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbiAm
JiB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7XG5cbiAgaWYgKCFzZWxlY3Rpb24gfHwgc2VsZWN0aW9u
LnJhbmdlQ291bnQgPT09IDApIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHZhciBhbmNo
b3JOb2RlID0gc2VsZWN0aW9uLmFuY2hvck5vZGU7XG4gIHZhciBhbmNob3JPZmZzZXQgPSBzZWxl
Y3Rpb24uYW5jaG9yT2Zmc2V0O1xuICB2YXIgZm9jdXNOb2RlID0gc2VsZWN0aW9uLmZvY3VzTm9k
ZTtcbiAgdmFyIGZvY3VzT2Zmc2V0ID0gc2VsZWN0aW9uLmZvY3VzT2Zmc2V0O1xuXG4gIHZhciBj
dXJyZW50UmFuZ2UgPSBzZWxlY3Rpb24uZ2V0UmFuZ2VBdCgwKTtcblxuICAvLyBJbiBGaXJlZm94
LCByYW5nZS5zdGFydENvbnRhaW5lciBhbmQgcmFuZ2UuZW5kQ29udGFpbmVyIGNhbiBiZSBcImFu
b255bW91c1xuICAvLyBkaXZzXCIsIGUuZy4gdGhlIHVwL2Rvd24gYnV0dG9ucyBvbiBhbiA8aW5w
dXQgdHlwZT1cIm51bWJlclwiPi4gQW5vbnltb3VzXG4gIC8vIGRpdnMgZG8gbm90IHNlZW0gdG8g
ZXhwb3NlIHByb3BlcnRpZXMsIHRyaWdnZXJpbmcgYSBcIlBlcm1pc3Npb24gZGVuaWVkXG4gIC8v
IGVycm9yXCIgaWYgYW55IG9mIGl0cyBwcm9wZXJ0aWVzIGFyZSBhY2Nlc3NlZC4gVGhlIG9ubHkg
c2VlbWluZ2x5IHBvc3NpYmxlXG4gIC8vIHdheSB0byBhdm9pZCBlcnJvcmluZyBpcyB0byBhY2Nl
c3MgYSBwcm9wZXJ0eSB0aGF0IHR5cGljYWxseSB3b3JrcyBmb3JcbiAgLy8gbm9uLWFub255bW91
cyBkaXZzIGFuZCBjYXRjaCBhbnkgZXJyb3IgdGhhdCBtYXkgb3RoZXJ3aXNlIGFyaXNlLiBTZWVc
biAgLy8gaHR0cHM6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4NDI3
XG4gIHRyeSB7XG4gICAgLyogZXNsaW50LWRpc2FibGUgbm8tdW51c2VkLWV4cHJlc3Npb25zICov
XG4gICAgY3VycmVudFJhbmdlLnN0YXJ0Q29udGFpbmVyLm5vZGVUeXBlO1xuICAgIGN1cnJlbnRS
YW5nZS5lbmRDb250YWluZXIubm9kZVR5cGU7XG4gICAgLyogZXNsaW50LWVuYWJsZSBuby11bnVz
ZWQtZXhwcmVzc2lvbnMgKi9cbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiBudWxsO1xuICB9
XG5cbiAgLy8gSWYgdGhlIG5vZGUgYW5kIG9mZnNldCB2YWx1ZXMgYXJlIHRoZSBzYW1lLCB0aGUg
c2VsZWN0aW9uIGlzIGNvbGxhcHNlZC5cbiAgLy8gYFNlbGVjdGlvbi5pc0NvbGxhcHNlZGAgaXMg
YXZhaWxhYmxlIG5hdGl2ZWx5LCBidXQgSUUgc29tZXRpbWVzIGdldHNcbiAgLy8gdGhpcyB2YWx1
ZSB3cm9uZy5cbiAgdmFyIGlzU2VsZWN0aW9uQ29sbGFwc2VkID0gaXNDb2xsYXBzZWQoc2VsZWN0
aW9uLmFuY2hvck5vZGUsIHNlbGVjdGlvbi5hbmNob3JPZmZzZXQsIHNlbGVjdGlvbi5mb2N1c05v
ZGUsIHNlbGVjdGlvbi5mb2N1c09mZnNldCk7XG5cbiAgdmFyIHJhbmdlTGVuZ3RoID0gaXNTZWxl
Y3Rpb25Db2xsYXBzZWQgPyAwIDogY3VycmVudFJhbmdlLnRvU3RyaW5nKCkubGVuZ3RoO1xuXG4g
IHZhciB0ZW1wUmFuZ2UgPSBjdXJyZW50UmFuZ2UuY2xvbmVSYW5nZSgpO1xuICB0ZW1wUmFuZ2Uu
c2VsZWN0Tm9kZUNvbnRlbnRzKG5vZGUpO1xuICB0ZW1wUmFuZ2Uuc2V0RW5kKGN1cnJlbnRSYW5n
ZS5zdGFydENvbnRhaW5lciwgY3VycmVudFJhbmdlLnN0YXJ0T2Zmc2V0KTtcblxuICB2YXIgaXNU
ZW1wUmFuZ2VDb2xsYXBzZWQgPSBpc0NvbGxhcHNlZCh0ZW1wUmFuZ2Uuc3RhcnRDb250YWluZXIs
IHRlbXBSYW5nZS5zdGFydE9mZnNldCwgdGVtcFJhbmdlLmVuZENvbnRhaW5lciwgdGVtcFJhbmdl
LmVuZE9mZnNldCk7XG5cbiAgdmFyIHN0YXJ0ID0gaXNUZW1wUmFuZ2VDb2xsYXBzZWQgPyAwIDog
dGVtcFJhbmdlLnRvU3RyaW5nKCkubGVuZ3RoO1xuICB2YXIgZW5kID0gc3RhcnQgKyByYW5nZUxl
bmd0aDtcblxuICAvLyBEZXRlY3Qgd2hldGhlciB0aGUgc2VsZWN0aW9uIGlzIGJhY2t3YXJkLlxu
ICB2YXIgZGV0ZWN0aW9uUmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpO1xuICBkZXRlY3Rp
b25SYW5nZS5zZXRTdGFydChhbmNob3JOb2RlLCBhbmNob3JPZmZzZXQpO1xuICBkZXRlY3Rpb25S
YW5nZS5zZXRFbmQoZm9jdXNOb2RlLCBmb2N1c09mZnNldCk7XG4gIHZhciBpc0JhY2t3YXJkID0g
ZGV0ZWN0aW9uUmFuZ2UuY29sbGFwc2VkO1xuXG4gIHJldHVybiB7XG4gICAgc3RhcnQ6IGlzQmFj
a3dhcmQgPyBlbmQgOiBzdGFydCxcbiAgICBlbmQ6IGlzQmFja3dhcmQgPyBzdGFydCA6IGVuZFxu
ICB9O1xufVxuXG4vKipcbiAqIEBwYXJhbSB7RE9NRWxlbWVudHxET01UZXh0Tm9kZX0gbm9kZVxu
ICogQHBhcmFtIHtvYmplY3R9IG9mZnNldHNcbiAqL1xuZnVuY3Rpb24gc2V0SUVPZmZzZXRzKG5v
ZGUsIG9mZnNldHMpIHtcbiAgdmFyIHJhbmdlID0gZG9jdW1lbnQuc2VsZWN0aW9uLmNyZWF0ZVJh
bmdlKCkuZHVwbGljYXRlKCk7XG4gIHZhciBzdGFydCwgZW5kO1xuXG4gIGlmIChvZmZzZXRzLmVu
ZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgc3RhcnQgPSBvZmZzZXRzLnN0YXJ0O1xuICAgIGVuZCA9
IHN0YXJ0O1xuICB9IGVsc2UgaWYgKG9mZnNldHMuc3RhcnQgPiBvZmZzZXRzLmVuZCkge1xuICAg
IHN0YXJ0ID0gb2Zmc2V0cy5lbmQ7XG4gICAgZW5kID0gb2Zmc2V0cy5zdGFydDtcbiAgfSBlbHNl
IHtcbiAgICBzdGFydCA9IG9mZnNldHMuc3RhcnQ7XG4gICAgZW5kID0gb2Zmc2V0cy5lbmQ7XG4g
IH1cblxuICByYW5nZS5tb3ZlVG9FbGVtZW50VGV4dChub2RlKTtcbiAgcmFuZ2UubW92ZVN0YXJ0
KCdjaGFyYWN0ZXInLCBzdGFydCk7XG4gIHJhbmdlLnNldEVuZFBvaW50KCdFbmRUb1N0YXJ0Jywg
cmFuZ2UpO1xuICByYW5nZS5tb3ZlRW5kKCdjaGFyYWN0ZXInLCBlbmQgLSBzdGFydCk7XG4gIHJh
bmdlLnNlbGVjdCgpO1xufVxuXG4vKipcbiAqIEluIG1vZGVybiBub24tSUUgYnJvd3NlcnMsIHdl
IGNhbiBzdXBwb3J0IGJvdGggZm9yd2FyZCBhbmQgYmFja3dhcmRcbiAqIHNlbGVjdGlvbnMuXG4g
KlxuICogTm90ZTogSUUxMCsgc3VwcG9ydHMgdGhlIFNlbGVjdGlvbiBvYmplY3QsIGJ1dCBpdCBk
b2VzIG5vdCBzdXBwb3J0XG4gKiB0aGUgYGV4dGVuZGAgbWV0aG9kLCB3aGljaCBtZWFucyB0aGF0
IGV2ZW4gaW4gbW9kZXJuIElFLCBpdCdzIG5vdCBwb3NzaWJsZVxuICogdG8gcHJvZ3JhbW1hdGlj
YWxseSBjcmVhdGUgYSBiYWNrd2FyZCBzZWxlY3Rpb24uIFRodXMsIGZvciBhbGwgSUVcbiAqIHZl
cnNpb25zLCB3ZSB1c2UgdGhlIG9sZCBJRSBBUEkgdG8gY3JlYXRlIG91ciBzZWxlY3Rpb25zLlxu
ICpcbiAqIEBwYXJhbSB7RE9NRWxlbWVudHxET01UZXh0Tm9kZX0gbm9kZVxuICogQHBhcmFtIHtv
YmplY3R9IG9mZnNldHNcbiAqL1xuZnVuY3Rpb24gc2V0TW9kZXJuT2Zmc2V0cyhub2RlLCBvZmZz
ZXRzKSB7XG4gIGlmICghd2luZG93LmdldFNlbGVjdGlvbikge1xuICAgIHJldHVybjtcbiAgfVxu
XG4gIHZhciBzZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7XG4gIHZhciBsZW5ndGgg
PSBub2RlW2dldFRleHRDb250ZW50QWNjZXNzb3IoKV0ubGVuZ3RoO1xuICB2YXIgc3RhcnQgPSBN
YXRoLm1pbihvZmZzZXRzLnN0YXJ0LCBsZW5ndGgpO1xuICB2YXIgZW5kID0gb2Zmc2V0cy5lbmQg
PT09IHVuZGVmaW5lZCA/IHN0YXJ0IDogTWF0aC5taW4ob2Zmc2V0cy5lbmQsIGxlbmd0aCk7XG5c
biAgLy8gSUUgMTEgdXNlcyBtb2Rlcm4gc2VsZWN0aW9uLCBidXQgZG9lc24ndCBzdXBwb3J0IHRo
ZSBleHRlbmQgbWV0aG9kLlxuICAvLyBGbGlwIGJhY2t3YXJkIHNlbGVjdGlvbnMsIHNvIHdlIGNh
biBzZXQgd2l0aCBhIHNpbmdsZSByYW5nZS5cbiAgaWYgKCFzZWxlY3Rpb24uZXh0ZW5kICYmIHN0
YXJ0ID4gZW5kKSB7XG4gICAgdmFyIHRlbXAgPSBlbmQ7XG4gICAgZW5kID0gc3RhcnQ7XG4gICAg
c3RhcnQgPSB0ZW1wO1xuICB9XG5cbiAgdmFyIHN0YXJ0TWFya2VyID0gZ2V0Tm9kZUZvckNoYXJh
Y3Rlck9mZnNldChub2RlLCBzdGFydCk7XG4gIHZhciBlbmRNYXJrZXIgPSBnZXROb2RlRm9yQ2hh
cmFjdGVyT2Zmc2V0KG5vZGUsIGVuZCk7XG5cbiAgaWYgKHN0YXJ0TWFya2VyICYmIGVuZE1hcmtl
cikge1xuICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7XG4gICAgcmFuZ2Uu
c2V0U3RhcnQoc3RhcnRNYXJrZXIubm9kZSwgc3RhcnRNYXJrZXIub2Zmc2V0KTtcbiAgICBzZWxl
Y3Rpb24ucmVtb3ZlQWxsUmFuZ2VzKCk7XG5cbiAgICBpZiAoc3RhcnQgPiBlbmQpIHtcbiAgICAg
IHNlbGVjdGlvbi5hZGRSYW5nZShyYW5nZSk7XG4gICAgICBzZWxlY3Rpb24uZXh0ZW5kKGVuZE1h
cmtlci5ub2RlLCBlbmRNYXJrZXIub2Zmc2V0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmFuZ2Uu
c2V0RW5kKGVuZE1hcmtlci5ub2RlLCBlbmRNYXJrZXIub2Zmc2V0KTtcbiAgICAgIHNlbGVjdGlv
bi5hZGRSYW5nZShyYW5nZSk7XG4gICAgfVxuICB9XG59XG5cbnZhciB1c2VJRU9mZnNldHMgPSBF
eGVjdXRpb25FbnZpcm9ubWVudC5jYW5Vc2VET00gJiYgJ3NlbGVjdGlvbicgaW4gZG9jdW1lbnQg
JiYgISgnZ2V0U2VsZWN0aW9uJyBpbiB3aW5kb3cpO1xuXG52YXIgUmVhY3RET01TZWxlY3Rpb24g
PSB7XG4gIC8qKlxuICAgKiBAcGFyYW0ge0RPTUVsZW1lbnR9IG5vZGVcbiAgICovXG4gIGdldE9m
ZnNldHM6IHVzZUlFT2Zmc2V0cyA/IGdldElFT2Zmc2V0cyA6IGdldE1vZGVybk9mZnNldHMsXG5c
biAgLyoqXG4gICAqIEBwYXJhbSB7RE9NRWxlbWVudHxET01UZXh0Tm9kZX0gbm9kZVxuICAgKiBA
cGFyYW0ge29iamVjdH0gb2Zmc2V0c1xuICAgKi9cbiAgc2V0T2Zmc2V0czogdXNlSUVPZmZzZXRz
ID8gc2V0SUVPZmZzZXRzIDogc2V0TW9kZXJuT2Zmc2V0c1xufTtcblxubW9kdWxlLmV4cG9ydHMg
PSBSZWFjdERPTVNlbGVjdGlvbjtcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNL
IEZPT1RFUlxuICoqIC4vfi9yZWFjdC1kb20vbGliL1JlYWN0RE9NU2VsZWN0aW9uLmpzXG4gKiog
bW9kdWxlIGlkID0gMTQ1XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENv
cHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1z
dHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRp
cmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBw
YXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1l
IGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgX3Byb2RJbnZhcmlh
bnQgPSByZXF1aXJlKCcuL3JlYWN0UHJvZEludmFyaWFudCcpLFxuICAgIF9hc3NpZ24gPSByZXF1
aXJlKCdvYmplY3QtYXNzaWduJyk7XG5cbnZhciBET01DaGlsZHJlbk9wZXJhdGlvbnMgPSByZXF1
aXJlKCcuL0RPTUNoaWxkcmVuT3BlcmF0aW9ucycpO1xudmFyIERPTUxhenlUcmVlID0gcmVxdWly
ZSgnLi9ET01MYXp5VHJlZScpO1xudmFyIFJlYWN0RE9NQ29tcG9uZW50VHJlZSA9IHJlcXVpcmUo
Jy4vUmVhY3RET01Db21wb25lbnRUcmVlJyk7XG5cbnZhciBlc2NhcGVUZXh0Q29udGVudEZvckJy
b3dzZXIgPSByZXF1aXJlKCcuL2VzY2FwZVRleHRDb250ZW50Rm9yQnJvd3NlcicpO1xudmFyIGlu
dmFyaWFudCA9IHJlcXVpcmUoJ2ZianMvbGliL2ludmFyaWFudCcpO1xudmFyIHZhbGlkYXRlRE9N
TmVzdGluZyA9IHJlcXVpcmUoJy4vdmFsaWRhdGVET01OZXN0aW5nJyk7XG5cbi8qKlxuICogVGV4
dCBub2RlcyB2aW9sYXRlIGEgY291cGxlIGFzc3VtcHRpb25zIHRoYXQgUmVhY3QgbWFrZXMgYWJv
dXQgY29tcG9uZW50czpcbiAqXG4gKiAgLSBXaGVuIG1vdW50aW5nIHRleHQgaW50byB0aGUgRE9N
LCBhZGphY2VudCB0ZXh0IG5vZGVzIGFyZSBtZXJnZWQuXG4gKiAgLSBUZXh0IG5vZGVzIGNhbm5v
dCBiZSBhc3NpZ25lZCBhIFJlYWN0IHJvb3QgSUQuXG4gKlxuICogVGhpcyBjb21wb25lbnQgaXMg
dXNlZCB0byB3cmFwIHN0cmluZ3MgYmV0d2VlbiBjb21tZW50IG5vZGVzIHNvIHRoYXQgdGhleVxu
ICogY2FuIHVuZGVyZ28gdGhlIHNhbWUgcmVjb25jaWxpYXRpb24gdGhhdCBpcyBhcHBsaWVkIHRv
IGVsZW1lbnRzLlxuICpcbiAqIFRPRE86IEludmVzdGlnYXRlIHJlcHJlc2VudGluZyBSZWFjdCBj
b21wb25lbnRzIGluIHRoZSBET00gd2l0aCB0ZXh0IG5vZGVzLlxuICpcbiAqIEBjbGFzcyBSZWFj
dERPTVRleHRDb21wb25lbnRcbiAqIEBleHRlbmRzIFJlYWN0Q29tcG9uZW50XG4gKiBAaW50ZXJu
YWxcbiAqL1xudmFyIFJlYWN0RE9NVGV4dENvbXBvbmVudCA9IGZ1bmN0aW9uICh0ZXh0KSB7XG4g
IC8vIFRPRE86IFRoaXMgaXMgcmVhbGx5IGEgUmVhY3RUZXh0IChSZWFjdE5vZGUpLCBub3QgYSBS
ZWFjdEVsZW1lbnRcbiAgdGhpcy5fY3VycmVudEVsZW1lbnQgPSB0ZXh0O1xuICB0aGlzLl9zdHJp
bmdUZXh0ID0gJycgKyB0ZXh0O1xuICAvLyBSZWFjdERPTUNvbXBvbmVudFRyZWUgdXNlcyB0aGVz
ZTpcbiAgdGhpcy5faG9zdE5vZGUgPSBudWxsO1xuICB0aGlzLl9ob3N0UGFyZW50ID0gbnVsbDtc
blxuICAvLyBQcm9wZXJ0aWVzXG4gIHRoaXMuX2RvbUlEID0gMDtcbiAgdGhpcy5fbW91bnRJbmRl
eCA9IDA7XG4gIHRoaXMuX2Nsb3NpbmdDb21tZW50ID0gbnVsbDtcbiAgdGhpcy5fY29tbWVudE5v
ZGVzID0gbnVsbDtcbn07XG5cbl9hc3NpZ24oUmVhY3RET01UZXh0Q29tcG9uZW50LnByb3RvdHlw
ZSwge1xuICAvKipcbiAgICogQ3JlYXRlcyB0aGUgbWFya3VwIGZvciB0aGlzIHRleHQgbm9kZS4g
VGhpcyBub2RlIGlzIG5vdCBpbnRlbmRlZCB0byBoYXZlXG4gICAqIGFueSBmZWF0dXJlcyBiZXNp
ZGVzIGNvbnRhaW5pbmcgdGV4dCBjb250ZW50LlxuICAgKlxuICAgKiBAcGFyYW0ge1JlYWN0UmVj
b25jaWxlVHJhbnNhY3Rpb258UmVhY3RTZXJ2ZXJSZW5kZXJpbmdUcmFuc2FjdGlvbn0gdHJhbnNh
Y3Rpb25cbiAgICogQHJldHVybiB7c3RyaW5nfSBNYXJrdXAgZm9yIHRoaXMgdGV4dCBub2RlLlxu
ICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIG1vdW50Q29tcG9uZW50OiBmdW5jdGlvbiAodHJhbnNh
Y3Rpb24sIGhvc3RQYXJlbnQsIGhvc3RDb250YWluZXJJbmZvLCBjb250ZXh0KSB7XG4gICAgaWYg
KHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIHZhciBwYXJl
bnRJbmZvO1xuICAgICAgaWYgKGhvc3RQYXJlbnQgIT0gbnVsbCkge1xuICAgICAgICBwYXJlbnRJ
bmZvID0gaG9zdFBhcmVudC5fYW5jZXN0b3JJbmZvO1xuICAgICAgfSBlbHNlIGlmIChob3N0Q29u
dGFpbmVySW5mbyAhPSBudWxsKSB7XG4gICAgICAgIHBhcmVudEluZm8gPSBob3N0Q29udGFpbmVy
SW5mby5fYW5jZXN0b3JJbmZvO1xuICAgICAgfVxuICAgICAgaWYgKHBhcmVudEluZm8pIHtcbiAg
ICAgICAgLy8gcGFyZW50SW5mbyBzaG91bGQgYWx3YXlzIGJlIHByZXNlbnQgZXhjZXB0IGZvciB0
aGUgdG9wLWxldmVsXG4gICAgICAgIC8vIGNvbXBvbmVudCB3aGVuIHNlcnZlciByZW5kZXJpbmdc
biAgICAgICAgdmFsaWRhdGVET01OZXN0aW5nKG51bGwsIHRoaXMuX3N0cmluZ1RleHQsIHRoaXMs
IHBhcmVudEluZm8pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciBkb21JRCA9IGhvc3RDb250
YWluZXJJbmZvLl9pZENvdW50ZXIrKztcbiAgICB2YXIgb3BlbmluZ1ZhbHVlID0gJyByZWFjdC10
ZXh0OiAnICsgZG9tSUQgKyAnICc7XG4gICAgdmFyIGNsb3NpbmdWYWx1ZSA9ICcgL3JlYWN0LXRl
eHQgJztcbiAgICB0aGlzLl9kb21JRCA9IGRvbUlEO1xuICAgIHRoaXMuX2hvc3RQYXJlbnQgPSBo
b3N0UGFyZW50O1xuICAgIGlmICh0cmFuc2FjdGlvbi51c2VDcmVhdGVFbGVtZW50KSB7XG4gICAg
ICB2YXIgb3duZXJEb2N1bWVudCA9IGhvc3RDb250YWluZXJJbmZvLl9vd25lckRvY3VtZW50O1xu
ICAgICAgdmFyIG9wZW5pbmdDb21tZW50ID0gb3duZXJEb2N1bWVudC5jcmVhdGVDb21tZW50KG9w
ZW5pbmdWYWx1ZSk7XG4gICAgICB2YXIgY2xvc2luZ0NvbW1lbnQgPSBvd25lckRvY3VtZW50LmNy
ZWF0ZUNvbW1lbnQoY2xvc2luZ1ZhbHVlKTtcbiAgICAgIHZhciBsYXp5VHJlZSA9IERPTUxhenlU
cmVlKG93bmVyRG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpKTtcbiAgICAgIERPTUxh
enlUcmVlLnF1ZXVlQ2hpbGQobGF6eVRyZWUsIERPTUxhenlUcmVlKG9wZW5pbmdDb21tZW50KSk7
XG4gICAgICBpZiAodGhpcy5fc3RyaW5nVGV4dCkge1xuICAgICAgICBET01MYXp5VHJlZS5xdWV1
ZUNoaWxkKGxhenlUcmVlLCBET01MYXp5VHJlZShvd25lckRvY3VtZW50LmNyZWF0ZVRleHROb2Rl
KHRoaXMuX3N0cmluZ1RleHQpKSk7XG4gICAgICB9XG4gICAgICBET01MYXp5VHJlZS5xdWV1ZUNo
aWxkKGxhenlUcmVlLCBET01MYXp5VHJlZShjbG9zaW5nQ29tbWVudCkpO1xuICAgICAgUmVhY3RE
T01Db21wb25lbnRUcmVlLnByZWNhY2hlTm9kZSh0aGlzLCBvcGVuaW5nQ29tbWVudCk7XG4gICAg
ICB0aGlzLl9jbG9zaW5nQ29tbWVudCA9IGNsb3NpbmdDb21tZW50O1xuICAgICAgcmV0dXJuIGxh
enlUcmVlO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgZXNjYXBlZFRleHQgPSBlc2NhcGVUZXh0
Q29udGVudEZvckJyb3dzZXIodGhpcy5fc3RyaW5nVGV4dCk7XG5cbiAgICAgIGlmICh0cmFuc2Fj
dGlvbi5yZW5kZXJUb1N0YXRpY01hcmt1cCkge1xuICAgICAgICAvLyBOb3JtYWxseSB3ZSdkIHdy
YXAgdGhpcyBiZXR3ZWVuIGNvbW1lbnQgbm9kZXMgZm9yIHRoZSByZWFzb25zIHN0YXRlZFxuICAg
ICAgICAvLyBhYm92ZSwgYnV0IHNpbmNlIHRoaXMgaXMgYSBzaXR1YXRpb24gd2hlcmUgUmVhY3Qg
d29uJ3QgdGFrZSBvdmVyXG4gICAgICAgIC8vIChzdGF0aWMgcGFnZXMpLCB3ZSBjYW4gc2ltcGx5
IHJldHVybiB0aGUgdGV4dCBhcyBpdCBpcy5cbiAgICAgICAgcmV0dXJuIGVzY2FwZWRUZXh0O1xu
ICAgICAgfVxuXG4gICAgICByZXR1cm4gJzwhLS0nICsgb3BlbmluZ1ZhbHVlICsgJy0tPicgKyBl
c2NhcGVkVGV4dCArICc8IS0tJyArIGNsb3NpbmdWYWx1ZSArICctLT4nO1xuICAgIH1cbiAgfSxc
blxuICAvKipcbiAgICogVXBkYXRlcyB0aGlzIGNvbXBvbmVudCBieSB1cGRhdGluZyB0aGUgdGV4
dCBjb250ZW50LlxuICAgKlxuICAgKiBAcGFyYW0ge1JlYWN0VGV4dH0gbmV4dFRleHQgVGhlIG5l
eHQgdGV4dCBjb250ZW50XG4gICAqIEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbn0g
dHJhbnNhY3Rpb25cbiAgICogQGludGVybmFsXG4gICAqL1xuICByZWNlaXZlQ29tcG9uZW50OiBm
dW5jdGlvbiAobmV4dFRleHQsIHRyYW5zYWN0aW9uKSB7XG4gICAgaWYgKG5leHRUZXh0ICE9PSB0
aGlzLl9jdXJyZW50RWxlbWVudCkge1xuICAgICAgdGhpcy5fY3VycmVudEVsZW1lbnQgPSBuZXh0
VGV4dDtcbiAgICAgIHZhciBuZXh0U3RyaW5nVGV4dCA9ICcnICsgbmV4dFRleHQ7XG4gICAgICBp
ZiAobmV4dFN0cmluZ1RleHQgIT09IHRoaXMuX3N0cmluZ1RleHQpIHtcbiAgICAgICAgLy8gVE9E
TzogU2F2ZSB0aGlzIGFzIHBlbmRpbmcgcHJvcHMgYW5kIHVzZSBwZXJmb3JtVXBkYXRlSWZOZWNl
c3NhcnlcbiAgICAgICAgLy8gYW5kL29yIHVwZGF0ZUNvbXBvbmVudCB0byBkbyB0aGUgYWN0dWFs
IHVwZGF0ZSBmb3IgY29uc2lzdGVuY3kgd2l0aFxuICAgICAgICAvLyBvdGhlciBjb21wb25lbnQg
dHlwZXM/XG4gICAgICAgIHRoaXMuX3N0cmluZ1RleHQgPSBuZXh0U3RyaW5nVGV4dDtcbiAgICAg
ICAgdmFyIGNvbW1lbnROb2RlcyA9IHRoaXMuZ2V0SG9zdE5vZGUoKTtcbiAgICAgICAgRE9NQ2hp
bGRyZW5PcGVyYXRpb25zLnJlcGxhY2VEZWxpbWl0ZWRUZXh0KGNvbW1lbnROb2Rlc1swXSwgY29t
bWVudE5vZGVzWzFdLCBuZXh0U3RyaW5nVGV4dCk7XG4gICAgICB9XG4gICAgfVxuICB9LFxuXG4g
IGdldEhvc3ROb2RlOiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGhvc3ROb2RlID0gdGhpcy5fY29t
bWVudE5vZGVzO1xuICAgIGlmIChob3N0Tm9kZSkge1xuICAgICAgcmV0dXJuIGhvc3ROb2RlO1xu
ICAgIH1cbiAgICBpZiAoIXRoaXMuX2Nsb3NpbmdDb21tZW50KSB7XG4gICAgICB2YXIgb3Blbmlu
Z0NvbW1lbnQgPSBSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0Tm9kZUZyb21JbnN0YW5jZSh0aGlz
KTtcbiAgICAgIHZhciBub2RlID0gb3BlbmluZ0NvbW1lbnQubmV4dFNpYmxpbmc7XG4gICAgICB3
aGlsZSAodHJ1ZSkge1xuICAgICAgICAhKG5vZGUgIT0gbnVsbCkgPyBwcm9jZXNzLmVudi5OT0RF
X0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnTWlzc2luZyBjbG9zaW5n
IGNvbW1lbnQgZm9yIHRleHQgY29tcG9uZW50ICVzJywgdGhpcy5fZG9tSUQpIDogX3Byb2RJbnZh
cmlhbnQoJzY3JywgdGhpcy5fZG9tSUQpIDogdm9pZCAwO1xuICAgICAgICBpZiAobm9kZS5ub2Rl
VHlwZSA9PT0gOCAmJiBub2RlLm5vZGVWYWx1ZSA9PT0gJyAvcmVhY3QtdGV4dCAnKSB7XG4gICAg
ICAgICAgdGhpcy5fY2xvc2luZ0NvbW1lbnQgPSBub2RlO1xuICAgICAgICAgIGJyZWFrO1xuICAg
ICAgICB9XG4gICAgICAgIG5vZGUgPSBub2RlLm5leHRTaWJsaW5nO1xuICAgICAgfVxuICAgIH1c
biAgICBob3N0Tm9kZSA9IFt0aGlzLl9ob3N0Tm9kZSwgdGhpcy5fY2xvc2luZ0NvbW1lbnRdO1xu
ICAgIHRoaXMuX2NvbW1lbnROb2RlcyA9IGhvc3ROb2RlO1xuICAgIHJldHVybiBob3N0Tm9kZTtc
biAgfSxcblxuICB1bm1vdW50Q29tcG9uZW50OiBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5fY2xv
c2luZ0NvbW1lbnQgPSBudWxsO1xuICAgIHRoaXMuX2NvbW1lbnROb2RlcyA9IG51bGw7XG4gICAg
UmVhY3RET01Db21wb25lbnRUcmVlLnVuY2FjaGVOb2RlKHRoaXMpO1xuICB9XG59KTtcblxubW9k
dWxlLmV4cG9ydHMgPSBSZWFjdERPTVRleHRDb21wb25lbnQ7XG5cblxuLyoqKioqKioqKioqKioq
KioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3QtZG9tL2xpYi9SZWFjdERPTVRl
eHRDb21wb25lbnQuanNcbiAqKiBtb2R1bGUgaWQgPSAxNDZcbiAqKiBtb2R1bGUgY2h1bmtzID0g
MFxuICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5c
biAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNl
bnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNF
IGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0
aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRF
TlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7
XG5cbnZhciBfcHJvZEludmFyaWFudCA9IHJlcXVpcmUoJy4vcmVhY3RQcm9kSW52YXJpYW50Jyks
XG4gICAgX2Fzc2lnbiA9IHJlcXVpcmUoJ29iamVjdC1hc3NpZ24nKTtcblxudmFyIExpbmtlZFZh
bHVlVXRpbHMgPSByZXF1aXJlKCcuL0xpbmtlZFZhbHVlVXRpbHMnKTtcbnZhciBSZWFjdERPTUNv
bXBvbmVudFRyZWUgPSByZXF1aXJlKCcuL1JlYWN0RE9NQ29tcG9uZW50VHJlZScpO1xudmFyIFJl
YWN0VXBkYXRlcyA9IHJlcXVpcmUoJy4vUmVhY3RVcGRhdGVzJyk7XG5cbnZhciBpbnZhcmlhbnQg
PSByZXF1aXJlKCdmYmpzL2xpYi9pbnZhcmlhbnQnKTtcbnZhciB3YXJuaW5nID0gcmVxdWlyZSgn
ZmJqcy9saWIvd2FybmluZycpO1xuXG52YXIgZGlkV2FyblZhbHVlTGluayA9IGZhbHNlO1xudmFy
IGRpZFdhcm5WYWxEZWZhdWx0VmFsID0gZmFsc2U7XG5cbmZ1bmN0aW9uIGZvcmNlVXBkYXRlSWZN
b3VudGVkKCkge1xuICBpZiAodGhpcy5fcm9vdE5vZGVJRCkge1xuICAgIC8vIERPTSBjb21wb25l
bnQgaXMgc3RpbGwgbW91bnRlZDsgdXBkYXRlXG4gICAgUmVhY3RET01UZXh0YXJlYS51cGRhdGVX
cmFwcGVyKHRoaXMpO1xuICB9XG59XG5cbi8qKlxuICogSW1wbGVtZW50cyBhIDx0ZXh0YXJlYT4g
aG9zdCBjb21wb25lbnQgdGhhdCBhbGxvd3Mgc2V0dGluZyBgdmFsdWVgLCBhbmRcbiAqIGBkZWZh
dWx0VmFsdWVgLiBUaGlzIGRpZmZlcnMgZnJvbSB0aGUgdHJhZGl0aW9uYWwgRE9NIEFQSSBiZWNh
dXNlIHZhbHVlIGlzXG4gKiB1c3VhbGx5IHNldCBhcyBQQ0RBVEEgY2hpbGRyZW4uXG4gKlxuICog
SWYgYHZhbHVlYCBpcyBub3Qgc3VwcGxpZWQgKG9yIG51bGwvdW5kZWZpbmVkKSwgdXNlciBhY3Rp
b25zIHRoYXQgYWZmZWN0IHRoZVxuICogdmFsdWUgd2lsbCB0cmlnZ2VyIHVwZGF0ZXMgdG8gdGhl
IGVsZW1lbnQuXG4gKlxuICogSWYgYHZhbHVlYCBpcyBzdXBwbGllZCAoYW5kIG5vdCBudWxsL3Vu
ZGVmaW5lZCksIHRoZSByZW5kZXJlZCBlbGVtZW50IHdpbGxcbiAqIG5vdCB0cmlnZ2VyIHVwZGF0
ZXMgdG8gdGhlIGVsZW1lbnQuIEluc3RlYWQsIHRoZSBgdmFsdWVgIHByb3AgbXVzdCBjaGFuZ2Ug
aW5cbiAqIG9yZGVyIGZvciB0aGUgcmVuZGVyZWQgZWxlbWVudCB0byBiZSB1cGRhdGVkLlxuICpc
biAqIFRoZSByZW5kZXJlZCBlbGVtZW50IHdpbGwgYmUgaW5pdGlhbGl6ZWQgd2l0aCBhbiBlbXB0
eSB2YWx1ZSwgdGhlIHByb3BcbiAqIGBkZWZhdWx0VmFsdWVgIGlmIHNwZWNpZmllZCwgb3IgdGhl
IGNoaWxkcmVuIGNvbnRlbnQgKGRlcHJlY2F0ZWQpLlxuICovXG52YXIgUmVhY3RET01UZXh0YXJl
YSA9IHtcbiAgZ2V0SG9zdFByb3BzOiBmdW5jdGlvbiAoaW5zdCwgcHJvcHMpIHtcbiAgICAhKHBy
b3BzLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MID09IG51bGwpID8gcHJvY2Vzcy5lbnYuTk9ERV9F
TlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ2BkYW5nZXJvdXNseVNldElu
bmVySFRNTGAgZG9lcyBub3QgbWFrZSBzZW5zZSBvbiA8dGV4dGFyZWE+LicpIDogX3Byb2RJbnZh
cmlhbnQoJzkxJykgOiB2b2lkIDA7XG5cbiAgICAvLyBBbHdheXMgc2V0IGNoaWxkcmVuIHRvIHRo
ZSBzYW1lIHRoaW5nLiBJbiBJRTksIHRoZSBzZWxlY3Rpb24gcmFuZ2Ugd2lsbFxuICAgIC8vIGdl
dCByZXNldCBpZiBgdGV4dENvbnRlbnRgIGlzIG11dGF0ZWQuICBXZSBjb3VsZCBhZGQgYSBjaGVj
ayBpbiBzZXRUZXh0Q29udGVudFxuICAgIC8vIHRvIG9ubHkgc2V0IHRoZSB2YWx1ZSBpZi93aGVu
IHRoZSB2YWx1ZSBkaWZmZXJzIGZyb20gdGhlIG5vZGUgdmFsdWUgKHdoaWNoIHdvdWxkXG4gICAg
Ly8gY29tcGxldGVseSBzb2x2ZSB0aGlzIElFOSBidWcpLCBidXQgU2ViYXN0aWFuK0JlbiBzZWVt
ZWQgdG8gbGlrZSB0aGlzIHNvbHV0aW9uLlxuICAgIC8vIFRoZSB2YWx1ZSBjYW4gYmUgYSBib29s
ZWFuIG9yIG9iamVjdCBzbyB0aGF0J3Mgd2h5IGl0J3MgZm9yY2VkIHRvIGJlIGEgc3RyaW5nLlxu
ICAgIHZhciBob3N0UHJvcHMgPSBfYXNzaWduKHt9LCBwcm9wcywge1xuICAgICAgdmFsdWU6IHVu
ZGVmaW5lZCxcbiAgICAgIGRlZmF1bHRWYWx1ZTogdW5kZWZpbmVkLFxuICAgICAgY2hpbGRyZW46
ICcnICsgaW5zdC5fd3JhcHBlclN0YXRlLmluaXRpYWxWYWx1ZSxcbiAgICAgIG9uQ2hhbmdlOiBp
bnN0Ll93cmFwcGVyU3RhdGUub25DaGFuZ2VcbiAgICB9KTtcblxuICAgIHJldHVybiBob3N0UHJv
cHM7XG4gIH0sXG5cbiAgbW91bnRXcmFwcGVyOiBmdW5jdGlvbiAoaW5zdCwgcHJvcHMpIHtcbiAg
ICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgTGlu
a2VkVmFsdWVVdGlscy5jaGVja1Byb3BUeXBlcygndGV4dGFyZWEnLCBwcm9wcywgaW5zdC5fY3Vy
cmVudEVsZW1lbnQuX293bmVyKTtcbiAgICAgIGlmIChwcm9wcy52YWx1ZUxpbmsgIT09IHVuZGVm
aW5lZCAmJiAhZGlkV2FyblZhbHVlTGluaykge1xuICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VO
ViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ2B2YWx1ZUxpbmtgIHByb3Agb24g
YHRleHRhcmVhYCBpcyBkZXByZWNhdGVkOyBzZXQgYHZhbHVlYCBhbmQgYG9uQ2hhbmdlYCBpbnN0
ZWFkLicpIDogdm9pZCAwO1xuICAgICAgICBkaWRXYXJuVmFsdWVMaW5rID0gdHJ1ZTtcbiAgICAg
IH1cbiAgICAgIGlmIChwcm9wcy52YWx1ZSAhPT0gdW5kZWZpbmVkICYmIHByb3BzLmRlZmF1bHRW
YWx1ZSAhPT0gdW5kZWZpbmVkICYmICFkaWRXYXJuVmFsRGVmYXVsdFZhbCkge1xuICAgICAgICBw
cm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ1Rl
eHRhcmVhIGVsZW1lbnRzIG11c3QgYmUgZWl0aGVyIGNvbnRyb2xsZWQgb3IgdW5jb250cm9sbGVk
ICcgKyAnKHNwZWNpZnkgZWl0aGVyIHRoZSB2YWx1ZSBwcm9wLCBvciB0aGUgZGVmYXVsdFZhbHVl
IHByb3AsIGJ1dCBub3QgJyArICdib3RoKS4gRGVjaWRlIGJldHdlZW4gdXNpbmcgYSBjb250cm9s
bGVkIG9yIHVuY29udHJvbGxlZCB0ZXh0YXJlYSAnICsgJ2FuZCByZW1vdmUgb25lIG9mIHRoZXNl
IHByb3BzLiBNb3JlIGluZm86ICcgKyAnaHR0cHM6Ly9mYi5tZS9yZWFjdC1jb250cm9sbGVkLWNv
bXBvbmVudHMnKSA6IHZvaWQgMDtcbiAgICAgICAgZGlkV2FyblZhbERlZmF1bHRWYWwgPSB0cnVl
O1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciB2YWx1ZSA9IExpbmtlZFZhbHVlVXRpbHMuZ2V0
VmFsdWUocHJvcHMpO1xuICAgIHZhciBpbml0aWFsVmFsdWUgPSB2YWx1ZTtcblxuICAgIC8vIE9u
bHkgYm90aGVyIGZldGNoaW5nIGRlZmF1bHQgdmFsdWUgaWYgd2UncmUgZ29pbmcgdG8gdXNlIGl0
XG4gICAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICAgIHZhciBkZWZhdWx0VmFsdWUgPSBwcm9w
cy5kZWZhdWx0VmFsdWU7XG4gICAgICAvLyBUT0RPICh5dW5nc3RlcnMpOiBSZW1vdmUgc3VwcG9y
dCBmb3IgY2hpbGRyZW4gY29udGVudCBpbiA8dGV4dGFyZWE+LlxuICAgICAgdmFyIGNoaWxkcmVu
ID0gcHJvcHMuY2hpbGRyZW47XG4gICAgICBpZiAoY2hpbGRyZW4gIT0gbnVsbCkge1xuICAgICAg
ICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICAg
IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAn
VXNlIHRoZSBgZGVmYXVsdFZhbHVlYCBvciBgdmFsdWVgIHByb3BzIGluc3RlYWQgb2Ygc2V0dGlu
ZyAnICsgJ2NoaWxkcmVuIG9uIDx0ZXh0YXJlYT4uJykgOiB2b2lkIDA7XG4gICAgICAgIH1cbiAg
ICAgICAgIShkZWZhdWx0VmFsdWUgPT0gbnVsbCkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0g
J3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnSWYgeW91IHN1cHBseSBgZGVmYXVsdFZh
bHVlYCBvbiBhIDx0ZXh0YXJlYT4sIGRvIG5vdCBwYXNzIGNoaWxkcmVuLicpIDogX3Byb2RJbnZh
cmlhbnQoJzkyJykgOiB2b2lkIDA7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGNoaWxkcmVu
KSkge1xuICAgICAgICAgICEoY2hpbGRyZW4ubGVuZ3RoIDw9IDEpID8gcHJvY2Vzcy5lbnYuTk9E
RV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJzx0ZXh0YXJlYT4gY2Fu
IG9ubHkgaGF2ZSBhdCBtb3N0IG9uZSBjaGlsZC4nKSA6IF9wcm9kSW52YXJpYW50KCc5MycpIDog
dm9pZCAwO1xuICAgICAgICAgIGNoaWxkcmVuID0gY2hpbGRyZW5bMF07XG4gICAgICAgIH1cblxu
ICAgICAgICBkZWZhdWx0VmFsdWUgPSAnJyArIGNoaWxkcmVuO1xuICAgICAgfVxuICAgICAgaWYg
KGRlZmF1bHRWYWx1ZSA9PSBudWxsKSB7XG4gICAgICAgIGRlZmF1bHRWYWx1ZSA9ICcnO1xuICAg
ICAgfVxuICAgICAgaW5pdGlhbFZhbHVlID0gZGVmYXVsdFZhbHVlO1xuICAgIH1cblxuICAgIGlu
c3QuX3dyYXBwZXJTdGF0ZSA9IHtcbiAgICAgIGluaXRpYWxWYWx1ZTogJycgKyBpbml0aWFsVmFs
dWUsXG4gICAgICBsaXN0ZW5lcnM6IG51bGwsXG4gICAgICBvbkNoYW5nZTogX2hhbmRsZUNoYW5n
ZS5iaW5kKGluc3QpXG4gICAgfTtcbiAgfSxcblxuICB1cGRhdGVXcmFwcGVyOiBmdW5jdGlvbiAo
aW5zdCkge1xuICAgIHZhciBwcm9wcyA9IGluc3QuX2N1cnJlbnRFbGVtZW50LnByb3BzO1xuXG4g
ICAgdmFyIG5vZGUgPSBSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0Tm9kZUZyb21JbnN0YW5jZShp
bnN0KTtcbiAgICB2YXIgdmFsdWUgPSBMaW5rZWRWYWx1ZVV0aWxzLmdldFZhbHVlKHByb3BzKTtc
biAgICBpZiAodmFsdWUgIT0gbnVsbCkge1xuICAgICAgLy8gQ2FzdCBgdmFsdWVgIHRvIGEgc3Ry
aW5nIHRvIGVuc3VyZSB0aGUgdmFsdWUgaXMgc2V0IGNvcnJlY3RseS4gV2hpbGVcbiAgICAgIC8v
IGJyb3dzZXJzIHR5cGljYWxseSBkbyB0aGlzIGFzIG5lY2Vzc2FyeSwganNkb20gZG9lc24ndC5c
biAgICAgIHZhciBuZXdWYWx1ZSA9ICcnICsgdmFsdWU7XG5cbiAgICAgIC8vIFRvIGF2b2lkIHNp
ZGUgZWZmZWN0cyAoc3VjaCBhcyBsb3NpbmcgdGV4dCBzZWxlY3Rpb24pLCBvbmx5IHNldCB2YWx1
ZSBpZiBjaGFuZ2VkXG4gICAgICBpZiAobmV3VmFsdWUgIT09IG5vZGUudmFsdWUpIHtcbiAgICAg
ICAgbm9kZS52YWx1ZSA9IG5ld1ZhbHVlO1xuICAgICAgfVxuICAgICAgaWYgKHByb3BzLmRlZmF1
bHRWYWx1ZSA9PSBudWxsKSB7XG4gICAgICAgIG5vZGUuZGVmYXVsdFZhbHVlID0gbmV3VmFsdWU7
XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChwcm9wcy5kZWZhdWx0VmFsdWUgIT0gbnVsbCkge1xu
ICAgICAgbm9kZS5kZWZhdWx0VmFsdWUgPSBwcm9wcy5kZWZhdWx0VmFsdWU7XG4gICAgfVxuICB9
LFxuXG4gIHBvc3RNb3VudFdyYXBwZXI6IGZ1bmN0aW9uIChpbnN0KSB7XG4gICAgLy8gVGhpcyBp
cyBpbiBwb3N0TW91bnQgYmVjYXVzZSB3ZSBuZWVkIGFjY2VzcyB0byB0aGUgRE9NIG5vZGUsIHdo
aWNoIGlzIG5vdFxuICAgIC8vIGF2YWlsYWJsZSB1bnRpbCBhZnRlciB0aGUgY29tcG9uZW50IGhh
cyBtb3VudGVkLlxuICAgIHZhciBub2RlID0gUmVhY3RET01Db21wb25lbnRUcmVlLmdldE5vZGVG
cm9tSW5zdGFuY2UoaW5zdCk7XG4gICAgdmFyIHRleHRDb250ZW50ID0gbm9kZS50ZXh0Q29udGVu
dDtcblxuICAgIC8vIE9ubHkgc2V0IG5vZGUudmFsdWUgaWYgdGV4dENvbnRlbnQgaXMgZXF1YWwg
dG8gdGhlIGV4cGVjdGVkXG4gICAgLy8gaW5pdGlhbCB2YWx1ZS4gSW4gSUUxMC9JRTExIHRoZXJl
IGlzIGEgYnVnIHdoZXJlIHRoZSBwbGFjZWhvbGRlciBhdHRyaWJ1dGVcbiAgICAvLyB3aWxsIHBv
cHVsYXRlIHRleHRDb250ZW50IGFzIHdlbGwuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIubWlj
cm9zb2Z0LmNvbS9taWNyb3NvZnQtZWRnZS9wbGF0Zm9ybS9pc3N1ZXMvMTAxNTI1L1xuICAgIGlm
ICh0ZXh0Q29udGVudCA9PT0gaW5zdC5fd3JhcHBlclN0YXRlLmluaXRpYWxWYWx1ZSkge1xuICAg
ICAgbm9kZS52YWx1ZSA9IHRleHRDb250ZW50O1xuICAgIH1cbiAgfVxufTtcblxuZnVuY3Rpb24g
X2hhbmRsZUNoYW5nZShldmVudCkge1xuICB2YXIgcHJvcHMgPSB0aGlzLl9jdXJyZW50RWxlbWVu
dC5wcm9wcztcbiAgdmFyIHJldHVyblZhbHVlID0gTGlua2VkVmFsdWVVdGlscy5leGVjdXRlT25D
aGFuZ2UocHJvcHMsIGV2ZW50KTtcbiAgUmVhY3RVcGRhdGVzLmFzYXAoZm9yY2VVcGRhdGVJZk1v
dW50ZWQsIHRoaXMpO1xuICByZXR1cm4gcmV0dXJuVmFsdWU7XG59XG5cbm1vZHVsZS5leHBvcnRz
ID0gUmVhY3RET01UZXh0YXJlYTtcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNL
IEZPT1RFUlxuICoqIC4vfi9yZWFjdC1kb20vbGliL1JlYWN0RE9NVGV4dGFyZWEuanNcbiAqKiBt
b2R1bGUgaWQgPSAxNDdcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29w
eXJpZ2h0IDIwMTUtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2
ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0
eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGly
ZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBh
dGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUg
ZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBfcHJvZEludmFyaWFu
dCA9IHJlcXVpcmUoJy4vcmVhY3RQcm9kSW52YXJpYW50Jyk7XG5cbnZhciBpbnZhcmlhbnQgPSBy
ZXF1aXJlKCdmYmpzL2xpYi9pbnZhcmlhbnQnKTtcblxuLyoqXG4gKiBSZXR1cm4gdGhlIGxvd2Vz
dCBjb21tb24gYW5jZXN0b3Igb2YgQSBhbmQgQiwgb3IgbnVsbCBpZiB0aGV5IGFyZSBpblxuICog
ZGlmZmVyZW50IHRyZWVzLlxuICovXG5mdW5jdGlvbiBnZXRMb3dlc3RDb21tb25BbmNlc3Rvcihp
bnN0QSwgaW5zdEIpIHtcbiAgISgnX2hvc3ROb2RlJyBpbiBpbnN0QSkgPyBwcm9jZXNzLmVudi5O
T0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnZ2V0Tm9kZUZyb21J
bnN0YW5jZTogSW52YWxpZCBhcmd1bWVudC4nKSA6IF9wcm9kSW52YXJpYW50KCczMycpIDogdm9p
ZCAwO1xuICAhKCdfaG9zdE5vZGUnIGluIGluc3RCKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9
PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdnZXROb2RlRnJvbUluc3RhbmNlOiBJ
bnZhbGlkIGFyZ3VtZW50LicpIDogX3Byb2RJbnZhcmlhbnQoJzMzJykgOiB2b2lkIDA7XG5cbiAg
dmFyIGRlcHRoQSA9IDA7XG4gIGZvciAodmFyIHRlbXBBID0gaW5zdEE7IHRlbXBBOyB0ZW1wQSA9
IHRlbXBBLl9ob3N0UGFyZW50KSB7XG4gICAgZGVwdGhBKys7XG4gIH1cbiAgdmFyIGRlcHRoQiA9
IDA7XG4gIGZvciAodmFyIHRlbXBCID0gaW5zdEI7IHRlbXBCOyB0ZW1wQiA9IHRlbXBCLl9ob3N0
UGFyZW50KSB7XG4gICAgZGVwdGhCKys7XG4gIH1cblxuICAvLyBJZiBBIGlzIGRlZXBlciwgY3Jh
d2wgdXAuXG4gIHdoaWxlIChkZXB0aEEgLSBkZXB0aEIgPiAwKSB7XG4gICAgaW5zdEEgPSBpbnN0
QS5faG9zdFBhcmVudDtcbiAgICBkZXB0aEEtLTtcbiAgfVxuXG4gIC8vIElmIEIgaXMgZGVlcGVy
LCBjcmF3bCB1cC5cbiAgd2hpbGUgKGRlcHRoQiAtIGRlcHRoQSA+IDApIHtcbiAgICBpbnN0QiA9
IGluc3RCLl9ob3N0UGFyZW50O1xuICAgIGRlcHRoQi0tO1xuICB9XG5cbiAgLy8gV2FsayBpbiBs
b2Nrc3RlcCB1bnRpbCB3ZSBmaW5kIGEgbWF0Y2guXG4gIHZhciBkZXB0aCA9IGRlcHRoQTtcbiAg
d2hpbGUgKGRlcHRoLS0pIHtcbiAgICBpZiAoaW5zdEEgPT09IGluc3RCKSB7XG4gICAgICByZXR1
cm4gaW5zdEE7XG4gICAgfVxuICAgIGluc3RBID0gaW5zdEEuX2hvc3RQYXJlbnQ7XG4gICAgaW5z
dEIgPSBpbnN0Qi5faG9zdFBhcmVudDtcbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cblxuLyoqXG4g
KiBSZXR1cm4gaWYgQSBpcyBhbiBhbmNlc3RvciBvZiBCLlxuICovXG5mdW5jdGlvbiBpc0FuY2Vz
dG9yKGluc3RBLCBpbnN0Qikge1xuICAhKCdfaG9zdE5vZGUnIGluIGluc3RBKSA/IHByb2Nlc3Mu
ZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdpc0FuY2Vz
dG9yOiBJbnZhbGlkIGFyZ3VtZW50LicpIDogX3Byb2RJbnZhcmlhbnQoJzM1JykgOiB2b2lkIDA7
XG4gICEoJ19ob3N0Tm9kZScgaW4gaW5zdEIpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdw
cm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ2lzQW5jZXN0b3I6IEludmFsaWQgYXJndW1l
bnQuJykgOiBfcHJvZEludmFyaWFudCgnMzUnKSA6IHZvaWQgMDtcblxuICB3aGlsZSAoaW5zdEIp
IHtcbiAgICBpZiAoaW5zdEIgPT09IGluc3RBKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9
XG4gICAgaW5zdEIgPSBpbnN0Qi5faG9zdFBhcmVudDtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59
XG5cbi8qKlxuICogUmV0dXJuIHRoZSBwYXJlbnQgaW5zdGFuY2Ugb2YgdGhlIHBhc3NlZC1pbiBp
bnN0YW5jZS5cbiAqL1xuZnVuY3Rpb24gZ2V0UGFyZW50SW5zdGFuY2UoaW5zdCkge1xuICAhKCdf
aG9zdE5vZGUnIGluIGluc3QpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9u
JyA/IGludmFyaWFudChmYWxzZSwgJ2dldFBhcmVudEluc3RhbmNlOiBJbnZhbGlkIGFyZ3VtZW50
LicpIDogX3Byb2RJbnZhcmlhbnQoJzM2JykgOiB2b2lkIDA7XG5cbiAgcmV0dXJuIGluc3QuX2hv
c3RQYXJlbnQ7XG59XG5cbi8qKlxuICogU2ltdWxhdGVzIHRoZSB0cmF2ZXJzYWwgb2YgYSB0d28t
cGhhc2UsIGNhcHR1cmUvYnViYmxlIGV2ZW50IGRpc3BhdGNoLlxuICovXG5mdW5jdGlvbiB0cmF2
ZXJzZVR3b1BoYXNlKGluc3QsIGZuLCBhcmcpIHtcbiAgdmFyIHBhdGggPSBbXTtcbiAgd2hpbGUg
KGluc3QpIHtcbiAgICBwYXRoLnB1c2goaW5zdCk7XG4gICAgaW5zdCA9IGluc3QuX2hvc3RQYXJl
bnQ7XG4gIH1cbiAgdmFyIGk7XG4gIGZvciAoaSA9IHBhdGgubGVuZ3RoOyBpLS0gPiAwOykge1xu
ICAgIGZuKHBhdGhbaV0sICdjYXB0dXJlZCcsIGFyZyk7XG4gIH1cbiAgZm9yIChpID0gMDsgaSA8
IHBhdGgubGVuZ3RoOyBpKyspIHtcbiAgICBmbihwYXRoW2ldLCAnYnViYmxlZCcsIGFyZyk7XG4g
IH1cbn1cblxuLyoqXG4gKiBUcmF2ZXJzZXMgdGhlIElEIGhpZXJhcmNoeSBhbmQgaW52b2tlcyB0
aGUgc3VwcGxpZWQgYGNiYCBvbiBhbnkgSURzIHRoYXRcbiAqIHNob3VsZCB3b3VsZCByZWNlaXZl
IGEgYG1vdXNlRW50ZXJgIG9yIGBtb3VzZUxlYXZlYCBldmVudC5cbiAqXG4gKiBEb2VzIG5vdCBp
bnZva2UgdGhlIGNhbGxiYWNrIG9uIHRoZSBuZWFyZXN0IGNvbW1vbiBhbmNlc3RvciBiZWNhdXNl
IG5vdGhpbmdcbiAqIFwiZW50ZXJlZFwiIG9yIFwibGVmdFwiIHRoYXQgZWxlbWVudC5cbiAqL1xu
ZnVuY3Rpb24gdHJhdmVyc2VFbnRlckxlYXZlKGZyb20sIHRvLCBmbiwgYXJnRnJvbSwgYXJnVG8p
IHtcbiAgdmFyIGNvbW1vbiA9IGZyb20gJiYgdG8gPyBnZXRMb3dlc3RDb21tb25BbmNlc3Rvcihm
cm9tLCB0bykgOiBudWxsO1xuICB2YXIgcGF0aEZyb20gPSBbXTtcbiAgd2hpbGUgKGZyb20gJiYg
ZnJvbSAhPT0gY29tbW9uKSB7XG4gICAgcGF0aEZyb20ucHVzaChmcm9tKTtcbiAgICBmcm9tID0g
ZnJvbS5faG9zdFBhcmVudDtcbiAgfVxuICB2YXIgcGF0aFRvID0gW107XG4gIHdoaWxlICh0byAm
JiB0byAhPT0gY29tbW9uKSB7XG4gICAgcGF0aFRvLnB1c2godG8pO1xuICAgIHRvID0gdG8uX2hv
c3RQYXJlbnQ7XG4gIH1cbiAgdmFyIGk7XG4gIGZvciAoaSA9IDA7IGkgPCBwYXRoRnJvbS5sZW5n
dGg7IGkrKykge1xuICAgIGZuKHBhdGhGcm9tW2ldLCAnYnViYmxlZCcsIGFyZ0Zyb20pO1xuICB9
XG4gIGZvciAoaSA9IHBhdGhUby5sZW5ndGg7IGktLSA+IDA7KSB7XG4gICAgZm4ocGF0aFRvW2ld
LCAnY2FwdHVyZWQnLCBhcmdUbyk7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIGlz
QW5jZXN0b3I6IGlzQW5jZXN0b3IsXG4gIGdldExvd2VzdENvbW1vbkFuY2VzdG9yOiBnZXRMb3dl
c3RDb21tb25BbmNlc3RvcixcbiAgZ2V0UGFyZW50SW5zdGFuY2U6IGdldFBhcmVudEluc3RhbmNl
LFxuICB0cmF2ZXJzZVR3b1BoYXNlOiB0cmF2ZXJzZVR3b1BoYXNlLFxuICB0cmF2ZXJzZUVudGVy
TGVhdmU6IHRyYXZlcnNlRW50ZXJMZWF2ZVxufTtcblxuXG4vKioqKioqKioqKioqKioqKipcbiAq
KiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFjdC1kb20vbGliL1JlYWN0RE9NVHJlZVRyYXZl
cnNhbC5qc1xuICoqIG1vZHVsZSBpZCA9IDE0OFxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiov
IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxs
IHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVu
ZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBp
biB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBn
cmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmls
ZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFy
IF9hc3NpZ24gPSByZXF1aXJlKCdvYmplY3QtYXNzaWduJyk7XG5cbnZhciBSZWFjdFVwZGF0ZXMg
PSByZXF1aXJlKCcuL1JlYWN0VXBkYXRlcycpO1xudmFyIFRyYW5zYWN0aW9uID0gcmVxdWlyZSgn
Li9UcmFuc2FjdGlvbicpO1xuXG52YXIgZW1wdHlGdW5jdGlvbiA9IHJlcXVpcmUoJ2ZianMvbGli
L2VtcHR5RnVuY3Rpb24nKTtcblxudmFyIFJFU0VUX0JBVENIRURfVVBEQVRFUyA9IHtcbiAgaW5p
dGlhbGl6ZTogZW1wdHlGdW5jdGlvbixcbiAgY2xvc2U6IGZ1bmN0aW9uICgpIHtcbiAgICBSZWFj
dERlZmF1bHRCYXRjaGluZ1N0cmF0ZWd5LmlzQmF0Y2hpbmdVcGRhdGVzID0gZmFsc2U7XG4gIH1c
bn07XG5cbnZhciBGTFVTSF9CQVRDSEVEX1VQREFURVMgPSB7XG4gIGluaXRpYWxpemU6IGVtcHR5
RnVuY3Rpb24sXG4gIGNsb3NlOiBSZWFjdFVwZGF0ZXMuZmx1c2hCYXRjaGVkVXBkYXRlcy5iaW5k
KFJlYWN0VXBkYXRlcylcbn07XG5cbnZhciBUUkFOU0FDVElPTl9XUkFQUEVSUyA9IFtGTFVTSF9C
QVRDSEVEX1VQREFURVMsIFJFU0VUX0JBVENIRURfVVBEQVRFU107XG5cbmZ1bmN0aW9uIFJlYWN0
RGVmYXVsdEJhdGNoaW5nU3RyYXRlZ3lUcmFuc2FjdGlvbigpIHtcbiAgdGhpcy5yZWluaXRpYWxp
emVUcmFuc2FjdGlvbigpO1xufVxuXG5fYXNzaWduKFJlYWN0RGVmYXVsdEJhdGNoaW5nU3RyYXRl
Z3lUcmFuc2FjdGlvbi5wcm90b3R5cGUsIFRyYW5zYWN0aW9uLCB7XG4gIGdldFRyYW5zYWN0aW9u
V3JhcHBlcnM6IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gVFJBTlNBQ1RJT05fV1JBUFBFUlM7
XG4gIH1cbn0pO1xuXG52YXIgdHJhbnNhY3Rpb24gPSBuZXcgUmVhY3REZWZhdWx0QmF0Y2hpbmdT
dHJhdGVneVRyYW5zYWN0aW9uKCk7XG5cbnZhciBSZWFjdERlZmF1bHRCYXRjaGluZ1N0cmF0ZWd5
ID0ge1xuICBpc0JhdGNoaW5nVXBkYXRlczogZmFsc2UsXG5cbiAgLyoqXG4gICAqIENhbGwgdGhl
IHByb3ZpZGVkIGZ1bmN0aW9uIGluIGEgY29udGV4dCB3aXRoaW4gd2hpY2ggY2FsbHMgdG8gYHNl
dFN0YXRlYFxuICAgKiBhbmQgZnJpZW5kcyBhcmUgYmF0Y2hlZCBzdWNoIHRoYXQgY29tcG9uZW50
cyBhcmVuJ3QgdXBkYXRlZCB1bm5lY2Vzc2FyaWx5LlxuICAgKi9cbiAgYmF0Y2hlZFVwZGF0ZXM6
IGZ1bmN0aW9uIChjYWxsYmFjaywgYSwgYiwgYywgZCwgZSkge1xuICAgIHZhciBhbHJlYWR5QmF0
Y2hpbmdVcGRhdGVzID0gUmVhY3REZWZhdWx0QmF0Y2hpbmdTdHJhdGVneS5pc0JhdGNoaW5nVXBk
YXRlcztcblxuICAgIFJlYWN0RGVmYXVsdEJhdGNoaW5nU3RyYXRlZ3kuaXNCYXRjaGluZ1VwZGF0
ZXMgPSB0cnVlO1xuXG4gICAgLy8gVGhlIGNvZGUgaXMgd3JpdHRlbiB0aGlzIHdheSB0byBhdm9p
ZCBleHRyYSBhbGxvY2F0aW9uc1xuICAgIGlmIChhbHJlYWR5QmF0Y2hpbmdVcGRhdGVzKSB7XG4g
ICAgICByZXR1cm4gY2FsbGJhY2soYSwgYiwgYywgZCwgZSk7XG4gICAgfSBlbHNlIHtcbiAgICAg
IHJldHVybiB0cmFuc2FjdGlvbi5wZXJmb3JtKGNhbGxiYWNrLCBudWxsLCBhLCBiLCBjLCBkLCBl
KTtcbiAgICB9XG4gIH1cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3REZWZhdWx0QmF0Y2hp
bmdTdHJhdGVneTtcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxu
ICoqIC4vfi9yZWFjdC1kb20vbGliL1JlYWN0RGVmYXVsdEJhdGNoaW5nU3RyYXRlZ3kuanNcbiAq
KiBtb2R1bGUgaWQgPSAxNDlcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICog
Q29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNE
LXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qg
ZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9m
IHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNh
bWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBBUklBRE9NUHJv
cGVydHlDb25maWcgPSByZXF1aXJlKCcuL0FSSUFET01Qcm9wZXJ0eUNvbmZpZycpO1xudmFyIEJl
Zm9yZUlucHV0RXZlbnRQbHVnaW4gPSByZXF1aXJlKCcuL0JlZm9yZUlucHV0RXZlbnRQbHVnaW4n
KTtcbnZhciBDaGFuZ2VFdmVudFBsdWdpbiA9IHJlcXVpcmUoJy4vQ2hhbmdlRXZlbnRQbHVnaW4n
KTtcbnZhciBEZWZhdWx0RXZlbnRQbHVnaW5PcmRlciA9IHJlcXVpcmUoJy4vRGVmYXVsdEV2ZW50
UGx1Z2luT3JkZXInKTtcbnZhciBFbnRlckxlYXZlRXZlbnRQbHVnaW4gPSByZXF1aXJlKCcuL0Vu
dGVyTGVhdmVFdmVudFBsdWdpbicpO1xudmFyIEhUTUxET01Qcm9wZXJ0eUNvbmZpZyA9IHJlcXVp
cmUoJy4vSFRNTERPTVByb3BlcnR5Q29uZmlnJyk7XG52YXIgUmVhY3RDb21wb25lbnRCcm93c2Vy
RW52aXJvbm1lbnQgPSByZXF1aXJlKCcuL1JlYWN0Q29tcG9uZW50QnJvd3NlckVudmlyb25tZW50
Jyk7XG52YXIgUmVhY3RET01Db21wb25lbnQgPSByZXF1aXJlKCcuL1JlYWN0RE9NQ29tcG9uZW50
Jyk7XG52YXIgUmVhY3RET01Db21wb25lbnRUcmVlID0gcmVxdWlyZSgnLi9SZWFjdERPTUNvbXBv
bmVudFRyZWUnKTtcbnZhciBSZWFjdERPTUVtcHR5Q29tcG9uZW50ID0gcmVxdWlyZSgnLi9SZWFj
dERPTUVtcHR5Q29tcG9uZW50Jyk7XG52YXIgUmVhY3RET01UcmVlVHJhdmVyc2FsID0gcmVxdWly
ZSgnLi9SZWFjdERPTVRyZWVUcmF2ZXJzYWwnKTtcbnZhciBSZWFjdERPTVRleHRDb21wb25lbnQg
PSByZXF1aXJlKCcuL1JlYWN0RE9NVGV4dENvbXBvbmVudCcpO1xudmFyIFJlYWN0RGVmYXVsdEJh
dGNoaW5nU3RyYXRlZ3kgPSByZXF1aXJlKCcuL1JlYWN0RGVmYXVsdEJhdGNoaW5nU3RyYXRlZ3kn
KTtcbnZhciBSZWFjdEV2ZW50TGlzdGVuZXIgPSByZXF1aXJlKCcuL1JlYWN0RXZlbnRMaXN0ZW5l
cicpO1xudmFyIFJlYWN0SW5qZWN0aW9uID0gcmVxdWlyZSgnLi9SZWFjdEluamVjdGlvbicpO1xu
dmFyIFJlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb24gPSByZXF1aXJlKCcuL1JlYWN0UmVjb25jaWxl
VHJhbnNhY3Rpb24nKTtcbnZhciBTVkdET01Qcm9wZXJ0eUNvbmZpZyA9IHJlcXVpcmUoJy4vU1ZH
RE9NUHJvcGVydHlDb25maWcnKTtcbnZhciBTZWxlY3RFdmVudFBsdWdpbiA9IHJlcXVpcmUoJy4v
U2VsZWN0RXZlbnRQbHVnaW4nKTtcbnZhciBTaW1wbGVFdmVudFBsdWdpbiA9IHJlcXVpcmUoJy4v
U2ltcGxlRXZlbnRQbHVnaW4nKTtcblxudmFyIGFscmVhZHlJbmplY3RlZCA9IGZhbHNlO1xuXG5m
dW5jdGlvbiBpbmplY3QoKSB7XG4gIGlmIChhbHJlYWR5SW5qZWN0ZWQpIHtcbiAgICAvLyBUT0RP
OiBUaGlzIGlzIGN1cnJlbnRseSB0cnVlIGJlY2F1c2UgdGhlc2UgaW5qZWN0aW9ucyBhcmUgc2hh
cmVkIGJldHdlZW5cbiAgICAvLyB0aGUgY2xpZW50IGFuZCB0aGUgc2VydmVyIHBhY2thZ2UuIFRo
ZXkgc2hvdWxkIGJlIGJ1aWx0IGluZGVwZW5kZW50bHlcbiAgICAvLyBhbmQgbm90IHNoYXJlIGFu
eSBpbmplY3Rpb24gc3RhdGUuIFRoZW4gdGhpcyBwcm9ibGVtIHdpbGwgYmUgc29sdmVkLlxuICAg
IHJldHVybjtcbiAgfVxuICBhbHJlYWR5SW5qZWN0ZWQgPSB0cnVlO1xuXG4gIFJlYWN0SW5qZWN0
aW9uLkV2ZW50RW1pdHRlci5pbmplY3RSZWFjdEV2ZW50TGlzdGVuZXIoUmVhY3RFdmVudExpc3Rl
bmVyKTtcblxuICAvKipcbiAgICogSW5qZWN0IG1vZHVsZXMgZm9yIHJlc29sdmluZyBET00gaGll
cmFyY2h5IGFuZCBwbHVnaW4gb3JkZXJpbmcuXG4gICAqL1xuICBSZWFjdEluamVjdGlvbi5FdmVu
dFBsdWdpbkh1Yi5pbmplY3RFdmVudFBsdWdpbk9yZGVyKERlZmF1bHRFdmVudFBsdWdpbk9yZGVy
KTtcbiAgUmVhY3RJbmplY3Rpb24uRXZlbnRQbHVnaW5VdGlscy5pbmplY3RDb21wb25lbnRUcmVl
KFJlYWN0RE9NQ29tcG9uZW50VHJlZSk7XG4gIFJlYWN0SW5qZWN0aW9uLkV2ZW50UGx1Z2luVXRp
bHMuaW5qZWN0VHJlZVRyYXZlcnNhbChSZWFjdERPTVRyZWVUcmF2ZXJzYWwpO1xuXG4gIC8qKlxu
ICAgKiBTb21lIGltcG9ydGFudCBldmVudCBwbHVnaW5zIGluY2x1ZGVkIGJ5IGRlZmF1bHQgKHdp
dGhvdXQgaGF2aW5nIHRvIHJlcXVpcmVcbiAgICogdGhlbSkuXG4gICAqL1xuICBSZWFjdEluamVj
dGlvbi5FdmVudFBsdWdpbkh1Yi5pbmplY3RFdmVudFBsdWdpbnNCeU5hbWUoe1xuICAgIFNpbXBs
ZUV2ZW50UGx1Z2luOiBTaW1wbGVFdmVudFBsdWdpbixcbiAgICBFbnRlckxlYXZlRXZlbnRQbHVn
aW46IEVudGVyTGVhdmVFdmVudFBsdWdpbixcbiAgICBDaGFuZ2VFdmVudFBsdWdpbjogQ2hhbmdl
RXZlbnRQbHVnaW4sXG4gICAgU2VsZWN0RXZlbnRQbHVnaW46IFNlbGVjdEV2ZW50UGx1Z2luLFxu
ICAgIEJlZm9yZUlucHV0RXZlbnRQbHVnaW46IEJlZm9yZUlucHV0RXZlbnRQbHVnaW5cbiAgfSk7
XG5cbiAgUmVhY3RJbmplY3Rpb24uSG9zdENvbXBvbmVudC5pbmplY3RHZW5lcmljQ29tcG9uZW50
Q2xhc3MoUmVhY3RET01Db21wb25lbnQpO1xuXG4gIFJlYWN0SW5qZWN0aW9uLkhvc3RDb21wb25l
bnQuaW5qZWN0VGV4dENvbXBvbmVudENsYXNzKFJlYWN0RE9NVGV4dENvbXBvbmVudCk7XG5cbiAg
UmVhY3RJbmplY3Rpb24uRE9NUHJvcGVydHkuaW5qZWN0RE9NUHJvcGVydHlDb25maWcoQVJJQURP
TVByb3BlcnR5Q29uZmlnKTtcbiAgUmVhY3RJbmplY3Rpb24uRE9NUHJvcGVydHkuaW5qZWN0RE9N
UHJvcGVydHlDb25maWcoSFRNTERPTVByb3BlcnR5Q29uZmlnKTtcbiAgUmVhY3RJbmplY3Rpb24u
RE9NUHJvcGVydHkuaW5qZWN0RE9NUHJvcGVydHlDb25maWcoU1ZHRE9NUHJvcGVydHlDb25maWcp
O1xuXG4gIFJlYWN0SW5qZWN0aW9uLkVtcHR5Q29tcG9uZW50LmluamVjdEVtcHR5Q29tcG9uZW50
RmFjdG9yeShmdW5jdGlvbiAoaW5zdGFudGlhdGUpIHtcbiAgICByZXR1cm4gbmV3IFJlYWN0RE9N
RW1wdHlDb21wb25lbnQoaW5zdGFudGlhdGUpO1xuICB9KTtcblxuICBSZWFjdEluamVjdGlvbi5V
cGRhdGVzLmluamVjdFJlY29uY2lsZVRyYW5zYWN0aW9uKFJlYWN0UmVjb25jaWxlVHJhbnNhY3Rp
b24pO1xuICBSZWFjdEluamVjdGlvbi5VcGRhdGVzLmluamVjdEJhdGNoaW5nU3RyYXRlZ3koUmVh
Y3REZWZhdWx0QmF0Y2hpbmdTdHJhdGVneSk7XG5cbiAgUmVhY3RJbmplY3Rpb24uQ29tcG9uZW50
LmluamVjdEVudmlyb25tZW50KFJlYWN0Q29tcG9uZW50QnJvd3NlckVudmlyb25tZW50KTtcbn1c
blxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIGluamVjdDogaW5qZWN0XG59O1xuXG5cbi8qKioqKioq
KioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0LWRvbS9saWIvUmVh
Y3REZWZhdWx0SW5qZWN0aW9uLmpzXG4gKiogbW9kdWxlIGlkID0gMTUwXG4gKiogbW9kdWxlIGNo
dW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29r
LCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUg
aXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICog
TElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBB
biBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0
aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuJ3VzZSBz
dHJpY3QnO1xuXG52YXIgRXZlbnRQbHVnaW5IdWIgPSByZXF1aXJlKCcuL0V2ZW50UGx1Z2luSHVi
Jyk7XG5cbmZ1bmN0aW9uIHJ1bkV2ZW50UXVldWVJbkJhdGNoKGV2ZW50cykge1xuICBFdmVudFBs
dWdpbkh1Yi5lbnF1ZXVlRXZlbnRzKGV2ZW50cyk7XG4gIEV2ZW50UGx1Z2luSHViLnByb2Nlc3NF
dmVudFF1ZXVlKGZhbHNlKTtcbn1cblxudmFyIFJlYWN0RXZlbnRFbWl0dGVyTWl4aW4gPSB7XG4g
IC8qKlxuICAgKiBTdHJlYW1zIGEgZmlyZWQgdG9wLWxldmVsIGV2ZW50IHRvIGBFdmVudFBsdWdp
bkh1YmAgd2hlcmUgcGx1Z2lucyBoYXZlIHRoZVxuICAgKiBvcHBvcnR1bml0eSB0byBjcmVhdGUg
YFJlYWN0RXZlbnRgcyB0byBiZSBkaXNwYXRjaGVkLlxuICAgKi9cbiAgaGFuZGxlVG9wTGV2ZWw6
IGZ1bmN0aW9uICh0b3BMZXZlbFR5cGUsIHRhcmdldEluc3QsIG5hdGl2ZUV2ZW50LCBuYXRpdmVF
dmVudFRhcmdldCkge1xuICAgIHZhciBldmVudHMgPSBFdmVudFBsdWdpbkh1Yi5leHRyYWN0RXZl
bnRzKHRvcExldmVsVHlwZSwgdGFyZ2V0SW5zdCwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFy
Z2V0KTtcbiAgICBydW5FdmVudFF1ZXVlSW5CYXRjaChldmVudHMpO1xuICB9XG59O1xuXG5tb2R1
bGUuZXhwb3J0cyA9IFJlYWN0RXZlbnRFbWl0dGVyTWl4aW47XG5cblxuLyoqKioqKioqKioqKioq
KioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3QtZG9tL2xpYi9SZWFjdEV2ZW50
RW1pdHRlck1peGluLmpzXG4gKiogbW9kdWxlIGlkID0gMTUyXG4gKiogbW9kdWxlIGNodW5rcyA9
IDBcbiAqKi8iLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMu
XG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGlj
ZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5T
RSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRp
dGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFU
RU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJpY3Qn
O1xuXG52YXIgX2Fzc2lnbiA9IHJlcXVpcmUoJ29iamVjdC1hc3NpZ24nKTtcblxudmFyIEV2ZW50
TGlzdGVuZXIgPSByZXF1aXJlKCdmYmpzL2xpYi9FdmVudExpc3RlbmVyJyk7XG52YXIgRXhlY3V0
aW9uRW52aXJvbm1lbnQgPSByZXF1aXJlKCdmYmpzL2xpYi9FeGVjdXRpb25FbnZpcm9ubWVudCcp
O1xudmFyIFBvb2xlZENsYXNzID0gcmVxdWlyZSgnLi9Qb29sZWRDbGFzcycpO1xudmFyIFJlYWN0
RE9NQ29tcG9uZW50VHJlZSA9IHJlcXVpcmUoJy4vUmVhY3RET01Db21wb25lbnRUcmVlJyk7XG52
YXIgUmVhY3RVcGRhdGVzID0gcmVxdWlyZSgnLi9SZWFjdFVwZGF0ZXMnKTtcblxudmFyIGdldEV2
ZW50VGFyZ2V0ID0gcmVxdWlyZSgnLi9nZXRFdmVudFRhcmdldCcpO1xudmFyIGdldFVuYm91bmRl
ZFNjcm9sbFBvc2l0aW9uID0gcmVxdWlyZSgnZmJqcy9saWIvZ2V0VW5ib3VuZGVkU2Nyb2xsUG9z
aXRpb24nKTtcblxuLyoqXG4gKiBGaW5kIHRoZSBkZWVwZXN0IFJlYWN0IGNvbXBvbmVudCBjb21w
bGV0ZWx5IGNvbnRhaW5pbmcgdGhlIHJvb3Qgb2YgdGhlXG4gKiBwYXNzZWQtaW4gaW5zdGFuY2Ug
KGZvciB1c2Ugd2hlbiBlbnRpcmUgUmVhY3QgdHJlZXMgYXJlIG5lc3RlZCB3aXRoaW4gZWFjaFxu
ICogb3RoZXIpLiBJZiBSZWFjdCB0cmVlcyBhcmUgbm90IG5lc3RlZCwgcmV0dXJucyBudWxsLlxu
ICovXG5mdW5jdGlvbiBmaW5kUGFyZW50KGluc3QpIHtcbiAgLy8gVE9ETzogSXQgbWF5IGJlIGEg
Z29vZCBpZGVhIHRvIGNhY2hlIHRoaXMgdG8gcHJldmVudCB1bm5lY2Vzc2FyeSBET01cbiAgLy8g
dHJhdmVyc2FsLCBidXQgY2FjaGluZyBpcyBkaWZmaWN1bHQgdG8gZG8gY29ycmVjdGx5IHdpdGhv
dXQgdXNpbmcgYVxuICAvLyBtdXRhdGlvbiBvYnNlcnZlciB0byBsaXN0ZW4gZm9yIGFsbCBET00g
Y2hhbmdlcy5cbiAgd2hpbGUgKGluc3QuX2hvc3RQYXJlbnQpIHtcbiAgICBpbnN0ID0gaW5zdC5f
aG9zdFBhcmVudDtcbiAgfVxuICB2YXIgcm9vdE5vZGUgPSBSZWFjdERPTUNvbXBvbmVudFRyZWUu
Z2V0Tm9kZUZyb21JbnN0YW5jZShpbnN0KTtcbiAgdmFyIGNvbnRhaW5lciA9IHJvb3ROb2RlLnBh
cmVudE5vZGU7XG4gIHJldHVybiBSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0Q2xvc2VzdEluc3Rh
bmNlRnJvbU5vZGUoY29udGFpbmVyKTtcbn1cblxuLy8gVXNlZCB0byBzdG9yZSBhbmNlc3RvciBo
aWVyYXJjaHkgaW4gdG9wIGxldmVsIGNhbGxiYWNrXG5mdW5jdGlvbiBUb3BMZXZlbENhbGxiYWNr
Qm9va0tlZXBpbmcodG9wTGV2ZWxUeXBlLCBuYXRpdmVFdmVudCkge1xuICB0aGlzLnRvcExldmVs
VHlwZSA9IHRvcExldmVsVHlwZTtcbiAgdGhpcy5uYXRpdmVFdmVudCA9IG5hdGl2ZUV2ZW50O1xu
ICB0aGlzLmFuY2VzdG9ycyA9IFtdO1xufVxuX2Fzc2lnbihUb3BMZXZlbENhbGxiYWNrQm9va0tl
ZXBpbmcucHJvdG90eXBlLCB7XG4gIGRlc3RydWN0b3I6IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlz
LnRvcExldmVsVHlwZSA9IG51bGw7XG4gICAgdGhpcy5uYXRpdmVFdmVudCA9IG51bGw7XG4gICAg
dGhpcy5hbmNlc3RvcnMubGVuZ3RoID0gMDtcbiAgfVxufSk7XG5Qb29sZWRDbGFzcy5hZGRQb29s
aW5nVG8oVG9wTGV2ZWxDYWxsYmFja0Jvb2tLZWVwaW5nLCBQb29sZWRDbGFzcy50d29Bcmd1bWVu
dFBvb2xlcik7XG5cbmZ1bmN0aW9uIGhhbmRsZVRvcExldmVsSW1wbChib29rS2VlcGluZykge1xu
ICB2YXIgbmF0aXZlRXZlbnRUYXJnZXQgPSBnZXRFdmVudFRhcmdldChib29rS2VlcGluZy5uYXRp
dmVFdmVudCk7XG4gIHZhciB0YXJnZXRJbnN0ID0gUmVhY3RET01Db21wb25lbnRUcmVlLmdldENs
b3Nlc3RJbnN0YW5jZUZyb21Ob2RlKG5hdGl2ZUV2ZW50VGFyZ2V0KTtcblxuICAvLyBMb29wIHRo
cm91Z2ggdGhlIGhpZXJhcmNoeSwgaW4gY2FzZSB0aGVyZSdzIGFueSBuZXN0ZWQgY29tcG9uZW50
cy5cbiAgLy8gSXQncyBpbXBvcnRhbnQgdGhhdCB3ZSBidWlsZCB0aGUgYXJyYXkgb2YgYW5jZXN0
b3JzIGJlZm9yZSBjYWxsaW5nIGFueVxuICAvLyBldmVudCBoYW5kbGVycywgYmVjYXVzZSBldmVu
dCBoYW5kbGVycyBjYW4gbW9kaWZ5IHRoZSBET00sIGxlYWRpbmcgdG9cbiAgLy8gaW5jb25zaXN0
ZW5jaWVzIHdpdGggUmVhY3RNb3VudCdzIG5vZGUgY2FjaGUuIFNlZSAjMTEwNS5cbiAgdmFyIGFu
Y2VzdG9yID0gdGFyZ2V0SW5zdDtcbiAgZG8ge1xuICAgIGJvb2tLZWVwaW5nLmFuY2VzdG9ycy5w
dXNoKGFuY2VzdG9yKTtcbiAgICBhbmNlc3RvciA9IGFuY2VzdG9yICYmIGZpbmRQYXJlbnQoYW5j
ZXN0b3IpO1xuICB9IHdoaWxlIChhbmNlc3Rvcik7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBi
b29rS2VlcGluZy5hbmNlc3RvcnMubGVuZ3RoOyBpKyspIHtcbiAgICB0YXJnZXRJbnN0ID0gYm9v
a0tlZXBpbmcuYW5jZXN0b3JzW2ldO1xuICAgIFJlYWN0RXZlbnRMaXN0ZW5lci5faGFuZGxlVG9w
TGV2ZWwoYm9va0tlZXBpbmcudG9wTGV2ZWxUeXBlLCB0YXJnZXRJbnN0LCBib29rS2VlcGluZy5u
YXRpdmVFdmVudCwgZ2V0RXZlbnRUYXJnZXQoYm9va0tlZXBpbmcubmF0aXZlRXZlbnQpKTtcbiAg
fVxufVxuXG5mdW5jdGlvbiBzY3JvbGxWYWx1ZU1vbml0b3IoY2IpIHtcbiAgdmFyIHNjcm9sbFBv
c2l0aW9uID0gZ2V0VW5ib3VuZGVkU2Nyb2xsUG9zaXRpb24od2luZG93KTtcbiAgY2Ioc2Nyb2xs
UG9zaXRpb24pO1xufVxuXG52YXIgUmVhY3RFdmVudExpc3RlbmVyID0ge1xuICBfZW5hYmxlZDog
dHJ1ZSxcbiAgX2hhbmRsZVRvcExldmVsOiBudWxsLFxuXG4gIFdJTkRPV19IQU5ETEU6IEV4ZWN1
dGlvbkVudmlyb25tZW50LmNhblVzZURPTSA/IHdpbmRvdyA6IG51bGwsXG5cbiAgc2V0SGFuZGxl
VG9wTGV2ZWw6IGZ1bmN0aW9uIChoYW5kbGVUb3BMZXZlbCkge1xuICAgIFJlYWN0RXZlbnRMaXN0
ZW5lci5faGFuZGxlVG9wTGV2ZWwgPSBoYW5kbGVUb3BMZXZlbDtcbiAgfSxcblxuICBzZXRFbmFi
bGVkOiBmdW5jdGlvbiAoZW5hYmxlZCkge1xuICAgIFJlYWN0RXZlbnRMaXN0ZW5lci5fZW5hYmxl
ZCA9ICEhZW5hYmxlZDtcbiAgfSxcblxuICBpc0VuYWJsZWQ6IGZ1bmN0aW9uICgpIHtcbiAgICBy
ZXR1cm4gUmVhY3RFdmVudExpc3RlbmVyLl9lbmFibGVkO1xuICB9LFxuXG4gIC8qKlxuICAgKiBU
cmFwcyB0b3AtbGV2ZWwgZXZlbnRzIGJ5IHVzaW5nIGV2ZW50IGJ1YmJsaW5nLlxuICAgKlxuICAg
KiBAcGFyYW0ge3N0cmluZ30gdG9wTGV2ZWxUeXBlIFJlY29yZCBmcm9tIGBFdmVudENvbnN0YW50
c2AuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBoYW5kbGVyQmFzZU5hbWUgRXZlbnQgbmFtZSAoZS5n
LiBcImNsaWNrXCIpLlxuICAgKiBAcGFyYW0ge29iamVjdH0gZWxlbWVudCBFbGVtZW50IG9uIHdo
aWNoIHRvIGF0dGFjaCBsaXN0ZW5lci5cbiAgICogQHJldHVybiB7P29iamVjdH0gQW4gb2JqZWN0
IHdpdGggYSByZW1vdmUgZnVuY3Rpb24gd2hpY2ggd2lsbCBmb3JjZWZ1bGx5XG4gICAqICAgICAg
ICAgICAgICAgICAgcmVtb3ZlIHRoZSBsaXN0ZW5lci5cbiAgICogQGludGVybmFsXG4gICAqL1xu
ICB0cmFwQnViYmxlZEV2ZW50OiBmdW5jdGlvbiAodG9wTGV2ZWxUeXBlLCBoYW5kbGVyQmFzZU5h
bWUsIGVsZW1lbnQpIHtcbiAgICBpZiAoIWVsZW1lbnQpIHtcbiAgICAgIHJldHVybiBudWxsO1xu
ICAgIH1cbiAgICByZXR1cm4gRXZlbnRMaXN0ZW5lci5saXN0ZW4oZWxlbWVudCwgaGFuZGxlckJh
c2VOYW1lLCBSZWFjdEV2ZW50TGlzdGVuZXIuZGlzcGF0Y2hFdmVudC5iaW5kKG51bGwsIHRvcExl
dmVsVHlwZSkpO1xuICB9LFxuXG4gIC8qKlxuICAgKiBUcmFwcyBhIHRvcC1sZXZlbCBldmVudCBi
eSB1c2luZyBldmVudCBjYXB0dXJpbmcuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0b3BM
ZXZlbFR5cGUgUmVjb3JkIGZyb20gYEV2ZW50Q29uc3RhbnRzYC5cbiAgICogQHBhcmFtIHtzdHJp
bmd9IGhhbmRsZXJCYXNlTmFtZSBFdmVudCBuYW1lIChlLmcuIFwiY2xpY2tcIikuXG4gICAqIEBw
YXJhbSB7b2JqZWN0fSBlbGVtZW50IEVsZW1lbnQgb24gd2hpY2ggdG8gYXR0YWNoIGxpc3RlbmVy
LlxuICAgKiBAcmV0dXJuIHs/b2JqZWN0fSBBbiBvYmplY3Qgd2l0aCBhIHJlbW92ZSBmdW5jdGlv
biB3aGljaCB3aWxsIGZvcmNlZnVsbHlcbiAgICogICAgICAgICAgICAgICAgICByZW1vdmUgdGhl
IGxpc3RlbmVyLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHRyYXBDYXB0dXJlZEV2ZW50OiBm
dW5jdGlvbiAodG9wTGV2ZWxUeXBlLCBoYW5kbGVyQmFzZU5hbWUsIGVsZW1lbnQpIHtcbiAgICBp
ZiAoIWVsZW1lbnQpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gRXZl
bnRMaXN0ZW5lci5jYXB0dXJlKGVsZW1lbnQsIGhhbmRsZXJCYXNlTmFtZSwgUmVhY3RFdmVudExp
c3RlbmVyLmRpc3BhdGNoRXZlbnQuYmluZChudWxsLCB0b3BMZXZlbFR5cGUpKTtcbiAgfSxcblxu
ICBtb25pdG9yU2Nyb2xsVmFsdWU6IGZ1bmN0aW9uIChyZWZyZXNoKSB7XG4gICAgdmFyIGNhbGxi
YWNrID0gc2Nyb2xsVmFsdWVNb25pdG9yLmJpbmQobnVsbCwgcmVmcmVzaCk7XG4gICAgRXZlbnRM
aXN0ZW5lci5saXN0ZW4od2luZG93LCAnc2Nyb2xsJywgY2FsbGJhY2spO1xuICB9LFxuXG4gIGRp
c3BhdGNoRXZlbnQ6IGZ1bmN0aW9uICh0b3BMZXZlbFR5cGUsIG5hdGl2ZUV2ZW50KSB7XG4gICAg
aWYgKCFSZWFjdEV2ZW50TGlzdGVuZXIuX2VuYWJsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9
XG5cbiAgICB2YXIgYm9va0tlZXBpbmcgPSBUb3BMZXZlbENhbGxiYWNrQm9va0tlZXBpbmcuZ2V0
UG9vbGVkKHRvcExldmVsVHlwZSwgbmF0aXZlRXZlbnQpO1xuICAgIHRyeSB7XG4gICAgICAvLyBF
dmVudCBxdWV1ZSBiZWluZyBwcm9jZXNzZWQgaW4gdGhlIHNhbWUgY3ljbGUgYWxsb3dzXG4gICAg
ICAvLyBgcHJldmVudERlZmF1bHRgLlxuICAgICAgUmVhY3RVcGRhdGVzLmJhdGNoZWRVcGRhdGVz
KGhhbmRsZVRvcExldmVsSW1wbCwgYm9va0tlZXBpbmcpO1xuICAgIH0gZmluYWxseSB7XG4gICAg
ICBUb3BMZXZlbENhbGxiYWNrQm9va0tlZXBpbmcucmVsZWFzZShib29rS2VlcGluZyk7XG4gICAg
fVxuICB9XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0RXZlbnRMaXN0ZW5lcjtcblxuXG4v
KioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFjdC1kb20v
bGliL1JlYWN0RXZlbnRMaXN0ZW5lci5qc1xuICoqIG1vZHVsZSBpZCA9IDE1M1xuICoqIG1vZHVs
ZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNl
Ym9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBj
b2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVc
biAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJl
ZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQg
aW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICovXG5cbid1
c2Ugc3RyaWN0JztcblxudmFyIERPTVByb3BlcnR5ID0gcmVxdWlyZSgnLi9ET01Qcm9wZXJ0eScp
O1xudmFyIEV2ZW50UGx1Z2luSHViID0gcmVxdWlyZSgnLi9FdmVudFBsdWdpbkh1YicpO1xudmFy
IEV2ZW50UGx1Z2luVXRpbHMgPSByZXF1aXJlKCcuL0V2ZW50UGx1Z2luVXRpbHMnKTtcbnZhciBS
ZWFjdENvbXBvbmVudEVudmlyb25tZW50ID0gcmVxdWlyZSgnLi9SZWFjdENvbXBvbmVudEVudmly
b25tZW50Jyk7XG52YXIgUmVhY3RFbXB0eUNvbXBvbmVudCA9IHJlcXVpcmUoJy4vUmVhY3RFbXB0
eUNvbXBvbmVudCcpO1xudmFyIFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlciA9IHJlcXVpcmUoJy4v
UmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyJyk7XG52YXIgUmVhY3RIb3N0Q29tcG9uZW50ID0gcmVx
dWlyZSgnLi9SZWFjdEhvc3RDb21wb25lbnQnKTtcbnZhciBSZWFjdFVwZGF0ZXMgPSByZXF1aXJl
KCcuL1JlYWN0VXBkYXRlcycpO1xuXG52YXIgUmVhY3RJbmplY3Rpb24gPSB7XG4gIENvbXBvbmVu
dDogUmVhY3RDb21wb25lbnRFbnZpcm9ubWVudC5pbmplY3Rpb24sXG4gIERPTVByb3BlcnR5OiBE
T01Qcm9wZXJ0eS5pbmplY3Rpb24sXG4gIEVtcHR5Q29tcG9uZW50OiBSZWFjdEVtcHR5Q29tcG9u
ZW50LmluamVjdGlvbixcbiAgRXZlbnRQbHVnaW5IdWI6IEV2ZW50UGx1Z2luSHViLmluamVjdGlv
bixcbiAgRXZlbnRQbHVnaW5VdGlsczogRXZlbnRQbHVnaW5VdGlscy5pbmplY3Rpb24sXG4gIEV2
ZW50RW1pdHRlcjogUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLmluamVjdGlvbixcbiAgSG9zdENv
bXBvbmVudDogUmVhY3RIb3N0Q29tcG9uZW50LmluamVjdGlvbixcbiAgVXBkYXRlczogUmVhY3RV
cGRhdGVzLmluamVjdGlvblxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdEluamVjdGlvbjtc
blxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFj
dC1kb20vbGliL1JlYWN0SW5qZWN0aW9uLmpzXG4gKiogbW9kdWxlIGlkID0gMTU0XG4gKiogbW9k
dWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZh
Y2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNl
IGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRo
ZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0
cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3Vu
ZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxu
J3VzZSBzdHJpY3QnO1xuXG52YXIgYWRsZXIzMiA9IHJlcXVpcmUoJy4vYWRsZXIzMicpO1xuXG52
YXIgVEFHX0VORCA9IC9cXC8/Pi87XG52YXIgQ09NTUVOVF9TVEFSVCA9IC9ePFxcIVxcLVxcLS87
XG5cbnZhciBSZWFjdE1hcmt1cENoZWNrc3VtID0ge1xuICBDSEVDS1NVTV9BVFRSX05BTUU6ICdk
YXRhLXJlYWN0LWNoZWNrc3VtJyxcblxuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd9IG1hcmt1
cCBNYXJrdXAgc3RyaW5nXG4gICAqIEByZXR1cm4ge3N0cmluZ30gTWFya3VwIHN0cmluZyB3aXRo
IGNoZWNrc3VtIGF0dHJpYnV0ZSBhdHRhY2hlZFxuICAgKi9cbiAgYWRkQ2hlY2tzdW1Ub01hcmt1
cDogZnVuY3Rpb24gKG1hcmt1cCkge1xuICAgIHZhciBjaGVja3N1bSA9IGFkbGVyMzIobWFya3Vw
KTtcblxuICAgIC8vIEFkZCBjaGVja3N1bSAoaGFuZGxlIGJvdGggcGFyZW50IHRhZ3MsIGNvbW1l
bnRzIGFuZCBzZWxmLWNsb3NpbmcgdGFncylcbiAgICBpZiAoQ09NTUVOVF9TVEFSVC50ZXN0KG1h
cmt1cCkpIHtcbiAgICAgIHJldHVybiBtYXJrdXA7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVy
biBtYXJrdXAucmVwbGFjZShUQUdfRU5ELCAnICcgKyBSZWFjdE1hcmt1cENoZWNrc3VtLkNIRUNL
U1VNX0FUVFJfTkFNRSArICc9XCInICsgY2hlY2tzdW0gKyAnXCIkJicpO1xuICAgIH1cbiAgfSxc
blxuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd9IG1hcmt1cCB0byB1c2VcbiAgICogQHBhcmFt
IHtET01FbGVtZW50fSBlbGVtZW50IHJvb3QgUmVhY3QgZWxlbWVudFxuICAgKiBAcmV0dXJucyB7
Ym9vbGVhbn0gd2hldGhlciBvciBub3QgdGhlIG1hcmt1cCBpcyB0aGUgc2FtZVxuICAgKi9cbiAg
Y2FuUmV1c2VNYXJrdXA6IGZ1bmN0aW9uIChtYXJrdXAsIGVsZW1lbnQpIHtcbiAgICB2YXIgZXhp
c3RpbmdDaGVja3N1bSA9IGVsZW1lbnQuZ2V0QXR0cmlidXRlKFJlYWN0TWFya3VwQ2hlY2tzdW0u
Q0hFQ0tTVU1fQVRUUl9OQU1FKTtcbiAgICBleGlzdGluZ0NoZWNrc3VtID0gZXhpc3RpbmdDaGVj
a3N1bSAmJiBwYXJzZUludChleGlzdGluZ0NoZWNrc3VtLCAxMCk7XG4gICAgdmFyIG1hcmt1cENo
ZWNrc3VtID0gYWRsZXIzMihtYXJrdXApO1xuICAgIHJldHVybiBtYXJrdXBDaGVja3N1bSA9PT0g
ZXhpc3RpbmdDaGVja3N1bTtcbiAgfVxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdE1hcmt1
cENoZWNrc3VtO1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4g
KiogLi9+L3JlYWN0LWRvbS9saWIvUmVhY3RNYXJrdXBDaGVja3N1bS5qc1xuICoqIG1vZHVsZSBp
ZCA9IDE1NVxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQg
MjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAq
XG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGlj
ZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkg
b2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJp
Z2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3Rv
cnkuXG4gKlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIF9wcm9kSW52YXJpYW50ID0gcmVx
dWlyZSgnLi9yZWFjdFByb2RJbnZhcmlhbnQnKTtcblxudmFyIFJlYWN0Q29tcG9uZW50RW52aXJv
bm1lbnQgPSByZXF1aXJlKCcuL1JlYWN0Q29tcG9uZW50RW52aXJvbm1lbnQnKTtcbnZhciBSZWFj
dEluc3RhbmNlTWFwID0gcmVxdWlyZSgnLi9SZWFjdEluc3RhbmNlTWFwJyk7XG52YXIgUmVhY3RJ
bnN0cnVtZW50YXRpb24gPSByZXF1aXJlKCcuL1JlYWN0SW5zdHJ1bWVudGF0aW9uJyk7XG5cbnZh
ciBSZWFjdEN1cnJlbnRPd25lciA9IHJlcXVpcmUoJ3JlYWN0L2xpYi9SZWFjdEN1cnJlbnRPd25l
cicpO1xudmFyIFJlYWN0UmVjb25jaWxlciA9IHJlcXVpcmUoJy4vUmVhY3RSZWNvbmNpbGVyJyk7
XG52YXIgUmVhY3RDaGlsZFJlY29uY2lsZXIgPSByZXF1aXJlKCcuL1JlYWN0Q2hpbGRSZWNvbmNp
bGVyJyk7XG5cbnZhciBlbXB0eUZ1bmN0aW9uID0gcmVxdWlyZSgnZmJqcy9saWIvZW1wdHlGdW5j
dGlvbicpO1xudmFyIGZsYXR0ZW5DaGlsZHJlbiA9IHJlcXVpcmUoJy4vZmxhdHRlbkNoaWxkcmVu
Jyk7XG52YXIgaW52YXJpYW50ID0gcmVxdWlyZSgnZmJqcy9saWIvaW52YXJpYW50Jyk7XG5cbi8q
KlxuICogTWFrZSBhbiB1cGRhdGUgZm9yIG1hcmt1cCB0byBiZSByZW5kZXJlZCBhbmQgaW5zZXJ0
ZWQgYXQgYSBzdXBwbGllZCBpbmRleC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gbWFya3VwIE1h
cmt1cCB0aGF0IHJlbmRlcnMgaW50byBhbiBlbGVtZW50LlxuICogQHBhcmFtIHtudW1iZXJ9IHRv
SW5kZXggRGVzdGluYXRpb24gaW5kZXguXG4gKiBAcHJpdmF0ZVxuICovXG5mdW5jdGlvbiBtYWtl
SW5zZXJ0TWFya3VwKG1hcmt1cCwgYWZ0ZXJOb2RlLCB0b0luZGV4KSB7XG4gIC8vIE5PVEU6IE51
bGwgdmFsdWVzIHJlZHVjZSBoaWRkZW4gY2xhc3Nlcy5cbiAgcmV0dXJuIHtcbiAgICB0eXBlOiAn
SU5TRVJUX01BUktVUCcsXG4gICAgY29udGVudDogbWFya3VwLFxuICAgIGZyb21JbmRleDogbnVs
bCxcbiAgICBmcm9tTm9kZTogbnVsbCxcbiAgICB0b0luZGV4OiB0b0luZGV4LFxuICAgIGFmdGVy
Tm9kZTogYWZ0ZXJOb2RlXG4gIH07XG59XG5cbi8qKlxuICogTWFrZSBhbiB1cGRhdGUgZm9yIG1v
dmluZyBhbiBleGlzdGluZyBlbGVtZW50IHRvIGFub3RoZXIgaW5kZXguXG4gKlxuICogQHBhcmFt
IHtudW1iZXJ9IGZyb21JbmRleCBTb3VyY2UgaW5kZXggb2YgdGhlIGV4aXN0aW5nIGVsZW1lbnQu
XG4gKiBAcGFyYW0ge251bWJlcn0gdG9JbmRleCBEZXN0aW5hdGlvbiBpbmRleCBvZiB0aGUgZWxl
bWVudC5cbiAqIEBwcml2YXRlXG4gKi9cbmZ1bmN0aW9uIG1ha2VNb3ZlKGNoaWxkLCBhZnRlck5v
ZGUsIHRvSW5kZXgpIHtcbiAgLy8gTk9URTogTnVsbCB2YWx1ZXMgcmVkdWNlIGhpZGRlbiBjbGFz
c2VzLlxuICByZXR1cm4ge1xuICAgIHR5cGU6ICdNT1ZFX0VYSVNUSU5HJyxcbiAgICBjb250ZW50
OiBudWxsLFxuICAgIGZyb21JbmRleDogY2hpbGQuX21vdW50SW5kZXgsXG4gICAgZnJvbU5vZGU6
IFJlYWN0UmVjb25jaWxlci5nZXRIb3N0Tm9kZShjaGlsZCksXG4gICAgdG9JbmRleDogdG9JbmRl
eCxcbiAgICBhZnRlck5vZGU6IGFmdGVyTm9kZVxuICB9O1xufVxuXG4vKipcbiAqIE1ha2UgYW4g
dXBkYXRlIGZvciByZW1vdmluZyBhbiBlbGVtZW50IGF0IGFuIGluZGV4LlxuICpcbiAqIEBwYXJh
bSB7bnVtYmVyfSBmcm9tSW5kZXggSW5kZXggb2YgdGhlIGVsZW1lbnQgdG8gcmVtb3ZlLlxuICog
QHByaXZhdGVcbiAqL1xuZnVuY3Rpb24gbWFrZVJlbW92ZShjaGlsZCwgbm9kZSkge1xuICAvLyBO
T1RFOiBOdWxsIHZhbHVlcyByZWR1Y2UgaGlkZGVuIGNsYXNzZXMuXG4gIHJldHVybiB7XG4gICAg
dHlwZTogJ1JFTU9WRV9OT0RFJyxcbiAgICBjb250ZW50OiBudWxsLFxuICAgIGZyb21JbmRleDog
Y2hpbGQuX21vdW50SW5kZXgsXG4gICAgZnJvbU5vZGU6IG5vZGUsXG4gICAgdG9JbmRleDogbnVs
bCxcbiAgICBhZnRlck5vZGU6IG51bGxcbiAgfTtcbn1cblxuLyoqXG4gKiBNYWtlIGFuIHVwZGF0
ZSBmb3Igc2V0dGluZyB0aGUgbWFya3VwIG9mIGEgbm9kZS5cbiAqXG4gKiBAcGFyYW0ge3N0cmlu
Z30gbWFya3VwIE1hcmt1cCB0aGF0IHJlbmRlcnMgaW50byBhbiBlbGVtZW50LlxuICogQHByaXZh
dGVcbiAqL1xuZnVuY3Rpb24gbWFrZVNldE1hcmt1cChtYXJrdXApIHtcbiAgLy8gTk9URTogTnVs
bCB2YWx1ZXMgcmVkdWNlIGhpZGRlbiBjbGFzc2VzLlxuICByZXR1cm4ge1xuICAgIHR5cGU6ICdT
RVRfTUFSS1VQJyxcbiAgICBjb250ZW50OiBtYXJrdXAsXG4gICAgZnJvbUluZGV4OiBudWxsLFxu
ICAgIGZyb21Ob2RlOiBudWxsLFxuICAgIHRvSW5kZXg6IG51bGwsXG4gICAgYWZ0ZXJOb2RlOiBu
dWxsXG4gIH07XG59XG5cbi8qKlxuICogTWFrZSBhbiB1cGRhdGUgZm9yIHNldHRpbmcgdGhlIHRl
eHQgY29udGVudC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gdGV4dENvbnRlbnQgVGV4dCBjb250
ZW50IHRvIHNldC5cbiAqIEBwcml2YXRlXG4gKi9cbmZ1bmN0aW9uIG1ha2VUZXh0Q29udGVudCh0
ZXh0Q29udGVudCkge1xuICAvLyBOT1RFOiBOdWxsIHZhbHVlcyByZWR1Y2UgaGlkZGVuIGNsYXNz
ZXMuXG4gIHJldHVybiB7XG4gICAgdHlwZTogJ1RFWFRfQ09OVEVOVCcsXG4gICAgY29udGVudDog
dGV4dENvbnRlbnQsXG4gICAgZnJvbUluZGV4OiBudWxsLFxuICAgIGZyb21Ob2RlOiBudWxsLFxu
ICAgIHRvSW5kZXg6IG51bGwsXG4gICAgYWZ0ZXJOb2RlOiBudWxsXG4gIH07XG59XG5cbi8qKlxu
ICogUHVzaCBhbiB1cGRhdGUsIGlmIGFueSwgb250byB0aGUgcXVldWUuIENyZWF0ZXMgYSBuZXcg
cXVldWUgaWYgbm9uZSBpc1xuICogcGFzc2VkIGFuZCBhbHdheXMgcmV0dXJucyB0aGUgcXVldWUu
IE11dGF0aXZlLlxuICovXG5mdW5jdGlvbiBlbnF1ZXVlKHF1ZXVlLCB1cGRhdGUpIHtcbiAgaWYg
KHVwZGF0ZSkge1xuICAgIHF1ZXVlID0gcXVldWUgfHwgW107XG4gICAgcXVldWUucHVzaCh1cGRh
dGUpO1xuICB9XG4gIHJldHVybiBxdWV1ZTtcbn1cblxuLyoqXG4gKiBQcm9jZXNzZXMgYW55IGVu
cXVldWVkIHVwZGF0ZXMuXG4gKlxuICogQHByaXZhdGVcbiAqL1xuZnVuY3Rpb24gcHJvY2Vzc1F1
ZXVlKGluc3QsIHVwZGF0ZVF1ZXVlKSB7XG4gIFJlYWN0Q29tcG9uZW50RW52aXJvbm1lbnQucHJv
Y2Vzc0NoaWxkcmVuVXBkYXRlcyhpbnN0LCB1cGRhdGVRdWV1ZSk7XG59XG5cbnZhciBzZXRDaGls
ZHJlbkZvckluc3RydW1lbnRhdGlvbiA9IGVtcHR5RnVuY3Rpb247XG5pZiAocHJvY2Vzcy5lbnYu
Tk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICB2YXIgZ2V0RGVidWdJRCA9IGZ1bmN0aW9u
IChpbnN0KSB7XG4gICAgaWYgKCFpbnN0Ll9kZWJ1Z0lEKSB7XG4gICAgICAvLyBDaGVjayBmb3Ig
QVJULWxpa2UgaW5zdGFuY2VzLiBUT0RPOiBUaGlzIGlzIHNpbGx5L2dyb3NzLlxuICAgICAgdmFy
IGludGVybmFsO1xuICAgICAgaWYgKGludGVybmFsID0gUmVhY3RJbnN0YW5jZU1hcC5nZXQoaW5z
dCkpIHtcbiAgICAgICAgaW5zdCA9IGludGVybmFsO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1
cm4gaW5zdC5fZGVidWdJRDtcbiAgfTtcbiAgc2V0Q2hpbGRyZW5Gb3JJbnN0cnVtZW50YXRpb24g
PSBmdW5jdGlvbiAoY2hpbGRyZW4pIHtcbiAgICB2YXIgZGVidWdJRCA9IGdldERlYnVnSUQodGhp
cyk7XG4gICAgLy8gVE9ETzogUmVhY3QgTmF0aXZlIGVtcHR5IGNvbXBvbmVudHMgYXJlIGFsc28g
bXVsdGljaGlsZC5cbiAgICAvLyBUaGlzIG1lYW5zIHRoZXkgc3RpbGwgZ2V0IGludG8gdGhpcyBt
ZXRob2QgYnV0IGRvbid0IGhhdmUgX2RlYnVnSUQuXG4gICAgaWYgKGRlYnVnSUQgIT09IDApIHtc
biAgICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vblNldENoaWxkcmVuKGRlYnVn
SUQsIGNoaWxkcmVuID8gT2JqZWN0LmtleXMoY2hpbGRyZW4pLm1hcChmdW5jdGlvbiAoa2V5KSB7
XG4gICAgICAgIHJldHVybiBjaGlsZHJlbltrZXldLl9kZWJ1Z0lEO1xuICAgICAgfSkgOiBbXSk7
XG4gICAgfVxuICB9O1xufVxuXG4vKipcbiAqIFJlYWN0TXVsdGlDaGlsZCBhcmUgY2FwYWJsZSBv
ZiByZWNvbmNpbGluZyBtdWx0aXBsZSBjaGlsZHJlbi5cbiAqXG4gKiBAY2xhc3MgUmVhY3RNdWx0
aUNoaWxkXG4gKiBAaW50ZXJuYWxcbiAqL1xudmFyIFJlYWN0TXVsdGlDaGlsZCA9IHtcbiAgLyoq
XG4gICAqIFByb3ZpZGVzIGNvbW1vbiBmdW5jdGlvbmFsaXR5IGZvciBjb21wb25lbnRzIHRoYXQg
bXVzdCByZWNvbmNpbGUgbXVsdGlwbGVcbiAgICogY2hpbGRyZW4uIFRoaXMgaXMgdXNlZCBieSBg
UmVhY3RET01Db21wb25lbnRgIHRvIG1vdW50LCB1cGRhdGUsIGFuZFxuICAgKiB1bm1vdW50IGNo
aWxkIGNvbXBvbmVudHMuXG4gICAqXG4gICAqIEBsZW5kcyB7UmVhY3RNdWx0aUNoaWxkLnByb3Rv
dHlwZX1cbiAgICovXG4gIE1peGluOiB7XG4gICAgX3JlY29uY2lsZXJJbnN0YW50aWF0ZUNoaWxk
cmVuOiBmdW5jdGlvbiAobmVzdGVkQ2hpbGRyZW4sIHRyYW5zYWN0aW9uLCBjb250ZXh0KSB7XG4g
ICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAg
ICB2YXIgc2VsZkRlYnVnSUQgPSBnZXREZWJ1Z0lEKHRoaXMpO1xuICAgICAgICBpZiAodGhpcy5f
Y3VycmVudEVsZW1lbnQpIHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgUmVhY3RDdXJy
ZW50T3duZXIuY3VycmVudCA9IHRoaXMuX2N1cnJlbnRFbGVtZW50Ll9vd25lcjtcbiAgICAgICAg
ICAgIHJldHVybiBSZWFjdENoaWxkUmVjb25jaWxlci5pbnN0YW50aWF0ZUNoaWxkcmVuKG5lc3Rl
ZENoaWxkcmVuLCB0cmFuc2FjdGlvbiwgY29udGV4dCwgc2VsZkRlYnVnSUQpO1xuICAgICAgICAg
IH0gZmluYWxseSB7XG4gICAgICAgICAgICBSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50ID0gbnVs
bDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBSZWFjdENo
aWxkUmVjb25jaWxlci5pbnN0YW50aWF0ZUNoaWxkcmVuKG5lc3RlZENoaWxkcmVuLCB0cmFuc2Fj
dGlvbiwgY29udGV4dCk7XG4gICAgfSxcblxuICAgIF9yZWNvbmNpbGVyVXBkYXRlQ2hpbGRyZW46
IGZ1bmN0aW9uIChwcmV2Q2hpbGRyZW4sIG5leHROZXN0ZWRDaGlsZHJlbkVsZW1lbnRzLCBtb3Vu
dEltYWdlcywgcmVtb3ZlZE5vZGVzLCB0cmFuc2FjdGlvbiwgY29udGV4dCkge1xuICAgICAgdmFy
IG5leHRDaGlsZHJlbjtcbiAgICAgIHZhciBzZWxmRGVidWdJRCA9IDA7XG4gICAgICBpZiAocHJv
Y2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICBzZWxmRGVidWdJ
RCA9IGdldERlYnVnSUQodGhpcyk7XG4gICAgICAgIGlmICh0aGlzLl9jdXJyZW50RWxlbWVudCkg
e1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50
ID0gdGhpcy5fY3VycmVudEVsZW1lbnQuX293bmVyO1xuICAgICAgICAgICAgbmV4dENoaWxkcmVu
ID0gZmxhdHRlbkNoaWxkcmVuKG5leHROZXN0ZWRDaGlsZHJlbkVsZW1lbnRzLCBzZWxmRGVidWdJ
RCk7XG4gICAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgIFJlYWN0Q3VycmVudE93bmVy
LmN1cnJlbnQgPSBudWxsO1xuICAgICAgICAgIH1cbiAgICAgICAgICBSZWFjdENoaWxkUmVjb25j
aWxlci51cGRhdGVDaGlsZHJlbihwcmV2Q2hpbGRyZW4sIG5leHRDaGlsZHJlbiwgbW91bnRJbWFn
ZXMsIHJlbW92ZWROb2RlcywgdHJhbnNhY3Rpb24sIHRoaXMsIHRoaXMuX2hvc3RDb250YWluZXJJ
bmZvLCBjb250ZXh0LCBzZWxmRGVidWdJRCk7XG4gICAgICAgICAgcmV0dXJuIG5leHRDaGlsZHJl
bjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgbmV4dENoaWxkcmVuID0gZmxhdHRlbkNoaWxk
cmVuKG5leHROZXN0ZWRDaGlsZHJlbkVsZW1lbnRzLCBzZWxmRGVidWdJRCk7XG4gICAgICBSZWFj
dENoaWxkUmVjb25jaWxlci51cGRhdGVDaGlsZHJlbihwcmV2Q2hpbGRyZW4sIG5leHRDaGlsZHJl
biwgbW91bnRJbWFnZXMsIHJlbW92ZWROb2RlcywgdHJhbnNhY3Rpb24sIHRoaXMsIHRoaXMuX2hv
c3RDb250YWluZXJJbmZvLCBjb250ZXh0LCBzZWxmRGVidWdJRCk7XG4gICAgICByZXR1cm4gbmV4
dENoaWxkcmVuO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBHZW5lcmF0ZXMgYSBcIm1vdW50
IGltYWdlXCIgZm9yIGVhY2ggb2YgdGhlIHN1cHBsaWVkIGNoaWxkcmVuLiBJbiB0aGUgY2FzZVxu
ICAgICAqIG9mIGBSZWFjdERPTUNvbXBvbmVudGAsIGEgbW91bnQgaW1hZ2UgaXMgYSBzdHJpbmcg
b2YgbWFya3VwLlxuICAgICAqXG4gICAgICogQHBhcmFtIHs/b2JqZWN0fSBuZXN0ZWRDaGlsZHJl
biBOZXN0ZWQgY2hpbGQgbWFwcy5cbiAgICAgKiBAcmV0dXJuIHthcnJheX0gQW4gYXJyYXkgb2Yg
bW91bnRlZCByZXByZXNlbnRhdGlvbnMuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAg
bW91bnRDaGlsZHJlbjogZnVuY3Rpb24gKG5lc3RlZENoaWxkcmVuLCB0cmFuc2FjdGlvbiwgY29u
dGV4dCkge1xuICAgICAgdmFyIGNoaWxkcmVuID0gdGhpcy5fcmVjb25jaWxlckluc3RhbnRpYXRl
Q2hpbGRyZW4obmVzdGVkQ2hpbGRyZW4sIHRyYW5zYWN0aW9uLCBjb250ZXh0KTtcbiAgICAgIHRo
aXMuX3JlbmRlcmVkQ2hpbGRyZW4gPSBjaGlsZHJlbjtcblxuICAgICAgdmFyIG1vdW50SW1hZ2Vz
ID0gW107XG4gICAgICB2YXIgaW5kZXggPSAwO1xuICAgICAgZm9yICh2YXIgbmFtZSBpbiBjaGls
ZHJlbikge1xuICAgICAgICBpZiAoY2hpbGRyZW4uaGFzT3duUHJvcGVydHkobmFtZSkpIHtcbiAg
ICAgICAgICB2YXIgY2hpbGQgPSBjaGlsZHJlbltuYW1lXTtcbiAgICAgICAgICB2YXIgc2VsZkRl
YnVnSUQgPSAwO1xuICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1
Y3Rpb24nKSB7XG4gICAgICAgICAgICBzZWxmRGVidWdJRCA9IGdldERlYnVnSUQodGhpcyk7XG4g
ICAgICAgICAgfVxuICAgICAgICAgIHZhciBtb3VudEltYWdlID0gUmVhY3RSZWNvbmNpbGVyLm1v
dW50Q29tcG9uZW50KGNoaWxkLCB0cmFuc2FjdGlvbiwgdGhpcywgdGhpcy5faG9zdENvbnRhaW5l
ckluZm8sIGNvbnRleHQsIHNlbGZEZWJ1Z0lEKTtcbiAgICAgICAgICBjaGlsZC5fbW91bnRJbmRl
eCA9IGluZGV4Kys7XG4gICAgICAgICAgbW91bnRJbWFnZXMucHVzaChtb3VudEltYWdlKTtcbiAg
ICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdw
cm9kdWN0aW9uJykge1xuICAgICAgICBzZXRDaGlsZHJlbkZvckluc3RydW1lbnRhdGlvbi5jYWxs
KHRoaXMsIGNoaWxkcmVuKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG1vdW50SW1hZ2VzO1xu
ICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBSZXBsYWNlcyBhbnkgcmVuZGVyZWQgY2hpbGRyZW4g
d2l0aCBhIHRleHQgY29udGVudCBzdHJpbmcuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge3N0cmlu
Z30gbmV4dENvbnRlbnQgU3RyaW5nIG9mIGNvbnRlbnQuXG4gICAgICogQGludGVybmFsXG4gICAg
ICovXG4gICAgdXBkYXRlVGV4dENvbnRlbnQ6IGZ1bmN0aW9uIChuZXh0Q29udGVudCkge1xuICAg
ICAgdmFyIHByZXZDaGlsZHJlbiA9IHRoaXMuX3JlbmRlcmVkQ2hpbGRyZW47XG4gICAgICAvLyBS
ZW1vdmUgYW55IHJlbmRlcmVkIGNoaWxkcmVuLlxuICAgICAgUmVhY3RDaGlsZFJlY29uY2lsZXIu
dW5tb3VudENoaWxkcmVuKHByZXZDaGlsZHJlbiwgZmFsc2UpO1xuICAgICAgZm9yICh2YXIgbmFt
ZSBpbiBwcmV2Q2hpbGRyZW4pIHtcbiAgICAgICAgaWYgKHByZXZDaGlsZHJlbi5oYXNPd25Qcm9w
ZXJ0eShuYW1lKSkge1xuICAgICAgICAgICFmYWxzZSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9
PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICd1cGRhdGVUZXh0Q29udGVudCBjYWxs
ZWQgb24gbm9uLWVtcHR5IGNvbXBvbmVudC4nKSA6IF9wcm9kSW52YXJpYW50KCcxMTgnKSA6IHZv
aWQgMDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLy8gU2V0IG5ldyB0ZXh0IGNvbnRlbnQu
XG4gICAgICB2YXIgdXBkYXRlcyA9IFttYWtlVGV4dENvbnRlbnQobmV4dENvbnRlbnQpXTtcbiAg
ICAgIHByb2Nlc3NRdWV1ZSh0aGlzLCB1cGRhdGVzKTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAg
ICogUmVwbGFjZXMgYW55IHJlbmRlcmVkIGNoaWxkcmVuIHdpdGggYSBtYXJrdXAgc3RyaW5nLlxu
ICAgICAqXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IG5leHRNYXJrdXAgU3RyaW5nIG9mIG1hcmt1
cC5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICB1cGRhdGVNYXJrdXA6IGZ1bmN0aW9u
IChuZXh0TWFya3VwKSB7XG4gICAgICB2YXIgcHJldkNoaWxkcmVuID0gdGhpcy5fcmVuZGVyZWRD
aGlsZHJlbjtcbiAgICAgIC8vIFJlbW92ZSBhbnkgcmVuZGVyZWQgY2hpbGRyZW4uXG4gICAgICBS
ZWFjdENoaWxkUmVjb25jaWxlci51bm1vdW50Q2hpbGRyZW4ocHJldkNoaWxkcmVuLCBmYWxzZSk7
XG4gICAgICBmb3IgKHZhciBuYW1lIGluIHByZXZDaGlsZHJlbikge1xuICAgICAgICBpZiAocHJl
dkNoaWxkcmVuLmhhc093blByb3BlcnR5KG5hbWUpKSB7XG4gICAgICAgICAgIWZhbHNlID8gcHJv
Y2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ3Vw
ZGF0ZVRleHRDb250ZW50IGNhbGxlZCBvbiBub24tZW1wdHkgY29tcG9uZW50LicpIDogX3Byb2RJ
bnZhcmlhbnQoJzExOCcpIDogdm9pZCAwO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICB2YXIg
dXBkYXRlcyA9IFttYWtlU2V0TWFya3VwKG5leHRNYXJrdXApXTtcbiAgICAgIHByb2Nlc3NRdWV1
ZSh0aGlzLCB1cGRhdGVzKTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogVXBkYXRlcyB0aGUg
cmVuZGVyZWQgY2hpbGRyZW4gd2l0aCBuZXcgY2hpbGRyZW4uXG4gICAgICpcbiAgICAgKiBAcGFy
YW0gez9vYmplY3R9IG5leHROZXN0ZWRDaGlsZHJlbkVsZW1lbnRzIE5lc3RlZCBjaGlsZCBlbGVt
ZW50IG1hcHMuXG4gICAgICogQHBhcmFtIHtSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9ufSB0cmFu
c2FjdGlvblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHVwZGF0ZUNoaWxkcmVuOiBm
dW5jdGlvbiAobmV4dE5lc3RlZENoaWxkcmVuRWxlbWVudHMsIHRyYW5zYWN0aW9uLCBjb250ZXh0
KSB7XG4gICAgICAvLyBIb29rIHVzZWQgYnkgUmVhY3QgQVJUXG4gICAgICB0aGlzLl91cGRhdGVD
aGlsZHJlbihuZXh0TmVzdGVkQ2hpbGRyZW5FbGVtZW50cywgdHJhbnNhY3Rpb24sIGNvbnRleHQp
O1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0gez9vYmplY3R9IG5leHROZXN0ZWRD
aGlsZHJlbkVsZW1lbnRzIE5lc3RlZCBjaGlsZCBlbGVtZW50IG1hcHMuXG4gICAgICogQHBhcmFt
IHtSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9ufSB0cmFuc2FjdGlvblxuICAgICAqIEBmaW5hbFxu
ICAgICAqIEBwcm90ZWN0ZWRcbiAgICAgKi9cbiAgICBfdXBkYXRlQ2hpbGRyZW46IGZ1bmN0aW9u
IChuZXh0TmVzdGVkQ2hpbGRyZW5FbGVtZW50cywgdHJhbnNhY3Rpb24sIGNvbnRleHQpIHtcbiAg
ICAgIHZhciBwcmV2Q2hpbGRyZW4gPSB0aGlzLl9yZW5kZXJlZENoaWxkcmVuO1xuICAgICAgdmFy
IHJlbW92ZWROb2RlcyA9IHt9O1xuICAgICAgdmFyIG1vdW50SW1hZ2VzID0gW107XG4gICAgICB2
YXIgbmV4dENoaWxkcmVuID0gdGhpcy5fcmVjb25jaWxlclVwZGF0ZUNoaWxkcmVuKHByZXZDaGls
ZHJlbiwgbmV4dE5lc3RlZENoaWxkcmVuRWxlbWVudHMsIG1vdW50SW1hZ2VzLCByZW1vdmVkTm9k
ZXMsIHRyYW5zYWN0aW9uLCBjb250ZXh0KTtcbiAgICAgIGlmICghbmV4dENoaWxkcmVuICYmICFw
cmV2Q2hpbGRyZW4pIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdmFyIHVwZGF0
ZXMgPSBudWxsO1xuICAgICAgdmFyIG5hbWU7XG4gICAgICAvLyBgbmV4dEluZGV4YCB3aWxsIGlu
Y3JlbWVudCBmb3IgZWFjaCBjaGlsZCBpbiBgbmV4dENoaWxkcmVuYCwgYnV0XG4gICAgICAvLyBg
bGFzdEluZGV4YCB3aWxsIGJlIHRoZSBsYXN0IGluZGV4IHZpc2l0ZWQgaW4gYHByZXZDaGlsZHJl
bmAuXG4gICAgICB2YXIgbmV4dEluZGV4ID0gMDtcbiAgICAgIHZhciBsYXN0SW5kZXggPSAwO1xu
ICAgICAgLy8gYG5leHRNb3VudEluZGV4YCB3aWxsIGluY3JlbWVudCBmb3IgZWFjaCBuZXdseSBt
b3VudGVkIGNoaWxkLlxuICAgICAgdmFyIG5leHRNb3VudEluZGV4ID0gMDtcbiAgICAgIHZhciBs
YXN0UGxhY2VkTm9kZSA9IG51bGw7XG4gICAgICBmb3IgKG5hbWUgaW4gbmV4dENoaWxkcmVuKSB7
XG4gICAgICAgIGlmICghbmV4dENoaWxkcmVuLmhhc093blByb3BlcnR5KG5hbWUpKSB7XG4gICAg
ICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHByZXZDaGlsZCA9IHByZXZD
aGlsZHJlbiAmJiBwcmV2Q2hpbGRyZW5bbmFtZV07XG4gICAgICAgIHZhciBuZXh0Q2hpbGQgPSBu
ZXh0Q2hpbGRyZW5bbmFtZV07XG4gICAgICAgIGlmIChwcmV2Q2hpbGQgPT09IG5leHRDaGlsZCkg
e1xuICAgICAgICAgIHVwZGF0ZXMgPSBlbnF1ZXVlKHVwZGF0ZXMsIHRoaXMubW92ZUNoaWxkKHBy
ZXZDaGlsZCwgbGFzdFBsYWNlZE5vZGUsIG5leHRJbmRleCwgbGFzdEluZGV4KSk7XG4gICAgICAg
ICAgbGFzdEluZGV4ID0gTWF0aC5tYXgocHJldkNoaWxkLl9tb3VudEluZGV4LCBsYXN0SW5kZXgp
O1xuICAgICAgICAgIHByZXZDaGlsZC5fbW91bnRJbmRleCA9IG5leHRJbmRleDtcbiAgICAgICAg
fSBlbHNlIHtcbiAgICAgICAgICBpZiAocHJldkNoaWxkKSB7XG4gICAgICAgICAgICAvLyBVcGRh
dGUgYGxhc3RJbmRleGAgYmVmb3JlIGBfbW91bnRJbmRleGAgZ2V0cyB1bnNldCBieSB1bm1vdW50
aW5nLlxuICAgICAgICAgICAgbGFzdEluZGV4ID0gTWF0aC5tYXgocHJldkNoaWxkLl9tb3VudElu
ZGV4LCBsYXN0SW5kZXgpO1xuICAgICAgICAgICAgLy8gVGhlIGByZW1vdmVkTm9kZXNgIGxvb3Ag
YmVsb3cgd2lsbCBhY3R1YWxseSByZW1vdmUgdGhlIGNoaWxkLlxuICAgICAgICAgIH1cbiAgICAg
ICAgICAvLyBUaGUgY2hpbGQgbXVzdCBiZSBpbnN0YW50aWF0ZWQgYmVmb3JlIGl0J3MgbW91bnRl
ZC5cbiAgICAgICAgICB1cGRhdGVzID0gZW5xdWV1ZSh1cGRhdGVzLCB0aGlzLl9tb3VudENoaWxk
QXRJbmRleChuZXh0Q2hpbGQsIG1vdW50SW1hZ2VzW25leHRNb3VudEluZGV4XSwgbGFzdFBsYWNl
ZE5vZGUsIG5leHRJbmRleCwgdHJhbnNhY3Rpb24sIGNvbnRleHQpKTtcbiAgICAgICAgICBuZXh0
TW91bnRJbmRleCsrO1xuICAgICAgICB9XG4gICAgICAgIG5leHRJbmRleCsrO1xuICAgICAgICBs
YXN0UGxhY2VkTm9kZSA9IFJlYWN0UmVjb25jaWxlci5nZXRIb3N0Tm9kZShuZXh0Q2hpbGQpO1xu
ICAgICAgfVxuICAgICAgLy8gUmVtb3ZlIGNoaWxkcmVuIHRoYXQgYXJlIG5vIGxvbmdlciBwcmVz
ZW50LlxuICAgICAgZm9yIChuYW1lIGluIHJlbW92ZWROb2Rlcykge1xuICAgICAgICBpZiAocmVt
b3ZlZE5vZGVzLmhhc093blByb3BlcnR5KG5hbWUpKSB7XG4gICAgICAgICAgdXBkYXRlcyA9IGVu
cXVldWUodXBkYXRlcywgdGhpcy5fdW5tb3VudENoaWxkKHByZXZDaGlsZHJlbltuYW1lXSwgcmVt
b3ZlZE5vZGVzW25hbWVdKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmICh1cGRhdGVz
KSB7XG4gICAgICAgIHByb2Nlc3NRdWV1ZSh0aGlzLCB1cGRhdGVzKTtcbiAgICAgIH1cbiAgICAg
IHRoaXMuX3JlbmRlcmVkQ2hpbGRyZW4gPSBuZXh0Q2hpbGRyZW47XG5cbiAgICAgIGlmIChwcm9j
ZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgIHNldENoaWxkcmVu
Rm9ySW5zdHJ1bWVudGF0aW9uLmNhbGwodGhpcywgbmV4dENoaWxkcmVuKTtcbiAgICAgIH1cbiAg
ICB9LFxuXG4gICAgLyoqXG4gICAgICogVW5tb3VudHMgYWxsIHJlbmRlcmVkIGNoaWxkcmVuLiBU
aGlzIHNob3VsZCBiZSB1c2VkIHRvIGNsZWFuIHVwIGNoaWxkcmVuXG4gICAgICogd2hlbiB0aGlz
IGNvbXBvbmVudCBpcyB1bm1vdW50ZWQuIEl0IGRvZXMgbm90IGFjdHVhbGx5IHBlcmZvcm0gYW55
XG4gICAgICogYmFja2VuZCBvcGVyYXRpb25zLlxuICAgICAqXG4gICAgICogQGludGVybmFsXG4g
ICAgICovXG4gICAgdW5tb3VudENoaWxkcmVuOiBmdW5jdGlvbiAoc2FmZWx5KSB7XG4gICAgICB2
YXIgcmVuZGVyZWRDaGlsZHJlbiA9IHRoaXMuX3JlbmRlcmVkQ2hpbGRyZW47XG4gICAgICBSZWFj
dENoaWxkUmVjb25jaWxlci51bm1vdW50Q2hpbGRyZW4ocmVuZGVyZWRDaGlsZHJlbiwgc2FmZWx5
KTtcbiAgICAgIHRoaXMuX3JlbmRlcmVkQ2hpbGRyZW4gPSBudWxsO1xuICAgIH0sXG5cbiAgICAv
KipcbiAgICAgKiBNb3ZlcyBhIGNoaWxkIGNvbXBvbmVudCB0byB0aGUgc3VwcGxpZWQgaW5kZXgu
XG4gICAgICpcbiAgICAgKiBAcGFyYW0ge1JlYWN0Q29tcG9uZW50fSBjaGlsZCBDb21wb25lbnQg
dG8gbW92ZS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gdG9JbmRleCBEZXN0aW5hdGlvbiBpbmRl
eCBvZiB0aGUgZWxlbWVudC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gbGFzdEluZGV4IExhc3Qg
aW5kZXggdmlzaXRlZCBvZiB0aGUgc2libGluZ3Mgb2YgYGNoaWxkYC5cbiAgICAgKiBAcHJvdGVj
dGVkXG4gICAgICovXG4gICAgbW92ZUNoaWxkOiBmdW5jdGlvbiAoY2hpbGQsIGFmdGVyTm9kZSwg
dG9JbmRleCwgbGFzdEluZGV4KSB7XG4gICAgICAvLyBJZiB0aGUgaW5kZXggb2YgYGNoaWxkYCBp
cyBsZXNzIHRoYW4gYGxhc3RJbmRleGAsIHRoZW4gaXQgbmVlZHMgdG9cbiAgICAgIC8vIGJlIG1v
dmVkLiBPdGhlcndpc2UsIHdlIGRvIG5vdCBuZWVkIHRvIG1vdmUgaXQgYmVjYXVzZSBhIGNoaWxk
IHdpbGwgYmVcbiAgICAgIC8vIGluc2VydGVkIG9yIG1vdmVkIGJlZm9yZSBgY2hpbGRgLlxuICAg
ICAgaWYgKGNoaWxkLl9tb3VudEluZGV4IDwgbGFzdEluZGV4KSB7XG4gICAgICAgIHJldHVybiBt
YWtlTW92ZShjaGlsZCwgYWZ0ZXJOb2RlLCB0b0luZGV4KTtcbiAgICAgIH1cbiAgICB9LFxuXG4g
ICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGNoaWxkIGNvbXBvbmVudC5cbiAgICAgKlxuICAgICAq
IEBwYXJhbSB7UmVhY3RDb21wb25lbnR9IGNoaWxkIENvbXBvbmVudCB0byBjcmVhdGUuXG4gICAg
ICogQHBhcmFtIHtzdHJpbmd9IG1vdW50SW1hZ2UgTWFya3VwIHRvIGluc2VydC5cbiAgICAgKiBA
cHJvdGVjdGVkXG4gICAgICovXG4gICAgY3JlYXRlQ2hpbGQ6IGZ1bmN0aW9uIChjaGlsZCwgYWZ0
ZXJOb2RlLCBtb3VudEltYWdlKSB7XG4gICAgICByZXR1cm4gbWFrZUluc2VydE1hcmt1cChtb3Vu
dEltYWdlLCBhZnRlck5vZGUsIGNoaWxkLl9tb3VudEluZGV4KTtcbiAgICB9LFxuXG4gICAgLyoq
XG4gICAgICogUmVtb3ZlcyBhIGNoaWxkIGNvbXBvbmVudC5cbiAgICAgKlxuICAgICAqIEBwYXJh
bSB7UmVhY3RDb21wb25lbnR9IGNoaWxkIENoaWxkIHRvIHJlbW92ZS5cbiAgICAgKiBAcHJvdGVj
dGVkXG4gICAgICovXG4gICAgcmVtb3ZlQ2hpbGQ6IGZ1bmN0aW9uIChjaGlsZCwgbm9kZSkge1xu
ICAgICAgcmV0dXJuIG1ha2VSZW1vdmUoY2hpbGQsIG5vZGUpO1xuICAgIH0sXG5cbiAgICAvKipc
biAgICAgKiBNb3VudHMgYSBjaGlsZCB3aXRoIHRoZSBzdXBwbGllZCBuYW1lLlxuICAgICAqXG4g
ICAgICogTk9URTogVGhpcyBpcyBwYXJ0IG9mIGB1cGRhdGVDaGlsZHJlbmAgYW5kIGlzIGhlcmUg
Zm9yIHJlYWRhYmlsaXR5LlxuICAgICAqXG4gICAgICogQHBhcmFtIHtSZWFjdENvbXBvbmVudH0g
Y2hpbGQgQ29tcG9uZW50IHRvIG1vdW50LlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIE5h
bWUgb2YgdGhlIGNoaWxkLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBpbmRleCBJbmRleCBhdCB3
aGljaCB0byBpbnNlcnQgdGhlIGNoaWxkLlxuICAgICAqIEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVU
cmFuc2FjdGlvbn0gdHJhbnNhY3Rpb25cbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqL1xuICAgIF9t
b3VudENoaWxkQXRJbmRleDogZnVuY3Rpb24gKGNoaWxkLCBtb3VudEltYWdlLCBhZnRlck5vZGUs
IGluZGV4LCB0cmFuc2FjdGlvbiwgY29udGV4dCkge1xuICAgICAgY2hpbGQuX21vdW50SW5kZXgg
PSBpbmRleDtcbiAgICAgIHJldHVybiB0aGlzLmNyZWF0ZUNoaWxkKGNoaWxkLCBhZnRlck5vZGUs
IG1vdW50SW1hZ2UpO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBVbm1vdW50cyBhIHJlbmRl
cmVkIGNoaWxkLlxuICAgICAqXG4gICAgICogTk9URTogVGhpcyBpcyBwYXJ0IG9mIGB1cGRhdGVD
aGlsZHJlbmAgYW5kIGlzIGhlcmUgZm9yIHJlYWRhYmlsaXR5LlxuICAgICAqXG4gICAgICogQHBh
cmFtIHtSZWFjdENvbXBvbmVudH0gY2hpbGQgQ29tcG9uZW50IHRvIHVubW91bnQuXG4gICAgICog
QHByaXZhdGVcbiAgICAgKi9cbiAgICBfdW5tb3VudENoaWxkOiBmdW5jdGlvbiAoY2hpbGQsIG5v
ZGUpIHtcbiAgICAgIHZhciB1cGRhdGUgPSB0aGlzLnJlbW92ZUNoaWxkKGNoaWxkLCBub2RlKTtc
biAgICAgIGNoaWxkLl9tb3VudEluZGV4ID0gbnVsbDtcbiAgICAgIHJldHVybiB1cGRhdGU7XG4g
ICAgfVxuICB9XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0TXVsdGlDaGlsZDtcblxuXG4v
KioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFjdC1kb20v
bGliL1JlYWN0TXVsdGlDaGlsZC5qc1xuICoqIG1vZHVsZSBpZCA9IDE1NlxuICoqIG1vZHVsZSBj
aHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9v
aywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2Rl
IGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAq
IExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4g
QW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4g
dGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogXG4gKi9cblxu
J3VzZSBzdHJpY3QnO1xuXG52YXIgX3Byb2RJbnZhcmlhbnQgPSByZXF1aXJlKCcuL3JlYWN0UHJv
ZEludmFyaWFudCcpO1xuXG52YXIgaW52YXJpYW50ID0gcmVxdWlyZSgnZmJqcy9saWIvaW52YXJp
YW50Jyk7XG5cbi8qKlxuICogQHBhcmFtIHs/b2JqZWN0fSBvYmplY3RcbiAqIEByZXR1cm4ge2Jv
b2xlYW59IFRydWUgaWYgYG9iamVjdGAgaXMgYSB2YWxpZCBvd25lci5cbiAqIEBmaW5hbFxuICov
XG5mdW5jdGlvbiBpc1ZhbGlkT3duZXIob2JqZWN0KSB7XG4gIHJldHVybiAhIShvYmplY3QgJiYg
dHlwZW9mIG9iamVjdC5hdHRhY2hSZWYgPT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIG9iamVjdC5k
ZXRhY2hSZWYgPT09ICdmdW5jdGlvbicpO1xufVxuXG4vKipcbiAqIFJlYWN0T3duZXJzIGFyZSBj
YXBhYmxlIG9mIHN0b3JpbmcgcmVmZXJlbmNlcyB0byBvd25lZCBjb21wb25lbnRzLlxuICpcbiAq
IEFsbCBjb21wb25lbnRzIGFyZSBjYXBhYmxlIG9mIC8vYmVpbmcvLyByZWZlcmVuY2VkIGJ5IG93
bmVyIGNvbXBvbmVudHMsIGJ1dFxuICogb25seSBSZWFjdE93bmVyIGNvbXBvbmVudHMgYXJlIGNh
cGFibGUgb2YgLy9yZWZlcmVuY2luZy8vIG93bmVkIGNvbXBvbmVudHMuXG4gKiBUaGUgbmFtZWQg
cmVmZXJlbmNlIGlzIGtub3duIGFzIGEgXCJyZWZcIi5cbiAqXG4gKiBSZWZzIGFyZSBhdmFpbGFi
bGUgd2hlbiBtb3VudGVkIGFuZCB1cGRhdGVkIGR1cmluZyByZWNvbmNpbGlhdGlvbi5cbiAqXG4g
KiAgIHZhciBNeUNvbXBvbmVudCA9IFJlYWN0LmNyZWF0ZUNsYXNzKHtcbiAqICAgICByZW5kZXI6
IGZ1bmN0aW9uKCkge1xuICogICAgICAgcmV0dXJuIChcbiAqICAgICAgICAgPGRpdiBvbkNsaWNr
PXt0aGlzLmhhbmRsZUNsaWNrfT5cbiAqICAgICAgICAgICA8Q3VzdG9tQ29tcG9uZW50IHJlZj1c
ImN1c3RvbVwiIC8+XG4gKiAgICAgICAgIDwvZGl2PlxuICogICAgICAgKTtcbiAqICAgICB9LFxu
ICogICAgIGhhbmRsZUNsaWNrOiBmdW5jdGlvbigpIHtcbiAqICAgICAgIHRoaXMucmVmcy5jdXN0
b20uaGFuZGxlQ2xpY2soKTtcbiAqICAgICB9LFxuICogICAgIGNvbXBvbmVudERpZE1vdW50OiBm
dW5jdGlvbigpIHtcbiAqICAgICAgIHRoaXMucmVmcy5jdXN0b20uaW5pdGlhbGl6ZSgpO1xuICog
ICAgIH1cbiAqICAgfSk7XG4gKlxuICogUmVmcyBzaG91bGQgcmFyZWx5IGJlIHVzZWQuIFdoZW4g
cmVmcyBhcmUgdXNlZCwgdGhleSBzaG91bGQgb25seSBiZSBkb25lIHRvXG4gKiBjb250cm9sIGRh
dGEgdGhhdCBpcyBub3QgaGFuZGxlZCBieSBSZWFjdCdzIGRhdGEgZmxvdy5cbiAqXG4gKiBAY2xh
c3MgUmVhY3RPd25lclxuICovXG52YXIgUmVhY3RPd25lciA9IHtcbiAgLyoqXG4gICAqIEFkZHMg
YSBjb21wb25lbnQgYnkgcmVmIHRvIGFuIG93bmVyIGNvbXBvbmVudC5cbiAgICpcbiAgICogQHBh
cmFtIHtSZWFjdENvbXBvbmVudH0gY29tcG9uZW50IENvbXBvbmVudCB0byByZWZlcmVuY2UuXG4g
ICAqIEBwYXJhbSB7c3RyaW5nfSByZWYgTmFtZSBieSB3aGljaCB0byByZWZlciB0byB0aGUgY29t
cG9uZW50LlxuICAgKiBAcGFyYW0ge1JlYWN0T3duZXJ9IG93bmVyIENvbXBvbmVudCBvbiB3aGlj
aCB0byByZWNvcmQgdGhlIHJlZi5cbiAgICogQGZpbmFsXG4gICAqIEBpbnRlcm5hbFxuICAgKi9c
biAgYWRkQ29tcG9uZW50QXNSZWZUbzogZnVuY3Rpb24gKGNvbXBvbmVudCwgcmVmLCBvd25lcikg
e1xuICAgICFpc1ZhbGlkT3duZXIob3duZXIpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdw
cm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ2FkZENvbXBvbmVudEFzUmVmVG8oLi4uKTog
T25seSBhIFJlYWN0T3duZXIgY2FuIGhhdmUgcmVmcy4gWW91IG1pZ2h0IGJlIGFkZGluZyBhIHJl
ZiB0byBhIGNvbXBvbmVudCB0aGF0IHdhcyBub3QgY3JlYXRlZCBpbnNpZGUgYSBjb21wb25lbnRc
XCdzIGByZW5kZXJgIG1ldGhvZCwgb3IgeW91IGhhdmUgbXVsdGlwbGUgY29waWVzIG9mIFJlYWN0
IGxvYWRlZCAoZGV0YWlsczogaHR0cHM6Ly9mYi5tZS9yZWFjdC1yZWZzLW11c3QtaGF2ZS1vd25l
cikuJykgOiBfcHJvZEludmFyaWFudCgnMTE5JykgOiB2b2lkIDA7XG4gICAgb3duZXIuYXR0YWNo
UmVmKHJlZiwgY29tcG9uZW50KTtcbiAgfSxcblxuICAvKipcbiAgICogUmVtb3ZlcyBhIGNvbXBv
bmVudCBieSByZWYgZnJvbSBhbiBvd25lciBjb21wb25lbnQuXG4gICAqXG4gICAqIEBwYXJhbSB7
UmVhY3RDb21wb25lbnR9IGNvbXBvbmVudCBDb21wb25lbnQgdG8gZGVyZWZlcmVuY2UuXG4gICAq
IEBwYXJhbSB7c3RyaW5nfSByZWYgTmFtZSBvZiB0aGUgcmVmIHRvIHJlbW92ZS5cbiAgICogQHBh
cmFtIHtSZWFjdE93bmVyfSBvd25lciBDb21wb25lbnQgb24gd2hpY2ggdGhlIHJlZiBpcyByZWNv
cmRlZC5cbiAgICogQGZpbmFsXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcmVtb3ZlQ29tcG9u
ZW50QXNSZWZGcm9tOiBmdW5jdGlvbiAoY29tcG9uZW50LCByZWYsIG93bmVyKSB7XG4gICAgIWlz
VmFsaWRPd25lcihvd25lcikgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24n
ID8gaW52YXJpYW50KGZhbHNlLCAncmVtb3ZlQ29tcG9uZW50QXNSZWZGcm9tKC4uLik6IE9ubHkg
YSBSZWFjdE93bmVyIGNhbiBoYXZlIHJlZnMuIFlvdSBtaWdodCBiZSByZW1vdmluZyBhIHJlZiB0
byBhIGNvbXBvbmVudCB0aGF0IHdhcyBub3QgY3JlYXRlZCBpbnNpZGUgYSBjb21wb25lbnRcXCdz
IGByZW5kZXJgIG1ldGhvZCwgb3IgeW91IGhhdmUgbXVsdGlwbGUgY29waWVzIG9mIFJlYWN0IGxv
YWRlZCAoZGV0YWlsczogaHR0cHM6Ly9mYi5tZS9yZWFjdC1yZWZzLW11c3QtaGF2ZS1vd25lciku
JykgOiBfcHJvZEludmFyaWFudCgnMTIwJykgOiB2b2lkIDA7XG4gICAgdmFyIG93bmVyUHVibGlj
SW5zdGFuY2UgPSBvd25lci5nZXRQdWJsaWNJbnN0YW5jZSgpO1xuICAgIC8vIENoZWNrIHRoYXQg
YGNvbXBvbmVudGAncyBvd25lciBpcyBzdGlsbCBhbGl2ZSBhbmQgdGhhdCBgY29tcG9uZW50YCBp
cyBzdGlsbCB0aGUgY3VycmVudCByZWZcbiAgICAvLyBiZWNhdXNlIHdlIGRvIG5vdCB3YW50IHRv
IGRldGFjaCB0aGUgcmVmIGlmIGFub3RoZXIgY29tcG9uZW50IHN0b2xlIGl0LlxuICAgIGlmIChv
d25lclB1YmxpY0luc3RhbmNlICYmIG93bmVyUHVibGljSW5zdGFuY2UucmVmc1tyZWZdID09PSBj
b21wb25lbnQuZ2V0UHVibGljSW5zdGFuY2UoKSkge1xuICAgICAgb3duZXIuZGV0YWNoUmVmKHJl
Zik7XG4gICAgfVxuICB9XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0T3duZXI7XG5cblxu
LyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3QtZG9t
L2xpYi9SZWFjdE93bmVyLmpzXG4gKiogbW9kdWxlIGlkID0gMTU3XG4gKiogbW9kdWxlIGNodW5r
cyA9IDBcbiAqKi8iLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJ
bmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMg
bGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElD
RU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBh
ZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUg
UEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBcbiAqL1xuXG4ndXNl
IHN0cmljdCc7XG5cbnZhciBSZWFjdFByb3BUeXBlc1NlY3JldCA9ICdTRUNSRVRfRE9fTk9UX1BB
U1NfVEhJU19PUl9ZT1VfV0lMTF9CRV9GSVJFRCc7XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RQ
cm9wVHlwZXNTZWNyZXQ7XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09U
RVJcbiAqKiAuL34vcmVhY3QtZG9tL2xpYi9SZWFjdFByb3BUeXBlc1NlY3JldC5qc1xuICoqIG1v
ZHVsZSBpZCA9IDE1OFxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5
cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZl
ZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5
bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJl
Y3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0
ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBk
aXJlY3RvcnkuXG4gKlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIF9hc3NpZ24gPSByZXF1
aXJlKCdvYmplY3QtYXNzaWduJyk7XG5cbnZhciBDYWxsYmFja1F1ZXVlID0gcmVxdWlyZSgnLi9D
YWxsYmFja1F1ZXVlJyk7XG52YXIgUG9vbGVkQ2xhc3MgPSByZXF1aXJlKCcuL1Bvb2xlZENsYXNz
Jyk7XG52YXIgUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyID0gcmVxdWlyZSgnLi9SZWFjdEJyb3dz
ZXJFdmVudEVtaXR0ZXInKTtcbnZhciBSZWFjdElucHV0U2VsZWN0aW9uID0gcmVxdWlyZSgnLi9S
ZWFjdElucHV0U2VsZWN0aW9uJyk7XG52YXIgUmVhY3RJbnN0cnVtZW50YXRpb24gPSByZXF1aXJl
KCcuL1JlYWN0SW5zdHJ1bWVudGF0aW9uJyk7XG52YXIgVHJhbnNhY3Rpb24gPSByZXF1aXJlKCcu
L1RyYW5zYWN0aW9uJyk7XG52YXIgUmVhY3RVcGRhdGVRdWV1ZSA9IHJlcXVpcmUoJy4vUmVhY3RV
cGRhdGVRdWV1ZScpO1xuXG4vKipcbiAqIEVuc3VyZXMgdGhhdCwgd2hlbiBwb3NzaWJsZSwgdGhl
IHNlbGVjdGlvbiByYW5nZSAoY3VycmVudGx5IHNlbGVjdGVkIHRleHRcbiAqIGlucHV0KSBpcyBu
b3QgZGlzdHVyYmVkIGJ5IHBlcmZvcm1pbmcgdGhlIHRyYW5zYWN0aW9uLlxuICovXG52YXIgU0VM
RUNUSU9OX1JFU1RPUkFUSU9OID0ge1xuICAvKipcbiAgICogQHJldHVybiB7U2VsZWN0aW9ufSBT
ZWxlY3Rpb24gaW5mb3JtYXRpb24uXG4gICAqL1xuICBpbml0aWFsaXplOiBSZWFjdElucHV0U2Vs
ZWN0aW9uLmdldFNlbGVjdGlvbkluZm9ybWF0aW9uLFxuICAvKipcbiAgICogQHBhcmFtIHtTZWxl
Y3Rpb259IHNlbCBTZWxlY3Rpb24gaW5mb3JtYXRpb24gcmV0dXJuZWQgZnJvbSBgaW5pdGlhbGl6
ZWAuXG4gICAqL1xuICBjbG9zZTogUmVhY3RJbnB1dFNlbGVjdGlvbi5yZXN0b3JlU2VsZWN0aW9u
XG59O1xuXG4vKipcbiAqIFN1cHByZXNzZXMgZXZlbnRzIChibHVyL2ZvY3VzKSB0aGF0IGNvdWxk
IGJlIGluYWR2ZXJ0ZW50bHkgZGlzcGF0Y2hlZCBkdWUgdG9cbiAqIGhpZ2ggbGV2ZWwgRE9NIG1h
bmlwdWxhdGlvbnMgKGxpa2UgdGVtcG9yYXJpbHkgcmVtb3ZpbmcgYSB0ZXh0IGlucHV0IGZyb20g
dGhlXG4gKiBET00pLlxuICovXG52YXIgRVZFTlRfU1VQUFJFU1NJT04gPSB7XG4gIC8qKlxuICAg
KiBAcmV0dXJuIHtib29sZWFufSBUaGUgZW5hYmxlZCBzdGF0dXMgb2YgYFJlYWN0QnJvd3NlckV2
ZW50RW1pdHRlcmAgYmVmb3JlXG4gICAqIHRoZSByZWNvbmNpbGlhdGlvbi5cbiAgICovXG4gIGlu
aXRpYWxpemU6IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgY3VycmVudGx5RW5hYmxlZCA9IFJlYWN0
QnJvd3NlckV2ZW50RW1pdHRlci5pc0VuYWJsZWQoKTtcbiAgICBSZWFjdEJyb3dzZXJFdmVudEVt
aXR0ZXIuc2V0RW5hYmxlZChmYWxzZSk7XG4gICAgcmV0dXJuIGN1cnJlbnRseUVuYWJsZWQ7XG4g
IH0sXG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gcHJldmlvdXNseUVuYWJsZWQgRW5h
YmxlZCBzdGF0dXMgb2ZcbiAgICogICBgUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyYCBiZWZvcmUg
dGhlIHJlY29uY2lsaWF0aW9uIG9jY3VycmVkLiBgY2xvc2VgXG4gICAqICAgcmVzdG9yZXMgdGhl
IHByZXZpb3VzIHZhbHVlLlxuICAgKi9cbiAgY2xvc2U6IGZ1bmN0aW9uIChwcmV2aW91c2x5RW5h
YmxlZCkge1xuICAgIFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlci5zZXRFbmFibGVkKHByZXZpb3Vz
bHlFbmFibGVkKTtcbiAgfVxufTtcblxuLyoqXG4gKiBQcm92aWRlcyBhIHF1ZXVlIGZvciBjb2xs
ZWN0aW5nIGBjb21wb25lbnREaWRNb3VudGAgYW5kXG4gKiBgY29tcG9uZW50RGlkVXBkYXRlYCBj
YWxsYmFja3MgZHVyaW5nIHRoZSB0cmFuc2FjdGlvbi5cbiAqL1xudmFyIE9OX0RPTV9SRUFEWV9R
VUVVRUlORyA9IHtcbiAgLyoqXG4gICAqIEluaXRpYWxpemVzIHRoZSBpbnRlcm5hbCBgb25ET01S
ZWFkeWAgcXVldWUuXG4gICAqL1xuICBpbml0aWFsaXplOiBmdW5jdGlvbiAoKSB7XG4gICAgdGhp
cy5yZWFjdE1vdW50UmVhZHkucmVzZXQoKTtcbiAgfSxcblxuICAvKipcbiAgICogQWZ0ZXIgRE9N
IGlzIGZsdXNoZWQsIGludm9rZSBhbGwgcmVnaXN0ZXJlZCBgb25ET01SZWFkeWAgY2FsbGJhY2tz
LlxuICAgKi9cbiAgY2xvc2U6IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLnJlYWN0TW91bnRSZWFk
eS5ub3RpZnlBbGwoKTtcbiAgfVxufTtcblxuLyoqXG4gKiBFeGVjdXRlZCB3aXRoaW4gdGhlIHNj
b3BlIG9mIHRoZSBgVHJhbnNhY3Rpb25gIGluc3RhbmNlLiBDb25zaWRlciB0aGVzZSBhc1xuICog
YmVpbmcgbWVtYmVyIG1ldGhvZHMsIGJ1dCB3aXRoIGFuIGltcGxpZWQgb3JkZXJpbmcgd2hpbGUg
YmVpbmcgaXNvbGF0ZWQgZnJvbVxuICogZWFjaCBvdGhlci5cbiAqL1xudmFyIFRSQU5TQUNUSU9O
X1dSQVBQRVJTID0gW1NFTEVDVElPTl9SRVNUT1JBVElPTiwgRVZFTlRfU1VQUFJFU1NJT04sIE9O
X0RPTV9SRUFEWV9RVUVVRUlOR107XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3By
b2R1Y3Rpb24nKSB7XG4gIFRSQU5TQUNUSU9OX1dSQVBQRVJTLnB1c2goe1xuICAgIGluaXRpYWxp
emU6IFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vbkJlZ2luRmx1c2gsXG4gICAgY2xv
c2U6IFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vbkVuZEZsdXNoXG4gIH0pO1xufVxu
XG4vKipcbiAqIEN1cnJlbnRseTpcbiAqIC0gVGhlIG9yZGVyIHRoYXQgdGhlc2UgYXJlIGxpc3Rl
ZCBpbiB0aGUgdHJhbnNhY3Rpb24gaXMgY3JpdGljYWw6XG4gKiAtIFN1cHByZXNzZXMgZXZlbnRz
LlxuICogLSBSZXN0b3JlcyBzZWxlY3Rpb24gcmFuZ2UuXG4gKlxuICogRnV0dXJlOlxuICogLSBS
ZXN0b3JlIGRvY3VtZW50L292ZXJmbG93IHNjcm9sbCBwb3NpdGlvbnMgdGhhdCB3ZXJlIHVuaW50
ZW50aW9uYWxseVxuICogICBtb2RpZmllZCB2aWEgRE9NIGluc2VydGlvbnMgYWJvdmUgdGhlIHRv
cCB2aWV3cG9ydCBib3VuZGFyeS5cbiAqIC0gSW1wbGVtZW50L2ludGVncmF0ZSB3aXRoIGN1c3Rv
bWl6ZWQgY29uc3RyYWludCBiYXNlZCBsYXlvdXQgc3lzdGVtIGFuZCBrZWVwXG4gKiAgIHRyYWNr
IG9mIHdoaWNoIGRpbWVuc2lvbnMgbXVzdCBiZSByZW1lYXN1cmVkLlxuICpcbiAqIEBjbGFzcyBS
ZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9uXG4gKi9cbmZ1bmN0aW9uIFJlYWN0UmVjb25jaWxlVHJh
bnNhY3Rpb24odXNlQ3JlYXRlRWxlbWVudCkge1xuICB0aGlzLnJlaW5pdGlhbGl6ZVRyYW5zYWN0
aW9uKCk7XG4gIC8vIE9ubHkgc2VydmVyLXNpZGUgcmVuZGVyaW5nIHJlYWxseSBuZWVkcyB0aGlz
IG9wdGlvbiAoc2VlXG4gIC8vIGBSZWFjdFNlcnZlclJlbmRlcmluZ2ApLCBidXQgc2VydmVyLXNp
ZGUgdXNlc1xuICAvLyBgUmVhY3RTZXJ2ZXJSZW5kZXJpbmdUcmFuc2FjdGlvbmAgaW5zdGVhZC4g
VGhpcyBvcHRpb24gaXMgaGVyZSBzbyB0aGF0IGl0J3NcbiAgLy8gYWNjZXNzaWJsZSBhbmQgZGVm
YXVsdHMgdG8gZmFsc2Ugd2hlbiBgUmVhY3RET01Db21wb25lbnRgIGFuZFxuICAvLyBgUmVhY3RE
T01UZXh0Q29tcG9uZW50YCBjaGVja3MgaXQgaW4gYG1vdW50Q29tcG9uZW50YC5gXG4gIHRoaXMu
cmVuZGVyVG9TdGF0aWNNYXJrdXAgPSBmYWxzZTtcbiAgdGhpcy5yZWFjdE1vdW50UmVhZHkgPSBD
YWxsYmFja1F1ZXVlLmdldFBvb2xlZChudWxsKTtcbiAgdGhpcy51c2VDcmVhdGVFbGVtZW50ID0g
dXNlQ3JlYXRlRWxlbWVudDtcbn1cblxudmFyIE1peGluID0ge1xuICAvKipcbiAgICogQHNlZSBU
cmFuc2FjdGlvblxuICAgKiBAYWJzdHJhY3RcbiAgICogQGZpbmFsXG4gICAqIEByZXR1cm4ge2Fy
cmF5PG9iamVjdD59IExpc3Qgb2Ygb3BlcmF0aW9uIHdyYXAgcHJvY2VkdXJlcy5cbiAgICogICBU
T0RPOiBjb252ZXJ0IHRvIGFycmF5PFRyYW5zYWN0aW9uV3JhcHBlcj5cbiAgICovXG4gIGdldFRy
YW5zYWN0aW9uV3JhcHBlcnM6IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gVFJBTlNBQ1RJT05f
V1JBUFBFUlM7XG4gIH0sXG5cbiAgLyoqXG4gICAqIEByZXR1cm4ge29iamVjdH0gVGhlIHF1ZXVl
IHRvIGNvbGxlY3QgYG9uRE9NUmVhZHlgIGNhbGxiYWNrcyB3aXRoLlxuICAgKi9cbiAgZ2V0UmVh
Y3RNb3VudFJlYWR5OiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMucmVhY3RNb3VudFJl
YWR5O1xuICB9LFxuXG4gIC8qKlxuICAgKiBAcmV0dXJuIHtvYmplY3R9IFRoZSBxdWV1ZSB0byBj
b2xsZWN0IFJlYWN0IGFzeW5jIGV2ZW50cy5cbiAgICovXG4gIGdldFVwZGF0ZVF1ZXVlOiBmdW5j
dGlvbiAoKSB7XG4gICAgcmV0dXJuIFJlYWN0VXBkYXRlUXVldWU7XG4gIH0sXG5cbiAgLyoqXG4g
ICAqIFNhdmUgY3VycmVudCB0cmFuc2FjdGlvbiBzdGF0ZSAtLSBpZiB0aGUgcmV0dXJuIHZhbHVl
IGZyb20gdGhpcyBtZXRob2QgaXNcbiAgICogcGFzc2VkIHRvIGByb2xsYmFja2AsIHRoZSB0cmFu
c2FjdGlvbiB3aWxsIGJlIHJlc2V0IHRvIHRoYXQgc3RhdGUuXG4gICAqL1xuICBjaGVja3BvaW50
OiBmdW5jdGlvbiAoKSB7XG4gICAgLy8gcmVhY3RNb3VudFJlYWR5IGlzIHRoZSBvdXIgb25seSBz
dGF0ZWZ1bCB3cmFwcGVyXG4gICAgcmV0dXJuIHRoaXMucmVhY3RNb3VudFJlYWR5LmNoZWNrcG9p
bnQoKTtcbiAgfSxcblxuICByb2xsYmFjazogZnVuY3Rpb24gKGNoZWNrcG9pbnQpIHtcbiAgICB0
aGlzLnJlYWN0TW91bnRSZWFkeS5yb2xsYmFjayhjaGVja3BvaW50KTtcbiAgfSxcblxuICAvKipc
biAgICogYFBvb2xlZENsYXNzYCBsb29rcyBmb3IgdGhpcywgYW5kIHdpbGwgaW52b2tlIHRoaXMg
YmVmb3JlIGFsbG93aW5nIHRoaXNcbiAgICogaW5zdGFuY2UgdG8gYmUgcmV1c2VkLlxuICAgKi9c
biAgZGVzdHJ1Y3RvcjogZnVuY3Rpb24gKCkge1xuICAgIENhbGxiYWNrUXVldWUucmVsZWFzZSh0
aGlzLnJlYWN0TW91bnRSZWFkeSk7XG4gICAgdGhpcy5yZWFjdE1vdW50UmVhZHkgPSBudWxsO1xu
ICB9XG59O1xuXG5fYXNzaWduKFJlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb24ucHJvdG90eXBlLCBU
cmFuc2FjdGlvbiwgTWl4aW4pO1xuXG5Qb29sZWRDbGFzcy5hZGRQb29saW5nVG8oUmVhY3RSZWNv
bmNpbGVUcmFuc2FjdGlvbik7XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RSZWNvbmNpbGVUcmFu
c2FjdGlvbjtcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoq
IC4vfi9yZWFjdC1kb20vbGliL1JlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb24uanNcbiAqKiBtb2R1
bGUgaWQgPSAxNTlcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29weXJp
Z2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQu
XG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxl
IGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0
b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVu
dCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGly
ZWN0b3J5LlxuICpcbiAqIFxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIFJlYWN0T3duZXIg
PSByZXF1aXJlKCcuL1JlYWN0T3duZXInKTtcblxudmFyIFJlYWN0UmVmID0ge307XG5cbmZ1bmN0
aW9uIGF0dGFjaFJlZihyZWYsIGNvbXBvbmVudCwgb3duZXIpIHtcbiAgaWYgKHR5cGVvZiByZWYg
PT09ICdmdW5jdGlvbicpIHtcbiAgICByZWYoY29tcG9uZW50LmdldFB1YmxpY0luc3RhbmNlKCkp
O1xuICB9IGVsc2Uge1xuICAgIC8vIExlZ2FjeSByZWZcbiAgICBSZWFjdE93bmVyLmFkZENvbXBv
bmVudEFzUmVmVG8oY29tcG9uZW50LCByZWYsIG93bmVyKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBk
ZXRhY2hSZWYocmVmLCBjb21wb25lbnQsIG93bmVyKSB7XG4gIGlmICh0eXBlb2YgcmVmID09PSAn
ZnVuY3Rpb24nKSB7XG4gICAgcmVmKG51bGwpO1xuICB9IGVsc2Uge1xuICAgIC8vIExlZ2FjeSBy
ZWZcbiAgICBSZWFjdE93bmVyLnJlbW92ZUNvbXBvbmVudEFzUmVmRnJvbShjb21wb25lbnQsIHJl
Ziwgb3duZXIpO1xuICB9XG59XG5cblJlYWN0UmVmLmF0dGFjaFJlZnMgPSBmdW5jdGlvbiAoaW5z
dGFuY2UsIGVsZW1lbnQpIHtcbiAgaWYgKGVsZW1lbnQgPT09IG51bGwgfHwgdHlwZW9mIGVsZW1l
bnQgIT09ICdvYmplY3QnKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIHZhciByZWYgPSBlbGVtZW50
LnJlZjtcbiAgaWYgKHJlZiAhPSBudWxsKSB7XG4gICAgYXR0YWNoUmVmKHJlZiwgaW5zdGFuY2Us
IGVsZW1lbnQuX293bmVyKTtcbiAgfVxufTtcblxuUmVhY3RSZWYuc2hvdWxkVXBkYXRlUmVmcyA9
IGZ1bmN0aW9uIChwcmV2RWxlbWVudCwgbmV4dEVsZW1lbnQpIHtcbiAgLy8gSWYgZWl0aGVyIHRo
ZSBvd25lciBvciBhIGByZWZgIGhhcyBjaGFuZ2VkLCBtYWtlIHN1cmUgdGhlIG5ld2VzdCBvd25l
clxuICAvLyBoYXMgc3RvcmVkIGEgcmVmZXJlbmNlIHRvIGB0aGlzYCwgYW5kIHRoZSBwcmV2aW91
cyBvd25lciAoaWYgZGlmZmVyZW50KVxuICAvLyBoYXMgZm9yZ290dGVuIHRoZSByZWZlcmVuY2Ug
dG8gYHRoaXNgLiBXZSB1c2UgdGhlIGVsZW1lbnQgaW5zdGVhZFxuICAvLyBvZiB0aGUgcHVibGlj
IHRoaXMucHJvcHMgYmVjYXVzZSB0aGUgcG9zdCBwcm9jZXNzaW5nIGNhbm5vdCBkZXRlcm1pbmVc
biAgLy8gYSByZWYuIFRoZSByZWYgY29uY2VwdHVhbGx5IGxpdmVzIG9uIHRoZSBlbGVtZW50Llxu
XG4gIC8vIFRPRE86IFNob3VsZCB0aGlzIGV2ZW4gYmUgcG9zc2libGU/IFRoZSBvd25lciBjYW5u
b3QgY2hhbmdlIGJlY2F1c2VcbiAgLy8gaXQncyBmb3JiaWRkZW4gYnkgc2hvdWxkVXBkYXRlUmVh
Y3RDb21wb25lbnQuIFRoZSByZWYgY2FuIGNoYW5nZVxuICAvLyBpZiB5b3Ugc3dhcCB0aGUga2V5
cyBvZiBidXQgbm90IHRoZSByZWZzLiBSZWNvbnNpZGVyIHdoZXJlIHRoaXMgY2hlY2tcbiAgLy8g
aXMgbWFkZS4gSXQgcHJvYmFibHkgYmVsb25ncyB3aGVyZSB0aGUga2V5IGNoZWNraW5nIGFuZFxu
ICAvLyBpbnN0YW50aWF0ZVJlYWN0Q29tcG9uZW50IGlzIGRvbmUuXG5cbiAgdmFyIHByZXZSZWYg
PSBudWxsO1xuICB2YXIgcHJldk93bmVyID0gbnVsbDtcbiAgaWYgKHByZXZFbGVtZW50ICE9PSBu
dWxsICYmIHR5cGVvZiBwcmV2RWxlbWVudCA9PT0gJ29iamVjdCcpIHtcbiAgICBwcmV2UmVmID0g
cHJldkVsZW1lbnQucmVmO1xuICAgIHByZXZPd25lciA9IHByZXZFbGVtZW50Ll9vd25lcjtcbiAg
fVxuXG4gIHZhciBuZXh0UmVmID0gbnVsbDtcbiAgdmFyIG5leHRPd25lciA9IG51bGw7XG4gIGlm
IChuZXh0RWxlbWVudCAhPT0gbnVsbCAmJiB0eXBlb2YgbmV4dEVsZW1lbnQgPT09ICdvYmplY3Qn
KSB7XG4gICAgbmV4dFJlZiA9IG5leHRFbGVtZW50LnJlZjtcbiAgICBuZXh0T3duZXIgPSBuZXh0
RWxlbWVudC5fb3duZXI7XG4gIH1cblxuICByZXR1cm4gcHJldlJlZiAhPT0gbmV4dFJlZiB8fFxu
ICAvLyBJZiBvd25lciBjaGFuZ2VzIGJ1dCB3ZSBoYXZlIGFuIHVuY2hhbmdlZCBmdW5jdGlvbiBy
ZWYsIGRvbid0IHVwZGF0ZSByZWZzXG4gIHR5cGVvZiBuZXh0UmVmID09PSAnc3RyaW5nJyAmJiBu
ZXh0T3duZXIgIT09IHByZXZPd25lcjtcbn07XG5cblJlYWN0UmVmLmRldGFjaFJlZnMgPSBmdW5j
dGlvbiAoaW5zdGFuY2UsIGVsZW1lbnQpIHtcbiAgaWYgKGVsZW1lbnQgPT09IG51bGwgfHwgdHlw
ZW9mIGVsZW1lbnQgIT09ICdvYmplY3QnKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIHZhciByZWYg
PSBlbGVtZW50LnJlZjtcbiAgaWYgKHJlZiAhPSBudWxsKSB7XG4gICAgZGV0YWNoUmVmKHJlZiwg
aW5zdGFuY2UsIGVsZW1lbnQuX293bmVyKTtcbiAgfVxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBS
ZWFjdFJlZjtcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoq
IC4vfi9yZWFjdC1kb20vbGliL1JlYWN0UmVmLmpzXG4gKiogbW9kdWxlIGlkID0gMTYwXG4gKiog
bW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQs
IEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291
cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGlu
IHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJj
ZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBm
b3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9c
blxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgX2Fzc2lnbiA9IHJlcXVpcmUoJ29iamVjdC1hc3NpZ24n
KTtcblxudmFyIFBvb2xlZENsYXNzID0gcmVxdWlyZSgnLi9Qb29sZWRDbGFzcycpO1xudmFyIFRy
YW5zYWN0aW9uID0gcmVxdWlyZSgnLi9UcmFuc2FjdGlvbicpO1xudmFyIFJlYWN0SW5zdHJ1bWVu
dGF0aW9uID0gcmVxdWlyZSgnLi9SZWFjdEluc3RydW1lbnRhdGlvbicpO1xudmFyIFJlYWN0U2Vy
dmVyVXBkYXRlUXVldWUgPSByZXF1aXJlKCcuL1JlYWN0U2VydmVyVXBkYXRlUXVldWUnKTtcblxu
LyoqXG4gKiBFeGVjdXRlZCB3aXRoaW4gdGhlIHNjb3BlIG9mIHRoZSBgVHJhbnNhY3Rpb25gIGlu
c3RhbmNlLiBDb25zaWRlciB0aGVzZSBhc1xuICogYmVpbmcgbWVtYmVyIG1ldGhvZHMsIGJ1dCB3
aXRoIGFuIGltcGxpZWQgb3JkZXJpbmcgd2hpbGUgYmVpbmcgaXNvbGF0ZWQgZnJvbVxuICogZWFj
aCBvdGhlci5cbiAqL1xudmFyIFRSQU5TQUNUSU9OX1dSQVBQRVJTID0gW107XG5cbmlmIChwcm9j
ZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIFRSQU5TQUNUSU9OX1dSQVBQ
RVJTLnB1c2goe1xuICAgIGluaXRpYWxpemU6IFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9v
bC5vbkJlZ2luRmx1c2gsXG4gICAgY2xvc2U6IFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9v
bC5vbkVuZEZsdXNoXG4gIH0pO1xufVxuXG52YXIgbm9vcENhbGxiYWNrUXVldWUgPSB7XG4gIGVu
cXVldWU6IGZ1bmN0aW9uICgpIHt9XG59O1xuXG4vKipcbiAqIEBjbGFzcyBSZWFjdFNlcnZlclJl
bmRlcmluZ1RyYW5zYWN0aW9uXG4gKiBAcGFyYW0ge2Jvb2xlYW59IHJlbmRlclRvU3RhdGljTWFy
a3VwXG4gKi9cbmZ1bmN0aW9uIFJlYWN0U2VydmVyUmVuZGVyaW5nVHJhbnNhY3Rpb24ocmVuZGVy
VG9TdGF0aWNNYXJrdXApIHtcbiAgdGhpcy5yZWluaXRpYWxpemVUcmFuc2FjdGlvbigpO1xuICB0
aGlzLnJlbmRlclRvU3RhdGljTWFya3VwID0gcmVuZGVyVG9TdGF0aWNNYXJrdXA7XG4gIHRoaXMu
dXNlQ3JlYXRlRWxlbWVudCA9IGZhbHNlO1xuICB0aGlzLnVwZGF0ZVF1ZXVlID0gbmV3IFJlYWN0
U2VydmVyVXBkYXRlUXVldWUodGhpcyk7XG59XG5cbnZhciBNaXhpbiA9IHtcbiAgLyoqXG4gICAq
IEBzZWUgVHJhbnNhY3Rpb25cbiAgICogQGFic3RyYWN0XG4gICAqIEBmaW5hbFxuICAgKiBAcmV0
dXJuIHthcnJheX0gRW1wdHkgbGlzdCBvZiBvcGVyYXRpb24gd3JhcCBwcm9jZWR1cmVzLlxuICAg
Ki9cbiAgZ2V0VHJhbnNhY3Rpb25XcmFwcGVyczogZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBU
UkFOU0FDVElPTl9XUkFQUEVSUztcbiAgfSxcblxuICAvKipcbiAgICogQHJldHVybiB7b2JqZWN0
fSBUaGUgcXVldWUgdG8gY29sbGVjdCBgb25ET01SZWFkeWAgY2FsbGJhY2tzIHdpdGguXG4gICAq
L1xuICBnZXRSZWFjdE1vdW50UmVhZHk6IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gbm9vcENh
bGxiYWNrUXVldWU7XG4gIH0sXG5cbiAgLyoqXG4gICAqIEByZXR1cm4ge29iamVjdH0gVGhlIHF1
ZXVlIHRvIGNvbGxlY3QgUmVhY3QgYXN5bmMgZXZlbnRzLlxuICAgKi9cbiAgZ2V0VXBkYXRlUXVl
dWU6IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy51cGRhdGVRdWV1ZTtcbiAgfSxcblxu
ICAvKipcbiAgICogYFBvb2xlZENsYXNzYCBsb29rcyBmb3IgdGhpcywgYW5kIHdpbGwgaW52b2tl
IHRoaXMgYmVmb3JlIGFsbG93aW5nIHRoaXNcbiAgICogaW5zdGFuY2UgdG8gYmUgcmV1c2VkLlxu
ICAgKi9cbiAgZGVzdHJ1Y3RvcjogZnVuY3Rpb24gKCkge30sXG5cbiAgY2hlY2twb2ludDogZnVu
Y3Rpb24gKCkge30sXG5cbiAgcm9sbGJhY2s6IGZ1bmN0aW9uICgpIHt9XG59O1xuXG5fYXNzaWdu
KFJlYWN0U2VydmVyUmVuZGVyaW5nVHJhbnNhY3Rpb24ucHJvdG90eXBlLCBUcmFuc2FjdGlvbiwg
TWl4aW4pO1xuXG5Qb29sZWRDbGFzcy5hZGRQb29saW5nVG8oUmVhY3RTZXJ2ZXJSZW5kZXJpbmdU
cmFuc2FjdGlvbik7XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RTZXJ2ZXJSZW5kZXJpbmdUcmFu
c2FjdGlvbjtcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoq
IC4vfi9yZWFjdC1kb20vbGliL1JlYWN0U2VydmVyUmVuZGVyaW5nVHJhbnNhY3Rpb24uanNcbiAq
KiBtb2R1bGUgaWQgPSAxNjFcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICog
Q29weXJpZ2h0IDIwMTUtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNE
LXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qg
ZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9m
IHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNh
bWUgZGlyZWN0b3J5LlxuICpcbiAqIFxuICovXG5cbid1c2Ugc3RyaWN0JztcblxuZnVuY3Rpb24g
X2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBp
bnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNh
bGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpOyB9IH1cblxudmFyIFJlYWN0VXBkYXRlUXVldWUg
PSByZXF1aXJlKCcuL1JlYWN0VXBkYXRlUXVldWUnKTtcblxudmFyIHdhcm5pbmcgPSByZXF1aXJl
KCdmYmpzL2xpYi93YXJuaW5nJyk7XG5cbmZ1bmN0aW9uIHdhcm5Ob29wKHB1YmxpY0luc3RhbmNl
LCBjYWxsZXJOYW1lKSB7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rp
b24nKSB7XG4gICAgdmFyIGNvbnN0cnVjdG9yID0gcHVibGljSW5zdGFuY2UuY29uc3RydWN0b3I7
XG4gICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFs
c2UsICclcyguLi4pOiBDYW4gb25seSB1cGRhdGUgYSBtb3VudGluZyBjb21wb25lbnQuICcgKyAn
VGhpcyB1c3VhbGx5IG1lYW5zIHlvdSBjYWxsZWQgJXMoKSBvdXRzaWRlIGNvbXBvbmVudFdpbGxN
b3VudCgpIG9uIHRoZSBzZXJ2ZXIuICcgKyAnVGhpcyBpcyBhIG5vLW9wLiBQbGVhc2UgY2hlY2sg
dGhlIGNvZGUgZm9yIHRoZSAlcyBjb21wb25lbnQuJywgY2FsbGVyTmFtZSwgY2FsbGVyTmFtZSwg
Y29uc3RydWN0b3IgJiYgKGNvbnN0cnVjdG9yLmRpc3BsYXlOYW1lIHx8IGNvbnN0cnVjdG9yLm5h
bWUpIHx8ICdSZWFjdENsYXNzJykgOiB2b2lkIDA7XG4gIH1cbn1cblxuLyoqXG4gKiBUaGlzIGlz
IHRoZSB1cGRhdGUgcXVldWUgdXNlZCBmb3Igc2VydmVyIHJlbmRlcmluZy5cbiAqIEl0IGRlbGVn
YXRlcyB0byBSZWFjdFVwZGF0ZVF1ZXVlIHdoaWxlIHNlcnZlciByZW5kZXJpbmcgaXMgaW4gcHJv
Z3Jlc3MgYW5kXG4gKiBzd2l0Y2hlcyB0byBSZWFjdE5vb3BVcGRhdGVRdWV1ZSBhZnRlciB0aGUg
dHJhbnNhY3Rpb24gaGFzIGNvbXBsZXRlZC5cbiAqIEBjbGFzcyBSZWFjdFNlcnZlclVwZGF0ZVF1
ZXVlXG4gKiBAcGFyYW0ge1RyYW5zYWN0aW9ufSB0cmFuc2FjdGlvblxuICovXG5cbnZhciBSZWFj
dFNlcnZlclVwZGF0ZVF1ZXVlID0gZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBSZWFjdFNlcnZl
clVwZGF0ZVF1ZXVlKHRyYW5zYWN0aW9uKSB7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFJl
YWN0U2VydmVyVXBkYXRlUXVldWUpO1xuXG4gICAgdGhpcy50cmFuc2FjdGlvbiA9IHRyYW5zYWN0
aW9uO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyB3aGV0aGVyIG9yIG5vdCB0aGlzIGNvbXBv
c2l0ZSBjb21wb25lbnQgaXMgbW91bnRlZC5cbiAgICogQHBhcmFtIHtSZWFjdENsYXNzfSBwdWJs
aWNJbnN0YW5jZSBUaGUgaW5zdGFuY2Ugd2Ugd2FudCB0byB0ZXN0LlxuICAgKiBAcmV0dXJuIHti
b29sZWFufSBUcnVlIGlmIG1vdW50ZWQsIGZhbHNlIG90aGVyd2lzZS5cbiAgICogQHByb3RlY3Rl
ZFxuICAgKiBAZmluYWxcbiAgICovXG5cblxuICBSZWFjdFNlcnZlclVwZGF0ZVF1ZXVlLnByb3Rv
dHlwZS5pc01vdW50ZWQgPSBmdW5jdGlvbiBpc01vdW50ZWQocHVibGljSW5zdGFuY2UpIHtcbiAg
ICByZXR1cm4gZmFsc2U7XG4gIH07XG5cbiAgLyoqXG4gICAqIEVucXVldWUgYSBjYWxsYmFjayB0
aGF0IHdpbGwgYmUgZXhlY3V0ZWQgYWZ0ZXIgYWxsIHRoZSBwZW5kaW5nIHVwZGF0ZXNcbiAgICog
aGF2ZSBwcm9jZXNzZWQuXG4gICAqXG4gICAqIEBwYXJhbSB7UmVhY3RDbGFzc30gcHVibGljSW5z
dGFuY2UgVGhlIGluc3RhbmNlIHRvIHVzZSBhcyBgdGhpc2AgY29udGV4dC5cbiAgICogQHBhcmFt
IHs/ZnVuY3Rpb259IGNhbGxiYWNrIENhbGxlZCBhZnRlciBzdGF0ZSBpcyB1cGRhdGVkLlxuICAg
KiBAaW50ZXJuYWxcbiAgICovXG5cblxuICBSZWFjdFNlcnZlclVwZGF0ZVF1ZXVlLnByb3RvdHlw
ZS5lbnF1ZXVlQ2FsbGJhY2sgPSBmdW5jdGlvbiBlbnF1ZXVlQ2FsbGJhY2socHVibGljSW5zdGFu
Y2UsIGNhbGxiYWNrLCBjYWxsZXJOYW1lKSB7XG4gICAgaWYgKHRoaXMudHJhbnNhY3Rpb24uaXNJ
blRyYW5zYWN0aW9uKCkpIHtcbiAgICAgIFJlYWN0VXBkYXRlUXVldWUuZW5xdWV1ZUNhbGxiYWNr
KHB1YmxpY0luc3RhbmNlLCBjYWxsYmFjaywgY2FsbGVyTmFtZSk7XG4gICAgfVxuICB9O1xuXG4g
IC8qKlxuICAgKiBGb3JjZXMgYW4gdXBkYXRlLiBUaGlzIHNob3VsZCBvbmx5IGJlIGludm9rZWQg
d2hlbiBpdCBpcyBrbm93biB3aXRoXG4gICAqIGNlcnRhaW50eSB0aGF0IHdlIGFyZSAqKm5vdCoq
IGluIGEgRE9NIHRyYW5zYWN0aW9uLlxuICAgKlxuICAgKiBZb3UgbWF5IHdhbnQgdG8gY2FsbCB0
aGlzIHdoZW4geW91IGtub3cgdGhhdCBzb21lIGRlZXBlciBhc3BlY3Qgb2YgdGhlXG4gICAqIGNv
bXBvbmVudCdzIHN0YXRlIGhhcyBjaGFuZ2VkIGJ1dCBgc2V0U3RhdGVgIHdhcyBub3QgY2FsbGVk
LlxuICAgKlxuICAgKiBUaGlzIHdpbGwgbm90IGludm9rZSBgc2hvdWxkQ29tcG9uZW50VXBkYXRl
YCwgYnV0IGl0IHdpbGwgaW52b2tlXG4gICAqIGBjb21wb25lbnRXaWxsVXBkYXRlYCBhbmQgYGNv
bXBvbmVudERpZFVwZGF0ZWAuXG4gICAqXG4gICAqIEBwYXJhbSB7UmVhY3RDbGFzc30gcHVibGlj
SW5zdGFuY2UgVGhlIGluc3RhbmNlIHRoYXQgc2hvdWxkIHJlcmVuZGVyLlxuICAgKiBAaW50ZXJu
YWxcbiAgICovXG5cblxuICBSZWFjdFNlcnZlclVwZGF0ZVF1ZXVlLnByb3RvdHlwZS5lbnF1ZXVl
Rm9yY2VVcGRhdGUgPSBmdW5jdGlvbiBlbnF1ZXVlRm9yY2VVcGRhdGUocHVibGljSW5zdGFuY2Up
IHtcbiAgICBpZiAodGhpcy50cmFuc2FjdGlvbi5pc0luVHJhbnNhY3Rpb24oKSkge1xuICAgICAg
UmVhY3RVcGRhdGVRdWV1ZS5lbnF1ZXVlRm9yY2VVcGRhdGUocHVibGljSW5zdGFuY2UpO1xuICAg
IH0gZWxzZSB7XG4gICAgICB3YXJuTm9vcChwdWJsaWNJbnN0YW5jZSwgJ2ZvcmNlVXBkYXRlJyk7
XG4gICAgfVxuICB9O1xuXG4gIC8qKlxuICAgKiBSZXBsYWNlcyBhbGwgb2YgdGhlIHN0YXRlLiBB
bHdheXMgdXNlIHRoaXMgb3IgYHNldFN0YXRlYCB0byBtdXRhdGUgc3RhdGUuXG4gICAqIFlvdSBz
aG91bGQgdHJlYXQgYHRoaXMuc3RhdGVgIGFzIGltbXV0YWJsZS5cbiAgICpcbiAgICogVGhlcmUg
aXMgbm8gZ3VhcmFudGVlIHRoYXQgYHRoaXMuc3RhdGVgIHdpbGwgYmUgaW1tZWRpYXRlbHkgdXBk
YXRlZCwgc29cbiAgICogYWNjZXNzaW5nIGB0aGlzLnN0YXRlYCBhZnRlciBjYWxsaW5nIHRoaXMg
bWV0aG9kIG1heSByZXR1cm4gdGhlIG9sZCB2YWx1ZS5cbiAgICpcbiAgICogQHBhcmFtIHtSZWFj
dENsYXNzfSBwdWJsaWNJbnN0YW5jZSBUaGUgaW5zdGFuY2UgdGhhdCBzaG91bGQgcmVyZW5kZXIu
XG4gICAqIEBwYXJhbSB7b2JqZWN0fGZ1bmN0aW9ufSBjb21wbGV0ZVN0YXRlIE5leHQgc3RhdGUu
XG4gICAqIEBpbnRlcm5hbFxuICAgKi9cblxuXG4gIFJlYWN0U2VydmVyVXBkYXRlUXVldWUucHJv
dG90eXBlLmVucXVldWVSZXBsYWNlU3RhdGUgPSBmdW5jdGlvbiBlbnF1ZXVlUmVwbGFjZVN0YXRl
KHB1YmxpY0luc3RhbmNlLCBjb21wbGV0ZVN0YXRlKSB7XG4gICAgaWYgKHRoaXMudHJhbnNhY3Rp
b24uaXNJblRyYW5zYWN0aW9uKCkpIHtcbiAgICAgIFJlYWN0VXBkYXRlUXVldWUuZW5xdWV1ZVJl
cGxhY2VTdGF0ZShwdWJsaWNJbnN0YW5jZSwgY29tcGxldGVTdGF0ZSk7XG4gICAgfSBlbHNlIHtc
biAgICAgIHdhcm5Ob29wKHB1YmxpY0luc3RhbmNlLCAncmVwbGFjZVN0YXRlJyk7XG4gICAgfVxu
ICB9O1xuXG4gIC8qKlxuICAgKiBTZXRzIGEgc3Vic2V0IG9mIHRoZSBzdGF0ZS4gVGhpcyBvbmx5
IGV4aXN0cyBiZWNhdXNlIF9wZW5kaW5nU3RhdGUgaXNcbiAgICogaW50ZXJuYWwuIFRoaXMgcHJv
dmlkZXMgYSBtZXJnaW5nIHN0cmF0ZWd5IHRoYXQgaXMgbm90IGF2YWlsYWJsZSB0byBkZWVwXG4g
ICAqIHByb3BlcnRpZXMgd2hpY2ggaXMgY29uZnVzaW5nLiBUT0RPOiBFeHBvc2UgcGVuZGluZ1N0
YXRlIG9yIGRvbid0IHVzZSBpdFxuICAgKiBkdXJpbmcgdGhlIG1lcmdlLlxuICAgKlxuICAgKiBA
cGFyYW0ge1JlYWN0Q2xhc3N9IHB1YmxpY0luc3RhbmNlIFRoZSBpbnN0YW5jZSB0aGF0IHNob3Vs
ZCByZXJlbmRlci5cbiAgICogQHBhcmFtIHtvYmplY3R8ZnVuY3Rpb259IHBhcnRpYWxTdGF0ZSBO
ZXh0IHBhcnRpYWwgc3RhdGUgdG8gYmUgbWVyZ2VkIHdpdGggc3RhdGUuXG4gICAqIEBpbnRlcm5h
bFxuICAgKi9cblxuXG4gIFJlYWN0U2VydmVyVXBkYXRlUXVldWUucHJvdG90eXBlLmVucXVldWVT
ZXRTdGF0ZSA9IGZ1bmN0aW9uIGVucXVldWVTZXRTdGF0ZShwdWJsaWNJbnN0YW5jZSwgcGFydGlh
bFN0YXRlKSB7XG4gICAgaWYgKHRoaXMudHJhbnNhY3Rpb24uaXNJblRyYW5zYWN0aW9uKCkpIHtc
biAgICAgIFJlYWN0VXBkYXRlUXVldWUuZW5xdWV1ZVNldFN0YXRlKHB1YmxpY0luc3RhbmNlLCBw
YXJ0aWFsU3RhdGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB3YXJuTm9vcChwdWJsaWNJbnN0YW5j
ZSwgJ3NldFN0YXRlJyk7XG4gICAgfVxuICB9O1xuXG4gIHJldHVybiBSZWFjdFNlcnZlclVwZGF0
ZVF1ZXVlO1xufSgpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0U2VydmVyVXBkYXRlUXVldWU7
XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVh
Y3QtZG9tL2xpYi9SZWFjdFNlcnZlclVwZGF0ZVF1ZXVlLmpzXG4gKiogbW9kdWxlIGlkID0gMTYy
XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLXBy
ZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRo
aXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZv
dW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlz
IHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNh
biBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAq
XG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG5tb2R1bGUuZXhwb3J0cyA9ICcxNS42LjEnO1xuXG5c
bi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0LWRv
bS9saWIvUmVhY3RWZXJzaW9uLmpzXG4gKiogbW9kdWxlIGlkID0gMTYzXG4gKiogbW9kdWxlIGNo
dW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29r
LCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUg
aXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICog
TElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBB
biBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0
aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuJ3VzZSBz
dHJpY3QnO1xuXG52YXIgTlMgPSB7XG4gIHhsaW5rOiAnaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluaycsXG4gIHhtbDogJ2h0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZSdcbn07
XG5cbi8vIFdlIHVzZSBhdHRyaWJ1dGVzIGZvciBldmVyeXRoaW5nIFNWRyBzbyBsZXQncyBhdm9p
ZCBzb21lIGR1cGxpY2F0aW9uIGFuZCBydW5cbi8vIGNvZGUgaW5zdGVhZC5cbi8vIFRoZSBmb2xs
b3dpbmcgYXJlIGFsbCBzcGVjaWZpZWQgaW4gdGhlIEhUTUwgY29uZmlnIGFscmVhZHkgc28gd2Ug
ZXhjbHVkZSBoZXJlLlxuLy8gLSBjbGFzcyAoYXMgY2xhc3NOYW1lKVxuLy8gLSBjb2xvclxuLy8g
LSBoZWlnaHRcbi8vIC0gaWRcbi8vIC0gbGFuZ1xuLy8gLSBtYXhcbi8vIC0gbWVkaWFcbi8vIC0g
bWV0aG9kXG4vLyAtIG1pblxuLy8gLSBuYW1lXG4vLyAtIHN0eWxlXG4vLyAtIHRhcmdldFxuLy8g
LSB0eXBlXG4vLyAtIHdpZHRoXG52YXIgQVRUUlMgPSB7XG4gIGFjY2VudEhlaWdodDogJ2FjY2Vu
dC1oZWlnaHQnLFxuICBhY2N1bXVsYXRlOiAwLFxuICBhZGRpdGl2ZTogMCxcbiAgYWxpZ25tZW50
QmFzZWxpbmU6ICdhbGlnbm1lbnQtYmFzZWxpbmUnLFxuICBhbGxvd1Jlb3JkZXI6ICdhbGxvd1Jl
b3JkZXInLFxuICBhbHBoYWJldGljOiAwLFxuICBhbXBsaXR1ZGU6IDAsXG4gIGFyYWJpY0Zvcm06
ICdhcmFiaWMtZm9ybScsXG4gIGFzY2VudDogMCxcbiAgYXR0cmlidXRlTmFtZTogJ2F0dHJpYnV0
ZU5hbWUnLFxuICBhdHRyaWJ1dGVUeXBlOiAnYXR0cmlidXRlVHlwZScsXG4gIGF1dG9SZXZlcnNl
OiAnYXV0b1JldmVyc2UnLFxuICBhemltdXRoOiAwLFxuICBiYXNlRnJlcXVlbmN5OiAnYmFzZUZy
ZXF1ZW5jeScsXG4gIGJhc2VQcm9maWxlOiAnYmFzZVByb2ZpbGUnLFxuICBiYXNlbGluZVNoaWZ0
OiAnYmFzZWxpbmUtc2hpZnQnLFxuICBiYm94OiAwLFxuICBiZWdpbjogMCxcbiAgYmlhczogMCxc
biAgYnk6IDAsXG4gIGNhbGNNb2RlOiAnY2FsY01vZGUnLFxuICBjYXBIZWlnaHQ6ICdjYXAtaGVp
Z2h0JyxcbiAgY2xpcDogMCxcbiAgY2xpcFBhdGg6ICdjbGlwLXBhdGgnLFxuICBjbGlwUnVsZTog
J2NsaXAtcnVsZScsXG4gIGNsaXBQYXRoVW5pdHM6ICdjbGlwUGF0aFVuaXRzJyxcbiAgY29sb3JJ
bnRlcnBvbGF0aW9uOiAnY29sb3ItaW50ZXJwb2xhdGlvbicsXG4gIGNvbG9ySW50ZXJwb2xhdGlv
bkZpbHRlcnM6ICdjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnMnLFxuICBjb2xvclByb2ZpbGU6
ICdjb2xvci1wcm9maWxlJyxcbiAgY29sb3JSZW5kZXJpbmc6ICdjb2xvci1yZW5kZXJpbmcnLFxu
ICBjb250ZW50U2NyaXB0VHlwZTogJ2NvbnRlbnRTY3JpcHRUeXBlJyxcbiAgY29udGVudFN0eWxl
VHlwZTogJ2NvbnRlbnRTdHlsZVR5cGUnLFxuICBjdXJzb3I6IDAsXG4gIGN4OiAwLFxuICBjeTog
MCxcbiAgZDogMCxcbiAgZGVjZWxlcmF0ZTogMCxcbiAgZGVzY2VudDogMCxcbiAgZGlmZnVzZUNv
bnN0YW50OiAnZGlmZnVzZUNvbnN0YW50JyxcbiAgZGlyZWN0aW9uOiAwLFxuICBkaXNwbGF5OiAw
LFxuICBkaXZpc29yOiAwLFxuICBkb21pbmFudEJhc2VsaW5lOiAnZG9taW5hbnQtYmFzZWxpbmUn
LFxuICBkdXI6IDAsXG4gIGR4OiAwLFxuICBkeTogMCxcbiAgZWRnZU1vZGU6ICdlZGdlTW9kZScs
XG4gIGVsZXZhdGlvbjogMCxcbiAgZW5hYmxlQmFja2dyb3VuZDogJ2VuYWJsZS1iYWNrZ3JvdW5k
JyxcbiAgZW5kOiAwLFxuICBleHBvbmVudDogMCxcbiAgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJl
ZDogJ2V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQnLFxuICBmaWxsOiAwLFxuICBmaWxsT3BhY2l0
eTogJ2ZpbGwtb3BhY2l0eScsXG4gIGZpbGxSdWxlOiAnZmlsbC1ydWxlJyxcbiAgZmlsdGVyOiAw
LFxuICBmaWx0ZXJSZXM6ICdmaWx0ZXJSZXMnLFxuICBmaWx0ZXJVbml0czogJ2ZpbHRlclVuaXRz
JyxcbiAgZmxvb2RDb2xvcjogJ2Zsb29kLWNvbG9yJyxcbiAgZmxvb2RPcGFjaXR5OiAnZmxvb2Qt
b3BhY2l0eScsXG4gIGZvY3VzYWJsZTogMCxcbiAgZm9udEZhbWlseTogJ2ZvbnQtZmFtaWx5Jyxc
biAgZm9udFNpemU6ICdmb250LXNpemUnLFxuICBmb250U2l6ZUFkanVzdDogJ2ZvbnQtc2l6ZS1h
ZGp1c3QnLFxuICBmb250U3RyZXRjaDogJ2ZvbnQtc3RyZXRjaCcsXG4gIGZvbnRTdHlsZTogJ2Zv
bnQtc3R5bGUnLFxuICBmb250VmFyaWFudDogJ2ZvbnQtdmFyaWFudCcsXG4gIGZvbnRXZWlnaHQ6
ICdmb250LXdlaWdodCcsXG4gIGZvcm1hdDogMCxcbiAgZnJvbTogMCxcbiAgZng6IDAsXG4gIGZ5
OiAwLFxuICBnMTogMCxcbiAgZzI6IDAsXG4gIGdseXBoTmFtZTogJ2dseXBoLW5hbWUnLFxuICBn
bHlwaE9yaWVudGF0aW9uSG9yaXpvbnRhbDogJ2dseXBoLW9yaWVudGF0aW9uLWhvcml6b250YWwn
LFxuICBnbHlwaE9yaWVudGF0aW9uVmVydGljYWw6ICdnbHlwaC1vcmllbnRhdGlvbi12ZXJ0aWNh
bCcsXG4gIGdseXBoUmVmOiAnZ2x5cGhSZWYnLFxuICBncmFkaWVudFRyYW5zZm9ybTogJ2dyYWRp
ZW50VHJhbnNmb3JtJyxcbiAgZ3JhZGllbnRVbml0czogJ2dyYWRpZW50VW5pdHMnLFxuICBoYW5n
aW5nOiAwLFxuICBob3JpekFkdlg6ICdob3Jpei1hZHYteCcsXG4gIGhvcml6T3JpZ2luWDogJ2hv
cml6LW9yaWdpbi14JyxcbiAgaWRlb2dyYXBoaWM6IDAsXG4gIGltYWdlUmVuZGVyaW5nOiAnaW1h
Z2UtcmVuZGVyaW5nJyxcbiAgJ2luJzogMCxcbiAgaW4yOiAwLFxuICBpbnRlcmNlcHQ6IDAsXG4g
IGs6IDAsXG4gIGsxOiAwLFxuICBrMjogMCxcbiAgazM6IDAsXG4gIGs0OiAwLFxuICBrZXJuZWxN
YXRyaXg6ICdrZXJuZWxNYXRyaXgnLFxuICBrZXJuZWxVbml0TGVuZ3RoOiAna2VybmVsVW5pdExl
bmd0aCcsXG4gIGtlcm5pbmc6IDAsXG4gIGtleVBvaW50czogJ2tleVBvaW50cycsXG4gIGtleVNw
bGluZXM6ICdrZXlTcGxpbmVzJyxcbiAga2V5VGltZXM6ICdrZXlUaW1lcycsXG4gIGxlbmd0aEFk
anVzdDogJ2xlbmd0aEFkanVzdCcsXG4gIGxldHRlclNwYWNpbmc6ICdsZXR0ZXItc3BhY2luZycs
XG4gIGxpZ2h0aW5nQ29sb3I6ICdsaWdodGluZy1jb2xvcicsXG4gIGxpbWl0aW5nQ29uZUFuZ2xl
OiAnbGltaXRpbmdDb25lQW5nbGUnLFxuICBsb2NhbDogMCxcbiAgbWFya2VyRW5kOiAnbWFya2Vy
LWVuZCcsXG4gIG1hcmtlck1pZDogJ21hcmtlci1taWQnLFxuICBtYXJrZXJTdGFydDogJ21hcmtl
ci1zdGFydCcsXG4gIG1hcmtlckhlaWdodDogJ21hcmtlckhlaWdodCcsXG4gIG1hcmtlclVuaXRz
OiAnbWFya2VyVW5pdHMnLFxuICBtYXJrZXJXaWR0aDogJ21hcmtlcldpZHRoJyxcbiAgbWFzazog
MCxcbiAgbWFza0NvbnRlbnRVbml0czogJ21hc2tDb250ZW50VW5pdHMnLFxuICBtYXNrVW5pdHM6
ICdtYXNrVW5pdHMnLFxuICBtYXRoZW1hdGljYWw6IDAsXG4gIG1vZGU6IDAsXG4gIG51bU9jdGF2
ZXM6ICdudW1PY3RhdmVzJyxcbiAgb2Zmc2V0OiAwLFxuICBvcGFjaXR5OiAwLFxuICBvcGVyYXRv
cjogMCxcbiAgb3JkZXI6IDAsXG4gIG9yaWVudDogMCxcbiAgb3JpZW50YXRpb246IDAsXG4gIG9y
aWdpbjogMCxcbiAgb3ZlcmZsb3c6IDAsXG4gIG92ZXJsaW5lUG9zaXRpb246ICdvdmVybGluZS1w
b3NpdGlvbicsXG4gIG92ZXJsaW5lVGhpY2tuZXNzOiAnb3ZlcmxpbmUtdGhpY2tuZXNzJyxcbiAg
cGFpbnRPcmRlcjogJ3BhaW50LW9yZGVyJyxcbiAgcGFub3NlMTogJ3Bhbm9zZS0xJyxcbiAgcGF0
aExlbmd0aDogJ3BhdGhMZW5ndGgnLFxuICBwYXR0ZXJuQ29udGVudFVuaXRzOiAncGF0dGVybkNv
bnRlbnRVbml0cycsXG4gIHBhdHRlcm5UcmFuc2Zvcm06ICdwYXR0ZXJuVHJhbnNmb3JtJyxcbiAg
cGF0dGVyblVuaXRzOiAncGF0dGVyblVuaXRzJyxcbiAgcG9pbnRlckV2ZW50czogJ3BvaW50ZXIt
ZXZlbnRzJyxcbiAgcG9pbnRzOiAwLFxuICBwb2ludHNBdFg6ICdwb2ludHNBdFgnLFxuICBwb2lu
dHNBdFk6ICdwb2ludHNBdFknLFxuICBwb2ludHNBdFo6ICdwb2ludHNBdFonLFxuICBwcmVzZXJ2
ZUFscGhhOiAncHJlc2VydmVBbHBoYScsXG4gIHByZXNlcnZlQXNwZWN0UmF0aW86ICdwcmVzZXJ2
ZUFzcGVjdFJhdGlvJyxcbiAgcHJpbWl0aXZlVW5pdHM6ICdwcmltaXRpdmVVbml0cycsXG4gIHI6
IDAsXG4gIHJhZGl1czogMCxcbiAgcmVmWDogJ3JlZlgnLFxuICByZWZZOiAncmVmWScsXG4gIHJl
bmRlcmluZ0ludGVudDogJ3JlbmRlcmluZy1pbnRlbnQnLFxuICByZXBlYXRDb3VudDogJ3JlcGVh
dENvdW50JyxcbiAgcmVwZWF0RHVyOiAncmVwZWF0RHVyJyxcbiAgcmVxdWlyZWRFeHRlbnNpb25z
OiAncmVxdWlyZWRFeHRlbnNpb25zJyxcbiAgcmVxdWlyZWRGZWF0dXJlczogJ3JlcXVpcmVkRmVh
dHVyZXMnLFxuICByZXN0YXJ0OiAwLFxuICByZXN1bHQ6IDAsXG4gIHJvdGF0ZTogMCxcbiAgcng6
IDAsXG4gIHJ5OiAwLFxuICBzY2FsZTogMCxcbiAgc2VlZDogMCxcbiAgc2hhcGVSZW5kZXJpbmc6
ICdzaGFwZS1yZW5kZXJpbmcnLFxuICBzbG9wZTogMCxcbiAgc3BhY2luZzogMCxcbiAgc3BlY3Vs
YXJDb25zdGFudDogJ3NwZWN1bGFyQ29uc3RhbnQnLFxuICBzcGVjdWxhckV4cG9uZW50OiAnc3Bl
Y3VsYXJFeHBvbmVudCcsXG4gIHNwZWVkOiAwLFxuICBzcHJlYWRNZXRob2Q6ICdzcHJlYWRNZXRo
b2QnLFxuICBzdGFydE9mZnNldDogJ3N0YXJ0T2Zmc2V0JyxcbiAgc3RkRGV2aWF0aW9uOiAnc3Rk
RGV2aWF0aW9uJyxcbiAgc3RlbWg6IDAsXG4gIHN0ZW12OiAwLFxuICBzdGl0Y2hUaWxlczogJ3N0
aXRjaFRpbGVzJyxcbiAgc3RvcENvbG9yOiAnc3RvcC1jb2xvcicsXG4gIHN0b3BPcGFjaXR5OiAn
c3RvcC1vcGFjaXR5JyxcbiAgc3RyaWtldGhyb3VnaFBvc2l0aW9uOiAnc3RyaWtldGhyb3VnaC1w
b3NpdGlvbicsXG4gIHN0cmlrZXRocm91Z2hUaGlja25lc3M6ICdzdHJpa2V0aHJvdWdoLXRoaWNr
bmVzcycsXG4gIHN0cmluZzogMCxcbiAgc3Ryb2tlOiAwLFxuICBzdHJva2VEYXNoYXJyYXk6ICdz
dHJva2UtZGFzaGFycmF5JyxcbiAgc3Ryb2tlRGFzaG9mZnNldDogJ3N0cm9rZS1kYXNob2Zmc2V0
JyxcbiAgc3Ryb2tlTGluZWNhcDogJ3N0cm9rZS1saW5lY2FwJyxcbiAgc3Ryb2tlTGluZWpvaW46
ICdzdHJva2UtbGluZWpvaW4nLFxuICBzdHJva2VNaXRlcmxpbWl0OiAnc3Ryb2tlLW1pdGVybGlt
aXQnLFxuICBzdHJva2VPcGFjaXR5OiAnc3Ryb2tlLW9wYWNpdHknLFxuICBzdHJva2VXaWR0aDog
J3N0cm9rZS13aWR0aCcsXG4gIHN1cmZhY2VTY2FsZTogJ3N1cmZhY2VTY2FsZScsXG4gIHN5c3Rl
bUxhbmd1YWdlOiAnc3lzdGVtTGFuZ3VhZ2UnLFxuICB0YWJsZVZhbHVlczogJ3RhYmxlVmFsdWVz
JyxcbiAgdGFyZ2V0WDogJ3RhcmdldFgnLFxuICB0YXJnZXRZOiAndGFyZ2V0WScsXG4gIHRleHRB
bmNob3I6ICd0ZXh0LWFuY2hvcicsXG4gIHRleHREZWNvcmF0aW9uOiAndGV4dC1kZWNvcmF0aW9u
JyxcbiAgdGV4dFJlbmRlcmluZzogJ3RleHQtcmVuZGVyaW5nJyxcbiAgdGV4dExlbmd0aDogJ3Rl
eHRMZW5ndGgnLFxuICB0bzogMCxcbiAgdHJhbnNmb3JtOiAwLFxuICB1MTogMCxcbiAgdTI6IDAs
XG4gIHVuZGVybGluZVBvc2l0aW9uOiAndW5kZXJsaW5lLXBvc2l0aW9uJyxcbiAgdW5kZXJsaW5l
VGhpY2tuZXNzOiAndW5kZXJsaW5lLXRoaWNrbmVzcycsXG4gIHVuaWNvZGU6IDAsXG4gIHVuaWNv
ZGVCaWRpOiAndW5pY29kZS1iaWRpJyxcbiAgdW5pY29kZVJhbmdlOiAndW5pY29kZS1yYW5nZScs
XG4gIHVuaXRzUGVyRW06ICd1bml0cy1wZXItZW0nLFxuICB2QWxwaGFiZXRpYzogJ3YtYWxwaGFi
ZXRpYycsXG4gIHZIYW5naW5nOiAndi1oYW5naW5nJyxcbiAgdklkZW9ncmFwaGljOiAndi1pZGVv
Z3JhcGhpYycsXG4gIHZNYXRoZW1hdGljYWw6ICd2LW1hdGhlbWF0aWNhbCcsXG4gIHZhbHVlczog
MCxcbiAgdmVjdG9yRWZmZWN0OiAndmVjdG9yLWVmZmVjdCcsXG4gIHZlcnNpb246IDAsXG4gIHZl
cnRBZHZZOiAndmVydC1hZHYteScsXG4gIHZlcnRPcmlnaW5YOiAndmVydC1vcmlnaW4teCcsXG4g
IHZlcnRPcmlnaW5ZOiAndmVydC1vcmlnaW4teScsXG4gIHZpZXdCb3g6ICd2aWV3Qm94JyxcbiAg
dmlld1RhcmdldDogJ3ZpZXdUYXJnZXQnLFxuICB2aXNpYmlsaXR5OiAwLFxuICB3aWR0aHM6IDAs
XG4gIHdvcmRTcGFjaW5nOiAnd29yZC1zcGFjaW5nJyxcbiAgd3JpdGluZ01vZGU6ICd3cml0aW5n
LW1vZGUnLFxuICB4OiAwLFxuICB4SGVpZ2h0OiAneC1oZWlnaHQnLFxuICB4MTogMCxcbiAgeDI6
IDAsXG4gIHhDaGFubmVsU2VsZWN0b3I6ICd4Q2hhbm5lbFNlbGVjdG9yJyxcbiAgeGxpbmtBY3R1
YXRlOiAneGxpbms6YWN0dWF0ZScsXG4gIHhsaW5rQXJjcm9sZTogJ3hsaW5rOmFyY3JvbGUnLFxu
ICB4bGlua0hyZWY6ICd4bGluazpocmVmJyxcbiAgeGxpbmtSb2xlOiAneGxpbms6cm9sZScsXG4g
IHhsaW5rU2hvdzogJ3hsaW5rOnNob3cnLFxuICB4bGlua1RpdGxlOiAneGxpbms6dGl0bGUnLFxu
ICB4bGlua1R5cGU6ICd4bGluazp0eXBlJyxcbiAgeG1sQmFzZTogJ3htbDpiYXNlJyxcbiAgeG1s
bnM6IDAsXG4gIHhtbG5zWGxpbms6ICd4bWxuczp4bGluaycsXG4gIHhtbExhbmc6ICd4bWw6bGFu
ZycsXG4gIHhtbFNwYWNlOiAneG1sOnNwYWNlJyxcbiAgeTogMCxcbiAgeTE6IDAsXG4gIHkyOiAw
LFxuICB5Q2hhbm5lbFNlbGVjdG9yOiAneUNoYW5uZWxTZWxlY3RvcicsXG4gIHo6IDAsXG4gIHpv
b21BbmRQYW46ICd6b29tQW5kUGFuJ1xufTtcblxudmFyIFNWR0RPTVByb3BlcnR5Q29uZmlnID0g
e1xuICBQcm9wZXJ0aWVzOiB7fSxcbiAgRE9NQXR0cmlidXRlTmFtZXNwYWNlczoge1xuICAgIHhs
aW5rQWN0dWF0ZTogTlMueGxpbmssXG4gICAgeGxpbmtBcmNyb2xlOiBOUy54bGluayxcbiAgICB4
bGlua0hyZWY6IE5TLnhsaW5rLFxuICAgIHhsaW5rUm9sZTogTlMueGxpbmssXG4gICAgeGxpbmtT
aG93OiBOUy54bGluayxcbiAgICB4bGlua1RpdGxlOiBOUy54bGluayxcbiAgICB4bGlua1R5cGU6
IE5TLnhsaW5rLFxuICAgIHhtbEJhc2U6IE5TLnhtbCxcbiAgICB4bWxMYW5nOiBOUy54bWwsXG4g
ICAgeG1sU3BhY2U6IE5TLnhtbFxuICB9LFxuICBET01BdHRyaWJ1dGVOYW1lczoge31cbn07XG5c
bk9iamVjdC5rZXlzKEFUVFJTKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgU1ZHRE9NUHJv
cGVydHlDb25maWcuUHJvcGVydGllc1trZXldID0gMDtcbiAgaWYgKEFUVFJTW2tleV0pIHtcbiAg
ICBTVkdET01Qcm9wZXJ0eUNvbmZpZy5ET01BdHRyaWJ1dGVOYW1lc1trZXldID0gQVRUUlNba2V5
XTtcbiAgfVxufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gU1ZHRE9NUHJvcGVydHlDb25maWc7XG5c
blxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3Qt
ZG9tL2xpYi9TVkdET01Qcm9wZXJ0eUNvbmZpZy5qc1xuICoqIG1vZHVsZSBpZCA9IDE2NFxuICoq
IG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50
LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNv
dXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBp
biB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3Vy
Y2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUg
Zm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICov
XG5cbid1c2Ugc3RyaWN0JztcblxudmFyIEV2ZW50UHJvcGFnYXRvcnMgPSByZXF1aXJlKCcuL0V2
ZW50UHJvcGFnYXRvcnMnKTtcbnZhciBFeGVjdXRpb25FbnZpcm9ubWVudCA9IHJlcXVpcmUoJ2Zi
anMvbGliL0V4ZWN1dGlvbkVudmlyb25tZW50Jyk7XG52YXIgUmVhY3RET01Db21wb25lbnRUcmVl
ID0gcmVxdWlyZSgnLi9SZWFjdERPTUNvbXBvbmVudFRyZWUnKTtcbnZhciBSZWFjdElucHV0U2Vs
ZWN0aW9uID0gcmVxdWlyZSgnLi9SZWFjdElucHV0U2VsZWN0aW9uJyk7XG52YXIgU3ludGhldGlj
RXZlbnQgPSByZXF1aXJlKCcuL1N5bnRoZXRpY0V2ZW50Jyk7XG5cbnZhciBnZXRBY3RpdmVFbGVt
ZW50ID0gcmVxdWlyZSgnZmJqcy9saWIvZ2V0QWN0aXZlRWxlbWVudCcpO1xudmFyIGlzVGV4dElu
cHV0RWxlbWVudCA9IHJlcXVpcmUoJy4vaXNUZXh0SW5wdXRFbGVtZW50Jyk7XG52YXIgc2hhbGxv
d0VxdWFsID0gcmVxdWlyZSgnZmJqcy9saWIvc2hhbGxvd0VxdWFsJyk7XG5cbnZhciBza2lwU2Vs
ZWN0aW9uQ2hhbmdlRXZlbnQgPSBFeGVjdXRpb25FbnZpcm9ubWVudC5jYW5Vc2VET00gJiYgJ2Rv
Y3VtZW50TW9kZScgaW4gZG9jdW1lbnQgJiYgZG9jdW1lbnQuZG9jdW1lbnRNb2RlIDw9IDExO1xu
XG52YXIgZXZlbnRUeXBlcyA9IHtcbiAgc2VsZWN0OiB7XG4gICAgcGhhc2VkUmVnaXN0cmF0aW9u
TmFtZXM6IHtcbiAgICAgIGJ1YmJsZWQ6ICdvblNlbGVjdCcsXG4gICAgICBjYXB0dXJlZDogJ29u
U2VsZWN0Q2FwdHVyZSdcbiAgICB9LFxuICAgIGRlcGVuZGVuY2llczogWyd0b3BCbHVyJywgJ3Rv
cENvbnRleHRNZW51JywgJ3RvcEZvY3VzJywgJ3RvcEtleURvd24nLCAndG9wS2V5VXAnLCAndG9w
TW91c2VEb3duJywgJ3RvcE1vdXNlVXAnLCAndG9wU2VsZWN0aW9uQ2hhbmdlJ11cbiAgfVxufTtc
blxudmFyIGFjdGl2ZUVsZW1lbnQgPSBudWxsO1xudmFyIGFjdGl2ZUVsZW1lbnRJbnN0ID0gbnVs
bDtcbnZhciBsYXN0U2VsZWN0aW9uID0gbnVsbDtcbnZhciBtb3VzZURvd24gPSBmYWxzZTtcblxu
Ly8gVHJhY2sgd2hldGhlciBhIGxpc3RlbmVyIGV4aXN0cyBmb3IgdGhpcyBwbHVnaW4uIElmIG5v
bmUgZXhpc3QsIHdlIGRvXG4vLyBub3QgZXh0cmFjdCBldmVudHMuIFNlZSAjMzYzOS5cbnZhciBo
YXNMaXN0ZW5lciA9IGZhbHNlO1xuXG4vKipcbiAqIEdldCBhbiBvYmplY3Qgd2hpY2ggaXMgYSB1
bmlxdWUgcmVwcmVzZW50YXRpb24gb2YgdGhlIGN1cnJlbnQgc2VsZWN0aW9uLlxuICpcbiAqIFRo
ZSByZXR1cm4gdmFsdWUgd2lsbCBub3QgYmUgY29uc2lzdGVudCBhY3Jvc3Mgbm9kZXMgb3IgYnJv
d3NlcnMsIGJ1dFxuICogdHdvIGlkZW50aWNhbCBzZWxlY3Rpb25zIG9uIHRoZSBzYW1lIG5vZGUg
d2lsbCByZXR1cm4gaWRlbnRpY2FsIG9iamVjdHMuXG4gKlxuICogQHBhcmFtIHtET01FbGVtZW50
fSBub2RlXG4gKiBAcmV0dXJuIHtvYmplY3R9XG4gKi9cbmZ1bmN0aW9uIGdldFNlbGVjdGlvbihu
b2RlKSB7XG4gIGlmICgnc2VsZWN0aW9uU3RhcnQnIGluIG5vZGUgJiYgUmVhY3RJbnB1dFNlbGVj
dGlvbi5oYXNTZWxlY3Rpb25DYXBhYmlsaXRpZXMobm9kZSkpIHtcbiAgICByZXR1cm4ge1xuICAg
ICAgc3RhcnQ6IG5vZGUuc2VsZWN0aW9uU3RhcnQsXG4gICAgICBlbmQ6IG5vZGUuc2VsZWN0aW9u
RW5kXG4gICAgfTtcbiAgfSBlbHNlIGlmICh3aW5kb3cuZ2V0U2VsZWN0aW9uKSB7XG4gICAgdmFy
IHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTtcbiAgICByZXR1cm4ge1xuICAgICAg
YW5jaG9yTm9kZTogc2VsZWN0aW9uLmFuY2hvck5vZGUsXG4gICAgICBhbmNob3JPZmZzZXQ6IHNl
bGVjdGlvbi5hbmNob3JPZmZzZXQsXG4gICAgICBmb2N1c05vZGU6IHNlbGVjdGlvbi5mb2N1c05v
ZGUsXG4gICAgICBmb2N1c09mZnNldDogc2VsZWN0aW9uLmZvY3VzT2Zmc2V0XG4gICAgfTtcbiAg
fSBlbHNlIGlmIChkb2N1bWVudC5zZWxlY3Rpb24pIHtcbiAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5zZWxlY3Rpb24uY3JlYXRlUmFuZ2UoKTtcbiAgICByZXR1cm4ge1xuICAgICAgcGFyZW50RWxl
bWVudDogcmFuZ2UucGFyZW50RWxlbWVudCgpLFxuICAgICAgdGV4dDogcmFuZ2UudGV4dCxcbiAg
ICAgIHRvcDogcmFuZ2UuYm91bmRpbmdUb3AsXG4gICAgICBsZWZ0OiByYW5nZS5ib3VuZGluZ0xl
ZnRcbiAgICB9O1xuICB9XG59XG5cbi8qKlxuICogUG9sbCBzZWxlY3Rpb24gdG8gc2VlIHdoZXRo
ZXIgaXQncyBjaGFuZ2VkLlxuICpcbiAqIEBwYXJhbSB7b2JqZWN0fSBuYXRpdmVFdmVudFxuICog
QHJldHVybiB7P1N5bnRoZXRpY0V2ZW50fVxuICovXG5mdW5jdGlvbiBjb25zdHJ1Y3RTZWxlY3RF
dmVudChuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpIHtcbiAgLy8gRW5zdXJlIHdlIGhh
dmUgdGhlIHJpZ2h0IGVsZW1lbnQsIGFuZCB0aGF0IHRoZSB1c2VyIGlzIG5vdCBkcmFnZ2luZyBh
XG4gIC8vIHNlbGVjdGlvbiAodGhpcyBtYXRjaGVzIG5hdGl2ZSBgc2VsZWN0YCBldmVudCBiZWhh
dmlvcikuIEluIEhUTUw1LCBzZWxlY3RcbiAgLy8gZmlyZXMgb25seSBvbiBpbnB1dCBhbmQgdGV4
dGFyZWEgdGh1cyBpZiB0aGVyZSdzIG5vIGZvY3VzZWQgZWxlbWVudCB3ZVxuICAvLyB3b24ndCBk
aXNwYXRjaC5cbiAgaWYgKG1vdXNlRG93biB8fCBhY3RpdmVFbGVtZW50ID09IG51bGwgfHwgYWN0
aXZlRWxlbWVudCAhPT0gZ2V0QWN0aXZlRWxlbWVudCgpKSB7XG4gICAgcmV0dXJuIG51bGw7XG4g
IH1cblxuICAvLyBPbmx5IGZpcmUgd2hlbiBzZWxlY3Rpb24gaGFzIGFjdHVhbGx5IGNoYW5nZWQu
XG4gIHZhciBjdXJyZW50U2VsZWN0aW9uID0gZ2V0U2VsZWN0aW9uKGFjdGl2ZUVsZW1lbnQpO1xu
ICBpZiAoIWxhc3RTZWxlY3Rpb24gfHwgIXNoYWxsb3dFcXVhbChsYXN0U2VsZWN0aW9uLCBjdXJy
ZW50U2VsZWN0aW9uKSkge1xuICAgIGxhc3RTZWxlY3Rpb24gPSBjdXJyZW50U2VsZWN0aW9uO1xu
XG4gICAgdmFyIHN5bnRoZXRpY0V2ZW50ID0gU3ludGhldGljRXZlbnQuZ2V0UG9vbGVkKGV2ZW50
VHlwZXMuc2VsZWN0LCBhY3RpdmVFbGVtZW50SW5zdCwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50
VGFyZ2V0KTtcblxuICAgIHN5bnRoZXRpY0V2ZW50LnR5cGUgPSAnc2VsZWN0JztcbiAgICBzeW50
aGV0aWNFdmVudC50YXJnZXQgPSBhY3RpdmVFbGVtZW50O1xuXG4gICAgRXZlbnRQcm9wYWdhdG9y
cy5hY2N1bXVsYXRlVHdvUGhhc2VEaXNwYXRjaGVzKHN5bnRoZXRpY0V2ZW50KTtcblxuICAgIHJl
dHVybiBzeW50aGV0aWNFdmVudDtcbiAgfVxuXG4gIHJldHVybiBudWxsO1xufVxuXG4vKipcbiAq
IFRoaXMgcGx1Z2luIGNyZWF0ZXMgYW4gYG9uU2VsZWN0YCBldmVudCB0aGF0IG5vcm1hbGl6ZXMg
c2VsZWN0IGV2ZW50c1xuICogYWNyb3NzIGZvcm0gZWxlbWVudHMuXG4gKlxuICogU3VwcG9ydGVk
IGVsZW1lbnRzIGFyZTpcbiAqIC0gaW5wdXQgKHNlZSBgaXNUZXh0SW5wdXRFbGVtZW50YClcbiAq
IC0gdGV4dGFyZWFcbiAqIC0gY29udGVudEVkaXRhYmxlXG4gKlxuICogVGhpcyBkaWZmZXJzIGZy
b20gbmF0aXZlIGJyb3dzZXIgaW1wbGVtZW50YXRpb25zIGluIHRoZSBmb2xsb3dpbmcgd2F5czpc
biAqIC0gRmlyZXMgb24gY29udGVudEVkaXRhYmxlIGZpZWxkcyBhcyB3ZWxsIGFzIGlucHV0cy5c
biAqIC0gRmlyZXMgZm9yIGNvbGxhcHNlZCBzZWxlY3Rpb24uXG4gKiAtIEZpcmVzIGFmdGVyIHVz
ZXIgaW5wdXQuXG4gKi9cbnZhciBTZWxlY3RFdmVudFBsdWdpbiA9IHtcbiAgZXZlbnRUeXBlczog
ZXZlbnRUeXBlcyxcblxuICBleHRyYWN0RXZlbnRzOiBmdW5jdGlvbiAodG9wTGV2ZWxUeXBlLCB0
YXJnZXRJbnN0LCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpIHtcbiAgICBpZiAoIWhh
c0xpc3RlbmVyKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICB2YXIgdGFyZ2V0
Tm9kZSA9IHRhcmdldEluc3QgPyBSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0Tm9kZUZyb21JbnN0
YW5jZSh0YXJnZXRJbnN0KSA6IHdpbmRvdztcblxuICAgIHN3aXRjaCAodG9wTGV2ZWxUeXBlKSB7
XG4gICAgICAvLyBUcmFjayB0aGUgaW5wdXQgbm9kZSB0aGF0IGhhcyBmb2N1cy5cbiAgICAgIGNh
c2UgJ3RvcEZvY3VzJzpcbiAgICAgICAgaWYgKGlzVGV4dElucHV0RWxlbWVudCh0YXJnZXROb2Rl
KSB8fCB0YXJnZXROb2RlLmNvbnRlbnRFZGl0YWJsZSA9PT0gJ3RydWUnKSB7XG4gICAgICAgICAg
YWN0aXZlRWxlbWVudCA9IHRhcmdldE5vZGU7XG4gICAgICAgICAgYWN0aXZlRWxlbWVudEluc3Qg
PSB0YXJnZXRJbnN0O1xuICAgICAgICAgIGxhc3RTZWxlY3Rpb24gPSBudWxsO1xuICAgICAgICB9
XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAndG9wQmx1cic6XG4gICAgICAgIGFjdGl2ZUVs
ZW1lbnQgPSBudWxsO1xuICAgICAgICBhY3RpdmVFbGVtZW50SW5zdCA9IG51bGw7XG4gICAgICAg
IGxhc3RTZWxlY3Rpb24gPSBudWxsO1xuICAgICAgICBicmVhaztcbiAgICAgIC8vIERvbid0IGZp
cmUgdGhlIGV2ZW50IHdoaWxlIHRoZSB1c2VyIGlzIGRyYWdnaW5nLiBUaGlzIG1hdGNoZXMgdGhl
XG4gICAgICAvLyBzZW1hbnRpY3Mgb2YgdGhlIG5hdGl2ZSBzZWxlY3QgZXZlbnQuXG4gICAgICBj
YXNlICd0b3BNb3VzZURvd24nOlxuICAgICAgICBtb3VzZURvd24gPSB0cnVlO1xuICAgICAgICBi
cmVhaztcbiAgICAgIGNhc2UgJ3RvcENvbnRleHRNZW51JzpcbiAgICAgIGNhc2UgJ3RvcE1vdXNl
VXAnOlxuICAgICAgICBtb3VzZURvd24gPSBmYWxzZTtcbiAgICAgICAgcmV0dXJuIGNvbnN0cnVj
dFNlbGVjdEV2ZW50KG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCk7XG4gICAgICAvLyBD
aHJvbWUgYW5kIElFIGZpcmUgbm9uLXN0YW5kYXJkIGV2ZW50IHdoZW4gc2VsZWN0aW9uIGlzIGNo
YW5nZWQgKGFuZFxuICAgICAgLy8gc29tZXRpbWVzIHdoZW4gaXQgaGFzbid0KS4gSUUncyBldmVu
dCBmaXJlcyBvdXQgb2Ygb3JkZXIgd2l0aCByZXNwZWN0XG4gICAgICAvLyB0byBrZXkgYW5kIGlu
cHV0IGV2ZW50cyBvbiBkZWxldGlvbiwgc28gd2UgZGlzY2FyZCBpdC5cbiAgICAgIC8vXG4gICAg
ICAvLyBGaXJlZm94IGRvZXNuJ3Qgc3VwcG9ydCBzZWxlY3Rpb25jaGFuZ2UsIHNvIGNoZWNrIHNl
bGVjdGlvbiBzdGF0dXNcbiAgICAgIC8vIGFmdGVyIGVhY2gga2V5IGVudHJ5LiBUaGUgc2VsZWN0
aW9uIGNoYW5nZXMgYWZ0ZXIga2V5ZG93biBhbmQgYmVmb3JlXG4gICAgICAvLyBrZXl1cCwgYnV0
IHdlIGNoZWNrIG9uIGtleWRvd24gYXMgd2VsbCBpbiB0aGUgY2FzZSBvZiBob2xkaW5nIGRvd24g
YVxuICAgICAgLy8ga2V5LCB3aGVuIG11bHRpcGxlIGtleWRvd24gZXZlbnRzIGFyZSBmaXJlZCBi
dXQgb25seSBvbmUga2V5dXAgaXMuXG4gICAgICAvLyBUaGlzIGlzIGFsc28gb3VyIGFwcHJvYWNo
IGZvciBJRSBoYW5kbGluZywgZm9yIHRoZSByZWFzb24gYWJvdmUuXG4gICAgICBjYXNlICd0b3BT
ZWxlY3Rpb25DaGFuZ2UnOlxuICAgICAgICBpZiAoc2tpcFNlbGVjdGlvbkNoYW5nZUV2ZW50KSB7
XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIC8vIGZhbGxzIHRocm91Z2hcbiAg
ICAgIGNhc2UgJ3RvcEtleURvd24nOlxuICAgICAgY2FzZSAndG9wS2V5VXAnOlxuICAgICAgICBy
ZXR1cm4gY29uc3RydWN0U2VsZWN0RXZlbnQobmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0
KTtcbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfSxcblxuICBkaWRQdXRMaXN0ZW5lcjog
ZnVuY3Rpb24gKGluc3QsIHJlZ2lzdHJhdGlvbk5hbWUsIGxpc3RlbmVyKSB7XG4gICAgaWYgKHJl
Z2lzdHJhdGlvbk5hbWUgPT09ICdvblNlbGVjdCcpIHtcbiAgICAgIGhhc0xpc3RlbmVyID0gdHJ1
ZTtcbiAgICB9XG4gIH1cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gU2VsZWN0RXZlbnRQbHVnaW47
XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVh
Y3QtZG9tL2xpYi9TZWxlY3RFdmVudFBsdWdpbi5qc1xuICoqIG1vZHVsZSBpZCA9IDE2NVxuICoq
IG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50
LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNv
dXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBp
biB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3Vy
Y2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUg
Zm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICog
XG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgX3Byb2RJbnZhcmlhbnQgPSByZXF1aXJlKCcu
L3JlYWN0UHJvZEludmFyaWFudCcpO1xuXG52YXIgRXZlbnRMaXN0ZW5lciA9IHJlcXVpcmUoJ2Zi
anMvbGliL0V2ZW50TGlzdGVuZXInKTtcbnZhciBFdmVudFByb3BhZ2F0b3JzID0gcmVxdWlyZSgn
Li9FdmVudFByb3BhZ2F0b3JzJyk7XG52YXIgUmVhY3RET01Db21wb25lbnRUcmVlID0gcmVxdWly
ZSgnLi9SZWFjdERPTUNvbXBvbmVudFRyZWUnKTtcbnZhciBTeW50aGV0aWNBbmltYXRpb25FdmVu
dCA9IHJlcXVpcmUoJy4vU3ludGhldGljQW5pbWF0aW9uRXZlbnQnKTtcbnZhciBTeW50aGV0aWND
bGlwYm9hcmRFdmVudCA9IHJlcXVpcmUoJy4vU3ludGhldGljQ2xpcGJvYXJkRXZlbnQnKTtcbnZh
ciBTeW50aGV0aWNFdmVudCA9IHJlcXVpcmUoJy4vU3ludGhldGljRXZlbnQnKTtcbnZhciBTeW50
aGV0aWNGb2N1c0V2ZW50ID0gcmVxdWlyZSgnLi9TeW50aGV0aWNGb2N1c0V2ZW50Jyk7XG52YXIg
U3ludGhldGljS2V5Ym9hcmRFdmVudCA9IHJlcXVpcmUoJy4vU3ludGhldGljS2V5Ym9hcmRFdmVu
dCcpO1xudmFyIFN5bnRoZXRpY01vdXNlRXZlbnQgPSByZXF1aXJlKCcuL1N5bnRoZXRpY01vdXNl
RXZlbnQnKTtcbnZhciBTeW50aGV0aWNEcmFnRXZlbnQgPSByZXF1aXJlKCcuL1N5bnRoZXRpY0Ry
YWdFdmVudCcpO1xudmFyIFN5bnRoZXRpY1RvdWNoRXZlbnQgPSByZXF1aXJlKCcuL1N5bnRoZXRp
Y1RvdWNoRXZlbnQnKTtcbnZhciBTeW50aGV0aWNUcmFuc2l0aW9uRXZlbnQgPSByZXF1aXJlKCcu
L1N5bnRoZXRpY1RyYW5zaXRpb25FdmVudCcpO1xudmFyIFN5bnRoZXRpY1VJRXZlbnQgPSByZXF1
aXJlKCcuL1N5bnRoZXRpY1VJRXZlbnQnKTtcbnZhciBTeW50aGV0aWNXaGVlbEV2ZW50ID0gcmVx
dWlyZSgnLi9TeW50aGV0aWNXaGVlbEV2ZW50Jyk7XG5cbnZhciBlbXB0eUZ1bmN0aW9uID0gcmVx
dWlyZSgnZmJqcy9saWIvZW1wdHlGdW5jdGlvbicpO1xudmFyIGdldEV2ZW50Q2hhckNvZGUgPSBy
ZXF1aXJlKCcuL2dldEV2ZW50Q2hhckNvZGUnKTtcbnZhciBpbnZhcmlhbnQgPSByZXF1aXJlKCdm
YmpzL2xpYi9pbnZhcmlhbnQnKTtcblxuLyoqXG4gKiBUdXJuc1xuICogWydhYm9ydCcsIC4uLl1c
biAqIGludG9cbiAqIGV2ZW50VHlwZXMgPSB7XG4gKiAgICdhYm9ydCc6IHtcbiAqICAgICBwaGFz
ZWRSZWdpc3RyYXRpb25OYW1lczoge1xuICogICAgICAgYnViYmxlZDogJ29uQWJvcnQnLFxuICog
ICAgICAgY2FwdHVyZWQ6ICdvbkFib3J0Q2FwdHVyZScsXG4gKiAgICAgfSxcbiAqICAgICBkZXBl
bmRlbmNpZXM6IFsndG9wQWJvcnQnXSxcbiAqICAgfSxcbiAqICAgLi4uXG4gKiB9O1xuICogdG9w
TGV2ZWxFdmVudHNUb0Rpc3BhdGNoQ29uZmlnID0ge1xuICogICAndG9wQWJvcnQnOiB7IHNhbWVD
b25maWcgfVxuICogfTtcbiAqL1xudmFyIGV2ZW50VHlwZXMgPSB7fTtcbnZhciB0b3BMZXZlbEV2
ZW50c1RvRGlzcGF0Y2hDb25maWcgPSB7fTtcblsnYWJvcnQnLCAnYW5pbWF0aW9uRW5kJywgJ2Fu
aW1hdGlvbkl0ZXJhdGlvbicsICdhbmltYXRpb25TdGFydCcsICdibHVyJywgJ2NhblBsYXknLCAn
Y2FuUGxheVRocm91Z2gnLCAnY2xpY2snLCAnY29udGV4dE1lbnUnLCAnY29weScsICdjdXQnLCAn
ZG91YmxlQ2xpY2snLCAnZHJhZycsICdkcmFnRW5kJywgJ2RyYWdFbnRlcicsICdkcmFnRXhpdCcs
ICdkcmFnTGVhdmUnLCAnZHJhZ092ZXInLCAnZHJhZ1N0YXJ0JywgJ2Ryb3AnLCAnZHVyYXRpb25D
aGFuZ2UnLCAnZW1wdGllZCcsICdlbmNyeXB0ZWQnLCAnZW5kZWQnLCAnZXJyb3InLCAnZm9jdXMn
LCAnaW5wdXQnLCAnaW52YWxpZCcsICdrZXlEb3duJywgJ2tleVByZXNzJywgJ2tleVVwJywgJ2xv
YWQnLCAnbG9hZGVkRGF0YScsICdsb2FkZWRNZXRhZGF0YScsICdsb2FkU3RhcnQnLCAnbW91c2VE
b3duJywgJ21vdXNlTW92ZScsICdtb3VzZU91dCcsICdtb3VzZU92ZXInLCAnbW91c2VVcCcsICdw
YXN0ZScsICdwYXVzZScsICdwbGF5JywgJ3BsYXlpbmcnLCAncHJvZ3Jlc3MnLCAncmF0ZUNoYW5n
ZScsICdyZXNldCcsICdzY3JvbGwnLCAnc2Vla2VkJywgJ3NlZWtpbmcnLCAnc3RhbGxlZCcsICdz
dWJtaXQnLCAnc3VzcGVuZCcsICd0aW1lVXBkYXRlJywgJ3RvdWNoQ2FuY2VsJywgJ3RvdWNoRW5k
JywgJ3RvdWNoTW92ZScsICd0b3VjaFN0YXJ0JywgJ3RyYW5zaXRpb25FbmQnLCAndm9sdW1lQ2hh
bmdlJywgJ3dhaXRpbmcnLCAnd2hlZWwnXS5mb3JFYWNoKGZ1bmN0aW9uIChldmVudCkge1xuICB2
YXIgY2FwaXRhbGl6ZWRFdmVudCA9IGV2ZW50WzBdLnRvVXBwZXJDYXNlKCkgKyBldmVudC5zbGlj
ZSgxKTtcbiAgdmFyIG9uRXZlbnQgPSAnb24nICsgY2FwaXRhbGl6ZWRFdmVudDtcbiAgdmFyIHRv
cEV2ZW50ID0gJ3RvcCcgKyBjYXBpdGFsaXplZEV2ZW50O1xuXG4gIHZhciB0eXBlID0ge1xuICAg
IHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOiB7XG4gICAgICBidWJibGVkOiBvbkV2ZW50LFxuICAg
ICAgY2FwdHVyZWQ6IG9uRXZlbnQgKyAnQ2FwdHVyZSdcbiAgICB9LFxuICAgIGRlcGVuZGVuY2ll
czogW3RvcEV2ZW50XVxuICB9O1xuICBldmVudFR5cGVzW2V2ZW50XSA9IHR5cGU7XG4gIHRvcExl
dmVsRXZlbnRzVG9EaXNwYXRjaENvbmZpZ1t0b3BFdmVudF0gPSB0eXBlO1xufSk7XG5cbnZhciBv
bkNsaWNrTGlzdGVuZXJzID0ge307XG5cbmZ1bmN0aW9uIGdldERpY3Rpb25hcnlLZXkoaW5zdCkg
e1xuICAvLyBQcmV2ZW50cyBWOCBwZXJmb3JtYW5jZSBpc3N1ZTpcbiAgLy8gaHR0cHM6Ly9naXRo
dWIuY29tL2ZhY2Vib29rL3JlYWN0L3B1bGwvNzIzMlxuICByZXR1cm4gJy4nICsgaW5zdC5fcm9v
dE5vZGVJRDtcbn1cblxuZnVuY3Rpb24gaXNJbnRlcmFjdGl2ZSh0YWcpIHtcbiAgcmV0dXJuIHRh
ZyA9PT0gJ2J1dHRvbicgfHwgdGFnID09PSAnaW5wdXQnIHx8IHRhZyA9PT0gJ3NlbGVjdCcgfHwg
dGFnID09PSAndGV4dGFyZWEnO1xufVxuXG52YXIgU2ltcGxlRXZlbnRQbHVnaW4gPSB7XG4gIGV2
ZW50VHlwZXM6IGV2ZW50VHlwZXMsXG5cbiAgZXh0cmFjdEV2ZW50czogZnVuY3Rpb24gKHRvcExl
dmVsVHlwZSwgdGFyZ2V0SW5zdCwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KSB7XG4g
ICAgdmFyIGRpc3BhdGNoQ29uZmlnID0gdG9wTGV2ZWxFdmVudHNUb0Rpc3BhdGNoQ29uZmlnW3Rv
cExldmVsVHlwZV07XG4gICAgaWYgKCFkaXNwYXRjaENvbmZpZykge1xuICAgICAgcmV0dXJuIG51
bGw7XG4gICAgfVxuICAgIHZhciBFdmVudENvbnN0cnVjdG9yO1xuICAgIHN3aXRjaCAodG9wTGV2
ZWxUeXBlKSB7XG4gICAgICBjYXNlICd0b3BBYm9ydCc6XG4gICAgICBjYXNlICd0b3BDYW5QbGF5
JzpcbiAgICAgIGNhc2UgJ3RvcENhblBsYXlUaHJvdWdoJzpcbiAgICAgIGNhc2UgJ3RvcER1cmF0
aW9uQ2hhbmdlJzpcbiAgICAgIGNhc2UgJ3RvcEVtcHRpZWQnOlxuICAgICAgY2FzZSAndG9wRW5j
cnlwdGVkJzpcbiAgICAgIGNhc2UgJ3RvcEVuZGVkJzpcbiAgICAgIGNhc2UgJ3RvcEVycm9yJzpc
biAgICAgIGNhc2UgJ3RvcElucHV0JzpcbiAgICAgIGNhc2UgJ3RvcEludmFsaWQnOlxuICAgICAg
Y2FzZSAndG9wTG9hZCc6XG4gICAgICBjYXNlICd0b3BMb2FkZWREYXRhJzpcbiAgICAgIGNhc2Ug
J3RvcExvYWRlZE1ldGFkYXRhJzpcbiAgICAgIGNhc2UgJ3RvcExvYWRTdGFydCc6XG4gICAgICBj
YXNlICd0b3BQYXVzZSc6XG4gICAgICBjYXNlICd0b3BQbGF5JzpcbiAgICAgIGNhc2UgJ3RvcFBs
YXlpbmcnOlxuICAgICAgY2FzZSAndG9wUHJvZ3Jlc3MnOlxuICAgICAgY2FzZSAndG9wUmF0ZUNo
YW5nZSc6XG4gICAgICBjYXNlICd0b3BSZXNldCc6XG4gICAgICBjYXNlICd0b3BTZWVrZWQnOlxu
ICAgICAgY2FzZSAndG9wU2Vla2luZyc6XG4gICAgICBjYXNlICd0b3BTdGFsbGVkJzpcbiAgICAg
IGNhc2UgJ3RvcFN1Ym1pdCc6XG4gICAgICBjYXNlICd0b3BTdXNwZW5kJzpcbiAgICAgIGNhc2Ug
J3RvcFRpbWVVcGRhdGUnOlxuICAgICAgY2FzZSAndG9wVm9sdW1lQ2hhbmdlJzpcbiAgICAgIGNh
c2UgJ3RvcFdhaXRpbmcnOlxuICAgICAgICAvLyBIVE1MIEV2ZW50c1xuICAgICAgICAvLyBAc2Vl
IGh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw1L2luZGV4Lmh0bWwjZXZlbnRzLTBcbiAgICAgICAg
RXZlbnRDb25zdHJ1Y3RvciA9IFN5bnRoZXRpY0V2ZW50O1xuICAgICAgICBicmVhaztcbiAgICAg
IGNhc2UgJ3RvcEtleVByZXNzJzpcbiAgICAgICAgLy8gRmlyZWZveCBjcmVhdGVzIGEga2V5cHJl
c3MgZXZlbnQgZm9yIGZ1bmN0aW9uIGtleXMgdG9vLiBUaGlzIHJlbW92ZXNcbiAgICAgICAgLy8g
dGhlIHVud2FudGVkIGtleXByZXNzIGV2ZW50cy4gRW50ZXIgaXMgaG93ZXZlciBib3RoIHByaW50
YWJsZSBhbmRcbiAgICAgICAgLy8gbm9uLXByaW50YWJsZS4gT25lIHdvdWxkIGV4cGVjdCBUYWIg
dG8gYmUgYXMgd2VsbCAoYnV0IGl0IGlzbid0KS5cbiAgICAgICAgaWYgKGdldEV2ZW50Q2hhckNv
ZGUobmF0aXZlRXZlbnQpID09PSAwKSB7XG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAg
IH1cbiAgICAgIC8qIGZhbGxzIHRocm91Z2ggKi9cbiAgICAgIGNhc2UgJ3RvcEtleURvd24nOlxu
ICAgICAgY2FzZSAndG9wS2V5VXAnOlxuICAgICAgICBFdmVudENvbnN0cnVjdG9yID0gU3ludGhl
dGljS2V5Ym9hcmRFdmVudDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICd0b3BCbHVyJzpc
biAgICAgIGNhc2UgJ3RvcEZvY3VzJzpcbiAgICAgICAgRXZlbnRDb25zdHJ1Y3RvciA9IFN5bnRo
ZXRpY0ZvY3VzRXZlbnQ7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAndG9wQ2xpY2snOlxu
ICAgICAgICAvLyBGaXJlZm94IGNyZWF0ZXMgYSBjbGljayBldmVudCBvbiByaWdodCBtb3VzZSBj
bGlja3MuIFRoaXMgcmVtb3ZlcyB0aGVcbiAgICAgICAgLy8gdW53YW50ZWQgY2xpY2sgZXZlbnRz
LlxuICAgICAgICBpZiAobmF0aXZlRXZlbnQuYnV0dG9uID09PSAyKSB7XG4gICAgICAgICAgcmV0
dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgIC8qIGZhbGxzIHRocm91Z2ggKi9cbiAgICAgIGNh
c2UgJ3RvcERvdWJsZUNsaWNrJzpcbiAgICAgIGNhc2UgJ3RvcE1vdXNlRG93bic6XG4gICAgICBj
YXNlICd0b3BNb3VzZU1vdmUnOlxuICAgICAgY2FzZSAndG9wTW91c2VVcCc6XG4gICAgICAvLyBU
T0RPOiBEaXNhYmxlZCBlbGVtZW50cyBzaG91bGQgbm90IHJlc3BvbmQgdG8gbW91c2UgZXZlbnRz
XG4gICAgICAvKiBmYWxscyB0aHJvdWdoICovXG4gICAgICBjYXNlICd0b3BNb3VzZU91dCc6XG4g
ICAgICBjYXNlICd0b3BNb3VzZU92ZXInOlxuICAgICAgY2FzZSAndG9wQ29udGV4dE1lbnUnOlxu
ICAgICAgICBFdmVudENvbnN0cnVjdG9yID0gU3ludGhldGljTW91c2VFdmVudDtcbiAgICAgICAg
YnJlYWs7XG4gICAgICBjYXNlICd0b3BEcmFnJzpcbiAgICAgIGNhc2UgJ3RvcERyYWdFbmQnOlxu
ICAgICAgY2FzZSAndG9wRHJhZ0VudGVyJzpcbiAgICAgIGNhc2UgJ3RvcERyYWdFeGl0JzpcbiAg
ICAgIGNhc2UgJ3RvcERyYWdMZWF2ZSc6XG4gICAgICBjYXNlICd0b3BEcmFnT3Zlcic6XG4gICAg
ICBjYXNlICd0b3BEcmFnU3RhcnQnOlxuICAgICAgY2FzZSAndG9wRHJvcCc6XG4gICAgICAgIEV2
ZW50Q29uc3RydWN0b3IgPSBTeW50aGV0aWNEcmFnRXZlbnQ7XG4gICAgICAgIGJyZWFrO1xuICAg
ICAgY2FzZSAndG9wVG91Y2hDYW5jZWwnOlxuICAgICAgY2FzZSAndG9wVG91Y2hFbmQnOlxuICAg
ICAgY2FzZSAndG9wVG91Y2hNb3ZlJzpcbiAgICAgIGNhc2UgJ3RvcFRvdWNoU3RhcnQnOlxuICAg
ICAgICBFdmVudENvbnN0cnVjdG9yID0gU3ludGhldGljVG91Y2hFdmVudDtcbiAgICAgICAgYnJl
YWs7XG4gICAgICBjYXNlICd0b3BBbmltYXRpb25FbmQnOlxuICAgICAgY2FzZSAndG9wQW5pbWF0
aW9uSXRlcmF0aW9uJzpcbiAgICAgIGNhc2UgJ3RvcEFuaW1hdGlvblN0YXJ0JzpcbiAgICAgICAg
RXZlbnRDb25zdHJ1Y3RvciA9IFN5bnRoZXRpY0FuaW1hdGlvbkV2ZW50O1xuICAgICAgICBicmVh
aztcbiAgICAgIGNhc2UgJ3RvcFRyYW5zaXRpb25FbmQnOlxuICAgICAgICBFdmVudENvbnN0cnVj
dG9yID0gU3ludGhldGljVHJhbnNpdGlvbkV2ZW50O1xuICAgICAgICBicmVhaztcbiAgICAgIGNh
c2UgJ3RvcFNjcm9sbCc6XG4gICAgICAgIEV2ZW50Q29uc3RydWN0b3IgPSBTeW50aGV0aWNVSUV2
ZW50O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3RvcFdoZWVsJzpcbiAgICAgICAgRXZl
bnRDb25zdHJ1Y3RvciA9IFN5bnRoZXRpY1doZWVsRXZlbnQ7XG4gICAgICAgIGJyZWFrO1xuICAg
ICAgY2FzZSAndG9wQ29weSc6XG4gICAgICBjYXNlICd0b3BDdXQnOlxuICAgICAgY2FzZSAndG9w
UGFzdGUnOlxuICAgICAgICBFdmVudENvbnN0cnVjdG9yID0gU3ludGhldGljQ2xpcGJvYXJkRXZl
bnQ7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICAhRXZlbnRDb25zdHJ1Y3RvciA/IHByb2Nl
c3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdTaW1w
bGVFdmVudFBsdWdpbjogVW5oYW5kbGVkIGV2ZW50IHR5cGUsIGAlc2AuJywgdG9wTGV2ZWxUeXBl
KSA6IF9wcm9kSW52YXJpYW50KCc4NicsIHRvcExldmVsVHlwZSkgOiB2b2lkIDA7XG4gICAgdmFy
IGV2ZW50ID0gRXZlbnRDb25zdHJ1Y3Rvci5nZXRQb29sZWQoZGlzcGF0Y2hDb25maWcsIHRhcmdl
dEluc3QsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCk7XG4gICAgRXZlbnRQcm9wYWdh
dG9ycy5hY2N1bXVsYXRlVHdvUGhhc2VEaXNwYXRjaGVzKGV2ZW50KTtcbiAgICByZXR1cm4gZXZl
bnQ7XG4gIH0sXG5cbiAgZGlkUHV0TGlzdGVuZXI6IGZ1bmN0aW9uIChpbnN0LCByZWdpc3RyYXRp
b25OYW1lLCBsaXN0ZW5lcikge1xuICAgIC8vIE1vYmlsZSBTYWZhcmkgZG9lcyBub3QgZmlyZSBw
cm9wZXJseSBidWJibGUgY2xpY2sgZXZlbnRzIG9uXG4gICAgLy8gbm9uLWludGVyYWN0aXZlIGVs
ZW1lbnRzLCB3aGljaCBtZWFucyBkZWxlZ2F0ZWQgY2xpY2sgbGlzdGVuZXJzIGRvIG5vdFxuICAg
IC8vIGZpcmUuIFRoZSB3b3JrYXJvdW5kIGZvciB0aGlzIGJ1ZyBpbnZvbHZlcyBhdHRhY2hpbmcg
YW4gZW1wdHkgY2xpY2tcbiAgICAvLyBsaXN0ZW5lciBvbiB0aGUgdGFyZ2V0IG5vZGUuXG4gICAg
Ly8gaHR0cDovL3d3dy5xdWlya3Ntb2RlLm9yZy9ibG9nL2FyY2hpdmVzLzIwMTAvMDkvY2xpY2tf
ZXZlbnRfZGVsLmh0bWxcbiAgICBpZiAocmVnaXN0cmF0aW9uTmFtZSA9PT0gJ29uQ2xpY2snICYm
ICFpc0ludGVyYWN0aXZlKGluc3QuX3RhZykpIHtcbiAgICAgIHZhciBrZXkgPSBnZXREaWN0aW9u
YXJ5S2V5KGluc3QpO1xuICAgICAgdmFyIG5vZGUgPSBSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0
Tm9kZUZyb21JbnN0YW5jZShpbnN0KTtcbiAgICAgIGlmICghb25DbGlja0xpc3RlbmVyc1trZXld
KSB7XG4gICAgICAgIG9uQ2xpY2tMaXN0ZW5lcnNba2V5XSA9IEV2ZW50TGlzdGVuZXIubGlzdGVu
KG5vZGUsICdjbGljaycsIGVtcHR5RnVuY3Rpb24pO1xuICAgICAgfVxuICAgIH1cbiAgfSxcblxu
ICB3aWxsRGVsZXRlTGlzdGVuZXI6IGZ1bmN0aW9uIChpbnN0LCByZWdpc3RyYXRpb25OYW1lKSB7
XG4gICAgaWYgKHJlZ2lzdHJhdGlvbk5hbWUgPT09ICdvbkNsaWNrJyAmJiAhaXNJbnRlcmFjdGl2
ZShpbnN0Ll90YWcpKSB7XG4gICAgICB2YXIga2V5ID0gZ2V0RGljdGlvbmFyeUtleShpbnN0KTtc
biAgICAgIG9uQ2xpY2tMaXN0ZW5lcnNba2V5XS5yZW1vdmUoKTtcbiAgICAgIGRlbGV0ZSBvbkNs
aWNrTGlzdGVuZXJzW2tleV07XG4gICAgfVxuICB9XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFNp
bXBsZUV2ZW50UGx1Z2luO1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9P
VEVSXG4gKiogLi9+L3JlYWN0LWRvbS9saWIvU2ltcGxlRXZlbnRQbHVnaW4uanNcbiAqKiBtb2R1
bGUgaWQgPSAxNjZcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29weXJp
Z2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQu
XG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxl
IGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0
b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVu
dCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGly
ZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBTeW50aGV0aWNFdmVudCA9
IHJlcXVpcmUoJy4vU3ludGhldGljRXZlbnQnKTtcblxuLyoqXG4gKiBAaW50ZXJmYWNlIEV2ZW50
XG4gKiBAc2VlIGh0dHA6Ly93d3cudzMub3JnL1RSL2NzczMtYW5pbWF0aW9ucy8jQW5pbWF0aW9u
RXZlbnQtaW50ZXJmYWNlXG4gKiBAc2VlIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2Vu
LVVTL2RvY3MvV2ViL0FQSS9BbmltYXRpb25FdmVudFxuICovXG52YXIgQW5pbWF0aW9uRXZlbnRJ
bnRlcmZhY2UgPSB7XG4gIGFuaW1hdGlvbk5hbWU6IG51bGwsXG4gIGVsYXBzZWRUaW1lOiBudWxs
LFxuICBwc2V1ZG9FbGVtZW50OiBudWxsXG59O1xuXG4vKipcbiAqIEBwYXJhbSB7b2JqZWN0fSBk
aXNwYXRjaENvbmZpZyBDb25maWd1cmF0aW9uIHVzZWQgdG8gZGlzcGF0Y2ggdGhpcyBldmVudC5c
biAqIEBwYXJhbSB7c3RyaW5nfSBkaXNwYXRjaE1hcmtlciBNYXJrZXIgaWRlbnRpZnlpbmcgdGhl
IGV2ZW50IHRhcmdldC5cbiAqIEBwYXJhbSB7b2JqZWN0fSBuYXRpdmVFdmVudCBOYXRpdmUgYnJv
d3NlciBldmVudC5cbiAqIEBleHRlbmRzIHtTeW50aGV0aWNFdmVudH1cbiAqL1xuZnVuY3Rpb24g
U3ludGhldGljQW5pbWF0aW9uRXZlbnQoZGlzcGF0Y2hDb25maWcsIGRpc3BhdGNoTWFya2VyLCBu
YXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpIHtcbiAgcmV0dXJuIFN5bnRoZXRpY0V2ZW50
LmNhbGwodGhpcywgZGlzcGF0Y2hDb25maWcsIGRpc3BhdGNoTWFya2VyLCBuYXRpdmVFdmVudCwg
bmF0aXZlRXZlbnRUYXJnZXQpO1xufVxuXG5TeW50aGV0aWNFdmVudC5hdWdtZW50Q2xhc3MoU3lu
dGhldGljQW5pbWF0aW9uRXZlbnQsIEFuaW1hdGlvbkV2ZW50SW50ZXJmYWNlKTtcblxubW9kdWxl
LmV4cG9ydHMgPSBTeW50aGV0aWNBbmltYXRpb25FdmVudDtcblxuXG4vKioqKioqKioqKioqKioq
KipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFjdC1kb20vbGliL1N5bnRoZXRpY0Fu
aW1hdGlvbkV2ZW50LmpzXG4gKiogbW9kdWxlIGlkID0gMTY3XG4gKiogbW9kdWxlIGNodW5rcyA9
IDBcbiAqKi8iLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMu
XG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGlj
ZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5T
RSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRp
dGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFU
RU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJpY3Qn
O1xuXG52YXIgU3ludGhldGljRXZlbnQgPSByZXF1aXJlKCcuL1N5bnRoZXRpY0V2ZW50Jyk7XG5c
bi8qKlxuICogQGludGVyZmFjZSBFdmVudFxuICogQHNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi9j
bGlwYm9hcmQtYXBpcy9cbiAqL1xudmFyIENsaXBib2FyZEV2ZW50SW50ZXJmYWNlID0ge1xuICBj
bGlwYm9hcmREYXRhOiBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICByZXR1cm4gJ2NsaXBib2FyZERh
dGEnIGluIGV2ZW50ID8gZXZlbnQuY2xpcGJvYXJkRGF0YSA6IHdpbmRvdy5jbGlwYm9hcmREYXRh
O1xuICB9XG59O1xuXG4vKipcbiAqIEBwYXJhbSB7b2JqZWN0fSBkaXNwYXRjaENvbmZpZyBDb25m
aWd1cmF0aW9uIHVzZWQgdG8gZGlzcGF0Y2ggdGhpcyBldmVudC5cbiAqIEBwYXJhbSB7c3RyaW5n
fSBkaXNwYXRjaE1hcmtlciBNYXJrZXIgaWRlbnRpZnlpbmcgdGhlIGV2ZW50IHRhcmdldC5cbiAq
IEBwYXJhbSB7b2JqZWN0fSBuYXRpdmVFdmVudCBOYXRpdmUgYnJvd3NlciBldmVudC5cbiAqIEBl
eHRlbmRzIHtTeW50aGV0aWNVSUV2ZW50fVxuICovXG5mdW5jdGlvbiBTeW50aGV0aWNDbGlwYm9h
cmRFdmVudChkaXNwYXRjaENvbmZpZywgZGlzcGF0Y2hNYXJrZXIsIG5hdGl2ZUV2ZW50LCBuYXRp
dmVFdmVudFRhcmdldCkge1xuICByZXR1cm4gU3ludGhldGljRXZlbnQuY2FsbCh0aGlzLCBkaXNw
YXRjaENvbmZpZywgZGlzcGF0Y2hNYXJrZXIsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdl
dCk7XG59XG5cblN5bnRoZXRpY0V2ZW50LmF1Z21lbnRDbGFzcyhTeW50aGV0aWNDbGlwYm9hcmRF
dmVudCwgQ2xpcGJvYXJkRXZlbnRJbnRlcmZhY2UpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFN5bnRo
ZXRpY0NsaXBib2FyZEV2ZW50O1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sg
Rk9PVEVSXG4gKiogLi9+L3JlYWN0LWRvbS9saWIvU3ludGhldGljQ2xpcGJvYXJkRXZlbnQuanNc
biAqKiBtb2R1bGUgaWQgPSAxNjhcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxu
ICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMg
cmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUg
QlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJv
b3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAq
IG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhl
IHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBTeW50aGV0
aWNFdmVudCA9IHJlcXVpcmUoJy4vU3ludGhldGljRXZlbnQnKTtcblxuLyoqXG4gKiBAaW50ZXJm
YWNlIEV2ZW50XG4gKiBAc2VlIGh0dHA6Ly93d3cudzMub3JnL1RSL0RPTS1MZXZlbC0zLUV2ZW50
cy8jZXZlbnRzLWNvbXBvc2l0aW9uZXZlbnRzXG4gKi9cbnZhciBDb21wb3NpdGlvbkV2ZW50SW50
ZXJmYWNlID0ge1xuICBkYXRhOiBudWxsXG59O1xuXG4vKipcbiAqIEBwYXJhbSB7b2JqZWN0fSBk
aXNwYXRjaENvbmZpZyBDb25maWd1cmF0aW9uIHVzZWQgdG8gZGlzcGF0Y2ggdGhpcyBldmVudC5c
biAqIEBwYXJhbSB7c3RyaW5nfSBkaXNwYXRjaE1hcmtlciBNYXJrZXIgaWRlbnRpZnlpbmcgdGhl
IGV2ZW50IHRhcmdldC5cbiAqIEBwYXJhbSB7b2JqZWN0fSBuYXRpdmVFdmVudCBOYXRpdmUgYnJv
d3NlciBldmVudC5cbiAqIEBleHRlbmRzIHtTeW50aGV0aWNVSUV2ZW50fVxuICovXG5mdW5jdGlv
biBTeW50aGV0aWNDb21wb3NpdGlvbkV2ZW50KGRpc3BhdGNoQ29uZmlnLCBkaXNwYXRjaE1hcmtl
ciwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KSB7XG4gIHJldHVybiBTeW50aGV0aWNF
dmVudC5jYWxsKHRoaXMsIGRpc3BhdGNoQ29uZmlnLCBkaXNwYXRjaE1hcmtlciwgbmF0aXZlRXZl
bnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KTtcbn1cblxuU3ludGhldGljRXZlbnQuYXVnbWVudENsYXNz
KFN5bnRoZXRpY0NvbXBvc2l0aW9uRXZlbnQsIENvbXBvc2l0aW9uRXZlbnRJbnRlcmZhY2UpO1xu
XG5tb2R1bGUuZXhwb3J0cyA9IFN5bnRoZXRpY0NvbXBvc2l0aW9uRXZlbnQ7XG5cblxuLyoqKioq
KioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3QtZG9tL2xpYi9T
eW50aGV0aWNDb21wb3NpdGlvbkV2ZW50LmpzXG4gKiogbW9kdWxlIGlkID0gMTY5XG4gKiogbW9k
dWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZh
Y2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNl
IGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRo
ZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0
cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3Vu
ZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxu
J3VzZSBzdHJpY3QnO1xuXG52YXIgU3ludGhldGljTW91c2VFdmVudCA9IHJlcXVpcmUoJy4vU3lu
dGhldGljTW91c2VFdmVudCcpO1xuXG4vKipcbiAqIEBpbnRlcmZhY2UgRHJhZ0V2ZW50XG4gKiBA
c2VlIGh0dHA6Ly93d3cudzMub3JnL1RSL0RPTS1MZXZlbC0zLUV2ZW50cy9cbiAqL1xudmFyIERy
YWdFdmVudEludGVyZmFjZSA9IHtcbiAgZGF0YVRyYW5zZmVyOiBudWxsXG59O1xuXG4vKipcbiAq
IEBwYXJhbSB7b2JqZWN0fSBkaXNwYXRjaENvbmZpZyBDb25maWd1cmF0aW9uIHVzZWQgdG8gZGlz
cGF0Y2ggdGhpcyBldmVudC5cbiAqIEBwYXJhbSB7c3RyaW5nfSBkaXNwYXRjaE1hcmtlciBNYXJr
ZXIgaWRlbnRpZnlpbmcgdGhlIGV2ZW50IHRhcmdldC5cbiAqIEBwYXJhbSB7b2JqZWN0fSBuYXRp
dmVFdmVudCBOYXRpdmUgYnJvd3NlciBldmVudC5cbiAqIEBleHRlbmRzIHtTeW50aGV0aWNVSUV2
ZW50fVxuICovXG5mdW5jdGlvbiBTeW50aGV0aWNEcmFnRXZlbnQoZGlzcGF0Y2hDb25maWcsIGRp
c3BhdGNoTWFya2VyLCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpIHtcbiAgcmV0dXJu
IFN5bnRoZXRpY01vdXNlRXZlbnQuY2FsbCh0aGlzLCBkaXNwYXRjaENvbmZpZywgZGlzcGF0Y2hN
YXJrZXIsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCk7XG59XG5cblN5bnRoZXRpY01v
dXNlRXZlbnQuYXVnbWVudENsYXNzKFN5bnRoZXRpY0RyYWdFdmVudCwgRHJhZ0V2ZW50SW50ZXJm
YWNlKTtcblxubW9kdWxlLmV4cG9ydHMgPSBTeW50aGV0aWNEcmFnRXZlbnQ7XG5cblxuLyoqKioq
KioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3QtZG9tL2xpYi9T
eW50aGV0aWNEcmFnRXZlbnQuanNcbiAqKiBtb2R1bGUgaWQgPSAxNzBcbiAqKiBtb2R1bGUgY2h1
bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ss
IEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBp
cyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBM
SUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFu
IGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRo
ZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNlIHN0
cmljdCc7XG5cbnZhciBTeW50aGV0aWNVSUV2ZW50ID0gcmVxdWlyZSgnLi9TeW50aGV0aWNVSUV2
ZW50Jyk7XG5cbi8qKlxuICogQGludGVyZmFjZSBGb2N1c0V2ZW50XG4gKiBAc2VlIGh0dHA6Ly93
d3cudzMub3JnL1RSL0RPTS1MZXZlbC0zLUV2ZW50cy9cbiAqL1xudmFyIEZvY3VzRXZlbnRJbnRl
cmZhY2UgPSB7XG4gIHJlbGF0ZWRUYXJnZXQ6IG51bGxcbn07XG5cbi8qKlxuICogQHBhcmFtIHtv
YmplY3R9IGRpc3BhdGNoQ29uZmlnIENvbmZpZ3VyYXRpb24gdXNlZCB0byBkaXNwYXRjaCB0aGlz
IGV2ZW50LlxuICogQHBhcmFtIHtzdHJpbmd9IGRpc3BhdGNoTWFya2VyIE1hcmtlciBpZGVudGlm
eWluZyB0aGUgZXZlbnQgdGFyZ2V0LlxuICogQHBhcmFtIHtvYmplY3R9IG5hdGl2ZUV2ZW50IE5h
dGl2ZSBicm93c2VyIGV2ZW50LlxuICogQGV4dGVuZHMge1N5bnRoZXRpY1VJRXZlbnR9XG4gKi9c
bmZ1bmN0aW9uIFN5bnRoZXRpY0ZvY3VzRXZlbnQoZGlzcGF0Y2hDb25maWcsIGRpc3BhdGNoTWFy
a2VyLCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpIHtcbiAgcmV0dXJuIFN5bnRoZXRp
Y1VJRXZlbnQuY2FsbCh0aGlzLCBkaXNwYXRjaENvbmZpZywgZGlzcGF0Y2hNYXJrZXIsIG5hdGl2
ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCk7XG59XG5cblN5bnRoZXRpY1VJRXZlbnQuYXVnbWVu
dENsYXNzKFN5bnRoZXRpY0ZvY3VzRXZlbnQsIEZvY3VzRXZlbnRJbnRlcmZhY2UpO1xuXG5tb2R1
bGUuZXhwb3J0cyA9IFN5bnRoZXRpY0ZvY3VzRXZlbnQ7XG5cblxuLyoqKioqKioqKioqKioqKioq
XG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3QtZG9tL2xpYi9TeW50aGV0aWNGb2N1
c0V2ZW50LmpzXG4gKiogbW9kdWxlIGlkID0gMTcxXG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAq
Ki8iLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBB
bGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQg
dW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxl
IGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFs
IGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBm
aWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52
YXIgU3ludGhldGljRXZlbnQgPSByZXF1aXJlKCcuL1N5bnRoZXRpY0V2ZW50Jyk7XG5cbi8qKlxu
ICogQGludGVyZmFjZSBFdmVudFxuICogQHNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi8yMDEzL1dE
LURPTS1MZXZlbC0zLUV2ZW50cy0yMDEzMTEwNVxuICogICAgICAvI2V2ZW50cy1pbnB1dGV2ZW50
c1xuICovXG52YXIgSW5wdXRFdmVudEludGVyZmFjZSA9IHtcbiAgZGF0YTogbnVsbFxufTtcblxu
LyoqXG4gKiBAcGFyYW0ge29iamVjdH0gZGlzcGF0Y2hDb25maWcgQ29uZmlndXJhdGlvbiB1c2Vk
IHRvIGRpc3BhdGNoIHRoaXMgZXZlbnQuXG4gKiBAcGFyYW0ge3N0cmluZ30gZGlzcGF0Y2hNYXJr
ZXIgTWFya2VyIGlkZW50aWZ5aW5nIHRoZSBldmVudCB0YXJnZXQuXG4gKiBAcGFyYW0ge29iamVj
dH0gbmF0aXZlRXZlbnQgTmF0aXZlIGJyb3dzZXIgZXZlbnQuXG4gKiBAZXh0ZW5kcyB7U3ludGhl
dGljVUlFdmVudH1cbiAqL1xuZnVuY3Rpb24gU3ludGhldGljSW5wdXRFdmVudChkaXNwYXRjaENv
bmZpZywgZGlzcGF0Y2hNYXJrZXIsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCkge1xu
ICByZXR1cm4gU3ludGhldGljRXZlbnQuY2FsbCh0aGlzLCBkaXNwYXRjaENvbmZpZywgZGlzcGF0
Y2hNYXJrZXIsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCk7XG59XG5cblN5bnRoZXRp
Y0V2ZW50LmF1Z21lbnRDbGFzcyhTeW50aGV0aWNJbnB1dEV2ZW50LCBJbnB1dEV2ZW50SW50ZXJm
YWNlKTtcblxubW9kdWxlLmV4cG9ydHMgPSBTeW50aGV0aWNJbnB1dEV2ZW50O1xuXG5cbi8qKioq
KioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0LWRvbS9saWIv
U3ludGhldGljSW5wdXRFdmVudC5qc1xuICoqIG1vZHVsZSBpZCA9IDE3MlxuICoqIG1vZHVsZSBj
aHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9v
aywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2Rl
IGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAq
IExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4g
QW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4g
dGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICovXG5cbid1c2Ug
c3RyaWN0JztcblxudmFyIFN5bnRoZXRpY1VJRXZlbnQgPSByZXF1aXJlKCcuL1N5bnRoZXRpY1VJ
RXZlbnQnKTtcblxudmFyIGdldEV2ZW50Q2hhckNvZGUgPSByZXF1aXJlKCcuL2dldEV2ZW50Q2hh
ckNvZGUnKTtcbnZhciBnZXRFdmVudEtleSA9IHJlcXVpcmUoJy4vZ2V0RXZlbnRLZXknKTtcbnZh
ciBnZXRFdmVudE1vZGlmaWVyU3RhdGUgPSByZXF1aXJlKCcuL2dldEV2ZW50TW9kaWZpZXJTdGF0
ZScpO1xuXG4vKipcbiAqIEBpbnRlcmZhY2UgS2V5Ym9hcmRFdmVudFxuICogQHNlZSBodHRwOi8v
d3d3LnczLm9yZy9UUi9ET00tTGV2ZWwtMy1FdmVudHMvXG4gKi9cbnZhciBLZXlib2FyZEV2ZW50
SW50ZXJmYWNlID0ge1xuICBrZXk6IGdldEV2ZW50S2V5LFxuICBsb2NhdGlvbjogbnVsbCxcbiAg
Y3RybEtleTogbnVsbCxcbiAgc2hpZnRLZXk6IG51bGwsXG4gIGFsdEtleTogbnVsbCxcbiAgbWV0
YUtleTogbnVsbCxcbiAgcmVwZWF0OiBudWxsLFxuICBsb2NhbGU6IG51bGwsXG4gIGdldE1vZGlm
aWVyU3RhdGU6IGdldEV2ZW50TW9kaWZpZXJTdGF0ZSxcbiAgLy8gTGVnYWN5IEludGVyZmFjZVxu
ICBjaGFyQ29kZTogZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgLy8gYGNoYXJDb2RlYCBpcyB0aGUg
cmVzdWx0IG9mIGEgS2V5UHJlc3MgZXZlbnQgYW5kIHJlcHJlc2VudHMgdGhlIHZhbHVlIG9mXG4g
ICAgLy8gdGhlIGFjdHVhbCBwcmludGFibGUgY2hhcmFjdGVyLlxuXG4gICAgLy8gS2V5UHJlc3Mg
aXMgZGVwcmVjYXRlZCwgYnV0IGl0cyByZXBsYWNlbWVudCBpcyBub3QgeWV0IGZpbmFsIGFuZCBu
b3RcbiAgICAvLyBpbXBsZW1lbnRlZCBpbiBhbnkgbWFqb3IgYnJvd3Nlci4gT25seSBLZXlQcmVz
cyBoYXMgY2hhckNvZGUuXG4gICAgaWYgKGV2ZW50LnR5cGUgPT09ICdrZXlwcmVzcycpIHtcbiAg
ICAgIHJldHVybiBnZXRFdmVudENoYXJDb2RlKGV2ZW50KTtcbiAgICB9XG4gICAgcmV0dXJuIDA7
XG4gIH0sXG4gIGtleUNvZGU6IGZ1bmN0aW9uIChldmVudCkge1xuICAgIC8vIGBrZXlDb2RlYCBp
cyB0aGUgcmVzdWx0IG9mIGEgS2V5RG93bi9VcCBldmVudCBhbmQgcmVwcmVzZW50cyB0aGUgdmFs
dWUgb2ZcbiAgICAvLyBwaHlzaWNhbCBrZXlib2FyZCBrZXkuXG5cbiAgICAvLyBUaGUgYWN0dWFs
IG1lYW5pbmcgb2YgdGhlIHZhbHVlIGRlcGVuZHMgb24gdGhlIHVzZXJzJyBrZXlib2FyZCBsYXlv
dXRcbiAgICAvLyB3aGljaCBjYW5ub3QgYmUgZGV0ZWN0ZWQuIEFzc3VtaW5nIHRoYXQgaXQgaXMg
YSBVUyBrZXlib2FyZCBsYXlvdXRcbiAgICAvLyBwcm92aWRlcyBhIHN1cnByaXNpbmdseSBhY2N1
cmF0ZSBtYXBwaW5nIGZvciBVUyBhbmQgRXVyb3BlYW4gdXNlcnMuXG4gICAgLy8gRHVlIHRvIHRo
aXMsIGl0IGlzIGxlZnQgdG8gdGhlIHVzZXIgdG8gaW1wbGVtZW50IGF0IHRoaXMgdGltZS5cbiAg
ICBpZiAoZXZlbnQudHlwZSA9PT0gJ2tleWRvd24nIHx8IGV2ZW50LnR5cGUgPT09ICdrZXl1cCcp
IHtcbiAgICAgIHJldHVybiBldmVudC5rZXlDb2RlO1xuICAgIH1cbiAgICByZXR1cm4gMDtcbiAg
fSxcbiAgd2hpY2g6IGZ1bmN0aW9uIChldmVudCkge1xuICAgIC8vIGB3aGljaGAgaXMgYW4gYWxp
YXMgZm9yIGVpdGhlciBga2V5Q29kZWAgb3IgYGNoYXJDb2RlYCBkZXBlbmRpbmcgb24gdGhlXG4g
ICAgLy8gdHlwZSBvZiB0aGUgZXZlbnQuXG4gICAgaWYgKGV2ZW50LnR5cGUgPT09ICdrZXlwcmVz
cycpIHtcbiAgICAgIHJldHVybiBnZXRFdmVudENoYXJDb2RlKGV2ZW50KTtcbiAgICB9XG4gICAg
aWYgKGV2ZW50LnR5cGUgPT09ICdrZXlkb3duJyB8fCBldmVudC50eXBlID09PSAna2V5dXAnKSB7
XG4gICAgICByZXR1cm4gZXZlbnQua2V5Q29kZTtcbiAgICB9XG4gICAgcmV0dXJuIDA7XG4gIH1c
bn07XG5cbi8qKlxuICogQHBhcmFtIHtvYmplY3R9IGRpc3BhdGNoQ29uZmlnIENvbmZpZ3VyYXRp
b24gdXNlZCB0byBkaXNwYXRjaCB0aGlzIGV2ZW50LlxuICogQHBhcmFtIHtzdHJpbmd9IGRpc3Bh
dGNoTWFya2VyIE1hcmtlciBpZGVudGlmeWluZyB0aGUgZXZlbnQgdGFyZ2V0LlxuICogQHBhcmFt
IHtvYmplY3R9IG5hdGl2ZUV2ZW50IE5hdGl2ZSBicm93c2VyIGV2ZW50LlxuICogQGV4dGVuZHMg
e1N5bnRoZXRpY1VJRXZlbnR9XG4gKi9cbmZ1bmN0aW9uIFN5bnRoZXRpY0tleWJvYXJkRXZlbnQo
ZGlzcGF0Y2hDb25maWcsIGRpc3BhdGNoTWFya2VyLCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRU
YXJnZXQpIHtcbiAgcmV0dXJuIFN5bnRoZXRpY1VJRXZlbnQuY2FsbCh0aGlzLCBkaXNwYXRjaENv
bmZpZywgZGlzcGF0Y2hNYXJrZXIsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCk7XG59
XG5cblN5bnRoZXRpY1VJRXZlbnQuYXVnbWVudENsYXNzKFN5bnRoZXRpY0tleWJvYXJkRXZlbnQs
IEtleWJvYXJkRXZlbnRJbnRlcmZhY2UpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFN5bnRoZXRpY0tl
eWJvYXJkRXZlbnQ7XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJc
biAqKiAuL34vcmVhY3QtZG9tL2xpYi9TeW50aGV0aWNLZXlib2FyZEV2ZW50LmpzXG4gKiogbW9k
dWxlIGlkID0gMTczXG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENvcHly
aWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVk
LlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHls
ZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVj
dG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRl
bnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRp
cmVjdG9yeS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgU3ludGhldGljVUlFdmVu
dCA9IHJlcXVpcmUoJy4vU3ludGhldGljVUlFdmVudCcpO1xuXG52YXIgZ2V0RXZlbnRNb2RpZmll
clN0YXRlID0gcmVxdWlyZSgnLi9nZXRFdmVudE1vZGlmaWVyU3RhdGUnKTtcblxuLyoqXG4gKiBA
aW50ZXJmYWNlIFRvdWNoRXZlbnRcbiAqIEBzZWUgaHR0cDovL3d3dy53My5vcmcvVFIvdG91Y2gt
ZXZlbnRzL1xuICovXG52YXIgVG91Y2hFdmVudEludGVyZmFjZSA9IHtcbiAgdG91Y2hlczogbnVs
bCxcbiAgdGFyZ2V0VG91Y2hlczogbnVsbCxcbiAgY2hhbmdlZFRvdWNoZXM6IG51bGwsXG4gIGFs
dEtleTogbnVsbCxcbiAgbWV0YUtleTogbnVsbCxcbiAgY3RybEtleTogbnVsbCxcbiAgc2hpZnRL
ZXk6IG51bGwsXG4gIGdldE1vZGlmaWVyU3RhdGU6IGdldEV2ZW50TW9kaWZpZXJTdGF0ZVxufTtc
blxuLyoqXG4gKiBAcGFyYW0ge29iamVjdH0gZGlzcGF0Y2hDb25maWcgQ29uZmlndXJhdGlvbiB1
c2VkIHRvIGRpc3BhdGNoIHRoaXMgZXZlbnQuXG4gKiBAcGFyYW0ge3N0cmluZ30gZGlzcGF0Y2hN
YXJrZXIgTWFya2VyIGlkZW50aWZ5aW5nIHRoZSBldmVudCB0YXJnZXQuXG4gKiBAcGFyYW0ge29i
amVjdH0gbmF0aXZlRXZlbnQgTmF0aXZlIGJyb3dzZXIgZXZlbnQuXG4gKiBAZXh0ZW5kcyB7U3lu
dGhldGljVUlFdmVudH1cbiAqL1xuZnVuY3Rpb24gU3ludGhldGljVG91Y2hFdmVudChkaXNwYXRj
aENvbmZpZywgZGlzcGF0Y2hNYXJrZXIsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCkg
e1xuICByZXR1cm4gU3ludGhldGljVUlFdmVudC5jYWxsKHRoaXMsIGRpc3BhdGNoQ29uZmlnLCBk
aXNwYXRjaE1hcmtlciwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KTtcbn1cblxuU3lu
dGhldGljVUlFdmVudC5hdWdtZW50Q2xhc3MoU3ludGhldGljVG91Y2hFdmVudCwgVG91Y2hFdmVu
dEludGVyZmFjZSk7XG5cbm1vZHVsZS5leHBvcnRzID0gU3ludGhldGljVG91Y2hFdmVudDtcblxu
XG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFjdC1k
b20vbGliL1N5bnRoZXRpY1RvdWNoRXZlbnQuanNcbiAqKiBtb2R1bGUgaWQgPSAxNzRcbiAqKiBt
b2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwg
RmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3Vy
Y2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4g
dGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNl
IHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZv
dW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xu
XG4ndXNlIHN0cmljdCc7XG5cbnZhciBTeW50aGV0aWNFdmVudCA9IHJlcXVpcmUoJy4vU3ludGhl
dGljRXZlbnQnKTtcblxuLyoqXG4gKiBAaW50ZXJmYWNlIEV2ZW50XG4gKiBAc2VlIGh0dHA6Ly93
d3cudzMub3JnL1RSLzIwMDkvV0QtY3NzMy10cmFuc2l0aW9ucy0yMDA5MDMyMC8jdHJhbnNpdGlv
bi1ldmVudHMtXG4gKiBAc2VlIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2Rv
Y3MvV2ViL0FQSS9UcmFuc2l0aW9uRXZlbnRcbiAqL1xudmFyIFRyYW5zaXRpb25FdmVudEludGVy
ZmFjZSA9IHtcbiAgcHJvcGVydHlOYW1lOiBudWxsLFxuICBlbGFwc2VkVGltZTogbnVsbCxcbiAg
cHNldWRvRWxlbWVudDogbnVsbFxufTtcblxuLyoqXG4gKiBAcGFyYW0ge29iamVjdH0gZGlzcGF0
Y2hDb25maWcgQ29uZmlndXJhdGlvbiB1c2VkIHRvIGRpc3BhdGNoIHRoaXMgZXZlbnQuXG4gKiBA
cGFyYW0ge3N0cmluZ30gZGlzcGF0Y2hNYXJrZXIgTWFya2VyIGlkZW50aWZ5aW5nIHRoZSBldmVu
dCB0YXJnZXQuXG4gKiBAcGFyYW0ge29iamVjdH0gbmF0aXZlRXZlbnQgTmF0aXZlIGJyb3dzZXIg
ZXZlbnQuXG4gKiBAZXh0ZW5kcyB7U3ludGhldGljRXZlbnR9XG4gKi9cbmZ1bmN0aW9uIFN5bnRo
ZXRpY1RyYW5zaXRpb25FdmVudChkaXNwYXRjaENvbmZpZywgZGlzcGF0Y2hNYXJrZXIsIG5hdGl2
ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCkge1xuICByZXR1cm4gU3ludGhldGljRXZlbnQuY2Fs
bCh0aGlzLCBkaXNwYXRjaENvbmZpZywgZGlzcGF0Y2hNYXJrZXIsIG5hdGl2ZUV2ZW50LCBuYXRp
dmVFdmVudFRhcmdldCk7XG59XG5cblN5bnRoZXRpY0V2ZW50LmF1Z21lbnRDbGFzcyhTeW50aGV0
aWNUcmFuc2l0aW9uRXZlbnQsIFRyYW5zaXRpb25FdmVudEludGVyZmFjZSk7XG5cbm1vZHVsZS5l
eHBvcnRzID0gU3ludGhldGljVHJhbnNpdGlvbkV2ZW50O1xuXG5cbi8qKioqKioqKioqKioqKioq
KlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0LWRvbS9saWIvU3ludGhldGljVHJh
bnNpdGlvbkV2ZW50LmpzXG4gKiogbW9kdWxlIGlkID0gMTc1XG4gKiogbW9kdWxlIGNodW5rcyA9
IDBcbiAqKi8iLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMu
XG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGlj
ZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5T
RSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRp
dGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFU
RU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJpY3Qn
O1xuXG52YXIgU3ludGhldGljTW91c2VFdmVudCA9IHJlcXVpcmUoJy4vU3ludGhldGljTW91c2VF
dmVudCcpO1xuXG4vKipcbiAqIEBpbnRlcmZhY2UgV2hlZWxFdmVudFxuICogQHNlZSBodHRwOi8v
d3d3LnczLm9yZy9UUi9ET00tTGV2ZWwtMy1FdmVudHMvXG4gKi9cbnZhciBXaGVlbEV2ZW50SW50
ZXJmYWNlID0ge1xuICBkZWx0YVg6IGZ1bmN0aW9uIChldmVudCkge1xuICAgIHJldHVybiAnZGVs
dGFYJyBpbiBldmVudCA/IGV2ZW50LmRlbHRhWCA6IC8vIEZhbGxiYWNrIHRvIGB3aGVlbERlbHRh
WGAgZm9yIFdlYmtpdCBhbmQgbm9ybWFsaXplIChyaWdodCBpcyBwb3NpdGl2ZSkuXG4gICAgJ3do
ZWVsRGVsdGFYJyBpbiBldmVudCA/IC1ldmVudC53aGVlbERlbHRhWCA6IDA7XG4gIH0sXG4gIGRl
bHRhWTogZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgcmV0dXJuICdkZWx0YVknIGluIGV2ZW50ID8g
ZXZlbnQuZGVsdGFZIDogLy8gRmFsbGJhY2sgdG8gYHdoZWVsRGVsdGFZYCBmb3IgV2Via2l0IGFu
ZCBub3JtYWxpemUgKGRvd24gaXMgcG9zaXRpdmUpLlxuICAgICd3aGVlbERlbHRhWScgaW4gZXZl
bnQgPyAtZXZlbnQud2hlZWxEZWx0YVkgOiAvLyBGYWxsYmFjayB0byBgd2hlZWxEZWx0YWAgZm9y
IElFPDkgYW5kIG5vcm1hbGl6ZSAoZG93biBpcyBwb3NpdGl2ZSkuXG4gICAgJ3doZWVsRGVsdGEn
IGluIGV2ZW50ID8gLWV2ZW50LndoZWVsRGVsdGEgOiAwO1xuICB9LFxuICBkZWx0YVo6IG51bGws
XG5cbiAgLy8gQnJvd3NlcnMgd2l0aG91dCBcImRlbHRhTW9kZVwiIGlzIHJlcG9ydGluZyBpbiBy
YXcgd2hlZWwgZGVsdGEgd2hlcmUgb25lXG4gIC8vIG5vdGNoIG9uIHRoZSBzY3JvbGwgaXMgYWx3
YXlzICsvLSAxMjAsIHJvdWdobHkgZXF1aXZhbGVudCB0byBwaXhlbHMuXG4gIC8vIEEgZ29vZCBh
cHByb3hpbWF0aW9uIG9mIERPTV9ERUxUQV9MSU5FICgxKSBpcyA1JSBvZiB2aWV3cG9ydCBzaXpl
IG9yXG4gIC8vIH40MCBwaXhlbHMsIGZvciBET01fREVMVEFfU0NSRUVOICgyKSBpdCBpcyA4Ny41
JSBvZiB2aWV3cG9ydCBzaXplLlxuICBkZWx0YU1vZGU6IG51bGxcbn07XG5cbi8qKlxuICogQHBh
cmFtIHtvYmplY3R9IGRpc3BhdGNoQ29uZmlnIENvbmZpZ3VyYXRpb24gdXNlZCB0byBkaXNwYXRj
aCB0aGlzIGV2ZW50LlxuICogQHBhcmFtIHtzdHJpbmd9IGRpc3BhdGNoTWFya2VyIE1hcmtlciBp
ZGVudGlmeWluZyB0aGUgZXZlbnQgdGFyZ2V0LlxuICogQHBhcmFtIHtvYmplY3R9IG5hdGl2ZUV2
ZW50IE5hdGl2ZSBicm93c2VyIGV2ZW50LlxuICogQGV4dGVuZHMge1N5bnRoZXRpY01vdXNlRXZl
bnR9XG4gKi9cbmZ1bmN0aW9uIFN5bnRoZXRpY1doZWVsRXZlbnQoZGlzcGF0Y2hDb25maWcsIGRp
c3BhdGNoTWFya2VyLCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpIHtcbiAgcmV0dXJu
IFN5bnRoZXRpY01vdXNlRXZlbnQuY2FsbCh0aGlzLCBkaXNwYXRjaENvbmZpZywgZGlzcGF0Y2hN
YXJrZXIsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCk7XG59XG5cblN5bnRoZXRpY01v
dXNlRXZlbnQuYXVnbWVudENsYXNzKFN5bnRoZXRpY1doZWVsRXZlbnQsIFdoZWVsRXZlbnRJbnRl
cmZhY2UpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFN5bnRoZXRpY1doZWVsRXZlbnQ7XG5cblxuLyoq
KioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3QtZG9tL2xp
Yi9TeW50aGV0aWNXaGVlbEV2ZW50LmpzXG4gKiogbW9kdWxlIGlkID0gMTc2XG4gKiogbW9kdWxl
IGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vi
b29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNv
ZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxu
ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVl
LiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBp
biB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBcbiAqL1xu
XG4ndXNlIHN0cmljdCc7XG5cbnZhciBNT0QgPSA2NTUyMTtcblxuLy8gYWRsZXIzMiBpcyBub3Qg
Y3J5cHRvZ3JhcGhpY2FsbHkgc3Ryb25nLCBhbmQgaXMgb25seSB1c2VkIHRvIHNhbml0eSBjaGVj
ayB0aGF0XG4vLyBtYXJrdXAgZ2VuZXJhdGVkIG9uIHRoZSBzZXJ2ZXIgbWF0Y2hlcyB0aGUgbWFy
a3VwIGdlbmVyYXRlZCBvbiB0aGUgY2xpZW50LlxuLy8gVGhpcyBpbXBsZW1lbnRhdGlvbiAoYSBt
b2RpZmllZCB2ZXJzaW9uIG9mIHRoZSBTaGVldEpTIHZlcnNpb24pIGhhcyBiZWVuIG9wdGltaXpl
ZFxuLy8gZm9yIG91ciB1c2UgY2FzZSwgYXQgdGhlIGV4cGVuc2Ugb2YgY29uZm9ybWluZyB0byB0
aGUgYWRsZXIzMiBzcGVjaWZpY2F0aW9uXG4vLyBmb3Igbm9uLWFzY2lpIGlucHV0cy5cbmZ1bmN0
aW9uIGFkbGVyMzIoZGF0YSkge1xuICB2YXIgYSA9IDE7XG4gIHZhciBiID0gMDtcbiAgdmFyIGkg
PSAwO1xuICB2YXIgbCA9IGRhdGEubGVuZ3RoO1xuICB2YXIgbSA9IGwgJiB+MHgzO1xuICB3aGls
ZSAoaSA8IG0pIHtcbiAgICB2YXIgbiA9IE1hdGgubWluKGkgKyA0MDk2LCBtKTtcbiAgICBmb3Ig
KDsgaSA8IG47IGkgKz0gNCkge1xuICAgICAgYiArPSAoYSArPSBkYXRhLmNoYXJDb2RlQXQoaSkp
ICsgKGEgKz0gZGF0YS5jaGFyQ29kZUF0KGkgKyAxKSkgKyAoYSArPSBkYXRhLmNoYXJDb2RlQXQo
aSArIDIpKSArIChhICs9IGRhdGEuY2hhckNvZGVBdChpICsgMykpO1xuICAgIH1cbiAgICBhICU9
IE1PRDtcbiAgICBiICU9IE1PRDtcbiAgfVxuICBmb3IgKDsgaSA8IGw7IGkrKykge1xuICAgIGIg
Kz0gYSArPSBkYXRhLmNoYXJDb2RlQXQoaSk7XG4gIH1cbiAgYSAlPSBNT0Q7XG4gIGIgJT0gTU9E
O1xuICByZXR1cm4gYSB8IGIgPDwgMTY7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYWRsZXIzMjtc
blxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFj
dC1kb20vbGliL2FkbGVyMzIuanNcbiAqKiBtb2R1bGUgaWQgPSAxNzdcbiAqKiBtb2R1bGUgY2h1
bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ss
IEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBp
cyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBM
SUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFu
IGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRo
ZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNlIHN0
cmljdCc7XG5cbnZhciBDU1NQcm9wZXJ0eSA9IHJlcXVpcmUoJy4vQ1NTUHJvcGVydHknKTtcbnZh
ciB3YXJuaW5nID0gcmVxdWlyZSgnZmJqcy9saWIvd2FybmluZycpO1xuXG52YXIgaXNVbml0bGVz
c051bWJlciA9IENTU1Byb3BlcnR5LmlzVW5pdGxlc3NOdW1iZXI7XG52YXIgc3R5bGVXYXJuaW5n
cyA9IHt9O1xuXG4vKipcbiAqIENvbnZlcnQgYSB2YWx1ZSBpbnRvIHRoZSBwcm9wZXIgY3NzIHdy
aXRhYmxlIHZhbHVlLiBUaGUgc3R5bGUgbmFtZSBgbmFtZWBcbiAqIHNob3VsZCBiZSBsb2dpY2Fs
IChubyBoeXBoZW5zKSwgYXMgc3BlY2lmaWVkXG4gKiBpbiBgQ1NTUHJvcGVydHkuaXNVbml0bGVz
c051bWJlcmAuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgQ1NTIHByb3BlcnR5IG5hbWUg
c3VjaCBhcyBgdG9wTWFyZ2luYC5cbiAqIEBwYXJhbSB7Kn0gdmFsdWUgQ1NTIHByb3BlcnR5IHZh
bHVlIHN1Y2ggYXMgYDEwcHhgLlxuICogQHBhcmFtIHtSZWFjdERPTUNvbXBvbmVudH0gY29tcG9u
ZW50XG4gKiBAcmV0dXJuIHtzdHJpbmd9IE5vcm1hbGl6ZWQgc3R5bGUgdmFsdWUgd2l0aCBkaW1l
bnNpb25zIGFwcGxpZWQuXG4gKi9cbmZ1bmN0aW9uIGRhbmdlcm91c1N0eWxlVmFsdWUobmFtZSwg
dmFsdWUsIGNvbXBvbmVudCwgaXNDdXN0b21Qcm9wZXJ0eSkge1xuICAvLyBOb3RlIHRoYXQgd2Un
dmUgcmVtb3ZlZCBlc2NhcGVUZXh0Rm9yQnJvd3NlcigpIGNhbGxzIGhlcmUgc2luY2UgdGhlXG4g
IC8vIHdob2xlIHN0cmluZyB3aWxsIGJlIGVzY2FwZWQgd2hlbiB0aGUgYXR0cmlidXRlIGlzIGlu
amVjdGVkIGludG9cbiAgLy8gdGhlIG1hcmt1cC4gSWYgeW91IHByb3ZpZGUgdW5zYWZlIHVzZXIg
ZGF0YSBoZXJlIHRoZXkgY2FuIGluamVjdFxuICAvLyBhcmJpdHJhcnkgQ1NTIHdoaWNoIG1heSBi
ZSBwcm9ibGVtYXRpYyAoSSBjb3VsZG4ndCByZXBybyB0aGlzKTpcbiAgLy8gaHR0cHM6Ly93d3cu
b3dhc3Aub3JnL2luZGV4LnBocC9YU1NfRmlsdGVyX0V2YXNpb25fQ2hlYXRfU2hlZXRcbiAgLy8g
aHR0cDovL3d3dy50aGVzcGFubmVyLmNvLnVrLzIwMDcvMTEvMjYvdWx0aW1hdGUteHNzLWNzcy1p
bmplY3Rpb24vXG4gIC8vIFRoaXMgaXMgbm90IGFuIFhTUyBob2xlIGJ1dCBpbnN0ZWFkIGEgcG90
ZW50aWFsIENTUyBpbmplY3Rpb24gaXNzdWVcbiAgLy8gd2hpY2ggaGFzIGxlYWQgdG8gYSBncmVh
dGVyIGRpc2N1c3Npb24gYWJvdXQgaG93IHdlJ3JlIGdvaW5nIHRvXG4gIC8vIHRydXN0IFVSTHMg
bW92aW5nIGZvcndhcmQuIFNlZSAjMjExNTkwMVxuXG4gIHZhciBpc0VtcHR5ID0gdmFsdWUgPT0g
bnVsbCB8fCB0eXBlb2YgdmFsdWUgPT09ICdib29sZWFuJyB8fCB2YWx1ZSA9PT0gJyc7XG4gIGlm
IChpc0VtcHR5KSB7XG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgdmFyIGlzTm9uTnVtZXJpYyA9
IGlzTmFOKHZhbHVlKTtcbiAgaWYgKGlzQ3VzdG9tUHJvcGVydHkgfHwgaXNOb25OdW1lcmljIHx8
IHZhbHVlID09PSAwIHx8IGlzVW5pdGxlc3NOdW1iZXIuaGFzT3duUHJvcGVydHkobmFtZSkgJiYg
aXNVbml0bGVzc051bWJlcltuYW1lXSkge1xuICAgIHJldHVybiAnJyArIHZhbHVlOyAvLyBjYXN0
IHRvIHN0cmluZ1xuICB9XG5cbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAg
ICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgLy8g
QWxsb3cgJzAnIHRvIHBhc3MgdGhyb3VnaCB3aXRob3V0IHdhcm5pbmcuIDAgaXMgYWxyZWFkeSBz
cGVjaWFsIGFuZFxuICAgICAgLy8gZG9lc24ndCByZXF1aXJlIHVuaXRzLCBzbyB3ZSBkb24ndCBu
ZWVkIHRvIHdhcm4gYWJvdXQgaXQuXG4gICAgICBpZiAoY29tcG9uZW50ICYmIHZhbHVlICE9PSAn
MCcpIHtcbiAgICAgICAgdmFyIG93bmVyID0gY29tcG9uZW50Ll9jdXJyZW50RWxlbWVudC5fb3du
ZXI7XG4gICAgICAgIHZhciBvd25lck5hbWUgPSBvd25lciA/IG93bmVyLmdldE5hbWUoKSA6IG51
bGw7XG4gICAgICAgIGlmIChvd25lck5hbWUgJiYgIXN0eWxlV2FybmluZ3Nbb3duZXJOYW1lXSkg
e1xuICAgICAgICAgIHN0eWxlV2FybmluZ3Nbb3duZXJOYW1lXSA9IHt9O1xuICAgICAgICB9XG4g
ICAgICAgIHZhciB3YXJuZWQgPSBmYWxzZTtcbiAgICAgICAgaWYgKG93bmVyTmFtZSkge1xuICAg
ICAgICAgIHZhciB3YXJuaW5ncyA9IHN0eWxlV2FybmluZ3Nbb3duZXJOYW1lXTtcbiAgICAgICAg
ICB3YXJuZWQgPSB3YXJuaW5nc1tuYW1lXTtcbiAgICAgICAgICBpZiAoIXdhcm5lZCkge1xuICAg
ICAgICAgICAgd2FybmluZ3NbbmFtZV0gPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxu
ICAgICAgICBpZiAoIXdhcm5lZCkge1xuICAgICAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9
PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnYSBgJXNgIHRhZyAob3duZXI6IGAlc2Ap
IHdhcyBwYXNzZWQgYSBudW1lcmljIHN0cmluZyB2YWx1ZSAnICsgJ2ZvciBDU1MgcHJvcGVydHkg
YCVzYCAodmFsdWU6IGAlc2ApIHdoaWNoIHdpbGwgYmUgdHJlYXRlZCAnICsgJ2FzIGEgdW5pdGxl
c3MgbnVtYmVyIGluIGEgZnV0dXJlIHZlcnNpb24gb2YgUmVhY3QuJywgY29tcG9uZW50Ll9jdXJy
ZW50RWxlbWVudC50eXBlLCBvd25lck5hbWUgfHwgJ3Vua25vd24nLCBuYW1lLCB2YWx1ZSkgOiB2
b2lkIDA7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgdmFsdWUgPSB2YWx1ZS50cmlt
KCk7XG4gIH1cbiAgcmV0dXJuIHZhbHVlICsgJ3B4Jztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBk
YW5nZXJvdXNTdHlsZVZhbHVlO1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sg
Rk9PVEVSXG4gKiogLi9+L3JlYWN0LWRvbS9saWIvZGFuZ2Vyb3VzU3R5bGVWYWx1ZS5qc1xuICoq
IG1vZHVsZSBpZCA9IDE3OFxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBD
b3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNl
cnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qt
c3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBk
aXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2Yg
cGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2Ft
ZSBkaXJlY3RvcnkuXG4gKlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIF9wcm9kSW52YXJp
YW50ID0gcmVxdWlyZSgnLi9yZWFjdFByb2RJbnZhcmlhbnQnKTtcblxudmFyIFJlYWN0Q3VycmVu
dE93bmVyID0gcmVxdWlyZSgncmVhY3QvbGliL1JlYWN0Q3VycmVudE93bmVyJyk7XG52YXIgUmVh
Y3RET01Db21wb25lbnRUcmVlID0gcmVxdWlyZSgnLi9SZWFjdERPTUNvbXBvbmVudFRyZWUnKTtc
bnZhciBSZWFjdEluc3RhbmNlTWFwID0gcmVxdWlyZSgnLi9SZWFjdEluc3RhbmNlTWFwJyk7XG5c
bnZhciBnZXRIb3N0Q29tcG9uZW50RnJvbUNvbXBvc2l0ZSA9IHJlcXVpcmUoJy4vZ2V0SG9zdENv
bXBvbmVudEZyb21Db21wb3NpdGUnKTtcbnZhciBpbnZhcmlhbnQgPSByZXF1aXJlKCdmYmpzL2xp
Yi9pbnZhcmlhbnQnKTtcbnZhciB3YXJuaW5nID0gcmVxdWlyZSgnZmJqcy9saWIvd2FybmluZycp
O1xuXG4vKipcbiAqIFJldHVybnMgdGhlIERPTSBub2RlIHJlbmRlcmVkIGJ5IHRoaXMgZWxlbWVu
dC5cbiAqXG4gKiBTZWUgaHR0cHM6Ly9mYWNlYm9vay5naXRodWIuaW8vcmVhY3QvZG9jcy90b3At
bGV2ZWwtYXBpLmh0bWwjcmVhY3Rkb20uZmluZGRvbW5vZGVcbiAqXG4gKiBAcGFyYW0ge1JlYWN0
Q29tcG9uZW50fERPTUVsZW1lbnR9IGNvbXBvbmVudE9yRWxlbWVudFxuICogQHJldHVybiB7P0RP
TUVsZW1lbnR9IFRoZSByb290IG5vZGUgb2YgdGhpcyBlbGVtZW50LlxuICovXG5mdW5jdGlvbiBm
aW5kRE9NTm9kZShjb21wb25lbnRPckVsZW1lbnQpIHtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVf
RU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICB2YXIgb3duZXIgPSBSZWFjdEN1cnJlbnRPd25l
ci5jdXJyZW50O1xuICAgIGlmIChvd25lciAhPT0gbnVsbCkge1xuICAgICAgcHJvY2Vzcy5lbnYu
Tk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcob3duZXIuX3dhcm5lZEFib3V0UmVm
c0luUmVuZGVyLCAnJXMgaXMgYWNjZXNzaW5nIGZpbmRET01Ob2RlIGluc2lkZSBpdHMgcmVuZGVy
KCkuICcgKyAncmVuZGVyKCkgc2hvdWxkIGJlIGEgcHVyZSBmdW5jdGlvbiBvZiBwcm9wcyBhbmQg
c3RhdGUuIEl0IHNob3VsZCAnICsgJ25ldmVyIGFjY2VzcyBzb21ldGhpbmcgdGhhdCByZXF1aXJl
cyBzdGFsZSBkYXRhIGZyb20gdGhlIHByZXZpb3VzICcgKyAncmVuZGVyLCBzdWNoIGFzIHJlZnMu
IE1vdmUgdGhpcyBsb2dpYyB0byBjb21wb25lbnREaWRNb3VudCBhbmQgJyArICdjb21wb25lbnRE
aWRVcGRhdGUgaW5zdGVhZC4nLCBvd25lci5nZXROYW1lKCkgfHwgJ0EgY29tcG9uZW50JykgOiB2
b2lkIDA7XG4gICAgICBvd25lci5fd2FybmVkQWJvdXRSZWZzSW5SZW5kZXIgPSB0cnVlO1xuICAg
IH1cbiAgfVxuICBpZiAoY29tcG9uZW50T3JFbGVtZW50ID09IG51bGwpIHtcbiAgICByZXR1cm4g
bnVsbDtcbiAgfVxuICBpZiAoY29tcG9uZW50T3JFbGVtZW50Lm5vZGVUeXBlID09PSAxKSB7XG4g
ICAgcmV0dXJuIGNvbXBvbmVudE9yRWxlbWVudDtcbiAgfVxuXG4gIHZhciBpbnN0ID0gUmVhY3RJ
bnN0YW5jZU1hcC5nZXQoY29tcG9uZW50T3JFbGVtZW50KTtcbiAgaWYgKGluc3QpIHtcbiAgICBp
bnN0ID0gZ2V0SG9zdENvbXBvbmVudEZyb21Db21wb3NpdGUoaW5zdCk7XG4gICAgcmV0dXJuIGlu
c3QgPyBSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0Tm9kZUZyb21JbnN0YW5jZShpbnN0KSA6IG51
bGw7XG4gIH1cblxuICBpZiAodHlwZW9mIGNvbXBvbmVudE9yRWxlbWVudC5yZW5kZXIgPT09ICdm
dW5jdGlvbicpIHtcbiAgICAhZmFsc2UgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1
Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnZmluZERPTU5vZGUgd2FzIGNhbGxlZCBvbiBhbiB1
bm1vdW50ZWQgY29tcG9uZW50LicpIDogX3Byb2RJbnZhcmlhbnQoJzQ0JykgOiB2b2lkIDA7XG4g
IH0gZWxzZSB7XG4gICAgIWZhbHNlID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0
aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ0VsZW1lbnQgYXBwZWFycyB0byBiZSBuZWl0aGVyIFJl
YWN0Q29tcG9uZW50IG5vciBET01Ob2RlIChrZXlzOiAlcyknLCBPYmplY3Qua2V5cyhjb21wb25l
bnRPckVsZW1lbnQpKSA6IF9wcm9kSW52YXJpYW50KCc0NScsIE9iamVjdC5rZXlzKGNvbXBvbmVu
dE9yRWxlbWVudCkpIDogdm9pZCAwO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZmluZERP
TU5vZGU7XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAu
L34vcmVhY3QtZG9tL2xpYi9maW5kRE9NTm9kZS5qc1xuICoqIG1vZHVsZSBpZCA9IDE3OVxuICoq
IG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50
LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNv
dXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBp
biB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3Vy
Y2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUg
Zm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICog
XG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgS2V5RXNjYXBlVXRpbHMgPSByZXF1aXJlKCcu
L0tleUVzY2FwZVV0aWxzJyk7XG52YXIgdHJhdmVyc2VBbGxDaGlsZHJlbiA9IHJlcXVpcmUoJy4v
dHJhdmVyc2VBbGxDaGlsZHJlbicpO1xudmFyIHdhcm5pbmcgPSByZXF1aXJlKCdmYmpzL2xpYi93
YXJuaW5nJyk7XG5cbnZhciBSZWFjdENvbXBvbmVudFRyZWVIb29rO1xuXG5pZiAodHlwZW9mIHBy
b2Nlc3MgIT09ICd1bmRlZmluZWQnICYmIHByb2Nlc3MuZW52ICYmIHByb2Nlc3MuZW52Lk5PREVf
RU5WID09PSAndGVzdCcpIHtcbiAgLy8gVGVtcG9yYXJ5IGhhY2suXG4gIC8vIElubGluZSByZXF1
aXJlcyBkb24ndCB3b3JrIHdlbGwgd2l0aCBKZXN0OlxuICAvLyBodHRwczovL2dpdGh1Yi5jb20v
ZmFjZWJvb2svcmVhY3QvaXNzdWVzLzcyNDBcbiAgLy8gUmVtb3ZlIHRoZSBpbmxpbmUgcmVxdWly
ZXMgd2hlbiB3ZSBkb24ndCBuZWVkIHRoZW0gYW55bW9yZTpcbiAgLy8gaHR0cHM6Ly9naXRodWIu
Y29tL2ZhY2Vib29rL3JlYWN0L3B1bGwvNzE3OFxuICBSZWFjdENvbXBvbmVudFRyZWVIb29rID0g
cmVxdWlyZSgncmVhY3QvbGliL1JlYWN0Q29tcG9uZW50VHJlZUhvb2snKTtcbn1cblxuLyoqXG4g
KiBAcGFyYW0ge2Z1bmN0aW9ufSB0cmF2ZXJzZUNvbnRleHQgQ29udGV4dCBwYXNzZWQgdGhyb3Vn
aCB0cmF2ZXJzYWwuXG4gKiBAcGFyYW0gez9SZWFjdENvbXBvbmVudH0gY2hpbGQgUmVhY3QgY2hp
bGQgY29tcG9uZW50LlxuICogQHBhcmFtIHshc3RyaW5nfSBuYW1lIFN0cmluZyBuYW1lIG9mIGtl
eSBwYXRoIHRvIGNoaWxkLlxuICogQHBhcmFtIHtudW1iZXI9fSBzZWxmRGVidWdJRCBPcHRpb25h
bCBkZWJ1Z0lEIG9mIHRoZSBjdXJyZW50IGludGVybmFsIGluc3RhbmNlLlxuICovXG5mdW5jdGlv
biBmbGF0dGVuU2luZ2xlQ2hpbGRJbnRvQ29udGV4dCh0cmF2ZXJzZUNvbnRleHQsIGNoaWxkLCBu
YW1lLCBzZWxmRGVidWdJRCkge1xuICAvLyBXZSBmb3VuZCBhIGNvbXBvbmVudCBpbnN0YW5jZS5c
biAgaWYgKHRyYXZlcnNlQ29udGV4dCAmJiB0eXBlb2YgdHJhdmVyc2VDb250ZXh0ID09PSAnb2Jq
ZWN0Jykge1xuICAgIHZhciByZXN1bHQgPSB0cmF2ZXJzZUNvbnRleHQ7XG4gICAgdmFyIGtleVVu
aXF1ZSA9IHJlc3VsdFtuYW1lXSA9PT0gdW5kZWZpbmVkO1xuICAgIGlmIChwcm9jZXNzLmVudi5O
T0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICBpZiAoIVJlYWN0Q29tcG9uZW50VHJl
ZUhvb2spIHtcbiAgICAgICAgUmVhY3RDb21wb25lbnRUcmVlSG9vayA9IHJlcXVpcmUoJ3JlYWN0
L2xpYi9SZWFjdENvbXBvbmVudFRyZWVIb29rJyk7XG4gICAgICB9XG4gICAgICBpZiAoIWtleVVu
aXF1ZSkge1xuICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8g
d2FybmluZyhmYWxzZSwgJ2ZsYXR0ZW5DaGlsZHJlbiguLi4pOiBFbmNvdW50ZXJlZCB0d28gY2hp
bGRyZW4gd2l0aCB0aGUgc2FtZSBrZXksICcgKyAnYCVzYC4gQ2hpbGQga2V5cyBtdXN0IGJlIHVu
aXF1ZTsgd2hlbiB0d28gY2hpbGRyZW4gc2hhcmUgYSBrZXksIG9ubHkgJyArICd0aGUgZmlyc3Qg
Y2hpbGQgd2lsbCBiZSB1c2VkLiVzJywgS2V5RXNjYXBlVXRpbHMudW5lc2NhcGUobmFtZSksIFJl
YWN0Q29tcG9uZW50VHJlZUhvb2suZ2V0U3RhY2tBZGRlbmR1bUJ5SUQoc2VsZkRlYnVnSUQpKSA6
IHZvaWQgMDtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGtleVVuaXF1ZSAmJiBjaGlsZCAhPSBu
dWxsKSB7XG4gICAgICByZXN1bHRbbmFtZV0gPSBjaGlsZDtcbiAgICB9XG4gIH1cbn1cblxuLyoq
XG4gKiBGbGF0dGVucyBjaGlsZHJlbiB0aGF0IGFyZSB0eXBpY2FsbHkgc3BlY2lmaWVkIGFzIGBw
cm9wcy5jaGlsZHJlbmAuIEFueSBudWxsXG4gKiBjaGlsZHJlbiB3aWxsIG5vdCBiZSBpbmNsdWRl
ZCBpbiB0aGUgcmVzdWx0aW5nIG9iamVjdC5cbiAqIEByZXR1cm4geyFvYmplY3R9IGZsYXR0ZW5l
ZCBjaGlsZHJlbiBrZXllZCBieSBuYW1lLlxuICovXG5mdW5jdGlvbiBmbGF0dGVuQ2hpbGRyZW4o
Y2hpbGRyZW4sIHNlbGZEZWJ1Z0lEKSB7XG4gIGlmIChjaGlsZHJlbiA9PSBudWxsKSB7XG4gICAg
cmV0dXJuIGNoaWxkcmVuO1xuICB9XG4gIHZhciByZXN1bHQgPSB7fTtcblxuICBpZiAocHJvY2Vz
cy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIHRyYXZlcnNlQWxsQ2hpbGRy
ZW4oY2hpbGRyZW4sIGZ1bmN0aW9uICh0cmF2ZXJzZUNvbnRleHQsIGNoaWxkLCBuYW1lKSB7XG4g
ICAgICByZXR1cm4gZmxhdHRlblNpbmdsZUNoaWxkSW50b0NvbnRleHQodHJhdmVyc2VDb250ZXh0
LCBjaGlsZCwgbmFtZSwgc2VsZkRlYnVnSUQpO1xuICAgIH0sIHJlc3VsdCk7XG4gIH0gZWxzZSB7
XG4gICAgdHJhdmVyc2VBbGxDaGlsZHJlbihjaGlsZHJlbiwgZmxhdHRlblNpbmdsZUNoaWxkSW50
b0NvbnRleHQsIHJlc3VsdCk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4
cG9ydHMgPSBmbGF0dGVuQ2hpbGRyZW47XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VC
UEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3QtZG9tL2xpYi9mbGF0dGVuQ2hpbGRyZW4uanNcbiAq
KiBtb2R1bGUgaWQgPSAxODBcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICog
Q29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNE
LXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qg
ZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9m
IHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNh
bWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBnZXRFdmVudENo
YXJDb2RlID0gcmVxdWlyZSgnLi9nZXRFdmVudENoYXJDb2RlJyk7XG5cbi8qKlxuICogTm9ybWFs
aXphdGlvbiBvZiBkZXByZWNhdGVkIEhUTUw1IGBrZXlgIHZhbHVlc1xuICogQHNlZSBodHRwczov
L2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvS2V5Ym9hcmRFdmVudCNL
ZXlfbmFtZXNcbiAqL1xudmFyIG5vcm1hbGl6ZUtleSA9IHtcbiAgRXNjOiAnRXNjYXBlJyxcbiAg
U3BhY2ViYXI6ICcgJyxcbiAgTGVmdDogJ0Fycm93TGVmdCcsXG4gIFVwOiAnQXJyb3dVcCcsXG4g
IFJpZ2h0OiAnQXJyb3dSaWdodCcsXG4gIERvd246ICdBcnJvd0Rvd24nLFxuICBEZWw6ICdEZWxl
dGUnLFxuICBXaW46ICdPUycsXG4gIE1lbnU6ICdDb250ZXh0TWVudScsXG4gIEFwcHM6ICdDb250
ZXh0TWVudScsXG4gIFNjcm9sbDogJ1Njcm9sbExvY2snLFxuICBNb3pQcmludGFibGVLZXk6ICdV
bmlkZW50aWZpZWQnXG59O1xuXG4vKipcbiAqIFRyYW5zbGF0aW9uIGZyb20gbGVnYWN5IGBrZXlD
b2RlYCB0byBIVE1MNSBga2V5YFxuICogT25seSBzcGVjaWFsIGtleXMgc3VwcG9ydGVkLCBhbGwg
b3RoZXJzIGRlcGVuZCBvbiBrZXlib2FyZCBsYXlvdXQgb3IgYnJvd3NlclxuICogQHNlZSBodHRw
czovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvS2V5Ym9hcmRFdmVu
dCNLZXlfbmFtZXNcbiAqL1xudmFyIHRyYW5zbGF0ZVRvS2V5ID0ge1xuICA4OiAnQmFja3NwYWNl
JyxcbiAgOTogJ1RhYicsXG4gIDEyOiAnQ2xlYXInLFxuICAxMzogJ0VudGVyJyxcbiAgMTY6ICdT
aGlmdCcsXG4gIDE3OiAnQ29udHJvbCcsXG4gIDE4OiAnQWx0JyxcbiAgMTk6ICdQYXVzZScsXG4g
IDIwOiAnQ2Fwc0xvY2snLFxuICAyNzogJ0VzY2FwZScsXG4gIDMyOiAnICcsXG4gIDMzOiAnUGFn
ZVVwJyxcbiAgMzQ6ICdQYWdlRG93bicsXG4gIDM1OiAnRW5kJyxcbiAgMzY6ICdIb21lJyxcbiAg
Mzc6ICdBcnJvd0xlZnQnLFxuICAzODogJ0Fycm93VXAnLFxuICAzOTogJ0Fycm93UmlnaHQnLFxu
ICA0MDogJ0Fycm93RG93bicsXG4gIDQ1OiAnSW5zZXJ0JyxcbiAgNDY6ICdEZWxldGUnLFxuICAx
MTI6ICdGMScsXG4gIDExMzogJ0YyJyxcbiAgMTE0OiAnRjMnLFxuICAxMTU6ICdGNCcsXG4gIDEx
NjogJ0Y1JyxcbiAgMTE3OiAnRjYnLFxuICAxMTg6ICdGNycsXG4gIDExOTogJ0Y4JyxcbiAgMTIw
OiAnRjknLFxuICAxMjE6ICdGMTAnLFxuICAxMjI6ICdGMTEnLFxuICAxMjM6ICdGMTInLFxuICAx
NDQ6ICdOdW1Mb2NrJyxcbiAgMTQ1OiAnU2Nyb2xsTG9jaycsXG4gIDIyNDogJ01ldGEnXG59O1xu
XG4vKipcbiAqIEBwYXJhbSB7b2JqZWN0fSBuYXRpdmVFdmVudCBOYXRpdmUgYnJvd3NlciBldmVu
dC5cbiAqIEByZXR1cm4ge3N0cmluZ30gTm9ybWFsaXplZCBga2V5YCBwcm9wZXJ0eS5cbiAqL1xu
ZnVuY3Rpb24gZ2V0RXZlbnRLZXkobmF0aXZlRXZlbnQpIHtcbiAgaWYgKG5hdGl2ZUV2ZW50Lmtl
eSkge1xuICAgIC8vIE5vcm1hbGl6ZSBpbmNvbnNpc3RlbnQgdmFsdWVzIHJlcG9ydGVkIGJ5IGJy
b3dzZXJzIGR1ZSB0b1xuICAgIC8vIGltcGxlbWVudGF0aW9ucyBvZiBhIHdvcmtpbmcgZHJhZnQg
c3BlY2lmaWNhdGlvbi5cblxuICAgIC8vIEZpcmVGb3ggaW1wbGVtZW50cyBga2V5YCBidXQgcmV0
dXJucyBgTW96UHJpbnRhYmxlS2V5YCBmb3IgYWxsXG4gICAgLy8gcHJpbnRhYmxlIGNoYXJhY3Rl
cnMgKG5vcm1hbGl6ZWQgdG8gYFVuaWRlbnRpZmllZGApLCBpZ25vcmUgaXQuXG4gICAgdmFyIGtl
eSA9IG5vcm1hbGl6ZUtleVtuYXRpdmVFdmVudC5rZXldIHx8IG5hdGl2ZUV2ZW50LmtleTtcbiAg
ICBpZiAoa2V5ICE9PSAnVW5pZGVudGlmaWVkJykge1xuICAgICAgcmV0dXJuIGtleTtcbiAgICB9
XG4gIH1cblxuICAvLyBCcm93c2VyIGRvZXMgbm90IGltcGxlbWVudCBga2V5YCwgcG9seWZpbGwg
YXMgbXVjaCBvZiBpdCBhcyB3ZSBjYW4uXG4gIGlmIChuYXRpdmVFdmVudC50eXBlID09PSAna2V5
cHJlc3MnKSB7XG4gICAgdmFyIGNoYXJDb2RlID0gZ2V0RXZlbnRDaGFyQ29kZShuYXRpdmVFdmVu
dCk7XG5cbiAgICAvLyBUaGUgZW50ZXIta2V5IGlzIHRlY2huaWNhbGx5IGJvdGggcHJpbnRhYmxl
IGFuZCBub24tcHJpbnRhYmxlIGFuZCBjYW5cbiAgICAvLyB0aHVzIGJlIGNhcHR1cmVkIGJ5IGBr
ZXlwcmVzc2AsIG5vIG90aGVyIG5vbi1wcmludGFibGUga2V5IHNob3VsZC5cbiAgICByZXR1cm4g
Y2hhckNvZGUgPT09IDEzID8gJ0VudGVyJyA6IFN0cmluZy5mcm9tQ2hhckNvZGUoY2hhckNvZGUp
O1xuICB9XG4gIGlmIChuYXRpdmVFdmVudC50eXBlID09PSAna2V5ZG93bicgfHwgbmF0aXZlRXZl
bnQudHlwZSA9PT0gJ2tleXVwJykge1xuICAgIC8vIFdoaWxlIHVzZXIga2V5Ym9hcmQgbGF5b3V0
IGRldGVybWluZXMgdGhlIGFjdHVhbCBtZWFuaW5nIG9mIGVhY2hcbiAgICAvLyBga2V5Q29kZWAg
dmFsdWUsIGFsbW9zdCBhbGwgZnVuY3Rpb24ga2V5cyBoYXZlIGEgdW5pdmVyc2FsIHZhbHVlLlxu
ICAgIHJldHVybiB0cmFuc2xhdGVUb0tleVtuYXRpdmVFdmVudC5rZXlDb2RlXSB8fCAnVW5pZGVu
dGlmaWVkJztcbiAgfVxuICByZXR1cm4gJyc7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0RXZl
bnRLZXk7XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAu
L34vcmVhY3QtZG9tL2xpYi9nZXRFdmVudEtleS5qc1xuICoqIG1vZHVsZSBpZCA9IDE4MVxuICoq
IG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50
LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNv
dXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBp
biB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3Vy
Y2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUg
Zm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICog
XG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG4vKiBnbG9iYWwgU3ltYm9sICovXG5cbnZhciBJVEVS
QVRPUl9TWU1CT0wgPSB0eXBlb2YgU3ltYm9sID09PSAnZnVuY3Rpb24nICYmIFN5bWJvbC5pdGVy
YXRvcjtcbnZhciBGQVVYX0lURVJBVE9SX1NZTUJPTCA9ICdAQGl0ZXJhdG9yJzsgLy8gQmVmb3Jl
IFN5bWJvbCBzcGVjLlxuXG4vKipcbiAqIFJldHVybnMgdGhlIGl0ZXJhdG9yIG1ldGhvZCBmdW5j
dGlvbiBjb250YWluZWQgb24gdGhlIGl0ZXJhYmxlIG9iamVjdC5cbiAqXG4gKiBCZSBzdXJlIHRv
IGludm9rZSB0aGUgZnVuY3Rpb24gd2l0aCB0aGUgaXRlcmFibGUgYXMgY29udGV4dDpcbiAqXG4g
KiAgICAgdmFyIGl0ZXJhdG9yRm4gPSBnZXRJdGVyYXRvckZuKG15SXRlcmFibGUpO1xuICogICAg
IGlmIChpdGVyYXRvckZuKSB7XG4gKiAgICAgICB2YXIgaXRlcmF0b3IgPSBpdGVyYXRvckZuLmNh
bGwobXlJdGVyYWJsZSk7XG4gKiAgICAgICAuLi5cbiAqICAgICB9XG4gKlxuICogQHBhcmFtIHs/
b2JqZWN0fSBtYXliZUl0ZXJhYmxlXG4gKiBAcmV0dXJuIHs/ZnVuY3Rpb259XG4gKi9cbmZ1bmN0
aW9uIGdldEl0ZXJhdG9yRm4obWF5YmVJdGVyYWJsZSkge1xuICB2YXIgaXRlcmF0b3JGbiA9IG1h
eWJlSXRlcmFibGUgJiYgKElURVJBVE9SX1NZTUJPTCAmJiBtYXliZUl0ZXJhYmxlW0lURVJBVE9S
X1NZTUJPTF0gfHwgbWF5YmVJdGVyYWJsZVtGQVVYX0lURVJBVE9SX1NZTUJPTF0pO1xuICBpZiAo
dHlwZW9mIGl0ZXJhdG9yRm4gPT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gaXRlcmF0b3JG
bjtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGdldEl0ZXJhdG9yRm47XG5cblxuLyoqKioq
KioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3QtZG9tL2xpYi9n
ZXRJdGVyYXRvckZuLmpzXG4gKiogbW9kdWxlIGlkID0gMTgyXG4gKiogbW9kdWxlIGNodW5rcyA9
IDBcbiAqKi8iLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMu
XG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGlj
ZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5T
RSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRp
dGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFU
RU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJpY3Qn
O1xuXG4vKipcbiAqIEdpdmVuIGFueSBub2RlIHJldHVybiB0aGUgZmlyc3QgbGVhZiBub2RlIHdp
dGhvdXQgY2hpbGRyZW4uXG4gKlxuICogQHBhcmFtIHtET01FbGVtZW50fERPTVRleHROb2RlfSBu
b2RlXG4gKiBAcmV0dXJuIHtET01FbGVtZW50fERPTVRleHROb2RlfVxuICovXG5cbmZ1bmN0aW9u
IGdldExlYWZOb2RlKG5vZGUpIHtcbiAgd2hpbGUgKG5vZGUgJiYgbm9kZS5maXJzdENoaWxkKSB7
XG4gICAgbm9kZSA9IG5vZGUuZmlyc3RDaGlsZDtcbiAgfVxuICByZXR1cm4gbm9kZTtcbn1cblxu
LyoqXG4gKiBHZXQgdGhlIG5leHQgc2libGluZyB3aXRoaW4gYSBjb250YWluZXIuIFRoaXMgd2ls
bCB3YWxrIHVwIHRoZVxuICogRE9NIGlmIGEgbm9kZSdzIHNpYmxpbmdzIGhhdmUgYmVlbiBleGhh
dXN0ZWQuXG4gKlxuICogQHBhcmFtIHtET01FbGVtZW50fERPTVRleHROb2RlfSBub2RlXG4gKiBA
cmV0dXJuIHs/RE9NRWxlbWVudHxET01UZXh0Tm9kZX1cbiAqL1xuZnVuY3Rpb24gZ2V0U2libGlu
Z05vZGUobm9kZSkge1xuICB3aGlsZSAobm9kZSkge1xuICAgIGlmIChub2RlLm5leHRTaWJsaW5n
KSB7XG4gICAgICByZXR1cm4gbm9kZS5uZXh0U2libGluZztcbiAgICB9XG4gICAgbm9kZSA9IG5v
ZGUucGFyZW50Tm9kZTtcbiAgfVxufVxuXG4vKipcbiAqIEdldCBvYmplY3QgZGVzY3JpYmluZyB0
aGUgbm9kZXMgd2hpY2ggY29udGFpbiBjaGFyYWN0ZXJzIGF0IG9mZnNldC5cbiAqXG4gKiBAcGFy
YW0ge0RPTUVsZW1lbnR8RE9NVGV4dE5vZGV9IHJvb3RcbiAqIEBwYXJhbSB7bnVtYmVyfSBvZmZz
ZXRcbiAqIEByZXR1cm4gez9vYmplY3R9XG4gKi9cbmZ1bmN0aW9uIGdldE5vZGVGb3JDaGFyYWN0
ZXJPZmZzZXQocm9vdCwgb2Zmc2V0KSB7XG4gIHZhciBub2RlID0gZ2V0TGVhZk5vZGUocm9vdCk7
XG4gIHZhciBub2RlU3RhcnQgPSAwO1xuICB2YXIgbm9kZUVuZCA9IDA7XG5cbiAgd2hpbGUgKG5v
ZGUpIHtcbiAgICBpZiAobm9kZS5ub2RlVHlwZSA9PT0gMykge1xuICAgICAgbm9kZUVuZCA9IG5v
ZGVTdGFydCArIG5vZGUudGV4dENvbnRlbnQubGVuZ3RoO1xuXG4gICAgICBpZiAobm9kZVN0YXJ0
IDw9IG9mZnNldCAmJiBub2RlRW5kID49IG9mZnNldCkge1xuICAgICAgICByZXR1cm4ge1xuICAg
ICAgICAgIG5vZGU6IG5vZGUsXG4gICAgICAgICAgb2Zmc2V0OiBvZmZzZXQgLSBub2RlU3RhcnRc
biAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgbm9kZVN0YXJ0ID0gbm9kZUVuZDtcbiAgICB9
XG5cbiAgICBub2RlID0gZ2V0TGVhZk5vZGUoZ2V0U2libGluZ05vZGUobm9kZSkpO1xuICB9XG59
XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0Tm9kZUZvckNoYXJhY3Rlck9mZnNldDtcblxuXG4vKioq
KioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFjdC1kb20vbGli
L2dldE5vZGVGb3JDaGFyYWN0ZXJPZmZzZXQuanNcbiAqKiBtb2R1bGUgaWQgPSAxODNcbiAqKiBt
b2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwg
RmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3Vy
Y2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4g
dGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNl
IHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZv
dW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xu
XG4ndXNlIHN0cmljdCc7XG5cbnZhciBFeGVjdXRpb25FbnZpcm9ubWVudCA9IHJlcXVpcmUoJ2Zi
anMvbGliL0V4ZWN1dGlvbkVudmlyb25tZW50Jyk7XG5cbi8qKlxuICogR2VuZXJhdGUgYSBtYXBw
aW5nIG9mIHN0YW5kYXJkIHZlbmRvciBwcmVmaXhlcyB1c2luZyB0aGUgZGVmaW5lZCBzdHlsZSBw
cm9wZXJ0eSBhbmQgZXZlbnQgbmFtZS5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gc3R5bGVQcm9w
XG4gKiBAcGFyYW0ge3N0cmluZ30gZXZlbnROYW1lXG4gKiBAcmV0dXJucyB7b2JqZWN0fVxuICov
XG5mdW5jdGlvbiBtYWtlUHJlZml4TWFwKHN0eWxlUHJvcCwgZXZlbnROYW1lKSB7XG4gIHZhciBw
cmVmaXhlcyA9IHt9O1xuXG4gIHByZWZpeGVzW3N0eWxlUHJvcC50b0xvd2VyQ2FzZSgpXSA9IGV2
ZW50TmFtZS50b0xvd2VyQ2FzZSgpO1xuICBwcmVmaXhlc1snV2Via2l0JyArIHN0eWxlUHJvcF0g
PSAnd2Via2l0JyArIGV2ZW50TmFtZTtcbiAgcHJlZml4ZXNbJ01veicgKyBzdHlsZVByb3BdID0g
J21veicgKyBldmVudE5hbWU7XG4gIHByZWZpeGVzWydtcycgKyBzdHlsZVByb3BdID0gJ01TJyAr
IGV2ZW50TmFtZTtcbiAgcHJlZml4ZXNbJ08nICsgc3R5bGVQcm9wXSA9ICdvJyArIGV2ZW50TmFt
ZS50b0xvd2VyQ2FzZSgpO1xuXG4gIHJldHVybiBwcmVmaXhlcztcbn1cblxuLyoqXG4gKiBBIGxp
c3Qgb2YgZXZlbnQgbmFtZXMgdG8gYSBjb25maWd1cmFibGUgbGlzdCBvZiB2ZW5kb3IgcHJlZml4
ZXMuXG4gKi9cbnZhciB2ZW5kb3JQcmVmaXhlcyA9IHtcbiAgYW5pbWF0aW9uZW5kOiBtYWtlUHJl
Zml4TWFwKCdBbmltYXRpb24nLCAnQW5pbWF0aW9uRW5kJyksXG4gIGFuaW1hdGlvbml0ZXJhdGlv
bjogbWFrZVByZWZpeE1hcCgnQW5pbWF0aW9uJywgJ0FuaW1hdGlvbkl0ZXJhdGlvbicpLFxuICBh
bmltYXRpb25zdGFydDogbWFrZVByZWZpeE1hcCgnQW5pbWF0aW9uJywgJ0FuaW1hdGlvblN0YXJ0
JyksXG4gIHRyYW5zaXRpb25lbmQ6IG1ha2VQcmVmaXhNYXAoJ1RyYW5zaXRpb24nLCAnVHJhbnNp
dGlvbkVuZCcpXG59O1xuXG4vKipcbiAqIEV2ZW50IG5hbWVzIHRoYXQgaGF2ZSBhbHJlYWR5IGJl
ZW4gZGV0ZWN0ZWQgYW5kIHByZWZpeGVkIChpZiBhcHBsaWNhYmxlKS5cbiAqL1xudmFyIHByZWZp
eGVkRXZlbnROYW1lcyA9IHt9O1xuXG4vKipcbiAqIEVsZW1lbnQgdG8gY2hlY2sgZm9yIHByZWZp
eGVzIG9uLlxuICovXG52YXIgc3R5bGUgPSB7fTtcblxuLyoqXG4gKiBCb290c3RyYXAgaWYgYSBE
T00gZXhpc3RzLlxuICovXG5pZiAoRXhlY3V0aW9uRW52aXJvbm1lbnQuY2FuVXNlRE9NKSB7XG4g
IHN0eWxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jykuc3R5bGU7XG5cbiAgLy8gT24g
c29tZSBwbGF0Zm9ybXMsIGluIHBhcnRpY3VsYXIgc29tZSByZWxlYXNlcyBvZiBBbmRyb2lkIDQu
eCxcbiAgLy8gdGhlIHVuLXByZWZpeGVkIFwiYW5pbWF0aW9uXCIgYW5kIFwidHJhbnNpdGlvblwi
IHByb3BlcnRpZXMgYXJlIGRlZmluZWQgb24gdGhlXG4gIC8vIHN0eWxlIG9iamVjdCBidXQgdGhl
IGV2ZW50cyB0aGF0IGZpcmUgd2lsbCBzdGlsbCBiZSBwcmVmaXhlZCwgc28gd2UgbmVlZFxuICAv
LyB0byBjaGVjayBpZiB0aGUgdW4tcHJlZml4ZWQgZXZlbnRzIGFyZSB1c2FibGUsIGFuZCBpZiBu
b3QgcmVtb3ZlIHRoZW0gZnJvbSB0aGUgbWFwLlxuICBpZiAoISgnQW5pbWF0aW9uRXZlbnQnIGlu
IHdpbmRvdykpIHtcbiAgICBkZWxldGUgdmVuZG9yUHJlZml4ZXMuYW5pbWF0aW9uZW5kLmFuaW1h
dGlvbjtcbiAgICBkZWxldGUgdmVuZG9yUHJlZml4ZXMuYW5pbWF0aW9uaXRlcmF0aW9uLmFuaW1h
dGlvbjtcbiAgICBkZWxldGUgdmVuZG9yUHJlZml4ZXMuYW5pbWF0aW9uc3RhcnQuYW5pbWF0aW9u
O1xuICB9XG5cbiAgLy8gU2FtZSBhcyBhYm92ZVxuICBpZiAoISgnVHJhbnNpdGlvbkV2ZW50JyBp
biB3aW5kb3cpKSB7XG4gICAgZGVsZXRlIHZlbmRvclByZWZpeGVzLnRyYW5zaXRpb25lbmQudHJh
bnNpdGlvbjtcbiAgfVxufVxuXG4vKipcbiAqIEF0dGVtcHRzIHRvIGRldGVybWluZSB0aGUgY29y
cmVjdCB2ZW5kb3IgcHJlZml4ZWQgZXZlbnQgbmFtZS5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30g
ZXZlbnROYW1lXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICovXG5mdW5jdGlvbiBnZXRWZW5kb3JQ
cmVmaXhlZEV2ZW50TmFtZShldmVudE5hbWUpIHtcbiAgaWYgKHByZWZpeGVkRXZlbnROYW1lc1tl
dmVudE5hbWVdKSB7XG4gICAgcmV0dXJuIHByZWZpeGVkRXZlbnROYW1lc1tldmVudE5hbWVdO1xu
ICB9IGVsc2UgaWYgKCF2ZW5kb3JQcmVmaXhlc1tldmVudE5hbWVdKSB7XG4gICAgcmV0dXJuIGV2
ZW50TmFtZTtcbiAgfVxuXG4gIHZhciBwcmVmaXhNYXAgPSB2ZW5kb3JQcmVmaXhlc1tldmVudE5h
bWVdO1xuXG4gIGZvciAodmFyIHN0eWxlUHJvcCBpbiBwcmVmaXhNYXApIHtcbiAgICBpZiAocHJl
Zml4TWFwLmhhc093blByb3BlcnR5KHN0eWxlUHJvcCkgJiYgc3R5bGVQcm9wIGluIHN0eWxlKSB7
XG4gICAgICByZXR1cm4gcHJlZml4ZWRFdmVudE5hbWVzW2V2ZW50TmFtZV0gPSBwcmVmaXhNYXBb
c3R5bGVQcm9wXTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gJyc7XG59XG5cbm1vZHVsZS5leHBv
cnRzID0gZ2V0VmVuZG9yUHJlZml4ZWRFdmVudE5hbWU7XG5cblxuLyoqKioqKioqKioqKioqKioq
XG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3QtZG9tL2xpYi9nZXRWZW5kb3JQcmVm
aXhlZEV2ZW50TmFtZS5qc1xuICoqIG1vZHVsZSBpZCA9IDE4NFxuICoqIG1vZHVsZSBjaHVua3Mg
PSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5j
LlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxp
Y2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VO
U0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRk
aXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBB
VEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICovXG5cbid1c2Ugc3RyaWN0
JztcblxudmFyIGVzY2FwZVRleHRDb250ZW50Rm9yQnJvd3NlciA9IHJlcXVpcmUoJy4vZXNjYXBl
VGV4dENvbnRlbnRGb3JCcm93c2VyJyk7XG5cbi8qKlxuICogRXNjYXBlcyBhdHRyaWJ1dGUgdmFs
dWUgdG8gcHJldmVudCBzY3JpcHRpbmcgYXR0YWNrcy5cbiAqXG4gKiBAcGFyYW0geyp9IHZhbHVl
IFZhbHVlIHRvIGVzY2FwZS5cbiAqIEByZXR1cm4ge3N0cmluZ30gQW4gZXNjYXBlZCBzdHJpbmcu
XG4gKi9cbmZ1bmN0aW9uIHF1b3RlQXR0cmlidXRlVmFsdWVGb3JCcm93c2VyKHZhbHVlKSB7XG4g
IHJldHVybiAnXCInICsgZXNjYXBlVGV4dENvbnRlbnRGb3JCcm93c2VyKHZhbHVlKSArICdcIic7
XG59XG5cbm1vZHVsZS5leHBvcnRzID0gcXVvdGVBdHRyaWJ1dGVWYWx1ZUZvckJyb3dzZXI7XG5c
blxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3Qt
ZG9tL2xpYi9xdW90ZUF0dHJpYnV0ZVZhbHVlRm9yQnJvd3Nlci5qc1xuICoqIG1vZHVsZSBpZCA9
IDE4NVxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAx
My1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4g
KiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5z
ZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2Yg
dGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0
cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3Rvcnku
XG4gKlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIFJlYWN0TW91bnQgPSByZXF1aXJlKCcu
L1JlYWN0TW91bnQnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdE1vdW50LnJlbmRlclN1YnRy
ZWVJbnRvQ29udGFpbmVyO1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9P
VEVSXG4gKiogLi9+L3JlYWN0LWRvbS9saWIvcmVuZGVyU3VidHJlZUludG9Db250YWluZXIuanNc
biAqKiBtb2R1bGUgaWQgPSAxODZcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIid1c2Ug
c3RyaWN0JztcblxuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcbmV4cG9ydHMuY3JlYXRlUHJv
dmlkZXIgPSBjcmVhdGVQcm92aWRlcjtcblxudmFyIF9yZWFjdCA9IHJlcXVpcmUoJ3JlYWN0Jyk7
XG5cbnZhciBfcHJvcFR5cGVzID0gcmVxdWlyZSgncHJvcC10eXBlcycpO1xuXG52YXIgX3Byb3BU
eXBlczIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9wcm9wVHlwZXMpO1xuXG52YXIgX1Byb3BU
eXBlcyA9IHJlcXVpcmUoJy4uL3V0aWxzL1Byb3BUeXBlcycpO1xuXG52YXIgX3dhcm5pbmcgPSBy
ZXF1aXJlKCcuLi91dGlscy93YXJuaW5nJyk7XG5cbnZhciBfd2FybmluZzIgPSBfaW50ZXJvcFJl
cXVpcmVEZWZhdWx0KF93YXJuaW5nKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVs
dChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDog
b2JqIH07IH1cblxuZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3Rv
cikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcg
VHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpOyB9IH1cblxu
ZnVuY3Rpb24gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4oc2VsZiwgY2FsbCkgeyBpZiAoIXNl
bGYpIHsgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFs
aXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpOyB9IHJldHVybiBjYWxsICYmICh0
eXBlb2YgY2FsbCA9PT0gXCJvYmplY3RcIiB8fCB0eXBlb2YgY2FsbCA9PT0gXCJmdW5jdGlvblwi
KSA/IGNhbGwgOiBzZWxmOyB9XG5cbmZ1bmN0aW9uIF9pbmhlcml0cyhzdWJDbGFzcywgc3VwZXJD
bGFzcykgeyBpZiAodHlwZW9mIHN1cGVyQ2xhc3MgIT09IFwiZnVuY3Rpb25cIiAmJiBzdXBlckNs
YXNzICE9PSBudWxsKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11
c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90IFwiICsgdHlwZW9mIHN1cGVyQ2xh
c3MpOyB9IHN1YkNsYXNzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoc3VwZXJDbGFzcyAmJiBz
dXBlckNsYXNzLnByb3RvdHlwZSwgeyBjb25zdHJ1Y3RvcjogeyB2YWx1ZTogc3ViQ2xhc3MsIGVu
dW1lcmFibGU6IGZhbHNlLCB3cml0YWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlIH0gfSk7
IGlmIChzdXBlckNsYXNzKSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3Quc2V0UHJvdG90
eXBlT2Yoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIDogc3ViQ2xhc3MuX19wcm90b19fID0gc3VwZXJD
bGFzczsgfVxuXG52YXIgZGlkV2FybkFib3V0UmVjZWl2aW5nU3RvcmUgPSBmYWxzZTtcbmZ1bmN0
aW9uIHdhcm5BYm91dFJlY2VpdmluZ1N0b3JlKCkge1xuICBpZiAoZGlkV2FybkFib3V0UmVjZWl2
aW5nU3RvcmUpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgZGlkV2FybkFib3V0UmVjZWl2aW5nU3Rv
cmUgPSB0cnVlO1xuXG4gICgwLCBfd2FybmluZzIuZGVmYXVsdCkoJzxQcm92aWRlcj4gZG9lcyBu
b3Qgc3VwcG9ydCBjaGFuZ2luZyBgc3RvcmVgIG9uIHRoZSBmbHkuICcgKyAnSXQgaXMgbW9zdCBs
aWtlbHkgdGhhdCB5b3Ugc2VlIHRoaXMgZXJyb3IgYmVjYXVzZSB5b3UgdXBkYXRlZCB0byAnICsg
J1JlZHV4IDIueCBhbmQgUmVhY3QgUmVkdXggMi54IHdoaWNoIG5vIGxvbmdlciBob3QgcmVsb2Fk
IHJlZHVjZXJzICcgKyAnYXV0b21hdGljYWxseS4gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9yZWFj
dGpzL3JlYWN0LXJlZHV4L3JlbGVhc2VzLycgKyAndGFnL3YyLjAuMCBmb3IgdGhlIG1pZ3JhdGlv
biBpbnN0cnVjdGlvbnMuJyk7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVByb3ZpZGVyKCkge1xuICB2
YXIgX1Byb3ZpZGVyJGNoaWxkQ29udGV4O1xuXG4gIHZhciBzdG9yZUtleSA9IGFyZ3VtZW50cy5s
ZW5ndGggPiAwICYmIGFyZ3VtZW50c1swXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzBdIDog
J3N0b3JlJztcbiAgdmFyIHN1YktleSA9IGFyZ3VtZW50c1sxXTtcblxuICB2YXIgc3Vic2NyaXB0
aW9uS2V5ID0gc3ViS2V5IHx8IHN0b3JlS2V5ICsgJ1N1YnNjcmlwdGlvbic7XG5cbiAgdmFyIFBy
b3ZpZGVyID0gZnVuY3Rpb24gKF9Db21wb25lbnQpIHtcbiAgICBfaW5oZXJpdHMoUHJvdmlkZXIs
IF9Db21wb25lbnQpO1xuXG4gICAgUHJvdmlkZXIucHJvdG90eXBlLmdldENoaWxkQ29udGV4dCA9
IGZ1bmN0aW9uIGdldENoaWxkQ29udGV4dCgpIHtcbiAgICAgIHZhciBfcmVmO1xuXG4gICAgICBy
ZXR1cm4gX3JlZiA9IHt9LCBfcmVmW3N0b3JlS2V5XSA9IHRoaXNbc3RvcmVLZXldLCBfcmVmW3N1
YnNjcmlwdGlvbktleV0gPSBudWxsLCBfcmVmO1xuICAgIH07XG5cbiAgICBmdW5jdGlvbiBQcm92
aWRlcihwcm9wcywgY29udGV4dCkge1xuICAgICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFByb3Zp
ZGVyKTtcblxuICAgICAgdmFyIF90aGlzID0gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4odGhp
cywgX0NvbXBvbmVudC5jYWxsKHRoaXMsIHByb3BzLCBjb250ZXh0KSk7XG5cbiAgICAgIF90aGlz
W3N0b3JlS2V5XSA9IHByb3BzLnN0b3JlO1xuICAgICAgcmV0dXJuIF90aGlzO1xuICAgIH1cblxu
ICAgIFByb3ZpZGVyLnByb3RvdHlwZS5yZW5kZXIgPSBmdW5jdGlvbiByZW5kZXIoKSB7XG4gICAg
ICByZXR1cm4gX3JlYWN0LkNoaWxkcmVuLm9ubHkodGhpcy5wcm9wcy5jaGlsZHJlbik7XG4gICAg
fTtcblxuICAgIHJldHVybiBQcm92aWRlcjtcbiAgfShfcmVhY3QuQ29tcG9uZW50KTtcblxuICBp
ZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIFByb3ZpZGVy
LnByb3RvdHlwZS5jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzID0gZnVuY3Rpb24gKG5leHRQcm9w
cykge1xuICAgICAgaWYgKHRoaXNbc3RvcmVLZXldICE9PSBuZXh0UHJvcHMuc3RvcmUpIHtcbiAg
ICAgICAgd2FybkFib3V0UmVjZWl2aW5nU3RvcmUoKTtcbiAgICAgIH1cbiAgICB9O1xuICB9XG5c
biAgUHJvdmlkZXIucHJvcFR5cGVzID0ge1xuICAgIHN0b3JlOiBfUHJvcFR5cGVzLnN0b3JlU2hh
cGUuaXNSZXF1aXJlZCxcbiAgICBjaGlsZHJlbjogX3Byb3BUeXBlczIuZGVmYXVsdC5lbGVtZW50
LmlzUmVxdWlyZWRcbiAgfTtcbiAgUHJvdmlkZXIuY2hpbGRDb250ZXh0VHlwZXMgPSAoX1Byb3Zp
ZGVyJGNoaWxkQ29udGV4ID0ge30sIF9Qcm92aWRlciRjaGlsZENvbnRleFtzdG9yZUtleV0gPSBf
UHJvcFR5cGVzLnN0b3JlU2hhcGUuaXNSZXF1aXJlZCwgX1Byb3ZpZGVyJGNoaWxkQ29udGV4W3N1
YnNjcmlwdGlvbktleV0gPSBfUHJvcFR5cGVzLnN1YnNjcmlwdGlvblNoYXBlLCBfUHJvdmlkZXIk
Y2hpbGRDb250ZXgpO1xuXG4gIHJldHVybiBQcm92aWRlcjtcbn1cblxuZXhwb3J0cy5kZWZhdWx0
ID0gY3JlYXRlUHJvdmlkZXIoKTtcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNL
IEZPT1RFUlxuICoqIC4vfi9yZWFjdC1yZWR1eC9saWIvY29tcG9uZW50cy9Qcm92aWRlci5qc1xu
ICoqIG1vZHVsZSBpZCA9IDE4N1xuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiJ3VzZSBz
dHJpY3QnO1xuXG5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuXG52YXIgX2V4dGVuZHMgPSBP
YmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uICh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBh
cmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTsgZm9yICh2
YXIga2V5IGluIHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5j
YWxsKHNvdXJjZSwga2V5KSkgeyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gfSByZXR1
cm4gdGFyZ2V0OyB9O1xuXG5leHBvcnRzLmNyZWF0ZUNvbm5lY3QgPSBjcmVhdGVDb25uZWN0O1xu
XG52YXIgX2Nvbm5lY3RBZHZhbmNlZCA9IHJlcXVpcmUoJy4uL2NvbXBvbmVudHMvY29ubmVjdEFk
dmFuY2VkJyk7XG5cbnZhciBfY29ubmVjdEFkdmFuY2VkMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1
bHQoX2Nvbm5lY3RBZHZhbmNlZCk7XG5cbnZhciBfc2hhbGxvd0VxdWFsID0gcmVxdWlyZSgnLi4v
dXRpbHMvc2hhbGxvd0VxdWFsJyk7XG5cbnZhciBfc2hhbGxvd0VxdWFsMiA9IF9pbnRlcm9wUmVx
dWlyZURlZmF1bHQoX3NoYWxsb3dFcXVhbCk7XG5cbnZhciBfbWFwRGlzcGF0Y2hUb1Byb3BzID0g
cmVxdWlyZSgnLi9tYXBEaXNwYXRjaFRvUHJvcHMnKTtcblxudmFyIF9tYXBEaXNwYXRjaFRvUHJv
cHMyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfbWFwRGlzcGF0Y2hUb1Byb3BzKTtcblxudmFy
IF9tYXBTdGF0ZVRvUHJvcHMgPSByZXF1aXJlKCcuL21hcFN0YXRlVG9Qcm9wcycpO1xuXG52YXIg
X21hcFN0YXRlVG9Qcm9wczIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9tYXBTdGF0ZVRvUHJv
cHMpO1xuXG52YXIgX21lcmdlUHJvcHMgPSByZXF1aXJlKCcuL21lcmdlUHJvcHMnKTtcblxudmFy
IF9tZXJnZVByb3BzMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX21lcmdlUHJvcHMpO1xuXG52
YXIgX3NlbGVjdG9yRmFjdG9yeSA9IHJlcXVpcmUoJy4vc2VsZWN0b3JGYWN0b3J5Jyk7XG5cbnZh
ciBfc2VsZWN0b3JGYWN0b3J5MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3NlbGVjdG9yRmFj
dG9yeSk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBv
YmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbmZ1bmN0
aW9uIF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhvYmosIGtleXMpIHsgdmFyIHRhcmdldCA9IHt9
OyBmb3IgKHZhciBpIGluIG9iaikgeyBpZiAoa2V5cy5pbmRleE9mKGkpID49IDApIGNvbnRpbnVl
OyBpZiAoIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGkpKSBjb250
aW51ZTsgdGFyZ2V0W2ldID0gb2JqW2ldOyB9IHJldHVybiB0YXJnZXQ7IH1cblxuLypcbiAgY29u
bmVjdCBpcyBhIGZhY2FkZSBvdmVyIGNvbm5lY3RBZHZhbmNlZC4gSXQgdHVybnMgaXRzIGFyZ3Mg
aW50byBhIGNvbXBhdGlibGVcbiAgc2VsZWN0b3JGYWN0b3J5LCB3aGljaCBoYXMgdGhlIHNpZ25h
dHVyZTpcblxuICAgIChkaXNwYXRjaCwgb3B0aW9ucykgPT4gKG5leHRTdGF0ZSwgbmV4dE93blBy
b3BzKSA9PiBuZXh0RmluYWxQcm9wc1xuICBcbiAgY29ubmVjdCBwYXNzZXMgaXRzIGFyZ3MgdG8g
Y29ubmVjdEFkdmFuY2VkIGFzIG9wdGlvbnMsIHdoaWNoIHdpbGwgaW4gdHVybiBwYXNzIHRoZW0g
dG9cbiAgc2VsZWN0b3JGYWN0b3J5IGVhY2ggdGltZSBhIENvbm5lY3QgY29tcG9uZW50IGluc3Rh
bmNlIGlzIGluc3RhbnRpYXRlZCBvciBob3QgcmVsb2FkZWQuXG5cbiAgc2VsZWN0b3JGYWN0b3J5
IHJldHVybnMgYSBmaW5hbCBwcm9wcyBzZWxlY3RvciBmcm9tIGl0cyBtYXBTdGF0ZVRvUHJvcHMs
XG4gIG1hcFN0YXRlVG9Qcm9wc0ZhY3RvcmllcywgbWFwRGlzcGF0Y2hUb1Byb3BzLCBtYXBEaXNw
YXRjaFRvUHJvcHNGYWN0b3JpZXMsIG1lcmdlUHJvcHMsXG4gIG1lcmdlUHJvcHNGYWN0b3JpZXMs
IGFuZCBwdXJlIGFyZ3MuXG5cbiAgVGhlIHJlc3VsdGluZyBmaW5hbCBwcm9wcyBzZWxlY3RvciBp
cyBjYWxsZWQgYnkgdGhlIENvbm5lY3QgY29tcG9uZW50IGluc3RhbmNlIHdoZW5ldmVyXG4gIGl0
IHJlY2VpdmVzIG5ldyBwcm9wcyBvciBzdG9yZSBzdGF0ZS5cbiAqL1xuXG5mdW5jdGlvbiBtYXRj
aChhcmcsIGZhY3RvcmllcywgbmFtZSkge1xuICBmb3IgKHZhciBpID0gZmFjdG9yaWVzLmxlbmd0
aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgdmFyIHJlc3VsdCA9IGZhY3Rvcmllc1tpXShhcmcp
O1xuICAgIGlmIChyZXN1bHQpIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICByZXR1cm4gZnVuY3Rp
b24gKGRpc3BhdGNoLCBvcHRpb25zKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHZh
bHVlIG9mIHR5cGUgJyArIHR5cGVvZiBhcmcgKyAnIGZvciAnICsgbmFtZSArICcgYXJndW1lbnQg
d2hlbiBjb25uZWN0aW5nIGNvbXBvbmVudCAnICsgb3B0aW9ucy53cmFwcGVkQ29tcG9uZW50TmFt
ZSArICcuJyk7XG4gIH07XG59XG5cbmZ1bmN0aW9uIHN0cmljdEVxdWFsKGEsIGIpIHtcbiAgcmV0
dXJuIGEgPT09IGI7XG59XG5cbi8vIGNyZWF0ZUNvbm5lY3Qgd2l0aCBkZWZhdWx0IGFyZ3MgYnVp
bGRzIHRoZSAnb2ZmaWNpYWwnIGNvbm5lY3QgYmVoYXZpb3IuIENhbGxpbmcgaXQgd2l0aFxuLy8g
ZGlmZmVyZW50IG9wdGlvbnMgb3BlbnMgdXAgc29tZSB0ZXN0aW5nIGFuZCBleHRlbnNpYmlsaXR5
IHNjZW5hcmlvc1xuZnVuY3Rpb24gY3JlYXRlQ29ubmVjdCgpIHtcbiAgdmFyIF9yZWYgPSBhcmd1
bWVudHMubGVuZ3RoID4gMCAmJiBhcmd1bWVudHNbMF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50
c1swXSA6IHt9LFxuICAgICAgX3JlZiRjb25uZWN0SE9DID0gX3JlZi5jb25uZWN0SE9DLFxuICAg
ICAgY29ubmVjdEhPQyA9IF9yZWYkY29ubmVjdEhPQyA9PT0gdW5kZWZpbmVkID8gX2Nvbm5lY3RB
ZHZhbmNlZDIuZGVmYXVsdCA6IF9yZWYkY29ubmVjdEhPQyxcbiAgICAgIF9yZWYkbWFwU3RhdGVU
b1Byb3BzRiA9IF9yZWYubWFwU3RhdGVUb1Byb3BzRmFjdG9yaWVzLFxuICAgICAgbWFwU3RhdGVU
b1Byb3BzRmFjdG9yaWVzID0gX3JlZiRtYXBTdGF0ZVRvUHJvcHNGID09PSB1bmRlZmluZWQgPyBf
bWFwU3RhdGVUb1Byb3BzMi5kZWZhdWx0IDogX3JlZiRtYXBTdGF0ZVRvUHJvcHNGLFxuICAgICAg
X3JlZiRtYXBEaXNwYXRjaFRvUHJvID0gX3JlZi5tYXBEaXNwYXRjaFRvUHJvcHNGYWN0b3JpZXMs
XG4gICAgICBtYXBEaXNwYXRjaFRvUHJvcHNGYWN0b3JpZXMgPSBfcmVmJG1hcERpc3BhdGNoVG9Q
cm8gPT09IHVuZGVmaW5lZCA/IF9tYXBEaXNwYXRjaFRvUHJvcHMyLmRlZmF1bHQgOiBfcmVmJG1h
cERpc3BhdGNoVG9Qcm8sXG4gICAgICBfcmVmJG1lcmdlUHJvcHNGYWN0b3IgPSBfcmVmLm1lcmdl
UHJvcHNGYWN0b3JpZXMsXG4gICAgICBtZXJnZVByb3BzRmFjdG9yaWVzID0gX3JlZiRtZXJnZVBy
b3BzRmFjdG9yID09PSB1bmRlZmluZWQgPyBfbWVyZ2VQcm9wczIuZGVmYXVsdCA6IF9yZWYkbWVy
Z2VQcm9wc0ZhY3RvcixcbiAgICAgIF9yZWYkc2VsZWN0b3JGYWN0b3J5ID0gX3JlZi5zZWxlY3Rv
ckZhY3RvcnksXG4gICAgICBzZWxlY3RvckZhY3RvcnkgPSBfcmVmJHNlbGVjdG9yRmFjdG9yeSA9
PT0gdW5kZWZpbmVkID8gX3NlbGVjdG9yRmFjdG9yeTIuZGVmYXVsdCA6IF9yZWYkc2VsZWN0b3JG
YWN0b3J5O1xuXG4gIHJldHVybiBmdW5jdGlvbiBjb25uZWN0KG1hcFN0YXRlVG9Qcm9wcywgbWFw
RGlzcGF0Y2hUb1Byb3BzLCBtZXJnZVByb3BzKSB7XG4gICAgdmFyIF9yZWYyID0gYXJndW1lbnRz
Lmxlbmd0aCA+IDMgJiYgYXJndW1lbnRzWzNdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbM10g
OiB7fSxcbiAgICAgICAgX3JlZjIkcHVyZSA9IF9yZWYyLnB1cmUsXG4gICAgICAgIHB1cmUgPSBf
cmVmMiRwdXJlID09PSB1bmRlZmluZWQgPyB0cnVlIDogX3JlZjIkcHVyZSxcbiAgICAgICAgX3Jl
ZjIkYXJlU3RhdGVzRXF1YWwgPSBfcmVmMi5hcmVTdGF0ZXNFcXVhbCxcbiAgICAgICAgYXJlU3Rh
dGVzRXF1YWwgPSBfcmVmMiRhcmVTdGF0ZXNFcXVhbCA9PT0gdW5kZWZpbmVkID8gc3RyaWN0RXF1
YWwgOiBfcmVmMiRhcmVTdGF0ZXNFcXVhbCxcbiAgICAgICAgX3JlZjIkYXJlT3duUHJvcHNFcXVh
ID0gX3JlZjIuYXJlT3duUHJvcHNFcXVhbCxcbiAgICAgICAgYXJlT3duUHJvcHNFcXVhbCA9IF9y
ZWYyJGFyZU93blByb3BzRXF1YSA9PT0gdW5kZWZpbmVkID8gX3NoYWxsb3dFcXVhbDIuZGVmYXVs
dCA6IF9yZWYyJGFyZU93blByb3BzRXF1YSxcbiAgICAgICAgX3JlZjIkYXJlU3RhdGVQcm9wc0Vx
ID0gX3JlZjIuYXJlU3RhdGVQcm9wc0VxdWFsLFxuICAgICAgICBhcmVTdGF0ZVByb3BzRXF1YWwg
PSBfcmVmMiRhcmVTdGF0ZVByb3BzRXEgPT09IHVuZGVmaW5lZCA/IF9zaGFsbG93RXF1YWwyLmRl
ZmF1bHQgOiBfcmVmMiRhcmVTdGF0ZVByb3BzRXEsXG4gICAgICAgIF9yZWYyJGFyZU1lcmdlZFBy
b3BzRSA9IF9yZWYyLmFyZU1lcmdlZFByb3BzRXF1YWwsXG4gICAgICAgIGFyZU1lcmdlZFByb3Bz
RXF1YWwgPSBfcmVmMiRhcmVNZXJnZWRQcm9wc0UgPT09IHVuZGVmaW5lZCA/IF9zaGFsbG93RXF1
YWwyLmRlZmF1bHQgOiBfcmVmMiRhcmVNZXJnZWRQcm9wc0UsXG4gICAgICAgIGV4dHJhT3B0aW9u
cyA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhfcmVmMiwgWydwdXJlJywgJ2FyZVN0YXRlc0Vx
dWFsJywgJ2FyZU93blByb3BzRXF1YWwnLCAnYXJlU3RhdGVQcm9wc0VxdWFsJywgJ2FyZU1lcmdl
ZFByb3BzRXF1YWwnXSk7XG5cbiAgICB2YXIgaW5pdE1hcFN0YXRlVG9Qcm9wcyA9IG1hdGNoKG1h
cFN0YXRlVG9Qcm9wcywgbWFwU3RhdGVUb1Byb3BzRmFjdG9yaWVzLCAnbWFwU3RhdGVUb1Byb3Bz
Jyk7XG4gICAgdmFyIGluaXRNYXBEaXNwYXRjaFRvUHJvcHMgPSBtYXRjaChtYXBEaXNwYXRjaFRv
UHJvcHMsIG1hcERpc3BhdGNoVG9Qcm9wc0ZhY3RvcmllcywgJ21hcERpc3BhdGNoVG9Qcm9wcycp
O1xuICAgIHZhciBpbml0TWVyZ2VQcm9wcyA9IG1hdGNoKG1lcmdlUHJvcHMsIG1lcmdlUHJvcHNG
YWN0b3JpZXMsICdtZXJnZVByb3BzJyk7XG5cbiAgICByZXR1cm4gY29ubmVjdEhPQyhzZWxlY3Rv
ckZhY3RvcnksIF9leHRlbmRzKHtcbiAgICAgIC8vIHVzZWQgaW4gZXJyb3IgbWVzc2FnZXNcbiAg
ICAgIG1ldGhvZE5hbWU6ICdjb25uZWN0JyxcblxuICAgICAgLy8gdXNlZCB0byBjb21wdXRlIENv
bm5lY3QncyBkaXNwbGF5TmFtZSBmcm9tIHRoZSB3cmFwcGVkIGNvbXBvbmVudCdzIGRpc3BsYXlO
YW1lLlxuICAgICAgZ2V0RGlzcGxheU5hbWU6IGZ1bmN0aW9uIGdldERpc3BsYXlOYW1lKG5hbWUp
IHtcbiAgICAgICAgcmV0dXJuICdDb25uZWN0KCcgKyBuYW1lICsgJyknO1xuICAgICAgfSxcblxu
ICAgICAgLy8gaWYgbWFwU3RhdGVUb1Byb3BzIGlzIGZhbHN5LCB0aGUgQ29ubmVjdCBjb21wb25l
bnQgZG9lc24ndCBzdWJzY3JpYmUgdG8gc3RvcmUgc3RhdGUgY2hhbmdlc1xuICAgICAgc2hvdWxk
SGFuZGxlU3RhdGVDaGFuZ2VzOiBCb29sZWFuKG1hcFN0YXRlVG9Qcm9wcyksXG5cbiAgICAgIC8v
IHBhc3NlZCB0aHJvdWdoIHRvIHNlbGVjdG9yRmFjdG9yeVxuICAgICAgaW5pdE1hcFN0YXRlVG9Q
cm9wczogaW5pdE1hcFN0YXRlVG9Qcm9wcyxcbiAgICAgIGluaXRNYXBEaXNwYXRjaFRvUHJvcHM6
IGluaXRNYXBEaXNwYXRjaFRvUHJvcHMsXG4gICAgICBpbml0TWVyZ2VQcm9wczogaW5pdE1lcmdl
UHJvcHMsXG4gICAgICBwdXJlOiBwdXJlLFxuICAgICAgYXJlU3RhdGVzRXF1YWw6IGFyZVN0YXRl
c0VxdWFsLFxuICAgICAgYXJlT3duUHJvcHNFcXVhbDogYXJlT3duUHJvcHNFcXVhbCxcbiAgICAg
IGFyZVN0YXRlUHJvcHNFcXVhbDogYXJlU3RhdGVQcm9wc0VxdWFsLFxuICAgICAgYXJlTWVyZ2Vk
UHJvcHNFcXVhbDogYXJlTWVyZ2VkUHJvcHNFcXVhbFxuXG4gICAgfSwgZXh0cmFPcHRpb25zKSk7
XG4gIH07XG59XG5cbmV4cG9ydHMuZGVmYXVsdCA9IGNyZWF0ZUNvbm5lY3QoKTtcblxuXG4vKioq
KioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFjdC1yZWR1eC9s
aWIvY29ubmVjdC9jb25uZWN0LmpzXG4gKiogbW9kdWxlIGlkID0gMTg4XG4gKiogbW9kdWxlIGNo
dW5rcyA9IDBcbiAqKi8iLCIndXNlIHN0cmljdCc7XG5cbmV4cG9ydHMuX19lc01vZHVsZSA9IHRy
dWU7XG5leHBvcnRzLndoZW5NYXBEaXNwYXRjaFRvUHJvcHNJc0Z1bmN0aW9uID0gd2hlbk1hcERp
c3BhdGNoVG9Qcm9wc0lzRnVuY3Rpb247XG5leHBvcnRzLndoZW5NYXBEaXNwYXRjaFRvUHJvcHNJ
c01pc3NpbmcgPSB3aGVuTWFwRGlzcGF0Y2hUb1Byb3BzSXNNaXNzaW5nO1xuZXhwb3J0cy53aGVu
TWFwRGlzcGF0Y2hUb1Byb3BzSXNPYmplY3QgPSB3aGVuTWFwRGlzcGF0Y2hUb1Byb3BzSXNPYmpl
Y3Q7XG5cbnZhciBfcmVkdXggPSByZXF1aXJlKCdyZWR1eCcpO1xuXG52YXIgX3dyYXBNYXBUb1By
b3BzID0gcmVxdWlyZSgnLi93cmFwTWFwVG9Qcm9wcycpO1xuXG5mdW5jdGlvbiB3aGVuTWFwRGlz
cGF0Y2hUb1Byb3BzSXNGdW5jdGlvbihtYXBEaXNwYXRjaFRvUHJvcHMpIHtcbiAgcmV0dXJuIHR5
cGVvZiBtYXBEaXNwYXRjaFRvUHJvcHMgPT09ICdmdW5jdGlvbicgPyAoMCwgX3dyYXBNYXBUb1By
b3BzLndyYXBNYXBUb1Byb3BzRnVuYykobWFwRGlzcGF0Y2hUb1Byb3BzLCAnbWFwRGlzcGF0Y2hU
b1Byb3BzJykgOiB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIHdoZW5NYXBEaXNwYXRjaFRvUHJv
cHNJc01pc3NpbmcobWFwRGlzcGF0Y2hUb1Byb3BzKSB7XG4gIHJldHVybiAhbWFwRGlzcGF0Y2hU
b1Byb3BzID8gKDAsIF93cmFwTWFwVG9Qcm9wcy53cmFwTWFwVG9Qcm9wc0NvbnN0YW50KShmdW5j
dGlvbiAoZGlzcGF0Y2gpIHtcbiAgICByZXR1cm4geyBkaXNwYXRjaDogZGlzcGF0Y2ggfTtcbiAg
fSkgOiB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIHdoZW5NYXBEaXNwYXRjaFRvUHJvcHNJc09i
amVjdChtYXBEaXNwYXRjaFRvUHJvcHMpIHtcbiAgcmV0dXJuIG1hcERpc3BhdGNoVG9Qcm9wcyAm
JiB0eXBlb2YgbWFwRGlzcGF0Y2hUb1Byb3BzID09PSAnb2JqZWN0JyA/ICgwLCBfd3JhcE1hcFRv
UHJvcHMud3JhcE1hcFRvUHJvcHNDb25zdGFudCkoZnVuY3Rpb24gKGRpc3BhdGNoKSB7XG4gICAg
cmV0dXJuICgwLCBfcmVkdXguYmluZEFjdGlvbkNyZWF0b3JzKShtYXBEaXNwYXRjaFRvUHJvcHMs
IGRpc3BhdGNoKTtcbiAgfSkgOiB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydHMuZGVmYXVsdCA9IFt3
aGVuTWFwRGlzcGF0Y2hUb1Byb3BzSXNGdW5jdGlvbiwgd2hlbk1hcERpc3BhdGNoVG9Qcm9wc0lz
TWlzc2luZywgd2hlbk1hcERpc3BhdGNoVG9Qcm9wc0lzT2JqZWN0XTtcblxuXG4vKioqKioqKioq
KioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFjdC1yZWR1eC9saWIvY29u
bmVjdC9tYXBEaXNwYXRjaFRvUHJvcHMuanNcbiAqKiBtb2R1bGUgaWQgPSAxODlcbiAqKiBtb2R1
bGUgY2h1bmtzID0gMFxuICoqLyIsIid1c2Ugc3RyaWN0JztcblxuZXhwb3J0cy5fX2VzTW9kdWxl
ID0gdHJ1ZTtcbmV4cG9ydHMud2hlbk1hcFN0YXRlVG9Qcm9wc0lzRnVuY3Rpb24gPSB3aGVuTWFw
U3RhdGVUb1Byb3BzSXNGdW5jdGlvbjtcbmV4cG9ydHMud2hlbk1hcFN0YXRlVG9Qcm9wc0lzTWlz
c2luZyA9IHdoZW5NYXBTdGF0ZVRvUHJvcHNJc01pc3Npbmc7XG5cbnZhciBfd3JhcE1hcFRvUHJv
cHMgPSByZXF1aXJlKCcuL3dyYXBNYXBUb1Byb3BzJyk7XG5cbmZ1bmN0aW9uIHdoZW5NYXBTdGF0
ZVRvUHJvcHNJc0Z1bmN0aW9uKG1hcFN0YXRlVG9Qcm9wcykge1xuICByZXR1cm4gdHlwZW9mIG1h
cFN0YXRlVG9Qcm9wcyA9PT0gJ2Z1bmN0aW9uJyA/ICgwLCBfd3JhcE1hcFRvUHJvcHMud3JhcE1h
cFRvUHJvcHNGdW5jKShtYXBTdGF0ZVRvUHJvcHMsICdtYXBTdGF0ZVRvUHJvcHMnKSA6IHVuZGVm
aW5lZDtcbn1cblxuZnVuY3Rpb24gd2hlbk1hcFN0YXRlVG9Qcm9wc0lzTWlzc2luZyhtYXBTdGF0
ZVRvUHJvcHMpIHtcbiAgcmV0dXJuICFtYXBTdGF0ZVRvUHJvcHMgPyAoMCwgX3dyYXBNYXBUb1By
b3BzLndyYXBNYXBUb1Byb3BzQ29uc3RhbnQpKGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4ge307
XG4gIH0pIDogdW5kZWZpbmVkO1xufVxuXG5leHBvcnRzLmRlZmF1bHQgPSBbd2hlbk1hcFN0YXRl
VG9Qcm9wc0lzRnVuY3Rpb24sIHdoZW5NYXBTdGF0ZVRvUHJvcHNJc01pc3NpbmddO1xuXG5cbi8q
KioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0LXJlZHV4
L2xpYi9jb25uZWN0L21hcFN0YXRlVG9Qcm9wcy5qc1xuICoqIG1vZHVsZSBpZCA9IDE5MFxuICoq
IG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiJ3VzZSBzdHJpY3QnO1xuXG5leHBvcnRzLl9fZXNN
b2R1bGUgPSB0cnVlO1xuXG52YXIgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9u
ICh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsg
dmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgeyBpZiAo
T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgeyB0YXJn
ZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gfSByZXR1cm4gdGFyZ2V0OyB9O1xuXG5leHBvcnRz
LmRlZmF1bHRNZXJnZVByb3BzID0gZGVmYXVsdE1lcmdlUHJvcHM7XG5leHBvcnRzLndyYXBNZXJn
ZVByb3BzRnVuYyA9IHdyYXBNZXJnZVByb3BzRnVuYztcbmV4cG9ydHMud2hlbk1lcmdlUHJvcHNJ
c0Z1bmN0aW9uID0gd2hlbk1lcmdlUHJvcHNJc0Z1bmN0aW9uO1xuZXhwb3J0cy53aGVuTWVyZ2VQ
cm9wc0lzT21pdHRlZCA9IHdoZW5NZXJnZVByb3BzSXNPbWl0dGVkO1xuXG52YXIgX3ZlcmlmeVBs
YWluT2JqZWN0ID0gcmVxdWlyZSgnLi4vdXRpbHMvdmVyaWZ5UGxhaW5PYmplY3QnKTtcblxudmFy
IF92ZXJpZnlQbGFpbk9iamVjdDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF92ZXJpZnlQbGFp
bk9iamVjdCk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVy
biBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbmZ1
bmN0aW9uIGRlZmF1bHRNZXJnZVByb3BzKHN0YXRlUHJvcHMsIGRpc3BhdGNoUHJvcHMsIG93blBy
b3BzKSB7XG4gIHJldHVybiBfZXh0ZW5kcyh7fSwgb3duUHJvcHMsIHN0YXRlUHJvcHMsIGRpc3Bh
dGNoUHJvcHMpO1xufVxuXG5mdW5jdGlvbiB3cmFwTWVyZ2VQcm9wc0Z1bmMobWVyZ2VQcm9wcykg
e1xuICByZXR1cm4gZnVuY3Rpb24gaW5pdE1lcmdlUHJvcHNQcm94eShkaXNwYXRjaCwgX3JlZikg
e1xuICAgIHZhciBkaXNwbGF5TmFtZSA9IF9yZWYuZGlzcGxheU5hbWUsXG4gICAgICAgIHB1cmUg
PSBfcmVmLnB1cmUsXG4gICAgICAgIGFyZU1lcmdlZFByb3BzRXF1YWwgPSBfcmVmLmFyZU1lcmdl
ZFByb3BzRXF1YWw7XG5cbiAgICB2YXIgaGFzUnVuT25jZSA9IGZhbHNlO1xuICAgIHZhciBtZXJn
ZWRQcm9wcyA9IHZvaWQgMDtcblxuICAgIHJldHVybiBmdW5jdGlvbiBtZXJnZVByb3BzUHJveHko
c3RhdGVQcm9wcywgZGlzcGF0Y2hQcm9wcywgb3duUHJvcHMpIHtcbiAgICAgIHZhciBuZXh0TWVy
Z2VkUHJvcHMgPSBtZXJnZVByb3BzKHN0YXRlUHJvcHMsIGRpc3BhdGNoUHJvcHMsIG93blByb3Bz
KTtcblxuICAgICAgaWYgKGhhc1J1bk9uY2UpIHtcbiAgICAgICAgaWYgKCFwdXJlIHx8ICFhcmVN
ZXJnZWRQcm9wc0VxdWFsKG5leHRNZXJnZWRQcm9wcywgbWVyZ2VkUHJvcHMpKSBtZXJnZWRQcm9w
cyA9IG5leHRNZXJnZWRQcm9wcztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGhhc1J1bk9uY2Ug
PSB0cnVlO1xuICAgICAgICBtZXJnZWRQcm9wcyA9IG5leHRNZXJnZWRQcm9wcztcblxuICAgICAg
ICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgKDAsIF92ZXJpZnlQ
bGFpbk9iamVjdDIuZGVmYXVsdCkobWVyZ2VkUHJvcHMsIGRpc3BsYXlOYW1lLCAnbWVyZ2VQcm9w
cycpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gbWVyZ2VkUHJvcHM7XG4gICAgfTtcbiAgfTtc
bn1cblxuZnVuY3Rpb24gd2hlbk1lcmdlUHJvcHNJc0Z1bmN0aW9uKG1lcmdlUHJvcHMpIHtcbiAg
cmV0dXJuIHR5cGVvZiBtZXJnZVByb3BzID09PSAnZnVuY3Rpb24nID8gd3JhcE1lcmdlUHJvcHNG
dW5jKG1lcmdlUHJvcHMpIDogdW5kZWZpbmVkO1xufVxuXG5mdW5jdGlvbiB3aGVuTWVyZ2VQcm9w
c0lzT21pdHRlZChtZXJnZVByb3BzKSB7XG4gIHJldHVybiAhbWVyZ2VQcm9wcyA/IGZ1bmN0aW9u
ICgpIHtcbiAgICByZXR1cm4gZGVmYXVsdE1lcmdlUHJvcHM7XG4gIH0gOiB1bmRlZmluZWQ7XG59
XG5cbmV4cG9ydHMuZGVmYXVsdCA9IFt3aGVuTWVyZ2VQcm9wc0lzRnVuY3Rpb24sIHdoZW5NZXJn
ZVByb3BzSXNPbWl0dGVkXTtcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZP
T1RFUlxuICoqIC4vfi9yZWFjdC1yZWR1eC9saWIvY29ubmVjdC9tZXJnZVByb3BzLmpzXG4gKiog
bW9kdWxlIGlkID0gMTkxXG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIndXNlIHN0cmlj
dCc7XG5cbmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5leHBvcnRzLmltcHVyZUZpbmFsUHJv
cHNTZWxlY3RvckZhY3RvcnkgPSBpbXB1cmVGaW5hbFByb3BzU2VsZWN0b3JGYWN0b3J5O1xuZXhw
b3J0cy5wdXJlRmluYWxQcm9wc1NlbGVjdG9yRmFjdG9yeSA9IHB1cmVGaW5hbFByb3BzU2VsZWN0
b3JGYWN0b3J5O1xuZXhwb3J0cy5kZWZhdWx0ID0gZmluYWxQcm9wc1NlbGVjdG9yRmFjdG9yeTtc
blxudmFyIF92ZXJpZnlTdWJzZWxlY3RvcnMgPSByZXF1aXJlKCcuL3ZlcmlmeVN1YnNlbGVjdG9y
cycpO1xuXG52YXIgX3ZlcmlmeVN1YnNlbGVjdG9yczIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0
KF92ZXJpZnlTdWJzZWxlY3RvcnMpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0
KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBv
YmogfTsgfVxuXG5mdW5jdGlvbiBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMob2JqLCBrZXlzKSB7
IHZhciB0YXJnZXQgPSB7fTsgZm9yICh2YXIgaSBpbiBvYmopIHsgaWYgKGtleXMuaW5kZXhPZihp
KSA+PSAwKSBjb250aW51ZTsgaWYgKCFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNh
bGwob2JqLCBpKSkgY29udGludWU7IHRhcmdldFtpXSA9IG9ialtpXTsgfSByZXR1cm4gdGFyZ2V0
OyB9XG5cbmZ1bmN0aW9uIGltcHVyZUZpbmFsUHJvcHNTZWxlY3RvckZhY3RvcnkobWFwU3RhdGVU
b1Byb3BzLCBtYXBEaXNwYXRjaFRvUHJvcHMsIG1lcmdlUHJvcHMsIGRpc3BhdGNoKSB7XG4gIHJl
dHVybiBmdW5jdGlvbiBpbXB1cmVGaW5hbFByb3BzU2VsZWN0b3Ioc3RhdGUsIG93blByb3BzKSB7
XG4gICAgcmV0dXJuIG1lcmdlUHJvcHMobWFwU3RhdGVUb1Byb3BzKHN0YXRlLCBvd25Qcm9wcyks
IG1hcERpc3BhdGNoVG9Qcm9wcyhkaXNwYXRjaCwgb3duUHJvcHMpLCBvd25Qcm9wcyk7XG4gIH07
XG59XG5cbmZ1bmN0aW9uIHB1cmVGaW5hbFByb3BzU2VsZWN0b3JGYWN0b3J5KG1hcFN0YXRlVG9Q
cm9wcywgbWFwRGlzcGF0Y2hUb1Byb3BzLCBtZXJnZVByb3BzLCBkaXNwYXRjaCwgX3JlZikge1xu
ICB2YXIgYXJlU3RhdGVzRXF1YWwgPSBfcmVmLmFyZVN0YXRlc0VxdWFsLFxuICAgICAgYXJlT3du
UHJvcHNFcXVhbCA9IF9yZWYuYXJlT3duUHJvcHNFcXVhbCxcbiAgICAgIGFyZVN0YXRlUHJvcHNF
cXVhbCA9IF9yZWYuYXJlU3RhdGVQcm9wc0VxdWFsO1xuXG4gIHZhciBoYXNSdW5BdExlYXN0T25j
ZSA9IGZhbHNlO1xuICB2YXIgc3RhdGUgPSB2b2lkIDA7XG4gIHZhciBvd25Qcm9wcyA9IHZvaWQg
MDtcbiAgdmFyIHN0YXRlUHJvcHMgPSB2b2lkIDA7XG4gIHZhciBkaXNwYXRjaFByb3BzID0gdm9p
ZCAwO1xuICB2YXIgbWVyZ2VkUHJvcHMgPSB2b2lkIDA7XG5cbiAgZnVuY3Rpb24gaGFuZGxlRmly
c3RDYWxsKGZpcnN0U3RhdGUsIGZpcnN0T3duUHJvcHMpIHtcbiAgICBzdGF0ZSA9IGZpcnN0U3Rh
dGU7XG4gICAgb3duUHJvcHMgPSBmaXJzdE93blByb3BzO1xuICAgIHN0YXRlUHJvcHMgPSBtYXBT
dGF0ZVRvUHJvcHMoc3RhdGUsIG93blByb3BzKTtcbiAgICBkaXNwYXRjaFByb3BzID0gbWFwRGlz
cGF0Y2hUb1Byb3BzKGRpc3BhdGNoLCBvd25Qcm9wcyk7XG4gICAgbWVyZ2VkUHJvcHMgPSBtZXJn
ZVByb3BzKHN0YXRlUHJvcHMsIGRpc3BhdGNoUHJvcHMsIG93blByb3BzKTtcbiAgICBoYXNSdW5B
dExlYXN0T25jZSA9IHRydWU7XG4gICAgcmV0dXJuIG1lcmdlZFByb3BzO1xuICB9XG5cbiAgZnVu
Y3Rpb24gaGFuZGxlTmV3UHJvcHNBbmROZXdTdGF0ZSgpIHtcbiAgICBzdGF0ZVByb3BzID0gbWFw
U3RhdGVUb1Byb3BzKHN0YXRlLCBvd25Qcm9wcyk7XG5cbiAgICBpZiAobWFwRGlzcGF0Y2hUb1By
b3BzLmRlcGVuZHNPbk93blByb3BzKSBkaXNwYXRjaFByb3BzID0gbWFwRGlzcGF0Y2hUb1Byb3Bz
KGRpc3BhdGNoLCBvd25Qcm9wcyk7XG5cbiAgICBtZXJnZWRQcm9wcyA9IG1lcmdlUHJvcHMoc3Rh
dGVQcm9wcywgZGlzcGF0Y2hQcm9wcywgb3duUHJvcHMpO1xuICAgIHJldHVybiBtZXJnZWRQcm9w
cztcbiAgfVxuXG4gIGZ1bmN0aW9uIGhhbmRsZU5ld1Byb3BzKCkge1xuICAgIGlmIChtYXBTdGF0
ZVRvUHJvcHMuZGVwZW5kc09uT3duUHJvcHMpIHN0YXRlUHJvcHMgPSBtYXBTdGF0ZVRvUHJvcHMo
c3RhdGUsIG93blByb3BzKTtcblxuICAgIGlmIChtYXBEaXNwYXRjaFRvUHJvcHMuZGVwZW5kc09u
T3duUHJvcHMpIGRpc3BhdGNoUHJvcHMgPSBtYXBEaXNwYXRjaFRvUHJvcHMoZGlzcGF0Y2gsIG93
blByb3BzKTtcblxuICAgIG1lcmdlZFByb3BzID0gbWVyZ2VQcm9wcyhzdGF0ZVByb3BzLCBkaXNw
YXRjaFByb3BzLCBvd25Qcm9wcyk7XG4gICAgcmV0dXJuIG1lcmdlZFByb3BzO1xuICB9XG5cbiAg
ZnVuY3Rpb24gaGFuZGxlTmV3U3RhdGUoKSB7XG4gICAgdmFyIG5leHRTdGF0ZVByb3BzID0gbWFw
U3RhdGVUb1Byb3BzKHN0YXRlLCBvd25Qcm9wcyk7XG4gICAgdmFyIHN0YXRlUHJvcHNDaGFuZ2Vk
ID0gIWFyZVN0YXRlUHJvcHNFcXVhbChuZXh0U3RhdGVQcm9wcywgc3RhdGVQcm9wcyk7XG4gICAg
c3RhdGVQcm9wcyA9IG5leHRTdGF0ZVByb3BzO1xuXG4gICAgaWYgKHN0YXRlUHJvcHNDaGFuZ2Vk
KSBtZXJnZWRQcm9wcyA9IG1lcmdlUHJvcHMoc3RhdGVQcm9wcywgZGlzcGF0Y2hQcm9wcywgb3du
UHJvcHMpO1xuXG4gICAgcmV0dXJuIG1lcmdlZFByb3BzO1xuICB9XG5cbiAgZnVuY3Rpb24gaGFu
ZGxlU3Vic2VxdWVudENhbGxzKG5leHRTdGF0ZSwgbmV4dE93blByb3BzKSB7XG4gICAgdmFyIHBy
b3BzQ2hhbmdlZCA9ICFhcmVPd25Qcm9wc0VxdWFsKG5leHRPd25Qcm9wcywgb3duUHJvcHMpO1xu
ICAgIHZhciBzdGF0ZUNoYW5nZWQgPSAhYXJlU3RhdGVzRXF1YWwobmV4dFN0YXRlLCBzdGF0ZSk7
XG4gICAgc3RhdGUgPSBuZXh0U3RhdGU7XG4gICAgb3duUHJvcHMgPSBuZXh0T3duUHJvcHM7XG5c
biAgICBpZiAocHJvcHNDaGFuZ2VkICYmIHN0YXRlQ2hhbmdlZCkgcmV0dXJuIGhhbmRsZU5ld1By
b3BzQW5kTmV3U3RhdGUoKTtcbiAgICBpZiAocHJvcHNDaGFuZ2VkKSByZXR1cm4gaGFuZGxlTmV3
UHJvcHMoKTtcbiAgICBpZiAoc3RhdGVDaGFuZ2VkKSByZXR1cm4gaGFuZGxlTmV3U3RhdGUoKTtc
biAgICByZXR1cm4gbWVyZ2VkUHJvcHM7XG4gIH1cblxuICByZXR1cm4gZnVuY3Rpb24gcHVyZUZp
bmFsUHJvcHNTZWxlY3RvcihuZXh0U3RhdGUsIG5leHRPd25Qcm9wcykge1xuICAgIHJldHVybiBo
YXNSdW5BdExlYXN0T25jZSA/IGhhbmRsZVN1YnNlcXVlbnRDYWxscyhuZXh0U3RhdGUsIG5leHRP
d25Qcm9wcykgOiBoYW5kbGVGaXJzdENhbGwobmV4dFN0YXRlLCBuZXh0T3duUHJvcHMpO1xuICB9
O1xufVxuXG4vLyBUT0RPOiBBZGQgbW9yZSBjb21tZW50c1xuXG4vLyBJZiBwdXJlIGlzIHRydWUs
IHRoZSBzZWxlY3RvciByZXR1cm5lZCBieSBzZWxlY3RvckZhY3Rvcnkgd2lsbCBtZW1vaXplIGl0
cyByZXN1bHRzLFxuLy8gYWxsb3dpbmcgY29ubmVjdEFkdmFuY2VkJ3Mgc2hvdWxkQ29tcG9uZW50
VXBkYXRlIHRvIHJldHVybiBmYWxzZSBpZiBmaW5hbFxuLy8gcHJvcHMgaGF2ZSBub3QgY2hhbmdl
ZC4gSWYgZmFsc2UsIHRoZSBzZWxlY3RvciB3aWxsIGFsd2F5cyByZXR1cm4gYSBuZXdcbi8vIG9i
amVjdCBhbmQgc2hvdWxkQ29tcG9uZW50VXBkYXRlIHdpbGwgYWx3YXlzIHJldHVybiB0cnVlLlxu
XG5mdW5jdGlvbiBmaW5hbFByb3BzU2VsZWN0b3JGYWN0b3J5KGRpc3BhdGNoLCBfcmVmMikge1xu
ICB2YXIgaW5pdE1hcFN0YXRlVG9Qcm9wcyA9IF9yZWYyLmluaXRNYXBTdGF0ZVRvUHJvcHMsXG4g
ICAgICBpbml0TWFwRGlzcGF0Y2hUb1Byb3BzID0gX3JlZjIuaW5pdE1hcERpc3BhdGNoVG9Qcm9w
cyxcbiAgICAgIGluaXRNZXJnZVByb3BzID0gX3JlZjIuaW5pdE1lcmdlUHJvcHMsXG4gICAgICBv
cHRpb25zID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKF9yZWYyLCBbJ2luaXRNYXBTdGF0ZVRv
UHJvcHMnLCAnaW5pdE1hcERpc3BhdGNoVG9Qcm9wcycsICdpbml0TWVyZ2VQcm9wcyddKTtcblxu
ICB2YXIgbWFwU3RhdGVUb1Byb3BzID0gaW5pdE1hcFN0YXRlVG9Qcm9wcyhkaXNwYXRjaCwgb3B0
aW9ucyk7XG4gIHZhciBtYXBEaXNwYXRjaFRvUHJvcHMgPSBpbml0TWFwRGlzcGF0Y2hUb1Byb3Bz
KGRpc3BhdGNoLCBvcHRpb25zKTtcbiAgdmFyIG1lcmdlUHJvcHMgPSBpbml0TWVyZ2VQcm9wcyhk
aXNwYXRjaCwgb3B0aW9ucyk7XG5cbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJv
ZHVjdGlvbicpIHtcbiAgICAoMCwgX3ZlcmlmeVN1YnNlbGVjdG9yczIuZGVmYXVsdCkobWFwU3Rh
dGVUb1Byb3BzLCBtYXBEaXNwYXRjaFRvUHJvcHMsIG1lcmdlUHJvcHMsIG9wdGlvbnMuZGlzcGxh
eU5hbWUpO1xuICB9XG5cbiAgdmFyIHNlbGVjdG9yRmFjdG9yeSA9IG9wdGlvbnMucHVyZSA/IHB1
cmVGaW5hbFByb3BzU2VsZWN0b3JGYWN0b3J5IDogaW1wdXJlRmluYWxQcm9wc1NlbGVjdG9yRmFj
dG9yeTtcblxuICByZXR1cm4gc2VsZWN0b3JGYWN0b3J5KG1hcFN0YXRlVG9Qcm9wcywgbWFwRGlz
cGF0Y2hUb1Byb3BzLCBtZXJnZVByb3BzLCBkaXNwYXRjaCwgb3B0aW9ucyk7XG59XG5cblxuLyoq
KioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3QtcmVkdXgv
bGliL2Nvbm5lY3Qvc2VsZWN0b3JGYWN0b3J5LmpzXG4gKiogbW9kdWxlIGlkID0gMTkyXG4gKiog
bW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIndXNlIHN0cmljdCc7XG5cbmV4cG9ydHMuX19lc01v
ZHVsZSA9IHRydWU7XG5leHBvcnRzLmRlZmF1bHQgPSB2ZXJpZnlTdWJzZWxlY3RvcnM7XG5cbnZh
ciBfd2FybmluZyA9IHJlcXVpcmUoJy4uL3V0aWxzL3dhcm5pbmcnKTtcblxudmFyIF93YXJuaW5n
MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3dhcm5pbmcpO1xuXG5mdW5jdGlvbiBfaW50ZXJv
cFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2Jq
IDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG5mdW5jdGlvbiB2ZXJpZnkoc2VsZWN0b3IsIG1ldGhv
ZE5hbWUsIGRpc3BsYXlOYW1lKSB7XG4gIGlmICghc2VsZWN0b3IpIHtcbiAgICB0aHJvdyBuZXcg
RXJyb3IoJ1VuZXhwZWN0ZWQgdmFsdWUgZm9yICcgKyBtZXRob2ROYW1lICsgJyBpbiAnICsgZGlz
cGxheU5hbWUgKyAnLicpO1xuICB9IGVsc2UgaWYgKG1ldGhvZE5hbWUgPT09ICdtYXBTdGF0ZVRv
UHJvcHMnIHx8IG1ldGhvZE5hbWUgPT09ICdtYXBEaXNwYXRjaFRvUHJvcHMnKSB7XG4gICAgaWYg
KCFzZWxlY3Rvci5oYXNPd25Qcm9wZXJ0eSgnZGVwZW5kc09uT3duUHJvcHMnKSkge1xuICAgICAg
KDAsIF93YXJuaW5nMi5kZWZhdWx0KSgnVGhlIHNlbGVjdG9yIGZvciAnICsgbWV0aG9kTmFtZSAr
ICcgb2YgJyArIGRpc3BsYXlOYW1lICsgJyBkaWQgbm90IHNwZWNpZnkgYSB2YWx1ZSBmb3IgZGVw
ZW5kc09uT3duUHJvcHMuJyk7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHZlcmlmeVN1YnNl
bGVjdG9ycyhtYXBTdGF0ZVRvUHJvcHMsIG1hcERpc3BhdGNoVG9Qcm9wcywgbWVyZ2VQcm9wcywg
ZGlzcGxheU5hbWUpIHtcbiAgdmVyaWZ5KG1hcFN0YXRlVG9Qcm9wcywgJ21hcFN0YXRlVG9Qcm9w
cycsIGRpc3BsYXlOYW1lKTtcbiAgdmVyaWZ5KG1hcERpc3BhdGNoVG9Qcm9wcywgJ21hcERpc3Bh
dGNoVG9Qcm9wcycsIGRpc3BsYXlOYW1lKTtcbiAgdmVyaWZ5KG1lcmdlUHJvcHMsICdtZXJnZVBy
b3BzJywgZGlzcGxheU5hbWUpO1xufVxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBB
Q0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0LXJlZHV4L2xpYi9jb25uZWN0L3ZlcmlmeVN1YnNlbGVj
dG9ycy5qc1xuICoqIG1vZHVsZSBpZCA9IDE5M1xuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiov
IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5cbmZ1bmN0
aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFu
Y2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5v
dCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKTsgfSB9XG5cbi8vIGVuY2Fwc3VsYXRlcyB0
aGUgc3Vic2NyaXB0aW9uIGxvZ2ljIGZvciBjb25uZWN0aW5nIGEgY29tcG9uZW50IHRvIHRoZSBy
ZWR1eCBzdG9yZSwgYXNcbi8vIHdlbGwgYXMgbmVzdGluZyBzdWJzY3JpcHRpb25zIG9mIGRlc2Nl
bmRhbnQgY29tcG9uZW50cywgc28gdGhhdCB3ZSBjYW4gZW5zdXJlIHRoZVxuLy8gYW5jZXN0b3Ig
Y29tcG9uZW50cyByZS1yZW5kZXIgYmVmb3JlIGRlc2NlbmRhbnRzXG5cbnZhciBDTEVBUkVEID0g
bnVsbDtcbnZhciBudWxsTGlzdGVuZXJzID0ge1xuICBub3RpZnk6IGZ1bmN0aW9uIG5vdGlmeSgp
IHt9XG59O1xuXG5mdW5jdGlvbiBjcmVhdGVMaXN0ZW5lckNvbGxlY3Rpb24oKSB7XG4gIC8vIHRo
ZSBjdXJyZW50L25leHQgcGF0dGVybiBpcyBjb3BpZWQgZnJvbSByZWR1eCdzIGNyZWF0ZVN0b3Jl
IGNvZGUuXG4gIC8vIFRPRE86IHJlZmFjdG9yK2V4cG9zZSB0aGF0IGNvZGUgdG8gYmUgcmV1c2Fi
bGUgaGVyZT9cbiAgdmFyIGN1cnJlbnQgPSBbXTtcbiAgdmFyIG5leHQgPSBbXTtcblxuICByZXR1
cm4ge1xuICAgIGNsZWFyOiBmdW5jdGlvbiBjbGVhcigpIHtcbiAgICAgIG5leHQgPSBDTEVBUkVE
O1xuICAgICAgY3VycmVudCA9IENMRUFSRUQ7XG4gICAgfSxcbiAgICBub3RpZnk6IGZ1bmN0aW9u
IG5vdGlmeSgpIHtcbiAgICAgIHZhciBsaXN0ZW5lcnMgPSBjdXJyZW50ID0gbmV4dDtcbiAgICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgbGlzdGVuZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGxp
c3RlbmVyc1tpXSgpO1xuICAgICAgfVxuICAgIH0sXG4gICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7
XG4gICAgICByZXR1cm4gbmV4dDtcbiAgICB9LFxuICAgIHN1YnNjcmliZTogZnVuY3Rpb24gc3Vi
c2NyaWJlKGxpc3RlbmVyKSB7XG4gICAgICB2YXIgaXNTdWJzY3JpYmVkID0gdHJ1ZTtcbiAgICAg
IGlmIChuZXh0ID09PSBjdXJyZW50KSBuZXh0ID0gY3VycmVudC5zbGljZSgpO1xuICAgICAgbmV4
dC5wdXNoKGxpc3RlbmVyKTtcblxuICAgICAgcmV0dXJuIGZ1bmN0aW9uIHVuc3Vic2NyaWJlKCkg
e1xuICAgICAgICBpZiAoIWlzU3Vic2NyaWJlZCB8fCBjdXJyZW50ID09PSBDTEVBUkVEKSByZXR1
cm47XG4gICAgICAgIGlzU3Vic2NyaWJlZCA9IGZhbHNlO1xuXG4gICAgICAgIGlmIChuZXh0ID09
PSBjdXJyZW50KSBuZXh0ID0gY3VycmVudC5zbGljZSgpO1xuICAgICAgICBuZXh0LnNwbGljZShu
ZXh0LmluZGV4T2YobGlzdGVuZXIpLCAxKTtcbiAgICAgIH07XG4gICAgfVxuICB9O1xufVxuXG52
YXIgU3Vic2NyaXB0aW9uID0gZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBTdWJzY3JpcHRpb24o
c3RvcmUsIHBhcmVudFN1Yiwgb25TdGF0ZUNoYW5nZSkge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0
aGlzLCBTdWJzY3JpcHRpb24pO1xuXG4gICAgdGhpcy5zdG9yZSA9IHN0b3JlO1xuICAgIHRoaXMu
cGFyZW50U3ViID0gcGFyZW50U3ViO1xuICAgIHRoaXMub25TdGF0ZUNoYW5nZSA9IG9uU3RhdGVD
aGFuZ2U7XG4gICAgdGhpcy51bnN1YnNjcmliZSA9IG51bGw7XG4gICAgdGhpcy5saXN0ZW5lcnMg
PSBudWxsTGlzdGVuZXJzO1xuICB9XG5cbiAgU3Vic2NyaXB0aW9uLnByb3RvdHlwZS5hZGROZXN0
ZWRTdWIgPSBmdW5jdGlvbiBhZGROZXN0ZWRTdWIobGlzdGVuZXIpIHtcbiAgICB0aGlzLnRyeVN1
YnNjcmliZSgpO1xuICAgIHJldHVybiB0aGlzLmxpc3RlbmVycy5zdWJzY3JpYmUobGlzdGVuZXIp
O1xuICB9O1xuXG4gIFN1YnNjcmlwdGlvbi5wcm90b3R5cGUubm90aWZ5TmVzdGVkU3VicyA9IGZ1
bmN0aW9uIG5vdGlmeU5lc3RlZFN1YnMoKSB7XG4gICAgdGhpcy5saXN0ZW5lcnMubm90aWZ5KCk7
XG4gIH07XG5cbiAgU3Vic2NyaXB0aW9uLnByb3RvdHlwZS5pc1N1YnNjcmliZWQgPSBmdW5jdGlv
biBpc1N1YnNjcmliZWQoKSB7XG4gICAgcmV0dXJuIEJvb2xlYW4odGhpcy51bnN1YnNjcmliZSk7
XG4gIH07XG5cbiAgU3Vic2NyaXB0aW9uLnByb3RvdHlwZS50cnlTdWJzY3JpYmUgPSBmdW5jdGlv
biB0cnlTdWJzY3JpYmUoKSB7XG4gICAgaWYgKCF0aGlzLnVuc3Vic2NyaWJlKSB7XG4gICAgICB0
aGlzLnVuc3Vic2NyaWJlID0gdGhpcy5wYXJlbnRTdWIgPyB0aGlzLnBhcmVudFN1Yi5hZGROZXN0
ZWRTdWIodGhpcy5vblN0YXRlQ2hhbmdlKSA6IHRoaXMuc3RvcmUuc3Vic2NyaWJlKHRoaXMub25T
dGF0ZUNoYW5nZSk7XG5cbiAgICAgIHRoaXMubGlzdGVuZXJzID0gY3JlYXRlTGlzdGVuZXJDb2xs
ZWN0aW9uKCk7XG4gICAgfVxuICB9O1xuXG4gIFN1YnNjcmlwdGlvbi5wcm90b3R5cGUudHJ5VW5z
dWJzY3JpYmUgPSBmdW5jdGlvbiB0cnlVbnN1YnNjcmliZSgpIHtcbiAgICBpZiAodGhpcy51bnN1
YnNjcmliZSkge1xuICAgICAgdGhpcy51bnN1YnNjcmliZSgpO1xuICAgICAgdGhpcy51bnN1YnNj
cmliZSA9IG51bGw7XG4gICAgICB0aGlzLmxpc3RlbmVycy5jbGVhcigpO1xuICAgICAgdGhpcy5s
aXN0ZW5lcnMgPSBudWxsTGlzdGVuZXJzO1xuICAgIH1cbiAgfTtcblxuICByZXR1cm4gU3Vic2Ny
aXB0aW9uO1xufSgpO1xuXG5leHBvcnRzLmRlZmF1bHQgPSBTdWJzY3JpcHRpb247XG5cblxuLyoq
KioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3QtcmVkdXgv
bGliL3V0aWxzL1N1YnNjcmlwdGlvbi5qc1xuICoqIG1vZHVsZSBpZCA9IDE5NFxuICoqIG1vZHVs
ZSBjaHVua3MgPSAwXG4gKiovIiwiJ3VzZSBzdHJpY3QnO1xuXG5leHBvcnRzLl9fZXNNb2R1bGUg
PSB0cnVlO1xuZXhwb3J0cy5kZWZhdWx0ID0gc2hhbGxvd0VxdWFsO1xudmFyIGhhc093biA9IE9i
amVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG5cbmZ1bmN0aW9uIGlzKHgsIHkpIHtcbiAg
aWYgKHggPT09IHkpIHtcbiAgICByZXR1cm4geCAhPT0gMCB8fCB5ICE9PSAwIHx8IDEgLyB4ID09
PSAxIC8geTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4geCAhPT0geCAmJiB5ICE9PSB5O1xuICB9
XG59XG5cbmZ1bmN0aW9uIHNoYWxsb3dFcXVhbChvYmpBLCBvYmpCKSB7XG4gIGlmIChpcyhvYmpB
LCBvYmpCKSkgcmV0dXJuIHRydWU7XG5cbiAgaWYgKHR5cGVvZiBvYmpBICE9PSAnb2JqZWN0JyB8
fCBvYmpBID09PSBudWxsIHx8IHR5cGVvZiBvYmpCICE9PSAnb2JqZWN0JyB8fCBvYmpCID09PSBu
dWxsKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgdmFyIGtleXNBID0gT2JqZWN0Lmtl
eXMob2JqQSk7XG4gIHZhciBrZXlzQiA9IE9iamVjdC5rZXlzKG9iakIpO1xuXG4gIGlmIChrZXlz
QS5sZW5ndGggIT09IGtleXNCLmxlbmd0aCkgcmV0dXJuIGZhbHNlO1xuXG4gIGZvciAodmFyIGkg
PSAwOyBpIDwga2V5c0EubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAoIWhhc093bi5jYWxsKG9iakIs
IGtleXNBW2ldKSB8fCAhaXMob2JqQVtrZXlzQVtpXV0sIG9iakJba2V5c0FbaV1dKSkge1xuICAg
ICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG5cbi8q
KioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0LXJlZHV4
L2xpYi91dGlscy9zaGFsbG93RXF1YWwuanNcbiAqKiBtb2R1bGUgaWQgPSAxOTVcbiAqKiBtb2R1
bGUgY2h1bmtzID0gMFxuICoqLyIsIi8vIEByZW1vdmUtb24tZWplY3QtYmVnaW5cbi8qKlxuICog
Q29weXJpZ2h0IChjKSAyMDE1LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRz
IHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhl
IEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSBy
b290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4g
KiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRo
ZSBzYW1lIGRpcmVjdG9yeS5cbiAqL1xuLy8gQHJlbW92ZS1vbi1lamVjdC1lbmRcblxuaWYgKHR5
cGVvZiBQcm9taXNlID09PSAndW5kZWZpbmVkJykge1xuICAvLyBSZWplY3Rpb24gdHJhY2tpbmcg
cHJldmVudHMgYSBjb21tb24gaXNzdWUgd2hlcmUgUmVhY3QgZ2V0cyBpbnRvIGFuXG4gIC8vIGlu
Y29uc2lzdGVudCBzdGF0ZSBkdWUgdG8gYW4gZXJyb3IsIGJ1dCBpdCBnZXRzIHN3YWxsb3dlZCBi
eSBhIFByb21pc2UsXG4gIC8vIGFuZCB0aGUgdXNlciBoYXMgbm8gaWRlYSB3aGF0IGNhdXNlcyBS
ZWFjdCdzIGVycmF0aWMgZnV0dXJlIGJlaGF2aW9yLlxuICByZXF1aXJlKCdwcm9taXNlL2xpYi9y
ZWplY3Rpb24tdHJhY2tpbmcnKS5lbmFibGUoKTtcbiAgd2luZG93LlByb21pc2UgPSByZXF1aXJl
KCdwcm9taXNlL2xpYi9lczYtZXh0ZW5zaW9ucy5qcycpO1xufVxuXG4vLyBmZXRjaCgpIHBvbHlm
aWxsIGZvciBtYWtpbmcgQVBJIGNhbGxzLlxucmVxdWlyZSgnd2hhdHdnLWZldGNoJyk7XG5cbi8v
IE9iamVjdC5hc3NpZ24oKSBpcyBjb21tb25seSB1c2VkIHdpdGggUmVhY3QuXG4vLyBJdCB3aWxs
IHVzZSB0aGUgbmF0aXZlIGltcGxlbWVudGF0aW9uIGlmIGl0J3MgcHJlc2VudCBhbmQgaXNuJ3Qg
YnVnZ3kuXG5PYmplY3QuYXNzaWduID0gcmVxdWlyZSgnb2JqZWN0LWFzc2lnbicpO1xuXG5cblxu
LyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3Qtc2Ny
aXB0cy9jb25maWcvcG9seWZpbGxzLmpzXG4gKiogbW9kdWxlIGlkID0gMTk2XG4gKiogbW9kdWxl
IGNodW5rcyA9IDBcbiAqKi8iLCJcInVzZSBzdHJpY3RcIjtcblxuLy8gVXNlIHRoZSBmYXN0ZXN0
IG1lYW5zIHBvc3NpYmxlIHRvIGV4ZWN1dGUgYSB0YXNrIGluIGl0cyBvd24gdHVybiwgd2l0aFxu
Ly8gcHJpb3JpdHkgb3ZlciBvdGhlciBldmVudHMgaW5jbHVkaW5nIElPLCBhbmltYXRpb24sIHJl
ZmxvdywgYW5kIHJlZHJhd1xuLy8gZXZlbnRzIGluIGJyb3dzZXJzLlxuLy9cbi8vIEFuIGV4Y2Vw
dGlvbiB0aHJvd24gYnkgYSB0YXNrIHdpbGwgcGVybWFuZW50bHkgaW50ZXJydXB0IHRoZSBwcm9j
ZXNzaW5nIG9mXG4vLyBzdWJzZXF1ZW50IHRhc2tzLiBUaGUgaGlnaGVyIGxldmVsIGBhc2FwYCBm
dW5jdGlvbiBlbnN1cmVzIHRoYXQgaWYgYW5cbi8vIGV4Y2VwdGlvbiBpcyB0aHJvd24gYnkgYSB0
YXNrLCB0aGF0IHRoZSB0YXNrIHF1ZXVlIHdpbGwgY29udGludWUgZmx1c2hpbmcgYXNcbi8vIHNv
b24gYXMgcG9zc2libGUsIGJ1dCBpZiB5b3UgdXNlIGByYXdBc2FwYCBkaXJlY3RseSwgeW91IGFy
ZSByZXNwb25zaWJsZSB0b1xuLy8gZWl0aGVyIGVuc3VyZSB0aGF0IG5vIGV4Y2VwdGlvbnMgYXJl
IHRocm93biBmcm9tIHlvdXIgdGFzaywgb3IgdG8gbWFudWFsbHlcbi8vIGNhbGwgYHJhd0FzYXAu
cmVxdWVzdEZsdXNoYCBpZiBhbiBleGNlcHRpb24gaXMgdGhyb3duLlxubW9kdWxlLmV4cG9ydHMg
PSByYXdBc2FwO1xuZnVuY3Rpb24gcmF3QXNhcCh0YXNrKSB7XG4gICAgaWYgKCFxdWV1ZS5sZW5n
dGgpIHtcbiAgICAgICAgcmVxdWVzdEZsdXNoKCk7XG4gICAgICAgIGZsdXNoaW5nID0gdHJ1ZTtc
biAgICB9XG4gICAgLy8gRXF1aXZhbGVudCB0byBwdXNoLCBidXQgYXZvaWRzIGEgZnVuY3Rpb24g
Y2FsbC5cbiAgICBxdWV1ZVtxdWV1ZS5sZW5ndGhdID0gdGFzaztcbn1cblxudmFyIHF1ZXVlID0g
W107XG4vLyBPbmNlIGEgZmx1c2ggaGFzIGJlZW4gcmVxdWVzdGVkLCBubyBmdXJ0aGVyIGNhbGxz
IHRvIGByZXF1ZXN0Rmx1c2hgIGFyZVxuLy8gbmVjZXNzYXJ5IHVudGlsIHRoZSBuZXh0IGBmbHVz
aGAgY29tcGxldGVzLlxudmFyIGZsdXNoaW5nID0gZmFsc2U7XG4vLyBgcmVxdWVzdEZsdXNoYCBp
cyBhbiBpbXBsZW1lbnRhdGlvbi1zcGVjaWZpYyBtZXRob2QgdGhhdCBhdHRlbXB0cyB0byBraWNr
XG4vLyBvZmYgYSBgZmx1c2hgIGV2ZW50IGFzIHF1aWNrbHkgYXMgcG9zc2libGUuIGBmbHVzaGAg
d2lsbCBhdHRlbXB0IHRvIGV4aGF1c3Rcbi8vIHRoZSBldmVudCBxdWV1ZSBiZWZvcmUgeWllbGRp
bmcgdG8gdGhlIGJyb3dzZXIncyBvd24gZXZlbnQgbG9vcC5cbnZhciByZXF1ZXN0Rmx1c2g7XG4v
LyBUaGUgcG9zaXRpb24gb2YgdGhlIG5leHQgdGFzayB0byBleGVjdXRlIGluIHRoZSB0YXNrIHF1
ZXVlLiBUaGlzIGlzXG4vLyBwcmVzZXJ2ZWQgYmV0d2VlbiBjYWxscyB0byBgZmx1c2hgIHNvIHRo
YXQgaXQgY2FuIGJlIHJlc3VtZWQgaWZcbi8vIGEgdGFzayB0aHJvd3MgYW4gZXhjZXB0aW9uLlxu
dmFyIGluZGV4ID0gMDtcbi8vIElmIGEgdGFzayBzY2hlZHVsZXMgYWRkaXRpb25hbCB0YXNrcyBy
ZWN1cnNpdmVseSwgdGhlIHRhc2sgcXVldWUgY2FuIGdyb3dcbi8vIHVuYm91bmRlZC4gVG8gcHJl
dmVudCBtZW1vcnkgZXhoYXVzdGlvbiwgdGhlIHRhc2sgcXVldWUgd2lsbCBwZXJpb2RpY2FsbHlc
bi8vIHRydW5jYXRlIGFscmVhZHktY29tcGxldGVkIHRhc2tzLlxudmFyIGNhcGFjaXR5ID0gMTAy
NDtcblxuLy8gVGhlIGZsdXNoIGZ1bmN0aW9uIHByb2Nlc3NlcyBhbGwgdGFza3MgdGhhdCBoYXZl
IGJlZW4gc2NoZWR1bGVkIHdpdGhcbi8vIGByYXdBc2FwYCB1bmxlc3MgYW5kIHVudGlsIG9uZSBv
ZiB0aG9zZSB0YXNrcyB0aHJvd3MgYW4gZXhjZXB0aW9uLlxuLy8gSWYgYSB0YXNrIHRocm93cyBh
biBleGNlcHRpb24sIGBmbHVzaGAgZW5zdXJlcyB0aGF0IGl0cyBzdGF0ZSB3aWxsIHJlbWFpblxu
Ly8gY29uc2lzdGVudCBhbmQgd2lsbCByZXN1bWUgd2hlcmUgaXQgbGVmdCBvZmYgd2hlbiBjYWxs
ZWQgYWdhaW4uXG4vLyBIb3dldmVyLCBgZmx1c2hgIGRvZXMgbm90IG1ha2UgYW55IGFycmFuZ2Vt
ZW50cyB0byBiZSBjYWxsZWQgYWdhaW4gaWYgYW5cbi8vIGV4Y2VwdGlvbiBpcyB0aHJvd24uXG5m
dW5jdGlvbiBmbHVzaCgpIHtcbiAgICB3aGlsZSAoaW5kZXggPCBxdWV1ZS5sZW5ndGgpIHtcbiAg
ICAgICAgdmFyIGN1cnJlbnRJbmRleCA9IGluZGV4O1xuICAgICAgICAvLyBBZHZhbmNlIHRoZSBp
bmRleCBiZWZvcmUgY2FsbGluZyB0aGUgdGFzay4gVGhpcyBlbnN1cmVzIHRoYXQgd2Ugd2lsbFxu
ICAgICAgICAvLyBiZWdpbiBmbHVzaGluZyBvbiB0aGUgbmV4dCB0YXNrIHRoZSB0YXNrIHRocm93
cyBhbiBlcnJvci5cbiAgICAgICAgaW5kZXggPSBpbmRleCArIDE7XG4gICAgICAgIHF1ZXVlW2N1
cnJlbnRJbmRleF0uY2FsbCgpO1xuICAgICAgICAvLyBQcmV2ZW50IGxlYWtpbmcgbWVtb3J5IGZv
ciBsb25nIGNoYWlucyBvZiByZWN1cnNpdmUgY2FsbHMgdG8gYGFzYXBgLlxuICAgICAgICAvLyBJ
ZiB3ZSBjYWxsIGBhc2FwYCB3aXRoaW4gdGFza3Mgc2NoZWR1bGVkIGJ5IGBhc2FwYCwgdGhlIHF1
ZXVlIHdpbGxcbiAgICAgICAgLy8gZ3JvdywgYnV0IHRvIGF2b2lkIGFuIE8obikgd2FsayBmb3Ig
ZXZlcnkgdGFzayB3ZSBleGVjdXRlLCB3ZSBkb24ndFxuICAgICAgICAvLyBzaGlmdCB0YXNrcyBv
ZmYgdGhlIHF1ZXVlIGFmdGVyIHRoZXkgaGF2ZSBiZWVuIGV4ZWN1dGVkLlxuICAgICAgICAvLyBJ
bnN0ZWFkLCB3ZSBwZXJpb2RpY2FsbHkgc2hpZnQgMTAyNCB0YXNrcyBvZmYgdGhlIHF1ZXVlLlxu
ICAgICAgICBpZiAoaW5kZXggPiBjYXBhY2l0eSkge1xuICAgICAgICAgICAgLy8gTWFudWFsbHkg
c2hpZnQgYWxsIHZhbHVlcyBzdGFydGluZyBhdCB0aGUgaW5kZXggYmFjayB0byB0aGVcbiAgICAg
ICAgICAgIC8vIGJlZ2lubmluZyBvZiB0aGUgcXVldWUuXG4gICAgICAgICAgICBmb3IgKHZhciBz
Y2FuID0gMCwgbmV3TGVuZ3RoID0gcXVldWUubGVuZ3RoIC0gaW5kZXg7IHNjYW4gPCBuZXdMZW5n
dGg7IHNjYW4rKykge1xuICAgICAgICAgICAgICAgIHF1ZXVlW3NjYW5dID0gcXVldWVbc2NhbiAr
IGluZGV4XTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHF1ZXVlLmxlbmd0aCAtPSBpbmRl
eDtcbiAgICAgICAgICAgIGluZGV4ID0gMDtcbiAgICAgICAgfVxuICAgIH1cbiAgICBxdWV1ZS5s
ZW5ndGggPSAwO1xuICAgIGluZGV4ID0gMDtcbiAgICBmbHVzaGluZyA9IGZhbHNlO1xufVxuXG4v
LyBgcmVxdWVzdEZsdXNoYCBpcyBpbXBsZW1lbnRlZCB1c2luZyBhIHN0cmF0ZWd5IGJhc2VkIG9u
IGRhdGEgY29sbGVjdGVkIGZyb21cbi8vIGV2ZXJ5IGF2YWlsYWJsZSBTYXVjZUxhYnMgU2VsZW5p
dW0gd2ViIGRyaXZlciB3b3JrZXIgYXQgdGltZSBvZiB3cml0aW5nLlxuLy8gaHR0cHM6Ly9kb2Nz
Lmdvb2dsZS5jb20vc3ByZWFkc2hlZXRzL2QvMW1HLTVVWUd1cDVxeEdkRU1Xa2hQNkJXQ3owNTNO
VWIyRTFRb1VUVTE2dUEvZWRpdCNnaWQ9NzgzNzI0NTkzXG5cbi8vIFNhZmFyaSA2IGFuZCA2LjEg
Zm9yIGRlc2t0b3AsIGlQYWQsIGFuZCBpUGhvbmUgYXJlIHRoZSBvbmx5IGJyb3dzZXJzIHRoYXRc
bi8vIGhhdmUgV2ViS2l0TXV0YXRpb25PYnNlcnZlciBidXQgbm90IHVuLXByZWZpeGVkIE11dGF0
aW9uT2JzZXJ2ZXIuXG4vLyBNdXN0IHVzZSBgZ2xvYmFsYCBvciBgc2VsZmAgaW5zdGVhZCBvZiBg
d2luZG93YCB0byB3b3JrIGluIGJvdGggZnJhbWVzIGFuZCB3ZWJcbi8vIHdvcmtlcnMuIGBnbG9i
YWxgIGlzIGEgcHJvdmlzaW9uIG9mIEJyb3dzZXJpZnksIE1yLCBNcnMsIG9yIE1vcC5cblxuLyog
Z2xvYmFscyBzZWxmICovXG52YXIgc2NvcGUgPSB0eXBlb2YgZ2xvYmFsICE9PSBcInVuZGVmaW5l
ZFwiID8gZ2xvYmFsIDogc2VsZjtcbnZhciBCcm93c2VyTXV0YXRpb25PYnNlcnZlciA9IHNjb3Bl
Lk11dGF0aW9uT2JzZXJ2ZXIgfHwgc2NvcGUuV2ViS2l0TXV0YXRpb25PYnNlcnZlcjtcblxuLy8g
TXV0YXRpb25PYnNlcnZlcnMgYXJlIGRlc2lyYWJsZSBiZWNhdXNlIHRoZXkgaGF2ZSBoaWdoIHBy
aW9yaXR5IGFuZCB3b3JrXG4vLyByZWxpYWJseSBldmVyeXdoZXJlIHRoZXkgYXJlIGltcGxlbWVu
dGVkLlxuLy8gVGhleSBhcmUgaW1wbGVtZW50ZWQgaW4gYWxsIG1vZGVybiBicm93c2Vycy5cbi8v
XG4vLyAtIEFuZHJvaWQgNC00LjNcbi8vIC0gQ2hyb21lIDI2LTM0XG4vLyAtIEZpcmVmb3ggMTQt
Mjlcbi8vIC0gSW50ZXJuZXQgRXhwbG9yZXIgMTFcbi8vIC0gaVBhZCBTYWZhcmkgNi03LjFcbi8v
IC0gaVBob25lIFNhZmFyaSA3LTcuMVxuLy8gLSBTYWZhcmkgNi03XG5pZiAodHlwZW9mIEJyb3dz
ZXJNdXRhdGlvbk9ic2VydmVyID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICByZXF1ZXN0Rmx1c2gg
PSBtYWtlUmVxdWVzdENhbGxGcm9tTXV0YXRpb25PYnNlcnZlcihmbHVzaCk7XG5cbi8vIE1lc3Nh
Z2VDaGFubmVscyBhcmUgZGVzaXJhYmxlIGJlY2F1c2UgdGhleSBnaXZlIGRpcmVjdCBhY2Nlc3Mg
dG8gdGhlIEhUTUxcbi8vIHRhc2sgcXVldWUsIGFyZSBpbXBsZW1lbnRlZCBpbiBJbnRlcm5ldCBF
eHBsb3JlciAxMCwgU2FmYXJpIDUuMC0xLCBhbmQgT3BlcmFcbi8vIDExLTEyLCBhbmQgaW4gd2Vi
IHdvcmtlcnMgaW4gbWFueSBlbmdpbmVzLlxuLy8gQWx0aG91Z2ggbWVzc2FnZSBjaGFubmVscyB5
aWVsZCB0byBhbnkgcXVldWVkIHJlbmRlcmluZyBhbmQgSU8gdGFza3MsIHRoZXlcbi8vIHdvdWxk
IGJlIGJldHRlciB0aGFuIGltcG9zaW5nIHRoZSA0bXMgZGVsYXkgb2YgdGltZXJzLlxuLy8gSG93
ZXZlciwgdGhleSBkbyBub3Qgd29yayByZWxpYWJseSBpbiBJbnRlcm5ldCBFeHBsb3JlciBvciBT
YWZhcmkuXG5cbi8vIEludGVybmV0IEV4cGxvcmVyIDEwIGlzIHRoZSBvbmx5IGJyb3dzZXIgdGhh
dCBoYXMgc2V0SW1tZWRpYXRlIGJ1dCBkb2VzXG4vLyBub3QgaGF2ZSBNdXRhdGlvbk9ic2VydmVy
cy5cbi8vIEFsdGhvdWdoIHNldEltbWVkaWF0ZSB5aWVsZHMgdG8gdGhlIGJyb3dzZXIncyByZW5k
ZXJlciwgaXQgd291bGQgYmVcbi8vIHByZWZlcnJhYmxlIHRvIGZhbGxpbmcgYmFjayB0byBzZXRU
aW1lb3V0IHNpbmNlIGl0IGRvZXMgbm90IGhhdmVcbi8vIHRoZSBtaW5pbXVtIDRtcyBwZW5hbHR5
LlxuLy8gVW5mb3J0dW5hdGVseSB0aGVyZSBhcHBlYXJzIHRvIGJlIGEgYnVnIGluIEludGVybmV0
IEV4cGxvcmVyIDEwIE1vYmlsZSAoYW5kXG4vLyBEZXNrdG9wIHRvIGEgbGVzc2VyIGV4dGVudCkg
dGhhdCByZW5kZXJzIGJvdGggc2V0SW1tZWRpYXRlIGFuZFxuLy8gTWVzc2FnZUNoYW5uZWwgdXNl
bGVzcyBmb3IgdGhlIHB1cnBvc2VzIG9mIEFTQVAuXG4vLyBodHRwczovL2dpdGh1Yi5jb20va3Jp
c2tvd2FsL3EvaXNzdWVzLzM5NlxuXG4vLyBUaW1lcnMgYXJlIGltcGxlbWVudGVkIHVuaXZlcnNh
bGx5LlxuLy8gV2UgZmFsbCBiYWNrIHRvIHRpbWVycyBpbiB3b3JrZXJzIGluIG1vc3QgZW5naW5l
cywgYW5kIGluIGZvcmVncm91bmRcbi8vIGNvbnRleHRzIGluIHRoZSBmb2xsb3dpbmcgYnJvd3Nl
cnMuXG4vLyBIb3dldmVyLCBub3RlIHRoYXQgZXZlbiB0aGlzIHNpbXBsZSBjYXNlIHJlcXVpcmVz
IG51YW5jZXMgdG8gb3BlcmF0ZSBpbiBhXG4vLyBicm9hZCBzcGVjdHJ1bSBvZiBicm93c2Vycy5c
bi8vXG4vLyAtIEZpcmVmb3ggMy0xM1xuLy8gLSBJbnRlcm5ldCBFeHBsb3JlciA2LTlcbi8vIC0g
aVBhZCBTYWZhcmkgNC4zXG4vLyAtIEx5bnggMi44Ljdcbn0gZWxzZSB7XG4gICAgcmVxdWVzdEZs
dXNoID0gbWFrZVJlcXVlc3RDYWxsRnJvbVRpbWVyKGZsdXNoKTtcbn1cblxuLy8gYHJlcXVlc3RG
bHVzaGAgcmVxdWVzdHMgdGhhdCB0aGUgaGlnaCBwcmlvcml0eSBldmVudCBxdWV1ZSBiZSBmbHVz
aGVkIGFzXG4vLyBzb29uIGFzIHBvc3NpYmxlLlxuLy8gVGhpcyBpcyB1c2VmdWwgdG8gcHJldmVu
dCBhbiBlcnJvciB0aHJvd24gaW4gYSB0YXNrIGZyb20gc3RhbGxpbmcgdGhlIGV2ZW50XG4vLyBx
dWV1ZSBpZiB0aGUgZXhjZXB0aW9uIGhhbmRsZWQgYnkgTm9kZS5qc+KAmXNcbi8vIGBwcm9jZXNz
Lm9uKFwidW5jYXVnaHRFeGNlcHRpb25cIilgIG9yIGJ5IGEgZG9tYWluLlxucmF3QXNhcC5yZXF1
ZXN0Rmx1c2ggPSByZXF1ZXN0Rmx1c2g7XG5cbi8vIFRvIHJlcXVlc3QgYSBoaWdoIHByaW9yaXR5
IGV2ZW50LCB3ZSBpbmR1Y2UgYSBtdXRhdGlvbiBvYnNlcnZlciBieSB0b2dnbGluZ1xuLy8gdGhl
IHRleHQgb2YgYSB0ZXh0IG5vZGUgYmV0d2VlbiBcIjFcIiBhbmQgXCItMVwiLlxuZnVuY3Rpb24g
bWFrZVJlcXVlc3RDYWxsRnJvbU11dGF0aW9uT2JzZXJ2ZXIoY2FsbGJhY2spIHtcbiAgICB2YXIg
dG9nZ2xlID0gMTtcbiAgICB2YXIgb2JzZXJ2ZXIgPSBuZXcgQnJvd3Nlck11dGF0aW9uT2JzZXJ2
ZXIoY2FsbGJhY2spO1xuICAgIHZhciBub2RlID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoXCJc
Iik7XG4gICAgb2JzZXJ2ZXIub2JzZXJ2ZShub2RlLCB7Y2hhcmFjdGVyRGF0YTogdHJ1ZX0pO1xu
ICAgIHJldHVybiBmdW5jdGlvbiByZXF1ZXN0Q2FsbCgpIHtcbiAgICAgICAgdG9nZ2xlID0gLXRv
Z2dsZTtcbiAgICAgICAgbm9kZS5kYXRhID0gdG9nZ2xlO1xuICAgIH07XG59XG5cbi8vIFRoZSBt
ZXNzYWdlIGNoYW5uZWwgdGVjaG5pcXVlIHdhcyBkaXNjb3ZlcmVkIGJ5IE1hbHRlIFVibCBhbmQg
d2FzIHRoZVxuLy8gb3JpZ2luYWwgZm91bmRhdGlvbiBmb3IgdGhpcyBsaWJyYXJ5LlxuLy8gaHR0
cDovL3d3dy5ub25ibG9ja2luZy5pby8yMDExLzA2L3dpbmRvd25leHR0aWNrLmh0bWxcblxuLy8g
U2FmYXJpIDYuMC41IChhdCBsZWFzdCkgaW50ZXJtaXR0ZW50bHkgZmFpbHMgdG8gY3JlYXRlIG1l
c3NhZ2UgcG9ydHMgb24gYVxuLy8gcGFnZSdzIGZpcnN0IGxvYWQuIFRoYW5rZnVsbHksIHRoaXMg
dmVyc2lvbiBvZiBTYWZhcmkgc3VwcG9ydHNcbi8vIE11dGF0aW9uT2JzZXJ2ZXJzLCBzbyB3ZSBk
b24ndCBuZWVkIHRvIGZhbGwgYmFjayBpbiB0aGF0IGNhc2UuXG5cbi8vIGZ1bmN0aW9uIG1ha2VS
ZXF1ZXN0Q2FsbEZyb21NZXNzYWdlQ2hhbm5lbChjYWxsYmFjaykge1xuLy8gICAgIHZhciBjaGFu
bmVsID0gbmV3IE1lc3NhZ2VDaGFubmVsKCk7XG4vLyAgICAgY2hhbm5lbC5wb3J0MS5vbm1lc3Nh
Z2UgPSBjYWxsYmFjaztcbi8vICAgICByZXR1cm4gZnVuY3Rpb24gcmVxdWVzdENhbGwoKSB7XG4v
LyAgICAgICAgIGNoYW5uZWwucG9ydDIucG9zdE1lc3NhZ2UoMCk7XG4vLyAgICAgfTtcbi8vIH1c
blxuLy8gRm9yIHJlYXNvbnMgZXhwbGFpbmVkIGFib3ZlLCB3ZSBhcmUgYWxzbyB1bmFibGUgdG8g
dXNlIGBzZXRJbW1lZGlhdGVgXG4vLyB1bmRlciBhbnkgY2lyY3Vtc3RhbmNlcy5cbi8vIEV2ZW4g
aWYgd2Ugd2VyZSwgdGhlcmUgaXMgYW5vdGhlciBidWcgaW4gSW50ZXJuZXQgRXhwbG9yZXIgMTAu
XG4vLyBJdCBpcyBub3Qgc3VmZmljaWVudCB0byBhc3NpZ24gYHNldEltbWVkaWF0ZWAgdG8gYHJl
cXVlc3RGbHVzaGAgYmVjYXVzZVxuLy8gYHNldEltbWVkaWF0ZWAgbXVzdCBiZSBjYWxsZWQgKmJ5
IG5hbWUqIGFuZCB0aGVyZWZvcmUgbXVzdCBiZSB3cmFwcGVkIGluIGFcbi8vIGNsb3N1cmUuXG4v
LyBOZXZlciBmb3JnZXQuXG5cbi8vIGZ1bmN0aW9uIG1ha2VSZXF1ZXN0Q2FsbEZyb21TZXRJbW1l
ZGlhdGUoY2FsbGJhY2spIHtcbi8vICAgICByZXR1cm4gZnVuY3Rpb24gcmVxdWVzdENhbGwoKSB7
XG4vLyAgICAgICAgIHNldEltbWVkaWF0ZShjYWxsYmFjayk7XG4vLyAgICAgfTtcbi8vIH1cblxu
Ly8gU2FmYXJpIDYuMCBoYXMgYSBwcm9ibGVtIHdoZXJlIHRpbWVycyB3aWxsIGdldCBsb3N0IHdo
aWxlIHRoZSB1c2VyIGlzXG4vLyBzY3JvbGxpbmcuIFRoaXMgcHJvYmxlbSBkb2VzIG5vdCBpbXBh
Y3QgQVNBUCBiZWNhdXNlIFNhZmFyaSA2LjAgc3VwcG9ydHNcbi8vIG11dGF0aW9uIG9ic2VydmVy
cywgc28gdGhhdCBpbXBsZW1lbnRhdGlvbiBpcyB1c2VkIGluc3RlYWQuXG4vLyBIb3dldmVyLCBp
ZiB3ZSBldmVyIGVsZWN0IHRvIHVzZSB0aW1lcnMgaW4gU2FmYXJpLCB0aGUgcHJldmFsZW50IHdv
cmstYXJvdW5kXG4vLyBpcyB0byBhZGQgYSBzY3JvbGwgZXZlbnQgbGlzdGVuZXIgdGhhdCBjYWxs
cyBmb3IgYSBmbHVzaC5cblxuLy8gYHNldFRpbWVvdXRgIGRvZXMgbm90IGNhbGwgdGhlIHBhc3Nl
ZCBjYWxsYmFjayBpZiB0aGUgZGVsYXkgaXMgbGVzcyB0aGFuXG4vLyBhcHByb3hpbWF0ZWx5IDcg
aW4gd2ViIHdvcmtlcnMgaW4gRmlyZWZveCA4IHRocm91Z2ggMTgsIGFuZCBzb21ldGltZXMgbm90
XG4vLyBldmVuIHRoZW4uXG5cbmZ1bmN0aW9uIG1ha2VSZXF1ZXN0Q2FsbEZyb21UaW1lcihjYWxs
YmFjaykge1xuICAgIHJldHVybiBmdW5jdGlvbiByZXF1ZXN0Q2FsbCgpIHtcbiAgICAgICAgLy8g
V2UgZGlzcGF0Y2ggYSB0aW1lb3V0IHdpdGggYSBzcGVjaWZpZWQgZGVsYXkgb2YgMCBmb3IgZW5n
aW5lcyB0aGF0XG4gICAgICAgIC8vIGNhbiByZWxpYWJseSBhY2NvbW1vZGF0ZSB0aGF0IHJlcXVl
c3QuIFRoaXMgd2lsbCB1c3VhbGx5IGJlIHNuYXBwZWRcbiAgICAgICAgLy8gdG8gYSA0IG1pbGlz
ZWNvbmQgZGVsYXksIGJ1dCBvbmNlIHdlJ3JlIGZsdXNoaW5nLCB0aGVyZSdzIG5vIGRlbGF5XG4g
ICAgICAgIC8vIGJldHdlZW4gZXZlbnRzLlxuICAgICAgICB2YXIgdGltZW91dEhhbmRsZSA9IHNl
dFRpbWVvdXQoaGFuZGxlVGltZXIsIDApO1xuICAgICAgICAvLyBIb3dldmVyLCBzaW5jZSB0aGlz
IHRpbWVyIGdldHMgZnJlcXVlbnRseSBkcm9wcGVkIGluIEZpcmVmb3hcbiAgICAgICAgLy8gd29y
a2Vycywgd2UgZW5saXN0IGFuIGludGVydmFsIGhhbmRsZSB0aGF0IHdpbGwgdHJ5IHRvIGZpcmVc
biAgICAgICAgLy8gYW4gZXZlbnQgMjAgdGltZXMgcGVyIHNlY29uZCB1bnRpbCBpdCBzdWNjZWVk
cy5cbiAgICAgICAgdmFyIGludGVydmFsSGFuZGxlID0gc2V0SW50ZXJ2YWwoaGFuZGxlVGltZXIs
IDUwKTtcblxuICAgICAgICBmdW5jdGlvbiBoYW5kbGVUaW1lcigpIHtcbiAgICAgICAgICAgIC8v
IFdoaWNoZXZlciB0aW1lciBzdWNjZWVkcyB3aWxsIGNhbmNlbCBib3RoIHRpbWVycyBhbmRcbiAg
ICAgICAgICAgIC8vIGV4ZWN1dGUgdGhlIGNhbGxiYWNrLlxuICAgICAgICAgICAgY2xlYXJUaW1l
b3V0KHRpbWVvdXRIYW5kbGUpO1xuICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChpbnRlcnZhbEhh
bmRsZSk7XG4gICAgICAgICAgICBjYWxsYmFjaygpO1xuICAgICAgICB9XG4gICAgfTtcbn1cblxu
Ly8gVGhpcyBpcyBmb3IgYGFzYXAuanNgIG9ubHkuXG4vLyBJdHMgbmFtZSB3aWxsIGJlIHBlcmlv
ZGljYWxseSByYW5kb21pemVkIHRvIGJyZWFrIGFueSBjb2RlIHRoYXQgZGVwZW5kcyBvblxuLy8g
aXRzIGV4aXN0ZW5jZS5cbnJhd0FzYXAubWFrZVJlcXVlc3RDYWxsRnJvbVRpbWVyID0gbWFrZVJl
cXVlc3RDYWxsRnJvbVRpbWVyO1xuXG4vLyBBU0FQIHdhcyBvcmlnaW5hbGx5IGEgbmV4dFRpY2sg
c2hpbSBpbmNsdWRlZCBpbiBRLiBUaGlzIHdhcyBmYWN0b3JlZCBvdXRcbi8vIGludG8gdGhpcyBB
U0FQIHBhY2thZ2UuIEl0IHdhcyBsYXRlciBhZGFwdGVkIHRvIFJTVlAgd2hpY2ggbWFkZSBmdXJ0
aGVyXG4vLyBhbWVuZG1lbnRzLiBUaGVzZSBkZWNpc2lvbnMsIHBhcnRpY3VsYXJseSB0byBtYXJn
aW5hbGl6ZSBNZXNzYWdlQ2hhbm5lbCBhbmRcbi8vIHRvIGNhcHR1cmUgdGhlIE11dGF0aW9uT2Jz
ZXJ2ZXIgaW1wbGVtZW50YXRpb24gaW4gYSBjbG9zdXJlLCB3ZXJlIGludGVncmF0ZWRcbi8vIGJh
Y2sgaW50byBBU0FQIHByb3Blci5cbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90aWxkZWlvL3JzdnAu
anMvYmxvYi9jZGRmNzIzMjU0NmE5Y2Y4NTg1MjRiNzVjZGU2ZjllZGY3MjYyMGE3L2xpYi9yc3Zw
L2FzYXAuanNcblxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4g
KiogLi9+L3JlYWN0LXNjcmlwdHMvfi9hc2FwL2Jyb3dzZXItcmF3LmpzXG4gKiogbW9kdWxlIGlk
ID0gMTk3XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCJpbXBvcnQgKiBhcyB0eXBlcyBm
cm9tICcuLi9jb25zdGFudHMvQWN0aW9uVHlwZXMnXG5cbmV4cG9ydCBjb25zdCBhZGRUb2RvID0g
dGV4dCA9PiAoeyB0eXBlOiB0eXBlcy5BRERfVE9ETywgdGV4dCB9KVxuZXhwb3J0IGNvbnN0IGRl
bGV0ZVRvZG8gPSBpZCA9PiAoeyB0eXBlOiB0eXBlcy5ERUxFVEVfVE9ETywgaWQgfSlcbmV4cG9y
dCBjb25zdCBlZGl0VG9kbyA9IChpZCwgdGV4dCkgPT4gKHsgdHlwZTogdHlwZXMuRURJVF9UT0RP
LCBpZCwgdGV4dCB9KVxuZXhwb3J0IGNvbnN0IGNvbXBsZXRlVG9kbyA9IGlkID0+ICh7IHR5cGU6
IHR5cGVzLkNPTVBMRVRFX1RPRE8sIGlkIH0pXG5leHBvcnQgY29uc3QgY29tcGxldGVBbGwgPSAo
KSA9PiAoeyB0eXBlOiB0eXBlcy5DT01QTEVURV9BTEwgfSlcbmV4cG9ydCBjb25zdCBjbGVhckNv
bXBsZXRlZCA9ICgpID0+ICh7IHR5cGU6IHR5cGVzLkNMRUFSX0NPTVBMRVRFRCB9KVxuXG5cblxu
LyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogLi9zcmMvYWN0aW9ucy9pbmRleC5qc1xuICoqLyIs
ImltcG9ydCBSZWFjdCwgeyBQcm9wVHlwZXMsIENvbXBvbmVudCB9IGZyb20gJ3JlYWN0J1xuaW1w
b3J0IGNsYXNzbmFtZXMgZnJvbSAnY2xhc3NuYW1lcydcbmltcG9ydCB7IFNIT1dfQUxMLCBTSE9X
X0NPTVBMRVRFRCwgU0hPV19BQ1RJVkUgfSBmcm9tICcuLi9jb25zdGFudHMvVG9kb0ZpbHRlcnMn
XG5cbmNvbnN0IEZJTFRFUl9USVRMRVMgPSB7XG4gIFtTSE9XX0FMTF06ICdBbGwnLFxuICBbU0hP
V19BQ1RJVkVdOiAnQWN0aXZlJyxcbiAgW1NIT1dfQ09NUExFVEVEXTogJ0NvbXBsZXRlZCdcbn1c
blxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRm9vdGVyIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgc3Rh
dGljIHByb3BUeXBlcyA9IHtcbiAgICBjb21wbGV0ZWRDb3VudDogUHJvcFR5cGVzLm51bWJlci5p
c1JlcXVpcmVkLFxuICAgIGFjdGl2ZUNvdW50OiBQcm9wVHlwZXMubnVtYmVyLmlzUmVxdWlyZWQs
XG4gICAgZmlsdGVyOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gICAgb25DbGVhckNv
bXBsZXRlZDogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgICBvblNob3c6IFByb3BUeXBl
cy5mdW5jLmlzUmVxdWlyZWRcbiAgfVxuXG4gIHJlbmRlclRvZG9Db3VudCgpIHtcbiAgICBjb25z
dCB7IGFjdGl2ZUNvdW50IH0gPSB0aGlzLnByb3BzXG4gICAgY29uc3QgaXRlbVdvcmQgPSBhY3Rp
dmVDb3VudCA9PT0gMSA/ICdpdGVtJyA6ICdpdGVtcydcblxuICAgIHJldHVybiAoXG4gICAgICA8
c3BhbiBjbGFzc05hbWU9XCJ0b2RvLWNvdW50XCI+XG4gICAgICAgIDxzdHJvbmc+e2FjdGl2ZUNv
dW50IHx8ICdObyd9PC9zdHJvbmc+IHtpdGVtV29yZH0gbGVmdFxuICAgICAgPC9zcGFuPlxuICAg
IClcbiAgfVxuXG4gIHJlbmRlckZpbHRlckxpbmsoZmlsdGVyKSB7XG4gICAgY29uc3QgdGl0bGUg
PSBGSUxURVJfVElUTEVTW2ZpbHRlcl1cbiAgICBjb25zdCB7IGZpbHRlcjogc2VsZWN0ZWRGaWx0
ZXIsIG9uU2hvdyB9ID0gdGhpcy5wcm9wc1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxhIGNsYXNz
TmFtZT17Y2xhc3NuYW1lcyh7IHNlbGVjdGVkOiBmaWx0ZXIgPT09IHNlbGVjdGVkRmlsdGVyIH0p
fVxuICAgICAgICAgc3R5bGU9e3sgY3Vyc29yOiAncG9pbnRlcicgfX1cbiAgICAgICAgIG9uQ2xp
Y2s9eygpID0+IG9uU2hvdyhmaWx0ZXIpfT5cbiAgICAgICAge3RpdGxlfVxuICAgICAgPC9hPlxu
ICAgIClcbiAgfVxuXG4gIHJlbmRlckNsZWFyQnV0dG9uKCkge1xuICAgIGNvbnN0IHsgY29tcGxl
dGVkQ291bnQsIG9uQ2xlYXJDb21wbGV0ZWQgfSA9IHRoaXMucHJvcHNcbiAgICBpZiAoY29tcGxl
dGVkQ291bnQgPiAwKSB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICA8YnV0dG9uIGNsYXNzTmFt
ZT1cImNsZWFyLWNvbXBsZXRlZFwiXG4gICAgICAgICAgICAgICAgb25DbGljaz17b25DbGVhckNv
bXBsZXRlZH0gPlxuICAgICAgICAgIENsZWFyIGNvbXBsZXRlZFxuICAgICAgICA8L2J1dHRvbj5c
biAgICAgIClcbiAgICB9XG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgcmV0dXJuIChcbiAgICAg
IDxmb290ZXIgY2xhc3NOYW1lPVwiZm9vdGVyXCI+XG4gICAgICAgIHt0aGlzLnJlbmRlclRvZG9D
b3VudCgpfVxuICAgICAgICA8dWwgY2xhc3NOYW1lPVwiZmlsdGVyc1wiPlxuICAgICAgICAgIHtb
IFNIT1dfQUxMLCBTSE9XX0FDVElWRSwgU0hPV19DT01QTEVURUQgXS5tYXAoZmlsdGVyID0+XG4g
ICAgICAgICAgICA8bGkga2V5PXtmaWx0ZXJ9PlxuICAgICAgICAgICAgICB7dGhpcy5yZW5kZXJG
aWx0ZXJMaW5rKGZpbHRlcil9XG4gICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICl9XG4gICAg
ICAgIDwvdWw+XG4gICAgICAgIHt0aGlzLnJlbmRlckNsZWFyQnV0dG9uKCl9XG4gICAgICA8L2Zv
b3Rlcj5cbiAgICApXG4gIH1cbn1cblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIC4v
c3JjL2NvbXBvbmVudHMvRm9vdGVyLmpzXG4gKiovIiwiaW1wb3J0IFJlYWN0LCB7IFByb3BUeXBl
cywgQ29tcG9uZW50IH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgVG9kb1RleHRJbnB1dCBmcm9tICcu
L1RvZG9UZXh0SW5wdXQnXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEhlYWRlciBleHRlbmRzIENv
bXBvbmVudCB7XG4gIHN0YXRpYyBwcm9wVHlwZXMgPSB7XG4gICAgYWRkVG9kbzogUHJvcFR5cGVz
LmZ1bmMuaXNSZXF1aXJlZFxuICB9XG5cbiAgaGFuZGxlU2F2ZSA9IHRleHQgPT4ge1xuICAgIGlm
ICh0ZXh0Lmxlbmd0aCAhPT0gMCkge1xuICAgICAgdGhpcy5wcm9wcy5hZGRUb2RvKHRleHQpXG4g
ICAgfVxuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIHJldHVybiAoXG4gICAgICA8aGVhZGVyIGNs
YXNzTmFtZT1cImhlYWRlclwiPlxuICAgICAgICA8aDE+dG9kb3M8L2gxPlxuICAgICAgICA8VG9k
b1RleHRJbnB1dCBuZXdUb2RvXG4gICAgICAgICAgICAgICAgICAgICAgIG9uU2F2ZT17dGhpcy5o
YW5kbGVTYXZlfVxuICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIldoYXQgbmVl
ZHMgdG8gYmUgZG9uZT9cIiAvPlxuICAgICAgPC9oZWFkZXI+XG4gICAgKVxuICB9XG59XG5cblxu
XG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiAuL3NyYy9jb21wb25lbnRzL0hlYWRlci5qc1xu
ICoqLyIsImltcG9ydCBSZWFjdCwgeyBDb21wb25lbnQsIFByb3BUeXBlcyB9IGZyb20gJ3JlYWN0
J1xuaW1wb3J0IFRvZG9JdGVtIGZyb20gJy4vVG9kb0l0ZW0nXG5pbXBvcnQgRm9vdGVyIGZyb20g
Jy4vRm9vdGVyJ1xuaW1wb3J0IHsgU0hPV19BTEwsIFNIT1dfQ09NUExFVEVELCBTSE9XX0FDVElW
RSB9IGZyb20gJy4uL2NvbnN0YW50cy9Ub2RvRmlsdGVycydcblxuY29uc3QgVE9ET19GSUxURVJT
ID0ge1xuICBbU0hPV19BTExdOiAoKSA9PiB0cnVlLFxuICBbU0hPV19BQ1RJVkVdOiB0b2RvID0+
ICF0b2RvLmNvbXBsZXRlZCxcbiAgW1NIT1dfQ09NUExFVEVEXTogdG9kbyA9PiB0b2RvLmNvbXBs
ZXRlZFxufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBNYWluU2VjdGlvbiBleHRlbmRzIENvbXBv
bmVudCB7XG4gIHN0YXRpYyBwcm9wVHlwZXMgPSB7XG4gICAgdG9kb3M6IFByb3BUeXBlcy5hcnJh
eS5pc1JlcXVpcmVkLFxuICAgIGFjdGlvbnM6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZFxu
ICB9XG5cbiAgc3RhdGUgPSB7IGZpbHRlcjogU0hPV19BTEwgfVxuXG4gIGhhbmRsZUNsZWFyQ29t
cGxldGVkID0gKCkgPT4ge1xuICAgIHRoaXMucHJvcHMuYWN0aW9ucy5jbGVhckNvbXBsZXRlZCgp
XG4gIH1cblxuICBoYW5kbGVTaG93ID0gZmlsdGVyID0+IHtcbiAgICB0aGlzLnNldFN0YXRlKHsg
ZmlsdGVyIH0pXG4gIH1cblxuICByZW5kZXJUb2dnbGVBbGwoY29tcGxldGVkQ291bnQpIHtcbiAg
ICBjb25zdCB7IHRvZG9zLCBhY3Rpb25zIH0gPSB0aGlzLnByb3BzXG4gICAgaWYgKHRvZG9zLmxl
bmd0aCA+IDApIHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxpbnB1dCBjbGFzc05hbWU9XCJ0
b2dnbGUtYWxsXCJcbiAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAg
ICAgICBjaGVja2VkPXtjb21wbGV0ZWRDb3VudCA9PT0gdG9kb3MubGVuZ3RofVxuICAgICAgICAg
ICAgICAgb25DaGFuZ2U9e2FjdGlvbnMuY29tcGxldGVBbGx9IC8+XG4gICAgICApXG4gICAgfVxu
ICB9XG5cbiAgcmVuZGVyRm9vdGVyKGNvbXBsZXRlZENvdW50KSB7XG4gICAgY29uc3QgeyB0b2Rv
cyB9ID0gdGhpcy5wcm9wc1xuICAgIGNvbnN0IHsgZmlsdGVyIH0gPSB0aGlzLnN0YXRlXG4gICAg
Y29uc3QgYWN0aXZlQ291bnQgPSB0b2Rvcy5sZW5ndGggLSBjb21wbGV0ZWRDb3VudFxuXG4gICAg
aWYgKHRvZG9zLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgPEZvb3RlciBjb21w
bGV0ZWRDb3VudD17Y29tcGxldGVkQ291bnR9XG4gICAgICAgICAgICAgICAgYWN0aXZlQ291bnQ9
e2FjdGl2ZUNvdW50fVxuICAgICAgICAgICAgICAgIGZpbHRlcj17ZmlsdGVyfVxuICAgICAgICAg
ICAgICAgIG9uQ2xlYXJDb21wbGV0ZWQ9e3RoaXMuaGFuZGxlQ2xlYXJDb21wbGV0ZWQuYmluZCh0
aGlzKX1cbiAgICAgICAgICAgICAgICBvblNob3c9e3RoaXMuaGFuZGxlU2hvdy5iaW5kKHRoaXMp
fSAvPlxuICAgICAgKVxuICAgIH1cbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCB7IHRv
ZG9zLCBhY3Rpb25zIH0gPSB0aGlzLnByb3BzXG4gICAgY29uc3QgeyBmaWx0ZXIgfSA9IHRoaXMu
c3RhdGVcblxuICAgIGNvbnN0IGZpbHRlcmVkVG9kb3MgPSB0b2Rvcy5maWx0ZXIoVE9ET19GSUxU
RVJTW2ZpbHRlcl0pXG4gICAgY29uc3QgY29tcGxldGVkQ291bnQgPSB0b2Rvcy5yZWR1Y2UoKGNv
dW50LCB0b2RvKSA9PlxuICAgICAgdG9kby5jb21wbGV0ZWQgPyBjb3VudCArIDEgOiBjb3VudCxc
biAgICAgIDBcbiAgICApXG5cbiAgICByZXR1cm4gKFxuICAgICAgPHNlY3Rpb24gY2xhc3NOYW1l
PVwibWFpblwiPlxuICAgICAgICB7dGhpcy5yZW5kZXJUb2dnbGVBbGwoY29tcGxldGVkQ291bnQp
fVxuICAgICAgICA8dWwgY2xhc3NOYW1lPVwidG9kby1saXN0XCI+XG4gICAgICAgICAge2ZpbHRl
cmVkVG9kb3MubWFwKHRvZG8gPT5cbiAgICAgICAgICAgIDxUb2RvSXRlbSBrZXk9e3RvZG8uaWR9
IHRvZG89e3RvZG99IHsuLi5hY3Rpb25zfSAvPlxuICAgICAgICAgICl9XG4gICAgICAgIDwvdWw+
XG4gICAgICAgIHt0aGlzLnJlbmRlckZvb3Rlcihjb21wbGV0ZWRDb3VudCl9XG4gICAgICA8L3Nl
Y3Rpb24+XG4gICAgKVxuICB9XG59XG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiAu
L3NyYy9jb21wb25lbnRzL01haW5TZWN0aW9uLmpzXG4gKiovIiwiaW1wb3J0IFJlYWN0LCB7IENv
bXBvbmVudCwgUHJvcFR5cGVzIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgY2xhc3NuYW1lcyBmcm9t
ICdjbGFzc25hbWVzJ1xuaW1wb3J0IFRvZG9UZXh0SW5wdXQgZnJvbSAnLi9Ub2RvVGV4dElucHV0
J1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUb2RvSXRlbSBleHRlbmRzIENvbXBvbmVudCB7XG4g
IHN0YXRpYyBwcm9wVHlwZXMgPSB7XG4gICAgdG9kbzogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVp
cmVkLFxuICAgIGVkaXRUb2RvOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICAgIGRlbGV0
ZVRvZG86IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gICAgY29tcGxldGVUb2RvOiBQcm9w
VHlwZXMuZnVuYy5pc1JlcXVpcmVkXG4gIH1cblxuICBzdGF0ZSA9IHtcbiAgICBlZGl0aW5nOiBm
YWxzZVxuICB9XG5cbiAgaGFuZGxlRG91YmxlQ2xpY2sgPSAoKSA9PiB7XG4gICAgdGhpcy5zZXRT
dGF0ZSh7IGVkaXRpbmc6IHRydWUgfSlcbiAgfVxuXG4gIGhhbmRsZVNhdmUgPSAoaWQsIHRleHQp
ID0+IHtcbiAgICBpZiAodGV4dC5sZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMucHJvcHMuZGVs
ZXRlVG9kbyhpZClcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5wcm9wcy5lZGl0VG9kbyhpZCwg
dGV4dClcbiAgICB9XG4gICAgdGhpcy5zZXRTdGF0ZSh7IGVkaXRpbmc6IGZhbHNlIH0pXG4gIH1c
blxuICByZW5kZXIoKSB7XG4gICAgY29uc3QgeyB0b2RvLCBjb21wbGV0ZVRvZG8sIGRlbGV0ZVRv
ZG8gfSA9IHRoaXMucHJvcHNcblxuICAgIGxldCBlbGVtZW50XG4gICAgaWYgKHRoaXMuc3RhdGUu
ZWRpdGluZykge1xuICAgICAgZWxlbWVudCA9IChcbiAgICAgICAgPFRvZG9UZXh0SW5wdXQgdGV4
dD17dG9kby50ZXh0fVxuICAgICAgICAgICAgICAgICAgICAgICBlZGl0aW5nPXt0aGlzLnN0YXRl
LmVkaXRpbmd9XG4gICAgICAgICAgICAgICAgICAgICAgIG9uU2F2ZT17KHRleHQpID0+IHRoaXMu
aGFuZGxlU2F2ZSh0b2RvLmlkLCB0ZXh0KX0gLz5cbiAgICAgIClcbiAgICB9IGVsc2Uge1xuICAg
ICAgZWxlbWVudCA9IChcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ2aWV3XCI+XG4gICAgICAg
ICAgPGlucHV0IGNsYXNzTmFtZT1cInRvZ2dsZVwiXG4gICAgICAgICAgICAgICAgIHR5cGU9XCJj
aGVja2JveFwiXG4gICAgICAgICAgICAgICAgIGNoZWNrZWQ9e3RvZG8uY29tcGxldGVkfVxuICAg
ICAgICAgICAgICAgICBvbkNoYW5nZT17KCkgPT4gY29tcGxldGVUb2RvKHRvZG8uaWQpfSAvPlxu
ICAgICAgICAgIDxsYWJlbCBvbkRvdWJsZUNsaWNrPXt0aGlzLmhhbmRsZURvdWJsZUNsaWNrfT5c
biAgICAgICAgICAgIHt0b2RvLnRleHR9XG4gICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICA8
YnV0dG9uIGNsYXNzTmFtZT1cImRlc3Ryb3lcIlxuICAgICAgICAgICAgICAgICAgb25DbGljaz17
KCkgPT4gZGVsZXRlVG9kbyh0b2RvLmlkKX0gLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICApXG4g
ICAgfVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxsaSBjbGFzc05hbWU9e2NsYXNzbmFtZXMoe1xu
ICAgICAgICBjb21wbGV0ZWQ6IHRvZG8uY29tcGxldGVkLFxuICAgICAgICBlZGl0aW5nOiB0aGlz
LnN0YXRlLmVkaXRpbmdcbiAgICAgIH0pfT5cbiAgICAgICAge2VsZW1lbnR9XG4gICAgICA8L2xp
PlxuICAgIClcbiAgfVxufVxuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogLi9zcmMv
Y29tcG9uZW50cy9Ub2RvSXRlbS5qc1xuICoqLyIsImltcG9ydCBSZWFjdCwgeyBQcm9wVHlwZXMg
fSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IGJpbmRBY3Rpb25DcmVhdG9ycyB9IGZyb20gJ3JlZHV4
J1xuaW1wb3J0IHsgY29ubmVjdCB9IGZyb20gJ3JlYWN0LXJlZHV4J1xuaW1wb3J0IEhlYWRlciBm
cm9tICcuLi9jb21wb25lbnRzL0hlYWRlcidcbmltcG9ydCBNYWluU2VjdGlvbiBmcm9tICcuLi9j
b21wb25lbnRzL01haW5TZWN0aW9uJ1xuaW1wb3J0ICogYXMgVG9kb0FjdGlvbnMgZnJvbSAnLi4v
YWN0aW9ucydcblxuY29uc3QgQXBwID0gKHt0b2RvcywgYWN0aW9uc30pID0+IChcbiAgPGRpdj5c
biAgICA8SGVhZGVyIGFkZFRvZG89e2FjdGlvbnMuYWRkVG9kb30gLz5cbiAgICA8TWFpblNlY3Rp
b24gdG9kb3M9e3RvZG9zfSBhY3Rpb25zPXthY3Rpb25zfSAvPlxuICA8L2Rpdj5cbilcblxuQXBw
LnByb3BUeXBlcyA9IHtcbiAgdG9kb3M6IFByb3BUeXBlcy5hcnJheS5pc1JlcXVpcmVkLFxuICBh
Y3Rpb25zOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWRcbn1cblxuY29uc3QgbWFwU3RhdGVU
b1Byb3BzID0gc3RhdGUgPT4gKHtcbiAgdG9kb3M6IHN0YXRlLnRvZG9zXG59KVxuXG5jb25zdCBt
YXBEaXNwYXRjaFRvUHJvcHMgPSBkaXNwYXRjaCA9PiAoe1xuICAgIGFjdGlvbnM6IGJpbmRBY3Rp
b25DcmVhdG9ycyhUb2RvQWN0aW9ucywgZGlzcGF0Y2gpXG59KVxuXG5leHBvcnQgZGVmYXVsdCBj
b25uZWN0KFxuICBtYXBTdGF0ZVRvUHJvcHMsXG4gIG1hcERpc3BhdGNoVG9Qcm9wc1xuKShBcHAp
XG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiAuL3NyYy9jb250YWluZXJzL0FwcC5q
c1xuICoqLyIsImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCB7IHJlbmRlciB9IGZy
b20gJ3JlYWN0LWRvbSdcbmltcG9ydCB7IGNyZWF0ZVN0b3JlIH0gZnJvbSAncmVkdXgnXG5pbXBv
cnQgeyBQcm92aWRlciB9IGZyb20gJ3JlYWN0LXJlZHV4J1xuaW1wb3J0IEFwcCBmcm9tICcuL2Nv
bnRhaW5lcnMvQXBwJ1xuaW1wb3J0IHJlZHVjZXIgZnJvbSAnLi9yZWR1Y2VycydcbmltcG9ydCAn
dG9kb212Yy1hcHAtY3NzL2luZGV4LmNzcydcblxuY29uc3Qgc3RvcmUgPSBjcmVhdGVTdG9yZShy
ZWR1Y2VyKVxuXG5yZW5kZXIoXG4gIDxQcm92aWRlciBzdG9yZT17c3RvcmV9PlxuICAgIDxBcHAg
Lz5cbiAgPC9Qcm92aWRlcj4sXG4gIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyb290Jylcbilc
blxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIC4vc3JjL2luZGV4LmpzXG4gKiovIiwi
aW1wb3J0IHsgY29tYmluZVJlZHVjZXJzIH0gZnJvbSAncmVkdXgnXG5pbXBvcnQgdG9kb3MgZnJv
bSAnLi90b2RvcydcblxuY29uc3Qgcm9vdFJlZHVjZXIgPSBjb21iaW5lUmVkdWNlcnMoe1xuICB0
b2Rvc1xufSlcblxuZXhwb3J0IGRlZmF1bHQgcm9vdFJlZHVjZXJcblxuXG5cbi8qKiBXRUJQQUNL
IEZPT1RFUiAqKlxuICoqIC4vc3JjL3JlZHVjZXJzL2luZGV4LmpzXG4gKiovIiwiaW1wb3J0IHsg
QUREX1RPRE8sIERFTEVURV9UT0RPLCBFRElUX1RPRE8sIENPTVBMRVRFX1RPRE8sIENPTVBMRVRF
X0FMTCwgQ0xFQVJfQ09NUExFVEVEIH0gZnJvbSAnLi4vY29uc3RhbnRzL0FjdGlvblR5cGVzJ1xu
XG5jb25zdCBpbml0aWFsU3RhdGUgPSBbXVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB0b2Rv
cyhzdGF0ZSA9IGluaXRpYWxTdGF0ZSwgYWN0aW9uKSB7XG4gIHN3aXRjaCAoYWN0aW9uLnR5cGUp
IHtcbiAgICBjYXNlIEFERF9UT0RPOlxuICAgICAgcmV0dXJuIFtcbiAgICAgICAgLi4uc3RhdGUs
XG4gICAgICAgIHtcbiAgICAgICAgICBpZDogc3RhdGUucmVkdWNlKChtYXhJZCwgdG9kbykgPT4g
TWF0aC5tYXgodG9kby5pZCwgbWF4SWQpLCAtMSkgKyAxLFxuICAgICAgICAgIGNvbXBsZXRlZDog
ZmFsc2UsXG4gICAgICAgICAgdGV4dDogYWN0aW9uLnRleHRcbiAgICAgICAgfVxuICAgICAgXVxu
XG4gICAgY2FzZSBERUxFVEVfVE9ETzpcbiAgICAgIHJldHVybiBzdGF0ZS5maWx0ZXIodG9kbyA9
PlxuICAgICAgICB0b2RvLmlkICE9PSBhY3Rpb24uaWRcbiAgICAgIClcblxuICAgIGNhc2UgRURJ
VF9UT0RPOlxuICAgICAgcmV0dXJuIHN0YXRlLm1hcCh0b2RvID0+XG4gICAgICAgIHRvZG8uaWQg
PT09IGFjdGlvbi5pZCA/XG4gICAgICAgICAgeyAuLi50b2RvLCB0ZXh0OiBhY3Rpb24udGV4dCB9
IDpcbiAgICAgICAgICB0b2RvXG4gICAgICApXG5cbiAgICBjYXNlIENPTVBMRVRFX1RPRE86XG4g
ICAgICByZXR1cm4gc3RhdGUubWFwKHRvZG8gPT5cbiAgICAgICAgdG9kby5pZCA9PT0gYWN0aW9u
LmlkID9cbiAgICAgICAgICB7IC4uLnRvZG8sIGNvbXBsZXRlZDogIXRvZG8uY29tcGxldGVkIH0g
OlxuICAgICAgICAgIHRvZG9cbiAgICAgIClcblxuICAgIGNhc2UgQ09NUExFVEVfQUxMOlxuICAg
ICAgY29uc3QgYXJlQWxsTWFya2VkID0gc3RhdGUuZXZlcnkodG9kbyA9PiB0b2RvLmNvbXBsZXRl
ZClcbiAgICAgIHJldHVybiBzdGF0ZS5tYXAodG9kbyA9PiAoe1xuICAgICAgICAuLi50b2RvLFxu
ICAgICAgICBjb21wbGV0ZWQ6ICFhcmVBbGxNYXJrZWRcbiAgICAgIH0pKVxuXG4gICAgY2FzZSBD
TEVBUl9DT01QTEVURUQ6XG4gICAgICByZXR1cm4gc3RhdGUuZmlsdGVyKHRvZG8gPT4gdG9kby5j
b21wbGV0ZWQgPT09IGZhbHNlKVxuXG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBzdGF0ZVxu
ICB9XG59XG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiAuL3NyYy9yZWR1Y2Vycy90
b2Rvcy5qc1xuICoqLyIsIid1c2Ugc3RyaWN0Jztcbi8qIGVzbGludC1kaXNhYmxlIG5vLXVudXNl
ZC12YXJzICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBPYmplY3QucHJvdG90eXBlLmhhc093blBy
b3BlcnR5O1xudmFyIHByb3BJc0VudW1lcmFibGUgPSBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5
SXNFbnVtZXJhYmxlO1xuXG5mdW5jdGlvbiB0b09iamVjdCh2YWwpIHtcblx0aWYgKHZhbCA9PT0g
bnVsbCB8fCB2YWwgPT09IHVuZGVmaW5lZCkge1xuXHRcdHRocm93IG5ldyBUeXBlRXJyb3IoJ09i
amVjdC5hc3NpZ24gY2Fubm90IGJlIGNhbGxlZCB3aXRoIG51bGwgb3IgdW5kZWZpbmVkJyk7XG5c
dH1cblxuXHRyZXR1cm4gT2JqZWN0KHZhbCk7XG59XG5cbmZ1bmN0aW9uIHNob3VsZFVzZU5hdGl2
ZSgpIHtcblx0dHJ5IHtcblx0XHRpZiAoIU9iamVjdC5hc3NpZ24pIHtcblx0XHRcdHJldHVybiBm
YWxzZTtcblx0XHR9XG5cblx0XHQvLyBEZXRlY3QgYnVnZ3kgcHJvcGVydHkgZW51bWVyYXRpb24g
b3JkZXIgaW4gb2xkZXIgVjggdmVyc2lvbnMuXG5cblx0XHQvLyBodHRwczovL2J1Z3MuY2hyb21p
dW0ub3JnL3AvdjgvaXNzdWVzL2RldGFpbD9pZD00MTE4XG5cdFx0dmFyIHRlc3QxID0gbmV3IFN0
cmluZygnYWJjJyk7ICAvLyBlc2xpbnQtZGlzYWJsZS1saW5lXG5cdFx0dGVzdDFbNV0gPSAnZGUn
O1xuXHRcdGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0ZXN0MSlbMF0gPT09ICc1Jykg
e1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblxuXHRcdC8vIGh0dHBzOi8vYnVncy5jaHJv
bWl1bS5vcmcvcC92OC9pc3N1ZXMvZGV0YWlsP2lkPTMwNTZcblx0XHR2YXIgdGVzdDIgPSB7fTtc
blx0XHRmb3IgKHZhciBpID0gMDsgaSA8IDEwOyBpKyspIHtcblx0XHRcdHRlc3QyWydfJyArIFN0
cmluZy5mcm9tQ2hhckNvZGUoaSldID0gaTtcblx0XHR9XG5cdFx0dmFyIG9yZGVyMiA9IE9iamVj
dC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRlc3QyKS5tYXAoZnVuY3Rpb24gKG4pIHtcblx0XHRcdHJl
dHVybiB0ZXN0MltuXTtcblx0XHR9KTtcblx0XHRpZiAob3JkZXIyLmpvaW4oJycpICE9PSAnMDEy
MzQ1Njc4OScpIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cblx0XHQvLyBodHRwczov
L2J1Z3MuY2hyb21pdW0ub3JnL3AvdjgvaXNzdWVzL2RldGFpbD9pZD0zMDU2XG5cdFx0dmFyIHRl
c3QzID0ge307XG5cdFx0J2FiY2RlZmdoaWprbG1ub3BxcnN0Jy5zcGxpdCgnJykuZm9yRWFjaChm
dW5jdGlvbiAobGV0dGVyKSB7XG5cdFx0XHR0ZXN0M1tsZXR0ZXJdID0gbGV0dGVyO1xuXHRcdH0p
O1xuXHRcdGlmIChPYmplY3Qua2V5cyhPYmplY3QuYXNzaWduKHt9LCB0ZXN0MykpLmpvaW4oJycp
ICE9PVxuXHRcdFx0XHQnYWJjZGVmZ2hpamtsbW5vcHFyc3QnKSB7XG5cdFx0XHRyZXR1cm4gZmFs
c2U7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRydWU7XG5cdH0gY2F0Y2ggKGUpIHtcblx0XHQvLyBX
ZSBkb24ndCBleHBlY3QgYW55IG9mIHRoZSBhYm92ZSB0byB0aHJvdywgYnV0IGJldHRlciB0byBi
ZSBzYWZlLlxuXHRcdHJldHVybiBmYWxzZTtcblx0fVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHNo
b3VsZFVzZU5hdGl2ZSgpID8gT2JqZWN0LmFzc2lnbiA6IGZ1bmN0aW9uICh0YXJnZXQsIHNvdXJj
ZSkge1xuXHR2YXIgZnJvbTtcblx0dmFyIHRvID0gdG9PYmplY3QodGFyZ2V0KTtcblx0dmFyIHN5
bWJvbHM7XG5cblx0Zm9yICh2YXIgcyA9IDE7IHMgPCBhcmd1bWVudHMubGVuZ3RoOyBzKyspIHtc
blx0XHRmcm9tID0gT2JqZWN0KGFyZ3VtZW50c1tzXSk7XG5cblx0XHRmb3IgKHZhciBrZXkgaW4g
ZnJvbSkge1xuXHRcdFx0aWYgKGhhc093blByb3BlcnR5LmNhbGwoZnJvbSwga2V5KSkge1xuXHRc
dFx0XHR0b1trZXldID0gZnJvbVtrZXldO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGlmIChPYmpl
Y3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7XG5cdFx0XHRzeW1ib2xzID0gT2JqZWN0LmdldE93
blByb3BlcnR5U3ltYm9scyhmcm9tKTtcblx0XHRcdGZvciAodmFyIGkgPSAwOyBpIDwgc3ltYm9s
cy5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHRpZiAocHJvcElzRW51bWVyYWJsZS5jYWxsKGZyb20s
IHN5bWJvbHNbaV0pKSB7XG5cdFx0XHRcdFx0dG9bc3ltYm9sc1tpXV0gPSBmcm9tW3N5bWJvbHNb
aV1dO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIHRvO1xufTtc
blxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3Jl
YWN0LXNjcmlwdHMvfi9vYmplY3QtYXNzaWduL2luZGV4LmpzXG4gKiogbW9kdWxlIGlkID0gMjA4
XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIndXNlIHN0cmljdCc7XG5cbi8vVGhpcyBm
aWxlIGNvbnRhaW5zIHRoZSBFUzYgZXh0ZW5zaW9ucyB0byB0aGUgY29yZSBQcm9taXNlcy9BKyBB
UElcblxudmFyIFByb21pc2UgPSByZXF1aXJlKCcuL2NvcmUuanMnKTtcblxubW9kdWxlLmV4cG9y
dHMgPSBQcm9taXNlO1xuXG4vKiBTdGF0aWMgRnVuY3Rpb25zICovXG5cbnZhciBUUlVFID0gdmFs
dWVQcm9taXNlKHRydWUpO1xudmFyIEZBTFNFID0gdmFsdWVQcm9taXNlKGZhbHNlKTtcbnZhciBO
VUxMID0gdmFsdWVQcm9taXNlKG51bGwpO1xudmFyIFVOREVGSU5FRCA9IHZhbHVlUHJvbWlzZSh1
bmRlZmluZWQpO1xudmFyIFpFUk8gPSB2YWx1ZVByb21pc2UoMCk7XG52YXIgRU1QVFlTVFJJTkcg
PSB2YWx1ZVByb21pc2UoJycpO1xuXG5mdW5jdGlvbiB2YWx1ZVByb21pc2UodmFsdWUpIHtcbiAg
dmFyIHAgPSBuZXcgUHJvbWlzZShQcm9taXNlLl82MSk7XG4gIHAuXzgxID0gMTtcbiAgcC5fNjUg
PSB2YWx1ZTtcbiAgcmV0dXJuIHA7XG59XG5Qcm9taXNlLnJlc29sdmUgPSBmdW5jdGlvbiAodmFs
dWUpIHtcbiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgUHJvbWlzZSkgcmV0dXJuIHZhbHVlO1xuXG4g
IGlmICh2YWx1ZSA9PT0gbnVsbCkgcmV0dXJuIE5VTEw7XG4gIGlmICh2YWx1ZSA9PT0gdW5kZWZp
bmVkKSByZXR1cm4gVU5ERUZJTkVEO1xuICBpZiAodmFsdWUgPT09IHRydWUpIHJldHVybiBUUlVF
O1xuICBpZiAodmFsdWUgPT09IGZhbHNlKSByZXR1cm4gRkFMU0U7XG4gIGlmICh2YWx1ZSA9PT0g
MCkgcmV0dXJuIFpFUk87XG4gIGlmICh2YWx1ZSA9PT0gJycpIHJldHVybiBFTVBUWVNUUklORztc
blxuICBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyB8fCB0eXBlb2YgdmFsdWUgPT09ICdm
dW5jdGlvbicpIHtcbiAgICB0cnkge1xuICAgICAgdmFyIHRoZW4gPSB2YWx1ZS50aGVuO1xuICAg
ICAgaWYgKHR5cGVvZiB0aGVuID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHJldHVybiBuZXcg
UHJvbWlzZSh0aGVuLmJpbmQodmFsdWUpKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChleCkge1xu
ICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAg
ICAgICAgcmVqZWN0KGV4KTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuICByZXR1cm4gdmFsdWVQ
cm9taXNlKHZhbHVlKTtcbn07XG5cblByb21pc2UuYWxsID0gZnVuY3Rpb24gKGFycikge1xuICB2
YXIgYXJncyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFycik7XG5cbiAgcmV0dXJuIG5l
dyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICBpZiAoYXJncy5sZW5n
dGggPT09IDApIHJldHVybiByZXNvbHZlKFtdKTtcbiAgICB2YXIgcmVtYWluaW5nID0gYXJncy5s
ZW5ndGg7XG4gICAgZnVuY3Rpb24gcmVzKGksIHZhbCkge1xuICAgICAgaWYgKHZhbCAmJiAodHlw
ZW9mIHZhbCA9PT0gJ29iamVjdCcgfHwgdHlwZW9mIHZhbCA9PT0gJ2Z1bmN0aW9uJykpIHtcbiAg
ICAgICAgaWYgKHZhbCBpbnN0YW5jZW9mIFByb21pc2UgJiYgdmFsLnRoZW4gPT09IFByb21pc2Uu
cHJvdG90eXBlLnRoZW4pIHtcbiAgICAgICAgICB3aGlsZSAodmFsLl84MSA9PT0gMykge1xuICAg
ICAgICAgICAgdmFsID0gdmFsLl82NTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHZhbC5f
ODEgPT09IDEpIHJldHVybiByZXMoaSwgdmFsLl82NSk7XG4gICAgICAgICAgaWYgKHZhbC5fODEg
PT09IDIpIHJlamVjdCh2YWwuXzY1KTtcbiAgICAgICAgICB2YWwudGhlbihmdW5jdGlvbiAodmFs
KSB7XG4gICAgICAgICAgICByZXMoaSwgdmFsKTtcbiAgICAgICAgICB9LCByZWplY3QpO1xuICAg
ICAgICAgIHJldHVybjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB2YXIgdGhlbiA9IHZh
bC50aGVuO1xuICAgICAgICAgIGlmICh0eXBlb2YgdGhlbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAg
ICAgICAgICAgdmFyIHAgPSBuZXcgUHJvbWlzZSh0aGVuLmJpbmQodmFsKSk7XG4gICAgICAgICAg
ICBwLnRoZW4oZnVuY3Rpb24gKHZhbCkge1xuICAgICAgICAgICAgICByZXMoaSwgdmFsKTtcbiAg
ICAgICAgICAgIH0sIHJlamVjdCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxu
ICAgICAgICB9XG4gICAgICB9XG4gICAgICBhcmdzW2ldID0gdmFsO1xuICAgICAgaWYgKC0tcmVt
YWluaW5nID09PSAwKSB7XG4gICAgICAgIHJlc29sdmUoYXJncyk7XG4gICAgICB9XG4gICAgfVxu
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJncy5sZW5ndGg7IGkrKykge1xuICAgICAgcmVzKGks
IGFyZ3NbaV0pO1xuICAgIH1cbiAgfSk7XG59O1xuXG5Qcm9taXNlLnJlamVjdCA9IGZ1bmN0aW9u
ICh2YWx1ZSkge1xuICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVj
dCkge1xuICAgIHJlamVjdCh2YWx1ZSk7XG4gIH0pO1xufTtcblxuUHJvbWlzZS5yYWNlID0gZnVu
Y3Rpb24gKHZhbHVlcykge1xuICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUs
IHJlamVjdCkge1xuICAgIHZhbHVlcy5mb3JFYWNoKGZ1bmN0aW9uKHZhbHVlKXtcbiAgICAgIFBy
b21pc2UucmVzb2x2ZSh2YWx1ZSkudGhlbihyZXNvbHZlLCByZWplY3QpO1xuICAgIH0pO1xuICB9
KTtcbn07XG5cbi8qIFByb3RvdHlwZSBNZXRob2RzICovXG5cblByb21pc2UucHJvdG90eXBlWydj
YXRjaCddID0gZnVuY3Rpb24gKG9uUmVqZWN0ZWQpIHtcbiAgcmV0dXJuIHRoaXMudGhlbihudWxs
LCBvblJlamVjdGVkKTtcbn07XG5cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNL
IEZPT1RFUlxuICoqIC4vfi9yZWFjdC1zY3JpcHRzL34vcHJvbWlzZS9saWIvZXM2LWV4dGVuc2lv
bnMuanNcbiAqKiBtb2R1bGUgaWQgPSAyMDlcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIs
Iid1c2Ugc3RyaWN0JztcblxudmFyIFByb21pc2UgPSByZXF1aXJlKCcuL2NvcmUnKTtcblxudmFy
IERFRkFVTFRfV0hJVEVMSVNUID0gW1xuICBSZWZlcmVuY2VFcnJvcixcbiAgVHlwZUVycm9yLFxu
ICBSYW5nZUVycm9yXG5dO1xuXG52YXIgZW5hYmxlZCA9IGZhbHNlO1xuZXhwb3J0cy5kaXNhYmxl
ID0gZGlzYWJsZTtcbmZ1bmN0aW9uIGRpc2FibGUoKSB7XG4gIGVuYWJsZWQgPSBmYWxzZTtcbiAg
UHJvbWlzZS5fMTAgPSBudWxsO1xuICBQcm9taXNlLl85NyA9IG51bGw7XG59XG5cbmV4cG9ydHMu
ZW5hYmxlID0gZW5hYmxlO1xuZnVuY3Rpb24gZW5hYmxlKG9wdGlvbnMpIHtcbiAgb3B0aW9ucyA9
IG9wdGlvbnMgfHwge307XG4gIGlmIChlbmFibGVkKSBkaXNhYmxlKCk7XG4gIGVuYWJsZWQgPSB0
cnVlO1xuICB2YXIgaWQgPSAwO1xuICB2YXIgZGlzcGxheUlkID0gMDtcbiAgdmFyIHJlamVjdGlv
bnMgPSB7fTtcbiAgUHJvbWlzZS5fMTAgPSBmdW5jdGlvbiAocHJvbWlzZSkge1xuICAgIGlmIChc
biAgICAgIHByb21pc2UuXzgxID09PSAyICYmIC8vIElTIFJFSkVDVEVEXG4gICAgICByZWplY3Rp
b25zW3Byb21pc2UuXzcyXVxuICAgICkge1xuICAgICAgaWYgKHJlamVjdGlvbnNbcHJvbWlzZS5f
NzJdLmxvZ2dlZCkge1xuICAgICAgICBvbkhhbmRsZWQocHJvbWlzZS5fNzIpO1xuICAgICAgfSBl
bHNlIHtcbiAgICAgICAgY2xlYXJUaW1lb3V0KHJlamVjdGlvbnNbcHJvbWlzZS5fNzJdLnRpbWVv
dXQpO1xuICAgICAgfVxuICAgICAgZGVsZXRlIHJlamVjdGlvbnNbcHJvbWlzZS5fNzJdO1xuICAg
IH1cbiAgfTtcbiAgUHJvbWlzZS5fOTcgPSBmdW5jdGlvbiAocHJvbWlzZSwgZXJyKSB7XG4gICAg
aWYgKHByb21pc2UuXzQ1ID09PSAwKSB7IC8vIG5vdCB5ZXQgaGFuZGxlZFxuICAgICAgcHJvbWlz
ZS5fNzIgPSBpZCsrO1xuICAgICAgcmVqZWN0aW9uc1twcm9taXNlLl83Ml0gPSB7XG4gICAgICAg
IGRpc3BsYXlJZDogbnVsbCxcbiAgICAgICAgZXJyb3I6IGVycixcbiAgICAgICAgdGltZW91dDog
c2V0VGltZW91dChcbiAgICAgICAgICBvblVuaGFuZGxlZC5iaW5kKG51bGwsIHByb21pc2UuXzcy
KSxcbiAgICAgICAgICAvLyBGb3IgcmVmZXJlbmNlIGVycm9ycyBhbmQgdHlwZSBlcnJvcnMsIHRo
aXMgYWxtb3N0IGFsd2F5c1xuICAgICAgICAgIC8vIG1lYW5zIHRoZSBwcm9ncmFtbWVyIG1hZGUg
YSBtaXN0YWtlLCBzbyBsb2cgdGhlbSBhZnRlciBqdXN0XG4gICAgICAgICAgLy8gMTAwbXNcbiAg
ICAgICAgICAvLyBvdGhlcndpc2UsIHdhaXQgMiBzZWNvbmRzIHRvIHNlZSBpZiB0aGV5IGdldCBo
YW5kbGVkXG4gICAgICAgICAgbWF0Y2hXaGl0ZWxpc3QoZXJyLCBERUZBVUxUX1dISVRFTElTVClc
biAgICAgICAgICAgID8gMTAwXG4gICAgICAgICAgICA6IDIwMDBcbiAgICAgICAgKSxcbiAgICAg
ICAgbG9nZ2VkOiBmYWxzZVxuICAgICAgfTtcbiAgICB9XG4gIH07XG4gIGZ1bmN0aW9uIG9uVW5o
YW5kbGVkKGlkKSB7XG4gICAgaWYgKFxuICAgICAgb3B0aW9ucy5hbGxSZWplY3Rpb25zIHx8XG4g
ICAgICBtYXRjaFdoaXRlbGlzdChcbiAgICAgICAgcmVqZWN0aW9uc1tpZF0uZXJyb3IsXG4gICAg
ICAgIG9wdGlvbnMud2hpdGVsaXN0IHx8IERFRkFVTFRfV0hJVEVMSVNUXG4gICAgICApXG4gICAg
KSB7XG4gICAgICByZWplY3Rpb25zW2lkXS5kaXNwbGF5SWQgPSBkaXNwbGF5SWQrKztcbiAgICAg
IGlmIChvcHRpb25zLm9uVW5oYW5kbGVkKSB7XG4gICAgICAgIHJlamVjdGlvbnNbaWRdLmxvZ2dl
ZCA9IHRydWU7XG4gICAgICAgIG9wdGlvbnMub25VbmhhbmRsZWQoXG4gICAgICAgICAgcmVqZWN0
aW9uc1tpZF0uZGlzcGxheUlkLFxuICAgICAgICAgIHJlamVjdGlvbnNbaWRdLmVycm9yXG4gICAg
ICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZWplY3Rpb25zW2lkXS5sb2dnZWQgPSB0
cnVlO1xuICAgICAgICBsb2dFcnJvcihcbiAgICAgICAgICByZWplY3Rpb25zW2lkXS5kaXNwbGF5
SWQsXG4gICAgICAgICAgcmVqZWN0aW9uc1tpZF0uZXJyb3JcbiAgICAgICAgKTtcbiAgICAgIH1c
biAgICB9XG4gIH1cbiAgZnVuY3Rpb24gb25IYW5kbGVkKGlkKSB7XG4gICAgaWYgKHJlamVjdGlv
bnNbaWRdLmxvZ2dlZCkge1xuICAgICAgaWYgKG9wdGlvbnMub25IYW5kbGVkKSB7XG4gICAgICAg
IG9wdGlvbnMub25IYW5kbGVkKHJlamVjdGlvbnNbaWRdLmRpc3BsYXlJZCwgcmVqZWN0aW9uc1tp
ZF0uZXJyb3IpO1xuICAgICAgfSBlbHNlIGlmICghcmVqZWN0aW9uc1tpZF0ub25VbmhhbmRsZWQp
IHtcbiAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgICdQcm9taXNlIFJlamVjdGlvbiBI
YW5kbGVkIChpZDogJyArIHJlamVjdGlvbnNbaWRdLmRpc3BsYXlJZCArICcpOidcbiAgICAgICAg
KTtcbiAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgICcgIFRoaXMgbWVhbnMgeW91IGNh
biBpZ25vcmUgYW55IHByZXZpb3VzIG1lc3NhZ2VzIG9mIHRoZSBmb3JtIFwiUG9zc2libGUgVW5o
YW5kbGVkIFByb21pc2UgUmVqZWN0aW9uXCIgd2l0aCBpZCAnICtcbiAgICAgICAgICByZWplY3Rp
b25zW2lkXS5kaXNwbGF5SWQgKyAnLidcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gIH1c
bn1cblxuZnVuY3Rpb24gbG9nRXJyb3IoaWQsIGVycm9yKSB7XG4gIGNvbnNvbGUud2FybignUG9z
c2libGUgVW5oYW5kbGVkIFByb21pc2UgUmVqZWN0aW9uIChpZDogJyArIGlkICsgJyk6Jyk7XG4g
IHZhciBlcnJTdHIgPSAoZXJyb3IgJiYgKGVycm9yLnN0YWNrIHx8IGVycm9yKSkgKyAnJztcbiAg
ZXJyU3RyLnNwbGl0KCdcXG4nKS5mb3JFYWNoKGZ1bmN0aW9uIChsaW5lKSB7XG4gICAgY29uc29s
ZS53YXJuKCcgICcgKyBsaW5lKTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIG1hdGNoV2hpdGVsaXN0
KGVycm9yLCBsaXN0KSB7XG4gIHJldHVybiBsaXN0LnNvbWUoZnVuY3Rpb24gKGNscykge1xuICAg
IHJldHVybiBlcnJvciBpbnN0YW5jZW9mIGNscztcbiAgfSk7XG59XG5cblxuLyoqKioqKioqKioq
KioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3Qtc2NyaXB0cy9+L3Byb21p
c2UvbGliL3JlamVjdGlvbi10cmFja2luZy5qc1xuICoqIG1vZHVsZSBpZCA9IDIxMFxuICoqIG1v
ZHVsZSBjaHVua3MgPSAwXG4gKiovIiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihtb2R1bGUp
IHtcclxuXHRpZighbW9kdWxlLndlYnBhY2tQb2x5ZmlsbCkge1xyXG5cdFx0bW9kdWxlLmRlcHJl
Y2F0ZSA9IGZ1bmN0aW9uKCkge307XHJcblx0XHRtb2R1bGUucGF0aHMgPSBbXTtcclxuXHRcdC8v
IG1vZHVsZS5wYXJlbnQgPSB1bmRlZmluZWQgYnkgZGVmYXVsdFxyXG5cdFx0bW9kdWxlLmNoaWxk
cmVuID0gW107XHJcblx0XHRtb2R1bGUud2VicGFja1BvbHlmaWxsID0gMTtcclxuXHR9XHJcblx0
cmV0dXJuIG1vZHVsZTtcclxufVxyXG5cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQ
QUNLIEZPT1RFUlxuICoqICh3ZWJwYWNrKS9idWlsZGluL21vZHVsZS5qc1xuICoqIG1vZHVsZSBp
ZCA9IDIxMVxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiKGZ1bmN0aW9uKHNlbGYpIHtc
biAgJ3VzZSBzdHJpY3QnO1xuXG4gIGlmIChzZWxmLmZldGNoKSB7XG4gICAgcmV0dXJuXG4gIH1c
blxuICB2YXIgc3VwcG9ydCA9IHtcbiAgICBzZWFyY2hQYXJhbXM6ICdVUkxTZWFyY2hQYXJhbXMn
IGluIHNlbGYsXG4gICAgaXRlcmFibGU6ICdTeW1ib2wnIGluIHNlbGYgJiYgJ2l0ZXJhdG9yJyBp
biBTeW1ib2wsXG4gICAgYmxvYjogJ0ZpbGVSZWFkZXInIGluIHNlbGYgJiYgJ0Jsb2InIGluIHNl
bGYgJiYgKGZ1bmN0aW9uKCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgbmV3IEJsb2IoKVxuICAg
ICAgICByZXR1cm4gdHJ1ZVxuICAgICAgfSBjYXRjaChlKSB7XG4gICAgICAgIHJldHVybiBmYWxz
ZVxuICAgICAgfVxuICAgIH0pKCksXG4gICAgZm9ybURhdGE6ICdGb3JtRGF0YScgaW4gc2VsZixc
biAgICBhcnJheUJ1ZmZlcjogJ0FycmF5QnVmZmVyJyBpbiBzZWxmXG4gIH1cblxuICBmdW5jdGlv
biBub3JtYWxpemVOYW1lKG5hbWUpIHtcbiAgICBpZiAodHlwZW9mIG5hbWUgIT09ICdzdHJpbmcn
KSB7XG4gICAgICBuYW1lID0gU3RyaW5nKG5hbWUpXG4gICAgfVxuICAgIGlmICgvW15hLXowLTlc
XC0jJCUmJyorLlxcXl9gfH5dL2kudGVzdChuYW1lKSkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVF
cnJvcignSW52YWxpZCBjaGFyYWN0ZXIgaW4gaGVhZGVyIGZpZWxkIG5hbWUnKVxuICAgIH1cbiAg
ICByZXR1cm4gbmFtZS50b0xvd2VyQ2FzZSgpXG4gIH1cblxuICBmdW5jdGlvbiBub3JtYWxpemVW
YWx1ZSh2YWx1ZSkge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgIT09ICdzdHJpbmcnKSB7XG4gICAg
ICB2YWx1ZSA9IFN0cmluZyh2YWx1ZSlcbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlXG4gIH1cblxu
ICAvLyBCdWlsZCBhIGRlc3RydWN0aXZlIGl0ZXJhdG9yIGZvciB0aGUgdmFsdWUgbGlzdFxuICBm
dW5jdGlvbiBpdGVyYXRvckZvcihpdGVtcykge1xuICAgIHZhciBpdGVyYXRvciA9IHtcbiAgICAg
IG5leHQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgdmFsdWUgPSBpdGVtcy5zaGlmdCgpXG4g
ICAgICAgIHJldHVybiB7ZG9uZTogdmFsdWUgPT09IHVuZGVmaW5lZCwgdmFsdWU6IHZhbHVlfVxu
ICAgICAgfVxuICAgIH1cblxuICAgIGlmIChzdXBwb3J0Lml0ZXJhYmxlKSB7XG4gICAgICBpdGVy
YXRvcltTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBpdGVy
YXRvclxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBpdGVyYXRvclxuICB9XG5cbiAgZnVu
Y3Rpb24gSGVhZGVycyhoZWFkZXJzKSB7XG4gICAgdGhpcy5tYXAgPSB7fVxuXG4gICAgaWYgKGhl
YWRlcnMgaW5zdGFuY2VvZiBIZWFkZXJzKSB7XG4gICAgICBoZWFkZXJzLmZvckVhY2goZnVuY3Rp
b24odmFsdWUsIG5hbWUpIHtcbiAgICAgICAgdGhpcy5hcHBlbmQobmFtZSwgdmFsdWUpXG4gICAg
ICB9LCB0aGlzKVxuXG4gICAgfSBlbHNlIGlmIChoZWFkZXJzKSB7XG4gICAgICBPYmplY3QuZ2V0
T3duUHJvcGVydHlOYW1lcyhoZWFkZXJzKS5mb3JFYWNoKGZ1bmN0aW9uKG5hbWUpIHtcbiAgICAg
ICAgdGhpcy5hcHBlbmQobmFtZSwgaGVhZGVyc1tuYW1lXSlcbiAgICAgIH0sIHRoaXMpXG4gICAg
fVxuICB9XG5cbiAgSGVhZGVycy5wcm90b3R5cGUuYXBwZW5kID0gZnVuY3Rpb24obmFtZSwgdmFs
dWUpIHtcbiAgICBuYW1lID0gbm9ybWFsaXplTmFtZShuYW1lKVxuICAgIHZhbHVlID0gbm9ybWFs
aXplVmFsdWUodmFsdWUpXG4gICAgdmFyIGxpc3QgPSB0aGlzLm1hcFtuYW1lXVxuICAgIGlmICgh
bGlzdCkge1xuICAgICAgbGlzdCA9IFtdXG4gICAgICB0aGlzLm1hcFtuYW1lXSA9IGxpc3RcbiAg
ICB9XG4gICAgbGlzdC5wdXNoKHZhbHVlKVxuICB9XG5cbiAgSGVhZGVycy5wcm90b3R5cGVbJ2Rl
bGV0ZSddID0gZnVuY3Rpb24obmFtZSkge1xuICAgIGRlbGV0ZSB0aGlzLm1hcFtub3JtYWxpemVO
YW1lKG5hbWUpXVxuICB9XG5cbiAgSGVhZGVycy5wcm90b3R5cGUuZ2V0ID0gZnVuY3Rpb24obmFt
ZSkge1xuICAgIHZhciB2YWx1ZXMgPSB0aGlzLm1hcFtub3JtYWxpemVOYW1lKG5hbWUpXVxuICAg
IHJldHVybiB2YWx1ZXMgPyB2YWx1ZXNbMF0gOiBudWxsXG4gIH1cblxuICBIZWFkZXJzLnByb3Rv
dHlwZS5nZXRBbGwgPSBmdW5jdGlvbihuYW1lKSB7XG4gICAgcmV0dXJuIHRoaXMubWFwW25vcm1h
bGl6ZU5hbWUobmFtZSldIHx8IFtdXG4gIH1cblxuICBIZWFkZXJzLnByb3RvdHlwZS5oYXMgPSBm
dW5jdGlvbihuYW1lKSB7XG4gICAgcmV0dXJuIHRoaXMubWFwLmhhc093blByb3BlcnR5KG5vcm1h
bGl6ZU5hbWUobmFtZSkpXG4gIH1cblxuICBIZWFkZXJzLnByb3RvdHlwZS5zZXQgPSBmdW5jdGlv
bihuYW1lLCB2YWx1ZSkge1xuICAgIHRoaXMubWFwW25vcm1hbGl6ZU5hbWUobmFtZSldID0gW25v
cm1hbGl6ZVZhbHVlKHZhbHVlKV1cbiAgfVxuXG4gIEhlYWRlcnMucHJvdG90eXBlLmZvckVhY2gg
PSBmdW5jdGlvbihjYWxsYmFjaywgdGhpc0FyZykge1xuICAgIE9iamVjdC5nZXRPd25Qcm9wZXJ0
eU5hbWVzKHRoaXMubWFwKS5mb3JFYWNoKGZ1bmN0aW9uKG5hbWUpIHtcbiAgICAgIHRoaXMubWFw
W25hbWVdLmZvckVhY2goZnVuY3Rpb24odmFsdWUpIHtcbiAgICAgICAgY2FsbGJhY2suY2FsbCh0
aGlzQXJnLCB2YWx1ZSwgbmFtZSwgdGhpcylcbiAgICAgIH0sIHRoaXMpXG4gICAgfSwgdGhpcylc
biAgfVxuXG4gIEhlYWRlcnMucHJvdG90eXBlLmtleXMgPSBmdW5jdGlvbigpIHtcbiAgICB2YXIg
aXRlbXMgPSBbXVxuICAgIHRoaXMuZm9yRWFjaChmdW5jdGlvbih2YWx1ZSwgbmFtZSkgeyBpdGVt
cy5wdXNoKG5hbWUpIH0pXG4gICAgcmV0dXJuIGl0ZXJhdG9yRm9yKGl0ZW1zKVxuICB9XG5cbiAg
SGVhZGVycy5wcm90b3R5cGUudmFsdWVzID0gZnVuY3Rpb24oKSB7XG4gICAgdmFyIGl0ZW1zID0g
W11cbiAgICB0aGlzLmZvckVhY2goZnVuY3Rpb24odmFsdWUpIHsgaXRlbXMucHVzaCh2YWx1ZSkg
fSlcbiAgICByZXR1cm4gaXRlcmF0b3JGb3IoaXRlbXMpXG4gIH1cblxuICBIZWFkZXJzLnByb3Rv
dHlwZS5lbnRyaWVzID0gZnVuY3Rpb24oKSB7XG4gICAgdmFyIGl0ZW1zID0gW11cbiAgICB0aGlz
LmZvckVhY2goZnVuY3Rpb24odmFsdWUsIG5hbWUpIHsgaXRlbXMucHVzaChbbmFtZSwgdmFsdWVd
KSB9KVxuICAgIHJldHVybiBpdGVyYXRvckZvcihpdGVtcylcbiAgfVxuXG4gIGlmIChzdXBwb3J0
Lml0ZXJhYmxlKSB7XG4gICAgSGVhZGVycy5wcm90b3R5cGVbU3ltYm9sLml0ZXJhdG9yXSA9IEhl
YWRlcnMucHJvdG90eXBlLmVudHJpZXNcbiAgfVxuXG4gIGZ1bmN0aW9uIGNvbnN1bWVkKGJvZHkp
IHtcbiAgICBpZiAoYm9keS5ib2R5VXNlZCkge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0
KG5ldyBUeXBlRXJyb3IoJ0FscmVhZHkgcmVhZCcpKVxuICAgIH1cbiAgICBib2R5LmJvZHlVc2Vk
ID0gdHJ1ZVxuICB9XG5cbiAgZnVuY3Rpb24gZmlsZVJlYWRlclJlYWR5KHJlYWRlcikge1xuICAg
IHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgIHJl
YWRlci5vbmxvYWQgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgcmVzb2x2ZShyZWFkZXIucmVzdWx0
KVxuICAgICAgfVxuICAgICAgcmVhZGVyLm9uZXJyb3IgPSBmdW5jdGlvbigpIHtcbiAgICAgICAg
cmVqZWN0KHJlYWRlci5lcnJvcilcbiAgICAgIH1cbiAgICB9KVxuICB9XG5cbiAgZnVuY3Rpb24g
cmVhZEJsb2JBc0FycmF5QnVmZmVyKGJsb2IpIHtcbiAgICB2YXIgcmVhZGVyID0gbmV3IEZpbGVS
ZWFkZXIoKVxuICAgIHJlYWRlci5yZWFkQXNBcnJheUJ1ZmZlcihibG9iKVxuICAgIHJldHVybiBm
aWxlUmVhZGVyUmVhZHkocmVhZGVyKVxuICB9XG5cbiAgZnVuY3Rpb24gcmVhZEJsb2JBc1RleHQo
YmxvYikge1xuICAgIHZhciByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpXG4gICAgcmVhZGVyLnJl
YWRBc1RleHQoYmxvYilcbiAgICByZXR1cm4gZmlsZVJlYWRlclJlYWR5KHJlYWRlcilcbiAgfVxu
XG4gIGZ1bmN0aW9uIEJvZHkoKSB7XG4gICAgdGhpcy5ib2R5VXNlZCA9IGZhbHNlXG5cbiAgICB0
aGlzLl9pbml0Qm9keSA9IGZ1bmN0aW9uKGJvZHkpIHtcbiAgICAgIHRoaXMuX2JvZHlJbml0ID0g
Ym9keVxuICAgICAgaWYgKHR5cGVvZiBib2R5ID09PSAnc3RyaW5nJykge1xuICAgICAgICB0aGlz
Ll9ib2R5VGV4dCA9IGJvZHlcbiAgICAgIH0gZWxzZSBpZiAoc3VwcG9ydC5ibG9iICYmIEJsb2Iu
cHJvdG90eXBlLmlzUHJvdG90eXBlT2YoYm9keSkpIHtcbiAgICAgICAgdGhpcy5fYm9keUJsb2Ig
PSBib2R5XG4gICAgICB9IGVsc2UgaWYgKHN1cHBvcnQuZm9ybURhdGEgJiYgRm9ybURhdGEucHJv
dG90eXBlLmlzUHJvdG90eXBlT2YoYm9keSkpIHtcbiAgICAgICAgdGhpcy5fYm9keUZvcm1EYXRh
ID0gYm9keVxuICAgICAgfSBlbHNlIGlmIChzdXBwb3J0LnNlYXJjaFBhcmFtcyAmJiBVUkxTZWFy
Y2hQYXJhbXMucHJvdG90eXBlLmlzUHJvdG90eXBlT2YoYm9keSkpIHtcbiAgICAgICAgdGhpcy5f
Ym9keVRleHQgPSBib2R5LnRvU3RyaW5nKClcbiAgICAgIH0gZWxzZSBpZiAoIWJvZHkpIHtcbiAg
ICAgICAgdGhpcy5fYm9keVRleHQgPSAnJ1xuICAgICAgfSBlbHNlIGlmIChzdXBwb3J0LmFycmF5
QnVmZmVyICYmIEFycmF5QnVmZmVyLnByb3RvdHlwZS5pc1Byb3RvdHlwZU9mKGJvZHkpKSB7XG4g
ICAgICAgIC8vIE9ubHkgc3VwcG9ydCBBcnJheUJ1ZmZlcnMgZm9yIFBPU1QgbWV0aG9kLlxuICAg
ICAgICAvLyBSZWNlaXZpbmcgQXJyYXlCdWZmZXJzIGhhcHBlbnMgdmlhIEJsb2JzLCBpbnN0ZWFk
LlxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCd1bnN1cHBvcnRlZCBC
b2R5SW5pdCB0eXBlJylcbiAgICAgIH1cblxuICAgICAgaWYgKCF0aGlzLmhlYWRlcnMuZ2V0KCdj
b250ZW50LXR5cGUnKSkge1xuICAgICAgICBpZiAodHlwZW9mIGJvZHkgPT09ICdzdHJpbmcnKSB7
XG4gICAgICAgICAgdGhpcy5oZWFkZXJzLnNldCgnY29udGVudC10eXBlJywgJ3RleHQvcGxhaW47
Y2hhcnNldD1VVEYtOCcpXG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5fYm9keUJsb2IgJiYgdGhp
cy5fYm9keUJsb2IudHlwZSkge1xuICAgICAgICAgIHRoaXMuaGVhZGVycy5zZXQoJ2NvbnRlbnQt
dHlwZScsIHRoaXMuX2JvZHlCbG9iLnR5cGUpXG4gICAgICAgIH0gZWxzZSBpZiAoc3VwcG9ydC5z
ZWFyY2hQYXJhbXMgJiYgVVJMU2VhcmNoUGFyYW1zLnByb3RvdHlwZS5pc1Byb3RvdHlwZU9mKGJv
ZHkpKSB7XG4gICAgICAgICAgdGhpcy5oZWFkZXJzLnNldCgnY29udGVudC10eXBlJywgJ2FwcGxp
Y2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDtjaGFyc2V0PVVURi04JylcbiAgICAgICAgfVxu
ICAgICAgfVxuICAgIH1cblxuICAgIGlmIChzdXBwb3J0LmJsb2IpIHtcbiAgICAgIHRoaXMuYmxv
YiA9IGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgcmVqZWN0ZWQgPSBjb25zdW1lZCh0aGlzKVxu
ICAgICAgICBpZiAocmVqZWN0ZWQpIHtcbiAgICAgICAgICByZXR1cm4gcmVqZWN0ZWRcbiAgICAg
ICAgfVxuXG4gICAgICAgIGlmICh0aGlzLl9ib2R5QmxvYikge1xuICAgICAgICAgIHJldHVybiBQ
cm9taXNlLnJlc29sdmUodGhpcy5fYm9keUJsb2IpXG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5f
Ym9keUZvcm1EYXRhKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdjb3VsZCBub3QgcmVh
ZCBGb3JtRGF0YSBib2R5IGFzIGJsb2InKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJl
dHVybiBQcm9taXNlLnJlc29sdmUobmV3IEJsb2IoW3RoaXMuX2JvZHlUZXh0XSkpXG4gICAgICAg
IH1cbiAgICAgIH1cblxuICAgICAgdGhpcy5hcnJheUJ1ZmZlciA9IGZ1bmN0aW9uKCkge1xuICAg
ICAgICByZXR1cm4gdGhpcy5ibG9iKCkudGhlbihyZWFkQmxvYkFzQXJyYXlCdWZmZXIpXG4gICAg
ICB9XG5cbiAgICAgIHRoaXMudGV4dCA9IGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgcmVqZWN0
ZWQgPSBjb25zdW1lZCh0aGlzKVxuICAgICAgICBpZiAocmVqZWN0ZWQpIHtcbiAgICAgICAgICBy
ZXR1cm4gcmVqZWN0ZWRcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLl9ib2R5QmxvYikg
e1xuICAgICAgICAgIHJldHVybiByZWFkQmxvYkFzVGV4dCh0aGlzLl9ib2R5QmxvYilcbiAgICAg
ICAgfSBlbHNlIGlmICh0aGlzLl9ib2R5Rm9ybURhdGEpIHtcbiAgICAgICAgICB0aHJvdyBuZXcg
RXJyb3IoJ2NvdWxkIG5vdCByZWFkIEZvcm1EYXRhIGJvZHkgYXMgdGV4dCcpXG4gICAgICAgIH0g
ZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh0aGlzLl9ib2R5VGV4dClc
biAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnRleHQgPSBmdW5j
dGlvbigpIHtcbiAgICAgICAgdmFyIHJlamVjdGVkID0gY29uc3VtZWQodGhpcylcbiAgICAgICAg
cmV0dXJuIHJlamVjdGVkID8gcmVqZWN0ZWQgOiBQcm9taXNlLnJlc29sdmUodGhpcy5fYm9keVRl
eHQpXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHN1cHBvcnQuZm9ybURhdGEpIHtcbiAgICAg
IHRoaXMuZm9ybURhdGEgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGV4dCgp
LnRoZW4oZGVjb2RlKVxuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuanNvbiA9IGZ1bmN0aW9u
KCkge1xuICAgICAgcmV0dXJuIHRoaXMudGV4dCgpLnRoZW4oSlNPTi5wYXJzZSlcbiAgICB9XG5c
biAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgLy8gSFRUUCBtZXRob2RzIHdob3NlIGNhcGl0YWxp
emF0aW9uIHNob3VsZCBiZSBub3JtYWxpemVkXG4gIHZhciBtZXRob2RzID0gWydERUxFVEUnLCAn
R0VUJywgJ0hFQUQnLCAnT1BUSU9OUycsICdQT1NUJywgJ1BVVCddXG5cbiAgZnVuY3Rpb24gbm9y
bWFsaXplTWV0aG9kKG1ldGhvZCkge1xuICAgIHZhciB1cGNhc2VkID0gbWV0aG9kLnRvVXBwZXJD
YXNlKClcbiAgICByZXR1cm4gKG1ldGhvZHMuaW5kZXhPZih1cGNhc2VkKSA+IC0xKSA/IHVwY2Fz
ZWQgOiBtZXRob2RcbiAgfVxuXG4gIGZ1bmN0aW9uIFJlcXVlc3QoaW5wdXQsIG9wdGlvbnMpIHtc
biAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fVxuICAgIHZhciBib2R5ID0gb3B0aW9ucy5ib2R5
XG4gICAgaWYgKFJlcXVlc3QucHJvdG90eXBlLmlzUHJvdG90eXBlT2YoaW5wdXQpKSB7XG4gICAg
ICBpZiAoaW5wdXQuYm9keVVzZWQpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQWxy
ZWFkeSByZWFkJylcbiAgICAgIH1cbiAgICAgIHRoaXMudXJsID0gaW5wdXQudXJsXG4gICAgICB0
aGlzLmNyZWRlbnRpYWxzID0gaW5wdXQuY3JlZGVudGlhbHNcbiAgICAgIGlmICghb3B0aW9ucy5o
ZWFkZXJzKSB7XG4gICAgICAgIHRoaXMuaGVhZGVycyA9IG5ldyBIZWFkZXJzKGlucHV0LmhlYWRl
cnMpXG4gICAgICB9XG4gICAgICB0aGlzLm1ldGhvZCA9IGlucHV0Lm1ldGhvZFxuICAgICAgdGhp
cy5tb2RlID0gaW5wdXQubW9kZVxuICAgICAgaWYgKCFib2R5KSB7XG4gICAgICAgIGJvZHkgPSBp
bnB1dC5fYm9keUluaXRcbiAgICAgICAgaW5wdXQuYm9keVVzZWQgPSB0cnVlXG4gICAgICB9XG4g
ICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudXJsID0gaW5wdXRcbiAgICB9XG5cbiAgICB0aGlzLmNy
ZWRlbnRpYWxzID0gb3B0aW9ucy5jcmVkZW50aWFscyB8fCB0aGlzLmNyZWRlbnRpYWxzIHx8ICdv
bWl0J1xuICAgIGlmIChvcHRpb25zLmhlYWRlcnMgfHwgIXRoaXMuaGVhZGVycykge1xuICAgICAg
dGhpcy5oZWFkZXJzID0gbmV3IEhlYWRlcnMob3B0aW9ucy5oZWFkZXJzKVxuICAgIH1cbiAgICB0
aGlzLm1ldGhvZCA9IG5vcm1hbGl6ZU1ldGhvZChvcHRpb25zLm1ldGhvZCB8fCB0aGlzLm1ldGhv
ZCB8fCAnR0VUJylcbiAgICB0aGlzLm1vZGUgPSBvcHRpb25zLm1vZGUgfHwgdGhpcy5tb2RlIHx8
IG51bGxcbiAgICB0aGlzLnJlZmVycmVyID0gbnVsbFxuXG4gICAgaWYgKCh0aGlzLm1ldGhvZCA9
PT0gJ0dFVCcgfHwgdGhpcy5tZXRob2QgPT09ICdIRUFEJykgJiYgYm9keSkge1xuICAgICAgdGhy
b3cgbmV3IFR5cGVFcnJvcignQm9keSBub3QgYWxsb3dlZCBmb3IgR0VUIG9yIEhFQUQgcmVxdWVz
dHMnKVxuICAgIH1cbiAgICB0aGlzLl9pbml0Qm9keShib2R5KVxuICB9XG5cbiAgUmVxdWVzdC5w
cm90b3R5cGUuY2xvbmUgPSBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gbmV3IFJlcXVlc3QodGhp
cylcbiAgfVxuXG4gIGZ1bmN0aW9uIGRlY29kZShib2R5KSB7XG4gICAgdmFyIGZvcm0gPSBuZXcg
Rm9ybURhdGEoKVxuICAgIGJvZHkudHJpbSgpLnNwbGl0KCcmJykuZm9yRWFjaChmdW5jdGlvbihi
eXRlcykge1xuICAgICAgaWYgKGJ5dGVzKSB7XG4gICAgICAgIHZhciBzcGxpdCA9IGJ5dGVzLnNw
bGl0KCc9JylcbiAgICAgICAgdmFyIG5hbWUgPSBzcGxpdC5zaGlmdCgpLnJlcGxhY2UoL1xcKy9n
LCAnICcpXG4gICAgICAgIHZhciB2YWx1ZSA9IHNwbGl0LmpvaW4oJz0nKS5yZXBsYWNlKC9cXCsv
ZywgJyAnKVxuICAgICAgICBmb3JtLmFwcGVuZChkZWNvZGVVUklDb21wb25lbnQobmFtZSksIGRl
Y29kZVVSSUNvbXBvbmVudCh2YWx1ZSkpXG4gICAgICB9XG4gICAgfSlcbiAgICByZXR1cm4gZm9y
bVxuICB9XG5cbiAgZnVuY3Rpb24gaGVhZGVycyh4aHIpIHtcbiAgICB2YXIgaGVhZCA9IG5ldyBI
ZWFkZXJzKClcbiAgICB2YXIgcGFpcnMgPSAoeGhyLmdldEFsbFJlc3BvbnNlSGVhZGVycygpIHx8
ICcnKS50cmltKCkuc3BsaXQoJ1xcbicpXG4gICAgcGFpcnMuZm9yRWFjaChmdW5jdGlvbihoZWFk
ZXIpIHtcbiAgICAgIHZhciBzcGxpdCA9IGhlYWRlci50cmltKCkuc3BsaXQoJzonKVxuICAgICAg
dmFyIGtleSA9IHNwbGl0LnNoaWZ0KCkudHJpbSgpXG4gICAgICB2YXIgdmFsdWUgPSBzcGxpdC5q
b2luKCc6JykudHJpbSgpXG4gICAgICBoZWFkLmFwcGVuZChrZXksIHZhbHVlKVxuICAgIH0pXG4g
ICAgcmV0dXJuIGhlYWRcbiAgfVxuXG4gIEJvZHkuY2FsbChSZXF1ZXN0LnByb3RvdHlwZSlcblxu
ICBmdW5jdGlvbiBSZXNwb25zZShib2R5SW5pdCwgb3B0aW9ucykge1xuICAgIGlmICghb3B0aW9u
cykge1xuICAgICAgb3B0aW9ucyA9IHt9XG4gICAgfVxuXG4gICAgdGhpcy50eXBlID0gJ2RlZmF1
bHQnXG4gICAgdGhpcy5zdGF0dXMgPSBvcHRpb25zLnN0YXR1c1xuICAgIHRoaXMub2sgPSB0aGlz
LnN0YXR1cyA+PSAyMDAgJiYgdGhpcy5zdGF0dXMgPCAzMDBcbiAgICB0aGlzLnN0YXR1c1RleHQg
PSBvcHRpb25zLnN0YXR1c1RleHRcbiAgICB0aGlzLmhlYWRlcnMgPSBvcHRpb25zLmhlYWRlcnMg
aW5zdGFuY2VvZiBIZWFkZXJzID8gb3B0aW9ucy5oZWFkZXJzIDogbmV3IEhlYWRlcnMob3B0aW9u
cy5oZWFkZXJzKVxuICAgIHRoaXMudXJsID0gb3B0aW9ucy51cmwgfHwgJydcbiAgICB0aGlzLl9p
bml0Qm9keShib2R5SW5pdClcbiAgfVxuXG4gIEJvZHkuY2FsbChSZXNwb25zZS5wcm90b3R5cGUp
XG5cbiAgUmVzcG9uc2UucHJvdG90eXBlLmNsb25lID0gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJu
IG5ldyBSZXNwb25zZSh0aGlzLl9ib2R5SW5pdCwge1xuICAgICAgc3RhdHVzOiB0aGlzLnN0YXR1
cyxcbiAgICAgIHN0YXR1c1RleHQ6IHRoaXMuc3RhdHVzVGV4dCxcbiAgICAgIGhlYWRlcnM6IG5l
dyBIZWFkZXJzKHRoaXMuaGVhZGVycyksXG4gICAgICB1cmw6IHRoaXMudXJsXG4gICAgfSlcbiAg
fVxuXG4gIFJlc3BvbnNlLmVycm9yID0gZnVuY3Rpb24oKSB7XG4gICAgdmFyIHJlc3BvbnNlID0g
bmV3IFJlc3BvbnNlKG51bGwsIHtzdGF0dXM6IDAsIHN0YXR1c1RleHQ6ICcnfSlcbiAgICByZXNw
b25zZS50eXBlID0gJ2Vycm9yJ1xuICAgIHJldHVybiByZXNwb25zZVxuICB9XG5cbiAgdmFyIHJl
ZGlyZWN0U3RhdHVzZXMgPSBbMzAxLCAzMDIsIDMwMywgMzA3LCAzMDhdXG5cbiAgUmVzcG9uc2Uu
cmVkaXJlY3QgPSBmdW5jdGlvbih1cmwsIHN0YXR1cykge1xuICAgIGlmIChyZWRpcmVjdFN0YXR1
c2VzLmluZGV4T2Yoc3RhdHVzKSA9PT0gLTEpIHtcbiAgICAgIHRocm93IG5ldyBSYW5nZUVycm9y
KCdJbnZhbGlkIHN0YXR1cyBjb2RlJylcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IFJlc3BvbnNl
KG51bGwsIHtzdGF0dXM6IHN0YXR1cywgaGVhZGVyczoge2xvY2F0aW9uOiB1cmx9fSlcbiAgfVxu
XG4gIHNlbGYuSGVhZGVycyA9IEhlYWRlcnNcbiAgc2VsZi5SZXF1ZXN0ID0gUmVxdWVzdFxuICBz
ZWxmLlJlc3BvbnNlID0gUmVzcG9uc2VcblxuICBzZWxmLmZldGNoID0gZnVuY3Rpb24oaW5wdXQs
IGluaXQpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0
KSB7XG4gICAgICB2YXIgcmVxdWVzdFxuICAgICAgaWYgKFJlcXVlc3QucHJvdG90eXBlLmlzUHJv
dG90eXBlT2YoaW5wdXQpICYmICFpbml0KSB7XG4gICAgICAgIHJlcXVlc3QgPSBpbnB1dFxuICAg
ICAgfSBlbHNlIHtcbiAgICAgICAgcmVxdWVzdCA9IG5ldyBSZXF1ZXN0KGlucHV0LCBpbml0KVxu
ICAgICAgfVxuXG4gICAgICB2YXIgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KClcblxuICAgICAg
ZnVuY3Rpb24gcmVzcG9uc2VVUkwoKSB7XG4gICAgICAgIGlmICgncmVzcG9uc2VVUkwnIGluIHho
cikge1xuICAgICAgICAgIHJldHVybiB4aHIucmVzcG9uc2VVUkxcbiAgICAgICAgfVxuXG4gICAg
ICAgIC8vIEF2b2lkIHNlY3VyaXR5IHdhcm5pbmdzIG9uIGdldFJlc3BvbnNlSGVhZGVyIHdoZW4g
bm90IGFsbG93ZWQgYnkgQ09SU1xuICAgICAgICBpZiAoL15YLVJlcXVlc3QtVVJMOi9tLnRlc3Qo
eGhyLmdldEFsbFJlc3BvbnNlSGVhZGVycygpKSkge1xuICAgICAgICAgIHJldHVybiB4aHIuZ2V0
UmVzcG9uc2VIZWFkZXIoJ1gtUmVxdWVzdC1VUkwnKVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0
dXJuXG4gICAgICB9XG5cbiAgICAgIHhoci5vbmxvYWQgPSBmdW5jdGlvbigpIHtcbiAgICAgICAg
dmFyIG9wdGlvbnMgPSB7XG4gICAgICAgICAgc3RhdHVzOiB4aHIuc3RhdHVzLFxuICAgICAgICAg
IHN0YXR1c1RleHQ6IHhoci5zdGF0dXNUZXh0LFxuICAgICAgICAgIGhlYWRlcnM6IGhlYWRlcnMo
eGhyKSxcbiAgICAgICAgICB1cmw6IHJlc3BvbnNlVVJMKClcbiAgICAgICAgfVxuICAgICAgICB2
YXIgYm9keSA9ICdyZXNwb25zZScgaW4geGhyID8geGhyLnJlc3BvbnNlIDogeGhyLnJlc3BvbnNl
VGV4dFxuICAgICAgICByZXNvbHZlKG5ldyBSZXNwb25zZShib2R5LCBvcHRpb25zKSlcbiAgICAg
IH1cblxuICAgICAgeGhyLm9uZXJyb3IgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgcmVqZWN0KG5l
dyBUeXBlRXJyb3IoJ05ldHdvcmsgcmVxdWVzdCBmYWlsZWQnKSlcbiAgICAgIH1cblxuICAgICAg
eGhyLm9udGltZW91dCA9IGZ1bmN0aW9uKCkge1xuICAgICAgICByZWplY3QobmV3IFR5cGVFcnJv
cignTmV0d29yayByZXF1ZXN0IGZhaWxlZCcpKVxuICAgICAgfVxuXG4gICAgICB4aHIub3Blbihy
ZXF1ZXN0Lm1ldGhvZCwgcmVxdWVzdC51cmwsIHRydWUpXG5cbiAgICAgIGlmIChyZXF1ZXN0LmNy
ZWRlbnRpYWxzID09PSAnaW5jbHVkZScpIHtcbiAgICAgICAgeGhyLndpdGhDcmVkZW50aWFscyA9
IHRydWVcbiAgICAgIH1cblxuICAgICAgaWYgKCdyZXNwb25zZVR5cGUnIGluIHhociAmJiBzdXBw
b3J0LmJsb2IpIHtcbiAgICAgICAgeGhyLnJlc3BvbnNlVHlwZSA9ICdibG9iJ1xuICAgICAgfVxu
XG4gICAgICByZXF1ZXN0LmhlYWRlcnMuZm9yRWFjaChmdW5jdGlvbih2YWx1ZSwgbmFtZSkge1xu
ICAgICAgICB4aHIuc2V0UmVxdWVzdEhlYWRlcihuYW1lLCB2YWx1ZSlcbiAgICAgIH0pXG5cbiAg
ICAgIHhoci5zZW5kKHR5cGVvZiByZXF1ZXN0Ll9ib2R5SW5pdCA9PT0gJ3VuZGVmaW5lZCcgPyBu
dWxsIDogcmVxdWVzdC5fYm9keUluaXQpXG4gICAgfSlcbiAgfVxuICBzZWxmLmZldGNoLnBvbHlm
aWxsID0gdHJ1ZVxufSkodHlwZW9mIHNlbGYgIT09ICd1bmRlZmluZWQnID8gc2VsZiA6IHRoaXMp
O1xuXG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34v
cmVhY3Qtc2NyaXB0cy9+L3doYXR3Zy1mZXRjaC9mZXRjaC5qc1xuICoqIG1vZHVsZSBpZCA9IDIx
MlxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1w
cmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBU
aGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBm
b3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhp
cyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBj
YW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4g
KlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIFBvb2xlZENsYXNzID0gcmVxdWlyZSgnLi9Q
b29sZWRDbGFzcycpO1xudmFyIFJlYWN0RWxlbWVudCA9IHJlcXVpcmUoJy4vUmVhY3RFbGVtZW50
Jyk7XG5cbnZhciBlbXB0eUZ1bmN0aW9uID0gcmVxdWlyZSgnZmJqcy9saWIvZW1wdHlGdW5jdGlv
bicpO1xudmFyIHRyYXZlcnNlQWxsQ2hpbGRyZW4gPSByZXF1aXJlKCcuL3RyYXZlcnNlQWxsQ2hp
bGRyZW4nKTtcblxudmFyIHR3b0FyZ3VtZW50UG9vbGVyID0gUG9vbGVkQ2xhc3MudHdvQXJndW1l
bnRQb29sZXI7XG52YXIgZm91ckFyZ3VtZW50UG9vbGVyID0gUG9vbGVkQ2xhc3MuZm91ckFyZ3Vt
ZW50UG9vbGVyO1xuXG52YXIgdXNlclByb3ZpZGVkS2V5RXNjYXBlUmVnZXggPSAvXFwvKy9nO1xu
ZnVuY3Rpb24gZXNjYXBlVXNlclByb3ZpZGVkS2V5KHRleHQpIHtcbiAgcmV0dXJuICgnJyArIHRl
eHQpLnJlcGxhY2UodXNlclByb3ZpZGVkS2V5RXNjYXBlUmVnZXgsICckJi8nKTtcbn1cblxuLyoq
XG4gKiBQb29sZWRDbGFzcyByZXByZXNlbnRpbmcgdGhlIGJvb2trZWVwaW5nIGFzc29jaWF0ZWQg
d2l0aCBwZXJmb3JtaW5nIGEgY2hpbGRcbiAqIHRyYXZlcnNhbC4gQWxsb3dzIGF2b2lkaW5nIGJp
bmRpbmcgY2FsbGJhY2tzLlxuICpcbiAqIEBjb25zdHJ1Y3RvciBGb3JFYWNoQm9va0tlZXBpbmdc
biAqIEBwYXJhbSB7IWZ1bmN0aW9ufSBmb3JFYWNoRnVuY3Rpb24gRnVuY3Rpb24gdG8gcGVyZm9y
bSB0cmF2ZXJzYWwgd2l0aC5cbiAqIEBwYXJhbSB7Pyp9IGZvckVhY2hDb250ZXh0IENvbnRleHQg
dG8gcGVyZm9ybSBjb250ZXh0IHdpdGguXG4gKi9cbmZ1bmN0aW9uIEZvckVhY2hCb29rS2VlcGlu
Zyhmb3JFYWNoRnVuY3Rpb24sIGZvckVhY2hDb250ZXh0KSB7XG4gIHRoaXMuZnVuYyA9IGZvckVh
Y2hGdW5jdGlvbjtcbiAgdGhpcy5jb250ZXh0ID0gZm9yRWFjaENvbnRleHQ7XG4gIHRoaXMuY291
bnQgPSAwO1xufVxuRm9yRWFjaEJvb2tLZWVwaW5nLnByb3RvdHlwZS5kZXN0cnVjdG9yID0gZnVu
Y3Rpb24gKCkge1xuICB0aGlzLmZ1bmMgPSBudWxsO1xuICB0aGlzLmNvbnRleHQgPSBudWxsO1xu
ICB0aGlzLmNvdW50ID0gMDtcbn07XG5Qb29sZWRDbGFzcy5hZGRQb29saW5nVG8oRm9yRWFjaEJv
b2tLZWVwaW5nLCB0d29Bcmd1bWVudFBvb2xlcik7XG5cbmZ1bmN0aW9uIGZvckVhY2hTaW5nbGVD
aGlsZChib29rS2VlcGluZywgY2hpbGQsIG5hbWUpIHtcbiAgdmFyIGZ1bmMgPSBib29rS2VlcGlu
Zy5mdW5jLFxuICAgICAgY29udGV4dCA9IGJvb2tLZWVwaW5nLmNvbnRleHQ7XG5cbiAgZnVuYy5j
YWxsKGNvbnRleHQsIGNoaWxkLCBib29rS2VlcGluZy5jb3VudCsrKTtcbn1cblxuLyoqXG4gKiBJ
dGVyYXRlcyB0aHJvdWdoIGNoaWxkcmVuIHRoYXQgYXJlIHR5cGljYWxseSBzcGVjaWZpZWQgYXMg
YHByb3BzLmNoaWxkcmVuYC5cbiAqXG4gKiBTZWUgaHR0cHM6Ly9mYWNlYm9vay5naXRodWIuaW8v
cmVhY3QvZG9jcy90b3AtbGV2ZWwtYXBpLmh0bWwjcmVhY3QuY2hpbGRyZW4uZm9yZWFjaFxuICpc
biAqIFRoZSBwcm92aWRlZCBmb3JFYWNoRnVuYyhjaGlsZCwgaW5kZXgpIHdpbGwgYmUgY2FsbGVk
IGZvciBlYWNoXG4gKiBsZWFmIGNoaWxkLlxuICpcbiAqIEBwYXJhbSB7Pyp9IGNoaWxkcmVuIENo
aWxkcmVuIHRyZWUgY29udGFpbmVyLlxuICogQHBhcmFtIHtmdW5jdGlvbigqLCBpbnQpfSBmb3JF
YWNoRnVuY1xuICogQHBhcmFtIHsqfSBmb3JFYWNoQ29udGV4dCBDb250ZXh0IGZvciBmb3JFYWNo
Q29udGV4dC5cbiAqL1xuZnVuY3Rpb24gZm9yRWFjaENoaWxkcmVuKGNoaWxkcmVuLCBmb3JFYWNo
RnVuYywgZm9yRWFjaENvbnRleHQpIHtcbiAgaWYgKGNoaWxkcmVuID09IG51bGwpIHtcbiAgICBy
ZXR1cm4gY2hpbGRyZW47XG4gIH1cbiAgdmFyIHRyYXZlcnNlQ29udGV4dCA9IEZvckVhY2hCb29r
S2VlcGluZy5nZXRQb29sZWQoZm9yRWFjaEZ1bmMsIGZvckVhY2hDb250ZXh0KTtcbiAgdHJhdmVy
c2VBbGxDaGlsZHJlbihjaGlsZHJlbiwgZm9yRWFjaFNpbmdsZUNoaWxkLCB0cmF2ZXJzZUNvbnRl
eHQpO1xuICBGb3JFYWNoQm9va0tlZXBpbmcucmVsZWFzZSh0cmF2ZXJzZUNvbnRleHQpO1xufVxu
XG4vKipcbiAqIFBvb2xlZENsYXNzIHJlcHJlc2VudGluZyB0aGUgYm9va2tlZXBpbmcgYXNzb2Np
YXRlZCB3aXRoIHBlcmZvcm1pbmcgYSBjaGlsZFxuICogbWFwcGluZy4gQWxsb3dzIGF2b2lkaW5n
IGJpbmRpbmcgY2FsbGJhY2tzLlxuICpcbiAqIEBjb25zdHJ1Y3RvciBNYXBCb29rS2VlcGluZ1xu
ICogQHBhcmFtIHshKn0gbWFwUmVzdWx0IE9iamVjdCBjb250YWluaW5nIHRoZSBvcmRlcmVkIG1h
cCBvZiByZXN1bHRzLlxuICogQHBhcmFtIHshZnVuY3Rpb259IG1hcEZ1bmN0aW9uIEZ1bmN0aW9u
IHRvIHBlcmZvcm0gbWFwcGluZyB3aXRoLlxuICogQHBhcmFtIHs/Kn0gbWFwQ29udGV4dCBDb250
ZXh0IHRvIHBlcmZvcm0gbWFwcGluZyB3aXRoLlxuICovXG5mdW5jdGlvbiBNYXBCb29rS2VlcGlu
ZyhtYXBSZXN1bHQsIGtleVByZWZpeCwgbWFwRnVuY3Rpb24sIG1hcENvbnRleHQpIHtcbiAgdGhp
cy5yZXN1bHQgPSBtYXBSZXN1bHQ7XG4gIHRoaXMua2V5UHJlZml4ID0ga2V5UHJlZml4O1xuICB0
aGlzLmZ1bmMgPSBtYXBGdW5jdGlvbjtcbiAgdGhpcy5jb250ZXh0ID0gbWFwQ29udGV4dDtcbiAg
dGhpcy5jb3VudCA9IDA7XG59XG5NYXBCb29rS2VlcGluZy5wcm90b3R5cGUuZGVzdHJ1Y3RvciA9
IGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5yZXN1bHQgPSBudWxsO1xuICB0aGlzLmtleVByZWZpeCA9
IG51bGw7XG4gIHRoaXMuZnVuYyA9IG51bGw7XG4gIHRoaXMuY29udGV4dCA9IG51bGw7XG4gIHRo
aXMuY291bnQgPSAwO1xufTtcblBvb2xlZENsYXNzLmFkZFBvb2xpbmdUbyhNYXBCb29rS2VlcGlu
ZywgZm91ckFyZ3VtZW50UG9vbGVyKTtcblxuZnVuY3Rpb24gbWFwU2luZ2xlQ2hpbGRJbnRvQ29u
dGV4dChib29rS2VlcGluZywgY2hpbGQsIGNoaWxkS2V5KSB7XG4gIHZhciByZXN1bHQgPSBib29r
S2VlcGluZy5yZXN1bHQsXG4gICAgICBrZXlQcmVmaXggPSBib29rS2VlcGluZy5rZXlQcmVmaXgs
XG4gICAgICBmdW5jID0gYm9va0tlZXBpbmcuZnVuYyxcbiAgICAgIGNvbnRleHQgPSBib29rS2Vl
cGluZy5jb250ZXh0O1xuXG5cbiAgdmFyIG1hcHBlZENoaWxkID0gZnVuYy5jYWxsKGNvbnRleHQs
IGNoaWxkLCBib29rS2VlcGluZy5jb3VudCsrKTtcbiAgaWYgKEFycmF5LmlzQXJyYXkobWFwcGVk
Q2hpbGQpKSB7XG4gICAgbWFwSW50b1dpdGhLZXlQcmVmaXhJbnRlcm5hbChtYXBwZWRDaGlsZCwg
cmVzdWx0LCBjaGlsZEtleSwgZW1wdHlGdW5jdGlvbi50aGF0UmV0dXJuc0FyZ3VtZW50KTtcbiAg
fSBlbHNlIGlmIChtYXBwZWRDaGlsZCAhPSBudWxsKSB7XG4gICAgaWYgKFJlYWN0RWxlbWVudC5p
c1ZhbGlkRWxlbWVudChtYXBwZWRDaGlsZCkpIHtcbiAgICAgIG1hcHBlZENoaWxkID0gUmVhY3RF
bGVtZW50LmNsb25lQW5kUmVwbGFjZUtleShtYXBwZWRDaGlsZCxcbiAgICAgIC8vIEtlZXAgYm90
aCB0aGUgKG1hcHBlZCkgYW5kIG9sZCBrZXlzIGlmIHRoZXkgZGlmZmVyLCBqdXN0IGFzXG4gICAg
ICAvLyB0cmF2ZXJzZUFsbENoaWxkcmVuIHVzZWQgdG8gZG8gZm9yIG9iamVjdHMgYXMgY2hpbGRy
ZW5cbiAgICAgIGtleVByZWZpeCArIChtYXBwZWRDaGlsZC5rZXkgJiYgKCFjaGlsZCB8fCBjaGls
ZC5rZXkgIT09IG1hcHBlZENoaWxkLmtleSkgPyBlc2NhcGVVc2VyUHJvdmlkZWRLZXkobWFwcGVk
Q2hpbGQua2V5KSArICcvJyA6ICcnKSArIGNoaWxkS2V5KTtcbiAgICB9XG4gICAgcmVzdWx0LnB1
c2gobWFwcGVkQ2hpbGQpO1xuICB9XG59XG5cbmZ1bmN0aW9uIG1hcEludG9XaXRoS2V5UHJlZml4
SW50ZXJuYWwoY2hpbGRyZW4sIGFycmF5LCBwcmVmaXgsIGZ1bmMsIGNvbnRleHQpIHtcbiAgdmFy
IGVzY2FwZWRQcmVmaXggPSAnJztcbiAgaWYgKHByZWZpeCAhPSBudWxsKSB7XG4gICAgZXNjYXBl
ZFByZWZpeCA9IGVzY2FwZVVzZXJQcm92aWRlZEtleShwcmVmaXgpICsgJy8nO1xuICB9XG4gIHZh
ciB0cmF2ZXJzZUNvbnRleHQgPSBNYXBCb29rS2VlcGluZy5nZXRQb29sZWQoYXJyYXksIGVzY2Fw
ZWRQcmVmaXgsIGZ1bmMsIGNvbnRleHQpO1xuICB0cmF2ZXJzZUFsbENoaWxkcmVuKGNoaWxkcmVu
LCBtYXBTaW5nbGVDaGlsZEludG9Db250ZXh0LCB0cmF2ZXJzZUNvbnRleHQpO1xuICBNYXBCb29r
S2VlcGluZy5yZWxlYXNlKHRyYXZlcnNlQ29udGV4dCk7XG59XG5cbi8qKlxuICogTWFwcyBjaGls
ZHJlbiB0aGF0IGFyZSB0eXBpY2FsbHkgc3BlY2lmaWVkIGFzIGBwcm9wcy5jaGlsZHJlbmAuXG4g
KlxuICogU2VlIGh0dHBzOi8vZmFjZWJvb2suZ2l0aHViLmlvL3JlYWN0L2RvY3MvdG9wLWxldmVs
LWFwaS5odG1sI3JlYWN0LmNoaWxkcmVuLm1hcFxuICpcbiAqIFRoZSBwcm92aWRlZCBtYXBGdW5j
dGlvbihjaGlsZCwga2V5LCBpbmRleCkgd2lsbCBiZSBjYWxsZWQgZm9yIGVhY2hcbiAqIGxlYWYg
Y2hpbGQuXG4gKlxuICogQHBhcmFtIHs/Kn0gY2hpbGRyZW4gQ2hpbGRyZW4gdHJlZSBjb250YWlu
ZXIuXG4gKiBAcGFyYW0ge2Z1bmN0aW9uKCosIGludCl9IGZ1bmMgVGhlIG1hcCBmdW5jdGlvbi5c
biAqIEBwYXJhbSB7Kn0gY29udGV4dCBDb250ZXh0IGZvciBtYXBGdW5jdGlvbi5cbiAqIEByZXR1
cm4ge29iamVjdH0gT2JqZWN0IGNvbnRhaW5pbmcgdGhlIG9yZGVyZWQgbWFwIG9mIHJlc3VsdHMu
XG4gKi9cbmZ1bmN0aW9uIG1hcENoaWxkcmVuKGNoaWxkcmVuLCBmdW5jLCBjb250ZXh0KSB7XG4g
IGlmIChjaGlsZHJlbiA9PSBudWxsKSB7XG4gICAgcmV0dXJuIGNoaWxkcmVuO1xuICB9XG4gIHZh
ciByZXN1bHQgPSBbXTtcbiAgbWFwSW50b1dpdGhLZXlQcmVmaXhJbnRlcm5hbChjaGlsZHJlbiwg
cmVzdWx0LCBudWxsLCBmdW5jLCBjb250ZXh0KTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZnVu
Y3Rpb24gZm9yRWFjaFNpbmdsZUNoaWxkRHVtbXkodHJhdmVyc2VDb250ZXh0LCBjaGlsZCwgbmFt
ZSkge1xuICByZXR1cm4gbnVsbDtcbn1cblxuLyoqXG4gKiBDb3VudCB0aGUgbnVtYmVyIG9mIGNo
aWxkcmVuIHRoYXQgYXJlIHR5cGljYWxseSBzcGVjaWZpZWQgYXNcbiAqIGBwcm9wcy5jaGlsZHJl
bmAuXG4gKlxuICogU2VlIGh0dHBzOi8vZmFjZWJvb2suZ2l0aHViLmlvL3JlYWN0L2RvY3MvdG9w
LWxldmVsLWFwaS5odG1sI3JlYWN0LmNoaWxkcmVuLmNvdW50XG4gKlxuICogQHBhcmFtIHs/Kn0g
Y2hpbGRyZW4gQ2hpbGRyZW4gdHJlZSBjb250YWluZXIuXG4gKiBAcmV0dXJuIHtudW1iZXJ9IFRo
ZSBudW1iZXIgb2YgY2hpbGRyZW4uXG4gKi9cbmZ1bmN0aW9uIGNvdW50Q2hpbGRyZW4oY2hpbGRy
ZW4sIGNvbnRleHQpIHtcbiAgcmV0dXJuIHRyYXZlcnNlQWxsQ2hpbGRyZW4oY2hpbGRyZW4sIGZv
ckVhY2hTaW5nbGVDaGlsZER1bW15LCBudWxsKTtcbn1cblxuLyoqXG4gKiBGbGF0dGVuIGEgY2hp
bGRyZW4gb2JqZWN0ICh0eXBpY2FsbHkgc3BlY2lmaWVkIGFzIGBwcm9wcy5jaGlsZHJlbmApIGFu
ZFxuICogcmV0dXJuIGFuIGFycmF5IHdpdGggYXBwcm9wcmlhdGVseSByZS1rZXllZCBjaGlsZHJl
bi5cbiAqXG4gKiBTZWUgaHR0cHM6Ly9mYWNlYm9vay5naXRodWIuaW8vcmVhY3QvZG9jcy90b3At
bGV2ZWwtYXBpLmh0bWwjcmVhY3QuY2hpbGRyZW4udG9hcnJheVxuICovXG5mdW5jdGlvbiB0b0Fy
cmF5KGNoaWxkcmVuKSB7XG4gIHZhciByZXN1bHQgPSBbXTtcbiAgbWFwSW50b1dpdGhLZXlQcmVm
aXhJbnRlcm5hbChjaGlsZHJlbiwgcmVzdWx0LCBudWxsLCBlbXB0eUZ1bmN0aW9uLnRoYXRSZXR1
cm5zQXJndW1lbnQpO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG52YXIgUmVhY3RDaGlsZHJlbiA9
IHtcbiAgZm9yRWFjaDogZm9yRWFjaENoaWxkcmVuLFxuICBtYXA6IG1hcENoaWxkcmVuLFxuICBt
YXBJbnRvV2l0aEtleVByZWZpeEludGVybmFsOiBtYXBJbnRvV2l0aEtleVByZWZpeEludGVybmFs
LFxuICBjb3VudDogY291bnRDaGlsZHJlbixcbiAgdG9BcnJheTogdG9BcnJheVxufTtcblxubW9k
dWxlLmV4cG9ydHMgPSBSZWFjdENoaWxkcmVuO1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoq
IFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0L2xpYi9SZWFjdENoaWxkcmVuLmpzXG4gKiog
bW9kdWxlIGlkID0gMjE1XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENv
cHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1z
dHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRp
cmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBw
YXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1l
IGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgUmVhY3RFbGVtZW50
ID0gcmVxdWlyZSgnLi9SZWFjdEVsZW1lbnQnKTtcblxuLyoqXG4gKiBDcmVhdGUgYSBmYWN0b3J5
IHRoYXQgY3JlYXRlcyBIVE1MIHRhZyBlbGVtZW50cy5cbiAqXG4gKiBAcHJpdmF0ZVxuICovXG52
YXIgY3JlYXRlRE9NRmFjdG9yeSA9IFJlYWN0RWxlbWVudC5jcmVhdGVGYWN0b3J5O1xuaWYgKHBy
b2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgdmFyIFJlYWN0RWxlbWVu
dFZhbGlkYXRvciA9IHJlcXVpcmUoJy4vUmVhY3RFbGVtZW50VmFsaWRhdG9yJyk7XG4gIGNyZWF0
ZURPTUZhY3RvcnkgPSBSZWFjdEVsZW1lbnRWYWxpZGF0b3IuY3JlYXRlRmFjdG9yeTtcbn1cblxu
LyoqXG4gKiBDcmVhdGVzIGEgbWFwcGluZyBmcm9tIHN1cHBvcnRlZCBIVE1MIHRhZ3MgdG8gYFJl
YWN0RE9NQ29tcG9uZW50YCBjbGFzc2VzLlxuICpcbiAqIEBwdWJsaWNcbiAqL1xudmFyIFJlYWN0
RE9NRmFjdG9yaWVzID0ge1xuICBhOiBjcmVhdGVET01GYWN0b3J5KCdhJyksXG4gIGFiYnI6IGNy
ZWF0ZURPTUZhY3RvcnkoJ2FiYnInKSxcbiAgYWRkcmVzczogY3JlYXRlRE9NRmFjdG9yeSgnYWRk
cmVzcycpLFxuICBhcmVhOiBjcmVhdGVET01GYWN0b3J5KCdhcmVhJyksXG4gIGFydGljbGU6IGNy
ZWF0ZURPTUZhY3RvcnkoJ2FydGljbGUnKSxcbiAgYXNpZGU6IGNyZWF0ZURPTUZhY3RvcnkoJ2Fz
aWRlJyksXG4gIGF1ZGlvOiBjcmVhdGVET01GYWN0b3J5KCdhdWRpbycpLFxuICBiOiBjcmVhdGVE
T01GYWN0b3J5KCdiJyksXG4gIGJhc2U6IGNyZWF0ZURPTUZhY3RvcnkoJ2Jhc2UnKSxcbiAgYmRp
OiBjcmVhdGVET01GYWN0b3J5KCdiZGknKSxcbiAgYmRvOiBjcmVhdGVET01GYWN0b3J5KCdiZG8n
KSxcbiAgYmlnOiBjcmVhdGVET01GYWN0b3J5KCdiaWcnKSxcbiAgYmxvY2txdW90ZTogY3JlYXRl
RE9NRmFjdG9yeSgnYmxvY2txdW90ZScpLFxuICBib2R5OiBjcmVhdGVET01GYWN0b3J5KCdib2R5
JyksXG4gIGJyOiBjcmVhdGVET01GYWN0b3J5KCdicicpLFxuICBidXR0b246IGNyZWF0ZURPTUZh
Y3RvcnkoJ2J1dHRvbicpLFxuICBjYW52YXM6IGNyZWF0ZURPTUZhY3RvcnkoJ2NhbnZhcycpLFxu
ICBjYXB0aW9uOiBjcmVhdGVET01GYWN0b3J5KCdjYXB0aW9uJyksXG4gIGNpdGU6IGNyZWF0ZURP
TUZhY3RvcnkoJ2NpdGUnKSxcbiAgY29kZTogY3JlYXRlRE9NRmFjdG9yeSgnY29kZScpLFxuICBj
b2w6IGNyZWF0ZURPTUZhY3RvcnkoJ2NvbCcpLFxuICBjb2xncm91cDogY3JlYXRlRE9NRmFjdG9y
eSgnY29sZ3JvdXAnKSxcbiAgZGF0YTogY3JlYXRlRE9NRmFjdG9yeSgnZGF0YScpLFxuICBkYXRh
bGlzdDogY3JlYXRlRE9NRmFjdG9yeSgnZGF0YWxpc3QnKSxcbiAgZGQ6IGNyZWF0ZURPTUZhY3Rv
cnkoJ2RkJyksXG4gIGRlbDogY3JlYXRlRE9NRmFjdG9yeSgnZGVsJyksXG4gIGRldGFpbHM6IGNy
ZWF0ZURPTUZhY3RvcnkoJ2RldGFpbHMnKSxcbiAgZGZuOiBjcmVhdGVET01GYWN0b3J5KCdkZm4n
KSxcbiAgZGlhbG9nOiBjcmVhdGVET01GYWN0b3J5KCdkaWFsb2cnKSxcbiAgZGl2OiBjcmVhdGVE
T01GYWN0b3J5KCdkaXYnKSxcbiAgZGw6IGNyZWF0ZURPTUZhY3RvcnkoJ2RsJyksXG4gIGR0OiBj
cmVhdGVET01GYWN0b3J5KCdkdCcpLFxuICBlbTogY3JlYXRlRE9NRmFjdG9yeSgnZW0nKSxcbiAg
ZW1iZWQ6IGNyZWF0ZURPTUZhY3RvcnkoJ2VtYmVkJyksXG4gIGZpZWxkc2V0OiBjcmVhdGVET01G
YWN0b3J5KCdmaWVsZHNldCcpLFxuICBmaWdjYXB0aW9uOiBjcmVhdGVET01GYWN0b3J5KCdmaWdj
YXB0aW9uJyksXG4gIGZpZ3VyZTogY3JlYXRlRE9NRmFjdG9yeSgnZmlndXJlJyksXG4gIGZvb3Rl
cjogY3JlYXRlRE9NRmFjdG9yeSgnZm9vdGVyJyksXG4gIGZvcm06IGNyZWF0ZURPTUZhY3Rvcnko
J2Zvcm0nKSxcbiAgaDE6IGNyZWF0ZURPTUZhY3RvcnkoJ2gxJyksXG4gIGgyOiBjcmVhdGVET01G
YWN0b3J5KCdoMicpLFxuICBoMzogY3JlYXRlRE9NRmFjdG9yeSgnaDMnKSxcbiAgaDQ6IGNyZWF0
ZURPTUZhY3RvcnkoJ2g0JyksXG4gIGg1OiBjcmVhdGVET01GYWN0b3J5KCdoNScpLFxuICBoNjog
Y3JlYXRlRE9NRmFjdG9yeSgnaDYnKSxcbiAgaGVhZDogY3JlYXRlRE9NRmFjdG9yeSgnaGVhZCcp
LFxuICBoZWFkZXI6IGNyZWF0ZURPTUZhY3RvcnkoJ2hlYWRlcicpLFxuICBoZ3JvdXA6IGNyZWF0
ZURPTUZhY3RvcnkoJ2hncm91cCcpLFxuICBocjogY3JlYXRlRE9NRmFjdG9yeSgnaHInKSxcbiAg
aHRtbDogY3JlYXRlRE9NRmFjdG9yeSgnaHRtbCcpLFxuICBpOiBjcmVhdGVET01GYWN0b3J5KCdp
JyksXG4gIGlmcmFtZTogY3JlYXRlRE9NRmFjdG9yeSgnaWZyYW1lJyksXG4gIGltZzogY3JlYXRl
RE9NRmFjdG9yeSgnaW1nJyksXG4gIGlucHV0OiBjcmVhdGVET01GYWN0b3J5KCdpbnB1dCcpLFxu
ICBpbnM6IGNyZWF0ZURPTUZhY3RvcnkoJ2lucycpLFxuICBrYmQ6IGNyZWF0ZURPTUZhY3Rvcnko
J2tiZCcpLFxuICBrZXlnZW46IGNyZWF0ZURPTUZhY3RvcnkoJ2tleWdlbicpLFxuICBsYWJlbDog
Y3JlYXRlRE9NRmFjdG9yeSgnbGFiZWwnKSxcbiAgbGVnZW5kOiBjcmVhdGVET01GYWN0b3J5KCds
ZWdlbmQnKSxcbiAgbGk6IGNyZWF0ZURPTUZhY3RvcnkoJ2xpJyksXG4gIGxpbms6IGNyZWF0ZURP
TUZhY3RvcnkoJ2xpbmsnKSxcbiAgbWFpbjogY3JlYXRlRE9NRmFjdG9yeSgnbWFpbicpLFxuICBt
YXA6IGNyZWF0ZURPTUZhY3RvcnkoJ21hcCcpLFxuICBtYXJrOiBjcmVhdGVET01GYWN0b3J5KCdt
YXJrJyksXG4gIG1lbnU6IGNyZWF0ZURPTUZhY3RvcnkoJ21lbnUnKSxcbiAgbWVudWl0ZW06IGNy
ZWF0ZURPTUZhY3RvcnkoJ21lbnVpdGVtJyksXG4gIG1ldGE6IGNyZWF0ZURPTUZhY3RvcnkoJ21l
dGEnKSxcbiAgbWV0ZXI6IGNyZWF0ZURPTUZhY3RvcnkoJ21ldGVyJyksXG4gIG5hdjogY3JlYXRl
RE9NRmFjdG9yeSgnbmF2JyksXG4gIG5vc2NyaXB0OiBjcmVhdGVET01GYWN0b3J5KCdub3Njcmlw
dCcpLFxuICBvYmplY3Q6IGNyZWF0ZURPTUZhY3RvcnkoJ29iamVjdCcpLFxuICBvbDogY3JlYXRl
RE9NRmFjdG9yeSgnb2wnKSxcbiAgb3B0Z3JvdXA6IGNyZWF0ZURPTUZhY3RvcnkoJ29wdGdyb3Vw
JyksXG4gIG9wdGlvbjogY3JlYXRlRE9NRmFjdG9yeSgnb3B0aW9uJyksXG4gIG91dHB1dDogY3Jl
YXRlRE9NRmFjdG9yeSgnb3V0cHV0JyksXG4gIHA6IGNyZWF0ZURPTUZhY3RvcnkoJ3AnKSxcbiAg
cGFyYW06IGNyZWF0ZURPTUZhY3RvcnkoJ3BhcmFtJyksXG4gIHBpY3R1cmU6IGNyZWF0ZURPTUZh
Y3RvcnkoJ3BpY3R1cmUnKSxcbiAgcHJlOiBjcmVhdGVET01GYWN0b3J5KCdwcmUnKSxcbiAgcHJv
Z3Jlc3M6IGNyZWF0ZURPTUZhY3RvcnkoJ3Byb2dyZXNzJyksXG4gIHE6IGNyZWF0ZURPTUZhY3Rv
cnkoJ3EnKSxcbiAgcnA6IGNyZWF0ZURPTUZhY3RvcnkoJ3JwJyksXG4gIHJ0OiBjcmVhdGVET01G
YWN0b3J5KCdydCcpLFxuICBydWJ5OiBjcmVhdGVET01GYWN0b3J5KCdydWJ5JyksXG4gIHM6IGNy
ZWF0ZURPTUZhY3RvcnkoJ3MnKSxcbiAgc2FtcDogY3JlYXRlRE9NRmFjdG9yeSgnc2FtcCcpLFxu
ICBzY3JpcHQ6IGNyZWF0ZURPTUZhY3RvcnkoJ3NjcmlwdCcpLFxuICBzZWN0aW9uOiBjcmVhdGVE
T01GYWN0b3J5KCdzZWN0aW9uJyksXG4gIHNlbGVjdDogY3JlYXRlRE9NRmFjdG9yeSgnc2VsZWN0
JyksXG4gIHNtYWxsOiBjcmVhdGVET01GYWN0b3J5KCdzbWFsbCcpLFxuICBzb3VyY2U6IGNyZWF0
ZURPTUZhY3RvcnkoJ3NvdXJjZScpLFxuICBzcGFuOiBjcmVhdGVET01GYWN0b3J5KCdzcGFuJyks
XG4gIHN0cm9uZzogY3JlYXRlRE9NRmFjdG9yeSgnc3Ryb25nJyksXG4gIHN0eWxlOiBjcmVhdGVE
T01GYWN0b3J5KCdzdHlsZScpLFxuICBzdWI6IGNyZWF0ZURPTUZhY3RvcnkoJ3N1YicpLFxuICBz
dW1tYXJ5OiBjcmVhdGVET01GYWN0b3J5KCdzdW1tYXJ5JyksXG4gIHN1cDogY3JlYXRlRE9NRmFj
dG9yeSgnc3VwJyksXG4gIHRhYmxlOiBjcmVhdGVET01GYWN0b3J5KCd0YWJsZScpLFxuICB0Ym9k
eTogY3JlYXRlRE9NRmFjdG9yeSgndGJvZHknKSxcbiAgdGQ6IGNyZWF0ZURPTUZhY3RvcnkoJ3Rk
JyksXG4gIHRleHRhcmVhOiBjcmVhdGVET01GYWN0b3J5KCd0ZXh0YXJlYScpLFxuICB0Zm9vdDog
Y3JlYXRlRE9NRmFjdG9yeSgndGZvb3QnKSxcbiAgdGg6IGNyZWF0ZURPTUZhY3RvcnkoJ3RoJyks
XG4gIHRoZWFkOiBjcmVhdGVET01GYWN0b3J5KCd0aGVhZCcpLFxuICB0aW1lOiBjcmVhdGVET01G
YWN0b3J5KCd0aW1lJyksXG4gIHRpdGxlOiBjcmVhdGVET01GYWN0b3J5KCd0aXRsZScpLFxuICB0
cjogY3JlYXRlRE9NRmFjdG9yeSgndHInKSxcbiAgdHJhY2s6IGNyZWF0ZURPTUZhY3RvcnkoJ3Ry
YWNrJyksXG4gIHU6IGNyZWF0ZURPTUZhY3RvcnkoJ3UnKSxcbiAgdWw6IGNyZWF0ZURPTUZhY3Rv
cnkoJ3VsJyksXG4gICd2YXInOiBjcmVhdGVET01GYWN0b3J5KCd2YXInKSxcbiAgdmlkZW86IGNy
ZWF0ZURPTUZhY3RvcnkoJ3ZpZGVvJyksXG4gIHdicjogY3JlYXRlRE9NRmFjdG9yeSgnd2JyJyks
XG5cbiAgLy8gU1ZHXG4gIGNpcmNsZTogY3JlYXRlRE9NRmFjdG9yeSgnY2lyY2xlJyksXG4gIGNs
aXBQYXRoOiBjcmVhdGVET01GYWN0b3J5KCdjbGlwUGF0aCcpLFxuICBkZWZzOiBjcmVhdGVET01G
YWN0b3J5KCdkZWZzJyksXG4gIGVsbGlwc2U6IGNyZWF0ZURPTUZhY3RvcnkoJ2VsbGlwc2UnKSxc
biAgZzogY3JlYXRlRE9NRmFjdG9yeSgnZycpLFxuICBpbWFnZTogY3JlYXRlRE9NRmFjdG9yeSgn
aW1hZ2UnKSxcbiAgbGluZTogY3JlYXRlRE9NRmFjdG9yeSgnbGluZScpLFxuICBsaW5lYXJHcmFk
aWVudDogY3JlYXRlRE9NRmFjdG9yeSgnbGluZWFyR3JhZGllbnQnKSxcbiAgbWFzazogY3JlYXRl
RE9NRmFjdG9yeSgnbWFzaycpLFxuICBwYXRoOiBjcmVhdGVET01GYWN0b3J5KCdwYXRoJyksXG4g
IHBhdHRlcm46IGNyZWF0ZURPTUZhY3RvcnkoJ3BhdHRlcm4nKSxcbiAgcG9seWdvbjogY3JlYXRl
RE9NRmFjdG9yeSgncG9seWdvbicpLFxuICBwb2x5bGluZTogY3JlYXRlRE9NRmFjdG9yeSgncG9s
eWxpbmUnKSxcbiAgcmFkaWFsR3JhZGllbnQ6IGNyZWF0ZURPTUZhY3RvcnkoJ3JhZGlhbEdyYWRp
ZW50JyksXG4gIHJlY3Q6IGNyZWF0ZURPTUZhY3RvcnkoJ3JlY3QnKSxcbiAgc3RvcDogY3JlYXRl
RE9NRmFjdG9yeSgnc3RvcCcpLFxuICBzdmc6IGNyZWF0ZURPTUZhY3RvcnkoJ3N2ZycpLFxuICB0
ZXh0OiBjcmVhdGVET01GYWN0b3J5KCd0ZXh0JyksXG4gIHRzcGFuOiBjcmVhdGVET01GYWN0b3J5
KCd0c3BhbicpXG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0RE9NRmFjdG9yaWVzO1xuXG5c
bi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0L2xp
Yi9SZWFjdERPTUZhY3Rvcmllcy5qc1xuICoqIG1vZHVsZSBpZCA9IDIxNlxuICoqIG1vZHVsZSBj
aHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9v
aywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2Rl
IGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAq
IExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4g
QW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4g
dGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICovXG5cbid1c2Ug
c3RyaWN0JztcblxudmFyIF9yZXF1aXJlID0gcmVxdWlyZSgnLi9SZWFjdEVsZW1lbnQnKSxcbiAg
ICBpc1ZhbGlkRWxlbWVudCA9IF9yZXF1aXJlLmlzVmFsaWRFbGVtZW50O1xuXG52YXIgZmFjdG9y
eSA9IHJlcXVpcmUoJ3Byb3AtdHlwZXMvZmFjdG9yeScpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZh
Y3RvcnkoaXNWYWxpZEVsZW1lbnQpO1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBB
Q0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0L2xpYi9SZWFjdFByb3BUeXBlcy5qc1xuICoqIG1vZHVs
ZSBpZCA9IDIxN1xuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmln
aHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5c
biAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUg
bGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rv
cnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50
IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJl
Y3RvcnkuXG4gKlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIF9yZXF1aXJlID0gcmVxdWly
ZSgnLi9SZWFjdEJhc2VDbGFzc2VzJyksXG4gICAgQ29tcG9uZW50ID0gX3JlcXVpcmUuQ29tcG9u
ZW50O1xuXG52YXIgX3JlcXVpcmUyID0gcmVxdWlyZSgnLi9SZWFjdEVsZW1lbnQnKSxcbiAgICBp
c1ZhbGlkRWxlbWVudCA9IF9yZXF1aXJlMi5pc1ZhbGlkRWxlbWVudDtcblxudmFyIFJlYWN0Tm9v
cFVwZGF0ZVF1ZXVlID0gcmVxdWlyZSgnLi9SZWFjdE5vb3BVcGRhdGVRdWV1ZScpO1xudmFyIGZh
Y3RvcnkgPSByZXF1aXJlKCdjcmVhdGUtcmVhY3QtY2xhc3MvZmFjdG9yeScpO1xuXG5tb2R1bGUu
ZXhwb3J0cyA9IGZhY3RvcnkoQ29tcG9uZW50LCBpc1ZhbGlkRWxlbWVudCwgUmVhY3ROb29wVXBk
YXRlUXVldWUpO1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4g
KiogLi9+L3JlYWN0L2xpYi9jcmVhdGVDbGFzcy5qc1xuICoqIG1vZHVsZSBpZCA9IDIxOVxuICoq
IG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50
LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNv
dXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBp
biB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3Vy
Y2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUg
Zm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICog
XG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgbmV4dERlYnVnSUQgPSAxO1xuXG5mdW5jdGlv
biBnZXROZXh0RGVidWdJRCgpIHtcbiAgcmV0dXJuIG5leHREZWJ1Z0lEKys7XG59XG5cbm1vZHVs
ZS5leHBvcnRzID0gZ2V0TmV4dERlYnVnSUQ7XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiog
V0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3QvbGliL2dldE5leHREZWJ1Z0lELmpzXG4gKiog
bW9kdWxlIGlkID0gMjIxXG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENv
cHlyaWdodCAyMDE0LTIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVk
LlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHls
ZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVj
dG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRl
bnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRp
cmVjdG9yeS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG4vKipcbiAqIEZvcmtlZCBmcm9t
IGZianMvd2FybmluZzpcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9mYmpzL2Jsb2Iv
ZTY2YmEyMGFkNWJlNDMzZWI1NDQyM2YyYjA5N2Q4MjkzMjRkOWRlNi9wYWNrYWdlcy9mYmpzL3Ny
Yy9fX2ZvcmtzX18vd2FybmluZy5qc1xuICpcbiAqIE9ubHkgY2hhbmdlIGlzIHdlIHVzZSBjb25z
b2xlLndhcm4gaW5zdGVhZCBvZiBjb25zb2xlLmVycm9yLFxuICogYW5kIGRvIG5vdGhpbmcgd2hl
biAnY29uc29sZScgaXMgbm90IHN1cHBvcnRlZC5cbiAqIFRoaXMgcmVhbGx5IHNpbXBsaWZpZXMg
dGhlIGNvZGUuXG4gKiAtLS1cbiAqIFNpbWlsYXIgdG8gaW52YXJpYW50IGJ1dCBvbmx5IGxvZ3Mg
YSB3YXJuaW5nIGlmIHRoZSBjb25kaXRpb24gaXMgbm90IG1ldC5cbiAqIFRoaXMgY2FuIGJlIHVz
ZWQgdG8gbG9nIGlzc3VlcyBpbiBkZXZlbG9wbWVudCBlbnZpcm9ubWVudHMgaW4gY3JpdGljYWxc
biAqIHBhdGhzLiBSZW1vdmluZyB0aGUgbG9nZ2luZyBjb2RlIGZvciBwcm9kdWN0aW9uIGVudmly
b25tZW50cyB3aWxsIGtlZXAgdGhlXG4gKiBzYW1lIGxvZ2ljIGFuZCBmb2xsb3cgdGhlIHNhbWUg
Y29kZSBwYXRocy5cbiAqL1xuXG52YXIgbG93UHJpb3JpdHlXYXJuaW5nID0gZnVuY3Rpb24gKCkg
e307XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIHZh
ciBwcmludFdhcm5pbmcgPSBmdW5jdGlvbiAoZm9ybWF0KSB7XG4gICAgZm9yICh2YXIgX2xlbiA9
IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBBcnJheShfbGVuID4gMSA/IF9sZW4gLSAxIDogMCks
IF9rZXkgPSAxOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgICBhcmdzW19rZXkgLSAxXSA9
IGFyZ3VtZW50c1tfa2V5XTtcbiAgICB9XG5cbiAgICB2YXIgYXJnSW5kZXggPSAwO1xuICAgIHZh
ciBtZXNzYWdlID0gJ1dhcm5pbmc6ICcgKyBmb3JtYXQucmVwbGFjZSgvJXMvZywgZnVuY3Rpb24g
KCkge1xuICAgICAgcmV0dXJuIGFyZ3NbYXJnSW5kZXgrK107XG4gICAgfSk7XG4gICAgaWYgKHR5
cGVvZiBjb25zb2xlICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgY29uc29sZS53YXJuKG1lc3Nh
Z2UpO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgLy8gLS0tIFdlbGNvbWUgdG8gZGVidWdnaW5n
IFJlYWN0IC0tLVxuICAgICAgLy8gVGhpcyBlcnJvciB3YXMgdGhyb3duIGFzIGEgY29udmVuaWVu
Y2Ugc28gdGhhdCB5b3UgY2FuIHVzZSB0aGlzIHN0YWNrXG4gICAgICAvLyB0byBmaW5kIHRoZSBj
YWxsc2l0ZSB0aGF0IGNhdXNlZCB0aGlzIHdhcm5pbmcgdG8gZmlyZS5cbiAgICAgIHRocm93IG5l
dyBFcnJvcihtZXNzYWdlKTtcbiAgICB9IGNhdGNoICh4KSB7fVxuICB9O1xuXG4gIGxvd1ByaW9y
aXR5V2FybmluZyA9IGZ1bmN0aW9uIChjb25kaXRpb24sIGZvcm1hdCkge1xuICAgIGlmIChmb3Jt
YXQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdgd2FybmluZyhjb25k
aXRpb24sIGZvcm1hdCwgLi4uYXJncylgIHJlcXVpcmVzIGEgd2FybmluZyAnICsgJ21lc3NhZ2Ug
YXJndW1lbnQnKTtcbiAgICB9XG4gICAgaWYgKCFjb25kaXRpb24pIHtcbiAgICAgIGZvciAodmFy
IF9sZW4yID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IEFycmF5KF9sZW4yID4gMiA/IF9sZW4y
IC0gMiA6IDApLCBfa2V5MiA9IDI7IF9rZXkyIDwgX2xlbjI7IF9rZXkyKyspIHtcbiAgICAgICAg
YXJnc1tfa2V5MiAtIDJdID0gYXJndW1lbnRzW19rZXkyXTtcbiAgICAgIH1cblxuICAgICAgcHJp
bnRXYXJuaW5nLmFwcGx5KHVuZGVmaW5lZCwgW2Zvcm1hdF0uY29uY2F0KGFyZ3MpKTtcbiAgICB9
XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbG93UHJpb3JpdHlXYXJuaW5nO1xuXG5cbi8q
KioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0L2xpYi9s
b3dQcmlvcml0eVdhcm5pbmcuanNcbiAqKiBtb2R1bGUgaWQgPSAyMjJcbiAqKiBtb2R1bGUgY2h1
bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ss
IEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBp
cyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBM
SUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFu
IGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRo
ZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuJ3VzZSBzdHJp
Y3QnO1xuXG52YXIgX3Byb2RJbnZhcmlhbnQgPSByZXF1aXJlKCcuL3JlYWN0UHJvZEludmFyaWFu
dCcpO1xuXG52YXIgUmVhY3RFbGVtZW50ID0gcmVxdWlyZSgnLi9SZWFjdEVsZW1lbnQnKTtcblxu
dmFyIGludmFyaWFudCA9IHJlcXVpcmUoJ2ZianMvbGliL2ludmFyaWFudCcpO1xuXG4vKipcbiAq
IFJldHVybnMgdGhlIGZpcnN0IGNoaWxkIGluIGEgY29sbGVjdGlvbiBvZiBjaGlsZHJlbiBhbmQg
dmVyaWZpZXMgdGhhdCB0aGVyZVxuICogaXMgb25seSBvbmUgY2hpbGQgaW4gdGhlIGNvbGxlY3Rp
b24uXG4gKlxuICogU2VlIGh0dHBzOi8vZmFjZWJvb2suZ2l0aHViLmlvL3JlYWN0L2RvY3MvdG9w
LWxldmVsLWFwaS5odG1sI3JlYWN0LmNoaWxkcmVuLm9ubHlcbiAqXG4gKiBUaGUgY3VycmVudCBp
bXBsZW1lbnRhdGlvbiBvZiB0aGlzIGZ1bmN0aW9uIGFzc3VtZXMgdGhhdCBhIHNpbmdsZSBjaGls
ZCBnZXRzXG4gKiBwYXNzZWQgd2l0aG91dCBhIHdyYXBwZXIsIGJ1dCB0aGUgcHVycG9zZSBvZiB0
aGlzIGhlbHBlciBmdW5jdGlvbiBpcyB0b1xuICogYWJzdHJhY3QgYXdheSB0aGUgcGFydGljdWxh
ciBzdHJ1Y3R1cmUgb2YgY2hpbGRyZW4uXG4gKlxuICogQHBhcmFtIHs/b2JqZWN0fSBjaGlsZHJl
biBDaGlsZCBjb2xsZWN0aW9uIHN0cnVjdHVyZS5cbiAqIEByZXR1cm4ge1JlYWN0RWxlbWVudH0g
VGhlIGZpcnN0IGFuZCBvbmx5IGBSZWFjdEVsZW1lbnRgIGNvbnRhaW5lZCBpbiB0aGVcbiAqIHN0
cnVjdHVyZS5cbiAqL1xuZnVuY3Rpb24gb25seUNoaWxkKGNoaWxkcmVuKSB7XG4gICFSZWFjdEVs
ZW1lbnQuaXNWYWxpZEVsZW1lbnQoY2hpbGRyZW4pID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09
ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ1JlYWN0LkNoaWxkcmVuLm9ubHkgZXhw
ZWN0ZWQgdG8gcmVjZWl2ZSBhIHNpbmdsZSBSZWFjdCBlbGVtZW50IGNoaWxkLicpIDogX3Byb2RJ
bnZhcmlhbnQoJzE0MycpIDogdm9pZCAwO1xuICByZXR1cm4gY2hpbGRyZW47XG59XG5cbm1vZHVs
ZS5leHBvcnRzID0gb25seUNoaWxkO1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBB
Q0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0L2xpYi9vbmx5Q2hpbGQuanNcbiAqKiBtb2R1bGUgaWQg
PSAyMjNcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIw
MTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxu
ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vu
c2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9m
IHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdo
dHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5
LlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBfcHJvZEludmFyaWFudCA9IHJlcXVp
cmUoJy4vcmVhY3RQcm9kSW52YXJpYW50Jyk7XG5cbnZhciBSZWFjdEN1cnJlbnRPd25lciA9IHJl
cXVpcmUoJy4vUmVhY3RDdXJyZW50T3duZXInKTtcbnZhciBSRUFDVF9FTEVNRU5UX1RZUEUgPSBy
ZXF1aXJlKCcuL1JlYWN0RWxlbWVudFN5bWJvbCcpO1xuXG52YXIgZ2V0SXRlcmF0b3JGbiA9IHJl
cXVpcmUoJy4vZ2V0SXRlcmF0b3JGbicpO1xudmFyIGludmFyaWFudCA9IHJlcXVpcmUoJ2ZianMv
bGliL2ludmFyaWFudCcpO1xudmFyIEtleUVzY2FwZVV0aWxzID0gcmVxdWlyZSgnLi9LZXlFc2Nh
cGVVdGlscycpO1xudmFyIHdhcm5pbmcgPSByZXF1aXJlKCdmYmpzL2xpYi93YXJuaW5nJyk7XG5c
bnZhciBTRVBBUkFUT1IgPSAnLic7XG52YXIgU1VCU0VQQVJBVE9SID0gJzonO1xuXG4vKipcbiAq
IFRoaXMgaXMgaW5saW5lZCBmcm9tIFJlYWN0RWxlbWVudCBzaW5jZSB0aGlzIGZpbGUgaXMgc2hh
cmVkIGJldHdlZW5cbiAqIGlzb21vcnBoaWMgYW5kIHJlbmRlcmVycy4gV2UgY291bGQgZXh0cmFj
dCB0aGlzIHRvIGFcbiAqXG4gKi9cblxuLyoqXG4gKiBUT0RPOiBUZXN0IHRoYXQgYSBzaW5nbGUg
Y2hpbGQgYW5kIGFuIGFycmF5IHdpdGggb25lIGl0ZW0gaGF2ZSB0aGUgc2FtZSBrZXlcbiAqIHBh
dHRlcm4uXG4gKi9cblxudmFyIGRpZFdhcm5BYm91dE1hcHMgPSBmYWxzZTtcblxuLyoqXG4gKiBH
ZW5lcmF0ZSBhIGtleSBzdHJpbmcgdGhhdCBpZGVudGlmaWVzIGEgY29tcG9uZW50IHdpdGhpbiBh
IHNldC5cbiAqXG4gKiBAcGFyYW0geyp9IGNvbXBvbmVudCBBIGNvbXBvbmVudCB0aGF0IGNvdWxk
IGNvbnRhaW4gYSBtYW51YWwga2V5LlxuICogQHBhcmFtIHtudW1iZXJ9IGluZGV4IEluZGV4IHRo
YXQgaXMgdXNlZCBpZiBhIG1hbnVhbCBrZXkgaXMgbm90IHByb3ZpZGVkLlxuICogQHJldHVybiB7
c3RyaW5nfVxuICovXG5mdW5jdGlvbiBnZXRDb21wb25lbnRLZXkoY29tcG9uZW50LCBpbmRleCkg
e1xuICAvLyBEbyBzb21lIHR5cGVjaGVja2luZyBoZXJlIHNpbmNlIHdlIGNhbGwgdGhpcyBibGlu
ZGx5LiBXZSB3YW50IHRvIGVuc3VyZVxuICAvLyB0aGF0IHdlIGRvbid0IGJsb2NrIHBvdGVudGlh
bCBmdXR1cmUgRVMgQVBJcy5cbiAgaWYgKGNvbXBvbmVudCAmJiB0eXBlb2YgY29tcG9uZW50ID09
PSAnb2JqZWN0JyAmJiBjb21wb25lbnQua2V5ICE9IG51bGwpIHtcbiAgICAvLyBFeHBsaWNpdCBr
ZXlcbiAgICByZXR1cm4gS2V5RXNjYXBlVXRpbHMuZXNjYXBlKGNvbXBvbmVudC5rZXkpO1xuICB9
XG4gIC8vIEltcGxpY2l0IGtleSBkZXRlcm1pbmVkIGJ5IHRoZSBpbmRleCBpbiB0aGUgc2V0XG4g
IHJldHVybiBpbmRleC50b1N0cmluZygzNik7XG59XG5cbi8qKlxuICogQHBhcmFtIHs/Kn0gY2hp
bGRyZW4gQ2hpbGRyZW4gdHJlZSBjb250YWluZXIuXG4gKiBAcGFyYW0geyFzdHJpbmd9IG5hbWVT
b0ZhciBOYW1lIG9mIHRoZSBrZXkgcGF0aCBzbyBmYXIuXG4gKiBAcGFyYW0geyFmdW5jdGlvbn0g
Y2FsbGJhY2sgQ2FsbGJhY2sgdG8gaW52b2tlIHdpdGggZWFjaCBjaGlsZCBmb3VuZC5cbiAqIEBw
YXJhbSB7Pyp9IHRyYXZlcnNlQ29udGV4dCBVc2VkIHRvIHBhc3MgaW5mb3JtYXRpb24gdGhyb3Vn
aG91dCB0aGUgdHJhdmVyc2FsXG4gKiBwcm9jZXNzLlxuICogQHJldHVybiB7IW51bWJlcn0gVGhl
IG51bWJlciBvZiBjaGlsZHJlbiBpbiB0aGlzIHN1YnRyZWUuXG4gKi9cbmZ1bmN0aW9uIHRyYXZl
cnNlQWxsQ2hpbGRyZW5JbXBsKGNoaWxkcmVuLCBuYW1lU29GYXIsIGNhbGxiYWNrLCB0cmF2ZXJz
ZUNvbnRleHQpIHtcbiAgdmFyIHR5cGUgPSB0eXBlb2YgY2hpbGRyZW47XG5cbiAgaWYgKHR5cGUg
PT09ICd1bmRlZmluZWQnIHx8IHR5cGUgPT09ICdib29sZWFuJykge1xuICAgIC8vIEFsbCBvZiB0
aGUgYWJvdmUgYXJlIHBlcmNlaXZlZCBhcyBudWxsLlxuICAgIGNoaWxkcmVuID0gbnVsbDtcbiAg
fVxuXG4gIGlmIChjaGlsZHJlbiA9PT0gbnVsbCB8fCB0eXBlID09PSAnc3RyaW5nJyB8fCB0eXBl
ID09PSAnbnVtYmVyJyB8fFxuICAvLyBUaGUgZm9sbG93aW5nIGlzIGlubGluZWQgZnJvbSBSZWFj
dEVsZW1lbnQuIFRoaXMgbWVhbnMgd2UgY2FuIG9wdGltaXplXG4gIC8vIHNvbWUgY2hlY2tzLiBS
ZWFjdCBGaWJlciBhbHNvIGlubGluZXMgdGhpcyBsb2dpYyBmb3Igc2ltaWxhciBwdXJwb3Nlcy5c
biAgdHlwZSA9PT0gJ29iamVjdCcgJiYgY2hpbGRyZW4uJCR0eXBlb2YgPT09IFJFQUNUX0VMRU1F
TlRfVFlQRSkge1xuICAgIGNhbGxiYWNrKHRyYXZlcnNlQ29udGV4dCwgY2hpbGRyZW4sXG4gICAg
Ly8gSWYgaXQncyB0aGUgb25seSBjaGlsZCwgdHJlYXQgdGhlIG5hbWUgYXMgaWYgaXQgd2FzIHdy
YXBwZWQgaW4gYW4gYXJyYXlcbiAgICAvLyBzbyB0aGF0IGl0J3MgY29uc2lzdGVudCBpZiB0aGUg
bnVtYmVyIG9mIGNoaWxkcmVuIGdyb3dzLlxuICAgIG5hbWVTb0ZhciA9PT0gJycgPyBTRVBBUkFU
T1IgKyBnZXRDb21wb25lbnRLZXkoY2hpbGRyZW4sIDApIDogbmFtZVNvRmFyKTtcbiAgICByZXR1
cm4gMTtcbiAgfVxuXG4gIHZhciBjaGlsZDtcbiAgdmFyIG5leHROYW1lO1xuICB2YXIgc3VidHJl
ZUNvdW50ID0gMDsgLy8gQ291bnQgb2YgY2hpbGRyZW4gZm91bmQgaW4gdGhlIGN1cnJlbnQgc3Vi
dHJlZS5cbiAgdmFyIG5leHROYW1lUHJlZml4ID0gbmFtZVNvRmFyID09PSAnJyA/IFNFUEFSQVRP
UiA6IG5hbWVTb0ZhciArIFNVQlNFUEFSQVRPUjtcblxuICBpZiAoQXJyYXkuaXNBcnJheShjaGls
ZHJlbikpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7
XG4gICAgICBjaGlsZCA9IGNoaWxkcmVuW2ldO1xuICAgICAgbmV4dE5hbWUgPSBuZXh0TmFtZVBy
ZWZpeCArIGdldENvbXBvbmVudEtleShjaGlsZCwgaSk7XG4gICAgICBzdWJ0cmVlQ291bnQgKz0g
dHJhdmVyc2VBbGxDaGlsZHJlbkltcGwoY2hpbGQsIG5leHROYW1lLCBjYWxsYmFjaywgdHJhdmVy
c2VDb250ZXh0KTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgdmFyIGl0ZXJhdG9yRm4gPSBnZXRJ
dGVyYXRvckZuKGNoaWxkcmVuKTtcbiAgICBpZiAoaXRlcmF0b3JGbikge1xuICAgICAgdmFyIGl0
ZXJhdG9yID0gaXRlcmF0b3JGbi5jYWxsKGNoaWxkcmVuKTtcbiAgICAgIHZhciBzdGVwO1xuICAg
ICAgaWYgKGl0ZXJhdG9yRm4gIT09IGNoaWxkcmVuLmVudHJpZXMpIHtcbiAgICAgICAgdmFyIGlp
ID0gMDtcbiAgICAgICAgd2hpbGUgKCEoc3RlcCA9IGl0ZXJhdG9yLm5leHQoKSkuZG9uZSkge1xu
ICAgICAgICAgIGNoaWxkID0gc3RlcC52YWx1ZTtcbiAgICAgICAgICBuZXh0TmFtZSA9IG5leHRO
YW1lUHJlZml4ICsgZ2V0Q29tcG9uZW50S2V5KGNoaWxkLCBpaSsrKTtcbiAgICAgICAgICBzdWJ0
cmVlQ291bnQgKz0gdHJhdmVyc2VBbGxDaGlsZHJlbkltcGwoY2hpbGQsIG5leHROYW1lLCBjYWxs
YmFjaywgdHJhdmVyc2VDb250ZXh0KTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAg
ICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAg
ICB2YXIgbWFwc0FzQ2hpbGRyZW5BZGRlbmR1bSA9ICcnO1xuICAgICAgICAgIGlmIChSZWFjdEN1
cnJlbnRPd25lci5jdXJyZW50KSB7XG4gICAgICAgICAgICB2YXIgbWFwc0FzQ2hpbGRyZW5Pd25l
ck5hbWUgPSBSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50LmdldE5hbWUoKTtcbiAgICAgICAgICAg
IGlmIChtYXBzQXNDaGlsZHJlbk93bmVyTmFtZSkge1xuICAgICAgICAgICAgICBtYXBzQXNDaGls
ZHJlbkFkZGVuZHVtID0gJyBDaGVjayB0aGUgcmVuZGVyIG1ldGhvZCBvZiBgJyArIG1hcHNBc0No
aWxkcmVuT3duZXJOYW1lICsgJ2AuJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAg
ICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZGlk
V2FybkFib3V0TWFwcywgJ1VzaW5nIE1hcHMgYXMgY2hpbGRyZW4gaXMgbm90IHlldCBmdWxseSBz
dXBwb3J0ZWQuIEl0IGlzIGFuICcgKyAnZXhwZXJpbWVudGFsIGZlYXR1cmUgdGhhdCBtaWdodCBi
ZSByZW1vdmVkLiBDb252ZXJ0IGl0IHRvIGEgJyArICdzZXF1ZW5jZSAvIGl0ZXJhYmxlIG9mIGtl
eWVkIFJlYWN0RWxlbWVudHMgaW5zdGVhZC4lcycsIG1hcHNBc0NoaWxkcmVuQWRkZW5kdW0pIDog
dm9pZCAwO1xuICAgICAgICAgIGRpZFdhcm5BYm91dE1hcHMgPSB0cnVlO1xuICAgICAgICB9XG4g
ICAgICAgIC8vIEl0ZXJhdG9yIHdpbGwgcHJvdmlkZSBlbnRyeSBbayx2XSB0dXBsZXMgcmF0aGVy
IHRoYW4gdmFsdWVzLlxuICAgICAgICB3aGlsZSAoIShzdGVwID0gaXRlcmF0b3IubmV4dCgpKS5k
b25lKSB7XG4gICAgICAgICAgdmFyIGVudHJ5ID0gc3RlcC52YWx1ZTtcbiAgICAgICAgICBpZiAo
ZW50cnkpIHtcbiAgICAgICAgICAgIGNoaWxkID0gZW50cnlbMV07XG4gICAgICAgICAgICBuZXh0
TmFtZSA9IG5leHROYW1lUHJlZml4ICsgS2V5RXNjYXBlVXRpbHMuZXNjYXBlKGVudHJ5WzBdKSAr
IFNVQlNFUEFSQVRPUiArIGdldENvbXBvbmVudEtleShjaGlsZCwgMCk7XG4gICAgICAgICAgICBz
dWJ0cmVlQ291bnQgKz0gdHJhdmVyc2VBbGxDaGlsZHJlbkltcGwoY2hpbGQsIG5leHROYW1lLCBj
YWxsYmFjaywgdHJhdmVyc2VDb250ZXh0KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAg
IH1cbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdvYmplY3QnKSB7XG4gICAgICB2YXIgYWRkZW5k
dW0gPSAnJztcbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24n
KSB7XG4gICAgICAgIGFkZGVuZHVtID0gJyBJZiB5b3UgbWVhbnQgdG8gcmVuZGVyIGEgY29sbGVj
dGlvbiBvZiBjaGlsZHJlbiwgdXNlIGFuIGFycmF5ICcgKyAnaW5zdGVhZCBvciB3cmFwIHRoZSBv
YmplY3QgdXNpbmcgY3JlYXRlRnJhZ21lbnQob2JqZWN0KSBmcm9tIHRoZSAnICsgJ1JlYWN0IGFk
ZC1vbnMuJztcbiAgICAgICAgaWYgKGNoaWxkcmVuLl9pc1JlYWN0RWxlbWVudCkge1xuICAgICAg
ICAgIGFkZGVuZHVtID0gXCIgSXQgbG9va3MgbGlrZSB5b3UncmUgdXNpbmcgYW4gZWxlbWVudCBj
cmVhdGVkIGJ5IGEgZGlmZmVyZW50IFwiICsgJ3ZlcnNpb24gb2YgUmVhY3QuIE1ha2Ugc3VyZSB0
byB1c2Ugb25seSBvbmUgY29weSBvZiBSZWFjdC4nO1xuICAgICAgICB9XG4gICAgICAgIGlmIChS
ZWFjdEN1cnJlbnRPd25lci5jdXJyZW50KSB7XG4gICAgICAgICAgdmFyIG5hbWUgPSBSZWFjdEN1
cnJlbnRPd25lci5jdXJyZW50LmdldE5hbWUoKTtcbiAgICAgICAgICBpZiAobmFtZSkge1xuICAg
ICAgICAgICAgYWRkZW5kdW0gKz0gJyBDaGVjayB0aGUgcmVuZGVyIG1ldGhvZCBvZiBgJyArIG5h
bWUgKyAnYC4nO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdmFyIGNo
aWxkcmVuU3RyaW5nID0gU3RyaW5nKGNoaWxkcmVuKTtcbiAgICAgICFmYWxzZSA/IHByb2Nlc3Mu
ZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdPYmplY3Rz
IGFyZSBub3QgdmFsaWQgYXMgYSBSZWFjdCBjaGlsZCAoZm91bmQ6ICVzKS4lcycsIGNoaWxkcmVu
U3RyaW5nID09PSAnW29iamVjdCBPYmplY3RdJyA/ICdvYmplY3Qgd2l0aCBrZXlzIHsnICsgT2Jq
ZWN0LmtleXMoY2hpbGRyZW4pLmpvaW4oJywgJykgKyAnfScgOiBjaGlsZHJlblN0cmluZywgYWRk
ZW5kdW0pIDogX3Byb2RJbnZhcmlhbnQoJzMxJywgY2hpbGRyZW5TdHJpbmcgPT09ICdbb2JqZWN0
IE9iamVjdF0nID8gJ29iamVjdCB3aXRoIGtleXMgeycgKyBPYmplY3Qua2V5cyhjaGlsZHJlbiku
am9pbignLCAnKSArICd9JyA6IGNoaWxkcmVuU3RyaW5nLCBhZGRlbmR1bSkgOiB2b2lkIDA7XG4g
ICAgfVxuICB9XG5cbiAgcmV0dXJuIHN1YnRyZWVDb3VudDtcbn1cblxuLyoqXG4gKiBUcmF2ZXJz
ZXMgY2hpbGRyZW4gdGhhdCBhcmUgdHlwaWNhbGx5IHNwZWNpZmllZCBhcyBgcHJvcHMuY2hpbGRy
ZW5gLCBidXRcbiAqIG1pZ2h0IGFsc28gYmUgc3BlY2lmaWVkIHRocm91Z2ggYXR0cmlidXRlczpc
biAqXG4gKiAtIGB0cmF2ZXJzZUFsbENoaWxkcmVuKHRoaXMucHJvcHMuY2hpbGRyZW4sIC4uLilg
XG4gKiAtIGB0cmF2ZXJzZUFsbENoaWxkcmVuKHRoaXMucHJvcHMubGVmdFBhbmVsQ2hpbGRyZW4s
IC4uLilgXG4gKlxuICogVGhlIGB0cmF2ZXJzZUNvbnRleHRgIGlzIGFuIG9wdGlvbmFsIGFyZ3Vt
ZW50IHRoYXQgaXMgcGFzc2VkIHRocm91Z2ggdGhlXG4gKiBlbnRpcmUgdHJhdmVyc2FsLiBJdCBj
YW4gYmUgdXNlZCB0byBzdG9yZSBhY2N1bXVsYXRpb25zIG9yIGFueXRoaW5nIGVsc2UgdGhhdFxu
ICogdGhlIGNhbGxiYWNrIG1pZ2h0IGZpbmQgcmVsZXZhbnQuXG4gKlxuICogQHBhcmFtIHs/Kn0g
Y2hpbGRyZW4gQ2hpbGRyZW4gdHJlZSBvYmplY3QuXG4gKiBAcGFyYW0geyFmdW5jdGlvbn0gY2Fs
bGJhY2sgVG8gaW52b2tlIHVwb24gdHJhdmVyc2luZyBlYWNoIGNoaWxkLlxuICogQHBhcmFtIHs/
Kn0gdHJhdmVyc2VDb250ZXh0IENvbnRleHQgZm9yIHRyYXZlcnNhbC5cbiAqIEByZXR1cm4geyFu
dW1iZXJ9IFRoZSBudW1iZXIgb2YgY2hpbGRyZW4gaW4gdGhpcyBzdWJ0cmVlLlxuICovXG5mdW5j
dGlvbiB0cmF2ZXJzZUFsbENoaWxkcmVuKGNoaWxkcmVuLCBjYWxsYmFjaywgdHJhdmVyc2VDb250
ZXh0KSB7XG4gIGlmIChjaGlsZHJlbiA9PSBudWxsKSB7XG4gICAgcmV0dXJuIDA7XG4gIH1cblxu
ICByZXR1cm4gdHJhdmVyc2VBbGxDaGlsZHJlbkltcGwoY2hpbGRyZW4sICcnLCBjYWxsYmFjaywg
dHJhdmVyc2VDb250ZXh0KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB0cmF2ZXJzZUFsbENoaWxk
cmVuO1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+
L3JlYWN0L2xpYi90cmF2ZXJzZUFsbENoaWxkcmVuLmpzXG4gKiogbW9kdWxlIGlkID0gMjI0XG4g
KiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIndXNlIHN0cmljdCc7XG5cbmV4cG9ydHMuX19l
c01vZHVsZSA9IHRydWU7XG5cbnZhciBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rp
b24gKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykg
eyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldOyBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7IGlm
IChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7IHRh
cmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSB9IHJldHVybiB0YXJnZXQ7IH07XG5cbmV4cG9y
dHNbJ2RlZmF1bHQnXSA9IGFwcGx5TWlkZGxld2FyZTtcblxudmFyIF9jb21wb3NlID0gcmVxdWly
ZSgnLi9jb21wb3NlJyk7XG5cbnZhciBfY29tcG9zZTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0
KF9jb21wb3NlKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0
dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgJ2RlZmF1bHQnOiBvYmogfTsgfVxu
XG4vKipcbiAqIENyZWF0ZXMgYSBzdG9yZSBlbmhhbmNlciB0aGF0IGFwcGxpZXMgbWlkZGxld2Fy
ZSB0byB0aGUgZGlzcGF0Y2ggbWV0aG9kXG4gKiBvZiB0aGUgUmVkdXggc3RvcmUuIFRoaXMgaXMg
aGFuZHkgZm9yIGEgdmFyaWV0eSBvZiB0YXNrcywgc3VjaCBhcyBleHByZXNzaW5nXG4gKiBhc3lu
Y2hyb25vdXMgYWN0aW9ucyBpbiBhIGNvbmNpc2UgbWFubmVyLCBvciBsb2dnaW5nIGV2ZXJ5IGFj
dGlvbiBwYXlsb2FkLlxuICpcbiAqIFNlZSBgcmVkdXgtdGh1bmtgIHBhY2thZ2UgYXMgYW4gZXhh
bXBsZSBvZiB0aGUgUmVkdXggbWlkZGxld2FyZS5cbiAqXG4gKiBCZWNhdXNlIG1pZGRsZXdhcmUg
aXMgcG90ZW50aWFsbHkgYXN5bmNocm9ub3VzLCB0aGlzIHNob3VsZCBiZSB0aGUgZmlyc3RcbiAq
IHN0b3JlIGVuaGFuY2VyIGluIHRoZSBjb21wb3NpdGlvbiBjaGFpbi5cbiAqXG4gKiBOb3RlIHRo
YXQgZWFjaCBtaWRkbGV3YXJlIHdpbGwgYmUgZ2l2ZW4gdGhlIGBkaXNwYXRjaGAgYW5kIGBnZXRT
dGF0ZWAgZnVuY3Rpb25zXG4gKiBhcyBuYW1lZCBhcmd1bWVudHMuXG4gKlxuICogQHBhcmFtIHsu
Li5GdW5jdGlvbn0gbWlkZGxld2FyZXMgVGhlIG1pZGRsZXdhcmUgY2hhaW4gdG8gYmUgYXBwbGll
ZC5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gQSBzdG9yZSBlbmhhbmNlciBhcHBseWluZyB0aGUg
bWlkZGxld2FyZS5cbiAqL1xuZnVuY3Rpb24gYXBwbHlNaWRkbGV3YXJlKCkge1xuICBmb3IgKHZh
ciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgbWlkZGxld2FyZXMgPSBBcnJheShfbGVuKSwgX2tl
eSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICBtaWRkbGV3YXJlc1tfa2V5XSA9IGFy
Z3VtZW50c1tfa2V5XTtcbiAgfVxuXG4gIHJldHVybiBmdW5jdGlvbiAoY3JlYXRlU3RvcmUpIHtc
biAgICByZXR1cm4gZnVuY3Rpb24gKHJlZHVjZXIsIHByZWxvYWRlZFN0YXRlLCBlbmhhbmNlcikg
e1xuICAgICAgdmFyIHN0b3JlID0gY3JlYXRlU3RvcmUocmVkdWNlciwgcHJlbG9hZGVkU3RhdGUs
IGVuaGFuY2VyKTtcbiAgICAgIHZhciBfZGlzcGF0Y2ggPSBzdG9yZS5kaXNwYXRjaDtcbiAgICAg
IHZhciBjaGFpbiA9IFtdO1xuXG4gICAgICB2YXIgbWlkZGxld2FyZUFQSSA9IHtcbiAgICAgICAg
Z2V0U3RhdGU6IHN0b3JlLmdldFN0YXRlLFxuICAgICAgICBkaXNwYXRjaDogZnVuY3Rpb24gZGlz
cGF0Y2goYWN0aW9uKSB7XG4gICAgICAgICAgcmV0dXJuIF9kaXNwYXRjaChhY3Rpb24pO1xuICAg
ICAgICB9XG4gICAgICB9O1xuICAgICAgY2hhaW4gPSBtaWRkbGV3YXJlcy5tYXAoZnVuY3Rpb24g
KG1pZGRsZXdhcmUpIHtcbiAgICAgICAgcmV0dXJuIG1pZGRsZXdhcmUobWlkZGxld2FyZUFQSSk7
XG4gICAgICB9KTtcbiAgICAgIF9kaXNwYXRjaCA9IF9jb21wb3NlMlsnZGVmYXVsdCddLmFwcGx5
KHVuZGVmaW5lZCwgY2hhaW4pKHN0b3JlLmRpc3BhdGNoKTtcblxuICAgICAgcmV0dXJuIF9leHRl
bmRzKHt9LCBzdG9yZSwge1xuICAgICAgICBkaXNwYXRjaDogX2Rpc3BhdGNoXG4gICAgICB9KTtc
biAgICB9O1xuICB9O1xufVxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9P
VEVSXG4gKiogLi9+L3JlZHV4L2xpYi9hcHBseU1pZGRsZXdhcmUuanNcbiAqKiBtb2R1bGUgaWQg
PSAyMjVcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIid1c2Ugc3RyaWN0JztcblxuZXhw
b3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcbmV4cG9ydHNbJ2RlZmF1bHQnXSA9IGJpbmRBY3Rpb25D
cmVhdG9ycztcbmZ1bmN0aW9uIGJpbmRBY3Rpb25DcmVhdG9yKGFjdGlvbkNyZWF0b3IsIGRpc3Bh
dGNoKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIGRpc3BhdGNoKGFjdGlv
bkNyZWF0b3IuYXBwbHkodW5kZWZpbmVkLCBhcmd1bWVudHMpKTtcbiAgfTtcbn1cblxuLyoqXG4g
KiBUdXJucyBhbiBvYmplY3Qgd2hvc2UgdmFsdWVzIGFyZSBhY3Rpb24gY3JlYXRvcnMsIGludG8g
YW4gb2JqZWN0IHdpdGggdGhlXG4gKiBzYW1lIGtleXMsIGJ1dCB3aXRoIGV2ZXJ5IGZ1bmN0aW9u
IHdyYXBwZWQgaW50byBhIGBkaXNwYXRjaGAgY2FsbCBzbyB0aGV5XG4gKiBtYXkgYmUgaW52b2tl
ZCBkaXJlY3RseS4gVGhpcyBpcyBqdXN0IGEgY29udmVuaWVuY2UgbWV0aG9kLCBhcyB5b3UgY2Fu
IGNhbGxcbiAqIGBzdG9yZS5kaXNwYXRjaChNeUFjdGlvbkNyZWF0b3JzLmRvU29tZXRoaW5nKCkp
YCB5b3Vyc2VsZiBqdXN0IGZpbmUuXG4gKlxuICogRm9yIGNvbnZlbmllbmNlLCB5b3UgY2FuIGFs
c28gcGFzcyBhIHNpbmdsZSBmdW5jdGlvbiBhcyB0aGUgZmlyc3QgYXJndW1lbnQsXG4gKiBhbmQg
Z2V0IGEgZnVuY3Rpb24gaW4gcmV0dXJuLlxuICpcbiAqIEBwYXJhbSB7RnVuY3Rpb258T2JqZWN0
fSBhY3Rpb25DcmVhdG9ycyBBbiBvYmplY3Qgd2hvc2UgdmFsdWVzIGFyZSBhY3Rpb25cbiAqIGNy
ZWF0b3IgZnVuY3Rpb25zLiBPbmUgaGFuZHkgd2F5IHRvIG9idGFpbiBpdCBpcyB0byB1c2UgRVM2
IGBpbXBvcnQgKiBhc2BcbiAqIHN5bnRheC4gWW91IG1heSBhbHNvIHBhc3MgYSBzaW5nbGUgZnVu
Y3Rpb24uXG4gKlxuICogQHBhcmFtIHtGdW5jdGlvbn0gZGlzcGF0Y2ggVGhlIGBkaXNwYXRjaGAg
ZnVuY3Rpb24gYXZhaWxhYmxlIG9uIHlvdXIgUmVkdXhcbiAqIHN0b3JlLlxuICpcbiAqIEByZXR1
cm5zIHtGdW5jdGlvbnxPYmplY3R9IFRoZSBvYmplY3QgbWltaWNraW5nIHRoZSBvcmlnaW5hbCBv
YmplY3QsIGJ1dCB3aXRoXG4gKiBldmVyeSBhY3Rpb24gY3JlYXRvciB3cmFwcGVkIGludG8gdGhl
IGBkaXNwYXRjaGAgY2FsbC4gSWYgeW91IHBhc3NlZCBhXG4gKiBmdW5jdGlvbiBhcyBgYWN0aW9u
Q3JlYXRvcnNgLCB0aGUgcmV0dXJuIHZhbHVlIHdpbGwgYWxzbyBiZSBhIHNpbmdsZVxuICogZnVu
Y3Rpb24uXG4gKi9cbmZ1bmN0aW9uIGJpbmRBY3Rpb25DcmVhdG9ycyhhY3Rpb25DcmVhdG9ycywg
ZGlzcGF0Y2gpIHtcbiAgaWYgKHR5cGVvZiBhY3Rpb25DcmVhdG9ycyA9PT0gJ2Z1bmN0aW9uJykg
e1xuICAgIHJldHVybiBiaW5kQWN0aW9uQ3JlYXRvcihhY3Rpb25DcmVhdG9ycywgZGlzcGF0Y2gp
O1xuICB9XG5cbiAgaWYgKHR5cGVvZiBhY3Rpb25DcmVhdG9ycyAhPT0gJ29iamVjdCcgfHwgYWN0
aW9uQ3JlYXRvcnMgPT09IG51bGwpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2JpbmRBY3Rpb25D
cmVhdG9ycyBleHBlY3RlZCBhbiBvYmplY3Qgb3IgYSBmdW5jdGlvbiwgaW5zdGVhZCByZWNlaXZl
ZCAnICsgKGFjdGlvbkNyZWF0b3JzID09PSBudWxsID8gJ251bGwnIDogdHlwZW9mIGFjdGlvbkNy
ZWF0b3JzKSArICcuICcgKyAnRGlkIHlvdSB3cml0ZSBcImltcG9ydCBBY3Rpb25DcmVhdG9ycyBm
cm9tXCIgaW5zdGVhZCBvZiBcImltcG9ydCAqIGFzIEFjdGlvbkNyZWF0b3JzIGZyb21cIj8nKTtc
biAgfVxuXG4gIHZhciBrZXlzID0gT2JqZWN0LmtleXMoYWN0aW9uQ3JlYXRvcnMpO1xuICB2YXIg
Ym91bmRBY3Rpb25DcmVhdG9ycyA9IHt9O1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGtleXMubGVu
Z3RoOyBpKyspIHtcbiAgICB2YXIga2V5ID0ga2V5c1tpXTtcbiAgICB2YXIgYWN0aW9uQ3JlYXRv
ciA9IGFjdGlvbkNyZWF0b3JzW2tleV07XG4gICAgaWYgKHR5cGVvZiBhY3Rpb25DcmVhdG9yID09
PSAnZnVuY3Rpb24nKSB7XG4gICAgICBib3VuZEFjdGlvbkNyZWF0b3JzW2tleV0gPSBiaW5kQWN0
aW9uQ3JlYXRvcihhY3Rpb25DcmVhdG9yLCBkaXNwYXRjaCk7XG4gICAgfVxuICB9XG4gIHJldHVy
biBib3VuZEFjdGlvbkNyZWF0b3JzO1xufVxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdF
QlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlZHV4L2xpYi9iaW5kQWN0aW9uQ3JlYXRvcnMuanNcbiAq
KiBtb2R1bGUgaWQgPSAyMjZcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIid1c2Ugc3Ry
aWN0JztcblxuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcbmV4cG9ydHNbJ2RlZmF1bHQnXSA9
IGNvbWJpbmVSZWR1Y2VycztcblxudmFyIF9jcmVhdGVTdG9yZSA9IHJlcXVpcmUoJy4vY3JlYXRl
U3RvcmUnKTtcblxudmFyIF9pc1BsYWluT2JqZWN0ID0gcmVxdWlyZSgnbG9kYXNoL2lzUGxhaW5P
YmplY3QnKTtcblxudmFyIF9pc1BsYWluT2JqZWN0MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQo
X2lzUGxhaW5PYmplY3QpO1xuXG52YXIgX3dhcm5pbmcgPSByZXF1aXJlKCcuL3V0aWxzL3dhcm5p
bmcnKTtcblxudmFyIF93YXJuaW5nMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3dhcm5pbmcp
O1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYm
IG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyAnZGVmYXVsdCc6IG9iaiB9OyB9XG5cbmZ1bmN0aW9u
IGdldFVuZGVmaW5lZFN0YXRlRXJyb3JNZXNzYWdlKGtleSwgYWN0aW9uKSB7XG4gIHZhciBhY3Rp
b25UeXBlID0gYWN0aW9uICYmIGFjdGlvbi50eXBlO1xuICB2YXIgYWN0aW9uTmFtZSA9IGFjdGlv
blR5cGUgJiYgJ1wiJyArIGFjdGlvblR5cGUudG9TdHJpbmcoKSArICdcIicgfHwgJ2FuIGFjdGlv
bic7XG5cbiAgcmV0dXJuICdHaXZlbiBhY3Rpb24gJyArIGFjdGlvbk5hbWUgKyAnLCByZWR1Y2Vy
IFwiJyArIGtleSArICdcIiByZXR1cm5lZCB1bmRlZmluZWQuICcgKyAnVG8gaWdub3JlIGFuIGFj
dGlvbiwgeW91IG11c3QgZXhwbGljaXRseSByZXR1cm4gdGhlIHByZXZpb3VzIHN0YXRlLiAnICsg
J0lmIHlvdSB3YW50IHRoaXMgcmVkdWNlciB0byBob2xkIG5vIHZhbHVlLCB5b3UgY2FuIHJldHVy
biBudWxsIGluc3RlYWQgb2YgdW5kZWZpbmVkLic7XG59XG5cbmZ1bmN0aW9uIGdldFVuZXhwZWN0
ZWRTdGF0ZVNoYXBlV2FybmluZ01lc3NhZ2UoaW5wdXRTdGF0ZSwgcmVkdWNlcnMsIGFjdGlvbiwg
dW5leHBlY3RlZEtleUNhY2hlKSB7XG4gIHZhciByZWR1Y2VyS2V5cyA9IE9iamVjdC5rZXlzKHJl
ZHVjZXJzKTtcbiAgdmFyIGFyZ3VtZW50TmFtZSA9IGFjdGlvbiAmJiBhY3Rpb24udHlwZSA9PT0g
X2NyZWF0ZVN0b3JlLkFjdGlvblR5cGVzLklOSVQgPyAncHJlbG9hZGVkU3RhdGUgYXJndW1lbnQg
cGFzc2VkIHRvIGNyZWF0ZVN0b3JlJyA6ICdwcmV2aW91cyBzdGF0ZSByZWNlaXZlZCBieSB0aGUg
cmVkdWNlcic7XG5cbiAgaWYgKHJlZHVjZXJLZXlzLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVy
biAnU3RvcmUgZG9lcyBub3QgaGF2ZSBhIHZhbGlkIHJlZHVjZXIuIE1ha2Ugc3VyZSB0aGUgYXJn
dW1lbnQgcGFzc2VkICcgKyAndG8gY29tYmluZVJlZHVjZXJzIGlzIGFuIG9iamVjdCB3aG9zZSB2
YWx1ZXMgYXJlIHJlZHVjZXJzLic7XG4gIH1cblxuICBpZiAoISgwLCBfaXNQbGFpbk9iamVjdDJb
J2RlZmF1bHQnXSkoaW5wdXRTdGF0ZSkpIHtcbiAgICByZXR1cm4gJ1RoZSAnICsgYXJndW1lbnRO
YW1lICsgJyBoYXMgdW5leHBlY3RlZCB0eXBlIG9mIFwiJyArIHt9LnRvU3RyaW5nLmNhbGwoaW5w
dXRTdGF0ZSkubWF0Y2goL1xccyhbYS16fEEtWl0rKS8pWzFdICsgJ1wiLiBFeHBlY3RlZCBhcmd1
bWVudCB0byBiZSBhbiBvYmplY3Qgd2l0aCB0aGUgZm9sbG93aW5nICcgKyAoJ2tleXM6IFwiJyAr
IHJlZHVjZXJLZXlzLmpvaW4oJ1wiLCBcIicpICsgJ1wiJyk7XG4gIH1cblxuICB2YXIgdW5leHBl
Y3RlZEtleXMgPSBPYmplY3Qua2V5cyhpbnB1dFN0YXRlKS5maWx0ZXIoZnVuY3Rpb24gKGtleSkg
e1xuICAgIHJldHVybiAhcmVkdWNlcnMuaGFzT3duUHJvcGVydHkoa2V5KSAmJiAhdW5leHBlY3Rl
ZEtleUNhY2hlW2tleV07XG4gIH0pO1xuXG4gIHVuZXhwZWN0ZWRLZXlzLmZvckVhY2goZnVuY3Rp
b24gKGtleSkge1xuICAgIHVuZXhwZWN0ZWRLZXlDYWNoZVtrZXldID0gdHJ1ZTtcbiAgfSk7XG5c
biAgaWYgKHVuZXhwZWN0ZWRLZXlzLmxlbmd0aCA+IDApIHtcbiAgICByZXR1cm4gJ1VuZXhwZWN0
ZWQgJyArICh1bmV4cGVjdGVkS2V5cy5sZW5ndGggPiAxID8gJ2tleXMnIDogJ2tleScpICsgJyAn
ICsgKCdcIicgKyB1bmV4cGVjdGVkS2V5cy5qb2luKCdcIiwgXCInKSArICdcIiBmb3VuZCBpbiAn
ICsgYXJndW1lbnROYW1lICsgJy4gJykgKyAnRXhwZWN0ZWQgdG8gZmluZCBvbmUgb2YgdGhlIGtu
b3duIHJlZHVjZXIga2V5cyBpbnN0ZWFkOiAnICsgKCdcIicgKyByZWR1Y2VyS2V5cy5qb2luKCdc
IiwgXCInKSArICdcIi4gVW5leHBlY3RlZCBrZXlzIHdpbGwgYmUgaWdub3JlZC4nKTtcbiAgfVxu
fVxuXG5mdW5jdGlvbiBhc3NlcnRSZWR1Y2VyU2hhcGUocmVkdWNlcnMpIHtcbiAgT2JqZWN0Lmtl
eXMocmVkdWNlcnMpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgIHZhciByZWR1Y2VyID0g
cmVkdWNlcnNba2V5XTtcbiAgICB2YXIgaW5pdGlhbFN0YXRlID0gcmVkdWNlcih1bmRlZmluZWQs
IHsgdHlwZTogX2NyZWF0ZVN0b3JlLkFjdGlvblR5cGVzLklOSVQgfSk7XG5cbiAgICBpZiAodHlw
ZW9mIGluaXRpYWxTdGF0ZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHRocm93IG5ldyBFcnJv
cignUmVkdWNlciBcIicgKyBrZXkgKyAnXCIgcmV0dXJuZWQgdW5kZWZpbmVkIGR1cmluZyBpbml0
aWFsaXphdGlvbi4gJyArICdJZiB0aGUgc3RhdGUgcGFzc2VkIHRvIHRoZSByZWR1Y2VyIGlzIHVu
ZGVmaW5lZCwgeW91IG11c3QgJyArICdleHBsaWNpdGx5IHJldHVybiB0aGUgaW5pdGlhbCBzdGF0
ZS4gVGhlIGluaXRpYWwgc3RhdGUgbWF5ICcgKyAnbm90IGJlIHVuZGVmaW5lZC4gSWYgeW91IGRv
blxcJ3Qgd2FudCB0byBzZXQgYSB2YWx1ZSBmb3IgdGhpcyByZWR1Y2VyLCAnICsgJ3lvdSBjYW4g
dXNlIG51bGwgaW5zdGVhZCBvZiB1bmRlZmluZWQuJyk7XG4gICAgfVxuXG4gICAgdmFyIHR5cGUg
PSAnQEByZWR1eC9QUk9CRV9VTktOT1dOX0FDVElPTl8nICsgTWF0aC5yYW5kb20oKS50b1N0cmlu
ZygzNikuc3Vic3RyaW5nKDcpLnNwbGl0KCcnKS5qb2luKCcuJyk7XG4gICAgaWYgKHR5cGVvZiBy
ZWR1Y2VyKHVuZGVmaW5lZCwgeyB0eXBlOiB0eXBlIH0pID09PSAndW5kZWZpbmVkJykge1xuICAg
ICAgdGhyb3cgbmV3IEVycm9yKCdSZWR1Y2VyIFwiJyArIGtleSArICdcIiByZXR1cm5lZCB1bmRl
ZmluZWQgd2hlbiBwcm9iZWQgd2l0aCBhIHJhbmRvbSB0eXBlLiAnICsgKCdEb25cXCd0IHRyeSB0
byBoYW5kbGUgJyArIF9jcmVhdGVTdG9yZS5BY3Rpb25UeXBlcy5JTklUICsgJyBvciBvdGhlciBh
Y3Rpb25zIGluIFwicmVkdXgvKlwiICcpICsgJ25hbWVzcGFjZS4gVGhleSBhcmUgY29uc2lkZXJl
ZCBwcml2YXRlLiBJbnN0ZWFkLCB5b3UgbXVzdCByZXR1cm4gdGhlICcgKyAnY3VycmVudCBzdGF0
ZSBmb3IgYW55IHVua25vd24gYWN0aW9ucywgdW5sZXNzIGl0IGlzIHVuZGVmaW5lZCwgJyArICdp
biB3aGljaCBjYXNlIHlvdSBtdXN0IHJldHVybiB0aGUgaW5pdGlhbCBzdGF0ZSwgcmVnYXJkbGVz
cyBvZiB0aGUgJyArICdhY3Rpb24gdHlwZS4gVGhlIGluaXRpYWwgc3RhdGUgbWF5IG5vdCBiZSB1
bmRlZmluZWQsIGJ1dCBjYW4gYmUgbnVsbC4nKTtcbiAgICB9XG4gIH0pO1xufVxuXG4vKipcbiAq
IFR1cm5zIGFuIG9iamVjdCB3aG9zZSB2YWx1ZXMgYXJlIGRpZmZlcmVudCByZWR1Y2VyIGZ1bmN0
aW9ucywgaW50byBhIHNpbmdsZVxuICogcmVkdWNlciBmdW5jdGlvbi4gSXQgd2lsbCBjYWxsIGV2
ZXJ5IGNoaWxkIHJlZHVjZXIsIGFuZCBnYXRoZXIgdGhlaXIgcmVzdWx0c1xuICogaW50byBhIHNp
bmdsZSBzdGF0ZSBvYmplY3QsIHdob3NlIGtleXMgY29ycmVzcG9uZCB0byB0aGUga2V5cyBvZiB0
aGUgcGFzc2VkXG4gKiByZWR1Y2VyIGZ1bmN0aW9ucy5cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0g
cmVkdWNlcnMgQW4gb2JqZWN0IHdob3NlIHZhbHVlcyBjb3JyZXNwb25kIHRvIGRpZmZlcmVudFxu
ICogcmVkdWNlciBmdW5jdGlvbnMgdGhhdCBuZWVkIHRvIGJlIGNvbWJpbmVkIGludG8gb25lLiBP
bmUgaGFuZHkgd2F5IHRvIG9idGFpblxuICogaXQgaXMgdG8gdXNlIEVTNiBgaW1wb3J0ICogYXMg
cmVkdWNlcnNgIHN5bnRheC4gVGhlIHJlZHVjZXJzIG1heSBuZXZlciByZXR1cm5cbiAqIHVuZGVm
aW5lZCBmb3IgYW55IGFjdGlvbi4gSW5zdGVhZCwgdGhleSBzaG91bGQgcmV0dXJuIHRoZWlyIGlu
aXRpYWwgc3RhdGVcbiAqIGlmIHRoZSBzdGF0ZSBwYXNzZWQgdG8gdGhlbSB3YXMgdW5kZWZpbmVk
LCBhbmQgdGhlIGN1cnJlbnQgc3RhdGUgZm9yIGFueVxuICogdW5yZWNvZ25pemVkIGFjdGlvbi5c
biAqXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IEEgcmVkdWNlciBmdW5jdGlvbiB0aGF0IGludm9r
ZXMgZXZlcnkgcmVkdWNlciBpbnNpZGUgdGhlXG4gKiBwYXNzZWQgb2JqZWN0LCBhbmQgYnVpbGRz
IGEgc3RhdGUgb2JqZWN0IHdpdGggdGhlIHNhbWUgc2hhcGUuXG4gKi9cbmZ1bmN0aW9uIGNvbWJp
bmVSZWR1Y2VycyhyZWR1Y2Vycykge1xuICB2YXIgcmVkdWNlcktleXMgPSBPYmplY3Qua2V5cyhy
ZWR1Y2Vycyk7XG4gIHZhciBmaW5hbFJlZHVjZXJzID0ge307XG4gIGZvciAodmFyIGkgPSAwOyBp
IDwgcmVkdWNlcktleXMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIga2V5ID0gcmVkdWNlcktleXNb
aV07XG5cbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xu
ICAgICAgaWYgKHR5cGVvZiByZWR1Y2Vyc1trZXldID09PSAndW5kZWZpbmVkJykge1xuICAgICAg
ICAoMCwgX3dhcm5pbmcyWydkZWZhdWx0J10pKCdObyByZWR1Y2VyIHByb3ZpZGVkIGZvciBrZXkg
XCInICsga2V5ICsgJ1wiJyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiByZWR1
Y2Vyc1trZXldID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBmaW5hbFJlZHVjZXJzW2tleV0gPSBy
ZWR1Y2Vyc1trZXldO1xuICAgIH1cbiAgfVxuICB2YXIgZmluYWxSZWR1Y2VyS2V5cyA9IE9iamVj
dC5rZXlzKGZpbmFsUmVkdWNlcnMpO1xuXG4gIHZhciB1bmV4cGVjdGVkS2V5Q2FjaGUgPSB2b2lk
IDA7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAg
dW5leHBlY3RlZEtleUNhY2hlID0ge307XG4gIH1cblxuICB2YXIgc2hhcGVBc3NlcnRpb25FcnJv
ciA9IHZvaWQgMDtcbiAgdHJ5IHtcbiAgICBhc3NlcnRSZWR1Y2VyU2hhcGUoZmluYWxSZWR1Y2Vy
cyk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBzaGFwZUFzc2VydGlvbkVycm9yID0gZTtcbiAgfVxu
XG4gIHJldHVybiBmdW5jdGlvbiBjb21iaW5hdGlvbigpIHtcbiAgICB2YXIgc3RhdGUgPSBhcmd1
bWVudHMubGVuZ3RoID4gMCAmJiBhcmd1bWVudHNbMF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50
c1swXSA6IHt9O1xuICAgIHZhciBhY3Rpb24gPSBhcmd1bWVudHNbMV07XG5cbiAgICBpZiAoc2hh
cGVBc3NlcnRpb25FcnJvcikge1xuICAgICAgdGhyb3cgc2hhcGVBc3NlcnRpb25FcnJvcjtcbiAg
ICB9XG5cbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xu
ICAgICAgdmFyIHdhcm5pbmdNZXNzYWdlID0gZ2V0VW5leHBlY3RlZFN0YXRlU2hhcGVXYXJuaW5n
TWVzc2FnZShzdGF0ZSwgZmluYWxSZWR1Y2VycywgYWN0aW9uLCB1bmV4cGVjdGVkS2V5Q2FjaGUp
O1xuICAgICAgaWYgKHdhcm5pbmdNZXNzYWdlKSB7XG4gICAgICAgICgwLCBfd2FybmluZzJbJ2Rl
ZmF1bHQnXSkod2FybmluZ01lc3NhZ2UpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciBoYXND
aGFuZ2VkID0gZmFsc2U7XG4gICAgdmFyIG5leHRTdGF0ZSA9IHt9O1xuICAgIGZvciAodmFyIF9p
ID0gMDsgX2kgPCBmaW5hbFJlZHVjZXJLZXlzLmxlbmd0aDsgX2krKykge1xuICAgICAgdmFyIF9r
ZXkgPSBmaW5hbFJlZHVjZXJLZXlzW19pXTtcbiAgICAgIHZhciByZWR1Y2VyID0gZmluYWxSZWR1
Y2Vyc1tfa2V5XTtcbiAgICAgIHZhciBwcmV2aW91c1N0YXRlRm9yS2V5ID0gc3RhdGVbX2tleV07
XG4gICAgICB2YXIgbmV4dFN0YXRlRm9yS2V5ID0gcmVkdWNlcihwcmV2aW91c1N0YXRlRm9yS2V5
LCBhY3Rpb24pO1xuICAgICAgaWYgKHR5cGVvZiBuZXh0U3RhdGVGb3JLZXkgPT09ICd1bmRlZmlu
ZWQnKSB7XG4gICAgICAgIHZhciBlcnJvck1lc3NhZ2UgPSBnZXRVbmRlZmluZWRTdGF0ZUVycm9y
TWVzc2FnZShfa2V5LCBhY3Rpb24pO1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3JNZXNz
YWdlKTtcbiAgICAgIH1cbiAgICAgIG5leHRTdGF0ZVtfa2V5XSA9IG5leHRTdGF0ZUZvcktleTtc
biAgICAgIGhhc0NoYW5nZWQgPSBoYXNDaGFuZ2VkIHx8IG5leHRTdGF0ZUZvcktleSAhPT0gcHJl
dmlvdXNTdGF0ZUZvcktleTtcbiAgICB9XG4gICAgcmV0dXJuIGhhc0NoYW5nZWQgPyBuZXh0U3Rh
dGUgOiBzdGF0ZTtcbiAgfTtcbn1cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNL
IEZPT1RFUlxuICoqIC4vfi9yZWR1eC9saWIvY29tYmluZVJlZHVjZXJzLmpzXG4gKiogbW9kdWxl
IGlkID0gMjI3XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCJtb2R1bGUuZXhwb3J0cyA9
IHJlcXVpcmUoJy4vbGliL2luZGV4Jyk7XG5cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBX
RUJQQUNLIEZPT1RFUlxuICoqIC4vfi9zeW1ib2wtb2JzZXJ2YWJsZS9pbmRleC5qc1xuICoqIG1v
ZHVsZSBpZCA9IDIyOFxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiJ3VzZSBzdHJpY3Qn
O1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAg
dmFsdWU6IHRydWVcbn0pO1xuXG52YXIgX3BvbnlmaWxsID0gcmVxdWlyZSgnLi9wb255ZmlsbCcp
O1xuXG52YXIgX3BvbnlmaWxsMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3BvbnlmaWxsKTtc
blxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBv
YmouX19lc01vZHVsZSA/IG9iaiA6IHsgJ2RlZmF1bHQnOiBvYmogfTsgfVxuXG52YXIgcm9vdDsg
LyogZ2xvYmFsIHdpbmRvdyAqL1xuXG5cbmlmICh0eXBlb2Ygc2VsZiAhPT0gJ3VuZGVmaW5lZCcp
IHtcbiAgcm9vdCA9IHNlbGY7XG59IGVsc2UgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmlu
ZWQnKSB7XG4gIHJvb3QgPSB3aW5kb3c7XG59IGVsc2UgaWYgKHR5cGVvZiBnbG9iYWwgIT09ICd1
bmRlZmluZWQnKSB7XG4gIHJvb3QgPSBnbG9iYWw7XG59IGVsc2UgaWYgKHR5cGVvZiBtb2R1bGUg
IT09ICd1bmRlZmluZWQnKSB7XG4gIHJvb3QgPSBtb2R1bGU7XG59IGVsc2Uge1xuICByb290ID0g
RnVuY3Rpb24oJ3JldHVybiB0aGlzJykoKTtcbn1cblxudmFyIHJlc3VsdCA9ICgwLCBfcG9ueWZp
bGwyWydkZWZhdWx0J10pKHJvb3QpO1xuZXhwb3J0c1snZGVmYXVsdCddID0gcmVzdWx0O1xuXG5c
bi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3N5bWJvbC1v
YnNlcnZhYmxlL2xpYi9pbmRleC5qc1xuICoqIG1vZHVsZSBpZCA9IDIyOVxuICoqIG1vZHVsZSBj
aHVua3MgPSAwXG4gKiovIiwiJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHko
ZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcblx0dmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0c1sn
ZGVmYXVsdCddID0gc3ltYm9sT2JzZXJ2YWJsZVBvbnlmaWxsO1xuZnVuY3Rpb24gc3ltYm9sT2Jz
ZXJ2YWJsZVBvbnlmaWxsKHJvb3QpIHtcblx0dmFyIHJlc3VsdDtcblx0dmFyIF9TeW1ib2wgPSBy
b290LlN5bWJvbDtcblxuXHRpZiAodHlwZW9mIF9TeW1ib2wgPT09ICdmdW5jdGlvbicpIHtcblx0
XHRpZiAoX1N5bWJvbC5vYnNlcnZhYmxlKSB7XG5cdFx0XHRyZXN1bHQgPSBfU3ltYm9sLm9ic2Vy
dmFibGU7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJlc3VsdCA9IF9TeW1ib2woJ29ic2VydmFibGUn
KTtcblx0XHRcdF9TeW1ib2wub2JzZXJ2YWJsZSA9IHJlc3VsdDtcblx0XHR9XG5cdH0gZWxzZSB7
XG5cdFx0cmVzdWx0ID0gJ0BAb2JzZXJ2YWJsZSc7XG5cdH1cblxuXHRyZXR1cm4gcmVzdWx0O1xu
fTtcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9z
eW1ib2wtb2JzZXJ2YWJsZS9saWIvcG9ueWZpbGwuanNcbiAqKiBtb2R1bGUgaWQgPSAyMzBcbiAq
KiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2Vu
dCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBz
b3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQg
aW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291
cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJl
IGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAq
IFxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIF9wcm9kSW52YXJpYW50ID0gcmVxdWlyZSgn
Li9yZWFjdFByb2RJbnZhcmlhbnQnKTtcblxudmFyIGludmFyaWFudCA9IHJlcXVpcmUoJ2ZianMv
bGliL2ludmFyaWFudCcpO1xuXG4vKipcbiAqIFN0YXRpYyBwb29sZXJzLiBTZXZlcmFsIGN1c3Rv
bSB2ZXJzaW9ucyBmb3IgZWFjaCBwb3RlbnRpYWwgbnVtYmVyIG9mXG4gKiBhcmd1bWVudHMuIEEg
Y29tcGxldGVseSBnZW5lcmljIHBvb2xlciBpcyBlYXN5IHRvIGltcGxlbWVudCwgYnV0IHdvdWxk
XG4gKiByZXF1aXJlIGFjY2Vzc2luZyB0aGUgYGFyZ3VtZW50c2Agb2JqZWN0LiBJbiBlYWNoIG9m
IHRoZXNlLCBgdGhpc2AgcmVmZXJzIHRvXG4gKiB0aGUgQ2xhc3MgaXRzZWxmLCBub3QgYW4gaW5z
dGFuY2UuIElmIGFueSBvdGhlcnMgYXJlIG5lZWRlZCwgc2ltcGx5IGFkZCB0aGVtXG4gKiBoZXJl
LCBvciBpbiB0aGVpciBvd24gZmlsZXMuXG4gKi9cbnZhciBvbmVBcmd1bWVudFBvb2xlciA9IGZ1
bmN0aW9uIChjb3B5RmllbGRzRnJvbSkge1xuICB2YXIgS2xhc3MgPSB0aGlzO1xuICBpZiAoS2xh
c3MuaW5zdGFuY2VQb29sLmxlbmd0aCkge1xuICAgIHZhciBpbnN0YW5jZSA9IEtsYXNzLmluc3Rh
bmNlUG9vbC5wb3AoKTtcbiAgICBLbGFzcy5jYWxsKGluc3RhbmNlLCBjb3B5RmllbGRzRnJvbSk7
XG4gICAgcmV0dXJuIGluc3RhbmNlO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBuZXcgS2xhc3Mo
Y29weUZpZWxkc0Zyb20pO1xuICB9XG59O1xuXG52YXIgdHdvQXJndW1lbnRQb29sZXIgPSBmdW5j
dGlvbiAoYTEsIGEyKSB7XG4gIHZhciBLbGFzcyA9IHRoaXM7XG4gIGlmIChLbGFzcy5pbnN0YW5j
ZVBvb2wubGVuZ3RoKSB7XG4gICAgdmFyIGluc3RhbmNlID0gS2xhc3MuaW5zdGFuY2VQb29sLnBv
cCgpO1xuICAgIEtsYXNzLmNhbGwoaW5zdGFuY2UsIGExLCBhMik7XG4gICAgcmV0dXJuIGluc3Rh
bmNlO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBuZXcgS2xhc3MoYTEsIGEyKTtcbiAgfVxufTtc
blxudmFyIHRocmVlQXJndW1lbnRQb29sZXIgPSBmdW5jdGlvbiAoYTEsIGEyLCBhMykge1xuICB2
YXIgS2xhc3MgPSB0aGlzO1xuICBpZiAoS2xhc3MuaW5zdGFuY2VQb29sLmxlbmd0aCkge1xuICAg
IHZhciBpbnN0YW5jZSA9IEtsYXNzLmluc3RhbmNlUG9vbC5wb3AoKTtcbiAgICBLbGFzcy5jYWxs
KGluc3RhbmNlLCBhMSwgYTIsIGEzKTtcbiAgICByZXR1cm4gaW5zdGFuY2U7XG4gIH0gZWxzZSB7
XG4gICAgcmV0dXJuIG5ldyBLbGFzcyhhMSwgYTIsIGEzKTtcbiAgfVxufTtcblxudmFyIGZvdXJB
cmd1bWVudFBvb2xlciA9IGZ1bmN0aW9uIChhMSwgYTIsIGEzLCBhNCkge1xuICB2YXIgS2xhc3Mg
PSB0aGlzO1xuICBpZiAoS2xhc3MuaW5zdGFuY2VQb29sLmxlbmd0aCkge1xuICAgIHZhciBpbnN0
YW5jZSA9IEtsYXNzLmluc3RhbmNlUG9vbC5wb3AoKTtcbiAgICBLbGFzcy5jYWxsKGluc3RhbmNl
LCBhMSwgYTIsIGEzLCBhNCk7XG4gICAgcmV0dXJuIGluc3RhbmNlO1xuICB9IGVsc2Uge1xuICAg
IHJldHVybiBuZXcgS2xhc3MoYTEsIGEyLCBhMywgYTQpO1xuICB9XG59O1xuXG52YXIgc3RhbmRh
cmRSZWxlYXNlciA9IGZ1bmN0aW9uIChpbnN0YW5jZSkge1xuICB2YXIgS2xhc3MgPSB0aGlzO1xu
ICAhKGluc3RhbmNlIGluc3RhbmNlb2YgS2xhc3MpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09
ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ1RyeWluZyB0byByZWxlYXNlIGFuIGlu
c3RhbmNlIGludG8gYSBwb29sIG9mIGEgZGlmZmVyZW50IHR5cGUuJykgOiBfcHJvZEludmFyaWFu
dCgnMjUnKSA6IHZvaWQgMDtcbiAgaW5zdGFuY2UuZGVzdHJ1Y3RvcigpO1xuICBpZiAoS2xhc3Mu
aW5zdGFuY2VQb29sLmxlbmd0aCA8IEtsYXNzLnBvb2xTaXplKSB7XG4gICAgS2xhc3MuaW5zdGFu
Y2VQb29sLnB1c2goaW5zdGFuY2UpO1xuICB9XG59O1xuXG52YXIgREVGQVVMVF9QT09MX1NJWkUg
PSAxMDtcbnZhciBERUZBVUxUX1BPT0xFUiA9IG9uZUFyZ3VtZW50UG9vbGVyO1xuXG4vKipcbiAq
IEF1Z21lbnRzIGBDb3B5Q29uc3RydWN0b3JgIHRvIGJlIGEgcG9vbGFibGUgY2xhc3MsIGF1Z21l
bnRpbmcgb25seSB0aGUgY2xhc3NcbiAqIGl0c2VsZiAoc3RhdGljYWxseSkgbm90IGFkZGluZyBh
bnkgcHJvdG90eXBpY2FsIGZpZWxkcy4gQW55IENvcHlDb25zdHJ1Y3RvclxuICogeW91IGdpdmUg
dGhpcyBtYXkgaGF2ZSBhIGBwb29sU2l6ZWAgcHJvcGVydHksIGFuZCB3aWxsIGxvb2sgZm9yIGFc
biAqIHByb3RvdHlwaWNhbCBgZGVzdHJ1Y3RvcmAgb24gaW5zdGFuY2VzLlxuICpcbiAqIEBwYXJh
bSB7RnVuY3Rpb259IENvcHlDb25zdHJ1Y3RvciBDb25zdHJ1Y3RvciB0aGF0IGNhbiBiZSB1c2Vk
IHRvIHJlc2V0LlxuICogQHBhcmFtIHtGdW5jdGlvbn0gcG9vbGVyIEN1c3RvbWl6YWJsZSBwb29s
ZXIuXG4gKi9cbnZhciBhZGRQb29saW5nVG8gPSBmdW5jdGlvbiAoQ29weUNvbnN0cnVjdG9yLCBw
b29sZXIpIHtcbiAgLy8gQ2FzdGluZyBhcyBhbnkgc28gdGhhdCBmbG93IGlnbm9yZXMgdGhlIGFj
dHVhbCBpbXBsZW1lbnRhdGlvbiBhbmQgdHJ1c3RzXG4gIC8vIGl0IHRvIG1hdGNoIHRoZSB0eXBl
IHdlIGRlY2xhcmVkXG4gIHZhciBOZXdLbGFzcyA9IENvcHlDb25zdHJ1Y3RvcjtcbiAgTmV3S2xh
c3MuaW5zdGFuY2VQb29sID0gW107XG4gIE5ld0tsYXNzLmdldFBvb2xlZCA9IHBvb2xlciB8fCBE
RUZBVUxUX1BPT0xFUjtcbiAgaWYgKCFOZXdLbGFzcy5wb29sU2l6ZSkge1xuICAgIE5ld0tsYXNz
LnBvb2xTaXplID0gREVGQVVMVF9QT09MX1NJWkU7XG4gIH1cbiAgTmV3S2xhc3MucmVsZWFzZSA9
IHN0YW5kYXJkUmVsZWFzZXI7XG4gIHJldHVybiBOZXdLbGFzcztcbn07XG5cbnZhciBQb29sZWRD
bGFzcyA9IHtcbiAgYWRkUG9vbGluZ1RvOiBhZGRQb29saW5nVG8sXG4gIG9uZUFyZ3VtZW50UG9v
bGVyOiBvbmVBcmd1bWVudFBvb2xlcixcbiAgdHdvQXJndW1lbnRQb29sZXI6IHR3b0FyZ3VtZW50
UG9vbGVyLFxuICB0aHJlZUFyZ3VtZW50UG9vbGVyOiB0aHJlZUFyZ3VtZW50UG9vbGVyLFxuICBm
b3VyQXJndW1lbnRQb29sZXI6IGZvdXJBcmd1bWVudFBvb2xlclxufTtcblxubW9kdWxlLmV4cG9y
dHMgPSBQb29sZWRDbGFzcztcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZP
T1RFUlxuICoqIC4vfi9yZWFjdC9saWIvUG9vbGVkQ2xhc3MuanNcbiAqKiBtb2R1bGUgaWQgPSAy
MTRcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyJdLCJzb3VyY2VSb290IjoiIn0KXCBObyBu
ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVy
L3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC1yZWR1eC9zcmMv
cmVkdWNlcnMvdG9kb3MuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3QtcmVkdXgv
c3JjL3JlZHVjZXJzL3RvZG9zLmpzCShyZXZpc2lvbiAyMjEwNjgpCisrKyBQZXJmb3JtYW5jZVRl
c3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9y
ZWFjdC1yZWR1eC9zcmMvcmVkdWNlcnMvdG9kb3MuanMJKHdvcmtpbmcgY29weSkKQEAgLTYsMTIg
KzYsMTIgQEAgZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdG9kb3Moc3RhdGUgPSBpbgogICBzd2l0
Y2ggKGFjdGlvbi50eXBlKSB7CiAgICAgY2FzZSBBRERfVE9ETzoKICAgICAgIHJldHVybiBbCisg
ICAgICAgIC4uLnN0YXRlLAogICAgICAgICB7CiAgICAgICAgICAgaWQ6IHN0YXRlLnJlZHVjZSgo
bWF4SWQsIHRvZG8pID0+IE1hdGgubWF4KHRvZG8uaWQsIG1heElkKSwgLTEpICsgMSwKICAgICAg
ICAgICBjb21wbGV0ZWQ6IGZhbHNlLAogICAgICAgICAgIHRleHQ6IGFjdGlvbi50ZXh0Ci0gICAg
ICAgIH0sCi0gICAgICAgIC4uLnN0YXRlCisgICAgICAgIH0KICAgICAgIF0KIAogICAgIGNhc2Ug
REVMRVRFX1RPRE86Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>